<?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>77204</bug_id>
          
          <creation_ts>2012-01-27 04:57:40 -0800</creation_ts>
          <short_desc>Kill per-Attribute style declarations.</short_desc>
          <delta_ts>2012-02-06 16:59:56 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>DOM</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Andreas Kling">kling</reporter>
          <assigned_to name="Andreas Kling">kling</assigned_to>
          <cc>apavlov</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>darin</cc>
    
    <cc>dglazkov</cc>
    
    <cc>koivisto</cc>
    
    <cc>macpherson</cc>
    
    <cc>menard</cc>
    
    <cc>pfeldman</cc>
    
    <cc>rniwa</cc>
    
    <cc>tkent</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>yurys</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>543975</commentid>
    <comment_count>0</comment_count>
    <who name="Andreas Kling">kling</who>
    <bug_when>2012-01-27 04:57:40 -0800</bug_when>
    <thetext>The way style-based-on-attributes works today is by creating a style declaration for each Attribute that affects element style and then adding these one by one in CSSStyleSelector::matchAllRules().
The design is a remnant of the Old Web(tm) where we people couldn&apos;t rely on CSS for styling to the extent it&apos;s possible today.

I&apos;m proposing that we move away from this approach and instead let attributes affect a single style declaration that hangs on the element, much like a secondary inline &quot;style&quot; attribute. The change is transparent to the web, but frees us from having Attributes that point to style declarations.

This will mean that style declarations generated from attributes are no longer sharable in StyledElement.cpp&apos;s CSSMappedAttributeDeclaration table, but I believe it will be a net win in the end.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>543979</commentid>
    <comment_count>1</comment_count>
      <attachid>124293</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2012-01-27 05:08:04 -0800</bug_when>
    <thetext>Created attachment 124293
Patch for EWS and brave people

Uploading my current WIP, which passes all layout tests, but lacks ChangeLog and a solution for supporting the old behavior of Attr::style() which is exposed as Obj-C API.
Immediate follow-up work after this patch would be removing the &quot;preserveDecls&quot; argument from attributeChanged() and killing CSSMappedAttributeDeclaration, moving the remaining logic into StyledElement&apos;s helpers.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>543981</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-01-27 05:10:54 -0800</bug_when>
    <thetext>Attachment 124293 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCor...&quot; exit_code: 1

Source/WebCore/dom/CSSMappedAttributeDeclaration.cpp:51:  Should have a space between // and comment  [whitespace/comments] [4]
Source/WebCore/dom/CSSMappedAttributeDeclaration.cpp:58:  Should have a space between // and comment  [whitespace/comments] [4]
Source/WebCore/dom/CSSMappedAttributeDeclaration.cpp:65:  Should have a space between // and comment  [whitespace/comments] [4]
Source/WebCore/dom/CSSMappedAttributeDeclaration.cpp:81:  Should have a space between // and comment  [whitespace/comments] [4]
Source/WebCore/html/HTMLHRElement.cpp:104:  One line control clauses should not use braces.  [whitespace/braces] [4]
Total errors found: 5 in 45 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>544012</commentid>
    <comment_count>3</comment_count>
      <attachid>124293</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-01-27 06:13:19 -0800</bug_when>
    <thetext>Comment on attachment 124293
Patch for EWS and brave people

Attachment 124293 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/11265710

New failing tests:
editing/style/make-text-writing-direction-inline.html
inspector/elements/elements-panel-styles.html
inspector/styles/styles-new-API.html
inspector/styles/styles-computed-trace.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>549211</commentid>
    <comment_count>4</comment_count>
    <who name="Andreas Kling">kling</who>
    <bug_when>2012-02-03 16:12:29 -0800</bug_when>
    <thetext>CC&apos;ing some Inspector folks since this will break their feature for displaying applied style per attribute.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>549213</commentid>
    <comment_count>5</comment_count>
      <attachid>125444</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2012-02-03 16:14:32 -0800</bug_when>
    <thetext>Created attachment 125444
Proposed patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>549217</commentid>
    <comment_count>6</comment_count>
      <attachid>125445</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2012-02-03 16:16:22 -0800</bug_when>
    <thetext>Created attachment 125445
Proposed patch

Hm, seems it didn&apos;t upload the whole patch..</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>549239</commentid>
    <comment_count>7</comment_count>
      <attachid>125445</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2012-02-03 16:52:55 -0800</bug_when>
    <thetext>Comment on attachment 125445
Proposed patch

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

&gt; Source/WebCore/dom/StyledElement.cpp:122
&gt; -void StyledElement::removeCSSProperty(Attribute* attribute, int id)
&gt; +void StyledElement::removeCSSProperties(int id1, int id2, int id3, int id4, int id5, int id6, int id7, int id8)

Objection!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>549240</commentid>
    <comment_count>8</comment_count>
      <attachid>125445</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2012-02-03 16:52:56 -0800</bug_when>
    <thetext>Comment on attachment 125445
Proposed patch

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

&gt; Source/WebCore/dom/StyledElement.cpp:122
&gt; -void StyledElement::removeCSSProperty(Attribute* attribute, int id)
&gt; +void StyledElement::removeCSSProperties(int id1, int id2, int id3, int id4, int id5, int id6, int id7, int id8)

Objection!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>549245</commentid>
    <comment_count>9</comment_count>
    <who name="Andreas Kling">kling</who>
    <bug_when>2012-02-03 16:55:02 -0800</bug_when>
    <thetext>(In reply to comment #8)
&gt; (From update of attachment 125445 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=125445&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/dom/StyledElement.cpp:122
&gt; &gt; -void StyledElement::removeCSSProperty(Attribute* attribute, int id)
&gt; &gt; +void StyledElement::removeCSSProperties(int id1, int id2, int id3, int id4, int id5, int id6, int id7, int id8)
&gt; 
&gt; Objection!

Yeah, fine. That&apos;s horrible. I&apos;ll expand into multiple removeCSSProperty() calls again.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>549247</commentid>
    <comment_count>10</comment_count>
      <attachid>125445</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-02-03 16:56:31 -0800</bug_when>
    <thetext>Comment on attachment 125445
Proposed patch

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

&gt;&gt;&gt; Source/WebCore/dom/StyledElement.cpp:122
&gt;&gt;&gt; +void StyledElement::removeCSSProperties(int id1, int id2, int id3, int id4, int id5, int id6, int id7, int id8)
&gt;&gt; 
&gt;&gt; Objection!
&gt; 
&gt; Objection!

I think it&apos;s okay to enumerate ids like this but you may also consider using an array here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>549418</commentid>
    <comment_count>11</comment_count>
      <attachid>125445</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2012-02-04 02:27:46 -0800</bug_when>
    <thetext>Comment on attachment 125445
Proposed patch

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

&gt; Source/WebCore/css/CSSStyleSelector.cpp:1006
&gt; +                result.isCacheable = false;

Caching is useful even when properties are not shared between elements as it is common for the same element style to get recomputed.

We should be able to share identical attribute styles between elements too.

&gt; Source/WebCore/dom/Attr.h:62
&gt; +    // A deprecated extension to get presentational information for attributes.
&gt; +    // We have to keep it around because it&apos;s exposed in the Obj-C DOM API.
&gt; +    CSSStyleDeclaration* style() { return 0; }

Hope we don&apos;t have clients for this!

&gt; Source/WebCore/dom/CSSMappedAttributeDeclaration.h:-76
&gt;  
&gt;      RefPtr&lt;StylePropertySet&gt; m_declaration;
&gt; -    MappedAttributeEntry m_entryType;
&gt; -    QualifiedName m_attrName;
&gt; -    AtomicString m_attrValue;

This class has kinda lost its reason to exist.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>549421</commentid>
    <comment_count>12</comment_count>
      <attachid>125445</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2012-02-04 02:55:01 -0800</bug_when>
    <thetext>Comment on attachment 125445
Proposed patch

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

&gt; Source/WebCore/dom/StyledElement.cpp:144
&gt; +    if (id2 != CSSPropertyInvalid)
&gt; +        style-&gt;removeMappedProperty(this, id2);
&gt; +    if (id3 != CSSPropertyInvalid)
&gt; +        style-&gt;removeMappedProperty(this, id3);
&gt; +    if (id4 != CSSPropertyInvalid)
&gt; +        style-&gt;removeMappedProperty(this, id4);
&gt; +    if (id5 != CSSPropertyInvalid)
&gt; +        style-&gt;removeMappedProperty(this, id5);
&gt; +    if (id6 != CSSPropertyInvalid)
&gt; +        style-&gt;removeMappedProperty(this, id6);
&gt; +    if (id7 != CSSPropertyInvalid)
&gt; +        style-&gt;removeMappedProperty(this, id7);
&gt; +    if (id8 != CSSPropertyInvalid)
&gt; +        style-&gt;removeMappedProperty(this, id8);

I think you can bail out when you see the first CSSPropertyInvalid.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>549427</commentid>
    <comment_count>13</comment_count>
    <who name="Andreas Kling">kling</who>
    <bug_when>2012-02-04 04:24:32 -0800</bug_when>
    <thetext>Committed r106740: &lt;http://trac.webkit.org/changeset/106740&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>549458</commentid>
    <comment_count>14</comment_count>
    <who name="Andreas Kling">kling</who>
    <bug_when>2012-02-04 13:32:03 -0800</bug_when>
    <thetext>Committed r106741: &lt;http://trac.webkit.org/changeset/106741&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>550433</commentid>
    <comment_count>15</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2012-02-06 16:59:56 -0800</bug_when>
    <thetext>(In reply to comment #11)
&gt; &gt; Source/WebCore/dom/Attr.h:62
&gt; &gt; +    // A deprecated extension to get presentational information for attributes.
&gt; &gt; +    // We have to keep it around because it&apos;s exposed in the Obj-C DOM API.
&gt; &gt; +    CSSStyleDeclaration* style() { return 0; }
&gt; 
&gt; Hope we don&apos;t have clients for this!

If nobody is using this from Objective-C we can remove it from the Objective-C DOM API.

If we want a method that just returns nil we can set that up in Mac WebKit with a category or something like that and remove it from WebCore.

On reflection, it’s a seriously bad thing that we export Attr as part of the ObjC DOM.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>124293</attachid>
            <date>2012-01-27 05:08:04 -0800</date>
            <delta_ts>2012-02-03 16:14:32 -0800</delta_ts>
            <desc>Patch for EWS and brave people</desc>
            <filename>bug-77204-wip.diff</filename>
            <type>text/plain</type>
            <size>130375</size>
            <attacher name="Andreas Kling">kling</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBlNDkyN2RmLi4yYmU3ZGVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTc5
IEBACisyMDEyLTAxLTI3ICBBbmRyZWFzIEtsaW5nICA8YXdlc29tZWtsaW5nQGFwcGxlLmNvbT4K
KworICAgICAgICBLaWxsIHBlci1BdHRyaWJ1dGUgc3R5bGUgZGVjbGFyYXRpb25zLgorICAgICAg
ICA8aHR0cDovL3dlYmtpdC5vcmcvYi83NzIwND4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBObyBwcm9wZXIgQ2hhbmdlTG9nIChPT1BTISkKKworICAg
ICAgICAqIGNzcy9DU1NTdHlsZVNlbGVjdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1N0
eWxlU2VsZWN0b3I6Om1hdGNoQWxsUnVsZXMpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTU3R5bGVT
ZWxlY3Rvcjo6Y2FuU2hhcmVTdHlsZVdpdGhFbGVtZW50KToKKyAgICAgICAgKiBkb20vQXR0ci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpBdHRyOjpzdHlsZSk6CisgICAgICAgIChXZWJDb3JlKToK
KyAgICAgICAgKiBkb20vQXR0ci5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChBdHRy
KToKKyAgICAgICAgKiBkb20vQXR0cmlidXRlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkF0dHJp
YnV0ZTo6Y2xvbmUpOgorICAgICAgICAqIGRvbS9BdHRyaWJ1dGUuaDoKKyAgICAgICAgKFdlYkNv
cmUpOgorICAgICAgICAoV2ViQ29yZTo6QXR0cmlidXRlOjpjcmVhdGUpOgorICAgICAgICAoV2Vi
Q29yZTo6QXR0cmlidXRlOjpjcmVhdGVNYXBwZWQpOgorICAgICAgICAoQXR0cmlidXRlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkF0dHJpYnV0ZTo6QXR0cmlidXRlKToKKyAgICAgICAgKiBkb20vQ1NT
TWFwcGVkQXR0cmlidXRlRGVjbGFyYXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTTWFw
cGVkQXR0cmlidXRlRGVjbGFyYXRpb246On5DU1NNYXBwZWRBdHRyaWJ1dGVEZWNsYXJhdGlvbik6
CisgICAgICAgIChXZWJDb3JlOjpDU1NNYXBwZWRBdHRyaWJ1dGVEZWNsYXJhdGlvbjo6c2V0TWFw
cGVkTGVuZ3RoUHJvcGVydHkpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTTWFwcGVkQXR0cmlidXRl
RGVjbGFyYXRpb246OnNldE1hcHBlZFByb3BlcnR5KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU01h
cHBlZEF0dHJpYnV0ZURlY2xhcmF0aW9uOjpyZW1vdmVNYXBwZWRQcm9wZXJ0eSk6CisgICAgICAg
ICogZG9tL0NTU01hcHBlZEF0dHJpYnV0ZURlY2xhcmF0aW9uLmg6CisgICAgICAgIChDU1NNYXBw
ZWRBdHRyaWJ1dGVEZWNsYXJhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpDU1NNYXBwZWRBdHRy
aWJ1dGVEZWNsYXJhdGlvbjo6Q1NTTWFwcGVkQXR0cmlidXRlRGVjbGFyYXRpb24pOgorICAgICAg
ICAqIGRvbS9FbGVtZW50Lmg6CisgICAgICAgIChFbGVtZW50KToKKyAgICAgICAgKiBkb20vTmFt
ZWROb2RlTWFwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok5hbWVkTm9kZU1hcDo6ZW5zdXJlQXR0
cmlidXRlU3R5bGUpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICogZG9tL05hbWVkTm9k
ZU1hcC5oOgorICAgICAgICAoV2ViQ29yZTo6TmFtZWROb2RlTWFwOjphdHRyaWJ1dGVTdHlsZSk6
CisgICAgICAgIChOYW1lZE5vZGVNYXApOgorICAgICAgICAqIGRvbS9TdHlsZWRFbGVtZW50LmNw
cDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVkRWxlbWVudDo6
YXR0cmlidXRlQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZWRFbGVtZW50OjpyZW1v
dmVDU1NQcm9wZXJ0aWVzKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlZEVsZW1lbnQ6OmFkZENT
U1Byb3BlcnR5KToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlZEVsZW1lbnQ6OmFkZENTU0ltYWdl
UHJvcGVydHkpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVkRWxlbWVudDo6YWRkQ1NTTGVuZ3Ro
KToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlZEVsZW1lbnQ6OmFkZENTU0NvbG9yKToKKyAgICAg
ICAgKiBkb20vU3R5bGVkRWxlbWVudC5oOgorICAgICAgICAoU3R5bGVkRWxlbWVudCk6CisgICAg
ICAgIChXZWJDb3JlOjpTdHlsZWRFbGVtZW50OjpyZW1vdmVDU1NQcm9wZXJ0eSk6CisgICAgICAg
IChXZWJDb3JlOjpTdHlsZWRFbGVtZW50OjphdHRyaWJ1dGVTdHlsZSk6CisgICAgICAgICogaHRt
bC9IVE1MQlJFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxCUkVsZW1lbnQ6OnBh
cnNlTWFwcGVkQXR0cmlidXRlKToKKyAgICAgICAgKiBodG1sL0hUTUxCUkVsZW1lbnQuaDoKKyAg
ICAgICAgKEhUTUxCUkVsZW1lbnQpOgorICAgICAgICAqIGh0bWwvSFRNTEJvZHlFbGVtZW50LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxCb2R5RWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1
dGUpOgorICAgICAgICAqIGh0bWwvSFRNTEJvZHlFbGVtZW50Lmg6CisgICAgICAgIChIVE1MQm9k
eUVsZW1lbnQpOgorICAgICAgICAqIGh0bWwvSFRNTERpdkVsZW1lbnQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SFRNTERpdkVsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmlidXRlKToKKyAgICAgICAg
KiBodG1sL0hUTUxEaXZFbGVtZW50Lmg6CisgICAgICAgIChIVE1MRGl2RWxlbWVudCk6CisgICAg
ICAgICogaHRtbC9IVE1MRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRWxlbWVu
dDo6YXBwbHlCb3JkZXJBdHRyaWJ1dGUpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEVsZW1lbnQ6
Om1hcExhbmd1YWdlQXR0cmlidXRlVG9Mb2NhbGUpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEVs
ZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmlidXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxFbGVt
ZW50OjpyZW1vdmVIVE1MQWxpZ25tZW50KToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAo
V2ViQ29yZTo6SFRNTEVsZW1lbnQ6OmFkZEhUTUxBbGlnbm1lbnRUb1N0eWxlZEVsZW1lbnQpOgor
ICAgICAgICAoV2ViQ29yZTo6SFRNTEVsZW1lbnQ6OnNldENvbnRlbnRFZGl0YWJsZSk6CisgICAg
ICAgICogaHRtbC9IVE1MRWxlbWVudC5oOgorICAgICAgICAoSFRNTEVsZW1lbnQpOgorICAgICAg
ICAqIGh0bWwvSFRNTEVtYmVkRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRW1i
ZWRFbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpYnV0ZSk6CisgICAgICAgICogaHRtbC9IVE1MRW1i
ZWRFbGVtZW50Lmg6CisgICAgICAgIChIVE1MRW1iZWRFbGVtZW50KToKKyAgICAgICAgKCk6Cisg
ICAgICAgICogaHRtbC9IVE1MRm9udEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRN
TEZvbnRFbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpYnV0ZSk6CisgICAgICAgICogaHRtbC9IVE1M
Rm9udEVsZW1lbnQuaDoKKyAgICAgICAgKEhUTUxGb250RWxlbWVudCk6CisgICAgICAgICogaHRt
bC9IVE1MRnJhbWVTZXRFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxGcmFtZVNl
dEVsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmlidXRlKToKKyAgICAgICAgKiBodG1sL0hUTUxGcmFt
ZVNldEVsZW1lbnQuaDoKKyAgICAgICAgKEhUTUxGcmFtZVNldEVsZW1lbnQpOgorICAgICAgICAq
IGh0bWwvSFRNTEhSRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MSFJFbGVtZW50
OjpwYXJzZU1hcHBlZEF0dHJpYnV0ZSk6CisgICAgICAgICogaHRtbC9IVE1MSFJFbGVtZW50Lmg6
CisgICAgICAgIChIVE1MSFJFbGVtZW50KToKKyAgICAgICAgKiBodG1sL0hUTUxJRnJhbWVFbGVt
ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxJRnJhbWVFbGVtZW50OjpwYXJzZU1hcHBl
ZEF0dHJpYnV0ZSk6CisgICAgICAgICogaHRtbC9IVE1MSUZyYW1lRWxlbWVudC5oOgorICAgICAg
ICAoSFRNTElGcmFtZUVsZW1lbnQpOgorICAgICAgICAqIGh0bWwvSFRNTEltYWdlRWxlbWVudC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MSW1hZ2VFbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJp
YnV0ZSk6CisgICAgICAgICogaHRtbC9IVE1MSW1hZ2VFbGVtZW50Lmg6CisgICAgICAgIChIVE1M
SW1hZ2VFbGVtZW50KToKKyAgICAgICAgKiBodG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SFRNTElucHV0RWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUpOgor
ICAgICAgICAqIGh0bWwvSFRNTElucHV0RWxlbWVudC5oOgorICAgICAgICAoSFRNTElucHV0RWxl
bWVudCk6CisgICAgICAgICogaHRtbC9IVE1MTElFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkhUTUxMSUVsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmlidXRlKToKKyAgICAgICAgKiBodG1s
L0hUTUxMSUVsZW1lbnQuaDoKKyAgICAgICAgKEhUTUxMSUVsZW1lbnQpOgorICAgICAgICAqIGh0
bWwvSFRNTE1hcnF1ZWVFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNYXJxdWVl
RWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUpOgorICAgICAgICAqIGh0bWwvSFRNTE1hcnF1
ZWVFbGVtZW50Lmg6CisgICAgICAgIChIVE1MTWFycXVlZUVsZW1lbnQpOgorICAgICAgICAqIGh0
bWwvSFRNTE9MaXN0RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MT0xpc3RFbGVt
ZW50OjpwYXJzZU1hcHBlZEF0dHJpYnV0ZSk6CisgICAgICAgICogaHRtbC9IVE1MT0xpc3RFbGVt
ZW50Lmg6CisgICAgICAgIChIVE1MT0xpc3RFbGVtZW50KToKKyAgICAgICAgKiBodG1sL0hUTUxP
dXRwdXRFbGVtZW50LmNwcDoKKyAgICAgICAgKiBodG1sL0hUTUxPdXRwdXRFbGVtZW50Lmg6Cisg
ICAgICAgIChIVE1MT3V0cHV0RWxlbWVudCk6CisgICAgICAgICogaHRtbC9IVE1MUGFyYWdyYXBo
RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MUGFyYWdyYXBoRWxlbWVudDo6cGFy
c2VNYXBwZWRBdHRyaWJ1dGUpOgorICAgICAgICAqIGh0bWwvSFRNTFBhcmFncmFwaEVsZW1lbnQu
aDoKKyAgICAgICAgKEhUTUxQYXJhZ3JhcGhFbGVtZW50KToKKyAgICAgICAgKiBodG1sL0hUTUxQ
bHVnSW5FbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxQbHVnSW5FbGVtZW50Ojpw
YXJzZU1hcHBlZEF0dHJpYnV0ZSk6CisgICAgICAgICogaHRtbC9IVE1MUGx1Z0luRWxlbWVudC5o
OgorICAgICAgICAoSFRNTFBsdWdJbkVsZW1lbnQpOgorICAgICAgICAqIGh0bWwvSFRNTFByZUVs
ZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFByZUVsZW1lbnQ6OnBhcnNlTWFwcGVk
QXR0cmlidXRlKToKKyAgICAgICAgKiBodG1sL0hUTUxQcmVFbGVtZW50Lmg6CisgICAgICAgIChI
VE1MUHJlRWxlbWVudCk6CisgICAgICAgICogaHRtbC9IVE1MVGFibGVDYXB0aW9uRWxlbWVudC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVGFibGVDYXB0aW9uRWxlbWVudDo6cGFyc2VNYXBw
ZWRBdHRyaWJ1dGUpOgorICAgICAgICAqIGh0bWwvSFRNTFRhYmxlQ2FwdGlvbkVsZW1lbnQuaDoK
KyAgICAgICAgKEhUTUxUYWJsZUNhcHRpb25FbGVtZW50KToKKyAgICAgICAgKiBodG1sL0hUTUxU
YWJsZUNlbGxFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUYWJsZUNlbGxFbGVt
ZW50OjpwYXJzZU1hcHBlZEF0dHJpYnV0ZSk6CisgICAgICAgICogaHRtbC9IVE1MVGFibGVDZWxs
RWxlbWVudC5oOgorICAgICAgICAoSFRNTFRhYmxlQ2VsbEVsZW1lbnQpOgorICAgICAgICAqIGh0
bWwvSFRNTFRhYmxlQ29sRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVGFibGVD
b2xFbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpYnV0ZSk6CisgICAgICAgICogaHRtbC9IVE1MVGFi
bGVDb2xFbGVtZW50Lmg6CisgICAgICAgIChIVE1MVGFibGVDb2xFbGVtZW50KToKKyAgICAgICAg
KiBodG1sL0hUTUxUYWJsZUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRhYmxl
RWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUpOgorICAgICAgICAqIGh0bWwvSFRNTFRhYmxl
RWxlbWVudC5oOgorICAgICAgICAoSFRNTFRhYmxlRWxlbWVudCk6CisgICAgICAgICgpOgorICAg
ICAgICAqIGh0bWwvSFRNTFRhYmxlUGFydEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZSk6
CisgICAgICAgIChXZWJDb3JlOjpIVE1MVGFibGVQYXJ0RWxlbWVudDo6cGFyc2VNYXBwZWRBdHRy
aWJ1dGUpOgorICAgICAgICAqIGh0bWwvSFRNTFRhYmxlUGFydEVsZW1lbnQuaDoKKyAgICAgICAg
KiBodG1sL0hUTUxUZXh0QXJlYUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRl
eHRBcmVhRWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUpOgorICAgICAgICAqIGh0bWwvSFRN
TFVMaXN0RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVUxpc3RFbGVtZW50Ojpw
YXJzZU1hcHBlZEF0dHJpYnV0ZSk6CisgICAgICAgICogaHRtbC9IVE1MVUxpc3RFbGVtZW50Lmg6
CisgICAgICAgIChIVE1MVUxpc3RFbGVtZW50KToKKyAgICAgICAgKiBodG1sL0hUTUxWaWRlb0Vs
ZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFZpZGVvRWxlbWVudDo6cGFyc2VNYXBw
ZWRBdHRyaWJ1dGUpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JDU1NBZ2VudC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDU1NBZ2VudDo6YnVpbGRBcnJheUZvckF0dHJp
YnV0ZVN0eWxlcyk6CisgICAgICAgICogbWF0aG1sL01hdGhNTEVsZW1lbnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6TWF0aE1MRWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUpOgorICAgICAg
ICAqIG1hdGhtbC9NYXRoTUxFbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR0ltYWdlRWxlbWVu
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdJbWFnZUVsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0
cmlidXRlKToKKyAgICAgICAgKiBzdmcvU1ZHU3R5bGVkRWxlbWVudC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpTVkdTdHlsZWRFbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpYnV0ZSk6CisgICAgICAg
IChXZWJDb3JlOjpTVkdTdHlsZWRFbGVtZW50OjpnZXRQcmVzZW50YXRpb25BdHRyaWJ1dGUpOgor
ICAgICAgICAqIHN2Zy9TVkdTdHlsZWRFbGVtZW50Lmg6CisgICAgICAgIChTVkdTdHlsZWRFbGVt
ZW50KToKKyAgICAgICAgKiBzdmcvU1ZHVGV4dENvbnRlbnRFbGVtZW50LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlNWR1RleHRDb250ZW50RWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUpOgor
CiAyMDEyLTAxLTI2ICBBbmRyZWFzIEtsaW5nICA8YXdlc29tZWtsaW5nQGFwcGxlLmNvbT4KIAog
ICAgICAgICBSZWZhY3RvciBhcHBsaWNhdGlvbiBvZiBhZGRpdGlvbmFsIHN0eWxlIGF0dHJpYnV0
ZXMgZm9yIHRhYmxlIGVsZW1lbnRzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NT
U1N0eWxlU2VsZWN0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2VsZWN0b3Iu
Y3BwCmluZGV4IGUzMmI2NWIuLmQzNDc4ODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NTdHlsZVNlbGVjdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVT
ZWxlY3Rvci5jcHAKQEAgLTgzNSwxNyArODM1LDEzIEBAIHZvaWQgQ1NTU3R5bGVTZWxlY3Rvcjo6
bWF0Y2hBbGxSdWxlcyhNYXRjaFJlc3VsdCYgcmVzdWx0KQogICAgICAgICAKICAgICAvLyBOb3cg
Y2hlY2sgYXV0aG9yIHJ1bGVzLCBiZWdpbm5pbmcgZmlyc3Qgd2l0aCBwcmVzZW50YXRpb25hbCBh
dHRyaWJ1dGVzIG1hcHBlZCBmcm9tIEhUTUwuCiAgICAgaWYgKG1fc3R5bGVkRWxlbWVudCkgewot
ICAgICAgICBpZiAoY29uc3QgTmFtZWROb2RlTWFwKiBtYXAgPSBtX3N0eWxlZEVsZW1lbnQtPmF0
dHJpYnV0ZU1hcCgpKSB7Ci0gICAgICAgICAgICAvLyBXYWxrIHRoZSBlbGVtZW50J3MgYXR0cmli
dXRlIG1hcCBhbmQgYWRkIGFsbCBtYXBwZWQgYXR0cmlidXRlIGRlY2xhcmF0aW9ucy4KLSAgICAg
ICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtYXAtPmxlbmd0aCgpOyArK2kpIHsKLSAg
ICAgICAgICAgICAgICBBdHRyaWJ1dGUqIGF0dHJpYnV0ZSA9IG1hcC0+YXR0cmlidXRlSXRlbShp
KTsKLSAgICAgICAgICAgICAgICBpZiAoIWF0dHJpYnV0ZS0+ZGVjbCgpKQotICAgICAgICAgICAg
ICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgICAgICBBU1NFUlQoYXR0cmlidXRlLT5pc01h
cHBlZEF0dHJpYnV0ZSgpKTsKLSAgICAgICAgICAgICAgICByZXN1bHQucmFuZ2VzLmxhc3RBdXRo
b3JSdWxlID0gbV9tYXRjaGVkRGVjbHMuc2l6ZSgpOworICAgICAgICBpZiAoQ1NTTXV0YWJsZVN0
eWxlRGVjbGFyYXRpb24qIGF0dHJpYnV0ZVN0eWxlID0gbV9zdHlsZWRFbGVtZW50LT5hdHRyaWJ1
dGVTdHlsZSgpKSB7CisgICAgICAgICAgICBpZiAoYXR0cmlidXRlU3R5bGUtPmxlbmd0aCgpKSB7
CisgICAgICAgICAgICAgICAgcmVzdWx0LnJhbmdlcy5sYXN0QXV0aG9yUnVsZSA9IG1fbWF0Y2hl
ZFJ1bGVzLnNpemUoKTsKICAgICAgICAgICAgICAgICBpZiAocmVzdWx0LnJhbmdlcy5maXJzdEF1
dGhvclJ1bGUgPT0gLTEpCiAgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5yYW5nZXMuZmlyc3RB
dXRob3JSdWxlID0gcmVzdWx0LnJhbmdlcy5sYXN0QXV0aG9yUnVsZTsKLSAgICAgICAgICAgICAg
ICBhZGRNYXRjaGVkRGVjbGFyYXRpb24oYXR0cmlidXRlLT5kZWNsKCkpOworICAgICAgICAgICAg
ICAgIGFkZE1hdGNoZWREZWNsYXJhdGlvbihhdHRyaWJ1dGVTdHlsZSk7CisgICAgICAgICAgICAg
ICAgcmVzdWx0LmlzQ2FjaGVhYmxlID0gZmFsc2U7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0K
IApAQCAtMTAzMywyMiArMTAyOSw2IEBAIGJvb2wgQ1NTU3R5bGVTZWxlY3Rvcjo6Y2FuU2hhcmVT
dHlsZVdpdGhDb250cm9sKFN0eWxlZEVsZW1lbnQqIGVsZW1lbnQpIGNvbnN0CiAgICAgcmV0dXJu
IHRydWU7CiB9CiAKLXN0YXRpYyBpbmxpbmUgYm9vbCBtYXBwZWRBdHRyaWJ1dGVzRXF1aXZhbGVu
dChOYW1lZE5vZGVNYXAqIGEsIE5hbWVkTm9kZU1hcCogYikKLXsKLSAgICBBU1NFUlQoYS0+bWFw
cGVkQXR0cmlidXRlQ291bnQoKSA9PSBiLT5tYXBwZWRBdHRyaWJ1dGVDb3VudCgpKTsKLQotICAg
IGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgYS0+bGVuZ3RoKCk7ICsraSkgewotICAgICAgICBBdHRy
aWJ1dGUqIGF0dHJpYnV0ZSA9IGEtPmF0dHJpYnV0ZUl0ZW0oaSk7Ci0gICAgICAgIGlmICghYXR0
cmlidXRlLT5kZWNsKCkpCi0gICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgQVNTRVJUKGF0
dHJpYnV0ZS0+aXNNYXBwZWRBdHRyaWJ1dGUoKSk7Ci0gICAgICAgIEF0dHJpYnV0ZSogb3RoZXJB
dHRyaWJ1dGUgPSBiLT5nZXRBdHRyaWJ1dGVJdGVtKGF0dHJpYnV0ZS0+bmFtZSgpKTsKLSAgICAg
ICAgaWYgKCFvdGhlckF0dHJpYnV0ZSB8fCBhdHRyaWJ1dGUtPnZhbHVlKCkgIT0gb3RoZXJBdHRy
aWJ1dGUtPnZhbHVlKCkgfHwgYXR0cmlidXRlLT5kZWNsKCkgIT0gb3RoZXJBdHRyaWJ1dGUtPmRl
Y2woKSkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0gICAgcmV0dXJuIHRydWU7
Ci19Ci0KIGJvb2wgQ1NTU3R5bGVTZWxlY3Rvcjo6Y2FuU2hhcmVTdHlsZVdpdGhFbGVtZW50KFN0
eWxlZEVsZW1lbnQqIGVsZW1lbnQpIGNvbnN0CiB7CiAgICAgUmVuZGVyU3R5bGUqIHN0eWxlID0g
ZWxlbWVudC0+cmVuZGVyU3R5bGUoKTsKQEAgLTEwNjMsOCArMTA0Myw3IEBAIGJvb2wgQ1NTU3R5
bGVTZWxlY3Rvcjo6Y2FuU2hhcmVTdHlsZVdpdGhFbGVtZW50KFN0eWxlZEVsZW1lbnQqIGVsZW1l
bnQpIGNvbnN0CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBpZiAoZWxlbWVudC0+aW5saW5l
U3R5bGVEZWNsKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBzaXplX3QgbWFwcGVkQXR0
cmlidXRlQ291bnQgPSBlbGVtZW50LT5tYXBwZWRBdHRyaWJ1dGVDb3VudCgpOwotICAgIGlmICht
YXBwZWRBdHRyaWJ1dGVDb3VudCAhPSBtX3N0eWxlZEVsZW1lbnQtPm1hcHBlZEF0dHJpYnV0ZUNv
dW50KCkpCisgICAgaWYgKCEhZWxlbWVudC0+YXR0cmlidXRlU3R5bGUoKSAhPSAhIW1fc3R5bGVk
RWxlbWVudC0+YXR0cmlidXRlU3R5bGUoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGlm
IChlbGVtZW50LT5pc0xpbmsoKSAhPSBtX2VsZW1lbnQtPmlzTGluaygpKQogICAgICAgICByZXR1
cm4gZmFsc2U7CkBAIC0xMTI1LDcgKzExMDQsNyBAQCBib29sIENTU1N0eWxlU2VsZWN0b3I6OmNh
blNoYXJlU3R5bGVXaXRoRWxlbWVudChTdHlsZWRFbGVtZW50KiBlbGVtZW50KSBjb25zdAogICAg
IGlmIChlbGVtZW50LT5oYXNDbGFzcygpICYmIG1fZWxlbWVudC0+Z2V0QXR0cmlidXRlKGNsYXNz
QXR0cikgIT0gZWxlbWVudC0+Z2V0QXR0cmlidXRlKGNsYXNzQXR0cikpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKIAotICAgIGlmIChtYXBwZWRBdHRyaWJ1dGVDb3VudCAmJiAhbWFwcGVkQXR0cmli
dXRlc0VxdWl2YWxlbnQoZWxlbWVudC0+YXR0cmlidXRlTWFwKCksIG1fc3R5bGVkRWxlbWVudC0+
YXR0cmlidXRlTWFwKCkpKQorICAgIGlmIChlbGVtZW50LT5hdHRyaWJ1dGVTdHlsZSgpICYmICFl
bGVtZW50LT5hdHRyaWJ1dGVNYXAoKS0+bWFwc0VxdWl2YWxlbnQobV9zdHlsZWRFbGVtZW50LT5h
dHRyaWJ1dGVNYXAoKSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGlmIChlbGVtZW50
LT5pc0xpbmsoKSAmJiBtX2VsZW1lbnRMaW5rU3RhdGUgIT0gc3R5bGUtPmluc2lkZUxpbmsoKSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9BdHRyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9BdHRyLmNwcAppbmRleCA2OTMwZmExLi40NGVjMTQzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vQXR0ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0F0dHIuY3BwCkBA
IC0xOTgsNCArMTk4LDExIEBAIGJvb2wgQXR0cjo6aXNJZCgpIGNvbnN0CiAgICAgcmV0dXJuIHF1
YWxpZmllZE5hbWUoKS5tYXRjaGVzKGRvY3VtZW50KCktPmlkQXR0cmlidXRlTmFtZSgpKTsKIH0K
IAorQ1NTU3R5bGVEZWNsYXJhdGlvbiogQXR0cjo6c3R5bGUoKQoreworICAgIC8vIEZJWE1FOiBQ
ZXJoYXBzIHdlIG5lZWQgdG8gcmV0dXJuIGEgcHJvcGVyIENTU1N0eWxlRGVjbGFyYXRpb24gaGVy
ZT8gV2UgY291bGQgZ28gd2l0aCBTdHlsZWRFbGVtZW50OjphdHRyaWJ1dGVTdHlsZSgpCisgICAg
Ly8gICAgICAgIGFzIGFuIGVhc3kgd2F5IG91dCwgdGhvdWdoIHRoYXQgd291bGQgbm90IG1hdGNo
IHRoZSBwcmV2aW91cyBiZWhhdmlvciBvZiB0aGlzIGZ1bmN0aW9uLgorICAgIHJldHVybiAwOwor
fQorCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vQXR0ci5oIGIvU291cmNlL1dl
YkNvcmUvZG9tL0F0dHIuaAppbmRleCA3YjZlMzMyLi45YjBlYTA5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vQXR0ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9BdHRyLmgKQEAg
LTMwLDYgKzMwLDggQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBDU1NTdHlsZURl
Y2xhcmF0aW9uOworCiAvLyBBdHRyIGNhbiBoYXZlIFRleHQgYW5kIEVudGl0eVJlZmVyZW5jZSBj
aGlsZHJlbgogLy8gdGhlcmVmb3JlIGl0IGhhcyB0byBiZSBhIGZ1bGxibG93biBOb2RlLiBUaGUg
cGxhbgogLy8gaXMgdG8gZHluYW1pY2FsbHkgYWxsb2NhdGUgYSB0ZXh0Y2hpbGQgYW5kIHN0b3Jl
IHRoZQpAQCAtNTYsNyArNTgsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc0lkKCkgY29uc3Q7CiAK
ICAgICAvLyBBbiBleHRlbnNpb24gdG8gZ2V0IHByZXNlbnRhdGlvbmFsIGluZm9ybWF0aW9uIGZv
ciBhdHRyaWJ1dGVzLgotICAgIENTU1N0eWxlRGVjbGFyYXRpb24qIHN0eWxlKCkgeyByZXR1cm4g
bV9hdHRyaWJ1dGUtPmRlY2woKTsgfQorICAgIENTU1N0eWxlRGVjbGFyYXRpb24qIHN0eWxlKCk7
CiAKICAgICB2b2lkIHNldFNwZWNpZmllZChib29sIHNwZWNpZmllZCkgeyBtX3NwZWNpZmllZCA9
IHNwZWNpZmllZDsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vQXR0cmlidXRl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9BdHRyaWJ1dGUuY3BwCmluZGV4IDIwYzA1ZDguLjll
YWJlNTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9BdHRyaWJ1dGUuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9BdHRyaWJ1dGUuY3BwCkBAIC00MCw3ICs0MCw3IEBAIHN0YXRp
YyBBdHRyaWJ1dGVBdHRyTWFwJiBhdHRyaWJ1dGVBdHRyTWFwKCkKIAogUGFzc1JlZlB0cjxBdHRy
aWJ1dGU+IEF0dHJpYnV0ZTo6Y2xvbmUoKSBjb25zdAogewotICAgIHJldHVybiBhZG9wdFJlZihu
ZXcgQXR0cmlidXRlKG1fbmFtZSwgbV92YWx1ZSwgbV9pc01hcHBlZEF0dHJpYnV0ZSwgbV9zdHls
ZURlY2wuZ2V0KCkpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IEF0dHJpYnV0ZShtX25hbWUs
IG1fdmFsdWUsIG1faXNNYXBwZWRBdHRyaWJ1dGUpKTsKIH0KIAogQXR0ciogQXR0cmlidXRlOjph
dHRyKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9BdHRyaWJ1dGUuaCBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9BdHRyaWJ1dGUuaAppbmRleCA2YzJiNDY4Li42NjYwOTg5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vQXR0cmlidXRlLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvZG9tL0F0dHJpYnV0ZS5oCkBAIC0yNSwxMyArMjUsMTEgQEAKICNpZm5kZWYgQXR0cmli
dXRlX2gKICNkZWZpbmUgQXR0cmlidXRlX2gKIAotI2luY2x1ZGUgIkNTU01hcHBlZEF0dHJpYnV0
ZURlY2xhcmF0aW9uLmgiCiAjaW5jbHVkZSAiUXVhbGlmaWVkTmFtZS5oIgogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKIGNsYXNzIEF0dHI7Ci1jbGFzcyBDU1NTdHlsZURlY2xhcmF0aW9uOwogY2xh
c3MgRWxlbWVudDsKIGNsYXNzIE5hbWVkTm9kZU1hcDsKIApAQCAtNDMsMTUgKzQxLDE1IEBAIGNs
YXNzIEF0dHJpYnV0ZSA6IHB1YmxpYyBSZWZDb3VudGVkPEF0dHJpYnV0ZT4gewogcHVibGljOgog
ICAgIHN0YXRpYyBQYXNzUmVmUHRyPEF0dHJpYnV0ZT4gY3JlYXRlKGNvbnN0IFF1YWxpZmllZE5h
bWUmIG5hbWUsIGNvbnN0IEF0b21pY1N0cmluZyYgdmFsdWUpCiAgICAgewotICAgICAgICByZXR1
cm4gYWRvcHRSZWYobmV3IEF0dHJpYnV0ZShuYW1lLCB2YWx1ZSwgZmFsc2UsIDApKTsKKyAgICAg
ICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBBdHRyaWJ1dGUobmFtZSwgdmFsdWUsIGZhbHNlKSk7CiAg
ICAgfQogICAgIHN0YXRpYyBQYXNzUmVmUHRyPEF0dHJpYnV0ZT4gY3JlYXRlTWFwcGVkKGNvbnN0
IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0IEF0b21pY1N0cmluZyYgdmFsdWUpCiAgICAgewot
ICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEF0dHJpYnV0ZShuYW1lLCB2YWx1ZSwgdHJ1ZSwg
MCkpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEF0dHJpYnV0ZShuYW1lLCB2YWx1ZSwg
dHJ1ZSkpOwogICAgIH0KICAgICBzdGF0aWMgUGFzc1JlZlB0cjxBdHRyaWJ1dGU+IGNyZWF0ZU1h
cHBlZChjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUsIGNvbnN0IEF0b21pY1N0cmluZyYgdmFsdWUp
CiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEF0dHJpYnV0ZShuYW1lLCB2YWx1
ZSwgdHJ1ZSwgMCkpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEF0dHJpYnV0ZShuYW1l
LCB2YWx1ZSwgdHJ1ZSkpOwogICAgIH0KIAogICAgIGNvbnN0IEF0b21pY1N0cmluZyYgdmFsdWUo
KSBjb25zdCB7IHJldHVybiBtX3ZhbHVlOyB9CkBAIC02OSw5ICs2Nyw2IEBAIHB1YmxpYzoKICAg
ICAKICAgICBQYXNzUmVmUHRyPEF0dHJpYnV0ZT4gY2xvbmUoKSBjb25zdDsKIAotICAgIENTU01h
cHBlZEF0dHJpYnV0ZURlY2xhcmF0aW9uKiBkZWNsKCkgY29uc3QgeyByZXR1cm4gbV9zdHlsZURl
Y2wuZ2V0KCk7IH0KLSAgICB2b2lkIHNldERlY2woUGFzc1JlZlB0cjxDU1NNYXBwZWRBdHRyaWJ1
dGVEZWNsYXJhdGlvbj4gZGVjbCkgeyBtX3N0eWxlRGVjbCA9IGRlY2w7IH0KLQogICAgIHZvaWQg
c2V0VmFsdWUoY29uc3QgQXRvbWljU3RyaW5nJiB2YWx1ZSkgeyBtX3ZhbHVlID0gdmFsdWU7IH0K
ICAgICB2b2lkIHNldFByZWZpeChjb25zdCBBdG9taWNTdHJpbmcmIHByZWZpeCkgeyBtX25hbWUu
c2V0UHJlZml4KHByZWZpeCk7IH0KIApAQCAtODMsMjEgKzc4LDE5IEBAIHB1YmxpYzoKICAgICBi
b29sIGlzTWFwcGVkQXR0cmlidXRlKCkgeyByZXR1cm4gbV9pc01hcHBlZEF0dHJpYnV0ZTsgfQog
CiBwcml2YXRlOgotICAgIEF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBjb25z
dCBBdG9taWNTdHJpbmcmIHZhbHVlLCBib29sIGlzTWFwcGVkQXR0cmlidXRlLCBDU1NNYXBwZWRB
dHRyaWJ1dGVEZWNsYXJhdGlvbiogc3R5bGVEZWNsKQorICAgIEF0dHJpYnV0ZShjb25zdCBRdWFs
aWZpZWROYW1lJiBuYW1lLCBjb25zdCBBdG9taWNTdHJpbmcmIHZhbHVlLCBib29sIGlzTWFwcGVk
QXR0cmlidXRlKQogICAgICAgICA6IG1faXNNYXBwZWRBdHRyaWJ1dGUoaXNNYXBwZWRBdHRyaWJ1
dGUpCiAgICAgICAgICwgbV9oYXNBdHRyKGZhbHNlKQogICAgICAgICAsIG1fbmFtZShuYW1lKQog
ICAgICAgICAsIG1fdmFsdWUodmFsdWUpCi0gICAgICAgICwgbV9zdHlsZURlY2woc3R5bGVEZWNs
KQogICAgIHsKICAgICB9CiAKLSAgICBBdHRyaWJ1dGUoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1l
LCBjb25zdCBBdG9taWNTdHJpbmcmIHZhbHVlLCBib29sIGlzTWFwcGVkQXR0cmlidXRlLCBDU1NN
YXBwZWRBdHRyaWJ1dGVEZWNsYXJhdGlvbiogc3R5bGVEZWNsKQorICAgIEF0dHJpYnV0ZShjb25z
dCBBdG9taWNTdHJpbmcmIG5hbWUsIGNvbnN0IEF0b21pY1N0cmluZyYgdmFsdWUsIGJvb2wgaXNN
YXBwZWRBdHRyaWJ1dGUpCiAgICAgICAgIDogbV9pc01hcHBlZEF0dHJpYnV0ZShpc01hcHBlZEF0
dHJpYnV0ZSkKICAgICAgICAgLCBtX2hhc0F0dHIoZmFsc2UpCiAgICAgICAgICwgbV9uYW1lKG51
bGxBdG9tLCBuYW1lLCBudWxsQXRvbSkKICAgICAgICAgLCBtX3ZhbHVlKHZhbHVlKQotICAgICAg
ICAsIG1fc3R5bGVEZWNsKHN0eWxlRGVjbCkKICAgICB7CiAgICAgfQogCkBAIC0xMTAsNyArMTAz
LDYgQEAgcHJpdmF0ZToKICAgICAKICAgICBRdWFsaWZpZWROYW1lIG1fbmFtZTsKICAgICBBdG9t
aWNTdHJpbmcgbV92YWx1ZTsKLSAgICBSZWZQdHI8Q1NTTWFwcGVkQXR0cmlidXRlRGVjbGFyYXRp
b24+IG1fc3R5bGVEZWNsOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvZG9tL0NTU01hcHBlZEF0dHJpYnV0ZURlY2xhcmF0aW9uLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9DU1NNYXBwZWRBdHRyaWJ1dGVEZWNsYXJhdGlvbi5jcHAKaW5k
ZXggMTU4NWY4MC4uN2E2YWEzNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0NTU01h
cHBlZEF0dHJpYnV0ZURlY2xhcmF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ1NT
TWFwcGVkQXR0cmlidXRlRGVjbGFyYXRpb24uY3BwCkBAIC0zOCw3ICszOCw2IEBAIGlubGluZSB2
b2lkIENTU01hcHBlZEF0dHJpYnV0ZURlY2xhcmF0aW9uOjpzZXROZWVkc1N0eWxlUmVjYWxjKFN0
eWxlZEVsZW1lbnQqIGVsCiAKIENTU01hcHBlZEF0dHJpYnV0ZURlY2xhcmF0aW9uOjp+Q1NTTWFw
cGVkQXR0cmlidXRlRGVjbGFyYXRpb24oKQogewotICAgIFN0eWxlZEVsZW1lbnQ6OnJlbW92ZU1h
cHBlZEF0dHJpYnV0ZURlY2wobV9lbnRyeVR5cGUsIG1fYXR0ck5hbWUsIG1fYXR0clZhbHVlKTsK
IH0KIAogdm9pZCBDU1NNYXBwZWRBdHRyaWJ1dGVEZWNsYXJhdGlvbjo6c2V0TWFwcGVkSW1hZ2VQ
cm9wZXJ0eShTdHlsZWRFbGVtZW50KiBlbGVtZW50LCBpbnQgcHJvcGVydHlJZCwgY29uc3QgU3Ry
aW5nJiB1cmwpCkBAIC00OSwzMSArNDgsMzcgQEAgdm9pZCBDU1NNYXBwZWRBdHRyaWJ1dGVEZWNs
YXJhdGlvbjo6c2V0TWFwcGVkSW1hZ2VQcm9wZXJ0eShTdHlsZWRFbGVtZW50KiBlbGVtZW4KIAog
dm9pZCBDU1NNYXBwZWRBdHRyaWJ1dGVEZWNsYXJhdGlvbjo6c2V0TWFwcGVkTGVuZ3RoUHJvcGVy
dHkoU3R5bGVkRWxlbWVudCogZWxlbWVudCwgaW50IHByb3BlcnR5SWQsIGNvbnN0IFN0cmluZyYg
dmFsdWUpCiB7CisgICAgLy9wcmludGYoInNldE1hcHBlZExlbmd0aFByb3BlcnR5KCVwLCAlZCwg
JyVzJylcbiIsIHRoaXMsIHByb3BlcnR5SWQsIHZhbHVlLnV0ZjgoKS5kYXRhKCkpOwogICAgIHNl
dE1hcHBlZFByb3BlcnR5KGVsZW1lbnQsIHByb3BlcnR5SWQsIHZhbHVlKTsKIH0KIAogdm9pZCBD
U1NNYXBwZWRBdHRyaWJ1dGVEZWNsYXJhdGlvbjo6c2V0TWFwcGVkUHJvcGVydHkoU3R5bGVkRWxl
bWVudCogZWxlbWVudCwgaW50IHByb3BlcnR5SWQsIGludCB2YWx1ZSkKIHsKICAgICBBU1NFUlQo
ZWxlbWVudC0+ZG9jdW1lbnQoKSk7CisgICAgLy9wcmludGYoInNldE1hcHBlZFByb3BlcnR5KCVw
LCAlZCwgJWQpXG4iLCB0aGlzLCBwcm9wZXJ0eUlkLCB2YWx1ZSk7CiAgICAgc2V0UHJvcGVydHlJ
bnRlcm5hbChDU1NQcm9wZXJ0eShwcm9wZXJ0eUlkLCBlbGVtZW50LT5kb2N1bWVudCgpLT5jc3NW
YWx1ZVBvb2woKS0+Y3JlYXRlSWRlbnRpZmllclZhbHVlKHZhbHVlKSkpOwogICAgIHNldE5lZWRz
U3R5bGVSZWNhbGMoZWxlbWVudCk7CiB9CiAKIHZvaWQgQ1NTTWFwcGVkQXR0cmlidXRlRGVjbGFy
YXRpb246OnNldE1hcHBlZFByb3BlcnR5KFN0eWxlZEVsZW1lbnQqIGVsZW1lbnQsIGludCBwcm9w
ZXJ0eUlkLCBjb25zdCBTdHJpbmcmIHZhbHVlKQogeworICAgIC8vcHJpbnRmKCJzZXRNYXBwZWRQ
cm9wZXJ0eSglcCwgJWQsICclcycpXG4iLCB0aGlzLCBwcm9wZXJ0eUlkLCB2YWx1ZS51dGY4KCku
ZGF0YSgpKTsKICAgICBpZiAodmFsdWUuaXNFbXB0eSgpKSB7CiAgICAgICAgIHJlbW92ZU1hcHBl
ZFByb3BlcnR5KGVsZW1lbnQsIHByb3BlcnR5SWQpOwogICAgICAgICByZXR1cm47CiAgICAgfQog
Ci0gICAgaWYgKCFDU1NQYXJzZXI6OnBhcnNlTWFwcGVkQXR0cmlidXRlVmFsdWUodGhpcywgZWxl
bWVudCwgcHJvcGVydHlJZCwgdmFsdWUpKQorICAgIGlmICghQ1NTUGFyc2VyOjpwYXJzZU1hcHBl
ZEF0dHJpYnV0ZVZhbHVlKHRoaXMsIGVsZW1lbnQsIHByb3BlcnR5SWQsIHZhbHVlKSkgeworICAg
ICAgICByZW1vdmVNYXBwZWRQcm9wZXJ0eShlbGVtZW50LCBwcm9wZXJ0eUlkKTsKICAgICAgICAg
cmV0dXJuOworICAgIH0KIAogICAgIHNldE5lZWRzU3R5bGVSZWNhbGMoZWxlbWVudCk7CiB9CiAK
IHZvaWQgQ1NTTWFwcGVkQXR0cmlidXRlRGVjbGFyYXRpb246OnJlbW92ZU1hcHBlZFByb3BlcnR5
KFN0eWxlZEVsZW1lbnQqIGVsZW1lbnQsIGludCBwcm9wZXJ0eUlkKQogeworICAgIC8vcHJpbnRm
KCJyZW1vdmVNYXBwZWRQcm9wZXJ0eSglcCwgJWQpXG4iLCB0aGlzLCBwcm9wZXJ0eUlkKTsKICAg
ICByZW1vdmVQcm9wZXJ0eShwcm9wZXJ0eUlkLCBmYWxzZSwgZmFsc2UpOwogICAgIHNldE5lZWRz
U3R5bGVSZWNhbGMoZWxlbWVudCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20v
Q1NTTWFwcGVkQXR0cmlidXRlRGVjbGFyYXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9DU1NN
YXBwZWRBdHRyaWJ1dGVEZWNsYXJhdGlvbi5oCmluZGV4IGE1Yjc1NTEuLmZmMWJhNTAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9DU1NNYXBwZWRBdHRyaWJ1dGVEZWNsYXJhdGlvbi5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9DU1NNYXBwZWRBdHRyaWJ1dGVEZWNsYXJhdGlvbi5o
CkBAIC00MiwxMyArNDIsNiBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIH5DU1NNYXBwZWRBdHRy
aWJ1dGVEZWNsYXJhdGlvbigpOwogCi0gICAgdm9pZCBzZXRNYXBwZWRTdGF0ZShNYXBwZWRBdHRy
aWJ1dGVFbnRyeSB0eXBlLCBjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBjb25zdCBBdG9taWNT
dHJpbmcmIHZhbCkKLSAgICB7Ci0gICAgICAgIG1fZW50cnlUeXBlID0gdHlwZTsKLSAgICAgICAg
bV9hdHRyTmFtZSA9IG5hbWU7Ci0gICAgICAgIG1fYXR0clZhbHVlID0gdmFsOwotICAgIH0KLQog
ICAgIHZvaWQgc2V0TWFwcGVkUHJvcGVydHkoU3R5bGVkRWxlbWVudCosIGludCBwcm9wZXJ0eUlk
LCBpbnQgdmFsdWUpOwogICAgIHZvaWQgc2V0TWFwcGVkUHJvcGVydHkoU3R5bGVkRWxlbWVudCos
IGludCBwcm9wZXJ0eUlkLCBjb25zdCBTdHJpbmcmIHZhbHVlKTsKICAgICB2b2lkIHNldE1hcHBl
ZEltYWdlUHJvcGVydHkoU3R5bGVkRWxlbWVudCosIGludCBwcm9wZXJ0eUlkLCBjb25zdCBTdHJp
bmcmIHVybCk7CkBAIC02MSwxNiArNTQsMTAgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBDU1NN
YXBwZWRBdHRyaWJ1dGVEZWNsYXJhdGlvbigpCiAgICAgICAgIDogQ1NTTXV0YWJsZVN0eWxlRGVj
bGFyYXRpb24oKQotICAgICAgICAsIG1fZW50cnlUeXBlKGVOb25lKQotICAgICAgICAsIG1fYXR0
ck5hbWUoYW55UU5hbWUoKSkKICAgICB7CiAgICAgfQogCiAgICAgdm9pZCBzZXROZWVkc1N0eWxl
UmVjYWxjKFN0eWxlZEVsZW1lbnQqKTsKLQotICAgIE1hcHBlZEF0dHJpYnV0ZUVudHJ5IG1fZW50
cnlUeXBlOwotICAgIFF1YWxpZmllZE5hbWUgbV9hdHRyTmFtZTsKLSAgICBBdG9taWNTdHJpbmcg
bV9hdHRyVmFsdWU7CiB9OwogCiB9IC8vbmFtZXNwYWNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaAppbmRleCAy
NWVjNzg1Li4wNzEzMDc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmgKQEAgLTIxNyw2ICsyMTcsNyBAQCBw
dWJsaWM6CiAgICAgTmFtZWROb2RlTWFwKiBhdHRyaWJ1dGVzKGJvb2wgcmVhZG9ubHkgPSBmYWxz
ZSkgY29uc3Q7CiAKICAgICAvLyBUaGlzIG1ldGhvZCBpcyBjYWxsZWQgd2hlbmV2ZXIgYW4gYXR0
cmlidXRlIGlzIGFkZGVkLCBjaGFuZ2VkIG9yIHJlbW92ZWQuCisgICAgLy8gRklYTUU6IFJlbW92
ZSB0aGUgcHJlc2VydmVEZWNscyBhcmd1bWVudC4KICAgICB2aXJ0dWFsIHZvaWQgYXR0cmlidXRl
Q2hhbmdlZChBdHRyaWJ1dGUqLCBib29sIHByZXNlcnZlRGVjbHMgPSBmYWxzZSk7CiAKICAgICAv
LyBPbmx5IGNhbGxlZCBieSB0aGUgcGFyc2VyIGltbWVkaWF0ZWx5IGFmdGVyIGVsZW1lbnQgY29u
c3RydWN0aW9uLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL05hbWVkTm9kZU1hcC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTmFtZWROb2RlTWFwLmNwcAppbmRleCA5YjcyNDg4Li4y
NGFmYTlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTmFtZWROb2RlTWFwLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTmFtZWROb2RlTWFwLmNwcApAQCAtMzUzLDQgKzM1Mywx
MyBAQCB2b2lkIE5hbWVkTm9kZU1hcDo6Y3JlYXRlSW5saW5lU3R5bGVEZWNsKCkKICAgICBtX2lu
bGluZVN0eWxlRGVjbC0+c2V0U3RyaWN0UGFyc2luZyhtX2VsZW1lbnQtPmlzSFRNTEVsZW1lbnQo
KSAmJiAhbV9lbGVtZW50LT5kb2N1bWVudCgpLT5pblF1aXJrc01vZGUoKSk7CiB9CiAKK0NTU01h
cHBlZEF0dHJpYnV0ZURlY2xhcmF0aW9uKiBOYW1lZE5vZGVNYXA6OmVuc3VyZUF0dHJpYnV0ZVN0
eWxlKCkKK3sKKyAgICBpZiAoIW1fYXR0cmlidXRlU3R5bGUpIHsKKyAgICAgICAgbV9hdHRyaWJ1
dGVTdHlsZSA9IENTU01hcHBlZEF0dHJpYnV0ZURlY2xhcmF0aW9uOjpjcmVhdGUoKTsKKyAgICAg
ICAgbV9hdHRyaWJ1dGVTdHlsZS0+c2V0U3RyaWN0UGFyc2luZyhmYWxzZSk7CisgICAgfQorICAg
IHJldHVybiBtX2F0dHJpYnV0ZVN0eWxlLmdldCgpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTmFtZWROb2RlTWFwLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vTmFtZWROb2RlTWFwLmgKaW5kZXggMmU1Mzg0Ny4uNTg2MmI3MiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL05hbWVkTm9kZU1hcC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9OYW1lZE5vZGVNYXAuaApAQCAtMjYsNiArMjYsOCBAQAogI2RlZmluZSBOYW1l
ZE5vZGVNYXBfaAogCiAjaW5jbHVkZSAiQXR0cmlidXRlLmgiCisjaW5jbHVkZSAiQ1NTTWFwcGVk
QXR0cmlidXRlRGVjbGFyYXRpb24uaCIKKyNpbmNsdWRlICJDU1NQcm9wZXJ0eU5hbWVzLmgiCiAj
aW5jbHVkZSAiU3BhY2VTcGxpdFN0cmluZy5oIgogI2luY2x1ZGUgPHd0Zi9Ob3RGb3VuZC5oPgog
CkBAIC0xMDYsNiArMTA4LDkgQEAgcHVibGljOgogICAgIENTU011dGFibGVTdHlsZURlY2xhcmF0
aW9uKiBlbnN1cmVJbmxpbmVTdHlsZURlY2woKTsKICAgICB2b2lkIGRlc3Ryb3lJbmxpbmVTdHls
ZURlY2woKTsKIAorICAgIENTU01hcHBlZEF0dHJpYnV0ZURlY2xhcmF0aW9uKiBhdHRyaWJ1dGVT
dHlsZSgpIGNvbnN0IHsgcmV0dXJuIG1fYXR0cmlidXRlU3R5bGUuZ2V0KCk7IH0KKyAgICBDU1NN
YXBwZWRBdHRyaWJ1dGVEZWNsYXJhdGlvbiogZW5zdXJlQXR0cmlidXRlU3R5bGUoKTsKKwogcHJp
dmF0ZToKICAgICBOYW1lZE5vZGVNYXAoRWxlbWVudCogZWxlbWVudCkKICAgICAgICAgOiBtX2Vs
ZW1lbnQoZWxlbWVudCkKQEAgLTEzMCw2ICsxMzUsNyBAQCBwcml2YXRlOgogICAgIFZlY3RvcjxS
ZWZQdHI8QXR0cmlidXRlPiwgND4gbV9hdHRyaWJ1dGVzOwogICAgIEF0b21pY1N0cmluZyBtX2lk
Rm9yU3R5bGVSZXNvbHV0aW9uOwogICAgIFJlZlB0cjxDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlv
bj4gbV9pbmxpbmVTdHlsZURlY2w7CisgICAgUmVmUHRyPENTU01hcHBlZEF0dHJpYnV0ZURlY2xh
cmF0aW9uPiBtX2F0dHJpYnV0ZVN0eWxlOwogfTsKIAogaW5saW5lIEF0dHJpYnV0ZSogTmFtZWRO
b2RlTWFwOjpnZXRBdHRyaWJ1dGVJdGVtKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUpIGNvbnN0
CkBAIC0xODksMTYgKzE5NSw2IEBAIGlubGluZSB2b2lkIE5hbWVkTm9kZU1hcDo6cmVtb3ZlQXR0
cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUpCiAgICAgcmVtb3ZlQXR0cmlidXRlKGlu
ZGV4KTsKIH0KIAotaW5saW5lIHNpemVfdCBOYW1lZE5vZGVNYXA6Om1hcHBlZEF0dHJpYnV0ZUNv
dW50KCkgY29uc3QKLXsKLSAgICBzaXplX3QgY291bnQgPSAwOwotICAgIGZvciAoc2l6ZV90IGkg
PSAwOyBpIDwgbV9hdHRyaWJ1dGVzLnNpemUoKTsgKytpKSB7Ci0gICAgICAgIGlmIChtX2F0dHJp
YnV0ZXNbaV0tPmRlY2woKSkKLSAgICAgICAgICAgICsrY291bnQ7Ci0gICAgfQotICAgIHJldHVy
biBjb3VudDsKLX0KLQogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gTmFtZWRO
b2RlTWFwX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TdHlsZWRFbGVtZW50LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TdHlsZWRFbGVtZW50LmNwcAppbmRleCA4YmVlNTNkLi4x
NTI5MmMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vU3R5bGVkRWxlbWVudC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1N0eWxlZEVsZW1lbnQuY3BwCkBAIC00NCw2OSArNDQs
NiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CiAK
LXN0cnVjdCBNYXBwZWRBdHRyaWJ1dGVLZXkgewotICAgIHVpbnQxNl90IHR5cGU7Ci0gICAgU3Ry
aW5nSW1wbCogbmFtZTsKLSAgICBTdHJpbmdJbXBsKiB2YWx1ZTsKLSAgICBNYXBwZWRBdHRyaWJ1
dGVLZXkoTWFwcGVkQXR0cmlidXRlRW50cnkgdCA9IGVOb25lLCBTdHJpbmdJbXBsKiBuID0gMCwg
U3RyaW5nSW1wbCogdiA9IDApCi0gICAgICAgIDogdHlwZSh0KSwgbmFtZShuKSwgdmFsdWUodikg
eyB9Ci19OwotCi1zdGF0aWMgaW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBNYXBwZWRBdHRy
aWJ1dGVLZXkmIGEsIGNvbnN0IE1hcHBlZEF0dHJpYnV0ZUtleSYgYikKLSAgICB7IHJldHVybiBh
LnR5cGUgPT0gYi50eXBlICYmIGEubmFtZSA9PSBiLm5hbWUgJiYgYS52YWx1ZSA9PSBiLnZhbHVl
OyB9IAotCi1zdHJ1Y3QgTWFwcGVkQXR0cmlidXRlS2V5VHJhaXRzIDogV1RGOjpHZW5lcmljSGFz
aFRyYWl0czxNYXBwZWRBdHRyaWJ1dGVLZXk+IHsKLSAgICBzdGF0aWMgY29uc3QgYm9vbCBlbXB0
eVZhbHVlSXNaZXJvID0gdHJ1ZTsKLSAgICBzdGF0aWMgY29uc3QgYm9vbCBuZWVkc0Rlc3RydWN0
aW9uID0gZmFsc2U7Ci0gICAgc3RhdGljIHZvaWQgY29uc3RydWN0RGVsZXRlZFZhbHVlKE1hcHBl
ZEF0dHJpYnV0ZUtleSYgc2xvdCkgeyBzbG90LnR5cGUgPSBlTGFzdEVudHJ5OyB9Ci0gICAgc3Rh
dGljIGJvb2wgaXNEZWxldGVkVmFsdWUoY29uc3QgTWFwcGVkQXR0cmlidXRlS2V5JiB2YWx1ZSkg
eyByZXR1cm4gdmFsdWUudHlwZSA9PSBlTGFzdEVudHJ5OyB9Ci19OwotCi1zdHJ1Y3QgTWFwcGVk
QXR0cmlidXRlSGFzaCB7Ci0gICAgc3RhdGljIHVuc2lnbmVkIGhhc2goY29uc3QgTWFwcGVkQXR0
cmlidXRlS2V5Jik7Ci0gICAgc3RhdGljIGJvb2wgZXF1YWwoY29uc3QgTWFwcGVkQXR0cmlidXRl
S2V5JiBhLCBjb25zdCBNYXBwZWRBdHRyaWJ1dGVLZXkmIGIpIHsgcmV0dXJuIGEgPT0gYjsgfQot
ICAgIHN0YXRpYyBjb25zdCBib29sIHNhZmVUb0NvbXBhcmVUb0VtcHR5T3JEZWxldGVkID0gdHJ1
ZTsKLX07Ci0KLXR5cGVkZWYgSGFzaE1hcDxNYXBwZWRBdHRyaWJ1dGVLZXksIENTU01hcHBlZEF0
dHJpYnV0ZURlY2xhcmF0aW9uKiwgTWFwcGVkQXR0cmlidXRlSGFzaCwgTWFwcGVkQXR0cmlidXRl
S2V5VHJhaXRzPiBNYXBwZWRBdHRyaWJ1dGVEZWNsczsKLQotc3RhdGljIE1hcHBlZEF0dHJpYnV0
ZURlY2xzKiBtYXBwZWRBdHRyaWJ1dGVEZWNscyA9IDA7Ci0KLUNTU01hcHBlZEF0dHJpYnV0ZURl
Y2xhcmF0aW9uKiBTdHlsZWRFbGVtZW50OjpnZXRNYXBwZWRBdHRyaWJ1dGVEZWNsKE1hcHBlZEF0
dHJpYnV0ZUVudHJ5IGVudHJ5VHlwZSwgQXR0cmlidXRlKiBhdHRyKQotewotICAgIGlmICghbWFw
cGVkQXR0cmlidXRlRGVjbHMpCi0gICAgICAgIHJldHVybiAwOwotICAgIHJldHVybiBtYXBwZWRB
dHRyaWJ1dGVEZWNscy0+Z2V0KE1hcHBlZEF0dHJpYnV0ZUtleShlbnRyeVR5cGUsIGF0dHItPm5h
bWUoKS5sb2NhbE5hbWUoKS5pbXBsKCksIGF0dHItPnZhbHVlKCkuaW1wbCgpKSk7Ci19Ci0KLUNT
U01hcHBlZEF0dHJpYnV0ZURlY2xhcmF0aW9uKiBTdHlsZWRFbGVtZW50OjpnZXRNYXBwZWRBdHRy
aWJ1dGVEZWNsKE1hcHBlZEF0dHJpYnV0ZUVudHJ5IHR5cGUsIGNvbnN0IFF1YWxpZmllZE5hbWUm
IG5hbWUsIGNvbnN0IEF0b21pY1N0cmluZyYgdmFsdWUpCi17Ci0gICAgaWYgKCFtYXBwZWRBdHRy
aWJ1dGVEZWNscykKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgcmV0dXJuIG1hcHBlZEF0dHJpYnV0
ZURlY2xzLT5nZXQoTWFwcGVkQXR0cmlidXRlS2V5KHR5cGUsIG5hbWUubG9jYWxOYW1lKCkuaW1w
bCgpLCB2YWx1ZS5pbXBsKCkpKTsKLX0KLQotdm9pZCBTdHlsZWRFbGVtZW50OjpzZXRNYXBwZWRB
dHRyaWJ1dGVEZWNsKE1hcHBlZEF0dHJpYnV0ZUVudHJ5IGVudHJ5VHlwZSwgQXR0cmlidXRlKiBh
dHRyLCBDU1NNYXBwZWRBdHRyaWJ1dGVEZWNsYXJhdGlvbiogZGVjbCkKLXsKLSAgICBpZiAoIW1h
cHBlZEF0dHJpYnV0ZURlY2xzKQotICAgICAgICBtYXBwZWRBdHRyaWJ1dGVEZWNscyA9IG5ldyBN
YXBwZWRBdHRyaWJ1dGVEZWNsczsKLSAgICBtYXBwZWRBdHRyaWJ1dGVEZWNscy0+c2V0KE1hcHBl
ZEF0dHJpYnV0ZUtleShlbnRyeVR5cGUsIGF0dHItPm5hbWUoKS5sb2NhbE5hbWUoKS5pbXBsKCks
IGF0dHItPnZhbHVlKCkuaW1wbCgpKSwgZGVjbCk7Ci19Ci0KLXZvaWQgU3R5bGVkRWxlbWVudDo6
c2V0TWFwcGVkQXR0cmlidXRlRGVjbChNYXBwZWRBdHRyaWJ1dGVFbnRyeSBlbnRyeVR5cGUsIGNv
bnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0IEF0b21pY1N0cmluZyYgdmFsdWUsIENTU01h
cHBlZEF0dHJpYnV0ZURlY2xhcmF0aW9uKiBkZWNsKQotewotICAgIGlmICghbWFwcGVkQXR0cmli
dXRlRGVjbHMpCi0gICAgICAgIG1hcHBlZEF0dHJpYnV0ZURlY2xzID0gbmV3IE1hcHBlZEF0dHJp
YnV0ZURlY2xzOwotICAgIG1hcHBlZEF0dHJpYnV0ZURlY2xzLT5zZXQoTWFwcGVkQXR0cmlidXRl
S2V5KGVudHJ5VHlwZSwgbmFtZS5sb2NhbE5hbWUoKS5pbXBsKCksIHZhbHVlLmltcGwoKSksIGRl
Y2wpOwotfQotCi12b2lkIFN0eWxlZEVsZW1lbnQ6OnJlbW92ZU1hcHBlZEF0dHJpYnV0ZURlY2wo
TWFwcGVkQXR0cmlidXRlRW50cnkgZW50cnlUeXBlLCBjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRy
TmFtZSwgY29uc3QgQXRvbWljU3RyaW5nJiBhdHRyVmFsdWUpCi17Ci0gICAgaWYgKCFtYXBwZWRB
dHRyaWJ1dGVEZWNscykKLSAgICAgICAgcmV0dXJuOwotICAgIG1hcHBlZEF0dHJpYnV0ZURlY2xz
LT5yZW1vdmUoTWFwcGVkQXR0cmlidXRlS2V5KGVudHJ5VHlwZSwgYXR0ck5hbWUubG9jYWxOYW1l
KCkuaW1wbCgpLCBhdHRyVmFsdWUuaW1wbCgpKSk7Ci19Ci0KIHZvaWQgU3R5bGVkRWxlbWVudDo6
dXBkYXRlU3R5bGVBdHRyaWJ1dGUoKSBjb25zdAogewogICAgIEFTU0VSVCghaXNTdHlsZUF0dHJp
YnV0ZVZhbGlkKCkpOwpAQCAtMTM2LDU4ICs3MywxNCBAQCB2b2lkIFN0eWxlZEVsZW1lbnQ6OmF0
dHJpYnV0ZUNoYW5nZWQoQXR0cmlidXRlKiBhdHRyLCBib29sIHByZXNlcnZlRGVjbHMpCiAgICAg
ICAgIEVsZW1lbnQ6OmF0dHJpYnV0ZUNoYW5nZWQoYXR0ciwgcHJlc2VydmVEZWNscyk7CiAgICAg
ICAgIHJldHVybjsKICAgICB9Ci0gCi0gICAgaWYgKGF0dHItPmRlY2woKSAmJiAhcHJlc2VydmVE
ZWNscykgewotICAgICAgICBhdHRyLT5zZXREZWNsKDApOwotICAgICAgICBzZXROZWVkc1N0eWxl
UmVjYWxjKCk7Ci0gICAgfQotCi0gICAgYm9vbCBjaGVja0RlY2wgPSB0cnVlOwotICAgIE1hcHBl
ZEF0dHJpYnV0ZUVudHJ5IGVudHJ5OwotICAgIGJvb2wgbmVlZFRvUGFyc2UgPSBtYXBUb0VudHJ5
KGF0dHItPm5hbWUoKSwgZW50cnkpOwotICAgIGlmIChwcmVzZXJ2ZURlY2xzKSB7Ci0gICAgICAg
IGlmIChhdHRyLT5kZWNsKCkpIHsKLSAgICAgICAgICAgIHNldE5lZWRzU3R5bGVSZWNhbGMoKTsK
LSAgICAgICAgICAgIGNoZWNrRGVjbCA9IGZhbHNlOwotICAgICAgICB9Ci0gICAgfSBlbHNlIGlm
ICghYXR0ci0+aXNOdWxsKCkgJiYgZW50cnkgIT0gZU5vbmUpIHsKLSAgICAgICAgQ1NTTWFwcGVk
QXR0cmlidXRlRGVjbGFyYXRpb24qIGRlY2wgPSBnZXRNYXBwZWRBdHRyaWJ1dGVEZWNsKGVudHJ5
LCBhdHRyKTsKLSAgICAgICAgaWYgKGRlY2wpIHsKLSAgICAgICAgICAgIGF0dHItPnNldERlY2wo
ZGVjbCk7Ci0gICAgICAgICAgICBzZXROZWVkc1N0eWxlUmVjYWxjKCk7Ci0gICAgICAgICAgICBj
aGVja0RlY2wgPSBmYWxzZTsKLSAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICBuZWVkVG9QYXJz
ZSA9IHRydWU7Ci0gICAgfQogCi0gICAgLy8gcGFyc2VNYXBwZWRBdHRyaWJ1dGUoKSBtaWdodCBj
cmVhdGUgYSBDU1NNYXBwZWRBdHRyaWJ1dGVEZWNsYXJhdGlvbiBvbiB0aGUgYXR0cmlidXRlLiAg
Ci0gICAgLy8gTm9ybWFsbHkgd2Ugd291bGQgYmUgY29uY2VybmVkIGFib3V0IHJlc2V0aW5nIHRo
ZSBwYXJlbnQgb2YgdGhvc2UgZGVjbGFyYXRpb25zIGluIFN0eWxlZEVsZW1lbnQ6OmRpZE1vdmVU
b05ld0RvY3VtZW50KCkuCi0gICAgLy8gQnV0IGN1cnJlbnRseSB3ZSBhbHdheXMgY2xlYXIgaXRz
IHBhcmVudCBhbmQgbm9kZSBiZWxvdyB3aGVuIGFkZGluZyBpdCB0byB0aGUgZGVjbCB0YWJsZS4g
IAotICAgIC8vIElmIHRoYXQgY2hhbmdlcyBmb3Igc29tZSByZWFzb24gbW92aW5nIGJldHdlZW4g
ZG9jdW1lbnRzIHdpbGwgYmUgYnVnZ3kuCi0gICAgLy8gd2ViYXJjaGl2ZS9hZG9wdC1hdHRyaWJ1
dGUtc3R5bGVkLW5vZGUtd2ViYXJjaGl2ZS5odG1sIHNob3VsZCBjYXRjaCBhbnkgcmVzdWx0aW5n
IGNyYXNoZXMuCi0gICAgaWYgKG5lZWRUb1BhcnNlKQorICAgIGlmICghKGF0dHItPm5hbWUoKSA9
PSBzdHlsZUF0dHIgJiYgaXNTeW5jaHJvbml6aW5nU3R5bGVBdHRyaWJ1dGUoKSkpCiAgICAgICAg
IHBhcnNlTWFwcGVkQXR0cmlidXRlKGF0dHIpOwogCi0gICAgaWYgKGVudHJ5ID09IGVOb25lKQot
ICAgICAgICByZWNhbGNTdHlsZUlmTmVlZGVkQWZ0ZXJBdHRyaWJ1dGVDaGFuZ2VkKGF0dHIpOwot
Ci0gICAgaWYgKGNoZWNrRGVjbCAmJiBhdHRyLT5kZWNsKCkpIHsKLSAgICAgICAgLy8gQWRkIHRo
ZSBkZWNsIHRvIHRoZSB0YWJsZSBpbiB0aGUgYXBwcm9wcmlhdGUgc3BvdC4KLSAgICAgICAgc2V0
TWFwcGVkQXR0cmlidXRlRGVjbChlbnRyeSwgYXR0ciwgYXR0ci0+ZGVjbCgpKTsKLSAgICAgICAg
YXR0ci0+ZGVjbCgpLT5zZXRNYXBwZWRTdGF0ZShlbnRyeSwgYXR0ci0+bmFtZSgpLCBhdHRyLT52
YWx1ZSgpKTsKLSAgICB9Ci0KKyAgICByZWNhbGNTdHlsZUlmTmVlZGVkQWZ0ZXJBdHRyaWJ1dGVD
aGFuZ2VkKGF0dHIpOwogICAgIHVwZGF0ZUFmdGVyQXR0cmlidXRlQ2hhbmdlZChhdHRyKTsKIH0K
IAotYm9vbCBTdHlsZWRFbGVtZW50OjptYXBUb0VudHJ5KGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0
dHJOYW1lLCBNYXBwZWRBdHRyaWJ1dGVFbnRyeSYgcmVzdWx0KSBjb25zdAotewotICAgIHJlc3Vs
dCA9IGVOb25lOwotICAgIGlmIChhdHRyTmFtZSA9PSBzdHlsZUF0dHIpCi0gICAgICAgIHJldHVy
biAhaXNTeW5jaHJvbml6aW5nU3R5bGVBdHRyaWJ1dGUoKTsKLSAgICByZXR1cm4gdHJ1ZTsKLX0K
LQogdm9pZCBTdHlsZWRFbGVtZW50OjpjbGFzc0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgQXRvbWlj
U3RyaW5nJiBuZXdDbGFzc1N0cmluZykKIHsKICAgICBjb25zdCBVQ2hhciogY2hhcmFjdGVycyA9
IG5ld0NsYXNzU3RyaW5nLmNoYXJhY3RlcnMoKTsKQEAgLTIyNSw0MCArMTE4LDQ0IEBAIHZvaWQg
U3R5bGVkRWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUoQXR0cmlidXRlKiBhdHRyKQogICAg
IH0KIH0KIAotdm9pZCBTdHlsZWRFbGVtZW50OjpyZW1vdmVDU1NQcm9wZXJ0eShBdHRyaWJ1dGUq
IGF0dHJpYnV0ZSwgaW50IGlkKQordm9pZCBTdHlsZWRFbGVtZW50OjpyZW1vdmVDU1NQcm9wZXJ0
aWVzKGludCBpZDEsIGludCBpZDIsIGludCBpZDMsIGludCBpZDQsIGludCBpZDUpCiB7Ci0gICAg
aWYgKCFhdHRyaWJ1dGUtPmRlY2woKSkKLSAgICAgICAgY3JlYXRlTWFwcGVkRGVjbChhdHRyaWJ1
dGUpOwotICAgIGF0dHJpYnV0ZS0+ZGVjbCgpLT5yZW1vdmVNYXBwZWRQcm9wZXJ0eSh0aGlzLCBp
ZCk7CisgICAgQ1NTTWFwcGVkQXR0cmlidXRlRGVjbGFyYXRpb24qIHN0eWxlID0gYXR0cmlidXRl
U3R5bGUoKTsKKyAgICBpZiAoIXN0eWxlKQorICAgICAgICByZXR1cm47CisKKyAgICBBU1NFUlQo
aWQxICE9IENTU1Byb3BlcnR5SW52YWxpZCk7CisgICAgc3R5bGUtPnJlbW92ZU1hcHBlZFByb3Bl
cnR5KHRoaXMsIGlkMSk7CisKKyAgICBpZiAoaWQyICE9IENTU1Byb3BlcnR5SW52YWxpZCkKKyAg
ICAgICAgc3R5bGUtPnJlbW92ZU1hcHBlZFByb3BlcnR5KHRoaXMsIGlkMik7CisgICAgaWYgKGlk
MyAhPSBDU1NQcm9wZXJ0eUludmFsaWQpCisgICAgICAgIHN0eWxlLT5yZW1vdmVNYXBwZWRQcm9w
ZXJ0eSh0aGlzLCBpZDMpOworICAgIGlmIChpZDQgIT0gQ1NTUHJvcGVydHlJbnZhbGlkKQorICAg
ICAgICBzdHlsZS0+cmVtb3ZlTWFwcGVkUHJvcGVydHkodGhpcywgaWQ0KTsKKyAgICBpZiAoaWQ1
ICE9IENTU1Byb3BlcnR5SW52YWxpZCkKKyAgICAgICAgc3R5bGUtPnJlbW92ZU1hcHBlZFByb3Bl
cnR5KHRoaXMsIGlkNSk7CiB9CiAKLXZvaWQgU3R5bGVkRWxlbWVudDo6YWRkQ1NTUHJvcGVydHko
QXR0cmlidXRlKiBhdHRyaWJ1dGUsIGludCBpZCwgY29uc3QgU3RyaW5nICZ2YWx1ZSkKK3ZvaWQg
U3R5bGVkRWxlbWVudDo6YWRkQ1NTUHJvcGVydHkoaW50IGlkLCBjb25zdCBTdHJpbmcgJnZhbHVl
KQogewotICAgIGlmICghYXR0cmlidXRlLT5kZWNsKCkpCi0gICAgICAgIGNyZWF0ZU1hcHBlZERl
Y2woYXR0cmlidXRlKTsKLSAgICBhdHRyaWJ1dGUtPmRlY2woKS0+c2V0TWFwcGVkUHJvcGVydHko
dGhpcywgaWQsIHZhbHVlKTsKKyAgICBhdHRyaWJ1dGVzKGZhbHNlKS0+ZW5zdXJlQXR0cmlidXRl
U3R5bGUoKS0+c2V0TWFwcGVkUHJvcGVydHkodGhpcywgaWQsIHZhbHVlKTsKIH0KIAotdm9pZCBT
dHlsZWRFbGVtZW50OjphZGRDU1NQcm9wZXJ0eShBdHRyaWJ1dGUqIGF0dHJpYnV0ZSwgaW50IGlk
LCBpbnQgdmFsdWUpCit2b2lkIFN0eWxlZEVsZW1lbnQ6OmFkZENTU1Byb3BlcnR5KGludCBpZCwg
aW50IHZhbHVlKQogewotICAgIGlmICghYXR0cmlidXRlLT5kZWNsKCkpCi0gICAgICAgIGNyZWF0
ZU1hcHBlZERlY2woYXR0cmlidXRlKTsKLSAgICBhdHRyaWJ1dGUtPmRlY2woKS0+c2V0TWFwcGVk
UHJvcGVydHkodGhpcywgaWQsIHZhbHVlKTsKKyAgICBhdHRyaWJ1dGVzKGZhbHNlKS0+ZW5zdXJl
QXR0cmlidXRlU3R5bGUoKS0+c2V0TWFwcGVkUHJvcGVydHkodGhpcywgaWQsIHZhbHVlKTsKIH0K
IAotdm9pZCBTdHlsZWRFbGVtZW50OjphZGRDU1NJbWFnZVByb3BlcnR5KEF0dHJpYnV0ZSogYXR0
cmlidXRlLCBpbnQgaWQsIGNvbnN0IFN0cmluZyYgdXJsKQordm9pZCBTdHlsZWRFbGVtZW50Ojph
ZGRDU1NJbWFnZVByb3BlcnR5KGludCBpZCwgY29uc3QgU3RyaW5nJiB1cmwpCiB7Ci0gICAgaWYg
KCFhdHRyaWJ1dGUtPmRlY2woKSkKLSAgICAgICAgY3JlYXRlTWFwcGVkRGVjbChhdHRyaWJ1dGUp
OwotICAgIGF0dHJpYnV0ZS0+ZGVjbCgpLT5zZXRNYXBwZWRJbWFnZVByb3BlcnR5KHRoaXMsIGlk
LCB1cmwpOworICAgIGF0dHJpYnV0ZXMoZmFsc2UpLT5lbnN1cmVBdHRyaWJ1dGVTdHlsZSgpLT5z
ZXRNYXBwZWRJbWFnZVByb3BlcnR5KHRoaXMsIGlkLCB1cmwpOwogfQogCi12b2lkIFN0eWxlZEVs
ZW1lbnQ6OmFkZENTU0xlbmd0aChBdHRyaWJ1dGUqIGF0dHJpYnV0ZSwgaW50IGlkLCBjb25zdCBT
dHJpbmcgJnZhbHVlKQordm9pZCBTdHlsZWRFbGVtZW50OjphZGRDU1NMZW5ndGgoaW50IGlkLCBj
b25zdCBTdHJpbmcgJnZhbHVlKQogewogICAgIC8vIEZJWE1FOiBUaGlzIGZ1bmN0aW9uIHNob3Vs
ZCBub3Qgc3BpbiB1cCB0aGUgQ1NTIHBhcnNlciwgYnV0IHNob3VsZCBpbnN0ZWFkIGp1c3QgZmln
dXJlIG91dCB0aGUgY29ycmVjdAogICAgIC8vIGxlbmd0aCB1bml0IGFuZCBtYWtlIHRoZSBhcHBy
b3ByaWF0ZSBwYXJzZWQgdmFsdWUuCi0gICAgaWYgKCFhdHRyaWJ1dGUtPmRlY2woKSkKLSAgICAg
ICAgY3JlYXRlTWFwcGVkRGVjbChhdHRyaWJ1dGUpOwogCiAgICAgLy8gc3RyaXAgYXR0cmlidXRl
IGdhcmJhZ2UuLgogICAgIFN0cmluZ0ltcGwqIHYgPSB2YWx1ZS5pbXBsKCk7CkBAIC0yODEsMTIg
KzE3OCwxMiBAQCB2b2lkIFN0eWxlZEVsZW1lbnQ6OmFkZENTU0xlbmd0aChBdHRyaWJ1dGUqIGF0
dHJpYnV0ZSwgaW50IGlkLCBjb25zdCBTdHJpbmcgJnZhbAogICAgICAgICB9CiAKICAgICAgICAg
aWYgKGwgIT0gdi0+bGVuZ3RoKCkpIHsKLSAgICAgICAgICAgIGF0dHJpYnV0ZS0+ZGVjbCgpLT5z
ZXRNYXBwZWRMZW5ndGhQcm9wZXJ0eSh0aGlzLCBpZCwgdi0+c3Vic3RyaW5nKDAsIGwpKTsKKyAg
ICAgICAgICAgIGF0dHJpYnV0ZXMoZmFsc2UpLT5lbnN1cmVBdHRyaWJ1dGVTdHlsZSgpLT5zZXRN
YXBwZWRMZW5ndGhQcm9wZXJ0eSh0aGlzLCBpZCwgdi0+c3Vic3RyaW5nKDAsIGwpKTsKICAgICAg
ICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgIH0KIAotICAgIGF0dHJpYnV0ZS0+ZGVjbCgp
LT5zZXRNYXBwZWRMZW5ndGhQcm9wZXJ0eSh0aGlzLCBpZCwgdmFsdWUpOworICAgIGF0dHJpYnV0
ZXMoZmFsc2UpLT5lbnN1cmVBdHRyaWJ1dGVTdHlsZSgpLT5zZXRNYXBwZWRMZW5ndGhQcm9wZXJ0
eSh0aGlzLCBpZCwgdmFsdWUpOwogfQogCiBzdGF0aWMgU3RyaW5nIHBhcnNlQ29sb3JTdHJpbmdX
aXRoQ3JhenlMZWdhY3lSdWxlcyhjb25zdCBTdHJpbmcmIGNvbG9yU3RyaW5nKQpAQCAtMzQyLDU3
ICsyMzksMzAgQEAgc3RhdGljIFN0cmluZyBwYXJzZUNvbG9yU3RyaW5nV2l0aENyYXp5TGVnYWN5
UnVsZXMoY29uc3QgU3RyaW5nJiBjb2xvclN0cmluZykKIH0KIAogLy8gQ29sb3IgcGFyc2luZyB0
aGF0IG1hdGNoZXMgSFRNTCdzICJydWxlcyBmb3IgcGFyc2luZyBhIGxlZ2FjeSBjb2xvciB2YWx1
ZSIKLXZvaWQgU3R5bGVkRWxlbWVudDo6YWRkQ1NTQ29sb3IoQXR0cmlidXRlKiBhdHRyaWJ1dGUs
IGludCBpZCwgY29uc3QgU3RyaW5nJiBhdHRyaWJ1dGVWYWx1ZSkKK3ZvaWQgU3R5bGVkRWxlbWVu
dDo6YWRkQ1NTQ29sb3IoaW50IGlkLCBjb25zdCBTdHJpbmcmIGF0dHJpYnV0ZVZhbHVlKQogewog
ICAgIC8vIEFuIGVtcHR5IHN0cmluZyBkb2Vzbid0IGFwcGx5IGEgY29sb3IuIChPbmUgY29udGFp
bmluZyBvbmx5IHdoaXRlc3BhY2UgZG9lcywgd2hpY2ggaXMgd2h5IHRoaXMgY2hlY2sgb2NjdXJz
IGJlZm9yZSBzdHJpcHBpbmcuKQotICAgIGlmIChhdHRyaWJ1dGVWYWx1ZS5pc0VtcHR5KCkpCisg
ICAgaWYgKGF0dHJpYnV0ZVZhbHVlLmlzRW1wdHkoKSkgeworICAgICAgICByZW1vdmVDU1NQcm9w
ZXJ0eShpZCk7CiAgICAgICAgIHJldHVybjsKKyAgICB9CiAKICAgICBTdHJpbmcgY29sb3JTdHJp
bmcgPSBhdHRyaWJ1dGVWYWx1ZS5zdHJpcFdoaXRlU3BhY2UoKTsKIAogICAgIC8vICJ0cmFuc3Bh
cmVudCIgZG9lc24ndCBhcHBseSBhIGNvbG9yIGVpdGhlci4KLSAgICBpZiAoZXF1YWxJZ25vcmlu
Z0Nhc2UoY29sb3JTdHJpbmcsICJ0cmFuc3BhcmVudCIpKQorICAgIGlmIChlcXVhbElnbm9yaW5n
Q2FzZShjb2xvclN0cmluZywgInRyYW5zcGFyZW50IikpIHsKKyAgICAgICAgcmVtb3ZlQ1NTUHJv
cGVydHkoaWQpOwogICAgICAgICByZXR1cm47Ci0KLSAgICBpZiAoIWF0dHJpYnV0ZS0+ZGVjbCgp
KQotICAgICAgICBjcmVhdGVNYXBwZWREZWNsKGF0dHJpYnV0ZSk7CisgICAgfQogCiAgICAgLy8g
SWYgdGhlIHN0cmluZyBpcyBhIG5hbWVkIENTUyBjb2xvciBvciBhIDMvNi1kaWdpdCBoZXggY29s
b3IsIHVzZSB0aGF0LgogICAgIENvbG9yIHBhcnNlZENvbG9yKGNvbG9yU3RyaW5nKTsKICAgICBp
ZiAocGFyc2VkQ29sb3IuaXNWYWxpZCgpKSB7Ci0gICAgICAgIGF0dHJpYnV0ZS0+ZGVjbCgpLT5z
ZXRNYXBwZWRQcm9wZXJ0eSh0aGlzLCBpZCwgY29sb3JTdHJpbmcpOworICAgICAgICBhdHRyaWJ1
dGVzKGZhbHNlKS0+ZW5zdXJlQXR0cmlidXRlU3R5bGUoKS0+c2V0TWFwcGVkUHJvcGVydHkodGhp
cywgaWQsIGNvbG9yU3RyaW5nKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGF0dHJp
YnV0ZS0+ZGVjbCgpLT5zZXRNYXBwZWRQcm9wZXJ0eSh0aGlzLCBpZCwgcGFyc2VDb2xvclN0cmlu
Z1dpdGhDcmF6eUxlZ2FjeVJ1bGVzKGNvbG9yU3RyaW5nKSk7Ci19Ci0KLXZvaWQgU3R5bGVkRWxl
bWVudDo6Y3JlYXRlTWFwcGVkRGVjbChBdHRyaWJ1dGUqIGF0dHIpCi17Ci0gICAgUmVmUHRyPENT
U01hcHBlZEF0dHJpYnV0ZURlY2xhcmF0aW9uPiBkZWNsID0gQ1NTTWFwcGVkQXR0cmlidXRlRGVj
bGFyYXRpb246OmNyZWF0ZSgpOwotICAgIGF0dHItPnNldERlY2woZGVjbCk7Ci0gICAgQVNTRVJU
KCFkZWNsLT51c2VTdHJpY3RQYXJzaW5nKCkpOwotfQotCi11bnNpZ25lZCBNYXBwZWRBdHRyaWJ1
dGVIYXNoOjpoYXNoKGNvbnN0IE1hcHBlZEF0dHJpYnV0ZUtleSYga2V5KQotewotICAgIENPTVBJ
TEVfQVNTRVJUKHNpemVvZihrZXkubmFtZSkgPT0gNCB8fCBzaXplb2Yoa2V5Lm5hbWUpID09IDgs
IGtleV9uYW1lX3NpemUpOwotICAgIENPTVBJTEVfQVNTRVJUKHNpemVvZihrZXkudmFsdWUpID09
IDQgfHwgc2l6ZW9mKGtleS52YWx1ZSkgPT0gOCwga2V5X3ZhbHVlX3NpemUpOwotCi0gICAgU3Ry
aW5nSGFzaGVyIGhhc2hlcjsKLSAgICBjb25zdCBVQ2hhciogZGF0YTsKLQotICAgIGRhdGEgPSBy
ZWludGVycHJldF9jYXN0PGNvbnN0IFVDaGFyKj4oJmtleS5uYW1lKTsKLSAgICBoYXNoZXIuYWRk
Q2hhcmFjdGVycyhkYXRhWzBdLCBkYXRhWzFdKTsKLSAgICBpZiAoc2l6ZW9mKGtleS5uYW1lKSA9
PSA4KQotICAgICAgICBoYXNoZXIuYWRkQ2hhcmFjdGVycyhkYXRhWzJdLCBkYXRhWzNdKTsKLQot
ICAgIGRhdGEgPSByZWludGVycHJldF9jYXN0PGNvbnN0IFVDaGFyKj4oJmtleS52YWx1ZSk7Ci0g
ICAgaGFzaGVyLmFkZENoYXJhY3RlcnMoZGF0YVswXSwgZGF0YVsxXSk7Ci0gICAgaWYgKHNpemVv
ZihrZXkudmFsdWUpID09IDgpCi0gICAgICAgIGhhc2hlci5hZGRDaGFyYWN0ZXJzKGRhdGFbMl0s
IGRhdGFbM10pOwotCi0gICAgcmV0dXJuIGhhc2hlci5oYXNoKCk7CisgICAgYXR0cmlidXRlcyhm
YWxzZSktPmVuc3VyZUF0dHJpYnV0ZVN0eWxlKCktPnNldE1hcHBlZFByb3BlcnR5KHRoaXMsIGlk
LCBwYXJzZUNvbG9yU3RyaW5nV2l0aENyYXp5TGVnYWN5UnVsZXMoY29sb3JTdHJpbmcpKTsKIH0K
IAogdm9pZCBTdHlsZWRFbGVtZW50Ojpjb3B5Tm9uQXR0cmlidXRlUHJvcGVydGllcyhjb25zdCBF
bGVtZW50KiBzb3VyY2VFbGVtZW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1N0
eWxlZEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TdHlsZWRFbGVtZW50LmgKaW5kZXgg
OTMyYzg0Ny4uNzgwYjE3YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1N0eWxlZEVs
ZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU3R5bGVkRWxlbWVudC5oCkBAIC0zOSwy
MSArMzksMTQgQEAgcHVibGljOgogICAgIHZpcnR1YWwgflN0eWxlZEVsZW1lbnQoKTsKIAogICAg
IHNpemVfdCBtYXBwZWRBdHRyaWJ1dGVDb3VudCgpIGNvbnN0IHsgcmV0dXJuIGF0dHJpYnV0ZU1h
cCgpID8gYXR0cmlidXRlTWFwKCktPm1hcHBlZEF0dHJpYnV0ZUNvdW50KCkgOiAwOyB9Ci0gICAg
Ym9vbCBpc01hcHBlZEF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lKSBjb25zdCB7
IE1hcHBlZEF0dHJpYnV0ZUVudHJ5IHJlcyA9IGVOb25lOyBtYXBUb0VudHJ5KG5hbWUsIHJlcyk7
IHJldHVybiByZXMgIT0gZU5vbmU7IH0KIAotICAgIHZvaWQgYWRkQ1NTTGVuZ3RoKEF0dHJpYnV0
ZSosIGludCBpZCwgY29uc3QgU3RyaW5nJiB2YWx1ZSk7Ci0gICAgdm9pZCBhZGRDU1NQcm9wZXJ0
eShBdHRyaWJ1dGUqLCBpbnQgaWQsIGNvbnN0IFN0cmluZyYgdmFsdWUpOwotICAgIHZvaWQgYWRk
Q1NTUHJvcGVydHkoQXR0cmlidXRlKiwgaW50IGlkLCBpbnQgdmFsdWUpOwotICAgIHZvaWQgYWRk
Q1NTSW1hZ2VQcm9wZXJ0eShBdHRyaWJ1dGUqLCBpbnQgcHJvcGVydHlJRCwgY29uc3QgU3RyaW5n
JiB1cmwpOwotICAgIHZvaWQgYWRkQ1NTQ29sb3IoQXR0cmlidXRlKiwgaW50IGlkLCBjb25zdCBT
dHJpbmcmIGNvbG9yKTsKLSAgICB2b2lkIHJlbW92ZUNTU1Byb3BlcnR5KEF0dHJpYnV0ZSosIGlu
dCBpZCk7Ci0KLSAgICBzdGF0aWMgQ1NTTWFwcGVkQXR0cmlidXRlRGVjbGFyYXRpb24qIGdldE1h
cHBlZEF0dHJpYnV0ZURlY2woTWFwcGVkQXR0cmlidXRlRW50cnksIGNvbnN0IFF1YWxpZmllZE5h
bWUmIG5hbWUsIGNvbnN0IEF0b21pY1N0cmluZyYgdmFsdWUpOwotICAgIHN0YXRpYyB2b2lkIHNl
dE1hcHBlZEF0dHJpYnV0ZURlY2woTWFwcGVkQXR0cmlidXRlRW50cnksIGNvbnN0IFF1YWxpZmll
ZE5hbWUmIG5hbWUsIGNvbnN0IEF0b21pY1N0cmluZyYgdmFsdWUsIENTU01hcHBlZEF0dHJpYnV0
ZURlY2xhcmF0aW9uKik7Ci0gICAgc3RhdGljIHZvaWQgcmVtb3ZlTWFwcGVkQXR0cmlidXRlRGVj
bChNYXBwZWRBdHRyaWJ1dGVFbnRyeSwgY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3Qg
QXRvbWljU3RyaW5nJiB2YWx1ZSk7Ci0KLSAgICBzdGF0aWMgQ1NTTWFwcGVkQXR0cmlidXRlRGVj
bGFyYXRpb24qIGdldE1hcHBlZEF0dHJpYnV0ZURlY2woTWFwcGVkQXR0cmlidXRlRW50cnksIEF0
dHJpYnV0ZSopOwotICAgIHN0YXRpYyB2b2lkIHNldE1hcHBlZEF0dHJpYnV0ZURlY2woTWFwcGVk
QXR0cmlidXRlRW50cnksIEF0dHJpYnV0ZSosIENTU01hcHBlZEF0dHJpYnV0ZURlY2xhcmF0aW9u
Kik7CisgICAgdm9pZCBhZGRDU1NMZW5ndGgoaW50IGlkLCBjb25zdCBTdHJpbmcmIHZhbHVlKTsK
KyAgICB2b2lkIGFkZENTU1Byb3BlcnR5KGludCBpZCwgY29uc3QgU3RyaW5nJiB2YWx1ZSk7Cisg
ICAgdm9pZCBhZGRDU1NQcm9wZXJ0eShpbnQgaWQsIGludCB2YWx1ZSk7CisgICAgdm9pZCBhZGRD
U1NJbWFnZVByb3BlcnR5KGludCBwcm9wZXJ0eUlELCBjb25zdCBTdHJpbmcmIHVybCk7CisgICAg
dm9pZCBhZGRDU1NDb2xvcihpbnQgaWQsIGNvbnN0IFN0cmluZyYgY29sb3IpOworICAgIHZvaWQg
cmVtb3ZlQ1NTUHJvcGVydGllcyhpbnQgaWQxLCBpbnQgaWQyID0gQ1NTUHJvcGVydHlJbnZhbGlk
LCBpbnQgaWQzID0gQ1NTUHJvcGVydHlJbnZhbGlkLCBpbnQgaWQ0ID0gQ1NTUHJvcGVydHlJbnZh
bGlkLCBpbnQgaWQ1ID0gQ1NTUHJvcGVydHlJbnZhbGlkKTsKKyAgICB2b2lkIHJlbW92ZUNTU1By
b3BlcnR5KGludCBpZCkgeyByZW1vdmVDU1NQcm9wZXJ0aWVzKGlkKTsgfQogCiAgICAgdmlydHVh
bCBQYXNzUmVmUHRyPENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uPiBhZGRpdGlvbmFsQXR0cmli
dXRlU3R5bGUoKSB7IHJldHVybiAwOyB9CiAgICAgdm9pZCBpbnZhbGlkYXRlU3R5bGVBdHRyaWJ1
dGUoKTsKQEAgLTYyLDkgKzU1LDkgQEAgcHVibGljOgogICAgIENTU011dGFibGVTdHlsZURlY2xh
cmF0aW9uKiBlbnN1cmVJbmxpbmVTdHlsZURlY2woKSB7IHJldHVybiBhdHRyaWJ1dGVzKGZhbHNl
KS0+ZW5zdXJlSW5saW5lU3R5bGVEZWNsKCk7IH0KICAgICB2aXJ0dWFsIENTU1N0eWxlRGVjbGFy
YXRpb24qIHN0eWxlKCkgT1ZFUlJJREUgeyByZXR1cm4gZW5zdXJlSW5saW5lU3R5bGVEZWNsKCk7
IH0KIAotICAgIGNvbnN0IFNwYWNlU3BsaXRTdHJpbmcmIGNsYXNzTmFtZXMoKSBjb25zdDsKKyAg
ICBDU1NNYXBwZWRBdHRyaWJ1dGVEZWNsYXJhdGlvbiogYXR0cmlidXRlU3R5bGUoKSBjb25zdCB7
IHJldHVybiBhdHRyaWJ1dGVNYXAoKSA/IGF0dHJpYnV0ZU1hcCgpLT5hdHRyaWJ1dGVTdHlsZSgp
IDogMDsgfQogCi0gICAgdmlydHVhbCBib29sIG1hcFRvRW50cnkoY29uc3QgUXVhbGlmaWVkTmFt
ZSYgYXR0ck5hbWUsIE1hcHBlZEF0dHJpYnV0ZUVudHJ5JiByZXN1bHQpIGNvbnN0OworICAgIGNv
bnN0IFNwYWNlU3BsaXRTdHJpbmcmIGNsYXNzTmFtZXMoKSBjb25zdDsKIAogICAgIHZpcnR1YWwg
UGFzc1JlZlB0cjxBdHRyaWJ1dGU+IGNyZWF0ZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1l
JiwgY29uc3QgQXRvbWljU3RyaW5nJiB2YWx1ZSk7CiAKQEAgLTg2LDggKzc5LDYgQEAgcHJvdGVj
dGVkOgogICAgIHZvaWQgY2xhc3NBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IEF0b21pY1N0cmluZyYg
bmV3Q2xhc3NTdHJpbmcpOwogCiBwcml2YXRlOgotICAgIHZvaWQgY3JlYXRlTWFwcGVkRGVjbChB
dHRyaWJ1dGUqKTsKLQogICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVTdHlsZUF0dHJpYnV0ZSgpIGNv
bnN0OwogICAgIHZvaWQgZGVzdHJveUlubGluZVN0eWxlRGVjbCgpIHsgaWYgKGF0dHJpYnV0ZU1h
cCgpKSBhdHRyaWJ1dGVNYXAoKS0+ZGVzdHJveUlubGluZVN0eWxlRGVjbCgpOyB9CiB9OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQlJFbGVtZW50LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTEJSRWxlbWVudC5jcHAKaW5kZXggMjYzOTA2MC4uMTA0NDQxOCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQlJFbGVtZW50LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxCUkVsZW1lbnQuY3BwCkBAIC00OCwyNyArNDgsMTggQEAgUGFz
c1JlZlB0cjxIVE1MQlJFbGVtZW50PiBIVE1MQlJFbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlm
aWVkTmFtZSYgdGFnTmFtZSwgRG8KICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEhUTUxCUkVsZW1l
bnQodGFnTmFtZSwgZG9jdW1lbnQpKTsKIH0KIAotYm9vbCBIVE1MQlJFbGVtZW50OjptYXBUb0Vu
dHJ5KGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lLCBNYXBwZWRBdHRyaWJ1dGVFbnRyeSYg
cmVzdWx0KSBjb25zdAotewotICAgIGlmIChhdHRyTmFtZSA9PSBjbGVhckF0dHIpIHsKLSAgICAg
ICAgcmVzdWx0ID0gZVVuaXZlcnNhbDsKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLSAg
ICAKLSAgICByZXR1cm4gSFRNTEVsZW1lbnQ6Om1hcFRvRW50cnkoYXR0ck5hbWUsIHJlc3VsdCk7
Ci19Ci0KIHZvaWQgSFRNTEJSRWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUoQXR0cmlidXRl
KiBhdHRyKQogewogICAgIGlmIChhdHRyLT5uYW1lKCkgPT0gY2xlYXJBdHRyKSB7CiAgICAgICAg
IC8vIElmIHRoZSBzdHJpbmcgaXMgZW1wdHksIHRoZW4gZG9uJ3QgYWRkIHRoZSBjbGVhciBwcm9w
ZXJ0eS4gCiAgICAgICAgIC8vIDxiciBjbGVhcj4gYW5kIDxiciBjbGVhcj0iIj4gYXJlIGp1c3Qg
dHJlYXRlZCBsaWtlIDxicj4gYnkgR2Vja28sIE1hYyBJRSwgZXRjLiAtZHdoCi0gICAgICAgIGNv
bnN0IEF0b21pY1N0cmluZyYgc3RyID0gYXR0ci0+dmFsdWUoKTsKLSAgICAgICAgaWYgKCFzdHIu
aXNFbXB0eSgpKSB7Ci0gICAgICAgICAgICBpZiAoZXF1YWxJZ25vcmluZ0Nhc2Uoc3RyLCAiYWxs
IikpCi0gICAgICAgICAgICAgICAgYWRkQ1NTUHJvcGVydHkoYXR0ciwgQ1NTUHJvcGVydHlDbGVh
ciwgImJvdGgiKTsKKyAgICAgICAgaWYgKGF0dHItPnZhbHVlKCkuaXNOdWxsKCkpCisgICAgICAg
ICAgICByZW1vdmVDU1NQcm9wZXJ0eShDU1NQcm9wZXJ0eUNsZWFyKTsKKyAgICAgICAgZWxzZSBp
ZiAoIWF0dHItPnZhbHVlKCkuaXNFbXB0eSgpKSB7CisgICAgICAgICAgICBpZiAoZXF1YWxJZ25v
cmluZ0Nhc2UoYXR0ci0+dmFsdWUoKSwgImFsbCIpKQorICAgICAgICAgICAgICAgIGFkZENTU1By
b3BlcnR5KENTU1Byb3BlcnR5Q2xlYXIsICJib3RoIik7CiAgICAgICAgICAgICBlbHNlCi0gICAg
ICAgICAgICAgICAgYWRkQ1NTUHJvcGVydHkoYXR0ciwgQ1NTUHJvcGVydHlDbGVhciwgc3RyKTsK
KyAgICAgICAgICAgICAgICBhZGRDU1NQcm9wZXJ0eShDU1NQcm9wZXJ0eUNsZWFyLCBhdHRyLT52
YWx1ZSgpKTsKICAgICAgICAgfQogICAgIH0gZWxzZQogICAgICAgICBIVE1MRWxlbWVudDo6cGFy
c2VNYXBwZWRBdHRyaWJ1dGUoYXR0cik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxCUkVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEJSRWxlbWVudC5oCmlu
ZGV4IDM4NTdhOWIuLjU3MDUzMTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TEJSRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEJSRWxlbWVudC5oCkBA
IC0zOCw3ICszOCw2IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgSFRNTEJSRWxlbWVudChjb25z
dCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQqKTsKIAotICAgIHZpcnR1YWwgYm9vbCBtYXBUb0Vu
dHJ5KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBNYXBwZWRBdHRyaWJ1dGVFbnRyeSYpIGNvbnN0Owog
ICAgIHZpcnR1YWwgdm9pZCBwYXJzZU1hcHBlZEF0dHJpYnV0ZShBdHRyaWJ1dGUqKTsKICAgICAK
ICAgICB2aXJ0dWFsIFJlbmRlck9iamVjdCogY3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEqLCBS
ZW5kZXJTdHlsZSopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQm9keUVs
ZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQm9keUVsZW1lbnQuY3BwCmluZGV4
IDY1NThkNDYuLmFmNTkyOGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEJv
ZHlFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxCb2R5RWxlbWVudC5j
cHAKQEAgLTYwLDQ2ICs2MCw0MyBAQCBIVE1MQm9keUVsZW1lbnQ6On5IVE1MQm9keUVsZW1lbnQo
KQogewogfQogCi1ib29sIEhUTUxCb2R5RWxlbWVudDo6bWFwVG9FbnRyeShjb25zdCBRdWFsaWZp
ZWROYW1lJiBhdHRyTmFtZSwgTWFwcGVkQXR0cmlidXRlRW50cnkmIHJlc3VsdCkgY29uc3QKLXsK
LSAgICBpZiAoYXR0ck5hbWUgPT0gYmFja2dyb3VuZEF0dHIpIHsKLSAgICAgICAgcmVzdWx0ID0g
KE1hcHBlZEF0dHJpYnV0ZUVudHJ5KShlTGFzdEVudHJ5ICsgZG9jdW1lbnQoKS0+ZG9jSUQoKSk7
Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9IAotICAgIAotICAgIGlmIChhdHRyTmFtZSA9
PSBiZ2NvbG9yQXR0ciB8fAotICAgICAgICBhdHRyTmFtZSA9PSB0ZXh0QXR0ciB8fAotICAgICAg
ICBhdHRyTmFtZSA9PSBtYXJnaW53aWR0aEF0dHIgfHwKLSAgICAgICAgYXR0ck5hbWUgPT0gbGVm
dG1hcmdpbkF0dHIgfHwKLSAgICAgICAgYXR0ck5hbWUgPT0gbWFyZ2luaGVpZ2h0QXR0ciB8fAot
ICAgICAgICBhdHRyTmFtZSA9PSB0b3BtYXJnaW5BdHRyIHx8Ci0gICAgICAgIGF0dHJOYW1lID09
IGJncHJvcGVydGllc0F0dHIpIHsKLSAgICAgICAgcmVzdWx0ID0gZVVuaXZlcnNhbDsKLSAgICAg
ICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLQotICAgIHJldHVybiBIVE1MRWxlbWVudDo6bWFwVG9F
bnRyeShhdHRyTmFtZSwgcmVzdWx0KTsKLX0KLQogdm9pZCBIVE1MQm9keUVsZW1lbnQ6OnBhcnNl
TWFwcGVkQXR0cmlidXRlKEF0dHJpYnV0ZSogYXR0cikKIHsKICAgICBpZiAoYXR0ci0+bmFtZSgp
ID09IGJhY2tncm91bmRBdHRyKSB7CiAgICAgICAgIFN0cmluZyB1cmwgPSBzdHJpcExlYWRpbmdB
bmRUcmFpbGluZ0hUTUxTcGFjZXMoYXR0ci0+dmFsdWUoKSk7CiAgICAgICAgIGlmICghdXJsLmlz
RW1wdHkoKSkKLSAgICAgICAgICAgIGFkZENTU0ltYWdlUHJvcGVydHkoYXR0ciwgQ1NTUHJvcGVy
dHlCYWNrZ3JvdW5kSW1hZ2UsIGRvY3VtZW50KCktPmNvbXBsZXRlVVJMKHVybCkuc3RyaW5nKCkp
OworICAgICAgICAgICAgYWRkQ1NTSW1hZ2VQcm9wZXJ0eShDU1NQcm9wZXJ0eUJhY2tncm91bmRJ
bWFnZSwgZG9jdW1lbnQoKS0+Y29tcGxldGVVUkwodXJsKS5zdHJpbmcoKSk7CisgICAgICAgIGVs
c2UKKyAgICAgICAgICAgIHJlbW92ZUNTU1Byb3BlcnR5KENTU1Byb3BlcnR5QmFja2dyb3VuZElt
YWdlKTsKICAgICB9IGVsc2UgaWYgKGF0dHItPm5hbWUoKSA9PSBtYXJnaW53aWR0aEF0dHIgfHwg
YXR0ci0+bmFtZSgpID09IGxlZnRtYXJnaW5BdHRyKSB7Ci0gICAgICAgIGFkZENTU0xlbmd0aChh
dHRyLCBDU1NQcm9wZXJ0eU1hcmdpblJpZ2h0LCBhdHRyLT52YWx1ZSgpKTsKLSAgICAgICAgYWRk
Q1NTTGVuZ3RoKGF0dHIsIENTU1Byb3BlcnR5TWFyZ2luTGVmdCwgYXR0ci0+dmFsdWUoKSk7Cisg
ICAgICAgIGlmIChhdHRyLT52YWx1ZSgpLmlzTnVsbCgpKQorICAgICAgICAgICAgcmVtb3ZlQ1NT
UHJvcGVydGllcyhDU1NQcm9wZXJ0eU1hcmdpblJpZ2h0LCBDU1NQcm9wZXJ0eU1hcmdpbkxlZnQp
OworICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIGFkZENTU0xlbmd0aChDU1NQcm9wZXJ0eU1h
cmdpblJpZ2h0LCBhdHRyLT52YWx1ZSgpKTsKKyAgICAgICAgICAgIGFkZENTU0xlbmd0aChDU1NQ
cm9wZXJ0eU1hcmdpbkxlZnQsIGF0dHItPnZhbHVlKCkpOworICAgICAgICB9CiAgICAgfSBlbHNl
IGlmIChhdHRyLT5uYW1lKCkgPT0gbWFyZ2luaGVpZ2h0QXR0ciB8fCBhdHRyLT5uYW1lKCkgPT0g
dG9wbWFyZ2luQXR0cikgewotICAgICAgICBhZGRDU1NMZW5ndGgoYXR0ciwgQ1NTUHJvcGVydHlN
YXJnaW5Cb3R0b20sIGF0dHItPnZhbHVlKCkpOwotICAgICAgICBhZGRDU1NMZW5ndGgoYXR0ciwg
Q1NTUHJvcGVydHlNYXJnaW5Ub3AsIGF0dHItPnZhbHVlKCkpOworICAgICAgICBpZiAoYXR0ci0+
dmFsdWUoKS5pc051bGwoKSkKKyAgICAgICAgICAgIHJlbW92ZUNTU1Byb3BlcnRpZXMoQ1NTUHJv
cGVydHlNYXJnaW5Cb3R0b20sIENTU1Byb3BlcnR5TWFyZ2luVG9wKTsKKyAgICAgICAgZWxzZSB7
CisgICAgICAgICAgICBhZGRDU1NMZW5ndGgoQ1NTUHJvcGVydHlNYXJnaW5Cb3R0b20sIGF0dHIt
PnZhbHVlKCkpOworICAgICAgICAgICAgYWRkQ1NTTGVuZ3RoKENTU1Byb3BlcnR5TWFyZ2luVG9w
LCBhdHRyLT52YWx1ZSgpKTsKKyAgICAgICAgfQogICAgIH0gZWxzZSBpZiAoYXR0ci0+bmFtZSgp
ID09IGJnY29sb3JBdHRyKSB7Ci0gICAgICAgIGFkZENTU0NvbG9yKGF0dHIsIENTU1Byb3BlcnR5
QmFja2dyb3VuZENvbG9yLCBhdHRyLT52YWx1ZSgpKTsKKyAgICAgICAgaWYgKGF0dHItPnZhbHVl
KCkuaXNOdWxsKCkpCisgICAgICAgICAgICByZW1vdmVDU1NQcm9wZXJ0eShDU1NQcm9wZXJ0eUJh
Y2tncm91bmRDb2xvcik7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGFkZENTU0NvbG9yKENT
U1Byb3BlcnR5QmFja2dyb3VuZENvbG9yLCBhdHRyLT52YWx1ZSgpKTsKICAgICB9IGVsc2UgaWYg
KGF0dHItPm5hbWUoKSA9PSB0ZXh0QXR0cikgewotICAgICAgICBhZGRDU1NDb2xvcihhdHRyLCBD
U1NQcm9wZXJ0eUNvbG9yLCBhdHRyLT52YWx1ZSgpKTsKKyAgICAgICAgaWYgKGF0dHItPnZhbHVl
KCkuaXNOdWxsKCkpCisgICAgICAgICAgICByZW1vdmVDU1NQcm9wZXJ0eShDU1NQcm9wZXJ0eUNv
bG9yKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgYWRkQ1NTQ29sb3IoQ1NTUHJvcGVydHlD
b2xvciwgYXR0ci0+dmFsdWUoKSk7CiAgICAgfSBlbHNlIGlmIChhdHRyLT5uYW1lKCkgPT0gYmdw
cm9wZXJ0aWVzQXR0cikgewogICAgICAgICBpZiAoZXF1YWxJZ25vcmluZ0Nhc2UoYXR0ci0+dmFs
dWUoKSwgImZpeGVkIikpCi0gICAgICAgICAgICBhZGRDU1NQcm9wZXJ0eShhdHRyLCBDU1NQcm9w
ZXJ0eUJhY2tncm91bmRBdHRhY2htZW50LCBDU1NWYWx1ZUZpeGVkKTsKKyAgICAgICAgICAgIGFk
ZENTU1Byb3BlcnR5KENTU1Byb3BlcnR5QmFja2dyb3VuZEF0dGFjaG1lbnQsIENTU1ZhbHVlRml4
ZWQpOworICAgICAgICBlbHNlCisgICAgICAgICAgICByZW1vdmVDU1NQcm9wZXJ0eShDU1NQcm9w
ZXJ0eUJhY2tncm91bmRBdHRhY2htZW50KTsKICAgICB9IGVsc2UgaWYgKGF0dHItPm5hbWUoKSA9
PSB2bGlua0F0dHIgfHwKICAgICAgICAgICAgICAgIGF0dHItPm5hbWUoKSA9PSBhbGlua0F0dHIg
fHwKICAgICAgICAgICAgICAgIGF0dHItPm5hbWUoKSA9PSBsaW5rQXR0cikgewpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQm9keUVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTEJvZHlFbGVtZW50LmgKaW5kZXggNWM2MzI2NC4uZWI1M2EyMiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQm9keUVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxCb2R5RWxlbWVudC5oCkBAIC03MCw3ICs3MCw2IEBAIHB1YmxpYzoKIHBy
aXZhdGU6CiAgICAgSFRNTEJvZHlFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVu
dCopOwogCi0gICAgdmlydHVhbCBib29sIG1hcFRvRW50cnkoY29uc3QgUXVhbGlmaWVkTmFtZSYs
IE1hcHBlZEF0dHJpYnV0ZUVudHJ5JikgY29uc3Q7CiAgICAgdmlydHVhbCB2b2lkIHBhcnNlTWFw
cGVkQXR0cmlidXRlKEF0dHJpYnV0ZSopOwogCiAgICAgdmlydHVhbCB2b2lkIGluc2VydGVkSW50
b0RvY3VtZW50KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxEaXZFbGVt
ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTERpdkVsZW1lbnQuY3BwCmluZGV4IDIz
ZTY1ODUuLjA0Nzc2NDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTERpdkVs
ZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTERpdkVsZW1lbnQuY3BwCkBA
IC00OCwyNiArNDgsMTkgQEAgUGFzc1JlZlB0cjxIVE1MRGl2RWxlbWVudD4gSFRNTERpdkVsZW1l
bnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLAogICAgIHJldHVybiBhZG9w
dFJlZihuZXcgSFRNTERpdkVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpKTsKIH0KIAotYm9vbCBI
VE1MRGl2RWxlbWVudDo6bWFwVG9FbnRyeShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSwg
TWFwcGVkQXR0cmlidXRlRW50cnkmIHJlc3VsdCkgY29uc3QKLXsKLSAgICBpZiAoYXR0ck5hbWUg
PT0gYWxpZ25BdHRyKSB7Ci0gICAgICAgIHJlc3VsdCA9IGVCbG9jazsKLSAgICAgICAgcmV0dXJu
IGZhbHNlOwotICAgIH0KLSAgICByZXR1cm4gSFRNTEVsZW1lbnQ6Om1hcFRvRW50cnkoYXR0ck5h
bWUsIHJlc3VsdCk7Ci19Ci0KIHZvaWQgSFRNTERpdkVsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmli
dXRlKEF0dHJpYnV0ZSogYXR0cikKIHsKICAgICBpZiAoYXR0ci0+bmFtZSgpID09IGFsaWduQXR0
cikgeworICAgICAgICBpZiAoYXR0ci0+dmFsdWUoKS5pc051bGwoKSkKKyAgICAgICAgICAgIHJl
bW92ZUNTU1Byb3BlcnR5KENTU1Byb3BlcnR5VGV4dEFsaWduKTsKICAgICAgICAgaWYgKGVxdWFs
SWdub3JpbmdDYXNlKGF0dHItPnZhbHVlKCksICJtaWRkbGUiKSB8fCBlcXVhbElnbm9yaW5nQ2Fz
ZShhdHRyLT52YWx1ZSgpLCAiY2VudGVyIikpCi0gICAgICAgICAgIGFkZENTU1Byb3BlcnR5KGF0
dHIsIENTU1Byb3BlcnR5VGV4dEFsaWduLCBDU1NWYWx1ZVdlYmtpdENlbnRlcik7CisgICAgICAg
ICAgIGFkZENTU1Byb3BlcnR5KENTU1Byb3BlcnR5VGV4dEFsaWduLCBDU1NWYWx1ZVdlYmtpdENl
bnRlcik7CiAgICAgICAgIGVsc2UgaWYgKGVxdWFsSWdub3JpbmdDYXNlKGF0dHItPnZhbHVlKCks
ICJsZWZ0IikpCi0gICAgICAgICAgICBhZGRDU1NQcm9wZXJ0eShhdHRyLCBDU1NQcm9wZXJ0eVRl
eHRBbGlnbiwgQ1NTVmFsdWVXZWJraXRMZWZ0KTsKKyAgICAgICAgICAgIGFkZENTU1Byb3BlcnR5
KENTU1Byb3BlcnR5VGV4dEFsaWduLCBDU1NWYWx1ZVdlYmtpdExlZnQpOwogICAgICAgICBlbHNl
IGlmIChlcXVhbElnbm9yaW5nQ2FzZShhdHRyLT52YWx1ZSgpLCAicmlnaHQiKSkKLSAgICAgICAg
ICAgIGFkZENTU1Byb3BlcnR5KGF0dHIsIENTU1Byb3BlcnR5VGV4dEFsaWduLCBDU1NWYWx1ZVdl
YmtpdFJpZ2h0KTsKKyAgICAgICAgICAgIGFkZENTU1Byb3BlcnR5KENTU1Byb3BlcnR5VGV4dEFs
aWduLCBDU1NWYWx1ZVdlYmtpdFJpZ2h0KTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgYWRk
Q1NTUHJvcGVydHkoYXR0ciwgQ1NTUHJvcGVydHlUZXh0QWxpZ24sIGF0dHItPnZhbHVlKCkpOwor
ICAgICAgICAgICAgYWRkQ1NTUHJvcGVydHkoQ1NTUHJvcGVydHlUZXh0QWxpZ24sIGF0dHItPnZh
bHVlKCkpOwogICAgIH0gZWxzZQogICAgICAgICBIVE1MRWxlbWVudDo6cGFyc2VNYXBwZWRBdHRy
aWJ1dGUoYXR0cik7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxEaXZF
bGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxEaXZFbGVtZW50LmgKaW5kZXggMmUy
YjQxNy4uN2JiNWYyMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRGl2RWxl
bWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTERpdkVsZW1lbnQuaApAQCAtMzYs
NyArMzYsNiBAQCBwcm90ZWN0ZWQ6CiAgICAgSFRNTERpdkVsZW1lbnQoY29uc3QgUXVhbGlmaWVk
TmFtZSYsIERvY3VtZW50Kik7CiAKIHByaXZhdGU6Ci0gICAgdmlydHVhbCBib29sIG1hcFRvRW50
cnkoY29uc3QgUXVhbGlmaWVkTmFtZSYsIE1hcHBlZEF0dHJpYnV0ZUVudHJ5JikgY29uc3Q7CiAg
ICAgdmlydHVhbCB2b2lkIHBhcnNlTWFwcGVkQXR0cmlidXRlKEF0dHJpYnV0ZSopOwogfTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRWxlbWVudC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxFbGVtZW50LmNwcAppbmRleCA2ODBjMjNiLi40MDQ1NTRkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxFbGVtZW50LmNwcApAQCAtMTIwLDI3ICsxMjAsNiBAQCBib29sIEhU
TUxFbGVtZW50OjppZUZvcmJpZHNJbnNlcnRIVE1MKCkgY29uc3QKICAgICByZXR1cm4gZmFsc2U7
CiB9CiAKLWJvb2wgSFRNTEVsZW1lbnQ6Om1hcFRvRW50cnkoY29uc3QgUXVhbGlmaWVkTmFtZSYg
YXR0ck5hbWUsIE1hcHBlZEF0dHJpYnV0ZUVudHJ5JiByZXN1bHQpIGNvbnN0Ci17Ci0gICAgaWYg
KGF0dHJOYW1lID09IGFsaWduQXR0cgotICAgICAgICB8fCBhdHRyTmFtZSA9PSBjb250ZW50ZWRp
dGFibGVBdHRyCi0gICAgICAgIHx8IGF0dHJOYW1lID09IGhpZGRlbkF0dHIpIHsKLSAgICAgICAg
cmVzdWx0ID0gZVVuaXZlcnNhbDsKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLSAgICBp
ZiAoYXR0ck5hbWUgPT0gZGlyQXR0cikgewotICAgICAgICBpZiAoaGFzTG9jYWxOYW1lKGJkb1Rh
ZykpCi0gICAgICAgICAgICByZXN1bHQgPSBlQkRPOwotICAgICAgICBlbHNlIGlmIChoYXNMb2Nh
bE5hbWUoYmRpVGFnKSkKLSAgICAgICAgICAgIHJlc3VsdCA9IGVCREk7Ci0gICAgICAgIGVsc2UK
LSAgICAgICAgICAgIHJlc3VsdCA9IGVVbml2ZXJzYWw7Ci0gICAgICAgIHJldHVybiB0cnVlOwot
ICAgIH0KLQotICAgIHJldHVybiBTdHlsZWRFbGVtZW50OjptYXBUb0VudHJ5KGF0dHJOYW1lLCBy
ZXN1bHQpOwotfQotCiBzdGF0aWMgaW5saW5lIGludCB1bmljb2RlQmlkaUF0dHJpYnV0ZUZvckRp
ckF1dG8oSFRNTEVsZW1lbnQqIGVsZW1lbnQpCiB7CiAgICAgaWYgKGVsZW1lbnQtPmhhc0xvY2Fs
TmFtZShwcmVUYWcpIHx8IGVsZW1lbnQtPmhhc0xvY2FsTmFtZSh0ZXh0YXJlYVRhZykpCkBAIC0x
NjMsMjMgKzE0MiwyNSBAQCBzdGF0aWMgdW5zaWduZWQgcGFyc2VCb3JkZXJXaWR0aEF0dHJpYnV0
ZShBdHRyaWJ1dGUqIGF0dHIpCiAKIHZvaWQgSFRNTEVsZW1lbnQ6OmFwcGx5Qm9yZGVyQXR0cmli
dXRlKEF0dHJpYnV0ZSogYXR0cikKIHsKLSAgICBhZGRDU1NMZW5ndGgoYXR0ciwgQ1NTUHJvcGVy
dHlCb3JkZXJXaWR0aCwgU3RyaW5nOjpudW1iZXIocGFyc2VCb3JkZXJXaWR0aEF0dHJpYnV0ZShh
dHRyKSkpOwotICAgIGFkZENTU1Byb3BlcnR5KGF0dHIsIENTU1Byb3BlcnR5Qm9yZGVyVG9wU3R5
bGUsIENTU1ZhbHVlU29saWQpOwotICAgIGFkZENTU1Byb3BlcnR5KGF0dHIsIENTU1Byb3BlcnR5
Qm9yZGVyUmlnaHRTdHlsZSwgQ1NTVmFsdWVTb2xpZCk7Ci0gICAgYWRkQ1NTUHJvcGVydHkoYXR0
ciwgQ1NTUHJvcGVydHlCb3JkZXJCb3R0b21TdHlsZSwgQ1NTVmFsdWVTb2xpZCk7Ci0gICAgYWRk
Q1NTUHJvcGVydHkoYXR0ciwgQ1NTUHJvcGVydHlCb3JkZXJMZWZ0U3R5bGUsIENTU1ZhbHVlU29s
aWQpOworICAgIGFkZENTU0xlbmd0aChDU1NQcm9wZXJ0eUJvcmRlcldpZHRoLCBTdHJpbmc6Om51
bWJlcihwYXJzZUJvcmRlcldpZHRoQXR0cmlidXRlKGF0dHIpKSk7CisgICAgYWRkQ1NTUHJvcGVy
dHkoQ1NTUHJvcGVydHlCb3JkZXJUb3BTdHlsZSwgQ1NTVmFsdWVTb2xpZCk7CisgICAgYWRkQ1NT
UHJvcGVydHkoQ1NTUHJvcGVydHlCb3JkZXJSaWdodFN0eWxlLCBDU1NWYWx1ZVNvbGlkKTsKKyAg
ICBhZGRDU1NQcm9wZXJ0eShDU1NQcm9wZXJ0eUJvcmRlckJvdHRvbVN0eWxlLCBDU1NWYWx1ZVNv
bGlkKTsKKyAgICBhZGRDU1NQcm9wZXJ0eShDU1NQcm9wZXJ0eUJvcmRlckxlZnRTdHlsZSwgQ1NT
VmFsdWVTb2xpZCk7CiB9CiAKIHZvaWQgSFRNTEVsZW1lbnQ6Om1hcExhbmd1YWdlQXR0cmlidXRl
VG9Mb2NhbGUoQXR0cmlidXRlKiBhdHRyaWJ1dGUpCiB7CiAgICAgQVNTRVJUKGF0dHJpYnV0ZSAm
JiAoYXR0cmlidXRlLT5uYW1lKCkgPT0gbGFuZ0F0dHIgfHwgYXR0cmlidXRlLT5uYW1lKCkubWF0
Y2hlcyhYTUxOYW1lczo6bGFuZ0F0dHIpKSk7CiAgICAgY29uc3QgQXRvbWljU3RyaW5nJiB2YWx1
ZSA9IGF0dHJpYnV0ZS0+dmFsdWUoKTsKLSAgICBpZiAoIXZhbHVlLmlzRW1wdHkoKSkgeworICAg
IGlmICh2YWx1ZS5pc051bGwoKSkKKyAgICAgICAgcmVtb3ZlQ1NTUHJvcGVydHkoQ1NTUHJvcGVy
dHlXZWJraXRMb2NhbGUpOworICAgIGVsc2UgaWYgKCF2YWx1ZS5pc0VtcHR5KCkpIHsKICAgICAg
ICAgLy8gSGF2ZSB0byBxdW90ZSBzbyB0aGUgbG9jYWxlIGlkIGlzIHRyZWF0ZWQgYXMgYSBzdHJp
bmcgaW5zdGVhZCBvZiBhcyBhIENTUyBrZXl3b3JkLgotICAgICAgICBhZGRDU1NQcm9wZXJ0eShh
dHRyaWJ1dGUsIENTU1Byb3BlcnR5V2Via2l0TG9jYWxlLCBxdW90ZUNTU1N0cmluZyh2YWx1ZSkp
OworICAgICAgICBhZGRDU1NQcm9wZXJ0eShDU1NQcm9wZXJ0eVdlYmtpdExvY2FsZSwgcXVvdGVD
U1NTdHJpbmcodmFsdWUpKTsKICAgICB9IGVsc2UgewogICAgICAgICAvLyBUaGUgZW1wdHkgc3Ry
aW5nIG1lYW5zIHRoZSBsYW5ndWFnZSBpcyBleHBsaWNpdGx5IHVua25vd24uCi0gICAgICAgIGFk
ZENTU1Byb3BlcnR5KGF0dHJpYnV0ZSwgQ1NTUHJvcGVydHlXZWJraXRMb2NhbGUsIENTU1ZhbHVl
QXV0byk7CisgICAgICAgIGFkZENTU1Byb3BlcnR5KENTU1Byb3BlcnR5V2Via2l0TG9jYWxlLCBD
U1NWYWx1ZUF1dG8pOwogICAgIH0KICAgICBzZXROZWVkc1N0eWxlUmVjYWxjKCk7CiB9CkBAIC0x
OTEsMTQgKzE3MiwxOSBAQCB2b2lkIEhUTUxFbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpYnV0ZShB
dHRyaWJ1dGUqIGF0dHIpCiAKICAgICBTdHJpbmcgaW5kZXhzdHJpbmc7CiAgICAgaWYgKGF0dHIt
Pm5hbWUoKSA9PSBhbGlnbkF0dHIpIHsKLSAgICAgICAgaWYgKGVxdWFsSWdub3JpbmdDYXNlKGF0
dHItPnZhbHVlKCksICJtaWRkbGUiKSkKLSAgICAgICAgICAgIGFkZENTU1Byb3BlcnR5KGF0dHIs
IENTU1Byb3BlcnR5VGV4dEFsaWduLCAiY2VudGVyIik7CisgICAgICAgIGlmIChhdHRyLT5pc051
bGwoKSkKKyAgICAgICAgICAgIHJlbW92ZUNTU1Byb3BlcnR5KENTU1Byb3BlcnR5VGV4dEFsaWdu
KTsKKyAgICAgICAgZWxzZSBpZiAoZXF1YWxJZ25vcmluZ0Nhc2UoYXR0ci0+dmFsdWUoKSwgIm1p
ZGRsZSIpKQorICAgICAgICAgICAgYWRkQ1NTUHJvcGVydHkoQ1NTUHJvcGVydHlUZXh0QWxpZ24s
ICJjZW50ZXIiKTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgYWRkQ1NTUHJvcGVydHkoYXR0
ciwgQ1NTUHJvcGVydHlUZXh0QWxpZ24sIGF0dHItPnZhbHVlKCkpOworICAgICAgICAgICAgYWRk
Q1NTUHJvcGVydHkoQ1NTUHJvcGVydHlUZXh0QWxpZ24sIGF0dHItPnZhbHVlKCkpOwogICAgIH0g
ZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09IGNvbnRlbnRlZGl0YWJsZUF0dHIpIHsKICAgICAgICAg
c2V0Q29udGVudEVkaXRhYmxlKGF0dHIpOwogICAgIH0gZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09
IGhpZGRlbkF0dHIpIHsKLSAgICAgICAgYWRkQ1NTUHJvcGVydHkoYXR0ciwgQ1NTUHJvcGVydHlE
aXNwbGF5LCBDU1NWYWx1ZU5vbmUpOworICAgICAgICBpZiAoYXR0ci0+aXNOdWxsKCkpCisgICAg
ICAgICAgICByZW1vdmVDU1NQcm9wZXJ0eShDU1NQcm9wZXJ0eURpc3BsYXkpOworICAgICAgICBl
bHNlCisgICAgICAgICAgICBhZGRDU1NQcm9wZXJ0eShDU1NQcm9wZXJ0eURpc3BsYXksIENTU1Zh
bHVlTm9uZSk7CiAgICAgfSBlbHNlIGlmIChhdHRyLT5uYW1lKCkgPT0gdGFiaW5kZXhBdHRyKSB7
CiAgICAgICAgIGluZGV4c3RyaW5nID0gZ2V0QXR0cmlidXRlKHRhYmluZGV4QXR0cik7CiAgICAg
ICAgIGludCB0YWJpbmRleCA9IDA7CkBAIC0yMTcsMTkgKzIwMywyNiBAQCB2b2lkIEhUTUxFbGVt
ZW50OjpwYXJzZU1hcHBlZEF0dHJpYnV0ZShBdHRyaWJ1dGUqIGF0dHIpCiAgICAgfSBlbHNlIGlm
IChhdHRyLT5uYW1lKCkgPT0gZGlyQXR0cikgewogICAgICAgICBib29sIGRpcklzQXV0byA9IGVx
dWFsSWdub3JpbmdDYXNlKGF0dHItPnZhbHVlKCksICJhdXRvIik7CiAgICAgICAgIGlmICghZGly
SXNBdXRvKQotICAgICAgICAgICAgYWRkQ1NTUHJvcGVydHkoYXR0ciwgQ1NTUHJvcGVydHlEaXJl
Y3Rpb24sIGF0dHItPnZhbHVlKCkpOworICAgICAgICAgICAgYWRkQ1NTUHJvcGVydHkoQ1NTUHJv
cGVydHlEaXJlY3Rpb24sIGF0dHItPnZhbHVlKCkpOworICAgICAgICBlbHNlCisgICAgICAgICAg
ICByZW1vdmVDU1NQcm9wZXJ0eShDU1NQcm9wZXJ0eURpcmVjdGlvbik7CiAgICAgICAgIGRpckF0
dHJpYnV0ZUNoYW5nZWQoYXR0cik7CiAgICAgICAgIGlmIChkaXJJc0F1dG8pCi0gICAgICAgICAg
ICBhZGRDU1NQcm9wZXJ0eShhdHRyLCBDU1NQcm9wZXJ0eVVuaWNvZGVCaWRpLCB1bmljb2RlQmlk
aUF0dHJpYnV0ZUZvckRpckF1dG8odGhpcykpOworICAgICAgICAgICAgYWRkQ1NTUHJvcGVydHko
Q1NTUHJvcGVydHlVbmljb2RlQmlkaSwgdW5pY29kZUJpZGlBdHRyaWJ1dGVGb3JEaXJBdXRvKHRo
aXMpKTsKICAgICAgICAgZWxzZSBpZiAoIWhhc1RhZ05hbWUoYmRpVGFnKSAmJiAhaGFzVGFnTmFt
ZShiZG9UYWcpICYmICFoYXNUYWdOYW1lKG91dHB1dFRhZykpCi0gICAgICAgICAgICBhZGRDU1NQ
cm9wZXJ0eShhdHRyLCBDU1NQcm9wZXJ0eVVuaWNvZGVCaWRpLCBDU1NWYWx1ZUVtYmVkKTsKKyAg
ICAgICAgICAgIGFkZENTU1Byb3BlcnR5KENTU1Byb3BlcnR5VW5pY29kZUJpZGksIENTU1ZhbHVl
RW1iZWQpOworICAgICAgICBlbHNlCisgICAgICAgICAgICByZW1vdmVDU1NQcm9wZXJ0eShDU1NQ
cm9wZXJ0eVVuaWNvZGVCaWRpKTsKICAgICB9IGVsc2UgaWYgKGF0dHItPm5hbWUoKSA9PSBkcmFn
Z2FibGVBdHRyKSB7CiAgICAgICAgIGNvbnN0IEF0b21pY1N0cmluZyYgdmFsdWUgPSBhdHRyLT52
YWx1ZSgpOwogICAgICAgICBpZiAoZXF1YWxJZ25vcmluZ0Nhc2UodmFsdWUsICJ0cnVlIikpIHsK
LSAgICAgICAgICAgIGFkZENTU1Byb3BlcnR5KGF0dHIsIENTU1Byb3BlcnR5V2Via2l0VXNlckRy
YWcsIENTU1ZhbHVlRWxlbWVudCk7Ci0gICAgICAgICAgICBhZGRDU1NQcm9wZXJ0eShhdHRyLCBD
U1NQcm9wZXJ0eVdlYmtpdFVzZXJTZWxlY3QsIENTU1ZhbHVlTm9uZSk7Ci0gICAgICAgIH0gZWxz
ZSBpZiAoZXF1YWxJZ25vcmluZ0Nhc2UodmFsdWUsICJmYWxzZSIpKQotICAgICAgICAgICAgYWRk
Q1NTUHJvcGVydHkoYXR0ciwgQ1NTUHJvcGVydHlXZWJraXRVc2VyRHJhZywgQ1NTVmFsdWVOb25l
KTsKKyAgICAgICAgICAgIGFkZENTU1Byb3BlcnR5KENTU1Byb3BlcnR5V2Via2l0VXNlckRyYWcs
IENTU1ZhbHVlRWxlbWVudCk7CisgICAgICAgICAgICBhZGRDU1NQcm9wZXJ0eShDU1NQcm9wZXJ0
eVdlYmtpdFVzZXJTZWxlY3QsIENTU1ZhbHVlTm9uZSk7CisgICAgICAgIH0gZWxzZSBpZiAoZXF1
YWxJZ25vcmluZ0Nhc2UodmFsdWUsICJmYWxzZSIpKSB7CisgICAgICAgICAgICBhZGRDU1NQcm9w
ZXJ0eShDU1NQcm9wZXJ0eVdlYmtpdFVzZXJEcmFnLCBDU1NWYWx1ZU5vbmUpOworICAgICAgICAg
ICAgcmVtb3ZlQ1NTUHJvcGVydHkoQ1NTUHJvcGVydHlXZWJraXRVc2VyU2VsZWN0KTsKKyAgICAg
ICAgfSBlbHNlCisgICAgICAgICAgICByZW1vdmVDU1NQcm9wZXJ0aWVzKENTU1Byb3BlcnR5V2Vi
a2l0VXNlckRyYWcsIENTU1Byb3BlcnR5V2Via2l0VXNlclNlbGVjdCk7CiAjaWYgRU5BQkxFKE1J
Q1JPREFUQSkKICAgICB9IGVsc2UgaWYgKGF0dHItPm5hbWUoKSA9PSBpdGVtcHJvcEF0dHIpIHsK
ICAgICAgICAgc2V0SXRlbVByb3AoYXR0ci0+dmFsdWUoKSk7CkBAIC02ODcsNiArNjgwLDExIEBA
IHZvaWQgSFRNTEVsZW1lbnQ6OmFkZEhUTUxBbGlnbm1lbnQoQXR0cmlidXRlKiBhdHRyKQogICAg
IGFkZEhUTUxBbGlnbm1lbnRUb1N0eWxlZEVsZW1lbnQodGhpcywgYXR0cik7CiB9CiAKK3ZvaWQg
SFRNTEVsZW1lbnQ6OnJlbW92ZUhUTUxBbGlnbm1lbnQoKQoreworICAgIHJlbW92ZUNTU1Byb3Bl
cnRpZXMoQ1NTUHJvcGVydHlGbG9hdCwgQ1NTUHJvcGVydHlWZXJ0aWNhbEFsaWduKTsKK30KKwog
dm9pZCBIVE1MRWxlbWVudDo6YWRkSFRNTEFsaWdubWVudFRvU3R5bGVkRWxlbWVudChTdHlsZWRF
bGVtZW50KiBlbGVtZW50LCBBdHRyaWJ1dGUqIGF0dHIpCiB7CiAgICAgLy8gVmVydGljYWwgYWxp
Z25tZW50IHdpdGggcmVzcGVjdCB0byB0aGUgY3VycmVudCBiYXNlbGluZSBvZiB0aGUgdGV4dApA
QCAtNzE3LDEwICs3MTUsMTQgQEAgdm9pZCBIVE1MRWxlbWVudDo6YWRkSFRNTEFsaWdubWVudFRv
U3R5bGVkRWxlbWVudChTdHlsZWRFbGVtZW50KiBlbGVtZW50LCBBdHRyaWIKICAgICAgICAgdmVy
dGljYWxBbGlnblZhbHVlID0gQ1NTVmFsdWVUZXh0VG9wOwogCiAgICAgaWYgKGZsb2F0VmFsdWUg
IT0gQ1NTVmFsdWVJbnZhbGlkKQotICAgICAgICBlbGVtZW50LT5hZGRDU1NQcm9wZXJ0eShhdHRy
LCBDU1NQcm9wZXJ0eUZsb2F0LCBmbG9hdFZhbHVlKTsKKyAgICAgICAgZWxlbWVudC0+YWRkQ1NT
UHJvcGVydHkoQ1NTUHJvcGVydHlGbG9hdCwgZmxvYXRWYWx1ZSk7CisgICAgZWxzZQorICAgICAg
ICBlbGVtZW50LT5yZW1vdmVDU1NQcm9wZXJ0eShDU1NQcm9wZXJ0eUZsb2F0KTsKIAogICAgIGlm
ICh2ZXJ0aWNhbEFsaWduVmFsdWUgIT0gQ1NTVmFsdWVJbnZhbGlkKQotICAgICAgICBlbGVtZW50
LT5hZGRDU1NQcm9wZXJ0eShhdHRyLCBDU1NQcm9wZXJ0eVZlcnRpY2FsQWxpZ24sIHZlcnRpY2Fs
QWxpZ25WYWx1ZSk7CisgICAgICAgIGVsZW1lbnQtPmFkZENTU1Byb3BlcnR5KENTU1Byb3BlcnR5
VmVydGljYWxBbGlnbiwgdmVydGljYWxBbGlnblZhbHVlKTsKKyAgICBlbHNlCisgICAgICAgIGVs
ZW1lbnQtPnJlbW92ZUNTU1Byb3BlcnR5KENTU1Byb3BlcnR5VmVydGljYWxBbGlnbik7CiB9CiAK
IGJvb2wgSFRNTEVsZW1lbnQ6OnN1cHBvcnRzRm9jdXMoKSBjb25zdApAQCAtNzQ3LDIxICs3NDks
MjEgQEAgU3RyaW5nIEhUTUxFbGVtZW50Ojpjb250ZW50RWRpdGFibGUoKSBjb25zdAogdm9pZCBI
VE1MRWxlbWVudDo6c2V0Q29udGVudEVkaXRhYmxlKEF0dHJpYnV0ZSogYXR0cikgCiB7CiAgICAg
Y29uc3QgQXRvbWljU3RyaW5nJiBlbmFibGVkID0gYXR0ci0+dmFsdWUoKTsKLSAgICBpZiAoZW5h
YmxlZC5pc0VtcHR5KCkgfHwgZXF1YWxJZ25vcmluZ0Nhc2UoZW5hYmxlZCwgInRydWUiKSkgewot
ICAgICAgICBhZGRDU1NQcm9wZXJ0eShhdHRyLCBDU1NQcm9wZXJ0eVdlYmtpdFVzZXJNb2RpZnks
IENTU1ZhbHVlUmVhZFdyaXRlKTsKLSAgICAgICAgYWRkQ1NTUHJvcGVydHkoYXR0ciwgQ1NTUHJv
cGVydHlXb3JkV3JhcCwgQ1NTVmFsdWVCcmVha1dvcmQpOwotICAgICAgICBhZGRDU1NQcm9wZXJ0
eShhdHRyLCBDU1NQcm9wZXJ0eVdlYmtpdE5ic3BNb2RlLCBDU1NWYWx1ZVNwYWNlKTsKLSAgICAg
ICAgYWRkQ1NTUHJvcGVydHkoYXR0ciwgQ1NTUHJvcGVydHlXZWJraXRMaW5lQnJlYWssIENTU1Zh
bHVlQWZ0ZXJXaGl0ZVNwYWNlKTsKKyAgICBpZiAoZW5hYmxlZC5pc051bGwoKSkKKyAgICAgICAg
cmVtb3ZlQ1NTUHJvcGVydGllcyhDU1NQcm9wZXJ0eVdlYmtpdFVzZXJNb2RpZnksIENTU1Byb3Bl
cnR5V29yZFdyYXAsIENTU1Byb3BlcnR5V2Via2l0TmJzcE1vZGUsIENTU1Byb3BlcnR5V2Via2l0
TGluZUJyZWFrKTsKKyAgICBlbHNlIGlmIChlbmFibGVkLmlzRW1wdHkoKSB8fCBlcXVhbElnbm9y
aW5nQ2FzZShlbmFibGVkLCAidHJ1ZSIpKSB7CisgICAgICAgIGFkZENTU1Byb3BlcnR5KENTU1By
b3BlcnR5V2Via2l0VXNlck1vZGlmeSwgQ1NTVmFsdWVSZWFkV3JpdGUpOworICAgICAgICBhZGRD
U1NQcm9wZXJ0eShDU1NQcm9wZXJ0eVdvcmRXcmFwLCBDU1NWYWx1ZUJyZWFrV29yZCk7CisgICAg
ICAgIGFkZENTU1Byb3BlcnR5KENTU1Byb3BlcnR5V2Via2l0TmJzcE1vZGUsIENTU1ZhbHVlU3Bh
Y2UpOworICAgICAgICBhZGRDU1NQcm9wZXJ0eShDU1NQcm9wZXJ0eVdlYmtpdExpbmVCcmVhaywg
Q1NTVmFsdWVBZnRlcldoaXRlU3BhY2UpOwogICAgIH0gZWxzZSBpZiAoZXF1YWxJZ25vcmluZ0Nh
c2UoZW5hYmxlZCwgImZhbHNlIikpIHsKLSAgICAgICAgYWRkQ1NTUHJvcGVydHkoYXR0ciwgQ1NT
UHJvcGVydHlXZWJraXRVc2VyTW9kaWZ5LCBDU1NWYWx1ZVJlYWRPbmx5KTsKLSAgICAgICAgcmVt
b3ZlQ1NTUHJvcGVydHkoYXR0ciwgQ1NTUHJvcGVydHlXb3JkV3JhcCk7Ci0gICAgICAgIHJlbW92
ZUNTU1Byb3BlcnR5KGF0dHIsIENTU1Byb3BlcnR5V2Via2l0TmJzcE1vZGUpOwotICAgICAgICBy
ZW1vdmVDU1NQcm9wZXJ0eShhdHRyLCBDU1NQcm9wZXJ0eVdlYmtpdExpbmVCcmVhayk7CisgICAg
ICAgIGFkZENTU1Byb3BlcnR5KENTU1Byb3BlcnR5V2Via2l0VXNlck1vZGlmeSwgQ1NTVmFsdWVS
ZWFkT25seSk7CisgICAgICAgIHJlbW92ZUNTU1Byb3BlcnRpZXMoQ1NTUHJvcGVydHlXb3JkV3Jh
cCwgQ1NTUHJvcGVydHlXZWJraXROYnNwTW9kZSwgQ1NTUHJvcGVydHlXZWJraXRMaW5lQnJlYWsp
OwogICAgIH0gZWxzZSBpZiAoZXF1YWxJZ25vcmluZ0Nhc2UoZW5hYmxlZCwgInBsYWludGV4dC1v
bmx5IikpIHsKLSAgICAgICAgYWRkQ1NTUHJvcGVydHkoYXR0ciwgQ1NTUHJvcGVydHlXZWJraXRV
c2VyTW9kaWZ5LCBDU1NWYWx1ZVJlYWRXcml0ZVBsYWludGV4dE9ubHkpOwotICAgICAgICBhZGRD
U1NQcm9wZXJ0eShhdHRyLCBDU1NQcm9wZXJ0eVdvcmRXcmFwLCBDU1NWYWx1ZUJyZWFrV29yZCk7
Ci0gICAgICAgIGFkZENTU1Byb3BlcnR5KGF0dHIsIENTU1Byb3BlcnR5V2Via2l0TmJzcE1vZGUs
IENTU1ZhbHVlU3BhY2UpOwotICAgICAgICBhZGRDU1NQcm9wZXJ0eShhdHRyLCBDU1NQcm9wZXJ0
eVdlYmtpdExpbmVCcmVhaywgQ1NTVmFsdWVBZnRlcldoaXRlU3BhY2UpOworICAgICAgICBhZGRD
U1NQcm9wZXJ0eShDU1NQcm9wZXJ0eVdlYmtpdFVzZXJNb2RpZnksIENTU1ZhbHVlUmVhZFdyaXRl
UGxhaW50ZXh0T25seSk7CisgICAgICAgIGFkZENTU1Byb3BlcnR5KENTU1Byb3BlcnR5V29yZFdy
YXAsIENTU1ZhbHVlQnJlYWtXb3JkKTsKKyAgICAgICAgYWRkQ1NTUHJvcGVydHkoQ1NTUHJvcGVy
dHlXZWJraXROYnNwTW9kZSwgQ1NTVmFsdWVTcGFjZSk7CisgICAgICAgIGFkZENTU1Byb3BlcnR5
KENTU1Byb3BlcnR5V2Via2l0TGluZUJyZWFrLCBDU1NWYWx1ZUFmdGVyV2hpdGVTcGFjZSk7CiAg
ICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50LmgKaW5kZXggYTg2YjJiOS4uMDAxZGQw
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRWxlbWVudC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQuaApAQCAtOTQsOCArOTQsOCBAQCBwcm90ZWN0
ZWQ6CiAgICAgSFRNTEVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1l
bnQqKTsKIAogICAgIHZvaWQgYWRkSFRNTEFsaWdubWVudChBdHRyaWJ1dGUqKTsKKyAgICB2b2lk
IHJlbW92ZUhUTUxBbGlnbm1lbnQoKTsKIAotICAgIHZpcnR1YWwgYm9vbCBtYXBUb0VudHJ5KGNv
bnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lLCBNYXBwZWRBdHRyaWJ1dGVFbnRyeSYgcmVzdWx0
KSBjb25zdDsKICAgICB2aXJ0dWFsIHZvaWQgcGFyc2VNYXBwZWRBdHRyaWJ1dGUoQXR0cmlidXRl
Kik7CiAgICAgdm9pZCBhcHBseUJvcmRlckF0dHJpYnV0ZShBdHRyaWJ1dGUqKTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRW1iZWRFbGVtZW50LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTEVtYmVkRWxlbWVudC5jcHAKaW5kZXggMDhjMTVlOS4uYTkyODM1YiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRW1iZWRFbGVtZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbWJlZEVsZW1lbnQuY3BwCkBAIC03NCwxNiArNzQs
NiBAQCBSZW5kZXJXaWRnZXQqIEhUTUxFbWJlZEVsZW1lbnQ6OnJlbmRlcldpZGdldEZvckpTQmlu
ZGluZ3MoKQogICAgIHJldHVybiBmaW5kV2lkZ2V0UmVuZGVyZXIodGhpcyk7CiB9CiAKLWJvb2wg
SFRNTEVtYmVkRWxlbWVudDo6bWFwVG9FbnRyeShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFt
ZSwgTWFwcGVkQXR0cmlidXRlRW50cnkmIHJlc3VsdCkgY29uc3QKLXsKLSAgICBpZiAoYXR0ck5h
bWUgPT0gaGlkZGVuQXR0cikgewotICAgICAgICByZXN1bHQgPSBlVW5pdmVyc2FsOwotICAgICAg
ICByZXR1cm4gZmFsc2U7Ci0gICAgfQotICAgICAgICAKLSAgICByZXR1cm4gSFRNTFBsdWdJbklt
YWdlRWxlbWVudDo6bWFwVG9FbnRyeShhdHRyTmFtZSwgcmVzdWx0KTsKLX0KLQogdm9pZCBIVE1M
RW1iZWRFbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpYnV0ZShBdHRyaWJ1dGUqIGF0dHIpCiB7CiAg
ICAgY29uc3QgQXRvbWljU3RyaW5nJiB2YWx1ZSA9IGF0dHItPnZhbHVlKCk7CkBAIC0xMDgsOSAr
OTgsMTAgQEAgdm9pZCBIVE1MRW1iZWRFbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpYnV0ZShBdHRy
aWJ1dGUqIGF0dHIpCiAgICAgICAgIGlmIChlcXVhbElnbm9yaW5nQ2FzZSh2YWx1ZS5zdHJpbmco
KSwgInllcyIpIHx8IGVxdWFsSWdub3JpbmdDYXNlKHZhbHVlLnN0cmluZygpLCAidHJ1ZSIpKSB7
CiAgICAgICAgICAgICAvLyBGSVhNRTogTm90IGR5bmFtaWMsIHNpbmNlIHdlIGFkZCB0aGlzIGJ1
dCBkb24ndCByZW1vdmUgaXQsIGJ1dCBpdCBtYXkgYmUgT0sgZm9yIG5vdwogICAgICAgICAgICAg
Ly8gdGhhdCB0aGlzIHJhcmVseS11c2VkIGF0dHJpYnV0ZSB3b24ndCB3b3JrIHByb3Blcmx5IGlm
IHlvdSByZW1vdmUgaXQuCi0gICAgICAgICAgICBhZGRDU1NMZW5ndGgoYXR0ciwgQ1NTUHJvcGVy
dHlXaWR0aCwgIjAiKTsKLSAgICAgICAgICAgIGFkZENTU0xlbmd0aChhdHRyLCBDU1NQcm9wZXJ0
eUhlaWdodCwgIjAiKTsKLSAgICAgICAgfQorICAgICAgICAgICAgYWRkQ1NTTGVuZ3RoKENTU1By
b3BlcnR5V2lkdGgsICIwIik7CisgICAgICAgICAgICBhZGRDU1NMZW5ndGgoQ1NTUHJvcGVydHlI
ZWlnaHQsICIwIik7CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgcmVtb3ZlQ1NTUHJvcGVy
dGllcyhDU1NQcm9wZXJ0eVdpZHRoLCBDU1NQcm9wZXJ0eUhlaWdodCk7CiAgICAgfSBlbHNlCiAg
ICAgICAgIEhUTUxQbHVnSW5JbWFnZUVsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmlidXRlKGF0dHIp
OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRW1iZWRFbGVtZW50Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbWJlZEVsZW1lbnQuaAppbmRleCAxMmNlMjcxLi5j
MzM1MjNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbWJlZEVsZW1lbnQu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbWJlZEVsZW1lbnQuaApAQCAtMzQsNyAr
MzQsNiBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIEhUTUxFbWJlZEVsZW1lbnQoY29uc3QgUXVh
bGlmaWVkTmFtZSYsIERvY3VtZW50KiwgYm9vbCBjcmVhdGVkQnlQYXJzZXIpOwogCi0gICAgdmly
dHVhbCBib29sIG1hcFRvRW50cnkoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUsIE1hcHBl
ZEF0dHJpYnV0ZUVudHJ5JiByZXN1bHQpIGNvbnN0OwogICAgIHZpcnR1YWwgdm9pZCBwYXJzZU1h
cHBlZEF0dHJpYnV0ZShBdHRyaWJ1dGUqKTsKIAogICAgIHZpcnR1YWwgYm9vbCByZW5kZXJlcklz
TmVlZGVkKGNvbnN0IE5vZGVSZW5kZXJpbmdDb250ZXh0Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxGb250RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxGb250RWxlbWVudC5jcHAKaW5kZXggZDBhZGUyOS4uYTVmNTM4NyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9udEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTEZvbnRFbGVtZW50LmNwcApAQCAtMTIzLDE4ICsxMjMsNiBAQCBzdGF0aWMgYm9v
bCBwYXJzZUZvbnRTaXplKGNvbnN0IFN0cmluZyYgaW5wdXQsIGludCYgc2l6ZSkKICAgICByZXR1
cm4gdHJ1ZTsKIH0KIAotYm9vbCBIVE1MRm9udEVsZW1lbnQ6Om1hcFRvRW50cnkoY29uc3QgUXVh
bGlmaWVkTmFtZSYgYXR0ck5hbWUsIE1hcHBlZEF0dHJpYnV0ZUVudHJ5JiByZXN1bHQpIGNvbnN0
Ci17Ci0gICAgaWYgKGF0dHJOYW1lID09IHNpemVBdHRyIHx8Ci0gICAgICAgIGF0dHJOYW1lID09
IGNvbG9yQXR0ciB8fAotICAgICAgICBhdHRyTmFtZSA9PSBmYWNlQXR0cikgewotICAgICAgICBy
ZXN1bHQgPSBlVW5pdmVyc2FsOwotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotICAgIAot
ICAgIHJldHVybiBIVE1MRWxlbWVudDo6bWFwVG9FbnRyeShhdHRyTmFtZSwgcmVzdWx0KTsKLX0K
LQogYm9vbCBIVE1MRm9udEVsZW1lbnQ6OmNzc1ZhbHVlRnJvbUZvbnRTaXplTnVtYmVyKGNvbnN0
IFN0cmluZyYgcywgaW50JiBzaXplKQogewogICAgIGludCBudW0gPSAwOwpAQCAtMTc1LDExICsx
NjMsMTkgQEAgdm9pZCBIVE1MRm9udEVsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmlidXRlKEF0dHJp
YnV0ZSogYXR0cikKICAgICBpZiAoYXR0ci0+bmFtZSgpID09IHNpemVBdHRyKSB7CiAgICAgICAg
IGludCBzaXplID0gMDsKICAgICAgICAgaWYgKGNzc1ZhbHVlRnJvbUZvbnRTaXplTnVtYmVyKGF0
dHItPnZhbHVlKCksIHNpemUpKQotICAgICAgICAgICAgYWRkQ1NTUHJvcGVydHkoYXR0ciwgQ1NT
UHJvcGVydHlGb250U2l6ZSwgc2l6ZSk7CisgICAgICAgICAgICBhZGRDU1NQcm9wZXJ0eShDU1NQ
cm9wZXJ0eUZvbnRTaXplLCBzaXplKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgcmVtb3Zl
Q1NTUHJvcGVydHkoQ1NTUHJvcGVydHlGb250U2l6ZSk7CiAgICAgfSBlbHNlIGlmIChhdHRyLT5u
YW1lKCkgPT0gY29sb3JBdHRyKSB7Ci0gICAgICAgIGFkZENTU0NvbG9yKGF0dHIsIENTU1Byb3Bl
cnR5Q29sb3IsIGF0dHItPnZhbHVlKCkpOworICAgICAgICBpZiAoYXR0ci0+dmFsdWUoKS5pc051
bGwoKSkKKyAgICAgICAgICAgIHJlbW92ZUNTU1Byb3BlcnR5KENTU1Byb3BlcnR5Q29sb3IpOwor
ICAgICAgICBlbHNlCisgICAgICAgICAgICBhZGRDU1NDb2xvcihDU1NQcm9wZXJ0eUNvbG9yLCBh
dHRyLT52YWx1ZSgpKTsKICAgICB9IGVsc2UgaWYgKGF0dHItPm5hbWUoKSA9PSBmYWNlQXR0cikg
ewotICAgICAgICBhZGRDU1NQcm9wZXJ0eShhdHRyLCBDU1NQcm9wZXJ0eUZvbnRGYW1pbHksIGF0
dHItPnZhbHVlKCkpOworICAgICAgICBpZiAoYXR0ci0+dmFsdWUoKS5pc051bGwoKSkKKyAgICAg
ICAgICAgIHJlbW92ZUNTU1Byb3BlcnR5KENTU1Byb3BlcnR5Rm9udEZhbWlseSk7CisgICAgICAg
IGVsc2UKKyAgICAgICAgICAgIGFkZENTU1Byb3BlcnR5KENTU1Byb3BlcnR5Rm9udEZhbWlseSwg
YXR0ci0+dmFsdWUoKSk7CiAgICAgfSBlbHNlCiAgICAgICAgIEhUTUxFbGVtZW50OjpwYXJzZU1h
cHBlZEF0dHJpYnV0ZShhdHRyKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTEZvbnRFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb250RWxlbWVudC5o
CmluZGV4IGY5N2FiMDguLjM0ZWM2ZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTEZvbnRFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9udEVsZW1l
bnQuaApAQCAtMzcsNyArMzcsNiBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIEhUTUxGb250RWxl
bWVudChjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQqKTsKIAotICAgIHZpcnR1YWwgYm9v
bCBtYXBUb0VudHJ5KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBNYXBwZWRBdHRyaWJ1dGVFbnRyeSYp
IGNvbnN0OwogICAgIHZpcnR1YWwgdm9pZCBwYXJzZU1hcHBlZEF0dHJpYnV0ZShBdHRyaWJ1dGUq
KTsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZyYW1lU2V0RWxl
bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGcmFtZVNldEVsZW1lbnQuY3BwCmlu
ZGV4IDk3OGE3MmQuLjljZGQ0MzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TEZyYW1lU2V0RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVT
ZXRFbGVtZW50LmNwcApAQCAtNjQsMTYgKzY0LDYgQEAgUGFzc1JlZlB0cjxIVE1MRnJhbWVTZXRF
bGVtZW50PiBIVE1MRnJhbWVTZXRFbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYK
ICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEhUTUxGcmFtZVNldEVsZW1lbnQodGFnTmFtZSwgZG9j
dW1lbnQpKTsKIH0KIAotYm9vbCBIVE1MRnJhbWVTZXRFbGVtZW50OjptYXBUb0VudHJ5KGNvbnN0
IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lLCBNYXBwZWRBdHRyaWJ1dGVFbnRyeSYgcmVzdWx0KSBj
b25zdAotewotICAgIGlmIChhdHRyTmFtZSA9PSBib3JkZXJjb2xvckF0dHIpIHsKLSAgICAgICAg
cmVzdWx0ID0gZVVuaXZlcnNhbDsKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotCi0gICAg
cmV0dXJuIEhUTUxFbGVtZW50OjptYXBUb0VudHJ5KGF0dHJOYW1lLCByZXN1bHQpOwotfQotCiB2
b2lkIEhUTUxGcmFtZVNldEVsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmlidXRlKEF0dHJpYnV0ZSog
YXR0cikKIHsKICAgICBpZiAoYXR0ci0+bmFtZSgpID09IHJvd3NBdHRyKSB7CkBAIC0xMDksMTEg
Kzk5LDExIEBAIHZvaWQgSFRNTEZyYW1lU2V0RWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUo
QXR0cmlidXRlKiBhdHRyKQogICAgICAgICB9IGVsc2UKICAgICAgICAgICAgIG1fYm9yZGVyU2V0
ID0gZmFsc2U7CiAgICAgfSBlbHNlIGlmIChhdHRyLT5uYW1lKCkgPT0gYm9yZGVyY29sb3JBdHRy
KSB7Ci0gICAgICAgIG1fYm9yZGVyQ29sb3JTZXQgPSBhdHRyLT5kZWNsKCk7Ci0gICAgICAgIGlm
ICghYXR0ci0+ZGVjbCgpICYmICFhdHRyLT5pc0VtcHR5KCkpIHsKLSAgICAgICAgICAgIGFkZENT
U0NvbG9yKGF0dHIsIENTU1Byb3BlcnR5Qm9yZGVyQ29sb3IsIGF0dHItPnZhbHVlKCkpOwotICAg
ICAgICAgICAgbV9ib3JkZXJDb2xvclNldCA9IHRydWU7Ci0gICAgICAgIH0KKyAgICAgICAgbV9i
b3JkZXJDb2xvclNldCA9ICFhdHRyLT5pc0VtcHR5KCk7CisgICAgICAgIGlmIChhdHRyLT52YWx1
ZSgpLmlzTnVsbCgpKQorICAgICAgICAgICAgcmVtb3ZlQ1NTUHJvcGVydHkoQ1NTUHJvcGVydHlC
b3JkZXJDb2xvcik7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGFkZENTU0NvbG9yKENTU1By
b3BlcnR5Qm9yZGVyQ29sb3IsIGF0dHItPnZhbHVlKCkpOwogICAgIH0gZWxzZSBpZiAoYXR0ci0+
bmFtZSgpID09IG9ubG9hZEF0dHIpCiAgICAgICAgIGRvY3VtZW50KCktPnNldFdpbmRvd0F0dHJp
YnV0ZUV2ZW50TGlzdGVuZXIoZXZlbnROYW1lcygpLmxvYWRFdmVudCwgY3JlYXRlQXR0cmlidXRl
RXZlbnRMaXN0ZW5lcihkb2N1bWVudCgpLT5mcmFtZSgpLCBhdHRyKSk7CiAgICAgZWxzZSBpZiAo
YXR0ci0+bmFtZSgpID09IG9uYmVmb3JldW5sb2FkQXR0cikKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTEZyYW1lU2V0RWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MRnJhbWVTZXRFbGVtZW50LmgKaW5kZXggNjk4ODk3NC4uMGJjMzRiNiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVTZXRFbGVtZW50LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MRnJhbWVTZXRFbGVtZW50LmgKQEAgLTY3LDcgKzY3LDYgQEAgcHVibGlj
OgogcHJpdmF0ZToKICAgICBIVE1MRnJhbWVTZXRFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUm
LCBEb2N1bWVudCopOwogCi0gICAgdmlydHVhbCBib29sIG1hcFRvRW50cnkoY29uc3QgUXVhbGlm
aWVkTmFtZSYgYXR0ck5hbWUsIE1hcHBlZEF0dHJpYnV0ZUVudHJ5JiByZXN1bHQpIGNvbnN0Owog
ICAgIHZpcnR1YWwgdm9pZCBwYXJzZU1hcHBlZEF0dHJpYnV0ZShBdHRyaWJ1dGUqKTsKIAogICAg
IHZpcnR1YWwgdm9pZCBhdHRhY2goKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTEhSRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxIUkVsZW1lbnQuY3Bw
CmluZGV4IDQ0YWEwNTIuLmE4NDkwMTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTEhSRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSFJFbGVtZW50
LmNwcApAQCAtNDgsNjAgKzQ4LDcwIEBAIFBhc3NSZWZQdHI8SFRNTEhSRWxlbWVudD4gSFRNTEhS
RWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvCiAgICAgcmV0
dXJuIGFkb3B0UmVmKG5ldyBIVE1MSFJFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KSk7CiB9CiAK
LWJvb2wgSFRNTEhSRWxlbWVudDo6bWFwVG9FbnRyeShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRy
TmFtZSwgTWFwcGVkQXR0cmlidXRlRW50cnkmIHJlc3VsdCkgY29uc3QKLXsKLSAgICBpZiAoYXR0
ck5hbWUgPT0gYWxpZ25BdHRyIHx8Ci0gICAgICAgIGF0dHJOYW1lID09IHdpZHRoQXR0ciB8fAot
ICAgICAgICBhdHRyTmFtZSA9PSBjb2xvckF0dHIgfHwKLSAgICAgICAgYXR0ck5hbWUgPT0gc2l6
ZUF0dHIgfHwKLSAgICAgICAgYXR0ck5hbWUgPT0gbm9zaGFkZUF0dHIpIHsKLSAgICAgICAgcmVz
dWx0ID0gZUhSOwotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotICAgIHJldHVybiBIVE1M
RWxlbWVudDo6bWFwVG9FbnRyeShhdHRyTmFtZSwgcmVzdWx0KTsKLX0KLQogdm9pZCBIVE1MSFJF
bGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpYnV0ZShBdHRyaWJ1dGUqIGF0dHIpCiB7CiAgICAgaWYg
KGF0dHItPm5hbWUoKSA9PSBhbGlnbkF0dHIpIHsKLSAgICAgICAgaWYgKGVxdWFsSWdub3JpbmdD
YXNlKGF0dHItPnZhbHVlKCksICJsZWZ0IikpIHsKLSAgICAgICAgICAgIGFkZENTU1Byb3BlcnR5
KGF0dHIsIENTU1Byb3BlcnR5TWFyZ2luTGVmdCwgIjAiKTsKLSAgICAgICAgICAgIGFkZENTU1By
b3BlcnR5KGF0dHIsIENTU1Byb3BlcnR5TWFyZ2luUmlnaHQsIENTU1ZhbHVlQXV0byk7CisgICAg
ICAgIGlmIChhdHRyLT52YWx1ZSgpLmlzTnVsbCgpKSB7CisgICAgICAgICAgICByZW1vdmVDU1NQ
cm9wZXJ0aWVzKENTU1Byb3BlcnR5TWFyZ2luTGVmdCwgQ1NTUHJvcGVydHlNYXJnaW5SaWdodCk7
CisgICAgICAgIH0gZWxzZSBpZiAoZXF1YWxJZ25vcmluZ0Nhc2UoYXR0ci0+dmFsdWUoKSwgImxl
ZnQiKSkgeworICAgICAgICAgICAgYWRkQ1NTUHJvcGVydHkoQ1NTUHJvcGVydHlNYXJnaW5MZWZ0
LCAiMCIpOworICAgICAgICAgICAgYWRkQ1NTUHJvcGVydHkoQ1NTUHJvcGVydHlNYXJnaW5SaWdo
dCwgQ1NTVmFsdWVBdXRvKTsKICAgICAgICAgfSBlbHNlIGlmIChlcXVhbElnbm9yaW5nQ2FzZShh
dHRyLT52YWx1ZSgpLCAicmlnaHQiKSkgewotICAgICAgICAgICAgYWRkQ1NTUHJvcGVydHkoYXR0
ciwgQ1NTUHJvcGVydHlNYXJnaW5MZWZ0LCBDU1NWYWx1ZUF1dG8pOwotICAgICAgICAgICAgYWRk
Q1NTUHJvcGVydHkoYXR0ciwgQ1NTUHJvcGVydHlNYXJnaW5SaWdodCwgIjAiKTsKKyAgICAgICAg
ICAgIGFkZENTU1Byb3BlcnR5KENTU1Byb3BlcnR5TWFyZ2luTGVmdCwgQ1NTVmFsdWVBdXRvKTsK
KyAgICAgICAgICAgIGFkZENTU1Byb3BlcnR5KENTU1Byb3BlcnR5TWFyZ2luUmlnaHQsICIwIik7
CiAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBhZGRDU1NQcm9wZXJ0eShhdHRyLCBDU1NQ
cm9wZXJ0eU1hcmdpbkxlZnQsIENTU1ZhbHVlQXV0byk7Ci0gICAgICAgICAgICBhZGRDU1NQcm9w
ZXJ0eShhdHRyLCBDU1NQcm9wZXJ0eU1hcmdpblJpZ2h0LCBDU1NWYWx1ZUF1dG8pOworICAgICAg
ICAgICAgYWRkQ1NTUHJvcGVydHkoQ1NTUHJvcGVydHlNYXJnaW5MZWZ0LCBDU1NWYWx1ZUF1dG8p
OworICAgICAgICAgICAgYWRkQ1NTUHJvcGVydHkoQ1NTUHJvcGVydHlNYXJnaW5SaWdodCwgQ1NT
VmFsdWVBdXRvKTsKICAgICAgICAgfQogICAgIH0gZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09IHdp
ZHRoQXR0cikgewotICAgICAgICBib29sIG9rOwotICAgICAgICBpbnQgdiA9IGF0dHItPnZhbHVl
KCkudG9JbnQoJm9rKTsKLSAgICAgICAgaWYgKG9rICYmICF2KQotICAgICAgICAgICAgYWRkQ1NT
TGVuZ3RoKGF0dHIsIENTU1Byb3BlcnR5V2lkdGgsICIxIik7Ci0gICAgICAgIGVsc2UKLSAgICAg
ICAgICAgIGFkZENTU0xlbmd0aChhdHRyLCBDU1NQcm9wZXJ0eVdpZHRoLCBhdHRyLT52YWx1ZSgp
KTsKKyAgICAgICAgaWYgKGF0dHItPnZhbHVlKCkuaXNOdWxsKCkpCisgICAgICAgICAgICByZW1v
dmVDU1NQcm9wZXJ0eShDU1NQcm9wZXJ0eVdpZHRoKTsKKyAgICAgICAgZWxzZSB7CisgICAgICAg
ICAgICBib29sIG9rOworICAgICAgICAgICAgaW50IHYgPSBhdHRyLT52YWx1ZSgpLnRvSW50KCZv
ayk7CisgICAgICAgICAgICBpZiAob2sgJiYgIXYpCisgICAgICAgICAgICAgICAgYWRkQ1NTTGVu
Z3RoKENTU1Byb3BlcnR5V2lkdGgsICIxIik7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAg
ICAgICAgYWRkQ1NTTGVuZ3RoKENTU1Byb3BlcnR5V2lkdGgsIGF0dHItPnZhbHVlKCkpOworICAg
ICAgICB9CiAgICAgfSBlbHNlIGlmIChhdHRyLT5uYW1lKCkgPT0gY29sb3JBdHRyKSB7Ci0gICAg
ICAgIGFkZENTU1Byb3BlcnR5KGF0dHIsIENTU1Byb3BlcnR5Qm9yZGVyVG9wU3R5bGUsIENTU1Zh
bHVlU29saWQpOwotICAgICAgICBhZGRDU1NQcm9wZXJ0eShhdHRyLCBDU1NQcm9wZXJ0eUJvcmRl
clJpZ2h0U3R5bGUsIENTU1ZhbHVlU29saWQpOwotICAgICAgICBhZGRDU1NQcm9wZXJ0eShhdHRy
LCBDU1NQcm9wZXJ0eUJvcmRlckJvdHRvbVN0eWxlLCBDU1NWYWx1ZVNvbGlkKTsKLSAgICAgICAg
YWRkQ1NTUHJvcGVydHkoYXR0ciwgQ1NTUHJvcGVydHlCb3JkZXJMZWZ0U3R5bGUsIENTU1ZhbHVl
U29saWQpOwotICAgICAgICBhZGRDU1NDb2xvcihhdHRyLCBDU1NQcm9wZXJ0eUJvcmRlckNvbG9y
LCBhdHRyLT52YWx1ZSgpKTsKLSAgICAgICAgYWRkQ1NTQ29sb3IoYXR0ciwgQ1NTUHJvcGVydHlC
YWNrZ3JvdW5kQ29sb3IsIGF0dHItPnZhbHVlKCkpOworICAgICAgICBpZiAoYXR0ci0+dmFsdWUo
KS5pc051bGwoKSkgeworICAgICAgICAgICAgcmVtb3ZlQ1NTUHJvcGVydGllcyhDU1NQcm9wZXJ0
eUJvcmRlclRvcFN0eWxlLCBDU1NQcm9wZXJ0eUJvcmRlclJpZ2h0U3R5bGUsIENTU1Byb3BlcnR5
Qm9yZGVyQm90dG9tU3R5bGUsIENTU1Byb3BlcnR5Qm9yZGVyTGVmdFN0eWxlLCBDU1NQcm9wZXJ0
eUJvcmRlckNvbG9yKTsKKyAgICAgICAgICAgIHJlbW92ZUNTU1Byb3BlcnR5KENTU1Byb3BlcnR5
QmFja2dyb3VuZENvbG9yKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGFkZENTU1By
b3BlcnR5KENTU1Byb3BlcnR5Qm9yZGVyVG9wU3R5bGUsIENTU1ZhbHVlU29saWQpOworICAgICAg
ICAgICAgYWRkQ1NTUHJvcGVydHkoQ1NTUHJvcGVydHlCb3JkZXJSaWdodFN0eWxlLCBDU1NWYWx1
ZVNvbGlkKTsKKyAgICAgICAgICAgIGFkZENTU1Byb3BlcnR5KENTU1Byb3BlcnR5Qm9yZGVyQm90
dG9tU3R5bGUsIENTU1ZhbHVlU29saWQpOworICAgICAgICAgICAgYWRkQ1NTUHJvcGVydHkoQ1NT
UHJvcGVydHlCb3JkZXJMZWZ0U3R5bGUsIENTU1ZhbHVlU29saWQpOworICAgICAgICAgICAgYWRk
Q1NTQ29sb3IoQ1NTUHJvcGVydHlCb3JkZXJDb2xvciwgYXR0ci0+dmFsdWUoKSk7CisgICAgICAg
ICAgICBhZGRDU1NDb2xvcihDU1NQcm9wZXJ0eUJhY2tncm91bmRDb2xvciwgYXR0ci0+dmFsdWUo
KSk7CisgICAgICAgIH0KICAgICB9IGVsc2UgaWYgKGF0dHItPm5hbWUoKSA9PSBub3NoYWRlQXR0
cikgewotICAgICAgICBhZGRDU1NQcm9wZXJ0eShhdHRyLCBDU1NQcm9wZXJ0eUJvcmRlclRvcFN0
eWxlLCBDU1NWYWx1ZVNvbGlkKTsKLSAgICAgICAgYWRkQ1NTUHJvcGVydHkoYXR0ciwgQ1NTUHJv
cGVydHlCb3JkZXJSaWdodFN0eWxlLCBDU1NWYWx1ZVNvbGlkKTsKLSAgICAgICAgYWRkQ1NTUHJv
cGVydHkoYXR0ciwgQ1NTUHJvcGVydHlCb3JkZXJCb3R0b21TdHlsZSwgQ1NTVmFsdWVTb2xpZCk7
Ci0gICAgICAgIGFkZENTU1Byb3BlcnR5KGF0dHIsIENTU1Byb3BlcnR5Qm9yZGVyTGVmdFN0eWxl
LCBDU1NWYWx1ZVNvbGlkKTsKLSAgICAgICAgYWRkQ1NTQ29sb3IoYXR0ciwgQ1NTUHJvcGVydHlC
b3JkZXJDb2xvciwgU3RyaW5nKCJncmV5IikpOwotICAgICAgICBhZGRDU1NDb2xvcihhdHRyLCBD
U1NQcm9wZXJ0eUJhY2tncm91bmRDb2xvciwgU3RyaW5nKCJncmV5IikpOworICAgICAgICBpZiAo
YXR0ci0+dmFsdWUoKS5pc051bGwoKSkgeworICAgICAgICAgICAgcmVtb3ZlQ1NTUHJvcGVydGll
cyhDU1NQcm9wZXJ0eUJvcmRlclRvcFN0eWxlLCBDU1NQcm9wZXJ0eUJvcmRlclJpZ2h0U3R5bGUs
IENTU1Byb3BlcnR5Qm9yZGVyQm90dG9tU3R5bGUsIENTU1Byb3BlcnR5Qm9yZGVyTGVmdFN0eWxl
LCBDU1NQcm9wZXJ0eUJvcmRlckNvbG9yKTsKKyAgICAgICAgICAgIHJlbW92ZUNTU1Byb3BlcnR5
KENTU1Byb3BlcnR5QmFja2dyb3VuZENvbG9yKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAg
ICAgIGFkZENTU1Byb3BlcnR5KENTU1Byb3BlcnR5Qm9yZGVyVG9wU3R5bGUsIENTU1ZhbHVlU29s
aWQpOworICAgICAgICAgICAgYWRkQ1NTUHJvcGVydHkoQ1NTUHJvcGVydHlCb3JkZXJSaWdodFN0
eWxlLCBDU1NWYWx1ZVNvbGlkKTsKKyAgICAgICAgICAgIGFkZENTU1Byb3BlcnR5KENTU1Byb3Bl
cnR5Qm9yZGVyQm90dG9tU3R5bGUsIENTU1ZhbHVlU29saWQpOworICAgICAgICAgICAgYWRkQ1NT
UHJvcGVydHkoQ1NTUHJvcGVydHlCb3JkZXJMZWZ0U3R5bGUsIENTU1ZhbHVlU29saWQpOworICAg
ICAgICAgICAgYWRkQ1NTQ29sb3IoQ1NTUHJvcGVydHlCb3JkZXJDb2xvciwgU3RyaW5nKCJncmV5
IikpOworICAgICAgICAgICAgYWRkQ1NTQ29sb3IoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQ29sb3Is
IFN0cmluZygiZ3JleSIpKTsKKyAgICAgICAgfQogICAgIH0gZWxzZSBpZiAoYXR0ci0+bmFtZSgp
ID09IHNpemVBdHRyKSB7Ci0gICAgICAgIFN0cmluZ0ltcGwqIHNpID0gYXR0ci0+dmFsdWUoKS5p
bXBsKCk7Ci0gICAgICAgIGludCBzaXplID0gc2ktPnRvSW50KCk7Ci0gICAgICAgIGlmIChzaXpl
IDw9IDEpCi0gICAgICAgICAgICBhZGRDU1NQcm9wZXJ0eShhdHRyLCBDU1NQcm9wZXJ0eUJvcmRl
ckJvdHRvbVdpZHRoLCBTdHJpbmcoIjAiKSk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIGFk
ZENTU0xlbmd0aChhdHRyLCBDU1NQcm9wZXJ0eUhlaWdodCwgU3RyaW5nOjpudW1iZXIoc2l6ZS0y
KSk7CisgICAgICAgIGlmIChhdHRyLT52YWx1ZSgpLmlzTnVsbCgpKSB7CisgICAgICAgICAgICBy
ZW1vdmVDU1NQcm9wZXJ0aWVzKENTU1Byb3BlcnR5Qm9yZGVyQm90dG9tV2lkdGgsIENTU1Byb3Bl
cnR5SGVpZ2h0KTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIFN0cmluZ0ltcGwqIHNp
ID0gYXR0ci0+dmFsdWUoKS5pbXBsKCk7CisgICAgICAgICAgICBpbnQgc2l6ZSA9IHNpLT50b0lu
dCgpOworICAgICAgICAgICAgaWYgKHNpemUgPD0gMSkgeworICAgICAgICAgICAgICAgIGFkZENT
U1Byb3BlcnR5KENTU1Byb3BlcnR5Qm9yZGVyQm90dG9tV2lkdGgsIFN0cmluZygiMCIpKTsKKyAg
ICAgICAgICAgICAgICByZW1vdmVDU1NQcm9wZXJ0eShDU1NQcm9wZXJ0eUhlaWdodCk7CisgICAg
ICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGFkZENTU0xlbmd0aChDU1NQcm9wZXJ0
eUhlaWdodCwgU3RyaW5nOjpudW1iZXIoc2l6ZS0yKSk7CisgICAgICAgICAgICAgICAgcmVtb3Zl
Q1NTUHJvcGVydHkoQ1NTUHJvcGVydHlCb3JkZXJCb3R0b21XaWR0aCk7CisgICAgICAgICAgICB9
CisgICAgICAgIH0KICAgICB9IGVsc2UKICAgICAgICAgSFRNTEVsZW1lbnQ6OnBhcnNlTWFwcGVk
QXR0cmlidXRlKGF0dHIpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
SFJFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxIUkVsZW1lbnQuaAppbmRleCAz
N2MxMTkwLi4wNzliOGUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxIUkVs
ZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxIUkVsZW1lbnQuaApAQCAtMzYs
OCArMzYsNyBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAgICAgSFRNTEhSRWxlbWVudChjb25zdCBR
dWFsaWZpZWROYW1lJiwgRG9jdW1lbnQqKTsKLSAgICAKLSAgICB2aXJ0dWFsIGJvb2wgbWFwVG9F
bnRyeShjb25zdCBRdWFsaWZpZWROYW1lJiwgTWFwcGVkQXR0cmlidXRlRW50cnkmKSBjb25zdDsK
KwogICAgIHZpcnR1YWwgdm9pZCBwYXJzZU1hcHBlZEF0dHJpYnV0ZShBdHRyaWJ1dGUqKTsKIH07
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElGcmFtZUVsZW1lbnQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSUZyYW1lRWxlbWVudC5jcHAKaW5kZXggODE3YjVk
Ny4uNDJkNDc1OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSUZyYW1lRWxl
bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSUZyYW1lRWxlbWVudC5jcHAK
QEAgLTQ4LDMyICs0OCwxMiBAQCBQYXNzUmVmUHRyPEhUTUxJRnJhbWVFbGVtZW50PiBIVE1MSUZy
YW1lRWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZwogICAgIHJldHVybiBh
ZG9wdFJlZihuZXcgSFRNTElGcmFtZUVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpKTsKIH0KIAot
Ym9vbCBIVE1MSUZyYW1lRWxlbWVudDo6bWFwVG9FbnRyeShjb25zdCBRdWFsaWZpZWROYW1lJiBh
dHRyTmFtZSwgTWFwcGVkQXR0cmlidXRlRW50cnkmIHJlc3VsdCkgY29uc3QKLXsKLSAgICBpZiAo
YXR0ck5hbWUgPT0gd2lkdGhBdHRyIHx8IGF0dHJOYW1lID09IGhlaWdodEF0dHIpIHsKLSAgICAg
ICAgcmVzdWx0ID0gZVVuaXZlcnNhbDsKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLSAg
ICAKLSAgICBpZiAoYXR0ck5hbWUgPT0gYWxpZ25BdHRyKSB7Ci0gICAgICAgIHJlc3VsdCA9IGVS
ZXBsYWNlZDsgLy8gU2hhcmUgd2l0aCA8aW1nPiBzaW5jZSB0aGUgYWxpZ25tZW50IGJlaGF2aW9y
IGlzIHRoZSBzYW1lLgotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotICAgIAotICAgIGlm
IChhdHRyTmFtZSA9PSBmcmFtZWJvcmRlckF0dHIpIHsKLSAgICAgICAgcmVzdWx0ID0gZVJlcGxh
Y2VkOwotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotCi0gICAgcmV0dXJuIEhUTUxGcmFt
ZUVsZW1lbnRCYXNlOjptYXBUb0VudHJ5KGF0dHJOYW1lLCByZXN1bHQpOwotfQotCiB2b2lkIEhU
TUxJRnJhbWVFbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpYnV0ZShBdHRyaWJ1dGUqIGF0dHIpCiB7
CiAgICAgaWYgKGF0dHItPm5hbWUoKSA9PSB3aWR0aEF0dHIpCi0gICAgICAgIGFkZENTU0xlbmd0
aChhdHRyLCBDU1NQcm9wZXJ0eVdpZHRoLCBhdHRyLT52YWx1ZSgpKTsKKyAgICAgICAgYWRkQ1NT
TGVuZ3RoKENTU1Byb3BlcnR5V2lkdGgsIGF0dHItPnZhbHVlKCkpOwogICAgIGVsc2UgaWYgKGF0
dHItPm5hbWUoKSA9PSBoZWlnaHRBdHRyKQotICAgICAgICBhZGRDU1NMZW5ndGgoYXR0ciwgQ1NT
UHJvcGVydHlIZWlnaHQsIGF0dHItPnZhbHVlKCkpOworICAgICAgICBhZGRDU1NMZW5ndGgoQ1NT
UHJvcGVydHlIZWlnaHQsIGF0dHItPnZhbHVlKCkpOwogICAgIGVsc2UgaWYgKGF0dHItPm5hbWUo
KSA9PSBhbGlnbkF0dHIpCiAgICAgICAgIGFkZEhUTUxBbGlnbm1lbnQoYXR0cik7CiAgICAgZWxz
ZSBpZiAoYXR0ci0+bmFtZSgpID09IG5hbWVBdHRyKSB7CkBAIC04Nyw5ICs2NywxMSBAQCB2b2lk
IEhUTUxJRnJhbWVFbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpYnV0ZShBdHRyaWJ1dGUqIGF0dHIp
CiAgICAgfSBlbHNlIGlmIChhdHRyLT5uYW1lKCkgPT0gZnJhbWVib3JkZXJBdHRyKSB7CiAgICAg
ICAgIC8vIEZyYW1lIGJvcmRlciBkb2Vzbid0IHJlYWxseSBtYXRjaCB0aGUgSFRNTDQgc3BlYyBk
ZWZpbml0aW9uIGZvciBpZnJhbWVzLiAgSXQgc2ltcGx5IGFkZHMKICAgICAgICAgLy8gYSBwcmVz
ZW50YXRpb25hbCBoaW50IHRoYXQgdGhlIGJvcmRlciBzaG91bGQgYmUgb2ZmIGlmIHNldCB0byB6
ZXJvLgotICAgICAgICBpZiAoIWF0dHItPmlzTnVsbCgpICYmICFhdHRyLT52YWx1ZSgpLnRvSW50
KCkpCisgICAgICAgIGlmICghYXR0ci0+aXNOdWxsKCkgJiYgIWF0dHItPnZhbHVlKCkudG9JbnQo
KSkgewogICAgICAgICAgICAgLy8gQWRkIGEgcnVsZSB0aGF0IG51bGxzIG91dCBvdXIgYm9yZGVy
IHdpZHRoLgotICAgICAgICAgICAgYWRkQ1NTTGVuZ3RoKGF0dHIsIENTU1Byb3BlcnR5Qm9yZGVy
V2lkdGgsICIwIik7CisgICAgICAgICAgICBhZGRDU1NMZW5ndGgoQ1NTUHJvcGVydHlCb3JkZXJX
aWR0aCwgIjAiKTsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICByZW1vdmVDU1NQcm9wZXJ0
eShDU1NQcm9wZXJ0eUJvcmRlcldpZHRoKTsKICAgICB9IGVsc2UgaWYgKGF0dHItPm5hbWUoKSA9
PSBzYW5kYm94QXR0cikKICAgICAgICAgc2V0U2FuZGJveEZsYWdzKGF0dHItPmlzTnVsbCgpID8g
U2FuZGJveE5vbmUgOiBTZWN1cml0eUNvbnRleHQ6OnBhcnNlU2FuZGJveFBvbGljeShhdHRyLT52
YWx1ZSgpKSk7CiAgICAgZWxzZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
SUZyYW1lRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSUZyYW1lRWxlbWVudC5o
CmluZGV4IGE3YWVjZjguLjM1NmZkNDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTElGcmFtZUVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJRnJhbWVF
bGVtZW50LmgKQEAgLTM1LDcgKzM1LDYgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBIVE1MSUZy
YW1lRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQqKTsKIAotICAgIHZpcnR1
YWwgYm9vbCBtYXBUb0VudHJ5KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBNYXBwZWRBdHRyaWJ1dGVF
bnRyeSYpIGNvbnN0OwogICAgIHZpcnR1YWwgdm9pZCBwYXJzZU1hcHBlZEF0dHJpYnV0ZShBdHRy
aWJ1dGUqKTsKIAogICAgIHZpcnR1YWwgdm9pZCBpbnNlcnRlZEludG9Eb2N1bWVudCgpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW1hZ2VFbGVtZW50LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTEltYWdlRWxlbWVudC5jcHAKaW5kZXggYjVjNTEzZC4uODljYmRi
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW1hZ2VFbGVtZW50LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbWFnZUVsZW1lbnQuY3BwCkBAIC03OCwyNSAr
NzgsNiBAQCBQYXNzUmVmUHRyPEhUTUxJbWFnZUVsZW1lbnQ+IEhUTUxJbWFnZUVsZW1lbnQ6OmNy
ZWF0ZUZvckpTQ29uc3RydWN0b3IoRG9jdW1lbnQqCiAgICAgcmV0dXJuIGltYWdlLnJlbGVhc2Uo
KTsKIH0KIAotYm9vbCBIVE1MSW1hZ2VFbGVtZW50OjptYXBUb0VudHJ5KGNvbnN0IFF1YWxpZmll
ZE5hbWUmIGF0dHJOYW1lLCBNYXBwZWRBdHRyaWJ1dGVFbnRyeSYgcmVzdWx0KSBjb25zdAotewot
ICAgIGlmIChhdHRyTmFtZSA9PSB3aWR0aEF0dHIgfHwKLSAgICAgICAgYXR0ck5hbWUgPT0gaGVp
Z2h0QXR0ciB8fAotICAgICAgICBhdHRyTmFtZSA9PSB2c3BhY2VBdHRyIHx8Ci0gICAgICAgIGF0
dHJOYW1lID09IGhzcGFjZUF0dHIgfHwKLSAgICAgICAgYXR0ck5hbWUgPT0gdmFsaWduQXR0cikg
ewotICAgICAgICByZXN1bHQgPSBlVW5pdmVyc2FsOwotICAgICAgICByZXR1cm4gZmFsc2U7Ci0g
ICAgfQotCi0gICAgaWYgKGF0dHJOYW1lID09IGJvcmRlckF0dHIgfHwgYXR0ck5hbWUgPT0gYWxp
Z25BdHRyKSB7Ci0gICAgICAgIHJlc3VsdCA9IGVSZXBsYWNlZDsgLy8gU2hhcmVkIHdpdGggZW1i
ZWQgYW5kIGlmcmFtZSBlbGVtZW50cy4KLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLQot
ICAgIHJldHVybiBIVE1MRWxlbWVudDo6bWFwVG9FbnRyeShhdHRyTmFtZSwgcmVzdWx0KTsKLX0K
LQogdm9pZCBIVE1MSW1hZ2VFbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpYnV0ZShBdHRyaWJ1dGUq
IGF0dHIpCiB7CiAgICAgY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUgPSBhdHRyLT5uYW1l
KCk7CkBAIC0xMDYsMjIgKzg3LDM5IEBAIHZvaWQgSFRNTEltYWdlRWxlbWVudDo6cGFyc2VNYXBw
ZWRBdHRyaWJ1dGUoQXR0cmlidXRlKiBhdHRyKQogICAgIH0gZWxzZSBpZiAoYXR0ck5hbWUgPT0g
c3JjQXR0cikKICAgICAgICAgbV9pbWFnZUxvYWRlci51cGRhdGVGcm9tRWxlbWVudElnbm9yaW5n
UHJldmlvdXNFcnJvcigpOwogICAgIGVsc2UgaWYgKGF0dHJOYW1lID09IHdpZHRoQXR0cikKLSAg
ICAgICAgYWRkQ1NTTGVuZ3RoKGF0dHIsIENTU1Byb3BlcnR5V2lkdGgsIGF0dHItPnZhbHVlKCkp
OworICAgICAgICBpZiAoYXR0ci0+dmFsdWUoKS5pc051bGwoKSkKKyAgICAgICAgICAgIHJlbW92
ZUNTU1Byb3BlcnR5KENTU1Byb3BlcnR5V2lkdGgpOworICAgICAgICBlbHNlCisgICAgICAgICAg
ICBhZGRDU1NMZW5ndGgoQ1NTUHJvcGVydHlXaWR0aCwgYXR0ci0+dmFsdWUoKSk7CiAgICAgZWxz
ZSBpZiAoYXR0ck5hbWUgPT0gaGVpZ2h0QXR0cikKLSAgICAgICAgYWRkQ1NTTGVuZ3RoKGF0dHIs
IENTU1Byb3BlcnR5SGVpZ2h0LCBhdHRyLT52YWx1ZSgpKTsKKyAgICAgICAgaWYgKGF0dHItPnZh
bHVlKCkuaXNOdWxsKCkpCisgICAgICAgICAgICByZW1vdmVDU1NQcm9wZXJ0eShDU1NQcm9wZXJ0
eUhlaWdodCk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGFkZENTU0xlbmd0aChDU1NQcm9w
ZXJ0eUhlaWdodCwgYXR0ci0+dmFsdWUoKSk7CiAgICAgZWxzZSBpZiAoYXR0ck5hbWUgPT0gYm9y
ZGVyQXR0cikgewogICAgICAgICAvLyBib3JkZXI9Im5vYm9yZGVyIiAtPiBib3JkZXI9IjAiCiAg
ICAgICAgIGFwcGx5Qm9yZGVyQXR0cmlidXRlKGF0dHIpOwogICAgIH0gZWxzZSBpZiAoYXR0ck5h
bWUgPT0gdnNwYWNlQXR0cikgewotICAgICAgICBhZGRDU1NMZW5ndGgoYXR0ciwgQ1NTUHJvcGVy
dHlNYXJnaW5Ub3AsIGF0dHItPnZhbHVlKCkpOwotICAgICAgICBhZGRDU1NMZW5ndGgoYXR0ciwg
Q1NTUHJvcGVydHlNYXJnaW5Cb3R0b20sIGF0dHItPnZhbHVlKCkpOworICAgICAgICBpZiAoYXR0
ci0+dmFsdWUoKS5pc051bGwoKSkKKyAgICAgICAgICAgIHJlbW92ZUNTU1Byb3BlcnRpZXMoQ1NT
UHJvcGVydHlNYXJnaW5Ub3AsIENTU1Byb3BlcnR5TWFyZ2luQm90dG9tKTsKKyAgICAgICAgZWxz
ZSB7CisgICAgICAgICAgICBhZGRDU1NMZW5ndGgoQ1NTUHJvcGVydHlNYXJnaW5Ub3AsIGF0dHIt
PnZhbHVlKCkpOworICAgICAgICAgICAgYWRkQ1NTTGVuZ3RoKENTU1Byb3BlcnR5TWFyZ2luQm90
dG9tLCBhdHRyLT52YWx1ZSgpKTsKKyAgICAgICAgfQogICAgIH0gZWxzZSBpZiAoYXR0ck5hbWUg
PT0gaHNwYWNlQXR0cikgewotICAgICAgICBhZGRDU1NMZW5ndGgoYXR0ciwgQ1NTUHJvcGVydHlN
YXJnaW5MZWZ0LCBhdHRyLT52YWx1ZSgpKTsKLSAgICAgICAgYWRkQ1NTTGVuZ3RoKGF0dHIsIENT
U1Byb3BlcnR5TWFyZ2luUmlnaHQsIGF0dHItPnZhbHVlKCkpOworICAgICAgICBpZiAoYXR0ci0+
dmFsdWUoKS5pc051bGwoKSkKKyAgICAgICAgICAgIHJlbW92ZUNTU1Byb3BlcnRpZXMoQ1NTUHJv
cGVydHlNYXJnaW5MZWZ0LCBDU1NQcm9wZXJ0eU1hcmdpblJpZ2h0KTsKKyAgICAgICAgZWxzZSB7
CisgICAgICAgICAgICBhZGRDU1NMZW5ndGgoQ1NTUHJvcGVydHlNYXJnaW5MZWZ0LCBhdHRyLT52
YWx1ZSgpKTsKKyAgICAgICAgICAgIGFkZENTU0xlbmd0aChDU1NQcm9wZXJ0eU1hcmdpblJpZ2h0
LCBhdHRyLT52YWx1ZSgpKTsKKyAgICAgICAgfQogICAgIH0gZWxzZSBpZiAoYXR0ck5hbWUgPT0g
YWxpZ25BdHRyKQogICAgICAgICBhZGRIVE1MQWxpZ25tZW50KGF0dHIpOwogICAgIGVsc2UgaWYg
KGF0dHJOYW1lID09IHZhbGlnbkF0dHIpCi0gICAgICAgIGFkZENTU1Byb3BlcnR5KGF0dHIsIENT
U1Byb3BlcnR5VmVydGljYWxBbGlnbiwgYXR0ci0+dmFsdWUoKSk7CisgICAgICAgIGlmIChhdHRy
LT52YWx1ZSgpLmlzTnVsbCgpKQorICAgICAgICAgICAgcmVtb3ZlQ1NTUHJvcGVydHkoQ1NTUHJv
cGVydHlWZXJ0aWNhbEFsaWduKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgYWRkQ1NTUHJv
cGVydHkoQ1NTUHJvcGVydHlWZXJ0aWNhbEFsaWduLCBhdHRyLT52YWx1ZSgpKTsKICAgICBlbHNl
IGlmIChhdHRyTmFtZSA9PSB1c2VtYXBBdHRyKQogICAgICAgICBzZXRJc0xpbmsoIWF0dHItPmlz
TnVsbCgpKTsKICAgICBlbHNlIGlmIChhdHRyTmFtZSA9PSBvbmFib3J0QXR0cikKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEltYWdlRWxlbWVudC5oIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MSW1hZ2VFbGVtZW50LmgKaW5kZXggOGNiM2VlOS4uY2ZhNTIwZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW1hZ2VFbGVtZW50LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MSW1hZ2VFbGVtZW50LmgKQEAgLTgzLDcgKzgzLDYgQEAgcHJvdGVj
dGVkOgogICAgIHZpcnR1YWwgdm9pZCBkaWRNb3ZlVG9OZXdEb2N1bWVudChEb2N1bWVudCogb2xk
RG9jdW1lbnQpIE9WRVJSSURFOwogCiBwcml2YXRlOgotICAgIHZpcnR1YWwgYm9vbCBtYXBUb0Vu
dHJ5KGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lLCBNYXBwZWRBdHRyaWJ1dGVFbnRyeSYg
cmVzdWx0KSBjb25zdDsKICAgICB2aXJ0dWFsIHZvaWQgcGFyc2VNYXBwZWRBdHRyaWJ1dGUoQXR0
cmlidXRlKik7CiAKICAgICB2aXJ0dWFsIHZvaWQgYXR0YWNoKCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MSW5wdXRFbGVtZW50LmNwcAppbmRleCA0MTNjMTI3Li5iNjRjMGUwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5jcHAKQEAgLTY1OSwyNCArNjU5LDYgQEAgdm9p
ZCBIVE1MSW5wdXRFbGVtZW50OjphY2Nlc3NLZXlBY3Rpb24oYm9vbCBzZW5kTW91c2VFdmVudHMp
CiAgICAgbV9pbnB1dFR5cGUtPmFjY2Vzc0tleUFjdGlvbihzZW5kTW91c2VFdmVudHMpOwogfQog
Ci1ib29sIEhUTUxJbnB1dEVsZW1lbnQ6Om1hcFRvRW50cnkoY29uc3QgUXVhbGlmaWVkTmFtZSYg
YXR0ck5hbWUsIE1hcHBlZEF0dHJpYnV0ZUVudHJ5JiByZXN1bHQpIGNvbnN0Ci17Ci0gICAgaWYg
KCgoYXR0ck5hbWUgPT0gaGVpZ2h0QXR0ciB8fCBhdHRyTmFtZSA9PSB3aWR0aEF0dHIpICYmIG1f
aW5wdXRUeXBlLT5zaG91bGRSZXNwZWN0SGVpZ2h0QW5kV2lkdGhBdHRyaWJ1dGVzKCkpCi0gICAg
ICAgIHx8IGF0dHJOYW1lID09IHZzcGFjZUF0dHIKLSAgICAgICAgfHwgYXR0ck5hbWUgPT0gaHNw
YWNlQXR0cikgewotICAgICAgICByZXN1bHQgPSBlVW5pdmVyc2FsOwotICAgICAgICByZXR1cm4g
ZmFsc2U7Ci0gICAgfQotCi0gICAgaWYgKGF0dHJOYW1lID09IGFsaWduQXR0ciAmJiBtX2lucHV0
VHlwZS0+c2hvdWxkUmVzcGVjdEFsaWduQXR0cmlidXRlKCkpIHsKLSAgICAgICAgLy8gU2hhcmUg
d2l0aCA8aW1nPiBzaW5jZSB0aGUgYWxpZ25tZW50IGJlaGF2aW9yIGlzIHRoZSBzYW1lLgotICAg
ICAgICByZXN1bHQgPSBlUmVwbGFjZWQ7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0K
LSAgICByZXR1cm4gSFRNTEVsZW1lbnQ6Om1hcFRvRW50cnkoYXR0ck5hbWUsIHJlc3VsdCk7Ci19
Ci0KIHZvaWQgSFRNTElucHV0RWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUoQXR0cmlidXRl
KiBhdHRyKQogewogICAgIGlmIChhdHRyLT5uYW1lKCkgPT0gbmFtZUF0dHIpIHsKQEAgLTczMywy
MCArNzE1LDI2IEBAIHZvaWQgSFRNTElucHV0RWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUo
QXR0cmlidXRlKiBhdHRyKQogICAgIGVsc2UgaWYgKGF0dHItPm5hbWUoKSA9PSB1c2VtYXBBdHRy
IHx8IGF0dHItPm5hbWUoKSA9PSBhY2Nlc3NrZXlBdHRyKSB7CiAgICAgICAgIC8vIEZJWE1FOiBp
Z25vcmUgZm9yIHRoZSBtb21lbnQKICAgICB9IGVsc2UgaWYgKGF0dHItPm5hbWUoKSA9PSB2c3Bh
Y2VBdHRyKSB7Ci0gICAgICAgIGFkZENTU0xlbmd0aChhdHRyLCBDU1NQcm9wZXJ0eU1hcmdpblRv
cCwgYXR0ci0+dmFsdWUoKSk7Ci0gICAgICAgIGFkZENTU0xlbmd0aChhdHRyLCBDU1NQcm9wZXJ0
eU1hcmdpbkJvdHRvbSwgYXR0ci0+dmFsdWUoKSk7CisgICAgICAgIGFkZENTU0xlbmd0aChDU1NQ
cm9wZXJ0eU1hcmdpblRvcCwgYXR0ci0+dmFsdWUoKSk7CisgICAgICAgIGFkZENTU0xlbmd0aChD
U1NQcm9wZXJ0eU1hcmdpbkJvdHRvbSwgYXR0ci0+dmFsdWUoKSk7CiAgICAgfSBlbHNlIGlmIChh
dHRyLT5uYW1lKCkgPT0gaHNwYWNlQXR0cikgewotICAgICAgICBhZGRDU1NMZW5ndGgoYXR0ciwg
Q1NTUHJvcGVydHlNYXJnaW5MZWZ0LCBhdHRyLT52YWx1ZSgpKTsKLSAgICAgICAgYWRkQ1NTTGVu
Z3RoKGF0dHIsIENTU1Byb3BlcnR5TWFyZ2luUmlnaHQsIGF0dHItPnZhbHVlKCkpOworICAgICAg
ICBhZGRDU1NMZW5ndGgoQ1NTUHJvcGVydHlNYXJnaW5MZWZ0LCBhdHRyLT52YWx1ZSgpKTsKKyAg
ICAgICAgYWRkQ1NTTGVuZ3RoKENTU1Byb3BlcnR5TWFyZ2luUmlnaHQsIGF0dHItPnZhbHVlKCkp
OwogICAgIH0gZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09IGFsaWduQXR0cikgewogICAgICAgICBp
ZiAobV9pbnB1dFR5cGUtPnNob3VsZFJlc3BlY3RBbGlnbkF0dHJpYnV0ZSgpKQogICAgICAgICAg
ICAgYWRkSFRNTEFsaWdubWVudChhdHRyKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgcmVt
b3ZlSFRNTEFsaWdubWVudCgpOwogICAgIH0gZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09IHdpZHRo
QXR0cikgewogICAgICAgICBpZiAobV9pbnB1dFR5cGUtPnNob3VsZFJlc3BlY3RIZWlnaHRBbmRX
aWR0aEF0dHJpYnV0ZXMoKSkKLSAgICAgICAgICAgIGFkZENTU0xlbmd0aChhdHRyLCBDU1NQcm9w
ZXJ0eVdpZHRoLCBhdHRyLT52YWx1ZSgpKTsKKyAgICAgICAgICAgIGFkZENTU0xlbmd0aChDU1NQ
cm9wZXJ0eVdpZHRoLCBhdHRyLT52YWx1ZSgpKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAg
cmVtb3ZlQ1NTUHJvcGVydHkoQ1NTUHJvcGVydHlXaWR0aCk7CiAgICAgfSBlbHNlIGlmIChhdHRy
LT5uYW1lKCkgPT0gaGVpZ2h0QXR0cikgewogICAgICAgICBpZiAobV9pbnB1dFR5cGUtPnNob3Vs
ZFJlc3BlY3RIZWlnaHRBbmRXaWR0aEF0dHJpYnV0ZXMoKSkKLSAgICAgICAgICAgIGFkZENTU0xl
bmd0aChhdHRyLCBDU1NQcm9wZXJ0eUhlaWdodCwgYXR0ci0+dmFsdWUoKSk7CisgICAgICAgICAg
ICBhZGRDU1NMZW5ndGgoQ1NTUHJvcGVydHlIZWlnaHQsIGF0dHItPnZhbHVlKCkpOworICAgICAg
ICBlbHNlCisgICAgICAgICAgICByZW1vdmVDU1NQcm9wZXJ0eShDU1NQcm9wZXJ0eUhlaWdodCk7
CiAgICAgfSBlbHNlIGlmIChhdHRyLT5uYW1lKCkgPT0gYm9yZGVyQXR0ciAmJiBpc0ltYWdlQnV0
dG9uKCkpIHsKICAgICAgICAgYXBwbHlCb3JkZXJBdHRyaWJ1dGUoYXR0cik7CiAgICAgfSBlbHNl
IGlmIChhdHRyLT5uYW1lKCkgPT0gb25zZWFyY2hBdHRyKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TElucHV0RWxlbWVudC5oCmluZGV4IDQ3YWM0ZDMuLjk5MWY4ZjAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTElucHV0RWxlbWVudC5oCkBAIC0yNzYsNyArMjc2LDYgQEAgcHJpdmF0ZToKIAogICAg
IHZpcnR1YWwgdm9pZCBhY2Nlc3NLZXlBY3Rpb24oYm9vbCBzZW5kTW91c2VFdmVudHMpOwogCi0g
ICAgdmlydHVhbCBib29sIG1hcFRvRW50cnkoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUs
IE1hcHBlZEF0dHJpYnV0ZUVudHJ5JiByZXN1bHQpIGNvbnN0OwogICAgIHZpcnR1YWwgdm9pZCBw
YXJzZU1hcHBlZEF0dHJpYnV0ZShBdHRyaWJ1dGUqKTsKICAgICB2aXJ0dWFsIHZvaWQgZmluaXNo
UGFyc2luZ0NoaWxkcmVuKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TExJRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxMSUVsZW1lbnQuY3BwCmlu
ZGV4IDMyODg2Y2IuLjY4OGY3YTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TExJRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTElFbGVtZW50LmNw
cApAQCAtNDksMzQgKzQ5LDI2IEBAIFBhc3NSZWZQdHI8SFRNTExJRWxlbWVudD4gSFRNTExJRWxl
bWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvCiAgICAgcmV0dXJu
IGFkb3B0UmVmKG5ldyBIVE1MTElFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KSk7CiB9CiAKLWJv
b2wgSFRNTExJRWxlbWVudDo6bWFwVG9FbnRyeShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFt
ZSwgTWFwcGVkQXR0cmlidXRlRW50cnkmIHJlc3VsdCkgY29uc3QKLXsKLSAgICBpZiAoYXR0ck5h
bWUgPT0gdHlwZUF0dHIpIHsKLSAgICAgICAgcmVzdWx0ID0gZUxpc3RJdGVtOyAvLyBTaGFyZSB3
aXRoIDxvbD4gc2luY2UgYWxsIHRoZSB2YWx1ZXMgYXJlIHRoZSBzYW1lCi0gICAgICAgIHJldHVy
biBmYWxzZTsKLSAgICB9Ci0gICAgCi0gICAgcmV0dXJuIEhUTUxFbGVtZW50OjptYXBUb0VudHJ5
KGF0dHJOYW1lLCByZXN1bHQpOwotfQotCiB2b2lkIEhUTUxMSUVsZW1lbnQ6OnBhcnNlTWFwcGVk
QXR0cmlidXRlKEF0dHJpYnV0ZSogYXR0cikKIHsKICAgICBpZiAoYXR0ci0+bmFtZSgpID09IHZh
bHVlQXR0cikgewogICAgICAgICBpZiAocmVuZGVyZXIoKSAmJiByZW5kZXJlcigpLT5pc0xpc3RJ
dGVtKCkpCiAgICAgICAgICAgICBwYXJzZVZhbHVlKGF0dHItPnZhbHVlKCkpOwogICAgIH0gZWxz
ZSBpZiAoYXR0ci0+bmFtZSgpID09IHR5cGVBdHRyKSB7Ci0gICAgICAgIGlmIChhdHRyLT52YWx1
ZSgpID09ICJhIikKLSAgICAgICAgICAgIGFkZENTU1Byb3BlcnR5KGF0dHIsIENTU1Byb3BlcnR5
TGlzdFN0eWxlVHlwZSwgQ1NTVmFsdWVMb3dlckFscGhhKTsKKyAgICAgICAgaWYgKGF0dHItPnZh
bHVlKCkuaXNOdWxsKCkpCisgICAgICAgICAgICByZW1vdmVDU1NQcm9wZXJ0eShDU1NQcm9wZXJ0
eUxpc3RTdHlsZVR5cGUpOworICAgICAgICBlbHNlIGlmIChhdHRyLT52YWx1ZSgpID09ICJhIikK
KyAgICAgICAgICAgIGFkZENTU1Byb3BlcnR5KENTU1Byb3BlcnR5TGlzdFN0eWxlVHlwZSwgQ1NT
VmFsdWVMb3dlckFscGhhKTsKICAgICAgICAgZWxzZSBpZiAoYXR0ci0+dmFsdWUoKSA9PSAiQSIp
Ci0gICAgICAgICAgICBhZGRDU1NQcm9wZXJ0eShhdHRyLCBDU1NQcm9wZXJ0eUxpc3RTdHlsZVR5
cGUsIENTU1ZhbHVlVXBwZXJBbHBoYSk7CisgICAgICAgICAgICBhZGRDU1NQcm9wZXJ0eShDU1NQ
cm9wZXJ0eUxpc3RTdHlsZVR5cGUsIENTU1ZhbHVlVXBwZXJBbHBoYSk7CiAgICAgICAgIGVsc2Ug
aWYgKGF0dHItPnZhbHVlKCkgPT0gImkiKQotICAgICAgICAgICAgYWRkQ1NTUHJvcGVydHkoYXR0
ciwgQ1NTUHJvcGVydHlMaXN0U3R5bGVUeXBlLCBDU1NWYWx1ZUxvd2VyUm9tYW4pOworICAgICAg
ICAgICAgYWRkQ1NTUHJvcGVydHkoQ1NTUHJvcGVydHlMaXN0U3R5bGVUeXBlLCBDU1NWYWx1ZUxv
d2VyUm9tYW4pOwogICAgICAgICBlbHNlIGlmIChhdHRyLT52YWx1ZSgpID09ICJJIikKLSAgICAg
ICAgICAgIGFkZENTU1Byb3BlcnR5KGF0dHIsIENTU1Byb3BlcnR5TGlzdFN0eWxlVHlwZSwgQ1NT
VmFsdWVVcHBlclJvbWFuKTsKKyAgICAgICAgICAgIGFkZENTU1Byb3BlcnR5KENTU1Byb3BlcnR5
TGlzdFN0eWxlVHlwZSwgQ1NTVmFsdWVVcHBlclJvbWFuKTsKICAgICAgICAgZWxzZSBpZiAoYXR0
ci0+dmFsdWUoKSA9PSAiMSIpCi0gICAgICAgICAgICBhZGRDU1NQcm9wZXJ0eShhdHRyLCBDU1NQ
cm9wZXJ0eUxpc3RTdHlsZVR5cGUsIENTU1ZhbHVlRGVjaW1hbCk7CisgICAgICAgICAgICBhZGRD
U1NQcm9wZXJ0eShDU1NQcm9wZXJ0eUxpc3RTdHlsZVR5cGUsIENTU1ZhbHVlRGVjaW1hbCk7CiAg
ICAgICAgIGVsc2UKLSAgICAgICAgICAgIGFkZENTU1Byb3BlcnR5KGF0dHIsIENTU1Byb3BlcnR5
TGlzdFN0eWxlVHlwZSwgYXR0ci0+dmFsdWUoKSk7CisgICAgICAgICAgICBhZGRDU1NQcm9wZXJ0
eShDU1NQcm9wZXJ0eUxpc3RTdHlsZVR5cGUsIGF0dHItPnZhbHVlKCkpOwogICAgIH0gZWxzZQog
ICAgICAgICBIVE1MRWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUoYXR0cik7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxMSUVsZW1lbnQuaCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTExJRWxlbWVudC5oCmluZGV4IDdlNmE5NTMuLjg2MjYwNmYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTExJRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTExJRWxlbWVudC5oCkBAIC0zNSw3ICszNSw2IEBAIHB1YmxpYzoKIHByaXZh
dGU6CiAgICAgSFRNTExJRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQqKTsK
IAotICAgIHZpcnR1YWwgYm9vbCBtYXBUb0VudHJ5KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBNYXBw
ZWRBdHRyaWJ1dGVFbnRyeSYpIGNvbnN0OwogICAgIHZpcnR1YWwgdm9pZCBwYXJzZU1hcHBlZEF0
dHJpYnV0ZShBdHRyaWJ1dGUqKTsKIAogICAgIHZpcnR1YWwgdm9pZCBhdHRhY2goKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1hcnF1ZWVFbGVtZW50LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTE1hcnF1ZWVFbGVtZW50LmNwcAppbmRleCAwNTNmZmE4Li4yMTI3
YmNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNYXJxdWVlRWxlbWVudC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWFycXVlZUVsZW1lbnQuY3BwCkBAIC01
MSw2NSArNTEsNjMgQEAgUGFzc1JlZlB0cjxIVE1MTWFycXVlZUVsZW1lbnQ+IEhUTUxNYXJxdWVl
RWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHQKICAgICByZXR1cm4gYWRvcHRS
ZWYobmV3IEhUTUxNYXJxdWVlRWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCkpOwogfQogCi1ib29s
IEhUTUxNYXJxdWVlRWxlbWVudDo6bWFwVG9FbnRyeShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRy
TmFtZSwgTWFwcGVkQXR0cmlidXRlRW50cnkmIHJlc3VsdCkgY29uc3QKLXsKLSAgICBpZiAoYXR0
ck5hbWUgPT0gd2lkdGhBdHRyIHx8Ci0gICAgICAgIGF0dHJOYW1lID09IGhlaWdodEF0dHIgfHwK
LSAgICAgICAgYXR0ck5hbWUgPT0gYmdjb2xvckF0dHIgfHwKLSAgICAgICAgYXR0ck5hbWUgPT0g
dnNwYWNlQXR0ciB8fAotICAgICAgICBhdHRyTmFtZSA9PSBoc3BhY2VBdHRyIHx8Ci0gICAgICAg
IGF0dHJOYW1lID09IHNjcm9sbGFtb3VudEF0dHIgfHwKLSAgICAgICAgYXR0ck5hbWUgPT0gc2Ny
b2xsZGVsYXlBdHRyIHx8Ci0gICAgICAgIGF0dHJOYW1lID09IGxvb3BBdHRyIHx8Ci0gICAgICAg
IGF0dHJOYW1lID09IGJlaGF2aW9yQXR0ciB8fAotICAgICAgICBhdHRyTmFtZSA9PSBkaXJlY3Rp
b25BdHRyKSB7Ci0gICAgICAgIHJlc3VsdCA9IGVVbml2ZXJzYWw7Ci0gICAgICAgIHJldHVybiBm
YWxzZTsKLSAgICB9Ci0KLSAgICByZXR1cm4gSFRNTEVsZW1lbnQ6Om1hcFRvRW50cnkoYXR0ck5h
bWUsIHJlc3VsdCk7Ci19Ci0KIHZvaWQgSFRNTE1hcnF1ZWVFbGVtZW50OjpwYXJzZU1hcHBlZEF0
dHJpYnV0ZShBdHRyaWJ1dGUqIGF0dHIpCiB7CiAgICAgaWYgKGF0dHItPm5hbWUoKSA9PSB3aWR0
aEF0dHIpIHsKICAgICAgICAgaWYgKCFhdHRyLT52YWx1ZSgpLmlzRW1wdHkoKSkKLSAgICAgICAg
ICAgIGFkZENTU0xlbmd0aChhdHRyLCBDU1NQcm9wZXJ0eVdpZHRoLCBhdHRyLT52YWx1ZSgpKTsK
KyAgICAgICAgICAgIGFkZENTU0xlbmd0aChDU1NQcm9wZXJ0eVdpZHRoLCBhdHRyLT52YWx1ZSgp
KTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgcmVtb3ZlQ1NTUHJvcGVydHkoQ1NTUHJvcGVy
dHlXaWR0aCk7CiAgICAgfSBlbHNlIGlmIChhdHRyLT5uYW1lKCkgPT0gaGVpZ2h0QXR0cikgewog
ICAgICAgICBpZiAoIWF0dHItPnZhbHVlKCkuaXNFbXB0eSgpKQotICAgICAgICAgICAgYWRkQ1NT
TGVuZ3RoKGF0dHIsIENTU1Byb3BlcnR5SGVpZ2h0LCBhdHRyLT52YWx1ZSgpKTsKKyAgICAgICAg
ICAgIGFkZENTU0xlbmd0aChDU1NQcm9wZXJ0eUhlaWdodCwgYXR0ci0+dmFsdWUoKSk7CisgICAg
ICAgIGVsc2UKKyAgICAgICAgICAgIHJlbW92ZUNTU1Byb3BlcnR5KENTU1Byb3BlcnR5SGVpZ2h0
KTsKICAgICB9IGVsc2UgaWYgKGF0dHItPm5hbWUoKSA9PSBiZ2NvbG9yQXR0cikgewogICAgICAg
ICBpZiAoIWF0dHItPnZhbHVlKCkuaXNFbXB0eSgpKQotICAgICAgICAgICAgYWRkQ1NTQ29sb3Io
YXR0ciwgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQ29sb3IsIGF0dHItPnZhbHVlKCkpOworICAgICAg
ICAgICAgYWRkQ1NTQ29sb3IoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQ29sb3IsIGF0dHItPnZhbHVl
KCkpOworICAgICAgICBlbHNlCisgICAgICAgICAgICByZW1vdmVDU1NQcm9wZXJ0eShDU1NQcm9w
ZXJ0eUJhY2tncm91bmRDb2xvcik7CiAgICAgfSBlbHNlIGlmIChhdHRyLT5uYW1lKCkgPT0gdnNw
YWNlQXR0cikgewogICAgICAgICBpZiAoIWF0dHItPnZhbHVlKCkuaXNFbXB0eSgpKSB7Ci0gICAg
ICAgICAgICBhZGRDU1NMZW5ndGgoYXR0ciwgQ1NTUHJvcGVydHlNYXJnaW5Ub3AsIGF0dHItPnZh
bHVlKCkpOwotICAgICAgICAgICAgYWRkQ1NTTGVuZ3RoKGF0dHIsIENTU1Byb3BlcnR5TWFyZ2lu
Qm90dG9tLCBhdHRyLT52YWx1ZSgpKTsKLSAgICAgICAgfQorICAgICAgICAgICAgYWRkQ1NTTGVu
Z3RoKENTU1Byb3BlcnR5TWFyZ2luVG9wLCBhdHRyLT52YWx1ZSgpKTsKKyAgICAgICAgICAgIGFk
ZENTU0xlbmd0aChDU1NQcm9wZXJ0eU1hcmdpbkJvdHRvbSwgYXR0ci0+dmFsdWUoKSk7CisgICAg
ICAgIH0gZWxzZQorICAgICAgICAgICAgcmVtb3ZlQ1NTUHJvcGVydGllcyhDU1NQcm9wZXJ0eU1h
cmdpblRvcCwgQ1NTUHJvcGVydHlNYXJnaW5Cb3R0b20pOwogICAgIH0gZWxzZSBpZiAoYXR0ci0+
bmFtZSgpID09IGhzcGFjZUF0dHIpIHsKICAgICAgICAgaWYgKCFhdHRyLT52YWx1ZSgpLmlzRW1w
dHkoKSkgewotICAgICAgICAgICAgYWRkQ1NTTGVuZ3RoKGF0dHIsIENTU1Byb3BlcnR5TWFyZ2lu
TGVmdCwgYXR0ci0+dmFsdWUoKSk7Ci0gICAgICAgICAgICBhZGRDU1NMZW5ndGgoYXR0ciwgQ1NT
UHJvcGVydHlNYXJnaW5SaWdodCwgYXR0ci0+dmFsdWUoKSk7Ci0gICAgICAgIH0KKyAgICAgICAg
ICAgIGFkZENTU0xlbmd0aChDU1NQcm9wZXJ0eU1hcmdpbkxlZnQsIGF0dHItPnZhbHVlKCkpOwor
ICAgICAgICAgICAgYWRkQ1NTTGVuZ3RoKENTU1Byb3BlcnR5TWFyZ2luUmlnaHQsIGF0dHItPnZh
bHVlKCkpOworICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIHJlbW92ZUNTU1Byb3BlcnRpZXMo
Q1NTUHJvcGVydHlNYXJnaW5MZWZ0LCBDU1NQcm9wZXJ0eU1hcmdpblJpZ2h0KTsKICAgICB9IGVs
c2UgaWYgKGF0dHItPm5hbWUoKSA9PSBzY3JvbGxhbW91bnRBdHRyKSB7CiAgICAgICAgIGlmICgh
YXR0ci0+dmFsdWUoKS5pc0VtcHR5KCkpCi0gICAgICAgICAgICBhZGRDU1NMZW5ndGgoYXR0ciwg
Q1NTUHJvcGVydHlXZWJraXRNYXJxdWVlSW5jcmVtZW50LCBhdHRyLT52YWx1ZSgpKTsKKyAgICAg
ICAgICAgIGFkZENTU0xlbmd0aChDU1NQcm9wZXJ0eVdlYmtpdE1hcnF1ZWVJbmNyZW1lbnQsIGF0
dHItPnZhbHVlKCkpOworICAgICAgICBlbHNlCisgICAgICAgICAgICByZW1vdmVDU1NQcm9wZXJ0
eShDU1NQcm9wZXJ0eVdlYmtpdE1hcnF1ZWVJbmNyZW1lbnQpOwogICAgIH0gZWxzZSBpZiAoYXR0
ci0+bmFtZSgpID09IHNjcm9sbGRlbGF5QXR0cikgewogICAgICAgICBpZiAoIWF0dHItPnZhbHVl
KCkuaXNFbXB0eSgpKQotICAgICAgICAgICAgYWRkQ1NTTGVuZ3RoKGF0dHIsIENTU1Byb3BlcnR5
V2Via2l0TWFycXVlZVNwZWVkLCBhdHRyLT52YWx1ZSgpKTsKKyAgICAgICAgICAgIGFkZENTU0xl
bmd0aChDU1NQcm9wZXJ0eVdlYmtpdE1hcnF1ZWVTcGVlZCwgYXR0ci0+dmFsdWUoKSk7CisgICAg
ICAgIGVsc2UKKyAgICAgICAgICAgIHJlbW92ZUNTU1Byb3BlcnR5KENTU1Byb3BlcnR5V2Via2l0
TWFycXVlZVNwZWVkKTsKICAgICB9IGVsc2UgaWYgKGF0dHItPm5hbWUoKSA9PSBsb29wQXR0cikg
ewogICAgICAgICBpZiAoIWF0dHItPnZhbHVlKCkuaXNFbXB0eSgpKSB7CiAgICAgICAgICAgICBp
ZiAoYXR0ci0+dmFsdWUoKSA9PSAiLTEiIHx8IGVxdWFsSWdub3JpbmdDYXNlKGF0dHItPnZhbHVl
KCksICJpbmZpbml0ZSIpKQotICAgICAgICAgICAgICAgIGFkZENTU1Byb3BlcnR5KGF0dHIsIENT
U1Byb3BlcnR5V2Via2l0TWFycXVlZVJlcGV0aXRpb24sIENTU1ZhbHVlSW5maW5pdGUpOworICAg
ICAgICAgICAgICAgIGFkZENTU1Byb3BlcnR5KENTU1Byb3BlcnR5V2Via2l0TWFycXVlZVJlcGV0
aXRpb24sIENTU1ZhbHVlSW5maW5pdGUpOwogICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAg
ICAgIGFkZENTU0xlbmd0aChhdHRyLCBDU1NQcm9wZXJ0eVdlYmtpdE1hcnF1ZWVSZXBldGl0aW9u
LCBhdHRyLT52YWx1ZSgpKTsKLSAgICAgICAgfQorICAgICAgICAgICAgICAgIGFkZENTU0xlbmd0
aChDU1NQcm9wZXJ0eVdlYmtpdE1hcnF1ZWVSZXBldGl0aW9uLCBhdHRyLT52YWx1ZSgpKTsKKyAg
ICAgICAgfSBlbHNlCisgICAgICAgICAgICByZW1vdmVDU1NQcm9wZXJ0eShDU1NQcm9wZXJ0eVdl
YmtpdE1hcnF1ZWVSZXBldGl0aW9uKTsKICAgICB9IGVsc2UgaWYgKGF0dHItPm5hbWUoKSA9PSBi
ZWhhdmlvckF0dHIpIHsKICAgICAgICAgaWYgKCFhdHRyLT52YWx1ZSgpLmlzRW1wdHkoKSkKLSAg
ICAgICAgICAgIGFkZENTU1Byb3BlcnR5KGF0dHIsIENTU1Byb3BlcnR5V2Via2l0TWFycXVlZVN0
eWxlLCBhdHRyLT52YWx1ZSgpKTsKKyAgICAgICAgICAgIGFkZENTU1Byb3BlcnR5KENTU1Byb3Bl
cnR5V2Via2l0TWFycXVlZVN0eWxlLCBhdHRyLT52YWx1ZSgpKTsKKyAgICAgICAgZWxzZQorICAg
ICAgICAgICAgcmVtb3ZlQ1NTUHJvcGVydHkoQ1NTUHJvcGVydHlXZWJraXRNYXJxdWVlU3R5bGUp
OwogICAgIH0gZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09IGRpcmVjdGlvbkF0dHIpIHsKICAgICAg
ICAgaWYgKCFhdHRyLT52YWx1ZSgpLmlzRW1wdHkoKSkKLSAgICAgICAgICAgIGFkZENTU1Byb3Bl
cnR5KGF0dHIsIENTU1Byb3BlcnR5V2Via2l0TWFycXVlZURpcmVjdGlvbiwgYXR0ci0+dmFsdWUo
KSk7CisgICAgICAgICAgICBhZGRDU1NQcm9wZXJ0eShDU1NQcm9wZXJ0eVdlYmtpdE1hcnF1ZWVE
aXJlY3Rpb24sIGF0dHItPnZhbHVlKCkpOworICAgICAgICBlbHNlCisgICAgICAgICAgICByZW1v
dmVDU1NQcm9wZXJ0eShDU1NQcm9wZXJ0eVdlYmtpdE1hcnF1ZWVEaXJlY3Rpb24pOwogICAgIH0g
ZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09IHRydWVzcGVlZEF0dHIpCiAgICAgICAgIG1fbWluaW11
bURlbGF5ID0gIWF0dHItPmlzRW1wdHkoKSA/IDAgOiBkZWZhdWx0TWluaW11bURlbGF5OwogICAg
IGVsc2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1hcnF1ZWVFbGVtZW50
LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNYXJxdWVlRWxlbWVudC5oCmluZGV4IDU4NmFh
NmYuLmFjMzk1M2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1hcnF1ZWVF
bGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWFycXVlZUVsZW1lbnQuaApA
QCAtNTMsNyArNTMsNiBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIEhUTUxNYXJxdWVlRWxlbWVu
dChjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQqKTsKIAotICAgIHZpcnR1YWwgYm9vbCBt
YXBUb0VudHJ5KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBNYXBwZWRBdHRyaWJ1dGVFbnRyeSYpIGNv
bnN0OwogICAgIHZpcnR1YWwgdm9pZCBwYXJzZU1hcHBlZEF0dHJpYnV0ZShBdHRyaWJ1dGUqKTsK
IAogICAgIC8vIEFjdGl2ZURPTU9iamVjdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MT0xpc3RFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9MaXN0RWxl
bWVudC5jcHAKaW5kZXggZDkwYTJmNy4uMzIyOTUxMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MT0xpc3RFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxPTGlzdEVsZW1lbnQuY3BwCkBAIC01NCwyOSArNTQsMjEgQEAgUGFzc1JlZlB0cjxIVE1MT0xp
c3RFbGVtZW50PiBIVE1MT0xpc3RFbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYg
dGFnTmEKICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEhUTUxPTGlzdEVsZW1lbnQodGFnTmFtZSwg
ZG9jdW1lbnQpKTsKIH0KIAotYm9vbCBIVE1MT0xpc3RFbGVtZW50OjptYXBUb0VudHJ5KGNvbnN0
IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lLCBNYXBwZWRBdHRyaWJ1dGVFbnRyeSYgcmVzdWx0KSBj
b25zdAotewotICAgIGlmIChhdHRyTmFtZSA9PSB0eXBlQXR0cikgewotICAgICAgICByZXN1bHQg
PSBlTGlzdEl0ZW07IC8vIFNoYXJlIHdpdGggPGxpPgotICAgICAgICByZXR1cm4gZmFsc2U7Ci0g
ICAgfQotICAgIAotICAgIHJldHVybiBIVE1MRWxlbWVudDo6bWFwVG9FbnRyeShhdHRyTmFtZSwg
cmVzdWx0KTsKLX0KLQogdm9pZCBIVE1MT0xpc3RFbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpYnV0
ZShBdHRyaWJ1dGUqIGF0dHIpCiB7CiAgICAgaWYgKGF0dHItPm5hbWUoKSA9PSB0eXBlQXR0cikg
ewogICAgICAgICBpZiAoYXR0ci0+dmFsdWUoKSA9PSAiYSIpCi0gICAgICAgICAgICBhZGRDU1NQ
cm9wZXJ0eShhdHRyLCBDU1NQcm9wZXJ0eUxpc3RTdHlsZVR5cGUsIENTU1ZhbHVlTG93ZXJBbHBo
YSk7CisgICAgICAgICAgICBhZGRDU1NQcm9wZXJ0eShDU1NQcm9wZXJ0eUxpc3RTdHlsZVR5cGUs
IENTU1ZhbHVlTG93ZXJBbHBoYSk7CiAgICAgICAgIGVsc2UgaWYgKGF0dHItPnZhbHVlKCkgPT0g
IkEiKQotICAgICAgICAgICAgYWRkQ1NTUHJvcGVydHkoYXR0ciwgQ1NTUHJvcGVydHlMaXN0U3R5
bGVUeXBlLCBDU1NWYWx1ZVVwcGVyQWxwaGEpOworICAgICAgICAgICAgYWRkQ1NTUHJvcGVydHko
Q1NTUHJvcGVydHlMaXN0U3R5bGVUeXBlLCBDU1NWYWx1ZVVwcGVyQWxwaGEpOwogICAgICAgICBl
bHNlIGlmIChhdHRyLT52YWx1ZSgpID09ICJpIikKLSAgICAgICAgICAgIGFkZENTU1Byb3BlcnR5
KGF0dHIsIENTU1Byb3BlcnR5TGlzdFN0eWxlVHlwZSwgQ1NTVmFsdWVMb3dlclJvbWFuKTsKKyAg
ICAgICAgICAgIGFkZENTU1Byb3BlcnR5KENTU1Byb3BlcnR5TGlzdFN0eWxlVHlwZSwgQ1NTVmFs
dWVMb3dlclJvbWFuKTsKICAgICAgICAgZWxzZSBpZiAoYXR0ci0+dmFsdWUoKSA9PSAiSSIpCi0g
ICAgICAgICAgICBhZGRDU1NQcm9wZXJ0eShhdHRyLCBDU1NQcm9wZXJ0eUxpc3RTdHlsZVR5cGUs
IENTU1ZhbHVlVXBwZXJSb21hbik7CisgICAgICAgICAgICBhZGRDU1NQcm9wZXJ0eShDU1NQcm9w
ZXJ0eUxpc3RTdHlsZVR5cGUsIENTU1ZhbHVlVXBwZXJSb21hbik7CiAgICAgICAgIGVsc2UgaWYg
KGF0dHItPnZhbHVlKCkgPT0gIjEiKQotICAgICAgICAgICAgYWRkQ1NTUHJvcGVydHkoYXR0ciwg
Q1NTUHJvcGVydHlMaXN0U3R5bGVUeXBlLCBDU1NWYWx1ZURlY2ltYWwpOworICAgICAgICAgICAg
YWRkQ1NTUHJvcGVydHkoQ1NTUHJvcGVydHlMaXN0U3R5bGVUeXBlLCBDU1NWYWx1ZURlY2ltYWwp
OworICAgICAgICBlbHNlCisgICAgICAgICAgICByZW1vdmVDU1NQcm9wZXJ0eShDU1NQcm9wZXJ0
eUxpc3RTdHlsZVR5cGUpOwogICAgIH0gZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09IHN0YXJ0QXR0
cikgewogICAgICAgICBpbnQgb2xkU3RhcnQgPSBzdGFydCgpOwogICAgICAgICBib29sIGNhblBh
cnNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT0xpc3RFbGVtZW50Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPTGlzdEVsZW1lbnQuaAppbmRleCA4MDAwYjI4Li4w
MTc5NTdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPTGlzdEVsZW1lbnQu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPTGlzdEVsZW1lbnQuaApAQCAtNTMsNyAr
NTMsNiBAQCBwcml2YXRlOgogCiAgICAgdm9pZCByZWNhbGN1bGF0ZUl0ZW1Db3VudCgpOwogCi0g
ICAgdmlydHVhbCBib29sIG1hcFRvRW50cnkoY29uc3QgUXVhbGlmaWVkTmFtZSYsIE1hcHBlZEF0
dHJpYnV0ZUVudHJ5JikgY29uc3Q7CiAgICAgdmlydHVhbCB2b2lkIHBhcnNlTWFwcGVkQXR0cmli
dXRlKEF0dHJpYnV0ZSopOwogCiAgICAgaW50IG1fc3RhcnQ7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxPdXRwdXRFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTE91dHB1dEVsZW1lbnQuY3BwCmluZGV4IGVlM2MwZDguLmE4NWJmZDQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE91dHB1dEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTE91dHB1dEVsZW1lbnQuY3BwCkBAIC02MSwxNiArNjEsNiBAQCBib29s
IEhUTUxPdXRwdXRFbGVtZW50OjpzdXBwb3J0c0ZvY3VzKCkgY29uc3QKICAgICByZXR1cm4gTm9k
ZTo6c3VwcG9ydHNGb2N1cygpICYmICFkaXNhYmxlZCgpOwogfQogCi1ib29sIEhUTUxPdXRwdXRF
bGVtZW50OjptYXBUb0VudHJ5KGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lLCBNYXBwZWRB
dHRyaWJ1dGVFbnRyeSYgcmVzdWx0KSBjb25zdAotewotICAgIGlmIChhdHRyTmFtZSA9PSBIVE1M
TmFtZXM6OmRpckF0dHIpIHsKLSAgICAgICAgcmVzdWx0ID0gZUJESTsKLSAgICAgICAgcmV0dXJu
IHRydWU7Ci0gICAgfQotCi0gICAgcmV0dXJuIEhUTUxFbGVtZW50OjptYXBUb0VudHJ5KGF0dHJO
YW1lLCByZXN1bHQpOwotfQotCiB2b2lkIEhUTUxPdXRwdXRFbGVtZW50OjpwYXJzZU1hcHBlZEF0
dHJpYnV0ZShBdHRyaWJ1dGUqIGF0dHIpCiB7CiAgICAgaWYgKGF0dHItPm5hbWUoKSA9PSBIVE1M
TmFtZXM6OmZvckF0dHIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPdXRw
dXRFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPdXRwdXRFbGVtZW50LmgKaW5k
ZXggODNkZjdmYS4uOTY5YzZjYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
T3V0cHV0RWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE91dHB1dEVsZW1l
bnQuaApAQCAtNTUsNyArNTUsNiBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIEhUTUxPdXRwdXRF
bGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCosIEhUTUxGb3JtRWxlbWVudCop
OwogCi0gICAgdmlydHVhbCBib29sIG1hcFRvRW50cnkoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0
ck5hbWUsIE1hcHBlZEF0dHJpYnV0ZUVudHJ5JiByZXN1bHQpIGNvbnN0IE9WRVJSSURFOwogICAg
IHZpcnR1YWwgdm9pZCBwYXJzZU1hcHBlZEF0dHJpYnV0ZShBdHRyaWJ1dGUqKTsKICAgICB2aXJ0
dWFsIGNvbnN0IEF0b21pY1N0cmluZyYgZm9ybUNvbnRyb2xUeXBlKCkgY29uc3Q7CiAgICAgdmly
dHVhbCBib29sIGlzRW51bWVyYXRhYmxlKCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGFyYWdyYXBoRWxlbWVudC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxQYXJhZ3JhcGhFbGVtZW50LmNwcAppbmRleCBlOGE1YWE3Li4y
NDU1YzVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQYXJhZ3JhcGhFbGVt
ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQYXJhZ3JhcGhFbGVtZW50LmNw
cApAQCAtNDQsMjYgKzQ0LDE5IEBAIFBhc3NSZWZQdHI8SFRNTFBhcmFncmFwaEVsZW1lbnQ+IEhU
TUxQYXJhZ3JhcGhFbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtCiAgICAgcmV0dXJu
IGFkb3B0UmVmKG5ldyBIVE1MUGFyYWdyYXBoRWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCkpOwog
fQogCi1ib29sIEhUTUxQYXJhZ3JhcGhFbGVtZW50OjptYXBUb0VudHJ5KGNvbnN0IFF1YWxpZmll
ZE5hbWUmIGF0dHJOYW1lLCBNYXBwZWRBdHRyaWJ1dGVFbnRyeSYgcmVzdWx0KSBjb25zdAotewot
ICAgIGlmIChhdHRyTmFtZSA9PSBhbGlnbkF0dHIpIHsKLSAgICAgICAgcmVzdWx0ID0gZUJsb2Nr
OyAvLyBXZSBjYW4gc2hhcmUgd2l0aCBESVYgaGVyZS4KLSAgICAgICAgcmV0dXJuIGZhbHNlOwot
ICAgIH0KLSAgICByZXR1cm4gSFRNTEVsZW1lbnQ6Om1hcFRvRW50cnkoYXR0ck5hbWUsIHJlc3Vs
dCk7Ci19Ci0KIHZvaWQgSFRNTFBhcmFncmFwaEVsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmlidXRl
KEF0dHJpYnV0ZSogYXR0cikKIHsKICAgICBpZiAoYXR0ci0+bmFtZSgpID09IGFsaWduQXR0cikg
ewotICAgICAgICBpZiAoZXF1YWxJZ25vcmluZ0Nhc2UoYXR0ci0+dmFsdWUoKSwgIm1pZGRsZSIp
IHx8IGVxdWFsSWdub3JpbmdDYXNlKGF0dHItPnZhbHVlKCksICJjZW50ZXIiKSkKLSAgICAgICAg
ICAgIGFkZENTU1Byb3BlcnR5KGF0dHIsIENTU1Byb3BlcnR5VGV4dEFsaWduLCBDU1NWYWx1ZVdl
YmtpdENlbnRlcik7CisgICAgICAgIGlmIChhdHRyLT52YWx1ZSgpLmlzTnVsbCgpKQorICAgICAg
ICAgICAgcmVtb3ZlQ1NTUHJvcGVydHkoQ1NTUHJvcGVydHlUZXh0QWxpZ24pOworICAgICAgICBl
bHNlIGlmIChlcXVhbElnbm9yaW5nQ2FzZShhdHRyLT52YWx1ZSgpLCAibWlkZGxlIikgfHwgZXF1
YWxJZ25vcmluZ0Nhc2UoYXR0ci0+dmFsdWUoKSwgImNlbnRlciIpKQorICAgICAgICAgICAgYWRk
Q1NTUHJvcGVydHkoQ1NTUHJvcGVydHlUZXh0QWxpZ24sIENTU1ZhbHVlV2Via2l0Q2VudGVyKTsK
ICAgICAgICAgZWxzZSBpZiAoZXF1YWxJZ25vcmluZ0Nhc2UoYXR0ci0+dmFsdWUoKSwgImxlZnQi
KSkKLSAgICAgICAgICAgIGFkZENTU1Byb3BlcnR5KGF0dHIsIENTU1Byb3BlcnR5VGV4dEFsaWdu
LCBDU1NWYWx1ZVdlYmtpdExlZnQpOworICAgICAgICAgICAgYWRkQ1NTUHJvcGVydHkoQ1NTUHJv
cGVydHlUZXh0QWxpZ24sIENTU1ZhbHVlV2Via2l0TGVmdCk7CiAgICAgICAgIGVsc2UgaWYgKGVx
dWFsSWdub3JpbmdDYXNlKGF0dHItPnZhbHVlKCksICJyaWdodCIpKQotICAgICAgICAgICAgYWRk
Q1NTUHJvcGVydHkoYXR0ciwgQ1NTUHJvcGVydHlUZXh0QWxpZ24sIENTU1ZhbHVlV2Via2l0Umln
aHQpOworICAgICAgICAgICAgYWRkQ1NTUHJvcGVydHkoQ1NTUHJvcGVydHlUZXh0QWxpZ24sIENT
U1ZhbHVlV2Via2l0UmlnaHQpOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBhZGRDU1NQcm9w
ZXJ0eShhdHRyLCBDU1NQcm9wZXJ0eVRleHRBbGlnbiwgYXR0ci0+dmFsdWUoKSk7CisgICAgICAg
ICAgICBhZGRDU1NQcm9wZXJ0eShDU1NQcm9wZXJ0eVRleHRBbGlnbiwgYXR0ci0+dmFsdWUoKSk7
CiAgICAgfSBlbHNlCiAgICAgICAgIEhUTUxFbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpYnV0ZShh
dHRyKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBhcmFncmFwaEVs
ZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBhcmFncmFwaEVsZW1lbnQuaAppbmRl
eCA2ZGJmMDcxLi5lYTg3OWE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQ
YXJhZ3JhcGhFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGFyYWdyYXBo
RWxlbWVudC5oCkBAIC0zNCw3ICszNCw2IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgSFRNTFBh
cmFncmFwaEVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Kik7CiAKLSAgICB2
aXJ0dWFsIGJvb2wgbWFwVG9FbnRyeShjb25zdCBRdWFsaWZpZWROYW1lJiwgTWFwcGVkQXR0cmli
dXRlRW50cnkmKSBjb25zdDsKICAgICB2aXJ0dWFsIHZvaWQgcGFyc2VNYXBwZWRBdHRyaWJ1dGUo
QXR0cmlidXRlKik7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQ
bHVnSW5FbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBsdWdJbkVsZW1lbnQu
Y3BwCmluZGV4IDYyMjlkMmUuLjcyODdiYzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTFBsdWdJbkVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBs
dWdJbkVsZW1lbnQuY3BwCkBAIC0xMzYsMzYgKzEzNiwzMiBAQCBXaWRnZXQqIEhUTUxQbHVnSW5F
bGVtZW50OjpwbHVnaW5XaWRnZXQoKQogICAgIHJldHVybiByZW5kZXJXaWRnZXQtPndpZGdldCgp
OwogfQogCi1ib29sIEhUTUxQbHVnSW5FbGVtZW50OjptYXBUb0VudHJ5KGNvbnN0IFF1YWxpZmll
ZE5hbWUmIGF0dHJOYW1lLCBNYXBwZWRBdHRyaWJ1dGVFbnRyeSYgcmVzdWx0KSBjb25zdAotewot
ICAgIGlmIChhdHRyTmFtZSA9PSB3aWR0aEF0dHIgfHwKLSAgICAgICAgYXR0ck5hbWUgPT0gaGVp
Z2h0QXR0ciB8fAotICAgICAgICBhdHRyTmFtZSA9PSB2c3BhY2VBdHRyIHx8Ci0gICAgICAgIGF0
dHJOYW1lID09IGhzcGFjZUF0dHIpIHsKLSAgICAgICAgICAgIHJlc3VsdCA9IGVVbml2ZXJzYWw7
Ci0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotICAgIAotICAgIGlmIChhdHRyTmFt
ZSA9PSBhbGlnbkF0dHIpIHsKLSAgICAgICAgcmVzdWx0ID0gZVJlcGxhY2VkOyAvLyBTaGFyZSB3
aXRoIDxpbWc+IHNpbmNlIHRoZSBhbGlnbm1lbnQgYmVoYXZpb3IgaXMgdGhlIHNhbWUuCi0gICAg
ICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0gICAgCi0gICAgcmV0dXJuIEhUTUxGcmFtZU93bmVy
RWxlbWVudDo6bWFwVG9FbnRyeShhdHRyTmFtZSwgcmVzdWx0KTsKLX0KLQogdm9pZCBIVE1MUGx1
Z0luRWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUoQXR0cmlidXRlKiBhdHRyKQogewogICAg
IGlmIChhdHRyLT5uYW1lKCkgPT0gd2lkdGhBdHRyKQotICAgICAgICBhZGRDU1NMZW5ndGgoYXR0
ciwgQ1NTUHJvcGVydHlXaWR0aCwgYXR0ci0+dmFsdWUoKSk7CisgICAgICAgIGlmIChhdHRyLT5p
c051bGwoKSkKKyAgICAgICAgICAgIHJlbW92ZUNTU1Byb3BlcnR5KENTU1Byb3BlcnR5V2lkdGgp
OworICAgICAgICBlbHNlCisgICAgICAgICAgICBhZGRDU1NMZW5ndGgoQ1NTUHJvcGVydHlXaWR0
aCwgYXR0ci0+dmFsdWUoKSk7CiAgICAgZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09IGhlaWdodEF0
dHIpCi0gICAgICAgIGFkZENTU0xlbmd0aChhdHRyLCBDU1NQcm9wZXJ0eUhlaWdodCwgYXR0ci0+
dmFsdWUoKSk7CisgICAgICAgIGlmIChhdHRyLT5pc051bGwoKSkKKyAgICAgICAgICAgIHJlbW92
ZUNTU1Byb3BlcnR5KENTU1Byb3BlcnR5SGVpZ2h0KTsKKyAgICAgICAgZWxzZQorICAgICAgICAg
ICAgYWRkQ1NTTGVuZ3RoKENTU1Byb3BlcnR5SGVpZ2h0LCBhdHRyLT52YWx1ZSgpKTsKICAgICBl
bHNlIGlmIChhdHRyLT5uYW1lKCkgPT0gdnNwYWNlQXR0cikgewotICAgICAgICBhZGRDU1NMZW5n
dGgoYXR0ciwgQ1NTUHJvcGVydHlNYXJnaW5Ub3AsIGF0dHItPnZhbHVlKCkpOwotICAgICAgICBh
ZGRDU1NMZW5ndGgoYXR0ciwgQ1NTUHJvcGVydHlNYXJnaW5Cb3R0b20sIGF0dHItPnZhbHVlKCkp
OworICAgICAgICBpZiAoYXR0ci0+aXNOdWxsKCkpCisgICAgICAgICAgICByZW1vdmVDU1NQcm9w
ZXJ0aWVzKENTU1Byb3BlcnR5TWFyZ2luVG9wLCBDU1NQcm9wZXJ0eU1hcmdpbkJvdHRvbSk7Cisg
ICAgICAgIGVsc2UgeworICAgICAgICAgICAgYWRkQ1NTTGVuZ3RoKENTU1Byb3BlcnR5TWFyZ2lu
VG9wLCBhdHRyLT52YWx1ZSgpKTsKKyAgICAgICAgICAgIGFkZENTU0xlbmd0aChDU1NQcm9wZXJ0
eU1hcmdpbkJvdHRvbSwgYXR0ci0+dmFsdWUoKSk7CisgICAgICAgIH0KICAgICB9IGVsc2UgaWYg
KGF0dHItPm5hbWUoKSA9PSBoc3BhY2VBdHRyKSB7Ci0gICAgICAgIGFkZENTU0xlbmd0aChhdHRy
LCBDU1NQcm9wZXJ0eU1hcmdpbkxlZnQsIGF0dHItPnZhbHVlKCkpOwotICAgICAgICBhZGRDU1NM
ZW5ndGgoYXR0ciwgQ1NTUHJvcGVydHlNYXJnaW5SaWdodCwgYXR0ci0+dmFsdWUoKSk7CisgICAg
ICAgIGlmIChhdHRyLT5pc051bGwoKSkKKyAgICAgICAgICAgIHJlbW92ZUNTU1Byb3BlcnRpZXMo
Q1NTUHJvcGVydHlNYXJnaW5MZWZ0LCBDU1NQcm9wZXJ0eU1hcmdpblJpZ2h0KTsKKyAgICAgICAg
ZWxzZSB7CisgICAgICAgICAgICBhZGRDU1NMZW5ndGgoQ1NTUHJvcGVydHlNYXJnaW5MZWZ0LCBh
dHRyLT52YWx1ZSgpKTsKKyAgICAgICAgICAgIGFkZENTU0xlbmd0aChDU1NQcm9wZXJ0eU1hcmdp
blJpZ2h0LCBhdHRyLT52YWx1ZSgpKTsKKyAgICAgICAgfQogICAgIH0gZWxzZSBpZiAoYXR0ci0+
bmFtZSgpID09IGFsaWduQXR0cikKICAgICAgICAgYWRkSFRNTEFsaWdubWVudChhdHRyKTsKICAg
ICBlbHNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQbHVnSW5FbGVtZW50
LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQbHVnSW5FbGVtZW50LmgKaW5kZXggYTEwYWY2
MS4uYWI5YTQ5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGx1Z0luRWxl
bWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBsdWdJbkVsZW1lbnQuaApAQCAt
NTgsNyArNTgsNiBAQCBwcm90ZWN0ZWQ6CiAKICAgICB2aXJ0dWFsIHZvaWQgZGV0YWNoKCk7CiAg
ICAgdmlydHVhbCB2b2lkIHJlbW92ZWRGcm9tRG9jdW1lbnQoKTsKLSAgICB2aXJ0dWFsIGJvb2wg
bWFwVG9FbnRyeShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSwgTWFwcGVkQXR0cmlidXRl
RW50cnkmIHJlc3VsdCkgY29uc3Q7CiAgICAgdmlydHVhbCB2b2lkIHBhcnNlTWFwcGVkQXR0cmli
dXRlKEF0dHJpYnV0ZSopOwogCiAgICAgYm9vbCBtX2luQmVmb3JlTG9hZEV2ZW50SGFuZGxlcjsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFByZUVsZW1lbnQuY3BwIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MUHJlRWxlbWVudC5jcHAKaW5kZXggZmM2N2FjYS4uMGU5NThi
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUHJlRWxlbWVudC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUHJlRWxlbWVudC5jcHAKQEAgLTQyLDE1ICs0Miw2
IEBAIFBhc3NSZWZQdHI8SFRNTFByZUVsZW1lbnQ+IEhUTUxQcmVFbGVtZW50OjpjcmVhdGUoY29u
c3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwKICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEhUTUxQ
cmVFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KSk7CiB9CiAKLWJvb2wgSFRNTFByZUVsZW1lbnQ6
Om1hcFRvRW50cnkoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUsIE1hcHBlZEF0dHJpYnV0
ZUVudHJ5JiByZXN1bHQpIGNvbnN0Ci17Ci0gICAgaWYgKGF0dHJOYW1lID09IHdpZHRoQXR0ciB8
fCBhdHRyTmFtZSA9PSB3cmFwQXR0cikgewotICAgICAgICByZXN1bHQgPSBlUHJlOwotICAgICAg
ICByZXR1cm4gZmFsc2U7Ci0gICAgfQotICAgIHJldHVybiBIVE1MRWxlbWVudDo6bWFwVG9FbnRy
eShhdHRyTmFtZSwgcmVzdWx0KTsKLX0KLQogdm9pZCBIVE1MUHJlRWxlbWVudDo6cGFyc2VNYXBw
ZWRBdHRyaWJ1dGUoQXR0cmlidXRlKiBhdHRyKQogewogICAgIGlmIChhdHRyLT5uYW1lKCkgPT0g
d2lkdGhBdHRyKSB7CkBAIC01OSw4ICs1MCwxMCBAQCB2b2lkIEhUTUxQcmVFbGVtZW50OjpwYXJz
ZU1hcHBlZEF0dHJpYnV0ZShBdHRyaWJ1dGUqIGF0dHIpCiAgICAgICAgIC8vIG11bHRpcGx5IGJ5
IHRoZSB2YWx1ZSBvZiB0aGUgYXR0cmlidXRlIGFuZCB0aGVuIHNldCB0aGF0IGFzIHRoZSB3aWR0
aCBDU1MKICAgICAgICAgLy8gcHJvcGVydHkuCiAgICAgfSBlbHNlIGlmIChhdHRyLT5uYW1lKCkg
PT0gd3JhcEF0dHIpIHsKLSAgICAgICAgaWYgKCFhdHRyLT52YWx1ZSgpLmlzTnVsbCgpKQotICAg
ICAgICAgICAgYWRkQ1NTUHJvcGVydHkoYXR0ciwgQ1NTUHJvcGVydHlXaGl0ZVNwYWNlLCBDU1NW
YWx1ZVByZVdyYXApOworICAgICAgICBpZiAoYXR0ci0+dmFsdWUoKS5pc051bGwoKSkKKyAgICAg
ICAgICAgIHJlbW92ZUNTU1Byb3BlcnR5KENTU1Byb3BlcnR5V2hpdGVTcGFjZSk7CisgICAgICAg
IGVsc2UKKyAgICAgICAgICAgIGFkZENTU1Byb3BlcnR5KENTU1Byb3BlcnR5V2hpdGVTcGFjZSwg
Q1NTVmFsdWVQcmVXcmFwKTsKICAgICB9IGVsc2UKICAgICAgICAgcmV0dXJuIEhUTUxFbGVtZW50
OjpwYXJzZU1hcHBlZEF0dHJpYnV0ZShhdHRyKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTFByZUVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFByZUVs
ZW1lbnQuaAppbmRleCAzY2NkYjg2Li45YmZlZTU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxQcmVFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUHJl
RWxlbWVudC5oCkBAIC0zNCw3ICszNCw2IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgSFRNTFBy
ZUVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Kik7CiAKLSAgICB2aXJ0dWFs
IGJvb2wgbWFwVG9FbnRyeShjb25zdCBRdWFsaWZpZWROYW1lJiwgTWFwcGVkQXR0cmlidXRlRW50
cnkmKSBjb25zdDsKICAgICB2aXJ0dWFsIHZvaWQgcGFyc2VNYXBwZWRBdHRyaWJ1dGUoQXR0cmli
dXRlKik7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUYWJsZUNh
cHRpb25FbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRhYmxlQ2FwdGlvbkVs
ZW1lbnQuY3BwCmluZGV4IGI3MjZkZjYuLjliODJiZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTFRhYmxlQ2FwdGlvbkVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTFRhYmxlQ2FwdGlvbkVsZW1lbnQuY3BwCkBAIC00NCwyMSArNDQsMTMgQEAgUGFz
c1JlZlB0cjxIVE1MVGFibGVDYXB0aW9uRWxlbWVudD4gSFRNTFRhYmxlQ2FwdGlvbkVsZW1lbnQ6
OmNyZWF0ZShjb25zdCBRdWFsaWYKICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEhUTUxUYWJsZUNh
cHRpb25FbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KSk7CiB9CiAKLWJvb2wgSFRNTFRhYmxlQ2Fw
dGlvbkVsZW1lbnQ6Om1hcFRvRW50cnkoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUsIE1h
cHBlZEF0dHJpYnV0ZUVudHJ5JiByZXN1bHQpIGNvbnN0Ci17Ci0gICAgaWYgKGF0dHJOYW1lID09
IGFsaWduQXR0cikgewotICAgICAgICByZXN1bHQgPSBlQ2FwdGlvbjsKLSAgICAgICAgcmV0dXJu
IGZhbHNlOwotICAgIH0KLQotICAgIHJldHVybiBIVE1MRWxlbWVudDo6bWFwVG9FbnRyeShhdHRy
TmFtZSwgcmVzdWx0KTsKLX0KLQogdm9pZCBIVE1MVGFibGVDYXB0aW9uRWxlbWVudDo6cGFyc2VN
YXBwZWRBdHRyaWJ1dGUoQXR0cmlidXRlKiBhdHRyKQogewogICAgIGlmIChhdHRyLT5uYW1lKCkg
PT0gYWxpZ25BdHRyKSB7CiAgICAgICAgIGlmICghYXR0ci0+dmFsdWUoKS5pc0VtcHR5KCkpCi0g
ICAgICAgICAgICBhZGRDU1NQcm9wZXJ0eShhdHRyLCBDU1NQcm9wZXJ0eUNhcHRpb25TaWRlLCBh
dHRyLT52YWx1ZSgpKTsKKyAgICAgICAgICAgIGFkZENTU1Byb3BlcnR5KENTU1Byb3BlcnR5Q2Fw
dGlvblNpZGUsIGF0dHItPnZhbHVlKCkpOworICAgICAgICBlbHNlCisgICAgICAgICAgICByZW1v
dmVDU1NQcm9wZXJ0eShDU1NQcm9wZXJ0eUNhcHRpb25TaWRlKTsKICAgICB9IGVsc2UKICAgICAg
ICAgSFRNTEVsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmlidXRlKGF0dHIpOwogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFibGVDYXB0aW9uRWxlbWVudC5oIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MVGFibGVDYXB0aW9uRWxlbWVudC5oCmluZGV4IGEyZGQyZmEuLjVj
NWNlOTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRhYmxlQ2FwdGlvbkVs
ZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUYWJsZUNhcHRpb25FbGVtZW50
LmgKQEAgLTM2LDggKzM2LDcgQEAgcHVibGljOgogCiBwcml2YXRlOgogICAgIEhUTUxUYWJsZUNh
cHRpb25FbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCopOwotICAgIAotICAg
IHZpcnR1YWwgYm9vbCBtYXBUb0VudHJ5KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBNYXBwZWRBdHRy
aWJ1dGVFbnRyeSYpIGNvbnN0OworCiAgICAgdmlydHVhbCB2b2lkIHBhcnNlTWFwcGVkQXR0cmli
dXRlKEF0dHJpYnV0ZSopOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MVGFibGVDZWxsRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUYWJsZUNl
bGxFbGVtZW50LmNwcAppbmRleCA5YTk2YTM2Li45MjQ0ODdiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxUYWJsZUNlbGxFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxUYWJsZUNlbGxFbGVtZW50LmNwcApAQCAtNzUsMjIgKzc1LDYgQEAgaW50IEhU
TUxUYWJsZUNlbGxFbGVtZW50OjpjZWxsSW5kZXgoKSBjb25zdAogICAgIHJldHVybiBpbmRleDsK
IH0KIAotYm9vbCBIVE1MVGFibGVDZWxsRWxlbWVudDo6bWFwVG9FbnRyeShjb25zdCBRdWFsaWZp
ZWROYW1lJiBhdHRyTmFtZSwgTWFwcGVkQXR0cmlidXRlRW50cnkmIHJlc3VsdCkgY29uc3QKLXsK
LSAgICBpZiAoYXR0ck5hbWUgPT0gbm93cmFwQXR0cikgewotICAgICAgICByZXN1bHQgPSBlVW5p
dmVyc2FsOwotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotICAgIAotICAgIGlmIChhdHRy
TmFtZSA9PSB3aWR0aEF0dHIgfHwKLSAgICAgICAgYXR0ck5hbWUgPT0gaGVpZ2h0QXR0cikgewot
ICAgICAgICByZXN1bHQgPSBlQ2VsbDsgLy8gQmVjYXVzZSBvZiB0aGUgcXVpcmt5IGJlaGF2aW9y
IG9mIGlnbm9yaW5nIDAgdmFsdWVzLCBjZWxscyBhcmUgc3BlY2lhbC4KLSAgICAgICAgcmV0dXJu
IGZhbHNlOwotICAgIH0KLQotICAgIHJldHVybiBIVE1MVGFibGVQYXJ0RWxlbWVudDo6bWFwVG9F
bnRyeShhdHRyTmFtZSwgcmVzdWx0KTsKLX0KLQogdm9pZCBIVE1MVGFibGVDZWxsRWxlbWVudDo6
cGFyc2VNYXBwZWRBdHRyaWJ1dGUoQXR0cmlidXRlKiBhdHRyKQogewogICAgIGlmIChhdHRyLT5u
YW1lKCkgPT0gcm93c3BhbkF0dHIpIHsKQEAgLTEwMCwyMCArODQsMjUgQEAgdm9pZCBIVE1MVGFi
bGVDZWxsRWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUoQXR0cmlidXRlKiBhdHRyKQogICAg
ICAgICBpZiAocmVuZGVyZXIoKSAmJiByZW5kZXJlcigpLT5pc1RhYmxlQ2VsbCgpKQogICAgICAg
ICAgICAgdG9SZW5kZXJUYWJsZUNlbGwocmVuZGVyZXIoKSktPmNvbFNwYW5PclJvd1NwYW5DaGFu
Z2VkKCk7CiAgICAgfSBlbHNlIGlmIChhdHRyLT5uYW1lKCkgPT0gbm93cmFwQXR0cikgewotICAg
ICAgICBpZiAoIWF0dHItPmlzTnVsbCgpKQotICAgICAgICAgICAgYWRkQ1NTUHJvcGVydHkoYXR0
ciwgQ1NTUHJvcGVydHlXaGl0ZVNwYWNlLCBDU1NWYWx1ZVdlYmtpdE5vd3JhcCk7CisgICAgICAg
IGlmIChhdHRyLT5pc051bGwoKSkKKyAgICAgICAgICAgIHJlbW92ZUNTU1Byb3BlcnR5KENTU1By
b3BlcnR5V2hpdGVTcGFjZSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGFkZENTU1Byb3Bl
cnR5KENTU1Byb3BlcnR5V2hpdGVTcGFjZSwgQ1NTVmFsdWVXZWJraXROb3dyYXApOworCiAgICAg
fSBlbHNlIGlmIChhdHRyLT5uYW1lKCkgPT0gd2lkdGhBdHRyKSB7CiAgICAgICAgIGlmICghYXR0
ci0+dmFsdWUoKS5pc0VtcHR5KCkpIHsKICAgICAgICAgICAgIGludCB3aWR0aEludCA9IGF0dHIt
PnZhbHVlKCkudG9JbnQoKTsKICAgICAgICAgICAgIGlmICh3aWR0aEludCA+IDApIC8vIHdpZHRo
PSIwIiBpcyBpZ25vcmVkIGZvciBjb21wYXRpYmlsaXR5IHdpdGggV2luSUUuCi0gICAgICAgICAg
ICAgICAgYWRkQ1NTTGVuZ3RoKGF0dHIsIENTU1Byb3BlcnR5V2lkdGgsIGF0dHItPnZhbHVlKCkp
OwotICAgICAgICB9CisgICAgICAgICAgICAgICAgYWRkQ1NTTGVuZ3RoKENTU1Byb3BlcnR5V2lk
dGgsIGF0dHItPnZhbHVlKCkpOworICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIHJlbW92ZUNT
U1Byb3BlcnR5KENTU1Byb3BlcnR5V2lkdGgpOwogICAgIH0gZWxzZSBpZiAoYXR0ci0+bmFtZSgp
ID09IGhlaWdodEF0dHIpIHsKICAgICAgICAgaWYgKCFhdHRyLT52YWx1ZSgpLmlzRW1wdHkoKSkg
ewogICAgICAgICAgICAgaW50IGhlaWdodEludCA9IGF0dHItPnZhbHVlKCkudG9JbnQoKTsKICAg
ICAgICAgICAgIGlmIChoZWlnaHRJbnQgPiAwKSAvLyBoZWlnaHQ9IjAiIGlzIGlnbm9yZWQgZm9y
IGNvbXBhdGliaWxpdHkgd2l0aCBXaW5JRS4KLSAgICAgICAgICAgICAgICBhZGRDU1NMZW5ndGgo
YXR0ciwgQ1NTUHJvcGVydHlIZWlnaHQsIGF0dHItPnZhbHVlKCkpOwotICAgICAgICB9CisgICAg
ICAgICAgICAgICAgYWRkQ1NTTGVuZ3RoKENTU1Byb3BlcnR5SGVpZ2h0LCBhdHRyLT52YWx1ZSgp
KTsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICByZW1vdmVDU1NQcm9wZXJ0eShDU1NQcm9w
ZXJ0eUhlaWdodCk7CiAgICAgfSBlbHNlCiAgICAgICAgIEhUTUxUYWJsZVBhcnRFbGVtZW50Ojpw
YXJzZU1hcHBlZEF0dHJpYnV0ZShhdHRyKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTFRhYmxlQ2VsbEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRh
YmxlQ2VsbEVsZW1lbnQuaAppbmRleCBkN2RkYzg2Li5mNzgyN2JkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxUYWJsZUNlbGxFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MVGFibGVDZWxsRWxlbWVudC5oCkBAIC01Myw3ICs1Myw2IEBAIHB1YmxpYzoK
IHByaXZhdGU6CiAgICAgSFRNTFRhYmxlQ2VsbEVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYs
IERvY3VtZW50Kik7CiAKLSAgICB2aXJ0dWFsIGJvb2wgbWFwVG9FbnRyeShjb25zdCBRdWFsaWZp
ZWROYW1lJiwgTWFwcGVkQXR0cmlidXRlRW50cnkmKSBjb25zdDsKICAgICB2aXJ0dWFsIHZvaWQg
cGFyc2VNYXBwZWRBdHRyaWJ1dGUoQXR0cmlidXRlKik7CiAKICAgICB2aXJ0dWFsIFBhc3NSZWZQ
dHI8Q1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24+IGFkZGl0aW9uYWxBdHRyaWJ1dGVTdHlsZSgp
IE9WRVJSSURFOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFibGVDb2xF
bGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRhYmxlQ29sRWxlbWVudC5jcHAK
aW5kZXggMTA2NTdlNi4uYjhmNDRjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MVGFibGVDb2xFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUYWJs
ZUNvbEVsZW1lbnQuY3BwCkBAIC00NywxNiArNDcsNiBAQCBQYXNzUmVmUHRyPEhUTUxUYWJsZUNv
bEVsZW1lbnQ+IEhUTUxUYWJsZUNvbEVsZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1l
JgogICAgIHJldHVybiBhZG9wdFJlZihuZXcgSFRNTFRhYmxlQ29sRWxlbWVudCh0YWdOYW1lLCBk
b2N1bWVudCkpOwogfQogCi1ib29sIEhUTUxUYWJsZUNvbEVsZW1lbnQ6Om1hcFRvRW50cnkoY29u
c3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUsIE1hcHBlZEF0dHJpYnV0ZUVudHJ5JiByZXN1bHQp
IGNvbnN0Ci17Ci0gICAgaWYgKGF0dHJOYW1lID09IHdpZHRoQXR0cikgewotICAgICAgICByZXN1
bHQgPSBlVW5pdmVyc2FsOwotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotCi0gICAgcmV0
dXJuIEhUTUxUYWJsZVBhcnRFbGVtZW50OjptYXBUb0VudHJ5KGF0dHJOYW1lLCByZXN1bHQpOwot
fQotCiB2b2lkIEhUTUxUYWJsZUNvbEVsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmlidXRlKEF0dHJp
YnV0ZSogYXR0cikKIHsKICAgICBpZiAoYXR0ci0+bmFtZSgpID09IHNwYW5BdHRyKSB7CkBAIC02
NSwxNCArNTUsMTUgQEAgdm9pZCBIVE1MVGFibGVDb2xFbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJp
YnV0ZShBdHRyaWJ1dGUqIGF0dHIpCiAgICAgICAgICAgICByZW5kZXJlcigpLT51cGRhdGVGcm9t
RWxlbWVudCgpOwogICAgIH0gZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09IHdpZHRoQXR0cikgewog
ICAgICAgICBpZiAoIWF0dHItPnZhbHVlKCkuaXNFbXB0eSgpKSB7Ci0gICAgICAgICAgICBhZGRD
U1NMZW5ndGgoYXR0ciwgQ1NTUHJvcGVydHlXaWR0aCwgYXR0ci0+dmFsdWUoKSk7CisgICAgICAg
ICAgICBhZGRDU1NMZW5ndGgoQ1NTUHJvcGVydHlXaWR0aCwgYXR0ci0+dmFsdWUoKSk7CiAgICAg
ICAgICAgICBpZiAocmVuZGVyZXIoKSAmJiByZW5kZXJlcigpLT5pc1RhYmxlQ29sKCkpIHsKICAg
ICAgICAgICAgICAgICBSZW5kZXJUYWJsZUNvbCogY29sID0gdG9SZW5kZXJUYWJsZUNvbChyZW5k
ZXJlcigpKTsKICAgICAgICAgICAgICAgICBpbnQgbmV3V2lkdGggPSB3aWR0aCgpLnRvSW50KCk7
CiAgICAgICAgICAgICAgICAgaWYgKG5ld1dpZHRoICE9IGNvbC0+d2lkdGgoKSkKICAgICAgICAg
ICAgICAgICAgICAgY29sLT5zZXROZWVkc0xheW91dEFuZFByZWZXaWR0aHNSZWNhbGMoKTsKICAg
ICAgICAgICAgIH0KLSAgICAgICAgfQorICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIHJlbW92
ZUNTU1Byb3BlcnR5KENTU1Byb3BlcnR5V2lkdGgpOwogICAgIH0gZWxzZQogICAgICAgICBIVE1M
VGFibGVQYXJ0RWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUoYXR0cik7CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUYWJsZUNvbEVsZW1lbnQuaCBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTFRhYmxlQ29sRWxlbWVudC5oCmluZGV4IDM2MTgwYzcuLjQ5NjQ1Yzcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRhYmxlQ29sRWxlbWVudC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRhYmxlQ29sRWxlbWVudC5oCkBAIC00Miw3ICs0
Miw2IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgSFRNTFRhYmxlQ29sRWxlbWVudChjb25zdCBR
dWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCopOwogCi0gICAgdmlydHVhbCBib29sIG1h
cFRvRW50cnkoY29uc3QgUXVhbGlmaWVkTmFtZSYsIE1hcHBlZEF0dHJpYnV0ZUVudHJ5JikgY29u
c3Q7CiAgICAgdmlydHVhbCB2b2lkIHBhcnNlTWFwcGVkQXR0cmlidXRlKEF0dHJpYnV0ZSopOwog
ICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbj4gYWRkaXRp
b25hbEF0dHJpYnV0ZVN0eWxlKCkgT1ZFUlJJREU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTFRhYmxlRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxU
YWJsZUVsZW1lbnQuY3BwCmluZGV4IGNhYzhiNGQuLjJjMWUzYTIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTFRhYmxlRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MVGFibGVFbGVtZW50LmNwcApAQCAtMjQxLDQyICsyNDEsNiBAQCB2b2lkIEhUTUxU
YWJsZUVsZW1lbnQ6OmRlbGV0ZVJvdyhpbnQgaW5kZXgsIEV4Y2VwdGlvbkNvZGUmIGVjKQogICAg
IHJvdy0+cmVtb3ZlKGVjKTsKIH0KIAotYm9vbCBIVE1MVGFibGVFbGVtZW50OjptYXBUb0VudHJ5
KGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lLCBNYXBwZWRBdHRyaWJ1dGVFbnRyeSYgcmVz
dWx0KSBjb25zdAotewotICAgIGlmIChhdHRyTmFtZSA9PSBiYWNrZ3JvdW5kQXR0cikgewotICAg
ICAgICByZXN1bHQgPSAoTWFwcGVkQXR0cmlidXRlRW50cnkpKGVMYXN0RW50cnkgKyBkb2N1bWVu
dCgpLT5kb2NJRCgpKTsKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLSAgICAKLSAgICBp
ZiAoYXR0ck5hbWUgPT0gd2lkdGhBdHRyIHx8Ci0gICAgICAgIGF0dHJOYW1lID09IGhlaWdodEF0
dHIgfHwKLSAgICAgICAgYXR0ck5hbWUgPT0gYmdjb2xvckF0dHIgfHwKLSAgICAgICAgYXR0ck5h
bWUgPT0gY2VsbHNwYWNpbmdBdHRyIHx8Ci0gICAgICAgIGF0dHJOYW1lID09IHZzcGFjZUF0dHIg
fHwKLSAgICAgICAgYXR0ck5hbWUgPT0gaHNwYWNlQXR0ciB8fAotICAgICAgICBhdHRyTmFtZSA9
PSB2YWxpZ25BdHRyKSB7Ci0gICAgICAgIHJlc3VsdCA9IGVVbml2ZXJzYWw7Ci0gICAgICAgIHJl
dHVybiBmYWxzZTsKLSAgICB9Ci0gICAgCi0gICAgaWYgKGF0dHJOYW1lID09IGJvcmRlcmNvbG9y
QXR0ciB8fCBhdHRyTmFtZSA9PSBmcmFtZUF0dHIgfHwgYXR0ck5hbWUgPT0gcnVsZXNBdHRyKSB7
Ci0gICAgICAgIHJlc3VsdCA9IGVVbml2ZXJzYWw7Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAg
IH0KLSAgICAKLSAgICBpZiAoYXR0ck5hbWUgPT0gYm9yZGVyQXR0cikgewotICAgICAgICByZXN1
bHQgPSBlVGFibGU7Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAgIH0KLSAgICAKLSAgICBpZiAo
YXR0ck5hbWUgPT0gYWxpZ25BdHRyKSB7Ci0gICAgICAgIHJlc3VsdCA9IGVUYWJsZTsKLSAgICAg
ICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLQotICAgIHJldHVybiBIVE1MRWxlbWVudDo6bWFwVG9F
bnRyeShhdHRyTmFtZSwgcmVzdWx0KTsKLX0KLQogc3RhdGljIGlubGluZSBib29sIGlzVGFibGVD
ZWxsQW5jZXN0b3IoTm9kZSogbikKIHsKICAgICByZXR1cm4gbi0+aGFzVGFnTmFtZSh0aGVhZFRh
ZykgfHwgbi0+aGFzVGFnTmFtZSh0Ym9keVRhZykgfHwKQEAgLTMwOCwzOCArMjcyLDQ2IEBAIHZv
aWQgSFRNTFRhYmxlRWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUoQXR0cmlidXRlKiBhdHRy
KQogICAgIHVuc2lnbmVkIHNob3J0IG9sZFBhZGRpbmcgPSBtX3BhZGRpbmc7CiAKICAgICBpZiAo
YXR0ci0+bmFtZSgpID09IHdpZHRoQXR0cikKLSAgICAgICAgYWRkQ1NTTGVuZ3RoKGF0dHIsIENT
U1Byb3BlcnR5V2lkdGgsIGF0dHItPnZhbHVlKCkpOworICAgICAgICBpZiAoYXR0ci0+aXNOdWxs
KCkpCisgICAgICAgICAgICByZW1vdmVDU1NQcm9wZXJ0eShDU1NQcm9wZXJ0eVdpZHRoKTsKKyAg
ICAgICAgZWxzZQorICAgICAgICAgICAgYWRkQ1NTTGVuZ3RoKENTU1Byb3BlcnR5V2lkdGgsIGF0
dHItPnZhbHVlKCkpOwogICAgIGVsc2UgaWYgKGF0dHItPm5hbWUoKSA9PSBoZWlnaHRBdHRyKQot
ICAgICAgICBhZGRDU1NMZW5ndGgoYXR0ciwgQ1NTUHJvcGVydHlIZWlnaHQsIGF0dHItPnZhbHVl
KCkpOworICAgICAgICBpZiAoYXR0ci0+aXNOdWxsKCkpCisgICAgICAgICAgICByZW1vdmVDU1NQ
cm9wZXJ0eShDU1NQcm9wZXJ0eUhlaWdodCk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGFk
ZENTU0xlbmd0aChDU1NQcm9wZXJ0eUhlaWdodCwgYXR0ci0+dmFsdWUoKSk7CiAgICAgZWxzZSBp
ZiAoYXR0ci0+bmFtZSgpID09IGJvcmRlckF0dHIpICB7CiAgICAgICAgIG1fYm9yZGVyQXR0ciA9
IHRydWU7Ci0gICAgICAgIGlmIChhdHRyLT5kZWNsKCkpIHsKLSAgICAgICAgICAgIFJlZlB0cjxD
U1NWYWx1ZT4gdmFsID0gYXR0ci0+ZGVjbCgpLT5nZXRQcm9wZXJ0eUNTU1ZhbHVlKENTU1Byb3Bl
cnR5Qm9yZGVyTGVmdFdpZHRoKTsKLSAgICAgICAgICAgIGlmICh2YWwgJiYgdmFsLT5pc1ByaW1p
dGl2ZVZhbHVlKCkpIHsKLSAgICAgICAgICAgICAgICBDU1NQcmltaXRpdmVWYWx1ZSogcHJpbVZh
bCA9IHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4odmFsLmdldCgpKTsKLSAgICAgICAg
ICAgICAgICBtX2JvcmRlckF0dHIgPSBwcmltVmFsLT5nZXREb3VibGVWYWx1ZShDU1NQcmltaXRp
dmVWYWx1ZTo6Q1NTX05VTUJFUik7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0gZWxzZSBpZiAo
IWF0dHItPmlzTnVsbCgpKSB7CisKKyAgICAgICAgaWYgKGF0dHItPmlzTnVsbCgpKQorICAgICAg
ICAgICAgcmVtb3ZlQ1NTUHJvcGVydHkoQ1NTUHJvcGVydHlCb3JkZXJXaWR0aCk7CisgICAgICAg
IGVsc2UgewogICAgICAgICAgICAgaW50IGJvcmRlciA9IDA7CiAgICAgICAgICAgICBpZiAoYXR0
ci0+aXNFbXB0eSgpKQogICAgICAgICAgICAgICAgIGJvcmRlciA9IDE7CiAgICAgICAgICAgICBl
bHNlCiAgICAgICAgICAgICAgICAgYm9yZGVyID0gYXR0ci0+dmFsdWUoKS50b0ludCgpOwogICAg
ICAgICAgICAgbV9ib3JkZXJBdHRyID0gYm9yZGVyOwotICAgICAgICAgICAgYWRkQ1NTTGVuZ3Ro
KGF0dHIsIENTU1Byb3BlcnR5Qm9yZGVyV2lkdGgsIFN0cmluZzo6bnVtYmVyKGJvcmRlcikpOwor
ICAgICAgICAgICAgYWRkQ1NTTGVuZ3RoKENTU1Byb3BlcnR5Qm9yZGVyV2lkdGgsIFN0cmluZzo6
bnVtYmVyKGJvcmRlcikpOwogICAgICAgICB9CiAgICAgfSBlbHNlIGlmIChhdHRyLT5uYW1lKCkg
PT0gYmdjb2xvckF0dHIpCi0gICAgICAgIGFkZENTU0NvbG9yKGF0dHIsIENTU1Byb3BlcnR5QmFj
a2dyb3VuZENvbG9yLCBhdHRyLT52YWx1ZSgpKTsKKyAgICAgICAgaWYgKGF0dHItPmlzTnVsbCgp
KQorICAgICAgICAgICAgcmVtb3ZlQ1NTUHJvcGVydHkoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQ29s
b3IpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBhZGRDU1NDb2xvcihDU1NQcm9wZXJ0eUJh
Y2tncm91bmRDb2xvciwgYXR0ci0+dmFsdWUoKSk7CiAgICAgZWxzZSBpZiAoYXR0ci0+bmFtZSgp
ID09IGJvcmRlcmNvbG9yQXR0cikgewotICAgICAgICBtX2JvcmRlckNvbG9yQXR0ciA9IGF0dHIt
PmRlY2woKTsKLSAgICAgICAgaWYgKCFhdHRyLT5kZWNsKCkgJiYgIWF0dHItPmlzRW1wdHkoKSkg
ewotICAgICAgICAgICAgYWRkQ1NTQ29sb3IoYXR0ciwgQ1NTUHJvcGVydHlCb3JkZXJDb2xvciwg
YXR0ci0+dmFsdWUoKSk7Ci0gICAgICAgICAgICBtX2JvcmRlckNvbG9yQXR0ciA9IHRydWU7Ci0g
ICAgICAgIH0KKyAgICAgICAgbV9ib3JkZXJDb2xvckF0dHIgPSAhYXR0ci0+aXNFbXB0eSgpOwor
ICAgICAgICBpZiAoIWF0dHItPmlzRW1wdHkoKSkKKyAgICAgICAgICAgIGFkZENTU0NvbG9yKENT
U1Byb3BlcnR5Qm9yZGVyQ29sb3IsIGF0dHItPnZhbHVlKCkpOworICAgICAgICBlbHNlCisgICAg
ICAgICAgICByZW1vdmVDU1NQcm9wZXJ0eShDU1NQcm9wZXJ0eUJvcmRlckNvbG9yKTsKICAgICB9
IGVsc2UgaWYgKGF0dHItPm5hbWUoKSA9PSBiYWNrZ3JvdW5kQXR0cikgewogICAgICAgICBTdHJp
bmcgdXJsID0gc3RyaXBMZWFkaW5nQW5kVHJhaWxpbmdIVE1MU3BhY2VzKGF0dHItPnZhbHVlKCkp
OwogICAgICAgICBpZiAoIXVybC5pc0VtcHR5KCkpCi0gICAgICAgICAgICBhZGRDU1NJbWFnZVBy
b3BlcnR5KGF0dHIsIENTU1Byb3BlcnR5QmFja2dyb3VuZEltYWdlLCBkb2N1bWVudCgpLT5jb21w
bGV0ZVVSTCh1cmwpLnN0cmluZygpKTsKKyAgICAgICAgICAgIGFkZENTU0ltYWdlUHJvcGVydHko
Q1NTUHJvcGVydHlCYWNrZ3JvdW5kSW1hZ2UsIGRvY3VtZW50KCktPmNvbXBsZXRlVVJMKHVybCku
c3RyaW5nKCkpOworICAgICAgICBlbHNlCisgICAgICAgICAgICByZW1vdmVDU1NQcm9wZXJ0eShD
U1NQcm9wZXJ0eUJhY2tncm91bmRJbWFnZSk7CiAgICAgfSBlbHNlIGlmIChhdHRyLT5uYW1lKCkg
PT0gZnJhbWVBdHRyKSB7CiAgICAgICAgIC8vIENhY2hlIHRoZSB2YWx1ZSBvZiAiZnJhbWUiIHNv
IHRoYXQgdGhlIHRhYmxlIGNhbiBleGFtaW5lIGl0IGxhdGVyLgogICAgICAgICBtX2ZyYW1lQXR0
ciA9IGZhbHNlOwpAQCAtMzgwLDE0ICszNTIsMTcgQEAgdm9pZCBIVE1MVGFibGVFbGVtZW50Ojpw
YXJzZU1hcHBlZEF0dHJpYnV0ZShBdHRyaWJ1dGUqIGF0dHIpCiAgICAgICAgIAogICAgICAgICAv
LyBOb3cgbWFwIGluIHRoZSBib3JkZXIgc3R5bGVzIG9mIHNvbGlkIGFuZCBoaWRkZW4gcmVzcGVj
dGl2ZWx5LgogICAgICAgICBpZiAobV9mcmFtZUF0dHIpIHsKLSAgICAgICAgICAgIGFkZENTU1By
b3BlcnR5KGF0dHIsIENTU1Byb3BlcnR5Qm9yZGVyVG9wV2lkdGgsIENTU1ZhbHVlVGhpbik7Ci0g
ICAgICAgICAgICBhZGRDU1NQcm9wZXJ0eShhdHRyLCBDU1NQcm9wZXJ0eUJvcmRlckJvdHRvbVdp
ZHRoLCBDU1NWYWx1ZVRoaW4pOwotICAgICAgICAgICAgYWRkQ1NTUHJvcGVydHkoYXR0ciwgQ1NT
UHJvcGVydHlCb3JkZXJMZWZ0V2lkdGgsIENTU1ZhbHVlVGhpbik7Ci0gICAgICAgICAgICBhZGRD
U1NQcm9wZXJ0eShhdHRyLCBDU1NQcm9wZXJ0eUJvcmRlclJpZ2h0V2lkdGgsIENTU1ZhbHVlVGhp
bik7Ci0gICAgICAgICAgICBhZGRDU1NQcm9wZXJ0eShhdHRyLCBDU1NQcm9wZXJ0eUJvcmRlclRv
cFN0eWxlLCBib3JkZXJzW2NUb3BdID8gQ1NTVmFsdWVTb2xpZCA6IENTU1ZhbHVlSGlkZGVuKTsK
LSAgICAgICAgICAgIGFkZENTU1Byb3BlcnR5KGF0dHIsIENTU1Byb3BlcnR5Qm9yZGVyQm90dG9t
U3R5bGUsIGJvcmRlcnNbY0JvdHRvbV0gPyBDU1NWYWx1ZVNvbGlkIDogQ1NTVmFsdWVIaWRkZW4p
OwotICAgICAgICAgICAgYWRkQ1NTUHJvcGVydHkoYXR0ciwgQ1NTUHJvcGVydHlCb3JkZXJMZWZ0
U3R5bGUsIGJvcmRlcnNbY0xlZnRdID8gQ1NTVmFsdWVTb2xpZCA6IENTU1ZhbHVlSGlkZGVuKTsK
LSAgICAgICAgICAgIGFkZENTU1Byb3BlcnR5KGF0dHIsIENTU1Byb3BlcnR5Qm9yZGVyUmlnaHRT
dHlsZSwgYm9yZGVyc1tjUmlnaHRdID8gQ1NTVmFsdWVTb2xpZCA6IENTU1ZhbHVlSGlkZGVuKTsK
KyAgICAgICAgICAgIGFkZENTU1Byb3BlcnR5KENTU1Byb3BlcnR5Qm9yZGVyVG9wV2lkdGgsIENT
U1ZhbHVlVGhpbik7CisgICAgICAgICAgICBhZGRDU1NQcm9wZXJ0eShDU1NQcm9wZXJ0eUJvcmRl
ckJvdHRvbVdpZHRoLCBDU1NWYWx1ZVRoaW4pOworICAgICAgICAgICAgYWRkQ1NTUHJvcGVydHko
Q1NTUHJvcGVydHlCb3JkZXJMZWZ0V2lkdGgsIENTU1ZhbHVlVGhpbik7CisgICAgICAgICAgICBh
ZGRDU1NQcm9wZXJ0eShDU1NQcm9wZXJ0eUJvcmRlclJpZ2h0V2lkdGgsIENTU1ZhbHVlVGhpbik7
CisgICAgICAgICAgICBhZGRDU1NQcm9wZXJ0eShDU1NQcm9wZXJ0eUJvcmRlclRvcFN0eWxlLCBi
b3JkZXJzW2NUb3BdID8gQ1NTVmFsdWVTb2xpZCA6IENTU1ZhbHVlSGlkZGVuKTsKKyAgICAgICAg
ICAgIGFkZENTU1Byb3BlcnR5KENTU1Byb3BlcnR5Qm9yZGVyQm90dG9tU3R5bGUsIGJvcmRlcnNb
Y0JvdHRvbV0gPyBDU1NWYWx1ZVNvbGlkIDogQ1NTVmFsdWVIaWRkZW4pOworICAgICAgICAgICAg
YWRkQ1NTUHJvcGVydHkoQ1NTUHJvcGVydHlCb3JkZXJMZWZ0U3R5bGUsIGJvcmRlcnNbY0xlZnRd
ID8gQ1NTVmFsdWVTb2xpZCA6IENTU1ZhbHVlSGlkZGVuKTsKKyAgICAgICAgICAgIGFkZENTU1By
b3BlcnR5KENTU1Byb3BlcnR5Qm9yZGVyUmlnaHRTdHlsZSwgYm9yZGVyc1tjUmlnaHRdID8gQ1NT
VmFsdWVTb2xpZCA6IENTU1ZhbHVlSGlkZGVuKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAg
ICAgIHJlbW92ZUNTU1Byb3BlcnRpZXMoQ1NTUHJvcGVydHlCb3JkZXJUb3BXaWR0aCwgQ1NTUHJv
cGVydHlCb3JkZXJCb3R0b21XaWR0aCwgQ1NTUHJvcGVydHlCb3JkZXJMZWZ0V2lkdGgsIENTU1By
b3BlcnR5Qm9yZGVyUmlnaHRXaWR0aCwgQ1NTUHJvcGVydHlCb3JkZXJUb3BTdHlsZSk7CisgICAg
ICAgICAgICByZW1vdmVDU1NQcm9wZXJ0aWVzKENTU1Byb3BlcnR5Qm9yZGVyQm90dG9tU3R5bGUs
IENTU1Byb3BlcnR5Qm9yZGVyTGVmdFN0eWxlLCBDU1NQcm9wZXJ0eUJvcmRlclJpZ2h0U3R5bGUp
OwogICAgICAgICB9CiAgICAgfSBlbHNlIGlmIChhdHRyLT5uYW1lKCkgPT0gcnVsZXNBdHRyKSB7
CiAgICAgICAgIG1fcnVsZXNBdHRyID0gVW5zZXRSdWxlczsKQEAgLTQwNCwxMCArMzc5LDE0IEBA
IHZvaWQgSFRNTFRhYmxlRWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUoQXR0cmlidXRlKiBh
dHRyKQogICAgICAgICAKICAgICAgICAgLy8gVGhlIHByZXNlbmNlIG9mIGEgdmFsaWQgcnVsZXMg
YXR0cmlidXRlIGNhdXNlcyBib3JkZXIgY29sbGFwc2luZyB0byBiZSBlbmFibGVkLgogICAgICAg
ICBpZiAobV9ydWxlc0F0dHIgIT0gVW5zZXRSdWxlcykKLSAgICAgICAgICAgIGFkZENTU1Byb3Bl
cnR5KGF0dHIsIENTU1Byb3BlcnR5Qm9yZGVyQ29sbGFwc2UsIENTU1ZhbHVlQ29sbGFwc2UpOwor
ICAgICAgICAgICAgYWRkQ1NTUHJvcGVydHkoQ1NTUHJvcGVydHlCb3JkZXJDb2xsYXBzZSwgQ1NT
VmFsdWVDb2xsYXBzZSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHJlbW92ZUNTU1Byb3Bl
cnR5KENTU1Byb3BlcnR5Qm9yZGVyQ29sbGFwc2UpOwogICAgIH0gZWxzZSBpZiAoYXR0ci0+bmFt
ZSgpID09IGNlbGxzcGFjaW5nQXR0cikgewogICAgICAgICBpZiAoIWF0dHItPnZhbHVlKCkuaXNF
bXB0eSgpKQotICAgICAgICAgICAgYWRkQ1NTTGVuZ3RoKGF0dHIsIENTU1Byb3BlcnR5Qm9yZGVy
U3BhY2luZywgYXR0ci0+dmFsdWUoKSk7CisgICAgICAgICAgICBhZGRDU1NMZW5ndGgoQ1NTUHJv
cGVydHlCb3JkZXJTcGFjaW5nLCBhdHRyLT52YWx1ZSgpKTsKKyAgICAgICAgZWxzZQorICAgICAg
ICAgICAgcmVtb3ZlQ1NTUHJvcGVydHkoQ1NTUHJvcGVydHlCb3JkZXJTcGFjaW5nKTsKICAgICB9
IGVsc2UgaWYgKGF0dHItPm5hbWUoKSA9PSBjZWxscGFkZGluZ0F0dHIpIHsKICAgICAgICAgaWYg
KCFhdHRyLT52YWx1ZSgpLmlzRW1wdHkoKSkKICAgICAgICAgICAgIG1fcGFkZGluZyA9IG1heCgw
LCBhdHRyLT52YWx1ZSgpLnRvSW50KCkpOwpAQCAtNDE2LDIyICszOTUsMzMgQEAgdm9pZCBIVE1M
VGFibGVFbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpYnV0ZShBdHRyaWJ1dGUqIGF0dHIpCiAgICAg
fSBlbHNlIGlmIChhdHRyLT5uYW1lKCkgPT0gY29sc0F0dHIpIHsKICAgICAgICAgLy8gIyMjCiAg
ICAgfSBlbHNlIGlmIChhdHRyLT5uYW1lKCkgPT0gdnNwYWNlQXR0cikgewotICAgICAgICBhZGRD
U1NMZW5ndGgoYXR0ciwgQ1NTUHJvcGVydHlNYXJnaW5Ub3AsIGF0dHItPnZhbHVlKCkpOwotICAg
ICAgICBhZGRDU1NMZW5ndGgoYXR0ciwgQ1NTUHJvcGVydHlNYXJnaW5Cb3R0b20sIGF0dHItPnZh
bHVlKCkpOworICAgICAgICBpZiAoYXR0ci0+aXNOdWxsKCkpCisgICAgICAgICAgICByZW1vdmVD
U1NQcm9wZXJ0aWVzKENTU1Byb3BlcnR5TWFyZ2luVG9wLCBDU1NQcm9wZXJ0eU1hcmdpbkJvdHRv
bSk7CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgYWRkQ1NTTGVuZ3RoKENTU1Byb3BlcnR5
TWFyZ2luVG9wLCBhdHRyLT52YWx1ZSgpKTsKKyAgICAgICAgICAgIGFkZENTU0xlbmd0aChDU1NQ
cm9wZXJ0eU1hcmdpbkJvdHRvbSwgYXR0ci0+dmFsdWUoKSk7CisgICAgICAgIH0KICAgICB9IGVs
c2UgaWYgKGF0dHItPm5hbWUoKSA9PSBoc3BhY2VBdHRyKSB7Ci0gICAgICAgIGFkZENTU0xlbmd0
aChhdHRyLCBDU1NQcm9wZXJ0eU1hcmdpbkxlZnQsIGF0dHItPnZhbHVlKCkpOwotICAgICAgICBh
ZGRDU1NMZW5ndGgoYXR0ciwgQ1NTUHJvcGVydHlNYXJnaW5SaWdodCwgYXR0ci0+dmFsdWUoKSk7
CisgICAgICAgIGlmIChhdHRyLT5pc051bGwoKSkKKyAgICAgICAgICAgIHJlbW92ZUNTU1Byb3Bl
cnRpZXMoQ1NTUHJvcGVydHlNYXJnaW5MZWZ0LCBDU1NQcm9wZXJ0eU1hcmdpblJpZ2h0KTsKKyAg
ICAgICAgZWxzZSB7CisgICAgICAgICAgICBhZGRDU1NMZW5ndGgoQ1NTUHJvcGVydHlNYXJnaW5M
ZWZ0LCBhdHRyLT52YWx1ZSgpKTsKKyAgICAgICAgICAgIGFkZENTU0xlbmd0aChDU1NQcm9wZXJ0
eU1hcmdpblJpZ2h0LCBhdHRyLT52YWx1ZSgpKTsKKyAgICAgICAgfQogICAgIH0gZWxzZSBpZiAo
YXR0ci0+bmFtZSgpID09IGFsaWduQXR0cikgewogICAgICAgICBpZiAoIWF0dHItPnZhbHVlKCku
aXNFbXB0eSgpKSB7CiAgICAgICAgICAgICBpZiAoZXF1YWxJZ25vcmluZ0Nhc2UoYXR0ci0+dmFs
dWUoKSwgImNlbnRlciIpKSB7Ci0gICAgICAgICAgICAgICAgYWRkQ1NTUHJvcGVydHkoYXR0ciwg
Q1NTUHJvcGVydHlXZWJraXRNYXJnaW5TdGFydCwgQ1NTVmFsdWVBdXRvKTsKLSAgICAgICAgICAg
ICAgICBhZGRDU1NQcm9wZXJ0eShhdHRyLCBDU1NQcm9wZXJ0eVdlYmtpdE1hcmdpbkVuZCwgQ1NT
VmFsdWVBdXRvKTsKKyAgICAgICAgICAgICAgICBhZGRDU1NQcm9wZXJ0eShDU1NQcm9wZXJ0eVdl
YmtpdE1hcmdpblN0YXJ0LCBDU1NWYWx1ZUF1dG8pOworICAgICAgICAgICAgICAgIGFkZENTU1By
b3BlcnR5KENTU1Byb3BlcnR5V2Via2l0TWFyZ2luRW5kLCBDU1NWYWx1ZUF1dG8pOwogICAgICAg
ICAgICAgfSBlbHNlCi0gICAgICAgICAgICAgICAgYWRkQ1NTUHJvcGVydHkoYXR0ciwgQ1NTUHJv
cGVydHlGbG9hdCwgYXR0ci0+dmFsdWUoKSk7Ci0gICAgICAgIH0KKyAgICAgICAgICAgICAgICBh
ZGRDU1NQcm9wZXJ0eShDU1NQcm9wZXJ0eUZsb2F0LCBhdHRyLT52YWx1ZSgpKTsKKyAgICAgICAg
fSBlbHNlCisgICAgICAgICAgICByZW1vdmVDU1NQcm9wZXJ0aWVzKENTU1Byb3BlcnR5V2Via2l0
TWFyZ2luU3RhcnQsIENTU1Byb3BlcnR5V2Via2l0TWFyZ2luRW5kLCBDU1NQcm9wZXJ0eUZsb2F0
KTsKICAgICB9IGVsc2UgaWYgKGF0dHItPm5hbWUoKSA9PSB2YWxpZ25BdHRyKSB7CiAgICAgICAg
IGlmICghYXR0ci0+dmFsdWUoKS5pc0VtcHR5KCkpCi0gICAgICAgICAgICBhZGRDU1NQcm9wZXJ0
eShhdHRyLCBDU1NQcm9wZXJ0eVZlcnRpY2FsQWxpZ24sIGF0dHItPnZhbHVlKCkpOworICAgICAg
ICAgICAgYWRkQ1NTUHJvcGVydHkoQ1NTUHJvcGVydHlWZXJ0aWNhbEFsaWduLCBhdHRyLT52YWx1
ZSgpKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgcmVtb3ZlQ1NTUHJvcGVydHkoQ1NTUHJv
cGVydHlWZXJ0aWNhbEFsaWduKTsKICAgICB9IGVsc2UKICAgICAgICAgSFRNTEVsZW1lbnQ6OnBh
cnNlTWFwcGVkQXR0cmlidXRlKGF0dHIpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxUYWJsZUVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRhYmxlRWxl
bWVudC5oCmluZGV4IGNmZGUxZGYuLmU3ZGE1MDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTFRhYmxlRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRh
YmxlRWxlbWVudC5oCkBAIC03Miw3ICs3Miw2IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgSFRN
TFRhYmxlRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQqKTsKIAotICAgIHZp
cnR1YWwgYm9vbCBtYXBUb0VudHJ5KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBNYXBwZWRBdHRyaWJ1
dGVFbnRyeSYpIGNvbnN0OwogICAgIHZpcnR1YWwgdm9pZCBwYXJzZU1hcHBlZEF0dHJpYnV0ZShB
dHRyaWJ1dGUqKTsKICAgICB2aXJ0dWFsIGJvb2wgaXNVUkxBdHRyaWJ1dGUoQXR0cmlidXRlKikg
Y29uc3Q7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRhYmxlUGFydEVs
ZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFibGVQYXJ0RWxlbWVudC5jcHAK
aW5kZXggZGZhZWNjYS4uYzk2YmVhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MVGFibGVQYXJ0RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFi
bGVQYXJ0RWxlbWVudC5jcHAKQEAgLTM2LDYzICszNiw1MiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKIHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CiAKLWJvb2wgSFRNTFRhYmxlUGFydEVsZW1l
bnQ6Om1hcFRvRW50cnkoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUsIE1hcHBlZEF0dHJp
YnV0ZUVudHJ5JiByZXN1bHQpIGNvbnN0Ci17Ci0gICAgaWYgKGF0dHJOYW1lID09IGJhY2tncm91
bmRBdHRyKSB7Ci0gICAgICAgIHJlc3VsdCA9IChNYXBwZWRBdHRyaWJ1dGVFbnRyeSkoZUxhc3RF
bnRyeSArIGRvY3VtZW50KCktPmRvY0lEKCkpOwotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAg
fQotICAgIAotICAgIGlmIChhdHRyTmFtZSA9PSBiZ2NvbG9yQXR0ciB8fAotICAgICAgICBhdHRy
TmFtZSA9PSBib3JkZXJjb2xvckF0dHIgfHwKLSAgICAgICAgYXR0ck5hbWUgPT0gdmFsaWduQXR0
ciB8fAotICAgICAgICBhdHRyTmFtZSA9PSBoZWlnaHRBdHRyKSB7Ci0gICAgICAgIHJlc3VsdCA9
IGVVbml2ZXJzYWw7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0gICAgCi0gICAgaWYg
KGF0dHJOYW1lID09IGFsaWduQXR0cikgewotICAgICAgICByZXN1bHQgPSBlQ2VsbDsgLy8gQWxs
IHRhYmxlIHBhcnRzIHdpbGwganVzdCBzaGFyZSBpbiB0aGUgVEQgc3BhY2UuCi0gICAgICAgIHJl
dHVybiBmYWxzZTsKLSAgICB9Ci0KLSAgICByZXR1cm4gSFRNTEVsZW1lbnQ6Om1hcFRvRW50cnko
YXR0ck5hbWUsIHJlc3VsdCk7Ci19Ci0KIHZvaWQgSFRNTFRhYmxlUGFydEVsZW1lbnQ6OnBhcnNl
TWFwcGVkQXR0cmlidXRlKEF0dHJpYnV0ZSogYXR0cikKIHsKICAgICBpZiAoYXR0ci0+bmFtZSgp
ID09IGJnY29sb3JBdHRyKQotICAgICAgICBhZGRDU1NDb2xvcihhdHRyLCBDU1NQcm9wZXJ0eUJh
Y2tncm91bmRDb2xvciwgYXR0ci0+dmFsdWUoKSk7CisgICAgICAgIGlmIChhdHRyLT52YWx1ZSgp
LmlzTnVsbCgpKQorICAgICAgICAgICAgcmVtb3ZlQ1NTUHJvcGVydHkoQ1NTUHJvcGVydHlCYWNr
Z3JvdW5kQ29sb3IpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBhZGRDU1NDb2xvcihDU1NQ
cm9wZXJ0eUJhY2tncm91bmRDb2xvciwgYXR0ci0+dmFsdWUoKSk7CiAgICAgZWxzZSBpZiAoYXR0
ci0+bmFtZSgpID09IGJhY2tncm91bmRBdHRyKSB7CiAgICAgICAgIFN0cmluZyB1cmwgPSBzdHJp
cExlYWRpbmdBbmRUcmFpbGluZ0hUTUxTcGFjZXMoYXR0ci0+dmFsdWUoKSk7CiAgICAgICAgIGlm
ICghdXJsLmlzRW1wdHkoKSkKLSAgICAgICAgICAgIGFkZENTU0ltYWdlUHJvcGVydHkoYXR0ciwg
Q1NTUHJvcGVydHlCYWNrZ3JvdW5kSW1hZ2UsIGRvY3VtZW50KCktPmNvbXBsZXRlVVJMKHVybCku
c3RyaW5nKCkpOworICAgICAgICAgICAgYWRkQ1NTSW1hZ2VQcm9wZXJ0eShDU1NQcm9wZXJ0eUJh
Y2tncm91bmRJbWFnZSwgZG9jdW1lbnQoKS0+Y29tcGxldGVVUkwodXJsKS5zdHJpbmcoKSk7Cisg
ICAgICAgIGVsc2UKKyAgICAgICAgICAgIHJlbW92ZUNTU1Byb3BlcnR5KENTU1Byb3BlcnR5QmFj
a2dyb3VuZEltYWdlKTsKICAgICB9IGVsc2UgaWYgKGF0dHItPm5hbWUoKSA9PSBib3JkZXJjb2xv
ckF0dHIpIHsKICAgICAgICAgaWYgKCFhdHRyLT52YWx1ZSgpLmlzRW1wdHkoKSkgewotICAgICAg
ICAgICAgYWRkQ1NTQ29sb3IoYXR0ciwgQ1NTUHJvcGVydHlCb3JkZXJDb2xvciwgYXR0ci0+dmFs
dWUoKSk7Ci0gICAgICAgICAgICBhZGRDU1NQcm9wZXJ0eShhdHRyLCBDU1NQcm9wZXJ0eUJvcmRl
clRvcFN0eWxlLCBDU1NWYWx1ZVNvbGlkKTsKLSAgICAgICAgICAgIGFkZENTU1Byb3BlcnR5KGF0
dHIsIENTU1Byb3BlcnR5Qm9yZGVyQm90dG9tU3R5bGUsIENTU1ZhbHVlU29saWQpOwotICAgICAg
ICAgICAgYWRkQ1NTUHJvcGVydHkoYXR0ciwgQ1NTUHJvcGVydHlCb3JkZXJMZWZ0U3R5bGUsIENT
U1ZhbHVlU29saWQpOwotICAgICAgICAgICAgYWRkQ1NTUHJvcGVydHkoYXR0ciwgQ1NTUHJvcGVy
dHlCb3JkZXJSaWdodFN0eWxlLCBDU1NWYWx1ZVNvbGlkKTsKLSAgICAgICAgfQorICAgICAgICAg
ICAgYWRkQ1NTQ29sb3IoQ1NTUHJvcGVydHlCb3JkZXJDb2xvciwgYXR0ci0+dmFsdWUoKSk7Cisg
ICAgICAgICAgICBhZGRDU1NQcm9wZXJ0eShDU1NQcm9wZXJ0eUJvcmRlclRvcFN0eWxlLCBDU1NW
YWx1ZVNvbGlkKTsKKyAgICAgICAgICAgIGFkZENTU1Byb3BlcnR5KENTU1Byb3BlcnR5Qm9yZGVy
Qm90dG9tU3R5bGUsIENTU1ZhbHVlU29saWQpOworICAgICAgICAgICAgYWRkQ1NTUHJvcGVydHko
Q1NTUHJvcGVydHlCb3JkZXJMZWZ0U3R5bGUsIENTU1ZhbHVlU29saWQpOworICAgICAgICAgICAg
YWRkQ1NTUHJvcGVydHkoQ1NTUHJvcGVydHlCb3JkZXJSaWdodFN0eWxlLCBDU1NWYWx1ZVNvbGlk
KTsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICByZW1vdmVDU1NQcm9wZXJ0aWVzKENTU1By
b3BlcnR5Qm9yZGVyQ29sb3IsIENTU1Byb3BlcnR5Qm9yZGVyVG9wU3R5bGUsIENTU1Byb3BlcnR5
Qm9yZGVyQm90dG9tU3R5bGUsIENTU1Byb3BlcnR5Qm9yZGVyTGVmdFN0eWxlLCBDU1NQcm9wZXJ0
eUJvcmRlclJpZ2h0U3R5bGUpOwogICAgIH0gZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09IHZhbGln
bkF0dHIpIHsKICAgICAgICAgaWYgKCFhdHRyLT52YWx1ZSgpLmlzRW1wdHkoKSkKLSAgICAgICAg
ICAgIGFkZENTU1Byb3BlcnR5KGF0dHIsIENTU1Byb3BlcnR5VmVydGljYWxBbGlnbiwgYXR0ci0+
dmFsdWUoKSk7CisgICAgICAgICAgICBhZGRDU1NQcm9wZXJ0eShDU1NQcm9wZXJ0eVZlcnRpY2Fs
QWxpZ24sIGF0dHItPnZhbHVlKCkpOworICAgICAgICBlbHNlCisgICAgICAgICAgICByZW1vdmVD
U1NQcm9wZXJ0eShDU1NQcm9wZXJ0eVZlcnRpY2FsQWxpZ24pOwogICAgIH0gZWxzZSBpZiAoYXR0
ci0+bmFtZSgpID09IGFsaWduQXR0cikgewogICAgICAgICBjb25zdCBBdG9taWNTdHJpbmcmIHYg
PSBhdHRyLT52YWx1ZSgpOwotICAgICAgICBpZiAoZXF1YWxJZ25vcmluZ0Nhc2UodiwgIm1pZGRs
ZSIpIHx8IGVxdWFsSWdub3JpbmdDYXNlKHYsICJjZW50ZXIiKSkKLSAgICAgICAgICAgIGFkZENT
U1Byb3BlcnR5KGF0dHIsIENTU1Byb3BlcnR5VGV4dEFsaWduLCBDU1NWYWx1ZVdlYmtpdENlbnRl
cik7CisgICAgICAgIGlmICh2LmlzTnVsbCgpKQorICAgICAgICAgICAgcmVtb3ZlQ1NTUHJvcGVy
dHkoQ1NTUHJvcGVydHlUZXh0QWxpZ24pOworICAgICAgICBlbHNlIGlmIChlcXVhbElnbm9yaW5n
Q2FzZSh2LCAibWlkZGxlIikgfHwgZXF1YWxJZ25vcmluZ0Nhc2UodiwgImNlbnRlciIpKQorICAg
ICAgICAgICAgYWRkQ1NTUHJvcGVydHkoQ1NTUHJvcGVydHlUZXh0QWxpZ24sIENTU1ZhbHVlV2Vi
a2l0Q2VudGVyKTsKICAgICAgICAgZWxzZSBpZiAoZXF1YWxJZ25vcmluZ0Nhc2UodiwgImFic21p
ZGRsZSIpKQotICAgICAgICAgICAgYWRkQ1NTUHJvcGVydHkoYXR0ciwgQ1NTUHJvcGVydHlUZXh0
QWxpZ24sIENTU1ZhbHVlQ2VudGVyKTsKKyAgICAgICAgICAgIGFkZENTU1Byb3BlcnR5KENTU1By
b3BlcnR5VGV4dEFsaWduLCBDU1NWYWx1ZUNlbnRlcik7CiAgICAgICAgIGVsc2UgaWYgKGVxdWFs
SWdub3JpbmdDYXNlKHYsICJsZWZ0IikpCi0gICAgICAgICAgICBhZGRDU1NQcm9wZXJ0eShhdHRy
LCBDU1NQcm9wZXJ0eVRleHRBbGlnbiwgQ1NTVmFsdWVXZWJraXRMZWZ0KTsKKyAgICAgICAgICAg
IGFkZENTU1Byb3BlcnR5KENTU1Byb3BlcnR5VGV4dEFsaWduLCBDU1NWYWx1ZVdlYmtpdExlZnQp
OwogICAgICAgICBlbHNlIGlmIChlcXVhbElnbm9yaW5nQ2FzZSh2LCAicmlnaHQiKSkKLSAgICAg
ICAgICAgIGFkZENTU1Byb3BlcnR5KGF0dHIsIENTU1Byb3BlcnR5VGV4dEFsaWduLCBDU1NWYWx1
ZVdlYmtpdFJpZ2h0KTsKKyAgICAgICAgICAgIGFkZENTU1Byb3BlcnR5KENTU1Byb3BlcnR5VGV4
dEFsaWduLCBDU1NWYWx1ZVdlYmtpdFJpZ2h0KTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAg
YWRkQ1NTUHJvcGVydHkoYXR0ciwgQ1NTUHJvcGVydHlUZXh0QWxpZ24sIHYpOworICAgICAgICAg
ICAgYWRkQ1NTUHJvcGVydHkoQ1NTUHJvcGVydHlUZXh0QWxpZ24sIHYpOwogICAgIH0gZWxzZSBp
ZiAoYXR0ci0+bmFtZSgpID09IGhlaWdodEF0dHIpIHsKICAgICAgICAgaWYgKCFhdHRyLT52YWx1
ZSgpLmlzRW1wdHkoKSkKLSAgICAgICAgICAgIGFkZENTU0xlbmd0aChhdHRyLCBDU1NQcm9wZXJ0
eUhlaWdodCwgYXR0ci0+dmFsdWUoKSk7CisgICAgICAgICAgICBhZGRDU1NMZW5ndGgoQ1NTUHJv
cGVydHlIZWlnaHQsIGF0dHItPnZhbHVlKCkpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBy
ZW1vdmVDU1NQcm9wZXJ0eShDU1NQcm9wZXJ0eUhlaWdodCk7CiAgICAgfSBlbHNlCiAgICAgICAg
IEhUTUxFbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpYnV0ZShhdHRyKTsKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRhYmxlUGFydEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTFRhYmxlUGFydEVsZW1lbnQuaAppbmRleCA5ZGYyZjkxLi4zMTdmMThhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUYWJsZVBhcnRFbGVtZW50LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFibGVQYXJ0RWxlbWVudC5oCkBAIC0zNyw3ICsz
Nyw2IEBAIHByb3RlY3RlZDoKICAgICB7CiAgICAgfQogCi0gICAgdmlydHVhbCBib29sIG1hcFRv
RW50cnkoY29uc3QgUXVhbGlmaWVkTmFtZSYsIE1hcHBlZEF0dHJpYnV0ZUVudHJ5JikgY29uc3Q7
CiAgICAgdmlydHVhbCB2b2lkIHBhcnNlTWFwcGVkQXR0cmlidXRlKEF0dHJpYnV0ZSopOwogfTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEFyZWFFbGVtZW50LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRBcmVhRWxlbWVudC5jcHAKaW5kZXggYjVh
YzYzMy4uZWEwNjJlZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEFy
ZWFFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUZXh0QXJlYUVsZW1l
bnQuY3BwCkBAIC0xNTEsMTEgKzE1MSwxMSBAQCB2b2lkIEhUTUxUZXh0QXJlYUVsZW1lbnQ6OnBh
cnNlTWFwcGVkQXR0cmlidXRlKEF0dHJpYnV0ZSogYXR0cikKICAgICAgICAgICAgIG1fd3JhcCA9
IHdyYXA7CiAKICAgICAgICAgICAgIGlmIChzaG91bGRXcmFwVGV4dCgpKSB7Ci0gICAgICAgICAg
ICAgICAgYWRkQ1NTUHJvcGVydHkoYXR0ciwgQ1NTUHJvcGVydHlXaGl0ZVNwYWNlLCBDU1NWYWx1
ZVByZVdyYXApOwotICAgICAgICAgICAgICAgIGFkZENTU1Byb3BlcnR5KGF0dHIsIENTU1Byb3Bl
cnR5V29yZFdyYXAsIENTU1ZhbHVlQnJlYWtXb3JkKTsKKyAgICAgICAgICAgICAgICBhZGRDU1NQ
cm9wZXJ0eShDU1NQcm9wZXJ0eVdoaXRlU3BhY2UsIENTU1ZhbHVlUHJlV3JhcCk7CisgICAgICAg
ICAgICAgICAgYWRkQ1NTUHJvcGVydHkoQ1NTUHJvcGVydHlXb3JkV3JhcCwgQ1NTVmFsdWVCcmVh
a1dvcmQpOwogICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBhZGRDU1NQcm9w
ZXJ0eShhdHRyLCBDU1NQcm9wZXJ0eVdoaXRlU3BhY2UsIENTU1ZhbHVlUHJlKTsKLSAgICAgICAg
ICAgICAgICBhZGRDU1NQcm9wZXJ0eShhdHRyLCBDU1NQcm9wZXJ0eVdvcmRXcmFwLCBDU1NWYWx1
ZU5vcm1hbCk7CisgICAgICAgICAgICAgICAgYWRkQ1NTUHJvcGVydHkoQ1NTUHJvcGVydHlXaGl0
ZVNwYWNlLCBDU1NWYWx1ZVByZSk7CisgICAgICAgICAgICAgICAgYWRkQ1NTUHJvcGVydHkoQ1NT
UHJvcGVydHlXb3JkV3JhcCwgQ1NTVmFsdWVOb3JtYWwpOwogICAgICAgICAgICAgfQogCiAgICAg
ICAgICAgICBpZiAocmVuZGVyZXIoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTFVMaXN0RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxVTGlzdEVsZW1l
bnQuY3BwCmluZGV4IDRiMTIxYWEuLjgwNzMzOTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTFVMaXN0RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
VUxpc3RFbGVtZW50LmNwcApAQCAtNDcsMjAgKzQ3LDEzIEBAIFBhc3NSZWZQdHI8SFRNTFVMaXN0
RWxlbWVudD4gSFRNTFVMaXN0RWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRh
Z05hCiAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBIVE1MVUxpc3RFbGVtZW50KHRhZ05hbWUsIGRv
Y3VtZW50KSk7CiB9CiAKLWJvb2wgSFRNTFVMaXN0RWxlbWVudDo6bWFwVG9FbnRyeShjb25zdCBR
dWFsaWZpZWROYW1lJiBhdHRyTmFtZSwgTWFwcGVkQXR0cmlidXRlRW50cnkmIHJlc3VsdCkgY29u
c3QKLXsKLSAgICBpZiAoYXR0ck5hbWUgPT0gdHlwZUF0dHIpIHsKLSAgICAgICAgcmVzdWx0ID0g
ZVVub3JkZXJlZExpc3Q7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0gICAgCi0gICAg
cmV0dXJuIEhUTUxFbGVtZW50OjptYXBUb0VudHJ5KGF0dHJOYW1lLCByZXN1bHQpOwotfQotCiB2
b2lkIEhUTUxVTGlzdEVsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmlidXRlKEF0dHJpYnV0ZSogYXR0
cikKIHsKICAgICBpZiAoYXR0ci0+bmFtZSgpID09IHR5cGVBdHRyKQotICAgICAgICBhZGRDU1NQ
cm9wZXJ0eShhdHRyLCBDU1NQcm9wZXJ0eUxpc3RTdHlsZVR5cGUsIGF0dHItPnZhbHVlKCkpOwor
ICAgICAgICBpZiAoYXR0ci0+dmFsdWUoKS5pc051bGwoKSkKKyAgICAgICAgICAgIHJlbW92ZUNT
U1Byb3BlcnR5KENTU1Byb3BlcnR5TGlzdFN0eWxlVHlwZSk7CisgICAgICAgIGVsc2UKKyAgICAg
ICAgICAgIGFkZENTU1Byb3BlcnR5KENTU1Byb3BlcnR5TGlzdFN0eWxlVHlwZSwgYXR0ci0+dmFs
dWUoKSk7CiAgICAgZWxzZQogICAgICAgICBIVE1MRWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1
dGUoYXR0cik7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxVTGlzdEVs
ZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFVMaXN0RWxlbWVudC5oCmluZGV4IGY5
MWJmMWMuLjkwZWM0YWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFVMaXN0
RWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFVMaXN0RWxlbWVudC5oCkBA
IC0zNSw3ICszNSw2IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgSFRNTFVMaXN0RWxlbWVudChj
b25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQqKTsKIAotICAgIHZpcnR1YWwgYm9vbCBtYXBU
b0VudHJ5KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBNYXBwZWRBdHRyaWJ1dGVFbnRyeSYpIGNvbnN0
OwogICAgIHZpcnR1YWwgdm9pZCBwYXJzZU1hcHBlZEF0dHJpYnV0ZShBdHRyaWJ1dGUqKTsKIH07
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFZpZGVvRWxlbWVudC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuY3BwCmluZGV4IGZlZDJmYTQu
LjI3NzhjZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFZpZGVvRWxlbWVu
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVmlkZW9FbGVtZW50LmNwcApAQCAt
MTE0LDkgKzExNCwxNSBAQCB2b2lkIEhUTUxWaWRlb0VsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmli
dXRlKEF0dHJpYnV0ZSogYXR0cikKICAgICAgICAgfQogI2VuZGlmCiAgICAgfSBlbHNlIGlmIChh
dHRyTmFtZSA9PSB3aWR0aEF0dHIpCi0gICAgICAgIGFkZENTU0xlbmd0aChhdHRyLCBDU1NQcm9w
ZXJ0eVdpZHRoLCBhdHRyLT52YWx1ZSgpKTsKKyAgICAgICAgaWYgKGF0dHItPnZhbHVlKCkuaXNO
dWxsKCkpCisgICAgICAgICAgICByZW1vdmVDU1NQcm9wZXJ0eShDU1NQcm9wZXJ0eVdpZHRoKTsK
KyAgICAgICAgZWxzZQorICAgICAgICAgICAgYWRkQ1NTTGVuZ3RoKENTU1Byb3BlcnR5V2lkdGgs
IGF0dHItPnZhbHVlKCkpOwogICAgIGVsc2UgaWYgKGF0dHJOYW1lID09IGhlaWdodEF0dHIpCi0g
ICAgICAgIGFkZENTU0xlbmd0aChhdHRyLCBDU1NQcm9wZXJ0eUhlaWdodCwgYXR0ci0+dmFsdWUo
KSk7CisgICAgICAgIGlmIChhdHRyLT52YWx1ZSgpLmlzTnVsbCgpKQorICAgICAgICAgICAgcmVt
b3ZlQ1NTUHJvcGVydHkoQ1NTUHJvcGVydHlIZWlnaHQpOworICAgICAgICBlbHNlCisgICAgICAg
ICAgICBhZGRDU1NMZW5ndGgoQ1NTUHJvcGVydHlIZWlnaHQsIGF0dHItPnZhbHVlKCkpOwogICAg
IGVsc2UKICAgICAgICAgSFRNTE1lZGlhRWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUoYXR0
cik7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ1NT
QWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNTU0FnZW50LmNw
cAppbmRleCBiMWE1OWEzLi4zNjBlZDYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yQ1NTQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JDU1NBZ2VudC5jcHAKQEAgLTcxNCw5ICs3MTQsMTAgQEAgUGFzc1JlZlB0cjxJ
bnNwZWN0b3JBcnJheT4gSW5zcGVjdG9yQ1NTQWdlbnQ6OmJ1aWxkQXJyYXlGb3JSdWxlTGlzdChD
U1NSdWxlTGlzdCoKICAgICByZXR1cm4gcmVzdWx0LnJlbGVhc2UoKTsKIH0KIAotUGFzc1JlZlB0
cjxJbnNwZWN0b3JBcnJheT4gSW5zcGVjdG9yQ1NTQWdlbnQ6OmJ1aWxkQXJyYXlGb3JBdHRyaWJ1
dGVTdHlsZXMoRWxlbWVudCogZWxlbWVudCkKK1Bhc3NSZWZQdHI8SW5zcGVjdG9yQXJyYXk+IElu
c3BlY3RvckNTU0FnZW50OjpidWlsZEFycmF5Rm9yQXR0cmlidXRlU3R5bGVzKEVsZW1lbnQqKQog
ewogICAgIFJlZlB0cjxJbnNwZWN0b3JBcnJheT4gYXR0clN0eWxlcyA9IEluc3BlY3RvckFycmF5
OjpjcmVhdGUoKTsKKyNpZiAwCiAgICAgTmFtZWROb2RlTWFwKiBhdHRyaWJ1dGVzID0gZWxlbWVu
dC0+YXR0cmlidXRlcygpOwogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGF0dHJpYnV0ZXMgJiYg
aSA8IGF0dHJpYnV0ZXMtPmxlbmd0aCgpOyArK2kpIHsKICAgICAgICAgQXR0cmlidXRlKiBhdHRy
aWJ1dGUgPSBhdHRyaWJ1dGVzLT5hdHRyaWJ1dGVJdGVtKGkpOwpAQCAtNzI5LDcgKzczMCw3IEBA
IFBhc3NSZWZQdHI8SW5zcGVjdG9yQXJyYXk+IEluc3BlY3RvckNTU0FnZW50OjpidWlsZEFycmF5
Rm9yQXR0cmlidXRlU3R5bGVzKEVsZW1lCiAgICAgICAgIGF0dHJTdHlsZU9iamVjdC0+c2V0T2Jq
ZWN0KCJzdHlsZSIsIGluc3BlY3RvclN0eWxlLT5idWlsZE9iamVjdEZvclN0eWxlKCkpOwogICAg
ICAgICBhdHRyU3R5bGVzLT5wdXNoT2JqZWN0KGF0dHJTdHlsZU9iamVjdC5yZWxlYXNlKCkpOwog
ICAgIH0KLQorI2VuZGlmCiAgICAgcmV0dXJuIGF0dHJTdHlsZXMucmVsZWFzZSgpOwogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MRWxlbWVudC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MRWxlbWVudC5jcHAKaW5kZXggNjA4ODgxMC4uN2RhY2Y2
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTEVsZW1lbnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxFbGVtZW50LmNwcApAQCAtNDgsNDEgKzQ4
LDI5IEBAIFBhc3NSZWZQdHI8TWF0aE1MRWxlbWVudD4gTWF0aE1MRWxlbWVudDo6Y3JlYXRlKGNv
bnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvCiAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBN
YXRoTUxFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KSk7CiB9CiAKLWJvb2wgTWF0aE1MRWxlbWVu
dDo6bWFwVG9FbnRyeShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSwgTWFwcGVkQXR0cmli
dXRlRW50cnkmIHJlc3VsdCkgY29uc3QKLXsKLSAgICBpZiAoYXR0ck5hbWUgPT0gbWF0aGNvbG9y
QXR0ciB8fCBhdHRyTmFtZSA9PSBtYXRoYmFja2dyb3VuZEF0dHIKLSAgICAgICAgfHwgYXR0ck5h
bWUgPT0gY29sb3JBdHRyIHx8IGF0dHJOYW1lID09IGJhY2tncm91bmRBdHRyCi0gICAgICAgIHx8
IGF0dHJOYW1lID09IGZvbnRzaXplQXR0ciB8fCBhdHRyTmFtZSA9PSBmb250c3R5bGVBdHRyCi0g
ICAgICAgIHx8IGF0dHJOYW1lID09IGZvbnR3ZWlnaHRBdHRyIHx8IGF0dHJOYW1lID09IGZvbnRm
YW1pbHlBdHRyKSB7Ci0gICAgICAgIHJlc3VsdCA9IGVNYXRoTUw7Ci0gICAgICAgIHJldHVybiBm
YWxzZTsKLSAgICB9Ci0gICAgcmV0dXJuIFN0eWxlZEVsZW1lbnQ6Om1hcFRvRW50cnkoYXR0ck5h
bWUsIHJlc3VsdCk7Ci19Ci0KIHZvaWQgTWF0aE1MRWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1
dGUoQXR0cmlidXRlKiBhdHRyKQogewogICAgIGlmIChhdHRyLT5uYW1lKCkgPT0gbWF0aGJhY2tn
cm91bmRBdHRyKQotICAgICAgICBhZGRDU1NQcm9wZXJ0eShhdHRyLCBDU1NQcm9wZXJ0eUJhY2tn
cm91bmRDb2xvciwgYXR0ci0+dmFsdWUoKSk7CisgICAgICAgIGFkZENTU1Byb3BlcnR5KENTU1By
b3BlcnR5QmFja2dyb3VuZENvbG9yLCBhdHRyLT52YWx1ZSgpKTsKICAgICBlbHNlIGlmIChhdHRy
LT5uYW1lKCkgPT0gbWF0aHNpemVBdHRyKSB7CiAgICAgICAgIC8vIFRoZSBmb2xsb3dpbmcgdGhy
ZWUgdmFsdWVzIG9mIG1hdGhzaXplIGFyZSBoYW5kbGVkIGluIFdlYkNvcmUvY3NzL21hdGhtbC5j
c3MKICAgICAgICAgaWYgKGF0dHItPnZhbHVlKCkgIT0gIm5vcm1hbCIgJiYgYXR0ci0+dmFsdWUo
KSAhPSAic21hbGwiICYmIGF0dHItPnZhbHVlKCkgIT0gImJpZyIpCi0gICAgICAgICAgICBhZGRD
U1NQcm9wZXJ0eShhdHRyLCBDU1NQcm9wZXJ0eUZvbnRTaXplLCBhdHRyLT52YWx1ZSgpKTsKKyAg
ICAgICAgICAgIGFkZENTU1Byb3BlcnR5KENTU1Byb3BlcnR5Rm9udFNpemUsIGF0dHItPnZhbHVl
KCkpOwogICAgIH0gZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09IG1hdGhjb2xvckF0dHIpCi0gICAg
ICAgIGFkZENTU1Byb3BlcnR5KGF0dHIsIENTU1Byb3BlcnR5Q29sb3IsIGF0dHItPnZhbHVlKCkp
OworICAgICAgICBhZGRDU1NQcm9wZXJ0eShDU1NQcm9wZXJ0eUNvbG9yLCBhdHRyLT52YWx1ZSgp
KTsKICAgICAvLyBGSVhNRTogZGVwcmVjYXRlZCBhdHRyaWJ1dGVzIHRoYXQgc2hvdWxkIGxvb3Nl
IGluIGEgY29uZmxpY3Qgd2l0aCBhIG5vbiBkZXByZWNhdGVkIGF0dHJpYnV0ZQogICAgIGVsc2Ug
aWYgKGF0dHItPm5hbWUoKSA9PSBmb250c2l6ZUF0dHIpCi0gICAgICAgIGFkZENTU1Byb3BlcnR5
KGF0dHIsIENTU1Byb3BlcnR5Rm9udFNpemUsIGF0dHItPnZhbHVlKCkpOworICAgICAgICBhZGRD
U1NQcm9wZXJ0eShDU1NQcm9wZXJ0eUZvbnRTaXplLCBhdHRyLT52YWx1ZSgpKTsKICAgICBlbHNl
IGlmIChhdHRyLT5uYW1lKCkgPT0gYmFja2dyb3VuZEF0dHIpCi0gICAgICAgIGFkZENTU1Byb3Bl
cnR5KGF0dHIsIENTU1Byb3BlcnR5QmFja2dyb3VuZENvbG9yLCBhdHRyLT52YWx1ZSgpKTsKKyAg
ICAgICAgYWRkQ1NTUHJvcGVydHkoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQ29sb3IsIGF0dHItPnZh
bHVlKCkpOwogICAgIGVsc2UgaWYgKGF0dHItPm5hbWUoKSA9PSBjb2xvckF0dHIpCi0gICAgICAg
IGFkZENTU1Byb3BlcnR5KGF0dHIsIENTU1Byb3BlcnR5Q29sb3IsIGF0dHItPnZhbHVlKCkpOwor
ICAgICAgICBhZGRDU1NQcm9wZXJ0eShDU1NQcm9wZXJ0eUNvbG9yLCBhdHRyLT52YWx1ZSgpKTsK
ICAgICBlbHNlIGlmIChhdHRyLT5uYW1lKCkgPT0gZm9udHN0eWxlQXR0cikKLSAgICAgICAgYWRk
Q1NTUHJvcGVydHkoYXR0ciwgQ1NTUHJvcGVydHlGb250U3R5bGUsIGF0dHItPnZhbHVlKCkpOwor
ICAgICAgICBhZGRDU1NQcm9wZXJ0eShDU1NQcm9wZXJ0eUZvbnRTdHlsZSwgYXR0ci0+dmFsdWUo
KSk7CiAgICAgZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09IGZvbnR3ZWlnaHRBdHRyKQotICAgICAg
ICBhZGRDU1NQcm9wZXJ0eShhdHRyLCBDU1NQcm9wZXJ0eUZvbnRXZWlnaHQsIGF0dHItPnZhbHVl
KCkpOworICAgICAgICBhZGRDU1NQcm9wZXJ0eShDU1NQcm9wZXJ0eUZvbnRXZWlnaHQsIGF0dHIt
PnZhbHVlKCkpOwogICAgIGVsc2UgaWYgKGF0dHItPm5hbWUoKSA9PSBmb250ZmFtaWx5QXR0cikK
LSAgICAgICAgYWRkQ1NTUHJvcGVydHkoYXR0ciwgQ1NTUHJvcGVydHlGb250RmFtaWx5LCBhdHRy
LT52YWx1ZSgpKTsKKyAgICAgICAgYWRkQ1NTUHJvcGVydHkoQ1NTUHJvcGVydHlGb250RmFtaWx5
LCBhdHRyLT52YWx1ZSgpKTsKICAgICBlbHNlCiAgICAgICAgIFN0eWxlZEVsZW1lbnQ6OnBhcnNl
TWFwcGVkQXR0cmlidXRlKGF0dHIpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbWF0
aG1sL01hdGhNTEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxFbGVtZW50
LmgKaW5kZXggNzY3OGYyNi4uZWY0NzQ0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbWF0
aG1sL01hdGhNTEVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MRWxl
bWVudC5oCkBAIC00Miw3ICs0Miw2IEBAIHByb3RlY3RlZDoKIAogcHJpdmF0ZTogICAgCiAgICAg
dmlydHVhbCBib29sIGlzTWF0aE1MRWxlbWVudCgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KLSAg
ICB2aXJ0dWFsIGJvb2wgbWFwVG9FbnRyeShjb25zdCBRdWFsaWZpZWROYW1lJiwgTWFwcGVkQXR0
cmlidXRlRW50cnkmKSBjb25zdDsKICAgICB2aXJ0dWFsIHZvaWQgcGFyc2VNYXBwZWRBdHRyaWJ1
dGUoQXR0cmlidXRlKik7CiB9OwogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0ltYWdlRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHSW1hZ2VFbGVtZW50
LmNwcAppbmRleCA0NDdkNzBmLi5iYjc0OWQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHSW1hZ2VFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHSW1hZ2VF
bGVtZW50LmNwcApAQCAtMTA1LDEwICsxMDUsMTAgQEAgdm9pZCBTVkdJbWFnZUVsZW1lbnQ6OnBh
cnNlTWFwcGVkQXR0cmlidXRlKEF0dHJpYnV0ZSogYXR0cikKICAgICAgICAgU1ZHUHJlc2VydmVB
c3BlY3RSYXRpbzo6cGFyc2VQcmVzZXJ2ZUFzcGVjdFJhdGlvKHRoaXMsIGF0dHItPnZhbHVlKCkp
OwogICAgIGVsc2UgaWYgKGF0dHItPm5hbWUoKSA9PSBTVkdOYW1lczo6d2lkdGhBdHRyKSB7CiAg
ICAgICAgIHNldFdpZHRoQmFzZVZhbHVlKFNWR0xlbmd0aDo6Y29uc3RydWN0KExlbmd0aE1vZGVX
aWR0aCwgYXR0ci0+dmFsdWUoKSwgcGFyc2VFcnJvciwgRm9yYmlkTmVnYXRpdmVMZW5ndGhzKSk7
Ci0gICAgICAgIGFkZENTU1Byb3BlcnR5KGF0dHIsIENTU1Byb3BlcnR5V2lkdGgsIGF0dHItPnZh
bHVlKCkpOworICAgICAgICBhZGRDU1NQcm9wZXJ0eShDU1NQcm9wZXJ0eVdpZHRoLCBhdHRyLT52
YWx1ZSgpKTsKICAgICB9IGVsc2UgaWYgKGF0dHItPm5hbWUoKSA9PSBTVkdOYW1lczo6aGVpZ2h0
QXR0cikgewogICAgICAgICBzZXRIZWlnaHRCYXNlVmFsdWUoU1ZHTGVuZ3RoOjpjb25zdHJ1Y3Qo
TGVuZ3RoTW9kZUhlaWdodCwgYXR0ci0+dmFsdWUoKSwgcGFyc2VFcnJvciwgRm9yYmlkTmVnYXRp
dmVMZW5ndGhzKSk7Ci0gICAgICAgIGFkZENTU1Byb3BlcnR5KGF0dHIsIENTU1Byb3BlcnR5SGVp
Z2h0LCBhdHRyLT52YWx1ZSgpKTsKKyAgICAgICAgYWRkQ1NTUHJvcGVydHkoQ1NTUHJvcGVydHlI
ZWlnaHQsIGF0dHItPnZhbHVlKCkpOwogICAgIH0gZWxzZSBpZiAoU1ZHVGVzdHM6OnBhcnNlTWFw
cGVkQXR0cmlidXRlKGF0dHIpCiAgICAgICAgICAgICAgfHwgU1ZHTGFuZ1NwYWNlOjpwYXJzZU1h
cHBlZEF0dHJpYnV0ZShhdHRyKQogICAgICAgICAgICAgIHx8IFNWR0V4dGVybmFsUmVzb3VyY2Vz
UmVxdWlyZWQ6OnBhcnNlTWFwcGVkQXR0cmlidXRlKGF0dHIpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHU3R5bGVkRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
U3R5bGVkRWxlbWVudC5jcHAKaW5kZXggMDgzNDlmZi4uNjk3YmZlNiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR1N0eWxlZEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdTdHlsZWRFbGVtZW50LmNwcApAQCAtMjkyLDIyICsyOTIsMTEgQEAgYm9vbCBTVkdT
dHlsZWRFbGVtZW50Ojppc0FuaW1hdGFibGVDU1NQcm9wZXJ0eShjb25zdCBRdWFsaWZpZWROYW1l
JiBhdHRyTmFtZSkKICAgICByZXR1cm4gY3NzUHJvcGVydHlUb1R5cGVNYXAoKS5jb250YWlucyhh
dHRyTmFtZSk7CiB9CiAKLWJvb2wgU1ZHU3R5bGVkRWxlbWVudDo6bWFwVG9FbnRyeShjb25zdCBR
dWFsaWZpZWROYW1lJiBhdHRyTmFtZSwgTWFwcGVkQXR0cmlidXRlRW50cnkmIHJlc3VsdCkgY29u
c3QKLXsKLSAgICBpZiAoU1ZHU3R5bGVkRWxlbWVudDo6Y3NzUHJvcGVydHlJZEZvclNWR0F0dHJp
YnV0ZU5hbWUoYXR0ck5hbWUpID4gMCkgewotICAgICAgICByZXN1bHQgPSBlU1ZHOwotICAgICAg
ICByZXR1cm4gZmFsc2U7Ci0gICAgfQotICAgIHJldHVybiBTVkdFbGVtZW50OjptYXBUb0VudHJ5
KGF0dHJOYW1lLCByZXN1bHQpOwotfQotCiB2b2lkIFNWR1N0eWxlZEVsZW1lbnQ6OnBhcnNlTWFw
cGVkQXR0cmlidXRlKEF0dHJpYnV0ZSogYXR0cikKIHsKLSAgICAvLyBOT1RFOiBBbnkgc3ViY2xh
c3Mgd2hpY2ggb3ZlcnJpZGVzIHBhcnNlTWFwcGVkQXR0cmlidXRlIGZvciBhIHByb3BlcnR5IGhh
bmRsZWQgYnkKLSAgICAvLyBjc3NQcm9wZXJ0eUlkRm9yU1ZHQXR0cmlidXRlTmFtZSB3aWxsIGFs
c28gaGF2ZSB0byBvdmVycmlkZSBtYXBUb0VudHJ5IHRvIGRpc2FibGUgdGhlIGRlZmF1bHQgZVNW
RyBtYXBwaW5nCiAgICAgaW50IHByb3BJZCA9IFNWR1N0eWxlZEVsZW1lbnQ6OmNzc1Byb3BlcnR5
SWRGb3JTVkdBdHRyaWJ1dGVOYW1lKGF0dHItPm5hbWUoKSk7CiAgICAgaWYgKHByb3BJZCA+IDAp
IHsKLSAgICAgICAgYWRkQ1NTUHJvcGVydHkoYXR0ciwgcHJvcElkLCBhdHRyLT52YWx1ZSgpKTsK
KyAgICAgICAgYWRkQ1NTUHJvcGVydHkocHJvcElkLCBhdHRyLT52YWx1ZSgpKTsKICAgICAgICAg
c2V0TmVlZHNTdHlsZVJlY2FsYygpOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtNDIyLDIy
ICs0MTEsMTQgQEAgUGFzc1JlZlB0cjxDU1NWYWx1ZT4gU1ZHU3R5bGVkRWxlbWVudDo6Z2V0UHJl
c2VudGF0aW9uQXR0cmlidXRlKGNvbnN0IFN0cmluZyYgbmEKIAogICAgIFF1YWxpZmllZE5hbWUg
YXR0cmlidXRlTmFtZShudWxsQXRvbSwgbmFtZSwgbnVsbEF0b20pOwogICAgIEF0dHJpYnV0ZSog
YXR0ciA9IGF0dHJpYnV0ZU1hcCgpLT5nZXRBdHRyaWJ1dGVJdGVtKGF0dHJpYnV0ZU5hbWUpOwot
ICAgIGlmICghYXR0ciB8fCAhYXR0ci0+aXNNYXBwZWRBdHRyaWJ1dGUoKSB8fCAhYXR0ci0+ZGVj
bCgpKQorICAgIGlmICghYXR0ciB8fCAhYXR0ci0+aXNNYXBwZWRBdHRyaWJ1dGUoKSkKICAgICAg
ICAgcmV0dXJuIDA7CiAKLSAgICBBdHRyaWJ1dGUqIGNzc1NWR0F0dHIgPSBhdHRyOwotICAgIC8v
IFRoaXMgZnVuY3Rpb24gcmV0dXJucyBhIHBvaW50ZXIgdG8gYSBDU1NWYWx1ZSB3aGljaCBjYW4g
YmUgbXV0YXRlZCBmcm9tIEphdmFTY3JpcHQuCi0gICAgLy8gSWYgdGhlIGFzc29jaWF0ZWQgTWFw
cGVkQXR0cmlidXRlIHVzZXMgdGhlIHNhbWUgQ1NTTWFwcGVkQXR0cmlidXRlRGVjbGFyYXRpb24K
LSAgICAvLyBhcyBTdHlsZWRFbGVtZW50J3MgbWFwcGVkQXR0cmlidXRlRGVjbHMgY2FjaGUsIGNy
ZWF0ZSBhIG5ldyBDU1NNYXBwZWRBdHRyaWJ1dGVEZWNsYXJhdGlvbgotICAgIC8vIGJlZm9yZSBy
ZXR1cm5pbmcgc28gdGhhdCBhbnkgbW9kaWZpY2F0aW9ucyB0byB0aGUgQ1NTVmFsdWUgd2lsbCBu
b3QgYWZmZWN0IG90aGVyIGF0dHJpYnV0ZXMuCi0gICAgTWFwcGVkQXR0cmlidXRlRW50cnkgZW50
cnk7Ci0gICAgbWFwVG9FbnRyeShhdHRyaWJ1dGVOYW1lLCBlbnRyeSk7Ci0gICAgaWYgKGdldE1h
cHBlZEF0dHJpYnV0ZURlY2woZW50cnksIGNzc1NWR0F0dHIpID09IGNzc1NWR0F0dHItPmRlY2wo
KSkgewotICAgICAgICBjc3NTVkdBdHRyLT5zZXREZWNsKDApOwotICAgICAgICBpbnQgcHJvcElk
ID0gU1ZHU3R5bGVkRWxlbWVudDo6Y3NzUHJvcGVydHlJZEZvclNWR0F0dHJpYnV0ZU5hbWUoY3Nz
U1ZHQXR0ci0+bmFtZSgpKTsKLSAgICAgICAgYWRkQ1NTUHJvcGVydHkoY3NzU1ZHQXR0ciwgcHJv
cElkLCBjc3NTVkdBdHRyLT52YWx1ZSgpKTsKLSAgICB9Ci0gICAgcmV0dXJuIGNzc1NWR0F0dHIt
PmRlY2woKS0+Z2V0UHJvcGVydHlDU1NWYWx1ZShuYW1lKTsKKyAgICBSZWZQdHI8Q1NTTWFwcGVk
QXR0cmlidXRlRGVjbGFyYXRpb24+IHN0eWxlID0gQ1NTTWFwcGVkQXR0cmlidXRlRGVjbGFyYXRp
b246OmNyZWF0ZSgpOworCisgICAgaW50IHByb3BJZCA9IFNWR1N0eWxlZEVsZW1lbnQ6OmNzc1By
b3BlcnR5SWRGb3JTVkdBdHRyaWJ1dGVOYW1lKGF0dHItPm5hbWUoKSk7CisgICAgc3R5bGUtPnNl
dE1hcHBlZFByb3BlcnR5KHRoaXMsIHByb3BJZCwgYXR0ci0+dmFsdWUoKSk7CisgICAgcmV0dXJu
IHN0YXRpY19jYXN0PENTU1N0eWxlRGVjbGFyYXRpb24qPihzdHlsZS5nZXQoKSktPmdldFByb3Bl
cnR5Q1NTVmFsdWUobmFtZSk7CiB9CiAKIGJvb2wgU1ZHU3R5bGVkRWxlbWVudDo6aW5zdGFuY2VV
cGRhdGVzQmxvY2tlZCgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
U3R5bGVkRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1N0eWxlZEVsZW1lbnQuaApp
bmRleCA3NTc3MTUxLi5hNDgyNzYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
U3R5bGVkRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTdHlsZWRFbGVtZW50
LmgKQEAgLTY1LDcgKzY1LDYgQEAgcHJvdGVjdGVkOgogICAgIFNWR1N0eWxlZEVsZW1lbnQoY29u
c3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50KiwgQ29uc3RydWN0aW9uVHlwZSA9IENyZWF0ZVNW
R0VsZW1lbnQpOwogICAgIHZpcnR1YWwgYm9vbCByZW5kZXJlcklzTmVlZGVkKGNvbnN0IE5vZGVS
ZW5kZXJpbmdDb250ZXh0Jik7CiAKLSAgICB2aXJ0dWFsIGJvb2wgbWFwVG9FbnRyeShjb25zdCBR
dWFsaWZpZWROYW1lJiwgTWFwcGVkQXR0cmlidXRlRW50cnkmKSBjb25zdDsKICAgICB2aXJ0dWFs
IHZvaWQgcGFyc2VNYXBwZWRBdHRyaWJ1dGUoQXR0cmlidXRlKik7CiAgICAgdmlydHVhbCB2b2lk
IHN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGV4dENvbnRlbnRFbGVtZW50LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdUZXh0Q29udGVudEVsZW1lbnQuY3BwCmluZGV4IGZiYTY3ODAuLmZhYmI3
OTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUZXh0Q29udGVudEVsZW1lbnQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUZXh0Q29udGVudEVsZW1lbnQuY3BwCkBA
IC0yNDcsOSArMjQ3LDkgQEAgdm9pZCBTVkdUZXh0Q29udGVudEVsZW1lbnQ6OnBhcnNlTWFwcGVk
QXR0cmlidXRlKEF0dHJpYnV0ZSogYXR0cikKICAgICAgICAgICAgIERFRklORV9TVEFUSUNfTE9D
QUwoY29uc3QgQXRvbWljU3RyaW5nLCBwcmVzZXJ2ZVN0cmluZywgKCJwcmVzZXJ2ZSIpKTsKIAog
ICAgICAgICAgICAgaWYgKGF0dHItPnZhbHVlKCkgPT0gcHJlc2VydmVTdHJpbmcpCi0gICAgICAg
ICAgICAgICAgYWRkQ1NTUHJvcGVydHkoYXR0ciwgQ1NTUHJvcGVydHlXaGl0ZVNwYWNlLCBDU1NW
YWx1ZVByZSk7CisgICAgICAgICAgICAgICAgYWRkQ1NTUHJvcGVydHkoQ1NTUHJvcGVydHlXaGl0
ZVNwYWNlLCBDU1NWYWx1ZVByZSk7CiAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAg
YWRkQ1NTUHJvcGVydHkoYXR0ciwgQ1NTUHJvcGVydHlXaGl0ZVNwYWNlLCBDU1NWYWx1ZU5vd3Jh
cCk7CisgICAgICAgICAgICAgICAgYWRkQ1NTUHJvcGVydHkoQ1NTUHJvcGVydHlXaGl0ZVNwYWNl
LCBDU1NWYWx1ZU5vd3JhcCk7CiAgICAgICAgIH0KICAgICB9IGVsc2UKICAgICAgICAgQVNTRVJU
X05PVF9SRUFDSEVEKCk7Cg==
</data>
<flag name="commit-queue"
          id="125525"
          type_id="3"
          status="-"
          setter="webkit.review.bot"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>125444</attachid>
            <date>2012-02-03 16:14:32 -0800</date>
            <delta_ts>2012-02-03 16:16:22 -0800</delta_ts>
            <desc>Proposed patch</desc>
            <filename>bug-77204.diff</filename>
            <type>text/plain</type>
            <size>98304</size>
            <attacher name="Andreas Kling">kling</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCAwYmYyMjE3Li44NWY4ZTMxIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTItMDIt
MDMgIEFuZHJlYXMgS2xpbmcgIDxhd2Vzb21la2xpbmdAYXBwbGUuY29tPgorCisgICAgICAgIEtp
bGwgcGVyLUF0dHJpYnV0ZSBzdHlsZSBkZWNsYXJhdGlvbnMuCisgICAgICAgIDxodHRwOi8vd2Vi
a2l0Lm9yZy9iLzc3MjA0PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIFJlYmFzZWxpbmVkIDMgaW5zcGVjdG9yIHRlc3RzIHNpbmNlIGF0dHJpYnV0ZSBz
dHlsZXMgYXJlIG5vIGxvbmdlciBzaG93biBwZXItYXR0cmlidXRlLgorCisgICAgICAgICogaW5z
cGVjdG9yL2VsZW1lbnRzL2VsZW1lbnRzLXBhbmVsLXN0eWxlcy1leHBlY3RlZC50eHQ6CisgICAg
ICAgICogaW5zcGVjdG9yL3N0eWxlcy9zdHlsZXMtY29tcHV0ZWQtdHJhY2UtZXhwZWN0ZWQudHh0
OgorICAgICAgICAqIGluc3BlY3Rvci9zdHlsZXMvc3R5bGVzLW5ldy1BUEktZXhwZWN0ZWQudHh0
OgorCiAyMDEyLTAyLTAzICBNaWhuZWEgT3ZpZGVuaWUgIDxtaWhuZWFAYWRvYmUuY29tPgogCiAg
ICAgICAgIENyYXNoIGluIFJlbmRlckZsb3dUaHJlYWQ6OnNldFJlZ2lvbkJveGVzUmVnaW9uU3R5
bGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9lbGVtZW50cy9lbGVtZW50cy1w
YW5lbC1zdHlsZXMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2VsZW1lbnRz
L2VsZW1lbnRzLXBhbmVsLXN0eWxlcy1leHBlY3RlZC50eHQKaW5kZXggODk3OTgzZi4uNDQzMmY1
OCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2VsZW1lbnRzL2VsZW1lbnRzLXBh
bmVsLXN0eWxlcy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2VsZW1l
bnRzL2VsZW1lbnRzLXBhbmVsLXN0eWxlcy1leHBlY3RlZC50eHQKQEAgLTMyLDcgKzMyLDcgQEAg
bWFyZ2luLXJpZ2h0OiAwcHg7CiBtYXJnaW4tdG9wOiAxMHB4OwogICAgIC5mb28gLSAxMHB4IGVs
ZW1lbnRzLXBhbmVsLXN0eWxlcy5jc3M6MTQKIHRleHQtYWxpZ246IC13ZWJraXQtbGVmdDsKLSAg
ICBkaXZbYWxpZ249bGVmdF0gLSAtd2Via2l0LWxlZnQgCisgICAgZGl2W10gLSAtd2Via2l0LWxl
ZnQgCiAKIFtleHBhbmRlZF0gCiBlbGVtZW50LnN0eWxlICB7ICgpCkBAIC02Nyw3ICs2Nyw3IEBA
IGJvcmRlci1yYWRpdXM6IDVweDsKIC8tLSBvdmVybG9hZGVkIC0tLyBmb250LXN0eWxlOiBub3Jt
YWwgIWltcG9ydGFudDsKIAogW2V4cGFuZGVkXSAKLWRpdlthbGlnbj1sZWZ0XSAgeyAoKQorZGl2
W10gIHsgKCkKIHRleHQtYWxpZ246IC13ZWJraXQtbGVmdDsKIAogW2V4cGFuZGVkXSAKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9zdHlsZXMvc3R5bGVzLWNvbXB1dGVkLXRyYWNl
LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9zdHlsZXMvc3R5bGVzLWNvbXB1
dGVkLXRyYWNlLWV4cGVjdGVkLnR4dAppbmRleCA0ZmE1MTVkLi5lNDllMmY3IDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9pbnNwZWN0b3Ivc3R5bGVzL3N0eWxlcy1jb21wdXRlZC10cmFjZS1leHBl
Y3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3N0eWxlcy9zdHlsZXMtY29tcHV0
ZWQtdHJhY2UtZXhwZWN0ZWQudHh0CkBAIC01Miw3ICs1Miw3IEBAIGVsZW1lbnQuc3R5bGUgIHsg
KCkKIAogPT09PT09PT0gTWF0Y2hlZCBDU1MgUnVsZXMgPT09PT09PT0KIFtleHBhbmRlZF0gCi1i
dXR0b25baGlkZGVuXSAgeyAoKQorYnV0dG9uW10gIHsgKCkKIGRpc3BsYXk6IG5vbmU7CiAKIApk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3N0eWxlcy9zdHlsZXMtbmV3LUFQSS1l
eHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3Ivc3R5bGVzL3N0eWxlcy1uZXctQVBJ
LWV4cGVjdGVkLnR4dAppbmRleCAwZWNmNWMzLi4zMWZmNGQwIDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9pbnNwZWN0b3Ivc3R5bGVzL3N0eWxlcy1uZXctQVBJLWV4cGVjdGVkLnR4dAorKysgYi9M
YXlvdXRUZXN0cy9pbnNwZWN0b3Ivc3R5bGVzL3N0eWxlcy1uZXctQVBJLWV4cGVjdGVkLnR4dApA
QCAtOTEsNyArOTEsNyBAQCByYXcgc3R5bGUKIFsnYmFja2dyb3VuZC1pbWFnZSc6J3VybChiYXIu
cG5nKSddIEBbMzMtNjNdIGFjdGl2ZQogCiA9PT0gQXR0cmlidXRlIHN0eWxlcyBmb3IgdGFibGUg
PT09Ci1BdHRyaWJ1dGU6IHdpZHRoCitBdHRyaWJ1dGU6IAogCiBzdHlsZQogcmF3IHN0eWxlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFu
Z2VMb2cKaW5kZXggODgzMDIxYy4uOGUwZGI3NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
Q2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwMSBA
QAorMjAxMi0wMi0wMyAgQW5kcmVhcyBLbGluZyAgPGF3ZXNvbWVrbGluZ0BhcHBsZS5jb20+CisK
KyAgICAgICAgS2lsbCBwZXItQXR0cmlidXRlIHN0eWxlIGRlY2xhcmF0aW9ucy4KKyAgICAgICAg
PGh0dHA6Ly93ZWJraXQub3JnL2IvNzcyMDQ+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgVEw7RFIgc3VtbWFyeTogUmVtb3ZlIHRoZSBwZXItQXR0cmli
dXRlIHN0eWxlIGRlY2xhcmF0aW9ucyBhbmQgcmVwbGFjZSB0aGVtIGJ5IGEgc2luZ2xlCisgICAg
ICAgIHN0eWxlIGRlY2xhcmF0aW9uIG9uIFN0eWxlZEVsZW1lbnQgdGhhdCBhY3RzIGFzIGEgc2Vj
b25kYXJ5IGlubGluZSBzdHlsZS4KKworICAgICAgICBUaGUgcHJldmlvdXMgZGVzaWduIHdhcyBj
b25jZWl2ZWQgaW4gdGhlIEFnZSBvZiB0aGUgT2xkIFdlYih0bSkgd2hlcmUgdGhlIG1ham9yaXR5
IG9mCisgICAgICAgIGVsZW1lbnQgc3R5bGluZyB3YXMgYWNjb21wbGlzaGVkIHZpYSBhdHRyaWJ1
dGVzLiBOb3dhZGF5cywgQ1NTIGlzIGEgbXVjaCBiZXR0ZXIgdG9vbCBmb3IKKyAgICAgICAgdGhp
cyBhbmQgd2Ugc2hvdWxkIG9wdGltaXplIGFyb3VuZCB0aGF0IGluc3RlYWQuCisKKyAgICAgICAg
U3R5bGVkRWxlbWVudHMgbm93IGhhdmUgYW4gYXR0cmlidXRlU3R5bGUoKSB3aGljaCBjb250YWlu
cyBhbGwgdGhlIHN0eWxpbmcgZnJvbSBhdHRyaWJ1dGVzLgorICAgICAgICBwYXJzZU1hcHBlZEF0
dHJpYnV0ZSgpIGlzIHJlc3BvbnNpYmxlIGZvciBhZGRpbmcvcmVtb3ZpbmcgcHJvcGVydGllcyB0
byB0aGUgYXR0cmlidXRlU3R5bGUKKyAgICAgICAgYXMgdGhlIGNvcnJlc3BvbmRpbmcgYXR0cmli
dXRlcyBjb21lIGluL291dCBvZiB0aGUgZWxlbWVudC4KKworICAgICAgICBFYWNoIEF0dHJpYnV0
ZSBpbnN0YW5jZSBzaHJpbmtzIGJ5IG9uZSBwb2ludGVyLCBlYWNoIGVsZW1lbnQgdGhhdCBoYXMg
YXR0cmlidXRlcyBncm93cyBieQorICAgICAgICBvbmUgcG9pbnRlci4gVGhlIHN0eWxlcyBmcm9t
IGluZGl2aWR1YWwgYXR0cmlidXRlcyBhcmUgbm8gbG9uZ2VyIHNoYXJlZCwgc28gY29udGVudCB0
aGF0CisgICAgICAgIHVzZXMgYSBsb3Qgb2YgcmVwZWF0aW5nIHN0eWxpbmcgYXR0cmlidXRlcyB3
aWxsIHNlZSBhIHNsaWdodCBtZW1vcnkgcmVncmVzc2lvbiBmcm9tIHRoaXMuCisgICAgICAgIEZ1
dHVyZSBpbXByb3ZlbWVudHMgdG8gdGhpcyBjb3VsZCBlbmFibGUgc2hhcmluZyB0aGUgYXR0cmli
dXRlU3R5bGUgYmV0d2VlbiBlbGVtZW50cyB0aGF0CisgICAgICAgIGhhdmUgdGhlIHNhbWUgZXhh
Y3QgYXR0cmlidXRlcyB0byBtaXRpZ2F0ZSBzb21lIG9mIHRoZSBkYW1hZ2UuCisKKyAgICAgICAg
VGhlcmUgc2hvdWxkIGJlIG5vIHdlYi1mYWNpbmcgYmVoYXZpb3IgY2hhbmdlIGZyb20gdGhpcywg
YnV0IGl0IGRvZXMgYnJlYWsgdHdvIHRoaW5nczoKKworICAgICAgICAtIFRoZSBJbnNwZWN0b3Ig
ZmVhdHVyZSBmb3IgZGlzcGxheWluZyBwZXItYXR0cmlidXRlIHN0eWxlcy4gVG8ga2VlcCB0aGlu
Z3MgbWFuYWdlYWJsZSwKKyAgICAgICAgICB0aGlzIHBhdGNoIHNpbXBseSBmaWxlcyBhbGwgdGhl
IGF0dHJpYnV0ZSBzdHlsZXMgdG9nZXRoZXIgdW5kZXIgYW4gYW5vbnltb3VzIGF0dHJpYnV0ZQor
ICAgICAgICAgIGluIHRoZSBJbnNwZWN0b3IuCisKKyAgICAgICAgLSBUaGUgT2JqLUMgRE9NIGJp
bmRpbmcgZm9yIEF0dHI6OnN0eWxlKCkgaGFzIHRvIGJlIGtlcHQgZm9yIGNvbXBhdGliaWxpdHkg
cmVhc29ucywKKyAgICAgICAgICB0aG91Z2ggaXQncyBhbHJlYWR5IGRlcHJlY2F0ZWQuIEl0IHdp
bGwgbm93IGFsd2F5cyByZXR1cm4gbmlsLCBzaW5jZSB0aGVyZSdzIG5vIHdheSB0bworICAgICAg
ICAgIHJldHJpZXZlIGEgbGl2ZSBzdHlsZSBkZWNsYXJhdGlvbiB0aGF0J3Mgc3BlY2lmaWMgdG8g
YSBjZXJ0YWluIEF0dHIuCisKKyAgICAgICAgKiBjc3MvQ1NTU3R5bGVTZWxlY3Rvci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpDU1NTdHlsZVNlbGVjdG9yOjptYXRjaEFsbFJ1bGVzKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNTU1N0eWxlU2VsZWN0b3I6OmNhblNoYXJlU3R5bGVXaXRoRWxlbWVudCk6
CisgICAgICAgICogZG9tL0F0dHIuaDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoQXR0
cik6CisgICAgICAgIChXZWJDb3JlOjpBdHRyOjpzdHlsZSk6CisgICAgICAgICogZG9tL0F0dHJp
YnV0ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBdHRyaWJ1dGU6OmNsb25lKToKKyAgICAgICAg
KiBkb20vQXR0cmlidXRlLmg6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6
OkF0dHJpYnV0ZTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkF0dHJpYnV0ZTo6Y3JlYXRl
TWFwcGVkKToKKyAgICAgICAgKEF0dHJpYnV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpBdHRyaWJ1
dGU6OkF0dHJpYnV0ZSk6CisgICAgICAgICogZG9tL0NTU01hcHBlZEF0dHJpYnV0ZURlY2xhcmF0
aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU01hcHBlZEF0dHJpYnV0ZURlY2xhcmF0aW9u
Ojp+Q1NTTWFwcGVkQXR0cmlidXRlRGVjbGFyYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6Q1NT
TWFwcGVkQXR0cmlidXRlRGVjbGFyYXRpb246OnNldE1hcHBlZFByb3BlcnR5KToKKyAgICAgICAg
KiBkb20vQ1NTTWFwcGVkQXR0cmlidXRlRGVjbGFyYXRpb24uaDoKKyAgICAgICAgKENTU01hcHBl
ZEF0dHJpYnV0ZURlY2xhcmF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU01hcHBlZEF0dHJp
YnV0ZURlY2xhcmF0aW9uOjpDU1NNYXBwZWRBdHRyaWJ1dGVEZWNsYXJhdGlvbik6CisgICAgICAg
ICogZG9tL0VsZW1lbnQuaDoKKyAgICAgICAgKEVsZW1lbnQpOgorICAgICAgICAqIGRvbS9FbGVt
ZW50QXR0cmlidXRlRGF0YS5oOgorICAgICAgICAoRWxlbWVudEF0dHJpYnV0ZURhdGEpOgorICAg
ICAgICAqIGRvbS9OYW1lZE5vZGVNYXAuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TmFtZWROb2Rl
TWFwOjplbnN1cmVBdHRyaWJ1dGVTdHlsZSk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAg
KiBkb20vTmFtZWROb2RlTWFwLmg6CisgICAgICAgIChXZWJDb3JlOjpOYW1lZE5vZGVNYXA6OmF0
dHJpYnV0ZVN0eWxlKToKKyAgICAgICAgKE5hbWVkTm9kZU1hcCk6CisgICAgICAgICogZG9tL1N0
eWxlZEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpT
dHlsZWRFbGVtZW50OjphdHRyaWJ1dGVDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxl
ZEVsZW1lbnQ6OnJlbW92ZUNTU1Byb3BlcnRpZXMpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVk
RWxlbWVudDo6YWRkQ1NTUHJvcGVydHkpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVkRWxlbWVu
dDo6YWRkQ1NTSW1hZ2VQcm9wZXJ0eSk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZWRFbGVtZW50
OjphZGRDU1NMZW5ndGgpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVkRWxlbWVudDo6YWRkQ1NT
Q29sb3IpOgorICAgICAgICAqIGRvbS9TdHlsZWRFbGVtZW50Lmg6CisgICAgICAgIChTdHlsZWRF
bGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlZEVsZW1lbnQ6OnJlbW92ZUNTU1Byb3Bl
cnR5KToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlZEVsZW1lbnQ6OmF0dHJpYnV0ZVN0eWxlKToK
KyAgICAgICAgKFdlYkNvcmU6OlN0eWxlZEVsZW1lbnQ6OmVuc3VyZUF0dHJpYnV0ZVN0eWxlKToK
KyAgICAgICAgKiBodG1sL0hUTUxCUkVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRN
TEJSRWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUpOgorICAgICAgICAqIGh0bWwvSFRNTEJS
RWxlbWVudC5oOgorICAgICAgICAoSFRNTEJSRWxlbWVudCk6CisgICAgICAgICogaHRtbC9IVE1M
Qm9keUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEJvZHlFbGVtZW50OjpwYXJz
ZU1hcHBlZEF0dHJpYnV0ZSk6CisgICAgICAgICogaHRtbC9IVE1MQm9keUVsZW1lbnQuaDoKKyAg
ICAgICAgKEhUTUxCb2R5RWxlbWVudCk6CisgICAgICAgICogaHRtbC9IVE1MRGl2RWxlbWVudC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRGl2RWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1
dGUpOgorICAgICAgICAqIGh0bWwvSFRNTERpdkVsZW1lbnQuaDoKKyAgICAgICAgKEhUTUxEaXZF
bGVtZW50KToKKyAgICAgICAgKiBodG1sL0hUTUxFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkhUTUxFbGVtZW50OjphcHBseUJvcmRlckF0dHJpYnV0ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpIVE1MRWxlbWVudDo6bWFwTGFuZ3VhZ2VBdHRyaWJ1dGVUb0xvY2FsZSk6CisgICAgICAgIChX
ZWJDb3JlOjpIVE1MRWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUpOgorICAgICAgICAoV2Vi
Q29yZTo6SFRNTEVsZW1lbnQ6OnJlbW92ZUhUTUxBbGlnbm1lbnQpOgorICAgICAgICAoV2ViQ29y
ZSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRWxlbWVudDo6YWRkSFRNTEFsaWdubWVudFRvU3R5
bGVkRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRWxlbWVudDo6c2V0Q29udGVudEVk
aXRhYmxlKToKKyAgICAgICAgKiBodG1sL0hUTUxFbGVtZW50Lmg6CisgICAgICAgIChIVE1MRWxl
bWVudCk6CisgICAgICAgICogaHRtbC9IVE1MRW1iZWRFbGVtZW50LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkhUTUxFbWJlZEVsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmlidXRlKToKKyAgICAgICAg
KiBodG1sL0hUTUxFbWJlZEVsZW1lbnQuaDoKKyAgICAgICAgKEhUTUxFbWJlZEVsZW1lbnQpOgor
ICAgICAgICAqIGh0bWwvSFRNTEZvbnRFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxGb250RWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUpOgorICAgICAgICAqIGh0bWwvSFRN
TEZvbnRFbGVtZW50Lmg6CisgICAgICAgIChIVE1MRm9udEVsZW1lbnQpOgorICAgICAgICAqIGh0
bWwvSFRNTEZyYW1lU2V0RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRnJhbWVT
ZXRFbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpYnV0ZSk6CisgICAgICAgICogaHRtbC9IVE1MRnJh
bWVTZXRFbGVtZW50Lmg6CisgICAgICAgIChIVE1MRnJhbWVTZXRFbGVtZW50KToKKyAgICAgICAg
KiBodG1sL0hUTUxIUkVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEhSRWxlbWVu
dDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUpOgorICAgICAgICAqIGh0bWwvSFRNTEhSRWxlbWVudC5o
OgorICAgICAgICAoSFRNTEhSRWxlbWVudCk6CisgICAgICAgICogaHRtbC9IVE1MSUZyYW1lRWxl
bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MSUZyYW1lRWxlbWVudDo6cGFyc2VNYXBw
ZWRBdHRyaWJ1dGUpOgorICAgICAgICAqIGh0bWwvSFRNTElGcmFtZUVsZW1lbnQuaDoKKyAgICAg
ICAgKEhUTUxJRnJhbWVFbGVtZW50KToKKyAgICAgICAgKiBodG1sL0hUTUxJbWFnZUVsZW1lbnQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEltYWdlRWxlbWVudDo6cGFyc2VNYXBwZWRBdHRy
aWJ1dGUpOgorICAgICAgICAqIGh0bWwvSFRNTEltYWdlRWxlbWVudC5oOgorICAgICAgICAoSFRN
TEltYWdlRWxlbWVudCk6CisgICAgICAgICogaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkhUTUxJbnB1dEVsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmlidXRlKToK
KyAgICAgICAgKiBodG1sL0hUTUxJbnB1dEVsZW1lbnQuaDoKKyAgICAgICAgKEhUTUxJbnB1dEVs
ZW1lbnQpOgorICAgICAgICAqIGh0bWwvSFRNTExJRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpIVE1MTElFbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpYnV0ZSk6CisgICAgICAgICogaHRt
bC9IVE1MTElFbGVtZW50Lmg6CisgICAgICAgIChIVE1MTElFbGVtZW50KToKKyAgICAgICAgKiBo
dG1sL0hUTUxNYXJxdWVlRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWFycXVl
ZUVsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmlidXRlKToKKyAgICAgICAgKiBodG1sL0hUTUxNYXJx
dWVlRWxlbWVudC5oOgorICAgICAgICAoSFRNTE1hcnF1ZWVFbGVtZW50KToKKyAgICAgICAgKiBo
dG1sL0hUTUxPTGlzdEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE9MaXN0RWxl
bWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUpOgorICAgICAgICAqIGh0bWwvSFRNTE9MaXN0RWxl
bWVudC5oOgorICAgICAgICAoSFRNTE9MaXN0RWxlbWVudCk6CisgICAgICAgICogaHRtbC9IVE1M
T3V0cHV0RWxlbWVudC5jcHA6CisgICAgICAgICogaHRtbC9IVE1MT3V0cHV0RWxlbWVudC5oOgor
ICAgICAgICAoSFRNTE91dHB1dEVsZW1lbnQpOgorICAgICAgICAqIGh0bWwvSFRNTFBhcmFncmFw
aEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFBhcmFncmFwaEVsZW1lbnQ6OnBh
cnNlTWFwcGVkQXR0cmlidXRlKToKKyAgICAgICAgKiBodG1sL0hUTUxQYXJhZ3JhcGhFbGVtZW50
Lmg6CisgICAgICAgIChIVE1MUGFyYWdyYXBoRWxlbWVudCk6CisgICAgICAgICogaHRtbC9IVE1M
UGx1Z0luRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MUGx1Z0luRWxlbWVudDo6
cGFyc2VNYXBwZWRBdHRyaWJ1dGUpOgorICAgICAgICAqIGh0bWwvSFRNTFBsdWdJbkVsZW1lbnQu
aDoKKyAgICAgICAgKEhUTUxQbHVnSW5FbGVtZW50KToKKyAgICAgICAgKiBodG1sL0hUTUxQcmVF
bGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxQcmVFbGVtZW50OjpwYXJzZU1hcHBl
ZEF0dHJpYnV0ZSk6CisgICAgICAgICogaHRtbC9IVE1MUHJlRWxlbWVudC5oOgorICAgICAgICAo
SFRNTFByZUVsZW1lbnQpOgorICAgICAgICAqIGh0bWwvSFRNTFRhYmxlQ2FwdGlvbkVsZW1lbnQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRhYmxlQ2FwdGlvbkVsZW1lbnQ6OnBhcnNlTWFw
cGVkQXR0cmlidXRlKToKKyAgICAgICAgKiBodG1sL0hUTUxUYWJsZUNhcHRpb25FbGVtZW50Lmg6
CisgICAgICAgIChIVE1MVGFibGVDYXB0aW9uRWxlbWVudCk6CisgICAgICAgICogaHRtbC9IVE1M
VGFibGVDZWxsRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVGFibGVDZWxsRWxl
bWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUpOgorICAgICAgICAqIGh0bWwvSFRNTFRhYmxlQ2Vs
bEVsZW1lbnQuaDoKKyAgICAgICAgKEhUTUxUYWJsZUNlbGxFbGVtZW50KToKKyAgICAgICAgKiBo
dG1sL0hUTUxUYWJsZUNvbEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRhYmxl
Q29sRWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUpOgorICAgICAgICAqIGh0bWwvSFRNTFRh
YmxlQ29sRWxlbWVudC5oOgorICAgICAgICAoSFRNTFRhYmxlQ29sRWxlbWVudCk6CisgICAgICAg
ICogaHRtbC9IVE1MVGFibGVFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUYWJs
ZUVsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmlidXRlKToKKyAgICAgICAgKiBodG1sL0hUTUxUYWJs
ZUVsZW1lbnQuaDoKKyAgICAgICAgKEhUTUxUYWJsZUVsZW1lbnQpOgorICAgICAgICAqIGh0bWwv
SFRNTFRhYmxlUGFydEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChX
ZWJDb3JlOjpIVE1MVGFibGVQYXJ0RWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUpOgorICAg
ICAgICAqIGh0bWwvSFRNTFRhYmxlUGFydEVsZW1lbnQuaDoKKyAgICAgICAgKiBodG1sL0hUTUxU
ZXh0QXJlYUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRleHRBcmVhRWxlbWVu
dDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUpOgorICAgICAgICAqIGh0bWwvSFRNTFVMaXN0RWxlbWVu
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVUxpc3RFbGVtZW50OjpwYXJzZU1hcHBlZEF0
dHJpYnV0ZSk6CisgICAgICAgICogaHRtbC9IVE1MVUxpc3RFbGVtZW50Lmg6CisgICAgICAgIChI
VE1MVUxpc3RFbGVtZW50KToKKyAgICAgICAgKiBodG1sL0hUTUxWaWRlb0VsZW1lbnQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SFRNTFZpZGVvRWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUp
OgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JDU1NBZ2VudC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpJbnNwZWN0b3JDU1NBZ2VudDo6YnVpbGRBcnJheUZvckF0dHJpYnV0ZVN0eWxlcyk6
CisgICAgICAgICogbWF0aG1sL01hdGhNTEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
TWF0aE1MRWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUpOgorICAgICAgICAqIG1hdGhtbC9N
YXRoTUxFbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR0ltYWdlRWxlbWVudC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpTVkdJbWFnZUVsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmlidXRlKToKKyAg
ICAgICAgKiBzdmcvU1ZHU3R5bGVkRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdT
dHlsZWRFbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpYnV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpT
VkdTdHlsZWRFbGVtZW50OjpnZXRQcmVzZW50YXRpb25BdHRyaWJ1dGUpOgorICAgICAgICAqIHN2
Zy9TVkdTdHlsZWRFbGVtZW50Lmg6CisgICAgICAgIChTVkdTdHlsZWRFbGVtZW50KToKKyAgICAg
ICAgKiBzdmcvU1ZHVGV4dENvbnRlbnRFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNW
R1RleHRDb250ZW50RWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUpOgorCiAyMDEyLTAyLTAz
ICBKYW1lcyBSb2JpbnNvbiAgPGphbWVzckBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgW2Nocm9t
aXVtXSBEZWZlciBtYWtlQ29udGV4dEN1cnJlbnQgaW4gY29tcG9zaXRvciB1bnRpbCBmaXJzdCBm
cmFtZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2VsZWN0b3IuY3Bw
IGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2VsZWN0b3IuY3BwCmluZGV4IDE2OWU1ZmQu
LjJlMWY3Y2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNlbGVjdG9y
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTZWxlY3Rvci5jcHAKQEAgLTk5
NiwxNyArOTk2LDE0IEBAIHZvaWQgQ1NTU3R5bGVTZWxlY3Rvcjo6bWF0Y2hBbGxSdWxlcyhNYXRj
aFJlc3VsdCYgcmVzdWx0KQogICAgICAgICAKICAgICAvLyBOb3cgY2hlY2sgYXV0aG9yIHJ1bGVz
LCBiZWdpbm5pbmcgZmlyc3Qgd2l0aCBwcmVzZW50YXRpb25hbCBhdHRyaWJ1dGVzIG1hcHBlZCBm
cm9tIEhUTUwuCiAgICAgaWYgKG1fc3R5bGVkRWxlbWVudCkgewotICAgICAgICBpZiAoY29uc3Qg
TmFtZWROb2RlTWFwKiBtYXAgPSBtX3N0eWxlZEVsZW1lbnQtPmF0dHJpYnV0ZU1hcCgpKSB7Ci0g
ICAgICAgICAgICAvLyBXYWxrIHRoZSBlbGVtZW50J3MgYXR0cmlidXRlIG1hcCBhbmQgYWRkIGFs
bCBtYXBwZWQgYXR0cmlidXRlIGRlY2xhcmF0aW9ucy4KLSAgICAgICAgICAgIGZvciAodW5zaWdu
ZWQgaSA9IDA7IGkgPCBtYXAtPmxlbmd0aCgpOyArK2kpIHsKLSAgICAgICAgICAgICAgICBBdHRy
aWJ1dGUqIGF0dHJpYnV0ZSA9IG1hcC0+YXR0cmlidXRlSXRlbShpKTsKLSAgICAgICAgICAgICAg
ICBpZiAoIWF0dHJpYnV0ZS0+ZGVjbCgpKQotICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsK
LSAgICAgICAgICAgICAgICBBU1NFUlQoYXR0cmlidXRlLT5pc01hcHBlZEF0dHJpYnV0ZSgpKTsK
LSAgICAgICAgICAgICAgICByZXN1bHQucmFuZ2VzLmxhc3RBdXRob3JSdWxlID0gbV9tYXRjaGVk
RGVjbHMuc2l6ZSgpOworICAgICAgICBpZiAoQ1NTTWFwcGVkQXR0cmlidXRlRGVjbGFyYXRpb24q
IGF0dHJpYnV0ZVN0eWxlID0gbV9zdHlsZWRFbGVtZW50LT5hdHRyaWJ1dGVTdHlsZSgpKSB7Cisg
ICAgICAgICAgICBBU1NFUlQoYXR0cmlidXRlU3R5bGUtPmRlY2xhcmF0aW9uKCkpOworICAgICAg
ICAgICAgaWYgKCFhdHRyaWJ1dGVTdHlsZS0+ZGVjbGFyYXRpb24oKS0+aXNFbXB0eSgpKSB7Cisg
ICAgICAgICAgICAgICAgcmVzdWx0LnJhbmdlcy5sYXN0QXV0aG9yUnVsZSA9IG1fbWF0Y2hlZFJ1
bGVzLnNpemUoKTsKICAgICAgICAgICAgICAgICBpZiAocmVzdWx0LnJhbmdlcy5maXJzdEF1dGhv
clJ1bGUgPT0gLTEpCiAgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5yYW5nZXMuZmlyc3RBdXRo
b3JSdWxlID0gcmVzdWx0LnJhbmdlcy5sYXN0QXV0aG9yUnVsZTsKLSAgICAgICAgICAgICAgICBh
ZGRNYXRjaGVkRGVjbGFyYXRpb24oYXR0cmlidXRlLT5kZWNsKCkpOworICAgICAgICAgICAgICAg
IGFkZE1hdGNoZWREZWNsYXJhdGlvbihhdHRyaWJ1dGVTdHlsZS0+ZGVjbGFyYXRpb24oKSk7Cisg
ICAgICAgICAgICAgICAgcmVzdWx0LmlzQ2FjaGVhYmxlID0gZmFsc2U7CiAgICAgICAgICAgICB9
CiAgICAgICAgIH0KIApAQCAtMTE5OCwyMiArMTE5NSw2IEBAIGJvb2wgQ1NTU3R5bGVTZWxlY3Rv
cjo6Y2FuU2hhcmVTdHlsZVdpdGhDb250cm9sKFN0eWxlZEVsZW1lbnQqIGVsZW1lbnQpIGNvbnN0
CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXN0YXRpYyBpbmxpbmUgYm9vbCBtYXBwZWRBdHRyaWJ1
dGVzRXF1aXZhbGVudChOYW1lZE5vZGVNYXAqIGEsIE5hbWVkTm9kZU1hcCogYikKLXsKLSAgICBB
U1NFUlQoYS0+bWFwcGVkQXR0cmlidXRlQ291bnQoKSA9PSBiLT5tYXBwZWRBdHRyaWJ1dGVDb3Vu
dCgpKTsKLQotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgYS0+bGVuZ3RoKCk7ICsraSkgewot
ICAgICAgICBBdHRyaWJ1dGUqIGF0dHJpYnV0ZSA9IGEtPmF0dHJpYnV0ZUl0ZW0oaSk7Ci0gICAg
ICAgIGlmICghYXR0cmlidXRlLT5kZWNsKCkpCi0gICAgICAgICAgICBjb250aW51ZTsKLSAgICAg
ICAgQVNTRVJUKGF0dHJpYnV0ZS0+aXNNYXBwZWRBdHRyaWJ1dGUoKSk7Ci0gICAgICAgIEF0dHJp
YnV0ZSogb3RoZXJBdHRyaWJ1dGUgPSBiLT5nZXRBdHRyaWJ1dGVJdGVtKGF0dHJpYnV0ZS0+bmFt
ZSgpKTsKLSAgICAgICAgaWYgKCFvdGhlckF0dHJpYnV0ZSB8fCBhdHRyaWJ1dGUtPnZhbHVlKCkg
IT0gb3RoZXJBdHRyaWJ1dGUtPnZhbHVlKCkgfHwgYXR0cmlidXRlLT5kZWNsKCkgIT0gb3RoZXJB
dHRyaWJ1dGUtPmRlY2woKSkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0gICAg
cmV0dXJuIHRydWU7Ci19Ci0KIGJvb2wgQ1NTU3R5bGVTZWxlY3Rvcjo6Y2FuU2hhcmVTdHlsZVdp
dGhFbGVtZW50KFN0eWxlZEVsZW1lbnQqIGVsZW1lbnQpIGNvbnN0CiB7CiAgICAgUmVuZGVyU3R5
bGUqIHN0eWxlID0gZWxlbWVudC0+cmVuZGVyU3R5bGUoKTsKQEAgLTEyMjgsOCArMTIwOSw3IEBA
IGJvb2wgQ1NTU3R5bGVTZWxlY3Rvcjo6Y2FuU2hhcmVTdHlsZVdpdGhFbGVtZW50KFN0eWxlZEVs
ZW1lbnQqIGVsZW1lbnQpIGNvbnN0CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBpZiAoZWxl
bWVudC0+aW5saW5lU3R5bGVEZWNsKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBzaXpl
X3QgbWFwcGVkQXR0cmlidXRlQ291bnQgPSBlbGVtZW50LT5tYXBwZWRBdHRyaWJ1dGVDb3VudCgp
OwotICAgIGlmIChtYXBwZWRBdHRyaWJ1dGVDb3VudCAhPSBtX3N0eWxlZEVsZW1lbnQtPm1hcHBl
ZEF0dHJpYnV0ZUNvdW50KCkpCisgICAgaWYgKCEhZWxlbWVudC0+YXR0cmlidXRlU3R5bGUoKSAh
PSAhIW1fc3R5bGVkRWxlbWVudC0+YXR0cmlidXRlU3R5bGUoKSkKICAgICAgICAgcmV0dXJuIGZh
bHNlOwogICAgIGlmIChlbGVtZW50LT5pc0xpbmsoKSAhPSBtX2VsZW1lbnQtPmlzTGluaygpKQog
ICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0xMjk1LDcgKzEyNzUsNyBAQCBib29sIENTU1N0eWxl
U2VsZWN0b3I6OmNhblNoYXJlU3R5bGVXaXRoRWxlbWVudChTdHlsZWRFbGVtZW50KiBlbGVtZW50
KSBjb25zdAogICAgIGlmIChlbGVtZW50LT5oYXNDbGFzcygpICYmIG1fZWxlbWVudC0+Z2V0QXR0
cmlidXRlKGNsYXNzQXR0cikgIT0gZWxlbWVudC0+Z2V0QXR0cmlidXRlKGNsYXNzQXR0cikpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIGlmIChtYXBwZWRBdHRyaWJ1dGVDb3VudCAmJiAh
bWFwcGVkQXR0cmlidXRlc0VxdWl2YWxlbnQoZWxlbWVudC0+YXR0cmlidXRlTWFwKCksIG1fc3R5
bGVkRWxlbWVudC0+YXR0cmlidXRlTWFwKCkpKQorICAgIGlmIChlbGVtZW50LT5hdHRyaWJ1dGVT
dHlsZSgpICYmICFlbGVtZW50LT5hdHRyaWJ1dGVNYXAoKS0+bWFwc0VxdWl2YWxlbnQobV9zdHls
ZWRFbGVtZW50LT5hdHRyaWJ1dGVNYXAoKSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAg
IGlmIChlbGVtZW50LT5pc0xpbmsoKSAmJiBtX2VsZW1lbnRMaW5rU3RhdGUgIT0gc3R5bGUtPmlu
c2lkZUxpbmsoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9BdHRyLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vQXR0ci5oCmluZGV4IDFmNTdiMTcuLjAyMDlmOTAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9BdHRyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0F0dHIu
aApAQCAtMzAsNiArMzAsOCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIENTU1N0
eWxlRGVjbGFyYXRpb247CisKIC8vIEF0dHIgY2FuIGhhdmUgVGV4dCBhbmQgRW50aXR5UmVmZXJl
bmNlIGNoaWxkcmVuCiAvLyB0aGVyZWZvcmUgaXQgaGFzIHRvIGJlIGEgZnVsbGJsb3duIE5vZGUu
IFRoZSBwbGFuCiAvLyBpcyB0byBkeW5hbWljYWxseSBhbGxvY2F0ZSBhIHRleHRjaGlsZCBhbmQg
c3RvcmUgdGhlCkBAIC01NSw4ICs1Nyw5IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgaXNJZCgpIGNv
bnN0OwogCi0gICAgLy8gQW4gZXh0ZW5zaW9uIHRvIGdldCBwcmVzZW50YXRpb25hbCBpbmZvcm1h
dGlvbiBmb3IgYXR0cmlidXRlcy4KLSAgICBDU1NTdHlsZURlY2xhcmF0aW9uKiBzdHlsZSgpIHsg
cmV0dXJuIG1fYXR0cmlidXRlLT5kZWNsKCktPmVuc3VyZUNTU1N0eWxlRGVjbGFyYXRpb24oKTsg
fQorICAgIC8vIEEgZGVwcmVjYXRlZCBleHRlbnNpb24gdG8gZ2V0IHByZXNlbnRhdGlvbmFsIGlu
Zm9ybWF0aW9uIGZvciBhdHRyaWJ1dGVzLgorICAgIC8vIFdlIGhhdmUgdG8ga2VlcCBpdCBhcm91
bmQgYmVjYXVzZSBpdCdzIGV4cG9zZWQgaW4gdGhlIE9iai1DIERPTSBBUEkuCisgICAgQ1NTU3R5
bGVEZWNsYXJhdGlvbiogc3R5bGUoKSB7IHJldHVybiAwOyB9CiAKICAgICB2b2lkIHNldFNwZWNp
ZmllZChib29sIHNwZWNpZmllZCkgeyBtX3NwZWNpZmllZCA9IHNwZWNpZmllZDsgfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vQXR0cmlidXRlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9BdHRyaWJ1dGUuY3BwCmluZGV4IDdlZDI4ZDguLjllYWJlNTggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9BdHRyaWJ1dGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9B
dHRyaWJ1dGUuY3BwCkBAIC00MCw3ICs0MCw3IEBAIHN0YXRpYyBBdHRyaWJ1dGVBdHRyTWFwJiBh
dHRyaWJ1dGVBdHRyTWFwKCkKIAogUGFzc1JlZlB0cjxBdHRyaWJ1dGU+IEF0dHJpYnV0ZTo6Y2xv
bmUoKSBjb25zdAogewotICAgIHJldHVybiBhZG9wdFJlZihuZXcgQXR0cmlidXRlKG1fbmFtZSwg
bV92YWx1ZSwgbV9pc01hcHBlZEF0dHJpYnV0ZSwgbV9tYXBwZWRBdHRyaWJ1dGVEZWNsYXJhdGlv
bi5nZXQoKSkpOworICAgIHJldHVybiBhZG9wdFJlZihuZXcgQXR0cmlidXRlKG1fbmFtZSwgbV92
YWx1ZSwgbV9pc01hcHBlZEF0dHJpYnV0ZSkpOwogfQogCiBBdHRyKiBBdHRyaWJ1dGU6OmF0dHIo
KSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0F0dHJpYnV0ZS5oIGIvU291
cmNlL1dlYkNvcmUvZG9tL0F0dHJpYnV0ZS5oCmluZGV4IDY3Mzg3ZTAuLjY2NjA5ODkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9BdHRyaWJ1dGUuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vQXR0cmlidXRlLmgKQEAgLTI1LDEzICsyNSwxMSBAQAogI2lmbmRlZiBBdHRyaWJ1dGVf
aAogI2RlZmluZSBBdHRyaWJ1dGVfaAogCi0jaW5jbHVkZSAiQ1NTTWFwcGVkQXR0cmlidXRlRGVj
bGFyYXRpb24uaCIKICNpbmNsdWRlICJRdWFsaWZpZWROYW1lLmgiCiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAogY2xhc3MgQXR0cjsKLWNsYXNzIENTU1N0eWxlRGVjbGFyYXRpb247CiBjbGFzcyBF
bGVtZW50OwogY2xhc3MgTmFtZWROb2RlTWFwOwogCkBAIC00MywxNSArNDEsMTUgQEAgY2xhc3Mg
QXR0cmlidXRlIDogcHVibGljIFJlZkNvdW50ZWQ8QXR0cmlidXRlPiB7CiBwdWJsaWM6CiAgICAg
c3RhdGljIFBhc3NSZWZQdHI8QXR0cmlidXRlPiBjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYg
bmFtZSwgY29uc3QgQXRvbWljU3RyaW5nJiB2YWx1ZSkKICAgICB7Ci0gICAgICAgIHJldHVybiBh
ZG9wdFJlZihuZXcgQXR0cmlidXRlKG5hbWUsIHZhbHVlLCBmYWxzZSwgMCkpOworICAgICAgICBy
ZXR1cm4gYWRvcHRSZWYobmV3IEF0dHJpYnV0ZShuYW1lLCB2YWx1ZSwgZmFsc2UpKTsKICAgICB9
CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8QXR0cmlidXRlPiBjcmVhdGVNYXBwZWQoY29uc3QgUXVh
bGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbWljU3RyaW5nJiB2YWx1ZSkKICAgICB7Ci0gICAg
ICAgIHJldHVybiBhZG9wdFJlZihuZXcgQXR0cmlidXRlKG5hbWUsIHZhbHVlLCB0cnVlLCAwKSk7
CisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgQXR0cmlidXRlKG5hbWUsIHZhbHVlLCB0cnVl
KSk7CiAgICAgfQogICAgIHN0YXRpYyBQYXNzUmVmUHRyPEF0dHJpYnV0ZT4gY3JlYXRlTWFwcGVk
KGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSwgY29uc3QgQXRvbWljU3RyaW5nJiB2YWx1ZSkKICAg
ICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgQXR0cmlidXRlKG5hbWUsIHZhbHVlLCB0
cnVlLCAwKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgQXR0cmlidXRlKG5hbWUsIHZh
bHVlLCB0cnVlKSk7CiAgICAgfQogCiAgICAgY29uc3QgQXRvbWljU3RyaW5nJiB2YWx1ZSgpIGNv
bnN0IHsgcmV0dXJuIG1fdmFsdWU7IH0KQEAgLTY4LDExICs2Niw2IEBAIHB1YmxpYzoKICAgICBi
b29sIGlzRW1wdHkoKSBjb25zdCB7IHJldHVybiBtX3ZhbHVlLmlzRW1wdHkoKTsgfQogICAgIAog
ICAgIFBhc3NSZWZQdHI8QXR0cmlidXRlPiBjbG9uZSgpIGNvbnN0OwotICAgIAotICAgIFN0eWxl
UHJvcGVydHlTZXQqIGRlY2woKSBjb25zdCB7IHJldHVybiBtX21hcHBlZEF0dHJpYnV0ZURlY2xh
cmF0aW9uID8gbV9tYXBwZWRBdHRyaWJ1dGVEZWNsYXJhdGlvbi0+ZGVjbGFyYXRpb24oKSA6IDA7
IH0KLQotICAgIENTU01hcHBlZEF0dHJpYnV0ZURlY2xhcmF0aW9uKiBtYXBwZWRBdHRyaWJ1dGVE
ZWNsYXJhdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fbWFwcGVkQXR0cmlidXRlRGVjbGFyYXRpb24u
Z2V0KCk7IH0KLSAgICB2b2lkIHNldE1hcHBlZEF0dHJpYnV0ZURlY2xhcmF0aW9uKFBhc3NSZWZQ
dHI8Q1NTTWFwcGVkQXR0cmlidXRlRGVjbGFyYXRpb24+IGRlY2wpIHsgbV9tYXBwZWRBdHRyaWJ1
dGVEZWNsYXJhdGlvbiA9IGRlY2w7IH0KIAogICAgIHZvaWQgc2V0VmFsdWUoY29uc3QgQXRvbWlj
U3RyaW5nJiB2YWx1ZSkgeyBtX3ZhbHVlID0gdmFsdWU7IH0KICAgICB2b2lkIHNldFByZWZpeChj
b25zdCBBdG9taWNTdHJpbmcmIHByZWZpeCkgeyBtX25hbWUuc2V0UHJlZml4KHByZWZpeCk7IH0K
QEAgLTg1LDIxICs3OCwxOSBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc01hcHBlZEF0dHJpYnV0ZSgp
IHsgcmV0dXJuIG1faXNNYXBwZWRBdHRyaWJ1dGU7IH0KIAogcHJpdmF0ZToKLSAgICBBdHRyaWJ1
dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbWljU3RyaW5nJiB2YWx1ZSwg
Ym9vbCBpc01hcHBlZEF0dHJpYnV0ZSwgQ1NTTWFwcGVkQXR0cmlidXRlRGVjbGFyYXRpb24qIHN0
eWxlRGVjbCkKKyAgICBBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3Qg
QXRvbWljU3RyaW5nJiB2YWx1ZSwgYm9vbCBpc01hcHBlZEF0dHJpYnV0ZSkKICAgICAgICAgOiBt
X2lzTWFwcGVkQXR0cmlidXRlKGlzTWFwcGVkQXR0cmlidXRlKQogICAgICAgICAsIG1faGFzQXR0
cihmYWxzZSkKICAgICAgICAgLCBtX25hbWUobmFtZSkKICAgICAgICAgLCBtX3ZhbHVlKHZhbHVl
KQotICAgICAgICAsIG1fbWFwcGVkQXR0cmlidXRlRGVjbGFyYXRpb24oc3R5bGVEZWNsKQogICAg
IHsKICAgICB9CiAKLSAgICBBdHRyaWJ1dGUoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lLCBjb25z
dCBBdG9taWNTdHJpbmcmIHZhbHVlLCBib29sIGlzTWFwcGVkQXR0cmlidXRlLCBDU1NNYXBwZWRB
dHRyaWJ1dGVEZWNsYXJhdGlvbiogc3R5bGVEZWNsKQorICAgIEF0dHJpYnV0ZShjb25zdCBBdG9t
aWNTdHJpbmcmIG5hbWUsIGNvbnN0IEF0b21pY1N0cmluZyYgdmFsdWUsIGJvb2wgaXNNYXBwZWRB
dHRyaWJ1dGUpCiAgICAgICAgIDogbV9pc01hcHBlZEF0dHJpYnV0ZShpc01hcHBlZEF0dHJpYnV0
ZSkKICAgICAgICAgLCBtX2hhc0F0dHIoZmFsc2UpCiAgICAgICAgICwgbV9uYW1lKG51bGxBdG9t
LCBuYW1lLCBudWxsQXRvbSkKICAgICAgICAgLCBtX3ZhbHVlKHZhbHVlKQotICAgICAgICAsIG1f
bWFwcGVkQXR0cmlidXRlRGVjbGFyYXRpb24oc3R5bGVEZWNsKQogICAgIHsKICAgICB9CiAKQEAg
LTExMiw3ICsxMDMsNiBAQCBwcml2YXRlOgogICAgIAogICAgIFF1YWxpZmllZE5hbWUgbV9uYW1l
OwogICAgIEF0b21pY1N0cmluZyBtX3ZhbHVlOwotICAgIFJlZlB0cjxDU1NNYXBwZWRBdHRyaWJ1
dGVEZWNsYXJhdGlvbj4gbV9tYXBwZWRBdHRyaWJ1dGVEZWNsYXJhdGlvbjsKIH07CiAKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9DU1NNYXBw
ZWRBdHRyaWJ1dGVEZWNsYXJhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ1NTTWFwcGVk
QXR0cmlidXRlRGVjbGFyYXRpb24uY3BwCmluZGV4IDcyZTI1NmEuLjY0YTYxNjUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9DU1NNYXBwZWRBdHRyaWJ1dGVEZWNsYXJhdGlvbi5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0NTU01hcHBlZEF0dHJpYnV0ZURlY2xhcmF0aW9uLmNw
cApAQCAtMzgsNyArMzgsNiBAQCBpbmxpbmUgdm9pZCBDU1NNYXBwZWRBdHRyaWJ1dGVEZWNsYXJh
dGlvbjo6c2V0TmVlZHNTdHlsZVJlY2FsYyhTdHlsZWRFbGVtZW50KiBlbAogCiBDU1NNYXBwZWRB
dHRyaWJ1dGVEZWNsYXJhdGlvbjo6fkNTU01hcHBlZEF0dHJpYnV0ZURlY2xhcmF0aW9uKCkKIHsK
LSAgICBTdHlsZWRFbGVtZW50OjpyZW1vdmVNYXBwZWRBdHRyaWJ1dGVEZWNsKG1fZW50cnlUeXBl
LCBtX2F0dHJOYW1lLCBtX2F0dHJWYWx1ZSk7CiB9CiAKIHZvaWQgQ1NTTWFwcGVkQXR0cmlidXRl
RGVjbGFyYXRpb246OnNldE1hcHBlZEltYWdlUHJvcGVydHkoU3R5bGVkRWxlbWVudCogZWxlbWVu
dCwgaW50IHByb3BlcnR5SWQsIGNvbnN0IFN0cmluZyYgdXJsKQpAQCAtNjYsOCArNjUsMTAgQEAg
dm9pZCBDU1NNYXBwZWRBdHRyaWJ1dGVEZWNsYXJhdGlvbjo6c2V0TWFwcGVkUHJvcGVydHkoU3R5
bGVkRWxlbWVudCogZWxlbWVudCwgaW4KICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGlm
ICghQ1NTUGFyc2VyOjpwYXJzZU1hcHBlZEF0dHJpYnV0ZVZhbHVlKHRoaXMsIGVsZW1lbnQsIHBy
b3BlcnR5SWQsIHZhbHVlKSkKKyAgICBpZiAoIUNTU1BhcnNlcjo6cGFyc2VNYXBwZWRBdHRyaWJ1
dGVWYWx1ZSh0aGlzLCBlbGVtZW50LCBwcm9wZXJ0eUlkLCB2YWx1ZSkpIHsKKyAgICAgICAgcmVt
b3ZlTWFwcGVkUHJvcGVydHkoZWxlbWVudCwgcHJvcGVydHlJZCk7CiAgICAgICAgIHJldHVybjsK
KyAgICB9CiAKICAgICBzZXROZWVkc1N0eWxlUmVjYWxjKGVsZW1lbnQpOwogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvZG9tL0NTU01hcHBlZEF0dHJpYnV0ZURlY2xhcmF0aW9uLmggYi9T
b3VyY2UvV2ViQ29yZS9kb20vQ1NTTWFwcGVkQXR0cmlidXRlRGVjbGFyYXRpb24uaAppbmRleCA0
ZmIxYjE0Li40MDEzYjE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ1NTTWFwcGVk
QXR0cmlidXRlRGVjbGFyYXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ1NTTWFwcGVk
QXR0cmlidXRlRGVjbGFyYXRpb24uaApAQCAtNDIsMTMgKzQyLDYgQEAgcHVibGljOgogCiAgICAg
fkNTU01hcHBlZEF0dHJpYnV0ZURlY2xhcmF0aW9uKCk7CiAKLSAgICB2b2lkIHNldE1hcHBlZFN0
YXRlKE1hcHBlZEF0dHJpYnV0ZUVudHJ5IHR5cGUsIGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUs
IGNvbnN0IEF0b21pY1N0cmluZyYgdmFsKQotICAgIHsKLSAgICAgICAgbV9lbnRyeVR5cGUgPSB0
eXBlOwotICAgICAgICBtX2F0dHJOYW1lID0gbmFtZTsKLSAgICAgICAgbV9hdHRyVmFsdWUgPSB2
YWw7Ci0gICAgfQotCiAgICAgdm9pZCBzZXRNYXBwZWRQcm9wZXJ0eShTdHlsZWRFbGVtZW50Kiwg
aW50IHByb3BlcnR5SWQsIGludCB2YWx1ZSk7CiAgICAgdm9pZCBzZXRNYXBwZWRQcm9wZXJ0eShT
dHlsZWRFbGVtZW50KiwgaW50IHByb3BlcnR5SWQsIGNvbnN0IFN0cmluZyYgdmFsdWUpOwogICAg
IHZvaWQgc2V0TWFwcGVkSW1hZ2VQcm9wZXJ0eShTdHlsZWRFbGVtZW50KiwgaW50IHByb3BlcnR5
SWQsIGNvbnN0IFN0cmluZyYgdXJsKTsKQEAgLTYzLDE3ICs1NiwxMiBAQCBwdWJsaWM6CiBwcml2
YXRlOgogICAgIENTU01hcHBlZEF0dHJpYnV0ZURlY2xhcmF0aW9uKCkKICAgICAgICAgOiBtX2Rl
Y2xhcmF0aW9uKFN0eWxlUHJvcGVydHlTZXQ6OmNyZWF0ZSgpKQotICAgICAgICAsIG1fZW50cnlU
eXBlKGVOb25lKQotICAgICAgICAsIG1fYXR0ck5hbWUoYW55UU5hbWUoKSkKICAgICB7CiAgICAg
fQogCiAgICAgdm9pZCBzZXROZWVkc1N0eWxlUmVjYWxjKFN0eWxlZEVsZW1lbnQqKTsKIAogICAg
IFJlZlB0cjxTdHlsZVByb3BlcnR5U2V0PiBtX2RlY2xhcmF0aW9uOwotICAgIE1hcHBlZEF0dHJp
YnV0ZUVudHJ5IG1fZW50cnlUeXBlOwotICAgIFF1YWxpZmllZE5hbWUgbV9hdHRyTmFtZTsKLSAg
ICBBdG9taWNTdHJpbmcgbV9hdHRyVmFsdWU7CiB9OwogCiB9IC8vbmFtZXNwYWNlCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0Vs
ZW1lbnQuaAppbmRleCAzYzI3NjU5Li42MGRhZjk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmgKQEAgLTIy
MSw2ICsyMjEsNyBAQCBwdWJsaWM6CiAgICAgTmFtZWROb2RlTWFwKiB1cGRhdGVkQXR0cmlidXRl
cygpIGNvbnN0OwogCiAgICAgLy8gVGhpcyBtZXRob2QgaXMgY2FsbGVkIHdoZW5ldmVyIGFuIGF0
dHJpYnV0ZSBpcyBhZGRlZCwgY2hhbmdlZCBvciByZW1vdmVkLgorICAgIC8vIEZJWE1FOiBSZW1v
dmUgdGhlIHByZXNlcnZlRGVjbHMgYXJndW1lbnQuCiAgICAgdmlydHVhbCB2b2lkIGF0dHJpYnV0
ZUNoYW5nZWQoQXR0cmlidXRlKiwgYm9vbCBwcmVzZXJ2ZURlY2xzID0gZmFsc2UpOwogCiAgICAg
Ly8gT25seSBjYWxsZWQgYnkgdGhlIHBhcnNlciBpbW1lZGlhdGVseSBhZnRlciBlbGVtZW50IGNv
bnN0cnVjdGlvbi4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50QXR0cmli
dXRlRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnRBdHRyaWJ1dGVEYXRhLmgKaW5k
ZXggM2QyYmY0YS4uNDQ1NWRhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1l
bnRBdHRyaWJ1dGVEYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnRBdHRyaWJ1
dGVEYXRhLmgKQEAgLTI2LDYgKzI2LDcgQEAKICNpZm5kZWYgRWxlbWVudEF0dHJpYnV0ZURhdGFf
aAogI2RlZmluZSBFbGVtZW50QXR0cmlidXRlRGF0YV9oCiAKKyNpbmNsdWRlICJDU1NNYXBwZWRB
dHRyaWJ1dGVEZWNsYXJhdGlvbi5oIgogI2luY2x1ZGUgIlNwYWNlU3BsaXRTdHJpbmcuaCIKICNp
bmNsdWRlICJTdHlsZVByb3BlcnR5U2V0LmgiCiAKQEAgLTUwLDYgKzUxLDcgQEAgcHJpdmF0ZToK
ICAgICB9CiAKICAgICBSZWZQdHI8U3R5bGVQcm9wZXJ0eVNldD4gbV9pbmxpbmVTdHlsZURlY2w7
CisgICAgUmVmUHRyPENTU01hcHBlZEF0dHJpYnV0ZURlY2xhcmF0aW9uPiBtX2F0dHJpYnV0ZVN0
eWxlOwogICAgIFNwYWNlU3BsaXRTdHJpbmcgbV9jbGFzc05hbWVzOwogICAgIEF0b21pY1N0cmlu
ZyBtX2lkRm9yU3R5bGVSZXNvbHV0aW9uOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9OYW1lZE5vZGVNYXAuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL05hbWVkTm9kZU1hcC5j
cHAKaW5kZXggMTg5MzZlNS4uZmI3ZDFiMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9t
L05hbWVkTm9kZU1hcC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL05hbWVkTm9kZU1hcC5j
cHAKQEAgLTMzOSw0ICszMzksMTMgQEAgdm9pZCBOYW1lZE5vZGVNYXA6OmRlc3Ryb3lJbmxpbmVT
dHlsZURlY2woKQogICAgIGF0dHJpYnV0ZURhdGEoKS0+bV9pbmxpbmVTdHlsZURlY2wgPSAwOwog
fQogCitDU1NNYXBwZWRBdHRyaWJ1dGVEZWNsYXJhdGlvbiogTmFtZWROb2RlTWFwOjplbnN1cmVB
dHRyaWJ1dGVTdHlsZSgpCit7CisgICAgaWYgKCFhdHRyaWJ1dGVEYXRhKCktPm1fYXR0cmlidXRl
U3R5bGUpIHsKKyAgICAgICAgYXR0cmlidXRlRGF0YSgpLT5tX2F0dHJpYnV0ZVN0eWxlID0gQ1NT
TWFwcGVkQXR0cmlidXRlRGVjbGFyYXRpb246OmNyZWF0ZSgpOworICAgICAgICBhdHRyaWJ1dGVE
YXRhKCktPm1fYXR0cmlidXRlU3R5bGUtPmRlY2xhcmF0aW9uKCktPnNldFN0cmljdFBhcnNpbmco
ZmFsc2UpOworICAgIH0KKyAgICByZXR1cm4gYXR0cmlidXRlRGF0YSgpLT5tX2F0dHJpYnV0ZVN0
eWxlLmdldCgpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vTmFtZWROb2RlTWFwLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vTmFtZWRO
b2RlTWFwLmgKaW5kZXggZDNiYjFkZi4uM2JhNzE5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvZG9tL05hbWVkTm9kZU1hcC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9OYW1lZE5vZGVN
YXAuaApAQCAtMjYsNiArMjYsOCBAQAogI2RlZmluZSBOYW1lZE5vZGVNYXBfaAogCiAjaW5jbHVk
ZSAiQXR0cmlidXRlLmgiCisjaW5jbHVkZSAiQ1NTTWFwcGVkQXR0cmlidXRlRGVjbGFyYXRpb24u
aCIKKyNpbmNsdWRlICJDU1NQcm9wZXJ0eU5hbWVzLmgiCiAjaW5jbHVkZSAiRWxlbWVudEF0dHJp
YnV0ZURhdGEuaCIKICNpbmNsdWRlICJTcGFjZVNwbGl0U3RyaW5nLmgiCiAjaW5jbHVkZSA8d3Rm
L05vdEZvdW5kLmg+CkBAIC0xMDMsNiArMTA1LDkgQEAgcHVibGljOgogICAgIFN0eWxlUHJvcGVy
dHlTZXQqIGVuc3VyZUlubGluZVN0eWxlRGVjbCgpOwogICAgIHZvaWQgZGVzdHJveUlubGluZVN0
eWxlRGVjbCgpOwogCisgICAgQ1NTTWFwcGVkQXR0cmlidXRlRGVjbGFyYXRpb24qIGF0dHJpYnV0
ZVN0eWxlKCkgY29uc3QgeyByZXR1cm4gYXR0cmlidXRlRGF0YSgpLT5tX2F0dHJpYnV0ZVN0eWxl
LmdldCgpOyB9CisgICAgQ1NTTWFwcGVkQXR0cmlidXRlRGVjbGFyYXRpb24qIGVuc3VyZUF0dHJp
YnV0ZVN0eWxlKCk7CisKIHByaXZhdGU6CiAgICAgTmFtZWROb2RlTWFwKEVsZW1lbnQqIGVsZW1l
bnQpCiAgICAgICAgIDogbV9lbGVtZW50KGVsZW1lbnQpCkBAIC0xODQsMTYgKzE4OSw2IEBAIGlu
bGluZSB2b2lkIE5hbWVkTm9kZU1hcDo6cmVtb3ZlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5h
bWUmIG5hbWUpCiAgICAgcmVtb3ZlQXR0cmlidXRlKGluZGV4KTsKIH0KIAotaW5saW5lIHNpemVf
dCBOYW1lZE5vZGVNYXA6Om1hcHBlZEF0dHJpYnV0ZUNvdW50KCkgY29uc3QKLXsKLSAgICBzaXpl
X3QgY291bnQgPSAwOwotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9hdHRyaWJ1dGVzLnNp
emUoKTsgKytpKSB7Ci0gICAgICAgIGlmIChtX2F0dHJpYnV0ZXNbaV0tPmRlY2woKSkKLSAgICAg
ICAgICAgICsrY291bnQ7Ci0gICAgfQotICAgIHJldHVybiBjb3VudDsKLX0KLQogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gTmFtZWROb2RlTWFwX2gKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9TdHlsZWRFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9T
dHlsZWRFbGVtZW50LmNwcAppbmRleCA5Y2U1MTdlLi43NzNkZjkxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vU3R5bGVkRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9t
L1N0eWxlZEVsZW1lbnQuY3BwCkBAIC00NCw2OSArNDQsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKIHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CiAKLXN0cnVjdCBNYXBwZWRBdHRyaWJ1dGVL
ZXkgewotICAgIHVpbnQxNl90IHR5cGU7Ci0gICAgU3RyaW5nSW1wbCogbmFtZTsKLSAgICBTdHJp
bmdJbXBsKiB2YWx1ZTsKLSAgICBNYXBwZWRBdHRyaWJ1dGVLZXkoTWFwcGVkQXR0cmlidXRlRW50
cnkgdCA9IGVOb25lLCBTdHJpbmdJbXBsKiBuID0gMCwgU3RyaW5nSW1wbCogdiA9IDApCi0gICAg
ICAgIDogdHlwZSh0KSwgbmFtZShuKSwgdmFsdWUodikgeyB9Ci19OwotCi1zdGF0aWMgaW5saW5l
IGJvb2wgb3BlcmF0b3I9PShjb25zdCBNYXBwZWRBdHRyaWJ1dGVLZXkmIGEsIGNvbnN0IE1hcHBl
ZEF0dHJpYnV0ZUtleSYgYikKLSAgICB7IHJldHVybiBhLnR5cGUgPT0gYi50eXBlICYmIGEubmFt
ZSA9PSBiLm5hbWUgJiYgYS52YWx1ZSA9PSBiLnZhbHVlOyB9IAotCi1zdHJ1Y3QgTWFwcGVkQXR0
cmlidXRlS2V5VHJhaXRzIDogV1RGOjpHZW5lcmljSGFzaFRyYWl0czxNYXBwZWRBdHRyaWJ1dGVL
ZXk+IHsKLSAgICBzdGF0aWMgY29uc3QgYm9vbCBlbXB0eVZhbHVlSXNaZXJvID0gdHJ1ZTsKLSAg
ICBzdGF0aWMgY29uc3QgYm9vbCBuZWVkc0Rlc3RydWN0aW9uID0gZmFsc2U7Ci0gICAgc3RhdGlj
IHZvaWQgY29uc3RydWN0RGVsZXRlZFZhbHVlKE1hcHBlZEF0dHJpYnV0ZUtleSYgc2xvdCkgeyBz
bG90LnR5cGUgPSBlTGFzdEVudHJ5OyB9Ci0gICAgc3RhdGljIGJvb2wgaXNEZWxldGVkVmFsdWUo
Y29uc3QgTWFwcGVkQXR0cmlidXRlS2V5JiB2YWx1ZSkgeyByZXR1cm4gdmFsdWUudHlwZSA9PSBl
TGFzdEVudHJ5OyB9Ci19OwotCi1zdHJ1Y3QgTWFwcGVkQXR0cmlidXRlSGFzaCB7Ci0gICAgc3Rh
dGljIHVuc2lnbmVkIGhhc2goY29uc3QgTWFwcGVkQXR0cmlidXRlS2V5Jik7Ci0gICAgc3RhdGlj
IGJvb2wgZXF1YWwoY29uc3QgTWFwcGVkQXR0cmlidXRlS2V5JiBhLCBjb25zdCBNYXBwZWRBdHRy
aWJ1dGVLZXkmIGIpIHsgcmV0dXJuIGEgPT0gYjsgfQotICAgIHN0YXRpYyBjb25zdCBib29sIHNh
ZmVUb0NvbXBhcmVUb0VtcHR5T3JEZWxldGVkID0gdHJ1ZTsKLX07Ci0KLXR5cGVkZWYgSGFzaE1h
cDxNYXBwZWRBdHRyaWJ1dGVLZXksIENTU01hcHBlZEF0dHJpYnV0ZURlY2xhcmF0aW9uKiwgTWFw
cGVkQXR0cmlidXRlSGFzaCwgTWFwcGVkQXR0cmlidXRlS2V5VHJhaXRzPiBNYXBwZWRBdHRyaWJ1
dGVEZWNsczsKLQotc3RhdGljIE1hcHBlZEF0dHJpYnV0ZURlY2xzKiBtYXBwZWRBdHRyaWJ1dGVE
ZWNscyA9IDA7Ci0KLUNTU01hcHBlZEF0dHJpYnV0ZURlY2xhcmF0aW9uKiBTdHlsZWRFbGVtZW50
OjpnZXRNYXBwZWRBdHRyaWJ1dGVEZWNsKE1hcHBlZEF0dHJpYnV0ZUVudHJ5IGVudHJ5VHlwZSwg
QXR0cmlidXRlKiBhdHRyKQotewotICAgIGlmICghbWFwcGVkQXR0cmlidXRlRGVjbHMpCi0gICAg
ICAgIHJldHVybiAwOwotICAgIHJldHVybiBtYXBwZWRBdHRyaWJ1dGVEZWNscy0+Z2V0KE1hcHBl
ZEF0dHJpYnV0ZUtleShlbnRyeVR5cGUsIGF0dHItPm5hbWUoKS5sb2NhbE5hbWUoKS5pbXBsKCks
IGF0dHItPnZhbHVlKCkuaW1wbCgpKSk7Ci19Ci0KLUNTU01hcHBlZEF0dHJpYnV0ZURlY2xhcmF0
aW9uKiBTdHlsZWRFbGVtZW50OjpnZXRNYXBwZWRBdHRyaWJ1dGVEZWNsKE1hcHBlZEF0dHJpYnV0
ZUVudHJ5IHR5cGUsIGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0IEF0b21pY1N0cmlu
ZyYgdmFsdWUpCi17Ci0gICAgaWYgKCFtYXBwZWRBdHRyaWJ1dGVEZWNscykKLSAgICAgICAgcmV0
dXJuIDA7Ci0gICAgcmV0dXJuIG1hcHBlZEF0dHJpYnV0ZURlY2xzLT5nZXQoTWFwcGVkQXR0cmli
dXRlS2V5KHR5cGUsIG5hbWUubG9jYWxOYW1lKCkuaW1wbCgpLCB2YWx1ZS5pbXBsKCkpKTsKLX0K
LQotdm9pZCBTdHlsZWRFbGVtZW50OjpzZXRNYXBwZWRBdHRyaWJ1dGVEZWNsKE1hcHBlZEF0dHJp
YnV0ZUVudHJ5IGVudHJ5VHlwZSwgQXR0cmlidXRlKiBhdHRyLCBDU1NNYXBwZWRBdHRyaWJ1dGVE
ZWNsYXJhdGlvbiogZGVjbCkKLXsKLSAgICBpZiAoIW1hcHBlZEF0dHJpYnV0ZURlY2xzKQotICAg
ICAgICBtYXBwZWRBdHRyaWJ1dGVEZWNscyA9IG5ldyBNYXBwZWRBdHRyaWJ1dGVEZWNsczsKLSAg
ICBtYXBwZWRBdHRyaWJ1dGVEZWNscy0+c2V0KE1hcHBlZEF0dHJpYnV0ZUtleShlbnRyeVR5cGUs
IGF0dHItPm5hbWUoKS5sb2NhbE5hbWUoKS5pbXBsKCksIGF0dHItPnZhbHVlKCkuaW1wbCgpKSwg
ZGVjbCk7Ci19Ci0KLXZvaWQgU3R5bGVkRWxlbWVudDo6c2V0TWFwcGVkQXR0cmlidXRlRGVjbChN
YXBwZWRBdHRyaWJ1dGVFbnRyeSBlbnRyeVR5cGUsIGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUs
IGNvbnN0IEF0b21pY1N0cmluZyYgdmFsdWUsIENTU01hcHBlZEF0dHJpYnV0ZURlY2xhcmF0aW9u
KiBkZWNsKQotewotICAgIGlmICghbWFwcGVkQXR0cmlidXRlRGVjbHMpCi0gICAgICAgIG1hcHBl
ZEF0dHJpYnV0ZURlY2xzID0gbmV3IE1hcHBlZEF0dHJpYnV0ZURlY2xzOwotICAgIG1hcHBlZEF0
dHJpYnV0ZURlY2xzLT5zZXQoTWFwcGVkQXR0cmlidXRlS2V5KGVudHJ5VHlwZSwgbmFtZS5sb2Nh
bE5hbWUoKS5pbXBsKCksIHZhbHVlLmltcGwoKSksIGRlY2wpOwotfQotCi12b2lkIFN0eWxlZEVs
ZW1lbnQ6OnJlbW92ZU1hcHBlZEF0dHJpYnV0ZURlY2woTWFwcGVkQXR0cmlidXRlRW50cnkgZW50
cnlUeXBlLCBjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSwgY29uc3QgQXRvbWljU3RyaW5n
JiBhdHRyVmFsdWUpCi17Ci0gICAgaWYgKCFtYXBwZWRBdHRyaWJ1dGVEZWNscykKLSAgICAgICAg
cmV0dXJuOwotICAgIG1hcHBlZEF0dHJpYnV0ZURlY2xzLT5yZW1vdmUoTWFwcGVkQXR0cmlidXRl
S2V5KGVudHJ5VHlwZSwgYXR0ck5hbWUubG9jYWxOYW1lKCkuaW1wbCgpLCBhdHRyVmFsdWUuaW1w
bCgpKSk7Ci19Ci0KIHZvaWQgU3R5bGVkRWxlbWVudDo6dXBkYXRlU3R5bGVBdHRyaWJ1dGUoKSBj
b25zdAogewogICAgIEFTU0VSVCghaXNTdHlsZUF0dHJpYnV0ZVZhbGlkKCkpOwpAQCAtMTM2LDU4
ICs3MywxNCBAQCB2b2lkIFN0eWxlZEVsZW1lbnQ6OmF0dHJpYnV0ZUNoYW5nZWQoQXR0cmlidXRl
KiBhdHRyLCBib29sIHByZXNlcnZlRGVjbHMpCiAgICAgICAgIEVsZW1lbnQ6OmF0dHJpYnV0ZUNo
YW5nZWQoYXR0ciwgcHJlc2VydmVEZWNscyk7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gCi0g
ICAgaWYgKGF0dHItPm1hcHBlZEF0dHJpYnV0ZURlY2xhcmF0aW9uKCkgJiYgIXByZXNlcnZlRGVj
bHMpIHsKLSAgICAgICAgYXR0ci0+c2V0TWFwcGVkQXR0cmlidXRlRGVjbGFyYXRpb24oMCk7Ci0g
ICAgICAgIHNldE5lZWRzU3R5bGVSZWNhbGMoKTsKLSAgICB9Ci0KLSAgICBib29sIGNoZWNrRGVj
bCA9IHRydWU7Ci0gICAgTWFwcGVkQXR0cmlidXRlRW50cnkgZW50cnk7Ci0gICAgYm9vbCBuZWVk
VG9QYXJzZSA9IG1hcFRvRW50cnkoYXR0ci0+bmFtZSgpLCBlbnRyeSk7Ci0gICAgaWYgKHByZXNl
cnZlRGVjbHMpIHsKLSAgICAgICAgaWYgKGF0dHItPm1hcHBlZEF0dHJpYnV0ZURlY2xhcmF0aW9u
KCkpIHsKLSAgICAgICAgICAgIHNldE5lZWRzU3R5bGVSZWNhbGMoKTsKLSAgICAgICAgICAgIGNo
ZWNrRGVjbCA9IGZhbHNlOwotICAgICAgICB9Ci0gICAgfSBlbHNlIGlmICghYXR0ci0+aXNOdWxs
KCkgJiYgZW50cnkgIT0gZU5vbmUpIHsKLSAgICAgICAgQ1NTTWFwcGVkQXR0cmlidXRlRGVjbGFy
YXRpb24qIGRlY2wgPSBnZXRNYXBwZWRBdHRyaWJ1dGVEZWNsKGVudHJ5LCBhdHRyKTsKLSAgICAg
ICAgaWYgKGRlY2wpIHsKLSAgICAgICAgICAgIGF0dHItPnNldE1hcHBlZEF0dHJpYnV0ZURlY2xh
cmF0aW9uKGRlY2wpOwotICAgICAgICAgICAgc2V0TmVlZHNTdHlsZVJlY2FsYygpOwotICAgICAg
ICAgICAgY2hlY2tEZWNsID0gZmFsc2U7Ci0gICAgICAgIH0gZWxzZQotICAgICAgICAgICAgbmVl
ZFRvUGFyc2UgPSB0cnVlOwotICAgIH0KIAotICAgIC8vIHBhcnNlTWFwcGVkQXR0cmlidXRlKCkg
bWlnaHQgY3JlYXRlIGEgQ1NTTWFwcGVkQXR0cmlidXRlRGVjbGFyYXRpb24gb24gdGhlIGF0dHJp
YnV0ZS4gIAotICAgIC8vIE5vcm1hbGx5IHdlIHdvdWxkIGJlIGNvbmNlcm5lZCBhYm91dCByZXNl
dGluZyB0aGUgcGFyZW50IG9mIHRob3NlIGRlY2xhcmF0aW9ucyBpbiBTdHlsZWRFbGVtZW50Ojpk
aWRNb3ZlVG9OZXdEb2N1bWVudCgpLgotICAgIC8vIEJ1dCBjdXJyZW50bHkgd2UgYWx3YXlzIGNs
ZWFyIGl0cyBwYXJlbnQgYW5kIG5vZGUgYmVsb3cgd2hlbiBhZGRpbmcgaXQgdG8gdGhlIGRlY2wg
dGFibGUuICAKLSAgICAvLyBJZiB0aGF0IGNoYW5nZXMgZm9yIHNvbWUgcmVhc29uIG1vdmluZyBi
ZXR3ZWVuIGRvY3VtZW50cyB3aWxsIGJlIGJ1Z2d5LgotICAgIC8vIHdlYmFyY2hpdmUvYWRvcHQt
YXR0cmlidXRlLXN0eWxlZC1ub2RlLXdlYmFyY2hpdmUuaHRtbCBzaG91bGQgY2F0Y2ggYW55IHJl
c3VsdGluZyBjcmFzaGVzLgotICAgIGlmIChuZWVkVG9QYXJzZSkKKyAgICBpZiAoIShhdHRyLT5u
YW1lKCkgPT0gc3R5bGVBdHRyICYmIGlzU3luY2hyb25pemluZ1N0eWxlQXR0cmlidXRlKCkpKQog
ICAgICAgICBwYXJzZU1hcHBlZEF0dHJpYnV0ZShhdHRyKTsKIAotICAgIGlmIChlbnRyeSA9PSBl
Tm9uZSkKLSAgICAgICAgcmVjYWxjU3R5bGVJZk5lZWRlZEFmdGVyQXR0cmlidXRlQ2hhbmdlZChh
dHRyKTsKLQotICAgIGlmIChjaGVja0RlY2wgJiYgYXR0ci0+bWFwcGVkQXR0cmlidXRlRGVjbGFy
YXRpb24oKSkgewotICAgICAgICAvLyBBZGQgdGhlIGRlY2wgdG8gdGhlIHRhYmxlIGluIHRoZSBh
cHByb3ByaWF0ZSBzcG90LgotICAgICAgICBzZXRNYXBwZWRBdHRyaWJ1dGVEZWNsKGVudHJ5LCBh
dHRyLCBhdHRyLT5tYXBwZWRBdHRyaWJ1dGVEZWNsYXJhdGlvbigpKTsKLSAgICAgICAgYXR0ci0+
bWFwcGVkQXR0cmlidXRlRGVjbGFyYXRpb24oKS0+c2V0TWFwcGVkU3RhdGUoZW50cnksIGF0dHIt
Pm5hbWUoKSwgYXR0ci0+dmFsdWUoKSk7Ci0gICAgfQotCisgICAgcmVjYWxjU3R5bGVJZk5lZWRl
ZEFmdGVyQXR0cmlidXRlQ2hhbmdlZChhdHRyKTsKICAgICB1cGRhdGVBZnRlckF0dHJpYnV0ZUNo
YW5nZWQoYXR0cik7CiB9CiAKLWJvb2wgU3R5bGVkRWxlbWVudDo6bWFwVG9FbnRyeShjb25zdCBR
dWFsaWZpZWROYW1lJiBhdHRyTmFtZSwgTWFwcGVkQXR0cmlidXRlRW50cnkmIHJlc3VsdCkgY29u
c3QKLXsKLSAgICByZXN1bHQgPSBlTm9uZTsKLSAgICBpZiAoYXR0ck5hbWUgPT0gc3R5bGVBdHRy
KQotICAgICAgICByZXR1cm4gIWlzU3luY2hyb25pemluZ1N0eWxlQXR0cmlidXRlKCk7Ci0gICAg
cmV0dXJuIHRydWU7Ci19Ci0KIHZvaWQgU3R5bGVkRWxlbWVudDo6Y2xhc3NBdHRyaWJ1dGVDaGFu
Z2VkKGNvbnN0IEF0b21pY1N0cmluZyYgbmV3Q2xhc3NTdHJpbmcpCiB7CiAgICAgY29uc3QgVUNo
YXIqIGNoYXJhY3RlcnMgPSBuZXdDbGFzc1N0cmluZy5jaGFyYWN0ZXJzKCk7CkBAIC0yMjYsNDAg
KzExOSw1MCBAQCB2b2lkIFN0eWxlZEVsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmlidXRlKEF0dHJp
YnV0ZSogYXR0cikKICAgICB9CiB9CiAKLXZvaWQgU3R5bGVkRWxlbWVudDo6cmVtb3ZlQ1NTUHJv
cGVydHkoQXR0cmlidXRlKiBhdHRyaWJ1dGUsIGludCBpZCkKK3ZvaWQgU3R5bGVkRWxlbWVudDo6
cmVtb3ZlQ1NTUHJvcGVydGllcyhpbnQgaWQxLCBpbnQgaWQyLCBpbnQgaWQzLCBpbnQgaWQ0LCBp
bnQgaWQ1LCBpbnQgaWQ2LCBpbnQgaWQ3LCBpbnQgaWQ4KQogewotICAgIGlmICghYXR0cmlidXRl
LT5tYXBwZWRBdHRyaWJ1dGVEZWNsYXJhdGlvbigpKQotICAgICAgICBjcmVhdGVNYXBwZWREZWNs
KGF0dHJpYnV0ZSk7Ci0gICAgYXR0cmlidXRlLT5tYXBwZWRBdHRyaWJ1dGVEZWNsYXJhdGlvbigp
LT5yZW1vdmVNYXBwZWRQcm9wZXJ0eSh0aGlzLCBpZCk7CisgICAgQ1NTTWFwcGVkQXR0cmlidXRl
RGVjbGFyYXRpb24qIHN0eWxlID0gYXR0cmlidXRlU3R5bGUoKTsKKyAgICBpZiAoIXN0eWxlKQor
ICAgICAgICByZXR1cm47CisKKyAgICBBU1NFUlQoaWQxICE9IENTU1Byb3BlcnR5SW52YWxpZCk7
CisgICAgc3R5bGUtPnJlbW92ZU1hcHBlZFByb3BlcnR5KHRoaXMsIGlkMSk7CisKKyAgICBpZiAo
aWQyICE9IENTU1Byb3BlcnR5SW52YWxpZCkKKyAgICAgICAgc3R5bGUtPnJlbW92ZU1hcHBlZFBy
b3BlcnR5KHRoaXMsIGlkMik7CisgICAgaWYgKGlkMyAhPSBDU1NQcm9wZXJ0eUludmFsaWQpCisg
ICAgICAgIHN0eWxlLT5yZW1vdmVNYXBwZWRQcm9wZXJ0eSh0aGlzLCBpZDMpOworICAgIGlmIChp
ZDQgIT0gQ1NTUHJvcGVydHlJbnZhbGlkKQorICAgICAgICBzdHlsZS0+cmVtb3ZlTWFwcGVkUHJv
cGVydHkodGhpcywgaWQ0KTsKKyAgICBpZiAoaWQ1ICE9IENTU1Byb3BlcnR5SW52YWxpZCkKKyAg
ICAgICAgc3R5bGUtPnJlbW92ZU1hcHBlZFByb3BlcnR5KHRoaXMsIGlkNSk7CisgICAgaWYgKGlk
NiAhPSBDU1NQcm9wZXJ0eUludmFsaWQpCisgICAgICAgIHN0eWxlLT5yZW1vdmVNYXBwZWRQcm9w
ZXJ0eSh0aGlzLCBpZDYpOworICAgIGlmIChpZDcgIT0gQ1NTUHJvcGVydHlJbnZhbGlkKQorICAg
ICAgICBzdHlsZS0+cmVtb3ZlTWFwcGVkUHJvcGVydHkodGhpcywgaWQ3KTsKKyAgICBpZiAoaWQ4
ICE9IENTU1Byb3BlcnR5SW52YWxpZCkKKyAgICAgICAgc3R5bGUtPnJlbW92ZU1hcHBlZFByb3Bl
cnR5KHRoaXMsIGlkOCk7CiB9CiAKLXZvaWQgU3R5bGVkRWxlbWVudDo6YWRkQ1NTUHJvcGVydHko
QXR0cmlidXRlKiBhdHRyaWJ1dGUsIGludCBpZCwgY29uc3QgU3RyaW5nICZ2YWx1ZSkKK3ZvaWQg
U3R5bGVkRWxlbWVudDo6YWRkQ1NTUHJvcGVydHkoaW50IGlkLCBjb25zdCBTdHJpbmcgJnZhbHVl
KQogewotICAgIGlmICghYXR0cmlidXRlLT5tYXBwZWRBdHRyaWJ1dGVEZWNsYXJhdGlvbigpKQot
ICAgICAgICBjcmVhdGVNYXBwZWREZWNsKGF0dHJpYnV0ZSk7Ci0gICAgYXR0cmlidXRlLT5tYXBw
ZWRBdHRyaWJ1dGVEZWNsYXJhdGlvbigpLT5zZXRNYXBwZWRQcm9wZXJ0eSh0aGlzLCBpZCwgdmFs
dWUpOworICAgIGVuc3VyZUF0dHJpYnV0ZVN0eWxlKCktPnNldE1hcHBlZFByb3BlcnR5KHRoaXMs
IGlkLCB2YWx1ZSk7CiB9CiAKLXZvaWQgU3R5bGVkRWxlbWVudDo6YWRkQ1NTUHJvcGVydHkoQXR0
cmlidXRlKiBhdHRyaWJ1dGUsIGludCBpZCwgaW50IHZhbHVlKQordm9pZCBTdHlsZWRFbGVtZW50
OjphZGRDU1NQcm9wZXJ0eShpbnQgaWQsIGludCB2YWx1ZSkKIHsKLSAgICBpZiAoIWF0dHJpYnV0
ZS0+bWFwcGVkQXR0cmlidXRlRGVjbGFyYXRpb24oKSkKLSAgICAgICAgY3JlYXRlTWFwcGVkRGVj
bChhdHRyaWJ1dGUpOwotICAgIGF0dHJpYnV0ZS0+bWFwcGVkQXR0cmlidXRlRGVjbGFyYXRpb24o
KS0+c2V0TWFwcGVkUHJvcGVydHkodGhpcywgaWQsIHZhbHVlKTsKKyAgICBlbnN1cmVBdHRyaWJ1
dGVTdHlsZSgpLT5zZXRNYXBwZWRQcm9wZXJ0eSh0aGlzLCBpZCwgdmFsdWUpOwogfQogCi12b2lk
IFN0eWxlZEVsZW1lbnQ6OmFkZENTU0ltYWdlUHJvcGVydHkoQXR0cmlidXRlKiBhdHRyaWJ1dGUs
IGludCBpZCwgY29uc3QgU3RyaW5nJiB1cmwpCit2b2lkIFN0eWxlZEVsZW1lbnQ6OmFkZENTU0lt
YWdlUHJvcGVydHkoaW50IGlkLCBjb25zdCBTdHJpbmcmIHVybCkKIHsKLSAgICBpZiAoIWF0dHJp
YnV0ZS0+bWFwcGVkQXR0cmlidXRlRGVjbGFyYXRpb24oKSkKLSAgICAgICAgY3JlYXRlTWFwcGVk
RGVjbChhdHRyaWJ1dGUpOwotICAgIGF0dHJpYnV0ZS0+bWFwcGVkQXR0cmlidXRlRGVjbGFyYXRp
b24oKS0+c2V0TWFwcGVkSW1hZ2VQcm9wZXJ0eSh0aGlzLCBpZCwgdXJsKTsKKyAgICBlbnN1cmVB
dHRyaWJ1dGVTdHlsZSgpLT5zZXRNYXBwZWRJbWFnZVByb3BlcnR5KHRoaXMsIGlkLCB1cmwpOwog
fQogCi12b2lkIFN0eWxlZEVsZW1lbnQ6OmFkZENTU0xlbmd0aChBdHRyaWJ1dGUqIGF0dHJpYnV0
ZSwgaW50IGlkLCBjb25zdCBTdHJpbmcgJnZhbHVlKQordm9pZCBTdHlsZWRFbGVtZW50OjphZGRD
U1NMZW5ndGgoaW50IGlkLCBjb25zdCBTdHJpbmcgJnZhbHVlKQogewogICAgIC8vIEZJWE1FOiBU
aGlzIGZ1bmN0aW9uIHNob3VsZCBub3Qgc3BpbiB1cCB0aGUgQ1NTIHBhcnNlciwgYnV0IHNob3Vs
ZCBpbnN0ZWFkIGp1c3QgZmlndXJlIG91dCB0aGUgY29ycmVjdAogICAgIC8vIGxlbmd0aCB1bml0
IGFuZCBtYWtlIHRoZSBhcHByb3ByaWF0ZSBwYXJzZWQgdmFsdWUuCi0gICAgaWYgKCFhdHRyaWJ1
dGUtPm1hcHBlZEF0dHJpYnV0ZURlY2xhcmF0aW9uKCkpCi0gICAgICAgIGNyZWF0ZU1hcHBlZERl
Y2woYXR0cmlidXRlKTsKIAogICAgIC8vIHN0cmlwIGF0dHJpYnV0ZSBnYXJiYWdlLi4KICAgICBT
dHJpbmdJbXBsKiB2ID0gdmFsdWUuaW1wbCgpOwpAQCAtMjgyLDEyICsxODUsMTIgQEAgdm9pZCBT
dHlsZWRFbGVtZW50OjphZGRDU1NMZW5ndGgoQXR0cmlidXRlKiBhdHRyaWJ1dGUsIGludCBpZCwg
Y29uc3QgU3RyaW5nICZ2YWwKICAgICAgICAgfQogCiAgICAgICAgIGlmIChsICE9IHYtPmxlbmd0
aCgpKSB7Ci0gICAgICAgICAgICBhdHRyaWJ1dGUtPm1hcHBlZEF0dHJpYnV0ZURlY2xhcmF0aW9u
KCktPnNldE1hcHBlZExlbmd0aFByb3BlcnR5KHRoaXMsIGlkLCB2LT5zdWJzdHJpbmcoMCwgbCkp
OworICAgICAgICAgICAgZW5zdXJlQXR0cmlidXRlU3R5bGUoKS0+c2V0TWFwcGVkTGVuZ3RoUHJv
cGVydHkodGhpcywgaWQsIHYtPnN1YnN0cmluZygwLCBsKSk7CiAgICAgICAgICAgICByZXR1cm47
CiAgICAgICAgIH0KICAgICB9CiAKLSAgICBhdHRyaWJ1dGUtPm1hcHBlZEF0dHJpYnV0ZURlY2xh
cmF0aW9uKCktPnNldE1hcHBlZExlbmd0aFByb3BlcnR5KHRoaXMsIGlkLCB2YWx1ZSk7CisgICAg
ZW5zdXJlQXR0cmlidXRlU3R5bGUoKS0+c2V0TWFwcGVkTGVuZ3RoUHJvcGVydHkodGhpcywgaWQs
IHZhbHVlKTsKIH0KIAogc3RhdGljIFN0cmluZyBwYXJzZUNvbG9yU3RyaW5nV2l0aENyYXp5TGVn
YWN5UnVsZXMoY29uc3QgU3RyaW5nJiBjb2xvclN0cmluZykKQEAgLTM0Myw1NyArMjQ2LDMwIEBA
IHN0YXRpYyBTdHJpbmcgcGFyc2VDb2xvclN0cmluZ1dpdGhDcmF6eUxlZ2FjeVJ1bGVzKGNvbnN0
IFN0cmluZyYgY29sb3JTdHJpbmcpCiB9CiAKIC8vIENvbG9yIHBhcnNpbmcgdGhhdCBtYXRjaGVz
IEhUTUwncyAicnVsZXMgZm9yIHBhcnNpbmcgYSBsZWdhY3kgY29sb3IgdmFsdWUiCi12b2lkIFN0
eWxlZEVsZW1lbnQ6OmFkZENTU0NvbG9yKEF0dHJpYnV0ZSogYXR0cmlidXRlLCBpbnQgaWQsIGNv
bnN0IFN0cmluZyYgYXR0cmlidXRlVmFsdWUpCit2b2lkIFN0eWxlZEVsZW1lbnQ6OmFkZENTU0Nv
bG9yKGludCBpZCwgY29uc3QgU3RyaW5nJiBhdHRyaWJ1dGVWYWx1ZSkKIHsKICAgICAvLyBBbiBl
bXB0eSBzdHJpbmcgZG9lc24ndCBhcHBseSBhIGNvbG9yLiAoT25lIGNvbnRhaW5pbmcgb25seSB3
aGl0ZXNwYWNlIGRvZXMsIHdoaWNoIGlzIHdoeSB0aGlzIGNoZWNrIG9jY3VycyBiZWZvcmUgc3Ry
aXBwaW5nLikKLSAgICBpZiAoYXR0cmlidXRlVmFsdWUuaXNFbXB0eSgpKQorICAgIGlmIChhdHRy
aWJ1dGVWYWx1ZS5pc0VtcHR5KCkpIHsKKyAgICAgICAgcmVtb3ZlQ1NTUHJvcGVydHkoaWQpOwog
ICAgICAgICByZXR1cm47CisgICAgfQogCiAgICAgU3RyaW5nIGNvbG9yU3RyaW5nID0gYXR0cmli
dXRlVmFsdWUuc3RyaXBXaGl0ZVNwYWNlKCk7CiAKICAgICAvLyAidHJhbnNwYXJlbnQiIGRvZXNu
J3QgYXBwbHkgYSBjb2xvciBlaXRoZXIuCi0gICAgaWYgKGVxdWFsSWdub3JpbmdDYXNlKGNvbG9y
U3RyaW5nLCAidHJhbnNwYXJlbnQiKSkKKyAgICBpZiAoZXF1YWxJZ25vcmluZ0Nhc2UoY29sb3JT
dHJpbmcsICJ0cmFuc3BhcmVudCIpKSB7CisgICAgICAgIHJlbW92ZUNTU1Byb3BlcnR5KGlkKTsK
ICAgICAgICAgcmV0dXJuOwotCi0gICAgaWYgKCFhdHRyaWJ1dGUtPm1hcHBlZEF0dHJpYnV0ZURl
Y2xhcmF0aW9uKCkpCi0gICAgICAgIGNyZWF0ZU1hcHBlZERlY2woYXR0cmlidXRlKTsKKyAgICB9
CiAKICAgICAvLyBJZiB0aGUgc3RyaW5nIGlzIGEgbmFtZWQgQ1NTIGNvbG9yIG9yIGEgMy82LWRp
Z2l0IGhleCBjb2xvciwgdXNlIHRoYXQuCiAgICAgQ29sb3IgcGFyc2VkQ29sb3IoY29sb3JTdHJp
bmcpOwogICAgIGlmIChwYXJzZWRDb2xvci5pc1ZhbGlkKCkpIHsKLSAgICAgICAgYXR0cmlidXRl
LT5tYXBwZWRBdHRyaWJ1dGVEZWNsYXJhdGlvbigpLT5zZXRNYXBwZWRQcm9wZXJ0eSh0aGlzLCBp
ZCwgY29sb3JTdHJpbmcpOworICAgICAgICBlbnN1cmVBdHRyaWJ1dGVTdHlsZSgpLT5zZXRNYXBw
ZWRQcm9wZXJ0eSh0aGlzLCBpZCwgY29sb3JTdHJpbmcpOwogICAgICAgICByZXR1cm47CiAgICAg
fQogCi0gICAgYXR0cmlidXRlLT5tYXBwZWRBdHRyaWJ1dGVEZWNsYXJhdGlvbigpLT5zZXRNYXBw
ZWRQcm9wZXJ0eSh0aGlzLCBpZCwgcGFyc2VDb2xvclN0cmluZ1dpdGhDcmF6eUxlZ2FjeVJ1bGVz
KGNvbG9yU3RyaW5nKSk7Ci19Ci0KLXZvaWQgU3R5bGVkRWxlbWVudDo6Y3JlYXRlTWFwcGVkRGVj
bChBdHRyaWJ1dGUqIGF0dHIpCi17Ci0gICAgUmVmUHRyPENTU01hcHBlZEF0dHJpYnV0ZURlY2xh
cmF0aW9uPiBkZWNsID0gQ1NTTWFwcGVkQXR0cmlidXRlRGVjbGFyYXRpb246OmNyZWF0ZSgpOwot
ICAgIGF0dHItPnNldE1hcHBlZEF0dHJpYnV0ZURlY2xhcmF0aW9uKGRlY2wpOwotICAgIEFTU0VS
VCghZGVjbC0+ZGVjbGFyYXRpb24oKS0+dXNlU3RyaWN0UGFyc2luZygpKTsKLX0KLQotdW5zaWdu
ZWQgTWFwcGVkQXR0cmlidXRlSGFzaDo6aGFzaChjb25zdCBNYXBwZWRBdHRyaWJ1dGVLZXkmIGtl
eSkKLXsKLSAgICBDT01QSUxFX0FTU0VSVChzaXplb2Yoa2V5Lm5hbWUpID09IDQgfHwgc2l6ZW9m
KGtleS5uYW1lKSA9PSA4LCBrZXlfbmFtZV9zaXplKTsKLSAgICBDT01QSUxFX0FTU0VSVChzaXpl
b2Yoa2V5LnZhbHVlKSA9PSA0IHx8IHNpemVvZihrZXkudmFsdWUpID09IDgsIGtleV92YWx1ZV9z
aXplKTsKLQotICAgIFN0cmluZ0hhc2hlciBoYXNoZXI7Ci0gICAgY29uc3QgVUNoYXIqIGRhdGE7
Ci0KLSAgICBkYXRhID0gcmVpbnRlcnByZXRfY2FzdDxjb25zdCBVQ2hhcio+KCZrZXkubmFtZSk7
Ci0gICAgaGFzaGVyLmFkZENoYXJhY3RlcnMoZGF0YVswXSwgZGF0YVsxXSk7Ci0gICAgaWYgKHNp
emVvZihrZXkubmFtZSkgPT0gOCkKLSAgICAgICAgaGFzaGVyLmFkZENoYXJhY3RlcnMoZGF0YVsy
XSwgZGF0YVszXSk7Ci0KLSAgICBkYXRhID0gcmVpbnRlcnByZXRfY2FzdDxjb25zdCBVQ2hhcio+
KCZrZXkudmFsdWUpOwotICAgIGhhc2hlci5hZGRDaGFyYWN0ZXJzKGRhdGFbMF0sIGRhdGFbMV0p
OwotICAgIGlmIChzaXplb2Yoa2V5LnZhbHVlKSA9PSA4KQotICAgICAgICBoYXNoZXIuYWRkQ2hh
cmFjdGVycyhkYXRhWzJdLCBkYXRhWzNdKTsKLQotICAgIHJldHVybiBoYXNoZXIuaGFzaCgpOwor
ICAgIGVuc3VyZUF0dHJpYnV0ZVN0eWxlKCktPnNldE1hcHBlZFByb3BlcnR5KHRoaXMsIGlkLCBw
YXJzZUNvbG9yU3RyaW5nV2l0aENyYXp5TGVnYWN5UnVsZXMoY29sb3JTdHJpbmcpKTsKIH0KIAog
dm9pZCBTdHlsZWRFbGVtZW50Ojpjb3B5Tm9uQXR0cmlidXRlUHJvcGVydGllcyhjb25zdCBFbGVt
ZW50KiBzb3VyY2VFbGVtZW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1N0eWxl
ZEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TdHlsZWRFbGVtZW50LmgKaW5kZXggMTNh
NDAyOC4uMmI4ZGEyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1N0eWxlZEVsZW1l
bnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU3R5bGVkRWxlbWVudC5oCkBAIC0zOSwyMSAr
MzksMTQgQEAgcHVibGljOgogICAgIHZpcnR1YWwgflN0eWxlZEVsZW1lbnQoKTsKIAogICAgIHNp
emVfdCBtYXBwZWRBdHRyaWJ1dGVDb3VudCgpIGNvbnN0IHsgcmV0dXJuIGF0dHJpYnV0ZU1hcCgp
ID8gYXR0cmlidXRlTWFwKCktPm1hcHBlZEF0dHJpYnV0ZUNvdW50KCkgOiAwOyB9Ci0gICAgYm9v
bCBpc01hcHBlZEF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lKSBjb25zdCB7IE1h
cHBlZEF0dHJpYnV0ZUVudHJ5IHJlcyA9IGVOb25lOyBtYXBUb0VudHJ5KG5hbWUsIHJlcyk7IHJl
dHVybiByZXMgIT0gZU5vbmU7IH0KIAotICAgIHZvaWQgYWRkQ1NTTGVuZ3RoKEF0dHJpYnV0ZSos
IGludCBpZCwgY29uc3QgU3RyaW5nJiB2YWx1ZSk7Ci0gICAgdm9pZCBhZGRDU1NQcm9wZXJ0eShB
dHRyaWJ1dGUqLCBpbnQgaWQsIGNvbnN0IFN0cmluZyYgdmFsdWUpOwotICAgIHZvaWQgYWRkQ1NT
UHJvcGVydHkoQXR0cmlidXRlKiwgaW50IGlkLCBpbnQgdmFsdWUpOwotICAgIHZvaWQgYWRkQ1NT
SW1hZ2VQcm9wZXJ0eShBdHRyaWJ1dGUqLCBpbnQgcHJvcGVydHlJRCwgY29uc3QgU3RyaW5nJiB1
cmwpOwotICAgIHZvaWQgYWRkQ1NTQ29sb3IoQXR0cmlidXRlKiwgaW50IGlkLCBjb25zdCBTdHJp
bmcmIGNvbG9yKTsKLSAgICB2b2lkIHJlbW92ZUNTU1Byb3BlcnR5KEF0dHJpYnV0ZSosIGludCBp
ZCk7Ci0KLSAgICBzdGF0aWMgQ1NTTWFwcGVkQXR0cmlidXRlRGVjbGFyYXRpb24qIGdldE1hcHBl
ZEF0dHJpYnV0ZURlY2woTWFwcGVkQXR0cmlidXRlRW50cnksIGNvbnN0IFF1YWxpZmllZE5hbWUm
IG5hbWUsIGNvbnN0IEF0b21pY1N0cmluZyYgdmFsdWUpOwotICAgIHN0YXRpYyB2b2lkIHNldE1h
cHBlZEF0dHJpYnV0ZURlY2woTWFwcGVkQXR0cmlidXRlRW50cnksIGNvbnN0IFF1YWxpZmllZE5h
bWUmIG5hbWUsIGNvbnN0IEF0b21pY1N0cmluZyYgdmFsdWUsIENTU01hcHBlZEF0dHJpYnV0ZURl
Y2xhcmF0aW9uKik7Ci0gICAgc3RhdGljIHZvaWQgcmVtb3ZlTWFwcGVkQXR0cmlidXRlRGVjbChN
YXBwZWRBdHRyaWJ1dGVFbnRyeSwgY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRv
bWljU3RyaW5nJiB2YWx1ZSk7Ci0KLSAgICBzdGF0aWMgQ1NTTWFwcGVkQXR0cmlidXRlRGVjbGFy
YXRpb24qIGdldE1hcHBlZEF0dHJpYnV0ZURlY2woTWFwcGVkQXR0cmlidXRlRW50cnksIEF0dHJp
YnV0ZSopOwotICAgIHN0YXRpYyB2b2lkIHNldE1hcHBlZEF0dHJpYnV0ZURlY2woTWFwcGVkQXR0
cmlidXRlRW50cnksIEF0dHJpYnV0ZSosIENTU01hcHBlZEF0dHJpYnV0ZURlY2xhcmF0aW9uKik7
CisgICAgdm9pZCBhZGRDU1NMZW5ndGgoaW50IGlkLCBjb25zdCBTdHJpbmcmIHZhbHVlKTsKKyAg
ICB2b2lkIGFkZENTU1Byb3BlcnR5KGludCBpZCwgY29uc3QgU3RyaW5nJiB2YWx1ZSk7CisgICAg
dm9pZCBhZGRDU1NQcm9wZXJ0eShpbnQgaWQsIGludCB2YWx1ZSk7CisgICAgdm9pZCBhZGRDU1NJ
bWFnZVByb3BlcnR5KGludCBwcm9wZXJ0eUlELCBjb25zdCBTdHJpbmcmIHVybCk7CisgICAgdm9p
ZCBhZGRDU1NDb2xvcihpbnQgaWQsIGNvbnN0IFN0cmluZyYgY29sb3IpOworICAgIHZvaWQgcmVt
b3ZlQ1NTUHJvcGVydGllcyhpbnQgaWQxLCBpbnQgaWQyID0gQ1NTUHJvcGVydHlJbnZhbGlkLCBp
bnQgaWQzID0gQ1NTUHJvcGVydHlJbnZhbGlkLCBpbnQgaWQ0ID0gQ1NTUHJvcGVydHlJbnZhbGlk
LCBpbnQgaWQ1ID0gQ1NTUHJvcGVydHlJbnZhbGlkLCBpbnQgaWQ2ID0gQ1NTUHJvcGVydHlJbnZh
bGlkLCBpbnQgaWQ3ID0gQ1NTUHJvcGVydHlJbnZhbGlkLCBpbnQgaWQ4ID0gQ1NTUHJvcGVydHlJ
bnZhbGlkKTsKKyAgICB2b2lkIHJlbW92ZUNTU1Byb3BlcnR5KGludCBpZCkgeyByZW1vdmVDU1NQ
cm9wZXJ0aWVzKGlkKTsgfQogCiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPFN0eWxlUHJvcGVydHlT
ZXQ+IGFkZGl0aW9uYWxBdHRyaWJ1dGVTdHlsZSgpIHsgcmV0dXJuIDA7IH0KICAgICB2b2lkIGlu
dmFsaWRhdGVTdHlsZUF0dHJpYnV0ZSgpOwpAQCAtNjIsOSArNTUsMTAgQEAgcHVibGljOgogICAg
IFN0eWxlUHJvcGVydHlTZXQqIGVuc3VyZUlubGluZVN0eWxlRGVjbCgpIHsgcmV0dXJuIGVuc3Vy
ZUF0dHJpYnV0ZU1hcCgpLT5lbnN1cmVJbmxpbmVTdHlsZURlY2woKTsgfQogICAgIHZpcnR1YWwg
Q1NTU3R5bGVEZWNsYXJhdGlvbiogc3R5bGUoKSBPVkVSUklERSB7IHJldHVybiBlbnN1cmVJbmxp
bmVTdHlsZURlY2woKS0+ZW5zdXJlQ1NTU3R5bGVEZWNsYXJhdGlvbigpOyB9CiAKLSAgICBjb25z
dCBTcGFjZVNwbGl0U3RyaW5nJiBjbGFzc05hbWVzKCkgY29uc3Q7CisgICAgQ1NTTWFwcGVkQXR0
cmlidXRlRGVjbGFyYXRpb24qIGF0dHJpYnV0ZVN0eWxlKCkgY29uc3QgeyByZXR1cm4gYXR0cmli
dXRlTWFwKCkgPyBhdHRyaWJ1dGVNYXAoKS0+YXR0cmlidXRlU3R5bGUoKSA6IDA7IH0KKyAgICBD
U1NNYXBwZWRBdHRyaWJ1dGVEZWNsYXJhdGlvbiogZW5zdXJlQXR0cmlidXRlU3R5bGUoKSB7IHJl
dHVybiBlbnN1cmVBdHRyaWJ1dGVNYXAoKS0+ZW5zdXJlQXR0cmlidXRlU3R5bGUoKTsgfQogCi0g
ICAgdmlydHVhbCBib29sIG1hcFRvRW50cnkoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUs
IE1hcHBlZEF0dHJpYnV0ZUVudHJ5JiByZXN1bHQpIGNvbnN0OworICAgIGNvbnN0IFNwYWNlU3Bs
aXRTdHJpbmcmIGNsYXNzTmFtZXMoKSBjb25zdDsKIAogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxB
dHRyaWJ1dGU+IGNyZWF0ZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3QgQXRv
bWljU3RyaW5nJiB2YWx1ZSk7CiAKQEAgLTg2LDggKzgwLDYgQEAgcHJvdGVjdGVkOgogICAgIHZv
aWQgY2xhc3NBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IEF0b21pY1N0cmluZyYgbmV3Q2xhc3NTdHJp
bmcpOwogCiBwcml2YXRlOgotICAgIHZvaWQgY3JlYXRlTWFwcGVkRGVjbChBdHRyaWJ1dGUqKTsK
LQogICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVTdHlsZUF0dHJpYnV0ZSgpIGNvbnN0OwogCiAgICAg
dm9pZCBkZXN0cm95SW5saW5lU3R5bGVEZWNsKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTEJSRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxCUkVsZW1l
bnQuY3BwCmluZGV4IDI2MzkwNjAuLjEwNDQ0MTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTEJSRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQlJF
bGVtZW50LmNwcApAQCAtNDgsMjcgKzQ4LDE4IEBAIFBhc3NSZWZQdHI8SFRNTEJSRWxlbWVudD4g
SFRNTEJSRWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvCiAg
ICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBIVE1MQlJFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KSk7
CiB9CiAKLWJvb2wgSFRNTEJSRWxlbWVudDo6bWFwVG9FbnRyeShjb25zdCBRdWFsaWZpZWROYW1l
JiBhdHRyTmFtZSwgTWFwcGVkQXR0cmlidXRlRW50cnkmIHJlc3VsdCkgY29uc3QKLXsKLSAgICBp
ZiAoYXR0ck5hbWUgPT0gY2xlYXJBdHRyKSB7Ci0gICAgICAgIHJlc3VsdCA9IGVVbml2ZXJzYWw7
Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0gICAgCi0gICAgcmV0dXJuIEhUTUxFbGVt
ZW50OjptYXBUb0VudHJ5KGF0dHJOYW1lLCByZXN1bHQpOwotfQotCiB2b2lkIEhUTUxCUkVsZW1l
bnQ6OnBhcnNlTWFwcGVkQXR0cmlidXRlKEF0dHJpYnV0ZSogYXR0cikKIHsKICAgICBpZiAoYXR0
ci0+bmFtZSgpID09IGNsZWFyQXR0cikgewogICAgICAgICAvLyBJZiB0aGUgc3RyaW5nIGlzIGVt
cHR5LCB0aGVuIGRvbid0IGFkZCB0aGUgY2xlYXIgcHJvcGVydHkuIAogICAgICAgICAvLyA8YnIg
Y2xlYXI+IGFuZCA8YnIgY2xlYXI9IiI+IGFyZSBqdXN0IHRyZWF0ZWQgbGlrZSA8YnI+IGJ5IEdl
Y2tvLCBNYWMgSUUsIGV0Yy4gLWR3aAotICAgICAgICBjb25zdCBBdG9taWNTdHJpbmcmIHN0ciA9
IGF0dHItPnZhbHVlKCk7Ci0gICAgICAgIGlmICghc3RyLmlzRW1wdHkoKSkgewotICAgICAgICAg
ICAgaWYgKGVxdWFsSWdub3JpbmdDYXNlKHN0ciwgImFsbCIpKQotICAgICAgICAgICAgICAgIGFk
ZENTU1Byb3BlcnR5KGF0dHIsIENTU1Byb3BlcnR5Q2xlYXIsICJib3RoIik7CisgICAgICAgIGlm
IChhdHRyLT52YWx1ZSgpLmlzTnVsbCgpKQorICAgICAgICAgICAgcmVtb3ZlQ1NTUHJvcGVydHko
Q1NTUHJvcGVydHlDbGVhcik7CisgICAgICAgIGVsc2UgaWYgKCFhdHRyLT52YWx1ZSgpLmlzRW1w
dHkoKSkgeworICAgICAgICAgICAgaWYgKGVxdWFsSWdub3JpbmdDYXNlKGF0dHItPnZhbHVlKCks
ICJhbGwiKSkKKyAgICAgICAgICAgICAgICBhZGRDU1NQcm9wZXJ0eShDU1NQcm9wZXJ0eUNsZWFy
LCAiYm90aCIpOwogICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIGFkZENTU1Byb3Bl
cnR5KGF0dHIsIENTU1Byb3BlcnR5Q2xlYXIsIHN0cik7CisgICAgICAgICAgICAgICAgYWRkQ1NT
UHJvcGVydHkoQ1NTUHJvcGVydHlDbGVhciwgYXR0ci0+dmFsdWUoKSk7CiAgICAgICAgIH0KICAg
ICB9IGVsc2UKICAgICAgICAgSFRNTEVsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmlidXRlKGF0dHIp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQlJFbGVtZW50LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxCUkVsZW1lbnQuaAppbmRleCAzODU3YTliLi41NzA1MzE1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxCUkVsZW1lbnQuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxCUkVsZW1lbnQuaApAQCAtMzgsNyArMzgsNiBAQCBwdWJsaWM6
CiBwcml2YXRlOgogICAgIEhUTUxCUkVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3Vt
ZW50Kik7CiAKLSAgICB2aXJ0dWFsIGJvb2wgbWFwVG9FbnRyeShjb25zdCBRdWFsaWZpZWROYW1l
JiwgTWFwcGVkQXR0cmlidXRlRW50cnkmKSBjb25zdDsKICAgICB2aXJ0dWFsIHZvaWQgcGFyc2VN
YXBwZWRBdHRyaWJ1dGUoQXR0cmlidXRlKik7CiAgICAgCiAgICAgdmlydHVhbCBSZW5kZXJPYmpl
Y3QqIGNyZWF0ZVJlbmRlcmVyKFJlbmRlckFyZW5hKiwgUmVuZGVyU3R5bGUqKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEJvZHlFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTEJvZHlFbGVtZW50LmNwcAppbmRleCA2NTU4ZDQ2Li5hZjU5MjhmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxCb2R5RWxlbWVudC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MQm9keUVsZW1lbnQuY3BwCkBAIC02MCw0NiArNjAsNDMgQEAg
SFRNTEJvZHlFbGVtZW50Ojp+SFRNTEJvZHlFbGVtZW50KCkKIHsKIH0KIAotYm9vbCBIVE1MQm9k
eUVsZW1lbnQ6Om1hcFRvRW50cnkoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUsIE1hcHBl
ZEF0dHJpYnV0ZUVudHJ5JiByZXN1bHQpIGNvbnN0Ci17Ci0gICAgaWYgKGF0dHJOYW1lID09IGJh
Y2tncm91bmRBdHRyKSB7Ci0gICAgICAgIHJlc3VsdCA9IChNYXBwZWRBdHRyaWJ1dGVFbnRyeSko
ZUxhc3RFbnRyeSArIGRvY3VtZW50KCktPmRvY0lEKCkpOwotICAgICAgICByZXR1cm4gZmFsc2U7
Ci0gICAgfSAKLSAgICAKLSAgICBpZiAoYXR0ck5hbWUgPT0gYmdjb2xvckF0dHIgfHwKLSAgICAg
ICAgYXR0ck5hbWUgPT0gdGV4dEF0dHIgfHwKLSAgICAgICAgYXR0ck5hbWUgPT0gbWFyZ2lud2lk
dGhBdHRyIHx8Ci0gICAgICAgIGF0dHJOYW1lID09IGxlZnRtYXJnaW5BdHRyIHx8Ci0gICAgICAg
IGF0dHJOYW1lID09IG1hcmdpbmhlaWdodEF0dHIgfHwKLSAgICAgICAgYXR0ck5hbWUgPT0gdG9w
bWFyZ2luQXR0ciB8fAotICAgICAgICBhdHRyTmFtZSA9PSBiZ3Byb3BlcnRpZXNBdHRyKSB7Ci0g
ICAgICAgIHJlc3VsdCA9IGVVbml2ZXJzYWw7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9
Ci0KLSAgICByZXR1cm4gSFRNTEVsZW1lbnQ6Om1hcFRvRW50cnkoYXR0ck5hbWUsIHJlc3VsdCk7
Ci19Ci0KIHZvaWQgSFRNTEJvZHlFbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpYnV0ZShBdHRyaWJ1
dGUqIGF0dHIpCiB7CiAgICAgaWYgKGF0dHItPm5hbWUoKSA9PSBiYWNrZ3JvdW5kQXR0cikgewog
ICAgICAgICBTdHJpbmcgdXJsID0gc3RyaXBMZWFkaW5nQW5kVHJhaWxpbmdIVE1MU3BhY2VzKGF0
dHItPnZhbHVlKCkpOwogICAgICAgICBpZiAoIXVybC5pc0VtcHR5KCkpCi0gICAgICAgICAgICBh
ZGRDU1NJbWFnZVByb3BlcnR5KGF0dHIsIENTU1Byb3BlcnR5QmFja2dyb3VuZEltYWdlLCBkb2N1
bWVudCgpLT5jb21wbGV0ZVVSTCh1cmwpLnN0cmluZygpKTsKKyAgICAgICAgICAgIGFkZENTU0lt
YWdlUHJvcGVydHkoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kSW1hZ2UsIGRvY3VtZW50KCktPmNvbXBs
ZXRlVVJMKHVybCkuc3RyaW5nKCkpOworICAgICAgICBlbHNlCisgICAgICAgICAgICByZW1vdmVD
U1NQcm9wZXJ0eShDU1NQcm9wZXJ0eUJhY2tncm91bmRJbWFnZSk7CiAgICAgfSBlbHNlIGlmIChh
dHRyLT5uYW1lKCkgPT0gbWFyZ2lud2lkdGhBdHRyIHx8IGF0dHItPm5hbWUoKSA9PSBsZWZ0bWFy
Z2luQXR0cikgewotICAgICAgICBhZGRDU1NMZW5ndGgoYXR0ciwgQ1NTUHJvcGVydHlNYXJnaW5S
aWdodCwgYXR0ci0+dmFsdWUoKSk7Ci0gICAgICAgIGFkZENTU0xlbmd0aChhdHRyLCBDU1NQcm9w
ZXJ0eU1hcmdpbkxlZnQsIGF0dHItPnZhbHVlKCkpOworICAgICAgICBpZiAoYXR0ci0+dmFsdWUo
KS5pc051bGwoKSkKKyAgICAgICAgICAgIHJlbW92ZUNTU1Byb3BlcnRpZXMoQ1NTUHJvcGVydHlN
YXJnaW5SaWdodCwgQ1NTUHJvcGVydHlNYXJnaW5MZWZ0KTsKKyAgICAgICAgZWxzZSB7CisgICAg
ICAgICAgICBhZGRDU1NMZW5ndGgoQ1NTUHJvcGVydHlNYXJnaW5SaWdodCwgYXR0ci0+dmFsdWUo
KSk7CisgICAgICAgICAgICBhZGRDU1NMZW5ndGgoQ1NTUHJvcGVydHlNYXJnaW5MZWZ0LCBhdHRy
LT52YWx1ZSgpKTsKKyAgICAgICAgfQogICAgIH0gZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09IG1h
cmdpbmhlaWdodEF0dHIgfHwgYXR0ci0+bmFtZSgpID09IHRvcG1hcmdpbkF0dHIpIHsKLSAgICAg
ICAgYWRkQ1NTTGVuZ3RoKGF0dHIsIENTU1Byb3BlcnR5TWFyZ2luQm90dG9tLCBhdHRyLT52YWx1
ZSgpKTsKLSAgICAgICAgYWRkQ1NTTGVuZ3RoKGF0dHIsIENTU1Byb3BlcnR5TWFyZ2luVG9wLCBh
dHRyLT52YWx1ZSgpKTsKKyAgICAgICAgaWYgKGF0dHItPnZhbHVlKCkuaXNOdWxsKCkpCisgICAg
ICAgICAgICByZW1vdmVDU1NQcm9wZXJ0aWVzKENTU1Byb3BlcnR5TWFyZ2luQm90dG9tLCBDU1NQ
cm9wZXJ0eU1hcmdpblRvcCk7CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgYWRkQ1NTTGVu
Z3RoKENTU1Byb3BlcnR5TWFyZ2luQm90dG9tLCBhdHRyLT52YWx1ZSgpKTsKKyAgICAgICAgICAg
IGFkZENTU0xlbmd0aChDU1NQcm9wZXJ0eU1hcmdpblRvcCwgYXR0ci0+dmFsdWUoKSk7CisgICAg
ICAgIH0KICAgICB9IGVsc2UgaWYgKGF0dHItPm5hbWUoKSA9PSBiZ2NvbG9yQXR0cikgewotICAg
ICAgICBhZGRDU1NDb2xvcihhdHRyLCBDU1NQcm9wZXJ0eUJhY2tncm91bmRDb2xvciwgYXR0ci0+
dmFsdWUoKSk7CisgICAgICAgIGlmIChhdHRyLT52YWx1ZSgpLmlzTnVsbCgpKQorICAgICAgICAg
ICAgcmVtb3ZlQ1NTUHJvcGVydHkoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQ29sb3IpOworICAgICAg
ICBlbHNlCisgICAgICAgICAgICBhZGRDU1NDb2xvcihDU1NQcm9wZXJ0eUJhY2tncm91bmRDb2xv
ciwgYXR0ci0+dmFsdWUoKSk7CiAgICAgfSBlbHNlIGlmIChhdHRyLT5uYW1lKCkgPT0gdGV4dEF0
dHIpIHsKLSAgICAgICAgYWRkQ1NTQ29sb3IoYXR0ciwgQ1NTUHJvcGVydHlDb2xvciwgYXR0ci0+
dmFsdWUoKSk7CisgICAgICAgIGlmIChhdHRyLT52YWx1ZSgpLmlzTnVsbCgpKQorICAgICAgICAg
ICAgcmVtb3ZlQ1NTUHJvcGVydHkoQ1NTUHJvcGVydHlDb2xvcik7CisgICAgICAgIGVsc2UKKyAg
ICAgICAgICAgIGFkZENTU0NvbG9yKENTU1Byb3BlcnR5Q29sb3IsIGF0dHItPnZhbHVlKCkpOwog
ICAgIH0gZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09IGJncHJvcGVydGllc0F0dHIpIHsKICAgICAg
ICAgaWYgKGVxdWFsSWdub3JpbmdDYXNlKGF0dHItPnZhbHVlKCksICJmaXhlZCIpKQotICAgICAg
ICAgICAgYWRkQ1NTUHJvcGVydHkoYXR0ciwgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQXR0YWNobWVu
dCwgQ1NTVmFsdWVGaXhlZCk7CisgICAgICAgICAgICBhZGRDU1NQcm9wZXJ0eShDU1NQcm9wZXJ0
eUJhY2tncm91bmRBdHRhY2htZW50LCBDU1NWYWx1ZUZpeGVkKTsKKyAgICAgICAgZWxzZQorICAg
ICAgICAgICAgcmVtb3ZlQ1NTUHJvcGVydHkoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQXR0YWNobWVu
dCk7CiAgICAgfSBlbHNlIGlmIChhdHRyLT5uYW1lKCkgPT0gdmxpbmtBdHRyIHx8CiAgICAgICAg
ICAgICAgICBhdHRyLT5uYW1lKCkgPT0gYWxpbmtBdHRyIHx8CiAgICAgICAgICAgICAgICBhdHRy
LT5uYW1lKCkgPT0gbGlua0F0dHIpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTEJvZHlFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxCb2R5RWxlbWVudC5o
CmluZGV4IDVjNjMyNjQuLmViNTNhMjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTEJvZHlFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQm9keUVsZW1l
bnQuaApAQCAtNzAsNyArNzAsNiBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIEhUTUxCb2R5RWxl
bWVudChjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQqKTsKIAotICAgIHZpcnR1YWwgYm9v
bCBtYXBUb0VudHJ5KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBNYXBwZWRBdHRyaWJ1dGVFbnRyeSYp
IGNvbnN0OwogICAgIHZpcnR1YWwgdm9pZCBwYXJzZU1hcHBlZEF0dHJpYnV0ZShBdHRyaWJ1dGUq
KTsKIAogICAgIHZpcnR1YWwgdm9pZCBpbnNlcnRlZEludG9Eb2N1bWVudCgpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRGl2RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxEaXZFbGVtZW50LmNwcAppbmRleCAyM2U2NTg1Li4wNDc3NjQ2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxEaXZFbGVtZW50LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxEaXZFbGVtZW50LmNwcApAQCAtNDgsMjYgKzQ4LDE5IEBAIFBhc3NS
ZWZQdHI8SFRNTERpdkVsZW1lbnQ+IEhUTUxEaXZFbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlm
aWVkTmFtZSYgdGFnTmFtZSwKICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEhUTUxEaXZFbGVtZW50
KHRhZ05hbWUsIGRvY3VtZW50KSk7CiB9CiAKLWJvb2wgSFRNTERpdkVsZW1lbnQ6Om1hcFRvRW50
cnkoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUsIE1hcHBlZEF0dHJpYnV0ZUVudHJ5JiBy
ZXN1bHQpIGNvbnN0Ci17Ci0gICAgaWYgKGF0dHJOYW1lID09IGFsaWduQXR0cikgewotICAgICAg
ICByZXN1bHQgPSBlQmxvY2s7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0gICAgcmV0
dXJuIEhUTUxFbGVtZW50OjptYXBUb0VudHJ5KGF0dHJOYW1lLCByZXN1bHQpOwotfQotCiB2b2lk
IEhUTUxEaXZFbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpYnV0ZShBdHRyaWJ1dGUqIGF0dHIpCiB7
CiAgICAgaWYgKGF0dHItPm5hbWUoKSA9PSBhbGlnbkF0dHIpIHsKKyAgICAgICAgaWYgKGF0dHIt
PnZhbHVlKCkuaXNOdWxsKCkpCisgICAgICAgICAgICByZW1vdmVDU1NQcm9wZXJ0eShDU1NQcm9w
ZXJ0eVRleHRBbGlnbik7CiAgICAgICAgIGlmIChlcXVhbElnbm9yaW5nQ2FzZShhdHRyLT52YWx1
ZSgpLCAibWlkZGxlIikgfHwgZXF1YWxJZ25vcmluZ0Nhc2UoYXR0ci0+dmFsdWUoKSwgImNlbnRl
ciIpKQotICAgICAgICAgICBhZGRDU1NQcm9wZXJ0eShhdHRyLCBDU1NQcm9wZXJ0eVRleHRBbGln
biwgQ1NTVmFsdWVXZWJraXRDZW50ZXIpOworICAgICAgICAgICBhZGRDU1NQcm9wZXJ0eShDU1NQ
cm9wZXJ0eVRleHRBbGlnbiwgQ1NTVmFsdWVXZWJraXRDZW50ZXIpOwogICAgICAgICBlbHNlIGlm
IChlcXVhbElnbm9yaW5nQ2FzZShhdHRyLT52YWx1ZSgpLCAibGVmdCIpKQotICAgICAgICAgICAg
YWRkQ1NTUHJvcGVydHkoYXR0ciwgQ1NTUHJvcGVydHlUZXh0QWxpZ24sIENTU1ZhbHVlV2Via2l0
TGVmdCk7CisgICAgICAgICAgICBhZGRDU1NQcm9wZXJ0eShDU1NQcm9wZXJ0eVRleHRBbGlnbiwg
Q1NTVmFsdWVXZWJraXRMZWZ0KTsKICAgICAgICAgZWxzZSBpZiAoZXF1YWxJZ25vcmluZ0Nhc2Uo
YXR0ci0+dmFsdWUoKSwgInJpZ2h0IikpCi0gICAgICAgICAgICBhZGRDU1NQcm9wZXJ0eShhdHRy
LCBDU1NQcm9wZXJ0eVRleHRBbGlnbiwgQ1NTVmFsdWVXZWJraXRSaWdodCk7CisgICAgICAgICAg
ICBhZGRDU1NQcm9wZXJ0eShDU1NQcm9wZXJ0eVRleHRBbGlnbiwgQ1NTVmFsdWVXZWJraXRSaWdo
dCk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIGFkZENTU1Byb3BlcnR5KGF0dHIsIENTU1By
b3BlcnR5VGV4dEFsaWduLCBhdHRyLT52YWx1ZSgpKTsKKyAgICAgICAgICAgIGFkZENTU1Byb3Bl
cnR5KENTU1Byb3BlcnR5VGV4dEFsaWduLCBhdHRyLT52YWx1ZSgpKTsKICAgICB9IGVsc2UKICAg
ICAgICAgSFRNTEVsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmlidXRlKGF0dHIpOwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRGl2RWxlbWVudC5oIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MRGl2RWxlbWVudC5oCmluZGV4IDJlMmI0MTcuLjdiYjVmMjEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTERpdkVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxEaXZFbGVtZW50LmgKQEAgLTM2LDcgKzM2LDYgQEAgcHJvdGVjdGVkOgog
ICAgIEhUTUxEaXZFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCopOwogCiBw
cml2YXRlOgotICAgIHZpcnR1YWwgYm9vbCBtYXBUb0VudHJ5KGNvbnN0IFF1YWxpZmllZE5hbWUm
LCBNYXBwZWRBdHRyaWJ1dGVFbnRyeSYpIGNvbnN0OwogICAgIHZpcnR1YWwgdm9pZCBwYXJzZU1h
cHBlZEF0dHJpYnV0ZShBdHRyaWJ1dGUqKTsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRWxlbWVu
dC5jcHAKaW5kZXggOGVjYmM0Ni4uNGVjMWUzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRWxlbWVu
dC5jcHAKQEAgLTEyMCwyNyArMTIwLDYgQEAgYm9vbCBIVE1MRWxlbWVudDo6aWVGb3JiaWRzSW5z
ZXJ0SFRNTCgpIGNvbnN0CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1ib29sIEhUTUxFbGVtZW50
OjptYXBUb0VudHJ5KGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lLCBNYXBwZWRBdHRyaWJ1
dGVFbnRyeSYgcmVzdWx0KSBjb25zdAotewotICAgIGlmIChhdHRyTmFtZSA9PSBhbGlnbkF0dHIK
LSAgICAgICAgfHwgYXR0ck5hbWUgPT0gY29udGVudGVkaXRhYmxlQXR0cgotICAgICAgICB8fCBh
dHRyTmFtZSA9PSBoaWRkZW5BdHRyKSB7Ci0gICAgICAgIHJlc3VsdCA9IGVVbml2ZXJzYWw7Ci0g
ICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0gICAgaWYgKGF0dHJOYW1lID09IGRpckF0dHIp
IHsKLSAgICAgICAgaWYgKGhhc0xvY2FsTmFtZShiZG9UYWcpKQotICAgICAgICAgICAgcmVzdWx0
ID0gZUJETzsKLSAgICAgICAgZWxzZSBpZiAoaGFzTG9jYWxOYW1lKGJkaVRhZykpCi0gICAgICAg
ICAgICByZXN1bHQgPSBlQkRJOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICByZXN1bHQgPSBl
VW5pdmVyc2FsOwotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0KLSAgICByZXR1cm4gU3R5
bGVkRWxlbWVudDo6bWFwVG9FbnRyeShhdHRyTmFtZSwgcmVzdWx0KTsKLX0KLQogc3RhdGljIGlu
bGluZSBpbnQgdW5pY29kZUJpZGlBdHRyaWJ1dGVGb3JEaXJBdXRvKEhUTUxFbGVtZW50KiBlbGVt
ZW50KQogewogICAgIGlmIChlbGVtZW50LT5oYXNMb2NhbE5hbWUocHJlVGFnKSB8fCBlbGVtZW50
LT5oYXNMb2NhbE5hbWUodGV4dGFyZWFUYWcpKQpAQCAtMTYzLDIzICsxNDIsMjUgQEAgc3RhdGlj
IHVuc2lnbmVkIHBhcnNlQm9yZGVyV2lkdGhBdHRyaWJ1dGUoQXR0cmlidXRlKiBhdHRyKQogCiB2
b2lkIEhUTUxFbGVtZW50OjphcHBseUJvcmRlckF0dHJpYnV0ZShBdHRyaWJ1dGUqIGF0dHIpCiB7
Ci0gICAgYWRkQ1NTTGVuZ3RoKGF0dHIsIENTU1Byb3BlcnR5Qm9yZGVyV2lkdGgsIFN0cmluZzo6
bnVtYmVyKHBhcnNlQm9yZGVyV2lkdGhBdHRyaWJ1dGUoYXR0cikpKTsKLSAgICBhZGRDU1NQcm9w
ZXJ0eShhdHRyLCBDU1NQcm9wZXJ0eUJvcmRlclRvcFN0eWxlLCBDU1NWYWx1ZVNvbGlkKTsKLSAg
ICBhZGRDU1NQcm9wZXJ0eShhdHRyLCBDU1NQcm9wZXJ0eUJvcmRlclJpZ2h0U3R5bGUsIENTU1Zh
bHVlU29saWQpOwotICAgIGFkZENTU1Byb3BlcnR5KGF0dHIsIENTU1Byb3BlcnR5Qm9yZGVyQm90
dG9tU3R5bGUsIENTU1ZhbHVlU29saWQpOwotICAgIGFkZENTU1Byb3BlcnR5KGF0dHIsIENTU1By
b3BlcnR5Qm9yZGVyTGVmdFN0eWxlLCBDU1NWYWx1ZVNvbGlkKTsKKyAgICBhZGRDU1NMZW5ndGgo
Q1NTUHJvcGVydHlCb3JkZXJXaWR0aCwgU3RyaW5nOjpudW1iZXIocGFyc2VCb3JkZXJXaWR0aEF0
dHJpYnV0ZShhdHRyKSkpOworICAgIGFkZENTU1Byb3BlcnR5KENTU1Byb3BlcnR5Qm9yZGVyVG9w
U3R5bGUsIENTU1ZhbHVlU29saWQpOworICAgIGFkZENTU1Byb3BlcnR5KENTU1Byb3BlcnR5Qm9y
ZGVyUmlnaHRTdHlsZSwgQ1NTVmFsdWVTb2xpZCk7CisgICAgYWRkQ1NTUHJvcGVydHkoQ1NTUHJv
cGVydHlCb3JkZXJCb3R0b21TdHlsZSwgQ1NTVmFsdWVTb2xpZCk7CisgICAgYWRkQ1NTUHJvcGVy
dHkoQ1NTUHJvcGVydHlCb3JkZXJMZWZ0U3R5bGUsIENTU1ZhbHVlU29saWQpOwogfQogCiB2b2lk
IEhUTUxFbGVtZW50OjptYXBMYW5ndWFnZUF0dHJpYnV0ZVRvTG9jYWxlKEF0dHJpYnV0ZSogYXR0
cmlidXRlKQogewogICAgIEFTU0VSVChhdHRyaWJ1dGUgJiYgKGF0dHJpYnV0ZS0+bmFtZSgpID09
IGxhbmdBdHRyIHx8IGF0dHJpYnV0ZS0+bmFtZSgpLm1hdGNoZXMoWE1MTmFtZXM6OmxhbmdBdHRy
KSkpOwogICAgIGNvbnN0IEF0b21pY1N0cmluZyYgdmFsdWUgPSBhdHRyaWJ1dGUtPnZhbHVlKCk7
Ci0gICAgaWYgKCF2YWx1ZS5pc0VtcHR5KCkpIHsKKyAgICBpZiAodmFsdWUuaXNOdWxsKCkpCisg
ICAgICAgIHJlbW92ZUNTU1Byb3BlcnR5KENTU1Byb3BlcnR5V2Via2l0TG9jYWxlKTsKKyAgICBl
bHNlIGlmICghdmFsdWUuaXNFbXB0eSgpKSB7CiAgICAgICAgIC8vIEhhdmUgdG8gcXVvdGUgc28g
dGhlIGxvY2FsZSBpZCBpcyB0cmVhdGVkIGFzIGEgc3RyaW5nIGluc3RlYWQgb2YgYXMgYSBDU1Mg
a2V5d29yZC4KLSAgICAgICAgYWRkQ1NTUHJvcGVydHkoYXR0cmlidXRlLCBDU1NQcm9wZXJ0eVdl
YmtpdExvY2FsZSwgcXVvdGVDU1NTdHJpbmcodmFsdWUpKTsKKyAgICAgICAgYWRkQ1NTUHJvcGVy
dHkoQ1NTUHJvcGVydHlXZWJraXRMb2NhbGUsIHF1b3RlQ1NTU3RyaW5nKHZhbHVlKSk7CiAgICAg
fSBlbHNlIHsKICAgICAgICAgLy8gVGhlIGVtcHR5IHN0cmluZyBtZWFucyB0aGUgbGFuZ3VhZ2Ug
aXMgZXhwbGljaXRseSB1bmtub3duLgotICAgICAgICBhZGRDU1NQcm9wZXJ0eShhdHRyaWJ1dGUs
IENTU1Byb3BlcnR5V2Via2l0TG9jYWxlLCBDU1NWYWx1ZUF1dG8pOworICAgICAgICBhZGRDU1NQ
cm9wZXJ0eShDU1NQcm9wZXJ0eVdlYmtpdExvY2FsZSwgQ1NTVmFsdWVBdXRvKTsKICAgICB9CiAg
ICAgc2V0TmVlZHNTdHlsZVJlY2FsYygpOwogfQpAQCAtMTkwLDE0ICsxNzEsMTkgQEAgdm9pZCBI
VE1MRWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUoQXR0cmlidXRlKiBhdHRyKQogICAgICAg
ICByZXR1cm4gU3R5bGVkRWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUoYXR0cik7CiAKICAg
ICBpZiAoYXR0ci0+bmFtZSgpID09IGFsaWduQXR0cikgewotICAgICAgICBpZiAoZXF1YWxJZ25v
cmluZ0Nhc2UoYXR0ci0+dmFsdWUoKSwgIm1pZGRsZSIpKQotICAgICAgICAgICAgYWRkQ1NTUHJv
cGVydHkoYXR0ciwgQ1NTUHJvcGVydHlUZXh0QWxpZ24sICJjZW50ZXIiKTsKKyAgICAgICAgaWYg
KGF0dHItPmlzTnVsbCgpKQorICAgICAgICAgICAgcmVtb3ZlQ1NTUHJvcGVydHkoQ1NTUHJvcGVy
dHlUZXh0QWxpZ24pOworICAgICAgICBlbHNlIGlmIChlcXVhbElnbm9yaW5nQ2FzZShhdHRyLT52
YWx1ZSgpLCAibWlkZGxlIikpCisgICAgICAgICAgICBhZGRDU1NQcm9wZXJ0eShDU1NQcm9wZXJ0
eVRleHRBbGlnbiwgImNlbnRlciIpOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBhZGRDU1NQ
cm9wZXJ0eShhdHRyLCBDU1NQcm9wZXJ0eVRleHRBbGlnbiwgYXR0ci0+dmFsdWUoKSk7CisgICAg
ICAgICAgICBhZGRDU1NQcm9wZXJ0eShDU1NQcm9wZXJ0eVRleHRBbGlnbiwgYXR0ci0+dmFsdWUo
KSk7CiAgICAgfSBlbHNlIGlmIChhdHRyLT5uYW1lKCkgPT0gY29udGVudGVkaXRhYmxlQXR0cikg
ewogICAgICAgICBzZXRDb250ZW50RWRpdGFibGUoYXR0cik7CiAgICAgfSBlbHNlIGlmIChhdHRy
LT5uYW1lKCkgPT0gaGlkZGVuQXR0cikgewotICAgICAgICBhZGRDU1NQcm9wZXJ0eShhdHRyLCBD
U1NQcm9wZXJ0eURpc3BsYXksIENTU1ZhbHVlTm9uZSk7CisgICAgICAgIGlmIChhdHRyLT5pc051
bGwoKSkKKyAgICAgICAgICAgIHJlbW92ZUNTU1Byb3BlcnR5KENTU1Byb3BlcnR5RGlzcGxheSk7
CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGFkZENTU1Byb3BlcnR5KENTU1Byb3BlcnR5RGlz
cGxheSwgQ1NTVmFsdWVOb25lKTsKICAgICB9IGVsc2UgaWYgKGF0dHItPm5hbWUoKSA9PSB0YWJp
bmRleEF0dHIpIHsKICAgICAgICAgaW50IHRhYmluZGV4ID0gMDsKICAgICAgICAgaWYgKGF0dHIt
PmlzRW1wdHkoKSkKQEAgLTIxMywyMSArMTk5LDMzIEBAIHZvaWQgSFRNTEVsZW1lbnQ6OnBhcnNl
TWFwcGVkQXR0cmlidXRlKEF0dHJpYnV0ZSogYXR0cikKICAgICAgICAgaWYgKCFmYXN0SGFzQXR0
cmlidXRlKFhNTE5hbWVzOjpsYW5nQXR0cikpCiAgICAgICAgICAgICBtYXBMYW5ndWFnZUF0dHJp
YnV0ZVRvTG9jYWxlKGF0dHIpOwogICAgIH0gZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09IGRpckF0
dHIpIHsKLSAgICAgICAgYm9vbCBkaXJJc0F1dG8gPSBlcXVhbElnbm9yaW5nQ2FzZShhdHRyLT52
YWx1ZSgpLCAiYXV0byIpOwotICAgICAgICBpZiAoIWRpcklzQXV0bykKLSAgICAgICAgICAgIGFk
ZENTU1Byb3BlcnR5KGF0dHIsIENTU1Byb3BlcnR5RGlyZWN0aW9uLCBhdHRyLT52YWx1ZSgpKTsK
LSAgICAgICAgZGlyQXR0cmlidXRlQ2hhbmdlZChhdHRyKTsKLSAgICAgICAgaWYgKGRpcklzQXV0
bykKLSAgICAgICAgICAgIGFkZENTU1Byb3BlcnR5KGF0dHIsIENTU1Byb3BlcnR5VW5pY29kZUJp
ZGksIHVuaWNvZGVCaWRpQXR0cmlidXRlRm9yRGlyQXV0byh0aGlzKSk7Ci0gICAgICAgIGVsc2Ug
aWYgKCFoYXNUYWdOYW1lKGJkaVRhZykgJiYgIWhhc1RhZ05hbWUoYmRvVGFnKSAmJiAhaGFzVGFn
TmFtZShvdXRwdXRUYWcpKQotICAgICAgICAgICAgYWRkQ1NTUHJvcGVydHkoYXR0ciwgQ1NTUHJv
cGVydHlVbmljb2RlQmlkaSwgQ1NTVmFsdWVFbWJlZCk7CisgICAgICAgIGlmIChhdHRyLT5pc051
bGwoKSkKKyAgICAgICAgICAgIHJlbW92ZUNTU1Byb3BlcnRpZXMoQ1NTUHJvcGVydHlEaXJlY3Rp
b24sIENTU1Byb3BlcnR5VW5pY29kZUJpZGkpOworICAgICAgICBlbHNlIHsKKyAgICAgICAgICAg
IGJvb2wgZGlySXNBdXRvID0gZXF1YWxJZ25vcmluZ0Nhc2UoYXR0ci0+dmFsdWUoKSwgImF1dG8i
KTsKKyAgICAgICAgICAgIGlmICghZGlySXNBdXRvKQorICAgICAgICAgICAgICAgIGFkZENTU1By
b3BlcnR5KENTU1Byb3BlcnR5RGlyZWN0aW9uLCBhdHRyLT52YWx1ZSgpKTsKKyAgICAgICAgICAg
IGVsc2UKKyAgICAgICAgICAgICAgICByZW1vdmVDU1NQcm9wZXJ0eShDU1NQcm9wZXJ0eURpcmVj
dGlvbik7CisKKyAgICAgICAgICAgIGRpckF0dHJpYnV0ZUNoYW5nZWQoYXR0cik7CisgICAgICAg
ICAgICBpZiAoZGlySXNBdXRvKQorICAgICAgICAgICAgICAgIGFkZENTU1Byb3BlcnR5KENTU1By
b3BlcnR5VW5pY29kZUJpZGksIHVuaWNvZGVCaWRpQXR0cmlidXRlRm9yRGlyQXV0byh0aGlzKSk7
CisgICAgICAgICAgICBlbHNlIGlmICghaGFzVGFnTmFtZShiZGlUYWcpICYmICFoYXNUYWdOYW1l
KGJkb1RhZykgJiYgIWhhc1RhZ05hbWUob3V0cHV0VGFnKSkKKyAgICAgICAgICAgICAgICBhZGRD
U1NQcm9wZXJ0eShDU1NQcm9wZXJ0eVVuaWNvZGVCaWRpLCBDU1NWYWx1ZUVtYmVkKTsKKyAgICAg
ICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICByZW1vdmVDU1NQcm9wZXJ0eShDU1NQcm9wZXJ0
eVVuaWNvZGVCaWRpKTsKKyAgICAgICAgfQogICAgIH0gZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09
IGRyYWdnYWJsZUF0dHIpIHsKICAgICAgICAgY29uc3QgQXRvbWljU3RyaW5nJiB2YWx1ZSA9IGF0
dHItPnZhbHVlKCk7CiAgICAgICAgIGlmIChlcXVhbElnbm9yaW5nQ2FzZSh2YWx1ZSwgInRydWUi
KSkgewotICAgICAgICAgICAgYWRkQ1NTUHJvcGVydHkoYXR0ciwgQ1NTUHJvcGVydHlXZWJraXRV
c2VyRHJhZywgQ1NTVmFsdWVFbGVtZW50KTsKLSAgICAgICAgICAgIGFkZENTU1Byb3BlcnR5KGF0
dHIsIENTU1Byb3BlcnR5V2Via2l0VXNlclNlbGVjdCwgQ1NTVmFsdWVOb25lKTsKLSAgICAgICAg
fSBlbHNlIGlmIChlcXVhbElnbm9yaW5nQ2FzZSh2YWx1ZSwgImZhbHNlIikpCi0gICAgICAgICAg
ICBhZGRDU1NQcm9wZXJ0eShhdHRyLCBDU1NQcm9wZXJ0eVdlYmtpdFVzZXJEcmFnLCBDU1NWYWx1
ZU5vbmUpOworICAgICAgICAgICAgYWRkQ1NTUHJvcGVydHkoQ1NTUHJvcGVydHlXZWJraXRVc2Vy
RHJhZywgQ1NTVmFsdWVFbGVtZW50KTsKKyAgICAgICAgICAgIGFkZENTU1Byb3BlcnR5KENTU1By
b3BlcnR5V2Via2l0VXNlclNlbGVjdCwgQ1NTVmFsdWVOb25lKTsKKyAgICAgICAgfSBlbHNlIGlm
IChlcXVhbElnbm9yaW5nQ2FzZSh2YWx1ZSwgImZhbHNlIikpIHsKKyAgICAgICAgICAgIGFkZENT
U1Byb3BlcnR5KENTU1Byb3BlcnR5V2Via2l0VXNlckRyYWcsIENTU1ZhbHVlTm9uZSk7CisgICAg
ICAgICAgICByZW1vdmVDU1NQcm9wZXJ0eShDU1NQcm9wZXJ0eVdlYmtpdFVzZXJTZWxlY3QpOwor
ICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIHJlbW92ZUNTU1Byb3BlcnRpZXMoQ1NTUHJvcGVy
dHlXZWJraXRVc2VyRHJhZywgQ1NTUHJvcGVydHlXZWJraXRVc2VyU2VsZWN0KTsKICNpZiBFTkFC
TEUoTUlDUk9EQVRBKQogICAgIH0gZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09IGl0ZW1wcm9wQXR0
cikgewogICAgICAgICBzZXRJdGVtUHJvcChhdHRyLT52YWx1ZSgpKTsKQEAgLTY4NSw2ICs2ODMs
MTEgQEAgdm9pZCBIVE1MRWxlbWVudDo6YWRkSFRNTEFsaWdubWVudChBdHRyaWJ1dGUqIGF0dHIp
CiAgICAgYWRkSFRNTEFsaWdubWVudFRvU3R5bGVkRWxlbWVudCh0aGlzLCBhdHRyKTsKIH0KIAor
dm9pZCBIVE1MRWxlbWVudDo6cmVtb3ZlSFRNTEFsaWdubWVudCgpCit7CisgICAgcmVtb3ZlQ1NT
UHJvcGVydGllcyhDU1NQcm9wZXJ0eUZsb2F0LCBDU1NQcm9wZXJ0eVZlcnRpY2FsQWxpZ24pOwor
fQorCiB2b2lkIEhUTUxFbGVtZW50OjphZGRIVE1MQWxpZ25tZW50VG9TdHlsZWRFbGVtZW50KFN0
eWxlZEVsZW1lbnQqIGVsZW1lbnQsIEF0dHJpYnV0ZSogYXR0cikKIHsKICAgICAvLyBWZXJ0aWNh
bCBhbGlnbm1lbnQgd2l0aCByZXNwZWN0IHRvIHRoZSBjdXJyZW50IGJhc2VsaW5lIG9mIHRoZSB0
ZXh0CkBAIC03MTUsMTAgKzcxOCwxNCBAQCB2b2lkIEhUTUxFbGVtZW50OjphZGRIVE1MQWxpZ25t
ZW50VG9TdHlsZWRFbGVtZW50KFN0eWxlZEVsZW1lbnQqIGVsZW1lbnQsIEF0dHJpYgogICAgICAg
ICB2ZXJ0aWNhbEFsaWduVmFsdWUgPSBDU1NWYWx1ZVRleHRUb3A7CiAKICAgICBpZiAoZmxvYXRW
YWx1ZSAhPSBDU1NWYWx1ZUludmFsaWQpCi0gICAgICAgIGVsZW1lbnQtPmFkZENTU1Byb3BlcnR5
KGF0dHIsIENTU1Byb3BlcnR5RmxvYXQsIGZsb2F0VmFsdWUpOworICAgICAgICBlbGVtZW50LT5h
ZGRDU1NQcm9wZXJ0eShDU1NQcm9wZXJ0eUZsb2F0LCBmbG9hdFZhbHVlKTsKKyAgICBlbHNlCisg
ICAgICAgIGVsZW1lbnQtPnJlbW92ZUNTU1Byb3BlcnR5KENTU1Byb3BlcnR5RmxvYXQpOwogCiAg
ICAgaWYgKHZlcnRpY2FsQWxpZ25WYWx1ZSAhPSBDU1NWYWx1ZUludmFsaWQpCi0gICAgICAgIGVs
ZW1lbnQtPmFkZENTU1Byb3BlcnR5KGF0dHIsIENTU1Byb3BlcnR5VmVydGljYWxBbGlnbiwgdmVy
dGljYWxBbGlnblZhbHVlKTsKKyAgICAgICAgZWxlbWVudC0+YWRkQ1NTUHJvcGVydHkoQ1NTUHJv
cGVydHlWZXJ0aWNhbEFsaWduLCB2ZXJ0aWNhbEFsaWduVmFsdWUpOworICAgIGVsc2UKKyAgICAg
ICAgZWxlbWVudC0+cmVtb3ZlQ1NTUHJvcGVydHkoQ1NTUHJvcGVydHlWZXJ0aWNhbEFsaWduKTsK
IH0KIAogYm9vbCBIVE1MRWxlbWVudDo6c3VwcG9ydHNGb2N1cygpIGNvbnN0CkBAIC03NDUsMjEg
Kzc1MiwyMSBAQCBTdHJpbmcgSFRNTEVsZW1lbnQ6OmNvbnRlbnRFZGl0YWJsZSgpIGNvbnN0CiB2
b2lkIEhUTUxFbGVtZW50OjpzZXRDb250ZW50RWRpdGFibGUoQXR0cmlidXRlKiBhdHRyKSAKIHsK
ICAgICBjb25zdCBBdG9taWNTdHJpbmcmIGVuYWJsZWQgPSBhdHRyLT52YWx1ZSgpOwotICAgIGlm
IChlbmFibGVkLmlzRW1wdHkoKSB8fCBlcXVhbElnbm9yaW5nQ2FzZShlbmFibGVkLCAidHJ1ZSIp
KSB7Ci0gICAgICAgIGFkZENTU1Byb3BlcnR5KGF0dHIsIENTU1Byb3BlcnR5V2Via2l0VXNlck1v
ZGlmeSwgQ1NTVmFsdWVSZWFkV3JpdGUpOwotICAgICAgICBhZGRDU1NQcm9wZXJ0eShhdHRyLCBD
U1NQcm9wZXJ0eVdvcmRXcmFwLCBDU1NWYWx1ZUJyZWFrV29yZCk7Ci0gICAgICAgIGFkZENTU1By
b3BlcnR5KGF0dHIsIENTU1Byb3BlcnR5V2Via2l0TmJzcE1vZGUsIENTU1ZhbHVlU3BhY2UpOwot
ICAgICAgICBhZGRDU1NQcm9wZXJ0eShhdHRyLCBDU1NQcm9wZXJ0eVdlYmtpdExpbmVCcmVhaywg
Q1NTVmFsdWVBZnRlcldoaXRlU3BhY2UpOworICAgIGlmIChlbmFibGVkLmlzTnVsbCgpKQorICAg
ICAgICByZW1vdmVDU1NQcm9wZXJ0aWVzKENTU1Byb3BlcnR5V2Via2l0VXNlck1vZGlmeSwgQ1NT
UHJvcGVydHlXb3JkV3JhcCwgQ1NTUHJvcGVydHlXZWJraXROYnNwTW9kZSwgQ1NTUHJvcGVydHlX
ZWJraXRMaW5lQnJlYWspOworICAgIGVsc2UgaWYgKGVuYWJsZWQuaXNFbXB0eSgpIHx8IGVxdWFs
SWdub3JpbmdDYXNlKGVuYWJsZWQsICJ0cnVlIikpIHsKKyAgICAgICAgYWRkQ1NTUHJvcGVydHko
Q1NTUHJvcGVydHlXZWJraXRVc2VyTW9kaWZ5LCBDU1NWYWx1ZVJlYWRXcml0ZSk7CisgICAgICAg
IGFkZENTU1Byb3BlcnR5KENTU1Byb3BlcnR5V29yZFdyYXAsIENTU1ZhbHVlQnJlYWtXb3JkKTsK
KyAgICAgICAgYWRkQ1NTUHJvcGVydHkoQ1NTUHJvcGVydHlXZWJraXROYnNwTW9kZSwgQ1NTVmFs
dWVTcGFjZSk7CisgICAgICAgIGFkZENTU1Byb3BlcnR5KENTU1Byb3BlcnR5V2Via2l0TGluZUJy
ZWFrLCBDU1NWYWx1ZUFmdGVyV2hpdGVTcGFjZSk7CiAgICAgfSBlbHNlIGlmIChlcXVhbElnbm9y
aW5nQ2FzZShlbmFibGVkLCAiZmFsc2UiKSkgewotICAgICAgICBhZGRDU1NQcm9wZXJ0eShhdHRy
LCBDU1NQcm9wZXJ0eVdlYmtpdFVzZXJNb2RpZnksIENTU1ZhbHVlUmVhZE9ubHkpOwotICAgICAg
ICByZW1vdmVDU1NQcm9wZXJ0eShhdHRyLCBDU1NQcm9wZXJ0eVdvcmRXcmFwKTsKLSAgICAgICAg
cmVtb3ZlQ1NTUHJvcGVydHkoYXR0ciwgQ1NTUHJvcGVydHlXZWJraXROYnNwTW9kZSk7Ci0gICAg
ICAgIHJlbW92ZUNTU1Byb3BlcnR5KGF0dHIsIENTU1Byb3BlcnR5V2Via2l0TGluZUJyZWFrKTsK
KyAgICAgICAgYWRkQ1NTUHJvcGVydHkoQ1NTUHJvcGVydHlXZWJraXRVc2VyTW9kaWZ5LCBDU1NW
YWx1ZVJlYWRPbmx5KTsKKyAgICAgICAgcmVtb3ZlQ1NTUHJvcGVydGllcyhDU1NQcm9wZXJ0eVdv
cmRXcmFwLCBDU1NQcm9wZXJ0eVdlYmtpdE5ic3BNb2RlLCBDU1NQcm9wZXJ0eVdlYmtpdExpbmVC
cmVhayk7CiAgICAgfSBlbHNlIGlmIChlcXVhbElnbm9yaW5nQ2FzZShlbmFibGVkLCAicGxhaW50
ZXh0LW9ubHkiKSkgewotICAgICAgICBhZGRDU1NQcm9wZXJ0eShhdHRyLCBDU1NQcm9wZXJ0eVdl
YmtpdFVzZXJNb2RpZnksIENTU1ZhbHVlUmVhZFdyaXRlUGxhaW50ZXh0T25seSk7Ci0gICAgICAg
IGFkZENTU1Byb3BlcnR5KGF0dHIsIENTU1Byb3BlcnR5V29yZFdyYXAsIENTU1ZhbHVlQnJlYWtX
b3JkKTsKLSAgICAgICAgYWRkQ1NTUHJvcGVydHkoYXR0ciwgQ1NTUHJvcGVydHlXZWJraXROYnNw
TW9kZSwgQ1NTVmFsdWVTcGFjZSk7Ci0gICAgICAgIGFkZENTU1Byb3BlcnR5KGF0dHIsIENTU1By
b3BlcnR5V2Via2l0TGluZUJyZWFrLCBDU1NWYWx1ZUFmdGVyV2hpdGVTcGFjZSk7CisgICAgICAg
IGFkZENTU1Byb3BlcnR5KENTU1Byb3BlcnR5V2Via2l0VXNlck1vZGlmeSwgQ1NTVmFsdWVSZWFk
V3JpdGVQbGFpbnRleHRPbmx5KTsKKyAgICAgICAgYWRkQ1NTUHJvcGVydHkoQ1NTUHJvcGVydHlX
b3JkV3JhcCwgQ1NTVmFsdWVCcmVha1dvcmQpOworICAgICAgICBhZGRDU1NQcm9wZXJ0eShDU1NQ
cm9wZXJ0eVdlYmtpdE5ic3BNb2RlLCBDU1NWYWx1ZVNwYWNlKTsKKyAgICAgICAgYWRkQ1NTUHJv
cGVydHkoQ1NTUHJvcGVydHlXZWJraXRMaW5lQnJlYWssIENTU1ZhbHVlQWZ0ZXJXaGl0ZVNwYWNl
KTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVsZW1l
bnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQuaAppbmRleCBhODZiMmI5Li4w
MDFkZDA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRWxlbWVudC5oCkBAIC05NCw4ICs5NCw4IEBAIHBy
b3RlY3RlZDoKICAgICBIVE1MRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBE
b2N1bWVudCopOwogCiAgICAgdm9pZCBhZGRIVE1MQWxpZ25tZW50KEF0dHJpYnV0ZSopOworICAg
IHZvaWQgcmVtb3ZlSFRNTEFsaWdubWVudCgpOwogCi0gICAgdmlydHVhbCBib29sIG1hcFRvRW50
cnkoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUsIE1hcHBlZEF0dHJpYnV0ZUVudHJ5JiBy
ZXN1bHQpIGNvbnN0OwogICAgIHZpcnR1YWwgdm9pZCBwYXJzZU1hcHBlZEF0dHJpYnV0ZShBdHRy
aWJ1dGUqKTsKICAgICB2b2lkIGFwcGx5Qm9yZGVyQXR0cmlidXRlKEF0dHJpYnV0ZSopOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbWJlZEVsZW1lbnQuY3BwIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MRW1iZWRFbGVtZW50LmNwcAppbmRleCAzMDlhYWZlLi5jOTUw
NTQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbWJlZEVsZW1lbnQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVtYmVkRWxlbWVudC5jcHAKQEAgLTc0LDE2
ICs3NCw2IEBAIFJlbmRlcldpZGdldCogSFRNTEVtYmVkRWxlbWVudDo6cmVuZGVyV2lkZ2V0Rm9y
SlNCaW5kaW5ncygpCiAgICAgcmV0dXJuIGZpbmRXaWRnZXRSZW5kZXJlcih0aGlzKTsKIH0KIAot
Ym9vbCBIVE1MRW1iZWRFbGVtZW50OjptYXBUb0VudHJ5KGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0
dHJOYW1lLCBNYXBwZWRBdHRyaWJ1dGVFbnRyeSYgcmVzdWx0KSBjb25zdAotewotICAgIGlmIChh
dHRyTmFtZSA9PSBoaWRkZW5BdHRyKSB7Ci0gICAgICAgIHJlc3VsdCA9IGVVbml2ZXJzYWw7Ci0g
ICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0gICAgICAgIAotICAgIHJldHVybiBIVE1MUGx1
Z0luSW1hZ2VFbGVtZW50OjptYXBUb0VudHJ5KGF0dHJOYW1lLCByZXN1bHQpOwotfQotCiB2b2lk
IEhUTUxFbWJlZEVsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmlidXRlKEF0dHJpYnV0ZSogYXR0cikK
IHsKICAgICBjb25zdCBBdG9taWNTdHJpbmcmIHZhbHVlID0gYXR0ci0+dmFsdWUoKTsKQEAgLTEw
OCw5ICs5OCwxMCBAQCB2b2lkIEhUTUxFbWJlZEVsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmlidXRl
KEF0dHJpYnV0ZSogYXR0cikKICAgICAgICAgaWYgKGVxdWFsSWdub3JpbmdDYXNlKHZhbHVlLnN0
cmluZygpLCAieWVzIikgfHwgZXF1YWxJZ25vcmluZ0Nhc2UodmFsdWUuc3RyaW5nKCksICJ0cnVl
IikpIHsKICAgICAgICAgICAgIC8vIEZJWE1FOiBOb3QgZHluYW1pYywgc2luY2Ugd2UgYWRkIHRo
aXMgYnV0IGRvbid0IHJlbW92ZSBpdCwgYnV0IGl0IG1heSBiZSBPSyBmb3Igbm93CiAgICAgICAg
ICAgICAvLyB0aGF0IHRoaXMgcmFyZWx5LXVzZWQgYXR0cmlidXRlIHdvbid0IHdvcmsgcHJvcGVy
bHkgaWYgeW91IHJlbW92ZSBpdC4KLSAgICAgICAgICAgIGFkZENTU0xlbmd0aChhdHRyLCBDU1NQ
cm9wZXJ0eVdpZHRoLCAiMCIpOwotICAgICAgICAgICAgYWRkQ1NTTGVuZ3RoKGF0dHIsIENTU1By
b3BlcnR5SGVpZ2h0LCAiMCIpOwotICAgICAgICB9CisgICAgICAgICAgICBhZGRDU1NMZW5ndGgo
Q1NTUHJvcGVydHlXaWR0aCwgIjAiKTsKKyAgICAgICAgICAgIGFkZENTU0xlbmd0aChDU1NQcm9w
ZXJ0eUhlaWdodCwgIjAiKTsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICByZW1vdmVDU1NQ
cm9wZXJ0aWVzKENTU1Byb3BlcnR5V2lkdGgsIENTU1Byb3BlcnR5SGVpZ2h0KTsKICAgICB9IGVs
c2UKICAgICAgICAgSFRNTFBsdWdJbkltYWdlRWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUo
YXR0cik7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbWJlZEVsZW1l
bnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVtYmVkRWxlbWVudC5oCmluZGV4IDEyY2Uy
NzEuLmMzMzUyM2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVtYmVkRWxl
bWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVtYmVkRWxlbWVudC5oCkBAIC0z
NCw3ICszNCw2IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgSFRNTEVtYmVkRWxlbWVudChjb25z
dCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQqLCBib29sIGNyZWF0ZWRCeVBhcnNlcik7CiAKLSAg
ICB2aXJ0dWFsIGJvb2wgbWFwVG9FbnRyeShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSwg
TWFwcGVkQXR0cmlidXRlRW50cnkmIHJlc3VsdCkgY29uc3Q7CiAgICAgdmlydHVhbCB2b2lkIHBh
cnNlTWFwcGVkQXR0cmlidXRlKEF0dHJpYnV0ZSopOwogCiAgICAgdmlydHVhbCBib29sIHJlbmRl
cmVySXNOZWVkZWQoY29uc3QgTm9kZVJlbmRlcmluZ0NvbnRleHQmKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvbnRFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTEZvbnRFbGVtZW50LmNwcAppbmRleCBkMGFkZTI5Li5hNWY1Mzg3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb250RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MRm9udEVsZW1lbnQuY3BwCkBAIC0xMjMsMTggKzEyMyw2IEBAIHN0YXRp
YyBib29sIHBhcnNlRm9udFNpemUoY29uc3QgU3RyaW5nJiBpbnB1dCwgaW50JiBzaXplKQogICAg
IHJldHVybiB0cnVlOwogfQogCi1ib29sIEhUTUxGb250RWxlbWVudDo6bWFwVG9FbnRyeShjb25z
dCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSwgTWFwcGVkQXR0cmlidXRlRW50cnkmIHJlc3VsdCkg
Y29uc3QKLXsKLSAgICBpZiAoYXR0ck5hbWUgPT0gc2l6ZUF0dHIgfHwKLSAgICAgICAgYXR0ck5h
bWUgPT0gY29sb3JBdHRyIHx8Ci0gICAgICAgIGF0dHJOYW1lID09IGZhY2VBdHRyKSB7Ci0gICAg
ICAgIHJlc3VsdCA9IGVVbml2ZXJzYWw7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0g
ICAgCi0gICAgcmV0dXJuIEhUTUxFbGVtZW50OjptYXBUb0VudHJ5KGF0dHJOYW1lLCByZXN1bHQp
OwotfQotCiBib29sIEhUTUxGb250RWxlbWVudDo6Y3NzVmFsdWVGcm9tRm9udFNpemVOdW1iZXIo
Y29uc3QgU3RyaW5nJiBzLCBpbnQmIHNpemUpCiB7CiAgICAgaW50IG51bSA9IDA7CkBAIC0xNzUs
MTEgKzE2MywxOSBAQCB2b2lkIEhUTUxGb250RWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUo
QXR0cmlidXRlKiBhdHRyKQogICAgIGlmIChhdHRyLT5uYW1lKCkgPT0gc2l6ZUF0dHIpIHsKICAg
ICAgICAgaW50IHNpemUgPSAwOwogICAgICAgICBpZiAoY3NzVmFsdWVGcm9tRm9udFNpemVOdW1i
ZXIoYXR0ci0+dmFsdWUoKSwgc2l6ZSkpCi0gICAgICAgICAgICBhZGRDU1NQcm9wZXJ0eShhdHRy
LCBDU1NQcm9wZXJ0eUZvbnRTaXplLCBzaXplKTsKKyAgICAgICAgICAgIGFkZENTU1Byb3BlcnR5
KENTU1Byb3BlcnR5Rm9udFNpemUsIHNpemUpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBy
ZW1vdmVDU1NQcm9wZXJ0eShDU1NQcm9wZXJ0eUZvbnRTaXplKTsKICAgICB9IGVsc2UgaWYgKGF0
dHItPm5hbWUoKSA9PSBjb2xvckF0dHIpIHsKLSAgICAgICAgYWRkQ1NTQ29sb3IoYXR0ciwgQ1NT
UHJvcGVydHlDb2xvciwgYXR0ci0+dmFsdWUoKSk7CisgICAgICAgIGlmIChhdHRyLT52YWx1ZSgp
LmlzTnVsbCgpKQorICAgICAgICAgICAgcmVtb3ZlQ1NTUHJvcGVydHkoQ1NTUHJvcGVydHlDb2xv
cik7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGFkZENTU0NvbG9yKENTU1Byb3BlcnR5Q29s
b3IsIGF0dHItPnZhbHVlKCkpOwogICAgIH0gZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09IGZhY2VB
dHRyKSB7Ci0gICAgICAgIGFkZENTU1Byb3BlcnR5KGF0dHIsIENTU1Byb3BlcnR5Rm9udEZhbWls
eSwgYXR0ci0+dmFsdWUoKSk7CisgICAgICAgIGlmIChhdHRyLT52YWx1ZSgpLmlzTnVsbCgpKQor
ICAgICAgICAgICAgcmVtb3ZlQ1NTUHJvcGVydHkoQ1NTUHJvcGVydHlGb250RmFtaWx5KTsKKyAg
ICAgICAgZWxzZQorICAgICAgICAgICAgYWRkQ1NTUHJvcGVydHkoQ1NTUHJvcGVydHlGb250RmFt
aWx5LCBhdHRyLT52YWx1ZSgpKTsKICAgICB9IGVsc2UKICAgICAgICAgSFRNTEVsZW1lbnQ6OnBh
cnNlTWFwcGVkQXR0cmlidXRlKGF0dHIpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MRm9udEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvbnRFbGVt
ZW50LmgKaW5kZXggZjk3YWIwOC4uMzRlYzZmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MRm9udEVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb250
RWxlbWVudC5oCkBAIC0zNyw3ICszNyw2IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgSFRNTEZv
bnRFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCopOwogCi0gICAgdmlydHVh
bCBib29sIG1hcFRvRW50cnkoY29uc3QgUXVhbGlmaWVkTmFtZSYsIE1hcHBlZEF0dHJpYnV0ZUVu
dHJ5JikgY29uc3Q7CiAgICAgdmlydHVhbCB2b2lkIHBhcnNlTWFwcGVkQXR0cmlidXRlKEF0dHJp
YnV0ZSopOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVT
ZXRFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZyYW1lU2V0RWxlbWVudC5j
cHAKaW5kZXggOTc4YTcyZC4uOWNkZDQzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MRnJhbWVTZXRFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxG
cmFtZVNldEVsZW1lbnQuY3BwCkBAIC02NCwxNiArNjQsNiBAQCBQYXNzUmVmUHRyPEhUTUxGcmFt
ZVNldEVsZW1lbnQ+IEhUTUxGcmFtZVNldEVsZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZpZWRO
YW1lJgogICAgIHJldHVybiBhZG9wdFJlZihuZXcgSFRNTEZyYW1lU2V0RWxlbWVudCh0YWdOYW1l
LCBkb2N1bWVudCkpOwogfQogCi1ib29sIEhUTUxGcmFtZVNldEVsZW1lbnQ6Om1hcFRvRW50cnko
Y29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUsIE1hcHBlZEF0dHJpYnV0ZUVudHJ5JiByZXN1
bHQpIGNvbnN0Ci17Ci0gICAgaWYgKGF0dHJOYW1lID09IGJvcmRlcmNvbG9yQXR0cikgewotICAg
ICAgICByZXN1bHQgPSBlVW5pdmVyc2FsOwotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0K
LSAgICByZXR1cm4gSFRNTEVsZW1lbnQ6Om1hcFRvRW50cnkoYXR0ck5hbWUsIHJlc3VsdCk7Ci19
Ci0KIHZvaWQgSFRNTEZyYW1lU2V0RWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUoQXR0cmli
dXRlKiBhdHRyKQogewogICAgIGlmIChhdHRyLT5uYW1lKCkgPT0gcm93c0F0dHIpIHsKQEAgLTEw
OSwxMSArOTksMTEgQEAgdm9pZCBIVE1MRnJhbWVTZXRFbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJp
YnV0ZShBdHRyaWJ1dGUqIGF0dHIpCiAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgbV9ib3Jk
ZXJTZXQgPSBmYWxzZTsKICAgICB9IGVsc2UgaWYgKGF0dHItPm5hbWUoKSA9PSBib3JkZXJjb2xv
ckF0dHIpIHsKLSAgICAgICAgbV9ib3JkZXJDb2xvclNldCA9IGF0dHItPmRlY2woKTsKLSAgICAg
ICAgaWYgKCFhdHRyLT5kZWNsKCkgJiYgIWF0dHItPmlzRW1wdHkoKSkgewotICAgICAgICAgICAg
YWRkQ1NTQ29sb3IoYXR0ciwgQ1NTUHJvcGVydHlCb3JkZXJDb2xvciwgYXR0ci0+dmFsdWUoKSk7
Ci0gICAgICAgICAgICBtX2JvcmRlckNvbG9yU2V0ID0gdHJ1ZTsKLSAgICAgICAgfQorICAgICAg
ICBtX2JvcmRlckNvbG9yU2V0ID0gIWF0dHItPmlzRW1wdHkoKTsKKyAgICAgICAgaWYgKGF0dHIt
PnZhbHVlKCkuaXNOdWxsKCkpCisgICAgICAgICAgICByZW1vdmVDU1NQcm9wZXJ0eShDU1NQcm9w
ZXJ0eUJvcmRlckNvbG9yKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgYWRkQ1NTQ29sb3Io
Q1NTUHJvcGVydHlCb3JkZXJDb2xvciwgYXR0ci0+dmFsdWUoKSk7CiAgICAgfSBlbHNlIGlmIChh
dHRyLT5uYW1lKCkgPT0gb25sb2FkQXR0cikKICAgICAgICAgZG9jdW1lbnQoKS0+c2V0V2luZG93
QXR0cmlidXRlRXZlbnRMaXN0ZW5lcihldmVudE5hbWVzKCkubG9hZEV2ZW50LCBjcmVhdGVBdHRy
aWJ1dGVFdmVudExpc3RlbmVyKGRvY3VtZW50KCktPmZyYW1lKCksIGF0dHIpKTsKICAgICBlbHNl
IGlmIChhdHRyLT5uYW1lKCkgPT0gb25iZWZvcmV1bmxvYWRBdHRyKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVTZXRFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxGcmFtZVNldEVsZW1lbnQuaAppbmRleCA2OTg4OTc0Li4wYmMzNGI2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGcmFtZVNldEVsZW1lbnQuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxGcmFtZVNldEVsZW1lbnQuaApAQCAtNjcsNyArNjcsNiBAQCBw
dWJsaWM6CiBwcml2YXRlOgogICAgIEhUTUxGcmFtZVNldEVsZW1lbnQoY29uc3QgUXVhbGlmaWVk
TmFtZSYsIERvY3VtZW50Kik7CiAKLSAgICB2aXJ0dWFsIGJvb2wgbWFwVG9FbnRyeShjb25zdCBR
dWFsaWZpZWROYW1lJiBhdHRyTmFtZSwgTWFwcGVkQXR0cmlidXRlRW50cnkmIHJlc3VsdCkgY29u
c3Q7CiAgICAgdmlydHVhbCB2b2lkIHBhcnNlTWFwcGVkQXR0cmlidXRlKEF0dHJpYnV0ZSopOwog
CiAgICAgdmlydHVhbCB2b2lkIGF0dGFjaCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MSFJFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEhSRWxlbWVu
dC5jcHAKaW5kZXggNDRhYTA1Mi4uNjljZDkxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MSFJFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxIUkVs
ZW1lbnQuY3BwCkBAIC00OCw2MCArNDgsNjggQEAgUGFzc1JlZlB0cjxIVE1MSFJFbGVtZW50PiBI
VE1MSFJFbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG8KICAg
ICByZXR1cm4gYWRvcHRSZWYobmV3IEhUTUxIUkVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpKTsK
IH0KIAotYm9vbCBIVE1MSFJFbGVtZW50OjptYXBUb0VudHJ5KGNvbnN0IFF1YWxpZmllZE5hbWUm
IGF0dHJOYW1lLCBNYXBwZWRBdHRyaWJ1dGVFbnRyeSYgcmVzdWx0KSBjb25zdAotewotICAgIGlm
IChhdHRyTmFtZSA9PSBhbGlnbkF0dHIgfHwKLSAgICAgICAgYXR0ck5hbWUgPT0gd2lkdGhBdHRy
IHx8Ci0gICAgICAgIGF0dHJOYW1lID09IGNvbG9yQXR0ciB8fAotICAgICAgICBhdHRyTmFtZSA9
PSBzaXplQXR0ciB8fAotICAgICAgICBhdHRyTmFtZSA9PSBub3NoYWRlQXR0cikgewotICAgICAg
ICByZXN1bHQgPSBlSFI7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0gICAgcmV0dXJu
IEhUTUxFbGVtZW50OjptYXBUb0VudHJ5KGF0dHJOYW1lLCByZXN1bHQpOwotfQotCiB2b2lkIEhU
TUxIUkVsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmlidXRlKEF0dHJpYnV0ZSogYXR0cikKIHsKICAg
ICBpZiAoYXR0ci0+bmFtZSgpID09IGFsaWduQXR0cikgewotICAgICAgICBpZiAoZXF1YWxJZ25v
cmluZ0Nhc2UoYXR0ci0+dmFsdWUoKSwgImxlZnQiKSkgewotICAgICAgICAgICAgYWRkQ1NTUHJv
cGVydHkoYXR0ciwgQ1NTUHJvcGVydHlNYXJnaW5MZWZ0LCAiMCIpOwotICAgICAgICAgICAgYWRk
Q1NTUHJvcGVydHkoYXR0ciwgQ1NTUHJvcGVydHlNYXJnaW5SaWdodCwgQ1NTVmFsdWVBdXRvKTsK
KyAgICAgICAgaWYgKGF0dHItPnZhbHVlKCkuaXNOdWxsKCkpIHsKKyAgICAgICAgICAgIHJlbW92
ZUNTU1Byb3BlcnRpZXMoQ1NTUHJvcGVydHlNYXJnaW5MZWZ0LCBDU1NQcm9wZXJ0eU1hcmdpblJp
Z2h0KTsKKyAgICAgICAgfSBlbHNlIGlmIChlcXVhbElnbm9yaW5nQ2FzZShhdHRyLT52YWx1ZSgp
LCAibGVmdCIpKSB7CisgICAgICAgICAgICBhZGRDU1NQcm9wZXJ0eShDU1NQcm9wZXJ0eU1hcmdp
bkxlZnQsICIwIik7CisgICAgICAgICAgICBhZGRDU1NQcm9wZXJ0eShDU1NQcm9wZXJ0eU1hcmdp
blJpZ2h0LCBDU1NWYWx1ZUF1dG8pOwogICAgICAgICB9IGVsc2UgaWYgKGVxdWFsSWdub3JpbmdD
YXNlKGF0dHItPnZhbHVlKCksICJyaWdodCIpKSB7Ci0gICAgICAgICAgICBhZGRDU1NQcm9wZXJ0
eShhdHRyLCBDU1NQcm9wZXJ0eU1hcmdpbkxlZnQsIENTU1ZhbHVlQXV0byk7Ci0gICAgICAgICAg
ICBhZGRDU1NQcm9wZXJ0eShhdHRyLCBDU1NQcm9wZXJ0eU1hcmdpblJpZ2h0LCAiMCIpOworICAg
ICAgICAgICAgYWRkQ1NTUHJvcGVydHkoQ1NTUHJvcGVydHlNYXJnaW5MZWZ0LCBDU1NWYWx1ZUF1
dG8pOworICAgICAgICAgICAgYWRkQ1NTUHJvcGVydHkoQ1NTUHJvcGVydHlNYXJnaW5SaWdodCwg
IjAiKTsKICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIGFkZENTU1Byb3BlcnR5KGF0dHIs
IENTU1Byb3BlcnR5TWFyZ2luTGVmdCwgQ1NTVmFsdWVBdXRvKTsKLSAgICAgICAgICAgIGFkZENT
U1Byb3BlcnR5KGF0dHIsIENTU1Byb3BlcnR5TWFyZ2luUmlnaHQsIENTU1ZhbHVlQXV0byk7Cisg
ICAgICAgICAgICBhZGRDU1NQcm9wZXJ0eShDU1NQcm9wZXJ0eU1hcmdpbkxlZnQsIENTU1ZhbHVl
QXV0byk7CisgICAgICAgICAgICBhZGRDU1NQcm9wZXJ0eShDU1NQcm9wZXJ0eU1hcmdpblJpZ2h0
LCBDU1NWYWx1ZUF1dG8pOwogICAgICAgICB9CiAgICAgfSBlbHNlIGlmIChhdHRyLT5uYW1lKCkg
PT0gd2lkdGhBdHRyKSB7Ci0gICAgICAgIGJvb2wgb2s7Ci0gICAgICAgIGludCB2ID0gYXR0ci0+
dmFsdWUoKS50b0ludCgmb2spOwotICAgICAgICBpZiAob2sgJiYgIXYpCi0gICAgICAgICAgICBh
ZGRDU1NMZW5ndGgoYXR0ciwgQ1NTUHJvcGVydHlXaWR0aCwgIjEiKTsKLSAgICAgICAgZWxzZQot
ICAgICAgICAgICAgYWRkQ1NTTGVuZ3RoKGF0dHIsIENTU1Byb3BlcnR5V2lkdGgsIGF0dHItPnZh
bHVlKCkpOworICAgICAgICBpZiAoYXR0ci0+dmFsdWUoKS5pc051bGwoKSkKKyAgICAgICAgICAg
IHJlbW92ZUNTU1Byb3BlcnR5KENTU1Byb3BlcnR5V2lkdGgpOworICAgICAgICBlbHNlIHsKKyAg
ICAgICAgICAgIGJvb2wgb2s7CisgICAgICAgICAgICBpbnQgdiA9IGF0dHItPnZhbHVlKCkudG9J
bnQoJm9rKTsKKyAgICAgICAgICAgIGlmIChvayAmJiAhdikKKyAgICAgICAgICAgICAgICBhZGRD
U1NMZW5ndGgoQ1NTUHJvcGVydHlXaWR0aCwgIjEiKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAg
ICAgICAgICAgICBhZGRDU1NMZW5ndGgoQ1NTUHJvcGVydHlXaWR0aCwgYXR0ci0+dmFsdWUoKSk7
CisgICAgICAgIH0KICAgICB9IGVsc2UgaWYgKGF0dHItPm5hbWUoKSA9PSBjb2xvckF0dHIpIHsK
LSAgICAgICAgYWRkQ1NTUHJvcGVydHkoYXR0ciwgQ1NTUHJvcGVydHlCb3JkZXJUb3BTdHlsZSwg
Q1NTVmFsdWVTb2xpZCk7Ci0gICAgICAgIGFkZENTU1Byb3BlcnR5KGF0dHIsIENTU1Byb3BlcnR5
Qm9yZGVyUmlnaHRTdHlsZSwgQ1NTVmFsdWVTb2xpZCk7Ci0gICAgICAgIGFkZENTU1Byb3BlcnR5
KGF0dHIsIENTU1Byb3BlcnR5Qm9yZGVyQm90dG9tU3R5bGUsIENTU1ZhbHVlU29saWQpOwotICAg
ICAgICBhZGRDU1NQcm9wZXJ0eShhdHRyLCBDU1NQcm9wZXJ0eUJvcmRlckxlZnRTdHlsZSwgQ1NT
VmFsdWVTb2xpZCk7Ci0gICAgICAgIGFkZENTU0NvbG9yKGF0dHIsIENTU1Byb3BlcnR5Qm9yZGVy
Q29sb3IsIGF0dHItPnZhbHVlKCkpOwotICAgICAgICBhZGRDU1NDb2xvcihhdHRyLCBDU1NQcm9w
ZXJ0eUJhY2tncm91bmRDb2xvciwgYXR0ci0+dmFsdWUoKSk7CisgICAgICAgIGlmIChhdHRyLT52
YWx1ZSgpLmlzTnVsbCgpKQorICAgICAgICAgICAgcmVtb3ZlQ1NTUHJvcGVydGllcyhDU1NQcm9w
ZXJ0eUJvcmRlclRvcFN0eWxlLCBDU1NQcm9wZXJ0eUJvcmRlclJpZ2h0U3R5bGUsIENTU1Byb3Bl
cnR5Qm9yZGVyQm90dG9tU3R5bGUsIENTU1Byb3BlcnR5Qm9yZGVyTGVmdFN0eWxlLCBDU1NQcm9w
ZXJ0eUJvcmRlckNvbG9yLCBDU1NQcm9wZXJ0eUJhY2tncm91bmRDb2xvcik7CisgICAgICAgIGVs
c2UgeworICAgICAgICAgICAgYWRkQ1NTUHJvcGVydHkoQ1NTUHJvcGVydHlCb3JkZXJUb3BTdHls
ZSwgQ1NTVmFsdWVTb2xpZCk7CisgICAgICAgICAgICBhZGRDU1NQcm9wZXJ0eShDU1NQcm9wZXJ0
eUJvcmRlclJpZ2h0U3R5bGUsIENTU1ZhbHVlU29saWQpOworICAgICAgICAgICAgYWRkQ1NTUHJv
cGVydHkoQ1NTUHJvcGVydHlCb3JkZXJCb3R0b21TdHlsZSwgQ1NTVmFsdWVTb2xpZCk7CisgICAg
ICAgICAgICBhZGRDU1NQcm9wZXJ0eShDU1NQcm9wZXJ0eUJvcmRlckxlZnRTdHlsZSwgQ1NTVmFs
dWVTb2xpZCk7CisgICAgICAgICAgICBhZGRDU1NDb2xvcihDU1NQcm9wZXJ0eUJvcmRlckNvbG9y
LCBhdHRyLT52YWx1ZSgpKTsKKyAgICAgICAgICAgIGFkZENTU0NvbG9yKENTU1Byb3BlcnR5QmFj
a2dyb3VuZENvbG9yLCBhdHRyLT52YWx1ZSgpKTsKKyAgICAgICAgfQogICAgIH0gZWxzZSBpZiAo
YXR0ci0+bmFtZSgpID09IG5vc2hhZGVBdHRyKSB7Ci0gICAgICAgIGFkZENTU1Byb3BlcnR5KGF0
dHIsIENTU1Byb3BlcnR5Qm9yZGVyVG9wU3R5bGUsIENTU1ZhbHVlU29saWQpOwotICAgICAgICBh
ZGRDU1NQcm9wZXJ0eShhdHRyLCBDU1NQcm9wZXJ0eUJvcmRlclJpZ2h0U3R5bGUsIENTU1ZhbHVl
U29saWQpOwotICAgICAgICBhZGRDU1NQcm9wZXJ0eShhdHRyLCBDU1NQcm9wZXJ0eUJvcmRlckJv
dHRvbVN0eWxlLCBDU1NWYWx1ZVNvbGlkKTsKLSAgICAgICAgYWRkQ1NTUHJvcGVydHkoYXR0ciwg
Q1NTUHJvcGVydHlCb3JkZXJMZWZ0U3R5bGUsIENTU1ZhbHVlU29saWQpOwotICAgICAgICBhZGRD
U1NDb2xvcihhdHRyLCBDU1NQcm9wZXJ0eUJvcmRlckNvbG9yLCBTdHJpbmcoImdyZXkiKSk7Ci0g
ICAgICAgIGFkZENTU0NvbG9yKGF0dHIsIENTU1Byb3BlcnR5QmFja2dyb3VuZENvbG9yLCBTdHJp
bmcoImdyZXkiKSk7CisgICAgICAgIGlmIChhdHRyLT52YWx1ZSgpLmlzTnVsbCgpKQorICAgICAg
ICAgICAgcmVtb3ZlQ1NTUHJvcGVydGllcyhDU1NQcm9wZXJ0eUJvcmRlclRvcFN0eWxlLCBDU1NQ
cm9wZXJ0eUJvcmRlclJpZ2h0U3R5bGUsIENTU1Byb3BlcnR5Qm9yZGVyQm90dG9tU3R5bGUsIENT
U1Byb3BlcnR5Qm9yZGVyTGVmdFN0eWxlLCBDU1NQcm9wZXJ0eUJvcmRlckNvbG9yLCBDU1NQcm9w
ZXJ0eUJhY2tncm91bmRDb2xvcik7CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgYWRkQ1NT
UHJvcGVydHkoQ1NTUHJvcGVydHlCb3JkZXJUb3BTdHlsZSwgQ1NTVmFsdWVTb2xpZCk7CisgICAg
ICAgICAgICBhZGRDU1NQcm9wZXJ0eShDU1NQcm9wZXJ0eUJvcmRlclJpZ2h0U3R5bGUsIENTU1Zh
bHVlU29saWQpOworICAgICAgICAgICAgYWRkQ1NTUHJvcGVydHkoQ1NTUHJvcGVydHlCb3JkZXJC
b3R0b21TdHlsZSwgQ1NTVmFsdWVTb2xpZCk7CisgICAgICAgICAgICBhZGRDU1NQcm9wZXJ0eShD
U1NQcm9wZXJ0eUJvcmRlckxlZnRTdHlsZSwgQ1NTVmFsdWVTb2xpZCk7CisgICAgICAgICAgICBh
ZGRDU1NDb2xvcihDU1NQcm9wZXJ0eUJvcmRlckNvbG9yLCBTdHJpbmcoImdyZXkiKSk7CisgICAg
ICAgICAgICBhZGRDU1NDb2xvcihDU1NQcm9wZXJ0eUJhY2tncm91bmRDb2xvciwgU3RyaW5nKCJn
cmV5IikpOworICAgICAgICB9CiAgICAgfSBlbHNlIGlmIChhdHRyLT5uYW1lKCkgPT0gc2l6ZUF0
dHIpIHsKLSAgICAgICAgU3RyaW5nSW1wbCogc2kgPSBhdHRyLT52YWx1ZSgpLmltcGwoKTsKLSAg
ICAgICAgaW50IHNpemUgPSBzaS0+dG9JbnQoKTsKLSAgICAgICAgaWYgKHNpemUgPD0gMSkKLSAg
ICAgICAgICAgIGFkZENTU1Byb3BlcnR5KGF0dHIsIENTU1Byb3BlcnR5Qm9yZGVyQm90dG9tV2lk
dGgsIFN0cmluZygiMCIpKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgYWRkQ1NTTGVuZ3Ro
KGF0dHIsIENTU1Byb3BlcnR5SGVpZ2h0LCBTdHJpbmc6Om51bWJlcihzaXplLTIpKTsKKyAgICAg
ICAgaWYgKGF0dHItPnZhbHVlKCkuaXNOdWxsKCkpCisgICAgICAgICAgICByZW1vdmVDU1NQcm9w
ZXJ0aWVzKENTU1Byb3BlcnR5Qm9yZGVyQm90dG9tV2lkdGgsIENTU1Byb3BlcnR5SGVpZ2h0KTsK
KyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBTdHJpbmdJbXBsKiBzaSA9IGF0dHItPnZhbHVl
KCkuaW1wbCgpOworICAgICAgICAgICAgaW50IHNpemUgPSBzaS0+dG9JbnQoKTsKKyAgICAgICAg
ICAgIGlmIChzaXplIDw9IDEpIHsKKyAgICAgICAgICAgICAgICBhZGRDU1NQcm9wZXJ0eShDU1NQ
cm9wZXJ0eUJvcmRlckJvdHRvbVdpZHRoLCBTdHJpbmcoIjAiKSk7CisgICAgICAgICAgICAgICAg
cmVtb3ZlQ1NTUHJvcGVydHkoQ1NTUHJvcGVydHlIZWlnaHQpOworICAgICAgICAgICAgfSBlbHNl
IHsKKyAgICAgICAgICAgICAgICBhZGRDU1NMZW5ndGgoQ1NTUHJvcGVydHlIZWlnaHQsIFN0cmlu
Zzo6bnVtYmVyKHNpemUtMikpOworICAgICAgICAgICAgICAgIHJlbW92ZUNTU1Byb3BlcnR5KENT
U1Byb3BlcnR5Qm9yZGVyQm90dG9tV2lkdGgpOworICAgICAgICAgICAgfQorICAgICAgICB9CiAg
ICAgfSBlbHNlCiAgICAgICAgIEhUTUxFbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpYnV0ZShhdHRy
KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEhSRWxlbWVudC5oIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSFJFbGVtZW50LmgKaW5kZXggMzdjMTE5MC4uMDc5Yjhl
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSFJFbGVtZW50LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSFJFbGVtZW50LmgKQEAgLTM2LDggKzM2LDcgQEAgcHVi
bGljOgogCiBwcml2YXRlOgogICAgIEhUTUxIUkVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYs
IERvY3VtZW50Kik7Ci0gICAgCi0gICAgdmlydHVhbCBib29sIG1hcFRvRW50cnkoY29uc3QgUXVh
bGlmaWVkTmFtZSYsIE1hcHBlZEF0dHJpYnV0ZUVudHJ5JikgY29uc3Q7CisKICAgICB2aXJ0dWFs
IHZvaWQgcGFyc2VNYXBwZWRBdHRyaWJ1dGUoQXR0cmlidXRlKik7CiB9OwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJRnJhbWVFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTElGcmFtZUVsZW1lbnQuY3BwCmluZGV4IDgxN2I1ZDcuLjQyZDQ3NTggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElGcmFtZUVsZW1lbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElGcmFtZUVsZW1lbnQuY3BwCkBAIC00OCwzMiArNDgs
MTIgQEAgUGFzc1JlZlB0cjxIVE1MSUZyYW1lRWxlbWVudD4gSFRNTElGcmFtZUVsZW1lbnQ6OmNy
ZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0YWcKICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEhU
TUxJRnJhbWVFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KSk7CiB9CiAKLWJvb2wgSFRNTElGcmFt
ZUVsZW1lbnQ6Om1hcFRvRW50cnkoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUsIE1hcHBl
ZEF0dHJpYnV0ZUVudHJ5JiByZXN1bHQpIGNvbnN0Ci17Ci0gICAgaWYgKGF0dHJOYW1lID09IHdp
ZHRoQXR0ciB8fCBhdHRyTmFtZSA9PSBoZWlnaHRBdHRyKSB7Ci0gICAgICAgIHJlc3VsdCA9IGVV
bml2ZXJzYWw7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0gICAgCi0gICAgaWYgKGF0
dHJOYW1lID09IGFsaWduQXR0cikgewotICAgICAgICByZXN1bHQgPSBlUmVwbGFjZWQ7IC8vIFNo
YXJlIHdpdGggPGltZz4gc2luY2UgdGhlIGFsaWdubWVudCBiZWhhdmlvciBpcyB0aGUgc2FtZS4K
LSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLSAgICAKLSAgICBpZiAoYXR0ck5hbWUgPT0g
ZnJhbWVib3JkZXJBdHRyKSB7Ci0gICAgICAgIHJlc3VsdCA9IGVSZXBsYWNlZDsKLSAgICAgICAg
cmV0dXJuIGZhbHNlOwotICAgIH0KLQotICAgIHJldHVybiBIVE1MRnJhbWVFbGVtZW50QmFzZTo6
bWFwVG9FbnRyeShhdHRyTmFtZSwgcmVzdWx0KTsKLX0KLQogdm9pZCBIVE1MSUZyYW1lRWxlbWVu
dDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUoQXR0cmlidXRlKiBhdHRyKQogewogICAgIGlmIChhdHRy
LT5uYW1lKCkgPT0gd2lkdGhBdHRyKQotICAgICAgICBhZGRDU1NMZW5ndGgoYXR0ciwgQ1NTUHJv
cGVydHlXaWR0aCwgYXR0ci0+dmFsdWUoKSk7CisgICAgICAgIGFkZENTU0xlbmd0aChDU1NQcm9w
ZXJ0eVdpZHRoLCBhdHRyLT52YWx1ZSgpKTsKICAgICBlbHNlIGlmIChhdHRyLT5uYW1lKCkgPT0g
aGVpZ2h0QXR0cikKLSAgICAgICAgYWRkQ1NTTGVuZ3RoKGF0dHIsIENTU1Byb3BlcnR5SGVpZ2h0
LCBhdHRyLT52YWx1ZSgpKTsKKyAgICAgICAgYWRkQ1NTTGVuZ3RoKENTU1Byb3BlcnR5SGVpZ2h0
LCBhdHRyLT52YWx1ZSgpKTsKICAgICBlbHNlIGlmIChhdHRyLT5uYW1lKCkgPT0gYWxpZ25BdHRy
KQogICAgICAgICBhZGRIVE1MQWxpZ25tZW50KGF0dHIpOwogICAgIGVsc2UgaWYgKGF0dHItPm5h
bWUoKSA9PSBuYW1lQXR0cikgewpAQCAtODcsOSArNjcsMTEgQEAgdm9pZCBIVE1MSUZyYW1lRWxl
bWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUoQXR0cmlidXRlKiBhdHRyKQogICAgIH0gZWxzZSBp
ZiAoYXR0ci0+bmFtZSgpID09IGZyYW1lYm9yZGVyQXR0cikgewogICAgICAgICAvLyBGcmFtZSBi
b3JkZXIgZG9lc24ndCByZWFsbHkgbWF0Y2ggdGhlIEhUTUw0IHNwZWMgZGVmaW5pdGlvbiBmb3Ig
aWZyYW1lcy4gIEl0IHNpbXBseSBhZGRzCiAgICAgICAgIC8vIGEgcHJlc2VudGF0aW9uYWwgaGlu
dCB0aGF0IHRoZSBib3JkZXIgc2hvdWxkIGJlIG9mZiBpZiBzZXQgdG8gemVyby4KLSAgICAgICAg
aWYgKCFhdHRyLT5pc051bGwoKSAmJiAhYXR0ci0+dmFsdWUoKS50b0ludCgpKQorICAgICAgICBp
ZiAoIWF0dHItPmlzTnVsbCgpICYmICFhdHRyLT52YWx1ZSgpLnRvSW50KCkpIHsKICAgICAgICAg
ICAgIC8vIEFkZCBhIHJ1bGUgdGhhdCBudWxscyBvdXQgb3VyIGJvcmRlciB3aWR0aC4KLSAgICAg
ICAgICAgIGFkZENTU0xlbmd0aChhdHRyLCBDU1NQcm9wZXJ0eUJvcmRlcldpZHRoLCAiMCIpOwor
ICAgICAgICAgICAgYWRkQ1NTTGVuZ3RoKENTU1Byb3BlcnR5Qm9yZGVyV2lkdGgsICIwIik7Cisg
ICAgICAgIH0gZWxzZQorICAgICAgICAgICAgcmVtb3ZlQ1NTUHJvcGVydHkoQ1NTUHJvcGVydHlC
b3JkZXJXaWR0aCk7CiAgICAgfSBlbHNlIGlmIChhdHRyLT5uYW1lKCkgPT0gc2FuZGJveEF0dHIp
CiAgICAgICAgIHNldFNhbmRib3hGbGFncyhhdHRyLT5pc051bGwoKSA/IFNhbmRib3hOb25lIDog
U2VjdXJpdHlDb250ZXh0OjpwYXJzZVNhbmRib3hQb2xpY3koYXR0ci0+dmFsdWUoKSkpOwogICAg
IGVsc2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElGcmFtZUVsZW1lbnQu
aCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElGcmFtZUVsZW1lbnQuaAppbmRleCBhN2FlY2Y4
Li4zNTZmZDQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJRnJhbWVFbGVt
ZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSUZyYW1lRWxlbWVudC5oCkBAIC0z
NSw3ICszNSw2IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgSFRNTElGcmFtZUVsZW1lbnQoY29u
c3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Kik7CiAKLSAgICB2aXJ0dWFsIGJvb2wgbWFwVG9F
bnRyeShjb25zdCBRdWFsaWZpZWROYW1lJiwgTWFwcGVkQXR0cmlidXRlRW50cnkmKSBjb25zdDsK
ICAgICB2aXJ0dWFsIHZvaWQgcGFyc2VNYXBwZWRBdHRyaWJ1dGUoQXR0cmlidXRlKik7CiAKICAg
ICB2aXJ0dWFsIHZvaWQgaW5zZXJ0ZWRJbnRvRG9jdW1lbnQoKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTEltYWdlRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxJbWFnZUVsZW1lbnQuY3BwCmluZGV4IGI1YzUxM2QuLjg5Y2JkYjIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEltYWdlRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MSW1hZ2VFbGVtZW50LmNwcApAQCAtNzgsMjUgKzc4LDYgQEAgUGFzc1Jl
ZlB0cjxIVE1MSW1hZ2VFbGVtZW50PiBIVE1MSW1hZ2VFbGVtZW50OjpjcmVhdGVGb3JKU0NvbnN0
cnVjdG9yKERvY3VtZW50KgogICAgIHJldHVybiBpbWFnZS5yZWxlYXNlKCk7CiB9CiAKLWJvb2wg
SFRNTEltYWdlRWxlbWVudDo6bWFwVG9FbnRyeShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFt
ZSwgTWFwcGVkQXR0cmlidXRlRW50cnkmIHJlc3VsdCkgY29uc3QKLXsKLSAgICBpZiAoYXR0ck5h
bWUgPT0gd2lkdGhBdHRyIHx8Ci0gICAgICAgIGF0dHJOYW1lID09IGhlaWdodEF0dHIgfHwKLSAg
ICAgICAgYXR0ck5hbWUgPT0gdnNwYWNlQXR0ciB8fAotICAgICAgICBhdHRyTmFtZSA9PSBoc3Bh
Y2VBdHRyIHx8Ci0gICAgICAgIGF0dHJOYW1lID09IHZhbGlnbkF0dHIpIHsKLSAgICAgICAgcmVz
dWx0ID0gZVVuaXZlcnNhbDsKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLQotICAgIGlm
IChhdHRyTmFtZSA9PSBib3JkZXJBdHRyIHx8IGF0dHJOYW1lID09IGFsaWduQXR0cikgewotICAg
ICAgICByZXN1bHQgPSBlUmVwbGFjZWQ7IC8vIFNoYXJlZCB3aXRoIGVtYmVkIGFuZCBpZnJhbWUg
ZWxlbWVudHMuCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0KLSAgICByZXR1cm4gSFRN
TEVsZW1lbnQ6Om1hcFRvRW50cnkoYXR0ck5hbWUsIHJlc3VsdCk7Ci19Ci0KIHZvaWQgSFRNTElt
YWdlRWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUoQXR0cmlidXRlKiBhdHRyKQogewogICAg
IGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lID0gYXR0ci0+bmFtZSgpOwpAQCAtMTA2LDIy
ICs4NywzOSBAQCB2b2lkIEhUTUxJbWFnZUVsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmlidXRlKEF0
dHJpYnV0ZSogYXR0cikKICAgICB9IGVsc2UgaWYgKGF0dHJOYW1lID09IHNyY0F0dHIpCiAgICAg
ICAgIG1faW1hZ2VMb2FkZXIudXBkYXRlRnJvbUVsZW1lbnRJZ25vcmluZ1ByZXZpb3VzRXJyb3Io
KTsKICAgICBlbHNlIGlmIChhdHRyTmFtZSA9PSB3aWR0aEF0dHIpCi0gICAgICAgIGFkZENTU0xl
bmd0aChhdHRyLCBDU1NQcm9wZXJ0eVdpZHRoLCBhdHRyLT52YWx1ZSgpKTsKKyAgICAgICAgaWYg
KGF0dHItPnZhbHVlKCkuaXNOdWxsKCkpCisgICAgICAgICAgICByZW1vdmVDU1NQcm9wZXJ0eShD
U1NQcm9wZXJ0eVdpZHRoKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgYWRkQ1NTTGVuZ3Ro
KENTU1Byb3BlcnR5V2lkdGgsIGF0dHItPnZhbHVlKCkpOwogICAgIGVsc2UgaWYgKGF0dHJOYW1l
ID09IGhlaWdodEF0dHIpCi0gICAgICAgIGFkZENTU0xlbmd0aChhdHRyLCBDU1NQcm9wZXJ0eUhl
aWdodCwgYXR0ci0+dmFsdWUoKSk7CisgICAgICAgIGlmIChhdHRyLT52YWx1ZSgpLmlzTnVsbCgp
KQorICAgICAgICAgICAgcmVtb3ZlQ1NTUHJvcGVydHkoQ1NTUHJvcGVydHlIZWlnaHQpOworICAg
ICAgICBlbHNlCisgICAgICAgICAgICBhZGRDU1NMZW5ndGgoQ1NTUHJvcGVydHlIZWlnaHQsIGF0
dHItPnZhbHVlKCkpOwogICAgIGVsc2UgaWYgKGF0dHJOYW1lID09IGJvcmRlckF0dHIpIHsKICAg
ICAgICAgLy8gYm9yZGVyPSJub2JvcmRlciIgLT4gYm9yZGVyPSIwIgogICAgICAgICBhcHBseUJv
cmRlckF0dHJpYnV0ZShhdHRyKTsKICAgICB9IGVsc2UgaWYgKGF0dHJOYW1lID09IHZzcGFjZUF0
dHIpIHsKLSAgICAgICAgYWRkQ1NTTGVuZ3RoKGF0dHIsIENTU1Byb3BlcnR5TWFyZ2luVG9wLCBh
dHRyLT52YWx1ZSgpKTsKLSAgICAgICAgYWRkQ1NTTGVuZ3RoKGF0dHIsIENTU1Byb3BlcnR5TWFy
Z2luQm90dG9tLCBhdHRyLT52YWx1ZSgpKTsKKyAgICAgICAgaWYgKGF0dHItPnZhbHVlKCkuaXNO
dWxsKCkpCisgICAgICAgICAgICByZW1vdmVDU1NQcm9wZXJ0aWVzKENTU1Byb3BlcnR5TWFyZ2lu
VG9wLCBDU1NQcm9wZXJ0eU1hcmdpbkJvdHRvbSk7CisgICAgICAgIGVsc2UgeworICAgICAgICAg
ICAgYWRkQ1NTTGVuZ3RoKENTU1Byb3BlcnR5TWFyZ2luVG9wLCBhdHRyLT52YWx1ZSgpKTsKKyAg
ICAgICAgICAgIGFkZENTU0xlbmd0aChDU1NQcm9wZXJ0eU1hcmdpbkJvdHRvbSwgYXR0ci0+dmFs
dWUoKSk7CisgICAgICAgIH0KICAgICB9IGVsc2UgaWYgKGF0dHJOYW1lID09IGhzcGFjZUF0dHIp
IHsKLSAgICAgICAgYWRkQ1NTTGVuZ3RoKGF0dHIsIENTU1Byb3BlcnR5TWFyZ2luTGVmdCwgYXR0
ci0+dmFsdWUoKSk7Ci0gICAgICAgIGFkZENTU0xlbmd0aChhdHRyLCBDU1NQcm9wZXJ0eU1hcmdp
blJpZ2h0LCBhdHRyLT52YWx1ZSgpKTsKKyAgICAgICAgaWYgKGF0dHItPnZhbHVlKCkuaXNOdWxs
KCkpCisgICAgICAgICAgICByZW1vdmVDU1NQcm9wZXJ0aWVzKENTU1Byb3BlcnR5TWFyZ2luTGVm
dCwgQ1NTUHJvcGVydHlNYXJnaW5SaWdodCk7CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAg
YWRkQ1NTTGVuZ3RoKENTU1Byb3BlcnR5TWFyZ2luTGVmdCwgYXR0ci0+dmFsdWUoKSk7CisgICAg
ICAgICAgICBhZGRDU1NMZW5ndGgoQ1NTUHJvcGVydHlNYXJnaW5SaWdodCwgYXR0ci0+dmFsdWUo
KSk7CisgICAgICAgIH0KICAgICB9IGVsc2UgaWYgKGF0dHJOYW1lID09IGFsaWduQXR0cikKICAg
ICAgICAgYWRkSFRNTEFsaWdubWVudChhdHRyKTsKICAgICBlbHNlIGlmIChhdHRyTmFtZSA9PSB2
YWxpZ25BdHRyKQotICAgICAgICBhZGRDU1NQcm9wZXJ0eShhdHRyLCBDU1NQcm9wZXJ0eVZlcnRp
Y2FsQWxpZ24sIGF0dHItPnZhbHVlKCkpOworICAgICAgICBpZiAoYXR0ci0+dmFsdWUoKS5pc051
bGwoKSkKKyAgICAgICAgICAgIHJlbW92ZUNTU1Byb3BlcnR5KENTU1Byb3BlcnR5VmVydGljYWxB
bGlnbik7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGFkZENTU1Byb3BlcnR5KENTU1Byb3Bl
cnR5VmVydGljYWxBbGlnbiwgYXR0ci0+dmFsdWUoKSk7CiAgICAgZWxzZSBpZiAoYXR0ck5hbWUg
PT0gdXNlbWFwQXR0cikKICAgICAgICAgc2V0SXNMaW5rKCFhdHRyLT5pc051bGwoKSk7CiAgICAg
ZWxzZSBpZiAoYXR0ck5hbWUgPT0gb25hYm9ydEF0dHIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxJbWFnZUVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElt
YWdlRWxlbWVudC5oCmluZGV4IDhjYjNlZTkuLmNmYTUyMGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTEltYWdlRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTEltYWdlRWxlbWVudC5oCkBAIC04Myw3ICs4Myw2IEBAIHByb3RlY3RlZDoKICAgICB2aXJ0
dWFsIHZvaWQgZGlkTW92ZVRvTmV3RG9jdW1lbnQoRG9jdW1lbnQqIG9sZERvY3VtZW50KSBPVkVS
UklERTsKIAogcHJpdmF0ZToKLSAgICB2aXJ0dWFsIGJvb2wgbWFwVG9FbnRyeShjb25zdCBRdWFs
aWZpZWROYW1lJiBhdHRyTmFtZSwgTWFwcGVkQXR0cmlidXRlRW50cnkmIHJlc3VsdCkgY29uc3Q7
CiAgICAgdmlydHVhbCB2b2lkIHBhcnNlTWFwcGVkQXR0cmlidXRlKEF0dHJpYnV0ZSopOwogCiAg
ICAgdmlydHVhbCB2b2lkIGF0dGFjaCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MSW5wdXRFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxl
bWVudC5jcHAKaW5kZXggNDEzYzEyNy4uYjY0YzBlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxJbnB1dEVsZW1lbnQuY3BwCkBAIC02NTksMjQgKzY1OSw2IEBAIHZvaWQgSFRNTElucHV0RWxl
bWVudDo6YWNjZXNzS2V5QWN0aW9uKGJvb2wgc2VuZE1vdXNlRXZlbnRzKQogICAgIG1faW5wdXRU
eXBlLT5hY2Nlc3NLZXlBY3Rpb24oc2VuZE1vdXNlRXZlbnRzKTsKIH0KIAotYm9vbCBIVE1MSW5w
dXRFbGVtZW50OjptYXBUb0VudHJ5KGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lLCBNYXBw
ZWRBdHRyaWJ1dGVFbnRyeSYgcmVzdWx0KSBjb25zdAotewotICAgIGlmICgoKGF0dHJOYW1lID09
IGhlaWdodEF0dHIgfHwgYXR0ck5hbWUgPT0gd2lkdGhBdHRyKSAmJiBtX2lucHV0VHlwZS0+c2hv
dWxkUmVzcGVjdEhlaWdodEFuZFdpZHRoQXR0cmlidXRlcygpKQotICAgICAgICB8fCBhdHRyTmFt
ZSA9PSB2c3BhY2VBdHRyCi0gICAgICAgIHx8IGF0dHJOYW1lID09IGhzcGFjZUF0dHIpIHsKLSAg
ICAgICAgcmVzdWx0ID0gZVVuaXZlcnNhbDsKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0K
LQotICAgIGlmIChhdHRyTmFtZSA9PSBhbGlnbkF0dHIgJiYgbV9pbnB1dFR5cGUtPnNob3VsZFJl
c3BlY3RBbGlnbkF0dHJpYnV0ZSgpKSB7Ci0gICAgICAgIC8vIFNoYXJlIHdpdGggPGltZz4gc2lu
Y2UgdGhlIGFsaWdubWVudCBiZWhhdmlvciBpcyB0aGUgc2FtZS4KLSAgICAgICAgcmVzdWx0ID0g
ZVJlcGxhY2VkOwotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotCi0gICAgcmV0dXJuIEhU
TUxFbGVtZW50OjptYXBUb0VudHJ5KGF0dHJOYW1lLCByZXN1bHQpOwotfQotCiB2b2lkIEhUTUxJ
bnB1dEVsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmlidXRlKEF0dHJpYnV0ZSogYXR0cikKIHsKICAg
ICBpZiAoYXR0ci0+bmFtZSgpID09IG5hbWVBdHRyKSB7CkBAIC03MzMsMjAgKzcxNSwyNiBAQCB2
b2lkIEhUTUxJbnB1dEVsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmlidXRlKEF0dHJpYnV0ZSogYXR0
cikKICAgICBlbHNlIGlmIChhdHRyLT5uYW1lKCkgPT0gdXNlbWFwQXR0ciB8fCBhdHRyLT5uYW1l
KCkgPT0gYWNjZXNza2V5QXR0cikgewogICAgICAgICAvLyBGSVhNRTogaWdub3JlIGZvciB0aGUg
bW9tZW50CiAgICAgfSBlbHNlIGlmIChhdHRyLT5uYW1lKCkgPT0gdnNwYWNlQXR0cikgewotICAg
ICAgICBhZGRDU1NMZW5ndGgoYXR0ciwgQ1NTUHJvcGVydHlNYXJnaW5Ub3AsIGF0dHItPnZhbHVl
KCkpOwotICAgICAgICBhZGRDU1NMZW5ndGgoYXR0ciwgQ1NTUHJvcGVydHlNYXJnaW5Cb3R0b20s
IGF0dHItPnZhbHVlKCkpOworICAgICAgICBhZGRDU1NMZW5ndGgoQ1NTUHJvcGVydHlNYXJnaW5U
b3AsIGF0dHItPnZhbHVlKCkpOworICAgICAgICBhZGRDU1NMZW5ndGgoQ1NTUHJvcGVydHlNYXJn
aW5Cb3R0b20sIGF0dHItPnZhbHVlKCkpOwogICAgIH0gZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09
IGhzcGFjZUF0dHIpIHsKLSAgICAgICAgYWRkQ1NTTGVuZ3RoKGF0dHIsIENTU1Byb3BlcnR5TWFy
Z2luTGVmdCwgYXR0ci0+dmFsdWUoKSk7Ci0gICAgICAgIGFkZENTU0xlbmd0aChhdHRyLCBDU1NQ
cm9wZXJ0eU1hcmdpblJpZ2h0LCBhdHRyLT52YWx1ZSgpKTsKKyAgICAgICAgYWRkQ1NTTGVuZ3Ro
KENTU1Byb3BlcnR5TWFyZ2luTGVmdCwgYXR0ci0+dmFsdWUoKSk7CisgICAgICAgIGFkZENTU0xl
bmd0aChDU1NQcm9wZXJ0eU1hcmdpblJpZ2h0LCBhdHRyLT52YWx1ZSgpKTsKICAgICB9IGVsc2Ug
aWYgKGF0dHItPm5hbWUoKSA9PSBhbGlnbkF0dHIpIHsKICAgICAgICAgaWYgKG1faW5wdXRUeXBl
LT5zaG91bGRSZXNwZWN0QWxpZ25BdHRyaWJ1dGUoKSkKICAgICAgICAgICAgIGFkZEhUTUxBbGln
bm1lbnQoYXR0cik7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHJlbW92ZUhUTUxBbGlnbm1l
bnQoKTsKICAgICB9IGVsc2UgaWYgKGF0dHItPm5hbWUoKSA9PSB3aWR0aEF0dHIpIHsKICAgICAg
ICAgaWYgKG1faW5wdXRUeXBlLT5zaG91bGRSZXNwZWN0SGVpZ2h0QW5kV2lkdGhBdHRyaWJ1dGVz
KCkpCi0gICAgICAgICAgICBhZGRDU1NMZW5ndGgoYXR0ciwgQ1NTUHJvcGVydHlXaWR0aCwgYXR0
ci0+dmFsdWUoKSk7CisgICAgICAgICAgICBhZGRDU1NMZW5ndGgoQ1NTUHJvcGVydHlXaWR0aCwg
YXR0ci0+dmFsdWUoKSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHJlbW92ZUNTU1Byb3Bl
cnR5KENTU1Byb3BlcnR5V2lkdGgpOwogICAgIH0gZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09IGhl
aWdodEF0dHIpIHsKICAgICAgICAgaWYgKG1faW5wdXRUeXBlLT5zaG91bGRSZXNwZWN0SGVpZ2h0
QW5kV2lkdGhBdHRyaWJ1dGVzKCkpCi0gICAgICAgICAgICBhZGRDU1NMZW5ndGgoYXR0ciwgQ1NT
UHJvcGVydHlIZWlnaHQsIGF0dHItPnZhbHVlKCkpOworICAgICAgICAgICAgYWRkQ1NTTGVuZ3Ro
KENTU1Byb3BlcnR5SGVpZ2h0LCBhdHRyLT52YWx1ZSgpKTsKKyAgICAgICAgZWxzZQorICAgICAg
ICAgICAgcmVtb3ZlQ1NTUHJvcGVydHkoQ1NTUHJvcGVydHlIZWlnaHQpOwogICAgIH0gZWxzZSBp
ZiAoYXR0ci0+bmFtZSgpID09IGJvcmRlckF0dHIgJiYgaXNJbWFnZUJ1dHRvbigpKSB7CiAgICAg
ICAgIGFwcGx5Qm9yZGVyQXR0cmlidXRlKGF0dHIpOwogICAgIH0gZWxzZSBpZiAoYXR0ci0+bmFt
ZSgpID09IG9uc2VhcmNoQXR0cikgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MSW5wdXRFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQu
aAppbmRleCA0N2FjNGQzLi45OTFmOGYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxJbnB1dEVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVs
ZW1lbnQuaApAQCAtMjc2LDcgKzI3Niw2IEBAIHByaXZhdGU6CiAKICAgICB2aXJ0dWFsIHZvaWQg
YWNjZXNzS2V5QWN0aW9uKGJvb2wgc2VuZE1vdXNlRXZlbnRzKTsKIAotICAgIHZpcnR1YWwgYm9v
bCBtYXBUb0VudHJ5KGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lLCBNYXBwZWRBdHRyaWJ1
dGVFbnRyeSYgcmVzdWx0KSBjb25zdDsKICAgICB2aXJ0dWFsIHZvaWQgcGFyc2VNYXBwZWRBdHRy
aWJ1dGUoQXR0cmlidXRlKik7CiAgICAgdmlydHVhbCB2b2lkIGZpbmlzaFBhcnNpbmdDaGlsZHJl
bigpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxMSUVsZW1lbnQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTElFbGVtZW50LmNwcAppbmRleCAzMjg4NmNiLi42
ODhmN2E0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxMSUVsZW1lbnQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTExJRWxlbWVudC5jcHAKQEAgLTQ5LDM0ICs0
OSwyNiBAQCBQYXNzUmVmUHRyPEhUTUxMSUVsZW1lbnQ+IEhUTUxMSUVsZW1lbnQ6OmNyZWF0ZShj
b25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEbwogICAgIHJldHVybiBhZG9wdFJlZihuZXcg
SFRNTExJRWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCkpOwogfQogCi1ib29sIEhUTUxMSUVsZW1l
bnQ6Om1hcFRvRW50cnkoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUsIE1hcHBlZEF0dHJp
YnV0ZUVudHJ5JiByZXN1bHQpIGNvbnN0Ci17Ci0gICAgaWYgKGF0dHJOYW1lID09IHR5cGVBdHRy
KSB7Ci0gICAgICAgIHJlc3VsdCA9IGVMaXN0SXRlbTsgLy8gU2hhcmUgd2l0aCA8b2w+IHNpbmNl
IGFsbCB0aGUgdmFsdWVzIGFyZSB0aGUgc2FtZQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAg
fQotICAgIAotICAgIHJldHVybiBIVE1MRWxlbWVudDo6bWFwVG9FbnRyeShhdHRyTmFtZSwgcmVz
dWx0KTsKLX0KLQogdm9pZCBIVE1MTElFbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpYnV0ZShBdHRy
aWJ1dGUqIGF0dHIpCiB7CiAgICAgaWYgKGF0dHItPm5hbWUoKSA9PSB2YWx1ZUF0dHIpIHsKICAg
ICAgICAgaWYgKHJlbmRlcmVyKCkgJiYgcmVuZGVyZXIoKS0+aXNMaXN0SXRlbSgpKQogICAgICAg
ICAgICAgcGFyc2VWYWx1ZShhdHRyLT52YWx1ZSgpKTsKICAgICB9IGVsc2UgaWYgKGF0dHItPm5h
bWUoKSA9PSB0eXBlQXR0cikgewotICAgICAgICBpZiAoYXR0ci0+dmFsdWUoKSA9PSAiYSIpCi0g
ICAgICAgICAgICBhZGRDU1NQcm9wZXJ0eShhdHRyLCBDU1NQcm9wZXJ0eUxpc3RTdHlsZVR5cGUs
IENTU1ZhbHVlTG93ZXJBbHBoYSk7CisgICAgICAgIGlmIChhdHRyLT52YWx1ZSgpLmlzTnVsbCgp
KQorICAgICAgICAgICAgcmVtb3ZlQ1NTUHJvcGVydHkoQ1NTUHJvcGVydHlMaXN0U3R5bGVUeXBl
KTsKKyAgICAgICAgZWxzZSBpZiAoYXR0ci0+dmFsdWUoKSA9PSAiYSIpCisgICAgICAgICAgICBh
ZGRDU1NQcm9wZXJ0eShDU1NQcm9wZXJ0eUxpc3RTdHlsZVR5cGUsIENTU1ZhbHVlTG93ZXJBbHBo
YSk7CiAgICAgICAgIGVsc2UgaWYgKGF0dHItPnZhbHVlKCkgPT0gIkEiKQotICAgICAgICAgICAg
YWRkQ1NTUHJvcGVydHkoYXR0ciwgQ1NTUHJvcGVydHlMaXN0U3R5bGVUeXBlLCBDU1NWYWx1ZVVw
cGVyQWxwaGEpOworICAgICAgICAgICAgYWRkQ1NTUHJvcGVydHkoQ1NTUHJvcGVydHlMaXN0U3R5
bGVUeXBlLCBDU1NWYWx1ZVVwcGVyQWxwaGEpOwogICAgICAgICBlbHNlIGlmIChhdHRyLT52YWx1
ZSgpID09ICJpIikKLSAgICAgICAgICAgIGFkZENTU1Byb3BlcnR5KGF0dHIsIENTU1Byb3BlcnR5
TGlzdFN0eWxlVHlwZSwgQ1NTVmFsdWVMb3dlclJvbWFuKTsKKyAgICAgICAgICAgIGFkZENTU1By
b3BlcnR5KENTU1Byb3BlcnR5TGlzdFN0eWxlVHlwZSwgQ1NTVmFsdWVMb3dlclJvbWFuKTsKICAg
ICAgICAgZWxzZSBpZiAoYXR0ci0+dmFsdWUoKSA9PSAiSSIpCi0gICAgICAgICAgICBhZGRDU1NQ
cm9wZXJ0eShhdHRyLCBDU1NQcm9wZXJ0eUxpc3RTdHlsZVR5cGUsIENTU1ZhbHVlVXBwZXJSb21h
bik7CisgICAgICAgICAgICBhZGRDU1NQcm9wZXJ0eShDU1NQcm9wZXJ0eUxpc3RTdHlsZVR5cGUs
IENTU1ZhbHVlVXBwZXJSb21hbik7CiAgICAgICAgIGVsc2UgaWYgKGF0dHItPnZhbHVlKCkgPT0g
IjEiKQotICAgICAgICAgICAgYWRkQ1NTUHJvcGVydHkoYXR0ciwgQ1NTUHJvcGVydHlMaXN0U3R5
bGVUeXBlLCBDU1NWYWx1ZURlY2ltYWwpOworICAgICAgICAgICAgYWRkQ1NTUHJvcGVydHkoQ1NT
UHJvcGVydHlMaXN0U3R5bGVUeXBlLCBDU1NWYWx1ZURlY2ltYWwpOwogICAgICAgICBlbHNlCi0g
ICAgICAgICAgICBhZGRDU1NQcm9wZXJ0eShhdHRyLCBDU1NQcm9wZXJ0eUxpc3RTdHlsZVR5cGUs
IGF0dHItPnZhbHVlKCkpOworICAgICAgICAgICAgYWRkQ1NTUHJvcGVydHkoQ1NTUHJvcGVydHlM
aXN0U3R5bGVUeXBlLCBhdHRyLT52YWx1ZSgpKTsKICAgICB9IGVsc2UKICAgICAgICAgSFRNTEVs
ZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmlidXRlKGF0dHIpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MTElFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxM
SUVsZW1lbnQuaAppbmRleCA3ZTZhOTUzLi44NjI2MDZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxMSUVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxM
SUVsZW1lbnQuaApAQCAtMzUsNyArMzUsNiBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIEhUTUxM
SUVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Kik7CiAKLSAgICB2aXJ0dWFs
IGJvb2wgbWFwVG9FbnRyeShjb25zdCBRdWFsaWZpZWROYW1lJiwgTWFwcGVkQXR0cmlidXRlRW50
cnkmKSBjb25zdDsKICAgICB2aXJ0dWFsIHZvaWQgcGFyc2VNYXBwZWRBdHRyaWJ1dGUoQXR0cmli
dXRlKik7CiAKICAgICB2aXJ0dWFsIHZvaWQgYXR0YWNoKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxNYXJxdWVlRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxNYXJxdWVlRWxlbWVudC5jcHAKaW5kZXggMDUzZmZhOC4uMjEyN2JjYSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWFycXVlZUVsZW1lbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTE1hcnF1ZWVFbGVtZW50LmNwcApAQCAtNTEsNjUgKzUxLDYzIEBA
IFBhc3NSZWZQdHI8SFRNTE1hcnF1ZWVFbGVtZW50PiBIVE1MTWFycXVlZUVsZW1lbnQ6OmNyZWF0
ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0CiAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBIVE1MTWFy
cXVlZUVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpKTsKIH0KIAotYm9vbCBIVE1MTWFycXVlZUVs
ZW1lbnQ6Om1hcFRvRW50cnkoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUsIE1hcHBlZEF0
dHJpYnV0ZUVudHJ5JiByZXN1bHQpIGNvbnN0Ci17Ci0gICAgaWYgKGF0dHJOYW1lID09IHdpZHRo
QXR0ciB8fAotICAgICAgICBhdHRyTmFtZSA9PSBoZWlnaHRBdHRyIHx8Ci0gICAgICAgIGF0dHJO
YW1lID09IGJnY29sb3JBdHRyIHx8Ci0gICAgICAgIGF0dHJOYW1lID09IHZzcGFjZUF0dHIgfHwK
LSAgICAgICAgYXR0ck5hbWUgPT0gaHNwYWNlQXR0ciB8fAotICAgICAgICBhdHRyTmFtZSA9PSBz
Y3JvbGxhbW91bnRBdHRyIHx8Ci0gICAgICAgIGF0dHJOYW1lID09IHNjcm9sbGRlbGF5QXR0ciB8
fAotICAgICAgICBhdHRyTmFtZSA9PSBsb29wQXR0ciB8fAotICAgICAgICBhdHRyTmFtZSA9PSBi
ZWhhdmlvckF0dHIgfHwKLSAgICAgICAgYXR0ck5hbWUgPT0gZGlyZWN0aW9uQXR0cikgewotICAg
ICAgICByZXN1bHQgPSBlVW5pdmVyc2FsOwotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQot
Ci0gICAgcmV0dXJuIEhUTUxFbGVtZW50OjptYXBUb0VudHJ5KGF0dHJOYW1lLCByZXN1bHQpOwot
fQotCiB2b2lkIEhUTUxNYXJxdWVlRWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUoQXR0cmli
dXRlKiBhdHRyKQogewogICAgIGlmIChhdHRyLT5uYW1lKCkgPT0gd2lkdGhBdHRyKSB7CiAgICAg
ICAgIGlmICghYXR0ci0+dmFsdWUoKS5pc0VtcHR5KCkpCi0gICAgICAgICAgICBhZGRDU1NMZW5n
dGgoYXR0ciwgQ1NTUHJvcGVydHlXaWR0aCwgYXR0ci0+dmFsdWUoKSk7CisgICAgICAgICAgICBh
ZGRDU1NMZW5ndGgoQ1NTUHJvcGVydHlXaWR0aCwgYXR0ci0+dmFsdWUoKSk7CisgICAgICAgIGVs
c2UKKyAgICAgICAgICAgIHJlbW92ZUNTU1Byb3BlcnR5KENTU1Byb3BlcnR5V2lkdGgpOwogICAg
IH0gZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09IGhlaWdodEF0dHIpIHsKICAgICAgICAgaWYgKCFh
dHRyLT52YWx1ZSgpLmlzRW1wdHkoKSkKLSAgICAgICAgICAgIGFkZENTU0xlbmd0aChhdHRyLCBD
U1NQcm9wZXJ0eUhlaWdodCwgYXR0ci0+dmFsdWUoKSk7CisgICAgICAgICAgICBhZGRDU1NMZW5n
dGgoQ1NTUHJvcGVydHlIZWlnaHQsIGF0dHItPnZhbHVlKCkpOworICAgICAgICBlbHNlCisgICAg
ICAgICAgICByZW1vdmVDU1NQcm9wZXJ0eShDU1NQcm9wZXJ0eUhlaWdodCk7CiAgICAgfSBlbHNl
IGlmIChhdHRyLT5uYW1lKCkgPT0gYmdjb2xvckF0dHIpIHsKICAgICAgICAgaWYgKCFhdHRyLT52
YWx1ZSgpLmlzRW1wdHkoKSkKLSAgICAgICAgICAgIGFkZENTU0NvbG9yKGF0dHIsIENTU1Byb3Bl
cnR5QmFja2dyb3VuZENvbG9yLCBhdHRyLT52YWx1ZSgpKTsKKyAgICAgICAgICAgIGFkZENTU0Nv
bG9yKENTU1Byb3BlcnR5QmFja2dyb3VuZENvbG9yLCBhdHRyLT52YWx1ZSgpKTsKKyAgICAgICAg
ZWxzZQorICAgICAgICAgICAgcmVtb3ZlQ1NTUHJvcGVydHkoQ1NTUHJvcGVydHlCYWNrZ3JvdW5k
Q29sb3IpOwogICAgIH0gZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09IHZzcGFjZUF0dHIpIHsKICAg
ICAgICAgaWYgKCFhdHRyLT52YWx1ZSgpLmlzRW1wdHkoKSkgewotICAgICAgICAgICAgYWRkQ1NT
TGVuZ3RoKGF0dHIsIENTU1Byb3BlcnR5TWFyZ2luVG9wLCBhdHRyLT52YWx1ZSgpKTsKLSAgICAg
ICAgICAgIGFkZENTU0xlbmd0aChhdHRyLCBDU1NQcm9wZXJ0eU1hcmdpbkJvdHRvbSwgYXR0ci0+
dmFsdWUoKSk7Ci0gICAgICAgIH0KKyAgICAgICAgICAgIGFkZENTU0xlbmd0aChDU1NQcm9wZXJ0
eU1hcmdpblRvcCwgYXR0ci0+dmFsdWUoKSk7CisgICAgICAgICAgICBhZGRDU1NMZW5ndGgoQ1NT
UHJvcGVydHlNYXJnaW5Cb3R0b20sIGF0dHItPnZhbHVlKCkpOworICAgICAgICB9IGVsc2UKKyAg
ICAgICAgICAgIHJlbW92ZUNTU1Byb3BlcnRpZXMoQ1NTUHJvcGVydHlNYXJnaW5Ub3AsIENTU1By
b3BlcnR5TWFyZ2luQm90dG9tKTsKICAgICB9IGVsc2UgaWYgKGF0dHItPm5hbWUoKSA9PSBoc3Bh
Y2VBdHRyKSB7CiAgICAgICAgIGlmICghYXR0ci0+dmFsdWUoKS5pc0VtcHR5KCkpIHsKLSAgICAg
ICAgICAgIGFkZENTU0xlbmd0aChhdHRyLCBDU1NQcm9wZXJ0eU1hcmdpbkxlZnQsIGF0dHItPnZh
bHVlKCkpOwotICAgICAgICAgICAgYWRkQ1NTTGVuZ3RoKGF0dHIsIENTU1Byb3BlcnR5TWFyZ2lu
UmlnaHQsIGF0dHItPnZhbHVlKCkpOwotICAgICAgICB9CisgICAgICAgICAgICBhZGRDU1NMZW5n
dGgoQ1NTUHJvcGVydHlNYXJnaW5MZWZ0LCBhdHRyLT52YWx1ZSgpKTsKKyAgICAgICAgICAgIGFk
ZENTU0xlbmd0aChDU1NQcm9wZXJ0eU1hcmdpblJpZ2h0LCBhdHRyLT52YWx1ZSgpKTsKKyAgICAg
ICAgfSBlbHNlCisgICAgICAgICAgICByZW1vdmVDU1NQcm9wZXJ0aWVzKENTU1Byb3BlcnR5TWFy
Z2luTGVmdCwgQ1NTUHJvcGVydHlNYXJnaW5SaWdodCk7CiAgICAgfSBlbHNlIGlmIChhdHRyLT5u
YW1lKCkgPT0gc2Nyb2xsYW1vdW50QXR0cikgewogICAgICAgICBpZiAoIWF0dHItPnZhbHVlKCku
aXNFbXB0eSgpKQotICAgICAgICAgICAgYWRkQ1NTTGVuZ3RoKGF0dHIsIENTU1Byb3BlcnR5V2Vi
a2l0TWFycXVlZUluY3JlbWVudCwgYXR0ci0+dmFsdWUoKSk7CisgICAgICAgICAgICBhZGRDU1NM
ZW5ndGgoQ1NTUHJvcGVydHlXZWJraXRNYXJxdWVlSW5jcmVtZW50LCBhdHRyLT52YWx1ZSgpKTsK
KyAgICAgICAgZWxzZQorICAgICAgICAgICAgcmVtb3ZlQ1NTUHJvcGVydHkoQ1NTUHJvcGVydHlX
ZWJraXRNYXJxdWVlSW5jcmVtZW50KTsKICAgICB9IGVsc2UgaWYgKGF0dHItPm5hbWUoKSA9PSBz
Y3JvbGxkZWxheUF0dHIpIHsKICAgICAgICAgaWYgKCFhdHRyLT52YWx1ZSgpLmlzRW1wdHkoKSkK
LSAgICAgICAgICAgIGFkZENTU0xlbmd0aChhdHRyLCBDU1NQcm9wZXJ0eVdlYmtpdE1hcnF1ZWVT
cGVlZCwgYXR0ci0+dmFsdWUoKSk7CisgICAgICAgICAgICBhZGRDU1NMZW5ndGgoQ1NTUHJvcGVy
dHlXZWJraXRNYXJxdWVlU3BlZWQsIGF0dHItPnZhbHVlKCkpOworICAgICAgICBlbHNlCisgICAg
ICAgICAgICByZW1vdmVDU1NQcm9wZXJ0eShDU1NQcm9wZXJ0eVdlYmtpdE1hcnF1ZWVTcGVlZCk7
CiAgICAgfSBlbHNlIGlmIChhdHRyLT5uYW1lKCkgPT0gbG9vcEF0dHIpIHsKICAgICAgICAgaWYg
KCFhdHRyLT52YWx1ZSgpLmlzRW1wdHkoKSkgewogICAgICAgICAgICAgaWYgKGF0dHItPnZhbHVl
KCkgPT0gIi0xIiB8fCBlcXVhbElnbm9yaW5nQ2FzZShhdHRyLT52YWx1ZSgpLCAiaW5maW5pdGUi
KSkKLSAgICAgICAgICAgICAgICBhZGRDU1NQcm9wZXJ0eShhdHRyLCBDU1NQcm9wZXJ0eVdlYmtp
dE1hcnF1ZWVSZXBldGl0aW9uLCBDU1NWYWx1ZUluZmluaXRlKTsKKyAgICAgICAgICAgICAgICBh
ZGRDU1NQcm9wZXJ0eShDU1NQcm9wZXJ0eVdlYmtpdE1hcnF1ZWVSZXBldGl0aW9uLCBDU1NWYWx1
ZUluZmluaXRlKTsKICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBhZGRDU1NMZW5n
dGgoYXR0ciwgQ1NTUHJvcGVydHlXZWJraXRNYXJxdWVlUmVwZXRpdGlvbiwgYXR0ci0+dmFsdWUo
KSk7Ci0gICAgICAgIH0KKyAgICAgICAgICAgICAgICBhZGRDU1NMZW5ndGgoQ1NTUHJvcGVydHlX
ZWJraXRNYXJxdWVlUmVwZXRpdGlvbiwgYXR0ci0+dmFsdWUoKSk7CisgICAgICAgIH0gZWxzZQor
ICAgICAgICAgICAgcmVtb3ZlQ1NTUHJvcGVydHkoQ1NTUHJvcGVydHlXZWJraXRNYXJxdWVlUmVw
ZXRpdGlvbik7CiAgICAgfSBlbHNlIGlmIChhdHRyLT5uYW1lKCkgPT0gYmVoYXZpb3JBdHRyKSB7
CiAgICAgICAgIGlmICghYXR0ci0+dmFsdWUoKS5pc0VtcHR5KCkpCi0gICAgICAgICAgICBhZGRD
U1NQcm9wZXJ0eShhdHRyLCBDU1NQcm9wZXJ0eVdlYmtpdE1hcnF1ZWVTdHlsZSwgYXR0ci0+dmFs
dWUoKSk7CisgICAgICAgICAgICBhZGRDU1NQcm9wZXJ0eShDU1NQcm9wZXJ0eVdlYmtpdE1hcnF1
ZWVTdHlsZSwgYXR0ci0+dmFsdWUoKSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHJlbW92
ZUNTU1Byb3BlcnR5KENTU1Byb3BlcnR5V2Via2l0TWFycXVlZVN0eWxlKTsKICAgICB9IGVsc2Ug
aWYgKGF0dHItPm5hbWUoKSA9PSBkaXJlY3Rpb25BdHRyKSB7CiAgICAgICAgIGlmICghYXR0ci0+
dmFsdWUoKS5pc0VtcHR5KCkpCi0gICAgICAgICAgICBhZGRDU1NQcm9wZXJ0eShhdHRyLCBDU1NQ
cm9wZXJ0eVdlYmtpdE1hcnF1ZWVEaXJlY3Rpb24sIGF0dHItPnZhbHVlKCkpOworICAgICAgICAg
ICAgYWRkQ1NTUHJvcGVydHkoQ1NTUHJvcGVydHlXZWJraXRNYXJxdWVlRGlyZWN0aW9uLCBhdHRy
LT52YWx1ZSgpKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgcmVtb3ZlQ1NTUHJvcGVydHko
Q1NTUHJvcGVydHlXZWJraXRNYXJxdWVlRGlyZWN0aW9uKTsKICAgICB9IGVsc2UgaWYgKGF0dHIt
Pm5hbWUoKSA9PSB0cnVlc3BlZWRBdHRyKQogICAgICAgICBtX21pbmltdW1EZWxheSA9ICFhdHRy
LT5pc0VtcHR5KCkgPyAwIDogZGVmYXVsdE1pbmltdW1EZWxheTsKICAgICBlbHNlCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNYXJxdWVlRWxlbWVudC5oIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MTWFycXVlZUVsZW1lbnQuaAppbmRleCA1ODZhYTZmLi5hYzM5NTNmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNYXJxdWVlRWxlbWVudC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1hcnF1ZWVFbGVtZW50LmgKQEAgLTUzLDcgKzUzLDYg
QEAgcHVibGljOgogcHJpdmF0ZToKICAgICBIVE1MTWFycXVlZUVsZW1lbnQoY29uc3QgUXVhbGlm
aWVkTmFtZSYsIERvY3VtZW50Kik7CiAKLSAgICB2aXJ0dWFsIGJvb2wgbWFwVG9FbnRyeShjb25z
dCBRdWFsaWZpZWROYW1lJiwgTWFwcGVkQXR0cmlidXRlRW50cnkmKSBjb25zdDsKICAgICB2aXJ0
dWFsIHZvaWQgcGFyc2VNYXBwZWRBdHRyaWJ1dGUoQXR0cmlidXRlKik7CiAKICAgICAvLyBBY3Rp
dmVET01PYmplY3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9MaXN0RWxl
bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPTGlzdEVsZW1lbnQuY3BwCmluZGV4
IGQ5MGEyZjcuLjMyMjk1MTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9M
aXN0RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT0xpc3RFbGVtZW50
LmNwcApAQCAtNTQsMjkgKzU0LDIxIEBAIFBhc3NSZWZQdHI8SFRNTE9MaXN0RWxlbWVudD4gSFRN
TE9MaXN0RWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hCiAgICAgcmV0
dXJuIGFkb3B0UmVmKG5ldyBIVE1MT0xpc3RFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KSk7CiB9
CiAKLWJvb2wgSFRNTE9MaXN0RWxlbWVudDo6bWFwVG9FbnRyeShjb25zdCBRdWFsaWZpZWROYW1l
JiBhdHRyTmFtZSwgTWFwcGVkQXR0cmlidXRlRW50cnkmIHJlc3VsdCkgY29uc3QKLXsKLSAgICBp
ZiAoYXR0ck5hbWUgPT0gdHlwZUF0dHIpIHsKLSAgICAgICAgcmVzdWx0ID0gZUxpc3RJdGVtOyAv
LyBTaGFyZSB3aXRoIDxsaT4KLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLSAgICAKLSAg
ICByZXR1cm4gSFRNTEVsZW1lbnQ6Om1hcFRvRW50cnkoYXR0ck5hbWUsIHJlc3VsdCk7Ci19Ci0K
IHZvaWQgSFRNTE9MaXN0RWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUoQXR0cmlidXRlKiBh
dHRyKQogewogICAgIGlmIChhdHRyLT5uYW1lKCkgPT0gdHlwZUF0dHIpIHsKICAgICAgICAgaWYg
KGF0dHItPnZhbHVlKCkgPT0gImEiKQotICAgICAgICAgICAgYWRkQ1NTUHJvcGVydHkoYXR0ciwg
Q1NTUHJvcGVydHlMaXN0U3R5bGVUeXBlLCBDU1NWYWx1ZUxvd2VyQWxwaGEpOworICAgICAgICAg
ICAgYWRkQ1NTUHJvcGVydHkoQ1NTUHJvcGVydHlMaXN0U3R5bGVUeXBlLCBDU1NWYWx1ZUxvd2Vy
QWxwaGEpOwogICAgICAgICBlbHNlIGlmIChhdHRyLT52YWx1ZSgpID09ICJBIikKLSAgICAgICAg
ICAgIGFkZENTU1Byb3BlcnR5KGF0dHIsIENTU1Byb3BlcnR5TGlzdFN0eWxlVHlwZSwgQ1NTVmFs
dWVVcHBlckFscGhhKTsKKyAgICAgICAgICAgIGFkZENTU1Byb3BlcnR5KENTU1Byb3BlcnR5TGlz
dFN0eWxlVHlwZSwgQ1NTVmFsdWVVcHBlckFscGhhKTsKICAgICAgICAgZWxzZSBpZiAoYXR0ci0+
dmFsdWUoKSA9PSAiaSIpCi0gICAgICAgICAgICBhZGRDU1NQcm9wZXJ0eShhdHRyLCBDU1NQcm9w
ZXJ0eUxpc3RTdHlsZVR5cGUsIENTU1ZhbHVlTG93ZXJSb21hbik7CisgICAgICAgICAgICBhZGRD
U1NQcm9wZXJ0eShDU1NQcm9wZXJ0eUxpc3RTdHlsZVR5cGUsIENTU1ZhbHVlTG93ZXJSb21hbik7
CiAgICAgICAgIGVsc2UgaWYgKGF0dHItPnZhbHVlKCkgPT0gIkkiKQotICAgICAgICAgICAgYWRk
Q1NTUHJvcGVydHkoYXR0ciwgQ1NTUHJvcGVydHlMaXN0U3R5bGVUeXBlLCBDU1NWYWx1ZVVwcGVy
Um9tYW4pOworICAgICAgICAgICAgYWRkQ1NTUHJvcGVydHkoQ1NTUHJvcGVydHlMaXN0U3R5bGVU
eXBlLCBDU1NWYWx1ZVVwcGVyUm9tYW4pOwogICAgICAgICBlbHNlIGlmIChhdHRyLT52YWx1ZSgp
ID09ICIxIikKLSAgICAgICAgICAgIGFkZENTU1Byb3BlcnR5KGF0dHIsIENTU1Byb3BlcnR5TGlz
dFN0eWxlVHlwZSwgQ1NTVmFsdWVEZWNpbWFsKTsKKyAgICAgICAgICAgIGFkZENTU1Byb3BlcnR5
KENTU1Byb3BlcnR5TGlzdFN0eWxlVHlwZSwgQ1NTVmFsdWVEZWNpbWFsKTsKKyAgICAgICAgZWxz
ZQorICAgICAgICAgICAgcmVtb3ZlQ1NTUHJvcGVydHkoQ1NTUHJvcGVydHlMaXN0U3R5bGVUeXBl
KTsKICAgICB9IGVsc2UgaWYgKGF0dHItPm5hbWUoKSA9PSBzdGFydEF0dHIpIHsKICAgICAgICAg
aW50IG9sZFN0YXJ0ID0gc3RhcnQoKTsKICAgICAgICAgYm9vbCBjYW5QYXJzZTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9MaXN0RWxlbWVudC5oIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MT0xpc3RFbGVtZW50LmgKaW5kZXggODAwMGIyOC4uMDE3OTU3ZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT0xpc3RFbGVtZW50LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MT0xpc3RFbGVtZW50LmgKQEAgLTUzLDcgKzUzLDYgQEAgcHJpdmF0
ZToKIAogICAgIHZvaWQgcmVjYWxjdWxhdGVJdGVtQ291bnQoKTsKIAotICAgIHZpcnR1YWwgYm9v
bCBtYXBUb0VudHJ5KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBNYXBwZWRBdHRyaWJ1dGVFbnRyeSYp
IGNvbnN0OwogICAgIHZpcnR1YWwgdm9pZCBwYXJzZU1hcHBlZEF0dHJpYnV0ZShBdHRyaWJ1dGUq
KTsKIAogICAgIGludCBtX3N0YXJ0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MT3V0cHV0RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPdXRwdXRFbGVt
ZW50LmNwcAppbmRleCBlZTNjMGQ4Li5hODViZmQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxPdXRwdXRFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxPdXRwdXRFbGVtZW50LmNwcApAQCAtNjEsMTYgKzYxLDYgQEAgYm9vbCBIVE1MT3V0cHV0RWxl
bWVudDo6c3VwcG9ydHNGb2N1cygpIGNvbnN0CiAgICAgcmV0dXJuIE5vZGU6OnN1cHBvcnRzRm9j
dXMoKSAmJiAhZGlzYWJsZWQoKTsKIH0KIAotYm9vbCBIVE1MT3V0cHV0RWxlbWVudDo6bWFwVG9F
bnRyeShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSwgTWFwcGVkQXR0cmlidXRlRW50cnkm
IHJlc3VsdCkgY29uc3QKLXsKLSAgICBpZiAoYXR0ck5hbWUgPT0gSFRNTE5hbWVzOjpkaXJBdHRy
KSB7Ci0gICAgICAgIHJlc3VsdCA9IGVCREk7Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAgIH0K
LQotICAgIHJldHVybiBIVE1MRWxlbWVudDo6bWFwVG9FbnRyeShhdHRyTmFtZSwgcmVzdWx0KTsK
LX0KLQogdm9pZCBIVE1MT3V0cHV0RWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUoQXR0cmli
dXRlKiBhdHRyKQogewogICAgIGlmIChhdHRyLT5uYW1lKCkgPT0gSFRNTE5hbWVzOjpmb3JBdHRy
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT3V0cHV0RWxlbWVudC5oIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT3V0cHV0RWxlbWVudC5oCmluZGV4IDgzZGY3ZmEuLjk2
OWM2Y2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE91dHB1dEVsZW1lbnQu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPdXRwdXRFbGVtZW50LmgKQEAgLTU1LDcg
KzU1LDYgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBIVE1MT3V0cHV0RWxlbWVudChjb25zdCBR
dWFsaWZpZWROYW1lJiwgRG9jdW1lbnQqLCBIVE1MRm9ybUVsZW1lbnQqKTsKIAotICAgIHZpcnR1
YWwgYm9vbCBtYXBUb0VudHJ5KGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lLCBNYXBwZWRB
dHRyaWJ1dGVFbnRyeSYgcmVzdWx0KSBjb25zdCBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQg
cGFyc2VNYXBwZWRBdHRyaWJ1dGUoQXR0cmlidXRlKik7CiAgICAgdmlydHVhbCBjb25zdCBBdG9t
aWNTdHJpbmcmIGZvcm1Db250cm9sVHlwZSgpIGNvbnN0OwogICAgIHZpcnR1YWwgYm9vbCBpc0Vu
dW1lcmF0YWJsZSgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTFBhcmFncmFwaEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MUGFyYWdyYXBoRWxlbWVudC5jcHAKaW5kZXggZThhNWFhNy4uMjQ1NWM1YyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGFyYWdyYXBoRWxlbWVudC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGFyYWdyYXBoRWxlbWVudC5jcHAKQEAgLTQ0LDI2ICs0
NCwxOSBAQCBQYXNzUmVmUHRyPEhUTUxQYXJhZ3JhcGhFbGVtZW50PiBIVE1MUGFyYWdyYXBoRWxl
bWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbQogICAgIHJldHVybiBhZG9wdFJlZihuZXcg
SFRNTFBhcmFncmFwaEVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpKTsKIH0KIAotYm9vbCBIVE1M
UGFyYWdyYXBoRWxlbWVudDo6bWFwVG9FbnRyeShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFt
ZSwgTWFwcGVkQXR0cmlidXRlRW50cnkmIHJlc3VsdCkgY29uc3QKLXsKLSAgICBpZiAoYXR0ck5h
bWUgPT0gYWxpZ25BdHRyKSB7Ci0gICAgICAgIHJlc3VsdCA9IGVCbG9jazsgLy8gV2UgY2FuIHNo
YXJlIHdpdGggRElWIGhlcmUuCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0gICAgcmV0
dXJuIEhUTUxFbGVtZW50OjptYXBUb0VudHJ5KGF0dHJOYW1lLCByZXN1bHQpOwotfQotCiB2b2lk
IEhUTUxQYXJhZ3JhcGhFbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpYnV0ZShBdHRyaWJ1dGUqIGF0
dHIpCiB7CiAgICAgaWYgKGF0dHItPm5hbWUoKSA9PSBhbGlnbkF0dHIpIHsKLSAgICAgICAgaWYg
KGVxdWFsSWdub3JpbmdDYXNlKGF0dHItPnZhbHVlKCksICJtaWRkbGUiKSB8fCBlcXVhbElnbm9y
aW5nQ2FzZShhdHRyLT52YWx1ZSgpLCAiY2VudGVyIikpCi0gICAgICAgICAgICBhZGRDU1NQcm9w
ZXJ0eShhdHRyLCBDU1NQcm9wZXJ0eVRleHRBbGlnbiwgQ1NTVmFsdWVXZWJraXRDZW50ZXIpOwor
ICAgICAgICBpZiAoYXR0ci0+dmFsdWUoKS5pc051bGwoKSkKKyAgICAgICAgICAgIHJlbW92ZUNT
U1Byb3BlcnR5KENTU1Byb3BlcnR5VGV4dEFsaWduKTsKKyAgICAgICAgZWxzZSBpZiAoZXF1YWxJ
Z25vcmluZ0Nhc2UoYXR0ci0+dmFsdWUoKSwgIm1pZGRsZSIpIHx8IGVxdWFsSWdub3JpbmdDYXNl
KGF0dHItPnZhbHVlKCksICJjZW50ZXIiKSkKKyAgICAgICAgICAgIGFkZENTU1Byb3BlcnR5KENT
U1Byb3BlcnR5VGV4dEFsaWduLCBDU1NWYWx1ZVdlYmtpdENlbnRlcik7CiAgICAgICAgIGVsc2Ug
aWYgKGVxdWFsSWdub3JpbmdDYXNlKGF0dHItPnZhbHVlKCksICJsZWZ0IikpCi0gICAgICAgICAg
ICBhZGRDU1NQcm9wZXJ0eShhdHRyLCBDU1NQcm9wZXJ0eVRleHRBbGlnbiwgQ1NTVmFsdWVXZWJr
aXRMZWZ0KTsKKyAgICAgICAgICAgIGFkZENTU1Byb3BlcnR5KENTU1Byb3BlcnR5VGV4dEFsaWdu
LCBDU1NWYWx1ZVdlYmtpdExlZnQpOwogICAgICAgICBlbHNlIGlmIChlcXVhbElnbm9yaW5nQ2Fz
ZShhdHRyLT52YWx1ZSgpLCAicmlnaHQiKSkKLSAgICAgICAgICAgIGFkZENTU1Byb3BlcnR5KGF0
dHIsIENTU1Byb3BlcnR5VGV4dEFsaWduLCBDU1NWYWx1ZVdlYmtpdFJpZ2h0KTsKKyAgICAgICAg
ICAgIGFkZENTU1Byb3BlcnR5KENTU1Byb3BlcnR5VGV4dEFsaWduLCBDU1NWYWx1ZVdlYmtpdFJp
Z2h0KTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgYWRkQ1NTUHJvcGVydHkoYXR0ciwgQ1NT
UHJvcGVydHlUZXh0QWxpZ24sIGF0dHItPnZhbHVlKCkpOworICAgICAgICAgICAgYWRkQ1NTUHJv
cGVydHkoQ1NTUHJvcGVydHlUZXh0QWxpZ24sIGF0dHItPnZhbHVlKCkpOwogICAgIH0gZWxzZQog
ICAgICAgICBIVE1MRWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUoYXR0cik7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQYXJhZ3JhcGhFbGVtZW50LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxQYXJhZ3JhcGhFbGVtZW50LmgKaW5kZXggNmRiZjA3MS4uZWE4
NzlhOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGFyYWdyYXBoRWxlbWVu
dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBhcmFncmFwaEVsZW1lbnQuaApAQCAt
MzQsNyArMzQsNiBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIEhUTUxQYXJhZ3JhcGhFbGVtZW50
KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCopOwogCi0gICAgdmlydHVhbCBib29sIG1h
cFRvRW50cnkoY29uc3QgUXVhbGlmaWVkTmFtZSYsIE1hcHBlZEF0dHJpYnV0ZUVudHJ5JikgY29u
c3Q7CiAgICAgdmlydHVhbCB2b2lkIHBhcnNlTWFwcGVkQXR0cmlidXRlKEF0dHJpYnV0ZSopOwog
fTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGx1Z0luRWxlbWVudC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQbHVnSW5FbGVtZW50LmNwcAppbmRleCA2MjI5
ZDJlLi43Mjg3YmMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQbHVnSW5F
bGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQbHVnSW5FbGVtZW50LmNw
cApAQCAtMTM2LDM2ICsxMzYsMzIgQEAgV2lkZ2V0KiBIVE1MUGx1Z0luRWxlbWVudDo6cGx1Z2lu
V2lkZ2V0KCkKICAgICByZXR1cm4gcmVuZGVyV2lkZ2V0LT53aWRnZXQoKTsKIH0KIAotYm9vbCBI
VE1MUGx1Z0luRWxlbWVudDo6bWFwVG9FbnRyeShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFt
ZSwgTWFwcGVkQXR0cmlidXRlRW50cnkmIHJlc3VsdCkgY29uc3QKLXsKLSAgICBpZiAoYXR0ck5h
bWUgPT0gd2lkdGhBdHRyIHx8Ci0gICAgICAgIGF0dHJOYW1lID09IGhlaWdodEF0dHIgfHwKLSAg
ICAgICAgYXR0ck5hbWUgPT0gdnNwYWNlQXR0ciB8fAotICAgICAgICBhdHRyTmFtZSA9PSBoc3Bh
Y2VBdHRyKSB7Ci0gICAgICAgICAgICByZXN1bHQgPSBlVW5pdmVyc2FsOwotICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOwotICAgIH0KLSAgICAKLSAgICBpZiAoYXR0ck5hbWUgPT0gYWxpZ25BdHRy
KSB7Ci0gICAgICAgIHJlc3VsdCA9IGVSZXBsYWNlZDsgLy8gU2hhcmUgd2l0aCA8aW1nPiBzaW5j
ZSB0aGUgYWxpZ25tZW50IGJlaGF2aW9yIGlzIHRoZSBzYW1lLgotICAgICAgICByZXR1cm4gZmFs
c2U7Ci0gICAgfQotICAgIAotICAgIHJldHVybiBIVE1MRnJhbWVPd25lckVsZW1lbnQ6Om1hcFRv
RW50cnkoYXR0ck5hbWUsIHJlc3VsdCk7Ci19Ci0KIHZvaWQgSFRNTFBsdWdJbkVsZW1lbnQ6OnBh
cnNlTWFwcGVkQXR0cmlidXRlKEF0dHJpYnV0ZSogYXR0cikKIHsKICAgICBpZiAoYXR0ci0+bmFt
ZSgpID09IHdpZHRoQXR0cikKLSAgICAgICAgYWRkQ1NTTGVuZ3RoKGF0dHIsIENTU1Byb3BlcnR5
V2lkdGgsIGF0dHItPnZhbHVlKCkpOworICAgICAgICBpZiAoYXR0ci0+aXNOdWxsKCkpCisgICAg
ICAgICAgICByZW1vdmVDU1NQcm9wZXJ0eShDU1NQcm9wZXJ0eVdpZHRoKTsKKyAgICAgICAgZWxz
ZQorICAgICAgICAgICAgYWRkQ1NTTGVuZ3RoKENTU1Byb3BlcnR5V2lkdGgsIGF0dHItPnZhbHVl
KCkpOwogICAgIGVsc2UgaWYgKGF0dHItPm5hbWUoKSA9PSBoZWlnaHRBdHRyKQotICAgICAgICBh
ZGRDU1NMZW5ndGgoYXR0ciwgQ1NTUHJvcGVydHlIZWlnaHQsIGF0dHItPnZhbHVlKCkpOworICAg
ICAgICBpZiAoYXR0ci0+aXNOdWxsKCkpCisgICAgICAgICAgICByZW1vdmVDU1NQcm9wZXJ0eShD
U1NQcm9wZXJ0eUhlaWdodCk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGFkZENTU0xlbmd0
aChDU1NQcm9wZXJ0eUhlaWdodCwgYXR0ci0+dmFsdWUoKSk7CiAgICAgZWxzZSBpZiAoYXR0ci0+
bmFtZSgpID09IHZzcGFjZUF0dHIpIHsKLSAgICAgICAgYWRkQ1NTTGVuZ3RoKGF0dHIsIENTU1By
b3BlcnR5TWFyZ2luVG9wLCBhdHRyLT52YWx1ZSgpKTsKLSAgICAgICAgYWRkQ1NTTGVuZ3RoKGF0
dHIsIENTU1Byb3BlcnR5TWFyZ2luQm90dG9tLCBhdHRyLT52YWx1ZSgpKTsKKyAgICAgICAgaWYg
KGF0dHItPmlzTnVsbCgpKQorICAgICAgICAgICAgcmVtb3ZlQ1NTUHJvcGVydGllcyhDU1NQcm9w
ZXJ0eU1hcmdpblRvcCwgQ1NTUHJvcGVydHlNYXJnaW5Cb3R0b20pOworICAgICAgICBlbHNlIHsK
KyAgICAgICAgICAgIGFkZENTU0xlbmd0aChDU1NQcm9wZXJ0eU1hcmdpblRvcCwgYXR0ci0+dmFs
dWUoKSk7CisgICAgICAgICAgICBhZGRDU1NMZW5ndGgoQ1NTUHJvcGVydHlNYXJnaW5Cb3R0b20s
IGF0dHItPnZhbHVlKCkpOworICAgICAgICB9CiAgICAgfSBlbHNlIGlmIChhdHRyLT5uYW1lKCkg
PT0gaHNwYWNlQXR0cikgewotICAgICAgICBhZGRDU1NMZW5ndGgoYXR0ciwgQ1NTUHJvcGVydHlN
YXJnaW5MZWZ0LCBhdHRyLT52YWx1ZSgpKTsKLSAgICAgICAgYWRkQ1NTTGVuZ3RoKGF0dHIsIENT
U1Byb3BlcnR5TWFyZ2luUmlnaHQsIGF0dHItPnZhbHVlKCkpOworICAgICAgICBpZiAoYXR0ci0+
aXNOdWxsKCkpCisgICAgICAgICAgICByZW1vdmVDU1NQcm9wZXJ0aWVzKENTU1Byb3BlcnR5TWFy
Z2luTGVmdCwgQ1NTUHJvcGVydHlNYXJnaW5SaWdodCk7CisgICAgICAgIGVsc2UgeworICAgICAg
ICAgICAgYWRkQ1NTTGVuZ3RoKENTU1Byb3BlcnR5TWFyZ2luTGVmdCwgYXR0ci0+dmFsdWUoKSk7
CisgICAgICAgICAgICBhZGRDU1NMZW5ndGgoQ1NTUHJvcGVydHlNYXJnaW5SaWdodCwgYXR0ci0+
dmFsdWUoKSk7CisgICAgICAgIH0KICAgICB9IGVsc2UgaWYgKGF0dHItPm5hbWUoKSA9PSBhbGln
bkF0dHIpCiAgICAgICAgIGFkZEhUTUxBbGlnbm1lbnQoYXR0cik7CiAgICAgZWxzZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGx1Z0luRWxlbWVudC5oIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MUGx1Z0luRWxlbWVudC5oCmluZGV4IGExMGFmNjEuLmFiOWE0OWYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBsdWdJbkVsZW1lbnQuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQbHVnSW5FbGVtZW50LmgKQEAgLTU4LDcgKzU4LDYgQEAg
cHJvdGVjdGVkOgogCiAgICAgdmlydHVhbCB2b2lkIGRldGFjaCgpOwogICAgIHZpcnR1YWwgdm9p
ZCByZW1vdmVkRnJvbURvY3VtZW50KCk7Ci0gICAgdmlydHVhbCBib29sIG1hcFRvRW50cnkoY29u
c3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUsIE1hcHBlZEF0dHJpYnV0ZUVudHJ5JiByZXN1bHQp
IGNvbnN0OwogICAgIHZpcnR1YWwgdm9pZCBwYXJzZU1hcHBlZEF0dHJpYnV0ZShBdHRyaWJ1dGUq
KTsKIAogICAgIGJvb2wgbV9pbkJlZm9yZUxvYWRFdmVudEhhbmRsZXI7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQcmVFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTFByZUVsZW1lbnQuY3BwCmluZGV4IGZjNjdhY2EuLjBlOTU4YmYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFByZUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTFByZUVsZW1lbnQuY3BwCkBAIC00Miwx
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>125445</attachid>
            <date>2012-02-03 16:16:22 -0800</date>
            <delta_ts>2012-02-04 02:55:01 -0800</delta_ts>
            <desc>Proposed patch</desc>
            <filename>bug-77204.diff</filename>
            <type>text/plain</type>
            <size>136131</size>
            <attacher name="Andreas Kling">kling</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCAwYmYyMjE3Li44NWY4ZTMxIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTItMDIt
MDMgIEFuZHJlYXMgS2xpbmcgIDxhd2Vzb21la2xpbmdAYXBwbGUuY29tPgorCisgICAgICAgIEtp
bGwgcGVyLUF0dHJpYnV0ZSBzdHlsZSBkZWNsYXJhdGlvbnMuCisgICAgICAgIDxodHRwOi8vd2Vi
a2l0Lm9yZy9iLzc3MjA0PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIFJlYmFzZWxpbmVkIDMgaW5zcGVjdG9yIHRlc3RzIHNpbmNlIGF0dHJpYnV0ZSBz
dHlsZXMgYXJlIG5vIGxvbmdlciBzaG93biBwZXItYXR0cmlidXRlLgorCisgICAgICAgICogaW5z
cGVjdG9yL2VsZW1lbnRzL2VsZW1lbnRzLXBhbmVsLXN0eWxlcy1leHBlY3RlZC50eHQ6CisgICAg
ICAgICogaW5zcGVjdG9yL3N0eWxlcy9zdHlsZXMtY29tcHV0ZWQtdHJhY2UtZXhwZWN0ZWQudHh0
OgorICAgICAgICAqIGluc3BlY3Rvci9zdHlsZXMvc3R5bGVzLW5ldy1BUEktZXhwZWN0ZWQudHh0
OgorCiAyMDEyLTAyLTAzICBNaWhuZWEgT3ZpZGVuaWUgIDxtaWhuZWFAYWRvYmUuY29tPgogCiAg
ICAgICAgIENyYXNoIGluIFJlbmRlckZsb3dUaHJlYWQ6OnNldFJlZ2lvbkJveGVzUmVnaW9uU3R5
bGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9lbGVtZW50cy9lbGVtZW50cy1w
YW5lbC1zdHlsZXMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2VsZW1lbnRz
L2VsZW1lbnRzLXBhbmVsLXN0eWxlcy1leHBlY3RlZC50eHQKaW5kZXggODk3OTgzZi4uNDQzMmY1
OCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2VsZW1lbnRzL2VsZW1lbnRzLXBh
bmVsLXN0eWxlcy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2VsZW1l
bnRzL2VsZW1lbnRzLXBhbmVsLXN0eWxlcy1leHBlY3RlZC50eHQKQEAgLTMyLDcgKzMyLDcgQEAg
bWFyZ2luLXJpZ2h0OiAwcHg7CiBtYXJnaW4tdG9wOiAxMHB4OwogICAgIC5mb28gLSAxMHB4IGVs
ZW1lbnRzLXBhbmVsLXN0eWxlcy5jc3M6MTQKIHRleHQtYWxpZ246IC13ZWJraXQtbGVmdDsKLSAg
ICBkaXZbYWxpZ249bGVmdF0gLSAtd2Via2l0LWxlZnQgCisgICAgZGl2W10gLSAtd2Via2l0LWxl
ZnQgCiAKIFtleHBhbmRlZF0gCiBlbGVtZW50LnN0eWxlICB7ICgpCkBAIC02Nyw3ICs2Nyw3IEBA
IGJvcmRlci1yYWRpdXM6IDVweDsKIC8tLSBvdmVybG9hZGVkIC0tLyBmb250LXN0eWxlOiBub3Jt
YWwgIWltcG9ydGFudDsKIAogW2V4cGFuZGVkXSAKLWRpdlthbGlnbj1sZWZ0XSAgeyAoKQorZGl2
W10gIHsgKCkKIHRleHQtYWxpZ246IC13ZWJraXQtbGVmdDsKIAogW2V4cGFuZGVkXSAKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9zdHlsZXMvc3R5bGVzLWNvbXB1dGVkLXRyYWNl
LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9zdHlsZXMvc3R5bGVzLWNvbXB1
dGVkLXRyYWNlLWV4cGVjdGVkLnR4dAppbmRleCA0ZmE1MTVkLi5lNDllMmY3IDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9pbnNwZWN0b3Ivc3R5bGVzL3N0eWxlcy1jb21wdXRlZC10cmFjZS1leHBl
Y3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3N0eWxlcy9zdHlsZXMtY29tcHV0
ZWQtdHJhY2UtZXhwZWN0ZWQudHh0CkBAIC01Miw3ICs1Miw3IEBAIGVsZW1lbnQuc3R5bGUgIHsg
KCkKIAogPT09PT09PT0gTWF0Y2hlZCBDU1MgUnVsZXMgPT09PT09PT0KIFtleHBhbmRlZF0gCi1i
dXR0b25baGlkZGVuXSAgeyAoKQorYnV0dG9uW10gIHsgKCkKIGRpc3BsYXk6IG5vbmU7CiAKIApk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3N0eWxlcy9zdHlsZXMtbmV3LUFQSS1l
eHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3Ivc3R5bGVzL3N0eWxlcy1uZXctQVBJ
LWV4cGVjdGVkLnR4dAppbmRleCAwZWNmNWMzLi4zMWZmNGQwIDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9pbnNwZWN0b3Ivc3R5bGVzL3N0eWxlcy1uZXctQVBJLWV4cGVjdGVkLnR4dAorKysgYi9M
YXlvdXRUZXN0cy9pbnNwZWN0b3Ivc3R5bGVzL3N0eWxlcy1uZXctQVBJLWV4cGVjdGVkLnR4dApA
QCAtOTEsNyArOTEsNyBAQCByYXcgc3R5bGUKIFsnYmFja2dyb3VuZC1pbWFnZSc6J3VybChiYXIu
cG5nKSddIEBbMzMtNjNdIGFjdGl2ZQogCiA9PT0gQXR0cmlidXRlIHN0eWxlcyBmb3IgdGFibGUg
PT09Ci1BdHRyaWJ1dGU6IHdpZHRoCitBdHRyaWJ1dGU6IAogCiBzdHlsZQogcmF3IHN0eWxlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFu
Z2VMb2cKaW5kZXggODgzMDIxYy4uOGUwZGI3NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
Q2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwMSBA
QAorMjAxMi0wMi0wMyAgQW5kcmVhcyBLbGluZyAgPGF3ZXNvbWVrbGluZ0BhcHBsZS5jb20+CisK
KyAgICAgICAgS2lsbCBwZXItQXR0cmlidXRlIHN0eWxlIGRlY2xhcmF0aW9ucy4KKyAgICAgICAg
PGh0dHA6Ly93ZWJraXQub3JnL2IvNzcyMDQ+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgVEw7RFIgc3VtbWFyeTogUmVtb3ZlIHRoZSBwZXItQXR0cmli
dXRlIHN0eWxlIGRlY2xhcmF0aW9ucyBhbmQgcmVwbGFjZSB0aGVtIGJ5IGEgc2luZ2xlCisgICAg
ICAgIHN0eWxlIGRlY2xhcmF0aW9uIG9uIFN0eWxlZEVsZW1lbnQgdGhhdCBhY3RzIGFzIGEgc2Vj
b25kYXJ5IGlubGluZSBzdHlsZS4KKworICAgICAgICBUaGUgcHJldmlvdXMgZGVzaWduIHdhcyBj
b25jZWl2ZWQgaW4gdGhlIEFnZSBvZiB0aGUgT2xkIFdlYih0bSkgd2hlcmUgdGhlIG1ham9yaXR5
IG9mCisgICAgICAgIGVsZW1lbnQgc3R5bGluZyB3YXMgYWNjb21wbGlzaGVkIHZpYSBhdHRyaWJ1
dGVzLiBOb3dhZGF5cywgQ1NTIGlzIGEgbXVjaCBiZXR0ZXIgdG9vbCBmb3IKKyAgICAgICAgdGhp
cyBhbmQgd2Ugc2hvdWxkIG9wdGltaXplIGFyb3VuZCB0aGF0IGluc3RlYWQuCisKKyAgICAgICAg
U3R5bGVkRWxlbWVudHMgbm93IGhhdmUgYW4gYXR0cmlidXRlU3R5bGUoKSB3aGljaCBjb250YWlu
cyBhbGwgdGhlIHN0eWxpbmcgZnJvbSBhdHRyaWJ1dGVzLgorICAgICAgICBwYXJzZU1hcHBlZEF0
dHJpYnV0ZSgpIGlzIHJlc3BvbnNpYmxlIGZvciBhZGRpbmcvcmVtb3ZpbmcgcHJvcGVydGllcyB0
byB0aGUgYXR0cmlidXRlU3R5bGUKKyAgICAgICAgYXMgdGhlIGNvcnJlc3BvbmRpbmcgYXR0cmli
dXRlcyBjb21lIGluL291dCBvZiB0aGUgZWxlbWVudC4KKworICAgICAgICBFYWNoIEF0dHJpYnV0
ZSBpbnN0YW5jZSBzaHJpbmtzIGJ5IG9uZSBwb2ludGVyLCBlYWNoIGVsZW1lbnQgdGhhdCBoYXMg
YXR0cmlidXRlcyBncm93cyBieQorICAgICAgICBvbmUgcG9pbnRlci4gVGhlIHN0eWxlcyBmcm9t
IGluZGl2aWR1YWwgYXR0cmlidXRlcyBhcmUgbm8gbG9uZ2VyIHNoYXJlZCwgc28gY29udGVudCB0
aGF0CisgICAgICAgIHVzZXMgYSBsb3Qgb2YgcmVwZWF0aW5nIHN0eWxpbmcgYXR0cmlidXRlcyB3
aWxsIHNlZSBhIHNsaWdodCBtZW1vcnkgcmVncmVzc2lvbiBmcm9tIHRoaXMuCisgICAgICAgIEZ1
dHVyZSBpbXByb3ZlbWVudHMgdG8gdGhpcyBjb3VsZCBlbmFibGUgc2hhcmluZyB0aGUgYXR0cmli
dXRlU3R5bGUgYmV0d2VlbiBlbGVtZW50cyB0aGF0CisgICAgICAgIGhhdmUgdGhlIHNhbWUgZXhh
Y3QgYXR0cmlidXRlcyB0byBtaXRpZ2F0ZSBzb21lIG9mIHRoZSBkYW1hZ2UuCisKKyAgICAgICAg
VGhlcmUgc2hvdWxkIGJlIG5vIHdlYi1mYWNpbmcgYmVoYXZpb3IgY2hhbmdlIGZyb20gdGhpcywg
YnV0IGl0IGRvZXMgYnJlYWsgdHdvIHRoaW5nczoKKworICAgICAgICAtIFRoZSBJbnNwZWN0b3Ig
ZmVhdHVyZSBmb3IgZGlzcGxheWluZyBwZXItYXR0cmlidXRlIHN0eWxlcy4gVG8ga2VlcCB0aGlu
Z3MgbWFuYWdlYWJsZSwKKyAgICAgICAgICB0aGlzIHBhdGNoIHNpbXBseSBmaWxlcyBhbGwgdGhl
IGF0dHJpYnV0ZSBzdHlsZXMgdG9nZXRoZXIgdW5kZXIgYW4gYW5vbnltb3VzIGF0dHJpYnV0ZQor
ICAgICAgICAgIGluIHRoZSBJbnNwZWN0b3IuCisKKyAgICAgICAgLSBUaGUgT2JqLUMgRE9NIGJp
bmRpbmcgZm9yIEF0dHI6OnN0eWxlKCkgaGFzIHRvIGJlIGtlcHQgZm9yIGNvbXBhdGliaWxpdHkg
cmVhc29ucywKKyAgICAgICAgICB0aG91Z2ggaXQncyBhbHJlYWR5IGRlcHJlY2F0ZWQuIEl0IHdp
bGwgbm93IGFsd2F5cyByZXR1cm4gbmlsLCBzaW5jZSB0aGVyZSdzIG5vIHdheSB0bworICAgICAg
ICAgIHJldHJpZXZlIGEgbGl2ZSBzdHlsZSBkZWNsYXJhdGlvbiB0aGF0J3Mgc3BlY2lmaWMgdG8g
YSBjZXJ0YWluIEF0dHIuCisKKyAgICAgICAgKiBjc3MvQ1NTU3R5bGVTZWxlY3Rvci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpDU1NTdHlsZVNlbGVjdG9yOjptYXRjaEFsbFJ1bGVzKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNTU1N0eWxlU2VsZWN0b3I6OmNhblNoYXJlU3R5bGVXaXRoRWxlbWVudCk6
CisgICAgICAgICogZG9tL0F0dHIuaDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoQXR0
cik6CisgICAgICAgIChXZWJDb3JlOjpBdHRyOjpzdHlsZSk6CisgICAgICAgICogZG9tL0F0dHJp
YnV0ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBdHRyaWJ1dGU6OmNsb25lKToKKyAgICAgICAg
KiBkb20vQXR0cmlidXRlLmg6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6
OkF0dHJpYnV0ZTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkF0dHJpYnV0ZTo6Y3JlYXRl
TWFwcGVkKToKKyAgICAgICAgKEF0dHJpYnV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpBdHRyaWJ1
dGU6OkF0dHJpYnV0ZSk6CisgICAgICAgICogZG9tL0NTU01hcHBlZEF0dHJpYnV0ZURlY2xhcmF0
aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU01hcHBlZEF0dHJpYnV0ZURlY2xhcmF0aW9u
Ojp+Q1NTTWFwcGVkQXR0cmlidXRlRGVjbGFyYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6Q1NT
TWFwcGVkQXR0cmlidXRlRGVjbGFyYXRpb246OnNldE1hcHBlZFByb3BlcnR5KToKKyAgICAgICAg
KiBkb20vQ1NTTWFwcGVkQXR0cmlidXRlRGVjbGFyYXRpb24uaDoKKyAgICAgICAgKENTU01hcHBl
ZEF0dHJpYnV0ZURlY2xhcmF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU01hcHBlZEF0dHJp
YnV0ZURlY2xhcmF0aW9uOjpDU1NNYXBwZWRBdHRyaWJ1dGVEZWNsYXJhdGlvbik6CisgICAgICAg
ICogZG9tL0VsZW1lbnQuaDoKKyAgICAgICAgKEVsZW1lbnQpOgorICAgICAgICAqIGRvbS9FbGVt
ZW50QXR0cmlidXRlRGF0YS5oOgorICAgICAgICAoRWxlbWVudEF0dHJpYnV0ZURhdGEpOgorICAg
ICAgICAqIGRvbS9OYW1lZE5vZGVNYXAuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TmFtZWROb2Rl
TWFwOjplbnN1cmVBdHRyaWJ1dGVTdHlsZSk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAg
KiBkb20vTmFtZWROb2RlTWFwLmg6CisgICAgICAgIChXZWJDb3JlOjpOYW1lZE5vZGVNYXA6OmF0
dHJpYnV0ZVN0eWxlKToKKyAgICAgICAgKE5hbWVkTm9kZU1hcCk6CisgICAgICAgICogZG9tL1N0
eWxlZEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpT
dHlsZWRFbGVtZW50OjphdHRyaWJ1dGVDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxl
ZEVsZW1lbnQ6OnJlbW92ZUNTU1Byb3BlcnRpZXMpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVk
RWxlbWVudDo6YWRkQ1NTUHJvcGVydHkpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVkRWxlbWVu
dDo6YWRkQ1NTSW1hZ2VQcm9wZXJ0eSk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZWRFbGVtZW50
OjphZGRDU1NMZW5ndGgpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVkRWxlbWVudDo6YWRkQ1NT
Q29sb3IpOgorICAgICAgICAqIGRvbS9TdHlsZWRFbGVtZW50Lmg6CisgICAgICAgIChTdHlsZWRF
bGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlZEVsZW1lbnQ6OnJlbW92ZUNTU1Byb3Bl
cnR5KToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlZEVsZW1lbnQ6OmF0dHJpYnV0ZVN0eWxlKToK
KyAgICAgICAgKFdlYkNvcmU6OlN0eWxlZEVsZW1lbnQ6OmVuc3VyZUF0dHJpYnV0ZVN0eWxlKToK
KyAgICAgICAgKiBodG1sL0hUTUxCUkVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRN
TEJSRWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUpOgorICAgICAgICAqIGh0bWwvSFRNTEJS
RWxlbWVudC5oOgorICAgICAgICAoSFRNTEJSRWxlbWVudCk6CisgICAgICAgICogaHRtbC9IVE1M
Qm9keUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEJvZHlFbGVtZW50OjpwYXJz
ZU1hcHBlZEF0dHJpYnV0ZSk6CisgICAgICAgICogaHRtbC9IVE1MQm9keUVsZW1lbnQuaDoKKyAg
ICAgICAgKEhUTUxCb2R5RWxlbWVudCk6CisgICAgICAgICogaHRtbC9IVE1MRGl2RWxlbWVudC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRGl2RWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1
dGUpOgorICAgICAgICAqIGh0bWwvSFRNTERpdkVsZW1lbnQuaDoKKyAgICAgICAgKEhUTUxEaXZF
bGVtZW50KToKKyAgICAgICAgKiBodG1sL0hUTUxFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkhUTUxFbGVtZW50OjphcHBseUJvcmRlckF0dHJpYnV0ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpIVE1MRWxlbWVudDo6bWFwTGFuZ3VhZ2VBdHRyaWJ1dGVUb0xvY2FsZSk6CisgICAgICAgIChX
ZWJDb3JlOjpIVE1MRWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUpOgorICAgICAgICAoV2Vi
Q29yZTo6SFRNTEVsZW1lbnQ6OnJlbW92ZUhUTUxBbGlnbm1lbnQpOgorICAgICAgICAoV2ViQ29y
ZSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRWxlbWVudDo6YWRkSFRNTEFsaWdubWVudFRvU3R5
bGVkRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRWxlbWVudDo6c2V0Q29udGVudEVk
aXRhYmxlKToKKyAgICAgICAgKiBodG1sL0hUTUxFbGVtZW50Lmg6CisgICAgICAgIChIVE1MRWxl
bWVudCk6CisgICAgICAgICogaHRtbC9IVE1MRW1iZWRFbGVtZW50LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkhUTUxFbWJlZEVsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmlidXRlKToKKyAgICAgICAg
KiBodG1sL0hUTUxFbWJlZEVsZW1lbnQuaDoKKyAgICAgICAgKEhUTUxFbWJlZEVsZW1lbnQpOgor
ICAgICAgICAqIGh0bWwvSFRNTEZvbnRFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxGb250RWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUpOgorICAgICAgICAqIGh0bWwvSFRN
TEZvbnRFbGVtZW50Lmg6CisgICAgICAgIChIVE1MRm9udEVsZW1lbnQpOgorICAgICAgICAqIGh0
bWwvSFRNTEZyYW1lU2V0RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRnJhbWVT
ZXRFbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpYnV0ZSk6CisgICAgICAgICogaHRtbC9IVE1MRnJh
bWVTZXRFbGVtZW50Lmg6CisgICAgICAgIChIVE1MRnJhbWVTZXRFbGVtZW50KToKKyAgICAgICAg
KiBodG1sL0hUTUxIUkVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEhSRWxlbWVu
dDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUpOgorICAgICAgICAqIGh0bWwvSFRNTEhSRWxlbWVudC5o
OgorICAgICAgICAoSFRNTEhSRWxlbWVudCk6CisgICAgICAgICogaHRtbC9IVE1MSUZyYW1lRWxl
bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MSUZyYW1lRWxlbWVudDo6cGFyc2VNYXBw
ZWRBdHRyaWJ1dGUpOgorICAgICAgICAqIGh0bWwvSFRNTElGcmFtZUVsZW1lbnQuaDoKKyAgICAg
ICAgKEhUTUxJRnJhbWVFbGVtZW50KToKKyAgICAgICAgKiBodG1sL0hUTUxJbWFnZUVsZW1lbnQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEltYWdlRWxlbWVudDo6cGFyc2VNYXBwZWRBdHRy
aWJ1dGUpOgorICAgICAgICAqIGh0bWwvSFRNTEltYWdlRWxlbWVudC5oOgorICAgICAgICAoSFRN
TEltYWdlRWxlbWVudCk6CisgICAgICAgICogaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkhUTUxJbnB1dEVsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmlidXRlKToK
KyAgICAgICAgKiBodG1sL0hUTUxJbnB1dEVsZW1lbnQuaDoKKyAgICAgICAgKEhUTUxJbnB1dEVs
ZW1lbnQpOgorICAgICAgICAqIGh0bWwvSFRNTExJRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpIVE1MTElFbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpYnV0ZSk6CisgICAgICAgICogaHRt
bC9IVE1MTElFbGVtZW50Lmg6CisgICAgICAgIChIVE1MTElFbGVtZW50KToKKyAgICAgICAgKiBo
dG1sL0hUTUxNYXJxdWVlRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWFycXVl
ZUVsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmlidXRlKToKKyAgICAgICAgKiBodG1sL0hUTUxNYXJx
dWVlRWxlbWVudC5oOgorICAgICAgICAoSFRNTE1hcnF1ZWVFbGVtZW50KToKKyAgICAgICAgKiBo
dG1sL0hUTUxPTGlzdEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE9MaXN0RWxl
bWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUpOgorICAgICAgICAqIGh0bWwvSFRNTE9MaXN0RWxl
bWVudC5oOgorICAgICAgICAoSFRNTE9MaXN0RWxlbWVudCk6CisgICAgICAgICogaHRtbC9IVE1M
T3V0cHV0RWxlbWVudC5jcHA6CisgICAgICAgICogaHRtbC9IVE1MT3V0cHV0RWxlbWVudC5oOgor
ICAgICAgICAoSFRNTE91dHB1dEVsZW1lbnQpOgorICAgICAgICAqIGh0bWwvSFRNTFBhcmFncmFw
aEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFBhcmFncmFwaEVsZW1lbnQ6OnBh
cnNlTWFwcGVkQXR0cmlidXRlKToKKyAgICAgICAgKiBodG1sL0hUTUxQYXJhZ3JhcGhFbGVtZW50
Lmg6CisgICAgICAgIChIVE1MUGFyYWdyYXBoRWxlbWVudCk6CisgICAgICAgICogaHRtbC9IVE1M
UGx1Z0luRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MUGx1Z0luRWxlbWVudDo6
cGFyc2VNYXBwZWRBdHRyaWJ1dGUpOgorICAgICAgICAqIGh0bWwvSFRNTFBsdWdJbkVsZW1lbnQu
aDoKKyAgICAgICAgKEhUTUxQbHVnSW5FbGVtZW50KToKKyAgICAgICAgKiBodG1sL0hUTUxQcmVF
bGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxQcmVFbGVtZW50OjpwYXJzZU1hcHBl
ZEF0dHJpYnV0ZSk6CisgICAgICAgICogaHRtbC9IVE1MUHJlRWxlbWVudC5oOgorICAgICAgICAo
SFRNTFByZUVsZW1lbnQpOgorICAgICAgICAqIGh0bWwvSFRNTFRhYmxlQ2FwdGlvbkVsZW1lbnQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRhYmxlQ2FwdGlvbkVsZW1lbnQ6OnBhcnNlTWFw
cGVkQXR0cmlidXRlKToKKyAgICAgICAgKiBodG1sL0hUTUxUYWJsZUNhcHRpb25FbGVtZW50Lmg6
CisgICAgICAgIChIVE1MVGFibGVDYXB0aW9uRWxlbWVudCk6CisgICAgICAgICogaHRtbC9IVE1M
VGFibGVDZWxsRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVGFibGVDZWxsRWxl
bWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUpOgorICAgICAgICAqIGh0bWwvSFRNTFRhYmxlQ2Vs
bEVsZW1lbnQuaDoKKyAgICAgICAgKEhUTUxUYWJsZUNlbGxFbGVtZW50KToKKyAgICAgICAgKiBo
dG1sL0hUTUxUYWJsZUNvbEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRhYmxl
Q29sRWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUpOgorICAgICAgICAqIGh0bWwvSFRNTFRh
YmxlQ29sRWxlbWVudC5oOgorICAgICAgICAoSFRNTFRhYmxlQ29sRWxlbWVudCk6CisgICAgICAg
ICogaHRtbC9IVE1MVGFibGVFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUYWJs
ZUVsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmlidXRlKToKKyAgICAgICAgKiBodG1sL0hUTUxUYWJs
ZUVsZW1lbnQuaDoKKyAgICAgICAgKEhUTUxUYWJsZUVsZW1lbnQpOgorICAgICAgICAqIGh0bWwv
SFRNTFRhYmxlUGFydEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChX
ZWJDb3JlOjpIVE1MVGFibGVQYXJ0RWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUpOgorICAg
ICAgICAqIGh0bWwvSFRNTFRhYmxlUGFydEVsZW1lbnQuaDoKKyAgICAgICAgKiBodG1sL0hUTUxU
ZXh0QXJlYUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRleHRBcmVhRWxlbWVu
dDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUpOgorICAgICAgICAqIGh0bWwvSFRNTFVMaXN0RWxlbWVu
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVUxpc3RFbGVtZW50OjpwYXJzZU1hcHBlZEF0
dHJpYnV0ZSk6CisgICAgICAgICogaHRtbC9IVE1MVUxpc3RFbGVtZW50Lmg6CisgICAgICAgIChI
VE1MVUxpc3RFbGVtZW50KToKKyAgICAgICAgKiBodG1sL0hUTUxWaWRlb0VsZW1lbnQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SFRNTFZpZGVvRWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUp
OgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JDU1NBZ2VudC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpJbnNwZWN0b3JDU1NBZ2VudDo6YnVpbGRBcnJheUZvckF0dHJpYnV0ZVN0eWxlcyk6
CisgICAgICAgICogbWF0aG1sL01hdGhNTEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
TWF0aE1MRWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUpOgorICAgICAgICAqIG1hdGhtbC9N
YXRoTUxFbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR0ltYWdlRWxlbWVudC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpTVkdJbWFnZUVsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmlidXRlKToKKyAg
ICAgICAgKiBzdmcvU1ZHU3R5bGVkRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdT
dHlsZWRFbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpYnV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpT
VkdTdHlsZWRFbGVtZW50OjpnZXRQcmVzZW50YXRpb25BdHRyaWJ1dGUpOgorICAgICAgICAqIHN2
Zy9TVkdTdHlsZWRFbGVtZW50Lmg6CisgICAgICAgIChTVkdTdHlsZWRFbGVtZW50KToKKyAgICAg
ICAgKiBzdmcvU1ZHVGV4dENvbnRlbnRFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNW
R1RleHRDb250ZW50RWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUpOgorCiAyMDEyLTAyLTAz
ICBKYW1lcyBSb2JpbnNvbiAgPGphbWVzckBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgW2Nocm9t
aXVtXSBEZWZlciBtYWtlQ29udGV4dEN1cnJlbnQgaW4gY29tcG9zaXRvciB1bnRpbCBmaXJzdCBm
cmFtZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2VsZWN0b3IuY3Bw
IGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2VsZWN0b3IuY3BwCmluZGV4IDE2OWU1ZmQu
LjJlMWY3Y2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNlbGVjdG9y
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTZWxlY3Rvci5jcHAKQEAgLTk5
NiwxNyArOTk2LDE0IEBAIHZvaWQgQ1NTU3R5bGVTZWxlY3Rvcjo6bWF0Y2hBbGxSdWxlcyhNYXRj
aFJlc3VsdCYgcmVzdWx0KQogICAgICAgICAKICAgICAvLyBOb3cgY2hlY2sgYXV0aG9yIHJ1bGVz
LCBiZWdpbm5pbmcgZmlyc3Qgd2l0aCBwcmVzZW50YXRpb25hbCBhdHRyaWJ1dGVzIG1hcHBlZCBm
cm9tIEhUTUwuCiAgICAgaWYgKG1fc3R5bGVkRWxlbWVudCkgewotICAgICAgICBpZiAoY29uc3Qg
TmFtZWROb2RlTWFwKiBtYXAgPSBtX3N0eWxlZEVsZW1lbnQtPmF0dHJpYnV0ZU1hcCgpKSB7Ci0g
ICAgICAgICAgICAvLyBXYWxrIHRoZSBlbGVtZW50J3MgYXR0cmlidXRlIG1hcCBhbmQgYWRkIGFs
bCBtYXBwZWQgYXR0cmlidXRlIGRlY2xhcmF0aW9ucy4KLSAgICAgICAgICAgIGZvciAodW5zaWdu
ZWQgaSA9IDA7IGkgPCBtYXAtPmxlbmd0aCgpOyArK2kpIHsKLSAgICAgICAgICAgICAgICBBdHRy
aWJ1dGUqIGF0dHJpYnV0ZSA9IG1hcC0+YXR0cmlidXRlSXRlbShpKTsKLSAgICAgICAgICAgICAg
ICBpZiAoIWF0dHJpYnV0ZS0+ZGVjbCgpKQotICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsK
LSAgICAgICAgICAgICAgICBBU1NFUlQoYXR0cmlidXRlLT5pc01hcHBlZEF0dHJpYnV0ZSgpKTsK
LSAgICAgICAgICAgICAgICByZXN1bHQucmFuZ2VzLmxhc3RBdXRob3JSdWxlID0gbV9tYXRjaGVk
RGVjbHMuc2l6ZSgpOworICAgICAgICBpZiAoQ1NTTWFwcGVkQXR0cmlidXRlRGVjbGFyYXRpb24q
IGF0dHJpYnV0ZVN0eWxlID0gbV9zdHlsZWRFbGVtZW50LT5hdHRyaWJ1dGVTdHlsZSgpKSB7Cisg
ICAgICAgICAgICBBU1NFUlQoYXR0cmlidXRlU3R5bGUtPmRlY2xhcmF0aW9uKCkpOworICAgICAg
ICAgICAgaWYgKCFhdHRyaWJ1dGVTdHlsZS0+ZGVjbGFyYXRpb24oKS0+aXNFbXB0eSgpKSB7Cisg
ICAgICAgICAgICAgICAgcmVzdWx0LnJhbmdlcy5sYXN0QXV0aG9yUnVsZSA9IG1fbWF0Y2hlZFJ1
bGVzLnNpemUoKTsKICAgICAgICAgICAgICAgICBpZiAocmVzdWx0LnJhbmdlcy5maXJzdEF1dGhv
clJ1bGUgPT0gLTEpCiAgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5yYW5nZXMuZmlyc3RBdXRo
b3JSdWxlID0gcmVzdWx0LnJhbmdlcy5sYXN0QXV0aG9yUnVsZTsKLSAgICAgICAgICAgICAgICBh
ZGRNYXRjaGVkRGVjbGFyYXRpb24oYXR0cmlidXRlLT5kZWNsKCkpOworICAgICAgICAgICAgICAg
IGFkZE1hdGNoZWREZWNsYXJhdGlvbihhdHRyaWJ1dGVTdHlsZS0+ZGVjbGFyYXRpb24oKSk7Cisg
ICAgICAgICAgICAgICAgcmVzdWx0LmlzQ2FjaGVhYmxlID0gZmFsc2U7CiAgICAgICAgICAgICB9
CiAgICAgICAgIH0KIApAQCAtMTE5OCwyMiArMTE5NSw2IEBAIGJvb2wgQ1NTU3R5bGVTZWxlY3Rv
cjo6Y2FuU2hhcmVTdHlsZVdpdGhDb250cm9sKFN0eWxlZEVsZW1lbnQqIGVsZW1lbnQpIGNvbnN0
CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXN0YXRpYyBpbmxpbmUgYm9vbCBtYXBwZWRBdHRyaWJ1
dGVzRXF1aXZhbGVudChOYW1lZE5vZGVNYXAqIGEsIE5hbWVkTm9kZU1hcCogYikKLXsKLSAgICBB
U1NFUlQoYS0+bWFwcGVkQXR0cmlidXRlQ291bnQoKSA9PSBiLT5tYXBwZWRBdHRyaWJ1dGVDb3Vu
dCgpKTsKLQotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgYS0+bGVuZ3RoKCk7ICsraSkgewot
ICAgICAgICBBdHRyaWJ1dGUqIGF0dHJpYnV0ZSA9IGEtPmF0dHJpYnV0ZUl0ZW0oaSk7Ci0gICAg
ICAgIGlmICghYXR0cmlidXRlLT5kZWNsKCkpCi0gICAgICAgICAgICBjb250aW51ZTsKLSAgICAg
ICAgQVNTRVJUKGF0dHJpYnV0ZS0+aXNNYXBwZWRBdHRyaWJ1dGUoKSk7Ci0gICAgICAgIEF0dHJp
YnV0ZSogb3RoZXJBdHRyaWJ1dGUgPSBiLT5nZXRBdHRyaWJ1dGVJdGVtKGF0dHJpYnV0ZS0+bmFt
ZSgpKTsKLSAgICAgICAgaWYgKCFvdGhlckF0dHJpYnV0ZSB8fCBhdHRyaWJ1dGUtPnZhbHVlKCkg
IT0gb3RoZXJBdHRyaWJ1dGUtPnZhbHVlKCkgfHwgYXR0cmlidXRlLT5kZWNsKCkgIT0gb3RoZXJB
dHRyaWJ1dGUtPmRlY2woKSkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0gICAg
cmV0dXJuIHRydWU7Ci19Ci0KIGJvb2wgQ1NTU3R5bGVTZWxlY3Rvcjo6Y2FuU2hhcmVTdHlsZVdp
dGhFbGVtZW50KFN0eWxlZEVsZW1lbnQqIGVsZW1lbnQpIGNvbnN0CiB7CiAgICAgUmVuZGVyU3R5
bGUqIHN0eWxlID0gZWxlbWVudC0+cmVuZGVyU3R5bGUoKTsKQEAgLTEyMjgsOCArMTIwOSw3IEBA
IGJvb2wgQ1NTU3R5bGVTZWxlY3Rvcjo6Y2FuU2hhcmVTdHlsZVdpdGhFbGVtZW50KFN0eWxlZEVs
ZW1lbnQqIGVsZW1lbnQpIGNvbnN0CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBpZiAoZWxl
bWVudC0+aW5saW5lU3R5bGVEZWNsKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBzaXpl
X3QgbWFwcGVkQXR0cmlidXRlQ291bnQgPSBlbGVtZW50LT5tYXBwZWRBdHRyaWJ1dGVDb3VudCgp
OwotICAgIGlmIChtYXBwZWRBdHRyaWJ1dGVDb3VudCAhPSBtX3N0eWxlZEVsZW1lbnQtPm1hcHBl
ZEF0dHJpYnV0ZUNvdW50KCkpCisgICAgaWYgKCEhZWxlbWVudC0+YXR0cmlidXRlU3R5bGUoKSAh
PSAhIW1fc3R5bGVkRWxlbWVudC0+YXR0cmlidXRlU3R5bGUoKSkKICAgICAgICAgcmV0dXJuIGZh
bHNlOwogICAgIGlmIChlbGVtZW50LT5pc0xpbmsoKSAhPSBtX2VsZW1lbnQtPmlzTGluaygpKQog
ICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0xMjk1LDcgKzEyNzUsNyBAQCBib29sIENTU1N0eWxl
U2VsZWN0b3I6OmNhblNoYXJlU3R5bGVXaXRoRWxlbWVudChTdHlsZWRFbGVtZW50KiBlbGVtZW50
KSBjb25zdAogICAgIGlmIChlbGVtZW50LT5oYXNDbGFzcygpICYmIG1fZWxlbWVudC0+Z2V0QXR0
cmlidXRlKGNsYXNzQXR0cikgIT0gZWxlbWVudC0+Z2V0QXR0cmlidXRlKGNsYXNzQXR0cikpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIGlmIChtYXBwZWRBdHRyaWJ1dGVDb3VudCAmJiAh
bWFwcGVkQXR0cmlidXRlc0VxdWl2YWxlbnQoZWxlbWVudC0+YXR0cmlidXRlTWFwKCksIG1fc3R5
bGVkRWxlbWVudC0+YXR0cmlidXRlTWFwKCkpKQorICAgIGlmIChlbGVtZW50LT5hdHRyaWJ1dGVT
dHlsZSgpICYmICFlbGVtZW50LT5hdHRyaWJ1dGVNYXAoKS0+bWFwc0VxdWl2YWxlbnQobV9zdHls
ZWRFbGVtZW50LT5hdHRyaWJ1dGVNYXAoKSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAg
IGlmIChlbGVtZW50LT5pc0xpbmsoKSAmJiBtX2VsZW1lbnRMaW5rU3RhdGUgIT0gc3R5bGUtPmlu
c2lkZUxpbmsoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9BdHRyLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vQXR0ci5oCmluZGV4IDFmNTdiMTcuLjAyMDlmOTAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9BdHRyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0F0dHIu
aApAQCAtMzAsNiArMzAsOCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIENTU1N0
eWxlRGVjbGFyYXRpb247CisKIC8vIEF0dHIgY2FuIGhhdmUgVGV4dCBhbmQgRW50aXR5UmVmZXJl
bmNlIGNoaWxkcmVuCiAvLyB0aGVyZWZvcmUgaXQgaGFzIHRvIGJlIGEgZnVsbGJsb3duIE5vZGUu
IFRoZSBwbGFuCiAvLyBpcyB0byBkeW5hbWljYWxseSBhbGxvY2F0ZSBhIHRleHRjaGlsZCBhbmQg
c3RvcmUgdGhlCkBAIC01NSw4ICs1Nyw5IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgaXNJZCgpIGNv
bnN0OwogCi0gICAgLy8gQW4gZXh0ZW5zaW9uIHRvIGdldCBwcmVzZW50YXRpb25hbCBpbmZvcm1h
dGlvbiBmb3IgYXR0cmlidXRlcy4KLSAgICBDU1NTdHlsZURlY2xhcmF0aW9uKiBzdHlsZSgpIHsg
cmV0dXJuIG1fYXR0cmlidXRlLT5kZWNsKCktPmVuc3VyZUNTU1N0eWxlRGVjbGFyYXRpb24oKTsg
fQorICAgIC8vIEEgZGVwcmVjYXRlZCBleHRlbnNpb24gdG8gZ2V0IHByZXNlbnRhdGlvbmFsIGlu
Zm9ybWF0aW9uIGZvciBhdHRyaWJ1dGVzLgorICAgIC8vIFdlIGhhdmUgdG8ga2VlcCBpdCBhcm91
bmQgYmVjYXVzZSBpdCdzIGV4cG9zZWQgaW4gdGhlIE9iai1DIERPTSBBUEkuCisgICAgQ1NTU3R5
bGVEZWNsYXJhdGlvbiogc3R5bGUoKSB7IHJldHVybiAwOyB9CiAKICAgICB2b2lkIHNldFNwZWNp
ZmllZChib29sIHNwZWNpZmllZCkgeyBtX3NwZWNpZmllZCA9IHNwZWNpZmllZDsgfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vQXR0cmlidXRlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9BdHRyaWJ1dGUuY3BwCmluZGV4IDdlZDI4ZDguLjllYWJlNTggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9BdHRyaWJ1dGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9B
dHRyaWJ1dGUuY3BwCkBAIC00MCw3ICs0MCw3IEBAIHN0YXRpYyBBdHRyaWJ1dGVBdHRyTWFwJiBh
dHRyaWJ1dGVBdHRyTWFwKCkKIAogUGFzc1JlZlB0cjxBdHRyaWJ1dGU+IEF0dHJpYnV0ZTo6Y2xv
bmUoKSBjb25zdAogewotICAgIHJldHVybiBhZG9wdFJlZihuZXcgQXR0cmlidXRlKG1fbmFtZSwg
bV92YWx1ZSwgbV9pc01hcHBlZEF0dHJpYnV0ZSwgbV9tYXBwZWRBdHRyaWJ1dGVEZWNsYXJhdGlv
bi5nZXQoKSkpOworICAgIHJldHVybiBhZG9wdFJlZihuZXcgQXR0cmlidXRlKG1fbmFtZSwgbV92
YWx1ZSwgbV9pc01hcHBlZEF0dHJpYnV0ZSkpOwogfQogCiBBdHRyKiBBdHRyaWJ1dGU6OmF0dHIo
KSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0F0dHJpYnV0ZS5oIGIvU291
cmNlL1dlYkNvcmUvZG9tL0F0dHJpYnV0ZS5oCmluZGV4IDY3Mzg3ZTAuLjY2NjA5ODkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9BdHRyaWJ1dGUuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vQXR0cmlidXRlLmgKQEAgLTI1LDEzICsyNSwxMSBAQAogI2lmbmRlZiBBdHRyaWJ1dGVf
aAogI2RlZmluZSBBdHRyaWJ1dGVfaAogCi0jaW5jbHVkZSAiQ1NTTWFwcGVkQXR0cmlidXRlRGVj
bGFyYXRpb24uaCIKICNpbmNsdWRlICJRdWFsaWZpZWROYW1lLmgiCiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAogY2xhc3MgQXR0cjsKLWNsYXNzIENTU1N0eWxlRGVjbGFyYXRpb247CiBjbGFzcyBF
bGVtZW50OwogY2xhc3MgTmFtZWROb2RlTWFwOwogCkBAIC00MywxNSArNDEsMTUgQEAgY2xhc3Mg
QXR0cmlidXRlIDogcHVibGljIFJlZkNvdW50ZWQ8QXR0cmlidXRlPiB7CiBwdWJsaWM6CiAgICAg
c3RhdGljIFBhc3NSZWZQdHI8QXR0cmlidXRlPiBjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYg
bmFtZSwgY29uc3QgQXRvbWljU3RyaW5nJiB2YWx1ZSkKICAgICB7Ci0gICAgICAgIHJldHVybiBh
ZG9wdFJlZihuZXcgQXR0cmlidXRlKG5hbWUsIHZhbHVlLCBmYWxzZSwgMCkpOworICAgICAgICBy
ZXR1cm4gYWRvcHRSZWYobmV3IEF0dHJpYnV0ZShuYW1lLCB2YWx1ZSwgZmFsc2UpKTsKICAgICB9
CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8QXR0cmlidXRlPiBjcmVhdGVNYXBwZWQoY29uc3QgUXVh
bGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbWljU3RyaW5nJiB2YWx1ZSkKICAgICB7Ci0gICAg
ICAgIHJldHVybiBhZG9wdFJlZihuZXcgQXR0cmlidXRlKG5hbWUsIHZhbHVlLCB0cnVlLCAwKSk7
CisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgQXR0cmlidXRlKG5hbWUsIHZhbHVlLCB0cnVl
KSk7CiAgICAgfQogICAgIHN0YXRpYyBQYXNzUmVmUHRyPEF0dHJpYnV0ZT4gY3JlYXRlTWFwcGVk
KGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSwgY29uc3QgQXRvbWljU3RyaW5nJiB2YWx1ZSkKICAg
ICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgQXR0cmlidXRlKG5hbWUsIHZhbHVlLCB0
cnVlLCAwKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgQXR0cmlidXRlKG5hbWUsIHZh
bHVlLCB0cnVlKSk7CiAgICAgfQogCiAgICAgY29uc3QgQXRvbWljU3RyaW5nJiB2YWx1ZSgpIGNv
bnN0IHsgcmV0dXJuIG1fdmFsdWU7IH0KQEAgLTY4LDExICs2Niw2IEBAIHB1YmxpYzoKICAgICBi
b29sIGlzRW1wdHkoKSBjb25zdCB7IHJldHVybiBtX3ZhbHVlLmlzRW1wdHkoKTsgfQogICAgIAog
ICAgIFBhc3NSZWZQdHI8QXR0cmlidXRlPiBjbG9uZSgpIGNvbnN0OwotICAgIAotICAgIFN0eWxl
UHJvcGVydHlTZXQqIGRlY2woKSBjb25zdCB7IHJldHVybiBtX21hcHBlZEF0dHJpYnV0ZURlY2xh
cmF0aW9uID8gbV9tYXBwZWRBdHRyaWJ1dGVEZWNsYXJhdGlvbi0+ZGVjbGFyYXRpb24oKSA6IDA7
IH0KLQotICAgIENTU01hcHBlZEF0dHJpYnV0ZURlY2xhcmF0aW9uKiBtYXBwZWRBdHRyaWJ1dGVE
ZWNsYXJhdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fbWFwcGVkQXR0cmlidXRlRGVjbGFyYXRpb24u
Z2V0KCk7IH0KLSAgICB2b2lkIHNldE1hcHBlZEF0dHJpYnV0ZURlY2xhcmF0aW9uKFBhc3NSZWZQ
dHI8Q1NTTWFwcGVkQXR0cmlidXRlRGVjbGFyYXRpb24+IGRlY2wpIHsgbV9tYXBwZWRBdHRyaWJ1
dGVEZWNsYXJhdGlvbiA9IGRlY2w7IH0KIAogICAgIHZvaWQgc2V0VmFsdWUoY29uc3QgQXRvbWlj
U3RyaW5nJiB2YWx1ZSkgeyBtX3ZhbHVlID0gdmFsdWU7IH0KICAgICB2b2lkIHNldFByZWZpeChj
b25zdCBBdG9taWNTdHJpbmcmIHByZWZpeCkgeyBtX25hbWUuc2V0UHJlZml4KHByZWZpeCk7IH0K
QEAgLTg1LDIxICs3OCwxOSBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc01hcHBlZEF0dHJpYnV0ZSgp
IHsgcmV0dXJuIG1faXNNYXBwZWRBdHRyaWJ1dGU7IH0KIAogcHJpdmF0ZToKLSAgICBBdHRyaWJ1
dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbWljU3RyaW5nJiB2YWx1ZSwg
Ym9vbCBpc01hcHBlZEF0dHJpYnV0ZSwgQ1NTTWFwcGVkQXR0cmlidXRlRGVjbGFyYXRpb24qIHN0
eWxlRGVjbCkKKyAgICBBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3Qg
QXRvbWljU3RyaW5nJiB2YWx1ZSwgYm9vbCBpc01hcHBlZEF0dHJpYnV0ZSkKICAgICAgICAgOiBt
X2lzTWFwcGVkQXR0cmlidXRlKGlzTWFwcGVkQXR0cmlidXRlKQogICAgICAgICAsIG1faGFzQXR0
cihmYWxzZSkKICAgICAgICAgLCBtX25hbWUobmFtZSkKICAgICAgICAgLCBtX3ZhbHVlKHZhbHVl
KQotICAgICAgICAsIG1fbWFwcGVkQXR0cmlidXRlRGVjbGFyYXRpb24oc3R5bGVEZWNsKQogICAg
IHsKICAgICB9CiAKLSAgICBBdHRyaWJ1dGUoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lLCBjb25z
dCBBdG9taWNTdHJpbmcmIHZhbHVlLCBib29sIGlzTWFwcGVkQXR0cmlidXRlLCBDU1NNYXBwZWRB
dHRyaWJ1dGVEZWNsYXJhdGlvbiogc3R5bGVEZWNsKQorICAgIEF0dHJpYnV0ZShjb25zdCBBdG9t
aWNTdHJpbmcmIG5hbWUsIGNvbnN0IEF0b21pY1N0cmluZyYgdmFsdWUsIGJvb2wgaXNNYXBwZWRB
dHRyaWJ1dGUpCiAgICAgICAgIDogbV9pc01hcHBlZEF0dHJpYnV0ZShpc01hcHBlZEF0dHJpYnV0
ZSkKICAgICAgICAgLCBtX2hhc0F0dHIoZmFsc2UpCiAgICAgICAgICwgbV9uYW1lKG51bGxBdG9t
LCBuYW1lLCBudWxsQXRvbSkKICAgICAgICAgLCBtX3ZhbHVlKHZhbHVlKQotICAgICAgICAsIG1f
bWFwcGVkQXR0cmlidXRlRGVjbGFyYXRpb24oc3R5bGVEZWNsKQogICAgIHsKICAgICB9CiAKQEAg
LTExMiw3ICsxMDMsNiBAQCBwcml2YXRlOgogICAgIAogICAgIFF1YWxpZmllZE5hbWUgbV9uYW1l
OwogICAgIEF0b21pY1N0cmluZyBtX3ZhbHVlOwotICAgIFJlZlB0cjxDU1NNYXBwZWRBdHRyaWJ1
dGVEZWNsYXJhdGlvbj4gbV9tYXBwZWRBdHRyaWJ1dGVEZWNsYXJhdGlvbjsKIH07CiAKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9DU1NNYXBw
ZWRBdHRyaWJ1dGVEZWNsYXJhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ1NTTWFwcGVk
QXR0cmlidXRlRGVjbGFyYXRpb24uY3BwCmluZGV4IDcyZTI1NmEuLjY0YTYxNjUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9DU1NNYXBwZWRBdHRyaWJ1dGVEZWNsYXJhdGlvbi5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0NTU01hcHBlZEF0dHJpYnV0ZURlY2xhcmF0aW9uLmNw
cApAQCAtMzgsNyArMzgsNiBAQCBpbmxpbmUgdm9pZCBDU1NNYXBwZWRBdHRyaWJ1dGVEZWNsYXJh
dGlvbjo6c2V0TmVlZHNTdHlsZVJlY2FsYyhTdHlsZWRFbGVtZW50KiBlbAogCiBDU1NNYXBwZWRB
dHRyaWJ1dGVEZWNsYXJhdGlvbjo6fkNTU01hcHBlZEF0dHJpYnV0ZURlY2xhcmF0aW9uKCkKIHsK
LSAgICBTdHlsZWRFbGVtZW50OjpyZW1vdmVNYXBwZWRBdHRyaWJ1dGVEZWNsKG1fZW50cnlUeXBl
LCBtX2F0dHJOYW1lLCBtX2F0dHJWYWx1ZSk7CiB9CiAKIHZvaWQgQ1NTTWFwcGVkQXR0cmlidXRl
RGVjbGFyYXRpb246OnNldE1hcHBlZEltYWdlUHJvcGVydHkoU3R5bGVkRWxlbWVudCogZWxlbWVu
dCwgaW50IHByb3BlcnR5SWQsIGNvbnN0IFN0cmluZyYgdXJsKQpAQCAtNjYsOCArNjUsMTAgQEAg
dm9pZCBDU1NNYXBwZWRBdHRyaWJ1dGVEZWNsYXJhdGlvbjo6c2V0TWFwcGVkUHJvcGVydHkoU3R5
bGVkRWxlbWVudCogZWxlbWVudCwgaW4KICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGlm
ICghQ1NTUGFyc2VyOjpwYXJzZU1hcHBlZEF0dHJpYnV0ZVZhbHVlKHRoaXMsIGVsZW1lbnQsIHBy
b3BlcnR5SWQsIHZhbHVlKSkKKyAgICBpZiAoIUNTU1BhcnNlcjo6cGFyc2VNYXBwZWRBdHRyaWJ1
dGVWYWx1ZSh0aGlzLCBlbGVtZW50LCBwcm9wZXJ0eUlkLCB2YWx1ZSkpIHsKKyAgICAgICAgcmVt
b3ZlTWFwcGVkUHJvcGVydHkoZWxlbWVudCwgcHJvcGVydHlJZCk7CiAgICAgICAgIHJldHVybjsK
KyAgICB9CiAKICAgICBzZXROZWVkc1N0eWxlUmVjYWxjKGVsZW1lbnQpOwogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvZG9tL0NTU01hcHBlZEF0dHJpYnV0ZURlY2xhcmF0aW9uLmggYi9T
b3VyY2UvV2ViQ29yZS9kb20vQ1NTTWFwcGVkQXR0cmlidXRlRGVjbGFyYXRpb24uaAppbmRleCA0
ZmIxYjE0Li40MDEzYjE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ1NTTWFwcGVk
QXR0cmlidXRlRGVjbGFyYXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ1NTTWFwcGVk
QXR0cmlidXRlRGVjbGFyYXRpb24uaApAQCAtNDIsMTMgKzQyLDYgQEAgcHVibGljOgogCiAgICAg
fkNTU01hcHBlZEF0dHJpYnV0ZURlY2xhcmF0aW9uKCk7CiAKLSAgICB2b2lkIHNldE1hcHBlZFN0
YXRlKE1hcHBlZEF0dHJpYnV0ZUVudHJ5IHR5cGUsIGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUs
IGNvbnN0IEF0b21pY1N0cmluZyYgdmFsKQotICAgIHsKLSAgICAgICAgbV9lbnRyeVR5cGUgPSB0
eXBlOwotICAgICAgICBtX2F0dHJOYW1lID0gbmFtZTsKLSAgICAgICAgbV9hdHRyVmFsdWUgPSB2
YWw7Ci0gICAgfQotCiAgICAgdm9pZCBzZXRNYXBwZWRQcm9wZXJ0eShTdHlsZWRFbGVtZW50Kiwg
aW50IHByb3BlcnR5SWQsIGludCB2YWx1ZSk7CiAgICAgdm9pZCBzZXRNYXBwZWRQcm9wZXJ0eShT
dHlsZWRFbGVtZW50KiwgaW50IHByb3BlcnR5SWQsIGNvbnN0IFN0cmluZyYgdmFsdWUpOwogICAg
IHZvaWQgc2V0TWFwcGVkSW1hZ2VQcm9wZXJ0eShTdHlsZWRFbGVtZW50KiwgaW50IHByb3BlcnR5
SWQsIGNvbnN0IFN0cmluZyYgdXJsKTsKQEAgLTYzLDE3ICs1NiwxMiBAQCBwdWJsaWM6CiBwcml2
YXRlOgogICAgIENTU01hcHBlZEF0dHJpYnV0ZURlY2xhcmF0aW9uKCkKICAgICAgICAgOiBtX2Rl
Y2xhcmF0aW9uKFN0eWxlUHJvcGVydHlTZXQ6OmNyZWF0ZSgpKQotICAgICAgICAsIG1fZW50cnlU
eXBlKGVOb25lKQotICAgICAgICAsIG1fYXR0ck5hbWUoYW55UU5hbWUoKSkKICAgICB7CiAgICAg
fQogCiAgICAgdm9pZCBzZXROZWVkc1N0eWxlUmVjYWxjKFN0eWxlZEVsZW1lbnQqKTsKIAogICAg
IFJlZlB0cjxTdHlsZVByb3BlcnR5U2V0PiBtX2RlY2xhcmF0aW9uOwotICAgIE1hcHBlZEF0dHJp
YnV0ZUVudHJ5IG1fZW50cnlUeXBlOwotICAgIFF1YWxpZmllZE5hbWUgbV9hdHRyTmFtZTsKLSAg
ICBBdG9taWNTdHJpbmcgbV9hdHRyVmFsdWU7CiB9OwogCiB9IC8vbmFtZXNwYWNlCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0Vs
ZW1lbnQuaAppbmRleCAzYzI3NjU5Li42MGRhZjk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmgKQEAgLTIy
MSw2ICsyMjEsNyBAQCBwdWJsaWM6CiAgICAgTmFtZWROb2RlTWFwKiB1cGRhdGVkQXR0cmlidXRl
cygpIGNvbnN0OwogCiAgICAgLy8gVGhpcyBtZXRob2QgaXMgY2FsbGVkIHdoZW5ldmVyIGFuIGF0
dHJpYnV0ZSBpcyBhZGRlZCwgY2hhbmdlZCBvciByZW1vdmVkLgorICAgIC8vIEZJWE1FOiBSZW1v
dmUgdGhlIHByZXNlcnZlRGVjbHMgYXJndW1lbnQuCiAgICAgdmlydHVhbCB2b2lkIGF0dHJpYnV0
ZUNoYW5nZWQoQXR0cmlidXRlKiwgYm9vbCBwcmVzZXJ2ZURlY2xzID0gZmFsc2UpOwogCiAgICAg
Ly8gT25seSBjYWxsZWQgYnkgdGhlIHBhcnNlciBpbW1lZGlhdGVseSBhZnRlciBlbGVtZW50IGNv
bnN0cnVjdGlvbi4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50QXR0cmli
dXRlRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnRBdHRyaWJ1dGVEYXRhLmgKaW5k
ZXggM2QyYmY0YS4uNDQ1NWRhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1l
bnRBdHRyaWJ1dGVEYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnRBdHRyaWJ1
dGVEYXRhLmgKQEAgLTI2LDYgKzI2LDcgQEAKICNpZm5kZWYgRWxlbWVudEF0dHJpYnV0ZURhdGFf
aAogI2RlZmluZSBFbGVtZW50QXR0cmlidXRlRGF0YV9oCiAKKyNpbmNsdWRlICJDU1NNYXBwZWRB
dHRyaWJ1dGVEZWNsYXJhdGlvbi5oIgogI2luY2x1ZGUgIlNwYWNlU3BsaXRTdHJpbmcuaCIKICNp
bmNsdWRlICJTdHlsZVByb3BlcnR5U2V0LmgiCiAKQEAgLTUwLDYgKzUxLDcgQEAgcHJpdmF0ZToK
ICAgICB9CiAKICAgICBSZWZQdHI8U3R5bGVQcm9wZXJ0eVNldD4gbV9pbmxpbmVTdHlsZURlY2w7
CisgICAgUmVmUHRyPENTU01hcHBlZEF0dHJpYnV0ZURlY2xhcmF0aW9uPiBtX2F0dHJpYnV0ZVN0
eWxlOwogICAgIFNwYWNlU3BsaXRTdHJpbmcgbV9jbGFzc05hbWVzOwogICAgIEF0b21pY1N0cmlu
ZyBtX2lkRm9yU3R5bGVSZXNvbHV0aW9uOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9OYW1lZE5vZGVNYXAuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL05hbWVkTm9kZU1hcC5j
cHAKaW5kZXggMTg5MzZlNS4uZmI3ZDFiMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9t
L05hbWVkTm9kZU1hcC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL05hbWVkTm9kZU1hcC5j
cHAKQEAgLTMzOSw0ICszMzksMTMgQEAgdm9pZCBOYW1lZE5vZGVNYXA6OmRlc3Ryb3lJbmxpbmVT
dHlsZURlY2woKQogICAgIGF0dHJpYnV0ZURhdGEoKS0+bV9pbmxpbmVTdHlsZURlY2wgPSAwOwog
fQogCitDU1NNYXBwZWRBdHRyaWJ1dGVEZWNsYXJhdGlvbiogTmFtZWROb2RlTWFwOjplbnN1cmVB
dHRyaWJ1dGVTdHlsZSgpCit7CisgICAgaWYgKCFhdHRyaWJ1dGVEYXRhKCktPm1fYXR0cmlidXRl
U3R5bGUpIHsKKyAgICAgICAgYXR0cmlidXRlRGF0YSgpLT5tX2F0dHJpYnV0ZVN0eWxlID0gQ1NT
TWFwcGVkQXR0cmlidXRlRGVjbGFyYXRpb246OmNyZWF0ZSgpOworICAgICAgICBhdHRyaWJ1dGVE
YXRhKCktPm1fYXR0cmlidXRlU3R5bGUtPmRlY2xhcmF0aW9uKCktPnNldFN0cmljdFBhcnNpbmco
ZmFsc2UpOworICAgIH0KKyAgICByZXR1cm4gYXR0cmlidXRlRGF0YSgpLT5tX2F0dHJpYnV0ZVN0
eWxlLmdldCgpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vTmFtZWROb2RlTWFwLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vTmFtZWRO
b2RlTWFwLmgKaW5kZXggZDNiYjFkZi4uM2JhNzE5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvZG9tL05hbWVkTm9kZU1hcC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9OYW1lZE5vZGVN
YXAuaApAQCAtMjYsNiArMjYsOCBAQAogI2RlZmluZSBOYW1lZE5vZGVNYXBfaAogCiAjaW5jbHVk
ZSAiQXR0cmlidXRlLmgiCisjaW5jbHVkZSAiQ1NTTWFwcGVkQXR0cmlidXRlRGVjbGFyYXRpb24u
aCIKKyNpbmNsdWRlICJDU1NQcm9wZXJ0eU5hbWVzLmgiCiAjaW5jbHVkZSAiRWxlbWVudEF0dHJp
YnV0ZURhdGEuaCIKICNpbmNsdWRlICJTcGFjZVNwbGl0U3RyaW5nLmgiCiAjaW5jbHVkZSA8d3Rm
L05vdEZvdW5kLmg+CkBAIC0xMDMsNiArMTA1LDkgQEAgcHVibGljOgogICAgIFN0eWxlUHJvcGVy
dHlTZXQqIGVuc3VyZUlubGluZVN0eWxlRGVjbCgpOwogICAgIHZvaWQgZGVzdHJveUlubGluZVN0
eWxlRGVjbCgpOwogCisgICAgQ1NTTWFwcGVkQXR0cmlidXRlRGVjbGFyYXRpb24qIGF0dHJpYnV0
ZVN0eWxlKCkgY29uc3QgeyByZXR1cm4gYXR0cmlidXRlRGF0YSgpLT5tX2F0dHJpYnV0ZVN0eWxl
LmdldCgpOyB9CisgICAgQ1NTTWFwcGVkQXR0cmlidXRlRGVjbGFyYXRpb24qIGVuc3VyZUF0dHJp
YnV0ZVN0eWxlKCk7CisKIHByaXZhdGU6CiAgICAgTmFtZWROb2RlTWFwKEVsZW1lbnQqIGVsZW1l
bnQpCiAgICAgICAgIDogbV9lbGVtZW50KGVsZW1lbnQpCkBAIC0xODQsMTYgKzE4OSw2IEBAIGlu
bGluZSB2b2lkIE5hbWVkTm9kZU1hcDo6cmVtb3ZlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5h
bWUmIG5hbWUpCiAgICAgcmVtb3ZlQXR0cmlidXRlKGluZGV4KTsKIH0KIAotaW5saW5lIHNpemVf
dCBOYW1lZE5vZGVNYXA6Om1hcHBlZEF0dHJpYnV0ZUNvdW50KCkgY29uc3QKLXsKLSAgICBzaXpl
X3QgY291bnQgPSAwOwotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9hdHRyaWJ1dGVzLnNp
emUoKTsgKytpKSB7Ci0gICAgICAgIGlmIChtX2F0dHJpYnV0ZXNbaV0tPmRlY2woKSkKLSAgICAg
ICAgICAgICsrY291bnQ7Ci0gICAgfQotICAgIHJldHVybiBjb3VudDsKLX0KLQogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gTmFtZWROb2RlTWFwX2gKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9TdHlsZWRFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9T
dHlsZWRFbGVtZW50LmNwcAppbmRleCA5Y2U1MTdlLi43NzNkZjkxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vU3R5bGVkRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9t
L1N0eWxlZEVsZW1lbnQuY3BwCkBAIC00NCw2OSArNDQsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKIHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CiAKLXN0cnVjdCBNYXBwZWRBdHRyaWJ1dGVL
ZXkgewotICAgIHVpbnQxNl90IHR5cGU7Ci0gICAgU3RyaW5nSW1wbCogbmFtZTsKLSAgICBTdHJp
bmdJbXBsKiB2YWx1ZTsKLSAgICBNYXBwZWRBdHRyaWJ1dGVLZXkoTWFwcGVkQXR0cmlidXRlRW50
cnkgdCA9IGVOb25lLCBTdHJpbmdJbXBsKiBuID0gMCwgU3RyaW5nSW1wbCogdiA9IDApCi0gICAg
ICAgIDogdHlwZSh0KSwgbmFtZShuKSwgdmFsdWUodikgeyB9Ci19OwotCi1zdGF0aWMgaW5saW5l
IGJvb2wgb3BlcmF0b3I9PShjb25zdCBNYXBwZWRBdHRyaWJ1dGVLZXkmIGEsIGNvbnN0IE1hcHBl
ZEF0dHJpYnV0ZUtleSYgYikKLSAgICB7IHJldHVybiBhLnR5cGUgPT0gYi50eXBlICYmIGEubmFt
ZSA9PSBiLm5hbWUgJiYgYS52YWx1ZSA9PSBiLnZhbHVlOyB9IAotCi1zdHJ1Y3QgTWFwcGVkQXR0
cmlidXRlS2V5VHJhaXRzIDogV1RGOjpHZW5lcmljSGFzaFRyYWl0czxNYXBwZWRBdHRyaWJ1dGVL
ZXk+IHsKLSAgICBzdGF0aWMgY29uc3QgYm9vbCBlbXB0eVZhbHVlSXNaZXJvID0gdHJ1ZTsKLSAg
ICBzdGF0aWMgY29uc3QgYm9vbCBuZWVkc0Rlc3RydWN0aW9uID0gZmFsc2U7Ci0gICAgc3RhdGlj
IHZvaWQgY29uc3RydWN0RGVsZXRlZFZhbHVlKE1hcHBlZEF0dHJpYnV0ZUtleSYgc2xvdCkgeyBz
bG90LnR5cGUgPSBlTGFzdEVudHJ5OyB9Ci0gICAgc3RhdGljIGJvb2wgaXNEZWxldGVkVmFsdWUo
Y29uc3QgTWFwcGVkQXR0cmlidXRlS2V5JiB2YWx1ZSkgeyByZXR1cm4gdmFsdWUudHlwZSA9PSBl
TGFzdEVudHJ5OyB9Ci19OwotCi1zdHJ1Y3QgTWFwcGVkQXR0cmlidXRlSGFzaCB7Ci0gICAgc3Rh
dGljIHVuc2lnbmVkIGhhc2goY29uc3QgTWFwcGVkQXR0cmlidXRlS2V5Jik7Ci0gICAgc3RhdGlj
IGJvb2wgZXF1YWwoY29uc3QgTWFwcGVkQXR0cmlidXRlS2V5JiBhLCBjb25zdCBNYXBwZWRBdHRy
aWJ1dGVLZXkmIGIpIHsgcmV0dXJuIGEgPT0gYjsgfQotICAgIHN0YXRpYyBjb25zdCBib29sIHNh
ZmVUb0NvbXBhcmVUb0VtcHR5T3JEZWxldGVkID0gdHJ1ZTsKLX07Ci0KLXR5cGVkZWYgSGFzaE1h
cDxNYXBwZWRBdHRyaWJ1dGVLZXksIENTU01hcHBlZEF0dHJpYnV0ZURlY2xhcmF0aW9uKiwgTWFw
cGVkQXR0cmlidXRlSGFzaCwgTWFwcGVkQXR0cmlidXRlS2V5VHJhaXRzPiBNYXBwZWRBdHRyaWJ1
dGVEZWNsczsKLQotc3RhdGljIE1hcHBlZEF0dHJpYnV0ZURlY2xzKiBtYXBwZWRBdHRyaWJ1dGVE
ZWNscyA9IDA7Ci0KLUNTU01hcHBlZEF0dHJpYnV0ZURlY2xhcmF0aW9uKiBTdHlsZWRFbGVtZW50
OjpnZXRNYXBwZWRBdHRyaWJ1dGVEZWNsKE1hcHBlZEF0dHJpYnV0ZUVudHJ5IGVudHJ5VHlwZSwg
QXR0cmlidXRlKiBhdHRyKQotewotICAgIGlmICghbWFwcGVkQXR0cmlidXRlRGVjbHMpCi0gICAg
ICAgIHJldHVybiAwOwotICAgIHJldHVybiBtYXBwZWRBdHRyaWJ1dGVEZWNscy0+Z2V0KE1hcHBl
ZEF0dHJpYnV0ZUtleShlbnRyeVR5cGUsIGF0dHItPm5hbWUoKS5sb2NhbE5hbWUoKS5pbXBsKCks
IGF0dHItPnZhbHVlKCkuaW1wbCgpKSk7Ci19Ci0KLUNTU01hcHBlZEF0dHJpYnV0ZURlY2xhcmF0
aW9uKiBTdHlsZWRFbGVtZW50OjpnZXRNYXBwZWRBdHRyaWJ1dGVEZWNsKE1hcHBlZEF0dHJpYnV0
ZUVudHJ5IHR5cGUsIGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0IEF0b21pY1N0cmlu
ZyYgdmFsdWUpCi17Ci0gICAgaWYgKCFtYXBwZWRBdHRyaWJ1dGVEZWNscykKLSAgICAgICAgcmV0
dXJuIDA7Ci0gICAgcmV0dXJuIG1hcHBlZEF0dHJpYnV0ZURlY2xzLT5nZXQoTWFwcGVkQXR0cmli
dXRlS2V5KHR5cGUsIG5hbWUubG9jYWxOYW1lKCkuaW1wbCgpLCB2YWx1ZS5pbXBsKCkpKTsKLX0K
LQotdm9pZCBTdHlsZWRFbGVtZW50OjpzZXRNYXBwZWRBdHRyaWJ1dGVEZWNsKE1hcHBlZEF0dHJp
YnV0ZUVudHJ5IGVudHJ5VHlwZSwgQXR0cmlidXRlKiBhdHRyLCBDU1NNYXBwZWRBdHRyaWJ1dGVE
ZWNsYXJhdGlvbiogZGVjbCkKLXsKLSAgICBpZiAoIW1hcHBlZEF0dHJpYnV0ZURlY2xzKQotICAg
ICAgICBtYXBwZWRBdHRyaWJ1dGVEZWNscyA9IG5ldyBNYXBwZWRBdHRyaWJ1dGVEZWNsczsKLSAg
ICBtYXBwZWRBdHRyaWJ1dGVEZWNscy0+c2V0KE1hcHBlZEF0dHJpYnV0ZUtleShlbnRyeVR5cGUs
IGF0dHItPm5hbWUoKS5sb2NhbE5hbWUoKS5pbXBsKCksIGF0dHItPnZhbHVlKCkuaW1wbCgpKSwg
ZGVjbCk7Ci19Ci0KLXZvaWQgU3R5bGVkRWxlbWVudDo6c2V0TWFwcGVkQXR0cmlidXRlRGVjbChN
YXBwZWRBdHRyaWJ1dGVFbnRyeSBlbnRyeVR5cGUsIGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUs
IGNvbnN0IEF0b21pY1N0cmluZyYgdmFsdWUsIENTU01hcHBlZEF0dHJpYnV0ZURlY2xhcmF0aW9u
KiBkZWNsKQotewotICAgIGlmICghbWFwcGVkQXR0cmlidXRlRGVjbHMpCi0gICAgICAgIG1hcHBl
ZEF0dHJpYnV0ZURlY2xzID0gbmV3IE1hcHBlZEF0dHJpYnV0ZURlY2xzOwotICAgIG1hcHBlZEF0
dHJpYnV0ZURlY2xzLT5zZXQoTWFwcGVkQXR0cmlidXRlS2V5KGVudHJ5VHlwZSwgbmFtZS5sb2Nh
bE5hbWUoKS5pbXBsKCksIHZhbHVlLmltcGwoKSksIGRlY2wpOwotfQotCi12b2lkIFN0eWxlZEVs
ZW1lbnQ6OnJlbW92ZU1hcHBlZEF0dHJpYnV0ZURlY2woTWFwcGVkQXR0cmlidXRlRW50cnkgZW50
cnlUeXBlLCBjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSwgY29uc3QgQXRvbWljU3RyaW5n
JiBhdHRyVmFsdWUpCi17Ci0gICAgaWYgKCFtYXBwZWRBdHRyaWJ1dGVEZWNscykKLSAgICAgICAg
cmV0dXJuOwotICAgIG1hcHBlZEF0dHJpYnV0ZURlY2xzLT5yZW1vdmUoTWFwcGVkQXR0cmlidXRl
S2V5KGVudHJ5VHlwZSwgYXR0ck5hbWUubG9jYWxOYW1lKCkuaW1wbCgpLCBhdHRyVmFsdWUuaW1w
bCgpKSk7Ci19Ci0KIHZvaWQgU3R5bGVkRWxlbWVudDo6dXBkYXRlU3R5bGVBdHRyaWJ1dGUoKSBj
b25zdAogewogICAgIEFTU0VSVCghaXNTdHlsZUF0dHJpYnV0ZVZhbGlkKCkpOwpAQCAtMTM2LDU4
ICs3MywxNCBAQCB2b2lkIFN0eWxlZEVsZW1lbnQ6OmF0dHJpYnV0ZUNoYW5nZWQoQXR0cmlidXRl
KiBhdHRyLCBib29sIHByZXNlcnZlRGVjbHMpCiAgICAgICAgIEVsZW1lbnQ6OmF0dHJpYnV0ZUNo
YW5nZWQoYXR0ciwgcHJlc2VydmVEZWNscyk7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gCi0g
ICAgaWYgKGF0dHItPm1hcHBlZEF0dHJpYnV0ZURlY2xhcmF0aW9uKCkgJiYgIXByZXNlcnZlRGVj
bHMpIHsKLSAgICAgICAgYXR0ci0+c2V0TWFwcGVkQXR0cmlidXRlRGVjbGFyYXRpb24oMCk7Ci0g
ICAgICAgIHNldE5lZWRzU3R5bGVSZWNhbGMoKTsKLSAgICB9Ci0KLSAgICBib29sIGNoZWNrRGVj
bCA9IHRydWU7Ci0gICAgTWFwcGVkQXR0cmlidXRlRW50cnkgZW50cnk7Ci0gICAgYm9vbCBuZWVk
VG9QYXJzZSA9IG1hcFRvRW50cnkoYXR0ci0+bmFtZSgpLCBlbnRyeSk7Ci0gICAgaWYgKHByZXNl
cnZlRGVjbHMpIHsKLSAgICAgICAgaWYgKGF0dHItPm1hcHBlZEF0dHJpYnV0ZURlY2xhcmF0aW9u
KCkpIHsKLSAgICAgICAgICAgIHNldE5lZWRzU3R5bGVSZWNhbGMoKTsKLSAgICAgICAgICAgIGNo
ZWNrRGVjbCA9IGZhbHNlOwotICAgICAgICB9Ci0gICAgfSBlbHNlIGlmICghYXR0ci0+aXNOdWxs
KCkgJiYgZW50cnkgIT0gZU5vbmUpIHsKLSAgICAgICAgQ1NTTWFwcGVkQXR0cmlidXRlRGVjbGFy
YXRpb24qIGRlY2wgPSBnZXRNYXBwZWRBdHRyaWJ1dGVEZWNsKGVudHJ5LCBhdHRyKTsKLSAgICAg
ICAgaWYgKGRlY2wpIHsKLSAgICAgICAgICAgIGF0dHItPnNldE1hcHBlZEF0dHJpYnV0ZURlY2xh
cmF0aW9uKGRlY2wpOwotICAgICAgICAgICAgc2V0TmVlZHNTdHlsZVJlY2FsYygpOwotICAgICAg
ICAgICAgY2hlY2tEZWNsID0gZmFsc2U7Ci0gICAgICAgIH0gZWxzZQotICAgICAgICAgICAgbmVl
ZFRvUGFyc2UgPSB0cnVlOwotICAgIH0KIAotICAgIC8vIHBhcnNlTWFwcGVkQXR0cmlidXRlKCkg
bWlnaHQgY3JlYXRlIGEgQ1NTTWFwcGVkQXR0cmlidXRlRGVjbGFyYXRpb24gb24gdGhlIGF0dHJp
YnV0ZS4gIAotICAgIC8vIE5vcm1hbGx5IHdlIHdvdWxkIGJlIGNvbmNlcm5lZCBhYm91dCByZXNl
dGluZyB0aGUgcGFyZW50IG9mIHRob3NlIGRlY2xhcmF0aW9ucyBpbiBTdHlsZWRFbGVtZW50Ojpk
aWRNb3ZlVG9OZXdEb2N1bWVudCgpLgotICAgIC8vIEJ1dCBjdXJyZW50bHkgd2UgYWx3YXlzIGNs
ZWFyIGl0cyBwYXJlbnQgYW5kIG5vZGUgYmVsb3cgd2hlbiBhZGRpbmcgaXQgdG8gdGhlIGRlY2wg
dGFibGUuICAKLSAgICAvLyBJZiB0aGF0IGNoYW5nZXMgZm9yIHNvbWUgcmVhc29uIG1vdmluZyBi
ZXR3ZWVuIGRvY3VtZW50cyB3aWxsIGJlIGJ1Z2d5LgotICAgIC8vIHdlYmFyY2hpdmUvYWRvcHQt
YXR0cmlidXRlLXN0eWxlZC1ub2RlLXdlYmFyY2hpdmUuaHRtbCBzaG91bGQgY2F0Y2ggYW55IHJl
c3VsdGluZyBjcmFzaGVzLgotICAgIGlmIChuZWVkVG9QYXJzZSkKKyAgICBpZiAoIShhdHRyLT5u
YW1lKCkgPT0gc3R5bGVBdHRyICYmIGlzU3luY2hyb25pemluZ1N0eWxlQXR0cmlidXRlKCkpKQog
ICAgICAgICBwYXJzZU1hcHBlZEF0dHJpYnV0ZShhdHRyKTsKIAotICAgIGlmIChlbnRyeSA9PSBl
Tm9uZSkKLSAgICAgICAgcmVjYWxjU3R5bGVJZk5lZWRlZEFmdGVyQXR0cmlidXRlQ2hhbmdlZChh
dHRyKTsKLQotICAgIGlmIChjaGVja0RlY2wgJiYgYXR0ci0+bWFwcGVkQXR0cmlidXRlRGVjbGFy
YXRpb24oKSkgewotICAgICAgICAvLyBBZGQgdGhlIGRlY2wgdG8gdGhlIHRhYmxlIGluIHRoZSBh
cHByb3ByaWF0ZSBzcG90LgotICAgICAgICBzZXRNYXBwZWRBdHRyaWJ1dGVEZWNsKGVudHJ5LCBh
dHRyLCBhdHRyLT5tYXBwZWRBdHRyaWJ1dGVEZWNsYXJhdGlvbigpKTsKLSAgICAgICAgYXR0ci0+
bWFwcGVkQXR0cmlidXRlRGVjbGFyYXRpb24oKS0+c2V0TWFwcGVkU3RhdGUoZW50cnksIGF0dHIt
Pm5hbWUoKSwgYXR0ci0+dmFsdWUoKSk7Ci0gICAgfQotCisgICAgcmVjYWxjU3R5bGVJZk5lZWRl
ZEFmdGVyQXR0cmlidXRlQ2hhbmdlZChhdHRyKTsKICAgICB1cGRhdGVBZnRlckF0dHJpYnV0ZUNo
YW5nZWQoYXR0cik7CiB9CiAKLWJvb2wgU3R5bGVkRWxlbWVudDo6bWFwVG9FbnRyeShjb25zdCBR
dWFsaWZpZWROYW1lJiBhdHRyTmFtZSwgTWFwcGVkQXR0cmlidXRlRW50cnkmIHJlc3VsdCkgY29u
c3QKLXsKLSAgICByZXN1bHQgPSBlTm9uZTsKLSAgICBpZiAoYXR0ck5hbWUgPT0gc3R5bGVBdHRy
KQotICAgICAgICByZXR1cm4gIWlzU3luY2hyb25pemluZ1N0eWxlQXR0cmlidXRlKCk7Ci0gICAg
cmV0dXJuIHRydWU7Ci19Ci0KIHZvaWQgU3R5bGVkRWxlbWVudDo6Y2xhc3NBdHRyaWJ1dGVDaGFu
Z2VkKGNvbnN0IEF0b21pY1N0cmluZyYgbmV3Q2xhc3NTdHJpbmcpCiB7CiAgICAgY29uc3QgVUNo
YXIqIGNoYXJhY3RlcnMgPSBuZXdDbGFzc1N0cmluZy5jaGFyYWN0ZXJzKCk7CkBAIC0yMjYsNDAg
KzExOSw1MCBAQCB2b2lkIFN0eWxlZEVsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmlidXRlKEF0dHJp
YnV0ZSogYXR0cikKICAgICB9CiB9CiAKLXZvaWQgU3R5bGVkRWxlbWVudDo6cmVtb3ZlQ1NTUHJv
cGVydHkoQXR0cmlidXRlKiBhdHRyaWJ1dGUsIGludCBpZCkKK3ZvaWQgU3R5bGVkRWxlbWVudDo6
cmVtb3ZlQ1NTUHJvcGVydGllcyhpbnQgaWQxLCBpbnQgaWQyLCBpbnQgaWQzLCBpbnQgaWQ0LCBp
bnQgaWQ1LCBpbnQgaWQ2LCBpbnQgaWQ3LCBpbnQgaWQ4KQogewotICAgIGlmICghYXR0cmlidXRl
LT5tYXBwZWRBdHRyaWJ1dGVEZWNsYXJhdGlvbigpKQotICAgICAgICBjcmVhdGVNYXBwZWREZWNs
KGF0dHJpYnV0ZSk7Ci0gICAgYXR0cmlidXRlLT5tYXBwZWRBdHRyaWJ1dGVEZWNsYXJhdGlvbigp
LT5yZW1vdmVNYXBwZWRQcm9wZXJ0eSh0aGlzLCBpZCk7CisgICAgQ1NTTWFwcGVkQXR0cmlidXRl
RGVjbGFyYXRpb24qIHN0eWxlID0gYXR0cmlidXRlU3R5bGUoKTsKKyAgICBpZiAoIXN0eWxlKQor
ICAgICAgICByZXR1cm47CisKKyAgICBBU1NFUlQoaWQxICE9IENTU1Byb3BlcnR5SW52YWxpZCk7
CisgICAgc3R5bGUtPnJlbW92ZU1hcHBlZFByb3BlcnR5KHRoaXMsIGlkMSk7CisKKyAgICBpZiAo
aWQyICE9IENTU1Byb3BlcnR5SW52YWxpZCkKKyAgICAgICAgc3R5bGUtPnJlbW92ZU1hcHBlZFBy
b3BlcnR5KHRoaXMsIGlkMik7CisgICAgaWYgKGlkMyAhPSBDU1NQcm9wZXJ0eUludmFsaWQpCisg
ICAgICAgIHN0eWxlLT5yZW1vdmVNYXBwZWRQcm9wZXJ0eSh0aGlzLCBpZDMpOworICAgIGlmIChp
ZDQgIT0gQ1NTUHJvcGVydHlJbnZhbGlkKQorICAgICAgICBzdHlsZS0+cmVtb3ZlTWFwcGVkUHJv
cGVydHkodGhpcywgaWQ0KTsKKyAgICBpZiAoaWQ1ICE9IENTU1Byb3BlcnR5SW52YWxpZCkKKyAg
ICAgICAgc3R5bGUtPnJlbW92ZU1hcHBlZFByb3BlcnR5KHRoaXMsIGlkNSk7CisgICAgaWYgKGlk
NiAhPSBDU1NQcm9wZXJ0eUludmFsaWQpCisgICAgICAgIHN0eWxlLT5yZW1vdmVNYXBwZWRQcm9w
ZXJ0eSh0aGlzLCBpZDYpOworICAgIGlmIChpZDcgIT0gQ1NTUHJvcGVydHlJbnZhbGlkKQorICAg
ICAgICBzdHlsZS0+cmVtb3ZlTWFwcGVkUHJvcGVydHkodGhpcywgaWQ3KTsKKyAgICBpZiAoaWQ4
ICE9IENTU1Byb3BlcnR5SW52YWxpZCkKKyAgICAgICAgc3R5bGUtPnJlbW92ZU1hcHBlZFByb3Bl
cnR5KHRoaXMsIGlkOCk7CiB9CiAKLXZvaWQgU3R5bGVkRWxlbWVudDo6YWRkQ1NTUHJvcGVydHko
QXR0cmlidXRlKiBhdHRyaWJ1dGUsIGludCBpZCwgY29uc3QgU3RyaW5nICZ2YWx1ZSkKK3ZvaWQg
U3R5bGVkRWxlbWVudDo6YWRkQ1NTUHJvcGVydHkoaW50IGlkLCBjb25zdCBTdHJpbmcgJnZhbHVl
KQogewotICAgIGlmICghYXR0cmlidXRlLT5tYXBwZWRBdHRyaWJ1dGVEZWNsYXJhdGlvbigpKQot
ICAgICAgICBjcmVhdGVNYXBwZWREZWNsKGF0dHJpYnV0ZSk7Ci0gICAgYXR0cmlidXRlLT5tYXBw
ZWRBdHRyaWJ1dGVEZWNsYXJhdGlvbigpLT5zZXRNYXBwZWRQcm9wZXJ0eSh0aGlzLCBpZCwgdmFs
dWUpOworICAgIGVuc3VyZUF0dHJpYnV0ZVN0eWxlKCktPnNldE1hcHBlZFByb3BlcnR5KHRoaXMs
IGlkLCB2YWx1ZSk7CiB9CiAKLXZvaWQgU3R5bGVkRWxlbWVudDo6YWRkQ1NTUHJvcGVydHkoQXR0
cmlidXRlKiBhdHRyaWJ1dGUsIGludCBpZCwgaW50IHZhbHVlKQordm9pZCBTdHlsZWRFbGVtZW50
OjphZGRDU1NQcm9wZXJ0eShpbnQgaWQsIGludCB2YWx1ZSkKIHsKLSAgICBpZiAoIWF0dHJpYnV0
ZS0+bWFwcGVkQXR0cmlidXRlRGVjbGFyYXRpb24oKSkKLSAgICAgICAgY3JlYXRlTWFwcGVkRGVj
bChhdHRyaWJ1dGUpOwotICAgIGF0dHJpYnV0ZS0+bWFwcGVkQXR0cmlidXRlRGVjbGFyYXRpb24o
KS0+c2V0TWFwcGVkUHJvcGVydHkodGhpcywgaWQsIHZhbHVlKTsKKyAgICBlbnN1cmVBdHRyaWJ1
dGVTdHlsZSgpLT5zZXRNYXBwZWRQcm9wZXJ0eSh0aGlzLCBpZCwgdmFsdWUpOwogfQogCi12b2lk
IFN0eWxlZEVsZW1lbnQ6OmFkZENTU0ltYWdlUHJvcGVydHkoQXR0cmlidXRlKiBhdHRyaWJ1dGUs
IGludCBpZCwgY29uc3QgU3RyaW5nJiB1cmwpCit2b2lkIFN0eWxlZEVsZW1lbnQ6OmFkZENTU0lt
YWdlUHJvcGVydHkoaW50IGlkLCBjb25zdCBTdHJpbmcmIHVybCkKIHsKLSAgICBpZiAoIWF0dHJp
YnV0ZS0+bWFwcGVkQXR0cmlidXRlRGVjbGFyYXRpb24oKSkKLSAgICAgICAgY3JlYXRlTWFwcGVk
RGVjbChhdHRyaWJ1dGUpOwotICAgIGF0dHJpYnV0ZS0+bWFwcGVkQXR0cmlidXRlRGVjbGFyYXRp
b24oKS0+c2V0TWFwcGVkSW1hZ2VQcm9wZXJ0eSh0aGlzLCBpZCwgdXJsKTsKKyAgICBlbnN1cmVB
dHRyaWJ1dGVTdHlsZSgpLT5zZXRNYXBwZWRJbWFnZVByb3BlcnR5KHRoaXMsIGlkLCB1cmwpOwog
fQogCi12b2lkIFN0eWxlZEVsZW1lbnQ6OmFkZENTU0xlbmd0aChBdHRyaWJ1dGUqIGF0dHJpYnV0
ZSwgaW50IGlkLCBjb25zdCBTdHJpbmcgJnZhbHVlKQordm9pZCBTdHlsZWRFbGVtZW50OjphZGRD
U1NMZW5ndGgoaW50IGlkLCBjb25zdCBTdHJpbmcgJnZhbHVlKQogewogICAgIC8vIEZJWE1FOiBU
aGlzIGZ1bmN0aW9uIHNob3VsZCBub3Qgc3BpbiB1cCB0aGUgQ1NTIHBhcnNlciwgYnV0IHNob3Vs
ZCBpbnN0ZWFkIGp1c3QgZmlndXJlIG91dCB0aGUgY29ycmVjdAogICAgIC8vIGxlbmd0aCB1bml0
IGFuZCBtYWtlIHRoZSBhcHByb3ByaWF0ZSBwYXJzZWQgdmFsdWUuCi0gICAgaWYgKCFhdHRyaWJ1
dGUtPm1hcHBlZEF0dHJpYnV0ZURlY2xhcmF0aW9uKCkpCi0gICAgICAgIGNyZWF0ZU1hcHBlZERl
Y2woYXR0cmlidXRlKTsKIAogICAgIC8vIHN0cmlwIGF0dHJpYnV0ZSBnYXJiYWdlLi4KICAgICBT
dHJpbmdJbXBsKiB2ID0gdmFsdWUuaW1wbCgpOwpAQCAtMjgyLDEyICsxODUsMTIgQEAgdm9pZCBT
dHlsZWRFbGVtZW50OjphZGRDU1NMZW5ndGgoQXR0cmlidXRlKiBhdHRyaWJ1dGUsIGludCBpZCwg
Y29uc3QgU3RyaW5nICZ2YWwKICAgICAgICAgfQogCiAgICAgICAgIGlmIChsICE9IHYtPmxlbmd0
aCgpKSB7Ci0gICAgICAgICAgICBhdHRyaWJ1dGUtPm1hcHBlZEF0dHJpYnV0ZURlY2xhcmF0aW9u
KCktPnNldE1hcHBlZExlbmd0aFByb3BlcnR5KHRoaXMsIGlkLCB2LT5zdWJzdHJpbmcoMCwgbCkp
OworICAgICAgICAgICAgZW5zdXJlQXR0cmlidXRlU3R5bGUoKS0+c2V0TWFwcGVkTGVuZ3RoUHJv
cGVydHkodGhpcywgaWQsIHYtPnN1YnN0cmluZygwLCBsKSk7CiAgICAgICAgICAgICByZXR1cm47
CiAgICAgICAgIH0KICAgICB9CiAKLSAgICBhdHRyaWJ1dGUtPm1hcHBlZEF0dHJpYnV0ZURlY2xh
cmF0aW9uKCktPnNldE1hcHBlZExlbmd0aFByb3BlcnR5KHRoaXMsIGlkLCB2YWx1ZSk7CisgICAg
ZW5zdXJlQXR0cmlidXRlU3R5bGUoKS0+c2V0TWFwcGVkTGVuZ3RoUHJvcGVydHkodGhpcywgaWQs
IHZhbHVlKTsKIH0KIAogc3RhdGljIFN0cmluZyBwYXJzZUNvbG9yU3RyaW5nV2l0aENyYXp5TGVn
YWN5UnVsZXMoY29uc3QgU3RyaW5nJiBjb2xvclN0cmluZykKQEAgLTM0Myw1NyArMjQ2LDMwIEBA
IHN0YXRpYyBTdHJpbmcgcGFyc2VDb2xvclN0cmluZ1dpdGhDcmF6eUxlZ2FjeVJ1bGVzKGNvbnN0
IFN0cmluZyYgY29sb3JTdHJpbmcpCiB9CiAKIC8vIENvbG9yIHBhcnNpbmcgdGhhdCBtYXRjaGVz
IEhUTUwncyAicnVsZXMgZm9yIHBhcnNpbmcgYSBsZWdhY3kgY29sb3IgdmFsdWUiCi12b2lkIFN0
eWxlZEVsZW1lbnQ6OmFkZENTU0NvbG9yKEF0dHJpYnV0ZSogYXR0cmlidXRlLCBpbnQgaWQsIGNv
bnN0IFN0cmluZyYgYXR0cmlidXRlVmFsdWUpCit2b2lkIFN0eWxlZEVsZW1lbnQ6OmFkZENTU0Nv
bG9yKGludCBpZCwgY29uc3QgU3RyaW5nJiBhdHRyaWJ1dGVWYWx1ZSkKIHsKICAgICAvLyBBbiBl
bXB0eSBzdHJpbmcgZG9lc24ndCBhcHBseSBhIGNvbG9yLiAoT25lIGNvbnRhaW5pbmcgb25seSB3
aGl0ZXNwYWNlIGRvZXMsIHdoaWNoIGlzIHdoeSB0aGlzIGNoZWNrIG9jY3VycyBiZWZvcmUgc3Ry
aXBwaW5nLikKLSAgICBpZiAoYXR0cmlidXRlVmFsdWUuaXNFbXB0eSgpKQorICAgIGlmIChhdHRy
aWJ1dGVWYWx1ZS5pc0VtcHR5KCkpIHsKKyAgICAgICAgcmVtb3ZlQ1NTUHJvcGVydHkoaWQpOwog
ICAgICAgICByZXR1cm47CisgICAgfQogCiAgICAgU3RyaW5nIGNvbG9yU3RyaW5nID0gYXR0cmli
dXRlVmFsdWUuc3RyaXBXaGl0ZVNwYWNlKCk7CiAKICAgICAvLyAidHJhbnNwYXJlbnQiIGRvZXNu
J3QgYXBwbHkgYSBjb2xvciBlaXRoZXIuCi0gICAgaWYgKGVxdWFsSWdub3JpbmdDYXNlKGNvbG9y
U3RyaW5nLCAidHJhbnNwYXJlbnQiKSkKKyAgICBpZiAoZXF1YWxJZ25vcmluZ0Nhc2UoY29sb3JT
dHJpbmcsICJ0cmFuc3BhcmVudCIpKSB7CisgICAgICAgIHJlbW92ZUNTU1Byb3BlcnR5KGlkKTsK
ICAgICAgICAgcmV0dXJuOwotCi0gICAgaWYgKCFhdHRyaWJ1dGUtPm1hcHBlZEF0dHJpYnV0ZURl
Y2xhcmF0aW9uKCkpCi0gICAgICAgIGNyZWF0ZU1hcHBlZERlY2woYXR0cmlidXRlKTsKKyAgICB9
CiAKICAgICAvLyBJZiB0aGUgc3RyaW5nIGlzIGEgbmFtZWQgQ1NTIGNvbG9yIG9yIGEgMy82LWRp
Z2l0IGhleCBjb2xvciwgdXNlIHRoYXQuCiAgICAgQ29sb3IgcGFyc2VkQ29sb3IoY29sb3JTdHJp
bmcpOwogICAgIGlmIChwYXJzZWRDb2xvci5pc1ZhbGlkKCkpIHsKLSAgICAgICAgYXR0cmlidXRl
LT5tYXBwZWRBdHRyaWJ1dGVEZWNsYXJhdGlvbigpLT5zZXRNYXBwZWRQcm9wZXJ0eSh0aGlzLCBp
ZCwgY29sb3JTdHJpbmcpOworICAgICAgICBlbnN1cmVBdHRyaWJ1dGVTdHlsZSgpLT5zZXRNYXBw
ZWRQcm9wZXJ0eSh0aGlzLCBpZCwgY29sb3JTdHJpbmcpOwogICAgICAgICByZXR1cm47CiAgICAg
fQogCi0gICAgYXR0cmlidXRlLT5tYXBwZWRBdHRyaWJ1dGVEZWNsYXJhdGlvbigpLT5zZXRNYXBw
ZWRQcm9wZXJ0eSh0aGlzLCBpZCwgcGFyc2VDb2xvclN0cmluZ1dpdGhDcmF6eUxlZ2FjeVJ1bGVz
KGNvbG9yU3RyaW5nKSk7Ci19Ci0KLXZvaWQgU3R5bGVkRWxlbWVudDo6Y3JlYXRlTWFwcGVkRGVj
bChBdHRyaWJ1dGUqIGF0dHIpCi17Ci0gICAgUmVmUHRyPENTU01hcHBlZEF0dHJpYnV0ZURlY2xh
cmF0aW9uPiBkZWNsID0gQ1NTTWFwcGVkQXR0cmlidXRlRGVjbGFyYXRpb246OmNyZWF0ZSgpOwot
ICAgIGF0dHItPnNldE1hcHBlZEF0dHJpYnV0ZURlY2xhcmF0aW9uKGRlY2wpOwotICAgIEFTU0VS
VCghZGVjbC0+ZGVjbGFyYXRpb24oKS0+dXNlU3RyaWN0UGFyc2luZygpKTsKLX0KLQotdW5zaWdu
ZWQgTWFwcGVkQXR0cmlidXRlSGFzaDo6aGFzaChjb25zdCBNYXBwZWRBdHRyaWJ1dGVLZXkmIGtl
eSkKLXsKLSAgICBDT01QSUxFX0FTU0VSVChzaXplb2Yoa2V5Lm5hbWUpID09IDQgfHwgc2l6ZW9m
KGtleS5uYW1lKSA9PSA4LCBrZXlfbmFtZV9zaXplKTsKLSAgICBDT01QSUxFX0FTU0VSVChzaXpl
b2Yoa2V5LnZhbHVlKSA9PSA0IHx8IHNpemVvZihrZXkudmFsdWUpID09IDgsIGtleV92YWx1ZV9z
aXplKTsKLQotICAgIFN0cmluZ0hhc2hlciBoYXNoZXI7Ci0gICAgY29uc3QgVUNoYXIqIGRhdGE7
Ci0KLSAgICBkYXRhID0gcmVpbnRlcnByZXRfY2FzdDxjb25zdCBVQ2hhcio+KCZrZXkubmFtZSk7
Ci0gICAgaGFzaGVyLmFkZENoYXJhY3RlcnMoZGF0YVswXSwgZGF0YVsxXSk7Ci0gICAgaWYgKHNp
emVvZihrZXkubmFtZSkgPT0gOCkKLSAgICAgICAgaGFzaGVyLmFkZENoYXJhY3RlcnMoZGF0YVsy
XSwgZGF0YVszXSk7Ci0KLSAgICBkYXRhID0gcmVpbnRlcnByZXRfY2FzdDxjb25zdCBVQ2hhcio+
KCZrZXkudmFsdWUpOwotICAgIGhhc2hlci5hZGRDaGFyYWN0ZXJzKGRhdGFbMF0sIGRhdGFbMV0p
OwotICAgIGlmIChzaXplb2Yoa2V5LnZhbHVlKSA9PSA4KQotICAgICAgICBoYXNoZXIuYWRkQ2hh
cmFjdGVycyhkYXRhWzJdLCBkYXRhWzNdKTsKLQotICAgIHJldHVybiBoYXNoZXIuaGFzaCgpOwor
ICAgIGVuc3VyZUF0dHJpYnV0ZVN0eWxlKCktPnNldE1hcHBlZFByb3BlcnR5KHRoaXMsIGlkLCBw
YXJzZUNvbG9yU3RyaW5nV2l0aENyYXp5TGVnYWN5UnVsZXMoY29sb3JTdHJpbmcpKTsKIH0KIAog
dm9pZCBTdHlsZWRFbGVtZW50Ojpjb3B5Tm9uQXR0cmlidXRlUHJvcGVydGllcyhjb25zdCBFbGVt
ZW50KiBzb3VyY2VFbGVtZW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1N0eWxl
ZEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TdHlsZWRFbGVtZW50LmgKaW5kZXggMTNh
NDAyOC4uMmI4ZGEyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1N0eWxlZEVsZW1l
bnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU3R5bGVkRWxlbWVudC5oCkBAIC0zOSwyMSAr
MzksMTQgQEAgcHVibGljOgogICAgIHZpcnR1YWwgflN0eWxlZEVsZW1lbnQoKTsKIAogICAgIHNp
emVfdCBtYXBwZWRBdHRyaWJ1dGVDb3VudCgpIGNvbnN0IHsgcmV0dXJuIGF0dHJpYnV0ZU1hcCgp
ID8gYXR0cmlidXRlTWFwKCktPm1hcHBlZEF0dHJpYnV0ZUNvdW50KCkgOiAwOyB9Ci0gICAgYm9v
bCBpc01hcHBlZEF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lKSBjb25zdCB7IE1h
cHBlZEF0dHJpYnV0ZUVudHJ5IHJlcyA9IGVOb25lOyBtYXBUb0VudHJ5KG5hbWUsIHJlcyk7IHJl
dHVybiByZXMgIT0gZU5vbmU7IH0KIAotICAgIHZvaWQgYWRkQ1NTTGVuZ3RoKEF0dHJpYnV0ZSos
IGludCBpZCwgY29uc3QgU3RyaW5nJiB2YWx1ZSk7Ci0gICAgdm9pZCBhZGRDU1NQcm9wZXJ0eShB
dHRyaWJ1dGUqLCBpbnQgaWQsIGNvbnN0IFN0cmluZyYgdmFsdWUpOwotICAgIHZvaWQgYWRkQ1NT
UHJvcGVydHkoQXR0cmlidXRlKiwgaW50IGlkLCBpbnQgdmFsdWUpOwotICAgIHZvaWQgYWRkQ1NT
SW1hZ2VQcm9wZXJ0eShBdHRyaWJ1dGUqLCBpbnQgcHJvcGVydHlJRCwgY29uc3QgU3RyaW5nJiB1
cmwpOwotICAgIHZvaWQgYWRkQ1NTQ29sb3IoQXR0cmlidXRlKiwgaW50IGlkLCBjb25zdCBTdHJp
bmcmIGNvbG9yKTsKLSAgICB2b2lkIHJlbW92ZUNTU1Byb3BlcnR5KEF0dHJpYnV0ZSosIGludCBp
ZCk7Ci0KLSAgICBzdGF0aWMgQ1NTTWFwcGVkQXR0cmlidXRlRGVjbGFyYXRpb24qIGdldE1hcHBl
ZEF0dHJpYnV0ZURlY2woTWFwcGVkQXR0cmlidXRlRW50cnksIGNvbnN0IFF1YWxpZmllZE5hbWUm
IG5hbWUsIGNvbnN0IEF0b21pY1N0cmluZyYgdmFsdWUpOwotICAgIHN0YXRpYyB2b2lkIHNldE1h
cHBlZEF0dHJpYnV0ZURlY2woTWFwcGVkQXR0cmlidXRlRW50cnksIGNvbnN0IFF1YWxpZmllZE5h
bWUmIG5hbWUsIGNvbnN0IEF0b21pY1N0cmluZyYgdmFsdWUsIENTU01hcHBlZEF0dHJpYnV0ZURl
Y2xhcmF0aW9uKik7Ci0gICAgc3RhdGljIHZvaWQgcmVtb3ZlTWFwcGVkQXR0cmlidXRlRGVjbChN
YXBwZWRBdHRyaWJ1dGVFbnRyeSwgY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRv
bWljU3RyaW5nJiB2YWx1ZSk7Ci0KLSAgICBzdGF0aWMgQ1NTTWFwcGVkQXR0cmlidXRlRGVjbGFy
YXRpb24qIGdldE1hcHBlZEF0dHJpYnV0ZURlY2woTWFwcGVkQXR0cmlidXRlRW50cnksIEF0dHJp
YnV0ZSopOwotICAgIHN0YXRpYyB2b2lkIHNldE1hcHBlZEF0dHJpYnV0ZURlY2woTWFwcGVkQXR0
cmlidXRlRW50cnksIEF0dHJpYnV0ZSosIENTU01hcHBlZEF0dHJpYnV0ZURlY2xhcmF0aW9uKik7
CisgICAgdm9pZCBhZGRDU1NMZW5ndGgoaW50IGlkLCBjb25zdCBTdHJpbmcmIHZhbHVlKTsKKyAg
ICB2b2lkIGFkZENTU1Byb3BlcnR5KGludCBpZCwgY29uc3QgU3RyaW5nJiB2YWx1ZSk7CisgICAg
dm9pZCBhZGRDU1NQcm9wZXJ0eShpbnQgaWQsIGludCB2YWx1ZSk7CisgICAgdm9pZCBhZGRDU1NJ
bWFnZVByb3BlcnR5KGludCBwcm9wZXJ0eUlELCBjb25zdCBTdHJpbmcmIHVybCk7CisgICAgdm9p
ZCBhZGRDU1NDb2xvcihpbnQgaWQsIGNvbnN0IFN0cmluZyYgY29sb3IpOworICAgIHZvaWQgcmVt
b3ZlQ1NTUHJvcGVydGllcyhpbnQgaWQxLCBpbnQgaWQyID0gQ1NTUHJvcGVydHlJbnZhbGlkLCBp
bnQgaWQzID0gQ1NTUHJvcGVydHlJbnZhbGlkLCBpbnQgaWQ0ID0gQ1NTUHJvcGVydHlJbnZhbGlk
LCBpbnQgaWQ1ID0gQ1NTUHJvcGVydHlJbnZhbGlkLCBpbnQgaWQ2ID0gQ1NTUHJvcGVydHlJbnZh
bGlkLCBpbnQgaWQ3ID0gQ1NTUHJvcGVydHlJbnZhbGlkLCBpbnQgaWQ4ID0gQ1NTUHJvcGVydHlJ
bnZhbGlkKTsKKyAgICB2b2lkIHJlbW92ZUNTU1Byb3BlcnR5KGludCBpZCkgeyByZW1vdmVDU1NQ
cm9wZXJ0aWVzKGlkKTsgfQogCiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPFN0eWxlUHJvcGVydHlT
ZXQ+IGFkZGl0aW9uYWxBdHRyaWJ1dGVTdHlsZSgpIHsgcmV0dXJuIDA7IH0KICAgICB2b2lkIGlu
dmFsaWRhdGVTdHlsZUF0dHJpYnV0ZSgpOwpAQCAtNjIsOSArNTUsMTAgQEAgcHVibGljOgogICAg
IFN0eWxlUHJvcGVydHlTZXQqIGVuc3VyZUlubGluZVN0eWxlRGVjbCgpIHsgcmV0dXJuIGVuc3Vy
ZUF0dHJpYnV0ZU1hcCgpLT5lbnN1cmVJbmxpbmVTdHlsZURlY2woKTsgfQogICAgIHZpcnR1YWwg
Q1NTU3R5bGVEZWNsYXJhdGlvbiogc3R5bGUoKSBPVkVSUklERSB7IHJldHVybiBlbnN1cmVJbmxp
bmVTdHlsZURlY2woKS0+ZW5zdXJlQ1NTU3R5bGVEZWNsYXJhdGlvbigpOyB9CiAKLSAgICBjb25z
dCBTcGFjZVNwbGl0U3RyaW5nJiBjbGFzc05hbWVzKCkgY29uc3Q7CisgICAgQ1NTTWFwcGVkQXR0
cmlidXRlRGVjbGFyYXRpb24qIGF0dHJpYnV0ZVN0eWxlKCkgY29uc3QgeyByZXR1cm4gYXR0cmli
dXRlTWFwKCkgPyBhdHRyaWJ1dGVNYXAoKS0+YXR0cmlidXRlU3R5bGUoKSA6IDA7IH0KKyAgICBD
U1NNYXBwZWRBdHRyaWJ1dGVEZWNsYXJhdGlvbiogZW5zdXJlQXR0cmlidXRlU3R5bGUoKSB7IHJl
dHVybiBlbnN1cmVBdHRyaWJ1dGVNYXAoKS0+ZW5zdXJlQXR0cmlidXRlU3R5bGUoKTsgfQogCi0g
ICAgdmlydHVhbCBib29sIG1hcFRvRW50cnkoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUs
IE1hcHBlZEF0dHJpYnV0ZUVudHJ5JiByZXN1bHQpIGNvbnN0OworICAgIGNvbnN0IFNwYWNlU3Bs
aXRTdHJpbmcmIGNsYXNzTmFtZXMoKSBjb25zdDsKIAogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxB
dHRyaWJ1dGU+IGNyZWF0ZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3QgQXRv
bWljU3RyaW5nJiB2YWx1ZSk7CiAKQEAgLTg2LDggKzgwLDYgQEAgcHJvdGVjdGVkOgogICAgIHZv
aWQgY2xhc3NBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IEF0b21pY1N0cmluZyYgbmV3Q2xhc3NTdHJp
bmcpOwogCiBwcml2YXRlOgotICAgIHZvaWQgY3JlYXRlTWFwcGVkRGVjbChBdHRyaWJ1dGUqKTsK
LQogICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVTdHlsZUF0dHJpYnV0ZSgpIGNvbnN0OwogCiAgICAg
dm9pZCBkZXN0cm95SW5saW5lU3R5bGVEZWNsKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTEJSRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxCUkVsZW1l
bnQuY3BwCmluZGV4IDI2MzkwNjAuLjEwNDQ0MTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTEJSRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQlJF
bGVtZW50LmNwcApAQCAtNDgsMjcgKzQ4LDE4IEBAIFBhc3NSZWZQdHI8SFRNTEJSRWxlbWVudD4g
SFRNTEJSRWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvCiAg
ICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBIVE1MQlJFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KSk7
CiB9CiAKLWJvb2wgSFRNTEJSRWxlbWVudDo6bWFwVG9FbnRyeShjb25zdCBRdWFsaWZpZWROYW1l
JiBhdHRyTmFtZSwgTWFwcGVkQXR0cmlidXRlRW50cnkmIHJlc3VsdCkgY29uc3QKLXsKLSAgICBp
ZiAoYXR0ck5hbWUgPT0gY2xlYXJBdHRyKSB7Ci0gICAgICAgIHJlc3VsdCA9IGVVbml2ZXJzYWw7
Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0gICAgCi0gICAgcmV0dXJuIEhUTUxFbGVt
ZW50OjptYXBUb0VudHJ5KGF0dHJOYW1lLCByZXN1bHQpOwotfQotCiB2b2lkIEhUTUxCUkVsZW1l
bnQ6OnBhcnNlTWFwcGVkQXR0cmlidXRlKEF0dHJpYnV0ZSogYXR0cikKIHsKICAgICBpZiAoYXR0
ci0+bmFtZSgpID09IGNsZWFyQXR0cikgewogICAgICAgICAvLyBJZiB0aGUgc3RyaW5nIGlzIGVt
cHR5LCB0aGVuIGRvbid0IGFkZCB0aGUgY2xlYXIgcHJvcGVydHkuIAogICAgICAgICAvLyA8YnIg
Y2xlYXI+IGFuZCA8YnIgY2xlYXI9IiI+IGFyZSBqdXN0IHRyZWF0ZWQgbGlrZSA8YnI+IGJ5IEdl
Y2tvLCBNYWMgSUUsIGV0Yy4gLWR3aAotICAgICAgICBjb25zdCBBdG9taWNTdHJpbmcmIHN0ciA9
IGF0dHItPnZhbHVlKCk7Ci0gICAgICAgIGlmICghc3RyLmlzRW1wdHkoKSkgewotICAgICAgICAg
ICAgaWYgKGVxdWFsSWdub3JpbmdDYXNlKHN0ciwgImFsbCIpKQotICAgICAgICAgICAgICAgIGFk
ZENTU1Byb3BlcnR5KGF0dHIsIENTU1Byb3BlcnR5Q2xlYXIsICJib3RoIik7CisgICAgICAgIGlm
IChhdHRyLT52YWx1ZSgpLmlzTnVsbCgpKQorICAgICAgICAgICAgcmVtb3ZlQ1NTUHJvcGVydHko
Q1NTUHJvcGVydHlDbGVhcik7CisgICAgICAgIGVsc2UgaWYgKCFhdHRyLT52YWx1ZSgpLmlzRW1w
dHkoKSkgeworICAgICAgICAgICAgaWYgKGVxdWFsSWdub3JpbmdDYXNlKGF0dHItPnZhbHVlKCks
ICJhbGwiKSkKKyAgICAgICAgICAgICAgICBhZGRDU1NQcm9wZXJ0eShDU1NQcm9wZXJ0eUNsZWFy
LCAiYm90aCIpOwogICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIGFkZENTU1Byb3Bl
cnR5KGF0dHIsIENTU1Byb3BlcnR5Q2xlYXIsIHN0cik7CisgICAgICAgICAgICAgICAgYWRkQ1NT
UHJvcGVydHkoQ1NTUHJvcGVydHlDbGVhciwgYXR0ci0+dmFsdWUoKSk7CiAgICAgICAgIH0KICAg
ICB9IGVsc2UKICAgICAgICAgSFRNTEVsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmlidXRlKGF0dHIp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQlJFbGVtZW50LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxCUkVsZW1lbnQuaAppbmRleCAzODU3YTliLi41NzA1MzE1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxCUkVsZW1lbnQuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxCUkVsZW1lbnQuaApAQCAtMzgsNyArMzgsNiBAQCBwdWJsaWM6
CiBwcml2YXRlOgogICAgIEhUTUxCUkVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3Vt
ZW50Kik7CiAKLSAgICB2aXJ0dWFsIGJvb2wgbWFwVG9FbnRyeShjb25zdCBRdWFsaWZpZWROYW1l
JiwgTWFwcGVkQXR0cmlidXRlRW50cnkmKSBjb25zdDsKICAgICB2aXJ0dWFsIHZvaWQgcGFyc2VN
YXBwZWRBdHRyaWJ1dGUoQXR0cmlidXRlKik7CiAgICAgCiAgICAgdmlydHVhbCBSZW5kZXJPYmpl
Y3QqIGNyZWF0ZVJlbmRlcmVyKFJlbmRlckFyZW5hKiwgUmVuZGVyU3R5bGUqKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEJvZHlFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTEJvZHlFbGVtZW50LmNwcAppbmRleCA2NTU4ZDQ2Li5hZjU5MjhmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxCb2R5RWxlbWVudC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MQm9keUVsZW1lbnQuY3BwCkBAIC02MCw0NiArNjAsNDMgQEAg
SFRNTEJvZHlFbGVtZW50Ojp+SFRNTEJvZHlFbGVtZW50KCkKIHsKIH0KIAotYm9vbCBIVE1MQm9k
eUVsZW1lbnQ6Om1hcFRvRW50cnkoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUsIE1hcHBl
ZEF0dHJpYnV0ZUVudHJ5JiByZXN1bHQpIGNvbnN0Ci17Ci0gICAgaWYgKGF0dHJOYW1lID09IGJh
Y2tncm91bmRBdHRyKSB7Ci0gICAgICAgIHJlc3VsdCA9IChNYXBwZWRBdHRyaWJ1dGVFbnRyeSko
ZUxhc3RFbnRyeSArIGRvY3VtZW50KCktPmRvY0lEKCkpOwotICAgICAgICByZXR1cm4gZmFsc2U7
Ci0gICAgfSAKLSAgICAKLSAgICBpZiAoYXR0ck5hbWUgPT0gYmdjb2xvckF0dHIgfHwKLSAgICAg
ICAgYXR0ck5hbWUgPT0gdGV4dEF0dHIgfHwKLSAgICAgICAgYXR0ck5hbWUgPT0gbWFyZ2lud2lk
dGhBdHRyIHx8Ci0gICAgICAgIGF0dHJOYW1lID09IGxlZnRtYXJnaW5BdHRyIHx8Ci0gICAgICAg
IGF0dHJOYW1lID09IG1hcmdpbmhlaWdodEF0dHIgfHwKLSAgICAgICAgYXR0ck5hbWUgPT0gdG9w
bWFyZ2luQXR0ciB8fAotICAgICAgICBhdHRyTmFtZSA9PSBiZ3Byb3BlcnRpZXNBdHRyKSB7Ci0g
ICAgICAgIHJlc3VsdCA9IGVVbml2ZXJzYWw7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9
Ci0KLSAgICByZXR1cm4gSFRNTEVsZW1lbnQ6Om1hcFRvRW50cnkoYXR0ck5hbWUsIHJlc3VsdCk7
Ci19Ci0KIHZvaWQgSFRNTEJvZHlFbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpYnV0ZShBdHRyaWJ1
dGUqIGF0dHIpCiB7CiAgICAgaWYgKGF0dHItPm5hbWUoKSA9PSBiYWNrZ3JvdW5kQXR0cikgewog
ICAgICAgICBTdHJpbmcgdXJsID0gc3RyaXBMZWFkaW5nQW5kVHJhaWxpbmdIVE1MU3BhY2VzKGF0
dHItPnZhbHVlKCkpOwogICAgICAgICBpZiAoIXVybC5pc0VtcHR5KCkpCi0gICAgICAgICAgICBh
ZGRDU1NJbWFnZVByb3BlcnR5KGF0dHIsIENTU1Byb3BlcnR5QmFja2dyb3VuZEltYWdlLCBkb2N1
bWVudCgpLT5jb21wbGV0ZVVSTCh1cmwpLnN0cmluZygpKTsKKyAgICAgICAgICAgIGFkZENTU0lt
YWdlUHJvcGVydHkoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kSW1hZ2UsIGRvY3VtZW50KCktPmNvbXBs
ZXRlVVJMKHVybCkuc3RyaW5nKCkpOworICAgICAgICBlbHNlCisgICAgICAgICAgICByZW1vdmVD
U1NQcm9wZXJ0eShDU1NQcm9wZXJ0eUJhY2tncm91bmRJbWFnZSk7CiAgICAgfSBlbHNlIGlmIChh
dHRyLT5uYW1lKCkgPT0gbWFyZ2lud2lkdGhBdHRyIHx8IGF0dHItPm5hbWUoKSA9PSBsZWZ0bWFy
Z2luQXR0cikgewotICAgICAgICBhZGRDU1NMZW5ndGgoYXR0ciwgQ1NTUHJvcGVydHlNYXJnaW5S
aWdodCwgYXR0ci0+dmFsdWUoKSk7Ci0gICAgICAgIGFkZENTU0xlbmd0aChhdHRyLCBDU1NQcm9w
ZXJ0eU1hcmdpbkxlZnQsIGF0dHItPnZhbHVlKCkpOworICAgICAgICBpZiAoYXR0ci0+dmFsdWUo
KS5pc051bGwoKSkKKyAgICAgICAgICAgIHJlbW92ZUNTU1Byb3BlcnRpZXMoQ1NTUHJvcGVydHlN
YXJnaW5SaWdodCwgQ1NTUHJvcGVydHlNYXJnaW5MZWZ0KTsKKyAgICAgICAgZWxzZSB7CisgICAg
ICAgICAgICBhZGRDU1NMZW5ndGgoQ1NTUHJvcGVydHlNYXJnaW5SaWdodCwgYXR0ci0+dmFsdWUo
KSk7CisgICAgICAgICAgICBhZGRDU1NMZW5ndGgoQ1NTUHJvcGVydHlNYXJnaW5MZWZ0LCBhdHRy
LT52YWx1ZSgpKTsKKyAgICAgICAgfQogICAgIH0gZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09IG1h
cmdpbmhlaWdodEF0dHIgfHwgYXR0ci0+bmFtZSgpID09IHRvcG1hcmdpbkF0dHIpIHsKLSAgICAg
ICAgYWRkQ1NTTGVuZ3RoKGF0dHIsIENTU1Byb3BlcnR5TWFyZ2luQm90dG9tLCBhdHRyLT52YWx1
ZSgpKTsKLSAgICAgICAgYWRkQ1NTTGVuZ3RoKGF0dHIsIENTU1Byb3BlcnR5TWFyZ2luVG9wLCBh
dHRyLT52YWx1ZSgpKTsKKyAgICAgICAgaWYgKGF0dHItPnZhbHVlKCkuaXNOdWxsKCkpCisgICAg
ICAgICAgICByZW1vdmVDU1NQcm9wZXJ0aWVzKENTU1Byb3BlcnR5TWFyZ2luQm90dG9tLCBDU1NQ
cm9wZXJ0eU1hcmdpblRvcCk7CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgYWRkQ1NTTGVu
Z3RoKENTU1Byb3BlcnR5TWFyZ2luQm90dG9tLCBhdHRyLT52YWx1ZSgpKTsKKyAgICAgICAgICAg
IGFkZENTU0xlbmd0aChDU1NQcm9wZXJ0eU1hcmdpblRvcCwgYXR0ci0+dmFsdWUoKSk7CisgICAg
ICAgIH0KICAgICB9IGVsc2UgaWYgKGF0dHItPm5hbWUoKSA9PSBiZ2NvbG9yQXR0cikgewotICAg
ICAgICBhZGRDU1NDb2xvcihhdHRyLCBDU1NQcm9wZXJ0eUJhY2tncm91bmRDb2xvciwgYXR0ci0+
dmFsdWUoKSk7CisgICAgICAgIGlmIChhdHRyLT52YWx1ZSgpLmlzTnVsbCgpKQorICAgICAgICAg
ICAgcmVtb3ZlQ1NTUHJvcGVydHkoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQ29sb3IpOworICAgICAg
ICBlbHNlCisgICAgICAgICAgICBhZGRDU1NDb2xvcihDU1NQcm9wZXJ0eUJhY2tncm91bmRDb2xv
ciwgYXR0ci0+dmFsdWUoKSk7CiAgICAgfSBlbHNlIGlmIChhdHRyLT5uYW1lKCkgPT0gdGV4dEF0
dHIpIHsKLSAgICAgICAgYWRkQ1NTQ29sb3IoYXR0ciwgQ1NTUHJvcGVydHlDb2xvciwgYXR0ci0+
dmFsdWUoKSk7CisgICAgICAgIGlmIChhdHRyLT52YWx1ZSgpLmlzTnVsbCgpKQorICAgICAgICAg
ICAgcmVtb3ZlQ1NTUHJvcGVydHkoQ1NTUHJvcGVydHlDb2xvcik7CisgICAgICAgIGVsc2UKKyAg
ICAgICAgICAgIGFkZENTU0NvbG9yKENTU1Byb3BlcnR5Q29sb3IsIGF0dHItPnZhbHVlKCkpOwog
ICAgIH0gZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09IGJncHJvcGVydGllc0F0dHIpIHsKICAgICAg
ICAgaWYgKGVxdWFsSWdub3JpbmdDYXNlKGF0dHItPnZhbHVlKCksICJmaXhlZCIpKQotICAgICAg
ICAgICAgYWRkQ1NTUHJvcGVydHkoYXR0ciwgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQXR0YWNobWVu
dCwgQ1NTVmFsdWVGaXhlZCk7CisgICAgICAgICAgICBhZGRDU1NQcm9wZXJ0eShDU1NQcm9wZXJ0
eUJhY2tncm91bmRBdHRhY2htZW50LCBDU1NWYWx1ZUZpeGVkKTsKKyAgICAgICAgZWxzZQorICAg
ICAgICAgICAgcmVtb3ZlQ1NTUHJvcGVydHkoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQXR0YWNobWVu
dCk7CiAgICAgfSBlbHNlIGlmIChhdHRyLT5uYW1lKCkgPT0gdmxpbmtBdHRyIHx8CiAgICAgICAg
ICAgICAgICBhdHRyLT5uYW1lKCkgPT0gYWxpbmtBdHRyIHx8CiAgICAgICAgICAgICAgICBhdHRy
LT5uYW1lKCkgPT0gbGlua0F0dHIpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTEJvZHlFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxCb2R5RWxlbWVudC5o
CmluZGV4IDVjNjMyNjQuLmViNTNhMjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTEJvZHlFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQm9keUVsZW1l
bnQuaApAQCAtNzAsNyArNzAsNiBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIEhUTUxCb2R5RWxl
bWVudChjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQqKTsKIAotICAgIHZpcnR1YWwgYm9v
bCBtYXBUb0VudHJ5KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBNYXBwZWRBdHRyaWJ1dGVFbnRyeSYp
IGNvbnN0OwogICAgIHZpcnR1YWwgdm9pZCBwYXJzZU1hcHBlZEF0dHJpYnV0ZShBdHRyaWJ1dGUq
KTsKIAogICAgIHZpcnR1YWwgdm9pZCBpbnNlcnRlZEludG9Eb2N1bWVudCgpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRGl2RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxEaXZFbGVtZW50LmNwcAppbmRleCAyM2U2NTg1Li4wNDc3NjQ2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxEaXZFbGVtZW50LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxEaXZFbGVtZW50LmNwcApAQCAtNDgsMjYgKzQ4LDE5IEBAIFBhc3NS
ZWZQdHI8SFRNTERpdkVsZW1lbnQ+IEhUTUxEaXZFbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlm
aWVkTmFtZSYgdGFnTmFtZSwKICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEhUTUxEaXZFbGVtZW50
KHRhZ05hbWUsIGRvY3VtZW50KSk7CiB9CiAKLWJvb2wgSFRNTERpdkVsZW1lbnQ6Om1hcFRvRW50
cnkoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUsIE1hcHBlZEF0dHJpYnV0ZUVudHJ5JiBy
ZXN1bHQpIGNvbnN0Ci17Ci0gICAgaWYgKGF0dHJOYW1lID09IGFsaWduQXR0cikgewotICAgICAg
ICByZXN1bHQgPSBlQmxvY2s7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0gICAgcmV0
dXJuIEhUTUxFbGVtZW50OjptYXBUb0VudHJ5KGF0dHJOYW1lLCByZXN1bHQpOwotfQotCiB2b2lk
IEhUTUxEaXZFbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpYnV0ZShBdHRyaWJ1dGUqIGF0dHIpCiB7
CiAgICAgaWYgKGF0dHItPm5hbWUoKSA9PSBhbGlnbkF0dHIpIHsKKyAgICAgICAgaWYgKGF0dHIt
PnZhbHVlKCkuaXNOdWxsKCkpCisgICAgICAgICAgICByZW1vdmVDU1NQcm9wZXJ0eShDU1NQcm9w
ZXJ0eVRleHRBbGlnbik7CiAgICAgICAgIGlmIChlcXVhbElnbm9yaW5nQ2FzZShhdHRyLT52YWx1
ZSgpLCAibWlkZGxlIikgfHwgZXF1YWxJZ25vcmluZ0Nhc2UoYXR0ci0+dmFsdWUoKSwgImNlbnRl
ciIpKQotICAgICAgICAgICBhZGRDU1NQcm9wZXJ0eShhdHRyLCBDU1NQcm9wZXJ0eVRleHRBbGln
biwgQ1NTVmFsdWVXZWJraXRDZW50ZXIpOworICAgICAgICAgICBhZGRDU1NQcm9wZXJ0eShDU1NQ
cm9wZXJ0eVRleHRBbGlnbiwgQ1NTVmFsdWVXZWJraXRDZW50ZXIpOwogICAgICAgICBlbHNlIGlm
IChlcXVhbElnbm9yaW5nQ2FzZShhdHRyLT52YWx1ZSgpLCAibGVmdCIpKQotICAgICAgICAgICAg
YWRkQ1NTUHJvcGVydHkoYXR0ciwgQ1NTUHJvcGVydHlUZXh0QWxpZ24sIENTU1ZhbHVlV2Via2l0
TGVmdCk7CisgICAgICAgICAgICBhZGRDU1NQcm9wZXJ0eShDU1NQcm9wZXJ0eVRleHRBbGlnbiwg
Q1NTVmFsdWVXZWJraXRMZWZ0KTsKICAgICAgICAgZWxzZSBpZiAoZXF1YWxJZ25vcmluZ0Nhc2Uo
YXR0ci0+dmFsdWUoKSwgInJpZ2h0IikpCi0gICAgICAgICAgICBhZGRDU1NQcm9wZXJ0eShhdHRy
LCBDU1NQcm9wZXJ0eVRleHRBbGlnbiwgQ1NTVmFsdWVXZWJraXRSaWdodCk7CisgICAgICAgICAg
ICBhZGRDU1NQcm9wZXJ0eShDU1NQcm9wZXJ0eVRleHRBbGlnbiwgQ1NTVmFsdWVXZWJraXRSaWdo
dCk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIGFkZENTU1Byb3BlcnR5KGF0dHIsIENTU1By
b3BlcnR5VGV4dEFsaWduLCBhdHRyLT52YWx1ZSgpKTsKKyAgICAgICAgICAgIGFkZENTU1Byb3Bl
cnR5KENTU1Byb3BlcnR5VGV4dEFsaWduLCBhdHRyLT52YWx1ZSgpKTsKICAgICB9IGVsc2UKICAg
ICAgICAgSFRNTEVsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmlidXRlKGF0dHIpOwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRGl2RWxlbWVudC5oIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MRGl2RWxlbWVudC5oCmluZGV4IDJlMmI0MTcuLjdiYjVmMjEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTERpdkVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxEaXZFbGVtZW50LmgKQEAgLTM2LDcgKzM2LDYgQEAgcHJvdGVjdGVkOgog
ICAgIEhUTUxEaXZFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCopOwogCiBw
cml2YXRlOgotICAgIHZpcnR1YWwgYm9vbCBtYXBUb0VudHJ5KGNvbnN0IFF1YWxpZmllZE5hbWUm
LCBNYXBwZWRBdHRyaWJ1dGVFbnRyeSYpIGNvbnN0OwogICAgIHZpcnR1YWwgdm9pZCBwYXJzZU1h
cHBlZEF0dHJpYnV0ZShBdHRyaWJ1dGUqKTsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRWxlbWVu
dC5jcHAKaW5kZXggOGVjYmM0Ni4uNGVjMWUzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRWxlbWVu
dC5jcHAKQEAgLTEyMCwyNyArMTIwLDYgQEAgYm9vbCBIVE1MRWxlbWVudDo6aWVGb3JiaWRzSW5z
ZXJ0SFRNTCgpIGNvbnN0CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1ib29sIEhUTUxFbGVtZW50
OjptYXBUb0VudHJ5KGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lLCBNYXBwZWRBdHRyaWJ1
dGVFbnRyeSYgcmVzdWx0KSBjb25zdAotewotICAgIGlmIChhdHRyTmFtZSA9PSBhbGlnbkF0dHIK
LSAgICAgICAgfHwgYXR0ck5hbWUgPT0gY29udGVudGVkaXRhYmxlQXR0cgotICAgICAgICB8fCBh
dHRyTmFtZSA9PSBoaWRkZW5BdHRyKSB7Ci0gICAgICAgIHJlc3VsdCA9IGVVbml2ZXJzYWw7Ci0g
ICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0gICAgaWYgKGF0dHJOYW1lID09IGRpckF0dHIp
IHsKLSAgICAgICAgaWYgKGhhc0xvY2FsTmFtZShiZG9UYWcpKQotICAgICAgICAgICAgcmVzdWx0
ID0gZUJETzsKLSAgICAgICAgZWxzZSBpZiAoaGFzTG9jYWxOYW1lKGJkaVRhZykpCi0gICAgICAg
ICAgICByZXN1bHQgPSBlQkRJOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICByZXN1bHQgPSBl
VW5pdmVyc2FsOwotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0KLSAgICByZXR1cm4gU3R5
bGVkRWxlbWVudDo6bWFwVG9FbnRyeShhdHRyTmFtZSwgcmVzdWx0KTsKLX0KLQogc3RhdGljIGlu
bGluZSBpbnQgdW5pY29kZUJpZGlBdHRyaWJ1dGVGb3JEaXJBdXRvKEhUTUxFbGVtZW50KiBlbGVt
ZW50KQogewogICAgIGlmIChlbGVtZW50LT5oYXNMb2NhbE5hbWUocHJlVGFnKSB8fCBlbGVtZW50
LT5oYXNMb2NhbE5hbWUodGV4dGFyZWFUYWcpKQpAQCAtMTYzLDIzICsxNDIsMjUgQEAgc3RhdGlj
IHVuc2lnbmVkIHBhcnNlQm9yZGVyV2lkdGhBdHRyaWJ1dGUoQXR0cmlidXRlKiBhdHRyKQogCiB2
b2lkIEhUTUxFbGVtZW50OjphcHBseUJvcmRlckF0dHJpYnV0ZShBdHRyaWJ1dGUqIGF0dHIpCiB7
Ci0gICAgYWRkQ1NTTGVuZ3RoKGF0dHIsIENTU1Byb3BlcnR5Qm9yZGVyV2lkdGgsIFN0cmluZzo6
bnVtYmVyKHBhcnNlQm9yZGVyV2lkdGhBdHRyaWJ1dGUoYXR0cikpKTsKLSAgICBhZGRDU1NQcm9w
ZXJ0eShhdHRyLCBDU1NQcm9wZXJ0eUJvcmRlclRvcFN0eWxlLCBDU1NWYWx1ZVNvbGlkKTsKLSAg
ICBhZGRDU1NQcm9wZXJ0eShhdHRyLCBDU1NQcm9wZXJ0eUJvcmRlclJpZ2h0U3R5bGUsIENTU1Zh
bHVlU29saWQpOwotICAgIGFkZENTU1Byb3BlcnR5KGF0dHIsIENTU1Byb3BlcnR5Qm9yZGVyQm90
dG9tU3R5bGUsIENTU1ZhbHVlU29saWQpOwotICAgIGFkZENTU1Byb3BlcnR5KGF0dHIsIENTU1By
b3BlcnR5Qm9yZGVyTGVmdFN0eWxlLCBDU1NWYWx1ZVNvbGlkKTsKKyAgICBhZGRDU1NMZW5ndGgo
Q1NTUHJvcGVydHlCb3JkZXJXaWR0aCwgU3RyaW5nOjpudW1iZXIocGFyc2VCb3JkZXJXaWR0aEF0
dHJpYnV0ZShhdHRyKSkpOworICAgIGFkZENTU1Byb3BlcnR5KENTU1Byb3BlcnR5Qm9yZGVyVG9w
U3R5bGUsIENTU1ZhbHVlU29saWQpOworICAgIGFkZENTU1Byb3BlcnR5KENTU1Byb3BlcnR5Qm9y
ZGVyUmlnaHRTdHlsZSwgQ1NTVmFsdWVTb2xpZCk7CisgICAgYWRkQ1NTUHJvcGVydHkoQ1NTUHJv
cGVydHlCb3JkZXJCb3R0b21TdHlsZSwgQ1NTVmFsdWVTb2xpZCk7CisgICAgYWRkQ1NTUHJvcGVy
dHkoQ1NTUHJvcGVydHlCb3JkZXJMZWZ0U3R5bGUsIENTU1ZhbHVlU29saWQpOwogfQogCiB2b2lk
IEhUTUxFbGVtZW50OjptYXBMYW5ndWFnZUF0dHJpYnV0ZVRvTG9jYWxlKEF0dHJpYnV0ZSogYXR0
cmlidXRlKQogewogICAgIEFTU0VSVChhdHRyaWJ1dGUgJiYgKGF0dHJpYnV0ZS0+bmFtZSgpID09
IGxhbmdBdHRyIHx8IGF0dHJpYnV0ZS0+bmFtZSgpLm1hdGNoZXMoWE1MTmFtZXM6OmxhbmdBdHRy
KSkpOwogICAgIGNvbnN0IEF0b21pY1N0cmluZyYgdmFsdWUgPSBhdHRyaWJ1dGUtPnZhbHVlKCk7
Ci0gICAgaWYgKCF2YWx1ZS5pc0VtcHR5KCkpIHsKKyAgICBpZiAodmFsdWUuaXNOdWxsKCkpCisg
ICAgICAgIHJlbW92ZUNTU1Byb3BlcnR5KENTU1Byb3BlcnR5V2Via2l0TG9jYWxlKTsKKyAgICBl
bHNlIGlmICghdmFsdWUuaXNFbXB0eSgpKSB7CiAgICAgICAgIC8vIEhhdmUgdG8gcXVvdGUgc28g
dGhlIGxvY2FsZSBpZCBpcyB0cmVhdGVkIGFzIGEgc3RyaW5nIGluc3RlYWQgb2YgYXMgYSBDU1Mg
a2V5d29yZC4KLSAgICAgICAgYWRkQ1NTUHJvcGVydHkoYXR0cmlidXRlLCBDU1NQcm9wZXJ0eVdl
YmtpdExvY2FsZSwgcXVvdGVDU1NTdHJpbmcodmFsdWUpKTsKKyAgICAgICAgYWRkQ1NTUHJvcGVy
dHkoQ1NTUHJvcGVydHlXZWJraXRMb2NhbGUsIHF1b3RlQ1NTU3RyaW5nKHZhbHVlKSk7CiAgICAg
fSBlbHNlIHsKICAgICAgICAgLy8gVGhlIGVtcHR5IHN0cmluZyBtZWFucyB0aGUgbGFuZ3VhZ2Ug
aXMgZXhwbGljaXRseSB1bmtub3duLgotICAgICAgICBhZGRDU1NQcm9wZXJ0eShhdHRyaWJ1dGUs
IENTU1Byb3BlcnR5V2Via2l0TG9jYWxlLCBDU1NWYWx1ZUF1dG8pOworICAgICAgICBhZGRDU1NQ
cm9wZXJ0eShDU1NQcm9wZXJ0eVdlYmtpdExvY2FsZSwgQ1NTVmFsdWVBdXRvKTsKICAgICB9CiAg
ICAgc2V0TmVlZHNTdHlsZVJlY2FsYygpOwogfQpAQCAtMTkwLDE0ICsxNzEsMTkgQEAgdm9pZCBI
VE1MRWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUoQXR0cmlidXRlKiBhdHRyKQogICAgICAg
ICByZXR1cm4gU3R5bGVkRWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUoYXR0cik7CiAKICAg
ICBpZiAoYXR0ci0+bmFtZSgpID09IGFsaWduQXR0cikgewotICAgICAgICBpZiAoZXF1YWxJZ25v
cmluZ0Nhc2UoYXR0ci0+dmFsdWUoKSwgIm1pZGRsZSIpKQotICAgICAgICAgICAgYWRkQ1NTUHJv
cGVydHkoYXR0ciwgQ1NTUHJvcGVydHlUZXh0QWxpZ24sICJjZW50ZXIiKTsKKyAgICAgICAgaWYg
KGF0dHItPmlzTnVsbCgpKQorICAgICAgICAgICAgcmVtb3ZlQ1NTUHJvcGVydHkoQ1NTUHJvcGVy
dHlUZXh0QWxpZ24pOworICAgICAgICBlbHNlIGlmIChlcXVhbElnbm9yaW5nQ2FzZShhdHRyLT52
YWx1ZSgpLCAibWlkZGxlIikpCisgICAgICAgICAgICBhZGRDU1NQcm9wZXJ0eShDU1NQcm9wZXJ0
eVRleHRBbGlnbiwgImNlbnRlciIpOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBhZGRDU1NQ
cm9wZXJ0eShhdHRyLCBDU1NQcm9wZXJ0eVRleHRBbGlnbiwgYXR0ci0+dmFsdWUoKSk7CisgICAg
ICAgICAgICBhZGRDU1NQcm9wZXJ0eShDU1NQcm9wZXJ0eVRleHRBbGlnbiwgYXR0ci0+dmFsdWUo
KSk7CiAgICAgfSBlbHNlIGlmIChhdHRyLT5uYW1lKCkgPT0gY29udGVudGVkaXRhYmxlQXR0cikg
ewogICAgICAgICBzZXRDb250ZW50RWRpdGFibGUoYXR0cik7CiAgICAgfSBlbHNlIGlmIChhdHRy
LT5uYW1lKCkgPT0gaGlkZGVuQXR0cikgewotICAgICAgICBhZGRDU1NQcm9wZXJ0eShhdHRyLCBD
U1NQcm9wZXJ0eURpc3BsYXksIENTU1ZhbHVlTm9uZSk7CisgICAgICAgIGlmIChhdHRyLT5pc051
bGwoKSkKKyAgICAgICAgICAgIHJlbW92ZUNTU1Byb3BlcnR5KENTU1Byb3BlcnR5RGlzcGxheSk7
CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGFkZENTU1Byb3BlcnR5KENTU1Byb3BlcnR5RGlz
cGxheSwgQ1NTVmFsdWVOb25lKTsKICAgICB9IGVsc2UgaWYgKGF0dHItPm5hbWUoKSA9PSB0YWJp
bmRleEF0dHIpIHsKICAgICAgICAgaW50IHRhYmluZGV4ID0gMDsKICAgICAgICAgaWYgKGF0dHIt
PmlzRW1wdHkoKSkKQEAgLTIxMywyMSArMTk5LDMzIEBAIHZvaWQgSFRNTEVsZW1lbnQ6OnBhcnNl
TWFwcGVkQXR0cmlidXRlKEF0dHJpYnV0ZSogYXR0cikKICAgICAgICAgaWYgKCFmYXN0SGFzQXR0
cmlidXRlKFhNTE5hbWVzOjpsYW5nQXR0cikpCiAgICAgICAgICAgICBtYXBMYW5ndWFnZUF0dHJp
YnV0ZVRvTG9jYWxlKGF0dHIpOwogICAgIH0gZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09IGRpckF0
dHIpIHsKLSAgICAgICAgYm9vbCBkaXJJc0F1dG8gPSBlcXVhbElnbm9yaW5nQ2FzZShhdHRyLT52
YWx1ZSgpLCAiYXV0byIpOwotICAgICAgICBpZiAoIWRpcklzQXV0bykKLSAgICAgICAgICAgIGFk
ZENTU1Byb3BlcnR5KGF0dHIsIENTU1Byb3BlcnR5RGlyZWN0aW9uLCBhdHRyLT52YWx1ZSgpKTsK
LSAgICAgICAgZGlyQXR0cmlidXRlQ2hhbmdlZChhdHRyKTsKLSAgICAgICAgaWYgKGRpcklzQXV0
bykKLSAgICAgICAgICAgIGFkZENTU1Byb3BlcnR5KGF0dHIsIENTU1Byb3BlcnR5VW5pY29kZUJp
ZGksIHVuaWNvZGVCaWRpQXR0cmlidXRlRm9yRGlyQXV0byh0aGlzKSk7Ci0gICAgICAgIGVsc2Ug
aWYgKCFoYXNUYWdOYW1lKGJkaVRhZykgJiYgIWhhc1RhZ05hbWUoYmRvVGFnKSAmJiAhaGFzVGFn
TmFtZShvdXRwdXRUYWcpKQotICAgICAgICAgICAgYWRkQ1NTUHJvcGVydHkoYXR0ciwgQ1NTUHJv
cGVydHlVbmljb2RlQmlkaSwgQ1NTVmFsdWVFbWJlZCk7CisgICAgICAgIGlmIChhdHRyLT5pc051
bGwoKSkKKyAgICAgICAgICAgIHJlbW92ZUNTU1Byb3BlcnRpZXMoQ1NTUHJvcGVydHlEaXJlY3Rp
b24sIENTU1Byb3BlcnR5VW5pY29kZUJpZGkpOworICAgICAgICBlbHNlIHsKKyAgICAgICAgICAg
IGJvb2wgZGlySXNBdXRvID0gZXF1YWxJZ25vcmluZ0Nhc2UoYXR0ci0+dmFsdWUoKSwgImF1dG8i
KTsKKyAgICAgICAgICAgIGlmICghZGlySXNBdXRvKQorICAgICAgICAgICAgICAgIGFkZENTU1By
b3BlcnR5KENTU1Byb3BlcnR5RGlyZWN0aW9uLCBhdHRyLT52YWx1ZSgpKTsKKyAgICAgICAgICAg
IGVsc2UKKyAgICAgICAgICAgICAgICByZW1vdmVDU1NQcm9wZXJ0eShDU1NQcm9wZXJ0eURpcmVj
dGlvbik7CisKKyAgICAgICAgICAgIGRpckF0dHJpYnV0ZUNoYW5nZWQoYXR0cik7CisgICAgICAg
ICAgICBpZiAoZGlySXNBdXRvKQorICAgICAgICAgICAgICAgIGFkZENTU1Byb3BlcnR5KENTU1By
b3BlcnR5VW5pY29kZUJpZGksIHVuaWNvZGVCaWRpQXR0cmlidXRlRm9yRGlyQXV0byh0aGlzKSk7
CisgICAgICAgICAgICBlbHNlIGlmICghaGFzVGFnTmFtZShiZGlUYWcpICYmICFoYXNUYWdOYW1l
KGJkb1RhZykgJiYgIWhhc1RhZ05hbWUob3V0cHV0VGFnKSkKKyAgICAgICAgICAgICAgICBhZGRD
U1NQcm9wZXJ0eShDU1NQcm9wZXJ0eVVuaWNvZGVCaWRpLCBDU1NWYWx1ZUVtYmVkKTsKKyAgICAg
ICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICByZW1vdmVDU1NQcm9wZXJ0eShDU1NQcm9wZXJ0
eVVuaWNvZGVCaWRpKTsKKyAgICAgICAgfQogICAgIH0gZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09
IGRyYWdnYWJsZUF0dHIpIHsKICAgICAgICAgY29uc3QgQXRvbWljU3RyaW5nJiB2YWx1ZSA9IGF0
dHItPnZhbHVlKCk7CiAgICAgICAgIGlmIChlcXVhbElnbm9yaW5nQ2FzZSh2YWx1ZSwgInRydWUi
KSkgewotICAgICAgICAgICAgYWRkQ1NTUHJvcGVydHkoYXR0ciwgQ1NTUHJvcGVydHlXZWJraXRV
c2VyRHJhZywgQ1NTVmFsdWVFbGVtZW50KTsKLSAgICAgICAgICAgIGFkZENTU1Byb3BlcnR5KGF0
dHIsIENTU1Byb3BlcnR5V2Via2l0VXNlclNlbGVjdCwgQ1NTVmFsdWVOb25lKTsKLSAgICAgICAg
fSBlbHNlIGlmIChlcXVhbElnbm9yaW5nQ2FzZSh2YWx1ZSwgImZhbHNlIikpCi0gICAgICAgICAg
ICBhZGRDU1NQcm9wZXJ0eShhdHRyLCBDU1NQcm9wZXJ0eVdlYmtpdFVzZXJEcmFnLCBDU1NWYWx1
ZU5vbmUpOworICAgICAgICAgICAgYWRkQ1NTUHJvcGVydHkoQ1NTUHJvcGVydHlXZWJraXRVc2Vy
RHJhZywgQ1NTVmFsdWVFbGVtZW50KTsKKyAgICAgICAgICAgIGFkZENTU1Byb3BlcnR5KENTU1By
b3BlcnR5V2Via2l0VXNlclNlbGVjdCwgQ1NTVmFsdWVOb25lKTsKKyAgICAgICAgfSBlbHNlIGlm
IChlcXVhbElnbm9yaW5nQ2FzZSh2YWx1ZSwgImZhbHNlIikpIHsKKyAgICAgICAgICAgIGFkZENT
U1Byb3BlcnR5KENTU1Byb3BlcnR5V2Via2l0VXNlckRyYWcsIENTU1ZhbHVlTm9uZSk7CisgICAg
ICAgICAgICByZW1vdmVDU1NQcm9wZXJ0eShDU1NQcm9wZXJ0eVdlYmtpdFVzZXJTZWxlY3QpOwor
ICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIHJlbW92ZUNTU1Byb3BlcnRpZXMoQ1NTUHJvcGVy
dHlXZWJraXRVc2VyRHJhZywgQ1NTUHJvcGVydHlXZWJraXRVc2VyU2VsZWN0KTsKICNpZiBFTkFC
TEUoTUlDUk9EQVRBKQogICAgIH0gZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09IGl0ZW1wcm9wQXR0
cikgewogICAgICAgICBzZXRJdGVtUHJvcChhdHRyLT52YWx1ZSgpKTsKQEAgLTY4NSw2ICs2ODMs
MTEgQEAgdm9pZCBIVE1MRWxlbWVudDo6YWRkSFRNTEFsaWdubWVudChBdHRyaWJ1dGUqIGF0dHIp
CiAgICAgYWRkSFRNTEFsaWdubWVudFRvU3R5bGVkRWxlbWVudCh0aGlzLCBhdHRyKTsKIH0KIAor
dm9pZCBIVE1MRWxlbWVudDo6cmVtb3ZlSFRNTEFsaWdubWVudCgpCit7CisgICAgcmVtb3ZlQ1NT
UHJvcGVydGllcyhDU1NQcm9wZXJ0eUZsb2F0LCBDU1NQcm9wZXJ0eVZlcnRpY2FsQWxpZ24pOwor
fQorCiB2b2lkIEhUTUxFbGVtZW50OjphZGRIVE1MQWxpZ25tZW50VG9TdHlsZWRFbGVtZW50KFN0
eWxlZEVsZW1lbnQqIGVsZW1lbnQsIEF0dHJpYnV0ZSogYXR0cikKIHsKICAgICAvLyBWZXJ0aWNh
bCBhbGlnbm1lbnQgd2l0aCByZXNwZWN0IHRvIHRoZSBjdXJyZW50IGJhc2VsaW5lIG9mIHRoZSB0
ZXh0CkBAIC03MTUsMTAgKzcxOCwxNCBAQCB2b2lkIEhUTUxFbGVtZW50OjphZGRIVE1MQWxpZ25t
ZW50VG9TdHlsZWRFbGVtZW50KFN0eWxlZEVsZW1lbnQqIGVsZW1lbnQsIEF0dHJpYgogICAgICAg
ICB2ZXJ0aWNhbEFsaWduVmFsdWUgPSBDU1NWYWx1ZVRleHRUb3A7CiAKICAgICBpZiAoZmxvYXRW
YWx1ZSAhPSBDU1NWYWx1ZUludmFsaWQpCi0gICAgICAgIGVsZW1lbnQtPmFkZENTU1Byb3BlcnR5
KGF0dHIsIENTU1Byb3BlcnR5RmxvYXQsIGZsb2F0VmFsdWUpOworICAgICAgICBlbGVtZW50LT5h
ZGRDU1NQcm9wZXJ0eShDU1NQcm9wZXJ0eUZsb2F0LCBmbG9hdFZhbHVlKTsKKyAgICBlbHNlCisg
ICAgICAgIGVsZW1lbnQtPnJlbW92ZUNTU1Byb3BlcnR5KENTU1Byb3BlcnR5RmxvYXQpOwogCiAg
ICAgaWYgKHZlcnRpY2FsQWxpZ25WYWx1ZSAhPSBDU1NWYWx1ZUludmFsaWQpCi0gICAgICAgIGVs
ZW1lbnQtPmFkZENTU1Byb3BlcnR5KGF0dHIsIENTU1Byb3BlcnR5VmVydGljYWxBbGlnbiwgdmVy
dGljYWxBbGlnblZhbHVlKTsKKyAgICAgICAgZWxlbWVudC0+YWRkQ1NTUHJvcGVydHkoQ1NTUHJv
cGVydHlWZXJ0aWNhbEFsaWduLCB2ZXJ0aWNhbEFsaWduVmFsdWUpOworICAgIGVsc2UKKyAgICAg
ICAgZWxlbWVudC0+cmVtb3ZlQ1NTUHJvcGVydHkoQ1NTUHJvcGVydHlWZXJ0aWNhbEFsaWduKTsK
IH0KIAogYm9vbCBIVE1MRWxlbWVudDo6c3VwcG9ydHNGb2N1cygpIGNvbnN0CkBAIC03NDUsMjEg
Kzc1MiwyMSBAQCBTdHJpbmcgSFRNTEVsZW1lbnQ6OmNvbnRlbnRFZGl0YWJsZSgpIGNvbnN0CiB2
b2lkIEhUTUxFbGVtZW50OjpzZXRDb250ZW50RWRpdGFibGUoQXR0cmlidXRlKiBhdHRyKSAKIHsK
ICAgICBjb25zdCBBdG9taWNTdHJpbmcmIGVuYWJsZWQgPSBhdHRyLT52YWx1ZSgpOwotICAgIGlm
IChlbmFibGVkLmlzRW1wdHkoKSB8fCBlcXVhbElnbm9yaW5nQ2FzZShlbmFibGVkLCAidHJ1ZSIp
KSB7Ci0gICAgICAgIGFkZENTU1Byb3BlcnR5KGF0dHIsIENTU1Byb3BlcnR5V2Via2l0VXNlck1v
ZGlmeSwgQ1NTVmFsdWVSZWFkV3JpdGUpOwotICAgICAgICBhZGRDU1NQcm9wZXJ0eShhdHRyLCBD
U1NQcm9wZXJ0eVdvcmRXcmFwLCBDU1NWYWx1ZUJyZWFrV29yZCk7Ci0gICAgICAgIGFkZENTU1By
b3BlcnR5KGF0dHIsIENTU1Byb3BlcnR5V2Via2l0TmJzcE1vZGUsIENTU1ZhbHVlU3BhY2UpOwot
ICAgICAgICBhZGRDU1NQcm9wZXJ0eShhdHRyLCBDU1NQcm9wZXJ0eVdlYmtpdExpbmVCcmVhaywg
Q1NTVmFsdWVBZnRlcldoaXRlU3BhY2UpOworICAgIGlmIChlbmFibGVkLmlzTnVsbCgpKQorICAg
ICAgICByZW1vdmVDU1NQcm9wZXJ0aWVzKENTU1Byb3BlcnR5V2Via2l0VXNlck1vZGlmeSwgQ1NT
UHJvcGVydHlXb3JkV3JhcCwgQ1NTUHJvcGVydHlXZWJraXROYnNwTW9kZSwgQ1NTUHJvcGVydHlX
ZWJraXRMaW5lQnJlYWspOworICAgIGVsc2UgaWYgKGVuYWJsZWQuaXNFbXB0eSgpIHx8IGVxdWFs
SWdub3JpbmdDYXNlKGVuYWJsZWQsICJ0cnVlIikpIHsKKyAgICAgICAgYWRkQ1NTUHJvcGVydHko
Q1NTUHJvcGVydHlXZWJraXRVc2VyTW9kaWZ5LCBDU1NWYWx1ZVJlYWRXcml0ZSk7CisgICAgICAg
IGFkZENTU1Byb3BlcnR5KENTU1Byb3BlcnR5V29yZFdyYXAsIENTU1ZhbHVlQnJlYWtXb3JkKTsK
KyAgICAgICAgYWRkQ1NTUHJvcGVydHkoQ1NTUHJvcGVydHlXZWJraXROYnNwTW9kZSwgQ1NTVmFs
dWVTcGFjZSk7CisgICAgICAgIGFkZENTU1Byb3BlcnR5KENTU1Byb3BlcnR5V2Via2l0TGluZUJy
ZWFrLCBDU1NWYWx1ZUFmdGVyV2hpdGVTcGFjZSk7CiAgICAgfSBlbHNlIGlmIChlcXVhbElnbm9y
aW5nQ2FzZShlbmFibGVkLCAiZmFsc2UiKSkgewotICAgICAgICBhZGRDU1NQcm9wZXJ0eShhdHRy
LCBDU1NQcm9wZXJ0eVdlYmtpdFVzZXJNb2RpZnksIENTU1ZhbHVlUmVhZE9ubHkpOwotICAgICAg
ICByZW1vdmVDU1NQcm9wZXJ0eShhdHRyLCBDU1NQcm9wZXJ0eVdvcmRXcmFwKTsKLSAgICAgICAg
cmVtb3ZlQ1NTUHJvcGVydHkoYXR0ciwgQ1NTUHJvcGVydHlXZWJraXROYnNwTW9kZSk7Ci0gICAg
ICAgIHJlbW92ZUNTU1Byb3BlcnR5KGF0dHIsIENTU1Byb3BlcnR5V2Via2l0TGluZUJyZWFrKTsK
KyAgICAgICAgYWRkQ1NTUHJvcGVydHkoQ1NTUHJvcGVydHlXZWJraXRVc2VyTW9kaWZ5LCBDU1NW
YWx1ZVJlYWRPbmx5KTsKKyAgICAgICAgcmVtb3ZlQ1NTUHJvcGVydGllcyhDU1NQcm9wZXJ0eVdv
cmRXcmFwLCBDU1NQcm9wZXJ0eVdlYmtpdE5ic3BNb2RlLCBDU1NQcm9wZXJ0eVdlYmtpdExpbmVC
cmVhayk7CiAgICAgfSBlbHNlIGlmIChlcXVhbElnbm9yaW5nQ2FzZShlbmFibGVkLCAicGxhaW50
ZXh0LW9ubHkiKSkgewotICAgICAgICBhZGRDU1NQcm9wZXJ0eShhdHRyLCBDU1NQcm9wZXJ0eVdl
YmtpdFVzZXJNb2RpZnksIENTU1ZhbHVlUmVhZFdyaXRlUGxhaW50ZXh0T25seSk7Ci0gICAgICAg
IGFkZENTU1Byb3BlcnR5KGF0dHIsIENTU1Byb3BlcnR5V29yZFdyYXAsIENTU1ZhbHVlQnJlYWtX
b3JkKTsKLSAgICAgICAgYWRkQ1NTUHJvcGVydHkoYXR0ciwgQ1NTUHJvcGVydHlXZWJraXROYnNw
TW9kZSwgQ1NTVmFsdWVTcGFjZSk7Ci0gICAgICAgIGFkZENTU1Byb3BlcnR5KGF0dHIsIENTU1By
b3BlcnR5V2Via2l0TGluZUJyZWFrLCBDU1NWYWx1ZUFmdGVyV2hpdGVTcGFjZSk7CisgICAgICAg
IGFkZENTU1Byb3BlcnR5KENTU1Byb3BlcnR5V2Via2l0VXNlck1vZGlmeSwgQ1NTVmFsdWVSZWFk
V3JpdGVQbGFpbnRleHRPbmx5KTsKKyAgICAgICAgYWRkQ1NTUHJvcGVydHkoQ1NTUHJvcGVydHlX
b3JkV3JhcCwgQ1NTVmFsdWVCcmVha1dvcmQpOworICAgICAgICBhZGRDU1NQcm9wZXJ0eShDU1NQ
cm9wZXJ0eVdlYmtpdE5ic3BNb2RlLCBDU1NWYWx1ZVNwYWNlKTsKKyAgICAgICAgYWRkQ1NTUHJv
cGVydHkoQ1NTUHJvcGVydHlXZWJraXRMaW5lQnJlYWssIENTU1ZhbHVlQWZ0ZXJXaGl0ZVNwYWNl
KTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVsZW1l
bnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQuaAppbmRleCBhODZiMmI5Li4w
MDFkZDA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRWxlbWVudC5oCkBAIC05NCw4ICs5NCw4IEBAIHBy
b3RlY3RlZDoKICAgICBIVE1MRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBE
b2N1bWVudCopOwogCiAgICAgdm9pZCBhZGRIVE1MQWxpZ25tZW50KEF0dHJpYnV0ZSopOworICAg
IHZvaWQgcmVtb3ZlSFRNTEFsaWdubWVudCgpOwogCi0gICAgdmlydHVhbCBib29sIG1hcFRvRW50
cnkoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUsIE1hcHBlZEF0dHJpYnV0ZUVudHJ5JiBy
ZXN1bHQpIGNvbnN0OwogICAgIHZpcnR1YWwgdm9pZCBwYXJzZU1hcHBlZEF0dHJpYnV0ZShBdHRy
aWJ1dGUqKTsKICAgICB2b2lkIGFwcGx5Qm9yZGVyQXR0cmlidXRlKEF0dHJpYnV0ZSopOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbWJlZEVsZW1lbnQuY3BwIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MRW1iZWRFbGVtZW50LmNwcAppbmRleCAzMDlhYWZlLi5jOTUw
NTQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbWJlZEVsZW1lbnQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVtYmVkRWxlbWVudC5jcHAKQEAgLTc0LDE2
ICs3NCw2IEBAIFJlbmRlcldpZGdldCogSFRNTEVtYmVkRWxlbWVudDo6cmVuZGVyV2lkZ2V0Rm9y
SlNCaW5kaW5ncygpCiAgICAgcmV0dXJuIGZpbmRXaWRnZXRSZW5kZXJlcih0aGlzKTsKIH0KIAot
Ym9vbCBIVE1MRW1iZWRFbGVtZW50OjptYXBUb0VudHJ5KGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0
dHJOYW1lLCBNYXBwZWRBdHRyaWJ1dGVFbnRyeSYgcmVzdWx0KSBjb25zdAotewotICAgIGlmIChh
dHRyTmFtZSA9PSBoaWRkZW5BdHRyKSB7Ci0gICAgICAgIHJlc3VsdCA9IGVVbml2ZXJzYWw7Ci0g
ICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0gICAgICAgIAotICAgIHJldHVybiBIVE1MUGx1
Z0luSW1hZ2VFbGVtZW50OjptYXBUb0VudHJ5KGF0dHJOYW1lLCByZXN1bHQpOwotfQotCiB2b2lk
IEhUTUxFbWJlZEVsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmlidXRlKEF0dHJpYnV0ZSogYXR0cikK
IHsKICAgICBjb25zdCBBdG9taWNTdHJpbmcmIHZhbHVlID0gYXR0ci0+dmFsdWUoKTsKQEAgLTEw
OCw5ICs5OCwxMCBAQCB2b2lkIEhUTUxFbWJlZEVsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmlidXRl
KEF0dHJpYnV0ZSogYXR0cikKICAgICAgICAgaWYgKGVxdWFsSWdub3JpbmdDYXNlKHZhbHVlLnN0
cmluZygpLCAieWVzIikgfHwgZXF1YWxJZ25vcmluZ0Nhc2UodmFsdWUuc3RyaW5nKCksICJ0cnVl
IikpIHsKICAgICAgICAgICAgIC8vIEZJWE1FOiBOb3QgZHluYW1pYywgc2luY2Ugd2UgYWRkIHRo
aXMgYnV0IGRvbid0IHJlbW92ZSBpdCwgYnV0IGl0IG1heSBiZSBPSyBmb3Igbm93CiAgICAgICAg
ICAgICAvLyB0aGF0IHRoaXMgcmFyZWx5LXVzZWQgYXR0cmlidXRlIHdvbid0IHdvcmsgcHJvcGVy
bHkgaWYgeW91IHJlbW92ZSBpdC4KLSAgICAgICAgICAgIGFkZENTU0xlbmd0aChhdHRyLCBDU1NQ
cm9wZXJ0eVdpZHRoLCAiMCIpOwotICAgICAgICAgICAgYWRkQ1NTTGVuZ3RoKGF0dHIsIENTU1By
b3BlcnR5SGVpZ2h0LCAiMCIpOwotICAgICAgICB9CisgICAgICAgICAgICBhZGRDU1NMZW5ndGgo
Q1NTUHJvcGVydHlXaWR0aCwgIjAiKTsKKyAgICAgICAgICAgIGFkZENTU0xlbmd0aChDU1NQcm9w
ZXJ0eUhlaWdodCwgIjAiKTsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICByZW1vdmVDU1NQ
cm9wZXJ0aWVzKENTU1Byb3BlcnR5V2lkdGgsIENTU1Byb3BlcnR5SGVpZ2h0KTsKICAgICB9IGVs
c2UKICAgICAgICAgSFRNTFBsdWdJbkltYWdlRWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUo
YXR0cik7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbWJlZEVsZW1l
bnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVtYmVkRWxlbWVudC5oCmluZGV4IDEyY2Uy
NzEuLmMzMzUyM2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVtYmVkRWxl
bWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVtYmVkRWxlbWVudC5oCkBAIC0z
NCw3ICszNCw2IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgSFRNTEVtYmVkRWxlbWVudChjb25z
dCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQqLCBib29sIGNyZWF0ZWRCeVBhcnNlcik7CiAKLSAg
ICB2aXJ0dWFsIGJvb2wgbWFwVG9FbnRyeShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSwg
TWFwcGVkQXR0cmlidXRlRW50cnkmIHJlc3VsdCkgY29uc3Q7CiAgICAgdmlydHVhbCB2b2lkIHBh
cnNlTWFwcGVkQXR0cmlidXRlKEF0dHJpYnV0ZSopOwogCiAgICAgdmlydHVhbCBib29sIHJlbmRl
cmVySXNOZWVkZWQoY29uc3QgTm9kZVJlbmRlcmluZ0NvbnRleHQmKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvbnRFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTEZvbnRFbGVtZW50LmNwcAppbmRleCBkMGFkZTI5Li5hNWY1Mzg3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb250RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MRm9udEVsZW1lbnQuY3BwCkBAIC0xMjMsMTggKzEyMyw2IEBAIHN0YXRp
YyBib29sIHBhcnNlRm9udFNpemUoY29uc3QgU3RyaW5nJiBpbnB1dCwgaW50JiBzaXplKQogICAg
IHJldHVybiB0cnVlOwogfQogCi1ib29sIEhUTUxGb250RWxlbWVudDo6bWFwVG9FbnRyeShjb25z
dCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSwgTWFwcGVkQXR0cmlidXRlRW50cnkmIHJlc3VsdCkg
Y29uc3QKLXsKLSAgICBpZiAoYXR0ck5hbWUgPT0gc2l6ZUF0dHIgfHwKLSAgICAgICAgYXR0ck5h
bWUgPT0gY29sb3JBdHRyIHx8Ci0gICAgICAgIGF0dHJOYW1lID09IGZhY2VBdHRyKSB7Ci0gICAg
ICAgIHJlc3VsdCA9IGVVbml2ZXJzYWw7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0g
ICAgCi0gICAgcmV0dXJuIEhUTUxFbGVtZW50OjptYXBUb0VudHJ5KGF0dHJOYW1lLCByZXN1bHQp
OwotfQotCiBib29sIEhUTUxGb250RWxlbWVudDo6Y3NzVmFsdWVGcm9tRm9udFNpemVOdW1iZXIo
Y29uc3QgU3RyaW5nJiBzLCBpbnQmIHNpemUpCiB7CiAgICAgaW50IG51bSA9IDA7CkBAIC0xNzUs
MTEgKzE2MywxOSBAQCB2b2lkIEhUTUxGb250RWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUo
QXR0cmlidXRlKiBhdHRyKQogICAgIGlmIChhdHRyLT5uYW1lKCkgPT0gc2l6ZUF0dHIpIHsKICAg
ICAgICAgaW50IHNpemUgPSAwOwogICAgICAgICBpZiAoY3NzVmFsdWVGcm9tRm9udFNpemVOdW1i
ZXIoYXR0ci0+dmFsdWUoKSwgc2l6ZSkpCi0gICAgICAgICAgICBhZGRDU1NQcm9wZXJ0eShhdHRy
LCBDU1NQcm9wZXJ0eUZvbnRTaXplLCBzaXplKTsKKyAgICAgICAgICAgIGFkZENTU1Byb3BlcnR5
KENTU1Byb3BlcnR5Rm9udFNpemUsIHNpemUpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBy
ZW1vdmVDU1NQcm9wZXJ0eShDU1NQcm9wZXJ0eUZvbnRTaXplKTsKICAgICB9IGVsc2UgaWYgKGF0
dHItPm5hbWUoKSA9PSBjb2xvckF0dHIpIHsKLSAgICAgICAgYWRkQ1NTQ29sb3IoYXR0ciwgQ1NT
UHJvcGVydHlDb2xvciwgYXR0ci0+dmFsdWUoKSk7CisgICAgICAgIGlmIChhdHRyLT52YWx1ZSgp
LmlzTnVsbCgpKQorICAgICAgICAgICAgcmVtb3ZlQ1NTUHJvcGVydHkoQ1NTUHJvcGVydHlDb2xv
cik7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGFkZENTU0NvbG9yKENTU1Byb3BlcnR5Q29s
b3IsIGF0dHItPnZhbHVlKCkpOwogICAgIH0gZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09IGZhY2VB
dHRyKSB7Ci0gICAgICAgIGFkZENTU1Byb3BlcnR5KGF0dHIsIENTU1Byb3BlcnR5Rm9udEZhbWls
eSwgYXR0ci0+dmFsdWUoKSk7CisgICAgICAgIGlmIChhdHRyLT52YWx1ZSgpLmlzTnVsbCgpKQor
ICAgICAgICAgICAgcmVtb3ZlQ1NTUHJvcGVydHkoQ1NTUHJvcGVydHlGb250RmFtaWx5KTsKKyAg
ICAgICAgZWxzZQorICAgICAgICAgICAgYWRkQ1NTUHJvcGVydHkoQ1NTUHJvcGVydHlGb250RmFt
aWx5LCBhdHRyLT52YWx1ZSgpKTsKICAgICB9IGVsc2UKICAgICAgICAgSFRNTEVsZW1lbnQ6OnBh
cnNlTWFwcGVkQXR0cmlidXRlKGF0dHIpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MRm9udEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvbnRFbGVt
ZW50LmgKaW5kZXggZjk3YWIwOC4uMzRlYzZmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MRm9udEVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb250
RWxlbWVudC5oCkBAIC0zNyw3ICszNyw2IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgSFRNTEZv
bnRFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCopOwogCi0gICAgdmlydHVh
bCBib29sIG1hcFRvRW50cnkoY29uc3QgUXVhbGlmaWVkTmFtZSYsIE1hcHBlZEF0dHJpYnV0ZUVu
dHJ5JikgY29uc3Q7CiAgICAgdmlydHVhbCB2b2lkIHBhcnNlTWFwcGVkQXR0cmlidXRlKEF0dHJp
YnV0ZSopOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVT
ZXRFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZyYW1lU2V0RWxlbWVudC5j
cHAKaW5kZXggOTc4YTcyZC4uOWNkZDQzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MRnJhbWVTZXRFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxG
cmFtZVNldEVsZW1lbnQuY3BwCkBAIC02NCwxNiArNjQsNiBAQCBQYXNzUmVmUHRyPEhUTUxGcmFt
ZVNldEVsZW1lbnQ+IEhUTUxGcmFtZVNldEVsZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZpZWRO
YW1lJgogICAgIHJldHVybiBhZG9wdFJlZihuZXcgSFRNTEZyYW1lU2V0RWxlbWVudCh0YWdOYW1l
LCBkb2N1bWVudCkpOwogfQogCi1ib29sIEhUTUxGcmFtZVNldEVsZW1lbnQ6Om1hcFRvRW50cnko
Y29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUsIE1hcHBlZEF0dHJpYnV0ZUVudHJ5JiByZXN1
bHQpIGNvbnN0Ci17Ci0gICAgaWYgKGF0dHJOYW1lID09IGJvcmRlcmNvbG9yQXR0cikgewotICAg
ICAgICByZXN1bHQgPSBlVW5pdmVyc2FsOwotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0K
LSAgICByZXR1cm4gSFRNTEVsZW1lbnQ6Om1hcFRvRW50cnkoYXR0ck5hbWUsIHJlc3VsdCk7Ci19
Ci0KIHZvaWQgSFRNTEZyYW1lU2V0RWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUoQXR0cmli
dXRlKiBhdHRyKQogewogICAgIGlmIChhdHRyLT5uYW1lKCkgPT0gcm93c0F0dHIpIHsKQEAgLTEw
OSwxMSArOTksMTEgQEAgdm9pZCBIVE1MRnJhbWVTZXRFbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJp
YnV0ZShBdHRyaWJ1dGUqIGF0dHIpCiAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgbV9ib3Jk
ZXJTZXQgPSBmYWxzZTsKICAgICB9IGVsc2UgaWYgKGF0dHItPm5hbWUoKSA9PSBib3JkZXJjb2xv
ckF0dHIpIHsKLSAgICAgICAgbV9ib3JkZXJDb2xvclNldCA9IGF0dHItPmRlY2woKTsKLSAgICAg
ICAgaWYgKCFhdHRyLT5kZWNsKCkgJiYgIWF0dHItPmlzRW1wdHkoKSkgewotICAgICAgICAgICAg
YWRkQ1NTQ29sb3IoYXR0ciwgQ1NTUHJvcGVydHlCb3JkZXJDb2xvciwgYXR0ci0+dmFsdWUoKSk7
Ci0gICAgICAgICAgICBtX2JvcmRlckNvbG9yU2V0ID0gdHJ1ZTsKLSAgICAgICAgfQorICAgICAg
ICBtX2JvcmRlckNvbG9yU2V0ID0gIWF0dHItPmlzRW1wdHkoKTsKKyAgICAgICAgaWYgKGF0dHIt
PnZhbHVlKCkuaXNOdWxsKCkpCisgICAgICAgICAgICByZW1vdmVDU1NQcm9wZXJ0eShDU1NQcm9w
ZXJ0eUJvcmRlckNvbG9yKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgYWRkQ1NTQ29sb3Io
Q1NTUHJvcGVydHlCb3JkZXJDb2xvciwgYXR0ci0+dmFsdWUoKSk7CiAgICAgfSBlbHNlIGlmIChh
dHRyLT5uYW1lKCkgPT0gb25sb2FkQXR0cikKICAgICAgICAgZG9jdW1lbnQoKS0+c2V0V2luZG93
QXR0cmlidXRlRXZlbnRMaXN0ZW5lcihldmVudE5hbWVzKCkubG9hZEV2ZW50LCBjcmVhdGVBdHRy
aWJ1dGVFdmVudExpc3RlbmVyKGRvY3VtZW50KCktPmZyYW1lKCksIGF0dHIpKTsKICAgICBlbHNl
IGlmIChhdHRyLT5uYW1lKCkgPT0gb25iZWZvcmV1bmxvYWRBdHRyKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVTZXRFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxGcmFtZVNldEVsZW1lbnQuaAppbmRleCA2OTg4OTc0Li4wYmMzNGI2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGcmFtZVNldEVsZW1lbnQuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxGcmFtZVNldEVsZW1lbnQuaApAQCAtNjcsNyArNjcsNiBAQCBw
dWJsaWM6CiBwcml2YXRlOgogICAgIEhUTUxGcmFtZVNldEVsZW1lbnQoY29uc3QgUXVhbGlmaWVk
TmFtZSYsIERvY3VtZW50Kik7CiAKLSAgICB2aXJ0dWFsIGJvb2wgbWFwVG9FbnRyeShjb25zdCBR
dWFsaWZpZWROYW1lJiBhdHRyTmFtZSwgTWFwcGVkQXR0cmlidXRlRW50cnkmIHJlc3VsdCkgY29u
c3Q7CiAgICAgdmlydHVhbCB2b2lkIHBhcnNlTWFwcGVkQXR0cmlidXRlKEF0dHJpYnV0ZSopOwog
CiAgICAgdmlydHVhbCB2b2lkIGF0dGFjaCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MSFJFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEhSRWxlbWVu
dC5jcHAKaW5kZXggNDRhYTA1Mi4uNjljZDkxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MSFJFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxIUkVs
ZW1lbnQuY3BwCkBAIC00OCw2MCArNDgsNjggQEAgUGFzc1JlZlB0cjxIVE1MSFJFbGVtZW50PiBI
VE1MSFJFbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG8KICAg
ICByZXR1cm4gYWRvcHRSZWYobmV3IEhUTUxIUkVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpKTsK
IH0KIAotYm9vbCBIVE1MSFJFbGVtZW50OjptYXBUb0VudHJ5KGNvbnN0IFF1YWxpZmllZE5hbWUm
IGF0dHJOYW1lLCBNYXBwZWRBdHRyaWJ1dGVFbnRyeSYgcmVzdWx0KSBjb25zdAotewotICAgIGlm
IChhdHRyTmFtZSA9PSBhbGlnbkF0dHIgfHwKLSAgICAgICAgYXR0ck5hbWUgPT0gd2lkdGhBdHRy
IHx8Ci0gICAgICAgIGF0dHJOYW1lID09IGNvbG9yQXR0ciB8fAotICAgICAgICBhdHRyTmFtZSA9
PSBzaXplQXR0ciB8fAotICAgICAgICBhdHRyTmFtZSA9PSBub3NoYWRlQXR0cikgewotICAgICAg
ICByZXN1bHQgPSBlSFI7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0gICAgcmV0dXJu
IEhUTUxFbGVtZW50OjptYXBUb0VudHJ5KGF0dHJOYW1lLCByZXN1bHQpOwotfQotCiB2b2lkIEhU
TUxIUkVsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmlidXRlKEF0dHJpYnV0ZSogYXR0cikKIHsKICAg
ICBpZiAoYXR0ci0+bmFtZSgpID09IGFsaWduQXR0cikgewotICAgICAgICBpZiAoZXF1YWxJZ25v
cmluZ0Nhc2UoYXR0ci0+dmFsdWUoKSwgImxlZnQiKSkgewotICAgICAgICAgICAgYWRkQ1NTUHJv
cGVydHkoYXR0ciwgQ1NTUHJvcGVydHlNYXJnaW5MZWZ0LCAiMCIpOwotICAgICAgICAgICAgYWRk
Q1NTUHJvcGVydHkoYXR0ciwgQ1NTUHJvcGVydHlNYXJnaW5SaWdodCwgQ1NTVmFsdWVBdXRvKTsK
KyAgICAgICAgaWYgKGF0dHItPnZhbHVlKCkuaXNOdWxsKCkpIHsKKyAgICAgICAgICAgIHJlbW92
ZUNTU1Byb3BlcnRpZXMoQ1NTUHJvcGVydHlNYXJnaW5MZWZ0LCBDU1NQcm9wZXJ0eU1hcmdpblJp
Z2h0KTsKKyAgICAgICAgfSBlbHNlIGlmIChlcXVhbElnbm9yaW5nQ2FzZShhdHRyLT52YWx1ZSgp
LCAibGVmdCIpKSB7CisgICAgICAgICAgICBhZGRDU1NQcm9wZXJ0eShDU1NQcm9wZXJ0eU1hcmdp
bkxlZnQsICIwIik7CisgICAgICAgICAgICBhZGRDU1NQcm9wZXJ0eShDU1NQcm9wZXJ0eU1hcmdp
blJpZ2h0LCBDU1NWYWx1ZUF1dG8pOwogICAgICAgICB9IGVsc2UgaWYgKGVxdWFsSWdub3JpbmdD
YXNlKGF0dHItPnZhbHVlKCksICJyaWdodCIpKSB7Ci0gICAgICAgICAgICBhZGRDU1NQcm9wZXJ0
eShhdHRyLCBDU1NQcm9wZXJ0eU1hcmdpbkxlZnQsIENTU1ZhbHVlQXV0byk7Ci0gICAgICAgICAg
ICBhZGRDU1NQcm9wZXJ0eShhdHRyLCBDU1NQcm9wZXJ0eU1hcmdpblJpZ2h0LCAiMCIpOworICAg
ICAgICAgICAgYWRkQ1NTUHJvcGVydHkoQ1NTUHJvcGVydHlNYXJnaW5MZWZ0LCBDU1NWYWx1ZUF1
dG8pOworICAgICAgICAgICAgYWRkQ1NTUHJvcGVydHkoQ1NTUHJvcGVydHlNYXJnaW5SaWdodCwg
IjAiKTsKICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIGFkZENTU1Byb3BlcnR5KGF0dHIs
IENTU1Byb3BlcnR5TWFyZ2luTGVmdCwgQ1NTVmFsdWVBdXRvKTsKLSAgICAgICAgICAgIGFkZENT
U1Byb3BlcnR5KGF0dHIsIENTU1Byb3BlcnR5TWFyZ2luUmlnaHQsIENTU1ZhbHVlQXV0byk7Cisg
ICAgICAgICAgICBhZGRDU1NQcm9wZXJ0eShDU1NQcm9wZXJ0eU1hcmdpbkxlZnQsIENTU1ZhbHVl
QXV0byk7CisgICAgICAgICAgICBhZGRDU1NQcm9wZXJ0eShDU1NQcm9wZXJ0eU1hcmdpblJpZ2h0
LCBDU1NWYWx1ZUF1dG8pOwogICAgICAgICB9CiAgICAgfSBlbHNlIGlmIChhdHRyLT5uYW1lKCkg
PT0gd2lkdGhBdHRyKSB7Ci0gICAgICAgIGJvb2wgb2s7Ci0gICAgICAgIGludCB2ID0gYXR0ci0+
dmFsdWUoKS50b0ludCgmb2spOwotICAgICAgICBpZiAob2sgJiYgIXYpCi0gICAgICAgICAgICBh
ZGRDU1NMZW5ndGgoYXR0ciwgQ1NTUHJvcGVydHlXaWR0aCwgIjEiKTsKLSAgICAgICAgZWxzZQot
ICAgICAgICAgICAgYWRkQ1NTTGVuZ3RoKGF0dHIsIENTU1Byb3BlcnR5V2lkdGgsIGF0dHItPnZh
bHVlKCkpOworICAgICAgICBpZiAoYXR0ci0+dmFsdWUoKS5pc051bGwoKSkKKyAgICAgICAgICAg
IHJlbW92ZUNTU1Byb3BlcnR5KENTU1Byb3BlcnR5V2lkdGgpOworICAgICAgICBlbHNlIHsKKyAg
ICAgICAgICAgIGJvb2wgb2s7CisgICAgICAgICAgICBpbnQgdiA9IGF0dHItPnZhbHVlKCkudG9J
bnQoJm9rKTsKKyAgICAgICAgICAgIGlmIChvayAmJiAhdikKKyAgICAgICAgICAgICAgICBhZGRD
U1NMZW5ndGgoQ1NTUHJvcGVydHlXaWR0aCwgIjEiKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAg
ICAgICAgICAgICBhZGRDU1NMZW5ndGgoQ1NTUHJvcGVydHlXaWR0aCwgYXR0ci0+dmFsdWUoKSk7
CisgICAgICAgIH0KICAgICB9IGVsc2UgaWYgKGF0dHItPm5hbWUoKSA9PSBjb2xvckF0dHIpIHsK
LSAgICAgICAgYWRkQ1NTUHJvcGVydHkoYXR0ciwgQ1NTUHJvcGVydHlCb3JkZXJUb3BTdHlsZSwg
Q1NTVmFsdWVTb2xpZCk7Ci0gICAgICAgIGFkZENTU1Byb3BlcnR5KGF0dHIsIENTU1Byb3BlcnR5
Qm9yZGVyUmlnaHRTdHlsZSwgQ1NTVmFsdWVTb2xpZCk7Ci0gICAgICAgIGFkZENTU1Byb3BlcnR5
KGF0dHIsIENTU1Byb3BlcnR5Qm9yZGVyQm90dG9tU3R5bGUsIENTU1ZhbHVlU29saWQpOwotICAg
ICAgICBhZGRDU1NQcm9wZXJ0eShhdHRyLCBDU1NQcm9wZXJ0eUJvcmRlckxlZnRTdHlsZSwgQ1NT
VmFsdWVTb2xpZCk7Ci0gICAgICAgIGFkZENTU0NvbG9yKGF0dHIsIENTU1Byb3BlcnR5Qm9yZGVy
Q29sb3IsIGF0dHItPnZhbHVlKCkpOwotICAgICAgICBhZGRDU1NDb2xvcihhdHRyLCBDU1NQcm9w
ZXJ0eUJhY2tncm91bmRDb2xvciwgYXR0ci0+dmFsdWUoKSk7CisgICAgICAgIGlmIChhdHRyLT52
YWx1ZSgpLmlzTnVsbCgpKQorICAgICAgICAgICAgcmVtb3ZlQ1NTUHJvcGVydGllcyhDU1NQcm9w
ZXJ0eUJvcmRlclRvcFN0eWxlLCBDU1NQcm9wZXJ0eUJvcmRlclJpZ2h0U3R5bGUsIENTU1Byb3Bl
cnR5Qm9yZGVyQm90dG9tU3R5bGUsIENTU1Byb3BlcnR5Qm9yZGVyTGVmdFN0eWxlLCBDU1NQcm9w
ZXJ0eUJvcmRlckNvbG9yLCBDU1NQcm9wZXJ0eUJhY2tncm91bmRDb2xvcik7CisgICAgICAgIGVs
c2UgeworICAgICAgICAgICAgYWRkQ1NTUHJvcGVydHkoQ1NTUHJvcGVydHlCb3JkZXJUb3BTdHls
ZSwgQ1NTVmFsdWVTb2xpZCk7CisgICAgICAgICAgICBhZGRDU1NQcm9wZXJ0eShDU1NQcm9wZXJ0
eUJvcmRlclJpZ2h0U3R5bGUsIENTU1ZhbHVlU29saWQpOworICAgICAgICAgICAgYWRkQ1NTUHJv
cGVydHkoQ1NTUHJvcGVydHlCb3JkZXJCb3R0b21TdHlsZSwgQ1NTVmFsdWVTb2xpZCk7CisgICAg
ICAgICAgICBhZGRDU1NQcm9wZXJ0eShDU1NQcm9wZXJ0eUJvcmRlckxlZnRTdHlsZSwgQ1NTVmFs
dWVTb2xpZCk7CisgICAgICAgICAgICBhZGRDU1NDb2xvcihDU1NQcm9wZXJ0eUJvcmRlckNvbG9y
LCBhdHRyLT52YWx1ZSgpKTsKKyAgICAgICAgICAgIGFkZENTU0NvbG9yKENTU1Byb3BlcnR5QmFj
a2dyb3VuZENvbG9yLCBhdHRyLT52YWx1ZSgpKTsKKyAgICAgICAgfQogICAgIH0gZWxzZSBpZiAo
YXR0ci0+bmFtZSgpID09IG5vc2hhZGVBdHRyKSB7Ci0gICAgICAgIGFkZENTU1Byb3BlcnR5KGF0
dHIsIENTU1Byb3BlcnR5Qm9yZGVyVG9wU3R5bGUsIENTU1ZhbHVlU29saWQpOwotICAgICAgICBh
ZGRDU1NQcm9wZXJ0eShhdHRyLCBDU1NQcm9wZXJ0eUJvcmRlclJpZ2h0U3R5bGUsIENTU1ZhbHVl
U29saWQpOwotICAgICAgICBhZGRDU1NQcm9wZXJ0eShhdHRyLCBDU1NQcm9wZXJ0eUJvcmRlckJv
dHRvbVN0eWxlLCBDU1NWYWx1ZVNvbGlkKTsKLSAgICAgICAgYWRkQ1NTUHJvcGVydHkoYXR0ciwg
Q1NTUHJvcGVydHlCb3JkZXJMZWZ0U3R5bGUsIENTU1ZhbHVlU29saWQpOwotICAgICAgICBhZGRD
U1NDb2xvcihhdHRyLCBDU1NQcm9wZXJ0eUJvcmRlckNvbG9yLCBTdHJpbmcoImdyZXkiKSk7Ci0g
ICAgICAgIGFkZENTU0NvbG9yKGF0dHIsIENTU1Byb3BlcnR5QmFja2dyb3VuZENvbG9yLCBTdHJp
bmcoImdyZXkiKSk7CisgICAgICAgIGlmIChhdHRyLT52YWx1ZSgpLmlzTnVsbCgpKQorICAgICAg
ICAgICAgcmVtb3ZlQ1NTUHJvcGVydGllcyhDU1NQcm9wZXJ0eUJvcmRlclRvcFN0eWxlLCBDU1NQ
cm9wZXJ0eUJvcmRlclJpZ2h0U3R5bGUsIENTU1Byb3BlcnR5Qm9yZGVyQm90dG9tU3R5bGUsIENT
U1Byb3BlcnR5Qm9yZGVyTGVmdFN0eWxlLCBDU1NQcm9wZXJ0eUJvcmRlckNvbG9yLCBDU1NQcm9w
ZXJ0eUJhY2tncm91bmRDb2xvcik7CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgYWRkQ1NT
UHJvcGVydHkoQ1NTUHJvcGVydHlCb3JkZXJUb3BTdHlsZSwgQ1NTVmFsdWVTb2xpZCk7CisgICAg
ICAgICAgICBhZGRDU1NQcm9wZXJ0eShDU1NQcm9wZXJ0eUJvcmRlclJpZ2h0U3R5bGUsIENTU1Zh
bHVlU29saWQpOworICAgICAgICAgICAgYWRkQ1NTUHJvcGVydHkoQ1NTUHJvcGVydHlCb3JkZXJC
b3R0b21TdHlsZSwgQ1NTVmFsdWVTb2xpZCk7CisgICAgICAgICAgICBhZGRDU1NQcm9wZXJ0eShD
U1NQcm9wZXJ0eUJvcmRlckxlZnRTdHlsZSwgQ1NTVmFsdWVTb2xpZCk7CisgICAgICAgICAgICBh
ZGRDU1NDb2xvcihDU1NQcm9wZXJ0eUJvcmRlckNvbG9yLCBTdHJpbmcoImdyZXkiKSk7CisgICAg
ICAgICAgICBhZGRDU1NDb2xvcihDU1NQcm9wZXJ0eUJhY2tncm91bmRDb2xvciwgU3RyaW5nKCJn
cmV5IikpOworICAgICAgICB9CiAgICAgfSBlbHNlIGlmIChhdHRyLT5uYW1lKCkgPT0gc2l6ZUF0
dHIpIHsKLSAgICAgICAgU3RyaW5nSW1wbCogc2kgPSBhdHRyLT52YWx1ZSgpLmltcGwoKTsKLSAg
ICAgICAgaW50IHNpemUgPSBzaS0+dG9JbnQoKTsKLSAgICAgICAgaWYgKHNpemUgPD0gMSkKLSAg
ICAgICAgICAgIGFkZENTU1Byb3BlcnR5KGF0dHIsIENTU1Byb3BlcnR5Qm9yZGVyQm90dG9tV2lk
dGgsIFN0cmluZygiMCIpKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgYWRkQ1NTTGVuZ3Ro
KGF0dHIsIENTU1Byb3BlcnR5SGVpZ2h0LCBTdHJpbmc6Om51bWJlcihzaXplLTIpKTsKKyAgICAg
ICAgaWYgKGF0dHItPnZhbHVlKCkuaXNOdWxsKCkpCisgICAgICAgICAgICByZW1vdmVDU1NQcm9w
ZXJ0aWVzKENTU1Byb3BlcnR5Qm9yZGVyQm90dG9tV2lkdGgsIENTU1Byb3BlcnR5SGVpZ2h0KTsK
KyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBTdHJpbmdJbXBsKiBzaSA9IGF0dHItPnZhbHVl
KCkuaW1wbCgpOworICAgICAgICAgICAgaW50IHNpemUgPSBzaS0+dG9JbnQoKTsKKyAgICAgICAg
ICAgIGlmIChzaXplIDw9IDEpIHsKKyAgICAgICAgICAgICAgICBhZGRDU1NQcm9wZXJ0eShDU1NQ
cm9wZXJ0eUJvcmRlckJvdHRvbVdpZHRoLCBTdHJpbmcoIjAiKSk7CisgICAgICAgICAgICAgICAg
cmVtb3ZlQ1NTUHJvcGVydHkoQ1NTUHJvcGVydHlIZWlnaHQpOworICAgICAgICAgICAgfSBlbHNl
IHsKKyAgICAgICAgICAgICAgICBhZGRDU1NMZW5ndGgoQ1NTUHJvcGVydHlIZWlnaHQsIFN0cmlu
Zzo6bnVtYmVyKHNpemUtMikpOworICAgICAgICAgICAgICAgIHJlbW92ZUNTU1Byb3BlcnR5KENT
U1Byb3BlcnR5Qm9yZGVyQm90dG9tV2lkdGgpOworICAgICAgICAgICAgfQorICAgICAgICB9CiAg
ICAgfSBlbHNlCiAgICAgICAgIEhUTUxFbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpYnV0ZShhdHRy
KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEhSRWxlbWVudC5oIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSFJFbGVtZW50LmgKaW5kZXggMzdjMTE5MC4uMDc5Yjhl
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSFJFbGVtZW50LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSFJFbGVtZW50LmgKQEAgLTM2LDggKzM2LDcgQEAgcHVi
bGljOgogCiBwcml2YXRlOgogICAgIEhUTUxIUkVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYs
IERvY3VtZW50Kik7Ci0gICAgCi0gICAgdmlydHVhbCBib29sIG1hcFRvRW50cnkoY29uc3QgUXVh
bGlmaWVkTmFtZSYsIE1hcHBlZEF0dHJpYnV0ZUVudHJ5JikgY29uc3Q7CisKICAgICB2aXJ0dWFs
IHZvaWQgcGFyc2VNYXBwZWRBdHRyaWJ1dGUoQXR0cmlidXRlKik7CiB9OwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJRnJhbWVFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTElGcmFtZUVsZW1lbnQuY3BwCmluZGV4IDgxN2I1ZDcuLjQyZDQ3NTggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElGcmFtZUVsZW1lbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElGcmFtZUVsZW1lbnQuY3BwCkBAIC00OCwzMiArNDgs
MTIgQEAgUGFzc1JlZlB0cjxIVE1MSUZyYW1lRWxlbWVudD4gSFRNTElGcmFtZUVsZW1lbnQ6OmNy
ZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0YWcKICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEhU
TUxJRnJhbWVFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KSk7CiB9CiAKLWJvb2wgSFRNTElGcmFt
ZUVsZW1lbnQ6Om1hcFRvRW50cnkoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUsIE1hcHBl
ZEF0dHJpYnV0ZUVudHJ5JiByZXN1bHQpIGNvbnN0Ci17Ci0gICAgaWYgKGF0dHJOYW1lID09IHdp
ZHRoQXR0ciB8fCBhdHRyTmFtZSA9PSBoZWlnaHRBdHRyKSB7Ci0gICAgICAgIHJlc3VsdCA9IGVV
bml2ZXJzYWw7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0gICAgCi0gICAgaWYgKGF0
dHJOYW1lID09IGFsaWduQXR0cikgewotICAgICAgICByZXN1bHQgPSBlUmVwbGFjZWQ7IC8vIFNo
YXJlIHdpdGggPGltZz4gc2luY2UgdGhlIGFsaWdubWVudCBiZWhhdmlvciBpcyB0aGUgc2FtZS4K
LSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLSAgICAKLSAgICBpZiAoYXR0ck5hbWUgPT0g
ZnJhbWVib3JkZXJBdHRyKSB7Ci0gICAgICAgIHJlc3VsdCA9IGVSZXBsYWNlZDsKLSAgICAgICAg
cmV0dXJuIGZhbHNlOwotICAgIH0KLQotICAgIHJldHVybiBIVE1MRnJhbWVFbGVtZW50QmFzZTo6
bWFwVG9FbnRyeShhdHRyTmFtZSwgcmVzdWx0KTsKLX0KLQogdm9pZCBIVE1MSUZyYW1lRWxlbWVu
dDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUoQXR0cmlidXRlKiBhdHRyKQogewogICAgIGlmIChhdHRy
LT5uYW1lKCkgPT0gd2lkdGhBdHRyKQotICAgICAgICBhZGRDU1NMZW5ndGgoYXR0ciwgQ1NTUHJv
cGVydHlXaWR0aCwgYXR0ci0+dmFsdWUoKSk7CisgICAgICAgIGFkZENTU0xlbmd0aChDU1NQcm9w
ZXJ0eVdpZHRoLCBhdHRyLT52YWx1ZSgpKTsKICAgICBlbHNlIGlmIChhdHRyLT5uYW1lKCkgPT0g
aGVpZ2h0QXR0cikKLSAgICAgICAgYWRkQ1NTTGVuZ3RoKGF0dHIsIENTU1Byb3BlcnR5SGVpZ2h0
LCBhdHRyLT52YWx1ZSgpKTsKKyAgICAgICAgYWRkQ1NTTGVuZ3RoKENTU1Byb3BlcnR5SGVpZ2h0
LCBhdHRyLT52YWx1ZSgpKTsKICAgICBlbHNlIGlmIChhdHRyLT5uYW1lKCkgPT0gYWxpZ25BdHRy
KQogICAgICAgICBhZGRIVE1MQWxpZ25tZW50KGF0dHIpOwogICAgIGVsc2UgaWYgKGF0dHItPm5h
bWUoKSA9PSBuYW1lQXR0cikgewpAQCAtODcsOSArNjcsMTEgQEAgdm9pZCBIVE1MSUZyYW1lRWxl
bWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUoQXR0cmlidXRlKiBhdHRyKQogICAgIH0gZWxzZSBp
ZiAoYXR0ci0+bmFtZSgpID09IGZyYW1lYm9yZGVyQXR0cikgewogICAgICAgICAvLyBGcmFtZSBi
b3JkZXIgZG9lc24ndCByZWFsbHkgbWF0Y2ggdGhlIEhUTUw0IHNwZWMgZGVmaW5pdGlvbiBmb3Ig
aWZyYW1lcy4gIEl0IHNpbXBseSBhZGRzCiAgICAgICAgIC8vIGEgcHJlc2VudGF0aW9uYWwgaGlu
dCB0aGF0IHRoZSBib3JkZXIgc2hvdWxkIGJlIG9mZiBpZiBzZXQgdG8gemVyby4KLSAgICAgICAg
aWYgKCFhdHRyLT5pc051bGwoKSAmJiAhYXR0ci0+dmFsdWUoKS50b0ludCgpKQorICAgICAgICBp
ZiAoIWF0dHItPmlzTnVsbCgpICYmICFhdHRyLT52YWx1ZSgpLnRvSW50KCkpIHsKICAgICAgICAg
ICAgIC8vIEFkZCBhIHJ1bGUgdGhhdCBudWxscyBvdXQgb3VyIGJvcmRlciB3aWR0aC4KLSAgICAg
ICAgICAgIGFkZENTU0xlbmd0aChhdHRyLCBDU1NQcm9wZXJ0eUJvcmRlcldpZHRoLCAiMCIpOwor
ICAgICAgICAgICAgYWRkQ1NTTGVuZ3RoKENTU1Byb3BlcnR5Qm9yZGVyV2lkdGgsICIwIik7Cisg
ICAgICAgIH0gZWxzZQorICAgICAgICAgICAgcmVtb3ZlQ1NTUHJvcGVydHkoQ1NTUHJvcGVydHlC
b3JkZXJXaWR0aCk7CiAgICAgfSBlbHNlIGlmIChhdHRyLT5uYW1lKCkgPT0gc2FuZGJveEF0dHIp
CiAgICAgICAgIHNldFNhbmRib3hGbGFncyhhdHRyLT5pc051bGwoKSA/IFNhbmRib3hOb25lIDog
U2VjdXJpdHlDb250ZXh0OjpwYXJzZVNhbmRib3hQb2xpY3koYXR0ci0+dmFsdWUoKSkpOwogICAg
IGVsc2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElGcmFtZUVsZW1lbnQu
aCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElGcmFtZUVsZW1lbnQuaAppbmRleCBhN2FlY2Y4
Li4zNTZmZDQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJRnJhbWVFbGVt
ZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSUZyYW1lRWxlbWVudC5oCkBAIC0z
NSw3ICszNSw2IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgSFRNTElGcmFtZUVsZW1lbnQoY29u
c3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Kik7CiAKLSAgICB2aXJ0dWFsIGJvb2wgbWFwVG9F
bnRyeShjb25zdCBRdWFsaWZpZWROYW1lJiwgTWFwcGVkQXR0cmlidXRlRW50cnkmKSBjb25zdDsK
ICAgICB2aXJ0dWFsIHZvaWQgcGFyc2VNYXBwZWRBdHRyaWJ1dGUoQXR0cmlidXRlKik7CiAKICAg
ICB2aXJ0dWFsIHZvaWQgaW5zZXJ0ZWRJbnRvRG9jdW1lbnQoKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTEltYWdlRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxJbWFnZUVsZW1lbnQuY3BwCmluZGV4IGI1YzUxM2QuLjg5Y2JkYjIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEltYWdlRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MSW1hZ2VFbGVtZW50LmNwcApAQCAtNzgsMjUgKzc4LDYgQEAgUGFzc1Jl
ZlB0cjxIVE1MSW1hZ2VFbGVtZW50PiBIVE1MSW1hZ2VFbGVtZW50OjpjcmVhdGVGb3JKU0NvbnN0
cnVjdG9yKERvY3VtZW50KgogICAgIHJldHVybiBpbWFnZS5yZWxlYXNlKCk7CiB9CiAKLWJvb2wg
SFRNTEltYWdlRWxlbWVudDo6bWFwVG9FbnRyeShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFt
ZSwgTWFwcGVkQXR0cmlidXRlRW50cnkmIHJlc3VsdCkgY29uc3QKLXsKLSAgICBpZiAoYXR0ck5h
bWUgPT0gd2lkdGhBdHRyIHx8Ci0gICAgICAgIGF0dHJOYW1lID09IGhlaWdodEF0dHIgfHwKLSAg
ICAgICAgYXR0ck5hbWUgPT0gdnNwYWNlQXR0ciB8fAotICAgICAgICBhdHRyTmFtZSA9PSBoc3Bh
Y2VBdHRyIHx8Ci0gICAgICAgIGF0dHJOYW1lID09IHZhbGlnbkF0dHIpIHsKLSAgICAgICAgcmVz
dWx0ID0gZVVuaXZlcnNhbDsKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLQotICAgIGlm
IChhdHRyTmFtZSA9PSBib3JkZXJBdHRyIHx8IGF0dHJOYW1lID09IGFsaWduQXR0cikgewotICAg
ICAgICByZXN1bHQgPSBlUmVwbGFjZWQ7IC8vIFNoYXJlZCB3aXRoIGVtYmVkIGFuZCBpZnJhbWUg
ZWxlbWVudHMuCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0KLSAgICByZXR1cm4gSFRN
TEVsZW1lbnQ6Om1hcFRvRW50cnkoYXR0ck5hbWUsIHJlc3VsdCk7Ci19Ci0KIHZvaWQgSFRNTElt
YWdlRWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUoQXR0cmlidXRlKiBhdHRyKQogewogICAg
IGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lID0gYXR0ci0+bmFtZSgpOwpAQCAtMTA2LDIy
ICs4NywzOSBAQCB2b2lkIEhUTUxJbWFnZUVsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmlidXRlKEF0
dHJpYnV0ZSogYXR0cikKICAgICB9IGVsc2UgaWYgKGF0dHJOYW1lID09IHNyY0F0dHIpCiAgICAg
ICAgIG1faW1hZ2VMb2FkZXIudXBkYXRlRnJvbUVsZW1lbnRJZ25vcmluZ1ByZXZpb3VzRXJyb3Io
KTsKICAgICBlbHNlIGlmIChhdHRyTmFtZSA9PSB3aWR0aEF0dHIpCi0gICAgICAgIGFkZENTU0xl
bmd0aChhdHRyLCBDU1NQcm9wZXJ0eVdpZHRoLCBhdHRyLT52YWx1ZSgpKTsKKyAgICAgICAgaWYg
KGF0dHItPnZhbHVlKCkuaXNOdWxsKCkpCisgICAgICAgICAgICByZW1vdmVDU1NQcm9wZXJ0eShD
U1NQcm9wZXJ0eVdpZHRoKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgYWRkQ1NTTGVuZ3Ro
KENTU1Byb3BlcnR5V2lkdGgsIGF0dHItPnZhbHVlKCkpOwogICAgIGVsc2UgaWYgKGF0dHJOYW1l
ID09IGhlaWdodEF0dHIpCi0gICAgICAgIGFkZENTU0xlbmd0aChhdHRyLCBDU1NQcm9wZXJ0eUhl
aWdodCwgYXR0ci0+dmFsdWUoKSk7CisgICAgICAgIGlmIChhdHRyLT52YWx1ZSgpLmlzTnVsbCgp
KQorICAgICAgICAgICAgcmVtb3ZlQ1NTUHJvcGVydHkoQ1NTUHJvcGVydHlIZWlnaHQpOworICAg
ICAgICBlbHNlCisgICAgICAgICAgICBhZGRDU1NMZW5ndGgoQ1NTUHJvcGVydHlIZWlnaHQsIGF0
dHItPnZhbHVlKCkpOwogICAgIGVsc2UgaWYgKGF0dHJOYW1lID09IGJvcmRlckF0dHIpIHsKICAg
ICAgICAgLy8gYm9yZGVyPSJub2JvcmRlciIgLT4gYm9yZGVyPSIwIgogICAgICAgICBhcHBseUJv
cmRlckF0dHJpYnV0ZShhdHRyKTsKICAgICB9IGVsc2UgaWYgKGF0dHJOYW1lID09IHZzcGFjZUF0
dHIpIHsKLSAgICAgICAgYWRkQ1NTTGVuZ3RoKGF0dHIsIENTU1Byb3BlcnR5TWFyZ2luVG9wLCBh
dHRyLT52YWx1ZSgpKTsKLSAgICAgICAgYWRkQ1NTTGVuZ3RoKGF0dHIsIENTU1Byb3BlcnR5TWFy
Z2luQm90dG9tLCBhdHRyLT52YWx1ZSgpKTsKKyAgICAgICAgaWYgKGF0dHItPnZhbHVlKCkuaXNO
dWxsKCkpCisgICAgICAgICAgICByZW1vdmVDU1NQcm9wZXJ0aWVzKENTU1Byb3BlcnR5TWFyZ2lu
VG9wLCBDU1NQcm9wZXJ0eU1hcmdpbkJvdHRvbSk7CisgICAgICAgIGVsc2UgeworICAgICAgICAg
ICAgYWRkQ1NTTGVuZ3RoKENTU1Byb3BlcnR5TWFyZ2luVG9wLCBhdHRyLT52YWx1ZSgpKTsKKyAg
ICAgICAgICAgIGFkZENTU0xlbmd0aChDU1NQcm9wZXJ0eU1hcmdpbkJvdHRvbSwgYXR0ci0+dmFs
dWUoKSk7CisgICAgICAgIH0KICAgICB9IGVsc2UgaWYgKGF0dHJOYW1lID09IGhzcGFjZUF0dHIp
IHsKLSAgICAgICAgYWRkQ1NTTGVuZ3RoKGF0dHIsIENTU1Byb3BlcnR5TWFyZ2luTGVmdCwgYXR0
ci0+dmFsdWUoKSk7Ci0gICAgICAgIGFkZENTU0xlbmd0aChhdHRyLCBDU1NQcm9wZXJ0eU1hcmdp
blJpZ2h0LCBhdHRyLT52YWx1ZSgpKTsKKyAgICAgICAgaWYgKGF0dHItPnZhbHVlKCkuaXNOdWxs
KCkpCisgICAgICAgICAgICByZW1vdmVDU1NQcm9wZXJ0aWVzKENTU1Byb3BlcnR5TWFyZ2luTGVm
dCwgQ1NTUHJvcGVydHlNYXJnaW5SaWdodCk7CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAg
YWRkQ1NTTGVuZ3RoKENTU1Byb3BlcnR5TWFyZ2luTGVmdCwgYXR0ci0+dmFsdWUoKSk7CisgICAg
ICAgICAgICBhZGRDU1NMZW5ndGgoQ1NTUHJvcGVydHlNYXJnaW5SaWdodCwgYXR0ci0+dmFsdWUo
KSk7CisgICAgICAgIH0KICAgICB9IGVsc2UgaWYgKGF0dHJOYW1lID09IGFsaWduQXR0cikKICAg
ICAgICAgYWRkSFRNTEFsaWdubWVudChhdHRyKTsKICAgICBlbHNlIGlmIChhdHRyTmFtZSA9PSB2
YWxpZ25BdHRyKQotICAgICAgICBhZGRDU1NQcm9wZXJ0eShhdHRyLCBDU1NQcm9wZXJ0eVZlcnRp
Y2FsQWxpZ24sIGF0dHItPnZhbHVlKCkpOworICAgICAgICBpZiAoYXR0ci0+dmFsdWUoKS5pc051
bGwoKSkKKyAgICAgICAgICAgIHJlbW92ZUNTU1Byb3BlcnR5KENTU1Byb3BlcnR5VmVydGljYWxB
bGlnbik7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGFkZENTU1Byb3BlcnR5KENTU1Byb3Bl
cnR5VmVydGljYWxBbGlnbiwgYXR0ci0+dmFsdWUoKSk7CiAgICAgZWxzZSBpZiAoYXR0ck5hbWUg
PT0gdXNlbWFwQXR0cikKICAgICAgICAgc2V0SXNMaW5rKCFhdHRyLT5pc051bGwoKSk7CiAgICAg
ZWxzZSBpZiAoYXR0ck5hbWUgPT0gb25hYm9ydEF0dHIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxJbWFnZUVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElt
YWdlRWxlbWVudC5oCmluZGV4IDhjYjNlZTkuLmNmYTUyMGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTEltYWdlRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTEltYWdlRWxlbWVudC5oCkBAIC04Myw3ICs4Myw2IEBAIHByb3RlY3RlZDoKICAgICB2aXJ0
dWFsIHZvaWQgZGlkTW92ZVRvTmV3RG9jdW1lbnQoRG9jdW1lbnQqIG9sZERvY3VtZW50KSBPVkVS
UklERTsKIAogcHJpdmF0ZToKLSAgICB2aXJ0dWFsIGJvb2wgbWFwVG9FbnRyeShjb25zdCBRdWFs
aWZpZWROYW1lJiBhdHRyTmFtZSwgTWFwcGVkQXR0cmlidXRlRW50cnkmIHJlc3VsdCkgY29uc3Q7
CiAgICAgdmlydHVhbCB2b2lkIHBhcnNlTWFwcGVkQXR0cmlidXRlKEF0dHJpYnV0ZSopOwogCiAg
ICAgdmlydHVhbCB2b2lkIGF0dGFjaCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MSW5wdXRFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxl
bWVudC5jcHAKaW5kZXggNDEzYzEyNy4uYjY0YzBlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxJbnB1dEVsZW1lbnQuY3BwCkBAIC02NTksMjQgKzY1OSw2IEBAIHZvaWQgSFRNTElucHV0RWxl
bWVudDo6YWNjZXNzS2V5QWN0aW9uKGJvb2wgc2VuZE1vdXNlRXZlbnRzKQogICAgIG1faW5wdXRU
eXBlLT5hY2Nlc3NLZXlBY3Rpb24oc2VuZE1vdXNlRXZlbnRzKTsKIH0KIAotYm9vbCBIVE1MSW5w
dXRFbGVtZW50OjptYXBUb0VudHJ5KGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lLCBNYXBw
ZWRBdHRyaWJ1dGVFbnRyeSYgcmVzdWx0KSBjb25zdAotewotICAgIGlmICgoKGF0dHJOYW1lID09
IGhlaWdodEF0dHIgfHwgYXR0ck5hbWUgPT0gd2lkdGhBdHRyKSAmJiBtX2lucHV0VHlwZS0+c2hv
dWxkUmVzcGVjdEhlaWdodEFuZFdpZHRoQXR0cmlidXRlcygpKQotICAgICAgICB8fCBhdHRyTmFt
ZSA9PSB2c3BhY2VBdHRyCi0gICAgICAgIHx8IGF0dHJOYW1lID09IGhzcGFjZUF0dHIpIHsKLSAg
ICAgICAgcmVzdWx0ID0gZVVuaXZlcnNhbDsKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0K
LQotICAgIGlmIChhdHRyTmFtZSA9PSBhbGlnbkF0dHIgJiYgbV9pbnB1dFR5cGUtPnNob3VsZFJl
c3BlY3RBbGlnbkF0dHJpYnV0ZSgpKSB7Ci0gICAgICAgIC8vIFNoYXJlIHdpdGggPGltZz4gc2lu
Y2UgdGhlIGFsaWdubWVudCBiZWhhdmlvciBpcyB0aGUgc2FtZS4KLSAgICAgICAgcmVzdWx0ID0g
ZVJlcGxhY2VkOwotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotCi0gICAgcmV0dXJuIEhU
TUxFbGVtZW50OjptYXBUb0VudHJ5KGF0dHJOYW1lLCByZXN1bHQpOwotfQotCiB2b2lkIEhUTUxJ
bnB1dEVsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmlidXRlKEF0dHJpYnV0ZSogYXR0cikKIHsKICAg
ICBpZiAoYXR0ci0+bmFtZSgpID09IG5hbWVBdHRyKSB7CkBAIC03MzMsMjAgKzcxNSwyNiBAQCB2
b2lkIEhUTUxJbnB1dEVsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmlidXRlKEF0dHJpYnV0ZSogYXR0
cikKICAgICBlbHNlIGlmIChhdHRyLT5uYW1lKCkgPT0gdXNlbWFwQXR0ciB8fCBhdHRyLT5uYW1l
KCkgPT0gYWNjZXNza2V5QXR0cikgewogICAgICAgICAvLyBGSVhNRTogaWdub3JlIGZvciB0aGUg
bW9tZW50CiAgICAgfSBlbHNlIGlmIChhdHRyLT5uYW1lKCkgPT0gdnNwYWNlQXR0cikgewotICAg
ICAgICBhZGRDU1NMZW5ndGgoYXR0ciwgQ1NTUHJvcGVydHlNYXJnaW5Ub3AsIGF0dHItPnZhbHVl
KCkpOwotICAgICAgICBhZGRDU1NMZW5ndGgoYXR0ciwgQ1NTUHJvcGVydHlNYXJnaW5Cb3R0b20s
IGF0dHItPnZhbHVlKCkpOworICAgICAgICBhZGRDU1NMZW5ndGgoQ1NTUHJvcGVydHlNYXJnaW5U
b3AsIGF0dHItPnZhbHVlKCkpOworICAgICAgICBhZGRDU1NMZW5ndGgoQ1NTUHJvcGVydHlNYXJn
aW5Cb3R0b20sIGF0dHItPnZhbHVlKCkpOwogICAgIH0gZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09
IGhzcGFjZUF0dHIpIHsKLSAgICAgICAgYWRkQ1NTTGVuZ3RoKGF0dHIsIENTU1Byb3BlcnR5TWFy
Z2luTGVmdCwgYXR0ci0+dmFsdWUoKSk7Ci0gICAgICAgIGFkZENTU0xlbmd0aChhdHRyLCBDU1NQ
cm9wZXJ0eU1hcmdpblJpZ2h0LCBhdHRyLT52YWx1ZSgpKTsKKyAgICAgICAgYWRkQ1NTTGVuZ3Ro
KENTU1Byb3BlcnR5TWFyZ2luTGVmdCwgYXR0ci0+dmFsdWUoKSk7CisgICAgICAgIGFkZENTU0xl
bmd0aChDU1NQcm9wZXJ0eU1hcmdpblJpZ2h0LCBhdHRyLT52YWx1ZSgpKTsKICAgICB9IGVsc2Ug
aWYgKGF0dHItPm5hbWUoKSA9PSBhbGlnbkF0dHIpIHsKICAgICAgICAgaWYgKG1faW5wdXRUeXBl
LT5zaG91bGRSZXNwZWN0QWxpZ25BdHRyaWJ1dGUoKSkKICAgICAgICAgICAgIGFkZEhUTUxBbGln
bm1lbnQoYXR0cik7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHJlbW92ZUhUTUxBbGlnbm1l
bnQoKTsKICAgICB9IGVsc2UgaWYgKGF0dHItPm5hbWUoKSA9PSB3aWR0aEF0dHIpIHsKICAgICAg
ICAgaWYgKG1faW5wdXRUeXBlLT5zaG91bGRSZXNwZWN0SGVpZ2h0QW5kV2lkdGhBdHRyaWJ1dGVz
KCkpCi0gICAgICAgICAgICBhZGRDU1NMZW5ndGgoYXR0ciwgQ1NTUHJvcGVydHlXaWR0aCwgYXR0
ci0+dmFsdWUoKSk7CisgICAgICAgICAgICBhZGRDU1NMZW5ndGgoQ1NTUHJvcGVydHlXaWR0aCwg
YXR0ci0+dmFsdWUoKSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHJlbW92ZUNTU1Byb3Bl
cnR5KENTU1Byb3BlcnR5V2lkdGgpOwogICAgIH0gZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09IGhl
aWdodEF0dHIpIHsKICAgICAgICAgaWYgKG1faW5wdXRUeXBlLT5zaG91bGRSZXNwZWN0SGVpZ2h0
QW5kV2lkdGhBdHRyaWJ1dGVzKCkpCi0gICAgICAgICAgICBhZGRDU1NMZW5ndGgoYXR0ciwgQ1NT
UHJvcGVydHlIZWlnaHQsIGF0dHItPnZhbHVlKCkpOworICAgICAgICAgICAgYWRkQ1NTTGVuZ3Ro
KENTU1Byb3BlcnR5SGVpZ2h0LCBhdHRyLT52YWx1ZSgpKTsKKyAgICAgICAgZWxzZQorICAgICAg
ICAgICAgcmVtb3ZlQ1NTUHJvcGVydHkoQ1NTUHJvcGVydHlIZWlnaHQpOwogICAgIH0gZWxzZSBp
ZiAoYXR0ci0+bmFtZSgpID09IGJvcmRlckF0dHIgJiYgaXNJbWFnZUJ1dHRvbigpKSB7CiAgICAg
ICAgIGFwcGx5Qm9yZGVyQXR0cmlidXRlKGF0dHIpOwogICAgIH0gZWxzZSBpZiAoYXR0ci0+bmFt
ZSgpID09IG9uc2VhcmNoQXR0cikgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MSW5wdXRFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQu
aAppbmRleCA0N2FjNGQzLi45OTFmOGYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxJbnB1dEVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVs
ZW1lbnQuaApAQCAtMjc2LDcgKzI3Niw2IEBAIHByaXZhdGU6CiAKICAgICB2aXJ0dWFsIHZvaWQg
YWNjZXNzS2V5QWN0aW9uKGJvb2wgc2VuZE1vdXNlRXZlbnRzKTsKIAotICAgIHZpcnR1YWwgYm9v
bCBtYXBUb0VudHJ5KGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lLCBNYXBwZWRBdHRyaWJ1
dGVFbnRyeSYgcmVzdWx0KSBjb25zdDsKICAgICB2aXJ0dWFsIHZvaWQgcGFyc2VNYXBwZWRBdHRy
aWJ1dGUoQXR0cmlidXRlKik7CiAgICAgdmlydHVhbCB2b2lkIGZpbmlzaFBhcnNpbmdDaGlsZHJl
bigpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxMSUVsZW1lbnQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTElFbGVtZW50LmNwcAppbmRleCAzMjg4NmNiLi42
ODhmN2E0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxMSUVsZW1lbnQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTExJRWxlbWVudC5jcHAKQEAgLTQ5LDM0ICs0
OSwyNiBAQCBQYXNzUmVmUHRyPEhUTUxMSUVsZW1lbnQ+IEhUTUxMSUVsZW1lbnQ6OmNyZWF0ZShj
b25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEbwogICAgIHJldHVybiBhZG9wdFJlZihuZXcg
SFRNTExJRWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCkpOwogfQogCi1ib29sIEhUTUxMSUVsZW1l
bnQ6Om1hcFRvRW50cnkoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUsIE1hcHBlZEF0dHJp
YnV0ZUVudHJ5JiByZXN1bHQpIGNvbnN0Ci17Ci0gICAgaWYgKGF0dHJOYW1lID09IHR5cGVBdHRy
KSB7Ci0gICAgICAgIHJlc3VsdCA9IGVMaXN0SXRlbTsgLy8gU2hhcmUgd2l0aCA8b2w+IHNpbmNl
IGFsbCB0aGUgdmFsdWVzIGFyZSB0aGUgc2FtZQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAg
fQotICAgIAotICAgIHJldHVybiBIVE1MRWxlbWVudDo6bWFwVG9FbnRyeShhdHRyTmFtZSwgcmVz
dWx0KTsKLX0KLQogdm9pZCBIVE1MTElFbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpYnV0ZShBdHRy
aWJ1dGUqIGF0dHIpCiB7CiAgICAgaWYgKGF0dHItPm5hbWUoKSA9PSB2YWx1ZUF0dHIpIHsKICAg
ICAgICAgaWYgKHJlbmRlcmVyKCkgJiYgcmVuZGVyZXIoKS0+aXNMaXN0SXRlbSgpKQogICAgICAg
ICAgICAgcGFyc2VWYWx1ZShhdHRyLT52YWx1ZSgpKTsKICAgICB9IGVsc2UgaWYgKGF0dHItPm5h
bWUoKSA9PSB0eXBlQXR0cikgewotICAgICAgICBpZiAoYXR0ci0+dmFsdWUoKSA9PSAiYSIpCi0g
ICAgICAgICAgICBhZGRDU1NQcm9wZXJ0eShhdHRyLCBDU1NQcm9wZXJ0eUxpc3RTdHlsZVR5cGUs
IENTU1ZhbHVlTG93ZXJBbHBoYSk7CisgICAgICAgIGlmIChhdHRyLT52YWx1ZSgpLmlzTnVsbCgp
KQorICAgICAgICAgICAgcmVtb3ZlQ1NTUHJvcGVydHkoQ1NTUHJvcGVydHlMaXN0U3R5bGVUeXBl
KTsKKyAgICAgICAgZWxzZSBpZiAoYXR0ci0+dmFsdWUoKSA9PSAiYSIpCisgICAgICAgICAgICBh
ZGRDU1NQcm9wZXJ0eShDU1NQcm9wZXJ0eUxpc3RTdHlsZVR5cGUsIENTU1ZhbHVlTG93ZXJBbHBo
YSk7CiAgICAgICAgIGVsc2UgaWYgKGF0dHItPnZhbHVlKCkgPT0gIkEiKQotICAgICAgICAgICAg
YWRkQ1NTUHJvcGVydHkoYXR0ciwgQ1NTUHJvcGVydHlMaXN0U3R5bGVUeXBlLCBDU1NWYWx1ZVVw
cGVyQWxwaGEpOworICAgICAgICAgICAgYWRkQ1NTUHJvcGVydHkoQ1NTUHJvcGVydHlMaXN0U3R5
bGVUeXBlLCBDU1NWYWx1ZVVwcGVyQWxwaGEpOwogICAgICAgICBlbHNlIGlmIChhdHRyLT52YWx1
ZSgpID09ICJpIikKLSAgICAgICAgICAgIGFkZENTU1Byb3BlcnR5KGF0dHIsIENTU1Byb3BlcnR5
TGlzdFN0eWxlVHlwZSwgQ1NTVmFsdWVMb3dlclJvbWFuKTsKKyAgICAgICAgICAgIGFkZENTU1By
b3BlcnR5KENTU1Byb3BlcnR5TGlzdFN0eWxlVHlwZSwgQ1NTVmFsdWVMb3dlclJvbWFuKTsKICAg
ICAgICAgZWxzZSBpZiAoYXR0ci0+dmFsdWUoKSA9PSAiSSIpCi0gICAgICAgICAgICBhZGRDU1NQ
cm9wZXJ0eShhdHRyLCBDU1NQcm9wZXJ0eUxpc3RTdHlsZVR5cGUsIENTU1ZhbHVlVXBwZXJSb21h
bik7CisgICAgICAgICAgICBhZGRDU1NQcm9wZXJ0eShDU1NQcm9wZXJ0eUxpc3RTdHlsZVR5cGUs
IENTU1ZhbHVlVXBwZXJSb21hbik7CiAgICAgICAgIGVsc2UgaWYgKGF0dHItPnZhbHVlKCkgPT0g
IjEiKQotICAgICAgICAgICAgYWRkQ1NTUHJvcGVydHkoYXR0ciwgQ1NTUHJvcGVydHlMaXN0U3R5
bGVUeXBlLCBDU1NWYWx1ZURlY2ltYWwpOworICAgICAgICAgICAgYWRkQ1NTUHJvcGVydHkoQ1NT
UHJvcGVydHlMaXN0U3R5bGVUeXBlLCBDU1NWYWx1ZURlY2ltYWwpOwogICAgICAgICBlbHNlCi0g
ICAgICAgICAgICBhZGRDU1NQcm9wZXJ0eShhdHRyLCBDU1NQcm9wZXJ0eUxpc3RTdHlsZVR5cGUs
IGF0dHItPnZhbHVlKCkpOworICAgICAgICAgICAgYWRkQ1NTUHJvcGVydHkoQ1NTUHJvcGVydHlM
aXN0U3R5bGVUeXBlLCBhdHRyLT52YWx1ZSgpKTsKICAgICB9IGVsc2UKICAgICAgICAgSFRNTEVs
ZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmlidXRlKGF0dHIpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MTElFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxM
SUVsZW1lbnQuaAppbmRleCA3ZTZhOTUzLi44NjI2MDZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxMSUVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxM
SUVsZW1lbnQuaApAQCAtMzUsNyArMzUsNiBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIEhUTUxM
SUVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Kik7CiAKLSAgICB2aXJ0dWFs
IGJvb2wgbWFwVG9FbnRyeShjb25zdCBRdWFsaWZpZWROYW1lJiwgTWFwcGVkQXR0cmlidXRlRW50
cnkmKSBjb25zdDsKICAgICB2aXJ0dWFsIHZvaWQgcGFyc2VNYXBwZWRBdHRyaWJ1dGUoQXR0cmli
dXRlKik7CiAKICAgICB2aXJ0dWFsIHZvaWQgYXR0YWNoKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxNYXJxdWVlRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxNYXJxdWVlRWxlbWVudC5jcHAKaW5kZXggMDUzZmZhOC4uMjEyN2JjYSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWFycXVlZUVsZW1lbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTE1hcnF1ZWVFbGVtZW50LmNwcApAQCAtNTEsNjUgKzUxLDYzIEBA
IFBhc3NSZWZQdHI8SFRNTE1hcnF1ZWVFbGVtZW50PiBIVE1MTWFycXVlZUVsZW1lbnQ6OmNyZWF0
ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0CiAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBIVE1MTWFy
cXVlZUVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpKTsKIH0KIAotYm9vbCBIVE1MTWFycXVlZUVs
ZW1lbnQ6Om1hcFRvRW50cnkoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUsIE1hcHBlZEF0
dHJpYnV0ZUVudHJ5JiByZXN1bHQpIGNvbnN0Ci17Ci0gICAgaWYgKGF0dHJOYW1lID09IHdpZHRo
QXR0ciB8fAotICAgICAgICBhdHRyTmFtZSA9PSBoZWlnaHRBdHRyIHx8Ci0gICAgICAgIGF0dHJO
YW1lID09IGJnY29sb3JBdHRyIHx8Ci0gICAgICAgIGF0dHJOYW1lID09IHZzcGFjZUF0dHIgfHwK
LSAgICAgICAgYXR0ck5hbWUgPT0gaHNwYWNlQXR0ciB8fAotICAgICAgICBhdHRyTmFtZSA9PSBz
Y3JvbGxhbW91bnRBdHRyIHx8Ci0gICAgICAgIGF0dHJOYW1lID09IHNjcm9sbGRlbGF5QXR0ciB8
fAotICAgICAgICBhdHRyTmFtZSA9PSBsb29wQXR0ciB8fAotICAgICAgICBhdHRyTmFtZSA9PSBi
ZWhhdmlvckF0dHIgfHwKLSAgICAgICAgYXR0ck5hbWUgPT0gZGlyZWN0aW9uQXR0cikgewotICAg
ICAgICByZXN1bHQgPSBlVW5pdmVyc2FsOwotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQot
Ci0gICAgcmV0dXJuIEhUTUxFbGVtZW50OjptYXBUb0VudHJ5KGF0dHJOYW1lLCByZXN1bHQpOwot
fQotCiB2b2lkIEhUTUxNYXJxdWVlRWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUoQXR0cmli
dXRlKiBhdHRyKQogewogICAgIGlmIChhdHRyLT5uYW1lKCkgPT0gd2lkdGhBdHRyKSB7CiAgICAg
ICAgIGlmICghYXR0ci0+dmFsdWUoKS5pc0VtcHR5KCkpCi0gICAgICAgICAgICBhZGRDU1NMZW5n
dGgoYXR0ciwgQ1NTUHJvcGVydHlXaWR0aCwgYXR0ci0+dmFsdWUoKSk7CisgICAgICAgICAgICBh
ZGRDU1NMZW5ndGgoQ1NTUHJvcGVydHlXaWR0aCwgYXR0ci0+dmFsdWUoKSk7CisgICAgICAgIGVs
c2UKKyAgICAgICAgICAgIHJlbW92ZUNTU1Byb3BlcnR5KENTU1Byb3BlcnR5V2lkdGgpOwogICAg
IH0gZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09IGhlaWdodEF0dHIpIHsKICAgICAgICAgaWYgKCFh
dHRyLT52YWx1ZSgpLmlzRW1wdHkoKSkKLSAgICAgICAgICAgIGFkZENTU0xlbmd0aChhdHRyLCBD
U1NQcm9wZXJ0eUhlaWdodCwgYXR0ci0+dmFsdWUoKSk7CisgICAgICAgICAgICBhZGRDU1NMZW5n
dGgoQ1NTUHJvcGVydHlIZWlnaHQsIGF0dHItPnZhbHVlKCkpOworICAgICAgICBlbHNlCisgICAg
ICAgICAgICByZW1vdmVDU1NQcm9wZXJ0eShDU1NQcm9wZXJ0eUhlaWdodCk7CiAgICAgfSBlbHNl
IGlmIChhdHRyLT5uYW1lKCkgPT0gYmdjb2xvckF0dHIpIHsKICAgICAgICAgaWYgKCFhdHRyLT52
YWx1ZSgpLmlzRW1wdHkoKSkKLSAgICAgICAgICAgIGFkZENTU0NvbG9yKGF0dHIsIENTU1Byb3Bl
cnR5QmFja2dyb3VuZENvbG9yLCBhdHRyLT52YWx1ZSgpKTsKKyAgICAgICAgICAgIGFkZENTU0Nv
bG9yKENTU1Byb3BlcnR5QmFja2dyb3VuZENvbG9yLCBhdHRyLT52YWx1ZSgpKTsKKyAgICAgICAg
ZWxzZQorICAgICAgICAgICAgcmVtb3ZlQ1NTUHJvcGVydHkoQ1NTUHJvcGVydHlCYWNrZ3JvdW5k
Q29sb3IpOwogICAgIH0gZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09IHZzcGFjZUF0dHIpIHsKICAg
ICAgICAgaWYgKCFhdHRyLT52YWx1ZSgpLmlzRW1wdHkoKSkgewotICAgICAgICAgICAgYWRkQ1NT
TGVuZ3RoKGF0dHIsIENTU1Byb3BlcnR5TWFyZ2luVG9wLCBhdHRyLT52YWx1ZSgpKTsKLSAgICAg
ICAgICAgIGFkZENTU0xlbmd0aChhdHRyLCBDU1NQcm9wZXJ0eU1hcmdpbkJvdHRvbSwgYXR0ci0+
dmFsdWUoKSk7Ci0gICAgICAgIH0KKyAgICAgICAgICAgIGFkZENTU0xlbmd0aChDU1NQcm9wZXJ0
eU1hcmdpblRvcCwgYXR0ci0+dmFsdWUoKSk7CisgICAgICAgICAgICBhZGRDU1NMZW5ndGgoQ1NT
UHJvcGVydHlNYXJnaW5Cb3R0b20sIGF0dHItPnZhbHVlKCkpOworICAgICAgICB9IGVsc2UKKyAg
ICAgICAgICAgIHJlbW92ZUNTU1Byb3BlcnRpZXMoQ1NTUHJvcGVydHlNYXJnaW5Ub3AsIENTU1By
b3BlcnR5TWFyZ2luQm90dG9tKTsKICAgICB9IGVsc2UgaWYgKGF0dHItPm5hbWUoKSA9PSBoc3Bh
Y2VBdHRyKSB7CiAgICAgICAgIGlmICghYXR0ci0+dmFsdWUoKS5pc0VtcHR5KCkpIHsKLSAgICAg
ICAgICAgIGFkZENTU0xlbmd0aChhdHRyLCBDU1NQcm9wZXJ0eU1hcmdpbkxlZnQsIGF0dHItPnZh
bHVlKCkpOwotICAgICAgICAgICAgYWRkQ1NTTGVuZ3RoKGF0dHIsIENTU1Byb3BlcnR5TWFyZ2lu
UmlnaHQsIGF0dHItPnZhbHVlKCkpOwotICAgICAgICB9CisgICAgICAgICAgICBhZGRDU1NMZW5n
dGgoQ1NTUHJvcGVydHlNYXJnaW5MZWZ0LCBhdHRyLT52YWx1ZSgpKTsKKyAgICAgICAgICAgIGFk
ZENTU0xlbmd0aChDU1NQcm9wZXJ0eU1hcmdpblJpZ2h0LCBhdHRyLT52YWx1ZSgpKTsKKyAgICAg
ICAgfSBlbHNlCisgICAgICAgICAgICByZW1vdmVDU1NQcm9wZXJ0aWVzKENTU1Byb3BlcnR5TWFy
Z2luTGVmdCwgQ1NTUHJvcGVydHlNYXJnaW5SaWdodCk7CiAgICAgfSBlbHNlIGlmIChhdHRyLT5u
YW1lKCkgPT0gc2Nyb2xsYW1vdW50QXR0cikgewogICAgICAgICBpZiAoIWF0dHItPnZhbHVlKCku
aXNFbXB0eSgpKQotICAgICAgICAgICAgYWRkQ1NTTGVuZ3RoKGF0dHIsIENTU1Byb3BlcnR5V2Vi
a2l0TWFycXVlZUluY3JlbWVudCwgYXR0ci0+dmFsdWUoKSk7CisgICAgICAgICAgICBhZGRDU1NM
ZW5ndGgoQ1NTUHJvcGVydHlXZWJraXRNYXJxdWVlSW5jcmVtZW50LCBhdHRyLT52YWx1ZSgpKTsK
KyAgICAgICAgZWxzZQorICAgICAgICAgICAgcmVtb3ZlQ1NTUHJvcGVydHkoQ1NTUHJvcGVydHlX
ZWJraXRNYXJxdWVlSW5jcmVtZW50KTsKICAgICB9IGVsc2UgaWYgKGF0dHItPm5hbWUoKSA9PSBz
Y3JvbGxkZWxheUF0dHIpIHsKICAgICAgICAgaWYgKCFhdHRyLT52YWx1ZSgpLmlzRW1wdHkoKSkK
LSAgICAgICAgICAgIGFkZENTU0xlbmd0aChhdHRyLCBDU1NQcm9wZXJ0eVdlYmtpdE1hcnF1ZWVT
cGVlZCwgYXR0ci0+dmFsdWUoKSk7CisgICAgICAgICAgICBhZGRDU1NMZW5ndGgoQ1NTUHJvcGVy
dHlXZWJraXRNYXJxdWVlU3BlZWQsIGF0dHItPnZhbHVlKCkpOworICAgICAgICBlbHNlCisgICAg
ICAgICAgICByZW1vdmVDU1NQcm9wZXJ0eShDU1NQcm9wZXJ0eVdlYmtpdE1hcnF1ZWVTcGVlZCk7
CiAgICAgfSBlbHNlIGlmIChhdHRyLT5uYW1lKCkgPT0gbG9vcEF0dHIpIHsKICAgICAgICAgaWYg
KCFhdHRyLT52YWx1ZSgpLmlzRW1wdHkoKSkgewogICAgICAgICAgICAgaWYgKGF0dHItPnZhbHVl
KCkgPT0gIi0xIiB8fCBlcXVhbElnbm9yaW5nQ2FzZShhdHRyLT52YWx1ZSgpLCAiaW5maW5pdGUi
KSkKLSAgICAgICAgICAgICAgICBhZGRDU1NQcm9wZXJ0eShhdHRyLCBDU1NQcm9wZXJ0eVdlYmtp
dE1hcnF1ZWVSZXBldGl0aW9uLCBDU1NWYWx1ZUluZmluaXRlKTsKKyAgICAgICAgICAgICAgICBh
ZGRDU1NQcm9wZXJ0eShDU1NQcm9wZXJ0eVdlYmtpdE1hcnF1ZWVSZXBldGl0aW9uLCBDU1NWYWx1
ZUluZmluaXRlKTsKICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBhZGRDU1NMZW5n
dGgoYXR0ciwgQ1NTUHJvcGVydHlXZWJraXRNYXJxdWVlUmVwZXRpdGlvbiwgYXR0ci0+dmFsdWUo
KSk7Ci0gICAgICAgIH0KKyAgICAgICAgICAgICAgICBhZGRDU1NMZW5ndGgoQ1NTUHJvcGVydHlX
ZWJraXRNYXJxdWVlUmVwZXRpdGlvbiwgYXR0ci0+dmFsdWUoKSk7CisgICAgICAgIH0gZWxzZQor
ICAgICAgICAgICAgcmVtb3ZlQ1NTUHJvcGVydHkoQ1NTUHJvcGVydHlXZWJraXRNYXJxdWVlUmVw
ZXRpdGlvbik7CiAgICAgfSBlbHNlIGlmIChhdHRyLT5uYW1lKCkgPT0gYmVoYXZpb3JBdHRyKSB7
CiAgICAgICAgIGlmICghYXR0ci0+dmFsdWUoKS5pc0VtcHR5KCkpCi0gICAgICAgICAgICBhZGRD
U1NQcm9wZXJ0eShhdHRyLCBDU1NQcm9wZXJ0eVdlYmtpdE1hcnF1ZWVTdHlsZSwgYXR0ci0+dmFs
dWUoKSk7CisgICAgICAgICAgICBhZGRDU1NQcm9wZXJ0eShDU1NQcm9wZXJ0eVdlYmtpdE1hcnF1
ZWVTdHlsZSwgYXR0ci0+dmFsdWUoKSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHJlbW92
ZUNTU1Byb3BlcnR5KENTU1Byb3BlcnR5V2Via2l0TWFycXVlZVN0eWxlKTsKICAgICB9IGVsc2Ug
aWYgKGF0dHItPm5hbWUoKSA9PSBkaXJlY3Rpb25BdHRyKSB7CiAgICAgICAgIGlmICghYXR0ci0+
dmFsdWUoKS5pc0VtcHR5KCkpCi0gICAgICAgICAgICBhZGRDU1NQcm9wZXJ0eShhdHRyLCBDU1NQ
cm9wZXJ0eVdlYmtpdE1hcnF1ZWVEaXJlY3Rpb24sIGF0dHItPnZhbHVlKCkpOworICAgICAgICAg
ICAgYWRkQ1NTUHJvcGVydHkoQ1NTUHJvcGVydHlXZWJraXRNYXJxdWVlRGlyZWN0aW9uLCBhdHRy
LT52YWx1ZSgpKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgcmVtb3ZlQ1NTUHJvcGVydHko
Q1NTUHJvcGVydHlXZWJraXRNYXJxdWVlRGlyZWN0aW9uKTsKICAgICB9IGVsc2UgaWYgKGF0dHIt
Pm5hbWUoKSA9PSB0cnVlc3BlZWRBdHRyKQogICAgICAgICBtX21pbmltdW1EZWxheSA9ICFhdHRy
LT5pc0VtcHR5KCkgPyAwIDogZGVmYXVsdE1pbmltdW1EZWxheTsKICAgICBlbHNlCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNYXJxdWVlRWxlbWVudC5oIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MTWFycXVlZUVsZW1lbnQuaAppbmRleCA1ODZhYTZmLi5hYzM5NTNmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNYXJxdWVlRWxlbWVudC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1hcnF1ZWVFbGVtZW50LmgKQEAgLTUzLDcgKzUzLDYg
QEAgcHVibGljOgogcHJpdmF0ZToKICAgICBIVE1MTWFycXVlZUVsZW1lbnQoY29uc3QgUXVhbGlm
aWVkTmFtZSYsIERvY3VtZW50Kik7CiAKLSAgICB2aXJ0dWFsIGJvb2wgbWFwVG9FbnRyeShjb25z
dCBRdWFsaWZpZWROYW1lJiwgTWFwcGVkQXR0cmlidXRlRW50cnkmKSBjb25zdDsKICAgICB2aXJ0
dWFsIHZvaWQgcGFyc2VNYXBwZWRBdHRyaWJ1dGUoQXR0cmlidXRlKik7CiAKICAgICAvLyBBY3Rp
dmVET01PYmplY3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9MaXN0RWxl
bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPTGlzdEVsZW1lbnQuY3BwCmluZGV4
IGQ5MGEyZjcuLjMyMjk1MTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9M
aXN0RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT0xpc3RFbGVtZW50
LmNwcApAQCAtNTQsMjkgKzU0LDIxIEBAIFBhc3NSZWZQdHI8SFRNTE9MaXN0RWxlbWVudD4gSFRN
TE9MaXN0RWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hCiAgICAgcmV0
dXJuIGFkb3B0UmVmKG5ldyBIVE1MT0xpc3RFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KSk7CiB9
CiAKLWJvb2wgSFRNTE9MaXN0RWxlbWVudDo6bWFwVG9FbnRyeShjb25zdCBRdWFsaWZpZWROYW1l
JiBhdHRyTmFtZSwgTWFwcGVkQXR0cmlidXRlRW50cnkmIHJlc3VsdCkgY29uc3QKLXsKLSAgICBp
ZiAoYXR0ck5hbWUgPT0gdHlwZUF0dHIpIHsKLSAgICAgICAgcmVzdWx0ID0gZUxpc3RJdGVtOyAv
LyBTaGFyZSB3aXRoIDxsaT4KLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLSAgICAKLSAg
ICByZXR1cm4gSFRNTEVsZW1lbnQ6Om1hcFRvRW50cnkoYXR0ck5hbWUsIHJlc3VsdCk7Ci19Ci0K
IHZvaWQgSFRNTE9MaXN0RWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUoQXR0cmlidXRlKiBh
dHRyKQogewogICAgIGlmIChhdHRyLT5uYW1lKCkgPT0gdHlwZUF0dHIpIHsKICAgICAgICAgaWYg
KGF0dHItPnZhbHVlKCkgPT0gImEiKQotICAgICAgICAgICAgYWRkQ1NTUHJvcGVydHkoYXR0ciwg
Q1NTUHJvcGVydHlMaXN0U3R5bGVUeXBlLCBDU1NWYWx1ZUxvd2VyQWxwaGEpOworICAgICAgICAg
ICAgYWRkQ1NTUHJvcGVydHkoQ1NTUHJvcGVydHlMaXN0U3R5bGVUeXBlLCBDU1NWYWx1ZUxvd2Vy
QWxwaGEpOwogICAgICAgICBlbHNlIGlmIChhdHRyLT52YWx1ZSgpID09ICJBIikKLSAgICAgICAg
ICAgIGFkZENTU1Byb3BlcnR5KGF0dHIsIENTU1Byb3BlcnR5TGlzdFN0eWxlVHlwZSwgQ1NTVmFs
dWVVcHBlckFscGhhKTsKKyAgICAgICAgICAgIGFkZENTU1Byb3BlcnR5KENTU1Byb3BlcnR5TGlz
dFN0eWxlVHlwZSwgQ1NTVmFsdWVVcHBlckFscGhhKTsKICAgICAgICAgZWxzZSBpZiAoYXR0ci0+
dmFsdWUoKSA9PSAiaSIpCi0gICAgICAgICAgICBhZGRDU1NQcm9wZXJ0eShhdHRyLCBDU1NQcm9w
ZXJ0eUxpc3RTdHlsZVR5cGUsIENTU1ZhbHVlTG93ZXJSb21hbik7CisgICAgICAgICAgICBhZGRD
U1NQcm9wZXJ0eShDU1NQcm9wZXJ0eUxpc3RTdHlsZVR5cGUsIENTU1ZhbHVlTG93ZXJSb21hbik7
CiAgICAgICAgIGVsc2UgaWYgKGF0dHItPnZhbHVlKCkgPT0gIkkiKQotICAgICAgICAgICAgYWRk
Q1NTUHJvcGVydHkoYXR0ciwgQ1NTUHJvcGVydHlMaXN0U3R5bGVUeXBlLCBDU1NWYWx1ZVVwcGVy
Um9tYW4pOworICAgICAgICAgICAgYWRkQ1NTUHJvcGVydHkoQ1NTUHJvcGVydHlMaXN0U3R5bGVU
eXBlLCBDU1NWYWx1ZVVwcGVyUm9tYW4pOwogICAgICAgICBlbHNlIGlmIChhdHRyLT52YWx1ZSgp
ID09ICIxIikKLSAgICAgICAgICAgIGFkZENTU1Byb3BlcnR5KGF0dHIsIENTU1Byb3BlcnR5TGlz
dFN0eWxlVHlwZSwgQ1NTVmFsdWVEZWNpbWFsKTsKKyAgICAgICAgICAgIGFkZENTU1Byb3BlcnR5
KENTU1Byb3BlcnR5TGlzdFN0eWxlVHlwZSwgQ1NTVmFsdWVEZWNpbWFsKTsKKyAgICAgICAgZWxz
ZQorICAgICAgICAgICAgcmVtb3ZlQ1NTUHJvcGVydHkoQ1NTUHJvcGVydHlMaXN0U3R5bGVUeXBl
KTsKICAgICB9IGVsc2UgaWYgKGF0dHItPm5hbWUoKSA9PSBzdGFydEF0dHIpIHsKICAgICAgICAg
aW50IG9sZFN0YXJ0ID0gc3RhcnQoKTsKICAgICAgICAgYm9vbCBjYW5QYXJzZTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9MaXN0RWxlbWVudC5oIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MT0xpc3RFbGVtZW50LmgKaW5kZXggODAwMGIyOC4uMDE3OTU3ZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT0xpc3RFbGVtZW50LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MT0xpc3RFbGVtZW50LmgKQEAgLTUzLDcgKzUzLDYgQEAgcHJpdmF0
ZToKIAogICAgIHZvaWQgcmVjYWxjdWxhdGVJdGVtQ291bnQoKTsKIAotICAgIHZpcnR1YWwgYm9v
bCBtYXBUb0VudHJ5KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBNYXBwZWRBdHRyaWJ1dGVFbnRyeSYp
IGNvbnN0OwogICAgIHZpcnR1YWwgdm9pZCBwYXJzZU1hcHBlZEF0dHJpYnV0ZShBdHRyaWJ1dGUq
KTsKIAogICAgIGludCBtX3N0YXJ0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MT3V0cHV0RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPdXRwdXRFbGVt
ZW50LmNwcAppbmRleCBlZTNjMGQ4Li5hODViZmQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxPdXRwdXRFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxPdXRwdXRFbGVtZW50LmNwcApAQCAtNjEsMTYgKzYxLDYgQEAgYm9vbCBIVE1MT3V0cHV0RWxl
bWVudDo6c3VwcG9ydHNGb2N1cygpIGNvbnN0CiAgICAgcmV0dXJuIE5vZGU6OnN1cHBvcnRzRm9j
dXMoKSAmJiAhZGlzYWJsZWQoKTsKIH0KIAotYm9vbCBIVE1MT3V0cHV0RWxlbWVudDo6bWFwVG9F
bnRyeShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSwgTWFwcGVkQXR0cmlidXRlRW50cnkm
IHJlc3VsdCkgY29uc3QKLXsKLSAgICBpZiAoYXR0ck5hbWUgPT0gSFRNTE5hbWVzOjpkaXJBdHRy
KSB7Ci0gICAgICAgIHJlc3VsdCA9IGVCREk7Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAgIH0K
LQotICAgIHJldHVybiBIVE1MRWxlbWVudDo6bWFwVG9FbnRyeShhdHRyTmFtZSwgcmVzdWx0KTsK
LX0KLQogdm9pZCBIVE1MT3V0cHV0RWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUoQXR0cmli
dXRlKiBhdHRyKQogewogICAgIGlmIChhdHRyLT5uYW1lKCkgPT0gSFRNTE5hbWVzOjpmb3JBdHRy
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT3V0cHV0RWxlbWVudC5oIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT3V0cHV0RWxlbWVudC5oCmluZGV4IDgzZGY3ZmEuLjk2
OWM2Y2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE91dHB1dEVsZW1lbnQu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPdXRwdXRFbGVtZW50LmgKQEAgLTU1LDcg
KzU1LDYgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBIVE1MT3V0cHV0RWxlbWVudChjb25zdCBR
dWFsaWZpZWROYW1lJiwgRG9jdW1lbnQqLCBIVE1MRm9ybUVsZW1lbnQqKTsKIAotICAgIHZpcnR1
YWwgYm9vbCBtYXBUb0VudHJ5KGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lLCBNYXBwZWRB
dHRyaWJ1dGVFbnRyeSYgcmVzdWx0KSBjb25zdCBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQg
cGFyc2VNYXBwZWRBdHRyaWJ1dGUoQXR0cmlidXRlKik7CiAgICAgdmlydHVhbCBjb25zdCBBdG9t
aWNTdHJpbmcmIGZvcm1Db250cm9sVHlwZSgpIGNvbnN0OwogICAgIHZpcnR1YWwgYm9vbCBpc0Vu
dW1lcmF0YWJsZSgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTFBhcmFncmFwaEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MUGFyYWdyYXBoRWxlbWVudC5jcHAKaW5kZXggZThhNWFhNy4uMjQ1NWM1YyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGFyYWdyYXBoRWxlbWVudC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGFyYWdyYXBoRWxlbWVudC5jcHAKQEAgLTQ0LDI2ICs0
NCwxOSBAQCBQYXNzUmVmUHRyPEhUTUxQYXJhZ3JhcGhFbGVtZW50PiBIVE1MUGFyYWdyYXBoRWxl
bWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbQogICAgIHJldHVybiBhZG9wdFJlZihuZXcg
SFRNTFBhcmFncmFwaEVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpKTsKIH0KIAotYm9vbCBIVE1M
UGFyYWdyYXBoRWxlbWVudDo6bWFwVG9FbnRyeShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFt
ZSwgTWFwcGVkQXR0cmlidXRlRW50cnkmIHJlc3VsdCkgY29uc3QKLXsKLSAgICBpZiAoYXR0ck5h
bWUgPT0gYWxpZ25BdHRyKSB7Ci0gICAgICAgIHJlc3VsdCA9IGVCbG9jazsgLy8gV2UgY2FuIHNo
YXJlIHdpdGggRElWIGhlcmUuCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0gICAgcmV0
dXJuIEhUTUxFbGVtZW50OjptYXBUb0VudHJ5KGF0dHJOYW1lLCByZXN1bHQpOwotfQotCiB2b2lk
IEhUTUxQYXJhZ3JhcGhFbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpYnV0ZShBdHRyaWJ1dGUqIGF0
dHIpCiB7CiAgICAgaWYgKGF0dHItPm5hbWUoKSA9PSBhbGlnbkF0dHIpIHsKLSAgICAgICAgaWYg
KGVxdWFsSWdub3JpbmdDYXNlKGF0dHItPnZhbHVlKCksICJtaWRkbGUiKSB8fCBlcXVhbElnbm9y
aW5nQ2FzZShhdHRyLT52YWx1ZSgpLCAiY2VudGVyIikpCi0gICAgICAgICAgICBhZGRDU1NQcm9w
ZXJ0eShhdHRyLCBDU1NQcm9wZXJ0eVRleHRBbGlnbiwgQ1NTVmFsdWVXZWJraXRDZW50ZXIpOwor
ICAgICAgICBpZiAoYXR0ci0+dmFsdWUoKS5pc051bGwoKSkKKyAgICAgICAgICAgIHJlbW92ZUNT
U1Byb3BlcnR5KENTU1Byb3BlcnR5VGV4dEFsaWduKTsKKyAgICAgICAgZWxzZSBpZiAoZXF1YWxJ
Z25vcmluZ0Nhc2UoYXR0ci0+dmFsdWUoKSwgIm1pZGRsZSIpIHx8IGVxdWFsSWdub3JpbmdDYXNl
KGF0dHItPnZhbHVlKCksICJjZW50ZXIiKSkKKyAgICAgICAgICAgIGFkZENTU1Byb3BlcnR5KENT
U1Byb3BlcnR5VGV4dEFsaWduLCBDU1NWYWx1ZVdlYmtpdENlbnRlcik7CiAgICAgICAgIGVsc2Ug
aWYgKGVxdWFsSWdub3JpbmdDYXNlKGF0dHItPnZhbHVlKCksICJsZWZ0IikpCi0gICAgICAgICAg
ICBhZGRDU1NQcm9wZXJ0eShhdHRyLCBDU1NQcm9wZXJ0eVRleHRBbGlnbiwgQ1NTVmFsdWVXZWJr
aXRMZWZ0KTsKKyAgICAgICAgICAgIGFkZENTU1Byb3BlcnR5KENTU1Byb3BlcnR5VGV4dEFsaWdu
LCBDU1NWYWx1ZVdlYmtpdExlZnQpOwogICAgICAgICBlbHNlIGlmIChlcXVhbElnbm9yaW5nQ2Fz
ZShhdHRyLT52YWx1ZSgpLCAicmlnaHQiKSkKLSAgICAgICAgICAgIGFkZENTU1Byb3BlcnR5KGF0
dHIsIENTU1Byb3BlcnR5VGV4dEFsaWduLCBDU1NWYWx1ZVdlYmtpdFJpZ2h0KTsKKyAgICAgICAg
ICAgIGFkZENTU1Byb3BlcnR5KENTU1Byb3BlcnR5VGV4dEFsaWduLCBDU1NWYWx1ZVdlYmtpdFJp
Z2h0KTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgYWRkQ1NTUHJvcGVydHkoYXR0ciwgQ1NT
UHJvcGVydHlUZXh0QWxpZ24sIGF0dHItPnZhbHVlKCkpOworICAgICAgICAgICAgYWRkQ1NTUHJv
cGVydHkoQ1NTUHJvcGVydHlUZXh0QWxpZ24sIGF0dHItPnZhbHVlKCkpOwogICAgIH0gZWxzZQog
ICAgICAgICBIVE1MRWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUoYXR0cik7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQYXJhZ3JhcGhFbGVtZW50LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxQYXJhZ3JhcGhFbGVtZW50LmgKaW5kZXggNmRiZjA3MS4uZWE4
NzlhOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGFyYWdyYXBoRWxlbWVu
dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBhcmFncmFwaEVsZW1lbnQuaApAQCAt
MzQsNyArMzQsNiBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIEhUTUxQYXJhZ3JhcGhFbGVtZW50
KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCopOwogCi0gICAgdmlydHVhbCBib29sIG1h
cFRvRW50cnkoY29uc3QgUXVhbGlmaWVkTmFtZSYsIE1hcHBlZEF0dHJpYnV0ZUVudHJ5JikgY29u
c3Q7CiAgICAgdmlydHVhbCB2b2lkIHBhcnNlTWFwcGVkQXR0cmlidXRlKEF0dHJpYnV0ZSopOwog
fTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGx1Z0luRWxlbWVudC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQbHVnSW5FbGVtZW50LmNwcAppbmRleCA2MjI5
ZDJlLi43Mjg3YmMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQbHVnSW5F
bGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQbHVnSW5FbGVtZW50LmNw
cApAQCAtMTM2LDM2ICsxMzYsMzIgQEAgV2lkZ2V0KiBIVE1MUGx1Z0luRWxlbWVudDo6cGx1Z2lu
V2lkZ2V0KCkKICAgICByZXR1cm4gcmVuZGVyV2lkZ2V0LT53aWRnZXQoKTsKIH0KIAotYm9vbCBI
VE1MUGx1Z0luRWxlbWVudDo6bWFwVG9FbnRyeShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFt
ZSwgTWFwcGVkQXR0cmlidXRlRW50cnkmIHJlc3VsdCkgY29uc3QKLXsKLSAgICBpZiAoYXR0ck5h
bWUgPT0gd2lkdGhBdHRyIHx8Ci0gICAgICAgIGF0dHJOYW1lID09IGhlaWdodEF0dHIgfHwKLSAg
ICAgICAgYXR0ck5hbWUgPT0gdnNwYWNlQXR0ciB8fAotICAgICAgICBhdHRyTmFtZSA9PSBoc3Bh
Y2VBdHRyKSB7Ci0gICAgICAgICAgICByZXN1bHQgPSBlVW5pdmVyc2FsOwotICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOwotICAgIH0KLSAgICAKLSAgICBpZiAoYXR0ck5hbWUgPT0gYWxpZ25BdHRy
KSB7Ci0gICAgICAgIHJlc3VsdCA9IGVSZXBsYWNlZDsgLy8gU2hhcmUgd2l0aCA8aW1nPiBzaW5j
ZSB0aGUgYWxpZ25tZW50IGJlaGF2aW9yIGlzIHRoZSBzYW1lLgotICAgICAgICByZXR1cm4gZmFs
c2U7Ci0gICAgfQotICAgIAotICAgIHJldHVybiBIVE1MRnJhbWVPd25lckVsZW1lbnQ6Om1hcFRv
RW50cnkoYXR0ck5hbWUsIHJlc3VsdCk7Ci19Ci0KIHZvaWQgSFRNTFBsdWdJbkVsZW1lbnQ6OnBh
cnNlTWFwcGVkQXR0cmlidXRlKEF0dHJpYnV0ZSogYXR0cikKIHsKICAgICBpZiAoYXR0ci0+bmFt
ZSgpID09IHdpZHRoQXR0cikKLSAgICAgICAgYWRkQ1NTTGVuZ3RoKGF0dHIsIENTU1Byb3BlcnR5
V2lkdGgsIGF0dHItPnZhbHVlKCkpOworICAgICAgICBpZiAoYXR0ci0+aXNOdWxsKCkpCisgICAg
ICAgICAgICByZW1vdmVDU1NQcm9wZXJ0eShDU1NQcm9wZXJ0eVdpZHRoKTsKKyAgICAgICAgZWxz
ZQorICAgICAgICAgICAgYWRkQ1NTTGVuZ3RoKENTU1Byb3BlcnR5V2lkdGgsIGF0dHItPnZhbHVl
KCkpOwogICAgIGVsc2UgaWYgKGF0dHItPm5hbWUoKSA9PSBoZWlnaHRBdHRyKQotICAgICAgICBh
ZGRDU1NMZW5ndGgoYXR0ciwgQ1NTUHJvcGVydHlIZWlnaHQsIGF0dHItPnZhbHVlKCkpOworICAg
ICAgICBpZiAoYXR0ci0+aXNOdWxsKCkpCisgICAgICAgICAgICByZW1vdmVDU1NQcm9wZXJ0eShD
U1NQcm9wZXJ0eUhlaWdodCk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGFkZENTU0xlbmd0
aChDU1NQcm9wZXJ0eUhlaWdodCwgYXR0ci0+dmFsdWUoKSk7CiAgICAgZWxzZSBpZiAoYXR0ci0+
bmFtZSgpID09IHZzcGFjZUF0dHIpIHsKLSAgICAgICAgYWRkQ1NTTGVuZ3RoKGF0dHIsIENTU1By
b3BlcnR5TWFyZ2luVG9wLCBhdHRyLT52YWx1ZSgpKTsKLSAgICAgICAgYWRkQ1NTTGVuZ3RoKGF0
dHIsIENTU1Byb3BlcnR5TWFyZ2luQm90dG9tLCBhdHRyLT52YWx1ZSgpKTsKKyAgICAgICAgaWYg
KGF0dHItPmlzTnVsbCgpKQorICAgICAgICAgICAgcmVtb3ZlQ1NTUHJvcGVydGllcyhDU1NQcm9w
ZXJ0eU1hcmdpblRvcCwgQ1NTUHJvcGVydHlNYXJnaW5Cb3R0b20pOworICAgICAgICBlbHNlIHsK
KyAgICAgICAgICAgIGFkZENTU0xlbmd0aChDU1NQcm9wZXJ0eU1hcmdpblRvcCwgYXR0ci0+dmFs
dWUoKSk7CisgICAgICAgICAgICBhZGRDU1NMZW5ndGgoQ1NTUHJvcGVydHlNYXJnaW5Cb3R0b20s
IGF0dHItPnZhbHVlKCkpOworICAgICAgICB9CiAgICAgfSBlbHNlIGlmIChhdHRyLT5uYW1lKCkg
PT0gaHNwYWNlQXR0cikgewotICAgICAgICBhZGRDU1NMZW5ndGgoYXR0ciwgQ1NTUHJvcGVydHlN
YXJnaW5MZWZ0LCBhdHRyLT52YWx1ZSgpKTsKLSAgICAgICAgYWRkQ1NTTGVuZ3RoKGF0dHIsIENT
U1Byb3BlcnR5TWFyZ2luUmlnaHQsIGF0dHItPnZhbHVlKCkpOworICAgICAgICBpZiAoYXR0ci0+
aXNOdWxsKCkpCisgICAgICAgICAgICByZW1vdmVDU1NQcm9wZXJ0aWVzKENTU1Byb3BlcnR5TWFy
Z2luTGVmdCwgQ1NTUHJvcGVydHlNYXJnaW5SaWdodCk7CisgICAgICAgIGVsc2UgeworICAgICAg
ICAgICAgYWRkQ1NTTGVuZ3RoKENTU1Byb3BlcnR5TWFyZ2luTGVmdCwgYXR0ci0+dmFsdWUoKSk7
CisgICAgICAgICAgICBhZGRDU1NMZW5ndGgoQ1NTUHJvcGVydHlNYXJnaW5SaWdodCwgYXR0ci0+
dmFsdWUoKSk7CisgICAgICAgIH0KICAgICB9IGVsc2UgaWYgKGF0dHItPm5hbWUoKSA9PSBhbGln
bkF0dHIpCiAgICAgICAgIGFkZEhUTUxBbGlnbm1lbnQoYXR0cik7CiAgICAgZWxzZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGx1Z0luRWxlbWVudC5oIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MUGx1Z0luRWxlbWVudC5oCmluZGV4IGExMGFmNjEuLmFiOWE0OWYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBsdWdJbkVsZW1lbnQuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQbHVnSW5FbGVtZW50LmgKQEAgLTU4LDcgKzU4LDYgQEAg
cHJvdGVjdGVkOgogCiAgICAgdmlydHVhbCB2b2lkIGRldGFjaCgpOwogICAgIHZpcnR1YWwgdm9p
ZCByZW1vdmVkRnJvbURvY3VtZW50KCk7Ci0gICAgdmlydHVhbCBib29sIG1hcFRvRW50cnkoY29u
c3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUsIE1hcHBlZEF0dHJpYnV0ZUVudHJ5JiByZXN1bHQp
IGNvbnN0OwogICAgIHZpcnR1YWwgdm9pZCBwYXJzZU1hcHBlZEF0dHJpYnV0ZShBdHRyaWJ1dGUq
KTsKIAogICAgIGJvb2wgbV9pbkJlZm9yZUxvYWRFdmVudEhhbmRsZXI7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQcmVFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTFByZUVsZW1lbnQuY3BwCmluZGV4IGZjNjdhY2EuLjBlOTU4YmYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFByZUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTFByZUVsZW1lbnQuY3BwCkBAIC00MiwxNSArNDIsNiBAQCBQYXNzUmVmUHRy
PEhUTUxQcmVFbGVtZW50PiBIVE1MUHJlRWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5h
bWUmIHRhZ05hbWUsCiAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBIVE1MUHJlRWxlbWVudCh0YWdO
YW1lLCBkb2N1bWVudCkpOwogfQogCi1ib29sIEhUTUxQcmVFbGVtZW50OjptYXBUb0VudHJ5KGNv
bnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lLCBNYXBwZWRBdHRyaWJ1dGVFbnRyeSYgcmVzdWx0
KSBjb25zdAotewotICAgIGlmIChhdHRyTmFtZSA9PSB3aWR0aEF0dHIgfHwgYXR0ck5hbWUgPT0g
d3JhcEF0dHIpIHsKLSAgICAgICAgcmVzdWx0ID0gZVByZTsKLSAgICAgICAgcmV0dXJuIGZhbHNl
OwotICAgIH0KLSAgICByZXR1cm4gSFRNTEVsZW1lbnQ6Om1hcFRvRW50cnkoYXR0ck5hbWUsIHJl
c3VsdCk7Ci19Ci0KIHZvaWQgSFRNTFByZUVsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmlidXRlKEF0
dHJpYnV0ZSogYXR0cikKIHsKICAgICBpZiAoYXR0ci0+bmFtZSgpID09IHdpZHRoQXR0cikgewpA
QCAtNTksOCArNTAsMTAgQEAgdm9pZCBIVE1MUHJlRWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1
dGUoQXR0cmlidXRlKiBhdHRyKQogICAgICAgICAvLyBtdWx0aXBseSBieSB0aGUgdmFsdWUgb2Yg
dGhlIGF0dHJpYnV0ZSBhbmQgdGhlbiBzZXQgdGhhdCBhcyB0aGUgd2lkdGggQ1NTCiAgICAgICAg
IC8vIHByb3BlcnR5LgogICAgIH0gZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09IHdyYXBBdHRyKSB7
Ci0gICAgICAgIGlmICghYXR0ci0+dmFsdWUoKS5pc051bGwoKSkKLSAgICAgICAgICAgIGFkZENT
U1Byb3BlcnR5KGF0dHIsIENTU1Byb3BlcnR5V2hpdGVTcGFjZSwgQ1NTVmFsdWVQcmVXcmFwKTsK
KyAgICAgICAgaWYgKGF0dHItPnZhbHVlKCkuaXNOdWxsKCkpCisgICAgICAgICAgICByZW1vdmVD
U1NQcm9wZXJ0eShDU1NQcm9wZXJ0eVdoaXRlU3BhY2UpOworICAgICAgICBlbHNlCisgICAgICAg
ICAgICBhZGRDU1NQcm9wZXJ0eShDU1NQcm9wZXJ0eVdoaXRlU3BhY2UsIENTU1ZhbHVlUHJlV3Jh
cCk7CiAgICAgfSBlbHNlCiAgICAgICAgIHJldHVybiBIVE1MRWxlbWVudDo6cGFyc2VNYXBwZWRB
dHRyaWJ1dGUoYXR0cik7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQ
cmVFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQcmVFbGVtZW50LmgKaW5kZXgg
M2NjZGI4Ni4uOWJmZWU1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUHJl
RWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFByZUVsZW1lbnQuaApAQCAt
MzQsNyArMzQsNiBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIEhUTUxQcmVFbGVtZW50KGNvbnN0
IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCopOwogCi0gICAgdmlydHVhbCBib29sIG1hcFRvRW50
cnkoY29uc3QgUXVhbGlmaWVkTmFtZSYsIE1hcHBlZEF0dHJpYnV0ZUVudHJ5JikgY29uc3Q7CiAg
ICAgdmlydHVhbCB2b2lkIHBhcnNlTWFwcGVkQXR0cmlidXRlKEF0dHJpYnV0ZSopOwogfTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFibGVDYXB0aW9uRWxlbWVudC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUYWJsZUNhcHRpb25FbGVtZW50LmNwcAppbmRl
eCBiNzI2ZGY2Li45YjgyYmY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxU
YWJsZUNhcHRpb25FbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUYWJs
ZUNhcHRpb25FbGVtZW50LmNwcApAQCAtNDQsMjEgKzQ0LDEzIEBAIFBhc3NSZWZQdHI8SFRNTFRh
YmxlQ2FwdGlvbkVsZW1lbnQ+IEhUTUxUYWJsZUNhcHRpb25FbGVtZW50OjpjcmVhdGUoY29uc3Qg
UXVhbGlmCiAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBIVE1MVGFibGVDYXB0aW9uRWxlbWVudCh0
YWdOYW1lLCBkb2N1bWVudCkpOwogfQogCi1ib29sIEhUTUxUYWJsZUNhcHRpb25FbGVtZW50Ojpt
YXBUb0VudHJ5KGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lLCBNYXBwZWRBdHRyaWJ1dGVF
bnRyeSYgcmVzdWx0KSBjb25zdAotewotICAgIGlmIChhdHRyTmFtZSA9PSBhbGlnbkF0dHIpIHsK
LSAgICAgICAgcmVzdWx0ID0gZUNhcHRpb247Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9
Ci0KLSAgICByZXR1cm4gSFRNTEVsZW1lbnQ6Om1hcFRvRW50cnkoYXR0ck5hbWUsIHJlc3VsdCk7
Ci19Ci0KIHZvaWQgSFRNTFRhYmxlQ2FwdGlvbkVsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmlidXRl
KEF0dHJpYnV0ZSogYXR0cikKIHsKICAgICBpZiAoYXR0ci0+bmFtZSgpID09IGFsaWduQXR0cikg
ewogICAgICAgICBpZiAoIWF0dHItPnZhbHVlKCkuaXNFbXB0eSgpKQotICAgICAgICAgICAgYWRk
Q1NTUHJvcGVydHkoYXR0ciwgQ1NTUHJvcGVydHlDYXB0aW9uU2lkZSwgYXR0ci0+dmFsdWUoKSk7
CisgICAgICAgICAgICBhZGRDU1NQcm9wZXJ0eShDU1NQcm9wZXJ0eUNhcHRpb25TaWRlLCBhdHRy
LT52YWx1ZSgpKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgcmVtb3ZlQ1NTUHJvcGVydHko
Q1NTUHJvcGVydHlDYXB0aW9uU2lkZSk7CiAgICAgfSBlbHNlCiAgICAgICAgIEhUTUxFbGVtZW50
OjpwYXJzZU1hcHBlZEF0dHJpYnV0ZShhdHRyKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTFRhYmxlQ2FwdGlvbkVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTFRhYmxlQ2FwdGlvbkVsZW1lbnQuaAppbmRleCBhMmRkMmZhLi41YzVjZTk3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUYWJsZUNhcHRpb25FbGVtZW50LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFibGVDYXB0aW9uRWxlbWVudC5oCkBAIC0zNiw4ICsz
Niw3IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICBIVE1MVGFibGVDYXB0aW9uRWxlbWVudChj
b25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQqKTsKLSAgICAKLSAgICB2aXJ0dWFsIGJvb2wg
bWFwVG9FbnRyeShjb25zdCBRdWFsaWZpZWROYW1lJiwgTWFwcGVkQXR0cmlidXRlRW50cnkmKSBj
b25zdDsKKwogICAgIHZpcnR1YWwgdm9pZCBwYXJzZU1hcHBlZEF0dHJpYnV0ZShBdHRyaWJ1dGUq
KTsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRhYmxlQ2VsbEVs
ZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFibGVDZWxsRWxlbWVudC5jcHAK
aW5kZXggZDE5YjQ4Mi4uNzgxYjQxNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MVGFibGVDZWxsRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFi
bGVDZWxsRWxlbWVudC5jcHAKQEAgLTc1LDIyICs3NSw2IEBAIGludCBIVE1MVGFibGVDZWxsRWxl
bWVudDo6Y2VsbEluZGV4KCkgY29uc3QKICAgICByZXR1cm4gaW5kZXg7CiB9CiAKLWJvb2wgSFRN
TFRhYmxlQ2VsbEVsZW1lbnQ6Om1hcFRvRW50cnkoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5h
bWUsIE1hcHBlZEF0dHJpYnV0ZUVudHJ5JiByZXN1bHQpIGNvbnN0Ci17Ci0gICAgaWYgKGF0dHJO
YW1lID09IG5vd3JhcEF0dHIpIHsKLSAgICAgICAgcmVzdWx0ID0gZVVuaXZlcnNhbDsKLSAgICAg
ICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLSAgICAKLSAgICBpZiAoYXR0ck5hbWUgPT0gd2lkdGhB
dHRyIHx8Ci0gICAgICAgIGF0dHJOYW1lID09IGhlaWdodEF0dHIpIHsKLSAgICAgICAgcmVzdWx0
ID0gZUNlbGw7IC8vIEJlY2F1c2Ugb2YgdGhlIHF1aXJreSBiZWhhdmlvciBvZiBpZ25vcmluZyAw
IHZhbHVlcywgY2VsbHMgYXJlIHNwZWNpYWwuCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9
Ci0KLSAgICByZXR1cm4gSFRNTFRhYmxlUGFydEVsZW1lbnQ6Om1hcFRvRW50cnkoYXR0ck5hbWUs
IHJlc3VsdCk7Ci19Ci0KIHZvaWQgSFRNTFRhYmxlQ2VsbEVsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0
cmlidXRlKEF0dHJpYnV0ZSogYXR0cikKIHsKICAgICBpZiAoYXR0ci0+bmFtZSgpID09IHJvd3Nw
YW5BdHRyKSB7CkBAIC0xMDAsMjAgKzg0LDI1IEBAIHZvaWQgSFRNTFRhYmxlQ2VsbEVsZW1lbnQ6
OnBhcnNlTWFwcGVkQXR0cmlidXRlKEF0dHJpYnV0ZSogYXR0cikKICAgICAgICAgaWYgKHJlbmRl
cmVyKCkgJiYgcmVuZGVyZXIoKS0+aXNUYWJsZUNlbGwoKSkKICAgICAgICAgICAgIHRvUmVuZGVy
VGFibGVDZWxsKHJlbmRlcmVyKCkpLT5jb2xTcGFuT3JSb3dTcGFuQ2hhbmdlZCgpOwogICAgIH0g
ZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09IG5vd3JhcEF0dHIpIHsKLSAgICAgICAgaWYgKCFhdHRy
LT5pc051bGwoKSkKLSAgICAgICAgICAgIGFkZENTU1Byb3BlcnR5KGF0dHIsIENTU1Byb3BlcnR5
V2hpdGVTcGFjZSwgQ1NTVmFsdWVXZWJraXROb3dyYXApOworICAgICAgICBpZiAoYXR0ci0+aXNO
dWxsKCkpCisgICAgICAgICAgICByZW1vdmVDU1NQcm9wZXJ0eShDU1NQcm9wZXJ0eVdoaXRlU3Bh
Y2UpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBhZGRDU1NQcm9wZXJ0eShDU1NQcm9wZXJ0
eVdoaXRlU3BhY2UsIENTU1ZhbHVlV2Via2l0Tm93cmFwKTsKKwogICAgIH0gZWxzZSBpZiAoYXR0
ci0+bmFtZSgpID09IHdpZHRoQXR0cikgewogICAgICAgICBpZiAoIWF0dHItPnZhbHVlKCkuaXNF
bXB0eSgpKSB7CiAgICAgICAgICAgICBpbnQgd2lkdGhJbnQgPSBhdHRyLT52YWx1ZSgpLnRvSW50
KCk7CiAgICAgICAgICAgICBpZiAod2lkdGhJbnQgPiAwKSAvLyB3aWR0aD0iMCIgaXMgaWdub3Jl
ZCBmb3IgY29tcGF0aWJpbGl0eSB3aXRoIFdpbklFLgotICAgICAgICAgICAgICAgIGFkZENTU0xl
bmd0aChhdHRyLCBDU1NQcm9wZXJ0eVdpZHRoLCBhdHRyLT52YWx1ZSgpKTsKLSAgICAgICAgfQor
ICAgICAgICAgICAgICAgIGFkZENTU0xlbmd0aChDU1NQcm9wZXJ0eVdpZHRoLCBhdHRyLT52YWx1
ZSgpKTsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICByZW1vdmVDU1NQcm9wZXJ0eShDU1NQ
cm9wZXJ0eVdpZHRoKTsKICAgICB9IGVsc2UgaWYgKGF0dHItPm5hbWUoKSA9PSBoZWlnaHRBdHRy
KSB7CiAgICAgICAgIGlmICghYXR0ci0+dmFsdWUoKS5pc0VtcHR5KCkpIHsKICAgICAgICAgICAg
IGludCBoZWlnaHRJbnQgPSBhdHRyLT52YWx1ZSgpLnRvSW50KCk7CiAgICAgICAgICAgICBpZiAo
aGVpZ2h0SW50ID4gMCkgLy8gaGVpZ2h0PSIwIiBpcyBpZ25vcmVkIGZvciBjb21wYXRpYmlsaXR5
IHdpdGggV2luSUUuCi0gICAgICAgICAgICAgICAgYWRkQ1NTTGVuZ3RoKGF0dHIsIENTU1Byb3Bl
cnR5SGVpZ2h0LCBhdHRyLT52YWx1ZSgpKTsKLSAgICAgICAgfQorICAgICAgICAgICAgICAgIGFk
ZENTU0xlbmd0aChDU1NQcm9wZXJ0eUhlaWdodCwgYXR0ci0+dmFsdWUoKSk7CisgICAgICAgIH0g
ZWxzZQorICAgICAgICAgICAgcmVtb3ZlQ1NTUHJvcGVydHkoQ1NTUHJvcGVydHlIZWlnaHQpOwog
ICAgIH0gZWxzZQogICAgICAgICBIVE1MVGFibGVQYXJ0RWxlbWVudDo6cGFyc2VNYXBwZWRBdHRy
aWJ1dGUoYXR0cik7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUYWJs
ZUNlbGxFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUYWJsZUNlbGxFbGVtZW50
LmgKaW5kZXggNTEwYmNmOC4uYmRiMTM5MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MVGFibGVDZWxsRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRh
YmxlQ2VsbEVsZW1lbnQuaApAQCAtNTMsNyArNTMsNiBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAg
IEhUTUxUYWJsZUNlbGxFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCopOwog
Ci0gICAgdmlydHVhbCBib29sIG1hcFRvRW50cnkoY29uc3QgUXVhbGlmaWVkTmFtZSYsIE1hcHBl
ZEF0dHJpYnV0ZUVudHJ5JikgY29uc3Q7CiAgICAgdmlydHVhbCB2b2lkIHBhcnNlTWFwcGVkQXR0
cmlidXRlKEF0dHJpYnV0ZSopOwogCiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPFN0eWxlUHJvcGVy
dHlTZXQ+IGFkZGl0aW9uYWxBdHRyaWJ1dGVTdHlsZSgpIE9WRVJSSURFOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFibGVDb2xFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTFRhYmxlQ29sRWxlbWVudC5jcHAKaW5kZXggYWJiMWRkZC4uMTQ4MTJiNSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFibGVDb2xFbGVtZW50LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUYWJsZUNvbEVsZW1lbnQuY3BwCkBAIC00Nywx
NiArNDcsNiBAQCBQYXNzUmVmUHRyPEhUTUxUYWJsZUNvbEVsZW1lbnQ+IEhUTUxUYWJsZUNvbEVs
ZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJgogICAgIHJldHVybiBhZG9wdFJlZihu
ZXcgSFRNTFRhYmxlQ29sRWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCkpOwogfQogCi1ib29sIEhU
TUxUYWJsZUNvbEVsZW1lbnQ6Om1hcFRvRW50cnkoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5h
bWUsIE1hcHBlZEF0dHJpYnV0ZUVudHJ5JiByZXN1bHQpIGNvbnN0Ci17Ci0gICAgaWYgKGF0dHJO
YW1lID09IHdpZHRoQXR0cikgewotICAgICAgICByZXN1bHQgPSBlVW5pdmVyc2FsOwotICAgICAg
ICByZXR1cm4gZmFsc2U7Ci0gICAgfQotCi0gICAgcmV0dXJuIEhUTUxUYWJsZVBhcnRFbGVtZW50
OjptYXBUb0VudHJ5KGF0dHJOYW1lLCByZXN1bHQpOwotfQotCiB2b2lkIEhUTUxUYWJsZUNvbEVs
ZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmlidXRlKEF0dHJpYnV0ZSogYXR0cikKIHsKICAgICBpZiAo
YXR0ci0+bmFtZSgpID09IHNwYW5BdHRyKSB7CkBAIC02NSwxNCArNTUsMTUgQEAgdm9pZCBIVE1M
VGFibGVDb2xFbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpYnV0ZShBdHRyaWJ1dGUqIGF0dHIpCiAg
ICAgICAgICAgICByZW5kZXJlcigpLT51cGRhdGVGcm9tRWxlbWVudCgpOwogICAgIH0gZWxzZSBp
ZiAoYXR0ci0+bmFtZSgpID09IHdpZHRoQXR0cikgewogICAgICAgICBpZiAoIWF0dHItPnZhbHVl
KCkuaXNFbXB0eSgpKSB7Ci0gICAgICAgICAgICBhZGRDU1NMZW5ndGgoYXR0ciwgQ1NTUHJvcGVy
dHlXaWR0aCwgYXR0ci0+dmFsdWUoKSk7CisgICAgICAgICAgICBhZGRDU1NMZW5ndGgoQ1NTUHJv
cGVydHlXaWR0aCwgYXR0ci0+dmFsdWUoKSk7CiAgICAgICAgICAgICBpZiAocmVuZGVyZXIoKSAm
JiByZW5kZXJlcigpLT5pc1RhYmxlQ29sKCkpIHsKICAgICAgICAgICAgICAgICBSZW5kZXJUYWJs
ZUNvbCogY29sID0gdG9SZW5kZXJUYWJsZUNvbChyZW5kZXJlcigpKTsKICAgICAgICAgICAgICAg
ICBpbnQgbmV3V2lkdGggPSB3aWR0aCgpLnRvSW50KCk7CiAgICAgICAgICAgICAgICAgaWYgKG5l
d1dpZHRoICE9IGNvbC0+d2lkdGgoKSkKICAgICAgICAgICAgICAgICAgICAgY29sLT5zZXROZWVk
c0xheW91dEFuZFByZWZXaWR0aHNSZWNhbGMoKTsKICAgICAgICAgICAgIH0KLSAgICAgICAgfQor
ICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIHJlbW92ZUNTU1Byb3BlcnR5KENTU1Byb3BlcnR5
V2lkdGgpOwogICAgIH0gZWxzZQogICAgICAgICBIVE1MVGFibGVQYXJ0RWxlbWVudDo6cGFyc2VN
YXBwZWRBdHRyaWJ1dGUoYXR0cik7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxUYWJsZUNvbEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRhYmxlQ29s
RWxlbWVudC5oCmluZGV4IDIwY2M0NTcuLjhjYTJhZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTFRhYmxlQ29sRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTFRhYmxlQ29sRWxlbWVudC5oCkBAIC00Miw3ICs0Miw2IEBAIHB1YmxpYzoKIHByaXZhdGU6
CiAgICAgSFRNTFRhYmxlQ29sRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBE
b2N1bWVudCopOwogCi0gICAgdmlydHVhbCBib29sIG1hcFRvRW50cnkoY29uc3QgUXVhbGlmaWVk
TmFtZSYsIE1hcHBlZEF0dHJpYnV0ZUVudHJ5JikgY29uc3Q7CiAgICAgdmlydHVhbCB2b2lkIHBh
cnNlTWFwcGVkQXR0cmlidXRlKEF0dHJpYnV0ZSopOwogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxT
dHlsZVByb3BlcnR5U2V0PiBhZGRpdGlvbmFsQXR0cmlidXRlU3R5bGUoKSBPVkVSUklERTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFibGVFbGVtZW50LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRhYmxlRWxlbWVudC5jcHAKaW5kZXggNWIwMDhiNC4uZTc3
ZjY1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFibGVFbGVtZW50LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUYWJsZUVsZW1lbnQuY3BwCkBAIC0yNDEs
NDIgKzI0MSw2IEBAIHZvaWQgSFRNTFRhYmxlRWxlbWVudDo6ZGVsZXRlUm93KGludCBpbmRleCwg
RXhjZXB0aW9uQ29kZSYgZWMpCiAgICAgcm93LT5yZW1vdmUoZWMpOwogfQogCi1ib29sIEhUTUxU
YWJsZUVsZW1lbnQ6Om1hcFRvRW50cnkoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUsIE1h
cHBlZEF0dHJpYnV0ZUVudHJ5JiByZXN1bHQpIGNvbnN0Ci17Ci0gICAgaWYgKGF0dHJOYW1lID09
IGJhY2tncm91bmRBdHRyKSB7Ci0gICAgICAgIHJlc3VsdCA9IChNYXBwZWRBdHRyaWJ1dGVFbnRy
eSkoZUxhc3RFbnRyeSArIGRvY3VtZW50KCktPmRvY0lEKCkpOwotICAgICAgICByZXR1cm4gZmFs
c2U7Ci0gICAgfQotICAgIAotICAgIGlmIChhdHRyTmFtZSA9PSB3aWR0aEF0dHIgfHwKLSAgICAg
ICAgYXR0ck5hbWUgPT0gaGVpZ2h0QXR0ciB8fAotICAgICAgICBhdHRyTmFtZSA9PSBiZ2NvbG9y
QXR0ciB8fAotICAgICAgICBhdHRyTmFtZSA9PSBjZWxsc3BhY2luZ0F0dHIgfHwKLSAgICAgICAg
YXR0ck5hbWUgPT0gdnNwYWNlQXR0ciB8fAotICAgICAgICBhdHRyTmFtZSA9PSBoc3BhY2VBdHRy
IHx8Ci0gICAgICAgIGF0dHJOYW1lID09IHZhbGlnbkF0dHIpIHsKLSAgICAgICAgcmVzdWx0ID0g
ZVVuaXZlcnNhbDsKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLSAgICAKLSAgICBpZiAo
YXR0ck5hbWUgPT0gYm9yZGVyY29sb3JBdHRyIHx8IGF0dHJOYW1lID09IGZyYW1lQXR0ciB8fCBh
dHRyTmFtZSA9PSBydWxlc0F0dHIpIHsKLSAgICAgICAgcmVzdWx0ID0gZVVuaXZlcnNhbDsKLSAg
ICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotICAgIAotICAgIGlmIChhdHRyTmFtZSA9PSBib3Jk
ZXJBdHRyKSB7Ci0gICAgICAgIHJlc3VsdCA9IGVUYWJsZTsKLSAgICAgICAgcmV0dXJuIHRydWU7
Ci0gICAgfQotICAgIAotICAgIGlmIChhdHRyTmFtZSA9PSBhbGlnbkF0dHIpIHsKLSAgICAgICAg
cmVzdWx0ID0gZVRhYmxlOwotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotCi0gICAgcmV0
dXJuIEhUTUxFbGVtZW50OjptYXBUb0VudHJ5KGF0dHJOYW1lLCByZXN1bHQpOwotfQotCiBzdGF0
aWMgaW5saW5lIGJvb2wgaXNUYWJsZUNlbGxBbmNlc3RvcihOb2RlKiBuKQogewogICAgIHJldHVy
biBuLT5oYXNUYWdOYW1lKHRoZWFkVGFnKSB8fCBuLT5oYXNUYWdOYW1lKHRib2R5VGFnKSB8fApA
QCAtMzA4LDM4ICsyNzIsNDYgQEAgdm9pZCBIVE1MVGFibGVFbGVtZW50OjpwYXJzZU1hcHBlZEF0
dHJpYnV0ZShBdHRyaWJ1dGUqIGF0dHIpCiAgICAgdW5zaWduZWQgc2hvcnQgb2xkUGFkZGluZyA9
IG1fcGFkZGluZzsKIAogICAgIGlmIChhdHRyLT5uYW1lKCkgPT0gd2lkdGhBdHRyKQotICAgICAg
ICBhZGRDU1NMZW5ndGgoYXR0ciwgQ1NTUHJvcGVydHlXaWR0aCwgYXR0ci0+dmFsdWUoKSk7Cisg
ICAgICAgIGlmIChhdHRyLT5pc051bGwoKSkKKyAgICAgICAgICAgIHJlbW92ZUNTU1Byb3BlcnR5
KENTU1Byb3BlcnR5V2lkdGgpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBhZGRDU1NMZW5n
dGgoQ1NTUHJvcGVydHlXaWR0aCwgYXR0ci0+dmFsdWUoKSk7CiAgICAgZWxzZSBpZiAoYXR0ci0+
bmFtZSgpID09IGhlaWdodEF0dHIpCi0gICAgICAgIGFkZENTU0xlbmd0aChhdHRyLCBDU1NQcm9w
ZXJ0eUhlaWdodCwgYXR0ci0+dmFsdWUoKSk7CisgICAgICAgIGlmIChhdHRyLT5pc051bGwoKSkK
KyAgICAgICAgICAgIHJlbW92ZUNTU1Byb3BlcnR5KENTU1Byb3BlcnR5SGVpZ2h0KTsKKyAgICAg
ICAgZWxzZQorICAgICAgICAgICAgYWRkQ1NTTGVuZ3RoKENTU1Byb3BlcnR5SGVpZ2h0LCBhdHRy
LT52YWx1ZSgpKTsKICAgICBlbHNlIGlmIChhdHRyLT5uYW1lKCkgPT0gYm9yZGVyQXR0cikgIHsK
ICAgICAgICAgbV9ib3JkZXJBdHRyID0gdHJ1ZTsKLSAgICAgICAgaWYgKGF0dHItPmRlY2woKSkg
ewotICAgICAgICAgICAgUmVmUHRyPENTU1ZhbHVlPiB2YWwgPSBhdHRyLT5kZWNsKCktPmdldFBy
b3BlcnR5Q1NTVmFsdWUoQ1NTUHJvcGVydHlCb3JkZXJMZWZ0V2lkdGgpOwotICAgICAgICAgICAg
aWYgKHZhbCAmJiB2YWwtPmlzUHJpbWl0aXZlVmFsdWUoKSkgewotICAgICAgICAgICAgICAgIENT
U1ByaW1pdGl2ZVZhbHVlKiBwcmltVmFsID0gc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUq
Pih2YWwuZ2V0KCkpOwotICAgICAgICAgICAgICAgIG1fYm9yZGVyQXR0ciA9IHByaW1WYWwtPmdl
dERvdWJsZVZhbHVlKENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfTlVNQkVSKTsKLSAgICAgICAgICAg
IH0KLSAgICAgICAgfSBlbHNlIGlmICghYXR0ci0+aXNOdWxsKCkpIHsKKworICAgICAgICBpZiAo
YXR0ci0+aXNOdWxsKCkpCisgICAgICAgICAgICByZW1vdmVDU1NQcm9wZXJ0eShDU1NQcm9wZXJ0
eUJvcmRlcldpZHRoKTsKKyAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICBpbnQgYm9yZGVyID0g
MDsKICAgICAgICAgICAgIGlmIChhdHRyLT5pc0VtcHR5KCkpCiAgICAgICAgICAgICAgICAgYm9y
ZGVyID0gMTsKICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICBib3JkZXIgPSBhdHRy
LT52YWx1ZSgpLnRvSW50KCk7CiAgICAgICAgICAgICBtX2JvcmRlckF0dHIgPSBib3JkZXI7Ci0g
ICAgICAgICAgICBhZGRDU1NMZW5ndGgoYXR0ciwgQ1NTUHJvcGVydHlCb3JkZXJXaWR0aCwgU3Ry
aW5nOjpudW1iZXIoYm9yZGVyKSk7CisgICAgICAgICAgICBhZGRDU1NMZW5ndGgoQ1NTUHJvcGVy
dHlCb3JkZXJXaWR0aCwgU3RyaW5nOjpudW1iZXIoYm9yZGVyKSk7CiAgICAgICAgIH0KICAgICB9
IGVsc2UgaWYgKGF0dHItPm5hbWUoKSA9PSBiZ2NvbG9yQXR0cikKLSAgICAgICAgYWRkQ1NTQ29s
b3IoYXR0ciwgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQ29sb3IsIGF0dHItPnZhbHVlKCkpOworICAg
ICAgICBpZiAoYXR0ci0+aXNOdWxsKCkpCisgICAgICAgICAgICByZW1vdmVDU1NQcm9wZXJ0eShD
U1NQcm9wZXJ0eUJhY2tncm91bmRDb2xvcik7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGFk
ZENTU0NvbG9yKENTU1Byb3BlcnR5QmFja2dyb3VuZENvbG9yLCBhdHRyLT52YWx1ZSgpKTsKICAg
ICBlbHNlIGlmIChhdHRyLT5uYW1lKCkgPT0gYm9yZGVyY29sb3JBdHRyKSB7Ci0gICAgICAgIG1f
Ym9yZGVyQ29sb3JBdHRyID0gYXR0ci0+ZGVjbCgpOwotICAgICAgICBpZiAoIWF0dHItPmRlY2wo
KSAmJiAhYXR0ci0+aXNFbXB0eSgpKSB7Ci0gICAgICAgICAgICBhZGRDU1NDb2xvcihhdHRyLCBD
U1NQcm9wZXJ0eUJvcmRlckNvbG9yLCBhdHRyLT52YWx1ZSgpKTsKLSAgICAgICAgICAgIG1fYm9y
ZGVyQ29sb3JBdHRyID0gdHJ1ZTsKLSAgICAgICAgfQorICAgICAgICBtX2JvcmRlckNvbG9yQXR0
ciA9ICFhdHRyLT5pc0VtcHR5KCk7CisgICAgICAgIGlmICghYXR0ci0+aXNFbXB0eSgpKQorICAg
ICAgICAgICAgYWRkQ1NTQ29sb3IoQ1NTUHJvcGVydHlCb3JkZXJDb2xvciwgYXR0ci0+dmFsdWUo
KSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHJlbW92ZUNTU1Byb3BlcnR5KENTU1Byb3Bl
cnR5Qm9yZGVyQ29sb3IpOwogICAgIH0gZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09IGJhY2tncm91
bmRBdHRyKSB7CiAgICAgICAgIFN0cmluZyB1cmwgPSBzdHJpcExlYWRpbmdBbmRUcmFpbGluZ0hU
TUxTcGFjZXMoYXR0ci0+dmFsdWUoKSk7CiAgICAgICAgIGlmICghdXJsLmlzRW1wdHkoKSkKLSAg
ICAgICAgICAgIGFkZENTU0ltYWdlUHJvcGVydHkoYXR0ciwgQ1NTUHJvcGVydHlCYWNrZ3JvdW5k
SW1hZ2UsIGRvY3VtZW50KCktPmNvbXBsZXRlVVJMKHVybCkuc3RyaW5nKCkpOworICAgICAgICAg
ICAgYWRkQ1NTSW1hZ2VQcm9wZXJ0eShDU1NQcm9wZXJ0eUJhY2tncm91bmRJbWFnZSwgZG9jdW1l
bnQoKS0+Y29tcGxldGVVUkwodXJsKS5zdHJpbmcoKSk7CisgICAgICAgIGVsc2UKKyAgICAgICAg
ICAgIHJlbW92ZUNTU1Byb3BlcnR5KENTU1Byb3BlcnR5QmFja2dyb3VuZEltYWdlKTsKICAgICB9
IGVsc2UgaWYgKGF0dHItPm5hbWUoKSA9PSBmcmFtZUF0dHIpIHsKICAgICAgICAgLy8gQ2FjaGUg
dGhlIHZhbHVlIG9mICJmcmFtZSIgc28gdGhhdCB0aGUgdGFibGUgY2FuIGV4YW1pbmUgaXQgbGF0
ZXIuCiAgICAgICAgIG1fZnJhbWVBdHRyID0gZmFsc2U7CkBAIC0zODAsMTUgKzM1MiwxNiBAQCB2
b2lkIEhUTUxUYWJsZUVsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmlidXRlKEF0dHJpYnV0ZSogYXR0
cikKICAgICAgICAgCiAgICAgICAgIC8vIE5vdyBtYXAgaW4gdGhlIGJvcmRlciBzdHlsZXMgb2Yg
c29saWQgYW5kIGhpZGRlbiByZXNwZWN0aXZlbHkuCiAgICAgICAgIGlmIChtX2ZyYW1lQXR0cikg
ewotICAgICAgICAgICAgYWRkQ1NTUHJvcGVydHkoYXR0ciwgQ1NTUHJvcGVydHlCb3JkZXJUb3BX
aWR0aCwgQ1NTVmFsdWVUaGluKTsKLSAgICAgICAgICAgIGFkZENTU1Byb3BlcnR5KGF0dHIsIENT
U1Byb3BlcnR5Qm9yZGVyQm90dG9tV2lkdGgsIENTU1ZhbHVlVGhpbik7Ci0gICAgICAgICAgICBh
ZGRDU1NQcm9wZXJ0eShhdHRyLCBDU1NQcm9wZXJ0eUJvcmRlckxlZnRXaWR0aCwgQ1NTVmFsdWVU
aGluKTsKLSAgICAgICAgICAgIGFkZENTU1Byb3BlcnR5KGF0dHIsIENTU1Byb3BlcnR5Qm9yZGVy
UmlnaHRXaWR0aCwgQ1NTVmFsdWVUaGluKTsKLSAgICAgICAgICAgIGFkZENTU1Byb3BlcnR5KGF0
dHIsIENTU1Byb3BlcnR5Qm9yZGVyVG9wU3R5bGUsIGJvcmRlcnNbY1RvcF0gPyBDU1NWYWx1ZVNv
bGlkIDogQ1NTVmFsdWVIaWRkZW4pOwotICAgICAgICAgICAgYWRkQ1NTUHJvcGVydHkoYXR0ciwg
Q1NTUHJvcGVydHlCb3JkZXJCb3R0b21TdHlsZSwgYm9yZGVyc1tjQm90dG9tXSA/IENTU1ZhbHVl
U29saWQgOiBDU1NWYWx1ZUhpZGRlbik7Ci0gICAgICAgICAgICBhZGRDU1NQcm9wZXJ0eShhdHRy
LCBDU1NQcm9wZXJ0eUJvcmRlckxlZnRTdHlsZSwgYm9yZGVyc1tjTGVmdF0gPyBDU1NWYWx1ZVNv
bGlkIDogQ1NTVmFsdWVIaWRkZW4pOwotICAgICAgICAgICAgYWRkQ1NTUHJvcGVydHkoYXR0ciwg
Q1NTUHJvcGVydHlCb3JkZXJSaWdodFN0eWxlLCBib3JkZXJzW2NSaWdodF0gPyBDU1NWYWx1ZVNv
bGlkIDogQ1NTVmFsdWVIaWRkZW4pOwotICAgICAgICB9CisgICAgICAgICAgICBhZGRDU1NQcm9w
ZXJ0eShDU1NQcm9wZXJ0eUJvcmRlclRvcFdpZHRoLCBDU1NWYWx1ZVRoaW4pOworICAgICAgICAg
ICAgYWRkQ1NTUHJvcGVydHkoQ1NTUHJvcGVydHlCb3JkZXJCb3R0b21XaWR0aCwgQ1NTVmFsdWVU
aGluKTsKKyAgICAgICAgICAgIGFkZENTU1Byb3BlcnR5KENTU1Byb3BlcnR5Qm9yZGVyTGVmdFdp
ZHRoLCBDU1NWYWx1ZVRoaW4pOworICAgICAgICAgICAgYWRkQ1NTUHJvcGVydHkoQ1NTUHJvcGVy
dHlCb3JkZXJSaWdodFdpZHRoLCBDU1NWYWx1ZVRoaW4pOworICAgICAgICAgICAgYWRkQ1NTUHJv
cGVydHkoQ1NTUHJvcGVydHlCb3JkZXJUb3BTdHlsZSwgYm9yZGVyc1tjVG9wXSA/IENTU1ZhbHVl
U29saWQgOiBDU1NWYWx1ZUhpZGRlbik7CisgICAgICAgICAgICBhZGRDU1NQcm9wZXJ0eShDU1NQ
cm9wZXJ0eUJvcmRlckJvdHRvbVN0eWxlLCBib3JkZXJzW2NCb3R0b21dID8gQ1NTVmFsdWVTb2xp
ZCA6IENTU1ZhbHVlSGlkZGVuKTsKKyAgICAgICAgICAgIGFkZENTU1Byb3BlcnR5KENTU1Byb3Bl
cnR5Qm9yZGVyTGVmdFN0eWxlLCBib3JkZXJzW2NMZWZ0XSA/IENTU1ZhbHVlU29saWQgOiBDU1NW
YWx1ZUhpZGRlbik7CisgICAgICAgICAgICBhZGRDU1NQcm9wZXJ0eShDU1NQcm9wZXJ0eUJvcmRl
clJpZ2h0U3R5bGUsIGJvcmRlcnNbY1JpZ2h0XSA/IENTU1ZhbHVlU29saWQgOiBDU1NWYWx1ZUhp
ZGRlbik7CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgcmVtb3ZlQ1NTUHJvcGVydGllcyhD
U1NQcm9wZXJ0eUJvcmRlclRvcFdpZHRoLCBDU1NQcm9wZXJ0eUJvcmRlckJvdHRvbVdpZHRoLCBD
U1NQcm9wZXJ0eUJvcmRlckxlZnRXaWR0aCwgQ1NTUHJvcGVydHlCb3JkZXJSaWdodFdpZHRoLCBD
U1NQcm9wZXJ0eUJvcmRlclRvcFN0eWxlLCBDU1NQcm9wZXJ0eUJvcmRlckJvdHRvbVN0eWxlLCBD
U1NQcm9wZXJ0eUJvcmRlckxlZnRTdHlsZSwgQ1NTUHJvcGVydHlCb3JkZXJSaWdodFN0eWxlKTsK
ICAgICB9IGVsc2UgaWYgKGF0dHItPm5hbWUoKSA9PSBydWxlc0F0dHIpIHsKICAgICAgICAgbV9y
dWxlc0F0dHIgPSBVbnNldFJ1bGVzOwogICAgICAgICBpZiAoZXF1YWxJZ25vcmluZ0Nhc2UoYXR0
ci0+dmFsdWUoKSwgIm5vbmUiKSkKQEAgLTQwNCwxMCArMzc3LDE0IEBAIHZvaWQgSFRNTFRhYmxl
RWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUoQXR0cmlidXRlKiBhdHRyKQogICAgICAgICAK
ICAgICAgICAgLy8gVGhlIHByZXNlbmNlIG9mIGEgdmFsaWQgcnVsZXMgYXR0cmlidXRlIGNhdXNl
cyBib3JkZXIgY29sbGFwc2luZyB0byBiZSBlbmFibGVkLgogICAgICAgICBpZiAobV9ydWxlc0F0
dHIgIT0gVW5zZXRSdWxlcykKLSAgICAgICAgICAgIGFkZENTU1Byb3BlcnR5KGF0dHIsIENTU1By
b3BlcnR5Qm9yZGVyQ29sbGFwc2UsIENTU1ZhbHVlQ29sbGFwc2UpOworICAgICAgICAgICAgYWRk
Q1NTUHJvcGVydHkoQ1NTUHJvcGVydHlCb3JkZXJDb2xsYXBzZSwgQ1NTVmFsdWVDb2xsYXBzZSk7
CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHJlbW92ZUNTU1Byb3BlcnR5KENTU1Byb3BlcnR5
Qm9yZGVyQ29sbGFwc2UpOwogICAgIH0gZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09IGNlbGxzcGFj
aW5nQXR0cikgewogICAgICAgICBpZiAoIWF0dHItPnZhbHVlKCkuaXNFbXB0eSgpKQotICAgICAg
ICAgICAgYWRkQ1NTTGVuZ3RoKGF0dHIsIENTU1Byb3BlcnR5Qm9yZGVyU3BhY2luZywgYXR0ci0+
dmFsdWUoKSk7CisgICAgICAgICAgICBhZGRDU1NMZW5ndGgoQ1NTUHJvcGVydHlCb3JkZXJTcGFj
aW5nLCBhdHRyLT52YWx1ZSgpKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgcmVtb3ZlQ1NT
UHJvcGVydHkoQ1NTUHJvcGVydHlCb3JkZXJTcGFjaW5nKTsKICAgICB9IGVsc2UgaWYgKGF0dHIt
Pm5hbWUoKSA9PSBjZWxscGFkZGluZ0F0dHIpIHsKICAgICAgICAgaWYgKCFhdHRyLT52YWx1ZSgp
LmlzRW1wdHkoKSkKICAgICAgICAgICAgIG1fcGFkZGluZyA9IG1heCgwLCBhdHRyLT52YWx1ZSgp
LnRvSW50KCkpOwpAQCAtNDE2LDIyICszOTMsMzMgQEAgdm9pZCBIVE1MVGFibGVFbGVtZW50Ojpw
YXJzZU1hcHBlZEF0dHJpYnV0ZShBdHRyaWJ1dGUqIGF0dHIpCiAgICAgfSBlbHNlIGlmIChhdHRy
LT5uYW1lKCkgPT0gY29sc0F0dHIpIHsKICAgICAgICAgLy8gIyMjCiAgICAgfSBlbHNlIGlmIChh
dHRyLT5uYW1lKCkgPT0gdnNwYWNlQXR0cikgewotICAgICAgICBhZGRDU1NMZW5ndGgoYXR0ciwg
Q1NTUHJvcGVydHlNYXJnaW5Ub3AsIGF0dHItPnZhbHVlKCkpOwotICAgICAgICBhZGRDU1NMZW5n
dGgoYXR0ciwgQ1NTUHJvcGVydHlNYXJnaW5Cb3R0b20sIGF0dHItPnZhbHVlKCkpOworICAgICAg
ICBpZiAoYXR0ci0+aXNOdWxsKCkpCisgICAgICAgICAgICByZW1vdmVDU1NQcm9wZXJ0aWVzKENT
U1Byb3BlcnR5TWFyZ2luVG9wLCBDU1NQcm9wZXJ0eU1hcmdpbkJvdHRvbSk7CisgICAgICAgIGVs
c2UgeworICAgICAgICAgICAgYWRkQ1NTTGVuZ3RoKENTU1Byb3BlcnR5TWFyZ2luVG9wLCBhdHRy
LT52YWx1ZSgpKTsKKyAgICAgICAgICAgIGFkZENTU0xlbmd0aChDU1NQcm9wZXJ0eU1hcmdpbkJv
dHRvbSwgYXR0ci0+dmFsdWUoKSk7CisgICAgICAgIH0KICAgICB9IGVsc2UgaWYgKGF0dHItPm5h
bWUoKSA9PSBoc3BhY2VBdHRyKSB7Ci0gICAgICAgIGFkZENTU0xlbmd0aChhdHRyLCBDU1NQcm9w
ZXJ0eU1hcmdpbkxlZnQsIGF0dHItPnZhbHVlKCkpOwotICAgICAgICBhZGRDU1NMZW5ndGgoYXR0
ciwgQ1NTUHJvcGVydHlNYXJnaW5SaWdodCwgYXR0ci0+dmFsdWUoKSk7CisgICAgICAgIGlmIChh
dHRyLT5pc051bGwoKSkKKyAgICAgICAgICAgIHJlbW92ZUNTU1Byb3BlcnRpZXMoQ1NTUHJvcGVy
dHlNYXJnaW5MZWZ0LCBDU1NQcm9wZXJ0eU1hcmdpblJpZ2h0KTsKKyAgICAgICAgZWxzZSB7Cisg
ICAgICAgICAgICBhZGRDU1NMZW5ndGgoQ1NTUHJvcGVydHlNYXJnaW5MZWZ0LCBhdHRyLT52YWx1
ZSgpKTsKKyAgICAgICAgICAgIGFkZENTU0xlbmd0aChDU1NQcm9wZXJ0eU1hcmdpblJpZ2h0LCBh
dHRyLT52YWx1ZSgpKTsKKyAgICAgICAgfQogICAgIH0gZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09
IGFsaWduQXR0cikgewogICAgICAgICBpZiAoIWF0dHItPnZhbHVlKCkuaXNFbXB0eSgpKSB7CiAg
ICAgICAgICAgICBpZiAoZXF1YWxJZ25vcmluZ0Nhc2UoYXR0ci0+dmFsdWUoKSwgImNlbnRlciIp
KSB7Ci0gICAgICAgICAgICAgICAgYWRkQ1NTUHJvcGVydHkoYXR0ciwgQ1NTUHJvcGVydHlXZWJr
aXRNYXJnaW5TdGFydCwgQ1NTVmFsdWVBdXRvKTsKLSAgICAgICAgICAgICAgICBhZGRDU1NQcm9w
ZXJ0eShhdHRyLCBDU1NQcm9wZXJ0eVdlYmtpdE1hcmdpbkVuZCwgQ1NTVmFsdWVBdXRvKTsKKyAg
ICAgICAgICAgICAgICBhZGRDU1NQcm9wZXJ0eShDU1NQcm9wZXJ0eVdlYmtpdE1hcmdpblN0YXJ0
LCBDU1NWYWx1ZUF1dG8pOworICAgICAgICAgICAgICAgIGFkZENTU1Byb3BlcnR5KENTU1Byb3Bl
cnR5V2Via2l0TWFyZ2luRW5kLCBDU1NWYWx1ZUF1dG8pOwogICAgICAgICAgICAgfSBlbHNlCi0g
ICAgICAgICAgICAgICAgYWRkQ1NTUHJvcGVydHkoYXR0ciwgQ1NTUHJvcGVydHlGbG9hdCwgYXR0
ci0+dmFsdWUoKSk7Ci0gICAgICAgIH0KKyAgICAgICAgICAgICAgICBhZGRDU1NQcm9wZXJ0eShD
U1NQcm9wZXJ0eUZsb2F0LCBhdHRyLT52YWx1ZSgpKTsKKyAgICAgICAgfSBlbHNlCisgICAgICAg
ICAgICByZW1vdmVDU1NQcm9wZXJ0aWVzKENTU1Byb3BlcnR5V2Via2l0TWFyZ2luU3RhcnQsIENT
U1Byb3BlcnR5V2Via2l0TWFyZ2luRW5kLCBDU1NQcm9wZXJ0eUZsb2F0KTsKICAgICB9IGVsc2Ug
aWYgKGF0dHItPm5hbWUoKSA9PSB2YWxpZ25BdHRyKSB7CiAgICAgICAgIGlmICghYXR0ci0+dmFs
dWUoKS5pc0VtcHR5KCkpCi0gICAgICAgICAgICBhZGRDU1NQcm9wZXJ0eShhdHRyLCBDU1NQcm9w
ZXJ0eVZlcnRpY2FsQWxpZ24sIGF0dHItPnZhbHVlKCkpOworICAgICAgICAgICAgYWRkQ1NTUHJv
cGVydHkoQ1NTUHJvcGVydHlWZXJ0aWNhbEFsaWduLCBhdHRyLT52YWx1ZSgpKTsKKyAgICAgICAg
ZWxzZQorICAgICAgICAgICAgcmVtb3ZlQ1NTUHJvcGVydHkoQ1NTUHJvcGVydHlWZXJ0aWNhbEFs
aWduKTsKICAgICB9IGVsc2UKICAgICAgICAgSFRNTEVsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmli
dXRlKGF0dHIpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUYWJsZUVs
ZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRhYmxlRWxlbWVudC5oCmluZGV4IDRl
N2ZlMzEuLmRkMDc1MDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRhYmxl
RWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRhYmxlRWxlbWVudC5oCkBA
IC03Miw3ICs3Miw2IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgSFRNTFRhYmxlRWxlbWVudChj
b25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQqKTsKIAotICAgIHZpcnR1YWwgYm9vbCBtYXBU
b0VudHJ5KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBNYXBwZWRBdHRyaWJ1dGVFbnRyeSYpIGNvbnN0
OwogICAgIHZpcnR1YWwgdm9pZCBwYXJzZU1hcHBlZEF0dHJpYnV0ZShBdHRyaWJ1dGUqKTsKICAg
ICB2aXJ0dWFsIGJvb2wgaXNVUkxBdHRyaWJ1dGUoQXR0cmlidXRlKikgY29uc3Q7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRhYmxlUGFydEVsZW1lbnQuY3BwIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFibGVQYXJ0RWxlbWVudC5jcHAKaW5kZXggZGZhZWNjYS4u
Yzk2YmVhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFibGVQYXJ0RWxl
bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFibGVQYXJ0RWxlbWVudC5j
cHAKQEAgLTM2LDYzICszNiw1MiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHVzaW5nIG5hbWVz
cGFjZSBIVE1MTmFtZXM7CiAKLWJvb2wgSFRNTFRhYmxlUGFydEVsZW1lbnQ6Om1hcFRvRW50cnko
Y29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUsIE1hcHBlZEF0dHJpYnV0ZUVudHJ5JiByZXN1
bHQpIGNvbnN0Ci17Ci0gICAgaWYgKGF0dHJOYW1lID09IGJhY2tncm91bmRBdHRyKSB7Ci0gICAg
ICAgIHJlc3VsdCA9IChNYXBwZWRBdHRyaWJ1dGVFbnRyeSkoZUxhc3RFbnRyeSArIGRvY3VtZW50
KCktPmRvY0lEKCkpOwotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotICAgIAotICAgIGlm
IChhdHRyTmFtZSA9PSBiZ2NvbG9yQXR0ciB8fAotICAgICAgICBhdHRyTmFtZSA9PSBib3JkZXJj
b2xvckF0dHIgfHwKLSAgICAgICAgYXR0ck5hbWUgPT0gdmFsaWduQXR0ciB8fAotICAgICAgICBh
dHRyTmFtZSA9PSBoZWlnaHRBdHRyKSB7Ci0gICAgICAgIHJlc3VsdCA9IGVVbml2ZXJzYWw7Ci0g
ICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0gICAgCi0gICAgaWYgKGF0dHJOYW1lID09IGFs
aWduQXR0cikgewotICAgICAgICByZXN1bHQgPSBlQ2VsbDsgLy8gQWxsIHRhYmxlIHBhcnRzIHdp
bGwganVzdCBzaGFyZSBpbiB0aGUgVEQgc3BhY2UuCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAg
ICB9Ci0KLSAgICByZXR1cm4gSFRNTEVsZW1lbnQ6Om1hcFRvRW50cnkoYXR0ck5hbWUsIHJlc3Vs
dCk7Ci19Ci0KIHZvaWQgSFRNTFRhYmxlUGFydEVsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmlidXRl
KEF0dHJpYnV0ZSogYXR0cikKIHsKICAgICBpZiAoYXR0ci0+bmFtZSgpID09IGJnY29sb3JBdHRy
KQotICAgICAgICBhZGRDU1NDb2xvcihhdHRyLCBDU1NQcm9wZXJ0eUJhY2tncm91bmRDb2xvciwg
YXR0ci0+dmFsdWUoKSk7CisgICAgICAgIGlmIChhdHRyLT52YWx1ZSgpLmlzTnVsbCgpKQorICAg
ICAgICAgICAgcmVtb3ZlQ1NTUHJvcGVydHkoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQ29sb3IpOwor
ICAgICAgICBlbHNlCisgICAgICAgICAgICBhZGRDU1NDb2xvcihDU1NQcm9wZXJ0eUJhY2tncm91
bmRDb2xvciwgYXR0ci0+dmFsdWUoKSk7CiAgICAgZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09IGJh
Y2tncm91bmRBdHRyKSB7CiAgICAgICAgIFN0cmluZyB1cmwgPSBzdHJpcExlYWRpbmdBbmRUcmFp
bGluZ0hUTUxTcGFjZXMoYXR0ci0+dmFsdWUoKSk7CiAgICAgICAgIGlmICghdXJsLmlzRW1wdHko
KSkKLSAgICAgICAgICAgIGFkZENTU0ltYWdlUHJvcGVydHkoYXR0ciwgQ1NTUHJvcGVydHlCYWNr
Z3JvdW5kSW1hZ2UsIGRvY3VtZW50KCktPmNvbXBsZXRlVVJMKHVybCkuc3RyaW5nKCkpOworICAg
ICAgICAgICAgYWRkQ1NTSW1hZ2VQcm9wZXJ0eShDU1NQcm9wZXJ0eUJhY2tncm91bmRJbWFnZSwg
ZG9jdW1lbnQoKS0+Y29tcGxldGVVUkwodXJsKS5zdHJpbmcoKSk7CisgICAgICAgIGVsc2UKKyAg
ICAgICAgICAgIHJlbW92ZUNTU1Byb3BlcnR5KENTU1Byb3BlcnR5QmFja2dyb3VuZEltYWdlKTsK
ICAgICB9IGVsc2UgaWYgKGF0dHItPm5hbWUoKSA9PSBib3JkZXJjb2xvckF0dHIpIHsKICAgICAg
ICAgaWYgKCFhdHRyLT52YWx1ZSgpLmlzRW1wdHkoKSkgewotICAgICAgICAgICAgYWRkQ1NTQ29s
b3IoYXR0ciwgQ1NTUHJvcGVydHlCb3JkZXJDb2xvciwgYXR0ci0+dmFsdWUoKSk7Ci0gICAgICAg
ICAgICBhZGRDU1NQcm9wZXJ0eShhdHRyLCBDU1NQcm9wZXJ0eUJvcmRlclRvcFN0eWxlLCBDU1NW
YWx1ZVNvbGlkKTsKLSAgICAgICAgICAgIGFkZENTU1Byb3BlcnR5KGF0dHIsIENTU1Byb3BlcnR5
Qm9yZGVyQm90dG9tU3R5bGUsIENTU1ZhbHVlU29saWQpOwotICAgICAgICAgICAgYWRkQ1NTUHJv
cGVydHkoYXR0ciwgQ1NTUHJvcGVydHlCb3JkZXJMZWZ0U3R5bGUsIENTU1ZhbHVlU29saWQpOwot
ICAgICAgICAgICAgYWRkQ1NTUHJvcGVydHkoYXR0ciwgQ1NTUHJvcGVydHlCb3JkZXJSaWdodFN0
eWxlLCBDU1NWYWx1ZVNvbGlkKTsKLSAgICAgICAgfQorICAgICAgICAgICAgYWRkQ1NTQ29sb3Io
Q1NTUHJvcGVydHlCb3JkZXJDb2xvciwgYXR0ci0+dmFsdWUoKSk7CisgICAgICAgICAgICBhZGRD
U1NQcm9wZXJ0eShDU1NQcm9wZXJ0eUJvcmRlclRvcFN0eWxlLCBDU1NWYWx1ZVNvbGlkKTsKKyAg
ICAgICAgICAgIGFkZENTU1Byb3BlcnR5KENTU1Byb3BlcnR5Qm9yZGVyQm90dG9tU3R5bGUsIENT
U1ZhbHVlU29saWQpOworICAgICAgICAgICAgYWRkQ1NTUHJvcGVydHkoQ1NTUHJvcGVydHlCb3Jk
ZXJMZWZ0U3R5bGUsIENTU1ZhbHVlU29saWQpOworICAgICAgICAgICAgYWRkQ1NTUHJvcGVydHko
Q1NTUHJvcGVydHlCb3JkZXJSaWdodFN0eWxlLCBDU1NWYWx1ZVNvbGlkKTsKKyAgICAgICAgfSBl
bHNlCisgICAgICAgICAgICByZW1vdmVDU1NQcm9wZXJ0aWVzKENTU1Byb3BlcnR5Qm9yZGVyQ29s
b3IsIENTU1Byb3BlcnR5Qm9yZGVyVG9wU3R5bGUsIENTU1Byb3BlcnR5Qm9yZGVyQm90dG9tU3R5
bGUsIENTU1Byb3BlcnR5Qm9yZGVyTGVmdFN0eWxlLCBDU1NQcm9wZXJ0eUJvcmRlclJpZ2h0U3R5
bGUpOwogICAgIH0gZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09IHZhbGlnbkF0dHIpIHsKICAgICAg
ICAgaWYgKCFhdHRyLT52YWx1ZSgpLmlzRW1wdHkoKSkKLSAgICAgICAgICAgIGFkZENTU1Byb3Bl
cnR5KGF0dHIsIENTU1Byb3BlcnR5VmVydGljYWxBbGlnbiwgYXR0ci0+dmFsdWUoKSk7CisgICAg
ICAgICAgICBhZGRDU1NQcm9wZXJ0eShDU1NQcm9wZXJ0eVZlcnRpY2FsQWxpZ24sIGF0dHItPnZh
bHVlKCkpOworICAgICAgICBlbHNlCisgICAgICAgICAgICByZW1vdmVDU1NQcm9wZXJ0eShDU1NQ
cm9wZXJ0eVZlcnRpY2FsQWxpZ24pOwogICAgIH0gZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09IGFs
aWduQXR0cikgewogICAgICAgICBjb25zdCBBdG9taWNTdHJpbmcmIHYgPSBhdHRyLT52YWx1ZSgp
OwotICAgICAgICBpZiAoZXF1YWxJZ25vcmluZ0Nhc2UodiwgIm1pZGRsZSIpIHx8IGVxdWFsSWdu
b3JpbmdDYXNlKHYsICJjZW50ZXIiKSkKLSAgICAgICAgICAgIGFkZENTU1Byb3BlcnR5KGF0dHIs
IENTU1Byb3BlcnR5VGV4dEFsaWduLCBDU1NWYWx1ZVdlYmtpdENlbnRlcik7CisgICAgICAgIGlm
ICh2LmlzTnVsbCgpKQorICAgICAgICAgICAgcmVtb3ZlQ1NTUHJvcGVydHkoQ1NTUHJvcGVydHlU
ZXh0QWxpZ24pOworICAgICAgICBlbHNlIGlmIChlcXVhbElnbm9yaW5nQ2FzZSh2LCAibWlkZGxl
IikgfHwgZXF1YWxJZ25vcmluZ0Nhc2UodiwgImNlbnRlciIpKQorICAgICAgICAgICAgYWRkQ1NT
UHJvcGVydHkoQ1NTUHJvcGVydHlUZXh0QWxpZ24sIENTU1ZhbHVlV2Via2l0Q2VudGVyKTsKICAg
ICAgICAgZWxzZSBpZiAoZXF1YWxJZ25vcmluZ0Nhc2UodiwgImFic21pZGRsZSIpKQotICAgICAg
ICAgICAgYWRkQ1NTUHJvcGVydHkoYXR0ciwgQ1NTUHJvcGVydHlUZXh0QWxpZ24sIENTU1ZhbHVl
Q2VudGVyKTsKKyAgICAgICAgICAgIGFkZENTU1Byb3BlcnR5KENTU1Byb3BlcnR5VGV4dEFsaWdu
LCBDU1NWYWx1ZUNlbnRlcik7CiAgICAgICAgIGVsc2UgaWYgKGVxdWFsSWdub3JpbmdDYXNlKHYs
ICJsZWZ0IikpCi0gICAgICAgICAgICBhZGRDU1NQcm9wZXJ0eShhdHRyLCBDU1NQcm9wZXJ0eVRl
eHRBbGlnbiwgQ1NTVmFsdWVXZWJraXRMZWZ0KTsKKyAgICAgICAgICAgIGFkZENTU1Byb3BlcnR5
KENTU1Byb3BlcnR5VGV4dEFsaWduLCBDU1NWYWx1ZVdlYmtpdExlZnQpOwogICAgICAgICBlbHNl
IGlmIChlcXVhbElnbm9yaW5nQ2FzZSh2LCAicmlnaHQiKSkKLSAgICAgICAgICAgIGFkZENTU1By
b3BlcnR5KGF0dHIsIENTU1Byb3BlcnR5VGV4dEFsaWduLCBDU1NWYWx1ZVdlYmtpdFJpZ2h0KTsK
KyAgICAgICAgICAgIGFkZENTU1Byb3BlcnR5KENTU1Byb3BlcnR5VGV4dEFsaWduLCBDU1NWYWx1
ZVdlYmtpdFJpZ2h0KTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgYWRkQ1NTUHJvcGVydHko
YXR0ciwgQ1NTUHJvcGVydHlUZXh0QWxpZ24sIHYpOworICAgICAgICAgICAgYWRkQ1NTUHJvcGVy
dHkoQ1NTUHJvcGVydHlUZXh0QWxpZ24sIHYpOwogICAgIH0gZWxzZSBpZiAoYXR0ci0+bmFtZSgp
ID09IGhlaWdodEF0dHIpIHsKICAgICAgICAgaWYgKCFhdHRyLT52YWx1ZSgpLmlzRW1wdHkoKSkK
LSAgICAgICAgICAgIGFkZENTU0xlbmd0aChhdHRyLCBDU1NQcm9wZXJ0eUhlaWdodCwgYXR0ci0+
dmFsdWUoKSk7CisgICAgICAgICAgICBhZGRDU1NMZW5ndGgoQ1NTUHJvcGVydHlIZWlnaHQsIGF0
dHItPnZhbHVlKCkpOworICAgICAgICBlbHNlCisgICAgICAgICAgICByZW1vdmVDU1NQcm9wZXJ0
eShDU1NQcm9wZXJ0eUhlaWdodCk7CiAgICAgfSBlbHNlCiAgICAgICAgIEhUTUxFbGVtZW50Ojpw
YXJzZU1hcHBlZEF0dHJpYnV0ZShhdHRyKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTFRhYmxlUGFydEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRh
YmxlUGFydEVsZW1lbnQuaAppbmRleCA5ZGYyZjkxLi4zMTdmMThhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxUYWJsZVBhcnRFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MVGFibGVQYXJ0RWxlbWVudC5oCkBAIC0zNyw3ICszNyw2IEBAIHByb3RlY3Rl
ZDoKICAgICB7CiAgICAgfQogCi0gICAgdmlydHVhbCBib29sIG1hcFRvRW50cnkoY29uc3QgUXVh
bGlmaWVkTmFtZSYsIE1hcHBlZEF0dHJpYnV0ZUVudHJ5JikgY29uc3Q7CiAgICAgdmlydHVhbCB2
b2lkIHBhcnNlTWFwcGVkQXR0cmlidXRlKEF0dHJpYnV0ZSopOwogfTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEFyZWFFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTFRleHRBcmVhRWxlbWVudC5jcHAKaW5kZXggYjVhYzYzMy4uZWEwNjJlZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEFyZWFFbGVtZW50LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUZXh0QXJlYUVsZW1lbnQuY3BwCkBAIC0xNTEs
MTEgKzE1MSwxMSBAQCB2b2lkIEhUTUxUZXh0QXJlYUVsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmli
dXRlKEF0dHJpYnV0ZSogYXR0cikKICAgICAgICAgICAgIG1fd3JhcCA9IHdyYXA7CiAKICAgICAg
ICAgICAgIGlmIChzaG91bGRXcmFwVGV4dCgpKSB7Ci0gICAgICAgICAgICAgICAgYWRkQ1NTUHJv
cGVydHkoYXR0ciwgQ1NTUHJvcGVydHlXaGl0ZVNwYWNlLCBDU1NWYWx1ZVByZVdyYXApOwotICAg
ICAgICAgICAgICAgIGFkZENTU1Byb3BlcnR5KGF0dHIsIENTU1Byb3BlcnR5V29yZFdyYXAsIENT
U1ZhbHVlQnJlYWtXb3JkKTsKKyAgICAgICAgICAgICAgICBhZGRDU1NQcm9wZXJ0eShDU1NQcm9w
ZXJ0eVdoaXRlU3BhY2UsIENTU1ZhbHVlUHJlV3JhcCk7CisgICAgICAgICAgICAgICAgYWRkQ1NT
UHJvcGVydHkoQ1NTUHJvcGVydHlXb3JkV3JhcCwgQ1NTVmFsdWVCcmVha1dvcmQpOwogICAgICAg
ICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBhZGRDU1NQcm9wZXJ0eShhdHRyLCBDU1NQ
cm9wZXJ0eVdoaXRlU3BhY2UsIENTU1ZhbHVlUHJlKTsKLSAgICAgICAgICAgICAgICBhZGRDU1NQ
cm9wZXJ0eShhdHRyLCBDU1NQcm9wZXJ0eVdvcmRXcmFwLCBDU1NWYWx1ZU5vcm1hbCk7CisgICAg
ICAgICAgICAgICAgYWRkQ1NTUHJvcGVydHkoQ1NTUHJvcGVydHlXaGl0ZVNwYWNlLCBDU1NWYWx1
ZVByZSk7CisgICAgICAgICAgICAgICAgYWRkQ1NTUHJvcGVydHkoQ1NTUHJvcGVydHlXb3JkV3Jh
cCwgQ1NTVmFsdWVOb3JtYWwpOwogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBpZiAocmVu
ZGVyZXIoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFVMaXN0RWxlbWVu
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxVTGlzdEVsZW1lbnQuY3BwCmluZGV4IDRi
MTIxYWEuLjgwNzMzOTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFVMaXN0
RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVUxpc3RFbGVtZW50LmNw
cApAQCAtNDcsMjAgKzQ3LDEzIEBAIFBhc3NSZWZQdHI8SFRNTFVMaXN0RWxlbWVudD4gSFRNTFVM
aXN0RWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hCiAgICAgcmV0dXJu
IGFkb3B0UmVmKG5ldyBIVE1MVUxpc3RFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KSk7CiB9CiAK
LWJvb2wgSFRNTFVMaXN0RWxlbWVudDo6bWFwVG9FbnRyeShjb25zdCBRdWFsaWZpZWROYW1lJiBh
dHRyTmFtZSwgTWFwcGVkQXR0cmlidXRlRW50cnkmIHJlc3VsdCkgY29uc3QKLXsKLSAgICBpZiAo
YXR0ck5hbWUgPT0gdHlwZUF0dHIpIHsKLSAgICAgICAgcmVzdWx0ID0gZVVub3JkZXJlZExpc3Q7
Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0gICAgCi0gICAgcmV0dXJuIEhUTUxFbGVt
ZW50OjptYXBUb0VudHJ5KGF0dHJOYW1lLCByZXN1bHQpOwotfQotCiB2b2lkIEhUTUxVTGlzdEVs
ZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmlidXRlKEF0dHJpYnV0ZSogYXR0cikKIHsKICAgICBpZiAo
YXR0ci0+bmFtZSgpID09IHR5cGVBdHRyKQotICAgICAgICBhZGRDU1NQcm9wZXJ0eShhdHRyLCBD
U1NQcm9wZXJ0eUxpc3RTdHlsZVR5cGUsIGF0dHItPnZhbHVlKCkpOworICAgICAgICBpZiAoYXR0
ci0+dmFsdWUoKS5pc051bGwoKSkKKyAgICAgICAgICAgIHJlbW92ZUNTU1Byb3BlcnR5KENTU1By
b3BlcnR5TGlzdFN0eWxlVHlwZSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGFkZENTU1By
b3BlcnR5KENTU1Byb3BlcnR5TGlzdFN0eWxlVHlwZSwgYXR0ci0+dmFsdWUoKSk7CiAgICAgZWxz
ZQogICAgICAgICBIVE1MRWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUoYXR0cik7CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxVTGlzdEVsZW1lbnQuaCBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTFVMaXN0RWxlbWVudC5oCmluZGV4IGY5MWJmMWMuLjkwZWM0YWIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFVMaXN0RWxlbWVudC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFVMaXN0RWxlbWVudC5oCkBAIC0zNSw3ICszNSw2IEBA
IHB1YmxpYzoKIHByaXZhdGU6CiAgICAgSFRNTFVMaXN0RWxlbWVudChjb25zdCBRdWFsaWZpZWRO
YW1lJiwgRG9jdW1lbnQqKTsKIAotICAgIHZpcnR1YWwgYm9vbCBtYXBUb0VudHJ5KGNvbnN0IFF1
YWxpZmllZE5hbWUmLCBNYXBwZWRBdHRyaWJ1dGVFbnRyeSYpIGNvbnN0OwogICAgIHZpcnR1YWwg
dm9pZCBwYXJzZU1hcHBlZEF0dHJpYnV0ZShBdHRyaWJ1dGUqKTsKIH07CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFZpZGVvRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuY3BwCmluZGV4IGZlZDJmYTQuLjI3NzhjZWUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFZpZGVvRWxlbWVudC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MVmlkZW9FbGVtZW50LmNwcApAQCAtMTE0LDkgKzExNCwxNSBA
QCB2b2lkIEhUTUxWaWRlb0VsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmlidXRlKEF0dHJpYnV0ZSog
YXR0cikKICAgICAgICAgfQogI2VuZGlmCiAgICAgfSBlbHNlIGlmIChhdHRyTmFtZSA9PSB3aWR0
aEF0dHIpCi0gICAgICAgIGFkZENTU0xlbmd0aChhdHRyLCBDU1NQcm9wZXJ0eVdpZHRoLCBhdHRy
LT52YWx1ZSgpKTsKKyAgICAgICAgaWYgKGF0dHItPnZhbHVlKCkuaXNOdWxsKCkpCisgICAgICAg
ICAgICByZW1vdmVDU1NQcm9wZXJ0eShDU1NQcm9wZXJ0eVdpZHRoKTsKKyAgICAgICAgZWxzZQor
ICAgICAgICAgICAgYWRkQ1NTTGVuZ3RoKENTU1Byb3BlcnR5V2lkdGgsIGF0dHItPnZhbHVlKCkp
OwogICAgIGVsc2UgaWYgKGF0dHJOYW1lID09IGhlaWdodEF0dHIpCi0gICAgICAgIGFkZENTU0xl
bmd0aChhdHRyLCBDU1NQcm9wZXJ0eUhlaWdodCwgYXR0ci0+dmFsdWUoKSk7CisgICAgICAgIGlm
IChhdHRyLT52YWx1ZSgpLmlzTnVsbCgpKQorICAgICAgICAgICAgcmVtb3ZlQ1NTUHJvcGVydHko
Q1NTUHJvcGVydHlIZWlnaHQpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBhZGRDU1NMZW5n
dGgoQ1NTUHJvcGVydHlIZWlnaHQsIGF0dHItPnZhbHVlKCkpOwogICAgIGVsc2UKICAgICAgICAg
SFRNTE1lZGlhRWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUoYXR0cik7CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ1NTQWdlbnQuY3BwIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNTU0FnZW50LmNwcAppbmRleCA0MDA4YTQy
Li5lNDFjZWYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
Q1NTQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDU1NB
Z2VudC5jcHAKQEAgLTcxNiwyMyArNzE2LDIzIEBAIFBhc3NSZWZQdHI8SW5zcGVjdG9yQXJyYXk+
IEluc3BlY3RvckNTU0FnZW50OjpidWlsZEFycmF5Rm9yUnVsZUxpc3QoQ1NTUnVsZUxpc3QqCiAK
IFBhc3NSZWZQdHI8SW5zcGVjdG9yQXJyYXk+IEluc3BlY3RvckNTU0FnZW50OjpidWlsZEFycmF5
Rm9yQXR0cmlidXRlU3R5bGVzKEVsZW1lbnQqIGVsZW1lbnQpCiB7Ci0gICAgUmVmUHRyPEluc3Bl
Y3RvckFycmF5PiBhdHRyU3R5bGVzID0gSW5zcGVjdG9yQXJyYXk6OmNyZWF0ZSgpOwotICAgIE5h
bWVkTm9kZU1hcCogYXR0cmlidXRlcyA9IGVsZW1lbnQtPnVwZGF0ZWRBdHRyaWJ1dGVzKCk7Ci0g
ICAgaWYgKCFhdHRyaWJ1dGVzKQotICAgICAgICByZXR1cm4gYXR0clN0eWxlcy5yZWxlYXNlKCk7
CisgICAgLy8gRklYTUU6IFNpbmNlIHdlIG5vIGxvbmdlciBoYXZlIHBlci1hdHRyaWJ1dGUgc3R5
bGUgZGVjbGFyYXRpb25zLCB3ZSBzaG91bGQgY29tZSB1cAorICAgIC8vICAgICAgICB3aXRoIGEg
bmljZXIgd2F5IHRvIHByZXNlbnQgd2hhdCB3ZSBkbyBoYXZlLgogCi0gICAgZm9yICh1bnNpZ25l
ZCBpID0gMDsgYXR0cmlidXRlcyAmJiBpIDwgYXR0cmlidXRlcy0+bGVuZ3RoKCk7ICsraSkgewot
ICAgICAgICBBdHRyaWJ1dGUqIGF0dHJpYnV0ZSA9IGF0dHJpYnV0ZXMtPmF0dHJpYnV0ZUl0ZW0o
aSk7Ci0gICAgICAgIGlmICghYXR0cmlidXRlLT5kZWNsKCkpCi0gICAgICAgICAgICBjb250aW51
ZTsKLSAgICAgICAgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gYXR0clN0eWxlT2JqZWN0ID0gSW5z
cGVjdG9yT2JqZWN0OjpjcmVhdGUoKTsKLSAgICAgICAgU3RyaW5nIGF0dHJpYnV0ZU5hbWUgPSBh
dHRyaWJ1dGUtPmxvY2FsTmFtZSgpOwotICAgICAgICBSZWZQdHI8SW5zcGVjdG9yU3R5bGU+IGlu
c3BlY3RvclN0eWxlID0gSW5zcGVjdG9yU3R5bGU6OmNyZWF0ZShJbnNwZWN0b3JDU1NJZCgpLCBh
dHRyaWJ1dGUtPmRlY2woKS0+ZW5zdXJlQ1NTU3R5bGVEZWNsYXJhdGlvbigpLCAwKTsKLSAgICAg
ICAgYXR0clN0eWxlT2JqZWN0LT5zZXRTdHJpbmcoIm5hbWUiLCBhdHRyaWJ1dGVOYW1lLnV0Zjgo
KS5kYXRhKCkpOwotICAgICAgICBhdHRyU3R5bGVPYmplY3QtPnNldE9iamVjdCgic3R5bGUiLCBp
bnNwZWN0b3JTdHlsZS0+YnVpbGRPYmplY3RGb3JTdHlsZSgpKTsKLSAgICAgICAgYXR0clN0eWxl
cy0+cHVzaE9iamVjdChhdHRyU3R5bGVPYmplY3QucmVsZWFzZSgpKTsKLSAgICB9CisgICAgaWYg
KCFlbGVtZW50LT5pc1N0eWxlZEVsZW1lbnQoKSkKKyAgICAgICAgcmV0dXJuIEluc3BlY3RvckFy
cmF5OjpjcmVhdGUoKTsKIAorICAgIENTU01hcHBlZEF0dHJpYnV0ZURlY2xhcmF0aW9uKiBhdHRy
aWJ1dGVTdHlsZSA9IHN0YXRpY19jYXN0PFN0eWxlZEVsZW1lbnQqPihlbGVtZW50KS0+YXR0cmli
dXRlU3R5bGUoKTsKKyAgICBpZiAoIWF0dHJpYnV0ZVN0eWxlIHx8ICFhdHRyaWJ1dGVTdHlsZS0+
ZGVjbGFyYXRpb24oKSkKKyAgICAgICAgcmV0dXJuIEluc3BlY3RvckFycmF5OjpjcmVhdGUoKTsK
KworICAgIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IGF0dHJTdHlsZU9iamVjdCA9IEluc3BlY3Rv
ck9iamVjdDo6Y3JlYXRlKCk7CisgICAgUmVmUHRyPEluc3BlY3RvclN0eWxlPiBpbnNwZWN0b3JT
dHlsZSA9IEluc3BlY3RvclN0eWxlOjpjcmVhdGUoSW5zcGVjdG9yQ1NTSWQoKSwgYXR0cmlidXRl
U3R5bGUtPmRlY2xhcmF0aW9uKCktPmVuc3VyZUNTU1N0eWxlRGVjbGFyYXRpb24oKSwgMCk7Cisg
ICAgYXR0clN0eWxlT2JqZWN0LT5zZXRTdHJpbmcoIm5hbWUiLCAiIik7CisgICAgYXR0clN0eWxl
T2JqZWN0LT5zZXRPYmplY3QoInN0eWxlIiwgaW5zcGVjdG9yU3R5bGUtPmJ1aWxkT2JqZWN0Rm9y
U3R5bGUoKSk7CisKKyAgICBSZWZQdHI8SW5zcGVjdG9yQXJyYXk+IGF0dHJTdHlsZXMgPSBJbnNw
ZWN0b3JBcnJheTo6Y3JlYXRlKCk7CisgICAgYXR0clN0eWxlcy0+cHVzaE9iamVjdChhdHRyU3R5
bGVPYmplY3QucmVsZWFzZSgpKTsKICAgICByZXR1cm4gYXR0clN0eWxlcy5yZWxlYXNlKCk7CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxFbGVtZW50LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxFbGVtZW50LmNwcAppbmRleCA2MDg4ODEwLi43
ZGFjZjYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MRWxlbWVudC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTEVsZW1lbnQuY3BwCkBAIC00OCw0
MSArNDgsMjkgQEAgUGFzc1JlZlB0cjxNYXRoTUxFbGVtZW50PiBNYXRoTUxFbGVtZW50OjpjcmVh
dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG8KICAgICByZXR1cm4gYWRvcHRSZWYo
bmV3IE1hdGhNTEVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpKTsKIH0KIAotYm9vbCBNYXRoTUxF
bGVtZW50OjptYXBUb0VudHJ5KGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lLCBNYXBwZWRB
dHRyaWJ1dGVFbnRyeSYgcmVzdWx0KSBjb25zdAotewotICAgIGlmIChhdHRyTmFtZSA9PSBtYXRo
Y29sb3JBdHRyIHx8IGF0dHJOYW1lID09IG1hdGhiYWNrZ3JvdW5kQXR0cgotICAgICAgICB8fCBh
dHRyTmFtZSA9PSBjb2xvckF0dHIgfHwgYXR0ck5hbWUgPT0gYmFja2dyb3VuZEF0dHIKLSAgICAg
ICAgfHwgYXR0ck5hbWUgPT0gZm9udHNpemVBdHRyIHx8IGF0dHJOYW1lID09IGZvbnRzdHlsZUF0
dHIKLSAgICAgICAgfHwgYXR0ck5hbWUgPT0gZm9udHdlaWdodEF0dHIgfHwgYXR0ck5hbWUgPT0g
Zm9udGZhbWlseUF0dHIpIHsKLSAgICAgICAgcmVzdWx0ID0gZU1hdGhNTDsKLSAgICAgICAgcmV0
dXJuIGZhbHNlOwotICAgIH0KLSAgICByZXR1cm4gU3R5bGVkRWxlbWVudDo6bWFwVG9FbnRyeShh
dHRyTmFtZSwgcmVzdWx0KTsKLX0KLQogdm9pZCBNYXRoTUxFbGVtZW50OjpwYXJzZU1hcHBlZEF0
dHJpYnV0ZShBdHRyaWJ1dGUqIGF0dHIpCiB7CiAgICAgaWYgKGF0dHItPm5hbWUoKSA9PSBtYXRo
YmFja2dyb3VuZEF0dHIpCi0gICAgICAgIGFkZENTU1Byb3BlcnR5KGF0dHIsIENTU1Byb3BlcnR5
QmFja2dyb3VuZENvbG9yLCBhdHRyLT52YWx1ZSgpKTsKKyAgICAgICAgYWRkQ1NTUHJvcGVydHko
Q1NTUHJvcGVydHlCYWNrZ3JvdW5kQ29sb3IsIGF0dHItPnZhbHVlKCkpOwogICAgIGVsc2UgaWYg
KGF0dHItPm5hbWUoKSA9PSBtYXRoc2l6ZUF0dHIpIHsKICAgICAgICAgLy8gVGhlIGZvbGxvd2lu
ZyB0aHJlZSB2YWx1ZXMgb2YgbWF0aHNpemUgYXJlIGhhbmRsZWQgaW4gV2ViQ29yZS9jc3MvbWF0
aG1sLmNzcwogICAgICAgICBpZiAoYXR0ci0+dmFsdWUoKSAhPSAibm9ybWFsIiAmJiBhdHRyLT52
YWx1ZSgpICE9ICJzbWFsbCIgJiYgYXR0ci0+dmFsdWUoKSAhPSAiYmlnIikKLSAgICAgICAgICAg
IGFkZENTU1Byb3BlcnR5KGF0dHIsIENTU1Byb3BlcnR5Rm9udFNpemUsIGF0dHItPnZhbHVlKCkp
OworICAgICAgICAgICAgYWRkQ1NTUHJvcGVydHkoQ1NTUHJvcGVydHlGb250U2l6ZSwgYXR0ci0+
dmFsdWUoKSk7CiAgICAgfSBlbHNlIGlmIChhdHRyLT5uYW1lKCkgPT0gbWF0aGNvbG9yQXR0cikK
LSAgICAgICAgYWRkQ1NTUHJvcGVydHkoYXR0ciwgQ1NTUHJvcGVydHlDb2xvciwgYXR0ci0+dmFs
dWUoKSk7CisgICAgICAgIGFkZENTU1Byb3BlcnR5KENTU1Byb3BlcnR5Q29sb3IsIGF0dHItPnZh
bHVlKCkpOwogICAgIC8vIEZJWE1FOiBkZXByZWNhdGVkIGF0dHJpYnV0ZXMgdGhhdCBzaG91bGQg
bG9vc2UgaW4gYSBjb25mbGljdCB3aXRoIGEgbm9uIGRlcHJlY2F0ZWQgYXR0cmlidXRlCiAgICAg
ZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09IGZvbnRzaXplQXR0cikKLSAgICAgICAgYWRkQ1NTUHJv
cGVydHkoYXR0ciwgQ1NTUHJvcGVydHlGb250U2l6ZSwgYXR0ci0+dmFsdWUoKSk7CisgICAgICAg
IGFkZENTU1Byb3BlcnR5KENTU1Byb3BlcnR5Rm9udFNpemUsIGF0dHItPnZhbHVlKCkpOwogICAg
IGVsc2UgaWYgKGF0dHItPm5hbWUoKSA9PSBiYWNrZ3JvdW5kQXR0cikKLSAgICAgICAgYWRkQ1NT
UHJvcGVydHkoYXR0ciwgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQ29sb3IsIGF0dHItPnZhbHVlKCkp
OworICAgICAgICBhZGRDU1NQcm9wZXJ0eShDU1NQcm9wZXJ0eUJhY2tncm91bmRDb2xvciwgYXR0
ci0+dmFsdWUoKSk7CiAgICAgZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09IGNvbG9yQXR0cikKLSAg
ICAgICAgYWRkQ1NTUHJvcGVydHkoYXR0ciwgQ1NTUHJvcGVydHlDb2xvciwgYXR0ci0+dmFsdWUo
KSk7CisgICAgICAgIGFkZENTU1Byb3BlcnR5KENTU1Byb3BlcnR5Q29sb3IsIGF0dHItPnZhbHVl
KCkpOwogICAgIGVsc2UgaWYgKGF0dHItPm5hbWUoKSA9PSBmb250c3R5bGVBdHRyKQotICAgICAg
ICBhZGRDU1NQcm9wZXJ0eShhdHRyLCBDU1NQcm9wZXJ0eUZvbnRTdHlsZSwgYXR0ci0+dmFsdWUo
KSk7CisgICAgICAgIGFkZENTU1Byb3BlcnR5KENTU1Byb3BlcnR5Rm9udFN0eWxlLCBhdHRyLT52
YWx1ZSgpKTsKICAgICBlbHNlIGlmIChhdHRyLT5uYW1lKCkgPT0gZm9udHdlaWdodEF0dHIpCi0g
ICAgICAgIGFkZENTU1Byb3BlcnR5KGF0dHIsIENTU1Byb3BlcnR5Rm9udFdlaWdodCwgYXR0ci0+
dmFsdWUoKSk7CisgICAgICAgIGFkZENTU1Byb3BlcnR5KENTU1Byb3BlcnR5Rm9udFdlaWdodCwg
YXR0ci0+dmFsdWUoKSk7CiAgICAgZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09IGZvbnRmYW1pbHlB
dHRyKQotICAgICAgICBhZGRDU1NQcm9wZXJ0eShhdHRyLCBDU1NQcm9wZXJ0eUZvbnRGYW1pbHks
IGF0dHItPnZhbHVlKCkpOworICAgICAgICBhZGRDU1NQcm9wZXJ0eShDU1NQcm9wZXJ0eUZvbnRG
YW1pbHksIGF0dHItPnZhbHVlKCkpOwogICAgIGVsc2UKICAgICAgICAgU3R5bGVkRWxlbWVudDo6
cGFyc2VNYXBwZWRBdHRyaWJ1dGUoYXR0cik7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9tYXRobWwvTWF0aE1MRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTEVs
ZW1lbnQuaAppbmRleCA3Njc4ZjI2Li5lZjQ3NDRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9tYXRobWwvTWF0aE1MRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRo
TUxFbGVtZW50LmgKQEAgLTQyLDcgKzQyLDYgQEAgcHJvdGVjdGVkOgogCiBwcml2YXRlOiAgICAK
ICAgICB2aXJ0dWFsIGJvb2wgaXNNYXRoTUxFbGVtZW50KCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsg
fQotICAgIHZpcnR1YWwgYm9vbCBtYXBUb0VudHJ5KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBNYXBw
ZWRBdHRyaWJ1dGVFbnRyeSYpIGNvbnN0OwogICAgIHZpcnR1YWwgdm9pZCBwYXJzZU1hcHBlZEF0
dHJpYnV0ZShBdHRyaWJ1dGUqKTsKIH07CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHSW1hZ2VFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdJbWFnZUVs
ZW1lbnQuY3BwCmluZGV4IDQ0N2Q3MGYuLmJiNzQ5ZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdJbWFnZUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdJ
bWFnZUVsZW1lbnQuY3BwCkBAIC0xMDUsMTAgKzEwNSwxMCBAQCB2b2lkIFNWR0ltYWdlRWxlbWVu
dDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUoQXR0cmlidXRlKiBhdHRyKQogICAgICAgICBTVkdQcmVz
ZXJ2ZUFzcGVjdFJhdGlvOjpwYXJzZVByZXNlcnZlQXNwZWN0UmF0aW8odGhpcywgYXR0ci0+dmFs
dWUoKSk7CiAgICAgZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09IFNWR05hbWVzOjp3aWR0aEF0dHIp
IHsKICAgICAgICAgc2V0V2lkdGhCYXNlVmFsdWUoU1ZHTGVuZ3RoOjpjb25zdHJ1Y3QoTGVuZ3Ro
TW9kZVdpZHRoLCBhdHRyLT52YWx1ZSgpLCBwYXJzZUVycm9yLCBGb3JiaWROZWdhdGl2ZUxlbmd0
aHMpKTsKLSAgICAgICAgYWRkQ1NTUHJvcGVydHkoYXR0ciwgQ1NTUHJvcGVydHlXaWR0aCwgYXR0
ci0+dmFsdWUoKSk7CisgICAgICAgIGFkZENTU1Byb3BlcnR5KENTU1Byb3BlcnR5V2lkdGgsIGF0
dHItPnZhbHVlKCkpOwogICAgIH0gZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09IFNWR05hbWVzOjpo
ZWlnaHRBdHRyKSB7CiAgICAgICAgIHNldEhlaWdodEJhc2VWYWx1ZShTVkdMZW5ndGg6OmNvbnN0
cnVjdChMZW5ndGhNb2RlSGVpZ2h0LCBhdHRyLT52YWx1ZSgpLCBwYXJzZUVycm9yLCBGb3JiaWRO
ZWdhdGl2ZUxlbmd0aHMpKTsKLSAgICAgICAgYWRkQ1NTUHJvcGVydHkoYXR0ciwgQ1NTUHJvcGVy
dHlIZWlnaHQsIGF0dHItPnZhbHVlKCkpOworICAgICAgICBhZGRDU1NQcm9wZXJ0eShDU1NQcm9w
ZXJ0eUhlaWdodCwgYXR0ci0+dmFsdWUoKSk7CiAgICAgfSBlbHNlIGlmIChTVkdUZXN0czo6cGFy
c2VNYXBwZWRBdHRyaWJ1dGUoYXR0cikKICAgICAgICAgICAgICB8fCBTVkdMYW5nU3BhY2U6OnBh
cnNlTWFwcGVkQXR0cmlidXRlKGF0dHIpCiAgICAgICAgICAgICAgfHwgU1ZHRXh0ZXJuYWxSZXNv
dXJjZXNSZXF1aXJlZDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUoYXR0cikKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdTdHlsZWRFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdTdHlsZWRFbGVtZW50LmNwcAppbmRleCA2MjY2OWM4Li43MTlkMjY0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU3R5bGVkRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR1N0eWxlZEVsZW1lbnQuY3BwCkBAIC0yOTIsMjIgKzI5MiwxMSBAQCBib29s
IFNWR1N0eWxlZEVsZW1lbnQ6OmlzQW5pbWF0YWJsZUNTU1Byb3BlcnR5KGNvbnN0IFF1YWxpZmll
ZE5hbWUmIGF0dHJOYW1lKQogICAgIHJldHVybiBjc3NQcm9wZXJ0eVRvVHlwZU1hcCgpLmNvbnRh
aW5zKGF0dHJOYW1lKTsKIH0KIAotYm9vbCBTVkdTdHlsZWRFbGVtZW50OjptYXBUb0VudHJ5KGNv
bnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lLCBNYXBwZWRBdHRyaWJ1dGVFbnRyeSYgcmVzdWx0
KSBjb25zdAotewotICAgIGlmIChTVkdTdHlsZWRFbGVtZW50Ojpjc3NQcm9wZXJ0eUlkRm9yU1ZH
QXR0cmlidXRlTmFtZShhdHRyTmFtZSkgPiAwKSB7Ci0gICAgICAgIHJlc3VsdCA9IGVTVkc7Ci0g
ICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0gICAgcmV0dXJuIFNWR0VsZW1lbnQ6Om1hcFRv
RW50cnkoYXR0ck5hbWUsIHJlc3VsdCk7Ci19Ci0KIHZvaWQgU1ZHU3R5bGVkRWxlbWVudDo6cGFy
c2VNYXBwZWRBdHRyaWJ1dGUoQXR0cmlidXRlKiBhdHRyKQogewotICAgIC8vIE5PVEU6IEFueSBz
dWJjbGFzcyB3aGljaCBvdmVycmlkZXMgcGFyc2VNYXBwZWRBdHRyaWJ1dGUgZm9yIGEgcHJvcGVy
dHkgaGFuZGxlZCBieQotICAgIC8vIGNzc1Byb3BlcnR5SWRGb3JTVkdBdHRyaWJ1dGVOYW1lIHdp
bGwgYWxzbyBoYXZlIHRvIG92ZXJyaWRlIG1hcFRvRW50cnkgdG8gZGlzYWJsZSB0aGUgZGVmYXVs
dCBlU1ZHIG1hcHBpbmcKICAgICBpbnQgcHJvcElkID0gU1ZHU3R5bGVkRWxlbWVudDo6Y3NzUHJv
cGVydHlJZEZvclNWR0F0dHJpYnV0ZU5hbWUoYXR0ci0+bmFtZSgpKTsKICAgICBpZiAocHJvcElk
ID4gMCkgewotICAgICAgICBhZGRDU1NQcm9wZXJ0eShhdHRyLCBwcm9wSWQsIGF0dHItPnZhbHVl
KCkpOworICAgICAgICBhZGRDU1NQcm9wZXJ0eShwcm9wSWQsIGF0dHItPnZhbHVlKCkpOwogICAg
ICAgICBzZXROZWVkc1N0eWxlUmVjYWxjKCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC00
MjIsMjIgKzQxMSwxNCBAQCBQYXNzUmVmUHRyPENTU1ZhbHVlPiBTVkdTdHlsZWRFbGVtZW50Ojpn
ZXRQcmVzZW50YXRpb25BdHRyaWJ1dGUoY29uc3QgU3RyaW5nJiBuYQogCiAgICAgUXVhbGlmaWVk
TmFtZSBhdHRyaWJ1dGVOYW1lKG51bGxBdG9tLCBuYW1lLCBudWxsQXRvbSk7CiAgICAgQXR0cmli
dXRlKiBhdHRyID0gYXR0cmlidXRlTWFwKCktPmdldEF0dHJpYnV0ZUl0ZW0oYXR0cmlidXRlTmFt
ZSk7Ci0gICAgaWYgKCFhdHRyIHx8ICFhdHRyLT5pc01hcHBlZEF0dHJpYnV0ZSgpIHx8ICFhdHRy
LT5tYXBwZWRBdHRyaWJ1dGVEZWNsYXJhdGlvbigpKQorICAgIGlmICghYXR0ciB8fCAhYXR0ci0+
aXNNYXBwZWRBdHRyaWJ1dGUoKSkKICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICBBdHRyaWJ1dGUq
IGNzc1NWR0F0dHIgPSBhdHRyOwotICAgIC8vIFRoaXMgZnVuY3Rpb24gcmV0dXJucyBhIHBvaW50
ZXIgdG8gYSBDU1NWYWx1ZSB3aGljaCBjYW4gYmUgbXV0YXRlZCBmcm9tIEphdmFTY3JpcHQuCi0g
ICAgLy8gSWYgdGhlIGFzc29jaWF0ZWQgTWFwcGVkQXR0cmlidXRlIHVzZXMgdGhlIHNhbWUgQ1NT
TWFwcGVkQXR0cmlidXRlRGVjbGFyYXRpb24KLSAgICAvLyBhcyBTdHlsZWRFbGVtZW50J3MgbWFw
cGVkQXR0cmlidXRlRGVjbHMgY2FjaGUsIGNyZWF0ZSBhIG5ldyBDU1NNYXBwZWRBdHRyaWJ1dGVE
ZWNsYXJhdGlvbgotICAgIC8vIGJlZm9yZSByZXR1cm5pbmcgc28gdGhhdCBhbnkgbW9kaWZpY2F0
aW9ucyB0byB0aGUgQ1NTVmFsdWUgd2lsbCBub3QgYWZmZWN0IG90aGVyIGF0dHJpYnV0ZXMuCi0g
ICAgTWFwcGVkQXR0cmlidXRlRW50cnkgZW50cnk7Ci0gICAgbWFwVG9FbnRyeShhdHRyaWJ1dGVO
YW1lLCBlbnRyeSk7Ci0gICAgaWYgKGdldE1hcHBlZEF0dHJpYnV0ZURlY2woZW50cnksIGNzc1NW
R0F0dHIpID09IGNzc1NWR0F0dHItPm1hcHBlZEF0dHJpYnV0ZURlY2xhcmF0aW9uKCkpIHsKLSAg
ICAgICAgY3NzU1ZHQXR0ci0+c2V0TWFwcGVkQXR0cmlidXRlRGVjbGFyYXRpb24oMCk7Ci0gICAg
ICAgIGludCBwcm9wSWQgPSBTVkdTdHlsZWRFbGVtZW50Ojpjc3NQcm9wZXJ0eUlkRm9yU1ZHQXR0
cmlidXRlTmFtZShjc3NTVkdBdHRyLT5uYW1lKCkpOwotICAgICAgICBhZGRDU1NQcm9wZXJ0eShj
c3NTVkdBdHRyLCBwcm9wSWQsIGNzc1NWR0F0dHItPnZhbHVlKCkpOwotICAgIH0KLSAgICByZXR1
cm4gY3NzU1ZHQXR0ci0+ZGVjbCgpLT5nZXRQcm9wZXJ0eUNTU1ZhbHVlKGNzc1Byb3BlcnR5SUQo
bmFtZSkpOworICAgIFJlZlB0cjxTdHlsZVByb3BlcnR5U2V0PiBzdHlsZSA9IFN0eWxlUHJvcGVy
dHlTZXQ6OmNyZWF0ZSgpOworICAgIHN0eWxlLT5zZXRTdHJpY3RQYXJzaW5nKGZhbHNlKTsKKyAg
ICBpbnQgcHJvcGVydHlJRCA9IFNWR1N0eWxlZEVsZW1lbnQ6OmNzc1Byb3BlcnR5SWRGb3JTVkdB
dHRyaWJ1dGVOYW1lKGF0dHItPm5hbWUoKSk7CisgICAgc3R5bGUtPnNldFByb3BlcnR5KHByb3Bl
cnR5SUQsIGF0dHItPnZhbHVlKCkpOworICAgIHJldHVybiBzdHlsZS0+Z2V0UHJvcGVydHlDU1NW
YWx1ZShwcm9wZXJ0eUlEKTsKIH0KIAogYm9vbCBTVkdTdHlsZWRFbGVtZW50OjppbnN0YW5jZVVw
ZGF0ZXNCbG9ja2VkKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdT
dHlsZWRFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU3R5bGVkRWxlbWVudC5oCmlu
ZGV4IDc1NzcxNTEuLmE0ODI3NjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdT
dHlsZWRFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1N0eWxlZEVsZW1lbnQu
aApAQCAtNjUsNyArNjUsNiBAQCBwcm90ZWN0ZWQ6CiAgICAgU1ZHU3R5bGVkRWxlbWVudChjb25z
dCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQqLCBDb25zdHJ1Y3Rpb25UeXBlID0gQ3JlYXRlU1ZH
RWxlbWVudCk7CiAgICAgdmlydHVhbCBib29sIHJlbmRlcmVySXNOZWVkZWQoY29uc3QgTm9kZVJl
bmRlcmluZ0NvbnRleHQmKTsKIAotICAgIHZpcnR1YWwgYm9vbCBtYXBUb0VudHJ5KGNvbnN0IFF1
YWxpZmllZE5hbWUmLCBNYXBwZWRBdHRyaWJ1dGVFbnRyeSYpIGNvbnN0OwogICAgIHZpcnR1YWwg
dm9pZCBwYXJzZU1hcHBlZEF0dHJpYnV0ZShBdHRyaWJ1dGUqKTsKICAgICB2aXJ0dWFsIHZvaWQg
c3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJik7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUZXh0Q29udGVudEVsZW1lbnQuY3BwIGIvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR1RleHRDb250ZW50RWxlbWVudC5jcHAKaW5kZXggZmJhNjc4MC4uZmFiYjc5
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RleHRDb250ZW50RWxlbWVudC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RleHRDb250ZW50RWxlbWVudC5jcHAKQEAg
LTI0Nyw5ICsyNDcsOSBAQCB2b2lkIFNWR1RleHRDb250ZW50RWxlbWVudDo6cGFyc2VNYXBwZWRB
dHRyaWJ1dGUoQXR0cmlidXRlKiBhdHRyKQogICAgICAgICAgICAgREVGSU5FX1NUQVRJQ19MT0NB
TChjb25zdCBBdG9taWNTdHJpbmcsIHByZXNlcnZlU3RyaW5nLCAoInByZXNlcnZlIikpOwogCiAg
ICAgICAgICAgICBpZiAoYXR0ci0+dmFsdWUoKSA9PSBwcmVzZXJ2ZVN0cmluZykKLSAgICAgICAg
ICAgICAgICBhZGRDU1NQcm9wZXJ0eShhdHRyLCBDU1NQcm9wZXJ0eVdoaXRlU3BhY2UsIENTU1Zh
bHVlUHJlKTsKKyAgICAgICAgICAgICAgICBhZGRDU1NQcm9wZXJ0eShDU1NQcm9wZXJ0eVdoaXRl
U3BhY2UsIENTU1ZhbHVlUHJlKTsKICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBh
ZGRDU1NQcm9wZXJ0eShhdHRyLCBDU1NQcm9wZXJ0eVdoaXRlU3BhY2UsIENTU1ZhbHVlTm93cmFw
KTsKKyAgICAgICAgICAgICAgICBhZGRDU1NQcm9wZXJ0eShDU1NQcm9wZXJ0eVdoaXRlU3BhY2Us
IENTU1ZhbHVlTm93cmFwKTsKICAgICAgICAgfQogICAgIH0gZWxzZQogICAgICAgICBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsK
</data>
<flag name="review"
          id="126950"
          type_id="1"
          status="+"
          setter="koivisto"
    />
          </attachment>
      

    </bug>

</bugzilla>