<?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>139092</bug_id>
          
          <creation_ts>2014-11-28 07:19:21 -0800</creation_ts>
          <short_desc>[SVG Masking] Add support for referencing &lt;mask&gt; elements from -webkit-mask-image</short_desc>
          <delta_ts>2023-08-30 00:04:46 -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>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>REOPENED</bug_status>
          <resolution></resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>AdobeTracked, InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>129682</blocked>
    
    <blocked>139440</blocked>
    
    <blocked>139442</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Radu Stavila">stavila</reporter>
          <assigned_to name="Radu Stavila">stavila</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>krit</cc>
    
    <cc>mihnea</cc>
    
    <cc>ntim</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>syoichi</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1051253</commentid>
    <comment_count>0</comment_count>
    <who name="Radu Stavila">stavila</who>
    <bug_when>2014-11-28 07:19:21 -0800</bug_when>
    <thetext>Because the patch in https://bugs.webkit.org/show_bug.cgi?id=129682 is quite large, I will break it into two smaller patches. This is the first one and it contains all the new classes created for this patch but does not affect anything in the current functionality. The following patch will link all the pieces together.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1051259</commentid>
    <comment_count>1</comment_count>
      <attachid>242271</attachid>
    <who name="Radu Stavila">stavila</who>
    <bug_when>2014-11-28 08:25:51 -0800</bug_when>
    <thetext>Created attachment 242271
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1051260</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-11-28 08:29:01 -0800</bug_when>
    <thetext>Attachment 242271 did not pass style-queue:


ERROR: Source/WebCore/rendering/style/FillLayer.cpp:78:  Wrong number of spaces before statement. (expected: 8)  [whitespace/indent] [4]
Total errors found: 1 in 38 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1051268</commentid>
    <comment_count>3</comment_count>
      <attachid>242271</attachid>
    <who name="Radu Stavila">stavila</who>
    <bug_when>2014-11-28 09:17:17 -0800</bug_when>
    <thetext>Comment on attachment 242271
Patch

@Dirk, Simon: Please review.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1051843</commentid>
    <comment_count>4</comment_count>
      <attachid>242271</attachid>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2014-12-02 08:52:36 -0800</bug_when>
    <thetext>Comment on attachment 242271
Patch

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

Really great patch! You did not add the copyright in all files that you touched. Inline more comments and questions. I can review the patch as a whole but would like to have a second pair of eyes to look at the image loader and caching part. Simon, could you take a look please?

&gt; Source/WebCore/ChangeLog:31
&gt; +        It only adds support for referencing &lt;mask&gt; elements for the -webkit-mask-image 

There is nothing about that that couldn&apos;t be tested?

&gt; Source/WebCore/ChangeLog:86
&gt; +        (WebCore::MaskImageOperation::notifyFinished): This is the method that gets called when the document has finished downloading and checks if it can find a valid &lt;mask&gt; element.

Add a line break here.

&gt; Source/WebCore/ChangeLog:89
&gt; +        * rendering/RenderBoxModelObject.cpp: The BackgroundImageGeometry class was moved out of RenderBoxModelObject in order to be used as a parameter for other methods. This was necessary to avoid having methods with very many parameters.

Ditto. This could have been the first patch, just moving out BackgroundImageGeometry.

&gt; Source/WebCore/ChangeLog:135
&gt; +        * rendering/RenderLayerMaskImageInfo.cpp: Added.

For this file, you need to add per line comments what MaskImageInfor is doing in each method.

&gt; Source/WebCore/css/StyleResolver.cpp:3629
&gt; +    outOperations.clear();

If you create the mask image operation, shouldn&apos;t this be empty? Or are you reusing it? If it should be empty, assert instead.

&gt; Source/WebCore/css/StyleResolver.cpp:3638
&gt; +        CSSPrimitiveValue&amp; primitiveValue = downcast&lt;CSSPrimitiveValue&gt;(*inValue);
&gt; +        if (primitiveValue.getValueID() == CSSValueNone)
&gt; +            return true;

why not return false if is not &apos;none&apos;?

I wonder if it should be: return (downcast&lt;CSSPrimitiveValue&gt;(*inValue).getValueID() == CSSValueNone);

&gt; Source/WebCore/css/StyleResolver.cpp:3642
&gt; +    if (!is&lt;CSSValueList&gt;(*inValue))
&gt; +        return false;

Ok, you would fall out here, still.

&gt; Source/WebCore/css/StyleResolver.cpp:3655
&gt; +                newMaskImage = MaskImageOperation::create(&amp;maskImageValue, &quot;&quot;, &quot;&quot;, false, m_state.document().cachedResourceLoader());

Maybe you want to add a send create() function to avoid these passes. I wonder why you still pass a loader even though there is nothing to load.

&gt; Source/WebCore/css/StyleResolver.cpp:3672
&gt; +        if (newMaskImage.get())
&gt; +            outOperations.append(newMaskImage);

If one of the above operations fails and we do not end up with a  newMaskImage, don&apos;t we have a list of less mask operations than the user specified? To know the order of the applied resources is important for mask-composite.

&gt; Source/WebCore/loader/cache/CachedSVGDocument.h:40
&gt; +    virtual bool canReuse(const ResourceRequest&amp;) const override { return m_canReuseResource; }

Why not call it canReuseResource() as well? Sounds better.

&gt; Source/WebCore/loader/cache/CachedSVGDocument.h:41
&gt; +    void setCanReuse(bool canReuseResource) { m_canReuseResource = canReuseResource; };

Ditto with set*

&gt; Source/WebCore/platform/graphics/MaskImageOperation.cpp:48
&gt; +PassRefPtr&lt;MaskImageOperation&gt; MaskImageOperation::create(PassRefPtr&lt;StyleImage&gt; generatedImage)

As mentioned above, maybe you can add a create() function for the none case. Also, it seems that they are short enough to put them into the header.

&gt; Source/WebCore/platform/graphics/MaskImageOperation.cpp:81
&gt; +        return m_cssMaskImageValue-&gt;isCSSValueNone();

Shouldn&apos;t there always be a valid m_cssMaskImageValue? Should this be an assertion instead?

&gt; Source/WebCore/platform/graphics/MaskImageOperation.cpp:104
&gt; +    if (image())
&gt; +        return (image()-&gt;cachedImage() &amp;&amp; image()-&gt;cachedImage()-&gt;image());

What about generated images? For those, cachedImage() would return 0 and therefore false. Pending image resources would return 0 as well, but that is probably correct here.

&gt; Source/WebCore/platform/graphics/MaskImageOperation.cpp:114
&gt; +void MaskImageOperation::setRenderLayerImageClient(CachedImageClient* client)

I think in these methods it is correct not to look at generated images.

&gt; Source/WebCore/platform/graphics/MaskImageOperation.cpp:226
&gt; +    // Identify the element referenced by the fragmentId.
&gt; +    CachedSVGDocumentReference* svgDocumentReference = cachedSVGDocumentReference();
&gt; +    Element* elementForMasking = nullptr;
&gt; +    RenderObject* svgResourceForMasking = nullptr;
&gt; +    if (svgDocumentReference &amp;&amp; svgDocumentReference-&gt;document()) {
&gt; +        SVGDocument* svgDocument = svgDocumentReference-&gt;document()-&gt;document();
&gt; +        if (svgDocument &amp;&amp; svgDocument-&gt;rootElement())
&gt; +            elementForMasking = svgDocument-&gt;rootElement()-&gt;getElementById(fragment());
&gt; +    } else
&gt; +        elementForMasking = renderer.document().getElementById(fragment());

This function just gets the element, could you put the code into an inline function with a descriptive name?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1052112</commentid>
    <comment_count>5</comment_count>
      <attachid>242271</attachid>
    <who name="Radu Stavila">stavila</who>
    <bug_when>2014-12-03 03:31:04 -0800</bug_when>
    <thetext>Comment on attachment 242271
Patch

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

&gt;&gt; Source/WebCore/ChangeLog:31
&gt;&gt; +        It only adds support for referencing &lt;mask&gt; elements for the -webkit-mask-image 
&gt; 
&gt; There is nothing about that that couldn&apos;t be tested?

Unfortunately no, all the code added here is &quot;dead&quot;, it&apos;s not called anywhere so there&apos;s nothing to test. I looked at multiple ways of splitting this patch and having some intermediary tests but there are so many existing tests for -webkit-mask-image that it&apos;s impossible to change something without breaking existing tests, unless I change everything all the way.

&gt;&gt; Source/WebCore/css/StyleResolver.cpp:3638
&gt;&gt; +            return true;
&gt; 
&gt; why not return false if is not &apos;none&apos;?
&gt; 
&gt; I wonder if it should be: return (downcast&lt;CSSPrimitiveValue&gt;(*inValue).getValueID() == CSSValueNone);

The code that will call this method (part2 of the patch) will only apply it to the style if this returns true. As such, I want it to return true for none so it would apply it and clear any old masks.

&gt;&gt; Source/WebCore/loader/cache/CachedSVGDocument.h:40
&gt;&gt; +    virtual bool canReuse(const ResourceRequest&amp;) const override { return m_canReuseResource; }
&gt; 
&gt; Why not call it canReuseResource() as well? Sounds better.

It&apos;s not a new method, it&apos;s an override of an existing method (defined in CachedResource).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1052142</commentid>
    <comment_count>6</comment_count>
      <attachid>242271</attachid>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2014-12-03 06:58:32 -0800</bug_when>
    <thetext>Comment on attachment 242271
Patch

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

&gt;&gt;&gt; Source/WebCore/css/StyleResolver.cpp:3638
&gt;&gt;&gt; +            return true;
&gt;&gt; 
&gt;&gt; why not return false if is not &apos;none&apos;?
&gt;&gt; 
&gt;&gt; I wonder if it should be: return (downcast&lt;CSSPrimitiveValue&gt;(*inValue).getValueID() == CSSValueNone);
&gt; 
&gt; The code that will call this method (part2 of the patch) will only apply it to the style if this returns true. As such, I want it to return true for none so it would apply it and clear any old masks.

Don&apos;t you return false in the next if clause anyway? Because if it is a primitive value and not none, you still fail on the value list check.

&gt;&gt; Source/WebCore/css/StyleResolver.cpp:3672
&gt;&gt; +            outOperations.append(newMaskImage);
&gt; 
&gt; If one of the above operations fails and we do not end up with a  newMaskImage, don&apos;t we have a list of less mask operations than the user specified? To know the order of the applied resources is important for mask-composite.

I&apos;d still be interested in this question.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1052143</commentid>
    <comment_count>7</comment_count>
    <who name="Radu Stavila">stavila</who>
    <bug_when>2014-12-03 07:00:18 -0800</bug_when>
    <thetext>(In reply to comment #6)
&gt; Comment on attachment 242271 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=242271&amp;action=review

&gt; &gt;&gt; Source/WebCore/css/StyleResolver.cpp:3672
&gt; &gt;&gt; +            outOperations.append(newMaskImage);
&gt; &gt; 
&gt; &gt; If one of the above operations fails and we do not end up with a  newMaskImage, don&apos;t we have a list of less mask operations than the user specified? To know the order of the applied resources is important for mask-composite.
&gt; 
&gt; I&apos;d still be interested in this question.

I&apos;m addressing that in the upcoming new patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1052167</commentid>
    <comment_count>8</comment_count>
      <attachid>242271</attachid>
    <who name="Radu Stavila">stavila</who>
    <bug_when>2014-12-03 09:13:48 -0800</bug_when>
    <thetext>Comment on attachment 242271
Patch

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

&gt;&gt; Source/WebCore/platform/graphics/MaskImageOperation.cpp:104
&gt;&gt; +        return (image()-&gt;cachedImage() &amp;&amp; image()-&gt;cachedImage()-&gt;image());
&gt; 
&gt; What about generated images? For those, cachedImage() would return 0 and therefore false. Pending image resources would return 0 as well, but that is probably correct here.

It will not get here for generated image because of the previous if statement. m_isExternalDocument will be false for generated images.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1052170</commentid>
    <comment_count>9</comment_count>
      <attachid>242495</attachid>
    <who name="Radu Stavila">stavila</who>
    <bug_when>2014-12-03 09:20:59 -0800</bug_when>
    <thetext>Created attachment 242495
Patch integrating Dirk&apos;s feedback</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1052327</commentid>
    <comment_count>10</comment_count>
      <attachid>242495</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2014-12-03 16:07:17 -0800</bug_when>
    <thetext>Comment on attachment 242495
Patch integrating Dirk&apos;s feedback

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

&gt; Source/WebCore/css/StyleResolver.cpp:3477
&gt; +    State&amp; state = m_state;

Why do you need this variable?

&gt; Source/WebCore/css/StyleResolver.cpp:3489
&gt; +        RefPtr&lt;MaskImageOperation&gt; newMaskImage = nullptr;

No need to initialize to nullptr.

&gt; Source/WebCore/css/StyleResolver.cpp:3502
&gt; +                    state.maskImagesWithPendingSVGDocuments().append(newMaskImage);

m_state

&gt; Source/WebCore/css/StyleResolver.h:241
&gt;      bool createFilterOperations(CSSValue* inValue, FilterOperations&amp; outOperations);
&gt; +    bool createMaskImageOperations(CSSValue* inValue, Vector&lt;RefPtr&lt;MaskImageOperation&gt;&gt;&amp; outOperations);

It&apos;s a bit odd that we have FilterOperations, but not MaskImageOperations.

&gt; Source/WebCore/loader/cache/CachedSVGDocument.h:53
&gt; +    unsigned m_shouldCreateFrameForDocument : 1;
&gt; +    unsigned m_canReuseResource : 1;

I don&apos;t think it&apos;s worth using bit flags here.

&gt; Source/WebCore/page/Page.cpp:279
&gt; +Page* Page::createPageFromBuffer(PageConfiguration&amp; pageConfiguration, const SharedBuffer* buffer, const String&amp; mimeType, bool canHaveScrollbars, bool transparent)

This should return a unique_ptr&lt;&gt;

&gt; Source/WebCore/platform/ScrollView.h:413
&gt; +    virtual bool isSVGDocument() const { return false; }

This seems like the wrong level of abstraction. The scrollview contains a document, it is not a document.

&gt; Source/WebCore/platform/graphics/MaskImageOperation.h:73
&gt; +    CachedSVGDocumentReference* getOrCreateCachedSVGDocumentReference();

Maybe ensureCachedSVGDocumentReference()?

&gt; Source/WebCore/platform/graphics/MaskImageOperation.h:75
&gt; +    virtual void notifyFinished(CachedResource*);

override?

&gt; Source/WebCore/rendering/RenderLayerMaskImageInfo.cpp:102
&gt; +        CachedSVGDocument* cachedSVGDocument = documentReference ? documentReference-&gt;document() : 0;

nullptr

&gt; Source/WebCore/rendering/style/FillLayer.h:185
&gt; +    RefPtr&lt;MaskImageOperation&gt; m_maskImageOperation;

I&apos;m a little concerned about increasing the size of FillLayer for something that is very rarely used.

&gt; Source/WebCore/rendering/svg/RenderSVGResourceMasker.h:56
&gt; +    MaskerData* maskerDataForRenderer(RenderObject&amp; renderer) { return m_masker.get(&amp;renderer); }

Could this return a const *?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1052435</commentid>
    <comment_count>11</comment_count>
      <attachid>242495</attachid>
    <who name="Radu Stavila">stavila</who>
    <bug_when>2014-12-04 02:07:57 -0800</bug_when>
    <thetext>Comment on attachment 242495
Patch integrating Dirk&apos;s feedback

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

&gt;&gt; Source/WebCore/rendering/svg/RenderSVGResourceMasker.h:56
&gt;&gt; +    MaskerData* maskerDataForRenderer(RenderObject&amp; renderer) { return m_masker.get(&amp;renderer); }
&gt; 
&gt; Could this return a const *?

Not really because it&apos;s member maskImage is then used as a parameter to GraphicsContext::drawImageBuffer, which doesn&apos;t take it as const.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1052451</commentid>
    <comment_count>12</comment_count>
      <attachid>242563</attachid>
    <who name="Radu Stavila">stavila</who>
    <bug_when>2014-12-04 04:11:26 -0800</bug_when>
    <thetext>Created attachment 242563
Integrated Simon&apos;s feedback</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1052476</commentid>
    <comment_count>13</comment_count>
      <attachid>242569</attachid>
    <who name="Radu Stavila">stavila</who>
    <bug_when>2014-12-04 07:00:44 -0800</bug_when>
    <thetext>Created attachment 242569
Added &apos;reviewed by&apos; in ChangeLog</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1052483</commentid>
    <comment_count>14</comment_count>
      <attachid>242569</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-12-04 09:04:44 -0800</bug_when>
    <thetext>Comment on attachment 242569
Added &apos;reviewed by&apos; in ChangeLog

Clearing flags on attachment: 242569

Committed r176798: &lt;http://trac.webkit.org/changeset/176798&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1052508</commentid>
    <comment_count>15</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2014-12-04 11:04:30 -0800</bug_when>
    <thetext>(In reply to comment #13)
&gt; Created attachment 242569 [details]
&gt; Added &apos;reviewed by&apos; in ChangeLog

Commit queue will do that for you.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1052545</commentid>
    <comment_count>16</comment_count>
    <who name="Radu Stavila">stavila</who>
    <bug_when>2014-12-04 12:57:23 -0800</bug_when>
    <thetext>(In reply to comment #15)
&gt; (In reply to comment #13)
&gt; &gt; Created attachment 242569 [details]
&gt; &gt; Added &apos;reviewed by&apos; in ChangeLog
&gt; 
&gt; Commit queue will do that for you.

Ha, good to know. Is this a recent change in the bots? I remember when I forgot to add it some time ago and it didn&apos;t like the fact that it found &quot;OOPS&quot; in the CL.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1974401</commentid>
    <comment_count>17</comment_count>
    <who name="Tim Nguyen (:ntim)">ntim</who>
    <bug_when>2023-08-30 00:03:07 -0700</bug_when>
    <thetext>Reverted in bug 146653</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1974402</commentid>
    <comment_count>18</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2023-08-30 00:04:46 -0700</bug_when>
    <thetext>&lt;rdar://problem/114683744&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>242271</attachid>
            <date>2014-11-28 08:25:51 -0800</date>
            <delta_ts>2014-12-03 09:20:59 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>139092.129682.subpart1.patch</filename>
            <type>text/plain</type>
            <size>99338</size>
            <attacher name="Radu Stavila">stavila</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYkNv
cmUvQ01ha2VMaXN0cy50eHQKaW5kZXggNjQ2MzUxMi4uYzBhZjlmMCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0
cy50eHQKQEAgLTEyODksNiArMTI4OSw3IEBAIHNldChXZWJDb3JlX1NPVVJDRVMKICAgICBjc3Mv
VHJhbnNmb3JtRnVuY3Rpb25zLmNwcAogICAgIGNzcy9WaWV3cG9ydFN0eWxlUmVzb2x2ZXIuY3Bw
CiAgICAgY3NzL1dlYktpdENTU0ZpbHRlclZhbHVlLmNwcAorICAgIGNzcy9XZWJLaXRDU1NSZXNv
dXJjZVZhbHVlLmNwcAogICAgIGNzcy9DU1NLZXlmcmFtZVJ1bGUuY3BwCiAgICAgY3NzL0NTU0tl
eWZyYW1lc1J1bGUuY3BwCiAgICAgY3NzL1dlYktpdENTU01hdHJpeC5jcHAKQEAgLTIwOTEsNiAr
MjA5Miw3IEBAIHNldChXZWJDb3JlX1NPVVJDRVMKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9JU09W
VFRDdWUuY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvTGF5b3V0Qm94RXh0ZW50LmNwcAogICAg
IHBsYXRmb3JtL2dyYXBoaWNzL0xheW91dFJlY3QuY3BwCisgICAgcGxhdGZvcm0vZ3JhcGhpY3Mv
TWFza0ltYWdlT3BlcmF0aW9uLmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVy
LmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL1BhdGguY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhp
Y3MvUGF0aFRyYXZlcnNhbFN0YXRlLmNwcApAQCAtMjI5Nyw2ICsyMjk5LDcgQEAgc2V0KFdlYkNv
cmVfU09VUkNFUwogICAgIHJlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwCiAgICAgcmVu
ZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5jcHAKICAgICByZW5kZXJpbmcvUmVuZGVyTGF5
ZXJGaWx0ZXJJbmZvLmNwcAorICAgIHJlbmRlcmluZy9SZW5kZXJMYXllck1hc2tJbWFnZUluZm8u
Y3BwCiAgICAgcmVuZGVyaW5nL1JlbmRlckxheWVyTW9kZWxPYmplY3QuY3BwCiAgICAgcmVuZGVy
aW5nL1JlbmRlckxpbmVCb3hMaXN0LmNwcAogICAgIHJlbmRlcmluZy9SZW5kZXJMaW5lQnJlYWsu
Y3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKaW5kZXggMmRkNzc4ZS4uNmVlNjViZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDE3OSBAQAorMjAxNC0xMS0yOCAgUmFkdSBTdGF2aWxhICA8c3RhdmlsYUBhZG9iZS5jb20+CisK
KyAgICAgICAgW1NWRyBNYXNraW5nXSBTdWItcGFydCAxIG9mIHRoZSBiaWdnZXIgcGF0Y2ggZml4
aW5nIGJ1ZyAxMjk2ODIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTEzOTA5MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIFRoaXMgcGF0Y2ggaW1wcm92ZXMgdGhlIC13ZWJraXQtbWFzay1pbWFnZSBwcm9wZXJ0
eSBieSBhbGxvd2luZyBpdCB0byByZWZlcmVuY2UKKyAgICAgICAgYSA8bWFzaz4gZWxlbWVudCBk
ZWZpbmVkIGluIGFuIGlubGluZSBvciBleHRlcm5hbCBTVkcgZG9jdW1lbnQuCisgICAgICAgIFVw
IHVudGlsIG5vdywgZWFjaCBpbWFnZSB0byBiZSB1c2VkIGFzIGEgbWFzayBjb25zaXN0ZWQgb2Yg
YSBGaWxsTGF5ZXIgb2JqZWN0IAorICAgICAgICB3aG9zZSBtX2ltYWdlIG1lbWJlciByZXByZXNl
bnRlZCB0aGUgbWFzay4gTm93LCBpbiBvcmRlciB0byBhY2NvbW9kYXRlCisgICAgICAgIDxtYXNr
PiBlbGVtZW50cyByZWZlcmVuY2VkIGJ5IGEgZnJhZ21lbnQgaWRlbnRpZmllciAoZS5nLiBmaWxl
LnN2ZyNtYXNrMSkKKyAgICAgICAgYSBuZXcgY2xhc3Mgd2FzIGNyZWF0ZWQgKE1hc2tJbWFnZU9w
ZXJhdGlvbikgYW5kIGFkZGVkIGFzIGEgbWVtYmVyIG9mIHRoZSAKKyAgICAgICAgRmlsbExheWVy
LiBBcyBzdWNoLCBmcm9tIG5vdyBvbiwgYWxsIEZpbGxMYXllciBvYmplY3RzIHVzZWQgZm9yIG1h
c2tpbmcgd2lsbAorICAgICAgICBzdG9yZSB0aGUgbWFza2luZyBpbmZvcm1hdGlvbiBpbiB0aGlz
IG5ldyBtZW1iZXIuCisgICAgICAgIFdoZW4gcGFyc2luZyB0aGUgLXdlYmtpdC1tYXNrLWltYWdl
IHByb3BlcnR5IChvciB0aGUgLXdlYmtpdC1tYXNrIHNob3J0aGFuZCkKKyAgICAgICAgYSBuZXcg
TWFza0ltYWdlT3BlcmF0aW9uIG9iamVjdCBpcyBjcmVhdGVkIGZvciBlYWNoIGltYWdlLiBJZiB0
aGUgdmFsdWUgcmVwcmVzZW50cworICAgICAgICBhbiBleHRlcm5hbCBVUkwsIGEgcGVuZGluZyBT
VkcgZG9jdW1lbnQgd2lsbCBiZSBjcmVhdGVkIHdoaWNoIHdpbGwgYmUgbG9hZGVkIAorICAgICAg
ICBkdXJpbmcgdGhlIHBoYXNlIHRoYXQgbG9hZHMgdGhlIHBlbmRpbmcgcmVzb3VyY2VzLiBXaGVu
IHRoZSBkb3dubG9hZCBpcyBjb21wbGV0ZSwKKyAgICAgICAgdGhlIE1hc2tJbWFnZU9wZXJhdGlv
biBpcyBub3RpZmllZCBieSB0aGUgQ2FjaGVkU1ZHRG9jdW1lbnQgY2xhc3MgYW5kIGNoZWNrcyBp
ZgorICAgICAgICB0aGUgcmVjZWl2ZWQgZG93bmxvYWQgaXMgYSB2YWxpZCBTVkcgYW5kIHRoZSBy
ZXF1ZXN0ZWQgZnJhZ21lbnQgaWRlbnRpZmllcgorICAgICAgICBhY3R1YWxseSBleGlzdHMgYW5k
IGlkZW50aWZpZXMgYSA8bWFzaz4gZWxlbWVudC4gSWYgaXQgZG9lcywgdGhhdCBlbGVtZW50J3MK
KyAgICAgICAgcmVuZGVyZXIgKG9mIHR5cGUgUmVuZGVyU1ZHUmVzb3VyY2VNYXNrZXIpIHdpbGwg
YmUgdXNlZCB3aGVuIHBhaW50aW5nIHRoZSBtYXNrIGxheWVycy4KKyAgICAgICAgT3RoZXJ3aXNl
LCB0aGUgTWFza0ltYWdlT3BlcmF0aW9uIGNsYXNzIHdpbGwgdXNlIHRoZSBhbHJlYWR5IGRvd25s
b2FkZWQgZGF0YSAKKyAgICAgICAgYnVmZmVyIHRvIGNyZWF0ZSBhIENhY2hlZEltYWdlIGZyb20g
aXQgYW5kIHVzZSB0aGF0IGluc3RlYWQsIGJhc2ljYWxseSBlbXVsYXRpbmcKKyAgICAgICAgdGhl
IHByZXZpb3VzIGJlaGF2aW9yLCB3aGVuIG9ubHkgaW1hZ2VzIHdlcmUgYWNjZXB0ZWQuIFRoaXMg
ZW5zdXJlcyB0aGF0IGFsbCBleGlzdGluZworICAgICAgICBiZWhhdmlvciwgbGlrZSBwYWludGlu
ZyBlbnRpcmUgU1ZHcywgcGFpbnRpbmcgbm9ybWFsIGltYWdlcyAoZS5nLiBQTkcvSlBHKSwgcGFp
bnRpbmcKKyAgICAgICAgZ2VuZXJhdGVkIGltYWdlcyAoZS5nLiBsaW5lYXItZ3JhZGllbnQpIHdv
cmtzIGFzIGl0IGRpZCBiZWZvcmUuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzIHJlcXVpcmVkLCB0
aGlzIHBhdGNoIGRvZXNuJ3QgY2hhbmdlIGFueSBjdXJyZW50IGZ1bmN0aW9uYWxpdHkuIAorICAg
ICAgICBJdCBvbmx5IGFkZHMgc3VwcG9ydCBmb3IgcmVmZXJlbmNpbmcgPG1hc2s+IGVsZW1lbnRz
IGZvciB0aGUgLXdlYmtpdC1tYXNrLWltYWdlIAorICAgICAgICBwcm9wZXJ0eS4gVGhpcyBpcyBz
dWItcGFydCAxIG9mIHRoZSBiaWdnZXIgcGF0Y2ggaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTEyOTY4Mi4KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAg
ICAqIFdlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2o6CisgICAgICAgICogV2ViQ29yZS52
Y3hwcm9qL1dlYkNvcmUudmN4cHJvai5maWx0ZXJzOgorICAgICAgICAqIFdlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBjc3MvQ1NTVmFsdWUuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Q1NTVmFsdWU6OmNzc1RleHQpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTVmFs
dWU6OmRlc3Ryb3kpOgorICAgICAgICAqIGNzcy9DU1NWYWx1ZS5oOgorICAgICAgICAoV2ViQ29y
ZTo6Q1NTVmFsdWU6OmlzV2ViS2l0Q1NTUmVzb3VyY2VWYWx1ZSk6CisgICAgICAgICogY3NzL1N0
eWxlUmVzb2x2ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVSZXNvbHZlcjo6U3RhdGU6
OmNsZWFyKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUmVzb2x2ZXI6OmNyZWF0ZU1hc2tJbWFn
ZU9wZXJhdGlvbnMpOgorICAgICAgICAqIGNzcy9TdHlsZVJlc29sdmVyLmg6CisgICAgICAgIChX
ZWJDb3JlOjpTdHlsZVJlc29sdmVyOjpTdGF0ZTo6bWFza0ltYWdlc1dpdGhQZW5kaW5nU1ZHRG9j
dW1lbnRzKToKKyAgICAgICAgKiBjc3MvV2ViS2l0Q1NTUmVzb3VyY2VWYWx1ZS5jcHA6IEFkZGVk
LgorICAgICAgICAoV2ViQ29yZTo6V2ViS2l0Q1NTUmVzb3VyY2VWYWx1ZTo6V2ViS2l0Q1NTUmVz
b3VyY2VWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJLaXRDU1NSZXNvdXJjZVZhbHVlOjpj
dXN0b21DU1NUZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OldlYktpdENTU1Jlc291cmNlVmFsdWU6
OmlzQ1NTVmFsdWVOb25lKToKKyAgICAgICAgKiBjc3MvV2ViS2l0Q1NTUmVzb3VyY2VWYWx1ZS5o
OiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OldlYktpdENTU1Jlc291cmNlVmFsdWU6OmNyZWF0
ZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJLaXRDU1NSZXNvdXJjZVZhbHVlOjppbm5lclZhbHVl
KToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VMb2FkZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Q2FjaGVkUmVzb3VyY2VMb2FkZXI6OmFkZENhY2hlZFJlc291cmNlKToK
KyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VMb2FkZXIuaDoKKyAgICAgICAg
KiBsb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Q2FjaGVkU1ZHRG9jdW1lbnQ6OkNhY2hlZFNWR0RvY3VtZW50KToKKyAgICAgICAgKFdlYkNvcmU6
OkNhY2hlZFNWR0RvY3VtZW50OjpmaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKiBsb2FkZXIvY2Fj
aGUvQ2FjaGVkU1ZHRG9jdW1lbnQuaDoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkU1ZH
RG9jdW1lbnRSZWZlcmVuY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkU1ZHRG9jdW1l
bnRSZWZlcmVuY2U6OkNhY2hlZFNWR0RvY3VtZW50UmVmZXJlbmNlKToKKyAgICAgICAgKFdlYkNv
cmU6OkNhY2hlZFNWR0RvY3VtZW50UmVmZXJlbmNlOjp+Q2FjaGVkU1ZHRG9jdW1lbnRSZWZlcmVu
Y2UpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkU1ZHRG9jdW1lbnRSZWZlcmVuY2U6OmxvYWQp
OgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRTVkdEb2N1bWVudFJlZmVyZW5jZS5oOgor
ICAgICAgICAqIHBhZ2UvRnJhbWVWaWV3LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVmll
dzo6aXNTVkdEb2N1bWVudCk6CisgICAgICAgICogcGFnZS9GcmFtZVZpZXcuaDoKKyAgICAgICAg
KiBwYWdlL1BhZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6Y3JlYXRlUGFnZUZyb21C
dWZmZXIpOgorICAgICAgICAqIHBhZ2UvUGFnZS5oOgorICAgICAgICAqIHBsYXRmb3JtL1Njcm9s
bFZpZXcuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbFZpZXc6OmlzU1ZHRG9jdW1lbnQpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL01hc2tJbWFnZU9wZXJhdGlvbi5jcHA6IEFkZGVk
LgorICAgICAgICAoV2ViQ29yZTo6TWFza0ltYWdlT3BlcmF0aW9uOjpjcmVhdGUpOgorICAgICAg
ICAoV2ViQ29yZTo6TWFza0ltYWdlT3BlcmF0aW9uOjpNYXNrSW1hZ2VPcGVyYXRpb24pOgorICAg
ICAgICAoV2ViQ29yZTo6TWFza0ltYWdlT3BlcmF0aW9uOjp+TWFza0ltYWdlT3BlcmF0aW9uKToK
KyAgICAgICAgKFdlYkNvcmU6Ok1hc2tJbWFnZU9wZXJhdGlvbjo6aXNDU1NWYWx1ZU5vbmUpOgor
ICAgICAgICAoV2ViQ29yZTo6TWFza0ltYWdlT3BlcmF0aW9uOjpjc3NWYWx1ZSk6CisgICAgICAg
IChXZWJDb3JlOjpNYXNrSW1hZ2VPcGVyYXRpb246OmlzTWFza0xvYWRlZCk6CisgICAgICAgIChX
ZWJDb3JlOjpNYXNrSW1hZ2VPcGVyYXRpb246OnNldFJlbmRlckxheWVySW1hZ2VDbGllbnQpOgor
ICAgICAgICAoV2ViQ29yZTo6TWFza0ltYWdlT3BlcmF0aW9uOjphZGRSZW5kZXJlckltYWdlQ2xp
ZW50KToKKyAgICAgICAgKFdlYkNvcmU6Ok1hc2tJbWFnZU9wZXJhdGlvbjo6cmVtb3ZlUmVuZGVy
ZXJJbWFnZUNsaWVudCk6CisgICAgICAgIChXZWJDb3JlOjpNYXNrSW1hZ2VPcGVyYXRpb246Omdl
dE9yQ3JlYXRlQ2FjaGVkU1ZHRG9jdW1lbnRSZWZlcmVuY2UpOgorICAgICAgICAoV2ViQ29yZTo6
TWFza0ltYWdlT3BlcmF0aW9uOjpub3RpZnlGaW5pc2hlZCk6IFRoaXMgaXMgdGhlIG1ldGhvZCB0
aGF0IGdldHMgY2FsbGVkIHdoZW4gdGhlIGRvY3VtZW50IGhhcyBmaW5pc2hlZCBkb3dubG9hZGlu
ZyBhbmQgY2hlY2tzIGlmIGl0IGNhbiBmaW5kIGEgdmFsaWQgPG1hc2s+IGVsZW1lbnQuCisgICAg
ICAgIChXZWJDb3JlOjpNYXNrSW1hZ2VPcGVyYXRpb246OmRyYXdNYXNrKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9NYXNrSW1hZ2VPcGVyYXRpb24uaDogQWRkZWQuCisgICAgICAgICog
cmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmNwcDogVGhlIEJhY2tncm91bmRJbWFnZUdl
b21ldHJ5IGNsYXNzIHdhcyBtb3ZlZCBvdXQgb2YgUmVuZGVyQm94TW9kZWxPYmplY3QgaW4gb3Jk
ZXIgdG8gYmUgdXNlZCBhcyBhIHBhcmFtZXRlciBmb3Igb3RoZXIgbWV0aG9kcy4gVGhpcyB3YXMg
bmVjZXNzYXJ5IHRvIGF2b2lkIGhhdmluZyBtZXRob2RzIHdpdGggdmVyeSBtYW55IHBhcmFtZXRl
cnMuCisgICAgICAgIChXZWJDb3JlOjpCYWNrZ3JvdW5kSW1hZ2VHZW9tZXRyeTo6c2V0Tm9SZXBl
YXRYKToKKyAgICAgICAgKFdlYkNvcmU6OkJhY2tncm91bmRJbWFnZUdlb21ldHJ5OjpzZXROb1Jl
cGVhdFkpOgorICAgICAgICAoV2ViQ29yZTo6QmFja2dyb3VuZEltYWdlR2VvbWV0cnk6OnVzZUZp
eGVkQXR0YWNobWVudCk6CisgICAgICAgIChXZWJDb3JlOjpCYWNrZ3JvdW5kSW1hZ2VHZW9tZXRy
eTo6Y2xpcCk6CisgICAgICAgIChXZWJDb3JlOjpCYWNrZ3JvdW5kSW1hZ2VHZW9tZXRyeTo6cmVs
YXRpdmVQaGFzZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3hNb2RlbE9iamVjdDo6QmFj
a2dyb3VuZEltYWdlR2VvbWV0cnk6OnNldE5vUmVwZWF0WCk6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJCb3hNb2RlbE9iamVjdDo6QmFja2dyb3VuZEltYWdlR2VvbWV0cnk6OnNl
dE5vUmVwZWF0WSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3hNb2RlbE9i
amVjdDo6QmFja2dyb3VuZEltYWdlR2VvbWV0cnk6OnVzZUZpeGVkQXR0YWNobWVudCk6IERlbGV0
ZWQuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3hNb2RlbE9iamVjdDo6QmFja2dyb3VuZElt
YWdlR2VvbWV0cnk6OmNsaXApOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94
TW9kZWxPYmplY3Q6OkJhY2tncm91bmRJbWFnZUdlb21ldHJ5OjpyZWxhdGl2ZVBoYXNlKTogRGVs
ZXRlZC4KKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuaDoKKyAgICAg
ICAgKFdlYkNvcmU6OkJhY2tncm91bmRJbWFnZUdlb21ldHJ5OjpCYWNrZ3JvdW5kSW1hZ2VHZW9t
ZXRyeSk6CisgICAgICAgIChXZWJDb3JlOjpCYWNrZ3JvdW5kSW1hZ2VHZW9tZXRyeTo6ZGVzdE9y
aWdpbik6CisgICAgICAgIChXZWJDb3JlOjpCYWNrZ3JvdW5kSW1hZ2VHZW9tZXRyeTo6c2V0RGVz
dE9yaWdpbik6CisgICAgICAgIChXZWJDb3JlOjpCYWNrZ3JvdW5kSW1hZ2VHZW9tZXRyeTo6ZGVz
dFJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6QmFja2dyb3VuZEltYWdlR2VvbWV0cnk6OnNldERl
c3RSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkJhY2tncm91bmRJbWFnZUdlb21ldHJ5OjpwaGFz
ZSk6CisgICAgICAgIChXZWJDb3JlOjpCYWNrZ3JvdW5kSW1hZ2VHZW9tZXRyeTo6c2V0UGhhc2Up
OgorICAgICAgICAoV2ViQ29yZTo6QmFja2dyb3VuZEltYWdlR2VvbWV0cnk6OnRpbGVTaXplKToK
KyAgICAgICAgKFdlYkNvcmU6OkJhY2tncm91bmRJbWFnZUdlb21ldHJ5OjpzZXRUaWxlU2l6ZSk6
CisgICAgICAgIChXZWJDb3JlOjpCYWNrZ3JvdW5kSW1hZ2VHZW9tZXRyeTo6c3BhY2VTaXplKToK
KyAgICAgICAgKFdlYkNvcmU6OkJhY2tncm91bmRJbWFnZUdlb21ldHJ5OjpzZXRTcGFjZVNpemUp
OgorICAgICAgICAoV2ViQ29yZTo6QmFja2dyb3VuZEltYWdlR2VvbWV0cnk6OnNldFBoYXNlWCk6
CisgICAgICAgIChXZWJDb3JlOjpCYWNrZ3JvdW5kSW1hZ2VHZW9tZXRyeTo6c2V0UGhhc2VZKToK
KyAgICAgICAgKFdlYkNvcmU6OkJhY2tncm91bmRJbWFnZUdlb21ldHJ5OjpzZXRIYXNOb25Mb2Nh
bEdlb21ldHJ5KToKKyAgICAgICAgKFdlYkNvcmU6OkJhY2tncm91bmRJbWFnZUdlb21ldHJ5Ojpo
YXNOb25Mb2NhbEdlb21ldHJ5KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveE1vZGVsT2Jq
ZWN0OjpCYWNrZ3JvdW5kSW1hZ2VHZW9tZXRyeTo6QmFja2dyb3VuZEltYWdlR2VvbWV0cnkpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94TW9kZWxPYmplY3Q6OkJhY2tncm91
bmRJbWFnZUdlb21ldHJ5OjpkZXN0T3JpZ2luKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlckJveE1vZGVsT2JqZWN0OjpCYWNrZ3JvdW5kSW1hZ2VHZW9tZXRyeTo6c2V0RGVzdE9y
aWdpbik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3hNb2RlbE9iamVjdDo6
QmFja2dyb3VuZEltYWdlR2VvbWV0cnk6OmRlc3RSZWN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlckJveE1vZGVsT2JqZWN0OjpCYWNrZ3JvdW5kSW1hZ2VHZW9tZXRyeTo6c2V0
RGVzdFJlY3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94TW9kZWxPYmpl
Y3Q6OkJhY2tncm91bmRJbWFnZUdlb21ldHJ5OjpwaGFzZSk6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJCb3hNb2RlbE9iamVjdDo6QmFja2dyb3VuZEltYWdlR2VvbWV0cnk6OnNl
dFBoYXNlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveE1vZGVsT2JqZWN0
OjpCYWNrZ3JvdW5kSW1hZ2VHZW9tZXRyeTo6dGlsZVNpemUpOiBEZWxldGVkLgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyQm94TW9kZWxPYmplY3Q6OkJhY2tncm91bmRJbWFnZUdlb21ldHJ5Ojpz
ZXRUaWxlU2l6ZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3hNb2RlbE9i
amVjdDo6QmFja2dyb3VuZEltYWdlR2VvbWV0cnk6OnNwYWNlU2l6ZSk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJCb3hNb2RlbE9iamVjdDo6QmFja2dyb3VuZEltYWdlR2VvbWV0
cnk6OnNldFNwYWNlU2l6ZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3hN
b2RlbE9iamVjdDo6QmFja2dyb3VuZEltYWdlR2VvbWV0cnk6OnNldFBoYXNlWCk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3hNb2RlbE9iamVjdDo6QmFja2dyb3VuZEltYWdl
R2VvbWV0cnk6OnNldFBoYXNlWSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJC
b3hNb2RlbE9iamVjdDo6QmFja2dyb3VuZEltYWdlR2VvbWV0cnk6OnNldEhhc05vbkxvY2FsR2Vv
bWV0cnkpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94TW9kZWxPYmplY3Q6
OkJhY2tncm91bmRJbWFnZUdlb21ldHJ5OjpoYXNOb25Mb2NhbEdlb21ldHJ5KTogRGVsZXRlZC4K
KyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyTGF5ZXI6OlJlbmRlckxheWVyKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVy
Ojp+UmVuZGVyTGF5ZXIpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXllci5oOgorICAg
ICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXllck1hc2tJbWFnZUluZm8uY3BwOiBBZGRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjpNYXNrSW1hZ2VJbmZvOjpsYXllclRvTWFza01h
cCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6TWFza0ltYWdlSW5mbzo6Z2V0SWZF
eGlzdHMpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6Ok1hc2tJbWFnZUluZm86Omdl
dCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6TWFza0ltYWdlSW5mbzo6cmVtb3Zl
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjpNYXNrSW1hZ2VJbmZvOjpNYXNrSW1h
Z2VJbmZvKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjpNYXNrSW1hZ2VJbmZvOjp+
TWFza0ltYWdlSW5mbyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6TWFza0ltYWdl
SW5mbzo6bm90aWZ5RmluaXNoZWQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6Ok1h
c2tJbWFnZUluZm86OmltYWdlQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXll
cjo6TWFza0ltYWdlSW5mbzo6dXBkYXRlTWFza0ltYWdlQ2xpZW50cyk6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJMYXllcjo6TWFza0ltYWdlSW5mbzo6cmVtb3ZlTWFza0ltYWdlQ2xpZW50cyk6
CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyTWFza0ltYWdlSW5mby5oOiBBZGRlZC4K
KyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyT2JqZWN0Lmg6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJPYmplY3Q6OmlzUmVuZGVyU1ZHUmVzb3VyY2VNYXNrZXIpOgorICAgICAgICAqIHJlbmRl
cmluZy9zdHlsZS9GaWxsTGF5ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RmlsbExheWVyOjpG
aWxsTGF5ZXIpOgorICAgICAgICAoV2ViQ29yZTo6RmlsbExheWVyOjpvcGVyYXRvcj0pOgorICAg
ICAgICAoV2ViQ29yZTo6RmlsbExheWVyOjpvcGVyYXRvcj09KToKKyAgICAgICAgKFdlYkNvcmU6
OkZpbGxMYXllcjo6Y3VsbEVtcHR5TGF5ZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OkZpbGxMYXll
cjo6aGFzTm9uRW1wdHlNYXNrSW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6RmlsbExheWVyOjpp
bWFnZXNBcmVMb2FkZWQpOgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9GaWxsTGF5ZXIuaDoK
KyAgICAgICAgKFdlYkNvcmU6OkZpbGxMYXllcjo6bWFza0ltYWdlKToKKyAgICAgICAgKFdlYkNv
cmU6OkZpbGxMYXllcjo6aW1hZ2VPck1hc2tJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpGaWxs
TGF5ZXI6OnNldE1hc2tJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpGaWxsTGF5ZXI6OmNsZWFy
TWFza0ltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkZpbGxMYXllcjo6aGFzTWFza0ltYWdlKToK
KyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlTWFza2VyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1Jlc291cmNlTWFza2VyOjphcHBseVNWR01hc2spOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHUmVzb3VyY2VNYXNrZXI6OmFwcGx5UmVzb3VyY2Up
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHUmVzb3VyY2VNYXNrZXI6OmRyYXdNYXNrRm9y
UmVuZGVyZXIpOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VNYXNr
ZXIuaDoKKyAgICAgICAgKiBzdmcvU1ZHTWFza0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6U1ZHTWFza0VsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcik6CisgICAgICAgIChXZWJD
b3JlOjpTVkdNYXNrRWxlbWVudDo6YWRkQ2xpZW50UmVuZGVyTGF5ZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6U1ZHTWFza0VsZW1lbnQ6OnJlbW92ZUNsaWVudFJlbmRlckxheWVyKToKKyAgICAgICAg
KiBzdmcvU1ZHTWFza0VsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHVXNlRWxlbWVudC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpTVkdVc2VFbGVtZW50OjpzZXRDYWNoZWREb2N1bWVudCk6Cisg
ICAgICAgICogc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNW
R0ltYWdlOjpkYXRhQ2hhbmdlZCk6CisKIDIwMTQtMTEtMjcgIFJ5dWFuIENob2kgIDxyeXVhbi5j
aG9pQG5hdmVyY29ycC5jb20+CiAKICAgICAgICAgW0VGTF0gUmVtb3ZlIEVfRGJ1cyBkZXBlbmRl
bmN5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52
Y3hwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvagpp
bmRleCA5MGJlYWJmLi4zNzVhOTBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
LnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4
cHJvai9XZWJDb3JlLnZjeHByb2oKQEAgLTc0OSw2ICs3NDksNyBAQAogICAgICAgPEV4Y2x1ZGVk
RnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVs
ZWFzZXxXaW4zMiciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgogICAgICAgPEV4Y2x1ZGVkRnJv
bUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFz
ZXx4NjQnIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KICAgICA8L0NsQ29tcGlsZT4KKyAgICA8
Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGNzc1xXZWJLaXRDU1NSZXNvdXJjZVZhbHVlLmNwcCIgLz4K
ICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXERlcml2ZWRTb3VyY2VzLmNwcCI+CiAgICAgICA8
UHJlY29tcGlsZWRIZWFkZXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3Jt
KSc9PSdEZWJ1Z3xXaW4zMiciPgogICAgICAgPC9QcmVjb21waWxlZEhlYWRlcj4KQEAgLTc1ODQs
NiArNzU4NSw3IEBACiAgICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25m
aWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQcm9kdWN0aW9ufFdpbjMyJyI+dHJ1ZTwvRXhjbHVk
ZWRGcm9tQnVpbGQ+CiAgICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25m
aWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQcm9kdWN0aW9ufHg2NCciPnRydWU8L0V4Y2x1ZGVk
RnJvbUJ1aWxkPgogICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5c
cGxhdGZvcm1cZ3JhcGhpY3NcTWFza0ltYWdlT3BlcmF0aW9uLmNwcCIgLz4KICAgICA8Q2xDb21w
aWxlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXGdyYXBoaWNzXE9wZW5HTFNoaW1zLmNwcCIgLz4KICAg
ICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXGdyYXBoaWNzXG9wZW5nbFxFeHRlbnNp
b25zM0RPcGVuR0wuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccGxhdGZvcm1c
Z3JhcGhpY3Ncb3BlbmdsXEV4dGVuc2lvbnMzRE9wZW5HTENvbW1vbi5jcHAiIC8+CkBAIC03OTUy
LDYgKzc5NTQsNyBAQAogICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29u
ZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUHJvZHVjdGlvbnxXaW4zMiciPnRydWU8L0V4Y2x1
ZGVkRnJvbUJ1aWxkPgogICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29u
ZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUHJvZHVjdGlvbnx4NjQnIj50cnVlPC9FeGNsdWRl
ZEZyb21CdWlsZD4KICAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4u
XHJlbmRlcmluZ1xSZW5kZXJMYXllck1hc2tJbWFnZUluZm8uY3BwIiAvPgogICAgIDxDbENvbXBp
bGUgSW5jbHVkZT0iLi5ccmVuZGVyaW5nXHN0eWxlXFN0eWxlQ2FjaGVkSW1hZ2VTZXQuY3BwIj4K
ICAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQo
UGxhdGZvcm0pJz09J0RlYnVnU3VmZml4fFdpbjMyJyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+
CiAgICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwk
KFBsYXRmb3JtKSc9PSdEZWJ1Z1N1ZmZpeHx4NjQnIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4K
QEAgLTE4ODUyLDYgKzE4ODU1LDcgQEAKICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoQ29uZmln
dXJhdGlvbkJ1aWxkRGlyKVxvYmokKFBsYXRmb3JtQXJjaGl0ZWN0dXJlKVwkKFByb2plY3ROYW1l
KVxEZXJpdmVkU291cmNlc1xKU1ZUVFJlZ2lvbkxpc3QuaCIgLz4KICAgICA8Q2xJbmNsdWRlIElu
Y2x1ZGU9Ii4uXGFjY2Vzc2liaWxpdHlcQWNjZXNzaWJpbGl0eU5vZGVPYmplY3QuaCIgLz4KICAg
ICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGNzc1xDU1NJbWFnZVNldFZhbHVlLmgiIC8+CisgICAg
PENsSW5jbHVkZSBJbmNsdWRlPSIuLlxjc3NcV2ViS2l0Q1NTUmVzb3VyY2VWYWx1ZS5oIiAvPgog
ICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cRm9yd2FyZGluZ0hlYWRlcnNcYmluZGluZ3NcU2Ny
aXB0RnVuY3Rpb25DYWxsLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxGb3J3YXJk
aW5nSGVhZGVyc1xiaW5kaW5nc1xTY3JpcHRPYmplY3QuaCIgLz4KICAgICA8Q2xJbmNsdWRlIElu
Y2x1ZGU9Ii4uXEZvcndhcmRpbmdIZWFkZXJzXGJpbmRpbmdzXFNjcmlwdFZhbHVlLmgiIC8+CkBA
IC0xOTQwOSw2ICsxOTQxMyw3IEBACiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxwbGF0Zm9y
bVxncmFwaGljc1xnc3RyZWFtZXJcVmlkZW9TaW5rR1N0cmVhbWVyLmgiIC8+CiAgICAgPENsSW5j
bHVkZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxncmFwaGljc1xnc3RyZWFtZXJcVmlkZW9UcmFja1By
aXZhdGVHU3RyZWFtZXIuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHBsYXRmb3Jt
XGdyYXBoaWNzXGdzdHJlYW1lclxXZWJLaXRXZWJTb3VyY2VHU3RyZWFtZXIuaCIgLz4KKyAgICA8
Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXGdyYXBoaWNzXE1hc2tJbWFnZU9wZXJhdGlv
bi5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccGxhdGZvcm1cZ3JhcGhpY3NcTWVk
aWFQbGF5ZXJQcml2YXRlLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxwbGF0Zm9y
bVxncmFwaGljc1xPcGVuR0xTaGltcy5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5c
cGxhdGZvcm1cZ3JhcGhpY3Ncb3BlbmdsXEV4dGVuc2lvbnMzRE9wZW5HTC5oIiAvPgpAQCAtMTk1
NDAsNiArMTk1NDUsNyBAQAogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccGxhdGZvcm1cd2lu
XFdlYkNvcmVCdW5kbGVXaW4uaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHBsYXRm
b3JtXHdpblxXZWJDb3JlSW5zdGFuY2VIYW5kbGUuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1
ZGU9Ii4uXHJlbmRlcmluZ1xIaXRUZXN0TG9jYXRpb24uaCIgLz4KKyAgICA8Q2xJbmNsdWRlIElu
Y2x1ZGU9Ii4uXHJlbmRlcmluZ1xSZW5kZXJMYXllck1hc2tJbWFnZUluZm8uaCIgLz4KICAgICA8
Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJlbmRlcmluZ1xzdHlsZVxTdHlsZUNhY2hlZEltYWdlU2V0
LmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxzdG9yYWdlXFN0b3JhZ2VTdHJhdGVn
eS5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cc3ZnXGdyYXBoaWNzXFNWR0ltYWdl
Rm9yQ29udGFpbmVyLmgiIC8+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZj
eHByb2ovV2ViQ29yZS52Y3hwcm9qLmZpbHRlcnMgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZj
eHByb2ovV2ViQ29yZS52Y3hwcm9qLmZpbHRlcnMKaW5kZXggZTA4MjE5OC4uMTBiZDIwNCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvai5m
aWx0ZXJzCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHBy
b2ouZmlsdGVycwpAQCAtNzI1Miw2ICs3MjUyLDE1IEBACiAgICAgPENsQ29tcGlsZSBJbmNsdWRl
PSIuLlxlZGl0aW5nXHdpblxFZGl0b3JXaW4uY3BwIj4KICAgICAgIDxGaWx0ZXI+ZWRpdGluZzwv
RmlsdGVyPgogICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccGxh
dGZvcm1cZ3JhcGhpY3NcTWFza0ltYWdlT3BlcmF0aW9uLmNwcCI+CisgICAgICA8RmlsdGVyPnBs
YXRmb3JtXGdyYXBoaWNzPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGls
ZSBJbmNsdWRlPSIuLlxyZW5kZXJpbmdcUmVuZGVyTGF5ZXJNYXNrSW1hZ2VJbmZvLmNwcCI+Cisg
ICAgICA8RmlsdGVyPnJlbmRlcmluZzwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxD
bENvbXBpbGUgSW5jbHVkZT0iLi5cY3NzXFdlYktpdENTU1Jlc291cmNlVmFsdWUuY3BwIj4KKyAg
ICAgIDxGaWx0ZXI+Y3NzPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CiAgIDwvSXRlbUdyb3Vw
PgogICA8SXRlbUdyb3VwPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xnZW9s
b2NhdGlvblxDb29yZGluYXRlcy5oIj4KQEAgLTE1MjQ1LDYgKzE1MjU0LDE1IEBACiAgICAgPENs
SW5jbHVkZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxncmFwaGljc1xhdmZvdW5kYXRpb25cTWVkaWFU
aW1lQVZGb3VuZGF0aW9uLmgiPgogICAgICAgPEZpbHRlcj5wbGF0Zm9ybVxncmFwaGljc1xhdmZv
dW5kYXRpb248L0ZpbHRlcj4KICAgICA8L0NsSW5jbHVkZT4KKyAgICAgICAgPENsSW5jbHVkZSBJ
bmNsdWRlPSIuLlxwbGF0Zm9ybVxncmFwaGljc1xNYXNrSW1hZ2VPcGVyYXRpb24uaCI+CisgICAg
ICA8RmlsdGVyPnBsYXRmb3JtXGdyYXBoaWNzPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+Cisg
ICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxyZW5kZXJpbmdcUmVuZGVyTGF5ZXJNYXNrSW1hZ2VJ
bmZvLmgiPgorICAgICAgPEZpbHRlcj5yZW5kZXJpbmc8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVk
ZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGNzc1xXZWJLaXRDU1NSZXNvdXJjZVZhbHVl
LmgiPgorICAgICAgPEZpbHRlcj5jc3M8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KICAgPC9J
dGVtR3JvdXA+CiAgIDxJdGVtR3JvdXA+CiAgICAgPE5vbmUgSW5jbHVkZT0iLi5cY3NzXENTU0dy
YW1tYXIueS5pbiI+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKaW5kZXggODlmYjNjNy4uYWQzZjU0ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMjIzOCw4ICsyMjM4LDE0
IEBACiAJCTY1RkQ0NjY2MTlCNTk2RjYwMDFFMkI0RCAvKiBXZWJWaWRlb0Z1bGxzY3JlZW5Nb2Rl
bFZpZGVvRWxlbWVudC5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDY1ODZGRTNEMTlCNTQ4QkQwMDVDM0M4MiAvKiBXZWJWaWRlb0Z1bGxzY3JlZW5Nb2Rl
bFZpZGVvRWxlbWVudC5tbSAqLzsgfTsKIAkJNjVGRUE4NjkwOTgzM0FERTAwQkVENEFCIC8qIFBh
Z2UuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNjVG
RUE4NjgwOTgzM0FERTAwQkVENEFCIC8qIFBhZ2UuY3BwICovOyB9OwogCQk2QjM0ODA5NDBFRUY1
MEQ0MDBBQzFCNDEgLyogTmF0aXZlSW1hZ2VQdHIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZCMzQ4MDkyMEVFRjUwRDQwMEFDMUI0MSAvKiBOYXRpdmVJ
bWFnZVB0ci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CisJCTZDNTY4Q0IwMTlEQUZFQTAwMDQzMENBMiAvKiBNYXNrSW1hZ2VPcGVyYXRpb24uY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkM1NjhDQUUxOURB
RkVBMDAwNDMwQ0EyIC8qIE1hc2tJbWFnZU9wZXJhdGlvbi5jcHAgKi87IH07CisJCTZDNTY4Q0Ix
MTlEQUZFQTAwMDQzMENBMiAvKiBNYXNrSW1hZ2VPcGVyYXRpb24uaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZDNTY4Q0FGMTlEQUZFQTAwMDQzMENBMiAv
KiBNYXNrSW1hZ2VPcGVyYXRpb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQk2QzYzODg5NUE5NkNDRUU1MEM4Qzk0NkMgLyogQ2FjaGVkUmVzb3Vy
Y2VSZXF1ZXN0SW5pdGlhdG9ycy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNkM2Mzg4OTNBOTZDQ0VFNTBDOEM5NDZDIC8qIENhY2hlZFJlc291cmNlUmVx
dWVzdEluaXRpYXRvcnMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogCQk2QzYzODg5NkE5NkNDRUU1MEM4Qzk0NkMgLyogQ2FjaGVkUmVzb3VyY2VSZXF1
ZXN0SW5pdGlhdG9ycy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA2QzYzODg5NEE5NkNDRUU1MEM4Qzk0NkMgLyogQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0
SW5pdGlhdG9ycy5jcHAgKi87IH07CisJCTZDNkNDQUIwMTlEQzQyQjkwMDQzRDVEQiAvKiBXZWJL
aXRDU1NSZXNvdXJjZVZhbHVlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDZDNkNDQUFFMTlEQzQyQjkwMDQzRDVEQiAvKiBXZWJLaXRDU1NSZXNvdXJj
ZVZhbHVlLmNwcCAqLzsgfTsKKwkJNkM2Q0NBQjExOURDNDJCOTAwNDNENURCIC8qIFdlYktpdENT
U1Jlc291cmNlVmFsdWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDZDNkNDQUFGMTlEQzQyQjkwMDQzRDVEQiAvKiBXZWJLaXRDU1NSZXNvdXJjZVZhbHVl
LmggKi87IH07CisJCTZDQkZFNEE0MTlFQkYyRDQwMENBMkY5RCAvKiBSZW5kZXJMYXllck1hc2tJ
bWFnZUluZm8uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNkNCRkU0QTIxOUVCRjJENDAwQ0EyRjlEIC8qIFJlbmRlckxheWVyTWFza0ltYWdlSW5mby5j
cHAgKi87IH07CisJCTZDQkZFNEE1MTlFQkYyRDQwMENBMkY5RCAvKiBSZW5kZXJMYXllck1hc2tJ
bWFnZUluZm8uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDZDQkZFNEEzMTlFQkYyRDQwMENBMkY5RCAvKiBSZW5kZXJMYXllck1hc2tJbWFnZUluZm8uaCAq
LzsgfTsKIAkJNkNEREU4RDAxNzcwQkIyMjAwMTZFMDcyIC8qIFJlZ2lvbk92ZXJzZXRTdGF0ZS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkM3MEE4MTQx
NzcwN0M0OTAwOUE0NDZFIC8qIFJlZ2lvbk92ZXJzZXRTdGF0ZS5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTZFMEU1NjlCMTgzQkZGRTYwMEUwRThE
NSAvKiBGbG9hdFJvdW5kZWRSZWN0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDZFMEU1Njk5MTgzQkZGRTYwMEUwRThENSAvKiBGbG9hdFJvdW5kZWRS
ZWN0LmNwcCAqLzsgfTsKIAkJNkUwRTU2OUMxODNCRkZFNjAwRTBFOEQ1IC8qIEZsb2F0Um91bmRl
ZFJlY3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZF
MEU1NjlBMTgzQkZGRTYwMEUwRThENSAvKiBGbG9hdFJvdW5kZWRSZWN0LmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTk0MDQsOSArOTQxMCwxNSBA
QAogCQk2NUY4MDY5NzA1NEQ5Rjg2MDA4QkY3NzYgLyogQmxvY2tFeGNlcHRpb25zLm1tICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBpbmRlbnRXaWR0aCA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gQmxv
Y2tFeGNlcHRpb25zLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB0YWJXaWR0aCA9IDg7IHVz
ZXNUYWJzID0gMDsgfTsKIAkJNjVGRUE4NjgwOTgzM0FERTAwQkVENEFCIC8qIFBhZ2UuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFBhZ2UuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk2QjM0ODA5MjBFRUY1MEQ0MDBBQzFCNDEgLyogTmF0aXZlSW1h
Z2VQdHIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE5hdGl2ZUltYWdlUHRy
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTZDNTY4Q0FFMTlEQUZFQTAwMDQzMENB
MiAvKiBNYXNrSW1hZ2VPcGVyYXRpb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gTWFza0ltYWdlT3BlcmF0aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJNkM1NjhDQUYxOURBRkVBMDAwNDMwQ0EyIC8qIE1hc2tJbWFnZU9wZXJhdGlvbi5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNYXNrSW1hZ2VPcGVyYXRpb24uaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNkM2Mzg4OTNBOTZDQ0VFNTBDOEM5NDZDIC8qIENh
Y2hlZFJlc291cmNlUmVxdWVzdEluaXRpYXRvcnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IENhY2hlZFJlc291cmNlUmVxdWVzdEluaXRpYXRvcnMuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJNkM2Mzg4OTRBOTZDQ0VFNTBDOEM5NDZDIC8qIENhY2hlZFJlc291
cmNlUmVxdWVzdEluaXRpYXRvcnMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IENhY2hlZFJlc291cmNlUmVxdWVzdEluaXRpYXRvcnMuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQk2QzZDQ0FBRTE5REM0MkI5MDA0M0Q1REIgLyogV2ViS2l0Q1NTUmVz
b3VyY2VWYWx1ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJL
aXRDU1NSZXNvdXJjZVZhbHVlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNkM2
Q0NBQUYxOURDNDJCOTAwNDNENURCIC8qIFdlYktpdENTU1Jlc291cmNlVmFsdWUuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViS2l0Q1NTUmVzb3VyY2VWYWx1ZS5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk2QzcwQTgxNDE3NzA3QzQ5MDA5QTQ0NkUgLyogUmVn
aW9uT3ZlcnNldFN0YXRlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlZ2lv
bk92ZXJzZXRTdGF0ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk2Q0JGRTRBMjE5
RUJGMkQ0MDBDQTJGOUQgLyogUmVuZGVyTGF5ZXJNYXNrSW1hZ2VJbmZvLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlbmRlckxheWVyTWFza0ltYWdlSW5mby5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTZDQkZFNEEzMTlFQkYyRDQwMENBMkY5RCAv
KiBSZW5kZXJMYXllck1hc2tJbWFnZUluZm8uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gUmVuZGVyTGF5ZXJNYXNrSW1hZ2VJbmZvLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTZFMEU1Njk5MTgzQkZGRTYwMEUwRThENSAvKiBGbG9hdFJvdW5kZWRSZWN0LmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEZsb2F0Um91bmRlZFJlY3QuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk2RTBFNTY5QTE4M0JGRkU2MDBFMEU4RDUg
LyogRmxvYXRSb3VuZGVkUmVjdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBG
bG9hdFJvdW5kZWRSZWN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTZFMjFDNkJG
MTEyNjMzODUwMEE3QkUwMiAvKiBHcmFwaGljc0NvbnRleHQzRC5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBHcmFwaGljc0NvbnRleHQzRC5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CkBAIC0yMDU5Myw2ICsyMDYwNSw4IEBACiAJCQkJMTQxREMwNEMxNjQ4
MzRCOTAwMzcxRTVBIC8qIExheW91dFJlY3QuY3BwICovLAogCQkJCTE0MURDMDREMTY0ODM0Qjkw
MDM3MUU1QSAvKiBMYXlvdXRSZWN0LmggKi8sCiAJCQkJMTQxREMwNEUxNjQ4MzRCOTAwMzcxRTVB
IC8qIExheW91dFNpemUuaCAqLywKKwkJCQk2QzU2OENBRTE5REFGRUEwMDA0MzBDQTIgLyogTWFz
a0ltYWdlT3BlcmF0aW9uLmNwcCAqLywKKwkJCQk2QzU2OENBRjE5REFGRUEwMDA0MzBDQTIgLyog
TWFza0ltYWdlT3BlcmF0aW9uLmggKi8sCiAJCQkJRTRCNDFFMEMwQ0JGOTBCRDAwQUYyRUNFIC8q
IE1lZGlhUGxheWVyLmNwcCAqLywKIAkJCQlFNEI0MUUwRDBDQkY5MEJEMDBBRjJFQ0UgLyogTWVk
aWFQbGF5ZXIuaCAqLywKIAkJCQkwNzlGNUU0QjBGM0JFQkVBMDA1RTA3ODIgLyogTWVkaWFQbGF5
ZXJQcml2YXRlLmggKi8sCkBAIC0yMjI5OCw2ICsyMjMxMiw4IEBACiAJCQkJMzEwNjAzNkMxNDMy
N0QyRTAwQUJGNEJBIC8qIFdlYktpdENTU0ZpbHRlclZhbHVlLmNwcCAqLywKIAkJCQkzMTA2MDM2
RDE0MzI3RDJFMDBBQkY0QkEgLyogV2ViS2l0Q1NTRmlsdGVyVmFsdWUuaCAqLywKIAkJCQkzMTA2
MDM2RTE0MzI3RDJFMDBBQkY0QkEgLyogV2ViS2l0Q1NTRmlsdGVyVmFsdWUuaWRsICovLAorCQkJ
CTZDNkNDQUFFMTlEQzQyQjkwMDQzRDVEQiAvKiBXZWJLaXRDU1NSZXNvdXJjZVZhbHVlLmNwcCAq
LywKKwkJCQk2QzZDQ0FBRjE5REM0MkI5MDA0M0Q1REIgLyogV2ViS2l0Q1NTUmVzb3VyY2VWYWx1
ZS5oICovLAogCQkJCTMxMjg4RTZFMEUzMDA1RDYwMDM2MTlBRSAvKiBDU1NLZXlmcmFtZVJ1bGUu
Y3BwICovLAogCQkJCTMxMjg4RTZGMEUzMDA1RDYwMDM2MTlBRSAvKiBDU1NLZXlmcmFtZVJ1bGUu
aCAqLywKIAkJCQkzMTZGRTA5MTBFNkNDRDdGMDBCRjYwODggLyogQ1NTS2V5ZnJhbWVSdWxlLmlk
bCAqLywKQEAgLTIyNDUyLDYgKzIyNDY4LDggQEAKIAkJCQkwRjU4MENGOTBGMTJERTlCMDA1MUQ2
ODkgLyogUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmggKi8sCiAJCQkJNTBEMTBEOTcxNTQ1RjU3NjAw
OTZEMjg4IC8qIFJlbmRlckxheWVyRmlsdGVySW5mby5jcHAgKi8sCiAJCQkJNTBEMTBEOTgxNTQ1
RjU3NjAwOTZEMjg4IC8qIFJlbmRlckxheWVyRmlsdGVySW5mby5oICovLAorCQkJCTZDQkZFNEEy
MTlFQkYyRDQwMENBMkY5RCAvKiBSZW5kZXJMYXllck1hc2tJbWFnZUluZm8uY3BwICovLAorCQkJ
CTZDQkZFNEEzMTlFQkYyRDQwMENBMkY5RCAvKiBSZW5kZXJMYXllck1hc2tJbWFnZUluZm8uaCAq
LywKIAkJCQkzQzI0NEZFNUEzNzVBQzYzM0Y4OEJFNkYgLyogUmVuZGVyTGF5ZXJNb2RlbE9iamVj
dC5jcHAgKi8sCiAJCQkJM0MyNDRGRTRBMzc1QUM2MzNGODhCRTZGIC8qIFJlbmRlckxheWVyTW9k
ZWxPYmplY3QuaCAqLywKIAkJCQlCQzMzRkIxQTBGMzBFRTg1MDAyQ0REN0MgLyogUmVuZGVyTGlu
ZUJveExpc3QuY3BwICovLApAQCAtMjM0MzUsNiArMjM0NTMsNyBAQAogCQkJCTMxNkZFMTE0MEU2
RTFEQTcwMEJGNjA4OCAvKiBBbmltYXRpb25Db250cm9sbGVyLmggaW4gSGVhZGVycyAqLywKIAkJ
CQkwRjE1REE4QTBGM0FBRUU3MDAwMENFNDcgLyogQW5pbWF0aW9uQ29udHJvbGxlclByaXZhdGUu
aCBpbiBIZWFkZXJzICovLAogCQkJCTQ5RTkxMkFEMEVGQUM5MDYwMDlEMENBRiAvKiBBbmltYXRp
b25MaXN0LmggaW4gSGVhZGVycyAqLywKKwkJCQk2QzU2OENCMTE5REFGRUEwMDA0MzBDQTIgLyog
TWFza0ltYWdlT3BlcmF0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjU4MEZBRjE0OTgwMEQ0
MDBGQjVCRDggLyogQW5pbWF0aW9uVXRpbGl0aWVzLmggaW4gSGVhZGVycyAqLywKIAkJCQk5MzMw
OURENzA5OUU2NDkyMDA1NkU1ODEgLyogQXBwZW5kTm9kZUNvbW1hbmQuaCBpbiBIZWFkZXJzICov
LAogCQkJCTFBOEY2QkJEMERCNTVDREMwMDFEQjc5NCAvKiBBcHBsaWNhdGlvbkNhY2hlLmggaW4g
SGVhZGVycyAqLywKQEAgLTI1NDQ2LDYgKzI1NDY1LDcgQEAKIAkJCQlDREJFQUVBRDE5RDkyQjZD
MDBCRUJBODggLyogTWVkaWFTZWxlY3Rpb25Hcm91cEFWRk9iakMuaCBpbiBIZWFkZXJzICovLAog
CQkJCTA3MEUwOTE5MTg3NUVFRkMwMDNBMUQzQyAvKiBNZWRpYVNlc3Npb24uaCBpbiBIZWFkZXJz
ICovLAogCQkJCTA3Rjk0NDE2MTg2NEQwNDYwMDVEMzFDQiAvKiBNZWRpYVNlc3Npb25NYW5hZ2Vy
LmggaW4gSGVhZGVycyAqLywKKwkJCQk2Q0JGRTRBNTE5RUJGMkQ0MDBDQTJGOUQgLyogUmVuZGVy
TGF5ZXJNYXNrSW1hZ2VJbmZvLmggaW4gSGVhZGVycyAqLywKIAkJCQkwNzYzOEE5OTE4ODQ0ODcy
MDBFMTVBMUIgLyogTWVkaWFTZXNzaW9uTWFuYWdlcklPUy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
Q0QzQTQ5NUYxN0E5RDAxQjAwMjc0RTQyIC8qIE1lZGlhU291cmNlLmggaW4gSGVhZGVycyAqLywK
IAkJCQlDRDY0MUVCMzE4MThGNUVEMDBFRTRDNDEgLyogTWVkaWFTb3VyY2VQcml2YXRlLmggaW4g
SGVhZGVycyAqLywKQEAgLTI2MDUwLDYgKzI2MDcwLDcgQEAKIAkJCQlDRENGQUJCRDE4QzBBRjc4
MDA2Rjg0NTAgLyogU2VsZWN0aW9uU3VidHJlZVJvb3QuaCBpbiBIZWFkZXJzICovLAogCQkJCUU0
NEI0QkI0MTQxNjUwRDcwMDJCMUQ4QiAvKiBTZWxlY3RvckNoZWNrZXIuaCBpbiBIZWFkZXJzICov
LAogCQkJCTQzMkQzRkU4MThBODY1ODQwMEQ3REMwMyAvKiBTZWxlY3RvckNoZWNrZXJUZXN0RnVu
Y3Rpb25zLmggaW4gSGVhZGVycyAqLywKKwkJCQk2QzZDQ0FCMTE5REM0MkI5MDA0M0Q1REIgLyog
V2ViS2l0Q1NTUmVzb3VyY2VWYWx1ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMjZCOTk5OTcxODA0
RDU0MjAwRDAxMTIxIC8qIFNlbGVjdG9yQ29tcGlsZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTQx
NTA3MTU4MTY4NTA2NzMwMEMzQzdCMyAvKiBTZWxlY3RvckZpbHRlci5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJNDMxMDdCRTIxOENDMTlERTAwQ0MxOEU4IC8qIFNlbGVjdG9yUHNldWRvVHlwZU1hcC5o
IGluIEhlYWRlcnMgKi8sCkBAIC0yNzc1OCw2ICsyNzc3OSw3IEBACiAJCQkJOEExOTU5MzMxNDdF
QTE2RTAwRDFFQTYxIC8qIERPTVdlYktpdE5hbWVkRmxvdy5tbSBpbiBTb3VyY2VzICovLAogCQkJ
CTMxQzBGRjREMEU0Q0VGREQwMDdENkZFNSAvKiBET01XZWJLaXRUcmFuc2l0aW9uRXZlbnQubW0g
aW4gU291cmNlcyAqLywKIAkJCQk4NUM3RjVFODBBQUZCQUZCMDA0MDE0REQgLyogRE9NV2hlZWxF
dmVudC5tbSBpbiBTb3VyY2VzICovLAorCQkJCTZDNkNDQUIwMTlEQzQyQjkwMDQzRDVEQiAvKiBX
ZWJLaXRDU1NSZXNvdXJjZVZhbHVlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTE0MDNCOTk4MDlF
QjEzQUYwMDc5N0M3RiAvKiBET01XaW5kb3cuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRkQ2Nzc3
MzgxOTVDQUYzRDAwNzJFMEQzIC8qIERPTVdpbmRvd0NTUy5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQk1MTdGQkExRTE1MUFCMTdDMDBCNTc5NTkgLyogRE9NV2luZG93RXh0ZW5zaW9uLmNwcCBpbiBT
b3VyY2VzICovLApAQCAtMjg5ODMsNiArMjkwMDUsNyBAQAogCQkJCUNEQjg1OUY3MTYwRDQ4QTQw
MEU1QjA3RiAvKiBNZWRpYUtleUV2ZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUNEQTk4REQ4
MTYwMjVCRUYwMEZFQTNCMSAvKiBNZWRpYUtleU1lc3NhZ2VFdmVudC5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQlDRDFCNEE2NTE2MDc4NkFFMDAyODJERjkgLyogTWVkaWFLZXlOZWVkZWRFdmVudC5j
cHAgaW4gU291cmNlcyAqLywKKwkJCQk2QzU2OENCMDE5REFGRUEwMDA0MzBDQTIgLyogTWFza0lt
YWdlT3BlcmF0aW9uLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUNEQTk4RTBEMTYwM0ZFNEEwMEZF
QTNCMSAvKiBNZWRpYUtleXMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQ0RBOThFMEUxNjAzRkU1
ODAwRkVBM0IxIC8qIE1lZGlhS2V5U2Vzc2lvbi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBOEVB
ODAwOTBBMTk1MTZFMDBBOEVGNUYgLyogTWVkaWFMaXN0LmNwcCBpbiBTb3VyY2VzICovLApAQCAt
MjkwNTEsNiArMjkwNzQsNyBAQAogCQkJCUY1NUIzREM1MTI1MUYxMkQwMDNFRjI2OSAvKiBNb250
aElucHV0VHlwZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk4NTAzMUI0NTBBNDRFRkM3MDBGOTky
RTAgLyogTW91c2VFdmVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5M0VCMzU1RjA5RTM3RkQ2
MDBGNDM3OTkgLyogTW91c2VFdmVudFdpdGhIaXRUZXN0UmVzdWx0cy5jcHAgaW4gU291cmNlcyAq
LywKKwkJCQk2Q0JGRTRBNDE5RUJGMkQ0MDBDQTJGOUQgLyogUmVuZGVyTGF5ZXJNYXNrSW1hZ2VJ
bmZvLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTg1MDMxQjQ3MEE0NEVGQzcwMEY5OTJFMCAvKiBN
b3VzZVJlbGF0ZWRFdmVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5MzMwOURGQjA5OUU2NDky
MDA1NkU1ODEgLyogTW92ZVNlbGVjdGlvbkNvbW1hbmQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
RkRCMTcwMDUxNEEyQkFCMjAwQTJCNUQ5IC8qIE11bHRpQ2hhbm5lbFJlc2FtcGxlci5jcHAgaW4g
U291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NWYWx1ZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFsdWUuY3BwCmluZGV4IGQwMjllYzEuLmE2YzNjZTYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NWYWx1ZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvY3NzL0NTU1ZhbHVlLmNwcApAQCAtNTQsNiArNTQsNyBAQAogI2luY2x1ZGUgIlNW
R0NvbG9yLmgiCiAjaW5jbHVkZSAiU1ZHUGFpbnQuaCIKICNpbmNsdWRlICJXZWJLaXRDU1NGaWx0
ZXJWYWx1ZS5oIgorI2luY2x1ZGUgIldlYktpdENTU1Jlc291cmNlVmFsdWUuaCIKICNpbmNsdWRl
ICJXZWJLaXRDU1NUcmFuc2Zvcm1WYWx1ZS5oIgogCiAjaWYgRU5BQkxFKENTU19HUklEX0xBWU9V
VCkKQEAgLTMxMSw2ICszMTIsOCBAQCBTdHJpbmcgQ1NTVmFsdWU6OmNzc1RleHQoKSBjb25zdAog
ICAgICAgICByZXR1cm4gZG93bmNhc3Q8U1ZHQ29sb3I+KCp0aGlzKS5jdXN0b21DU1NUZXh0KCk7
CiAgICAgY2FzZSBTVkdQYWludENsYXNzOgogICAgICAgICByZXR1cm4gZG93bmNhc3Q8U1ZHUGFp
bnQ+KCp0aGlzKS5jdXN0b21DU1NUZXh0KCk7CisgICAgY2FzZSBXZWJLaXRDU1NSZXNvdXJjZUNs
YXNzOgorICAgICAgICByZXR1cm4gZG93bmNhc3Q8V2ViS2l0Q1NTUmVzb3VyY2VWYWx1ZT4oKnRo
aXMpLmN1c3RvbUNTU1RleHQoKTsKICAgICB9CiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAg
ICAgcmV0dXJuIFN0cmluZygpOwpAQCAtNDIzLDYgKzQyNiw5IEBAIHZvaWQgQ1NTVmFsdWU6OmRl
c3Ryb3koKQogICAgIGNhc2UgU1ZHUGFpbnRDbGFzczoKICAgICAgICAgZGVsZXRlIGRvd25jYXN0
PFNWR1BhaW50Pih0aGlzKTsKICAgICAgICAgcmV0dXJuOworICAgIGNhc2UgV2ViS2l0Q1NTUmVz
b3VyY2VDbGFzczoKKyAgICAgICAgZGVsZXRlIGRvd25jYXN0PFdlYktpdENTU1Jlc291cmNlVmFs
dWU+KHRoaXMpOworICAgICAgICByZXR1cm47CiAgICAgfQogICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ZhbHVlLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTVmFsdWUuaAppbmRleCAwMWVlNjJhLi4zNmMyOTk0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFsdWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTVmFsdWUuaApAQCAtMTAzLDYgKzEwMyw3IEBAIHB1YmxpYzoKICAgICBib29sIGlzU1ZH
Q29sb3IoKSBjb25zdCB7IHJldHVybiBtX2NsYXNzVHlwZSA9PSBTVkdDb2xvckNsYXNzIHx8IG1f
Y2xhc3NUeXBlID09IFNWR1BhaW50Q2xhc3M7IH0KICAgICBib29sIGlzU1ZHUGFpbnQoKSBjb25z
dCB7IHJldHVybiBtX2NsYXNzVHlwZSA9PSBTVkdQYWludENsYXNzOyB9CiAgICAgYm9vbCBpc1Vu
aWNvZGVSYW5nZVZhbHVlKCkgY29uc3QgeyByZXR1cm4gbV9jbGFzc1R5cGUgPT0gVW5pY29kZVJh
bmdlQ2xhc3M7IH0KKyAgICBib29sIGlzV2ViS2l0Q1NTUmVzb3VyY2VWYWx1ZSgpIGNvbnN0IHsg
cmV0dXJuIG1fY2xhc3NUeXBlID09IFdlYktpdENTU1Jlc291cmNlQ2xhc3M7IH0KIAogICAgIGJv
b2wgaXNDU1NPTVNhZmUoKSBjb25zdCB7IHJldHVybiBtX2lzQ1NTT01TYWZlOyB9CiAgICAgYm9v
bCBpc1N1YnR5cGVFeHBvc2VkVG9DU1NPTSgpIGNvbnN0CkBAIC0xNzMsNiArMTc0LDggQEAgcHJv
dGVjdGVkOgogI2lmIEVOQUJMRShDU1NfR1JJRF9MQVlPVVQpCiAgICAgICAgIEdyaWRMaW5lTmFt
ZXNDbGFzcywKICNlbmRpZgorICAgICAgICBXZWJLaXRDU1NSZXNvdXJjZUNsYXNzCisKICAgICAg
ICAgLy8gRG8gbm90IGFwcGVuZCBub24tbGlzdCBjbGFzcyB0eXBlcyBoZXJlLgogICAgIH07CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmNwcAppbmRleCBmMmQ2YmVmLi40NzE5MmIwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuY3BwCkBAIC0xMzUsNiArMTM1LDcgQEAKICNp
bmNsdWRlICJWaXNpdGVkTGlua1N0YXRlLmgiCiAjaW5jbHVkZSAiV2ViS2l0Q1NTRmlsdGVyVmFs
dWUuaCIKICNpbmNsdWRlICJXZWJLaXRDU1NSZWdpb25SdWxlLmgiCisjaW5jbHVkZSAiV2ViS2l0
Q1NTUmVzb3VyY2VWYWx1ZS5oIgogI2luY2x1ZGUgIldlYktpdENTU1RyYW5zZm9ybVZhbHVlLmgi
CiAjaW5jbHVkZSAiV2ViS2l0Rm9udEZhbWlseU5hbWVzLmgiCiAjaW5jbHVkZSAiWE1MTmFtZXMu
aCIKQEAgLTIzNiw2ICsyMzcsNyBAQCBpbmxpbmUgdm9pZCBTdHlsZVJlc29sdmVyOjpTdGF0ZTo6
Y2xlYXIoKQogICAgIG1fcmVnaW9uRm9yU3R5bGluZyA9IG51bGxwdHI7CiAgICAgbV9wZW5kaW5n
SW1hZ2VQcm9wZXJ0aWVzLmNsZWFyKCk7CiAgICAgbV9maWx0ZXJzV2l0aFBlbmRpbmdTVkdEb2N1
bWVudHMuY2xlYXIoKTsKKyAgICBtX21hc2tJbWFnZXNXaXRoUGVuZGluZ1NWR0RvY3VtZW50cy5j
bGVhcigpOwogICAgIG1fY3NzVG9MZW5ndGhDb252ZXJzaW9uRGF0YSA9IENTU1RvTGVuZ3RoQ29u
dmVyc2lvbkRhdGEoKTsKIH0KIApAQCAtMzYyMiw2ICszNjI0LDU3IEBAIGJvb2wgU3R5bGVSZXNv
bHZlcjo6Y3JlYXRlRmlsdGVyT3BlcmF0aW9ucyhDU1NWYWx1ZSogaW5WYWx1ZSwgRmlsdGVyT3Bl
cmF0aW9ucyYKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAorYm9vbCBTdHlsZVJlc29sdmVyOjpjcmVh
dGVNYXNrSW1hZ2VPcGVyYXRpb25zKENTU1ZhbHVlKiBpblZhbHVlLCBWZWN0b3I8UmVmUHRyPE1h
c2tJbWFnZU9wZXJhdGlvbj4+JiBvdXRPcGVyYXRpb25zKQoreworICAgIG91dE9wZXJhdGlvbnMu
Y2xlYXIoKTsKKyAgICAKKyAgICBTdGF0ZSYgc3RhdGUgPSBtX3N0YXRlOworICAgIGlmICghaW5W
YWx1ZSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYgKGlzPENTU1ByaW1pdGl2ZVZh
bHVlPigqaW5WYWx1ZSkpIHsKKyAgICAgICAgQ1NTUHJpbWl0aXZlVmFsdWUmIHByaW1pdGl2ZVZh
bHVlID0gZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KCppblZhbHVlKTsKKyAgICAgICAgaWYg
KHByaW1pdGl2ZVZhbHVlLmdldFZhbHVlSUQoKSA9PSBDU1NWYWx1ZU5vbmUpCisgICAgICAgICAg
ICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAgICBpZiAoIWlzPENTU1ZhbHVlTGlzdD4oKmluVmFs
dWUpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBmb3IgKGF1dG8mIGN1cnJWYWx1ZSA6
IGRvd25jYXN0PENTU1ZhbHVlTGlzdD4oKmluVmFsdWUpKSB7CisgICAgICAgIGlmICghaXM8V2Vi
S2l0Q1NTUmVzb3VyY2VWYWx1ZT4oY3VyclZhbHVlLmdldCgpKSkKKyAgICAgICAgICAgIGNvbnRp
bnVlOworICAgICAgICAKKyAgICAgICAgV2ViS2l0Q1NTUmVzb3VyY2VWYWx1ZSYgbWFza0ltYWdl
VmFsdWUgPSBkb3duY2FzdDxXZWJLaXRDU1NSZXNvdXJjZVZhbHVlPihjdXJyVmFsdWUuZ2V0KCkp
OworICAgICAgICBSZWZQdHI8Q1NTVmFsdWU+IG1hc2tJbm5lclZhbHVlID0gbWFza0ltYWdlVmFs
dWUuaW5uZXJWYWx1ZSgpOworICAgICAgICBSZWZQdHI8TWFza0ltYWdlT3BlcmF0aW9uPiBuZXdN
YXNrSW1hZ2UgPSBudWxscHRyOworICAgICAgICAKKyAgICAgICAgaWYgKGlzPENTU1ByaW1pdGl2
ZVZhbHVlPihtYXNrSW5uZXJWYWx1ZS5nZXQoKSkpIHsKKyAgICAgICAgICAgIFJlZlB0cjxDU1NQ
cmltaXRpdmVWYWx1ZT4gcHJpbWl0aXZlVmFsdWUgPSBkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1
ZT4obWFza0lubmVyVmFsdWUuZ2V0KCkpOworICAgICAgICAgICAgaWYgKHByaW1pdGl2ZVZhbHVl
LT5pc1ZhbHVlSUQoKSAmJiBwcmltaXRpdmVWYWx1ZS0+Z2V0VmFsdWVJRCgpID09IENTU1ZhbHVl
Tm9uZSkKKyAgICAgICAgICAgICAgICBuZXdNYXNrSW1hZ2UgPSBNYXNrSW1hZ2VPcGVyYXRpb246
OmNyZWF0ZSgmbWFza0ltYWdlVmFsdWUsICIiLCAiIiwgZmFsc2UsIG1fc3RhdGUuZG9jdW1lbnQo
KS5jYWNoZWRSZXNvdXJjZUxvYWRlcigpKTsKKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAg
ICAgICAgIFN0cmluZyBjc3NVcmwgPSBwcmltaXRpdmVWYWx1ZS0+Z2V0U3RyaW5nVmFsdWUoKTsK
KyAgICAgICAgICAgICAgICBVUkwgdXJsID0gbV9zdGF0ZS5kb2N1bWVudCgpLmNvbXBsZXRlVVJM
KGNzc1VybCk7CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgYm9vbCBpc0V4dGVy
bmFsRG9jdW1lbnQgPSAoU1ZHVVJJUmVmZXJlbmNlOjppc0V4dGVybmFsVVJJUmVmZXJlbmNlKGNz
c1VybCwgbV9zdGF0ZS5kb2N1bWVudCgpKSk7CisgICAgICAgICAgICAgICAgbmV3TWFza0ltYWdl
ID0gTWFza0ltYWdlT3BlcmF0aW9uOjpjcmVhdGUoJm1hc2tJbWFnZVZhbHVlLCBjc3NVcmwsIHVy
bC5mcmFnbWVudElkZW50aWZpZXIoKSwgaXNFeHRlcm5hbERvY3VtZW50LCBtX3N0YXRlLmRvY3Vt
ZW50KCkuY2FjaGVkUmVzb3VyY2VMb2FkZXIoKSk7CisgICAgICAgICAgICAgICAgaWYgKGlzRXh0
ZXJuYWxEb2N1bWVudCkKKyAgICAgICAgICAgICAgICAgICAgc3RhdGUubWFza0ltYWdlc1dpdGhQ
ZW5kaW5nU1ZHRG9jdW1lbnRzKCkuYXBwZW5kKG5ld01hc2tJbWFnZSk7CisgICAgICAgICAgICB9
CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBSZWZQdHI8U3R5bGVJbWFnZT4gaW1hZ2Ug
PSBzdHlsZUltYWdlKENTU1Byb3BlcnR5V2Via2l0TWFza0ltYWdlLCAqbWFza0lubmVyVmFsdWUp
OworICAgICAgICAgICAgaWYgKGltYWdlLmdldCgpKQorICAgICAgICAgICAgICAgIG5ld01hc2tJ
bWFnZSA9IE1hc2tJbWFnZU9wZXJhdGlvbjo6Y3JlYXRlKGltYWdlKTsKKyAgICAgICAgfQorICAg
ICAgICAKKyAgICAgICAgaWYgKG5ld01hc2tJbWFnZS5nZXQoKSkKKyAgICAgICAgICAgIG91dE9w
ZXJhdGlvbnMuYXBwZW5kKG5ld01hc2tJbWFnZSk7CisgICAgfQorCisgICAgcmV0dXJuIHRydWU7
Cit9CisKIFBhc3NSZWZQdHI8U3R5bGVJbWFnZT4gU3R5bGVSZXNvbHZlcjo6bG9hZFBlbmRpbmdJ
bWFnZShjb25zdCBTdHlsZVBlbmRpbmdJbWFnZSYgcGVuZGluZ0ltYWdlLCBjb25zdCBSZXNvdXJj
ZUxvYWRlck9wdGlvbnMmIG9wdGlvbnMpCiB7CiAgICAgaWYgKGF1dG8gaW1hZ2VWYWx1ZSA9IHBl
bmRpbmdJbWFnZS5jc3NJbWFnZVZhbHVlKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9j
c3MvU3R5bGVSZXNvbHZlci5oIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuaApp
bmRleCA1NWNhMGY2Li5lNTg2N2YwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5
bGVSZXNvbHZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmgKQEAg
LTI4LDYgKzI4LDcgQEAKICNpbmNsdWRlICJEb2N1bWVudFJ1bGVTZXRzLmgiCiAjaW5jbHVkZSAi
SW5zcGVjdG9yQ1NTT01XcmFwcGVycy5oIgogI2luY2x1ZGUgIkxpbmtIYXNoLmgiCisjaW5jbHVk
ZSAiTWFza0ltYWdlT3BlcmF0aW9uLmgiCiAjaW5jbHVkZSAiTWVkaWFRdWVyeUV4cC5oIgogI2lu
Y2x1ZGUgIlJlbmRlclN0eWxlLmgiCiAjaW5jbHVkZSAiUnVsZUZlYXR1cmUuaCIKQEAgLTIzNyw2
ICsyMzgsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBjbGVhckNhY2hlZFByb3BlcnRpZXNBZmZlY3Rl
ZEJ5Vmlld3BvcnRVbml0cygpOwogCiAgICAgYm9vbCBjcmVhdGVGaWx0ZXJPcGVyYXRpb25zKENT
U1ZhbHVlKiBpblZhbHVlLCBGaWx0ZXJPcGVyYXRpb25zJiBvdXRPcGVyYXRpb25zKTsKKyAgICBi
b29sIGNyZWF0ZU1hc2tJbWFnZU9wZXJhdGlvbnMoQ1NTVmFsdWUqIGluVmFsdWUsIFZlY3RvcjxS
ZWZQdHI8TWFza0ltYWdlT3BlcmF0aW9uPj4mIG91dE9wZXJhdGlvbnMpOwogICAgIHZvaWQgbG9h
ZFBlbmRpbmdTVkdEb2N1bWVudHMoKTsKIAogICAgIHZvaWQgbG9hZFBlbmRpbmdSZXNvdXJjZXMo
KTsKQEAgLTM4MCw2ICszODIsNyBAQCBwdWJsaWM6CiAgICAgICAgIFBlbmRpbmdJbWFnZVByb3Bl
cnR5TWFwJiBwZW5kaW5nSW1hZ2VQcm9wZXJ0aWVzKCkgeyByZXR1cm4gbV9wZW5kaW5nSW1hZ2VQ
cm9wZXJ0aWVzOyB9CiAKICAgICAgICAgVmVjdG9yPFJlZlB0cjxSZWZlcmVuY2VGaWx0ZXJPcGVy
YXRpb24+PiYgZmlsdGVyc1dpdGhQZW5kaW5nU1ZHRG9jdW1lbnRzKCkgeyByZXR1cm4gbV9maWx0
ZXJzV2l0aFBlbmRpbmdTVkdEb2N1bWVudHM7IH0KKyAgICAgICAgVmVjdG9yPFJlZlB0cjxNYXNr
SW1hZ2VPcGVyYXRpb24+PiYgbWFza0ltYWdlc1dpdGhQZW5kaW5nU1ZHRG9jdW1lbnRzKCkgeyBy
ZXR1cm4gbV9tYXNrSW1hZ2VzV2l0aFBlbmRpbmdTVkdEb2N1bWVudHM7IH0KIAogICAgICAgICB2
b2lkIHNldExpbmVIZWlnaHRWYWx1ZShDU1NWYWx1ZSogdmFsdWUpIHsgbV9saW5lSGVpZ2h0VmFs
dWUgPSB2YWx1ZTsgfQogICAgICAgICBDU1NWYWx1ZSogbGluZUhlaWdodFZhbHVlKCkgeyByZXR1
cm4gbV9saW5lSGVpZ2h0VmFsdWU7IH0KQEAgLTQyOCw2ICs0MzEsNyBAQCBwdWJsaWM6CiAgICAg
ICAgIFBlbmRpbmdJbWFnZVByb3BlcnR5TWFwIG1fcGVuZGluZ0ltYWdlUHJvcGVydGllczsKIAog
ICAgICAgICBWZWN0b3I8UmVmUHRyPFJlZmVyZW5jZUZpbHRlck9wZXJhdGlvbj4+IG1fZmlsdGVy
c1dpdGhQZW5kaW5nU1ZHRG9jdW1lbnRzOworICAgICAgICBWZWN0b3I8UmVmUHRyPE1hc2tJbWFn
ZU9wZXJhdGlvbj4+IG1fbWFza0ltYWdlc1dpdGhQZW5kaW5nU1ZHRG9jdW1lbnRzOwogCiAgICAg
ICAgIENTU1ZhbHVlKiBtX2xpbmVIZWlnaHRWYWx1ZTsKICAgICAgICAgYm9vbCBtX2ZvbnREaXJ0
eTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9XZWJLaXRDU1NSZXNvdXJjZVZhbHVl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9XZWJLaXRDU1NSZXNvdXJjZVZhbHVlLmNwcApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40ODBiMjkxCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYkNvcmUvY3NzL1dlYktpdENTU1Jlc291cmNlVmFsdWUuY3BwCkBAIC0wLDAg
KzEsNzUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgQWRvYmUgU3lzdGVtcyBJbmNvcnBv
cmF0ZWQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUiAiQVMgSVMiIEFORCBBTlkKKyAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQgSE9MREVSIEJFCisgKiBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksCisgKiBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SCisgKiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YKKyAqIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRgorICog
U1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldlYktp
dENTU1Jlc291cmNlVmFsdWUuaCIKKworI2luY2x1ZGUgIkNTU1BhcnNlci5oIgorI2luY2x1ZGUg
IkNTU1ByaW1pdGl2ZVZhbHVlLmgiCisjaW5jbHVkZSAiQ1NTVmFsdWVMaXN0LmgiCisjaW5jbHVk
ZSA8d3RmL1Bhc3NSZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+
CisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsK
KworV2ViS2l0Q1NTUmVzb3VyY2VWYWx1ZTo6V2ViS2l0Q1NTUmVzb3VyY2VWYWx1ZShQYXNzUmVm
UHRyPENTU1ZhbHVlPiByZXNvdXJjZVZhbHVlKQorICAgIDogQ1NTVmFsdWUoV2ViS2l0Q1NTUmVz
b3VyY2VDbGFzcykKKyAgICAsIG1faW5uZXJWYWx1ZShyZXNvdXJjZVZhbHVlKQoreworfQorCitT
dHJpbmcgV2ViS2l0Q1NTUmVzb3VyY2VWYWx1ZTo6Y3VzdG9tQ1NTVGV4dCgpIGNvbnN0Cit7Cisg
ICAgaWYgKGlzQ1NTVmFsdWVOb25lKCkpCisgICAgICAgIHJldHVybiAibm9uZSI7CisKKyAgICBp
ZiAobV9pbm5lclZhbHVlLmdldCgpKSB7CisgICAgICAgIGlmIChpczxDU1NQcmltaXRpdmVWYWx1
ZT4obV9pbm5lclZhbHVlLmdldCgpKSAmJiBkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4obV9p
bm5lclZhbHVlLmdldCgpKS0+aXNVUkkoKSkgeworICAgICAgICAgICAgU3RyaW5nQnVpbGRlciBy
ZXN1bHQ7CisgICAgICAgICAgICByZXN1bHQuYXBwZW5kTGl0ZXJhbCgidXJsKCIpOworICAgICAg
ICAgICAgcmVzdWx0LmFwcGVuZChxdW90ZUNTU1VSTElmTmVlZGVkKGRvd25jYXN0PENTU1ByaW1p
dGl2ZVZhbHVlPihtX2lubmVyVmFsdWUuZ2V0KCkpLT5nZXRTdHJpbmdWYWx1ZSgpKSk7CisgICAg
ICAgICAgICByZXN1bHQuYXBwZW5kTGl0ZXJhbCgiKSIpOworICAgICAgICAgICAgcmV0dXJuIHJl
c3VsdC50b1N0cmluZygpOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICByZXR1cm4gbV9p
bm5lclZhbHVlLT5jc3NUZXh0KCk7CisgICAgfQorICAgIAorICAgIHJldHVybiAiIjsKK30KKwor
Ym9vbCBXZWJLaXRDU1NSZXNvdXJjZVZhbHVlOjppc0NTU1ZhbHVlTm9uZSgpIGNvbnN0Cit7Cisg
ICAgaWYgKGlzPENTU1ByaW1pdGl2ZVZhbHVlPihtX2lubmVyVmFsdWUuZ2V0KCkpKSB7CisgICAg
ICAgIFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gcHJpbWl0aXZlVmFsdWUgPSBkb3duY2FzdDxD
U1NQcmltaXRpdmVWYWx1ZT4obV9pbm5lclZhbHVlLmdldCgpKTsKKyAgICAgICAgcmV0dXJuIChw
cmltaXRpdmVWYWx1ZS0+aXNWYWx1ZUlEKCkgJiYgcHJpbWl0aXZlVmFsdWUtPmdldFZhbHVlSUQo
KSA9PSBDU1NWYWx1ZU5vbmUpOworICAgIH0KKworICAgIHJldHVybiBmYWxzZTsKK30KKworfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1dlYktpdENTU1Jlc291cmNlVmFsdWUuaCBi
L1NvdXJjZS9XZWJDb3JlL2Nzcy9XZWJLaXRDU1NSZXNvdXJjZVZhbHVlLmgKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDU3N2M0OQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9XZWJLaXRDU1NSZXNvdXJjZVZhbHVlLmgKQEAgLTAsMCArMSw1NSBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxNCBBZG9iZSBTeXN0ZW1zIEluY29ycG9yYXRlZC4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUK
KyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgVEhFIENPUFlSSUdIVCBIT0xERVIgQkUKKyAqIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwKKyAqIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IK
KyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IKKyAqIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRgorICogVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GCisgKiBTVUNIIERBTUFH
RS4KKyAqLworCisjaWZuZGVmIFdlYktpdENTU1Jlc291cmNlVmFsdWVfaAorI2RlZmluZSBXZWJL
aXRDU1NSZXNvdXJjZVZhbHVlX2gKKworI2luY2x1ZGUgIkNTU1ZhbHVlLmgiCisjaW5jbHVkZSA8
d3RmL1Bhc3NSZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CisKK25hbWVzcGFjZSBX
ZWJDb3JlIHsKKworY2xhc3MgV2ViS2l0Q1NTUmVzb3VyY2VWYWx1ZSA6IHB1YmxpYyBDU1NWYWx1
ZSB7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NSZWY8V2ViS2l0Q1NTUmVzb3VyY2VWYWx1ZT4g
Y3JlYXRlKFBhc3NSZWZQdHI8Q1NTVmFsdWU+IHJlc291cmNlVmFsdWUpCisgICAgeworICAgICAg
ICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJLaXRDU1NSZXNvdXJjZVZhbHVlKHJlc291cmNlVmFs
dWUpKTsKKyAgICB9CisKKyAgICBTdHJpbmcgY3VzdG9tQ1NTVGV4dCgpIGNvbnN0OworICAgIFBh
c3NSZWZQdHI8Q1NTVmFsdWU+IGlubmVyVmFsdWUoKSB7IHJldHVybiBtX2lubmVyVmFsdWU7IH07
CisgICAgYm9vbCBpc0NTU1ZhbHVlTm9uZSgpIGNvbnN0OworcHJpdmF0ZToKKyAgICBXZWJLaXRD
U1NSZXNvdXJjZVZhbHVlKFBhc3NSZWZQdHI8Q1NTVmFsdWU+IHJlc291cmNlVmFsdWUpOworICAg
IFJlZlB0cjxDU1NWYWx1ZT4gbV9pbm5lclZhbHVlOworfTsKKworfQorCitTUEVDSUFMSVpFX1RZ
UEVfVFJBSVRTX0NTU19WQUxVRShXZWJLaXRDU1NSZXNvdXJjZVZhbHVlLCBpc1dlYktpdENTU1Jl
c291cmNlVmFsdWUoKSkKKworI2VuZGlmIC8vIFdlYktpdENTU1Jlc291cmNlVmFsdWVfaApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlTG9hZGVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5j
cHAKaW5kZXggMzY5MmY4ZS4uZTYzMDU2NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VMb2FkZXIuY3BwCkBAIC03NTksNiArNzU5LDE0IEBA
IHZvaWQgQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OnJlbW92ZUNhY2hlZFJlc291cmNlKENhY2hlZFJl
c291cmNlKiByZXNvdXJjZSkgY29uc3QKICAgICBtX2RvY3VtZW50UmVzb3VyY2VzLnJlbW92ZShy
ZXNvdXJjZS0+dXJsKCkpOwogfQogCit2b2lkIENhY2hlZFJlc291cmNlTG9hZGVyOjphZGRDYWNo
ZWRSZXNvdXJjZShDYWNoZWRSZXNvdXJjZSogcmVzb3VyY2UpCit7CisgICAgbV9kb2N1bWVudFJl
c291cmNlcy5zZXQocmVzb3VyY2UtPnVybCgpLCByZXNvdXJjZSk7CisKKyAgICBpZiAoIW1lbW9y
eUNhY2hlKCkuYWRkKHJlc291cmNlKSkKKyAgICAgICAgcmVzb3VyY2UtPnNldE93bmluZ0NhY2hl
ZFJlc291cmNlTG9hZGVyKHRoaXMpOworfQorCiB2b2lkIENhY2hlZFJlc291cmNlTG9hZGVyOjps
b2FkRG9uZShDYWNoZWRSZXNvdXJjZSogcmVzb3VyY2UsIGJvb2wgc2hvdWxkUGVyZm9ybVBvc3RM
b2FkQWN0aW9ucykKIHsKICAgICBSZWZQdHI8RG9jdW1lbnRMb2FkZXI+IHByb3RlY3REb2N1bWVu
dExvYWRlcihtX2RvY3VtZW50TG9hZGVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2NhY2hlL0NhY2hlZFJlc291cmNlTG9hZGVyLmgKaW5kZXggNzk1OGU2Mi4uM2MwZWE1NSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlTG9hZGVy
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlTG9hZGVy
LmgKQEAgLTExNCw2ICsxMTQsNyBAQCBwdWJsaWM6CiAgICAgU2Vzc2lvbklEIHNlc3Npb25JRCgp
IGNvbnN0OwogCiAgICAgdm9pZCByZW1vdmVDYWNoZWRSZXNvdXJjZShDYWNoZWRSZXNvdXJjZSop
IGNvbnN0OworICAgIHZvaWQgYWRkQ2FjaGVkUmVzb3VyY2UoQ2FjaGVkUmVzb3VyY2UqKTsKIAog
ICAgIHZvaWQgbG9hZERvbmUoQ2FjaGVkUmVzb3VyY2UqLCBib29sIHNob3VsZFBlcmZvcm1Qb3N0
TG9hZEFjdGlvbnMgPSB0cnVlKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2NhY2hlL0NhY2hlZFNWR0RvY3VtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNo
ZS9DYWNoZWRTVkdEb2N1bWVudC5jcHAKaW5kZXggYTUyMzAyMC4uYmFiZTkyYiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0RvY3VtZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1lbnQuY3BwCkBAIC0y
Myw2ICsyMywxMyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkNhY2hlZFNWR0Rv
Y3VtZW50LmgiCiAKKyNpbmNsdWRlICJEb2N1bWVudExvYWRlci5oIgorI2luY2x1ZGUgIkVtcHR5
Q2xpZW50cy5oIgorI2luY2x1ZGUgIkZyYW1lVmlldy5oIgorI2luY2x1ZGUgIk1haW5GcmFtZS5o
IgorI2luY2x1ZGUgIlBhZ2UuaCIKKyNpbmNsdWRlICJQYWdlQ29uZmlndXJhdGlvbi5oIgorI2lu
Y2x1ZGUgIlNldHRpbmdzLmgiCiAjaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKQEAgLTMwLDYgKzM3LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogQ2FjaGVk
U1ZHRG9jdW1lbnQ6OkNhY2hlZFNWR0RvY3VtZW50KGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVx
dWVzdCwgU2Vzc2lvbklEIHNlc3Npb25JRCkKICAgICA6IENhY2hlZFJlc291cmNlKHJlcXVlc3Qs
IFNWR0RvY3VtZW50UmVzb3VyY2UsIHNlc3Npb25JRCkKICAgICAsIG1fZGVjb2RlcihUZXh0UmVz
b3VyY2VEZWNvZGVyOjpjcmVhdGUoImFwcGxpY2F0aW9uL3htbCIpKQorICAgICwgbV9zaG91bGRD
cmVhdGVGcmFtZUZvckRvY3VtZW50KHRydWUpCisgICAgLCBtX2NhblJldXNlUmVzb3VyY2UodHJ1
ZSkKIHsKICAgICBzZXRBY2NlcHQoImltYWdlL3N2Zyt4bWwiKTsKIH0KQEAgLTUxLDkgKzYwLDE3
IEBAIFN0cmluZyBDYWNoZWRTVkdEb2N1bWVudDo6ZW5jb2RpbmcoKSBjb25zdAogdm9pZCBDYWNo
ZWRTVkdEb2N1bWVudDo6ZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIqIGRhdGEpCiB7CiAgICAg
aWYgKGRhdGEpIHsKLSAgICAgICAgLy8gV2UgZG9uJ3QgbmVlZCB0byBjcmVhdGUgYSBuZXcgZnJh
bWUgYmVjYXVzZSB0aGUgbmV3IGRvY3VtZW50IGJlbG9uZ3MgdG8gdGhlIHBhcmVudCBVc2VFbGVt
ZW50LgotICAgICAgICBtX2RvY3VtZW50ID0gU1ZHRG9jdW1lbnQ6OmNyZWF0ZShudWxscHRyLCBy
ZXNwb25zZSgpLnVybCgpKTsKLSAgICAgICAgbV9kb2N1bWVudC0+c2V0Q29udGVudChtX2RlY29k
ZXItPmRlY29kZUFuZEZsdXNoKGRhdGEtPmRhdGEoKSwgZGF0YS0+c2l6ZSgpKSk7CisgICAgICAg
IC8vIEluIGNlcnRhaW4gc2l0dWF0aW9ucyAobGlrZSB0aGUgc2NlbmFyaW8gd2hlbiB0aGlzIGRv
Y3VtZW50IGJlbG9uZ3MgdG8gYW4gVXNlRWxlbWVudCkgd2UgZG9uJ3QgbmVlZCB0byBjcmVhdGUg
YSBmcmFtZS4KKyAgICAgICAgaWYgKG1fc2hvdWxkQ3JlYXRlRnJhbWVGb3JEb2N1bWVudCkgewor
ICAgICAgICAgICAgUGFnZUNvbmZpZ3VyYXRpb24gcGFnZUNvbmZpZ3VyYXRpb247CisgICAgICAg
ICAgICBmaWxsV2l0aEVtcHR5Q2xpZW50cyhwYWdlQ29uZmlndXJhdGlvbik7CisgICAgICAgICAg
ICAKKyAgICAgICAgICAgIG1fcGFnZSA9IHN0ZDo6dW5pcXVlX3B0cjxQYWdlPihQYWdlOjpjcmVh
dGVQYWdlRnJvbUJ1ZmZlcihwYWdlQ29uZmlndXJhdGlvbiwgZGF0YSwgImltYWdlL3N2Zyt4bWwi
LCBmYWxzZSwgdHJ1ZSkpOworICAgICAgICAgICAgbV9kb2N1bWVudCA9IGRvd25jYXN0PFNWR0Rv
Y3VtZW50PihtX3BhZ2UtPm1haW5GcmFtZSgpLmRvY3VtZW50KCkpOworICAgICAgICB9IGVsc2Ug
eworICAgICAgICAgICAgbV9kb2N1bWVudCA9IFNWR0RvY3VtZW50OjpjcmVhdGUobnVsbHB0ciwg
cmVzcG9uc2UoKS51cmwoKSk7CisgICAgICAgICAgICBtX2RvY3VtZW50LT5zZXRDb250ZW50KG1f
ZGVjb2Rlci0+ZGVjb2RlQW5kRmx1c2goZGF0YS0+ZGF0YSgpLCBkYXRhLT5zaXplKCkpKTsKKyAg
ICAgICAgfQogICAgIH0KICAgICBDYWNoZWRSZXNvdXJjZTo6ZmluaXNoTG9hZGluZyhkYXRhKTsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdEb2N1
bWVudC5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0RvY3VtZW50LmgK
aW5kZXggYTc5MWNkOC4uZDRhN2E1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2NhY2hlL0NhY2hlZFNWR0RvY3VtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Nh
Y2hlL0NhY2hlZFNWR0RvY3VtZW50LmgKQEAgLTM2LDYgKzM2LDkgQEAgcHVibGljOgogICAgIHZp
cnR1YWwgfkNhY2hlZFNWR0RvY3VtZW50KCk7CiAKICAgICBTVkdEb2N1bWVudCogZG9jdW1lbnQo
KSBjb25zdCB7IHJldHVybiBtX2RvY3VtZW50LmdldCgpOyB9CisgICAgdm9pZCBzZXRTaG91bGRD
cmVhdGVGcmFtZUZvckRvY3VtZW50KGJvb2wgc2hvdWxkQ3JlYXRlKSB7IG1fc2hvdWxkQ3JlYXRl
RnJhbWVGb3JEb2N1bWVudCA9IHNob3VsZENyZWF0ZTsgfQorICAgIHZpcnR1YWwgYm9vbCBjYW5S
ZXVzZShjb25zdCBSZXNvdXJjZVJlcXVlc3QmKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX2Nh
blJldXNlUmVzb3VyY2U7IH0KKyAgICB2b2lkIHNldENhblJldXNlKGJvb2wgY2FuUmV1c2VSZXNv
dXJjZSkgeyBtX2NhblJldXNlUmVzb3VyY2UgPSBjYW5SZXVzZVJlc291cmNlOyB9OwogCiBwcml2
YXRlOgogICAgIHZpcnR1YWwgYm9vbCBtYXlUcnlSZXBsYWNlRW5jb2RlZERhdGEoKSBjb25zdCBv
dmVycmlkZSB7IHJldHVybiB0cnVlOyB9CkBAIC00NSw2ICs0OCw5IEBAIHByaXZhdGU6CiAKICAg
ICBSZWZQdHI8U1ZHRG9jdW1lbnQ+IG1fZG9jdW1lbnQ7CiAgICAgUmVmUHRyPFRleHRSZXNvdXJj
ZURlY29kZXI+IG1fZGVjb2RlcjsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8UGFnZT4gbV9wYWdlOwor
ICAgIHVuc2lnbmVkIG1fc2hvdWxkQ3JlYXRlRnJhbWVGb3JEb2N1bWVudCA6IDE7CisgICAgdW5z
aWduZWQgbV9jYW5SZXVzZVJlc291cmNlIDogMTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdEb2N1
bWVudFJlZmVyZW5jZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZH
RG9jdW1lbnRSZWZlcmVuY2UuY3BwCmluZGV4IDA2ZjNhYjguLmI2YjQ2MjYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdEb2N1bWVudFJlZmVyZW5jZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0RvY3VtZW50UmVm
ZXJlbmNlLmNwcApAQCAtMzQsMTcgKzM0LDIzIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAot
Q2FjaGVkU1ZHRG9jdW1lbnRSZWZlcmVuY2U6OkNhY2hlZFNWR0RvY3VtZW50UmVmZXJlbmNlKGNv
bnN0IFN0cmluZyYgdXJsKQorQ2FjaGVkU1ZHRG9jdW1lbnRSZWZlcmVuY2U6OkNhY2hlZFNWR0Rv
Y3VtZW50UmVmZXJlbmNlKGNvbnN0IFN0cmluZyYgdXJsLCBDYWNoZWRTVkdEb2N1bWVudENsaWVu
dCogYWRkaXRpb25hbERvY3VtZW50Q2xpZW50LCBib29sIGNhblJldXNlUmVzb3VyY2UpCiAgICAg
OiBtX3VybCh1cmwpCiAgICAgLCBtX2RvY3VtZW50KDApCiAgICAgLCBtX2xvYWRSZXF1ZXN0ZWQo
ZmFsc2UpCisgICAgLCBtX2FkZGl0aW9uYWxEb2N1bWVudENsaWVudChhZGRpdGlvbmFsRG9jdW1l
bnRDbGllbnQpCisgICAgLCBtX2NhblJldXNlUmVzb3VyY2UoY2FuUmV1c2VSZXNvdXJjZSkKIHsK
IH0KIAogQ2FjaGVkU1ZHRG9jdW1lbnRSZWZlcmVuY2U6On5DYWNoZWRTVkdEb2N1bWVudFJlZmVy
ZW5jZSgpCiB7Ci0gICAgaWYgKG1fZG9jdW1lbnQpCisgICAgaWYgKG1fZG9jdW1lbnQpIHsKICAg
ICAgICAgbV9kb2N1bWVudC0+cmVtb3ZlQ2xpZW50KHRoaXMpOworICAgICAgICAKKyAgICAgICAg
aWYgKG1fYWRkaXRpb25hbERvY3VtZW50Q2xpZW50KQorICAgICAgICAgICAgbV9kb2N1bWVudC0+
cmVtb3ZlQ2xpZW50KG1fYWRkaXRpb25hbERvY3VtZW50Q2xpZW50KTsKKyAgICB9CiB9CiAKIHZv
aWQgQ2FjaGVkU1ZHRG9jdW1lbnRSZWZlcmVuY2U6OmxvYWQoQ2FjaGVkUmVzb3VyY2VMb2FkZXIq
IGxvYWRlcikKQEAgLTU2LDggKzYyLDEzIEBAIHZvaWQgQ2FjaGVkU1ZHRG9jdW1lbnRSZWZlcmVu
Y2U6OmxvYWQoQ2FjaGVkUmVzb3VyY2VMb2FkZXIqIGxvYWRlcikKICAgICBDYWNoZWRSZXNvdXJj
ZVJlcXVlc3QgcmVxdWVzdChSZXNvdXJjZVJlcXVlc3QobG9hZGVyLT5kb2N1bWVudCgpLT5jb21w
bGV0ZVVSTChtX3VybCkpKTsKICAgICByZXF1ZXN0LnNldEluaXRpYXRvcihjYWNoZWRSZXNvdXJj
ZVJlcXVlc3RJbml0aWF0b3JzKCkuY3NzKTsKICAgICBtX2RvY3VtZW50ID0gbG9hZGVyLT5yZXF1
ZXN0U1ZHRG9jdW1lbnQocmVxdWVzdCk7Ci0gICAgaWYgKG1fZG9jdW1lbnQpCisgICAgaWYgKG1f
ZG9jdW1lbnQpIHsKKyAgICAgICAgbV9kb2N1bWVudC0+c2V0Q2FuUmV1c2UobV9jYW5SZXVzZVJl
c291cmNlKTsKICAgICAgICAgbV9kb2N1bWVudC0+YWRkQ2xpZW50KHRoaXMpOworICAgICAgICAK
KyAgICAgICAgaWYgKG1fYWRkaXRpb25hbERvY3VtZW50Q2xpZW50KQorICAgICAgICAgICAgbV9k
b2N1bWVudC0+YWRkQ2xpZW50KG1fYWRkaXRpb25hbERvY3VtZW50Q2xpZW50KTsKKyAgICB9CiAK
ICAgICBtX2xvYWRSZXF1ZXN0ZWQgPSB0cnVlOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0RvY3VtZW50UmVmZXJlbmNlLmggYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1lbnRSZWZlcmVuY2UuaAppbmRleCA1ZGEz
ZWVjLi40MWY0MWRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2Fj
aGVkU1ZHRG9jdW1lbnRSZWZlcmVuY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2Fj
aGUvQ2FjaGVkU1ZHRG9jdW1lbnRSZWZlcmVuY2UuaApAQCAtMzcsNyArMzcsNyBAQCBjbGFzcyBD
YWNoZWRSZXNvdXJjZUxvYWRlcjsKIAogY2xhc3MgQ2FjaGVkU1ZHRG9jdW1lbnRSZWZlcmVuY2Ug
OiBwdWJsaWMgQ2FjaGVkU1ZHRG9jdW1lbnRDbGllbnQgewogcHVibGljOgotICAgIENhY2hlZFNW
R0RvY3VtZW50UmVmZXJlbmNlKGNvbnN0IFN0cmluZyYpOworICAgIENhY2hlZFNWR0RvY3VtZW50
UmVmZXJlbmNlKGNvbnN0IFN0cmluZyYgdXJsLCBDYWNoZWRTVkdEb2N1bWVudENsaWVudCogYWRk
aXRpb25hbERvY3VtZW50Q2xpZW50ID0gbnVsbHB0ciwgYm9vbCBjYW5SZXVzZVJlc291cmNlID0g
dHJ1ZSk7CiAKICAgICB2aXJ0dWFsIH5DYWNoZWRTVkdEb2N1bWVudFJlZmVyZW5jZSgpOwogCkBA
IC01MCw2ICs1MCw4IEBAIHByaXZhdGU6CiAgICAgU3RyaW5nIG1fdXJsOwogICAgIENhY2hlZFJl
c291cmNlSGFuZGxlPENhY2hlZFNWR0RvY3VtZW50PiBtX2RvY3VtZW50OwogICAgIGJvb2wgbV9s
b2FkUmVxdWVzdGVkOworICAgIENhY2hlZFNWR0RvY3VtZW50Q2xpZW50KiBtX2FkZGl0aW9uYWxE
b2N1bWVudENsaWVudDsKKyAgICBib29sIG1fY2FuUmV1c2VSZXNvdXJjZTsKIH07CiAKIH07CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0ZyYW1lVmlldy5jcHAKaW5kZXggODM0ZTllOC4uMjBmN2RiOSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvRnJhbWVWaWV3LmNwcApAQCAtNDM4Miw2ICs0MzgyLDE0IEBAIGJvb2wgRnJhbWVWaWV3
Ojppc0ZsaXBwZWREb2N1bWVudCgpIGNvbnN0CiAgICAgcmV0dXJuIHJlbmRlclZpZXctPnN0eWxl
KCkuaXNGbGlwcGVkQmxvY2tzV3JpdGluZ01vZGUoKTsKIH0KIAorYm9vbCBGcmFtZVZpZXc6Omlz
U1ZHRG9jdW1lbnQoKSBjb25zdAoreworICAgIGlmIChmcmFtZSgpLmRvY3VtZW50KCkpCisgICAg
ICAgIHJldHVybiBmcmFtZSgpLmRvY3VtZW50KCktPmlzU1ZHRG9jdW1lbnQoKTsKKyAgICAKKyAg
ICByZXR1cm4gZmFsc2U7Cit9CisKIHZvaWQgRnJhbWVWaWV3Ojpub3RpZnlXaWRnZXRzSW5BbGxG
cmFtZXMoV2lkZ2V0Tm90aWZpY2F0aW9uIG5vdGlmaWNhdGlvbikKIHsKICAgICBmb3IgKEZyYW1l
KiBmcmFtZSA9IG1fZnJhbWUuZ2V0KCk7IGZyYW1lOyBmcmFtZSA9IGZyYW1lLT50cmVlKCkudHJh
dmVyc2VOZXh0KG1fZnJhbWUuZ2V0KCkpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL0ZyYW1lVmlldy5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuaAppbmRleCBm
NWI1ZTVkLi5iNTRjZjFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmll
dy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmgKQEAgLTUyNiw2ICs1MjYs
NyBAQCBwcm90ZWN0ZWQ6CiAKICAgICB2aXJ0dWFsIGJvb2wgaXNWZXJ0aWNhbERvY3VtZW50KCkg
Y29uc3Qgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCBib29sIGlzRmxpcHBlZERvY3VtZW50KCkgY29u
c3Qgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBib29sIGlzU1ZHRG9jdW1lbnQoKSBjb25zdCBvdmVy
cmlkZTsKIAogcHJpdmF0ZToKICAgICBleHBsaWNpdCBGcmFtZVZpZXcoRnJhbWUmKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L1BhZ2UuY3BwCmluZGV4IDQ5ZDRjMWEuLjkxYTdmMWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcApAQCAt
MjksNiArMjksNyBAQAogI2luY2x1ZGUgIkNsaWVudFJlY3RMaXN0LmgiCiAjaW5jbHVkZSAiQ29u
dGV4dE1lbnVDbGllbnQuaCIKICNpbmNsdWRlICJDb250ZXh0TWVudUNvbnRyb2xsZXIuaCIKKyNp
bmNsdWRlICJEb2N1bWVudExvYWRlci5oIgogI2luY2x1ZGUgIkRvY3VtZW50TWFya2VyQ29udHJv
bGxlci5oIgogI2luY2x1ZGUgIkRvY3VtZW50U3R5bGVTaGVldENvbGxlY3Rpb24uaCIKICNpbmNs
dWRlICJEcmFnQ29udHJvbGxlci5oIgpAQCAtMjc0LDYgKzI3NSwzMyBAQCBQYWdlOjp+UGFnZSgp
CiAgICAgICAgIG1fdmlzaXRlZExpbmtTdG9yZS0+cmVtb3ZlUGFnZSgqdGhpcyk7CiB9CiAKK1Bh
Z2UqIFBhZ2U6OmNyZWF0ZVBhZ2VGcm9tQnVmZmVyKFBhZ2VDb25maWd1cmF0aW9uJiBwYWdlQ29u
ZmlndXJhdGlvbiwgY29uc3QgU2hhcmVkQnVmZmVyKiBidWZmZXIsIGNvbnN0IFN0cmluZyYgbWlt
ZVR5cGUsIGJvb2wgY2FuSGF2ZVNjcm9sbGJhcnMsIGJvb2wgdHJhbnNwYXJlbnQpCit7CisgICAg
QVNTRVJUKGJ1ZmZlcik7CisgICAgCisgICAgUGFnZSogbmV3UGFnZSA9IG5ldyBQYWdlKHBhZ2VD
b25maWd1cmF0aW9uKTsKKyAgICBuZXdQYWdlLT5zZXR0aW5ncygpLnNldE1lZGlhRW5hYmxlZChm
YWxzZSk7CisgICAgbmV3UGFnZS0+c2V0dGluZ3MoKS5zZXRTY3JpcHRFbmFibGVkKGZhbHNlKTsK
KyAgICBuZXdQYWdlLT5zZXR0aW5ncygpLnNldFBsdWdpbnNFbmFibGVkKGZhbHNlKTsKKyAgICAK
KyAgICBGcmFtZSYgZnJhbWUgPSBuZXdQYWdlLT5tYWluRnJhbWUoKTsKKyAgICBmcmFtZS5zZXRW
aWV3KEZyYW1lVmlldzo6Y3JlYXRlKGZyYW1lKSk7CisgICAgZnJhbWUuaW5pdCgpOworICAgIEZy
YW1lTG9hZGVyJiBsb2FkZXIgPSBmcmFtZS5sb2FkZXIoKTsKKyAgICBsb2FkZXIuZm9yY2VTYW5k
Ym94RmxhZ3MoU2FuZGJveEFsbCk7CisgICAgCisgICAgZnJhbWUudmlldygpLT5zZXRDYW5IYXZl
U2Nyb2xsYmFycyhjYW5IYXZlU2Nyb2xsYmFycyk7CisgICAgZnJhbWUudmlldygpLT5zZXRUcmFu
c3BhcmVudCh0cmFuc3BhcmVudCk7CisgICAgCisgICAgQVNTRVJUKGxvYWRlci5hY3RpdmVEb2N1
bWVudExvYWRlcigpKTsgLy8gRG9jdW1lbnRMb2FkZXIgc2hvdWxkIGhhdmUgYmVlbiBjcmVhdGVk
IGJ5IGZyYW1lLT5pbml0KCkuCisgICAgbG9hZGVyLmFjdGl2ZURvY3VtZW50TG9hZGVyKCktPndy
aXRlcigpLnNldE1JTUVUeXBlKG1pbWVUeXBlKTsKKyAgICBsb2FkZXIuYWN0aXZlRG9jdW1lbnRM
b2FkZXIoKS0+d3JpdGVyKCkuYmVnaW4oVVJMKCkpOyAvLyBjcmVhdGUgdGhlIGVtcHR5IGRvY3Vt
ZW50CisgICAgbG9hZGVyLmFjdGl2ZURvY3VtZW50TG9hZGVyKCktPndyaXRlcigpLmFkZERhdGEo
YnVmZmVyLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpKTsKKyAgICBsb2FkZXIuYWN0aXZlRG9jdW1l
bnRMb2FkZXIoKS0+d3JpdGVyKCkuZW5kKCk7CisgICAgCisgICAgcmV0dXJuIG5ld1BhZ2U7Cit9
CisKIHZvaWQgUGFnZTo6Y2xlYXJQcmV2aW91c0l0ZW1Gcm9tQWxsUGFnZXMoSGlzdG9yeUl0ZW0q
IGl0ZW0pCiB7CiAgICAgaWYgKCFhbGxQYWdlcykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvUGFnZS5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmgKaW5kZXggY2U3YTJmNy4u
NjI5MDA4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmgKQEAgLTEwNyw2ICsxMDcsNyBAQCBjbGFzcyBWaWV3U3Rh
dGVDaGFuZ2VPYnNlcnZlcjsKIGNsYXNzIFZpc2l0ZWRMaW5rU3RvcmU7CiAKIHR5cGVkZWYgdWlu
dDY0X3QgTGlua0hhc2g7CitjbGFzcyBTaGFyZWRCdWZmZXI7CiAKIGVudW0gRmluZERpcmVjdGlv
biB7IEZpbmREaXJlY3Rpb25Gb3J3YXJkLCBGaW5kRGlyZWN0aW9uQmFja3dhcmQgfTsKIApAQCAt
MTI0LDYgKzEyNSw4IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCB+UGFnZSgpOwogCiAg
ICAgV0VCQ09SRV9FWFBPUlQgdWludDY0X3QgcmVuZGVyVHJlZVNpemUoKSBjb25zdDsKKyAgICAK
KyAgICBzdGF0aWMgUGFnZSogY3JlYXRlUGFnZUZyb21CdWZmZXIoUGFnZUNvbmZpZ3VyYXRpb24m
LCBjb25zdCBTaGFyZWRCdWZmZXIqLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBib29sIGNhbkhh
dmVTY3JvbGxiYXJzLCBib29sIHRyYW5zcGFyZW50KTsKIAogICAgIHZvaWQgc2V0TmVlZHNSZWNh
bGNTdHlsZUluQWxsRnJhbWVzKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL1Njcm9sbFZpZXcuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbFZpZXcuaApp
bmRleCBmMmVmNTkxLi4xZjRlMmM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9TY3JvbGxWaWV3LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsVmlldy5o
CkBAIC00MTAsNiArNDEwLDcgQEAgcHJvdGVjdGVkOgogICAgIC8vIFN1YmNsYXNzZWQgYnkgRnJh
bWVWaWV3IHRvIGNoZWNrIHRoZSB3cml0aW5nLW1vZGUgb2YgdGhlIGRvY3VtZW50LgogICAgIHZp
cnR1YWwgYm9vbCBpc1ZlcnRpY2FsRG9jdW1lbnQoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CiAg
ICAgdmlydHVhbCBib29sIGlzRmxpcHBlZERvY3VtZW50KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7
IH0KKyAgICB2aXJ0dWFsIGJvb2wgaXNTVkdEb2N1bWVudCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNl
OyB9CiAKICAgICAvLyBDYWxsZWQgdG8gdXBkYXRlIHRoZSBzY3JvbGxiYXJzIHRvIGFjY3VyYXRl
bHkgcmVmbGVjdCB0aGUgc3RhdGUgb2YgdGhlIHZpZXcuCiAgICAgdm9pZCB1cGRhdGVTY3JvbGxi
YXJzKGNvbnN0IEludFNpemUmIGRlc2lyZWRPZmZzZXQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWFza0ltYWdlT3BlcmF0aW9uLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01hc2tJbWFnZU9wZXJhdGlvbi5jcHAKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDMzYzNlMQotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01hc2tJbWFnZU9wZXJhdGlvbi5jcHAKQEAg
LTAsMCArMSwyNDAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgQWRvYmUgU3lzdGVtcyBJ
bmNvcnBvcmF0ZWQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUiAiQVMgSVMiIEFORCBB
TlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQgSE9MREVSIEJFCisgKiBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksCisg
KiBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SCisgKiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YKKyAqIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RgorICogU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUg
Ik1hc2tJbWFnZU9wZXJhdGlvbi5oIgorCisjaW5jbHVkZSAiQ2FjaGVkSW1hZ2UuaCIKKyNpbmNs
dWRlICJDYWNoZWRTVkdEb2N1bWVudC5oIgorI2luY2x1ZGUgIlJlbmRlckJveE1vZGVsT2JqZWN0
LmgiCisjaW5jbHVkZSAiUmVuZGVyU1ZHUmVzb3VyY2VNYXNrZXIuaCIKKyNpbmNsdWRlICJTVkdE
b2N1bWVudC5oIgorI2luY2x1ZGUgIlNWR01hc2tFbGVtZW50LmgiCisjaW5jbHVkZSAiU1ZHU1ZH
RWxlbWVudC5oIgorI2luY2x1ZGUgIlN0eWxlQ2FjaGVkSW1hZ2UuaCIKKyNpbmNsdWRlICJTdWJy
ZXNvdXJjZUxvYWRlci5oIgorI2luY2x1ZGUgIldlYktpdENTU1Jlc291cmNlVmFsdWUuaCIKKwor
bmFtZXNwYWNlIFdlYkNvcmUgeworCitQYXNzUmVmUHRyPE1hc2tJbWFnZU9wZXJhdGlvbj4gTWFz
a0ltYWdlT3BlcmF0aW9uOjpjcmVhdGUoUGFzc1JlZlB0cjxXZWJLaXRDU1NSZXNvdXJjZVZhbHVl
PiBjc3NWYWx1ZSwgY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0cmluZyYgZnJhZ21lbnQsIGJv
b2wgaXNFeHRlcm5hbERvY3VtZW50LCBQYXNzUmVmUHRyPENhY2hlZFJlc291cmNlTG9hZGVyPiBj
YWNoZWRSZXNvdXJjZUxvYWRlcikKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IE1hc2tJbWFn
ZU9wZXJhdGlvbihjc3NWYWx1ZSwgdXJsLCBmcmFnbWVudCwgaXNFeHRlcm5hbERvY3VtZW50LCBj
YWNoZWRSZXNvdXJjZUxvYWRlciApKTsKK30KKworUGFzc1JlZlB0cjxNYXNrSW1hZ2VPcGVyYXRp
b24+IE1hc2tJbWFnZU9wZXJhdGlvbjo6Y3JlYXRlKFBhc3NSZWZQdHI8U3R5bGVJbWFnZT4gZ2Vu
ZXJhdGVkSW1hZ2UpCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBNYXNrSW1hZ2VPcGVyYXRp
b24oZ2VuZXJhdGVkSW1hZ2UpKTsKK30KKworTWFza0ltYWdlT3BlcmF0aW9uOjpNYXNrSW1hZ2VP
cGVyYXRpb24oUGFzc1JlZlB0cjxXZWJLaXRDU1NSZXNvdXJjZVZhbHVlPiBjc3NWYWx1ZSwgY29u
c3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0cmluZyYgZnJhZ21lbnQsIGJvb2wgaXNFeHRlcm5hbERv
Y3VtZW50LCBQYXNzUmVmUHRyPENhY2hlZFJlc291cmNlTG9hZGVyPiBjYWNoZWRSZXNvdXJjZUxv
YWRlcikKKyAgICA6IG1fdXJsKHVybCkKKyAgICAsIG1fZnJhZ21lbnQoZnJhZ21lbnQpCisgICAg
LCBtX2lzRXh0ZXJuYWxEb2N1bWVudChpc0V4dGVybmFsRG9jdW1lbnQpCisgICAgLCBtX3JlbmRl
ckxheWVySW1hZ2VDbGllbnQobnVsbHB0cikKKyAgICAsIG1fY3NzTWFza0ltYWdlVmFsdWUoY3Nz
VmFsdWUpCisgICAgLCBtX2NhY2hlZFJlc291cmNlTG9hZGVyKGNhY2hlZFJlc291cmNlTG9hZGVy
KQoreworICAgIEFTU0VSVChtX2Nzc01hc2tJbWFnZVZhbHVlLmdldCgpKTsKK30KKworTWFza0lt
YWdlT3BlcmF0aW9uOjpNYXNrSW1hZ2VPcGVyYXRpb24oUGFzc1JlZlB0cjxTdHlsZUltYWdlPiBn
ZW5lcmF0ZWRJbWFnZSkKKyAgICA6IG1faXNFeHRlcm5hbERvY3VtZW50KGZhbHNlKQorICAgICwg
bV9zdHlsZUltYWdlKGdlbmVyYXRlZEltYWdlKQorICAgICwgbV9yZW5kZXJMYXllckltYWdlQ2xp
ZW50KG51bGxwdHIpCit7Cit9CisKK01hc2tJbWFnZU9wZXJhdGlvbjo6fk1hc2tJbWFnZU9wZXJh
dGlvbigpCit7Cit9CisKK2Jvb2wgTWFza0ltYWdlT3BlcmF0aW9uOjppc0NTU1ZhbHVlTm9uZSgp
IGNvbnN0Cit7CisgICAgaWYgKGltYWdlKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAg
IGlmIChtX2Nzc01hc2tJbWFnZVZhbHVlLmdldCgpKQorICAgICAgICByZXR1cm4gbV9jc3NNYXNr
SW1hZ2VWYWx1ZS0+aXNDU1NWYWx1ZU5vbmUoKTsKKworICAgIHJldHVybiB0cnVlOworfQorCitQ
YXNzUmVmUHRyPENTU1ZhbHVlPiBNYXNrSW1hZ2VPcGVyYXRpb246OmNzc1ZhbHVlKCkKK3sKKyAg
ICBpZiAoaW1hZ2UoKSkKKyAgICAgICAgcmV0dXJuIGltYWdlKCktPmNzc1ZhbHVlKCk7CisgICAg
CisgICAgaWYgKGlzQ1NTVmFsdWVOb25lKCkpCisgICAgICAgIHJldHVybiBtX2Nzc01hc2tJbWFn
ZVZhbHVlLT5pbm5lclZhbHVlKCk7CisKKyAgICBBU1NFUlQobV9jc3NNYXNrSW1hZ2VWYWx1ZS5n
ZXQoKSk7CisgICAgcmV0dXJuIG1fY3NzTWFza0ltYWdlVmFsdWUuZ2V0KCk7Cit9CisKK2Jvb2wg
TWFza0ltYWdlT3BlcmF0aW9uOjppc01hc2tMb2FkZWQoKSBjb25zdAoreworICAgIGlmICghbV9p
c0V4dGVybmFsRG9jdW1lbnQpCisgICAgICAgIHJldHVybiB0cnVlOworCisgICAgaWYgKGltYWdl
KCkpCisgICAgICAgIHJldHVybiAoaW1hZ2UoKS0+Y2FjaGVkSW1hZ2UoKSAmJiBpbWFnZSgpLT5j
YWNoZWRJbWFnZSgpLT5pbWFnZSgpKTsKKyAgICAKKyAgICBpZiAobV9jYWNoZWRTVkdEb2N1bWVu
dFJlZmVyZW5jZS5nZXQoKSkgeworICAgICAgICBpZiAoQ2FjaGVkU1ZHRG9jdW1lbnQqIGNhY2hl
ZFNWR0RvY3VtZW50ID0gbV9jYWNoZWRTVkdEb2N1bWVudFJlZmVyZW5jZS0+ZG9jdW1lbnQoKSkK
KyAgICAgICAgICAgIHJldHVybiAoY2FjaGVkU1ZHRG9jdW1lbnQtPmRvY3VtZW50KCkgIT0gbnVs
bHB0cik7CisgICAgfQorICAgIAorICAgIHJldHVybiBmYWxzZTsKK30KKwordm9pZCBNYXNrSW1h
Z2VPcGVyYXRpb246OnNldFJlbmRlckxheWVySW1hZ2VDbGllbnQoQ2FjaGVkSW1hZ2VDbGllbnQq
IGNsaWVudCkKK3sKKyAgICBpZiAobV9yZW5kZXJMYXllckltYWdlQ2xpZW50ID09IGNsaWVudCkK
KyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKENhY2hlZEltYWdlKiBjYWNoZWRJbWFnZSA9IChp
bWFnZSgpID8gaW1hZ2UoKS0+Y2FjaGVkSW1hZ2UoKSA6IG51bGxwdHIpKSB7CisgICAgICAgIGlm
IChtX3JlbmRlckxheWVySW1hZ2VDbGllbnQpCisgICAgICAgICAgICBjYWNoZWRJbWFnZS0+cmVt
b3ZlQ2xpZW50KG1fcmVuZGVyTGF5ZXJJbWFnZUNsaWVudCk7CisgICAgICAgIAorICAgICAgICBp
ZiAoY2xpZW50KQorICAgICAgICAgICAgY2FjaGVkSW1hZ2UtPmFkZENsaWVudChjbGllbnQpOwor
ICAgIH0KKworICAgIG1fcmVuZGVyTGF5ZXJJbWFnZUNsaWVudCA9IGNsaWVudDsKK30KKwordm9p
ZCBNYXNrSW1hZ2VPcGVyYXRpb246OmFkZFJlbmRlcmVySW1hZ2VDbGllbnQoUmVuZGVyRWxlbWVu
dCogY2xpZW50KQoreworICAgIEFTU0VSVChjbGllbnQpOworCisgICAgaWYgKG1fc3R5bGVJbWFn
ZS5nZXQoKSkKKyAgICAgICAgbV9zdHlsZUltYWdlLT5hZGRDbGllbnQoY2xpZW50KTsKKyAgICAK
KyAgICBtX3JlbmRlcmVySW1hZ2VDbGllbnRzLmFkZChjbGllbnQpOworfQorCit2b2lkIE1hc2tJ
bWFnZU9wZXJhdGlvbjo6cmVtb3ZlUmVuZGVyZXJJbWFnZUNsaWVudChSZW5kZXJFbGVtZW50KiBj
bGllbnQpCit7CisgICAgQVNTRVJUKGNsaWVudCAmJiBtX3JlbmRlcmVySW1hZ2VDbGllbnRzLmNv
bnRhaW5zKGNsaWVudCkpOworICAgIAorICAgIGlmIChtX3N0eWxlSW1hZ2UuZ2V0KCkpCisgICAg
ICAgIG1fc3R5bGVJbWFnZS0+cmVtb3ZlQ2xpZW50KGNsaWVudCk7CisgICAgCisgICAgbV9yZW5k
ZXJlckltYWdlQ2xpZW50cy5yZW1vdmUoY2xpZW50KTsKK30KKworQ2FjaGVkU1ZHRG9jdW1lbnRS
ZWZlcmVuY2UqIE1hc2tJbWFnZU9wZXJhdGlvbjo6Z2V0T3JDcmVhdGVDYWNoZWRTVkdEb2N1bWVu
dFJlZmVyZW5jZSgpCit7CisgICAgLy8gSWYgd2UgZW5kZWQgdXAgbG9hZGluZyB0aGUgZGF0YSBp
bnRvIGFuIEltYWdlLCB0aGVuIHRoZSBTVkcgZG9jdW1lbnQgd2FzIG5vdCB2YWxpZC4KKyAgICBp
ZiAoaW1hZ2UoKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBpZiAoIW1fY2FjaGVk
U1ZHRG9jdW1lbnRSZWZlcmVuY2UuZ2V0KCkpCisgICAgICAgIG1fY2FjaGVkU1ZHRG9jdW1lbnRS
ZWZlcmVuY2UgPSBzdGQ6Om1ha2VfdW5pcXVlPENhY2hlZFNWR0RvY3VtZW50UmVmZXJlbmNlPiht
X3VybCwgdGhpcywgZmFsc2UpOworICAgIHJldHVybiBtX2NhY2hlZFNWR0RvY3VtZW50UmVmZXJl
bmNlLmdldCgpOworfQorCit2b2lkIE1hc2tJbWFnZU9wZXJhdGlvbjo6bm90aWZ5RmluaXNoZWQo
Q2FjaGVkUmVzb3VyY2UqIHJlc291cmNlKQoreworICAgIC8vIFRoZSBvbmx5IG9uZSBub3RpZnlp
bmcgdXMgc2hvdWxkIGJlIHRoZSBTVkcgZG9jdW1lbnQgd2UgaG9sZC4KKyAgICBDYWNoZWRTVkdE
b2N1bWVudCogY2FjaGVkU1ZHRG9jdW1lbnQgPSBnZXRPckNyZWF0ZUNhY2hlZFNWR0RvY3VtZW50
UmVmZXJlbmNlKCktPmRvY3VtZW50KCk7CisgICAgaWYgKChDYWNoZWRSZXNvdXJjZSopY2FjaGVk
U1ZHRG9jdW1lbnQgIT0gcmVzb3VyY2UgfHwgIXJlc291cmNlKSB7CisgICAgICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIAorICAgIC8vIENoZWNr
IGlmIHdlIGZpbmQgYSB2YWxpZCBtYXNraW5nIGVsZW1lbnQgaW4gdGhpcyBTVkcgZG9jdW1lbnQu
CisgICAgU1ZHRG9jdW1lbnQqIHN2Z0RvY3VtZW50ID0gY2FjaGVkU1ZHRG9jdW1lbnQtPmRvY3Vt
ZW50KCk7CisgICAgYm9vbCB2YWxpZE1hc2tGb3VuZCA9IGZhbHNlOworICAgIGlmIChzdmdEb2N1
bWVudCAmJiBzdmdEb2N1bWVudC0+cm9vdEVsZW1lbnQoKSkgeworICAgICAgICAvLyBBcmUgd2Ug
bG9va2luZyBmb3IgYSBzcGVjaWZpYyBlbGVtZW50IGluIHRoZSBTVkcgZG9jdW1lbnQ/CisgICAg
ICAgIGlmIChmcmFnbWVudCgpLmxlbmd0aCgpKSB7CisgICAgICAgICAgICBpZiAoRWxlbWVudCog
bWFza2luZ0VsZW1lbnQgPSBzdmdEb2N1bWVudC0+cm9vdEVsZW1lbnQoKS0+Z2V0RWxlbWVudEJ5
SWQoZnJhZ21lbnQoKSkpIHsKKyAgICAgICAgICAgICAgICBpZiAoaXM8U1ZHTWFza0VsZW1lbnQ+
KG1hc2tpbmdFbGVtZW50KSkKKyAgICAgICAgICAgICAgICAgICAgdmFsaWRNYXNrRm91bmQgPSB0
cnVlOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorICAgIAorICAgIC8vIElmIG5v
IHZhbGlkIG1hc2sgd2FzIGZvdW5kLCB0aGlzIGlzIG5vdCBhIHZhbGlkIFNWRyBkb2N1bWVudCBv
ciBpdCBzcGVjaWZpZWQgYW4gaW52YWxpZCBmcmFnbWVudCBpZGVudGlmaWVyLgorICAgIC8vIEZh
bGxiYWNrIHRvIHRoZSBub3JtYWwgd2F5IG9mIGxvYWRpbmcgdGhlIGRvY3VtZW50IGluIGFuIElt
YWdlIG9iamVjdC4KKyAgICBpZiAoIXZhbGlkTWFza0ZvdW5kKSB7CisgICAgICAgIC8vIEdldCB0
aGUgcmVzb3VyY2UgbG9hZGVyLCBhY3F1aXJlIHRoZSByZXNvdXJjZSBidWZmZXIgYW5kIGxvYWQg
aXQgaW50byBhbiBpbWFnZS4KKyAgICAgICAgQVNTRVJUKGNhY2hlZFNWR0RvY3VtZW50LT5sb2Fk
ZXIoKSk7CisgICAgICAgIGlmIChTdWJyZXNvdXJjZUxvYWRlciogbG9hZGVyID0gY2FjaGVkU1ZH
RG9jdW1lbnQtPmxvYWRlcigpKSB7CisgICAgICAgICAgICBpZiAoU2hhcmVkQnVmZmVyKiBkYXRh
QnVmZmVyID0gbG9hZGVyLT5yZXNvdXJjZURhdGEoKSkgeworICAgICAgICAgICAgICAgIG1fc3R5
bGVJbWFnZSA9IFN0eWxlQ2FjaGVkSW1hZ2U6OmNyZWF0ZShuZXcgQ2FjaGVkSW1hZ2UoY2FjaGVk
U1ZHRG9jdW1lbnQtPnJlc291cmNlUmVxdWVzdCgpLCBjYWNoZWRTVkdEb2N1bWVudC0+c2Vzc2lv
bklEKCkpKTsKKyAgICAgICAgICAgICAgICBpZiAobV9yZW5kZXJMYXllckltYWdlQ2xpZW50KQor
ICAgICAgICAgICAgICAgICAgICBtX3N0eWxlSW1hZ2UtPmNhY2hlZEltYWdlKCktPmFkZENsaWVu
dChtX3JlbmRlckxheWVySW1hZ2VDbGllbnQpOworICAgICAgICAgICAgICAgIGZvciAoYXV0byBp
dENsaWVudCA6IG1fcmVuZGVyZXJJbWFnZUNsaWVudHMpCisgICAgICAgICAgICAgICAgICAgIG1f
c3R5bGVJbWFnZS0+YWRkQ2xpZW50KGl0Q2xpZW50LmtleSk7CisKKyAgICAgICAgICAgICAgICBt
X3N0eWxlSW1hZ2UtPmNhY2hlZEltYWdlKCktPnNldFJlc3BvbnNlKGNhY2hlZFNWR0RvY3VtZW50
LT5yZXNwb25zZSgpKTsKKyAgICAgICAgICAgICAgICBtX3N0eWxlSW1hZ2UtPmNhY2hlZEltYWdl
KCktPmZpbmlzaExvYWRpbmcoZGF0YUJ1ZmZlcik7CisKKyAgICAgICAgICAgICAgICAvLyBMZXQg
dGhlIGNhY2hlZCByZXNvdXJjZSBsb2FkZXIgb2YgdGhlIGRvY3VtZW50IHdoaWNoIHJlcXVlc3Rl
ZCB0aGlzIG1hc2sga2VlcCBhIGhhbmRsZSB0byB0aGlzCisgICAgICAgICAgICAgICAgLy8gY2Fj
aGVkIGltYWdlIHRvIGVuc3VyZSBpdCBvbmx5IGdldHMgZGVsZXRlZCB3aGVuIGl0IHNob3VsZC4K
KyAgICAgICAgICAgICAgICBpZiAobV9jYWNoZWRSZXNvdXJjZUxvYWRlci5nZXQoKSkKKyAgICAg
ICAgICAgICAgICAgICAgbV9jYWNoZWRSZXNvdXJjZUxvYWRlci0+YWRkQ2FjaGVkUmVzb3VyY2Uo
bV9zdHlsZUltYWdlLT5jYWNoZWRJbWFnZSgpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAg
IAorICAgICAgICAgICAgLy8gRGVzdHJveSB0aGUgY3VycmVudCBTVkcgZG9jdW1lbnQgYXMgaXRz
IG5vIGxvbmdlciBuZWVkZWQKKyAgICAgICAgICAgIG1fY2FjaGVkU1ZHRG9jdW1lbnRSZWZlcmVu
Y2UgPSBudWxscHRyOworICAgICAgICB9CisgICAgfQorfQorCitib29sIE1hc2tJbWFnZU9wZXJh
dGlvbjo6ZHJhd01hc2soUmVuZGVyRWxlbWVudCYgcmVuZGVyZXIsIEJhY2tncm91bmRJbWFnZUdl
b21ldHJ5JiBnZW9tZXRyeSwgR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBDb21wb3NpdGVPcGVy
YXRvciBjb21wb3NpdGVPcCkKK3sKKyAgICAvLyBUaGlzIG1ldGhvZCBvbmx5IGhhbmRsZXMgY3Vz
dG9tIG1hc2tzLgorICAgIGlmIChpbWFnZSgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAg
ICAvLyBJZGVudGlmeSB0aGUgZWxlbWVudCByZWZlcmVuY2VkIGJ5IHRoZSBmcmFnbWVudElkLgor
ICAgIENhY2hlZFNWR0RvY3VtZW50UmVmZXJlbmNlKiBzdmdEb2N1bWVudFJlZmVyZW5jZSA9IGNh
Y2hlZFNWR0RvY3VtZW50UmVmZXJlbmNlKCk7CisgICAgRWxlbWVudCogZWxlbWVudEZvck1hc2tp
bmcgPSBudWxscHRyOworICAgIFJlbmRlck9iamVjdCogc3ZnUmVzb3VyY2VGb3JNYXNraW5nID0g
bnVsbHB0cjsKKyAgICBpZiAoc3ZnRG9jdW1lbnRSZWZlcmVuY2UgJiYgc3ZnRG9jdW1lbnRSZWZl
cmVuY2UtPmRvY3VtZW50KCkpIHsKKyAgICAgICAgU1ZHRG9jdW1lbnQqIHN2Z0RvY3VtZW50ID0g
c3ZnRG9jdW1lbnRSZWZlcmVuY2UtPmRvY3VtZW50KCktPmRvY3VtZW50KCk7CisgICAgICAgIGlm
IChzdmdEb2N1bWVudCAmJiBzdmdEb2N1bWVudC0+cm9vdEVsZW1lbnQoKSkKKyAgICAgICAgICAg
IGVsZW1lbnRGb3JNYXNraW5nID0gc3ZnRG9jdW1lbnQtPnJvb3RFbGVtZW50KCktPmdldEVsZW1l
bnRCeUlkKGZyYWdtZW50KCkpOworICAgIH0gZWxzZQorICAgICAgICBlbGVtZW50Rm9yTWFza2lu
ZyA9IHJlbmRlcmVyLmRvY3VtZW50KCkuZ2V0RWxlbWVudEJ5SWQoZnJhZ21lbnQoKSk7CisgICAg
CisgICAgaWYgKGVsZW1lbnRGb3JNYXNraW5nKQorICAgICAgICBzdmdSZXNvdXJjZUZvck1hc2tp
bmcgPSBlbGVtZW50Rm9yTWFza2luZy0+cmVuZGVyZXIoKTsKKyAgICAKKyAgICAvLyBDaGVjayBp
ZiB0aGUgZWxlbWVudCB3ZSBmb3VuZCBpcyBvZiBhIHR5cGUgdGhhdCBjYW4gYmUgdXNlZCBhcyBh
IG1hc2suCisgICAgaWYgKHN2Z1Jlc291cmNlRm9yTWFza2luZyAmJiBzdmdSZXNvdXJjZUZvck1h
c2tpbmctPmlzU1ZHUmVzb3VyY2VDb250YWluZXIoKSAmJiBkb3duY2FzdDxSZW5kZXJTVkdSZXNv
dXJjZUNvbnRhaW5lcj4oc3ZnUmVzb3VyY2VGb3JNYXNraW5nKS0+cmVzb3VyY2VUeXBlKCkgPT0g
TWFza2VyUmVzb3VyY2VUeXBlKSB7CisgICAgICAgIHN0YXRpY19jYXN0PFJlbmRlclNWR1Jlc291
cmNlTWFza2VyKj4oc3ZnUmVzb3VyY2VGb3JNYXNraW5nKS0+ZHJhd01hc2tGb3JSZW5kZXJlcihy
ZW5kZXJlciwgZ2VvbWV0cnksIGNvbnRleHQsIGNvbXBvc2l0ZU9wKTsKKyAgICAgICAgcmV0dXJu
IHRydWU7CisgICAgfQorICAgIAorICAgIHJldHVybiBmYWxzZTsKK30KKworfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
TWFza0ltYWdlT3BlcmF0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9N
YXNrSW1hZ2VPcGVyYXRpb24uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5h
OGNkZWQ0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvTWFza0ltYWdlT3BlcmF0aW9uLmgKQEAgLTAsMCArMSw5MiBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxNCBBZG9iZSBTeXN0ZW1zIEluY29ycG9yYXRlZC4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZ
UklHSFQgSE9MREVSICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdI
VCBIT0xERVIgQkUKKyAqIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwKKyAqIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IKKyAqIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRgorICogVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GCisgKiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZu
ZGVmIE1hc2tJbWFnZU9wZXJhdGlvbl9oCisjZGVmaW5lIE1hc2tJbWFnZU9wZXJhdGlvbl9oCisK
KyNpbmNsdWRlICJDYWNoZWRSZXNvdXJjZUxvYWRlci5oIgorI2luY2x1ZGUgIkNhY2hlZFNWR0Rv
Y3VtZW50Q2xpZW50LmgiCisjaW5jbHVkZSAiQ2FjaGVkU1ZHRG9jdW1lbnRSZWZlcmVuY2UuaCIK
KyNpbmNsdWRlICJDb2xvci5oIgorI2luY2x1ZGUgIkltYWdlLmgiCisjaW5jbHVkZSAiTGF5b3V0
U2l6ZS5oIgorI2luY2x1ZGUgIkxlbmd0aC5oIgorI2luY2x1ZGUgIlN0eWxlSW1hZ2UuaCIKKyNp
bmNsdWRlIDx3dGYvSGFzaENvdW50ZWRTZXQuaD4KKyNpbmNsdWRlIDx3dGYvT3duUHRyLmg+Cisj
aW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KKyNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgor
I2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7Cisg
ICAgCitjbGFzcyBCYWNrZ3JvdW5kSW1hZ2VHZW9tZXRyeTsKK2NsYXNzIENhY2hlZEltYWdlQ2xp
ZW50OworY2xhc3MgV2ViS2l0Q1NTUmVzb3VyY2VWYWx1ZTsKKworY2xhc3MgTWFza0ltYWdlT3Bl
cmF0aW9uIGZpbmFsIDogcHVibGljIFJlZkNvdW50ZWQ8TWFza0ltYWdlT3BlcmF0aW9uPiwgcHVi
bGljIENhY2hlZFNWR0RvY3VtZW50Q2xpZW50IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc1Jl
ZlB0cjxNYXNrSW1hZ2VPcGVyYXRpb24+IGNyZWF0ZShQYXNzUmVmUHRyPFdlYktpdENTU1Jlc291
cmNlVmFsdWU+IGNzc1ZhbHVlLCBjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgU3RyaW5nJiBmcmFn
bWVudCwgYm9vbCBpc0V4dGVybmFsRG9jdW1lbnQsIFBhc3NSZWZQdHI8Q2FjaGVkUmVzb3VyY2VM
b2FkZXI+KTsKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxNYXNrSW1hZ2VPcGVyYXRpb24+IGNyZWF0
ZShQYXNzUmVmUHRyPFN0eWxlSW1hZ2U+IGdlbmVyYXRlZEltYWdlKTsKKyAgICAKKyAgICBQYXNz
UmVmUHRyPENTU1ZhbHVlPiBjc3NWYWx1ZSgpOworCisgICAgdmlydHVhbCB+TWFza0ltYWdlT3Bl
cmF0aW9uKCk7CisKKyAgICBjb25zdCBTdHJpbmcmIHVybCgpIGNvbnN0IHsgcmV0dXJuIG1fdXJs
OyB9CisgICAgY29uc3QgU3RyaW5nJiBmcmFnbWVudCgpIGNvbnN0IHsgcmV0dXJuIG1fZnJhZ21l
bnQ7IH0KKyAgICBTdHlsZUltYWdlKiBpbWFnZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3R5bGVJbWFn
ZS5nZXQoKTsgfQorICAgIHZvaWQgc2V0SW1hZ2UoUGFzc1JlZlB0cjxTdHlsZUltYWdlPiBpbWFn
ZSkgeyBtX3N0eWxlSW1hZ2UgPSBpbWFnZTsgfQorICAgIHZvaWQgc2V0UmVuZGVyTGF5ZXJJbWFn
ZUNsaWVudChDYWNoZWRJbWFnZUNsaWVudCopOworICAgIHZvaWQgYWRkUmVuZGVyZXJJbWFnZUNs
aWVudChSZW5kZXJFbGVtZW50Kik7CisgICAgdm9pZCByZW1vdmVSZW5kZXJlckltYWdlQ2xpZW50
KFJlbmRlckVsZW1lbnQqKTsKKyAgICBib29sIGlzTWFza0xvYWRlZCgpIGNvbnN0OworICAgIGJv
b2wgZHJhd01hc2soUmVuZGVyRWxlbWVudCYgcmVuZGVyZXIsIEJhY2tncm91bmRJbWFnZUdlb21l
dHJ5JiwgR3JhcGhpY3NDb250ZXh0KiwgQ29tcG9zaXRlT3BlcmF0b3IpOworICAgIGJvb2wgaXND
U1NWYWx1ZU5vbmUoKSBjb25zdDsKKworICAgIENhY2hlZFNWR0RvY3VtZW50UmVmZXJlbmNlKiBj
YWNoZWRTVkdEb2N1bWVudFJlZmVyZW5jZSgpIGNvbnN0IHsgcmV0dXJuIG1fY2FjaGVkU1ZHRG9j
dW1lbnRSZWZlcmVuY2UuZ2V0KCk7IH0KKyAgICBDYWNoZWRTVkdEb2N1bWVudFJlZmVyZW5jZSog
Z2V0T3JDcmVhdGVDYWNoZWRTVkdEb2N1bWVudFJlZmVyZW5jZSgpOworICAgIAorICAgIHZpcnR1
YWwgdm9pZCBub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSopOworCitwcml2YXRlOgorICAg
IE1hc2tJbWFnZU9wZXJhdGlvbihQYXNzUmVmUHRyPFdlYktpdENTU1Jlc291cmNlVmFsdWU+IGNz
c1ZhbHVlLCBjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgU3RyaW5nJiBmcmFnbWVudCwgYm9vbCBp
c0V4dGVybmFsRG9jdW1lbnQsIFBhc3NSZWZQdHI8Q2FjaGVkUmVzb3VyY2VMb2FkZXI+KTsKKyAg
ICBNYXNrSW1hZ2VPcGVyYXRpb24oUGFzc1JlZlB0cjxTdHlsZUltYWdlPiBnZW5lcmF0ZWRJbWFn
ZSk7CisKKyAgICBTdHJpbmcgbV91cmw7CisgICAgU3RyaW5nIG1fZnJhZ21lbnQ7CisgICAgYm9v
bCBtX2lzRXh0ZXJuYWxEb2N1bWVudDsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8Q2FjaGVkU1ZHRG9j
dW1lbnRSZWZlcmVuY2U+IG1fY2FjaGVkU1ZHRG9jdW1lbnRSZWZlcmVuY2U7CisgICAgUmVmUHRy
PFN0eWxlSW1hZ2U+IG1fc3R5bGVJbWFnZTsKKyAgICBDYWNoZWRJbWFnZUNsaWVudCogbV9yZW5k
ZXJMYXllckltYWdlQ2xpZW50OworICAgIEhhc2hDb3VudGVkU2V0PFJlbmRlckVsZW1lbnQqPiBt
X3JlbmRlcmVySW1hZ2VDbGllbnRzOworICAgIFJlZlB0cjxXZWJLaXRDU1NSZXNvdXJjZVZhbHVl
PiBtX2Nzc01hc2tJbWFnZVZhbHVlOworICAgIFJlZlB0cjxDYWNoZWRSZXNvdXJjZUxvYWRlcj4g
bV9jYWNoZWRSZXNvdXJjZUxvYWRlcjsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKwor
I2VuZGlmIC8vIE1hc2tJbWFnZU9wZXJhdGlvbl9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmNwcAppbmRleCA3YjVhNTI4Li45MTJhNWY1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3Qu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5j
cHAKQEAgLTEwMTcsMzEgKzEwMTcsMzEgQEAgTGF5b3V0U2l6ZSBSZW5kZXJCb3hNb2RlbE9iamVj
dDo6Y2FsY3VsYXRlRmlsbFRpbGVTaXplKGNvbnN0IEZpbGxMYXllciogZmlsbExheWUKICAgICBy
ZXR1cm4gTGF5b3V0U2l6ZSgpOwogfQogCi12b2lkIFJlbmRlckJveE1vZGVsT2JqZWN0OjpCYWNr
Z3JvdW5kSW1hZ2VHZW9tZXRyeTo6c2V0Tm9SZXBlYXRYKExheW91dFVuaXQgeE9mZnNldCkKK3Zv
aWQgQmFja2dyb3VuZEltYWdlR2VvbWV0cnk6OnNldE5vUmVwZWF0WChMYXlvdXRVbml0IHhPZmZz
ZXQpCiB7CiAgICAgbV9kZXN0UmVjdC5tb3ZlKHN0ZDo6bWF4PExheW91dFVuaXQ+KHhPZmZzZXQs
IDApLCAwKTsKICAgICBtX3BoYXNlLnNldFgoLXN0ZDo6bWluPExheW91dFVuaXQ+KHhPZmZzZXQs
IDApKTsKICAgICBtX2Rlc3RSZWN0LnNldFdpZHRoKG1fdGlsZVNpemUud2lkdGgoKSArIHN0ZDo6
bWluPGZsb2F0Pih4T2Zmc2V0LCAwKSk7CiB9Ci12b2lkIFJlbmRlckJveE1vZGVsT2JqZWN0OjpC
YWNrZ3JvdW5kSW1hZ2VHZW9tZXRyeTo6c2V0Tm9SZXBlYXRZKExheW91dFVuaXQgeU9mZnNldCkK
K3ZvaWQgQmFja2dyb3VuZEltYWdlR2VvbWV0cnk6OnNldE5vUmVwZWF0WShMYXlvdXRVbml0IHlP
ZmZzZXQpCiB7CiAgICAgbV9kZXN0UmVjdC5tb3ZlKDAsIHN0ZDo6bWF4PExheW91dFVuaXQ+KHlP
ZmZzZXQsIDApKTsKICAgICBtX3BoYXNlLnNldFkoLXN0ZDo6bWluPExheW91dFVuaXQ+KHlPZmZz
ZXQsIDApKTsKICAgICBtX2Rlc3RSZWN0LnNldEhlaWdodChtX3RpbGVTaXplLmhlaWdodCgpICsg
c3RkOjptaW48ZmxvYXQ+KHlPZmZzZXQsIDApKTsKIH0KIAotdm9pZCBSZW5kZXJCb3hNb2RlbE9i
amVjdDo6QmFja2dyb3VuZEltYWdlR2VvbWV0cnk6OnVzZUZpeGVkQXR0YWNobWVudChjb25zdCBM
YXlvdXRQb2ludCYgYXR0YWNobWVudFBvaW50KQordm9pZCBCYWNrZ3JvdW5kSW1hZ2VHZW9tZXRy
eTo6dXNlRml4ZWRBdHRhY2htZW50KGNvbnN0IExheW91dFBvaW50JiBhdHRhY2htZW50UG9pbnQp
CiB7CiAgICAgRmxvYXRQb2ludCBhbGlnbmVkUG9pbnQgPSBhdHRhY2htZW50UG9pbnQ7CiAgICAg
bV9waGFzZS5tb3ZlKHN0ZDo6bWF4PExheW91dFVuaXQ+KGFsaWduZWRQb2ludC54KCkgLSBtX2Rl
c3RSZWN0LngoKSwgMCksIHN0ZDo6bWF4PExheW91dFVuaXQ+KGFsaWduZWRQb2ludC55KCkgLSBt
X2Rlc3RSZWN0LnkoKSwgMCkpOwogfQogCi12b2lkIFJlbmRlckJveE1vZGVsT2JqZWN0OjpCYWNr
Z3JvdW5kSW1hZ2VHZW9tZXRyeTo6Y2xpcChjb25zdCBMYXlvdXRSZWN0JiBjbGlwUmVjdCkKK3Zv
aWQgQmFja2dyb3VuZEltYWdlR2VvbWV0cnk6OmNsaXAoY29uc3QgTGF5b3V0UmVjdCYgY2xpcFJl
Y3QpCiB7CiAgICAgbV9kZXN0UmVjdC5pbnRlcnNlY3QoY2xpcFJlY3QpOwogfQogCi1MYXlvdXRQ
b2ludCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6QmFja2dyb3VuZEltYWdlR2VvbWV0cnk6OnJlbGF0
aXZlUGhhc2UoKSBjb25zdAorTGF5b3V0UG9pbnQgQmFja2dyb3VuZEltYWdlR2VvbWV0cnk6OnJl
bGF0aXZlUGhhc2UoKSBjb25zdAogewogICAgIExheW91dFBvaW50IHBoYXNlID0gbV9waGFzZTsK
ICAgICBwaGFzZSArPSBtX2Rlc3RSZWN0LmxvY2F0aW9uKCkgLSBtX2Rlc3RPcmlnaW47CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuaCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5oCmluZGV4IDE5
NTU4YzYuLjA3MDJkNDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJCb3hNb2RlbE9iamVjdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJC
b3hNb2RlbE9iamVjdC5oCkBAIC02NSw2ICs2NSw1MiBAQCBjbGFzcyBSZW5kZXJOYW1lZEZsb3dG
cmFnbWVudDsKIGNsYXNzIFJlbmRlclRleHRGcmFnbWVudDsKIGNsYXNzIFN0aWNreVBvc2l0aW9u
Vmlld3BvcnRDb25zdHJhaW50czsKIAorY2xhc3MgQmFja2dyb3VuZEltYWdlR2VvbWV0cnkgewor
cHVibGljOgorICAgIEJhY2tncm91bmRJbWFnZUdlb21ldHJ5KCkKKyAgICAgICAgOiBtX2hhc05v
bkxvY2FsR2VvbWV0cnkoZmFsc2UpCisgICAgeyB9CisKKyAgICBMYXlvdXRQb2ludCBkZXN0T3Jp
Z2luKCkgY29uc3QgeyByZXR1cm4gbV9kZXN0T3JpZ2luOyB9CisgICAgdm9pZCBzZXREZXN0T3Jp
Z2luKGNvbnN0IExheW91dFBvaW50JiBkZXN0T3JpZ2luKSB7IG1fZGVzdE9yaWdpbiA9IGRlc3RP
cmlnaW47IH0KKyAgICAKKyAgICBMYXlvdXRSZWN0IGRlc3RSZWN0KCkgY29uc3QgeyByZXR1cm4g
bV9kZXN0UmVjdDsgfQorICAgIHZvaWQgc2V0RGVzdFJlY3QoY29uc3QgTGF5b3V0UmVjdCYgZGVz
dFJlY3QpIHsgbV9kZXN0UmVjdCA9IGRlc3RSZWN0OyB9CisgICAgCisgICAgLy8gUmV0dXJucyB0
aGUgcGhhc2UgcmVsYXRpdmUgdG8gdGhlIGRlc3RpbmF0aW9uIHJlY3RhbmdsZS4KKyAgICBMYXlv
dXRQb2ludCByZWxhdGl2ZVBoYXNlKCkgY29uc3Q7CisgICAgCisgICAgTGF5b3V0UG9pbnQgcGhh
c2UoKSBjb25zdCB7IHJldHVybiBtX3BoYXNlOyB9CisgICAgdm9pZCBzZXRQaGFzZShjb25zdCBM
YXlvdXRQb2ludCYgcGhhc2UpIHsgbV9waGFzZSA9IHBoYXNlOyB9CisgICAgCisgICAgTGF5b3V0
U2l6ZSB0aWxlU2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fdGlsZVNpemU7IH0KKyAgICB2b2lkIHNl
dFRpbGVTaXplKGNvbnN0IExheW91dFNpemUmIHRpbGVTaXplKSB7IG1fdGlsZVNpemUgPSB0aWxl
U2l6ZTsgfQorICAgIAorICAgIExheW91dFNpemUgc3BhY2VTaXplKCkgY29uc3QgeyByZXR1cm4g
bV9zcGFjZTsgfQorICAgIHZvaWQgc2V0U3BhY2VTaXplKGNvbnN0IExheW91dFNpemUmIHNwYWNl
KSB7IG1fc3BhY2UgPSBzcGFjZTsgfQorICAgIAorICAgIHZvaWQgc2V0UGhhc2VYKExheW91dFVu
aXQgIHgpIHsgbV9waGFzZS5zZXRYKHgpOyB9CisgICAgdm9pZCBzZXRQaGFzZVkoTGF5b3V0VW5p
dCB5KSB7IG1fcGhhc2Uuc2V0WSh5KTsgfQorICAgIAorICAgIHZvaWQgc2V0Tm9SZXBlYXRYKExh
eW91dFVuaXQgeE9mZnNldCk7CisgICAgdm9pZCBzZXROb1JlcGVhdFkoTGF5b3V0VW5pdCB5T2Zm
c2V0KTsKKyAgICAKKyAgICB2b2lkIHVzZUZpeGVkQXR0YWNobWVudChjb25zdCBMYXlvdXRQb2lu
dCYgYXR0YWNobWVudFBvaW50KTsKKyAgICAKKyAgICB2b2lkIGNsaXAoY29uc3QgTGF5b3V0UmVj
dCYpOworICAgIAorICAgIHZvaWQgc2V0SGFzTm9uTG9jYWxHZW9tZXRyeShib29sIGhhc05vbkxv
Y2FsR2VvbWV0cnkgPSB0cnVlKSB7IG1faGFzTm9uTG9jYWxHZW9tZXRyeSA9IGhhc05vbkxvY2Fs
R2VvbWV0cnk7IH0KKyAgICBib29sIGhhc05vbkxvY2FsR2VvbWV0cnkoKSBjb25zdCB7IHJldHVy
biBtX2hhc05vbkxvY2FsR2VvbWV0cnk7IH0KKyAgICAKK3ByaXZhdGU6CisgICAgTGF5b3V0UmVj
dCBtX2Rlc3RSZWN0OworICAgIExheW91dFBvaW50IG1fZGVzdE9yaWdpbjsKKyAgICBMYXlvdXRQ
b2ludCBtX3BoYXNlOworICAgIExheW91dFNpemUgbV90aWxlU2l6ZTsKKyAgICBMYXlvdXRTaXpl
IG1fc3BhY2U7CisgICAgYm9vbCBtX2hhc05vbkxvY2FsR2VvbWV0cnk7IC8vIEhhcyBiYWNrZ3Jv
dW5kLWF0dGFjaG1lbnQ6IGZpeGVkLiBJbXBsaWVzIHRoYXQgd2UgY2FuJ3QgYWx3YXlzIGNoZWFw
bHkgY29tcHV0ZSBkZXN0UmVjdC4KK307CisKIC8vIFRoaXMgY2xhc3MgaXMgdGhlIGJhc2UgZm9y
IGFsbCBvYmplY3RzIHRoYXQgYWRoZXJlIHRvIHRoZSBDU1MgYm94IG1vZGVsIGFzIGRlc2NyaWJl
ZAogLy8gYXQgaHR0cDovL3d3dy53My5vcmcvVFIvQ1NTMjEvYm94Lmh0bWwKIApAQCAtMjEwLDUx
ICsyNTYsNiBAQCBwcm90ZWN0ZWQ6CiAKICAgICB2aXJ0dWFsIHZvaWQgd2lsbEJlRGVzdHJveWVk
KCkgb3ZlcnJpZGU7CiAKLSAgICBjbGFzcyBCYWNrZ3JvdW5kSW1hZ2VHZW9tZXRyeSB7Ci0gICAg
cHVibGljOgotICAgICAgICBCYWNrZ3JvdW5kSW1hZ2VHZW9tZXRyeSgpCi0gICAgICAgICAgICA6
IG1faGFzTm9uTG9jYWxHZW9tZXRyeShmYWxzZSkKLSAgICAgICAgeyB9Ci0gICAgICAgIExheW91
dFBvaW50IGRlc3RPcmlnaW4oKSBjb25zdCB7IHJldHVybiBtX2Rlc3RPcmlnaW47IH0KLSAgICAg
ICAgdm9pZCBzZXREZXN0T3JpZ2luKGNvbnN0IExheW91dFBvaW50JiBkZXN0T3JpZ2luKSB7IG1f
ZGVzdE9yaWdpbiA9IGRlc3RPcmlnaW47IH0KLSAgICAgICAgCi0gICAgICAgIExheW91dFJlY3Qg
ZGVzdFJlY3QoKSBjb25zdCB7IHJldHVybiBtX2Rlc3RSZWN0OyB9Ci0gICAgICAgIHZvaWQgc2V0
RGVzdFJlY3QoY29uc3QgTGF5b3V0UmVjdCYgZGVzdFJlY3QpIHsgbV9kZXN0UmVjdCA9IGRlc3RS
ZWN0OyB9Ci0KLSAgICAgICAgLy8gUmV0dXJucyB0aGUgcGhhc2UgcmVsYXRpdmUgdG8gdGhlIGRl
c3RpbmF0aW9uIHJlY3RhbmdsZS4KLSAgICAgICAgTGF5b3V0UG9pbnQgcmVsYXRpdmVQaGFzZSgp
IGNvbnN0OwotICAgICAgICAKLSAgICAgICAgTGF5b3V0UG9pbnQgcGhhc2UoKSBjb25zdCB7IHJl
dHVybiBtX3BoYXNlOyB9Ci0gICAgICAgIHZvaWQgc2V0UGhhc2UoY29uc3QgTGF5b3V0UG9pbnQm
IHBoYXNlKSB7IG1fcGhhc2UgPSBwaGFzZTsgfQotCi0gICAgICAgIExheW91dFNpemUgdGlsZVNp
emUoKSBjb25zdCB7IHJldHVybiBtX3RpbGVTaXplOyB9Ci0gICAgICAgIHZvaWQgc2V0VGlsZVNp
emUoY29uc3QgTGF5b3V0U2l6ZSYgdGlsZVNpemUpIHsgbV90aWxlU2l6ZSA9IHRpbGVTaXplOyB9
Ci0KLSAgICAgICAgTGF5b3V0U2l6ZSBzcGFjZVNpemUoKSBjb25zdCB7IHJldHVybiBtX3NwYWNl
OyB9Ci0gICAgICAgIHZvaWQgc2V0U3BhY2VTaXplKGNvbnN0IExheW91dFNpemUmIHNwYWNlKSB7
IG1fc3BhY2UgPSBzcGFjZTsgfQotCi0gICAgICAgIHZvaWQgc2V0UGhhc2VYKExheW91dFVuaXQg
IHgpIHsgbV9waGFzZS5zZXRYKHgpOyB9Ci0gICAgICAgIHZvaWQgc2V0UGhhc2VZKExheW91dFVu
aXQgeSkgeyBtX3BoYXNlLnNldFkoeSk7IH0KLSAgICAgICAgCi0gICAgICAgIHZvaWQgc2V0Tm9S
ZXBlYXRYKExheW91dFVuaXQgeE9mZnNldCk7Ci0gICAgICAgIHZvaWQgc2V0Tm9SZXBlYXRZKExh
eW91dFVuaXQgeU9mZnNldCk7Ci0gICAgICAgIAotICAgICAgICB2b2lkIHVzZUZpeGVkQXR0YWNo
bWVudChjb25zdCBMYXlvdXRQb2ludCYgYXR0YWNobWVudFBvaW50KTsKLSAgICAgICAgCi0gICAg
ICAgIHZvaWQgY2xpcChjb25zdCBMYXlvdXRSZWN0Jik7Ci0gICAgICAgIAotICAgICAgICB2b2lk
IHNldEhhc05vbkxvY2FsR2VvbWV0cnkoYm9vbCBoYXNOb25Mb2NhbEdlb21ldHJ5ID0gdHJ1ZSkg
eyBtX2hhc05vbkxvY2FsR2VvbWV0cnkgPSBoYXNOb25Mb2NhbEdlb21ldHJ5OyB9Ci0gICAgICAg
IGJvb2wgaGFzTm9uTG9jYWxHZW9tZXRyeSgpIGNvbnN0IHsgcmV0dXJuIG1faGFzTm9uTG9jYWxH
ZW9tZXRyeTsgfQotCi0gICAgcHJpdmF0ZToKLSAgICAgICAgTGF5b3V0UmVjdCBtX2Rlc3RSZWN0
OwotICAgICAgICBMYXlvdXRQb2ludCBtX2Rlc3RPcmlnaW47Ci0gICAgICAgIExheW91dFBvaW50
IG1fcGhhc2U7Ci0gICAgICAgIExheW91dFNpemUgbV90aWxlU2l6ZTsKLSAgICAgICAgTGF5b3V0
U2l6ZSBtX3NwYWNlOwotICAgICAgICBib29sIG1faGFzTm9uTG9jYWxHZW9tZXRyeTsgLy8gSGFz
IGJhY2tncm91bmQtYXR0YWNobWVudDogZml4ZWQuIEltcGxpZXMgdGhhdCB3ZSBjYW4ndCBhbHdh
eXMgY2hlYXBseSBjb21wdXRlIGRlc3RSZWN0LgotICAgIH07Ci0KICAgICBMYXlvdXRQb2ludCBh
ZGp1c3RlZFBvc2l0aW9uUmVsYXRpdmVUb09mZnNldFBhcmVudChjb25zdCBMYXlvdXRQb2ludCYp
IGNvbnN0OwogCiAgICAgYm9vbCBoYXNCb3hEZWNvcmF0aW9uU3R5bGUoKSBjb25zdDsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCmluZGV4IDkyYWEyYWYuLmQ5ZDVkMjcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcApAQCAtODgsNiArODgs
NyBAQAogI2luY2x1ZGUgIlJlbmRlckxheWVyQmFja2luZy5oIgogI2luY2x1ZGUgIlJlbmRlckxh
eWVyQ29tcG9zaXRvci5oIgogI2luY2x1ZGUgIlJlbmRlckxheWVyRmlsdGVySW5mby5oIgorI2lu
Y2x1ZGUgIlJlbmRlckxheWVyTWFza0ltYWdlSW5mby5oIgogI2luY2x1ZGUgIlJlbmRlck1hcnF1
ZWUuaCIKICNpbmNsdWRlICJSZW5kZXJNdWx0aUNvbHVtbkZsb3dUaHJlYWQuaCIKICNpbmNsdWRl
ICJSZW5kZXJOYW1lZEZsb3dGcmFnbWVudC5oIgpAQCAtMTg5LDYgKzE5MCw3IEBAIFJlbmRlckxh
eWVyOjpSZW5kZXJMYXllcihSZW5kZXJMYXllck1vZGVsT2JqZWN0JiByZW5kZXJlckxheWVyTW9k
ZWxPYmplY3QpCiAgICAgLCBtX2xheWVyTGlzdE11dGF0aW9uQWxsb3dlZCh0cnVlKQogI2VuZGlm
CiAgICAgLCBtX2hhc0ZpbHRlckluZm8oZmFsc2UpCisgICAgLCBtX2hhc01hc2tJbWFnZUluZm8o
ZmFsc2UpCiAjaWYgRU5BQkxFKENTU19DT01QT1NJVElORykKICAgICAsIG1fYmxlbmRNb2RlKEJs
ZW5kTW9kZU5vcm1hbCkKICAgICAsIG1faGFzTm90SXNvbGF0ZWRDb21wb3NpdGVkQmxlbmRpbmdE
ZXNjZW5kYW50cyhmYWxzZSkKQEAgLTI1NSw2ICsyNTcsNyBAQCBSZW5kZXJMYXllcjo6flJlbmRl
ckxheWVyKCkKICAgICAgICAgcmVtb3ZlUmVmbGVjdGlvbigpOwogCiAgICAgRmlsdGVySW5mbzo6
cmVtb3ZlKCp0aGlzKTsKKyAgICBNYXNrSW1hZ2VJbmZvOjpyZW1vdmUoKnRoaXMpOwogCiAgICAg
Ly8gQ2hpbGQgbGF5ZXJzIHdpbGwgYmUgZGVsZXRlZCBieSB0aGVpciBjb3JyZXNwb25kaW5nIHJl
bmRlciBvYmplY3RzLCBzbwogICAgIC8vIHdlIGRvbid0IG5lZWQgdG8gZGVsZXRlIHRoZW0gb3Vy
c2VsdmVzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVy
LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuaAppbmRleCA0MTA5Mzg3
Li43MzEzNjcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5
ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuaApAQCAtMTI2
Niw2ICsxMjY2LDcgQEAgcHJpdmF0ZToKICNlbmRpZgogCiAgICAgYm9vbCBtX2hhc0ZpbHRlcklu
Zm8gOiAxOworICAgIHVuc2lnbmVkIG1faGFzTWFza0ltYWdlSW5mbyA6IDE7CiAKICNpZiBFTkFC
TEUoQ1NTX0NPTVBPU0lUSU5HKQogICAgIHVuc2lnbmVkIG1fYmxlbmRNb2RlIDogNTsKQEAgLTEz
NDIsNiArMTM0Myw3IEBAIHByaXZhdGU6CiAgICAgc3RkOjp1bmlxdWVfcHRyPFJlbmRlckxheWVy
QmFja2luZz4gbV9iYWNraW5nOwogCiAgICAgY2xhc3MgRmlsdGVySW5mbzsKKyAgICBjbGFzcyBN
YXNrSW1hZ2VJbmZvOwogfTsKIAogaW5saW5lIHZvaWQgUmVuZGVyTGF5ZXI6OmNsZWFyWk9yZGVy
TGlzdHMoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVy
TWFza0ltYWdlSW5mby5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJN
YXNrSW1hZ2VJbmZvLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43ZjY2
OWIwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxh
eWVyTWFza0ltYWdlSW5mby5jcHAKQEAgLTAsMCArMSwxNDEgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTQgQWRvYmUgU3lzdGVtcyBJbmNvcnBvcmF0ZWQuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJ
R0hUIEhPTERFUiAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQg
SE9MREVSIEJFCisgKiBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksCisgKiBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
CisgKiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YKKyAqIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRgorICogU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1
ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlJlbmRlckxheWVyTWFza0ltYWdlSW5mby5oIgorCisj
aW5jbHVkZSAiQ2FjaGVkU1ZHRG9jdW1lbnQuaCIKKyNpbmNsdWRlICJDYWNoZWRTVkdEb2N1bWVu
dFJlZmVyZW5jZS5oIgorI2luY2x1ZGUgIlJlbmRlclNWR1Jlc291cmNlQ29udGFpbmVyLmgiCisj
aW5jbHVkZSAiU1ZHRWxlbWVudC5oIgorI2luY2x1ZGUgIlNWR01hc2tFbGVtZW50LmgiCisjaW5j
bHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworSGFz
aE1hcDxjb25zdCBSZW5kZXJMYXllciosIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJMYXllcjo6TWFz
a0ltYWdlSW5mbz4+JiBSZW5kZXJMYXllcjo6TWFza0ltYWdlSW5mbzo6bGF5ZXJUb01hc2tNYXAo
KQoreworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxIYXNoTWFwPGNvbnN0IFJlbmRlckxheWVy
Kiwgc3RkOjp1bmlxdWVfcHRyPE1hc2tJbWFnZUluZm8+Pj4gbGF5ZXJUb01hc2tNYXA7CisgICAg
cmV0dXJuIGxheWVyVG9NYXNrTWFwOworfQorCitSZW5kZXJMYXllcjo6TWFza0ltYWdlSW5mbyog
UmVuZGVyTGF5ZXI6Ok1hc2tJbWFnZUluZm86OmdldElmRXhpc3RzKGNvbnN0IFJlbmRlckxheWVy
JiBsYXllcikKK3sKKyAgICBBU1NFUlQobGF5ZXIubV9oYXNNYXNrSW1hZ2VJbmZvID09IGxheWVy
VG9NYXNrTWFwKCkuY29udGFpbnMoJmxheWVyKSk7CisgICAgcmV0dXJuIGxheWVyLm1faGFzTWFz
a0ltYWdlSW5mbyA/IGxheWVyVG9NYXNrTWFwKCkuZ2V0KCZsYXllcikgOiAwOworfQorCitSZW5k
ZXJMYXllcjo6TWFza0ltYWdlSW5mbyYgUmVuZGVyTGF5ZXI6Ok1hc2tJbWFnZUluZm86OmdldChS
ZW5kZXJMYXllciYgbGF5ZXIpCit7CisgICAgQVNTRVJUKGxheWVyLm1faGFzTWFza0ltYWdlSW5m
byA9PSBsYXllclRvTWFza01hcCgpLmNvbnRhaW5zKCZsYXllcikpOworCisgICAgYXV0byYgaW5m
byA9IGxheWVyVG9NYXNrTWFwKCkuYWRkKCZsYXllciwgbnVsbHB0cikuaXRlcmF0b3ItPnZhbHVl
OworICAgIGlmICghaW5mbykgeworICAgICAgICBpbmZvID0gc3RkOjptYWtlX3VuaXF1ZTxNYXNr
SW1hZ2VJbmZvPihsYXllcik7CisgICAgICAgIGxheWVyLm1faGFzTWFza0ltYWdlSW5mbyA9IHRy
dWU7CisgICAgfQorICAgIHJldHVybiAqaW5mbzsKK30KKwordm9pZCBSZW5kZXJMYXllcjo6TWFz
a0ltYWdlSW5mbzo6cmVtb3ZlKFJlbmRlckxheWVyJiBsYXllcikKK3sKKyAgICBBU1NFUlQobGF5
ZXIubV9oYXNNYXNrSW1hZ2VJbmZvID09IGxheWVyVG9NYXNrTWFwKCkuY29udGFpbnMoJmxheWVy
KSk7CisKKyAgICBpZiAobGF5ZXJUb01hc2tNYXAoKS5yZW1vdmUoJmxheWVyKSkKKyAgICAgICAg
bGF5ZXIubV9oYXNNYXNrSW1hZ2VJbmZvID0gZmFsc2U7Cit9CisKK1JlbmRlckxheWVyOjpNYXNr
SW1hZ2VJbmZvOjpNYXNrSW1hZ2VJbmZvKFJlbmRlckxheWVyJiBsYXllcikKKyAgICA6IG1fbGF5
ZXIobGF5ZXIpCit7CisgICAgbV9zdmdEb2N1bWVudENsaWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8
TWFza1NWR0RvY3VtZW50Q2xpZW50Pih0aGlzKTsKKyAgICBtX2ltYWdlQ2xpZW50ID0gc3RkOjpt
YWtlX3VuaXF1ZTxNYXNrSW1hZ2VDbGllbnQ+KHRoaXMpOworfQorCitSZW5kZXJMYXllcjo6TWFz
a0ltYWdlSW5mbzo6fk1hc2tJbWFnZUluZm8oKQoreworICAgIHJlbW92ZU1hc2tJbWFnZUNsaWVu
dHMoKTsKK30KKwordm9pZCBSZW5kZXJMYXllcjo6TWFza0ltYWdlSW5mbzo6bm90aWZ5RmluaXNo
ZWQoQ2FjaGVkUmVzb3VyY2UqKQoreworICAgIG1fbGF5ZXIucmVuZGVyZXIoKS5yZXBhaW50KCk7
Cit9CisKK3ZvaWQgUmVuZGVyTGF5ZXI6Ok1hc2tJbWFnZUluZm86OmltYWdlQ2hhbmdlZChDYWNo
ZWRJbWFnZSosIGNvbnN0IEludFJlY3QqKQoreworICAgIG1fbGF5ZXIucmVuZGVyZXIoKS5yZXBh
aW50KCk7Cit9CisKK3ZvaWQgUmVuZGVyTGF5ZXI6Ok1hc2tJbWFnZUluZm86OnVwZGF0ZU1hc2tJ
bWFnZUNsaWVudHMoKQoreworICAgIHJlbW92ZU1hc2tJbWFnZUNsaWVudHMoKTsKKyAgICAKKyAg
ICBjb25zdCBGaWxsTGF5ZXIqIG1hc2tMYXllciA9IG1fbGF5ZXIucmVuZGVyZXIoKS5zdHlsZSgp
Lm1hc2tMYXllcnMoKTsKKyAgICB3aGlsZSAobWFza0xheWVyKSB7CisgICAgICAgIGNvbnN0IFJl
ZlB0cjxNYXNrSW1hZ2VPcGVyYXRpb24+IG1hc2tJbWFnZSA9IG1hc2tMYXllci0+bWFza0ltYWdl
KCk7CisgICAgICAgIG1hc2tJbWFnZS0+c2V0UmVuZGVyTGF5ZXJJbWFnZUNsaWVudChtX2ltYWdl
Q2xpZW50LmdldCgpKTsKKyAgICAgICAgQ2FjaGVkU1ZHRG9jdW1lbnRSZWZlcmVuY2UqIGRvY3Vt
ZW50UmVmZXJlbmNlID0gbWFza0ltYWdlLT5jYWNoZWRTVkdEb2N1bWVudFJlZmVyZW5jZSgpOwor
ICAgICAgICBDYWNoZWRTVkdEb2N1bWVudCogY2FjaGVkU1ZHRG9jdW1lbnQgPSBkb2N1bWVudFJl
ZmVyZW5jZSA/IGRvY3VtZW50UmVmZXJlbmNlLT5kb2N1bWVudCgpIDogMDsKKyAgICAgICAgCisg
ICAgICAgIGlmIChjYWNoZWRTVkdEb2N1bWVudCkgeworICAgICAgICAgICAgLy8gUmVmZXJlbmNl
IGlzIGV4dGVybmFsOyB3YWl0IGZvciBub3RpZnlGaW5pc2hlZCgpLgorICAgICAgICAgICAgY2Fj
aGVkU1ZHRG9jdW1lbnQtPmFkZENsaWVudChtX3N2Z0RvY3VtZW50Q2xpZW50LmdldCgpKTsKKyAg
ICAgICAgICAgIG1fZXh0ZXJuYWxTVkdSZWZlcmVuY2VzLmFwcGVuZChjYWNoZWRTVkdEb2N1bWVu
dCk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAvLyBSZWZlcmVuY2UgaXMgaW50ZXJu
YWw7IGFkZCBsYXllciBhcyBhIGNsaWVudCBzbyB3ZSBjYW4gdHJpZ2dlcgorICAgICAgICAgICAg
Ly8gbWFzayByZXBhaW50IG9uIFNWRyBhdHRyaWJ1dGUgY2hhbmdlLgorICAgICAgICAgICAgRWxl
bWVudCogbWFza2VyID0gbV9sYXllci5yZW5kZXJlcigpLmRvY3VtZW50KCkuZ2V0RWxlbWVudEJ5
SWQobWFza0ltYWdlLT5mcmFnbWVudCgpKTsKKyAgICAgICAgICAgIGlmIChtYXNrZXIgJiYgaXM8
U1ZHTWFza0VsZW1lbnQ+KG1hc2tlcikpIHsKKyAgICAgICAgICAgICAgICBkb3duY2FzdDxTVkdN
YXNrRWxlbWVudD4obWFza2VyKS0+YWRkQ2xpZW50UmVuZGVyTGF5ZXIoJm1fbGF5ZXIpOworICAg
ICAgICAgICAgICAgIG1faW50ZXJuYWxTVkdSZWZlcmVuY2VzLmFwcGVuZChtYXNrZXIpOworICAg
ICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIAorICAgICAgICBtYXNrTGF5ZXIgPSBtYXNr
TGF5ZXItPm5leHQoKTsKKyAgICB9Cit9CisKK3ZvaWQgUmVuZGVyTGF5ZXI6Ok1hc2tJbWFnZUlu
Zm86OnJlbW92ZU1hc2tJbWFnZUNsaWVudHMoKQoreworICAgIGNvbnN0IEZpbGxMYXllciogbWFz
a0xheWVyID0gbV9sYXllci5yZW5kZXJlcigpLnN0eWxlKCkubWFza0xheWVycygpOworICAgIHdo
aWxlIChtYXNrTGF5ZXIpIHsKKyAgICAgICAgaWYgKG1hc2tMYXllci0+bWFza0ltYWdlKCkpCisg
ICAgICAgICAgICBtYXNrTGF5ZXItPm1hc2tJbWFnZSgpLT5zZXRSZW5kZXJMYXllckltYWdlQ2xp
ZW50KG51bGxwdHIpOworCisgICAgICAgIG1hc2tMYXllciA9IG1hc2tMYXllci0+bmV4dCgpOwor
ICAgIH0KKyAgICAKKyAgICBmb3IgKGF1dG8gZXh0ZXJuYWxTVkdSZWZlcmVuY2UgOiBtX2V4dGVy
bmFsU1ZHUmVmZXJlbmNlcykKKyAgICAgICAgZXh0ZXJuYWxTVkdSZWZlcmVuY2UtPnJlbW92ZUNs
aWVudChtX3N2Z0RvY3VtZW50Q2xpZW50LmdldCgpKTsKKyAgICBtX2V4dGVybmFsU1ZHUmVmZXJl
bmNlcy5jbGVhcigpOworICAgIAorICAgIGZvciAoYXV0byBpbnRlcm5hbFNWR1JlZmVyZW5jZSA6
IG1faW50ZXJuYWxTVkdSZWZlcmVuY2VzKQorICAgICAgICBkb3duY2FzdDxTVkdNYXNrRWxlbWVu
dD4oaW50ZXJuYWxTVkdSZWZlcmVuY2UuZ2V0KCkpLT5yZW1vdmVDbGllbnRSZW5kZXJMYXllcigm
bV9sYXllcik7CisgICAgbV9pbnRlcm5hbFNWR1JlZmVyZW5jZXMuY2xlYXIoKTsKK30KKworfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckxheWVyTWFza0ltYWdlSW5mby5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckxheWVyTWFza0ltYWdlSW5mby5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAuLjFkNTA3OWYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyTGF5ZXJNYXNrSW1hZ2VJbmZvLmgKQEAgLTAsMCArMSwxMDMgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTQgQWRvYmUgU3lzdGVtcyBJbmNvcnBvcmF0ZWQuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUg
Q09QWVJJR0hUIEhPTERFUiAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZ
UklHSFQgSE9MREVSIEJFCisgKiBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksCisgKiBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAq
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SCisgKiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YKKyAqIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRgorICogU1VDSCBEQU1BR0UuCisgKi8KKwor
I2lmbmRlZiBSZW5kZXJMYXllck1hc2tJbWFnZUluZm9faAorI2RlZmluZSBSZW5kZXJMYXllck1h
c2tJbWFnZUluZm9faAorCisjaW5jbHVkZSAiQ2FjaGVkSW1hZ2VDbGllbnQuaCIKKyNpbmNsdWRl
ICJDYWNoZWRSZXNvdXJjZUhhbmRsZS5oIgorI2luY2x1ZGUgIkNhY2hlZFNWR0RvY3VtZW50Q2xp
ZW50LmgiCisjaW5jbHVkZSAiTWFza0ltYWdlT3BlcmF0aW9uLmgiCisjaW5jbHVkZSAiUmVuZGVy
TGF5ZXIuaCIKKyNpbmNsdWRlIDxtZW1vcnk+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xh
c3MgRWxlbWVudDsKKworY2xhc3MgUmVuZGVyTGF5ZXI6Ok1hc2tJbWFnZUluZm8gZmluYWwgewor
cHJpdmF0ZToKKyAgICBjbGFzcyBNYXNrUmVzb3VyY2VDbGllbnQgeworICAgIHB1YmxpYzoKKyAg
ICAgICAgTWFza1Jlc291cmNlQ2xpZW50KFJlbmRlckxheWVyOjpNYXNrSW1hZ2VJbmZvKiBtYXNr
SW1hZ2VJbmZvKQorICAgICAgICAgICAgOiBtX21hc2tJbWFnZUluZm8obWFza0ltYWdlSW5mbykK
KyAgICAgICAgeworICAgICAgICAgICAgQVNTRVJUKG1fbWFza0ltYWdlSW5mbyk7CisgICAgICAg
IH0KKyAgICBwcm90ZWN0ZWQ6CisgICAgICAgIFJlbmRlckxheWVyOjpNYXNrSW1hZ2VJbmZvKiBt
X21hc2tJbWFnZUluZm87CisgICAgfTsKKyAgICAKKyAgICBjbGFzcyBNYXNrU1ZHRG9jdW1lbnRD
bGllbnQgOiBwdWJsaWMgTWFza1Jlc291cmNlQ2xpZW50LCBwdWJsaWMgQ2FjaGVkU1ZHRG9jdW1l
bnRDbGllbnQgeworICAgIHB1YmxpYzoKKyAgICAgICAgTWFza1NWR0RvY3VtZW50Q2xpZW50KFJl
bmRlckxheWVyOjpNYXNrSW1hZ2VJbmZvKiBtYXNrSW1hZ2VJbmZvKQorICAgICAgICAgICAgOiBN
YXNrUmVzb3VyY2VDbGllbnQobWFza0ltYWdlSW5mbykKKyAgICAgICAgeworICAgICAgICB9Cisg
ICAgICAgIAorICAgICAgICB2aXJ0dWFsIHZvaWQgbm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3Vy
Y2UqIHJlc291cmNlKSBvdmVycmlkZSB7IG1fbWFza0ltYWdlSW5mby0+bm90aWZ5RmluaXNoZWQo
cmVzb3VyY2UpOyB9CisgICAgfTsKKyAgICAKKyAgICBjbGFzcyBNYXNrSW1hZ2VDbGllbnQgOiBw
dWJsaWMgTWFza1Jlc291cmNlQ2xpZW50LCBwdWJsaWMgQ2FjaGVkSW1hZ2VDbGllbnQgeworICAg
IHB1YmxpYzoKKyAgICAgICAgTWFza0ltYWdlQ2xpZW50KFJlbmRlckxheWVyOjpNYXNrSW1hZ2VJ
bmZvKiBtYXNrSW1hZ2VJbmZvKQorICAgICAgICAgICAgOiBNYXNrUmVzb3VyY2VDbGllbnQobWFz
a0ltYWdlSW5mbykKKyAgICAgICAgeworICAgICAgICB9CisgICAgICAgIAorICAgICAgICB2aXJ0
dWFsIHZvaWQgaW1hZ2VDaGFuZ2VkKENhY2hlZEltYWdlKiBpbWFnZSwgY29uc3QgSW50UmVjdCog
cmVjdCA9IG51bGxwdHIpIG92ZXJyaWRlIHsgbV9tYXNrSW1hZ2VJbmZvLT5pbWFnZUNoYW5nZWQo
aW1hZ2UsIHJlY3QpOyB9CisgICAgfTsKKworcHVibGljOgorICAgIHN0YXRpYyBNYXNrSW1hZ2VJ
bmZvJiBnZXQoUmVuZGVyTGF5ZXImKTsKKyAgICBzdGF0aWMgTWFza0ltYWdlSW5mbyogZ2V0SWZF
eGlzdHMoY29uc3QgUmVuZGVyTGF5ZXImKTsKKyAgICBzdGF0aWMgdm9pZCByZW1vdmUoUmVuZGVy
TGF5ZXImKTsKKworICAgIGV4cGxpY2l0IE1hc2tJbWFnZUluZm8oUmVuZGVyTGF5ZXImKTsKKyAg
ICB+TWFza0ltYWdlSW5mbygpOworCisgICAgdm9pZCB1cGRhdGVNYXNrSW1hZ2VDbGllbnRzKCk7
CisgICAgdm9pZCByZW1vdmVNYXNrSW1hZ2VDbGllbnRzKCk7CisKK3ByaXZhdGU6CisgICAgZnJp
ZW5kIHZvaWQgV1RGOjpkZWxldGVPd25lZFB0cjxNYXNrSW1hZ2VJbmZvPihNYXNrSW1hZ2VJbmZv
Kik7CisKKyAgICB2b2lkIG5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlKik7CisgICAgdm9p
ZCBpbWFnZUNoYW5nZWQoQ2FjaGVkSW1hZ2UqLCBjb25zdCBJbnRSZWN0Kik7CisKKyAgICBzdGF0
aWMgSGFzaE1hcDxjb25zdCBSZW5kZXJMYXllciosIHN0ZDo6dW5pcXVlX3B0cjxNYXNrSW1hZ2VJ
bmZvPj4mIGxheWVyVG9NYXNrTWFwKCk7CisKKyAgICBSZW5kZXJMYXllciYgbV9sYXllcjsKKwor
ICAgIFZlY3RvcjxSZWZQdHI8RWxlbWVudD4+IG1faW50ZXJuYWxTVkdSZWZlcmVuY2VzOworICAg
IFZlY3RvcjxDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRTVkdEb2N1bWVudD4+IG1fZXh0ZXJu
YWxTVkdSZWZlcmVuY2VzOworICAgIHN0ZDo6dW5pcXVlX3B0cjxNYXNrU1ZHRG9jdW1lbnRDbGll
bnQ+IG1fc3ZnRG9jdW1lbnRDbGllbnQ7CisgICAgc3RkOjp1bmlxdWVfcHRyPE1hc2tJbWFnZUNs
aWVudD4gbV9pbWFnZUNsaWVudDsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2Vu
ZGlmIC8vIFJlbmRlckxheWVyTWFza0ltYWdlSW5mb19oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3R5bGUvRmlsbExheWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdHlsZS9GaWxsTGF5ZXIuY3BwCmluZGV4IGI5MWZiZTcuLjgyZDkzNjUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9GaWxsTGF5ZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9GaWxsTGF5ZXIuY3BwCkBAIC0yOCw2ICsyOCw3
IEBAIHN0cnVjdCBTYW1lU2l6ZUFzRmlsbExheWVyIHsKICAgICBGaWxsTGF5ZXIqIG5leHQ7CiAK
ICAgICBSZWZQdHI8U3R5bGVJbWFnZT4gaW1hZ2U7CisgICAgUmVmUHRyPE1hc2tJbWFnZU9wZXJh
dGlvbj4gbWFza0ltYWdlT3BlcmF0aW9uOwogCiAgICAgTGVuZ3RoIHg7CiAgICAgTGVuZ3RoIHk7
CkBAIC03NCw2ICs3NSw3IEBAIEZpbGxMYXllcjo6RmlsbExheWVyKEVGaWxsTGF5ZXJUeXBlIHR5
cGUpCiAKIEZpbGxMYXllcjo6RmlsbExheWVyKGNvbnN0IEZpbGxMYXllciYgbykKICAgICA6IG1f
bmV4dChvLm1fbmV4dCA/IHN0ZDo6bWFrZV91bmlxdWU8RmlsbExheWVyPigqby5tX25leHQpIDog
bnVsbHB0cikKKyAgICAsIG1fbWFza0ltYWdlT3BlcmF0aW9uKG8ubV9tYXNrSW1hZ2VPcGVyYXRp
b24pCiAgICAgLCBtX2ltYWdlKG8ubV9pbWFnZSkKICAgICAsIG1feFBvc2l0aW9uKG8ubV94UG9z
aXRpb24pCiAgICAgLCBtX3lQb3NpdGlvbihvLm1feVBvc2l0aW9uKQpAQCAtMTE2LDYgKzExOCw3
IEBAIEZpbGxMYXllciYgRmlsbExheWVyOjpvcGVyYXRvcj0oY29uc3QgRmlsbExheWVyJiBvKQog
ICAgIG1fbmV4dCA9IG8ubV9uZXh0ID8gc3RkOjptYWtlX3VuaXF1ZTxGaWxsTGF5ZXI+KCpvLm1f
bmV4dCkgOiBudWxscHRyOwogCiAgICAgbV9pbWFnZSA9IG8ubV9pbWFnZTsKKyAgICBtX21hc2tJ
bWFnZU9wZXJhdGlvbiA9IG8ubV9tYXNrSW1hZ2VPcGVyYXRpb247CiAgICAgbV94UG9zaXRpb24g
PSBvLm1feFBvc2l0aW9uOwogICAgIG1feVBvc2l0aW9uID0gby5tX3lQb3NpdGlvbjsKICAgICBt
X2JhY2tncm91bmRYT3JpZ2luID0gby5tX2JhY2tncm91bmRYT3JpZ2luOwpAQCAtMTUzLDcgKzE1
Niw4IEBAIGJvb2wgRmlsbExheWVyOjpvcGVyYXRvcj09KGNvbnN0IEZpbGxMYXllciYgbykgY29u
c3QKIHsKICAgICAvLyBXZSBkbyBub3QgY2hlY2sgdGhlICJpc1NldCIgYm9vbGVhbnMgZm9yIGVh
Y2ggcHJvcGVydHksIHNpbmNlIHRob3NlIGFyZSBvbmx5IHVzZWQgZHVyaW5nIGluaXRpYWwgY29u
c3RydWN0aW9uCiAgICAgLy8gdG8gcHJvcGFnYXRlIHBhdHRlcm5zIGludG8gbGF5ZXJzLiBBbGwg
bGF5ZXIgY29tcGFyaXNvbnMgaGFwcGVuIGFmdGVyIHZhbHVlcyBoYXZlIGFsbCBiZWVuIGZpbGxl
ZCBpbiBhbnl3YXkuCi0gICAgcmV0dXJuIFN0eWxlSW1hZ2U6OmltYWdlc0VxdWl2YWxlbnQobV9p
bWFnZS5nZXQoKSwgby5tX2ltYWdlLmdldCgpKSAmJiBtX3hQb3NpdGlvbiA9PSBvLm1feFBvc2l0
aW9uICYmIG1feVBvc2l0aW9uID09IG8ubV95UG9zaXRpb24KKyAgICByZXR1cm4gU3R5bGVJbWFn
ZTo6aW1hZ2VzRXF1aXZhbGVudChtX2ltYWdlLmdldCgpLCBvLm1faW1hZ2UuZ2V0KCkpICYmIG1f
bWFza0ltYWdlT3BlcmF0aW9uID09IG8ubV9tYXNrSW1hZ2VPcGVyYXRpb24KKyAgICAgICAgJiYg
bV94UG9zaXRpb24gPT0gby5tX3hQb3NpdGlvbiAmJiBtX3lQb3NpdGlvbiA9PSBvLm1feVBvc2l0
aW9uCiAgICAgICAgICYmIG1fYmFja2dyb3VuZFhPcmlnaW4gPT0gby5tX2JhY2tncm91bmRYT3Jp
Z2luICYmIG1fYmFja2dyb3VuZFlPcmlnaW4gPT0gby5tX2JhY2tncm91bmRZT3JpZ2luCiAgICAg
ICAgICYmIG1fYXR0YWNobWVudCA9PSBvLm1fYXR0YWNobWVudCAmJiBtX2NsaXAgPT0gby5tX2Ns
aXAgJiYgbV9jb21wb3NpdGUgPT0gby5tX2NvbXBvc2l0ZQogICAgICAgICAmJiBtX2JsZW5kTW9k
ZSA9PSBvLm1fYmxlbmRNb2RlICYmIG1fb3JpZ2luID09IG8ubV9vcmlnaW4gJiYgbV9yZXBlYXRY
ID09IG8ubV9yZXBlYXRYCkBAIC0yODgsMTMgKzI5MiwyMSBAQCB2b2lkIEZpbGxMYXllcjo6Zmls
bFVuc2V0UHJvcGVydGllcygpCiB2b2lkIEZpbGxMYXllcjo6Y3VsbEVtcHR5TGF5ZXJzKCkKIHsK
ICAgICBmb3IgKEZpbGxMYXllciogbGF5ZXIgPSB0aGlzOyBsYXllcjsgbGF5ZXIgPSBsYXllci0+
bV9uZXh0LmdldCgpKSB7Ci0gICAgICAgIGlmIChsYXllci0+bV9uZXh0ICYmICFsYXllci0+bV9u
ZXh0LT5pc0ltYWdlU2V0KCkpIHsKKyAgICAgICAgaWYgKGxheWVyLT5tX25leHQgJiYgIWxheWVy
LT5tX25leHQtPmlzSW1hZ2VTZXQoKSAmJiAhbGF5ZXItPm1fbmV4dC0+aGFzTWFza0ltYWdlKCkp
IHsKICAgICAgICAgICAgIGxheWVyLT5tX25leHQgPSBudWxscHRyOwogICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgIH0KICAgICB9CiB9CiAKK2Jvb2wgRmlsbExheWVyOjpoYXNOb25FbXB0eU1h
c2tJbWFnZSgpIGNvbnN0Cit7CisgICAgaWYgKGhhc01hc2tJbWFnZSgpICYmICFtYXNrSW1hZ2Uo
KS0+aXNDU1NWYWx1ZU5vbmUoKSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgCisgICAgcmV0
dXJuIChuZXh0KCkgPyBuZXh0KCktPmhhc05vbkVtcHR5TWFza0ltYWdlKCkgOiBmYWxzZSk7Cit9
CisKIHN0YXRpYyBpbmxpbmUgRUZpbGxCb3ggY2xpcE1heChFRmlsbEJveCBjbGlwQSwgRUZpbGxC
b3ggY2xpcEIpCiB7CiAgICAgaWYgKGNsaXBBID09IEJvcmRlckZpbGxCb3ggfHwgY2xpcEIgPT0g
Qm9yZGVyRmlsbEJveCkKQEAgLTM0MCw2ICszNTIsOSBAQCBib29sIEZpbGxMYXllcjo6aW1hZ2Vz
QXJlTG9hZGVkKCkgY29uc3QKICAgICBmb3IgKGF1dG8qIGxheWVyID0gdGhpczsgbGF5ZXI7IGxh
eWVyID0gbGF5ZXItPm1fbmV4dC5nZXQoKSkgewogICAgICAgICBpZiAobGF5ZXItPm1faW1hZ2Ug
JiYgIWxheWVyLT5tX2ltYWdlLT5pc0xvYWRlZCgpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgICAgICAKKyAgICAgICAgaWYgKGxheWVyLT5oYXNNYXNrSW1hZ2UoKSAmJiAhbGF5ZXIt
Pm1hc2tJbWFnZSgpLT5pc01hc2tMb2FkZWQoKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICB9CiAgICAgcmV0dXJuIHRydWU7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3R5bGUvRmlsbExheWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5
bGUvRmlsbExheWVyLmgKaW5kZXggOWJlYjdiZi4uZGY0NDg3YSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0ZpbGxMYXllci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdHlsZS9GaWxsTGF5ZXIuaApAQCAtMjcsNiArMjcsNyBAQAogCiAjaW5jbHVk
ZSAiR3JhcGhpY3NUeXBlcy5oIgogI2luY2x1ZGUgIkxlbmd0aFNpemUuaCIKKyNpbmNsdWRlICJN
YXNrSW1hZ2VPcGVyYXRpb24uaCIKICNpbmNsdWRlICJSZW5kZXJTdHlsZUNvbnN0YW50cy5oIgog
I2luY2x1ZGUgIlN0eWxlSW1hZ2UuaCIKICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CkBAIC02Nyw3
ICs2OCw5IEBAIHB1YmxpYzoKICAgICBleHBsaWNpdCBGaWxsTGF5ZXIoRUZpbGxMYXllclR5cGUp
OwogICAgIH5GaWxsTGF5ZXIoKTsKIAorICAgIGNvbnN0IFJlZlB0cjxNYXNrSW1hZ2VPcGVyYXRp
b24+JiBtYXNrSW1hZ2UoKSBjb25zdCB7IHJldHVybiBtX21hc2tJbWFnZU9wZXJhdGlvbjsgfQog
ICAgIFN0eWxlSW1hZ2UqIGltYWdlKCkgY29uc3QgeyByZXR1cm4gbV9pbWFnZS5nZXQoKTsgfQor
ICAgIFN0eWxlSW1hZ2UqIGltYWdlT3JNYXNrSW1hZ2UoKSBjb25zdCB7IHJldHVybiBoYXNNYXNr
SW1hZ2UoKSA/IG1hc2tJbWFnZSgpLT5pbWFnZSgpIDogaW1hZ2UoKTsgfQogICAgIGNvbnN0IExl
bmd0aCYgeFBvc2l0aW9uKCkgY29uc3QgeyByZXR1cm4gbV94UG9zaXRpb247IH0KICAgICBjb25z
dCBMZW5ndGgmIHlQb3NpdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1feVBvc2l0aW9uOyB9CiAgICAg
QmFja2dyb3VuZEVkZ2VPcmlnaW4gYmFja2dyb3VuZFhPcmlnaW4oKSBjb25zdCB7IHJldHVybiBz
dGF0aWNfY2FzdDxCYWNrZ3JvdW5kRWRnZU9yaWdpbj4obV9iYWNrZ3JvdW5kWE9yaWdpbik7IH0K
QEAgLTEwMSw2ICsxMDQsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc1NpemVTZXQoKSBjb25zdCB7
IHJldHVybiBtX3NpemVUeXBlICE9IFNpemVOb25lOyB9CiAgICAgYm9vbCBpc01hc2tTb3VyY2VU
eXBlU2V0KCkgY29uc3QgeyByZXR1cm4gbV9tYXNrU291cmNlVHlwZVNldDsgfQogCisgICAgdm9p
ZCBzZXRNYXNrSW1hZ2UoUGFzc1JlZlB0cjxNYXNrSW1hZ2VPcGVyYXRpb24+IG1hc2tJbWFnZSkg
eyBtX21hc2tJbWFnZU9wZXJhdGlvbiA9IG1hc2tJbWFnZTsgfQogICAgIHZvaWQgc2V0SW1hZ2Uo
UGFzc1JlZlB0cjxTdHlsZUltYWdlPiBpbWFnZSkgeyBtX2ltYWdlID0gaW1hZ2U7IG1faW1hZ2VT
ZXQgPSB0cnVlOyB9CiAgICAgdm9pZCBzZXRYUG9zaXRpb24oTGVuZ3RoIGxlbmd0aCkgeyBtX3hQ
b3NpdGlvbiA9IFdURjo6bW92ZShsZW5ndGgpOyBtX3hQb3NTZXQgPSB0cnVlOyB9CiAgICAgdm9p
ZCBzZXRZUG9zaXRpb24oTGVuZ3RoIGxlbmd0aCkgeyBtX3lQb3NpdGlvbiA9IFdURjo6bW92ZShs
ZW5ndGgpOyBtX3lQb3NTZXQgPSB0cnVlOyB9CkBAIC0xMTgsNiArMTIyLDcgQEAgcHVibGljOgog
ICAgIHZvaWQgc2V0U2l6ZShGaWxsU2l6ZSBmKSB7IG1fc2l6ZVR5cGUgPSBmLnR5cGU7IG1fc2l6
ZUxlbmd0aCA9IGYuc2l6ZTsgfQogICAgIHZvaWQgc2V0TWFza1NvdXJjZVR5cGUoRU1hc2tTb3Vy
Y2VUeXBlIG0pIHsgbV9tYXNrU291cmNlVHlwZSA9IG07IG1fbWFza1NvdXJjZVR5cGVTZXQgPSB0
cnVlOyB9CiAKKyAgICB2b2lkIGNsZWFyTWFza0ltYWdlKCkgeyBtX21hc2tJbWFnZU9wZXJhdGlv
bi5jbGVhcigpOyB9CiAgICAgdm9pZCBjbGVhckltYWdlKCkgeyBtX2ltYWdlLmNsZWFyKCk7IG1f
aW1hZ2VTZXQgPSBmYWxzZTsgfQogICAgIHZvaWQgY2xlYXJYUG9zaXRpb24oKSB7IG1feFBvc1Nl
dCA9IGZhbHNlOyBtX2JhY2tncm91bmRPcmlnaW5TZXQgPSBmYWxzZTsgfQogICAgIHZvaWQgY2xl
YXJZUG9zaXRpb24oKSB7IG1feVBvc1NldCA9IGZhbHNlOyBtX2JhY2tncm91bmRPcmlnaW5TZXQg
PSBmYWxzZTsgfQpAQCAtMTQzLDYgKzE0OCw4IEBAIHB1YmxpYzoKICAgICBib29sIGNvbnRhaW5z
SW1hZ2UoU3R5bGVJbWFnZSYpIGNvbnN0OwogICAgIGJvb2wgaW1hZ2VzQXJlTG9hZGVkKCkgY29u
c3Q7CiAgICAgYm9vbCBoYXNJbWFnZSgpIGNvbnN0OworICAgIGJvb2wgaGFzTWFza0ltYWdlKCkg
Y29uc3QgeyByZXR1cm4gbWFza0ltYWdlKCkuZ2V0KCk7IH0KKyAgICBib29sIGhhc05vbkVtcHR5
TWFza0ltYWdlKCkgY29uc3Q7CiAgICAgYm9vbCBoYXNGaXhlZEltYWdlKCkgY29uc3Q7CiAgICAg
Ym9vbCBoYXNPcGFxdWVJbWFnZShjb25zdCBSZW5kZXJFbGVtZW50JikgY29uc3Q7CiAgICAgYm9v
bCBoYXNSZXBlYXRYWSgpIGNvbnN0OwpAQCAtMTc1LDYgKzE4Miw3IEBAIHByaXZhdGU6CiAKICAg
ICBzdGQ6OnVuaXF1ZV9wdHI8RmlsbExheWVyPiBtX25leHQ7CiAKKyAgICBSZWZQdHI8TWFza0lt
YWdlT3BlcmF0aW9uPiBtX21hc2tJbWFnZU9wZXJhdGlvbjsKICAgICBSZWZQdHI8U3R5bGVJbWFn
ZT4gbV9pbWFnZTsKIAogICAgIExlbmd0aCBtX3hQb3NpdGlvbjsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VNYXNrZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZU1hc2tlci5jcHAKaW5k
ZXggMzdmMmMwOS4uMTBiYzBhYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N2Zy9SZW5kZXJTVkdSZXNvdXJjZU1hc2tlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZU1hc2tlci5jcHAKQEAgLTI1LDYgKzI1LDcgQEAK
ICNpbmNsdWRlICJGbG9hdFBvaW50LmgiCiAjaW5jbHVkZSAiSW1hZ2UuaCIKICNpbmNsdWRlICJJ
bnRSZWN0LmgiCisjaW5jbHVkZSAiUmVuZGVyQm94TW9kZWxPYmplY3QuaCIKICNpbmNsdWRlICJT
VkdSZW5kZXJpbmdDb250ZXh0LmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTUzLDEwICs1
NCw5IEBAIHZvaWQgUmVuZGVyU1ZHUmVzb3VyY2VNYXNrZXI6OnJlbW92ZUNsaWVudEZyb21DYWNo
ZShSZW5kZXJFbGVtZW50JiBjbGllbnQsIGJvb2wKICAgICBtYXJrQ2xpZW50Rm9ySW52YWxpZGF0
aW9uKGNsaWVudCwgbWFya0ZvckludmFsaWRhdGlvbiA/IEJvdW5kYXJpZXNJbnZhbGlkYXRpb24g
OiBQYXJlbnRPbmx5SW52YWxpZGF0aW9uKTsKIH0KIAotYm9vbCBSZW5kZXJTVkdSZXNvdXJjZU1h
c2tlcjo6YXBwbHlSZXNvdXJjZShSZW5kZXJFbGVtZW50JiByZW5kZXJlciwgY29uc3QgUmVuZGVy
U3R5bGUmLCBHcmFwaGljc0NvbnRleHQqJiBjb250ZXh0LCB1bnNpZ25lZCBzaG9ydCByZXNvdXJj
ZU1vZGUpCitib29sIFJlbmRlclNWR1Jlc291cmNlTWFza2VyOjphcHBseVNWR01hc2soUmVuZGVy
RWxlbWVudCYgcmVuZGVyZXIsIEdyYXBoaWNzQ29udGV4dComIGNvbnRleHQsIGJvb2wgYXBwbHlD
bGlwKQogewogICAgIEFTU0VSVChjb250ZXh0KTsKLSAgICBBU1NFUlRfVU5VU0VEKHJlc291cmNl
TW9kZSwgcmVzb3VyY2VNb2RlID09IEFwcGx5VG9EZWZhdWx0TW9kZSk7CiAKICAgICBib29sIG1p
c3NpbmdNYXNrZXJEYXRhID0gIW1fbWFza2VyLmNvbnRhaW5zKCZyZW5kZXJlcik7CiAgICAgaWYg
KG1pc3NpbmdNYXNrZXJEYXRhKQpAQCAtNzUsMTggKzc1LDI1IEBAIGJvb2wgUmVuZGVyU1ZHUmVz
b3VyY2VNYXNrZXI6OmFwcGx5UmVzb3VyY2UoUmVuZGVyRWxlbWVudCYgcmVuZGVyZXIsIGNvbnN0
IFJlbmRlCiAgICAgICAgIGlmICghU1ZHUmVuZGVyaW5nQ29udGV4dDo6Y3JlYXRlSW1hZ2VCdWZm
ZXIocmVwYWludFJlY3QsIGFic29sdXRlVHJhbnNmb3JtLCBtYXNrZXJEYXRhLT5tYXNrSW1hZ2Us
IGNvbG9yU3BhY2UsIFVuYWNjZWxlcmF0ZWQpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwog
Ci0gICAgICAgIGlmICghZHJhd0NvbnRlbnRJbnRvTWFza0ltYWdlKG1hc2tlckRhdGEsIGNvbG9y
U3BhY2UsICZyZW5kZXJlcikpIHsKKyAgICAgICAgaWYgKCFkcmF3Q29udGVudEludG9NYXNrSW1h
Z2UobWFza2VyRGF0YSwgY29sb3JTcGFjZSwgJnJlbmRlcmVyKSkKICAgICAgICAgICAgIG1hc2tl
ckRhdGEtPm1hc2tJbWFnZS5yZXNldCgpOwotICAgICAgICB9CiAgICAgfQogCiAgICAgaWYgKCFt
YXNrZXJEYXRhLT5tYXNrSW1hZ2UpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIFNWR1Jl
bmRlcmluZ0NvbnRleHQ6OmNsaXBUb0ltYWdlQnVmZmVyKGNvbnRleHQsIGFic29sdXRlVHJhbnNm
b3JtLCByZXBhaW50UmVjdCwgbWFza2VyRGF0YS0+bWFza0ltYWdlLCBtaXNzaW5nTWFza2VyRGF0
YSk7CisgICAgaWYgKGFwcGx5Q2xpcCkKKyAgICAgICAgU1ZHUmVuZGVyaW5nQ29udGV4dDo6Y2xp
cFRvSW1hZ2VCdWZmZXIoY29udGV4dCwgYWJzb2x1dGVUcmFuc2Zvcm0sIHJlcGFpbnRSZWN0LCBt
YXNrZXJEYXRhLT5tYXNrSW1hZ2UsIG1pc3NpbmdNYXNrZXJEYXRhKTsKKwogICAgIHJldHVybiB0
cnVlOwogfQogCitib29sIFJlbmRlclNWR1Jlc291cmNlTWFza2VyOjphcHBseVJlc291cmNlKFJl
bmRlckVsZW1lbnQmIHJlbmRlcmVyLCBjb25zdCBSZW5kZXJTdHlsZSYsIEdyYXBoaWNzQ29udGV4
dComIGNvbnRleHQsIHVuc2lnbmVkIHNob3J0IHJlc291cmNlTW9kZSkKK3sKKyAgICBBU1NFUlRf
VU5VU0VEKHJlc291cmNlTW9kZSwgcmVzb3VyY2VNb2RlID09IEFwcGx5VG9EZWZhdWx0TW9kZSk7
CisgICAgcmV0dXJuIGFwcGx5U1ZHTWFzayhyZW5kZXJlciwgY29udGV4dCwgdHJ1ZSk7Cit9CisK
IGJvb2wgUmVuZGVyU1ZHUmVzb3VyY2VNYXNrZXI6OmRyYXdDb250ZW50SW50b01hc2tJbWFnZShN
YXNrZXJEYXRhKiBtYXNrZXJEYXRhLCBDb2xvclNwYWNlIGNvbG9yU3BhY2UsIFJlbmRlck9iamVj
dCogb2JqZWN0KQogewogICAgIEdyYXBoaWNzQ29udGV4dCogbWFza0ltYWdlQ29udGV4dCA9IG1h
c2tlckRhdGEtPm1hc2tJbWFnZS0+Y29udGV4dCgpOwpAQCAtMTI3LDYgKzEzNCwzNCBAQCBib29s
IFJlbmRlclNWR1Jlc291cmNlTWFza2VyOjpkcmF3Q29udGVudEludG9NYXNrSW1hZ2UoTWFza2Vy
RGF0YSogbWFza2VyRGF0YSwgQwogICAgIHJldHVybiB0cnVlOwogfQogCit2b2lkIFJlbmRlclNW
R1Jlc291cmNlTWFza2VyOjpkcmF3TWFza0ZvclJlbmRlcmVyKFJlbmRlckVsZW1lbnQmIHJlbmRl
cmVyLCBjb25zdCBCYWNrZ3JvdW5kSW1hZ2VHZW9tZXRyeSYgZ2VvbWV0cnksIEdyYXBoaWNzQ29u
dGV4dCogY29udGV4dCwgQ29tcG9zaXRlT3BlcmF0b3IgY29tcG9zaXRlT3ApCit7CisgICAgaWYg
KGNvbnRleHQtPnBhaW50aW5nRGlzYWJsZWQoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYg
KCFhcHBseVNWR01hc2socmVuZGVyZXIsIGNvbnRleHQsIGZhbHNlKSkKKyAgICAgICAgcmV0dXJu
OworCisgICAgTWFza2VyRGF0YSogbWFza2VyRGF0YSA9IG1hc2tlckRhdGFGb3JSZW5kZXJlcihy
ZW5kZXJlcik7CisgICAgQVNTRVJUKG1hc2tlckRhdGEpOworCisgICAgRmxvYXRSZWN0IG9uZVRp
bGVSZWN0OworICAgIEZsb2F0U2l6ZSBhY3R1YWxUaWxlU2l6ZShnZW9tZXRyeS50aWxlU2l6ZSgp
LndpZHRoKCkgKyBnZW9tZXRyeS5zcGFjZVNpemUoKS53aWR0aCgpLCBnZW9tZXRyeS50aWxlU2l6
ZSgpLmhlaWdodCgpICsgZ2VvbWV0cnkuc3BhY2VTaXplKCkuaGVpZ2h0KCkpOworICAgIG9uZVRp
bGVSZWN0LnNldFgoZ2VvbWV0cnkuZGVzdFJlY3QoKS54KCkgKyBmbW9kZihmbW9kZigtZ2VvbWV0
cnkucmVsYXRpdmVQaGFzZSgpLngoKSwgYWN0dWFsVGlsZVNpemUud2lkdGgoKSkgLSBhY3R1YWxU
aWxlU2l6ZS53aWR0aCgpLCBhY3R1YWxUaWxlU2l6ZS53aWR0aCgpKSk7CisgICAgb25lVGlsZVJl
Y3Quc2V0WShnZW9tZXRyeS5kZXN0UmVjdCgpLnkoKSArIGZtb2RmKGZtb2RmKC1nZW9tZXRyeS5y
ZWxhdGl2ZVBoYXNlKCkueSgpLCBhY3R1YWxUaWxlU2l6ZS5oZWlnaHQoKSkgLSBhY3R1YWxUaWxl
U2l6ZS5oZWlnaHQoKSwgYWN0dWFsVGlsZVNpemUuaGVpZ2h0KCkpKTsKKyAgICBvbmVUaWxlUmVj
dC5zZXRTaXplKGdlb21ldHJ5LnRpbGVTaXplKCkpOworICAgIAorICAgIEZsb2F0U2l6ZSBpbnRy
aW5zaWNUaWxlU2l6ZSA9IG1hc2tlckRhdGEtPm1hc2tJbWFnZS0+bG9naWNhbFNpemUoKTsKKyAg
ICBGbG9hdFNpemUgc2NhbGUoZ2VvbWV0cnkudGlsZVNpemUoKS53aWR0aCgpIC8gaW50cmluc2lj
VGlsZVNpemUud2lkdGgoKSwgZ2VvbWV0cnkudGlsZVNpemUoKS5oZWlnaHQoKSAvIGludHJpbnNp
Y1RpbGVTaXplLmhlaWdodCgpKTsKKyAgICAKKyAgICBGbG9hdFJlY3QgdmlzaWJsZVNyY1JlY3Q7
CisgICAgdmlzaWJsZVNyY1JlY3Quc2V0WCgoZ2VvbWV0cnkuZGVzdFJlY3QoKS54KCkgLSBvbmVU
aWxlUmVjdC54KCkpIC8gc2NhbGUud2lkdGgoKSk7CisgICAgdmlzaWJsZVNyY1JlY3Quc2V0WSgo
Z2VvbWV0cnkuZGVzdFJlY3QoKS55KCkgLSBvbmVUaWxlUmVjdC55KCkpIC8gc2NhbGUuaGVpZ2h0
KCkpOworICAgIHZpc2libGVTcmNSZWN0LnNldFdpZHRoKGdlb21ldHJ5LmRlc3RSZWN0KCkud2lk
dGgoKSAvIHNjYWxlLndpZHRoKCkpOworICAgIHZpc2libGVTcmNSZWN0LnNldEhlaWdodChnZW9t
ZXRyeS5kZXN0UmVjdCgpLmhlaWdodCgpIC8gc2NhbGUuaGVpZ2h0KCkpOworICAgIGNvbnRleHQt
PmRyYXdJbWFnZUJ1ZmZlcihtYXNrZXJEYXRhLT5tYXNrSW1hZ2UuZ2V0KCksIENvbG9yU3BhY2VE
ZXZpY2VSR0IsIGdlb21ldHJ5LmRlc3RSZWN0KCksIHZpc2libGVTcmNSZWN0LCBjb21wb3NpdGVP
cCk7Cit9CisKIHZvaWQgUmVuZGVyU1ZHUmVzb3VyY2VNYXNrZXI6OmNhbGN1bGF0ZU1hc2tDb250
ZW50UmVwYWludFJlY3QoKQogewogICAgIGZvciAoTm9kZSogY2hpbGROb2RlID0gbWFza0VsZW1l
bnQoKS5maXJzdENoaWxkKCk7IGNoaWxkTm9kZTsgY2hpbGROb2RlID0gY2hpbGROb2RlLT5uZXh0
U2libGluZygpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1Jl
bmRlclNWR1Jlc291cmNlTWFza2VyLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1Jl
bmRlclNWR1Jlc291cmNlTWFza2VyLmgKaW5kZXggYTFmZmIzZjQuLjdjZDc0ZGMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VNYXNrZXIu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlTWFz
a2VyLmgKQEAgLTQ1LDYgKzQ1LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCByZW1vdmVB
bGxDbGllbnRzRnJvbUNhY2hlKGJvb2wgbWFya0ZvckludmFsaWRhdGlvbiA9IHRydWUpIG92ZXJy
aWRlOwogICAgIHZpcnR1YWwgdm9pZCByZW1vdmVDbGllbnRGcm9tQ2FjaGUoUmVuZGVyRWxlbWVu
dCYsIGJvb2wgbWFya0ZvckludmFsaWRhdGlvbiA9IHRydWUpIG92ZXJyaWRlOwogICAgIHZpcnR1
YWwgYm9vbCBhcHBseVJlc291cmNlKFJlbmRlckVsZW1lbnQmLCBjb25zdCBSZW5kZXJTdHlsZSYs
IEdyYXBoaWNzQ29udGV4dComLCB1bnNpZ25lZCBzaG9ydCByZXNvdXJjZU1vZGUpIG92ZXJyaWRl
OworICAgIGJvb2wgYXBwbHlTVkdNYXNrKFJlbmRlckVsZW1lbnQmIHJlbmRlcmVyLCBHcmFwaGlj
c0NvbnRleHQqJiwgYm9vbCBhcHBseUNsaXApOwogICAgIHZpcnR1YWwgRmxvYXRSZWN0IHJlc291
cmNlQm91bmRpbmdCb3goY29uc3QgUmVuZGVyT2JqZWN0Jikgb3ZlcnJpZGU7CiAKICAgICBTVkdV
bml0VHlwZXM6OlNWR1VuaXRUeXBlIG1hc2tVbml0cygpIGNvbnN0IHsgcmV0dXJuIG1hc2tFbGVt
ZW50KCkubWFza1VuaXRzKCk7IH0KQEAgLTUyLDYgKzUzLDkgQEAgcHVibGljOgogCiAgICAgdmly
dHVhbCBSZW5kZXJTVkdSZXNvdXJjZVR5cGUgcmVzb3VyY2VUeXBlKCkgY29uc3Qgb3ZlcnJpZGUg
eyByZXR1cm4gTWFza2VyUmVzb3VyY2VUeXBlOyB9CiAKKyAgICBNYXNrZXJEYXRhKiBtYXNrZXJE
YXRhRm9yUmVuZGVyZXIoUmVuZGVyT2JqZWN0JiByZW5kZXJlcikgeyByZXR1cm4gbV9tYXNrZXIu
Z2V0KCZyZW5kZXJlcik7IH0KKyAgICB2b2lkIGRyYXdNYXNrRm9yUmVuZGVyZXIoUmVuZGVyRWxl
bWVudCYgcmVuZGVyZXIsIGNvbnN0IEJhY2tncm91bmRJbWFnZUdlb21ldHJ5JiwgR3JhcGhpY3ND
b250ZXh0KiwgQ29tcG9zaXRlT3BlcmF0b3IpOworCiBwcml2YXRlOgogICAgIHZvaWQgZWxlbWVu
dCgpIGNvbnN0ID0gZGVsZXRlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
TWFza0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR01hc2tFbGVtZW50LmNwcApp
bmRleCA0MzFmMjZhLi42ZjYyOTFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
TWFza0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdNYXNrRWxlbWVudC5j
cHAKQEAgLTE2MSw3ICsxNjEsMzMgQEAgdm9pZCBTVkdNYXNrRWxlbWVudDo6Y2hpbGRyZW5DaGFu
Z2VkKGNvbnN0IENoaWxkQ2hhbmdlJiBjaGFuZ2UpCiAKIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50
PiBTVkdNYXNrRWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKFBhc3NSZWY8UmVuZGVyU3R5
bGU+IHN0eWxlKQogewotICAgIHJldHVybiBjcmVhdGVSZW5kZXJlcjxSZW5kZXJTVkdSZXNvdXJj
ZU1hc2tlcj4oKnRoaXMsIFdURjo6bW92ZShzdHlsZSkpOworICAgIFJlbmRlclB0cjxSZW5kZXJF
bGVtZW50PiBtYXNrUmVuZGVyZXIgPSBjcmVhdGVSZW5kZXJlcjxSZW5kZXJTVkdSZXNvdXJjZU1h
c2tlcj4oKnRoaXMsIFdURjo6bW92ZShzdHlsZSkpOworICAgIAorICAgIC8vIFBhc3MgYWxvbmcg
ZXhpc3RpbmcgcmVuZGVyIGxheWVyIGNsaWVudHMuCisgICAgZm9yIChhdXRvKiBjbGllbnRMYXll
ciA6IG1fY2xpZW50TGF5ZXJzKQorICAgICAgICBzdGF0aWNfY2FzdDxSZW5kZXJTVkdSZXNvdXJj
ZU1hc2tlcio+KG1hc2tSZW5kZXJlci5nZXQoKSktPmFkZENsaWVudFJlbmRlckxheWVyKGNsaWVu
dExheWVyKTsKKyAgICAKKyAgICByZXR1cm4gbWFza1JlbmRlcmVyOworfQorCit2b2lkIFNWR01h
c2tFbGVtZW50OjphZGRDbGllbnRSZW5kZXJMYXllcihSZW5kZXJMYXllciogY2xpZW50KQorewor
ICAgIEFTU0VSVChjbGllbnQpOworICAgIG1fY2xpZW50TGF5ZXJzLmFkZChjbGllbnQpOworICAg
IAorICAgIC8vIFBhc3MgaXQgYWxvbmcgdG8gdGhlIHJlbmRlcmVyLgorICAgIGlmIChyZW5kZXJl
cigpKQorICAgICAgICBzdGF0aWNfY2FzdDxSZW5kZXJTVkdSZXNvdXJjZU1hc2tlcio+KHJlbmRl
cmVyKCkpLT5hZGRDbGllbnRSZW5kZXJMYXllcihjbGllbnQpOworfQorCit2b2lkIFNWR01hc2tF
bGVtZW50OjpyZW1vdmVDbGllbnRSZW5kZXJMYXllcihSZW5kZXJMYXllciogY2xpZW50KQorewor
ICAgIEFTU0VSVChjbGllbnQpOworICAgIG1fY2xpZW50TGF5ZXJzLnJlbW92ZShjbGllbnQpOwor
ICAgIAorICAgIC8vIFBhc3MgaXQgYWxvbmcgdG8gdGhlIHJlbmRlcmVyLgorICAgIGlmIChyZW5k
ZXJlcigpKQorICAgICAgICBzdGF0aWNfY2FzdDxSZW5kZXJTVkdSZXNvdXJjZU1hc2tlcio+KHJl
bmRlcmVyKCkpLT5yZW1vdmVDbGllbnRSZW5kZXJMYXllcihjbGllbnQpOwogfQogCiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTWFza0VsZW1lbnQuaCBiL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdNYXNrRWxlbWVudC5oCmluZGV4IDIyZWRkYmMuLmQ0NmM3MDIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdNYXNrRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdNYXNrRWxlbWVudC5oCkBAIC0zMCw2ICszMCw4IEBACiAjaW5jbHVkZSAiU1ZH
VW5pdFR5cGVzLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKKyAgICAKK2NsYXNzIFJlbmRlckxh
eWVyOwogCiBjbGFzcyBTVkdNYXNrRWxlbWVudCBmaW5hbCA6IHB1YmxpYyBTVkdFbGVtZW50LAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdWJsaWMgU1ZHVGVzdHMsCkBAIC0zNyw2ICsz
OSw5IEBAIGNsYXNzIFNWR01hc2tFbGVtZW50IGZpbmFsIDogcHVibGljIFNWR0VsZW1lbnQsCiBw
dWJsaWM6CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8U1ZHTWFza0VsZW1lbnQ+IGNyZWF0ZShjb25z
dCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQmKTsKIAorICAgIHZvaWQgYWRkQ2xpZW50UmVuZGVy
TGF5ZXIoUmVuZGVyTGF5ZXIqKTsKKyAgICB2b2lkIHJlbW92ZUNsaWVudFJlbmRlckxheWVyKFJl
bmRlckxheWVyKik7CisKIHByaXZhdGU6CiAgICAgU1ZHTWFza0VsZW1lbnQoY29uc3QgUXVhbGlm
aWVkTmFtZSYsIERvY3VtZW50Jik7CiAKQEAgLTQ4LDYgKzUzLDggQEAgcHJpdmF0ZToKICAgICB2
aXJ0dWFsIHZvaWQgc3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJikgb3Zl
cnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIGNoaWxkcmVuQ2hhbmdlZChjb25zdCBDaGlsZENoYW5n
ZSYpIG92ZXJyaWRlOwogCisgICAgSGFzaFNldDxSZW5kZXJMYXllcio+IG1fY2xpZW50TGF5ZXJz
OworCiAgICAgdmlydHVhbCBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxlbWVudFJl
bmRlcmVyKFBhc3NSZWY8UmVuZGVyU3R5bGU+KSBvdmVycmlkZTsKIAogICAgIHZpcnR1YWwgYm9v
bCBzZWxmSGFzUmVsYXRpdmVMZW5ndGhzKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsg
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1VzZUVsZW1lbnQuY3BwIGIvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR1VzZUVsZW1lbnQuY3BwCmluZGV4IDUyOTUxYmMuLjQyYmM4ZjEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdVc2VFbGVtZW50LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHVXNlRWxlbWVudC5jcHAKQEAgLTk5Miw4ICs5OTIsMTEgQEAg
dm9pZCBTVkdVc2VFbGVtZW50OjpzZXRDYWNoZWREb2N1bWVudChDYWNoZWRSZXNvdXJjZUhhbmRs
ZTxDYWNoZWRTVkdEb2N1bWVudD4gY2EKICAgICAgICAgbV9jYWNoZWREb2N1bWVudC0+cmVtb3Zl
Q2xpZW50KHRoaXMpOwogCiAgICAgbV9jYWNoZWREb2N1bWVudCA9IGNhY2hlZERvY3VtZW50Owot
ICAgIGlmIChtX2NhY2hlZERvY3VtZW50KQorICAgIGlmIChtX2NhY2hlZERvY3VtZW50KSB7Cisg
ICAgICAgIC8vIFdlIGRvbid0IG5lZWQgdGhlIFNWRyBkb2N1bWVudCB0byBjcmVhdGUgYSBuZXcg
ZnJhbWUgYmVjYXVzZSB0aGUgbmV3IGRvY3VtZW50IGJlbG9uZ3MgdG8gdGhlIHBhcmVudCBVc2VF
bGVtZW50LgorICAgICAgICBtX2NhY2hlZERvY3VtZW50LT5zZXRTaG91bGRDcmVhdGVGcmFtZUZv
ckRvY3VtZW50KGZhbHNlKTsKICAgICAgICAgbV9jYWNoZWREb2N1bWVudC0+YWRkQ2xpZW50KHRo
aXMpOworICAgIH0KIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBo
aWNzL1NWR0ltYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZS5j
cHAKaW5kZXggNDliOTBiZS4uZGYxZDliNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3Zn
L2dyYXBoaWNzL1NWR0ltYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3Mv
U1ZHSW1hZ2UuY3BwCkBAIC0zNDQsNiArMzQ0LDggQEAgYm9vbCBTVkdJbWFnZTo6ZGF0YUNoYW5n
ZWQoYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCiAgICAgICAgIGZpbGxXaXRoRW1wdHlDbGllbnRzKHBh
Z2VDb25maWd1cmF0aW9uKTsKICAgICAgICAgbV9jaHJvbWVDbGllbnQgPSBzdGQ6Om1ha2VfdW5p
cXVlPFNWR0ltYWdlQ2hyb21lQ2xpZW50Pih0aGlzKTsKICAgICAgICAgcGFnZUNvbmZpZ3VyYXRp
b24uY2hyb21lQ2xpZW50ID0gbV9jaHJvbWVDbGllbnQuZ2V0KCk7CisgICAgICAgIGJvb2wgY2Fu
SGF2ZVNjcm9sbGJhcnMgPSBmYWxzZTsgLy8gU1ZHIEltYWdlcyB3aWxsIGFsd2F5cyBzeW50aGVz
aXplIGEgdmlld0JveCwgaWYgaXQncyBub3QgYXZhaWxhYmxlLCBhbmQgdGh1cyBuZXZlciBzZWUg
c2Nyb2xsYmFycy4KKyAgICAgICAgYm9vbCB0cmFuc3BhcmVudCA9IHRydWU7IC8vIFNWRyBJbWFn
ZXMgYXJlIHRyYW5zcGFyZW50LgogCiAgICAgICAgIC8vIEZJWE1FOiBJZiB0aGlzIFNWRyBlbmRz
IHVwIGxvYWRpbmcgaXRzZWxmLCB3ZSBtaWdodCBsZWFrIHRoZSB3b3JsZC4KICAgICAgICAgLy8g
VGhlIENhY2hlIGNvZGUgZG9lcyBub3Qga25vdyBhYm91dCBDYWNoZWRJbWFnZXMgaG9sZGluZyBG
cmFtZXMgYW5kCkBAIC0zNTEsMjUgKzM1Myw3IEBAIGJvb2wgU1ZHSW1hZ2U6OmRhdGFDaGFuZ2Vk
KGJvb2wgYWxsRGF0YVJlY2VpdmVkKQogICAgICAgICAvLyBUaGlzIHdpbGwgYmVjb21lIGFuIGlz
c3VlIHdoZW4gU1ZHSW1hZ2Ugd2lsbCBiZSBhYmxlIHRvIGxvYWQgb3RoZXIKICAgICAgICAgLy8g
U1ZHSW1hZ2Ugb2JqZWN0cywgYnV0IHdlJ3JlIHNhZmUgbm93LCBiZWNhdXNlIFNWR0ltYWdlIGNh
biBvbmx5IGJlCiAgICAgICAgIC8vIGxvYWRlZCBieSBhIHRvcC1sZXZlbCBkb2N1bWVudC4KLSAg
ICAgICAgbV9wYWdlID0gc3RkOjptYWtlX3VuaXF1ZTxQYWdlPihwYWdlQ29uZmlndXJhdGlvbik7
Ci0gICAgICAgIG1fcGFnZS0+c2V0dGluZ3MoKS5zZXRNZWRpYUVuYWJsZWQoZmFsc2UpOwotICAg
ICAgICBtX3BhZ2UtPnNldHRpbmdzKCkuc2V0U2NyaXB0RW5hYmxlZChmYWxzZSk7Ci0gICAgICAg
IG1fcGFnZS0+c2V0dGluZ3MoKS5zZXRQbHVnaW5zRW5hYmxlZChmYWxzZSk7Ci0KLSAgICAgICAg
RnJhbWUmIGZyYW1lID0gbV9wYWdlLT5tYWluRnJhbWUoKTsKLSAgICAgICAgZnJhbWUuc2V0Vmll
dyhGcmFtZVZpZXc6OmNyZWF0ZShmcmFtZSkpOwotICAgICAgICBmcmFtZS5pbml0KCk7Ci0gICAg
ICAgIEZyYW1lTG9hZGVyJiBsb2FkZXIgPSBmcmFtZS5sb2FkZXIoKTsKLSAgICAgICAgbG9hZGVy
LmZvcmNlU2FuZGJveEZsYWdzKFNhbmRib3hBbGwpOwotCi0gICAgICAgIGZyYW1lLnZpZXcoKS0+
c2V0Q2FuSGF2ZVNjcm9sbGJhcnMoZmFsc2UpOyAvLyBTVkcgSW1hZ2VzIHdpbGwgYWx3YXlzIHN5
bnRoZXNpemUgYSB2aWV3Qm94LCBpZiBpdCdzIG5vdCBhdmFpbGFibGUsIGFuZCB0aHVzIG5ldmVy
IHNlZSBzY3JvbGxiYXJzLgotICAgICAgICBmcmFtZS52aWV3KCktPnNldFRyYW5zcGFyZW50KHRy
dWUpOyAvLyBTVkcgSW1hZ2VzIGFyZSB0cmFuc3BhcmVudC4KLQotICAgICAgICBBU1NFUlQobG9h
ZGVyLmFjdGl2ZURvY3VtZW50TG9hZGVyKCkpOyAvLyBEb2N1bWVudExvYWRlciBzaG91bGQgaGF2
ZSBiZWVuIGNyZWF0ZWQgYnkgZnJhbWUtPmluaXQoKS4KLSAgICAgICAgbG9hZGVyLmFjdGl2ZURv
Y3VtZW50TG9hZGVyKCktPndyaXRlcigpLnNldE1JTUVUeXBlKCJpbWFnZS9zdmcreG1sIik7Ci0g
ICAgICAgIGxvYWRlci5hY3RpdmVEb2N1bWVudExvYWRlcigpLT53cml0ZXIoKS5iZWdpbihVUkwo
KSk7IC8vIGNyZWF0ZSB0aGUgZW1wdHkgZG9jdW1lbnQKLSAgICAgICAgbG9hZGVyLmFjdGl2ZURv
Y3VtZW50TG9hZGVyKCktPndyaXRlcigpLmFkZERhdGEoZGF0YSgpLT5kYXRhKCksIGRhdGEoKS0+
c2l6ZSgpKTsKLSAgICAgICAgbG9hZGVyLmFjdGl2ZURvY3VtZW50TG9hZGVyKCktPndyaXRlcigp
LmVuZCgpOworICAgICAgICBtX3BhZ2UgPSBzdGQ6OnVuaXF1ZV9wdHI8UGFnZT4oUGFnZTo6Y3Jl
YXRlUGFnZUZyb21CdWZmZXIocGFnZUNvbmZpZ3VyYXRpb24sIGRhdGEoKSwgImltYWdlL3N2Zyt4
bWwiLCBjYW5IYXZlU2Nyb2xsYmFycywgdHJhbnNwYXJlbnQpKTsKIAogICAgICAgICAvLyBTZXQg
dGhlIGludHJpbnNpYyBzaXplIGJlZm9yZSBhIGNvbnRhaW5lciBzaXplIGlzIGF2YWlsYWJsZS4K
ICAgICAgICAgbV9pbnRyaW5zaWNTaXplID0gY29udGFpbmVyU2l6ZSgpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>242495</attachid>
            <date>2014-12-03 09:20:59 -0800</date>
            <delta_ts>2014-12-03 16:07:17 -0800</delta_ts>
            <desc>Patch integrating Dirk&apos;s feedback</desc>
            <filename>129682.subpart1.v2.patch</filename>
            <type>text/plain</type>
            <size>100636</size>
            <attacher name="Radu Stavila">stavila</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYkNv
cmUvQ01ha2VMaXN0cy50eHQKaW5kZXggOTdjMjMyOS4uYzlhYzAyNSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0
cy50eHQKQEAgLTEyODksNiArMTI4OSw3IEBAIHNldChXZWJDb3JlX1NPVVJDRVMKICAgICBjc3Mv
VHJhbnNmb3JtRnVuY3Rpb25zLmNwcAogICAgIGNzcy9WaWV3cG9ydFN0eWxlUmVzb2x2ZXIuY3Bw
CiAgICAgY3NzL1dlYktpdENTU0ZpbHRlclZhbHVlLmNwcAorICAgIGNzcy9XZWJLaXRDU1NSZXNv
dXJjZVZhbHVlLmNwcAogICAgIGNzcy9DU1NLZXlmcmFtZVJ1bGUuY3BwCiAgICAgY3NzL0NTU0tl
eWZyYW1lc1J1bGUuY3BwCiAgICAgY3NzL1dlYktpdENTU01hdHJpeC5jcHAKQEAgLTIwODksNiAr
MjA5MCw3IEBAIHNldChXZWJDb3JlX1NPVVJDRVMKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9JU09W
VFRDdWUuY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvTGF5b3V0Qm94RXh0ZW50LmNwcAogICAg
IHBsYXRmb3JtL2dyYXBoaWNzL0xheW91dFJlY3QuY3BwCisgICAgcGxhdGZvcm0vZ3JhcGhpY3Mv
TWFza0ltYWdlT3BlcmF0aW9uLmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVy
LmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL1BhdGguY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhp
Y3MvUGF0aFRyYXZlcnNhbFN0YXRlLmNwcApAQCAtMjI5NSw2ICsyMjk3LDcgQEAgc2V0KFdlYkNv
cmVfU09VUkNFUwogICAgIHJlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwCiAgICAgcmVu
ZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5jcHAKICAgICByZW5kZXJpbmcvUmVuZGVyTGF5
ZXJGaWx0ZXJJbmZvLmNwcAorICAgIHJlbmRlcmluZy9SZW5kZXJMYXllck1hc2tJbWFnZUluZm8u
Y3BwCiAgICAgcmVuZGVyaW5nL1JlbmRlckxheWVyTW9kZWxPYmplY3QuY3BwCiAgICAgcmVuZGVy
aW5nL1JlbmRlckxpbmVCb3hMaXN0LmNwcAogICAgIHJlbmRlcmluZy9SZW5kZXJMaW5lQnJlYWsu
Y3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKaW5kZXggZTQxN2VmMi4uYjFhNzk1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDE4MyBAQAorMjAxNC0xMS0yOCAgUmFkdSBTdGF2aWxhICA8c3RhdmlsYUBhZG9iZS5jb20+CisK
KyAgICAgICAgW1NWRyBNYXNraW5nXSBBZGQgc3VwcG9ydCBmb3IgcmVmZXJlbmNpbmcgPG1hc2s+
IGVsZW1lbnRzIGZyb20gLXdlYmtpdC1tYXNrLWltYWdlCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzkwOTIKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHBhdGNoIGltcHJvdmVzIHRoZSAtd2Via2l0
LW1hc2staW1hZ2UgcHJvcGVydHkgYnkgYWxsb3dpbmcgaXQgdG8gcmVmZXJlbmNlCisgICAgICAg
IGEgPG1hc2s+IGVsZW1lbnQgZGVmaW5lZCBpbiBhbiBpbmxpbmUgb3IgZXh0ZXJuYWwgU1ZHIGRv
Y3VtZW50LgorICAgICAgICBVcCB1bnRpbCBub3csIGVhY2ggaW1hZ2UgdG8gYmUgdXNlZCBhcyBh
IG1hc2sgY29uc2lzdGVkIG9mIGEgRmlsbExheWVyIG9iamVjdCAKKyAgICAgICAgd2hvc2UgbV9p
bWFnZSBtZW1iZXIgcmVwcmVzZW50ZWQgdGhlIG1hc2suIE5vdywgaW4gb3JkZXIgdG8gYWNjb21v
ZGF0ZQorICAgICAgICA8bWFzaz4gZWxlbWVudHMgcmVmZXJlbmNlZCBieSBhIGZyYWdtZW50IGlk
ZW50aWZpZXIgKGUuZy4gZmlsZS5zdmcjbWFzazEpCisgICAgICAgIGEgbmV3IGNsYXNzIHdhcyBj
cmVhdGVkIChNYXNrSW1hZ2VPcGVyYXRpb24pIGFuZCBhZGRlZCBhcyBhIG1lbWJlciBvZiB0aGUg
CisgICAgICAgIEZpbGxMYXllci4gQXMgc3VjaCwgZnJvbSBub3cgb24sIGFsbCBGaWxsTGF5ZXIg
b2JqZWN0cyB1c2VkIGZvciBtYXNraW5nIHdpbGwKKyAgICAgICAgc3RvcmUgdGhlIG1hc2tpbmcg
aW5mb3JtYXRpb24gaW4gdGhpcyBuZXcgbWVtYmVyLgorICAgICAgICBXaGVuIHBhcnNpbmcgdGhl
IC13ZWJraXQtbWFzay1pbWFnZSBwcm9wZXJ0eSAob3IgdGhlIC13ZWJraXQtbWFzayBzaG9ydGhh
bmQpCisgICAgICAgIGEgbmV3IE1hc2tJbWFnZU9wZXJhdGlvbiBvYmplY3QgaXMgY3JlYXRlZCBm
b3IgZWFjaCBpbWFnZS4gSWYgdGhlIHZhbHVlIHJlcHJlc2VudHMKKyAgICAgICAgYW4gZXh0ZXJu
YWwgVVJMLCBhIHBlbmRpbmcgU1ZHIGRvY3VtZW50IHdpbGwgYmUgY3JlYXRlZCB3aGljaCB3aWxs
IGJlIGxvYWRlZCAKKyAgICAgICAgZHVyaW5nIHRoZSBwaGFzZSB0aGF0IGxvYWRzIHRoZSBwZW5k
aW5nIHJlc291cmNlcy4gV2hlbiB0aGUgZG93bmxvYWQgaXMgY29tcGxldGUsCisgICAgICAgIHRo
ZSBNYXNrSW1hZ2VPcGVyYXRpb24gaXMgbm90aWZpZWQgYnkgdGhlIENhY2hlZFNWR0RvY3VtZW50
IGNsYXNzIGFuZCBjaGVja3MgaWYKKyAgICAgICAgdGhlIHJlY2VpdmVkIGRvd25sb2FkIGlzIGEg
dmFsaWQgU1ZHIGFuZCB0aGUgcmVxdWVzdGVkIGZyYWdtZW50IGlkZW50aWZpZXIKKyAgICAgICAg
YWN0dWFsbHkgZXhpc3RzIGFuZCBpZGVudGlmaWVzIGEgPG1hc2s+IGVsZW1lbnQuIElmIGl0IGRv
ZXMsIHRoYXQgZWxlbWVudCdzCisgICAgICAgIHJlbmRlcmVyIChvZiB0eXBlIFJlbmRlclNWR1Jl
c291cmNlTWFza2VyKSB3aWxsIGJlIHVzZWQgd2hlbiBwYWludGluZyB0aGUgbWFzayBsYXllcnMu
CisgICAgICAgIE90aGVyd2lzZSwgdGhlIE1hc2tJbWFnZU9wZXJhdGlvbiBjbGFzcyB3aWxsIHVz
ZSB0aGUgYWxyZWFkeSBkb3dubG9hZGVkIGRhdGEgCisgICAgICAgIGJ1ZmZlciB0byBjcmVhdGUg
YSBDYWNoZWRJbWFnZSBmcm9tIGl0IGFuZCB1c2UgdGhhdCBpbnN0ZWFkLCBiYXNpY2FsbHkgZW11
bGF0aW5nCisgICAgICAgIHRoZSBwcmV2aW91cyBiZWhhdmlvciwgd2hlbiBvbmx5IGltYWdlcyB3
ZXJlIGFjY2VwdGVkLiBUaGlzIGVuc3VyZXMgdGhhdCBhbGwgZXhpc3RpbmcKKyAgICAgICAgYmVo
YXZpb3IsIGxpa2UgcGFpbnRpbmcgZW50aXJlIFNWR3MsIHBhaW50aW5nIG5vcm1hbCBpbWFnZXMg
KGUuZy4gUE5HL0pQRyksIHBhaW50aW5nCisgICAgICAgIGdlbmVyYXRlZCBpbWFnZXMgKGUuZy4g
bGluZWFyLWdyYWRpZW50KSB3b3JrcyBhcyBpdCBkaWQgYmVmb3JlLgorCisgICAgICAgIE5vIG5l
dyB0ZXN0cyByZXF1aXJlZCwgdGhpcyBwYXRjaCBkb2Vzbid0IGNoYW5nZSBhbnkgY3VycmVudCBm
dW5jdGlvbmFsaXR5LiAKKyAgICAgICAgSXQgb25seSBhZGRzIHN1cHBvcnQgZm9yIHJlZmVyZW5j
aW5nIDxtYXNrPiBlbGVtZW50cyBmb3IgdGhlIC13ZWJraXQtbWFzay1pbWFnZSAKKyAgICAgICAg
cHJvcGVydHkuIFRoaXMgaXMgc3ViLXBhcnQgMSBvZiB0aGUgYmlnZ2VyIHBhdGNoIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjk2ODIuCisKKyAgICAgICAgKiBDTWFr
ZUxpc3RzLnR4dDoKKyAgICAgICAgKiBXZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qOgor
ICAgICAgICAqIFdlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2ouZmlsdGVyczoKKyAgICAg
ICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogY3NzL0NT
U1ZhbHVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1ZhbHVlOjpjc3NUZXh0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkNTU1ZhbHVlOjpkZXN0cm95KToKKyAgICAgICAgKiBjc3MvQ1NTVmFsdWUu
aDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1ZhbHVlOjppc1dlYktpdENTU1Jlc291cmNlVmFsdWUp
OgorICAgICAgICAqIGNzcy9TdHlsZVJlc29sdmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0
eWxlUmVzb2x2ZXI6OlN0YXRlOjpjbGVhcik6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJlc29s
dmVyOjpjcmVhdGVNYXNrSW1hZ2VPcGVyYXRpb25zKToKKyAgICAgICAgKiBjc3MvU3R5bGVSZXNv
bHZlci5oOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVSZXNvbHZlcjo6U3RhdGU6Om1hc2tJbWFn
ZXNXaXRoUGVuZGluZ1NWR0RvY3VtZW50cyk6CisgICAgICAgICogY3NzL1dlYktpdENTU1Jlc291
cmNlVmFsdWUuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OldlYktpdENTU1Jlc291cmNl
VmFsdWU6OldlYktpdENTU1Jlc291cmNlVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6V2ViS2l0
Q1NTUmVzb3VyY2VWYWx1ZTo6Y3VzdG9tQ1NTVGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJL
aXRDU1NSZXNvdXJjZVZhbHVlOjppc0NTU1ZhbHVlTm9uZSk6CisgICAgICAgICogY3NzL1dlYktp
dENTU1Jlc291cmNlVmFsdWUuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpXZWJLaXRDU1NS
ZXNvdXJjZVZhbHVlOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6V2ViS2l0Q1NTUmVzb3Vy
Y2VWYWx1ZTo6aW5uZXJWYWx1ZSk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291
cmNlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJlc291cmNlTG9hZGVyOjph
ZGRDYWNoZWRSZXNvdXJjZSk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNl
TG9hZGVyLmg6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0RvY3VtZW50LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFNWR0RvY3VtZW50OjpDYWNoZWRTVkdEb2N1bWVudCk6
CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRTVkdEb2N1bWVudDo6ZmluaXNoTG9hZGluZyk6Cisg
ICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0RvY3VtZW50Lmg6CisgICAgICAgICogbG9h
ZGVyL2NhY2hlL0NhY2hlZFNWR0RvY3VtZW50UmVmZXJlbmNlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkNhY2hlZFNWR0RvY3VtZW50UmVmZXJlbmNlOjpDYWNoZWRTVkdEb2N1bWVudFJlZmVyZW5j
ZSk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRTVkdEb2N1bWVudFJlZmVyZW5jZTo6fkNhY2hl
ZFNWR0RvY3VtZW50UmVmZXJlbmNlKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFNWR0RvY3Vt
ZW50UmVmZXJlbmNlOjpsb2FkKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRG9j
dW1lbnRSZWZlcmVuY2UuaDoKKyAgICAgICAgKiBwYWdlL0ZyYW1lVmlldy5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpGcmFtZVZpZXc6OmlzU1ZHRG9jdW1lbnQpOgorICAgICAgICAqIHBhZ2UvRnJh
bWVWaWV3Lmg6CisgICAgICAgICogcGFnZS9QYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBh
Z2U6OmNyZWF0ZVBhZ2VGcm9tQnVmZmVyKToKKyAgICAgICAgKiBwYWdlL1BhZ2UuaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9TY3JvbGxWaWV3Lmg6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxWaWV3
Ojppc1NWR0RvY3VtZW50KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9NYXNrSW1hZ2VP
cGVyYXRpb24uY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6Ok1hc2tJbWFnZU9wZXJhdGlv
bjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1hc2tJbWFnZU9wZXJhdGlvbjo6TWFza0lt
YWdlT3BlcmF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6Ok1hc2tJbWFnZU9wZXJhdGlvbjo6fk1h
c2tJbWFnZU9wZXJhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpNYXNrSW1hZ2VPcGVyYXRpb246
OmlzQ1NTVmFsdWVOb25lKToKKyAgICAgICAgKFdlYkNvcmU6Ok1hc2tJbWFnZU9wZXJhdGlvbjo6
Y3NzVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6TWFza0ltYWdlT3BlcmF0aW9uOjppc01hc2tM
b2FkZWQpOgorICAgICAgICAoV2ViQ29yZTo6TWFza0ltYWdlT3BlcmF0aW9uOjpzZXRSZW5kZXJM
YXllckltYWdlQ2xpZW50KToKKyAgICAgICAgKFdlYkNvcmU6Ok1hc2tJbWFnZU9wZXJhdGlvbjo6
YWRkUmVuZGVyZXJJbWFnZUNsaWVudCk6CisgICAgICAgIChXZWJDb3JlOjpNYXNrSW1hZ2VPcGVy
YXRpb246OnJlbW92ZVJlbmRlcmVySW1hZ2VDbGllbnQpOgorICAgICAgICAoV2ViQ29yZTo6TWFz
a0ltYWdlT3BlcmF0aW9uOjpnZXRPckNyZWF0ZUNhY2hlZFNWR0RvY3VtZW50UmVmZXJlbmNlKToK
KyAgICAgICAgKFdlYkNvcmU6Ok1hc2tJbWFnZU9wZXJhdGlvbjo6bm90aWZ5RmluaXNoZWQpOiBU
aGlzIGlzIHRoZSBtZXRob2QgdGhhdCBnZXRzIGNhbGxlZCB3aGVuIHRoZSBkb2N1bWVudCBoYXMg
ZmluaXNoZWQgCisgICAgICAgIGRvd25sb2FkaW5nIGFuZCBjaGVja3MgaWYgaXQgY2FuIGZpbmQg
YSB2YWxpZCA8bWFzaz4gZWxlbWVudC4KKyAgICAgICAgKFdlYkNvcmU6Ok1hc2tJbWFnZU9wZXJh
dGlvbjo6ZHJhd01hc2spOgorICAgICAgICAoV2ViQ29yZTo6TWFza0ltYWdlT3BlcmF0aW9uOjpn
ZXRTVkdNYXNrZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL01hc2tJbWFnZU9wZXJh
dGlvbi5oOiBBZGRlZC4KKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3Qu
Y3BwOiBUaGUgQmFja2dyb3VuZEltYWdlR2VvbWV0cnkgY2xhc3Mgd2FzIG1vdmVkIG91dCBvZiBS
ZW5kZXJCb3hNb2RlbE9iamVjdCBpbiAKKyAgICAgICAgb3JkZXIgdG8gYmUgdXNlZCBhcyBhIHBh
cmFtZXRlciBmb3Igb3RoZXIgbWV0aG9kcy4gVGhpcyB3YXMgbmVjZXNzYXJ5IHRvIGF2b2lkIGhh
dmluZyBtZXRob2RzIHdpdGggdmVyeSBtYW55IHBhcmFtZXRlcnMuCisgICAgICAgIChXZWJDb3Jl
OjpCYWNrZ3JvdW5kSW1hZ2VHZW9tZXRyeTo6c2V0Tm9SZXBlYXRYKToKKyAgICAgICAgKFdlYkNv
cmU6OkJhY2tncm91bmRJbWFnZUdlb21ldHJ5OjpzZXROb1JlcGVhdFkpOgorICAgICAgICAoV2Vi
Q29yZTo6QmFja2dyb3VuZEltYWdlR2VvbWV0cnk6OnVzZUZpeGVkQXR0YWNobWVudCk6CisgICAg
ICAgIChXZWJDb3JlOjpCYWNrZ3JvdW5kSW1hZ2VHZW9tZXRyeTo6Y2xpcCk6CisgICAgICAgIChX
ZWJDb3JlOjpCYWNrZ3JvdW5kSW1hZ2VHZW9tZXRyeTo6cmVsYXRpdmVQaGFzZSk6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJCb3hNb2RlbE9iamVjdDo6QmFja2dyb3VuZEltYWdlR2VvbWV0cnk6
OnNldE5vUmVwZWF0WCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3hNb2Rl
bE9iamVjdDo6QmFja2dyb3VuZEltYWdlR2VvbWV0cnk6OnNldE5vUmVwZWF0WSk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3hNb2RlbE9iamVjdDo6QmFja2dyb3VuZEltYWdl
R2VvbWV0cnk6OnVzZUZpeGVkQXR0YWNobWVudCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJCb3hNb2RlbE9iamVjdDo6QmFja2dyb3VuZEltYWdlR2VvbWV0cnk6OmNsaXApOiBE
ZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94TW9kZWxPYmplY3Q6OkJhY2tncm91
bmRJbWFnZUdlb21ldHJ5OjpyZWxhdGl2ZVBoYXNlKTogRGVsZXRlZC4KKyAgICAgICAgKiByZW5k
ZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuaDoKKyAgICAgICAgKFdlYkNvcmU6OkJhY2tncm91
bmRJbWFnZUdlb21ldHJ5OjpCYWNrZ3JvdW5kSW1hZ2VHZW9tZXRyeSk6CisgICAgICAgIChXZWJD
b3JlOjpCYWNrZ3JvdW5kSW1hZ2VHZW9tZXRyeTo6ZGVzdE9yaWdpbik6CisgICAgICAgIChXZWJD
b3JlOjpCYWNrZ3JvdW5kSW1hZ2VHZW9tZXRyeTo6c2V0RGVzdE9yaWdpbik6CisgICAgICAgIChX
ZWJDb3JlOjpCYWNrZ3JvdW5kSW1hZ2VHZW9tZXRyeTo6ZGVzdFJlY3QpOgorICAgICAgICAoV2Vi
Q29yZTo6QmFja2dyb3VuZEltYWdlR2VvbWV0cnk6OnNldERlc3RSZWN0KToKKyAgICAgICAgKFdl
YkNvcmU6OkJhY2tncm91bmRJbWFnZUdlb21ldHJ5OjpwaGFzZSk6CisgICAgICAgIChXZWJDb3Jl
OjpCYWNrZ3JvdW5kSW1hZ2VHZW9tZXRyeTo6c2V0UGhhc2UpOgorICAgICAgICAoV2ViQ29yZTo6
QmFja2dyb3VuZEltYWdlR2VvbWV0cnk6OnRpbGVTaXplKToKKyAgICAgICAgKFdlYkNvcmU6OkJh
Y2tncm91bmRJbWFnZUdlb21ldHJ5OjpzZXRUaWxlU2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpC
YWNrZ3JvdW5kSW1hZ2VHZW9tZXRyeTo6c3BhY2VTaXplKToKKyAgICAgICAgKFdlYkNvcmU6OkJh
Y2tncm91bmRJbWFnZUdlb21ldHJ5OjpzZXRTcGFjZVNpemUpOgorICAgICAgICAoV2ViQ29yZTo6
QmFja2dyb3VuZEltYWdlR2VvbWV0cnk6OnNldFBoYXNlWCk6CisgICAgICAgIChXZWJDb3JlOjpC
YWNrZ3JvdW5kSW1hZ2VHZW9tZXRyeTo6c2V0UGhhc2VZKToKKyAgICAgICAgKFdlYkNvcmU6OkJh
Y2tncm91bmRJbWFnZUdlb21ldHJ5OjpzZXRIYXNOb25Mb2NhbEdlb21ldHJ5KToKKyAgICAgICAg
KFdlYkNvcmU6OkJhY2tncm91bmRJbWFnZUdlb21ldHJ5OjpoYXNOb25Mb2NhbEdlb21ldHJ5KToK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveE1vZGVsT2JqZWN0OjpCYWNrZ3JvdW5kSW1hZ2VH
ZW9tZXRyeTo6QmFja2dyb3VuZEltYWdlR2VvbWV0cnkpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyQm94TW9kZWxPYmplY3Q6OkJhY2tncm91bmRJbWFnZUdlb21ldHJ5OjpkZXN0
T3JpZ2luKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveE1vZGVsT2JqZWN0
OjpCYWNrZ3JvdW5kSW1hZ2VHZW9tZXRyeTo6c2V0RGVzdE9yaWdpbik6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJCb3hNb2RlbE9iamVjdDo6QmFja2dyb3VuZEltYWdlR2VvbWV0
cnk6OmRlc3RSZWN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveE1vZGVs
T2JqZWN0OjpCYWNrZ3JvdW5kSW1hZ2VHZW9tZXRyeTo6c2V0RGVzdFJlY3QpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94TW9kZWxPYmplY3Q6OkJhY2tncm91bmRJbWFnZUdl
b21ldHJ5OjpwaGFzZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3hNb2Rl
bE9iamVjdDo6QmFja2dyb3VuZEltYWdlR2VvbWV0cnk6OnNldFBoYXNlKTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlckJveE1vZGVsT2JqZWN0OjpCYWNrZ3JvdW5kSW1hZ2VHZW9t
ZXRyeTo6dGlsZVNpemUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94TW9k
ZWxPYmplY3Q6OkJhY2tncm91bmRJbWFnZUdlb21ldHJ5OjpzZXRUaWxlU2l6ZSk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3hNb2RlbE9iamVjdDo6QmFja2dyb3VuZEltYWdl
R2VvbWV0cnk6OnNwYWNlU2l6ZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJC
b3hNb2RlbE9iamVjdDo6QmFja2dyb3VuZEltYWdlR2VvbWV0cnk6OnNldFNwYWNlU2l6ZSk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3hNb2RlbE9iamVjdDo6QmFja2dyb3Vu
ZEltYWdlR2VvbWV0cnk6OnNldFBoYXNlWCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJCb3hNb2RlbE9iamVjdDo6QmFja2dyb3VuZEltYWdlR2VvbWV0cnk6OnNldFBoYXNlWSk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3hNb2RlbE9iamVjdDo6QmFja2dy
b3VuZEltYWdlR2VvbWV0cnk6OnNldEhhc05vbkxvY2FsR2VvbWV0cnkpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyQm94TW9kZWxPYmplY3Q6OkJhY2tncm91bmRJbWFnZUdlb21l
dHJ5OjpoYXNOb25Mb2NhbEdlb21ldHJ5KTogRGVsZXRlZC4KKyAgICAgICAgKiByZW5kZXJpbmcv
UmVuZGVyTGF5ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OlJlbmRlckxh
eWVyKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjp+UmVuZGVyTGF5ZXIpOgorICAg
ICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXllci5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5k
ZXJMYXllck1hc2tJbWFnZUluZm8uY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
ckxheWVyOjpNYXNrSW1hZ2VJbmZvOjpsYXllclRvTWFza01hcCk6IFJldHVybnMgYSBzdGF0aWMg
bWFwIHRoYXQgbGlua3MgTWFza0ltYWdlSW5mbyBvYmplY3RzIHRvIFJlbmRlckxheWVycy4KKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjpNYXNrSW1hZ2VJbmZvOjpnZXRJZkV4aXN0cyk6
IFJldHVybnMgdGhlIE1hc2tJbWFnZUluZm8gYXNzb2NpYXRlZCB3aXRoIGEgc3BlY2lmaWMgUmVu
ZGVyTGF5ZXIuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6TWFza0ltYWdlSW5mbzo6
Z2V0KTogUmV0dXJucyB0aGUgTWFza0ltYWdlSW5mbyBhc3NvY2lhdGVkIHdpdGggYSBzcGVjaWZp
YyBSZW5kZXJMYXllciAoY3JlYXRlcyBpdCBpZiBuZWNlc3NhcnkpLgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyTGF5ZXI6Ok1hc2tJbWFnZUluZm86OnJlbW92ZSk6IFJlbW92ZXMgdGhlIE1hc2tJ
bWFnZUluZm8gYXNzb2NpYXRlZCB3aXRoIGEgc3BlY2lmaWMgUmVuZGVyTGF5ZXIuCisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJMYXllcjo6TWFza0ltYWdlSW5mbzo6TWFza0ltYWdlSW5mbyk6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6TWFza0ltYWdlSW5mbzo6fk1hc2tJbWFnZUlu
Zm8pOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6Ok1hc2tJbWFnZUluZm86Om5vdGlm
eUZpbmlzaGVkKTogR2V0cyBjYWxsZWQgd2hlbiB0aGUgU1ZHIGRvY3VtZW50IGZpbmlzaGVkIGxv
YWRpbmcsIHRyaWdnZXJzIHJlcGFpbnQuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6
TWFza0ltYWdlSW5mbzo6aW1hZ2VDaGFuZ2VkKTogR2V0cyBjYWxsZWQgd2hlbiB0aGUgaW1hZ2Ug
b2JqZWN0IGNoYW5nZWQsIHRyaWdnZXJzIHJlcGFpbnQuCisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJMYXllcjo6TWFza0ltYWdlSW5mbzo6dXBkYXRlTWFza0ltYWdlQ2xpZW50cyk6IEdvZXMgdGhy
b3VnaCBhbGwgbWFzayBsYXllcnMgYW5kIHNldHMgaW1hZ2UvU1ZHIGNsaWVudHMuIAorICAgICAg
ICBVcGRhdGVzIGxpc3Qgb2YgaW50ZXJuYWwgYW5kIGV4dGVybmFsIFNWRyByZWZlcmVuY2VzLgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6Ok1hc2tJbWFnZUluZm86OnJlbW92ZU1hc2tJ
bWFnZUNsaWVudHMpOiBSZW1vdmVzIGFsbCBpbWFnZS9TVkcgY2xpZW50cyBhbmQgY2xlYXJzIGxp
c3RzIG9mIGludGVybmFsIGFuZCBleHRlcm5hbCBTVkcgcmVmZXJlbmNlcy4KKyAgICAgICAgKiBy
ZW5kZXJpbmcvUmVuZGVyTGF5ZXJNYXNrSW1hZ2VJbmZvLmg6IEFkZGVkLgorICAgICAgICAqIHJl
bmRlcmluZy9SZW5kZXJPYmplY3QuaDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck9iamVjdDo6
aXNSZW5kZXJTVkdSZXNvdXJjZU1hc2tlcik6CisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL0Zp
bGxMYXllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGaWxsTGF5ZXI6OkZpbGxMYXllcik6Cisg
ICAgICAgIChXZWJDb3JlOjpGaWxsTGF5ZXI6Om9wZXJhdG9yPSk6CisgICAgICAgIChXZWJDb3Jl
OjpGaWxsTGF5ZXI6Om9wZXJhdG9yPT0pOgorICAgICAgICAoV2ViQ29yZTo6RmlsbExheWVyOjpj
dWxsRW1wdHlMYXllcnMpOgorICAgICAgICAoV2ViQ29yZTo6RmlsbExheWVyOjpoYXNOb25FbXB0
eU1hc2tJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpGaWxsTGF5ZXI6OmltYWdlc0FyZUxvYWRl
ZCk6CisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL0ZpbGxMYXllci5oOgorICAgICAgICAoV2Vi
Q29yZTo6RmlsbExheWVyOjptYXNrSW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6RmlsbExheWVy
OjppbWFnZU9yTWFza0ltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkZpbGxMYXllcjo6c2V0TWFz
a0ltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkZpbGxMYXllcjo6Y2xlYXJNYXNrSW1hZ2UpOgor
ICAgICAgICAoV2ViQ29yZTo6RmlsbExheWVyOjpoYXNNYXNrSW1hZ2UpOgorICAgICAgICAqIHJl
bmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VNYXNrZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyU1ZHUmVzb3VyY2VNYXNrZXI6OmFwcGx5U1ZHTWFzayk6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJTVkdSZXNvdXJjZU1hc2tlcjo6YXBwbHlSZXNvdXJjZSk6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJTVkdSZXNvdXJjZU1hc2tlcjo6ZHJhd01hc2tGb3JSZW5kZXJlcik6Cisg
ICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZU1hc2tlci5oOgorICAgICAg
ICAqIHN2Zy9TVkdNYXNrRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdNYXNrRWxl
bWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR01hc2tF
bGVtZW50OjphZGRDbGllbnRSZW5kZXJMYXllcik6CisgICAgICAgIChXZWJDb3JlOjpTVkdNYXNr
RWxlbWVudDo6cmVtb3ZlQ2xpZW50UmVuZGVyTGF5ZXIpOgorICAgICAgICAqIHN2Zy9TVkdNYXNr
RWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdVc2VFbGVtZW50LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlNWR1VzZUVsZW1lbnQ6OnNldENhY2hlZERvY3VtZW50KToKKyAgICAgICAgKiBzdmcv
Z3JhcGhpY3MvU1ZHSW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHSW1hZ2U6OmRhdGFD
aGFuZ2VkKToKKwogMjAxNC0xMi0wMyAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgog
CiAgICAgICAgIE1vdmUgJ2Rpc3BsYXknIENTUyBwcm9wZXJ0eSB0byB0aGUgbmV3IFN0eWxlQnVp
bGRlcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUu
dmN4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2oK
aW5kZXggNDE1MjdhMC4uODQyZWIxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZj
eHByb2ovV2ViQ29yZS52Y3hwcm9qCkBAIC03NDksNiArNzQ5LDcgQEAKICAgICAgIDxFeGNsdWRl
ZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1Jl
bGVhc2V8V2luMzInIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KICAgICAgIDxFeGNsdWRlZEZy
b21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVh
c2V8eDY0JyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CiAgICAgPC9DbENvbXBpbGU+CisgICAg
PENsQ29tcGlsZSBJbmNsdWRlPSIuLlxjc3NcV2ViS2l0Q1NTUmVzb3VyY2VWYWx1ZS5jcHAiIC8+
CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxEZXJpdmVkU291cmNlcy5jcHAiPgogICAgICAg
PFByZWNvbXBpbGVkSGVhZGVyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9y
bSknPT0nRGVidWd8V2luMzInIj4KICAgICAgIDwvUHJlY29tcGlsZWRIZWFkZXI+CkBAIC03NTgy
LDYgKzc1ODMsNyBAQAogICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29u
ZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUHJvZHVjdGlvbnxXaW4zMiciPnRydWU8L0V4Y2x1
ZGVkRnJvbUJ1aWxkPgogICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29u
ZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUHJvZHVjdGlvbnx4NjQnIj50cnVlPC9FeGNsdWRl
ZEZyb21CdWlsZD4KICAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4u
XHBsYXRmb3JtXGdyYXBoaWNzXE1hc2tJbWFnZU9wZXJhdGlvbi5jcHAiIC8+CiAgICAgPENsQ29t
cGlsZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxncmFwaGljc1xPcGVuR0xTaGltcy5jcHAiIC8+CiAg
ICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxncmFwaGljc1xvcGVuZ2xcRXh0ZW5z
aW9uczNET3BlbkdMLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHBsYXRmb3Jt
XGdyYXBoaWNzXG9wZW5nbFxFeHRlbnNpb25zM0RPcGVuR0xDb21tb24uY3BwIiAvPgpAQCAtNzk1
MCw2ICs3OTUyLDcgQEAKICAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENv
bmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1Byb2R1Y3Rpb258V2luMzInIj50cnVlPC9FeGNs
dWRlZEZyb21CdWlsZD4KICAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENv
bmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1Byb2R1Y3Rpb258eDY0JyI+dHJ1ZTwvRXhjbHVk
ZWRGcm9tQnVpbGQ+CiAgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIu
LlxyZW5kZXJpbmdcUmVuZGVyTGF5ZXJNYXNrSW1hZ2VJbmZvLmNwcCIgLz4KICAgICA8Q2xDb21w
aWxlIEluY2x1ZGU9Ii4uXHJlbmRlcmluZ1xzdHlsZVxTdHlsZUNhY2hlZEltYWdlU2V0LmNwcCI+
CiAgICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwk
KFBsYXRmb3JtKSc9PSdEZWJ1Z1N1ZmZpeHxXaW4zMiciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxk
PgogICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8
JChQbGF0Zm9ybSknPT0nRGVidWdTdWZmaXh8eDY0JyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+
CkBAIC0xODg1MSw2ICsxODg1NCw3IEBACiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKENvbmZp
Z3VyYXRpb25CdWlsZERpcilcb2JqJChQbGF0Zm9ybUFyY2hpdGVjdHVyZSlcJChQcm9qZWN0TmFt
ZSlcRGVyaXZlZFNvdXJjZXNcSlNWVFRSZWdpb25MaXN0LmgiIC8+CiAgICAgPENsSW5jbHVkZSBJ
bmNsdWRlPSIuLlxhY2Nlc3NpYmlsaXR5XEFjY2Vzc2liaWxpdHlOb2RlT2JqZWN0LmgiIC8+CiAg
ICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxjc3NcQ1NTSW1hZ2VTZXRWYWx1ZS5oIiAvPgorICAg
IDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cY3NzXFdlYktpdENTU1Jlc291cmNlVmFsdWUuaCIgLz4K
ICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXEZvcndhcmRpbmdIZWFkZXJzXGJpbmRpbmdzXFNj
cmlwdEZ1bmN0aW9uQ2FsbC5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cRm9yd2Fy
ZGluZ0hlYWRlcnNcYmluZGluZ3NcU2NyaXB0T2JqZWN0LmgiIC8+CiAgICAgPENsSW5jbHVkZSBJ
bmNsdWRlPSIuLlxGb3J3YXJkaW5nSGVhZGVyc1xiaW5kaW5nc1xTY3JpcHRWYWx1ZS5oIiAvPgpA
QCAtMTk0MDcsNiArMTk0MTEsNyBAQAogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccGxhdGZv
cm1cZ3JhcGhpY3NcZ3N0cmVhbWVyXFZpZGVvU2lua0dTdHJlYW1lci5oIiAvPgogICAgIDxDbElu
Y2x1ZGUgSW5jbHVkZT0iLi5ccGxhdGZvcm1cZ3JhcGhpY3NcZ3N0cmVhbWVyXFZpZGVvVHJhY2tQ
cml2YXRlR1N0cmVhbWVyLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxwbGF0Zm9y
bVxncmFwaGljc1xnc3RyZWFtZXJcV2ViS2l0V2ViU291cmNlR1N0cmVhbWVyLmgiIC8+CisgICAg
PENsSW5jbHVkZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxncmFwaGljc1xNYXNrSW1hZ2VPcGVyYXRp
b24uaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXGdyYXBoaWNzXE1l
ZGlhUGxheWVyUHJpdmF0ZS5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccGxhdGZv
cm1cZ3JhcGhpY3NcT3BlbkdMU2hpbXMuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4u
XHBsYXRmb3JtXGdyYXBoaWNzXG9wZW5nbFxFeHRlbnNpb25zM0RPcGVuR0wuaCIgLz4KQEAgLTE5
NTM4LDYgKzE5NTQzLDcgQEAKICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXHdp
blxXZWJDb3JlQnVuZGxlV2luLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxwbGF0
Zm9ybVx3aW5cV2ViQ29yZUluc3RhbmNlSGFuZGxlLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNs
dWRlPSIuLlxyZW5kZXJpbmdcSGl0VGVzdExvY2F0aW9uLmgiIC8+CisgICAgPENsSW5jbHVkZSBJ
bmNsdWRlPSIuLlxyZW5kZXJpbmdcUmVuZGVyTGF5ZXJNYXNrSW1hZ2VJbmZvLmgiIC8+CiAgICAg
PENsSW5jbHVkZSBJbmNsdWRlPSIuLlxyZW5kZXJpbmdcc3R5bGVcU3R5bGVDYWNoZWRJbWFnZVNl
dC5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cc3RvcmFnZVxTdG9yYWdlU3RyYXRl
Z3kuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHN2Z1xncmFwaGljc1xTVkdJbWFn
ZUZvckNvbnRhaW5lci5oIiAvPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52
Y3hwcm9qL1dlYkNvcmUudmN4cHJvai5maWx0ZXJzIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52
Y3hwcm9qL1dlYkNvcmUudmN4cHJvai5maWx0ZXJzCmluZGV4IDhjNWEzZmEuLjlkZDI0OTIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2ou
ZmlsdGVycworKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hw
cm9qLmZpbHRlcnMKQEAgLTcyNTIsNiArNzI1MiwxNSBAQAogICAgIDxDbENvbXBpbGUgSW5jbHVk
ZT0iLi5cZWRpdGluZ1x3aW5cRWRpdG9yV2luLmNwcCI+CiAgICAgICA8RmlsdGVyPmVkaXRpbmc8
L0ZpbHRlcj4KICAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHBs
YXRmb3JtXGdyYXBoaWNzXE1hc2tJbWFnZU9wZXJhdGlvbi5jcHAiPgorICAgICAgPEZpbHRlcj5w
bGF0Zm9ybVxncmFwaGljczwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBp
bGUgSW5jbHVkZT0iLi5ccmVuZGVyaW5nXFJlbmRlckxheWVyTWFza0ltYWdlSW5mby5jcHAiPgor
ICAgICAgPEZpbHRlcj5yZW5kZXJpbmc8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8
Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGNzc1xXZWJLaXRDU1NSZXNvdXJjZVZhbHVlLmNwcCI+Cisg
ICAgICA8RmlsdGVyPmNzczwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgogICA8L0l0ZW1Hcm91
cD4KICAgPEl0ZW1Hcm91cD4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcZ2Vv
bG9jYXRpb25cQ29vcmRpbmF0ZXMuaCI+CkBAIC0xNTI0Miw2ICsxNTI1MSwxNSBAQAogICAgIDxD
bEluY2x1ZGUgSW5jbHVkZT0iLi5ccGxhdGZvcm1cZ3JhcGhpY3NcYXZmb3VuZGF0aW9uXE1lZGlh
VGltZUFWRm91bmRhdGlvbi5oIj4KICAgICAgIDxGaWx0ZXI+cGxhdGZvcm1cZ3JhcGhpY3NcYXZm
b3VuZGF0aW9uPC9GaWx0ZXI+CiAgICAgPC9DbEluY2x1ZGU+CisgICAgICAgIDxDbEluY2x1ZGUg
SW5jbHVkZT0iLi5ccGxhdGZvcm1cZ3JhcGhpY3NcTWFza0ltYWdlT3BlcmF0aW9uLmgiPgorICAg
ICAgPEZpbHRlcj5wbGF0Zm9ybVxncmFwaGljczwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgor
ICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccmVuZGVyaW5nXFJlbmRlckxheWVyTWFza0ltYWdl
SW5mby5oIj4KKyAgICAgIDxGaWx0ZXI+cmVuZGVyaW5nPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1
ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxjc3NcV2ViS2l0Q1NTUmVzb3VyY2VWYWx1
ZS5oIj4KKyAgICAgIDxGaWx0ZXI+Y3NzPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CiAgIDwv
SXRlbUdyb3VwPgogICA8SXRlbUdyb3VwPgogICAgIDxOb25lIEluY2x1ZGU9Ii4uXGNzc1xDU1NH
cmFtbWFyLnkuaW4iPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCmluZGV4IGNhZjQ0YjMuLmUzOGMzNDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTIyMzYsOCArMjIzNiwx
NCBAQAogCQk2NUZENDY2NjE5QjU5NkY2MDAxRTJCNEQgLyogV2ViVmlkZW9GdWxsc2NyZWVuTW9k
ZWxWaWRlb0VsZW1lbnQubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA2NTg2RkUzRDE5QjU0OEJEMDA1QzNDODIgLyogV2ViVmlkZW9GdWxsc2NyZWVuTW9k
ZWxWaWRlb0VsZW1lbnQubW0gKi87IH07CiAJCTY1RkVBODY5MDk4MzNBREUwMEJFRDRBQiAvKiBQ
YWdlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDY1
RkVBODY4MDk4MzNBREUwMEJFRDRBQiAvKiBQYWdlLmNwcCAqLzsgfTsKIAkJNkIzNDgwOTQwRUVG
NTBENDAwQUMxQjQxIC8qIE5hdGl2ZUltYWdlUHRyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2QjM0ODA5MjBFRUY1MEQ0MDBBQzFCNDEgLyogTmF0aXZl
SW1hZ2VQdHIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OworCQk2QzU2OENCMDE5REFGRUEwMDA0MzBDQTIgLyogTWFza0ltYWdlT3BlcmF0aW9uLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZDNTY4Q0FFMTlE
QUZFQTAwMDQzMENBMiAvKiBNYXNrSW1hZ2VPcGVyYXRpb24uY3BwICovOyB9OworCQk2QzU2OENC
MTE5REFGRUEwMDA0MzBDQTIgLyogTWFza0ltYWdlT3BlcmF0aW9uLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2QzU2OENBRjE5REFGRUEwMDA0MzBDQTIg
LyogTWFza0ltYWdlT3BlcmF0aW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKIAkJNkM2Mzg4OTVBOTZDQ0VFNTBDOEM5NDZDIC8qIENhY2hlZFJlc291
cmNlUmVxdWVzdEluaXRpYXRvcnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDZDNjM4ODkzQTk2Q0NFRTUwQzhDOTQ2QyAvKiBDYWNoZWRSZXNvdXJjZVJl
cXVlc3RJbml0aWF0b3JzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJNkM2Mzg4OTZBOTZDQ0VFNTBDOEM5NDZDIC8qIENhY2hlZFJlc291cmNlUmVx
dWVzdEluaXRpYXRvcnMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNkM2Mzg4OTRBOTZDQ0VFNTBDOEM5NDZDIC8qIENhY2hlZFJlc291cmNlUmVxdWVz
dEluaXRpYXRvcnMuY3BwICovOyB9OworCQk2QzZDQ0FCMDE5REM0MkI5MDA0M0Q1REIgLyogV2Vi
S2l0Q1NTUmVzb3VyY2VWYWx1ZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA2QzZDQ0FBRTE5REM0MkI5MDA0M0Q1REIgLyogV2ViS2l0Q1NTUmVzb3Vy
Y2VWYWx1ZS5jcHAgKi87IH07CisJCTZDNkNDQUIxMTlEQzQyQjkwMDQzRDVEQiAvKiBXZWJLaXRD
U1NSZXNvdXJjZVZhbHVlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA2QzZDQ0FBRjE5REM0MkI5MDA0M0Q1REIgLyogV2ViS2l0Q1NTUmVzb3VyY2VWYWx1
ZS5oICovOyB9OworCQk2Q0JGRTRBNDE5RUJGMkQ0MDBDQTJGOUQgLyogUmVuZGVyTGF5ZXJNYXNr
SW1hZ2VJbmZvLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDZDQkZFNEEyMTlFQkYyRDQwMENBMkY5RCAvKiBSZW5kZXJMYXllck1hc2tJbWFnZUluZm8u
Y3BwICovOyB9OworCQk2Q0JGRTRBNTE5RUJGMkQ0MDBDQTJGOUQgLyogUmVuZGVyTGF5ZXJNYXNr
SW1hZ2VJbmZvLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA2Q0JGRTRBMzE5RUJGMkQ0MDBDQTJGOUQgLyogUmVuZGVyTGF5ZXJNYXNrSW1hZ2VJbmZvLmgg
Ki87IH07CiAJCTZDRERFOEQwMTc3MEJCMjIwMDE2RTA3MiAvKiBSZWdpb25PdmVyc2V0U3RhdGUu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZDNzBBODE0
MTc3MDdDNDkwMDlBNDQ2RSAvKiBSZWdpb25PdmVyc2V0U3RhdGUuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk2RTBFNTY5QjE4M0JGRkU2MDBFMEU4
RDUgLyogRmxvYXRSb3VuZGVkUmVjdC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA2RTBFNTY5OTE4M0JGRkU2MDBFMEU4RDUgLyogRmxvYXRSb3VuZGVk
UmVjdC5jcHAgKi87IH07CiAJCTZFMEU1NjlDMTgzQkZGRTYwMEUwRThENSAvKiBGbG9hdFJvdW5k
ZWRSZWN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2
RTBFNTY5QTE4M0JGRkU2MDBFMEU4RDUgLyogRmxvYXRSb3VuZGVkUmVjdC5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC05NDAxLDkgKzk0MDcsMTUg
QEAKIAkJNjVGODA2OTcwNTREOUY4NjAwOEJGNzc2IC8qIEJsb2NrRXhjZXB0aW9ucy5tbSAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgaW5kZW50V2lkdGgg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEJs
b2NrRXhjZXB0aW9ucy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgdGFiV2lkdGggPSA4OyB1
c2VzVGFicyA9IDA7IH07CiAJCTY1RkVBODY4MDk4MzNBREUwMEJFRDRBQiAvKiBQYWdlLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQYWdlLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNkIzNDgwOTIwRUVGNTBENDAwQUMxQjQxIC8qIE5hdGl2ZUlt
YWdlUHRyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBOYXRpdmVJbWFnZVB0
ci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk2QzU2OENBRTE5REFGRUEwMDA0MzBD
QTIgLyogTWFza0ltYWdlT3BlcmF0aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IE1hc2tJbWFnZU9wZXJhdGlvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTZDNTY4Q0FGMTlEQUZFQTAwMDQzMENBMiAvKiBNYXNrSW1hZ2VPcGVyYXRpb24uaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWFza0ltYWdlT3BlcmF0aW9uLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTZDNjM4ODkzQTk2Q0NFRTUwQzhDOTQ2QyAvKiBD
YWNoZWRSZXNvdXJjZVJlcXVlc3RJbml0aWF0b3JzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBDYWNoZWRSZXNvdXJjZVJlcXVlc3RJbml0aWF0b3JzLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTZDNjM4ODk0QTk2Q0NFRTUwQzhDOTQ2QyAvKiBDYWNoZWRSZXNv
dXJjZVJlcXVlc3RJbml0aWF0b3JzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBDYWNoZWRSZXNvdXJjZVJlcXVlc3RJbml0aWF0b3JzLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJNkM2Q0NBQUUxOURDNDJCOTAwNDNENURCIC8qIFdlYktpdENTU1Jl
c291cmNlVmFsdWUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2Vi
S2l0Q1NTUmVzb3VyY2VWYWx1ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTZD
NkNDQUFGMTlEQzQyQjkwMDQzRDVEQiAvKiBXZWJLaXRDU1NSZXNvdXJjZVZhbHVlLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYktpdENTU1Jlc291cmNlVmFsdWUuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNkM3MEE4MTQxNzcwN0M0OTAwOUE0NDZFIC8qIFJl
Z2lvbk92ZXJzZXRTdGF0ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZWdp
b25PdmVyc2V0U3RhdGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNkNCRkU0QTIx
OUVCRjJENDAwQ0EyRjlEIC8qIFJlbmRlckxheWVyTWFza0ltYWdlSW5mby5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZW5kZXJMYXllck1hc2tJbWFnZUluZm8uY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk2Q0JGRTRBMzE5RUJGMkQ0MDBDQTJGOUQg
LyogUmVuZGVyTGF5ZXJNYXNrSW1hZ2VJbmZvLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFJlbmRlckxheWVyTWFza0ltYWdlSW5mby5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk2RTBFNTY5OTE4M0JGRkU2MDBFMEU4RDUgLyogRmxvYXRSb3VuZGVkUmVjdC5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBGbG9hdFJvdW5kZWRSZWN0LmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNkUwRTU2OUExODNCRkZFNjAwRTBFOEQ1
IC8qIEZsb2F0Um91bmRlZFJlY3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
RmxvYXRSb3VuZGVkUmVjdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk2RTIxQzZC
RjExMjYzMzg1MDBBN0JFMDIgLyogR3JhcGhpY3NDb250ZXh0M0QuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gR3JhcGhpY3NDb250ZXh0M0QuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwpAQCAtMjA1ODgsNiArMjA2MDAsOCBAQAogCQkJCTE0MURDMDRDMTY0
ODM0QjkwMDM3MUU1QSAvKiBMYXlvdXRSZWN0LmNwcCAqLywKIAkJCQkxNDFEQzA0RDE2NDgzNEI5
MDAzNzFFNUEgLyogTGF5b3V0UmVjdC5oICovLAogCQkJCTE0MURDMDRFMTY0ODM0QjkwMDM3MUU1
QSAvKiBMYXlvdXRTaXplLmggKi8sCisJCQkJNkM1NjhDQUUxOURBRkVBMDAwNDMwQ0EyIC8qIE1h
c2tJbWFnZU9wZXJhdGlvbi5jcHAgKi8sCisJCQkJNkM1NjhDQUYxOURBRkVBMDAwNDMwQ0EyIC8q
IE1hc2tJbWFnZU9wZXJhdGlvbi5oICovLAogCQkJCUU0QjQxRTBDMENCRjkwQkQwMEFGMkVDRSAv
KiBNZWRpYVBsYXllci5jcHAgKi8sCiAJCQkJRTRCNDFFMEQwQ0JGOTBCRDAwQUYyRUNFIC8qIE1l
ZGlhUGxheWVyLmggKi8sCiAJCQkJMDc5RjVFNEIwRjNCRUJFQTAwNUUwNzgyIC8qIE1lZGlhUGxh
eWVyUHJpdmF0ZS5oICovLApAQCAtMjIyOTMsNiArMjIzMDcsOCBAQAogCQkJCTMxMDYwMzZDMTQz
MjdEMkUwMEFCRjRCQSAvKiBXZWJLaXRDU1NGaWx0ZXJWYWx1ZS5jcHAgKi8sCiAJCQkJMzEwNjAz
NkQxNDMyN0QyRTAwQUJGNEJBIC8qIFdlYktpdENTU0ZpbHRlclZhbHVlLmggKi8sCiAJCQkJMzEw
NjAzNkUxNDMyN0QyRTAwQUJGNEJBIC8qIFdlYktpdENTU0ZpbHRlclZhbHVlLmlkbCAqLywKKwkJ
CQk2QzZDQ0FBRTE5REM0MkI5MDA0M0Q1REIgLyogV2ViS2l0Q1NTUmVzb3VyY2VWYWx1ZS5jcHAg
Ki8sCisJCQkJNkM2Q0NBQUYxOURDNDJCOTAwNDNENURCIC8qIFdlYktpdENTU1Jlc291cmNlVmFs
dWUuaCAqLywKIAkJCQkzMTI4OEU2RTBFMzAwNUQ2MDAzNjE5QUUgLyogQ1NTS2V5ZnJhbWVSdWxl
LmNwcCAqLywKIAkJCQkzMTI4OEU2RjBFMzAwNUQ2MDAzNjE5QUUgLyogQ1NTS2V5ZnJhbWVSdWxl
LmggKi8sCiAJCQkJMzE2RkUwOTEwRTZDQ0Q3RjAwQkY2MDg4IC8qIENTU0tleWZyYW1lUnVsZS5p
ZGwgKi8sCkBAIC0yMjQ0Nyw2ICsyMjQ2Myw4IEBACiAJCQkJMEY1ODBDRjkwRjEyREU5QjAwNTFE
Njg5IC8qIFJlbmRlckxheWVyQ29tcG9zaXRvci5oICovLAogCQkJCTUwRDEwRDk3MTU0NUY1NzYw
MDk2RDI4OCAvKiBSZW5kZXJMYXllckZpbHRlckluZm8uY3BwICovLAogCQkJCTUwRDEwRDk4MTU0
NUY1NzYwMDk2RDI4OCAvKiBSZW5kZXJMYXllckZpbHRlckluZm8uaCAqLywKKwkJCQk2Q0JGRTRB
MjE5RUJGMkQ0MDBDQTJGOUQgLyogUmVuZGVyTGF5ZXJNYXNrSW1hZ2VJbmZvLmNwcCAqLywKKwkJ
CQk2Q0JGRTRBMzE5RUJGMkQ0MDBDQTJGOUQgLyogUmVuZGVyTGF5ZXJNYXNrSW1hZ2VJbmZvLmgg
Ki8sCiAJCQkJM0MyNDRGRTVBMzc1QUM2MzNGODhCRTZGIC8qIFJlbmRlckxheWVyTW9kZWxPYmpl
Y3QuY3BwICovLAogCQkJCTNDMjQ0RkU0QTM3NUFDNjMzRjg4QkU2RiAvKiBSZW5kZXJMYXllck1v
ZGVsT2JqZWN0LmggKi8sCiAJCQkJQkMzM0ZCMUEwRjMwRUU4NTAwMkNERDdDIC8qIFJlbmRlckxp
bmVCb3hMaXN0LmNwcCAqLywKQEAgLTIzNDMwLDYgKzIzNDQ4LDcgQEAKIAkJCQkzMTZGRTExNDBF
NkUxREE3MDBCRjYwODggLyogQW5pbWF0aW9uQ29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMEYxNURBOEEwRjNBQUVFNzAwMDBDRTQ3IC8qIEFuaW1hdGlvbkNvbnRyb2xsZXJQcml2YXRl
LmggaW4gSGVhZGVycyAqLywKIAkJCQk0OUU5MTJBRDBFRkFDOTA2MDA5RDBDQUYgLyogQW5pbWF0
aW9uTGlzdC5oIGluIEhlYWRlcnMgKi8sCisJCQkJNkM1NjhDQjExOURBRkVBMDAwNDMwQ0EyIC8q
IE1hc2tJbWFnZU9wZXJhdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY1ODBGQUYxNDk4MDBE
NDAwRkI1QkQ4IC8qIEFuaW1hdGlvblV0aWxpdGllcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTMz
MDlERDcwOTlFNjQ5MjAwNTZFNTgxIC8qIEFwcGVuZE5vZGVDb21tYW5kLmggaW4gSGVhZGVycyAq
LywKIAkJCQkxQThGNkJCRDBEQjU1Q0RDMDAxREI3OTQgLyogQXBwbGljYXRpb25DYWNoZS5oIGlu
IEhlYWRlcnMgKi8sCkBAIC0yNTQ0Miw2ICsyNTQ2MSw3IEBACiAJCQkJQ0RCRUFFQUQxOUQ5MkI2
QzAwQkVCQTg4IC8qIE1lZGlhU2VsZWN0aW9uR3JvdXBBVkZPYmpDLmggaW4gSGVhZGVycyAqLywK
IAkJCQkwNzBFMDkxOTE4NzVFRUZDMDAzQTFEM0MgLyogTWVkaWFTZXNzaW9uLmggaW4gSGVhZGVy
cyAqLywKIAkJCQkwN0Y5NDQxNjE4NjREMDQ2MDA1RDMxQ0IgLyogTWVkaWFTZXNzaW9uTWFuYWdl
ci5oIGluIEhlYWRlcnMgKi8sCisJCQkJNkNCRkU0QTUxOUVCRjJENDAwQ0EyRjlEIC8qIFJlbmRl
ckxheWVyTWFza0ltYWdlSW5mby5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMDc2MzhBOTkxODg0NDg3
MjAwRTE1QTFCIC8qIE1lZGlhU2Vzc2lvbk1hbmFnZXJJT1MuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUNEM0E0OTVGMTdBOUQwMUIwMDI3NEU0MiAvKiBNZWRpYVNvdXJjZS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJQ0Q2NDFFQjMxODE4RjVFRDAwRUU0QzQxIC8qIE1lZGlhU291cmNlUHJpdmF0ZS5oIGlu
IEhlYWRlcnMgKi8sCkBAIC0yNjA0NSw2ICsyNjA2NSw3IEBACiAJCQkJQ0RDRkFCQkQxOEMwQUY3
ODAwNkY4NDUwIC8qIFNlbGVjdGlvblN1YnRyZWVSb290LmggaW4gSGVhZGVycyAqLywKIAkJCQlF
NDRCNEJCNDE0MTY1MEQ3MDAyQjFEOEIgLyogU2VsZWN0b3JDaGVja2VyLmggaW4gSGVhZGVycyAq
LywKIAkJCQk0MzJEM0ZFODE4QTg2NTg0MDBEN0RDMDMgLyogU2VsZWN0b3JDaGVja2VyVGVzdEZ1
bmN0aW9ucy5oIGluIEhlYWRlcnMgKi8sCisJCQkJNkM2Q0NBQjExOURDNDJCOTAwNDNENURCIC8q
IFdlYktpdENTU1Jlc291cmNlVmFsdWUuaCBpbiBIZWFkZXJzICovLAogCQkJCTI2Qjk5OTk3MTgw
NEQ1NDIwMEQwMTEyMSAvKiBTZWxlY3RvckNvbXBpbGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk0
MTUwNzE1ODE2ODUwNjczMDBDM0M3QjMgLyogU2VsZWN0b3JGaWx0ZXIuaCBpbiBIZWFkZXJzICov
LAogCQkJCTQzMTA3QkUyMThDQzE5REUwMENDMThFOCAvKiBTZWxlY3RvclBzZXVkb1R5cGVNYXAu
aCBpbiBIZWFkZXJzICovLApAQCAtMjc3NTMsNiArMjc3NzQsNyBAQAogCQkJCThBMTk1OTMzMTQ3
RUExNkUwMEQxRUE2MSAvKiBET01XZWJLaXROYW1lZEZsb3cubW0gaW4gU291cmNlcyAqLywKIAkJ
CQkzMUMwRkY0RDBFNENFRkREMDA3RDZGRTUgLyogRE9NV2ViS2l0VHJhbnNpdGlvbkV2ZW50Lm1t
IGluIFNvdXJjZXMgKi8sCiAJCQkJODVDN0Y1RTgwQUFGQkFGQjAwNDAxNEREIC8qIERPTVdoZWVs
RXZlbnQubW0gaW4gU291cmNlcyAqLywKKwkJCQk2QzZDQ0FCMDE5REM0MkI5MDA0M0Q1REIgLyog
V2ViS2l0Q1NTUmVzb3VyY2VWYWx1ZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxNDAzQjk5ODA5
RUIxM0FGMDA3OTdDN0YgLyogRE9NV2luZG93LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUZENjc3
NzM4MTk1Q0FGM0QwMDcyRTBEMyAvKiBET01XaW5kb3dDU1MuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJNTE3RkJBMUUxNTFBQjE3QzAwQjU3OTU5IC8qIERPTVdpbmRvd0V4dGVuc2lvbi5jcHAgaW4g
U291cmNlcyAqLywKQEAgLTI4OTc5LDYgKzI5MDAxLDcgQEAKIAkJCQlDREI4NTlGNzE2MEQ0OEE0
MDBFNUIwN0YgLyogTWVkaWFLZXlFdmVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlDREE5OERE
ODE2MDI1QkVGMDBGRUEzQjEgLyogTWVkaWFLZXlNZXNzYWdlRXZlbnQuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJQ0QxQjRBNjUxNjA3ODZBRTAwMjgyREY5IC8qIE1lZGlhS2V5TmVlZGVkRXZlbnQu
Y3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNkM1NjhDQjAxOURBRkVBMDAwNDMwQ0EyIC8qIE1hc2tJ
bWFnZU9wZXJhdGlvbi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlDREE5OEUwRDE2MDNGRTRBMDBG
RUEzQjEgLyogTWVkaWFLZXlzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUNEQTk4RTBFMTYwM0ZF
NTgwMEZFQTNCMSAvKiBNZWRpYUtleVNlc3Npb24uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQThF
QTgwMDkwQTE5NTE2RTAwQThFRjVGIC8qIE1lZGlhTGlzdC5jcHAgaW4gU291cmNlcyAqLywKQEAg
LTI5MDQ3LDYgKzI5MDcwLDcgQEAKIAkJCQlGNTVCM0RDNTEyNTFGMTJEMDAzRUYyNjkgLyogTW9u
dGhJbnB1dFR5cGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJODUwMzFCNDUwQTQ0RUZDNzAwRjk5
MkUwIC8qIE1vdXNlRXZlbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOTNFQjM1NUYwOUUzN0ZE
NjAwRjQzNzk5IC8qIE1vdXNlRXZlbnRXaXRoSGl0VGVzdFJlc3VsdHMuY3BwIGluIFNvdXJjZXMg
Ki8sCisJCQkJNkNCRkU0QTQxOUVCRjJENDAwQ0EyRjlEIC8qIFJlbmRlckxheWVyTWFza0ltYWdl
SW5mby5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk4NTAzMUI0NzBBNDRFRkM3MDBGOTkyRTAgLyog
TW91c2VSZWxhdGVkRXZlbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOTMzMDlERkIwOTlFNjQ5
MjAwNTZFNTgxIC8qIE1vdmVTZWxlY3Rpb25Db21tYW5kLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CUZEQjE3MDA1MTRBMkJBQjIwMEEyQjVEOSAvKiBNdWx0aUNoYW5uZWxSZXNhbXBsZXIuY3BwIGlu
IFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFsdWUuY3Bw
IGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ZhbHVlLmNwcAppbmRleCBkMDI5ZWMxLi5hNmMzY2U2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFsdWUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NWYWx1ZS5jcHAKQEAgLTU0LDYgKzU0LDcgQEAKICNpbmNsdWRlICJT
VkdDb2xvci5oIgogI2luY2x1ZGUgIlNWR1BhaW50LmgiCiAjaW5jbHVkZSAiV2ViS2l0Q1NTRmls
dGVyVmFsdWUuaCIKKyNpbmNsdWRlICJXZWJLaXRDU1NSZXNvdXJjZVZhbHVlLmgiCiAjaW5jbHVk
ZSAiV2ViS2l0Q1NTVHJhbnNmb3JtVmFsdWUuaCIKIAogI2lmIEVOQUJMRShDU1NfR1JJRF9MQVlP
VVQpCkBAIC0zMTEsNiArMzEyLDggQEAgU3RyaW5nIENTU1ZhbHVlOjpjc3NUZXh0KCkgY29uc3QK
ICAgICAgICAgcmV0dXJuIGRvd25jYXN0PFNWR0NvbG9yPigqdGhpcykuY3VzdG9tQ1NTVGV4dCgp
OwogICAgIGNhc2UgU1ZHUGFpbnRDbGFzczoKICAgICAgICAgcmV0dXJuIGRvd25jYXN0PFNWR1Bh
aW50PigqdGhpcykuY3VzdG9tQ1NTVGV4dCgpOworICAgIGNhc2UgV2ViS2l0Q1NTUmVzb3VyY2VD
bGFzczoKKyAgICAgICAgcmV0dXJuIGRvd25jYXN0PFdlYktpdENTU1Jlc291cmNlVmFsdWU+KCp0
aGlzKS5jdXN0b21DU1NUZXh0KCk7CiAgICAgfQogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwog
ICAgIHJldHVybiBTdHJpbmcoKTsKQEAgLTQyMyw2ICs0MjYsOSBAQCB2b2lkIENTU1ZhbHVlOjpk
ZXN0cm95KCkKICAgICBjYXNlIFNWR1BhaW50Q2xhc3M6CiAgICAgICAgIGRlbGV0ZSBkb3duY2Fz
dDxTVkdQYWludD4odGhpcyk7CiAgICAgICAgIHJldHVybjsKKyAgICBjYXNlIFdlYktpdENTU1Jl
c291cmNlQ2xhc3M6CisgICAgICAgIGRlbGV0ZSBkb3duY2FzdDxXZWJLaXRDU1NSZXNvdXJjZVZh
bHVlPih0aGlzKTsKKyAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NWYWx1ZS5oIGIvU291
cmNlL1dlYkNvcmUvY3NzL0NTU1ZhbHVlLmgKaW5kZXggMDFlZTYyYS4uMzZjMjk5NCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ZhbHVlLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
Y3NzL0NTU1ZhbHVlLmgKQEAgLTEwMyw2ICsxMDMsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc1NW
R0NvbG9yKCkgY29uc3QgeyByZXR1cm4gbV9jbGFzc1R5cGUgPT0gU1ZHQ29sb3JDbGFzcyB8fCBt
X2NsYXNzVHlwZSA9PSBTVkdQYWludENsYXNzOyB9CiAgICAgYm9vbCBpc1NWR1BhaW50KCkgY29u
c3QgeyByZXR1cm4gbV9jbGFzc1R5cGUgPT0gU1ZHUGFpbnRDbGFzczsgfQogICAgIGJvb2wgaXNV
bmljb2RlUmFuZ2VWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fY2xhc3NUeXBlID09IFVuaWNvZGVS
YW5nZUNsYXNzOyB9CisgICAgYm9vbCBpc1dlYktpdENTU1Jlc291cmNlVmFsdWUoKSBjb25zdCB7
IHJldHVybiBtX2NsYXNzVHlwZSA9PSBXZWJLaXRDU1NSZXNvdXJjZUNsYXNzOyB9CiAKICAgICBi
b29sIGlzQ1NTT01TYWZlKCkgY29uc3QgeyByZXR1cm4gbV9pc0NTU09NU2FmZTsgfQogICAgIGJv
b2wgaXNTdWJ0eXBlRXhwb3NlZFRvQ1NTT00oKSBjb25zdApAQCAtMTczLDYgKzE3NCw4IEBAIHBy
b3RlY3RlZDoKICNpZiBFTkFCTEUoQ1NTX0dSSURfTEFZT1VUKQogICAgICAgICBHcmlkTGluZU5h
bWVzQ2xhc3MsCiAjZW5kaWYKKyAgICAgICAgV2ViS2l0Q1NTUmVzb3VyY2VDbGFzcworCiAgICAg
ICAgIC8vIERvIG5vdCBhcHBlbmQgbm9uLWxpc3QgY2xhc3MgdHlwZXMgaGVyZS4KICAgICB9Owog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5jcHAKaW5kZXggOTY0NzQzYi4uYzliZGJkYiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmNwcApAQCAtMTM1LDYgKzEzNSw3IEBACiAj
aW5jbHVkZSAiVmlzaXRlZExpbmtTdGF0ZS5oIgogI2luY2x1ZGUgIldlYktpdENTU0ZpbHRlclZh
bHVlLmgiCiAjaW5jbHVkZSAiV2ViS2l0Q1NTUmVnaW9uUnVsZS5oIgorI2luY2x1ZGUgIldlYktp
dENTU1Jlc291cmNlVmFsdWUuaCIKICNpbmNsdWRlICJXZWJLaXRDU1NUcmFuc2Zvcm1WYWx1ZS5o
IgogI2luY2x1ZGUgIldlYktpdEZvbnRGYW1pbHlOYW1lcy5oIgogI2luY2x1ZGUgIlhNTE5hbWVz
LmgiCkBAIC0yMzYsNiArMjM3LDcgQEAgaW5saW5lIHZvaWQgU3R5bGVSZXNvbHZlcjo6U3RhdGU6
OmNsZWFyKCkKICAgICBtX3JlZ2lvbkZvclN0eWxpbmcgPSBudWxscHRyOwogICAgIG1fcGVuZGlu
Z0ltYWdlUHJvcGVydGllcy5jbGVhcigpOwogICAgIG1fZmlsdGVyc1dpdGhQZW5kaW5nU1ZHRG9j
dW1lbnRzLmNsZWFyKCk7CisgICAgbV9tYXNrSW1hZ2VzV2l0aFBlbmRpbmdTVkdEb2N1bWVudHMu
Y2xlYXIoKTsKICAgICBtX2Nzc1RvTGVuZ3RoQ29udmVyc2lvbkRhdGEgPSBDU1NUb0xlbmd0aENv
bnZlcnNpb25EYXRhKCk7CiB9CiAKQEAgLTM0NjgsNiArMzQ3MCw1MyBAQCBib29sIFN0eWxlUmVz
b2x2ZXI6OmNyZWF0ZUZpbHRlck9wZXJhdGlvbnMoQ1NTVmFsdWUqIGluVmFsdWUsIEZpbHRlck9w
ZXJhdGlvbnMmCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKK2Jvb2wgU3R5bGVSZXNvbHZlcjo6Y3Jl
YXRlTWFza0ltYWdlT3BlcmF0aW9ucyhDU1NWYWx1ZSogaW5WYWx1ZSwgVmVjdG9yPFJlZlB0cjxN
YXNrSW1hZ2VPcGVyYXRpb24+PiYgb3V0T3BlcmF0aW9ucykKK3sKKyAgICBBU1NFUlQob3V0T3Bl
cmF0aW9ucy5pc0VtcHR5KCkpOworCisgICAgU3RhdGUmIHN0YXRlID0gbV9zdGF0ZTsKKyAgICBp
ZiAoIWluVmFsdWUpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIEFTU0VSVChpczxDU1NW
YWx1ZUxpc3Q+KCppblZhbHVlKSk7CisKKyAgICBmb3IgKGF1dG8mIGN1cnJWYWx1ZSA6IGRvd25j
YXN0PENTU1ZhbHVlTGlzdD4oKmluVmFsdWUpKSB7CisgICAgICAgIGlmICghaXM8V2ViS2l0Q1NT
UmVzb3VyY2VWYWx1ZT4oY3VyclZhbHVlLmdldCgpKSkKKyAgICAgICAgICAgIGNvbnRpbnVlOwor
ICAgICAgICAKKyAgICAgICAgV2ViS2l0Q1NTUmVzb3VyY2VWYWx1ZSYgbWFza0ltYWdlVmFsdWUg
PSBkb3duY2FzdDxXZWJLaXRDU1NSZXNvdXJjZVZhbHVlPihjdXJyVmFsdWUuZ2V0KCkpOworICAg
ICAgICBSZWZQdHI8Q1NTVmFsdWU+IG1hc2tJbm5lclZhbHVlID0gbWFza0ltYWdlVmFsdWUuaW5u
ZXJWYWx1ZSgpOworICAgICAgICBSZWZQdHI8TWFza0ltYWdlT3BlcmF0aW9uPiBuZXdNYXNrSW1h
Z2UgPSBudWxscHRyOworICAgICAgICAKKyAgICAgICAgaWYgKGlzPENTU1ByaW1pdGl2ZVZhbHVl
PihtYXNrSW5uZXJWYWx1ZS5nZXQoKSkpIHsKKyAgICAgICAgICAgIFJlZlB0cjxDU1NQcmltaXRp
dmVWYWx1ZT4gcHJpbWl0aXZlVmFsdWUgPSBkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4obWFz
a0lubmVyVmFsdWUuZ2V0KCkpOworICAgICAgICAgICAgaWYgKHByaW1pdGl2ZVZhbHVlLT5pc1Zh
bHVlSUQoKSAmJiBwcmltaXRpdmVWYWx1ZS0+Z2V0VmFsdWVJRCgpID09IENTU1ZhbHVlTm9uZSkK
KyAgICAgICAgICAgICAgICBuZXdNYXNrSW1hZ2UgPSBNYXNrSW1hZ2VPcGVyYXRpb246OmNyZWF0
ZSgpOworICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgU3RyaW5nIGNzc1VybCA9
IHByaW1pdGl2ZVZhbHVlLT5nZXRTdHJpbmdWYWx1ZSgpOworICAgICAgICAgICAgICAgIFVSTCB1
cmwgPSBtX3N0YXRlLmRvY3VtZW50KCkuY29tcGxldGVVUkwoY3NzVXJsKTsKKyAgICAgICAgICAg
ICAgICAKKyAgICAgICAgICAgICAgICBib29sIGlzRXh0ZXJuYWxEb2N1bWVudCA9IChTVkdVUklS
ZWZlcmVuY2U6OmlzRXh0ZXJuYWxVUklSZWZlcmVuY2UoY3NzVXJsLCBtX3N0YXRlLmRvY3VtZW50
KCkpKTsKKyAgICAgICAgICAgICAgICBuZXdNYXNrSW1hZ2UgPSBNYXNrSW1hZ2VPcGVyYXRpb246
OmNyZWF0ZSgmbWFza0ltYWdlVmFsdWUsIGNzc1VybCwgdXJsLmZyYWdtZW50SWRlbnRpZmllcigp
LCBpc0V4dGVybmFsRG9jdW1lbnQsIG1fc3RhdGUuZG9jdW1lbnQoKS5jYWNoZWRSZXNvdXJjZUxv
YWRlcigpKTsKKyAgICAgICAgICAgICAgICBpZiAoaXNFeHRlcm5hbERvY3VtZW50KQorICAgICAg
ICAgICAgICAgICAgICBzdGF0ZS5tYXNrSW1hZ2VzV2l0aFBlbmRpbmdTVkdEb2N1bWVudHMoKS5h
cHBlbmQobmV3TWFza0ltYWdlKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgICAgIFJlZlB0cjxTdHlsZUltYWdlPiBpbWFnZSA9IHN0eWxlSW1hZ2UoQ1NTUHJvcGVy
dHlXZWJraXRNYXNrSW1hZ2UsICptYXNrSW5uZXJWYWx1ZSk7CisgICAgICAgICAgICBpZiAoaW1h
Z2UuZ2V0KCkpCisgICAgICAgICAgICAgICAgbmV3TWFza0ltYWdlID0gTWFza0ltYWdlT3BlcmF0
aW9uOjpjcmVhdGUoaW1hZ2UpOworICAgICAgICB9CisKKyAgICAgICAgLy8gSWYgd2UgZGlkbid0
IGdldCBhIHZhbGlkIHZhbHVlLCB1c2UgTm9uZSBzbyB3ZSBrZWVwIHRoZSBjb3JyZWN0IG51bWJl
ciBhbmQgb3JkZXIgb2YgbWFza3MuCisgICAgICAgIGlmICghbmV3TWFza0ltYWdlLmdldCgpKQor
ICAgICAgICAgICAgbmV3TWFza0ltYWdlID0gTWFza0ltYWdlT3BlcmF0aW9uOjpjcmVhdGUoKTsK
KworICAgICAgICBvdXRPcGVyYXRpb25zLmFwcGVuZChuZXdNYXNrSW1hZ2UpOworICAgIH0KKwor
ICAgIHJldHVybiB0cnVlOworfQorCiBQYXNzUmVmUHRyPFN0eWxlSW1hZ2U+IFN0eWxlUmVzb2x2
ZXI6OmxvYWRQZW5kaW5nSW1hZ2UoY29uc3QgU3R5bGVQZW5kaW5nSW1hZ2UmIHBlbmRpbmdJbWFn
ZSwgY29uc3QgUmVzb3VyY2VMb2FkZXJPcHRpb25zJiBvcHRpb25zKQogewogICAgIGlmIChhdXRv
IGltYWdlVmFsdWUgPSBwZW5kaW5nSW1hZ2UuY3NzSW1hZ2VWYWx1ZSgpKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9T
dHlsZVJlc29sdmVyLmgKaW5kZXggNTVjYTBmNi4uZTU4NjdmMCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5
bGVSZXNvbHZlci5oCkBAIC0yOCw2ICsyOCw3IEBACiAjaW5jbHVkZSAiRG9jdW1lbnRSdWxlU2V0
cy5oIgogI2luY2x1ZGUgIkluc3BlY3RvckNTU09NV3JhcHBlcnMuaCIKICNpbmNsdWRlICJMaW5r
SGFzaC5oIgorI2luY2x1ZGUgIk1hc2tJbWFnZU9wZXJhdGlvbi5oIgogI2luY2x1ZGUgIk1lZGlh
UXVlcnlFeHAuaCIKICNpbmNsdWRlICJSZW5kZXJTdHlsZS5oIgogI2luY2x1ZGUgIlJ1bGVGZWF0
dXJlLmgiCkBAIC0yMzcsNiArMjM4LDcgQEAgcHVibGljOgogICAgIHZvaWQgY2xlYXJDYWNoZWRQ
cm9wZXJ0aWVzQWZmZWN0ZWRCeVZpZXdwb3J0VW5pdHMoKTsKIAogICAgIGJvb2wgY3JlYXRlRmls
dGVyT3BlcmF0aW9ucyhDU1NWYWx1ZSogaW5WYWx1ZSwgRmlsdGVyT3BlcmF0aW9ucyYgb3V0T3Bl
cmF0aW9ucyk7CisgICAgYm9vbCBjcmVhdGVNYXNrSW1hZ2VPcGVyYXRpb25zKENTU1ZhbHVlKiBp
blZhbHVlLCBWZWN0b3I8UmVmUHRyPE1hc2tJbWFnZU9wZXJhdGlvbj4+JiBvdXRPcGVyYXRpb25z
KTsKICAgICB2b2lkIGxvYWRQZW5kaW5nU1ZHRG9jdW1lbnRzKCk7CiAKICAgICB2b2lkIGxvYWRQ
ZW5kaW5nUmVzb3VyY2VzKCk7CkBAIC0zODAsNiArMzgyLDcgQEAgcHVibGljOgogICAgICAgICBQ
ZW5kaW5nSW1hZ2VQcm9wZXJ0eU1hcCYgcGVuZGluZ0ltYWdlUHJvcGVydGllcygpIHsgcmV0dXJu
IG1fcGVuZGluZ0ltYWdlUHJvcGVydGllczsgfQogCiAgICAgICAgIFZlY3RvcjxSZWZQdHI8UmVm
ZXJlbmNlRmlsdGVyT3BlcmF0aW9uPj4mIGZpbHRlcnNXaXRoUGVuZGluZ1NWR0RvY3VtZW50cygp
IHsgcmV0dXJuIG1fZmlsdGVyc1dpdGhQZW5kaW5nU1ZHRG9jdW1lbnRzOyB9CisgICAgICAgIFZl
Y3RvcjxSZWZQdHI8TWFza0ltYWdlT3BlcmF0aW9uPj4mIG1hc2tJbWFnZXNXaXRoUGVuZGluZ1NW
R0RvY3VtZW50cygpIHsgcmV0dXJuIG1fbWFza0ltYWdlc1dpdGhQZW5kaW5nU1ZHRG9jdW1lbnRz
OyB9CiAKICAgICAgICAgdm9pZCBzZXRMaW5lSGVpZ2h0VmFsdWUoQ1NTVmFsdWUqIHZhbHVlKSB7
IG1fbGluZUhlaWdodFZhbHVlID0gdmFsdWU7IH0KICAgICAgICAgQ1NTVmFsdWUqIGxpbmVIZWln
aHRWYWx1ZSgpIHsgcmV0dXJuIG1fbGluZUhlaWdodFZhbHVlOyB9CkBAIC00MjgsNiArNDMxLDcg
QEAgcHVibGljOgogICAgICAgICBQZW5kaW5nSW1hZ2VQcm9wZXJ0eU1hcCBtX3BlbmRpbmdJbWFn
ZVByb3BlcnRpZXM7CiAKICAgICAgICAgVmVjdG9yPFJlZlB0cjxSZWZlcmVuY2VGaWx0ZXJPcGVy
YXRpb24+PiBtX2ZpbHRlcnNXaXRoUGVuZGluZ1NWR0RvY3VtZW50czsKKyAgICAgICAgVmVjdG9y
PFJlZlB0cjxNYXNrSW1hZ2VPcGVyYXRpb24+PiBtX21hc2tJbWFnZXNXaXRoUGVuZGluZ1NWR0Rv
Y3VtZW50czsKIAogICAgICAgICBDU1NWYWx1ZSogbV9saW5lSGVpZ2h0VmFsdWU7CiAgICAgICAg
IGJvb2wgbV9mb250RGlydHk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvV2ViS2l0
Q1NTUmVzb3VyY2VWYWx1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvV2ViS2l0Q1NTUmVzb3Vy
Y2VWYWx1ZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDgwYjI5MQot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9XZWJLaXRDU1NSZXNvdXJjZVZh
bHVlLmNwcApAQCAtMCwwICsxLDc1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE0IEFkb2Jl
IFN5c3RlbXMgSW5jb3Jwb3JhdGVkLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVIgIkFT
IElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIEhPTERFUiBCRQorICog
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLAorICogT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUgorICogVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
CisgKiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YKKyAqIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIK
KyNpbmNsdWRlICJXZWJLaXRDU1NSZXNvdXJjZVZhbHVlLmgiCisKKyNpbmNsdWRlICJDU1NQYXJz
ZXIuaCIKKyNpbmNsdWRlICJDU1NQcmltaXRpdmVWYWx1ZS5oIgorI2luY2x1ZGUgIkNTU1ZhbHVl
TGlzdC5oIgorI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL3RleHQv
U3RyaW5nQnVpbGRlci5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCituYW1l
c3BhY2UgV2ViQ29yZSB7CisKK1dlYktpdENTU1Jlc291cmNlVmFsdWU6OldlYktpdENTU1Jlc291
cmNlVmFsdWUoUGFzc1JlZlB0cjxDU1NWYWx1ZT4gcmVzb3VyY2VWYWx1ZSkKKyAgICA6IENTU1Zh
bHVlKFdlYktpdENTU1Jlc291cmNlQ2xhc3MpCisgICAgLCBtX2lubmVyVmFsdWUocmVzb3VyY2VW
YWx1ZSkKK3sKK30KKworU3RyaW5nIFdlYktpdENTU1Jlc291cmNlVmFsdWU6OmN1c3RvbUNTU1Rl
eHQoKSBjb25zdAoreworICAgIGlmIChpc0NTU1ZhbHVlTm9uZSgpKQorICAgICAgICByZXR1cm4g
Im5vbmUiOworCisgICAgaWYgKG1faW5uZXJWYWx1ZS5nZXQoKSkgeworICAgICAgICBpZiAoaXM8
Q1NTUHJpbWl0aXZlVmFsdWU+KG1faW5uZXJWYWx1ZS5nZXQoKSkgJiYgZG93bmNhc3Q8Q1NTUHJp
bWl0aXZlVmFsdWU+KG1faW5uZXJWYWx1ZS5nZXQoKSktPmlzVVJJKCkpIHsKKyAgICAgICAgICAg
IFN0cmluZ0J1aWxkZXIgcmVzdWx0OworICAgICAgICAgICAgcmVzdWx0LmFwcGVuZExpdGVyYWwo
InVybCgiKTsKKyAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQocXVvdGVDU1NVUkxJZk5lZWRlZChk
b3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4obV9pbm5lclZhbHVlLmdldCgpKS0+Z2V0U3RyaW5n
VmFsdWUoKSkpOworICAgICAgICAgICAgcmVzdWx0LmFwcGVuZExpdGVyYWwoIikiKTsKKyAgICAg
ICAgICAgIHJldHVybiByZXN1bHQudG9TdHJpbmcoKTsKKyAgICAgICAgfQorICAgICAgICAKKyAg
ICAgICAgcmV0dXJuIG1faW5uZXJWYWx1ZS0+Y3NzVGV4dCgpOworICAgIH0KKyAgICAKKyAgICBy
ZXR1cm4gIiI7Cit9CisKK2Jvb2wgV2ViS2l0Q1NTUmVzb3VyY2VWYWx1ZTo6aXNDU1NWYWx1ZU5v
bmUoKSBjb25zdAoreworICAgIGlmIChpczxDU1NQcmltaXRpdmVWYWx1ZT4obV9pbm5lclZhbHVl
LmdldCgpKSkgeworICAgICAgICBSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IHByaW1pdGl2ZVZh
bHVlID0gZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KG1faW5uZXJWYWx1ZS5nZXQoKSk7Cisg
ICAgICAgIHJldHVybiAocHJpbWl0aXZlVmFsdWUtPmlzVmFsdWVJRCgpICYmIHByaW1pdGl2ZVZh
bHVlLT5nZXRWYWx1ZUlEKCkgPT0gQ1NTVmFsdWVOb25lKTsKKyAgICB9CisKKyAgICByZXR1cm4g
ZmFsc2U7Cit9CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9XZWJLaXRDU1NS
ZXNvdXJjZVZhbHVlLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvV2ViS2l0Q1NTUmVzb3VyY2VWYWx1
ZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ1NzdjNDkKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvV2ViS2l0Q1NTUmVzb3VyY2VWYWx1ZS5oCkBA
IC0wLDAgKzEsNTUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgQWRvYmUgU3lzdGVtcyBJ
bmNvcnBvcmF0ZWQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUiAiQVMgSVMiIEFORCBB
TlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQgSE9MREVSIEJFCisgKiBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksCisg
KiBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SCisgKiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YKKyAqIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RgorICogU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBXZWJLaXRDU1NSZXNvdXJjZVZhbHVl
X2gKKyNkZWZpbmUgV2ViS2l0Q1NTUmVzb3VyY2VWYWx1ZV9oCisKKyNpbmNsdWRlICJDU1NWYWx1
ZS5oIgorI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL1JlZlB0ci5o
PgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFdlYktpdENTU1Jlc291cmNlVmFsdWUg
OiBwdWJsaWMgQ1NTVmFsdWUgeworcHVibGljOgorICAgIHN0YXRpYyBQYXNzUmVmPFdlYktpdENT
U1Jlc291cmNlVmFsdWU+IGNyZWF0ZShQYXNzUmVmUHRyPENTU1ZhbHVlPiByZXNvdXJjZVZhbHVl
KQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2ViS2l0Q1NTUmVzb3VyY2VW
YWx1ZShyZXNvdXJjZVZhbHVlKSk7CisgICAgfQorCisgICAgU3RyaW5nIGN1c3RvbUNTU1RleHQo
KSBjb25zdDsKKyAgICBQYXNzUmVmUHRyPENTU1ZhbHVlPiBpbm5lclZhbHVlKCkgeyByZXR1cm4g
bV9pbm5lclZhbHVlOyB9OworICAgIGJvb2wgaXNDU1NWYWx1ZU5vbmUoKSBjb25zdDsKK3ByaXZh
dGU6CisgICAgV2ViS2l0Q1NTUmVzb3VyY2VWYWx1ZShQYXNzUmVmUHRyPENTU1ZhbHVlPiByZXNv
dXJjZVZhbHVlKTsKKyAgICBSZWZQdHI8Q1NTVmFsdWU+IG1faW5uZXJWYWx1ZTsKK307CisKK30K
KworU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19DU1NfVkFMVUUoV2ViS2l0Q1NTUmVzb3VyY2VWYWx1
ZSwgaXNXZWJLaXRDU1NSZXNvdXJjZVZhbHVlKCkpCisKKyNlbmRpZiAvLyBXZWJLaXRDU1NSZXNv
dXJjZVZhbHVlX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNo
ZWRSZXNvdXJjZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVk
UmVzb3VyY2VMb2FkZXIuY3BwCmluZGV4IDM2OTJmOGUuLmU2MzA1NjUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlTG9hZGVyLmNwcApAQCAt
NzU5LDYgKzc1OSwxNCBAQCB2b2lkIENhY2hlZFJlc291cmNlTG9hZGVyOjpyZW1vdmVDYWNoZWRS
ZXNvdXJjZShDYWNoZWRSZXNvdXJjZSogcmVzb3VyY2UpIGNvbnN0CiAgICAgbV9kb2N1bWVudFJl
c291cmNlcy5yZW1vdmUocmVzb3VyY2UtPnVybCgpKTsKIH0KIAordm9pZCBDYWNoZWRSZXNvdXJj
ZUxvYWRlcjo6YWRkQ2FjaGVkUmVzb3VyY2UoQ2FjaGVkUmVzb3VyY2UqIHJlc291cmNlKQorewor
ICAgIG1fZG9jdW1lbnRSZXNvdXJjZXMuc2V0KHJlc291cmNlLT51cmwoKSwgcmVzb3VyY2UpOwor
CisgICAgaWYgKCFtZW1vcnlDYWNoZSgpLmFkZChyZXNvdXJjZSkpCisgICAgICAgIHJlc291cmNl
LT5zZXRPd25pbmdDYWNoZWRSZXNvdXJjZUxvYWRlcih0aGlzKTsKK30KKwogdm9pZCBDYWNoZWRS
ZXNvdXJjZUxvYWRlcjo6bG9hZERvbmUoQ2FjaGVkUmVzb3VyY2UqIHJlc291cmNlLCBib29sIHNo
b3VsZFBlcmZvcm1Qb3N0TG9hZEFjdGlvbnMpCiB7CiAgICAgUmVmUHRyPERvY3VtZW50TG9hZGVy
PiBwcm90ZWN0RG9jdW1lbnRMb2FkZXIobV9kb2N1bWVudExvYWRlcik7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VMb2FkZXIuaCBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5oCmluZGV4IDc5NThl
NjIuLjNjMGVhNTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNo
ZWRSZXNvdXJjZUxvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNo
ZWRSZXNvdXJjZUxvYWRlci5oCkBAIC0xMTQsNiArMTE0LDcgQEAgcHVibGljOgogICAgIFNlc3Np
b25JRCBzZXNzaW9uSUQoKSBjb25zdDsKIAogICAgIHZvaWQgcmVtb3ZlQ2FjaGVkUmVzb3VyY2Uo
Q2FjaGVkUmVzb3VyY2UqKSBjb25zdDsKKyAgICB2b2lkIGFkZENhY2hlZFJlc291cmNlKENhY2hl
ZFJlc291cmNlKik7CiAKICAgICB2b2lkIGxvYWREb25lKENhY2hlZFJlc291cmNlKiwgYm9vbCBz
aG91bGRQZXJmb3JtUG9zdExvYWRBY3Rpb25zID0gdHJ1ZSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdEb2N1bWVudC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1lbnQuY3BwCmluZGV4IGE1MjMwMjAuLmJh
YmU5MmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdE
b2N1bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0Rv
Y3VtZW50LmNwcApAQCAtMjMsNiArMjMsMTMgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNs
dWRlICJDYWNoZWRTVkdEb2N1bWVudC5oIgogCisjaW5jbHVkZSAiRG9jdW1lbnRMb2FkZXIuaCIK
KyNpbmNsdWRlICJFbXB0eUNsaWVudHMuaCIKKyNpbmNsdWRlICJGcmFtZVZpZXcuaCIKKyNpbmNs
dWRlICJNYWluRnJhbWUuaCIKKyNpbmNsdWRlICJQYWdlLmgiCisjaW5jbHVkZSAiUGFnZUNvbmZp
Z3VyYXRpb24uaCIKKyNpbmNsdWRlICJTZXR0aW5ncy5oIgogI2luY2x1ZGUgIlNoYXJlZEJ1ZmZl
ci5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0zMCw2ICszNyw4IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIENhY2hlZFNWR0RvY3VtZW50OjpDYWNoZWRTVkdEb2N1bWVudChjb25zdCBSZXNv
dXJjZVJlcXVlc3QmIHJlcXVlc3QsIFNlc3Npb25JRCBzZXNzaW9uSUQpCiAgICAgOiBDYWNoZWRS
ZXNvdXJjZShyZXF1ZXN0LCBTVkdEb2N1bWVudFJlc291cmNlLCBzZXNzaW9uSUQpCiAgICAgLCBt
X2RlY29kZXIoVGV4dFJlc291cmNlRGVjb2Rlcjo6Y3JlYXRlKCJhcHBsaWNhdGlvbi94bWwiKSkK
KyAgICAsIG1fc2hvdWxkQ3JlYXRlRnJhbWVGb3JEb2N1bWVudCh0cnVlKQorICAgICwgbV9jYW5S
ZXVzZVJlc291cmNlKHRydWUpCiB7CiAgICAgc2V0QWNjZXB0KCJpbWFnZS9zdmcreG1sIik7CiB9
CkBAIC01MSw5ICs2MCwxNyBAQCBTdHJpbmcgQ2FjaGVkU1ZHRG9jdW1lbnQ6OmVuY29kaW5nKCkg
Y29uc3QKIHZvaWQgQ2FjaGVkU1ZHRG9jdW1lbnQ6OmZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVy
KiBkYXRhKQogewogICAgIGlmIChkYXRhKSB7Ci0gICAgICAgIC8vIFdlIGRvbid0IG5lZWQgdG8g
Y3JlYXRlIGEgbmV3IGZyYW1lIGJlY2F1c2UgdGhlIG5ldyBkb2N1bWVudCBiZWxvbmdzIHRvIHRo
ZSBwYXJlbnQgVXNlRWxlbWVudC4KLSAgICAgICAgbV9kb2N1bWVudCA9IFNWR0RvY3VtZW50Ojpj
cmVhdGUobnVsbHB0ciwgcmVzcG9uc2UoKS51cmwoKSk7Ci0gICAgICAgIG1fZG9jdW1lbnQtPnNl
dENvbnRlbnQobV9kZWNvZGVyLT5kZWNvZGVBbmRGbHVzaChkYXRhLT5kYXRhKCksIGRhdGEtPnNp
emUoKSkpOworICAgICAgICAvLyBJbiBjZXJ0YWluIHNpdHVhdGlvbnMgKGxpa2UgdGhlIHNjZW5h
cmlvIHdoZW4gdGhpcyBkb2N1bWVudCBiZWxvbmdzIHRvIGFuIFVzZUVsZW1lbnQpIHdlIGRvbid0
IG5lZWQgdG8gY3JlYXRlIGEgZnJhbWUuCisgICAgICAgIGlmIChtX3Nob3VsZENyZWF0ZUZyYW1l
Rm9yRG9jdW1lbnQpIHsKKyAgICAgICAgICAgIFBhZ2VDb25maWd1cmF0aW9uIHBhZ2VDb25maWd1
cmF0aW9uOworICAgICAgICAgICAgZmlsbFdpdGhFbXB0eUNsaWVudHMocGFnZUNvbmZpZ3VyYXRp
b24pOworICAgICAgICAgICAgCisgICAgICAgICAgICBtX3BhZ2UgPSBzdGQ6OnVuaXF1ZV9wdHI8
UGFnZT4oUGFnZTo6Y3JlYXRlUGFnZUZyb21CdWZmZXIocGFnZUNvbmZpZ3VyYXRpb24sIGRhdGEs
ICJpbWFnZS9zdmcreG1sIiwgZmFsc2UsIHRydWUpKTsKKyAgICAgICAgICAgIG1fZG9jdW1lbnQg
PSBkb3duY2FzdDxTVkdEb2N1bWVudD4obV9wYWdlLT5tYWluRnJhbWUoKS5kb2N1bWVudCgpKTsK
KyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIG1fZG9jdW1lbnQgPSBTVkdEb2N1bWVudDo6
Y3JlYXRlKG51bGxwdHIsIHJlc3BvbnNlKCkudXJsKCkpOworICAgICAgICAgICAgbV9kb2N1bWVu
dC0+c2V0Q29udGVudChtX2RlY29kZXItPmRlY29kZUFuZEZsdXNoKGRhdGEtPmRhdGEoKSwgZGF0
YS0+c2l6ZSgpKSk7CisgICAgICAgIH0KICAgICB9CiAgICAgQ2FjaGVkUmVzb3VyY2U6OmZpbmlz
aExvYWRpbmcoZGF0YSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2Fj
aGUvQ2FjaGVkU1ZHRG9jdW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNo
ZWRTVkdEb2N1bWVudC5oCmluZGV4IGE3OTFjZDguLmQ0YTdhNTIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdEb2N1bWVudC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdEb2N1bWVudC5oCkBAIC0zNiw2ICszNiw5IEBA
IHB1YmxpYzoKICAgICB2aXJ0dWFsIH5DYWNoZWRTVkdEb2N1bWVudCgpOwogCiAgICAgU1ZHRG9j
dW1lbnQqIGRvY3VtZW50KCkgY29uc3QgeyByZXR1cm4gbV9kb2N1bWVudC5nZXQoKTsgfQorICAg
IHZvaWQgc2V0U2hvdWxkQ3JlYXRlRnJhbWVGb3JEb2N1bWVudChib29sIHNob3VsZENyZWF0ZSkg
eyBtX3Nob3VsZENyZWF0ZUZyYW1lRm9yRG9jdW1lbnQgPSBzaG91bGRDcmVhdGU7IH0KKyAgICB2
aXJ0dWFsIGJvb2wgY2FuUmV1c2UoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JikgY29uc3Qgb3ZlcnJp
ZGUgeyByZXR1cm4gbV9jYW5SZXVzZVJlc291cmNlOyB9CisgICAgdm9pZCBzZXRDYW5SZXVzZShi
b29sIGNhblJldXNlUmVzb3VyY2UpIHsgbV9jYW5SZXVzZVJlc291cmNlID0gY2FuUmV1c2VSZXNv
dXJjZTsgfTsKIAogcHJpdmF0ZToKICAgICB2aXJ0dWFsIGJvb2wgbWF5VHJ5UmVwbGFjZUVuY29k
ZWREYXRhKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQpAQCAtNDUsNiArNDgsOSBA
QCBwcml2YXRlOgogCiAgICAgUmVmUHRyPFNWR0RvY3VtZW50PiBtX2RvY3VtZW50OwogICAgIFJl
ZlB0cjxUZXh0UmVzb3VyY2VEZWNvZGVyPiBtX2RlY29kZXI7CisgICAgc3RkOjp1bmlxdWVfcHRy
PFBhZ2U+IG1fcGFnZTsKKyAgICB1bnNpZ25lZCBtX3Nob3VsZENyZWF0ZUZyYW1lRm9yRG9jdW1l
bnQgOiAxOworICAgIHVuc2lnbmVkIG1fY2FuUmV1c2VSZXNvdXJjZSA6IDE7CiB9OwogCiB9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2Fj
aGUvQ2FjaGVkU1ZHRG9jdW1lbnRSZWZlcmVuY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2NhY2hlL0NhY2hlZFNWR0RvY3VtZW50UmVmZXJlbmNlLmNwcAppbmRleCAwNmYzYWI4Li5iNmI0
NjI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRG9j
dW1lbnRSZWZlcmVuY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNo
ZWRTVkdEb2N1bWVudFJlZmVyZW5jZS5jcHAKQEAgLTM0LDE3ICszNCwyMyBAQAogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKLUNhY2hlZFNWR0RvY3VtZW50UmVmZXJlbmNlOjpDYWNoZWRTVkdEb2N1
bWVudFJlZmVyZW5jZShjb25zdCBTdHJpbmcmIHVybCkKK0NhY2hlZFNWR0RvY3VtZW50UmVmZXJl
bmNlOjpDYWNoZWRTVkdEb2N1bWVudFJlZmVyZW5jZShjb25zdCBTdHJpbmcmIHVybCwgQ2FjaGVk
U1ZHRG9jdW1lbnRDbGllbnQqIGFkZGl0aW9uYWxEb2N1bWVudENsaWVudCwgYm9vbCBjYW5SZXVz
ZVJlc291cmNlKQogICAgIDogbV91cmwodXJsKQogICAgICwgbV9kb2N1bWVudCgwKQogICAgICwg
bV9sb2FkUmVxdWVzdGVkKGZhbHNlKQorICAgICwgbV9hZGRpdGlvbmFsRG9jdW1lbnRDbGllbnQo
YWRkaXRpb25hbERvY3VtZW50Q2xpZW50KQorICAgICwgbV9jYW5SZXVzZVJlc291cmNlKGNhblJl
dXNlUmVzb3VyY2UpCiB7CiB9CiAKIENhY2hlZFNWR0RvY3VtZW50UmVmZXJlbmNlOjp+Q2FjaGVk
U1ZHRG9jdW1lbnRSZWZlcmVuY2UoKQogewotICAgIGlmIChtX2RvY3VtZW50KQorICAgIGlmICht
X2RvY3VtZW50KSB7CiAgICAgICAgIG1fZG9jdW1lbnQtPnJlbW92ZUNsaWVudCh0aGlzKTsKKyAg
ICAgICAgCisgICAgICAgIGlmIChtX2FkZGl0aW9uYWxEb2N1bWVudENsaWVudCkKKyAgICAgICAg
ICAgIG1fZG9jdW1lbnQtPnJlbW92ZUNsaWVudChtX2FkZGl0aW9uYWxEb2N1bWVudENsaWVudCk7
CisgICAgfQogfQogCiB2b2lkIENhY2hlZFNWR0RvY3VtZW50UmVmZXJlbmNlOjpsb2FkKENhY2hl
ZFJlc291cmNlTG9hZGVyKiBsb2FkZXIpCkBAIC01Niw4ICs2MiwxMyBAQCB2b2lkIENhY2hlZFNW
R0RvY3VtZW50UmVmZXJlbmNlOjpsb2FkKENhY2hlZFJlc291cmNlTG9hZGVyKiBsb2FkZXIpCiAg
ICAgQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0KGxvYWRlci0+
ZG9jdW1lbnQoKS0+Y29tcGxldGVVUkwobV91cmwpKSk7CiAgICAgcmVxdWVzdC5zZXRJbml0aWF0
b3IoY2FjaGVkUmVzb3VyY2VSZXF1ZXN0SW5pdGlhdG9ycygpLmNzcyk7CiAgICAgbV9kb2N1bWVu
dCA9IGxvYWRlci0+cmVxdWVzdFNWR0RvY3VtZW50KHJlcXVlc3QpOwotICAgIGlmIChtX2RvY3Vt
ZW50KQorICAgIGlmIChtX2RvY3VtZW50KSB7CisgICAgICAgIG1fZG9jdW1lbnQtPnNldENhblJl
dXNlKG1fY2FuUmV1c2VSZXNvdXJjZSk7CiAgICAgICAgIG1fZG9jdW1lbnQtPmFkZENsaWVudCh0
aGlzKTsKKyAgICAgICAgCisgICAgICAgIGlmIChtX2FkZGl0aW9uYWxEb2N1bWVudENsaWVudCkK
KyAgICAgICAgICAgIG1fZG9jdW1lbnQtPmFkZENsaWVudChtX2FkZGl0aW9uYWxEb2N1bWVudENs
aWVudCk7CisgICAgfQogCiAgICAgbV9sb2FkUmVxdWVzdGVkID0gdHJ1ZTsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdEb2N1bWVudFJlZmVyZW5j
ZS5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0RvY3VtZW50UmVmZXJl
bmNlLmgKaW5kZXggNWRhM2VlYy4uNDFmNDFkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL0NhY2hlZFNWR0RvY3VtZW50UmVmZXJlbmNlLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0RvY3VtZW50UmVmZXJlbmNlLmgKQEAgLTM3LDcg
KzM3LDcgQEAgY2xhc3MgQ2FjaGVkUmVzb3VyY2VMb2FkZXI7CiAKIGNsYXNzIENhY2hlZFNWR0Rv
Y3VtZW50UmVmZXJlbmNlIDogcHVibGljIENhY2hlZFNWR0RvY3VtZW50Q2xpZW50IHsKIHB1Ymxp
YzoKLSAgICBDYWNoZWRTVkdEb2N1bWVudFJlZmVyZW5jZShjb25zdCBTdHJpbmcmKTsKKyAgICBD
YWNoZWRTVkdEb2N1bWVudFJlZmVyZW5jZShjb25zdCBTdHJpbmcmIHVybCwgQ2FjaGVkU1ZHRG9j
dW1lbnRDbGllbnQqIGFkZGl0aW9uYWxEb2N1bWVudENsaWVudCA9IG51bGxwdHIsIGJvb2wgY2Fu
UmV1c2VSZXNvdXJjZSA9IHRydWUpOwogCiAgICAgdmlydHVhbCB+Q2FjaGVkU1ZHRG9jdW1lbnRS
ZWZlcmVuY2UoKTsKIApAQCAtNTAsNiArNTAsOCBAQCBwcml2YXRlOgogICAgIFN0cmluZyBtX3Vy
bDsKICAgICBDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRTVkdEb2N1bWVudD4gbV9kb2N1bWVu
dDsKICAgICBib29sIG1fbG9hZFJlcXVlc3RlZDsKKyAgICBDYWNoZWRTVkdEb2N1bWVudENsaWVu
dCogbV9hZGRpdGlvbmFsRG9jdW1lbnRDbGllbnQ7CisgICAgYm9vbCBtX2NhblJldXNlUmVzb3Vy
Y2U7CiB9OwogCiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCmluZGV4IDgzNGU5ZTguLjIw
ZjdkYjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAKQEAgLTQzODIsNiArNDM4MiwxNCBA
QCBib29sIEZyYW1lVmlldzo6aXNGbGlwcGVkRG9jdW1lbnQoKSBjb25zdAogICAgIHJldHVybiBy
ZW5kZXJWaWV3LT5zdHlsZSgpLmlzRmxpcHBlZEJsb2Nrc1dyaXRpbmdNb2RlKCk7CiB9CiAKK2Jv
b2wgRnJhbWVWaWV3Ojppc1NWR0RvY3VtZW50KCkgY29uc3QKK3sKKyAgICBpZiAoZnJhbWUoKS5k
b2N1bWVudCgpKQorICAgICAgICByZXR1cm4gZnJhbWUoKS5kb2N1bWVudCgpLT5pc1NWR0RvY3Vt
ZW50KCk7CisgICAgCisgICAgcmV0dXJuIGZhbHNlOworfQorCiB2b2lkIEZyYW1lVmlldzo6bm90
aWZ5V2lkZ2V0c0luQWxsRnJhbWVzKFdpZGdldE5vdGlmaWNhdGlvbiBub3RpZmljYXRpb24pCiB7
CiAgICAgZm9yIChGcmFtZSogZnJhbWUgPSBtX2ZyYW1lLmdldCgpOyBmcmFtZTsgZnJhbWUgPSBm
cmFtZS0+dHJlZSgpLnRyYXZlcnNlTmV4dChtX2ZyYW1lLmdldCgpKSkgewpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJh
bWVWaWV3LmgKaW5kZXggZjViNWU1ZC4uYjU0Y2YxYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGFnZS9GcmFtZVZpZXcuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5o
CkBAIC01MjYsNiArNTI2LDcgQEAgcHJvdGVjdGVkOgogCiAgICAgdmlydHVhbCBib29sIGlzVmVy
dGljYWxEb2N1bWVudCgpIGNvbnN0IG92ZXJyaWRlOwogICAgIHZpcnR1YWwgYm9vbCBpc0ZsaXBw
ZWREb2N1bWVudCgpIGNvbnN0IG92ZXJyaWRlOworICAgIHZpcnR1YWwgYm9vbCBpc1NWR0RvY3Vt
ZW50KCkgY29uc3Qgb3ZlcnJpZGU7CiAKIHByaXZhdGU6CiAgICAgZXhwbGljaXQgRnJhbWVWaWV3
KEZyYW1lJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcAppbmRleCAxNTIwMzc2Li4xNzhhMmQxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvUGFnZS5jcHAKQEAgLTI5LDYgKzI5LDcgQEAKICNpbmNsdWRlICJDbGllbnRSZWN0TGlzdC5o
IgogI2luY2x1ZGUgIkNvbnRleHRNZW51Q2xpZW50LmgiCiAjaW5jbHVkZSAiQ29udGV4dE1lbnVD
b250cm9sbGVyLmgiCisjaW5jbHVkZSAiRG9jdW1lbnRMb2FkZXIuaCIKICNpbmNsdWRlICJEb2N1
bWVudE1hcmtlckNvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJEb2N1bWVudFN0eWxlU2hlZXRDb2xs
ZWN0aW9uLmgiCiAjaW5jbHVkZSAiRHJhZ0NvbnRyb2xsZXIuaCIKQEAgLTI3NSw2ICsyNzYsMzMg
QEAgUGFnZTo6flBhZ2UoKQogICAgIG1fdmlzaXRlZExpbmtTdG9yZS0+cmVtb3ZlUGFnZSgqdGhp
cyk7CiB9CiAKK1BhZ2UqIFBhZ2U6OmNyZWF0ZVBhZ2VGcm9tQnVmZmVyKFBhZ2VDb25maWd1cmF0
aW9uJiBwYWdlQ29uZmlndXJhdGlvbiwgY29uc3QgU2hhcmVkQnVmZmVyKiBidWZmZXIsIGNvbnN0
IFN0cmluZyYgbWltZVR5cGUsIGJvb2wgY2FuSGF2ZVNjcm9sbGJhcnMsIGJvb2wgdHJhbnNwYXJl
bnQpCit7CisgICAgQVNTRVJUKGJ1ZmZlcik7CisgICAgCisgICAgUGFnZSogbmV3UGFnZSA9IG5l
dyBQYWdlKHBhZ2VDb25maWd1cmF0aW9uKTsKKyAgICBuZXdQYWdlLT5zZXR0aW5ncygpLnNldE1l
ZGlhRW5hYmxlZChmYWxzZSk7CisgICAgbmV3UGFnZS0+c2V0dGluZ3MoKS5zZXRTY3JpcHRFbmFi
bGVkKGZhbHNlKTsKKyAgICBuZXdQYWdlLT5zZXR0aW5ncygpLnNldFBsdWdpbnNFbmFibGVkKGZh
bHNlKTsKKyAgICAKKyAgICBGcmFtZSYgZnJhbWUgPSBuZXdQYWdlLT5tYWluRnJhbWUoKTsKKyAg
ICBmcmFtZS5zZXRWaWV3KEZyYW1lVmlldzo6Y3JlYXRlKGZyYW1lKSk7CisgICAgZnJhbWUuaW5p
dCgpOworICAgIEZyYW1lTG9hZGVyJiBsb2FkZXIgPSBmcmFtZS5sb2FkZXIoKTsKKyAgICBsb2Fk
ZXIuZm9yY2VTYW5kYm94RmxhZ3MoU2FuZGJveEFsbCk7CisgICAgCisgICAgZnJhbWUudmlldygp
LT5zZXRDYW5IYXZlU2Nyb2xsYmFycyhjYW5IYXZlU2Nyb2xsYmFycyk7CisgICAgZnJhbWUudmll
dygpLT5zZXRUcmFuc3BhcmVudCh0cmFuc3BhcmVudCk7CisgICAgCisgICAgQVNTRVJUKGxvYWRl
ci5hY3RpdmVEb2N1bWVudExvYWRlcigpKTsgLy8gRG9jdW1lbnRMb2FkZXIgc2hvdWxkIGhhdmUg
YmVlbiBjcmVhdGVkIGJ5IGZyYW1lLT5pbml0KCkuCisgICAgbG9hZGVyLmFjdGl2ZURvY3VtZW50
TG9hZGVyKCktPndyaXRlcigpLnNldE1JTUVUeXBlKG1pbWVUeXBlKTsKKyAgICBsb2FkZXIuYWN0
aXZlRG9jdW1lbnRMb2FkZXIoKS0+d3JpdGVyKCkuYmVnaW4oVVJMKCkpOyAvLyBjcmVhdGUgdGhl
IGVtcHR5IGRvY3VtZW50CisgICAgbG9hZGVyLmFjdGl2ZURvY3VtZW50TG9hZGVyKCktPndyaXRl
cigpLmFkZERhdGEoYnVmZmVyLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpKTsKKyAgICBsb2FkZXIu
YWN0aXZlRG9jdW1lbnRMb2FkZXIoKS0+d3JpdGVyKCkuZW5kKCk7CisgICAgCisgICAgcmV0dXJu
IG5ld1BhZ2U7Cit9CisKIHZvaWQgUGFnZTo6Y2xlYXJQcmV2aW91c0l0ZW1Gcm9tQWxsUGFnZXMo
SGlzdG9yeUl0ZW0qIGl0ZW0pCiB7CiAgICAgaWYgKCFhbGxQYWdlcykKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmgKaW5k
ZXggNjViZDg2Mi4uN2IyNGViMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdl
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmgKQEAgLTEwNyw2ICsxMDcsNyBAQCBj
bGFzcyBWaWV3U3RhdGVDaGFuZ2VPYnNlcnZlcjsKIGNsYXNzIFZpc2l0ZWRMaW5rU3RvcmU7CiAK
IHR5cGVkZWYgdWludDY0X3QgTGlua0hhc2g7CitjbGFzcyBTaGFyZWRCdWZmZXI7CiAKIGVudW0g
RmluZERpcmVjdGlvbiB7IEZpbmREaXJlY3Rpb25Gb3J3YXJkLCBGaW5kRGlyZWN0aW9uQmFja3dh
cmQgfTsKIApAQCAtMTI0LDYgKzEyNSw4IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCB+
UGFnZSgpOwogCiAgICAgV0VCQ09SRV9FWFBPUlQgdWludDY0X3QgcmVuZGVyVHJlZVNpemUoKSBj
b25zdDsKKyAgICAKKyAgICBzdGF0aWMgUGFnZSogY3JlYXRlUGFnZUZyb21CdWZmZXIoUGFnZUNv
bmZpZ3VyYXRpb24mLCBjb25zdCBTaGFyZWRCdWZmZXIqLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBl
LCBib29sIGNhbkhhdmVTY3JvbGxiYXJzLCBib29sIHRyYW5zcGFyZW50KTsKIAogICAgIHZvaWQg
c2V0TmVlZHNSZWNhbGNTdHlsZUluQWxsRnJhbWVzKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1Njcm9sbFZpZXcuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Nj
cm9sbFZpZXcuaAppbmRleCBmMmVmNTkxLi4xZjRlMmM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9TY3JvbGxWaWV3LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
U2Nyb2xsVmlldy5oCkBAIC00MTAsNiArNDEwLDcgQEAgcHJvdGVjdGVkOgogICAgIC8vIFN1YmNs
YXNzZWQgYnkgRnJhbWVWaWV3IHRvIGNoZWNrIHRoZSB3cml0aW5nLW1vZGUgb2YgdGhlIGRvY3Vt
ZW50LgogICAgIHZpcnR1YWwgYm9vbCBpc1ZlcnRpY2FsRG9jdW1lbnQoKSBjb25zdCB7IHJldHVy
biB0cnVlOyB9CiAgICAgdmlydHVhbCBib29sIGlzRmxpcHBlZERvY3VtZW50KCkgY29uc3QgeyBy
ZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIGJvb2wgaXNTVkdEb2N1bWVudCgpIGNvbnN0IHsg
cmV0dXJuIGZhbHNlOyB9CiAKICAgICAvLyBDYWxsZWQgdG8gdXBkYXRlIHRoZSBzY3JvbGxiYXJz
IHRvIGFjY3VyYXRlbHkgcmVmbGVjdCB0aGUgc3RhdGUgb2YgdGhlIHZpZXcuCiAgICAgdm9pZCB1
cGRhdGVTY3JvbGxiYXJzKGNvbnN0IEludFNpemUmIGRlc2lyZWRPZmZzZXQpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWFza0ltYWdlT3BlcmF0aW9uLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01hc2tJbWFnZU9wZXJhdGlvbi5j
cHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGQ4N2I4MQotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01hc2tJbWFnZU9wZXJh
dGlvbi5jcHAKQEAgLTAsMCArMSwyNjEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgQWRv
YmUgU3lzdGVtcyBJbmNvcnBvcmF0ZWQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUiAi
QVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQgSE9MREVSIEJFCisg
KiBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksCisgKiBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SCisgKiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YKKyAqIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRgorICogU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5o
IgorI2luY2x1ZGUgIk1hc2tJbWFnZU9wZXJhdGlvbi5oIgorCisjaW5jbHVkZSAiQ2FjaGVkSW1h
Z2UuaCIKKyNpbmNsdWRlICJDYWNoZWRTVkdEb2N1bWVudC5oIgorI2luY2x1ZGUgIlJlbmRlckJv
eE1vZGVsT2JqZWN0LmgiCisjaW5jbHVkZSAiUmVuZGVyU1ZHUmVzb3VyY2VNYXNrZXIuaCIKKyNp
bmNsdWRlICJTVkdEb2N1bWVudC5oIgorI2luY2x1ZGUgIlNWR01hc2tFbGVtZW50LmgiCisjaW5j
bHVkZSAiU1ZHU1ZHRWxlbWVudC5oIgorI2luY2x1ZGUgIlN0eWxlQ2FjaGVkSW1hZ2UuaCIKKyNp
bmNsdWRlICJTdWJyZXNvdXJjZUxvYWRlci5oIgorI2luY2x1ZGUgIldlYktpdENTU1Jlc291cmNl
VmFsdWUuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitQYXNzUmVmUHRyPE1hc2tJbWFnZU9w
ZXJhdGlvbj4gTWFza0ltYWdlT3BlcmF0aW9uOjpjcmVhdGUoUGFzc1JlZlB0cjxXZWJLaXRDU1NS
ZXNvdXJjZVZhbHVlPiBjc3NWYWx1ZSwgY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0cmluZyYg
ZnJhZ21lbnQsIGJvb2wgaXNFeHRlcm5hbERvY3VtZW50LCBQYXNzUmVmUHRyPENhY2hlZFJlc291
cmNlTG9hZGVyPiBjYWNoZWRSZXNvdXJjZUxvYWRlcikKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYo
bmV3IE1hc2tJbWFnZU9wZXJhdGlvbihjc3NWYWx1ZSwgdXJsLCBmcmFnbWVudCwgaXNFeHRlcm5h
bERvY3VtZW50LCBjYWNoZWRSZXNvdXJjZUxvYWRlcikpOworfQorCitQYXNzUmVmUHRyPE1hc2tJ
bWFnZU9wZXJhdGlvbj4gTWFza0ltYWdlT3BlcmF0aW9uOjpjcmVhdGUoUGFzc1JlZlB0cjxTdHls
ZUltYWdlPiBnZW5lcmF0ZWRJbWFnZSkKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IE1hc2tJ
bWFnZU9wZXJhdGlvbihnZW5lcmF0ZWRJbWFnZSkpOworfQorCitQYXNzUmVmUHRyPE1hc2tJbWFn
ZU9wZXJhdGlvbj4gTWFza0ltYWdlT3BlcmF0aW9uOjpjcmVhdGUoKQoreworICAgIHJldHVybiBh
ZG9wdFJlZihuZXcgTWFza0ltYWdlT3BlcmF0aW9uKCkpOworfQorCitNYXNrSW1hZ2VPcGVyYXRp
b246Ok1hc2tJbWFnZU9wZXJhdGlvbihQYXNzUmVmUHRyPFdlYktpdENTU1Jlc291cmNlVmFsdWU+
IGNzc1ZhbHVlLCBjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgU3RyaW5nJiBmcmFnbWVudCwgYm9v
bCBpc0V4dGVybmFsRG9jdW1lbnQsIFBhc3NSZWZQdHI8Q2FjaGVkUmVzb3VyY2VMb2FkZXI+IGNh
Y2hlZFJlc291cmNlTG9hZGVyKQorICAgIDogbV91cmwodXJsKQorICAgICwgbV9mcmFnbWVudChm
cmFnbWVudCkKKyAgICAsIG1faXNFeHRlcm5hbERvY3VtZW50KGlzRXh0ZXJuYWxEb2N1bWVudCkK
KyAgICAsIG1fcmVuZGVyTGF5ZXJJbWFnZUNsaWVudChudWxscHRyKQorICAgICwgbV9jc3NNYXNr
SW1hZ2VWYWx1ZShjc3NWYWx1ZSkKKyAgICAsIG1fY2FjaGVkUmVzb3VyY2VMb2FkZXIoY2FjaGVk
UmVzb3VyY2VMb2FkZXIpCit7CisgICAgQVNTRVJUKG1fY3NzTWFza0ltYWdlVmFsdWUuZ2V0KCkp
OworfQorCitNYXNrSW1hZ2VPcGVyYXRpb246Ok1hc2tJbWFnZU9wZXJhdGlvbihQYXNzUmVmUHRy
PFN0eWxlSW1hZ2U+IGdlbmVyYXRlZEltYWdlKQorICAgIDogbV9pc0V4dGVybmFsRG9jdW1lbnQo
ZmFsc2UpCisgICAgLCBtX3N0eWxlSW1hZ2UoZ2VuZXJhdGVkSW1hZ2UpCisgICAgLCBtX3JlbmRl
ckxheWVySW1hZ2VDbGllbnQobnVsbHB0cikKK3sKK30KKworTWFza0ltYWdlT3BlcmF0aW9uOjpN
YXNrSW1hZ2VPcGVyYXRpb24oKQorICAgIDogbV9pc0V4dGVybmFsRG9jdW1lbnQoZmFsc2UpCisg
ICAgLCBtX3JlbmRlckxheWVySW1hZ2VDbGllbnQobnVsbHB0cikKK3sKKyAgICBtX2Nzc01hc2tJ
bWFnZVZhbHVlID0gV2ViS2l0Q1NTUmVzb3VyY2VWYWx1ZTo6Y3JlYXRlKENTU1ByaW1pdGl2ZVZh
bHVlOjpjcmVhdGVJZGVudGlmaWVyKENTU1ZhbHVlTm9uZSkpOworfQorCitNYXNrSW1hZ2VPcGVy
YXRpb246On5NYXNrSW1hZ2VPcGVyYXRpb24oKQoreworfQorCitib29sIE1hc2tJbWFnZU9wZXJh
dGlvbjo6aXNDU1NWYWx1ZU5vbmUoKSBjb25zdAoreworICAgIGlmIChpbWFnZSgpKQorICAgICAg
ICByZXR1cm4gZmFsc2U7CisKKyAgICBBU1NFUlQobV9jc3NNYXNrSW1hZ2VWYWx1ZS5nZXQoKSk7
CisgICAgcmV0dXJuIG1fY3NzTWFza0ltYWdlVmFsdWUtPmlzQ1NTVmFsdWVOb25lKCk7Cit9CisK
K1Bhc3NSZWZQdHI8Q1NTVmFsdWU+IE1hc2tJbWFnZU9wZXJhdGlvbjo6Y3NzVmFsdWUoKQorewor
ICAgIGlmIChpbWFnZSgpKQorICAgICAgICByZXR1cm4gaW1hZ2UoKS0+Y3NzVmFsdWUoKTsKKyAg
ICAKKyAgICBpZiAoaXNDU1NWYWx1ZU5vbmUoKSkKKyAgICAgICAgcmV0dXJuIG1fY3NzTWFza0lt
YWdlVmFsdWUtPmlubmVyVmFsdWUoKTsKKworICAgIEFTU0VSVChtX2Nzc01hc2tJbWFnZVZhbHVl
LmdldCgpKTsKKyAgICByZXR1cm4gbV9jc3NNYXNrSW1hZ2VWYWx1ZS5nZXQoKTsKK30KKworYm9v
bCBNYXNrSW1hZ2VPcGVyYXRpb246OmlzTWFza0xvYWRlZCgpIGNvbnN0Cit7CisgICAgaWYgKCFt
X2lzRXh0ZXJuYWxEb2N1bWVudCkKKyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICBpZiAoaW1h
Z2UoKSkKKyAgICAgICAgcmV0dXJuIChpbWFnZSgpLT5jYWNoZWRJbWFnZSgpICYmIGltYWdlKCkt
PmNhY2hlZEltYWdlKCktPmltYWdlKCkpOworICAgIAorICAgIGlmIChtX2NhY2hlZFNWR0RvY3Vt
ZW50UmVmZXJlbmNlLmdldCgpKSB7CisgICAgICAgIGlmIChDYWNoZWRTVkdEb2N1bWVudCogY2Fj
aGVkU1ZHRG9jdW1lbnQgPSBtX2NhY2hlZFNWR0RvY3VtZW50UmVmZXJlbmNlLT5kb2N1bWVudCgp
KQorICAgICAgICAgICAgcmV0dXJuIChjYWNoZWRTVkdEb2N1bWVudC0+ZG9jdW1lbnQoKSAhPSBu
dWxscHRyKTsKKyAgICB9CisgICAgCisgICAgcmV0dXJuIGZhbHNlOworfQorCit2b2lkIE1hc2tJ
bWFnZU9wZXJhdGlvbjo6c2V0UmVuZGVyTGF5ZXJJbWFnZUNsaWVudChDYWNoZWRJbWFnZUNsaWVu
dCogY2xpZW50KQoreworICAgIGlmIChtX3JlbmRlckxheWVySW1hZ2VDbGllbnQgPT0gY2xpZW50
KQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAoQ2FjaGVkSW1hZ2UqIGNhY2hlZEltYWdlID0g
KGltYWdlKCkgPyBpbWFnZSgpLT5jYWNoZWRJbWFnZSgpIDogbnVsbHB0cikpIHsKKyAgICAgICAg
aWYgKG1fcmVuZGVyTGF5ZXJJbWFnZUNsaWVudCkKKyAgICAgICAgICAgIGNhY2hlZEltYWdlLT5y
ZW1vdmVDbGllbnQobV9yZW5kZXJMYXllckltYWdlQ2xpZW50KTsKKyAgICAgICAgCisgICAgICAg
IGlmIChjbGllbnQpCisgICAgICAgICAgICBjYWNoZWRJbWFnZS0+YWRkQ2xpZW50KGNsaWVudCk7
CisgICAgfQorCisgICAgbV9yZW5kZXJMYXllckltYWdlQ2xpZW50ID0gY2xpZW50OworfQorCit2
b2lkIE1hc2tJbWFnZU9wZXJhdGlvbjo6YWRkUmVuZGVyZXJJbWFnZUNsaWVudChSZW5kZXJFbGVt
ZW50KiBjbGllbnQpCit7CisgICAgQVNTRVJUKGNsaWVudCk7CisKKyAgICBpZiAobV9zdHlsZUlt
YWdlLmdldCgpKQorICAgICAgICBtX3N0eWxlSW1hZ2UtPmFkZENsaWVudChjbGllbnQpOworICAg
IAorICAgIG1fcmVuZGVyZXJJbWFnZUNsaWVudHMuYWRkKGNsaWVudCk7Cit9CisKK3ZvaWQgTWFz
a0ltYWdlT3BlcmF0aW9uOjpyZW1vdmVSZW5kZXJlckltYWdlQ2xpZW50KFJlbmRlckVsZW1lbnQq
IGNsaWVudCkKK3sKKyAgICBBU1NFUlQoY2xpZW50ICYmIG1fcmVuZGVyZXJJbWFnZUNsaWVudHMu
Y29udGFpbnMoY2xpZW50KSk7CisgICAgCisgICAgaWYgKG1fc3R5bGVJbWFnZS5nZXQoKSkKKyAg
ICAgICAgbV9zdHlsZUltYWdlLT5yZW1vdmVDbGllbnQoY2xpZW50KTsKKyAgICAKKyAgICBtX3Jl
bmRlcmVySW1hZ2VDbGllbnRzLnJlbW92ZShjbGllbnQpOworfQorCitDYWNoZWRTVkdEb2N1bWVu
dFJlZmVyZW5jZSogTWFza0ltYWdlT3BlcmF0aW9uOjpnZXRPckNyZWF0ZUNhY2hlZFNWR0RvY3Vt
ZW50UmVmZXJlbmNlKCkKK3sKKyAgICAvLyBJZiB3ZSBlbmRlZCB1cCBsb2FkaW5nIHRoZSBkYXRh
IGludG8gYW4gSW1hZ2UsIHRoZW4gdGhlIFNWRyBkb2N1bWVudCB3YXMgbm90IHZhbGlkLgorICAg
IGlmIChpbWFnZSgpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIGlmICghbV9jYWNo
ZWRTVkdEb2N1bWVudFJlZmVyZW5jZS5nZXQoKSkKKyAgICAgICAgbV9jYWNoZWRTVkdEb2N1bWVu
dFJlZmVyZW5jZSA9IHN0ZDo6bWFrZV91bmlxdWU8Q2FjaGVkU1ZHRG9jdW1lbnRSZWZlcmVuY2U+
KG1fdXJsLCB0aGlzLCBmYWxzZSk7CisgICAgcmV0dXJuIG1fY2FjaGVkU1ZHRG9jdW1lbnRSZWZl
cmVuY2UuZ2V0KCk7Cit9CisKK3ZvaWQgTWFza0ltYWdlT3BlcmF0aW9uOjpub3RpZnlGaW5pc2hl
ZChDYWNoZWRSZXNvdXJjZSogcmVzb3VyY2UpCit7CisgICAgLy8gVGhlIG9ubHkgb25lIG5vdGlm
eWluZyB1cyBzaG91bGQgYmUgdGhlIFNWRyBkb2N1bWVudCB3ZSBob2xkLgorICAgIENhY2hlZFNW
R0RvY3VtZW50KiBjYWNoZWRTVkdEb2N1bWVudCA9IGdldE9yQ3JlYXRlQ2FjaGVkU1ZHRG9jdW1l
bnRSZWZlcmVuY2UoKS0+ZG9jdW1lbnQoKTsKKyAgICBpZiAoKENhY2hlZFJlc291cmNlKiljYWNo
ZWRTVkdEb2N1bWVudCAhPSByZXNvdXJjZSB8fCAhcmVzb3VyY2UpIHsKKyAgICAgICAgQVNTRVJU
X05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgCisgICAgLy8gQ2hl
Y2sgaWYgd2UgZmluZCBhIHZhbGlkIG1hc2tpbmcgZWxlbWVudCBpbiB0aGlzIFNWRyBkb2N1bWVu
dC4KKyAgICBTVkdEb2N1bWVudCogc3ZnRG9jdW1lbnQgPSBjYWNoZWRTVkdEb2N1bWVudC0+ZG9j
dW1lbnQoKTsKKyAgICBib29sIHZhbGlkTWFza0ZvdW5kID0gZmFsc2U7CisgICAgaWYgKHN2Z0Rv
Y3VtZW50ICYmIHN2Z0RvY3VtZW50LT5yb290RWxlbWVudCgpKSB7CisgICAgICAgIC8vIEFyZSB3
ZSBsb29raW5nIGZvciBhIHNwZWNpZmljIGVsZW1lbnQgaW4gdGhlIFNWRyBkb2N1bWVudD8KKyAg
ICAgICAgaWYgKGZyYWdtZW50KCkubGVuZ3RoKCkpIHsKKyAgICAgICAgICAgIGlmIChFbGVtZW50
KiBtYXNraW5nRWxlbWVudCA9IHN2Z0RvY3VtZW50LT5yb290RWxlbWVudCgpLT5nZXRFbGVtZW50
QnlJZChmcmFnbWVudCgpKSkgeworICAgICAgICAgICAgICAgIGlmIChpczxTVkdNYXNrRWxlbWVu
dD4obWFza2luZ0VsZW1lbnQpKQorICAgICAgICAgICAgICAgICAgICB2YWxpZE1hc2tGb3VuZCA9
IHRydWU7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisgICAgCisgICAgLy8gSWYg
bm8gdmFsaWQgbWFzayB3YXMgZm91bmQsIHRoaXMgaXMgbm90IGEgdmFsaWQgU1ZHIGRvY3VtZW50
IG9yIGl0IHNwZWNpZmllZCBhbiBpbnZhbGlkIGZyYWdtZW50IGlkZW50aWZpZXIuCisgICAgLy8g
RmFsbGJhY2sgdG8gdGhlIG5vcm1hbCB3YXkgb2YgbG9hZGluZyB0aGUgZG9jdW1lbnQgaW4gYW4g
SW1hZ2Ugb2JqZWN0LgorICAgIGlmICghdmFsaWRNYXNrRm91bmQpIHsKKyAgICAgICAgLy8gR2V0
IHRoZSByZXNvdXJjZSBsb2FkZXIsIGFjcXVpcmUgdGhlIHJlc291cmNlIGJ1ZmZlciBhbmQgbG9h
ZCBpdCBpbnRvIGFuIGltYWdlLgorICAgICAgICBBU1NFUlQoY2FjaGVkU1ZHRG9jdW1lbnQtPmxv
YWRlcigpKTsKKyAgICAgICAgaWYgKFN1YnJlc291cmNlTG9hZGVyKiBsb2FkZXIgPSBjYWNoZWRT
VkdEb2N1bWVudC0+bG9hZGVyKCkpIHsKKyAgICAgICAgICAgIGlmIChTaGFyZWRCdWZmZXIqIGRh
dGFCdWZmZXIgPSBsb2FkZXItPnJlc291cmNlRGF0YSgpKSB7CisgICAgICAgICAgICAgICAgbV9z
dHlsZUltYWdlID0gU3R5bGVDYWNoZWRJbWFnZTo6Y3JlYXRlKG5ldyBDYWNoZWRJbWFnZShjYWNo
ZWRTVkdEb2N1bWVudC0+cmVzb3VyY2VSZXF1ZXN0KCksIGNhY2hlZFNWR0RvY3VtZW50LT5zZXNz
aW9uSUQoKSkpOworICAgICAgICAgICAgICAgIGlmIChtX3JlbmRlckxheWVySW1hZ2VDbGllbnQp
CisgICAgICAgICAgICAgICAgICAgIG1fc3R5bGVJbWFnZS0+Y2FjaGVkSW1hZ2UoKS0+YWRkQ2xp
ZW50KG1fcmVuZGVyTGF5ZXJJbWFnZUNsaWVudCk7CisgICAgICAgICAgICAgICAgZm9yIChhdXRv
IGl0Q2xpZW50IDogbV9yZW5kZXJlckltYWdlQ2xpZW50cykKKyAgICAgICAgICAgICAgICAgICAg
bV9zdHlsZUltYWdlLT5hZGRDbGllbnQoaXRDbGllbnQua2V5KTsKKworICAgICAgICAgICAgICAg
IG1fc3R5bGVJbWFnZS0+Y2FjaGVkSW1hZ2UoKS0+c2V0UmVzcG9uc2UoY2FjaGVkU1ZHRG9jdW1l
bnQtPnJlc3BvbnNlKCkpOworICAgICAgICAgICAgICAgIG1fc3R5bGVJbWFnZS0+Y2FjaGVkSW1h
Z2UoKS0+ZmluaXNoTG9hZGluZyhkYXRhQnVmZmVyKTsKKworICAgICAgICAgICAgICAgIC8vIExl
dCB0aGUgY2FjaGVkIHJlc291cmNlIGxvYWRlciBvZiB0aGUgZG9jdW1lbnQgd2hpY2ggcmVxdWVz
dGVkIHRoaXMgbWFzayBrZWVwIGEgaGFuZGxlIHRvIHRoaXMKKyAgICAgICAgICAgICAgICAvLyBj
YWNoZWQgaW1hZ2UgdG8gZW5zdXJlIGl0IG9ubHkgZ2V0cyBkZWxldGVkIHdoZW4gaXQgc2hvdWxk
LgorICAgICAgICAgICAgICAgIGlmIChtX2NhY2hlZFJlc291cmNlTG9hZGVyLmdldCgpKQorICAg
ICAgICAgICAgICAgICAgICBtX2NhY2hlZFJlc291cmNlTG9hZGVyLT5hZGRDYWNoZWRSZXNvdXJj
ZShtX3N0eWxlSW1hZ2UtPmNhY2hlZEltYWdlKCkpOworICAgICAgICAgICAgfQorICAgICAgICAg
ICAgCisgICAgICAgICAgICAvLyBEZXN0cm95IHRoZSBjdXJyZW50IFNWRyBkb2N1bWVudCBhcyBp
dHMgbm8gbG9uZ2VyIG5lZWRlZAorICAgICAgICAgICAgbV9jYWNoZWRTVkdEb2N1bWVudFJlZmVy
ZW5jZSA9IG51bGxwdHI7CisgICAgICAgIH0KKyAgICB9Cit9CisKK2Jvb2wgTWFza0ltYWdlT3Bl
cmF0aW9uOjpkcmF3TWFzayhSZW5kZXJFbGVtZW50JiByZW5kZXJlciwgQmFja2dyb3VuZEltYWdl
R2VvbWV0cnkmIGdlb21ldHJ5LCBHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIENvbXBvc2l0ZU9w
ZXJhdG9yIGNvbXBvc2l0ZU9wKQoreworICAgIC8vIFRoaXMgbWV0aG9kIG9ubHkgaGFuZGxlcyBj
dXN0b20gbWFza3MuCisgICAgaWYgKGltYWdlKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKwor
ICAgIGlmIChSZW5kZXJTVkdSZXNvdXJjZU1hc2tlciogc3ZnTWFza2VyID0gZ2V0U1ZHTWFza2Vy
KHJlbmRlcmVyKSkgeworICAgICAgICBzdmdNYXNrZXItPmRyYXdNYXNrRm9yUmVuZGVyZXIocmVu
ZGVyZXIsIGdlb21ldHJ5LCBjb250ZXh0LCBjb21wb3NpdGVPcCk7CisgICAgICAgIHJldHVybiB0
cnVlOworICAgIH0KKworICAgIHJldHVybiBmYWxzZTsKK30KKworUmVuZGVyU1ZHUmVzb3VyY2VN
YXNrZXIqIE1hc2tJbWFnZU9wZXJhdGlvbjo6Z2V0U1ZHTWFza2VyKFJlbmRlckVsZW1lbnQmIHJl
bmRlcmVyKQoreworICAgIGlmIChpbWFnZSgpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKwor
ICAgIC8vIElkZW50aWZ5IHRoZSBlbGVtZW50IHJlZmVyZW5jZWQgYnkgdGhlIGZyYWdtZW50SWQu
CisgICAgQ2FjaGVkU1ZHRG9jdW1lbnRSZWZlcmVuY2UqIHN2Z0RvY3VtZW50UmVmZXJlbmNlID0g
Y2FjaGVkU1ZHRG9jdW1lbnRSZWZlcmVuY2UoKTsKKyAgICBFbGVtZW50KiBlbGVtZW50Rm9yTWFz
a2luZyA9IG51bGxwdHI7CisgICAgUmVuZGVyT2JqZWN0KiBzdmdSZXNvdXJjZUZvck1hc2tpbmcg
PSBudWxscHRyOworICAgIGlmIChzdmdEb2N1bWVudFJlZmVyZW5jZSAmJiBzdmdEb2N1bWVudFJl
ZmVyZW5jZS0+ZG9jdW1lbnQoKSkgeworICAgICAgICBTVkdEb2N1bWVudCogc3ZnRG9jdW1lbnQg
PSBzdmdEb2N1bWVudFJlZmVyZW5jZS0+ZG9jdW1lbnQoKS0+ZG9jdW1lbnQoKTsKKyAgICAgICAg
aWYgKHN2Z0RvY3VtZW50ICYmIHN2Z0RvY3VtZW50LT5yb290RWxlbWVudCgpKQorICAgICAgICAg
ICAgZWxlbWVudEZvck1hc2tpbmcgPSBzdmdEb2N1bWVudC0+cm9vdEVsZW1lbnQoKS0+Z2V0RWxl
bWVudEJ5SWQoZnJhZ21lbnQoKSk7CisgICAgfSBlbHNlCisgICAgICAgIGVsZW1lbnRGb3JNYXNr
aW5nID0gcmVuZGVyZXIuZG9jdW1lbnQoKS5nZXRFbGVtZW50QnlJZChmcmFnbWVudCgpKTsKKwor
ICAgIGlmIChlbGVtZW50Rm9yTWFza2luZykKKyAgICAgICAgc3ZnUmVzb3VyY2VGb3JNYXNraW5n
ID0gZWxlbWVudEZvck1hc2tpbmctPnJlbmRlcmVyKCk7CisKKyAgICAvLyBDaGVjayBpZiBpdCdz
IHRoZSBjb3JyZWN0IHR5cGUKKyAgICBpZiAoc3ZnUmVzb3VyY2VGb3JNYXNraW5nICYmIHN2Z1Jl
c291cmNlRm9yTWFza2luZy0+aXNTVkdSZXNvdXJjZUNvbnRhaW5lcigpICYmIGRvd25jYXN0PFJl
bmRlclNWR1Jlc291cmNlQ29udGFpbmVyPihzdmdSZXNvdXJjZUZvck1hc2tpbmcpLT5yZXNvdXJj
ZVR5cGUoKSA9PSBNYXNrZXJSZXNvdXJjZVR5cGUpCisgICAgICAgIHJldHVybiBzdGF0aWNfY2Fz
dDxSZW5kZXJTVkdSZXNvdXJjZU1hc2tlcio+KHN2Z1Jlc291cmNlRm9yTWFza2luZyk7CisKKyAg
ICByZXR1cm4gbnVsbHB0cjsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWFza0ltYWdlT3BlcmF0aW9uLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NYXNrSW1hZ2VPcGVyYXRpb24uaApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hNzM5YzI2Ci0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWFza0ltYWdlT3BlcmF0aW9u
LmgKQEAgLTAsMCArMSw5NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNCBBZG9iZSBTeXN0
ZW1zIEluY29ycG9yYXRlZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSICJBUyBJUyIg
QU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBIT0xERVIgQkUKKyAqIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwKKyAqIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IKKyAqIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRgorICog
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GCisgKiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIE1hc2tJbWFnZU9wZXJhdGlv
bl9oCisjZGVmaW5lIE1hc2tJbWFnZU9wZXJhdGlvbl9oCisKKyNpbmNsdWRlICJDYWNoZWRSZXNv
dXJjZUxvYWRlci5oIgorI2luY2x1ZGUgIkNhY2hlZFNWR0RvY3VtZW50Q2xpZW50LmgiCisjaW5j
bHVkZSAiQ2FjaGVkU1ZHRG9jdW1lbnRSZWZlcmVuY2UuaCIKKyNpbmNsdWRlICJDb2xvci5oIgor
I2luY2x1ZGUgIkltYWdlLmgiCisjaW5jbHVkZSAiTGF5b3V0U2l6ZS5oIgorI2luY2x1ZGUgIkxl
bmd0aC5oIgorI2luY2x1ZGUgIlN0eWxlSW1hZ2UuaCIKKyNpbmNsdWRlIDx3dGYvSGFzaENvdW50
ZWRTZXQuaD4KKyNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CisjaW5jbHVkZSA8d3RmL1Bhc3NPd25Q
dHIuaD4KKyNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dU
RlN0cmluZy5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisgICAgCitjbGFzcyBCYWNrZ3JvdW5k
SW1hZ2VHZW9tZXRyeTsKK2NsYXNzIENhY2hlZEltYWdlQ2xpZW50OworY2xhc3MgUmVuZGVyU1ZH
UmVzb3VyY2VNYXNrZXI7CitjbGFzcyBXZWJLaXRDU1NSZXNvdXJjZVZhbHVlOworCitjbGFzcyBN
YXNrSW1hZ2VPcGVyYXRpb24gZmluYWwgOiBwdWJsaWMgUmVmQ291bnRlZDxNYXNrSW1hZ2VPcGVy
YXRpb24+LCBwdWJsaWMgQ2FjaGVkU1ZHRG9jdW1lbnRDbGllbnQgeworcHVibGljOgorICAgIHN0
YXRpYyBQYXNzUmVmUHRyPE1hc2tJbWFnZU9wZXJhdGlvbj4gY3JlYXRlKFBhc3NSZWZQdHI8V2Vi
S2l0Q1NTUmVzb3VyY2VWYWx1ZT4gY3NzVmFsdWUsIGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBT
dHJpbmcmIGZyYWdtZW50LCBib29sIGlzRXh0ZXJuYWxEb2N1bWVudCwgUGFzc1JlZlB0cjxDYWNo
ZWRSZXNvdXJjZUxvYWRlcj4pOworICAgIHN0YXRpYyBQYXNzUmVmUHRyPE1hc2tJbWFnZU9wZXJh
dGlvbj4gY3JlYXRlKFBhc3NSZWZQdHI8U3R5bGVJbWFnZT4gZ2VuZXJhdGVkSW1hZ2UpOworICAg
IHN0YXRpYyBQYXNzUmVmUHRyPE1hc2tJbWFnZU9wZXJhdGlvbj4gY3JlYXRlKCk7CisKKyAgICBQ
YXNzUmVmUHRyPENTU1ZhbHVlPiBjc3NWYWx1ZSgpOworCisgICAgdmlydHVhbCB+TWFza0ltYWdl
T3BlcmF0aW9uKCk7CisKKyAgICBjb25zdCBTdHJpbmcmIHVybCgpIGNvbnN0IHsgcmV0dXJuIG1f
dXJsOyB9CisgICAgY29uc3QgU3RyaW5nJiBmcmFnbWVudCgpIGNvbnN0IHsgcmV0dXJuIG1fZnJh
Z21lbnQ7IH0KKyAgICBTdHlsZUltYWdlKiBpbWFnZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3R5bGVJ
bWFnZS5nZXQoKTsgfQorICAgIHZvaWQgc2V0SW1hZ2UoUGFzc1JlZlB0cjxTdHlsZUltYWdlPiBp
bWFnZSkgeyBtX3N0eWxlSW1hZ2UgPSBpbWFnZTsgfQorICAgIHZvaWQgc2V0UmVuZGVyTGF5ZXJJ
bWFnZUNsaWVudChDYWNoZWRJbWFnZUNsaWVudCopOworICAgIHZvaWQgYWRkUmVuZGVyZXJJbWFn
ZUNsaWVudChSZW5kZXJFbGVtZW50Kik7CisgICAgdm9pZCByZW1vdmVSZW5kZXJlckltYWdlQ2xp
ZW50KFJlbmRlckVsZW1lbnQqKTsKKyAgICBib29sIGlzTWFza0xvYWRlZCgpIGNvbnN0OworICAg
IGJvb2wgZHJhd01hc2soUmVuZGVyRWxlbWVudCYgcmVuZGVyZXIsIEJhY2tncm91bmRJbWFnZUdl
b21ldHJ5JiwgR3JhcGhpY3NDb250ZXh0KiwgQ29tcG9zaXRlT3BlcmF0b3IpOworICAgIGJvb2wg
aXNDU1NWYWx1ZU5vbmUoKSBjb25zdDsKKworICAgIENhY2hlZFNWR0RvY3VtZW50UmVmZXJlbmNl
KiBjYWNoZWRTVkdEb2N1bWVudFJlZmVyZW5jZSgpIGNvbnN0IHsgcmV0dXJuIG1fY2FjaGVkU1ZH
RG9jdW1lbnRSZWZlcmVuY2UuZ2V0KCk7IH0KKyAgICBDYWNoZWRTVkdEb2N1bWVudFJlZmVyZW5j
ZSogZ2V0T3JDcmVhdGVDYWNoZWRTVkdEb2N1bWVudFJlZmVyZW5jZSgpOworICAgIAorICAgIHZp
cnR1YWwgdm9pZCBub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSopOworCitwcml2YXRlOgor
ICAgIE1hc2tJbWFnZU9wZXJhdGlvbihQYXNzUmVmUHRyPFdlYktpdENTU1Jlc291cmNlVmFsdWU+
IGNzc1ZhbHVlLCBjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgU3RyaW5nJiBmcmFnbWVudCwgYm9v
bCBpc0V4dGVybmFsRG9jdW1lbnQsIFBhc3NSZWZQdHI8Q2FjaGVkUmVzb3VyY2VMb2FkZXI+KTsK
KyAgICBNYXNrSW1hZ2VPcGVyYXRpb24oUGFzc1JlZlB0cjxTdHlsZUltYWdlPiBnZW5lcmF0ZWRJ
bWFnZSk7CisgICAgTWFza0ltYWdlT3BlcmF0aW9uKCk7CisKKyAgICBSZW5kZXJTVkdSZXNvdXJj
ZU1hc2tlciogZ2V0U1ZHTWFza2VyKFJlbmRlckVsZW1lbnQmIHJlbmRlcmVyKTsKKworICAgIFN0
cmluZyBtX3VybDsKKyAgICBTdHJpbmcgbV9mcmFnbWVudDsKKyAgICBib29sIG1faXNFeHRlcm5h
bERvY3VtZW50OworICAgIHN0ZDo6dW5pcXVlX3B0cjxDYWNoZWRTVkdEb2N1bWVudFJlZmVyZW5j
ZT4gbV9jYWNoZWRTVkdEb2N1bWVudFJlZmVyZW5jZTsKKyAgICBSZWZQdHI8U3R5bGVJbWFnZT4g
bV9zdHlsZUltYWdlOworICAgIENhY2hlZEltYWdlQ2xpZW50KiBtX3JlbmRlckxheWVySW1hZ2VD
bGllbnQ7CisgICAgSGFzaENvdW50ZWRTZXQ8UmVuZGVyRWxlbWVudCo+IG1fcmVuZGVyZXJJbWFn
ZUNsaWVudHM7CisgICAgUmVmUHRyPFdlYktpdENTU1Jlc291cmNlVmFsdWU+IG1fY3NzTWFza0lt
YWdlVmFsdWU7CisgICAgUmVmUHRyPENhY2hlZFJlc291cmNlTG9hZGVyPiBtX2NhY2hlZFJlc291
cmNlTG9hZGVyOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gTWFz
a0ltYWdlT3BlcmF0aW9uX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJCb3hNb2RlbE9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
Qm94TW9kZWxPYmplY3QuY3BwCmluZGV4IDdiNWE1MjguLjkxMmE1ZjUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmNwcApAQCAtMTAxNywz
MSArMTAxNywzMSBAQCBMYXlvdXRTaXplIFJlbmRlckJveE1vZGVsT2JqZWN0OjpjYWxjdWxhdGVG
aWxsVGlsZVNpemUoY29uc3QgRmlsbExheWVyKiBmaWxsTGF5ZQogICAgIHJldHVybiBMYXlvdXRT
aXplKCk7CiB9CiAKLXZvaWQgUmVuZGVyQm94TW9kZWxPYmplY3Q6OkJhY2tncm91bmRJbWFnZUdl
b21ldHJ5OjpzZXROb1JlcGVhdFgoTGF5b3V0VW5pdCB4T2Zmc2V0KQordm9pZCBCYWNrZ3JvdW5k
SW1hZ2VHZW9tZXRyeTo6c2V0Tm9SZXBlYXRYKExheW91dFVuaXQgeE9mZnNldCkKIHsKICAgICBt
X2Rlc3RSZWN0Lm1vdmUoc3RkOjptYXg8TGF5b3V0VW5pdD4oeE9mZnNldCwgMCksIDApOwogICAg
IG1fcGhhc2Uuc2V0WCgtc3RkOjptaW48TGF5b3V0VW5pdD4oeE9mZnNldCwgMCkpOwogICAgIG1f
ZGVzdFJlY3Quc2V0V2lkdGgobV90aWxlU2l6ZS53aWR0aCgpICsgc3RkOjptaW48ZmxvYXQ+KHhP
ZmZzZXQsIDApKTsKIH0KLXZvaWQgUmVuZGVyQm94TW9kZWxPYmplY3Q6OkJhY2tncm91bmRJbWFn
ZUdlb21ldHJ5OjpzZXROb1JlcGVhdFkoTGF5b3V0VW5pdCB5T2Zmc2V0KQordm9pZCBCYWNrZ3Jv
dW5kSW1hZ2VHZW9tZXRyeTo6c2V0Tm9SZXBlYXRZKExheW91dFVuaXQgeU9mZnNldCkKIHsKICAg
ICBtX2Rlc3RSZWN0Lm1vdmUoMCwgc3RkOjptYXg8TGF5b3V0VW5pdD4oeU9mZnNldCwgMCkpOwog
ICAgIG1fcGhhc2Uuc2V0WSgtc3RkOjptaW48TGF5b3V0VW5pdD4oeU9mZnNldCwgMCkpOwogICAg
IG1fZGVzdFJlY3Quc2V0SGVpZ2h0KG1fdGlsZVNpemUuaGVpZ2h0KCkgKyBzdGQ6Om1pbjxmbG9h
dD4oeU9mZnNldCwgMCkpOwogfQogCi12b2lkIFJlbmRlckJveE1vZGVsT2JqZWN0OjpCYWNrZ3Jv
dW5kSW1hZ2VHZW9tZXRyeTo6dXNlRml4ZWRBdHRhY2htZW50KGNvbnN0IExheW91dFBvaW50JiBh
dHRhY2htZW50UG9pbnQpCit2b2lkIEJhY2tncm91bmRJbWFnZUdlb21ldHJ5Ojp1c2VGaXhlZEF0
dGFjaG1lbnQoY29uc3QgTGF5b3V0UG9pbnQmIGF0dGFjaG1lbnRQb2ludCkKIHsKICAgICBGbG9h
dFBvaW50IGFsaWduZWRQb2ludCA9IGF0dGFjaG1lbnRQb2ludDsKICAgICBtX3BoYXNlLm1vdmUo
c3RkOjptYXg8TGF5b3V0VW5pdD4oYWxpZ25lZFBvaW50LngoKSAtIG1fZGVzdFJlY3QueCgpLCAw
KSwgc3RkOjptYXg8TGF5b3V0VW5pdD4oYWxpZ25lZFBvaW50LnkoKSAtIG1fZGVzdFJlY3QueSgp
LCAwKSk7CiB9CiAKLXZvaWQgUmVuZGVyQm94TW9kZWxPYmplY3Q6OkJhY2tncm91bmRJbWFnZUdl
b21ldHJ5OjpjbGlwKGNvbnN0IExheW91dFJlY3QmIGNsaXBSZWN0KQordm9pZCBCYWNrZ3JvdW5k
SW1hZ2VHZW9tZXRyeTo6Y2xpcChjb25zdCBMYXlvdXRSZWN0JiBjbGlwUmVjdCkKIHsKICAgICBt
X2Rlc3RSZWN0LmludGVyc2VjdChjbGlwUmVjdCk7CiB9CiAKLUxheW91dFBvaW50IFJlbmRlckJv
eE1vZGVsT2JqZWN0OjpCYWNrZ3JvdW5kSW1hZ2VHZW9tZXRyeTo6cmVsYXRpdmVQaGFzZSgpIGNv
bnN0CitMYXlvdXRQb2ludCBCYWNrZ3JvdW5kSW1hZ2VHZW9tZXRyeTo6cmVsYXRpdmVQaGFzZSgp
IGNvbnN0CiB7CiAgICAgTGF5b3V0UG9pbnQgcGhhc2UgPSBtX3BoYXNlOwogICAgIHBoYXNlICs9
IG1fZGVzdFJlY3QubG9jYXRpb24oKSAtIG1fZGVzdE9yaWdpbjsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5oIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmgKaW5kZXggMTk1NThjNi4uMDcwMmQ0
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2Jq
ZWN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0
LmgKQEAgLTY1LDYgKzY1LDUyIEBAIGNsYXNzIFJlbmRlck5hbWVkRmxvd0ZyYWdtZW50OwogY2xh
c3MgUmVuZGVyVGV4dEZyYWdtZW50OwogY2xhc3MgU3RpY2t5UG9zaXRpb25WaWV3cG9ydENvbnN0
cmFpbnRzOwogCitjbGFzcyBCYWNrZ3JvdW5kSW1hZ2VHZW9tZXRyeSB7CitwdWJsaWM6CisgICAg
QmFja2dyb3VuZEltYWdlR2VvbWV0cnkoKQorICAgICAgICA6IG1faGFzTm9uTG9jYWxHZW9tZXRy
eShmYWxzZSkKKyAgICB7IH0KKworICAgIExheW91dFBvaW50IGRlc3RPcmlnaW4oKSBjb25zdCB7
IHJldHVybiBtX2Rlc3RPcmlnaW47IH0KKyAgICB2b2lkIHNldERlc3RPcmlnaW4oY29uc3QgTGF5
b3V0UG9pbnQmIGRlc3RPcmlnaW4pIHsgbV9kZXN0T3JpZ2luID0gZGVzdE9yaWdpbjsgfQorICAg
IAorICAgIExheW91dFJlY3QgZGVzdFJlY3QoKSBjb25zdCB7IHJldHVybiBtX2Rlc3RSZWN0OyB9
CisgICAgdm9pZCBzZXREZXN0UmVjdChjb25zdCBMYXlvdXRSZWN0JiBkZXN0UmVjdCkgeyBtX2Rl
c3RSZWN0ID0gZGVzdFJlY3Q7IH0KKyAgICAKKyAgICAvLyBSZXR1cm5zIHRoZSBwaGFzZSByZWxh
dGl2ZSB0byB0aGUgZGVzdGluYXRpb24gcmVjdGFuZ2xlLgorICAgIExheW91dFBvaW50IHJlbGF0
aXZlUGhhc2UoKSBjb25zdDsKKyAgICAKKyAgICBMYXlvdXRQb2ludCBwaGFzZSgpIGNvbnN0IHsg
cmV0dXJuIG1fcGhhc2U7IH0KKyAgICB2b2lkIHNldFBoYXNlKGNvbnN0IExheW91dFBvaW50JiBw
aGFzZSkgeyBtX3BoYXNlID0gcGhhc2U7IH0KKyAgICAKKyAgICBMYXlvdXRTaXplIHRpbGVTaXpl
KCkgY29uc3QgeyByZXR1cm4gbV90aWxlU2l6ZTsgfQorICAgIHZvaWQgc2V0VGlsZVNpemUoY29u
c3QgTGF5b3V0U2l6ZSYgdGlsZVNpemUpIHsgbV90aWxlU2l6ZSA9IHRpbGVTaXplOyB9CisgICAg
CisgICAgTGF5b3V0U2l6ZSBzcGFjZVNpemUoKSBjb25zdCB7IHJldHVybiBtX3NwYWNlOyB9Cisg
ICAgdm9pZCBzZXRTcGFjZVNpemUoY29uc3QgTGF5b3V0U2l6ZSYgc3BhY2UpIHsgbV9zcGFjZSA9
IHNwYWNlOyB9CisgICAgCisgICAgdm9pZCBzZXRQaGFzZVgoTGF5b3V0VW5pdCAgeCkgeyBtX3Bo
YXNlLnNldFgoeCk7IH0KKyAgICB2b2lkIHNldFBoYXNlWShMYXlvdXRVbml0IHkpIHsgbV9waGFz
ZS5zZXRZKHkpOyB9CisgICAgCisgICAgdm9pZCBzZXROb1JlcGVhdFgoTGF5b3V0VW5pdCB4T2Zm
c2V0KTsKKyAgICB2b2lkIHNldE5vUmVwZWF0WShMYXlvdXRVbml0IHlPZmZzZXQpOworICAgIAor
ICAgIHZvaWQgdXNlRml4ZWRBdHRhY2htZW50KGNvbnN0IExheW91dFBvaW50JiBhdHRhY2htZW50
UG9pbnQpOworICAgIAorICAgIHZvaWQgY2xpcChjb25zdCBMYXlvdXRSZWN0Jik7CisgICAgCisg
ICAgdm9pZCBzZXRIYXNOb25Mb2NhbEdlb21ldHJ5KGJvb2wgaGFzTm9uTG9jYWxHZW9tZXRyeSA9
IHRydWUpIHsgbV9oYXNOb25Mb2NhbEdlb21ldHJ5ID0gaGFzTm9uTG9jYWxHZW9tZXRyeTsgfQor
ICAgIGJvb2wgaGFzTm9uTG9jYWxHZW9tZXRyeSgpIGNvbnN0IHsgcmV0dXJuIG1faGFzTm9uTG9j
YWxHZW9tZXRyeTsgfQorICAgIAorcHJpdmF0ZToKKyAgICBMYXlvdXRSZWN0IG1fZGVzdFJlY3Q7
CisgICAgTGF5b3V0UG9pbnQgbV9kZXN0T3JpZ2luOworICAgIExheW91dFBvaW50IG1fcGhhc2U7
CisgICAgTGF5b3V0U2l6ZSBtX3RpbGVTaXplOworICAgIExheW91dFNpemUgbV9zcGFjZTsKKyAg
ICBib29sIG1faGFzTm9uTG9jYWxHZW9tZXRyeTsgLy8gSGFzIGJhY2tncm91bmQtYXR0YWNobWVu
dDogZml4ZWQuIEltcGxpZXMgdGhhdCB3ZSBjYW4ndCBhbHdheXMgY2hlYXBseSBjb21wdXRlIGRl
c3RSZWN0LgorfTsKKwogLy8gVGhpcyBjbGFzcyBpcyB0aGUgYmFzZSBmb3IgYWxsIG9iamVjdHMg
dGhhdCBhZGhlcmUgdG8gdGhlIENTUyBib3ggbW9kZWwgYXMgZGVzY3JpYmVkCiAvLyBhdCBodHRw
Oi8vd3d3LnczLm9yZy9UUi9DU1MyMS9ib3guaHRtbAogCkBAIC0yMTAsNTEgKzI1Niw2IEBAIHBy
b3RlY3RlZDoKIAogICAgIHZpcnR1YWwgdm9pZCB3aWxsQmVEZXN0cm95ZWQoKSBvdmVycmlkZTsK
IAotICAgIGNsYXNzIEJhY2tncm91bmRJbWFnZUdlb21ldHJ5IHsKLSAgICBwdWJsaWM6Ci0gICAg
ICAgIEJhY2tncm91bmRJbWFnZUdlb21ldHJ5KCkKLSAgICAgICAgICAgIDogbV9oYXNOb25Mb2Nh
bEdlb21ldHJ5KGZhbHNlKQotICAgICAgICB7IH0KLSAgICAgICAgTGF5b3V0UG9pbnQgZGVzdE9y
aWdpbigpIGNvbnN0IHsgcmV0dXJuIG1fZGVzdE9yaWdpbjsgfQotICAgICAgICB2b2lkIHNldERl
c3RPcmlnaW4oY29uc3QgTGF5b3V0UG9pbnQmIGRlc3RPcmlnaW4pIHsgbV9kZXN0T3JpZ2luID0g
ZGVzdE9yaWdpbjsgfQotICAgICAgICAKLSAgICAgICAgTGF5b3V0UmVjdCBkZXN0UmVjdCgpIGNv
bnN0IHsgcmV0dXJuIG1fZGVzdFJlY3Q7IH0KLSAgICAgICAgdm9pZCBzZXREZXN0UmVjdChjb25z
dCBMYXlvdXRSZWN0JiBkZXN0UmVjdCkgeyBtX2Rlc3RSZWN0ID0gZGVzdFJlY3Q7IH0KLQotICAg
ICAgICAvLyBSZXR1cm5zIHRoZSBwaGFzZSByZWxhdGl2ZSB0byB0aGUgZGVzdGluYXRpb24gcmVj
dGFuZ2xlLgotICAgICAgICBMYXlvdXRQb2ludCByZWxhdGl2ZVBoYXNlKCkgY29uc3Q7Ci0gICAg
ICAgIAotICAgICAgICBMYXlvdXRQb2ludCBwaGFzZSgpIGNvbnN0IHsgcmV0dXJuIG1fcGhhc2U7
IH0KLSAgICAgICAgdm9pZCBzZXRQaGFzZShjb25zdCBMYXlvdXRQb2ludCYgcGhhc2UpIHsgbV9w
aGFzZSA9IHBoYXNlOyB9Ci0KLSAgICAgICAgTGF5b3V0U2l6ZSB0aWxlU2l6ZSgpIGNvbnN0IHsg
cmV0dXJuIG1fdGlsZVNpemU7IH0KLSAgICAgICAgdm9pZCBzZXRUaWxlU2l6ZShjb25zdCBMYXlv
dXRTaXplJiB0aWxlU2l6ZSkgeyBtX3RpbGVTaXplID0gdGlsZVNpemU7IH0KLQotICAgICAgICBM
YXlvdXRTaXplIHNwYWNlU2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3BhY2U7IH0KLSAgICAgICAg
dm9pZCBzZXRTcGFjZVNpemUoY29uc3QgTGF5b3V0U2l6ZSYgc3BhY2UpIHsgbV9zcGFjZSA9IHNw
YWNlOyB9Ci0KLSAgICAgICAgdm9pZCBzZXRQaGFzZVgoTGF5b3V0VW5pdCAgeCkgeyBtX3BoYXNl
LnNldFgoeCk7IH0KLSAgICAgICAgdm9pZCBzZXRQaGFzZVkoTGF5b3V0VW5pdCB5KSB7IG1fcGhh
c2Uuc2V0WSh5KTsgfQotICAgICAgICAKLSAgICAgICAgdm9pZCBzZXROb1JlcGVhdFgoTGF5b3V0
VW5pdCB4T2Zmc2V0KTsKLSAgICAgICAgdm9pZCBzZXROb1JlcGVhdFkoTGF5b3V0VW5pdCB5T2Zm
c2V0KTsKLSAgICAgICAgCi0gICAgICAgIHZvaWQgdXNlRml4ZWRBdHRhY2htZW50KGNvbnN0IExh
eW91dFBvaW50JiBhdHRhY2htZW50UG9pbnQpOwotICAgICAgICAKLSAgICAgICAgdm9pZCBjbGlw
KGNvbnN0IExheW91dFJlY3QmKTsKLSAgICAgICAgCi0gICAgICAgIHZvaWQgc2V0SGFzTm9uTG9j
YWxHZW9tZXRyeShib29sIGhhc05vbkxvY2FsR2VvbWV0cnkgPSB0cnVlKSB7IG1faGFzTm9uTG9j
YWxHZW9tZXRyeSA9IGhhc05vbkxvY2FsR2VvbWV0cnk7IH0KLSAgICAgICAgYm9vbCBoYXNOb25M
b2NhbEdlb21ldHJ5KCkgY29uc3QgeyByZXR1cm4gbV9oYXNOb25Mb2NhbEdlb21ldHJ5OyB9Ci0K
LSAgICBwcml2YXRlOgotICAgICAgICBMYXlvdXRSZWN0IG1fZGVzdFJlY3Q7Ci0gICAgICAgIExh
eW91dFBvaW50IG1fZGVzdE9yaWdpbjsKLSAgICAgICAgTGF5b3V0UG9pbnQgbV9waGFzZTsKLSAg
ICAgICAgTGF5b3V0U2l6ZSBtX3RpbGVTaXplOwotICAgICAgICBMYXlvdXRTaXplIG1fc3BhY2U7
Ci0gICAgICAgIGJvb2wgbV9oYXNOb25Mb2NhbEdlb21ldHJ5OyAvLyBIYXMgYmFja2dyb3VuZC1h
dHRhY2htZW50OiBmaXhlZC4gSW1wbGllcyB0aGF0IHdlIGNhbid0IGFsd2F5cyBjaGVhcGx5IGNv
bXB1dGUgZGVzdFJlY3QuCi0gICAgfTsKLQogICAgIExheW91dFBvaW50IGFkanVzdGVkUG9zaXRp
b25SZWxhdGl2ZVRvT2Zmc2V0UGFyZW50KGNvbnN0IExheW91dFBvaW50JikgY29uc3Q7CiAKICAg
ICBib29sIGhhc0JveERlY29yYXRpb25TdHlsZSgpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJMYXllci5jcHAKaW5kZXggOTJhYTJhZi4uZDlkNWQyNyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCkBAIC04OCw2ICs4OCw3IEBACiAjaW5jbHVk
ZSAiUmVuZGVyTGF5ZXJCYWNraW5nLmgiCiAjaW5jbHVkZSAiUmVuZGVyTGF5ZXJDb21wb3NpdG9y
LmgiCiAjaW5jbHVkZSAiUmVuZGVyTGF5ZXJGaWx0ZXJJbmZvLmgiCisjaW5jbHVkZSAiUmVuZGVy
TGF5ZXJNYXNrSW1hZ2VJbmZvLmgiCiAjaW5jbHVkZSAiUmVuZGVyTWFycXVlZS5oIgogI2luY2x1
ZGUgIlJlbmRlck11bHRpQ29sdW1uRmxvd1RocmVhZC5oIgogI2luY2x1ZGUgIlJlbmRlck5hbWVk
Rmxvd0ZyYWdtZW50LmgiCkBAIC0xODksNiArMTkwLDcgQEAgUmVuZGVyTGF5ZXI6OlJlbmRlckxh
eWVyKFJlbmRlckxheWVyTW9kZWxPYmplY3QmIHJlbmRlcmVyTGF5ZXJNb2RlbE9iamVjdCkKICAg
ICAsIG1fbGF5ZXJMaXN0TXV0YXRpb25BbGxvd2VkKHRydWUpCiAjZW5kaWYKICAgICAsIG1faGFz
RmlsdGVySW5mbyhmYWxzZSkKKyAgICAsIG1faGFzTWFza0ltYWdlSW5mbyhmYWxzZSkKICNpZiBF
TkFCTEUoQ1NTX0NPTVBPU0lUSU5HKQogICAgICwgbV9ibGVuZE1vZGUoQmxlbmRNb2RlTm9ybWFs
KQogICAgICwgbV9oYXNOb3RJc29sYXRlZENvbXBvc2l0ZWRCbGVuZGluZ0Rlc2NlbmRhbnRzKGZh
bHNlKQpAQCAtMjU1LDYgKzI1Nyw3IEBAIFJlbmRlckxheWVyOjp+UmVuZGVyTGF5ZXIoKQogICAg
ICAgICByZW1vdmVSZWZsZWN0aW9uKCk7CiAKICAgICBGaWx0ZXJJbmZvOjpyZW1vdmUoKnRoaXMp
OworICAgIE1hc2tJbWFnZUluZm86OnJlbW92ZSgqdGhpcyk7CiAKICAgICAvLyBDaGlsZCBsYXll
cnMgd2lsbCBiZSBkZWxldGVkIGJ5IHRoZWlyIGNvcnJlc3BvbmRpbmcgcmVuZGVyIG9iamVjdHMs
IHNvCiAgICAgLy8gd2UgZG9uJ3QgbmVlZCB0byBkZWxldGUgdGhlbSBvdXJzZWx2ZXMuCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuaCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5oCmluZGV4IDQxMDkzODcuLjczMTM2NzIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5oCkBAIC0xMjY2LDYgKzEyNjYsNyBA
QCBwcml2YXRlOgogI2VuZGlmCiAKICAgICBib29sIG1faGFzRmlsdGVySW5mbyA6IDE7CisgICAg
dW5zaWduZWQgbV9oYXNNYXNrSW1hZ2VJbmZvIDogMTsKIAogI2lmIEVOQUJMRShDU1NfQ09NUE9T
SVRJTkcpCiAgICAgdW5zaWduZWQgbV9ibGVuZE1vZGUgOiA1OwpAQCAtMTM0Miw2ICsxMzQzLDcg
QEAgcHJpdmF0ZToKICAgICBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyTGF5ZXJCYWNraW5nPiBtX2Jh
Y2tpbmc7CiAKICAgICBjbGFzcyBGaWx0ZXJJbmZvOworICAgIGNsYXNzIE1hc2tJbWFnZUluZm87
CiB9OwogCiBpbmxpbmUgdm9pZCBSZW5kZXJMYXllcjo6Y2xlYXJaT3JkZXJMaXN0cygpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJNYXNrSW1hZ2VJbmZv
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllck1hc2tJbWFnZUluZm8u
Y3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdmNjY5YjAKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJNYXNrSW1hZ2VJ
bmZvLmNwcApAQCAtMCwwICsxLDE0MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNCBBZG9i
ZSBTeXN0ZW1zIEluY29ycG9yYXRlZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSICJB
UyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBIT0xERVIgQkUKKyAq
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwKKyAqIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IKKyAqIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RgorICogVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GCisgKiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgi
CisjaW5jbHVkZSAiUmVuZGVyTGF5ZXJNYXNrSW1hZ2VJbmZvLmgiCisKKyNpbmNsdWRlICJDYWNo
ZWRTVkdEb2N1bWVudC5oIgorI2luY2x1ZGUgIkNhY2hlZFNWR0RvY3VtZW50UmVmZXJlbmNlLmgi
CisjaW5jbHVkZSAiUmVuZGVyU1ZHUmVzb3VyY2VDb250YWluZXIuaCIKKyNpbmNsdWRlICJTVkdF
bGVtZW50LmgiCisjaW5jbHVkZSAiU1ZHTWFza0VsZW1lbnQuaCIKKyNpbmNsdWRlIDx3dGYvTmV2
ZXJEZXN0cm95ZWQuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitIYXNoTWFwPGNvbnN0IFJl
bmRlckxheWVyKiwgc3RkOjp1bmlxdWVfcHRyPFJlbmRlckxheWVyOjpNYXNrSW1hZ2VJbmZvPj4m
IFJlbmRlckxheWVyOjpNYXNrSW1hZ2VJbmZvOjpsYXllclRvTWFza01hcCgpCit7CisgICAgc3Rh
dGljIE5ldmVyRGVzdHJveWVkPEhhc2hNYXA8Y29uc3QgUmVuZGVyTGF5ZXIqLCBzdGQ6OnVuaXF1
ZV9wdHI8TWFza0ltYWdlSW5mbz4+PiBsYXllclRvTWFza01hcDsKKyAgICByZXR1cm4gbGF5ZXJU
b01hc2tNYXA7Cit9CisKK1JlbmRlckxheWVyOjpNYXNrSW1hZ2VJbmZvKiBSZW5kZXJMYXllcjo6
TWFza0ltYWdlSW5mbzo6Z2V0SWZFeGlzdHMoY29uc3QgUmVuZGVyTGF5ZXImIGxheWVyKQorewor
ICAgIEFTU0VSVChsYXllci5tX2hhc01hc2tJbWFnZUluZm8gPT0gbGF5ZXJUb01hc2tNYXAoKS5j
b250YWlucygmbGF5ZXIpKTsKKyAgICByZXR1cm4gbGF5ZXIubV9oYXNNYXNrSW1hZ2VJbmZvID8g
bGF5ZXJUb01hc2tNYXAoKS5nZXQoJmxheWVyKSA6IDA7Cit9CisKK1JlbmRlckxheWVyOjpNYXNr
SW1hZ2VJbmZvJiBSZW5kZXJMYXllcjo6TWFza0ltYWdlSW5mbzo6Z2V0KFJlbmRlckxheWVyJiBs
YXllcikKK3sKKyAgICBBU1NFUlQobGF5ZXIubV9oYXNNYXNrSW1hZ2VJbmZvID09IGxheWVyVG9N
YXNrTWFwKCkuY29udGFpbnMoJmxheWVyKSk7CisKKyAgICBhdXRvJiBpbmZvID0gbGF5ZXJUb01h
c2tNYXAoKS5hZGQoJmxheWVyLCBudWxscHRyKS5pdGVyYXRvci0+dmFsdWU7CisgICAgaWYgKCFp
bmZvKSB7CisgICAgICAgIGluZm8gPSBzdGQ6Om1ha2VfdW5pcXVlPE1hc2tJbWFnZUluZm8+KGxh
eWVyKTsKKyAgICAgICAgbGF5ZXIubV9oYXNNYXNrSW1hZ2VJbmZvID0gdHJ1ZTsKKyAgICB9Cisg
ICAgcmV0dXJuICppbmZvOworfQorCit2b2lkIFJlbmRlckxheWVyOjpNYXNrSW1hZ2VJbmZvOjpy
ZW1vdmUoUmVuZGVyTGF5ZXImIGxheWVyKQoreworICAgIEFTU0VSVChsYXllci5tX2hhc01hc2tJ
bWFnZUluZm8gPT0gbGF5ZXJUb01hc2tNYXAoKS5jb250YWlucygmbGF5ZXIpKTsKKworICAgIGlm
IChsYXllclRvTWFza01hcCgpLnJlbW92ZSgmbGF5ZXIpKQorICAgICAgICBsYXllci5tX2hhc01h
c2tJbWFnZUluZm8gPSBmYWxzZTsKK30KKworUmVuZGVyTGF5ZXI6Ok1hc2tJbWFnZUluZm86Ok1h
c2tJbWFnZUluZm8oUmVuZGVyTGF5ZXImIGxheWVyKQorICAgIDogbV9sYXllcihsYXllcikKK3sK
KyAgICBtX3N2Z0RvY3VtZW50Q2xpZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxNYXNrU1ZHRG9jdW1l
bnRDbGllbnQ+KHRoaXMpOworICAgIG1faW1hZ2VDbGllbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPE1h
c2tJbWFnZUNsaWVudD4odGhpcyk7Cit9CisKK1JlbmRlckxheWVyOjpNYXNrSW1hZ2VJbmZvOjp+
TWFza0ltYWdlSW5mbygpCit7CisgICAgcmVtb3ZlTWFza0ltYWdlQ2xpZW50cygpOworfQorCit2
b2lkIFJlbmRlckxheWVyOjpNYXNrSW1hZ2VJbmZvOjpub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNv
dXJjZSopCit7CisgICAgbV9sYXllci5yZW5kZXJlcigpLnJlcGFpbnQoKTsKK30KKwordm9pZCBS
ZW5kZXJMYXllcjo6TWFza0ltYWdlSW5mbzo6aW1hZ2VDaGFuZ2VkKENhY2hlZEltYWdlKiwgY29u
c3QgSW50UmVjdCopCit7CisgICAgbV9sYXllci5yZW5kZXJlcigpLnJlcGFpbnQoKTsKK30KKwor
dm9pZCBSZW5kZXJMYXllcjo6TWFza0ltYWdlSW5mbzo6dXBkYXRlTWFza0ltYWdlQ2xpZW50cygp
Cit7CisgICAgcmVtb3ZlTWFza0ltYWdlQ2xpZW50cygpOworICAgIAorICAgIGNvbnN0IEZpbGxM
YXllciogbWFza0xheWVyID0gbV9sYXllci5yZW5kZXJlcigpLnN0eWxlKCkubWFza0xheWVycygp
OworICAgIHdoaWxlIChtYXNrTGF5ZXIpIHsKKyAgICAgICAgY29uc3QgUmVmUHRyPE1hc2tJbWFn
ZU9wZXJhdGlvbj4gbWFza0ltYWdlID0gbWFza0xheWVyLT5tYXNrSW1hZ2UoKTsKKyAgICAgICAg
bWFza0ltYWdlLT5zZXRSZW5kZXJMYXllckltYWdlQ2xpZW50KG1faW1hZ2VDbGllbnQuZ2V0KCkp
OworICAgICAgICBDYWNoZWRTVkdEb2N1bWVudFJlZmVyZW5jZSogZG9jdW1lbnRSZWZlcmVuY2Ug
PSBtYXNrSW1hZ2UtPmNhY2hlZFNWR0RvY3VtZW50UmVmZXJlbmNlKCk7CisgICAgICAgIENhY2hl
ZFNWR0RvY3VtZW50KiBjYWNoZWRTVkdEb2N1bWVudCA9IGRvY3VtZW50UmVmZXJlbmNlID8gZG9j
dW1lbnRSZWZlcmVuY2UtPmRvY3VtZW50KCkgOiAwOworICAgICAgICAKKyAgICAgICAgaWYgKGNh
Y2hlZFNWR0RvY3VtZW50KSB7CisgICAgICAgICAgICAvLyBSZWZlcmVuY2UgaXMgZXh0ZXJuYWw7
IHdhaXQgZm9yIG5vdGlmeUZpbmlzaGVkKCkuCisgICAgICAgICAgICBjYWNoZWRTVkdEb2N1bWVu
dC0+YWRkQ2xpZW50KG1fc3ZnRG9jdW1lbnRDbGllbnQuZ2V0KCkpOworICAgICAgICAgICAgbV9l
eHRlcm5hbFNWR1JlZmVyZW5jZXMuYXBwZW5kKGNhY2hlZFNWR0RvY3VtZW50KTsKKyAgICAgICAg
fSBlbHNlIHsKKyAgICAgICAgICAgIC8vIFJlZmVyZW5jZSBpcyBpbnRlcm5hbDsgYWRkIGxheWVy
IGFzIGEgY2xpZW50IHNvIHdlIGNhbiB0cmlnZ2VyCisgICAgICAgICAgICAvLyBtYXNrIHJlcGFp
bnQgb24gU1ZHIGF0dHJpYnV0ZSBjaGFuZ2UuCisgICAgICAgICAgICBFbGVtZW50KiBtYXNrZXIg
PSBtX2xheWVyLnJlbmRlcmVyKCkuZG9jdW1lbnQoKS5nZXRFbGVtZW50QnlJZChtYXNrSW1hZ2Ut
PmZyYWdtZW50KCkpOworICAgICAgICAgICAgaWYgKG1hc2tlciAmJiBpczxTVkdNYXNrRWxlbWVu
dD4obWFza2VyKSkgeworICAgICAgICAgICAgICAgIGRvd25jYXN0PFNWR01hc2tFbGVtZW50Piht
YXNrZXIpLT5hZGRDbGllbnRSZW5kZXJMYXllcigmbV9sYXllcik7CisgICAgICAgICAgICAgICAg
bV9pbnRlcm5hbFNWR1JlZmVyZW5jZXMuYXBwZW5kKG1hc2tlcik7CisgICAgICAgICAgICB9Cisg
ICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIG1hc2tMYXllciA9IG1hc2tMYXllci0+bmV4dCgp
OworICAgIH0KK30KKwordm9pZCBSZW5kZXJMYXllcjo6TWFza0ltYWdlSW5mbzo6cmVtb3ZlTWFz
a0ltYWdlQ2xpZW50cygpCit7CisgICAgY29uc3QgRmlsbExheWVyKiBtYXNrTGF5ZXIgPSBtX2xh
eWVyLnJlbmRlcmVyKCkuc3R5bGUoKS5tYXNrTGF5ZXJzKCk7CisgICAgd2hpbGUgKG1hc2tMYXll
cikgeworICAgICAgICBpZiAobWFza0xheWVyLT5tYXNrSW1hZ2UoKSkKKyAgICAgICAgICAgIG1h
c2tMYXllci0+bWFza0ltYWdlKCktPnNldFJlbmRlckxheWVySW1hZ2VDbGllbnQobnVsbHB0cik7
CisKKyAgICAgICAgbWFza0xheWVyID0gbWFza0xheWVyLT5uZXh0KCk7CisgICAgfQorICAgIAor
ICAgIGZvciAoYXV0byBleHRlcm5hbFNWR1JlZmVyZW5jZSA6IG1fZXh0ZXJuYWxTVkdSZWZlcmVu
Y2VzKQorICAgICAgICBleHRlcm5hbFNWR1JlZmVyZW5jZS0+cmVtb3ZlQ2xpZW50KG1fc3ZnRG9j
dW1lbnRDbGllbnQuZ2V0KCkpOworICAgIG1fZXh0ZXJuYWxTVkdSZWZlcmVuY2VzLmNsZWFyKCk7
CisgICAgCisgICAgZm9yIChhdXRvIGludGVybmFsU1ZHUmVmZXJlbmNlIDogbV9pbnRlcm5hbFNW
R1JlZmVyZW5jZXMpCisgICAgICAgIGRvd25jYXN0PFNWR01hc2tFbGVtZW50PihpbnRlcm5hbFNW
R1JlZmVyZW5jZS5nZXQoKSktPnJlbW92ZUNsaWVudFJlbmRlckxheWVyKCZtX2xheWVyKTsKKyAg
ICBtX2ludGVybmFsU1ZHUmVmZXJlbmNlcy5jbGVhcigpOworfQorCit9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJN
YXNrSW1hZ2VJbmZvLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJNYXNr
SW1hZ2VJbmZvLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWQ1MDc5Zgot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllck1h
c2tJbWFnZUluZm8uaApAQCAtMCwwICsxLDEwMyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
NCBBZG9iZSBTeXN0ZW1zIEluY29ycG9yYXRlZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9M
REVSICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBIT0xERVIg
QkUKKyAqIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwKKyAqIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IKKyAqIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRgorICogVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GCisgKiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFJlbmRl
ckxheWVyTWFza0ltYWdlSW5mb19oCisjZGVmaW5lIFJlbmRlckxheWVyTWFza0ltYWdlSW5mb19o
CisKKyNpbmNsdWRlICJDYWNoZWRJbWFnZUNsaWVudC5oIgorI2luY2x1ZGUgIkNhY2hlZFJlc291
cmNlSGFuZGxlLmgiCisjaW5jbHVkZSAiQ2FjaGVkU1ZHRG9jdW1lbnRDbGllbnQuaCIKKyNpbmNs
dWRlICJNYXNrSW1hZ2VPcGVyYXRpb24uaCIKKyNpbmNsdWRlICJSZW5kZXJMYXllci5oIgorI2lu
Y2x1ZGUgPG1lbW9yeT4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBFbGVtZW50Owor
CitjbGFzcyBSZW5kZXJMYXllcjo6TWFza0ltYWdlSW5mbyBmaW5hbCB7Citwcml2YXRlOgorICAg
IGNsYXNzIE1hc2tSZXNvdXJjZUNsaWVudCB7CisgICAgcHVibGljOgorICAgICAgICBNYXNrUmVz
b3VyY2VDbGllbnQoUmVuZGVyTGF5ZXI6Ok1hc2tJbWFnZUluZm8qIG1hc2tJbWFnZUluZm8pCisg
ICAgICAgICAgICA6IG1fbWFza0ltYWdlSW5mbyhtYXNrSW1hZ2VJbmZvKQorICAgICAgICB7Cisg
ICAgICAgICAgICBBU1NFUlQobV9tYXNrSW1hZ2VJbmZvKTsKKyAgICAgICAgfQorICAgIHByb3Rl
Y3RlZDoKKyAgICAgICAgUmVuZGVyTGF5ZXI6Ok1hc2tJbWFnZUluZm8qIG1fbWFza0ltYWdlSW5m
bzsKKyAgICB9OworICAgIAorICAgIGNsYXNzIE1hc2tTVkdEb2N1bWVudENsaWVudCA6IHB1Ymxp
YyBNYXNrUmVzb3VyY2VDbGllbnQsIHB1YmxpYyBDYWNoZWRTVkdEb2N1bWVudENsaWVudCB7Cisg
ICAgcHVibGljOgorICAgICAgICBNYXNrU1ZHRG9jdW1lbnRDbGllbnQoUmVuZGVyTGF5ZXI6Ok1h
c2tJbWFnZUluZm8qIG1hc2tJbWFnZUluZm8pCisgICAgICAgICAgICA6IE1hc2tSZXNvdXJjZUNs
aWVudChtYXNrSW1hZ2VJbmZvKQorICAgICAgICB7CisgICAgICAgIH0KKyAgICAgICAgCisgICAg
ICAgIHZpcnR1YWwgdm9pZCBub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSogcmVzb3VyY2Up
IG92ZXJyaWRlIHsgbV9tYXNrSW1hZ2VJbmZvLT5ub3RpZnlGaW5pc2hlZChyZXNvdXJjZSk7IH0K
KyAgICB9OworICAgIAorICAgIGNsYXNzIE1hc2tJbWFnZUNsaWVudCA6IHB1YmxpYyBNYXNrUmVz
b3VyY2VDbGllbnQsIHB1YmxpYyBDYWNoZWRJbWFnZUNsaWVudCB7CisgICAgcHVibGljOgorICAg
ICAgICBNYXNrSW1hZ2VDbGllbnQoUmVuZGVyTGF5ZXI6Ok1hc2tJbWFnZUluZm8qIG1hc2tJbWFn
ZUluZm8pCisgICAgICAgICAgICA6IE1hc2tSZXNvdXJjZUNsaWVudChtYXNrSW1hZ2VJbmZvKQor
ICAgICAgICB7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIHZpcnR1YWwgdm9pZCBpbWFn
ZUNoYW5nZWQoQ2FjaGVkSW1hZ2UqIGltYWdlLCBjb25zdCBJbnRSZWN0KiByZWN0ID0gbnVsbHB0
cikgb3ZlcnJpZGUgeyBtX21hc2tJbWFnZUluZm8tPmltYWdlQ2hhbmdlZChpbWFnZSwgcmVjdCk7
IH0KKyAgICB9OworCitwdWJsaWM6CisgICAgc3RhdGljIE1hc2tJbWFnZUluZm8mIGdldChSZW5k
ZXJMYXllciYpOworICAgIHN0YXRpYyBNYXNrSW1hZ2VJbmZvKiBnZXRJZkV4aXN0cyhjb25zdCBS
ZW5kZXJMYXllciYpOworICAgIHN0YXRpYyB2b2lkIHJlbW92ZShSZW5kZXJMYXllciYpOworCisg
ICAgZXhwbGljaXQgTWFza0ltYWdlSW5mbyhSZW5kZXJMYXllciYpOworICAgIH5NYXNrSW1hZ2VJ
bmZvKCk7CisKKyAgICB2b2lkIHVwZGF0ZU1hc2tJbWFnZUNsaWVudHMoKTsKKyAgICB2b2lkIHJl
bW92ZU1hc2tJbWFnZUNsaWVudHMoKTsKKworcHJpdmF0ZToKKyAgICBmcmllbmQgdm9pZCBXVEY6
OmRlbGV0ZU93bmVkUHRyPE1hc2tJbWFnZUluZm8+KE1hc2tJbWFnZUluZm8qKTsKKworICAgIHZv
aWQgbm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UqKTsKKyAgICB2b2lkIGltYWdlQ2hhbmdl
ZChDYWNoZWRJbWFnZSosIGNvbnN0IEludFJlY3QqKTsKKworICAgIHN0YXRpYyBIYXNoTWFwPGNv
bnN0IFJlbmRlckxheWVyKiwgc3RkOjp1bmlxdWVfcHRyPE1hc2tJbWFnZUluZm8+PiYgbGF5ZXJU
b01hc2tNYXAoKTsKKworICAgIFJlbmRlckxheWVyJiBtX2xheWVyOworCisgICAgVmVjdG9yPFJl
ZlB0cjxFbGVtZW50Pj4gbV9pbnRlcm5hbFNWR1JlZmVyZW5jZXM7CisgICAgVmVjdG9yPENhY2hl
ZFJlc291cmNlSGFuZGxlPENhY2hlZFNWR0RvY3VtZW50Pj4gbV9leHRlcm5hbFNWR1JlZmVyZW5j
ZXM7CisgICAgc3RkOjp1bmlxdWVfcHRyPE1hc2tTVkdEb2N1bWVudENsaWVudD4gbV9zdmdEb2N1
bWVudENsaWVudDsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8TWFza0ltYWdlQ2xpZW50PiBtX2ltYWdl
Q2xpZW50OworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gUmVuZGVy
TGF5ZXJNYXNrSW1hZ2VJbmZvX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdHlsZS9GaWxsTGF5ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0Zp
bGxMYXllci5jcHAKaW5kZXggYjkxZmJlNy4uODJkOTM2NSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N0eWxlL0ZpbGxMYXllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N0eWxlL0ZpbGxMYXllci5jcHAKQEAgLTI4LDYgKzI4LDcgQEAgc3RydWN0IFNh
bWVTaXplQXNGaWxsTGF5ZXIgewogICAgIEZpbGxMYXllciogbmV4dDsKIAogICAgIFJlZlB0cjxT
dHlsZUltYWdlPiBpbWFnZTsKKyAgICBSZWZQdHI8TWFza0ltYWdlT3BlcmF0aW9uPiBtYXNrSW1h
Z2VPcGVyYXRpb247CiAKICAgICBMZW5ndGggeDsKICAgICBMZW5ndGggeTsKQEAgLTc0LDYgKzc1
LDcgQEAgRmlsbExheWVyOjpGaWxsTGF5ZXIoRUZpbGxMYXllclR5cGUgdHlwZSkKIAogRmlsbExh
eWVyOjpGaWxsTGF5ZXIoY29uc3QgRmlsbExheWVyJiBvKQogICAgIDogbV9uZXh0KG8ubV9uZXh0
ID8gc3RkOjptYWtlX3VuaXF1ZTxGaWxsTGF5ZXI+KCpvLm1fbmV4dCkgOiBudWxscHRyKQorICAg
ICwgbV9tYXNrSW1hZ2VPcGVyYXRpb24oby5tX21hc2tJbWFnZU9wZXJhdGlvbikKICAgICAsIG1f
aW1hZ2Uoby5tX2ltYWdlKQogICAgICwgbV94UG9zaXRpb24oby5tX3hQb3NpdGlvbikKICAgICAs
IG1feVBvc2l0aW9uKG8ubV95UG9zaXRpb24pCkBAIC0xMTYsNiArMTE4LDcgQEAgRmlsbExheWVy
JiBGaWxsTGF5ZXI6Om9wZXJhdG9yPShjb25zdCBGaWxsTGF5ZXImIG8pCiAgICAgbV9uZXh0ID0g
by5tX25leHQgPyBzdGQ6Om1ha2VfdW5pcXVlPEZpbGxMYXllcj4oKm8ubV9uZXh0KSA6IG51bGxw
dHI7CiAKICAgICBtX2ltYWdlID0gby5tX2ltYWdlOworICAgIG1fbWFza0ltYWdlT3BlcmF0aW9u
ID0gby5tX21hc2tJbWFnZU9wZXJhdGlvbjsKICAgICBtX3hQb3NpdGlvbiA9IG8ubV94UG9zaXRp
b247CiAgICAgbV95UG9zaXRpb24gPSBvLm1feVBvc2l0aW9uOwogICAgIG1fYmFja2dyb3VuZFhP
cmlnaW4gPSBvLm1fYmFja2dyb3VuZFhPcmlnaW47CkBAIC0xNTMsNyArMTU2LDggQEAgYm9vbCBG
aWxsTGF5ZXI6Om9wZXJhdG9yPT0oY29uc3QgRmlsbExheWVyJiBvKSBjb25zdAogewogICAgIC8v
IFdlIGRvIG5vdCBjaGVjayB0aGUgImlzU2V0IiBib29sZWFucyBmb3IgZWFjaCBwcm9wZXJ0eSwg
c2luY2UgdGhvc2UgYXJlIG9ubHkgdXNlZCBkdXJpbmcgaW5pdGlhbCBjb25zdHJ1Y3Rpb24KICAg
ICAvLyB0byBwcm9wYWdhdGUgcGF0dGVybnMgaW50byBsYXllcnMuIEFsbCBsYXllciBjb21wYXJp
c29ucyBoYXBwZW4gYWZ0ZXIgdmFsdWVzIGhhdmUgYWxsIGJlZW4gZmlsbGVkIGluIGFueXdheS4K
LSAgICByZXR1cm4gU3R5bGVJbWFnZTo6aW1hZ2VzRXF1aXZhbGVudChtX2ltYWdlLmdldCgpLCBv
Lm1faW1hZ2UuZ2V0KCkpICYmIG1feFBvc2l0aW9uID09IG8ubV94UG9zaXRpb24gJiYgbV95UG9z
aXRpb24gPT0gby5tX3lQb3NpdGlvbgorICAgIHJldHVybiBTdHlsZUltYWdlOjppbWFnZXNFcXVp
dmFsZW50KG1faW1hZ2UuZ2V0KCksIG8ubV9pbWFnZS5nZXQoKSkgJiYgbV9tYXNrSW1hZ2VPcGVy
YXRpb24gPT0gby5tX21hc2tJbWFnZU9wZXJhdGlvbgorICAgICAgICAmJiBtX3hQb3NpdGlvbiA9
PSBvLm1feFBvc2l0aW9uICYmIG1feVBvc2l0aW9uID09IG8ubV95UG9zaXRpb24KICAgICAgICAg
JiYgbV9iYWNrZ3JvdW5kWE9yaWdpbiA9PSBvLm1fYmFja2dyb3VuZFhPcmlnaW4gJiYgbV9iYWNr
Z3JvdW5kWU9yaWdpbiA9PSBvLm1fYmFja2dyb3VuZFlPcmlnaW4KICAgICAgICAgJiYgbV9hdHRh
Y2htZW50ID09IG8ubV9hdHRhY2htZW50ICYmIG1fY2xpcCA9PSBvLm1fY2xpcCAmJiBtX2NvbXBv
c2l0ZSA9PSBvLm1fY29tcG9zaXRlCiAgICAgICAgICYmIG1fYmxlbmRNb2RlID09IG8ubV9ibGVu
ZE1vZGUgJiYgbV9vcmlnaW4gPT0gby5tX29yaWdpbiAmJiBtX3JlcGVhdFggPT0gby5tX3JlcGVh
dFgKQEAgLTI4OCwxMyArMjkyLDIxIEBAIHZvaWQgRmlsbExheWVyOjpmaWxsVW5zZXRQcm9wZXJ0
aWVzKCkKIHZvaWQgRmlsbExheWVyOjpjdWxsRW1wdHlMYXllcnMoKQogewogICAgIGZvciAoRmls
bExheWVyKiBsYXllciA9IHRoaXM7IGxheWVyOyBsYXllciA9IGxheWVyLT5tX25leHQuZ2V0KCkp
IHsKLSAgICAgICAgaWYgKGxheWVyLT5tX25leHQgJiYgIWxheWVyLT5tX25leHQtPmlzSW1hZ2VT
ZXQoKSkgeworICAgICAgICBpZiAobGF5ZXItPm1fbmV4dCAmJiAhbGF5ZXItPm1fbmV4dC0+aXNJ
bWFnZVNldCgpICYmICFsYXllci0+bV9uZXh0LT5oYXNNYXNrSW1hZ2UoKSkgewogICAgICAgICAg
ICAgbGF5ZXItPm1fbmV4dCA9IG51bGxwdHI7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
fQogICAgIH0KIH0KIAorYm9vbCBGaWxsTGF5ZXI6Omhhc05vbkVtcHR5TWFza0ltYWdlKCkgY29u
c3QKK3sKKyAgICBpZiAoaGFzTWFza0ltYWdlKCkgJiYgIW1hc2tJbWFnZSgpLT5pc0NTU1ZhbHVl
Tm9uZSgpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAKKyAgICByZXR1cm4gKG5leHQoKSA/
IG5leHQoKS0+aGFzTm9uRW1wdHlNYXNrSW1hZ2UoKSA6IGZhbHNlKTsKK30KKwogc3RhdGljIGlu
bGluZSBFRmlsbEJveCBjbGlwTWF4KEVGaWxsQm94IGNsaXBBLCBFRmlsbEJveCBjbGlwQikKIHsK
ICAgICBpZiAoY2xpcEEgPT0gQm9yZGVyRmlsbEJveCB8fCBjbGlwQiA9PSBCb3JkZXJGaWxsQm94
KQpAQCAtMzQwLDYgKzM1Miw5IEBAIGJvb2wgRmlsbExheWVyOjppbWFnZXNBcmVMb2FkZWQoKSBj
b25zdAogICAgIGZvciAoYXV0byogbGF5ZXIgPSB0aGlzOyBsYXllcjsgbGF5ZXIgPSBsYXllci0+
bV9uZXh0LmdldCgpKSB7CiAgICAgICAgIGlmIChsYXllci0+bV9pbWFnZSAmJiAhbGF5ZXItPm1f
aW1hZ2UtPmlzTG9hZGVkKCkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIAor
ICAgICAgICBpZiAobGF5ZXItPmhhc01hc2tJbWFnZSgpICYmICFsYXllci0+bWFza0ltYWdlKCkt
PmlzTWFza0xvYWRlZCgpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KICAgICBy
ZXR1cm4gdHJ1ZTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHls
ZS9GaWxsTGF5ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9GaWxsTGF5ZXIu
aAppbmRleCA5YmViN2JmLi5kZjQ0ODdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3R5bGUvRmlsbExheWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0
eWxlL0ZpbGxMYXllci5oCkBAIC0yNyw2ICsyNyw3IEBACiAKICNpbmNsdWRlICJHcmFwaGljc1R5
cGVzLmgiCiAjaW5jbHVkZSAiTGVuZ3RoU2l6ZS5oIgorI2luY2x1ZGUgIk1hc2tJbWFnZU9wZXJh
dGlvbi5oIgogI2luY2x1ZGUgIlJlbmRlclN0eWxlQ29uc3RhbnRzLmgiCiAjaW5jbHVkZSAiU3R5
bGVJbWFnZS5oIgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KQEAgLTY3LDcgKzY4LDkgQEAgcHVi
bGljOgogICAgIGV4cGxpY2l0IEZpbGxMYXllcihFRmlsbExheWVyVHlwZSk7CiAgICAgfkZpbGxM
YXllcigpOwogCisgICAgY29uc3QgUmVmUHRyPE1hc2tJbWFnZU9wZXJhdGlvbj4mIG1hc2tJbWFn
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fbWFza0ltYWdlT3BlcmF0aW9uOyB9CiAgICAgU3R5bGVJbWFn
ZSogaW1hZ2UoKSBjb25zdCB7IHJldHVybiBtX2ltYWdlLmdldCgpOyB9CisgICAgU3R5bGVJbWFn
ZSogaW1hZ2VPck1hc2tJbWFnZSgpIGNvbnN0IHsgcmV0dXJuIGhhc01hc2tJbWFnZSgpID8gbWFz
a0ltYWdlKCktPmltYWdlKCkgOiBpbWFnZSgpOyB9CiAgICAgY29uc3QgTGVuZ3RoJiB4UG9zaXRp
b24oKSBjb25zdCB7IHJldHVybiBtX3hQb3NpdGlvbjsgfQogICAgIGNvbnN0IExlbmd0aCYgeVBv
c2l0aW9uKCkgY29uc3QgeyByZXR1cm4gbV95UG9zaXRpb247IH0KICAgICBCYWNrZ3JvdW5kRWRn
ZU9yaWdpbiBiYWNrZ3JvdW5kWE9yaWdpbigpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEJh
Y2tncm91bmRFZGdlT3JpZ2luPihtX2JhY2tncm91bmRYT3JpZ2luKTsgfQpAQCAtMTAxLDYgKzEw
NCw3IEBAIHB1YmxpYzoKICAgICBib29sIGlzU2l6ZVNldCgpIGNvbnN0IHsgcmV0dXJuIG1fc2l6
ZVR5cGUgIT0gU2l6ZU5vbmU7IH0KICAgICBib29sIGlzTWFza1NvdXJjZVR5cGVTZXQoKSBjb25z
dCB7IHJldHVybiBtX21hc2tTb3VyY2VUeXBlU2V0OyB9CiAKKyAgICB2b2lkIHNldE1hc2tJbWFn
ZShQYXNzUmVmUHRyPE1hc2tJbWFnZU9wZXJhdGlvbj4gbWFza0ltYWdlKSB7IG1fbWFza0ltYWdl
T3BlcmF0aW9uID0gbWFza0ltYWdlOyB9CiAgICAgdm9pZCBzZXRJbWFnZShQYXNzUmVmUHRyPFN0
eWxlSW1hZ2U+IGltYWdlKSB7IG1faW1hZ2UgPSBpbWFnZTsgbV9pbWFnZVNldCA9IHRydWU7IH0K
ICAgICB2b2lkIHNldFhQb3NpdGlvbihMZW5ndGggbGVuZ3RoKSB7IG1feFBvc2l0aW9uID0gV1RG
Ojptb3ZlKGxlbmd0aCk7IG1feFBvc1NldCA9IHRydWU7IH0KICAgICB2b2lkIHNldFlQb3NpdGlv
bihMZW5ndGggbGVuZ3RoKSB7IG1feVBvc2l0aW9uID0gV1RGOjptb3ZlKGxlbmd0aCk7IG1feVBv
c1NldCA9IHRydWU7IH0KQEAgLTExOCw2ICsxMjIsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRT
aXplKEZpbGxTaXplIGYpIHsgbV9zaXplVHlwZSA9IGYudHlwZTsgbV9zaXplTGVuZ3RoID0gZi5z
aXplOyB9CiAgICAgdm9pZCBzZXRNYXNrU291cmNlVHlwZShFTWFza1NvdXJjZVR5cGUgbSkgeyBt
X21hc2tTb3VyY2VUeXBlID0gbTsgbV9tYXNrU291cmNlVHlwZVNldCA9IHRydWU7IH0KIAorICAg
IHZvaWQgY2xlYXJNYXNrSW1hZ2UoKSB7IG1fbWFza0ltYWdlT3BlcmF0aW9uLmNsZWFyKCk7IH0K
ICAgICB2b2lkIGNsZWFySW1hZ2UoKSB7IG1faW1hZ2UuY2xlYXIoKTsgbV9pbWFnZVNldCA9IGZh
bHNlOyB9CiAgICAgdm9pZCBjbGVhclhQb3NpdGlvbigpIHsgbV94UG9zU2V0ID0gZmFsc2U7IG1f
YmFja2dyb3VuZE9yaWdpblNldCA9IGZhbHNlOyB9CiAgICAgdm9pZCBjbGVhcllQb3NpdGlvbigp
IHsgbV95UG9zU2V0ID0gZmFsc2U7IG1fYmFja2dyb3VuZE9yaWdpblNldCA9IGZhbHNlOyB9CkBA
IC0xNDMsNiArMTQ4LDggQEAgcHVibGljOgogICAgIGJvb2wgY29udGFpbnNJbWFnZShTdHlsZUlt
YWdlJikgY29uc3Q7CiAgICAgYm9vbCBpbWFnZXNBcmVMb2FkZWQoKSBjb25zdDsKICAgICBib29s
IGhhc0ltYWdlKCkgY29uc3Q7CisgICAgYm9vbCBoYXNNYXNrSW1hZ2UoKSBjb25zdCB7IHJldHVy
biBtYXNrSW1hZ2UoKS5nZXQoKTsgfQorICAgIGJvb2wgaGFzTm9uRW1wdHlNYXNrSW1hZ2UoKSBj
b25zdDsKICAgICBib29sIGhhc0ZpeGVkSW1hZ2UoKSBjb25zdDsKICAgICBib29sIGhhc09wYXF1
ZUltYWdlKGNvbnN0IFJlbmRlckVsZW1lbnQmKSBjb25zdDsKICAgICBib29sIGhhc1JlcGVhdFhZ
KCkgY29uc3Q7CkBAIC0xNzUsNiArMTgyLDcgQEAgcHJpdmF0ZToKIAogICAgIHN0ZDo6dW5pcXVl
X3B0cjxGaWxsTGF5ZXI+IG1fbmV4dDsKIAorICAgIFJlZlB0cjxNYXNrSW1hZ2VPcGVyYXRpb24+
IG1fbWFza0ltYWdlT3BlcmF0aW9uOwogICAgIFJlZlB0cjxTdHlsZUltYWdlPiBtX2ltYWdlOwog
CiAgICAgTGVuZ3RoIG1feFBvc2l0aW9uOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZU1hc2tlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlTWFza2VyLmNwcAppbmRleCAzN2YyYzA5Li4x
MGJjMGFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNW
R1Jlc291cmNlTWFza2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1Jl
bmRlclNWR1Jlc291cmNlTWFza2VyLmNwcApAQCAtMjUsNiArMjUsNyBAQAogI2luY2x1ZGUgIkZs
b2F0UG9pbnQuaCIKICNpbmNsdWRlICJJbWFnZS5oIgogI2luY2x1ZGUgIkludFJlY3QuaCIKKyNp
bmNsdWRlICJSZW5kZXJCb3hNb2RlbE9iamVjdC5oIgogI2luY2x1ZGUgIlNWR1JlbmRlcmluZ0Nv
bnRleHQuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNTMsMTAgKzU0LDkgQEAgdm9pZCBS
ZW5kZXJTVkdSZXNvdXJjZU1hc2tlcjo6cmVtb3ZlQ2xpZW50RnJvbUNhY2hlKFJlbmRlckVsZW1l
bnQmIGNsaWVudCwgYm9vbAogICAgIG1hcmtDbGllbnRGb3JJbnZhbGlkYXRpb24oY2xpZW50LCBt
YXJrRm9ySW52YWxpZGF0aW9uID8gQm91bmRhcmllc0ludmFsaWRhdGlvbiA6IFBhcmVudE9ubHlJ
bnZhbGlkYXRpb24pOwogfQogCi1ib29sIFJlbmRlclNWR1Jlc291cmNlTWFza2VyOjphcHBseVJl
c291cmNlKFJlbmRlckVsZW1lbnQmIHJlbmRlcmVyLCBjb25zdCBSZW5kZXJTdHlsZSYsIEdyYXBo
aWNzQ29udGV4dComIGNvbnRleHQsIHVuc2lnbmVkIHNob3J0IHJlc291cmNlTW9kZSkKK2Jvb2wg
UmVuZGVyU1ZHUmVzb3VyY2VNYXNrZXI6OmFwcGx5U1ZHTWFzayhSZW5kZXJFbGVtZW50JiByZW5k
ZXJlciwgR3JhcGhpY3NDb250ZXh0KiYgY29udGV4dCwgYm9vbCBhcHBseUNsaXApCiB7CiAgICAg
QVNTRVJUKGNvbnRleHQpOwotICAgIEFTU0VSVF9VTlVTRUQocmVzb3VyY2VNb2RlLCByZXNvdXJj
ZU1vZGUgPT0gQXBwbHlUb0RlZmF1bHRNb2RlKTsKIAogICAgIGJvb2wgbWlzc2luZ01hc2tlckRh
dGEgPSAhbV9tYXNrZXIuY29udGFpbnMoJnJlbmRlcmVyKTsKICAgICBpZiAobWlzc2luZ01hc2tl
ckRhdGEpCkBAIC03NSwxOCArNzUsMjUgQEAgYm9vbCBSZW5kZXJTVkdSZXNvdXJjZU1hc2tlcjo6
YXBwbHlSZXNvdXJjZShSZW5kZXJFbGVtZW50JiByZW5kZXJlciwgY29uc3QgUmVuZGUKICAgICAg
ICAgaWYgKCFTVkdSZW5kZXJpbmdDb250ZXh0OjpjcmVhdGVJbWFnZUJ1ZmZlcihyZXBhaW50UmVj
dCwgYWJzb2x1dGVUcmFuc2Zvcm0sIG1hc2tlckRhdGEtPm1hc2tJbWFnZSwgY29sb3JTcGFjZSwg
VW5hY2NlbGVyYXRlZCkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICAgICAgaWYg
KCFkcmF3Q29udGVudEludG9NYXNrSW1hZ2UobWFza2VyRGF0YSwgY29sb3JTcGFjZSwgJnJlbmRl
cmVyKSkgeworICAgICAgICBpZiAoIWRyYXdDb250ZW50SW50b01hc2tJbWFnZShtYXNrZXJEYXRh
LCBjb2xvclNwYWNlLCAmcmVuZGVyZXIpKQogICAgICAgICAgICAgbWFza2VyRGF0YS0+bWFza0lt
YWdlLnJlc2V0KCk7Ci0gICAgICAgIH0KICAgICB9CiAKICAgICBpZiAoIW1hc2tlckRhdGEtPm1h
c2tJbWFnZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgU1ZHUmVuZGVyaW5nQ29udGV4
dDo6Y2xpcFRvSW1hZ2VCdWZmZXIoY29udGV4dCwgYWJzb2x1dGVUcmFuc2Zvcm0sIHJlcGFpbnRS
ZWN0LCBtYXNrZXJEYXRhLT5tYXNrSW1hZ2UsIG1pc3NpbmdNYXNrZXJEYXRhKTsKKyAgICBpZiAo
YXBwbHlDbGlwKQorICAgICAgICBTVkdSZW5kZXJpbmdDb250ZXh0OjpjbGlwVG9JbWFnZUJ1ZmZl
cihjb250ZXh0LCBhYnNvbHV0ZVRyYW5zZm9ybSwgcmVwYWludFJlY3QsIG1hc2tlckRhdGEtPm1h
c2tJbWFnZSwgbWlzc2luZ01hc2tlckRhdGEpOworCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKK2Jv
b2wgUmVuZGVyU1ZHUmVzb3VyY2VNYXNrZXI6OmFwcGx5UmVzb3VyY2UoUmVuZGVyRWxlbWVudCYg
cmVuZGVyZXIsIGNvbnN0IFJlbmRlclN0eWxlJiwgR3JhcGhpY3NDb250ZXh0KiYgY29udGV4dCwg
dW5zaWduZWQgc2hvcnQgcmVzb3VyY2VNb2RlKQoreworICAgIEFTU0VSVF9VTlVTRUQocmVzb3Vy
Y2VNb2RlLCByZXNvdXJjZU1vZGUgPT0gQXBwbHlUb0RlZmF1bHRNb2RlKTsKKyAgICByZXR1cm4g
YXBwbHlTVkdNYXNrKHJlbmRlcmVyLCBjb250ZXh0LCB0cnVlKTsKK30KKwogYm9vbCBSZW5kZXJT
VkdSZXNvdXJjZU1hc2tlcjo6ZHJhd0NvbnRlbnRJbnRvTWFza0ltYWdlKE1hc2tlckRhdGEqIG1h
c2tlckRhdGEsIENvbG9yU3BhY2UgY29sb3JTcGFjZSwgUmVuZGVyT2JqZWN0KiBvYmplY3QpCiB7
CiAgICAgR3JhcGhpY3NDb250ZXh0KiBtYXNrSW1hZ2VDb250ZXh0ID0gbWFza2VyRGF0YS0+bWFz
a0ltYWdlLT5jb250ZXh0KCk7CkBAIC0xMjcsNiArMTM0LDM0IEBAIGJvb2wgUmVuZGVyU1ZHUmVz
b3VyY2VNYXNrZXI6OmRyYXdDb250ZW50SW50b01hc2tJbWFnZShNYXNrZXJEYXRhKiBtYXNrZXJE
YXRhLCBDCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKK3ZvaWQgUmVuZGVyU1ZHUmVzb3VyY2VNYXNr
ZXI6OmRyYXdNYXNrRm9yUmVuZGVyZXIoUmVuZGVyRWxlbWVudCYgcmVuZGVyZXIsIGNvbnN0IEJh
Y2tncm91bmRJbWFnZUdlb21ldHJ5JiBnZW9tZXRyeSwgR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0
LCBDb21wb3NpdGVPcGVyYXRvciBjb21wb3NpdGVPcCkKK3sKKyAgICBpZiAoY29udGV4dC0+cGFp
bnRpbmdEaXNhYmxlZCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAoIWFwcGx5U1ZHTWFz
ayhyZW5kZXJlciwgY29udGV4dCwgZmFsc2UpKQorICAgICAgICByZXR1cm47CisKKyAgICBNYXNr
ZXJEYXRhKiBtYXNrZXJEYXRhID0gbWFza2VyRGF0YUZvclJlbmRlcmVyKHJlbmRlcmVyKTsKKyAg
ICBBU1NFUlQobWFza2VyRGF0YSk7CisKKyAgICBGbG9hdFJlY3Qgb25lVGlsZVJlY3Q7CisgICAg
RmxvYXRTaXplIGFjdHVhbFRpbGVTaXplKGdlb21ldHJ5LnRpbGVTaXplKCkud2lkdGgoKSArIGdl
b21ldHJ5LnNwYWNlU2l6ZSgpLndpZHRoKCksIGdlb21ldHJ5LnRpbGVTaXplKCkuaGVpZ2h0KCkg
KyBnZW9tZXRyeS5zcGFjZVNpemUoKS5oZWlnaHQoKSk7CisgICAgb25lVGlsZVJlY3Quc2V0WChn
ZW9tZXRyeS5kZXN0UmVjdCgpLngoKSArIGZtb2RmKGZtb2RmKC1nZW9tZXRyeS5yZWxhdGl2ZVBo
YXNlKCkueCgpLCBhY3R1YWxUaWxlU2l6ZS53aWR0aCgpKSAtIGFjdHVhbFRpbGVTaXplLndpZHRo
KCksIGFjdHVhbFRpbGVTaXplLndpZHRoKCkpKTsKKyAgICBvbmVUaWxlUmVjdC5zZXRZKGdlb21l
dHJ5LmRlc3RSZWN0KCkueSgpICsgZm1vZGYoZm1vZGYoLWdlb21ldHJ5LnJlbGF0aXZlUGhhc2Uo
KS55KCksIGFjdHVhbFRpbGVTaXplLmhlaWdodCgpKSAtIGFjdHVhbFRpbGVTaXplLmhlaWdodCgp
LCBhY3R1YWxUaWxlU2l6ZS5oZWlnaHQoKSkpOworICAgIG9uZVRpbGVSZWN0LnNldFNpemUoZ2Vv
bWV0cnkudGlsZVNpemUoKSk7CisgICAgCisgICAgRmxvYXRTaXplIGludHJpbnNpY1RpbGVTaXpl
ID0gbWFza2VyRGF0YS0+bWFza0ltYWdlLT5sb2dpY2FsU2l6ZSgpOworICAgIEZsb2F0U2l6ZSBz
Y2FsZShnZW9tZXRyeS50aWxlU2l6ZSgpLndpZHRoKCkgLyBpbnRyaW5zaWNUaWxlU2l6ZS53aWR0
aCgpLCBnZW9tZXRyeS50aWxlU2l6ZSgpLmhlaWdodCgpIC8gaW50cmluc2ljVGlsZVNpemUuaGVp
Z2h0KCkpOworICAgIAorICAgIEZsb2F0UmVjdCB2aXNpYmxlU3JjUmVjdDsKKyAgICB2aXNpYmxl
U3JjUmVjdC5zZXRYKChnZW9tZXRyeS5kZXN0UmVjdCgpLngoKSAtIG9uZVRpbGVSZWN0LngoKSkg
LyBzY2FsZS53aWR0aCgpKTsKKyAgICB2aXNpYmxlU3JjUmVjdC5zZXRZKChnZW9tZXRyeS5kZXN0
UmVjdCgpLnkoKSAtIG9uZVRpbGVSZWN0LnkoKSkgLyBzY2FsZS5oZWlnaHQoKSk7CisgICAgdmlz
aWJsZVNyY1JlY3Quc2V0V2lkdGgoZ2VvbWV0cnkuZGVzdFJlY3QoKS53aWR0aCgpIC8gc2NhbGUu
d2lkdGgoKSk7CisgICAgdmlzaWJsZVNyY1JlY3Quc2V0SGVpZ2h0KGdlb21ldHJ5LmRlc3RSZWN0
KCkuaGVpZ2h0KCkgLyBzY2FsZS5oZWlnaHQoKSk7CisgICAgY29udGV4dC0+ZHJhd0ltYWdlQnVm
ZmVyKG1hc2tlckRhdGEtPm1hc2tJbWFnZS5nZXQoKSwgQ29sb3JTcGFjZURldmljZVJHQiwgZ2Vv
bWV0cnkuZGVzdFJlY3QoKSwgdmlzaWJsZVNyY1JlY3QsIGNvbXBvc2l0ZU9wKTsKK30KKwogdm9p
ZCBSZW5kZXJTVkdSZXNvdXJjZU1hc2tlcjo6Y2FsY3VsYXRlTWFza0NvbnRlbnRSZXBhaW50UmVj
dCgpCiB7CiAgICAgZm9yIChOb2RlKiBjaGlsZE5vZGUgPSBtYXNrRWxlbWVudCgpLmZpcnN0Q2hp
bGQoKTsgY2hpbGROb2RlOyBjaGlsZE5vZGUgPSBjaGlsZE5vZGUtPm5leHRTaWJsaW5nKCkpIHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3Vy
Y2VNYXNrZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3Vy
Y2VNYXNrZXIuaAppbmRleCBhMWZmYjNmNC4uN2NkNzRkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZU1hc2tlci5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VNYXNrZXIuaApAQCAtNDUs
NiArNDUsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHJlbW92ZUFsbENsaWVudHNGcm9t
Q2FjaGUoYm9vbCBtYXJrRm9ySW52YWxpZGF0aW9uID0gdHJ1ZSkgb3ZlcnJpZGU7CiAgICAgdmly
dHVhbCB2b2lkIHJlbW92ZUNsaWVudEZyb21DYWNoZShSZW5kZXJFbGVtZW50JiwgYm9vbCBtYXJr
Rm9ySW52YWxpZGF0aW9uID0gdHJ1ZSkgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCBib29sIGFwcGx5
UmVzb3VyY2UoUmVuZGVyRWxlbWVudCYsIGNvbnN0IFJlbmRlclN0eWxlJiwgR3JhcGhpY3NDb250
ZXh0KiYsIHVuc2lnbmVkIHNob3J0IHJlc291cmNlTW9kZSkgb3ZlcnJpZGU7CisgICAgYm9vbCBh
cHBseVNWR01hc2soUmVuZGVyRWxlbWVudCYgcmVuZGVyZXIsIEdyYXBoaWNzQ29udGV4dComLCBi
b29sIGFwcGx5Q2xpcCk7CiAgICAgdmlydHVhbCBGbG9hdFJlY3QgcmVzb3VyY2VCb3VuZGluZ0Jv
eChjb25zdCBSZW5kZXJPYmplY3QmKSBvdmVycmlkZTsKIAogICAgIFNWR1VuaXRUeXBlczo6U1ZH
VW5pdFR5cGUgbWFza1VuaXRzKCkgY29uc3QgeyByZXR1cm4gbWFza0VsZW1lbnQoKS5tYXNrVW5p
dHMoKTsgfQpAQCAtNTIsNiArNTMsOSBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIFJlbmRlclNW
R1Jlc291cmNlVHlwZSByZXNvdXJjZVR5cGUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBNYXNr
ZXJSZXNvdXJjZVR5cGU7IH0KIAorICAgIE1hc2tlckRhdGEqIG1hc2tlckRhdGFGb3JSZW5kZXJl
cihSZW5kZXJPYmplY3QmIHJlbmRlcmVyKSB7IHJldHVybiBtX21hc2tlci5nZXQoJnJlbmRlcmVy
KTsgfQorICAgIHZvaWQgZHJhd01hc2tGb3JSZW5kZXJlcihSZW5kZXJFbGVtZW50JiByZW5kZXJl
ciwgY29uc3QgQmFja2dyb3VuZEltYWdlR2VvbWV0cnkmLCBHcmFwaGljc0NvbnRleHQqLCBDb21w
b3NpdGVPcGVyYXRvcik7CisKIHByaXZhdGU6CiAgICAgdm9pZCBlbGVtZW50KCkgY29uc3QgPSBk
ZWxldGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdNYXNrRWxlbWVudC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTWFza0VsZW1lbnQuY3BwCmluZGV4IDQzMWYyNmEu
LjZmNjI5MWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdNYXNrRWxlbWVudC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR01hc2tFbGVtZW50LmNwcApAQCAtMTYxLDcg
KzE2MSwzMyBAQCB2b2lkIFNWR01hc2tFbGVtZW50OjpjaGlsZHJlbkNoYW5nZWQoY29uc3QgQ2hp
bGRDaGFuZ2UmIGNoYW5nZSkKIAogUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IFNWR01hc2tFbGVt
ZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIoUGFzc1JlZjxSZW5kZXJTdHlsZT4gc3R5bGUpCiB7
Ci0gICAgcmV0dXJuIGNyZWF0ZVJlbmRlcmVyPFJlbmRlclNWR1Jlc291cmNlTWFza2VyPigqdGhp
cywgV1RGOjptb3ZlKHN0eWxlKSk7CisgICAgUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IG1hc2tS
ZW5kZXJlciA9IGNyZWF0ZVJlbmRlcmVyPFJlbmRlclNWR1Jlc291cmNlTWFza2VyPigqdGhpcywg
V1RGOjptb3ZlKHN0eWxlKSk7CisgICAgCisgICAgLy8gUGFzcyBhbG9uZyBleGlzdGluZyByZW5k
ZXIgbGF5ZXIgY2xpZW50cy4KKyAgICBmb3IgKGF1dG8qIGNsaWVudExheWVyIDogbV9jbGllbnRM
YXllcnMpCisgICAgICAgIHN0YXRpY19jYXN0PFJlbmRlclNWR1Jlc291cmNlTWFza2VyKj4obWFz
a1JlbmRlcmVyLmdldCgpKS0+YWRkQ2xpZW50UmVuZGVyTGF5ZXIoY2xpZW50TGF5ZXIpOworICAg
IAorICAgIHJldHVybiBtYXNrUmVuZGVyZXI7Cit9CisKK3ZvaWQgU1ZHTWFza0VsZW1lbnQ6OmFk
ZENsaWVudFJlbmRlckxheWVyKFJlbmRlckxheWVyKiBjbGllbnQpCit7CisgICAgQVNTRVJUKGNs
aWVudCk7CisgICAgbV9jbGllbnRMYXllcnMuYWRkKGNsaWVudCk7CisgICAgCisgICAgLy8gUGFz
cyBpdCBhbG9uZyB0byB0aGUgcmVuZGVyZXIuCisgICAgaWYgKHJlbmRlcmVyKCkpCisgICAgICAg
IHN0YXRpY19jYXN0PFJlbmRlclNWR1Jlc291cmNlTWFza2VyKj4ocmVuZGVyZXIoKSktPmFkZENs
aWVudFJlbmRlckxheWVyKGNsaWVudCk7Cit9CisKK3ZvaWQgU1ZHTWFza0VsZW1lbnQ6OnJlbW92
ZUNsaWVudFJlbmRlckxheWVyKFJlbmRlckxheWVyKiBjbGllbnQpCit7CisgICAgQVNTRVJUKGNs
aWVudCk7CisgICAgbV9jbGllbnRMYXllcnMucmVtb3ZlKGNsaWVudCk7CisgICAgCisgICAgLy8g
UGFzcyBpdCBhbG9uZyB0byB0aGUgcmVuZGVyZXIuCisgICAgaWYgKHJlbmRlcmVyKCkpCisgICAg
ICAgIHN0YXRpY19jYXN0PFJlbmRlclNWR1Jlc291cmNlTWFza2VyKj4ocmVuZGVyZXIoKSktPnJl
bW92ZUNsaWVudFJlbmRlckxheWVyKGNsaWVudCk7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdNYXNrRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR01h
c2tFbGVtZW50LmgKaW5kZXggMjJlZGRiYy4uZDQ2YzcwMiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR01hc2tFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR01h
c2tFbGVtZW50LmgKQEAgLTMwLDYgKzMwLDggQEAKICNpbmNsdWRlICJTVkdVbml0VHlwZXMuaCIK
IAogbmFtZXNwYWNlIFdlYkNvcmUgeworICAgIAorY2xhc3MgUmVuZGVyTGF5ZXI7CiAKIGNsYXNz
IFNWR01hc2tFbGVtZW50IGZpbmFsIDogcHVibGljIFNWR0VsZW1lbnQsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHB1YmxpYyBTVkdUZXN0cywKQEAgLTM3LDYgKzM5LDkgQEAgY2xhc3Mg
U1ZHTWFza0VsZW1lbnQgZmluYWwgOiBwdWJsaWMgU1ZHRWxlbWVudCwKIHB1YmxpYzoKICAgICBz
dGF0aWMgUGFzc1JlZlB0cjxTVkdNYXNrRWxlbWVudD4gY3JlYXRlKGNvbnN0IFF1YWxpZmllZE5h
bWUmLCBEb2N1bWVudCYpOwogCisgICAgdm9pZCBhZGRDbGllbnRSZW5kZXJMYXllcihSZW5kZXJM
YXllciopOworICAgIHZvaWQgcmVtb3ZlQ2xpZW50UmVuZGVyTGF5ZXIoUmVuZGVyTGF5ZXIqKTsK
KwogcHJpdmF0ZToKICAgICBTVkdNYXNrRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9j
dW1lbnQmKTsKIApAQCAtNDgsNiArNTMsOCBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBz
dmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmKSBvdmVycmlkZTsKICAgICB2
aXJ0dWFsIHZvaWQgY2hpbGRyZW5DaGFuZ2VkKGNvbnN0IENoaWxkQ2hhbmdlJikgb3ZlcnJpZGU7
CiAKKyAgICBIYXNoU2V0PFJlbmRlckxheWVyKj4gbV9jbGllbnRMYXllcnM7CisKICAgICB2aXJ0
dWFsIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVFbGVtZW50UmVuZGVyZXIoUGFzc1Jl
ZjxSZW5kZXJTdHlsZT4pIG92ZXJyaWRlOwogCiAgICAgdmlydHVhbCBib29sIHNlbGZIYXNSZWxh
dGl2ZUxlbmd0aHMoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVXNlRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHVXNlRWxlbWVudC5jcHAKaW5kZXggNTI5NTFiYy4uNDJiYzhmMSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR1VzZUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdVc2VFbGVtZW50LmNwcApAQCAtOTkyLDggKzk5MiwxMSBAQCB2b2lkIFNWR1VzZUVs
ZW1lbnQ6OnNldENhY2hlZERvY3VtZW50KENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZFNWR0Rv
Y3VtZW50PiBjYQogICAgICAgICBtX2NhY2hlZERvY3VtZW50LT5yZW1vdmVDbGllbnQodGhpcyk7
CiAKICAgICBtX2NhY2hlZERvY3VtZW50ID0gY2FjaGVkRG9jdW1lbnQ7Ci0gICAgaWYgKG1fY2Fj
aGVkRG9jdW1lbnQpCisgICAgaWYgKG1fY2FjaGVkRG9jdW1lbnQpIHsKKyAgICAgICAgLy8gV2Ug
ZG9uJ3QgbmVlZCB0aGUgU1ZHIGRvY3VtZW50IHRvIGNyZWF0ZSBhIG5ldyBmcmFtZSBiZWNhdXNl
IHRoZSBuZXcgZG9jdW1lbnQgYmVsb25ncyB0byB0aGUgcGFyZW50IFVzZUVsZW1lbnQuCisgICAg
ICAgIG1fY2FjaGVkRG9jdW1lbnQtPnNldFNob3VsZENyZWF0ZUZyYW1lRm9yRG9jdW1lbnQoZmFs
c2UpOwogICAgICAgICBtX2NhY2hlZERvY3VtZW50LT5hZGRDbGllbnQodGhpcyk7CisgICAgfQog
fQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2Uu
Y3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmNwcAppbmRleCA0OWI5
MGJlLi5kZjFkOWI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZH
SW1hZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZS5jcHAK
QEAgLTM0NCw2ICszNDQsOCBAQCBib29sIFNWR0ltYWdlOjpkYXRhQ2hhbmdlZChib29sIGFsbERh
dGFSZWNlaXZlZCkKICAgICAgICAgZmlsbFdpdGhFbXB0eUNsaWVudHMocGFnZUNvbmZpZ3VyYXRp
b24pOwogICAgICAgICBtX2Nocm9tZUNsaWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8U1ZHSW1hZ2VD
aHJvbWVDbGllbnQ+KHRoaXMpOwogICAgICAgICBwYWdlQ29uZmlndXJhdGlvbi5jaHJvbWVDbGll
bnQgPSBtX2Nocm9tZUNsaWVudC5nZXQoKTsKKyAgICAgICAgYm9vbCBjYW5IYXZlU2Nyb2xsYmFy
cyA9IGZhbHNlOyAvLyBTVkcgSW1hZ2VzIHdpbGwgYWx3YXlzIHN5bnRoZXNpemUgYSB2aWV3Qm94
LCBpZiBpdCdzIG5vdCBhdmFpbGFibGUsIGFuZCB0aHVzIG5ldmVyIHNlZSBzY3JvbGxiYXJzLgor
ICAgICAgICBib29sIHRyYW5zcGFyZW50ID0gdHJ1ZTsgLy8gU1ZHIEltYWdlcyBhcmUgdHJhbnNw
YXJlbnQuCiAKICAgICAgICAgLy8gRklYTUU6IElmIHRoaXMgU1ZHIGVuZHMgdXAgbG9hZGluZyBp
dHNlbGYsIHdlIG1pZ2h0IGxlYWsgdGhlIHdvcmxkLgogICAgICAgICAvLyBUaGUgQ2FjaGUgY29k
ZSBkb2VzIG5vdCBrbm93IGFib3V0IENhY2hlZEltYWdlcyBob2xkaW5nIEZyYW1lcyBhbmQKQEAg
LTM1MSwyNSArMzUzLDcgQEAgYm9vbCBTVkdJbWFnZTo6ZGF0YUNoYW5nZWQoYm9vbCBhbGxEYXRh
UmVjZWl2ZWQpCiAgICAgICAgIC8vIFRoaXMgd2lsbCBiZWNvbWUgYW4gaXNzdWUgd2hlbiBTVkdJ
bWFnZSB3aWxsIGJlIGFibGUgdG8gbG9hZCBvdGhlcgogICAgICAgICAvLyBTVkdJbWFnZSBvYmpl
Y3RzLCBidXQgd2UncmUgc2FmZSBub3csIGJlY2F1c2UgU1ZHSW1hZ2UgY2FuIG9ubHkgYmUKICAg
ICAgICAgLy8gbG9hZGVkIGJ5IGEgdG9wLWxldmVsIGRvY3VtZW50LgotICAgICAgICBtX3BhZ2Ug
PSBzdGQ6Om1ha2VfdW5pcXVlPFBhZ2U+KHBhZ2VDb25maWd1cmF0aW9uKTsKLSAgICAgICAgbV9w
YWdlLT5zZXR0aW5ncygpLnNldE1lZGlhRW5hYmxlZChmYWxzZSk7Ci0gICAgICAgIG1fcGFnZS0+
c2V0dGluZ3MoKS5zZXRTY3JpcHRFbmFibGVkKGZhbHNlKTsKLSAgICAgICAgbV9wYWdlLT5zZXR0
aW5ncygpLnNldFBsdWdpbnNFbmFibGVkKGZhbHNlKTsKLQotICAgICAgICBGcmFtZSYgZnJhbWUg
PSBtX3BhZ2UtPm1haW5GcmFtZSgpOwotICAgICAgICBmcmFtZS5zZXRWaWV3KEZyYW1lVmlldzo6
Y3JlYXRlKGZyYW1lKSk7Ci0gICAgICAgIGZyYW1lLmluaXQoKTsKLSAgICAgICAgRnJhbWVMb2Fk
ZXImIGxvYWRlciA9IGZyYW1lLmxvYWRlcigpOwotICAgICAgICBsb2FkZXIuZm9yY2VTYW5kYm94
RmxhZ3MoU2FuZGJveEFsbCk7Ci0KLSAgICAgICAgZnJhbWUudmlldygpLT5zZXRDYW5IYXZlU2Ny
b2xsYmFycyhmYWxzZSk7IC8vIFNWRyBJbWFnZXMgd2lsbCBhbHdheXMgc3ludGhlc2l6ZSBhIHZp
ZXdCb3gsIGlmIGl0J3Mgbm90IGF2YWlsYWJsZSwgYW5kIHRodXMgbmV2ZXIgc2VlIHNjcm9sbGJh
cnMuCi0gICAgICAgIGZyYW1lLnZpZXcoKS0+c2V0VHJhbnNwYXJlbnQodHJ1ZSk7IC8vIFNWRyBJ
bWFnZXMgYXJlIHRyYW5zcGFyZW50LgotCi0gICAgICAgIEFTU0VSVChsb2FkZXIuYWN0aXZlRG9j
dW1lbnRMb2FkZXIoKSk7IC8vIERvY3VtZW50TG9hZGVyIHNob3VsZCBoYXZlIGJlZW4gY3JlYXRl
ZCBieSBmcmFtZS0+aW5pdCgpLgotICAgICAgICBsb2FkZXIuYWN0aXZlRG9jdW1lbnRMb2FkZXIo
KS0+d3JpdGVyKCkuc2V0TUlNRVR5cGUoImltYWdlL3N2Zyt4bWwiKTsKLSAgICAgICAgbG9hZGVy
LmFjdGl2ZURvY3VtZW50TG9hZGVyKCktPndyaXRlcigpLmJlZ2luKFVSTCgpKTsgLy8gY3JlYXRl
IHRoZSBlbXB0eSBkb2N1bWVudAotICAgICAgICBsb2FkZXIuYWN0aXZlRG9jdW1lbnRMb2FkZXIo
KS0+d3JpdGVyKCkuYWRkRGF0YShkYXRhKCktPmRhdGEoKSwgZGF0YSgpLT5zaXplKCkpOwotICAg
ICAgICBsb2FkZXIuYWN0aXZlRG9jdW1lbnRMb2FkZXIoKS0+d3JpdGVyKCkuZW5kKCk7CisgICAg
ICAgIG1fcGFnZSA9IHN0ZDo6dW5pcXVlX3B0cjxQYWdlPihQYWdlOjpjcmVhdGVQYWdlRnJvbUJ1
ZmZlcihwYWdlQ29uZmlndXJhdGlvbiwgZGF0YSgpLCAiaW1hZ2Uvc3ZnK3htbCIsIGNhbkhhdmVT
Y3JvbGxiYXJzLCB0cmFuc3BhcmVudCkpOwogCiAgICAgICAgIC8vIFNldCB0aGUgaW50cmluc2lj
IHNpemUgYmVmb3JlIGEgY29udGFpbmVyIHNpemUgaXMgYXZhaWxhYmxlLgogICAgICAgICBtX2lu
dHJpbnNpY1NpemUgPSBjb250YWluZXJTaXplKCk7Cg==
</data>
<flag name="review"
          id="267370"
          type_id="1"
          status="+"
          setter="simon.fraser"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>242563</attachid>
            <date>2014-12-04 04:11:26 -0800</date>
            <delta_ts>2014-12-04 07:00:44 -0800</delta_ts>
            <desc>Integrated Simon&apos;s feedback</desc>
            <filename>129682.subpart1.v3.patch</filename>
            <type>text/plain</type>
            <size>100635</size>
            <attacher name="Radu Stavila">stavila</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYkNv
cmUvQ01ha2VMaXN0cy50eHQKaW5kZXggOTdjMjMyOS4uYzlhYzAyNSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0
cy50eHQKQEAgLTEyODksNiArMTI4OSw3IEBAIHNldChXZWJDb3JlX1NPVVJDRVMKICAgICBjc3Mv
VHJhbnNmb3JtRnVuY3Rpb25zLmNwcAogICAgIGNzcy9WaWV3cG9ydFN0eWxlUmVzb2x2ZXIuY3Bw
CiAgICAgY3NzL1dlYktpdENTU0ZpbHRlclZhbHVlLmNwcAorICAgIGNzcy9XZWJLaXRDU1NSZXNv
dXJjZVZhbHVlLmNwcAogICAgIGNzcy9DU1NLZXlmcmFtZVJ1bGUuY3BwCiAgICAgY3NzL0NTU0tl
eWZyYW1lc1J1bGUuY3BwCiAgICAgY3NzL1dlYktpdENTU01hdHJpeC5jcHAKQEAgLTIwODksNiAr
MjA5MCw3IEBAIHNldChXZWJDb3JlX1NPVVJDRVMKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9JU09W
VFRDdWUuY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvTGF5b3V0Qm94RXh0ZW50LmNwcAogICAg
IHBsYXRmb3JtL2dyYXBoaWNzL0xheW91dFJlY3QuY3BwCisgICAgcGxhdGZvcm0vZ3JhcGhpY3Mv
TWFza0ltYWdlT3BlcmF0aW9uLmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVy
LmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL1BhdGguY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhp
Y3MvUGF0aFRyYXZlcnNhbFN0YXRlLmNwcApAQCAtMjI5NSw2ICsyMjk3LDcgQEAgc2V0KFdlYkNv
cmVfU09VUkNFUwogICAgIHJlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwCiAgICAgcmVu
ZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5jcHAKICAgICByZW5kZXJpbmcvUmVuZGVyTGF5
ZXJGaWx0ZXJJbmZvLmNwcAorICAgIHJlbmRlcmluZy9SZW5kZXJMYXllck1hc2tJbWFnZUluZm8u
Y3BwCiAgICAgcmVuZGVyaW5nL1JlbmRlckxheWVyTW9kZWxPYmplY3QuY3BwCiAgICAgcmVuZGVy
aW5nL1JlbmRlckxpbmVCb3hMaXN0LmNwcAogICAgIHJlbmRlcmluZy9SZW5kZXJMaW5lQnJlYWsu
Y3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKaW5kZXggNTllNDgzMi4uZjkyZjY0MiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDE4MyBAQAorMjAxNC0xMS0yOCAgUmFkdSBTdGF2aWxhICA8c3RhdmlsYUBhZG9iZS5jb20+CisK
KyAgICAgICAgW1NWRyBNYXNraW5nXSBBZGQgc3VwcG9ydCBmb3IgcmVmZXJlbmNpbmcgPG1hc2s+
IGVsZW1lbnRzIGZyb20gLXdlYmtpdC1tYXNrLWltYWdlCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzkwOTIKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHBhdGNoIGltcHJvdmVzIHRoZSAtd2Via2l0
LW1hc2staW1hZ2UgcHJvcGVydHkgYnkgYWxsb3dpbmcgaXQgdG8gcmVmZXJlbmNlCisgICAgICAg
IGEgPG1hc2s+IGVsZW1lbnQgZGVmaW5lZCBpbiBhbiBpbmxpbmUgb3IgZXh0ZXJuYWwgU1ZHIGRv
Y3VtZW50LgorICAgICAgICBVcCB1bnRpbCBub3csIGVhY2ggaW1hZ2UgdG8gYmUgdXNlZCBhcyBh
IG1hc2sgY29uc2lzdGVkIG9mIGEgRmlsbExheWVyIG9iamVjdCAKKyAgICAgICAgd2hvc2UgbV9p
bWFnZSBtZW1iZXIgcmVwcmVzZW50ZWQgdGhlIG1hc2suIE5vdywgaW4gb3JkZXIgdG8gYWNjb21v
ZGF0ZQorICAgICAgICA8bWFzaz4gZWxlbWVudHMgcmVmZXJlbmNlZCBieSBhIGZyYWdtZW50IGlk
ZW50aWZpZXIgKGUuZy4gZmlsZS5zdmcjbWFzazEpCisgICAgICAgIGEgbmV3IGNsYXNzIHdhcyBj
cmVhdGVkIChNYXNrSW1hZ2VPcGVyYXRpb24pIGFuZCBhZGRlZCBhcyBhIG1lbWJlciBvZiB0aGUg
CisgICAgICAgIEZpbGxMYXllci4gQXMgc3VjaCwgZnJvbSBub3cgb24sIGFsbCBGaWxsTGF5ZXIg
b2JqZWN0cyB1c2VkIGZvciBtYXNraW5nIHdpbGwKKyAgICAgICAgc3RvcmUgdGhlIG1hc2tpbmcg
aW5mb3JtYXRpb24gaW4gdGhpcyBuZXcgbWVtYmVyLgorICAgICAgICBXaGVuIHBhcnNpbmcgdGhl
IC13ZWJraXQtbWFzay1pbWFnZSBwcm9wZXJ0eSAob3IgdGhlIC13ZWJraXQtbWFzayBzaG9ydGhh
bmQpCisgICAgICAgIGEgbmV3IE1hc2tJbWFnZU9wZXJhdGlvbiBvYmplY3QgaXMgY3JlYXRlZCBm
b3IgZWFjaCBpbWFnZS4gSWYgdGhlIHZhbHVlIHJlcHJlc2VudHMKKyAgICAgICAgYW4gZXh0ZXJu
YWwgVVJMLCBhIHBlbmRpbmcgU1ZHIGRvY3VtZW50IHdpbGwgYmUgY3JlYXRlZCB3aGljaCB3aWxs
IGJlIGxvYWRlZCAKKyAgICAgICAgZHVyaW5nIHRoZSBwaGFzZSB0aGF0IGxvYWRzIHRoZSBwZW5k
aW5nIHJlc291cmNlcy4gV2hlbiB0aGUgZG93bmxvYWQgaXMgY29tcGxldGUsCisgICAgICAgIHRo
ZSBNYXNrSW1hZ2VPcGVyYXRpb24gaXMgbm90aWZpZWQgYnkgdGhlIENhY2hlZFNWR0RvY3VtZW50
IGNsYXNzIGFuZCBjaGVja3MgaWYKKyAgICAgICAgdGhlIHJlY2VpdmVkIGRvd25sb2FkIGlzIGEg
dmFsaWQgU1ZHIGFuZCB0aGUgcmVxdWVzdGVkIGZyYWdtZW50IGlkZW50aWZpZXIKKyAgICAgICAg
YWN0dWFsbHkgZXhpc3RzIGFuZCBpZGVudGlmaWVzIGEgPG1hc2s+IGVsZW1lbnQuIElmIGl0IGRv
ZXMsIHRoYXQgZWxlbWVudCdzCisgICAgICAgIHJlbmRlcmVyIChvZiB0eXBlIFJlbmRlclNWR1Jl
c291cmNlTWFza2VyKSB3aWxsIGJlIHVzZWQgd2hlbiBwYWludGluZyB0aGUgbWFzayBsYXllcnMu
CisgICAgICAgIE90aGVyd2lzZSwgdGhlIE1hc2tJbWFnZU9wZXJhdGlvbiBjbGFzcyB3aWxsIHVz
ZSB0aGUgYWxyZWFkeSBkb3dubG9hZGVkIGRhdGEgCisgICAgICAgIGJ1ZmZlciB0byBjcmVhdGUg
YSBDYWNoZWRJbWFnZSBmcm9tIGl0IGFuZCB1c2UgdGhhdCBpbnN0ZWFkLCBiYXNpY2FsbHkgZW11
bGF0aW5nCisgICAgICAgIHRoZSBwcmV2aW91cyBiZWhhdmlvciwgd2hlbiBvbmx5IGltYWdlcyB3
ZXJlIGFjY2VwdGVkLiBUaGlzIGVuc3VyZXMgdGhhdCBhbGwgZXhpc3RpbmcKKyAgICAgICAgYmVo
YXZpb3IsIGxpa2UgcGFpbnRpbmcgZW50aXJlIFNWR3MsIHBhaW50aW5nIG5vcm1hbCBpbWFnZXMg
KGUuZy4gUE5HL0pQRyksIHBhaW50aW5nCisgICAgICAgIGdlbmVyYXRlZCBpbWFnZXMgKGUuZy4g
bGluZWFyLWdyYWRpZW50KSB3b3JrcyBhcyBpdCBkaWQgYmVmb3JlLgorCisgICAgICAgIE5vIG5l
dyB0ZXN0cyByZXF1aXJlZCwgdGhpcyBwYXRjaCBkb2Vzbid0IGNoYW5nZSBhbnkgY3VycmVudCBm
dW5jdGlvbmFsaXR5LiAKKyAgICAgICAgSXQgb25seSBhZGRzIHN1cHBvcnQgZm9yIHJlZmVyZW5j
aW5nIDxtYXNrPiBlbGVtZW50cyBmb3IgdGhlIC13ZWJraXQtbWFzay1pbWFnZSAKKyAgICAgICAg
cHJvcGVydHkuIFRoaXMgaXMgc3ViLXBhcnQgMSBvZiB0aGUgYmlnZ2VyIHBhdGNoIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjk2ODIuCisKKyAgICAgICAgKiBDTWFr
ZUxpc3RzLnR4dDoKKyAgICAgICAgKiBXZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qOgor
ICAgICAgICAqIFdlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2ouZmlsdGVyczoKKyAgICAg
ICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogY3NzL0NT
U1ZhbHVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1ZhbHVlOjpjc3NUZXh0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkNTU1ZhbHVlOjpkZXN0cm95KToKKyAgICAgICAgKiBjc3MvQ1NTVmFsdWUu
aDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1ZhbHVlOjppc1dlYktpdENTU1Jlc291cmNlVmFsdWUp
OgorICAgICAgICAqIGNzcy9TdHlsZVJlc29sdmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0
eWxlUmVzb2x2ZXI6OlN0YXRlOjpjbGVhcik6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJlc29s
dmVyOjpjcmVhdGVNYXNrSW1hZ2VPcGVyYXRpb25zKToKKyAgICAgICAgKiBjc3MvU3R5bGVSZXNv
bHZlci5oOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVSZXNvbHZlcjo6U3RhdGU6Om1hc2tJbWFn
ZXNXaXRoUGVuZGluZ1NWR0RvY3VtZW50cyk6CisgICAgICAgICogY3NzL1dlYktpdENTU1Jlc291
cmNlVmFsdWUuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OldlYktpdENTU1Jlc291cmNl
VmFsdWU6OldlYktpdENTU1Jlc291cmNlVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6V2ViS2l0
Q1NTUmVzb3VyY2VWYWx1ZTo6Y3VzdG9tQ1NTVGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJL
aXRDU1NSZXNvdXJjZVZhbHVlOjppc0NTU1ZhbHVlTm9uZSk6CisgICAgICAgICogY3NzL1dlYktp
dENTU1Jlc291cmNlVmFsdWUuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpXZWJLaXRDU1NS
ZXNvdXJjZVZhbHVlOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6V2ViS2l0Q1NTUmVzb3Vy
Y2VWYWx1ZTo6aW5uZXJWYWx1ZSk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291
cmNlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJlc291cmNlTG9hZGVyOjph
ZGRDYWNoZWRSZXNvdXJjZSk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNl
TG9hZGVyLmg6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0RvY3VtZW50LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFNWR0RvY3VtZW50OjpDYWNoZWRTVkdEb2N1bWVudCk6
CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRTVkdEb2N1bWVudDo6ZmluaXNoTG9hZGluZyk6Cisg
ICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0RvY3VtZW50Lmg6CisgICAgICAgICogbG9h
ZGVyL2NhY2hlL0NhY2hlZFNWR0RvY3VtZW50UmVmZXJlbmNlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkNhY2hlZFNWR0RvY3VtZW50UmVmZXJlbmNlOjpDYWNoZWRTVkdEb2N1bWVudFJlZmVyZW5j
ZSk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRTVkdEb2N1bWVudFJlZmVyZW5jZTo6fkNhY2hl
ZFNWR0RvY3VtZW50UmVmZXJlbmNlKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFNWR0RvY3Vt
ZW50UmVmZXJlbmNlOjpsb2FkKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRG9j
dW1lbnRSZWZlcmVuY2UuaDoKKyAgICAgICAgKiBwYWdlL0ZyYW1lVmlldy5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpGcmFtZVZpZXc6OmlzU1ZHRG9jdW1lbnQpOgorICAgICAgICAqIHBhZ2UvRnJh
bWVWaWV3Lmg6CisgICAgICAgICogcGFnZS9QYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBh
Z2U6OmNyZWF0ZVBhZ2VGcm9tQnVmZmVyKToKKyAgICAgICAgKiBwYWdlL1BhZ2UuaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9TY3JvbGxWaWV3Lmg6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxWaWV3
Ojppc1NWR0RvY3VtZW50KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9NYXNrSW1hZ2VP
cGVyYXRpb24uY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6Ok1hc2tJbWFnZU9wZXJhdGlv
bjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1hc2tJbWFnZU9wZXJhdGlvbjo6TWFza0lt
YWdlT3BlcmF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6Ok1hc2tJbWFnZU9wZXJhdGlvbjo6fk1h
c2tJbWFnZU9wZXJhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpNYXNrSW1hZ2VPcGVyYXRpb246
OmlzQ1NTVmFsdWVOb25lKToKKyAgICAgICAgKFdlYkNvcmU6Ok1hc2tJbWFnZU9wZXJhdGlvbjo6
Y3NzVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6TWFza0ltYWdlT3BlcmF0aW9uOjppc01hc2tM
b2FkZWQpOgorICAgICAgICAoV2ViQ29yZTo6TWFza0ltYWdlT3BlcmF0aW9uOjpzZXRSZW5kZXJM
YXllckltYWdlQ2xpZW50KToKKyAgICAgICAgKFdlYkNvcmU6Ok1hc2tJbWFnZU9wZXJhdGlvbjo6
YWRkUmVuZGVyZXJJbWFnZUNsaWVudCk6CisgICAgICAgIChXZWJDb3JlOjpNYXNrSW1hZ2VPcGVy
YXRpb246OnJlbW92ZVJlbmRlcmVySW1hZ2VDbGllbnQpOgorICAgICAgICAoV2ViQ29yZTo6TWFz
a0ltYWdlT3BlcmF0aW9uOjpnZXRPckNyZWF0ZUNhY2hlZFNWR0RvY3VtZW50UmVmZXJlbmNlKToK
KyAgICAgICAgKFdlYkNvcmU6Ok1hc2tJbWFnZU9wZXJhdGlvbjo6bm90aWZ5RmluaXNoZWQpOiBU
aGlzIGlzIHRoZSBtZXRob2QgdGhhdCBnZXRzIGNhbGxlZCB3aGVuIHRoZSBkb2N1bWVudCBoYXMg
ZmluaXNoZWQgCisgICAgICAgIGRvd25sb2FkaW5nIGFuZCBjaGVja3MgaWYgaXQgY2FuIGZpbmQg
YSB2YWxpZCA8bWFzaz4gZWxlbWVudC4KKyAgICAgICAgKFdlYkNvcmU6Ok1hc2tJbWFnZU9wZXJh
dGlvbjo6ZHJhd01hc2spOgorICAgICAgICAoV2ViQ29yZTo6TWFza0ltYWdlT3BlcmF0aW9uOjpn
ZXRTVkdNYXNrZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL01hc2tJbWFnZU9wZXJh
dGlvbi5oOiBBZGRlZC4KKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3Qu
Y3BwOiBUaGUgQmFja2dyb3VuZEltYWdlR2VvbWV0cnkgY2xhc3Mgd2FzIG1vdmVkIG91dCBvZiBS
ZW5kZXJCb3hNb2RlbE9iamVjdCBpbiAKKyAgICAgICAgb3JkZXIgdG8gYmUgdXNlZCBhcyBhIHBh
cmFtZXRlciBmb3Igb3RoZXIgbWV0aG9kcy4gVGhpcyB3YXMgbmVjZXNzYXJ5IHRvIGF2b2lkIGhh
dmluZyBtZXRob2RzIHdpdGggdmVyeSBtYW55IHBhcmFtZXRlcnMuCisgICAgICAgIChXZWJDb3Jl
OjpCYWNrZ3JvdW5kSW1hZ2VHZW9tZXRyeTo6c2V0Tm9SZXBlYXRYKToKKyAgICAgICAgKFdlYkNv
cmU6OkJhY2tncm91bmRJbWFnZUdlb21ldHJ5OjpzZXROb1JlcGVhdFkpOgorICAgICAgICAoV2Vi
Q29yZTo6QmFja2dyb3VuZEltYWdlR2VvbWV0cnk6OnVzZUZpeGVkQXR0YWNobWVudCk6CisgICAg
ICAgIChXZWJDb3JlOjpCYWNrZ3JvdW5kSW1hZ2VHZW9tZXRyeTo6Y2xpcCk6CisgICAgICAgIChX
ZWJDb3JlOjpCYWNrZ3JvdW5kSW1hZ2VHZW9tZXRyeTo6cmVsYXRpdmVQaGFzZSk6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJCb3hNb2RlbE9iamVjdDo6QmFja2dyb3VuZEltYWdlR2VvbWV0cnk6
OnNldE5vUmVwZWF0WCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3hNb2Rl
bE9iamVjdDo6QmFja2dyb3VuZEltYWdlR2VvbWV0cnk6OnNldE5vUmVwZWF0WSk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3hNb2RlbE9iamVjdDo6QmFja2dyb3VuZEltYWdl
R2VvbWV0cnk6OnVzZUZpeGVkQXR0YWNobWVudCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJCb3hNb2RlbE9iamVjdDo6QmFja2dyb3VuZEltYWdlR2VvbWV0cnk6OmNsaXApOiBE
ZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94TW9kZWxPYmplY3Q6OkJhY2tncm91
bmRJbWFnZUdlb21ldHJ5OjpyZWxhdGl2ZVBoYXNlKTogRGVsZXRlZC4KKyAgICAgICAgKiByZW5k
ZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuaDoKKyAgICAgICAgKFdlYkNvcmU6OkJhY2tncm91
bmRJbWFnZUdlb21ldHJ5OjpCYWNrZ3JvdW5kSW1hZ2VHZW9tZXRyeSk6CisgICAgICAgIChXZWJD
b3JlOjpCYWNrZ3JvdW5kSW1hZ2VHZW9tZXRyeTo6ZGVzdE9yaWdpbik6CisgICAgICAgIChXZWJD
b3JlOjpCYWNrZ3JvdW5kSW1hZ2VHZW9tZXRyeTo6c2V0RGVzdE9yaWdpbik6CisgICAgICAgIChX
ZWJDb3JlOjpCYWNrZ3JvdW5kSW1hZ2VHZW9tZXRyeTo6ZGVzdFJlY3QpOgorICAgICAgICAoV2Vi
Q29yZTo6QmFja2dyb3VuZEltYWdlR2VvbWV0cnk6OnNldERlc3RSZWN0KToKKyAgICAgICAgKFdl
YkNvcmU6OkJhY2tncm91bmRJbWFnZUdlb21ldHJ5OjpwaGFzZSk6CisgICAgICAgIChXZWJDb3Jl
OjpCYWNrZ3JvdW5kSW1hZ2VHZW9tZXRyeTo6c2V0UGhhc2UpOgorICAgICAgICAoV2ViQ29yZTo6
QmFja2dyb3VuZEltYWdlR2VvbWV0cnk6OnRpbGVTaXplKToKKyAgICAgICAgKFdlYkNvcmU6OkJh
Y2tncm91bmRJbWFnZUdlb21ldHJ5OjpzZXRUaWxlU2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpC
YWNrZ3JvdW5kSW1hZ2VHZW9tZXRyeTo6c3BhY2VTaXplKToKKyAgICAgICAgKFdlYkNvcmU6OkJh
Y2tncm91bmRJbWFnZUdlb21ldHJ5OjpzZXRTcGFjZVNpemUpOgorICAgICAgICAoV2ViQ29yZTo6
QmFja2dyb3VuZEltYWdlR2VvbWV0cnk6OnNldFBoYXNlWCk6CisgICAgICAgIChXZWJDb3JlOjpC
YWNrZ3JvdW5kSW1hZ2VHZW9tZXRyeTo6c2V0UGhhc2VZKToKKyAgICAgICAgKFdlYkNvcmU6OkJh
Y2tncm91bmRJbWFnZUdlb21ldHJ5OjpzZXRIYXNOb25Mb2NhbEdlb21ldHJ5KToKKyAgICAgICAg
KFdlYkNvcmU6OkJhY2tncm91bmRJbWFnZUdlb21ldHJ5OjpoYXNOb25Mb2NhbEdlb21ldHJ5KToK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveE1vZGVsT2JqZWN0OjpCYWNrZ3JvdW5kSW1hZ2VH
ZW9tZXRyeTo6QmFja2dyb3VuZEltYWdlR2VvbWV0cnkpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyQm94TW9kZWxPYmplY3Q6OkJhY2tncm91bmRJbWFnZUdlb21ldHJ5OjpkZXN0
T3JpZ2luKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveE1vZGVsT2JqZWN0
OjpCYWNrZ3JvdW5kSW1hZ2VHZW9tZXRyeTo6c2V0RGVzdE9yaWdpbik6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJCb3hNb2RlbE9iamVjdDo6QmFja2dyb3VuZEltYWdlR2VvbWV0
cnk6OmRlc3RSZWN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveE1vZGVs
T2JqZWN0OjpCYWNrZ3JvdW5kSW1hZ2VHZW9tZXRyeTo6c2V0RGVzdFJlY3QpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94TW9kZWxPYmplY3Q6OkJhY2tncm91bmRJbWFnZUdl
b21ldHJ5OjpwaGFzZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3hNb2Rl
bE9iamVjdDo6QmFja2dyb3VuZEltYWdlR2VvbWV0cnk6OnNldFBoYXNlKTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlckJveE1vZGVsT2JqZWN0OjpCYWNrZ3JvdW5kSW1hZ2VHZW9t
ZXRyeTo6dGlsZVNpemUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94TW9k
ZWxPYmplY3Q6OkJhY2tncm91bmRJbWFnZUdlb21ldHJ5OjpzZXRUaWxlU2l6ZSk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3hNb2RlbE9iamVjdDo6QmFja2dyb3VuZEltYWdl
R2VvbWV0cnk6OnNwYWNlU2l6ZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJC
b3hNb2RlbE9iamVjdDo6QmFja2dyb3VuZEltYWdlR2VvbWV0cnk6OnNldFNwYWNlU2l6ZSk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3hNb2RlbE9iamVjdDo6QmFja2dyb3Vu
ZEltYWdlR2VvbWV0cnk6OnNldFBoYXNlWCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJCb3hNb2RlbE9iamVjdDo6QmFja2dyb3VuZEltYWdlR2VvbWV0cnk6OnNldFBoYXNlWSk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3hNb2RlbE9iamVjdDo6QmFja2dy
b3VuZEltYWdlR2VvbWV0cnk6OnNldEhhc05vbkxvY2FsR2VvbWV0cnkpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyQm94TW9kZWxPYmplY3Q6OkJhY2tncm91bmRJbWFnZUdlb21l
dHJ5OjpoYXNOb25Mb2NhbEdlb21ldHJ5KTogRGVsZXRlZC4KKyAgICAgICAgKiByZW5kZXJpbmcv
UmVuZGVyTGF5ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OlJlbmRlckxh
eWVyKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjp+UmVuZGVyTGF5ZXIpOgorICAg
ICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXllci5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5k
ZXJMYXllck1hc2tJbWFnZUluZm8uY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
ckxheWVyOjpNYXNrSW1hZ2VJbmZvOjpsYXllclRvTWFza01hcCk6IFJldHVybnMgYSBzdGF0aWMg
bWFwIHRoYXQgbGlua3MgTWFza0ltYWdlSW5mbyBvYmplY3RzIHRvIFJlbmRlckxheWVycy4KKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjpNYXNrSW1hZ2VJbmZvOjpnZXRJZkV4aXN0cyk6
IFJldHVybnMgdGhlIE1hc2tJbWFnZUluZm8gYXNzb2NpYXRlZCB3aXRoIGEgc3BlY2lmaWMgUmVu
ZGVyTGF5ZXIuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6TWFza0ltYWdlSW5mbzo6
Z2V0KTogUmV0dXJucyB0aGUgTWFza0ltYWdlSW5mbyBhc3NvY2lhdGVkIHdpdGggYSBzcGVjaWZp
YyBSZW5kZXJMYXllciAoY3JlYXRlcyBpdCBpZiBuZWNlc3NhcnkpLgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyTGF5ZXI6Ok1hc2tJbWFnZUluZm86OnJlbW92ZSk6IFJlbW92ZXMgdGhlIE1hc2tJ
bWFnZUluZm8gYXNzb2NpYXRlZCB3aXRoIGEgc3BlY2lmaWMgUmVuZGVyTGF5ZXIuCisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJMYXllcjo6TWFza0ltYWdlSW5mbzo6TWFza0ltYWdlSW5mbyk6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6TWFza0ltYWdlSW5mbzo6fk1hc2tJbWFnZUlu
Zm8pOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6Ok1hc2tJbWFnZUluZm86Om5vdGlm
eUZpbmlzaGVkKTogR2V0cyBjYWxsZWQgd2hlbiB0aGUgU1ZHIGRvY3VtZW50IGZpbmlzaGVkIGxv
YWRpbmcsIHRyaWdnZXJzIHJlcGFpbnQuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6
TWFza0ltYWdlSW5mbzo6aW1hZ2VDaGFuZ2VkKTogR2V0cyBjYWxsZWQgd2hlbiB0aGUgaW1hZ2Ug
b2JqZWN0IGNoYW5nZWQsIHRyaWdnZXJzIHJlcGFpbnQuCisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJMYXllcjo6TWFza0ltYWdlSW5mbzo6dXBkYXRlTWFza0ltYWdlQ2xpZW50cyk6IEdvZXMgdGhy
b3VnaCBhbGwgbWFzayBsYXllcnMgYW5kIHNldHMgaW1hZ2UvU1ZHIGNsaWVudHMuIAorICAgICAg
ICBVcGRhdGVzIGxpc3Qgb2YgaW50ZXJuYWwgYW5kIGV4dGVybmFsIFNWRyByZWZlcmVuY2VzLgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6Ok1hc2tJbWFnZUluZm86OnJlbW92ZU1hc2tJ
bWFnZUNsaWVudHMpOiBSZW1vdmVzIGFsbCBpbWFnZS9TVkcgY2xpZW50cyBhbmQgY2xlYXJzIGxp
c3RzIG9mIGludGVybmFsIGFuZCBleHRlcm5hbCBTVkcgcmVmZXJlbmNlcy4KKyAgICAgICAgKiBy
ZW5kZXJpbmcvUmVuZGVyTGF5ZXJNYXNrSW1hZ2VJbmZvLmg6IEFkZGVkLgorICAgICAgICAqIHJl
bmRlcmluZy9SZW5kZXJPYmplY3QuaDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck9iamVjdDo6
aXNSZW5kZXJTVkdSZXNvdXJjZU1hc2tlcik6CisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL0Zp
bGxMYXllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGaWxsTGF5ZXI6OkZpbGxMYXllcik6Cisg
ICAgICAgIChXZWJDb3JlOjpGaWxsTGF5ZXI6Om9wZXJhdG9yPSk6CisgICAgICAgIChXZWJDb3Jl
OjpGaWxsTGF5ZXI6Om9wZXJhdG9yPT0pOgorICAgICAgICAoV2ViQ29yZTo6RmlsbExheWVyOjpj
dWxsRW1wdHlMYXllcnMpOgorICAgICAgICAoV2ViQ29yZTo6RmlsbExheWVyOjpoYXNOb25FbXB0
eU1hc2tJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpGaWxsTGF5ZXI6OmltYWdlc0FyZUxvYWRl
ZCk6CisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL0ZpbGxMYXllci5oOgorICAgICAgICAoV2Vi
Q29yZTo6RmlsbExheWVyOjptYXNrSW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6RmlsbExheWVy
OjppbWFnZU9yTWFza0ltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkZpbGxMYXllcjo6c2V0TWFz
a0ltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkZpbGxMYXllcjo6Y2xlYXJNYXNrSW1hZ2UpOgor
ICAgICAgICAoV2ViQ29yZTo6RmlsbExheWVyOjpoYXNNYXNrSW1hZ2UpOgorICAgICAgICAqIHJl
bmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VNYXNrZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyU1ZHUmVzb3VyY2VNYXNrZXI6OmFwcGx5U1ZHTWFzayk6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJTVkdSZXNvdXJjZU1hc2tlcjo6YXBwbHlSZXNvdXJjZSk6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJTVkdSZXNvdXJjZU1hc2tlcjo6ZHJhd01hc2tGb3JSZW5kZXJlcik6Cisg
ICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZU1hc2tlci5oOgorICAgICAg
ICAqIHN2Zy9TVkdNYXNrRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdNYXNrRWxl
bWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR01hc2tF
bGVtZW50OjphZGRDbGllbnRSZW5kZXJMYXllcik6CisgICAgICAgIChXZWJDb3JlOjpTVkdNYXNr
RWxlbWVudDo6cmVtb3ZlQ2xpZW50UmVuZGVyTGF5ZXIpOgorICAgICAgICAqIHN2Zy9TVkdNYXNr
RWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdVc2VFbGVtZW50LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlNWR1VzZUVsZW1lbnQ6OnNldENhY2hlZERvY3VtZW50KToKKyAgICAgICAgKiBzdmcv
Z3JhcGhpY3MvU1ZHSW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHSW1hZ2U6OmRhdGFD
aGFuZ2VkKToKKwogMjAxNC0xMi0wMyAgSm9vbmdodW4gUGFyayAgPGpoNzE4LnBhcmtAc2Ftc3Vu
Zy5jb20+CiAKICAgICAgICAgVXNlIHN0ZDo6dW5pcXVlX3B0ciBpbnN0ZWFkIG9mIFBhc3NPd25Q
dHJ8T3duUHRyIGZvciBQYXN0ZWJvYXJkCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hw
cm9qL1dlYkNvcmUudmN4cHJvagppbmRleCA0MTUyN2EwLi44NDJlYjE0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2oKQEAgLTc0OSw2ICs3NDks
NyBAQAogICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlv
bil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxk
PgogICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8
JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KICAg
ICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGNzc1xXZWJLaXRDU1NS
ZXNvdXJjZVZhbHVlLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXERlcml2ZWRT
b3VyY2VzLmNwcCI+CiAgICAgICA8UHJlY29tcGlsZWRIZWFkZXIgQ29uZGl0aW9uPSInJChDb25m
aWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPgogICAgICAgPC9QcmVjb21w
aWxlZEhlYWRlcj4KQEAgLTc1ODIsNiArNzU4Myw3IEBACiAgICAgICA8RXhjbHVkZWRGcm9tQnVp
bGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQcm9kdWN0aW9u
fFdpbjMyJyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CiAgICAgICA8RXhjbHVkZWRGcm9tQnVp
bGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQcm9kdWN0aW9u
fHg2NCciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgogICAgIDwvQ2xDb21waWxlPgorICAgIDxD
bENvbXBpbGUgSW5jbHVkZT0iLi5ccGxhdGZvcm1cZ3JhcGhpY3NcTWFza0ltYWdlT3BlcmF0aW9u
LmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXGdyYXBoaWNzXE9w
ZW5HTFNoaW1zLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXGdy
YXBoaWNzXG9wZW5nbFxFeHRlbnNpb25zM0RPcGVuR0wuY3BwIiAvPgogICAgIDxDbENvbXBpbGUg
SW5jbHVkZT0iLi5ccGxhdGZvcm1cZ3JhcGhpY3Ncb3BlbmdsXEV4dGVuc2lvbnMzRE9wZW5HTENv
bW1vbi5jcHAiIC8+CkBAIC03OTUwLDYgKzc5NTIsNyBAQAogICAgICAgPEV4Y2x1ZGVkRnJvbUJ1
aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUHJvZHVjdGlv
bnxXaW4zMiciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgogICAgICAgPEV4Y2x1ZGVkRnJvbUJ1
aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUHJvZHVjdGlv
bnx4NjQnIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KICAgICA8L0NsQ29tcGlsZT4KKyAgICA8
Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJlbmRlcmluZ1xSZW5kZXJMYXllck1hc2tJbWFnZUluZm8u
Y3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccmVuZGVyaW5nXHN0eWxlXFN0eWxl
Q2FjaGVkSW1hZ2VTZXQuY3BwIj4KICAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249
IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnU3VmZml4fFdpbjMyJyI+dHJ1
ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CiAgICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9u
PSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z1N1ZmZpeHx4NjQnIj50cnVl
PC9FeGNsdWRlZEZyb21CdWlsZD4KQEAgLTE4ODUxLDYgKzE4ODU0LDcgQEAKICAgICA8Q2xJbmNs
dWRlIEluY2x1ZGU9IiQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmokKFBsYXRmb3JtQXJjaGl0
ZWN0dXJlKVwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xKU1ZUVFJlZ2lvbkxpc3QuaCIg
Lz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGFjY2Vzc2liaWxpdHlcQWNjZXNzaWJpbGl0
eU5vZGVPYmplY3QuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGNzc1xDU1NJbWFn
ZVNldFZhbHVlLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxjc3NcV2ViS2l0Q1NT
UmVzb3VyY2VWYWx1ZS5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cRm9yd2FyZGlu
Z0hlYWRlcnNcYmluZGluZ3NcU2NyaXB0RnVuY3Rpb25DYWxsLmgiIC8+CiAgICAgPENsSW5jbHVk
ZSBJbmNsdWRlPSIuLlxGb3J3YXJkaW5nSGVhZGVyc1xiaW5kaW5nc1xTY3JpcHRPYmplY3QuaCIg
Lz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXEZvcndhcmRpbmdIZWFkZXJzXGJpbmRpbmdz
XFNjcmlwdFZhbHVlLmgiIC8+CkBAIC0xOTQwNyw2ICsxOTQxMSw3IEBACiAgICAgPENsSW5jbHVk
ZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxncmFwaGljc1xnc3RyZWFtZXJcVmlkZW9TaW5rR1N0cmVh
bWVyLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxncmFwaGljc1xn
c3RyZWFtZXJcVmlkZW9UcmFja1ByaXZhdGVHU3RyZWFtZXIuaCIgLz4KICAgICA8Q2xJbmNsdWRl
IEluY2x1ZGU9Ii4uXHBsYXRmb3JtXGdyYXBoaWNzXGdzdHJlYW1lclxXZWJLaXRXZWJTb3VyY2VH
U3RyZWFtZXIuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXGdyYXBo
aWNzXE1hc2tJbWFnZU9wZXJhdGlvbi5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5c
cGxhdGZvcm1cZ3JhcGhpY3NcTWVkaWFQbGF5ZXJQcml2YXRlLmgiIC8+CiAgICAgPENsSW5jbHVk
ZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxncmFwaGljc1xPcGVuR0xTaGltcy5oIiAvPgogICAgIDxD
bEluY2x1ZGUgSW5jbHVkZT0iLi5ccGxhdGZvcm1cZ3JhcGhpY3Ncb3BlbmdsXEV4dGVuc2lvbnMz
RE9wZW5HTC5oIiAvPgpAQCAtMTk1MzgsNiArMTk1NDMsNyBAQAogICAgIDxDbEluY2x1ZGUgSW5j
bHVkZT0iLi5ccGxhdGZvcm1cd2luXFdlYkNvcmVCdW5kbGVXaW4uaCIgLz4KICAgICA8Q2xJbmNs
dWRlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXHdpblxXZWJDb3JlSW5zdGFuY2VIYW5kbGUuaCIgLz4K
ICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJlbmRlcmluZ1xIaXRUZXN0TG9jYXRpb24uaCIg
Lz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJlbmRlcmluZ1xSZW5kZXJMYXllck1hc2tJ
bWFnZUluZm8uaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJlbmRlcmluZ1xzdHls
ZVxTdHlsZUNhY2hlZEltYWdlU2V0LmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxz
dG9yYWdlXFN0b3JhZ2VTdHJhdGVneS5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5c
c3ZnXGdyYXBoaWNzXFNWR0ltYWdlRm9yQ29udGFpbmVyLmgiIC8+CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qLmZpbHRlcnMgYi9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qLmZpbHRlcnMKaW5kZXgg
OGM1YTNmYS4uOWRkMjQ5MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hw
cm9qL1dlYkNvcmUudmN4cHJvai5maWx0ZXJzCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
dmN4cHJvai9XZWJDb3JlLnZjeHByb2ouZmlsdGVycwpAQCAtNzI1Miw2ICs3MjUyLDE1IEBACiAg
ICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxlZGl0aW5nXHdpblxFZGl0b3JXaW4uY3BwIj4KICAg
ICAgIDxGaWx0ZXI+ZWRpdGluZzwvRmlsdGVyPgogICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENv
bXBpbGUgSW5jbHVkZT0iLi5ccGxhdGZvcm1cZ3JhcGhpY3NcTWFza0ltYWdlT3BlcmF0aW9uLmNw
cCI+CisgICAgICA8RmlsdGVyPnBsYXRmb3JtXGdyYXBoaWNzPC9GaWx0ZXI+CisgICAgPC9DbENv
bXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxyZW5kZXJpbmdcUmVuZGVyTGF5ZXJN
YXNrSW1hZ2VJbmZvLmNwcCI+CisgICAgICA8RmlsdGVyPnJlbmRlcmluZzwvRmlsdGVyPgorICAg
IDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cY3NzXFdlYktpdENTU1Jl
c291cmNlVmFsdWUuY3BwIj4KKyAgICAgIDxGaWx0ZXI+Y3NzPC9GaWx0ZXI+CisgICAgPC9DbENv
bXBpbGU+CiAgIDwvSXRlbUdyb3VwPgogICA8SXRlbUdyb3VwPgogICAgIDxDbEluY2x1ZGUgSW5j
bHVkZT0iLi5cTW9kdWxlc1xnZW9sb2NhdGlvblxDb29yZGluYXRlcy5oIj4KQEAgLTE1MjQyLDYg
KzE1MjUxLDE1IEBACiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxncmFwaGlj
c1xhdmZvdW5kYXRpb25cTWVkaWFUaW1lQVZGb3VuZGF0aW9uLmgiPgogICAgICAgPEZpbHRlcj5w
bGF0Zm9ybVxncmFwaGljc1xhdmZvdW5kYXRpb248L0ZpbHRlcj4KICAgICA8L0NsSW5jbHVkZT4K
KyAgICAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxncmFwaGljc1xNYXNrSW1h
Z2VPcGVyYXRpb24uaCI+CisgICAgICA8RmlsdGVyPnBsYXRmb3JtXGdyYXBoaWNzPC9GaWx0ZXI+
CisgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxyZW5kZXJpbmdc
UmVuZGVyTGF5ZXJNYXNrSW1hZ2VJbmZvLmgiPgorICAgICAgPEZpbHRlcj5yZW5kZXJpbmc8L0Zp
bHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGNzc1xX
ZWJLaXRDU1NSZXNvdXJjZVZhbHVlLmgiPgorICAgICAgPEZpbHRlcj5jc3M8L0ZpbHRlcj4KKyAg
ICA8L0NsSW5jbHVkZT4KICAgPC9JdGVtR3JvdXA+CiAgIDxJdGVtR3JvdXA+CiAgICAgPE5vbmUg
SW5jbHVkZT0iLi5cY3NzXENTU0dyYW1tYXIueS5pbiI+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggY2FmNDRiMy4uZTM4YzM0MCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agpAQCAtMjIzNiw4ICsyMjM2LDE0IEBACiAJCTY1RkQ0NjY2MTlCNTk2RjYwMDFFMkI0RCAvKiBX
ZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVudC5tbSBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDY1ODZGRTNEMTlCNTQ4QkQwMDVDM0M4MiAvKiBX
ZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVudC5tbSAqLzsgfTsKIAkJNjVGRUE4Njkw
OTgzM0FERTAwQkVENEFCIC8qIFBhZ2UuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNjVGRUE4NjgwOTgzM0FERTAwQkVENEFCIC8qIFBhZ2UuY3BwICov
OyB9OwogCQk2QjM0ODA5NDBFRUY1MEQ0MDBBQzFCNDEgLyogTmF0aXZlSW1hZ2VQdHIuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZCMzQ4MDkyMEVFRjUw
RDQwMEFDMUI0MSAvKiBOYXRpdmVJbWFnZVB0ci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CisJCTZDNTY4Q0IwMTlEQUZFQTAwMDQzMENBMiAvKiBNYXNr
SW1hZ2VPcGVyYXRpb24uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNkM1NjhDQUUxOURBRkVBMDAwNDMwQ0EyIC8qIE1hc2tJbWFnZU9wZXJhdGlvbi5j
cHAgKi87IH07CisJCTZDNTY4Q0IxMTlEQUZFQTAwMDQzMENBMiAvKiBNYXNrSW1hZ2VPcGVyYXRp
b24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZDNTY4
Q0FGMTlEQUZFQTAwMDQzMENBMiAvKiBNYXNrSW1hZ2VPcGVyYXRpb24uaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk2QzYzODg5NUE5NkNDRUU1MEM4
Qzk0NkMgLyogQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0SW5pdGlhdG9ycy5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkM2Mzg4OTNBOTZDQ0VFNTBDOEM5NDZD
IC8qIENhY2hlZFJlc291cmNlUmVxdWVzdEluaXRpYXRvcnMuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk2QzYzODg5NkE5NkNDRUU1MEM4Qzk0NkMg
LyogQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0SW5pdGlhdG9ycy5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2QzYzODg5NEE5NkNDRUU1MEM4Qzk0NkMgLyog
Q2FjaGVkUmVzb3VyY2VSZXF1ZXN0SW5pdGlhdG9ycy5jcHAgKi87IH07CisJCTZDNkNDQUIwMTlE
QzQyQjkwMDQzRDVEQiAvKiBXZWJLaXRDU1NSZXNvdXJjZVZhbHVlLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZDNkNDQUFFMTlEQzQyQjkwMDQzRDVE
QiAvKiBXZWJLaXRDU1NSZXNvdXJjZVZhbHVlLmNwcCAqLzsgfTsKKwkJNkM2Q0NBQjExOURDNDJC
OTAwNDNENURCIC8qIFdlYktpdENTU1Jlc291cmNlVmFsdWUuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZDNkNDQUFGMTlEQzQyQjkwMDQzRDVEQiAvKiBX
ZWJLaXRDU1NSZXNvdXJjZVZhbHVlLmggKi87IH07CisJCTZDQkZFNEE0MTlFQkYyRDQwMENBMkY5
RCAvKiBSZW5kZXJMYXllck1hc2tJbWFnZUluZm8uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkNCRkU0QTIxOUVCRjJENDAwQ0EyRjlEIC8qIFJlbmRl
ckxheWVyTWFza0ltYWdlSW5mby5jcHAgKi87IH07CisJCTZDQkZFNEE1MTlFQkYyRDQwMENBMkY5
RCAvKiBSZW5kZXJMYXllck1hc2tJbWFnZUluZm8uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZDQkZFNEEzMTlFQkYyRDQwMENBMkY5RCAvKiBSZW5kZXJM
YXllck1hc2tJbWFnZUluZm8uaCAqLzsgfTsKIAkJNkNEREU4RDAxNzcwQkIyMjAwMTZFMDcyIC8q
IFJlZ2lvbk92ZXJzZXRTdGF0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNkM3MEE4MTQxNzcwN0M0OTAwOUE0NDZFIC8qIFJlZ2lvbk92ZXJzZXRTdGF0
ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTZF
MEU1NjlCMTgzQkZGRTYwMEUwRThENSAvKiBGbG9hdFJvdW5kZWRSZWN0LmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZFMEU1Njk5MTgzQkZGRTYwMEUw
RThENSAvKiBGbG9hdFJvdW5kZWRSZWN0LmNwcCAqLzsgfTsKIAkJNkUwRTU2OUMxODNCRkZFNjAw
RTBFOEQ1IC8qIEZsb2F0Um91bmRlZFJlY3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDZFMEU1NjlBMTgzQkZGRTYwMEUwRThENSAvKiBGbG9hdFJvdW5k
ZWRSZWN0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
QEAgLTk0MDEsOSArOTQwNywxNSBAQAogCQk2NUY4MDY5NzA1NEQ5Rjg2MDA4QkY3NzYgLyogQmxv
Y2tFeGNlcHRpb25zLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDMwOyBpbmRlbnRXaWR0aCA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAub2JqY3BwOyBwYXRoID0gQmxvY2tFeGNlcHRpb25zLm1tOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB0YWJXaWR0aCA9IDg7IHVzZXNUYWJzID0gMDsgfTsKIAkJNjVGRUE4NjgwOTgzM0FERTAw
QkVENEFCIC8qIFBhZ2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IFBhZ2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk2QjM0ODA5MjBFRUY1MEQ0
MDBBQzFCNDEgLyogTmF0aXZlSW1hZ2VQdHIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IE5hdGl2ZUltYWdlUHRyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTZD
NTY4Q0FFMTlEQUZFQTAwMDQzMENBMiAvKiBNYXNrSW1hZ2VPcGVyYXRpb24uY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTWFza0ltYWdlT3BlcmF0aW9uLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNkM1NjhDQUYxOURBRkVBMDAwNDMwQ0EyIC8qIE1h
c2tJbWFnZU9wZXJhdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNYXNr
SW1hZ2VPcGVyYXRpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNkM2Mzg4OTNB
OTZDQ0VFNTBDOEM5NDZDIC8qIENhY2hlZFJlc291cmNlUmVxdWVzdEluaXRpYXRvcnMuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENhY2hlZFJlc291cmNlUmVxdWVzdEluaXRp
YXRvcnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNkM2Mzg4OTRBOTZDQ0VFNTBD
OEM5NDZDIC8qIENhY2hlZFJlc291cmNlUmVxdWVzdEluaXRpYXRvcnMuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENhY2hlZFJlc291cmNlUmVxdWVzdEluaXRpYXRv
cnMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk2QzZDQ0FBRTE5REM0MkI5MDA0
M0Q1REIgLyogV2ViS2l0Q1NTUmVzb3VyY2VWYWx1ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBXZWJLaXRDU1NSZXNvdXJjZVZhbHVlLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJNkM2Q0NBQUYxOURDNDJCOTAwNDNENURCIC8qIFdlYktpdENTU1Jl
c291cmNlVmFsdWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViS2l0Q1NT
UmVzb3VyY2VWYWx1ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk2QzcwQTgxNDE3
NzA3QzQ5MDA5QTQ0NkUgLyogUmVnaW9uT3ZlcnNldFN0YXRlLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFJlZ2lvbk92ZXJzZXRTdGF0ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQk2Q0JGRTRBMjE5RUJGMkQ0MDBDQTJGOUQgLyogUmVuZGVyTGF5ZXJNYXNrSW1h
Z2VJbmZvLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlbmRlckxh
eWVyTWFza0ltYWdlSW5mby5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTZDQkZF
NEEzMTlFQkYyRDQwMENBMkY5RCAvKiBSZW5kZXJMYXllck1hc2tJbWFnZUluZm8uaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVuZGVyTGF5ZXJNYXNrSW1hZ2VJbmZvLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTZFMEU1Njk5MTgzQkZGRTYwMEUwRThENSAvKiBG
bG9hdFJvdW5kZWRSZWN0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IEZsb2F0Um91bmRlZFJlY3QuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk2RTBF
NTY5QTE4M0JGRkU2MDBFMEU4RDUgLyogRmxvYXRSb3VuZGVkUmVjdC5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBGbG9hdFJvdW5kZWRSZWN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTZFMjFDNkJGMTEyNjMzODUwMEE3QkUwMiAvKiBHcmFwaGljc0NvbnRleHQz
RC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBHcmFwaGljc0NvbnRl
eHQzRC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yMDU4OCw2ICsyMDYwMCw4
IEBACiAJCQkJMTQxREMwNEMxNjQ4MzRCOTAwMzcxRTVBIC8qIExheW91dFJlY3QuY3BwICovLAog
CQkJCTE0MURDMDREMTY0ODM0QjkwMDM3MUU1QSAvKiBMYXlvdXRSZWN0LmggKi8sCiAJCQkJMTQx
REMwNEUxNjQ4MzRCOTAwMzcxRTVBIC8qIExheW91dFNpemUuaCAqLywKKwkJCQk2QzU2OENBRTE5
REFGRUEwMDA0MzBDQTIgLyogTWFza0ltYWdlT3BlcmF0aW9uLmNwcCAqLywKKwkJCQk2QzU2OENB
RjE5REFGRUEwMDA0MzBDQTIgLyogTWFza0ltYWdlT3BlcmF0aW9uLmggKi8sCiAJCQkJRTRCNDFF
MEMwQ0JGOTBCRDAwQUYyRUNFIC8qIE1lZGlhUGxheWVyLmNwcCAqLywKIAkJCQlFNEI0MUUwRDBD
QkY5MEJEMDBBRjJFQ0UgLyogTWVkaWFQbGF5ZXIuaCAqLywKIAkJCQkwNzlGNUU0QjBGM0JFQkVB
MDA1RTA3ODIgLyogTWVkaWFQbGF5ZXJQcml2YXRlLmggKi8sCkBAIC0yMjI5Myw2ICsyMjMwNyw4
IEBACiAJCQkJMzEwNjAzNkMxNDMyN0QyRTAwQUJGNEJBIC8qIFdlYktpdENTU0ZpbHRlclZhbHVl
LmNwcCAqLywKIAkJCQkzMTA2MDM2RDE0MzI3RDJFMDBBQkY0QkEgLyogV2ViS2l0Q1NTRmlsdGVy
VmFsdWUuaCAqLywKIAkJCQkzMTA2MDM2RTE0MzI3RDJFMDBBQkY0QkEgLyogV2ViS2l0Q1NTRmls
dGVyVmFsdWUuaWRsICovLAorCQkJCTZDNkNDQUFFMTlEQzQyQjkwMDQzRDVEQiAvKiBXZWJLaXRD
U1NSZXNvdXJjZVZhbHVlLmNwcCAqLywKKwkJCQk2QzZDQ0FBRjE5REM0MkI5MDA0M0Q1REIgLyog
V2ViS2l0Q1NTUmVzb3VyY2VWYWx1ZS5oICovLAogCQkJCTMxMjg4RTZFMEUzMDA1RDYwMDM2MTlB
RSAvKiBDU1NLZXlmcmFtZVJ1bGUuY3BwICovLAogCQkJCTMxMjg4RTZGMEUzMDA1RDYwMDM2MTlB
RSAvKiBDU1NLZXlmcmFtZVJ1bGUuaCAqLywKIAkJCQkzMTZGRTA5MTBFNkNDRDdGMDBCRjYwODgg
LyogQ1NTS2V5ZnJhbWVSdWxlLmlkbCAqLywKQEAgLTIyNDQ3LDYgKzIyNDYzLDggQEAKIAkJCQkw
RjU4MENGOTBGMTJERTlCMDA1MUQ2ODkgLyogUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmggKi8sCiAJ
CQkJNTBEMTBEOTcxNTQ1RjU3NjAwOTZEMjg4IC8qIFJlbmRlckxheWVyRmlsdGVySW5mby5jcHAg
Ki8sCiAJCQkJNTBEMTBEOTgxNTQ1RjU3NjAwOTZEMjg4IC8qIFJlbmRlckxheWVyRmlsdGVySW5m
by5oICovLAorCQkJCTZDQkZFNEEyMTlFQkYyRDQwMENBMkY5RCAvKiBSZW5kZXJMYXllck1hc2tJ
bWFnZUluZm8uY3BwICovLAorCQkJCTZDQkZFNEEzMTlFQkYyRDQwMENBMkY5RCAvKiBSZW5kZXJM
YXllck1hc2tJbWFnZUluZm8uaCAqLywKIAkJCQkzQzI0NEZFNUEzNzVBQzYzM0Y4OEJFNkYgLyog
UmVuZGVyTGF5ZXJNb2RlbE9iamVjdC5jcHAgKi8sCiAJCQkJM0MyNDRGRTRBMzc1QUM2MzNGODhC
RTZGIC8qIFJlbmRlckxheWVyTW9kZWxPYmplY3QuaCAqLywKIAkJCQlCQzMzRkIxQTBGMzBFRTg1
MDAyQ0REN0MgLyogUmVuZGVyTGluZUJveExpc3QuY3BwICovLApAQCAtMjM0MzAsNiArMjM0NDgs
NyBAQAogCQkJCTMxNkZFMTE0MEU2RTFEQTcwMEJGNjA4OCAvKiBBbmltYXRpb25Db250cm9sbGVy
LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjE1REE4QTBGM0FBRUU3MDAwMENFNDcgLyogQW5pbWF0
aW9uQ29udHJvbGxlclByaXZhdGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTQ5RTkxMkFEMEVGQUM5
MDYwMDlEMENBRiAvKiBBbmltYXRpb25MaXN0LmggaW4gSGVhZGVycyAqLywKKwkJCQk2QzU2OENC
MTE5REFGRUEwMDA0MzBDQTIgLyogTWFza0ltYWdlT3BlcmF0aW9uLmggaW4gSGVhZGVycyAqLywK
IAkJCQkwRjU4MEZBRjE0OTgwMEQ0MDBGQjVCRDggLyogQW5pbWF0aW9uVXRpbGl0aWVzLmggaW4g
SGVhZGVycyAqLywKIAkJCQk5MzMwOURENzA5OUU2NDkyMDA1NkU1ODEgLyogQXBwZW5kTm9kZUNv
bW1hbmQuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBOEY2QkJEMERCNTVDREMwMDFEQjc5NCAvKiBB
cHBsaWNhdGlvbkNhY2hlLmggaW4gSGVhZGVycyAqLywKQEAgLTI1NDQyLDYgKzI1NDYxLDcgQEAK
IAkJCQlDREJFQUVBRDE5RDkyQjZDMDBCRUJBODggLyogTWVkaWFTZWxlY3Rpb25Hcm91cEFWRk9i
akMuaCBpbiBIZWFkZXJzICovLAogCQkJCTA3MEUwOTE5MTg3NUVFRkMwMDNBMUQzQyAvKiBNZWRp
YVNlc3Npb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTA3Rjk0NDE2MTg2NEQwNDYwMDVEMzFDQiAv
KiBNZWRpYVNlc3Npb25NYW5hZ2VyLmggaW4gSGVhZGVycyAqLywKKwkJCQk2Q0JGRTRBNTE5RUJG
MkQ0MDBDQTJGOUQgLyogUmVuZGVyTGF5ZXJNYXNrSW1hZ2VJbmZvLmggaW4gSGVhZGVycyAqLywK
IAkJCQkwNzYzOEE5OTE4ODQ0ODcyMDBFMTVBMUIgLyogTWVkaWFTZXNzaW9uTWFuYWdlcklPUy5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJQ0QzQTQ5NUYxN0E5RDAxQjAwMjc0RTQyIC8qIE1lZGlhU291
cmNlLmggaW4gSGVhZGVycyAqLywKIAkJCQlDRDY0MUVCMzE4MThGNUVEMDBFRTRDNDEgLyogTWVk
aWFTb3VyY2VQcml2YXRlLmggaW4gSGVhZGVycyAqLywKQEAgLTI2MDQ1LDYgKzI2MDY1LDcgQEAK
IAkJCQlDRENGQUJCRDE4QzBBRjc4MDA2Rjg0NTAgLyogU2VsZWN0aW9uU3VidHJlZVJvb3QuaCBp
biBIZWFkZXJzICovLAogCQkJCUU0NEI0QkI0MTQxNjUwRDcwMDJCMUQ4QiAvKiBTZWxlY3RvckNo
ZWNrZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTQzMkQzRkU4MThBODY1ODQwMEQ3REMwMyAvKiBT
ZWxlY3RvckNoZWNrZXJUZXN0RnVuY3Rpb25zLmggaW4gSGVhZGVycyAqLywKKwkJCQk2QzZDQ0FC
MTE5REM0MkI5MDA0M0Q1REIgLyogV2ViS2l0Q1NTUmVzb3VyY2VWYWx1ZS5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMjZCOTk5OTcxODA0RDU0MjAwRDAxMTIxIC8qIFNlbGVjdG9yQ29tcGlsZXIuaCBp
biBIZWFkZXJzICovLAogCQkJCTQxNTA3MTU4MTY4NTA2NzMwMEMzQzdCMyAvKiBTZWxlY3RvckZp
bHRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDMxMDdCRTIxOENDMTlERTAwQ0MxOEU4IC8qIFNl
bGVjdG9yUHNldWRvVHlwZU1hcC5oIGluIEhlYWRlcnMgKi8sCkBAIC0yNzc1Myw2ICsyNzc3NCw3
IEBACiAJCQkJOEExOTU5MzMxNDdFQTE2RTAwRDFFQTYxIC8qIERPTVdlYktpdE5hbWVkRmxvdy5t
bSBpbiBTb3VyY2VzICovLAogCQkJCTMxQzBGRjREMEU0Q0VGREQwMDdENkZFNSAvKiBET01XZWJL
aXRUcmFuc2l0aW9uRXZlbnQubW0gaW4gU291cmNlcyAqLywKIAkJCQk4NUM3RjVFODBBQUZCQUZC
MDA0MDE0REQgLyogRE9NV2hlZWxFdmVudC5tbSBpbiBTb3VyY2VzICovLAorCQkJCTZDNkNDQUIw
MTlEQzQyQjkwMDQzRDVEQiAvKiBXZWJLaXRDU1NSZXNvdXJjZVZhbHVlLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTE0MDNCOTk4MDlFQjEzQUYwMDc5N0M3RiAvKiBET01XaW5kb3cuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJRkQ2Nzc3MzgxOTVDQUYzRDAwNzJFMEQzIC8qIERPTVdpbmRvd0NTUy5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQk1MTdGQkExRTE1MUFCMTdDMDBCNTc5NTkgLyogRE9NV2lu
ZG93RXh0ZW5zaW9uLmNwcCBpbiBTb3VyY2VzICovLApAQCAtMjg5NzksNiArMjkwMDEsNyBAQAog
CQkJCUNEQjg1OUY3MTYwRDQ4QTQwMEU1QjA3RiAvKiBNZWRpYUtleUV2ZW50LmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCUNEQTk4REQ4MTYwMjVCRUYwMEZFQTNCMSAvKiBNZWRpYUtleU1lc3NhZ2VF
dmVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlDRDFCNEE2NTE2MDc4NkFFMDAyODJERjkgLyog
TWVkaWFLZXlOZWVkZWRFdmVudC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk2QzU2OENCMDE5REFG
RUEwMDA0MzBDQTIgLyogTWFza0ltYWdlT3BlcmF0aW9uLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CUNEQTk4RTBEMTYwM0ZFNEEwMEZFQTNCMSAvKiBNZWRpYUtleXMuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJQ0RBOThFMEUxNjAzRkU1ODAwRkVBM0IxIC8qIE1lZGlhS2V5U2Vzc2lvbi5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQlBOEVBODAwOTBBMTk1MTZFMDBBOEVGNUYgLyogTWVkaWFMaXN0LmNw
cCBpbiBTb3VyY2VzICovLApAQCAtMjkwNDcsNiArMjkwNzAsNyBAQAogCQkJCUY1NUIzREM1MTI1
MUYxMkQwMDNFRjI2OSAvKiBNb250aElucHV0VHlwZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk4
NTAzMUI0NTBBNDRFRkM3MDBGOTkyRTAgLyogTW91c2VFdmVudC5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQk5M0VCMzU1RjA5RTM3RkQ2MDBGNDM3OTkgLyogTW91c2VFdmVudFdpdGhIaXRUZXN0UmVz
dWx0cy5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk2Q0JGRTRBNDE5RUJGMkQ0MDBDQTJGOUQgLyog
UmVuZGVyTGF5ZXJNYXNrSW1hZ2VJbmZvLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTg1MDMxQjQ3
MEE0NEVGQzcwMEY5OTJFMCAvKiBNb3VzZVJlbGF0ZWRFdmVudC5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQk5MzMwOURGQjA5OUU2NDkyMDA1NkU1ODEgLyogTW92ZVNlbGVjdGlvbkNvbW1hbmQuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJRkRCMTcwMDUxNEEyQkFCMjAwQTJCNUQ5IC8qIE11bHRpQ2hh
bm5lbFJlc2FtcGxlci5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NWYWx1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFsdWUuY3BwCmlu
ZGV4IGQwMjllYzEuLmE2YzNjZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NW
YWx1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ZhbHVlLmNwcApAQCAtNTQsNiAr
NTQsNyBAQAogI2luY2x1ZGUgIlNWR0NvbG9yLmgiCiAjaW5jbHVkZSAiU1ZHUGFpbnQuaCIKICNp
bmNsdWRlICJXZWJLaXRDU1NGaWx0ZXJWYWx1ZS5oIgorI2luY2x1ZGUgIldlYktpdENTU1Jlc291
cmNlVmFsdWUuaCIKICNpbmNsdWRlICJXZWJLaXRDU1NUcmFuc2Zvcm1WYWx1ZS5oIgogCiAjaWYg
RU5BQkxFKENTU19HUklEX0xBWU9VVCkKQEAgLTMxMSw2ICszMTIsOCBAQCBTdHJpbmcgQ1NTVmFs
dWU6OmNzc1RleHQoKSBjb25zdAogICAgICAgICByZXR1cm4gZG93bmNhc3Q8U1ZHQ29sb3I+KCp0
aGlzKS5jdXN0b21DU1NUZXh0KCk7CiAgICAgY2FzZSBTVkdQYWludENsYXNzOgogICAgICAgICBy
ZXR1cm4gZG93bmNhc3Q8U1ZHUGFpbnQ+KCp0aGlzKS5jdXN0b21DU1NUZXh0KCk7CisgICAgY2Fz
ZSBXZWJLaXRDU1NSZXNvdXJjZUNsYXNzOgorICAgICAgICByZXR1cm4gZG93bmNhc3Q8V2ViS2l0
Q1NTUmVzb3VyY2VWYWx1ZT4oKnRoaXMpLmN1c3RvbUNTU1RleHQoKTsKICAgICB9CiAgICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7CiAgICAgcmV0dXJuIFN0cmluZygpOwpAQCAtNDIzLDYgKzQyNiw5
IEBAIHZvaWQgQ1NTVmFsdWU6OmRlc3Ryb3koKQogICAgIGNhc2UgU1ZHUGFpbnRDbGFzczoKICAg
ICAgICAgZGVsZXRlIGRvd25jYXN0PFNWR1BhaW50Pih0aGlzKTsKICAgICAgICAgcmV0dXJuOwor
ICAgIGNhc2UgV2ViS2l0Q1NTUmVzb3VyY2VDbGFzczoKKyAgICAgICAgZGVsZXRlIGRvd25jYXN0
PFdlYktpdENTU1Jlc291cmNlVmFsdWU+KHRoaXMpOworICAgICAgICByZXR1cm47CiAgICAgfQog
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
Y3NzL0NTU1ZhbHVlLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFsdWUuaAppbmRleCAwMWVl
NjJhLi4zNmMyOTk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFsdWUuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFsdWUuaApAQCAtMTAzLDYgKzEwMyw3IEBAIHB1
YmxpYzoKICAgICBib29sIGlzU1ZHQ29sb3IoKSBjb25zdCB7IHJldHVybiBtX2NsYXNzVHlwZSA9
PSBTVkdDb2xvckNsYXNzIHx8IG1fY2xhc3NUeXBlID09IFNWR1BhaW50Q2xhc3M7IH0KICAgICBi
b29sIGlzU1ZHUGFpbnQoKSBjb25zdCB7IHJldHVybiBtX2NsYXNzVHlwZSA9PSBTVkdQYWludENs
YXNzOyB9CiAgICAgYm9vbCBpc1VuaWNvZGVSYW5nZVZhbHVlKCkgY29uc3QgeyByZXR1cm4gbV9j
bGFzc1R5cGUgPT0gVW5pY29kZVJhbmdlQ2xhc3M7IH0KKyAgICBib29sIGlzV2ViS2l0Q1NTUmVz
b3VyY2VWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fY2xhc3NUeXBlID09IFdlYktpdENTU1Jlc291
cmNlQ2xhc3M7IH0KIAogICAgIGJvb2wgaXNDU1NPTVNhZmUoKSBjb25zdCB7IHJldHVybiBtX2lz
Q1NTT01TYWZlOyB9CiAgICAgYm9vbCBpc1N1YnR5cGVFeHBvc2VkVG9DU1NPTSgpIGNvbnN0CkBA
IC0xNzMsNiArMTc0LDggQEAgcHJvdGVjdGVkOgogI2lmIEVOQUJMRShDU1NfR1JJRF9MQVlPVVQp
CiAgICAgICAgIEdyaWRMaW5lTmFtZXNDbGFzcywKICNlbmRpZgorICAgICAgICBXZWJLaXRDU1NS
ZXNvdXJjZUNsYXNzCisKICAgICAgICAgLy8gRG8gbm90IGFwcGVuZCBub24tbGlzdCBjbGFzcyB0
eXBlcyBoZXJlLgogICAgIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHls
ZVJlc29sdmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmNwcAppbmRl
eCBjMDI0MTU4Li4xZjBiYTAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVS
ZXNvbHZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuY3BwCkBA
IC0xMzUsNiArMTM1LDcgQEAKICNpbmNsdWRlICJWaXNpdGVkTGlua1N0YXRlLmgiCiAjaW5jbHVk
ZSAiV2ViS2l0Q1NTRmlsdGVyVmFsdWUuaCIKICNpbmNsdWRlICJXZWJLaXRDU1NSZWdpb25SdWxl
LmgiCisjaW5jbHVkZSAiV2ViS2l0Q1NTUmVzb3VyY2VWYWx1ZS5oIgogI2luY2x1ZGUgIldlYktp
dENTU1RyYW5zZm9ybVZhbHVlLmgiCiAjaW5jbHVkZSAiV2ViS2l0Rm9udEZhbWlseU5hbWVzLmgi
CiAjaW5jbHVkZSAiWE1MTmFtZXMuaCIKQEAgLTIzNiw2ICsyMzcsNyBAQCBpbmxpbmUgdm9pZCBT
dHlsZVJlc29sdmVyOjpTdGF0ZTo6Y2xlYXIoKQogICAgIG1fcmVnaW9uRm9yU3R5bGluZyA9IG51
bGxwdHI7CiAgICAgbV9wZW5kaW5nSW1hZ2VQcm9wZXJ0aWVzLmNsZWFyKCk7CiAgICAgbV9maWx0
ZXJzV2l0aFBlbmRpbmdTVkdEb2N1bWVudHMuY2xlYXIoKTsKKyAgICBtX21hc2tJbWFnZXNXaXRo
UGVuZGluZ1NWR0RvY3VtZW50cy5jbGVhcigpOwogICAgIG1fY3NzVG9MZW5ndGhDb252ZXJzaW9u
RGF0YSA9IENTU1RvTGVuZ3RoQ29udmVyc2lvbkRhdGEoKTsKIH0KIApAQCAtMzQ1OSw2ICszNDYx
LDUxIEBAIGJvb2wgU3R5bGVSZXNvbHZlcjo6Y3JlYXRlRmlsdGVyT3BlcmF0aW9ucyhDU1NWYWx1
ZSogaW5WYWx1ZSwgRmlsdGVyT3BlcmF0aW9ucyYKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAorYm9v
bCBTdHlsZVJlc29sdmVyOjpjcmVhdGVNYXNrSW1hZ2VPcGVyYXRpb25zKENTU1ZhbHVlKiBpblZh
bHVlLCBWZWN0b3I8UmVmUHRyPE1hc2tJbWFnZU9wZXJhdGlvbj4+JiBvdXRPcGVyYXRpb25zKQor
eworICAgIEFTU0VSVChvdXRPcGVyYXRpb25zLmlzRW1wdHkoKSk7CisgICAgaWYgKCFpblZhbHVl
KQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBBU1NFUlQoaXM8Q1NTVmFsdWVMaXN0Pigq
aW5WYWx1ZSkpOworCisgICAgZm9yIChhdXRvJiBjdXJyVmFsdWUgOiBkb3duY2FzdDxDU1NWYWx1
ZUxpc3Q+KCppblZhbHVlKSkgeworICAgICAgICBpZiAoIWlzPFdlYktpdENTU1Jlc291cmNlVmFs
dWU+KGN1cnJWYWx1ZS5nZXQoKSkpCisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgCisg
ICAgICAgIFdlYktpdENTU1Jlc291cmNlVmFsdWUmIG1hc2tJbWFnZVZhbHVlID0gZG93bmNhc3Q8
V2ViS2l0Q1NTUmVzb3VyY2VWYWx1ZT4oY3VyclZhbHVlLmdldCgpKTsKKyAgICAgICAgUmVmUHRy
PENTU1ZhbHVlPiBtYXNrSW5uZXJWYWx1ZSA9IG1hc2tJbWFnZVZhbHVlLmlubmVyVmFsdWUoKTsK
KyAgICAgICAgUmVmUHRyPE1hc2tJbWFnZU9wZXJhdGlvbj4gbmV3TWFza0ltYWdlOworICAgICAg
ICAKKyAgICAgICAgaWYgKGlzPENTU1ByaW1pdGl2ZVZhbHVlPihtYXNrSW5uZXJWYWx1ZS5nZXQo
KSkpIHsKKyAgICAgICAgICAgIFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gcHJpbWl0aXZlVmFs
dWUgPSBkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4obWFza0lubmVyVmFsdWUuZ2V0KCkpOwor
ICAgICAgICAgICAgaWYgKHByaW1pdGl2ZVZhbHVlLT5pc1ZhbHVlSUQoKSAmJiBwcmltaXRpdmVW
YWx1ZS0+Z2V0VmFsdWVJRCgpID09IENTU1ZhbHVlTm9uZSkKKyAgICAgICAgICAgICAgICBuZXdN
YXNrSW1hZ2UgPSBNYXNrSW1hZ2VPcGVyYXRpb246OmNyZWF0ZSgpOworICAgICAgICAgICAgZWxz
ZSB7CisgICAgICAgICAgICAgICAgU3RyaW5nIGNzc1VybCA9IHByaW1pdGl2ZVZhbHVlLT5nZXRT
dHJpbmdWYWx1ZSgpOworICAgICAgICAgICAgICAgIFVSTCB1cmwgPSBtX3N0YXRlLmRvY3VtZW50
KCkuY29tcGxldGVVUkwoY3NzVXJsKTsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAg
ICBib29sIGlzRXh0ZXJuYWxEb2N1bWVudCA9IChTVkdVUklSZWZlcmVuY2U6OmlzRXh0ZXJuYWxV
UklSZWZlcmVuY2UoY3NzVXJsLCBtX3N0YXRlLmRvY3VtZW50KCkpKTsKKyAgICAgICAgICAgICAg
ICBuZXdNYXNrSW1hZ2UgPSBNYXNrSW1hZ2VPcGVyYXRpb246OmNyZWF0ZSgmbWFza0ltYWdlVmFs
dWUsIGNzc1VybCwgdXJsLmZyYWdtZW50SWRlbnRpZmllcigpLCBpc0V4dGVybmFsRG9jdW1lbnQs
IG1fc3RhdGUuZG9jdW1lbnQoKS5jYWNoZWRSZXNvdXJjZUxvYWRlcigpKTsKKyAgICAgICAgICAg
ICAgICBpZiAoaXNFeHRlcm5hbERvY3VtZW50KQorICAgICAgICAgICAgICAgICAgICBtX3N0YXRl
Lm1hc2tJbWFnZXNXaXRoUGVuZGluZ1NWR0RvY3VtZW50cygpLmFwcGVuZChuZXdNYXNrSW1hZ2Up
OworICAgICAgICAgICAgfQorICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgUmVmUHRyPFN0
eWxlSW1hZ2U+IGltYWdlID0gc3R5bGVJbWFnZShDU1NQcm9wZXJ0eVdlYmtpdE1hc2tJbWFnZSwg
Km1hc2tJbm5lclZhbHVlKTsKKyAgICAgICAgICAgIGlmIChpbWFnZS5nZXQoKSkKKyAgICAgICAg
ICAgICAgICBuZXdNYXNrSW1hZ2UgPSBNYXNrSW1hZ2VPcGVyYXRpb246OmNyZWF0ZShpbWFnZSk7
CisgICAgICAgIH0KKworICAgICAgICAvLyBJZiB3ZSBkaWRuJ3QgZ2V0IGEgdmFsaWQgdmFsdWUs
IHVzZSBOb25lIHNvIHdlIGtlZXAgdGhlIGNvcnJlY3QgbnVtYmVyIGFuZCBvcmRlciBvZiBtYXNr
cy4KKyAgICAgICAgaWYgKCFuZXdNYXNrSW1hZ2UuZ2V0KCkpCisgICAgICAgICAgICBuZXdNYXNr
SW1hZ2UgPSBNYXNrSW1hZ2VPcGVyYXRpb246OmNyZWF0ZSgpOworCisgICAgICAgIG91dE9wZXJh
dGlvbnMuYXBwZW5kKG5ld01hc2tJbWFnZSk7CisgICAgfQorCisgICAgcmV0dXJuIHRydWU7Cit9
CisKIFBhc3NSZWZQdHI8U3R5bGVJbWFnZT4gU3R5bGVSZXNvbHZlcjo6bG9hZFBlbmRpbmdJbWFn
ZShjb25zdCBTdHlsZVBlbmRpbmdJbWFnZSYgcGVuZGluZ0ltYWdlLCBjb25zdCBSZXNvdXJjZUxv
YWRlck9wdGlvbnMmIG9wdGlvbnMpCiB7CiAgICAgaWYgKGF1dG8gaW1hZ2VWYWx1ZSA9IHBlbmRp
bmdJbWFnZS5jc3NJbWFnZVZhbHVlKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3Mv
U3R5bGVSZXNvbHZlci5oIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuaAppbmRl
eCA1NWNhMGY2Li5lNTg2N2YwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVS
ZXNvbHZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmgKQEAgLTI4
LDYgKzI4LDcgQEAKICNpbmNsdWRlICJEb2N1bWVudFJ1bGVTZXRzLmgiCiAjaW5jbHVkZSAiSW5z
cGVjdG9yQ1NTT01XcmFwcGVycy5oIgogI2luY2x1ZGUgIkxpbmtIYXNoLmgiCisjaW5jbHVkZSAi
TWFza0ltYWdlT3BlcmF0aW9uLmgiCiAjaW5jbHVkZSAiTWVkaWFRdWVyeUV4cC5oIgogI2luY2x1
ZGUgIlJlbmRlclN0eWxlLmgiCiAjaW5jbHVkZSAiUnVsZUZlYXR1cmUuaCIKQEAgLTIzNyw2ICsy
MzgsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBjbGVhckNhY2hlZFByb3BlcnRpZXNBZmZlY3RlZEJ5
Vmlld3BvcnRVbml0cygpOwogCiAgICAgYm9vbCBjcmVhdGVGaWx0ZXJPcGVyYXRpb25zKENTU1Zh
bHVlKiBpblZhbHVlLCBGaWx0ZXJPcGVyYXRpb25zJiBvdXRPcGVyYXRpb25zKTsKKyAgICBib29s
IGNyZWF0ZU1hc2tJbWFnZU9wZXJhdGlvbnMoQ1NTVmFsdWUqIGluVmFsdWUsIFZlY3RvcjxSZWZQ
dHI8TWFza0ltYWdlT3BlcmF0aW9uPj4mIG91dE9wZXJhdGlvbnMpOwogICAgIHZvaWQgbG9hZFBl
bmRpbmdTVkdEb2N1bWVudHMoKTsKIAogICAgIHZvaWQgbG9hZFBlbmRpbmdSZXNvdXJjZXMoKTsK
QEAgLTM4MCw2ICszODIsNyBAQCBwdWJsaWM6CiAgICAgICAgIFBlbmRpbmdJbWFnZVByb3BlcnR5
TWFwJiBwZW5kaW5nSW1hZ2VQcm9wZXJ0aWVzKCkgeyByZXR1cm4gbV9wZW5kaW5nSW1hZ2VQcm9w
ZXJ0aWVzOyB9CiAKICAgICAgICAgVmVjdG9yPFJlZlB0cjxSZWZlcmVuY2VGaWx0ZXJPcGVyYXRp
b24+PiYgZmlsdGVyc1dpdGhQZW5kaW5nU1ZHRG9jdW1lbnRzKCkgeyByZXR1cm4gbV9maWx0ZXJz
V2l0aFBlbmRpbmdTVkdEb2N1bWVudHM7IH0KKyAgICAgICAgVmVjdG9yPFJlZlB0cjxNYXNrSW1h
Z2VPcGVyYXRpb24+PiYgbWFza0ltYWdlc1dpdGhQZW5kaW5nU1ZHRG9jdW1lbnRzKCkgeyByZXR1
cm4gbV9tYXNrSW1hZ2VzV2l0aFBlbmRpbmdTVkdEb2N1bWVudHM7IH0KIAogICAgICAgICB2b2lk
IHNldExpbmVIZWlnaHRWYWx1ZShDU1NWYWx1ZSogdmFsdWUpIHsgbV9saW5lSGVpZ2h0VmFsdWUg
PSB2YWx1ZTsgfQogICAgICAgICBDU1NWYWx1ZSogbGluZUhlaWdodFZhbHVlKCkgeyByZXR1cm4g
bV9saW5lSGVpZ2h0VmFsdWU7IH0KQEAgLTQyOCw2ICs0MzEsNyBAQCBwdWJsaWM6CiAgICAgICAg
IFBlbmRpbmdJbWFnZVByb3BlcnR5TWFwIG1fcGVuZGluZ0ltYWdlUHJvcGVydGllczsKIAogICAg
ICAgICBWZWN0b3I8UmVmUHRyPFJlZmVyZW5jZUZpbHRlck9wZXJhdGlvbj4+IG1fZmlsdGVyc1dp
dGhQZW5kaW5nU1ZHRG9jdW1lbnRzOworICAgICAgICBWZWN0b3I8UmVmUHRyPE1hc2tJbWFnZU9w
ZXJhdGlvbj4+IG1fbWFza0ltYWdlc1dpdGhQZW5kaW5nU1ZHRG9jdW1lbnRzOwogCiAgICAgICAg
IENTU1ZhbHVlKiBtX2xpbmVIZWlnaHRWYWx1ZTsKICAgICAgICAgYm9vbCBtX2ZvbnREaXJ0eTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9XZWJLaXRDU1NSZXNvdXJjZVZhbHVlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9XZWJLaXRDU1NSZXNvdXJjZVZhbHVlLmNwcApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40ODBiMjkxCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYkNvcmUvY3NzL1dlYktpdENTU1Jlc291cmNlVmFsdWUuY3BwCkBAIC0wLDAgKzEs
NzUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgQWRvYmUgU3lzdGVtcyBJbmNvcnBvcmF0
ZWQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUiAiQVMgSVMiIEFORCBBTlkKKyAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIFRIRSBDT1BZUklHSFQgSE9MREVSIEJFCisgKiBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksCisgKiBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SCisgKiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YKKyAqIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRgorICogU1VD
SCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldlYktpdENT
U1Jlc291cmNlVmFsdWUuaCIKKworI2luY2x1ZGUgIkNTU1BhcnNlci5oIgorI2luY2x1ZGUgIkNT
U1ByaW1pdGl2ZVZhbHVlLmgiCisjaW5jbHVkZSAiQ1NTVmFsdWVMaXN0LmgiCisjaW5jbHVkZSA8
d3RmL1Bhc3NSZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+Cisj
aW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwor
V2ViS2l0Q1NTUmVzb3VyY2VWYWx1ZTo6V2ViS2l0Q1NTUmVzb3VyY2VWYWx1ZShQYXNzUmVmUHRy
PENTU1ZhbHVlPiByZXNvdXJjZVZhbHVlKQorICAgIDogQ1NTVmFsdWUoV2ViS2l0Q1NTUmVzb3Vy
Y2VDbGFzcykKKyAgICAsIG1faW5uZXJWYWx1ZShyZXNvdXJjZVZhbHVlKQoreworfQorCitTdHJp
bmcgV2ViS2l0Q1NTUmVzb3VyY2VWYWx1ZTo6Y3VzdG9tQ1NTVGV4dCgpIGNvbnN0Cit7CisgICAg
aWYgKGlzQ1NTVmFsdWVOb25lKCkpCisgICAgICAgIHJldHVybiAibm9uZSI7CisKKyAgICBpZiAo
bV9pbm5lclZhbHVlLmdldCgpKSB7CisgICAgICAgIGlmIChpczxDU1NQcmltaXRpdmVWYWx1ZT4o
bV9pbm5lclZhbHVlLmdldCgpKSAmJiBkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4obV9pbm5l
clZhbHVlLmdldCgpKS0+aXNVUkkoKSkgeworICAgICAgICAgICAgU3RyaW5nQnVpbGRlciByZXN1
bHQ7CisgICAgICAgICAgICByZXN1bHQuYXBwZW5kTGl0ZXJhbCgidXJsKCIpOworICAgICAgICAg
ICAgcmVzdWx0LmFwcGVuZChxdW90ZUNTU1VSTElmTmVlZGVkKGRvd25jYXN0PENTU1ByaW1pdGl2
ZVZhbHVlPihtX2lubmVyVmFsdWUuZ2V0KCkpLT5nZXRTdHJpbmdWYWx1ZSgpKSk7CisgICAgICAg
ICAgICByZXN1bHQuYXBwZW5kTGl0ZXJhbCgiKSIpOworICAgICAgICAgICAgcmV0dXJuIHJlc3Vs
dC50b1N0cmluZygpOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICByZXR1cm4gbV9pbm5l
clZhbHVlLT5jc3NUZXh0KCk7CisgICAgfQorICAgIAorICAgIHJldHVybiAiIjsKK30KKworYm9v
bCBXZWJLaXRDU1NSZXNvdXJjZVZhbHVlOjppc0NTU1ZhbHVlTm9uZSgpIGNvbnN0Cit7CisgICAg
aWYgKGlzPENTU1ByaW1pdGl2ZVZhbHVlPihtX2lubmVyVmFsdWUuZ2V0KCkpKSB7CisgICAgICAg
IFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gcHJpbWl0aXZlVmFsdWUgPSBkb3duY2FzdDxDU1NQ
cmltaXRpdmVWYWx1ZT4obV9pbm5lclZhbHVlLmdldCgpKTsKKyAgICAgICAgcmV0dXJuIChwcmlt
aXRpdmVWYWx1ZS0+aXNWYWx1ZUlEKCkgJiYgcHJpbWl0aXZlVmFsdWUtPmdldFZhbHVlSUQoKSA9
PSBDU1NWYWx1ZU5vbmUpOworICAgIH0KKworICAgIHJldHVybiBmYWxzZTsKK30KKworfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1dlYktpdENTU1Jlc291cmNlVmFsdWUuaCBiL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9XZWJLaXRDU1NSZXNvdXJjZVZhbHVlLmgKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMC4uNDU3N2M0OQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9XZWJLaXRDU1NSZXNvdXJjZVZhbHVlLmgKQEAgLTAsMCArMSw1NSBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxNCBBZG9iZSBTeXN0ZW1zIEluY29ycG9yYXRlZC4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIFRIRSBDT1BZUklHSFQgSE9MREVSICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAq
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
VEhFIENPUFlSSUdIVCBIT0xERVIgQkUKKyAqIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwKKyAqIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAq
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IKKyAqIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRgorICogVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GCisgKiBTVUNIIERBTUFHRS4K
KyAqLworCisjaWZuZGVmIFdlYktpdENTU1Jlc291cmNlVmFsdWVfaAorI2RlZmluZSBXZWJLaXRD
U1NSZXNvdXJjZVZhbHVlX2gKKworI2luY2x1ZGUgIkNTU1ZhbHVlLmgiCisjaW5jbHVkZSA8d3Rm
L1Bhc3NSZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CisKK25hbWVzcGFjZSBXZWJD
b3JlIHsKKworY2xhc3MgV2ViS2l0Q1NTUmVzb3VyY2VWYWx1ZSA6IHB1YmxpYyBDU1NWYWx1ZSB7
CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NSZWY8V2ViS2l0Q1NTUmVzb3VyY2VWYWx1ZT4gY3Jl
YXRlKFBhc3NSZWZQdHI8Q1NTVmFsdWU+IHJlc291cmNlVmFsdWUpCisgICAgeworICAgICAgICBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJLaXRDU1NSZXNvdXJjZVZhbHVlKHJlc291cmNlVmFsdWUp
KTsKKyAgICB9CisKKyAgICBTdHJpbmcgY3VzdG9tQ1NTVGV4dCgpIGNvbnN0OworICAgIFBhc3NS
ZWZQdHI8Q1NTVmFsdWU+IGlubmVyVmFsdWUoKSB7IHJldHVybiBtX2lubmVyVmFsdWU7IH07Cisg
ICAgYm9vbCBpc0NTU1ZhbHVlTm9uZSgpIGNvbnN0OworcHJpdmF0ZToKKyAgICBXZWJLaXRDU1NS
ZXNvdXJjZVZhbHVlKFBhc3NSZWZQdHI8Q1NTVmFsdWU+IHJlc291cmNlVmFsdWUpOworICAgIFJl
ZlB0cjxDU1NWYWx1ZT4gbV9pbm5lclZhbHVlOworfTsKKworfQorCitTUEVDSUFMSVpFX1RZUEVf
VFJBSVRTX0NTU19WQUxVRShXZWJLaXRDU1NSZXNvdXJjZVZhbHVlLCBpc1dlYktpdENTU1Jlc291
cmNlVmFsdWUoKSkKKworI2VuZGlmIC8vIFdlYktpdENTU1Jlc291cmNlVmFsdWVfaApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlTG9hZGVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5jcHAK
aW5kZXggZWM4MzJkNS4uMzdmYTk5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2NhY2hlL0NhY2hlZFJlc291cmNlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VMb2FkZXIuY3BwCkBAIC03NTYsNiArNzU2LDE0IEBAIHZv
aWQgQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OnJlbW92ZUNhY2hlZFJlc291cmNlKENhY2hlZFJlc291
cmNlKiByZXNvdXJjZSkgY29uc3QKICAgICBtX2RvY3VtZW50UmVzb3VyY2VzLnJlbW92ZShyZXNv
dXJjZS0+dXJsKCkpOwogfQogCit2b2lkIENhY2hlZFJlc291cmNlTG9hZGVyOjphZGRDYWNoZWRS
ZXNvdXJjZShDYWNoZWRSZXNvdXJjZSogcmVzb3VyY2UpCit7CisgICAgbV9kb2N1bWVudFJlc291
cmNlcy5zZXQocmVzb3VyY2UtPnVybCgpLCByZXNvdXJjZSk7CisKKyAgICBpZiAoIW1lbW9yeUNh
Y2hlKCkuYWRkKHJlc291cmNlKSkKKyAgICAgICAgcmVzb3VyY2UtPnNldE93bmluZ0NhY2hlZFJl
c291cmNlTG9hZGVyKHRoaXMpOworfQorCiB2b2lkIENhY2hlZFJlc291cmNlTG9hZGVyOjpsb2Fk
RG9uZShDYWNoZWRSZXNvdXJjZSogcmVzb3VyY2UsIGJvb2wgc2hvdWxkUGVyZm9ybVBvc3RMb2Fk
QWN0aW9ucykKIHsKICAgICBSZWZQdHI8RG9jdW1lbnRMb2FkZXI+IHByb3RlY3REb2N1bWVudExv
YWRlcihtX2RvY3VtZW50TG9hZGVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Nh
Y2hlL0NhY2hlZFJlc291cmNlTG9hZGVyLmgKaW5kZXggNzk1OGU2Mi4uM2MwZWE1NSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlTG9hZGVyLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlTG9hZGVyLmgK
QEAgLTExNCw2ICsxMTQsNyBAQCBwdWJsaWM6CiAgICAgU2Vzc2lvbklEIHNlc3Npb25JRCgpIGNv
bnN0OwogCiAgICAgdm9pZCByZW1vdmVDYWNoZWRSZXNvdXJjZShDYWNoZWRSZXNvdXJjZSopIGNv
bnN0OworICAgIHZvaWQgYWRkQ2FjaGVkUmVzb3VyY2UoQ2FjaGVkUmVzb3VyY2UqKTsKIAogICAg
IHZvaWQgbG9hZERvbmUoQ2FjaGVkUmVzb3VyY2UqLCBib29sIHNob3VsZFBlcmZvcm1Qb3N0TG9h
ZEFjdGlvbnMgPSB0cnVlKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Nh
Y2hlL0NhY2hlZFNWR0RvY3VtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9D
YWNoZWRTVkdEb2N1bWVudC5jcHAKaW5kZXggYTUyMzAyMC4uMzNlMDdlOCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0RvY3VtZW50LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1lbnQuY3BwCkBAIC0yMyw2
ICsyMywxMyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkNhY2hlZFNWR0RvY3Vt
ZW50LmgiCiAKKyNpbmNsdWRlICJEb2N1bWVudExvYWRlci5oIgorI2luY2x1ZGUgIkVtcHR5Q2xp
ZW50cy5oIgorI2luY2x1ZGUgIkZyYW1lVmlldy5oIgorI2luY2x1ZGUgIk1haW5GcmFtZS5oIgor
I2luY2x1ZGUgIlBhZ2UuaCIKKyNpbmNsdWRlICJQYWdlQ29uZmlndXJhdGlvbi5oIgorI2luY2x1
ZGUgIlNldHRpbmdzLmgiCiAjaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKQEAgLTMwLDYgKzM3LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogQ2FjaGVkU1ZH
RG9jdW1lbnQ6OkNhY2hlZFNWR0RvY3VtZW50KGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVz
dCwgU2Vzc2lvbklEIHNlc3Npb25JRCkKICAgICA6IENhY2hlZFJlc291cmNlKHJlcXVlc3QsIFNW
R0RvY3VtZW50UmVzb3VyY2UsIHNlc3Npb25JRCkKICAgICAsIG1fZGVjb2RlcihUZXh0UmVzb3Vy
Y2VEZWNvZGVyOjpjcmVhdGUoImFwcGxpY2F0aW9uL3htbCIpKQorICAgICwgbV9zaG91bGRDcmVh
dGVGcmFtZUZvckRvY3VtZW50KHRydWUpCisgICAgLCBtX2NhblJldXNlUmVzb3VyY2UodHJ1ZSkK
IHsKICAgICBzZXRBY2NlcHQoImltYWdlL3N2Zyt4bWwiKTsKIH0KQEAgLTUxLDkgKzYwLDE3IEBA
IFN0cmluZyBDYWNoZWRTVkdEb2N1bWVudDo6ZW5jb2RpbmcoKSBjb25zdAogdm9pZCBDYWNoZWRT
VkdEb2N1bWVudDo6ZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIqIGRhdGEpCiB7CiAgICAgaWYg
KGRhdGEpIHsKLSAgICAgICAgLy8gV2UgZG9uJ3QgbmVlZCB0byBjcmVhdGUgYSBuZXcgZnJhbWUg
YmVjYXVzZSB0aGUgbmV3IGRvY3VtZW50IGJlbG9uZ3MgdG8gdGhlIHBhcmVudCBVc2VFbGVtZW50
LgotICAgICAgICBtX2RvY3VtZW50ID0gU1ZHRG9jdW1lbnQ6OmNyZWF0ZShudWxscHRyLCByZXNw
b25zZSgpLnVybCgpKTsKLSAgICAgICAgbV9kb2N1bWVudC0+c2V0Q29udGVudChtX2RlY29kZXIt
PmRlY29kZUFuZEZsdXNoKGRhdGEtPmRhdGEoKSwgZGF0YS0+c2l6ZSgpKSk7CisgICAgICAgIC8v
IEluIGNlcnRhaW4gc2l0dWF0aW9ucyAobGlrZSB0aGUgc2NlbmFyaW8gd2hlbiB0aGlzIGRvY3Vt
ZW50IGJlbG9uZ3MgdG8gYW4gVXNlRWxlbWVudCkgd2UgZG9uJ3QgbmVlZCB0byBjcmVhdGUgYSBm
cmFtZS4KKyAgICAgICAgaWYgKG1fc2hvdWxkQ3JlYXRlRnJhbWVGb3JEb2N1bWVudCkgeworICAg
ICAgICAgICAgUGFnZUNvbmZpZ3VyYXRpb24gcGFnZUNvbmZpZ3VyYXRpb247CisgICAgICAgICAg
ICBmaWxsV2l0aEVtcHR5Q2xpZW50cyhwYWdlQ29uZmlndXJhdGlvbik7CisgICAgICAgICAgICAK
KyAgICAgICAgICAgIG1fcGFnZSA9IFBhZ2U6OmNyZWF0ZVBhZ2VGcm9tQnVmZmVyKHBhZ2VDb25m
aWd1cmF0aW9uLCBkYXRhLCAiaW1hZ2Uvc3ZnK3htbCIsIGZhbHNlLCB0cnVlKTsKKyAgICAgICAg
ICAgIG1fZG9jdW1lbnQgPSBkb3duY2FzdDxTVkdEb2N1bWVudD4obV9wYWdlLT5tYWluRnJhbWUo
KS5kb2N1bWVudCgpKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIG1fZG9jdW1lbnQg
PSBTVkdEb2N1bWVudDo6Y3JlYXRlKG51bGxwdHIsIHJlc3BvbnNlKCkudXJsKCkpOworICAgICAg
ICAgICAgbV9kb2N1bWVudC0+c2V0Q29udGVudChtX2RlY29kZXItPmRlY29kZUFuZEZsdXNoKGRh
dGEtPmRhdGEoKSwgZGF0YS0+c2l6ZSgpKSk7CisgICAgICAgIH0KICAgICB9CiAgICAgQ2FjaGVk
UmVzb3VyY2U6OmZpbmlzaExvYWRpbmcoZGF0YSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9jYWNoZS9DYWNoZWRTVkdEb2N1bWVudC5oCmluZGV4IGE3OTFjZDguLjcyYjc4NjQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdEb2N1bWVudC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdEb2N1bWVudC5oCkBA
IC0zNiw2ICszNiw5IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5DYWNoZWRTVkdEb2N1bWVudCgp
OwogCiAgICAgU1ZHRG9jdW1lbnQqIGRvY3VtZW50KCkgY29uc3QgeyByZXR1cm4gbV9kb2N1bWVu
dC5nZXQoKTsgfQorICAgIHZvaWQgc2V0U2hvdWxkQ3JlYXRlRnJhbWVGb3JEb2N1bWVudChib29s
IHNob3VsZENyZWF0ZSkgeyBtX3Nob3VsZENyZWF0ZUZyYW1lRm9yRG9jdW1lbnQgPSBzaG91bGRD
cmVhdGU7IH0KKyAgICB2aXJ0dWFsIGJvb2wgY2FuUmV1c2UoY29uc3QgUmVzb3VyY2VSZXF1ZXN0
JikgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9jYW5SZXVzZVJlc291cmNlOyB9CisgICAgdm9p
ZCBzZXRDYW5SZXVzZShib29sIGNhblJldXNlUmVzb3VyY2UpIHsgbV9jYW5SZXVzZVJlc291cmNl
ID0gY2FuUmV1c2VSZXNvdXJjZTsgfTsKIAogcHJpdmF0ZToKICAgICB2aXJ0dWFsIGJvb2wgbWF5
VHJ5UmVwbGFjZUVuY29kZWREYXRhKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQpA
QCAtNDUsNiArNDgsOSBAQCBwcml2YXRlOgogCiAgICAgUmVmUHRyPFNWR0RvY3VtZW50PiBtX2Rv
Y3VtZW50OwogICAgIFJlZlB0cjxUZXh0UmVzb3VyY2VEZWNvZGVyPiBtX2RlY29kZXI7CisgICAg
c3RkOjp1bmlxdWVfcHRyPFBhZ2U+IG1fcGFnZTsKKyAgICBib29sIG1fc2hvdWxkQ3JlYXRlRnJh
bWVGb3JEb2N1bWVudDsKKyAgICBib29sIG1fY2FuUmV1c2VSZXNvdXJjZTsKIH07CiAKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNo
ZS9DYWNoZWRTVkdEb2N1bWVudFJlZmVyZW5jZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Y2FjaGUvQ2FjaGVkU1ZHRG9jdW1lbnRSZWZlcmVuY2UuY3BwCmluZGV4IDA2ZjNhYjguLmI2YjQ2
MjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdEb2N1
bWVudFJlZmVyZW5jZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hl
ZFNWR0RvY3VtZW50UmVmZXJlbmNlLmNwcApAQCAtMzQsMTcgKzM0LDIzIEBACiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAotQ2FjaGVkU1ZHRG9jdW1lbnRSZWZlcmVuY2U6OkNhY2hlZFNWR0RvY3Vt
ZW50UmVmZXJlbmNlKGNvbnN0IFN0cmluZyYgdXJsKQorQ2FjaGVkU1ZHRG9jdW1lbnRSZWZlcmVu
Y2U6OkNhY2hlZFNWR0RvY3VtZW50UmVmZXJlbmNlKGNvbnN0IFN0cmluZyYgdXJsLCBDYWNoZWRT
VkdEb2N1bWVudENsaWVudCogYWRkaXRpb25hbERvY3VtZW50Q2xpZW50LCBib29sIGNhblJldXNl
UmVzb3VyY2UpCiAgICAgOiBtX3VybCh1cmwpCiAgICAgLCBtX2RvY3VtZW50KDApCiAgICAgLCBt
X2xvYWRSZXF1ZXN0ZWQoZmFsc2UpCisgICAgLCBtX2FkZGl0aW9uYWxEb2N1bWVudENsaWVudChh
ZGRpdGlvbmFsRG9jdW1lbnRDbGllbnQpCisgICAgLCBtX2NhblJldXNlUmVzb3VyY2UoY2FuUmV1
c2VSZXNvdXJjZSkKIHsKIH0KIAogQ2FjaGVkU1ZHRG9jdW1lbnRSZWZlcmVuY2U6On5DYWNoZWRT
VkdEb2N1bWVudFJlZmVyZW5jZSgpCiB7Ci0gICAgaWYgKG1fZG9jdW1lbnQpCisgICAgaWYgKG1f
ZG9jdW1lbnQpIHsKICAgICAgICAgbV9kb2N1bWVudC0+cmVtb3ZlQ2xpZW50KHRoaXMpOworICAg
ICAgICAKKyAgICAgICAgaWYgKG1fYWRkaXRpb25hbERvY3VtZW50Q2xpZW50KQorICAgICAgICAg
ICAgbV9kb2N1bWVudC0+cmVtb3ZlQ2xpZW50KG1fYWRkaXRpb25hbERvY3VtZW50Q2xpZW50KTsK
KyAgICB9CiB9CiAKIHZvaWQgQ2FjaGVkU1ZHRG9jdW1lbnRSZWZlcmVuY2U6OmxvYWQoQ2FjaGVk
UmVzb3VyY2VMb2FkZXIqIGxvYWRlcikKQEAgLTU2LDggKzYyLDEzIEBAIHZvaWQgQ2FjaGVkU1ZH
RG9jdW1lbnRSZWZlcmVuY2U6OmxvYWQoQ2FjaGVkUmVzb3VyY2VMb2FkZXIqIGxvYWRlcikKICAg
ICBDYWNoZWRSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdChSZXNvdXJjZVJlcXVlc3QobG9hZGVyLT5k
b2N1bWVudCgpLT5jb21wbGV0ZVVSTChtX3VybCkpKTsKICAgICByZXF1ZXN0LnNldEluaXRpYXRv
cihjYWNoZWRSZXNvdXJjZVJlcXVlc3RJbml0aWF0b3JzKCkuY3NzKTsKICAgICBtX2RvY3VtZW50
ID0gbG9hZGVyLT5yZXF1ZXN0U1ZHRG9jdW1lbnQocmVxdWVzdCk7Ci0gICAgaWYgKG1fZG9jdW1l
bnQpCisgICAgaWYgKG1fZG9jdW1lbnQpIHsKKyAgICAgICAgbV9kb2N1bWVudC0+c2V0Q2FuUmV1
c2UobV9jYW5SZXVzZVJlc291cmNlKTsKICAgICAgICAgbV9kb2N1bWVudC0+YWRkQ2xpZW50KHRo
aXMpOworICAgICAgICAKKyAgICAgICAgaWYgKG1fYWRkaXRpb25hbERvY3VtZW50Q2xpZW50KQor
ICAgICAgICAgICAgbV9kb2N1bWVudC0+YWRkQ2xpZW50KG1fYWRkaXRpb25hbERvY3VtZW50Q2xp
ZW50KTsKKyAgICB9CiAKICAgICBtX2xvYWRSZXF1ZXN0ZWQgPSB0cnVlOwogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0RvY3VtZW50UmVmZXJlbmNl
LmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1lbnRSZWZlcmVu
Y2UuaAppbmRleCA1ZGEzZWVjLi40MWY0MWRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1lbnRSZWZlcmVuY2UuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1lbnRSZWZlcmVuY2UuaApAQCAtMzcsNyAr
MzcsNyBAQCBjbGFzcyBDYWNoZWRSZXNvdXJjZUxvYWRlcjsKIAogY2xhc3MgQ2FjaGVkU1ZHRG9j
dW1lbnRSZWZlcmVuY2UgOiBwdWJsaWMgQ2FjaGVkU1ZHRG9jdW1lbnRDbGllbnQgewogcHVibGlj
OgotICAgIENhY2hlZFNWR0RvY3VtZW50UmVmZXJlbmNlKGNvbnN0IFN0cmluZyYpOworICAgIENh
Y2hlZFNWR0RvY3VtZW50UmVmZXJlbmNlKGNvbnN0IFN0cmluZyYgdXJsLCBDYWNoZWRTVkdEb2N1
bWVudENsaWVudCogYWRkaXRpb25hbERvY3VtZW50Q2xpZW50ID0gbnVsbHB0ciwgYm9vbCBjYW5S
ZXVzZVJlc291cmNlID0gdHJ1ZSk7CiAKICAgICB2aXJ0dWFsIH5DYWNoZWRTVkdEb2N1bWVudFJl
ZmVyZW5jZSgpOwogCkBAIC01MCw2ICs1MCw4IEBAIHByaXZhdGU6CiAgICAgU3RyaW5nIG1fdXJs
OwogICAgIENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZFNWR0RvY3VtZW50PiBtX2RvY3VtZW50
OwogICAgIGJvb2wgbV9sb2FkUmVxdWVzdGVkOworICAgIENhY2hlZFNWR0RvY3VtZW50Q2xpZW50
KiBtX2FkZGl0aW9uYWxEb2N1bWVudENsaWVudDsKKyAgICBib29sIG1fY2FuUmV1c2VSZXNvdXJj
ZTsKIH07CiAKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAKaW5kZXggODM0ZTllOC4uMTA2
NDAxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcApAQCAtNDM4Miw2ICs0MzgyLDE0IEBA
IGJvb2wgRnJhbWVWaWV3Ojppc0ZsaXBwZWREb2N1bWVudCgpIGNvbnN0CiAgICAgcmV0dXJuIHJl
bmRlclZpZXctPnN0eWxlKCkuaXNGbGlwcGVkQmxvY2tzV3JpdGluZ01vZGUoKTsKIH0KIAorYm9v
bCBGcmFtZVZpZXc6OmNvbnRhaW5zU1ZHRG9jdW1lbnQoKSBjb25zdAoreworICAgIGlmIChmcmFt
ZSgpLmRvY3VtZW50KCkpCisgICAgICAgIHJldHVybiBmcmFtZSgpLmRvY3VtZW50KCktPmlzU1ZH
RG9jdW1lbnQoKTsKKyAgICAKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKIHZvaWQgRnJhbWVWaWV3
Ojpub3RpZnlXaWRnZXRzSW5BbGxGcmFtZXMoV2lkZ2V0Tm90aWZpY2F0aW9uIG5vdGlmaWNhdGlv
bikKIHsKICAgICBmb3IgKEZyYW1lKiBmcmFtZSA9IG1fZnJhbWUuZ2V0KCk7IGZyYW1lOyBmcmFt
ZSA9IGZyYW1lLT50cmVlKCkudHJhdmVyc2VOZXh0KG1fZnJhbWUuZ2V0KCkpKSB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5oIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9GcmFtZVZpZXcuaAppbmRleCBmNWI1ZTVkLi45N2FiMzlkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVW
aWV3LmgKQEAgLTUyNiw2ICs1MjYsNyBAQCBwcm90ZWN0ZWQ6CiAKICAgICB2aXJ0dWFsIGJvb2wg
aXNWZXJ0aWNhbERvY3VtZW50KCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCBib29sIGlz
RmxpcHBlZERvY3VtZW50KCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBib29sIGNvbnRh
aW5zU1ZHRG9jdW1lbnQoKSBjb25zdCBvdmVycmlkZTsKIAogcHJpdmF0ZToKICAgICBleHBsaWNp
dCBGcmFtZVZpZXcoRnJhbWUmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFn
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCmluZGV4IDE1MjAzNzYuLmIyNDA2
ZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9QYWdlLmNwcApAQCAtMjksNiArMjksNyBAQAogI2luY2x1ZGUgIkNsaWVu
dFJlY3RMaXN0LmgiCiAjaW5jbHVkZSAiQ29udGV4dE1lbnVDbGllbnQuaCIKICNpbmNsdWRlICJD
b250ZXh0TWVudUNvbnRyb2xsZXIuaCIKKyNpbmNsdWRlICJEb2N1bWVudExvYWRlci5oIgogI2lu
Y2x1ZGUgIkRvY3VtZW50TWFya2VyQ29udHJvbGxlci5oIgogI2luY2x1ZGUgIkRvY3VtZW50U3R5
bGVTaGVldENvbGxlY3Rpb24uaCIKICNpbmNsdWRlICJEcmFnQ29udHJvbGxlci5oIgpAQCAtMjc1
LDYgKzI3NiwzMyBAQCBQYWdlOjp+UGFnZSgpCiAgICAgbV92aXNpdGVkTGlua1N0b3JlLT5yZW1v
dmVQYWdlKCp0aGlzKTsKIH0KIAorc3RkOjp1bmlxdWVfcHRyPFBhZ2U+IFBhZ2U6OmNyZWF0ZVBh
Z2VGcm9tQnVmZmVyKFBhZ2VDb25maWd1cmF0aW9uJiBwYWdlQ29uZmlndXJhdGlvbiwgY29uc3Qg
U2hhcmVkQnVmZmVyKiBidWZmZXIsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGJvb2wgY2FuSGF2
ZVNjcm9sbGJhcnMsIGJvb2wgdHJhbnNwYXJlbnQpCit7CisgICAgQVNTRVJUKGJ1ZmZlcik7Cisg
ICAgCisgICAgc3RkOjp1bmlxdWVfcHRyPFBhZ2U+IG5ld1BhZ2UgPSBzdGQ6Om1ha2VfdW5pcXVl
PFBhZ2U+KHBhZ2VDb25maWd1cmF0aW9uKTsKKyAgICBuZXdQYWdlLT5zZXR0aW5ncygpLnNldE1l
ZGlhRW5hYmxlZChmYWxzZSk7CisgICAgbmV3UGFnZS0+c2V0dGluZ3MoKS5zZXRTY3JpcHRFbmFi
bGVkKGZhbHNlKTsKKyAgICBuZXdQYWdlLT5zZXR0aW5ncygpLnNldFBsdWdpbnNFbmFibGVkKGZh
bHNlKTsKKyAgICAKKyAgICBGcmFtZSYgZnJhbWUgPSBuZXdQYWdlLT5tYWluRnJhbWUoKTsKKyAg
ICBmcmFtZS5zZXRWaWV3KEZyYW1lVmlldzo6Y3JlYXRlKGZyYW1lKSk7CisgICAgZnJhbWUuaW5p
dCgpOworICAgIEZyYW1lTG9hZGVyJiBsb2FkZXIgPSBmcmFtZS5sb2FkZXIoKTsKKyAgICBsb2Fk
ZXIuZm9yY2VTYW5kYm94RmxhZ3MoU2FuZGJveEFsbCk7CisgICAgCisgICAgZnJhbWUudmlldygp
LT5zZXRDYW5IYXZlU2Nyb2xsYmFycyhjYW5IYXZlU2Nyb2xsYmFycyk7CisgICAgZnJhbWUudmll
dygpLT5zZXRUcmFuc3BhcmVudCh0cmFuc3BhcmVudCk7CisgICAgCisgICAgQVNTRVJUKGxvYWRl
ci5hY3RpdmVEb2N1bWVudExvYWRlcigpKTsgLy8gRG9jdW1lbnRMb2FkZXIgc2hvdWxkIGhhdmUg
YmVlbiBjcmVhdGVkIGJ5IGZyYW1lLT5pbml0KCkuCisgICAgbG9hZGVyLmFjdGl2ZURvY3VtZW50
TG9hZGVyKCktPndyaXRlcigpLnNldE1JTUVUeXBlKG1pbWVUeXBlKTsKKyAgICBsb2FkZXIuYWN0
aXZlRG9jdW1lbnRMb2FkZXIoKS0+d3JpdGVyKCkuYmVnaW4oVVJMKCkpOyAvLyBjcmVhdGUgdGhl
IGVtcHR5IGRvY3VtZW50CisgICAgbG9hZGVyLmFjdGl2ZURvY3VtZW50TG9hZGVyKCktPndyaXRl
cigpLmFkZERhdGEoYnVmZmVyLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpKTsKKyAgICBsb2FkZXIu
YWN0aXZlRG9jdW1lbnRMb2FkZXIoKS0+d3JpdGVyKCkuZW5kKCk7CisgICAgCisgICAgcmV0dXJu
IG5ld1BhZ2U7Cit9CisKIHZvaWQgUGFnZTo6Y2xlYXJQcmV2aW91c0l0ZW1Gcm9tQWxsUGFnZXMo
SGlzdG9yeUl0ZW0qIGl0ZW0pCiB7CiAgICAgaWYgKCFhbGxQYWdlcykKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmgKaW5k
ZXggNjViZDg2Mi4uOWFjYzQ4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdl
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmgKQEAgLTEwNyw2ICsxMDcsNyBAQCBj
bGFzcyBWaWV3U3RhdGVDaGFuZ2VPYnNlcnZlcjsKIGNsYXNzIFZpc2l0ZWRMaW5rU3RvcmU7CiAK
IHR5cGVkZWYgdWludDY0X3QgTGlua0hhc2g7CitjbGFzcyBTaGFyZWRCdWZmZXI7CiAKIGVudW0g
RmluZERpcmVjdGlvbiB7IEZpbmREaXJlY3Rpb25Gb3J3YXJkLCBGaW5kRGlyZWN0aW9uQmFja3dh
cmQgfTsKIApAQCAtMTI0LDYgKzEyNSw4IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCB+
UGFnZSgpOwogCiAgICAgV0VCQ09SRV9FWFBPUlQgdWludDY0X3QgcmVuZGVyVHJlZVNpemUoKSBj
b25zdDsKKyAgICAKKyAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPFBhZ2U+IGNyZWF0ZVBhZ2VG
cm9tQnVmZmVyKFBhZ2VDb25maWd1cmF0aW9uJiwgY29uc3QgU2hhcmVkQnVmZmVyKiwgY29uc3Qg
U3RyaW5nJiBtaW1lVHlwZSwgYm9vbCBjYW5IYXZlU2Nyb2xsYmFycywgYm9vbCB0cmFuc3BhcmVu
dCk7CiAKICAgICB2b2lkIHNldE5lZWRzUmVjYWxjU3R5bGVJbkFsbEZyYW1lcygpOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxWaWV3LmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9TY3JvbGxWaWV3LmgKaW5kZXggZjJlZjU5MS4uNDg0NmJkZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsVmlldy5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1Njcm9sbFZpZXcuaApAQCAtNDEwLDYgKzQxMCw3IEBAIHByb3RlY3Rl
ZDoKICAgICAvLyBTdWJjbGFzc2VkIGJ5IEZyYW1lVmlldyB0byBjaGVjayB0aGUgd3JpdGluZy1t
b2RlIG9mIHRoZSBkb2N1bWVudC4KICAgICB2aXJ0dWFsIGJvb2wgaXNWZXJ0aWNhbERvY3VtZW50
KCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQogICAgIHZpcnR1YWwgYm9vbCBpc0ZsaXBwZWREb2N1
bWVudCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCBib29sIGNvbnRhaW5z
U1ZHRG9jdW1lbnQoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogCiAgICAgLy8gQ2FsbGVkIHRv
IHVwZGF0ZSB0aGUgc2Nyb2xsYmFycyB0byBhY2N1cmF0ZWx5IHJlZmxlY3QgdGhlIHN0YXRlIG9m
IHRoZSB2aWV3LgogICAgIHZvaWQgdXBkYXRlU2Nyb2xsYmFycyhjb25zdCBJbnRTaXplJiBkZXNp
cmVkT2Zmc2V0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L01hc2tJbWFnZU9wZXJhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9NYXNrSW1hZ2VPcGVyYXRpb24uY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAuLjY3YWY4NWMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9NYXNrSW1hZ2VPcGVyYXRpb24uY3BwCkBAIC0wLDAgKzEsMjYxIEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDE0IEFkb2JlIFN5c3RlbXMgSW5jb3Jwb3JhdGVkLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
VEhFIENPUFlSSUdIVCBIT0xERVIgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUg
Q09QWVJJR0hUIEhPTERFUiBCRQorICogTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLAorICogT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
CisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUgorICogVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GCisgKiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YKKyAqIFNVQ0ggREFNQUdFLgorICov
CisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJNYXNrSW1hZ2VPcGVyYXRpb24uaCIK
KworI2luY2x1ZGUgIkNhY2hlZEltYWdlLmgiCisjaW5jbHVkZSAiQ2FjaGVkU1ZHRG9jdW1lbnQu
aCIKKyNpbmNsdWRlICJSZW5kZXJCb3hNb2RlbE9iamVjdC5oIgorI2luY2x1ZGUgIlJlbmRlclNW
R1Jlc291cmNlTWFza2VyLmgiCisjaW5jbHVkZSAiU1ZHRG9jdW1lbnQuaCIKKyNpbmNsdWRlICJT
VkdNYXNrRWxlbWVudC5oIgorI2luY2x1ZGUgIlNWR1NWR0VsZW1lbnQuaCIKKyNpbmNsdWRlICJT
dHlsZUNhY2hlZEltYWdlLmgiCisjaW5jbHVkZSAiU3VicmVzb3VyY2VMb2FkZXIuaCIKKyNpbmNs
dWRlICJXZWJLaXRDU1NSZXNvdXJjZVZhbHVlLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwor
UGFzc1JlZlB0cjxNYXNrSW1hZ2VPcGVyYXRpb24+IE1hc2tJbWFnZU9wZXJhdGlvbjo6Y3JlYXRl
KFBhc3NSZWZQdHI8V2ViS2l0Q1NTUmVzb3VyY2VWYWx1ZT4gY3NzVmFsdWUsIGNvbnN0IFN0cmlu
ZyYgdXJsLCBjb25zdCBTdHJpbmcmIGZyYWdtZW50LCBib29sIGlzRXh0ZXJuYWxEb2N1bWVudCwg
UGFzc1JlZlB0cjxDYWNoZWRSZXNvdXJjZUxvYWRlcj4gY2FjaGVkUmVzb3VyY2VMb2FkZXIpCit7
CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBNYXNrSW1hZ2VPcGVyYXRpb24oY3NzVmFsdWUsIHVy
bCwgZnJhZ21lbnQsIGlzRXh0ZXJuYWxEb2N1bWVudCwgY2FjaGVkUmVzb3VyY2VMb2FkZXIpKTsK
K30KKworUGFzc1JlZlB0cjxNYXNrSW1hZ2VPcGVyYXRpb24+IE1hc2tJbWFnZU9wZXJhdGlvbjo6
Y3JlYXRlKFBhc3NSZWZQdHI8U3R5bGVJbWFnZT4gZ2VuZXJhdGVkSW1hZ2UpCit7CisgICAgcmV0
dXJuIGFkb3B0UmVmKG5ldyBNYXNrSW1hZ2VPcGVyYXRpb24oZ2VuZXJhdGVkSW1hZ2UpKTsKK30K
KworUGFzc1JlZlB0cjxNYXNrSW1hZ2VPcGVyYXRpb24+IE1hc2tJbWFnZU9wZXJhdGlvbjo6Y3Jl
YXRlKCkKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IE1hc2tJbWFnZU9wZXJhdGlvbigpKTsK
K30KKworTWFza0ltYWdlT3BlcmF0aW9uOjpNYXNrSW1hZ2VPcGVyYXRpb24oUGFzc1JlZlB0cjxX
ZWJLaXRDU1NSZXNvdXJjZVZhbHVlPiBjc3NWYWx1ZSwgY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0
IFN0cmluZyYgZnJhZ21lbnQsIGJvb2wgaXNFeHRlcm5hbERvY3VtZW50LCBQYXNzUmVmUHRyPENh
Y2hlZFJlc291cmNlTG9hZGVyPiBjYWNoZWRSZXNvdXJjZUxvYWRlcikKKyAgICA6IG1fdXJsKHVy
bCkKKyAgICAsIG1fZnJhZ21lbnQoZnJhZ21lbnQpCisgICAgLCBtX2lzRXh0ZXJuYWxEb2N1bWVu
dChpc0V4dGVybmFsRG9jdW1lbnQpCisgICAgLCBtX3JlbmRlckxheWVySW1hZ2VDbGllbnQobnVs
bHB0cikKKyAgICAsIG1fY3NzTWFza0ltYWdlVmFsdWUoY3NzVmFsdWUpCisgICAgLCBtX2NhY2hl
ZFJlc291cmNlTG9hZGVyKGNhY2hlZFJlc291cmNlTG9hZGVyKQoreworICAgIEFTU0VSVChtX2Nz
c01hc2tJbWFnZVZhbHVlLmdldCgpKTsKK30KKworTWFza0ltYWdlT3BlcmF0aW9uOjpNYXNrSW1h
Z2VPcGVyYXRpb24oUGFzc1JlZlB0cjxTdHlsZUltYWdlPiBnZW5lcmF0ZWRJbWFnZSkKKyAgICA6
IG1faXNFeHRlcm5hbERvY3VtZW50KGZhbHNlKQorICAgICwgbV9zdHlsZUltYWdlKGdlbmVyYXRl
ZEltYWdlKQorICAgICwgbV9yZW5kZXJMYXllckltYWdlQ2xpZW50KG51bGxwdHIpCit7Cit9CisK
K01hc2tJbWFnZU9wZXJhdGlvbjo6TWFza0ltYWdlT3BlcmF0aW9uKCkKKyAgICA6IG1faXNFeHRl
cm5hbERvY3VtZW50KGZhbHNlKQorICAgICwgbV9yZW5kZXJMYXllckltYWdlQ2xpZW50KG51bGxw
dHIpCit7CisgICAgbV9jc3NNYXNrSW1hZ2VWYWx1ZSA9IFdlYktpdENTU1Jlc291cmNlVmFsdWU6
OmNyZWF0ZShDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlSWRlbnRpZmllcihDU1NWYWx1ZU5vbmUp
KTsKK30KKworTWFza0ltYWdlT3BlcmF0aW9uOjp+TWFza0ltYWdlT3BlcmF0aW9uKCkKK3sKK30K
KworYm9vbCBNYXNrSW1hZ2VPcGVyYXRpb246OmlzQ1NTVmFsdWVOb25lKCkgY29uc3QKK3sKKyAg
ICBpZiAoaW1hZ2UoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgQVNTRVJUKG1fY3Nz
TWFza0ltYWdlVmFsdWUuZ2V0KCkpOworICAgIHJldHVybiBtX2Nzc01hc2tJbWFnZVZhbHVlLT5p
c0NTU1ZhbHVlTm9uZSgpOworfQorCitQYXNzUmVmUHRyPENTU1ZhbHVlPiBNYXNrSW1hZ2VPcGVy
YXRpb246OmNzc1ZhbHVlKCkKK3sKKyAgICBpZiAoaW1hZ2UoKSkKKyAgICAgICAgcmV0dXJuIGlt
YWdlKCktPmNzc1ZhbHVlKCk7CisgICAgCisgICAgaWYgKGlzQ1NTVmFsdWVOb25lKCkpCisgICAg
ICAgIHJldHVybiBtX2Nzc01hc2tJbWFnZVZhbHVlLT5pbm5lclZhbHVlKCk7CisKKyAgICBBU1NF
UlQobV9jc3NNYXNrSW1hZ2VWYWx1ZS5nZXQoKSk7CisgICAgcmV0dXJuIG1fY3NzTWFza0ltYWdl
VmFsdWUuZ2V0KCk7Cit9CisKK2Jvb2wgTWFza0ltYWdlT3BlcmF0aW9uOjppc01hc2tMb2FkZWQo
KSBjb25zdAoreworICAgIGlmICghbV9pc0V4dGVybmFsRG9jdW1lbnQpCisgICAgICAgIHJldHVy
biB0cnVlOworCisgICAgaWYgKGltYWdlKCkpCisgICAgICAgIHJldHVybiAoaW1hZ2UoKS0+Y2Fj
aGVkSW1hZ2UoKSAmJiBpbWFnZSgpLT5jYWNoZWRJbWFnZSgpLT5pbWFnZSgpKTsKKyAgICAKKyAg
ICBpZiAobV9jYWNoZWRTVkdEb2N1bWVudFJlZmVyZW5jZS5nZXQoKSkgeworICAgICAgICBpZiAo
Q2FjaGVkU1ZHRG9jdW1lbnQqIGNhY2hlZFNWR0RvY3VtZW50ID0gbV9jYWNoZWRTVkdEb2N1bWVu
dFJlZmVyZW5jZS0+ZG9jdW1lbnQoKSkKKyAgICAgICAgICAgIHJldHVybiAoY2FjaGVkU1ZHRG9j
dW1lbnQtPmRvY3VtZW50KCkgIT0gbnVsbHB0cik7CisgICAgfQorICAgIAorICAgIHJldHVybiBm
YWxzZTsKK30KKwordm9pZCBNYXNrSW1hZ2VPcGVyYXRpb246OnNldFJlbmRlckxheWVySW1hZ2VD
bGllbnQoQ2FjaGVkSW1hZ2VDbGllbnQqIGNsaWVudCkKK3sKKyAgICBpZiAobV9yZW5kZXJMYXll
ckltYWdlQ2xpZW50ID09IGNsaWVudCkKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKENhY2hl
ZEltYWdlKiBjYWNoZWRJbWFnZSA9IChpbWFnZSgpID8gaW1hZ2UoKS0+Y2FjaGVkSW1hZ2UoKSA6
IG51bGxwdHIpKSB7CisgICAgICAgIGlmIChtX3JlbmRlckxheWVySW1hZ2VDbGllbnQpCisgICAg
ICAgICAgICBjYWNoZWRJbWFnZS0+cmVtb3ZlQ2xpZW50KG1fcmVuZGVyTGF5ZXJJbWFnZUNsaWVu
dCk7CisgICAgICAgIAorICAgICAgICBpZiAoY2xpZW50KQorICAgICAgICAgICAgY2FjaGVkSW1h
Z2UtPmFkZENsaWVudChjbGllbnQpOworICAgIH0KKworICAgIG1fcmVuZGVyTGF5ZXJJbWFnZUNs
aWVudCA9IGNsaWVudDsKK30KKwordm9pZCBNYXNrSW1hZ2VPcGVyYXRpb246OmFkZFJlbmRlcmVy
SW1hZ2VDbGllbnQoUmVuZGVyRWxlbWVudCogY2xpZW50KQoreworICAgIEFTU0VSVChjbGllbnQp
OworCisgICAgaWYgKG1fc3R5bGVJbWFnZS5nZXQoKSkKKyAgICAgICAgbV9zdHlsZUltYWdlLT5h
ZGRDbGllbnQoY2xpZW50KTsKKyAgICAKKyAgICBtX3JlbmRlcmVySW1hZ2VDbGllbnRzLmFkZChj
bGllbnQpOworfQorCit2b2lkIE1hc2tJbWFnZU9wZXJhdGlvbjo6cmVtb3ZlUmVuZGVyZXJJbWFn
ZUNsaWVudChSZW5kZXJFbGVtZW50KiBjbGllbnQpCit7CisgICAgQVNTRVJUKGNsaWVudCAmJiBt
X3JlbmRlcmVySW1hZ2VDbGllbnRzLmNvbnRhaW5zKGNsaWVudCkpOworICAgIAorICAgIGlmICht
X3N0eWxlSW1hZ2UuZ2V0KCkpCisgICAgICAgIG1fc3R5bGVJbWFnZS0+cmVtb3ZlQ2xpZW50KGNs
aWVudCk7CisgICAgCisgICAgbV9yZW5kZXJlckltYWdlQ2xpZW50cy5yZW1vdmUoY2xpZW50KTsK
K30KKworQ2FjaGVkU1ZHRG9jdW1lbnRSZWZlcmVuY2UqIE1hc2tJbWFnZU9wZXJhdGlvbjo6ZW5z
dXJlQ2FjaGVkU1ZHRG9jdW1lbnRSZWZlcmVuY2UoKQoreworICAgIC8vIElmIHdlIGVuZGVkIHVw
IGxvYWRpbmcgdGhlIGRhdGEgaW50byBhbiBJbWFnZSwgdGhlbiB0aGUgU1ZHIGRvY3VtZW50IHdh
cyBub3QgdmFsaWQuCisgICAgaWYgKGltYWdlKCkpCisgICAgICAgIHJldHVybiBudWxscHRyOwor
CisgICAgaWYgKCFtX2NhY2hlZFNWR0RvY3VtZW50UmVmZXJlbmNlLmdldCgpKQorICAgICAgICBt
X2NhY2hlZFNWR0RvY3VtZW50UmVmZXJlbmNlID0gc3RkOjptYWtlX3VuaXF1ZTxDYWNoZWRTVkdE
b2N1bWVudFJlZmVyZW5jZT4obV91cmwsIHRoaXMsIGZhbHNlKTsKKyAgICByZXR1cm4gbV9jYWNo
ZWRTVkdEb2N1bWVudFJlZmVyZW5jZS5nZXQoKTsKK30KKwordm9pZCBNYXNrSW1hZ2VPcGVyYXRp
b246Om5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlKiByZXNvdXJjZSkKK3sKKyAgICAvLyBU
aGUgb25seSBvbmUgbm90aWZ5aW5nIHVzIHNob3VsZCBiZSB0aGUgU1ZHIGRvY3VtZW50IHdlIGhv
bGQuCisgICAgQ2FjaGVkU1ZHRG9jdW1lbnQqIGNhY2hlZFNWR0RvY3VtZW50ID0gZW5zdXJlQ2Fj
aGVkU1ZHRG9jdW1lbnRSZWZlcmVuY2UoKS0+ZG9jdW1lbnQoKTsKKyAgICBpZiAoKENhY2hlZFJl
c291cmNlKiljYWNoZWRTVkdEb2N1bWVudCAhPSByZXNvdXJjZSB8fCAhcmVzb3VyY2UpIHsKKyAg
ICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAg
CisgICAgLy8gQ2hlY2sgaWYgd2UgZmluZCBhIHZhbGlkIG1hc2tpbmcgZWxlbWVudCBpbiB0aGlz
IFNWRyBkb2N1bWVudC4KKyAgICBTVkdEb2N1bWVudCogc3ZnRG9jdW1lbnQgPSBjYWNoZWRTVkdE
b2N1bWVudC0+ZG9jdW1lbnQoKTsKKyAgICBib29sIHZhbGlkTWFza0ZvdW5kID0gZmFsc2U7Cisg
ICAgaWYgKHN2Z0RvY3VtZW50ICYmIHN2Z0RvY3VtZW50LT5yb290RWxlbWVudCgpKSB7CisgICAg
ICAgIC8vIEFyZSB3ZSBsb29raW5nIGZvciBhIHNwZWNpZmljIGVsZW1lbnQgaW4gdGhlIFNWRyBk
b2N1bWVudD8KKyAgICAgICAgaWYgKGZyYWdtZW50KCkubGVuZ3RoKCkpIHsKKyAgICAgICAgICAg
IGlmIChFbGVtZW50KiBtYXNraW5nRWxlbWVudCA9IHN2Z0RvY3VtZW50LT5yb290RWxlbWVudCgp
LT5nZXRFbGVtZW50QnlJZChmcmFnbWVudCgpKSkgeworICAgICAgICAgICAgICAgIGlmIChpczxT
VkdNYXNrRWxlbWVudD4obWFza2luZ0VsZW1lbnQpKQorICAgICAgICAgICAgICAgICAgICB2YWxp
ZE1hc2tGb3VuZCA9IHRydWU7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisgICAg
CisgICAgLy8gSWYgbm8gdmFsaWQgbWFzayB3YXMgZm91bmQsIHRoaXMgaXMgbm90IGEgdmFsaWQg
U1ZHIGRvY3VtZW50IG9yIGl0IHNwZWNpZmllZCBhbiBpbnZhbGlkIGZyYWdtZW50IGlkZW50aWZp
ZXIuCisgICAgLy8gRmFsbGJhY2sgdG8gdGhlIG5vcm1hbCB3YXkgb2YgbG9hZGluZyB0aGUgZG9j
dW1lbnQgaW4gYW4gSW1hZ2Ugb2JqZWN0LgorICAgIGlmICghdmFsaWRNYXNrRm91bmQpIHsKKyAg
ICAgICAgLy8gR2V0IHRoZSByZXNvdXJjZSBsb2FkZXIsIGFjcXVpcmUgdGhlIHJlc291cmNlIGJ1
ZmZlciBhbmQgbG9hZCBpdCBpbnRvIGFuIGltYWdlLgorICAgICAgICBBU1NFUlQoY2FjaGVkU1ZH
RG9jdW1lbnQtPmxvYWRlcigpKTsKKyAgICAgICAgaWYgKFN1YnJlc291cmNlTG9hZGVyKiBsb2Fk
ZXIgPSBjYWNoZWRTVkdEb2N1bWVudC0+bG9hZGVyKCkpIHsKKyAgICAgICAgICAgIGlmIChTaGFy
ZWRCdWZmZXIqIGRhdGFCdWZmZXIgPSBsb2FkZXItPnJlc291cmNlRGF0YSgpKSB7CisgICAgICAg
ICAgICAgICAgbV9zdHlsZUltYWdlID0gU3R5bGVDYWNoZWRJbWFnZTo6Y3JlYXRlKG5ldyBDYWNo
ZWRJbWFnZShjYWNoZWRTVkdEb2N1bWVudC0+cmVzb3VyY2VSZXF1ZXN0KCksIGNhY2hlZFNWR0Rv
Y3VtZW50LT5zZXNzaW9uSUQoKSkpOworICAgICAgICAgICAgICAgIGlmIChtX3JlbmRlckxheWVy
SW1hZ2VDbGllbnQpCisgICAgICAgICAgICAgICAgICAgIG1fc3R5bGVJbWFnZS0+Y2FjaGVkSW1h
Z2UoKS0+YWRkQ2xpZW50KG1fcmVuZGVyTGF5ZXJJbWFnZUNsaWVudCk7CisgICAgICAgICAgICAg
ICAgZm9yIChhdXRvIGl0Q2xpZW50IDogbV9yZW5kZXJlckltYWdlQ2xpZW50cykKKyAgICAgICAg
ICAgICAgICAgICAgbV9zdHlsZUltYWdlLT5hZGRDbGllbnQoaXRDbGllbnQua2V5KTsKKworICAg
ICAgICAgICAgICAgIG1fc3R5bGVJbWFnZS0+Y2FjaGVkSW1hZ2UoKS0+c2V0UmVzcG9uc2UoY2Fj
aGVkU1ZHRG9jdW1lbnQtPnJlc3BvbnNlKCkpOworICAgICAgICAgICAgICAgIG1fc3R5bGVJbWFn
ZS0+Y2FjaGVkSW1hZ2UoKS0+ZmluaXNoTG9hZGluZyhkYXRhQnVmZmVyKTsKKworICAgICAgICAg
ICAgICAgIC8vIExldCB0aGUgY2FjaGVkIHJlc291cmNlIGxvYWRlciBvZiB0aGUgZG9jdW1lbnQg
d2hpY2ggcmVxdWVzdGVkIHRoaXMgbWFzayBrZWVwIGEgaGFuZGxlIHRvIHRoaXMKKyAgICAgICAg
ICAgICAgICAvLyBjYWNoZWQgaW1hZ2UgdG8gZW5zdXJlIGl0IG9ubHkgZ2V0cyBkZWxldGVkIHdo
ZW4gaXQgc2hvdWxkLgorICAgICAgICAgICAgICAgIGlmIChtX2NhY2hlZFJlc291cmNlTG9hZGVy
LmdldCgpKQorICAgICAgICAgICAgICAgICAgICBtX2NhY2hlZFJlc291cmNlTG9hZGVyLT5hZGRD
YWNoZWRSZXNvdXJjZShtX3N0eWxlSW1hZ2UtPmNhY2hlZEltYWdlKCkpOworICAgICAgICAgICAg
fQorICAgICAgICAgICAgCisgICAgICAgICAgICAvLyBEZXN0cm95IHRoZSBjdXJyZW50IFNWRyBk
b2N1bWVudCBhcyBpdHMgbm8gbG9uZ2VyIG5lZWRlZAorICAgICAgICAgICAgbV9jYWNoZWRTVkdE
b2N1bWVudFJlZmVyZW5jZSA9IG51bGxwdHI7CisgICAgICAgIH0KKyAgICB9Cit9CisKK2Jvb2wg
TWFza0ltYWdlT3BlcmF0aW9uOjpkcmF3TWFzayhSZW5kZXJFbGVtZW50JiByZW5kZXJlciwgQmFj
a2dyb3VuZEltYWdlR2VvbWV0cnkmIGdlb21ldHJ5LCBHcmFwaGljc0NvbnRleHQqIGNvbnRleHQs
IENvbXBvc2l0ZU9wZXJhdG9yIGNvbXBvc2l0ZU9wKQoreworICAgIC8vIFRoaXMgbWV0aG9kIG9u
bHkgaGFuZGxlcyBjdXN0b20gbWFza3MuCisgICAgaWYgKGltYWdlKCkpCisgICAgICAgIHJldHVy
biBmYWxzZTsKKworICAgIGlmIChSZW5kZXJTVkdSZXNvdXJjZU1hc2tlciogc3ZnTWFza2VyID0g
Z2V0U1ZHTWFza2VyKHJlbmRlcmVyKSkgeworICAgICAgICBzdmdNYXNrZXItPmRyYXdNYXNrRm9y
UmVuZGVyZXIocmVuZGVyZXIsIGdlb21ldHJ5LCBjb250ZXh0LCBjb21wb3NpdGVPcCk7CisgICAg
ICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAgIHJldHVybiBmYWxzZTsKK30KKworUmVuZGVy
U1ZHUmVzb3VyY2VNYXNrZXIqIE1hc2tJbWFnZU9wZXJhdGlvbjo6Z2V0U1ZHTWFza2VyKFJlbmRl
ckVsZW1lbnQmIHJlbmRlcmVyKQoreworICAgIGlmIChpbWFnZSgpKQorICAgICAgICByZXR1cm4g
bnVsbHB0cjsKKworICAgIC8vIElkZW50aWZ5IHRoZSBlbGVtZW50IHJlZmVyZW5jZWQgYnkgdGhl
IGZyYWdtZW50SWQuCisgICAgQ2FjaGVkU1ZHRG9jdW1lbnRSZWZlcmVuY2UqIHN2Z0RvY3VtZW50
UmVmZXJlbmNlID0gY2FjaGVkU1ZHRG9jdW1lbnRSZWZlcmVuY2UoKTsKKyAgICBFbGVtZW50KiBl
bGVtZW50Rm9yTWFza2luZyA9IG51bGxwdHI7CisgICAgUmVuZGVyT2JqZWN0KiBzdmdSZXNvdXJj
ZUZvck1hc2tpbmcgPSBudWxscHRyOworICAgIGlmIChzdmdEb2N1bWVudFJlZmVyZW5jZSAmJiBz
dmdEb2N1bWVudFJlZmVyZW5jZS0+ZG9jdW1lbnQoKSkgeworICAgICAgICBTVkdEb2N1bWVudCog
c3ZnRG9jdW1lbnQgPSBzdmdEb2N1bWVudFJlZmVyZW5jZS0+ZG9jdW1lbnQoKS0+ZG9jdW1lbnQo
KTsKKyAgICAgICAgaWYgKHN2Z0RvY3VtZW50ICYmIHN2Z0RvY3VtZW50LT5yb290RWxlbWVudCgp
KQorICAgICAgICAgICAgZWxlbWVudEZvck1hc2tpbmcgPSBzdmdEb2N1bWVudC0+cm9vdEVsZW1l
bnQoKS0+Z2V0RWxlbWVudEJ5SWQoZnJhZ21lbnQoKSk7CisgICAgfSBlbHNlCisgICAgICAgIGVs
ZW1lbnRGb3JNYXNraW5nID0gcmVuZGVyZXIuZG9jdW1lbnQoKS5nZXRFbGVtZW50QnlJZChmcmFn
bWVudCgpKTsKKworICAgIGlmIChlbGVtZW50Rm9yTWFza2luZykKKyAgICAgICAgc3ZnUmVzb3Vy
Y2VGb3JNYXNraW5nID0gZWxlbWVudEZvck1hc2tpbmctPnJlbmRlcmVyKCk7CisKKyAgICAvLyBD
aGVjayBpZiBpdCdzIHRoZSBjb3JyZWN0IHR5cGUKKyAgICBpZiAoc3ZnUmVzb3VyY2VGb3JNYXNr
aW5nICYmIHN2Z1Jlc291cmNlRm9yTWFza2luZy0+aXNTVkdSZXNvdXJjZUNvbnRhaW5lcigpICYm
IGRvd25jYXN0PFJlbmRlclNWR1Jlc291cmNlQ29udGFpbmVyPihzdmdSZXNvdXJjZUZvck1hc2tp
bmcpLT5yZXNvdXJjZVR5cGUoKSA9PSBNYXNrZXJSZXNvdXJjZVR5cGUpCisgICAgICAgIHJldHVy
biBzdGF0aWNfY2FzdDxSZW5kZXJTVkdSZXNvdXJjZU1hc2tlcio+KHN2Z1Jlc291cmNlRm9yTWFz
a2luZyk7CisKKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWFza0ltYWdl
T3BlcmF0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NYXNrSW1hZ2VP
cGVyYXRpb24uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40ODc1M2JkCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWFza0lt
YWdlT3BlcmF0aW9uLmgKQEAgLTAsMCArMSw5NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
NCBBZG9iZSBTeXN0ZW1zIEluY29ycG9yYXRlZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9M
REVSICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBIT0xERVIg
QkUKKyAqIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwKKyAqIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IKKyAqIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRgorICogVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GCisgKiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIE1hc2tJ
bWFnZU9wZXJhdGlvbl9oCisjZGVmaW5lIE1hc2tJbWFnZU9wZXJhdGlvbl9oCisKKyNpbmNsdWRl
ICJDYWNoZWRSZXNvdXJjZUxvYWRlci5oIgorI2luY2x1ZGUgIkNhY2hlZFNWR0RvY3VtZW50Q2xp
ZW50LmgiCisjaW5jbHVkZSAiQ2FjaGVkU1ZHRG9jdW1lbnRSZWZlcmVuY2UuaCIKKyNpbmNsdWRl
ICJDb2xvci5oIgorI2luY2x1ZGUgIkltYWdlLmgiCisjaW5jbHVkZSAiTGF5b3V0U2l6ZS5oIgor
I2luY2x1ZGUgIkxlbmd0aC5oIgorI2luY2x1ZGUgIlN0eWxlSW1hZ2UuaCIKKyNpbmNsdWRlIDx3
dGYvSGFzaENvdW50ZWRTZXQuaD4KKyNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CisjaW5jbHVkZSA8
d3RmL1Bhc3NPd25QdHIuaD4KKyNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgorI2luY2x1ZGUg
PHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisgICAgCitjbGFz
cyBCYWNrZ3JvdW5kSW1hZ2VHZW9tZXRyeTsKK2NsYXNzIENhY2hlZEltYWdlQ2xpZW50OworY2xh
c3MgUmVuZGVyU1ZHUmVzb3VyY2VNYXNrZXI7CitjbGFzcyBXZWJLaXRDU1NSZXNvdXJjZVZhbHVl
OworCitjbGFzcyBNYXNrSW1hZ2VPcGVyYXRpb24gZmluYWwgOiBwdWJsaWMgUmVmQ291bnRlZDxN
YXNrSW1hZ2VPcGVyYXRpb24+LCBwdWJsaWMgQ2FjaGVkU1ZHRG9jdW1lbnRDbGllbnQgeworcHVi
bGljOgorICAgIHN0YXRpYyBQYXNzUmVmUHRyPE1hc2tJbWFnZU9wZXJhdGlvbj4gY3JlYXRlKFBh
c3NSZWZQdHI8V2ViS2l0Q1NTUmVzb3VyY2VWYWx1ZT4gY3NzVmFsdWUsIGNvbnN0IFN0cmluZyYg
dXJsLCBjb25zdCBTdHJpbmcmIGZyYWdtZW50LCBib29sIGlzRXh0ZXJuYWxEb2N1bWVudCwgUGFz
c1JlZlB0cjxDYWNoZWRSZXNvdXJjZUxvYWRlcj4pOworICAgIHN0YXRpYyBQYXNzUmVmUHRyPE1h
c2tJbWFnZU9wZXJhdGlvbj4gY3JlYXRlKFBhc3NSZWZQdHI8U3R5bGVJbWFnZT4gZ2VuZXJhdGVk
SW1hZ2UpOworICAgIHN0YXRpYyBQYXNzUmVmUHRyPE1hc2tJbWFnZU9wZXJhdGlvbj4gY3JlYXRl
KCk7CisKKyAgICBQYXNzUmVmUHRyPENTU1ZhbHVlPiBjc3NWYWx1ZSgpOworCisgICAgdmlydHVh
bCB+TWFza0ltYWdlT3BlcmF0aW9uKCk7CisKKyAgICBjb25zdCBTdHJpbmcmIHVybCgpIGNvbnN0
IHsgcmV0dXJuIG1fdXJsOyB9CisgICAgY29uc3QgU3RyaW5nJiBmcmFnbWVudCgpIGNvbnN0IHsg
cmV0dXJuIG1fZnJhZ21lbnQ7IH0KKyAgICBTdHlsZUltYWdlKiBpbWFnZSgpIGNvbnN0IHsgcmV0
dXJuIG1fc3R5bGVJbWFnZS5nZXQoKTsgfQorICAgIHZvaWQgc2V0SW1hZ2UoUGFzc1JlZlB0cjxT
dHlsZUltYWdlPiBpbWFnZSkgeyBtX3N0eWxlSW1hZ2UgPSBpbWFnZTsgfQorICAgIHZvaWQgc2V0
UmVuZGVyTGF5ZXJJbWFnZUNsaWVudChDYWNoZWRJbWFnZUNsaWVudCopOworICAgIHZvaWQgYWRk
UmVuZGVyZXJJbWFnZUNsaWVudChSZW5kZXJFbGVtZW50Kik7CisgICAgdm9pZCByZW1vdmVSZW5k
ZXJlckltYWdlQ2xpZW50KFJlbmRlckVsZW1lbnQqKTsKKyAgICBib29sIGlzTWFza0xvYWRlZCgp
IGNvbnN0OworICAgIGJvb2wgZHJhd01hc2soUmVuZGVyRWxlbWVudCYgcmVuZGVyZXIsIEJhY2tn
cm91bmRJbWFnZUdlb21ldHJ5JiwgR3JhcGhpY3NDb250ZXh0KiwgQ29tcG9zaXRlT3BlcmF0b3Ip
OworICAgIGJvb2wgaXNDU1NWYWx1ZU5vbmUoKSBjb25zdDsKKworICAgIENhY2hlZFNWR0RvY3Vt
ZW50UmVmZXJlbmNlKiBjYWNoZWRTVkdEb2N1bWVudFJlZmVyZW5jZSgpIGNvbnN0IHsgcmV0dXJu
IG1fY2FjaGVkU1ZHRG9jdW1lbnRSZWZlcmVuY2UuZ2V0KCk7IH0KKyAgICBDYWNoZWRTVkdEb2N1
bWVudFJlZmVyZW5jZSogZW5zdXJlQ2FjaGVkU1ZHRG9jdW1lbnRSZWZlcmVuY2UoKTsKKyAgICAK
KyAgICB2aXJ0dWFsIHZvaWQgbm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UqKSBvdmVycmlk
ZTsKKworcHJpdmF0ZToKKyAgICBNYXNrSW1hZ2VPcGVyYXRpb24oUGFzc1JlZlB0cjxXZWJLaXRD
U1NSZXNvdXJjZVZhbHVlPiBjc3NWYWx1ZSwgY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0cmlu
ZyYgZnJhZ21lbnQsIGJvb2wgaXNFeHRlcm5hbERvY3VtZW50LCBQYXNzUmVmUHRyPENhY2hlZFJl
c291cmNlTG9hZGVyPik7CisgICAgTWFza0ltYWdlT3BlcmF0aW9uKFBhc3NSZWZQdHI8U3R5bGVJ
bWFnZT4gZ2VuZXJhdGVkSW1hZ2UpOworICAgIE1hc2tJbWFnZU9wZXJhdGlvbigpOworCisgICAg
UmVuZGVyU1ZHUmVzb3VyY2VNYXNrZXIqIGdldFNWR01hc2tlcihSZW5kZXJFbGVtZW50JiByZW5k
ZXJlcik7CisKKyAgICBTdHJpbmcgbV91cmw7CisgICAgU3RyaW5nIG1fZnJhZ21lbnQ7CisgICAg
Ym9vbCBtX2lzRXh0ZXJuYWxEb2N1bWVudDsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8Q2FjaGVkU1ZH
RG9jdW1lbnRSZWZlcmVuY2U+IG1fY2FjaGVkU1ZHRG9jdW1lbnRSZWZlcmVuY2U7CisgICAgUmVm
UHRyPFN0eWxlSW1hZ2U+IG1fc3R5bGVJbWFnZTsKKyAgICBDYWNoZWRJbWFnZUNsaWVudCogbV9y
ZW5kZXJMYXllckltYWdlQ2xpZW50OworICAgIEhhc2hDb3VudGVkU2V0PFJlbmRlckVsZW1lbnQq
PiBtX3JlbmRlcmVySW1hZ2VDbGllbnRzOworICAgIFJlZlB0cjxXZWJLaXRDU1NSZXNvdXJjZVZh
bHVlPiBtX2Nzc01hc2tJbWFnZVZhbHVlOworICAgIFJlZlB0cjxDYWNoZWRSZXNvdXJjZUxvYWRl
cj4gbV9jYWNoZWRSZXNvdXJjZUxvYWRlcjsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
KworI2VuZGlmIC8vIE1hc2tJbWFnZU9wZXJhdGlvbl9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmNwcAppbmRleCA3YjVhNTI4Li45MTJhNWY1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmpl
Y3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVj
dC5jcHAKQEAgLTEwMTcsMzEgKzEwMTcsMzEgQEAgTGF5b3V0U2l6ZSBSZW5kZXJCb3hNb2RlbE9i
amVjdDo6Y2FsY3VsYXRlRmlsbFRpbGVTaXplKGNvbnN0IEZpbGxMYXllciogZmlsbExheWUKICAg
ICByZXR1cm4gTGF5b3V0U2l6ZSgpOwogfQogCi12b2lkIFJlbmRlckJveE1vZGVsT2JqZWN0OjpC
YWNrZ3JvdW5kSW1hZ2VHZW9tZXRyeTo6c2V0Tm9SZXBlYXRYKExheW91dFVuaXQgeE9mZnNldCkK
K3ZvaWQgQmFja2dyb3VuZEltYWdlR2VvbWV0cnk6OnNldE5vUmVwZWF0WChMYXlvdXRVbml0IHhP
ZmZzZXQpCiB7CiAgICAgbV9kZXN0UmVjdC5tb3ZlKHN0ZDo6bWF4PExheW91dFVuaXQ+KHhPZmZz
ZXQsIDApLCAwKTsKICAgICBtX3BoYXNlLnNldFgoLXN0ZDo6bWluPExheW91dFVuaXQ+KHhPZmZz
ZXQsIDApKTsKICAgICBtX2Rlc3RSZWN0LnNldFdpZHRoKG1fdGlsZVNpemUud2lkdGgoKSArIHN0
ZDo6bWluPGZsb2F0Pih4T2Zmc2V0LCAwKSk7CiB9Ci12b2lkIFJlbmRlckJveE1vZGVsT2JqZWN0
OjpCYWNrZ3JvdW5kSW1hZ2VHZW9tZXRyeTo6c2V0Tm9SZXBlYXRZKExheW91dFVuaXQgeU9mZnNl
dCkKK3ZvaWQgQmFja2dyb3VuZEltYWdlR2VvbWV0cnk6OnNldE5vUmVwZWF0WShMYXlvdXRVbml0
IHlPZmZzZXQpCiB7CiAgICAgbV9kZXN0UmVjdC5tb3ZlKDAsIHN0ZDo6bWF4PExheW91dFVuaXQ+
KHlPZmZzZXQsIDApKTsKICAgICBtX3BoYXNlLnNldFkoLXN0ZDo6bWluPExheW91dFVuaXQ+KHlP
ZmZzZXQsIDApKTsKICAgICBtX2Rlc3RSZWN0LnNldEhlaWdodChtX3RpbGVTaXplLmhlaWdodCgp
ICsgc3RkOjptaW48ZmxvYXQ+KHlPZmZzZXQsIDApKTsKIH0KIAotdm9pZCBSZW5kZXJCb3hNb2Rl
bE9iamVjdDo6QmFja2dyb3VuZEltYWdlR2VvbWV0cnk6OnVzZUZpeGVkQXR0YWNobWVudChjb25z
dCBMYXlvdXRQb2ludCYgYXR0YWNobWVudFBvaW50KQordm9pZCBCYWNrZ3JvdW5kSW1hZ2VHZW9t
ZXRyeTo6dXNlRml4ZWRBdHRhY2htZW50KGNvbnN0IExheW91dFBvaW50JiBhdHRhY2htZW50UG9p
bnQpCiB7CiAgICAgRmxvYXRQb2ludCBhbGlnbmVkUG9pbnQgPSBhdHRhY2htZW50UG9pbnQ7CiAg
ICAgbV9waGFzZS5tb3ZlKHN0ZDo6bWF4PExheW91dFVuaXQ+KGFsaWduZWRQb2ludC54KCkgLSBt
X2Rlc3RSZWN0LngoKSwgMCksIHN0ZDo6bWF4PExheW91dFVuaXQ+KGFsaWduZWRQb2ludC55KCkg
LSBtX2Rlc3RSZWN0LnkoKSwgMCkpOwogfQogCi12b2lkIFJlbmRlckJveE1vZGVsT2JqZWN0OjpC
YWNrZ3JvdW5kSW1hZ2VHZW9tZXRyeTo6Y2xpcChjb25zdCBMYXlvdXRSZWN0JiBjbGlwUmVjdCkK
K3ZvaWQgQmFja2dyb3VuZEltYWdlR2VvbWV0cnk6OmNsaXAoY29uc3QgTGF5b3V0UmVjdCYgY2xp
cFJlY3QpCiB7CiAgICAgbV9kZXN0UmVjdC5pbnRlcnNlY3QoY2xpcFJlY3QpOwogfQogCi1MYXlv
dXRQb2ludCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6QmFja2dyb3VuZEltYWdlR2VvbWV0cnk6OnJl
bGF0aXZlUGhhc2UoKSBjb25zdAorTGF5b3V0UG9pbnQgQmFja2dyb3VuZEltYWdlR2VvbWV0cnk6
OnJlbGF0aXZlUGhhc2UoKSBjb25zdAogewogICAgIExheW91dFBvaW50IHBoYXNlID0gbV9waGFz
ZTsKICAgICBwaGFzZSArPSBtX2Rlc3RSZWN0LmxvY2F0aW9uKCkgLSBtX2Rlc3RPcmlnaW47CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3Qu
aCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5oCmluZGV4
IDE5NTU4YzYuLjA3MDJkNDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJCb3hNb2RlbE9iamVjdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJCb3hNb2RlbE9iamVjdC5oCkBAIC02NSw2ICs2NSw1MiBAQCBjbGFzcyBSZW5kZXJOYW1lZEZs
b3dGcmFnbWVudDsKIGNsYXNzIFJlbmRlclRleHRGcmFnbWVudDsKIGNsYXNzIFN0aWNreVBvc2l0
aW9uVmlld3BvcnRDb25zdHJhaW50czsKIAorY2xhc3MgQmFja2dyb3VuZEltYWdlR2VvbWV0cnkg
eworcHVibGljOgorICAgIEJhY2tncm91bmRJbWFnZUdlb21ldHJ5KCkKKyAgICAgICAgOiBtX2hh
c05vbkxvY2FsR2VvbWV0cnkoZmFsc2UpCisgICAgeyB9CisKKyAgICBMYXlvdXRQb2ludCBkZXN0
T3JpZ2luKCkgY29uc3QgeyByZXR1cm4gbV9kZXN0T3JpZ2luOyB9CisgICAgdm9pZCBzZXREZXN0
T3JpZ2luKGNvbnN0IExheW91dFBvaW50JiBkZXN0T3JpZ2luKSB7IG1fZGVzdE9yaWdpbiA9IGRl
c3RPcmlnaW47IH0KKyAgICAKKyAgICBMYXlvdXRSZWN0IGRlc3RSZWN0KCkgY29uc3QgeyByZXR1
cm4gbV9kZXN0UmVjdDsgfQorICAgIHZvaWQgc2V0RGVzdFJlY3QoY29uc3QgTGF5b3V0UmVjdCYg
ZGVzdFJlY3QpIHsgbV9kZXN0UmVjdCA9IGRlc3RSZWN0OyB9CisgICAgCisgICAgLy8gUmV0dXJu
cyB0aGUgcGhhc2UgcmVsYXRpdmUgdG8gdGhlIGRlc3RpbmF0aW9uIHJlY3RhbmdsZS4KKyAgICBM
YXlvdXRQb2ludCByZWxhdGl2ZVBoYXNlKCkgY29uc3Q7CisgICAgCisgICAgTGF5b3V0UG9pbnQg
cGhhc2UoKSBjb25zdCB7IHJldHVybiBtX3BoYXNlOyB9CisgICAgdm9pZCBzZXRQaGFzZShjb25z
dCBMYXlvdXRQb2ludCYgcGhhc2UpIHsgbV9waGFzZSA9IHBoYXNlOyB9CisgICAgCisgICAgTGF5
b3V0U2l6ZSB0aWxlU2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fdGlsZVNpemU7IH0KKyAgICB2b2lk
IHNldFRpbGVTaXplKGNvbnN0IExheW91dFNpemUmIHRpbGVTaXplKSB7IG1fdGlsZVNpemUgPSB0
aWxlU2l6ZTsgfQorICAgIAorICAgIExheW91dFNpemUgc3BhY2VTaXplKCkgY29uc3QgeyByZXR1
cm4gbV9zcGFjZTsgfQorICAgIHZvaWQgc2V0U3BhY2VTaXplKGNvbnN0IExheW91dFNpemUmIHNw
YWNlKSB7IG1fc3BhY2UgPSBzcGFjZTsgfQorICAgIAorICAgIHZvaWQgc2V0UGhhc2VYKExheW91
dFVuaXQgIHgpIHsgbV9waGFzZS5zZXRYKHgpOyB9CisgICAgdm9pZCBzZXRQaGFzZVkoTGF5b3V0
VW5pdCB5KSB7IG1fcGhhc2Uuc2V0WSh5KTsgfQorICAgIAorICAgIHZvaWQgc2V0Tm9SZXBlYXRY
KExheW91dFVuaXQgeE9mZnNldCk7CisgICAgdm9pZCBzZXROb1JlcGVhdFkoTGF5b3V0VW5pdCB5
T2Zmc2V0KTsKKyAgICAKKyAgICB2b2lkIHVzZUZpeGVkQXR0YWNobWVudChjb25zdCBMYXlvdXRQ
b2ludCYgYXR0YWNobWVudFBvaW50KTsKKyAgICAKKyAgICB2b2lkIGNsaXAoY29uc3QgTGF5b3V0
UmVjdCYpOworICAgIAorICAgIHZvaWQgc2V0SGFzTm9uTG9jYWxHZW9tZXRyeShib29sIGhhc05v
bkxvY2FsR2VvbWV0cnkgPSB0cnVlKSB7IG1faGFzTm9uTG9jYWxHZW9tZXRyeSA9IGhhc05vbkxv
Y2FsR2VvbWV0cnk7IH0KKyAgICBib29sIGhhc05vbkxvY2FsR2VvbWV0cnkoKSBjb25zdCB7IHJl
dHVybiBtX2hhc05vbkxvY2FsR2VvbWV0cnk7IH0KKyAgICAKK3ByaXZhdGU6CisgICAgTGF5b3V0
UmVjdCBtX2Rlc3RSZWN0OworICAgIExheW91dFBvaW50IG1fZGVzdE9yaWdpbjsKKyAgICBMYXlv
dXRQb2ludCBtX3BoYXNlOworICAgIExheW91dFNpemUgbV90aWxlU2l6ZTsKKyAgICBMYXlvdXRT
aXplIG1fc3BhY2U7CisgICAgYm9vbCBtX2hhc05vbkxvY2FsR2VvbWV0cnk7IC8vIEhhcyBiYWNr
Z3JvdW5kLWF0dGFjaG1lbnQ6IGZpeGVkLiBJbXBsaWVzIHRoYXQgd2UgY2FuJ3QgYWx3YXlzIGNo
ZWFwbHkgY29tcHV0ZSBkZXN0UmVjdC4KK307CisKIC8vIFRoaXMgY2xhc3MgaXMgdGhlIGJhc2Ug
Zm9yIGFsbCBvYmplY3RzIHRoYXQgYWRoZXJlIHRvIHRoZSBDU1MgYm94IG1vZGVsIGFzIGRlc2Ny
aWJlZAogLy8gYXQgaHR0cDovL3d3dy53My5vcmcvVFIvQ1NTMjEvYm94Lmh0bWwKIApAQCAtMjEw
LDUxICsyNTYsNiBAQCBwcm90ZWN0ZWQ6CiAKICAgICB2aXJ0dWFsIHZvaWQgd2lsbEJlRGVzdHJv
eWVkKCkgb3ZlcnJpZGU7CiAKLSAgICBjbGFzcyBCYWNrZ3JvdW5kSW1hZ2VHZW9tZXRyeSB7Ci0g
ICAgcHVibGljOgotICAgICAgICBCYWNrZ3JvdW5kSW1hZ2VHZW9tZXRyeSgpCi0gICAgICAgICAg
ICA6IG1faGFzTm9uTG9jYWxHZW9tZXRyeShmYWxzZSkKLSAgICAgICAgeyB9Ci0gICAgICAgIExh
eW91dFBvaW50IGRlc3RPcmlnaW4oKSBjb25zdCB7IHJldHVybiBtX2Rlc3RPcmlnaW47IH0KLSAg
ICAgICAgdm9pZCBzZXREZXN0T3JpZ2luKGNvbnN0IExheW91dFBvaW50JiBkZXN0T3JpZ2luKSB7
IG1fZGVzdE9yaWdpbiA9IGRlc3RPcmlnaW47IH0KLSAgICAgICAgCi0gICAgICAgIExheW91dFJl
Y3QgZGVzdFJlY3QoKSBjb25zdCB7IHJldHVybiBtX2Rlc3RSZWN0OyB9Ci0gICAgICAgIHZvaWQg
c2V0RGVzdFJlY3QoY29uc3QgTGF5b3V0UmVjdCYgZGVzdFJlY3QpIHsgbV9kZXN0UmVjdCA9IGRl
c3RSZWN0OyB9Ci0KLSAgICAgICAgLy8gUmV0dXJucyB0aGUgcGhhc2UgcmVsYXRpdmUgdG8gdGhl
IGRlc3RpbmF0aW9uIHJlY3RhbmdsZS4KLSAgICAgICAgTGF5b3V0UG9pbnQgcmVsYXRpdmVQaGFz
ZSgpIGNvbnN0OwotICAgICAgICAKLSAgICAgICAgTGF5b3V0UG9pbnQgcGhhc2UoKSBjb25zdCB7
IHJldHVybiBtX3BoYXNlOyB9Ci0gICAgICAgIHZvaWQgc2V0UGhhc2UoY29uc3QgTGF5b3V0UG9p
bnQmIHBoYXNlKSB7IG1fcGhhc2UgPSBwaGFzZTsgfQotCi0gICAgICAgIExheW91dFNpemUgdGls
ZVNpemUoKSBjb25zdCB7IHJldHVybiBtX3RpbGVTaXplOyB9Ci0gICAgICAgIHZvaWQgc2V0VGls
ZVNpemUoY29uc3QgTGF5b3V0U2l6ZSYgdGlsZVNpemUpIHsgbV90aWxlU2l6ZSA9IHRpbGVTaXpl
OyB9Ci0KLSAgICAgICAgTGF5b3V0U2l6ZSBzcGFjZVNpemUoKSBjb25zdCB7IHJldHVybiBtX3Nw
YWNlOyB9Ci0gICAgICAgIHZvaWQgc2V0U3BhY2VTaXplKGNvbnN0IExheW91dFNpemUmIHNwYWNl
KSB7IG1fc3BhY2UgPSBzcGFjZTsgfQotCi0gICAgICAgIHZvaWQgc2V0UGhhc2VYKExheW91dFVu
aXQgIHgpIHsgbV9waGFzZS5zZXRYKHgpOyB9Ci0gICAgICAgIHZvaWQgc2V0UGhhc2VZKExheW91
dFVuaXQgeSkgeyBtX3BoYXNlLnNldFkoeSk7IH0KLSAgICAgICAgCi0gICAgICAgIHZvaWQgc2V0
Tm9SZXBlYXRYKExheW91dFVuaXQgeE9mZnNldCk7Ci0gICAgICAgIHZvaWQgc2V0Tm9SZXBlYXRZ
KExheW91dFVuaXQgeU9mZnNldCk7Ci0gICAgICAgIAotICAgICAgICB2b2lkIHVzZUZpeGVkQXR0
YWNobWVudChjb25zdCBMYXlvdXRQb2ludCYgYXR0YWNobWVudFBvaW50KTsKLSAgICAgICAgCi0g
ICAgICAgIHZvaWQgY2xpcChjb25zdCBMYXlvdXRSZWN0Jik7Ci0gICAgICAgIAotICAgICAgICB2
b2lkIHNldEhhc05vbkxvY2FsR2VvbWV0cnkoYm9vbCBoYXNOb25Mb2NhbEdlb21ldHJ5ID0gdHJ1
ZSkgeyBtX2hhc05vbkxvY2FsR2VvbWV0cnkgPSBoYXNOb25Mb2NhbEdlb21ldHJ5OyB9Ci0gICAg
ICAgIGJvb2wgaGFzTm9uTG9jYWxHZW9tZXRyeSgpIGNvbnN0IHsgcmV0dXJuIG1faGFzTm9uTG9j
YWxHZW9tZXRyeTsgfQotCi0gICAgcHJpdmF0ZToKLSAgICAgICAgTGF5b3V0UmVjdCBtX2Rlc3RS
ZWN0OwotICAgICAgICBMYXlvdXRQb2ludCBtX2Rlc3RPcmlnaW47Ci0gICAgICAgIExheW91dFBv
aW50IG1fcGhhc2U7Ci0gICAgICAgIExheW91dFNpemUgbV90aWxlU2l6ZTsKLSAgICAgICAgTGF5
b3V0U2l6ZSBtX3NwYWNlOwotICAgICAgICBib29sIG1faGFzTm9uTG9jYWxHZW9tZXRyeTsgLy8g
SGFzIGJhY2tncm91bmQtYXR0YWNobWVudDogZml4ZWQuIEltcGxpZXMgdGhhdCB3ZSBjYW4ndCBh
bHdheXMgY2hlYXBseSBjb21wdXRlIGRlc3RSZWN0LgotICAgIH07Ci0KICAgICBMYXlvdXRQb2lu
dCBhZGp1c3RlZFBvc2l0aW9uUmVsYXRpdmVUb09mZnNldFBhcmVudChjb25zdCBMYXlvdXRQb2lu
dCYpIGNvbnN0OwogCiAgICAgYm9vbCBoYXNCb3hEZWNvcmF0aW9uU3R5bGUoKSBjb25zdDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCmluZGV4IDkyYWEyYWYuLmQ5ZDVk
MjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcApAQCAtODgsNiAr
ODgsNyBAQAogI2luY2x1ZGUgIlJlbmRlckxheWVyQmFja2luZy5oIgogI2luY2x1ZGUgIlJlbmRl
ckxheWVyQ29tcG9zaXRvci5oIgogI2luY2x1ZGUgIlJlbmRlckxheWVyRmlsdGVySW5mby5oIgor
I2luY2x1ZGUgIlJlbmRlckxheWVyTWFza0ltYWdlSW5mby5oIgogI2luY2x1ZGUgIlJlbmRlck1h
cnF1ZWUuaCIKICNpbmNsdWRlICJSZW5kZXJNdWx0aUNvbHVtbkZsb3dUaHJlYWQuaCIKICNpbmNs
dWRlICJSZW5kZXJOYW1lZEZsb3dGcmFnbWVudC5oIgpAQCAtMTg5LDYgKzE5MCw3IEBAIFJlbmRl
ckxheWVyOjpSZW5kZXJMYXllcihSZW5kZXJMYXllck1vZGVsT2JqZWN0JiByZW5kZXJlckxheWVy
TW9kZWxPYmplY3QpCiAgICAgLCBtX2xheWVyTGlzdE11dGF0aW9uQWxsb3dlZCh0cnVlKQogI2Vu
ZGlmCiAgICAgLCBtX2hhc0ZpbHRlckluZm8oZmFsc2UpCisgICAgLCBtX2hhc01hc2tJbWFnZUlu
Zm8oZmFsc2UpCiAjaWYgRU5BQkxFKENTU19DT01QT1NJVElORykKICAgICAsIG1fYmxlbmRNb2Rl
KEJsZW5kTW9kZU5vcm1hbCkKICAgICAsIG1faGFzTm90SXNvbGF0ZWRDb21wb3NpdGVkQmxlbmRp
bmdEZXNjZW5kYW50cyhmYWxzZSkKQEAgLTI1NSw2ICsyNTcsNyBAQCBSZW5kZXJMYXllcjo6flJl
bmRlckxheWVyKCkKICAgICAgICAgcmVtb3ZlUmVmbGVjdGlvbigpOwogCiAgICAgRmlsdGVySW5m
bzo6cmVtb3ZlKCp0aGlzKTsKKyAgICBNYXNrSW1hZ2VJbmZvOjpyZW1vdmUoKnRoaXMpOwogCiAg
ICAgLy8gQ2hpbGQgbGF5ZXJzIHdpbGwgYmUgZGVsZXRlZCBieSB0aGVpciBjb3JyZXNwb25kaW5n
IHJlbmRlciBvYmplY3RzLCBzbwogICAgIC8vIHdlIGRvbid0IG5lZWQgdG8gZGVsZXRlIHRoZW0g
b3Vyc2VsdmVzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxh
eWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuaAppbmRleCA0MTA5
Mzg3Li43MzEzNjcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
TGF5ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuaApAQCAt
MTI2Niw2ICsxMjY2LDcgQEAgcHJpdmF0ZToKICNlbmRpZgogCiAgICAgYm9vbCBtX2hhc0ZpbHRl
ckluZm8gOiAxOworICAgIHVuc2lnbmVkIG1faGFzTWFza0ltYWdlSW5mbyA6IDE7CiAKICNpZiBF
TkFCTEUoQ1NTX0NPTVBPU0lUSU5HKQogICAgIHVuc2lnbmVkIG1fYmxlbmRNb2RlIDogNTsKQEAg
LTEzNDIsNiArMTM0Myw3IEBAIHByaXZhdGU6CiAgICAgc3RkOjp1bmlxdWVfcHRyPFJlbmRlckxh
eWVyQmFja2luZz4gbV9iYWNraW5nOwogCiAgICAgY2xhc3MgRmlsdGVySW5mbzsKKyAgICBjbGFz
cyBNYXNrSW1hZ2VJbmZvOwogfTsKIAogaW5saW5lIHZvaWQgUmVuZGVyTGF5ZXI6OmNsZWFyWk9y
ZGVyTGlzdHMoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxh
eWVyTWFza0ltYWdlSW5mby5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5
ZXJNYXNrSW1hZ2VJbmZvLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5h
NzdmZTA4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckxheWVyTWFza0ltYWdlSW5mby5jcHAKQEAgLTAsMCArMSwxNDEgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTQgQWRvYmUgU3lzdGVtcyBJbmNvcnBvcmF0ZWQuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09Q
WVJJR0hUIEhPTERFUiAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklH
SFQgSE9MREVSIEJFCisgKiBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksCisgKiBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SCisgKiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YKKyAqIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRgorICogU1VDSCBEQU1BR0UuCisgKi8KKworI2lu
Y2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlJlbmRlckxheWVyTWFza0ltYWdlSW5mby5oIgor
CisjaW5jbHVkZSAiQ2FjaGVkU1ZHRG9jdW1lbnQuaCIKKyNpbmNsdWRlICJDYWNoZWRTVkdEb2N1
bWVudFJlZmVyZW5jZS5oIgorI2luY2x1ZGUgIlJlbmRlclNWR1Jlc291cmNlQ29udGFpbmVyLmgi
CisjaW5jbHVkZSAiU1ZHRWxlbWVudC5oIgorI2luY2x1ZGUgIlNWR01hc2tFbGVtZW50LmgiCisj
aW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwor
SGFzaE1hcDxjb25zdCBSZW5kZXJMYXllciosIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJMYXllcjo6
TWFza0ltYWdlSW5mbz4+JiBSZW5kZXJMYXllcjo6TWFza0ltYWdlSW5mbzo6bGF5ZXJUb01hc2tN
YXAoKQoreworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxIYXNoTWFwPGNvbnN0IFJlbmRlckxh
eWVyKiwgc3RkOjp1bmlxdWVfcHRyPE1hc2tJbWFnZUluZm8+Pj4gbGF5ZXJUb01hc2tNYXA7Cisg
ICAgcmV0dXJuIGxheWVyVG9NYXNrTWFwOworfQorCitSZW5kZXJMYXllcjo6TWFza0ltYWdlSW5m
byogUmVuZGVyTGF5ZXI6Ok1hc2tJbWFnZUluZm86OmdldElmRXhpc3RzKGNvbnN0IFJlbmRlckxh
eWVyJiBsYXllcikKK3sKKyAgICBBU1NFUlQobGF5ZXIubV9oYXNNYXNrSW1hZ2VJbmZvID09IGxh
eWVyVG9NYXNrTWFwKCkuY29udGFpbnMoJmxheWVyKSk7CisgICAgcmV0dXJuIGxheWVyLm1faGFz
TWFza0ltYWdlSW5mbyA/IGxheWVyVG9NYXNrTWFwKCkuZ2V0KCZsYXllcikgOiAwOworfQorCitS
ZW5kZXJMYXllcjo6TWFza0ltYWdlSW5mbyYgUmVuZGVyTGF5ZXI6Ok1hc2tJbWFnZUluZm86Omdl
dChSZW5kZXJMYXllciYgbGF5ZXIpCit7CisgICAgQVNTRVJUKGxheWVyLm1faGFzTWFza0ltYWdl
SW5mbyA9PSBsYXllclRvTWFza01hcCgpLmNvbnRhaW5zKCZsYXllcikpOworCisgICAgYXV0byYg
aW5mbyA9IGxheWVyVG9NYXNrTWFwKCkuYWRkKCZsYXllciwgbnVsbHB0cikuaXRlcmF0b3ItPnZh
bHVlOworICAgIGlmICghaW5mbykgeworICAgICAgICBpbmZvID0gc3RkOjptYWtlX3VuaXF1ZTxN
YXNrSW1hZ2VJbmZvPihsYXllcik7CisgICAgICAgIGxheWVyLm1faGFzTWFza0ltYWdlSW5mbyA9
IHRydWU7CisgICAgfQorICAgIHJldHVybiAqaW5mbzsKK30KKwordm9pZCBSZW5kZXJMYXllcjo6
TWFza0ltYWdlSW5mbzo6cmVtb3ZlKFJlbmRlckxheWVyJiBsYXllcikKK3sKKyAgICBBU1NFUlQo
bGF5ZXIubV9oYXNNYXNrSW1hZ2VJbmZvID09IGxheWVyVG9NYXNrTWFwKCkuY29udGFpbnMoJmxh
eWVyKSk7CisKKyAgICBpZiAobGF5ZXJUb01hc2tNYXAoKS5yZW1vdmUoJmxheWVyKSkKKyAgICAg
ICAgbGF5ZXIubV9oYXNNYXNrSW1hZ2VJbmZvID0gZmFsc2U7Cit9CisKK1JlbmRlckxheWVyOjpN
YXNrSW1hZ2VJbmZvOjpNYXNrSW1hZ2VJbmZvKFJlbmRlckxheWVyJiBsYXllcikKKyAgICA6IG1f
bGF5ZXIobGF5ZXIpCit7CisgICAgbV9zdmdEb2N1bWVudENsaWVudCA9IHN0ZDo6bWFrZV91bmlx
dWU8TWFza1NWR0RvY3VtZW50Q2xpZW50Pih0aGlzKTsKKyAgICBtX2ltYWdlQ2xpZW50ID0gc3Rk
OjptYWtlX3VuaXF1ZTxNYXNrSW1hZ2VDbGllbnQ+KHRoaXMpOworfQorCitSZW5kZXJMYXllcjo6
TWFza0ltYWdlSW5mbzo6fk1hc2tJbWFnZUluZm8oKQoreworICAgIHJlbW92ZU1hc2tJbWFnZUNs
aWVudHMoKTsKK30KKwordm9pZCBSZW5kZXJMYXllcjo6TWFza0ltYWdlSW5mbzo6bm90aWZ5Rmlu
aXNoZWQoQ2FjaGVkUmVzb3VyY2UqKQoreworICAgIG1fbGF5ZXIucmVuZGVyZXIoKS5yZXBhaW50
KCk7Cit9CisKK3ZvaWQgUmVuZGVyTGF5ZXI6Ok1hc2tJbWFnZUluZm86OmltYWdlQ2hhbmdlZChD
YWNoZWRJbWFnZSosIGNvbnN0IEludFJlY3QqKQoreworICAgIG1fbGF5ZXIucmVuZGVyZXIoKS5y
ZXBhaW50KCk7Cit9CisKK3ZvaWQgUmVuZGVyTGF5ZXI6Ok1hc2tJbWFnZUluZm86OnVwZGF0ZU1h
c2tJbWFnZUNsaWVudHMoKQoreworICAgIHJlbW92ZU1hc2tJbWFnZUNsaWVudHMoKTsKKyAgICAK
KyAgICBjb25zdCBGaWxsTGF5ZXIqIG1hc2tMYXllciA9IG1fbGF5ZXIucmVuZGVyZXIoKS5zdHls
ZSgpLm1hc2tMYXllcnMoKTsKKyAgICB3aGlsZSAobWFza0xheWVyKSB7CisgICAgICAgIGNvbnN0
IFJlZlB0cjxNYXNrSW1hZ2VPcGVyYXRpb24+IG1hc2tJbWFnZSA9IG1hc2tMYXllci0+bWFza0lt
YWdlKCk7CisgICAgICAgIG1hc2tJbWFnZS0+c2V0UmVuZGVyTGF5ZXJJbWFnZUNsaWVudChtX2lt
YWdlQ2xpZW50LmdldCgpKTsKKyAgICAgICAgQ2FjaGVkU1ZHRG9jdW1lbnRSZWZlcmVuY2UqIGRv
Y3VtZW50UmVmZXJlbmNlID0gbWFza0ltYWdlLT5jYWNoZWRTVkdEb2N1bWVudFJlZmVyZW5jZSgp
OworICAgICAgICBDYWNoZWRTVkdEb2N1bWVudCogY2FjaGVkU1ZHRG9jdW1lbnQgPSBkb2N1bWVu
dFJlZmVyZW5jZSA/IGRvY3VtZW50UmVmZXJlbmNlLT5kb2N1bWVudCgpIDogbnVsbHB0cjsKKyAg
ICAgICAgCisgICAgICAgIGlmIChjYWNoZWRTVkdEb2N1bWVudCkgeworICAgICAgICAgICAgLy8g
UmVmZXJlbmNlIGlzIGV4dGVybmFsOyB3YWl0IGZvciBub3RpZnlGaW5pc2hlZCgpLgorICAgICAg
ICAgICAgY2FjaGVkU1ZHRG9jdW1lbnQtPmFkZENsaWVudChtX3N2Z0RvY3VtZW50Q2xpZW50Lmdl
dCgpKTsKKyAgICAgICAgICAgIG1fZXh0ZXJuYWxTVkdSZWZlcmVuY2VzLmFwcGVuZChjYWNoZWRT
VkdEb2N1bWVudCk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAvLyBSZWZlcmVuY2Ug
aXMgaW50ZXJuYWw7IGFkZCBsYXllciBhcyBhIGNsaWVudCBzbyB3ZSBjYW4gdHJpZ2dlcgorICAg
ICAgICAgICAgLy8gbWFzayByZXBhaW50IG9uIFNWRyBhdHRyaWJ1dGUgY2hhbmdlLgorICAgICAg
ICAgICAgRWxlbWVudCogbWFza2VyID0gbV9sYXllci5yZW5kZXJlcigpLmRvY3VtZW50KCkuZ2V0
RWxlbWVudEJ5SWQobWFza0ltYWdlLT5mcmFnbWVudCgpKTsKKyAgICAgICAgICAgIGlmIChtYXNr
ZXIgJiYgaXM8U1ZHTWFza0VsZW1lbnQ+KG1hc2tlcikpIHsKKyAgICAgICAgICAgICAgICBkb3du
Y2FzdDxTVkdNYXNrRWxlbWVudD4obWFza2VyKS0+YWRkQ2xpZW50UmVuZGVyTGF5ZXIoJm1fbGF5
ZXIpOworICAgICAgICAgICAgICAgIG1faW50ZXJuYWxTVkdSZWZlcmVuY2VzLmFwcGVuZChtYXNr
ZXIpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIAorICAgICAgICBtYXNrTGF5
ZXIgPSBtYXNrTGF5ZXItPm5leHQoKTsKKyAgICB9Cit9CisKK3ZvaWQgUmVuZGVyTGF5ZXI6Ok1h
c2tJbWFnZUluZm86OnJlbW92ZU1hc2tJbWFnZUNsaWVudHMoKQoreworICAgIGNvbnN0IEZpbGxM
YXllciogbWFza0xheWVyID0gbV9sYXllci5yZW5kZXJlcigpLnN0eWxlKCkubWFza0xheWVycygp
OworICAgIHdoaWxlIChtYXNrTGF5ZXIpIHsKKyAgICAgICAgaWYgKG1hc2tMYXllci0+bWFza0lt
YWdlKCkpCisgICAgICAgICAgICBtYXNrTGF5ZXItPm1hc2tJbWFnZSgpLT5zZXRSZW5kZXJMYXll
ckltYWdlQ2xpZW50KG51bGxwdHIpOworCisgICAgICAgIG1hc2tMYXllciA9IG1hc2tMYXllci0+
bmV4dCgpOworICAgIH0KKyAgICAKKyAgICBmb3IgKGF1dG8gZXh0ZXJuYWxTVkdSZWZlcmVuY2Ug
OiBtX2V4dGVybmFsU1ZHUmVmZXJlbmNlcykKKyAgICAgICAgZXh0ZXJuYWxTVkdSZWZlcmVuY2Ut
PnJlbW92ZUNsaWVudChtX3N2Z0RvY3VtZW50Q2xpZW50LmdldCgpKTsKKyAgICBtX2V4dGVybmFs
U1ZHUmVmZXJlbmNlcy5jbGVhcigpOworICAgIAorICAgIGZvciAoYXV0byBpbnRlcm5hbFNWR1Jl
ZmVyZW5jZSA6IG1faW50ZXJuYWxTVkdSZWZlcmVuY2VzKQorICAgICAgICBkb3duY2FzdDxTVkdN
YXNrRWxlbWVudD4oaW50ZXJuYWxTVkdSZWZlcmVuY2UuZ2V0KCkpLT5yZW1vdmVDbGllbnRSZW5k
ZXJMYXllcigmbV9sYXllcik7CisgICAgbV9pbnRlcm5hbFNWR1JlZmVyZW5jZXMuY2xlYXIoKTsK
K30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckxheWVyTWFza0ltYWdlSW5mby5oIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckxheWVyTWFza0ltYWdlSW5mby5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAuLjFkNTA3OWYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyTGF5ZXJNYXNrSW1hZ2VJbmZvLmgKQEAgLTAsMCArMSwxMDMgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgQWRvYmUgU3lzdGVtcyBJbmNvcnBvcmF0ZWQuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUiAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisg
KiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IFRIRSBDT1BZUklHSFQgSE9MREVSIEJFCisgKiBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksCisgKiBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisg
KiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SCisgKiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YKKyAqIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRgorICogU1VDSCBEQU1BR0Uu
CisgKi8KKworI2lmbmRlZiBSZW5kZXJMYXllck1hc2tJbWFnZUluZm9faAorI2RlZmluZSBSZW5k
ZXJMYXllck1hc2tJbWFnZUluZm9faAorCisjaW5jbHVkZSAiQ2FjaGVkSW1hZ2VDbGllbnQuaCIK
KyNpbmNsdWRlICJDYWNoZWRSZXNvdXJjZUhhbmRsZS5oIgorI2luY2x1ZGUgIkNhY2hlZFNWR0Rv
Y3VtZW50Q2xpZW50LmgiCisjaW5jbHVkZSAiTWFza0ltYWdlT3BlcmF0aW9uLmgiCisjaW5jbHVk
ZSAiUmVuZGVyTGF5ZXIuaCIKKyNpbmNsdWRlIDxtZW1vcnk+CisKK25hbWVzcGFjZSBXZWJDb3Jl
IHsKKworY2xhc3MgRWxlbWVudDsKKworY2xhc3MgUmVuZGVyTGF5ZXI6Ok1hc2tJbWFnZUluZm8g
ZmluYWwgeworcHJpdmF0ZToKKyAgICBjbGFzcyBNYXNrUmVzb3VyY2VDbGllbnQgeworICAgIHB1
YmxpYzoKKyAgICAgICAgTWFza1Jlc291cmNlQ2xpZW50KFJlbmRlckxheWVyOjpNYXNrSW1hZ2VJ
bmZvKiBtYXNrSW1hZ2VJbmZvKQorICAgICAgICAgICAgOiBtX21hc2tJbWFnZUluZm8obWFza0lt
YWdlSW5mbykKKyAgICAgICAgeworICAgICAgICAgICAgQVNTRVJUKG1fbWFza0ltYWdlSW5mbyk7
CisgICAgICAgIH0KKyAgICBwcm90ZWN0ZWQ6CisgICAgICAgIFJlbmRlckxheWVyOjpNYXNrSW1h
Z2VJbmZvKiBtX21hc2tJbWFnZUluZm87CisgICAgfTsKKyAgICAKKyAgICBjbGFzcyBNYXNrU1ZH
RG9jdW1lbnRDbGllbnQgOiBwdWJsaWMgTWFza1Jlc291cmNlQ2xpZW50LCBwdWJsaWMgQ2FjaGVk
U1ZHRG9jdW1lbnRDbGllbnQgeworICAgIHB1YmxpYzoKKyAgICAgICAgTWFza1NWR0RvY3VtZW50
Q2xpZW50KFJlbmRlckxheWVyOjpNYXNrSW1hZ2VJbmZvKiBtYXNrSW1hZ2VJbmZvKQorICAgICAg
ICAgICAgOiBNYXNrUmVzb3VyY2VDbGllbnQobWFza0ltYWdlSW5mbykKKyAgICAgICAgeworICAg
ICAgICB9CisgICAgICAgIAorICAgICAgICB2aXJ0dWFsIHZvaWQgbm90aWZ5RmluaXNoZWQoQ2Fj
aGVkUmVzb3VyY2UqIHJlc291cmNlKSBvdmVycmlkZSB7IG1fbWFza0ltYWdlSW5mby0+bm90aWZ5
RmluaXNoZWQocmVzb3VyY2UpOyB9CisgICAgfTsKKyAgICAKKyAgICBjbGFzcyBNYXNrSW1hZ2VD
bGllbnQgOiBwdWJsaWMgTWFza1Jlc291cmNlQ2xpZW50LCBwdWJsaWMgQ2FjaGVkSW1hZ2VDbGll
bnQgeworICAgIHB1YmxpYzoKKyAgICAgICAgTWFza0ltYWdlQ2xpZW50KFJlbmRlckxheWVyOjpN
YXNrSW1hZ2VJbmZvKiBtYXNrSW1hZ2VJbmZvKQorICAgICAgICAgICAgOiBNYXNrUmVzb3VyY2VD
bGllbnQobWFza0ltYWdlSW5mbykKKyAgICAgICAgeworICAgICAgICB9CisgICAgICAgIAorICAg
ICAgICB2aXJ0dWFsIHZvaWQgaW1hZ2VDaGFuZ2VkKENhY2hlZEltYWdlKiBpbWFnZSwgY29uc3Qg
SW50UmVjdCogcmVjdCA9IG51bGxwdHIpIG92ZXJyaWRlIHsgbV9tYXNrSW1hZ2VJbmZvLT5pbWFn
ZUNoYW5nZWQoaW1hZ2UsIHJlY3QpOyB9CisgICAgfTsKKworcHVibGljOgorICAgIHN0YXRpYyBN
YXNrSW1hZ2VJbmZvJiBnZXQoUmVuZGVyTGF5ZXImKTsKKyAgICBzdGF0aWMgTWFza0ltYWdlSW5m
byogZ2V0SWZFeGlzdHMoY29uc3QgUmVuZGVyTGF5ZXImKTsKKyAgICBzdGF0aWMgdm9pZCByZW1v
dmUoUmVuZGVyTGF5ZXImKTsKKworICAgIGV4cGxpY2l0IE1hc2tJbWFnZUluZm8oUmVuZGVyTGF5
ZXImKTsKKyAgICB+TWFza0ltYWdlSW5mbygpOworCisgICAgdm9pZCB1cGRhdGVNYXNrSW1hZ2VD
bGllbnRzKCk7CisgICAgdm9pZCByZW1vdmVNYXNrSW1hZ2VDbGllbnRzKCk7CisKK3ByaXZhdGU6
CisgICAgZnJpZW5kIHZvaWQgV1RGOjpkZWxldGVPd25lZFB0cjxNYXNrSW1hZ2VJbmZvPihNYXNr
SW1hZ2VJbmZvKik7CisKKyAgICB2b2lkIG5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlKik7
CisgICAgdm9pZCBpbWFnZUNoYW5nZWQoQ2FjaGVkSW1hZ2UqLCBjb25zdCBJbnRSZWN0Kik7CisK
KyAgICBzdGF0aWMgSGFzaE1hcDxjb25zdCBSZW5kZXJMYXllciosIHN0ZDo6dW5pcXVlX3B0cjxN
YXNrSW1hZ2VJbmZvPj4mIGxheWVyVG9NYXNrTWFwKCk7CisKKyAgICBSZW5kZXJMYXllciYgbV9s
YXllcjsKKworICAgIFZlY3RvcjxSZWZQdHI8RWxlbWVudD4+IG1faW50ZXJuYWxTVkdSZWZlcmVu
Y2VzOworICAgIFZlY3RvcjxDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRTVkdEb2N1bWVudD4+
IG1fZXh0ZXJuYWxTVkdSZWZlcmVuY2VzOworICAgIHN0ZDo6dW5pcXVlX3B0cjxNYXNrU1ZHRG9j
dW1lbnRDbGllbnQ+IG1fc3ZnRG9jdW1lbnRDbGllbnQ7CisgICAgc3RkOjp1bmlxdWVfcHRyPE1h
c2tJbWFnZUNsaWVudD4gbV9pbWFnZUNsaWVudDsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKKworI2VuZGlmIC8vIFJlbmRlckxheWVyTWFza0ltYWdlSW5mb19oCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvRmlsbExheWVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdHlsZS9GaWxsTGF5ZXIuY3BwCmluZGV4IGI5MWZiZTcuLjgyZDkzNjUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9GaWxsTGF5ZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9GaWxsTGF5ZXIuY3BwCkBAIC0y
OCw2ICsyOCw3IEBAIHN0cnVjdCBTYW1lU2l6ZUFzRmlsbExheWVyIHsKICAgICBGaWxsTGF5ZXIq
IG5leHQ7CiAKICAgICBSZWZQdHI8U3R5bGVJbWFnZT4gaW1hZ2U7CisgICAgUmVmUHRyPE1hc2tJ
bWFnZU9wZXJhdGlvbj4gbWFza0ltYWdlT3BlcmF0aW9uOwogCiAgICAgTGVuZ3RoIHg7CiAgICAg
TGVuZ3RoIHk7CkBAIC03NCw2ICs3NSw3IEBAIEZpbGxMYXllcjo6RmlsbExheWVyKEVGaWxsTGF5
ZXJUeXBlIHR5cGUpCiAKIEZpbGxMYXllcjo6RmlsbExheWVyKGNvbnN0IEZpbGxMYXllciYgbykK
ICAgICA6IG1fbmV4dChvLm1fbmV4dCA/IHN0ZDo6bWFrZV91bmlxdWU8RmlsbExheWVyPigqby5t
X25leHQpIDogbnVsbHB0cikKKyAgICAsIG1fbWFza0ltYWdlT3BlcmF0aW9uKG8ubV9tYXNrSW1h
Z2VPcGVyYXRpb24pCiAgICAgLCBtX2ltYWdlKG8ubV9pbWFnZSkKICAgICAsIG1feFBvc2l0aW9u
KG8ubV94UG9zaXRpb24pCiAgICAgLCBtX3lQb3NpdGlvbihvLm1feVBvc2l0aW9uKQpAQCAtMTE2
LDYgKzExOCw3IEBAIEZpbGxMYXllciYgRmlsbExheWVyOjpvcGVyYXRvcj0oY29uc3QgRmlsbExh
eWVyJiBvKQogICAgIG1fbmV4dCA9IG8ubV9uZXh0ID8gc3RkOjptYWtlX3VuaXF1ZTxGaWxsTGF5
ZXI+KCpvLm1fbmV4dCkgOiBudWxscHRyOwogCiAgICAgbV9pbWFnZSA9IG8ubV9pbWFnZTsKKyAg
ICBtX21hc2tJbWFnZU9wZXJhdGlvbiA9IG8ubV9tYXNrSW1hZ2VPcGVyYXRpb247CiAgICAgbV94
UG9zaXRpb24gPSBvLm1feFBvc2l0aW9uOwogICAgIG1feVBvc2l0aW9uID0gby5tX3lQb3NpdGlv
bjsKICAgICBtX2JhY2tncm91bmRYT3JpZ2luID0gby5tX2JhY2tncm91bmRYT3JpZ2luOwpAQCAt
MTUzLDcgKzE1Niw4IEBAIGJvb2wgRmlsbExheWVyOjpvcGVyYXRvcj09KGNvbnN0IEZpbGxMYXll
ciYgbykgY29uc3QKIHsKICAgICAvLyBXZSBkbyBub3QgY2hlY2sgdGhlICJpc1NldCIgYm9vbGVh
bnMgZm9yIGVhY2ggcHJvcGVydHksIHNpbmNlIHRob3NlIGFyZSBvbmx5IHVzZWQgZHVyaW5nIGlu
aXRpYWwgY29uc3RydWN0aW9uCiAgICAgLy8gdG8gcHJvcGFnYXRlIHBhdHRlcm5zIGludG8gbGF5
ZXJzLiBBbGwgbGF5ZXIgY29tcGFyaXNvbnMgaGFwcGVuIGFmdGVyIHZhbHVlcyBoYXZlIGFsbCBi
ZWVuIGZpbGxlZCBpbiBhbnl3YXkuCi0gICAgcmV0dXJuIFN0eWxlSW1hZ2U6OmltYWdlc0VxdWl2
YWxlbnQobV9pbWFnZS5nZXQoKSwgby5tX2ltYWdlLmdldCgpKSAmJiBtX3hQb3NpdGlvbiA9PSBv
Lm1feFBvc2l0aW9uICYmIG1feVBvc2l0aW9uID09IG8ubV95UG9zaXRpb24KKyAgICByZXR1cm4g
U3R5bGVJbWFnZTo6aW1hZ2VzRXF1aXZhbGVudChtX2ltYWdlLmdldCgpLCBvLm1faW1hZ2UuZ2V0
KCkpICYmIG1fbWFza0ltYWdlT3BlcmF0aW9uID09IG8ubV9tYXNrSW1hZ2VPcGVyYXRpb24KKyAg
ICAgICAgJiYgbV94UG9zaXRpb24gPT0gby5tX3hQb3NpdGlvbiAmJiBtX3lQb3NpdGlvbiA9PSBv
Lm1feVBvc2l0aW9uCiAgICAgICAgICYmIG1fYmFja2dyb3VuZFhPcmlnaW4gPT0gby5tX2JhY2tn
cm91bmRYT3JpZ2luICYmIG1fYmFja2dyb3VuZFlPcmlnaW4gPT0gby5tX2JhY2tncm91bmRZT3Jp
Z2luCiAgICAgICAgICYmIG1fYXR0YWNobWVudCA9PSBvLm1fYXR0YWNobWVudCAmJiBtX2NsaXAg
PT0gby5tX2NsaXAgJiYgbV9jb21wb3NpdGUgPT0gby5tX2NvbXBvc2l0ZQogICAgICAgICAmJiBt
X2JsZW5kTW9kZSA9PSBvLm1fYmxlbmRNb2RlICYmIG1fb3JpZ2luID09IG8ubV9vcmlnaW4gJiYg
bV9yZXBlYXRYID09IG8ubV9yZXBlYXRYCkBAIC0yODgsMTMgKzI5MiwyMSBAQCB2b2lkIEZpbGxM
YXllcjo6ZmlsbFVuc2V0UHJvcGVydGllcygpCiB2b2lkIEZpbGxMYXllcjo6Y3VsbEVtcHR5TGF5
ZXJzKCkKIHsKICAgICBmb3IgKEZpbGxMYXllciogbGF5ZXIgPSB0aGlzOyBsYXllcjsgbGF5ZXIg
PSBsYXllci0+bV9uZXh0LmdldCgpKSB7Ci0gICAgICAgIGlmIChsYXllci0+bV9uZXh0ICYmICFs
YXllci0+bV9uZXh0LT5pc0ltYWdlU2V0KCkpIHsKKyAgICAgICAgaWYgKGxheWVyLT5tX25leHQg
JiYgIWxheWVyLT5tX25leHQtPmlzSW1hZ2VTZXQoKSAmJiAhbGF5ZXItPm1fbmV4dC0+aGFzTWFz
a0ltYWdlKCkpIHsKICAgICAgICAgICAgIGxheWVyLT5tX25leHQgPSBudWxscHRyOwogICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICB9CiB9CiAKK2Jvb2wgRmlsbExheWVyOjpoYXNO
b25FbXB0eU1hc2tJbWFnZSgpIGNvbnN0Cit7CisgICAgaWYgKGhhc01hc2tJbWFnZSgpICYmICFt
YXNrSW1hZ2UoKS0+aXNDU1NWYWx1ZU5vbmUoKSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAg
CisgICAgcmV0dXJuIChuZXh0KCkgPyBuZXh0KCktPmhhc05vbkVtcHR5TWFza0ltYWdlKCkgOiBm
YWxzZSk7Cit9CisKIHN0YXRpYyBpbmxpbmUgRUZpbGxCb3ggY2xpcE1heChFRmlsbEJveCBjbGlw
QSwgRUZpbGxCb3ggY2xpcEIpCiB7CiAgICAgaWYgKGNsaXBBID09IEJvcmRlckZpbGxCb3ggfHwg
Y2xpcEIgPT0gQm9yZGVyRmlsbEJveCkKQEAgLTM0MCw2ICszNTIsOSBAQCBib29sIEZpbGxMYXll
cjo6aW1hZ2VzQXJlTG9hZGVkKCkgY29uc3QKICAgICBmb3IgKGF1dG8qIGxheWVyID0gdGhpczsg
bGF5ZXI7IGxheWVyID0gbGF5ZXItPm1fbmV4dC5nZXQoKSkgewogICAgICAgICBpZiAobGF5ZXIt
Pm1faW1hZ2UgJiYgIWxheWVyLT5tX2ltYWdlLT5pc0xvYWRlZCgpKQogICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgICAgICAKKyAgICAgICAgaWYgKGxheWVyLT5oYXNNYXNrSW1hZ2UoKSAm
JiAhbGF5ZXItPm1hc2tJbWFnZSgpLT5pc01hc2tMb2FkZWQoKSkKKyAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKICAgICB9CiAgICAgcmV0dXJuIHRydWU7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvRmlsbExheWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3R5bGUvRmlsbExheWVyLmgKaW5kZXggOWJlYjdiZi4uZGY0NDg3YSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0ZpbGxMYXllci5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9GaWxsTGF5ZXIuaApAQCAtMjcsNiArMjcsNyBAQAog
CiAjaW5jbHVkZSAiR3JhcGhpY3NUeXBlcy5oIgogI2luY2x1ZGUgIkxlbmd0aFNpemUuaCIKKyNp
bmNsdWRlICJNYXNrSW1hZ2VPcGVyYXRpb24uaCIKICNpbmNsdWRlICJSZW5kZXJTdHlsZUNvbnN0
YW50cy5oIgogI2luY2x1ZGUgIlN0eWxlSW1hZ2UuaCIKICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+
CkBAIC02Nyw3ICs2OCw5IEBAIHB1YmxpYzoKICAgICBleHBsaWNpdCBGaWxsTGF5ZXIoRUZpbGxM
YXllclR5cGUpOwogICAgIH5GaWxsTGF5ZXIoKTsKIAorICAgIGNvbnN0IFJlZlB0cjxNYXNrSW1h
Z2VPcGVyYXRpb24+JiBtYXNrSW1hZ2UoKSBjb25zdCB7IHJldHVybiBtX21hc2tJbWFnZU9wZXJh
dGlvbjsgfQogICAgIFN0eWxlSW1hZ2UqIGltYWdlKCkgY29uc3QgeyByZXR1cm4gbV9pbWFnZS5n
ZXQoKTsgfQorICAgIFN0eWxlSW1hZ2UqIGltYWdlT3JNYXNrSW1hZ2UoKSBjb25zdCB7IHJldHVy
biBoYXNNYXNrSW1hZ2UoKSA/IG1hc2tJbWFnZSgpLT5pbWFnZSgpIDogaW1hZ2UoKTsgfQogICAg
IGNvbnN0IExlbmd0aCYgeFBvc2l0aW9uKCkgY29uc3QgeyByZXR1cm4gbV94UG9zaXRpb247IH0K
ICAgICBjb25zdCBMZW5ndGgmIHlQb3NpdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1feVBvc2l0aW9u
OyB9CiAgICAgQmFja2dyb3VuZEVkZ2VPcmlnaW4gYmFja2dyb3VuZFhPcmlnaW4oKSBjb25zdCB7
IHJldHVybiBzdGF0aWNfY2FzdDxCYWNrZ3JvdW5kRWRnZU9yaWdpbj4obV9iYWNrZ3JvdW5kWE9y
aWdpbik7IH0KQEAgLTEwMSw2ICsxMDQsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc1NpemVTZXQo
KSBjb25zdCB7IHJldHVybiBtX3NpemVUeXBlICE9IFNpemVOb25lOyB9CiAgICAgYm9vbCBpc01h
c2tTb3VyY2VUeXBlU2V0KCkgY29uc3QgeyByZXR1cm4gbV9tYXNrU291cmNlVHlwZVNldDsgfQog
CisgICAgdm9pZCBzZXRNYXNrSW1hZ2UoUGFzc1JlZlB0cjxNYXNrSW1hZ2VPcGVyYXRpb24+IG1h
c2tJbWFnZSkgeyBtX21hc2tJbWFnZU9wZXJhdGlvbiA9IG1hc2tJbWFnZTsgfQogICAgIHZvaWQg
c2V0SW1hZ2UoUGFzc1JlZlB0cjxTdHlsZUltYWdlPiBpbWFnZSkgeyBtX2ltYWdlID0gaW1hZ2U7
IG1faW1hZ2VTZXQgPSB0cnVlOyB9CiAgICAgdm9pZCBzZXRYUG9zaXRpb24oTGVuZ3RoIGxlbmd0
aCkgeyBtX3hQb3NpdGlvbiA9IFdURjo6bW92ZShsZW5ndGgpOyBtX3hQb3NTZXQgPSB0cnVlOyB9
CiAgICAgdm9pZCBzZXRZUG9zaXRpb24oTGVuZ3RoIGxlbmd0aCkgeyBtX3lQb3NpdGlvbiA9IFdU
Rjo6bW92ZShsZW5ndGgpOyBtX3lQb3NTZXQgPSB0cnVlOyB9CkBAIC0xMTgsNiArMTIyLDcgQEAg
cHVibGljOgogICAgIHZvaWQgc2V0U2l6ZShGaWxsU2l6ZSBmKSB7IG1fc2l6ZVR5cGUgPSBmLnR5
cGU7IG1fc2l6ZUxlbmd0aCA9IGYuc2l6ZTsgfQogICAgIHZvaWQgc2V0TWFza1NvdXJjZVR5cGUo
RU1hc2tTb3VyY2VUeXBlIG0pIHsgbV9tYXNrU291cmNlVHlwZSA9IG07IG1fbWFza1NvdXJjZVR5
cGVTZXQgPSB0cnVlOyB9CiAKKyAgICB2b2lkIGNsZWFyTWFza0ltYWdlKCkgeyBtX21hc2tJbWFn
ZU9wZXJhdGlvbi5jbGVhcigpOyB9CiAgICAgdm9pZCBjbGVhckltYWdlKCkgeyBtX2ltYWdlLmNs
ZWFyKCk7IG1faW1hZ2VTZXQgPSBmYWxzZTsgfQogICAgIHZvaWQgY2xlYXJYUG9zaXRpb24oKSB7
IG1feFBvc1NldCA9IGZhbHNlOyBtX2JhY2tncm91bmRPcmlnaW5TZXQgPSBmYWxzZTsgfQogICAg
IHZvaWQgY2xlYXJZUG9zaXRpb24oKSB7IG1feVBvc1NldCA9IGZhbHNlOyBtX2JhY2tncm91bmRP
cmlnaW5TZXQgPSBmYWxzZTsgfQpAQCAtMTQzLDYgKzE0OCw4IEBAIHB1YmxpYzoKICAgICBib29s
IGNvbnRhaW5zSW1hZ2UoU3R5bGVJbWFnZSYpIGNvbnN0OwogICAgIGJvb2wgaW1hZ2VzQXJlTG9h
ZGVkKCkgY29uc3Q7CiAgICAgYm9vbCBoYXNJbWFnZSgpIGNvbnN0OworICAgIGJvb2wgaGFzTWFz
a0ltYWdlKCkgY29uc3QgeyByZXR1cm4gbWFza0ltYWdlKCkuZ2V0KCk7IH0KKyAgICBib29sIGhh
c05vbkVtcHR5TWFza0ltYWdlKCkgY29uc3Q7CiAgICAgYm9vbCBoYXNGaXhlZEltYWdlKCkgY29u
c3Q7CiAgICAgYm9vbCBoYXNPcGFxdWVJbWFnZShjb25zdCBSZW5kZXJFbGVtZW50JikgY29uc3Q7
CiAgICAgYm9vbCBoYXNSZXBlYXRYWSgpIGNvbnN0OwpAQCAtMTc1LDYgKzE4Miw3IEBAIHByaXZh
dGU6CiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8RmlsbExheWVyPiBtX25leHQ7CiAKKyAgICBSZWZQ
dHI8TWFza0ltYWdlT3BlcmF0aW9uPiBtX21hc2tJbWFnZU9wZXJhdGlvbjsKICAgICBSZWZQdHI8
U3R5bGVJbWFnZT4gbV9pbWFnZTsKIAogICAgIExlbmd0aCBtX3hQb3NpdGlvbjsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VNYXNrZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZU1hc2tl
ci5jcHAKaW5kZXggMzdmMmMwOS4uMTBiYzBhYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZU1hc2tlci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZU1hc2tlci5jcHAKQEAgLTI1LDYg
KzI1LDcgQEAKICNpbmNsdWRlICJGbG9hdFBvaW50LmgiCiAjaW5jbHVkZSAiSW1hZ2UuaCIKICNp
bmNsdWRlICJJbnRSZWN0LmgiCisjaW5jbHVkZSAiUmVuZGVyQm94TW9kZWxPYmplY3QuaCIKICNp
bmNsdWRlICJTVkdSZW5kZXJpbmdDb250ZXh0LmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAg
LTUzLDEwICs1NCw5IEBAIHZvaWQgUmVuZGVyU1ZHUmVzb3VyY2VNYXNrZXI6OnJlbW92ZUNsaWVu
dEZyb21DYWNoZShSZW5kZXJFbGVtZW50JiBjbGllbnQsIGJvb2wKICAgICBtYXJrQ2xpZW50Rm9y
SW52YWxpZGF0aW9uKGNsaWVudCwgbWFya0ZvckludmFsaWRhdGlvbiA/IEJvdW5kYXJpZXNJbnZh
bGlkYXRpb24gOiBQYXJlbnRPbmx5SW52YWxpZGF0aW9uKTsKIH0KIAotYm9vbCBSZW5kZXJTVkdS
ZXNvdXJjZU1hc2tlcjo6YXBwbHlSZXNvdXJjZShSZW5kZXJFbGVtZW50JiByZW5kZXJlciwgY29u
c3QgUmVuZGVyU3R5bGUmLCBHcmFwaGljc0NvbnRleHQqJiBjb250ZXh0LCB1bnNpZ25lZCBzaG9y
dCByZXNvdXJjZU1vZGUpCitib29sIFJlbmRlclNWR1Jlc291cmNlTWFza2VyOjphcHBseVNWR01h
c2soUmVuZGVyRWxlbWVudCYgcmVuZGVyZXIsIEdyYXBoaWNzQ29udGV4dComIGNvbnRleHQsIGJv
b2wgYXBwbHlDbGlwKQogewogICAgIEFTU0VSVChjb250ZXh0KTsKLSAgICBBU1NFUlRfVU5VU0VE
KHJlc291cmNlTW9kZSwgcmVzb3VyY2VNb2RlID09IEFwcGx5VG9EZWZhdWx0TW9kZSk7CiAKICAg
ICBib29sIG1pc3NpbmdNYXNrZXJEYXRhID0gIW1fbWFza2VyLmNvbnRhaW5zKCZyZW5kZXJlcik7
CiAgICAgaWYgKG1pc3NpbmdNYXNrZXJEYXRhKQpAQCAtNzUsMTggKzc1LDI1IEBAIGJvb2wgUmVu
ZGVyU1ZHUmVzb3VyY2VNYXNrZXI6OmFwcGx5UmVzb3VyY2UoUmVuZGVyRWxlbWVudCYgcmVuZGVy
ZXIsIGNvbnN0IFJlbmRlCiAgICAgICAgIGlmICghU1ZHUmVuZGVyaW5nQ29udGV4dDo6Y3JlYXRl
SW1hZ2VCdWZmZXIocmVwYWludFJlY3QsIGFic29sdXRlVHJhbnNmb3JtLCBtYXNrZXJEYXRhLT5t
YXNrSW1hZ2UsIGNvbG9yU3BhY2UsIFVuYWNjZWxlcmF0ZWQpKQogICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOwogCi0gICAgICAgIGlmICghZHJhd0NvbnRlbnRJbnRvTWFza0ltYWdlKG1hc2tlckRh
dGEsIGNvbG9yU3BhY2UsICZyZW5kZXJlcikpIHsKKyAgICAgICAgaWYgKCFkcmF3Q29udGVudElu
dG9NYXNrSW1hZ2UobWFza2VyRGF0YSwgY29sb3JTcGFjZSwgJnJlbmRlcmVyKSkKICAgICAgICAg
ICAgIG1hc2tlckRhdGEtPm1hc2tJbWFnZS5yZXNldCgpOwotICAgICAgICB9CiAgICAgfQogCiAg
ICAgaWYgKCFtYXNrZXJEYXRhLT5tYXNrSW1hZ2UpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAot
ICAgIFNWR1JlbmRlcmluZ0NvbnRleHQ6OmNsaXBUb0ltYWdlQnVmZmVyKGNvbnRleHQsIGFic29s
dXRlVHJhbnNmb3JtLCByZXBhaW50UmVjdCwgbWFza2VyRGF0YS0+bWFza0ltYWdlLCBtaXNzaW5n
TWFza2VyRGF0YSk7CisgICAgaWYgKGFwcGx5Q2xpcCkKKyAgICAgICAgU1ZHUmVuZGVyaW5nQ29u
dGV4dDo6Y2xpcFRvSW1hZ2VCdWZmZXIoY29udGV4dCwgYWJzb2x1dGVUcmFuc2Zvcm0sIHJlcGFp
bnRSZWN0LCBtYXNrZXJEYXRhLT5tYXNrSW1hZ2UsIG1pc3NpbmdNYXNrZXJEYXRhKTsKKwogICAg
IHJldHVybiB0cnVlOwogfQogCitib29sIFJlbmRlclNWR1Jlc291cmNlTWFza2VyOjphcHBseVJl
c291cmNlKFJlbmRlckVsZW1lbnQmIHJlbmRlcmVyLCBjb25zdCBSZW5kZXJTdHlsZSYsIEdyYXBo
aWNzQ29udGV4dComIGNvbnRleHQsIHVuc2lnbmVkIHNob3J0IHJlc291cmNlTW9kZSkKK3sKKyAg
ICBBU1NFUlRfVU5VU0VEKHJlc291cmNlTW9kZSwgcmVzb3VyY2VNb2RlID09IEFwcGx5VG9EZWZh
dWx0TW9kZSk7CisgICAgcmV0dXJuIGFwcGx5U1ZHTWFzayhyZW5kZXJlciwgY29udGV4dCwgdHJ1
ZSk7Cit9CisKIGJvb2wgUmVuZGVyU1ZHUmVzb3VyY2VNYXNrZXI6OmRyYXdDb250ZW50SW50b01h
c2tJbWFnZShNYXNrZXJEYXRhKiBtYXNrZXJEYXRhLCBDb2xvclNwYWNlIGNvbG9yU3BhY2UsIFJl
bmRlck9iamVjdCogb2JqZWN0KQogewogICAgIEdyYXBoaWNzQ29udGV4dCogbWFza0ltYWdlQ29u
dGV4dCA9IG1hc2tlckRhdGEtPm1hc2tJbWFnZS0+Y29udGV4dCgpOwpAQCAtMTI3LDYgKzEzNCwz
NCBAQCBib29sIFJlbmRlclNWR1Jlc291cmNlTWFza2VyOjpkcmF3Q29udGVudEludG9NYXNrSW1h
Z2UoTWFza2VyRGF0YSogbWFza2VyRGF0YSwgQwogICAgIHJldHVybiB0cnVlOwogfQogCit2b2lk
IFJlbmRlclNWR1Jlc291cmNlTWFza2VyOjpkcmF3TWFza0ZvclJlbmRlcmVyKFJlbmRlckVsZW1l
bnQmIHJlbmRlcmVyLCBjb25zdCBCYWNrZ3JvdW5kSW1hZ2VHZW9tZXRyeSYgZ2VvbWV0cnksIEdy
YXBoaWNzQ29udGV4dCogY29udGV4dCwgQ29tcG9zaXRlT3BlcmF0b3IgY29tcG9zaXRlT3ApCit7
CisgICAgaWYgKGNvbnRleHQtPnBhaW50aW5nRGlzYWJsZWQoKSkKKyAgICAgICAgcmV0dXJuOwor
CisgICAgaWYgKCFhcHBseVNWR01hc2socmVuZGVyZXIsIGNvbnRleHQsIGZhbHNlKSkKKyAgICAg
ICAgcmV0dXJuOworCisgICAgTWFza2VyRGF0YSogbWFza2VyRGF0YSA9IG1hc2tlckRhdGFGb3JS
ZW5kZXJlcihyZW5kZXJlcik7CisgICAgQVNTRVJUKG1hc2tlckRhdGEpOworCisgICAgRmxvYXRS
ZWN0IG9uZVRpbGVSZWN0OworICAgIEZsb2F0U2l6ZSBhY3R1YWxUaWxlU2l6ZShnZW9tZXRyeS50
aWxlU2l6ZSgpLndpZHRoKCkgKyBnZW9tZXRyeS5zcGFjZVNpemUoKS53aWR0aCgpLCBnZW9tZXRy
eS50aWxlU2l6ZSgpLmhlaWdodCgpICsgZ2VvbWV0cnkuc3BhY2VTaXplKCkuaGVpZ2h0KCkpOwor
ICAgIG9uZVRpbGVSZWN0LnNldFgoZ2VvbWV0cnkuZGVzdFJlY3QoKS54KCkgKyBmbW9kZihmbW9k
ZigtZ2VvbWV0cnkucmVsYXRpdmVQaGFzZSgpLngoKSwgYWN0dWFsVGlsZVNpemUud2lkdGgoKSkg
LSBhY3R1YWxUaWxlU2l6ZS53aWR0aCgpLCBhY3R1YWxUaWxlU2l6ZS53aWR0aCgpKSk7CisgICAg
b25lVGlsZVJlY3Quc2V0WShnZW9tZXRyeS5kZXN0UmVjdCgpLnkoKSArIGZtb2RmKGZtb2RmKC1n
ZW9tZXRyeS5yZWxhdGl2ZVBoYXNlKCkueSgpLCBhY3R1YWxUaWxlU2l6ZS5oZWlnaHQoKSkgLSBh
Y3R1YWxUaWxlU2l6ZS5oZWlnaHQoKSwgYWN0dWFsVGlsZVNpemUuaGVpZ2h0KCkpKTsKKyAgICBv
bmVUaWxlUmVjdC5zZXRTaXplKGdlb21ldHJ5LnRpbGVTaXplKCkpOworICAgIAorICAgIEZsb2F0
U2l6ZSBpbnRyaW5zaWNUaWxlU2l6ZSA9IG1hc2tlckRhdGEtPm1hc2tJbWFnZS0+bG9naWNhbFNp
emUoKTsKKyAgICBGbG9hdFNpemUgc2NhbGUoZ2VvbWV0cnkudGlsZVNpemUoKS53aWR0aCgpIC8g
aW50cmluc2ljVGlsZVNpemUud2lkdGgoKSwgZ2VvbWV0cnkudGlsZVNpemUoKS5oZWlnaHQoKSAv
IGludHJpbnNpY1RpbGVTaXplLmhlaWdodCgpKTsKKyAgICAKKyAgICBGbG9hdFJlY3QgdmlzaWJs
ZVNyY1JlY3Q7CisgICAgdmlzaWJsZVNyY1JlY3Quc2V0WCgoZ2VvbWV0cnkuZGVzdFJlY3QoKS54
KCkgLSBvbmVUaWxlUmVjdC54KCkpIC8gc2NhbGUud2lkdGgoKSk7CisgICAgdmlzaWJsZVNyY1Jl
Y3Quc2V0WSgoZ2VvbWV0cnkuZGVzdFJlY3QoKS55KCkgLSBvbmVUaWxlUmVjdC55KCkpIC8gc2Nh
bGUuaGVpZ2h0KCkpOworICAgIHZpc2libGVTcmNSZWN0LnNldFdpZHRoKGdlb21ldHJ5LmRlc3RS
ZWN0KCkud2lkdGgoKSAvIHNjYWxlLndpZHRoKCkpOworICAgIHZpc2libGVTcmNSZWN0LnNldEhl
aWdodChnZW9tZXRyeS5kZXN0UmVjdCgpLmhlaWdodCgpIC8gc2NhbGUuaGVpZ2h0KCkpOworICAg
IGNvbnRleHQtPmRyYXdJbWFnZUJ1ZmZlcihtYXNrZXJEYXRhLT5tYXNrSW1hZ2UuZ2V0KCksIENv
bG9yU3BhY2VEZXZpY2VSR0IsIGdlb21ldHJ5LmRlc3RSZWN0KCksIHZpc2libGVTcmNSZWN0LCBj
b21wb3NpdGVPcCk7Cit9CisKIHZvaWQgUmVuZGVyU1ZHUmVzb3VyY2VNYXNrZXI6OmNhbGN1bGF0
ZU1hc2tDb250ZW50UmVwYWludFJlY3QoKQogewogICAgIGZvciAoTm9kZSogY2hpbGROb2RlID0g
bWFza0VsZW1lbnQoKS5maXJzdENoaWxkKCk7IGNoaWxkTm9kZTsgY2hpbGROb2RlID0gY2hpbGRO
b2RlLT5uZXh0U2libGluZygpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlTWFza2VyLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlTWFza2VyLmgKaW5kZXggYTFmZmIzZjQuLjdjZDc0ZGMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3Vy
Y2VNYXNrZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jl
c291cmNlTWFza2VyLmgKQEAgLTQ1LDYgKzQ1LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9p
ZCByZW1vdmVBbGxDbGllbnRzRnJvbUNhY2hlKGJvb2wgbWFya0ZvckludmFsaWRhdGlvbiA9IHRy
dWUpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCByZW1vdmVDbGllbnRGcm9tQ2FjaGUoUmVu
ZGVyRWxlbWVudCYsIGJvb2wgbWFya0ZvckludmFsaWRhdGlvbiA9IHRydWUpIG92ZXJyaWRlOwog
ICAgIHZpcnR1YWwgYm9vbCBhcHBseVJlc291cmNlKFJlbmRlckVsZW1lbnQmLCBjb25zdCBSZW5k
ZXJTdHlsZSYsIEdyYXBoaWNzQ29udGV4dComLCB1bnNpZ25lZCBzaG9ydCByZXNvdXJjZU1vZGUp
IG92ZXJyaWRlOworICAgIGJvb2wgYXBwbHlTVkdNYXNrKFJlbmRlckVsZW1lbnQmIHJlbmRlcmVy
LCBHcmFwaGljc0NvbnRleHQqJiwgYm9vbCBhcHBseUNsaXApOwogICAgIHZpcnR1YWwgRmxvYXRS
ZWN0IHJlc291cmNlQm91bmRpbmdCb3goY29uc3QgUmVuZGVyT2JqZWN0Jikgb3ZlcnJpZGU7CiAK
ICAgICBTVkdVbml0VHlwZXM6OlNWR1VuaXRUeXBlIG1hc2tVbml0cygpIGNvbnN0IHsgcmV0dXJu
IG1hc2tFbGVtZW50KCkubWFza1VuaXRzKCk7IH0KQEAgLTUyLDYgKzUzLDkgQEAgcHVibGljOgog
CiAgICAgdmlydHVhbCBSZW5kZXJTVkdSZXNvdXJjZVR5cGUgcmVzb3VyY2VUeXBlKCkgY29uc3Qg
b3ZlcnJpZGUgeyByZXR1cm4gTWFza2VyUmVzb3VyY2VUeXBlOyB9CiAKKyAgICBNYXNrZXJEYXRh
KiBtYXNrZXJEYXRhRm9yUmVuZGVyZXIoUmVuZGVyT2JqZWN0JiByZW5kZXJlcikgeyByZXR1cm4g
bV9tYXNrZXIuZ2V0KCZyZW5kZXJlcik7IH0KKyAgICB2b2lkIGRyYXdNYXNrRm9yUmVuZGVyZXIo
UmVuZGVyRWxlbWVudCYgcmVuZGVyZXIsIGNvbnN0IEJhY2tncm91bmRJbWFnZUdlb21ldHJ5Jiwg
R3JhcGhpY3NDb250ZXh0KiwgQ29tcG9zaXRlT3BlcmF0b3IpOworCiBwcml2YXRlOgogICAgIHZv
aWQgZWxlbWVudCgpIGNvbnN0ID0gZGVsZXRlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHTWFza0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR01hc2tFbGVt
ZW50LmNwcAppbmRleCA0MzFmMjZhLi42ZjYyOTFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHTWFza0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdNYXNr
RWxlbWVudC5jcHAKQEAgLTE2MSw3ICsxNjEsMzMgQEAgdm9pZCBTVkdNYXNrRWxlbWVudDo6Y2hp
bGRyZW5DaGFuZ2VkKGNvbnN0IENoaWxkQ2hhbmdlJiBjaGFuZ2UpCiAKIFJlbmRlclB0cjxSZW5k
ZXJFbGVtZW50PiBTVkdNYXNrRWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKFBhc3NSZWY8
UmVuZGVyU3R5bGU+IHN0eWxlKQogewotICAgIHJldHVybiBjcmVhdGVSZW5kZXJlcjxSZW5kZXJT
VkdSZXNvdXJjZU1hc2tlcj4oKnRoaXMsIFdURjo6bW92ZShzdHlsZSkpOworICAgIFJlbmRlclB0
cjxSZW5kZXJFbGVtZW50PiBtYXNrUmVuZGVyZXIgPSBjcmVhdGVSZW5kZXJlcjxSZW5kZXJTVkdS
ZXNvdXJjZU1hc2tlcj4oKnRoaXMsIFdURjo6bW92ZShzdHlsZSkpOworICAgIAorICAgIC8vIFBh
c3MgYWxvbmcgZXhpc3RpbmcgcmVuZGVyIGxheWVyIGNsaWVudHMuCisgICAgZm9yIChhdXRvKiBj
bGllbnRMYXllciA6IG1fY2xpZW50TGF5ZXJzKQorICAgICAgICBzdGF0aWNfY2FzdDxSZW5kZXJT
VkdSZXNvdXJjZU1hc2tlcio+KG1hc2tSZW5kZXJlci5nZXQoKSktPmFkZENsaWVudFJlbmRlckxh
eWVyKGNsaWVudExheWVyKTsKKyAgICAKKyAgICByZXR1cm4gbWFza1JlbmRlcmVyOworfQorCit2
b2lkIFNWR01hc2tFbGVtZW50OjphZGRDbGllbnRSZW5kZXJMYXllcihSZW5kZXJMYXllciogY2xp
ZW50KQoreworICAgIEFTU0VSVChjbGllbnQpOworICAgIG1fY2xpZW50TGF5ZXJzLmFkZChjbGll
bnQpOworICAgIAorICAgIC8vIFBhc3MgaXQgYWxvbmcgdG8gdGhlIHJlbmRlcmVyLgorICAgIGlm
IChyZW5kZXJlcigpKQorICAgICAgICBzdGF0aWNfY2FzdDxSZW5kZXJTVkdSZXNvdXJjZU1hc2tl
cio+KHJlbmRlcmVyKCkpLT5hZGRDbGllbnRSZW5kZXJMYXllcihjbGllbnQpOworfQorCit2b2lk
IFNWR01hc2tFbGVtZW50OjpyZW1vdmVDbGllbnRSZW5kZXJMYXllcihSZW5kZXJMYXllciogY2xp
ZW50KQoreworICAgIEFTU0VSVChjbGllbnQpOworICAgIG1fY2xpZW50TGF5ZXJzLnJlbW92ZShj
bGllbnQpOworICAgIAorICAgIC8vIFBhc3MgaXQgYWxvbmcgdG8gdGhlIHJlbmRlcmVyLgorICAg
IGlmIChyZW5kZXJlcigpKQorICAgICAgICBzdGF0aWNfY2FzdDxSZW5kZXJTVkdSZXNvdXJjZU1h
c2tlcio+KHJlbmRlcmVyKCkpLT5yZW1vdmVDbGllbnRSZW5kZXJMYXllcihjbGllbnQpOwogfQog
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTWFza0VsZW1lbnQuaCBiL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdNYXNrRWxlbWVudC5oCmluZGV4IDIyZWRkYmMuLmQ0NmM3MDIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdNYXNrRWxlbWVudC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdNYXNrRWxlbWVudC5oCkBAIC0zMCw2ICszMCw4IEBACiAjaW5j
bHVkZSAiU1ZHVW5pdFR5cGVzLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKKyAgICAKK2NsYXNz
IFJlbmRlckxheWVyOwogCiBjbGFzcyBTVkdNYXNrRWxlbWVudCBmaW5hbCA6IHB1YmxpYyBTVkdF
bGVtZW50LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdWJsaWMgU1ZHVGVzdHMsCkBA
IC0zNyw2ICszOSw5IEBAIGNsYXNzIFNWR01hc2tFbGVtZW50IGZpbmFsIDogcHVibGljIFNWR0Vs
ZW1lbnQsCiBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8U1ZHTWFza0VsZW1lbnQ+IGNy
ZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQmKTsKIAorICAgIHZvaWQgYWRkQ2xp
ZW50UmVuZGVyTGF5ZXIoUmVuZGVyTGF5ZXIqKTsKKyAgICB2b2lkIHJlbW92ZUNsaWVudFJlbmRl
ckxheWVyKFJlbmRlckxheWVyKik7CisKIHByaXZhdGU6CiAgICAgU1ZHTWFza0VsZW1lbnQoY29u
c3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Jik7CiAKQEAgLTQ4LDYgKzUzLDggQEAgcHJpdmF0
ZToKICAgICB2aXJ0dWFsIHZvaWQgc3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWRO
YW1lJikgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIGNoaWxkcmVuQ2hhbmdlZChjb25zdCBD
aGlsZENoYW5nZSYpIG92ZXJyaWRlOwogCisgICAgSGFzaFNldDxSZW5kZXJMYXllcio+IG1fY2xp
ZW50TGF5ZXJzOworCiAgICAgdmlydHVhbCBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRl
RWxlbWVudFJlbmRlcmVyKFBhc3NSZWY8UmVuZGVyU3R5bGU+KSBvdmVycmlkZTsKIAogICAgIHZp
cnR1YWwgYm9vbCBzZWxmSGFzUmVsYXRpdmVMZW5ndGhzKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1
cm4gdHJ1ZTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1VzZUVsZW1lbnQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1VzZUVsZW1lbnQuY3BwCmluZGV4IDUyOTUxYmMu
LjQyYmM4ZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdVc2VFbGVtZW50LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVXNlRWxlbWVudC5jcHAKQEAgLTk5Miw4ICs5
OTIsMTEgQEAgdm9pZCBTVkdVc2VFbGVtZW50OjpzZXRDYWNoZWREb2N1bWVudChDYWNoZWRSZXNv
dXJjZUhhbmRsZTxDYWNoZWRTVkdEb2N1bWVudD4gY2EKICAgICAgICAgbV9jYWNoZWREb2N1bWVu
dC0+cmVtb3ZlQ2xpZW50KHRoaXMpOwogCiAgICAgbV9jYWNoZWREb2N1bWVudCA9IGNhY2hlZERv
Y3VtZW50OwotICAgIGlmIChtX2NhY2hlZERvY3VtZW50KQorICAgIGlmIChtX2NhY2hlZERvY3Vt
ZW50KSB7CisgICAgICAgIC8vIFdlIGRvbid0IG5lZWQgdGhlIFNWRyBkb2N1bWVudCB0byBjcmVh
dGUgYSBuZXcgZnJhbWUgYmVjYXVzZSB0aGUgbmV3IGRvY3VtZW50IGJlbG9uZ3MgdG8gdGhlIHBh
cmVudCBVc2VFbGVtZW50LgorICAgICAgICBtX2NhY2hlZERvY3VtZW50LT5zZXRTaG91bGRDcmVh
dGVGcmFtZUZvckRvY3VtZW50KGZhbHNlKTsKICAgICAgICAgbV9jYWNoZWREb2N1bWVudC0+YWRk
Q2xpZW50KHRoaXMpOworICAgIH0KIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
c3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9T
VkdJbWFnZS5jcHAKaW5kZXggNDliOTBiZS4uNTcyMTVkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcv
Z3JhcGhpY3MvU1ZHSW1hZ2UuY3BwCkBAIC0zNDQsNiArMzQ0LDggQEAgYm9vbCBTVkdJbWFnZTo6
ZGF0YUNoYW5nZWQoYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCiAgICAgICAgIGZpbGxXaXRoRW1wdHlD
bGllbnRzKHBhZ2VDb25maWd1cmF0aW9uKTsKICAgICAgICAgbV9jaHJvbWVDbGllbnQgPSBzdGQ6
Om1ha2VfdW5pcXVlPFNWR0ltYWdlQ2hyb21lQ2xpZW50Pih0aGlzKTsKICAgICAgICAgcGFnZUNv
bmZpZ3VyYXRpb24uY2hyb21lQ2xpZW50ID0gbV9jaHJvbWVDbGllbnQuZ2V0KCk7CisgICAgICAg
IGJvb2wgY2FuSGF2ZVNjcm9sbGJhcnMgPSBmYWxzZTsgLy8gU1ZHIEltYWdlcyB3aWxsIGFsd2F5
cyBzeW50aGVzaXplIGEgdmlld0JveCwgaWYgaXQncyBub3QgYXZhaWxhYmxlLCBhbmQgdGh1cyBu
ZXZlciBzZWUgc2Nyb2xsYmFycy4KKyAgICAgICAgYm9vbCB0cmFuc3BhcmVudCA9IHRydWU7IC8v
IFNWRyBJbWFnZXMgYXJlIHRyYW5zcGFyZW50LgogCiAgICAgICAgIC8vIEZJWE1FOiBJZiB0aGlz
IFNWRyBlbmRzIHVwIGxvYWRpbmcgaXRzZWxmLCB3ZSBtaWdodCBsZWFrIHRoZSB3b3JsZC4KICAg
ICAgICAgLy8gVGhlIENhY2hlIGNvZGUgZG9lcyBub3Qga25vdyBhYm91dCBDYWNoZWRJbWFnZXMg
aG9sZGluZyBGcmFtZXMgYW5kCkBAIC0zNTEsMjUgKzM1Myw3IEBAIGJvb2wgU1ZHSW1hZ2U6OmRh
dGFDaGFuZ2VkKGJvb2wgYWxsRGF0YVJlY2VpdmVkKQogICAgICAgICAvLyBUaGlzIHdpbGwgYmVj
b21lIGFuIGlzc3VlIHdoZW4gU1ZHSW1hZ2Ugd2lsbCBiZSBhYmxlIHRvIGxvYWQgb3RoZXIKICAg
ICAgICAgLy8gU1ZHSW1hZ2Ugb2JqZWN0cywgYnV0IHdlJ3JlIHNhZmUgbm93LCBiZWNhdXNlIFNW
R0ltYWdlIGNhbiBvbmx5IGJlCiAgICAgICAgIC8vIGxvYWRlZCBieSBhIHRvcC1sZXZlbCBkb2N1
bWVudC4KLSAgICAgICAgbV9wYWdlID0gc3RkOjptYWtlX3VuaXF1ZTxQYWdlPihwYWdlQ29uZmln
dXJhdGlvbik7Ci0gICAgICAgIG1fcGFnZS0+c2V0dGluZ3MoKS5zZXRNZWRpYUVuYWJsZWQoZmFs
c2UpOwotICAgICAgICBtX3BhZ2UtPnNldHRpbmdzKCkuc2V0U2NyaXB0RW5hYmxlZChmYWxzZSk7
Ci0gICAgICAgIG1fcGFnZS0+c2V0dGluZ3MoKS5zZXRQbHVnaW5zRW5hYmxlZChmYWxzZSk7Ci0K
LSAgICAgICAgRnJhbWUmIGZyYW1lID0gbV9wYWdlLT5tYWluRnJhbWUoKTsKLSAgICAgICAgZnJh
bWUuc2V0VmlldyhGcmFtZVZpZXc6OmNyZWF0ZShmcmFtZSkpOwotICAgICAgICBmcmFtZS5pbml0
KCk7Ci0gICAgICAgIEZyYW1lTG9hZGVyJiBsb2FkZXIgPSBmcmFtZS5sb2FkZXIoKTsKLSAgICAg
ICAgbG9hZGVyLmZvcmNlU2FuZGJveEZsYWdzKFNhbmRib3hBbGwpOwotCi0gICAgICAgIGZyYW1l
LnZpZXcoKS0+c2V0Q2FuSGF2ZVNjcm9sbGJhcnMoZmFsc2UpOyAvLyBTVkcgSW1hZ2VzIHdpbGwg
YWx3YXlzIHN5bnRoZXNpemUgYSB2aWV3Qm94LCBpZiBpdCdzIG5vdCBhdmFpbGFibGUsIGFuZCB0
aHVzIG5ldmVyIHNlZSBzY3JvbGxiYXJzLgotICAgICAgICBmcmFtZS52aWV3KCktPnNldFRyYW5z
cGFyZW50KHRydWUpOyAvLyBTVkcgSW1hZ2VzIGFyZSB0cmFuc3BhcmVudC4KLQotICAgICAgICBB
U1NFUlQobG9hZGVyLmFjdGl2ZURvY3VtZW50TG9hZGVyKCkpOyAvLyBEb2N1bWVudExvYWRlciBz
aG91bGQgaGF2ZSBiZWVuIGNyZWF0ZWQgYnkgZnJhbWUtPmluaXQoKS4KLSAgICAgICAgbG9hZGVy
LmFjdGl2ZURvY3VtZW50TG9hZGVyKCktPndyaXRlcigpLnNldE1JTUVUeXBlKCJpbWFnZS9zdmcr
eG1sIik7Ci0gICAgICAgIGxvYWRlci5hY3RpdmVEb2N1bWVudExvYWRlcigpLT53cml0ZXIoKS5i
ZWdpbihVUkwoKSk7IC8vIGNyZWF0ZSB0aGUgZW1wdHkgZG9jdW1lbnQKLSAgICAgICAgbG9hZGVy
LmFjdGl2ZURvY3VtZW50TG9hZGVyKCktPndyaXRlcigpLmFkZERhdGEoZGF0YSgpLT5kYXRhKCks
IGRhdGEoKS0+c2l6ZSgpKTsKLSAgICAgICAgbG9hZGVyLmFjdGl2ZURvY3VtZW50TG9hZGVyKCkt
PndyaXRlcigpLmVuZCgpOworICAgICAgICBtX3BhZ2UgPSBQYWdlOjpjcmVhdGVQYWdlRnJvbUJ1
ZmZlcihwYWdlQ29uZmlndXJhdGlvbiwgZGF0YSgpLCAiaW1hZ2Uvc3ZnK3htbCIsIGNhbkhhdmVT
Y3JvbGxiYXJzLCB0cmFuc3BhcmVudCk7CiAKICAgICAgICAgLy8gU2V0IHRoZSBpbnRyaW5zaWMg
c2l6ZSBiZWZvcmUgYSBjb250YWluZXIgc2l6ZSBpcyBhdmFpbGFibGUuCiAgICAgICAgIG1faW50
cmluc2ljU2l6ZSA9IGNvbnRhaW5lclNpemUoKTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>242569</attachid>
            <date>2014-12-04 07:00:44 -0800</date>
            <delta_ts>2014-12-04 09:04:44 -0800</delta_ts>
            <desc>Added &apos;reviewed by&apos; in ChangeLog</desc>
            <filename>129682.subpart1.v4.patch</filename>
            <type>text/plain</type>
            <size>100602</size>
            <attacher name="Radu Stavila">stavila</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYkNv
cmUvQ01ha2VMaXN0cy50eHQKaW5kZXggOTdjMjMyOS4uYzlhYzAyNSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0
cy50eHQKQEAgLTEyODksNiArMTI4OSw3IEBAIHNldChXZWJDb3JlX1NPVVJDRVMKICAgICBjc3Mv
VHJhbnNmb3JtRnVuY3Rpb25zLmNwcAogICAgIGNzcy9WaWV3cG9ydFN0eWxlUmVzb2x2ZXIuY3Bw
CiAgICAgY3NzL1dlYktpdENTU0ZpbHRlclZhbHVlLmNwcAorICAgIGNzcy9XZWJLaXRDU1NSZXNv
dXJjZVZhbHVlLmNwcAogICAgIGNzcy9DU1NLZXlmcmFtZVJ1bGUuY3BwCiAgICAgY3NzL0NTU0tl
eWZyYW1lc1J1bGUuY3BwCiAgICAgY3NzL1dlYktpdENTU01hdHJpeC5jcHAKQEAgLTIwODksNiAr
MjA5MCw3IEBAIHNldChXZWJDb3JlX1NPVVJDRVMKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9JU09W
VFRDdWUuY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvTGF5b3V0Qm94RXh0ZW50LmNwcAogICAg
IHBsYXRmb3JtL2dyYXBoaWNzL0xheW91dFJlY3QuY3BwCisgICAgcGxhdGZvcm0vZ3JhcGhpY3Mv
TWFza0ltYWdlT3BlcmF0aW9uLmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVy
LmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL1BhdGguY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhp
Y3MvUGF0aFRyYXZlcnNhbFN0YXRlLmNwcApAQCAtMjI5NSw2ICsyMjk3LDcgQEAgc2V0KFdlYkNv
cmVfU09VUkNFUwogICAgIHJlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwCiAgICAgcmVu
ZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5jcHAKICAgICByZW5kZXJpbmcvUmVuZGVyTGF5
ZXJGaWx0ZXJJbmZvLmNwcAorICAgIHJlbmRlcmluZy9SZW5kZXJMYXllck1hc2tJbWFnZUluZm8u
Y3BwCiAgICAgcmVuZGVyaW5nL1JlbmRlckxheWVyTW9kZWxPYmplY3QuY3BwCiAgICAgcmVuZGVy
aW5nL1JlbmRlckxpbmVCb3hMaXN0LmNwcAogICAgIHJlbmRlcmluZy9SZW5kZXJMaW5lQnJlYWsu
Y3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKaW5kZXggYjM2YWVjOC4uMTNlYTQ5YiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDE4MyBAQAorMjAxNC0xMS0yOCAgUmFkdSBTdGF2aWxhICA8c3RhdmlsYUBhZG9iZS5jb20+CisK
KyAgICAgICAgW1NWRyBNYXNraW5nXSBBZGQgc3VwcG9ydCBmb3IgcmVmZXJlbmNpbmcgPG1hc2s+
IGVsZW1lbnRzIGZyb20gLXdlYmtpdC1tYXNrLWltYWdlCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzkwOTIKKworICAgICAgICBSZXZpZXdlZCBieSBT
aW1vbiBGcmFzZXIuCisKKyAgICAgICAgVGhpcyBwYXRjaCBpbXByb3ZlcyB0aGUgLXdlYmtpdC1t
YXNrLWltYWdlIHByb3BlcnR5IGJ5IGFsbG93aW5nIGl0IHRvIHJlZmVyZW5jZQorICAgICAgICBh
IDxtYXNrPiBlbGVtZW50IGRlZmluZWQgaW4gYW4gaW5saW5lIG9yIGV4dGVybmFsIFNWRyBkb2N1
bWVudC4KKyAgICAgICAgVXAgdW50aWwgbm93LCBlYWNoIGltYWdlIHRvIGJlIHVzZWQgYXMgYSBt
YXNrIGNvbnNpc3RlZCBvZiBhIEZpbGxMYXllciBvYmplY3QgCisgICAgICAgIHdob3NlIG1faW1h
Z2UgbWVtYmVyIHJlcHJlc2VudGVkIHRoZSBtYXNrLiBOb3csIGluIG9yZGVyIHRvIGFjY29tb2Rh
dGUKKyAgICAgICAgPG1hc2s+IGVsZW1lbnRzIHJlZmVyZW5jZWQgYnkgYSBmcmFnbWVudCBpZGVu
dGlmaWVyIChlLmcuIGZpbGUuc3ZnI21hc2sxKQorICAgICAgICBhIG5ldyBjbGFzcyB3YXMgY3Jl
YXRlZCAoTWFza0ltYWdlT3BlcmF0aW9uKSBhbmQgYWRkZWQgYXMgYSBtZW1iZXIgb2YgdGhlIAor
ICAgICAgICBGaWxsTGF5ZXIuIEFzIHN1Y2gsIGZyb20gbm93IG9uLCBhbGwgRmlsbExheWVyIG9i
amVjdHMgdXNlZCBmb3IgbWFza2luZyB3aWxsCisgICAgICAgIHN0b3JlIHRoZSBtYXNraW5nIGlu
Zm9ybWF0aW9uIGluIHRoaXMgbmV3IG1lbWJlci4KKyAgICAgICAgV2hlbiBwYXJzaW5nIHRoZSAt
d2Via2l0LW1hc2staW1hZ2UgcHJvcGVydHkgKG9yIHRoZSAtd2Via2l0LW1hc2sgc2hvcnRoYW5k
KQorICAgICAgICBhIG5ldyBNYXNrSW1hZ2VPcGVyYXRpb24gb2JqZWN0IGlzIGNyZWF0ZWQgZm9y
IGVhY2ggaW1hZ2UuIElmIHRoZSB2YWx1ZSByZXByZXNlbnRzCisgICAgICAgIGFuIGV4dGVybmFs
IFVSTCwgYSBwZW5kaW5nIFNWRyBkb2N1bWVudCB3aWxsIGJlIGNyZWF0ZWQgd2hpY2ggd2lsbCBi
ZSBsb2FkZWQgCisgICAgICAgIGR1cmluZyB0aGUgcGhhc2UgdGhhdCBsb2FkcyB0aGUgcGVuZGlu
ZyByZXNvdXJjZXMuIFdoZW4gdGhlIGRvd25sb2FkIGlzIGNvbXBsZXRlLAorICAgICAgICB0aGUg
TWFza0ltYWdlT3BlcmF0aW9uIGlzIG5vdGlmaWVkIGJ5IHRoZSBDYWNoZWRTVkdEb2N1bWVudCBj
bGFzcyBhbmQgY2hlY2tzIGlmCisgICAgICAgIHRoZSByZWNlaXZlZCBkb3dubG9hZCBpcyBhIHZh
bGlkIFNWRyBhbmQgdGhlIHJlcXVlc3RlZCBmcmFnbWVudCBpZGVudGlmaWVyCisgICAgICAgIGFj
dHVhbGx5IGV4aXN0cyBhbmQgaWRlbnRpZmllcyBhIDxtYXNrPiBlbGVtZW50LiBJZiBpdCBkb2Vz
LCB0aGF0IGVsZW1lbnQncworICAgICAgICByZW5kZXJlciAob2YgdHlwZSBSZW5kZXJTVkdSZXNv
dXJjZU1hc2tlcikgd2lsbCBiZSB1c2VkIHdoZW4gcGFpbnRpbmcgdGhlIG1hc2sgbGF5ZXJzLgor
ICAgICAgICBPdGhlcndpc2UsIHRoZSBNYXNrSW1hZ2VPcGVyYXRpb24gY2xhc3Mgd2lsbCB1c2Ug
dGhlIGFscmVhZHkgZG93bmxvYWRlZCBkYXRhIAorICAgICAgICBidWZmZXIgdG8gY3JlYXRlIGEg
Q2FjaGVkSW1hZ2UgZnJvbSBpdCBhbmQgdXNlIHRoYXQgaW5zdGVhZCwgYmFzaWNhbGx5IGVtdWxh
dGluZworICAgICAgICB0aGUgcHJldmlvdXMgYmVoYXZpb3IsIHdoZW4gb25seSBpbWFnZXMgd2Vy
ZSBhY2NlcHRlZC4gVGhpcyBlbnN1cmVzIHRoYXQgYWxsIGV4aXN0aW5nCisgICAgICAgIGJlaGF2
aW9yLCBsaWtlIHBhaW50aW5nIGVudGlyZSBTVkdzLCBwYWludGluZyBub3JtYWwgaW1hZ2VzIChl
LmcuIFBORy9KUEcpLCBwYWludGluZworICAgICAgICBnZW5lcmF0ZWQgaW1hZ2VzIChlLmcuIGxp
bmVhci1ncmFkaWVudCkgd29ya3MgYXMgaXQgZGlkIGJlZm9yZS4KKworICAgICAgICBObyBuZXcg
dGVzdHMgcmVxdWlyZWQsIHRoaXMgcGF0Y2ggZG9lc24ndCBjaGFuZ2UgYW55IGN1cnJlbnQgZnVu
Y3Rpb25hbGl0eS4gCisgICAgICAgIEl0IG9ubHkgYWRkcyBzdXBwb3J0IGZvciByZWZlcmVuY2lu
ZyA8bWFzaz4gZWxlbWVudHMgZm9yIHRoZSAtd2Via2l0LW1hc2staW1hZ2UgCisgICAgICAgIHBy
b3BlcnR5LiBUaGlzIGlzIHN1Yi1wYXJ0IDEgb2YgdGhlIGJpZ2dlciBwYXRjaCBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI5NjgyLgorCisgICAgICAgICogQ01ha2VM
aXN0cy50eHQ6CisgICAgICAgICogV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvajoKKyAg
ICAgICAgKiBXZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qLmZpbHRlcnM6CisgICAgICAg
ICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGNzcy9DU1NW
YWx1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NWYWx1ZTo6Y3NzVGV4dCk6CisgICAgICAg
IChXZWJDb3JlOjpDU1NWYWx1ZTo6ZGVzdHJveSk6CisgICAgICAgICogY3NzL0NTU1ZhbHVlLmg6
CisgICAgICAgIChXZWJDb3JlOjpDU1NWYWx1ZTo6aXNXZWJLaXRDU1NSZXNvdXJjZVZhbHVlKToK
KyAgICAgICAgKiBjc3MvU3R5bGVSZXNvbHZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdHls
ZVJlc29sdmVyOjpTdGF0ZTo6Y2xlYXIpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVSZXNvbHZl
cjo6Y3JlYXRlTWFza0ltYWdlT3BlcmF0aW9ucyk6CisgICAgICAgICogY3NzL1N0eWxlUmVzb2x2
ZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUmVzb2x2ZXI6OlN0YXRlOjptYXNrSW1hZ2Vz
V2l0aFBlbmRpbmdTVkdEb2N1bWVudHMpOgorICAgICAgICAqIGNzcy9XZWJLaXRDU1NSZXNvdXJj
ZVZhbHVlLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpXZWJLaXRDU1NSZXNvdXJjZVZh
bHVlOjpXZWJLaXRDU1NSZXNvdXJjZVZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OldlYktpdENT
U1Jlc291cmNlVmFsdWU6OmN1c3RvbUNTU1RleHQpOgorICAgICAgICAoV2ViQ29yZTo6V2ViS2l0
Q1NTUmVzb3VyY2VWYWx1ZTo6aXNDU1NWYWx1ZU5vbmUpOgorICAgICAgICAqIGNzcy9XZWJLaXRD
U1NSZXNvdXJjZVZhbHVlLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6V2ViS2l0Q1NTUmVz
b3VyY2VWYWx1ZTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OldlYktpdENTU1Jlc291cmNl
VmFsdWU6OmlubmVyVmFsdWUpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJj
ZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZUxvYWRlcjo6YWRk
Q2FjaGVkUmVzb3VyY2UpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxv
YWRlci5oOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRTVkdEb2N1bWVudC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpDYWNoZWRTVkdEb2N1bWVudDo6Q2FjaGVkU1ZHRG9jdW1lbnQpOgor
ICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkU1ZHRG9jdW1lbnQ6OmZpbmlzaExvYWRpbmcpOgorICAg
ICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRTVkdEb2N1bWVudC5oOgorICAgICAgICAqIGxvYWRl
ci9jYWNoZS9DYWNoZWRTVkdEb2N1bWVudFJlZmVyZW5jZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpDYWNoZWRTVkdEb2N1bWVudFJlZmVyZW5jZTo6Q2FjaGVkU1ZHRG9jdW1lbnRSZWZlcmVuY2Up
OgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkU1ZHRG9jdW1lbnRSZWZlcmVuY2U6On5DYWNoZWRT
VkdEb2N1bWVudFJlZmVyZW5jZSk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRTVkdEb2N1bWVu
dFJlZmVyZW5jZTo6bG9hZCk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0RvY3Vt
ZW50UmVmZXJlbmNlLmg6CisgICAgICAgICogcGFnZS9GcmFtZVZpZXcuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6RnJhbWVWaWV3Ojppc1NWR0RvY3VtZW50KToKKyAgICAgICAgKiBwYWdlL0ZyYW1l
Vmlldy5oOgorICAgICAgICAqIHBhZ2UvUGFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYWdl
OjpjcmVhdGVQYWdlRnJvbUJ1ZmZlcik6CisgICAgICAgICogcGFnZS9QYWdlLmg6CisgICAgICAg
ICogcGxhdGZvcm0vU2Nyb2xsVmlldy5oOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsVmlldzo6
aXNTVkdEb2N1bWVudCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvTWFza0ltYWdlT3Bl
cmF0aW9uLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpNYXNrSW1hZ2VPcGVyYXRpb246
OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpNYXNrSW1hZ2VPcGVyYXRpb246Ok1hc2tJbWFn
ZU9wZXJhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpNYXNrSW1hZ2VPcGVyYXRpb246On5NYXNr
SW1hZ2VPcGVyYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6TWFza0ltYWdlT3BlcmF0aW9uOjpp
c0NTU1ZhbHVlTm9uZSk6CisgICAgICAgIChXZWJDb3JlOjpNYXNrSW1hZ2VPcGVyYXRpb246OmNz
c1ZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1hc2tJbWFnZU9wZXJhdGlvbjo6aXNNYXNrTG9h
ZGVkKToKKyAgICAgICAgKFdlYkNvcmU6Ok1hc2tJbWFnZU9wZXJhdGlvbjo6c2V0UmVuZGVyTGF5
ZXJJbWFnZUNsaWVudCk6CisgICAgICAgIChXZWJDb3JlOjpNYXNrSW1hZ2VPcGVyYXRpb246OmFk
ZFJlbmRlcmVySW1hZ2VDbGllbnQpOgorICAgICAgICAoV2ViQ29yZTo6TWFza0ltYWdlT3BlcmF0
aW9uOjpyZW1vdmVSZW5kZXJlckltYWdlQ2xpZW50KToKKyAgICAgICAgKFdlYkNvcmU6Ok1hc2tJ
bWFnZU9wZXJhdGlvbjo6Z2V0T3JDcmVhdGVDYWNoZWRTVkdEb2N1bWVudFJlZmVyZW5jZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpNYXNrSW1hZ2VPcGVyYXRpb246Om5vdGlmeUZpbmlzaGVkKTogVGhp
cyBpcyB0aGUgbWV0aG9kIHRoYXQgZ2V0cyBjYWxsZWQgd2hlbiB0aGUgZG9jdW1lbnQgaGFzIGZp
bmlzaGVkIAorICAgICAgICBkb3dubG9hZGluZyBhbmQgY2hlY2tzIGlmIGl0IGNhbiBmaW5kIGEg
dmFsaWQgPG1hc2s+IGVsZW1lbnQuCisgICAgICAgIChXZWJDb3JlOjpNYXNrSW1hZ2VPcGVyYXRp
b246OmRyYXdNYXNrKToKKyAgICAgICAgKFdlYkNvcmU6Ok1hc2tJbWFnZU9wZXJhdGlvbjo6Z2V0
U1ZHTWFza2VyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9NYXNrSW1hZ2VPcGVyYXRp
b24uaDogQWRkZWQuCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmNw
cDogVGhlIEJhY2tncm91bmRJbWFnZUdlb21ldHJ5IGNsYXNzIHdhcyBtb3ZlZCBvdXQgb2YgUmVu
ZGVyQm94TW9kZWxPYmplY3QgaW4gCisgICAgICAgIG9yZGVyIHRvIGJlIHVzZWQgYXMgYSBwYXJh
bWV0ZXIgZm9yIG90aGVyIG1ldGhvZHMuIFRoaXMgd2FzIG5lY2Vzc2FyeSB0byBhdm9pZCBoYXZp
bmcgbWV0aG9kcyB3aXRoIHZlcnkgbWFueSBwYXJhbWV0ZXJzLgorICAgICAgICAoV2ViQ29yZTo6
QmFja2dyb3VuZEltYWdlR2VvbWV0cnk6OnNldE5vUmVwZWF0WCk6CisgICAgICAgIChXZWJDb3Jl
OjpCYWNrZ3JvdW5kSW1hZ2VHZW9tZXRyeTo6c2V0Tm9SZXBlYXRZKToKKyAgICAgICAgKFdlYkNv
cmU6OkJhY2tncm91bmRJbWFnZUdlb21ldHJ5Ojp1c2VGaXhlZEF0dGFjaG1lbnQpOgorICAgICAg
ICAoV2ViQ29yZTo6QmFja2dyb3VuZEltYWdlR2VvbWV0cnk6OmNsaXApOgorICAgICAgICAoV2Vi
Q29yZTo6QmFja2dyb3VuZEltYWdlR2VvbWV0cnk6OnJlbGF0aXZlUGhhc2UpOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyQm94TW9kZWxPYmplY3Q6OkJhY2tncm91bmRJbWFnZUdlb21ldHJ5Ojpz
ZXROb1JlcGVhdFgpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94TW9kZWxP
YmplY3Q6OkJhY2tncm91bmRJbWFnZUdlb21ldHJ5OjpzZXROb1JlcGVhdFkpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94TW9kZWxPYmplY3Q6OkJhY2tncm91bmRJbWFnZUdl
b21ldHJ5Ojp1c2VGaXhlZEF0dGFjaG1lbnQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyQm94TW9kZWxPYmplY3Q6OkJhY2tncm91bmRJbWFnZUdlb21ldHJ5OjpjbGlwKTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveE1vZGVsT2JqZWN0OjpCYWNrZ3JvdW5k
SW1hZ2VHZW9tZXRyeTo6cmVsYXRpdmVQaGFzZSk6IERlbGV0ZWQuCisgICAgICAgICogcmVuZGVy
aW5nL1JlbmRlckJveE1vZGVsT2JqZWN0Lmg6CisgICAgICAgIChXZWJDb3JlOjpCYWNrZ3JvdW5k
SW1hZ2VHZW9tZXRyeTo6QmFja2dyb3VuZEltYWdlR2VvbWV0cnkpOgorICAgICAgICAoV2ViQ29y
ZTo6QmFja2dyb3VuZEltYWdlR2VvbWV0cnk6OmRlc3RPcmlnaW4pOgorICAgICAgICAoV2ViQ29y
ZTo6QmFja2dyb3VuZEltYWdlR2VvbWV0cnk6OnNldERlc3RPcmlnaW4pOgorICAgICAgICAoV2Vi
Q29yZTo6QmFja2dyb3VuZEltYWdlR2VvbWV0cnk6OmRlc3RSZWN0KToKKyAgICAgICAgKFdlYkNv
cmU6OkJhY2tncm91bmRJbWFnZUdlb21ldHJ5OjpzZXREZXN0UmVjdCk6CisgICAgICAgIChXZWJD
b3JlOjpCYWNrZ3JvdW5kSW1hZ2VHZW9tZXRyeTo6cGhhc2UpOgorICAgICAgICAoV2ViQ29yZTo6
QmFja2dyb3VuZEltYWdlR2VvbWV0cnk6OnNldFBoYXNlKToKKyAgICAgICAgKFdlYkNvcmU6OkJh
Y2tncm91bmRJbWFnZUdlb21ldHJ5Ojp0aWxlU2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpCYWNr
Z3JvdW5kSW1hZ2VHZW9tZXRyeTo6c2V0VGlsZVNpemUpOgorICAgICAgICAoV2ViQ29yZTo6QmFj
a2dyb3VuZEltYWdlR2VvbWV0cnk6OnNwYWNlU2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpCYWNr
Z3JvdW5kSW1hZ2VHZW9tZXRyeTo6c2V0U3BhY2VTaXplKToKKyAgICAgICAgKFdlYkNvcmU6OkJh
Y2tncm91bmRJbWFnZUdlb21ldHJ5OjpzZXRQaGFzZVgpOgorICAgICAgICAoV2ViQ29yZTo6QmFj
a2dyb3VuZEltYWdlR2VvbWV0cnk6OnNldFBoYXNlWSk6CisgICAgICAgIChXZWJDb3JlOjpCYWNr
Z3JvdW5kSW1hZ2VHZW9tZXRyeTo6c2V0SGFzTm9uTG9jYWxHZW9tZXRyeSk6CisgICAgICAgIChX
ZWJDb3JlOjpCYWNrZ3JvdW5kSW1hZ2VHZW9tZXRyeTo6aGFzTm9uTG9jYWxHZW9tZXRyeSk6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3hNb2RlbE9iamVjdDo6QmFja2dyb3VuZEltYWdlR2Vv
bWV0cnk6OkJhY2tncm91bmRJbWFnZUdlb21ldHJ5KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlckJveE1vZGVsT2JqZWN0OjpCYWNrZ3JvdW5kSW1hZ2VHZW9tZXRyeTo6ZGVzdE9y
aWdpbik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3hNb2RlbE9iamVjdDo6
QmFja2dyb3VuZEltYWdlR2VvbWV0cnk6OnNldERlc3RPcmlnaW4pOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyQm94TW9kZWxPYmplY3Q6OkJhY2tncm91bmRJbWFnZUdlb21ldHJ5
OjpkZXN0UmVjdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3hNb2RlbE9i
amVjdDo6QmFja2dyb3VuZEltYWdlR2VvbWV0cnk6OnNldERlc3RSZWN0KTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlckJveE1vZGVsT2JqZWN0OjpCYWNrZ3JvdW5kSW1hZ2VHZW9t
ZXRyeTo6cGhhc2UpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94TW9kZWxP
YmplY3Q6OkJhY2tncm91bmRJbWFnZUdlb21ldHJ5OjpzZXRQaGFzZSk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJCb3hNb2RlbE9iamVjdDo6QmFja2dyb3VuZEltYWdlR2VvbWV0
cnk6OnRpbGVTaXplKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveE1vZGVs
T2JqZWN0OjpCYWNrZ3JvdW5kSW1hZ2VHZW9tZXRyeTo6c2V0VGlsZVNpemUpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94TW9kZWxPYmplY3Q6OkJhY2tncm91bmRJbWFnZUdl
b21ldHJ5OjpzcGFjZVNpemUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94
TW9kZWxPYmplY3Q6OkJhY2tncm91bmRJbWFnZUdlb21ldHJ5OjpzZXRTcGFjZVNpemUpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94TW9kZWxPYmplY3Q6OkJhY2tncm91bmRJ
bWFnZUdlb21ldHJ5OjpzZXRQaGFzZVgpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyQm94TW9kZWxPYmplY3Q6OkJhY2tncm91bmRJbWFnZUdlb21ldHJ5OjpzZXRQaGFzZVkpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94TW9kZWxPYmplY3Q6OkJhY2tncm91
bmRJbWFnZUdlb21ldHJ5OjpzZXRIYXNOb25Mb2NhbEdlb21ldHJ5KTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlckJveE1vZGVsT2JqZWN0OjpCYWNrZ3JvdW5kSW1hZ2VHZW9tZXRy
eTo6aGFzTm9uTG9jYWxHZW9tZXRyeSk6IERlbGV0ZWQuCisgICAgICAgICogcmVuZGVyaW5nL1Jl
bmRlckxheWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjpSZW5kZXJMYXll
cik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6flJlbmRlckxheWVyKToKKyAgICAg
ICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXIuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVy
TGF5ZXJNYXNrSW1hZ2VJbmZvLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJM
YXllcjo6TWFza0ltYWdlSW5mbzo6bGF5ZXJUb01hc2tNYXApOiBSZXR1cm5zIGEgc3RhdGljIG1h
cCB0aGF0IGxpbmtzIE1hc2tJbWFnZUluZm8gb2JqZWN0cyB0byBSZW5kZXJMYXllcnMuCisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6TWFza0ltYWdlSW5mbzo6Z2V0SWZFeGlzdHMpOiBS
ZXR1cm5zIHRoZSBNYXNrSW1hZ2VJbmZvIGFzc29jaWF0ZWQgd2l0aCBhIHNwZWNpZmljIFJlbmRl
ckxheWVyLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6Ok1hc2tJbWFnZUluZm86Omdl
dCk6IFJldHVybnMgdGhlIE1hc2tJbWFnZUluZm8gYXNzb2NpYXRlZCB3aXRoIGEgc3BlY2lmaWMg
UmVuZGVyTGF5ZXIgKGNyZWF0ZXMgaXQgaWYgbmVjZXNzYXJ5KS4KKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlckxheWVyOjpNYXNrSW1hZ2VJbmZvOjpyZW1vdmUpOiBSZW1vdmVzIHRoZSBNYXNrSW1h
Z2VJbmZvIGFzc29jaWF0ZWQgd2l0aCBhIHNwZWNpZmljIFJlbmRlckxheWVyLgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyTGF5ZXI6Ok1hc2tJbWFnZUluZm86Ok1hc2tJbWFnZUluZm8pOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6Ok1hc2tJbWFnZUluZm86On5NYXNrSW1hZ2VJbmZv
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjpNYXNrSW1hZ2VJbmZvOjpub3RpZnlG
aW5pc2hlZCk6IEdldHMgY2FsbGVkIHdoZW4gdGhlIFNWRyBkb2N1bWVudCBmaW5pc2hlZCBsb2Fk
aW5nLCB0cmlnZ2VycyByZXBhaW50LgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6Ok1h
c2tJbWFnZUluZm86OmltYWdlQ2hhbmdlZCk6IEdldHMgY2FsbGVkIHdoZW4gdGhlIGltYWdlIG9i
amVjdCBjaGFuZ2VkLCB0cmlnZ2VycyByZXBhaW50LgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
TGF5ZXI6Ok1hc2tJbWFnZUluZm86OnVwZGF0ZU1hc2tJbWFnZUNsaWVudHMpOiBHb2VzIHRocm91
Z2ggYWxsIG1hc2sgbGF5ZXJzIGFuZCBzZXRzIGltYWdlL1NWRyBjbGllbnRzLiAKKyAgICAgICAg
VXBkYXRlcyBsaXN0IG9mIGludGVybmFsIGFuZCBleHRlcm5hbCBTVkcgcmVmZXJlbmNlcy4KKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjpNYXNrSW1hZ2VJbmZvOjpyZW1vdmVNYXNrSW1h
Z2VDbGllbnRzKTogUmVtb3ZlcyBhbGwgaW1hZ2UvU1ZHIGNsaWVudHMgYW5kIGNsZWFycyBsaXN0
cyBvZiBpbnRlcm5hbCBhbmQgZXh0ZXJuYWwgU1ZHIHJlZmVyZW5jZXMuCisgICAgICAgICogcmVu
ZGVyaW5nL1JlbmRlckxheWVyTWFza0ltYWdlSW5mby5oOiBBZGRlZC4KKyAgICAgICAgKiByZW5k
ZXJpbmcvUmVuZGVyT2JqZWN0Lmg6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJPYmplY3Q6Omlz
UmVuZGVyU1ZHUmVzb3VyY2VNYXNrZXIpOgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9GaWxs
TGF5ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RmlsbExheWVyOjpGaWxsTGF5ZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6RmlsbExheWVyOjpvcGVyYXRvcj0pOgorICAgICAgICAoV2ViQ29yZTo6
RmlsbExheWVyOjpvcGVyYXRvcj09KToKKyAgICAgICAgKFdlYkNvcmU6OkZpbGxMYXllcjo6Y3Vs
bEVtcHR5TGF5ZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OkZpbGxMYXllcjo6aGFzTm9uRW1wdHlN
YXNrSW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6RmlsbExheWVyOjppbWFnZXNBcmVMb2FkZWQp
OgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9GaWxsTGF5ZXIuaDoKKyAgICAgICAgKFdlYkNv
cmU6OkZpbGxMYXllcjo6bWFza0ltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkZpbGxMYXllcjo6
aW1hZ2VPck1hc2tJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpGaWxsTGF5ZXI6OnNldE1hc2tJ
bWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpGaWxsTGF5ZXI6OmNsZWFyTWFza0ltYWdlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkZpbGxMYXllcjo6aGFzTWFza0ltYWdlKToKKyAgICAgICAgKiByZW5k
ZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlTWFza2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlclNWR1Jlc291cmNlTWFza2VyOjphcHBseVNWR01hc2spOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyU1ZHUmVzb3VyY2VNYXNrZXI6OmFwcGx5UmVzb3VyY2UpOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyU1ZHUmVzb3VyY2VNYXNrZXI6OmRyYXdNYXNrRm9yUmVuZGVyZXIpOgorICAg
ICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VNYXNrZXIuaDoKKyAgICAgICAg
KiBzdmcvU1ZHTWFza0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHTWFza0VsZW1l
bnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcik6CisgICAgICAgIChXZWJDb3JlOjpTVkdNYXNrRWxl
bWVudDo6YWRkQ2xpZW50UmVuZGVyTGF5ZXIpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHTWFza0Vs
ZW1lbnQ6OnJlbW92ZUNsaWVudFJlbmRlckxheWVyKToKKyAgICAgICAgKiBzdmcvU1ZHTWFza0Vs
ZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHVXNlRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpTVkdVc2VFbGVtZW50OjpzZXRDYWNoZWREb2N1bWVudCk6CisgICAgICAgICogc3ZnL2dy
YXBoaWNzL1NWR0ltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ltYWdlOjpkYXRhQ2hh
bmdlZCk6CisKIDIwMTQtMTItMDQgIENvbW1pdCBRdWV1ZSAgPGNvbW1pdC1xdWV1ZUB3ZWJraXQu
b3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIxNzY3ODkuCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qIGIvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvagppbmRleCA0MTUyN2Ew
Li44NDJlYjE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2Vi
Q29yZS52Y3hwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJvai9XZWJDb3Jl
LnZjeHByb2oKQEAgLTc0OSw2ICs3NDksNyBAQAogICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENv
bmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMici
PnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgogICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRp
dGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj50cnVl
PC9FeGNsdWRlZEZyb21CdWlsZD4KICAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIElu
Y2x1ZGU9Ii4uXGNzc1xXZWJLaXRDU1NSZXNvdXJjZVZhbHVlLmNwcCIgLz4KICAgICA8Q2xDb21w
aWxlIEluY2x1ZGU9Ii4uXERlcml2ZWRTb3VyY2VzLmNwcCI+CiAgICAgICA8UHJlY29tcGlsZWRI
ZWFkZXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xX
aW4zMiciPgogICAgICAgPC9QcmVjb21waWxlZEhlYWRlcj4KQEAgLTc1ODIsNiArNzU4Myw3IEBA
CiAgICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwk
KFBsYXRmb3JtKSc9PSdQcm9kdWN0aW9ufFdpbjMyJyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+
CiAgICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwk
KFBsYXRmb3JtKSc9PSdQcm9kdWN0aW9ufHg2NCciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgog
ICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccGxhdGZvcm1cZ3Jh
cGhpY3NcTWFza0ltYWdlT3BlcmF0aW9uLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9
Ii4uXHBsYXRmb3JtXGdyYXBoaWNzXE9wZW5HTFNoaW1zLmNwcCIgLz4KICAgICA8Q2xDb21waWxl
IEluY2x1ZGU9Ii4uXHBsYXRmb3JtXGdyYXBoaWNzXG9wZW5nbFxFeHRlbnNpb25zM0RPcGVuR0wu
Y3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccGxhdGZvcm1cZ3JhcGhpY3Ncb3Bl
bmdsXEV4dGVuc2lvbnMzRE9wZW5HTENvbW1vbi5jcHAiIC8+CkBAIC03OTUwLDYgKzc5NTIsNyBA
QAogICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8
JChQbGF0Zm9ybSknPT0nUHJvZHVjdGlvbnxXaW4zMiciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxk
PgogICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8
JChQbGF0Zm9ybSknPT0nUHJvZHVjdGlvbnx4NjQnIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4K
ICAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJlbmRlcmluZ1xS
ZW5kZXJMYXllck1hc2tJbWFnZUluZm8uY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0i
Li5ccmVuZGVyaW5nXHN0eWxlXFN0eWxlQ2FjaGVkSW1hZ2VTZXQuY3BwIj4KICAgICAgIDxFeGNs
dWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09
J0RlYnVnU3VmZml4fFdpbjMyJyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CiAgICAgICA8RXhj
bHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9
PSdEZWJ1Z1N1ZmZpeHx4NjQnIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KQEAgLTE4ODUxLDYg
KzE4ODU0LDcgQEAKICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoQ29uZmlndXJhdGlvbkJ1aWxk
RGlyKVxvYmokKFBsYXRmb3JtQXJjaGl0ZWN0dXJlKVwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291
cmNlc1xKU1ZUVFJlZ2lvbkxpc3QuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGFj
Y2Vzc2liaWxpdHlcQWNjZXNzaWJpbGl0eU5vZGVPYmplY3QuaCIgLz4KICAgICA8Q2xJbmNsdWRl
IEluY2x1ZGU9Ii4uXGNzc1xDU1NJbWFnZVNldFZhbHVlLmgiIC8+CisgICAgPENsSW5jbHVkZSBJ
bmNsdWRlPSIuLlxjc3NcV2ViS2l0Q1NTUmVzb3VyY2VWYWx1ZS5oIiAvPgogICAgIDxDbEluY2x1
ZGUgSW5jbHVkZT0iLi5cRm9yd2FyZGluZ0hlYWRlcnNcYmluZGluZ3NcU2NyaXB0RnVuY3Rpb25D
YWxsLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxGb3J3YXJkaW5nSGVhZGVyc1xi
aW5kaW5nc1xTY3JpcHRPYmplY3QuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXEZv
cndhcmRpbmdIZWFkZXJzXGJpbmRpbmdzXFNjcmlwdFZhbHVlLmgiIC8+CkBAIC0xOTQwNyw2ICsx
OTQxMSw3IEBACiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxncmFwaGljc1xn
c3RyZWFtZXJcVmlkZW9TaW5rR1N0cmVhbWVyLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRl
PSIuLlxwbGF0Zm9ybVxncmFwaGljc1xnc3RyZWFtZXJcVmlkZW9UcmFja1ByaXZhdGVHU3RyZWFt
ZXIuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXGdyYXBoaWNzXGdz
dHJlYW1lclxXZWJLaXRXZWJTb3VyY2VHU3RyZWFtZXIuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIElu
Y2x1ZGU9Ii4uXHBsYXRmb3JtXGdyYXBoaWNzXE1hc2tJbWFnZU9wZXJhdGlvbi5oIiAvPgogICAg
IDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccGxhdGZvcm1cZ3JhcGhpY3NcTWVkaWFQbGF5ZXJQcml2
YXRlLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxncmFwaGljc1xP
cGVuR0xTaGltcy5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccGxhdGZvcm1cZ3Jh
cGhpY3Ncb3BlbmdsXEV4dGVuc2lvbnMzRE9wZW5HTC5oIiAvPgpAQCAtMTk1MzgsNiArMTk1NDMs
NyBAQAogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccGxhdGZvcm1cd2luXFdlYkNvcmVCdW5k
bGVXaW4uaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXHdpblxXZWJD
b3JlSW5zdGFuY2VIYW5kbGUuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJlbmRl
cmluZ1xIaXRUZXN0TG9jYXRpb24uaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJl
bmRlcmluZ1xSZW5kZXJMYXllck1hc2tJbWFnZUluZm8uaCIgLz4KICAgICA8Q2xJbmNsdWRlIElu
Y2x1ZGU9Ii4uXHJlbmRlcmluZ1xzdHlsZVxTdHlsZUNhY2hlZEltYWdlU2V0LmgiIC8+CiAgICAg
PENsSW5jbHVkZSBJbmNsdWRlPSIuLlxzdG9yYWdlXFN0b3JhZ2VTdHJhdGVneS5oIiAvPgogICAg
IDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cc3ZnXGdyYXBoaWNzXFNWR0ltYWdlRm9yQ29udGFpbmVy
LmgiIC8+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29y
ZS52Y3hwcm9qLmZpbHRlcnMgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29y
ZS52Y3hwcm9qLmZpbHRlcnMKaW5kZXggOGM1YTNmYS4uOWRkMjQ5MiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvai5maWx0ZXJzCisrKyBi
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2ouZmlsdGVycwpA
QCAtNzI1Miw2ICs3MjUyLDE1IEBACiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxlZGl0aW5n
XHdpblxFZGl0b3JXaW4uY3BwIj4KICAgICAgIDxGaWx0ZXI+ZWRpdGluZzwvRmlsdGVyPgogICAg
IDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccGxhdGZvcm1cZ3JhcGhp
Y3NcTWFza0ltYWdlT3BlcmF0aW9uLmNwcCI+CisgICAgICA8RmlsdGVyPnBsYXRmb3JtXGdyYXBo
aWNzPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIu
LlxyZW5kZXJpbmdcUmVuZGVyTGF5ZXJNYXNrSW1hZ2VJbmZvLmNwcCI+CisgICAgICA8RmlsdGVy
PnJlbmRlcmluZzwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5j
bHVkZT0iLi5cY3NzXFdlYktpdENTU1Jlc291cmNlVmFsdWUuY3BwIj4KKyAgICAgIDxGaWx0ZXI+
Y3NzPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CiAgIDwvSXRlbUdyb3VwPgogICA8SXRlbUdy
b3VwPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xnZW9sb2NhdGlvblxDb29y
ZGluYXRlcy5oIj4KQEAgLTE1MjQyLDYgKzE1MjUxLDE1IEBACiAgICAgPENsSW5jbHVkZSBJbmNs
dWRlPSIuLlxwbGF0Zm9ybVxncmFwaGljc1xhdmZvdW5kYXRpb25cTWVkaWFUaW1lQVZGb3VuZGF0
aW9uLmgiPgogICAgICAgPEZpbHRlcj5wbGF0Zm9ybVxncmFwaGljc1xhdmZvdW5kYXRpb248L0Zp
bHRlcj4KICAgICA8L0NsSW5jbHVkZT4KKyAgICAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxw
bGF0Zm9ybVxncmFwaGljc1xNYXNrSW1hZ2VPcGVyYXRpb24uaCI+CisgICAgICA8RmlsdGVyPnBs
YXRmb3JtXGdyYXBoaWNzPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVk
ZSBJbmNsdWRlPSIuLlxyZW5kZXJpbmdcUmVuZGVyTGF5ZXJNYXNrSW1hZ2VJbmZvLmgiPgorICAg
ICAgPEZpbHRlcj5yZW5kZXJpbmc8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJ
bmNsdWRlIEluY2x1ZGU9Ii4uXGNzc1xXZWJLaXRDU1NSZXNvdXJjZVZhbHVlLmgiPgorICAgICAg
PEZpbHRlcj5jc3M8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KICAgPC9JdGVtR3JvdXA+CiAg
IDxJdGVtR3JvdXA+CiAgICAgPE5vbmUgSW5jbHVkZT0iLi5cY3NzXENTU0dyYW1tYXIueS5pbiI+
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
aW5kZXggY2FmNDRiMy4uZTM4YzM0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMjIzNiw4ICsyMjM2LDE0IEBACiAJCTY1RkQ0
NjY2MTlCNTk2RjYwMDFFMkI0RCAvKiBXZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVu
dC5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDY1ODZG
RTNEMTlCNTQ4QkQwMDVDM0M4MiAvKiBXZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVu
dC5tbSAqLzsgfTsKIAkJNjVGRUE4NjkwOTgzM0FERTAwQkVENEFCIC8qIFBhZ2UuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNjVGRUE4NjgwOTgzM0FE
RTAwQkVENEFCIC8qIFBhZ2UuY3BwICovOyB9OwogCQk2QjM0ODA5NDBFRUY1MEQ0MDBBQzFCNDEg
LyogTmF0aXZlSW1hZ2VQdHIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDZCMzQ4MDkyMEVFRjUwRDQwMEFDMUI0MSAvKiBOYXRpdmVJbWFnZVB0ci5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTZDNTY4Q0Iw
MTlEQUZFQTAwMDQzMENBMiAvKiBNYXNrSW1hZ2VPcGVyYXRpb24uY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkM1NjhDQUUxOURBRkVBMDAwNDMwQ0Ey
IC8qIE1hc2tJbWFnZU9wZXJhdGlvbi5jcHAgKi87IH07CisJCTZDNTY4Q0IxMTlEQUZFQTAwMDQz
MENBMiAvKiBNYXNrSW1hZ2VPcGVyYXRpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDZDNTY4Q0FGMTlEQUZFQTAwMDQzMENBMiAvKiBNYXNrSW1hZ2VP
cGVyYXRpb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQk2QzYzODg5NUE5NkNDRUU1MEM4Qzk0NkMgLyogQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0SW5p
dGlhdG9ycy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NkM2Mzg4OTNBOTZDQ0VFNTBDOEM5NDZDIC8qIENhY2hlZFJlc291cmNlUmVxdWVzdEluaXRpYXRv
cnMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk2
QzYzODg5NkE5NkNDRUU1MEM4Qzk0NkMgLyogQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0SW5pdGlhdG9y
cy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2QzYz
ODg5NEE5NkNDRUU1MEM4Qzk0NkMgLyogQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0SW5pdGlhdG9ycy5j
cHAgKi87IH07CisJCTZDNkNDQUIwMTlEQzQyQjkwMDQzRDVEQiAvKiBXZWJLaXRDU1NSZXNvdXJj
ZVZhbHVlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDZDNkNDQUFFMTlEQzQyQjkwMDQzRDVEQiAvKiBXZWJLaXRDU1NSZXNvdXJjZVZhbHVlLmNwcCAq
LzsgfTsKKwkJNkM2Q0NBQjExOURDNDJCOTAwNDNENURCIC8qIFdlYktpdENTU1Jlc291cmNlVmFs
dWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZDNkND
QUFGMTlEQzQyQjkwMDQzRDVEQiAvKiBXZWJLaXRDU1NSZXNvdXJjZVZhbHVlLmggKi87IH07CisJ
CTZDQkZFNEE0MTlFQkYyRDQwMENBMkY5RCAvKiBSZW5kZXJMYXllck1hc2tJbWFnZUluZm8uY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkNCRkU0QTIx
OUVCRjJENDAwQ0EyRjlEIC8qIFJlbmRlckxheWVyTWFza0ltYWdlSW5mby5jcHAgKi87IH07CisJ
CTZDQkZFNEE1MTlFQkYyRDQwMENBMkY5RCAvKiBSZW5kZXJMYXllck1hc2tJbWFnZUluZm8uaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZDQkZFNEEzMTlF
QkYyRDQwMENBMkY5RCAvKiBSZW5kZXJMYXllck1hc2tJbWFnZUluZm8uaCAqLzsgfTsKIAkJNkNE
REU4RDAxNzcwQkIyMjAwMTZFMDcyIC8qIFJlZ2lvbk92ZXJzZXRTdGF0ZS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkM3MEE4MTQxNzcwN0M0OTAwOUE0
NDZFIC8qIFJlZ2lvbk92ZXJzZXRTdGF0ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CiAJCTZFMEU1NjlCMTgzQkZGRTYwMEUwRThENSAvKiBGbG9hdFJv
dW5kZWRSZWN0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDZFMEU1Njk5MTgzQkZGRTYwMEUwRThENSAvKiBGbG9hdFJvdW5kZWRSZWN0LmNwcCAqLzsg
fTsKIAkJNkUwRTU2OUMxODNCRkZFNjAwRTBFOEQ1IC8qIEZsb2F0Um91bmRlZFJlY3QuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZFMEU1NjlBMTgzQkZG
RTYwMEUwRThENSAvKiBGbG9hdFJvdW5kZWRSZWN0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTk0MDEsOSArOTQwNywxNSBAQAogCQk2NUY4MDY5
NzA1NEQ5Rjg2MDA4QkY3NzYgLyogQmxvY2tFeGNlcHRpb25zLm1tICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBpbmRlbnRXaWR0aCA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gQmxvY2tFeGNlcHRpb25z
Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB0YWJXaWR0aCA9IDg7IHVzZXNUYWJzID0gMDsg
fTsKIAkJNjVGRUE4NjgwOTgzM0FERTAwQkVENEFCIC8qIFBhZ2UuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFBhZ2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk2QjM0ODA5MjBFRUY1MEQ0MDBBQzFCNDEgLyogTmF0aXZlSW1hZ2VQdHIuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE5hdGl2ZUltYWdlUHRyLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTZDNTY4Q0FFMTlEQUZFQTAwMDQzMENBMiAvKiBNYXNrSW1h
Z2VPcGVyYXRpb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTWFz
a0ltYWdlT3BlcmF0aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNkM1NjhD
QUYxOURBRkVBMDAwNDMwQ0EyIC8qIE1hc2tJbWFnZU9wZXJhdGlvbi5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBNYXNrSW1hZ2VPcGVyYXRpb24uaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJNkM2Mzg4OTNBOTZDQ0VFNTBDOEM5NDZDIC8qIENhY2hlZFJlc291cmNl
UmVxdWVzdEluaXRpYXRvcnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENh
Y2hlZFJlc291cmNlUmVxdWVzdEluaXRpYXRvcnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNkM2Mzg4OTRBOTZDQ0VFNTBDOEM5NDZDIC8qIENhY2hlZFJlc291cmNlUmVxdWVzdElu
aXRpYXRvcnMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENhY2hl
ZFJlc291cmNlUmVxdWVzdEluaXRpYXRvcnMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQk2QzZDQ0FBRTE5REM0MkI5MDA0M0Q1REIgLyogV2ViS2l0Q1NTUmVzb3VyY2VWYWx1ZS5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJLaXRDU1NSZXNvdXJj
ZVZhbHVlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNkM2Q0NBQUYxOURDNDJC
OTAwNDNENURCIC8qIFdlYktpdENTU1Jlc291cmNlVmFsdWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gV2ViS2l0Q1NTUmVzb3VyY2VWYWx1ZS5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk2QzcwQTgxNDE3NzA3QzQ5MDA5QTQ0NkUgLyogUmVnaW9uT3ZlcnNldFN0
YXRlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlZ2lvbk92ZXJzZXRTdGF0
ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk2Q0JGRTRBMjE5RUJGMkQ0MDBDQTJG
OUQgLyogUmVuZGVyTGF5ZXJNYXNrSW1hZ2VJbmZvLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IFJlbmRlckxheWVyTWFza0ltYWdlSW5mby5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTZDQkZFNEEzMTlFQkYyRDQwMENBMkY5RCAvKiBSZW5kZXJMYXll
ck1hc2tJbWFnZUluZm8uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVuZGVy
TGF5ZXJNYXNrSW1hZ2VJbmZvLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTZFMEU1
Njk5MTgzQkZGRTYwMEUwRThENSAvKiBGbG9hdFJvdW5kZWRSZWN0LmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEZsb2F0Um91bmRlZFJlY3QuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk2RTBFNTY5QTE4M0JGRkU2MDBFMEU4RDUgLyogRmxvYXRSb3Vu
ZGVkUmVjdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBGbG9hdFJvdW5kZWRS
ZWN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTZFMjFDNkJGMTEyNjMzODUwMEE3
QkUwMiAvKiBHcmFwaGljc0NvbnRleHQzRC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBHcmFwaGljc0NvbnRleHQzRC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CkBAIC0yMDU4OCw2ICsyMDYwMCw4IEBACiAJCQkJMTQxREMwNEMxNjQ4MzRCOTAwMzcxRTVB
IC8qIExheW91dFJlY3QuY3BwICovLAogCQkJCTE0MURDMDREMTY0ODM0QjkwMDM3MUU1QSAvKiBM
YXlvdXRSZWN0LmggKi8sCiAJCQkJMTQxREMwNEUxNjQ4MzRCOTAwMzcxRTVBIC8qIExheW91dFNp
emUuaCAqLywKKwkJCQk2QzU2OENBRTE5REFGRUEwMDA0MzBDQTIgLyogTWFza0ltYWdlT3BlcmF0
aW9uLmNwcCAqLywKKwkJCQk2QzU2OENBRjE5REFGRUEwMDA0MzBDQTIgLyogTWFza0ltYWdlT3Bl
cmF0aW9uLmggKi8sCiAJCQkJRTRCNDFFMEMwQ0JGOTBCRDAwQUYyRUNFIC8qIE1lZGlhUGxheWVy
LmNwcCAqLywKIAkJCQlFNEI0MUUwRDBDQkY5MEJEMDBBRjJFQ0UgLyogTWVkaWFQbGF5ZXIuaCAq
LywKIAkJCQkwNzlGNUU0QjBGM0JFQkVBMDA1RTA3ODIgLyogTWVkaWFQbGF5ZXJQcml2YXRlLmgg
Ki8sCkBAIC0yMjI5Myw2ICsyMjMwNyw4IEBACiAJCQkJMzEwNjAzNkMxNDMyN0QyRTAwQUJGNEJB
IC8qIFdlYktpdENTU0ZpbHRlclZhbHVlLmNwcCAqLywKIAkJCQkzMTA2MDM2RDE0MzI3RDJFMDBB
QkY0QkEgLyogV2ViS2l0Q1NTRmlsdGVyVmFsdWUuaCAqLywKIAkJCQkzMTA2MDM2RTE0MzI3RDJF
MDBBQkY0QkEgLyogV2ViS2l0Q1NTRmlsdGVyVmFsdWUuaWRsICovLAorCQkJCTZDNkNDQUFFMTlE
QzQyQjkwMDQzRDVEQiAvKiBXZWJLaXRDU1NSZXNvdXJjZVZhbHVlLmNwcCAqLywKKwkJCQk2QzZD
Q0FBRjE5REM0MkI5MDA0M0Q1REIgLyogV2ViS2l0Q1NTUmVzb3VyY2VWYWx1ZS5oICovLAogCQkJ
CTMxMjg4RTZFMEUzMDA1RDYwMDM2MTlBRSAvKiBDU1NLZXlmcmFtZVJ1bGUuY3BwICovLAogCQkJ
CTMxMjg4RTZGMEUzMDA1RDYwMDM2MTlBRSAvKiBDU1NLZXlmcmFtZVJ1bGUuaCAqLywKIAkJCQkz
MTZGRTA5MTBFNkNDRDdGMDBCRjYwODggLyogQ1NTS2V5ZnJhbWVSdWxlLmlkbCAqLywKQEAgLTIy
NDQ3LDYgKzIyNDYzLDggQEAKIAkJCQkwRjU4MENGOTBGMTJERTlCMDA1MUQ2ODkgLyogUmVuZGVy
TGF5ZXJDb21wb3NpdG9yLmggKi8sCiAJCQkJNTBEMTBEOTcxNTQ1RjU3NjAwOTZEMjg4IC8qIFJl
bmRlckxheWVyRmlsdGVySW5mby5jcHAgKi8sCiAJCQkJNTBEMTBEOTgxNTQ1RjU3NjAwOTZEMjg4
IC8qIFJlbmRlckxheWVyRmlsdGVySW5mby5oICovLAorCQkJCTZDQkZFNEEyMTlFQkYyRDQwMENB
MkY5RCAvKiBSZW5kZXJMYXllck1hc2tJbWFnZUluZm8uY3BwICovLAorCQkJCTZDQkZFNEEzMTlF
QkYyRDQwMENBMkY5RCAvKiBSZW5kZXJMYXllck1hc2tJbWFnZUluZm8uaCAqLywKIAkJCQkzQzI0
NEZFNUEzNzVBQzYzM0Y4OEJFNkYgLyogUmVuZGVyTGF5ZXJNb2RlbE9iamVjdC5jcHAgKi8sCiAJ
CQkJM0MyNDRGRTRBMzc1QUM2MzNGODhCRTZGIC8qIFJlbmRlckxheWVyTW9kZWxPYmplY3QuaCAq
LywKIAkJCQlCQzMzRkIxQTBGMzBFRTg1MDAyQ0REN0MgLyogUmVuZGVyTGluZUJveExpc3QuY3Bw
ICovLApAQCAtMjM0MzAsNiArMjM0NDgsNyBAQAogCQkJCTMxNkZFMTE0MEU2RTFEQTcwMEJGNjA4
OCAvKiBBbmltYXRpb25Db250cm9sbGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjE1REE4QTBG
M0FBRUU3MDAwMENFNDcgLyogQW5pbWF0aW9uQ29udHJvbGxlclByaXZhdGUuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTQ5RTkxMkFEMEVGQUM5MDYwMDlEMENBRiAvKiBBbmltYXRpb25MaXN0LmggaW4g
SGVhZGVycyAqLywKKwkJCQk2QzU2OENCMTE5REFGRUEwMDA0MzBDQTIgLyogTWFza0ltYWdlT3Bl
cmF0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjU4MEZBRjE0OTgwMEQ0MDBGQjVCRDggLyog
QW5pbWF0aW9uVXRpbGl0aWVzLmggaW4gSGVhZGVycyAqLywKIAkJCQk5MzMwOURENzA5OUU2NDky
MDA1NkU1ODEgLyogQXBwZW5kTm9kZUNvbW1hbmQuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBOEY2
QkJEMERCNTVDREMwMDFEQjc5NCAvKiBBcHBsaWNhdGlvbkNhY2hlLmggaW4gSGVhZGVycyAqLywK
QEAgLTI1NDQyLDYgKzI1NDYxLDcgQEAKIAkJCQlDREJFQUVBRDE5RDkyQjZDMDBCRUJBODggLyog
TWVkaWFTZWxlY3Rpb25Hcm91cEFWRk9iakMuaCBpbiBIZWFkZXJzICovLAogCQkJCTA3MEUwOTE5
MTg3NUVFRkMwMDNBMUQzQyAvKiBNZWRpYVNlc3Npb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTA3
Rjk0NDE2MTg2NEQwNDYwMDVEMzFDQiAvKiBNZWRpYVNlc3Npb25NYW5hZ2VyLmggaW4gSGVhZGVy
cyAqLywKKwkJCQk2Q0JGRTRBNTE5RUJGMkQ0MDBDQTJGOUQgLyogUmVuZGVyTGF5ZXJNYXNrSW1h
Z2VJbmZvLmggaW4gSGVhZGVycyAqLywKIAkJCQkwNzYzOEE5OTE4ODQ0ODcyMDBFMTVBMUIgLyog
TWVkaWFTZXNzaW9uTWFuYWdlcklPUy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQ0QzQTQ5NUYxN0E5
RDAxQjAwMjc0RTQyIC8qIE1lZGlhU291cmNlLmggaW4gSGVhZGVycyAqLywKIAkJCQlDRDY0MUVC
MzE4MThGNUVEMDBFRTRDNDEgLyogTWVkaWFTb3VyY2VQcml2YXRlLmggaW4gSGVhZGVycyAqLywK
QEAgLTI2MDQ1LDYgKzI2MDY1LDcgQEAKIAkJCQlDRENGQUJCRDE4QzBBRjc4MDA2Rjg0NTAgLyog
U2VsZWN0aW9uU3VidHJlZVJvb3QuaCBpbiBIZWFkZXJzICovLAogCQkJCUU0NEI0QkI0MTQxNjUw
RDcwMDJCMUQ4QiAvKiBTZWxlY3RvckNoZWNrZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTQzMkQz
RkU4MThBODY1ODQwMEQ3REMwMyAvKiBTZWxlY3RvckNoZWNrZXJUZXN0RnVuY3Rpb25zLmggaW4g
SGVhZGVycyAqLywKKwkJCQk2QzZDQ0FCMTE5REM0MkI5MDA0M0Q1REIgLyogV2ViS2l0Q1NTUmVz
b3VyY2VWYWx1ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMjZCOTk5OTcxODA0RDU0MjAwRDAxMTIx
IC8qIFNlbGVjdG9yQ29tcGlsZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTQxNTA3MTU4MTY4NTA2
NzMwMEMzQzdCMyAvKiBTZWxlY3RvckZpbHRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDMxMDdC
RTIxOENDMTlERTAwQ0MxOEU4IC8qIFNlbGVjdG9yUHNldWRvVHlwZU1hcC5oIGluIEhlYWRlcnMg
Ki8sCkBAIC0yNzc1Myw2ICsyNzc3NCw3IEBACiAJCQkJOEExOTU5MzMxNDdFQTE2RTAwRDFFQTYx
IC8qIERPTVdlYktpdE5hbWVkRmxvdy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTMxQzBGRjREMEU0
Q0VGREQwMDdENkZFNSAvKiBET01XZWJLaXRUcmFuc2l0aW9uRXZlbnQubW0gaW4gU291cmNlcyAq
LywKIAkJCQk4NUM3RjVFODBBQUZCQUZCMDA0MDE0REQgLyogRE9NV2hlZWxFdmVudC5tbSBpbiBT
b3VyY2VzICovLAorCQkJCTZDNkNDQUIwMTlEQzQyQjkwMDQzRDVEQiAvKiBXZWJLaXRDU1NSZXNv
dXJjZVZhbHVlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTE0MDNCOTk4MDlFQjEzQUYwMDc5N0M3
RiAvKiBET01XaW5kb3cuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRkQ2Nzc3MzgxOTVDQUYzRDAw
NzJFMEQzIC8qIERPTVdpbmRvd0NTUy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1MTdGQkExRTE1
MUFCMTdDMDBCNTc5NTkgLyogRE9NV2luZG93RXh0ZW5zaW9uLmNwcCBpbiBTb3VyY2VzICovLApA
QCAtMjg5NzksNiArMjkwMDEsNyBAQAogCQkJCUNEQjg1OUY3MTYwRDQ4QTQwMEU1QjA3RiAvKiBN
ZWRpYUtleUV2ZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUNEQTk4REQ4MTYwMjVCRUYwMEZF
QTNCMSAvKiBNZWRpYUtleU1lc3NhZ2VFdmVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlDRDFC
NEE2NTE2MDc4NkFFMDAyODJERjkgLyogTWVkaWFLZXlOZWVkZWRFdmVudC5jcHAgaW4gU291cmNl
cyAqLywKKwkJCQk2QzU2OENCMDE5REFGRUEwMDA0MzBDQTIgLyogTWFza0ltYWdlT3BlcmF0aW9u
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUNEQTk4RTBEMTYwM0ZFNEEwMEZFQTNCMSAvKiBNZWRp
YUtleXMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQ0RBOThFMEUxNjAzRkU1ODAwRkVBM0IxIC8q
IE1lZGlhS2V5U2Vzc2lvbi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBOEVBODAwOTBBMTk1MTZF
MDBBOEVGNUYgLyogTWVkaWFMaXN0LmNwcCBpbiBTb3VyY2VzICovLApAQCAtMjkwNDcsNiArMjkw
NzAsNyBAQAogCQkJCUY1NUIzREM1MTI1MUYxMkQwMDNFRjI2OSAvKiBNb250aElucHV0VHlwZS5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQk4NTAzMUI0NTBBNDRFRkM3MDBGOTkyRTAgLyogTW91c2VF
dmVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5M0VCMzU1RjA5RTM3RkQ2MDBGNDM3OTkgLyog
TW91c2VFdmVudFdpdGhIaXRUZXN0UmVzdWx0cy5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk2Q0JG
RTRBNDE5RUJGMkQ0MDBDQTJGOUQgLyogUmVuZGVyTGF5ZXJNYXNrSW1hZ2VJbmZvLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTg1MDMxQjQ3MEE0NEVGQzcwMEY5OTJFMCAvKiBNb3VzZVJlbGF0ZWRF
dmVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5MzMwOURGQjA5OUU2NDkyMDA1NkU1ODEgLyog
TW92ZVNlbGVjdGlvbkNvbW1hbmQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRkRCMTcwMDUxNEEy
QkFCMjAwQTJCNUQ5IC8qIE11bHRpQ2hhbm5lbFJlc2FtcGxlci5jcHAgaW4gU291cmNlcyAqLywK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NWYWx1ZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTVmFsdWUuY3BwCmluZGV4IGQwMjllYzEuLmE2YzNjZTYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NWYWx1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3Nz
L0NTU1ZhbHVlLmNwcApAQCAtNTQsNiArNTQsNyBAQAogI2luY2x1ZGUgIlNWR0NvbG9yLmgiCiAj
aW5jbHVkZSAiU1ZHUGFpbnQuaCIKICNpbmNsdWRlICJXZWJLaXRDU1NGaWx0ZXJWYWx1ZS5oIgor
I2luY2x1ZGUgIldlYktpdENTU1Jlc291cmNlVmFsdWUuaCIKICNpbmNsdWRlICJXZWJLaXRDU1NU
cmFuc2Zvcm1WYWx1ZS5oIgogCiAjaWYgRU5BQkxFKENTU19HUklEX0xBWU9VVCkKQEAgLTMxMSw2
ICszMTIsOCBAQCBTdHJpbmcgQ1NTVmFsdWU6OmNzc1RleHQoKSBjb25zdAogICAgICAgICByZXR1
cm4gZG93bmNhc3Q8U1ZHQ29sb3I+KCp0aGlzKS5jdXN0b21DU1NUZXh0KCk7CiAgICAgY2FzZSBT
VkdQYWludENsYXNzOgogICAgICAgICByZXR1cm4gZG93bmNhc3Q8U1ZHUGFpbnQ+KCp0aGlzKS5j
dXN0b21DU1NUZXh0KCk7CisgICAgY2FzZSBXZWJLaXRDU1NSZXNvdXJjZUNsYXNzOgorICAgICAg
ICByZXR1cm4gZG93bmNhc3Q8V2ViS2l0Q1NTUmVzb3VyY2VWYWx1ZT4oKnRoaXMpLmN1c3RvbUNT
U1RleHQoKTsKICAgICB9CiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgcmV0dXJuIFN0
cmluZygpOwpAQCAtNDIzLDYgKzQyNiw5IEBAIHZvaWQgQ1NTVmFsdWU6OmRlc3Ryb3koKQogICAg
IGNhc2UgU1ZHUGFpbnRDbGFzczoKICAgICAgICAgZGVsZXRlIGRvd25jYXN0PFNWR1BhaW50Pih0
aGlzKTsKICAgICAgICAgcmV0dXJuOworICAgIGNhc2UgV2ViS2l0Q1NTUmVzb3VyY2VDbGFzczoK
KyAgICAgICAgZGVsZXRlIGRvd25jYXN0PFdlYktpdENTU1Jlc291cmNlVmFsdWU+KHRoaXMpOwor
ICAgICAgICByZXR1cm47CiAgICAgfQogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ZhbHVlLmggYi9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTVmFsdWUuaAppbmRleCAwMWVlNjJhLi4zNmMyOTk0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTVmFsdWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFsdWUu
aApAQCAtMTAzLDYgKzEwMyw3IEBAIHB1YmxpYzoKICAgICBib29sIGlzU1ZHQ29sb3IoKSBjb25z
dCB7IHJldHVybiBtX2NsYXNzVHlwZSA9PSBTVkdDb2xvckNsYXNzIHx8IG1fY2xhc3NUeXBlID09
IFNWR1BhaW50Q2xhc3M7IH0KICAgICBib29sIGlzU1ZHUGFpbnQoKSBjb25zdCB7IHJldHVybiBt
X2NsYXNzVHlwZSA9PSBTVkdQYWludENsYXNzOyB9CiAgICAgYm9vbCBpc1VuaWNvZGVSYW5nZVZh
bHVlKCkgY29uc3QgeyByZXR1cm4gbV9jbGFzc1R5cGUgPT0gVW5pY29kZVJhbmdlQ2xhc3M7IH0K
KyAgICBib29sIGlzV2ViS2l0Q1NTUmVzb3VyY2VWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fY2xh
c3NUeXBlID09IFdlYktpdENTU1Jlc291cmNlQ2xhc3M7IH0KIAogICAgIGJvb2wgaXNDU1NPTVNh
ZmUoKSBjb25zdCB7IHJldHVybiBtX2lzQ1NTT01TYWZlOyB9CiAgICAgYm9vbCBpc1N1YnR5cGVF
eHBvc2VkVG9DU1NPTSgpIGNvbnN0CkBAIC0xNzMsNiArMTc0LDggQEAgcHJvdGVjdGVkOgogI2lm
IEVOQUJMRShDU1NfR1JJRF9MQVlPVVQpCiAgICAgICAgIEdyaWRMaW5lTmFtZXNDbGFzcywKICNl
bmRpZgorICAgICAgICBXZWJLaXRDU1NSZXNvdXJjZUNsYXNzCisKICAgICAgICAgLy8gRG8gbm90
IGFwcGVuZCBub24tbGlzdCBjbGFzcyB0eXBlcyBoZXJlLgogICAgIH07CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nz
cy9TdHlsZVJlc29sdmVyLmNwcAppbmRleCBjMDI0MTU4Li4xZjBiYTAxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
Y3NzL1N0eWxlUmVzb2x2ZXIuY3BwCkBAIC0xMzUsNiArMTM1LDcgQEAKICNpbmNsdWRlICJWaXNp
dGVkTGlua1N0YXRlLmgiCiAjaW5jbHVkZSAiV2ViS2l0Q1NTRmlsdGVyVmFsdWUuaCIKICNpbmNs
dWRlICJXZWJLaXRDU1NSZWdpb25SdWxlLmgiCisjaW5jbHVkZSAiV2ViS2l0Q1NTUmVzb3VyY2VW
YWx1ZS5oIgogI2luY2x1ZGUgIldlYktpdENTU1RyYW5zZm9ybVZhbHVlLmgiCiAjaW5jbHVkZSAi
V2ViS2l0Rm9udEZhbWlseU5hbWVzLmgiCiAjaW5jbHVkZSAiWE1MTmFtZXMuaCIKQEAgLTIzNiw2
ICsyMzcsNyBAQCBpbmxpbmUgdm9pZCBTdHlsZVJlc29sdmVyOjpTdGF0ZTo6Y2xlYXIoKQogICAg
IG1fcmVnaW9uRm9yU3R5bGluZyA9IG51bGxwdHI7CiAgICAgbV9wZW5kaW5nSW1hZ2VQcm9wZXJ0
aWVzLmNsZWFyKCk7CiAgICAgbV9maWx0ZXJzV2l0aFBlbmRpbmdTVkdEb2N1bWVudHMuY2xlYXIo
KTsKKyAgICBtX21hc2tJbWFnZXNXaXRoUGVuZGluZ1NWR0RvY3VtZW50cy5jbGVhcigpOwogICAg
IG1fY3NzVG9MZW5ndGhDb252ZXJzaW9uRGF0YSA9IENTU1RvTGVuZ3RoQ29udmVyc2lvbkRhdGEo
KTsKIH0KIApAQCAtMzQ1OSw2ICszNDYxLDUxIEBAIGJvb2wgU3R5bGVSZXNvbHZlcjo6Y3JlYXRl
RmlsdGVyT3BlcmF0aW9ucyhDU1NWYWx1ZSogaW5WYWx1ZSwgRmlsdGVyT3BlcmF0aW9ucyYKICAg
ICByZXR1cm4gdHJ1ZTsKIH0KIAorYm9vbCBTdHlsZVJlc29sdmVyOjpjcmVhdGVNYXNrSW1hZ2VP
cGVyYXRpb25zKENTU1ZhbHVlKiBpblZhbHVlLCBWZWN0b3I8UmVmUHRyPE1hc2tJbWFnZU9wZXJh
dGlvbj4+JiBvdXRPcGVyYXRpb25zKQoreworICAgIEFTU0VSVChvdXRPcGVyYXRpb25zLmlzRW1w
dHkoKSk7CisgICAgaWYgKCFpblZhbHVlKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBB
U1NFUlQoaXM8Q1NTVmFsdWVMaXN0PigqaW5WYWx1ZSkpOworCisgICAgZm9yIChhdXRvJiBjdXJy
VmFsdWUgOiBkb3duY2FzdDxDU1NWYWx1ZUxpc3Q+KCppblZhbHVlKSkgeworICAgICAgICBpZiAo
IWlzPFdlYktpdENTU1Jlc291cmNlVmFsdWU+KGN1cnJWYWx1ZS5nZXQoKSkpCisgICAgICAgICAg
ICBjb250aW51ZTsKKyAgICAgICAgCisgICAgICAgIFdlYktpdENTU1Jlc291cmNlVmFsdWUmIG1h
c2tJbWFnZVZhbHVlID0gZG93bmNhc3Q8V2ViS2l0Q1NTUmVzb3VyY2VWYWx1ZT4oY3VyclZhbHVl
LmdldCgpKTsKKyAgICAgICAgUmVmUHRyPENTU1ZhbHVlPiBtYXNrSW5uZXJWYWx1ZSA9IG1hc2tJ
bWFnZVZhbHVlLmlubmVyVmFsdWUoKTsKKyAgICAgICAgUmVmUHRyPE1hc2tJbWFnZU9wZXJhdGlv
bj4gbmV3TWFza0ltYWdlOworICAgICAgICAKKyAgICAgICAgaWYgKGlzPENTU1ByaW1pdGl2ZVZh
bHVlPihtYXNrSW5uZXJWYWx1ZS5nZXQoKSkpIHsKKyAgICAgICAgICAgIFJlZlB0cjxDU1NQcmlt
aXRpdmVWYWx1ZT4gcHJpbWl0aXZlVmFsdWUgPSBkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4o
bWFza0lubmVyVmFsdWUuZ2V0KCkpOworICAgICAgICAgICAgaWYgKHByaW1pdGl2ZVZhbHVlLT5p
c1ZhbHVlSUQoKSAmJiBwcmltaXRpdmVWYWx1ZS0+Z2V0VmFsdWVJRCgpID09IENTU1ZhbHVlTm9u
ZSkKKyAgICAgICAgICAgICAgICBuZXdNYXNrSW1hZ2UgPSBNYXNrSW1hZ2VPcGVyYXRpb246OmNy
ZWF0ZSgpOworICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgU3RyaW5nIGNzc1Vy
bCA9IHByaW1pdGl2ZVZhbHVlLT5nZXRTdHJpbmdWYWx1ZSgpOworICAgICAgICAgICAgICAgIFVS
TCB1cmwgPSBtX3N0YXRlLmRvY3VtZW50KCkuY29tcGxldGVVUkwoY3NzVXJsKTsKKyAgICAgICAg
ICAgICAgICAKKyAgICAgICAgICAgICAgICBib29sIGlzRXh0ZXJuYWxEb2N1bWVudCA9IChTVkdV
UklSZWZlcmVuY2U6OmlzRXh0ZXJuYWxVUklSZWZlcmVuY2UoY3NzVXJsLCBtX3N0YXRlLmRvY3Vt
ZW50KCkpKTsKKyAgICAgICAgICAgICAgICBuZXdNYXNrSW1hZ2UgPSBNYXNrSW1hZ2VPcGVyYXRp
b246OmNyZWF0ZSgmbWFza0ltYWdlVmFsdWUsIGNzc1VybCwgdXJsLmZyYWdtZW50SWRlbnRpZmll
cigpLCBpc0V4dGVybmFsRG9jdW1lbnQsIG1fc3RhdGUuZG9jdW1lbnQoKS5jYWNoZWRSZXNvdXJj
ZUxvYWRlcigpKTsKKyAgICAgICAgICAgICAgICBpZiAoaXNFeHRlcm5hbERvY3VtZW50KQorICAg
ICAgICAgICAgICAgICAgICBtX3N0YXRlLm1hc2tJbWFnZXNXaXRoUGVuZGluZ1NWR0RvY3VtZW50
cygpLmFwcGVuZChuZXdNYXNrSW1hZ2UpOworICAgICAgICAgICAgfQorICAgICAgICB9IGVsc2Ug
eworICAgICAgICAgICAgUmVmUHRyPFN0eWxlSW1hZ2U+IGltYWdlID0gc3R5bGVJbWFnZShDU1NQ
cm9wZXJ0eVdlYmtpdE1hc2tJbWFnZSwgKm1hc2tJbm5lclZhbHVlKTsKKyAgICAgICAgICAgIGlm
IChpbWFnZS5nZXQoKSkKKyAgICAgICAgICAgICAgICBuZXdNYXNrSW1hZ2UgPSBNYXNrSW1hZ2VP
cGVyYXRpb246OmNyZWF0ZShpbWFnZSk7CisgICAgICAgIH0KKworICAgICAgICAvLyBJZiB3ZSBk
aWRuJ3QgZ2V0IGEgdmFsaWQgdmFsdWUsIHVzZSBOb25lIHNvIHdlIGtlZXAgdGhlIGNvcnJlY3Qg
bnVtYmVyIGFuZCBvcmRlciBvZiBtYXNrcy4KKyAgICAgICAgaWYgKCFuZXdNYXNrSW1hZ2UuZ2V0
KCkpCisgICAgICAgICAgICBuZXdNYXNrSW1hZ2UgPSBNYXNrSW1hZ2VPcGVyYXRpb246OmNyZWF0
ZSgpOworCisgICAgICAgIG91dE9wZXJhdGlvbnMuYXBwZW5kKG5ld01hc2tJbWFnZSk7CisgICAg
fQorCisgICAgcmV0dXJuIHRydWU7Cit9CisKIFBhc3NSZWZQdHI8U3R5bGVJbWFnZT4gU3R5bGVS
ZXNvbHZlcjo6bG9hZFBlbmRpbmdJbWFnZShjb25zdCBTdHlsZVBlbmRpbmdJbWFnZSYgcGVuZGlu
Z0ltYWdlLCBjb25zdCBSZXNvdXJjZUxvYWRlck9wdGlvbnMmIG9wdGlvbnMpCiB7CiAgICAgaWYg
KGF1dG8gaW1hZ2VWYWx1ZSA9IHBlbmRpbmdJbWFnZS5jc3NJbWFnZVZhbHVlKCkpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5oIGIvU291cmNlL1dlYkNvcmUv
Y3NzL1N0eWxlUmVzb2x2ZXIuaAppbmRleCA1NWNhMGY2Li5lNTg2N2YwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nz
cy9TdHlsZVJlc29sdmVyLmgKQEAgLTI4LDYgKzI4LDcgQEAKICNpbmNsdWRlICJEb2N1bWVudFJ1
bGVTZXRzLmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yQ1NTT01XcmFwcGVycy5oIgogI2luY2x1ZGUg
IkxpbmtIYXNoLmgiCisjaW5jbHVkZSAiTWFza0ltYWdlT3BlcmF0aW9uLmgiCiAjaW5jbHVkZSAi
TWVkaWFRdWVyeUV4cC5oIgogI2luY2x1ZGUgIlJlbmRlclN0eWxlLmgiCiAjaW5jbHVkZSAiUnVs
ZUZlYXR1cmUuaCIKQEAgLTIzNyw2ICsyMzgsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBjbGVhckNh
Y2hlZFByb3BlcnRpZXNBZmZlY3RlZEJ5Vmlld3BvcnRVbml0cygpOwogCiAgICAgYm9vbCBjcmVh
dGVGaWx0ZXJPcGVyYXRpb25zKENTU1ZhbHVlKiBpblZhbHVlLCBGaWx0ZXJPcGVyYXRpb25zJiBv
dXRPcGVyYXRpb25zKTsKKyAgICBib29sIGNyZWF0ZU1hc2tJbWFnZU9wZXJhdGlvbnMoQ1NTVmFs
dWUqIGluVmFsdWUsIFZlY3RvcjxSZWZQdHI8TWFza0ltYWdlT3BlcmF0aW9uPj4mIG91dE9wZXJh
dGlvbnMpOwogICAgIHZvaWQgbG9hZFBlbmRpbmdTVkdEb2N1bWVudHMoKTsKIAogICAgIHZvaWQg
bG9hZFBlbmRpbmdSZXNvdXJjZXMoKTsKQEAgLTM4MCw2ICszODIsNyBAQCBwdWJsaWM6CiAgICAg
ICAgIFBlbmRpbmdJbWFnZVByb3BlcnR5TWFwJiBwZW5kaW5nSW1hZ2VQcm9wZXJ0aWVzKCkgeyBy
ZXR1cm4gbV9wZW5kaW5nSW1hZ2VQcm9wZXJ0aWVzOyB9CiAKICAgICAgICAgVmVjdG9yPFJlZlB0
cjxSZWZlcmVuY2VGaWx0ZXJPcGVyYXRpb24+PiYgZmlsdGVyc1dpdGhQZW5kaW5nU1ZHRG9jdW1l
bnRzKCkgeyByZXR1cm4gbV9maWx0ZXJzV2l0aFBlbmRpbmdTVkdEb2N1bWVudHM7IH0KKyAgICAg
ICAgVmVjdG9yPFJlZlB0cjxNYXNrSW1hZ2VPcGVyYXRpb24+PiYgbWFza0ltYWdlc1dpdGhQZW5k
aW5nU1ZHRG9jdW1lbnRzKCkgeyByZXR1cm4gbV9tYXNrSW1hZ2VzV2l0aFBlbmRpbmdTVkdEb2N1
bWVudHM7IH0KIAogICAgICAgICB2b2lkIHNldExpbmVIZWlnaHRWYWx1ZShDU1NWYWx1ZSogdmFs
dWUpIHsgbV9saW5lSGVpZ2h0VmFsdWUgPSB2YWx1ZTsgfQogICAgICAgICBDU1NWYWx1ZSogbGlu
ZUhlaWdodFZhbHVlKCkgeyByZXR1cm4gbV9saW5lSGVpZ2h0VmFsdWU7IH0KQEAgLTQyOCw2ICs0
MzEsNyBAQCBwdWJsaWM6CiAgICAgICAgIFBlbmRpbmdJbWFnZVByb3BlcnR5TWFwIG1fcGVuZGlu
Z0ltYWdlUHJvcGVydGllczsKIAogICAgICAgICBWZWN0b3I8UmVmUHRyPFJlZmVyZW5jZUZpbHRl
ck9wZXJhdGlvbj4+IG1fZmlsdGVyc1dpdGhQZW5kaW5nU1ZHRG9jdW1lbnRzOworICAgICAgICBW
ZWN0b3I8UmVmUHRyPE1hc2tJbWFnZU9wZXJhdGlvbj4+IG1fbWFza0ltYWdlc1dpdGhQZW5kaW5n
U1ZHRG9jdW1lbnRzOwogCiAgICAgICAgIENTU1ZhbHVlKiBtX2xpbmVIZWlnaHRWYWx1ZTsKICAg
ICAgICAgYm9vbCBtX2ZvbnREaXJ0eTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9X
ZWJLaXRDU1NSZXNvdXJjZVZhbHVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9XZWJLaXRDU1NS
ZXNvdXJjZVZhbHVlLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40ODBi
MjkxCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1dlYktpdENTU1Jlc291
cmNlVmFsdWUuY3BwCkBAIC0wLDAgKzEsNzUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQg
QWRvYmUgU3lzdGVtcyBJbmNvcnBvcmF0ZWQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERF
UiAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQgSE9MREVSIEJF
CisgKiBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksCisgKiBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SCisgKiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YKKyAqIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRgorICogU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZp
Zy5oIgorI2luY2x1ZGUgIldlYktpdENTU1Jlc291cmNlVmFsdWUuaCIKKworI2luY2x1ZGUgIkNT
U1BhcnNlci5oIgorI2luY2x1ZGUgIkNTU1ByaW1pdGl2ZVZhbHVlLmgiCisjaW5jbHVkZSAiQ1NT
VmFsdWVMaXN0LmgiCisjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYv
dGV4dC9TdHJpbmdCdWlsZGVyLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisK
K25hbWVzcGFjZSBXZWJDb3JlIHsKKworV2ViS2l0Q1NTUmVzb3VyY2VWYWx1ZTo6V2ViS2l0Q1NT
UmVzb3VyY2VWYWx1ZShQYXNzUmVmUHRyPENTU1ZhbHVlPiByZXNvdXJjZVZhbHVlKQorICAgIDog
Q1NTVmFsdWUoV2ViS2l0Q1NTUmVzb3VyY2VDbGFzcykKKyAgICAsIG1faW5uZXJWYWx1ZShyZXNv
dXJjZVZhbHVlKQoreworfQorCitTdHJpbmcgV2ViS2l0Q1NTUmVzb3VyY2VWYWx1ZTo6Y3VzdG9t
Q1NTVGV4dCgpIGNvbnN0Cit7CisgICAgaWYgKGlzQ1NTVmFsdWVOb25lKCkpCisgICAgICAgIHJl
dHVybiAibm9uZSI7CisKKyAgICBpZiAobV9pbm5lclZhbHVlLmdldCgpKSB7CisgICAgICAgIGlm
IChpczxDU1NQcmltaXRpdmVWYWx1ZT4obV9pbm5lclZhbHVlLmdldCgpKSAmJiBkb3duY2FzdDxD
U1NQcmltaXRpdmVWYWx1ZT4obV9pbm5lclZhbHVlLmdldCgpKS0+aXNVUkkoKSkgeworICAgICAg
ICAgICAgU3RyaW5nQnVpbGRlciByZXN1bHQ7CisgICAgICAgICAgICByZXN1bHQuYXBwZW5kTGl0
ZXJhbCgidXJsKCIpOworICAgICAgICAgICAgcmVzdWx0LmFwcGVuZChxdW90ZUNTU1VSTElmTmVl
ZGVkKGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPihtX2lubmVyVmFsdWUuZ2V0KCkpLT5nZXRT
dHJpbmdWYWx1ZSgpKSk7CisgICAgICAgICAgICByZXN1bHQuYXBwZW5kTGl0ZXJhbCgiKSIpOwor
ICAgICAgICAgICAgcmV0dXJuIHJlc3VsdC50b1N0cmluZygpOworICAgICAgICB9CisgICAgICAg
IAorICAgICAgICByZXR1cm4gbV9pbm5lclZhbHVlLT5jc3NUZXh0KCk7CisgICAgfQorICAgIAor
ICAgIHJldHVybiAiIjsKK30KKworYm9vbCBXZWJLaXRDU1NSZXNvdXJjZVZhbHVlOjppc0NTU1Zh
bHVlTm9uZSgpIGNvbnN0Cit7CisgICAgaWYgKGlzPENTU1ByaW1pdGl2ZVZhbHVlPihtX2lubmVy
VmFsdWUuZ2V0KCkpKSB7CisgICAgICAgIFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gcHJpbWl0
aXZlVmFsdWUgPSBkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4obV9pbm5lclZhbHVlLmdldCgp
KTsKKyAgICAgICAgcmV0dXJuIChwcmltaXRpdmVWYWx1ZS0+aXNWYWx1ZUlEKCkgJiYgcHJpbWl0
aXZlVmFsdWUtPmdldFZhbHVlSUQoKSA9PSBDU1NWYWx1ZU5vbmUpOworICAgIH0KKworICAgIHJl
dHVybiBmYWxzZTsKK30KKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1dlYktp
dENTU1Jlc291cmNlVmFsdWUuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9XZWJLaXRDU1NSZXNvdXJj
ZVZhbHVlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDU3N2M0OQotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9XZWJLaXRDU1NSZXNvdXJjZVZhbHVl
LmgKQEAgLTAsMCArMSw1NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNCBBZG9iZSBTeXN0
ZW1zIEluY29ycG9yYXRlZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSICJBUyBJUyIg
QU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBIT0xERVIgQkUKKyAqIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwKKyAqIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IKKyAqIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRgorICog
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GCisgKiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdlYktpdENTU1Jlc291cmNl
VmFsdWVfaAorI2RlZmluZSBXZWJLaXRDU1NSZXNvdXJjZVZhbHVlX2gKKworI2luY2x1ZGUgIkNT
U1ZhbHVlLmgiCisjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvUmVm
UHRyLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgV2ViS2l0Q1NTUmVzb3VyY2VW
YWx1ZSA6IHB1YmxpYyBDU1NWYWx1ZSB7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NSZWY8V2Vi
S2l0Q1NTUmVzb3VyY2VWYWx1ZT4gY3JlYXRlKFBhc3NSZWZQdHI8Q1NTVmFsdWU+IHJlc291cmNl
VmFsdWUpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJLaXRDU1NSZXNv
dXJjZVZhbHVlKHJlc291cmNlVmFsdWUpKTsKKyAgICB9CisKKyAgICBTdHJpbmcgY3VzdG9tQ1NT
VGV4dCgpIGNvbnN0OworICAgIFBhc3NSZWZQdHI8Q1NTVmFsdWU+IGlubmVyVmFsdWUoKSB7IHJl
dHVybiBtX2lubmVyVmFsdWU7IH07CisgICAgYm9vbCBpc0NTU1ZhbHVlTm9uZSgpIGNvbnN0Owor
cHJpdmF0ZToKKyAgICBXZWJLaXRDU1NSZXNvdXJjZVZhbHVlKFBhc3NSZWZQdHI8Q1NTVmFsdWU+
IHJlc291cmNlVmFsdWUpOworICAgIFJlZlB0cjxDU1NWYWx1ZT4gbV9pbm5lclZhbHVlOworfTsK
KworfQorCitTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0NTU19WQUxVRShXZWJLaXRDU1NSZXNvdXJj
ZVZhbHVlLCBpc1dlYktpdENTU1Jlc291cmNlVmFsdWUoKSkKKworI2VuZGlmIC8vIFdlYktpdENT
U1Jlc291cmNlVmFsdWVfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hl
L0NhY2hlZFJlc291cmNlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9D
YWNoZWRSZXNvdXJjZUxvYWRlci5jcHAKaW5kZXggZWM4MzJkNS4uMzdmYTk5YyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlTG9hZGVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VMb2FkZXIuY3Bw
CkBAIC03NTYsNiArNzU2LDE0IEBAIHZvaWQgQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OnJlbW92ZUNh
Y2hlZFJlc291cmNlKENhY2hlZFJlc291cmNlKiByZXNvdXJjZSkgY29uc3QKICAgICBtX2RvY3Vt
ZW50UmVzb3VyY2VzLnJlbW92ZShyZXNvdXJjZS0+dXJsKCkpOwogfQogCit2b2lkIENhY2hlZFJl
c291cmNlTG9hZGVyOjphZGRDYWNoZWRSZXNvdXJjZShDYWNoZWRSZXNvdXJjZSogcmVzb3VyY2Up
Cit7CisgICAgbV9kb2N1bWVudFJlc291cmNlcy5zZXQocmVzb3VyY2UtPnVybCgpLCByZXNvdXJj
ZSk7CisKKyAgICBpZiAoIW1lbW9yeUNhY2hlKCkuYWRkKHJlc291cmNlKSkKKyAgICAgICAgcmVz
b3VyY2UtPnNldE93bmluZ0NhY2hlZFJlc291cmNlTG9hZGVyKHRoaXMpOworfQorCiB2b2lkIENh
Y2hlZFJlc291cmNlTG9hZGVyOjpsb2FkRG9uZShDYWNoZWRSZXNvdXJjZSogcmVzb3VyY2UsIGJv
b2wgc2hvdWxkUGVyZm9ybVBvc3RMb2FkQWN0aW9ucykKIHsKICAgICBSZWZQdHI8RG9jdW1lbnRM
b2FkZXI+IHByb3RlY3REb2N1bWVudExvYWRlcihtX2RvY3VtZW50TG9hZGVyKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5oIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlTG9hZGVyLmgKaW5kZXgg
Nzk1OGU2Mi4uM2MwZWE1NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hl
L0NhY2hlZFJlc291cmNlTG9hZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hl
L0NhY2hlZFJlc291cmNlTG9hZGVyLmgKQEAgLTExNCw2ICsxMTQsNyBAQCBwdWJsaWM6CiAgICAg
U2Vzc2lvbklEIHNlc3Npb25JRCgpIGNvbnN0OwogCiAgICAgdm9pZCByZW1vdmVDYWNoZWRSZXNv
dXJjZShDYWNoZWRSZXNvdXJjZSopIGNvbnN0OworICAgIHZvaWQgYWRkQ2FjaGVkUmVzb3VyY2Uo
Q2FjaGVkUmVzb3VyY2UqKTsKIAogICAgIHZvaWQgbG9hZERvbmUoQ2FjaGVkUmVzb3VyY2UqLCBi
b29sIHNob3VsZFBlcmZvcm1Qb3N0TG9hZEFjdGlvbnMgPSB0cnVlKTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0RvY3VtZW50LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdEb2N1bWVudC5jcHAKaW5kZXggYTUyMzAy
MC4uMzNlMDdlOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hl
ZFNWR0RvY3VtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVk
U1ZHRG9jdW1lbnQuY3BwCkBAIC0yMyw2ICsyMywxMyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgog
I2luY2x1ZGUgIkNhY2hlZFNWR0RvY3VtZW50LmgiCiAKKyNpbmNsdWRlICJEb2N1bWVudExvYWRl
ci5oIgorI2luY2x1ZGUgIkVtcHR5Q2xpZW50cy5oIgorI2luY2x1ZGUgIkZyYW1lVmlldy5oIgor
I2luY2x1ZGUgIk1haW5GcmFtZS5oIgorI2luY2x1ZGUgIlBhZ2UuaCIKKyNpbmNsdWRlICJQYWdl
Q29uZmlndXJhdGlvbi5oIgorI2luY2x1ZGUgIlNldHRpbmdzLmgiCiAjaW5jbHVkZSAiU2hhcmVk
QnVmZmVyLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTMwLDYgKzM3LDggQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogQ2FjaGVkU1ZHRG9jdW1lbnQ6OkNhY2hlZFNWR0RvY3VtZW50KGNvbnN0
IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgU2Vzc2lvbklEIHNlc3Npb25JRCkKICAgICA6IENh
Y2hlZFJlc291cmNlKHJlcXVlc3QsIFNWR0RvY3VtZW50UmVzb3VyY2UsIHNlc3Npb25JRCkKICAg
ICAsIG1fZGVjb2RlcihUZXh0UmVzb3VyY2VEZWNvZGVyOjpjcmVhdGUoImFwcGxpY2F0aW9uL3ht
bCIpKQorICAgICwgbV9zaG91bGRDcmVhdGVGcmFtZUZvckRvY3VtZW50KHRydWUpCisgICAgLCBt
X2NhblJldXNlUmVzb3VyY2UodHJ1ZSkKIHsKICAgICBzZXRBY2NlcHQoImltYWdlL3N2Zyt4bWwi
KTsKIH0KQEAgLTUxLDkgKzYwLDE3IEBAIFN0cmluZyBDYWNoZWRTVkdEb2N1bWVudDo6ZW5jb2Rp
bmcoKSBjb25zdAogdm9pZCBDYWNoZWRTVkdEb2N1bWVudDo6ZmluaXNoTG9hZGluZyhTaGFyZWRC
dWZmZXIqIGRhdGEpCiB7CiAgICAgaWYgKGRhdGEpIHsKLSAgICAgICAgLy8gV2UgZG9uJ3QgbmVl
ZCB0byBjcmVhdGUgYSBuZXcgZnJhbWUgYmVjYXVzZSB0aGUgbmV3IGRvY3VtZW50IGJlbG9uZ3Mg
dG8gdGhlIHBhcmVudCBVc2VFbGVtZW50LgotICAgICAgICBtX2RvY3VtZW50ID0gU1ZHRG9jdW1l
bnQ6OmNyZWF0ZShudWxscHRyLCByZXNwb25zZSgpLnVybCgpKTsKLSAgICAgICAgbV9kb2N1bWVu
dC0+c2V0Q29udGVudChtX2RlY29kZXItPmRlY29kZUFuZEZsdXNoKGRhdGEtPmRhdGEoKSwgZGF0
YS0+c2l6ZSgpKSk7CisgICAgICAgIC8vIEluIGNlcnRhaW4gc2l0dWF0aW9ucyAobGlrZSB0aGUg
c2NlbmFyaW8gd2hlbiB0aGlzIGRvY3VtZW50IGJlbG9uZ3MgdG8gYW4gVXNlRWxlbWVudCkgd2Ug
ZG9uJ3QgbmVlZCB0byBjcmVhdGUgYSBmcmFtZS4KKyAgICAgICAgaWYgKG1fc2hvdWxkQ3JlYXRl
RnJhbWVGb3JEb2N1bWVudCkgeworICAgICAgICAgICAgUGFnZUNvbmZpZ3VyYXRpb24gcGFnZUNv
bmZpZ3VyYXRpb247CisgICAgICAgICAgICBmaWxsV2l0aEVtcHR5Q2xpZW50cyhwYWdlQ29uZmln
dXJhdGlvbik7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIG1fcGFnZSA9IFBhZ2U6OmNyZWF0
ZVBhZ2VGcm9tQnVmZmVyKHBhZ2VDb25maWd1cmF0aW9uLCBkYXRhLCAiaW1hZ2Uvc3ZnK3htbCIs
IGZhbHNlLCB0cnVlKTsKKyAgICAgICAgICAgIG1fZG9jdW1lbnQgPSBkb3duY2FzdDxTVkdEb2N1
bWVudD4obV9wYWdlLT5tYWluRnJhbWUoKS5kb2N1bWVudCgpKTsKKyAgICAgICAgfSBlbHNlIHsK
KyAgICAgICAgICAgIG1fZG9jdW1lbnQgPSBTVkdEb2N1bWVudDo6Y3JlYXRlKG51bGxwdHIsIHJl
c3BvbnNlKCkudXJsKCkpOworICAgICAgICAgICAgbV9kb2N1bWVudC0+c2V0Q29udGVudChtX2Rl
Y29kZXItPmRlY29kZUFuZEZsdXNoKGRhdGEtPmRhdGEoKSwgZGF0YS0+c2l6ZSgpKSk7CisgICAg
ICAgIH0KICAgICB9CiAgICAgQ2FjaGVkUmVzb3VyY2U6OmZpbmlzaExvYWRpbmcoZGF0YSk7CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1l
bnQuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdEb2N1bWVudC5oCmlu
ZGV4IGE3OTFjZDguLjcyYjc4NjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9j
YWNoZS9DYWNoZWRTVkdEb2N1bWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNo
ZS9DYWNoZWRTVkdEb2N1bWVudC5oCkBAIC0zNiw2ICszNiw5IEBAIHB1YmxpYzoKICAgICB2aXJ0
dWFsIH5DYWNoZWRTVkdEb2N1bWVudCgpOwogCiAgICAgU1ZHRG9jdW1lbnQqIGRvY3VtZW50KCkg
Y29uc3QgeyByZXR1cm4gbV9kb2N1bWVudC5nZXQoKTsgfQorICAgIHZvaWQgc2V0U2hvdWxkQ3Jl
YXRlRnJhbWVGb3JEb2N1bWVudChib29sIHNob3VsZENyZWF0ZSkgeyBtX3Nob3VsZENyZWF0ZUZy
YW1lRm9yRG9jdW1lbnQgPSBzaG91bGRDcmVhdGU7IH0KKyAgICB2aXJ0dWFsIGJvb2wgY2FuUmV1
c2UoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JikgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9jYW5S
ZXVzZVJlc291cmNlOyB9CisgICAgdm9pZCBzZXRDYW5SZXVzZShib29sIGNhblJldXNlUmVzb3Vy
Y2UpIHsgbV9jYW5SZXVzZVJlc291cmNlID0gY2FuUmV1c2VSZXNvdXJjZTsgfTsKIAogcHJpdmF0
ZToKICAgICB2aXJ0dWFsIGJvb2wgbWF5VHJ5UmVwbGFjZUVuY29kZWREYXRhKCkgY29uc3Qgb3Zl
cnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQpAQCAtNDUsNiArNDgsOSBAQCBwcml2YXRlOgogCiAgICAg
UmVmUHRyPFNWR0RvY3VtZW50PiBtX2RvY3VtZW50OwogICAgIFJlZlB0cjxUZXh0UmVzb3VyY2VE
ZWNvZGVyPiBtX2RlY29kZXI7CisgICAgc3RkOjp1bmlxdWVfcHRyPFBhZ2U+IG1fcGFnZTsKKyAg
ICBib29sIG1fc2hvdWxkQ3JlYXRlRnJhbWVGb3JEb2N1bWVudDsKKyAgICBib29sIG1fY2FuUmV1
c2VSZXNvdXJjZTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdEb2N1bWVudFJlZmVyZW5jZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1lbnRSZWZlcmVuY2Uu
Y3BwCmluZGV4IDA2ZjNhYjguLmI2YjQ2MjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9jYWNoZS9DYWNoZWRTVkdEb2N1bWVudFJlZmVyZW5jZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0RvY3VtZW50UmVmZXJlbmNlLmNwcApAQCAtMzQs
MTcgKzM0LDIzIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotQ2FjaGVkU1ZHRG9jdW1lbnRS
ZWZlcmVuY2U6OkNhY2hlZFNWR0RvY3VtZW50UmVmZXJlbmNlKGNvbnN0IFN0cmluZyYgdXJsKQor
Q2FjaGVkU1ZHRG9jdW1lbnRSZWZlcmVuY2U6OkNhY2hlZFNWR0RvY3VtZW50UmVmZXJlbmNlKGNv
bnN0IFN0cmluZyYgdXJsLCBDYWNoZWRTVkdEb2N1bWVudENsaWVudCogYWRkaXRpb25hbERvY3Vt
ZW50Q2xpZW50LCBib29sIGNhblJldXNlUmVzb3VyY2UpCiAgICAgOiBtX3VybCh1cmwpCiAgICAg
LCBtX2RvY3VtZW50KDApCiAgICAgLCBtX2xvYWRSZXF1ZXN0ZWQoZmFsc2UpCisgICAgLCBtX2Fk
ZGl0aW9uYWxEb2N1bWVudENsaWVudChhZGRpdGlvbmFsRG9jdW1lbnRDbGllbnQpCisgICAgLCBt
X2NhblJldXNlUmVzb3VyY2UoY2FuUmV1c2VSZXNvdXJjZSkKIHsKIH0KIAogQ2FjaGVkU1ZHRG9j
dW1lbnRSZWZlcmVuY2U6On5DYWNoZWRTVkdEb2N1bWVudFJlZmVyZW5jZSgpCiB7Ci0gICAgaWYg
KG1fZG9jdW1lbnQpCisgICAgaWYgKG1fZG9jdW1lbnQpIHsKICAgICAgICAgbV9kb2N1bWVudC0+
cmVtb3ZlQ2xpZW50KHRoaXMpOworICAgICAgICAKKyAgICAgICAgaWYgKG1fYWRkaXRpb25hbERv
Y3VtZW50Q2xpZW50KQorICAgICAgICAgICAgbV9kb2N1bWVudC0+cmVtb3ZlQ2xpZW50KG1fYWRk
aXRpb25hbERvY3VtZW50Q2xpZW50KTsKKyAgICB9CiB9CiAKIHZvaWQgQ2FjaGVkU1ZHRG9jdW1l
bnRSZWZlcmVuY2U6OmxvYWQoQ2FjaGVkUmVzb3VyY2VMb2FkZXIqIGxvYWRlcikKQEAgLTU2LDgg
KzYyLDEzIEBAIHZvaWQgQ2FjaGVkU1ZHRG9jdW1lbnRSZWZlcmVuY2U6OmxvYWQoQ2FjaGVkUmVz
b3VyY2VMb2FkZXIqIGxvYWRlcikKICAgICBDYWNoZWRSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdChS
ZXNvdXJjZVJlcXVlc3QobG9hZGVyLT5kb2N1bWVudCgpLT5jb21wbGV0ZVVSTChtX3VybCkpKTsK
ICAgICByZXF1ZXN0LnNldEluaXRpYXRvcihjYWNoZWRSZXNvdXJjZVJlcXVlc3RJbml0aWF0b3Jz
KCkuY3NzKTsKICAgICBtX2RvY3VtZW50ID0gbG9hZGVyLT5yZXF1ZXN0U1ZHRG9jdW1lbnQocmVx
dWVzdCk7Ci0gICAgaWYgKG1fZG9jdW1lbnQpCisgICAgaWYgKG1fZG9jdW1lbnQpIHsKKyAgICAg
ICAgbV9kb2N1bWVudC0+c2V0Q2FuUmV1c2UobV9jYW5SZXVzZVJlc291cmNlKTsKICAgICAgICAg
bV9kb2N1bWVudC0+YWRkQ2xpZW50KHRoaXMpOworICAgICAgICAKKyAgICAgICAgaWYgKG1fYWRk
aXRpb25hbERvY3VtZW50Q2xpZW50KQorICAgICAgICAgICAgbV9kb2N1bWVudC0+YWRkQ2xpZW50
KG1fYWRkaXRpb25hbERvY3VtZW50Q2xpZW50KTsKKyAgICB9CiAKICAgICBtX2xvYWRSZXF1ZXN0
ZWQgPSB0cnVlOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0Nh
Y2hlZFNWR0RvY3VtZW50UmVmZXJlbmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUv
Q2FjaGVkU1ZHRG9jdW1lbnRSZWZlcmVuY2UuaAppbmRleCA1ZGEzZWVjLi40MWY0MWRiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1lbnRSZWZl
cmVuY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1l
bnRSZWZlcmVuY2UuaApAQCAtMzcsNyArMzcsNyBAQCBjbGFzcyBDYWNoZWRSZXNvdXJjZUxvYWRl
cjsKIAogY2xhc3MgQ2FjaGVkU1ZHRG9jdW1lbnRSZWZlcmVuY2UgOiBwdWJsaWMgQ2FjaGVkU1ZH
RG9jdW1lbnRDbGllbnQgewogcHVibGljOgotICAgIENhY2hlZFNWR0RvY3VtZW50UmVmZXJlbmNl
KGNvbnN0IFN0cmluZyYpOworICAgIENhY2hlZFNWR0RvY3VtZW50UmVmZXJlbmNlKGNvbnN0IFN0
cmluZyYgdXJsLCBDYWNoZWRTVkdEb2N1bWVudENsaWVudCogYWRkaXRpb25hbERvY3VtZW50Q2xp
ZW50ID0gbnVsbHB0ciwgYm9vbCBjYW5SZXVzZVJlc291cmNlID0gdHJ1ZSk7CiAKICAgICB2aXJ0
dWFsIH5DYWNoZWRTVkdEb2N1bWVudFJlZmVyZW5jZSgpOwogCkBAIC01MCw2ICs1MCw4IEBAIHBy
aXZhdGU6CiAgICAgU3RyaW5nIG1fdXJsOwogICAgIENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hl
ZFNWR0RvY3VtZW50PiBtX2RvY3VtZW50OwogICAgIGJvb2wgbV9sb2FkUmVxdWVzdGVkOworICAg
IENhY2hlZFNWR0RvY3VtZW50Q2xpZW50KiBtX2FkZGl0aW9uYWxEb2N1bWVudENsaWVudDsKKyAg
ICBib29sIG1fY2FuUmV1c2VSZXNvdXJjZTsKIH07CiAKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmll
dy5jcHAKaW5kZXggODM0ZTllOC4uMTA2NDAxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGFnZS9GcmFtZVZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNw
cApAQCAtNDM4Miw2ICs0MzgyLDE0IEBAIGJvb2wgRnJhbWVWaWV3Ojppc0ZsaXBwZWREb2N1bWVu
dCgpIGNvbnN0CiAgICAgcmV0dXJuIHJlbmRlclZpZXctPnN0eWxlKCkuaXNGbGlwcGVkQmxvY2tz
V3JpdGluZ01vZGUoKTsKIH0KIAorYm9vbCBGcmFtZVZpZXc6OmNvbnRhaW5zU1ZHRG9jdW1lbnQo
KSBjb25zdAoreworICAgIGlmIChmcmFtZSgpLmRvY3VtZW50KCkpCisgICAgICAgIHJldHVybiBm
cmFtZSgpLmRvY3VtZW50KCktPmlzU1ZHRG9jdW1lbnQoKTsKKyAgICAKKyAgICByZXR1cm4gZmFs
c2U7Cit9CisKIHZvaWQgRnJhbWVWaWV3Ojpub3RpZnlXaWRnZXRzSW5BbGxGcmFtZXMoV2lkZ2V0
Tm90aWZpY2F0aW9uIG5vdGlmaWNhdGlvbikKIHsKICAgICBmb3IgKEZyYW1lKiBmcmFtZSA9IG1f
ZnJhbWUuZ2V0KCk7IGZyYW1lOyBmcmFtZSA9IGZyYW1lLT50cmVlKCkudHJhdmVyc2VOZXh0KG1f
ZnJhbWUuZ2V0KCkpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmll
dy5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuaAppbmRleCBmNWI1ZTVkLi45N2Fi
MzlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmgKQEAgLTUyNiw2ICs1MjYsNyBAQCBwcm90ZWN0
ZWQ6CiAKICAgICB2aXJ0dWFsIGJvb2wgaXNWZXJ0aWNhbERvY3VtZW50KCkgY29uc3Qgb3ZlcnJp
ZGU7CiAgICAgdmlydHVhbCBib29sIGlzRmxpcHBlZERvY3VtZW50KCkgY29uc3Qgb3ZlcnJpZGU7
CisgICAgdmlydHVhbCBib29sIGNvbnRhaW5zU1ZHRG9jdW1lbnQoKSBjb25zdCBvdmVycmlkZTsK
IAogcHJpdmF0ZToKICAgICBleHBsaWNpdCBGcmFtZVZpZXcoRnJhbWUmKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2Uu
Y3BwCmluZGV4IDE1MjAzNzYuLmIyNDA2ZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcApAQCAtMjksNiAr
MjksNyBAQAogI2luY2x1ZGUgIkNsaWVudFJlY3RMaXN0LmgiCiAjaW5jbHVkZSAiQ29udGV4dE1l
bnVDbGllbnQuaCIKICNpbmNsdWRlICJDb250ZXh0TWVudUNvbnRyb2xsZXIuaCIKKyNpbmNsdWRl
ICJEb2N1bWVudExvYWRlci5oIgogI2luY2x1ZGUgIkRvY3VtZW50TWFya2VyQ29udHJvbGxlci5o
IgogI2luY2x1ZGUgIkRvY3VtZW50U3R5bGVTaGVldENvbGxlY3Rpb24uaCIKICNpbmNsdWRlICJE
cmFnQ29udHJvbGxlci5oIgpAQCAtMjc1LDYgKzI3NiwzMyBAQCBQYWdlOjp+UGFnZSgpCiAgICAg
bV92aXNpdGVkTGlua1N0b3JlLT5yZW1vdmVQYWdlKCp0aGlzKTsKIH0KIAorc3RkOjp1bmlxdWVf
cHRyPFBhZ2U+IFBhZ2U6OmNyZWF0ZVBhZ2VGcm9tQnVmZmVyKFBhZ2VDb25maWd1cmF0aW9uJiBw
YWdlQ29uZmlndXJhdGlvbiwgY29uc3QgU2hhcmVkQnVmZmVyKiBidWZmZXIsIGNvbnN0IFN0cmlu
ZyYgbWltZVR5cGUsIGJvb2wgY2FuSGF2ZVNjcm9sbGJhcnMsIGJvb2wgdHJhbnNwYXJlbnQpCit7
CisgICAgQVNTRVJUKGJ1ZmZlcik7CisgICAgCisgICAgc3RkOjp1bmlxdWVfcHRyPFBhZ2U+IG5l
d1BhZ2UgPSBzdGQ6Om1ha2VfdW5pcXVlPFBhZ2U+KHBhZ2VDb25maWd1cmF0aW9uKTsKKyAgICBu
ZXdQYWdlLT5zZXR0aW5ncygpLnNldE1lZGlhRW5hYmxlZChmYWxzZSk7CisgICAgbmV3UGFnZS0+
c2V0dGluZ3MoKS5zZXRTY3JpcHRFbmFibGVkKGZhbHNlKTsKKyAgICBuZXdQYWdlLT5zZXR0aW5n
cygpLnNldFBsdWdpbnNFbmFibGVkKGZhbHNlKTsKKyAgICAKKyAgICBGcmFtZSYgZnJhbWUgPSBu
ZXdQYWdlLT5tYWluRnJhbWUoKTsKKyAgICBmcmFtZS5zZXRWaWV3KEZyYW1lVmlldzo6Y3JlYXRl
KGZyYW1lKSk7CisgICAgZnJhbWUuaW5pdCgpOworICAgIEZyYW1lTG9hZGVyJiBsb2FkZXIgPSBm
cmFtZS5sb2FkZXIoKTsKKyAgICBsb2FkZXIuZm9yY2VTYW5kYm94RmxhZ3MoU2FuZGJveEFsbCk7
CisgICAgCisgICAgZnJhbWUudmlldygpLT5zZXRDYW5IYXZlU2Nyb2xsYmFycyhjYW5IYXZlU2Ny
b2xsYmFycyk7CisgICAgZnJhbWUudmlldygpLT5zZXRUcmFuc3BhcmVudCh0cmFuc3BhcmVudCk7
CisgICAgCisgICAgQVNTRVJUKGxvYWRlci5hY3RpdmVEb2N1bWVudExvYWRlcigpKTsgLy8gRG9j
dW1lbnRMb2FkZXIgc2hvdWxkIGhhdmUgYmVlbiBjcmVhdGVkIGJ5IGZyYW1lLT5pbml0KCkuCisg
ICAgbG9hZGVyLmFjdGl2ZURvY3VtZW50TG9hZGVyKCktPndyaXRlcigpLnNldE1JTUVUeXBlKG1p
bWVUeXBlKTsKKyAgICBsb2FkZXIuYWN0aXZlRG9jdW1lbnRMb2FkZXIoKS0+d3JpdGVyKCkuYmVn
aW4oVVJMKCkpOyAvLyBjcmVhdGUgdGhlIGVtcHR5IGRvY3VtZW50CisgICAgbG9hZGVyLmFjdGl2
ZURvY3VtZW50TG9hZGVyKCktPndyaXRlcigpLmFkZERhdGEoYnVmZmVyLT5kYXRhKCksIGJ1ZmZl
ci0+c2l6ZSgpKTsKKyAgICBsb2FkZXIuYWN0aXZlRG9jdW1lbnRMb2FkZXIoKS0+d3JpdGVyKCku
ZW5kKCk7CisgICAgCisgICAgcmV0dXJuIG5ld1BhZ2U7Cit9CisKIHZvaWQgUGFnZTo6Y2xlYXJQ
cmV2aW91c0l0ZW1Gcm9tQWxsUGFnZXMoSGlzdG9yeUl0ZW0qIGl0ZW0pCiB7CiAgICAgaWYgKCFh
bGxQYWdlcykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5oIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9QYWdlLmgKaW5kZXggNjViZDg2Mi4uOWFjYzQ4OSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdl
LmgKQEAgLTEwNyw2ICsxMDcsNyBAQCBjbGFzcyBWaWV3U3RhdGVDaGFuZ2VPYnNlcnZlcjsKIGNs
YXNzIFZpc2l0ZWRMaW5rU3RvcmU7CiAKIHR5cGVkZWYgdWludDY0X3QgTGlua0hhc2g7CitjbGFz
cyBTaGFyZWRCdWZmZXI7CiAKIGVudW0gRmluZERpcmVjdGlvbiB7IEZpbmREaXJlY3Rpb25Gb3J3
YXJkLCBGaW5kRGlyZWN0aW9uQmFja3dhcmQgfTsKIApAQCAtMTI0LDYgKzEyNSw4IEBAIHB1Ymxp
YzoKICAgICBXRUJDT1JFX0VYUE9SVCB+UGFnZSgpOwogCiAgICAgV0VCQ09SRV9FWFBPUlQgdWlu
dDY0X3QgcmVuZGVyVHJlZVNpemUoKSBjb25zdDsKKyAgICAKKyAgICBzdGF0aWMgc3RkOjp1bmlx
dWVfcHRyPFBhZ2U+IGNyZWF0ZVBhZ2VGcm9tQnVmZmVyKFBhZ2VDb25maWd1cmF0aW9uJiwgY29u
c3QgU2hhcmVkQnVmZmVyKiwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgYm9vbCBjYW5IYXZlU2Ny
b2xsYmFycywgYm9vbCB0cmFuc3BhcmVudCk7CiAKICAgICB2b2lkIHNldE5lZWRzUmVjYWxjU3R5
bGVJbkFsbEZyYW1lcygpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9T
Y3JvbGxWaWV3LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxWaWV3LmgKaW5kZXgg
ZjJlZjU5MS4uNDg0NmJkZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Ny
b2xsVmlldy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbFZpZXcuaApAQCAt
NDEwLDYgKzQxMCw3IEBAIHByb3RlY3RlZDoKICAgICAvLyBTdWJjbGFzc2VkIGJ5IEZyYW1lVmll
dyB0byBjaGVjayB0aGUgd3JpdGluZy1tb2RlIG9mIHRoZSBkb2N1bWVudC4KICAgICB2aXJ0dWFs
IGJvb2wgaXNWZXJ0aWNhbERvY3VtZW50KCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQogICAgIHZp
cnR1YWwgYm9vbCBpc0ZsaXBwZWREb2N1bWVudCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Cisg
ICAgdmlydHVhbCBib29sIGNvbnRhaW5zU1ZHRG9jdW1lbnQoKSBjb25zdCB7IHJldHVybiBmYWxz
ZTsgfQogCiAgICAgLy8gQ2FsbGVkIHRvIHVwZGF0ZSB0aGUgc2Nyb2xsYmFycyB0byBhY2N1cmF0
ZWx5IHJlZmxlY3QgdGhlIHN0YXRlIG9mIHRoZSB2aWV3LgogICAgIHZvaWQgdXBkYXRlU2Nyb2xs
YmFycyhjb25zdCBJbnRTaXplJiBkZXNpcmVkT2Zmc2V0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01hc2tJbWFnZU9wZXJhdGlvbi5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NYXNrSW1hZ2VPcGVyYXRpb24uY3BwCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY3YWY4NWMKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NYXNrSW1hZ2VPcGVyYXRpb24uY3BwCkBA
IC0wLDAgKzEsMjYxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE0IEFkb2JlIFN5c3RlbXMg
SW5jb3Jwb3JhdGVkLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVIgIkFTIElTIiBBTkQg
QU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIEhPTERFUiBCRQorICogTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLAor
ICogT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUgorICogVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GCisgKiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YKKyAqIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRl
ICJNYXNrSW1hZ2VPcGVyYXRpb24uaCIKKworI2luY2x1ZGUgIkNhY2hlZEltYWdlLmgiCisjaW5j
bHVkZSAiQ2FjaGVkU1ZHRG9jdW1lbnQuaCIKKyNpbmNsdWRlICJSZW5kZXJCb3hNb2RlbE9iamVj
dC5oIgorI2luY2x1ZGUgIlJlbmRlclNWR1Jlc291cmNlTWFza2VyLmgiCisjaW5jbHVkZSAiU1ZH
RG9jdW1lbnQuaCIKKyNpbmNsdWRlICJTVkdNYXNrRWxlbWVudC5oIgorI2luY2x1ZGUgIlNWR1NW
R0VsZW1lbnQuaCIKKyNpbmNsdWRlICJTdHlsZUNhY2hlZEltYWdlLmgiCisjaW5jbHVkZSAiU3Vi
cmVzb3VyY2VMb2FkZXIuaCIKKyNpbmNsdWRlICJXZWJLaXRDU1NSZXNvdXJjZVZhbHVlLmgiCisK
K25hbWVzcGFjZSBXZWJDb3JlIHsKKworUGFzc1JlZlB0cjxNYXNrSW1hZ2VPcGVyYXRpb24+IE1h
c2tJbWFnZU9wZXJhdGlvbjo6Y3JlYXRlKFBhc3NSZWZQdHI8V2ViS2l0Q1NTUmVzb3VyY2VWYWx1
ZT4gY3NzVmFsdWUsIGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBTdHJpbmcmIGZyYWdtZW50LCBi
b29sIGlzRXh0ZXJuYWxEb2N1bWVudCwgUGFzc1JlZlB0cjxDYWNoZWRSZXNvdXJjZUxvYWRlcj4g
Y2FjaGVkUmVzb3VyY2VMb2FkZXIpCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBNYXNrSW1h
Z2VPcGVyYXRpb24oY3NzVmFsdWUsIHVybCwgZnJhZ21lbnQsIGlzRXh0ZXJuYWxEb2N1bWVudCwg
Y2FjaGVkUmVzb3VyY2VMb2FkZXIpKTsKK30KKworUGFzc1JlZlB0cjxNYXNrSW1hZ2VPcGVyYXRp
b24+IE1hc2tJbWFnZU9wZXJhdGlvbjo6Y3JlYXRlKFBhc3NSZWZQdHI8U3R5bGVJbWFnZT4gZ2Vu
ZXJhdGVkSW1hZ2UpCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBNYXNrSW1hZ2VPcGVyYXRp
b24oZ2VuZXJhdGVkSW1hZ2UpKTsKK30KKworUGFzc1JlZlB0cjxNYXNrSW1hZ2VPcGVyYXRpb24+
IE1hc2tJbWFnZU9wZXJhdGlvbjo6Y3JlYXRlKCkKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3
IE1hc2tJbWFnZU9wZXJhdGlvbigpKTsKK30KKworTWFza0ltYWdlT3BlcmF0aW9uOjpNYXNrSW1h
Z2VPcGVyYXRpb24oUGFzc1JlZlB0cjxXZWJLaXRDU1NSZXNvdXJjZVZhbHVlPiBjc3NWYWx1ZSwg
Y29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0cmluZyYgZnJhZ21lbnQsIGJvb2wgaXNFeHRlcm5h
bERvY3VtZW50LCBQYXNzUmVmUHRyPENhY2hlZFJlc291cmNlTG9hZGVyPiBjYWNoZWRSZXNvdXJj
ZUxvYWRlcikKKyAgICA6IG1fdXJsKHVybCkKKyAgICAsIG1fZnJhZ21lbnQoZnJhZ21lbnQpCisg
ICAgLCBtX2lzRXh0ZXJuYWxEb2N1bWVudChpc0V4dGVybmFsRG9jdW1lbnQpCisgICAgLCBtX3Jl
bmRlckxheWVySW1hZ2VDbGllbnQobnVsbHB0cikKKyAgICAsIG1fY3NzTWFza0ltYWdlVmFsdWUo
Y3NzVmFsdWUpCisgICAgLCBtX2NhY2hlZFJlc291cmNlTG9hZGVyKGNhY2hlZFJlc291cmNlTG9h
ZGVyKQoreworICAgIEFTU0VSVChtX2Nzc01hc2tJbWFnZVZhbHVlLmdldCgpKTsKK30KKworTWFz
a0ltYWdlT3BlcmF0aW9uOjpNYXNrSW1hZ2VPcGVyYXRpb24oUGFzc1JlZlB0cjxTdHlsZUltYWdl
PiBnZW5lcmF0ZWRJbWFnZSkKKyAgICA6IG1faXNFeHRlcm5hbERvY3VtZW50KGZhbHNlKQorICAg
ICwgbV9zdHlsZUltYWdlKGdlbmVyYXRlZEltYWdlKQorICAgICwgbV9yZW5kZXJMYXllckltYWdl
Q2xpZW50KG51bGxwdHIpCit7Cit9CisKK01hc2tJbWFnZU9wZXJhdGlvbjo6TWFza0ltYWdlT3Bl
cmF0aW9uKCkKKyAgICA6IG1faXNFeHRlcm5hbERvY3VtZW50KGZhbHNlKQorICAgICwgbV9yZW5k
ZXJMYXllckltYWdlQ2xpZW50KG51bGxwdHIpCit7CisgICAgbV9jc3NNYXNrSW1hZ2VWYWx1ZSA9
IFdlYktpdENTU1Jlc291cmNlVmFsdWU6OmNyZWF0ZShDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRl
SWRlbnRpZmllcihDU1NWYWx1ZU5vbmUpKTsKK30KKworTWFza0ltYWdlT3BlcmF0aW9uOjp+TWFz
a0ltYWdlT3BlcmF0aW9uKCkKK3sKK30KKworYm9vbCBNYXNrSW1hZ2VPcGVyYXRpb246OmlzQ1NT
VmFsdWVOb25lKCkgY29uc3QKK3sKKyAgICBpZiAoaW1hZ2UoKSkKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworCisgICAgQVNTRVJUKG1fY3NzTWFza0ltYWdlVmFsdWUuZ2V0KCkpOworICAgIHJldHVy
biBtX2Nzc01hc2tJbWFnZVZhbHVlLT5pc0NTU1ZhbHVlTm9uZSgpOworfQorCitQYXNzUmVmUHRy
PENTU1ZhbHVlPiBNYXNrSW1hZ2VPcGVyYXRpb246OmNzc1ZhbHVlKCkKK3sKKyAgICBpZiAoaW1h
Z2UoKSkKKyAgICAgICAgcmV0dXJuIGltYWdlKCktPmNzc1ZhbHVlKCk7CisgICAgCisgICAgaWYg
KGlzQ1NTVmFsdWVOb25lKCkpCisgICAgICAgIHJldHVybiBtX2Nzc01hc2tJbWFnZVZhbHVlLT5p
bm5lclZhbHVlKCk7CisKKyAgICBBU1NFUlQobV9jc3NNYXNrSW1hZ2VWYWx1ZS5nZXQoKSk7Cisg
ICAgcmV0dXJuIG1fY3NzTWFza0ltYWdlVmFsdWUuZ2V0KCk7Cit9CisKK2Jvb2wgTWFza0ltYWdl
T3BlcmF0aW9uOjppc01hc2tMb2FkZWQoKSBjb25zdAoreworICAgIGlmICghbV9pc0V4dGVybmFs
RG9jdW1lbnQpCisgICAgICAgIHJldHVybiB0cnVlOworCisgICAgaWYgKGltYWdlKCkpCisgICAg
ICAgIHJldHVybiAoaW1hZ2UoKS0+Y2FjaGVkSW1hZ2UoKSAmJiBpbWFnZSgpLT5jYWNoZWRJbWFn
ZSgpLT5pbWFnZSgpKTsKKyAgICAKKyAgICBpZiAobV9jYWNoZWRTVkdEb2N1bWVudFJlZmVyZW5j
ZS5nZXQoKSkgeworICAgICAgICBpZiAoQ2FjaGVkU1ZHRG9jdW1lbnQqIGNhY2hlZFNWR0RvY3Vt
ZW50ID0gbV9jYWNoZWRTVkdEb2N1bWVudFJlZmVyZW5jZS0+ZG9jdW1lbnQoKSkKKyAgICAgICAg
ICAgIHJldHVybiAoY2FjaGVkU1ZHRG9jdW1lbnQtPmRvY3VtZW50KCkgIT0gbnVsbHB0cik7Cisg
ICAgfQorICAgIAorICAgIHJldHVybiBmYWxzZTsKK30KKwordm9pZCBNYXNrSW1hZ2VPcGVyYXRp
b246OnNldFJlbmRlckxheWVySW1hZ2VDbGllbnQoQ2FjaGVkSW1hZ2VDbGllbnQqIGNsaWVudCkK
K3sKKyAgICBpZiAobV9yZW5kZXJMYXllckltYWdlQ2xpZW50ID09IGNsaWVudCkKKyAgICAgICAg
cmV0dXJuOworCisgICAgaWYgKENhY2hlZEltYWdlKiBjYWNoZWRJbWFnZSA9IChpbWFnZSgpID8g
aW1hZ2UoKS0+Y2FjaGVkSW1hZ2UoKSA6IG51bGxwdHIpKSB7CisgICAgICAgIGlmIChtX3JlbmRl
ckxheWVySW1hZ2VDbGllbnQpCisgICAgICAgICAgICBjYWNoZWRJbWFnZS0+cmVtb3ZlQ2xpZW50
KG1fcmVuZGVyTGF5ZXJJbWFnZUNsaWVudCk7CisgICAgICAgIAorICAgICAgICBpZiAoY2xpZW50
KQorICAgICAgICAgICAgY2FjaGVkSW1hZ2UtPmFkZENsaWVudChjbGllbnQpOworICAgIH0KKwor
ICAgIG1fcmVuZGVyTGF5ZXJJbWFnZUNsaWVudCA9IGNsaWVudDsKK30KKwordm9pZCBNYXNrSW1h
Z2VPcGVyYXRpb246OmFkZFJlbmRlcmVySW1hZ2VDbGllbnQoUmVuZGVyRWxlbWVudCogY2xpZW50
KQoreworICAgIEFTU0VSVChjbGllbnQpOworCisgICAgaWYgKG1fc3R5bGVJbWFnZS5nZXQoKSkK
KyAgICAgICAgbV9zdHlsZUltYWdlLT5hZGRDbGllbnQoY2xpZW50KTsKKyAgICAKKyAgICBtX3Jl
bmRlcmVySW1hZ2VDbGllbnRzLmFkZChjbGllbnQpOworfQorCit2b2lkIE1hc2tJbWFnZU9wZXJh
dGlvbjo6cmVtb3ZlUmVuZGVyZXJJbWFnZUNsaWVudChSZW5kZXJFbGVtZW50KiBjbGllbnQpCit7
CisgICAgQVNTRVJUKGNsaWVudCAmJiBtX3JlbmRlcmVySW1hZ2VDbGllbnRzLmNvbnRhaW5zKGNs
aWVudCkpOworICAgIAorICAgIGlmIChtX3N0eWxlSW1hZ2UuZ2V0KCkpCisgICAgICAgIG1fc3R5
bGVJbWFnZS0+cmVtb3ZlQ2xpZW50KGNsaWVudCk7CisgICAgCisgICAgbV9yZW5kZXJlckltYWdl
Q2xpZW50cy5yZW1vdmUoY2xpZW50KTsKK30KKworQ2FjaGVkU1ZHRG9jdW1lbnRSZWZlcmVuY2Uq
IE1hc2tJbWFnZU9wZXJhdGlvbjo6ZW5zdXJlQ2FjaGVkU1ZHRG9jdW1lbnRSZWZlcmVuY2UoKQor
eworICAgIC8vIElmIHdlIGVuZGVkIHVwIGxvYWRpbmcgdGhlIGRhdGEgaW50byBhbiBJbWFnZSwg
dGhlbiB0aGUgU1ZHIGRvY3VtZW50IHdhcyBub3QgdmFsaWQuCisgICAgaWYgKGltYWdlKCkpCisg
ICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgaWYgKCFtX2NhY2hlZFNWR0RvY3VtZW50UmVm
ZXJlbmNlLmdldCgpKQorICAgICAgICBtX2NhY2hlZFNWR0RvY3VtZW50UmVmZXJlbmNlID0gc3Rk
OjptYWtlX3VuaXF1ZTxDYWNoZWRTVkdEb2N1bWVudFJlZmVyZW5jZT4obV91cmwsIHRoaXMsIGZh
bHNlKTsKKyAgICByZXR1cm4gbV9jYWNoZWRTVkdEb2N1bWVudFJlZmVyZW5jZS5nZXQoKTsKK30K
Kwordm9pZCBNYXNrSW1hZ2VPcGVyYXRpb246Om5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNl
KiByZXNvdXJjZSkKK3sKKyAgICAvLyBUaGUgb25seSBvbmUgbm90aWZ5aW5nIHVzIHNob3VsZCBi
ZSB0aGUgU1ZHIGRvY3VtZW50IHdlIGhvbGQuCisgICAgQ2FjaGVkU1ZHRG9jdW1lbnQqIGNhY2hl
ZFNWR0RvY3VtZW50ID0gZW5zdXJlQ2FjaGVkU1ZHRG9jdW1lbnRSZWZlcmVuY2UoKS0+ZG9jdW1l
bnQoKTsKKyAgICBpZiAoKENhY2hlZFJlc291cmNlKiljYWNoZWRTVkdEb2N1bWVudCAhPSByZXNv
dXJjZSB8fCAhcmVzb3VyY2UpIHsKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAg
ICAgIHJldHVybjsKKyAgICB9CisgICAgCisgICAgLy8gQ2hlY2sgaWYgd2UgZmluZCBhIHZhbGlk
IG1hc2tpbmcgZWxlbWVudCBpbiB0aGlzIFNWRyBkb2N1bWVudC4KKyAgICBTVkdEb2N1bWVudCog
c3ZnRG9jdW1lbnQgPSBjYWNoZWRTVkdEb2N1bWVudC0+ZG9jdW1lbnQoKTsKKyAgICBib29sIHZh
bGlkTWFza0ZvdW5kID0gZmFsc2U7CisgICAgaWYgKHN2Z0RvY3VtZW50ICYmIHN2Z0RvY3VtZW50
LT5yb290RWxlbWVudCgpKSB7CisgICAgICAgIC8vIEFyZSB3ZSBsb29raW5nIGZvciBhIHNwZWNp
ZmljIGVsZW1lbnQgaW4gdGhlIFNWRyBkb2N1bWVudD8KKyAgICAgICAgaWYgKGZyYWdtZW50KCku
bGVuZ3RoKCkpIHsKKyAgICAgICAgICAgIGlmIChFbGVtZW50KiBtYXNraW5nRWxlbWVudCA9IHN2
Z0RvY3VtZW50LT5yb290RWxlbWVudCgpLT5nZXRFbGVtZW50QnlJZChmcmFnbWVudCgpKSkgewor
ICAgICAgICAgICAgICAgIGlmIChpczxTVkdNYXNrRWxlbWVudD4obWFza2luZ0VsZW1lbnQpKQor
ICAgICAgICAgICAgICAgICAgICB2YWxpZE1hc2tGb3VuZCA9IHRydWU7CisgICAgICAgICAgICB9
CisgICAgICAgIH0KKyAgICB9CisgICAgCisgICAgLy8gSWYgbm8gdmFsaWQgbWFzayB3YXMgZm91
bmQsIHRoaXMgaXMgbm90IGEgdmFsaWQgU1ZHIGRvY3VtZW50IG9yIGl0IHNwZWNpZmllZCBhbiBp
bnZhbGlkIGZyYWdtZW50IGlkZW50aWZpZXIuCisgICAgLy8gRmFsbGJhY2sgdG8gdGhlIG5vcm1h
bCB3YXkgb2YgbG9hZGluZyB0aGUgZG9jdW1lbnQgaW4gYW4gSW1hZ2Ugb2JqZWN0LgorICAgIGlm
ICghdmFsaWRNYXNrRm91bmQpIHsKKyAgICAgICAgLy8gR2V0IHRoZSByZXNvdXJjZSBsb2FkZXIs
IGFjcXVpcmUgdGhlIHJlc291cmNlIGJ1ZmZlciBhbmQgbG9hZCBpdCBpbnRvIGFuIGltYWdlLgor
ICAgICAgICBBU1NFUlQoY2FjaGVkU1ZHRG9jdW1lbnQtPmxvYWRlcigpKTsKKyAgICAgICAgaWYg
KFN1YnJlc291cmNlTG9hZGVyKiBsb2FkZXIgPSBjYWNoZWRTVkdEb2N1bWVudC0+bG9hZGVyKCkp
IHsKKyAgICAgICAgICAgIGlmIChTaGFyZWRCdWZmZXIqIGRhdGFCdWZmZXIgPSBsb2FkZXItPnJl
c291cmNlRGF0YSgpKSB7CisgICAgICAgICAgICAgICAgbV9zdHlsZUltYWdlID0gU3R5bGVDYWNo
ZWRJbWFnZTo6Y3JlYXRlKG5ldyBDYWNoZWRJbWFnZShjYWNoZWRTVkdEb2N1bWVudC0+cmVzb3Vy
Y2VSZXF1ZXN0KCksIGNhY2hlZFNWR0RvY3VtZW50LT5zZXNzaW9uSUQoKSkpOworICAgICAgICAg
ICAgICAgIGlmIChtX3JlbmRlckxheWVySW1hZ2VDbGllbnQpCisgICAgICAgICAgICAgICAgICAg
IG1fc3R5bGVJbWFnZS0+Y2FjaGVkSW1hZ2UoKS0+YWRkQ2xpZW50KG1fcmVuZGVyTGF5ZXJJbWFn
ZUNsaWVudCk7CisgICAgICAgICAgICAgICAgZm9yIChhdXRvIGl0Q2xpZW50IDogbV9yZW5kZXJl
ckltYWdlQ2xpZW50cykKKyAgICAgICAgICAgICAgICAgICAgbV9zdHlsZUltYWdlLT5hZGRDbGll
bnQoaXRDbGllbnQua2V5KTsKKworICAgICAgICAgICAgICAgIG1fc3R5bGVJbWFnZS0+Y2FjaGVk
SW1hZ2UoKS0+c2V0UmVzcG9uc2UoY2FjaGVkU1ZHRG9jdW1lbnQtPnJlc3BvbnNlKCkpOworICAg
ICAgICAgICAgICAgIG1fc3R5bGVJbWFnZS0+Y2FjaGVkSW1hZ2UoKS0+ZmluaXNoTG9hZGluZyhk
YXRhQnVmZmVyKTsKKworICAgICAgICAgICAgICAgIC8vIExldCB0aGUgY2FjaGVkIHJlc291cmNl
IGxvYWRlciBvZiB0aGUgZG9jdW1lbnQgd2hpY2ggcmVxdWVzdGVkIHRoaXMgbWFzayBrZWVwIGEg
aGFuZGxlIHRvIHRoaXMKKyAgICAgICAgICAgICAgICAvLyBjYWNoZWQgaW1hZ2UgdG8gZW5zdXJl
IGl0IG9ubHkgZ2V0cyBkZWxldGVkIHdoZW4gaXQgc2hvdWxkLgorICAgICAgICAgICAgICAgIGlm
IChtX2NhY2hlZFJlc291cmNlTG9hZGVyLmdldCgpKQorICAgICAgICAgICAgICAgICAgICBtX2Nh
Y2hlZFJlc291cmNlTG9hZGVyLT5hZGRDYWNoZWRSZXNvdXJjZShtX3N0eWxlSW1hZ2UtPmNhY2hl
ZEltYWdlKCkpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgCisgICAgICAgICAgICAvLyBE
ZXN0cm95IHRoZSBjdXJyZW50IFNWRyBkb2N1bWVudCBhcyBpdHMgbm8gbG9uZ2VyIG5lZWRlZAor
ICAgICAgICAgICAgbV9jYWNoZWRTVkdEb2N1bWVudFJlZmVyZW5jZSA9IG51bGxwdHI7CisgICAg
ICAgIH0KKyAgICB9Cit9CisKK2Jvb2wgTWFza0ltYWdlT3BlcmF0aW9uOjpkcmF3TWFzayhSZW5k
ZXJFbGVtZW50JiByZW5kZXJlciwgQmFja2dyb3VuZEltYWdlR2VvbWV0cnkmIGdlb21ldHJ5LCBH
cmFwaGljc0NvbnRleHQqIGNvbnRleHQsIENvbXBvc2l0ZU9wZXJhdG9yIGNvbXBvc2l0ZU9wKQor
eworICAgIC8vIFRoaXMgbWV0aG9kIG9ubHkgaGFuZGxlcyBjdXN0b20gbWFza3MuCisgICAgaWYg
KGltYWdlKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGlmIChSZW5kZXJTVkdSZXNv
dXJjZU1hc2tlciogc3ZnTWFza2VyID0gZ2V0U1ZHTWFza2VyKHJlbmRlcmVyKSkgeworICAgICAg
ICBzdmdNYXNrZXItPmRyYXdNYXNrRm9yUmVuZGVyZXIocmVuZGVyZXIsIGdlb21ldHJ5LCBjb250
ZXh0LCBjb21wb3NpdGVPcCk7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAgIHJl
dHVybiBmYWxzZTsKK30KKworUmVuZGVyU1ZHUmVzb3VyY2VNYXNrZXIqIE1hc2tJbWFnZU9wZXJh
dGlvbjo6Z2V0U1ZHTWFza2VyKFJlbmRlckVsZW1lbnQmIHJlbmRlcmVyKQoreworICAgIGlmIChp
bWFnZSgpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIC8vIElkZW50aWZ5IHRoZSBl
bGVtZW50IHJlZmVyZW5jZWQgYnkgdGhlIGZyYWdtZW50SWQuCisgICAgQ2FjaGVkU1ZHRG9jdW1l
bnRSZWZlcmVuY2UqIHN2Z0RvY3VtZW50UmVmZXJlbmNlID0gY2FjaGVkU1ZHRG9jdW1lbnRSZWZl
cmVuY2UoKTsKKyAgICBFbGVtZW50KiBlbGVtZW50Rm9yTWFza2luZyA9IG51bGxwdHI7CisgICAg
UmVuZGVyT2JqZWN0KiBzdmdSZXNvdXJjZUZvck1hc2tpbmcgPSBudWxscHRyOworICAgIGlmIChz
dmdEb2N1bWVudFJlZmVyZW5jZSAmJiBzdmdEb2N1bWVudFJlZmVyZW5jZS0+ZG9jdW1lbnQoKSkg
eworICAgICAgICBTVkdEb2N1bWVudCogc3ZnRG9jdW1lbnQgPSBzdmdEb2N1bWVudFJlZmVyZW5j
ZS0+ZG9jdW1lbnQoKS0+ZG9jdW1lbnQoKTsKKyAgICAgICAgaWYgKHN2Z0RvY3VtZW50ICYmIHN2
Z0RvY3VtZW50LT5yb290RWxlbWVudCgpKQorICAgICAgICAgICAgZWxlbWVudEZvck1hc2tpbmcg
PSBzdmdEb2N1bWVudC0+cm9vdEVsZW1lbnQoKS0+Z2V0RWxlbWVudEJ5SWQoZnJhZ21lbnQoKSk7
CisgICAgfSBlbHNlCisgICAgICAgIGVsZW1lbnRGb3JNYXNraW5nID0gcmVuZGVyZXIuZG9jdW1l
bnQoKS5nZXRFbGVtZW50QnlJZChmcmFnbWVudCgpKTsKKworICAgIGlmIChlbGVtZW50Rm9yTWFz
a2luZykKKyAgICAgICAgc3ZnUmVzb3VyY2VGb3JNYXNraW5nID0gZWxlbWVudEZvck1hc2tpbmct
PnJlbmRlcmVyKCk7CisKKyAgICAvLyBDaGVjayBpZiBpdCdzIHRoZSBjb3JyZWN0IHR5cGUKKyAg
ICBpZiAoc3ZnUmVzb3VyY2VGb3JNYXNraW5nICYmIHN2Z1Jlc291cmNlRm9yTWFza2luZy0+aXNT
VkdSZXNvdXJjZUNvbnRhaW5lcigpICYmIGRvd25jYXN0PFJlbmRlclNWR1Jlc291cmNlQ29udGFp
bmVyPihzdmdSZXNvdXJjZUZvck1hc2tpbmcpLT5yZXNvdXJjZVR5cGUoKSA9PSBNYXNrZXJSZXNv
dXJjZVR5cGUpCisgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxSZW5kZXJTVkdSZXNvdXJjZU1h
c2tlcio+KHN2Z1Jlc291cmNlRm9yTWFza2luZyk7CisKKyAgICByZXR1cm4gbnVsbHB0cjsKK30K
KworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvTWFza0ltYWdlT3BlcmF0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9NYXNrSW1hZ2VPcGVyYXRpb24uaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwLi40ODc1M2JkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvTWFza0ltYWdlT3BlcmF0aW9uLmgKQEAgLTAsMCArMSw5NyBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxNCBBZG9iZSBTeXN0ZW1zIEluY29ycG9yYXRlZC4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUK
KyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgVEhFIENPUFlSSUdIVCBIT0xERVIgQkUKKyAqIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwKKyAqIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IK
KyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IKKyAqIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRgorICogVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GCisgKiBTVUNIIERBTUFH
RS4KKyAqLworCisjaWZuZGVmIE1hc2tJbWFnZU9wZXJhdGlvbl9oCisjZGVmaW5lIE1hc2tJbWFn
ZU9wZXJhdGlvbl9oCisKKyNpbmNsdWRlICJDYWNoZWRSZXNvdXJjZUxvYWRlci5oIgorI2luY2x1
ZGUgIkNhY2hlZFNWR0RvY3VtZW50Q2xpZW50LmgiCisjaW5jbHVkZSAiQ2FjaGVkU1ZHRG9jdW1l
bnRSZWZlcmVuY2UuaCIKKyNpbmNsdWRlICJDb2xvci5oIgorI2luY2x1ZGUgIkltYWdlLmgiCisj
aW5jbHVkZSAiTGF5b3V0U2l6ZS5oIgorI2luY2x1ZGUgIkxlbmd0aC5oIgorI2luY2x1ZGUgIlN0
eWxlSW1hZ2UuaCIKKyNpbmNsdWRlIDx3dGYvSGFzaENvdW50ZWRTZXQuaD4KKyNpbmNsdWRlIDx3
dGYvT3duUHRyLmg+CisjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KKyNpbmNsdWRlIDx3dGYv
UmVmQ291bnRlZC5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCituYW1lc3Bh
Y2UgV2ViQ29yZSB7CisgICAgCitjbGFzcyBCYWNrZ3JvdW5kSW1hZ2VHZW9tZXRyeTsKK2NsYXNz
IENhY2hlZEltYWdlQ2xpZW50OworY2xhc3MgUmVuZGVyU1ZHUmVzb3VyY2VNYXNrZXI7CitjbGFz
cyBXZWJLaXRDU1NSZXNvdXJjZVZhbHVlOworCitjbGFzcyBNYXNrSW1hZ2VPcGVyYXRpb24gZmlu
YWwgOiBwdWJsaWMgUmVmQ291bnRlZDxNYXNrSW1hZ2VPcGVyYXRpb24+LCBwdWJsaWMgQ2FjaGVk
U1ZHRG9jdW1lbnRDbGllbnQgeworcHVibGljOgorICAgIHN0YXRpYyBQYXNzUmVmUHRyPE1hc2tJ
bWFnZU9wZXJhdGlvbj4gY3JlYXRlKFBhc3NSZWZQdHI8V2ViS2l0Q1NTUmVzb3VyY2VWYWx1ZT4g
Y3NzVmFsdWUsIGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBTdHJpbmcmIGZyYWdtZW50LCBib29s
IGlzRXh0ZXJuYWxEb2N1bWVudCwgUGFzc1JlZlB0cjxDYWNoZWRSZXNvdXJjZUxvYWRlcj4pOwor
ICAgIHN0YXRpYyBQYXNzUmVmUHRyPE1hc2tJbWFnZU9wZXJhdGlvbj4gY3JlYXRlKFBhc3NSZWZQ
dHI8U3R5bGVJbWFnZT4gZ2VuZXJhdGVkSW1hZ2UpOworICAgIHN0YXRpYyBQYXNzUmVmUHRyPE1h
c2tJbWFnZU9wZXJhdGlvbj4gY3JlYXRlKCk7CisKKyAgICBQYXNzUmVmUHRyPENTU1ZhbHVlPiBj
c3NWYWx1ZSgpOworCisgICAgdmlydHVhbCB+TWFza0ltYWdlT3BlcmF0aW9uKCk7CisKKyAgICBj
b25zdCBTdHJpbmcmIHVybCgpIGNvbnN0IHsgcmV0dXJuIG1fdXJsOyB9CisgICAgY29uc3QgU3Ry
aW5nJiBmcmFnbWVudCgpIGNvbnN0IHsgcmV0dXJuIG1fZnJhZ21lbnQ7IH0KKyAgICBTdHlsZUlt
YWdlKiBpbWFnZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3R5bGVJbWFnZS5nZXQoKTsgfQorICAgIHZv
aWQgc2V0SW1hZ2UoUGFzc1JlZlB0cjxTdHlsZUltYWdlPiBpbWFnZSkgeyBtX3N0eWxlSW1hZ2Ug
PSBpbWFnZTsgfQorICAgIHZvaWQgc2V0UmVuZGVyTGF5ZXJJbWFnZUNsaWVudChDYWNoZWRJbWFn
ZUNsaWVudCopOworICAgIHZvaWQgYWRkUmVuZGVyZXJJbWFnZUNsaWVudChSZW5kZXJFbGVtZW50
Kik7CisgICAgdm9pZCByZW1vdmVSZW5kZXJlckltYWdlQ2xpZW50KFJlbmRlckVsZW1lbnQqKTsK
KyAgICBib29sIGlzTWFza0xvYWRlZCgpIGNvbnN0OworICAgIGJvb2wgZHJhd01hc2soUmVuZGVy
RWxlbWVudCYgcmVuZGVyZXIsIEJhY2tncm91bmRJbWFnZUdlb21ldHJ5JiwgR3JhcGhpY3NDb250
ZXh0KiwgQ29tcG9zaXRlT3BlcmF0b3IpOworICAgIGJvb2wgaXNDU1NWYWx1ZU5vbmUoKSBjb25z
dDsKKworICAgIENhY2hlZFNWR0RvY3VtZW50UmVmZXJlbmNlKiBjYWNoZWRTVkdEb2N1bWVudFJl
ZmVyZW5jZSgpIGNvbnN0IHsgcmV0dXJuIG1fY2FjaGVkU1ZHRG9jdW1lbnRSZWZlcmVuY2UuZ2V0
KCk7IH0KKyAgICBDYWNoZWRTVkdEb2N1bWVudFJlZmVyZW5jZSogZW5zdXJlQ2FjaGVkU1ZHRG9j
dW1lbnRSZWZlcmVuY2UoKTsKKyAgICAKKyAgICB2aXJ0dWFsIHZvaWQgbm90aWZ5RmluaXNoZWQo
Q2FjaGVkUmVzb3VyY2UqKSBvdmVycmlkZTsKKworcHJpdmF0ZToKKyAgICBNYXNrSW1hZ2VPcGVy
YXRpb24oUGFzc1JlZlB0cjxXZWJLaXRDU1NSZXNvdXJjZVZhbHVlPiBjc3NWYWx1ZSwgY29uc3Qg
U3RyaW5nJiB1cmwsIGNvbnN0IFN0cmluZyYgZnJhZ21lbnQsIGJvb2wgaXNFeHRlcm5hbERvY3Vt
ZW50LCBQYXNzUmVmUHRyPENhY2hlZFJlc291cmNlTG9hZGVyPik7CisgICAgTWFza0ltYWdlT3Bl
cmF0aW9uKFBhc3NSZWZQdHI8U3R5bGVJbWFnZT4gZ2VuZXJhdGVkSW1hZ2UpOworICAgIE1hc2tJ
bWFnZU9wZXJhdGlvbigpOworCisgICAgUmVuZGVyU1ZHUmVzb3VyY2VNYXNrZXIqIGdldFNWR01h
c2tlcihSZW5kZXJFbGVtZW50JiByZW5kZXJlcik7CisKKyAgICBTdHJpbmcgbV91cmw7CisgICAg
U3RyaW5nIG1fZnJhZ21lbnQ7CisgICAgYm9vbCBtX2lzRXh0ZXJuYWxEb2N1bWVudDsKKyAgICBz
dGQ6OnVuaXF1ZV9wdHI8Q2FjaGVkU1ZHRG9jdW1lbnRSZWZlcmVuY2U+IG1fY2FjaGVkU1ZHRG9j
dW1lbnRSZWZlcmVuY2U7CisgICAgUmVmUHRyPFN0eWxlSW1hZ2U+IG1fc3R5bGVJbWFnZTsKKyAg
ICBDYWNoZWRJbWFnZUNsaWVudCogbV9yZW5kZXJMYXllckltYWdlQ2xpZW50OworICAgIEhhc2hD
b3VudGVkU2V0PFJlbmRlckVsZW1lbnQqPiBtX3JlbmRlcmVySW1hZ2VDbGllbnRzOworICAgIFJl
ZlB0cjxXZWJLaXRDU1NSZXNvdXJjZVZhbHVlPiBtX2Nzc01hc2tJbWFnZVZhbHVlOworICAgIFJl
ZlB0cjxDYWNoZWRSZXNvdXJjZUxvYWRlcj4gbV9jYWNoZWRSZXNvdXJjZUxvYWRlcjsKK307CisK
K30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIE1hc2tJbWFnZU9wZXJhdGlvbl9o
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmpl
Y3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmNw
cAppbmRleCA3YjVhNTI4Li45MTJhNWY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5jcHAKQEAgLTEwMTcsMzEgKzEwMTcsMzEgQEAgTGF5
b3V0U2l6ZSBSZW5kZXJCb3hNb2RlbE9iamVjdDo6Y2FsY3VsYXRlRmlsbFRpbGVTaXplKGNvbnN0
IEZpbGxMYXllciogZmlsbExheWUKICAgICByZXR1cm4gTGF5b3V0U2l6ZSgpOwogfQogCi12b2lk
IFJlbmRlckJveE1vZGVsT2JqZWN0OjpCYWNrZ3JvdW5kSW1hZ2VHZW9tZXRyeTo6c2V0Tm9SZXBl
YXRYKExheW91dFVuaXQgeE9mZnNldCkKK3ZvaWQgQmFja2dyb3VuZEltYWdlR2VvbWV0cnk6OnNl
dE5vUmVwZWF0WChMYXlvdXRVbml0IHhPZmZzZXQpCiB7CiAgICAgbV9kZXN0UmVjdC5tb3ZlKHN0
ZDo6bWF4PExheW91dFVuaXQ+KHhPZmZzZXQsIDApLCAwKTsKICAgICBtX3BoYXNlLnNldFgoLXN0
ZDo6bWluPExheW91dFVuaXQ+KHhPZmZzZXQsIDApKTsKICAgICBtX2Rlc3RSZWN0LnNldFdpZHRo
KG1fdGlsZVNpemUud2lkdGgoKSArIHN0ZDo6bWluPGZsb2F0Pih4T2Zmc2V0LCAwKSk7CiB9Ci12
b2lkIFJlbmRlckJveE1vZGVsT2JqZWN0OjpCYWNrZ3JvdW5kSW1hZ2VHZW9tZXRyeTo6c2V0Tm9S
ZXBlYXRZKExheW91dFVuaXQgeU9mZnNldCkKK3ZvaWQgQmFja2dyb3VuZEltYWdlR2VvbWV0cnk6
OnNldE5vUmVwZWF0WShMYXlvdXRVbml0IHlPZmZzZXQpCiB7CiAgICAgbV9kZXN0UmVjdC5tb3Zl
KDAsIHN0ZDo6bWF4PExheW91dFVuaXQ+KHlPZmZzZXQsIDApKTsKICAgICBtX3BoYXNlLnNldFko
LXN0ZDo6bWluPExheW91dFVuaXQ+KHlPZmZzZXQsIDApKTsKICAgICBtX2Rlc3RSZWN0LnNldEhl
aWdodChtX3RpbGVTaXplLmhlaWdodCgpICsgc3RkOjptaW48ZmxvYXQ+KHlPZmZzZXQsIDApKTsK
IH0KIAotdm9pZCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6QmFja2dyb3VuZEltYWdlR2VvbWV0cnk6
OnVzZUZpeGVkQXR0YWNobWVudChjb25zdCBMYXlvdXRQb2ludCYgYXR0YWNobWVudFBvaW50KQor
dm9pZCBCYWNrZ3JvdW5kSW1hZ2VHZW9tZXRyeTo6dXNlRml4ZWRBdHRhY2htZW50KGNvbnN0IExh
eW91dFBvaW50JiBhdHRhY2htZW50UG9pbnQpCiB7CiAgICAgRmxvYXRQb2ludCBhbGlnbmVkUG9p
bnQgPSBhdHRhY2htZW50UG9pbnQ7CiAgICAgbV9waGFzZS5tb3ZlKHN0ZDo6bWF4PExheW91dFVu
aXQ+KGFsaWduZWRQb2ludC54KCkgLSBtX2Rlc3RSZWN0LngoKSwgMCksIHN0ZDo6bWF4PExheW91
dFVuaXQ+KGFsaWduZWRQb2ludC55KCkgLSBtX2Rlc3RSZWN0LnkoKSwgMCkpOwogfQogCi12b2lk
IFJlbmRlckJveE1vZGVsT2JqZWN0OjpCYWNrZ3JvdW5kSW1hZ2VHZW9tZXRyeTo6Y2xpcChjb25z
dCBMYXlvdXRSZWN0JiBjbGlwUmVjdCkKK3ZvaWQgQmFja2dyb3VuZEltYWdlR2VvbWV0cnk6OmNs
aXAoY29uc3QgTGF5b3V0UmVjdCYgY2xpcFJlY3QpCiB7CiAgICAgbV9kZXN0UmVjdC5pbnRlcnNl
Y3QoY2xpcFJlY3QpOwogfQogCi1MYXlvdXRQb2ludCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6QmFj
a2dyb3VuZEltYWdlR2VvbWV0cnk6OnJlbGF0aXZlUGhhc2UoKSBjb25zdAorTGF5b3V0UG9pbnQg
QmFja2dyb3VuZEltYWdlR2VvbWV0cnk6OnJlbGF0aXZlUGhhc2UoKSBjb25zdAogewogICAgIExh
eW91dFBvaW50IHBoYXNlID0gbV9waGFzZTsKICAgICBwaGFzZSArPSBtX2Rlc3RSZWN0LmxvY2F0
aW9uKCkgLSBtX2Rlc3RPcmlnaW47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyQm94TW9kZWxPYmplY3QuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJCb3hNb2RlbE9iamVjdC5oCmluZGV4IDE5NTU4YzYuLjA3MDJkNDEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5oCkBAIC02NSw2ICs2NSw1
MiBAQCBjbGFzcyBSZW5kZXJOYW1lZEZsb3dGcmFnbWVudDsKIGNsYXNzIFJlbmRlclRleHRGcmFn
bWVudDsKIGNsYXNzIFN0aWNreVBvc2l0aW9uVmlld3BvcnRDb25zdHJhaW50czsKIAorY2xhc3Mg
QmFja2dyb3VuZEltYWdlR2VvbWV0cnkgeworcHVibGljOgorICAgIEJhY2tncm91bmRJbWFnZUdl
b21ldHJ5KCkKKyAgICAgICAgOiBtX2hhc05vbkxvY2FsR2VvbWV0cnkoZmFsc2UpCisgICAgeyB9
CisKKyAgICBMYXlvdXRQb2ludCBkZXN0T3JpZ2luKCkgY29uc3QgeyByZXR1cm4gbV9kZXN0T3Jp
Z2luOyB9CisgICAgdm9pZCBzZXREZXN0T3JpZ2luKGNvbnN0IExheW91dFBvaW50JiBkZXN0T3Jp
Z2luKSB7IG1fZGVzdE9yaWdpbiA9IGRlc3RPcmlnaW47IH0KKyAgICAKKyAgICBMYXlvdXRSZWN0
IGRlc3RSZWN0KCkgY29uc3QgeyByZXR1cm4gbV9kZXN0UmVjdDsgfQorICAgIHZvaWQgc2V0RGVz
dFJlY3QoY29uc3QgTGF5b3V0UmVjdCYgZGVzdFJlY3QpIHsgbV9kZXN0UmVjdCA9IGRlc3RSZWN0
OyB9CisgICAgCisgICAgLy8gUmV0dXJucyB0aGUgcGhhc2UgcmVsYXRpdmUgdG8gdGhlIGRlc3Rp
bmF0aW9uIHJlY3RhbmdsZS4KKyAgICBMYXlvdXRQb2ludCByZWxhdGl2ZVBoYXNlKCkgY29uc3Q7
CisgICAgCisgICAgTGF5b3V0UG9pbnQgcGhhc2UoKSBjb25zdCB7IHJldHVybiBtX3BoYXNlOyB9
CisgICAgdm9pZCBzZXRQaGFzZShjb25zdCBMYXlvdXRQb2ludCYgcGhhc2UpIHsgbV9waGFzZSA9
IHBoYXNlOyB9CisgICAgCisgICAgTGF5b3V0U2l6ZSB0aWxlU2l6ZSgpIGNvbnN0IHsgcmV0dXJu
IG1fdGlsZVNpemU7IH0KKyAgICB2b2lkIHNldFRpbGVTaXplKGNvbnN0IExheW91dFNpemUmIHRp
bGVTaXplKSB7IG1fdGlsZVNpemUgPSB0aWxlU2l6ZTsgfQorICAgIAorICAgIExheW91dFNpemUg
c3BhY2VTaXplKCkgY29uc3QgeyByZXR1cm4gbV9zcGFjZTsgfQorICAgIHZvaWQgc2V0U3BhY2VT
aXplKGNvbnN0IExheW91dFNpemUmIHNwYWNlKSB7IG1fc3BhY2UgPSBzcGFjZTsgfQorICAgIAor
ICAgIHZvaWQgc2V0UGhhc2VYKExheW91dFVuaXQgIHgpIHsgbV9waGFzZS5zZXRYKHgpOyB9Cisg
ICAgdm9pZCBzZXRQaGFzZVkoTGF5b3V0VW5pdCB5KSB7IG1fcGhhc2Uuc2V0WSh5KTsgfQorICAg
IAorICAgIHZvaWQgc2V0Tm9SZXBlYXRYKExheW91dFVuaXQgeE9mZnNldCk7CisgICAgdm9pZCBz
ZXROb1JlcGVhdFkoTGF5b3V0VW5pdCB5T2Zmc2V0KTsKKyAgICAKKyAgICB2b2lkIHVzZUZpeGVk
QXR0YWNobWVudChjb25zdCBMYXlvdXRQb2ludCYgYXR0YWNobWVudFBvaW50KTsKKyAgICAKKyAg
ICB2b2lkIGNsaXAoY29uc3QgTGF5b3V0UmVjdCYpOworICAgIAorICAgIHZvaWQgc2V0SGFzTm9u
TG9jYWxHZW9tZXRyeShib29sIGhhc05vbkxvY2FsR2VvbWV0cnkgPSB0cnVlKSB7IG1faGFzTm9u
TG9jYWxHZW9tZXRyeSA9IGhhc05vbkxvY2FsR2VvbWV0cnk7IH0KKyAgICBib29sIGhhc05vbkxv
Y2FsR2VvbWV0cnkoKSBjb25zdCB7IHJldHVybiBtX2hhc05vbkxvY2FsR2VvbWV0cnk7IH0KKyAg
ICAKK3ByaXZhdGU6CisgICAgTGF5b3V0UmVjdCBtX2Rlc3RSZWN0OworICAgIExheW91dFBvaW50
IG1fZGVzdE9yaWdpbjsKKyAgICBMYXlvdXRQb2ludCBtX3BoYXNlOworICAgIExheW91dFNpemUg
bV90aWxlU2l6ZTsKKyAgICBMYXlvdXRTaXplIG1fc3BhY2U7CisgICAgYm9vbCBtX2hhc05vbkxv
Y2FsR2VvbWV0cnk7IC8vIEhhcyBiYWNrZ3JvdW5kLWF0dGFjaG1lbnQ6IGZpeGVkLiBJbXBsaWVz
IHRoYXQgd2UgY2FuJ3QgYWx3YXlzIGNoZWFwbHkgY29tcHV0ZSBkZXN0UmVjdC4KK307CisKIC8v
IFRoaXMgY2xhc3MgaXMgdGhlIGJhc2UgZm9yIGFsbCBvYmplY3RzIHRoYXQgYWRoZXJlIHRvIHRo
ZSBDU1MgYm94IG1vZGVsIGFzIGRlc2NyaWJlZAogLy8gYXQgaHR0cDovL3d3dy53My5vcmcvVFIv
Q1NTMjEvYm94Lmh0bWwKIApAQCAtMjEwLDUxICsyNTYsNiBAQCBwcm90ZWN0ZWQ6CiAKICAgICB2
aXJ0dWFsIHZvaWQgd2lsbEJlRGVzdHJveWVkKCkgb3ZlcnJpZGU7CiAKLSAgICBjbGFzcyBCYWNr
Z3JvdW5kSW1hZ2VHZW9tZXRyeSB7Ci0gICAgcHVibGljOgotICAgICAgICBCYWNrZ3JvdW5kSW1h
Z2VHZW9tZXRyeSgpCi0gICAgICAgICAgICA6IG1faGFzTm9uTG9jYWxHZW9tZXRyeShmYWxzZSkK
LSAgICAgICAgeyB9Ci0gICAgICAgIExheW91dFBvaW50IGRlc3RPcmlnaW4oKSBjb25zdCB7IHJl
dHVybiBtX2Rlc3RPcmlnaW47IH0KLSAgICAgICAgdm9pZCBzZXREZXN0T3JpZ2luKGNvbnN0IExh
eW91dFBvaW50JiBkZXN0T3JpZ2luKSB7IG1fZGVzdE9yaWdpbiA9IGRlc3RPcmlnaW47IH0KLSAg
ICAgICAgCi0gICAgICAgIExheW91dFJlY3QgZGVzdFJlY3QoKSBjb25zdCB7IHJldHVybiBtX2Rl
c3RSZWN0OyB9Ci0gICAgICAgIHZvaWQgc2V0RGVzdFJlY3QoY29uc3QgTGF5b3V0UmVjdCYgZGVz
dFJlY3QpIHsgbV9kZXN0UmVjdCA9IGRlc3RSZWN0OyB9Ci0KLSAgICAgICAgLy8gUmV0dXJucyB0
aGUgcGhhc2UgcmVsYXRpdmUgdG8gdGhlIGRlc3RpbmF0aW9uIHJlY3RhbmdsZS4KLSAgICAgICAg
TGF5b3V0UG9pbnQgcmVsYXRpdmVQaGFzZSgpIGNvbnN0OwotICAgICAgICAKLSAgICAgICAgTGF5
b3V0UG9pbnQgcGhhc2UoKSBjb25zdCB7IHJldHVybiBtX3BoYXNlOyB9Ci0gICAgICAgIHZvaWQg
c2V0UGhhc2UoY29uc3QgTGF5b3V0UG9pbnQmIHBoYXNlKSB7IG1fcGhhc2UgPSBwaGFzZTsgfQot
Ci0gICAgICAgIExheW91dFNpemUgdGlsZVNpemUoKSBjb25zdCB7IHJldHVybiBtX3RpbGVTaXpl
OyB9Ci0gICAgICAgIHZvaWQgc2V0VGlsZVNpemUoY29uc3QgTGF5b3V0U2l6ZSYgdGlsZVNpemUp
IHsgbV90aWxlU2l6ZSA9IHRpbGVTaXplOyB9Ci0KLSAgICAgICAgTGF5b3V0U2l6ZSBzcGFjZVNp
emUoKSBjb25zdCB7IHJldHVybiBtX3NwYWNlOyB9Ci0gICAgICAgIHZvaWQgc2V0U3BhY2VTaXpl
KGNvbnN0IExheW91dFNpemUmIHNwYWNlKSB7IG1fc3BhY2UgPSBzcGFjZTsgfQotCi0gICAgICAg
IHZvaWQgc2V0UGhhc2VYKExheW91dFVuaXQgIHgpIHsgbV9waGFzZS5zZXRYKHgpOyB9Ci0gICAg
ICAgIHZvaWQgc2V0UGhhc2VZKExheW91dFVuaXQgeSkgeyBtX3BoYXNlLnNldFkoeSk7IH0KLSAg
ICAgICAgCi0gICAgICAgIHZvaWQgc2V0Tm9SZXBlYXRYKExheW91dFVuaXQgeE9mZnNldCk7Ci0g
ICAgICAgIHZvaWQgc2V0Tm9SZXBlYXRZKExheW91dFVuaXQgeU9mZnNldCk7Ci0gICAgICAgIAot
ICAgICAgICB2b2lkIHVzZUZpeGVkQXR0YWNobWVudChjb25zdCBMYXlvdXRQb2ludCYgYXR0YWNo
bWVudFBvaW50KTsKLSAgICAgICAgCi0gICAgICAgIHZvaWQgY2xpcChjb25zdCBMYXlvdXRSZWN0
Jik7Ci0gICAgICAgIAotICAgICAgICB2b2lkIHNldEhhc05vbkxvY2FsR2VvbWV0cnkoYm9vbCBo
YXNOb25Mb2NhbEdlb21ldHJ5ID0gdHJ1ZSkgeyBtX2hhc05vbkxvY2FsR2VvbWV0cnkgPSBoYXNO
b25Mb2NhbEdlb21ldHJ5OyB9Ci0gICAgICAgIGJvb2wgaGFzTm9uTG9jYWxHZW9tZXRyeSgpIGNv
bnN0IHsgcmV0dXJuIG1faGFzTm9uTG9jYWxHZW9tZXRyeTsgfQotCi0gICAgcHJpdmF0ZToKLSAg
ICAgICAgTGF5b3V0UmVjdCBtX2Rlc3RSZWN0OwotICAgICAgICBMYXlvdXRQb2ludCBtX2Rlc3RP
cmlnaW47Ci0gICAgICAgIExheW91dFBvaW50IG1fcGhhc2U7Ci0gICAgICAgIExheW91dFNpemUg
bV90aWxlU2l6ZTsKLSAgICAgICAgTGF5b3V0U2l6ZSBtX3NwYWNlOwotICAgICAgICBib29sIG1f
aGFzTm9uTG9jYWxHZW9tZXRyeTsgLy8gSGFzIGJhY2tncm91bmQtYXR0YWNobWVudDogZml4ZWQu
IEltcGxpZXMgdGhhdCB3ZSBjYW4ndCBhbHdheXMgY2hlYXBseSBjb21wdXRlIGRlc3RSZWN0Lgot
ICAgIH07Ci0KICAgICBMYXlvdXRQb2ludCBhZGp1c3RlZFBvc2l0aW9uUmVsYXRpdmVUb09mZnNl
dFBhcmVudChjb25zdCBMYXlvdXRQb2ludCYpIGNvbnN0OwogCiAgICAgYm9vbCBoYXNCb3hEZWNv
cmF0aW9uU3R5bGUoKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJMYXllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIu
Y3BwCmluZGV4IDkyYWEyYWYuLmQ5ZDVkMjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJMYXllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckxheWVyLmNwcApAQCAtODgsNiArODgsNyBAQAogI2luY2x1ZGUgIlJlbmRlckxheWVyQmFj
a2luZy5oIgogI2luY2x1ZGUgIlJlbmRlckxheWVyQ29tcG9zaXRvci5oIgogI2luY2x1ZGUgIlJl
bmRlckxheWVyRmlsdGVySW5mby5oIgorI2luY2x1ZGUgIlJlbmRlckxheWVyTWFza0ltYWdlSW5m
by5oIgogI2luY2x1ZGUgIlJlbmRlck1hcnF1ZWUuaCIKICNpbmNsdWRlICJSZW5kZXJNdWx0aUNv
bHVtbkZsb3dUaHJlYWQuaCIKICNpbmNsdWRlICJSZW5kZXJOYW1lZEZsb3dGcmFnbWVudC5oIgpA
QCAtMTg5LDYgKzE5MCw3IEBAIFJlbmRlckxheWVyOjpSZW5kZXJMYXllcihSZW5kZXJMYXllck1v
ZGVsT2JqZWN0JiByZW5kZXJlckxheWVyTW9kZWxPYmplY3QpCiAgICAgLCBtX2xheWVyTGlzdE11
dGF0aW9uQWxsb3dlZCh0cnVlKQogI2VuZGlmCiAgICAgLCBtX2hhc0ZpbHRlckluZm8oZmFsc2Up
CisgICAgLCBtX2hhc01hc2tJbWFnZUluZm8oZmFsc2UpCiAjaWYgRU5BQkxFKENTU19DT01QT1NJ
VElORykKICAgICAsIG1fYmxlbmRNb2RlKEJsZW5kTW9kZU5vcm1hbCkKICAgICAsIG1faGFzTm90
SXNvbGF0ZWRDb21wb3NpdGVkQmxlbmRpbmdEZXNjZW5kYW50cyhmYWxzZSkKQEAgLTI1NSw2ICsy
NTcsNyBAQCBSZW5kZXJMYXllcjo6flJlbmRlckxheWVyKCkKICAgICAgICAgcmVtb3ZlUmVmbGVj
dGlvbigpOwogCiAgICAgRmlsdGVySW5mbzo6cmVtb3ZlKCp0aGlzKTsKKyAgICBNYXNrSW1hZ2VJ
bmZvOjpyZW1vdmUoKnRoaXMpOwogCiAgICAgLy8gQ2hpbGQgbGF5ZXJzIHdpbGwgYmUgZGVsZXRl
ZCBieSB0aGVpciBjb3JyZXNwb25kaW5nIHJlbmRlciBvYmplY3RzLCBzbwogICAgIC8vIHdlIGRv
bid0IG5lZWQgdG8gZGVsZXRlIHRoZW0gb3Vyc2VsdmVzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyTGF5ZXIuaAppbmRleCA0MTA5Mzg3Li43MzEzNjcyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyTGF5ZXIuaApAQCAtMTI2Niw2ICsxMjY2LDcgQEAgcHJpdmF0ZToKICNlbmRp
ZgogCiAgICAgYm9vbCBtX2hhc0ZpbHRlckluZm8gOiAxOworICAgIHVuc2lnbmVkIG1faGFzTWFz
a0ltYWdlSW5mbyA6IDE7CiAKICNpZiBFTkFCTEUoQ1NTX0NPTVBPU0lUSU5HKQogICAgIHVuc2ln
bmVkIG1fYmxlbmRNb2RlIDogNTsKQEAgLTEzNDIsNiArMTM0Myw3IEBAIHByaXZhdGU6CiAgICAg
c3RkOjp1bmlxdWVfcHRyPFJlbmRlckxheWVyQmFja2luZz4gbV9iYWNraW5nOwogCiAgICAgY2xh
c3MgRmlsdGVySW5mbzsKKyAgICBjbGFzcyBNYXNrSW1hZ2VJbmZvOwogfTsKIAogaW5saW5lIHZv
aWQgUmVuZGVyTGF5ZXI6OmNsZWFyWk9yZGVyTGlzdHMoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyTWFza0ltYWdlSW5mby5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJNYXNrSW1hZ2VJbmZvLmNwcApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwLi5hNzdmZTA4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyTWFza0ltYWdlSW5mby5jcHAKQEAgLTAsMCAr
MSwxNDEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgQWRvYmUgU3lzdGVtcyBJbmNvcnBv
cmF0ZWQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUiAiQVMgSVMiIEFORCBBTlkKKyAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQgSE9MREVSIEJFCisgKiBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksCisgKiBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SCisgKiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YKKyAqIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRgorICog
U1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlJlbmRl
ckxheWVyTWFza0ltYWdlSW5mby5oIgorCisjaW5jbHVkZSAiQ2FjaGVkU1ZHRG9jdW1lbnQuaCIK
KyNpbmNsdWRlICJDYWNoZWRTVkdEb2N1bWVudFJlZmVyZW5jZS5oIgorI2luY2x1ZGUgIlJlbmRl
clNWR1Jlc291cmNlQ29udGFpbmVyLmgiCisjaW5jbHVkZSAiU1ZHRWxlbWVudC5oIgorI2luY2x1
ZGUgIlNWR01hc2tFbGVtZW50LmgiCisjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CisK
K25hbWVzcGFjZSBXZWJDb3JlIHsKKworSGFzaE1hcDxjb25zdCBSZW5kZXJMYXllciosIHN0ZDo6
dW5pcXVlX3B0cjxSZW5kZXJMYXllcjo6TWFza0ltYWdlSW5mbz4+JiBSZW5kZXJMYXllcjo6TWFz
a0ltYWdlSW5mbzo6bGF5ZXJUb01hc2tNYXAoKQoreworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3ll
ZDxIYXNoTWFwPGNvbnN0IFJlbmRlckxheWVyKiwgc3RkOjp1bmlxdWVfcHRyPE1hc2tJbWFnZUlu
Zm8+Pj4gbGF5ZXJUb01hc2tNYXA7CisgICAgcmV0dXJuIGxheWVyVG9NYXNrTWFwOworfQorCitS
ZW5kZXJMYXllcjo6TWFza0ltYWdlSW5mbyogUmVuZGVyTGF5ZXI6Ok1hc2tJbWFnZUluZm86Omdl
dElmRXhpc3RzKGNvbnN0IFJlbmRlckxheWVyJiBsYXllcikKK3sKKyAgICBBU1NFUlQobGF5ZXIu
bV9oYXNNYXNrSW1hZ2VJbmZvID09IGxheWVyVG9NYXNrTWFwKCkuY29udGFpbnMoJmxheWVyKSk7
CisgICAgcmV0dXJuIGxheWVyLm1faGFzTWFza0ltYWdlSW5mbyA/IGxheWVyVG9NYXNrTWFwKCku
Z2V0KCZsYXllcikgOiAwOworfQorCitSZW5kZXJMYXllcjo6TWFza0ltYWdlSW5mbyYgUmVuZGVy
TGF5ZXI6Ok1hc2tJbWFnZUluZm86OmdldChSZW5kZXJMYXllciYgbGF5ZXIpCit7CisgICAgQVNT
RVJUKGxheWVyLm1faGFzTWFza0ltYWdlSW5mbyA9PSBsYXllclRvTWFza01hcCgpLmNvbnRhaW5z
KCZsYXllcikpOworCisgICAgYXV0byYgaW5mbyA9IGxheWVyVG9NYXNrTWFwKCkuYWRkKCZsYXll
ciwgbnVsbHB0cikuaXRlcmF0b3ItPnZhbHVlOworICAgIGlmICghaW5mbykgeworICAgICAgICBp
bmZvID0gc3RkOjptYWtlX3VuaXF1ZTxNYXNrSW1hZ2VJbmZvPihsYXllcik7CisgICAgICAgIGxh
eWVyLm1faGFzTWFza0ltYWdlSW5mbyA9IHRydWU7CisgICAgfQorICAgIHJldHVybiAqaW5mbzsK
K30KKwordm9pZCBSZW5kZXJMYXllcjo6TWFza0ltYWdlSW5mbzo6cmVtb3ZlKFJlbmRlckxheWVy
JiBsYXllcikKK3sKKyAgICBBU1NFUlQobGF5ZXIubV9oYXNNYXNrSW1hZ2VJbmZvID09IGxheWVy
VG9NYXNrTWFwKCkuY29udGFpbnMoJmxheWVyKSk7CisKKyAgICBpZiAobGF5ZXJUb01hc2tNYXAo
KS5yZW1vdmUoJmxheWVyKSkKKyAgICAgICAgbGF5ZXIubV9oYXNNYXNrSW1hZ2VJbmZvID0gZmFs
c2U7Cit9CisKK1JlbmRlckxheWVyOjpNYXNrSW1hZ2VJbmZvOjpNYXNrSW1hZ2VJbmZvKFJlbmRl
ckxheWVyJiBsYXllcikKKyAgICA6IG1fbGF5ZXIobGF5ZXIpCit7CisgICAgbV9zdmdEb2N1bWVu
dENsaWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8TWFza1NWR0RvY3VtZW50Q2xpZW50Pih0aGlzKTsK
KyAgICBtX2ltYWdlQ2xpZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxNYXNrSW1hZ2VDbGllbnQ+KHRo
aXMpOworfQorCitSZW5kZXJMYXllcjo6TWFza0ltYWdlSW5mbzo6fk1hc2tJbWFnZUluZm8oKQor
eworICAgIHJlbW92ZU1hc2tJbWFnZUNsaWVudHMoKTsKK30KKwordm9pZCBSZW5kZXJMYXllcjo6
TWFza0ltYWdlSW5mbzo6bm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UqKQoreworICAgIG1f
bGF5ZXIucmVuZGVyZXIoKS5yZXBhaW50KCk7Cit9CisKK3ZvaWQgUmVuZGVyTGF5ZXI6Ok1hc2tJ
bWFnZUluZm86OmltYWdlQ2hhbmdlZChDYWNoZWRJbWFnZSosIGNvbnN0IEludFJlY3QqKQorewor
ICAgIG1fbGF5ZXIucmVuZGVyZXIoKS5yZXBhaW50KCk7Cit9CisKK3ZvaWQgUmVuZGVyTGF5ZXI6
Ok1hc2tJbWFnZUluZm86OnVwZGF0ZU1hc2tJbWFnZUNsaWVudHMoKQoreworICAgIHJlbW92ZU1h
c2tJbWFnZUNsaWVudHMoKTsKKyAgICAKKyAgICBjb25zdCBGaWxsTGF5ZXIqIG1hc2tMYXllciA9
IG1fbGF5ZXIucmVuZGVyZXIoKS5zdHlsZSgpLm1hc2tMYXllcnMoKTsKKyAgICB3aGlsZSAobWFz
a0xheWVyKSB7CisgICAgICAgIGNvbnN0IFJlZlB0cjxNYXNrSW1hZ2VPcGVyYXRpb24+IG1hc2tJ
bWFnZSA9IG1hc2tMYXllci0+bWFza0ltYWdlKCk7CisgICAgICAgIG1hc2tJbWFnZS0+c2V0UmVu
ZGVyTGF5ZXJJbWFnZUNsaWVudChtX2ltYWdlQ2xpZW50LmdldCgpKTsKKyAgICAgICAgQ2FjaGVk
U1ZHRG9jdW1lbnRSZWZlcmVuY2UqIGRvY3VtZW50UmVmZXJlbmNlID0gbWFza0ltYWdlLT5jYWNo
ZWRTVkdEb2N1bWVudFJlZmVyZW5jZSgpOworICAgICAgICBDYWNoZWRTVkdEb2N1bWVudCogY2Fj
aGVkU1ZHRG9jdW1lbnQgPSBkb2N1bWVudFJlZmVyZW5jZSA/IGRvY3VtZW50UmVmZXJlbmNlLT5k
b2N1bWVudCgpIDogbnVsbHB0cjsKKyAgICAgICAgCisgICAgICAgIGlmIChjYWNoZWRTVkdEb2N1
bWVudCkgeworICAgICAgICAgICAgLy8gUmVmZXJlbmNlIGlzIGV4dGVybmFsOyB3YWl0IGZvciBu
b3RpZnlGaW5pc2hlZCgpLgorICAgICAgICAgICAgY2FjaGVkU1ZHRG9jdW1lbnQtPmFkZENsaWVu
dChtX3N2Z0RvY3VtZW50Q2xpZW50LmdldCgpKTsKKyAgICAgICAgICAgIG1fZXh0ZXJuYWxTVkdS
ZWZlcmVuY2VzLmFwcGVuZChjYWNoZWRTVkdEb2N1bWVudCk7CisgICAgICAgIH0gZWxzZSB7Cisg
ICAgICAgICAgICAvLyBSZWZlcmVuY2UgaXMgaW50ZXJuYWw7IGFkZCBsYXllciBhcyBhIGNsaWVu
dCBzbyB3ZSBjYW4gdHJpZ2dlcgorICAgICAgICAgICAgLy8gbWFzayByZXBhaW50IG9uIFNWRyBh
dHRyaWJ1dGUgY2hhbmdlLgorICAgICAgICAgICAgRWxlbWVudCogbWFza2VyID0gbV9sYXllci5y
ZW5kZXJlcigpLmRvY3VtZW50KCkuZ2V0RWxlbWVudEJ5SWQobWFza0ltYWdlLT5mcmFnbWVudCgp
KTsKKyAgICAgICAgICAgIGlmIChtYXNrZXIgJiYgaXM8U1ZHTWFza0VsZW1lbnQ+KG1hc2tlcikp
IHsKKyAgICAgICAgICAgICAgICBkb3duY2FzdDxTVkdNYXNrRWxlbWVudD4obWFza2VyKS0+YWRk
Q2xpZW50UmVuZGVyTGF5ZXIoJm1fbGF5ZXIpOworICAgICAgICAgICAgICAgIG1faW50ZXJuYWxT
VkdSZWZlcmVuY2VzLmFwcGVuZChtYXNrZXIpOworICAgICAgICAgICAgfQorICAgICAgICB9Cisg
ICAgICAgIAorICAgICAgICBtYXNrTGF5ZXIgPSBtYXNrTGF5ZXItPm5leHQoKTsKKyAgICB9Cit9
CisKK3ZvaWQgUmVuZGVyTGF5ZXI6Ok1hc2tJbWFnZUluZm86OnJlbW92ZU1hc2tJbWFnZUNsaWVu
dHMoKQoreworICAgIGNvbnN0IEZpbGxMYXllciogbWFza0xheWVyID0gbV9sYXllci5yZW5kZXJl
cigpLnN0eWxlKCkubWFza0xheWVycygpOworICAgIHdoaWxlIChtYXNrTGF5ZXIpIHsKKyAgICAg
ICAgaWYgKG1hc2tMYXllci0+bWFza0ltYWdlKCkpCisgICAgICAgICAgICBtYXNrTGF5ZXItPm1h
c2tJbWFnZSgpLT5zZXRSZW5kZXJMYXllckltYWdlQ2xpZW50KG51bGxwdHIpOworCisgICAgICAg
IG1hc2tMYXllciA9IG1hc2tMYXllci0+bmV4dCgpOworICAgIH0KKyAgICAKKyAgICBmb3IgKGF1
dG8gZXh0ZXJuYWxTVkdSZWZlcmVuY2UgOiBtX2V4dGVybmFsU1ZHUmVmZXJlbmNlcykKKyAgICAg
ICAgZXh0ZXJuYWxTVkdSZWZlcmVuY2UtPnJlbW92ZUNsaWVudChtX3N2Z0RvY3VtZW50Q2xpZW50
LmdldCgpKTsKKyAgICBtX2V4dGVybmFsU1ZHUmVmZXJlbmNlcy5jbGVhcigpOworICAgIAorICAg
IGZvciAoYXV0byBpbnRlcm5hbFNWR1JlZmVyZW5jZSA6IG1faW50ZXJuYWxTVkdSZWZlcmVuY2Vz
KQorICAgICAgICBkb3duY2FzdDxTVkdNYXNrRWxlbWVudD4oaW50ZXJuYWxTVkdSZWZlcmVuY2Uu
Z2V0KCkpLT5yZW1vdmVDbGllbnRSZW5kZXJMYXllcigmbV9sYXllcik7CisgICAgbV9pbnRlcm5h
bFNWR1JlZmVyZW5jZXMuY2xlYXIoKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyTWFza0ltYWdlSW5m
by5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyTWFza0ltYWdlSW5mby5o
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFkNTA3OWYKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJNYXNrSW1hZ2VJbmZv
LmgKQEAgLTAsMCArMSwxMDMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgQWRvYmUgU3lz
dGVtcyBJbmNvcnBvcmF0ZWQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUiAiQVMgSVMi
IEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQgSE9MREVSIEJFCisgKiBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksCisgKiBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SCisgKiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YKKyAq
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRgorICogU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBSZW5kZXJMYXllck1hc2tJ
bWFnZUluZm9faAorI2RlZmluZSBSZW5kZXJMYXllck1hc2tJbWFnZUluZm9faAorCisjaW5jbHVk
ZSAiQ2FjaGVkSW1hZ2VDbGllbnQuaCIKKyNpbmNsdWRlICJDYWNoZWRSZXNvdXJjZUhhbmRsZS5o
IgorI2luY2x1ZGUgIkNhY2hlZFNWR0RvY3VtZW50Q2xpZW50LmgiCisjaW5jbHVkZSAiTWFza0lt
YWdlT3BlcmF0aW9uLmgiCisjaW5jbHVkZSAiUmVuZGVyTGF5ZXIuaCIKKyNpbmNsdWRlIDxtZW1v
cnk+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgRWxlbWVudDsKKworY2xhc3MgUmVu
ZGVyTGF5ZXI6Ok1hc2tJbWFnZUluZm8gZmluYWwgeworcHJpdmF0ZToKKyAgICBjbGFzcyBNYXNr
UmVzb3VyY2VDbGllbnQgeworICAgIHB1YmxpYzoKKyAgICAgICAgTWFza1Jlc291cmNlQ2xpZW50
KFJlbmRlckxheWVyOjpNYXNrSW1hZ2VJbmZvKiBtYXNrSW1hZ2VJbmZvKQorICAgICAgICAgICAg
OiBtX21hc2tJbWFnZUluZm8obWFza0ltYWdlSW5mbykKKyAgICAgICAgeworICAgICAgICAgICAg
QVNTRVJUKG1fbWFza0ltYWdlSW5mbyk7CisgICAgICAgIH0KKyAgICBwcm90ZWN0ZWQ6CisgICAg
ICAgIFJlbmRlckxheWVyOjpNYXNrSW1hZ2VJbmZvKiBtX21hc2tJbWFnZUluZm87CisgICAgfTsK
KyAgICAKKyAgICBjbGFzcyBNYXNrU1ZHRG9jdW1lbnRDbGllbnQgOiBwdWJsaWMgTWFza1Jlc291
cmNlQ2xpZW50LCBwdWJsaWMgQ2FjaGVkU1ZHRG9jdW1lbnRDbGllbnQgeworICAgIHB1YmxpYzoK
KyAgICAgICAgTWFza1NWR0RvY3VtZW50Q2xpZW50KFJlbmRlckxheWVyOjpNYXNrSW1hZ2VJbmZv
KiBtYXNrSW1hZ2VJbmZvKQorICAgICAgICAgICAgOiBNYXNrUmVzb3VyY2VDbGllbnQobWFza0lt
YWdlSW5mbykKKyAgICAgICAgeworICAgICAgICB9CisgICAgICAgIAorICAgICAgICB2aXJ0dWFs
IHZvaWQgbm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UqIHJlc291cmNlKSBvdmVycmlkZSB7
IG1fbWFza0ltYWdlSW5mby0+bm90aWZ5RmluaXNoZWQocmVzb3VyY2UpOyB9CisgICAgfTsKKyAg
ICAKKyAgICBjbGFzcyBNYXNrSW1hZ2VDbGllbnQgOiBwdWJsaWMgTWFza1Jlc291cmNlQ2xpZW50
LCBwdWJsaWMgQ2FjaGVkSW1hZ2VDbGllbnQgeworICAgIHB1YmxpYzoKKyAgICAgICAgTWFza0lt
YWdlQ2xpZW50KFJlbmRlckxheWVyOjpNYXNrSW1hZ2VJbmZvKiBtYXNrSW1hZ2VJbmZvKQorICAg
ICAgICAgICAgOiBNYXNrUmVzb3VyY2VDbGllbnQobWFza0ltYWdlSW5mbykKKyAgICAgICAgewor
ICAgICAgICB9CisgICAgICAgIAorICAgICAgICB2aXJ0dWFsIHZvaWQgaW1hZ2VDaGFuZ2VkKENh
Y2hlZEltYWdlKiBpbWFnZSwgY29uc3QgSW50UmVjdCogcmVjdCA9IG51bGxwdHIpIG92ZXJyaWRl
IHsgbV9tYXNrSW1hZ2VJbmZvLT5pbWFnZUNoYW5nZWQoaW1hZ2UsIHJlY3QpOyB9CisgICAgfTsK
KworcHVibGljOgorICAgIHN0YXRpYyBNYXNrSW1hZ2VJbmZvJiBnZXQoUmVuZGVyTGF5ZXImKTsK
KyAgICBzdGF0aWMgTWFza0ltYWdlSW5mbyogZ2V0SWZFeGlzdHMoY29uc3QgUmVuZGVyTGF5ZXIm
KTsKKyAgICBzdGF0aWMgdm9pZCByZW1vdmUoUmVuZGVyTGF5ZXImKTsKKworICAgIGV4cGxpY2l0
IE1hc2tJbWFnZUluZm8oUmVuZGVyTGF5ZXImKTsKKyAgICB+TWFza0ltYWdlSW5mbygpOworCisg
ICAgdm9pZCB1cGRhdGVNYXNrSW1hZ2VDbGllbnRzKCk7CisgICAgdm9pZCByZW1vdmVNYXNrSW1h
Z2VDbGllbnRzKCk7CisKK3ByaXZhdGU6CisgICAgZnJpZW5kIHZvaWQgV1RGOjpkZWxldGVPd25l
ZFB0cjxNYXNrSW1hZ2VJbmZvPihNYXNrSW1hZ2VJbmZvKik7CisKKyAgICB2b2lkIG5vdGlmeUZp
bmlzaGVkKENhY2hlZFJlc291cmNlKik7CisgICAgdm9pZCBpbWFnZUNoYW5nZWQoQ2FjaGVkSW1h
Z2UqLCBjb25zdCBJbnRSZWN0Kik7CisKKyAgICBzdGF0aWMgSGFzaE1hcDxjb25zdCBSZW5kZXJM
YXllciosIHN0ZDo6dW5pcXVlX3B0cjxNYXNrSW1hZ2VJbmZvPj4mIGxheWVyVG9NYXNrTWFwKCk7
CisKKyAgICBSZW5kZXJMYXllciYgbV9sYXllcjsKKworICAgIFZlY3RvcjxSZWZQdHI8RWxlbWVu
dD4+IG1faW50ZXJuYWxTVkdSZWZlcmVuY2VzOworICAgIFZlY3RvcjxDYWNoZWRSZXNvdXJjZUhh
bmRsZTxDYWNoZWRTVkdEb2N1bWVudD4+IG1fZXh0ZXJuYWxTVkdSZWZlcmVuY2VzOworICAgIHN0
ZDo6dW5pcXVlX3B0cjxNYXNrU1ZHRG9jdW1lbnRDbGllbnQ+IG1fc3ZnRG9jdW1lbnRDbGllbnQ7
CisgICAgc3RkOjp1bmlxdWVfcHRyPE1hc2tJbWFnZUNsaWVudD4gbV9pbWFnZUNsaWVudDsKK307
CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIFJlbmRlckxheWVyTWFza0lt
YWdlSW5mb19oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvRmls
bExheWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9GaWxsTGF5ZXIuY3Bw
CmluZGV4IGI5MWZiZTcuLjgyZDkzNjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdHlsZS9GaWxsTGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dHlsZS9GaWxsTGF5ZXIuY3BwCkBAIC0yOCw2ICsyOCw3IEBAIHN0cnVjdCBTYW1lU2l6ZUFzRmls
bExheWVyIHsKICAgICBGaWxsTGF5ZXIqIG5leHQ7CiAKICAgICBSZWZQdHI8U3R5bGVJbWFnZT4g
aW1hZ2U7CisgICAgUmVmUHRyPE1hc2tJbWFnZU9wZXJhdGlvbj4gbWFza0ltYWdlT3BlcmF0aW9u
OwogCiAgICAgTGVuZ3RoIHg7CiAgICAgTGVuZ3RoIHk7CkBAIC03NCw2ICs3NSw3IEBAIEZpbGxM
YXllcjo6RmlsbExheWVyKEVGaWxsTGF5ZXJUeXBlIHR5cGUpCiAKIEZpbGxMYXllcjo6RmlsbExh
eWVyKGNvbnN0IEZpbGxMYXllciYgbykKICAgICA6IG1fbmV4dChvLm1fbmV4dCA/IHN0ZDo6bWFr
ZV91bmlxdWU8RmlsbExheWVyPigqby5tX25leHQpIDogbnVsbHB0cikKKyAgICAsIG1fbWFza0lt
YWdlT3BlcmF0aW9uKG8ubV9tYXNrSW1hZ2VPcGVyYXRpb24pCiAgICAgLCBtX2ltYWdlKG8ubV9p
bWFnZSkKICAgICAsIG1feFBvc2l0aW9uKG8ubV94UG9zaXRpb24pCiAgICAgLCBtX3lQb3NpdGlv
bihvLm1feVBvc2l0aW9uKQpAQCAtMTE2LDYgKzExOCw3IEBAIEZpbGxMYXllciYgRmlsbExheWVy
OjpvcGVyYXRvcj0oY29uc3QgRmlsbExheWVyJiBvKQogICAgIG1fbmV4dCA9IG8ubV9uZXh0ID8g
c3RkOjptYWtlX3VuaXF1ZTxGaWxsTGF5ZXI+KCpvLm1fbmV4dCkgOiBudWxscHRyOwogCiAgICAg
bV9pbWFnZSA9IG8ubV9pbWFnZTsKKyAgICBtX21hc2tJbWFnZU9wZXJhdGlvbiA9IG8ubV9tYXNr
SW1hZ2VPcGVyYXRpb247CiAgICAgbV94UG9zaXRpb24gPSBvLm1feFBvc2l0aW9uOwogICAgIG1f
eVBvc2l0aW9uID0gby5tX3lQb3NpdGlvbjsKICAgICBtX2JhY2tncm91bmRYT3JpZ2luID0gby5t
X2JhY2tncm91bmRYT3JpZ2luOwpAQCAtMTUzLDcgKzE1Niw4IEBAIGJvb2wgRmlsbExheWVyOjpv
cGVyYXRvcj09KGNvbnN0IEZpbGxMYXllciYgbykgY29uc3QKIHsKICAgICAvLyBXZSBkbyBub3Qg
Y2hlY2sgdGhlICJpc1NldCIgYm9vbGVhbnMgZm9yIGVhY2ggcHJvcGVydHksIHNpbmNlIHRob3Nl
IGFyZSBvbmx5IHVzZWQgZHVyaW5nIGluaXRpYWwgY29uc3RydWN0aW9uCiAgICAgLy8gdG8gcHJv
cGFnYXRlIHBhdHRlcm5zIGludG8gbGF5ZXJzLiBBbGwgbGF5ZXIgY29tcGFyaXNvbnMgaGFwcGVu
IGFmdGVyIHZhbHVlcyBoYXZlIGFsbCBiZWVuIGZpbGxlZCBpbiBhbnl3YXkuCi0gICAgcmV0dXJu
IFN0eWxlSW1hZ2U6OmltYWdlc0VxdWl2YWxlbnQobV9pbWFnZS5nZXQoKSwgby5tX2ltYWdlLmdl
dCgpKSAmJiBtX3hQb3NpdGlvbiA9PSBvLm1feFBvc2l0aW9uICYmIG1feVBvc2l0aW9uID09IG8u
bV95UG9zaXRpb24KKyAgICByZXR1cm4gU3R5bGVJbWFnZTo6aW1hZ2VzRXF1aXZhbGVudChtX2lt
YWdlLmdldCgpLCBvLm1faW1hZ2UuZ2V0KCkpICYmIG1fbWFza0ltYWdlT3BlcmF0aW9uID09IG8u
bV9tYXNrSW1hZ2VPcGVyYXRpb24KKyAgICAgICAgJiYgbV94UG9zaXRpb24gPT0gby5tX3hQb3Np
dGlvbiAmJiBtX3lQb3NpdGlvbiA9PSBvLm1feVBvc2l0aW9uCiAgICAgICAgICYmIG1fYmFja2dy
b3VuZFhPcmlnaW4gPT0gby5tX2JhY2tncm91bmRYT3JpZ2luICYmIG1fYmFja2dyb3VuZFlPcmln
aW4gPT0gby5tX2JhY2tncm91bmRZT3JpZ2luCiAgICAgICAgICYmIG1fYXR0YWNobWVudCA9PSBv
Lm1fYXR0YWNobWVudCAmJiBtX2NsaXAgPT0gby5tX2NsaXAgJiYgbV9jb21wb3NpdGUgPT0gby5t
X2NvbXBvc2l0ZQogICAgICAgICAmJiBtX2JsZW5kTW9kZSA9PSBvLm1fYmxlbmRNb2RlICYmIG1f
b3JpZ2luID09IG8ubV9vcmlnaW4gJiYgbV9yZXBlYXRYID09IG8ubV9yZXBlYXRYCkBAIC0yODgs
MTMgKzI5MiwyMSBAQCB2b2lkIEZpbGxMYXllcjo6ZmlsbFVuc2V0UHJvcGVydGllcygpCiB2b2lk
IEZpbGxMYXllcjo6Y3VsbEVtcHR5TGF5ZXJzKCkKIHsKICAgICBmb3IgKEZpbGxMYXllciogbGF5
ZXIgPSB0aGlzOyBsYXllcjsgbGF5ZXIgPSBsYXllci0+bV9uZXh0LmdldCgpKSB7Ci0gICAgICAg
IGlmIChsYXllci0+bV9uZXh0ICYmICFsYXllci0+bV9uZXh0LT5pc0ltYWdlU2V0KCkpIHsKKyAg
ICAgICAgaWYgKGxheWVyLT5tX25leHQgJiYgIWxheWVyLT5tX25leHQtPmlzSW1hZ2VTZXQoKSAm
JiAhbGF5ZXItPm1fbmV4dC0+aGFzTWFza0ltYWdlKCkpIHsKICAgICAgICAgICAgIGxheWVyLT5t
X25leHQgPSBudWxscHRyOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICB9CiB9
CiAKK2Jvb2wgRmlsbExheWVyOjpoYXNOb25FbXB0eU1hc2tJbWFnZSgpIGNvbnN0Cit7CisgICAg
aWYgKGhhc01hc2tJbWFnZSgpICYmICFtYXNrSW1hZ2UoKS0+aXNDU1NWYWx1ZU5vbmUoKSkKKyAg
ICAgICAgcmV0dXJuIHRydWU7CisgICAgCisgICAgcmV0dXJuIChuZXh0KCkgPyBuZXh0KCktPmhh
c05vbkVtcHR5TWFza0ltYWdlKCkgOiBmYWxzZSk7Cit9CisKIHN0YXRpYyBpbmxpbmUgRUZpbGxC
b3ggY2xpcE1heChFRmlsbEJveCBjbGlwQSwgRUZpbGxCb3ggY2xpcEIpCiB7CiAgICAgaWYgKGNs
aXBBID09IEJvcmRlckZpbGxCb3ggfHwgY2xpcEIgPT0gQm9yZGVyRmlsbEJveCkKQEAgLTM0MCw2
ICszNTIsOSBAQCBib29sIEZpbGxMYXllcjo6aW1hZ2VzQXJlTG9hZGVkKCkgY29uc3QKICAgICBm
b3IgKGF1dG8qIGxheWVyID0gdGhpczsgbGF5ZXI7IGxheWVyID0gbGF5ZXItPm1fbmV4dC5nZXQo
KSkgewogICAgICAgICBpZiAobGF5ZXItPm1faW1hZ2UgJiYgIWxheWVyLT5tX2ltYWdlLT5pc0xv
YWRlZCgpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAKKyAgICAgICAgaWYg
KGxheWVyLT5oYXNNYXNrSW1hZ2UoKSAmJiAhbGF5ZXItPm1hc2tJbWFnZSgpLT5pc01hc2tMb2Fk
ZWQoKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAgICAgcmV0dXJuIHRydWU7
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvRmlsbExheWVy
LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvRmlsbExheWVyLmgKaW5kZXggOWJl
YjdiZi4uZGY0NDg3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxl
L0ZpbGxMYXllci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9GaWxsTGF5
ZXIuaApAQCAtMjcsNiArMjcsNyBAQAogCiAjaW5jbHVkZSAiR3JhcGhpY3NUeXBlcy5oIgogI2lu
Y2x1ZGUgIkxlbmd0aFNpemUuaCIKKyNpbmNsdWRlICJNYXNrSW1hZ2VPcGVyYXRpb24uaCIKICNp
bmNsdWRlICJSZW5kZXJTdHlsZUNvbnN0YW50cy5oIgogI2luY2x1ZGUgIlN0eWxlSW1hZ2UuaCIK
ICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CkBAIC02Nyw3ICs2OCw5IEBAIHB1YmxpYzoKICAgICBl
eHBsaWNpdCBGaWxsTGF5ZXIoRUZpbGxMYXllclR5cGUpOwogICAgIH5GaWxsTGF5ZXIoKTsKIAor
ICAgIGNvbnN0IFJlZlB0cjxNYXNrSW1hZ2VPcGVyYXRpb24+JiBtYXNrSW1hZ2UoKSBjb25zdCB7
IHJldHVybiBtX21hc2tJbWFnZU9wZXJhdGlvbjsgfQogICAgIFN0eWxlSW1hZ2UqIGltYWdlKCkg
Y29uc3QgeyByZXR1cm4gbV9pbWFnZS5nZXQoKTsgfQorICAgIFN0eWxlSW1hZ2UqIGltYWdlT3JN
YXNrSW1hZ2UoKSBjb25zdCB7IHJldHVybiBoYXNNYXNrSW1hZ2UoKSA/IG1hc2tJbWFnZSgpLT5p
bWFnZSgpIDogaW1hZ2UoKTsgfQogICAgIGNvbnN0IExlbmd0aCYgeFBvc2l0aW9uKCkgY29uc3Qg
eyByZXR1cm4gbV94UG9zaXRpb247IH0KICAgICBjb25zdCBMZW5ndGgmIHlQb3NpdGlvbigpIGNv
bnN0IHsgcmV0dXJuIG1feVBvc2l0aW9uOyB9CiAgICAgQmFja2dyb3VuZEVkZ2VPcmlnaW4gYmFj
a2dyb3VuZFhPcmlnaW4oKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxCYWNrZ3JvdW5kRWRn
ZU9yaWdpbj4obV9iYWNrZ3JvdW5kWE9yaWdpbik7IH0KQEAgLTEwMSw2ICsxMDQsNyBAQCBwdWJs
aWM6CiAgICAgYm9vbCBpc1NpemVTZXQoKSBjb25zdCB7IHJldHVybiBtX3NpemVUeXBlICE9IFNp
emVOb25lOyB9CiAgICAgYm9vbCBpc01hc2tTb3VyY2VUeXBlU2V0KCkgY29uc3QgeyByZXR1cm4g
bV9tYXNrU291cmNlVHlwZVNldDsgfQogCisgICAgdm9pZCBzZXRNYXNrSW1hZ2UoUGFzc1JlZlB0
cjxNYXNrSW1hZ2VPcGVyYXRpb24+IG1hc2tJbWFnZSkgeyBtX21hc2tJbWFnZU9wZXJhdGlvbiA9
IG1hc2tJbWFnZTsgfQogICAgIHZvaWQgc2V0SW1hZ2UoUGFzc1JlZlB0cjxTdHlsZUltYWdlPiBp
bWFnZSkgeyBtX2ltYWdlID0gaW1hZ2U7IG1faW1hZ2VTZXQgPSB0cnVlOyB9CiAgICAgdm9pZCBz
ZXRYUG9zaXRpb24oTGVuZ3RoIGxlbmd0aCkgeyBtX3hQb3NpdGlvbiA9IFdURjo6bW92ZShsZW5n
dGgpOyBtX3hQb3NTZXQgPSB0cnVlOyB9CiAgICAgdm9pZCBzZXRZUG9zaXRpb24oTGVuZ3RoIGxl
bmd0aCkgeyBtX3lQb3NpdGlvbiA9IFdURjo6bW92ZShsZW5ndGgpOyBtX3lQb3NTZXQgPSB0cnVl
OyB9CkBAIC0xMTgsNiArMTIyLDcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0U2l6ZShGaWxsU2l6
ZSBmKSB7IG1fc2l6ZVR5cGUgPSBmLnR5cGU7IG1fc2l6ZUxlbmd0aCA9IGYuc2l6ZTsgfQogICAg
IHZvaWQgc2V0TWFza1NvdXJjZVR5cGUoRU1hc2tTb3VyY2VUeXBlIG0pIHsgbV9tYXNrU291cmNl
VHlwZSA9IG07IG1fbWFza1NvdXJjZVR5cGVTZXQgPSB0cnVlOyB9CiAKKyAgICB2b2lkIGNsZWFy
TWFza0ltYWdlKCkgeyBtX21hc2tJbWFnZU9wZXJhdGlvbi5jbGVhcigpOyB9CiAgICAgdm9pZCBj
bGVhckltYWdlKCkgeyBtX2ltYWdlLmNsZWFyKCk7IG1faW1hZ2VTZXQgPSBmYWxzZTsgfQogICAg
IHZvaWQgY2xlYXJYUG9zaXRpb24oKSB7IG1feFBvc1NldCA9IGZhbHNlOyBtX2JhY2tncm91bmRP
cmlnaW5TZXQgPSBmYWxzZTsgfQogICAgIHZvaWQgY2xlYXJZUG9zaXRpb24oKSB7IG1feVBvc1Nl
dCA9IGZhbHNlOyBtX2JhY2tncm91bmRPcmlnaW5TZXQgPSBmYWxzZTsgfQpAQCAtMTQzLDYgKzE0
OCw4IEBAIHB1YmxpYzoKICAgICBib29sIGNvbnRhaW5zSW1hZ2UoU3R5bGVJbWFnZSYpIGNvbnN0
OwogICAgIGJvb2wgaW1hZ2VzQXJlTG9hZGVkKCkgY29uc3Q7CiAgICAgYm9vbCBoYXNJbWFnZSgp
IGNvbnN0OworICAgIGJvb2wgaGFzTWFza0ltYWdlKCkgY29uc3QgeyByZXR1cm4gbWFza0ltYWdl
KCkuZ2V0KCk7IH0KKyAgICBib29sIGhhc05vbkVtcHR5TWFza0ltYWdlKCkgY29uc3Q7CiAgICAg
Ym9vbCBoYXNGaXhlZEltYWdlKCkgY29uc3Q7CiAgICAgYm9vbCBoYXNPcGFxdWVJbWFnZShjb25z
dCBSZW5kZXJFbGVtZW50JikgY29uc3Q7CiAgICAgYm9vbCBoYXNSZXBlYXRYWSgpIGNvbnN0OwpA
QCAtMTc1LDYgKzE4Miw3IEBAIHByaXZhdGU6CiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8RmlsbExh
eWVyPiBtX25leHQ7CiAKKyAgICBSZWZQdHI8TWFza0ltYWdlT3BlcmF0aW9uPiBtX21hc2tJbWFn
ZU9wZXJhdGlvbjsKICAgICBSZWZQdHI8U3R5bGVJbWFnZT4gbV9pbWFnZTsKIAogICAgIExlbmd0
aCBtX3hQb3NpdGlvbjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcv
UmVuZGVyU1ZHUmVzb3VyY2VNYXNrZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2
Zy9SZW5kZXJTVkdSZXNvdXJjZU1hc2tlci5jcHAKaW5kZXggMzdmMmMwOS4uMTBiYzBhYiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZU1h
c2tlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNv
dXJjZU1hc2tlci5jcHAKQEAgLTI1LDYgKzI1LDcgQEAKICNpbmNsdWRlICJGbG9hdFBvaW50Lmgi
CiAjaW5jbHVkZSAiSW1hZ2UuaCIKICNpbmNsdWRlICJJbnRSZWN0LmgiCisjaW5jbHVkZSAiUmVu
ZGVyQm94TW9kZWxPYmplY3QuaCIKICNpbmNsdWRlICJTVkdSZW5kZXJpbmdDb250ZXh0LmgiCiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTUzLDEwICs1NCw5IEBAIHZvaWQgUmVuZGVyU1ZHUmVz
b3VyY2VNYXNrZXI6OnJlbW92ZUNsaWVudEZyb21DYWNoZShSZW5kZXJFbGVtZW50JiBjbGllbnQs
IGJvb2wKICAgICBtYXJrQ2xpZW50Rm9ySW52YWxpZGF0aW9uKGNsaWVudCwgbWFya0ZvckludmFs
aWRhdGlvbiA/IEJvdW5kYXJpZXNJbnZhbGlkYXRpb24gOiBQYXJlbnRPbmx5SW52YWxpZGF0aW9u
KTsKIH0KIAotYm9vbCBSZW5kZXJTVkdSZXNvdXJjZU1hc2tlcjo6YXBwbHlSZXNvdXJjZShSZW5k
ZXJFbGVtZW50JiByZW5kZXJlciwgY29uc3QgUmVuZGVyU3R5bGUmLCBHcmFwaGljc0NvbnRleHQq
JiBjb250ZXh0LCB1bnNpZ25lZCBzaG9ydCByZXNvdXJjZU1vZGUpCitib29sIFJlbmRlclNWR1Jl
c291cmNlTWFza2VyOjphcHBseVNWR01hc2soUmVuZGVyRWxlbWVudCYgcmVuZGVyZXIsIEdyYXBo
aWNzQ29udGV4dComIGNvbnRleHQsIGJvb2wgYXBwbHlDbGlwKQogewogICAgIEFTU0VSVChjb250
ZXh0KTsKLSAgICBBU1NFUlRfVU5VU0VEKHJlc291cmNlTW9kZSwgcmVzb3VyY2VNb2RlID09IEFw
cGx5VG9EZWZhdWx0TW9kZSk7CiAKICAgICBib29sIG1pc3NpbmdNYXNrZXJEYXRhID0gIW1fbWFz
a2VyLmNvbnRhaW5zKCZyZW5kZXJlcik7CiAgICAgaWYgKG1pc3NpbmdNYXNrZXJEYXRhKQpAQCAt
NzUsMTggKzc1LDI1IEBAIGJvb2wgUmVuZGVyU1ZHUmVzb3VyY2VNYXNrZXI6OmFwcGx5UmVzb3Vy
Y2UoUmVuZGVyRWxlbWVudCYgcmVuZGVyZXIsIGNvbnN0IFJlbmRlCiAgICAgICAgIGlmICghU1ZH
UmVuZGVyaW5nQ29udGV4dDo6Y3JlYXRlSW1hZ2VCdWZmZXIocmVwYWludFJlY3QsIGFic29sdXRl
VHJhbnNmb3JtLCBtYXNrZXJEYXRhLT5tYXNrSW1hZ2UsIGNvbG9yU3BhY2UsIFVuYWNjZWxlcmF0
ZWQpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgICAgIGlmICghZHJhd0NvbnRl
bnRJbnRvTWFza0ltYWdlKG1hc2tlckRhdGEsIGNvbG9yU3BhY2UsICZyZW5kZXJlcikpIHsKKyAg
ICAgICAgaWYgKCFkcmF3Q29udGVudEludG9NYXNrSW1hZ2UobWFza2VyRGF0YSwgY29sb3JTcGFj
ZSwgJnJlbmRlcmVyKSkKICAgICAgICAgICAgIG1hc2tlckRhdGEtPm1hc2tJbWFnZS5yZXNldCgp
OwotICAgICAgICB9CiAgICAgfQogCiAgICAgaWYgKCFtYXNrZXJEYXRhLT5tYXNrSW1hZ2UpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIFNWR1JlbmRlcmluZ0NvbnRleHQ6OmNsaXBUb0lt
YWdlQnVmZmVyKGNvbnRleHQsIGFic29sdXRlVHJhbnNmb3JtLCByZXBhaW50UmVjdCwgbWFza2Vy
RGF0YS0+bWFza0ltYWdlLCBtaXNzaW5nTWFza2VyRGF0YSk7CisgICAgaWYgKGFwcGx5Q2xpcCkK
KyAgICAgICAgU1ZHUmVuZGVyaW5nQ29udGV4dDo6Y2xpcFRvSW1hZ2VCdWZmZXIoY29udGV4dCwg
YWJzb2x1dGVUcmFuc2Zvcm0sIHJlcGFpbnRSZWN0LCBtYXNrZXJEYXRhLT5tYXNrSW1hZ2UsIG1p
c3NpbmdNYXNrZXJEYXRhKTsKKwogICAgIHJldHVybiB0cnVlOwogfQogCitib29sIFJlbmRlclNW
R1Jlc291cmNlTWFza2VyOjphcHBseVJlc291cmNlKFJlbmRlckVsZW1lbnQmIHJlbmRlcmVyLCBj
b25zdCBSZW5kZXJTdHlsZSYsIEdyYXBoaWNzQ29udGV4dComIGNvbnRleHQsIHVuc2lnbmVkIHNo
b3J0IHJlc291cmNlTW9kZSkKK3sKKyAgICBBU1NFUlRfVU5VU0VEKHJlc291cmNlTW9kZSwgcmVz
b3VyY2VNb2RlID09IEFwcGx5VG9EZWZhdWx0TW9kZSk7CisgICAgcmV0dXJuIGFwcGx5U1ZHTWFz
ayhyZW5kZXJlciwgY29udGV4dCwgdHJ1ZSk7Cit9CisKIGJvb2wgUmVuZGVyU1ZHUmVzb3VyY2VN
YXNrZXI6OmRyYXdDb250ZW50SW50b01hc2tJbWFnZShNYXNrZXJEYXRhKiBtYXNrZXJEYXRhLCBD
b2xvclNwYWNlIGNvbG9yU3BhY2UsIFJlbmRlck9iamVjdCogb2JqZWN0KQogewogICAgIEdyYXBo
aWNzQ29udGV4dCogbWFza0ltYWdlQ29udGV4dCA9IG1hc2tlckRhdGEtPm1hc2tJbWFnZS0+Y29u
dGV4dCgpOwpAQCAtMTI3LDYgKzEzNCwzNCBAQCBib29sIFJlbmRlclNWR1Jlc291cmNlTWFza2Vy
OjpkcmF3Q29udGVudEludG9NYXNrSW1hZ2UoTWFza2VyRGF0YSogbWFza2VyRGF0YSwgQwogICAg
IHJldHVybiB0cnVlOwogfQogCit2b2lkIFJlbmRlclNWR1Jlc291cmNlTWFza2VyOjpkcmF3TWFz
a0ZvclJlbmRlcmVyKFJlbmRlckVsZW1lbnQmIHJlbmRlcmVyLCBjb25zdCBCYWNrZ3JvdW5kSW1h
Z2VHZW9tZXRyeSYgZ2VvbWV0cnksIEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgQ29tcG9zaXRl
T3BlcmF0b3IgY29tcG9zaXRlT3ApCit7CisgICAgaWYgKGNvbnRleHQtPnBhaW50aW5nRGlzYWJs
ZWQoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKCFhcHBseVNWR01hc2socmVuZGVyZXIs
IGNvbnRleHQsIGZhbHNlKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgTWFza2VyRGF0YSogbWFz
a2VyRGF0YSA9IG1hc2tlckRhdGFGb3JSZW5kZXJlcihyZW5kZXJlcik7CisgICAgQVNTRVJUKG1h
c2tlckRhdGEpOworCisgICAgRmxvYXRSZWN0IG9uZVRpbGVSZWN0OworICAgIEZsb2F0U2l6ZSBh
Y3R1YWxUaWxlU2l6ZShnZW9tZXRyeS50aWxlU2l6ZSgpLndpZHRoKCkgKyBnZW9tZXRyeS5zcGFj
ZVNpemUoKS53aWR0aCgpLCBnZW9tZXRyeS50aWxlU2l6ZSgpLmhlaWdodCgpICsgZ2VvbWV0cnku
c3BhY2VTaXplKCkuaGVpZ2h0KCkpOworICAgIG9uZVRpbGVSZWN0LnNldFgoZ2VvbWV0cnkuZGVz
dFJlY3QoKS54KCkgKyBmbW9kZihmbW9kZigtZ2VvbWV0cnkucmVsYXRpdmVQaGFzZSgpLngoKSwg
YWN0dWFsVGlsZVNpemUud2lkdGgoKSkgLSBhY3R1YWxUaWxlU2l6ZS53aWR0aCgpLCBhY3R1YWxU
aWxlU2l6ZS53aWR0aCgpKSk7CisgICAgb25lVGlsZVJlY3Quc2V0WShnZW9tZXRyeS5kZXN0UmVj
dCgpLnkoKSArIGZtb2RmKGZtb2RmKC1nZW9tZXRyeS5yZWxhdGl2ZVBoYXNlKCkueSgpLCBhY3R1
YWxUaWxlU2l6ZS5oZWlnaHQoKSkgLSBhY3R1YWxUaWxlU2l6ZS5oZWlnaHQoKSwgYWN0dWFsVGls
ZVNpemUuaGVpZ2h0KCkpKTsKKyAgICBvbmVUaWxlUmVjdC5zZXRTaXplKGdlb21ldHJ5LnRpbGVT
aXplKCkpOworICAgIAorICAgIEZsb2F0U2l6ZSBpbnRyaW5zaWNUaWxlU2l6ZSA9IG1hc2tlckRh
dGEtPm1hc2tJbWFnZS0+bG9naWNhbFNpemUoKTsKKyAgICBGbG9hdFNpemUgc2NhbGUoZ2VvbWV0
cnkudGlsZVNpemUoKS53aWR0aCgpIC8gaW50cmluc2ljVGlsZVNpemUud2lkdGgoKSwgZ2VvbWV0
cnkudGlsZVNpemUoKS5oZWlnaHQoKSAvIGludHJpbnNpY1RpbGVTaXplLmhlaWdodCgpKTsKKyAg
ICAKKyAgICBGbG9hdFJlY3QgdmlzaWJsZVNyY1JlY3Q7CisgICAgdmlzaWJsZVNyY1JlY3Quc2V0
WCgoZ2VvbWV0cnkuZGVzdFJlY3QoKS54KCkgLSBvbmVUaWxlUmVjdC54KCkpIC8gc2NhbGUud2lk
dGgoKSk7CisgICAgdmlzaWJsZVNyY1JlY3Quc2V0WSgoZ2VvbWV0cnkuZGVzdFJlY3QoKS55KCkg
LSBvbmVUaWxlUmVjdC55KCkpIC8gc2NhbGUuaGVpZ2h0KCkpOworICAgIHZpc2libGVTcmNSZWN0
LnNldFdpZHRoKGdlb21ldHJ5LmRlc3RSZWN0KCkud2lkdGgoKSAvIHNjYWxlLndpZHRoKCkpOwor
ICAgIHZpc2libGVTcmNSZWN0LnNldEhlaWdodChnZW9tZXRyeS5kZXN0UmVjdCgpLmhlaWdodCgp
IC8gc2NhbGUuaGVpZ2h0KCkpOworICAgIGNvbnRleHQtPmRyYXdJbWFnZUJ1ZmZlcihtYXNrZXJE
YXRhLT5tYXNrSW1hZ2UuZ2V0KCksIENvbG9yU3BhY2VEZXZpY2VSR0IsIGdlb21ldHJ5LmRlc3RS
ZWN0KCksIHZpc2libGVTcmNSZWN0LCBjb21wb3NpdGVPcCk7Cit9CisKIHZvaWQgUmVuZGVyU1ZH
UmVzb3VyY2VNYXNrZXI6OmNhbGN1bGF0ZU1hc2tDb250ZW50UmVwYWludFJlY3QoKQogewogICAg
IGZvciAoTm9kZSogY2hpbGROb2RlID0gbWFza0VsZW1lbnQoKS5maXJzdENoaWxkKCk7IGNoaWxk
Tm9kZTsgY2hpbGROb2RlID0gY2hpbGROb2RlLT5uZXh0U2libGluZygpKSB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlTWFza2VyLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlTWFza2VyLmgK
aW5kZXggYTFmZmIzZjQuLjdjZDc0ZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VNYXNrZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlTWFza2VyLmgKQEAgLTQ1LDYgKzQ1LDcgQEAg
cHVibGljOgogICAgIHZpcnR1YWwgdm9pZCByZW1vdmVBbGxDbGllbnRzRnJvbUNhY2hlKGJvb2wg
bWFya0ZvckludmFsaWRhdGlvbiA9IHRydWUpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBy
ZW1vdmVDbGllbnRGcm9tQ2FjaGUoUmVuZGVyRWxlbWVudCYsIGJvb2wgbWFya0ZvckludmFsaWRh
dGlvbiA9IHRydWUpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgYm9vbCBhcHBseVJlc291cmNlKFJl
bmRlckVsZW1lbnQmLCBjb25zdCBSZW5kZXJTdHlsZSYsIEdyYXBoaWNzQ29udGV4dComLCB1bnNp
Z25lZCBzaG9ydCByZXNvdXJjZU1vZGUpIG92ZXJyaWRlOworICAgIGJvb2wgYXBwbHlTVkdNYXNr
KFJlbmRlckVsZW1lbnQmIHJlbmRlcmVyLCBHcmFwaGljc0NvbnRleHQqJiwgYm9vbCBhcHBseUNs
aXApOwogICAgIHZpcnR1YWwgRmxvYXRSZWN0IHJlc291cmNlQm91bmRpbmdCb3goY29uc3QgUmVu
ZGVyT2JqZWN0Jikgb3ZlcnJpZGU7CiAKICAgICBTVkdVbml0VHlwZXM6OlNWR1VuaXRUeXBlIG1h
c2tVbml0cygpIGNvbnN0IHsgcmV0dXJuIG1hc2tFbGVtZW50KCkubWFza1VuaXRzKCk7IH0KQEAg
LTUyLDYgKzUzLDkgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCBSZW5kZXJTVkdSZXNvdXJjZVR5
cGUgcmVzb3VyY2VUeXBlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gTWFza2VyUmVzb3VyY2VU
eXBlOyB9CiAKKyAgICBNYXNrZXJEYXRhKiBtYXNrZXJEYXRhRm9yUmVuZGVyZXIoUmVuZGVyT2Jq
ZWN0JiByZW5kZXJlcikgeyByZXR1cm4gbV9tYXNrZXIuZ2V0KCZyZW5kZXJlcik7IH0KKyAgICB2
b2lkIGRyYXdNYXNrRm9yUmVuZGVyZXIoUmVuZGVyRWxlbWVudCYgcmVuZGVyZXIsIGNvbnN0IEJh
Y2tncm91bmRJbWFnZUdlb21ldHJ5JiwgR3JhcGhpY3NDb250ZXh0KiwgQ29tcG9zaXRlT3BlcmF0
b3IpOworCiBwcml2YXRlOgogICAgIHZvaWQgZWxlbWVudCgpIGNvbnN0ID0gZGVsZXRlOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTWFza0VsZW1lbnQuY3BwIGIvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR01hc2tFbGVtZW50LmNwcAppbmRleCA0MzFmMjZhLi42ZjYyOTFlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTWFza0VsZW1lbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdNYXNrRWxlbWVudC5jcHAKQEAgLTE2MSw3ICsxNjEsMzMgQEAg
dm9pZCBTVkdNYXNrRWxlbWVudDo6Y2hpbGRyZW5DaGFuZ2VkKGNvbnN0IENoaWxkQ2hhbmdlJiBj
aGFuZ2UpCiAKIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBTVkdNYXNrRWxlbWVudDo6Y3JlYXRl
RWxlbWVudFJlbmRlcmVyKFBhc3NSZWY8UmVuZGVyU3R5bGU+IHN0eWxlKQogewotICAgIHJldHVy
biBjcmVhdGVSZW5kZXJlcjxSZW5kZXJTVkdSZXNvdXJjZU1hc2tlcj4oKnRoaXMsIFdURjo6bW92
ZShzdHlsZSkpOworICAgIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBtYXNrUmVuZGVyZXIgPSBj
cmVhdGVSZW5kZXJlcjxSZW5kZXJTVkdSZXNvdXJjZU1hc2tlcj4oKnRoaXMsIFdURjo6bW92ZShz
dHlsZSkpOworICAgIAorICAgIC8vIFBhc3MgYWxvbmcgZXhpc3RpbmcgcmVuZGVyIGxheWVyIGNs
aWVudHMuCisgICAgZm9yIChhdXRvKiBjbGllbnRMYXllciA6IG1fY2xpZW50TGF5ZXJzKQorICAg
ICAgICBzdGF0aWNfY2FzdDxSZW5kZXJTVkdSZXNvdXJjZU1hc2tlcio+KG1hc2tSZW5kZXJlci5n
ZXQoKSktPmFkZENsaWVudFJlbmRlckxheWVyKGNsaWVudExheWVyKTsKKyAgICAKKyAgICByZXR1
cm4gbWFza1JlbmRlcmVyOworfQorCit2b2lkIFNWR01hc2tFbGVtZW50OjphZGRDbGllbnRSZW5k
ZXJMYXllcihSZW5kZXJMYXllciogY2xpZW50KQoreworICAgIEFTU0VSVChjbGllbnQpOworICAg
IG1fY2xpZW50TGF5ZXJzLmFkZChjbGllbnQpOworICAgIAorICAgIC8vIFBhc3MgaXQgYWxvbmcg
dG8gdGhlIHJlbmRlcmVyLgorICAgIGlmIChyZW5kZXJlcigpKQorICAgICAgICBzdGF0aWNfY2Fz
dDxSZW5kZXJTVkdSZXNvdXJjZU1hc2tlcio+KHJlbmRlcmVyKCkpLT5hZGRDbGllbnRSZW5kZXJM
YXllcihjbGllbnQpOworfQorCit2b2lkIFNWR01hc2tFbGVtZW50OjpyZW1vdmVDbGllbnRSZW5k
ZXJMYXllcihSZW5kZXJMYXllciogY2xpZW50KQoreworICAgIEFTU0VSVChjbGllbnQpOworICAg
IG1fY2xpZW50TGF5ZXJzLnJlbW92ZShjbGllbnQpOworICAgIAorICAgIC8vIFBhc3MgaXQgYWxv
bmcgdG8gdGhlIHJlbmRlcmVyLgorICAgIGlmIChyZW5kZXJlcigpKQorICAgICAgICBzdGF0aWNf
Y2FzdDxSZW5kZXJTVkdSZXNvdXJjZU1hc2tlcio+KHJlbmRlcmVyKCkpLT5yZW1vdmVDbGllbnRS
ZW5kZXJMYXllcihjbGllbnQpOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHTWFza0VsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdNYXNrRWxlbWVudC5o
CmluZGV4IDIyZWRkYmMuLmQ0NmM3MDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdNYXNrRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdNYXNrRWxlbWVudC5o
CkBAIC0zMCw2ICszMCw4IEBACiAjaW5jbHVkZSAiU1ZHVW5pdFR5cGVzLmgiCiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKKyAgICAKK2NsYXNzIFJlbmRlckxheWVyOwogCiBjbGFzcyBTVkdNYXNrRWxl
bWVudCBmaW5hbCA6IHB1YmxpYyBTVkdFbGVtZW50LAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBwdWJsaWMgU1ZHVGVzdHMsCkBAIC0zNyw2ICszOSw5IEBAIGNsYXNzIFNWR01hc2tFbGVt
ZW50IGZpbmFsIDogcHVibGljIFNWR0VsZW1lbnQsCiBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NS
ZWZQdHI8U1ZHTWFza0VsZW1lbnQ+IGNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1l
bnQmKTsKIAorICAgIHZvaWQgYWRkQ2xpZW50UmVuZGVyTGF5ZXIoUmVuZGVyTGF5ZXIqKTsKKyAg
ICB2b2lkIHJlbW92ZUNsaWVudFJlbmRlckxheWVyKFJlbmRlckxheWVyKik7CisKIHByaXZhdGU6
CiAgICAgU1ZHTWFza0VsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Jik7CiAK
QEAgLTQ4LDYgKzUzLDggQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgc3ZnQXR0cmlidXRl
Q2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJikgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lk
IGNoaWxkcmVuQ2hhbmdlZChjb25zdCBDaGlsZENoYW5nZSYpIG92ZXJyaWRlOwogCisgICAgSGFz
aFNldDxSZW5kZXJMYXllcio+IG1fY2xpZW50TGF5ZXJzOworCiAgICAgdmlydHVhbCBSZW5kZXJQ
dHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxlbWVudFJlbmRlcmVyKFBhc3NSZWY8UmVuZGVyU3R5
bGU+KSBvdmVycmlkZTsKIAogICAgIHZpcnR1YWwgYm9vbCBzZWxmSGFzUmVsYXRpdmVMZW5ndGhz
KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR1VzZUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1VzZUVs
ZW1lbnQuY3BwCmluZGV4IDUyOTUxYmMuLjQyYmM4ZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdVc2VFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVXNl
RWxlbWVudC5jcHAKQEAgLTk5Miw4ICs5OTIsMTEgQEAgdm9pZCBTVkdVc2VFbGVtZW50OjpzZXRD
YWNoZWREb2N1bWVudChDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRTVkdEb2N1bWVudD4gY2EK
ICAgICAgICAgbV9jYWNoZWREb2N1bWVudC0+cmVtb3ZlQ2xpZW50KHRoaXMpOwogCiAgICAgbV9j
YWNoZWREb2N1bWVudCA9IGNhY2hlZERvY3VtZW50OwotICAgIGlmIChtX2NhY2hlZERvY3VtZW50
KQorICAgIGlmIChtX2NhY2hlZERvY3VtZW50KSB7CisgICAgICAgIC8vIFdlIGRvbid0IG5lZWQg
dGhlIFNWRyBkb2N1bWVudCB0byBjcmVhdGUgYSBuZXcgZnJhbWUgYmVjYXVzZSB0aGUgbmV3IGRv
Y3VtZW50IGJlbG9uZ3MgdG8gdGhlIHBhcmVudCBVc2VFbGVtZW50LgorICAgICAgICBtX2NhY2hl
ZERvY3VtZW50LT5zZXRTaG91bGRDcmVhdGVGcmFtZUZvckRvY3VtZW50KGZhbHNlKTsKICAgICAg
ICAgbV9jYWNoZWREb2N1bWVudC0+YWRkQ2xpZW50KHRoaXMpOworICAgIH0KIH0KIAogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZS5jcHAKaW5kZXggNDliOTBiZS4uNTcyMTVk
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuY3BwCkBAIC0zNDQsNiAr
MzQ0LDggQEAgYm9vbCBTVkdJbWFnZTo6ZGF0YUNoYW5nZWQoYm9vbCBhbGxEYXRhUmVjZWl2ZWQp
CiAgICAgICAgIGZpbGxXaXRoRW1wdHlDbGllbnRzKHBhZ2VDb25maWd1cmF0aW9uKTsKICAgICAg
ICAgbV9jaHJvbWVDbGllbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPFNWR0ltYWdlQ2hyb21lQ2xpZW50
Pih0aGlzKTsKICAgICAgICAgcGFnZUNvbmZpZ3VyYXRpb24uY2hyb21lQ2xpZW50ID0gbV9jaHJv
bWVDbGllbnQuZ2V0KCk7CisgICAgICAgIGJvb2wgY2FuSGF2ZVNjcm9sbGJhcnMgPSBmYWxzZTsg
Ly8gU1ZHIEltYWdlcyB3aWxsIGFsd2F5cyBzeW50aGVzaXplIGEgdmlld0JveCwgaWYgaXQncyBu
b3QgYXZhaWxhYmxlLCBhbmQgdGh1cyBuZXZlciBzZWUgc2Nyb2xsYmFycy4KKyAgICAgICAgYm9v
bCB0cmFuc3BhcmVudCA9IHRydWU7IC8vIFNWRyBJbWFnZXMgYXJlIHRyYW5zcGFyZW50LgogCiAg
ICAgICAgIC8vIEZJWE1FOiBJZiB0aGlzIFNWRyBlbmRzIHVwIGxvYWRpbmcgaXRzZWxmLCB3ZSBt
aWdodCBsZWFrIHRoZSB3b3JsZC4KICAgICAgICAgLy8gVGhlIENhY2hlIGNvZGUgZG9lcyBub3Qg
a25vdyBhYm91dCBDYWNoZWRJbWFnZXMgaG9sZGluZyBGcmFtZXMgYW5kCkBAIC0zNTEsMjUgKzM1
Myw3IEBAIGJvb2wgU1ZHSW1hZ2U6OmRhdGFDaGFuZ2VkKGJvb2wgYWxsRGF0YVJlY2VpdmVkKQog
ICAgICAgICAvLyBUaGlzIHdpbGwgYmVjb21lIGFuIGlzc3VlIHdoZW4gU1ZHSW1hZ2Ugd2lsbCBi
ZSBhYmxlIHRvIGxvYWQgb3RoZXIKICAgICAgICAgLy8gU1ZHSW1hZ2Ugb2JqZWN0cywgYnV0IHdl
J3JlIHNhZmUgbm93LCBiZWNhdXNlIFNWR0ltYWdlIGNhbiBvbmx5IGJlCiAgICAgICAgIC8vIGxv
YWRlZCBieSBhIHRvcC1sZXZlbCBkb2N1bWVudC4KLSAgICAgICAgbV9wYWdlID0gc3RkOjptYWtl
X3VuaXF1ZTxQYWdlPihwYWdlQ29uZmlndXJhdGlvbik7Ci0gICAgICAgIG1fcGFnZS0+c2V0dGlu
Z3MoKS5zZXRNZWRpYUVuYWJsZWQoZmFsc2UpOwotICAgICAgICBtX3BhZ2UtPnNldHRpbmdzKCku
c2V0U2NyaXB0RW5hYmxlZChmYWxzZSk7Ci0gICAgICAgIG1fcGFnZS0+c2V0dGluZ3MoKS5zZXRQ
bHVnaW5zRW5hYmxlZChmYWxzZSk7Ci0KLSAgICAgICAgRnJhbWUmIGZyYW1lID0gbV9wYWdlLT5t
YWluRnJhbWUoKTsKLSAgICAgICAgZnJhbWUuc2V0VmlldyhGcmFtZVZpZXc6OmNyZWF0ZShmcmFt
ZSkpOwotICAgICAgICBmcmFtZS5pbml0KCk7Ci0gICAgICAgIEZyYW1lTG9hZGVyJiBsb2FkZXIg
PSBmcmFtZS5sb2FkZXIoKTsKLSAgICAgICAgbG9hZGVyLmZvcmNlU2FuZGJveEZsYWdzKFNhbmRi
b3hBbGwpOwotCi0gICAgICAgIGZyYW1lLnZpZXcoKS0+c2V0Q2FuSGF2ZVNjcm9sbGJhcnMoZmFs
c2UpOyAvLyBTVkcgSW1hZ2VzIHdpbGwgYWx3YXlzIHN5bnRoZXNpemUgYSB2aWV3Qm94LCBpZiBp
dCdzIG5vdCBhdmFpbGFibGUsIGFuZCB0aHVzIG5ldmVyIHNlZSBzY3JvbGxiYXJzLgotICAgICAg
ICBmcmFtZS52aWV3KCktPnNldFRyYW5zcGFyZW50KHRydWUpOyAvLyBTVkcgSW1hZ2VzIGFyZSB0
cmFuc3BhcmVudC4KLQotICAgICAgICBBU1NFUlQobG9hZGVyLmFjdGl2ZURvY3VtZW50TG9hZGVy
KCkpOyAvLyBEb2N1bWVudExvYWRlciBzaG91bGQgaGF2ZSBiZWVuIGNyZWF0ZWQgYnkgZnJhbWUt
PmluaXQoKS4KLSAgICAgICAgbG9hZGVyLmFjdGl2ZURvY3VtZW50TG9hZGVyKCktPndyaXRlcigp
LnNldE1JTUVUeXBlKCJpbWFnZS9zdmcreG1sIik7Ci0gICAgICAgIGxvYWRlci5hY3RpdmVEb2N1
bWVudExvYWRlcigpLT53cml0ZXIoKS5iZWdpbihVUkwoKSk7IC8vIGNyZWF0ZSB0aGUgZW1wdHkg
ZG9jdW1lbnQKLSAgICAgICAgbG9hZGVyLmFjdGl2ZURvY3VtZW50TG9hZGVyKCktPndyaXRlcigp
LmFkZERhdGEoZGF0YSgpLT5kYXRhKCksIGRhdGEoKS0+c2l6ZSgpKTsKLSAgICAgICAgbG9hZGVy
LmFjdGl2ZURvY3VtZW50TG9hZGVyKCktPndyaXRlcigpLmVuZCgpOworICAgICAgICBtX3BhZ2Ug
PSBQYWdlOjpjcmVhdGVQYWdlRnJvbUJ1ZmZlcihwYWdlQ29uZmlndXJhdGlvbiwgZGF0YSgpLCAi
aW1hZ2Uvc3ZnK3htbCIsIGNhbkhhdmVTY3JvbGxiYXJzLCB0cmFuc3BhcmVudCk7CiAKICAgICAg
ICAgLy8gU2V0IHRoZSBpbnRyaW5zaWMgc2l6ZSBiZWZvcmUgYSBjb250YWluZXIgc2l6ZSBpcyBh
dmFpbGFibGUuCiAgICAgICAgIG1faW50cmluc2ljU2l6ZSA9IGNvbnRhaW5lclNpemUoKTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>