<?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>191319</bug_id>
          
          <creation_ts>2018-11-06 12:22:18 -0800</creation_ts>
          <short_desc>Add experimental support for a `supported-color-schemes` CSS property</short_desc>
          <delta_ts>2018-11-08 13:57:51 -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>CSS</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Timothy Hatcher">timothy</reporter>
          <assigned_to name="Timothy Hatcher">timothy</assigned_to>
          <cc>bdakin</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dino</cc>
    
    <cc>megan_gardner</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>thorton</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1475620</commentid>
    <comment_count>0</comment_count>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2018-11-06 12:22:18 -0800</bug_when>
    <thetext>Current proposal, based on our current meta tag implementation:

supported-color-schemes: [light? || dark? || &lt;ident&gt;?]* || only?

Inherited: yes
Initial value: auto

&quot;auto&quot; (initial value) — the UA may choose to transform the content to match the user&apos;s preference.
&quot;light dark&quot; — the UA will choose the light or dark theme to match the user&apos;s preference. If the user&apos;s preference does not match something in the list, the UA is allowed to apply transformations to the content.
&quot;only&quot; — synonym for &quot;only light&quot;; the UA will only ever render the content in the light color scheme, and never apply transformations.
&quot;light dark only&quot; — the UA will choose the first of the listed schemes that it supports taking user preference into account, and never apply transformations.
&quot;os-specific-scheme only&quot; — if the UA doesn&apos;t support “os-specific-scheme” it&apos;s allowed to fall back to its default rendering “light”, and will never apply transformations.

UAs are always allowed to apply minimal transformations, for example making the root background transparent, but not change the overall appearance of the content.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1475621</commentid>
    <comment_count>1</comment_count>
      <attachid>353985</attachid>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2018-11-06 12:22:53 -0800</bug_when>
    <thetext>Created attachment 353985
WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1475622</commentid>
    <comment_count>2</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2018-11-06 12:23:20 -0800</bug_when>
    <thetext>&lt;rdar://problem/45852261&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1476068</commentid>
    <comment_count>3</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2018-11-07 10:54:11 -0800</bug_when>
    <thetext>Let&apos;s write up the GitHub issue before we land this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1476342</commentid>
    <comment_count>4</comment_count>
      <attachid>354183</attachid>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2018-11-07 17:01:31 -0800</bug_when>
    <thetext>Created attachment 354183
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1476344</commentid>
    <comment_count>5</comment_count>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2018-11-07 17:05:51 -0800</bug_when>
    <thetext>Simon wrote up the GitHub issue at: https://github.com/w3c/csswg-drafts/issues/3299</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1476346</commentid>
    <comment_count>6</comment_count>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2018-11-07 17:07:32 -0800</bug_when>
    <thetext>My patch supports an `auto` value to let the CSS property interact with the &lt;meta&gt; value if both are used.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1476349</commentid>
    <comment_count>7</comment_count>
      <attachid>354185</attachid>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2018-11-07 17:14:09 -0800</bug_when>
    <thetext>Created attachment 354185
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1476352</commentid>
    <comment_count>8</comment_count>
      <attachid>354185</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2018-11-07 17:22:46 -0800</bug_when>
    <thetext>Comment on attachment 354185
Patch

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

I don&apos;t see any code that keeps support for the CSS property behind the DarkModeCSS feature setting?

&gt; Source/WebCore/rendering/style/RenderStyleConstants.h:1026
&gt; +enum class ColorSchemes : uint8_t {
&gt; +    Only = 1 &lt;&lt; 0,
&gt; +    Light = 1 &lt;&lt; 1,
&gt; +    Dark = 1 &lt;&lt; 2
&gt; +};

This doesn&apos;t read very well. &quot;only&quot; isn&apos;t a scheme.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1476449</commentid>
    <comment_count>9</comment_count>
      <attachid>354212</attachid>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2018-11-08 01:02:28 -0800</bug_when>
    <thetext>Created attachment 354212
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1476450</commentid>
    <comment_count>10</comment_count>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2018-11-08 01:03:01 -0800</bug_when>
    <thetext>(In reply to Simon Fraser (smfr) from comment #8)
&gt; Comment on attachment 354185 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=354185&amp;action=review
&gt; 
&gt; I don&apos;t see any code that keeps support for the CSS property behind the
&gt; DarkModeCSS feature setting?

Fixed.

&gt; &gt; Source/WebCore/rendering/style/RenderStyleConstants.h:1026
&gt; &gt; +enum class ColorSchemes : uint8_t {
&gt; &gt; +    Only = 1 &lt;&lt; 0,
&gt; &gt; +    Light = 1 &lt;&lt; 1,
&gt; &gt; +    Dark = 1 &lt;&lt; 2
&gt; &gt; +};
&gt; 
&gt; This doesn&apos;t read very well. &quot;only&quot; isn&apos;t a scheme.

Fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1476452</commentid>
    <comment_count>11</comment_count>
      <attachid>354214</attachid>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2018-11-08 01:07:12 -0800</bug_when>
    <thetext>Created attachment 354214
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1476460</commentid>
    <comment_count>12</comment_count>
      <attachid>354219</attachid>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2018-11-08 01:19:49 -0800</bug_when>
    <thetext>Created attachment 354219
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1476515</commentid>
    <comment_count>13</comment_count>
      <attachid>354238</attachid>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2018-11-08 07:12:18 -0800</bug_when>
    <thetext>Created attachment 354238
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1476552</commentid>
    <comment_count>14</comment_count>
      <attachid>354238</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2018-11-08 10:11:27 -0800</bug_when>
    <thetext>Comment on attachment 354238
Patch

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

&gt; Source/WebCore/css/CSSComputedStyleDeclaration.cpp:3976
&gt; +        case CSSPropertySupportedColorSchemes: {

This should check RuntimeEnabledFeatures::sharedFeatures().darkModeCSSEnabled(), otherwise the presence of the property is detectable via getComputedStyle.

&gt; Source/WebCore/html/canvas/CanvasRenderingContext2D.cpp:89
&gt; +    context-&gt;drawFocusRing(path, 1, 1, RenderTheme::focusRingColor(element.document().styleColorOptions(canvas().computedStyle())));

That call to computedStyle() seems like it could be expensive, when all we need is one property.

&gt; Source/WebCore/rendering/style/StyleSupportedColorSchemes.h:65
&gt; +    unsigned m_colorSchemes : ColorSchemesBits; // ColorSchemes

Can this be an OptionSet&lt;&gt;? Using 2 bits here isn&apos;t saving you anything because you&apos;ll have 6 bits of padding before the bool.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1476584</commentid>
    <comment_count>15</comment_count>
      <attachid>354238</attachid>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2018-11-08 11:21:07 -0800</bug_when>
    <thetext>Comment on attachment 354238
Patch

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

&gt;&gt; Source/WebCore/css/CSSComputedStyleDeclaration.cpp:3976
&gt;&gt; +        case CSSPropertySupportedColorSchemes: {
&gt; 
&gt; This should check RuntimeEnabledFeatures::sharedFeatures().darkModeCSSEnabled(), otherwise the presence of the property is detectable via getComputedStyle.

Yep.

&gt;&gt; Source/WebCore/html/canvas/CanvasRenderingContext2D.cpp:89
&gt;&gt; +    context-&gt;drawFocusRing(path, 1, 1, RenderTheme::focusRingColor(element.document().styleColorOptions(canvas().computedStyle())));
&gt; 
&gt; That call to computedStyle() seems like it could be expensive, when all we need is one property.

I don&apos;t know any other option to avoid it. A few other places in CanvasRenderingContext2D.cpp access computedStyle() too.

&gt;&gt; Source/WebCore/rendering/style/StyleSupportedColorSchemes.h:65
&gt;&gt; +    unsigned m_colorSchemes : ColorSchemesBits; // ColorSchemes
&gt; 
&gt; Can this be an OptionSet&lt;&gt;? Using 2 bits here isn&apos;t saving you anything because you&apos;ll have 6 bits of padding before the bool.

Sure. Makes sense.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1476587</commentid>
    <comment_count>16</comment_count>
      <attachid>354256</attachid>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2018-11-08 11:31:20 -0800</bug_when>
    <thetext>Created attachment 354256
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1476588</commentid>
    <comment_count>17</comment_count>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2018-11-08 11:31:56 -0800</bug_when>
    <thetext>Comments addressed (other than the computed style use in canvas).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1476612</commentid>
    <comment_count>18</comment_count>
      <attachid>354256</attachid>
    <who name="Dean Jackson">dino</who>
    <bug_when>2018-11-08 12:13:49 -0800</bug_when>
    <thetext>Comment on attachment 354256
Patch

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

&gt; Source/WebCore/dom/Document.cpp:3598
&gt; +            supportedColorSchemes = { };

Is this needed since you already guarded for auto being the only member of the list?

&gt; Source/WebCore/inspector/InspectorOverlay.cpp:183
&gt; +    GraphicsContextStateSaver stateSaver(context);

Why was this added?

&gt; Source/WebCore/rendering/style/RenderStyleConstants.h:1027
&gt; +static const size_t ColorSchemesBits = 2;

Shame we can&apos;t do a static_assert on these :(

&gt; Source/WebCore/rendering/style/StyleSupportedColorSchemes.h:40
&gt; +        : m_colorSchemes(other.m_colorSchemes), m_allowsTransformations(other.m_allowsTransformations) { }

Do we usually put all this on one line?

&gt; Source/WebCore/rendering/style/StyleSupportedColorSchemes.h:43
&gt; +        : m_colorSchemes(colorSchemes), m_allowsTransformations(allowsTransformations) { }

Ditto?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1476630</commentid>
    <comment_count>19</comment_count>
      <attachid>354256</attachid>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2018-11-08 13:16:28 -0800</bug_when>
    <thetext>Comment on attachment 354256
Patch

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

&gt;&gt; Source/WebCore/dom/Document.cpp:3598
&gt;&gt; +            supportedColorSchemes = { };
&gt; 
&gt; Is this needed since you already guarded for auto being the only member of the list?

This is the meta tag parsing, which is its own thing.

&gt;&gt; Source/WebCore/inspector/InspectorOverlay.cpp:183
&gt;&gt; +    GraphicsContextStateSaver stateSaver(context);
&gt; 
&gt; Why was this added?

I moved the LocalDefaultSystemAppearance below to use existing view var. Patch lies.

&gt;&gt; Source/WebCore/rendering/style/StyleSupportedColorSchemes.h:40
&gt;&gt; +        : m_colorSchemes(other.m_colorSchemes), m_allowsTransformations(other.m_allowsTransformations) { }
&gt; 
&gt; Do we usually put all this on one line?

No, i&apos;ll fix.

&gt;&gt; Source/WebCore/rendering/style/StyleSupportedColorSchemes.h:43
&gt;&gt; +        : m_colorSchemes(colorSchemes), m_allowsTransformations(allowsTransformations) { }
&gt; 
&gt; Ditto?

Ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1476631</commentid>
    <comment_count>20</comment_count>
      <attachid>354265</attachid>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2018-11-08 13:18:37 -0800</bug_when>
    <thetext>Created attachment 354265
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1476648</commentid>
    <comment_count>21</comment_count>
      <attachid>354265</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-11-08 13:57:50 -0800</bug_when>
    <thetext>Comment on attachment 354265
Patch

Clearing flags on attachment: 354265

Committed r238001: &lt;https://trac.webkit.org/changeset/238001&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1476649</commentid>
    <comment_count>22</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-11-08 13:57:51 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>353985</attachid>
            <date>2018-11-06 12:22:53 -0800</date>
            <delta_ts>2018-11-07 17:01:29 -0800</delta_ts>
            <desc>WIP</desc>
            <filename>WIP.patch</filename>
            <type>text/plain</type>
            <size>43075</size>
            <attacher name="Timothy Hatcher">timothy</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRp
b24uY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5j
cHAKaW5kZXggMDc0OWQ5YTRkNjguLjMyMzAxZGVjMWVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcApAQCAtNDQ4LDYgKzQ0OCw5
IEBAIHN0YXRpYyBjb25zdCBDU1NQcm9wZXJ0eUlEIGNvbXB1dGVkUHJvcGVydGllc1tdID0gewog
ICAgIENTU1Byb3BlcnR5U3Ryb2tlTWl0ZXJsaW1pdCwKICAgICBDU1NQcm9wZXJ0eVN0cm9rZU9w
YWNpdHksCiAgICAgQ1NTUHJvcGVydHlTdHJva2VXaWR0aCwKKyNpZiBFTkFCTEUoREFSS19NT0RF
X0NTUykKKyAgICBDU1NQcm9wZXJ0eVN1cHBvcnRlZENvbG9yU2NoZW1lcywKKyNlbmRpZgogICAg
IENTU1Byb3BlcnR5QWxpZ25tZW50QmFzZWxpbmUsCiAgICAgQ1NTUHJvcGVydHlCYXNlbGluZVNo
aWZ0LAogICAgIENTU1Byb3BlcnR5RG9taW5hbnRCYXNlbGluZSwKQEAgLTM5NDcsNiArMzk1MCwy
NCBAQCBSZWZQdHI8Q1NTVmFsdWU+IENvbXB1dGVkU3R5bGVFeHRyYWN0b3I6OnZhbHVlRm9yUHJv
cGVydHlpblN0eWxlKGNvbnN0IFJlbmRlclN0eQogICAgICAgICAgICAgcmV0dXJuIGNzc1ZhbHVl
UG9vbC5jcmVhdGVWYWx1ZShzdHlsZS5hcHBsZVBheUJ1dHRvblR5cGUoKSk7CiAjZW5kaWYKIAor
I2lmIEVOQUJMRShEQVJLX01PREVfQ1NTKQorICAgICAgICBjYXNlIENTU1Byb3BlcnR5U3VwcG9y
dGVkQ29sb3JTY2hlbWVzOiB7CisgICAgICAgICAgICBhdXRvIHN1cHBvcnRlZENvbG9yU2NoZW1l
cyA9IHN0eWxlLnN1cHBvcnRlZENvbG9yU2NoZW1lcygpOworICAgICAgICAgICAgaWYgKHN1cHBv
cnRlZENvbG9yU2NoZW1lcy5pc0VtcHR5KCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIGNzc1Zh
bHVlUG9vbC5jcmVhdGVJZGVudGlmaWVyVmFsdWUoQ1NTVmFsdWVBdXRvKTsKKworICAgICAgICAg
ICAgYXV0byBsaXN0ID0gQ1NTVmFsdWVMaXN0OjpjcmVhdGVTcGFjZVNlcGFyYXRlZCgpOworICAg
ICAgICAgICAgaWYgKHN1cHBvcnRlZENvbG9yU2NoZW1lcyAmIENvbG9yU2NoZW1lczo6TGlnaHQp
CisgICAgICAgICAgICAgICAgbGlzdC0+YXBwZW5kKGNzc1ZhbHVlUG9vbC5jcmVhdGVJZGVudGlm
aWVyVmFsdWUoQ1NTVmFsdWVMaWdodCkpOworICAgICAgICAgICAgaWYgKHN1cHBvcnRlZENvbG9y
U2NoZW1lcyAmIENvbG9yU2NoZW1lczo6RGFyaykKKyAgICAgICAgICAgICAgICBsaXN0LT5hcHBl
bmQoY3NzVmFsdWVQb29sLmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1ZURhcmspKTsKKyAg
ICAgICAgICAgIGlmIChzdXBwb3J0ZWRDb2xvclNjaGVtZXMgJiBDb2xvclNjaGVtZXM6Ok9ubHkp
CisgICAgICAgICAgICAgICAgbGlzdC0+YXBwZW5kKGNzc1ZhbHVlUG9vbC5jcmVhdGVJZGVudGlm
aWVyVmFsdWUoQ1NTVmFsdWVPbmx5KSk7CisgICAgICAgICAgICBBU1NFUlQobGlzdC0+bGVuZ3Ro
KCkpOworICAgICAgICAgICAgcmV0dXJuIFdURk1vdmUobGlzdCk7CisgICAgICAgIH0KKyNlbmRp
ZgorCiAgICAgICAgIC8qIEluZGl2aWR1YWwgcHJvcGVydGllcyBub3QgcGFydCBvZiB0aGUgc3Bl
YyAqLwogICAgICAgICBjYXNlIENTU1Byb3BlcnR5QmFja2dyb3VuZFJlcGVhdFg6CiAgICAgICAg
IGNhc2UgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kUmVwZWF0WToKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NQcm9wZXJ0aWVzLmpzb24gYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJv
cGVydGllcy5qc29uCmluZGV4IGJjNmI1NzhiOGRlLi4wZTQ4ZDlmM2E0OSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvY3NzL0NTU1Byb3BlcnRpZXMuanNvbgorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTUHJvcGVydGllcy5qc29uCkBAIC01NzEyLDYgKzU3MTIsMjIgQEAKICAgICAgICAg
ICAgIH0sCiAgICAgICAgICAgICAic3RhdHVzIjogIm5vbi1zdGFuZGFyZCIKICAgICAgICAgfSwK
KyAgICAgICAgInN1cHBvcnRlZC1jb2xvci1zY2hlbWVzIjogeworICAgICAgICAgICAgImluaGVy
aXRlZCI6IHRydWUsCisgICAgICAgICAgICAidmFsdWVzIjogWworICAgICAgICAgICAgICAgICJh
dXRvIiwKKyAgICAgICAgICAgICAgICAibGlnaHQiLAorICAgICAgICAgICAgICAgICJkYXJrIiwK
KyAgICAgICAgICAgICAgICAib25seSIKKyAgICAgICAgICAgIF0sCisgICAgICAgICAgICAiY29k
ZWdlbi1wcm9wZXJ0aWVzIjogeworICAgICAgICAgICAgICAgICJjb252ZXJ0ZXIiOiAiQ29sb3JT
Y2hlbWVzIiwKKyAgICAgICAgICAgICAgICAiZW5hYmxlLWlmIjogIkVOQUJMRV9EQVJLX01PREVf
Q1NTIgorICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICJzdGF0dXMiOiB7CisgICAgICAgICAg
ICAgICAgInN0YXR1cyI6ICJub24tc3RhbmRhcmQiCisgICAgICAgICAgICB9CisgICAgICAgIH0s
CiAgICAgICAgICJvcmRlciI6IHsKICAgICAgICAgICAgICJjb2RlZ2VuLXByb3BlcnRpZXMiOiB7
CiAgICAgICAgICAgICAgICAgImFsaWFzZXMiOiBbCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTVmFsdWVLZXl3b3Jkcy5pbiBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NWYWx1ZUtl
eXdvcmRzLmluCmluZGV4IDQ2MzIzNjNmOTQxLi4yYmVhZjY0ZGJmNyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvY3NzL0NTU1ZhbHVlS2V5d29yZHMuaW4KKysrIGIvU291cmNlL1dlYkNvcmUv
Y3NzL0NTU1ZhbHVlS2V5d29yZHMuaW4KQEAgLTEzODQsNiArMTM4NCwxMSBAQCBuby1wcmVmZXJl
bmNlCiBsaWdodAogZGFyawogLy8gbm8tcHJlZmVyZW5jZQorCisvLyBzdXBwb3J0ZWQtY29sb3It
c2NoZW1lcworb25seQorLy8gbGlnaHQKKy8vIGRhcmsKICNlbmRpZgogCiAvLyBhdXRvLXJlcGVh
dApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlQnVpbGRlckNvbnZlcnRlci5o
IGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlQnVpbGRlckNvbnZlcnRlci5oCmluZGV4IDYzZWIx
MzE1NTZhLi43ZDNhODI0ZDI1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxl
QnVpbGRlckNvbnZlcnRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZUJ1aWxkZXJD
b252ZXJ0ZXIuaApAQCAtNzcsNiArNzcsOSBAQCBwdWJsaWM6CiAgICAgdGVtcGxhdGU8Q1NTUHJv
cGVydHlJRD4gc3RhdGljIE5pbmVQaWVjZUltYWdlIGNvbnZlcnRCb3JkZXJNYXNrKFN0eWxlUmVz
b2x2ZXImLCBDU1NWYWx1ZSYpOwogICAgIHRlbXBsYXRlPENTU1Byb3BlcnR5SUQ+IHN0YXRpYyBS
ZWZQdHI8U3R5bGVJbWFnZT4gY29udmVydFN0eWxlSW1hZ2UoU3R5bGVSZXNvbHZlciYsIENTU1Zh
bHVlJik7CiAgICAgc3RhdGljIFRyYW5zZm9ybU9wZXJhdGlvbnMgY29udmVydFRyYW5zZm9ybShT
dHlsZVJlc29sdmVyJiwgY29uc3QgQ1NTVmFsdWUmKTsKKyNpZiBFTkFCTEUoREFSS19NT0RFX0NT
UykKKyAgICBzdGF0aWMgT3B0aW9uU2V0PENvbG9yU2NoZW1lcz4gY29udmVydENvbG9yU2NoZW1l
cyhTdHlsZVJlc29sdmVyJiwgY29uc3QgQ1NTVmFsdWUmKTsKKyNlbmRpZgogICAgIHN0YXRpYyBT
dHJpbmcgY29udmVydFN0cmluZyhTdHlsZVJlc29sdmVyJiwgY29uc3QgQ1NTVmFsdWUmKTsKICAg
ICBzdGF0aWMgU3RyaW5nIGNvbnZlcnRTdHJpbmdPckF1dG8oU3R5bGVSZXNvbHZlciYsIGNvbnN0
IENTU1ZhbHVlJik7CiAgICAgc3RhdGljIFN0cmluZyBjb252ZXJ0U3RyaW5nT3JOb25lKFN0eWxl
UmVzb2x2ZXImLCBjb25zdCBDU1NWYWx1ZSYpOwpAQCAtMTYzLDYgKzE2NiwxMCBAQCBwcml2YXRl
OgogICAgIHN0YXRpYyBMZW5ndGggcGFyc2VTbmFwQ29vcmRpbmF0ZShTdHlsZVJlc29sdmVyJiwg
Y29uc3QgQ1NTVmFsdWUmKTsKICNlbmRpZgogCisjaWYgRU5BQkxFKERBUktfTU9ERV9DU1MpCisg
ICAgc3RhdGljIE9wdGlvblNldDxDb2xvclNjaGVtZXM+IHZhbHVlVG9Db2xvclNjaGVtZXMoY29u
c3QgQ1NTUHJpbWl0aXZlVmFsdWUmKTsKKyNlbmRpZgorCiAgICAgc3RhdGljIExlbmd0aCBjb252
ZXJ0VG8xMDBQZXJjZW50TWludXNMZW5ndGgoY29uc3QgTGVuZ3RoJik7CiAgICAgdGVtcGxhdGU8
Q1NTVmFsdWVJRCwgQ1NTVmFsdWVJRD4gc3RhdGljIExlbmd0aCBjb252ZXJ0UG9zaXRpb25Db21w
b25lbnQoU3R5bGVSZXNvbHZlciYsIGNvbnN0IENTU1ByaW1pdGl2ZVZhbHVlJik7CiAKQEAgLTQ1
MSw2ICs0NTgsNDEgQEAgaW5saW5lIFRyYW5zZm9ybU9wZXJhdGlvbnMgU3R5bGVCdWlsZGVyQ29u
dmVydGVyOjpjb252ZXJ0VHJhbnNmb3JtKFN0eWxlUmVzb2x2ZXIKICAgICByZXR1cm4gb3BlcmF0
aW9uczsKIH0KIAoraW5saW5lIE9wdGlvblNldDxDb2xvclNjaGVtZXM+IFN0eWxlQnVpbGRlckNv
bnZlcnRlcjo6dmFsdWVUb0NvbG9yU2NoZW1lcyhjb25zdCBDU1NQcmltaXRpdmVWYWx1ZSYgcHJp
bWl0aXZlVmFsdWUpCit7CisgICAgQVNTRVJUKHByaW1pdGl2ZVZhbHVlLmlzVmFsdWVJRCgpKTsK
KworICAgIHN3aXRjaCAocHJpbWl0aXZlVmFsdWUudmFsdWVJRCgpKSB7CisgICAgY2FzZSBDU1NW
YWx1ZUF1dG86CisgICAgICAgIHJldHVybiB7IH07CisgICAgY2FzZSBDU1NWYWx1ZU9ubHk6Cisg
ICAgICAgIHJldHVybiBDb2xvclNjaGVtZXM6Ok9ubHk7CisgICAgY2FzZSBDU1NWYWx1ZUxpZ2h0
OgorICAgICAgICByZXR1cm4gQ29sb3JTY2hlbWVzOjpMaWdodDsKKyAgICBjYXNlIENTU1ZhbHVl
RGFyazoKKyAgICAgICAgcmV0dXJuIENvbG9yU2NoZW1lczo6RGFyazsKKyAgICBkZWZhdWx0Ogor
ICAgICAgICAvLyBVbmtub3duIGlkZW50aWZpZXJzIGFyZSBhbGxvd2VkIGFuZCBpZ25vcmVkLgor
ICAgICAgICByZXR1cm4geyB9OworICAgIH0KK30KKworaW5saW5lIE9wdGlvblNldDxDb2xvclNj
aGVtZXM+IFN0eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydENvbG9yU2NoZW1lcyhTdHlsZVJl
c29sdmVyJiwgY29uc3QgQ1NTVmFsdWUmIHZhbHVlKQoreworICAgIE9wdGlvblNldDxDb2xvclNj
aGVtZXM+IGNvbG9yU2NoZW1lczsKKyAgICBpZiAoaXM8Q1NTVmFsdWVMaXN0Pih2YWx1ZSkpIHsK
KyAgICAgICAgZm9yIChhdXRvJiBjdXJyZW50VmFsdWUgOiBkb3duY2FzdDxDU1NWYWx1ZUxpc3Q+
KHZhbHVlKSkKKyAgICAgICAgICAgIGNvbG9yU2NoZW1lcy5hZGQodmFsdWVUb0NvbG9yU2NoZW1l
cyhkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4oY3VycmVudFZhbHVlLmdldCgpKSkpOworICAg
IH0gZWxzZSBpZiAoaXM8Q1NTUHJpbWl0aXZlVmFsdWU+KHZhbHVlKSkKKyAgICAgICAgY29sb3JT
Y2hlbWVzID0gdmFsdWVUb0NvbG9yU2NoZW1lcyhkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4o
dmFsdWUpKTsKKworICAgIC8vIElmIHRoZSB2YWx1ZSB3YXMganVzdCAib25seSIsIHRoYXQgaXMg
c3lub255bW91cyBmb3IgIm9ubHkgbGlnaHQiLgorICAgIGlmIChjb2xvclNjaGVtZXMuY29udGFp
bnNBbGwoQ29sb3JTY2hlbWVzOjpPbmx5KSkKKyAgICAgICAgY29sb3JTY2hlbWVzLmFkZChDb2xv
clNjaGVtZXM6OkxpZ2h0KTsKKworICAgIHJldHVybiBjb2xvclNjaGVtZXM7Cit9CisKIGlubGlu
ZSBTdHJpbmcgU3R5bGVCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0U3RyaW5nKFN0eWxlUmVzb2x2
ZXImLCBjb25zdCBDU1NWYWx1ZSYgdmFsdWUpCiB7CiAgICAgcmV0dXJuIGRvd25jYXN0PENTU1By
aW1pdGl2ZVZhbHVlPih2YWx1ZSkuc3RyaW5nVmFsdWUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJl
c29sdmVyLmNwcAppbmRleCBmZDRjZmVlZmE1Yy4uMjJkODM3NmZhZDkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9j
c3MvU3R5bGVSZXNvbHZlci5jcHAKQEAgLTE4MzksMTQgKzE4MzksMTQgQEAgQ29sb3IgU3R5bGVS
ZXNvbHZlcjo6Y29sb3JGcm9tUHJpbWl0aXZlVmFsdWUoY29uc3QgQ1NTUHJpbWl0aXZlVmFsdWUm
IHZhbHVlLCBib28KICAgICBjYXNlIENTU1ZhbHVlV2Via2l0QWN0aXZlbGluazoKICAgICAgICAg
cmV0dXJuIGRvY3VtZW50KCkuYWN0aXZlTGlua0NvbG9yKCk7CiAgICAgY2FzZSBDU1NWYWx1ZVdl
YmtpdEZvY3VzUmluZ0NvbG9yOgotICAgICAgICByZXR1cm4gUmVuZGVyVGhlbWU6OmZvY3VzUmlu
Z0NvbG9yKGRvY3VtZW50KCkuc3R5bGVDb2xvck9wdGlvbnMoKSk7CisgICAgICAgIHJldHVybiBS
ZW5kZXJUaGVtZTo6Zm9jdXNSaW5nQ29sb3IoZG9jdW1lbnQoKS5zdHlsZUNvbG9yT3B0aW9ucyht
X3N0YXRlLnN0eWxlKCkpKTsKICAgICBjYXNlIENTU1ZhbHVlQ3VycmVudGNvbG9yOgogICAgICAg
ICAvLyBDb2xvciBpcyBhbiBpbmhlcml0ZWQgcHJvcGVydHkgc28gZGVwZW5kaW5nIG9uIGl0IGVm
ZmVjdGl2ZWx5IG1ha2VzIHRoZSBwcm9wZXJ0eSBpbmhlcml0ZWQuCiAgICAgICAgIC8vIEZJWE1F
OiBTZXR0aW5nIHRoZSBmbGFnIGFzIGEgc2lkZSBlZmZlY3Qgb2YgY2FsbGluZyB0aGlzIGZ1bmN0
aW9uIGlzIGEgYml0IG9ibGlxdWUuIENhbiB3ZSBkbyBiZXR0ZXI/CiAgICAgICAgIG1fc3RhdGUu
c3R5bGUoKS0+c2V0SGFzRXhwbGljaXRseUluaGVyaXRlZFByb3BlcnRpZXMoKTsKICAgICAgICAg
cmV0dXJuIG1fc3RhdGUuc3R5bGUoKS0+Y29sb3IoKTsKICAgICBkZWZhdWx0OgotICAgICAgICBy
ZXR1cm4gU3R5bGVDb2xvcjo6Y29sb3JGcm9tS2V5d29yZChpZGVudGlmaWVyLCBkb2N1bWVudCgp
LnN0eWxlQ29sb3JPcHRpb25zKCkpOworICAgICAgICByZXR1cm4gU3R5bGVDb2xvcjo6Y29sb3JG
cm9tS2V5d29yZChpZGVudGlmaWVyLCBkb2N1bWVudCgpLnN0eWxlQ29sb3JPcHRpb25zKG1fc3Rh
dGUuc3R5bGUoKSkpOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3Nz
L3BhcnNlci9DU1NQcm9wZXJ0eVBhcnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2Vy
L0NTU1Byb3BlcnR5UGFyc2VyLmNwcAppbmRleCBjM2EyM2I1OTllOC4uODEwMzgxOTJjNTIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUHJvcGVydHlQYXJzZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUHJvcGVydHlQYXJzZXIuY3BwCkBA
IC0zNzMzLDcgKzM3MzMsNTEgQEAgc3RhdGljIFJlZlB0cjxDU1NWYWx1ZT4gY29uc3VtZVRleHRF
bXBoYXNpc1Bvc2l0aW9uKENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlKQogICAgICAgICBsaXN0
LT5hcHBlbmQoQ1NTVmFsdWVQb29sOjpzaW5nbGV0b24oKS5jcmVhdGVJZGVudGlmaWVyVmFsdWUo
bGVmdFJpZ2h0VmFsdWVJRCkpOwogICAgIHJldHVybiBsaXN0OwogfQotICAgIAorCisjaWYgRU5B
QkxFKERBUktfTU9ERV9DU1MpCisKK3N0YXRpYyBSZWZQdHI8Q1NTVmFsdWU+IGNvbnN1bWVTdXBw
b3J0ZWRDb2xvclNjaGVtZXMoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UpCit7CisgICAgaWYg
KGlzQXV0byhyYW5nZS5wZWVrKCkuaWQoKSkpCisgICAgICAgIHJldHVybiBjb25zdW1lSWRlbnQo
cmFuZ2UpOworCisgICAgVmVjdG9yPENTU1ZhbHVlSUQsIDM+IGlkZW50aWZpZXJzOworCisgICAg
d2hpbGUgKCFyYW5nZS5hdEVuZCgpKSB7CisgICAgICAgIGlmIChyYW5nZS5wZWVrKCkudHlwZSgp
ICE9IElkZW50VG9rZW4pCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgICAgICBD
U1NWYWx1ZUlEIGlkID0gcmFuZ2UucGVlaygpLmlkKCk7CisKKyAgICAgICAgc3dpdGNoIChpZCkg
eworICAgICAgICBjYXNlIENTU1ZhbHVlQXV0bzoKKyAgICAgICAgICAgIC8vIEF1dG8gaXMgb25s
eSBhbGxvd2VkIGFzIGEgc2luZ2xlIHZhbHVlLCBhbmQgd2FzIGhhbmRsZWQgZWFybGllci4KKyAg
ICAgICAgICAgIC8vIERvbid0IGFsbG93IGl0IGluIHRoZSBsaXN0LgorICAgICAgICAgICAgcmV0
dXJuIG51bGxwdHI7CisKKyAgICAgICAgY2FzZSBDU1NWYWx1ZU9ubHk6CisgICAgICAgIGNhc2Ug
Q1NTVmFsdWVMaWdodDoKKyAgICAgICAgY2FzZSBDU1NWYWx1ZURhcms6CisgICAgICAgICAgICBp
ZiAoIWlkZW50aWZpZXJzLmFwcGVuZElmTm90Q29udGFpbnMoaWQpKQorICAgICAgICAgICAgICAg
IHJldHVybiBudWxscHRyOworICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgZGVmYXVsdDoK
KyAgICAgICAgICAgIC8vIFVua25vd24gaWRlbnRpZmllcnMgYXJlIGFsbG93ZWQgYW5kIGlnbm9y
ZWQuCisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorCisgICAgICAgIHJhbmdlLmNvbnN1
bWVJbmNsdWRpbmdXaGl0ZXNwYWNlKCk7CisgICAgfQorCisgICAgUmVmUHRyPENTU1ZhbHVlTGlz
dD4gbGlzdCA9IENTU1ZhbHVlTGlzdDo6Y3JlYXRlU3BhY2VTZXBhcmF0ZWQoKTsKKyAgICBmb3Ig
KGF1dG8gaWQgOiBpZGVudGlmaWVycykKKyAgICAgICAgbGlzdC0+YXBwZW5kKENTU1ZhbHVlUG9v
bDo6c2luZ2xldG9uKCkuY3JlYXRlSWRlbnRpZmllclZhbHVlKGlkKSk7CisgICAgcmV0dXJuIGxp
c3Q7Cit9CisKKyNlbmRpZgorCiAjaWYgRU5BQkxFKERBU0hCT0FSRF9TVVBQT1JUKQogCiBzdGF0
aWMgUmVmUHRyPENTU1ZhbHVlPiBjb25zdW1lV2Via2l0RGFzaGJvYXJkUmVnaW9uKENTU1BhcnNl
clRva2VuUmFuZ2UmIHJhbmdlLCBDU1NQYXJzZXJNb2RlIG1vZGUpCkBAIC00MjcxLDYgKzQzMTUs
MTAgQEAgUmVmUHRyPENTU1ZhbHVlPiBDU1NQcm9wZXJ0eVBhcnNlcjo6cGFyc2VTaW5nbGVWYWx1
ZShDU1NQcm9wZXJ0eUlEIHByb3BlcnR5LCBDU1MKICAgICAgICAgcmV0dXJuIGNvbnN1bWVXZWJr
aXRBc3BlY3RSYXRpbyhtX3JhbmdlKTsKICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0VGV4dEVt
cGhhc2lzUG9zaXRpb246CiAgICAgICAgIHJldHVybiBjb25zdW1lVGV4dEVtcGhhc2lzUG9zaXRp
b24obV9yYW5nZSk7CisjaWYgRU5BQkxFKERBUktfTU9ERV9DU1MpCisgICAgY2FzZSBDU1NQcm9w
ZXJ0eVN1cHBvcnRlZENvbG9yU2NoZW1lczoKKyAgICAgICAgcmV0dXJuIGNvbnN1bWVTdXBwb3J0
ZWRDb2xvclNjaGVtZXMobV9yYW5nZSk7CisjZW5kaWYKICNpZiBFTkFCTEUoREFTSEJPQVJEX1NV
UFBPUlQpCiAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdERhc2hib2FyZFJlZ2lvbjoKICAgICAg
ICAgcmV0dXJuIGNvbnN1bWVXZWJraXREYXNoYm9hcmRSZWdpb24obV9yYW5nZSwgbV9jb250ZXh0
Lm1vZGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKaW5kZXggZDBhZmVhZTg3NDguLjNmYmNkZDFi
NTEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKQEAgLTgxNywxNyArODE3LDE3IEBAIFN0cmlu
ZyBEb2N1bWVudDo6Y29tcGF0TW9kZSgpIGNvbnN0CiAKIHZvaWQgRG9jdW1lbnQ6OnJlc2V0TGlu
a0NvbG9yKCkKIHsKLSAgICBtX2xpbmtDb2xvciA9IFN0eWxlQ29sb3I6OmNvbG9yRnJvbUtleXdv
cmQoQ1NTVmFsdWVXZWJraXRMaW5rLCBzdHlsZUNvbG9yT3B0aW9ucygpKTsKKyAgICBtX2xpbmtD
b2xvciA9IFN0eWxlQ29sb3I6OmNvbG9yRnJvbUtleXdvcmQoQ1NTVmFsdWVXZWJraXRMaW5rLCBz
dHlsZUNvbG9yT3B0aW9ucyhudWxscHRyKSk7CiB9CiAKIHZvaWQgRG9jdW1lbnQ6OnJlc2V0Vmlz
aXRlZExpbmtDb2xvcigpCiB7Ci0gICAgbV92aXNpdGVkTGlua0NvbG9yID0gU3R5bGVDb2xvcjo6
Y29sb3JGcm9tS2V5d29yZChDU1NWYWx1ZVdlYmtpdExpbmssIHN0eWxlQ29sb3JPcHRpb25zKCkg
fCBTdHlsZUNvbG9yOjpPcHRpb25zOjpGb3JWaXNpdGVkTGluayk7CisgICAgbV92aXNpdGVkTGlu
a0NvbG9yID0gU3R5bGVDb2xvcjo6Y29sb3JGcm9tS2V5d29yZChDU1NWYWx1ZVdlYmtpdExpbmss
IHN0eWxlQ29sb3JPcHRpb25zKG51bGxwdHIpIHwgU3R5bGVDb2xvcjo6T3B0aW9uczo6Rm9yVmlz
aXRlZExpbmspOwogfQogCiB2b2lkIERvY3VtZW50OjpyZXNldEFjdGl2ZUxpbmtDb2xvcigpCiB7
Ci0gICAgbV9hY3RpdmVMaW5rQ29sb3IgPSBTdHlsZUNvbG9yOjpjb2xvckZyb21LZXl3b3JkKENT
U1ZhbHVlV2Via2l0QWN0aXZlbGluaywgc3R5bGVDb2xvck9wdGlvbnMoKSk7CisgICAgbV9hY3Rp
dmVMaW5rQ29sb3IgPSBTdHlsZUNvbG9yOjpjb2xvckZyb21LZXl3b3JkKENTU1ZhbHVlV2Via2l0
QWN0aXZlbGluaywgc3R5bGVDb2xvck9wdGlvbnMobnVsbHB0cikpOwogfQogCiBET01JbXBsZW1l
bnRhdGlvbiYgRG9jdW1lbnQ6OmltcGxlbWVudGF0aW9uKCkKQEAgLTM1OTAsMTQgKzM1OTAsMzEg
QEAgc3RhdGljIHZvaWQgcHJvY2Vzc0NvbG9yU2NoZW1lcyhTdHJpbmdWaWV3IGNvbG9yU2NoZW1l
cywgY29uc3QgV1RGOjpGdW5jdGlvbjx2b2kKIHZvaWQgRG9jdW1lbnQ6OnByb2Nlc3NTdXBwb3J0
ZWRDb2xvclNjaGVtZXMoY29uc3QgU3RyaW5nJiBjb2xvclNjaGVtZXMpCiB7CiAgICAgT3B0aW9u
U2V0PENvbG9yU2NoZW1lcz4gc3VwcG9ydGVkQ29sb3JTY2hlbWVzOworICAgIGJvb2wgYXV0b0Vu
Y291bnRlcmVkID0gZmFsc2U7CisKKyAgICBwcm9jZXNzQ29sb3JTY2hlbWVzKGNvbG9yU2NoZW1l
cywgWyZzdXBwb3J0ZWRDb2xvclNjaGVtZXMsICZhdXRvRW5jb3VudGVyZWRdKFN0cmluZ1ZpZXcg
a2V5KSB7CisgICAgICAgIGlmIChlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShrZXksICJh
dXRvIikpIHsKKyAgICAgICAgICAgIHN1cHBvcnRlZENvbG9yU2NoZW1lcyA9IHsgfTsKKyAgICAg
ICAgICAgIGF1dG9FbmNvdW50ZXJlZCA9IHRydWU7CisgICAgICAgICAgICByZXR1cm47CisgICAg
ICAgIH0KKworICAgICAgICBpZiAoYXV0b0VuY291bnRlcmVkKQorICAgICAgICAgICAgcmV0dXJu
OwogCi0gICAgcHJvY2Vzc0NvbG9yU2NoZW1lcyhjb2xvclNjaGVtZXMsIFsmc3VwcG9ydGVkQ29s
b3JTY2hlbWVzXShTdHJpbmdWaWV3IGtleSkgewogICAgICAgICBpZiAoZXF1YWxMZXR0ZXJzSWdu
b3JpbmdBU0NJSUNhc2Uoa2V5LCAibGlnaHQiKSkKICAgICAgICAgICAgIHN1cHBvcnRlZENvbG9y
U2NoZW1lcy5hZGQoQ29sb3JTY2hlbWVzOjpMaWdodCk7CiAgICAgICAgIGVsc2UgaWYgKGVxdWFs
TGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKGtleSwgImRhcmsiKSkKICAgICAgICAgICAgIHN1cHBv
cnRlZENvbG9yU2NoZW1lcy5hZGQoQ29sb3JTY2hlbWVzOjpEYXJrKTsKKyAgICAgICAgZWxzZSBp
ZiAoZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2Uoa2V5LCAib25seSIpKQorICAgICAgICAg
ICAgc3VwcG9ydGVkQ29sb3JTY2hlbWVzLmFkZChDb2xvclNjaGVtZXM6Ok9ubHkpOwogICAgIH0p
OwogCisgICAgLy8gSWYgdGhlIHZhbHVlIHdhcyBqdXN0ICJvbmx5IiwgdGhhdCBpcyBzeW5vbnlt
b3VzIGZvciAib25seSBsaWdodCIuCisgICAgaWYgKHN1cHBvcnRlZENvbG9yU2NoZW1lcy5jb250
YWluc0FsbChDb2xvclNjaGVtZXM6Ok9ubHkpKQorICAgICAgICBzdXBwb3J0ZWRDb2xvclNjaGVt
ZXMuYWRkKENvbG9yU2NoZW1lczo6TGlnaHQpOworCisgICAgLy8gRGVmYXVsdCB0byAibGlnaHQi
IGlmIGVtcHR5IGJ5IHRoaXMgcG9pbnQuCiAgICAgaWYgKHN1cHBvcnRlZENvbG9yU2NoZW1lcy5p
c0VtcHR5KCkpCiAgICAgICAgIHN1cHBvcnRlZENvbG9yU2NoZW1lcy5hZGQoQ29sb3JTY2hlbWVz
OjpMaWdodCk7CiAKQEAgLTcyNjgsMTAgKzcyODUsMTYgQEAgYm9vbCBEb2N1bWVudDo6dXNlU3lz
dGVtQXBwZWFyYW5jZSgpIGNvbnN0CiAgICAgcmV0dXJuIHVzZVN5c3RlbUFwcGVhcmFuY2U7CiB9
CiAKLWJvb2wgRG9jdW1lbnQ6OnVzZURhcmtBcHBlYXJhbmNlKCkgY29uc3QKK2Jvb2wgRG9jdW1l
bnQ6OnVzZURhcmtBcHBlYXJhbmNlKGNvbnN0IFJlbmRlclN0eWxlKiBzdHlsZSkgY29uc3QKIHsK
ICNpZiBFTkFCTEUoREFSS19NT0RFX0NTUykKLSAgICBpZiAobV9zdXBwb3J0ZWRDb2xvclNjaGVt
ZXMuY29udGFpbnMoQ29sb3JTY2hlbWVzOjpEYXJrKSAmJiAhbV9zdXBwb3J0ZWRDb2xvclNjaGVt
ZXMuY29udGFpbnMoQ29sb3JTY2hlbWVzOjpMaWdodCkpCisgICAgT3B0aW9uU2V0PENvbG9yU2No
ZW1lcz4gc3VwcG9ydGVkQ29sb3JTY2hlbWVzOworICAgIGlmIChzdHlsZSkKKyAgICAgICAgc3Vw
cG9ydGVkQ29sb3JTY2hlbWVzID0gc3R5bGUtPnN1cHBvcnRlZENvbG9yU2NoZW1lcygpOworICAg
IGlmIChzdXBwb3J0ZWRDb2xvclNjaGVtZXMuaXNFbXB0eSgpKQorICAgICAgICBzdXBwb3J0ZWRD
b2xvclNjaGVtZXMgPSBtX3N1cHBvcnRlZENvbG9yU2NoZW1lczsKKworICAgIGlmIChzdXBwb3J0
ZWRDb2xvclNjaGVtZXMuY29udGFpbnMoQ29sb3JTY2hlbWVzOjpEYXJrKSAmJiAhc3VwcG9ydGVk
Q29sb3JTY2hlbWVzLmNvbnRhaW5zKENvbG9yU2NoZW1lczo6TGlnaHQpKQogICAgICAgICByZXR1
cm4gdHJ1ZTsKICNlbmRpZgogCkBAIC03MjgzLDIxICs3MzA2LDIxIEBAIGJvb2wgRG9jdW1lbnQ6
OnVzZURhcmtBcHBlYXJhbmNlKCkgY29uc3QKICAgICAgICAgcmV0dXJuIHBhZ2VVc2VzRGFya0Fw
cGVhcmFuY2U7CiAKICNpZiBFTkFCTEUoREFSS19NT0RFX0NTUykKLSAgICBpZiAobV9zdXBwb3J0
ZWRDb2xvclNjaGVtZXMuY29udGFpbnMoQ29sb3JTY2hlbWVzOjpEYXJrKSkKKyAgICBpZiAoc3Vw
cG9ydGVkQ29sb3JTY2hlbWVzLmNvbnRhaW5zKENvbG9yU2NoZW1lczo6RGFyaykpCiAgICAgICAg
IHJldHVybiBwYWdlVXNlc0RhcmtBcHBlYXJhbmNlOwogCi0gICAgQVNTRVJUKG1fc3VwcG9ydGVk
Q29sb3JTY2hlbWVzLmNvbnRhaW5zKENvbG9yU2NoZW1lczo6TGlnaHQpKTsKKyAgICBBU1NFUlQo
c3VwcG9ydGVkQ29sb3JTY2hlbWVzLmNvbnRhaW5zKENvbG9yU2NoZW1lczo6TGlnaHQpKTsKICNl
bmRpZgogCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1PcHRpb25TZXQ8U3R5bGVDb2xvcjo6T3B0
aW9ucz4gRG9jdW1lbnQ6OnN0eWxlQ29sb3JPcHRpb25zKCkgY29uc3QKK09wdGlvblNldDxTdHls
ZUNvbG9yOjpPcHRpb25zPiBEb2N1bWVudDo6c3R5bGVDb2xvck9wdGlvbnMoY29uc3QgUmVuZGVy
U3R5bGUqIHN0eWxlKSBjb25zdAogewogICAgIE9wdGlvblNldDxTdHlsZUNvbG9yOjpPcHRpb25z
PiBvcHRpb25zOwogICAgIGlmICh1c2VTeXN0ZW1BcHBlYXJhbmNlKCkpCiAgICAgICAgIG9wdGlv
bnMuYWRkKFN0eWxlQ29sb3I6Ok9wdGlvbnM6OlVzZVN5c3RlbUFwcGVhcmFuY2UpOwotICAgIGlm
ICh1c2VEYXJrQXBwZWFyYW5jZSgpKQorICAgIGlmICh1c2VEYXJrQXBwZWFyYW5jZShzdHlsZSkp
CiAgICAgICAgIG9wdGlvbnMuYWRkKFN0eWxlQ29sb3I6Ok9wdGlvbnM6OlVzZURhcmtBcHBlYXJh
bmNlKTsKICAgICByZXR1cm4gb3B0aW9uczsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Eb2N1bWVudC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKaW5kZXggNmRk
ZjE0NWVkYTUuLmRmZDc2ZmQ0ZmE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9j
dW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaApAQCAtNTc4LDkgKzU3
OCw5IEBAIHB1YmxpYzoKICAgICBmbG9hdCBkZXZpY2VTY2FsZUZhY3RvcigpIGNvbnN0OwogCiAg
ICAgV0VCQ09SRV9FWFBPUlQgYm9vbCB1c2VTeXN0ZW1BcHBlYXJhbmNlKCkgY29uc3Q7Ci0gICAg
V0VCQ09SRV9FWFBPUlQgYm9vbCB1c2VEYXJrQXBwZWFyYW5jZSgpIGNvbnN0OworICAgIFdFQkNP
UkVfRVhQT1JUIGJvb2wgdXNlRGFya0FwcGVhcmFuY2UoY29uc3QgUmVuZGVyU3R5bGUqKSBjb25z
dDsKIAotICAgIE9wdGlvblNldDxTdHlsZUNvbG9yOjpPcHRpb25zPiBzdHlsZUNvbG9yT3B0aW9u
cygpIGNvbnN0OworICAgIE9wdGlvblNldDxTdHlsZUNvbG9yOjpPcHRpb25zPiBzdHlsZUNvbG9y
T3B0aW9ucyhjb25zdCBSZW5kZXJTdHlsZSopIGNvbnN0OwogCiAgICAgV0VCQ09SRV9FWFBPUlQg
UmVmPFJhbmdlPiBjcmVhdGVSYW5nZSgpOwogCkBAIC05MDEsMTEgKzkwMSw2IEBAIHB1YmxpYzoK
ICAgICB2b2lkIHByb2Nlc3NSZWZlcnJlclBvbGljeShjb25zdCBTdHJpbmcmIHBvbGljeSwgUmVm
ZXJyZXJQb2xpY3lTb3VyY2UpOwogCiAjaWYgRU5BQkxFKERBUktfTU9ERV9DU1MpCi0gICAgZW51
bSBjbGFzcyBDb2xvclNjaGVtZXMgOiB1aW50OF90IHsKLSAgICAgICAgTGlnaHQgPSAxIDw8IDAs
Ci0gICAgICAgIERhcmsgPSAxIDw8IDEKLSAgICB9OwotCiAgICAgdm9pZCBwcm9jZXNzU3VwcG9y
dGVkQ29sb3JTY2hlbWVzKGNvbnN0IFN0cmluZyYgY29sb3JTY2hlbWVzKTsKICNlbmRpZgogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL1dlYkNvbnRlbnRSZWFkZXJD
b2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvV2ViQ29udGVudFJlYWRlckNv
Y29hLm1tCmluZGV4IGFlZmViMWFmMWY2Li5kNDg5YzYwYTI0NiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9jb2NvYS9XZWJDb250ZW50UmVhZGVyQ29jb2EubW0KKysrIGIvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9XZWJDb250ZW50UmVhZGVyQ29jb2EubW0KQEAgLTUw
LDYgKzUwLDcgQEAKICNpbXBvcnQgIk1JTUVUeXBlUmVnaXN0cnkuaCIKICNpbXBvcnQgIlBhZ2Uu
aCIKICNpbXBvcnQgIlB1YmxpY1VSTE1hbmFnZXIuaCIKKyNpbXBvcnQgIlJlbmRlclZpZXcuaCIK
ICNpbXBvcnQgIlJ1bnRpbWVFbmFibGVkRmVhdHVyZXMuaCIKICNpbXBvcnQgIlNlcmlhbGl6ZWRB
dHRhY2htZW50RGF0YS5oIgogI2ltcG9ydCAiU2V0dGluZ3MuaCIKQEAgLTEzMyw3ICsxMzQsOSBA
QCBzdGF0aWMgRnJhZ21lbnRBbmRSZXNvdXJjZXMgY3JlYXRlRnJhZ21lbnQoRnJhbWUmIGZyYW1l
LCBOU0F0dHJpYnV0ZWRTdHJpbmcgKnN0cgogICAgIERvY3VtZW50JiBkb2N1bWVudCA9ICpmcmFt
ZS5kb2N1bWVudCgpOwogCiAjaWYgUExBVEZPUk0oTUFDKQotICAgIExvY2FsRGVmYXVsdFN5c3Rl
bUFwcGVhcmFuY2UgbG9jYWxBcHBlYXJhbmNlKGRvY3VtZW50LnVzZURhcmtBcHBlYXJhbmNlKCkp
OworICAgIGF1dG8qIHZpZXcgPSBmcmFtZS52aWV3KCk7CisgICAgYXV0byogcmVuZGVyVmlldyA9
IHZpZXcgPyB2aWV3LT5yZW5kZXJWaWV3KCkgOiBudWxscHRyOworICAgIExvY2FsRGVmYXVsdFN5
c3RlbUFwcGVhcmFuY2UgbG9jYWxBcHBlYXJhbmNlKGRvY3VtZW50LnVzZURhcmtBcHBlYXJhbmNl
KHJlbmRlclZpZXcgPyAmcmVuZGVyVmlldy0+c3R5bGUoKSA6IG51bGxwdHIpKTsKICNlbmRpZgog
CiAgICAgTlNBcnJheSAqc3VicmVzb3VyY2VzID0gbmlsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHAKaW5kZXggZDE1
ZGVjNDYwZWQuLmRhMWM4MGZkMmZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2Nh
bnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHAKQEAgLTg2LDcgKzg2LDcgQEAg
dm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmRyYXdGb2N1c0lmTmVlZGVkSW50ZXJuYWwo
Y29uc3QgUGF0aCYgcGF0aCwgRWxlbWUKICAgICBhdXRvKiBjb250ZXh0ID0gZHJhd2luZ0NvbnRl
eHQoKTsKICAgICBpZiAoIWVsZW1lbnQuZm9jdXNlZCgpIHx8ICFzdGF0ZSgpLmhhc0ludmVydGli
bGVUcmFuc2Zvcm0gfHwgcGF0aC5pc0VtcHR5KCkgfHwgIWVsZW1lbnQuaXNEZXNjZW5kYW50T2Yo
Y2FudmFzKCkpIHx8ICFjb250ZXh0KQogICAgICAgICByZXR1cm47Ci0gICAgY29udGV4dC0+ZHJh
d0ZvY3VzUmluZyhwYXRoLCAxLCAxLCBSZW5kZXJUaGVtZTo6Zm9jdXNSaW5nQ29sb3IoZWxlbWVu
dC5kb2N1bWVudCgpLnN0eWxlQ29sb3JPcHRpb25zKCkpKTsKKyAgICBjb250ZXh0LT5kcmF3Rm9j
dXNSaW5nKHBhdGgsIDEsIDEsIFJlbmRlclRoZW1lOjpmb2N1c1JpbmdDb2xvcihlbGVtZW50LmRv
Y3VtZW50KCkuc3R5bGVDb2xvck9wdGlvbnMoY2FudmFzKCkuY29tcHV0ZWRTdHlsZSgpKSkpOwog
fQogCiBTdHJpbmcgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpmb250KCkgY29uc3QKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JPdmVybGF5LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JPdmVybGF5LmNwcAppbmRleCBkNWRlZjkw
ZjE2Zi4uZGVjNzFlNWZlODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JPdmVybGF5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yT3ZlcmxheS5jcHAKQEAgLTE4MCwxMiArMTgwLDEzIEBAIHZvaWQgSW5zcGVjdG9yT3Zlcmxh
eTo6cGFpbnQoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KQogICAgIGlmICghc2hvdWxkU2hvd092
ZXJsYXkoKSkKICAgICAgICAgcmV0dXJuOwogCisgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZl
ciBzdGF0ZVNhdmVyKGNvbnRleHQpOworICAgIEZyYW1lVmlldyogdmlldyA9IG92ZXJsYXlQYWdl
KCktPm1haW5GcmFtZSgpLnZpZXcoKTsKKwogI2lmIFBMQVRGT1JNKE1BQykKLSAgICBMb2NhbERl
ZmF1bHRTeXN0ZW1BcHBlYXJhbmNlIGxvY2FsQXBwZWFyYW5jZShtX3BhZ2UubWFpbkZyYW1lKCku
ZG9jdW1lbnQoKS0+dXNlRGFya0FwcGVhcmFuY2UoKSk7CisgICAgTG9jYWxEZWZhdWx0U3lzdGVt
QXBwZWFyYW5jZSBsb2NhbEFwcGVhcmFuY2Uodmlldy0+cmVuZGVyVmlldygpLT51c2VEYXJrQXBw
ZWFyYW5jZSgpKTsKICNlbmRpZgogCi0gICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0
ZVNhdmVyKGNvbnRleHQpOwotICAgIEZyYW1lVmlldyogdmlldyA9IG92ZXJsYXlQYWdlKCktPm1h
aW5GcmFtZSgpLnZpZXcoKTsKICAgICB2aWV3LT51cGRhdGVMYXlvdXRBbmRTdHlsZUlmTmVlZGVk
UmVjdXJzaXZlKCk7CiAgICAgdmlldy0+cGFpbnQoY29udGV4dCwgSW50UmVjdCgwLCAwLCB2aWV3
LT53aWR0aCgpLCB2aWV3LT5oZWlnaHQoKSkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGFnZS9GcmFtZVZpZXcuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3Bw
CmluZGV4IDNlNjI0NmE1NTRlLi5iOWEyZTI0MmM5YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGFnZS9GcmFtZVZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3
LmNwcApAQCAtMjA0Niw5ICsyMDQ2LDcgQEAgYm9vbCBGcmFtZVZpZXc6OnNob3VsZFNldEN1cnNv
cigpIGNvbnN0CiAKIGJvb2wgRnJhbWVWaWV3Ojp1c2VEYXJrQXBwZWFyYW5jZSgpIGNvbnN0CiB7
Ci0gICAgQVNTRVJUKGZyYW1lKCkuZG9jdW1lbnQoKSk7Ci0gICAgYXV0byYgZG9jdW1lbnQgPSAq
ZnJhbWUoKS5kb2N1bWVudCgpOwotICAgIHJldHVybiBkb2N1bWVudC51c2VEYXJrQXBwZWFyYW5j
ZSgpOworICAgIHJldHVybiByZW5kZXJWaWV3KCktPnVzZURhcmtBcHBlYXJhbmNlKCk7CiB9CiAK
IGJvb2wgRnJhbWVWaWV3OjpzY3JvbGxDb250ZW50c0Zhc3RQYXRoKGNvbnN0IEludFNpemUmIHNj
cm9sbERlbHRhLCBjb25zdCBJbnRSZWN0JiByZWN0VG9TY3JvbGwsIGNvbnN0IEludFJlY3QmIGNs
aXBSZWN0KQpAQCAtMzkxMSw4ICszOTA5LDcgQEAgdm9pZCBGcmFtZVZpZXc6OnBhaW50U2Nyb2xs
Q29ybmVyKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgSW50UmVjdCYgY29ybmUKICNp
ZiBQTEFURk9STShNQUMpCiAgICAgLy8gSWYgZGFyayBhcHBlYXJhbmNlIGlzIHVzZWQgb3IgdGhl
IG92ZXJsYXkgc3R5bGUgaXMgbGlnaHQgKGJlY2F1c2Ugb2YgYSBkYXJrIHBhZ2UgYmFja2dyb3Vu
ZCksIHNldCB0aGUgZGFyayBhcHBwZWFyYW5jZS4KICAgICAvLyBLZWVwIHRoaXMgaW4gc3luYyB3
aXRoIFNjcm9sbEFuaW1hdG9yTWFjJ3MgZWZmZWN0aXZlQXBwZWFyYW5jZUZvclNjcm9sbGVySW1w
Oi4KLSAgICBhdXRvKiBkb2N1bWVudCA9IGZyYW1lKCkuZG9jdW1lbnQoKTsKLSAgICBib29sIHVz
ZURhcmtBcHBlYXJhbmNlID0gKGRvY3VtZW50ICYmIGRvY3VtZW50LT51c2VEYXJrQXBwZWFyYW5j
ZSgpKSB8fCBzY3JvbGxiYXJPdmVybGF5U3R5bGUoKSA9PSBXZWJDb3JlOjpTY3JvbGxiYXJPdmVy
bGF5U3R5bGVMaWdodDsKKyAgICBib29sIHVzZURhcmtBcHBlYXJhbmNlID0gKHJlbmRlclZpZXco
KS0+dXNlRGFya0FwcGVhcmFuY2UoKSkgfHwgc2Nyb2xsYmFyT3ZlcmxheVN0eWxlKCkgPT0gV2Vi
Q29yZTo6U2Nyb2xsYmFyT3ZlcmxheVN0eWxlTGlnaHQ7CiAgICAgTG9jYWxEZWZhdWx0U3lzdGVt
QXBwZWFyYW5jZSBsb2NhbEFwcGVhcmFuY2UodXNlRGFya0FwcGVhcmFuY2UpOwogI2VuZGlmCiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9EcmFnSW1hZ2VNYWMubW0g
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvRHJhZ0ltYWdlTWFjLm1tCmluZGV4IDExY2Rh
MjRkMGM5Li45YzMwZjc5Yzg0ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWFjL0RyYWdJbWFnZU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvRHJh
Z0ltYWdlTWFjLm1tCkBAIC0zMDAsNyArMzAwLDcgQEAgRHJhZ0ltYWdlUmVmIGNyZWF0ZURyYWdJ
bWFnZUZvckxpbmsoRWxlbWVudCYgZWxlbWVudCwgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgdGkK
IHsKICAgICBMaW5rSW1hZ2VMYXlvdXQgbGF5b3V0KHVybCwgdGl0bGUpOwogCi0gICAgTG9jYWxE
ZWZhdWx0U3lzdGVtQXBwZWFyYW5jZSBsb2NhbEFwcGVhcmFuY2UoZWxlbWVudC5kb2N1bWVudCgp
LnVzZURhcmtBcHBlYXJhbmNlKCkpOworICAgIExvY2FsRGVmYXVsdFN5c3RlbUFwcGVhcmFuY2Ug
bG9jYWxBcHBlYXJhbmNlKGVsZW1lbnQuZG9jdW1lbnQoKS51c2VEYXJrQXBwZWFyYW5jZShlbGVt
ZW50LmNvbXB1dGVkU3R5bGUoKSkpOwogCiAgICAgYXV0byBpbWFnZVNpemUgPSBsYXlvdXQuYm91
bmRpbmdSZWN0LnNpemUoKTsKICNpZiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEIDwg
MTAxMzAwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lRmxvd0Jv
eC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lRmxvd0JveC5jcHAKaW5kZXgg
Mjg3NmIxN2EwOGQuLmIzNWM4OTRhZWI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvSW5saW5lRmxvd0JveC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lu
bGluZUZsb3dCb3guY3BwCkBAIC0xMzYzLDcgKzEzNjMsNyBAQCB2b2lkIElubGluZUZsb3dCb3g6
OnBhaW50Qm94RGVjb3JhdGlvbnMoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFBv
aW50JgogICAgIENvbG9yIGNvbG9yID0gbGluZVN0eWxlLnZpc2l0ZWREZXBlbmRlbnRDb2xvcihD
U1NQcm9wZXJ0eUJhY2tncm91bmRDb2xvcik7CiAKICAgICBDb21wb3NpdGVPcGVyYXRvciBjb21w
b3NpdGVPcCA9IENvbXBvc2l0ZVNvdXJjZU92ZXI7Ci0gICAgaWYgKHJlbmRlcmVyKCkuZG9jdW1l
bnQoKS5zZXR0aW5ncygpLnB1bmNoT3V0V2hpdGVCYWNrZ3JvdW5kc0luRGFya01vZGUoKSAmJiBD
b2xvcjo6aXNXaGl0ZUNvbG9yKGNvbG9yKSAmJiByZW5kZXJlcigpLnRoZW1lKCkudXNpbmdEYXJr
QXBwZWFyYW5jZShyZW5kZXJlcigpKSkKKyAgICBpZiAocmVuZGVyZXIoKS5kb2N1bWVudCgpLnNl
dHRpbmdzKCkucHVuY2hPdXRXaGl0ZUJhY2tncm91bmRzSW5EYXJrTW9kZSgpICYmIENvbG9yOjpp
c1doaXRlQ29sb3IoY29sb3IpICYmIHJlbmRlcmVyKCkudXNlRGFya0FwcGVhcmFuY2UoKSkKICAg
ICAgICAgY29tcG9zaXRlT3AgPSBDb21wb3NpdGVEZXN0aW5hdGlvbk91dDsKIAogICAgIGNvbG9y
ID0gbGluZVN0eWxlLmNvbG9yQnlBcHBseWluZ0NvbG9yRmlsdGVyKGNvbG9yKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVUZXh0Qm94LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVUZXh0Qm94LmNwcAppbmRleCA3Y2JjMDc4Y2FiMi4uM2Y5
NTgzMDFkMTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVUZXh0
Qm94LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lVGV4dEJveC5jcHAK
QEAgLTY5OSw3ICs2OTksNyBAQCB2b2lkIElubGluZVRleHRCb3g6OnBhaW50UGxhdGZvcm1Eb2N1
bWVudE1hcmtlcihHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0CiAgICAgfQogCiAgICAg
YXV0byBsaW5lU3R5bGVGb3JNYXJrZWRUZXh0VHlwZSA9IFsmXSAoTWFya2VkVGV4dDo6VHlwZSB0
eXBlKSAtPiBEb2N1bWVudE1hcmtlckxpbmVTdHlsZSB7Ci0gICAgICAgIGJvb2wgc2hvdWxkVXNl
RGFya0FwcGVhcmFuY2UgPSByZW5kZXJlcigpLmRvY3VtZW50KCkudXNlRGFya0FwcGVhcmFuY2Uo
KTsKKyAgICAgICAgYm9vbCBzaG91bGRVc2VEYXJrQXBwZWFyYW5jZSA9IHJlbmRlcmVyKCkudXNl
RGFya0FwcGVhcmFuY2UoKTsKICAgICAgICAgc3dpdGNoICh0eXBlKSB7CiAgICAgICAgIGNhc2Ug
TWFya2VkVGV4dDo6U3BlbGxpbmdFcnJvcjoKICAgICAgICAgICAgIHJldHVybiB7IERvY3VtZW50
TWFya2VyTGluZVN0eWxlOjpNb2RlOjpTcGVsbGluZywgc2hvdWxkVXNlRGFya0FwcGVhcmFuY2Ug
fTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3BwIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHAKaW5kZXggY2E2ZTdjMTQ1ZmIu
LjBmMTJhZDgwYjk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
Qm94LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNwcApAQCAt
MTIwNyw3ICsxMjA3LDcgQEAgdm9pZCBSZW5kZXJCb3g6OnBhaW50Um9vdEJveEZpbGxMYXllcnMo
Y29uc3QgUGFpbnRJbmZvJiBwYWludEluZm8pCiAgICAgYXV0byBjb2xvciA9IHN0eWxlLnZpc2l0
ZWREZXBlbmRlbnRDb2xvcihDU1NQcm9wZXJ0eUJhY2tncm91bmRDb2xvcik7CiAKICAgICBDb21w
b3NpdGVPcGVyYXRvciBjb21wb3NpdGVPcCA9IENvbXBvc2l0ZVNvdXJjZU92ZXI7Ci0gICAgaWYg
KGRvY3VtZW50KCkuc2V0dGluZ3MoKS5wdW5jaE91dFdoaXRlQmFja2dyb3VuZHNJbkRhcmtNb2Rl
KCkgJiYgQ29sb3I6OmlzV2hpdGVDb2xvcihjb2xvcikgJiYgdGhlbWUoKS51c2luZ0RhcmtBcHBl
YXJhbmNlKCp0aGlzKSkKKyAgICBpZiAoZG9jdW1lbnQoKS5zZXR0aW5ncygpLnB1bmNoT3V0V2hp
dGVCYWNrZ3JvdW5kc0luRGFya01vZGUoKSAmJiBDb2xvcjo6aXNXaGl0ZUNvbG9yKGNvbG9yKSAm
JiB1c2VEYXJrQXBwZWFyYW5jZSgpKQogICAgICAgICBjb21wb3NpdGVPcCA9IENvbXBvc2l0ZURl
c3RpbmF0aW9uT3V0OwogCiAgICAgcGFpbnRGaWxsTGF5ZXJzKHBhaW50SW5mbywgc3R5bGUuY29s
b3JCeUFwcGx5aW5nQ29sb3JGaWx0ZXIoY29sb3IpLCBzdHlsZS5iYWNrZ3JvdW5kTGF5ZXJzKCks
IHZpZXcoKS5iYWNrZ3JvdW5kUmVjdCgpLCBCYWNrZ3JvdW5kQmxlZWROb25lLCBjb21wb3NpdGVP
cCwgcm9vdEJhY2tncm91bmRSZW5kZXJlcik7CkBAIC0xMzQxLDcgKzEzNDEsNyBAQCB2b2lkIFJl
bmRlckJveDo6cGFpbnRCYWNrZ3JvdW5kKGNvbnN0IFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25z
dCBMYXlvdXRSZWN0JiBwYQogICAgIENvbG9yIGJhY2tncm91bmRDb2xvciA9IHN0eWxlKCkudmlz
aXRlZERlcGVuZGVudENvbG9yKENTU1Byb3BlcnR5QmFja2dyb3VuZENvbG9yKTsKIAogICAgIENv
bXBvc2l0ZU9wZXJhdG9yIGNvbXBvc2l0ZU9wID0gQ29tcG9zaXRlU291cmNlT3ZlcjsKLSAgICBp
ZiAoZG9jdW1lbnQoKS5zZXR0aW5ncygpLnB1bmNoT3V0V2hpdGVCYWNrZ3JvdW5kc0luRGFya01v
ZGUoKSAmJiBDb2xvcjo6aXNXaGl0ZUNvbG9yKGJhY2tncm91bmRDb2xvcikgJiYgdGhlbWUoKS51
c2luZ0RhcmtBcHBlYXJhbmNlKCp0aGlzKSkKKyAgICBpZiAoZG9jdW1lbnQoKS5zZXR0aW5ncygp
LnB1bmNoT3V0V2hpdGVCYWNrZ3JvdW5kc0luRGFya01vZGUoKSAmJiBDb2xvcjo6aXNXaGl0ZUNv
bG9yKGJhY2tncm91bmRDb2xvcikgJiYgdXNlRGFya0FwcGVhcmFuY2UoKSkKICAgICAgICAgY29t
cG9zaXRlT3AgPSBDb21wb3NpdGVEZXN0aW5hdGlvbk91dDsKIAogICAgIHBhaW50RmlsbExheWVy
cyhwYWludEluZm8sIHN0eWxlKCkuY29sb3JCeUFwcGx5aW5nQ29sb3JGaWx0ZXIoYmFja2dyb3Vu
ZENvbG9yKSwgc3R5bGUoKS5iYWNrZ3JvdW5kTGF5ZXJzKCksIHBhaW50UmVjdCwgYmxlZWRBdm9p
ZGFuY2UsIGNvbXBvc2l0ZU9wKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbGVt
ZW50LmNwcAppbmRleCBiZjk3YzA4MjI1Yy4uOTA4Yjg1YTg4ZDUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5jcHAKQEAgLTEzNzQsOCArMTM3NCw4IEBAIENvbG9y
IFJlbmRlckVsZW1lbnQ6OnNlbGVjdGlvbkNvbG9yKENTU1Byb3BlcnR5SUQgY29sb3JQcm9wZXJ0
eSkgY29uc3QKICAgICB9CiAKICAgICBpZiAoZnJhbWUoKS5zZWxlY3Rpb24oKS5pc0ZvY3VzZWRB
bmRBY3RpdmUoKSkKLSAgICAgICAgcmV0dXJuIHRoZW1lKCkuYWN0aXZlU2VsZWN0aW9uRm9yZWdy
b3VuZENvbG9yKGRvY3VtZW50KCkuc3R5bGVDb2xvck9wdGlvbnMoKSk7Ci0gICAgcmV0dXJuIHRo
ZW1lKCkuaW5hY3RpdmVTZWxlY3Rpb25Gb3JlZ3JvdW5kQ29sb3IoZG9jdW1lbnQoKS5zdHlsZUNv
bG9yT3B0aW9ucygpKTsKKyAgICAgICAgcmV0dXJuIHRoZW1lKCkuYWN0aXZlU2VsZWN0aW9uRm9y
ZWdyb3VuZENvbG9yKHN0eWxlQ29sb3JPcHRpb25zKCkpOworICAgIHJldHVybiB0aGVtZSgpLmlu
YWN0aXZlU2VsZWN0aW9uRm9yZWdyb3VuZENvbG9yKHN0eWxlQ29sb3JPcHRpb25zKCkpOwogfQog
CiBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+IFJlbmRlckVsZW1lbnQ6OnNlbGVjdGlvblBz
ZXVkb1N0eWxlKCkgY29uc3QKQEAgLTE0MDksMTUgKzE0MDksMTUgQEAgQ29sb3IgUmVuZGVyRWxl
bWVudDo6c2VsZWN0aW9uQmFja2dyb3VuZENvbG9yKCkgY29uc3QKICAgICAgICAgcmV0dXJuIENv
bG9yKCk7CiAKICAgICBpZiAoZnJhbWUoKS5zZWxlY3Rpb24oKS5zaG91bGRTaG93QmxvY2tDdXJz
b3IoKSAmJiBmcmFtZSgpLnNlbGVjdGlvbigpLmlzQ2FyZXQoKSkKLSAgICAgICAgcmV0dXJuIHRo
ZW1lKCkudHJhbnNmb3JtU2VsZWN0aW9uQmFja2dyb3VuZENvbG9yKHN0eWxlKCkudmlzaXRlZERl
cGVuZGVudENvbG9yV2l0aENvbG9yRmlsdGVyKENTU1Byb3BlcnR5Q29sb3IpLCBkb2N1bWVudCgp
LnN0eWxlQ29sb3JPcHRpb25zKCkpOworICAgICAgICByZXR1cm4gdGhlbWUoKS50cmFuc2Zvcm1T
ZWxlY3Rpb25CYWNrZ3JvdW5kQ29sb3Ioc3R5bGUoKS52aXNpdGVkRGVwZW5kZW50Q29sb3JXaXRo
Q29sb3JGaWx0ZXIoQ1NTUHJvcGVydHlDb2xvciksIHN0eWxlQ29sb3JPcHRpb25zKCkpOwogCiAg
ICAgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBwc2V1ZG9TdHlsZSA9IHNlbGVjdGlvblBz
ZXVkb1N0eWxlKCk7CiAgICAgaWYgKHBzZXVkb1N0eWxlICYmIHBzZXVkb1N0eWxlLT52aXNpdGVk
RGVwZW5kZW50Q29sb3JXaXRoQ29sb3JGaWx0ZXIoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQ29sb3Ip
LmlzVmFsaWQoKSkKLSAgICAgICAgcmV0dXJuIHRoZW1lKCkudHJhbnNmb3JtU2VsZWN0aW9uQmFj
a2dyb3VuZENvbG9yKHBzZXVkb1N0eWxlLT52aXNpdGVkRGVwZW5kZW50Q29sb3JXaXRoQ29sb3JG
aWx0ZXIoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQ29sb3IpLCBkb2N1bWVudCgpLnN0eWxlQ29sb3JP
cHRpb25zKCkpOworICAgICAgICByZXR1cm4gdGhlbWUoKS50cmFuc2Zvcm1TZWxlY3Rpb25CYWNr
Z3JvdW5kQ29sb3IocHNldWRvU3R5bGUtPnZpc2l0ZWREZXBlbmRlbnRDb2xvcldpdGhDb2xvckZp
bHRlcihDU1NQcm9wZXJ0eUJhY2tncm91bmRDb2xvciksIHN0eWxlQ29sb3JPcHRpb25zKCkpOwog
CiAgICAgaWYgKGZyYW1lKCkuc2VsZWN0aW9uKCkuaXNGb2N1c2VkQW5kQWN0aXZlKCkpCi0gICAg
ICAgIHJldHVybiB0aGVtZSgpLmFjdGl2ZVNlbGVjdGlvbkJhY2tncm91bmRDb2xvcihkb2N1bWVu
dCgpLnN0eWxlQ29sb3JPcHRpb25zKCkpOwotICAgIHJldHVybiB0aGVtZSgpLmluYWN0aXZlU2Vs
ZWN0aW9uQmFja2dyb3VuZENvbG9yKGRvY3VtZW50KCkuc3R5bGVDb2xvck9wdGlvbnMoKSk7Cisg
ICAgICAgIHJldHVybiB0aGVtZSgpLmFjdGl2ZVNlbGVjdGlvbkJhY2tncm91bmRDb2xvcihzdHls
ZUNvbG9yT3B0aW9ucygpKTsKKyAgICByZXR1cm4gdGhlbWUoKS5pbmFjdGl2ZVNlbGVjdGlvbkJh
Y2tncm91bmRDb2xvcihzdHlsZUNvbG9yT3B0aW9ucygpKTsKIH0KIAogYm9vbCBSZW5kZXJFbGVt
ZW50OjpnZXRMZWFkaW5nQ29ybmVyKEZsb2F0UG9pbnQmIHBvaW50LCBib29sJiBpbnNpZGVGaXhl
ZCkgY29uc3QKQEAgLTE4MzgsOSArMTgzOCw5IEBAIHZvaWQgUmVuZGVyRWxlbWVudDo6cGFpbnRG
b2N1c1JpbmcoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsCiAg
ICAgICAgICAgICBmb3IgKGF1dG8gcmVjdCA6IHBpeGVsU25hcHBlZEZvY3VzUmluZ1JlY3RzKQog
ICAgICAgICAgICAgICAgIHBhdGguYWRkUmVjdChyZWN0KTsKICAgICAgICAgfQotICAgICAgICBw
YWludEluZm8uY29udGV4dCgpLmRyYXdGb2N1c1JpbmcocGF0aCwgcGFnZSgpLmZvY3VzQ29udHJv
bGxlcigpLnRpbWVTaW5jZUZvY3VzV2FzU2V0KCkuc2Vjb25kcygpLCBuZWVkc1JlcGFpbnQsIFJl
bmRlclRoZW1lOjpmb2N1c1JpbmdDb2xvcihkb2N1bWVudCgpLnN0eWxlQ29sb3JPcHRpb25zKCkp
KTsKKyAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQoKS5kcmF3Rm9jdXNSaW5nKHBhdGgsIHBhZ2Uo
KS5mb2N1c0NvbnRyb2xsZXIoKS50aW1lU2luY2VGb2N1c1dhc1NldCgpLnNlY29uZHMoKSwgbmVl
ZHNSZXBhaW50LCBSZW5kZXJUaGVtZTo6Zm9jdXNSaW5nQ29sb3Ioc3R5bGVDb2xvck9wdGlvbnMo
KSkpOwogICAgIH0gZWxzZQotICAgICAgICBwYWludEluZm8uY29udGV4dCgpLmRyYXdGb2N1c1Jp
bmcocGl4ZWxTbmFwcGVkRm9jdXNSaW5nUmVjdHMsIHBhZ2UoKS5mb2N1c0NvbnRyb2xsZXIoKS50
aW1lU2luY2VGb2N1c1dhc1NldCgpLnNlY29uZHMoKSwgbmVlZHNSZXBhaW50LCBSZW5kZXJUaGVt
ZTo6Zm9jdXNSaW5nQ29sb3IoZG9jdW1lbnQoKS5zdHlsZUNvbG9yT3B0aW9ucygpKSk7CisgICAg
ICAgIHBhaW50SW5mby5jb250ZXh0KCkuZHJhd0ZvY3VzUmluZyhwaXhlbFNuYXBwZWRGb2N1c1Jp
bmdSZWN0cywgcGFnZSgpLmZvY3VzQ29udHJvbGxlcigpLnRpbWVTaW5jZUZvY3VzV2FzU2V0KCku
c2Vjb25kcygpLCBuZWVkc1JlcGFpbnQsIFJlbmRlclRoZW1lOjpmb2N1c1JpbmdDb2xvcihzdHls
ZUNvbG9yT3B0aW9ucygpKSk7CiAgICAgaWYgKG5lZWRzUmVwYWludCkKICAgICAgICAgcGFnZSgp
LmZvY3VzQ29udHJvbGxlcigpLnNldEZvY3VzZWRFbGVtZW50TmVlZHNSZXBhaW50KCk7CiAjZWxz
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZS5jcHAKaW5kZXggODEwOWViZmZk
MjEuLmEwZDJiN2I0N2U2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVySW1hZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZS5j
cHAKQEAgLTU3NCw3ICs1NzQsNyBAQCB2b2lkIFJlbmRlckltYWdlOjpwYWludEFyZWFFbGVtZW50
Rm9jdXNSaW5nKFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQbwogCiAjaWYgUExB
VEZPUk0oTUFDKQogICAgIGJvb2wgbmVlZHNSZXBhaW50OwotICAgIHBhaW50SW5mby5jb250ZXh0
KCkuZHJhd0ZvY3VzUmluZyhwYXRoLCBwYWdlKCkuZm9jdXNDb250cm9sbGVyKCkudGltZVNpbmNl
Rm9jdXNXYXNTZXQoKS5zZWNvbmRzKCksIG5lZWRzUmVwYWludCwgUmVuZGVyVGhlbWU6OmZvY3Vz
UmluZ0NvbG9yKGRvY3VtZW50KCkuc3R5bGVDb2xvck9wdGlvbnMoKSkpOworICAgIHBhaW50SW5m
by5jb250ZXh0KCkuZHJhd0ZvY3VzUmluZyhwYXRoLCBwYWdlKCkuZm9jdXNDb250cm9sbGVyKCku
dGltZVNpbmNlRm9jdXNXYXNTZXQoKS5zZWNvbmRzKCksIG5lZWRzUmVwYWludCwgUmVuZGVyVGhl
bWU6OmZvY3VzUmluZ0NvbG9yKHN0eWxlQ29sb3JPcHRpb25zKCkpKTsKICAgICBpZiAobmVlZHNS
ZXBhaW50KQogICAgICAgICBwYWdlKCkuZm9jdXNDb250cm9sbGVyKCkuc2V0Rm9jdXNlZEVsZW1l
bnROZWVkc1JlcGFpbnQoKTsKICNlbHNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJMYXllckJhY2tpbmcuY3BwCmluZGV4IDg4ZDZlMDFkZDZlLi5iYjdiMTllYmM4YyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHAKQEAg
LTI1NDEsNyArMjU0MSw3IEBAIHZvaWQgUmVuZGVyTGF5ZXJCYWNraW5nOjpwYWludENvbnRlbnRz
KGNvbnN0IEdyYXBoaWNzTGF5ZXIqIGdyYXBoaWNzTGF5ZXIsIEdyYXBoCiAjZW5kaWYKIAogI2lm
IFBMQVRGT1JNKE1BQykKLSAgICBMb2NhbERlZmF1bHRTeXN0ZW1BcHBlYXJhbmNlIGxvY2FsQXBw
ZWFyYW5jZShyZW5kZXJlcigpLmRvY3VtZW50KCkudXNlRGFya0FwcGVhcmFuY2UoKSk7CisgICAg
TG9jYWxEZWZhdWx0U3lzdGVtQXBwZWFyYW5jZSBsb2NhbEFwcGVhcmFuY2UocmVuZGVyZXIoKS51
c2VEYXJrQXBwZWFyYW5jZSgpKTsKICNlbmRpZgogCiAgICAgLy8gVGhlIGRpcnR5UmVjdCBpcyBp
biB0aGUgY29vcmRzIG9mIHRoZSBwYWludGluZyByb290LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNwcAppbmRleCBiNjU1ZmYyNWM5YS4u
MDkyYjUwMDc1ZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJM
YXllckNvbXBvc2l0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJM
YXllckNvbXBvc2l0b3IuY3BwCkBAIC0yNzgyLDcgKzI3ODIsNyBAQCB2b2lkIHBhaW50U2Nyb2xs
YmFyKFNjcm9sbGJhciogc2Nyb2xsYmFyLCBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0
IEludFJlYwogdm9pZCBSZW5kZXJMYXllckNvbXBvc2l0b3I6OnBhaW50Q29udGVudHMoY29uc3Qg
R3JhcGhpY3NMYXllciogZ3JhcGhpY3NMYXllciwgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBH
cmFwaGljc0xheWVyUGFpbnRpbmdQaGFzZSwgY29uc3QgRmxvYXRSZWN0JiBjbGlwLCBHcmFwaGlj
c0xheWVyUGFpbnRCZWhhdmlvcikKIHsKICNpZiBQTEFURk9STShNQUMpCi0gICAgTG9jYWxEZWZh
dWx0U3lzdGVtQXBwZWFyYW5jZSBsb2NhbEFwcGVhcmFuY2UobV9yZW5kZXJWaWV3LmRvY3VtZW50
KCkudXNlRGFya0FwcGVhcmFuY2UoKSk7CisgICAgTG9jYWxEZWZhdWx0U3lzdGVtQXBwZWFyYW5j
ZSBsb2NhbEFwcGVhcmFuY2UobV9yZW5kZXJWaWV3LnVzZURhcmtBcHBlYXJhbmNlKCkpOwogI2Vu
ZGlmCiAKICAgICBJbnRSZWN0IHBpeGVsU25hcHBlZFJlY3RGb3JJbnRlZ3JhbFBvc2l0aW9uZWRJ
dGVtcyA9IHNuYXBwZWRJbnRSZWN0KExheW91dFJlY3QoY2xpcCkpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RCb3guY3BwIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckxpc3RCb3guY3BwCmluZGV4IGVjZDU1MTY1ZmZjLi41MjAwODEzZTE5
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RCb3guY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0Qm94LmNwcApAQCAtNDI4
LDEwICs0MjgsMTAgQEAgdm9pZCBSZW5kZXJMaXN0Qm94OjpwYWludEl0ZW1Gb3JlZ3JvdW5kKFBh
aW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2ludCYKICAgICBDb2xvciB0ZXh0Q29s
b3IgPSBpdGVtU3R5bGUudmlzaXRlZERlcGVuZGVudENvbG9yV2l0aENvbG9yRmlsdGVyKENTU1By
b3BlcnR5Q29sb3IpOwogICAgIGlmIChpc09wdGlvbkVsZW1lbnQgJiYgZG93bmNhc3Q8SFRNTE9w
dGlvbkVsZW1lbnQ+KCpsaXN0SXRlbUVsZW1lbnQpLnNlbGVjdGVkKCkpIHsKICAgICAgICAgaWYg
KGZyYW1lKCkuc2VsZWN0aW9uKCkuaXNGb2N1c2VkQW5kQWN0aXZlKCkgJiYgZG9jdW1lbnQoKS5m
b2N1c2VkRWxlbWVudCgpID09ICZzZWxlY3RFbGVtZW50KCkpCi0gICAgICAgICAgICB0ZXh0Q29s
b3IgPSB0aGVtZSgpLmFjdGl2ZUxpc3RCb3hTZWxlY3Rpb25Gb3JlZ3JvdW5kQ29sb3IoZG9jdW1l
bnQoKS5zdHlsZUNvbG9yT3B0aW9ucygpKTsKKyAgICAgICAgICAgIHRleHRDb2xvciA9IHRoZW1l
KCkuYWN0aXZlTGlzdEJveFNlbGVjdGlvbkZvcmVncm91bmRDb2xvcihzdHlsZUNvbG9yT3B0aW9u
cygpKTsKICAgICAgICAgLy8gSG9ub3IgdGhlIGZvcmVncm91bmQgY29sb3IgZm9yIGRpc2FibGVk
IGl0ZW1zCiAgICAgICAgIGVsc2UgaWYgKCFsaXN0SXRlbUVsZW1lbnQtPmlzRGlzYWJsZWRGb3Jt
Q29udHJvbCgpICYmICFzZWxlY3RFbGVtZW50KCkuaXNEaXNhYmxlZEZvcm1Db250cm9sKCkpCi0g
ICAgICAgICAgICB0ZXh0Q29sb3IgPSB0aGVtZSgpLmluYWN0aXZlTGlzdEJveFNlbGVjdGlvbkZv
cmVncm91bmRDb2xvcihkb2N1bWVudCgpLnN0eWxlQ29sb3JPcHRpb25zKCkpOworICAgICAgICAg
ICAgdGV4dENvbG9yID0gdGhlbWUoKS5pbmFjdGl2ZUxpc3RCb3hTZWxlY3Rpb25Gb3JlZ3JvdW5k
Q29sb3Ioc3R5bGVDb2xvck9wdGlvbnMoKSk7CiAgICAgfQogCiAgICAgcGFpbnRJbmZvLmNvbnRl
eHQoKS5zZXRGaWxsQ29sb3IodGV4dENvbG9yKTsKQEAgLTQ2MSw5ICs0NjEsOSBAQCB2b2lkIFJl
bmRlckxpc3RCb3g6OnBhaW50SXRlbUJhY2tncm91bmQoUGFpbnRJbmZvJiBwYWludEluZm8sIGNv
bnN0IExheW91dFBvaW50JgogICAgIENvbG9yIGJhY2tDb2xvcjsKICAgICBpZiAoaXM8SFRNTE9w
dGlvbkVsZW1lbnQ+KCpsaXN0SXRlbUVsZW1lbnQpICYmIGRvd25jYXN0PEhUTUxPcHRpb25FbGVt
ZW50PigqbGlzdEl0ZW1FbGVtZW50KS5zZWxlY3RlZCgpKSB7CiAgICAgICAgIGlmIChmcmFtZSgp
LnNlbGVjdGlvbigpLmlzRm9jdXNlZEFuZEFjdGl2ZSgpICYmIGRvY3VtZW50KCkuZm9jdXNlZEVs
ZW1lbnQoKSA9PSAmc2VsZWN0RWxlbWVudCgpKQotICAgICAgICAgICAgYmFja0NvbG9yID0gdGhl
bWUoKS5hY3RpdmVMaXN0Qm94U2VsZWN0aW9uQmFja2dyb3VuZENvbG9yKGRvY3VtZW50KCkuc3R5
bGVDb2xvck9wdGlvbnMoKSk7CisgICAgICAgICAgICBiYWNrQ29sb3IgPSB0aGVtZSgpLmFjdGl2
ZUxpc3RCb3hTZWxlY3Rpb25CYWNrZ3JvdW5kQ29sb3Ioc3R5bGVDb2xvck9wdGlvbnMoKSk7CiAg
ICAgICAgIGVsc2UKLSAgICAgICAgICAgIGJhY2tDb2xvciA9IHRoZW1lKCkuaW5hY3RpdmVMaXN0
Qm94U2VsZWN0aW9uQmFja2dyb3VuZENvbG9yKGRvY3VtZW50KCkuc3R5bGVDb2xvck9wdGlvbnMo
KSk7CisgICAgICAgICAgICBiYWNrQ29sb3IgPSB0aGVtZSgpLmluYWN0aXZlTGlzdEJveFNlbGVj
dGlvbkJhY2tncm91bmRDb2xvcihzdHlsZUNvbG9yT3B0aW9ucygpKTsKICAgICB9IGVsc2UKICAg
ICAgICAgYmFja0NvbG9yID0gaXRlbVN0eWxlLnZpc2l0ZWREZXBlbmRlbnRDb2xvcldpdGhDb2xv
ckZpbHRlcihDU1NQcm9wZXJ0eUJhY2tncm91bmRDb2xvcik7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlck9iamVjdC5jcHAKaW5kZXggNzY0NDQ1MGYwODAuLjQyNTUxMDVlMjQ0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcApAQCAtMTgwMSw2ICsx
ODAxLDE2IEBAIEN1cnNvckRpcmVjdGl2ZSBSZW5kZXJPYmplY3Q6OmdldEN1cnNvcihjb25zdCBM
YXlvdXRQb2ludCYsIEN1cnNvciYpIGNvbnN0CiAgICAgcmV0dXJuIFNldEN1cnNvckJhc2VkT25T
dHlsZTsKIH0KIAorYm9vbCBSZW5kZXJPYmplY3Q6OnVzZURhcmtBcHBlYXJhbmNlKCkgY29uc3QK
K3sKKyAgICByZXR1cm4gZG9jdW1lbnQoKS51c2VEYXJrQXBwZWFyYW5jZSgmc3R5bGUoKSk7Cit9
CisKK09wdGlvblNldDxTdHlsZUNvbG9yOjpPcHRpb25zPiBSZW5kZXJPYmplY3Q6OnN0eWxlQ29s
b3JPcHRpb25zKCkgY29uc3QKK3sKKyAgICByZXR1cm4gZG9jdW1lbnQoKS5zdHlsZUNvbG9yT3B0
aW9ucygmc3R5bGUoKSk7Cit9CisKIGJvb2wgUmVuZGVyT2JqZWN0OjpjYW5VcGRhdGVTZWxlY3Rp
b25PblJvb3RMaW5lQm94ZXMoKQogewogICAgIGlmIChuZWVkc0xheW91dCgpKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5oIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5oCmluZGV4IDEzYjM2ZDY3NjAyLi4wNDk0ODljYzYx
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuaApAQCAtMTc2LDYgKzE3
Niw5IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGxvY2F0ZUVuY2xvc2luZ0ZyYWdtZW50ZWRG
bG93KCk7CiAgICAgfQogCisgICAgYm9vbCB1c2VEYXJrQXBwZWFyYW5jZSgpIGNvbnN0OworICAg
IE9wdGlvblNldDxTdHlsZUNvbG9yOjpPcHRpb25zPiBzdHlsZUNvbG9yT3B0aW9ucygpIGNvbnN0
OworCiAjaWZuZGVmIE5ERUJVRwogICAgIHZvaWQgc2V0SGFzQVhPYmplY3QoYm9vbCBmbGFnKSB7
IG1faGFzQVhPYmplY3QgPSBmbGFnOyB9CiAgICAgYm9vbCBoYXNBWE9iamVjdCgpIGNvbnN0IHsg
cmV0dXJuIG1faGFzQVhPYmplY3Q7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJUYWJsZUNlbGwuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
clRhYmxlQ2VsbC5jcHAKaW5kZXggMzQ1YTdiYjU3ZjYuLjc1NDE5Nzg3YzdiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVDZWxsLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVDZWxsLmNwcApAQCAtMTI4OSw3ICsxMjg5
LDcgQEAgdm9pZCBSZW5kZXJUYWJsZUNlbGw6OnBhaW50QmFja2dyb3VuZHNCZWhpbmRDZWxsKFBh
aW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXkKIAogICAgIENvbXBvc2l0ZU9wZXJhdG9yIGNv
bXBvc2l0ZU9wID0gQ29tcG9zaXRlU291cmNlT3ZlcjsKICAgICBDb2xvciBjb2xvciA9IHN0eWxl
LnZpc2l0ZWREZXBlbmRlbnRDb2xvcihDU1NQcm9wZXJ0eUJhY2tncm91bmRDb2xvcik7Ci0gICAg
aWYgKGRvY3VtZW50KCkuc2V0dGluZ3MoKS5wdW5jaE91dFdoaXRlQmFja2dyb3VuZHNJbkRhcmtN
b2RlKCkgJiYgQ29sb3I6OmlzV2hpdGVDb2xvcihjb2xvcikgJiYgdGhlbWUoKS51c2luZ0RhcmtB
cHBlYXJhbmNlKCp0aGlzKSkKKyAgICBpZiAoZG9jdW1lbnQoKS5zZXR0aW5ncygpLnB1bmNoT3V0
V2hpdGVCYWNrZ3JvdW5kc0luRGFya01vZGUoKSAmJiBDb2xvcjo6aXNXaGl0ZUNvbG9yKGNvbG9y
KSAmJiB1c2VEYXJrQXBwZWFyYW5jZSgpKQogICAgICAgICBjb21wb3NpdGVPcCA9IENvbXBvc2l0
ZURlc3RpbmF0aW9uT3V0OwogCiAgICAgY29sb3IgPSBzdHlsZS5jb2xvckJ5QXBwbHlpbmdDb2xv
ckZpbHRlcihjb2xvcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyVGhlbWUuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lLmNwcApp
bmRleCBhYmY3NjAwMDk2ZC4uYjdhODAwYjBkNjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJUaGVtZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclRoZW1lLmNwcApAQCAtMzE4LDcgKzMxOCw3IEBAIGJvb2wgUmVuZGVyVGhlbWU6OnBh
aW50KGNvbnN0IFJlbmRlckJveCYgYm94LCBDb250cm9sU3RhdGVzJiBjb250cm9sU3RhdGVzLCBj
b25zCiAgICAgY2FzZSBCdXR0b25QYXJ0OgogICAgIGNhc2UgSW5uZXJTcGluQnV0dG9uUGFydDoK
ICAgICAgICAgdXBkYXRlQ29udHJvbFN0YXRlc0ZvclJlbmRlcmVyKGJveCwgY29udHJvbFN0YXRl
cyk7Ci0gICAgICAgIFRoZW1lOjpzaW5nbGV0b24oKS5wYWludChwYXJ0LCBjb250cm9sU3RhdGVz
LCBwYWludEluZm8uY29udGV4dCgpLCBkZXZpY2VQaXhlbFNuYXBwZWRSZWN0LCBib3guc3R5bGUo
KS5lZmZlY3RpdmVab29tKCksICZib3gudmlldygpLmZyYW1lVmlldygpLCBkZXZpY2VTY2FsZUZh
Y3RvciwgcGFnZVNjYWxlRmFjdG9yLCBib3guZG9jdW1lbnQoKS51c2VTeXN0ZW1BcHBlYXJhbmNl
KCksIGJveC5kb2N1bWVudCgpLnVzZURhcmtBcHBlYXJhbmNlKCkpOworICAgICAgICBUaGVtZTo6
c2luZ2xldG9uKCkucGFpbnQocGFydCwgY29udHJvbFN0YXRlcywgcGFpbnRJbmZvLmNvbnRleHQo
KSwgZGV2aWNlUGl4ZWxTbmFwcGVkUmVjdCwgYm94LnN0eWxlKCkuZWZmZWN0aXZlWm9vbSgpLCAm
Ym94LnZpZXcoKS5mcmFtZVZpZXcoKSwgZGV2aWNlU2NhbGVGYWN0b3IsIHBhZ2VTY2FsZUZhY3Rv
ciwgYm94LmRvY3VtZW50KCkudXNlU3lzdGVtQXBwZWFyYW5jZSgpLCBib3gudXNlRGFya0FwcGVh
cmFuY2UoKSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBkZWZhdWx0OgogICAgICAgICBi
cmVhazsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZS5o
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lLmgKaW5kZXggMDkyZmVmODE1
NTAuLmEyYjFjYmRkZmVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyVGhlbWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWUuaApA
QCAtMjYxLDggKzI2MSw2IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgcGFpbnRTeXN0ZW1Q
cmV2aWV3QmFkZ2UoSW1hZ2UmLCBjb25zdCBQYWludEluZm8mLCBjb25zdCBGbG9hdFJlY3QmKTsK
ICNlbmRpZgogCi0gICAgdmlydHVhbCBib29sIHVzaW5nRGFya0FwcGVhcmFuY2UoY29uc3QgUmVu
ZGVyT2JqZWN0JikgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KLQogcHJvdGVjdGVkOgogICAgIHZp
cnR1YWwgRm9udENhc2NhZGVEZXNjcmlwdGlvbiYgY2FjaGVkU3lzdGVtRm9udERlc2NyaXB0aW9u
KENTU1ZhbHVlSUQgc3lzdGVtRm9udElEKSBjb25zdDsKICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRl
Q2FjaGVkU3lzdGVtRm9udERlc2NyaXB0aW9uKENTU1ZhbHVlSUQgc3lzdGVtRm9udElELCBGb250
Q2FzY2FkZURlc2NyaXB0aW9uJikgY29uc3QgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lTWFjLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyVGhlbWVNYWMuaAppbmRleCBkODU3NjFhYmM5Yi4uMWRkMmIxZjVmZWYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZU1hYy5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZU1hYy5oCkBAIC0xNzQsOCArMTc0LDYgQEAg
cHJpdmF0ZToKICAgICBib29sIHBhaW50QXR0YWNobWVudChjb25zdCBSZW5kZXJPYmplY3QmLCBj
b25zdCBQYWludEluZm8mLCBjb25zdCBJbnRSZWN0JikgZmluYWw7CiAjZW5kaWYKIAotICAgIGJv
b2wgdXNpbmdEYXJrQXBwZWFyYW5jZShjb25zdCBSZW5kZXJPYmplY3QmKSBjb25zdCBmaW5hbDsK
LQogcHJpdmF0ZToKICAgICBTdHJpbmcgZmlsZUxpc3ROYW1lRm9yV2lkdGgoY29uc3QgRmlsZUxp
c3QqLCBjb25zdCBGb250Q2FzY2FkZSYsIGludCB3aWR0aCwgYm9vbCBtdWx0aXBsZUZpbGVzQWxs
b3dlZCkgY29uc3QgZmluYWw7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJUaGVtZU1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVt
ZU1hYy5tbQppbmRleCAzZmJkNjBkNjE3MS4uZDU1MGU1YjMzZjQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVNYWMubW0KQEAgLTI5Nyw3ICsyOTcsNyBAQCBSZW5kZXJU
aGVtZU1hYzo6UmVuZGVyVGhlbWVNYWMoKQogCiBOU1ZpZXcgKlJlbmRlclRoZW1lTWFjOjpkb2N1
bWVudFZpZXdGb3IoY29uc3QgUmVuZGVyT2JqZWN0JiBvKSBjb25zdAogewotICAgIExvY2FsRGVm
YXVsdFN5c3RlbUFwcGVhcmFuY2UgbG9jYWxBcHBlYXJhbmNlKHVzaW5nRGFya0FwcGVhcmFuY2Uo
bykpOworICAgIExvY2FsRGVmYXVsdFN5c3RlbUFwcGVhcmFuY2UgbG9jYWxBcHBlYXJhbmNlKG8u
dXNlRGFya0FwcGVhcmFuY2UoKSk7CiAgICAgQ29udHJvbFN0YXRlcyBzdGF0ZXMoZXh0cmFjdENv
bnRyb2xTdGF0ZXNGb3JSZW5kZXJlcihvKSk7CiAgICAgcmV0dXJuIFRoZW1lTWFjOjplbnN1cmVk
Vmlldygmby52aWV3KCkuZnJhbWVWaWV3KCksIHN0YXRlcyk7CiB9CkBAIC0xNzEzLDcgKzE3MTMs
NyBAQCB2b2lkIFJlbmRlclRoZW1lTWFjOjphZGp1c3RNZW51TGlzdFN0eWxlKFN0eWxlUmVzb2x2
ZXImIHN0eWxlUmVzb2x2ZXIsIFJlbmRlclN0eQogICAgIC8vIFNldCB0aGUgZm9yZWdyb3VuZCBj
b2xvciB0byBibGFjayBvciBncmF5IHdoZW4gd2UgaGF2ZSB0aGUgYXF1YSBsb29rLgogICAgIENv
bG9yIGMgPSBDb2xvcjo6ZGFya0dyYXk7CiAgICAgaWYgKGUpIHsKLSAgICAgICAgT3B0aW9uU2V0
PFN0eWxlQ29sb3I6Ok9wdGlvbnM+IG9wdGlvbnMgPSBlLT5kb2N1bWVudCgpLnN0eWxlQ29sb3JP
cHRpb25zKCk7CisgICAgICAgIE9wdGlvblNldDxTdHlsZUNvbG9yOjpPcHRpb25zPiBvcHRpb25z
ID0gZS0+ZG9jdW1lbnQoKS5zdHlsZUNvbG9yT3B0aW9ucygmc3R5bGUpOwogICAgICAgICBjID0g
IWUtPmlzRGlzYWJsZWRGb3JtQ29udHJvbCgpID8gc3lzdGVtQ29sb3IoQ1NTVmFsdWVCdXR0b250
ZXh0LCBvcHRpb25zKSA6IHN5c3RlbUNvbG9yKENTU1ZhbHVlR3JheXRleHQsIG9wdGlvbnMpOwog
ICAgIH0KICAgICBzdHlsZS5zZXRDb2xvcihjKTsKQEAgLTE4MDAsNyArMTgwMCw3IEBAIHZvaWQg
UmVuZGVyVGhlbWVNYWM6OnNldFBvcHVwQnV0dG9uQ2VsbFN0YXRlKGNvbnN0IFJlbmRlck9iamVj
dCYgbywgY29uc3QgSW50U2l6CiAKIHZvaWQgUmVuZGVyVGhlbWVNYWM6OnBhaW50Q2VsbEFuZFNl
dEZvY3VzZWRFbGVtZW50TmVlZHNSZXBhaW50SWZOZWNlc3NhcnkoTlNDZWxsKiBjZWxsLCBjb25z
dCBSZW5kZXJPYmplY3QmIHJlbmRlcmVyLCBjb25zdCBQYWludEluZm8mIHBhaW50SW5mbywgY29u
c3QgRmxvYXRSZWN0JiByZWN0KQogewotICAgIExvY2FsRGVmYXVsdFN5c3RlbUFwcGVhcmFuY2Ug
bG9jYWxBcHBlYXJhbmNlKHVzaW5nRGFya0FwcGVhcmFuY2UocmVuZGVyZXIpKTsKKyAgICBMb2Nh
bERlZmF1bHRTeXN0ZW1BcHBlYXJhbmNlIGxvY2FsQXBwZWFyYW5jZShyZW5kZXJlci51c2VEYXJr
QXBwZWFyYW5jZSgpKTsKICAgICBib29sIHNob3VsZERyYXdGb2N1c1JpbmcgPSBpc0ZvY3VzZWQo
cmVuZGVyZXIpICYmIHJlbmRlcmVyLnN0eWxlKCkub3V0bGluZVN0eWxlSXNBdXRvKCkgPT0gT3V0
bGluZUlzQXV0bzo6T247CiAgICAgYm9vbCBzaG91bGRVc2VJbWFnZUJ1ZmZlciA9IHJlbmRlcmVy
LnN0eWxlKCkuZWZmZWN0aXZlWm9vbSgpICE9IDEgfHwgcmVuZGVyZXIucGFnZSgpLnBhZ2VTY2Fs
ZUZhY3RvcigpICE9IDE7CiAgICAgYm9vbCBzaG91bGREcmF3Q2VsbCA9IHRydWU7CkBAIC0xODgy
LDcgKzE4ODIsNyBAQCBib29sIFJlbmRlclRoZW1lTWFjOjpwYWludFNsaWRlclRodW1iKGNvbnN0
IFJlbmRlck9iamVjdCYgbywgY29uc3QgUGFpbnRJbmZvJiBwYQogICAgICAgICA/IHNsaWRlclRo
dW1iVmVydGljYWwoKQogICAgICAgICA6IHNsaWRlclRodW1iSG9yaXpvbnRhbCgpOwogCi0gICAg
TG9jYWxEZWZhdWx0U3lzdGVtQXBwZWFyYW5jZSBsb2NhbEFwcGVhcmFuY2UodXNpbmdEYXJrQXBw
ZWFyYW5jZShvKSk7CisgICAgTG9jYWxEZWZhdWx0U3lzdGVtQXBwZWFyYW5jZSBsb2NhbEFwcGVh
cmFuY2Uoby51c2VEYXJrQXBwZWFyYW5jZSgpKTsKIAogICAgIExvY2FsQ3VycmVudEdyYXBoaWNz
Q29udGV4dCBsb2NhbENvbnRleHQocGFpbnRJbmZvLmNvbnRleHQoKSk7CiAKQEAgLTI5OTQsMTEg
KzI5OTQsNiBAQCBib29sIFJlbmRlclRoZW1lTWFjOjpwYWludEF0dGFjaG1lbnQoY29uc3QgUmVu
ZGVyT2JqZWN0JiByZW5kZXJlciwgY29uc3QgUGFpbnRJbgogCiAjZW5kaWYgLy8gRU5BQkxFKEFU
VEFDSE1FTlRfRUxFTUVOVCkKIAotYm9vbCBSZW5kZXJUaGVtZU1hYzo6dXNpbmdEYXJrQXBwZWFy
YW5jZShjb25zdCBSZW5kZXJPYmplY3QmIG8pIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG8uZG9jdW1l
bnQoKS51c2VEYXJrQXBwZWFyYW5jZSgpOwotfQotCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAK
ICNlbmRpZiAvLyBQTEFURk9STShNQUMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHls
ZS9SZW5kZXJTdHlsZS5oCmluZGV4IDcwOGU2YmYwMTQyLi4zNzljOTBiMGRhOCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmgKQEAgLTYzMCw2ICs2MzAs
MTAgQEAgcHVibGljOgogCiAgICAgUnVieVBvc2l0aW9uIHJ1YnlQb3NpdGlvbigpIGNvbnN0IHsg
cmV0dXJuIHN0YXRpY19jYXN0PFJ1YnlQb3NpdGlvbj4obV9yYXJlSW5oZXJpdGVkRGF0YS0+cnVi
eVBvc2l0aW9uKTsgfQogCisjaWYgRU5BQkxFKERBUktfTU9ERV9DU1MpCisgICAgT3B0aW9uU2V0
PENvbG9yU2NoZW1lcz4gc3VwcG9ydGVkQ29sb3JTY2hlbWVzKCkgY29uc3QgeyByZXR1cm4gT3B0
aW9uU2V0PENvbG9yU2NoZW1lcz46OmZyb21SYXcobV9yYXJlSW5oZXJpdGVkRGF0YS0+c3VwcG9y
dGVkQ29sb3JTY2hlbWVzKTsgfQorI2VuZGlmCisKICAgICBUZXh0T3JpZW50YXRpb24gdGV4dE9y
aWVudGF0aW9uKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8VGV4dE9yaWVudGF0aW9uPiht
X3JhcmVJbmhlcml0ZWREYXRhLT50ZXh0T3JpZW50YXRpb24pOyB9CiAKICAgICBPYmplY3RGaXQg
b2JqZWN0Rml0KCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8T2JqZWN0Rml0PihtX3JhcmVO
b25Jbmhlcml0ZWREYXRhLT5vYmplY3RGaXQpOyB9CkBAIC0xMTYxLDYgKzExNjUsMTAgQEAgcHVi
bGljOgogCiAgICAgdm9pZCBzZXRSdWJ5UG9zaXRpb24oUnVieVBvc2l0aW9uIHBvc2l0aW9uKSB7
IFNFVF9WQVIobV9yYXJlSW5oZXJpdGVkRGF0YSwgcnVieVBvc2l0aW9uLCBzdGF0aWNfY2FzdDx1
bnNpZ25lZD4ocG9zaXRpb24pKTsgfQogCisjaWYgRU5BQkxFKERBUktfTU9ERV9DU1MpCisgICAg
dm9pZCBzZXRTdXBwb3J0ZWRDb2xvclNjaGVtZXMoT3B0aW9uU2V0PENvbG9yU2NoZW1lcz4gY29s
b3JTY2hlbWVzKSB7IFNFVF9WQVIobV9yYXJlSW5oZXJpdGVkRGF0YSwgc3VwcG9ydGVkQ29sb3JT
Y2hlbWVzLCBjb2xvclNjaGVtZXMudG9SYXcoKSk7IH0KKyNlbmRpZgorCiAgICAgdm9pZCBzZXRG
aWx0ZXIoY29uc3QgRmlsdGVyT3BlcmF0aW9ucyYgb3BzKSB7IFNFVF9ORVNURURfVkFSKG1fcmFy
ZU5vbkluaGVyaXRlZERhdGEsIGZpbHRlciwgb3BlcmF0aW9ucywgb3BzKTsgfQogICAgIHZvaWQg
c2V0QXBwbGVDb2xvckZpbHRlcihjb25zdCBGaWx0ZXJPcGVyYXRpb25zJiBvcHMpIHsgU0VUX05F
U1RFRF9WQVIobV9yYXJlSW5oZXJpdGVkRGF0YSwgYXBwbGVDb2xvckZpbHRlciwgb3BlcmF0aW9u
cywgb3BzKTsgfQogCkBAIC0xNTcyLDYgKzE1ODAsMTAgQEAgcHVibGljOgogICAgIHN0YXRpYyBR
dW90ZXNEYXRhKiBpbml0aWFsUXVvdGVzKCkgeyByZXR1cm4gbnVsbHB0cjsgfQogICAgIHN0YXRp
YyBjb25zdCBBdG9taWNTdHJpbmcmIGluaXRpYWxDb250ZW50QWx0VGV4dCgpIHsgcmV0dXJuIGVt
cHR5QXRvbSgpOyB9CiAKKyNpZiBFTkFCTEUoREFSS19NT0RFX0NTUykKKyAgICBzdGF0aWMgT3B0
aW9uU2V0PENvbG9yU2NoZW1lcz4gaW5pdGlhbFN1cHBvcnRlZENvbG9yU2NoZW1lcygpIHsgcmV0
dXJuIHsgfTsgfQorI2VuZGlmCisKICNpZiBFTkFCTEUoQ1NTM19URVhUKQogICAgIHN0YXRpYyBU
ZXh0SW5kZW50TGluZSBpbml0aWFsVGV4dEluZGVudExpbmUoKSB7IHJldHVybiBUZXh0SW5kZW50
TGluZTo6Rmlyc3RMaW5lOyB9CiAgICAgc3RhdGljIFRleHRJbmRlbnRUeXBlIGluaXRpYWxUZXh0
SW5kZW50VHlwZSgpIHsgcmV0dXJuIFRleHRJbmRlbnRUeXBlOjpOb3JtYWw7IH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZUNvbnN0YW50cy5o
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlQ29uc3RhbnRzLmgK
aW5kZXggM2VkZWUwOTlmZTguLmYwNjYzYzhkOTZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGVDb25zdGFudHMuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGVDb25zdGFudHMuaApAQCAtMTAxOSw2ICsx
MDE5LDE0IEBAIGVudW0gY2xhc3MgUnVieVBvc2l0aW9uIDogdWludDhfdCB7CiAgICAgSW50ZXJD
aGFyYWN0ZXIKIH07CiAKKyNpZiBFTkFCTEUoREFSS19NT0RFX0NTUykKK2VudW0gY2xhc3MgQ29s
b3JTY2hlbWVzIDogdWludDhfdCB7CisgICAgT25seSA9IDEgPDwgMCwKKyAgICBMaWdodCA9IDEg
PDwgMSwKKyAgICBEYXJrID0gMSA8PCAyCit9OworI2VuZGlmCisKIHN0YXRpYyBjb25zdCBzaXpl
X3QgR3JpZEF1dG9GbG93Qml0cyA9IDQ7CiBlbnVtIEludGVybmFsR3JpZEF1dG9GbG93QWxnb3Jp
dGhtIHsKICAgICBJbnRlcm5hbEF1dG9GbG93QWxnb3JpdGhtU3BhcnNlID0gMSA8PCAwLApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlUmFyZUluaGVyaXRl
ZERhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlUmFyZUluaGVy
aXRlZERhdGEuY3BwCmluZGV4IDJhYWRhMWMyNzBhLi4yNWEyYmRjNzBjNSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlUmFyZUluaGVyaXRlZERhdGEuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVJhcmVJbmhlcml0ZWRE
YXRhLmNwcApAQCAtMTExLDYgKzExMSw5IEBAIFN0eWxlUmFyZUluaGVyaXRlZERhdGE6OlN0eWxl
UmFyZUluaGVyaXRlZERhdGEoKQogICAgICwgaW1hZ2VSZXNvbHV0aW9uU291cmNlKFJlbmRlclN0
eWxlOjppbml0aWFsSW1hZ2VSZXNvbHV0aW9uU291cmNlKCkpCiAgICAgLCBpbWFnZVJlc29sdXRp
b25TbmFwKFJlbmRlclN0eWxlOjppbml0aWFsSW1hZ2VSZXNvbHV0aW9uU25hcCgpKQogI2VuZGlm
CisjaWYgRU5BQkxFKERBUktfTU9ERV9DU1MpCisgICAgLCBzdXBwb3J0ZWRDb2xvclNjaGVtZXMo
UmVuZGVyU3R5bGU6OmluaXRpYWxTdXBwb3J0ZWRDb2xvclNjaGVtZXMoKS50b1JhdygpKQorI2Vu
ZGlmCiAjaWYgRU5BQkxFKENTUzNfVEVYVCkKICAgICAsIHRleHRBbGlnbkxhc3QoUmVuZGVyU3R5
bGU6OmluaXRpYWxUZXh0QWxpZ25MYXN0KCkpCiAgICAgLCB0ZXh0SnVzdGlmeShSZW5kZXJTdHls
ZTo6aW5pdGlhbFRleHRKdXN0aWZ5KCkpCkBAIC0yMDQsNiArMjA3LDkgQEAgaW5saW5lIFN0eWxl
UmFyZUluaGVyaXRlZERhdGE6OlN0eWxlUmFyZUluaGVyaXRlZERhdGEoY29uc3QgU3R5bGVSYXJl
SW5oZXJpdGVkRGEKICAgICAsIGltYWdlUmVzb2x1dGlvblNvdXJjZShvLmltYWdlUmVzb2x1dGlv
blNvdXJjZSkKICAgICAsIGltYWdlUmVzb2x1dGlvblNuYXAoby5pbWFnZVJlc29sdXRpb25TbmFw
KQogI2VuZGlmCisjaWYgRU5BQkxFKERBUktfTU9ERV9DU1MpCisgICAgLCBzdXBwb3J0ZWRDb2xv
clNjaGVtZXMoby5zdXBwb3J0ZWRDb2xvclNjaGVtZXMpCisjZW5kaWYKICNpZiBFTkFCTEUoQ1NT
M19URVhUKQogICAgICwgdGV4dEFsaWduTGFzdChvLnRleHRBbGlnbkxhc3QpCiAgICAgLCB0ZXh0
SnVzdGlmeShvLnRleHRKdXN0aWZ5KQpAQCAtMzIyLDYgKzMyOCw5IEBAIGJvb2wgU3R5bGVSYXJl
SW5oZXJpdGVkRGF0YTo6b3BlcmF0b3I9PShjb25zdCBTdHlsZVJhcmVJbmhlcml0ZWREYXRhJiBv
KSBjb25zdAogICAgICAgICAmJiBpbWFnZVJlc29sdXRpb25TbmFwID09IG8uaW1hZ2VSZXNvbHV0
aW9uU25hcAogICAgICAgICAmJiBpbWFnZVJlc29sdXRpb24gPT0gby5pbWFnZVJlc29sdXRpb24K
ICNlbmRpZgorI2lmIEVOQUJMRShEQVJLX01PREVfQ1NTKQorICAgICAgICAmJiBzdXBwb3J0ZWRD
b2xvclNjaGVtZXMgPT0gby5zdXBwb3J0ZWRDb2xvclNjaGVtZXMKKyNlbmRpZgogI2lmIEVOQUJM
RShDU1MzX1RFWFQpCiAgICAgICAgICYmIHRleHRBbGlnbkxhc3QgPT0gby50ZXh0QWxpZ25MYXN0
CiAgICAgICAgICYmIHRleHRKdXN0aWZ5ID09IG8udGV4dEp1c3RpZnkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVJhcmVJbmhlcml0ZWREYXRhLmggYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVSYXJlSW5oZXJpdGVkRGF0YS5oCmlu
ZGV4IGI4M2E4YzBhYzgxLi40NTAxMDU1Mjc5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N0eWxlL1N0eWxlUmFyZUluaGVyaXRlZERhdGEuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVSYXJlSW5oZXJpdGVkRGF0YS5oCkBAIC0xMjMsNiAr
MTIzLDkgQEAgcHVibGljOgogICAgIHVuc2lnbmVkIGltYWdlUmVzb2x1dGlvblNvdXJjZSA6IDE7
IC8vIEltYWdlUmVzb2x1dGlvblNvdXJjZQogICAgIHVuc2lnbmVkIGltYWdlUmVzb2x1dGlvblNu
YXAgOiAxOyAvLyBJbWFnZVJlc29sdXRpb25TbmFwCiAjZW5kaWYKKyNpZiBFTkFCTEUoREFSS19N
T0RFX0NTUykKKyAgICB1bnNpZ25lZCBzdXBwb3J0ZWRDb2xvclNjaGVtZXMgOiAzOyAvLyBDb2xv
clNjaGVtZXMKKyNlbmRpZgogI2lmIEVOQUJMRShDU1MzX1RFWFQpCiAgICAgdW5zaWduZWQgdGV4
dEFsaWduTGFzdCA6IDM7IC8vIFRleHRBbGlnbkxhc3QKICAgICB1bnNpZ25lZCB0ZXh0SnVzdGlm
eSA6IDI7IC8vIFRleHRKdXN0aWZ5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3Jh
cGhpY3MvU1ZHSW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdl
LmNwcAppbmRleCA5MWVmODUxNGU1OC4uMDYwOTdlY2NiYmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3Zn
L2dyYXBoaWNzL1NWR0ltYWdlLmNwcApAQCAtNDcsNiArNDcsNyBAQAogI2luY2x1ZGUgIlBhZ2VD
b25maWd1cmF0aW9uLmgiCiAjaW5jbHVkZSAiUmVuZGVyU1ZHUm9vdC5oIgogI2luY2x1ZGUgIlJl
bmRlclN0eWxlLmgiCisjaW5jbHVkZSAiUmVuZGVyVmlldy5oIgogI2luY2x1ZGUgIlNWR0RvY3Vt
ZW50LmgiCiAjaW5jbHVkZSAiU1ZHRkVJbWFnZUVsZW1lbnQuaCIKICNpbmNsdWRlICJTVkdGb3Jl
aWduT2JqZWN0RWxlbWVudC5oIgpAQCAtMzI0LDggKzMyNSw3IEBAIEltYWdlRHJhd1Jlc3VsdCBT
VkdJbWFnZTo6ZHJhdyhHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYg
ZHN0UmVjCiAgICAgfQogCiAjaWYgUExBVEZPUk0oTUFDKQotICAgIGF1dG8qIGRvY3VtZW50ID0g
bV9wYWdlLT5tYWluRnJhbWUoKS5kb2N1bWVudCgpOwotICAgIExvY2FsRGVmYXVsdFN5c3RlbUFw
cGVhcmFuY2UgbG9jYWxBcHBlYXJhbmNlKGRvY3VtZW50ID8gZG9jdW1lbnQtPnVzZURhcmtBcHBl
YXJhbmNlKCkgOiBmYWxzZSk7CisgICAgTG9jYWxEZWZhdWx0U3lzdGVtQXBwZWFyYW5jZSBsb2Nh
bEFwcGVhcmFuY2Uodmlldy0+cmVuZGVyVmlldygpLT51c2VEYXJrQXBwZWFyYW5jZSgpKTsKICNl
bmRpZgogCiAgICAgdmlldy0+cGFpbnQoY29udGV4dCwgaW50ZXJzZWN0aW9uKGNvbnRleHQuY2xp
cEJvdW5kcygpLCBlbmNsb3NpbmdJbnRSZWN0KHNyY1JlY3QpKSk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>354183</attachid>
            <date>2018-11-07 17:01:31 -0800</date>
            <delta_ts>2018-11-07 17:14:08 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-191319-20181107170130.patch</filename>
            <type>text/plain</type>
            <size>65620</size>
            <attacher name="Timothy Hatcher">timothy</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM3OTI4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjY3OGM5ZWNkNGIzZGM2
ZDcxMGMyOTFlMDE1YTZjZmYzYzY0ZDZiZS4uZGZkMmFkZWU5NmZiOGYxNWVkZDE3MTUwNjJhNWQ1
YzNhYzkxNGRkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDk0IEBACisyMDE4LTExLTA3ICBUaW1v
dGh5IEhhdGNoZXIgIDx0aW1vdGh5QGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgZXhwZXJpbWVu
dGFsIHN1cHBvcnQgZm9yIGEgYHN1cHBvcnRlZC1jb2xvci1zY2hlbWVzYCBDU1MgcHJvcGVydHku
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTEzMTkK
KyAgICAgICAgcmRhcjovL3Byb2JsZW0vNDU4NTIyNjEKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUZXN0czogY3NzLWRhcmstbW9kZS9wYXJzZS1zdXBw
b3J0ZWQtY29sb3Itc2NoZW1lcy5odG1sCisgICAgICAgICAgICAgICBjc3MtZGFyay1tb2RlL3N1
cHBvcnRlZC1jb2xvci1zY2hlbWVzLWNzcy5odG1sCisKKyAgICAgICAgKiBjc3MvQ1NTQ29tcHV0
ZWRTdHlsZURlY2xhcmF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbXB1dGVkU3R5bGVF
eHRyYWN0b3I6OnZhbHVlRm9yUHJvcGVydHlpblN0eWxlKToKKyAgICAgICAgKiBjc3MvQ1NTUHJv
cGVydGllcy5qc29uOgorICAgICAgICAqIGNzcy9DU1NWYWx1ZUtleXdvcmRzLmluOgorICAgICAg
ICAqIGNzcy9TdHlsZUJ1aWxkZXJDb252ZXJ0ZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxl
QnVpbGRlckNvbnZlcnRlcjo6dmFsdWVUb0NvbG9yU2NoZW1lcyk6CisgICAgICAgIChXZWJDb3Jl
OjpTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRDb2xvclNjaGVtZXMpOgorICAgICAgICAq
IGNzcy9TdHlsZVJlc29sdmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUmVzb2x2ZXI6
OmNvbG9yRnJvbVByaW1pdGl2ZVZhbHVlIGNvbnN0KToKKyAgICAgICAgKiBjc3MvcGFyc2VyL0NT
U1Byb3BlcnR5UGFyc2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNvbnN1bWVTdXBwb3J0ZWRD
b2xvclNjaGVtZXMpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJvcGVydHlQYXJzZXI6OnBhcnNl
U2luZ2xlVmFsdWUpOgorICAgICAgICAqIGRvbS9Eb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpEb2N1bWVudDo6cmVzZXRMaW5rQ29sb3IpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1l
bnQ6OnJlc2V0VmlzaXRlZExpbmtDb2xvcik6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6
cmVzZXRBY3RpdmVMaW5rQ29sb3IpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnByb2Nl
c3NTdXBwb3J0ZWRDb2xvclNjaGVtZXMpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnVz
ZURhcmtBcHBlYXJhbmNlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpzdHls
ZUNvbG9yT3B0aW9ucyBjb25zdCk6CisgICAgICAgICogZG9tL0RvY3VtZW50Lmg6CisgICAgICAg
ICogZWRpdGluZy9jb2NvYS9XZWJDb250ZW50UmVhZGVyQ29jb2EubW06CisgICAgICAgIChXZWJD
b3JlOjpjcmVhdGVGcmFnbWVudCk6CisgICAgICAgICogaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVy
aW5nQ29udGV4dDJELmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc1JlbmRlcmluZ0NvbnRl
eHQyRDo6ZHJhd0ZvY3VzSWZOZWVkZWRJbnRlcm5hbCk6CisgICAgICAgICogaW5zcGVjdG9yL0lu
c3BlY3Rvck92ZXJsYXkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yT3ZlcmxheTo6
cGFpbnQpOgorICAgICAgICAqIHBhZ2UvRnJhbWVWaWV3LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkZyYW1lVmlldzo6dXNlRGFya0FwcGVhcmFuY2UgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
RnJhbWVWaWV3OjpwYWludFNjcm9sbENvcm5lcik6CisgICAgICAgICogcGxhdGZvcm0vbWFjL0Ry
YWdJbWFnZU1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZURyYWdJbWFnZUZvckxpbmsp
OgorICAgICAgICAqIHJlbmRlcmluZy9JbmxpbmVGbG93Qm94LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OklubGluZUZsb3dCb3g6OnBhaW50Qm94RGVjb3JhdGlvbnMpOgorICAgICAgICAqIHJlbmRl
cmluZy9JbmxpbmVUZXh0Qm94LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklubGluZVRleHRCb3g6
OnBhaW50UGxhdGZvcm1Eb2N1bWVudE1hcmtlcik6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRl
ckJveC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3g6OnBhaW50Um9vdEJveEZpbGxM
YXllcnMpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94OjpwYWludEJhY2tncm91bmQpOgor
ICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlckVsZW1lbnQ6OnNlbGVjdGlvbkNvbG9yIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlckVsZW1lbnQ6OnNlbGVjdGlvbkJhY2tncm91bmRDb2xvciBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJFbGVtZW50OjpwYWludEZvY3VzUmluZyk6CisgICAgICAgICogcmVu
ZGVyaW5nL1JlbmRlckltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckltYWdlOjpw
YWludEFyZWFFbGVtZW50Rm9jdXNSaW5nKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5
ZXJCYWNraW5nLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyQmFja2luZzo6cGFp
bnRDb250ZW50cyk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllckNvbXBvc2l0b3I6OnBhaW50Q29udGVu
dHMpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMaXN0Qm94LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlckxpc3RCb3g6OnBhaW50SXRlbUZvcmVncm91bmQpOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyTGlzdEJveDo6cGFpbnRJdGVtQmFja2dyb3VuZCk6CisgICAgICAgICogcmVu
ZGVyaW5nL1JlbmRlck9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJPYmplY3Q6
OnVzZURhcmtBcHBlYXJhbmNlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck9iamVj
dDo6c3R5bGVDb2xvck9wdGlvbnMgY29uc3QpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJP
YmplY3QuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGFibGVDZWxsLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlclRhYmxlQ2VsbDo6cGFpbnRCYWNrZ3JvdW5kc0JlaGluZENlbGwp
OgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUaGVtZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJUaGVtZTo6cGFpbnQpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUaGVtZS5o
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWU6OnVzaW5nRGFya0FwcGVhcmFuY2UgY29u
c3QpOiBEZWxldGVkLgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUaGVtZU1hYy5oOgorICAg
ICAgICAqIHJlbmRlcmluZy9SZW5kZXJUaGVtZU1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlclRoZW1lTWFjOjpkb2N1bWVudFZpZXdGb3IgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyVGhlbWVNYWM6OmFkanVzdE1lbnVMaXN0U3R5bGUgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyVGhlbWVNYWM6OnBhaW50Q2VsbEFuZFNldEZvY3VzZWRFbGVtZW50TmVlZHNS
ZXBhaW50SWZOZWNlc3NhcnkpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVNYWM6OnBh
aW50U2xpZGVyVGh1bWIpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVNYWM6OnVzaW5n
RGFya0FwcGVhcmFuY2UgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIHJlbmRlcmluZy9zdHls
ZS9SZW5kZXJTdHlsZS5oOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OnN1cHBvcnRl
ZENvbG9yU2NoZW1lcyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6c2V0
U3VwcG9ydGVkQ29sb3JTY2hlbWVzKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjpp
bml0aWFsU3VwcG9ydGVkQ29sb3JTY2hlbWVzKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUv
UmVuZGVyU3R5bGVDb25zdGFudHMuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvU3R5bGVS
YXJlSW5oZXJpdGVkRGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJhcmVJbmhlcml0
ZWREYXRhOjpTdHlsZVJhcmVJbmhlcml0ZWREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxl
UmFyZUluaGVyaXRlZERhdGE6Om9wZXJhdG9yPT0gY29uc3QpOgorICAgICAgICAqIHJlbmRlcmlu
Zy9zdHlsZS9TdHlsZVJhcmVJbmhlcml0ZWREYXRhLmg6CisgICAgICAgICogc3ZnL2dyYXBoaWNz
L1NWR0ltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ltYWdlOjpkcmF3KToKKwogMjAx
OC0xMS0wNyAgU2ltb24gRnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KIAogICAgICAg
ICBUaWxlQ29udHJvbGxlcjo6dGlsZVNpemUoKSBzaG91bGQgbm90IGhhdmUgc2lkZSBlZmZlY3Rz
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hh
bmdlTG9nCmluZGV4IDZmZjJmZDFlMmYzZmJiM2E3Y2MxN2Q1MTNjM2NkZDhkYjU3OWE4ZDYuLjRj
Mjg0Y2EyNWE3YTgyY2I1MWM1MzliODRmOWJkY2M5YzVmNmQ1M2UgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMTYgQEAKKzIwMTgtMTEtMDcgIFRpbW90aHkgSGF0Y2hlciAgPHRpbW90aHlAYXBwbGUuY29t
PgorCisgICAgICAgIEFkZCBleHBlcmltZW50YWwgc3VwcG9ydCBmb3IgYSBgc3VwcG9ydGVkLWNv
bG9yLXNjaGVtZXNgIENTUyBwcm9wZXJ0eS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE5MTMxOQorICAgICAgICByZGFyOi8vcHJvYmxlbS80NTg1MjI2
MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2Vi
UHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9ET00vSW5qZWN0ZWRCdW5kbGVSYW5nZUhhbmRsZS5jcHA6
CisgICAgICAgIChXZWJLaXQ6OkluamVjdGVkQnVuZGxlUmFuZ2VIYW5kbGU6OnJlbmRlcmVkSW1h
Z2UpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6V2ViUGFnZTo6ZHJhd1JlY3QpOgorCiAyMDE4LTExLTA3ICBaYW1pdWwgSGFxdWUg
IDx6aGFxdWVAYXBwbGUuY29tPgogCiAgICAgICAgIEZvcmNlIGEgZ3JlZ29yaWFuIGNhbGVuZGFy
IHRvIHNob3cgZm9yIGNyZWRpdCBjYXJkIGV4cGlyYXRpb24gZGF0ZSBpbnB1dHMKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwIGIv
U291cmNlL1dlYkNvcmUvY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHAKaW5kZXgg
MmVmNjYyOTU5YTk0YzdlZGZiOTlkMjhmNzkzZmI3YTBlNWZmYjY3NS4uZWNiNzViMzgxMzdjZjc4
MGYzNmZkYWJkZTY2MWY5ZmI0YzY2MDYyMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3Nz
L0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3Nz
L0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHAKQEAgLTQ0OCw2ICs0NDgsOSBAQCBzdGF0
aWMgY29uc3QgQ1NTUHJvcGVydHlJRCBjb21wdXRlZFByb3BlcnRpZXNbXSA9IHsKICAgICBDU1NQ
cm9wZXJ0eVN0cm9rZU1pdGVybGltaXQsCiAgICAgQ1NTUHJvcGVydHlTdHJva2VPcGFjaXR5LAog
ICAgIENTU1Byb3BlcnR5U3Ryb2tlV2lkdGgsCisjaWYgRU5BQkxFKERBUktfTU9ERV9DU1MpCisg
ICAgQ1NTUHJvcGVydHlTdXBwb3J0ZWRDb2xvclNjaGVtZXMsCisjZW5kaWYKICAgICBDU1NQcm9w
ZXJ0eUFsaWdubWVudEJhc2VsaW5lLAogICAgIENTU1Byb3BlcnR5QmFzZWxpbmVTaGlmdCwKICAg
ICBDU1NQcm9wZXJ0eURvbWluYW50QmFzZWxpbmUsCkBAIC0zOTY5LDYgKzM5NzIsMjQgQEAgUmVm
UHRyPENTU1ZhbHVlPiBDb21wdXRlZFN0eWxlRXh0cmFjdG9yOjp2YWx1ZUZvclByb3BlcnR5aW5T
dHlsZShjb25zdCBSZW5kZXJTdHkKICAgICAgICAgICAgIHJldHVybiBjc3NWYWx1ZVBvb2wuY3Jl
YXRlVmFsdWUoc3R5bGUuYXBwbGVQYXlCdXR0b25UeXBlKCkpOwogI2VuZGlmCiAKKyNpZiBFTkFC
TEUoREFSS19NT0RFX0NTUykKKyAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eVN1cHBvcnRlZENvbG9y
U2NoZW1lczogeworICAgICAgICAgICAgYXV0byBzdXBwb3J0ZWRDb2xvclNjaGVtZXMgPSBzdHls
ZS5zdXBwb3J0ZWRDb2xvclNjaGVtZXMoKTsKKyAgICAgICAgICAgIGlmIChzdXBwb3J0ZWRDb2xv
clNjaGVtZXMuaXNFbXB0eSgpKQorICAgICAgICAgICAgICAgIHJldHVybiBjc3NWYWx1ZVBvb2wu
Y3JlYXRlSWRlbnRpZmllclZhbHVlKENTU1ZhbHVlQXV0byk7CisKKyAgICAgICAgICAgIGF1dG8g
bGlzdCA9IENTU1ZhbHVlTGlzdDo6Y3JlYXRlU3BhY2VTZXBhcmF0ZWQoKTsKKyAgICAgICAgICAg
IGlmIChzdXBwb3J0ZWRDb2xvclNjaGVtZXMgJiBDb2xvclNjaGVtZXM6OkxpZ2h0KQorICAgICAg
ICAgICAgICAgIGxpc3QtPmFwcGVuZChjc3NWYWx1ZVBvb2wuY3JlYXRlSWRlbnRpZmllclZhbHVl
KENTU1ZhbHVlTGlnaHQpKTsKKyAgICAgICAgICAgIGlmIChzdXBwb3J0ZWRDb2xvclNjaGVtZXMg
JiBDb2xvclNjaGVtZXM6OkRhcmspCisgICAgICAgICAgICAgICAgbGlzdC0+YXBwZW5kKGNzc1Zh
bHVlUG9vbC5jcmVhdGVJZGVudGlmaWVyVmFsdWUoQ1NTVmFsdWVEYXJrKSk7CisgICAgICAgICAg
ICBpZiAoc3VwcG9ydGVkQ29sb3JTY2hlbWVzICYgQ29sb3JTY2hlbWVzOjpPbmx5KQorICAgICAg
ICAgICAgICAgIGxpc3QtPmFwcGVuZChjc3NWYWx1ZVBvb2wuY3JlYXRlSWRlbnRpZmllclZhbHVl
KENTU1ZhbHVlT25seSkpOworICAgICAgICAgICAgQVNTRVJUKGxpc3QtPmxlbmd0aCgpKTsKKyAg
ICAgICAgICAgIHJldHVybiBXVEZNb3ZlKGxpc3QpOworICAgICAgICB9CisjZW5kaWYKKwogICAg
ICAgICAvKiBJbmRpdmlkdWFsIHByb3BlcnRpZXMgbm90IHBhcnQgb2YgdGhlIHNwZWMgKi8KICAg
ICAgICAgY2FzZSBDU1NQcm9wZXJ0eUJhY2tncm91bmRSZXBlYXRYOgogICAgICAgICBjYXNlIENT
U1Byb3BlcnR5QmFja2dyb3VuZFJlcGVhdFk6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTUHJvcGVydGllcy5qc29uIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1Byb3BlcnRpZXMu
anNvbgppbmRleCAyOGQ4NDgyZDY2Y2Y4NDgzMWYzNjg3ZjZjYWY4ZDE5OWY0NjIwZTcwLi45ZTZl
Yjc0MTZiMmZhOTJjZDdkM2IyNDg0MTVjMmJiZWY0MjYzNTNkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTUHJvcGVydGllcy5qc29uCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NQcm9wZXJ0aWVzLmpzb24KQEAgLTU3MTIsNiArNTcxMiwyMiBAQAogICAgICAgICAgICAgfSwK
ICAgICAgICAgICAgICJzdGF0dXMiOiAibm9uLXN0YW5kYXJkIgogICAgICAgICB9LAorICAgICAg
ICAic3VwcG9ydGVkLWNvbG9yLXNjaGVtZXMiOiB7CisgICAgICAgICAgICAiaW5oZXJpdGVkIjog
dHJ1ZSwKKyAgICAgICAgICAgICJ2YWx1ZXMiOiBbCisgICAgICAgICAgICAgICAgImF1dG8iLAor
ICAgICAgICAgICAgICAgICJsaWdodCIsCisgICAgICAgICAgICAgICAgImRhcmsiLAorICAgICAg
ICAgICAgICAgICJvbmx5IgorICAgICAgICAgICAgXSwKKyAgICAgICAgICAgICJjb2RlZ2VuLXBy
b3BlcnRpZXMiOiB7CisgICAgICAgICAgICAgICAgImNvbnZlcnRlciI6ICJDb2xvclNjaGVtZXMi
LAorICAgICAgICAgICAgICAgICJlbmFibGUtaWYiOiAiRU5BQkxFX0RBUktfTU9ERV9DU1MiCisg
ICAgICAgICAgICB9LAorICAgICAgICAgICAgInN0YXR1cyI6IHsKKyAgICAgICAgICAgICAgICAi
c3RhdHVzIjogIm5vbi1zdGFuZGFyZCIKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSwKICAgICAg
ICAgIm9yZGVyIjogewogICAgICAgICAgICAgImNvZGVnZW4tcHJvcGVydGllcyI6IHsKICAgICAg
ICAgICAgICAgICAiYWxpYXNlcyI6IFsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NWYWx1ZUtleXdvcmRzLmluIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ZhbHVlS2V5d29yZHMu
aW4KaW5kZXggOTBmOTEyYWNlYjU1YTFhZmRiYWFiMDk1YjYyZmJjNTRhYmIzZDI1NC4uODZiNWU1
OTE0ZjQwZTczYWZiMTQ5NTIxODQzYTRlYzk3Yzg2MTAxOCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvY3NzL0NTU1ZhbHVlS2V5d29yZHMuaW4KKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NT
U1ZhbHVlS2V5d29yZHMuaW4KQEAgLTEzODQsNiArMTM4NCwxMSBAQCBuby1wcmVmZXJlbmNlCiBs
aWdodAogZGFyawogLy8gbm8tcHJlZmVyZW5jZQorCisvLyBzdXBwb3J0ZWQtY29sb3Itc2NoZW1l
cworb25seQorLy8gbGlnaHQKKy8vIGRhcmsKICNlbmRpZgogCiAvLyBhdXRvLXJlcGVhdApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlQnVpbGRlckNvbnZlcnRlci5oIGIvU291
cmNlL1dlYkNvcmUvY3NzL1N0eWxlQnVpbGRlckNvbnZlcnRlci5oCmluZGV4IDBlODM4YmI1ZDhk
ZjAzMzU2NDM4MmQ1NGYyYzMxOGExZmYxMjM4NzguLjBiNjZkZDY3NzM2OWMyZTQ1NjdmYzc1ZTM0
YWFkZWMxYTA3Y2EzZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZUJ1aWxk
ZXJDb252ZXJ0ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVCdWlsZGVyQ29udmVy
dGVyLmgKQEAgLTc3LDYgKzc3LDkgQEAgcHVibGljOgogICAgIHRlbXBsYXRlPENTU1Byb3BlcnR5
SUQ+IHN0YXRpYyBOaW5lUGllY2VJbWFnZSBjb252ZXJ0Qm9yZGVyTWFzayhTdHlsZVJlc29sdmVy
JiwgQ1NTVmFsdWUmKTsKICAgICB0ZW1wbGF0ZTxDU1NQcm9wZXJ0eUlEPiBzdGF0aWMgUmVmUHRy
PFN0eWxlSW1hZ2U+IGNvbnZlcnRTdHlsZUltYWdlKFN0eWxlUmVzb2x2ZXImLCBDU1NWYWx1ZSYp
OwogICAgIHN0YXRpYyBUcmFuc2Zvcm1PcGVyYXRpb25zIGNvbnZlcnRUcmFuc2Zvcm0oU3R5bGVS
ZXNvbHZlciYsIGNvbnN0IENTU1ZhbHVlJik7CisjaWYgRU5BQkxFKERBUktfTU9ERV9DU1MpCisg
ICAgc3RhdGljIE9wdGlvblNldDxDb2xvclNjaGVtZXM+IGNvbnZlcnRDb2xvclNjaGVtZXMoU3R5
bGVSZXNvbHZlciYsIGNvbnN0IENTU1ZhbHVlJik7CisjZW5kaWYKICAgICBzdGF0aWMgU3RyaW5n
IGNvbnZlcnRTdHJpbmcoU3R5bGVSZXNvbHZlciYsIGNvbnN0IENTU1ZhbHVlJik7CiAgICAgc3Rh
dGljIFN0cmluZyBjb252ZXJ0U3RyaW5nT3JBdXRvKFN0eWxlUmVzb2x2ZXImLCBjb25zdCBDU1NW
YWx1ZSYpOwogICAgIHN0YXRpYyBTdHJpbmcgY29udmVydFN0cmluZ09yTm9uZShTdHlsZVJlc29s
dmVyJiwgY29uc3QgQ1NTVmFsdWUmKTsKQEAgLTE2NSw2ICsxNjgsMTAgQEAgcHJpdmF0ZToKICAg
ICBzdGF0aWMgTGVuZ3RoIHBhcnNlU25hcENvb3JkaW5hdGUoU3R5bGVSZXNvbHZlciYsIGNvbnN0
IENTU1ZhbHVlJik7CiAjZW5kaWYKIAorI2lmIEVOQUJMRShEQVJLX01PREVfQ1NTKQorICAgIHN0
YXRpYyBPcHRpb25TZXQ8Q29sb3JTY2hlbWVzPiB2YWx1ZVRvQ29sb3JTY2hlbWVzKGNvbnN0IENT
U1ByaW1pdGl2ZVZhbHVlJik7CisjZW5kaWYKKwogICAgIHN0YXRpYyBMZW5ndGggY29udmVydFRv
MTAwUGVyY2VudE1pbnVzTGVuZ3RoKGNvbnN0IExlbmd0aCYpOwogICAgIHRlbXBsYXRlPENTU1Zh
bHVlSUQsIENTU1ZhbHVlSUQ+IHN0YXRpYyBMZW5ndGggY29udmVydFBvc2l0aW9uQ29tcG9uZW50
KFN0eWxlUmVzb2x2ZXImLCBjb25zdCBDU1NQcmltaXRpdmVWYWx1ZSYpOwogCkBAIC00NTMsNiAr
NDYwLDQxIEBAIGlubGluZSBUcmFuc2Zvcm1PcGVyYXRpb25zIFN0eWxlQnVpbGRlckNvbnZlcnRl
cjo6Y29udmVydFRyYW5zZm9ybShTdHlsZVJlc29sdmVyCiAgICAgcmV0dXJuIG9wZXJhdGlvbnM7
CiB9CiAKK2lubGluZSBPcHRpb25TZXQ8Q29sb3JTY2hlbWVzPiBTdHlsZUJ1aWxkZXJDb252ZXJ0
ZXI6OnZhbHVlVG9Db2xvclNjaGVtZXMoY29uc3QgQ1NTUHJpbWl0aXZlVmFsdWUmIHByaW1pdGl2
ZVZhbHVlKQoreworICAgIEFTU0VSVChwcmltaXRpdmVWYWx1ZS5pc1ZhbHVlSUQoKSk7CisKKyAg
ICBzd2l0Y2ggKHByaW1pdGl2ZVZhbHVlLnZhbHVlSUQoKSkgeworICAgIGNhc2UgQ1NTVmFsdWVB
dXRvOgorICAgICAgICByZXR1cm4geyB9OworICAgIGNhc2UgQ1NTVmFsdWVPbmx5OgorICAgICAg
ICByZXR1cm4gQ29sb3JTY2hlbWVzOjpPbmx5OworICAgIGNhc2UgQ1NTVmFsdWVMaWdodDoKKyAg
ICAgICAgcmV0dXJuIENvbG9yU2NoZW1lczo6TGlnaHQ7CisgICAgY2FzZSBDU1NWYWx1ZURhcms6
CisgICAgICAgIHJldHVybiBDb2xvclNjaGVtZXM6OkRhcms7CisgICAgZGVmYXVsdDoKKyAgICAg
ICAgLy8gVW5rbm93biBpZGVudGlmaWVycyBhcmUgYWxsb3dlZCBhbmQgaWdub3JlZC4KKyAgICAg
ICAgcmV0dXJuIHsgfTsKKyAgICB9Cit9CisKK2lubGluZSBPcHRpb25TZXQ8Q29sb3JTY2hlbWVz
PiBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRDb2xvclNjaGVtZXMoU3R5bGVSZXNvbHZl
ciYsIGNvbnN0IENTU1ZhbHVlJiB2YWx1ZSkKK3sKKyAgICBPcHRpb25TZXQ8Q29sb3JTY2hlbWVz
PiBjb2xvclNjaGVtZXM7CisgICAgaWYgKGlzPENTU1ZhbHVlTGlzdD4odmFsdWUpKSB7CisgICAg
ICAgIGZvciAoYXV0byYgY3VycmVudFZhbHVlIDogZG93bmNhc3Q8Q1NTVmFsdWVMaXN0Pih2YWx1
ZSkpCisgICAgICAgICAgICBjb2xvclNjaGVtZXMuYWRkKHZhbHVlVG9Db2xvclNjaGVtZXMoZG93
bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KGN1cnJlbnRWYWx1ZS5nZXQoKSkpKTsKKyAgICB9IGVs
c2UgaWYgKGlzPENTU1ByaW1pdGl2ZVZhbHVlPih2YWx1ZSkpCisgICAgICAgIGNvbG9yU2NoZW1l
cyA9IHZhbHVlVG9Db2xvclNjaGVtZXMoZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KHZhbHVl
KSk7CisKKyAgICAvLyBJZiB0aGUgdmFsdWUgd2FzIGp1c3QgIm9ubHkiLCB0aGF0IGlzIHN5bm9u
eW1vdXMgZm9yICJvbmx5IGxpZ2h0Ii4KKyAgICBpZiAoY29sb3JTY2hlbWVzID09IENvbG9yU2No
ZW1lczo6T25seSkKKyAgICAgICAgY29sb3JTY2hlbWVzLmFkZChDb2xvclNjaGVtZXM6OkxpZ2h0
KTsKKworICAgIHJldHVybiBjb2xvclNjaGVtZXM7Cit9CisKIGlubGluZSBTdHJpbmcgU3R5bGVC
dWlsZGVyQ29udmVydGVyOjpjb252ZXJ0U3RyaW5nKFN0eWxlUmVzb2x2ZXImLCBjb25zdCBDU1NW
YWx1ZSYgdmFsdWUpCiB7CiAgICAgcmV0dXJuIGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPih2
YWx1ZSkuc3RyaW5nVmFsdWUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHls
ZVJlc29sdmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmNwcAppbmRl
eCA3NWIwYjhkNDFhMjk0NGRjMDhlMTRjNTVjZTgxNjhmMmViYjgwMWQ3Li4yNGIwNmJlYzkzMzdl
MTZiYjhhYjdmMjRkZWY5MDlhNzhhNTI4M2JlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9j
c3MvU3R5bGVSZXNvbHZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2
ZXIuY3BwCkBAIC0xODQxLDE0ICsxODQxLDE0IEBAIENvbG9yIFN0eWxlUmVzb2x2ZXI6OmNvbG9y
RnJvbVByaW1pdGl2ZVZhbHVlKGNvbnN0IENTU1ByaW1pdGl2ZVZhbHVlJiB2YWx1ZSwgYm9vCiAg
ICAgY2FzZSBDU1NWYWx1ZVdlYmtpdEFjdGl2ZWxpbms6CiAgICAgICAgIHJldHVybiBkb2N1bWVu
dCgpLmFjdGl2ZUxpbmtDb2xvcigpOwogICAgIGNhc2UgQ1NTVmFsdWVXZWJraXRGb2N1c1JpbmdD
b2xvcjoKLSAgICAgICAgcmV0dXJuIFJlbmRlclRoZW1lOjpmb2N1c1JpbmdDb2xvcihkb2N1bWVu
dCgpLnN0eWxlQ29sb3JPcHRpb25zKCkpOworICAgICAgICByZXR1cm4gUmVuZGVyVGhlbWU6OmZv
Y3VzUmluZ0NvbG9yKGRvY3VtZW50KCkuc3R5bGVDb2xvck9wdGlvbnMobV9zdGF0ZS5zdHlsZSgp
KSk7CiAgICAgY2FzZSBDU1NWYWx1ZUN1cnJlbnRjb2xvcjoKICAgICAgICAgLy8gQ29sb3IgaXMg
YW4gaW5oZXJpdGVkIHByb3BlcnR5IHNvIGRlcGVuZGluZyBvbiBpdCBlZmZlY3RpdmVseSBtYWtl
cyB0aGUgcHJvcGVydHkgaW5oZXJpdGVkLgogICAgICAgICAvLyBGSVhNRTogU2V0dGluZyB0aGUg
ZmxhZyBhcyBhIHNpZGUgZWZmZWN0IG9mIGNhbGxpbmcgdGhpcyBmdW5jdGlvbiBpcyBhIGJpdCBv
YmxpcXVlLiBDYW4gd2UgZG8gYmV0dGVyPwogICAgICAgICBtX3N0YXRlLnN0eWxlKCktPnNldEhh
c0V4cGxpY2l0bHlJbmhlcml0ZWRQcm9wZXJ0aWVzKCk7CiAgICAgICAgIHJldHVybiBtX3N0YXRl
LnN0eWxlKCktPmNvbG9yKCk7CiAgICAgZGVmYXVsdDoKLSAgICAgICAgcmV0dXJuIFN0eWxlQ29s
b3I6OmNvbG9yRnJvbUtleXdvcmQoaWRlbnRpZmllciwgZG9jdW1lbnQoKS5zdHlsZUNvbG9yT3B0
aW9ucygpKTsKKyAgICAgICAgcmV0dXJuIFN0eWxlQ29sb3I6OmNvbG9yRnJvbUtleXdvcmQoaWRl
bnRpZmllciwgZG9jdW1lbnQoKS5zdHlsZUNvbG9yT3B0aW9ucyhtX3N0YXRlLnN0eWxlKCkpKTsK
ICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUHJv
cGVydHlQYXJzZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQcm9wZXJ0eVBh
cnNlci5jcHAKaW5kZXggZDNhMDQ3N2E3NDMyMmZhMjYyYTE2OTExYTczMThiNmI2OGJkN2E3My4u
MzJmZGJjNDVmODY5NGZhNTY0NzA2NTRiNDI4ZTFjZWE3Y2UyYmZjOSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQcm9wZXJ0eVBhcnNlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQcm9wZXJ0eVBhcnNlci5jcHAKQEAgLTM3NDcsNyArMzc0
Nyw1MSBAQCBzdGF0aWMgUmVmUHRyPENTU1ZhbHVlPiBjb25zdW1lVGV4dEVtcGhhc2lzUG9zaXRp
b24oQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UpCiAgICAgICAgIGxpc3QtPmFwcGVuZChDU1NW
YWx1ZVBvb2w6OnNpbmdsZXRvbigpLmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShsZWZ0UmlnaHRWYWx1
ZUlEKSk7CiAgICAgcmV0dXJuIGxpc3Q7CiB9Ci0gICAgCisKKyNpZiBFTkFCTEUoREFSS19NT0RF
X0NTUykKKworc3RhdGljIFJlZlB0cjxDU1NWYWx1ZT4gY29uc3VtZVN1cHBvcnRlZENvbG9yU2No
ZW1lcyhDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSkKK3sKKyAgICBpZiAoaXNBdXRvKHJhbmdl
LnBlZWsoKS5pZCgpKSkKKyAgICAgICAgcmV0dXJuIGNvbnN1bWVJZGVudChyYW5nZSk7CisKKyAg
ICBWZWN0b3I8Q1NTVmFsdWVJRCwgMz4gaWRlbnRpZmllcnM7CisKKyAgICB3aGlsZSAoIXJhbmdl
LmF0RW5kKCkpIHsKKyAgICAgICAgaWYgKHJhbmdlLnBlZWsoKS50eXBlKCkgIT0gSWRlbnRUb2tl
bikKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgICAgIENTU1ZhbHVlSUQgaWQg
PSByYW5nZS5wZWVrKCkuaWQoKTsKKworICAgICAgICBzd2l0Y2ggKGlkKSB7CisgICAgICAgIGNh
c2UgQ1NTVmFsdWVBdXRvOgorICAgICAgICAgICAgLy8gQXV0byBpcyBvbmx5IGFsbG93ZWQgYXMg
YSBzaW5nbGUgdmFsdWUsIGFuZCB3YXMgaGFuZGxlZCBlYXJsaWVyLgorICAgICAgICAgICAgLy8g
RG9uJ3QgYWxsb3cgaXQgaW4gdGhlIGxpc3QuCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsK
KworICAgICAgICBjYXNlIENTU1ZhbHVlT25seToKKyAgICAgICAgY2FzZSBDU1NWYWx1ZUxpZ2h0
OgorICAgICAgICBjYXNlIENTU1ZhbHVlRGFyazoKKyAgICAgICAgICAgIGlmICghaWRlbnRpZmll
cnMuYXBwZW5kSWZOb3RDb250YWlucyhpZCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIG51bGxw
dHI7CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAg
Ly8gVW5rbm93biBpZGVudGlmaWVycyBhcmUgYWxsb3dlZCBhbmQgaWdub3JlZC4KKyAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICB9CisKKyAgICAgICAgcmFuZ2UuY29uc3VtZUluY2x1ZGluZ1do
aXRlc3BhY2UoKTsKKyAgICB9CisKKyAgICBSZWZQdHI8Q1NTVmFsdWVMaXN0PiBsaXN0ID0gQ1NT
VmFsdWVMaXN0OjpjcmVhdGVTcGFjZVNlcGFyYXRlZCgpOworICAgIGZvciAoYXV0byBpZCA6IGlk
ZW50aWZpZXJzKQorICAgICAgICBsaXN0LT5hcHBlbmQoQ1NTVmFsdWVQb29sOjpzaW5nbGV0b24o
KS5jcmVhdGVJZGVudGlmaWVyVmFsdWUoaWQpKTsKKyAgICByZXR1cm4gbGlzdDsKK30KKworI2Vu
ZGlmCisKICNpZiBFTkFCTEUoREFTSEJPQVJEX1NVUFBPUlQpCiAKIHN0YXRpYyBSZWZQdHI8Q1NT
VmFsdWU+IGNvbnN1bWVXZWJraXREYXNoYm9hcmRSZWdpb24oQ1NTUGFyc2VyVG9rZW5SYW5nZSYg
cmFuZ2UsIENTU1BhcnNlck1vZGUgbW9kZSkKQEAgLTQyODksNiArNDMzMywxMCBAQCBSZWZQdHI8
Q1NTVmFsdWU+IENTU1Byb3BlcnR5UGFyc2VyOjpwYXJzZVNpbmdsZVZhbHVlKENTU1Byb3BlcnR5
SUQgcHJvcGVydHksIENTUwogICAgICAgICByZXR1cm4gY29uc3VtZVdlYmtpdEFzcGVjdFJhdGlv
KG1fcmFuZ2UpOwogICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRUZXh0RW1waGFzaXNQb3NpdGlv
bjoKICAgICAgICAgcmV0dXJuIGNvbnN1bWVUZXh0RW1waGFzaXNQb3NpdGlvbihtX3JhbmdlKTsK
KyNpZiBFTkFCTEUoREFSS19NT0RFX0NTUykKKyAgICBjYXNlIENTU1Byb3BlcnR5U3VwcG9ydGVk
Q29sb3JTY2hlbWVzOgorICAgICAgICByZXR1cm4gY29uc3VtZVN1cHBvcnRlZENvbG9yU2NoZW1l
cyhtX3JhbmdlKTsKKyNlbmRpZgogI2lmIEVOQUJMRShEQVNIQk9BUkRfU1VQUE9SVCkKICAgICBj
YXNlIENTU1Byb3BlcnR5V2Via2l0RGFzaGJvYXJkUmVnaW9uOgogICAgICAgICByZXR1cm4gY29u
c3VtZVdlYmtpdERhc2hib2FyZFJlZ2lvbihtX3JhbmdlLCBtX2NvbnRleHQubW9kZSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUv
ZG9tL0RvY3VtZW50LmNwcAppbmRleCAxZTZiYzRiYzViYTAzZDlhY2RkNDEwNTUyODdlOWIwNjBj
MjU0OWM1Li41MzAwY2Q2ZjQyNGI4ZTcxYzRjYTVkOWQyZjZhODgwNTI2NTQ3ODk1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Eb2N1bWVudC5jcHAKQEAgLTgxNywxNyArODE3LDE3IEBAIFN0cmluZyBEb2N1bWVudDo6
Y29tcGF0TW9kZSgpIGNvbnN0CiAKIHZvaWQgRG9jdW1lbnQ6OnJlc2V0TGlua0NvbG9yKCkKIHsK
LSAgICBtX2xpbmtDb2xvciA9IFN0eWxlQ29sb3I6OmNvbG9yRnJvbUtleXdvcmQoQ1NTVmFsdWVX
ZWJraXRMaW5rLCBzdHlsZUNvbG9yT3B0aW9ucygpKTsKKyAgICBtX2xpbmtDb2xvciA9IFN0eWxl
Q29sb3I6OmNvbG9yRnJvbUtleXdvcmQoQ1NTVmFsdWVXZWJraXRMaW5rLCBzdHlsZUNvbG9yT3B0
aW9ucyhudWxscHRyKSk7CiB9CiAKIHZvaWQgRG9jdW1lbnQ6OnJlc2V0VmlzaXRlZExpbmtDb2xv
cigpCiB7Ci0gICAgbV92aXNpdGVkTGlua0NvbG9yID0gU3R5bGVDb2xvcjo6Y29sb3JGcm9tS2V5
d29yZChDU1NWYWx1ZVdlYmtpdExpbmssIHN0eWxlQ29sb3JPcHRpb25zKCkgfCBTdHlsZUNvbG9y
OjpPcHRpb25zOjpGb3JWaXNpdGVkTGluayk7CisgICAgbV92aXNpdGVkTGlua0NvbG9yID0gU3R5
bGVDb2xvcjo6Y29sb3JGcm9tS2V5d29yZChDU1NWYWx1ZVdlYmtpdExpbmssIHN0eWxlQ29sb3JP
cHRpb25zKG51bGxwdHIpIHwgU3R5bGVDb2xvcjo6T3B0aW9uczo6Rm9yVmlzaXRlZExpbmspOwog
fQogCiB2b2lkIERvY3VtZW50OjpyZXNldEFjdGl2ZUxpbmtDb2xvcigpCiB7Ci0gICAgbV9hY3Rp
dmVMaW5rQ29sb3IgPSBTdHlsZUNvbG9yOjpjb2xvckZyb21LZXl3b3JkKENTU1ZhbHVlV2Via2l0
QWN0aXZlbGluaywgc3R5bGVDb2xvck9wdGlvbnMoKSk7CisgICAgbV9hY3RpdmVMaW5rQ29sb3Ig
PSBTdHlsZUNvbG9yOjpjb2xvckZyb21LZXl3b3JkKENTU1ZhbHVlV2Via2l0QWN0aXZlbGluaywg
c3R5bGVDb2xvck9wdGlvbnMobnVsbHB0cikpOwogfQogCiBET01JbXBsZW1lbnRhdGlvbiYgRG9j
dW1lbnQ6OmltcGxlbWVudGF0aW9uKCkKQEAgLTM1OTAsMTUgKzM1OTAsMjggQEAgc3RhdGljIHZv
aWQgcHJvY2Vzc0NvbG9yU2NoZW1lcyhTdHJpbmdWaWV3IGNvbG9yU2NoZW1lcywgY29uc3QgV1RG
OjpGdW5jdGlvbjx2b2kKIHZvaWQgRG9jdW1lbnQ6OnByb2Nlc3NTdXBwb3J0ZWRDb2xvclNjaGVt
ZXMoY29uc3QgU3RyaW5nJiBjb2xvclNjaGVtZXMpCiB7CiAgICAgT3B0aW9uU2V0PENvbG9yU2No
ZW1lcz4gc3VwcG9ydGVkQ29sb3JTY2hlbWVzOworICAgIGJvb2wgYXV0b0VuY291bnRlcmVkID0g
ZmFsc2U7CisKKyAgICBwcm9jZXNzQ29sb3JTY2hlbWVzKGNvbG9yU2NoZW1lcywgWyZzdXBwb3J0
ZWRDb2xvclNjaGVtZXMsICZhdXRvRW5jb3VudGVyZWRdKFN0cmluZ1ZpZXcga2V5KSB7CisgICAg
ICAgIGlmIChlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShrZXksICJhdXRvIikpIHsKKyAg
ICAgICAgICAgIHN1cHBvcnRlZENvbG9yU2NoZW1lcyA9IHsgfTsKKyAgICAgICAgICAgIGF1dG9F
bmNvdW50ZXJlZCA9IHRydWU7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAg
ICAgICBpZiAoYXV0b0VuY291bnRlcmVkKQorICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgcHJv
Y2Vzc0NvbG9yU2NoZW1lcyhjb2xvclNjaGVtZXMsIFsmc3VwcG9ydGVkQ29sb3JTY2hlbWVzXShT
dHJpbmdWaWV3IGtleSkgewogICAgICAgICBpZiAoZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNh
c2Uoa2V5LCAibGlnaHQiKSkKICAgICAgICAgICAgIHN1cHBvcnRlZENvbG9yU2NoZW1lcy5hZGQo
Q29sb3JTY2hlbWVzOjpMaWdodCk7CiAgICAgICAgIGVsc2UgaWYgKGVxdWFsTGV0dGVyc0lnbm9y
aW5nQVNDSUlDYXNlKGtleSwgImRhcmsiKSkKICAgICAgICAgICAgIHN1cHBvcnRlZENvbG9yU2No
ZW1lcy5hZGQoQ29sb3JTY2hlbWVzOjpEYXJrKTsKKyAgICAgICAgZWxzZSBpZiAoZXF1YWxMZXR0
ZXJzSWdub3JpbmdBU0NJSUNhc2Uoa2V5LCAib25seSIpKQorICAgICAgICAgICAgc3VwcG9ydGVk
Q29sb3JTY2hlbWVzLmFkZChDb2xvclNjaGVtZXM6Ok9ubHkpOwogICAgIH0pOwogCi0gICAgaWYg
KHN1cHBvcnRlZENvbG9yU2NoZW1lcy5pc0VtcHR5KCkpCisgICAgLy8gSWYgdGhlIHZhbHVlIHdh
cyBqdXN0ICJvbmx5IiwgdGhhdCBpcyBzeW5vbnltb3VzIGZvciAib25seSBsaWdodCIuCisgICAg
aWYgKHN1cHBvcnRlZENvbG9yU2NoZW1lcyA9PSBDb2xvclNjaGVtZXM6Ok9ubHkpCiAgICAgICAg
IHN1cHBvcnRlZENvbG9yU2NoZW1lcy5hZGQoQ29sb3JTY2hlbWVzOjpMaWdodCk7CiAKICAgICBt
X3N1cHBvcnRlZENvbG9yU2NoZW1lcyA9IHN1cHBvcnRlZENvbG9yU2NoZW1lczsKQEAgLTcyODEs
MTAgKzcyOTQsMTYgQEAgYm9vbCBEb2N1bWVudDo6dXNlU3lzdGVtQXBwZWFyYW5jZSgpIGNvbnN0
CiAgICAgcmV0dXJuIHVzZVN5c3RlbUFwcGVhcmFuY2U7CiB9CiAKLWJvb2wgRG9jdW1lbnQ6OnVz
ZURhcmtBcHBlYXJhbmNlKCkgY29uc3QKK2Jvb2wgRG9jdW1lbnQ6OnVzZURhcmtBcHBlYXJhbmNl
KGNvbnN0IFJlbmRlclN0eWxlKiBzdHlsZSkgY29uc3QKIHsKICNpZiBFTkFCTEUoREFSS19NT0RF
X0NTUykKLSAgICBpZiAobV9zdXBwb3J0ZWRDb2xvclNjaGVtZXMuY29udGFpbnMoQ29sb3JTY2hl
bWVzOjpEYXJrKSAmJiAhbV9zdXBwb3J0ZWRDb2xvclNjaGVtZXMuY29udGFpbnMoQ29sb3JTY2hl
bWVzOjpMaWdodCkpCisgICAgT3B0aW9uU2V0PENvbG9yU2NoZW1lcz4gc3VwcG9ydGVkQ29sb3JT
Y2hlbWVzOworICAgIGlmIChzdHlsZSkKKyAgICAgICAgc3VwcG9ydGVkQ29sb3JTY2hlbWVzID0g
c3R5bGUtPnN1cHBvcnRlZENvbG9yU2NoZW1lcygpOworICAgIGlmIChzdXBwb3J0ZWRDb2xvclNj
aGVtZXMuaXNFbXB0eSgpKQorICAgICAgICBzdXBwb3J0ZWRDb2xvclNjaGVtZXMgPSBtX3N1cHBv
cnRlZENvbG9yU2NoZW1lczsKKworICAgIGlmIChzdXBwb3J0ZWRDb2xvclNjaGVtZXMuY29udGFp
bnMoQ29sb3JTY2hlbWVzOjpEYXJrKSAmJiAhc3VwcG9ydGVkQ29sb3JTY2hlbWVzLmNvbnRhaW5z
KENvbG9yU2NoZW1lczo6TGlnaHQpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKICNlbmRpZgogCkBA
IC03Mjk2LDIxICs3MzE1LDE5IEBAIGJvb2wgRG9jdW1lbnQ6OnVzZURhcmtBcHBlYXJhbmNlKCkg
Y29uc3QKICAgICAgICAgcmV0dXJuIHBhZ2VVc2VzRGFya0FwcGVhcmFuY2U7CiAKICNpZiBFTkFC
TEUoREFSS19NT0RFX0NTUykKLSAgICBpZiAobV9zdXBwb3J0ZWRDb2xvclNjaGVtZXMuY29udGFp
bnMoQ29sb3JTY2hlbWVzOjpEYXJrKSkKKyAgICBpZiAoc3VwcG9ydGVkQ29sb3JTY2hlbWVzLmNv
bnRhaW5zKENvbG9yU2NoZW1lczo6RGFyaykpCiAgICAgICAgIHJldHVybiBwYWdlVXNlc0RhcmtB
cHBlYXJhbmNlOwotCi0gICAgQVNTRVJUKG1fc3VwcG9ydGVkQ29sb3JTY2hlbWVzLmNvbnRhaW5z
KENvbG9yU2NoZW1lczo6TGlnaHQpKTsKICNlbmRpZgogCiAgICAgcmV0dXJuIGZhbHNlOwogfQog
Ci1PcHRpb25TZXQ8U3R5bGVDb2xvcjo6T3B0aW9ucz4gRG9jdW1lbnQ6OnN0eWxlQ29sb3JPcHRp
b25zKCkgY29uc3QKK09wdGlvblNldDxTdHlsZUNvbG9yOjpPcHRpb25zPiBEb2N1bWVudDo6c3R5
bGVDb2xvck9wdGlvbnMoY29uc3QgUmVuZGVyU3R5bGUqIHN0eWxlKSBjb25zdAogewogICAgIE9w
dGlvblNldDxTdHlsZUNvbG9yOjpPcHRpb25zPiBvcHRpb25zOwogICAgIGlmICh1c2VTeXN0ZW1B
cHBlYXJhbmNlKCkpCiAgICAgICAgIG9wdGlvbnMuYWRkKFN0eWxlQ29sb3I6Ok9wdGlvbnM6OlVz
ZVN5c3RlbUFwcGVhcmFuY2UpOwotICAgIGlmICh1c2VEYXJrQXBwZWFyYW5jZSgpKQorICAgIGlm
ICh1c2VEYXJrQXBwZWFyYW5jZShzdHlsZSkpCiAgICAgICAgIG9wdGlvbnMuYWRkKFN0eWxlQ29s
b3I6Ok9wdGlvbnM6OlVzZURhcmtBcHBlYXJhbmNlKTsKICAgICByZXR1cm4gb3B0aW9uczsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oIGIvU291cmNlL1dlYkNv
cmUvZG9tL0RvY3VtZW50LmgKaW5kZXggNmE3MjY1YTliMWJmNzM1ZGNiZWM5MzRiNzdiY2ZmZmEw
MmRhZDVjYS4uNjE4MWNkODNkOTE1Mjk5YjIyNjUzYWI2Njg3YTIwNGVjNWVjZWRiNSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
ZG9tL0RvY3VtZW50LmgKQEAgLTU3OCw5ICs1NzgsOSBAQCBwdWJsaWM6CiAgICAgZmxvYXQgZGV2
aWNlU2NhbGVGYWN0b3IoKSBjb25zdDsKIAogICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgdXNlU3lz
dGVtQXBwZWFyYW5jZSgpIGNvbnN0OwotICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgdXNlRGFya0Fw
cGVhcmFuY2UoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBib29sIHVzZURhcmtBcHBlYXJh
bmNlKGNvbnN0IFJlbmRlclN0eWxlKikgY29uc3Q7CiAKLSAgICBPcHRpb25TZXQ8U3R5bGVDb2xv
cjo6T3B0aW9ucz4gc3R5bGVDb2xvck9wdGlvbnMoKSBjb25zdDsKKyAgICBPcHRpb25TZXQ8U3R5
bGVDb2xvcjo6T3B0aW9ucz4gc3R5bGVDb2xvck9wdGlvbnMoY29uc3QgUmVuZGVyU3R5bGUqKSBj
b25zdDsKIAogICAgIFdFQkNPUkVfRVhQT1JUIFJlZjxSYW5nZT4gY3JlYXRlUmFuZ2UoKTsKIApA
QCAtOTAxLDExICs5MDEsNiBAQCBwdWJsaWM6CiAgICAgdm9pZCBwcm9jZXNzUmVmZXJyZXJQb2xp
Y3koY29uc3QgU3RyaW5nJiBwb2xpY3ksIFJlZmVycmVyUG9saWN5U291cmNlKTsKIAogI2lmIEVO
QUJMRShEQVJLX01PREVfQ1NTKQotICAgIGVudW0gY2xhc3MgQ29sb3JTY2hlbWVzIDogdWludDhf
dCB7Ci0gICAgICAgIExpZ2h0ID0gMSA8PCAwLAotICAgICAgICBEYXJrID0gMSA8PCAxCi0gICAg
fTsKLQogICAgIHZvaWQgcHJvY2Vzc1N1cHBvcnRlZENvbG9yU2NoZW1lcyhjb25zdCBTdHJpbmcm
IGNvbG9yU2NoZW1lcyk7CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9jb2NvYS9XZWJDb250ZW50UmVhZGVyQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL2NvY29hL1dlYkNvbnRlbnRSZWFkZXJDb2NvYS5tbQppbmRleCBhZWZlYjFhZjFmNjkzYzM5
MTJiZGY4ZDY4ZDNmZDlkNWNjNzY1ZmVjLi5kNDIwN2I5Y2YxYzFjZDY4ODQ3M2Q0YmYwOGI0ZWEy
ODAwYjc0NmIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL1dlYkNv
bnRlbnRSZWFkZXJDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL1dl
YkNvbnRlbnRSZWFkZXJDb2NvYS5tbQpAQCAtNTAsNiArNTAsNyBAQAogI2ltcG9ydCAiTUlNRVR5
cGVSZWdpc3RyeS5oIgogI2ltcG9ydCAiUGFnZS5oIgogI2ltcG9ydCAiUHVibGljVVJMTWFuYWdl
ci5oIgorI2ltcG9ydCAiUmVuZGVyVmlldy5oIgogI2ltcG9ydCAiUnVudGltZUVuYWJsZWRGZWF0
dXJlcy5oIgogI2ltcG9ydCAiU2VyaWFsaXplZEF0dGFjaG1lbnREYXRhLmgiCiAjaW1wb3J0ICJT
ZXR0aW5ncy5oIgpAQCAtMTMzLDcgKzEzNCw5IEBAIHN0YXRpYyBGcmFnbWVudEFuZFJlc291cmNl
cyBjcmVhdGVGcmFnbWVudChGcmFtZSYgZnJhbWUsIE5TQXR0cmlidXRlZFN0cmluZyAqc3RyCiAg
ICAgRG9jdW1lbnQmIGRvY3VtZW50ID0gKmZyYW1lLmRvY3VtZW50KCk7CiAKICNpZiBQTEFURk9S
TShNQUMpCi0gICAgTG9jYWxEZWZhdWx0U3lzdGVtQXBwZWFyYW5jZSBsb2NhbEFwcGVhcmFuY2Uo
ZG9jdW1lbnQudXNlRGFya0FwcGVhcmFuY2UoKSk7CisgICAgYXV0byogdmlldyA9IGZyYW1lLnZp
ZXcoKTsKKyAgICBhdXRvKiByZW5kZXJWaWV3ID0gdmlldyA/IHZpZXctPnJlbmRlclZpZXcoKSA6
IG51bGxwdHI7CisgICAgTG9jYWxEZWZhdWx0U3lzdGVtQXBwZWFyYW5jZSBsb2NhbEFwcGVhcmFu
Y2UocmVuZGVyVmlldyA/IHJlbmRlclZpZXctPnVzZURhcmtBcHBlYXJhbmNlKCkgOiBmYWxzZSk7
CiAjZW5kaWYKIAogICAgIE5TQXJyYXkgKnN1YnJlc291cmNlcyA9IG5pbDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuY3Bw
CmluZGV4IGQxNWRlYzQ2MGVkNzU0OGJiNTc2YzE3OTUxNjM5ZDlhMjg3MTYwMzcuLmRhMWM4MGZk
MmZkODExMGQ5ZjU4YzczMjEzYmRjODNiZWJkMDJmN2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcApAQCAtODYs
NyArODYsNyBAQCB2b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6ZHJhd0ZvY3VzSWZOZWVk
ZWRJbnRlcm5hbChjb25zdCBQYXRoJiBwYXRoLCBFbGVtZQogICAgIGF1dG8qIGNvbnRleHQgPSBk
cmF3aW5nQ29udGV4dCgpOwogICAgIGlmICghZWxlbWVudC5mb2N1c2VkKCkgfHwgIXN0YXRlKCku
aGFzSW52ZXJ0aWJsZVRyYW5zZm9ybSB8fCBwYXRoLmlzRW1wdHkoKSB8fCAhZWxlbWVudC5pc0Rl
c2NlbmRhbnRPZihjYW52YXMoKSkgfHwgIWNvbnRleHQpCiAgICAgICAgIHJldHVybjsKLSAgICBj
b250ZXh0LT5kcmF3Rm9jdXNSaW5nKHBhdGgsIDEsIDEsIFJlbmRlclRoZW1lOjpmb2N1c1JpbmdD
b2xvcihlbGVtZW50LmRvY3VtZW50KCkuc3R5bGVDb2xvck9wdGlvbnMoKSkpOworICAgIGNvbnRl
eHQtPmRyYXdGb2N1c1JpbmcocGF0aCwgMSwgMSwgUmVuZGVyVGhlbWU6OmZvY3VzUmluZ0NvbG9y
KGVsZW1lbnQuZG9jdW1lbnQoKS5zdHlsZUNvbG9yT3B0aW9ucyhjYW52YXMoKS5jb21wdXRlZFN0
eWxlKCkpKSk7CiB9CiAKIFN0cmluZyBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmZvbnQoKSBj
b25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvck92ZXJs
YXkuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvck92ZXJsYXkuY3BwCmlu
ZGV4IGQ1ZGVmOTBmMTZmODgyZjgxNGE2YmNkODY3NWI3OGM2NGRkNGI5MWMuLmRlYzcxZTVmZTg0
MDEyZDM5YjAwNzQ4OTY4NzExNDBhYWQwODYxNjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JPdmVybGF5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yT3ZlcmxheS5jcHAKQEAgLTE4MCwxMiArMTgwLDEzIEBAIHZvaWQgSW5z
cGVjdG9yT3ZlcmxheTo6cGFpbnQoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KQogICAgIGlmICgh
c2hvdWxkU2hvd092ZXJsYXkoKSkKICAgICAgICAgcmV0dXJuOwogCisgICAgR3JhcGhpY3NDb250
ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKGNvbnRleHQpOworICAgIEZyYW1lVmlldyogdmlldyA9
IG92ZXJsYXlQYWdlKCktPm1haW5GcmFtZSgpLnZpZXcoKTsKKwogI2lmIFBMQVRGT1JNKE1BQykK
LSAgICBMb2NhbERlZmF1bHRTeXN0ZW1BcHBlYXJhbmNlIGxvY2FsQXBwZWFyYW5jZShtX3BhZ2Uu
bWFpbkZyYW1lKCkuZG9jdW1lbnQoKS0+dXNlRGFya0FwcGVhcmFuY2UoKSk7CisgICAgTG9jYWxE
ZWZhdWx0U3lzdGVtQXBwZWFyYW5jZSBsb2NhbEFwcGVhcmFuY2Uodmlldy0+cmVuZGVyVmlldygp
LT51c2VEYXJrQXBwZWFyYW5jZSgpKTsKICNlbmRpZgogCi0gICAgR3JhcGhpY3NDb250ZXh0U3Rh
dGVTYXZlciBzdGF0ZVNhdmVyKGNvbnRleHQpOwotICAgIEZyYW1lVmlldyogdmlldyA9IG92ZXJs
YXlQYWdlKCktPm1haW5GcmFtZSgpLnZpZXcoKTsKICAgICB2aWV3LT51cGRhdGVMYXlvdXRBbmRT
dHlsZUlmTmVlZGVkUmVjdXJzaXZlKCk7CiAgICAgdmlldy0+cGFpbnQoY29udGV4dCwgSW50UmVj
dCgwLCAwLCB2aWV3LT53aWR0aCgpLCB2aWV3LT5oZWlnaHQoKSkpOwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9G
cmFtZVZpZXcuY3BwCmluZGV4IDNlNjI0NmE1NTRlNjk3YTY4NWJmN2YyYjRmMGI1ODUxZTg1NzA3
NWIuLjIwZDc2MTVmZWYwMDVkYWIzOGQ3NDRjMzJiOWYxNmVjYmJkMTJiOWEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL0ZyYW1lVmlldy5jcHAKQEAgLTIwNDYsOSArMjA0Niw3IEBAIGJvb2wgRnJhbWVWaWV3Ojpz
aG91bGRTZXRDdXJzb3IoKSBjb25zdAogCiBib29sIEZyYW1lVmlldzo6dXNlRGFya0FwcGVhcmFu
Y2UoKSBjb25zdAogewotICAgIEFTU0VSVChmcmFtZSgpLmRvY3VtZW50KCkpOwotICAgIGF1dG8m
IGRvY3VtZW50ID0gKmZyYW1lKCkuZG9jdW1lbnQoKTsKLSAgICByZXR1cm4gZG9jdW1lbnQudXNl
RGFya0FwcGVhcmFuY2UoKTsKKyAgICByZXR1cm4gcmVuZGVyVmlldygpLT51c2VEYXJrQXBwZWFy
YW5jZSgpOwogfQogCiBib29sIEZyYW1lVmlldzo6c2Nyb2xsQ29udGVudHNGYXN0UGF0aChjb25z
dCBJbnRTaXplJiBzY3JvbGxEZWx0YSwgY29uc3QgSW50UmVjdCYgcmVjdFRvU2Nyb2xsLCBjb25z
dCBJbnRSZWN0JiBjbGlwUmVjdCkKQEAgLTM5MTEsOCArMzkwOSw3IEBAIHZvaWQgRnJhbWVWaWV3
OjpwYWludFNjcm9sbENvcm5lcihHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEludFJl
Y3QmIGNvcm5lCiAjaWYgUExBVEZPUk0oTUFDKQogICAgIC8vIElmIGRhcmsgYXBwZWFyYW5jZSBp
cyB1c2VkIG9yIHRoZSBvdmVybGF5IHN0eWxlIGlzIGxpZ2h0IChiZWNhdXNlIG9mIGEgZGFyayBw
YWdlIGJhY2tncm91bmQpLCBzZXQgdGhlIGRhcmsgYXBwcGVhcmFuY2UuCiAgICAgLy8gS2VlcCB0
aGlzIGluIHN5bmMgd2l0aCBTY3JvbGxBbmltYXRvck1hYydzIGVmZmVjdGl2ZUFwcGVhcmFuY2VG
b3JTY3JvbGxlckltcDouCi0gICAgYXV0byogZG9jdW1lbnQgPSBmcmFtZSgpLmRvY3VtZW50KCk7
Ci0gICAgYm9vbCB1c2VEYXJrQXBwZWFyYW5jZSA9IChkb2N1bWVudCAmJiBkb2N1bWVudC0+dXNl
RGFya0FwcGVhcmFuY2UoKSkgfHwgc2Nyb2xsYmFyT3ZlcmxheVN0eWxlKCkgPT0gV2ViQ29yZTo6
U2Nyb2xsYmFyT3ZlcmxheVN0eWxlTGlnaHQ7CisgICAgYm9vbCB1c2VEYXJrQXBwZWFyYW5jZSA9
IHJlbmRlclZpZXcoKS0+dXNlRGFya0FwcGVhcmFuY2UoKSB8fCBzY3JvbGxiYXJPdmVybGF5U3R5
bGUoKSA9PSBXZWJDb3JlOjpTY3JvbGxiYXJPdmVybGF5U3R5bGVMaWdodDsKICAgICBMb2NhbERl
ZmF1bHRTeXN0ZW1BcHBlYXJhbmNlIGxvY2FsQXBwZWFyYW5jZSh1c2VEYXJrQXBwZWFyYW5jZSk7
CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL0RyYWdJ
bWFnZU1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9EcmFnSW1hZ2VNYWMubW0K
aW5kZXggMTFjZGEyNGQwYzk2YTcxYWM4ZDFiMjIyMjUxYWNkOWUzM2U4ZjIxMC4uOWMzMGY3OWM4
NGQzYzdkODY1ZDQxMTU1MzkxMzY3YzhmNDQ0YTZkYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWFjL0RyYWdJbWFnZU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tYWMvRHJhZ0ltYWdlTWFjLm1tCkBAIC0zMDAsNyArMzAwLDcgQEAgRHJhZ0ltYWdlUmVm
IGNyZWF0ZURyYWdJbWFnZUZvckxpbmsoRWxlbWVudCYgZWxlbWVudCwgVVJMJiB1cmwsIGNvbnN0
IFN0cmluZyYgdGkKIHsKICAgICBMaW5rSW1hZ2VMYXlvdXQgbGF5b3V0KHVybCwgdGl0bGUpOwog
Ci0gICAgTG9jYWxEZWZhdWx0U3lzdGVtQXBwZWFyYW5jZSBsb2NhbEFwcGVhcmFuY2UoZWxlbWVu
dC5kb2N1bWVudCgpLnVzZURhcmtBcHBlYXJhbmNlKCkpOworICAgIExvY2FsRGVmYXVsdFN5c3Rl
bUFwcGVhcmFuY2UgbG9jYWxBcHBlYXJhbmNlKGVsZW1lbnQuZG9jdW1lbnQoKS51c2VEYXJrQXBw
ZWFyYW5jZShlbGVtZW50LmNvbXB1dGVkU3R5bGUoKSkpOwogCiAgICAgYXV0byBpbWFnZVNpemUg
PSBsYXlvdXQuYm91bmRpbmdSZWN0LnNpemUoKTsKICNpZiBfX01BQ19PU19YX1ZFUlNJT05fTUlO
X1JFUVVJUkVEIDwgMTAxMzAwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
SW5saW5lRmxvd0JveC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lRmxvd0Jv
eC5jcHAKaW5kZXggZDc0NTgxMThhMmI4NWUxNDJjM2RkMDU1YWFlZGM4MmNkZmZlNWM4NS4uMDNl
NDFlNzE1OTIwMGFhY2YyY2Y4OThiZDJiMmY5YzI4NjA2YWI5NSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZUZsb3dCb3guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9JbmxpbmVGbG93Qm94LmNwcApAQCAtMTM3Miw3ICsxMzcyLDcgQEAgdm9pZCBJ
bmxpbmVGbG93Qm94OjpwYWludEJveERlY29yYXRpb25zKFBhaW50SW5mbyYgcGFpbnRJbmZvLCBj
b25zdCBMYXlvdXRQb2ludCYKICAgICBDb2xvciBjb2xvciA9IGxpbmVTdHlsZS52aXNpdGVkRGVw
ZW5kZW50Q29sb3IoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQ29sb3IpOwogCiAgICAgQ29tcG9zaXRl
T3BlcmF0b3IgY29tcG9zaXRlT3AgPSBDb21wb3NpdGVTb3VyY2VPdmVyOwotICAgIGlmIChyZW5k
ZXJlcigpLmRvY3VtZW50KCkuc2V0dGluZ3MoKS5wdW5jaE91dFdoaXRlQmFja2dyb3VuZHNJbkRh
cmtNb2RlKCkgJiYgQ29sb3I6OmlzV2hpdGVDb2xvcihjb2xvcikgJiYgcmVuZGVyZXIoKS50aGVt
ZSgpLnVzaW5nRGFya0FwcGVhcmFuY2UocmVuZGVyZXIoKSkpCisgICAgaWYgKHJlbmRlcmVyKCku
ZG9jdW1lbnQoKS5zZXR0aW5ncygpLnB1bmNoT3V0V2hpdGVCYWNrZ3JvdW5kc0luRGFya01vZGUo
KSAmJiBDb2xvcjo6aXNXaGl0ZUNvbG9yKGNvbG9yKSAmJiByZW5kZXJlcigpLnVzZURhcmtBcHBl
YXJhbmNlKCkpCiAgICAgICAgIGNvbXBvc2l0ZU9wID0gQ29tcG9zaXRlRGVzdGluYXRpb25PdXQ7
CiAKICAgICBjb2xvciA9IGxpbmVTdHlsZS5jb2xvckJ5QXBwbHlpbmdDb2xvckZpbHRlcihjb2xv
cik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lVGV4dEJveC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lVGV4dEJveC5jcHAKaW5kZXggNTAz
OWUyYWFhY2ViMTk1OTNiZTk0OTdlOWVlMmJmMDc5M2Y3OTk3My4uMDhlYjAzOTc2YzJlMTZiZDQ5
OWE3MDZmMGIwYjE4NDk1NTZjMjlhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL0lubGluZVRleHRCb3guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9Jbmxp
bmVUZXh0Qm94LmNwcApAQCAtNzE2LDcgKzcxNiw3IEBAIHZvaWQgSW5saW5lVGV4dEJveDo6cGFp
bnRQbGF0Zm9ybURvY3VtZW50TWFya2VyKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QK
ICAgICBhdXRvIGJvdW5kcyA9IGNhbGN1bGF0ZURvY3VtZW50TWFya2VyQm91bmRzKG1hcmtlZFRl
eHQpOwogCiAgICAgYXV0byBsaW5lU3R5bGVGb3JNYXJrZWRUZXh0VHlwZSA9IFsmXSgpIC0+IERv
Y3VtZW50TWFya2VyTGluZVN0eWxlIHsKLSAgICAgICAgYm9vbCBzaG91bGRVc2VEYXJrQXBwZWFy
YW5jZSA9IHJlbmRlcmVyKCkuZG9jdW1lbnQoKS51c2VEYXJrQXBwZWFyYW5jZSgpOworICAgICAg
ICBib29sIHNob3VsZFVzZURhcmtBcHBlYXJhbmNlID0gcmVuZGVyZXIoKS51c2VEYXJrQXBwZWFy
YW5jZSgpOwogICAgICAgICBzd2l0Y2ggKG1hcmtlZFRleHQudHlwZSkgewogICAgICAgICBjYXNl
IE1hcmtlZFRleHQ6OlNwZWxsaW5nRXJyb3I6CiAgICAgICAgICAgICByZXR1cm4geyBEb2N1bWVu
dE1hcmtlckxpbmVTdHlsZTo6TW9kZTo6U3BlbGxpbmcsIHNob3VsZFVzZURhcmtBcHBlYXJhbmNl
IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3BwCmluZGV4IGNhNmU3YzE0NWZi
ZmUyN2UwNzRjYjExZmNlMzhhMjI4MzYwMDMwNjAuLjBmMTJhZDgwYjk0ZDBhZTRlZjMyZTJiMzQx
MjBhZTI5MTM5Y2E3ZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJCb3guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3BwCkBA
IC0xMjA3LDcgKzEyMDcsNyBAQCB2b2lkIFJlbmRlckJveDo6cGFpbnRSb290Qm94RmlsbExheWVy
cyhjb25zdCBQYWludEluZm8mIHBhaW50SW5mbykKICAgICBhdXRvIGNvbG9yID0gc3R5bGUudmlz
aXRlZERlcGVuZGVudENvbG9yKENTU1Byb3BlcnR5QmFja2dyb3VuZENvbG9yKTsKIAogICAgIENv
bXBvc2l0ZU9wZXJhdG9yIGNvbXBvc2l0ZU9wID0gQ29tcG9zaXRlU291cmNlT3ZlcjsKLSAgICBp
ZiAoZG9jdW1lbnQoKS5zZXR0aW5ncygpLnB1bmNoT3V0V2hpdGVCYWNrZ3JvdW5kc0luRGFya01v
ZGUoKSAmJiBDb2xvcjo6aXNXaGl0ZUNvbG9yKGNvbG9yKSAmJiB0aGVtZSgpLnVzaW5nRGFya0Fw
cGVhcmFuY2UoKnRoaXMpKQorICAgIGlmIChkb2N1bWVudCgpLnNldHRpbmdzKCkucHVuY2hPdXRX
aGl0ZUJhY2tncm91bmRzSW5EYXJrTW9kZSgpICYmIENvbG9yOjppc1doaXRlQ29sb3IoY29sb3Ip
ICYmIHVzZURhcmtBcHBlYXJhbmNlKCkpCiAgICAgICAgIGNvbXBvc2l0ZU9wID0gQ29tcG9zaXRl
RGVzdGluYXRpb25PdXQ7CiAKICAgICBwYWludEZpbGxMYXllcnMocGFpbnRJbmZvLCBzdHlsZS5j
b2xvckJ5QXBwbHlpbmdDb2xvckZpbHRlcihjb2xvciksIHN0eWxlLmJhY2tncm91bmRMYXllcnMo
KSwgdmlldygpLmJhY2tncm91bmRSZWN0KCksIEJhY2tncm91bmRCbGVlZE5vbmUsIGNvbXBvc2l0
ZU9wLCByb290QmFja2dyb3VuZFJlbmRlcmVyKTsKQEAgLTEzNDEsNyArMTM0MSw3IEBAIHZvaWQg
UmVuZGVyQm94OjpwYWludEJhY2tncm91bmQoY29uc3QgUGFpbnRJbmZvJiBwYWludEluZm8sIGNv
bnN0IExheW91dFJlY3QmIHBhCiAgICAgQ29sb3IgYmFja2dyb3VuZENvbG9yID0gc3R5bGUoKS52
aXNpdGVkRGVwZW5kZW50Q29sb3IoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQ29sb3IpOwogCiAgICAg
Q29tcG9zaXRlT3BlcmF0b3IgY29tcG9zaXRlT3AgPSBDb21wb3NpdGVTb3VyY2VPdmVyOwotICAg
IGlmIChkb2N1bWVudCgpLnNldHRpbmdzKCkucHVuY2hPdXRXaGl0ZUJhY2tncm91bmRzSW5EYXJr
TW9kZSgpICYmIENvbG9yOjppc1doaXRlQ29sb3IoYmFja2dyb3VuZENvbG9yKSAmJiB0aGVtZSgp
LnVzaW5nRGFya0FwcGVhcmFuY2UoKnRoaXMpKQorICAgIGlmIChkb2N1bWVudCgpLnNldHRpbmdz
KCkucHVuY2hPdXRXaGl0ZUJhY2tncm91bmRzSW5EYXJrTW9kZSgpICYmIENvbG9yOjppc1doaXRl
Q29sb3IoYmFja2dyb3VuZENvbG9yKSAmJiB1c2VEYXJrQXBwZWFyYW5jZSgpKQogICAgICAgICBj
b21wb3NpdGVPcCA9IENvbXBvc2l0ZURlc3RpbmF0aW9uT3V0OwogCiAgICAgcGFpbnRGaWxsTGF5
ZXJzKHBhaW50SW5mbywgc3R5bGUoKS5jb2xvckJ5QXBwbHlpbmdDb2xvckZpbHRlcihiYWNrZ3Jv
dW5kQ29sb3IpLCBzdHlsZSgpLmJhY2tncm91bmRMYXllcnMoKSwgcGFpbnRSZWN0LCBibGVlZEF2
b2lkYW5jZSwgY29tcG9zaXRlT3ApOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVs
ZW1lbnQuY3BwCmluZGV4IGJmOTdjMDgyMjVjYmE5NjgyNzEyMzI4YWQ1OGU5NjA3MzgwMTM5YTAu
LjkwOGI4NWE4OGQ1NGI5MzZiNzE1YWI5YWE2NDMxNjc0NDQzM2RiNDEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5jcHAKQEAgLTEzNzQsOCArMTM3NCw4IEBAIENv
bG9yIFJlbmRlckVsZW1lbnQ6OnNlbGVjdGlvbkNvbG9yKENTU1Byb3BlcnR5SUQgY29sb3JQcm9w
ZXJ0eSkgY29uc3QKICAgICB9CiAKICAgICBpZiAoZnJhbWUoKS5zZWxlY3Rpb24oKS5pc0ZvY3Vz
ZWRBbmRBY3RpdmUoKSkKLSAgICAgICAgcmV0dXJuIHRoZW1lKCkuYWN0aXZlU2VsZWN0aW9uRm9y
ZWdyb3VuZENvbG9yKGRvY3VtZW50KCkuc3R5bGVDb2xvck9wdGlvbnMoKSk7Ci0gICAgcmV0dXJu
IHRoZW1lKCkuaW5hY3RpdmVTZWxlY3Rpb25Gb3JlZ3JvdW5kQ29sb3IoZG9jdW1lbnQoKS5zdHls
ZUNvbG9yT3B0aW9ucygpKTsKKyAgICAgICAgcmV0dXJuIHRoZW1lKCkuYWN0aXZlU2VsZWN0aW9u
Rm9yZWdyb3VuZENvbG9yKHN0eWxlQ29sb3JPcHRpb25zKCkpOworICAgIHJldHVybiB0aGVtZSgp
LmluYWN0aXZlU2VsZWN0aW9uRm9yZWdyb3VuZENvbG9yKHN0eWxlQ29sb3JPcHRpb25zKCkpOwog
fQogCiBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+IFJlbmRlckVsZW1lbnQ6OnNlbGVjdGlv
blBzZXVkb1N0eWxlKCkgY29uc3QKQEAgLTE0MDksMTUgKzE0MDksMTUgQEAgQ29sb3IgUmVuZGVy
RWxlbWVudDo6c2VsZWN0aW9uQmFja2dyb3VuZENvbG9yKCkgY29uc3QKICAgICAgICAgcmV0dXJu
IENvbG9yKCk7CiAKICAgICBpZiAoZnJhbWUoKS5zZWxlY3Rpb24oKS5zaG91bGRTaG93QmxvY2tD
dXJzb3IoKSAmJiBmcmFtZSgpLnNlbGVjdGlvbigpLmlzQ2FyZXQoKSkKLSAgICAgICAgcmV0dXJu
IHRoZW1lKCkudHJhbnNmb3JtU2VsZWN0aW9uQmFja2dyb3VuZENvbG9yKHN0eWxlKCkudmlzaXRl
ZERlcGVuZGVudENvbG9yV2l0aENvbG9yRmlsdGVyKENTU1Byb3BlcnR5Q29sb3IpLCBkb2N1bWVu
dCgpLnN0eWxlQ29sb3JPcHRpb25zKCkpOworICAgICAgICByZXR1cm4gdGhlbWUoKS50cmFuc2Zv
cm1TZWxlY3Rpb25CYWNrZ3JvdW5kQ29sb3Ioc3R5bGUoKS52aXNpdGVkRGVwZW5kZW50Q29sb3JX
aXRoQ29sb3JGaWx0ZXIoQ1NTUHJvcGVydHlDb2xvciksIHN0eWxlQ29sb3JPcHRpb25zKCkpOwog
CiAgICAgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBwc2V1ZG9TdHlsZSA9IHNlbGVjdGlv
blBzZXVkb1N0eWxlKCk7CiAgICAgaWYgKHBzZXVkb1N0eWxlICYmIHBzZXVkb1N0eWxlLT52aXNp
dGVkRGVwZW5kZW50Q29sb3JXaXRoQ29sb3JGaWx0ZXIoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQ29s
b3IpLmlzVmFsaWQoKSkKLSAgICAgICAgcmV0dXJuIHRoZW1lKCkudHJhbnNmb3JtU2VsZWN0aW9u
QmFja2dyb3VuZENvbG9yKHBzZXVkb1N0eWxlLT52aXNpdGVkRGVwZW5kZW50Q29sb3JXaXRoQ29s
b3JGaWx0ZXIoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQ29sb3IpLCBkb2N1bWVudCgpLnN0eWxlQ29s
b3JPcHRpb25zKCkpOworICAgICAgICByZXR1cm4gdGhlbWUoKS50cmFuc2Zvcm1TZWxlY3Rpb25C
YWNrZ3JvdW5kQ29sb3IocHNldWRvU3R5bGUtPnZpc2l0ZWREZXBlbmRlbnRDb2xvcldpdGhDb2xv
ckZpbHRlcihDU1NQcm9wZXJ0eUJhY2tncm91bmRDb2xvciksIHN0eWxlQ29sb3JPcHRpb25zKCkp
OwogCiAgICAgaWYgKGZyYW1lKCkuc2VsZWN0aW9uKCkuaXNGb2N1c2VkQW5kQWN0aXZlKCkpCi0g
ICAgICAgIHJldHVybiB0aGVtZSgpLmFjdGl2ZVNlbGVjdGlvbkJhY2tncm91bmRDb2xvcihkb2N1
bWVudCgpLnN0eWxlQ29sb3JPcHRpb25zKCkpOwotICAgIHJldHVybiB0aGVtZSgpLmluYWN0aXZl
U2VsZWN0aW9uQmFja2dyb3VuZENvbG9yKGRvY3VtZW50KCkuc3R5bGVDb2xvck9wdGlvbnMoKSk7
CisgICAgICAgIHJldHVybiB0aGVtZSgpLmFjdGl2ZVNlbGVjdGlvbkJhY2tncm91bmRDb2xvcihz
dHlsZUNvbG9yT3B0aW9ucygpKTsKKyAgICByZXR1cm4gdGhlbWUoKS5pbmFjdGl2ZVNlbGVjdGlv
bkJhY2tncm91bmRDb2xvcihzdHlsZUNvbG9yT3B0aW9ucygpKTsKIH0KIAogYm9vbCBSZW5kZXJF
bGVtZW50OjpnZXRMZWFkaW5nQ29ybmVyKEZsb2F0UG9pbnQmIHBvaW50LCBib29sJiBpbnNpZGVG
aXhlZCkgY29uc3QKQEAgLTE4MzgsOSArMTgzOCw5IEBAIHZvaWQgUmVuZGVyRWxlbWVudDo6cGFp
bnRGb2N1c1JpbmcoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IFJlbmRlclN0eWxlJiBzdHls
CiAgICAgICAgICAgICBmb3IgKGF1dG8gcmVjdCA6IHBpeGVsU25hcHBlZEZvY3VzUmluZ1JlY3Rz
KQogICAgICAgICAgICAgICAgIHBhdGguYWRkUmVjdChyZWN0KTsKICAgICAgICAgfQotICAgICAg
ICBwYWludEluZm8uY29udGV4dCgpLmRyYXdGb2N1c1JpbmcocGF0aCwgcGFnZSgpLmZvY3VzQ29u
dHJvbGxlcigpLnRpbWVTaW5jZUZvY3VzV2FzU2V0KCkuc2Vjb25kcygpLCBuZWVkc1JlcGFpbnQs
IFJlbmRlclRoZW1lOjpmb2N1c1JpbmdDb2xvcihkb2N1bWVudCgpLnN0eWxlQ29sb3JPcHRpb25z
KCkpKTsKKyAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQoKS5kcmF3Rm9jdXNSaW5nKHBhdGgsIHBh
Z2UoKS5mb2N1c0NvbnRyb2xsZXIoKS50aW1lU2luY2VGb2N1c1dhc1NldCgpLnNlY29uZHMoKSwg
bmVlZHNSZXBhaW50LCBSZW5kZXJUaGVtZTo6Zm9jdXNSaW5nQ29sb3Ioc3R5bGVDb2xvck9wdGlv
bnMoKSkpOwogICAgIH0gZWxzZQotICAgICAgICBwYWludEluZm8uY29udGV4dCgpLmRyYXdGb2N1
c1JpbmcocGl4ZWxTbmFwcGVkRm9jdXNSaW5nUmVjdHMsIHBhZ2UoKS5mb2N1c0NvbnRyb2xsZXIo
KS50aW1lU2luY2VGb2N1c1dhc1NldCgpLnNlY29uZHMoKSwgbmVlZHNSZXBhaW50LCBSZW5kZXJU
aGVtZTo6Zm9jdXNSaW5nQ29sb3IoZG9jdW1lbnQoKS5zdHlsZUNvbG9yT3B0aW9ucygpKSk7Cisg
ICAgICAgIHBhaW50SW5mby5jb250ZXh0KCkuZHJhd0ZvY3VzUmluZyhwaXhlbFNuYXBwZWRGb2N1
c1JpbmdSZWN0cywgcGFnZSgpLmZvY3VzQ29udHJvbGxlcigpLnRpbWVTaW5jZUZvY3VzV2FzU2V0
KCkuc2Vjb25kcygpLCBuZWVkc1JlcGFpbnQsIFJlbmRlclRoZW1lOjpmb2N1c1JpbmdDb2xvcihz
dHlsZUNvbG9yT3B0aW9ucygpKSk7CiAgICAgaWYgKG5lZWRzUmVwYWludCkKICAgICAgICAgcGFn
ZSgpLmZvY3VzQ29udHJvbGxlcigpLnNldEZvY3VzZWRFbGVtZW50TmVlZHNSZXBhaW50KCk7CiAj
ZWxzZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZS5jcHAKaW5kZXggODEwOWVi
ZmZkMjFlZDdjM2U0ZGE2YWYyOGQ4YjlkMGMzNTBhMzkxMy4uYTBkMmI3YjQ3ZTZjMjQ3N2Y4NzE2
MTQzOTkwZTJkZDNkNjUxN2E5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckltYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1h
Z2UuY3BwCkBAIC01NzQsNyArNTc0LDcgQEAgdm9pZCBSZW5kZXJJbWFnZTo6cGFpbnRBcmVhRWxl
bWVudEZvY3VzUmluZyhQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG8KIAogI2lm
IFBMQVRGT1JNKE1BQykKICAgICBib29sIG5lZWRzUmVwYWludDsKLSAgICBwYWludEluZm8uY29u
dGV4dCgpLmRyYXdGb2N1c1JpbmcocGF0aCwgcGFnZSgpLmZvY3VzQ29udHJvbGxlcigpLnRpbWVT
aW5jZUZvY3VzV2FzU2V0KCkuc2Vjb25kcygpLCBuZWVkc1JlcGFpbnQsIFJlbmRlclRoZW1lOjpm
b2N1c1JpbmdDb2xvcihkb2N1bWVudCgpLnN0eWxlQ29sb3JPcHRpb25zKCkpKTsKKyAgICBwYWlu
dEluZm8uY29udGV4dCgpLmRyYXdGb2N1c1JpbmcocGF0aCwgcGFnZSgpLmZvY3VzQ29udHJvbGxl
cigpLnRpbWVTaW5jZUZvY3VzV2FzU2V0KCkuc2Vjb25kcygpLCBuZWVkc1JlcGFpbnQsIFJlbmRl
clRoZW1lOjpmb2N1c1JpbmdDb2xvcihzdHlsZUNvbG9yT3B0aW9ucygpKSk7CiAgICAgaWYgKG5l
ZWRzUmVwYWludCkKICAgICAgICAgcGFnZSgpLmZvY3VzQ29udHJvbGxlcigpLnNldEZvY3VzZWRF
bGVtZW50TmVlZHNSZXBhaW50KCk7CiAjZWxzZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcAppbmRleCA4OGQ2ZTAxZGQ2ZWZjNmUyZjdhOWJjMjQz
MzlkNDg0NGFkZjJhZDdhLi5iYjdiMTllYmM4Y2E2MWE0MmI0ZjBiMzkxY2NlNzFlNDAwZDA0NTc3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5n
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNw
cApAQCAtMjU0MSw3ICsyNTQxLDcgQEAgdm9pZCBSZW5kZXJMYXllckJhY2tpbmc6OnBhaW50Q29u
dGVudHMoY29uc3QgR3JhcGhpY3NMYXllciogZ3JhcGhpY3NMYXllciwgR3JhcGgKICNlbmRpZgog
CiAjaWYgUExBVEZPUk0oTUFDKQotICAgIExvY2FsRGVmYXVsdFN5c3RlbUFwcGVhcmFuY2UgbG9j
YWxBcHBlYXJhbmNlKHJlbmRlcmVyKCkuZG9jdW1lbnQoKS51c2VEYXJrQXBwZWFyYW5jZSgpKTsK
KyAgICBMb2NhbERlZmF1bHRTeXN0ZW1BcHBlYXJhbmNlIGxvY2FsQXBwZWFyYW5jZShyZW5kZXJl
cigpLnVzZURhcmtBcHBlYXJhbmNlKCkpOwogI2VuZGlmCiAKICAgICAvLyBUaGUgZGlydHlSZWN0
IGlzIGluIHRoZSBjb29yZHMgb2YgdGhlIHBhaW50aW5nIHJvb3QuCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuY3BwCmluZGV4IDk1NmQzYTU3
ZGQwNTA5NzM0N2NmZjEyZmU0N2FlYjYzNzhjYzY2MzkuLjU5YmY4Y2Y3NTZjMjNhNjAwZWM3YmM3
YjQxNDE5NThlMWY0NTQwNmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJMYXllckNvbXBvc2l0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJMYXllckNvbXBvc2l0b3IuY3BwCkBAIC0yNzgyLDcgKzI3ODIsNyBAQCB2b2lkIHBhaW50
U2Nyb2xsYmFyKFNjcm9sbGJhciogc2Nyb2xsYmFyLCBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQs
IGNvbnN0IEludFJlYwogdm9pZCBSZW5kZXJMYXllckNvbXBvc2l0b3I6OnBhaW50Q29udGVudHMo
Y29uc3QgR3JhcGhpY3NMYXllciogZ3JhcGhpY3NMYXllciwgR3JhcGhpY3NDb250ZXh0JiBjb250
ZXh0LCBHcmFwaGljc0xheWVyUGFpbnRpbmdQaGFzZSwgY29uc3QgRmxvYXRSZWN0JiBjbGlwLCBH
cmFwaGljc0xheWVyUGFpbnRCZWhhdmlvcikKIHsKICNpZiBQTEFURk9STShNQUMpCi0gICAgTG9j
YWxEZWZhdWx0U3lzdGVtQXBwZWFyYW5jZSBsb2NhbEFwcGVhcmFuY2UobV9yZW5kZXJWaWV3LmRv
Y3VtZW50KCkudXNlRGFya0FwcGVhcmFuY2UoKSk7CisgICAgTG9jYWxEZWZhdWx0U3lzdGVtQXBw
ZWFyYW5jZSBsb2NhbEFwcGVhcmFuY2UobV9yZW5kZXJWaWV3LnVzZURhcmtBcHBlYXJhbmNlKCkp
OwogI2VuZGlmCiAKICAgICBJbnRSZWN0IHBpeGVsU25hcHBlZFJlY3RGb3JJbnRlZ3JhbFBvc2l0
aW9uZWRJdGVtcyA9IHNuYXBwZWRJbnRSZWN0KExheW91dFJlY3QoY2xpcCkpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RCb3guY3BwIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RCb3guY3BwCmluZGV4IGVjZDU1MTY1ZmZjODE5YzVi
MzI2YjNlNzZhMjUwNDhkMTUwNGFiMWQuLjUyMDA4MTNlMTk1NjhkYjM4ZWY3ZDU2Y2Y4ZTgwYzY0
NjMxMGEwNTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0
Qm94LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdEJveC5jcHAK
QEAgLTQyOCwxMCArNDI4LDEwIEBAIHZvaWQgUmVuZGVyTGlzdEJveDo6cGFpbnRJdGVtRm9yZWdy
b3VuZChQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQmCiAgICAgQ29sb3Ig
dGV4dENvbG9yID0gaXRlbVN0eWxlLnZpc2l0ZWREZXBlbmRlbnRDb2xvcldpdGhDb2xvckZpbHRl
cihDU1NQcm9wZXJ0eUNvbG9yKTsKICAgICBpZiAoaXNPcHRpb25FbGVtZW50ICYmIGRvd25jYXN0
PEhUTUxPcHRpb25FbGVtZW50PigqbGlzdEl0ZW1FbGVtZW50KS5zZWxlY3RlZCgpKSB7CiAgICAg
ICAgIGlmIChmcmFtZSgpLnNlbGVjdGlvbigpLmlzRm9jdXNlZEFuZEFjdGl2ZSgpICYmIGRvY3Vt
ZW50KCkuZm9jdXNlZEVsZW1lbnQoKSA9PSAmc2VsZWN0RWxlbWVudCgpKQotICAgICAgICAgICAg
dGV4dENvbG9yID0gdGhlbWUoKS5hY3RpdmVMaXN0Qm94U2VsZWN0aW9uRm9yZWdyb3VuZENvbG9y
KGRvY3VtZW50KCkuc3R5bGVDb2xvck9wdGlvbnMoKSk7CisgICAgICAgICAgICB0ZXh0Q29sb3Ig
PSB0aGVtZSgpLmFjdGl2ZUxpc3RCb3hTZWxlY3Rpb25Gb3JlZ3JvdW5kQ29sb3Ioc3R5bGVDb2xv
ck9wdGlvbnMoKSk7CiAgICAgICAgIC8vIEhvbm9yIHRoZSBmb3JlZ3JvdW5kIGNvbG9yIGZvciBk
aXNhYmxlZCBpdGVtcwogICAgICAgICBlbHNlIGlmICghbGlzdEl0ZW1FbGVtZW50LT5pc0Rpc2Fi
bGVkRm9ybUNvbnRyb2woKSAmJiAhc2VsZWN0RWxlbWVudCgpLmlzRGlzYWJsZWRGb3JtQ29udHJv
bCgpKQotICAgICAgICAgICAgdGV4dENvbG9yID0gdGhlbWUoKS5pbmFjdGl2ZUxpc3RCb3hTZWxl
Y3Rpb25Gb3JlZ3JvdW5kQ29sb3IoZG9jdW1lbnQoKS5zdHlsZUNvbG9yT3B0aW9ucygpKTsKKyAg
ICAgICAgICAgIHRleHRDb2xvciA9IHRoZW1lKCkuaW5hY3RpdmVMaXN0Qm94U2VsZWN0aW9uRm9y
ZWdyb3VuZENvbG9yKHN0eWxlQ29sb3JPcHRpb25zKCkpOwogICAgIH0KIAogICAgIHBhaW50SW5m
by5jb250ZXh0KCkuc2V0RmlsbENvbG9yKHRleHRDb2xvcik7CkBAIC00NjEsOSArNDYxLDkgQEAg
dm9pZCBSZW5kZXJMaXN0Qm94OjpwYWludEl0ZW1CYWNrZ3JvdW5kKFBhaW50SW5mbyYgcGFpbnRJ
bmZvLCBjb25zdCBMYXlvdXRQb2ludCYKICAgICBDb2xvciBiYWNrQ29sb3I7CiAgICAgaWYgKGlz
PEhUTUxPcHRpb25FbGVtZW50PigqbGlzdEl0ZW1FbGVtZW50KSAmJiBkb3duY2FzdDxIVE1MT3B0
aW9uRWxlbWVudD4oKmxpc3RJdGVtRWxlbWVudCkuc2VsZWN0ZWQoKSkgewogICAgICAgICBpZiAo
ZnJhbWUoKS5zZWxlY3Rpb24oKS5pc0ZvY3VzZWRBbmRBY3RpdmUoKSAmJiBkb2N1bWVudCgpLmZv
Y3VzZWRFbGVtZW50KCkgPT0gJnNlbGVjdEVsZW1lbnQoKSkKLSAgICAgICAgICAgIGJhY2tDb2xv
ciA9IHRoZW1lKCkuYWN0aXZlTGlzdEJveFNlbGVjdGlvbkJhY2tncm91bmRDb2xvcihkb2N1bWVu
dCgpLnN0eWxlQ29sb3JPcHRpb25zKCkpOworICAgICAgICAgICAgYmFja0NvbG9yID0gdGhlbWUo
KS5hY3RpdmVMaXN0Qm94U2VsZWN0aW9uQmFja2dyb3VuZENvbG9yKHN0eWxlQ29sb3JPcHRpb25z
KCkpOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBiYWNrQ29sb3IgPSB0aGVtZSgpLmluYWN0
aXZlTGlzdEJveFNlbGVjdGlvbkJhY2tncm91bmRDb2xvcihkb2N1bWVudCgpLnN0eWxlQ29sb3JP
cHRpb25zKCkpOworICAgICAgICAgICAgYmFja0NvbG9yID0gdGhlbWUoKS5pbmFjdGl2ZUxpc3RC
b3hTZWxlY3Rpb25CYWNrZ3JvdW5kQ29sb3Ioc3R5bGVDb2xvck9wdGlvbnMoKSk7CiAgICAgfSBl
bHNlCiAgICAgICAgIGJhY2tDb2xvciA9IGl0ZW1TdHlsZS52aXNpdGVkRGVwZW5kZW50Q29sb3JX
aXRoQ29sb3JGaWx0ZXIoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQ29sb3IpOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwCmluZGV4IDc2NDQ0NTBmMDgwNzc2OGM1MzFm
ZTJhMjc4OWIxZWJmZjI2MDA5OTYuLjQyNTUxMDVlMjQ0ZmRkNTE3ZjM0OTRiYWI2OTkyOGIzMjM5
N2E0NmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3Qu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwCkBAIC0x
ODAxLDYgKzE4MDEsMTYgQEAgQ3Vyc29yRGlyZWN0aXZlIFJlbmRlck9iamVjdDo6Z2V0Q3Vyc29y
KGNvbnN0IExheW91dFBvaW50JiwgQ3Vyc29yJikgY29uc3QKICAgICByZXR1cm4gU2V0Q3Vyc29y
QmFzZWRPblN0eWxlOwogfQogCitib29sIFJlbmRlck9iamVjdDo6dXNlRGFya0FwcGVhcmFuY2Uo
KSBjb25zdAoreworICAgIHJldHVybiBkb2N1bWVudCgpLnVzZURhcmtBcHBlYXJhbmNlKCZzdHls
ZSgpKTsKK30KKworT3B0aW9uU2V0PFN0eWxlQ29sb3I6Ok9wdGlvbnM+IFJlbmRlck9iamVjdDo6
c3R5bGVDb2xvck9wdGlvbnMoKSBjb25zdAoreworICAgIHJldHVybiBkb2N1bWVudCgpLnN0eWxl
Q29sb3JPcHRpb25zKCZzdHlsZSgpKTsKK30KKwogYm9vbCBSZW5kZXJPYmplY3Q6OmNhblVwZGF0
ZVNlbGVjdGlvbk9uUm9vdExpbmVCb3hlcygpCiB7CiAgICAgaWYgKG5lZWRzTGF5b3V0KCkpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmgKaW5kZXggMTNiMzZkNjc2MDJhMDVi
ZWI0NmViNTc3MzcxOGQ4NWFkYTU4MjhhMC4uMmRjZTlkY2M1NjkxMzA5MWY3Mjk5NDdmYzZkZjcy
NjRhOGU0M2Y1ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9i
amVjdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuaApAQCAt
MTc2LDYgKzE3Niw5IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGxvY2F0ZUVuY2xvc2luZ0Zy
YWdtZW50ZWRGbG93KCk7CiAgICAgfQogCisgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCB1c2VEYXJr
QXBwZWFyYW5jZSgpIGNvbnN0OworICAgIE9wdGlvblNldDxTdHlsZUNvbG9yOjpPcHRpb25zPiBz
dHlsZUNvbG9yT3B0aW9ucygpIGNvbnN0OworCiAjaWZuZGVmIE5ERUJVRwogICAgIHZvaWQgc2V0
SGFzQVhPYmplY3QoYm9vbCBmbGFnKSB7IG1faGFzQVhPYmplY3QgPSBmbGFnOyB9CiAgICAgYm9v
bCBoYXNBWE9iamVjdCgpIGNvbnN0IHsgcmV0dXJuIG1faGFzQVhPYmplY3Q7IH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZUNlbGwuY3BwIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlQ2VsbC5jcHAKaW5kZXggMzQ1YTdiYjU3ZjY3
M2Q2NzUyM2IzMzMxM2ZiYWVlZmYxMDk1YTRhNy4uNzU0MTk3ODdjN2I2ZjdhOTFmMzYxYzg2ODkz
YzgxZjliYWVhNzBiNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
clRhYmxlQ2VsbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxl
Q2VsbC5jcHAKQEAgLTEyODksNyArMTI4OSw3IEBAIHZvaWQgUmVuZGVyVGFibGVDZWxsOjpwYWlu
dEJhY2tncm91bmRzQmVoaW5kQ2VsbChQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5CiAK
ICAgICBDb21wb3NpdGVPcGVyYXRvciBjb21wb3NpdGVPcCA9IENvbXBvc2l0ZVNvdXJjZU92ZXI7
CiAgICAgQ29sb3IgY29sb3IgPSBzdHlsZS52aXNpdGVkRGVwZW5kZW50Q29sb3IoQ1NTUHJvcGVy
dHlCYWNrZ3JvdW5kQ29sb3IpOwotICAgIGlmIChkb2N1bWVudCgpLnNldHRpbmdzKCkucHVuY2hP
dXRXaGl0ZUJhY2tncm91bmRzSW5EYXJrTW9kZSgpICYmIENvbG9yOjppc1doaXRlQ29sb3IoY29s
b3IpICYmIHRoZW1lKCkudXNpbmdEYXJrQXBwZWFyYW5jZSgqdGhpcykpCisgICAgaWYgKGRvY3Vt
ZW50KCkuc2V0dGluZ3MoKS5wdW5jaE91dFdoaXRlQmFja2dyb3VuZHNJbkRhcmtNb2RlKCkgJiYg
Q29sb3I6OmlzV2hpdGVDb2xvcihjb2xvcikgJiYgdXNlRGFya0FwcGVhcmFuY2UoKSkKICAgICAg
ICAgY29tcG9zaXRlT3AgPSBDb21wb3NpdGVEZXN0aW5hdGlvbk91dDsKIAogICAgIGNvbG9yID0g
c3R5bGUuY29sb3JCeUFwcGx5aW5nQ29sb3JGaWx0ZXIoY29sb3IpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJUaGVtZS5jcHAKaW5kZXggYmQ2NmJiM2Y1OTFhMGM3Yzg0YTljYmY4ZjUz
Y2NhNmZmZTBiYTg1OS4uMjU3MzkwMzk2ZjUwYTMyMjY2ZjgyYTA0OGU0ODY3MmM5MzhhMTU1ZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWUuY3BwCkBAIC0zMTgsNyArMzE4
LDcgQEAgYm9vbCBSZW5kZXJUaGVtZTo6cGFpbnQoY29uc3QgUmVuZGVyQm94JiBib3gsIENvbnRy
b2xTdGF0ZXMmIGNvbnRyb2xTdGF0ZXMsIGNvbnMKICAgICBjYXNlIEJ1dHRvblBhcnQ6CiAgICAg
Y2FzZSBJbm5lclNwaW5CdXR0b25QYXJ0OgogICAgICAgICB1cGRhdGVDb250cm9sU3RhdGVzRm9y
UmVuZGVyZXIoYm94LCBjb250cm9sU3RhdGVzKTsKLSAgICAgICAgVGhlbWU6OnNpbmdsZXRvbigp
LnBhaW50KHBhcnQsIGNvbnRyb2xTdGF0ZXMsIHBhaW50SW5mby5jb250ZXh0KCksIGRldmljZVBp
eGVsU25hcHBlZFJlY3QsIGJveC5zdHlsZSgpLmVmZmVjdGl2ZVpvb20oKSwgJmJveC52aWV3KCku
ZnJhbWVWaWV3KCksIGRldmljZVNjYWxlRmFjdG9yLCBwYWdlU2NhbGVGYWN0b3IsIGJveC5kb2N1
bWVudCgpLnVzZVN5c3RlbUFwcGVhcmFuY2UoKSwgYm94LmRvY3VtZW50KCkudXNlRGFya0FwcGVh
cmFuY2UoKSk7CisgICAgICAgIFRoZW1lOjpzaW5nbGV0b24oKS5wYWludChwYXJ0LCBjb250cm9s
U3RhdGVzLCBwYWludEluZm8uY29udGV4dCgpLCBkZXZpY2VQaXhlbFNuYXBwZWRSZWN0LCBib3gu
c3R5bGUoKS5lZmZlY3RpdmVab29tKCksICZib3gudmlldygpLmZyYW1lVmlldygpLCBkZXZpY2VT
Y2FsZUZhY3RvciwgcGFnZVNjYWxlRmFjdG9yLCBib3guZG9jdW1lbnQoKS51c2VTeXN0ZW1BcHBl
YXJhbmNlKCksIGJveC51c2VEYXJrQXBwZWFyYW5jZSgpKTsKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgIGRlZmF1bHQ6CiAgICAgICAgIGJyZWFrOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyVGhlbWUuaAppbmRleCA4ZmJhNGRiNDA5Njc0YzcwMzJlNTZiMWVkNWM3OTY1ODNmNGMwMTU2
Li4xMzJhNmU0OWYwOTY2ZDdkNTAzN2NiNWM2YTAzNjRmODM5ODk5OWI5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWUuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWUuaApAQCAtMjYxLDggKzI2MSw2IEBAIHB1YmxpYzoKICAg
ICB2aXJ0dWFsIHZvaWQgcGFpbnRTeXN0ZW1QcmV2aWV3QmFkZ2UoSW1hZ2UmLCBjb25zdCBQYWlu
dEluZm8mLCBjb25zdCBGbG9hdFJlY3QmKTsKICNlbmRpZgogCi0gICAgdmlydHVhbCBib29sIHVz
aW5nRGFya0FwcGVhcmFuY2UoY29uc3QgUmVuZGVyT2JqZWN0JikgY29uc3QgeyByZXR1cm4gZmFs
c2U7IH0KLQogcHJvdGVjdGVkOgogICAgIHZpcnR1YWwgRm9udENhc2NhZGVEZXNjcmlwdGlvbiYg
Y2FjaGVkU3lzdGVtRm9udERlc2NyaXB0aW9uKENTU1ZhbHVlSUQgc3lzdGVtRm9udElEKSBjb25z
dDsKICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlQ2FjaGVkU3lzdGVtRm9udERlc2NyaXB0aW9uKENT
U1ZhbHVlSUQgc3lzdGVtRm9udElELCBGb250Q2FzY2FkZURlc2NyaXB0aW9uJikgY29uc3QgPSAw
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lTWFjLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVNYWMuaAppbmRleCBkODU3NjFh
YmM5YjEyZGZkZGE1NTQ1ZGQxNGY4MDM0OTYzNzk1MGQ3Li4xZGQyYjFmNWZlZjg2ZjhjOTVmODc2
YWJmZmY4NjY0ODlmOGNmYWQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyVGhlbWVNYWMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhl
bWVNYWMuaApAQCAtMTc0LDggKzE3NCw2IEBAIHByaXZhdGU6CiAgICAgYm9vbCBwYWludEF0dGFj
aG1lbnQoY29uc3QgUmVuZGVyT2JqZWN0JiwgY29uc3QgUGFpbnRJbmZvJiwgY29uc3QgSW50UmVj
dCYpIGZpbmFsOwogI2VuZGlmCiAKLSAgICBib29sIHVzaW5nRGFya0FwcGVhcmFuY2UoY29uc3Qg
UmVuZGVyT2JqZWN0JikgY29uc3QgZmluYWw7Ci0KIHByaXZhdGU6CiAgICAgU3RyaW5nIGZpbGVM
aXN0TmFtZUZvcldpZHRoKGNvbnN0IEZpbGVMaXN0KiwgY29uc3QgRm9udENhc2NhZGUmLCBpbnQg
d2lkdGgsIGJvb2wgbXVsdGlwbGVGaWxlc0FsbG93ZWQpIGNvbnN0IGZpbmFsOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVNYWMubW0gYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVNYWMubW0KaW5kZXggM2ZiZDYwZDYxNzE3OWQ4
MGIxOTI2NTlhOWI4ZjBiYzljOWU2Y2RkNS4uZDU1MGU1YjMzZjRhYTRkMmU1MzM5NWQwZWJlYzkw
OGIyZjdjMjdhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRo
ZW1lTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZU1hYy5t
bQpAQCAtMjk3LDcgKzI5Nyw3IEBAIFJlbmRlclRoZW1lTWFjOjpSZW5kZXJUaGVtZU1hYygpCiAK
IE5TVmlldyAqUmVuZGVyVGhlbWVNYWM6OmRvY3VtZW50Vmlld0Zvcihjb25zdCBSZW5kZXJPYmpl
Y3QmIG8pIGNvbnN0CiB7Ci0gICAgTG9jYWxEZWZhdWx0U3lzdGVtQXBwZWFyYW5jZSBsb2NhbEFw
cGVhcmFuY2UodXNpbmdEYXJrQXBwZWFyYW5jZShvKSk7CisgICAgTG9jYWxEZWZhdWx0U3lzdGVt
QXBwZWFyYW5jZSBsb2NhbEFwcGVhcmFuY2Uoby51c2VEYXJrQXBwZWFyYW5jZSgpKTsKICAgICBD
b250cm9sU3RhdGVzIHN0YXRlcyhleHRyYWN0Q29udHJvbFN0YXRlc0ZvclJlbmRlcmVyKG8pKTsK
ICAgICByZXR1cm4gVGhlbWVNYWM6OmVuc3VyZWRWaWV3KCZvLnZpZXcoKS5mcmFtZVZpZXcoKSwg
c3RhdGVzKTsKIH0KQEAgLTE3MTMsNyArMTcxMyw3IEBAIHZvaWQgUmVuZGVyVGhlbWVNYWM6OmFk
anVzdE1lbnVMaXN0U3R5bGUoU3R5bGVSZXNvbHZlciYgc3R5bGVSZXNvbHZlciwgUmVuZGVyU3R5
CiAgICAgLy8gU2V0IHRoZSBmb3JlZ3JvdW5kIGNvbG9yIHRvIGJsYWNrIG9yIGdyYXkgd2hlbiB3
ZSBoYXZlIHRoZSBhcXVhIGxvb2suCiAgICAgQ29sb3IgYyA9IENvbG9yOjpkYXJrR3JheTsKICAg
ICBpZiAoZSkgewotICAgICAgICBPcHRpb25TZXQ8U3R5bGVDb2xvcjo6T3B0aW9ucz4gb3B0aW9u
cyA9IGUtPmRvY3VtZW50KCkuc3R5bGVDb2xvck9wdGlvbnMoKTsKKyAgICAgICAgT3B0aW9uU2V0
PFN0eWxlQ29sb3I6Ok9wdGlvbnM+IG9wdGlvbnMgPSBlLT5kb2N1bWVudCgpLnN0eWxlQ29sb3JP
cHRpb25zKCZzdHlsZSk7CiAgICAgICAgIGMgPSAhZS0+aXNEaXNhYmxlZEZvcm1Db250cm9sKCkg
PyBzeXN0ZW1Db2xvcihDU1NWYWx1ZUJ1dHRvbnRleHQsIG9wdGlvbnMpIDogc3lzdGVtQ29sb3Io
Q1NTVmFsdWVHcmF5dGV4dCwgb3B0aW9ucyk7CiAgICAgfQogICAgIHN0eWxlLnNldENvbG9yKGMp
OwpAQCAtMTgwMCw3ICsxODAwLDcgQEAgdm9pZCBSZW5kZXJUaGVtZU1hYzo6c2V0UG9wdXBCdXR0
b25DZWxsU3RhdGUoY29uc3QgUmVuZGVyT2JqZWN0JiBvLCBjb25zdCBJbnRTaXoKIAogdm9pZCBS
ZW5kZXJUaGVtZU1hYzo6cGFpbnRDZWxsQW5kU2V0Rm9jdXNlZEVsZW1lbnROZWVkc1JlcGFpbnRJ
Zk5lY2Vzc2FyeShOU0NlbGwqIGNlbGwsIGNvbnN0IFJlbmRlck9iamVjdCYgcmVuZGVyZXIsIGNv
bnN0IFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBGbG9hdFJlY3QmIHJlY3QpCiB7Ci0gICAg
TG9jYWxEZWZhdWx0U3lzdGVtQXBwZWFyYW5jZSBsb2NhbEFwcGVhcmFuY2UodXNpbmdEYXJrQXBw
ZWFyYW5jZShyZW5kZXJlcikpOworICAgIExvY2FsRGVmYXVsdFN5c3RlbUFwcGVhcmFuY2UgbG9j
YWxBcHBlYXJhbmNlKHJlbmRlcmVyLnVzZURhcmtBcHBlYXJhbmNlKCkpOwogICAgIGJvb2wgc2hv
dWxkRHJhd0ZvY3VzUmluZyA9IGlzRm9jdXNlZChyZW5kZXJlcikgJiYgcmVuZGVyZXIuc3R5bGUo
KS5vdXRsaW5lU3R5bGVJc0F1dG8oKSA9PSBPdXRsaW5lSXNBdXRvOjpPbjsKICAgICBib29sIHNo
b3VsZFVzZUltYWdlQnVmZmVyID0gcmVuZGVyZXIuc3R5bGUoKS5lZmZlY3RpdmVab29tKCkgIT0g
MSB8fCByZW5kZXJlci5wYWdlKCkucGFnZVNjYWxlRmFjdG9yKCkgIT0gMTsKICAgICBib29sIHNo
b3VsZERyYXdDZWxsID0gdHJ1ZTsKQEAgLTE4ODIsNyArMTg4Miw3IEBAIGJvb2wgUmVuZGVyVGhl
bWVNYWM6OnBhaW50U2xpZGVyVGh1bWIoY29uc3QgUmVuZGVyT2JqZWN0JiBvLCBjb25zdCBQYWlu
dEluZm8mIHBhCiAgICAgICAgID8gc2xpZGVyVGh1bWJWZXJ0aWNhbCgpCiAgICAgICAgIDogc2xp
ZGVyVGh1bWJIb3Jpem9udGFsKCk7CiAKLSAgICBMb2NhbERlZmF1bHRTeXN0ZW1BcHBlYXJhbmNl
IGxvY2FsQXBwZWFyYW5jZSh1c2luZ0RhcmtBcHBlYXJhbmNlKG8pKTsKKyAgICBMb2NhbERlZmF1
bHRTeXN0ZW1BcHBlYXJhbmNlIGxvY2FsQXBwZWFyYW5jZShvLnVzZURhcmtBcHBlYXJhbmNlKCkp
OwogCiAgICAgTG9jYWxDdXJyZW50R3JhcGhpY3NDb250ZXh0IGxvY2FsQ29udGV4dChwYWludElu
Zm8uY29udGV4dCgpKTsKIApAQCAtMjk5NCwxMSArMjk5NCw2IEBAIGJvb2wgUmVuZGVyVGhlbWVN
YWM6OnBhaW50QXR0YWNobWVudChjb25zdCBSZW5kZXJPYmplY3QmIHJlbmRlcmVyLCBjb25zdCBQ
YWludEluCiAKICNlbmRpZiAvLyBFTkFCTEUoQVRUQUNITUVOVF9FTEVNRU5UKQogCi1ib29sIFJl
bmRlclRoZW1lTWFjOjp1c2luZ0RhcmtBcHBlYXJhbmNlKGNvbnN0IFJlbmRlck9iamVjdCYgbykg
Y29uc3QKLXsKLSAgICByZXR1cm4gby5kb2N1bWVudCgpLnVzZURhcmtBcHBlYXJhbmNlKCk7Ci19
Ci0KIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIFBMQVRGT1JNKE1BQykKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5oIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmgKaW5kZXggOTgxYjhl
ZWVlYmU5NmE2MWIxYWFkMzYzMjQyZDc0ZTk2ODFjMDNlZC4uNzFlMDBiODU4M2Q0MGE1YzI3YTZl
YTExMGY1MjViOTA0Y2Q3MTM0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N0eWxlL1JlbmRlclN0eWxlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxl
L1JlbmRlclN0eWxlLmgKQEAgLTYzMiw2ICs2MzIsMTAgQEAgcHVibGljOgogCiAgICAgUnVieVBv
c2l0aW9uIHJ1YnlQb3NpdGlvbigpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PFJ1YnlQb3Np
dGlvbj4obV9yYXJlSW5oZXJpdGVkRGF0YS0+cnVieVBvc2l0aW9uKTsgfQogCisjaWYgRU5BQkxF
KERBUktfTU9ERV9DU1MpCisgICAgT3B0aW9uU2V0PENvbG9yU2NoZW1lcz4gc3VwcG9ydGVkQ29s
b3JTY2hlbWVzKCkgY29uc3QgeyByZXR1cm4gT3B0aW9uU2V0PENvbG9yU2NoZW1lcz46OmZyb21S
YXcobV9yYXJlSW5oZXJpdGVkRGF0YS0+c3VwcG9ydGVkQ29sb3JTY2hlbWVzKTsgfQorI2VuZGlm
CisKICAgICBUZXh0T3JpZW50YXRpb24gdGV4dE9yaWVudGF0aW9uKCkgY29uc3QgeyByZXR1cm4g
c3RhdGljX2Nhc3Q8VGV4dE9yaWVudGF0aW9uPihtX3JhcmVJbmhlcml0ZWREYXRhLT50ZXh0T3Jp
ZW50YXRpb24pOyB9CiAKICAgICBPYmplY3RGaXQgb2JqZWN0Rml0KCkgY29uc3QgeyByZXR1cm4g
c3RhdGljX2Nhc3Q8T2JqZWN0Rml0PihtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5vYmplY3RGaXQp
OyB9CkBAIC0xMTY1LDYgKzExNjksMTAgQEAgcHVibGljOgogCiAgICAgdm9pZCBzZXRSdWJ5UG9z
aXRpb24oUnVieVBvc2l0aW9uIHBvc2l0aW9uKSB7IFNFVF9WQVIobV9yYXJlSW5oZXJpdGVkRGF0
YSwgcnVieVBvc2l0aW9uLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4ocG9zaXRpb24pKTsgfQogCisj
aWYgRU5BQkxFKERBUktfTU9ERV9DU1MpCisgICAgdm9pZCBzZXRTdXBwb3J0ZWRDb2xvclNjaGVt
ZXMoT3B0aW9uU2V0PENvbG9yU2NoZW1lcz4gY29sb3JTY2hlbWVzKSB7IFNFVF9WQVIobV9yYXJl
SW5oZXJpdGVkRGF0YSwgc3VwcG9ydGVkQ29sb3JTY2hlbWVzLCBjb2xvclNjaGVtZXMudG9SYXco
KSk7IH0KKyNlbmRpZgorCiAgICAgdm9pZCBzZXRGaWx0ZXIoY29uc3QgRmlsdGVyT3BlcmF0aW9u
cyYgb3BzKSB7IFNFVF9ORVNURURfVkFSKG1fcmFyZU5vbkluaGVyaXRlZERhdGEsIGZpbHRlciwg
b3BlcmF0aW9ucywgb3BzKTsgfQogICAgIHZvaWQgc2V0QXBwbGVDb2xvckZpbHRlcihjb25zdCBG
aWx0ZXJPcGVyYXRpb25zJiBvcHMpIHsgU0VUX05FU1RFRF9WQVIobV9yYXJlSW5oZXJpdGVkRGF0
YSwgYXBwbGVDb2xvckZpbHRlciwgb3BlcmF0aW9ucywgb3BzKTsgfQogCkBAIC0xNTc4LDYgKzE1
ODYsMTAgQEAgcHVibGljOgogICAgIHN0YXRpYyBRdW90ZXNEYXRhKiBpbml0aWFsUXVvdGVzKCkg
eyByZXR1cm4gbnVsbHB0cjsgfQogICAgIHN0YXRpYyBjb25zdCBBdG9taWNTdHJpbmcmIGluaXRp
YWxDb250ZW50QWx0VGV4dCgpIHsgcmV0dXJuIGVtcHR5QXRvbSgpOyB9CiAKKyNpZiBFTkFCTEUo
REFSS19NT0RFX0NTUykKKyAgICBzdGF0aWMgT3B0aW9uU2V0PENvbG9yU2NoZW1lcz4gaW5pdGlh
bFN1cHBvcnRlZENvbG9yU2NoZW1lcygpIHsgcmV0dXJuIE9wdGlvblNldDxDb2xvclNjaGVtZXM+
IHsgfTsgfQorI2VuZGlmCisKICNpZiBFTkFCTEUoQ1NTM19URVhUKQogICAgIHN0YXRpYyBUZXh0
SW5kZW50TGluZSBpbml0aWFsVGV4dEluZGVudExpbmUoKSB7IHJldHVybiBUZXh0SW5kZW50TGlu
ZTo6Rmlyc3RMaW5lOyB9CiAgICAgc3RhdGljIFRleHRJbmRlbnRUeXBlIGluaXRpYWxUZXh0SW5k
ZW50VHlwZSgpIHsgcmV0dXJuIFRleHRJbmRlbnRUeXBlOjpOb3JtYWw7IH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZUNvbnN0YW50cy5oIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlQ29uc3RhbnRzLmgKaW5k
ZXggMTc2ZWIyMTNhN2E2ZTc4MmUzMTA3OTBkNTEwZjBjZDFiM2Q5ZTAyOC4uNjE0YTk3NzVkY2Fk
MjMzYjM3OTBjMTU5MWQ2OGM0MzA4ODk5NWFkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlQ29uc3RhbnRzLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlQ29uc3RhbnRzLmgKQEAgLTEwMTgsNiArMTAx
OCwxNCBAQCBlbnVtIGNsYXNzIFJ1YnlQb3NpdGlvbiA6IHVpbnQ4X3QgewogICAgIEludGVyQ2hh
cmFjdGVyCiB9OwogCisjaWYgRU5BQkxFKERBUktfTU9ERV9DU1MpCitlbnVtIGNsYXNzIENvbG9y
U2NoZW1lcyA6IHVpbnQ4X3QgeworICAgIE9ubHkgPSAxIDw8IDAsCisgICAgTGlnaHQgPSAxIDw8
IDEsCisgICAgRGFyayA9IDEgPDwgMgorfTsKKyNlbmRpZgorCiBzdGF0aWMgY29uc3Qgc2l6ZV90
IEdyaWRBdXRvRmxvd0JpdHMgPSA0OwogZW51bSBJbnRlcm5hbEdyaWRBdXRvRmxvd0FsZ29yaXRo
bSB7CiAgICAgSW50ZXJuYWxBdXRvRmxvd0FsZ29yaXRobVNwYXJzZSA9IDEgPDwgMCwKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVJhcmVJbmhlcml0ZWRE
YXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVJhcmVJbmhlcml0
ZWREYXRhLmNwcAppbmRleCA1ZmI3OWIzZjk0N2U0NDZiNzBlZjMzODI3Y2M3MjhjYmM4MGViMDZh
Li5iZGE1YTE2OWMzZGI2OTQ1NjRjOWUxZTUxNTQzNjhmMDQzMTA3ZGNmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVSYXJlSW5oZXJpdGVkRGF0YS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlUmFyZUluaGVyaXRlZERh
dGEuY3BwCkBAIC0xMTUsNiArMTE1LDkgQEAgU3R5bGVSYXJlSW5oZXJpdGVkRGF0YTo6U3R5bGVS
YXJlSW5oZXJpdGVkRGF0YSgpCiAgICAgLCBpbWFnZVJlc29sdXRpb25Tb3VyY2UoUmVuZGVyU3R5
bGU6OmluaXRpYWxJbWFnZVJlc29sdXRpb25Tb3VyY2UoKSkKICAgICAsIGltYWdlUmVzb2x1dGlv
blNuYXAoUmVuZGVyU3R5bGU6OmluaXRpYWxJbWFnZVJlc29sdXRpb25TbmFwKCkpCiAjZW5kaWYK
KyNpZiBFTkFCTEUoREFSS19NT0RFX0NTUykKKyAgICAsIHN1cHBvcnRlZENvbG9yU2NoZW1lcyhS
ZW5kZXJTdHlsZTo6aW5pdGlhbFN1cHBvcnRlZENvbG9yU2NoZW1lcygpLnRvUmF3KCkpCisjZW5k
aWYKICNpZiBFTkFCTEUoQ1NTM19URVhUKQogICAgICwgdGV4dEFsaWduTGFzdChSZW5kZXJTdHls
ZTo6aW5pdGlhbFRleHRBbGlnbkxhc3QoKSkKICAgICAsIHRleHRKdXN0aWZ5KFJlbmRlclN0eWxl
Ojppbml0aWFsVGV4dEp1c3RpZnkoKSkKQEAgLTIxMCw2ICsyMTMsOSBAQCBpbmxpbmUgU3R5bGVS
YXJlSW5oZXJpdGVkRGF0YTo6U3R5bGVSYXJlSW5oZXJpdGVkRGF0YShjb25zdCBTdHlsZVJhcmVJ
bmhlcml0ZWREYQogICAgICwgaW1hZ2VSZXNvbHV0aW9uU291cmNlKG8uaW1hZ2VSZXNvbHV0aW9u
U291cmNlKQogICAgICwgaW1hZ2VSZXNvbHV0aW9uU25hcChvLmltYWdlUmVzb2x1dGlvblNuYXAp
CiAjZW5kaWYKKyNpZiBFTkFCTEUoREFSS19NT0RFX0NTUykKKyAgICAsIHN1cHBvcnRlZENvbG9y
U2NoZW1lcyhvLnN1cHBvcnRlZENvbG9yU2NoZW1lcykKKyNlbmRpZgogI2lmIEVOQUJMRShDU1Mz
X1RFWFQpCiAgICAgLCB0ZXh0QWxpZ25MYXN0KG8udGV4dEFsaWduTGFzdCkKICAgICAsIHRleHRK
dXN0aWZ5KG8udGV4dEp1c3RpZnkpCkBAIC0zMzAsNiArMzM2LDkgQEAgYm9vbCBTdHlsZVJhcmVJ
bmhlcml0ZWREYXRhOjpvcGVyYXRvcj09KGNvbnN0IFN0eWxlUmFyZUluaGVyaXRlZERhdGEmIG8p
IGNvbnN0CiAgICAgICAgICYmIGltYWdlUmVzb2x1dGlvblNuYXAgPT0gby5pbWFnZVJlc29sdXRp
b25TbmFwCiAgICAgICAgICYmIGltYWdlUmVzb2x1dGlvbiA9PSBvLmltYWdlUmVzb2x1dGlvbgog
I2VuZGlmCisjaWYgRU5BQkxFKERBUktfTU9ERV9DU1MpCisgICAgICAgICYmIHN1cHBvcnRlZENv
bG9yU2NoZW1lcyA9PSBvLnN1cHBvcnRlZENvbG9yU2NoZW1lcworI2VuZGlmCiAjaWYgRU5BQkxF
KENTUzNfVEVYVCkKICAgICAgICAgJiYgdGV4dEFsaWduTGFzdCA9PSBvLnRleHRBbGlnbkxhc3QK
ICAgICAgICAgJiYgdGV4dEp1c3RpZnkgPT0gby50ZXh0SnVzdGlmeQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlUmFyZUluaGVyaXRlZERhdGEuaCBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVJhcmVJbmhlcml0ZWREYXRhLmgKaW5k
ZXggYTNhZDE3NTAzNGM5ZjM3MWFlMTM1OGMyOGE1NDU4YWM4NGYwOGU5ZS4uZWQwNDQ4YTVmMTM4
MTUxZDA2ODUxZGQxZDUxMjg3M2VkMjVjYzQzZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N0eWxlL1N0eWxlUmFyZUluaGVyaXRlZERhdGEuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVSYXJlSW5oZXJpdGVkRGF0YS5oCkBAIC0xMjgsNiAr
MTI4LDkgQEAgcHVibGljOgogICAgIHVuc2lnbmVkIGltYWdlUmVzb2x1dGlvblNvdXJjZSA6IDE7
IC8vIEltYWdlUmVzb2x1dGlvblNvdXJjZQogICAgIHVuc2lnbmVkIGltYWdlUmVzb2x1dGlvblNu
YXAgOiAxOyAvLyBJbWFnZVJlc29sdXRpb25TbmFwCiAjZW5kaWYKKyNpZiBFTkFCTEUoREFSS19N
T0RFX0NTUykKKyAgICB1bnNpZ25lZCBzdXBwb3J0ZWRDb2xvclNjaGVtZXMgOiAzOyAvLyBDb2xv
clNjaGVtZXMKKyNlbmRpZgogI2lmIEVOQUJMRShDU1MzX1RFWFQpCiAgICAgdW5zaWduZWQgdGV4
dEFsaWduTGFzdCA6IDM7IC8vIFRleHRBbGlnbkxhc3QKICAgICB1bnNpZ25lZCB0ZXh0SnVzdGlm
eSA6IDI7IC8vIFRleHRKdXN0aWZ5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3Jh
cGhpY3MvU1ZHSW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdl
LmNwcAppbmRleCA5MWVmODUxNGU1ODNlZDM1MzgwZTdhYzc4MjdkMWJkMGY4MjU0MDRhLi4wNjA5
N2VjY2JiZTNjMmU2YzYyYTQ1OWRjMThlYjE2MmQ0OTk0OGE5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2
Zy9ncmFwaGljcy9TVkdJbWFnZS5jcHAKQEAgLTQ3LDYgKzQ3LDcgQEAKICNpbmNsdWRlICJQYWdl
Q29uZmlndXJhdGlvbi5oIgogI2luY2x1ZGUgIlJlbmRlclNWR1Jvb3QuaCIKICNpbmNsdWRlICJS
ZW5kZXJTdHlsZS5oIgorI2luY2x1ZGUgIlJlbmRlclZpZXcuaCIKICNpbmNsdWRlICJTVkdEb2N1
bWVudC5oIgogI2luY2x1ZGUgIlNWR0ZFSW1hZ2VFbGVtZW50LmgiCiAjaW5jbHVkZSAiU1ZHRm9y
ZWlnbk9iamVjdEVsZW1lbnQuaCIKQEAgLTMyNCw4ICszMjUsNyBAQCBJbWFnZURyYXdSZXN1bHQg
U1ZHSW1hZ2U6OmRyYXcoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3Qm
IGRzdFJlYwogICAgIH0KIAogI2lmIFBMQVRGT1JNKE1BQykKLSAgICBhdXRvKiBkb2N1bWVudCA9
IG1fcGFnZS0+bWFpbkZyYW1lKCkuZG9jdW1lbnQoKTsKLSAgICBMb2NhbERlZmF1bHRTeXN0ZW1B
cHBlYXJhbmNlIGxvY2FsQXBwZWFyYW5jZShkb2N1bWVudCA/IGRvY3VtZW50LT51c2VEYXJrQXBw
ZWFyYW5jZSgpIDogZmFsc2UpOworICAgIExvY2FsRGVmYXVsdFN5c3RlbUFwcGVhcmFuY2UgbG9j
YWxBcHBlYXJhbmNlKHZpZXctPnJlbmRlclZpZXcoKS0+dXNlRGFya0FwcGVhcmFuY2UoKSk7CiAj
ZW5kaWYKIAogICAgIHZpZXctPnBhaW50KGNvbnRleHQsIGludGVyc2VjdGlvbihjb250ZXh0LmNs
aXBCb3VuZHMoKSwgZW5jbG9zaW5nSW50UmVjdChzcmNSZWN0KSkpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0RPTS9JbmplY3RlZEJ1bmRsZVJh
bmdlSGFuZGxlLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9E
T00vSW5qZWN0ZWRCdW5kbGVSYW5nZUhhbmRsZS5jcHAKaW5kZXggM2Y0ZjU2N2RjNGJhZTYxODU1
NTI1MjA4NzRmNWZlYjU1Yzg4ZmMyMS4uNGJmZGQ3ZjlmNGM0Y2M0ZGZhNmRlYWFiYzAxZjRhNmMx
MTFlZGFjYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVu
ZGxlL0RPTS9JbmplY3RlZEJ1bmRsZVJhbmdlSGFuZGxlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvRE9NL0luamVjdGVkQnVuZGxlUmFuZ2VIYW5kbGUu
Y3BwCkBAIC00MSw2ICs0MSw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9KU1JhbmdlLmg+CiAjaW5j
bHVkZSA8V2ViQ29yZS9QYWdlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SYW5nZS5oPgorI2luY2x1
ZGUgPFdlYkNvcmUvUmVuZGVyVmlldy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvVmlzaWJsZVNlbGVj
dGlvbi5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL05ldmVyRGVz
dHJveWVkLmg+CkBAIC0xMjQsNyArMTI1LDggQEAgUmVmUHRyPFdlYkltYWdlPiBJbmplY3RlZEJ1
bmRsZVJhbmdlSGFuZGxlOjpyZW5kZXJlZEltYWdlKFNuYXBzaG90T3B0aW9ucyBvcHRpb24KICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICNpZiBQTEFURk9STShNQUMpCi0gICAgTG9jYWxEZWZh
dWx0U3lzdGVtQXBwZWFyYW5jZSBsb2NhbEFwcGVhcmFuY2Uob3duZXJEb2N1bWVudC51c2VEYXJr
QXBwZWFyYW5jZSgpKTsKKyAgICBSZW5kZXJWaWV3KiByZW5kZXJWaWV3ID0gZnJhbWVWaWV3LT5y
ZW5kZXJWaWV3KCk7CisgICAgTG9jYWxEZWZhdWx0U3lzdGVtQXBwZWFyYW5jZSBsb2NhbEFwcGVh
cmFuY2UocmVuZGVyVmlldyA/IHJlbmRlclZpZXctPnVzZURhcmtBcHBlYXJhbmNlKCkgOiBmYWxz
ZSk7CiAjZW5kaWYKIAogICAgIFJlZjxGcmFtZT4gcHJvdGVjdG9yKCpmcmFtZSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCmluZGV4IDgwYzUzODNhMmU1
NDg1NGU3M2M4NzY1MzdmY2M2NGYyM2NkZjFiZjcuLjJmNTRkNWRmZDRhZDU3MjFmOTM5ZDk0Njk2
NzMxZjY2MTNhODhkNzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYlBhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlBhZ2UuY3BwCkBAIC0xNTU2LDggKzE1NTYsOCBAQCB2b2lkIFdlYlBhZ2U6OnNjcm9sbE1haW5G
cmFtZUlmTm90QXRNYXhTY3JvbGxQb3NpdGlvbihjb25zdCBJbnRTaXplJiBzY3JvbGxPZmZzZQog
dm9pZCBXZWJQYWdlOjpkcmF3UmVjdChHcmFwaGljc0NvbnRleHQmIGdyYXBoaWNzQ29udGV4dCwg
Y29uc3QgSW50UmVjdCYgcmVjdCkKIHsKICNpZiBQTEFURk9STShNQUMpCi0gICAgYXV0byogZG9j
dW1lbnQgPSBtX21haW5GcmFtZS0+Y29yZUZyYW1lKCktPmRvY3VtZW50KCk7Ci0gICAgTG9jYWxE
ZWZhdWx0U3lzdGVtQXBwZWFyYW5jZSBsb2NhbEFwcGVhcmFuY2UoZG9jdW1lbnQgPyBkb2N1bWVu
dC0+dXNlRGFya0FwcGVhcmFuY2UoKSA6IGZhbHNlKTsKKyAgICBSZW5kZXJWaWV3KiByZW5kZXJW
aWV3ID0gbV9wYWdlLT5tYWluRnJhbWUoKS52aWV3KCktPnJlbmRlclZpZXcoKTsKKyAgICBMb2Nh
bERlZmF1bHRTeXN0ZW1BcHBlYXJhbmNlIGxvY2FsQXBwZWFyYW5jZShyZW5kZXJWaWV3ID8gcmVu
ZGVyVmlldy0+dXNlRGFya0FwcGVhcmFuY2UoKSA6IGZhbHNlKTsKICNlbmRpZgogCiAgICAgR3Jh
cGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKGdyYXBoaWNzQ29udGV4dCk7CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5k
ZXggNjQ5NzBhMGI1MGIzMjlkM2YxNTQ4NTQ0ZmE3Zjg3ZjUyODYzMDU3ZC4uY2VmN2ZmYjAyNDkz
OTFhYWU4ODUyMDNiMDQwMjM4ZWRkNDE4ZDc4NCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDE4
LTExLTA3ICBUaW1vdGh5IEhhdGNoZXIgIDx0aW1vdGh5QGFwcGxlLmNvbT4KKworICAgICAgICBB
ZGQgZXhwZXJpbWVudGFsIHN1cHBvcnQgZm9yIGEgYHN1cHBvcnRlZC1jb2xvci1zY2hlbWVzYCBD
U1MgcHJvcGVydHkuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xOTEzMTkKKyAgICAgICAgcmRhcjovL3Byb2JsZW0vNDU4NTIyNjEKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGNzcy1kYXJrLW1vZGUvcGFy
c2Utc3VwcG9ydGVkLWNvbG9yLXNjaGVtZXMtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAg
KiBjc3MtZGFyay1tb2RlL3BhcnNlLXN1cHBvcnRlZC1jb2xvci1zY2hlbWVzLmh0bWw6IEFkZGVk
LgorICAgICAgICAqIGNzcy1kYXJrLW1vZGUvc3VwcG9ydGVkLWNvbG9yLXNjaGVtZXMtY3NzLWV4
cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogY3NzLWRhcmstbW9kZS9zdXBwb3J0ZWQtY29s
b3Itc2NoZW1lcy1jc3MuaHRtbDogQWRkZWQuCisKIDIwMTgtMTEtMDcgIFJ5YW4gSGFkZGFkICA8
cnlhbmhhZGRhZEBhcHBsZS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgdXBkYXRlIHRlc3Qg
ZXhwZWN0YXRpb25zIGZvciBmYXN0L2V2ZW50cy9wb2ludGVyLgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvY3NzLWRhcmstbW9kZS9wYXJzZS1zdXBwb3J0ZWQtY29sb3Itc2NoZW1lcy1leHBlY3Rl
ZC50eHQgYi9MYXlvdXRUZXN0cy9jc3MtZGFyay1tb2RlL3BhcnNlLXN1cHBvcnRlZC1jb2xvci1z
Y2hlbWVzLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yYTI4N2Y1YzNhMGEwNGU4M2FiYmIxYTli
NDQxYzFhNzhkZWMzNzQ1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvY3NzLWRhcmst
bW9kZS9wYXJzZS1zdXBwb3J0ZWQtY29sb3Itc2NoZW1lcy1leHBlY3RlZC50eHQKQEAgLTAsMCAr
MSw0IEBACisKK1BBU1MgVGVzdCB2YWxpZCB2YWx1ZXMgCitQQVNTIFRlc3QgaW52YWxpZCB2YWx1
ZXMgCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Nzcy1kYXJrLW1vZGUvcGFyc2Utc3VwcG9y
dGVkLWNvbG9yLXNjaGVtZXMuaHRtbCBiL0xheW91dFRlc3RzL2Nzcy1kYXJrLW1vZGUvcGFyc2Ut
c3VwcG9ydGVkLWNvbG9yLXNjaGVtZXMuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xYmMxMGE4MjVkNzNmYjM3
NWFhNThlOTU4M2NmZDgyNDE2OWIwMjlmCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
Y3NzLWRhcmstbW9kZS9wYXJzZS1zdXBwb3J0ZWQtY29sb3Itc2NoZW1lcy5odG1sCkBAIC0wLDAg
KzEsMTI4IEBACis8IURPQ1RZUEUgaHRtbD4KKworPCEtLSB3ZWJraXQtdGVzdC1ydW5uZXIgWyBl
eHBlcmltZW50YWw6RGFya01vZGVDU1NFbmFibGVkPXRydWUgXSAtLT4KKworPHNjcmlwdCBzcmM9
Ii4uL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4v
cmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KKworPHN0eWxlPgorI3Rl
c3RBdXRvIHsKKyAgICBzdXBwb3J0ZWQtY29sb3Itc2NoZW1lczogYXV0bzsKK30KKworI3Rlc3RP
bmx5IHsKKyAgICBzdXBwb3J0ZWQtY29sb3Itc2NoZW1lczogb25seTsKK30KKworI3Rlc3RMaWdo
dCB7CisgICAgc3VwcG9ydGVkLWNvbG9yLXNjaGVtZXM6IGxpZ2h0OworfQorCisjdGVzdERhcmsg
eworICAgIHN1cHBvcnRlZC1jb2xvci1zY2hlbWVzOiBkYXJrOworfQorCisjdGVzdExpZ2h0RGFy
ayB7CisgICAgc3VwcG9ydGVkLWNvbG9yLXNjaGVtZXM6IGxpZ2h0IGRhcms7Cit9CisKKyN0ZXN0
RGFya0xpZ2h0IHsKKyAgICBzdXBwb3J0ZWQtY29sb3Itc2NoZW1lczogZGFyayBsaWdodDsKK30K
KworI3Rlc3RMaWdodERhcmtPbmx5IHsKKyAgICBzdXBwb3J0ZWQtY29sb3Itc2NoZW1lczogbGln
aHQgZGFyayBvbmx5OworfQorCisjdGVzdE9ubHlEYXJrIHsKKyAgICBzdXBwb3J0ZWQtY29sb3It
c2NoZW1lczogb25seSBkYXJrOworfQorCisjdGVzdExpZ2h0T25seURhcmsgeworICAgIHN1cHBv
cnRlZC1jb2xvci1zY2hlbWVzOiBsaWdodCBvbmx5IGRhcms7Cit9CisKKyN0ZXN0TGlnaHRVbmtu
b3duIHsKKyAgICBzdXBwb3J0ZWQtY29sb3Itc2NoZW1lczogbGlnaHQgZm9vOworfQorCisjdGVz
dFVua25vd25EYXJrT25seSB7CisgICAgc3VwcG9ydGVkLWNvbG9yLXNjaGVtZXM6IGJhciBkYXJr
IG9ubHk7Cit9CisKKyN0ZXN0TGlnaHRVbmtub3duT25seSB7CisgICAgc3VwcG9ydGVkLWNvbG9y
LXNjaGVtZXM6IGxpZ2h0IGJheiBvbmx5OworfQorCisjdGVzdEludmFsaWRMaWdodEF1dG8gewor
ICAgIHN1cHBvcnRlZC1jb2xvci1zY2hlbWVzOiBsaWdodCBhdXRvOworfQorCisjdGVzdEludmFs
aWRBdXRvRGFyayB7CisgICAgc3VwcG9ydGVkLWNvbG9yLXNjaGVtZXM6IGF1dG8gZGFyazsKK30K
KworI3Rlc3RJbnZhbGlkTGlnaHREYXJrTGlnaHQgeworICAgIHN1cHBvcnRlZC1jb2xvci1zY2hl
bWVzOiBsaWdodCBkYXJrIGxpZ2h0OworfQorCisjdGVzdEludmFsaWROdW1iZXIgeworICAgIHN1
cHBvcnRlZC1jb2xvci1zY2hlbWVzOiA0MjsKK30KKworI3Rlc3RJbnZhbGlkU3RyaW5nIHsKKyAg
ICBzdXBwb3J0ZWQtY29sb3Itc2NoZW1lczogImZvbyI7Cit9CisKKyN0ZXN0SW52YWxpZExpZ2h0
U3RyaW5nIHsKKyAgICBzdXBwb3J0ZWQtY29sb3Itc2NoZW1lczogbGlnaHQgImZvbyI7Cit9Cis8
L3N0eWxlPgorCis8ZGl2IGlkPSJ0ZXN0QXV0byI+PC9kaXY+Cis8ZGl2IGlkPSJ0ZXN0T25seSI+
PC9kaXY+Cis8ZGl2IGlkPSJ0ZXN0TGlnaHQiPjwvZGl2PgorPGRpdiBpZD0idGVzdERhcmsiPjwv
ZGl2PgorPGRpdiBpZD0idGVzdExpZ2h0RGFyayI+PC9kaXY+Cis8ZGl2IGlkPSJ0ZXN0RGFya0xp
Z2h0Ij48L2Rpdj4KKzxkaXYgaWQ9InRlc3RMaWdodERhcmtPbmx5Ij48L2Rpdj4KKzxkaXYgaWQ9
InRlc3RPbmx5RGFyayI+PC9kaXY+Cis8ZGl2IGlkPSJ0ZXN0TGlnaHRPbmx5RGFyayI+PC9kaXY+
Cis8ZGl2IGlkPSJ0ZXN0TGlnaHRVbmtub3duIj48L2Rpdj4KKzxkaXYgaWQ9InRlc3RVbmtub3du
RGFya09ubHkiPjwvZGl2PgorCis8ZGl2IGlkPSJ0ZXN0SW52YWxpZExpZ2h0QXV0byI+PC9kaXY+
Cis8ZGl2IGlkPSJ0ZXN0SW52YWxpZEF1dG9EYXJrIj48L2Rpdj4KKzxkaXYgaWQ9InRlc3RJbnZh
bGlkTGlnaHREYXJrTGlnaHQiPjwvZGl2PgorPGRpdiBpZD0idGVzdEludmFsaWROdW1iZXIiPjwv
ZGl2PgorPGRpdiBpZD0idGVzdEludmFsaWRTdHJpbmciPjwvZGl2PgorPGRpdiBpZD0idGVzdElu
dmFsaWRMaWdodFN0cmluZyI+PC9kaXY+CisKKzxzY3JpcHQ+CitmdW5jdGlvbiB0ZXN0X3Byb3Ao
aWQsIHByb3BlcnR5LCBleHBlY3RlZCkgeworICAgIGFzc2VydF9lcXVhbHMod2luZG93LmdldENv
bXB1dGVkU3R5bGUoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoaWQpKS5nZXRQcm9wZXJ0eVZhbHVl
KHByb3BlcnR5KSwgZXhwZWN0ZWQpOworfQorCit0ZXN0KGZ1bmN0aW9uKCkgeworICAgIHRlc3Rf
cHJvcCgidGVzdEF1dG8iLCAic3VwcG9ydGVkLWNvbG9yLXNjaGVtZXMiLCAiYXV0byIpOworICAg
IHRlc3RfcHJvcCgidGVzdE9ubHkiLCAic3VwcG9ydGVkLWNvbG9yLXNjaGVtZXMiLCAibGlnaHQg
b25seSIpOworICAgIHRlc3RfcHJvcCgidGVzdExpZ2h0IiwgInN1cHBvcnRlZC1jb2xvci1zY2hl
bWVzIiwgImxpZ2h0Iik7CisgICAgdGVzdF9wcm9wKCJ0ZXN0RGFyayIsICJzdXBwb3J0ZWQtY29s
b3Itc2NoZW1lcyIsICJkYXJrIik7CisgICAgdGVzdF9wcm9wKCJ0ZXN0TGlnaHREYXJrIiwgInN1
cHBvcnRlZC1jb2xvci1zY2hlbWVzIiwgImxpZ2h0IGRhcmsiKTsKKyAgICB0ZXN0X3Byb3AoInRl
c3REYXJrTGlnaHQiLCAic3VwcG9ydGVkLWNvbG9yLXNjaGVtZXMiLCAibGlnaHQgZGFyayIpOwor
ICAgIHRlc3RfcHJvcCgidGVzdExpZ2h0RGFya09ubHkiLCAic3VwcG9ydGVkLWNvbG9yLXNjaGVt
ZXMiLCAibGlnaHQgZGFyayBvbmx5Iik7CisgICAgdGVzdF9wcm9wKCJ0ZXN0T25seURhcmsiLCAi
c3VwcG9ydGVkLWNvbG9yLXNjaGVtZXMiLCAiZGFyayBvbmx5Iik7CisgICAgdGVzdF9wcm9wKCJ0
ZXN0TGlnaHRPbmx5RGFyayIsICJzdXBwb3J0ZWQtY29sb3Itc2NoZW1lcyIsICJsaWdodCBkYXJr
IG9ubHkiKTsKKyAgICB0ZXN0X3Byb3AoInRlc3RMaWdodFVua25vd24iLCAic3VwcG9ydGVkLWNv
bG9yLXNjaGVtZXMiLCAibGlnaHQiKTsKKyAgICB0ZXN0X3Byb3AoInRlc3RVbmtub3duRGFya09u
bHkiLCAic3VwcG9ydGVkLWNvbG9yLXNjaGVtZXMiLCAiZGFyayBvbmx5Iik7Cit9LCAiVGVzdCB2
YWxpZCB2YWx1ZXMiKTsKKwordGVzdChmdW5jdGlvbigpIHsKKyAgICB0ZXN0X3Byb3AoInRlc3RJ
bnZhbGlkTGlnaHRBdXRvIiwgInN1cHBvcnRlZC1jb2xvci1zY2hlbWVzIiwgImF1dG8iKTsKKyAg
ICB0ZXN0X3Byb3AoInRlc3RJbnZhbGlkQXV0b0RhcmsiLCAic3VwcG9ydGVkLWNvbG9yLXNjaGVt
ZXMiLCAiYXV0byIpOworICAgIHRlc3RfcHJvcCgidGVzdEludmFsaWRMaWdodERhcmtMaWdodCIs
ICJzdXBwb3J0ZWQtY29sb3Itc2NoZW1lcyIsICJhdXRvIik7CisgICAgdGVzdF9wcm9wKCJ0ZXN0
SW52YWxpZE51bWJlciIsICJzdXBwb3J0ZWQtY29sb3Itc2NoZW1lcyIsICJhdXRvIik7CisgICAg
dGVzdF9wcm9wKCJ0ZXN0SW52YWxpZFN0cmluZyIsICJzdXBwb3J0ZWQtY29sb3Itc2NoZW1lcyIs
ICJhdXRvIik7CisgICAgdGVzdF9wcm9wKCJ0ZXN0SW52YWxpZExpZ2h0U3RyaW5nIiwgInN1cHBv
cnRlZC1jb2xvci1zY2hlbWVzIiwgImF1dG8iKTsKK30sICJUZXN0IGludmFsaWQgdmFsdWVzIik7
Cis8L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Nzcy1kYXJrLW1vZGUvc3VwcG9y
dGVkLWNvbG9yLXNjaGVtZXMtY3NzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Nzcy1kYXJr
LW1vZGUvc3VwcG9ydGVkLWNvbG9yLXNjaGVtZXMtY3NzLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li5jZGRkNTZmNjMzOWMzM2U2MmVhZmY0ZjRjNjI4NTE3NWVlYjQ1ZjQ4Ci0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvY3NzLWRhcmstbW9kZS9zdXBwb3J0ZWQtY29sb3Itc2NoZW1lcy1j
c3MtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMjggQEAKKworUEFTUyBFbGVtZW50IGNvbG9ycyBh
cmUgY29ycmVjdCBpbiBsaWdodCBjb2xvciBzY2hlbWUgd2l0aCBvbmx5IGxpZ2h0IHN1cHBvcnRl
ZCBjb2xvciBzY2hlbWUgCitQQVNTIERhcmsgY29sb3Igc2NoZW1lIGVuYWJsZWQgCitQQVNTIEVs
ZW1lbnQgY29sb3JzIGFyZSBjb3JyZWN0IGluIGRhcmsgY29sb3Igc2NoZW1lIHdpdGggb25seSBs
aWdodCBzdXBwb3J0ZWQgY29sb3Igc2NoZW1lIAorUEFTUyBMaWdodCBjb2xvciBzY2hlbWUgZW5h
YmxlZCAKK1BBU1MgU3VwcG9ydGVkIGNvbG9yIHNjaGVtZXMgY2hhbmdlZCB0byBsaWdodCBhbmQg
ZGFyayAKK1BBU1MgRWxlbWVudCBjb2xvcnMgYXJlIGNvcnJlY3QgaW4gbGlnaHQgY29sb3Igc2No
ZW1lIHdpdGggbGlnaHQgYW5kIGRhcmsgc3VwcG9ydGVkIGNvbG9yIHNjaGVtZSAKK1BBU1MgRGFy
ayBjb2xvciBzY2hlbWUgZW5hYmxlZCAKK1BBU1MgRWxlbWVudCBjb2xvcnMgYXJlIGNvcnJlY3Qg
aW4gZGFyayBjb2xvciBzY2hlbWUgd2l0aCBsaWdodCBhbmQgZGFyayBzdXBwb3J0ZWQgY29sb3Ig
c2NoZW1lIAorUEFTUyBMaWdodCBjb2xvciBzY2hlbWUgZW5hYmxlZCAKK1BBU1MgU3VwcG9ydGVk
IGNvbG9yIHNjaGVtZXMgY2hhbmdlZCB0byBkYXJrIAorUEFTUyBFbGVtZW50IGNvbG9ycyBhcmUg
Y29ycmVjdCBpbiBsaWdodCBjb2xvciBzY2hlbWUgd2l0aCBvbmx5IGRhcmsgc3VwcG9ydGVkIGNv
bG9yIHNjaGVtZSAKK1BBU1MgRGFyayBjb2xvciBzY2hlbWUgZW5hYmxlZCAKK1BBU1MgRWxlbWVu
dCBjb2xvcnMgYXJlIGNvcnJlY3QgaW4gZGFyayBjb2xvciBzY2hlbWUgd2l0aCBvbmx5IGRhcmsg
c3VwcG9ydGVkIGNvbG9yIHNjaGVtZSAKK1BBU1MgU3VwcG9ydGVkIGNvbG9yIHNjaGVtZXMgY2hh
bmdlZCB0byBsaWdodCBhbmQgYSBib2d1cyB2YWx1ZSAKK1BBU1MgRWxlbWVudCBjb2xvcnMgYXJl
IGNvcnJlY3QgaW4gZGFyayBjb2xvciBzY2hlbWUgd2l0aCBvbmx5IGxpZ2h0IHN1cHBvcnRlZCBj
b2xvciBzY2hlbWUgCitQQVNTIFN1cHBvcnRlZCBjb2xvciBzY2hlbWVzIGNoYW5nZWQgdG8gYXV0
byB2YWx1ZSAKK1BBU1MgRWxlbWVudCBjb2xvcnMgYXJlIGNvcnJlY3QgaW4gZGFyayBjb2xvciBz
Y2hlbWUgd2l0aCBpbXBsaWNpdCBsaWdodCBzdXBwb3J0ZWQgY29sb3Igc2NoZW1lIAorUEFTUyBT
dXBwb3J0ZWQgY29sb3Igc2NoZW1lcyBjaGFuZ2VkIHRvIGxpZ2h0IGFuZCBkYXJrIHZpYSA8bWV0
YT4gZWxlbWVudCAKK1BBU1MgRWxlbWVudCBjb2xvcnMgYXJlIGNvcnJlY3QgaW4gZGFyayBjb2xv
ciBzY2hlbWUgd2l0aCBsaWdodCBhbmQgZGFyayBzdXBwb3J0ZWQgY29sb3Igc2NoZW1lIHZpYSA8
bWV0YT4gZWxlbWVudCAKK1BBU1MgU3VwcG9ydGVkIGNvbG9yIHNjaGVtZXMgY2hhbmdlZCB0byBs
aWdodCB2YWx1ZSAKK1BBU1MgRWxlbWVudCBjb2xvcnMgYXJlIGNvcnJlY3QgaW4gZGFyayBjb2xv
ciBzY2hlbWUgd2l0aCBleHBsaWNpdCBsaWdodCwgb3ZlcnJpZGluZyA8bWV0YT4gZWxlbWVudCAK
K1BBU1MgUmVtb3ZlIHRlc3QgbWV0YSBlbGVtZW50IAorUEFTUyBTdXBwb3J0ZWQgY29sb3Igc2No
ZW1lcyBjaGFuZ2VkIHRvIGxpZ2h0IGFuZCBkYXJrIAorUEFTUyBFbGVtZW50IGNvbG9ycyBhcmUg
Y29ycmVjdCBpbiBkYXJrIGNvbG9yIHNjaGVtZSB3aXRoIGxpZ2h0IGFuZCBkYXJrIHN1cHBvcnRl
ZCBjb2xvciBzY2hlbWUgCitQQVNTIFN1cHBvcnRlZCBjb2xvciBzY2hlbWVzIGNoYW5nZWQgdG8g
YSBib2d1cyB2YWx1ZSBhbmQgZGFyayAKK1BBU1MgRWxlbWVudCBjb2xvcnMgYXJlIGNvcnJlY3Qg
aW4gZGFyayBjb2xvciBzY2hlbWUgd2l0aCBkYXJrIHN1cHBvcnRlZCBjb2xvciBzY2hlbWUgCisK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Nzcy1kYXJrLW1vZGUvc3VwcG9ydGVkLWNvbG9yLXNj
aGVtZXMtY3NzLmh0bWwgYi9MYXlvdXRUZXN0cy9jc3MtZGFyay1tb2RlL3N1cHBvcnRlZC1jb2xv
ci1zY2hlbWVzLWNzcy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmI2Y2E2ODAxYWY0ZTdhMjRkODQ3MGIyZDk3
ZDcwZTE4Zjc2YjljZmUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9jc3MtZGFyay1t
b2RlL3N1cHBvcnRlZC1jb2xvci1zY2hlbWVzLWNzcy5odG1sCkBAIC0wLDAgKzEsMTUzIEBACis8
IURPQ1RZUEUgaHRtbD4KKworPCEtLSB3ZWJraXQtdGVzdC1ydW5uZXIgWyBleHBlcmltZW50YWw6
RGFya01vZGVDU1NFbmFibGVkPXRydWUgXSAtLT4KKworPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNl
cy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL3Rl
c3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KKworPHN0eWxlPgorI3Rlc3QxIHsKKyAgICBj
b2xvcjogdGV4dDsKK30KKzwvc3R5bGU+CisKKzxkaXYgaWQ9InRlc3QxIj48L2Rpdj4KKworPHNj
cmlwdD4KK2Z1bmN0aW9uIHRlc3RfcHJvcChpZCwgcHJvcCwgZXhwZWN0ZWQpIHsKKyAgICBhc3Nl
cnRfZXF1YWxzKHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KGlkKSkuZ2V0UHJvcGVydHlWYWx1ZShwcm9wKSwgZXhwZWN0ZWQpOworfQorCitmdW5jdGlvbiB0
ZXN0X2NvbG9yX2lzX3doaXRlKGlkKSB7CisgICAgdGVzdF9wcm9wKCJ0ZXN0MSIsICJjb2xvciIs
ICJyZ2IoMjU1LCAyNTUsIDI1NSkiKTsKK30KKworZnVuY3Rpb24gdGVzdF9jb2xvcl9pc19ibGFj
ayhpZCkgeworICAgIHRlc3RfcHJvcCgidGVzdDEiLCAiY29sb3IiLCAicmdiKDAsIDAsIDApIik7
Cit9CisKK3Rlc3QoZnVuY3Rpb24oKSB7CisgICAgLy8gVGhlIHNlbWFudGljIHRleHQgY29sb3Ig
c2hvdWxkIGJlIGJsYWNrLgorICAgIHRlc3RfY29sb3JfaXNfYmxhY2soInRlc3QxIik7Cit9LCAi
RWxlbWVudCBjb2xvcnMgYXJlIGNvcnJlY3QgaW4gbGlnaHQgY29sb3Igc2NoZW1lIHdpdGggb25s
eSBsaWdodCBzdXBwb3J0ZWQgY29sb3Igc2NoZW1lIik7CisKK3Rlc3QoZnVuY3Rpb24oKSB7Cisg
ICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMpCisgICAgICAgIGludGVybmFscy5zZXR0aW5ncy5zZXRV
c2VEYXJrQXBwZWFyYW5jZSh0cnVlKTsKK30sICJEYXJrIGNvbG9yIHNjaGVtZSBlbmFibGVkIik7
CisKK3Rlc3QoZnVuY3Rpb24oKSB7CisgICAgLy8gVGhlIHNlbWFudGljIHRleHQgY29sb3Igc2hv
dWxkIGJlIGJsYWNrLCBhbmQgbm90IGNoYW5nZS4KKyAgICB0ZXN0X2NvbG9yX2lzX2JsYWNrKCJ0
ZXN0MSIpOworfSwgIkVsZW1lbnQgY29sb3JzIGFyZSBjb3JyZWN0IGluIGRhcmsgY29sb3Igc2No
ZW1lIHdpdGggb25seSBsaWdodCBzdXBwb3J0ZWQgY29sb3Igc2NoZW1lIik7CisKK3Rlc3QoZnVu
Y3Rpb24oKSB7CisgICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMpCisgICAgICAgIGludGVybmFscy5z
ZXR0aW5ncy5zZXRVc2VEYXJrQXBwZWFyYW5jZShmYWxzZSk7Cit9LCAiTGlnaHQgY29sb3Igc2No
ZW1lIGVuYWJsZWQiKTsKKwordGVzdChmdW5jdGlvbigpIHsKKyAgICBkb2N1bWVudC5ib2R5LnN0
eWxlLnNldFByb3BlcnR5KCJzdXBwb3J0ZWQtY29sb3Itc2NoZW1lcyIsICJsaWdodCBkYXJrIik7
Cit9LCAiU3VwcG9ydGVkIGNvbG9yIHNjaGVtZXMgY2hhbmdlZCB0byBsaWdodCBhbmQgZGFyayIp
OworCit0ZXN0KGZ1bmN0aW9uKCkgeworICAgIC8vIFRoZSBzZW1hbnRpYyB0ZXh0IGNvbG9yIHNo
b3VsZCBiZSBibGFjay4KKyAgICB0ZXN0X2NvbG9yX2lzX2JsYWNrKCJ0ZXN0MSIpOworfSwgIkVs
ZW1lbnQgY29sb3JzIGFyZSBjb3JyZWN0IGluIGxpZ2h0IGNvbG9yIHNjaGVtZSB3aXRoIGxpZ2h0
IGFuZCBkYXJrIHN1cHBvcnRlZCBjb2xvciBzY2hlbWUiKTsKKwordGVzdChmdW5jdGlvbigpIHsK
KyAgICBpZiAod2luZG93LmludGVybmFscykKKyAgICAgICAgaW50ZXJuYWxzLnNldHRpbmdzLnNl
dFVzZURhcmtBcHBlYXJhbmNlKHRydWUpOworfSwgIkRhcmsgY29sb3Igc2NoZW1lIGVuYWJsZWQi
KTsKKwordGVzdChmdW5jdGlvbigpIHsKKyAgICAvLyBUaGUgc2VtYW50aWMgdGV4dCBjb2xvciBz
aG91bGQgYmUgd2hpdGUuCisgICAgdGVzdF9jb2xvcl9pc193aGl0ZSgidGVzdDEiKTsKK30sICJF
bGVtZW50IGNvbG9ycyBhcmUgY29ycmVjdCBpbiBkYXJrIGNvbG9yIHNjaGVtZSB3aXRoIGxpZ2h0
IGFuZCBkYXJrIHN1cHBvcnRlZCBjb2xvciBzY2hlbWUiKTsKKwordGVzdChmdW5jdGlvbigpIHsK
KyAgICBpZiAod2luZG93LmludGVybmFscykKKyAgICAgICAgaW50ZXJuYWxzLnNldHRpbmdzLnNl
dFVzZURhcmtBcHBlYXJhbmNlKGZhbHNlKTsKK30sICJMaWdodCBjb2xvciBzY2hlbWUgZW5hYmxl
ZCIpOworCit0ZXN0KGZ1bmN0aW9uKCkgeworICAgIGRvY3VtZW50LmJvZHkuc3R5bGUuc2V0UHJv
cGVydHkoInN1cHBvcnRlZC1jb2xvci1zY2hlbWVzIiwgImRhcmsiKTsKK30sICJTdXBwb3J0ZWQg
Y29sb3Igc2NoZW1lcyBjaGFuZ2VkIHRvIGRhcmsiKTsKKwordGVzdChmdW5jdGlvbigpIHsKKyAg
ICAvLyBUaGUgc2VtYW50aWMgdGV4dCBjb2xvciBzaG91bGQgYmUgd2hpdGUuCisgICAgdGVzdF9j
b2xvcl9pc193aGl0ZSgidGVzdDEiKTsKK30sICJFbGVtZW50IGNvbG9ycyBhcmUgY29ycmVjdCBp
biBsaWdodCBjb2xvciBzY2hlbWUgd2l0aCBvbmx5IGRhcmsgc3VwcG9ydGVkIGNvbG9yIHNjaGVt
ZSIpOworCit0ZXN0KGZ1bmN0aW9uKCkgeworICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzKQorICAg
ICAgICBpbnRlcm5hbHMuc2V0dGluZ3Muc2V0VXNlRGFya0FwcGVhcmFuY2UodHJ1ZSk7Cit9LCAi
RGFyayBjb2xvciBzY2hlbWUgZW5hYmxlZCIpOworCit0ZXN0KGZ1bmN0aW9uKCkgeworICAgIC8v
IFRoZSBzZW1hbnRpYyB0ZXh0IGNvbG9yIHNob3VsZCBiZSB3aGl0ZSBzdGlsbC4KKyAgICB0ZXN0
X2NvbG9yX2lzX3doaXRlKCJ0ZXN0MSIpOworfSwgIkVsZW1lbnQgY29sb3JzIGFyZSBjb3JyZWN0
IGluIGRhcmsgY29sb3Igc2NoZW1lIHdpdGggb25seSBkYXJrIHN1cHBvcnRlZCBjb2xvciBzY2hl
bWUiKTsKKwordGVzdChmdW5jdGlvbigpIHsKKyAgICBkb2N1bWVudC5ib2R5LnN0eWxlLnNldFBy
b3BlcnR5KCJzdXBwb3J0ZWQtY29sb3Itc2NoZW1lcyIsICJsaWdodCBmb28iKTsKK30sICJTdXBw
b3J0ZWQgY29sb3Igc2NoZW1lcyBjaGFuZ2VkIHRvIGxpZ2h0IGFuZCBhIGJvZ3VzIHZhbHVlIik7
CisKK3Rlc3QoZnVuY3Rpb24oKSB7CisgICAgLy8gVGhlIHNlbWFudGljIHRleHQgY29sb3Igc2hv
dWxkIGJlIGJsYWNrIGFnYWluLgorICAgIHRlc3RfY29sb3JfaXNfYmxhY2soInRlc3QxIik7Cit9
LCAiRWxlbWVudCBjb2xvcnMgYXJlIGNvcnJlY3QgaW4gZGFyayBjb2xvciBzY2hlbWUgd2l0aCBv
bmx5IGxpZ2h0IHN1cHBvcnRlZCBjb2xvciBzY2hlbWUiKTsKKwordGVzdChmdW5jdGlvbigpIHsK
KyAgICBkb2N1bWVudC5ib2R5LnN0eWxlLnNldFByb3BlcnR5KCJzdXBwb3J0ZWQtY29sb3Itc2No
ZW1lcyIsICJhdXRvIik7Cit9LCAiU3VwcG9ydGVkIGNvbG9yIHNjaGVtZXMgY2hhbmdlZCB0byBh
dXRvIHZhbHVlIik7CisKK3Rlc3QoZnVuY3Rpb24oKSB7CisgICAgLy8gVGhlIHNlbWFudGljIHRl
eHQgY29sb3Igc2hvdWxkIGJlIGJsYWNrIHN0aWxsLgorICAgIHRlc3RfY29sb3JfaXNfYmxhY2so
InRlc3QxIik7Cit9LCAiRWxlbWVudCBjb2xvcnMgYXJlIGNvcnJlY3QgaW4gZGFyayBjb2xvciBz
Y2hlbWUgd2l0aCBpbXBsaWNpdCBsaWdodCBzdXBwb3J0ZWQgY29sb3Igc2NoZW1lIik7CisKK3Rl
c3QoZnVuY3Rpb24oKSB7CisgICAgbGV0IG1ldGEgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJt
ZXRhIik7CisgICAgbWV0YS5pZCA9ICJ0ZXN0LW1ldGEiOworICAgIG1ldGEubmFtZSA9ICJzdXBw
b3J0ZWQtY29sb3Itc2NoZW1lcyI7CisgICAgbWV0YS5jb250ZW50ID0gImxpZ2h0IGRhcmsiOwor
ICAgIGRvY3VtZW50LmhlYWQuYXBwZW5kQ2hpbGQobWV0YSk7Cit9LCAiU3VwcG9ydGVkIGNvbG9y
IHNjaGVtZXMgY2hhbmdlZCB0byBsaWdodCBhbmQgZGFyayB2aWEgPG1ldGE+IGVsZW1lbnQiKTsK
KwordGVzdChmdW5jdGlvbigpIHsKKyAgICAvLyBUaGUgc2VtYW50aWMgdGV4dCBjb2xvciBzaG91
bGQgYmUgd2hpdGUgbm93LgorICAgIHRlc3RfY29sb3JfaXNfd2hpdGUoInRlc3QxIik7Cit9LCAi
RWxlbWVudCBjb2xvcnMgYXJlIGNvcnJlY3QgaW4gZGFyayBjb2xvciBzY2hlbWUgd2l0aCBsaWdo
dCBhbmQgZGFyayBzdXBwb3J0ZWQgY29sb3Igc2NoZW1lIHZpYSA8bWV0YT4gZWxlbWVudCIpOwor
Cit0ZXN0KGZ1bmN0aW9uKCkgeworICAgIGRvY3VtZW50LmJvZHkuc3R5bGUuc2V0UHJvcGVydHko
InN1cHBvcnRlZC1jb2xvci1zY2hlbWVzIiwgImxpZ2h0Iik7Cit9LCAiU3VwcG9ydGVkIGNvbG9y
IHNjaGVtZXMgY2hhbmdlZCB0byBsaWdodCB2YWx1ZSIpOworCit0ZXN0KGZ1bmN0aW9uKCkgewor
ICAgIC8vIFRoZSBzZW1hbnRpYyB0ZXh0IGNvbG9yIHNob3VsZCBiZSBibGFjayBhZ2Fpbi4KKyAg
ICB0ZXN0X2NvbG9yX2lzX2JsYWNrKCJ0ZXN0MSIpOworfSwgIkVsZW1lbnQgY29sb3JzIGFyZSBj
b3JyZWN0IGluIGRhcmsgY29sb3Igc2NoZW1lIHdpdGggZXhwbGljaXQgbGlnaHQsIG92ZXJyaWRp
bmcgPG1ldGE+IGVsZW1lbnQiKTsKKwordGVzdChmdW5jdGlvbigpIHsKKyAgICBkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCgidGVzdC1tZXRhIikucmVtb3ZlKCk7Cit9LCAiUmVtb3ZlIHRlc3QgbWV0
YSBlbGVtZW50Iik7CisKK3Rlc3QoZnVuY3Rpb24oKSB7CisgICAgZG9jdW1lbnQuYm9keS5zdHls
ZS5zZXRQcm9wZXJ0eSgic3VwcG9ydGVkLWNvbG9yLXNjaGVtZXMiLCAibGlnaHQgZGFyayIpOwor
fSwgIlN1cHBvcnRlZCBjb2xvciBzY2hlbWVzIGNoYW5nZWQgdG8gbGlnaHQgYW5kIGRhcmsiKTsK
KwordGVzdChmdW5jdGlvbigpIHsKKyAgICAvLyBUaGUgc2VtYW50aWMgdGV4dCBjb2xvciBzaG91
bGQgYmUgd2hpdGUgbm93LgorICAgIHRlc3RfY29sb3JfaXNfd2hpdGUoInRlc3QxIik7Cit9LCAi
RWxlbWVudCBjb2xvcnMgYXJlIGNvcnJlY3QgaW4gZGFyayBjb2xvciBzY2hlbWUgd2l0aCBsaWdo
dCBhbmQgZGFyayBzdXBwb3J0ZWQgY29sb3Igc2NoZW1lIik7CisKK3Rlc3QoZnVuY3Rpb24oKSB7
CisgICAgZG9jdW1lbnQuYm9keS5zdHlsZS5zZXRQcm9wZXJ0eSgic3VwcG9ydGVkLWNvbG9yLXNj
aGVtZXMiLCAiZm9vIGRhcmsiKTsKK30sICJTdXBwb3J0ZWQgY29sb3Igc2NoZW1lcyBjaGFuZ2Vk
IHRvIGEgYm9ndXMgdmFsdWUgYW5kIGRhcmsiKTsKKwordGVzdChmdW5jdGlvbigpIHsKKyAgICAv
LyBUaGUgc2VtYW50aWMgdGV4dCBjb2xvciBzaG91bGQgYmUgd2hpdGUgc3RpbGwuCisgICAgdGVz
dF9jb2xvcl9pc193aGl0ZSgidGVzdDEiKTsKK30sICJFbGVtZW50IGNvbG9ycyBhcmUgY29ycmVj
dCBpbiBkYXJrIGNvbG9yIHNjaGVtZSB3aXRoIGRhcmsgc3VwcG9ydGVkIGNvbG9yIHNjaGVtZSIp
OworPC9zY3JpcHQ+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>354185</attachid>
            <date>2018-11-07 17:14:09 -0800</date>
            <delta_ts>2018-11-08 01:02:26 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-191319-20181107171408.patch</filename>
            <type>text/plain</type>
            <size>65655</size>
            <attacher name="Timothy Hatcher">timothy</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM3OTI4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjY3OGM5ZWNkNGIzZGM2
ZDcxMGMyOTFlMDE1YTZjZmYzYzY0ZDZiZS4uZGZkMmFkZWU5NmZiOGYxNWVkZDE3MTUwNjJhNWQ1
YzNhYzkxNGRkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDk0IEBACisyMDE4LTExLTA3ICBUaW1v
dGh5IEhhdGNoZXIgIDx0aW1vdGh5QGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgZXhwZXJpbWVu
dGFsIHN1cHBvcnQgZm9yIGEgYHN1cHBvcnRlZC1jb2xvci1zY2hlbWVzYCBDU1MgcHJvcGVydHku
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTEzMTkK
KyAgICAgICAgcmRhcjovL3Byb2JsZW0vNDU4NTIyNjEKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUZXN0czogY3NzLWRhcmstbW9kZS9wYXJzZS1zdXBw
b3J0ZWQtY29sb3Itc2NoZW1lcy5odG1sCisgICAgICAgICAgICAgICBjc3MtZGFyay1tb2RlL3N1
cHBvcnRlZC1jb2xvci1zY2hlbWVzLWNzcy5odG1sCisKKyAgICAgICAgKiBjc3MvQ1NTQ29tcHV0
ZWRTdHlsZURlY2xhcmF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbXB1dGVkU3R5bGVF
eHRyYWN0b3I6OnZhbHVlRm9yUHJvcGVydHlpblN0eWxlKToKKyAgICAgICAgKiBjc3MvQ1NTUHJv
cGVydGllcy5qc29uOgorICAgICAgICAqIGNzcy9DU1NWYWx1ZUtleXdvcmRzLmluOgorICAgICAg
ICAqIGNzcy9TdHlsZUJ1aWxkZXJDb252ZXJ0ZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxl
QnVpbGRlckNvbnZlcnRlcjo6dmFsdWVUb0NvbG9yU2NoZW1lcyk6CisgICAgICAgIChXZWJDb3Jl
OjpTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRDb2xvclNjaGVtZXMpOgorICAgICAgICAq
IGNzcy9TdHlsZVJlc29sdmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUmVzb2x2ZXI6
OmNvbG9yRnJvbVByaW1pdGl2ZVZhbHVlIGNvbnN0KToKKyAgICAgICAgKiBjc3MvcGFyc2VyL0NT
U1Byb3BlcnR5UGFyc2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNvbnN1bWVTdXBwb3J0ZWRD
b2xvclNjaGVtZXMpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJvcGVydHlQYXJzZXI6OnBhcnNl
U2luZ2xlVmFsdWUpOgorICAgICAgICAqIGRvbS9Eb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpEb2N1bWVudDo6cmVzZXRMaW5rQ29sb3IpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1l
bnQ6OnJlc2V0VmlzaXRlZExpbmtDb2xvcik6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6
cmVzZXRBY3RpdmVMaW5rQ29sb3IpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnByb2Nl
c3NTdXBwb3J0ZWRDb2xvclNjaGVtZXMpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnVz
ZURhcmtBcHBlYXJhbmNlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpzdHls
ZUNvbG9yT3B0aW9ucyBjb25zdCk6CisgICAgICAgICogZG9tL0RvY3VtZW50Lmg6CisgICAgICAg
ICogZWRpdGluZy9jb2NvYS9XZWJDb250ZW50UmVhZGVyQ29jb2EubW06CisgICAgICAgIChXZWJD
b3JlOjpjcmVhdGVGcmFnbWVudCk6CisgICAgICAgICogaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVy
aW5nQ29udGV4dDJELmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc1JlbmRlcmluZ0NvbnRl
eHQyRDo6ZHJhd0ZvY3VzSWZOZWVkZWRJbnRlcm5hbCk6CisgICAgICAgICogaW5zcGVjdG9yL0lu
c3BlY3Rvck92ZXJsYXkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yT3ZlcmxheTo6
cGFpbnQpOgorICAgICAgICAqIHBhZ2UvRnJhbWVWaWV3LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkZyYW1lVmlldzo6dXNlRGFya0FwcGVhcmFuY2UgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
RnJhbWVWaWV3OjpwYWludFNjcm9sbENvcm5lcik6CisgICAgICAgICogcGxhdGZvcm0vbWFjL0Ry
YWdJbWFnZU1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZURyYWdJbWFnZUZvckxpbmsp
OgorICAgICAgICAqIHJlbmRlcmluZy9JbmxpbmVGbG93Qm94LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OklubGluZUZsb3dCb3g6OnBhaW50Qm94RGVjb3JhdGlvbnMpOgorICAgICAgICAqIHJlbmRl
cmluZy9JbmxpbmVUZXh0Qm94LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklubGluZVRleHRCb3g6
OnBhaW50UGxhdGZvcm1Eb2N1bWVudE1hcmtlcik6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRl
ckJveC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3g6OnBhaW50Um9vdEJveEZpbGxM
YXllcnMpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94OjpwYWludEJhY2tncm91bmQpOgor
ICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlckVsZW1lbnQ6OnNlbGVjdGlvbkNvbG9yIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlckVsZW1lbnQ6OnNlbGVjdGlvbkJhY2tncm91bmRDb2xvciBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJFbGVtZW50OjpwYWludEZvY3VzUmluZyk6CisgICAgICAgICogcmVu
ZGVyaW5nL1JlbmRlckltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckltYWdlOjpw
YWludEFyZWFFbGVtZW50Rm9jdXNSaW5nKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5
ZXJCYWNraW5nLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyQmFja2luZzo6cGFp
bnRDb250ZW50cyk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllckNvbXBvc2l0b3I6OnBhaW50Q29udGVu
dHMpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMaXN0Qm94LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlckxpc3RCb3g6OnBhaW50SXRlbUZvcmVncm91bmQpOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyTGlzdEJveDo6cGFpbnRJdGVtQmFja2dyb3VuZCk6CisgICAgICAgICogcmVu
ZGVyaW5nL1JlbmRlck9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJPYmplY3Q6
OnVzZURhcmtBcHBlYXJhbmNlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck9iamVj
dDo6c3R5bGVDb2xvck9wdGlvbnMgY29uc3QpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJP
YmplY3QuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGFibGVDZWxsLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlclRhYmxlQ2VsbDo6cGFpbnRCYWNrZ3JvdW5kc0JlaGluZENlbGwp
OgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUaGVtZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJUaGVtZTo6cGFpbnQpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUaGVtZS5o
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWU6OnVzaW5nRGFya0FwcGVhcmFuY2UgY29u
c3QpOiBEZWxldGVkLgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUaGVtZU1hYy5oOgorICAg
ICAgICAqIHJlbmRlcmluZy9SZW5kZXJUaGVtZU1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlclRoZW1lTWFjOjpkb2N1bWVudFZpZXdGb3IgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyVGhlbWVNYWM6OmFkanVzdE1lbnVMaXN0U3R5bGUgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyVGhlbWVNYWM6OnBhaW50Q2VsbEFuZFNldEZvY3VzZWRFbGVtZW50TmVlZHNS
ZXBhaW50SWZOZWNlc3NhcnkpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVNYWM6OnBh
aW50U2xpZGVyVGh1bWIpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVNYWM6OnVzaW5n
RGFya0FwcGVhcmFuY2UgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIHJlbmRlcmluZy9zdHls
ZS9SZW5kZXJTdHlsZS5oOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OnN1cHBvcnRl
ZENvbG9yU2NoZW1lcyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6c2V0
U3VwcG9ydGVkQ29sb3JTY2hlbWVzKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjpp
bml0aWFsU3VwcG9ydGVkQ29sb3JTY2hlbWVzKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUv
UmVuZGVyU3R5bGVDb25zdGFudHMuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvU3R5bGVS
YXJlSW5oZXJpdGVkRGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJhcmVJbmhlcml0
ZWREYXRhOjpTdHlsZVJhcmVJbmhlcml0ZWREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxl
UmFyZUluaGVyaXRlZERhdGE6Om9wZXJhdG9yPT0gY29uc3QpOgorICAgICAgICAqIHJlbmRlcmlu
Zy9zdHlsZS9TdHlsZVJhcmVJbmhlcml0ZWREYXRhLmg6CisgICAgICAgICogc3ZnL2dyYXBoaWNz
L1NWR0ltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ltYWdlOjpkcmF3KToKKwogMjAx
OC0xMS0wNyAgU2ltb24gRnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KIAogICAgICAg
ICBUaWxlQ29udHJvbGxlcjo6dGlsZVNpemUoKSBzaG91bGQgbm90IGhhdmUgc2lkZSBlZmZlY3Rz
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hh
bmdlTG9nCmluZGV4IDZmZjJmZDFlMmYzZmJiM2E3Y2MxN2Q1MTNjM2NkZDhkYjU3OWE4ZDYuLjRj
Mjg0Y2EyNWE3YTgyY2I1MWM1MzliODRmOWJkY2M5YzVmNmQ1M2UgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMTYgQEAKKzIwMTgtMTEtMDcgIFRpbW90aHkgSGF0Y2hlciAgPHRpbW90aHlAYXBwbGUuY29t
PgorCisgICAgICAgIEFkZCBleHBlcmltZW50YWwgc3VwcG9ydCBmb3IgYSBgc3VwcG9ydGVkLWNv
bG9yLXNjaGVtZXNgIENTUyBwcm9wZXJ0eS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE5MTMxOQorICAgICAgICByZGFyOi8vcHJvYmxlbS80NTg1MjI2
MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2Vi
UHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9ET00vSW5qZWN0ZWRCdW5kbGVSYW5nZUhhbmRsZS5jcHA6
CisgICAgICAgIChXZWJLaXQ6OkluamVjdGVkQnVuZGxlUmFuZ2VIYW5kbGU6OnJlbmRlcmVkSW1h
Z2UpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6V2ViUGFnZTo6ZHJhd1JlY3QpOgorCiAyMDE4LTExLTA3ICBaYW1pdWwgSGFxdWUg
IDx6aGFxdWVAYXBwbGUuY29tPgogCiAgICAgICAgIEZvcmNlIGEgZ3JlZ29yaWFuIGNhbGVuZGFy
IHRvIHNob3cgZm9yIGNyZWRpdCBjYXJkIGV4cGlyYXRpb24gZGF0ZSBpbnB1dHMKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwIGIv
U291cmNlL1dlYkNvcmUvY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHAKaW5kZXgg
MmVmNjYyOTU5YTk0YzdlZGZiOTlkMjhmNzkzZmI3YTBlNWZmYjY3NS4uZWNiNzViMzgxMzdjZjc4
MGYzNmZkYWJkZTY2MWY5ZmI0YzY2MDYyMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3Nz
L0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3Nz
L0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHAKQEAgLTQ0OCw2ICs0NDgsOSBAQCBzdGF0
aWMgY29uc3QgQ1NTUHJvcGVydHlJRCBjb21wdXRlZFByb3BlcnRpZXNbXSA9IHsKICAgICBDU1NQ
cm9wZXJ0eVN0cm9rZU1pdGVybGltaXQsCiAgICAgQ1NTUHJvcGVydHlTdHJva2VPcGFjaXR5LAog
ICAgIENTU1Byb3BlcnR5U3Ryb2tlV2lkdGgsCisjaWYgRU5BQkxFKERBUktfTU9ERV9DU1MpCisg
ICAgQ1NTUHJvcGVydHlTdXBwb3J0ZWRDb2xvclNjaGVtZXMsCisjZW5kaWYKICAgICBDU1NQcm9w
ZXJ0eUFsaWdubWVudEJhc2VsaW5lLAogICAgIENTU1Byb3BlcnR5QmFzZWxpbmVTaGlmdCwKICAg
ICBDU1NQcm9wZXJ0eURvbWluYW50QmFzZWxpbmUsCkBAIC0zOTY5LDYgKzM5NzIsMjQgQEAgUmVm
UHRyPENTU1ZhbHVlPiBDb21wdXRlZFN0eWxlRXh0cmFjdG9yOjp2YWx1ZUZvclByb3BlcnR5aW5T
dHlsZShjb25zdCBSZW5kZXJTdHkKICAgICAgICAgICAgIHJldHVybiBjc3NWYWx1ZVBvb2wuY3Jl
YXRlVmFsdWUoc3R5bGUuYXBwbGVQYXlCdXR0b25UeXBlKCkpOwogI2VuZGlmCiAKKyNpZiBFTkFC
TEUoREFSS19NT0RFX0NTUykKKyAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eVN1cHBvcnRlZENvbG9y
U2NoZW1lczogeworICAgICAgICAgICAgYXV0byBzdXBwb3J0ZWRDb2xvclNjaGVtZXMgPSBzdHls
ZS5zdXBwb3J0ZWRDb2xvclNjaGVtZXMoKTsKKyAgICAgICAgICAgIGlmIChzdXBwb3J0ZWRDb2xv
clNjaGVtZXMuaXNFbXB0eSgpKQorICAgICAgICAgICAgICAgIHJldHVybiBjc3NWYWx1ZVBvb2wu
Y3JlYXRlSWRlbnRpZmllclZhbHVlKENTU1ZhbHVlQXV0byk7CisKKyAgICAgICAgICAgIGF1dG8g
bGlzdCA9IENTU1ZhbHVlTGlzdDo6Y3JlYXRlU3BhY2VTZXBhcmF0ZWQoKTsKKyAgICAgICAgICAg
IGlmIChzdXBwb3J0ZWRDb2xvclNjaGVtZXMgJiBDb2xvclNjaGVtZXM6OkxpZ2h0KQorICAgICAg
ICAgICAgICAgIGxpc3QtPmFwcGVuZChjc3NWYWx1ZVBvb2wuY3JlYXRlSWRlbnRpZmllclZhbHVl
KENTU1ZhbHVlTGlnaHQpKTsKKyAgICAgICAgICAgIGlmIChzdXBwb3J0ZWRDb2xvclNjaGVtZXMg
JiBDb2xvclNjaGVtZXM6OkRhcmspCisgICAgICAgICAgICAgICAgbGlzdC0+YXBwZW5kKGNzc1Zh
bHVlUG9vbC5jcmVhdGVJZGVudGlmaWVyVmFsdWUoQ1NTVmFsdWVEYXJrKSk7CisgICAgICAgICAg
ICBpZiAoc3VwcG9ydGVkQ29sb3JTY2hlbWVzICYgQ29sb3JTY2hlbWVzOjpPbmx5KQorICAgICAg
ICAgICAgICAgIGxpc3QtPmFwcGVuZChjc3NWYWx1ZVBvb2wuY3JlYXRlSWRlbnRpZmllclZhbHVl
KENTU1ZhbHVlT25seSkpOworICAgICAgICAgICAgQVNTRVJUKGxpc3QtPmxlbmd0aCgpKTsKKyAg
ICAgICAgICAgIHJldHVybiBXVEZNb3ZlKGxpc3QpOworICAgICAgICB9CisjZW5kaWYKKwogICAg
ICAgICAvKiBJbmRpdmlkdWFsIHByb3BlcnRpZXMgbm90IHBhcnQgb2YgdGhlIHNwZWMgKi8KICAg
ICAgICAgY2FzZSBDU1NQcm9wZXJ0eUJhY2tncm91bmRSZXBlYXRYOgogICAgICAgICBjYXNlIENT
U1Byb3BlcnR5QmFja2dyb3VuZFJlcGVhdFk6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTUHJvcGVydGllcy5qc29uIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1Byb3BlcnRpZXMu
anNvbgppbmRleCAyOGQ4NDgyZDY2Y2Y4NDgzMWYzNjg3ZjZjYWY4ZDE5OWY0NjIwZTcwLi45ZTZl
Yjc0MTZiMmZhOTJjZDdkM2IyNDg0MTVjMmJiZWY0MjYzNTNkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTUHJvcGVydGllcy5qc29uCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NQcm9wZXJ0aWVzLmpzb24KQEAgLTU3MTIsNiArNTcxMiwyMiBAQAogICAgICAgICAgICAgfSwK
ICAgICAgICAgICAgICJzdGF0dXMiOiAibm9uLXN0YW5kYXJkIgogICAgICAgICB9LAorICAgICAg
ICAic3VwcG9ydGVkLWNvbG9yLXNjaGVtZXMiOiB7CisgICAgICAgICAgICAiaW5oZXJpdGVkIjog
dHJ1ZSwKKyAgICAgICAgICAgICJ2YWx1ZXMiOiBbCisgICAgICAgICAgICAgICAgImF1dG8iLAor
ICAgICAgICAgICAgICAgICJsaWdodCIsCisgICAgICAgICAgICAgICAgImRhcmsiLAorICAgICAg
ICAgICAgICAgICJvbmx5IgorICAgICAgICAgICAgXSwKKyAgICAgICAgICAgICJjb2RlZ2VuLXBy
b3BlcnRpZXMiOiB7CisgICAgICAgICAgICAgICAgImNvbnZlcnRlciI6ICJDb2xvclNjaGVtZXMi
LAorICAgICAgICAgICAgICAgICJlbmFibGUtaWYiOiAiRU5BQkxFX0RBUktfTU9ERV9DU1MiCisg
ICAgICAgICAgICB9LAorICAgICAgICAgICAgInN0YXR1cyI6IHsKKyAgICAgICAgICAgICAgICAi
c3RhdHVzIjogIm5vbi1zdGFuZGFyZCIKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSwKICAgICAg
ICAgIm9yZGVyIjogewogICAgICAgICAgICAgImNvZGVnZW4tcHJvcGVydGllcyI6IHsKICAgICAg
ICAgICAgICAgICAiYWxpYXNlcyI6IFsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NWYWx1ZUtleXdvcmRzLmluIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ZhbHVlS2V5d29yZHMu
aW4KaW5kZXggOTBmOTEyYWNlYjU1YTFhZmRiYWFiMDk1YjYyZmJjNTRhYmIzZDI1NC4uODZiNWU1
OTE0ZjQwZTczYWZiMTQ5NTIxODQzYTRlYzk3Yzg2MTAxOCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvY3NzL0NTU1ZhbHVlS2V5d29yZHMuaW4KKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NT
U1ZhbHVlS2V5d29yZHMuaW4KQEAgLTEzODQsNiArMTM4NCwxMSBAQCBuby1wcmVmZXJlbmNlCiBs
aWdodAogZGFyawogLy8gbm8tcHJlZmVyZW5jZQorCisvLyBzdXBwb3J0ZWQtY29sb3Itc2NoZW1l
cworb25seQorLy8gbGlnaHQKKy8vIGRhcmsKICNlbmRpZgogCiAvLyBhdXRvLXJlcGVhdApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlQnVpbGRlckNvbnZlcnRlci5oIGIvU291
cmNlL1dlYkNvcmUvY3NzL1N0eWxlQnVpbGRlckNvbnZlcnRlci5oCmluZGV4IDBlODM4YmI1ZDhk
ZjAzMzU2NDM4MmQ1NGYyYzMxOGExZmYxMjM4NzguLjg5ODZkMDk0YTdjOGEzNjdlZGViMzhjNzhl
YWRjYzY5MGRmZTk2YzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZUJ1aWxk
ZXJDb252ZXJ0ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVCdWlsZGVyQ29udmVy
dGVyLmgKQEAgLTc3LDYgKzc3LDkgQEAgcHVibGljOgogICAgIHRlbXBsYXRlPENTU1Byb3BlcnR5
SUQ+IHN0YXRpYyBOaW5lUGllY2VJbWFnZSBjb252ZXJ0Qm9yZGVyTWFzayhTdHlsZVJlc29sdmVy
JiwgQ1NTVmFsdWUmKTsKICAgICB0ZW1wbGF0ZTxDU1NQcm9wZXJ0eUlEPiBzdGF0aWMgUmVmUHRy
PFN0eWxlSW1hZ2U+IGNvbnZlcnRTdHlsZUltYWdlKFN0eWxlUmVzb2x2ZXImLCBDU1NWYWx1ZSYp
OwogICAgIHN0YXRpYyBUcmFuc2Zvcm1PcGVyYXRpb25zIGNvbnZlcnRUcmFuc2Zvcm0oU3R5bGVS
ZXNvbHZlciYsIGNvbnN0IENTU1ZhbHVlJik7CisjaWYgRU5BQkxFKERBUktfTU9ERV9DU1MpCisg
ICAgc3RhdGljIE9wdGlvblNldDxDb2xvclNjaGVtZXM+IGNvbnZlcnRDb2xvclNjaGVtZXMoU3R5
bGVSZXNvbHZlciYsIGNvbnN0IENTU1ZhbHVlJik7CisjZW5kaWYKICAgICBzdGF0aWMgU3RyaW5n
IGNvbnZlcnRTdHJpbmcoU3R5bGVSZXNvbHZlciYsIGNvbnN0IENTU1ZhbHVlJik7CiAgICAgc3Rh
dGljIFN0cmluZyBjb252ZXJ0U3RyaW5nT3JBdXRvKFN0eWxlUmVzb2x2ZXImLCBjb25zdCBDU1NW
YWx1ZSYpOwogICAgIHN0YXRpYyBTdHJpbmcgY29udmVydFN0cmluZ09yTm9uZShTdHlsZVJlc29s
dmVyJiwgY29uc3QgQ1NTVmFsdWUmKTsKQEAgLTE2NSw2ICsxNjgsMTAgQEAgcHJpdmF0ZToKICAg
ICBzdGF0aWMgTGVuZ3RoIHBhcnNlU25hcENvb3JkaW5hdGUoU3R5bGVSZXNvbHZlciYsIGNvbnN0
IENTU1ZhbHVlJik7CiAjZW5kaWYKIAorI2lmIEVOQUJMRShEQVJLX01PREVfQ1NTKQorICAgIHN0
YXRpYyBPcHRpb25TZXQ8Q29sb3JTY2hlbWVzPiB2YWx1ZVRvQ29sb3JTY2hlbWVzKGNvbnN0IENT
U1ByaW1pdGl2ZVZhbHVlJik7CisjZW5kaWYKKwogICAgIHN0YXRpYyBMZW5ndGggY29udmVydFRv
MTAwUGVyY2VudE1pbnVzTGVuZ3RoKGNvbnN0IExlbmd0aCYpOwogICAgIHRlbXBsYXRlPENTU1Zh
bHVlSUQsIENTU1ZhbHVlSUQ+IHN0YXRpYyBMZW5ndGggY29udmVydFBvc2l0aW9uQ29tcG9uZW50
KFN0eWxlUmVzb2x2ZXImLCBjb25zdCBDU1NQcmltaXRpdmVWYWx1ZSYpOwogCkBAIC00NTMsNiAr
NDYwLDQzIEBAIGlubGluZSBUcmFuc2Zvcm1PcGVyYXRpb25zIFN0eWxlQnVpbGRlckNvbnZlcnRl
cjo6Y29udmVydFRyYW5zZm9ybShTdHlsZVJlc29sdmVyCiAgICAgcmV0dXJuIG9wZXJhdGlvbnM7
CiB9CiAKKyNpZiBFTkFCTEUoREFSS19NT0RFX0NTUykKK2lubGluZSBPcHRpb25TZXQ8Q29sb3JT
Y2hlbWVzPiBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OnZhbHVlVG9Db2xvclNjaGVtZXMoY29uc3Qg
Q1NTUHJpbWl0aXZlVmFsdWUmIHByaW1pdGl2ZVZhbHVlKQoreworICAgIEFTU0VSVChwcmltaXRp
dmVWYWx1ZS5pc1ZhbHVlSUQoKSk7CisKKyAgICBzd2l0Y2ggKHByaW1pdGl2ZVZhbHVlLnZhbHVl
SUQoKSkgeworICAgIGNhc2UgQ1NTVmFsdWVBdXRvOgorICAgICAgICByZXR1cm4geyB9OworICAg
IGNhc2UgQ1NTVmFsdWVPbmx5OgorICAgICAgICByZXR1cm4gQ29sb3JTY2hlbWVzOjpPbmx5Owor
ICAgIGNhc2UgQ1NTVmFsdWVMaWdodDoKKyAgICAgICAgcmV0dXJuIENvbG9yU2NoZW1lczo6TGln
aHQ7CisgICAgY2FzZSBDU1NWYWx1ZURhcms6CisgICAgICAgIHJldHVybiBDb2xvclNjaGVtZXM6
OkRhcms7CisgICAgZGVmYXVsdDoKKyAgICAgICAgLy8gVW5rbm93biBpZGVudGlmaWVycyBhcmUg
YWxsb3dlZCBhbmQgaWdub3JlZC4KKyAgICAgICAgcmV0dXJuIHsgfTsKKyAgICB9Cit9CisKK2lu
bGluZSBPcHRpb25TZXQ8Q29sb3JTY2hlbWVzPiBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZl
cnRDb2xvclNjaGVtZXMoU3R5bGVSZXNvbHZlciYsIGNvbnN0IENTU1ZhbHVlJiB2YWx1ZSkKK3sK
KyAgICBPcHRpb25TZXQ8Q29sb3JTY2hlbWVzPiBjb2xvclNjaGVtZXM7CisgICAgaWYgKGlzPENT
U1ZhbHVlTGlzdD4odmFsdWUpKSB7CisgICAgICAgIGZvciAoYXV0byYgY3VycmVudFZhbHVlIDog
ZG93bmNhc3Q8Q1NTVmFsdWVMaXN0Pih2YWx1ZSkpCisgICAgICAgICAgICBjb2xvclNjaGVtZXMu
YWRkKHZhbHVlVG9Db2xvclNjaGVtZXMoZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KGN1cnJl
bnRWYWx1ZS5nZXQoKSkpKTsKKyAgICB9IGVsc2UgaWYgKGlzPENTU1ByaW1pdGl2ZVZhbHVlPih2
YWx1ZSkpCisgICAgICAgIGNvbG9yU2NoZW1lcyA9IHZhbHVlVG9Db2xvclNjaGVtZXMoZG93bmNh
c3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KHZhbHVlKSk7CisKKyAgICAvLyBJZiB0aGUgdmFsdWUgd2Fz
IGp1c3QgIm9ubHkiLCB0aGF0IGlzIHN5bm9ueW1vdXMgZm9yICJvbmx5IGxpZ2h0Ii4KKyAgICBp
ZiAoY29sb3JTY2hlbWVzID09IENvbG9yU2NoZW1lczo6T25seSkKKyAgICAgICAgY29sb3JTY2hl
bWVzLmFkZChDb2xvclNjaGVtZXM6OkxpZ2h0KTsKKworICAgIHJldHVybiBjb2xvclNjaGVtZXM7
Cit9CisjZW5kaWYKKwogaW5saW5lIFN0cmluZyBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZl
cnRTdHJpbmcoU3R5bGVSZXNvbHZlciYsIGNvbnN0IENTU1ZhbHVlJiB2YWx1ZSkKIHsKICAgICBy
ZXR1cm4gZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KHZhbHVlKS5zdHJpbmdWYWx1ZSgpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuY3BwCmluZGV4IDc1YjBiOGQ0MWEyOTQ0ZGMwOGUx
NGM1NWNlODE2OGYyZWJiODAxZDcuLjI0YjA2YmVjOTMzN2UxNmJiOGFiN2YyNGRlZjkwOWE3OGE1
MjgzYmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5jcHAKQEAgLTE4NDEsMTQgKzE4
NDEsMTQgQEAgQ29sb3IgU3R5bGVSZXNvbHZlcjo6Y29sb3JGcm9tUHJpbWl0aXZlVmFsdWUoY29u
c3QgQ1NTUHJpbWl0aXZlVmFsdWUmIHZhbHVlLCBib28KICAgICBjYXNlIENTU1ZhbHVlV2Via2l0
QWN0aXZlbGluazoKICAgICAgICAgcmV0dXJuIGRvY3VtZW50KCkuYWN0aXZlTGlua0NvbG9yKCk7
CiAgICAgY2FzZSBDU1NWYWx1ZVdlYmtpdEZvY3VzUmluZ0NvbG9yOgotICAgICAgICByZXR1cm4g
UmVuZGVyVGhlbWU6OmZvY3VzUmluZ0NvbG9yKGRvY3VtZW50KCkuc3R5bGVDb2xvck9wdGlvbnMo
KSk7CisgICAgICAgIHJldHVybiBSZW5kZXJUaGVtZTo6Zm9jdXNSaW5nQ29sb3IoZG9jdW1lbnQo
KS5zdHlsZUNvbG9yT3B0aW9ucyhtX3N0YXRlLnN0eWxlKCkpKTsKICAgICBjYXNlIENTU1ZhbHVl
Q3VycmVudGNvbG9yOgogICAgICAgICAvLyBDb2xvciBpcyBhbiBpbmhlcml0ZWQgcHJvcGVydHkg
c28gZGVwZW5kaW5nIG9uIGl0IGVmZmVjdGl2ZWx5IG1ha2VzIHRoZSBwcm9wZXJ0eSBpbmhlcml0
ZWQuCiAgICAgICAgIC8vIEZJWE1FOiBTZXR0aW5nIHRoZSBmbGFnIGFzIGEgc2lkZSBlZmZlY3Qg
b2YgY2FsbGluZyB0aGlzIGZ1bmN0aW9uIGlzIGEgYml0IG9ibGlxdWUuIENhbiB3ZSBkbyBiZXR0
ZXI/CiAgICAgICAgIG1fc3RhdGUuc3R5bGUoKS0+c2V0SGFzRXhwbGljaXRseUluaGVyaXRlZFBy
b3BlcnRpZXMoKTsKICAgICAgICAgcmV0dXJuIG1fc3RhdGUuc3R5bGUoKS0+Y29sb3IoKTsKICAg
ICBkZWZhdWx0OgotICAgICAgICByZXR1cm4gU3R5bGVDb2xvcjo6Y29sb3JGcm9tS2V5d29yZChp
ZGVudGlmaWVyLCBkb2N1bWVudCgpLnN0eWxlQ29sb3JPcHRpb25zKCkpOworICAgICAgICByZXR1
cm4gU3R5bGVDb2xvcjo6Y29sb3JGcm9tS2V5d29yZChpZGVudGlmaWVyLCBkb2N1bWVudCgpLnN0
eWxlQ29sb3JPcHRpb25zKG1fc3RhdGUuc3R5bGUoKSkpOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQcm9wZXJ0eVBhcnNlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1Byb3BlcnR5UGFyc2VyLmNwcAppbmRleCBkM2EwNDc3
YTc0MzIyZmEyNjJhMTY5MTFhNzMxOGI2YjY4YmQ3YTczLi4zMmZkYmM0NWY4Njk0ZmE1NjQ3MDY1
NGI0MjhlMWNlYTdjZTJiZmM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2Vy
L0NTU1Byb3BlcnR5UGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NT
U1Byb3BlcnR5UGFyc2VyLmNwcApAQCAtMzc0Nyw3ICszNzQ3LDUxIEBAIHN0YXRpYyBSZWZQdHI8
Q1NTVmFsdWU+IGNvbnN1bWVUZXh0RW1waGFzaXNQb3NpdGlvbihDU1NQYXJzZXJUb2tlblJhbmdl
JiByYW5nZSkKICAgICAgICAgbGlzdC0+YXBwZW5kKENTU1ZhbHVlUG9vbDo6c2luZ2xldG9uKCku
Y3JlYXRlSWRlbnRpZmllclZhbHVlKGxlZnRSaWdodFZhbHVlSUQpKTsKICAgICByZXR1cm4gbGlz
dDsKIH0KLSAgICAKKworI2lmIEVOQUJMRShEQVJLX01PREVfQ1NTKQorCitzdGF0aWMgUmVmUHRy
PENTU1ZhbHVlPiBjb25zdW1lU3VwcG9ydGVkQ29sb3JTY2hlbWVzKENTU1BhcnNlclRva2VuUmFu
Z2UmIHJhbmdlKQoreworICAgIGlmIChpc0F1dG8ocmFuZ2UucGVlaygpLmlkKCkpKQorICAgICAg
ICByZXR1cm4gY29uc3VtZUlkZW50KHJhbmdlKTsKKworICAgIFZlY3RvcjxDU1NWYWx1ZUlELCAz
PiBpZGVudGlmaWVyczsKKworICAgIHdoaWxlICghcmFuZ2UuYXRFbmQoKSkgeworICAgICAgICBp
ZiAocmFuZ2UucGVlaygpLnR5cGUoKSAhPSBJZGVudFRva2VuKQorICAgICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CisKKyAgICAgICAgQ1NTVmFsdWVJRCBpZCA9IHJhbmdlLnBlZWsoKS5pZCgpOwor
CisgICAgICAgIHN3aXRjaCAoaWQpIHsKKyAgICAgICAgY2FzZSBDU1NWYWx1ZUF1dG86CisgICAg
ICAgICAgICAvLyBBdXRvIGlzIG9ubHkgYWxsb3dlZCBhcyBhIHNpbmdsZSB2YWx1ZSwgYW5kIHdh
cyBoYW5kbGVkIGVhcmxpZXIuCisgICAgICAgICAgICAvLyBEb24ndCBhbGxvdyBpdCBpbiB0aGUg
bGlzdC4KKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgICAgIGNhc2UgQ1NTVmFs
dWVPbmx5OgorICAgICAgICBjYXNlIENTU1ZhbHVlTGlnaHQ6CisgICAgICAgIGNhc2UgQ1NTVmFs
dWVEYXJrOgorICAgICAgICAgICAgaWYgKCFpZGVudGlmaWVycy5hcHBlbmRJZk5vdENvbnRhaW5z
KGlkKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgICAgIGJyZWFr
OworCisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAvLyBVbmtub3duIGlkZW50aWZpZXJz
IGFyZSBhbGxvd2VkIGFuZCBpZ25vcmVkLgorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0K
KworICAgICAgICByYW5nZS5jb25zdW1lSW5jbHVkaW5nV2hpdGVzcGFjZSgpOworICAgIH0KKwor
ICAgIFJlZlB0cjxDU1NWYWx1ZUxpc3Q+IGxpc3QgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZVNwYWNl
U2VwYXJhdGVkKCk7CisgICAgZm9yIChhdXRvIGlkIDogaWRlbnRpZmllcnMpCisgICAgICAgIGxp
c3QtPmFwcGVuZChDU1NWYWx1ZVBvb2w6OnNpbmdsZXRvbigpLmNyZWF0ZUlkZW50aWZpZXJWYWx1
ZShpZCkpOworICAgIHJldHVybiBsaXN0OworfQorCisjZW5kaWYKKwogI2lmIEVOQUJMRShEQVNI
Qk9BUkRfU1VQUE9SVCkKIAogc3RhdGljIFJlZlB0cjxDU1NWYWx1ZT4gY29uc3VtZVdlYmtpdERh
c2hib2FyZFJlZ2lvbihDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSwgQ1NTUGFyc2VyTW9kZSBt
b2RlKQpAQCAtNDI4OSw2ICs0MzMzLDEwIEBAIFJlZlB0cjxDU1NWYWx1ZT4gQ1NTUHJvcGVydHlQ
YXJzZXI6OnBhcnNlU2luZ2xlVmFsdWUoQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eSwgQ1NTCiAgICAg
ICAgIHJldHVybiBjb25zdW1lV2Via2l0QXNwZWN0UmF0aW8obV9yYW5nZSk7CiAgICAgY2FzZSBD
U1NQcm9wZXJ0eVdlYmtpdFRleHRFbXBoYXNpc1Bvc2l0aW9uOgogICAgICAgICByZXR1cm4gY29u
c3VtZVRleHRFbXBoYXNpc1Bvc2l0aW9uKG1fcmFuZ2UpOworI2lmIEVOQUJMRShEQVJLX01PREVf
Q1NTKQorICAgIGNhc2UgQ1NTUHJvcGVydHlTdXBwb3J0ZWRDb2xvclNjaGVtZXM6CisgICAgICAg
IHJldHVybiBjb25zdW1lU3VwcG9ydGVkQ29sb3JTY2hlbWVzKG1fcmFuZ2UpOworI2VuZGlmCiAj
aWYgRU5BQkxFKERBU0hCT0FSRF9TVVBQT1JUKQogICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRE
YXNoYm9hcmRSZWdpb246CiAgICAgICAgIHJldHVybiBjb25zdW1lV2Via2l0RGFzaGJvYXJkUmVn
aW9uKG1fcmFuZ2UsIG1fY29udGV4dC5tb2RlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Eb2N1bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCmluZGV4
IDFlNmJjNGJjNWJhMDNkOWFjZGQ0MTA1NTI4N2U5YjA2MGMyNTQ5YzUuLjUzMDBjZDZmNDI0Yjhl
NzFjNGNhNWQ5ZDJmNmE4ODA1MjY1NDc4OTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Eb2N1bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcApAQCAt
ODE3LDE3ICs4MTcsMTcgQEAgU3RyaW5nIERvY3VtZW50Ojpjb21wYXRNb2RlKCkgY29uc3QKIAog
dm9pZCBEb2N1bWVudDo6cmVzZXRMaW5rQ29sb3IoKQogewotICAgIG1fbGlua0NvbG9yID0gU3R5
bGVDb2xvcjo6Y29sb3JGcm9tS2V5d29yZChDU1NWYWx1ZVdlYmtpdExpbmssIHN0eWxlQ29sb3JP
cHRpb25zKCkpOworICAgIG1fbGlua0NvbG9yID0gU3R5bGVDb2xvcjo6Y29sb3JGcm9tS2V5d29y
ZChDU1NWYWx1ZVdlYmtpdExpbmssIHN0eWxlQ29sb3JPcHRpb25zKG51bGxwdHIpKTsKIH0KIAog
dm9pZCBEb2N1bWVudDo6cmVzZXRWaXNpdGVkTGlua0NvbG9yKCkKIHsKLSAgICBtX3Zpc2l0ZWRM
aW5rQ29sb3IgPSBTdHlsZUNvbG9yOjpjb2xvckZyb21LZXl3b3JkKENTU1ZhbHVlV2Via2l0TGlu
aywgc3R5bGVDb2xvck9wdGlvbnMoKSB8IFN0eWxlQ29sb3I6Ok9wdGlvbnM6OkZvclZpc2l0ZWRM
aW5rKTsKKyAgICBtX3Zpc2l0ZWRMaW5rQ29sb3IgPSBTdHlsZUNvbG9yOjpjb2xvckZyb21LZXl3
b3JkKENTU1ZhbHVlV2Via2l0TGluaywgc3R5bGVDb2xvck9wdGlvbnMobnVsbHB0cikgfCBTdHls
ZUNvbG9yOjpPcHRpb25zOjpGb3JWaXNpdGVkTGluayk7CiB9CiAKIHZvaWQgRG9jdW1lbnQ6OnJl
c2V0QWN0aXZlTGlua0NvbG9yKCkKIHsKLSAgICBtX2FjdGl2ZUxpbmtDb2xvciA9IFN0eWxlQ29s
b3I6OmNvbG9yRnJvbUtleXdvcmQoQ1NTVmFsdWVXZWJraXRBY3RpdmVsaW5rLCBzdHlsZUNvbG9y
T3B0aW9ucygpKTsKKyAgICBtX2FjdGl2ZUxpbmtDb2xvciA9IFN0eWxlQ29sb3I6OmNvbG9yRnJv
bUtleXdvcmQoQ1NTVmFsdWVXZWJraXRBY3RpdmVsaW5rLCBzdHlsZUNvbG9yT3B0aW9ucyhudWxs
cHRyKSk7CiB9CiAKIERPTUltcGxlbWVudGF0aW9uJiBEb2N1bWVudDo6aW1wbGVtZW50YXRpb24o
KQpAQCAtMzU5MCwxNSArMzU5MCwyOCBAQCBzdGF0aWMgdm9pZCBwcm9jZXNzQ29sb3JTY2hlbWVz
KFN0cmluZ1ZpZXcgY29sb3JTY2hlbWVzLCBjb25zdCBXVEY6OkZ1bmN0aW9uPHZvaQogdm9pZCBE
b2N1bWVudDo6cHJvY2Vzc1N1cHBvcnRlZENvbG9yU2NoZW1lcyhjb25zdCBTdHJpbmcmIGNvbG9y
U2NoZW1lcykKIHsKICAgICBPcHRpb25TZXQ8Q29sb3JTY2hlbWVzPiBzdXBwb3J0ZWRDb2xvclNj
aGVtZXM7CisgICAgYm9vbCBhdXRvRW5jb3VudGVyZWQgPSBmYWxzZTsKKworICAgIHByb2Nlc3ND
b2xvclNjaGVtZXMoY29sb3JTY2hlbWVzLCBbJnN1cHBvcnRlZENvbG9yU2NoZW1lcywgJmF1dG9F
bmNvdW50ZXJlZF0oU3RyaW5nVmlldyBrZXkpIHsKKyAgICAgICAgaWYgKGVxdWFsTGV0dGVyc0ln
bm9yaW5nQVNDSUlDYXNlKGtleSwgImF1dG8iKSkgeworICAgICAgICAgICAgc3VwcG9ydGVkQ29s
b3JTY2hlbWVzID0geyB9OworICAgICAgICAgICAgYXV0b0VuY291bnRlcmVkID0gdHJ1ZTsKKyAg
ICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChhdXRvRW5jb3VudGVy
ZWQpCisgICAgICAgICAgICByZXR1cm47CiAKLSAgICBwcm9jZXNzQ29sb3JTY2hlbWVzKGNvbG9y
U2NoZW1lcywgWyZzdXBwb3J0ZWRDb2xvclNjaGVtZXNdKFN0cmluZ1ZpZXcga2V5KSB7CiAgICAg
ICAgIGlmIChlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShrZXksICJsaWdodCIpKQogICAg
ICAgICAgICAgc3VwcG9ydGVkQ29sb3JTY2hlbWVzLmFkZChDb2xvclNjaGVtZXM6OkxpZ2h0KTsK
ICAgICAgICAgZWxzZSBpZiAoZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2Uoa2V5LCAiZGFy
ayIpKQogICAgICAgICAgICAgc3VwcG9ydGVkQ29sb3JTY2hlbWVzLmFkZChDb2xvclNjaGVtZXM6
OkRhcmspOworICAgICAgICBlbHNlIGlmIChlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShr
ZXksICJvbmx5IikpCisgICAgICAgICAgICBzdXBwb3J0ZWRDb2xvclNjaGVtZXMuYWRkKENvbG9y
U2NoZW1lczo6T25seSk7CiAgICAgfSk7CiAKLSAgICBpZiAoc3VwcG9ydGVkQ29sb3JTY2hlbWVz
LmlzRW1wdHkoKSkKKyAgICAvLyBJZiB0aGUgdmFsdWUgd2FzIGp1c3QgIm9ubHkiLCB0aGF0IGlz
IHN5bm9ueW1vdXMgZm9yICJvbmx5IGxpZ2h0Ii4KKyAgICBpZiAoc3VwcG9ydGVkQ29sb3JTY2hl
bWVzID09IENvbG9yU2NoZW1lczo6T25seSkKICAgICAgICAgc3VwcG9ydGVkQ29sb3JTY2hlbWVz
LmFkZChDb2xvclNjaGVtZXM6OkxpZ2h0KTsKIAogICAgIG1fc3VwcG9ydGVkQ29sb3JTY2hlbWVz
ID0gc3VwcG9ydGVkQ29sb3JTY2hlbWVzOwpAQCAtNzI4MSwxMCArNzI5NCwxNiBAQCBib29sIERv
Y3VtZW50Ojp1c2VTeXN0ZW1BcHBlYXJhbmNlKCkgY29uc3QKICAgICByZXR1cm4gdXNlU3lzdGVt
QXBwZWFyYW5jZTsKIH0KIAotYm9vbCBEb2N1bWVudDo6dXNlRGFya0FwcGVhcmFuY2UoKSBjb25z
dAorYm9vbCBEb2N1bWVudDo6dXNlRGFya0FwcGVhcmFuY2UoY29uc3QgUmVuZGVyU3R5bGUqIHN0
eWxlKSBjb25zdAogewogI2lmIEVOQUJMRShEQVJLX01PREVfQ1NTKQotICAgIGlmIChtX3N1cHBv
cnRlZENvbG9yU2NoZW1lcy5jb250YWlucyhDb2xvclNjaGVtZXM6OkRhcmspICYmICFtX3N1cHBv
cnRlZENvbG9yU2NoZW1lcy5jb250YWlucyhDb2xvclNjaGVtZXM6OkxpZ2h0KSkKKyAgICBPcHRp
b25TZXQ8Q29sb3JTY2hlbWVzPiBzdXBwb3J0ZWRDb2xvclNjaGVtZXM7CisgICAgaWYgKHN0eWxl
KQorICAgICAgICBzdXBwb3J0ZWRDb2xvclNjaGVtZXMgPSBzdHlsZS0+c3VwcG9ydGVkQ29sb3JT
Y2hlbWVzKCk7CisgICAgaWYgKHN1cHBvcnRlZENvbG9yU2NoZW1lcy5pc0VtcHR5KCkpCisgICAg
ICAgIHN1cHBvcnRlZENvbG9yU2NoZW1lcyA9IG1fc3VwcG9ydGVkQ29sb3JTY2hlbWVzOworCisg
ICAgaWYgKHN1cHBvcnRlZENvbG9yU2NoZW1lcy5jb250YWlucyhDb2xvclNjaGVtZXM6OkRhcmsp
ICYmICFzdXBwb3J0ZWRDb2xvclNjaGVtZXMuY29udGFpbnMoQ29sb3JTY2hlbWVzOjpMaWdodCkp
CiAgICAgICAgIHJldHVybiB0cnVlOwogI2VuZGlmCiAKQEAgLTcyOTYsMjEgKzczMTUsMTkgQEAg
Ym9vbCBEb2N1bWVudDo6dXNlRGFya0FwcGVhcmFuY2UoKSBjb25zdAogICAgICAgICByZXR1cm4g
cGFnZVVzZXNEYXJrQXBwZWFyYW5jZTsKIAogI2lmIEVOQUJMRShEQVJLX01PREVfQ1NTKQotICAg
IGlmIChtX3N1cHBvcnRlZENvbG9yU2NoZW1lcy5jb250YWlucyhDb2xvclNjaGVtZXM6OkRhcmsp
KQorICAgIGlmIChzdXBwb3J0ZWRDb2xvclNjaGVtZXMuY29udGFpbnMoQ29sb3JTY2hlbWVzOjpE
YXJrKSkKICAgICAgICAgcmV0dXJuIHBhZ2VVc2VzRGFya0FwcGVhcmFuY2U7Ci0KLSAgICBBU1NF
UlQobV9zdXBwb3J0ZWRDb2xvclNjaGVtZXMuY29udGFpbnMoQ29sb3JTY2hlbWVzOjpMaWdodCkp
OwogI2VuZGlmCiAKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLU9wdGlvblNldDxTdHlsZUNvbG9y
OjpPcHRpb25zPiBEb2N1bWVudDo6c3R5bGVDb2xvck9wdGlvbnMoKSBjb25zdAorT3B0aW9uU2V0
PFN0eWxlQ29sb3I6Ok9wdGlvbnM+IERvY3VtZW50OjpzdHlsZUNvbG9yT3B0aW9ucyhjb25zdCBS
ZW5kZXJTdHlsZSogc3R5bGUpIGNvbnN0CiB7CiAgICAgT3B0aW9uU2V0PFN0eWxlQ29sb3I6Ok9w
dGlvbnM+IG9wdGlvbnM7CiAgICAgaWYgKHVzZVN5c3RlbUFwcGVhcmFuY2UoKSkKICAgICAgICAg
b3B0aW9ucy5hZGQoU3R5bGVDb2xvcjo6T3B0aW9uczo6VXNlU3lzdGVtQXBwZWFyYW5jZSk7Ci0g
ICAgaWYgKHVzZURhcmtBcHBlYXJhbmNlKCkpCisgICAgaWYgKHVzZURhcmtBcHBlYXJhbmNlKHN0
eWxlKSkKICAgICAgICAgb3B0aW9ucy5hZGQoU3R5bGVDb2xvcjo6T3B0aW9uczo6VXNlRGFya0Fw
cGVhcmFuY2UpOwogICAgIHJldHVybiBvcHRpb25zOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvZG9tL0RvY3VtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAppbmRl
eCA2YTcyNjVhOWIxYmY3MzVkY2JlYzkzNGI3N2JjZmZmYTAyZGFkNWNhLi42MTgxY2Q4M2Q5MTUy
OTliMjI2NTNhYjY2ODdhMjA0ZWM1ZWNlZGI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9k
b20vRG9jdW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaApAQCAtNTc4
LDkgKzU3OCw5IEBAIHB1YmxpYzoKICAgICBmbG9hdCBkZXZpY2VTY2FsZUZhY3RvcigpIGNvbnN0
OwogCiAgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCB1c2VTeXN0ZW1BcHBlYXJhbmNlKCkgY29uc3Q7
Ci0gICAgV0VCQ09SRV9FWFBPUlQgYm9vbCB1c2VEYXJrQXBwZWFyYW5jZSgpIGNvbnN0OworICAg
IFdFQkNPUkVfRVhQT1JUIGJvb2wgdXNlRGFya0FwcGVhcmFuY2UoY29uc3QgUmVuZGVyU3R5bGUq
KSBjb25zdDsKIAotICAgIE9wdGlvblNldDxTdHlsZUNvbG9yOjpPcHRpb25zPiBzdHlsZUNvbG9y
T3B0aW9ucygpIGNvbnN0OworICAgIE9wdGlvblNldDxTdHlsZUNvbG9yOjpPcHRpb25zPiBzdHls
ZUNvbG9yT3B0aW9ucyhjb25zdCBSZW5kZXJTdHlsZSopIGNvbnN0OwogCiAgICAgV0VCQ09SRV9F
WFBPUlQgUmVmPFJhbmdlPiBjcmVhdGVSYW5nZSgpOwogCkBAIC05MDEsMTEgKzkwMSw2IEBAIHB1
YmxpYzoKICAgICB2b2lkIHByb2Nlc3NSZWZlcnJlclBvbGljeShjb25zdCBTdHJpbmcmIHBvbGlj
eSwgUmVmZXJyZXJQb2xpY3lTb3VyY2UpOwogCiAjaWYgRU5BQkxFKERBUktfTU9ERV9DU1MpCi0g
ICAgZW51bSBjbGFzcyBDb2xvclNjaGVtZXMgOiB1aW50OF90IHsKLSAgICAgICAgTGlnaHQgPSAx
IDw8IDAsCi0gICAgICAgIERhcmsgPSAxIDw8IDEKLSAgICB9OwotCiAgICAgdm9pZCBwcm9jZXNz
U3VwcG9ydGVkQ29sb3JTY2hlbWVzKGNvbnN0IFN0cmluZyYgY29sb3JTY2hlbWVzKTsKICNlbmRp
ZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL1dlYkNvbnRlbnRS
ZWFkZXJDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvV2ViQ29udGVudFJl
YWRlckNvY29hLm1tCmluZGV4IGFlZmViMWFmMWY2OTNjMzkxMmJkZjhkNjhkM2ZkOWQ1Y2M3NjVm
ZWMuLmQ0MjA3YjljZjFjMWNkNjg4NDczZDRiZjA4YjRlYTI4MDBiNzQ2YjMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvV2ViQ29udGVudFJlYWRlckNvY29hLm1tCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvV2ViQ29udGVudFJlYWRlckNvY29hLm1t
CkBAIC01MCw2ICs1MCw3IEBACiAjaW1wb3J0ICJNSU1FVHlwZVJlZ2lzdHJ5LmgiCiAjaW1wb3J0
ICJQYWdlLmgiCiAjaW1wb3J0ICJQdWJsaWNVUkxNYW5hZ2VyLmgiCisjaW1wb3J0ICJSZW5kZXJW
aWV3LmgiCiAjaW1wb3J0ICJSdW50aW1lRW5hYmxlZEZlYXR1cmVzLmgiCiAjaW1wb3J0ICJTZXJp
YWxpemVkQXR0YWNobWVudERhdGEuaCIKICNpbXBvcnQgIlNldHRpbmdzLmgiCkBAIC0xMzMsNyAr
MTM0LDkgQEAgc3RhdGljIEZyYWdtZW50QW5kUmVzb3VyY2VzIGNyZWF0ZUZyYWdtZW50KEZyYW1l
JiBmcmFtZSwgTlNBdHRyaWJ1dGVkU3RyaW5nICpzdHIKICAgICBEb2N1bWVudCYgZG9jdW1lbnQg
PSAqZnJhbWUuZG9jdW1lbnQoKTsKIAogI2lmIFBMQVRGT1JNKE1BQykKLSAgICBMb2NhbERlZmF1
bHRTeXN0ZW1BcHBlYXJhbmNlIGxvY2FsQXBwZWFyYW5jZShkb2N1bWVudC51c2VEYXJrQXBwZWFy
YW5jZSgpKTsKKyAgICBhdXRvKiB2aWV3ID0gZnJhbWUudmlldygpOworICAgIGF1dG8qIHJlbmRl
clZpZXcgPSB2aWV3ID8gdmlldy0+cmVuZGVyVmlldygpIDogbnVsbHB0cjsKKyAgICBMb2NhbERl
ZmF1bHRTeXN0ZW1BcHBlYXJhbmNlIGxvY2FsQXBwZWFyYW5jZShyZW5kZXJWaWV3ID8gcmVuZGVy
Vmlldy0+dXNlRGFya0FwcGVhcmFuY2UoKSA6IGZhbHNlKTsKICNlbmRpZgogCiAgICAgTlNBcnJh
eSAqc3VicmVzb3VyY2VzID0gbmlsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9j
YW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
Y2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHAKaW5kZXggZDE1ZGVjNDYwZWQ3NTQ4
YmI1NzZjMTc5NTE2MzlkOWEyODcxNjAzNy4uZGExYzgwZmQyZmQ4MTEwZDlmNThjNzMyMTNiZGM4
M2JlYmQwMmY3ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFz
UmVuZGVyaW5nQ29udGV4dDJELmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9D
YW52YXNSZW5kZXJpbmdDb250ZXh0MkQuY3BwCkBAIC04Niw3ICs4Niw3IEBAIHZvaWQgQ2FudmFz
UmVuZGVyaW5nQ29udGV4dDJEOjpkcmF3Rm9jdXNJZk5lZWRlZEludGVybmFsKGNvbnN0IFBhdGgm
IHBhdGgsIEVsZW1lCiAgICAgYXV0byogY29udGV4dCA9IGRyYXdpbmdDb250ZXh0KCk7CiAgICAg
aWYgKCFlbGVtZW50LmZvY3VzZWQoKSB8fCAhc3RhdGUoKS5oYXNJbnZlcnRpYmxlVHJhbnNmb3Jt
IHx8IHBhdGguaXNFbXB0eSgpIHx8ICFlbGVtZW50LmlzRGVzY2VuZGFudE9mKGNhbnZhcygpKSB8
fCAhY29udGV4dCkKICAgICAgICAgcmV0dXJuOwotICAgIGNvbnRleHQtPmRyYXdGb2N1c1Jpbmco
cGF0aCwgMSwgMSwgUmVuZGVyVGhlbWU6OmZvY3VzUmluZ0NvbG9yKGVsZW1lbnQuZG9jdW1lbnQo
KS5zdHlsZUNvbG9yT3B0aW9ucygpKSk7CisgICAgY29udGV4dC0+ZHJhd0ZvY3VzUmluZyhwYXRo
LCAxLCAxLCBSZW5kZXJUaGVtZTo6Zm9jdXNSaW5nQ29sb3IoZWxlbWVudC5kb2N1bWVudCgpLnN0
eWxlQ29sb3JPcHRpb25zKGNhbnZhcygpLmNvbXB1dGVkU3R5bGUoKSkpKTsKIH0KIAogU3RyaW5n
IENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6Zm9udCgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yT3ZlcmxheS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yT3ZlcmxheS5jcHAKaW5kZXggZDVkZWY5MGYxNmY4ODJmODE0
YTZiY2Q4Njc1Yjc4YzY0ZGQ0YjkxYy4uZGVjNzFlNWZlODQwMTJkMzliMDA3NDg5Njg3MTE0MGFh
ZDA4NjE2NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvck92
ZXJsYXkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JPdmVybGF5
LmNwcApAQCAtMTgwLDEyICsxODAsMTMgQEAgdm9pZCBJbnNwZWN0b3JPdmVybGF5OjpwYWludChH
cmFwaGljc0NvbnRleHQmIGNvbnRleHQpCiAgICAgaWYgKCFzaG91bGRTaG93T3ZlcmxheSgpKQog
ICAgICAgICByZXR1cm47CiAKKyAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2
ZXIoY29udGV4dCk7CisgICAgRnJhbWVWaWV3KiB2aWV3ID0gb3ZlcmxheVBhZ2UoKS0+bWFpbkZy
YW1lKCkudmlldygpOworCiAjaWYgUExBVEZPUk0oTUFDKQotICAgIExvY2FsRGVmYXVsdFN5c3Rl
bUFwcGVhcmFuY2UgbG9jYWxBcHBlYXJhbmNlKG1fcGFnZS5tYWluRnJhbWUoKS5kb2N1bWVudCgp
LT51c2VEYXJrQXBwZWFyYW5jZSgpKTsKKyAgICBMb2NhbERlZmF1bHRTeXN0ZW1BcHBlYXJhbmNl
IGxvY2FsQXBwZWFyYW5jZSh2aWV3LT5yZW5kZXJWaWV3KCktPnVzZURhcmtBcHBlYXJhbmNlKCkp
OwogI2VuZGlmCiAKLSAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoY29u
dGV4dCk7Ci0gICAgRnJhbWVWaWV3KiB2aWV3ID0gb3ZlcmxheVBhZ2UoKS0+bWFpbkZyYW1lKCku
dmlldygpOwogICAgIHZpZXctPnVwZGF0ZUxheW91dEFuZFN0eWxlSWZOZWVkZWRSZWN1cnNpdmUo
KTsKICAgICB2aWV3LT5wYWludChjb250ZXh0LCBJbnRSZWN0KDAsIDAsIHZpZXctPndpZHRoKCks
IHZpZXctPmhlaWdodCgpKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Zy
YW1lVmlldy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAKaW5kZXggM2U2
MjQ2YTU1NGU2OTdhNjg1YmY3ZjJiNGYwYjU4NTFlODU3MDc1Yi4uMjBkNzYxNWZlZjAwNWRhYjM4
ZDc0NGMzMmI5ZjE2ZWNiYmQxMmI5YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9G
cmFtZVZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcApAQCAt
MjA0Niw5ICsyMDQ2LDcgQEAgYm9vbCBGcmFtZVZpZXc6OnNob3VsZFNldEN1cnNvcigpIGNvbnN0
CiAKIGJvb2wgRnJhbWVWaWV3Ojp1c2VEYXJrQXBwZWFyYW5jZSgpIGNvbnN0CiB7Ci0gICAgQVNT
RVJUKGZyYW1lKCkuZG9jdW1lbnQoKSk7Ci0gICAgYXV0byYgZG9jdW1lbnQgPSAqZnJhbWUoKS5k
b2N1bWVudCgpOwotICAgIHJldHVybiBkb2N1bWVudC51c2VEYXJrQXBwZWFyYW5jZSgpOworICAg
IHJldHVybiByZW5kZXJWaWV3KCktPnVzZURhcmtBcHBlYXJhbmNlKCk7CiB9CiAKIGJvb2wgRnJh
bWVWaWV3OjpzY3JvbGxDb250ZW50c0Zhc3RQYXRoKGNvbnN0IEludFNpemUmIHNjcm9sbERlbHRh
LCBjb25zdCBJbnRSZWN0JiByZWN0VG9TY3JvbGwsIGNvbnN0IEludFJlY3QmIGNsaXBSZWN0KQpA
QCAtMzkxMSw4ICszOTA5LDcgQEAgdm9pZCBGcmFtZVZpZXc6OnBhaW50U2Nyb2xsQ29ybmVyKEdy
YXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgSW50UmVjdCYgY29ybmUKICNpZiBQTEFURk9S
TShNQUMpCiAgICAgLy8gSWYgZGFyayBhcHBlYXJhbmNlIGlzIHVzZWQgb3IgdGhlIG92ZXJsYXkg
c3R5bGUgaXMgbGlnaHQgKGJlY2F1c2Ugb2YgYSBkYXJrIHBhZ2UgYmFja2dyb3VuZCksIHNldCB0
aGUgZGFyayBhcHBwZWFyYW5jZS4KICAgICAvLyBLZWVwIHRoaXMgaW4gc3luYyB3aXRoIFNjcm9s
bEFuaW1hdG9yTWFjJ3MgZWZmZWN0aXZlQXBwZWFyYW5jZUZvclNjcm9sbGVySW1wOi4KLSAgICBh
dXRvKiBkb2N1bWVudCA9IGZyYW1lKCkuZG9jdW1lbnQoKTsKLSAgICBib29sIHVzZURhcmtBcHBl
YXJhbmNlID0gKGRvY3VtZW50ICYmIGRvY3VtZW50LT51c2VEYXJrQXBwZWFyYW5jZSgpKSB8fCBz
Y3JvbGxiYXJPdmVybGF5U3R5bGUoKSA9PSBXZWJDb3JlOjpTY3JvbGxiYXJPdmVybGF5U3R5bGVM
aWdodDsKKyAgICBib29sIHVzZURhcmtBcHBlYXJhbmNlID0gcmVuZGVyVmlldygpLT51c2VEYXJr
QXBwZWFyYW5jZSgpIHx8IHNjcm9sbGJhck92ZXJsYXlTdHlsZSgpID09IFdlYkNvcmU6OlNjcm9s
bGJhck92ZXJsYXlTdHlsZUxpZ2h0OwogICAgIExvY2FsRGVmYXVsdFN5c3RlbUFwcGVhcmFuY2Ug
bG9jYWxBcHBlYXJhbmNlKHVzZURhcmtBcHBlYXJhbmNlKTsKICNlbmRpZgogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvRHJhZ0ltYWdlTWFjLm1tIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWFjL0RyYWdJbWFnZU1hYy5tbQppbmRleCAxMWNkYTI0ZDBjOTZhNzFh
YzhkMWIyMjIyNTFhY2Q5ZTMzZThmMjEwLi45YzMwZjc5Yzg0ZDNjN2Q4NjVkNDExNTUzOTEzNjdj
OGY0NDRhNmRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvRHJhZ0lt
YWdlTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9EcmFnSW1hZ2VNYWMu
bW0KQEAgLTMwMCw3ICszMDAsNyBAQCBEcmFnSW1hZ2VSZWYgY3JlYXRlRHJhZ0ltYWdlRm9yTGlu
ayhFbGVtZW50JiBlbGVtZW50LCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiB0aQogewogICAgIExp
bmtJbWFnZUxheW91dCBsYXlvdXQodXJsLCB0aXRsZSk7CiAKLSAgICBMb2NhbERlZmF1bHRTeXN0
ZW1BcHBlYXJhbmNlIGxvY2FsQXBwZWFyYW5jZShlbGVtZW50LmRvY3VtZW50KCkudXNlRGFya0Fw
cGVhcmFuY2UoKSk7CisgICAgTG9jYWxEZWZhdWx0U3lzdGVtQXBwZWFyYW5jZSBsb2NhbEFwcGVh
cmFuY2UoZWxlbWVudC5kb2N1bWVudCgpLnVzZURhcmtBcHBlYXJhbmNlKGVsZW1lbnQuY29tcHV0
ZWRTdHlsZSgpKSk7CiAKICAgICBhdXRvIGltYWdlU2l6ZSA9IGxheW91dC5ib3VuZGluZ1JlY3Qu
c2l6ZSgpOwogI2lmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPCAxMDEzMDAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVGbG93Qm94LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVGbG93Qm94LmNwcAppbmRleCBkNzQ1ODExOGEy
Yjg1ZTE0MmMzZGQwNTVhYWVkYzgyY2RmZmU1Yzg1Li4wM2U0MWU3MTU5MjAwYWFjZjJjZjg5OGJk
MmIyZjljMjg2MDZhYjk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5s
aW5lRmxvd0JveC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZUZsb3dC
b3guY3BwCkBAIC0xMzcyLDcgKzEzNzIsNyBAQCB2b2lkIElubGluZUZsb3dCb3g6OnBhaW50Qm94
RGVjb3JhdGlvbnMoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFBvaW50JgogICAg
IENvbG9yIGNvbG9yID0gbGluZVN0eWxlLnZpc2l0ZWREZXBlbmRlbnRDb2xvcihDU1NQcm9wZXJ0
eUJhY2tncm91bmRDb2xvcik7CiAKICAgICBDb21wb3NpdGVPcGVyYXRvciBjb21wb3NpdGVPcCA9
IENvbXBvc2l0ZVNvdXJjZU92ZXI7Ci0gICAgaWYgKHJlbmRlcmVyKCkuZG9jdW1lbnQoKS5zZXR0
aW5ncygpLnB1bmNoT3V0V2hpdGVCYWNrZ3JvdW5kc0luRGFya01vZGUoKSAmJiBDb2xvcjo6aXNX
aGl0ZUNvbG9yKGNvbG9yKSAmJiByZW5kZXJlcigpLnRoZW1lKCkudXNpbmdEYXJrQXBwZWFyYW5j
ZShyZW5kZXJlcigpKSkKKyAgICBpZiAocmVuZGVyZXIoKS5kb2N1bWVudCgpLnNldHRpbmdzKCku
cHVuY2hPdXRXaGl0ZUJhY2tncm91bmRzSW5EYXJrTW9kZSgpICYmIENvbG9yOjppc1doaXRlQ29s
b3IoY29sb3IpICYmIHJlbmRlcmVyKCkudXNlRGFya0FwcGVhcmFuY2UoKSkKICAgICAgICAgY29t
cG9zaXRlT3AgPSBDb21wb3NpdGVEZXN0aW5hdGlvbk91dDsKIAogICAgIGNvbG9yID0gbGluZVN0
eWxlLmNvbG9yQnlBcHBseWluZ0NvbG9yRmlsdGVyKGNvbG9yKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVUZXh0Qm94LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9JbmxpbmVUZXh0Qm94LmNwcAppbmRleCA1MDM5ZTJhYWFjZWIxOTU5M2JlOTQ5N2U5
ZWUyYmYwNzkzZjc5OTczLi4wOGViMDM5NzZjMmUxNmJkNDk5YTcwNmYwYjBiMTg0OTU1NmMyOWFl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lVGV4dEJveC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZVRleHRCb3guY3BwCkBAIC03MTYs
NyArNzE2LDcgQEAgdm9pZCBJbmxpbmVUZXh0Qm94OjpwYWludFBsYXRmb3JtRG9jdW1lbnRNYXJr
ZXIoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdAogICAgIGF1dG8gYm91bmRzID0gY2Fs
Y3VsYXRlRG9jdW1lbnRNYXJrZXJCb3VuZHMobWFya2VkVGV4dCk7CiAKICAgICBhdXRvIGxpbmVT
dHlsZUZvck1hcmtlZFRleHRUeXBlID0gWyZdKCkgLT4gRG9jdW1lbnRNYXJrZXJMaW5lU3R5bGUg
ewotICAgICAgICBib29sIHNob3VsZFVzZURhcmtBcHBlYXJhbmNlID0gcmVuZGVyZXIoKS5kb2N1
bWVudCgpLnVzZURhcmtBcHBlYXJhbmNlKCk7CisgICAgICAgIGJvb2wgc2hvdWxkVXNlRGFya0Fw
cGVhcmFuY2UgPSByZW5kZXJlcigpLnVzZURhcmtBcHBlYXJhbmNlKCk7CiAgICAgICAgIHN3aXRj
aCAobWFya2VkVGV4dC50eXBlKSB7CiAgICAgICAgIGNhc2UgTWFya2VkVGV4dDo6U3BlbGxpbmdF
cnJvcjoKICAgICAgICAgICAgIHJldHVybiB7IERvY3VtZW50TWFya2VyTGluZVN0eWxlOjpNb2Rl
OjpTcGVsbGluZywgc2hvdWxkVXNlRGFya0FwcGVhcmFuY2UgfTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckJveC5jcHAKaW5kZXggY2E2ZTdjMTQ1ZmJmZTI3ZTA3NGNiMTFmY2UzOGEyMjgz
NjAwMzA2MC4uMGYxMmFkODBiOTRkMGFlNGVmMzJlMmIzNDEyMGFlMjkxMzljYTdmYiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHAKQEAgLTEyMDcsNyArMTIwNyw3IEBAIHZv
aWQgUmVuZGVyQm94OjpwYWludFJvb3RCb3hGaWxsTGF5ZXJzKGNvbnN0IFBhaW50SW5mbyYgcGFp
bnRJbmZvKQogICAgIGF1dG8gY29sb3IgPSBzdHlsZS52aXNpdGVkRGVwZW5kZW50Q29sb3IoQ1NT
UHJvcGVydHlCYWNrZ3JvdW5kQ29sb3IpOwogCiAgICAgQ29tcG9zaXRlT3BlcmF0b3IgY29tcG9z
aXRlT3AgPSBDb21wb3NpdGVTb3VyY2VPdmVyOwotICAgIGlmIChkb2N1bWVudCgpLnNldHRpbmdz
KCkucHVuY2hPdXRXaGl0ZUJhY2tncm91bmRzSW5EYXJrTW9kZSgpICYmIENvbG9yOjppc1doaXRl
Q29sb3IoY29sb3IpICYmIHRoZW1lKCkudXNpbmdEYXJrQXBwZWFyYW5jZSgqdGhpcykpCisgICAg
aWYgKGRvY3VtZW50KCkuc2V0dGluZ3MoKS5wdW5jaE91dFdoaXRlQmFja2dyb3VuZHNJbkRhcmtN
b2RlKCkgJiYgQ29sb3I6OmlzV2hpdGVDb2xvcihjb2xvcikgJiYgdXNlRGFya0FwcGVhcmFuY2Uo
KSkKICAgICAgICAgY29tcG9zaXRlT3AgPSBDb21wb3NpdGVEZXN0aW5hdGlvbk91dDsKIAogICAg
IHBhaW50RmlsbExheWVycyhwYWludEluZm8sIHN0eWxlLmNvbG9yQnlBcHBseWluZ0NvbG9yRmls
dGVyKGNvbG9yKSwgc3R5bGUuYmFja2dyb3VuZExheWVycygpLCB2aWV3KCkuYmFja2dyb3VuZFJl
Y3QoKSwgQmFja2dyb3VuZEJsZWVkTm9uZSwgY29tcG9zaXRlT3AsIHJvb3RCYWNrZ3JvdW5kUmVu
ZGVyZXIpOwpAQCAtMTM0MSw3ICsxMzQxLDcgQEAgdm9pZCBSZW5kZXJCb3g6OnBhaW50QmFja2dy
b3VuZChjb25zdCBQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UmVjdCYgcGEKICAg
ICBDb2xvciBiYWNrZ3JvdW5kQ29sb3IgPSBzdHlsZSgpLnZpc2l0ZWREZXBlbmRlbnRDb2xvcihD
U1NQcm9wZXJ0eUJhY2tncm91bmRDb2xvcik7CiAKICAgICBDb21wb3NpdGVPcGVyYXRvciBjb21w
b3NpdGVPcCA9IENvbXBvc2l0ZVNvdXJjZU92ZXI7Ci0gICAgaWYgKGRvY3VtZW50KCkuc2V0dGlu
Z3MoKS5wdW5jaE91dFdoaXRlQmFja2dyb3VuZHNJbkRhcmtNb2RlKCkgJiYgQ29sb3I6OmlzV2hp
dGVDb2xvcihiYWNrZ3JvdW5kQ29sb3IpICYmIHRoZW1lKCkudXNpbmdEYXJrQXBwZWFyYW5jZSgq
dGhpcykpCisgICAgaWYgKGRvY3VtZW50KCkuc2V0dGluZ3MoKS5wdW5jaE91dFdoaXRlQmFja2dy
b3VuZHNJbkRhcmtNb2RlKCkgJiYgQ29sb3I6OmlzV2hpdGVDb2xvcihiYWNrZ3JvdW5kQ29sb3Ip
ICYmIHVzZURhcmtBcHBlYXJhbmNlKCkpCiAgICAgICAgIGNvbXBvc2l0ZU9wID0gQ29tcG9zaXRl
RGVzdGluYXRpb25PdXQ7CiAKICAgICBwYWludEZpbGxMYXllcnMocGFpbnRJbmZvLCBzdHlsZSgp
LmNvbG9yQnlBcHBseWluZ0NvbG9yRmlsdGVyKGJhY2tncm91bmRDb2xvciksIHN0eWxlKCkuYmFj
a2dyb3VuZExheWVycygpLCBwYWludFJlY3QsIGJsZWVkQXZvaWRhbmNlLCBjb21wb3NpdGVPcCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5jcHAKaW5kZXggYmY5N2Mw
ODIyNWNiYTk2ODI3MTIzMjhhZDU4ZTk2MDczODAxMzlhMC4uOTA4Yjg1YTg4ZDU0YjkzNmI3MTVh
YjlhYTY0MzE2NzQ0NDMzZGI0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJF
bGVtZW50LmNwcApAQCAtMTM3NCw4ICsxMzc0LDggQEAgQ29sb3IgUmVuZGVyRWxlbWVudDo6c2Vs
ZWN0aW9uQ29sb3IoQ1NTUHJvcGVydHlJRCBjb2xvclByb3BlcnR5KSBjb25zdAogICAgIH0KIAog
ICAgIGlmIChmcmFtZSgpLnNlbGVjdGlvbigpLmlzRm9jdXNlZEFuZEFjdGl2ZSgpKQotICAgICAg
ICByZXR1cm4gdGhlbWUoKS5hY3RpdmVTZWxlY3Rpb25Gb3JlZ3JvdW5kQ29sb3IoZG9jdW1lbnQo
KS5zdHlsZUNvbG9yT3B0aW9ucygpKTsKLSAgICByZXR1cm4gdGhlbWUoKS5pbmFjdGl2ZVNlbGVj
dGlvbkZvcmVncm91bmRDb2xvcihkb2N1bWVudCgpLnN0eWxlQ29sb3JPcHRpb25zKCkpOworICAg
ICAgICByZXR1cm4gdGhlbWUoKS5hY3RpdmVTZWxlY3Rpb25Gb3JlZ3JvdW5kQ29sb3Ioc3R5bGVD
b2xvck9wdGlvbnMoKSk7CisgICAgcmV0dXJuIHRoZW1lKCkuaW5hY3RpdmVTZWxlY3Rpb25Gb3Jl
Z3JvdW5kQ29sb3Ioc3R5bGVDb2xvck9wdGlvbnMoKSk7CiB9CiAKIHN0ZDo6dW5pcXVlX3B0cjxS
ZW5kZXJTdHlsZT4gUmVuZGVyRWxlbWVudDo6c2VsZWN0aW9uUHNldWRvU3R5bGUoKSBjb25zdApA
QCAtMTQwOSwxNSArMTQwOSwxNSBAQCBDb2xvciBSZW5kZXJFbGVtZW50OjpzZWxlY3Rpb25CYWNr
Z3JvdW5kQ29sb3IoKSBjb25zdAogICAgICAgICByZXR1cm4gQ29sb3IoKTsKIAogICAgIGlmIChm
cmFtZSgpLnNlbGVjdGlvbigpLnNob3VsZFNob3dCbG9ja0N1cnNvcigpICYmIGZyYW1lKCkuc2Vs
ZWN0aW9uKCkuaXNDYXJldCgpKQotICAgICAgICByZXR1cm4gdGhlbWUoKS50cmFuc2Zvcm1TZWxl
Y3Rpb25CYWNrZ3JvdW5kQ29sb3Ioc3R5bGUoKS52aXNpdGVkRGVwZW5kZW50Q29sb3JXaXRoQ29s
b3JGaWx0ZXIoQ1NTUHJvcGVydHlDb2xvciksIGRvY3VtZW50KCkuc3R5bGVDb2xvck9wdGlvbnMo
KSk7CisgICAgICAgIHJldHVybiB0aGVtZSgpLnRyYW5zZm9ybVNlbGVjdGlvbkJhY2tncm91bmRD
b2xvcihzdHlsZSgpLnZpc2l0ZWREZXBlbmRlbnRDb2xvcldpdGhDb2xvckZpbHRlcihDU1NQcm9w
ZXJ0eUNvbG9yKSwgc3R5bGVDb2xvck9wdGlvbnMoKSk7CiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8
UmVuZGVyU3R5bGU+IHBzZXVkb1N0eWxlID0gc2VsZWN0aW9uUHNldWRvU3R5bGUoKTsKICAgICBp
ZiAocHNldWRvU3R5bGUgJiYgcHNldWRvU3R5bGUtPnZpc2l0ZWREZXBlbmRlbnRDb2xvcldpdGhD
b2xvckZpbHRlcihDU1NQcm9wZXJ0eUJhY2tncm91bmRDb2xvcikuaXNWYWxpZCgpKQotICAgICAg
ICByZXR1cm4gdGhlbWUoKS50cmFuc2Zvcm1TZWxlY3Rpb25CYWNrZ3JvdW5kQ29sb3IocHNldWRv
U3R5bGUtPnZpc2l0ZWREZXBlbmRlbnRDb2xvcldpdGhDb2xvckZpbHRlcihDU1NQcm9wZXJ0eUJh
Y2tncm91bmRDb2xvciksIGRvY3VtZW50KCkuc3R5bGVDb2xvck9wdGlvbnMoKSk7CisgICAgICAg
IHJldHVybiB0aGVtZSgpLnRyYW5zZm9ybVNlbGVjdGlvbkJhY2tncm91bmRDb2xvcihwc2V1ZG9T
dHlsZS0+dmlzaXRlZERlcGVuZGVudENvbG9yV2l0aENvbG9yRmlsdGVyKENTU1Byb3BlcnR5QmFj
a2dyb3VuZENvbG9yKSwgc3R5bGVDb2xvck9wdGlvbnMoKSk7CiAKICAgICBpZiAoZnJhbWUoKS5z
ZWxlY3Rpb24oKS5pc0ZvY3VzZWRBbmRBY3RpdmUoKSkKLSAgICAgICAgcmV0dXJuIHRoZW1lKCku
YWN0aXZlU2VsZWN0aW9uQmFja2dyb3VuZENvbG9yKGRvY3VtZW50KCkuc3R5bGVDb2xvck9wdGlv
bnMoKSk7Ci0gICAgcmV0dXJuIHRoZW1lKCkuaW5hY3RpdmVTZWxlY3Rpb25CYWNrZ3JvdW5kQ29s
b3IoZG9jdW1lbnQoKS5zdHlsZUNvbG9yT3B0aW9ucygpKTsKKyAgICAgICAgcmV0dXJuIHRoZW1l
KCkuYWN0aXZlU2VsZWN0aW9uQmFja2dyb3VuZENvbG9yKHN0eWxlQ29sb3JPcHRpb25zKCkpOwor
ICAgIHJldHVybiB0aGVtZSgpLmluYWN0aXZlU2VsZWN0aW9uQmFja2dyb3VuZENvbG9yKHN0eWxl
Q29sb3JPcHRpb25zKCkpOwogfQogCiBib29sIFJlbmRlckVsZW1lbnQ6OmdldExlYWRpbmdDb3Ju
ZXIoRmxvYXRQb2ludCYgcG9pbnQsIGJvb2wmIGluc2lkZUZpeGVkKSBjb25zdApAQCAtMTgzOCw5
ICsxODM4LDkgQEAgdm9pZCBSZW5kZXJFbGVtZW50OjpwYWludEZvY3VzUmluZyhQYWludEluZm8m
IHBhaW50SW5mbywgY29uc3QgUmVuZGVyU3R5bGUmIHN0eWwKICAgICAgICAgICAgIGZvciAoYXV0
byByZWN0IDogcGl4ZWxTbmFwcGVkRm9jdXNSaW5nUmVjdHMpCiAgICAgICAgICAgICAgICAgcGF0
aC5hZGRSZWN0KHJlY3QpOwogICAgICAgICB9Ci0gICAgICAgIHBhaW50SW5mby5jb250ZXh0KCku
ZHJhd0ZvY3VzUmluZyhwYXRoLCBwYWdlKCkuZm9jdXNDb250cm9sbGVyKCkudGltZVNpbmNlRm9j
dXNXYXNTZXQoKS5zZWNvbmRzKCksIG5lZWRzUmVwYWludCwgUmVuZGVyVGhlbWU6OmZvY3VzUmlu
Z0NvbG9yKGRvY3VtZW50KCkuc3R5bGVDb2xvck9wdGlvbnMoKSkpOworICAgICAgICBwYWludElu
Zm8uY29udGV4dCgpLmRyYXdGb2N1c1JpbmcocGF0aCwgcGFnZSgpLmZvY3VzQ29udHJvbGxlcigp
LnRpbWVTaW5jZUZvY3VzV2FzU2V0KCkuc2Vjb25kcygpLCBuZWVkc1JlcGFpbnQsIFJlbmRlclRo
ZW1lOjpmb2N1c1JpbmdDb2xvcihzdHlsZUNvbG9yT3B0aW9ucygpKSk7CiAgICAgfSBlbHNlCi0g
ICAgICAgIHBhaW50SW5mby5jb250ZXh0KCkuZHJhd0ZvY3VzUmluZyhwaXhlbFNuYXBwZWRGb2N1
c1JpbmdSZWN0cywgcGFnZSgpLmZvY3VzQ29udHJvbGxlcigpLnRpbWVTaW5jZUZvY3VzV2FzU2V0
KCkuc2Vjb25kcygpLCBuZWVkc1JlcGFpbnQsIFJlbmRlclRoZW1lOjpmb2N1c1JpbmdDb2xvcihk
b2N1bWVudCgpLnN0eWxlQ29sb3JPcHRpb25zKCkpKTsKKyAgICAgICAgcGFpbnRJbmZvLmNvbnRl
eHQoKS5kcmF3Rm9jdXNSaW5nKHBpeGVsU25hcHBlZEZvY3VzUmluZ1JlY3RzLCBwYWdlKCkuZm9j
dXNDb250cm9sbGVyKCkudGltZVNpbmNlRm9jdXNXYXNTZXQoKS5zZWNvbmRzKCksIG5lZWRzUmVw
YWludCwgUmVuZGVyVGhlbWU6OmZvY3VzUmluZ0NvbG9yKHN0eWxlQ29sb3JPcHRpb25zKCkpKTsK
ICAgICBpZiAobmVlZHNSZXBhaW50KQogICAgICAgICBwYWdlKCkuZm9jdXNDb250cm9sbGVyKCku
c2V0Rm9jdXNlZEVsZW1lbnROZWVkc1JlcGFpbnQoKTsKICNlbHNlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckltYWdlLmNwcAppbmRleCA4MTA5ZWJmZmQyMWVkN2MzZTRkYTZhZjI4ZDhi
OWQwYzM1MGEzOTEzLi5hMGQyYjdiNDdlNmMyNDc3Zjg3MTYxNDM5OTBlMmRkM2Q2NTE3YTljIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2UuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZS5jcHAKQEAgLTU3NCw3ICs1NzQs
NyBAQCB2b2lkIFJlbmRlckltYWdlOjpwYWludEFyZWFFbGVtZW50Rm9jdXNSaW5nKFBhaW50SW5m
byYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQbwogCiAjaWYgUExBVEZPUk0oTUFDKQogICAgIGJv
b2wgbmVlZHNSZXBhaW50OwotICAgIHBhaW50SW5mby5jb250ZXh0KCkuZHJhd0ZvY3VzUmluZyhw
YXRoLCBwYWdlKCkuZm9jdXNDb250cm9sbGVyKCkudGltZVNpbmNlRm9jdXNXYXNTZXQoKS5zZWNv
bmRzKCksIG5lZWRzUmVwYWludCwgUmVuZGVyVGhlbWU6OmZvY3VzUmluZ0NvbG9yKGRvY3VtZW50
KCkuc3R5bGVDb2xvck9wdGlvbnMoKSkpOworICAgIHBhaW50SW5mby5jb250ZXh0KCkuZHJhd0Zv
Y3VzUmluZyhwYXRoLCBwYWdlKCkuZm9jdXNDb250cm9sbGVyKCkudGltZVNpbmNlRm9jdXNXYXNT
ZXQoKS5zZWNvbmRzKCksIG5lZWRzUmVwYWludCwgUmVuZGVyVGhlbWU6OmZvY3VzUmluZ0NvbG9y
KHN0eWxlQ29sb3JPcHRpb25zKCkpKTsKICAgICBpZiAobmVlZHNSZXBhaW50KQogICAgICAgICBw
YWdlKCkuZm9jdXNDb250cm9sbGVyKCkuc2V0Rm9jdXNlZEVsZW1lbnROZWVkc1JlcGFpbnQoKTsK
ICNlbHNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJC
YWNraW5nLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcu
Y3BwCmluZGV4IDg4ZDZlMDFkZDZlZmM2ZTJmN2E5YmMyNDMzOWQ0ODQ0YWRmMmFkN2EuLmJiN2Ix
OWViYzhjYTYxYTQyYjRmMGIzOTFjY2U3MWU0MDBkMDQ1NzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwCkBAIC0yNTQxLDcgKzI1NDEsNyBA
QCB2b2lkIFJlbmRlckxheWVyQmFja2luZzo6cGFpbnRDb250ZW50cyhjb25zdCBHcmFwaGljc0xh
eWVyKiBncmFwaGljc0xheWVyLCBHcmFwaAogI2VuZGlmCiAKICNpZiBQTEFURk9STShNQUMpCi0g
ICAgTG9jYWxEZWZhdWx0U3lzdGVtQXBwZWFyYW5jZSBsb2NhbEFwcGVhcmFuY2UocmVuZGVyZXIo
KS5kb2N1bWVudCgpLnVzZURhcmtBcHBlYXJhbmNlKCkpOworICAgIExvY2FsRGVmYXVsdFN5c3Rl
bUFwcGVhcmFuY2UgbG9jYWxBcHBlYXJhbmNlKHJlbmRlcmVyKCkudXNlRGFya0FwcGVhcmFuY2Uo
KSk7CiAjZW5kaWYKIAogICAgIC8vIFRoZSBkaXJ0eVJlY3QgaXMgaW4gdGhlIGNvb3JkcyBvZiB0
aGUgcGFpbnRpbmcgcm9vdC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJMYXllckNvbXBvc2l0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckxheWVyQ29tcG9zaXRvci5jcHAKaW5kZXggOTU2ZDNhNTdkZDA1MDk3MzQ3Y2ZmMTJmZTQ3YWVi
NjM3OGNjNjYzOS4uNTliZjhjZjc1NmMyM2E2MDBlYzdiYzdiNDE0MTk1OGUxZjQ1NDA2ZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5j
cHAKQEAgLTI3ODIsNyArMjc4Miw3IEBAIHZvaWQgcGFpbnRTY3JvbGxiYXIoU2Nyb2xsYmFyKiBz
Y3JvbGxiYXIsIEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgSW50UmVjCiB2b2lkIFJl
bmRlckxheWVyQ29tcG9zaXRvcjo6cGFpbnRDb250ZW50cyhjb25zdCBHcmFwaGljc0xheWVyKiBn
cmFwaGljc0xheWVyLCBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIEdyYXBoaWNzTGF5ZXJQYWlu
dGluZ1BoYXNlLCBjb25zdCBGbG9hdFJlY3QmIGNsaXAsIEdyYXBoaWNzTGF5ZXJQYWludEJlaGF2
aW9yKQogewogI2lmIFBMQVRGT1JNKE1BQykKLSAgICBMb2NhbERlZmF1bHRTeXN0ZW1BcHBlYXJh
bmNlIGxvY2FsQXBwZWFyYW5jZShtX3JlbmRlclZpZXcuZG9jdW1lbnQoKS51c2VEYXJrQXBwZWFy
YW5jZSgpKTsKKyAgICBMb2NhbERlZmF1bHRTeXN0ZW1BcHBlYXJhbmNlIGxvY2FsQXBwZWFyYW5j
ZShtX3JlbmRlclZpZXcudXNlRGFya0FwcGVhcmFuY2UoKSk7CiAjZW5kaWYKIAogICAgIEludFJl
Y3QgcGl4ZWxTbmFwcGVkUmVjdEZvckludGVncmFsUG9zaXRpb25lZEl0ZW1zID0gc25hcHBlZElu
dFJlY3QoTGF5b3V0UmVjdChjbGlwKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyTGlzdEJveC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
TGlzdEJveC5jcHAKaW5kZXggZWNkNTUxNjVmZmM4MTljNWIzMjZiM2U3NmEyNTA0OGQxNTA0YWIx
ZC4uNTIwMDgxM2UxOTU2OGRiMzhlZjdkNTZjZjhlODBjNjQ2MzEwYTA1MiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RCb3guY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0Qm94LmNwcApAQCAtNDI4LDEwICs0MjgsMTAgQEAg
dm9pZCBSZW5kZXJMaXN0Qm94OjpwYWludEl0ZW1Gb3JlZ3JvdW5kKFBhaW50SW5mbyYgcGFpbnRJ
bmZvLCBjb25zdCBMYXlvdXRQb2ludCYKICAgICBDb2xvciB0ZXh0Q29sb3IgPSBpdGVtU3R5bGUu
dmlzaXRlZERlcGVuZGVudENvbG9yV2l0aENvbG9yRmlsdGVyKENTU1Byb3BlcnR5Q29sb3IpOwog
ICAgIGlmIChpc09wdGlvbkVsZW1lbnQgJiYgZG93bmNhc3Q8SFRNTE9wdGlvbkVsZW1lbnQ+KCps
aXN0SXRlbUVsZW1lbnQpLnNlbGVjdGVkKCkpIHsKICAgICAgICAgaWYgKGZyYW1lKCkuc2VsZWN0
aW9uKCkuaXNGb2N1c2VkQW5kQWN0aXZlKCkgJiYgZG9jdW1lbnQoKS5mb2N1c2VkRWxlbWVudCgp
ID09ICZzZWxlY3RFbGVtZW50KCkpCi0gICAgICAgICAgICB0ZXh0Q29sb3IgPSB0aGVtZSgpLmFj
dGl2ZUxpc3RCb3hTZWxlY3Rpb25Gb3JlZ3JvdW5kQ29sb3IoZG9jdW1lbnQoKS5zdHlsZUNvbG9y
T3B0aW9ucygpKTsKKyAgICAgICAgICAgIHRleHRDb2xvciA9IHRoZW1lKCkuYWN0aXZlTGlzdEJv
eFNlbGVjdGlvbkZvcmVncm91bmRDb2xvcihzdHlsZUNvbG9yT3B0aW9ucygpKTsKICAgICAgICAg
Ly8gSG9ub3IgdGhlIGZvcmVncm91bmQgY29sb3IgZm9yIGRpc2FibGVkIGl0ZW1zCiAgICAgICAg
IGVsc2UgaWYgKCFsaXN0SXRlbUVsZW1lbnQtPmlzRGlzYWJsZWRGb3JtQ29udHJvbCgpICYmICFz
ZWxlY3RFbGVtZW50KCkuaXNEaXNhYmxlZEZvcm1Db250cm9sKCkpCi0gICAgICAgICAgICB0ZXh0
Q29sb3IgPSB0aGVtZSgpLmluYWN0aXZlTGlzdEJveFNlbGVjdGlvbkZvcmVncm91bmRDb2xvcihk
b2N1bWVudCgpLnN0eWxlQ29sb3JPcHRpb25zKCkpOworICAgICAgICAgICAgdGV4dENvbG9yID0g
dGhlbWUoKS5pbmFjdGl2ZUxpc3RCb3hTZWxlY3Rpb25Gb3JlZ3JvdW5kQ29sb3Ioc3R5bGVDb2xv
ck9wdGlvbnMoKSk7CiAgICAgfQogCiAgICAgcGFpbnRJbmZvLmNvbnRleHQoKS5zZXRGaWxsQ29s
b3IodGV4dENvbG9yKTsKQEAgLTQ2MSw5ICs0NjEsOSBAQCB2b2lkIFJlbmRlckxpc3RCb3g6OnBh
aW50SXRlbUJhY2tncm91bmQoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFBvaW50
JgogICAgIENvbG9yIGJhY2tDb2xvcjsKICAgICBpZiAoaXM8SFRNTE9wdGlvbkVsZW1lbnQ+KCps
aXN0SXRlbUVsZW1lbnQpICYmIGRvd25jYXN0PEhUTUxPcHRpb25FbGVtZW50PigqbGlzdEl0ZW1F
bGVtZW50KS5zZWxlY3RlZCgpKSB7CiAgICAgICAgIGlmIChmcmFtZSgpLnNlbGVjdGlvbigpLmlz
Rm9jdXNlZEFuZEFjdGl2ZSgpICYmIGRvY3VtZW50KCkuZm9jdXNlZEVsZW1lbnQoKSA9PSAmc2Vs
ZWN0RWxlbWVudCgpKQotICAgICAgICAgICAgYmFja0NvbG9yID0gdGhlbWUoKS5hY3RpdmVMaXN0
Qm94U2VsZWN0aW9uQmFja2dyb3VuZENvbG9yKGRvY3VtZW50KCkuc3R5bGVDb2xvck9wdGlvbnMo
KSk7CisgICAgICAgICAgICBiYWNrQ29sb3IgPSB0aGVtZSgpLmFjdGl2ZUxpc3RCb3hTZWxlY3Rp
b25CYWNrZ3JvdW5kQ29sb3Ioc3R5bGVDb2xvck9wdGlvbnMoKSk7CiAgICAgICAgIGVsc2UKLSAg
ICAgICAgICAgIGJhY2tDb2xvciA9IHRoZW1lKCkuaW5hY3RpdmVMaXN0Qm94U2VsZWN0aW9uQmFj
a2dyb3VuZENvbG9yKGRvY3VtZW50KCkuc3R5bGVDb2xvck9wdGlvbnMoKSk7CisgICAgICAgICAg
ICBiYWNrQ29sb3IgPSB0aGVtZSgpLmluYWN0aXZlTGlzdEJveFNlbGVjdGlvbkJhY2tncm91bmRD
b2xvcihzdHlsZUNvbG9yT3B0aW9ucygpKTsKICAgICB9IGVsc2UKICAgICAgICAgYmFja0NvbG9y
ID0gaXRlbVN0eWxlLnZpc2l0ZWREZXBlbmRlbnRDb2xvcldpdGhDb2xvckZpbHRlcihDU1NQcm9w
ZXJ0eUJhY2tncm91bmRDb2xvcik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9i
amVjdC5jcHAKaW5kZXggNzY0NDQ1MGYwODA3NzY4YzUzMWZlMmEyNzg5YjFlYmZmMjYwMDk5Ni4u
NDI1NTEwNWUyNDRmZGQ1MTdmMzQ5NGJhYjY5OTI4YjMyMzk3YTQ2ZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAKQEAgLTE4MDEsNiArMTgwMSwxNiBAQCBDdXJz
b3JEaXJlY3RpdmUgUmVuZGVyT2JqZWN0OjpnZXRDdXJzb3IoY29uc3QgTGF5b3V0UG9pbnQmLCBD
dXJzb3ImKSBjb25zdAogICAgIHJldHVybiBTZXRDdXJzb3JCYXNlZE9uU3R5bGU7CiB9CiAKK2Jv
b2wgUmVuZGVyT2JqZWN0Ojp1c2VEYXJrQXBwZWFyYW5jZSgpIGNvbnN0Cit7CisgICAgcmV0dXJu
IGRvY3VtZW50KCkudXNlRGFya0FwcGVhcmFuY2UoJnN0eWxlKCkpOworfQorCitPcHRpb25TZXQ8
U3R5bGVDb2xvcjo6T3B0aW9ucz4gUmVuZGVyT2JqZWN0OjpzdHlsZUNvbG9yT3B0aW9ucygpIGNv
bnN0Cit7CisgICAgcmV0dXJuIGRvY3VtZW50KCkuc3R5bGVDb2xvck9wdGlvbnMoJnN0eWxlKCkp
OworfQorCiBib29sIFJlbmRlck9iamVjdDo6Y2FuVXBkYXRlU2VsZWN0aW9uT25Sb290TGluZUJv
eGVzKCkKIHsKICAgICBpZiAobmVlZHNMYXlvdXQoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJPYmplY3QuaAppbmRleCAxM2IzNmQ2NzYwMmEwNWJlYjQ2ZWI1NzczNzE4ZDg1YWRhNTgy
OGEwLi4yZGNlOWRjYzU2OTEzMDkxZjcyOTk0N2ZjNmRmNzI2NGE4ZTQzZjVlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5oCkBAIC0xNzYsNiArMTc2LDkgQEAgcHVibGlj
OgogICAgICAgICByZXR1cm4gbG9jYXRlRW5jbG9zaW5nRnJhZ21lbnRlZEZsb3coKTsKICAgICB9
CiAKKyAgICBXRUJDT1JFX0VYUE9SVCBib29sIHVzZURhcmtBcHBlYXJhbmNlKCkgY29uc3Q7Cisg
ICAgT3B0aW9uU2V0PFN0eWxlQ29sb3I6Ok9wdGlvbnM+IHN0eWxlQ29sb3JPcHRpb25zKCkgY29u
c3Q7CisKICNpZm5kZWYgTkRFQlVHCiAgICAgdm9pZCBzZXRIYXNBWE9iamVjdChib29sIGZsYWcp
IHsgbV9oYXNBWE9iamVjdCA9IGZsYWc7IH0KICAgICBib29sIGhhc0FYT2JqZWN0KCkgY29uc3Qg
eyByZXR1cm4gbV9oYXNBWE9iamVjdDsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlclRhYmxlQ2VsbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyVGFibGVDZWxsLmNwcAppbmRleCAzNDVhN2JiNTdmNjczZDY3NTIzYjMzMzEzZmJhZWVmZjEw
OTVhNGE3Li43NTQxOTc4N2M3YjZmN2E5MWYzNjFjODY4OTNjODFmOWJhZWE3MGI1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVDZWxsLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVDZWxsLmNwcApAQCAtMTI4OSw3ICsx
Mjg5LDcgQEAgdm9pZCBSZW5kZXJUYWJsZUNlbGw6OnBhaW50QmFja2dyb3VuZHNCZWhpbmRDZWxs
KFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXkKIAogICAgIENvbXBvc2l0ZU9wZXJhdG9y
IGNvbXBvc2l0ZU9wID0gQ29tcG9zaXRlU291cmNlT3ZlcjsKICAgICBDb2xvciBjb2xvciA9IHN0
eWxlLnZpc2l0ZWREZXBlbmRlbnRDb2xvcihDU1NQcm9wZXJ0eUJhY2tncm91bmRDb2xvcik7Ci0g
ICAgaWYgKGRvY3VtZW50KCkuc2V0dGluZ3MoKS5wdW5jaE91dFdoaXRlQmFja2dyb3VuZHNJbkRh
cmtNb2RlKCkgJiYgQ29sb3I6OmlzV2hpdGVDb2xvcihjb2xvcikgJiYgdGhlbWUoKS51c2luZ0Rh
cmtBcHBlYXJhbmNlKCp0aGlzKSkKKyAgICBpZiAoZG9jdW1lbnQoKS5zZXR0aW5ncygpLnB1bmNo
T3V0V2hpdGVCYWNrZ3JvdW5kc0luRGFya01vZGUoKSAmJiBDb2xvcjo6aXNXaGl0ZUNvbG9yKGNv
bG9yKSAmJiB1c2VEYXJrQXBwZWFyYW5jZSgpKQogICAgICAgICBjb21wb3NpdGVPcCA9IENvbXBv
c2l0ZURlc3RpbmF0aW9uT3V0OwogCiAgICAgY29sb3IgPSBzdHlsZS5jb2xvckJ5QXBwbHlpbmdD
b2xvckZpbHRlcihjb2xvcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyVGhlbWUuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lLmNw
cAppbmRleCBiZDY2YmIzZjU5MWEwYzdjODRhOWNiZjhmNTNjY2E2ZmZlMGJhODU5Li4yNTczOTAz
OTZmNTBhMzIyNjZmODJhMDQ4ZTQ4NjcyYzkzOGExNTVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJUaGVtZS5jcHAKQEAgLTMxOCw3ICszMTgsNyBAQCBib29sIFJlbmRlclRoZW1l
OjpwYWludChjb25zdCBSZW5kZXJCb3gmIGJveCwgQ29udHJvbFN0YXRlcyYgY29udHJvbFN0YXRl
cywgY29ucwogICAgIGNhc2UgQnV0dG9uUGFydDoKICAgICBjYXNlIElubmVyU3BpbkJ1dHRvblBh
cnQ6CiAgICAgICAgIHVwZGF0ZUNvbnRyb2xTdGF0ZXNGb3JSZW5kZXJlcihib3gsIGNvbnRyb2xT
dGF0ZXMpOwotICAgICAgICBUaGVtZTo6c2luZ2xldG9uKCkucGFpbnQocGFydCwgY29udHJvbFN0
YXRlcywgcGFpbnRJbmZvLmNvbnRleHQoKSwgZGV2aWNlUGl4ZWxTbmFwcGVkUmVjdCwgYm94LnN0
eWxlKCkuZWZmZWN0aXZlWm9vbSgpLCAmYm94LnZpZXcoKS5mcmFtZVZpZXcoKSwgZGV2aWNlU2Nh
bGVGYWN0b3IsIHBhZ2VTY2FsZUZhY3RvciwgYm94LmRvY3VtZW50KCkudXNlU3lzdGVtQXBwZWFy
YW5jZSgpLCBib3guZG9jdW1lbnQoKS51c2VEYXJrQXBwZWFyYW5jZSgpKTsKKyAgICAgICAgVGhl
bWU6OnNpbmdsZXRvbigpLnBhaW50KHBhcnQsIGNvbnRyb2xTdGF0ZXMsIHBhaW50SW5mby5jb250
ZXh0KCksIGRldmljZVBpeGVsU25hcHBlZFJlY3QsIGJveC5zdHlsZSgpLmVmZmVjdGl2ZVpvb20o
KSwgJmJveC52aWV3KCkuZnJhbWVWaWV3KCksIGRldmljZVNjYWxlRmFjdG9yLCBwYWdlU2NhbGVG
YWN0b3IsIGJveC5kb2N1bWVudCgpLnVzZVN5c3RlbUFwcGVhcmFuY2UoKSwgYm94LnVzZURhcmtB
cHBlYXJhbmNlKCkpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgZGVmYXVsdDoKICAgICAg
ICAgYnJlYWs7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhl
bWUuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZS5oCmluZGV4IDhmYmE0
ZGI0MDk2NzRjNzAzMmU1NmIxZWQ1Yzc5NjU4M2Y0YzAxNTYuLjEzMmE2ZTQ5ZjA5NjZkN2Q1MDM3
Y2I1YzZhMDM2NGY4Mzk4OTk5YjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJUaGVtZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVt
ZS5oCkBAIC0yNjEsOCArMjYxLDYgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBwYWludFN5
c3RlbVByZXZpZXdCYWRnZShJbWFnZSYsIGNvbnN0IFBhaW50SW5mbyYsIGNvbnN0IEZsb2F0UmVj
dCYpOwogI2VuZGlmCiAKLSAgICB2aXJ0dWFsIGJvb2wgdXNpbmdEYXJrQXBwZWFyYW5jZShjb25z
dCBSZW5kZXJPYmplY3QmKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQotCiBwcm90ZWN0ZWQ6CiAg
ICAgdmlydHVhbCBGb250Q2FzY2FkZURlc2NyaXB0aW9uJiBjYWNoZWRTeXN0ZW1Gb250RGVzY3Jp
cHRpb24oQ1NTVmFsdWVJRCBzeXN0ZW1Gb250SUQpIGNvbnN0OwogICAgIHZpcnR1YWwgdm9pZCB1
cGRhdGVDYWNoZWRTeXN0ZW1Gb250RGVzY3JpcHRpb24oQ1NTVmFsdWVJRCBzeXN0ZW1Gb250SUQs
IEZvbnRDYXNjYWRlRGVzY3JpcHRpb24mKSBjb25zdCA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVNYWMuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJUaGVtZU1hYy5oCmluZGV4IGQ4NTc2MWFiYzliMTJkZmRkYTU1NDVkZDE0Zjgw
MzQ5NjM3OTUwZDcuLjFkZDJiMWY1ZmVmODZmOGM5NWY4NzZhYmZmZjg2NjQ4OWY4Y2ZhZDggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZU1hYy5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZU1hYy5oCkBAIC0xNzQsOCArMTc0
LDYgQEAgcHJpdmF0ZToKICAgICBib29sIHBhaW50QXR0YWNobWVudChjb25zdCBSZW5kZXJPYmpl
Y3QmLCBjb25zdCBQYWludEluZm8mLCBjb25zdCBJbnRSZWN0JikgZmluYWw7CiAjZW5kaWYKIAot
ICAgIGJvb2wgdXNpbmdEYXJrQXBwZWFyYW5jZShjb25zdCBSZW5kZXJPYmplY3QmKSBjb25zdCBm
aW5hbDsKLQogcHJpdmF0ZToKICAgICBTdHJpbmcgZmlsZUxpc3ROYW1lRm9yV2lkdGgoY29uc3Qg
RmlsZUxpc3QqLCBjb25zdCBGb250Q2FzY2FkZSYsIGludCB3aWR0aCwgYm9vbCBtdWx0aXBsZUZp
bGVzQWxsb3dlZCkgY29uc3QgZmluYWw7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJUaGVtZU1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJUaGVtZU1hYy5tbQppbmRleCAzZmJkNjBkNjE3MTc5ZDgwYjE5MjY1OWE5YjhmMGJjOWM5ZTZj
ZGQ1Li5kNTUwZTViMzNmNGFhNGQyZTUzMzk1ZDBlYmVjOTA4YjJmN2MyN2E5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVNYWMubW0KKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lTWFjLm1tCkBAIC0yOTcsNyArMjk3LDcgQEAg
UmVuZGVyVGhlbWVNYWM6OlJlbmRlclRoZW1lTWFjKCkKIAogTlNWaWV3ICpSZW5kZXJUaGVtZU1h
Yzo6ZG9jdW1lbnRWaWV3Rm9yKGNvbnN0IFJlbmRlck9iamVjdCYgbykgY29uc3QKIHsKLSAgICBM
b2NhbERlZmF1bHRTeXN0ZW1BcHBlYXJhbmNlIGxvY2FsQXBwZWFyYW5jZSh1c2luZ0RhcmtBcHBl
YXJhbmNlKG8pKTsKKyAgICBMb2NhbERlZmF1bHRTeXN0ZW1BcHBlYXJhbmNlIGxvY2FsQXBwZWFy
YW5jZShvLnVzZURhcmtBcHBlYXJhbmNlKCkpOwogICAgIENvbnRyb2xTdGF0ZXMgc3RhdGVzKGV4
dHJhY3RDb250cm9sU3RhdGVzRm9yUmVuZGVyZXIobykpOwogICAgIHJldHVybiBUaGVtZU1hYzo6
ZW5zdXJlZFZpZXcoJm8udmlldygpLmZyYW1lVmlldygpLCBzdGF0ZXMpOwogfQpAQCAtMTcxMyw3
ICsxNzEzLDcgQEAgdm9pZCBSZW5kZXJUaGVtZU1hYzo6YWRqdXN0TWVudUxpc3RTdHlsZShTdHls
ZVJlc29sdmVyJiBzdHlsZVJlc29sdmVyLCBSZW5kZXJTdHkKICAgICAvLyBTZXQgdGhlIGZvcmVn
cm91bmQgY29sb3IgdG8gYmxhY2sgb3IgZ3JheSB3aGVuIHdlIGhhdmUgdGhlIGFxdWEgbG9vay4K
ICAgICBDb2xvciBjID0gQ29sb3I6OmRhcmtHcmF5OwogICAgIGlmIChlKSB7Ci0gICAgICAgIE9w
dGlvblNldDxTdHlsZUNvbG9yOjpPcHRpb25zPiBvcHRpb25zID0gZS0+ZG9jdW1lbnQoKS5zdHls
ZUNvbG9yT3B0aW9ucygpOworICAgICAgICBPcHRpb25TZXQ8U3R5bGVDb2xvcjo6T3B0aW9ucz4g
b3B0aW9ucyA9IGUtPmRvY3VtZW50KCkuc3R5bGVDb2xvck9wdGlvbnMoJnN0eWxlKTsKICAgICAg
ICAgYyA9ICFlLT5pc0Rpc2FibGVkRm9ybUNvbnRyb2woKSA/IHN5c3RlbUNvbG9yKENTU1ZhbHVl
QnV0dG9udGV4dCwgb3B0aW9ucykgOiBzeXN0ZW1Db2xvcihDU1NWYWx1ZUdyYXl0ZXh0LCBvcHRp
b25zKTsKICAgICB9CiAgICAgc3R5bGUuc2V0Q29sb3IoYyk7CkBAIC0xODAwLDcgKzE4MDAsNyBA
QCB2b2lkIFJlbmRlclRoZW1lTWFjOjpzZXRQb3B1cEJ1dHRvbkNlbGxTdGF0ZShjb25zdCBSZW5k
ZXJPYmplY3QmIG8sIGNvbnN0IEludFNpegogCiB2b2lkIFJlbmRlclRoZW1lTWFjOjpwYWludENl
bGxBbmRTZXRGb2N1c2VkRWxlbWVudE5lZWRzUmVwYWludElmTmVjZXNzYXJ5KE5TQ2VsbCogY2Vs
bCwgY29uc3QgUmVuZGVyT2JqZWN0JiByZW5kZXJlciwgY29uc3QgUGFpbnRJbmZvJiBwYWludElu
Zm8sIGNvbnN0IEZsb2F0UmVjdCYgcmVjdCkKIHsKLSAgICBMb2NhbERlZmF1bHRTeXN0ZW1BcHBl
YXJhbmNlIGxvY2FsQXBwZWFyYW5jZSh1c2luZ0RhcmtBcHBlYXJhbmNlKHJlbmRlcmVyKSk7Cisg
ICAgTG9jYWxEZWZhdWx0U3lzdGVtQXBwZWFyYW5jZSBsb2NhbEFwcGVhcmFuY2UocmVuZGVyZXIu
dXNlRGFya0FwcGVhcmFuY2UoKSk7CiAgICAgYm9vbCBzaG91bGREcmF3Rm9jdXNSaW5nID0gaXNG
b2N1c2VkKHJlbmRlcmVyKSAmJiByZW5kZXJlci5zdHlsZSgpLm91dGxpbmVTdHlsZUlzQXV0bygp
ID09IE91dGxpbmVJc0F1dG86Ok9uOwogICAgIGJvb2wgc2hvdWxkVXNlSW1hZ2VCdWZmZXIgPSBy
ZW5kZXJlci5zdHlsZSgpLmVmZmVjdGl2ZVpvb20oKSAhPSAxIHx8IHJlbmRlcmVyLnBhZ2UoKS5w
YWdlU2NhbGVGYWN0b3IoKSAhPSAxOwogICAgIGJvb2wgc2hvdWxkRHJhd0NlbGwgPSB0cnVlOwpA
QCAtMTg4Miw3ICsxODgyLDcgQEAgYm9vbCBSZW5kZXJUaGVtZU1hYzo6cGFpbnRTbGlkZXJUaHVt
Yihjb25zdCBSZW5kZXJPYmplY3QmIG8sIGNvbnN0IFBhaW50SW5mbyYgcGEKICAgICAgICAgPyBz
bGlkZXJUaHVtYlZlcnRpY2FsKCkKICAgICAgICAgOiBzbGlkZXJUaHVtYkhvcml6b250YWwoKTsK
IAotICAgIExvY2FsRGVmYXVsdFN5c3RlbUFwcGVhcmFuY2UgbG9jYWxBcHBlYXJhbmNlKHVzaW5n
RGFya0FwcGVhcmFuY2UobykpOworICAgIExvY2FsRGVmYXVsdFN5c3RlbUFwcGVhcmFuY2UgbG9j
YWxBcHBlYXJhbmNlKG8udXNlRGFya0FwcGVhcmFuY2UoKSk7CiAKICAgICBMb2NhbEN1cnJlbnRH
cmFwaGljc0NvbnRleHQgbG9jYWxDb250ZXh0KHBhaW50SW5mby5jb250ZXh0KCkpOwogCkBAIC0y
OTk0LDExICsyOTk0LDYgQEAgYm9vbCBSZW5kZXJUaGVtZU1hYzo6cGFpbnRBdHRhY2htZW50KGNv
bnN0IFJlbmRlck9iamVjdCYgcmVuZGVyZXIsIGNvbnN0IFBhaW50SW4KIAogI2VuZGlmIC8vIEVO
QUJMRShBVFRBQ0hNRU5UX0VMRU1FTlQpCiAKLWJvb2wgUmVuZGVyVGhlbWVNYWM6OnVzaW5nRGFy
a0FwcGVhcmFuY2UoY29uc3QgUmVuZGVyT2JqZWN0JiBvKSBjb25zdAotewotICAgIHJldHVybiBv
LmRvY3VtZW50KCkudXNlRGFya0FwcGVhcmFuY2UoKTsKLX0KLQogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQogCiAjZW5kaWYgLy8gUExBVEZPUk0oTUFDKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3R5bGUvUmVuZGVyU3R5bGUuaAppbmRleCA5ODFiOGVlZWViZTk2YTYxYjFhYWQzNjMyNDJk
NzRlOTY4MWMwM2VkLi43MWUwMGI4NTgzZDQwYTVjMjdhNmVhMTEwZjUyNWI5MDRjZDcxMzRjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuaApAQCAtNjMy
LDYgKzYzMiwxMCBAQCBwdWJsaWM6CiAKICAgICBSdWJ5UG9zaXRpb24gcnVieVBvc2l0aW9uKCkg
Y29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8UnVieVBvc2l0aW9uPihtX3JhcmVJbmhlcml0ZWRE
YXRhLT5ydWJ5UG9zaXRpb24pOyB9CiAKKyNpZiBFTkFCTEUoREFSS19NT0RFX0NTUykKKyAgICBP
cHRpb25TZXQ8Q29sb3JTY2hlbWVzPiBzdXBwb3J0ZWRDb2xvclNjaGVtZXMoKSBjb25zdCB7IHJl
dHVybiBPcHRpb25TZXQ8Q29sb3JTY2hlbWVzPjo6ZnJvbVJhdyhtX3JhcmVJbmhlcml0ZWREYXRh
LT5zdXBwb3J0ZWRDb2xvclNjaGVtZXMpOyB9CisjZW5kaWYKKwogICAgIFRleHRPcmllbnRhdGlv
biB0ZXh0T3JpZW50YXRpb24oKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxUZXh0T3JpZW50
YXRpb24+KG1fcmFyZUluaGVyaXRlZERhdGEtPnRleHRPcmllbnRhdGlvbik7IH0KIAogICAgIE9i
amVjdEZpdCBvYmplY3RGaXQoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxPYmplY3RGaXQ+
KG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPm9iamVjdEZpdCk7IH0KQEAgLTExNjUsNiArMTE2OSwx
MCBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHNldFJ1YnlQb3NpdGlvbihSdWJ5UG9zaXRpb24gcG9z
aXRpb24pIHsgU0VUX1ZBUihtX3JhcmVJbmhlcml0ZWREYXRhLCBydWJ5UG9zaXRpb24sIHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihwb3NpdGlvbikpOyB9CiAKKyNpZiBFTkFCTEUoREFSS19NT0RFX0NT
UykKKyAgICB2b2lkIHNldFN1cHBvcnRlZENvbG9yU2NoZW1lcyhPcHRpb25TZXQ8Q29sb3JTY2hl
bWVzPiBjb2xvclNjaGVtZXMpIHsgU0VUX1ZBUihtX3JhcmVJbmhlcml0ZWREYXRhLCBzdXBwb3J0
ZWRDb2xvclNjaGVtZXMsIGNvbG9yU2NoZW1lcy50b1JhdygpKTsgfQorI2VuZGlmCisKICAgICB2
b2lkIHNldEZpbHRlcihjb25zdCBGaWx0ZXJPcGVyYXRpb25zJiBvcHMpIHsgU0VUX05FU1RFRF9W
QVIobV9yYXJlTm9uSW5oZXJpdGVkRGF0YSwgZmlsdGVyLCBvcGVyYXRpb25zLCBvcHMpOyB9CiAg
ICAgdm9pZCBzZXRBcHBsZUNvbG9yRmlsdGVyKGNvbnN0IEZpbHRlck9wZXJhdGlvbnMmIG9wcykg
eyBTRVRfTkVTVEVEX1ZBUihtX3JhcmVJbmhlcml0ZWREYXRhLCBhcHBsZUNvbG9yRmlsdGVyLCBv
cGVyYXRpb25zLCBvcHMpOyB9CiAKQEAgLTE1NzgsNiArMTU4NiwxMCBAQCBwdWJsaWM6CiAgICAg
c3RhdGljIFF1b3Rlc0RhdGEqIGluaXRpYWxRdW90ZXMoKSB7IHJldHVybiBudWxscHRyOyB9CiAg
ICAgc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyYgaW5pdGlhbENvbnRlbnRBbHRUZXh0KCkgeyBy
ZXR1cm4gZW1wdHlBdG9tKCk7IH0KIAorI2lmIEVOQUJMRShEQVJLX01PREVfQ1NTKQorICAgIHN0
YXRpYyBPcHRpb25TZXQ8Q29sb3JTY2hlbWVzPiBpbml0aWFsU3VwcG9ydGVkQ29sb3JTY2hlbWVz
KCkgeyByZXR1cm4gT3B0aW9uU2V0PENvbG9yU2NoZW1lcz4geyB9OyB9CisjZW5kaWYKKwogI2lm
IEVOQUJMRShDU1MzX1RFWFQpCiAgICAgc3RhdGljIFRleHRJbmRlbnRMaW5lIGluaXRpYWxUZXh0
SW5kZW50TGluZSgpIHsgcmV0dXJuIFRleHRJbmRlbnRMaW5lOjpGaXJzdExpbmU7IH0KICAgICBz
dGF0aWMgVGV4dEluZGVudFR5cGUgaW5pdGlhbFRleHRJbmRlbnRUeXBlKCkgeyByZXR1cm4gVGV4
dEluZGVudFR5cGU6Ok5vcm1hbDsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N0eWxlL1JlbmRlclN0eWxlQ29uc3RhbnRzLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3R5bGUvUmVuZGVyU3R5bGVDb25zdGFudHMuaAppbmRleCAxNzZlYjIxM2E3YTZlNzgyZTMx
MDc5MGQ1MTBmMGNkMWIzZDllMDI4Li42MTRhOTc3NWRjYWQyMzNiMzc5MGMxNTkxZDY4YzQzMDg4
OTk1YWQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVy
U3R5bGVDb25zdGFudHMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVu
ZGVyU3R5bGVDb25zdGFudHMuaApAQCAtMTAxOCw2ICsxMDE4LDE0IEBAIGVudW0gY2xhc3MgUnVi
eVBvc2l0aW9uIDogdWludDhfdCB7CiAgICAgSW50ZXJDaGFyYWN0ZXIKIH07CiAKKyNpZiBFTkFC
TEUoREFSS19NT0RFX0NTUykKK2VudW0gY2xhc3MgQ29sb3JTY2hlbWVzIDogdWludDhfdCB7Cisg
ICAgT25seSA9IDEgPDwgMCwKKyAgICBMaWdodCA9IDEgPDwgMSwKKyAgICBEYXJrID0gMSA8PCAy
Cit9OworI2VuZGlmCisKIHN0YXRpYyBjb25zdCBzaXplX3QgR3JpZEF1dG9GbG93Qml0cyA9IDQ7
CiBlbnVtIEludGVybmFsR3JpZEF1dG9GbG93QWxnb3JpdGhtIHsKICAgICBJbnRlcm5hbEF1dG9G
bG93QWxnb3JpdGhtU3BhcnNlID0gMSA8PCAwLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N0eWxlL1N0eWxlUmFyZUluaGVyaXRlZERhdGEuY3BwIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlUmFyZUluaGVyaXRlZERhdGEuY3BwCmluZGV4IDVmYjc5
YjNmOTQ3ZTQ0NmI3MGVmMzM4MjdjYzcyOGNiYzgwZWIwNmEuLmJkYTVhMTY5YzNkYjY5NDU2NGM5
ZTFlNTE1NDM2OGYwNDMxMDdkY2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdHlsZS9TdHlsZVJhcmVJbmhlcml0ZWREYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3R5bGUvU3R5bGVSYXJlSW5oZXJpdGVkRGF0YS5jcHAKQEAgLTExNSw2ICsxMTUs
OSBAQCBTdHlsZVJhcmVJbmhlcml0ZWREYXRhOjpTdHlsZVJhcmVJbmhlcml0ZWREYXRhKCkKICAg
ICAsIGltYWdlUmVzb2x1dGlvblNvdXJjZShSZW5kZXJTdHlsZTo6aW5pdGlhbEltYWdlUmVzb2x1
dGlvblNvdXJjZSgpKQogICAgICwgaW1hZ2VSZXNvbHV0aW9uU25hcChSZW5kZXJTdHlsZTo6aW5p
dGlhbEltYWdlUmVzb2x1dGlvblNuYXAoKSkKICNlbmRpZgorI2lmIEVOQUJMRShEQVJLX01PREVf
Q1NTKQorICAgICwgc3VwcG9ydGVkQ29sb3JTY2hlbWVzKFJlbmRlclN0eWxlOjppbml0aWFsU3Vw
cG9ydGVkQ29sb3JTY2hlbWVzKCkudG9SYXcoKSkKKyNlbmRpZgogI2lmIEVOQUJMRShDU1MzX1RF
WFQpCiAgICAgLCB0ZXh0QWxpZ25MYXN0KFJlbmRlclN0eWxlOjppbml0aWFsVGV4dEFsaWduTGFz
dCgpKQogICAgICwgdGV4dEp1c3RpZnkoUmVuZGVyU3R5bGU6OmluaXRpYWxUZXh0SnVzdGlmeSgp
KQpAQCAtMjEwLDYgKzIxMyw5IEBAIGlubGluZSBTdHlsZVJhcmVJbmhlcml0ZWREYXRhOjpTdHls
ZVJhcmVJbmhlcml0ZWREYXRhKGNvbnN0IFN0eWxlUmFyZUluaGVyaXRlZERhCiAgICAgLCBpbWFn
ZVJlc29sdXRpb25Tb3VyY2Uoby5pbWFnZVJlc29sdXRpb25Tb3VyY2UpCiAgICAgLCBpbWFnZVJl
c29sdXRpb25TbmFwKG8uaW1hZ2VSZXNvbHV0aW9uU25hcCkKICNlbmRpZgorI2lmIEVOQUJMRShE
QVJLX01PREVfQ1NTKQorICAgICwgc3VwcG9ydGVkQ29sb3JTY2hlbWVzKG8uc3VwcG9ydGVkQ29s
b3JTY2hlbWVzKQorI2VuZGlmCiAjaWYgRU5BQkxFKENTUzNfVEVYVCkKICAgICAsIHRleHRBbGln
bkxhc3Qoby50ZXh0QWxpZ25MYXN0KQogICAgICwgdGV4dEp1c3RpZnkoby50ZXh0SnVzdGlmeSkK
QEAgLTMzMCw2ICszMzYsOSBAQCBib29sIFN0eWxlUmFyZUluaGVyaXRlZERhdGE6Om9wZXJhdG9y
PT0oY29uc3QgU3R5bGVSYXJlSW5oZXJpdGVkRGF0YSYgbykgY29uc3QKICAgICAgICAgJiYgaW1h
Z2VSZXNvbHV0aW9uU25hcCA9PSBvLmltYWdlUmVzb2x1dGlvblNuYXAKICAgICAgICAgJiYgaW1h
Z2VSZXNvbHV0aW9uID09IG8uaW1hZ2VSZXNvbHV0aW9uCiAjZW5kaWYKKyNpZiBFTkFCTEUoREFS
S19NT0RFX0NTUykKKyAgICAgICAgJiYgc3VwcG9ydGVkQ29sb3JTY2hlbWVzID09IG8uc3VwcG9y
dGVkQ29sb3JTY2hlbWVzCisjZW5kaWYKICNpZiBFTkFCTEUoQ1NTM19URVhUKQogICAgICAgICAm
JiB0ZXh0QWxpZ25MYXN0ID09IG8udGV4dEFsaWduTGFzdAogICAgICAgICAmJiB0ZXh0SnVzdGlm
eSA9PSBvLnRleHRKdXN0aWZ5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3R5bGUvU3R5bGVSYXJlSW5oZXJpdGVkRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N0eWxlL1N0eWxlUmFyZUluaGVyaXRlZERhdGEuaAppbmRleCBhM2FkMTc1MDM0YzlmMzcxYWUx
MzU4YzI4YTU0NThhYzg0ZjA4ZTllLi5lZDA0NDhhNWYxMzgxNTFkMDY4NTFkZDFkNTEyODczZWQy
NWNjNDNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVS
YXJlSW5oZXJpdGVkRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9T
dHlsZVJhcmVJbmhlcml0ZWREYXRhLmgKQEAgLTEyOCw2ICsxMjgsOSBAQCBwdWJsaWM6CiAgICAg
dW5zaWduZWQgaW1hZ2VSZXNvbHV0aW9uU291cmNlIDogMTsgLy8gSW1hZ2VSZXNvbHV0aW9uU291
cmNlCiAgICAgdW5zaWduZWQgaW1hZ2VSZXNvbHV0aW9uU25hcCA6IDE7IC8vIEltYWdlUmVzb2x1
dGlvblNuYXAKICNlbmRpZgorI2lmIEVOQUJMRShEQVJLX01PREVfQ1NTKQorICAgIHVuc2lnbmVk
IHN1cHBvcnRlZENvbG9yU2NoZW1lcyA6IDM7IC8vIENvbG9yU2NoZW1lcworI2VuZGlmCiAjaWYg
RU5BQkxFKENTUzNfVEVYVCkKICAgICB1bnNpZ25lZCB0ZXh0QWxpZ25MYXN0IDogMzsgLy8gVGV4
dEFsaWduTGFzdAogICAgIHVuc2lnbmVkIHRleHRKdXN0aWZ5IDogMjsgLy8gVGV4dEp1c3RpZnkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuY3BwCmluZGV4IDkxZWY4NTE0ZTU4
M2VkMzUzODBlN2FjNzgyN2QxYmQwZjgyNTQwNGEuLjA2MDk3ZWNjYmJlM2MyZTZjNjJhNDU5ZGMx
OGViMTYyZDQ5OTQ4YTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9T
VkdJbWFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmNw
cApAQCAtNDcsNiArNDcsNyBAQAogI2luY2x1ZGUgIlBhZ2VDb25maWd1cmF0aW9uLmgiCiAjaW5j
bHVkZSAiUmVuZGVyU1ZHUm9vdC5oIgogI2luY2x1ZGUgIlJlbmRlclN0eWxlLmgiCisjaW5jbHVk
ZSAiUmVuZGVyVmlldy5oIgogI2luY2x1ZGUgIlNWR0RvY3VtZW50LmgiCiAjaW5jbHVkZSAiU1ZH
RkVJbWFnZUVsZW1lbnQuaCIKICNpbmNsdWRlICJTVkdGb3JlaWduT2JqZWN0RWxlbWVudC5oIgpA
QCAtMzI0LDggKzMyNSw3IEBAIEltYWdlRHJhd1Jlc3VsdCBTVkdJbWFnZTo6ZHJhdyhHcmFwaGlj
c0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjCiAgICAgfQogCiAjaWYg
UExBVEZPUk0oTUFDKQotICAgIGF1dG8qIGRvY3VtZW50ID0gbV9wYWdlLT5tYWluRnJhbWUoKS5k
b2N1bWVudCgpOwotICAgIExvY2FsRGVmYXVsdFN5c3RlbUFwcGVhcmFuY2UgbG9jYWxBcHBlYXJh
bmNlKGRvY3VtZW50ID8gZG9jdW1lbnQtPnVzZURhcmtBcHBlYXJhbmNlKCkgOiBmYWxzZSk7Cisg
ICAgTG9jYWxEZWZhdWx0U3lzdGVtQXBwZWFyYW5jZSBsb2NhbEFwcGVhcmFuY2Uodmlldy0+cmVu
ZGVyVmlldygpLT51c2VEYXJrQXBwZWFyYW5jZSgpKTsKICNlbmRpZgogCiAgICAgdmlldy0+cGFp
bnQoY29udGV4dCwgaW50ZXJzZWN0aW9uKGNvbnRleHQuY2xpcEJvdW5kcygpLCBlbmNsb3NpbmdJ
bnRSZWN0KHNyY1JlY3QpKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
SW5qZWN0ZWRCdW5kbGUvRE9NL0luamVjdGVkQnVuZGxlUmFuZ2VIYW5kbGUuY3BwIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0RPTS9JbmplY3RlZEJ1bmRsZVJhbmdl
SGFuZGxlLmNwcAppbmRleCAzZjRmNTY3ZGM0YmFlNjE4NTU1MjUyMDg3NGY1ZmViNTVjODhmYzIx
Li40YmZkZDdmOWY0YzRjYzRkZmE2ZGVhYWJjMDFmNGE2YzExMWVkYWNiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvRE9NL0luamVjdGVkQnVuZGxl
UmFuZ2VIYW5kbGUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1
bmRsZS9ET00vSW5qZWN0ZWRCdW5kbGVSYW5nZUhhbmRsZS5jcHAKQEAgLTQxLDYgKzQxLDcgQEAK
ICNpbmNsdWRlIDxXZWJDb3JlL0pTUmFuZ2UuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1BhZ2UuaD4K
ICNpbmNsdWRlIDxXZWJDb3JlL1JhbmdlLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9SZW5kZXJWaWV3
Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9WaXNpYmxlU2VsZWN0aW9uLmg+CiAjaW5jbHVkZSA8d3Rm
L0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KQEAgLTEyNCw3ICsx
MjUsOCBAQCBSZWZQdHI8V2ViSW1hZ2U+IEluamVjdGVkQnVuZGxlUmFuZ2VIYW5kbGU6OnJlbmRl
cmVkSW1hZ2UoU25hcHNob3RPcHRpb25zIG9wdGlvbgogICAgICAgICByZXR1cm4gbnVsbHB0cjsK
IAogI2lmIFBMQVRGT1JNKE1BQykKLSAgICBMb2NhbERlZmF1bHRTeXN0ZW1BcHBlYXJhbmNlIGxv
Y2FsQXBwZWFyYW5jZShvd25lckRvY3VtZW50LnVzZURhcmtBcHBlYXJhbmNlKCkpOworICAgIFJl
bmRlclZpZXcqIHJlbmRlclZpZXcgPSBmcmFtZVZpZXctPnJlbmRlclZpZXcoKTsKKyAgICBMb2Nh
bERlZmF1bHRTeXN0ZW1BcHBlYXJhbmNlIGxvY2FsQXBwZWFyYW5jZShyZW5kZXJWaWV3ID8gcmVu
ZGVyVmlldy0+dXNlRGFya0FwcGVhcmFuY2UoKSA6IGZhbHNlKTsKICNlbmRpZgogCiAgICAgUmVm
PEZyYW1lPiBwcm90ZWN0b3IoKmZyYW1lKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViUGFnZS5jcHAKaW5kZXggODBjNTM4M2EyZTU0ODU0ZTczYzg3NjUzN2ZjYzY0ZjIz
Y2RmMWJmNy4uMmY1NGQ1ZGZkNGFkNTcyMWY5MzlkOTQ2OTY3MzFmNjYxM2E4OGQ3MSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKQEAgLTE1NTYsOCAr
MTU1Niw4IEBAIHZvaWQgV2ViUGFnZTo6c2Nyb2xsTWFpbkZyYW1lSWZOb3RBdE1heFNjcm9sbFBv
c2l0aW9uKGNvbnN0IEludFNpemUmIHNjcm9sbE9mZnNlCiB2b2lkIFdlYlBhZ2U6OmRyYXdSZWN0
KEdyYXBoaWNzQ29udGV4dCYgZ3JhcGhpY3NDb250ZXh0LCBjb25zdCBJbnRSZWN0JiByZWN0KQog
ewogI2lmIFBMQVRGT1JNKE1BQykKLSAgICBhdXRvKiBkb2N1bWVudCA9IG1fbWFpbkZyYW1lLT5j
b3JlRnJhbWUoKS0+ZG9jdW1lbnQoKTsKLSAgICBMb2NhbERlZmF1bHRTeXN0ZW1BcHBlYXJhbmNl
IGxvY2FsQXBwZWFyYW5jZShkb2N1bWVudCA/IGRvY3VtZW50LT51c2VEYXJrQXBwZWFyYW5jZSgp
IDogZmFsc2UpOworICAgIFJlbmRlclZpZXcqIHJlbmRlclZpZXcgPSBtX3BhZ2UtPm1haW5GcmFt
ZSgpLnZpZXcoKS0+cmVuZGVyVmlldygpOworICAgIExvY2FsRGVmYXVsdFN5c3RlbUFwcGVhcmFu
Y2UgbG9jYWxBcHBlYXJhbmNlKHJlbmRlclZpZXcgPyByZW5kZXJWaWV3LT51c2VEYXJrQXBwZWFy
YW5jZSgpIDogZmFsc2UpOwogI2VuZGlmCiAKICAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVy
IHN0YXRlU2F2ZXIoZ3JhcGhpY3NDb250ZXh0KTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0No
YW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA2NDk3MGEwYjUwYjMyOWQzZjE1
NDg1NDRmYTdmODdmNTI4NjMwNTdkLi5jZWY3ZmZiMDI0OTM5MWFhZTg4NTIwM2IwNDAyMzhlZGQ0
MThkNzg0IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTgtMTEtMDcgIFRpbW90aHkgSGF0Y2hl
ciAgPHRpbW90aHlAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBleHBlcmltZW50YWwgc3VwcG9y
dCBmb3IgYSBgc3VwcG9ydGVkLWNvbG9yLXNjaGVtZXNgIENTUyBwcm9wZXJ0eS4KKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MTMxOQorICAgICAgICBy
ZGFyOi8vcHJvYmxlbS80NTg1MjI2MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgICogY3NzLWRhcmstbW9kZS9wYXJzZS1zdXBwb3J0ZWQtY29sb3Itc2No
ZW1lcy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGNzcy1kYXJrLW1vZGUvcGFyc2Ut
c3VwcG9ydGVkLWNvbG9yLXNjaGVtZXMuaHRtbDogQWRkZWQuCisgICAgICAgICogY3NzLWRhcmst
bW9kZS9zdXBwb3J0ZWQtY29sb3Itc2NoZW1lcy1jc3MtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAg
ICAgICAgKiBjc3MtZGFyay1tb2RlL3N1cHBvcnRlZC1jb2xvci1zY2hlbWVzLWNzcy5odG1sOiBB
ZGRlZC4KKwogMjAxOC0xMS0wNyAgUnlhbiBIYWRkYWQgIDxyeWFuaGFkZGFkQGFwcGxlLmNvbT4K
IAogICAgICAgICBVbnJldmlld2VkLCB1cGRhdGUgdGVzdCBleHBlY3RhdGlvbnMgZm9yIGZhc3Qv
ZXZlbnRzL3BvaW50ZXIuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9jc3MtZGFyay1tb2RlL3Bh
cnNlLXN1cHBvcnRlZC1jb2xvci1zY2hlbWVzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Nz
cy1kYXJrLW1vZGUvcGFyc2Utc3VwcG9ydGVkLWNvbG9yLXNjaGVtZXMtZXhwZWN0ZWQudHh0Cm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjJhMjg3ZjVjM2EwYTA0ZTgzYWJiYjFhOWI0NDFjMWE3OGRlYzM3NDUKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9jc3MtZGFyay1tb2RlL3BhcnNlLXN1cHBvcnRlZC1j
b2xvci1zY2hlbWVzLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDQgQEAKKworUEFTUyBUZXN0IHZh
bGlkIHZhbHVlcyAKK1BBU1MgVGVzdCBpbnZhbGlkIHZhbHVlcyAKKwpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvY3NzLWRhcmstbW9kZS9wYXJzZS1zdXBwb3J0ZWQtY29sb3Itc2NoZW1lcy5odG1s
IGIvTGF5b3V0VGVzdHMvY3NzLWRhcmstbW9kZS9wYXJzZS1zdXBwb3J0ZWQtY29sb3Itc2NoZW1l
cy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjFiYzEwYTgyNWQ3M2ZiMzc1YWE1OGU5NTgzY2ZkODI0MTY5YjAy
OWYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9jc3MtZGFyay1tb2RlL3BhcnNlLXN1
cHBvcnRlZC1jb2xvci1zY2hlbWVzLmh0bWwKQEAgLTAsMCArMSwxMjggQEAKKzwhRE9DVFlQRSBo
dG1sPgorCis8IS0tIHdlYmtpdC10ZXN0LXJ1bm5lciBbIGV4cGVyaW1lbnRhbDpEYXJrTW9kZUNT
U0VuYWJsZWQ9dHJ1ZSBdIC0tPgorCis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL3Rlc3RoYXJu
ZXNzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3Ny
ZXBvcnQuanMiPjwvc2NyaXB0PgorCis8c3R5bGU+CisjdGVzdEF1dG8geworICAgIHN1cHBvcnRl
ZC1jb2xvci1zY2hlbWVzOiBhdXRvOworfQorCisjdGVzdE9ubHkgeworICAgIHN1cHBvcnRlZC1j
b2xvci1zY2hlbWVzOiBvbmx5OworfQorCisjdGVzdExpZ2h0IHsKKyAgICBzdXBwb3J0ZWQtY29s
b3Itc2NoZW1lczogbGlnaHQ7Cit9CisKKyN0ZXN0RGFyayB7CisgICAgc3VwcG9ydGVkLWNvbG9y
LXNjaGVtZXM6IGRhcms7Cit9CisKKyN0ZXN0TGlnaHREYXJrIHsKKyAgICBzdXBwb3J0ZWQtY29s
b3Itc2NoZW1lczogbGlnaHQgZGFyazsKK30KKworI3Rlc3REYXJrTGlnaHQgeworICAgIHN1cHBv
cnRlZC1jb2xvci1zY2hlbWVzOiBkYXJrIGxpZ2h0OworfQorCisjdGVzdExpZ2h0RGFya09ubHkg
eworICAgIHN1cHBvcnRlZC1jb2xvci1zY2hlbWVzOiBsaWdodCBkYXJrIG9ubHk7Cit9CisKKyN0
ZXN0T25seURhcmsgeworICAgIHN1cHBvcnRlZC1jb2xvci1zY2hlbWVzOiBvbmx5IGRhcms7Cit9
CisKKyN0ZXN0TGlnaHRPbmx5RGFyayB7CisgICAgc3VwcG9ydGVkLWNvbG9yLXNjaGVtZXM6IGxp
Z2h0IG9ubHkgZGFyazsKK30KKworI3Rlc3RMaWdodFVua25vd24geworICAgIHN1cHBvcnRlZC1j
b2xvci1zY2hlbWVzOiBsaWdodCBmb287Cit9CisKKyN0ZXN0VW5rbm93bkRhcmtPbmx5IHsKKyAg
ICBzdXBwb3J0ZWQtY29sb3Itc2NoZW1lczogYmFyIGRhcmsgb25seTsKK30KKworI3Rlc3RMaWdo
dFVua25vd25Pbmx5IHsKKyAgICBzdXBwb3J0ZWQtY29sb3Itc2NoZW1lczogbGlnaHQgYmF6IG9u
bHk7Cit9CisKKyN0ZXN0SW52YWxpZExpZ2h0QXV0byB7CisgICAgc3VwcG9ydGVkLWNvbG9yLXNj
aGVtZXM6IGxpZ2h0IGF1dG87Cit9CisKKyN0ZXN0SW52YWxpZEF1dG9EYXJrIHsKKyAgICBzdXBw
b3J0ZWQtY29sb3Itc2NoZW1lczogYXV0byBkYXJrOworfQorCisjdGVzdEludmFsaWRMaWdodERh
cmtMaWdodCB7CisgICAgc3VwcG9ydGVkLWNvbG9yLXNjaGVtZXM6IGxpZ2h0IGRhcmsgbGlnaHQ7
Cit9CisKKyN0ZXN0SW52YWxpZE51bWJlciB7CisgICAgc3VwcG9ydGVkLWNvbG9yLXNjaGVtZXM6
IDQyOworfQorCisjdGVzdEludmFsaWRTdHJpbmcgeworICAgIHN1cHBvcnRlZC1jb2xvci1zY2hl
bWVzOiAiZm9vIjsKK30KKworI3Rlc3RJbnZhbGlkTGlnaHRTdHJpbmcgeworICAgIHN1cHBvcnRl
ZC1jb2xvci1zY2hlbWVzOiBsaWdodCAiZm9vIjsKK30KKzwvc3R5bGU+CisKKzxkaXYgaWQ9InRl
c3RBdXRvIj48L2Rpdj4KKzxkaXYgaWQ9InRlc3RPbmx5Ij48L2Rpdj4KKzxkaXYgaWQ9InRlc3RM
aWdodCI+PC9kaXY+Cis8ZGl2IGlkPSJ0ZXN0RGFyayI+PC9kaXY+Cis8ZGl2IGlkPSJ0ZXN0TGln
aHREYXJrIj48L2Rpdj4KKzxkaXYgaWQ9InRlc3REYXJrTGlnaHQiPjwvZGl2PgorPGRpdiBpZD0i
dGVzdExpZ2h0RGFya09ubHkiPjwvZGl2PgorPGRpdiBpZD0idGVzdE9ubHlEYXJrIj48L2Rpdj4K
KzxkaXYgaWQ9InRlc3RMaWdodE9ubHlEYXJrIj48L2Rpdj4KKzxkaXYgaWQ9InRlc3RMaWdodFVu
a25vd24iPjwvZGl2PgorPGRpdiBpZD0idGVzdFVua25vd25EYXJrT25seSI+PC9kaXY+CisKKzxk
aXYgaWQ9InRlc3RJbnZhbGlkTGlnaHRBdXRvIj48L2Rpdj4KKzxkaXYgaWQ9InRlc3RJbnZhbGlk
QXV0b0RhcmsiPjwvZGl2PgorPGRpdiBpZD0idGVzdEludmFsaWRMaWdodERhcmtMaWdodCI+PC9k
aXY+Cis8ZGl2IGlkPSJ0ZXN0SW52YWxpZE51bWJlciI+PC9kaXY+Cis8ZGl2IGlkPSJ0ZXN0SW52
YWxpZFN0cmluZyI+PC9kaXY+Cis8ZGl2IGlkPSJ0ZXN0SW52YWxpZExpZ2h0U3RyaW5nIj48L2Rp
dj4KKworPHNjcmlwdD4KK2Z1bmN0aW9uIHRlc3RfcHJvcChpZCwgcHJvcGVydHksIGV4cGVjdGVk
KSB7CisgICAgYXNzZXJ0X2VxdWFscyh3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZChpZCkpLmdldFByb3BlcnR5VmFsdWUocHJvcGVydHkpLCBleHBlY3RlZCk7
Cit9CisKK3Rlc3QoZnVuY3Rpb24oKSB7CisgICAgdGVzdF9wcm9wKCJ0ZXN0QXV0byIsICJzdXBw
b3J0ZWQtY29sb3Itc2NoZW1lcyIsICJhdXRvIik7CisgICAgdGVzdF9wcm9wKCJ0ZXN0T25seSIs
ICJzdXBwb3J0ZWQtY29sb3Itc2NoZW1lcyIsICJsaWdodCBvbmx5Iik7CisgICAgdGVzdF9wcm9w
KCJ0ZXN0TGlnaHQiLCAic3VwcG9ydGVkLWNvbG9yLXNjaGVtZXMiLCAibGlnaHQiKTsKKyAgICB0
ZXN0X3Byb3AoInRlc3REYXJrIiwgInN1cHBvcnRlZC1jb2xvci1zY2hlbWVzIiwgImRhcmsiKTsK
KyAgICB0ZXN0X3Byb3AoInRlc3RMaWdodERhcmsiLCAic3VwcG9ydGVkLWNvbG9yLXNjaGVtZXMi
LCAibGlnaHQgZGFyayIpOworICAgIHRlc3RfcHJvcCgidGVzdERhcmtMaWdodCIsICJzdXBwb3J0
ZWQtY29sb3Itc2NoZW1lcyIsICJsaWdodCBkYXJrIik7CisgICAgdGVzdF9wcm9wKCJ0ZXN0TGln
aHREYXJrT25seSIsICJzdXBwb3J0ZWQtY29sb3Itc2NoZW1lcyIsICJsaWdodCBkYXJrIG9ubHki
KTsKKyAgICB0ZXN0X3Byb3AoInRlc3RPbmx5RGFyayIsICJzdXBwb3J0ZWQtY29sb3Itc2NoZW1l
cyIsICJkYXJrIG9ubHkiKTsKKyAgICB0ZXN0X3Byb3AoInRlc3RMaWdodE9ubHlEYXJrIiwgInN1
cHBvcnRlZC1jb2xvci1zY2hlbWVzIiwgImxpZ2h0IGRhcmsgb25seSIpOworICAgIHRlc3RfcHJv
cCgidGVzdExpZ2h0VW5rbm93biIsICJzdXBwb3J0ZWQtY29sb3Itc2NoZW1lcyIsICJsaWdodCIp
OworICAgIHRlc3RfcHJvcCgidGVzdFVua25vd25EYXJrT25seSIsICJzdXBwb3J0ZWQtY29sb3It
c2NoZW1lcyIsICJkYXJrIG9ubHkiKTsKK30sICJUZXN0IHZhbGlkIHZhbHVlcyIpOworCit0ZXN0
KGZ1bmN0aW9uKCkgeworICAgIHRlc3RfcHJvcCgidGVzdEludmFsaWRMaWdodEF1dG8iLCAic3Vw
cG9ydGVkLWNvbG9yLXNjaGVtZXMiLCAiYXV0byIpOworICAgIHRlc3RfcHJvcCgidGVzdEludmFs
aWRBdXRvRGFyayIsICJzdXBwb3J0ZWQtY29sb3Itc2NoZW1lcyIsICJhdXRvIik7CisgICAgdGVz
dF9wcm9wKCJ0ZXN0SW52YWxpZExpZ2h0RGFya0xpZ2h0IiwgInN1cHBvcnRlZC1jb2xvci1zY2hl
bWVzIiwgImF1dG8iKTsKKyAgICB0ZXN0X3Byb3AoInRlc3RJbnZhbGlkTnVtYmVyIiwgInN1cHBv
cnRlZC1jb2xvci1zY2hlbWVzIiwgImF1dG8iKTsKKyAgICB0ZXN0X3Byb3AoInRlc3RJbnZhbGlk
U3RyaW5nIiwgInN1cHBvcnRlZC1jb2xvci1zY2hlbWVzIiwgImF1dG8iKTsKKyAgICB0ZXN0X3By
b3AoInRlc3RJbnZhbGlkTGlnaHRTdHJpbmciLCAic3VwcG9ydGVkLWNvbG9yLXNjaGVtZXMiLCAi
YXV0byIpOworfSwgIlRlc3QgaW52YWxpZCB2YWx1ZXMiKTsKKzwvc2NyaXB0PgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvY3NzLWRhcmstbW9kZS9zdXBwb3J0ZWQtY29sb3Itc2NoZW1lcy1jc3Mt
ZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvY3NzLWRhcmstbW9kZS9zdXBwb3J0ZWQtY29sb3It
c2NoZW1lcy1jc3MtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmNkZGQ1NmY2MzM5YzMzZTYyZWFm
ZjRmNGM2Mjg1MTc1ZWViNDVmNDgKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9jc3Mt
ZGFyay1tb2RlL3N1cHBvcnRlZC1jb2xvci1zY2hlbWVzLWNzcy1leHBlY3RlZC50eHQKQEAgLTAs
MCArMSwyOCBAQAorCitQQVNTIEVsZW1lbnQgY29sb3JzIGFyZSBjb3JyZWN0IGluIGxpZ2h0IGNv
bG9yIHNjaGVtZSB3aXRoIG9ubHkgbGlnaHQgc3VwcG9ydGVkIGNvbG9yIHNjaGVtZSAKK1BBU1Mg
RGFyayBjb2xvciBzY2hlbWUgZW5hYmxlZCAKK1BBU1MgRWxlbWVudCBjb2xvcnMgYXJlIGNvcnJl
Y3QgaW4gZGFyayBjb2xvciBzY2hlbWUgd2l0aCBvbmx5IGxpZ2h0IHN1cHBvcnRlZCBjb2xvciBz
Y2hlbWUgCitQQVNTIExpZ2h0IGNvbG9yIHNjaGVtZSBlbmFibGVkIAorUEFTUyBTdXBwb3J0ZWQg
Y29sb3Igc2NoZW1lcyBjaGFuZ2VkIHRvIGxpZ2h0IGFuZCBkYXJrIAorUEFTUyBFbGVtZW50IGNv
bG9ycyBhcmUgY29ycmVjdCBpbiBsaWdodCBjb2xvciBzY2hlbWUgd2l0aCBsaWdodCBhbmQgZGFy
ayBzdXBwb3J0ZWQgY29sb3Igc2NoZW1lIAorUEFTUyBEYXJrIGNvbG9yIHNjaGVtZSBlbmFibGVk
IAorUEFTUyBFbGVtZW50IGNvbG9ycyBhcmUgY29ycmVjdCBpbiBkYXJrIGNvbG9yIHNjaGVtZSB3
aXRoIGxpZ2h0IGFuZCBkYXJrIHN1cHBvcnRlZCBjb2xvciBzY2hlbWUgCitQQVNTIExpZ2h0IGNv
bG9yIHNjaGVtZSBlbmFibGVkIAorUEFTUyBTdXBwb3J0ZWQgY29sb3Igc2NoZW1lcyBjaGFuZ2Vk
IHRvIGRhcmsgCitQQVNTIEVsZW1lbnQgY29sb3JzIGFyZSBjb3JyZWN0IGluIGxpZ2h0IGNvbG9y
IHNjaGVtZSB3aXRoIG9ubHkgZGFyayBzdXBwb3J0ZWQgY29sb3Igc2NoZW1lIAorUEFTUyBEYXJr
IGNvbG9yIHNjaGVtZSBlbmFibGVkIAorUEFTUyBFbGVtZW50IGNvbG9ycyBhcmUgY29ycmVjdCBp
biBkYXJrIGNvbG9yIHNjaGVtZSB3aXRoIG9ubHkgZGFyayBzdXBwb3J0ZWQgY29sb3Igc2NoZW1l
IAorUEFTUyBTdXBwb3J0ZWQgY29sb3Igc2NoZW1lcyBjaGFuZ2VkIHRvIGxpZ2h0IGFuZCBhIGJv
Z3VzIHZhbHVlIAorUEFTUyBFbGVtZW50IGNvbG9ycyBhcmUgY29ycmVjdCBpbiBkYXJrIGNvbG9y
IHNjaGVtZSB3aXRoIG9ubHkgbGlnaHQgc3VwcG9ydGVkIGNvbG9yIHNjaGVtZSAKK1BBU1MgU3Vw
cG9ydGVkIGNvbG9yIHNjaGVtZXMgY2hhbmdlZCB0byBhdXRvIHZhbHVlIAorUEFTUyBFbGVtZW50
IGNvbG9ycyBhcmUgY29ycmVjdCBpbiBkYXJrIGNvbG9yIHNjaGVtZSB3aXRoIGltcGxpY2l0IGxp
Z2h0IHN1cHBvcnRlZCBjb2xvciBzY2hlbWUgCitQQVNTIFN1cHBvcnRlZCBjb2xvciBzY2hlbWVz
IGNoYW5nZWQgdG8gbGlnaHQgYW5kIGRhcmsgdmlhIDxtZXRhPiBlbGVtZW50IAorUEFTUyBFbGVt
ZW50IGNvbG9ycyBhcmUgY29ycmVjdCBpbiBkYXJrIGNvbG9yIHNjaGVtZSB3aXRoIGxpZ2h0IGFu
ZCBkYXJrIHN1cHBvcnRlZCBjb2xvciBzY2hlbWUgdmlhIDxtZXRhPiBlbGVtZW50IAorUEFTUyBT
dXBwb3J0ZWQgY29sb3Igc2NoZW1lcyBjaGFuZ2VkIHRvIGxpZ2h0IHZhbHVlIAorUEFTUyBFbGVt
ZW50IGNvbG9ycyBhcmUgY29ycmVjdCBpbiBkYXJrIGNvbG9yIHNjaGVtZSB3aXRoIGV4cGxpY2l0
IGxpZ2h0LCBvdmVycmlkaW5nIDxtZXRhPiBlbGVtZW50IAorUEFTUyBSZW1vdmUgdGVzdCBtZXRh
IGVsZW1lbnQgCitQQVNTIFN1cHBvcnRlZCBjb2xvciBzY2hlbWVzIGNoYW5nZWQgdG8gbGlnaHQg
YW5kIGRhcmsgCitQQVNTIEVsZW1lbnQgY29sb3JzIGFyZSBjb3JyZWN0IGluIGRhcmsgY29sb3Ig
c2NoZW1lIHdpdGggbGlnaHQgYW5kIGRhcmsgc3VwcG9ydGVkIGNvbG9yIHNjaGVtZSAKK1BBU1Mg
U3VwcG9ydGVkIGNvbG9yIHNjaGVtZXMgY2hhbmdlZCB0byBhIGJvZ3VzIHZhbHVlIGFuZCBkYXJr
IAorUEFTUyBFbGVtZW50IGNvbG9ycyBhcmUgY29ycmVjdCBpbiBkYXJrIGNvbG9yIHNjaGVtZSB3
aXRoIGRhcmsgc3VwcG9ydGVkIGNvbG9yIHNjaGVtZSAKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvY3NzLWRhcmstbW9kZS9zdXBwb3J0ZWQtY29sb3Itc2NoZW1lcy1jc3MuaHRtbCBiL0xheW91
dFRlc3RzL2Nzcy1kYXJrLW1vZGUvc3VwcG9ydGVkLWNvbG9yLXNjaGVtZXMtY3NzLmh0bWwKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uYjZjYTY4MDFhZjRlN2EyNGQ4NDcwYjJkOTdkNzBlMThmNzZiOWNmZQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2Nzcy1kYXJrLW1vZGUvc3VwcG9ydGVkLWNvbG9yLXNj
aGVtZXMtY3NzLmh0bWwKQEAgLTAsMCArMSwxNTMgQEAKKzwhRE9DVFlQRSBodG1sPgorCis8IS0t
IHdlYmtpdC10ZXN0LXJ1bm5lciBbIGV4cGVyaW1lbnRhbDpEYXJrTW9kZUNTU0VuYWJsZWQ9dHJ1
ZSBdIC0tPgorCis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3Nj
cmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwv
c2NyaXB0PgorCis8c3R5bGU+CisjdGVzdDEgeworICAgIGNvbG9yOiB0ZXh0OworfQorPC9zdHls
ZT4KKworPGRpdiBpZD0idGVzdDEiPjwvZGl2PgorCis8c2NyaXB0PgorZnVuY3Rpb24gdGVzdF9w
cm9wKGlkLCBwcm9wLCBleHBlY3RlZCkgeworICAgIGFzc2VydF9lcXVhbHMod2luZG93LmdldENv
bXB1dGVkU3R5bGUoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoaWQpKS5nZXRQcm9wZXJ0eVZhbHVl
KHByb3ApLCBleHBlY3RlZCk7Cit9CisKK2Z1bmN0aW9uIHRlc3RfY29sb3JfaXNfd2hpdGUoaWQp
IHsKKyAgICB0ZXN0X3Byb3AoInRlc3QxIiwgImNvbG9yIiwgInJnYigyNTUsIDI1NSwgMjU1KSIp
OworfQorCitmdW5jdGlvbiB0ZXN0X2NvbG9yX2lzX2JsYWNrKGlkKSB7CisgICAgdGVzdF9wcm9w
KCJ0ZXN0MSIsICJjb2xvciIsICJyZ2IoMCwgMCwgMCkiKTsKK30KKwordGVzdChmdW5jdGlvbigp
IHsKKyAgICAvLyBUaGUgc2VtYW50aWMgdGV4dCBjb2xvciBzaG91bGQgYmUgYmxhY2suCisgICAg
dGVzdF9jb2xvcl9pc19ibGFjaygidGVzdDEiKTsKK30sICJFbGVtZW50IGNvbG9ycyBhcmUgY29y
cmVjdCBpbiBsaWdodCBjb2xvciBzY2hlbWUgd2l0aCBvbmx5IGxpZ2h0IHN1cHBvcnRlZCBjb2xv
ciBzY2hlbWUiKTsKKwordGVzdChmdW5jdGlvbigpIHsKKyAgICBpZiAod2luZG93LmludGVybmFs
cykKKyAgICAgICAgaW50ZXJuYWxzLnNldHRpbmdzLnNldFVzZURhcmtBcHBlYXJhbmNlKHRydWUp
OworfSwgIkRhcmsgY29sb3Igc2NoZW1lIGVuYWJsZWQiKTsKKwordGVzdChmdW5jdGlvbigpIHsK
KyAgICAvLyBUaGUgc2VtYW50aWMgdGV4dCBjb2xvciBzaG91bGQgYmUgYmxhY2ssIGFuZCBub3Qg
Y2hhbmdlLgorICAgIHRlc3RfY29sb3JfaXNfYmxhY2soInRlc3QxIik7Cit9LCAiRWxlbWVudCBj
b2xvcnMgYXJlIGNvcnJlY3QgaW4gZGFyayBjb2xvciBzY2hlbWUgd2l0aCBvbmx5IGxpZ2h0IHN1
cHBvcnRlZCBjb2xvciBzY2hlbWUiKTsKKwordGVzdChmdW5jdGlvbigpIHsKKyAgICBpZiAod2lu
ZG93LmludGVybmFscykKKyAgICAgICAgaW50ZXJuYWxzLnNldHRpbmdzLnNldFVzZURhcmtBcHBl
YXJhbmNlKGZhbHNlKTsKK30sICJMaWdodCBjb2xvciBzY2hlbWUgZW5hYmxlZCIpOworCit0ZXN0
KGZ1bmN0aW9uKCkgeworICAgIGRvY3VtZW50LmJvZHkuc3R5bGUuc2V0UHJvcGVydHkoInN1cHBv
cnRlZC1jb2xvci1zY2hlbWVzIiwgImxpZ2h0IGRhcmsiKTsKK30sICJTdXBwb3J0ZWQgY29sb3Ig
c2NoZW1lcyBjaGFuZ2VkIHRvIGxpZ2h0IGFuZCBkYXJrIik7CisKK3Rlc3QoZnVuY3Rpb24oKSB7
CisgICAgLy8gVGhlIHNlbWFudGljIHRleHQgY29sb3Igc2hvdWxkIGJlIGJsYWNrLgorICAgIHRl
c3RfY29sb3JfaXNfYmxhY2soInRlc3QxIik7Cit9LCAiRWxlbWVudCBjb2xvcnMgYXJlIGNvcnJl
Y3QgaW4gbGlnaHQgY29sb3Igc2NoZW1lIHdpdGggbGlnaHQgYW5kIGRhcmsgc3VwcG9ydGVkIGNv
bG9yIHNjaGVtZSIpOworCit0ZXN0KGZ1bmN0aW9uKCkgeworICAgIGlmICh3aW5kb3cuaW50ZXJu
YWxzKQorICAgICAgICBpbnRlcm5hbHMuc2V0dGluZ3Muc2V0VXNlRGFya0FwcGVhcmFuY2UodHJ1
ZSk7Cit9LCAiRGFyayBjb2xvciBzY2hlbWUgZW5hYmxlZCIpOworCit0ZXN0KGZ1bmN0aW9uKCkg
eworICAgIC8vIFRoZSBzZW1hbnRpYyB0ZXh0IGNvbG9yIHNob3VsZCBiZSB3aGl0ZS4KKyAgICB0
ZXN0X2NvbG9yX2lzX3doaXRlKCJ0ZXN0MSIpOworfSwgIkVsZW1lbnQgY29sb3JzIGFyZSBjb3Jy
ZWN0IGluIGRhcmsgY29sb3Igc2NoZW1lIHdpdGggbGlnaHQgYW5kIGRhcmsgc3VwcG9ydGVkIGNv
bG9yIHNjaGVtZSIpOworCit0ZXN0KGZ1bmN0aW9uKCkgeworICAgIGlmICh3aW5kb3cuaW50ZXJu
YWxzKQorICAgICAgICBpbnRlcm5hbHMuc2V0dGluZ3Muc2V0VXNlRGFya0FwcGVhcmFuY2UoZmFs
c2UpOworfSwgIkxpZ2h0IGNvbG9yIHNjaGVtZSBlbmFibGVkIik7CisKK3Rlc3QoZnVuY3Rpb24o
KSB7CisgICAgZG9jdW1lbnQuYm9keS5zdHlsZS5zZXRQcm9wZXJ0eSgic3VwcG9ydGVkLWNvbG9y
LXNjaGVtZXMiLCAiZGFyayIpOworfSwgIlN1cHBvcnRlZCBjb2xvciBzY2hlbWVzIGNoYW5nZWQg
dG8gZGFyayIpOworCit0ZXN0KGZ1bmN0aW9uKCkgeworICAgIC8vIFRoZSBzZW1hbnRpYyB0ZXh0
IGNvbG9yIHNob3VsZCBiZSB3aGl0ZS4KKyAgICB0ZXN0X2NvbG9yX2lzX3doaXRlKCJ0ZXN0MSIp
OworfSwgIkVsZW1lbnQgY29sb3JzIGFyZSBjb3JyZWN0IGluIGxpZ2h0IGNvbG9yIHNjaGVtZSB3
aXRoIG9ubHkgZGFyayBzdXBwb3J0ZWQgY29sb3Igc2NoZW1lIik7CisKK3Rlc3QoZnVuY3Rpb24o
KSB7CisgICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMpCisgICAgICAgIGludGVybmFscy5zZXR0aW5n
cy5zZXRVc2VEYXJrQXBwZWFyYW5jZSh0cnVlKTsKK30sICJEYXJrIGNvbG9yIHNjaGVtZSBlbmFi
bGVkIik7CisKK3Rlc3QoZnVuY3Rpb24oKSB7CisgICAgLy8gVGhlIHNlbWFudGljIHRleHQgY29s
b3Igc2hvdWxkIGJlIHdoaXRlIHN0aWxsLgorICAgIHRlc3RfY29sb3JfaXNfd2hpdGUoInRlc3Qx
Iik7Cit9LCAiRWxlbWVudCBjb2xvcnMgYXJlIGNvcnJlY3QgaW4gZGFyayBjb2xvciBzY2hlbWUg
d2l0aCBvbmx5IGRhcmsgc3VwcG9ydGVkIGNvbG9yIHNjaGVtZSIpOworCit0ZXN0KGZ1bmN0aW9u
KCkgeworICAgIGRvY3VtZW50LmJvZHkuc3R5bGUuc2V0UHJvcGVydHkoInN1cHBvcnRlZC1jb2xv
ci1zY2hlbWVzIiwgImxpZ2h0IGZvbyIpOworfSwgIlN1cHBvcnRlZCBjb2xvciBzY2hlbWVzIGNo
YW5nZWQgdG8gbGlnaHQgYW5kIGEgYm9ndXMgdmFsdWUiKTsKKwordGVzdChmdW5jdGlvbigpIHsK
KyAgICAvLyBUaGUgc2VtYW50aWMgdGV4dCBjb2xvciBzaG91bGQgYmUgYmxhY2sgYWdhaW4uCisg
ICAgdGVzdF9jb2xvcl9pc19ibGFjaygidGVzdDEiKTsKK30sICJFbGVtZW50IGNvbG9ycyBhcmUg
Y29ycmVjdCBpbiBkYXJrIGNvbG9yIHNjaGVtZSB3aXRoIG9ubHkgbGlnaHQgc3VwcG9ydGVkIGNv
bG9yIHNjaGVtZSIpOworCit0ZXN0KGZ1bmN0aW9uKCkgeworICAgIGRvY3VtZW50LmJvZHkuc3R5
bGUuc2V0UHJvcGVydHkoInN1cHBvcnRlZC1jb2xvci1zY2hlbWVzIiwgImF1dG8iKTsKK30sICJT
dXBwb3J0ZWQgY29sb3Igc2NoZW1lcyBjaGFuZ2VkIHRvIGF1dG8gdmFsdWUiKTsKKwordGVzdChm
dW5jdGlvbigpIHsKKyAgICAvLyBUaGUgc2VtYW50aWMgdGV4dCBjb2xvciBzaG91bGQgYmUgYmxh
Y2sgc3RpbGwuCisgICAgdGVzdF9jb2xvcl9pc19ibGFjaygidGVzdDEiKTsKK30sICJFbGVtZW50
IGNvbG9ycyBhcmUgY29ycmVjdCBpbiBkYXJrIGNvbG9yIHNjaGVtZSB3aXRoIGltcGxpY2l0IGxp
Z2h0IHN1cHBvcnRlZCBjb2xvciBzY2hlbWUiKTsKKwordGVzdChmdW5jdGlvbigpIHsKKyAgICBs
ZXQgbWV0YSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoIm1ldGEiKTsKKyAgICBtZXRhLmlkID0g
InRlc3QtbWV0YSI7CisgICAgbWV0YS5uYW1lID0gInN1cHBvcnRlZC1jb2xvci1zY2hlbWVzIjsK
KyAgICBtZXRhLmNvbnRlbnQgPSAibGlnaHQgZGFyayI7CisgICAgZG9jdW1lbnQuaGVhZC5hcHBl
bmRDaGlsZChtZXRhKTsKK30sICJTdXBwb3J0ZWQgY29sb3Igc2NoZW1lcyBjaGFuZ2VkIHRvIGxp
Z2h0IGFuZCBkYXJrIHZpYSA8bWV0YT4gZWxlbWVudCIpOworCit0ZXN0KGZ1bmN0aW9uKCkgewor
ICAgIC8vIFRoZSBzZW1hbnRpYyB0ZXh0IGNvbG9yIHNob3VsZCBiZSB3aGl0ZSBub3cuCisgICAg
dGVzdF9jb2xvcl9pc193aGl0ZSgidGVzdDEiKTsKK30sICJFbGVtZW50IGNvbG9ycyBhcmUgY29y
cmVjdCBpbiBkYXJrIGNvbG9yIHNjaGVtZSB3aXRoIGxpZ2h0IGFuZCBkYXJrIHN1cHBvcnRlZCBj
b2xvciBzY2hlbWUgdmlhIDxtZXRhPiBlbGVtZW50Iik7CisKK3Rlc3QoZnVuY3Rpb24oKSB7Cisg
ICAgZG9jdW1lbnQuYm9keS5zdHlsZS5zZXRQcm9wZXJ0eSgic3VwcG9ydGVkLWNvbG9yLXNjaGVt
ZXMiLCAibGlnaHQiKTsKK30sICJTdXBwb3J0ZWQgY29sb3Igc2NoZW1lcyBjaGFuZ2VkIHRvIGxp
Z2h0IHZhbHVlIik7CisKK3Rlc3QoZnVuY3Rpb24oKSB7CisgICAgLy8gVGhlIHNlbWFudGljIHRl
eHQgY29sb3Igc2hvdWxkIGJlIGJsYWNrIGFnYWluLgorICAgIHRlc3RfY29sb3JfaXNfYmxhY2so
InRlc3QxIik7Cit9LCAiRWxlbWVudCBjb2xvcnMgYXJlIGNvcnJlY3QgaW4gZGFyayBjb2xvciBz
Y2hlbWUgd2l0aCBleHBsaWNpdCBsaWdodCwgb3ZlcnJpZGluZyA8bWV0YT4gZWxlbWVudCIpOwor
Cit0ZXN0KGZ1bmN0aW9uKCkgeworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0ZXN0LW1l
dGEiKS5yZW1vdmUoKTsKK30sICJSZW1vdmUgdGVzdCBtZXRhIGVsZW1lbnQiKTsKKwordGVzdChm
dW5jdGlvbigpIHsKKyAgICBkb2N1bWVudC5ib2R5LnN0eWxlLnNldFByb3BlcnR5KCJzdXBwb3J0
ZWQtY29sb3Itc2NoZW1lcyIsICJsaWdodCBkYXJrIik7Cit9LCAiU3VwcG9ydGVkIGNvbG9yIHNj
aGVtZXMgY2hhbmdlZCB0byBsaWdodCBhbmQgZGFyayIpOworCit0ZXN0KGZ1bmN0aW9uKCkgewor
ICAgIC8vIFRoZSBzZW1hbnRpYyB0ZXh0IGNvbG9yIHNob3VsZCBiZSB3aGl0ZSBub3cuCisgICAg
dGVzdF9jb2xvcl9pc193aGl0ZSgidGVzdDEiKTsKK30sICJFbGVtZW50IGNvbG9ycyBhcmUgY29y
cmVjdCBpbiBkYXJrIGNvbG9yIHNjaGVtZSB3aXRoIGxpZ2h0IGFuZCBkYXJrIHN1cHBvcnRlZCBj
b2xvciBzY2hlbWUiKTsKKwordGVzdChmdW5jdGlvbigpIHsKKyAgICBkb2N1bWVudC5ib2R5LnN0
eWxlLnNldFByb3BlcnR5KCJzdXBwb3J0ZWQtY29sb3Itc2NoZW1lcyIsICJmb28gZGFyayIpOwor
fSwgIlN1cHBvcnRlZCBjb2xvciBzY2hlbWVzIGNoYW5nZWQgdG8gYSBib2d1cyB2YWx1ZSBhbmQg
ZGFyayIpOworCit0ZXN0KGZ1bmN0aW9uKCkgeworICAgIC8vIFRoZSBzZW1hbnRpYyB0ZXh0IGNv
bG9yIHNob3VsZCBiZSB3aGl0ZSBzdGlsbC4KKyAgICB0ZXN0X2NvbG9yX2lzX3doaXRlKCJ0ZXN0
MSIpOworfSwgIkVsZW1lbnQgY29sb3JzIGFyZSBjb3JyZWN0IGluIGRhcmsgY29sb3Igc2NoZW1l
IHdpdGggZGFyayBzdXBwb3J0ZWQgY29sb3Igc2NoZW1lIik7Cis8L3NjcmlwdD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>354212</attachid>
            <date>2018-11-08 01:02:28 -0800</date>
            <delta_ts>2018-11-08 01:07:11 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-191319-20181108010227.patch</filename>
            <type>text/plain</type>
            <size>76470</size>
            <attacher name="Timothy Hatcher">timothy</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM3OTI4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjY3OGM5ZWNkNGIzZGM2
ZDcxMGMyOTFlMDE1YTZjZmYzYzY0ZDZiZS4uNDk1ZGZiZTU5Zjc0YjU1MGQ0YjI5NjA1NmI0OWE3
Y2Q0OTVmZmQyMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEwNiBAQAorMjAxOC0xMS0wOCAgVGlt
b3RoeSBIYXRjaGVyICA8dGltb3RoeUBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIGV4cGVyaW1l
bnRhbCBzdXBwb3J0IGZvciBhIGBzdXBwb3J0ZWQtY29sb3Itc2NoZW1lc2AgQ1NTIHByb3BlcnR5
LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkxMzE5
CisgICAgICAgIHJkYXI6Ly9wcm9ibGVtLzQ1ODUyMjYxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGVzdHM6IGNzcy1kYXJrLW1vZGUvcGFyc2Utc3Vw
cG9ydGVkLWNvbG9yLXNjaGVtZXMuaHRtbAorICAgICAgICAgICAgICAgY3NzLWRhcmstbW9kZS9z
dXBwb3J0ZWQtY29sb3Itc2NoZW1lcy1jc3MuaHRtbAorCisgICAgICAgICogV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGNzcy9DU1NDb21wdXRlZFN0eWxlRGVj
bGFyYXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29tcHV0ZWRTdHlsZUV4dHJhY3Rvcjo6
dmFsdWVGb3JQcm9wZXJ0eWluU3R5bGUpOgorICAgICAgICAqIGNzcy9DU1NQcm9wZXJ0aWVzLmpz
b246CisgICAgICAgICogY3NzL0NTU1ZhbHVlS2V5d29yZHMuaW46CisgICAgICAgICogY3NzL1N0
eWxlQnVpbGRlckNvbnZlcnRlci5oOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVCdWlsZGVyQ29u
dmVydGVyOjp1cGRhdGVTdXBwb3J0ZWRDb2xvclNjaGVtZXMpOgorICAgICAgICAoV2ViQ29yZTo6
U3R5bGVCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0U3VwcG9ydGVkQ29sb3JTY2hlbWVzKToKKyAg
ICAgICAgKiBjc3MvU3R5bGVSZXNvbHZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJl
c29sdmVyOjpjb2xvckZyb21QcmltaXRpdmVWYWx1ZSBjb25zdCk6CisgICAgICAgICogY3NzL3Bh
cnNlci9DU1NQcm9wZXJ0eVBhcnNlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjb25zdW1lU3Vw
cG9ydGVkQ29sb3JTY2hlbWVzKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1Byb3BlcnR5UGFyc2Vy
OjpwYXJzZVNpbmdsZVZhbHVlKToKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnJlc2V0TGlua0NvbG9yKToKKyAgICAgICAgKFdlYkNvcmU6
OkRvY3VtZW50OjpyZXNldFZpc2l0ZWRMaW5rQ29sb3IpOgorICAgICAgICAoV2ViQ29yZTo6RG9j
dW1lbnQ6OnJlc2V0QWN0aXZlTGlua0NvbG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50
Ojpwcm9jZXNzU3VwcG9ydGVkQ29sb3JTY2hlbWVzKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3Vt
ZW50Ojp1c2VEYXJrQXBwZWFyYW5jZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVu
dDo6c3R5bGVDb2xvck9wdGlvbnMgY29uc3QpOgorICAgICAgICAqIGRvbS9Eb2N1bWVudC5oOgor
ICAgICAgICAqIGVkaXRpbmcvY29jb2EvV2ViQ29udGVudFJlYWRlckNvY29hLm1tOgorICAgICAg
ICAoV2ViQ29yZTo6Y3JlYXRlRnJhZ21lbnQpOgorICAgICAgICAqIGh0bWwvY2FudmFzL0NhbnZh
c1JlbmRlcmluZ0NvbnRleHQyRC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNSZW5kZXJp
bmdDb250ZXh0MkQ6OmRyYXdGb2N1c0lmTmVlZGVkSW50ZXJuYWwpOgorICAgICAgICAqIGluc3Bl
Y3Rvci9JbnNwZWN0b3JPdmVybGF5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvck92
ZXJsYXk6OnBhaW50KToKKyAgICAgICAgKiBwYWdlL0ZyYW1lVmlldy5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpGcmFtZVZpZXc6OnVzZURhcmtBcHBlYXJhbmNlIGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6OkZyYW1lVmlldzo6cGFpbnRTY3JvbGxDb3JuZXIpOgorICAgICAgICAqIHBsYXRmb3Jt
L21hYy9EcmFnSW1hZ2VNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVEcmFnSW1hZ2VG
b3JMaW5rKToKKyAgICAgICAgKiByZW5kZXJpbmcvSW5saW5lRmxvd0JveC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpJbmxpbmVGbG93Qm94OjpwYWludEJveERlY29yYXRpb25zKToKKyAgICAgICAg
KiByZW5kZXJpbmcvSW5saW5lVGV4dEJveC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVU
ZXh0Qm94OjpwYWludFBsYXRmb3JtRG9jdW1lbnRNYXJrZXIpOgorICAgICAgICAqIHJlbmRlcmlu
Zy9SZW5kZXJCb3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94OjpwYWludFJvb3RC
b3hGaWxsTGF5ZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveDo6cGFpbnRCYWNrZ3Jv
dW5kKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJFbGVtZW50OjpzZWxlY3Rpb25Db2xvciBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJFbGVtZW50OjpzZWxlY3Rpb25CYWNrZ3JvdW5kQ29sb3IgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRWxlbWVudDo6cGFpbnRGb2N1c1JpbmcpOgorICAgICAg
ICAqIHJlbmRlcmluZy9SZW5kZXJJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJJ
bWFnZTo6cGFpbnRBcmVhRWxlbWVudEZvY3VzUmluZyk6CisgICAgICAgICogcmVuZGVyaW5nL1Jl
bmRlckxheWVyQmFja2luZy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllckJhY2tp
bmc6OnBhaW50Q29udGVudHMpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXllckNvbXBv
c2l0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpwYWlu
dENvbnRlbnRzKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGlzdEJveC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJMaXN0Qm94OjpwYWludEl0ZW1Gb3JlZ3JvdW5kKToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlckxpc3RCb3g6OnBhaW50SXRlbUJhY2tncm91bmQpOgorICAgICAg
ICAqIHJlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
T2JqZWN0Ojp1c2VEYXJrQXBwZWFyYW5jZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJPYmplY3Q6OnN0eWxlQ29sb3JPcHRpb25zIGNvbnN0KToKKyAgICAgICAgKiByZW5kZXJpbmcv
UmVuZGVyT2JqZWN0Lmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRhYmxlQ2VsbC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUYWJsZUNlbGw6OnBhaW50QmFja2dyb3VuZHNCZWhp
bmRDZWxsKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGhlbWUuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyVGhlbWU6OnBhaW50KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVy
VGhlbWUuaDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lOjp1c2luZ0RhcmtBcHBlYXJh
bmNlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGhlbWVNYWMu
aDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGhlbWVNYWMubW06CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJUaGVtZU1hYzo6ZG9jdW1lbnRWaWV3Rm9yIGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlclRoZW1lTWFjOjphZGp1c3RNZW51TGlzdFN0eWxlIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lTWFjOjpwYWludENlbGxBbmRTZXRGb2N1c2VkRWxlbWVu
dE5lZWRzUmVwYWludElmTmVjZXNzYXJ5KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1l
TWFjOjpwYWludFNsaWRlclRodW1iKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lTWFj
Ojp1c2luZ0RhcmtBcHBlYXJhbmNlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiByZW5kZXJp
bmcvc3R5bGUvUmVuZGVyU3R5bGUuaDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjpz
dXBwb3J0ZWRDb2xvclNjaGVtZXMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5
bGU6OnNldFN1cHBvcnRlZENvbG9yU2NoZW1lcyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJT
dHlsZTo6aW5pdGlhbFN1cHBvcnRlZENvbG9yU2NoZW1lcyk6CisgICAgICAgICogcmVuZGVyaW5n
L3N0eWxlL1JlbmRlclN0eWxlQ29uc3RhbnRzLmg6CisgICAgICAgICogcmVuZGVyaW5nL3N0eWxl
L1N0eWxlUmFyZUluaGVyaXRlZERhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVSYXJl
SW5oZXJpdGVkRGF0YTo6U3R5bGVSYXJlSW5oZXJpdGVkRGF0YSk6CisgICAgICAgIChXZWJDb3Jl
OjpTdHlsZVJhcmVJbmhlcml0ZWREYXRhOjpvcGVyYXRvcj09IGNvbnN0KToKKyAgICAgICAgKiBy
ZW5kZXJpbmcvc3R5bGUvU3R5bGVSYXJlSW5oZXJpdGVkRGF0YS5oOgorICAgICAgICAqIHJlbmRl
cmluZy9zdHlsZS9TdHlsZVN1cHBvcnRlZENvbG9yU2NoZW1lcy5oOiBBZGRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OlN0eWxlU3VwcG9ydGVkQ29sb3JTY2hlbWVzOjpTdHlsZVN1cHBvcnRlZENvbG9y
U2NoZW1lcyk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVN1cHBvcnRlZENvbG9yU2NoZW1lczo6
b3BlcmF0b3I9PSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVN1cHBvcnRlZENvbG9y
U2NoZW1lczo6b3BlcmF0b3IhPSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVN1cHBv
cnRlZENvbG9yU2NoZW1lczo6aXNBdXRvIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxl
U3VwcG9ydGVkQ29sb3JTY2hlbWVzOjppc09ubHkgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
U3R5bGVTdXBwb3J0ZWRDb2xvclNjaGVtZXM6OmNvbG9yU2NoZW1lcyBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpTdHlsZVN1cHBvcnRlZENvbG9yU2NoZW1lczo6YWRkKToKKyAgICAgICAgKFdl
YkNvcmU6OlN0eWxlU3VwcG9ydGVkQ29sb3JTY2hlbWVzOjpjb250YWlucyBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpTdHlsZVN1cHBvcnRlZENvbG9yU2NoZW1lczo6c2V0QWxsb3dzVHJhbnNm
b3JtYXRpb25zKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlU3VwcG9ydGVkQ29sb3JTY2hlbWVz
OjphbGxvd3NUcmFuc2Zvcm1hdGlvbnMgY29uc3QpOgorICAgICAgICAqIHN2Zy9ncmFwaGljcy9T
VkdJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdJbWFnZTo6ZHJhdyk6CisKIDIwMTgt
MTEtMDcgIFNpbW9uIEZyYXNlciAgPHNpbW9uLmZyYXNlckBhcHBsZS5jb20+CiAKICAgICAgICAg
VGlsZUNvbnRyb2xsZXI6OnRpbGVTaXplKCkgc2hvdWxkIG5vdCBoYXZlIHNpZGUgZWZmZWN0cwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5n
ZUxvZwppbmRleCA2ZmYyZmQxZTJmM2ZiYjNhN2NjMTdkNTEzYzNjZGQ4ZGI1NzlhOGQ2Li5lYzcw
ZTUxZWRjNTIxYWIyYzkxZmQ3ZTJkZTRlNDEyZGVjZmE0MWNmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsx
LDE2IEBACisyMDE4LTExLTA4ICBUaW1vdGh5IEhhdGNoZXIgIDx0aW1vdGh5QGFwcGxlLmNvbT4K
KworICAgICAgICBBZGQgZXhwZXJpbWVudGFsIHN1cHBvcnQgZm9yIGEgYHN1cHBvcnRlZC1jb2xv
ci1zY2hlbWVzYCBDU1MgcHJvcGVydHkuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xOTEzMTkKKyAgICAgICAgcmRhcjovL3Byb2JsZW0vNDU4NTIyNjEK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYlBy
b2Nlc3MvSW5qZWN0ZWRCdW5kbGUvRE9NL0luamVjdGVkQnVuZGxlUmFuZ2VIYW5kbGUuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpJbmplY3RlZEJ1bmRsZVJhbmdlSGFuZGxlOjpyZW5kZXJlZEltYWdl
KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OldlYlBhZ2U6OmRyYXdSZWN0KToKKwogMjAxOC0xMS0wNyAgWmFtaXVsIEhhcXVlICA8
emhhcXVlQGFwcGxlLmNvbT4KIAogICAgICAgICBGb3JjZSBhIGdyZWdvcmlhbiBjYWxlbmRhciB0
byBzaG93IGZvciBjcmVkaXQgY2FyZCBleHBpcmF0aW9uIGRhdGUgaW5wdXRzCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggMGYyNmU2
YTQzYTk0OTExN2RlMzc2MTE4ZjUzMjFkZjQwNWY3ZWM2ZS4uYzJkMzI3M2M0YWNmZGQ4ZTM4NTUz
NzQzMjI3OGU3ZTNiNTk0YjFjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtNjI1LDYgKzYyNSw3IEBACiAJCTFDMDEwNzAxMTky
NTk0REYwMDhBNDIwMSAvKiBJbmxpbmVUZXh0Qm94U3R5bGUuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFDMDEwNkZGMTkyNTk0REYwMDhBNDIwMSAvKiBJ
bmxpbmVUZXh0Qm94U3R5bGUuaCAqLzsgfTsKIAkJMUMwOTM5RUIxQTEzRTEyOTAwQjc4OEU1IC8q
IENhY2hlZFNWR0ZvbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDFDMDkzOUU5MUExM0UxMjkwMEI3ODhFNSAvKiBDYWNoZWRTVkdGb250LmggKi87IH07
CiAJCTFDMDlEMDU5MUUzMUM2QTkwMDcyNUYxOCAvKiBsaWJQQUwuYSBpbiBGcmFtZXdvcmtzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFDMDlEMDUwMUUzMUMzMjkwMDcyNUYx
OCAvKiBsaWJQQUwuYSAqLzsgfTsKKwkJMUMwQUExNkQyMTk0MERDODAwODk2ODI5IC8qIFN0eWxl
U3VwcG9ydGVkQ29sb3JTY2hlbWVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAxQzBBQTE2QTIxOTQwREM3MDA4OTY4MjkgLyogU3R5bGVTdXBwb3J0ZWRD
b2xvclNjaGVtZXMuaCAqLzsgfTsKIAkJMUMxMkFDMkIxRUU3NzhBRTAwNzlFMEEwIC8qIEZvbnRG
YW1pbHlTcGVjaWZpY2F0aW9uQ29yZVRleHQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDFDMTJBQzI5MUVFNzc4QUUwMDc5RTBBMCAvKiBGb250RmFtaWx5
U3BlY2lmaWNhdGlvbkNvcmVUZXh0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKIAkJMUMxOERBNTkxODFBRjZBNTAwQzRFRjIyIC8qIFRleHRQYWludGVy
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQzE4REE1
NzE4MUFGNkE1MDBDNEVGMjIgLyogVGV4dFBhaW50ZXIuaCAqLzsgfTsKIAkJMUMyMUU1N0QxODNF
RDFGRjAwMUMyODlEIC8qIElPU3VyZmFjZVBvb2wuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFDMjFFNTdCMTgzRUQxRkYwMDFDMjg5RCAvKiBJT1N1cmZh
Y2VQb29sLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
QEAgLTYzNjEsNiArNjM2Miw3IEBACiAJCTFDMDkzOUU4MUExM0UxMjkwMEI3ODhFNSAvKiBDYWNo
ZWRTVkdGb250LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENhY2hl
ZFNWR0ZvbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQzA5MzlFOTFBMTNF
MTI5MDBCNzg4RTUgLyogQ2FjaGVkU1ZHRm9udC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBDYWNoZWRTVkdGb250Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFD
MDlEMDRCMUUzMUMzMjgwMDcyNUYxOCAvKiBQQUwueGNvZGVwcm9qICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gIndyYXBwZXIucGItcHJvamVjdCI7IG5h
bWUgPSBQQUwueGNvZGVwcm9qOyBwYXRoID0gUEFML1BBTC54Y29kZXByb2o7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTFDMEFBMTZBMjE5NDBEQzcwMDg5NjgyOSAvKiBTdHlsZVN1cHBv
cnRlZENvbG9yU2NoZW1lcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTdHls
ZVN1cHBvcnRlZENvbG9yU2NoZW1lcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkx
QzEyQUMyODFFRTc3OEFFMDA3OUUwQTAgLyogRm9udEZhbWlseVNwZWNpZmljYXRpb25Db3JlVGV4
dC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBGb250RmFtaWx5U3BlY2lmaWNhdGlvbkNvcmVUZXh0
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUMxMkFDMjkxRUU3NzhBRTAwNzlF
MEEwIC8qIEZvbnRGYW1pbHlTcGVjaWZpY2F0aW9uQ29yZVRleHQuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
Rm9udEZhbWlseVNwZWNpZmljYXRpb25Db3JlVGV4dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQkxQzEyQUMyQzFFRTc3OTk1MDA3OUUwQTAgLyogRm9udERlc2NyaXB0aW9uQ29jb2Eu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRm9udERlc2NyaXB0aW9uQ29jb2EuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjQ2MTksNiArMjQ2MjEsNyBAQAogCQkJCUY0N0E1RTNB
MTk1QjhDOEEwMDQ4MzEwMCAvKiBTdHlsZVNjcm9sbFNuYXBQb2ludHMuY3BwICovLAogCQkJCUY0
N0E1RTNCMTk1QjhDOEEwMDQ4MzEwMCAvKiBTdHlsZVNjcm9sbFNuYXBQb2ludHMuaCAqLywKIAkJ
CQk5RDYzODAwRjFBRjE2RTE2MDAzMUExNUMgLyogU3R5bGVTZWxmQWxpZ25tZW50RGF0YS5oICov
LAorCQkJCTFDMEFBMTZBMjE5NDBEQzcwMDg5NjgyOSAvKiBTdHlsZVN1cHBvcnRlZENvbG9yU2No
ZW1lcy5oICovLAogCQkJCUJDNUVCNUU2MEU4MUJGRUYwMEIyNTk2NSAvKiBTdHlsZVN1cnJvdW5k
RGF0YS5jcHAgKi8sCiAJCQkJQkM1RUI1RTQwRTgxQkY2RDAwQjI1OTY1IC8qIFN0eWxlU3Vycm91
bmREYXRhLmggKi8sCiAJCQkJQkM1RUI4MEQwRTgxRjJDRTAwQjI1OTY1IC8qIFN0eWxlVHJhbnNm
b3JtRGF0YS5jcHAgKi8sCkBAIC0yODYzMSw3ICsyODYzNCw2IEBACiAJCQkJNTFFMzk5MDIxRDZF
NDc1MDAwOUM4ODMxIC8qIEdhbWVDb250cm9sbGVyR2FtZXBhZFByb3ZpZGVyLmggaW4gSGVhZGVy
cyAqLywKIAkJCQk1MTZDNjIyMTE5NTBENDg3MDAzMzdFNzUgLyogR2FtZXBhZEV2ZW50LmggaW4g
SGVhZGVycyAqLywKIAkJCQk1MUE5RDlFQTE5NUI5MzFGMDAxQjJCNUMgLyogR2FtZXBhZE1hbmFn
ZXIuaCBpbiBIZWFkZXJzICovLAotCQkJCTQxMkRFNEI4MjE5Mjg1QzAwMDc1RjNBNyAvKiBSVENS
dHBDYXBhYmlsaXRpZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxNUJFMTkyMUQ1NEY1RkIwMERE
N0M2OCAvKiBHYW1lcGFkUHJvdmlkZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxNUJFMTkzMUQ1
NEY1RkIwMEREN0M2OCAvKiBHYW1lcGFkUHJvdmlkZXJDbGllbnQuaCBpbiBIZWFkZXJzICovLAog
CQkJCThFQzZDOTYzMjAxQTI1MTYwMEZCRkE1MyAvKiBHYXBMZW5ndGguaCBpbiBIZWFkZXJzICov
LApAQCAtMzA2OTgsNiArMzA3MDAsNyBAQAogCQkJCTA3OEUwOTQyMTdEMTZFMUMwMDQyMEFBMSAv
KiBSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXJDbGllbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTA3
OEUwOTI0MTdEMTREMUMwMDQyMEFBMSAvKiBSVENQZWVyQ29ubmVjdGlvbkljZUV2ZW50LmggaW4g
SGVhZGVycyAqLywKIAkJCQk1RTJDNDM3QzFCQ0Y5QTg0MDAwMUUyQkMgLyogUlRDUGVlckNvbm5l
Y3Rpb25JbnRlcm5hbHNCdWlsdGlucy5oIGluIEhlYWRlcnMgKi8sCisJCQkJNDEyREU0QjgyMTky
ODVDMDAwNzVGM0E3IC8qIFJUQ1J0cENhcGFiaWxpdGllcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
NUUyQzQzNjMxQkNFRTMyQjAwMDFFMkJDIC8qIFJUQ1J0cFJlY2VpdmVyLmggaW4gSGVhZGVycyAq
LywKIAkJCQk1RTJDNDM2MTFCQ0VFMzIzMDAwMUUyQkMgLyogUlRDUnRwU2VuZGVyLmggaW4gSGVh
ZGVycyAqLywKIAkJCQk1RTVFMkIxNDFDRkMzRTc1MDAwQzBEODUgLyogUlRDUnRwVHJhbnNjZWl2
ZXIuaCBpbiBIZWFkZXJzICovLApAQCAtMzEwMDgsNiArMzEwMTEsNyBAQAogCQkJCUE4RUE4MDBD
MEExOTUxNkUwMEE4RUY1RiAvKiBTdHlsZVNoZWV0LmggaW4gSGVhZGVycyAqLywKIAkJCQlFNEY5
RUVGMzE1NkRBMDA3MDBEMjNFN0UgLyogU3R5bGVTaGVldENvbnRlbnRzLmggaW4gSGVhZGVycyAq
LywKIAkJCQlBOEVBODAwQTBBMTk1MTZFMDBBOEVGNUYgLyogU3R5bGVTaGVldExpc3QuaCBpbiBI
ZWFkZXJzICovLAorCQkJCTFDMEFBMTZEMjE5NDBEQzgwMDg5NjgyOSAvKiBTdHlsZVN1cHBvcnRl
ZENvbG9yU2NoZW1lcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkM1RUI1RTUwRTgxQkY2RDAwQjI1
OTY1IC8qIFN0eWxlU3Vycm91bmREYXRhLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzVFQjgxMDBF
ODFGMkNFMDBCMjU5NjUgLyogU3R5bGVUcmFuc2Zvcm1EYXRhLmggaW4gSGVhZGVycyAqLywKIAkJ
CQlFNERFQUExODE3QTkzREMzMDAwRTA0MzAgLyogU3R5bGVUcmVlUmVzb2x2ZXIuaCBpbiBIZWFk
ZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0NvbXB1dGVkU3R5bGVE
ZWNsYXJhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xh
cmF0aW9uLmNwcAppbmRleCAyZWY2NjI5NTlhOTRjN2VkZmI5OWQyOGY3OTNmYjdhMGU1ZmZiNjc1
Li4wM2I3YjNlNzFiMjU5ZDk4MDQ4OWNkYmI5ZDVlNzM2Y2RkYjNhNGZlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcApAQCAtNDQ4
LDYgKzQ0OCw5IEBAIHN0YXRpYyBjb25zdCBDU1NQcm9wZXJ0eUlEIGNvbXB1dGVkUHJvcGVydGll
c1tdID0gewogICAgIENTU1Byb3BlcnR5U3Ryb2tlTWl0ZXJsaW1pdCwKICAgICBDU1NQcm9wZXJ0
eVN0cm9rZU9wYWNpdHksCiAgICAgQ1NTUHJvcGVydHlTdHJva2VXaWR0aCwKKyNpZiBFTkFCTEUo
REFSS19NT0RFX0NTUykKKyAgICBDU1NQcm9wZXJ0eVN1cHBvcnRlZENvbG9yU2NoZW1lcywKKyNl
bmRpZgogICAgIENTU1Byb3BlcnR5QWxpZ25tZW50QmFzZWxpbmUsCiAgICAgQ1NTUHJvcGVydHlC
YXNlbGluZVNoaWZ0LAogICAgIENTU1Byb3BlcnR5RG9taW5hbnRCYXNlbGluZSwKQEAgLTM5Njks
NiArMzk3MiwyNCBAQCBSZWZQdHI8Q1NTVmFsdWU+IENvbXB1dGVkU3R5bGVFeHRyYWN0b3I6OnZh
bHVlRm9yUHJvcGVydHlpblN0eWxlKGNvbnN0IFJlbmRlclN0eQogICAgICAgICAgICAgcmV0dXJu
IGNzc1ZhbHVlUG9vbC5jcmVhdGVWYWx1ZShzdHlsZS5hcHBsZVBheUJ1dHRvblR5cGUoKSk7CiAj
ZW5kaWYKIAorI2lmIEVOQUJMRShEQVJLX01PREVfQ1NTKQorICAgICAgICBjYXNlIENTU1Byb3Bl
cnR5U3VwcG9ydGVkQ29sb3JTY2hlbWVzOiB7CisgICAgICAgICAgICBhdXRvIHN1cHBvcnRlZENv
bG9yU2NoZW1lcyA9IHN0eWxlLnN1cHBvcnRlZENvbG9yU2NoZW1lcygpOworICAgICAgICAgICAg
aWYgKHN1cHBvcnRlZENvbG9yU2NoZW1lcy5pc0F1dG8oKSkKKyAgICAgICAgICAgICAgICByZXR1
cm4gY3NzVmFsdWVQb29sLmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1ZUF1dG8pOworCisg
ICAgICAgICAgICBhdXRvIGxpc3QgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZVNwYWNlU2VwYXJhdGVk
KCk7CisgICAgICAgICAgICBpZiAoc3VwcG9ydGVkQ29sb3JTY2hlbWVzLmNvbnRhaW5zKENvbG9y
U2NoZW1lczo6TGlnaHQpKQorICAgICAgICAgICAgICAgIGxpc3QtPmFwcGVuZChjc3NWYWx1ZVBv
b2wuY3JlYXRlSWRlbnRpZmllclZhbHVlKENTU1ZhbHVlTGlnaHQpKTsKKyAgICAgICAgICAgIGlm
IChzdXBwb3J0ZWRDb2xvclNjaGVtZXMuY29udGFpbnMoQ29sb3JTY2hlbWVzOjpEYXJrKSkKKyAg
ICAgICAgICAgICAgICBsaXN0LT5hcHBlbmQoY3NzVmFsdWVQb29sLmNyZWF0ZUlkZW50aWZpZXJW
YWx1ZShDU1NWYWx1ZURhcmspKTsKKyAgICAgICAgICAgIGlmICghc3VwcG9ydGVkQ29sb3JTY2hl
bWVzLmFsbG93c1RyYW5zZm9ybWF0aW9ucygpKQorICAgICAgICAgICAgICAgIGxpc3QtPmFwcGVu
ZChjc3NWYWx1ZVBvb2wuY3JlYXRlSWRlbnRpZmllclZhbHVlKENTU1ZhbHVlT25seSkpOworICAg
ICAgICAgICAgQVNTRVJUKGxpc3QtPmxlbmd0aCgpKTsKKyAgICAgICAgICAgIHJldHVybiBXVEZN
b3ZlKGxpc3QpOworICAgICAgICB9CisjZW5kaWYKKwogICAgICAgICAvKiBJbmRpdmlkdWFsIHBy
b3BlcnRpZXMgbm90IHBhcnQgb2YgdGhlIHNwZWMgKi8KICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0
eUJhY2tncm91bmRSZXBlYXRYOgogICAgICAgICBjYXNlIENTU1Byb3BlcnR5QmFja2dyb3VuZFJl
cGVhdFk6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJvcGVydGllcy5qc29u
IGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1Byb3BlcnRpZXMuanNvbgppbmRleCAyOGQ4NDgyZDY2
Y2Y4NDgzMWYzNjg3ZjZjYWY4ZDE5OWY0NjIwZTcwLi5hMTU0ZWIwM2ExMDE2ZjM5Y2QyMzhiMGVl
NWEyY2FjNWY3MmY4Y2ZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJvcGVy
dGllcy5qc29uCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcm9wZXJ0aWVzLmpzb24KQEAg
LTU3MTIsNiArNTcxMiwyMiBAQAogICAgICAgICAgICAgfSwKICAgICAgICAgICAgICJzdGF0dXMi
OiAibm9uLXN0YW5kYXJkIgogICAgICAgICB9LAorICAgICAgICAic3VwcG9ydGVkLWNvbG9yLXNj
aGVtZXMiOiB7CisgICAgICAgICAgICAiaW5oZXJpdGVkIjogdHJ1ZSwKKyAgICAgICAgICAgICJ2
YWx1ZXMiOiBbCisgICAgICAgICAgICAgICAgImF1dG8iLAorICAgICAgICAgICAgICAgICJsaWdo
dCIsCisgICAgICAgICAgICAgICAgImRhcmsiLAorICAgICAgICAgICAgICAgICJvbmx5IgorICAg
ICAgICAgICAgXSwKKyAgICAgICAgICAgICJjb2RlZ2VuLXByb3BlcnRpZXMiOiB7CisgICAgICAg
ICAgICAgICAgImNvbnZlcnRlciI6ICJTdXBwb3J0ZWRDb2xvclNjaGVtZXMiLAorICAgICAgICAg
ICAgICAgICJlbmFibGUtaWYiOiAiRU5BQkxFX0RBUktfTU9ERV9DU1MiCisgICAgICAgICAgICB9
LAorICAgICAgICAgICAgInN0YXR1cyI6IHsKKyAgICAgICAgICAgICAgICAic3RhdHVzIjogIm5v
bi1zdGFuZGFyZCIKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSwKICAgICAgICAgIm9yZGVyIjog
ewogICAgICAgICAgICAgImNvZGVnZW4tcHJvcGVydGllcyI6IHsKICAgICAgICAgICAgICAgICAi
YWxpYXNlcyI6IFsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NWYWx1ZUtleXdv
cmRzLmluIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ZhbHVlS2V5d29yZHMuaW4KaW5kZXggOTBm
OTEyYWNlYjU1YTFhZmRiYWFiMDk1YjYyZmJjNTRhYmIzZDI1NC4uODZiNWU1OTE0ZjQwZTczYWZi
MTQ5NTIxODQzYTRlYzk3Yzg2MTAxOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NT
U1ZhbHVlS2V5d29yZHMuaW4KKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ZhbHVlS2V5d29y
ZHMuaW4KQEAgLTEzODQsNiArMTM4NCwxMSBAQCBuby1wcmVmZXJlbmNlCiBsaWdodAogZGFyawog
Ly8gbm8tcHJlZmVyZW5jZQorCisvLyBzdXBwb3J0ZWQtY29sb3Itc2NoZW1lcworb25seQorLy8g
bGlnaHQKKy8vIGRhcmsKICNlbmRpZgogCiAvLyBhdXRvLXJlcGVhdApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvY3NzL1N0eWxlQnVpbGRlckNvbnZlcnRlci5oIGIvU291cmNlL1dlYkNvcmUv
Y3NzL1N0eWxlQnVpbGRlckNvbnZlcnRlci5oCmluZGV4IDBlODM4YmI1ZDhkZjAzMzU2NDM4MmQ1
NGYyYzMxOGExZmYxMjM4NzguLmU2MWQxZjU0NzJkNDk5NTBlNWVlMzUzZmE2MDE1OTRhZjQ2Y2Yw
ZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZUJ1aWxkZXJDb252ZXJ0ZXIu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVCdWlsZGVyQ29udmVydGVyLmgKQEAgLTc3
LDYgKzc3LDkgQEAgcHVibGljOgogICAgIHRlbXBsYXRlPENTU1Byb3BlcnR5SUQ+IHN0YXRpYyBO
aW5lUGllY2VJbWFnZSBjb252ZXJ0Qm9yZGVyTWFzayhTdHlsZVJlc29sdmVyJiwgQ1NTVmFsdWUm
KTsKICAgICB0ZW1wbGF0ZTxDU1NQcm9wZXJ0eUlEPiBzdGF0aWMgUmVmUHRyPFN0eWxlSW1hZ2U+
IGNvbnZlcnRTdHlsZUltYWdlKFN0eWxlUmVzb2x2ZXImLCBDU1NWYWx1ZSYpOwogICAgIHN0YXRp
YyBUcmFuc2Zvcm1PcGVyYXRpb25zIGNvbnZlcnRUcmFuc2Zvcm0oU3R5bGVSZXNvbHZlciYsIGNv
bnN0IENTU1ZhbHVlJik7CisjaWYgRU5BQkxFKERBUktfTU9ERV9DU1MpCisgICAgc3RhdGljIFN0
eWxlU3VwcG9ydGVkQ29sb3JTY2hlbWVzIGNvbnZlcnRTdXBwb3J0ZWRDb2xvclNjaGVtZXMoU3R5
bGVSZXNvbHZlciYsIGNvbnN0IENTU1ZhbHVlJik7CisjZW5kaWYKICAgICBzdGF0aWMgU3RyaW5n
IGNvbnZlcnRTdHJpbmcoU3R5bGVSZXNvbHZlciYsIGNvbnN0IENTU1ZhbHVlJik7CiAgICAgc3Rh
dGljIFN0cmluZyBjb252ZXJ0U3RyaW5nT3JBdXRvKFN0eWxlUmVzb2x2ZXImLCBjb25zdCBDU1NW
YWx1ZSYpOwogICAgIHN0YXRpYyBTdHJpbmcgY29udmVydFN0cmluZ09yTm9uZShTdHlsZVJlc29s
dmVyJiwgY29uc3QgQ1NTVmFsdWUmKTsKQEAgLTE2NSw2ICsxNjgsMTAgQEAgcHJpdmF0ZToKICAg
ICBzdGF0aWMgTGVuZ3RoIHBhcnNlU25hcENvb3JkaW5hdGUoU3R5bGVSZXNvbHZlciYsIGNvbnN0
IENTU1ZhbHVlJik7CiAjZW5kaWYKIAorI2lmIEVOQUJMRShEQVJLX01PREVfQ1NTKQorICAgIHN0
YXRpYyB2b2lkIHVwZGF0ZVN1cHBvcnRlZENvbG9yU2NoZW1lcyhjb25zdCBDU1NQcmltaXRpdmVW
YWx1ZSYsIFN0eWxlU3VwcG9ydGVkQ29sb3JTY2hlbWVzJik7CisjZW5kaWYKKwogICAgIHN0YXRp
YyBMZW5ndGggY29udmVydFRvMTAwUGVyY2VudE1pbnVzTGVuZ3RoKGNvbnN0IExlbmd0aCYpOwog
ICAgIHRlbXBsYXRlPENTU1ZhbHVlSUQsIENTU1ZhbHVlSUQ+IHN0YXRpYyBMZW5ndGggY29udmVy
dFBvc2l0aW9uQ29tcG9uZW50KFN0eWxlUmVzb2x2ZXImLCBjb25zdCBDU1NQcmltaXRpdmVWYWx1
ZSYpOwogCkBAIC00NTMsNiArNDYwLDQ4IEBAIGlubGluZSBUcmFuc2Zvcm1PcGVyYXRpb25zIFN0
eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydFRyYW5zZm9ybShTdHlsZVJlc29sdmVyCiAgICAg
cmV0dXJuIG9wZXJhdGlvbnM7CiB9CiAKKyNpZiBFTkFCTEUoREFSS19NT0RFX0NTUykKK2lubGlu
ZSB2b2lkIFN0eWxlQnVpbGRlckNvbnZlcnRlcjo6dXBkYXRlU3VwcG9ydGVkQ29sb3JTY2hlbWVz
KGNvbnN0IENTU1ByaW1pdGl2ZVZhbHVlJiBwcmltaXRpdmVWYWx1ZSwgU3R5bGVTdXBwb3J0ZWRD
b2xvclNjaGVtZXMmIHN1cHBvcnRlZENvbG9yU2NoZW1lcykKK3sKKyAgICBBU1NFUlQocHJpbWl0
aXZlVmFsdWUuaXNWYWx1ZUlEKCkpOworCisgICAgc3dpdGNoIChwcmltaXRpdmVWYWx1ZS52YWx1
ZUlEKCkpIHsKKyAgICBjYXNlIENTU1ZhbHVlQXV0bzoKKyAgICAgICAgc3VwcG9ydGVkQ29sb3JT
Y2hlbWVzID0gU3R5bGVTdXBwb3J0ZWRDb2xvclNjaGVtZXMoKTsKKyAgICAgICAgYnJlYWs7Cisg
ICAgY2FzZSBDU1NWYWx1ZU9ubHk6CisgICAgICAgIHN1cHBvcnRlZENvbG9yU2NoZW1lcy5zZXRB
bGxvd3NUcmFuc2Zvcm1hdGlvbnMoZmFsc2UpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIENT
U1ZhbHVlTGlnaHQ6CisgICAgICAgIHN1cHBvcnRlZENvbG9yU2NoZW1lcy5hZGQoQ29sb3JTY2hl
bWVzOjpMaWdodCk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQ1NTVmFsdWVEYXJrOgorICAg
ICAgICBzdXBwb3J0ZWRDb2xvclNjaGVtZXMuYWRkKENvbG9yU2NoZW1lczo6RGFyayk7CisgICAg
ICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAgICAgIC8vIFVua25vd24gaWRlbnRpZmllcnMg
YXJlIGFsbG93ZWQgYW5kIGlnbm9yZWQuCisgICAgICAgIGJyZWFrOworICAgIH0KK30KKworaW5s
aW5lIFN0eWxlU3VwcG9ydGVkQ29sb3JTY2hlbWVzIFN0eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29u
dmVydFN1cHBvcnRlZENvbG9yU2NoZW1lcyhTdHlsZVJlc29sdmVyJiwgY29uc3QgQ1NTVmFsdWUm
IHZhbHVlKQoreworICAgIFN0eWxlU3VwcG9ydGVkQ29sb3JTY2hlbWVzIHN1cHBvcnRlZENvbG9y
U2NoZW1lczsKKworICAgIGlmIChpczxDU1NWYWx1ZUxpc3Q+KHZhbHVlKSkgeworICAgICAgICBm
b3IgKGF1dG8mIGN1cnJlbnRWYWx1ZSA6IGRvd25jYXN0PENTU1ZhbHVlTGlzdD4odmFsdWUpKQor
ICAgICAgICAgICAgdXBkYXRlU3VwcG9ydGVkQ29sb3JTY2hlbWVzKGRvd25jYXN0PENTU1ByaW1p
dGl2ZVZhbHVlPihjdXJyZW50VmFsdWUuZ2V0KCkpLCBzdXBwb3J0ZWRDb2xvclNjaGVtZXMpOwor
ICAgIH0gZWxzZSBpZiAoaXM8Q1NTUHJpbWl0aXZlVmFsdWU+KHZhbHVlKSkKKyAgICAgICAgdXBk
YXRlU3VwcG9ydGVkQ29sb3JTY2hlbWVzKGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPih2YWx1
ZSksIHN1cHBvcnRlZENvbG9yU2NoZW1lcyk7CisKKyAgICAvLyBJZiB0aGUgdmFsdWUgd2FzIGp1
c3QgIm9ubHkiLCB0aGF0IGlzIHN5bm9ueW1vdXMgZm9yICJvbmx5IGxpZ2h0Ii4KKyAgICBpZiAo
c3VwcG9ydGVkQ29sb3JTY2hlbWVzLmlzT25seSgpKQorICAgICAgICBzdXBwb3J0ZWRDb2xvclNj
aGVtZXMuYWRkKENvbG9yU2NoZW1lczo6TGlnaHQpOworCisgICAgcmV0dXJuIHN1cHBvcnRlZENv
bG9yU2NoZW1lczsKK30KKyNlbmRpZgorCiBpbmxpbmUgU3RyaW5nIFN0eWxlQnVpbGRlckNvbnZl
cnRlcjo6Y29udmVydFN0cmluZyhTdHlsZVJlc29sdmVyJiwgY29uc3QgQ1NTVmFsdWUmIHZhbHVl
KQogewogICAgIHJldHVybiBkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4odmFsdWUpLnN0cmlu
Z1ZhbHVlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5jcHAKaW5kZXggNzViMGI4ZDQx
YTI5NDRkYzA4ZTE0YzU1Y2U4MTY4ZjJlYmI4MDFkNy4uMjRiMDZiZWM5MzM3ZTE2YmI4YWI3ZjI0
ZGVmOTA5YTc4YTUyODNiZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVz
b2x2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmNwcApAQCAt
MTg0MSwxNCArMTg0MSwxNCBAQCBDb2xvciBTdHlsZVJlc29sdmVyOjpjb2xvckZyb21QcmltaXRp
dmVWYWx1ZShjb25zdCBDU1NQcmltaXRpdmVWYWx1ZSYgdmFsdWUsIGJvbwogICAgIGNhc2UgQ1NT
VmFsdWVXZWJraXRBY3RpdmVsaW5rOgogICAgICAgICByZXR1cm4gZG9jdW1lbnQoKS5hY3RpdmVM
aW5rQ29sb3IoKTsKICAgICBjYXNlIENTU1ZhbHVlV2Via2l0Rm9jdXNSaW5nQ29sb3I6Ci0gICAg
ICAgIHJldHVybiBSZW5kZXJUaGVtZTo6Zm9jdXNSaW5nQ29sb3IoZG9jdW1lbnQoKS5zdHlsZUNv
bG9yT3B0aW9ucygpKTsKKyAgICAgICAgcmV0dXJuIFJlbmRlclRoZW1lOjpmb2N1c1JpbmdDb2xv
cihkb2N1bWVudCgpLnN0eWxlQ29sb3JPcHRpb25zKG1fc3RhdGUuc3R5bGUoKSkpOwogICAgIGNh
c2UgQ1NTVmFsdWVDdXJyZW50Y29sb3I6CiAgICAgICAgIC8vIENvbG9yIGlzIGFuIGluaGVyaXRl
ZCBwcm9wZXJ0eSBzbyBkZXBlbmRpbmcgb24gaXQgZWZmZWN0aXZlbHkgbWFrZXMgdGhlIHByb3Bl
cnR5IGluaGVyaXRlZC4KICAgICAgICAgLy8gRklYTUU6IFNldHRpbmcgdGhlIGZsYWcgYXMgYSBz
aWRlIGVmZmVjdCBvZiBjYWxsaW5nIHRoaXMgZnVuY3Rpb24gaXMgYSBiaXQgb2JsaXF1ZS4gQ2Fu
IHdlIGRvIGJldHRlcj8KICAgICAgICAgbV9zdGF0ZS5zdHlsZSgpLT5zZXRIYXNFeHBsaWNpdGx5
SW5oZXJpdGVkUHJvcGVydGllcygpOwogICAgICAgICByZXR1cm4gbV9zdGF0ZS5zdHlsZSgpLT5j
b2xvcigpOwogICAgIGRlZmF1bHQ6Ci0gICAgICAgIHJldHVybiBTdHlsZUNvbG9yOjpjb2xvckZy
b21LZXl3b3JkKGlkZW50aWZpZXIsIGRvY3VtZW50KCkuc3R5bGVDb2xvck9wdGlvbnMoKSk7Cisg
ICAgICAgIHJldHVybiBTdHlsZUNvbG9yOjpjb2xvckZyb21LZXl3b3JkKGlkZW50aWZpZXIsIGRv
Y3VtZW50KCkuc3R5bGVDb2xvck9wdGlvbnMobV9zdGF0ZS5zdHlsZSgpKSk7CiAgICAgfQogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1Byb3BlcnR5UGFyc2Vy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUHJvcGVydHlQYXJzZXIuY3BwCmlu
ZGV4IGQzYTA0NzdhNzQzMjJmYTI2MmExNjkxMWE3MzE4YjZiNjhiZDdhNzMuLjE1ZTdmZTYwNDVh
N2Q0YTRhZWUyOTMyYzQ3MjUwYjU4NzE2NDZiZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9wYXJzZXIvQ1NTUHJvcGVydHlQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nz
cy9wYXJzZXIvQ1NTUHJvcGVydHlQYXJzZXIuY3BwCkBAIC0zNzQ3LDcgKzM3NDcsNTEgQEAgc3Rh
dGljIFJlZlB0cjxDU1NWYWx1ZT4gY29uc3VtZVRleHRFbXBoYXNpc1Bvc2l0aW9uKENTU1BhcnNl
clRva2VuUmFuZ2UmIHJhbmdlKQogICAgICAgICBsaXN0LT5hcHBlbmQoQ1NTVmFsdWVQb29sOjpz
aW5nbGV0b24oKS5jcmVhdGVJZGVudGlmaWVyVmFsdWUobGVmdFJpZ2h0VmFsdWVJRCkpOwogICAg
IHJldHVybiBsaXN0OwogfQotICAgIAorCisjaWYgRU5BQkxFKERBUktfTU9ERV9DU1MpCisKK3N0
YXRpYyBSZWZQdHI8Q1NTVmFsdWU+IGNvbnN1bWVTdXBwb3J0ZWRDb2xvclNjaGVtZXMoQ1NTUGFy
c2VyVG9rZW5SYW5nZSYgcmFuZ2UpCit7CisgICAgaWYgKGlzQXV0byhyYW5nZS5wZWVrKCkuaWQo
KSkpCisgICAgICAgIHJldHVybiBjb25zdW1lSWRlbnQocmFuZ2UpOworCisgICAgVmVjdG9yPENT
U1ZhbHVlSUQsIDM+IGlkZW50aWZpZXJzOworCisgICAgd2hpbGUgKCFyYW5nZS5hdEVuZCgpKSB7
CisgICAgICAgIGlmIChyYW5nZS5wZWVrKCkudHlwZSgpICE9IElkZW50VG9rZW4pCisgICAgICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgICAgICBDU1NWYWx1ZUlEIGlkID0gcmFuZ2UucGVl
aygpLmlkKCk7CisKKyAgICAgICAgc3dpdGNoIChpZCkgeworICAgICAgICBjYXNlIENTU1ZhbHVl
QXV0bzoKKyAgICAgICAgICAgIC8vIEF1dG8gaXMgb25seSBhbGxvd2VkIGFzIGEgc2luZ2xlIHZh
bHVlLCBhbmQgd2FzIGhhbmRsZWQgZWFybGllci4KKyAgICAgICAgICAgIC8vIERvbid0IGFsbG93
IGl0IGluIHRoZSBsaXN0LgorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICAgICAg
Y2FzZSBDU1NWYWx1ZU9ubHk6CisgICAgICAgIGNhc2UgQ1NTVmFsdWVMaWdodDoKKyAgICAgICAg
Y2FzZSBDU1NWYWx1ZURhcms6CisgICAgICAgICAgICBpZiAoIWlkZW50aWZpZXJzLmFwcGVuZElm
Tm90Q29udGFpbnMoaWQpKQorICAgICAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAg
ICAgICAgYnJlYWs7CisKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIC8vIFVua25vd24g
aWRlbnRpZmllcnMgYXJlIGFsbG93ZWQgYW5kIGlnbm9yZWQuCisgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgfQorCisgICAgICAgIHJhbmdlLmNvbnN1bWVJbmNsdWRpbmdXaGl0ZXNwYWNlKCk7
CisgICAgfQorCisgICAgUmVmUHRyPENTU1ZhbHVlTGlzdD4gbGlzdCA9IENTU1ZhbHVlTGlzdDo6
Y3JlYXRlU3BhY2VTZXBhcmF0ZWQoKTsKKyAgICBmb3IgKGF1dG8gaWQgOiBpZGVudGlmaWVycykK
KyAgICAgICAgbGlzdC0+YXBwZW5kKENTU1ZhbHVlUG9vbDo6c2luZ2xldG9uKCkuY3JlYXRlSWRl
bnRpZmllclZhbHVlKGlkKSk7CisgICAgcmV0dXJuIGxpc3Q7Cit9CisKKyNlbmRpZgorCiAjaWYg
RU5BQkxFKERBU0hCT0FSRF9TVVBQT1JUKQogCiBzdGF0aWMgUmVmUHRyPENTU1ZhbHVlPiBjb25z
dW1lV2Via2l0RGFzaGJvYXJkUmVnaW9uKENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlLCBDU1NQ
YXJzZXJNb2RlIG1vZGUpCkBAIC00Mjg5LDYgKzQzMzMsMTIgQEAgUmVmUHRyPENTU1ZhbHVlPiBD
U1NQcm9wZXJ0eVBhcnNlcjo6cGFyc2VTaW5nbGVWYWx1ZShDU1NQcm9wZXJ0eUlEIHByb3BlcnR5
LCBDU1MKICAgICAgICAgcmV0dXJuIGNvbnN1bWVXZWJraXRBc3BlY3RSYXRpbyhtX3JhbmdlKTsK
ICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0VGV4dEVtcGhhc2lzUG9zaXRpb246CiAgICAgICAg
IHJldHVybiBjb25zdW1lVGV4dEVtcGhhc2lzUG9zaXRpb24obV9yYW5nZSk7CisjaWYgRU5BQkxF
KERBUktfTU9ERV9DU1MpCisgICAgY2FzZSBDU1NQcm9wZXJ0eVN1cHBvcnRlZENvbG9yU2NoZW1l
czoKKyAgICAgICAgaWYgKCFSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygp
LmRhcmtNb2RlQ1NTRW5hYmxlZCgpKQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAg
ICAgIHJldHVybiBjb25zdW1lU3VwcG9ydGVkQ29sb3JTY2hlbWVzKG1fcmFuZ2UpOworI2VuZGlm
CiAjaWYgRU5BQkxFKERBU0hCT0FSRF9TVVBQT1JUKQogICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJr
aXREYXNoYm9hcmRSZWdpb246CiAgICAgICAgIHJldHVybiBjb25zdW1lV2Via2l0RGFzaGJvYXJk
UmVnaW9uKG1fcmFuZ2UsIG1fY29udGV4dC5tb2RlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9Eb2N1bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCmlu
ZGV4IDFlNmJjNGJjNWJhMDNkOWFjZGQ0MTA1NTI4N2U5YjA2MGMyNTQ5YzUuLmYwNzMxNDIxMWQ4
NmIxNzIyNTQ0MWFhMTQ0NTBkYTk5NmMzNWZjNzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Eb2N1bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcApA
QCAtODE3LDE3ICs4MTcsMTcgQEAgU3RyaW5nIERvY3VtZW50Ojpjb21wYXRNb2RlKCkgY29uc3QK
IAogdm9pZCBEb2N1bWVudDo6cmVzZXRMaW5rQ29sb3IoKQogewotICAgIG1fbGlua0NvbG9yID0g
U3R5bGVDb2xvcjo6Y29sb3JGcm9tS2V5d29yZChDU1NWYWx1ZVdlYmtpdExpbmssIHN0eWxlQ29s
b3JPcHRpb25zKCkpOworICAgIG1fbGlua0NvbG9yID0gU3R5bGVDb2xvcjo6Y29sb3JGcm9tS2V5
d29yZChDU1NWYWx1ZVdlYmtpdExpbmssIHN0eWxlQ29sb3JPcHRpb25zKG51bGxwdHIpKTsKIH0K
IAogdm9pZCBEb2N1bWVudDo6cmVzZXRWaXNpdGVkTGlua0NvbG9yKCkKIHsKLSAgICBtX3Zpc2l0
ZWRMaW5rQ29sb3IgPSBTdHlsZUNvbG9yOjpjb2xvckZyb21LZXl3b3JkKENTU1ZhbHVlV2Via2l0
TGluaywgc3R5bGVDb2xvck9wdGlvbnMoKSB8IFN0eWxlQ29sb3I6Ok9wdGlvbnM6OkZvclZpc2l0
ZWRMaW5rKTsKKyAgICBtX3Zpc2l0ZWRMaW5rQ29sb3IgPSBTdHlsZUNvbG9yOjpjb2xvckZyb21L
ZXl3b3JkKENTU1ZhbHVlV2Via2l0TGluaywgc3R5bGVDb2xvck9wdGlvbnMobnVsbHB0cikgfCBT
dHlsZUNvbG9yOjpPcHRpb25zOjpGb3JWaXNpdGVkTGluayk7CiB9CiAKIHZvaWQgRG9jdW1lbnQ6
OnJlc2V0QWN0aXZlTGlua0NvbG9yKCkKIHsKLSAgICBtX2FjdGl2ZUxpbmtDb2xvciA9IFN0eWxl
Q29sb3I6OmNvbG9yRnJvbUtleXdvcmQoQ1NTVmFsdWVXZWJraXRBY3RpdmVsaW5rLCBzdHlsZUNv
bG9yT3B0aW9ucygpKTsKKyAgICBtX2FjdGl2ZUxpbmtDb2xvciA9IFN0eWxlQ29sb3I6OmNvbG9y
RnJvbUtleXdvcmQoQ1NTVmFsdWVXZWJraXRBY3RpdmVsaW5rLCBzdHlsZUNvbG9yT3B0aW9ucyhu
dWxscHRyKSk7CiB9CiAKIERPTUltcGxlbWVudGF0aW9uJiBEb2N1bWVudDo6aW1wbGVtZW50YXRp
b24oKQpAQCAtMzU5MCwxOCArMzU5MCwzNCBAQCBzdGF0aWMgdm9pZCBwcm9jZXNzQ29sb3JTY2hl
bWVzKFN0cmluZ1ZpZXcgY29sb3JTY2hlbWVzLCBjb25zdCBXVEY6OkZ1bmN0aW9uPHZvaQogdm9p
ZCBEb2N1bWVudDo6cHJvY2Vzc1N1cHBvcnRlZENvbG9yU2NoZW1lcyhjb25zdCBTdHJpbmcmIGNv
bG9yU2NoZW1lcykKIHsKICAgICBPcHRpb25TZXQ8Q29sb3JTY2hlbWVzPiBzdXBwb3J0ZWRDb2xv
clNjaGVtZXM7CisgICAgYm9vbCBhbGxvd3NUcmFuc2Zvcm1hdGlvbnMgPSB0cnVlOworICAgIGJv
b2wgYXV0b0VuY291bnRlcmVkID0gZmFsc2U7CisKKyAgICBwcm9jZXNzQ29sb3JTY2hlbWVzKGNv
bG9yU2NoZW1lcywgWyZdKFN0cmluZ1ZpZXcga2V5KSB7CisgICAgICAgIGlmIChlcXVhbExldHRl
cnNJZ25vcmluZ0FTQ0lJQ2FzZShrZXksICJhdXRvIikpIHsKKyAgICAgICAgICAgIHN1cHBvcnRl
ZENvbG9yU2NoZW1lcyA9IHsgfTsKKyAgICAgICAgICAgIGFsbG93c1RyYW5zZm9ybWF0aW9ucyA9
IHRydWU7CisgICAgICAgICAgICBhdXRvRW5jb3VudGVyZWQgPSB0cnVlOworICAgICAgICAgICAg
cmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgaWYgKGF1dG9FbmNvdW50ZXJlZCkKKyAgICAg
ICAgICAgIHJldHVybjsKIAotICAgIHByb2Nlc3NDb2xvclNjaGVtZXMoY29sb3JTY2hlbWVzLCBb
JnN1cHBvcnRlZENvbG9yU2NoZW1lc10oU3RyaW5nVmlldyBrZXkpIHsKICAgICAgICAgaWYgKGVx
dWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKGtleSwgImxpZ2h0IikpCiAgICAgICAgICAgICBz
dXBwb3J0ZWRDb2xvclNjaGVtZXMuYWRkKENvbG9yU2NoZW1lczo6TGlnaHQpOwogICAgICAgICBl
bHNlIGlmIChlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShrZXksICJkYXJrIikpCiAgICAg
ICAgICAgICBzdXBwb3J0ZWRDb2xvclNjaGVtZXMuYWRkKENvbG9yU2NoZW1lczo6RGFyayk7Cisg
ICAgICAgIGVsc2UgaWYgKGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKGtleSwgIm9ubHki
KSkKKyAgICAgICAgICAgIGFsbG93c1RyYW5zZm9ybWF0aW9ucyA9IGZhbHNlOwogICAgIH0pOwog
Ci0gICAgaWYgKHN1cHBvcnRlZENvbG9yU2NoZW1lcy5pc0VtcHR5KCkpCisgICAgLy8gSWYgdGhl
IHZhbHVlIHdhcyBqdXN0ICJvbmx5IiwgdGhhdCBpcyBzeW5vbnltb3VzIGZvciAib25seSBsaWdo
dCIuCisgICAgaWYgKHN1cHBvcnRlZENvbG9yU2NoZW1lcy5pc0VtcHR5KCkgJiYgIWFsbG93c1Ry
YW5zZm9ybWF0aW9ucykKICAgICAgICAgc3VwcG9ydGVkQ29sb3JTY2hlbWVzLmFkZChDb2xvclNj
aGVtZXM6OkxpZ2h0KTsKIAogICAgIG1fc3VwcG9ydGVkQ29sb3JTY2hlbWVzID0gc3VwcG9ydGVk
Q29sb3JTY2hlbWVzOworICAgIG1fYWxsb3dzQ29sb3JTY2hlbWVUcmFuc2Zvcm1hdGlvbnMgPSBh
bGxvd3NUcmFuc2Zvcm1hdGlvbnM7CiAKICAgICBpZiAoYXV0byogcGFnZSA9IHRoaXMtPnBhZ2Uo
KSkKICAgICAgICAgcGFnZS0+dXBkYXRlU3R5bGVBZnRlckNoYW5nZUluRW52aXJvbm1lbnQoKTsK
QEAgLTcyODEsMTEgKzcyOTcsMjMgQEAgYm9vbCBEb2N1bWVudDo6dXNlU3lzdGVtQXBwZWFyYW5j
ZSgpIGNvbnN0CiAgICAgcmV0dXJuIHVzZVN5c3RlbUFwcGVhcmFuY2U7CiB9CiAKLWJvb2wgRG9j
dW1lbnQ6OnVzZURhcmtBcHBlYXJhbmNlKCkgY29uc3QKK2Jvb2wgRG9jdW1lbnQ6OnVzZURhcmtB
cHBlYXJhbmNlKGNvbnN0IFJlbmRlclN0eWxlKiBzdHlsZSkgY29uc3QKIHsKICNpZiBFTkFCTEUo
REFSS19NT0RFX0NTUykKLSAgICBpZiAobV9zdXBwb3J0ZWRDb2xvclNjaGVtZXMuY29udGFpbnMo
Q29sb3JTY2hlbWVzOjpEYXJrKSAmJiAhbV9zdXBwb3J0ZWRDb2xvclNjaGVtZXMuY29udGFpbnMo
Q29sb3JTY2hlbWVzOjpMaWdodCkpCisgICAgT3B0aW9uU2V0PENvbG9yU2NoZW1lcz4gc3VwcG9y
dGVkQ29sb3JTY2hlbWVzOworCisgICAgLy8gVXNlIHRoZSBzdHlsZSdzIHN1cHBvcnRlZCBjb2xv
ciBzY2hlbWVzLCBpZiBzdXBwbGllZC4KKyAgICBpZiAoc3R5bGUpCisgICAgICAgIHN1cHBvcnRl
ZENvbG9yU2NoZW1lcyA9IHN0eWxlLT5zdXBwb3J0ZWRDb2xvclNjaGVtZXMoKS5jb2xvclNjaGVt
ZXMoKTsKKworICAgIC8vIEZhbGxiYWNrIHRvIHRoZSBkb2N1bWVudCdzIHN1cHBvcnRlZCBjb2xv
ciBzY2hlbWVzIGlmIHN0eWxlIHdhcyBlbXB0eSAoYXV0bykuCisgICAgaWYgKHN1cHBvcnRlZENv
bG9yU2NoZW1lcy5pc0VtcHR5KCkpCisgICAgICAgIHN1cHBvcnRlZENvbG9yU2NoZW1lcyA9IG1f
c3VwcG9ydGVkQ29sb3JTY2hlbWVzOworCisgICAgaWYgKHN1cHBvcnRlZENvbG9yU2NoZW1lcy5j
b250YWlucyhDb2xvclNjaGVtZXM6OkRhcmspICYmICFzdXBwb3J0ZWRDb2xvclNjaGVtZXMuY29u
dGFpbnMoQ29sb3JTY2hlbWVzOjpMaWdodCkpCiAgICAgICAgIHJldHVybiB0cnVlOworI2Vsc2UK
KyAgICBVTlVTRURfUEFSQU0oc3R5bGUpOwogI2VuZGlmCiAKICAgICBib29sIHBhZ2VVc2VzRGFy
a0FwcGVhcmFuY2UgPSBmYWxzZTsKQEAgLTcyOTYsMjEgKzczMjQsMTkgQEAgYm9vbCBEb2N1bWVu
dDo6dXNlRGFya0FwcGVhcmFuY2UoKSBjb25zdAogICAgICAgICByZXR1cm4gcGFnZVVzZXNEYXJr
QXBwZWFyYW5jZTsKIAogI2lmIEVOQUJMRShEQVJLX01PREVfQ1NTKQotICAgIGlmIChtX3N1cHBv
cnRlZENvbG9yU2NoZW1lcy5jb250YWlucyhDb2xvclNjaGVtZXM6OkRhcmspKQorICAgIGlmIChz
dXBwb3J0ZWRDb2xvclNjaGVtZXMuY29udGFpbnMoQ29sb3JTY2hlbWVzOjpEYXJrKSkKICAgICAg
ICAgcmV0dXJuIHBhZ2VVc2VzRGFya0FwcGVhcmFuY2U7Ci0KLSAgICBBU1NFUlQobV9zdXBwb3J0
ZWRDb2xvclNjaGVtZXMuY29udGFpbnMoQ29sb3JTY2hlbWVzOjpMaWdodCkpOwogI2VuZGlmCiAK
ICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLU9wdGlvblNldDxTdHlsZUNvbG9yOjpPcHRpb25zPiBE
b2N1bWVudDo6c3R5bGVDb2xvck9wdGlvbnMoKSBjb25zdAorT3B0aW9uU2V0PFN0eWxlQ29sb3I6
Ok9wdGlvbnM+IERvY3VtZW50OjpzdHlsZUNvbG9yT3B0aW9ucyhjb25zdCBSZW5kZXJTdHlsZSog
c3R5bGUpIGNvbnN0CiB7CiAgICAgT3B0aW9uU2V0PFN0eWxlQ29sb3I6Ok9wdGlvbnM+IG9wdGlv
bnM7CiAgICAgaWYgKHVzZVN5c3RlbUFwcGVhcmFuY2UoKSkKICAgICAgICAgb3B0aW9ucy5hZGQo
U3R5bGVDb2xvcjo6T3B0aW9uczo6VXNlU3lzdGVtQXBwZWFyYW5jZSk7Ci0gICAgaWYgKHVzZURh
cmtBcHBlYXJhbmNlKCkpCisgICAgaWYgKHVzZURhcmtBcHBlYXJhbmNlKHN0eWxlKSkKICAgICAg
ICAgb3B0aW9ucy5hZGQoU3R5bGVDb2xvcjo6T3B0aW9uczo6VXNlRGFya0FwcGVhcmFuY2UpOwog
ICAgIHJldHVybiBvcHRpb25zOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0Rv
Y3VtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAppbmRleCA2YTcyNjVhOWIx
YmY3MzVkY2JlYzkzNGI3N2JjZmZmYTAyZGFkNWNhLi5jZDUzZGJhNjg1YTliMDMwYTM0MjY4MGQ1
MmY0MzViZjVkM2M5YjEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaApAQCAtNTc4LDkgKzU3OCw5IEBA
IHB1YmxpYzoKICAgICBmbG9hdCBkZXZpY2VTY2FsZUZhY3RvcigpIGNvbnN0OwogCiAgICAgV0VC
Q09SRV9FWFBPUlQgYm9vbCB1c2VTeXN0ZW1BcHBlYXJhbmNlKCkgY29uc3Q7Ci0gICAgV0VCQ09S
RV9FWFBPUlQgYm9vbCB1c2VEYXJrQXBwZWFyYW5jZSgpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQ
T1JUIGJvb2wgdXNlRGFya0FwcGVhcmFuY2UoY29uc3QgUmVuZGVyU3R5bGUqKSBjb25zdDsKIAot
ICAgIE9wdGlvblNldDxTdHlsZUNvbG9yOjpPcHRpb25zPiBzdHlsZUNvbG9yT3B0aW9ucygpIGNv
bnN0OworICAgIE9wdGlvblNldDxTdHlsZUNvbG9yOjpPcHRpb25zPiBzdHlsZUNvbG9yT3B0aW9u
cyhjb25zdCBSZW5kZXJTdHlsZSopIGNvbnN0OwogCiAgICAgV0VCQ09SRV9FWFBPUlQgUmVmPFJh
bmdlPiBjcmVhdGVSYW5nZSgpOwogCkBAIC05MDEsMTEgKzkwMSw2IEBAIHB1YmxpYzoKICAgICB2
b2lkIHByb2Nlc3NSZWZlcnJlclBvbGljeShjb25zdCBTdHJpbmcmIHBvbGljeSwgUmVmZXJyZXJQ
b2xpY3lTb3VyY2UpOwogCiAjaWYgRU5BQkxFKERBUktfTU9ERV9DU1MpCi0gICAgZW51bSBjbGFz
cyBDb2xvclNjaGVtZXMgOiB1aW50OF90IHsKLSAgICAgICAgTGlnaHQgPSAxIDw8IDAsCi0gICAg
ICAgIERhcmsgPSAxIDw8IDEKLSAgICB9OwotCiAgICAgdm9pZCBwcm9jZXNzU3VwcG9ydGVkQ29s
b3JTY2hlbWVzKGNvbnN0IFN0cmluZyYgY29sb3JTY2hlbWVzKTsKICNlbmRpZgogCkBAIC0xNzcy
LDcgKzE3NjcsOCBAQCBwcml2YXRlOgogICAgIEhhc2hTZXQ8U1ZHVXNlRWxlbWVudCo+IG1fc3Zn
VXNlRWxlbWVudHM7CiAKICNpZiBFTkFCTEUoREFSS19NT0RFX0NTUykKLSAgICBPcHRpb25TZXQ8
Q29sb3JTY2hlbWVzPiBtX3N1cHBvcnRlZENvbG9yU2NoZW1lcyB7IENvbG9yU2NoZW1lczo6TGln
aHQgfTsKKyAgICBPcHRpb25TZXQ8Q29sb3JTY2hlbWVzPiBtX3N1cHBvcnRlZENvbG9yU2NoZW1l
czsKKyAgICBib29sIG1fYWxsb3dzQ29sb3JTY2hlbWVUcmFuc2Zvcm1hdGlvbnMgeyB0cnVlIH07
CiAjZW5kaWYKIAogI2lmIEVOQUJMRShEQVNIQk9BUkRfU1VQUE9SVCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvV2ViQ29udGVudFJlYWRlckNvY29hLm1tIGIvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9XZWJDb250ZW50UmVhZGVyQ29jb2EubW0KaW5kZXgg
YWVmZWIxYWYxZjY5M2MzOTEyYmRmOGQ2OGQzZmQ5ZDVjYzc2NWZlYy4uZDQyMDdiOWNmMWMxY2Q2
ODg0NzNkNGJmMDhiNGVhMjgwMGI3NDZiMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9jb2NvYS9XZWJDb250ZW50UmVhZGVyQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9jb2NvYS9XZWJDb250ZW50UmVhZGVyQ29jb2EubW0KQEAgLTUwLDYgKzUwLDcgQEAK
ICNpbXBvcnQgIk1JTUVUeXBlUmVnaXN0cnkuaCIKICNpbXBvcnQgIlBhZ2UuaCIKICNpbXBvcnQg
IlB1YmxpY1VSTE1hbmFnZXIuaCIKKyNpbXBvcnQgIlJlbmRlclZpZXcuaCIKICNpbXBvcnQgIlJ1
bnRpbWVFbmFibGVkRmVhdHVyZXMuaCIKICNpbXBvcnQgIlNlcmlhbGl6ZWRBdHRhY2htZW50RGF0
YS5oIgogI2ltcG9ydCAiU2V0dGluZ3MuaCIKQEAgLTEzMyw3ICsxMzQsOSBAQCBzdGF0aWMgRnJh
Z21lbnRBbmRSZXNvdXJjZXMgY3JlYXRlRnJhZ21lbnQoRnJhbWUmIGZyYW1lLCBOU0F0dHJpYnV0
ZWRTdHJpbmcgKnN0cgogICAgIERvY3VtZW50JiBkb2N1bWVudCA9ICpmcmFtZS5kb2N1bWVudCgp
OwogCiAjaWYgUExBVEZPUk0oTUFDKQotICAgIExvY2FsRGVmYXVsdFN5c3RlbUFwcGVhcmFuY2Ug
bG9jYWxBcHBlYXJhbmNlKGRvY3VtZW50LnVzZURhcmtBcHBlYXJhbmNlKCkpOworICAgIGF1dG8q
IHZpZXcgPSBmcmFtZS52aWV3KCk7CisgICAgYXV0byogcmVuZGVyVmlldyA9IHZpZXcgPyB2aWV3
LT5yZW5kZXJWaWV3KCkgOiBudWxscHRyOworICAgIExvY2FsRGVmYXVsdFN5c3RlbUFwcGVhcmFu
Y2UgbG9jYWxBcHBlYXJhbmNlKHJlbmRlclZpZXcgPyByZW5kZXJWaWV3LT51c2VEYXJrQXBwZWFy
YW5jZSgpIDogZmFsc2UpOwogI2VuZGlmCiAKICAgICBOU0FycmF5ICpzdWJyZXNvdXJjZXMgPSBu
aWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJp
bmdDb250ZXh0MkQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVy
aW5nQ29udGV4dDJELmNwcAppbmRleCBkMTVkZWM0NjBlZDc1NDhiYjU3NmMxNzk1MTYzOWQ5YTI4
NzE2MDM3Li5kYTFjODBmZDJmZDgxMTBkOWY1OGM3MzIxM2JkYzgzYmViZDAyZjdmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRl
eHQyRC5jcHAKQEAgLTg2LDcgKzg2LDcgQEAgdm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6
OmRyYXdGb2N1c0lmTmVlZGVkSW50ZXJuYWwoY29uc3QgUGF0aCYgcGF0aCwgRWxlbWUKICAgICBh
dXRvKiBjb250ZXh0ID0gZHJhd2luZ0NvbnRleHQoKTsKICAgICBpZiAoIWVsZW1lbnQuZm9jdXNl
ZCgpIHx8ICFzdGF0ZSgpLmhhc0ludmVydGlibGVUcmFuc2Zvcm0gfHwgcGF0aC5pc0VtcHR5KCkg
fHwgIWVsZW1lbnQuaXNEZXNjZW5kYW50T2YoY2FudmFzKCkpIHx8ICFjb250ZXh0KQogICAgICAg
ICByZXR1cm47Ci0gICAgY29udGV4dC0+ZHJhd0ZvY3VzUmluZyhwYXRoLCAxLCAxLCBSZW5kZXJU
aGVtZTo6Zm9jdXNSaW5nQ29sb3IoZWxlbWVudC5kb2N1bWVudCgpLnN0eWxlQ29sb3JPcHRpb25z
KCkpKTsKKyAgICBjb250ZXh0LT5kcmF3Rm9jdXNSaW5nKHBhdGgsIDEsIDEsIFJlbmRlclRoZW1l
Ojpmb2N1c1JpbmdDb2xvcihlbGVtZW50LmRvY3VtZW50KCkuc3R5bGVDb2xvck9wdGlvbnMoY2Fu
dmFzKCkuY29tcHV0ZWRTdHlsZSgpKSkpOwogfQogCiBTdHJpbmcgQ2FudmFzUmVuZGVyaW5nQ29u
dGV4dDJEOjpmb250KCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JPdmVybGF5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JPdmVybGF5LmNwcAppbmRleCBkNWRlZjkwZjE2Zjg4MmY4MTRhNmJjZDg2NzViNzhjNjRkZDRi
OTFjLi5kZWM3MWU1ZmU4NDAxMmQzOWIwMDc0ODk2ODcxMTQwYWFkMDg2MTY1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yT3ZlcmxheS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvck92ZXJsYXkuY3BwCkBAIC0xODAsMTIgKzE4
MCwxMyBAQCB2b2lkIEluc3BlY3Rvck92ZXJsYXk6OnBhaW50KEdyYXBoaWNzQ29udGV4dCYgY29u
dGV4dCkKICAgICBpZiAoIXNob3VsZFNob3dPdmVybGF5KCkpCiAgICAgICAgIHJldHVybjsKIAor
ICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcihjb250ZXh0KTsKKyAgICBG
cmFtZVZpZXcqIHZpZXcgPSBvdmVybGF5UGFnZSgpLT5tYWluRnJhbWUoKS52aWV3KCk7CisKICNp
ZiBQTEFURk9STShNQUMpCi0gICAgTG9jYWxEZWZhdWx0U3lzdGVtQXBwZWFyYW5jZSBsb2NhbEFw
cGVhcmFuY2UobV9wYWdlLm1haW5GcmFtZSgpLmRvY3VtZW50KCktPnVzZURhcmtBcHBlYXJhbmNl
KCkpOworICAgIExvY2FsRGVmYXVsdFN5c3RlbUFwcGVhcmFuY2UgbG9jYWxBcHBlYXJhbmNlKHZp
ZXctPnJlbmRlclZpZXcoKS0+dXNlRGFya0FwcGVhcmFuY2UoKSk7CiAjZW5kaWYKIAotICAgIEdy
YXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcihjb250ZXh0KTsKLSAgICBGcmFtZVZp
ZXcqIHZpZXcgPSBvdmVybGF5UGFnZSgpLT5tYWluRnJhbWUoKS52aWV3KCk7CiAgICAgdmlldy0+
dXBkYXRlTGF5b3V0QW5kU3R5bGVJZk5lZWRlZFJlY3Vyc2l2ZSgpOwogICAgIHZpZXctPnBhaW50
KGNvbnRleHQsIEludFJlY3QoMCwgMCwgdmlldy0+d2lkdGgoKSwgdmlldy0+aGVpZ2h0KCkpKTsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcAppbmRleCAzZTYyNDZhNTU0ZTY5N2E2ODViZjdm
MmI0ZjBiNTg1MWU4NTcwNzViLi4yMGQ3NjE1ZmVmMDA1ZGFiMzhkNzQ0YzMyYjlmMTZlY2JiZDEy
YjlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCkBAIC0yMDQ2LDkgKzIwNDYsNyBAQCBi
b29sIEZyYW1lVmlldzo6c2hvdWxkU2V0Q3Vyc29yKCkgY29uc3QKIAogYm9vbCBGcmFtZVZpZXc6
OnVzZURhcmtBcHBlYXJhbmNlKCkgY29uc3QKIHsKLSAgICBBU1NFUlQoZnJhbWUoKS5kb2N1bWVu
dCgpKTsKLSAgICBhdXRvJiBkb2N1bWVudCA9ICpmcmFtZSgpLmRvY3VtZW50KCk7Ci0gICAgcmV0
dXJuIGRvY3VtZW50LnVzZURhcmtBcHBlYXJhbmNlKCk7CisgICAgcmV0dXJuIHJlbmRlclZpZXco
KS0+dXNlRGFya0FwcGVhcmFuY2UoKTsKIH0KIAogYm9vbCBGcmFtZVZpZXc6OnNjcm9sbENvbnRl
bnRzRmFzdFBhdGgoY29uc3QgSW50U2l6ZSYgc2Nyb2xsRGVsdGEsIGNvbnN0IEludFJlY3QmIHJl
Y3RUb1Njcm9sbCwgY29uc3QgSW50UmVjdCYgY2xpcFJlY3QpCkBAIC0zOTExLDggKzM5MDksNyBA
QCB2b2lkIEZyYW1lVmlldzo6cGFpbnRTY3JvbGxDb3JuZXIoR3JhcGhpY3NDb250ZXh0JiBjb250
ZXh0LCBjb25zdCBJbnRSZWN0JiBjb3JuZQogI2lmIFBMQVRGT1JNKE1BQykKICAgICAvLyBJZiBk
YXJrIGFwcGVhcmFuY2UgaXMgdXNlZCBvciB0aGUgb3ZlcmxheSBzdHlsZSBpcyBsaWdodCAoYmVj
YXVzZSBvZiBhIGRhcmsgcGFnZSBiYWNrZ3JvdW5kKSwgc2V0IHRoZSBkYXJrIGFwcHBlYXJhbmNl
LgogICAgIC8vIEtlZXAgdGhpcyBpbiBzeW5jIHdpdGggU2Nyb2xsQW5pbWF0b3JNYWMncyBlZmZl
Y3RpdmVBcHBlYXJhbmNlRm9yU2Nyb2xsZXJJbXA6LgotICAgIGF1dG8qIGRvY3VtZW50ID0gZnJh
bWUoKS5kb2N1bWVudCgpOwotICAgIGJvb2wgdXNlRGFya0FwcGVhcmFuY2UgPSAoZG9jdW1lbnQg
JiYgZG9jdW1lbnQtPnVzZURhcmtBcHBlYXJhbmNlKCkpIHx8IHNjcm9sbGJhck92ZXJsYXlTdHls
ZSgpID09IFdlYkNvcmU6OlNjcm9sbGJhck92ZXJsYXlTdHlsZUxpZ2h0OworICAgIGJvb2wgdXNl
RGFya0FwcGVhcmFuY2UgPSByZW5kZXJWaWV3KCktPnVzZURhcmtBcHBlYXJhbmNlKCkgfHwgc2Ny
b2xsYmFyT3ZlcmxheVN0eWxlKCkgPT0gV2ViQ29yZTo6U2Nyb2xsYmFyT3ZlcmxheVN0eWxlTGln
aHQ7CiAgICAgTG9jYWxEZWZhdWx0U3lzdGVtQXBwZWFyYW5jZSBsb2NhbEFwcGVhcmFuY2UodXNl
RGFya0FwcGVhcmFuY2UpOwogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21hYy9EcmFnSW1hZ2VNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMv
RHJhZ0ltYWdlTWFjLm1tCmluZGV4IDExY2RhMjRkMGM5NmE3MWFjOGQxYjIyMjI1MWFjZDllMzNl
OGYyMTAuLjljMzBmNzljODRkM2M3ZDg2NWQ0MTE1NTM5MTM2N2M4ZjQ0NGE2ZGEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9EcmFnSW1hZ2VNYWMubW0KKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL0RyYWdJbWFnZU1hYy5tbQpAQCAtMzAwLDcgKzMwMCw3
IEBAIERyYWdJbWFnZVJlZiBjcmVhdGVEcmFnSW1hZ2VGb3JMaW5rKEVsZW1lbnQmIGVsZW1lbnQs
IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHRpCiB7CiAgICAgTGlua0ltYWdlTGF5b3V0IGxheW91
dCh1cmwsIHRpdGxlKTsKIAotICAgIExvY2FsRGVmYXVsdFN5c3RlbUFwcGVhcmFuY2UgbG9jYWxB
cHBlYXJhbmNlKGVsZW1lbnQuZG9jdW1lbnQoKS51c2VEYXJrQXBwZWFyYW5jZSgpKTsKKyAgICBM
b2NhbERlZmF1bHRTeXN0ZW1BcHBlYXJhbmNlIGxvY2FsQXBwZWFyYW5jZShlbGVtZW50LmRvY3Vt
ZW50KCkudXNlRGFya0FwcGVhcmFuY2UoZWxlbWVudC5jb21wdXRlZFN0eWxlKCkpKTsKIAogICAg
IGF1dG8gaW1hZ2VTaXplID0gbGF5b3V0LmJvdW5kaW5nUmVjdC5zaXplKCk7CiAjaWYgX19NQUNf
T1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA8IDEwMTMwMApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL0lubGluZUZsb3dCb3guY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL0lubGluZUZsb3dCb3guY3BwCmluZGV4IGQ3NDU4MTE4YTJiODVlMTQyYzNkZDA1NWFhZWRj
ODJjZGZmZTVjODUuLjAzZTQxZTcxNTkyMDBhYWNmMmNmODk4YmQyYjJmOWMyODYwNmFiOTUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVGbG93Qm94LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lRmxvd0JveC5jcHAKQEAgLTEzNzIsNyAr
MTM3Miw3IEBAIHZvaWQgSW5saW5lRmxvd0JveDo6cGFpbnRCb3hEZWNvcmF0aW9ucyhQYWludElu
Zm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQmCiAgICAgQ29sb3IgY29sb3IgPSBsaW5l
U3R5bGUudmlzaXRlZERlcGVuZGVudENvbG9yKENTU1Byb3BlcnR5QmFja2dyb3VuZENvbG9yKTsK
IAogICAgIENvbXBvc2l0ZU9wZXJhdG9yIGNvbXBvc2l0ZU9wID0gQ29tcG9zaXRlU291cmNlT3Zl
cjsKLSAgICBpZiAocmVuZGVyZXIoKS5kb2N1bWVudCgpLnNldHRpbmdzKCkucHVuY2hPdXRXaGl0
ZUJhY2tncm91bmRzSW5EYXJrTW9kZSgpICYmIENvbG9yOjppc1doaXRlQ29sb3IoY29sb3IpICYm
IHJlbmRlcmVyKCkudGhlbWUoKS51c2luZ0RhcmtBcHBlYXJhbmNlKHJlbmRlcmVyKCkpKQorICAg
IGlmIChyZW5kZXJlcigpLmRvY3VtZW50KCkuc2V0dGluZ3MoKS5wdW5jaE91dFdoaXRlQmFja2dy
b3VuZHNJbkRhcmtNb2RlKCkgJiYgQ29sb3I6OmlzV2hpdGVDb2xvcihjb2xvcikgJiYgcmVuZGVy
ZXIoKS51c2VEYXJrQXBwZWFyYW5jZSgpKQogICAgICAgICBjb21wb3NpdGVPcCA9IENvbXBvc2l0
ZURlc3RpbmF0aW9uT3V0OwogCiAgICAgY29sb3IgPSBsaW5lU3R5bGUuY29sb3JCeUFwcGx5aW5n
Q29sb3JGaWx0ZXIoY29sb3IpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L0lubGluZVRleHRCb3guY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZVRleHRC
b3guY3BwCmluZGV4IDUwMzllMmFhYWNlYjE5NTkzYmU5NDk3ZTllZTJiZjA3OTNmNzk5NzMuLjA4
ZWIwMzk3NmMyZTE2YmQ0OTlhNzA2ZjBiMGIxODQ5NTU2YzI5YWUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVUZXh0Qm94LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvSW5saW5lVGV4dEJveC5jcHAKQEAgLTcxNiw3ICs3MTYsNyBAQCB2b2lkIElu
bGluZVRleHRCb3g6OnBhaW50UGxhdGZvcm1Eb2N1bWVudE1hcmtlcihHcmFwaGljc0NvbnRleHQm
IGNvbnRleHQsIGNvbnN0CiAgICAgYXV0byBib3VuZHMgPSBjYWxjdWxhdGVEb2N1bWVudE1hcmtl
ckJvdW5kcyhtYXJrZWRUZXh0KTsKIAogICAgIGF1dG8gbGluZVN0eWxlRm9yTWFya2VkVGV4dFR5
cGUgPSBbJl0oKSAtPiBEb2N1bWVudE1hcmtlckxpbmVTdHlsZSB7Ci0gICAgICAgIGJvb2wgc2hv
dWxkVXNlRGFya0FwcGVhcmFuY2UgPSByZW5kZXJlcigpLmRvY3VtZW50KCkudXNlRGFya0FwcGVh
cmFuY2UoKTsKKyAgICAgICAgYm9vbCBzaG91bGRVc2VEYXJrQXBwZWFyYW5jZSA9IHJlbmRlcmVy
KCkudXNlRGFya0FwcGVhcmFuY2UoKTsKICAgICAgICAgc3dpdGNoIChtYXJrZWRUZXh0LnR5cGUp
IHsKICAgICAgICAgY2FzZSBNYXJrZWRUZXh0OjpTcGVsbGluZ0Vycm9yOgogICAgICAgICAgICAg
cmV0dXJuIHsgRG9jdW1lbnRNYXJrZXJMaW5lU3R5bGU6Ok1vZGU6OlNwZWxsaW5nLCBzaG91bGRV
c2VEYXJrQXBwZWFyYW5jZSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckJveC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNwcApp
bmRleCBjYTZlN2MxNDVmYmZlMjdlMDc0Y2IxMWZjZTM4YTIyODM2MDAzMDYwLi4wZjEyYWQ4MGI5
NGQwYWU0ZWYzMmUyYjM0MTIwYWUyOTEzOWNhN2ZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyQm94LmNwcApAQCAtMTIwNyw3ICsxMjA3LDcgQEAgdm9pZCBSZW5kZXJCb3g6OnBhaW50
Um9vdEJveEZpbGxMYXllcnMoY29uc3QgUGFpbnRJbmZvJiBwYWludEluZm8pCiAgICAgYXV0byBj
b2xvciA9IHN0eWxlLnZpc2l0ZWREZXBlbmRlbnRDb2xvcihDU1NQcm9wZXJ0eUJhY2tncm91bmRD
b2xvcik7CiAKICAgICBDb21wb3NpdGVPcGVyYXRvciBjb21wb3NpdGVPcCA9IENvbXBvc2l0ZVNv
dXJjZU92ZXI7Ci0gICAgaWYgKGRvY3VtZW50KCkuc2V0dGluZ3MoKS5wdW5jaE91dFdoaXRlQmFj
a2dyb3VuZHNJbkRhcmtNb2RlKCkgJiYgQ29sb3I6OmlzV2hpdGVDb2xvcihjb2xvcikgJiYgdGhl
bWUoKS51c2luZ0RhcmtBcHBlYXJhbmNlKCp0aGlzKSkKKyAgICBpZiAoZG9jdW1lbnQoKS5zZXR0
aW5ncygpLnB1bmNoT3V0V2hpdGVCYWNrZ3JvdW5kc0luRGFya01vZGUoKSAmJiBDb2xvcjo6aXNX
aGl0ZUNvbG9yKGNvbG9yKSAmJiB1c2VEYXJrQXBwZWFyYW5jZSgpKQogICAgICAgICBjb21wb3Np
dGVPcCA9IENvbXBvc2l0ZURlc3RpbmF0aW9uT3V0OwogCiAgICAgcGFpbnRGaWxsTGF5ZXJzKHBh
aW50SW5mbywgc3R5bGUuY29sb3JCeUFwcGx5aW5nQ29sb3JGaWx0ZXIoY29sb3IpLCBzdHlsZS5i
YWNrZ3JvdW5kTGF5ZXJzKCksIHZpZXcoKS5iYWNrZ3JvdW5kUmVjdCgpLCBCYWNrZ3JvdW5kQmxl
ZWROb25lLCBjb21wb3NpdGVPcCwgcm9vdEJhY2tncm91bmRSZW5kZXJlcik7CkBAIC0xMzQxLDcg
KzEzNDEsNyBAQCB2b2lkIFJlbmRlckJveDo6cGFpbnRCYWNrZ3JvdW5kKGNvbnN0IFBhaW50SW5m
byYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRSZWN0JiBwYQogICAgIENvbG9yIGJhY2tncm91bmRD
b2xvciA9IHN0eWxlKCkudmlzaXRlZERlcGVuZGVudENvbG9yKENTU1Byb3BlcnR5QmFja2dyb3Vu
ZENvbG9yKTsKIAogICAgIENvbXBvc2l0ZU9wZXJhdG9yIGNvbXBvc2l0ZU9wID0gQ29tcG9zaXRl
U291cmNlT3ZlcjsKLSAgICBpZiAoZG9jdW1lbnQoKS5zZXR0aW5ncygpLnB1bmNoT3V0V2hpdGVC
YWNrZ3JvdW5kc0luRGFya01vZGUoKSAmJiBDb2xvcjo6aXNXaGl0ZUNvbG9yKGJhY2tncm91bmRD
b2xvcikgJiYgdGhlbWUoKS51c2luZ0RhcmtBcHBlYXJhbmNlKCp0aGlzKSkKKyAgICBpZiAoZG9j
dW1lbnQoKS5zZXR0aW5ncygpLnB1bmNoT3V0V2hpdGVCYWNrZ3JvdW5kc0luRGFya01vZGUoKSAm
JiBDb2xvcjo6aXNXaGl0ZUNvbG9yKGJhY2tncm91bmRDb2xvcikgJiYgdXNlRGFya0FwcGVhcmFu
Y2UoKSkKICAgICAgICAgY29tcG9zaXRlT3AgPSBDb21wb3NpdGVEZXN0aW5hdGlvbk91dDsKIAog
ICAgIHBhaW50RmlsbExheWVycyhwYWludEluZm8sIHN0eWxlKCkuY29sb3JCeUFwcGx5aW5nQ29s
b3JGaWx0ZXIoYmFja2dyb3VuZENvbG9yKSwgc3R5bGUoKS5iYWNrZ3JvdW5kTGF5ZXJzKCksIHBh
aW50UmVjdCwgYmxlZWRBdm9pZGFuY2UsIGNvbXBvc2l0ZU9wKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJFbGVtZW50LmNwcAppbmRleCBiZjk3YzA4MjI1Y2JhOTY4MjcxMjMyOGFk
NThlOTYwNzM4MDEzOWEwLi45MDhiODVhODhkNTRiOTM2YjcxNWFiOWFhNjQzMTY3NDQ0MzNkYjQx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVsZW1lbnQuY3BwCkBAIC0xMzc0
LDggKzEzNzQsOCBAQCBDb2xvciBSZW5kZXJFbGVtZW50OjpzZWxlY3Rpb25Db2xvcihDU1NQcm9w
ZXJ0eUlEIGNvbG9yUHJvcGVydHkpIGNvbnN0CiAgICAgfQogCiAgICAgaWYgKGZyYW1lKCkuc2Vs
ZWN0aW9uKCkuaXNGb2N1c2VkQW5kQWN0aXZlKCkpCi0gICAgICAgIHJldHVybiB0aGVtZSgpLmFj
dGl2ZVNlbGVjdGlvbkZvcmVncm91bmRDb2xvcihkb2N1bWVudCgpLnN0eWxlQ29sb3JPcHRpb25z
KCkpOwotICAgIHJldHVybiB0aGVtZSgpLmluYWN0aXZlU2VsZWN0aW9uRm9yZWdyb3VuZENvbG9y
KGRvY3VtZW50KCkuc3R5bGVDb2xvck9wdGlvbnMoKSk7CisgICAgICAgIHJldHVybiB0aGVtZSgp
LmFjdGl2ZVNlbGVjdGlvbkZvcmVncm91bmRDb2xvcihzdHlsZUNvbG9yT3B0aW9ucygpKTsKKyAg
ICByZXR1cm4gdGhlbWUoKS5pbmFjdGl2ZVNlbGVjdGlvbkZvcmVncm91bmRDb2xvcihzdHlsZUNv
bG9yT3B0aW9ucygpKTsKIH0KIAogc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBSZW5kZXJF
bGVtZW50OjpzZWxlY3Rpb25Qc2V1ZG9TdHlsZSgpIGNvbnN0CkBAIC0xNDA5LDE1ICsxNDA5LDE1
IEBAIENvbG9yIFJlbmRlckVsZW1lbnQ6OnNlbGVjdGlvbkJhY2tncm91bmRDb2xvcigpIGNvbnN0
CiAgICAgICAgIHJldHVybiBDb2xvcigpOwogCiAgICAgaWYgKGZyYW1lKCkuc2VsZWN0aW9uKCku
c2hvdWxkU2hvd0Jsb2NrQ3Vyc29yKCkgJiYgZnJhbWUoKS5zZWxlY3Rpb24oKS5pc0NhcmV0KCkp
Ci0gICAgICAgIHJldHVybiB0aGVtZSgpLnRyYW5zZm9ybVNlbGVjdGlvbkJhY2tncm91bmRDb2xv
cihzdHlsZSgpLnZpc2l0ZWREZXBlbmRlbnRDb2xvcldpdGhDb2xvckZpbHRlcihDU1NQcm9wZXJ0
eUNvbG9yKSwgZG9jdW1lbnQoKS5zdHlsZUNvbG9yT3B0aW9ucygpKTsKKyAgICAgICAgcmV0dXJu
IHRoZW1lKCkudHJhbnNmb3JtU2VsZWN0aW9uQmFja2dyb3VuZENvbG9yKHN0eWxlKCkudmlzaXRl
ZERlcGVuZGVudENvbG9yV2l0aENvbG9yRmlsdGVyKENTU1Byb3BlcnR5Q29sb3IpLCBzdHlsZUNv
bG9yT3B0aW9ucygpKTsKIAogICAgIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4gcHNldWRv
U3R5bGUgPSBzZWxlY3Rpb25Qc2V1ZG9TdHlsZSgpOwogICAgIGlmIChwc2V1ZG9TdHlsZSAmJiBw
c2V1ZG9TdHlsZS0+dmlzaXRlZERlcGVuZGVudENvbG9yV2l0aENvbG9yRmlsdGVyKENTU1Byb3Bl
cnR5QmFja2dyb3VuZENvbG9yKS5pc1ZhbGlkKCkpCi0gICAgICAgIHJldHVybiB0aGVtZSgpLnRy
YW5zZm9ybVNlbGVjdGlvbkJhY2tncm91bmRDb2xvcihwc2V1ZG9TdHlsZS0+dmlzaXRlZERlcGVu
ZGVudENvbG9yV2l0aENvbG9yRmlsdGVyKENTU1Byb3BlcnR5QmFja2dyb3VuZENvbG9yKSwgZG9j
dW1lbnQoKS5zdHlsZUNvbG9yT3B0aW9ucygpKTsKKyAgICAgICAgcmV0dXJuIHRoZW1lKCkudHJh
bnNmb3JtU2VsZWN0aW9uQmFja2dyb3VuZENvbG9yKHBzZXVkb1N0eWxlLT52aXNpdGVkRGVwZW5k
ZW50Q29sb3JXaXRoQ29sb3JGaWx0ZXIoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQ29sb3IpLCBzdHls
ZUNvbG9yT3B0aW9ucygpKTsKIAogICAgIGlmIChmcmFtZSgpLnNlbGVjdGlvbigpLmlzRm9jdXNl
ZEFuZEFjdGl2ZSgpKQotICAgICAgICByZXR1cm4gdGhlbWUoKS5hY3RpdmVTZWxlY3Rpb25CYWNr
Z3JvdW5kQ29sb3IoZG9jdW1lbnQoKS5zdHlsZUNvbG9yT3B0aW9ucygpKTsKLSAgICByZXR1cm4g
dGhlbWUoKS5pbmFjdGl2ZVNlbGVjdGlvbkJhY2tncm91bmRDb2xvcihkb2N1bWVudCgpLnN0eWxl
Q29sb3JPcHRpb25zKCkpOworICAgICAgICByZXR1cm4gdGhlbWUoKS5hY3RpdmVTZWxlY3Rpb25C
YWNrZ3JvdW5kQ29sb3Ioc3R5bGVDb2xvck9wdGlvbnMoKSk7CisgICAgcmV0dXJuIHRoZW1lKCku
aW5hY3RpdmVTZWxlY3Rpb25CYWNrZ3JvdW5kQ29sb3Ioc3R5bGVDb2xvck9wdGlvbnMoKSk7CiB9
CiAKIGJvb2wgUmVuZGVyRWxlbWVudDo6Z2V0TGVhZGluZ0Nvcm5lcihGbG9hdFBvaW50JiBwb2lu
dCwgYm9vbCYgaW5zaWRlRml4ZWQpIGNvbnN0CkBAIC0xODM4LDkgKzE4MzgsOSBAQCB2b2lkIFJl
bmRlckVsZW1lbnQ6OnBhaW50Rm9jdXNSaW5nKFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBS
ZW5kZXJTdHlsZSYgc3R5bAogICAgICAgICAgICAgZm9yIChhdXRvIHJlY3QgOiBwaXhlbFNuYXBw
ZWRGb2N1c1JpbmdSZWN0cykKICAgICAgICAgICAgICAgICBwYXRoLmFkZFJlY3QocmVjdCk7CiAg
ICAgICAgIH0KLSAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQoKS5kcmF3Rm9jdXNSaW5nKHBhdGgs
IHBhZ2UoKS5mb2N1c0NvbnRyb2xsZXIoKS50aW1lU2luY2VGb2N1c1dhc1NldCgpLnNlY29uZHMo
KSwgbmVlZHNSZXBhaW50LCBSZW5kZXJUaGVtZTo6Zm9jdXNSaW5nQ29sb3IoZG9jdW1lbnQoKS5z
dHlsZUNvbG9yT3B0aW9ucygpKSk7CisgICAgICAgIHBhaW50SW5mby5jb250ZXh0KCkuZHJhd0Zv
Y3VzUmluZyhwYXRoLCBwYWdlKCkuZm9jdXNDb250cm9sbGVyKCkudGltZVNpbmNlRm9jdXNXYXNT
ZXQoKS5zZWNvbmRzKCksIG5lZWRzUmVwYWludCwgUmVuZGVyVGhlbWU6OmZvY3VzUmluZ0NvbG9y
KHN0eWxlQ29sb3JPcHRpb25zKCkpKTsKICAgICB9IGVsc2UKLSAgICAgICAgcGFpbnRJbmZvLmNv
bnRleHQoKS5kcmF3Rm9jdXNSaW5nKHBpeGVsU25hcHBlZEZvY3VzUmluZ1JlY3RzLCBwYWdlKCku
Zm9jdXNDb250cm9sbGVyKCkudGltZVNpbmNlRm9jdXNXYXNTZXQoKS5zZWNvbmRzKCksIG5lZWRz
UmVwYWludCwgUmVuZGVyVGhlbWU6OmZvY3VzUmluZ0NvbG9yKGRvY3VtZW50KCkuc3R5bGVDb2xv
ck9wdGlvbnMoKSkpOworICAgICAgICBwYWludEluZm8uY29udGV4dCgpLmRyYXdGb2N1c1Jpbmco
cGl4ZWxTbmFwcGVkRm9jdXNSaW5nUmVjdHMsIHBhZ2UoKS5mb2N1c0NvbnRyb2xsZXIoKS50aW1l
U2luY2VGb2N1c1dhc1NldCgpLnNlY29uZHMoKSwgbmVlZHNSZXBhaW50LCBSZW5kZXJUaGVtZTo6
Zm9jdXNSaW5nQ29sb3Ioc3R5bGVDb2xvck9wdGlvbnMoKSkpOwogICAgIGlmIChuZWVkc1JlcGFp
bnQpCiAgICAgICAgIHBhZ2UoKS5mb2N1c0NvbnRyb2xsZXIoKS5zZXRGb2N1c2VkRWxlbWVudE5l
ZWRzUmVwYWludCgpOwogI2Vsc2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJJbWFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2Uu
Y3BwCmluZGV4IDgxMDllYmZmZDIxZWQ3YzNlNGRhNmFmMjhkOGI5ZDBjMzUwYTM5MTMuLmEwZDJi
N2I0N2U2YzI0NzdmODcxNjE0Mzk5MGUyZGQzZDY1MTdhOWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckltYWdlLmNwcApAQCAtNTc0LDcgKzU3NCw3IEBAIHZvaWQgUmVuZGVySW1h
Z2U6OnBhaW50QXJlYUVsZW1lbnRGb2N1c1JpbmcoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0
IExheW91dFBvCiAKICNpZiBQTEFURk9STShNQUMpCiAgICAgYm9vbCBuZWVkc1JlcGFpbnQ7Ci0g
ICAgcGFpbnRJbmZvLmNvbnRleHQoKS5kcmF3Rm9jdXNSaW5nKHBhdGgsIHBhZ2UoKS5mb2N1c0Nv
bnRyb2xsZXIoKS50aW1lU2luY2VGb2N1c1dhc1NldCgpLnNlY29uZHMoKSwgbmVlZHNSZXBhaW50
LCBSZW5kZXJUaGVtZTo6Zm9jdXNSaW5nQ29sb3IoZG9jdW1lbnQoKS5zdHlsZUNvbG9yT3B0aW9u
cygpKSk7CisgICAgcGFpbnRJbmZvLmNvbnRleHQoKS5kcmF3Rm9jdXNSaW5nKHBhdGgsIHBhZ2Uo
KS5mb2N1c0NvbnRyb2xsZXIoKS50aW1lU2luY2VGb2N1c1dhc1NldCgpLnNlY29uZHMoKSwgbmVl
ZHNSZXBhaW50LCBSZW5kZXJUaGVtZTo6Zm9jdXNSaW5nQ29sb3Ioc3R5bGVDb2xvck9wdGlvbnMo
KSkpOwogICAgIGlmIChuZWVkc1JlcGFpbnQpCiAgICAgICAgIHBhZ2UoKS5mb2N1c0NvbnRyb2xs
ZXIoKS5zZXRGb2N1c2VkRWxlbWVudE5lZWRzUmVwYWludCgpOwogI2Vsc2UKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHAKaW5kZXggODhkNmUwMWRk
NmVmYzZlMmY3YTliYzI0MzM5ZDQ4NDRhZGYyYWQ3YS4uYmI3YjE5ZWJjOGNhNjFhNDJiNGYwYjM5
MWNjZTcxZTQwMGQwNDU3NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckxheWVyQmFja2luZy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckxheWVyQmFja2luZy5jcHAKQEAgLTI1NDEsNyArMjU0MSw3IEBAIHZvaWQgUmVuZGVyTGF5ZXJC
YWNraW5nOjpwYWludENvbnRlbnRzKGNvbnN0IEdyYXBoaWNzTGF5ZXIqIGdyYXBoaWNzTGF5ZXIs
IEdyYXBoCiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKE1BQykKLSAgICBMb2NhbERlZmF1bHRTeXN0
ZW1BcHBlYXJhbmNlIGxvY2FsQXBwZWFyYW5jZShyZW5kZXJlcigpLmRvY3VtZW50KCkudXNlRGFy
a0FwcGVhcmFuY2UoKSk7CisgICAgTG9jYWxEZWZhdWx0U3lzdGVtQXBwZWFyYW5jZSBsb2NhbEFw
cGVhcmFuY2UocmVuZGVyZXIoKS51c2VEYXJrQXBwZWFyYW5jZSgpKTsKICNlbmRpZgogCiAgICAg
Ly8gVGhlIGRpcnR5UmVjdCBpcyBpbiB0aGUgY29vcmRzIG9mIHRoZSBwYWludGluZyByb290Lgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRv
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNw
cAppbmRleCA5NTZkM2E1N2RkMDUwOTczNDdjZmYxMmZlNDdhZWI2Mzc4Y2M2NjM5Li41OWJmOGNm
NzU2YzIzYTYwMGVjN2JjN2I0MTQxOTU4ZTFmNDU0MDZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNwcApAQCAtMjc4Miw3ICsyNzgy
LDcgQEAgdm9pZCBwYWludFNjcm9sbGJhcihTY3JvbGxiYXIqIHNjcm9sbGJhciwgR3JhcGhpY3ND
b250ZXh0JiBjb250ZXh0LCBjb25zdCBJbnRSZWMKIHZvaWQgUmVuZGVyTGF5ZXJDb21wb3NpdG9y
OjpwYWludENvbnRlbnRzKGNvbnN0IEdyYXBoaWNzTGF5ZXIqIGdyYXBoaWNzTGF5ZXIsIEdyYXBo
aWNzQ29udGV4dCYgY29udGV4dCwgR3JhcGhpY3NMYXllclBhaW50aW5nUGhhc2UsIGNvbnN0IEZs
b2F0UmVjdCYgY2xpcCwgR3JhcGhpY3NMYXllclBhaW50QmVoYXZpb3IpCiB7CiAjaWYgUExBVEZP
Uk0oTUFDKQotICAgIExvY2FsRGVmYXVsdFN5c3RlbUFwcGVhcmFuY2UgbG9jYWxBcHBlYXJhbmNl
KG1fcmVuZGVyVmlldy5kb2N1bWVudCgpLnVzZURhcmtBcHBlYXJhbmNlKCkpOworICAgIExvY2Fs
RGVmYXVsdFN5c3RlbUFwcGVhcmFuY2UgbG9jYWxBcHBlYXJhbmNlKG1fcmVuZGVyVmlldy51c2VE
YXJrQXBwZWFyYW5jZSgpKTsKICNlbmRpZgogCiAgICAgSW50UmVjdCBwaXhlbFNuYXBwZWRSZWN0
Rm9ySW50ZWdyYWxQb3NpdGlvbmVkSXRlbXMgPSBzbmFwcGVkSW50UmVjdChMYXlvdXRSZWN0KGNs
aXApKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0Qm94
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0Qm94LmNwcAppbmRleCBl
Y2Q1NTE2NWZmYzgxOWM1YjMyNmIzZTc2YTI1MDQ4ZDE1MDRhYjFkLi41MjAwODEzZTE5NTY4ZGIz
OGVmN2Q1NmNmOGU4MGM2NDYzMTBhMDUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyTGlzdEJveC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckxpc3RCb3guY3BwCkBAIC00MjgsMTAgKzQyOCwxMCBAQCB2b2lkIFJlbmRlckxpc3RCb3g6
OnBhaW50SXRlbUZvcmVncm91bmQoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFBv
aW50JgogICAgIENvbG9yIHRleHRDb2xvciA9IGl0ZW1TdHlsZS52aXNpdGVkRGVwZW5kZW50Q29s
b3JXaXRoQ29sb3JGaWx0ZXIoQ1NTUHJvcGVydHlDb2xvcik7CiAgICAgaWYgKGlzT3B0aW9uRWxl
bWVudCAmJiBkb3duY2FzdDxIVE1MT3B0aW9uRWxlbWVudD4oKmxpc3RJdGVtRWxlbWVudCkuc2Vs
ZWN0ZWQoKSkgewogICAgICAgICBpZiAoZnJhbWUoKS5zZWxlY3Rpb24oKS5pc0ZvY3VzZWRBbmRB
Y3RpdmUoKSAmJiBkb2N1bWVudCgpLmZvY3VzZWRFbGVtZW50KCkgPT0gJnNlbGVjdEVsZW1lbnQo
KSkKLSAgICAgICAgICAgIHRleHRDb2xvciA9IHRoZW1lKCkuYWN0aXZlTGlzdEJveFNlbGVjdGlv
bkZvcmVncm91bmRDb2xvcihkb2N1bWVudCgpLnN0eWxlQ29sb3JPcHRpb25zKCkpOworICAgICAg
ICAgICAgdGV4dENvbG9yID0gdGhlbWUoKS5hY3RpdmVMaXN0Qm94U2VsZWN0aW9uRm9yZWdyb3Vu
ZENvbG9yKHN0eWxlQ29sb3JPcHRpb25zKCkpOwogICAgICAgICAvLyBIb25vciB0aGUgZm9yZWdy
b3VuZCBjb2xvciBmb3IgZGlzYWJsZWQgaXRlbXMKICAgICAgICAgZWxzZSBpZiAoIWxpc3RJdGVt
RWxlbWVudC0+aXNEaXNhYmxlZEZvcm1Db250cm9sKCkgJiYgIXNlbGVjdEVsZW1lbnQoKS5pc0Rp
c2FibGVkRm9ybUNvbnRyb2woKSkKLSAgICAgICAgICAgIHRleHRDb2xvciA9IHRoZW1lKCkuaW5h
Y3RpdmVMaXN0Qm94U2VsZWN0aW9uRm9yZWdyb3VuZENvbG9yKGRvY3VtZW50KCkuc3R5bGVDb2xv
ck9wdGlvbnMoKSk7CisgICAgICAgICAgICB0ZXh0Q29sb3IgPSB0aGVtZSgpLmluYWN0aXZlTGlz
dEJveFNlbGVjdGlvbkZvcmVncm91bmRDb2xvcihzdHlsZUNvbG9yT3B0aW9ucygpKTsKICAgICB9
CiAKICAgICBwYWludEluZm8uY29udGV4dCgpLnNldEZpbGxDb2xvcih0ZXh0Q29sb3IpOwpAQCAt
NDYxLDkgKzQ2MSw5IEBAIHZvaWQgUmVuZGVyTGlzdEJveDo6cGFpbnRJdGVtQmFja2dyb3VuZChQ
YWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQmCiAgICAgQ29sb3IgYmFja0Nv
bG9yOwogICAgIGlmIChpczxIVE1MT3B0aW9uRWxlbWVudD4oKmxpc3RJdGVtRWxlbWVudCkgJiYg
ZG93bmNhc3Q8SFRNTE9wdGlvbkVsZW1lbnQ+KCpsaXN0SXRlbUVsZW1lbnQpLnNlbGVjdGVkKCkp
IHsKICAgICAgICAgaWYgKGZyYW1lKCkuc2VsZWN0aW9uKCkuaXNGb2N1c2VkQW5kQWN0aXZlKCkg
JiYgZG9jdW1lbnQoKS5mb2N1c2VkRWxlbWVudCgpID09ICZzZWxlY3RFbGVtZW50KCkpCi0gICAg
ICAgICAgICBiYWNrQ29sb3IgPSB0aGVtZSgpLmFjdGl2ZUxpc3RCb3hTZWxlY3Rpb25CYWNrZ3Jv
dW5kQ29sb3IoZG9jdW1lbnQoKS5zdHlsZUNvbG9yT3B0aW9ucygpKTsKKyAgICAgICAgICAgIGJh
Y2tDb2xvciA9IHRoZW1lKCkuYWN0aXZlTGlzdEJveFNlbGVjdGlvbkJhY2tncm91bmRDb2xvcihz
dHlsZUNvbG9yT3B0aW9ucygpKTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgYmFja0NvbG9y
ID0gdGhlbWUoKS5pbmFjdGl2ZUxpc3RCb3hTZWxlY3Rpb25CYWNrZ3JvdW5kQ29sb3IoZG9jdW1l
bnQoKS5zdHlsZUNvbG9yT3B0aW9ucygpKTsKKyAgICAgICAgICAgIGJhY2tDb2xvciA9IHRoZW1l
KCkuaW5hY3RpdmVMaXN0Qm94U2VsZWN0aW9uQmFja2dyb3VuZENvbG9yKHN0eWxlQ29sb3JPcHRp
b25zKCkpOwogICAgIH0gZWxzZQogICAgICAgICBiYWNrQ29sb3IgPSBpdGVtU3R5bGUudmlzaXRl
ZERlcGVuZGVudENvbG9yV2l0aENvbG9yRmlsdGVyKENTU1Byb3BlcnR5QmFja2dyb3VuZENvbG9y
KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcAppbmRleCA3NjQ0
NDUwZjA4MDc3NjhjNTMxZmUyYTI3ODliMWViZmYyNjAwOTk2Li40MjU1MTA1ZTI0NGZkZDUxN2Yz
NDk0YmFiNjk5MjhiMzIzOTdhNDZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
T2JqZWN0LmNwcApAQCAtMTgwMSw2ICsxODAxLDE2IEBAIEN1cnNvckRpcmVjdGl2ZSBSZW5kZXJP
YmplY3Q6OmdldEN1cnNvcihjb25zdCBMYXlvdXRQb2ludCYsIEN1cnNvciYpIGNvbnN0CiAgICAg
cmV0dXJuIFNldEN1cnNvckJhc2VkT25TdHlsZTsKIH0KIAorYm9vbCBSZW5kZXJPYmplY3Q6OnVz
ZURhcmtBcHBlYXJhbmNlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gZG9jdW1lbnQoKS51c2VEYXJr
QXBwZWFyYW5jZSgmc3R5bGUoKSk7Cit9CisKK09wdGlvblNldDxTdHlsZUNvbG9yOjpPcHRpb25z
PiBSZW5kZXJPYmplY3Q6OnN0eWxlQ29sb3JPcHRpb25zKCkgY29uc3QKK3sKKyAgICByZXR1cm4g
ZG9jdW1lbnQoKS5zdHlsZUNvbG9yT3B0aW9ucygmc3R5bGUoKSk7Cit9CisKIGJvb2wgUmVuZGVy
T2JqZWN0OjpjYW5VcGRhdGVTZWxlY3Rpb25PblJvb3RMaW5lQm94ZXMoKQogewogICAgIGlmIChu
ZWVkc0xheW91dCgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ck9iamVjdC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5oCmluZGV4
IDEzYjM2ZDY3NjAyYTA1YmViNDZlYjU3NzM3MThkODVhZGE1ODI4YTAuLjJkY2U5ZGNjNTY5MTMw
OTFmNzI5OTQ3ZmM2ZGY3MjY0YThlNDNmNWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJPYmplY3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyT2JqZWN0LmgKQEAgLTE3Niw2ICsxNzYsOSBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBs
b2NhdGVFbmNsb3NpbmdGcmFnbWVudGVkRmxvdygpOwogICAgIH0KIAorICAgIFdFQkNPUkVfRVhQ
T1JUIGJvb2wgdXNlRGFya0FwcGVhcmFuY2UoKSBjb25zdDsKKyAgICBPcHRpb25TZXQ8U3R5bGVD
b2xvcjo6T3B0aW9ucz4gc3R5bGVDb2xvck9wdGlvbnMoKSBjb25zdDsKKwogI2lmbmRlZiBOREVC
VUcKICAgICB2b2lkIHNldEhhc0FYT2JqZWN0KGJvb2wgZmxhZykgeyBtX2hhc0FYT2JqZWN0ID0g
ZmxhZzsgfQogICAgIGJvb2wgaGFzQVhPYmplY3QoKSBjb25zdCB7IHJldHVybiBtX2hhc0FYT2Jq
ZWN0OyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVD
ZWxsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZUNlbGwuY3BwCmlu
ZGV4IDM0NWE3YmI1N2Y2NzNkNjc1MjNiMzMzMTNmYmFlZWZmMTA5NWE0YTcuLjc1NDE5Nzg3Yzdi
NmY3YTkxZjM2MWM4Njg5M2M4MWY5YmFlYTcwYjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJUYWJsZUNlbGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJUYWJsZUNlbGwuY3BwCkBAIC0xMjg5LDcgKzEyODksNyBAQCB2b2lkIFJlbmRl
clRhYmxlQ2VsbDo6cGFpbnRCYWNrZ3JvdW5kc0JlaGluZENlbGwoUGFpbnRJbmZvJiBwYWludElu
Zm8sIGNvbnN0IExheQogCiAgICAgQ29tcG9zaXRlT3BlcmF0b3IgY29tcG9zaXRlT3AgPSBDb21w
b3NpdGVTb3VyY2VPdmVyOwogICAgIENvbG9yIGNvbG9yID0gc3R5bGUudmlzaXRlZERlcGVuZGVu
dENvbG9yKENTU1Byb3BlcnR5QmFja2dyb3VuZENvbG9yKTsKLSAgICBpZiAoZG9jdW1lbnQoKS5z
ZXR0aW5ncygpLnB1bmNoT3V0V2hpdGVCYWNrZ3JvdW5kc0luRGFya01vZGUoKSAmJiBDb2xvcjo6
aXNXaGl0ZUNvbG9yKGNvbG9yKSAmJiB0aGVtZSgpLnVzaW5nRGFya0FwcGVhcmFuY2UoKnRoaXMp
KQorICAgIGlmIChkb2N1bWVudCgpLnNldHRpbmdzKCkucHVuY2hPdXRXaGl0ZUJhY2tncm91bmRz
SW5EYXJrTW9kZSgpICYmIENvbG9yOjppc1doaXRlQ29sb3IoY29sb3IpICYmIHVzZURhcmtBcHBl
YXJhbmNlKCkpCiAgICAgICAgIGNvbXBvc2l0ZU9wID0gQ29tcG9zaXRlRGVzdGluYXRpb25PdXQ7
CiAKICAgICBjb2xvciA9IHN0eWxlLmNvbG9yQnlBcHBseWluZ0NvbG9yRmlsdGVyKGNvbG9yKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWUuY3BwCmluZGV4IGJkNjZiYjNmNTkx
YTBjN2M4NGE5Y2JmOGY1M2NjYTZmZmUwYmE4NTkuLjI1NzM5MDM5NmY1MGEzMjI2NmY4MmEwNDhl
NDg2NzJjOTM4YTE1NWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJUaGVtZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lLmNw
cApAQCAtMzE4LDcgKzMxOCw3IEBAIGJvb2wgUmVuZGVyVGhlbWU6OnBhaW50KGNvbnN0IFJlbmRl
ckJveCYgYm94LCBDb250cm9sU3RhdGVzJiBjb250cm9sU3RhdGVzLCBjb25zCiAgICAgY2FzZSBC
dXR0b25QYXJ0OgogICAgIGNhc2UgSW5uZXJTcGluQnV0dG9uUGFydDoKICAgICAgICAgdXBkYXRl
Q29udHJvbFN0YXRlc0ZvclJlbmRlcmVyKGJveCwgY29udHJvbFN0YXRlcyk7Ci0gICAgICAgIFRo
ZW1lOjpzaW5nbGV0b24oKS5wYWludChwYXJ0LCBjb250cm9sU3RhdGVzLCBwYWludEluZm8uY29u
dGV4dCgpLCBkZXZpY2VQaXhlbFNuYXBwZWRSZWN0LCBib3guc3R5bGUoKS5lZmZlY3RpdmVab29t
KCksICZib3gudmlldygpLmZyYW1lVmlldygpLCBkZXZpY2VTY2FsZUZhY3RvciwgcGFnZVNjYWxl
RmFjdG9yLCBib3guZG9jdW1lbnQoKS51c2VTeXN0ZW1BcHBlYXJhbmNlKCksIGJveC5kb2N1bWVu
dCgpLnVzZURhcmtBcHBlYXJhbmNlKCkpOworICAgICAgICBUaGVtZTo6c2luZ2xldG9uKCkucGFp
bnQocGFydCwgY29udHJvbFN0YXRlcywgcGFpbnRJbmZvLmNvbnRleHQoKSwgZGV2aWNlUGl4ZWxT
bmFwcGVkUmVjdCwgYm94LnN0eWxlKCkuZWZmZWN0aXZlWm9vbSgpLCAmYm94LnZpZXcoKS5mcmFt
ZVZpZXcoKSwgZGV2aWNlU2NhbGVGYWN0b3IsIHBhZ2VTY2FsZUZhY3RvciwgYm94LmRvY3VtZW50
KCkudXNlU3lzdGVtQXBwZWFyYW5jZSgpLCBib3gudXNlRGFya0FwcGVhcmFuY2UoKSk7CiAgICAg
ICAgIHJldHVybiBmYWxzZTsKICAgICBkZWZhdWx0OgogICAgICAgICBicmVhazsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZS5oIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lLmgKaW5kZXggOGZiYTRkYjQwOTY3NGM3MDMyZTU2YjFl
ZDVjNzk2NTgzZjRjMDE1Ni4uMTMyYTZlNDlmMDk2NmQ3ZDUwMzdjYjVjNmEwMzY0ZjgzOTg5OTli
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lLmgKQEAgLTI2MSw4ICsyNjEs
NiBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHBhaW50U3lzdGVtUHJldmlld0JhZGdlKElt
YWdlJiwgY29uc3QgUGFpbnRJbmZvJiwgY29uc3QgRmxvYXRSZWN0Jik7CiAjZW5kaWYKIAotICAg
IHZpcnR1YWwgYm9vbCB1c2luZ0RhcmtBcHBlYXJhbmNlKGNvbnN0IFJlbmRlck9iamVjdCYpIGNv
bnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0KIHByb3RlY3RlZDoKICAgICB2aXJ0dWFsIEZvbnRDYXNj
YWRlRGVzY3JpcHRpb24mIGNhY2hlZFN5c3RlbUZvbnREZXNjcmlwdGlvbihDU1NWYWx1ZUlEIHN5
c3RlbUZvbnRJRCkgY29uc3Q7CiAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZUNhY2hlZFN5c3RlbUZv
bnREZXNjcmlwdGlvbihDU1NWYWx1ZUlEIHN5c3RlbUZvbnRJRCwgRm9udENhc2NhZGVEZXNjcmlw
dGlvbiYpIGNvbnN0ID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJUaGVtZU1hYy5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lTWFj
LmgKaW5kZXggZDg1NzYxYWJjOWIxMmRmZGRhNTU0NWRkMTRmODAzNDk2Mzc5NTBkNy4uMWRkMmIx
ZjVmZWY4NmY4Yzk1Zjg3NmFiZmZmODY2NDg5ZjhjZmFkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lTWFjLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlclRoZW1lTWFjLmgKQEAgLTE3NCw4ICsxNzQsNiBAQCBwcml2YXRlOgogICAg
IGJvb2wgcGFpbnRBdHRhY2htZW50KGNvbnN0IFJlbmRlck9iamVjdCYsIGNvbnN0IFBhaW50SW5m
byYsIGNvbnN0IEludFJlY3QmKSBmaW5hbDsKICNlbmRpZgogCi0gICAgYm9vbCB1c2luZ0RhcmtB
cHBlYXJhbmNlKGNvbnN0IFJlbmRlck9iamVjdCYpIGNvbnN0IGZpbmFsOwotCiBwcml2YXRlOgog
ICAgIFN0cmluZyBmaWxlTGlzdE5hbWVGb3JXaWR0aChjb25zdCBGaWxlTGlzdCosIGNvbnN0IEZv
bnRDYXNjYWRlJiwgaW50IHdpZHRoLCBib29sIG11bHRpcGxlRmlsZXNBbGxvd2VkKSBjb25zdCBm
aW5hbDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1l
TWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lTWFjLm1tCmluZGV4
IDNmYmQ2MGQ2MTcxNzlkODBiMTkyNjU5YTliOGYwYmM5YzllNmNkZDUuLmQ1NTBlNWIzM2Y0YWE0
ZDJlNTMzOTVkMGViZWM5MDhiMmY3YzI3YTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJUaGVtZU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyVGhlbWVNYWMubW0KQEAgLTI5Nyw3ICsyOTcsNyBAQCBSZW5kZXJUaGVtZU1hYzo6UmVu
ZGVyVGhlbWVNYWMoKQogCiBOU1ZpZXcgKlJlbmRlclRoZW1lTWFjOjpkb2N1bWVudFZpZXdGb3Io
Y29uc3QgUmVuZGVyT2JqZWN0JiBvKSBjb25zdAogewotICAgIExvY2FsRGVmYXVsdFN5c3RlbUFw
cGVhcmFuY2UgbG9jYWxBcHBlYXJhbmNlKHVzaW5nRGFya0FwcGVhcmFuY2UobykpOworICAgIExv
Y2FsRGVmYXVsdFN5c3RlbUFwcGVhcmFuY2UgbG9jYWxBcHBlYXJhbmNlKG8udXNlRGFya0FwcGVh
cmFuY2UoKSk7CiAgICAgQ29udHJvbFN0YXRlcyBzdGF0ZXMoZXh0cmFjdENvbnRyb2xTdGF0ZXNG
b3JSZW5kZXJlcihvKSk7CiAgICAgcmV0dXJuIFRoZW1lTWFjOjplbnN1cmVkVmlldygmby52aWV3
KCkuZnJhbWVWaWV3KCksIHN0YXRlcyk7CiB9CkBAIC0xNzEzLDcgKzE3MTMsNyBAQCB2b2lkIFJl
bmRlclRoZW1lTWFjOjphZGp1c3RNZW51TGlzdFN0eWxlKFN0eWxlUmVzb2x2ZXImIHN0eWxlUmVz
b2x2ZXIsIFJlbmRlclN0eQogICAgIC8vIFNldCB0aGUgZm9yZWdyb3VuZCBjb2xvciB0byBibGFj
ayBvciBncmF5IHdoZW4gd2UgaGF2ZSB0aGUgYXF1YSBsb29rLgogICAgIENvbG9yIGMgPSBDb2xv
cjo6ZGFya0dyYXk7CiAgICAgaWYgKGUpIHsKLSAgICAgICAgT3B0aW9uU2V0PFN0eWxlQ29sb3I6
Ok9wdGlvbnM+IG9wdGlvbnMgPSBlLT5kb2N1bWVudCgpLnN0eWxlQ29sb3JPcHRpb25zKCk7Cisg
ICAgICAgIE9wdGlvblNldDxTdHlsZUNvbG9yOjpPcHRpb25zPiBvcHRpb25zID0gZS0+ZG9jdW1l
bnQoKS5zdHlsZUNvbG9yT3B0aW9ucygmc3R5bGUpOwogICAgICAgICBjID0gIWUtPmlzRGlzYWJs
ZWRGb3JtQ29udHJvbCgpID8gc3lzdGVtQ29sb3IoQ1NTVmFsdWVCdXR0b250ZXh0LCBvcHRpb25z
KSA6IHN5c3RlbUNvbG9yKENTU1ZhbHVlR3JheXRleHQsIG9wdGlvbnMpOwogICAgIH0KICAgICBz
dHlsZS5zZXRDb2xvcihjKTsKQEAgLTE4MDAsNyArMTgwMCw3IEBAIHZvaWQgUmVuZGVyVGhlbWVN
YWM6OnNldFBvcHVwQnV0dG9uQ2VsbFN0YXRlKGNvbnN0IFJlbmRlck9iamVjdCYgbywgY29uc3Qg
SW50U2l6CiAKIHZvaWQgUmVuZGVyVGhlbWVNYWM6OnBhaW50Q2VsbEFuZFNldEZvY3VzZWRFbGVt
ZW50TmVlZHNSZXBhaW50SWZOZWNlc3NhcnkoTlNDZWxsKiBjZWxsLCBjb25zdCBSZW5kZXJPYmpl
Y3QmIHJlbmRlcmVyLCBjb25zdCBQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgRmxvYXRSZWN0
JiByZWN0KQogewotICAgIExvY2FsRGVmYXVsdFN5c3RlbUFwcGVhcmFuY2UgbG9jYWxBcHBlYXJh
bmNlKHVzaW5nRGFya0FwcGVhcmFuY2UocmVuZGVyZXIpKTsKKyAgICBMb2NhbERlZmF1bHRTeXN0
ZW1BcHBlYXJhbmNlIGxvY2FsQXBwZWFyYW5jZShyZW5kZXJlci51c2VEYXJrQXBwZWFyYW5jZSgp
KTsKICAgICBib29sIHNob3VsZERyYXdGb2N1c1JpbmcgPSBpc0ZvY3VzZWQocmVuZGVyZXIpICYm
IHJlbmRlcmVyLnN0eWxlKCkub3V0bGluZVN0eWxlSXNBdXRvKCkgPT0gT3V0bGluZUlzQXV0bzo6
T247CiAgICAgYm9vbCBzaG91bGRVc2VJbWFnZUJ1ZmZlciA9IHJlbmRlcmVyLnN0eWxlKCkuZWZm
ZWN0aXZlWm9vbSgpICE9IDEgfHwgcmVuZGVyZXIucGFnZSgpLnBhZ2VTY2FsZUZhY3RvcigpICE9
IDE7CiAgICAgYm9vbCBzaG91bGREcmF3Q2VsbCA9IHRydWU7CkBAIC0xODgyLDcgKzE4ODIsNyBA
QCBib29sIFJlbmRlclRoZW1lTWFjOjpwYWludFNsaWRlclRodW1iKGNvbnN0IFJlbmRlck9iamVj
dCYgbywgY29uc3QgUGFpbnRJbmZvJiBwYQogICAgICAgICA/IHNsaWRlclRodW1iVmVydGljYWwo
KQogICAgICAgICA6IHNsaWRlclRodW1iSG9yaXpvbnRhbCgpOwogCi0gICAgTG9jYWxEZWZhdWx0
U3lzdGVtQXBwZWFyYW5jZSBsb2NhbEFwcGVhcmFuY2UodXNpbmdEYXJrQXBwZWFyYW5jZShvKSk7
CisgICAgTG9jYWxEZWZhdWx0U3lzdGVtQXBwZWFyYW5jZSBsb2NhbEFwcGVhcmFuY2Uoby51c2VE
YXJrQXBwZWFyYW5jZSgpKTsKIAogICAgIExvY2FsQ3VycmVudEdyYXBoaWNzQ29udGV4dCBsb2Nh
bENvbnRleHQocGFpbnRJbmZvLmNvbnRleHQoKSk7CiAKQEAgLTI5OTQsMTEgKzI5OTQsNiBAQCBi
b29sIFJlbmRlclRoZW1lTWFjOjpwYWludEF0dGFjaG1lbnQoY29uc3QgUmVuZGVyT2JqZWN0JiBy
ZW5kZXJlciwgY29uc3QgUGFpbnRJbgogCiAjZW5kaWYgLy8gRU5BQkxFKEFUVEFDSE1FTlRfRUxF
TUVOVCkKIAotYm9vbCBSZW5kZXJUaGVtZU1hYzo6dXNpbmdEYXJrQXBwZWFyYW5jZShjb25zdCBS
ZW5kZXJPYmplY3QmIG8pIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG8uZG9jdW1lbnQoKS51c2VEYXJr
QXBwZWFyYW5jZSgpOwotfQotCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBQ
TEFURk9STShNQUMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUv
UmVuZGVyU3R5bGUuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHls
ZS5oCmluZGV4IDk4MWI4ZWVlZWJlOTZhNjFiMWFhZDM2MzI0MmQ3NGU5NjgxYzAzZWQuLjg1NTVk
MGI5ZjYyNGQ4MjMxNDI2M2IwNTBhZTVjOWFmYWMyYzY2M2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5oCkBAIC04NCw2ICs4NCwxMCBAQAogI2luY2x1
ZGUgIlRleHRTaXplQWRqdXN0bWVudC5oIgogI2VuZGlmCiAKKyNpZiBFTkFCTEUoREFSS19NT0RF
X0NTUykKKyNpbmNsdWRlICJTdHlsZVN1cHBvcnRlZENvbG9yU2NoZW1lcy5oIgorI2VuZGlmCisK
ICNkZWZpbmUgU0VUX1ZBUihncm91cCwgdmFyaWFibGUsIHZhbHVlKSBkbyB7IFwKICAgICAgICAg
aWYgKCFjb21wYXJlRXF1YWwoZ3JvdXAtPnZhcmlhYmxlLCB2YWx1ZSkpIFwKICAgICAgICAgICAg
IGdyb3VwLmFjY2VzcygpLnZhcmlhYmxlID0gdmFsdWU7IFwKQEAgLTYzMiw2ICs2MzYsMTAgQEAg
cHVibGljOgogCiAgICAgUnVieVBvc2l0aW9uIHJ1YnlQb3NpdGlvbigpIGNvbnN0IHsgcmV0dXJu
IHN0YXRpY19jYXN0PFJ1YnlQb3NpdGlvbj4obV9yYXJlSW5oZXJpdGVkRGF0YS0+cnVieVBvc2l0
aW9uKTsgfQogCisjaWYgRU5BQkxFKERBUktfTU9ERV9DU1MpCisgICAgU3R5bGVTdXBwb3J0ZWRD
b2xvclNjaGVtZXMgc3VwcG9ydGVkQ29sb3JTY2hlbWVzKCkgY29uc3QgeyByZXR1cm4gbV9yYXJl
SW5oZXJpdGVkRGF0YS0+c3VwcG9ydGVkQ29sb3JTY2hlbWVzOyB9CisjZW5kaWYKKwogICAgIFRl
eHRPcmllbnRhdGlvbiB0ZXh0T3JpZW50YXRpb24oKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2Fz
dDxUZXh0T3JpZW50YXRpb24+KG1fcmFyZUluaGVyaXRlZERhdGEtPnRleHRPcmllbnRhdGlvbik7
IH0KIAogICAgIE9iamVjdEZpdCBvYmplY3RGaXQoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2Fz
dDxPYmplY3RGaXQ+KG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPm9iamVjdEZpdCk7IH0KQEAgLTEx
NjUsNiArMTE3MywxMCBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHNldFJ1YnlQb3NpdGlvbihSdWJ5
UG9zaXRpb24gcG9zaXRpb24pIHsgU0VUX1ZBUihtX3JhcmVJbmhlcml0ZWREYXRhLCBydWJ5UG9z
aXRpb24sIHN0YXRpY19jYXN0PHVuc2lnbmVkPihwb3NpdGlvbikpOyB9CiAKKyNpZiBFTkFCTEUo
REFSS19NT0RFX0NTUykKKyAgICB2b2lkIHNldFN1cHBvcnRlZENvbG9yU2NoZW1lcyhTdHlsZVN1
cHBvcnRlZENvbG9yU2NoZW1lcyBzdXBwb3J0ZWQpIHsgU0VUX1ZBUihtX3JhcmVJbmhlcml0ZWRE
YXRhLCBzdXBwb3J0ZWRDb2xvclNjaGVtZXMsIHN1cHBvcnRlZCk7IH0KKyNlbmRpZgorCiAgICAg
dm9pZCBzZXRGaWx0ZXIoY29uc3QgRmlsdGVyT3BlcmF0aW9ucyYgb3BzKSB7IFNFVF9ORVNURURf
VkFSKG1fcmFyZU5vbkluaGVyaXRlZERhdGEsIGZpbHRlciwgb3BlcmF0aW9ucywgb3BzKTsgfQog
ICAgIHZvaWQgc2V0QXBwbGVDb2xvckZpbHRlcihjb25zdCBGaWx0ZXJPcGVyYXRpb25zJiBvcHMp
IHsgU0VUX05FU1RFRF9WQVIobV9yYXJlSW5oZXJpdGVkRGF0YSwgYXBwbGVDb2xvckZpbHRlciwg
b3BlcmF0aW9ucywgb3BzKTsgfQogCkBAIC0xNTc4LDYgKzE1OTAsMTAgQEAgcHVibGljOgogICAg
IHN0YXRpYyBRdW90ZXNEYXRhKiBpbml0aWFsUXVvdGVzKCkgeyByZXR1cm4gbnVsbHB0cjsgfQog
ICAgIHN0YXRpYyBjb25zdCBBdG9taWNTdHJpbmcmIGluaXRpYWxDb250ZW50QWx0VGV4dCgpIHsg
cmV0dXJuIGVtcHR5QXRvbSgpOyB9CiAKKyNpZiBFTkFCTEUoREFSS19NT0RFX0NTUykKKyAgICBz
dGF0aWMgU3R5bGVTdXBwb3J0ZWRDb2xvclNjaGVtZXMgaW5pdGlhbFN1cHBvcnRlZENvbG9yU2No
ZW1lcygpIHsgcmV0dXJuIHsgfTsgfQorI2VuZGlmCisKICNpZiBFTkFCTEUoQ1NTM19URVhUKQog
ICAgIHN0YXRpYyBUZXh0SW5kZW50TGluZSBpbml0aWFsVGV4dEluZGVudExpbmUoKSB7IHJldHVy
biBUZXh0SW5kZW50TGluZTo6Rmlyc3RMaW5lOyB9CiAgICAgc3RhdGljIFRleHRJbmRlbnRUeXBl
IGluaXRpYWxUZXh0SW5kZW50VHlwZSgpIHsgcmV0dXJuIFRleHRJbmRlbnRUeXBlOjpOb3JtYWw7
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHls
ZUNvbnN0YW50cy5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxl
Q29uc3RhbnRzLmgKaW5kZXggMTc2ZWIyMTNhN2E2ZTc4MmUzMTA3OTBkNTEwZjBjZDFiM2Q5ZTAy
OC4uNjZlNWM3YjQ3NDEwYTFiMGFmMTFiZWE0MzZhYzljYjJhODQ3NzFlNCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlQ29uc3RhbnRzLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlQ29uc3RhbnRzLmgK
QEAgLTEwMTgsNiArMTAxOCwxNSBAQCBlbnVtIGNsYXNzIFJ1YnlQb3NpdGlvbiA6IHVpbnQ4X3Qg
ewogICAgIEludGVyQ2hhcmFjdGVyCiB9OwogCisjaWYgRU5BQkxFKERBUktfTU9ERV9DU1MpCitl
bnVtIGNsYXNzIENvbG9yU2NoZW1lcyA6IHVpbnQ4X3QgeworICAgIExpZ2h0ID0gMSA8PCAwLAor
ICAgIERhcmsgPSAxIDw8IDEKK307CisKK3N0YXRpYyBjb25zdCBzaXplX3QgQ29sb3JTY2hlbWVz
Qml0cyA9IDI7CisjZW5kaWYKKwogc3RhdGljIGNvbnN0IHNpemVfdCBHcmlkQXV0b0Zsb3dCaXRz
ID0gNDsKIGVudW0gSW50ZXJuYWxHcmlkQXV0b0Zsb3dBbGdvcml0aG0gewogICAgIEludGVybmFs
QXV0b0Zsb3dBbGdvcml0aG1TcGFyc2UgPSAxIDw8IDAsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVSYXJlSW5oZXJpdGVkRGF0YS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVSYXJlSW5oZXJpdGVkRGF0YS5jcHAKaW5kZXgg
NWZiNzliM2Y5NDdlNDQ2YjcwZWYzMzgyN2NjNzI4Y2JjODBlYjA2YS4uNDVmNzM2YWIyODI4NzE5
OWRlZGY2NzdmY2E0Zjc2OGJjMGE2MjdjNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N0eWxlL1N0eWxlUmFyZUluaGVyaXRlZERhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVJhcmVJbmhlcml0ZWREYXRhLmNwcApAQCAtMzEsNiAr
MzEsNyBAQAogI2luY2x1ZGUgIlN0eWxlQ3VzdG9tUHJvcGVydHlEYXRhLmgiCiAjaW5jbHVkZSAi
U3R5bGVGaWx0ZXJEYXRhLmgiCiAjaW5jbHVkZSAiU3R5bGVJbWFnZS5oIgorI2luY2x1ZGUgIlN0
eWxlU3VwcG9ydGVkQ29sb3JTY2hlbWVzLmgiCiAjaW5jbHVkZSA8d3RmL1BvaW50ZXJDb21wYXJp
c29uLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTY3LDYgKzY4LDEwIEBAIHN0cnVjdCBH
cmVhdGVyVGhhbk9yU2FtZVNpemVBc1N0eWxlUmFyZUluaGVyaXRlZERhdGEgOiBwdWJsaWMgUmVm
Q291bnRlZDxHcmVhdGVyCiAgICAgQ29sb3IgdGFwSGlnaGxpZ2h0Q29sb3I7CiAjZW5kaWYKIAor
I2lmIEVOQUJMRShEQVJLX01PREVfQ1NTKQorICAgIFN0eWxlU3VwcG9ydGVkQ29sb3JTY2hlbWVz
IHN1cHBvcnRlZENvbG9yU2NoZW1lczsKKyNlbmRpZgorCiAgICAgdm9pZCogY3VzdG9tUHJvcGVy
dHlEYXRhUmVmc1sxXTsKIH07CiAKQEAgLTE1Myw2ICsxNTgsOSBAQCBTdHlsZVJhcmVJbmhlcml0
ZWREYXRhOjpTdHlsZVJhcmVJbmhlcml0ZWREYXRhKCkKICNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRT
KQogICAgICwgdGFwSGlnaGxpZ2h0Q29sb3IoUmVuZGVyU3R5bGU6OmluaXRpYWxUYXBIaWdobGln
aHRDb2xvcigpKQogI2VuZGlmCisjaWYgRU5BQkxFKERBUktfTU9ERV9DU1MpCisgICAgLCBzdXBw
b3J0ZWRDb2xvclNjaGVtZXMoUmVuZGVyU3R5bGU6OmluaXRpYWxTdXBwb3J0ZWRDb2xvclNjaGVt
ZXMoKSkKKyNlbmRpZgogewogfQogCkBAIC0yNTEsNiArMjU5LDkgQEAgaW5saW5lIFN0eWxlUmFy
ZUluaGVyaXRlZERhdGE6OlN0eWxlUmFyZUluaGVyaXRlZERhdGEoY29uc3QgU3R5bGVSYXJlSW5o
ZXJpdGVkRGEKICNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQogICAgICwgdGFwSGlnaGxpZ2h0Q29s
b3Ioby50YXBIaWdobGlnaHRDb2xvcikKICNlbmRpZgorI2lmIEVOQUJMRShEQVJLX01PREVfQ1NT
KQorICAgICwgc3VwcG9ydGVkQ29sb3JTY2hlbWVzKG8uc3VwcG9ydGVkQ29sb3JTY2hlbWVzKQor
I2VuZGlmCiB7CiB9CiAKQEAgLTI5Niw2ICszMDcsOSBAQCBib29sIFN0eWxlUmFyZUluaGVyaXRl
ZERhdGE6Om9wZXJhdG9yPT0oY29uc3QgU3R5bGVSYXJlSW5oZXJpdGVkRGF0YSYgbykgY29uc3QK
ICNlbmRpZgogI2lmIEVOQUJMRShURVhUX0FVVE9TSVpJTkcpCiAgICAgICAgICYmIHRleHRTaXpl
QWRqdXN0ID09IG8udGV4dFNpemVBZGp1c3QKKyNlbmRpZgorI2lmIEVOQUJMRShEQVJLX01PREVf
Q1NTKQorICAgICAgICAmJiBzdXBwb3J0ZWRDb2xvclNjaGVtZXMgPT0gby5zdXBwb3J0ZWRDb2xv
clNjaGVtZXMKICNlbmRpZgogICAgICAgICAmJiB1c2VyU2VsZWN0ID09IG8udXNlclNlbGVjdAog
ICAgICAgICAmJiBzcGVha0FzID09IG8uc3BlYWtBcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlUmFyZUluaGVyaXRlZERhdGEuaCBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVJhcmVJbmhlcml0ZWREYXRhLmgKaW5kZXggYTNhZDE3
NTAzNGM5ZjM3MWFlMTM1OGMyOGE1NDU4YWM4NGYwOGU5ZS4uYjJiZGRmZDQ3ZmI4OWJjZWNhZDEx
YThkZWM0MDk1NjU5ZjAzODJmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N0eWxlL1N0eWxlUmFyZUluaGVyaXRlZERhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3R5bGUvU3R5bGVSYXJlSW5oZXJpdGVkRGF0YS5oCkBAIC0zNyw2ICszNywxMCBAQAog
I2luY2x1ZGUgIlRleHRTaXplQWRqdXN0bWVudC5oIgogI2VuZGlmCiAKKyNpZiBFTkFCTEUoREFS
S19NT0RFX0NTUykKKyNpbmNsdWRlICJTdHlsZVN1cHBvcnRlZENvbG9yU2NoZW1lcy5oIgorI2Vu
ZGlmCisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQ3Vyc29yTGlzdDsKQEAgLTE4MSw2
ICsxODUsMTAgQEAgcHVibGljOgogICAgIENvbG9yIHRhcEhpZ2hsaWdodENvbG9yOwogI2VuZGlm
CiAKKyNpZiBFTkFCTEUoREFSS19NT0RFX0NTUykKKyAgICBTdHlsZVN1cHBvcnRlZENvbG9yU2No
ZW1lcyBzdXBwb3J0ZWRDb2xvclNjaGVtZXM7CisjZW5kaWYKKwogcHJpdmF0ZToKICAgICBTdHls
ZVJhcmVJbmhlcml0ZWREYXRhKCk7CiAgICAgU3R5bGVSYXJlSW5oZXJpdGVkRGF0YShjb25zdCBT
dHlsZVJhcmVJbmhlcml0ZWREYXRhJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3R5bGUvU3R5bGVTdXBwb3J0ZWRDb2xvclNjaGVtZXMuaCBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdHlsZS9TdHlsZVN1cHBvcnRlZENvbG9yU2NoZW1lcy5oCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjZiNmY5NDk5YjEzNWViNGQ5OGVlNjgyYmIxYjUwYWI4MTY1ODM1MzMKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVTdXBwb3J0ZWRDb2xvclNj
aGVtZXMuaApAQCAtMCwwICsxLDcxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
CisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwor
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNp
ZiBFTkFCTEUoREFSS19NT0RFX0NTUykKKworI2luY2x1ZGUgIlJlbmRlclN0eWxlQ29uc3RhbnRz
LmgiCisjaW5jbHVkZSA8d3RmL09wdGlvblNldC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisK
K2NsYXNzIFN0eWxlU3VwcG9ydGVkQ29sb3JTY2hlbWVzIHsKK3B1YmxpYzoKKyAgICBTdHlsZVN1
cHBvcnRlZENvbG9yU2NoZW1lcygpCisgICAgICAgIDogbV9jb2xvclNjaGVtZXMoMCkgeyB9CisK
KyAgICBTdHlsZVN1cHBvcnRlZENvbG9yU2NoZW1lcyhjb25zdCBTdHlsZVN1cHBvcnRlZENvbG9y
U2NoZW1lcyYgb3RoZXIpCisgICAgICAgIDogbV9jb2xvclNjaGVtZXMob3RoZXIubV9jb2xvclNj
aGVtZXMpLCBtX2FsbG93c1RyYW5zZm9ybWF0aW9ucyhvdGhlci5tX2FsbG93c1RyYW5zZm9ybWF0
aW9ucykgeyB9CisKKyAgICBTdHlsZVN1cHBvcnRlZENvbG9yU2NoZW1lcyhPcHRpb25TZXQ8Q29s
b3JTY2hlbWVzPiBjb2xvclNjaGVtZXMsIGJvb2wgYWxsb3dzVHJhbnNmb3JtYXRpb25zKQorICAg
ICAgICA6IG1fY29sb3JTY2hlbWVzKGNvbG9yU2NoZW1lcy50b1JhdygpKSwgbV9hbGxvd3NUcmFu
c2Zvcm1hdGlvbnMoYWxsb3dzVHJhbnNmb3JtYXRpb25zKSB7IH0KKworICAgIGJvb2wgb3BlcmF0
b3I9PShjb25zdCBTdHlsZVN1cHBvcnRlZENvbG9yU2NoZW1lcyYgb3RoZXIpIGNvbnN0CisgICAg
eworICAgICAgICByZXR1cm4gbV9jb2xvclNjaGVtZXMgPT0gb3RoZXIubV9jb2xvclNjaGVtZXMg
JiYgbV9hbGxvd3NUcmFuc2Zvcm1hdGlvbnMgPT0gb3RoZXIubV9hbGxvd3NUcmFuc2Zvcm1hdGlv
bnM7CisgICAgfQorCisgICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFN0eWxlU3VwcG9ydGVkQ29s
b3JTY2hlbWVzJiBvdGhlcikgY29uc3QgeyByZXR1cm4gISgqdGhpcyA9PSBvdGhlcik7IH0KKwor
ICAgIGJvb2wgaXNBdXRvKCkgY29uc3QgeyByZXR1cm4gIW1fY29sb3JTY2hlbWVzICYmIG1fYWxs
b3dzVHJhbnNmb3JtYXRpb25zOyB9CisgICAgYm9vbCBpc09ubHkoKSBjb25zdCB7IHJldHVybiAh
bV9jb2xvclNjaGVtZXMgJiYgIW1fYWxsb3dzVHJhbnNmb3JtYXRpb25zOyB9CisKKyAgICBPcHRp
b25TZXQ8Q29sb3JTY2hlbWVzPiBjb2xvclNjaGVtZXMoKSBjb25zdCB7IHJldHVybiBPcHRpb25T
ZXQ8Q29sb3JTY2hlbWVzPjo6ZnJvbVJhdyhtX2NvbG9yU2NoZW1lcyk7IH0KKworICAgIHZvaWQg
YWRkKENvbG9yU2NoZW1lcyBjb2xvclNjaGVtZSkgeyBtX2NvbG9yU2NoZW1lcyB8PSBzdGF0aWNf
Y2FzdDx1bnNpZ25lZD4oY29sb3JTY2hlbWUpOyB9CisgICAgYm9vbCBjb250YWlucyhDb2xvclNj
aGVtZXMgY29sb3JTY2hlbWUpIGNvbnN0IHsgcmV0dXJuICEhKG1fY29sb3JTY2hlbWVzICYgc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KGNvbG9yU2NoZW1lKSk7IH0KKworICAgIHZvaWQgc2V0QWxsb3dz
VHJhbnNmb3JtYXRpb25zKGJvb2wgYWxsb3cpIHsgbV9hbGxvd3NUcmFuc2Zvcm1hdGlvbnMgPSBh
bGxvdzsgfQorICAgIGJvb2wgYWxsb3dzVHJhbnNmb3JtYXRpb25zKCkgY29uc3QgeyByZXR1cm4g
bV9hbGxvd3NUcmFuc2Zvcm1hdGlvbnM7IH0KKworcHJpdmF0ZToKKyAgICB1bnNpZ25lZCBtX2Nv
bG9yU2NoZW1lcyA6IENvbG9yU2NoZW1lc0JpdHM7IC8vIENvbG9yU2NoZW1lcworICAgIGJvb2wg
bV9hbGxvd3NUcmFuc2Zvcm1hdGlvbnMgeyB0cnVlIH07Cit9OworCit9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoREFSS19NT0RFX0NTUykKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9z
dmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuY3BwCmluZGV4IDkxZWY4NTE0ZTU4M2VkMzUzODBlN2FjNzgy
N2QxYmQwZjgyNTQwNGEuLjA2MDk3ZWNjYmJlM2MyZTZjNjJhNDU5ZGMxOGViMTYyZDQ5OTQ4YTkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmNwcApAQCAtNDcsNiArNDcs
NyBAQAogI2luY2x1ZGUgIlBhZ2VDb25maWd1cmF0aW9uLmgiCiAjaW5jbHVkZSAiUmVuZGVyU1ZH
Um9vdC5oIgogI2luY2x1ZGUgIlJlbmRlclN0eWxlLmgiCisjaW5jbHVkZSAiUmVuZGVyVmlldy5o
IgogI2luY2x1ZGUgIlNWR0RvY3VtZW50LmgiCiAjaW5jbHVkZSAiU1ZHRkVJbWFnZUVsZW1lbnQu
aCIKICNpbmNsdWRlICJTVkdGb3JlaWduT2JqZWN0RWxlbWVudC5oIgpAQCAtMzI0LDggKzMyNSw3
IEBAIEltYWdlRHJhd1Jlc3VsdCBTVkdJbWFnZTo6ZHJhdyhHcmFwaGljc0NvbnRleHQmIGNvbnRl
eHQsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjCiAgICAgfQogCiAjaWYgUExBVEZPUk0oTUFDKQot
ICAgIGF1dG8qIGRvY3VtZW50ID0gbV9wYWdlLT5tYWluRnJhbWUoKS5kb2N1bWVudCgpOwotICAg
IExvY2FsRGVmYXVsdFN5c3RlbUFwcGVhcmFuY2UgbG9jYWxBcHBlYXJhbmNlKGRvY3VtZW50ID8g
ZG9jdW1lbnQtPnVzZURhcmtBcHBlYXJhbmNlKCkgOiBmYWxzZSk7CisgICAgTG9jYWxEZWZhdWx0
U3lzdGVtQXBwZWFyYW5jZSBsb2NhbEFwcGVhcmFuY2Uodmlldy0+cmVuZGVyVmlldygpLT51c2VE
YXJrQXBwZWFyYW5jZSgpKTsKICNlbmRpZgogCiAgICAgdmlldy0+cGFpbnQoY29udGV4dCwgaW50
ZXJzZWN0aW9uKGNvbnRleHQuY2xpcEJvdW5kcygpLCBlbmNsb3NpbmdJbnRSZWN0KHNyY1JlY3Qp
KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUv
RE9NL0luamVjdGVkQnVuZGxlUmFuZ2VIYW5kbGUuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0luamVjdGVkQnVuZGxlL0RPTS9JbmplY3RlZEJ1bmRsZVJhbmdlSGFuZGxlLmNwcAppbmRl
eCAzZjRmNTY3ZGM0YmFlNjE4NTU1MjUyMDg3NGY1ZmViNTVjODhmYzIxLi40YmZkZDdmOWY0YzRj
YzRkZmE2ZGVhYWJjMDFmNGE2YzExMWVkYWNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvRE9NL0luamVjdGVkQnVuZGxlUmFuZ2VIYW5kbGUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9ET00vSW5qZWN0
ZWRCdW5kbGVSYW5nZUhhbmRsZS5jcHAKQEAgLTQxLDYgKzQxLDcgQEAKICNpbmNsdWRlIDxXZWJD
b3JlL0pTUmFuZ2UuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1BhZ2UuaD4KICNpbmNsdWRlIDxXZWJD
b3JlL1JhbmdlLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9SZW5kZXJWaWV3Lmg+CiAjaW5jbHVkZSA8
V2ViQ29yZS9WaXNpYmxlU2VsZWN0aW9uLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNp
bmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KQEAgLTEyNCw3ICsxMjUsOCBAQCBSZWZQdHI8
V2ViSW1hZ2U+IEluamVjdGVkQnVuZGxlUmFuZ2VIYW5kbGU6OnJlbmRlcmVkSW1hZ2UoU25hcHNo
b3RPcHRpb25zIG9wdGlvbgogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogI2lmIFBMQVRGT1JN
KE1BQykKLSAgICBMb2NhbERlZmF1bHRTeXN0ZW1BcHBlYXJhbmNlIGxvY2FsQXBwZWFyYW5jZShv
d25lckRvY3VtZW50LnVzZURhcmtBcHBlYXJhbmNlKCkpOworICAgIFJlbmRlclZpZXcqIHJlbmRl
clZpZXcgPSBmcmFtZVZpZXctPnJlbmRlclZpZXcoKTsKKyAgICBMb2NhbERlZmF1bHRTeXN0ZW1B
cHBlYXJhbmNlIGxvY2FsQXBwZWFyYW5jZShyZW5kZXJWaWV3ID8gcmVuZGVyVmlldy0+dXNlRGFy
a0FwcGVhcmFuY2UoKSA6IGZhbHNlKTsKICNlbmRpZgogCiAgICAgUmVmPEZyYW1lPiBwcm90ZWN0
b3IoKmZyYW1lKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlBhZ2UuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5j
cHAKaW5kZXggODBjNTM4M2EyZTU0ODU0ZTczYzg3NjUzN2ZjYzY0ZjIzY2RmMWJmNy4uMmY1NGQ1
ZGZkNGFkNTcyMWY5MzlkOTQ2OTY3MzFmNjYxM2E4OGQ3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKQEAgLTE1NTYsOCArMTU1Niw4IEBAIHZvaWQg
V2ViUGFnZTo6c2Nyb2xsTWFpbkZyYW1lSWZOb3RBdE1heFNjcm9sbFBvc2l0aW9uKGNvbnN0IElu
dFNpemUmIHNjcm9sbE9mZnNlCiB2b2lkIFdlYlBhZ2U6OmRyYXdSZWN0KEdyYXBoaWNzQ29udGV4
dCYgZ3JhcGhpY3NDb250ZXh0LCBjb25zdCBJbnRSZWN0JiByZWN0KQogewogI2lmIFBMQVRGT1JN
KE1BQykKLSAgICBhdXRvKiBkb2N1bWVudCA9IG1fbWFpbkZyYW1lLT5jb3JlRnJhbWUoKS0+ZG9j
dW1lbnQoKTsKLSAgICBMb2NhbERlZmF1bHRTeXN0ZW1BcHBlYXJhbmNlIGxvY2FsQXBwZWFyYW5j
ZShkb2N1bWVudCA/IGRvY3VtZW50LT51c2VEYXJrQXBwZWFyYW5jZSgpIDogZmFsc2UpOworICAg
IFJlbmRlclZpZXcqIHJlbmRlclZpZXcgPSBtX3BhZ2UtPm1haW5GcmFtZSgpLnZpZXcoKS0+cmVu
ZGVyVmlldygpOworICAgIExvY2FsRGVmYXVsdFN5c3RlbUFwcGVhcmFuY2UgbG9jYWxBcHBlYXJh
bmNlKHJlbmRlclZpZXcgPyByZW5kZXJWaWV3LT51c2VEYXJrQXBwZWFyYW5jZSgpIDogZmFsc2Up
OwogI2VuZGlmCiAKICAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoZ3Jh
cGhpY3NDb250ZXh0KTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91
dFRlc3RzL0NoYW5nZUxvZwppbmRleCA2NDk3MGEwYjUwYjMyOWQzZjE1NDg1NDRmYTdmODdmNTI4
NjMwNTdkLi5hNzkyMDFjMDIxYmM5MzhlMzUyNDI1YTMzODBhMzI2ZTgzM2I5NWE2IDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMTYgQEAKKzIwMTgtMTEtMDggIFRpbW90aHkgSGF0Y2hlciAgPHRpbW90aHlAYXBw
bGUuY29tPgorCisgICAgICAgIEFkZCBleHBlcmltZW50YWwgc3VwcG9ydCBmb3IgYSBgc3VwcG9y
dGVkLWNvbG9yLXNjaGVtZXNgIENTUyBwcm9wZXJ0eS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MTMxOQorICAgICAgICByZGFyOi8vcHJvYmxlbS80
NTg1MjI2MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
ICogY3NzLWRhcmstbW9kZS9wYXJzZS1zdXBwb3J0ZWQtY29sb3Itc2NoZW1lcy1leHBlY3RlZC50
eHQ6IEFkZGVkLgorICAgICAgICAqIGNzcy1kYXJrLW1vZGUvcGFyc2Utc3VwcG9ydGVkLWNvbG9y
LXNjaGVtZXMuaHRtbDogQWRkZWQuCisgICAgICAgICogY3NzLWRhcmstbW9kZS9zdXBwb3J0ZWQt
Y29sb3Itc2NoZW1lcy1jc3MtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBjc3MtZGFy
ay1tb2RlL3N1cHBvcnRlZC1jb2xvci1zY2hlbWVzLWNzcy5odG1sOiBBZGRlZC4KKwogMjAxOC0x
MS0wNyAgUnlhbiBIYWRkYWQgIDxyeWFuaGFkZGFkQGFwcGxlLmNvbT4KIAogICAgICAgICBVbnJl
dmlld2VkLCB1cGRhdGUgdGVzdCBleHBlY3RhdGlvbnMgZm9yIGZhc3QvZXZlbnRzL3BvaW50ZXIu
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9jc3MtZGFyay1tb2RlL3BhcnNlLXN1cHBvcnRlZC1j
b2xvci1zY2hlbWVzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Nzcy1kYXJrLW1vZGUvcGFy
c2Utc3VwcG9ydGVkLWNvbG9yLXNjaGVtZXMtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjJhMjg3
ZjVjM2EwYTA0ZTgzYWJiYjFhOWI0NDFjMWE3OGRlYzM3NDUKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9jc3MtZGFyay1tb2RlL3BhcnNlLXN1cHBvcnRlZC1jb2xvci1zY2hlbWVzLWV4
cGVjdGVkLnR4dApAQCAtMCwwICsxLDQgQEAKKworUEFTUyBUZXN0IHZhbGlkIHZhbHVlcyAKK1BB
U1MgVGVzdCBpbnZhbGlkIHZhbHVlcyAKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvY3NzLWRh
cmstbW9kZS9wYXJzZS1zdXBwb3J0ZWQtY29sb3Itc2NoZW1lcy5odG1sIGIvTGF5b3V0VGVzdHMv
Y3NzLWRhcmstbW9kZS9wYXJzZS1zdXBwb3J0ZWQtY29sb3Itc2NoZW1lcy5odG1sCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjFiYzEwYTgyNWQ3M2ZiMzc1YWE1OGU5NTgzY2ZkODI0MTY5YjAyOWYKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9jc3MtZGFyay1tb2RlL3BhcnNlLXN1cHBvcnRlZC1jb2xvci1z
Y2hlbWVzLmh0bWwKQEAgLTAsMCArMSwxMjggQEAKKzwhRE9DVFlQRSBodG1sPgorCis8IS0tIHdl
YmtpdC10ZXN0LXJ1bm5lciBbIGV4cGVyaW1lbnRhbDpEYXJrTW9kZUNTU0VuYWJsZWQ9dHJ1ZSBd
IC0tPgorCis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3Njcmlw
dD4KKzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2Ny
aXB0PgorCis8c3R5bGU+CisjdGVzdEF1dG8geworICAgIHN1cHBvcnRlZC1jb2xvci1zY2hlbWVz
OiBhdXRvOworfQorCisjdGVzdE9ubHkgeworICAgIHN1cHBvcnRlZC1jb2xvci1zY2hlbWVzOiBv
bmx5OworfQorCisjdGVzdExpZ2h0IHsKKyAgICBzdXBwb3J0ZWQtY29sb3Itc2NoZW1lczogbGln
aHQ7Cit9CisKKyN0ZXN0RGFyayB7CisgICAgc3VwcG9ydGVkLWNvbG9yLXNjaGVtZXM6IGRhcms7
Cit9CisKKyN0ZXN0TGlnaHREYXJrIHsKKyAgICBzdXBwb3J0ZWQtY29sb3Itc2NoZW1lczogbGln
aHQgZGFyazsKK30KKworI3Rlc3REYXJrTGlnaHQgeworICAgIHN1cHBvcnRlZC1jb2xvci1zY2hl
bWVzOiBkYXJrIGxpZ2h0OworfQorCisjdGVzdExpZ2h0RGFya09ubHkgeworICAgIHN1cHBvcnRl
ZC1jb2xvci1zY2hlbWVzOiBsaWdodCBkYXJrIG9ubHk7Cit9CisKKyN0ZXN0T25seURhcmsgewor
ICAgIHN1cHBvcnRlZC1jb2xvci1zY2hlbWVzOiBvbmx5IGRhcms7Cit9CisKKyN0ZXN0TGlnaHRP
bmx5RGFyayB7CisgICAgc3VwcG9ydGVkLWNvbG9yLXNjaGVtZXM6IGxpZ2h0IG9ubHkgZGFyazsK
K30KKworI3Rlc3RMaWdodFVua25vd24geworICAgIHN1cHBvcnRlZC1jb2xvci1zY2hlbWVzOiBs
aWdodCBmb287Cit9CisKKyN0ZXN0VW5rbm93bkRhcmtPbmx5IHsKKyAgICBzdXBwb3J0ZWQtY29s
b3Itc2NoZW1lczogYmFyIGRhcmsgb25seTsKK30KKworI3Rlc3RMaWdodFVua25vd25Pbmx5IHsK
KyAgICBzdXBwb3J0ZWQtY29sb3Itc2NoZW1lczogbGlnaHQgYmF6IG9ubHk7Cit9CisKKyN0ZXN0
SW52YWxpZExpZ2h0QXV0byB7CisgICAgc3VwcG9ydGVkLWNvbG9yLXNjaGVtZXM6IGxpZ2h0IGF1
dG87Cit9CisKKyN0ZXN0SW52YWxpZEF1dG9EYXJrIHsKKyAgICBzdXBwb3J0ZWQtY29sb3Itc2No
ZW1lczogYXV0byBkYXJrOworfQorCisjdGVzdEludmFsaWRMaWdodERhcmtMaWdodCB7CisgICAg
c3VwcG9ydGVkLWNvbG9yLXNjaGVtZXM6IGxpZ2h0IGRhcmsgbGlnaHQ7Cit9CisKKyN0ZXN0SW52
YWxpZE51bWJlciB7CisgICAgc3VwcG9ydGVkLWNvbG9yLXNjaGVtZXM6IDQyOworfQorCisjdGVz
dEludmFsaWRTdHJpbmcgeworICAgIHN1cHBvcnRlZC1jb2xvci1zY2hlbWVzOiAiZm9vIjsKK30K
KworI3Rlc3RJbnZhbGlkTGlnaHRTdHJpbmcgeworICAgIHN1cHBvcnRlZC1jb2xvci1zY2hlbWVz
OiBsaWdodCAiZm9vIjsKK30KKzwvc3R5bGU+CisKKzxkaXYgaWQ9InRlc3RBdXRvIj48L2Rpdj4K
KzxkaXYgaWQ9InRlc3RPbmx5Ij48L2Rpdj4KKzxkaXYgaWQ9InRlc3RMaWdodCI+PC9kaXY+Cis8
ZGl2IGlkPSJ0ZXN0RGFyayI+PC9kaXY+Cis8ZGl2IGlkPSJ0ZXN0TGlnaHREYXJrIj48L2Rpdj4K
KzxkaXYgaWQ9InRlc3REYXJrTGlnaHQiPjwvZGl2PgorPGRpdiBpZD0idGVzdExpZ2h0RGFya09u
bHkiPjwvZGl2PgorPGRpdiBpZD0idGVzdE9ubHlEYXJrIj48L2Rpdj4KKzxkaXYgaWQ9InRlc3RM
aWdodE9ubHlEYXJrIj48L2Rpdj4KKzxkaXYgaWQ9InRlc3RMaWdodFVua25vd24iPjwvZGl2Pgor
PGRpdiBpZD0idGVzdFVua25vd25EYXJrT25seSI+PC9kaXY+CisKKzxkaXYgaWQ9InRlc3RJbnZh
bGlkTGlnaHRBdXRvIj48L2Rpdj4KKzxkaXYgaWQ9InRlc3RJbnZhbGlkQXV0b0RhcmsiPjwvZGl2
PgorPGRpdiBpZD0idGVzdEludmFsaWRMaWdodERhcmtMaWdodCI+PC9kaXY+Cis8ZGl2IGlkPSJ0
ZXN0SW52YWxpZE51bWJlciI+PC9kaXY+Cis8ZGl2IGlkPSJ0ZXN0SW52YWxpZFN0cmluZyI+PC9k
aXY+Cis8ZGl2IGlkPSJ0ZXN0SW52YWxpZExpZ2h0U3RyaW5nIj48L2Rpdj4KKworPHNjcmlwdD4K
K2Z1bmN0aW9uIHRlc3RfcHJvcChpZCwgcHJvcGVydHksIGV4cGVjdGVkKSB7CisgICAgYXNzZXJ0
X2VxdWFscyh3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShkb2N1bWVudC5nZXRFbGVtZW50QnlJZChp
ZCkpLmdldFByb3BlcnR5VmFsdWUocHJvcGVydHkpLCBleHBlY3RlZCk7Cit9CisKK3Rlc3QoZnVu
Y3Rpb24oKSB7CisgICAgdGVzdF9wcm9wKCJ0ZXN0QXV0byIsICJzdXBwb3J0ZWQtY29sb3Itc2No
ZW1lcyIsICJhdXRvIik7CisgICAgdGVzdF9wcm9wKCJ0ZXN0T25seSIsICJzdXBwb3J0ZWQtY29s
b3Itc2NoZW1lcyIsICJsaWdodCBvbmx5Iik7CisgICAgdGVzdF9wcm9wKCJ0ZXN0TGlnaHQiLCAi
c3VwcG9ydGVkLWNvbG9yLXNjaGVtZXMiLCAibGlnaHQiKTsKKyAgICB0ZXN0X3Byb3AoInRlc3RE
YXJrIiwgInN1cHBvcnRlZC1jb2xvci1zY2hlbWVzIiwgImRhcmsiKTsKKyAgICB0ZXN0X3Byb3Ao
InRlc3RMaWdodERhcmsiLCAic3VwcG9ydGVkLWNvbG9yLXNjaGVtZXMiLCAibGlnaHQgZGFyayIp
OworICAgIHRlc3RfcHJvcCgidGVzdERhcmtMaWdodCIsICJzdXBwb3J0ZWQtY29sb3Itc2NoZW1l
cyIsICJsaWdodCBkYXJrIik7CisgICAgdGVzdF9wcm9wKCJ0ZXN0TGlnaHREYXJrT25seSIsICJz
dXBwb3J0ZWQtY29sb3Itc2NoZW1lcyIsICJsaWdodCBkYXJrIG9ubHkiKTsKKyAgICB0ZXN0X3By
b3AoInRlc3RPbmx5RGFyayIsICJzdXBwb3J0ZWQtY29sb3Itc2NoZW1lcyIsICJkYXJrIG9ubHki
KTsKKyAgICB0ZXN0X3Byb3AoInRlc3RMaWdodE9ubHlEYXJrIiwgInN1cHBvcnRlZC1jb2xvci1z
Y2hlbWVzIiwgImxpZ2h0IGRhcmsgb25seSIpOworICAgIHRlc3RfcHJvcCgidGVzdExpZ2h0VW5r
bm93biIsICJzdXBwb3J0ZWQtY29sb3Itc2NoZW1lcyIsICJsaWdodCIpOworICAgIHRlc3RfcHJv
cCgidGVzdFVua25vd25EYXJrT25seSIsICJzdXBwb3J0ZWQtY29sb3Itc2NoZW1lcyIsICJkYXJr
IG9ubHkiKTsKK30sICJUZXN0IHZhbGlkIHZhbHVlcyIpOworCit0ZXN0KGZ1bmN0aW9uKCkgewor
ICAgIHRlc3RfcHJvcCgidGVzdEludmFsaWRMaWdodEF1dG8iLCAic3VwcG9ydGVkLWNvbG9yLXNj
aGVtZXMiLCAiYXV0byIpOworICAgIHRlc3RfcHJvcCgidGVzdEludmFsaWRBdXRvRGFyayIsICJz
dXBwb3J0ZWQtY29sb3Itc2NoZW1lcyIsICJhdXRvIik7CisgICAgdGVzdF9wcm9wKCJ0ZXN0SW52
YWxpZExpZ2h0RGFya0xpZ2h0IiwgInN1cHBvcnRlZC1jb2xvci1zY2hlbWVzIiwgImF1dG8iKTsK
KyAgICB0ZXN0X3Byb3AoInRlc3RJbnZhbGlkTnVtYmVyIiwgInN1cHBvcnRlZC1jb2xvci1zY2hl
bWVzIiwgImF1dG8iKTsKKyAgICB0ZXN0X3Byb3AoInRlc3RJbnZhbGlkU3RyaW5nIiwgInN1cHBv
cnRlZC1jb2xvci1zY2hlbWVzIiwgImF1dG8iKTsKKyAgICB0ZXN0X3Byb3AoInRlc3RJbnZhbGlk
TGlnaHRTdHJpbmciLCAic3VwcG9ydGVkLWNvbG9yLXNjaGVtZXMiLCAiYXV0byIpOworfSwgIlRl
c3QgaW52YWxpZCB2YWx1ZXMiKTsKKzwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
Y3NzLWRhcmstbW9kZS9zdXBwb3J0ZWQtY29sb3Itc2NoZW1lcy1jc3MtZXhwZWN0ZWQudHh0IGIv
TGF5b3V0VGVzdHMvY3NzLWRhcmstbW9kZS9zdXBwb3J0ZWQtY29sb3Itc2NoZW1lcy1jc3MtZXhw
ZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLmNkZGQ1NmY2MzM5YzMzZTYyZWFmZjRmNGM2Mjg1MTc1ZWVi
NDVmNDgKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9jc3MtZGFyay1tb2RlL3N1cHBv
cnRlZC1jb2xvci1zY2hlbWVzLWNzcy1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwyOCBAQAorCitQ
QVNTIEVsZW1lbnQgY29sb3JzIGFyZSBjb3JyZWN0IGluIGxpZ2h0IGNvbG9yIHNjaGVtZSB3aXRo
IG9ubHkgbGlnaHQgc3VwcG9ydGVkIGNvbG9yIHNjaGVtZSAKK1BBU1MgRGFyayBjb2xvciBzY2hl
bWUgZW5hYmxlZCAKK1BBU1MgRWxlbWVudCBjb2xvcnMgYXJlIGNvcnJlY3QgaW4gZGFyayBjb2xv
ciBzY2hlbWUgd2l0aCBvbmx5IGxpZ2h0IHN1cHBvcnRlZCBjb2xvciBzY2hlbWUgCitQQVNTIExp
Z2h0IGNvbG9yIHNjaGVtZSBlbmFibGVkIAorUEFTUyBTdXBwb3J0ZWQgY29sb3Igc2NoZW1lcyBj
aGFuZ2VkIHRvIGxpZ2h0IGFuZCBkYXJrIAorUEFTUyBFbGVtZW50IGNvbG9ycyBhcmUgY29ycmVj
dCBpbiBsaWdodCBjb2xvciBzY2hlbWUgd2l0aCBsaWdodCBhbmQgZGFyayBzdXBwb3J0ZWQgY29s
b3Igc2NoZW1lIAorUEFTUyBEYXJrIGNvbG9yIHNjaGVtZSBlbmFibGVkIAorUEFTUyBFbGVtZW50
IGNvbG9ycyBhcmUgY29ycmVjdCBpbiBkYXJrIGNvbG9yIHNjaGVtZSB3aXRoIGxpZ2h0IGFuZCBk
YXJrIHN1cHBvcnRlZCBjb2xvciBzY2hlbWUgCitQQVNTIExpZ2h0IGNvbG9yIHNjaGVtZSBlbmFi
bGVkIAorUEFTUyBTdXBwb3J0ZWQgY29sb3Igc2NoZW1lcyBjaGFuZ2VkIHRvIGRhcmsgCitQQVNT
IEVsZW1lbnQgY29sb3JzIGFyZSBjb3JyZWN0IGluIGxpZ2h0IGNvbG9yIHNjaGVtZSB3aXRoIG9u
bHkgZGFyayBzdXBwb3J0ZWQgY29sb3Igc2NoZW1lIAorUEFTUyBEYXJrIGNvbG9yIHNjaGVtZSBl
bmFibGVkIAorUEFTUyBFbGVtZW50IGNvbG9ycyBhcmUgY29ycmVjdCBpbiBkYXJrIGNvbG9yIHNj
aGVtZSB3aXRoIG9ubHkgZGFyayBzdXBwb3J0ZWQgY29sb3Igc2NoZW1lIAorUEFTUyBTdXBwb3J0
ZWQgY29sb3Igc2NoZW1lcyBjaGFuZ2VkIHRvIGxpZ2h0IGFuZCBhIGJvZ3VzIHZhbHVlIAorUEFT
UyBFbGVtZW50IGNvbG9ycyBhcmUgY29ycmVjdCBpbiBkYXJrIGNvbG9yIHNjaGVtZSB3aXRoIG9u
bHkgbGlnaHQgc3VwcG9ydGVkIGNvbG9yIHNjaGVtZSAKK1BBU1MgU3VwcG9ydGVkIGNvbG9yIHNj
aGVtZXMgY2hhbmdlZCB0byBhdXRvIHZhbHVlIAorUEFTUyBFbGVtZW50IGNvbG9ycyBhcmUgY29y
cmVjdCBpbiBkYXJrIGNvbG9yIHNjaGVtZSB3aXRoIGltcGxpY2l0IGxpZ2h0IHN1cHBvcnRlZCBj
b2xvciBzY2hlbWUgCitQQVNTIFN1cHBvcnRlZCBjb2xvciBzY2hlbWVzIGNoYW5nZWQgdG8gbGln
aHQgYW5kIGRhcmsgdmlhIDxtZXRhPiBlbGVtZW50IAorUEFTUyBFbGVtZW50IGNvbG9ycyBhcmUg
Y29ycmVjdCBpbiBkYXJrIGNvbG9yIHNjaGVtZSB3aXRoIGxpZ2h0IGFuZCBkYXJrIHN1cHBvcnRl
ZCBjb2xvciBzY2hlbWUgdmlhIDxtZXRhPiBlbGVtZW50IAorUEFTUyBTdXBwb3J0ZWQgY29sb3Ig
c2NoZW1lcyBjaGFuZ2VkIHRvIGxpZ2h0IHZhbHVlIAorUEFTUyBFbGVtZW50IGNvbG9ycyBhcmUg
Y29ycmVjdCBpbiBkYXJrIGNvbG9yIHNjaGVtZSB3aXRoIGV4cGxpY2l0IGxpZ2h0LCBvdmVycmlk
aW5nIDxtZXRhPiBlbGVtZW50IAorUEFTUyBSZW1vdmUgdGVzdCBtZXRhIGVsZW1lbnQgCitQQVNT
IFN1cHBvcnRlZCBjb2xvciBzY2hlbWVzIGNoYW5nZWQgdG8gbGlnaHQgYW5kIGRhcmsgCitQQVNT
IEVsZW1lbnQgY29sb3JzIGFyZSBjb3JyZWN0IGluIGRhcmsgY29sb3Igc2NoZW1lIHdpdGggbGln
aHQgYW5kIGRhcmsgc3VwcG9ydGVkIGNvbG9yIHNjaGVtZSAKK1BBU1MgU3VwcG9ydGVkIGNvbG9y
IHNjaGVtZXMgY2hhbmdlZCB0byBhIGJvZ3VzIHZhbHVlIGFuZCBkYXJrIAorUEFTUyBFbGVtZW50
IGNvbG9ycyBhcmUgY29ycmVjdCBpbiBkYXJrIGNvbG9yIHNjaGVtZSB3aXRoIGRhcmsgc3VwcG9y
dGVkIGNvbG9yIHNjaGVtZSAKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvY3NzLWRhcmstbW9k
ZS9zdXBwb3J0ZWQtY29sb3Itc2NoZW1lcy1jc3MuaHRtbCBiL0xheW91dFRlc3RzL2Nzcy1kYXJr
LW1vZGUvc3VwcG9ydGVkLWNvbG9yLXNjaGVtZXMtY3NzLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjZjYTY4
MDFhZjRlN2EyNGQ4NDcwYjJkOTdkNzBlMThmNzZiOWNmZQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2Nzcy1kYXJrLW1vZGUvc3VwcG9ydGVkLWNvbG9yLXNjaGVtZXMtY3NzLmh0bWwK
QEAgLTAsMCArMSwxNTMgQEAKKzwhRE9DVFlQRSBodG1sPgorCis8IS0tIHdlYmtpdC10ZXN0LXJ1
bm5lciBbIGV4cGVyaW1lbnRhbDpEYXJrTW9kZUNTU0VuYWJsZWQ9dHJ1ZSBdIC0tPgorCis8c2Ny
aXB0IHNyYz0iLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQg
c3JjPSIuLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgorCis8c3R5
bGU+CisjdGVzdDEgeworICAgIGNvbG9yOiB0ZXh0OworfQorPC9zdHlsZT4KKworPGRpdiBpZD0i
dGVzdDEiPjwvZGl2PgorCis8c2NyaXB0PgorZnVuY3Rpb24gdGVzdF9wcm9wKGlkLCBwcm9wLCBl
eHBlY3RlZCkgeworICAgIGFzc2VydF9lcXVhbHMod2luZG93LmdldENvbXB1dGVkU3R5bGUoZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoaWQpKS5nZXRQcm9wZXJ0eVZhbHVlKHByb3ApLCBleHBlY3Rl
ZCk7Cit9CisKK2Z1bmN0aW9uIHRlc3RfY29sb3JfaXNfd2hpdGUoaWQpIHsKKyAgICB0ZXN0X3By
b3AoInRlc3QxIiwgImNvbG9yIiwgInJnYigyNTUsIDI1NSwgMjU1KSIpOworfQorCitmdW5jdGlv
biB0ZXN0X2NvbG9yX2lzX2JsYWNrKGlkKSB7CisgICAgdGVzdF9wcm9wKCJ0ZXN0MSIsICJjb2xv
ciIsICJyZ2IoMCwgMCwgMCkiKTsKK30KKwordGVzdChmdW5jdGlvbigpIHsKKyAgICAvLyBUaGUg
c2VtYW50aWMgdGV4dCBjb2xvciBzaG91bGQgYmUgYmxhY2suCisgICAgdGVzdF9jb2xvcl9pc19i
bGFjaygidGVzdDEiKTsKK30sICJFbGVtZW50IGNvbG9ycyBhcmUgY29ycmVjdCBpbiBsaWdodCBj
b2xvciBzY2hlbWUgd2l0aCBvbmx5IGxpZ2h0IHN1cHBvcnRlZCBjb2xvciBzY2hlbWUiKTsKKwor
dGVzdChmdW5jdGlvbigpIHsKKyAgICBpZiAod2luZG93LmludGVybmFscykKKyAgICAgICAgaW50
ZXJuYWxzLnNldHRpbmdzLnNldFVzZURhcmtBcHBlYXJhbmNlKHRydWUpOworfSwgIkRhcmsgY29s
b3Igc2NoZW1lIGVuYWJsZWQiKTsKKwordGVzdChmdW5jdGlvbigpIHsKKyAgICAvLyBUaGUgc2Vt
YW50aWMgdGV4dCBjb2xvciBzaG91bGQgYmUgYmxhY2ssIGFuZCBub3QgY2hhbmdlLgorICAgIHRl
c3RfY29sb3JfaXNfYmxhY2soInRlc3QxIik7Cit9LCAiRWxlbWVudCBjb2xvcnMgYXJlIGNvcnJl
Y3QgaW4gZGFyayBjb2xvciBzY2hlbWUgd2l0aCBvbmx5IGxpZ2h0IHN1cHBvcnRlZCBjb2xvciBz
Y2hlbWUiKTsKKwordGVzdChmdW5jdGlvbigpIHsKKyAgICBpZiAod2luZG93LmludGVybmFscykK
KyAgICAgICAgaW50ZXJuYWxzLnNldHRpbmdzLnNldFVzZURhcmtBcHBlYXJhbmNlKGZhbHNlKTsK
K30sICJMaWdodCBjb2xvciBzY2hlbWUgZW5hYmxlZCIpOworCit0ZXN0KGZ1bmN0aW9uKCkgewor
ICAgIGRvY3VtZW50LmJvZHkuc3R5bGUuc2V0UHJvcGVydHkoInN1cHBvcnRlZC1jb2xvci1zY2hl
bWVzIiwgImxpZ2h0IGRhcmsiKTsKK30sICJTdXBwb3J0ZWQgY29sb3Igc2NoZW1lcyBjaGFuZ2Vk
IHRvIGxpZ2h0IGFuZCBkYXJrIik7CisKK3Rlc3QoZnVuY3Rpb24oKSB7CisgICAgLy8gVGhlIHNl
bWFudGljIHRleHQgY29sb3Igc2hvdWxkIGJlIGJsYWNrLgorICAgIHRlc3RfY29sb3JfaXNfYmxh
Y2soInRlc3QxIik7Cit9LCAiRWxlbWVudCBjb2xvcnMgYXJlIGNvcnJlY3QgaW4gbGlnaHQgY29s
b3Igc2NoZW1lIHdpdGggbGlnaHQgYW5kIGRhcmsgc3VwcG9ydGVkIGNvbG9yIHNjaGVtZSIpOwor
Cit0ZXN0KGZ1bmN0aW9uKCkgeworICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzKQorICAgICAgICBp
bnRlcm5hbHMuc2V0dGluZ3Muc2V0VXNlRGFya0FwcGVhcmFuY2UodHJ1ZSk7Cit9LCAiRGFyayBj
b2xvciBzY2hlbWUgZW5hYmxlZCIpOworCit0ZXN0KGZ1bmN0aW9uKCkgeworICAgIC8vIFRoZSBz
ZW1hbnRpYyB0ZXh0IGNvbG9yIHNob3VsZCBiZSB3aGl0ZS4KKyAgICB0ZXN0X2NvbG9yX2lzX3do
aXRlKCJ0ZXN0MSIpOworfSwgIkVsZW1lbnQgY29sb3JzIGFyZSBjb3JyZWN0IGluIGRhcmsgY29s
b3Igc2NoZW1lIHdpdGggbGlnaHQgYW5kIGRhcmsgc3VwcG9ydGVkIGNvbG9yIHNjaGVtZSIpOwor
Cit0ZXN0KGZ1bmN0aW9uKCkgeworICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzKQorICAgICAgICBp
bnRlcm5hbHMuc2V0dGluZ3Muc2V0VXNlRGFya0FwcGVhcmFuY2UoZmFsc2UpOworfSwgIkxpZ2h0
IGNvbG9yIHNjaGVtZSBlbmFibGVkIik7CisKK3Rlc3QoZnVuY3Rpb24oKSB7CisgICAgZG9jdW1l
bnQuYm9keS5zdHlsZS5zZXRQcm9wZXJ0eSgic3VwcG9ydGVkLWNvbG9yLXNjaGVtZXMiLCAiZGFy
ayIpOworfSwgIlN1cHBvcnRlZCBjb2xvciBzY2hlbWVzIGNoYW5nZWQgdG8gZGFyayIpOworCit0
ZXN0KGZ1bmN0aW9uKCkgeworICAgIC8vIFRoZSBzZW1hbnRpYyB0ZXh0IGNvbG9yIHNob3VsZCBi
ZSB3aGl0ZS4KKyAgICB0ZXN0X2NvbG9yX2lzX3doaXRlKCJ0ZXN0MSIpOworfSwgIkVsZW1lbnQg
Y29sb3JzIGFyZSBjb3JyZWN0IGluIGxpZ2h0IGNvbG9yIHNjaGVtZSB3aXRoIG9ubHkgZGFyayBz
dXBwb3J0ZWQgY29sb3Igc2NoZW1lIik7CisKK3Rlc3QoZnVuY3Rpb24oKSB7CisgICAgaWYgKHdp
bmRvdy5pbnRlcm5hbHMpCisgICAgICAgIGludGVybmFscy5zZXR0aW5ncy5zZXRVc2VEYXJrQXBw
ZWFyYW5jZSh0cnVlKTsKK30sICJEYXJrIGNvbG9yIHNjaGVtZSBlbmFibGVkIik7CisKK3Rlc3Qo
ZnVuY3Rpb24oKSB7CisgICAgLy8gVGhlIHNlbWFudGljIHRleHQgY29sb3Igc2hvdWxkIGJlIHdo
aXRlIHN0aWxsLgorICAgIHRlc3RfY29sb3JfaXNfd2hpdGUoInRlc3QxIik7Cit9LCAiRWxlbWVu
dCBjb2xvcnMgYXJlIGNvcnJlY3QgaW4gZGFyayBjb2xvciBzY2hlbWUgd2l0aCBvbmx5IGRhcmsg
c3VwcG9ydGVkIGNvbG9yIHNjaGVtZSIpOworCit0ZXN0KGZ1bmN0aW9uKCkgeworICAgIGRvY3Vt
ZW50LmJvZHkuc3R5bGUuc2V0UHJvcGVydHkoInN1cHBvcnRlZC1jb2xvci1zY2hlbWVzIiwgImxp
Z2h0IGZvbyIpOworfSwgIlN1cHBvcnRlZCBjb2xvciBzY2hlbWVzIGNoYW5nZWQgdG8gbGlnaHQg
YW5kIGEgYm9ndXMgdmFsdWUiKTsKKwordGVzdChmdW5jdGlvbigpIHsKKyAgICAvLyBUaGUgc2Vt
YW50aWMgdGV4dCBjb2xvciBzaG91bGQgYmUgYmxhY2sgYWdhaW4uCisgICAgdGVzdF9jb2xvcl9p
c19ibGFjaygidGVzdDEiKTsKK30sICJFbGVtZW50IGNvbG9ycyBhcmUgY29ycmVjdCBpbiBkYXJr
IGNvbG9yIHNjaGVtZSB3aXRoIG9ubHkgbGlnaHQgc3VwcG9ydGVkIGNvbG9yIHNjaGVtZSIpOwor
Cit0ZXN0KGZ1bmN0aW9uKCkgeworICAgIGRvY3VtZW50LmJvZHkuc3R5bGUuc2V0UHJvcGVydHko
InN1cHBvcnRlZC1jb2xvci1zY2hlbWVzIiwgImF1dG8iKTsKK30sICJTdXBwb3J0ZWQgY29sb3Ig
c2NoZW1lcyBjaGFuZ2VkIHRvIGF1dG8gdmFsdWUiKTsKKwordGVzdChmdW5jdGlvbigpIHsKKyAg
ICAvLyBUaGUgc2VtYW50aWMgdGV4dCBjb2xvciBzaG91bGQgYmUgYmxhY2sgc3RpbGwuCisgICAg
dGVzdF9jb2xvcl9pc19ibGFjaygidGVzdDEiKTsKK30sICJFbGVtZW50IGNvbG9ycyBhcmUgY29y
cmVjdCBpbiBkYXJrIGNvbG9yIHNjaGVtZSB3aXRoIGltcGxpY2l0IGxpZ2h0IHN1cHBvcnRlZCBj
b2xvciBzY2hlbWUiKTsKKwordGVzdChmdW5jdGlvbigpIHsKKyAgICBsZXQgbWV0YSA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnQoIm1ldGEiKTsKKyAgICBtZXRhLmlkID0gInRlc3QtbWV0YSI7Cisg
ICAgbWV0YS5uYW1lID0gInN1cHBvcnRlZC1jb2xvci1zY2hlbWVzIjsKKyAgICBtZXRhLmNvbnRl
bnQgPSAibGlnaHQgZGFyayI7CisgICAgZG9jdW1lbnQuaGVhZC5hcHBlbmRDaGlsZChtZXRhKTsK
K30sICJTdXBwb3J0ZWQgY29sb3Igc2NoZW1lcyBjaGFuZ2VkIHRvIGxpZ2h0IGFuZCBkYXJrIHZp
YSA8bWV0YT4gZWxlbWVudCIpOworCit0ZXN0KGZ1bmN0aW9uKCkgeworICAgIC8vIFRoZSBzZW1h
bnRpYyB0ZXh0IGNvbG9yIHNob3VsZCBiZSB3aGl0ZSBub3cuCisgICAgdGVzdF9jb2xvcl9pc193
aGl0ZSgidGVzdDEiKTsKK30sICJFbGVtZW50IGNvbG9ycyBhcmUgY29ycmVjdCBpbiBkYXJrIGNv
bG9yIHNjaGVtZSB3aXRoIGxpZ2h0IGFuZCBkYXJrIHN1cHBvcnRlZCBjb2xvciBzY2hlbWUgdmlh
IDxtZXRhPiBlbGVtZW50Iik7CisKK3Rlc3QoZnVuY3Rpb24oKSB7CisgICAgZG9jdW1lbnQuYm9k
eS5zdHlsZS5zZXRQcm9wZXJ0eSgic3VwcG9ydGVkLWNvbG9yLXNjaGVtZXMiLCAibGlnaHQiKTsK
K30sICJTdXBwb3J0ZWQgY29sb3Igc2NoZW1lcyBjaGFuZ2VkIHRvIGxpZ2h0IHZhbHVlIik7CisK
K3Rlc3QoZnVuY3Rpb24oKSB7CisgICAgLy8gVGhlIHNlbWFudGljIHRleHQgY29sb3Igc2hvdWxk
IGJlIGJsYWNrIGFnYWluLgorICAgIHRlc3RfY29sb3JfaXNfYmxhY2soInRlc3QxIik7Cit9LCAi
RWxlbWVudCBjb2xvcnMgYXJlIGNvcnJlY3QgaW4gZGFyayBjb2xvciBzY2hlbWUgd2l0aCBleHBs
aWNpdCBsaWdodCwgb3ZlcnJpZGluZyA8bWV0YT4gZWxlbWVudCIpOworCit0ZXN0KGZ1bmN0aW9u
KCkgeworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0ZXN0LW1ldGEiKS5yZW1vdmUoKTsK
K30sICJSZW1vdmUgdGVzdCBtZXRhIGVsZW1lbnQiKTsKKwordGVzdChmdW5jdGlvbigpIHsKKyAg
ICBkb2N1bWVudC5ib2R5LnN0eWxlLnNldFByb3BlcnR5KCJzdXBwb3J0ZWQtY29sb3Itc2NoZW1l
cyIsICJsaWdodCBkYXJrIik7Cit9LCAiU3VwcG9ydGVkIGNvbG9yIHNjaGVtZXMgY2hhbmdlZCB0
byBsaWdodCBhbmQgZGFyayIpOworCit0ZXN0KGZ1bmN0aW9uKCkgeworICAgIC8vIFRoZSBzZW1h
bnRpYyB0ZXh0IGNvbG9yIHNob3VsZCBiZSB3aGl0ZSBub3cuCisgICAgdGVzdF9jb2xvcl9pc193
aGl0ZSgidGVzdDEiKTsKK30sICJFbGVtZW50IGNvbG9ycyBhcmUgY29ycmVjdCBpbiBkYXJrIGNv
bG9yIHNjaGVtZSB3aXRoIGxpZ2h0IGFuZCBkYXJrIHN1cHBvcnRlZCBjb2xvciBzY2hlbWUiKTsK
KwordGVzdChmdW5jdGlvbigpIHsKKyAgICBkb2N1bWVudC5ib2R5LnN0eWxlLnNldFByb3BlcnR5
KCJzdXBwb3J0ZWQtY29sb3Itc2NoZW1lcyIsICJmb28gZGFyayIpOworfSwgIlN1cHBvcnRlZCBj
b2xvciBzY2hlbWVzIGNoYW5nZWQgdG8gYSBib2d1cyB2YWx1ZSBhbmQgZGFyayIpOworCit0ZXN0
KGZ1bmN0aW9uKCkgeworICAgIC8vIFRoZSBzZW1hbnRpYyB0ZXh0IGNvbG9yIHNob3VsZCBiZSB3
aGl0ZSBzdGlsbC4KKyAgICB0ZXN0X2NvbG9yX2lzX3doaXRlKCJ0ZXN0MSIpOworfSwgIkVsZW1l
bnQgY29sb3JzIGFyZSBjb3JyZWN0IGluIGRhcmsgY29sb3Igc2NoZW1lIHdpdGggZGFyayBzdXBw
b3J0ZWQgY29sb3Igc2NoZW1lIik7Cis8L3NjcmlwdD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>354214</attachid>
            <date>2018-11-08 01:07:12 -0800</date>
            <delta_ts>2018-11-08 01:19:48 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-191319-20181108010711.patch</filename>
            <type>text/plain</type>
            <size>75483</size>
            <attacher name="Timothy Hatcher">timothy</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM3OTgyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjQzMjBlZTM0ODU0NzM2
NGYyMzE2MmRkMGQxNTVmMjM5MmMxMzkzMi4uYTk1NzNiODcxZjU3NTlmOTUzOWY2NjJlNDQwZTQy
ZTkxNGRiNGExZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEwNiBAQAorMjAxOC0xMS0wOCAgVGlt
b3RoeSBIYXRjaGVyICA8dGltb3RoeUBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIGV4cGVyaW1l
bnRhbCBzdXBwb3J0IGZvciBhIGBzdXBwb3J0ZWQtY29sb3Itc2NoZW1lc2AgQ1NTIHByb3BlcnR5
LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkxMzE5
CisgICAgICAgIHJkYXI6Ly9wcm9ibGVtLzQ1ODUyMjYxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGVzdHM6IGNzcy1kYXJrLW1vZGUvcGFyc2Utc3Vw
cG9ydGVkLWNvbG9yLXNjaGVtZXMuaHRtbAorICAgICAgICAgICAgICAgY3NzLWRhcmstbW9kZS9z
dXBwb3J0ZWQtY29sb3Itc2NoZW1lcy1jc3MuaHRtbAorCisgICAgICAgICogV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGNzcy9DU1NDb21wdXRlZFN0eWxlRGVj
bGFyYXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29tcHV0ZWRTdHlsZUV4dHJhY3Rvcjo6
dmFsdWVGb3JQcm9wZXJ0eWluU3R5bGUpOgorICAgICAgICAqIGNzcy9DU1NQcm9wZXJ0aWVzLmpz
b246CisgICAgICAgICogY3NzL0NTU1ZhbHVlS2V5d29yZHMuaW46CisgICAgICAgICogY3NzL1N0
eWxlQnVpbGRlckNvbnZlcnRlci5oOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVCdWlsZGVyQ29u
dmVydGVyOjp1cGRhdGVTdXBwb3J0ZWRDb2xvclNjaGVtZXMpOgorICAgICAgICAoV2ViQ29yZTo6
U3R5bGVCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0U3VwcG9ydGVkQ29sb3JTY2hlbWVzKToKKyAg
ICAgICAgKiBjc3MvU3R5bGVSZXNvbHZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJl
c29sdmVyOjpjb2xvckZyb21QcmltaXRpdmVWYWx1ZSBjb25zdCk6CisgICAgICAgICogY3NzL3Bh
cnNlci9DU1NQcm9wZXJ0eVBhcnNlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjb25zdW1lU3Vw
cG9ydGVkQ29sb3JTY2hlbWVzKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1Byb3BlcnR5UGFyc2Vy
OjpwYXJzZVNpbmdsZVZhbHVlKToKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnJlc2V0TGlua0NvbG9yKToKKyAgICAgICAgKFdlYkNvcmU6
OkRvY3VtZW50OjpyZXNldFZpc2l0ZWRMaW5rQ29sb3IpOgorICAgICAgICAoV2ViQ29yZTo6RG9j
dW1lbnQ6OnJlc2V0QWN0aXZlTGlua0NvbG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50
Ojpwcm9jZXNzU3VwcG9ydGVkQ29sb3JTY2hlbWVzKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3Vt
ZW50Ojp1c2VEYXJrQXBwZWFyYW5jZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVu
dDo6c3R5bGVDb2xvck9wdGlvbnMgY29uc3QpOgorICAgICAgICAqIGRvbS9Eb2N1bWVudC5oOgor
ICAgICAgICAqIGVkaXRpbmcvY29jb2EvV2ViQ29udGVudFJlYWRlckNvY29hLm1tOgorICAgICAg
ICAoV2ViQ29yZTo6Y3JlYXRlRnJhZ21lbnQpOgorICAgICAgICAqIGh0bWwvY2FudmFzL0NhbnZh
c1JlbmRlcmluZ0NvbnRleHQyRC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNSZW5kZXJp
bmdDb250ZXh0MkQ6OmRyYXdGb2N1c0lmTmVlZGVkSW50ZXJuYWwpOgorICAgICAgICAqIGluc3Bl
Y3Rvci9JbnNwZWN0b3JPdmVybGF5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvck92
ZXJsYXk6OnBhaW50KToKKyAgICAgICAgKiBwYWdlL0ZyYW1lVmlldy5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpGcmFtZVZpZXc6OnVzZURhcmtBcHBlYXJhbmNlIGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6OkZyYW1lVmlldzo6cGFpbnRTY3JvbGxDb3JuZXIpOgorICAgICAgICAqIHBsYXRmb3Jt
L21hYy9EcmFnSW1hZ2VNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVEcmFnSW1hZ2VG
b3JMaW5rKToKKyAgICAgICAgKiByZW5kZXJpbmcvSW5saW5lRmxvd0JveC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpJbmxpbmVGbG93Qm94OjpwYWludEJveERlY29yYXRpb25zKToKKyAgICAgICAg
KiByZW5kZXJpbmcvSW5saW5lVGV4dEJveC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVU
ZXh0Qm94OjpwYWludFBsYXRmb3JtRG9jdW1lbnRNYXJrZXIpOgorICAgICAgICAqIHJlbmRlcmlu
Zy9SZW5kZXJCb3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94OjpwYWludFJvb3RC
b3hGaWxsTGF5ZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveDo6cGFpbnRCYWNrZ3Jv
dW5kKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJFbGVtZW50OjpzZWxlY3Rpb25Db2xvciBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJFbGVtZW50OjpzZWxlY3Rpb25CYWNrZ3JvdW5kQ29sb3IgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRWxlbWVudDo6cGFpbnRGb2N1c1JpbmcpOgorICAgICAg
ICAqIHJlbmRlcmluZy9SZW5kZXJJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJJ
bWFnZTo6cGFpbnRBcmVhRWxlbWVudEZvY3VzUmluZyk6CisgICAgICAgICogcmVuZGVyaW5nL1Jl
bmRlckxheWVyQmFja2luZy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllckJhY2tp
bmc6OnBhaW50Q29udGVudHMpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXllckNvbXBv
c2l0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpwYWlu
dENvbnRlbnRzKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGlzdEJveC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJMaXN0Qm94OjpwYWludEl0ZW1Gb3JlZ3JvdW5kKToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlckxpc3RCb3g6OnBhaW50SXRlbUJhY2tncm91bmQpOgorICAgICAg
ICAqIHJlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
T2JqZWN0Ojp1c2VEYXJrQXBwZWFyYW5jZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJPYmplY3Q6OnN0eWxlQ29sb3JPcHRpb25zIGNvbnN0KToKKyAgICAgICAgKiByZW5kZXJpbmcv
UmVuZGVyT2JqZWN0Lmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRhYmxlQ2VsbC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUYWJsZUNlbGw6OnBhaW50QmFja2dyb3VuZHNCZWhp
bmRDZWxsKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGhlbWUuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyVGhlbWU6OnBhaW50KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVy
VGhlbWUuaDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lOjp1c2luZ0RhcmtBcHBlYXJh
bmNlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGhlbWVNYWMu
aDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGhlbWVNYWMubW06CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJUaGVtZU1hYzo6ZG9jdW1lbnRWaWV3Rm9yIGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlclRoZW1lTWFjOjphZGp1c3RNZW51TGlzdFN0eWxlIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lTWFjOjpwYWludENlbGxBbmRTZXRGb2N1c2VkRWxlbWVu
dE5lZWRzUmVwYWludElmTmVjZXNzYXJ5KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1l
TWFjOjpwYWludFNsaWRlclRodW1iKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lTWFj
Ojp1c2luZ0RhcmtBcHBlYXJhbmNlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiByZW5kZXJp
bmcvc3R5bGUvUmVuZGVyU3R5bGUuaDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjpz
dXBwb3J0ZWRDb2xvclNjaGVtZXMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5
bGU6OnNldFN1cHBvcnRlZENvbG9yU2NoZW1lcyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJT
dHlsZTo6aW5pdGlhbFN1cHBvcnRlZENvbG9yU2NoZW1lcyk6CisgICAgICAgICogcmVuZGVyaW5n
L3N0eWxlL1JlbmRlclN0eWxlQ29uc3RhbnRzLmg6CisgICAgICAgICogcmVuZGVyaW5nL3N0eWxl
L1N0eWxlUmFyZUluaGVyaXRlZERhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVSYXJl
SW5oZXJpdGVkRGF0YTo6U3R5bGVSYXJlSW5oZXJpdGVkRGF0YSk6CisgICAgICAgIChXZWJDb3Jl
OjpTdHlsZVJhcmVJbmhlcml0ZWREYXRhOjpvcGVyYXRvcj09IGNvbnN0KToKKyAgICAgICAgKiBy
ZW5kZXJpbmcvc3R5bGUvU3R5bGVSYXJlSW5oZXJpdGVkRGF0YS5oOgorICAgICAgICAqIHJlbmRl
cmluZy9zdHlsZS9TdHlsZVN1cHBvcnRlZENvbG9yU2NoZW1lcy5oOiBBZGRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OlN0eWxlU3VwcG9ydGVkQ29sb3JTY2hlbWVzOjpTdHlsZVN1cHBvcnRlZENvbG9y
U2NoZW1lcyk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVN1cHBvcnRlZENvbG9yU2NoZW1lczo6
b3BlcmF0b3I9PSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVN1cHBvcnRlZENvbG9y
U2NoZW1lczo6b3BlcmF0b3IhPSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVN1cHBv
cnRlZENvbG9yU2NoZW1lczo6aXNBdXRvIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxl
U3VwcG9ydGVkQ29sb3JTY2hlbWVzOjppc09ubHkgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
U3R5bGVTdXBwb3J0ZWRDb2xvclNjaGVtZXM6OmNvbG9yU2NoZW1lcyBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpTdHlsZVN1cHBvcnRlZENvbG9yU2NoZW1lczo6YWRkKToKKyAgICAgICAgKFdl
YkNvcmU6OlN0eWxlU3VwcG9ydGVkQ29sb3JTY2hlbWVzOjpjb250YWlucyBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpTdHlsZVN1cHBvcnRlZENvbG9yU2NoZW1lczo6c2V0QWxsb3dzVHJhbnNm
b3JtYXRpb25zKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlU3VwcG9ydGVkQ29sb3JTY2hlbWVz
OjphbGxvd3NUcmFuc2Zvcm1hdGlvbnMgY29uc3QpOgorICAgICAgICAqIHN2Zy9ncmFwaGljcy9T
VkdJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdJbWFnZTo6ZHJhdyk6CisKIDIwMTgt
MTEtMDcgIEp1c3RpbiBNaWNoYXVkICA8anVzdGluX21pY2hhdWRAYXBwbGUuY29tPgogCiAgICAg
ICAgIENTUyBQYWludGluZyBBUEkgc2hvdWxkIHBhc3Mgc2l6ZSwgYXJndW1lbnRzIGFuZCBpbnB1
dCBwcm9wZXJ0aWVzIHRvIHBhaW50IGNhbGxiYWNrCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGIwYmQ0ZjZlZGZhYTU1
YmYxYTM5MzYwNTIzMzhiYWQ1N2JlNDkwYzMuLjcwMTVkZDVkOGJmMmJlZWQ3MWExMGRhYWE5Njkw
Yjc0NjBjYmY4N2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTgtMTEtMDggIFRpbW90
aHkgSGF0Y2hlciAgPHRpbW90aHlAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBleHBlcmltZW50
YWwgc3VwcG9ydCBmb3IgYSBgc3VwcG9ydGVkLWNvbG9yLXNjaGVtZXNgIENTUyBwcm9wZXJ0eS4K
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MTMxOQor
ICAgICAgICByZGFyOi8vcHJvYmxlbS80NTg1MjI2MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9ET00v
SW5qZWN0ZWRCdW5kbGVSYW5nZUhhbmRsZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OkluamVjdGVk
QnVuZGxlUmFuZ2VIYW5kbGU6OnJlbmRlcmVkSW1hZ2UpOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJQYWdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6ZHJhd1JlY3Qp
OgorCiAyMDE4LTExLTA4ICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNv
bT4KIAogICAgICAgICBbR1RLXSBDcmFzaCB3aGVuIHJ1bm5pbmcgd2l0aCBzYW5kYm94IGVuYWJs
ZWQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agppbmRleCAxNDIwNGE1YjhlM2UwM2Q2OWZhNGUxYmQxMWEyMmMwODBiYjE5MWVlLi4zNjk4YzY3
OThjYzY1NTZjYjk0NTJkYTAxNmFmMmM0YTJiN2I4ODY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC02MjUsNiArNjI1LDcgQEAK
IAkJMUMwMTA3MDExOTI1OTRERjAwOEE0MjAxIC8qIElubGluZVRleHRCb3hTdHlsZS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUMwMTA2RkYxOTI1OTRE
RjAwOEE0MjAxIC8qIElubGluZVRleHRCb3hTdHlsZS5oICovOyB9OwogCQkxQzA5MzlFQjFBMTNF
MTI5MDBCNzg4RTUgLyogQ2FjaGVkU1ZHRm9udC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMUMwOTM5RTkxQTEzRTEyOTAwQjc4OEU1IC8qIENhY2hlZFNW
R0ZvbnQuaCAqLzsgfTsKIAkJMUMwOUQwNTkxRTMxQzZBOTAwNzI1RjE4IC8qIGxpYlBBTC5hIGlu
IEZyYW1ld29ya3MgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUMwOUQwNTAx
RTMxQzMyOTAwNzI1RjE4IC8qIGxpYlBBTC5hICovOyB9OworCQkxQzBBQTE2RDIxOTQwREM4MDA4
OTY4MjkgLyogU3R5bGVTdXBwb3J0ZWRDb2xvclNjaGVtZXMuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFDMEFBMTZBMjE5NDBEQzcwMDg5NjgyOSAvKiBT
dHlsZVN1cHBvcnRlZENvbG9yU2NoZW1lcy5oICovOyB9OwogCQkxQzEyQUMyQjFFRTc3OEFFMDA3
OUUwQTAgLyogRm9udEZhbWlseVNwZWNpZmljYXRpb25Db3JlVGV4dC5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUMxMkFDMjkxRUU3NzhBRTAwNzlFMEEw
IC8qIEZvbnRGYW1pbHlTcGVjaWZpY2F0aW9uQ29yZVRleHQuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkxQzE4REE1OTE4MUFGNkE1MDBDNEVGMjIg
LyogVGV4dFBhaW50ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDFDMThEQTU3MTgxQUY2QTUwMEM0RUYyMiAvKiBUZXh0UGFpbnRlci5oICovOyB9Owog
CQkxQzIxRTU3RDE4M0VEMUZGMDAxQzI4OUQgLyogSU9TdXJmYWNlUG9vbC5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUMyMUU1N0IxODNFRDFGRjAwMUMy
ODlEIC8qIElPU3VyZmFjZVBvb2wuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwpAQCAtNjM2OCw2ICs2MzY5LDcgQEAKIAkJMUMwOTM5RTgxQTEzRTEyOTAw
Qjc4OEU1IC8qIENhY2hlZFNWR0ZvbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gQ2FjaGVkU1ZHRm9udC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTFDMDkzOUU5MUExM0UxMjkwMEI3ODhFNSAvKiBDYWNoZWRTVkdGb250LmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENhY2hlZFNWR0ZvbnQuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJMUMwOUQwNEIxRTMxQzMyODAwNzI1RjE4IC8qIFBBTC54Y29kZXByb2ogKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSAid3JhcHBlci5w
Yi1wcm9qZWN0IjsgbmFtZSA9IFBBTC54Y29kZXByb2o7IHBhdGggPSBQQUwvUEFMLnhjb2RlcHJv
ajsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMUMwQUExNkEyMTk0MERDNzAwODk2ODI5
IC8qIFN0eWxlU3VwcG9ydGVkQ29sb3JTY2hlbWVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFN0eWxlU3VwcG9ydGVkQ29sb3JTY2hlbWVzLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTFDMTJBQzI4MUVFNzc4QUUwMDc5RTBBMCAvKiBGb250RmFtaWx5U3BlY2lm
aWNhdGlvbkNvcmVUZXh0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEZvbnRGYW1pbHlTcGVjaWZp
Y2F0aW9uQ29yZVRleHQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQzEyQUMy
OTFFRTc3OEFFMDA3OUUwQTAgLyogRm9udEZhbWlseVNwZWNpZmljYXRpb25Db3JlVGV4dC5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBGb250RmFtaWx5U3BlY2lmaWNhdGlvbkNvcmVUZXh0Lmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFDMTJBQzJDMUVFNzc5OTUwMDc5RTBBMCAvKiBGb250RGVz
Y3JpcHRpb25Db2NvYS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBGb250RGVzY3JpcHRpb25Db2Nv
YS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yNDY2MSw2ICsyNDY2Myw3IEBA
CiAJCQkJRjQ3QTVFM0ExOTVCOEM4QTAwNDgzMTAwIC8qIFN0eWxlU2Nyb2xsU25hcFBvaW50cy5j
cHAgKi8sCiAJCQkJRjQ3QTVFM0IxOTVCOEM4QTAwNDgzMTAwIC8qIFN0eWxlU2Nyb2xsU25hcFBv
aW50cy5oICovLAogCQkJCTlENjM4MDBGMUFGMTZFMTYwMDMxQTE1QyAvKiBTdHlsZVNlbGZBbGln
bm1lbnREYXRhLmggKi8sCisJCQkJMUMwQUExNkEyMTk0MERDNzAwODk2ODI5IC8qIFN0eWxlU3Vw
cG9ydGVkQ29sb3JTY2hlbWVzLmggKi8sCiAJCQkJQkM1RUI1RTYwRTgxQkZFRjAwQjI1OTY1IC8q
IFN0eWxlU3Vycm91bmREYXRhLmNwcCAqLywKIAkJCQlCQzVFQjVFNDBFODFCRjZEMDBCMjU5NjUg
LyogU3R5bGVTdXJyb3VuZERhdGEuaCAqLywKIAkJCQlCQzVFQjgwRDBFODFGMkNFMDBCMjU5NjUg
LyogU3R5bGVUcmFuc2Zvcm1EYXRhLmNwcCAqLywKQEAgLTMxMDYwLDYgKzMxMDYzLDcgQEAKIAkJ
CQlBOEVBODAwQzBBMTk1MTZFMDBBOEVGNUYgLyogU3R5bGVTaGVldC5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJRTRGOUVFRjMxNTZEQTAwNzAwRDIzRTdFIC8qIFN0eWxlU2hlZXRDb250ZW50cy5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJQThFQTgwMEEwQTE5NTE2RTAwQThFRjVGIC8qIFN0eWxlU2hlZXRM
aXN0LmggaW4gSGVhZGVycyAqLywKKwkJCQkxQzBBQTE2RDIxOTQwREM4MDA4OTY4MjkgLyogU3R5
bGVTdXBwb3J0ZWRDb2xvclNjaGVtZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDNUVCNUU1MEU4
MUJGNkQwMEIyNTk2NSAvKiBTdHlsZVN1cnJvdW5kRGF0YS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
QkM1RUI4MTAwRTgxRjJDRTAwQjI1OTY1IC8qIFN0eWxlVHJhbnNmb3JtRGF0YS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJRTRERUFBMTgxN0E5M0RDMzAwMEUwNDMwIC8qIFN0eWxlVHJlZVJlc29sdmVy
LmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDb21w
dXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0NvbXB1dGVk
U3R5bGVEZWNsYXJhdGlvbi5jcHAKaW5kZXggMmVmNjYyOTU5YTk0YzdlZGZiOTlkMjhmNzkzZmI3
YTBlNWZmYjY3NS4uMDNiN2IzZTcxYjI1OWQ5ODA0ODljZGJiOWQ1ZTczNmNkZGIzYTRmZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5j
cHAKQEAgLTQ0OCw2ICs0NDgsOSBAQCBzdGF0aWMgY29uc3QgQ1NTUHJvcGVydHlJRCBjb21wdXRl
ZFByb3BlcnRpZXNbXSA9IHsKICAgICBDU1NQcm9wZXJ0eVN0cm9rZU1pdGVybGltaXQsCiAgICAg
Q1NTUHJvcGVydHlTdHJva2VPcGFjaXR5LAogICAgIENTU1Byb3BlcnR5U3Ryb2tlV2lkdGgsCisj
aWYgRU5BQkxFKERBUktfTU9ERV9DU1MpCisgICAgQ1NTUHJvcGVydHlTdXBwb3J0ZWRDb2xvclNj
aGVtZXMsCisjZW5kaWYKICAgICBDU1NQcm9wZXJ0eUFsaWdubWVudEJhc2VsaW5lLAogICAgIENT
U1Byb3BlcnR5QmFzZWxpbmVTaGlmdCwKICAgICBDU1NQcm9wZXJ0eURvbWluYW50QmFzZWxpbmUs
CkBAIC0zOTY5LDYgKzM5NzIsMjQgQEAgUmVmUHRyPENTU1ZhbHVlPiBDb21wdXRlZFN0eWxlRXh0
cmFjdG9yOjp2YWx1ZUZvclByb3BlcnR5aW5TdHlsZShjb25zdCBSZW5kZXJTdHkKICAgICAgICAg
ICAgIHJldHVybiBjc3NWYWx1ZVBvb2wuY3JlYXRlVmFsdWUoc3R5bGUuYXBwbGVQYXlCdXR0b25U
eXBlKCkpOwogI2VuZGlmCiAKKyNpZiBFTkFCTEUoREFSS19NT0RFX0NTUykKKyAgICAgICAgY2Fz
ZSBDU1NQcm9wZXJ0eVN1cHBvcnRlZENvbG9yU2NoZW1lczogeworICAgICAgICAgICAgYXV0byBz
dXBwb3J0ZWRDb2xvclNjaGVtZXMgPSBzdHlsZS5zdXBwb3J0ZWRDb2xvclNjaGVtZXMoKTsKKyAg
ICAgICAgICAgIGlmIChzdXBwb3J0ZWRDb2xvclNjaGVtZXMuaXNBdXRvKCkpCisgICAgICAgICAg
ICAgICAgcmV0dXJuIGNzc1ZhbHVlUG9vbC5jcmVhdGVJZGVudGlmaWVyVmFsdWUoQ1NTVmFsdWVB
dXRvKTsKKworICAgICAgICAgICAgYXV0byBsaXN0ID0gQ1NTVmFsdWVMaXN0OjpjcmVhdGVTcGFj
ZVNlcGFyYXRlZCgpOworICAgICAgICAgICAgaWYgKHN1cHBvcnRlZENvbG9yU2NoZW1lcy5jb250
YWlucyhDb2xvclNjaGVtZXM6OkxpZ2h0KSkKKyAgICAgICAgICAgICAgICBsaXN0LT5hcHBlbmQo
Y3NzVmFsdWVQb29sLmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1ZUxpZ2h0KSk7CisgICAg
ICAgICAgICBpZiAoc3VwcG9ydGVkQ29sb3JTY2hlbWVzLmNvbnRhaW5zKENvbG9yU2NoZW1lczo6
RGFyaykpCisgICAgICAgICAgICAgICAgbGlzdC0+YXBwZW5kKGNzc1ZhbHVlUG9vbC5jcmVhdGVJ
ZGVudGlmaWVyVmFsdWUoQ1NTVmFsdWVEYXJrKSk7CisgICAgICAgICAgICBpZiAoIXN1cHBvcnRl
ZENvbG9yU2NoZW1lcy5hbGxvd3NUcmFuc2Zvcm1hdGlvbnMoKSkKKyAgICAgICAgICAgICAgICBs
aXN0LT5hcHBlbmQoY3NzVmFsdWVQb29sLmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1ZU9u
bHkpKTsKKyAgICAgICAgICAgIEFTU0VSVChsaXN0LT5sZW5ndGgoKSk7CisgICAgICAgICAgICBy
ZXR1cm4gV1RGTW92ZShsaXN0KTsKKyAgICAgICAgfQorI2VuZGlmCisKICAgICAgICAgLyogSW5k
aXZpZHVhbCBwcm9wZXJ0aWVzIG5vdCBwYXJ0IG9mIHRoZSBzcGVjICovCiAgICAgICAgIGNhc2Ug
Q1NTUHJvcGVydHlCYWNrZ3JvdW5kUmVwZWF0WDoKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eUJh
Y2tncm91bmRSZXBlYXRZOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1Byb3Bl
cnRpZXMuanNvbiBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcm9wZXJ0aWVzLmpzb24KaW5kZXgg
MjhkODQ4MmQ2NmNmODQ4MzFmMzY4N2Y2Y2FmOGQxOTlmNDYyMGU3MC4uYTE1NGViMDNhMTAxNmYz
OWNkMjM4YjBlZTVhMmNhYzVmNzJmOGNmYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3Nz
L0NTU1Byb3BlcnRpZXMuanNvbgorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJvcGVydGll
cy5qc29uCkBAIC01NzEyLDYgKzU3MTIsMjIgQEAKICAgICAgICAgICAgIH0sCiAgICAgICAgICAg
ICAic3RhdHVzIjogIm5vbi1zdGFuZGFyZCIKICAgICAgICAgfSwKKyAgICAgICAgInN1cHBvcnRl
ZC1jb2xvci1zY2hlbWVzIjogeworICAgICAgICAgICAgImluaGVyaXRlZCI6IHRydWUsCisgICAg
ICAgICAgICAidmFsdWVzIjogWworICAgICAgICAgICAgICAgICJhdXRvIiwKKyAgICAgICAgICAg
ICAgICAibGlnaHQiLAorICAgICAgICAgICAgICAgICJkYXJrIiwKKyAgICAgICAgICAgICAgICAi
b25seSIKKyAgICAgICAgICAgIF0sCisgICAgICAgICAgICAiY29kZWdlbi1wcm9wZXJ0aWVzIjog
eworICAgICAgICAgICAgICAgICJjb252ZXJ0ZXIiOiAiU3VwcG9ydGVkQ29sb3JTY2hlbWVzIiwK
KyAgICAgICAgICAgICAgICAiZW5hYmxlLWlmIjogIkVOQUJMRV9EQVJLX01PREVfQ1NTIgorICAg
ICAgICAgICAgfSwKKyAgICAgICAgICAgICJzdGF0dXMiOiB7CisgICAgICAgICAgICAgICAgInN0
YXR1cyI6ICJub24tc3RhbmRhcmQiCisgICAgICAgICAgICB9CisgICAgICAgIH0sCiAgICAgICAg
ICJvcmRlciI6IHsKICAgICAgICAgICAgICJjb2RlZ2VuLXByb3BlcnRpZXMiOiB7CiAgICAgICAg
ICAgICAgICAgImFsaWFzZXMiOiBbCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
VmFsdWVLZXl3b3Jkcy5pbiBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NWYWx1ZUtleXdvcmRzLmlu
CmluZGV4IDkwZjkxMmFjZWI1NWExYWZkYmFhYjA5NWI2MmZiYzU0YWJiM2QyNTQuLjg2YjVlNTkx
NGY0MGU3M2FmYjE0OTUyMTg0M2E0ZWM5N2M4NjEwMTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NWYWx1ZUtleXdvcmRzLmluCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NW
YWx1ZUtleXdvcmRzLmluCkBAIC0xMzg0LDYgKzEzODQsMTEgQEAgbm8tcHJlZmVyZW5jZQogbGln
aHQKIGRhcmsKIC8vIG5vLXByZWZlcmVuY2UKKworLy8gc3VwcG9ydGVkLWNvbG9yLXNjaGVtZXMK
K29ubHkKKy8vIGxpZ2h0CisvLyBkYXJrCiAjZW5kaWYKIAogLy8gYXV0by1yZXBlYXQKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZUJ1aWxkZXJDb252ZXJ0ZXIuaCBiL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9TdHlsZUJ1aWxkZXJDb252ZXJ0ZXIuaAppbmRleCAwZTgzOGJiNWQ4ZGYw
MzM1NjQzODJkNTRmMmMzMThhMWZmMTIzODc4Li5lNjFkMWY1NDcyZDQ5OTUwZTVlZTM1M2ZhNjAx
NTk0YWY0NmNmMGQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVCdWlsZGVy
Q29udmVydGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlQnVpbGRlckNvbnZlcnRl
ci5oCkBAIC03Nyw2ICs3Nyw5IEBAIHB1YmxpYzoKICAgICB0ZW1wbGF0ZTxDU1NQcm9wZXJ0eUlE
PiBzdGF0aWMgTmluZVBpZWNlSW1hZ2UgY29udmVydEJvcmRlck1hc2soU3R5bGVSZXNvbHZlciYs
IENTU1ZhbHVlJik7CiAgICAgdGVtcGxhdGU8Q1NTUHJvcGVydHlJRD4gc3RhdGljIFJlZlB0cjxT
dHlsZUltYWdlPiBjb252ZXJ0U3R5bGVJbWFnZShTdHlsZVJlc29sdmVyJiwgQ1NTVmFsdWUmKTsK
ICAgICBzdGF0aWMgVHJhbnNmb3JtT3BlcmF0aW9ucyBjb252ZXJ0VHJhbnNmb3JtKFN0eWxlUmVz
b2x2ZXImLCBjb25zdCBDU1NWYWx1ZSYpOworI2lmIEVOQUJMRShEQVJLX01PREVfQ1NTKQorICAg
IHN0YXRpYyBTdHlsZVN1cHBvcnRlZENvbG9yU2NoZW1lcyBjb252ZXJ0U3VwcG9ydGVkQ29sb3JT
Y2hlbWVzKFN0eWxlUmVzb2x2ZXImLCBjb25zdCBDU1NWYWx1ZSYpOworI2VuZGlmCiAgICAgc3Rh
dGljIFN0cmluZyBjb252ZXJ0U3RyaW5nKFN0eWxlUmVzb2x2ZXImLCBjb25zdCBDU1NWYWx1ZSYp
OwogICAgIHN0YXRpYyBTdHJpbmcgY29udmVydFN0cmluZ09yQXV0byhTdHlsZVJlc29sdmVyJiwg
Y29uc3QgQ1NTVmFsdWUmKTsKICAgICBzdGF0aWMgU3RyaW5nIGNvbnZlcnRTdHJpbmdPck5vbmUo
U3R5bGVSZXNvbHZlciYsIGNvbnN0IENTU1ZhbHVlJik7CkBAIC0xNjUsNiArMTY4LDEwIEBAIHBy
aXZhdGU6CiAgICAgc3RhdGljIExlbmd0aCBwYXJzZVNuYXBDb29yZGluYXRlKFN0eWxlUmVzb2x2
ZXImLCBjb25zdCBDU1NWYWx1ZSYpOwogI2VuZGlmCiAKKyNpZiBFTkFCTEUoREFSS19NT0RFX0NT
UykKKyAgICBzdGF0aWMgdm9pZCB1cGRhdGVTdXBwb3J0ZWRDb2xvclNjaGVtZXMoY29uc3QgQ1NT
UHJpbWl0aXZlVmFsdWUmLCBTdHlsZVN1cHBvcnRlZENvbG9yU2NoZW1lcyYpOworI2VuZGlmCisK
ICAgICBzdGF0aWMgTGVuZ3RoIGNvbnZlcnRUbzEwMFBlcmNlbnRNaW51c0xlbmd0aChjb25zdCBM
ZW5ndGgmKTsKICAgICB0ZW1wbGF0ZTxDU1NWYWx1ZUlELCBDU1NWYWx1ZUlEPiBzdGF0aWMgTGVu
Z3RoIGNvbnZlcnRQb3NpdGlvbkNvbXBvbmVudChTdHlsZVJlc29sdmVyJiwgY29uc3QgQ1NTUHJp
bWl0aXZlVmFsdWUmKTsKIApAQCAtNDUzLDYgKzQ2MCw0OCBAQCBpbmxpbmUgVHJhbnNmb3JtT3Bl
cmF0aW9ucyBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRUcmFuc2Zvcm0oU3R5bGVSZXNv
bHZlcgogICAgIHJldHVybiBvcGVyYXRpb25zOwogfQogCisjaWYgRU5BQkxFKERBUktfTU9ERV9D
U1MpCitpbmxpbmUgdm9pZCBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OnVwZGF0ZVN1cHBvcnRlZENv
bG9yU2NoZW1lcyhjb25zdCBDU1NQcmltaXRpdmVWYWx1ZSYgcHJpbWl0aXZlVmFsdWUsIFN0eWxl
U3VwcG9ydGVkQ29sb3JTY2hlbWVzJiBzdXBwb3J0ZWRDb2xvclNjaGVtZXMpCit7CisgICAgQVNT
RVJUKHByaW1pdGl2ZVZhbHVlLmlzVmFsdWVJRCgpKTsKKworICAgIHN3aXRjaCAocHJpbWl0aXZl
VmFsdWUudmFsdWVJRCgpKSB7CisgICAgY2FzZSBDU1NWYWx1ZUF1dG86CisgICAgICAgIHN1cHBv
cnRlZENvbG9yU2NoZW1lcyA9IFN0eWxlU3VwcG9ydGVkQ29sb3JTY2hlbWVzKCk7CisgICAgICAg
IGJyZWFrOworICAgIGNhc2UgQ1NTVmFsdWVPbmx5OgorICAgICAgICBzdXBwb3J0ZWRDb2xvclNj
aGVtZXMuc2V0QWxsb3dzVHJhbnNmb3JtYXRpb25zKGZhbHNlKTsKKyAgICAgICAgYnJlYWs7Cisg
ICAgY2FzZSBDU1NWYWx1ZUxpZ2h0OgorICAgICAgICBzdXBwb3J0ZWRDb2xvclNjaGVtZXMuYWRk
KENvbG9yU2NoZW1lczo6TGlnaHQpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIENTU1ZhbHVl
RGFyazoKKyAgICAgICAgc3VwcG9ydGVkQ29sb3JTY2hlbWVzLmFkZChDb2xvclNjaGVtZXM6OkRh
cmspOworICAgICAgICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgICAvLyBVbmtub3duIGlk
ZW50aWZpZXJzIGFyZSBhbGxvd2VkIGFuZCBpZ25vcmVkLgorICAgICAgICBicmVhazsKKyAgICB9
Cit9CisKK2lubGluZSBTdHlsZVN1cHBvcnRlZENvbG9yU2NoZW1lcyBTdHlsZUJ1aWxkZXJDb252
ZXJ0ZXI6OmNvbnZlcnRTdXBwb3J0ZWRDb2xvclNjaGVtZXMoU3R5bGVSZXNvbHZlciYsIGNvbnN0
IENTU1ZhbHVlJiB2YWx1ZSkKK3sKKyAgICBTdHlsZVN1cHBvcnRlZENvbG9yU2NoZW1lcyBzdXBw
b3J0ZWRDb2xvclNjaGVtZXM7CisKKyAgICBpZiAoaXM8Q1NTVmFsdWVMaXN0Pih2YWx1ZSkpIHsK
KyAgICAgICAgZm9yIChhdXRvJiBjdXJyZW50VmFsdWUgOiBkb3duY2FzdDxDU1NWYWx1ZUxpc3Q+
KHZhbHVlKSkKKyAgICAgICAgICAgIHVwZGF0ZVN1cHBvcnRlZENvbG9yU2NoZW1lcyhkb3duY2Fz
dDxDU1NQcmltaXRpdmVWYWx1ZT4oY3VycmVudFZhbHVlLmdldCgpKSwgc3VwcG9ydGVkQ29sb3JT
Y2hlbWVzKTsKKyAgICB9IGVsc2UgaWYgKGlzPENTU1ByaW1pdGl2ZVZhbHVlPih2YWx1ZSkpCisg
ICAgICAgIHVwZGF0ZVN1cHBvcnRlZENvbG9yU2NoZW1lcyhkb3duY2FzdDxDU1NQcmltaXRpdmVW
YWx1ZT4odmFsdWUpLCBzdXBwb3J0ZWRDb2xvclNjaGVtZXMpOworCisgICAgLy8gSWYgdGhlIHZh
bHVlIHdhcyBqdXN0ICJvbmx5IiwgdGhhdCBpcyBzeW5vbnltb3VzIGZvciAib25seSBsaWdodCIu
CisgICAgaWYgKHN1cHBvcnRlZENvbG9yU2NoZW1lcy5pc09ubHkoKSkKKyAgICAgICAgc3VwcG9y
dGVkQ29sb3JTY2hlbWVzLmFkZChDb2xvclNjaGVtZXM6OkxpZ2h0KTsKKworICAgIHJldHVybiBz
dXBwb3J0ZWRDb2xvclNjaGVtZXM7Cit9CisjZW5kaWYKKwogaW5saW5lIFN0cmluZyBTdHlsZUJ1
aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRTdHJpbmcoU3R5bGVSZXNvbHZlciYsIGNvbnN0IENTU1Zh
bHVlJiB2YWx1ZSkKIHsKICAgICByZXR1cm4gZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KHZh
bHVlKS5zdHJpbmdWYWx1ZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxl
UmVzb2x2ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuY3BwCmluZGV4
IDc1YjBiOGQ0MWEyOTQ0ZGMwOGUxNGM1NWNlODE2OGYyZWJiODAxZDcuLjI0YjA2YmVjOTMzN2Ux
NmJiOGFiN2YyNGRlZjkwOWE3OGE1MjgzYmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nz
cy9TdHlsZVJlc29sdmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZl
ci5jcHAKQEAgLTE4NDEsMTQgKzE4NDEsMTQgQEAgQ29sb3IgU3R5bGVSZXNvbHZlcjo6Y29sb3JG
cm9tUHJpbWl0aXZlVmFsdWUoY29uc3QgQ1NTUHJpbWl0aXZlVmFsdWUmIHZhbHVlLCBib28KICAg
ICBjYXNlIENTU1ZhbHVlV2Via2l0QWN0aXZlbGluazoKICAgICAgICAgcmV0dXJuIGRvY3VtZW50
KCkuYWN0aXZlTGlua0NvbG9yKCk7CiAgICAgY2FzZSBDU1NWYWx1ZVdlYmtpdEZvY3VzUmluZ0Nv
bG9yOgotICAgICAgICByZXR1cm4gUmVuZGVyVGhlbWU6OmZvY3VzUmluZ0NvbG9yKGRvY3VtZW50
KCkuc3R5bGVDb2xvck9wdGlvbnMoKSk7CisgICAgICAgIHJldHVybiBSZW5kZXJUaGVtZTo6Zm9j
dXNSaW5nQ29sb3IoZG9jdW1lbnQoKS5zdHlsZUNvbG9yT3B0aW9ucyhtX3N0YXRlLnN0eWxlKCkp
KTsKICAgICBjYXNlIENTU1ZhbHVlQ3VycmVudGNvbG9yOgogICAgICAgICAvLyBDb2xvciBpcyBh
biBpbmhlcml0ZWQgcHJvcGVydHkgc28gZGVwZW5kaW5nIG9uIGl0IGVmZmVjdGl2ZWx5IG1ha2Vz
IHRoZSBwcm9wZXJ0eSBpbmhlcml0ZWQuCiAgICAgICAgIC8vIEZJWE1FOiBTZXR0aW5nIHRoZSBm
bGFnIGFzIGEgc2lkZSBlZmZlY3Qgb2YgY2FsbGluZyB0aGlzIGZ1bmN0aW9uIGlzIGEgYml0IG9i
bGlxdWUuIENhbiB3ZSBkbyBiZXR0ZXI/CiAgICAgICAgIG1fc3RhdGUuc3R5bGUoKS0+c2V0SGFz
RXhwbGljaXRseUluaGVyaXRlZFByb3BlcnRpZXMoKTsKICAgICAgICAgcmV0dXJuIG1fc3RhdGUu
c3R5bGUoKS0+Y29sb3IoKTsKICAgICBkZWZhdWx0OgotICAgICAgICByZXR1cm4gU3R5bGVDb2xv
cjo6Y29sb3JGcm9tS2V5d29yZChpZGVudGlmaWVyLCBkb2N1bWVudCgpLnN0eWxlQ29sb3JPcHRp
b25zKCkpOworICAgICAgICByZXR1cm4gU3R5bGVDb2xvcjo6Y29sb3JGcm9tS2V5d29yZChpZGVu
dGlmaWVyLCBkb2N1bWVudCgpLnN0eWxlQ29sb3JPcHRpb25zKG1fc3RhdGUuc3R5bGUoKSkpOwog
ICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQcm9w
ZXJ0eVBhcnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1Byb3BlcnR5UGFy
c2VyLmNwcAppbmRleCBkM2EwNDc3YTc0MzIyZmEyNjJhMTY5MTFhNzMxOGI2YjY4YmQ3YTczLi4x
NWU3ZmU2MDQ1YTdkNGE0YWVlMjkzMmM0NzI1MGI1ODcxNjQ2YmZiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1Byb3BlcnR5UGFyc2VyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9jc3MvcGFyc2VyL0NTU1Byb3BlcnR5UGFyc2VyLmNwcApAQCAtMzc0Nyw3ICszNzQ3
LDUxIEBAIHN0YXRpYyBSZWZQdHI8Q1NTVmFsdWU+IGNvbnN1bWVUZXh0RW1waGFzaXNQb3NpdGlv
bihDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSkKICAgICAgICAgbGlzdC0+YXBwZW5kKENTU1Zh
bHVlUG9vbDo6c2luZ2xldG9uKCkuY3JlYXRlSWRlbnRpZmllclZhbHVlKGxlZnRSaWdodFZhbHVl
SUQpKTsKICAgICByZXR1cm4gbGlzdDsKIH0KLSAgICAKKworI2lmIEVOQUJMRShEQVJLX01PREVf
Q1NTKQorCitzdGF0aWMgUmVmUHRyPENTU1ZhbHVlPiBjb25zdW1lU3VwcG9ydGVkQ29sb3JTY2hl
bWVzKENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlKQoreworICAgIGlmIChpc0F1dG8ocmFuZ2Uu
cGVlaygpLmlkKCkpKQorICAgICAgICByZXR1cm4gY29uc3VtZUlkZW50KHJhbmdlKTsKKworICAg
IFZlY3RvcjxDU1NWYWx1ZUlELCAzPiBpZGVudGlmaWVyczsKKworICAgIHdoaWxlICghcmFuZ2Uu
YXRFbmQoKSkgeworICAgICAgICBpZiAocmFuZ2UucGVlaygpLnR5cGUoKSAhPSBJZGVudFRva2Vu
KQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICAgICAgQ1NTVmFsdWVJRCBpZCA9
IHJhbmdlLnBlZWsoKS5pZCgpOworCisgICAgICAgIHN3aXRjaCAoaWQpIHsKKyAgICAgICAgY2Fz
ZSBDU1NWYWx1ZUF1dG86CisgICAgICAgICAgICAvLyBBdXRvIGlzIG9ubHkgYWxsb3dlZCBhcyBh
IHNpbmdsZSB2YWx1ZSwgYW5kIHdhcyBoYW5kbGVkIGVhcmxpZXIuCisgICAgICAgICAgICAvLyBE
b24ndCBhbGxvdyBpdCBpbiB0aGUgbGlzdC4KKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOwor
CisgICAgICAgIGNhc2UgQ1NTVmFsdWVPbmx5OgorICAgICAgICBjYXNlIENTU1ZhbHVlTGlnaHQ6
CisgICAgICAgIGNhc2UgQ1NTVmFsdWVEYXJrOgorICAgICAgICAgICAgaWYgKCFpZGVudGlmaWVy
cy5hcHBlbmRJZk5vdENvbnRhaW5zKGlkKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gbnVsbHB0
cjsKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAv
LyBVbmtub3duIGlkZW50aWZpZXJzIGFyZSBhbGxvd2VkIGFuZCBpZ25vcmVkLgorICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgIH0KKworICAgICAgICByYW5nZS5jb25zdW1lSW5jbHVkaW5nV2hp
dGVzcGFjZSgpOworICAgIH0KKworICAgIFJlZlB0cjxDU1NWYWx1ZUxpc3Q+IGxpc3QgPSBDU1NW
YWx1ZUxpc3Q6OmNyZWF0ZVNwYWNlU2VwYXJhdGVkKCk7CisgICAgZm9yIChhdXRvIGlkIDogaWRl
bnRpZmllcnMpCisgICAgICAgIGxpc3QtPmFwcGVuZChDU1NWYWx1ZVBvb2w6OnNpbmdsZXRvbigp
LmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShpZCkpOworICAgIHJldHVybiBsaXN0OworfQorCisjZW5k
aWYKKwogI2lmIEVOQUJMRShEQVNIQk9BUkRfU1VQUE9SVCkKIAogc3RhdGljIFJlZlB0cjxDU1NW
YWx1ZT4gY29uc3VtZVdlYmtpdERhc2hib2FyZFJlZ2lvbihDU1NQYXJzZXJUb2tlblJhbmdlJiBy
YW5nZSwgQ1NTUGFyc2VyTW9kZSBtb2RlKQpAQCAtNDI4OSw2ICs0MzMzLDEyIEBAIFJlZlB0cjxD
U1NWYWx1ZT4gQ1NTUHJvcGVydHlQYXJzZXI6OnBhcnNlU2luZ2xlVmFsdWUoQ1NTUHJvcGVydHlJ
RCBwcm9wZXJ0eSwgQ1NTCiAgICAgICAgIHJldHVybiBjb25zdW1lV2Via2l0QXNwZWN0UmF0aW8o
bV9yYW5nZSk7CiAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFRleHRFbXBoYXNpc1Bvc2l0aW9u
OgogICAgICAgICByZXR1cm4gY29uc3VtZVRleHRFbXBoYXNpc1Bvc2l0aW9uKG1fcmFuZ2UpOwor
I2lmIEVOQUJMRShEQVJLX01PREVfQ1NTKQorICAgIGNhc2UgQ1NTUHJvcGVydHlTdXBwb3J0ZWRD
b2xvclNjaGVtZXM6CisgICAgICAgIGlmICghUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVk
RmVhdHVyZXMoKS5kYXJrTW9kZUNTU0VuYWJsZWQoKSkKKyAgICAgICAgICAgIHJldHVybiBudWxs
cHRyOworICAgICAgICByZXR1cm4gY29uc3VtZVN1cHBvcnRlZENvbG9yU2NoZW1lcyhtX3Jhbmdl
KTsKKyNlbmRpZgogI2lmIEVOQUJMRShEQVNIQk9BUkRfU1VQUE9SVCkKICAgICBjYXNlIENTU1By
b3BlcnR5V2Via2l0RGFzaGJvYXJkUmVnaW9uOgogICAgICAgICByZXR1cm4gY29uc3VtZVdlYmtp
dERhc2hib2FyZFJlZ2lvbihtX3JhbmdlLCBtX2NvbnRleHQubW9kZSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3Vt
ZW50LmNwcAppbmRleCAxZTZiYzRiYzViYTAzZDlhY2RkNDEwNTUyODdlOWIwNjBjMjU0OWM1Li5m
MDczMTQyMTFkODZiMTcyMjU0NDFhYTE0NDUwZGE5OTZjMzVmYzc4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1
bWVudC5jcHAKQEAgLTgxNywxNyArODE3LDE3IEBAIFN0cmluZyBEb2N1bWVudDo6Y29tcGF0TW9k
ZSgpIGNvbnN0CiAKIHZvaWQgRG9jdW1lbnQ6OnJlc2V0TGlua0NvbG9yKCkKIHsKLSAgICBtX2xp
bmtDb2xvciA9IFN0eWxlQ29sb3I6OmNvbG9yRnJvbUtleXdvcmQoQ1NTVmFsdWVXZWJraXRMaW5r
LCBzdHlsZUNvbG9yT3B0aW9ucygpKTsKKyAgICBtX2xpbmtDb2xvciA9IFN0eWxlQ29sb3I6OmNv
bG9yRnJvbUtleXdvcmQoQ1NTVmFsdWVXZWJraXRMaW5rLCBzdHlsZUNvbG9yT3B0aW9ucyhudWxs
cHRyKSk7CiB9CiAKIHZvaWQgRG9jdW1lbnQ6OnJlc2V0VmlzaXRlZExpbmtDb2xvcigpCiB7Ci0g
ICAgbV92aXNpdGVkTGlua0NvbG9yID0gU3R5bGVDb2xvcjo6Y29sb3JGcm9tS2V5d29yZChDU1NW
YWx1ZVdlYmtpdExpbmssIHN0eWxlQ29sb3JPcHRpb25zKCkgfCBTdHlsZUNvbG9yOjpPcHRpb25z
OjpGb3JWaXNpdGVkTGluayk7CisgICAgbV92aXNpdGVkTGlua0NvbG9yID0gU3R5bGVDb2xvcjo6
Y29sb3JGcm9tS2V5d29yZChDU1NWYWx1ZVdlYmtpdExpbmssIHN0eWxlQ29sb3JPcHRpb25zKG51
bGxwdHIpIHwgU3R5bGVDb2xvcjo6T3B0aW9uczo6Rm9yVmlzaXRlZExpbmspOwogfQogCiB2b2lk
IERvY3VtZW50OjpyZXNldEFjdGl2ZUxpbmtDb2xvcigpCiB7Ci0gICAgbV9hY3RpdmVMaW5rQ29s
b3IgPSBTdHlsZUNvbG9yOjpjb2xvckZyb21LZXl3b3JkKENTU1ZhbHVlV2Via2l0QWN0aXZlbGlu
aywgc3R5bGVDb2xvck9wdGlvbnMoKSk7CisgICAgbV9hY3RpdmVMaW5rQ29sb3IgPSBTdHlsZUNv
bG9yOjpjb2xvckZyb21LZXl3b3JkKENTU1ZhbHVlV2Via2l0QWN0aXZlbGluaywgc3R5bGVDb2xv
ck9wdGlvbnMobnVsbHB0cikpOwogfQogCiBET01JbXBsZW1lbnRhdGlvbiYgRG9jdW1lbnQ6Omlt
cGxlbWVudGF0aW9uKCkKQEAgLTM1OTAsMTggKzM1OTAsMzQgQEAgc3RhdGljIHZvaWQgcHJvY2Vz
c0NvbG9yU2NoZW1lcyhTdHJpbmdWaWV3IGNvbG9yU2NoZW1lcywgY29uc3QgV1RGOjpGdW5jdGlv
bjx2b2kKIHZvaWQgRG9jdW1lbnQ6OnByb2Nlc3NTdXBwb3J0ZWRDb2xvclNjaGVtZXMoY29uc3Qg
U3RyaW5nJiBjb2xvclNjaGVtZXMpCiB7CiAgICAgT3B0aW9uU2V0PENvbG9yU2NoZW1lcz4gc3Vw
cG9ydGVkQ29sb3JTY2hlbWVzOworICAgIGJvb2wgYWxsb3dzVHJhbnNmb3JtYXRpb25zID0gdHJ1
ZTsKKyAgICBib29sIGF1dG9FbmNvdW50ZXJlZCA9IGZhbHNlOworCisgICAgcHJvY2Vzc0NvbG9y
U2NoZW1lcyhjb2xvclNjaGVtZXMsIFsmXShTdHJpbmdWaWV3IGtleSkgeworICAgICAgICBpZiAo
ZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2Uoa2V5LCAiYXV0byIpKSB7CisgICAgICAgICAg
ICBzdXBwb3J0ZWRDb2xvclNjaGVtZXMgPSB7IH07CisgICAgICAgICAgICBhbGxvd3NUcmFuc2Zv
cm1hdGlvbnMgPSB0cnVlOworICAgICAgICAgICAgYXV0b0VuY291bnRlcmVkID0gdHJ1ZTsKKyAg
ICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChhdXRvRW5jb3VudGVy
ZWQpCisgICAgICAgICAgICByZXR1cm47CiAKLSAgICBwcm9jZXNzQ29sb3JTY2hlbWVzKGNvbG9y
U2NoZW1lcywgWyZzdXBwb3J0ZWRDb2xvclNjaGVtZXNdKFN0cmluZ1ZpZXcga2V5KSB7CiAgICAg
ICAgIGlmIChlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShrZXksICJsaWdodCIpKQogICAg
ICAgICAgICAgc3VwcG9ydGVkQ29sb3JTY2hlbWVzLmFkZChDb2xvclNjaGVtZXM6OkxpZ2h0KTsK
ICAgICAgICAgZWxzZSBpZiAoZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2Uoa2V5LCAiZGFy
ayIpKQogICAgICAgICAgICAgc3VwcG9ydGVkQ29sb3JTY2hlbWVzLmFkZChDb2xvclNjaGVtZXM6
OkRhcmspOworICAgICAgICBlbHNlIGlmIChlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShr
ZXksICJvbmx5IikpCisgICAgICAgICAgICBhbGxvd3NUcmFuc2Zvcm1hdGlvbnMgPSBmYWxzZTsK
ICAgICB9KTsKIAotICAgIGlmIChzdXBwb3J0ZWRDb2xvclNjaGVtZXMuaXNFbXB0eSgpKQorICAg
IC8vIElmIHRoZSB2YWx1ZSB3YXMganVzdCAib25seSIsIHRoYXQgaXMgc3lub255bW91cyBmb3Ig
Im9ubHkgbGlnaHQiLgorICAgIGlmIChzdXBwb3J0ZWRDb2xvclNjaGVtZXMuaXNFbXB0eSgpICYm
ICFhbGxvd3NUcmFuc2Zvcm1hdGlvbnMpCiAgICAgICAgIHN1cHBvcnRlZENvbG9yU2NoZW1lcy5h
ZGQoQ29sb3JTY2hlbWVzOjpMaWdodCk7CiAKICAgICBtX3N1cHBvcnRlZENvbG9yU2NoZW1lcyA9
IHN1cHBvcnRlZENvbG9yU2NoZW1lczsKKyAgICBtX2FsbG93c0NvbG9yU2NoZW1lVHJhbnNmb3Jt
YXRpb25zID0gYWxsb3dzVHJhbnNmb3JtYXRpb25zOwogCiAgICAgaWYgKGF1dG8qIHBhZ2UgPSB0
aGlzLT5wYWdlKCkpCiAgICAgICAgIHBhZ2UtPnVwZGF0ZVN0eWxlQWZ0ZXJDaGFuZ2VJbkVudmly
b25tZW50KCk7CkBAIC03MjgxLDExICs3Mjk3LDIzIEBAIGJvb2wgRG9jdW1lbnQ6OnVzZVN5c3Rl
bUFwcGVhcmFuY2UoKSBjb25zdAogICAgIHJldHVybiB1c2VTeXN0ZW1BcHBlYXJhbmNlOwogfQog
Ci1ib29sIERvY3VtZW50Ojp1c2VEYXJrQXBwZWFyYW5jZSgpIGNvbnN0Citib29sIERvY3VtZW50
Ojp1c2VEYXJrQXBwZWFyYW5jZShjb25zdCBSZW5kZXJTdHlsZSogc3R5bGUpIGNvbnN0CiB7CiAj
aWYgRU5BQkxFKERBUktfTU9ERV9DU1MpCi0gICAgaWYgKG1fc3VwcG9ydGVkQ29sb3JTY2hlbWVz
LmNvbnRhaW5zKENvbG9yU2NoZW1lczo6RGFyaykgJiYgIW1fc3VwcG9ydGVkQ29sb3JTY2hlbWVz
LmNvbnRhaW5zKENvbG9yU2NoZW1lczo6TGlnaHQpKQorICAgIE9wdGlvblNldDxDb2xvclNjaGVt
ZXM+IHN1cHBvcnRlZENvbG9yU2NoZW1lczsKKworICAgIC8vIFVzZSB0aGUgc3R5bGUncyBzdXBw
b3J0ZWQgY29sb3Igc2NoZW1lcywgaWYgc3VwcGxpZWQuCisgICAgaWYgKHN0eWxlKQorICAgICAg
ICBzdXBwb3J0ZWRDb2xvclNjaGVtZXMgPSBzdHlsZS0+c3VwcG9ydGVkQ29sb3JTY2hlbWVzKCku
Y29sb3JTY2hlbWVzKCk7CisKKyAgICAvLyBGYWxsYmFjayB0byB0aGUgZG9jdW1lbnQncyBzdXBw
b3J0ZWQgY29sb3Igc2NoZW1lcyBpZiBzdHlsZSB3YXMgZW1wdHkgKGF1dG8pLgorICAgIGlmIChz
dXBwb3J0ZWRDb2xvclNjaGVtZXMuaXNFbXB0eSgpKQorICAgICAgICBzdXBwb3J0ZWRDb2xvclNj
aGVtZXMgPSBtX3N1cHBvcnRlZENvbG9yU2NoZW1lczsKKworICAgIGlmIChzdXBwb3J0ZWRDb2xv
clNjaGVtZXMuY29udGFpbnMoQ29sb3JTY2hlbWVzOjpEYXJrKSAmJiAhc3VwcG9ydGVkQ29sb3JT
Y2hlbWVzLmNvbnRhaW5zKENvbG9yU2NoZW1lczo6TGlnaHQpKQogICAgICAgICByZXR1cm4gdHJ1
ZTsKKyNlbHNlCisgICAgVU5VU0VEX1BBUkFNKHN0eWxlKTsKICNlbmRpZgogCiAgICAgYm9vbCBw
YWdlVXNlc0RhcmtBcHBlYXJhbmNlID0gZmFsc2U7CkBAIC03Mjk2LDIxICs3MzI0LDE5IEBAIGJv
b2wgRG9jdW1lbnQ6OnVzZURhcmtBcHBlYXJhbmNlKCkgY29uc3QKICAgICAgICAgcmV0dXJuIHBh
Z2VVc2VzRGFya0FwcGVhcmFuY2U7CiAKICNpZiBFTkFCTEUoREFSS19NT0RFX0NTUykKLSAgICBp
ZiAobV9zdXBwb3J0ZWRDb2xvclNjaGVtZXMuY29udGFpbnMoQ29sb3JTY2hlbWVzOjpEYXJrKSkK
KyAgICBpZiAoc3VwcG9ydGVkQ29sb3JTY2hlbWVzLmNvbnRhaW5zKENvbG9yU2NoZW1lczo6RGFy
aykpCiAgICAgICAgIHJldHVybiBwYWdlVXNlc0RhcmtBcHBlYXJhbmNlOwotCi0gICAgQVNTRVJU
KG1fc3VwcG9ydGVkQ29sb3JTY2hlbWVzLmNvbnRhaW5zKENvbG9yU2NoZW1lczo6TGlnaHQpKTsK
ICNlbmRpZgogCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1PcHRpb25TZXQ8U3R5bGVDb2xvcjo6
T3B0aW9ucz4gRG9jdW1lbnQ6OnN0eWxlQ29sb3JPcHRpb25zKCkgY29uc3QKK09wdGlvblNldDxT
dHlsZUNvbG9yOjpPcHRpb25zPiBEb2N1bWVudDo6c3R5bGVDb2xvck9wdGlvbnMoY29uc3QgUmVu
ZGVyU3R5bGUqIHN0eWxlKSBjb25zdAogewogICAgIE9wdGlvblNldDxTdHlsZUNvbG9yOjpPcHRp
b25zPiBvcHRpb25zOwogICAgIGlmICh1c2VTeXN0ZW1BcHBlYXJhbmNlKCkpCiAgICAgICAgIG9w
dGlvbnMuYWRkKFN0eWxlQ29sb3I6Ok9wdGlvbnM6OlVzZVN5c3RlbUFwcGVhcmFuY2UpOwotICAg
IGlmICh1c2VEYXJrQXBwZWFyYW5jZSgpKQorICAgIGlmICh1c2VEYXJrQXBwZWFyYW5jZShzdHls
ZSkpCiAgICAgICAgIG9wdGlvbnMuYWRkKFN0eWxlQ29sb3I6Ok9wdGlvbnM6OlVzZURhcmtBcHBl
YXJhbmNlKTsKICAgICByZXR1cm4gb3B0aW9uczsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9Eb2N1bWVudC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKaW5kZXgg
NmE3MjY1YTliMWJmNzM1ZGNiZWM5MzRiNzdiY2ZmZmEwMmRhZDVjYS4uY2Q1M2RiYTY4NWE5YjAz
MGEzNDI2ODBkNTJmNDM1YmY1ZDNjOWIxMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9t
L0RvY3VtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKQEAgLTU3OCw5
ICs1NzgsOSBAQCBwdWJsaWM6CiAgICAgZmxvYXQgZGV2aWNlU2NhbGVGYWN0b3IoKSBjb25zdDsK
IAogICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgdXNlU3lzdGVtQXBwZWFyYW5jZSgpIGNvbnN0Owot
ICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgdXNlRGFya0FwcGVhcmFuY2UoKSBjb25zdDsKKyAgICBX
RUJDT1JFX0VYUE9SVCBib29sIHVzZURhcmtBcHBlYXJhbmNlKGNvbnN0IFJlbmRlclN0eWxlKikg
Y29uc3Q7CiAKLSAgICBPcHRpb25TZXQ8U3R5bGVDb2xvcjo6T3B0aW9ucz4gc3R5bGVDb2xvck9w
dGlvbnMoKSBjb25zdDsKKyAgICBPcHRpb25TZXQ8U3R5bGVDb2xvcjo6T3B0aW9ucz4gc3R5bGVD
b2xvck9wdGlvbnMoY29uc3QgUmVuZGVyU3R5bGUqKSBjb25zdDsKIAogICAgIFdFQkNPUkVfRVhQ
T1JUIFJlZjxSYW5nZT4gY3JlYXRlUmFuZ2UoKTsKIApAQCAtOTAxLDExICs5MDEsNiBAQCBwdWJs
aWM6CiAgICAgdm9pZCBwcm9jZXNzUmVmZXJyZXJQb2xpY3koY29uc3QgU3RyaW5nJiBwb2xpY3ks
IFJlZmVycmVyUG9saWN5U291cmNlKTsKIAogI2lmIEVOQUJMRShEQVJLX01PREVfQ1NTKQotICAg
IGVudW0gY2xhc3MgQ29sb3JTY2hlbWVzIDogdWludDhfdCB7Ci0gICAgICAgIExpZ2h0ID0gMSA8
PCAwLAotICAgICAgICBEYXJrID0gMSA8PCAxCi0gICAgfTsKLQogICAgIHZvaWQgcHJvY2Vzc1N1
cHBvcnRlZENvbG9yU2NoZW1lcyhjb25zdCBTdHJpbmcmIGNvbG9yU2NoZW1lcyk7CiAjZW5kaWYK
IApAQCAtMTc3Miw3ICsxNzY3LDggQEAgcHJpdmF0ZToKICAgICBIYXNoU2V0PFNWR1VzZUVsZW1l
bnQqPiBtX3N2Z1VzZUVsZW1lbnRzOwogCiAjaWYgRU5BQkxFKERBUktfTU9ERV9DU1MpCi0gICAg
T3B0aW9uU2V0PENvbG9yU2NoZW1lcz4gbV9zdXBwb3J0ZWRDb2xvclNjaGVtZXMgeyBDb2xvclNj
aGVtZXM6OkxpZ2h0IH07CisgICAgT3B0aW9uU2V0PENvbG9yU2NoZW1lcz4gbV9zdXBwb3J0ZWRD
b2xvclNjaGVtZXM7CisgICAgYm9vbCBtX2FsbG93c0NvbG9yU2NoZW1lVHJhbnNmb3JtYXRpb25z
IHsgdHJ1ZSB9OwogI2VuZGlmCiAKICNpZiBFTkFCTEUoREFTSEJPQVJEX1NVUFBPUlQpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL1dlYkNvbnRlbnRSZWFkZXJDb2Nv
YS5tbSBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvV2ViQ29udGVudFJlYWRlckNvY29h
Lm1tCmluZGV4IGFlZmViMWFmMWY2OTNjMzkxMmJkZjhkNjhkM2ZkOWQ1Y2M3NjVmZWMuLmQ0MjA3
YjljZjFjMWNkNjg4NDczZDRiZjA4YjRlYTI4MDBiNzQ2YjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvY29jb2EvV2ViQ29udGVudFJlYWRlckNvY29hLm1tCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvV2ViQ29udGVudFJlYWRlckNvY29hLm1tCkBAIC01MCw2
ICs1MCw3IEBACiAjaW1wb3J0ICJNSU1FVHlwZVJlZ2lzdHJ5LmgiCiAjaW1wb3J0ICJQYWdlLmgi
CiAjaW1wb3J0ICJQdWJsaWNVUkxNYW5hZ2VyLmgiCisjaW1wb3J0ICJSZW5kZXJWaWV3LmgiCiAj
aW1wb3J0ICJSdW50aW1lRW5hYmxlZEZlYXR1cmVzLmgiCiAjaW1wb3J0ICJTZXJpYWxpemVkQXR0
YWNobWVudERhdGEuaCIKICNpbXBvcnQgIlNldHRpbmdzLmgiCkBAIC0xMzMsNyArMTM0LDkgQEAg
c3RhdGljIEZyYWdtZW50QW5kUmVzb3VyY2VzIGNyZWF0ZUZyYWdtZW50KEZyYW1lJiBmcmFtZSwg
TlNBdHRyaWJ1dGVkU3RyaW5nICpzdHIKICAgICBEb2N1bWVudCYgZG9jdW1lbnQgPSAqZnJhbWUu
ZG9jdW1lbnQoKTsKIAogI2lmIFBMQVRGT1JNKE1BQykKLSAgICBMb2NhbERlZmF1bHRTeXN0ZW1B
cHBlYXJhbmNlIGxvY2FsQXBwZWFyYW5jZShkb2N1bWVudC51c2VEYXJrQXBwZWFyYW5jZSgpKTsK
KyAgICBhdXRvKiB2aWV3ID0gZnJhbWUudmlldygpOworICAgIGF1dG8qIHJlbmRlclZpZXcgPSB2
aWV3ID8gdmlldy0+cmVuZGVyVmlldygpIDogbnVsbHB0cjsKKyAgICBMb2NhbERlZmF1bHRTeXN0
ZW1BcHBlYXJhbmNlIGxvY2FsQXBwZWFyYW5jZShyZW5kZXJWaWV3ID8gcmVuZGVyVmlldy0+dXNl
RGFya0FwcGVhcmFuY2UoKSA6IGZhbHNlKTsKICNlbmRpZgogCiAgICAgTlNBcnJheSAqc3VicmVz
b3VyY2VzID0gbmlsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2Fu
dmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0Nh
bnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHAKaW5kZXggZDE1ZGVjNDYwZWQ3NTQ4YmI1NzZjMTc5
NTE2MzlkOWEyODcxNjAzNy4uZGExYzgwZmQyZmQ4MTEwZDlmNThjNzMyMTNiZGM4M2JlYmQwMmY3
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5n
Q29udGV4dDJELmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5k
ZXJpbmdDb250ZXh0MkQuY3BwCkBAIC04Niw3ICs4Niw3IEBAIHZvaWQgQ2FudmFzUmVuZGVyaW5n
Q29udGV4dDJEOjpkcmF3Rm9jdXNJZk5lZWRlZEludGVybmFsKGNvbnN0IFBhdGgmIHBhdGgsIEVs
ZW1lCiAgICAgYXV0byogY29udGV4dCA9IGRyYXdpbmdDb250ZXh0KCk7CiAgICAgaWYgKCFlbGVt
ZW50LmZvY3VzZWQoKSB8fCAhc3RhdGUoKS5oYXNJbnZlcnRpYmxlVHJhbnNmb3JtIHx8IHBhdGgu
aXNFbXB0eSgpIHx8ICFlbGVtZW50LmlzRGVzY2VuZGFudE9mKGNhbnZhcygpKSB8fCAhY29udGV4
dCkKICAgICAgICAgcmV0dXJuOwotICAgIGNvbnRleHQtPmRyYXdGb2N1c1JpbmcocGF0aCwgMSwg
MSwgUmVuZGVyVGhlbWU6OmZvY3VzUmluZ0NvbG9yKGVsZW1lbnQuZG9jdW1lbnQoKS5zdHlsZUNv
bG9yT3B0aW9ucygpKSk7CisgICAgY29udGV4dC0+ZHJhd0ZvY3VzUmluZyhwYXRoLCAxLCAxLCBS
ZW5kZXJUaGVtZTo6Zm9jdXNSaW5nQ29sb3IoZWxlbWVudC5kb2N1bWVudCgpLnN0eWxlQ29sb3JP
cHRpb25zKGNhbnZhcygpLmNvbXB1dGVkU3R5bGUoKSkpKTsKIH0KIAogU3RyaW5nIENhbnZhc1Jl
bmRlcmluZ0NvbnRleHQyRDo6Zm9udCgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yT3ZlcmxheS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yT3ZlcmxheS5jcHAKaW5kZXggZDVkZWY5MGYxNmY4ODJmODE0YTZiY2Q4Njc1
Yjc4YzY0ZGQ0YjkxYy4uZGVjNzFlNWZlODQwMTJkMzliMDA3NDg5Njg3MTE0MGFhZDA4NjE2NSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvck92ZXJsYXkuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JPdmVybGF5LmNwcApAQCAt
MTgwLDEyICsxODAsMTMgQEAgdm9pZCBJbnNwZWN0b3JPdmVybGF5OjpwYWludChHcmFwaGljc0Nv
bnRleHQmIGNvbnRleHQpCiAgICAgaWYgKCFzaG91bGRTaG93T3ZlcmxheSgpKQogICAgICAgICBy
ZXR1cm47CiAKKyAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoY29udGV4
dCk7CisgICAgRnJhbWVWaWV3KiB2aWV3ID0gb3ZlcmxheVBhZ2UoKS0+bWFpbkZyYW1lKCkudmll
dygpOworCiAjaWYgUExBVEZPUk0oTUFDKQotICAgIExvY2FsRGVmYXVsdFN5c3RlbUFwcGVhcmFu
Y2UgbG9jYWxBcHBlYXJhbmNlKG1fcGFnZS5tYWluRnJhbWUoKS5kb2N1bWVudCgpLT51c2VEYXJr
QXBwZWFyYW5jZSgpKTsKKyAgICBMb2NhbERlZmF1bHRTeXN0ZW1BcHBlYXJhbmNlIGxvY2FsQXBw
ZWFyYW5jZSh2aWV3LT5yZW5kZXJWaWV3KCktPnVzZURhcmtBcHBlYXJhbmNlKCkpOwogI2VuZGlm
CiAKLSAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoY29udGV4dCk7Ci0g
ICAgRnJhbWVWaWV3KiB2aWV3ID0gb3ZlcmxheVBhZ2UoKS0+bWFpbkZyYW1lKCkudmlldygpOwog
ICAgIHZpZXctPnVwZGF0ZUxheW91dEFuZFN0eWxlSWZOZWVkZWRSZWN1cnNpdmUoKTsKICAgICB2
aWV3LT5wYWludChjb250ZXh0LCBJbnRSZWN0KDAsIDAsIHZpZXctPndpZHRoKCksIHZpZXctPmhl
aWdodCgpKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAKaW5kZXggM2U2MjQ2YTU1NGU2
OTdhNjg1YmY3ZjJiNGYwYjU4NTFlODU3MDc1Yi4uMjBkNzYxNWZlZjAwNWRhYjM4ZDc0NGMzMmI5
ZjE2ZWNiYmQxMmI5YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcApAQCAtMjA0Niw5ICsy
MDQ2LDcgQEAgYm9vbCBGcmFtZVZpZXc6OnNob3VsZFNldEN1cnNvcigpIGNvbnN0CiAKIGJvb2wg
RnJhbWVWaWV3Ojp1c2VEYXJrQXBwZWFyYW5jZSgpIGNvbnN0CiB7Ci0gICAgQVNTRVJUKGZyYW1l
KCkuZG9jdW1lbnQoKSk7Ci0gICAgYXV0byYgZG9jdW1lbnQgPSAqZnJhbWUoKS5kb2N1bWVudCgp
OwotICAgIHJldHVybiBkb2N1bWVudC51c2VEYXJrQXBwZWFyYW5jZSgpOworICAgIHJldHVybiBy
ZW5kZXJWaWV3KCktPnVzZURhcmtBcHBlYXJhbmNlKCk7CiB9CiAKIGJvb2wgRnJhbWVWaWV3Ojpz
Y3JvbGxDb250ZW50c0Zhc3RQYXRoKGNvbnN0IEludFNpemUmIHNjcm9sbERlbHRhLCBjb25zdCBJ
bnRSZWN0JiByZWN0VG9TY3JvbGwsIGNvbnN0IEludFJlY3QmIGNsaXBSZWN0KQpAQCAtMzkxMSw4
ICszOTA5LDcgQEAgdm9pZCBGcmFtZVZpZXc6OnBhaW50U2Nyb2xsQ29ybmVyKEdyYXBoaWNzQ29u
dGV4dCYgY29udGV4dCwgY29uc3QgSW50UmVjdCYgY29ybmUKICNpZiBQTEFURk9STShNQUMpCiAg
ICAgLy8gSWYgZGFyayBhcHBlYXJhbmNlIGlzIHVzZWQgb3IgdGhlIG92ZXJsYXkgc3R5bGUgaXMg
bGlnaHQgKGJlY2F1c2Ugb2YgYSBkYXJrIHBhZ2UgYmFja2dyb3VuZCksIHNldCB0aGUgZGFyayBh
cHBwZWFyYW5jZS4KICAgICAvLyBLZWVwIHRoaXMgaW4gc3luYyB3aXRoIFNjcm9sbEFuaW1hdG9y
TWFjJ3MgZWZmZWN0aXZlQXBwZWFyYW5jZUZvclNjcm9sbGVySW1wOi4KLSAgICBhdXRvKiBkb2N1
bWVudCA9IGZyYW1lKCkuZG9jdW1lbnQoKTsKLSAgICBib29sIHVzZURhcmtBcHBlYXJhbmNlID0g
KGRvY3VtZW50ICYmIGRvY3VtZW50LT51c2VEYXJrQXBwZWFyYW5jZSgpKSB8fCBzY3JvbGxiYXJP
dmVybGF5U3R5bGUoKSA9PSBXZWJDb3JlOjpTY3JvbGxiYXJPdmVybGF5U3R5bGVMaWdodDsKKyAg
ICBib29sIHVzZURhcmtBcHBlYXJhbmNlID0gcmVuZGVyVmlldygpLT51c2VEYXJrQXBwZWFyYW5j
ZSgpIHx8IHNjcm9sbGJhck92ZXJsYXlTdHlsZSgpID09IFdlYkNvcmU6OlNjcm9sbGJhck92ZXJs
YXlTdHlsZUxpZ2h0OwogICAgIExvY2FsRGVmYXVsdFN5c3RlbUFwcGVhcmFuY2UgbG9jYWxBcHBl
YXJhbmNlKHVzZURhcmtBcHBlYXJhbmNlKTsKICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tYWMvRHJhZ0ltYWdlTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWFjL0RyYWdJbWFnZU1hYy5tbQppbmRleCAxMWNkYTI0ZDBjOTZhNzFhYzhkMWIyMjIy
NTFhY2Q5ZTMzZThmMjEwLi45YzMwZjc5Yzg0ZDNjN2Q4NjVkNDExNTUzOTEzNjdjOGY0NDRhNmRh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvRHJhZ0ltYWdlTWFjLm1t
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9EcmFnSW1hZ2VNYWMubW0KQEAgLTMw
MCw3ICszMDAsNyBAQCBEcmFnSW1hZ2VSZWYgY3JlYXRlRHJhZ0ltYWdlRm9yTGluayhFbGVtZW50
JiBlbGVtZW50LCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiB0aQogewogICAgIExpbmtJbWFnZUxh
eW91dCBsYXlvdXQodXJsLCB0aXRsZSk7CiAKLSAgICBMb2NhbERlZmF1bHRTeXN0ZW1BcHBlYXJh
bmNlIGxvY2FsQXBwZWFyYW5jZShlbGVtZW50LmRvY3VtZW50KCkudXNlRGFya0FwcGVhcmFuY2Uo
KSk7CisgICAgTG9jYWxEZWZhdWx0U3lzdGVtQXBwZWFyYW5jZSBsb2NhbEFwcGVhcmFuY2UoZWxl
bWVudC5kb2N1bWVudCgpLnVzZURhcmtBcHBlYXJhbmNlKGVsZW1lbnQuY29tcHV0ZWRTdHlsZSgp
KSk7CiAKICAgICBhdXRvIGltYWdlU2l6ZSA9IGxheW91dC5ib3VuZGluZ1JlY3Quc2l6ZSgpOwog
I2lmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPCAxMDEzMDAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVGbG93Qm94LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9JbmxpbmVGbG93Qm94LmNwcAppbmRleCBkNzQ1ODExOGEyYjg1ZTE0MmMz
ZGQwNTVhYWVkYzgyY2RmZmU1Yzg1Li4wM2U0MWU3MTU5MjAwYWFjZjJjZjg5OGJkMmIyZjljMjg2
MDZhYjk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lRmxvd0Jv
eC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZUZsb3dCb3guY3BwCkBA
IC0xMzcyLDcgKzEzNzIsNyBAQCB2b2lkIElubGluZUZsb3dCb3g6OnBhaW50Qm94RGVjb3JhdGlv
bnMoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFBvaW50JgogICAgIENvbG9yIGNv
bG9yID0gbGluZVN0eWxlLnZpc2l0ZWREZXBlbmRlbnRDb2xvcihDU1NQcm9wZXJ0eUJhY2tncm91
bmRDb2xvcik7CiAKICAgICBDb21wb3NpdGVPcGVyYXRvciBjb21wb3NpdGVPcCA9IENvbXBvc2l0
ZVNvdXJjZU92ZXI7Ci0gICAgaWYgKHJlbmRlcmVyKCkuZG9jdW1lbnQoKS5zZXR0aW5ncygpLnB1
bmNoT3V0V2hpdGVCYWNrZ3JvdW5kc0luRGFya01vZGUoKSAmJiBDb2xvcjo6aXNXaGl0ZUNvbG9y
KGNvbG9yKSAmJiByZW5kZXJlcigpLnRoZW1lKCkudXNpbmdEYXJrQXBwZWFyYW5jZShyZW5kZXJl
cigpKSkKKyAgICBpZiAocmVuZGVyZXIoKS5kb2N1bWVudCgpLnNldHRpbmdzKCkucHVuY2hPdXRX
aGl0ZUJhY2tncm91bmRzSW5EYXJrTW9kZSgpICYmIENvbG9yOjppc1doaXRlQ29sb3IoY29sb3Ip
ICYmIHJlbmRlcmVyKCkudXNlRGFya0FwcGVhcmFuY2UoKSkKICAgICAgICAgY29tcG9zaXRlT3Ag
PSBDb21wb3NpdGVEZXN0aW5hdGlvbk91dDsKIAogICAgIGNvbG9yID0gbGluZVN0eWxlLmNvbG9y
QnlBcHBseWluZ0NvbG9yRmlsdGVyKGNvbG9yKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9JbmxpbmVUZXh0Qm94LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9J
bmxpbmVUZXh0Qm94LmNwcAppbmRleCA1MDM5ZTJhYWFjZWIxOTU5M2JlOTQ5N2U5ZWUyYmYwNzkz
Zjc5OTczLi4wOGViMDM5NzZjMmUxNmJkNDk5YTcwNmYwYjBiMTg0OTU1NmMyOWFlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lVGV4dEJveC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZVRleHRCb3guY3BwCkBAIC03MTYsNyArNzE2LDcg
QEAgdm9pZCBJbmxpbmVUZXh0Qm94OjpwYWludFBsYXRmb3JtRG9jdW1lbnRNYXJrZXIoR3JhcGhp
Y3NDb250ZXh0JiBjb250ZXh0LCBjb25zdAogICAgIGF1dG8gYm91bmRzID0gY2FsY3VsYXRlRG9j
dW1lbnRNYXJrZXJCb3VuZHMobWFya2VkVGV4dCk7CiAKICAgICBhdXRvIGxpbmVTdHlsZUZvck1h
cmtlZFRleHRUeXBlID0gWyZdKCkgLT4gRG9jdW1lbnRNYXJrZXJMaW5lU3R5bGUgewotICAgICAg
ICBib29sIHNob3VsZFVzZURhcmtBcHBlYXJhbmNlID0gcmVuZGVyZXIoKS5kb2N1bWVudCgpLnVz
ZURhcmtBcHBlYXJhbmNlKCk7CisgICAgICAgIGJvb2wgc2hvdWxkVXNlRGFya0FwcGVhcmFuY2Ug
PSByZW5kZXJlcigpLnVzZURhcmtBcHBlYXJhbmNlKCk7CiAgICAgICAgIHN3aXRjaCAobWFya2Vk
VGV4dC50eXBlKSB7CiAgICAgICAgIGNhc2UgTWFya2VkVGV4dDo6U3BlbGxpbmdFcnJvcjoKICAg
ICAgICAgICAgIHJldHVybiB7IERvY3VtZW50TWFya2VyTGluZVN0eWxlOjpNb2RlOjpTcGVsbGlu
Zywgc2hvdWxkVXNlRGFya0FwcGVhcmFuY2UgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJCb3guY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckJveC5jcHAKaW5kZXggY2E2ZTdjMTQ1ZmJmZTI3ZTA3NGNiMTFmY2UzOGEyMjgzNjAwMzA2MC4u
MGYxMmFkODBiOTRkMGFlNGVmMzJlMmIzNDEyMGFlMjkxMzljYTdmYiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckJveC5jcHAKQEAgLTEyMDcsNyArMTIwNyw3IEBAIHZvaWQgUmVuZGVy
Qm94OjpwYWludFJvb3RCb3hGaWxsTGF5ZXJzKGNvbnN0IFBhaW50SW5mbyYgcGFpbnRJbmZvKQog
ICAgIGF1dG8gY29sb3IgPSBzdHlsZS52aXNpdGVkRGVwZW5kZW50Q29sb3IoQ1NTUHJvcGVydHlC
YWNrZ3JvdW5kQ29sb3IpOwogCiAgICAgQ29tcG9zaXRlT3BlcmF0b3IgY29tcG9zaXRlT3AgPSBD
b21wb3NpdGVTb3VyY2VPdmVyOwotICAgIGlmIChkb2N1bWVudCgpLnNldHRpbmdzKCkucHVuY2hP
dXRXaGl0ZUJhY2tncm91bmRzSW5EYXJrTW9kZSgpICYmIENvbG9yOjppc1doaXRlQ29sb3IoY29s
b3IpICYmIHRoZW1lKCkudXNpbmdEYXJrQXBwZWFyYW5jZSgqdGhpcykpCisgICAgaWYgKGRvY3Vt
ZW50KCkuc2V0dGluZ3MoKS5wdW5jaE91dFdoaXRlQmFja2dyb3VuZHNJbkRhcmtNb2RlKCkgJiYg
Q29sb3I6OmlzV2hpdGVDb2xvcihjb2xvcikgJiYgdXNlRGFya0FwcGVhcmFuY2UoKSkKICAgICAg
ICAgY29tcG9zaXRlT3AgPSBDb21wb3NpdGVEZXN0aW5hdGlvbk91dDsKIAogICAgIHBhaW50Rmls
bExheWVycyhwYWludEluZm8sIHN0eWxlLmNvbG9yQnlBcHBseWluZ0NvbG9yRmlsdGVyKGNvbG9y
KSwgc3R5bGUuYmFja2dyb3VuZExheWVycygpLCB2aWV3KCkuYmFja2dyb3VuZFJlY3QoKSwgQmFj
a2dyb3VuZEJsZWVkTm9uZSwgY29tcG9zaXRlT3AsIHJvb3RCYWNrZ3JvdW5kUmVuZGVyZXIpOwpA
QCAtMTM0MSw3ICsxMzQxLDcgQEAgdm9pZCBSZW5kZXJCb3g6OnBhaW50QmFja2dyb3VuZChjb25z
dCBQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UmVjdCYgcGEKICAgICBDb2xvciBi
YWNrZ3JvdW5kQ29sb3IgPSBzdHlsZSgpLnZpc2l0ZWREZXBlbmRlbnRDb2xvcihDU1NQcm9wZXJ0
eUJhY2tncm91bmRDb2xvcik7CiAKICAgICBDb21wb3NpdGVPcGVyYXRvciBjb21wb3NpdGVPcCA9
IENvbXBvc2l0ZVNvdXJjZU92ZXI7Ci0gICAgaWYgKGRvY3VtZW50KCkuc2V0dGluZ3MoKS5wdW5j
aE91dFdoaXRlQmFja2dyb3VuZHNJbkRhcmtNb2RlKCkgJiYgQ29sb3I6OmlzV2hpdGVDb2xvcihi
YWNrZ3JvdW5kQ29sb3IpICYmIHRoZW1lKCkudXNpbmdEYXJrQXBwZWFyYW5jZSgqdGhpcykpCisg
ICAgaWYgKGRvY3VtZW50KCkuc2V0dGluZ3MoKS5wdW5jaE91dFdoaXRlQmFja2dyb3VuZHNJbkRh
cmtNb2RlKCkgJiYgQ29sb3I6OmlzV2hpdGVDb2xvcihiYWNrZ3JvdW5kQ29sb3IpICYmIHVzZURh
cmtBcHBlYXJhbmNlKCkpCiAgICAgICAgIGNvbXBvc2l0ZU9wID0gQ29tcG9zaXRlRGVzdGluYXRp
b25PdXQ7CiAKICAgICBwYWludEZpbGxMYXllcnMocGFpbnRJbmZvLCBzdHlsZSgpLmNvbG9yQnlB
cHBseWluZ0NvbG9yRmlsdGVyKGJhY2tncm91bmRDb2xvciksIHN0eWxlKCkuYmFja2dyb3VuZExh
eWVycygpLCBwYWludFJlY3QsIGJsZWVkQXZvaWRhbmNlLCBjb21wb3NpdGVPcCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5jcHAKaW5kZXggYmY5N2MwODIyNWNiYTk2
ODI3MTIzMjhhZDU4ZTk2MDczODAxMzlhMC4uOTA4Yjg1YTg4ZDU0YjkzNmI3MTVhYjlhYTY0MzE2
NzQ0NDMzZGI0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVs
ZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbGVtZW50LmNw
cApAQCAtMTM3NCw4ICsxMzc0LDggQEAgQ29sb3IgUmVuZGVyRWxlbWVudDo6c2VsZWN0aW9uQ29s
b3IoQ1NTUHJvcGVydHlJRCBjb2xvclByb3BlcnR5KSBjb25zdAogICAgIH0KIAogICAgIGlmIChm
cmFtZSgpLnNlbGVjdGlvbigpLmlzRm9jdXNlZEFuZEFjdGl2ZSgpKQotICAgICAgICByZXR1cm4g
dGhlbWUoKS5hY3RpdmVTZWxlY3Rpb25Gb3JlZ3JvdW5kQ29sb3IoZG9jdW1lbnQoKS5zdHlsZUNv
bG9yT3B0aW9ucygpKTsKLSAgICByZXR1cm4gdGhlbWUoKS5pbmFjdGl2ZVNlbGVjdGlvbkZvcmVn
cm91bmRDb2xvcihkb2N1bWVudCgpLnN0eWxlQ29sb3JPcHRpb25zKCkpOworICAgICAgICByZXR1
cm4gdGhlbWUoKS5hY3RpdmVTZWxlY3Rpb25Gb3JlZ3JvdW5kQ29sb3Ioc3R5bGVDb2xvck9wdGlv
bnMoKSk7CisgICAgcmV0dXJuIHRoZW1lKCkuaW5hY3RpdmVTZWxlY3Rpb25Gb3JlZ3JvdW5kQ29s
b3Ioc3R5bGVDb2xvck9wdGlvbnMoKSk7CiB9CiAKIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHls
ZT4gUmVuZGVyRWxlbWVudDo6c2VsZWN0aW9uUHNldWRvU3R5bGUoKSBjb25zdApAQCAtMTQwOSwx
NSArMTQwOSwxNSBAQCBDb2xvciBSZW5kZXJFbGVtZW50OjpzZWxlY3Rpb25CYWNrZ3JvdW5kQ29s
b3IoKSBjb25zdAogICAgICAgICByZXR1cm4gQ29sb3IoKTsKIAogICAgIGlmIChmcmFtZSgpLnNl
bGVjdGlvbigpLnNob3VsZFNob3dCbG9ja0N1cnNvcigpICYmIGZyYW1lKCkuc2VsZWN0aW9uKCku
aXNDYXJldCgpKQotICAgICAgICByZXR1cm4gdGhlbWUoKS50cmFuc2Zvcm1TZWxlY3Rpb25CYWNr
Z3JvdW5kQ29sb3Ioc3R5bGUoKS52aXNpdGVkRGVwZW5kZW50Q29sb3JXaXRoQ29sb3JGaWx0ZXIo
Q1NTUHJvcGVydHlDb2xvciksIGRvY3VtZW50KCkuc3R5bGVDb2xvck9wdGlvbnMoKSk7CisgICAg
ICAgIHJldHVybiB0aGVtZSgpLnRyYW5zZm9ybVNlbGVjdGlvbkJhY2tncm91bmRDb2xvcihzdHls
ZSgpLnZpc2l0ZWREZXBlbmRlbnRDb2xvcldpdGhDb2xvckZpbHRlcihDU1NQcm9wZXJ0eUNvbG9y
KSwgc3R5bGVDb2xvck9wdGlvbnMoKSk7CiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5
bGU+IHBzZXVkb1N0eWxlID0gc2VsZWN0aW9uUHNldWRvU3R5bGUoKTsKICAgICBpZiAocHNldWRv
U3R5bGUgJiYgcHNldWRvU3R5bGUtPnZpc2l0ZWREZXBlbmRlbnRDb2xvcldpdGhDb2xvckZpbHRl
cihDU1NQcm9wZXJ0eUJhY2tncm91bmRDb2xvcikuaXNWYWxpZCgpKQotICAgICAgICByZXR1cm4g
dGhlbWUoKS50cmFuc2Zvcm1TZWxlY3Rpb25CYWNrZ3JvdW5kQ29sb3IocHNldWRvU3R5bGUtPnZp
c2l0ZWREZXBlbmRlbnRDb2xvcldpdGhDb2xvckZpbHRlcihDU1NQcm9wZXJ0eUJhY2tncm91bmRD
b2xvciksIGRvY3VtZW50KCkuc3R5bGVDb2xvck9wdGlvbnMoKSk7CisgICAgICAgIHJldHVybiB0
aGVtZSgpLnRyYW5zZm9ybVNlbGVjdGlvbkJhY2tncm91bmRDb2xvcihwc2V1ZG9TdHlsZS0+dmlz
aXRlZERlcGVuZGVudENvbG9yV2l0aENvbG9yRmlsdGVyKENTU1Byb3BlcnR5QmFja2dyb3VuZENv
bG9yKSwgc3R5bGVDb2xvck9wdGlvbnMoKSk7CiAKICAgICBpZiAoZnJhbWUoKS5zZWxlY3Rpb24o
KS5pc0ZvY3VzZWRBbmRBY3RpdmUoKSkKLSAgICAgICAgcmV0dXJuIHRoZW1lKCkuYWN0aXZlU2Vs
ZWN0aW9uQmFja2dyb3VuZENvbG9yKGRvY3VtZW50KCkuc3R5bGVDb2xvck9wdGlvbnMoKSk7Ci0g
ICAgcmV0dXJuIHRoZW1lKCkuaW5hY3RpdmVTZWxlY3Rpb25CYWNrZ3JvdW5kQ29sb3IoZG9jdW1l
bnQoKS5zdHlsZUNvbG9yT3B0aW9ucygpKTsKKyAgICAgICAgcmV0dXJuIHRoZW1lKCkuYWN0aXZl
U2VsZWN0aW9uQmFja2dyb3VuZENvbG9yKHN0eWxlQ29sb3JPcHRpb25zKCkpOworICAgIHJldHVy
biB0aGVtZSgpLmluYWN0aXZlU2VsZWN0aW9uQmFja2dyb3VuZENvbG9yKHN0eWxlQ29sb3JPcHRp
b25zKCkpOwogfQogCiBib29sIFJlbmRlckVsZW1lbnQ6OmdldExlYWRpbmdDb3JuZXIoRmxvYXRQ
b2ludCYgcG9pbnQsIGJvb2wmIGluc2lkZUZpeGVkKSBjb25zdApAQCAtMTgzOCw5ICsxODM4LDkg
QEAgdm9pZCBSZW5kZXJFbGVtZW50OjpwYWludEZvY3VzUmluZyhQYWludEluZm8mIHBhaW50SW5m
bywgY29uc3QgUmVuZGVyU3R5bGUmIHN0eWwKICAgICAgICAgICAgIGZvciAoYXV0byByZWN0IDog
cGl4ZWxTbmFwcGVkRm9jdXNSaW5nUmVjdHMpCiAgICAgICAgICAgICAgICAgcGF0aC5hZGRSZWN0
KHJlY3QpOwogICAgICAgICB9Ci0gICAgICAgIHBhaW50SW5mby5jb250ZXh0KCkuZHJhd0ZvY3Vz
UmluZyhwYXRoLCBwYWdlKCkuZm9jdXNDb250cm9sbGVyKCkudGltZVNpbmNlRm9jdXNXYXNTZXQo
KS5zZWNvbmRzKCksIG5lZWRzUmVwYWludCwgUmVuZGVyVGhlbWU6OmZvY3VzUmluZ0NvbG9yKGRv
Y3VtZW50KCkuc3R5bGVDb2xvck9wdGlvbnMoKSkpOworICAgICAgICBwYWludEluZm8uY29udGV4
dCgpLmRyYXdGb2N1c1JpbmcocGF0aCwgcGFnZSgpLmZvY3VzQ29udHJvbGxlcigpLnRpbWVTaW5j
ZUZvY3VzV2FzU2V0KCkuc2Vjb25kcygpLCBuZWVkc1JlcGFpbnQsIFJlbmRlclRoZW1lOjpmb2N1
c1JpbmdDb2xvcihzdHlsZUNvbG9yT3B0aW9ucygpKSk7CiAgICAgfSBlbHNlCi0gICAgICAgIHBh
aW50SW5mby5jb250ZXh0KCkuZHJhd0ZvY3VzUmluZyhwaXhlbFNuYXBwZWRGb2N1c1JpbmdSZWN0
cywgcGFnZSgpLmZvY3VzQ29udHJvbGxlcigpLnRpbWVTaW5jZUZvY3VzV2FzU2V0KCkuc2Vjb25k
cygpLCBuZWVkc1JlcGFpbnQsIFJlbmRlclRoZW1lOjpmb2N1c1JpbmdDb2xvcihkb2N1bWVudCgp
LnN0eWxlQ29sb3JPcHRpb25zKCkpKTsKKyAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQoKS5kcmF3
Rm9jdXNSaW5nKHBpeGVsU25hcHBlZEZvY3VzUmluZ1JlY3RzLCBwYWdlKCkuZm9jdXNDb250cm9s
bGVyKCkudGltZVNpbmNlRm9jdXNXYXNTZXQoKS5zZWNvbmRzKCksIG5lZWRzUmVwYWludCwgUmVu
ZGVyVGhlbWU6OmZvY3VzUmluZ0NvbG9yKHN0eWxlQ29sb3JPcHRpb25zKCkpKTsKICAgICBpZiAo
bmVlZHNSZXBhaW50KQogICAgICAgICBwYWdlKCkuZm9jdXNDb250cm9sbGVyKCkuc2V0Rm9jdXNl
ZEVsZW1lbnROZWVkc1JlcGFpbnQoKTsKICNlbHNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckltYWdlLmNwcAppbmRleCA4MTA5ZWJmZmQyMWVkN2MzZTRkYTZhZjI4ZDhiOWQwYzM1MGEz
OTEzLi5hMGQyYjdiNDdlNmMyNDc3Zjg3MTYxNDM5OTBlMmRkM2Q2NTE3YTljIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2UuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZS5jcHAKQEAgLTU3NCw3ICs1NzQsNyBAQCB2b2lk
IFJlbmRlckltYWdlOjpwYWludEFyZWFFbGVtZW50Rm9jdXNSaW5nKFBhaW50SW5mbyYgcGFpbnRJ
bmZvLCBjb25zdCBMYXlvdXRQbwogCiAjaWYgUExBVEZPUk0oTUFDKQogICAgIGJvb2wgbmVlZHNS
ZXBhaW50OwotICAgIHBhaW50SW5mby5jb250ZXh0KCkuZHJhd0ZvY3VzUmluZyhwYXRoLCBwYWdl
KCkuZm9jdXNDb250cm9sbGVyKCkudGltZVNpbmNlRm9jdXNXYXNTZXQoKS5zZWNvbmRzKCksIG5l
ZWRzUmVwYWludCwgUmVuZGVyVGhlbWU6OmZvY3VzUmluZ0NvbG9yKGRvY3VtZW50KCkuc3R5bGVD
b2xvck9wdGlvbnMoKSkpOworICAgIHBhaW50SW5mby5jb250ZXh0KCkuZHJhd0ZvY3VzUmluZyhw
YXRoLCBwYWdlKCkuZm9jdXNDb250cm9sbGVyKCkudGltZVNpbmNlRm9jdXNXYXNTZXQoKS5zZWNv
bmRzKCksIG5lZWRzUmVwYWludCwgUmVuZGVyVGhlbWU6OmZvY3VzUmluZ0NvbG9yKHN0eWxlQ29s
b3JPcHRpb25zKCkpKTsKICAgICBpZiAobmVlZHNSZXBhaW50KQogICAgICAgICBwYWdlKCkuZm9j
dXNDb250cm9sbGVyKCkuc2V0Rm9jdXNlZEVsZW1lbnROZWVkc1JlcGFpbnQoKTsKICNlbHNlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwCmluZGV4
IDg4ZDZlMDFkZDZlZmM2ZTJmN2E5YmMyNDMzOWQ0ODQ0YWRmMmFkN2EuLmJiN2IxOWViYzhjYTYx
YTQyYjRmMGIzOTFjY2U3MWU0MDBkMDQ1NzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwCkBAIC0yNTQxLDcgKzI1NDEsNyBAQCB2b2lkIFJl
bmRlckxheWVyQmFja2luZzo6cGFpbnRDb250ZW50cyhjb25zdCBHcmFwaGljc0xheWVyKiBncmFw
aGljc0xheWVyLCBHcmFwaAogI2VuZGlmCiAKICNpZiBQTEFURk9STShNQUMpCi0gICAgTG9jYWxE
ZWZhdWx0U3lzdGVtQXBwZWFyYW5jZSBsb2NhbEFwcGVhcmFuY2UocmVuZGVyZXIoKS5kb2N1bWVu
dCgpLnVzZURhcmtBcHBlYXJhbmNlKCkpOworICAgIExvY2FsRGVmYXVsdFN5c3RlbUFwcGVhcmFu
Y2UgbG9jYWxBcHBlYXJhbmNlKHJlbmRlcmVyKCkudXNlRGFya0FwcGVhcmFuY2UoKSk7CiAjZW5k
aWYKIAogICAgIC8vIFRoZSBkaXJ0eVJlY3QgaXMgaW4gdGhlIGNvb3JkcyBvZiB0aGUgcGFpbnRp
bmcgcm9vdC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXll
ckNvbXBvc2l0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29t
cG9zaXRvci5jcHAKaW5kZXggYjY1NWZmMjVjOWE5NTgwNjA2NDhiYjdiZWRmMjA5ZjljNTAwYjNj
OC4uMDkyYjUwMDc1ZWIzOTFhZmRkNjZlNTBhMmIyYWVjODJjYjgyMThkYSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5jcHAKQEAgLTI3
ODIsNyArMjc4Miw3IEBAIHZvaWQgcGFpbnRTY3JvbGxiYXIoU2Nyb2xsYmFyKiBzY3JvbGxiYXIs
IEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgSW50UmVjCiB2b2lkIFJlbmRlckxheWVy
Q29tcG9zaXRvcjo6cGFpbnRDb250ZW50cyhjb25zdCBHcmFwaGljc0xheWVyKiBncmFwaGljc0xh
eWVyLCBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIEdyYXBoaWNzTGF5ZXJQYWludGluZ1BoYXNl
LCBjb25zdCBGbG9hdFJlY3QmIGNsaXAsIEdyYXBoaWNzTGF5ZXJQYWludEJlaGF2aW9yKQogewog
I2lmIFBMQVRGT1JNKE1BQykKLSAgICBMb2NhbERlZmF1bHRTeXN0ZW1BcHBlYXJhbmNlIGxvY2Fs
QXBwZWFyYW5jZShtX3JlbmRlclZpZXcuZG9jdW1lbnQoKS51c2VEYXJrQXBwZWFyYW5jZSgpKTsK
KyAgICBMb2NhbERlZmF1bHRTeXN0ZW1BcHBlYXJhbmNlIGxvY2FsQXBwZWFyYW5jZShtX3JlbmRl
clZpZXcudXNlRGFya0FwcGVhcmFuY2UoKSk7CiAjZW5kaWYKIAogICAgIEludFJlY3QgcGl4ZWxT
bmFwcGVkUmVjdEZvckludGVncmFsUG9zaXRpb25lZEl0ZW1zID0gc25hcHBlZEludFJlY3QoTGF5
b3V0UmVjdChjbGlwKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyTGlzdEJveC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdEJveC5j
cHAKaW5kZXggZWNkNTUxNjVmZmM4MTljNWIzMjZiM2U3NmEyNTA0OGQxNTA0YWIxZC4uNTIwMDgx
M2UxOTU2OGRiMzhlZjdkNTZjZjhlODBjNjQ2MzEwYTA1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RCb3guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJMaXN0Qm94LmNwcApAQCAtNDI4LDEwICs0MjgsMTAgQEAgdm9pZCBSZW5k
ZXJMaXN0Qm94OjpwYWludEl0ZW1Gb3JlZ3JvdW5kKFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25z
dCBMYXlvdXRQb2ludCYKICAgICBDb2xvciB0ZXh0Q29sb3IgPSBpdGVtU3R5bGUudmlzaXRlZERl
cGVuZGVudENvbG9yV2l0aENvbG9yRmlsdGVyKENTU1Byb3BlcnR5Q29sb3IpOwogICAgIGlmIChp
c09wdGlvbkVsZW1lbnQgJiYgZG93bmNhc3Q8SFRNTE9wdGlvbkVsZW1lbnQ+KCpsaXN0SXRlbUVs
ZW1lbnQpLnNlbGVjdGVkKCkpIHsKICAgICAgICAgaWYgKGZyYW1lKCkuc2VsZWN0aW9uKCkuaXNG
b2N1c2VkQW5kQWN0aXZlKCkgJiYgZG9jdW1lbnQoKS5mb2N1c2VkRWxlbWVudCgpID09ICZzZWxl
Y3RFbGVtZW50KCkpCi0gICAgICAgICAgICB0ZXh0Q29sb3IgPSB0aGVtZSgpLmFjdGl2ZUxpc3RC
b3hTZWxlY3Rpb25Gb3JlZ3JvdW5kQ29sb3IoZG9jdW1lbnQoKS5zdHlsZUNvbG9yT3B0aW9ucygp
KTsKKyAgICAgICAgICAgIHRleHRDb2xvciA9IHRoZW1lKCkuYWN0aXZlTGlzdEJveFNlbGVjdGlv
bkZvcmVncm91bmRDb2xvcihzdHlsZUNvbG9yT3B0aW9ucygpKTsKICAgICAgICAgLy8gSG9ub3Ig
dGhlIGZvcmVncm91bmQgY29sb3IgZm9yIGRpc2FibGVkIGl0ZW1zCiAgICAgICAgIGVsc2UgaWYg
KCFsaXN0SXRlbUVsZW1lbnQtPmlzRGlzYWJsZWRGb3JtQ29udHJvbCgpICYmICFzZWxlY3RFbGVt
ZW50KCkuaXNEaXNhYmxlZEZvcm1Db250cm9sKCkpCi0gICAgICAgICAgICB0ZXh0Q29sb3IgPSB0
aGVtZSgpLmluYWN0aXZlTGlzdEJveFNlbGVjdGlvbkZvcmVncm91bmRDb2xvcihkb2N1bWVudCgp
LnN0eWxlQ29sb3JPcHRpb25zKCkpOworICAgICAgICAgICAgdGV4dENvbG9yID0gdGhlbWUoKS5p
bmFjdGl2ZUxpc3RCb3hTZWxlY3Rpb25Gb3JlZ3JvdW5kQ29sb3Ioc3R5bGVDb2xvck9wdGlvbnMo
KSk7CiAgICAgfQogCiAgICAgcGFpbnRJbmZvLmNvbnRleHQoKS5zZXRGaWxsQ29sb3IodGV4dENv
bG9yKTsKQEAgLTQ2MSw5ICs0NjEsOSBAQCB2b2lkIFJlbmRlckxpc3RCb3g6OnBhaW50SXRlbUJh
Y2tncm91bmQoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFBvaW50JgogICAgIENv
bG9yIGJhY2tDb2xvcjsKICAgICBpZiAoaXM8SFRNTE9wdGlvbkVsZW1lbnQ+KCpsaXN0SXRlbUVs
ZW1lbnQpICYmIGRvd25jYXN0PEhUTUxPcHRpb25FbGVtZW50PigqbGlzdEl0ZW1FbGVtZW50KS5z
ZWxlY3RlZCgpKSB7CiAgICAgICAgIGlmIChmcmFtZSgpLnNlbGVjdGlvbigpLmlzRm9jdXNlZEFu
ZEFjdGl2ZSgpICYmIGRvY3VtZW50KCkuZm9jdXNlZEVsZW1lbnQoKSA9PSAmc2VsZWN0RWxlbWVu
dCgpKQotICAgICAgICAgICAgYmFja0NvbG9yID0gdGhlbWUoKS5hY3RpdmVMaXN0Qm94U2VsZWN0
aW9uQmFja2dyb3VuZENvbG9yKGRvY3VtZW50KCkuc3R5bGVDb2xvck9wdGlvbnMoKSk7CisgICAg
ICAgICAgICBiYWNrQ29sb3IgPSB0aGVtZSgpLmFjdGl2ZUxpc3RCb3hTZWxlY3Rpb25CYWNrZ3Jv
dW5kQ29sb3Ioc3R5bGVDb2xvck9wdGlvbnMoKSk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAg
IGJhY2tDb2xvciA9IHRoZW1lKCkuaW5hY3RpdmVMaXN0Qm94U2VsZWN0aW9uQmFja2dyb3VuZENv
bG9yKGRvY3VtZW50KCkuc3R5bGVDb2xvck9wdGlvbnMoKSk7CisgICAgICAgICAgICBiYWNrQ29s
b3IgPSB0aGVtZSgpLmluYWN0aXZlTGlzdEJveFNlbGVjdGlvbkJhY2tncm91bmRDb2xvcihzdHls
ZUNvbG9yT3B0aW9ucygpKTsKICAgICB9IGVsc2UKICAgICAgICAgYmFja0NvbG9yID0gaXRlbVN0
eWxlLnZpc2l0ZWREZXBlbmRlbnRDb2xvcldpdGhDb2xvckZpbHRlcihDU1NQcm9wZXJ0eUJhY2tn
cm91bmRDb2xvcik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAK
aW5kZXggNzY0NDQ1MGYwODA3NzY4YzUzMWZlMmEyNzg5YjFlYmZmMjYwMDk5Ni4uNDI1NTEwNWUy
NDRmZGQ1MTdmMzQ5NGJhYjY5OTI4YjMyMzk3YTQ2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlck9iamVjdC5jcHAKQEAgLTE4MDEsNiArMTgwMSwxNiBAQCBDdXJzb3JEaXJlY3Rp
dmUgUmVuZGVyT2JqZWN0OjpnZXRDdXJzb3IoY29uc3QgTGF5b3V0UG9pbnQmLCBDdXJzb3ImKSBj
b25zdAogICAgIHJldHVybiBTZXRDdXJzb3JCYXNlZE9uU3R5bGU7CiB9CiAKK2Jvb2wgUmVuZGVy
T2JqZWN0Ojp1c2VEYXJrQXBwZWFyYW5jZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIGRvY3VtZW50
KCkudXNlRGFya0FwcGVhcmFuY2UoJnN0eWxlKCkpOworfQorCitPcHRpb25TZXQ8U3R5bGVDb2xv
cjo6T3B0aW9ucz4gUmVuZGVyT2JqZWN0OjpzdHlsZUNvbG9yT3B0aW9ucygpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIGRvY3VtZW50KCkuc3R5bGVDb2xvck9wdGlvbnMoJnN0eWxlKCkpOworfQorCiBi
b29sIFJlbmRlck9iamVjdDo6Y2FuVXBkYXRlU2VsZWN0aW9uT25Sb290TGluZUJveGVzKCkKIHsK
ICAgICBpZiAobmVlZHNMYXlvdXQoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJPYmplY3QuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmpl
Y3QuaAppbmRleCAxM2IzNmQ2NzYwMmEwNWJlYjQ2ZWI1NzczNzE4ZDg1YWRhNTgyOGEwLi4yZGNl
OWRjYzU2OTEzMDkxZjcyOTk0N2ZjNmRmNzI2NGE4ZTQzZjVlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlck9iamVjdC5oCkBAIC0xNzYsNiArMTc2LDkgQEAgcHVibGljOgogICAgICAg
ICByZXR1cm4gbG9jYXRlRW5jbG9zaW5nRnJhZ21lbnRlZEZsb3coKTsKICAgICB9CiAKKyAgICBX
RUJDT1JFX0VYUE9SVCBib29sIHVzZURhcmtBcHBlYXJhbmNlKCkgY29uc3Q7CisgICAgT3B0aW9u
U2V0PFN0eWxlQ29sb3I6Ok9wdGlvbnM+IHN0eWxlQ29sb3JPcHRpb25zKCkgY29uc3Q7CisKICNp
Zm5kZWYgTkRFQlVHCiAgICAgdm9pZCBzZXRIYXNBWE9iamVjdChib29sIGZsYWcpIHsgbV9oYXNB
WE9iamVjdCA9IGZsYWc7IH0KICAgICBib29sIGhhc0FYT2JqZWN0KCkgY29uc3QgeyByZXR1cm4g
bV9oYXNBWE9iamVjdDsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlclRhYmxlQ2VsbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVD
ZWxsLmNwcAppbmRleCAzNDVhN2JiNTdmNjczZDY3NTIzYjMzMzEzZmJhZWVmZjEwOTVhNGE3Li43
NTQxOTc4N2M3YjZmN2E5MWYzNjFjODY4OTNjODFmOWJhZWE3MGI1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVDZWxsLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVDZWxsLmNwcApAQCAtMTI4OSw3ICsxMjg5LDcgQEAg
dm9pZCBSZW5kZXJUYWJsZUNlbGw6OnBhaW50QmFja2dyb3VuZHNCZWhpbmRDZWxsKFBhaW50SW5m
byYgcGFpbnRJbmZvLCBjb25zdCBMYXkKIAogICAgIENvbXBvc2l0ZU9wZXJhdG9yIGNvbXBvc2l0
ZU9wID0gQ29tcG9zaXRlU291cmNlT3ZlcjsKICAgICBDb2xvciBjb2xvciA9IHN0eWxlLnZpc2l0
ZWREZXBlbmRlbnRDb2xvcihDU1NQcm9wZXJ0eUJhY2tncm91bmRDb2xvcik7Ci0gICAgaWYgKGRv
Y3VtZW50KCkuc2V0dGluZ3MoKS5wdW5jaE91dFdoaXRlQmFja2dyb3VuZHNJbkRhcmtNb2RlKCkg
JiYgQ29sb3I6OmlzV2hpdGVDb2xvcihjb2xvcikgJiYgdGhlbWUoKS51c2luZ0RhcmtBcHBlYXJh
bmNlKCp0aGlzKSkKKyAgICBpZiAoZG9jdW1lbnQoKS5zZXR0aW5ncygpLnB1bmNoT3V0V2hpdGVC
YWNrZ3JvdW5kc0luRGFya01vZGUoKSAmJiBDb2xvcjo6aXNXaGl0ZUNvbG9yKGNvbG9yKSAmJiB1
c2VEYXJrQXBwZWFyYW5jZSgpKQogICAgICAgICBjb21wb3NpdGVPcCA9IENvbXBvc2l0ZURlc3Rp
bmF0aW9uT3V0OwogCiAgICAgY29sb3IgPSBzdHlsZS5jb2xvckJ5QXBwbHlpbmdDb2xvckZpbHRl
cihjb2xvcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhl
bWUuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lLmNwcAppbmRleCBi
ZDY2YmIzZjU5MWEwYzdjODRhOWNiZjhmNTNjY2E2ZmZlMGJhODU5Li4yNTczOTAzOTZmNTBhMzIy
NjZmODJhMDQ4ZTQ4NjcyYzkzOGExNTVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyVGhlbWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJUaGVtZS5jcHAKQEAgLTMxOCw3ICszMTgsNyBAQCBib29sIFJlbmRlclRoZW1lOjpwYWludChj
b25zdCBSZW5kZXJCb3gmIGJveCwgQ29udHJvbFN0YXRlcyYgY29udHJvbFN0YXRlcywgY29ucwog
ICAgIGNhc2UgQnV0dG9uUGFydDoKICAgICBjYXNlIElubmVyU3BpbkJ1dHRvblBhcnQ6CiAgICAg
ICAgIHVwZGF0ZUNvbnRyb2xTdGF0ZXNGb3JSZW5kZXJlcihib3gsIGNvbnRyb2xTdGF0ZXMpOwot
ICAgICAgICBUaGVtZTo6c2luZ2xldG9uKCkucGFpbnQocGFydCwgY29udHJvbFN0YXRlcywgcGFp
bnRJbmZvLmNvbnRleHQoKSwgZGV2aWNlUGl4ZWxTbmFwcGVkUmVjdCwgYm94LnN0eWxlKCkuZWZm
ZWN0aXZlWm9vbSgpLCAmYm94LnZpZXcoKS5mcmFtZVZpZXcoKSwgZGV2aWNlU2NhbGVGYWN0b3Is
IHBhZ2VTY2FsZUZhY3RvciwgYm94LmRvY3VtZW50KCkudXNlU3lzdGVtQXBwZWFyYW5jZSgpLCBi
b3guZG9jdW1lbnQoKS51c2VEYXJrQXBwZWFyYW5jZSgpKTsKKyAgICAgICAgVGhlbWU6OnNpbmds
ZXRvbigpLnBhaW50KHBhcnQsIGNvbnRyb2xTdGF0ZXMsIHBhaW50SW5mby5jb250ZXh0KCksIGRl
dmljZVBpeGVsU25hcHBlZFJlY3QsIGJveC5zdHlsZSgpLmVmZmVjdGl2ZVpvb20oKSwgJmJveC52
aWV3KCkuZnJhbWVWaWV3KCksIGRldmljZVNjYWxlRmFjdG9yLCBwYWdlU2NhbGVGYWN0b3IsIGJv
eC5kb2N1bWVudCgpLnVzZVN5c3RlbUFwcGVhcmFuY2UoKSwgYm94LnVzZURhcmtBcHBlYXJhbmNl
KCkpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgZGVmYXVsdDoKICAgICAgICAgYnJlYWs7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWUuaCBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZS5oCmluZGV4IDhmYmE0ZGI0MDk2NzRj
NzAzMmU1NmIxZWQ1Yzc5NjU4M2Y0YzAxNTYuLjEzMmE2ZTQ5ZjA5NjZkN2Q1MDM3Y2I1YzZhMDM2
NGY4Mzk4OTk5YjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJU
aGVtZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZS5oCkBAIC0y
NjEsOCArMjYxLDYgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBwYWludFN5c3RlbVByZXZp
ZXdCYWRnZShJbWFnZSYsIGNvbnN0IFBhaW50SW5mbyYsIGNvbnN0IEZsb2F0UmVjdCYpOwogI2Vu
ZGlmCiAKLSAgICB2aXJ0dWFsIGJvb2wgdXNpbmdEYXJrQXBwZWFyYW5jZShjb25zdCBSZW5kZXJP
YmplY3QmKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQotCiBwcm90ZWN0ZWQ6CiAgICAgdmlydHVh
bCBGb250Q2FzY2FkZURlc2NyaXB0aW9uJiBjYWNoZWRTeXN0ZW1Gb250RGVzY3JpcHRpb24oQ1NT
VmFsdWVJRCBzeXN0ZW1Gb250SUQpIGNvbnN0OwogICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVDYWNo
ZWRTeXN0ZW1Gb250RGVzY3JpcHRpb24oQ1NTVmFsdWVJRCBzeXN0ZW1Gb250SUQsIEZvbnRDYXNj
YWRlRGVzY3JpcHRpb24mKSBjb25zdCA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyVGhlbWVNYWMuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJUaGVtZU1hYy5oCmluZGV4IGQ4NTc2MWFiYzliMTJkZmRkYTU1NDVkZDE0ZjgwMzQ5NjM3OTUw
ZDcuLjFkZDJiMWY1ZmVmODZmOGM5NWY4NzZhYmZmZjg2NjQ4OWY4Y2ZhZDggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZU1hYy5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZU1hYy5oCkBAIC0xNzQsOCArMTc0LDYgQEAgcHJp
dmF0ZToKICAgICBib29sIHBhaW50QXR0YWNobWVudChjb25zdCBSZW5kZXJPYmplY3QmLCBjb25z
dCBQYWludEluZm8mLCBjb25zdCBJbnRSZWN0JikgZmluYWw7CiAjZW5kaWYKIAotICAgIGJvb2wg
dXNpbmdEYXJrQXBwZWFyYW5jZShjb25zdCBSZW5kZXJPYmplY3QmKSBjb25zdCBmaW5hbDsKLQog
cHJpdmF0ZToKICAgICBTdHJpbmcgZmlsZUxpc3ROYW1lRm9yV2lkdGgoY29uc3QgRmlsZUxpc3Qq
LCBjb25zdCBGb250Q2FzY2FkZSYsIGludCB3aWR0aCwgYm9vbCBtdWx0aXBsZUZpbGVzQWxsb3dl
ZCkgY29uc3QgZmluYWw7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJUaGVtZU1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZU1h
Yy5tbQppbmRleCAzZmJkNjBkNjE3MTc5ZDgwYjE5MjY1OWE5YjhmMGJjOWM5ZTZjZGQ1Li5kNTUw
ZTViMzNmNGFhNGQyZTUzMzk1ZDBlYmVjOTA4YjJmN2MyN2E5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlclRoZW1lTWFjLm1tCkBAIC0yOTcsNyArMjk3LDcgQEAgUmVuZGVyVGhl
bWVNYWM6OlJlbmRlclRoZW1lTWFjKCkKIAogTlNWaWV3ICpSZW5kZXJUaGVtZU1hYzo6ZG9jdW1l
bnRWaWV3Rm9yKGNvbnN0IFJlbmRlck9iamVjdCYgbykgY29uc3QKIHsKLSAgICBMb2NhbERlZmF1
bHRTeXN0ZW1BcHBlYXJhbmNlIGxvY2FsQXBwZWFyYW5jZSh1c2luZ0RhcmtBcHBlYXJhbmNlKG8p
KTsKKyAgICBMb2NhbERlZmF1bHRTeXN0ZW1BcHBlYXJhbmNlIGxvY2FsQXBwZWFyYW5jZShvLnVz
ZURhcmtBcHBlYXJhbmNlKCkpOwogICAgIENvbnRyb2xTdGF0ZXMgc3RhdGVzKGV4dHJhY3RDb250
cm9sU3RhdGVzRm9yUmVuZGVyZXIobykpOwogICAgIHJldHVybiBUaGVtZU1hYzo6ZW5zdXJlZFZp
ZXcoJm8udmlldygpLmZyYW1lVmlldygpLCBzdGF0ZXMpOwogfQpAQCAtMTcxMyw3ICsxNzEzLDcg
QEAgdm9pZCBSZW5kZXJUaGVtZU1hYzo6YWRqdXN0TWVudUxpc3RTdHlsZShTdHlsZVJlc29sdmVy
JiBzdHlsZVJlc29sdmVyLCBSZW5kZXJTdHkKICAgICAvLyBTZXQgdGhlIGZvcmVncm91bmQgY29s
b3IgdG8gYmxhY2sgb3IgZ3JheSB3aGVuIHdlIGhhdmUgdGhlIGFxdWEgbG9vay4KICAgICBDb2xv
ciBjID0gQ29sb3I6OmRhcmtHcmF5OwogICAgIGlmIChlKSB7Ci0gICAgICAgIE9wdGlvblNldDxT
dHlsZUNvbG9yOjpPcHRpb25zPiBvcHRpb25zID0gZS0+ZG9jdW1lbnQoKS5zdHlsZUNvbG9yT3B0
aW9ucygpOworICAgICAgICBPcHRpb25TZXQ8U3R5bGVDb2xvcjo6T3B0aW9ucz4gb3B0aW9ucyA9
IGUtPmRvY3VtZW50KCkuc3R5bGVDb2xvck9wdGlvbnMoJnN0eWxlKTsKICAgICAgICAgYyA9ICFl
LT5pc0Rpc2FibGVkRm9ybUNvbnRyb2woKSA/IHN5c3RlbUNvbG9yKENTU1ZhbHVlQnV0dG9udGV4
dCwgb3B0aW9ucykgOiBzeXN0ZW1Db2xvcihDU1NWYWx1ZUdyYXl0ZXh0LCBvcHRpb25zKTsKICAg
ICB9CiAgICAgc3R5bGUuc2V0Q29sb3IoYyk7CkBAIC0xODAwLDcgKzE4MDAsNyBAQCB2b2lkIFJl
bmRlclRoZW1lTWFjOjpzZXRQb3B1cEJ1dHRvbkNlbGxTdGF0ZShjb25zdCBSZW5kZXJPYmplY3Qm
IG8sIGNvbnN0IEludFNpegogCiB2b2lkIFJlbmRlclRoZW1lTWFjOjpwYWludENlbGxBbmRTZXRG
b2N1c2VkRWxlbWVudE5lZWRzUmVwYWludElmTmVjZXNzYXJ5KE5TQ2VsbCogY2VsbCwgY29uc3Qg
UmVuZGVyT2JqZWN0JiByZW5kZXJlciwgY29uc3QgUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0
IEZsb2F0UmVjdCYgcmVjdCkKIHsKLSAgICBMb2NhbERlZmF1bHRTeXN0ZW1BcHBlYXJhbmNlIGxv
Y2FsQXBwZWFyYW5jZSh1c2luZ0RhcmtBcHBlYXJhbmNlKHJlbmRlcmVyKSk7CisgICAgTG9jYWxE
ZWZhdWx0U3lzdGVtQXBwZWFyYW5jZSBsb2NhbEFwcGVhcmFuY2UocmVuZGVyZXIudXNlRGFya0Fw
cGVhcmFuY2UoKSk7CiAgICAgYm9vbCBzaG91bGREcmF3Rm9jdXNSaW5nID0gaXNGb2N1c2VkKHJl
bmRlcmVyKSAmJiByZW5kZXJlci5zdHlsZSgpLm91dGxpbmVTdHlsZUlzQXV0bygpID09IE91dGxp
bmVJc0F1dG86Ok9uOwogICAgIGJvb2wgc2hvdWxkVXNlSW1hZ2VCdWZmZXIgPSByZW5kZXJlci5z
dHlsZSgpLmVmZmVjdGl2ZVpvb20oKSAhPSAxIHx8IHJlbmRlcmVyLnBhZ2UoKS5wYWdlU2NhbGVG
YWN0b3IoKSAhPSAxOwogICAgIGJvb2wgc2hvdWxkRHJhd0NlbGwgPSB0cnVlOwpAQCAtMTg4Miw3
ICsxODgyLDcgQEAgYm9vbCBSZW5kZXJUaGVtZU1hYzo6cGFpbnRTbGlkZXJUaHVtYihjb25zdCBS
ZW5kZXJPYmplY3QmIG8sIGNvbnN0IFBhaW50SW5mbyYgcGEKICAgICAgICAgPyBzbGlkZXJUaHVt
YlZlcnRpY2FsKCkKICAgICAgICAgOiBzbGlkZXJUaHVtYkhvcml6b250YWwoKTsKIAotICAgIExv
Y2FsRGVmYXVsdFN5c3RlbUFwcGVhcmFuY2UgbG9jYWxBcHBlYXJhbmNlKHVzaW5nRGFya0FwcGVh
cmFuY2UobykpOworICAgIExvY2FsRGVmYXVsdFN5c3RlbUFwcGVhcmFuY2UgbG9jYWxBcHBlYXJh
bmNlKG8udXNlRGFya0FwcGVhcmFuY2UoKSk7CiAKICAgICBMb2NhbEN1cnJlbnRHcmFwaGljc0Nv
bnRleHQgbG9jYWxDb250ZXh0KHBhaW50SW5mby5jb250ZXh0KCkpOwogCkBAIC0yOTk0LDExICsy
OTk0LDYgQEAgYm9vbCBSZW5kZXJUaGVtZU1hYzo6cGFpbnRBdHRhY2htZW50KGNvbnN0IFJlbmRl
ck9iamVjdCYgcmVuZGVyZXIsIGNvbnN0IFBhaW50SW4KIAogI2VuZGlmIC8vIEVOQUJMRShBVFRB
Q0hNRU5UX0VMRU1FTlQpCiAKLWJvb2wgUmVuZGVyVGhlbWVNYWM6OnVzaW5nRGFya0FwcGVhcmFu
Y2UoY29uc3QgUmVuZGVyT2JqZWN0JiBvKSBjb25zdAotewotICAgIHJldHVybiBvLmRvY3VtZW50
KCkudXNlRGFya0FwcGVhcmFuY2UoKTsKLX0KLQogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAj
ZW5kaWYgLy8gUExBVEZPUk0oTUFDKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N0eWxlL1JlbmRlclN0eWxlLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUv
UmVuZGVyU3R5bGUuaAppbmRleCA5ODFiOGVlZWViZTk2YTYxYjFhYWQzNjMyNDJkNzRlOTY4MWMw
M2VkLi44NTU1ZDBiOWY2MjRkODIzMTQyNjNiMDUwYWU1YzlhZmFjMmM2NjNlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuaApAQCAtODQsNiArODQsMTAg
QEAKICNpbmNsdWRlICJUZXh0U2l6ZUFkanVzdG1lbnQuaCIKICNlbmRpZgogCisjaWYgRU5BQkxF
KERBUktfTU9ERV9DU1MpCisjaW5jbHVkZSAiU3R5bGVTdXBwb3J0ZWRDb2xvclNjaGVtZXMuaCIK
KyNlbmRpZgorCiAjZGVmaW5lIFNFVF9WQVIoZ3JvdXAsIHZhcmlhYmxlLCB2YWx1ZSkgZG8geyBc
CiAgICAgICAgIGlmICghY29tcGFyZUVxdWFsKGdyb3VwLT52YXJpYWJsZSwgdmFsdWUpKSBcCiAg
ICAgICAgICAgICBncm91cC5hY2Nlc3MoKS52YXJpYWJsZSA9IHZhbHVlOyBcCkBAIC02MzIsNiAr
NjM2LDEwIEBAIHB1YmxpYzoKIAogICAgIFJ1YnlQb3NpdGlvbiBydWJ5UG9zaXRpb24oKSBjb25z
dCB7IHJldHVybiBzdGF0aWNfY2FzdDxSdWJ5UG9zaXRpb24+KG1fcmFyZUluaGVyaXRlZERhdGEt
PnJ1YnlQb3NpdGlvbik7IH0KIAorI2lmIEVOQUJMRShEQVJLX01PREVfQ1NTKQorICAgIFN0eWxl
U3VwcG9ydGVkQ29sb3JTY2hlbWVzIHN1cHBvcnRlZENvbG9yU2NoZW1lcygpIGNvbnN0IHsgcmV0
dXJuIG1fcmFyZUluaGVyaXRlZERhdGEtPnN1cHBvcnRlZENvbG9yU2NoZW1lczsgfQorI2VuZGlm
CisKICAgICBUZXh0T3JpZW50YXRpb24gdGV4dE9yaWVudGF0aW9uKCkgY29uc3QgeyByZXR1cm4g
c3RhdGljX2Nhc3Q8VGV4dE9yaWVudGF0aW9uPihtX3JhcmVJbmhlcml0ZWREYXRhLT50ZXh0T3Jp
ZW50YXRpb24pOyB9CiAKICAgICBPYmplY3RGaXQgb2JqZWN0Rml0KCkgY29uc3QgeyByZXR1cm4g
c3RhdGljX2Nhc3Q8T2JqZWN0Rml0PihtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5vYmplY3RGaXQp
OyB9CkBAIC0xMTY1LDYgKzExNzMsMTAgQEAgcHVibGljOgogCiAgICAgdm9pZCBzZXRSdWJ5UG9z
aXRpb24oUnVieVBvc2l0aW9uIHBvc2l0aW9uKSB7IFNFVF9WQVIobV9yYXJlSW5oZXJpdGVkRGF0
YSwgcnVieVBvc2l0aW9uLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4ocG9zaXRpb24pKTsgfQogCisj
aWYgRU5BQkxFKERBUktfTU9ERV9DU1MpCisgICAgdm9pZCBzZXRTdXBwb3J0ZWRDb2xvclNjaGVt
ZXMoU3R5bGVTdXBwb3J0ZWRDb2xvclNjaGVtZXMgc3VwcG9ydGVkKSB7IFNFVF9WQVIobV9yYXJl
SW5oZXJpdGVkRGF0YSwgc3VwcG9ydGVkQ29sb3JTY2hlbWVzLCBzdXBwb3J0ZWQpOyB9CisjZW5k
aWYKKwogICAgIHZvaWQgc2V0RmlsdGVyKGNvbnN0IEZpbHRlck9wZXJhdGlvbnMmIG9wcykgeyBT
RVRfTkVTVEVEX1ZBUihtX3JhcmVOb25Jbmhlcml0ZWREYXRhLCBmaWx0ZXIsIG9wZXJhdGlvbnMs
IG9wcyk7IH0KICAgICB2b2lkIHNldEFwcGxlQ29sb3JGaWx0ZXIoY29uc3QgRmlsdGVyT3BlcmF0
aW9ucyYgb3BzKSB7IFNFVF9ORVNURURfVkFSKG1fcmFyZUluaGVyaXRlZERhdGEsIGFwcGxlQ29s
b3JGaWx0ZXIsIG9wZXJhdGlvbnMsIG9wcyk7IH0KIApAQCAtMTU3OCw2ICsxNTkwLDEwIEBAIHB1
YmxpYzoKICAgICBzdGF0aWMgUXVvdGVzRGF0YSogaW5pdGlhbFF1b3RlcygpIHsgcmV0dXJuIG51
bGxwdHI7IH0KICAgICBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nJiBpbml0aWFsQ29udGVudEFs
dFRleHQoKSB7IHJldHVybiBlbXB0eUF0b20oKTsgfQogCisjaWYgRU5BQkxFKERBUktfTU9ERV9D
U1MpCisgICAgc3RhdGljIFN0eWxlU3VwcG9ydGVkQ29sb3JTY2hlbWVzIGluaXRpYWxTdXBwb3J0
ZWRDb2xvclNjaGVtZXMoKSB7IHJldHVybiB7IH07IH0KKyNlbmRpZgorCiAjaWYgRU5BQkxFKENT
UzNfVEVYVCkKICAgICBzdGF0aWMgVGV4dEluZGVudExpbmUgaW5pdGlhbFRleHRJbmRlbnRMaW5l
KCkgeyByZXR1cm4gVGV4dEluZGVudExpbmU6OkZpcnN0TGluZTsgfQogICAgIHN0YXRpYyBUZXh0
SW5kZW50VHlwZSBpbml0aWFsVGV4dEluZGVudFR5cGUoKSB7IHJldHVybiBUZXh0SW5kZW50VHlw
ZTo6Tm9ybWFsOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUv
UmVuZGVyU3R5bGVDb25zdGFudHMuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9S
ZW5kZXJTdHlsZUNvbnN0YW50cy5oCmluZGV4IDE3NmViMjEzYTdhNmU3ODJlMzEwNzkwZDUxMGYw
Y2QxYjNkOWUwMjguLjY2ZTVjN2I0NzQxMGExYjBhZjExYmVhNDM2YWM5Y2IyYTg0NzcxZTQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZUNvbnN0
YW50cy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZUNv
bnN0YW50cy5oCkBAIC0xMDE4LDYgKzEwMTgsMTUgQEAgZW51bSBjbGFzcyBSdWJ5UG9zaXRpb24g
OiB1aW50OF90IHsKICAgICBJbnRlckNoYXJhY3RlcgogfTsKIAorI2lmIEVOQUJMRShEQVJLX01P
REVfQ1NTKQorZW51bSBjbGFzcyBDb2xvclNjaGVtZXMgOiB1aW50OF90IHsKKyAgICBMaWdodCA9
IDEgPDwgMCwKKyAgICBEYXJrID0gMSA8PCAxCit9OworCitzdGF0aWMgY29uc3Qgc2l6ZV90IENv
bG9yU2NoZW1lc0JpdHMgPSAyOworI2VuZGlmCisKIHN0YXRpYyBjb25zdCBzaXplX3QgR3JpZEF1
dG9GbG93Qml0cyA9IDQ7CiBlbnVtIEludGVybmFsR3JpZEF1dG9GbG93QWxnb3JpdGhtIHsKICAg
ICBJbnRlcm5hbEF1dG9GbG93QWxnb3JpdGhtU3BhcnNlID0gMSA8PCAwLApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlUmFyZUluaGVyaXRlZERhdGEuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlUmFyZUluaGVyaXRlZERhdGEu
Y3BwCmluZGV4IDVmYjc5YjNmOTQ3ZTQ0NmI3MGVmMzM4MjdjYzcyOGNiYzgwZWIwNmEuLjQ1Zjcz
NmFiMjgyODcxOTlkZWRmNjc3ZmNhNGY3NjhiYzBhNjI3YzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVJhcmVJbmhlcml0ZWREYXRhLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVSYXJlSW5oZXJpdGVkRGF0YS5jcHAK
QEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJTdHlsZUN1c3RvbVByb3BlcnR5RGF0YS5oIgog
I2luY2x1ZGUgIlN0eWxlRmlsdGVyRGF0YS5oIgogI2luY2x1ZGUgIlN0eWxlSW1hZ2UuaCIKKyNp
bmNsdWRlICJTdHlsZVN1cHBvcnRlZENvbG9yU2NoZW1lcy5oIgogI2luY2x1ZGUgPHd0Zi9Qb2lu
dGVyQ29tcGFyaXNvbi5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC02Nyw2ICs2OCwxMCBA
QCBzdHJ1Y3QgR3JlYXRlclRoYW5PclNhbWVTaXplQXNTdHlsZVJhcmVJbmhlcml0ZWREYXRhIDog
cHVibGljIFJlZkNvdW50ZWQ8R3JlYXRlcgogICAgIENvbG9yIHRhcEhpZ2hsaWdodENvbG9yOwog
I2VuZGlmCiAKKyNpZiBFTkFCTEUoREFSS19NT0RFX0NTUykKKyAgICBTdHlsZVN1cHBvcnRlZENv
bG9yU2NoZW1lcyBzdXBwb3J0ZWRDb2xvclNjaGVtZXM7CisjZW5kaWYKKwogICAgIHZvaWQqIGN1
c3RvbVByb3BlcnR5RGF0YVJlZnNbMV07CiB9OwogCkBAIC0xNTMsNiArMTU4LDkgQEAgU3R5bGVS
YXJlSW5oZXJpdGVkRGF0YTo6U3R5bGVSYXJlSW5oZXJpdGVkRGF0YSgpCiAjaWYgRU5BQkxFKFRP
VUNIX0VWRU5UUykKICAgICAsIHRhcEhpZ2hsaWdodENvbG9yKFJlbmRlclN0eWxlOjppbml0aWFs
VGFwSGlnaGxpZ2h0Q29sb3IoKSkKICNlbmRpZgorI2lmIEVOQUJMRShEQVJLX01PREVfQ1NTKQor
ICAgICwgc3VwcG9ydGVkQ29sb3JTY2hlbWVzKFJlbmRlclN0eWxlOjppbml0aWFsU3VwcG9ydGVk
Q29sb3JTY2hlbWVzKCkpCisjZW5kaWYKIHsKIH0KIApAQCAtMjUxLDYgKzI1OSw5IEBAIGlubGlu
ZSBTdHlsZVJhcmVJbmhlcml0ZWREYXRhOjpTdHlsZVJhcmVJbmhlcml0ZWREYXRhKGNvbnN0IFN0
eWxlUmFyZUluaGVyaXRlZERhCiAjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKICAgICAsIHRhcEhp
Z2hsaWdodENvbG9yKG8udGFwSGlnaGxpZ2h0Q29sb3IpCiAjZW5kaWYKKyNpZiBFTkFCTEUoREFS
S19NT0RFX0NTUykKKyAgICAsIHN1cHBvcnRlZENvbG9yU2NoZW1lcyhvLnN1cHBvcnRlZENvbG9y
U2NoZW1lcykKKyNlbmRpZgogewogfQogCkBAIC0yOTYsNiArMzA3LDkgQEAgYm9vbCBTdHlsZVJh
cmVJbmhlcml0ZWREYXRhOjpvcGVyYXRvcj09KGNvbnN0IFN0eWxlUmFyZUluaGVyaXRlZERhdGEm
IG8pIGNvbnN0CiAjZW5kaWYKICNpZiBFTkFCTEUoVEVYVF9BVVRPU0laSU5HKQogICAgICAgICAm
JiB0ZXh0U2l6ZUFkanVzdCA9PSBvLnRleHRTaXplQWRqdXN0CisjZW5kaWYKKyNpZiBFTkFCTEUo
REFSS19NT0RFX0NTUykKKyAgICAgICAgJiYgc3VwcG9ydGVkQ29sb3JTY2hlbWVzID09IG8uc3Vw
cG9ydGVkQ29sb3JTY2hlbWVzCiAjZW5kaWYKICAgICAgICAgJiYgdXNlclNlbGVjdCA9PSBvLnVz
ZXJTZWxlY3QKICAgICAgICAgJiYgc3BlYWtBcyA9PSBvLnNwZWFrQXMKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVJhcmVJbmhlcml0ZWREYXRhLmggYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVSYXJlSW5oZXJpdGVkRGF0YS5oCmlu
ZGV4IGEzYWQxNzUwMzRjOWYzNzFhZTEzNThjMjhhNTQ1OGFjODRmMDhlOWUuLmIyYmRkZmQ0N2Zi
ODliY2VjYWQxMWE4ZGVjNDA5NTY1OWYwMzgyZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdHlsZS9TdHlsZVJhcmVJbmhlcml0ZWREYXRhLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlUmFyZUluaGVyaXRlZERhdGEuaApAQCAtMzcsNiAr
MzcsMTAgQEAKICNpbmNsdWRlICJUZXh0U2l6ZUFkanVzdG1lbnQuaCIKICNlbmRpZgogCisjaWYg
RU5BQkxFKERBUktfTU9ERV9DU1MpCisjaW5jbHVkZSAiU3R5bGVTdXBwb3J0ZWRDb2xvclNjaGVt
ZXMuaCIKKyNlbmRpZgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEN1cnNvckxpc3Q7
CkBAIC0xODEsNiArMTg1LDEwIEBAIHB1YmxpYzoKICAgICBDb2xvciB0YXBIaWdobGlnaHRDb2xv
cjsKICNlbmRpZgogCisjaWYgRU5BQkxFKERBUktfTU9ERV9DU1MpCisgICAgU3R5bGVTdXBwb3J0
ZWRDb2xvclNjaGVtZXMgc3VwcG9ydGVkQ29sb3JTY2hlbWVzOworI2VuZGlmCisKIHByaXZhdGU6
CiAgICAgU3R5bGVSYXJlSW5oZXJpdGVkRGF0YSgpOwogICAgIFN0eWxlUmFyZUluaGVyaXRlZERh
dGEoY29uc3QgU3R5bGVSYXJlSW5oZXJpdGVkRGF0YSYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlU3VwcG9ydGVkQ29sb3JTY2hlbWVzLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVTdXBwb3J0ZWRDb2xvclNjaGVtZXMuaApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi42YjZmOTQ5OWIxMzVlYjRkOThlZTY4MmJiMWI1MGFiODE2NTgzNTMzCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlU3VwcG9y
dGVkQ29sb3JTY2hlbWVzLmgKQEAgLTAsMCArMSw3MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEg
b25jZQorCisjaWYgRU5BQkxFKERBUktfTU9ERV9DU1MpCisKKyNpbmNsdWRlICJSZW5kZXJTdHls
ZUNvbnN0YW50cy5oIgorI2luY2x1ZGUgPHd0Zi9PcHRpb25TZXQuaD4KKworbmFtZXNwYWNlIFdl
YkNvcmUgeworCitjbGFzcyBTdHlsZVN1cHBvcnRlZENvbG9yU2NoZW1lcyB7CitwdWJsaWM6Cisg
ICAgU3R5bGVTdXBwb3J0ZWRDb2xvclNjaGVtZXMoKQorICAgICAgICA6IG1fY29sb3JTY2hlbWVz
KDApIHsgfQorCisgICAgU3R5bGVTdXBwb3J0ZWRDb2xvclNjaGVtZXMoY29uc3QgU3R5bGVTdXBw
b3J0ZWRDb2xvclNjaGVtZXMmIG90aGVyKQorICAgICAgICA6IG1fY29sb3JTY2hlbWVzKG90aGVy
Lm1fY29sb3JTY2hlbWVzKSwgbV9hbGxvd3NUcmFuc2Zvcm1hdGlvbnMob3RoZXIubV9hbGxvd3NU
cmFuc2Zvcm1hdGlvbnMpIHsgfQorCisgICAgU3R5bGVTdXBwb3J0ZWRDb2xvclNjaGVtZXMoT3B0
aW9uU2V0PENvbG9yU2NoZW1lcz4gY29sb3JTY2hlbWVzLCBib29sIGFsbG93c1RyYW5zZm9ybWF0
aW9ucykKKyAgICAgICAgOiBtX2NvbG9yU2NoZW1lcyhjb2xvclNjaGVtZXMudG9SYXcoKSksIG1f
YWxsb3dzVHJhbnNmb3JtYXRpb25zKGFsbG93c1RyYW5zZm9ybWF0aW9ucykgeyB9CisKKyAgICBi
b29sIG9wZXJhdG9yPT0oY29uc3QgU3R5bGVTdXBwb3J0ZWRDb2xvclNjaGVtZXMmIG90aGVyKSBj
b25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fY29sb3JTY2hlbWVzID09IG90aGVyLm1fY29s
b3JTY2hlbWVzICYmIG1fYWxsb3dzVHJhbnNmb3JtYXRpb25zID09IG90aGVyLm1fYWxsb3dzVHJh
bnNmb3JtYXRpb25zOworICAgIH0KKworICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBTdHlsZVN1
cHBvcnRlZENvbG9yU2NoZW1lcyYgb3RoZXIpIGNvbnN0IHsgcmV0dXJuICEoKnRoaXMgPT0gb3Ro
ZXIpOyB9CisKKyAgICBib29sIGlzQXV0bygpIGNvbnN0IHsgcmV0dXJuICFtX2NvbG9yU2NoZW1l
cyAmJiBtX2FsbG93c1RyYW5zZm9ybWF0aW9uczsgfQorICAgIGJvb2wgaXNPbmx5KCkgY29uc3Qg
eyByZXR1cm4gIW1fY29sb3JTY2hlbWVzICYmICFtX2FsbG93c1RyYW5zZm9ybWF0aW9uczsgfQor
CisgICAgT3B0aW9uU2V0PENvbG9yU2NoZW1lcz4gY29sb3JTY2hlbWVzKCkgY29uc3QgeyByZXR1
cm4gT3B0aW9uU2V0PENvbG9yU2NoZW1lcz46OmZyb21SYXcobV9jb2xvclNjaGVtZXMpOyB9CisK
KyAgICB2b2lkIGFkZChDb2xvclNjaGVtZXMgY29sb3JTY2hlbWUpIHsgbV9jb2xvclNjaGVtZXMg
fD0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGNvbG9yU2NoZW1lKTsgfQorICAgIGJvb2wgY29udGFp
bnMoQ29sb3JTY2hlbWVzIGNvbG9yU2NoZW1lKSBjb25zdCB7IHJldHVybiAhIShtX2NvbG9yU2No
ZW1lcyAmIHN0YXRpY19jYXN0PHVuc2lnbmVkPihjb2xvclNjaGVtZSkpOyB9CisKKyAgICB2b2lk
IHNldEFsbG93c1RyYW5zZm9ybWF0aW9ucyhib29sIGFsbG93KSB7IG1fYWxsb3dzVHJhbnNmb3Jt
YXRpb25zID0gYWxsb3c7IH0KKyAgICBib29sIGFsbG93c1RyYW5zZm9ybWF0aW9ucygpIGNvbnN0
IHsgcmV0dXJuIG1fYWxsb3dzVHJhbnNmb3JtYXRpb25zOyB9CisKK3ByaXZhdGU6CisgICAgdW5z
aWduZWQgbV9jb2xvclNjaGVtZXMgOiBDb2xvclNjaGVtZXNCaXRzOyAvLyBDb2xvclNjaGVtZXMK
KyAgICBib29sIG1fYWxsb3dzVHJhbnNmb3JtYXRpb25zIHsgdHJ1ZSB9OworfTsKKworfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKERBUktfTU9ERV9DU1MpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuY3BwIGIvU291cmNl
L1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmNwcAppbmRleCA5MWVmODUxNGU1ODNlZDM1
MzgwZTdhYzc4MjdkMWJkMGY4MjU0MDRhLi4wNjA5N2VjY2JiZTNjMmU2YzYyYTQ1OWRjMThlYjE2
MmQ0OTk0OGE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1h
Z2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZS5jcHAKQEAg
LTQ3LDYgKzQ3LDcgQEAKICNpbmNsdWRlICJQYWdlQ29uZmlndXJhdGlvbi5oIgogI2luY2x1ZGUg
IlJlbmRlclNWR1Jvb3QuaCIKICNpbmNsdWRlICJSZW5kZXJTdHlsZS5oIgorI2luY2x1ZGUgIlJl
bmRlclZpZXcuaCIKICNpbmNsdWRlICJTVkdEb2N1bWVudC5oIgogI2luY2x1ZGUgIlNWR0ZFSW1h
Z2VFbGVtZW50LmgiCiAjaW5jbHVkZSAiU1ZHRm9yZWlnbk9iamVjdEVsZW1lbnQuaCIKQEAgLTMy
NCw4ICszMjUsNyBAQCBJbWFnZURyYXdSZXN1bHQgU1ZHSW1hZ2U6OmRyYXcoR3JhcGhpY3NDb250
ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlYwogICAgIH0KIAogI2lmIFBMQVRG
T1JNKE1BQykKLSAgICBhdXRvKiBkb2N1bWVudCA9IG1fcGFnZS0+bWFpbkZyYW1lKCkuZG9jdW1l
bnQoKTsKLSAgICBMb2NhbERlZmF1bHRTeXN0ZW1BcHBlYXJhbmNlIGxvY2FsQXBwZWFyYW5jZShk
b2N1bWVudCA/IGRvY3VtZW50LT51c2VEYXJrQXBwZWFyYW5jZSgpIDogZmFsc2UpOworICAgIExv
Y2FsRGVmYXVsdFN5c3RlbUFwcGVhcmFuY2UgbG9jYWxBcHBlYXJhbmNlKHZpZXctPnJlbmRlclZp
ZXcoKS0+dXNlRGFya0FwcGVhcmFuY2UoKSk7CiAjZW5kaWYKIAogICAgIHZpZXctPnBhaW50KGNv
bnRleHQsIGludGVyc2VjdGlvbihjb250ZXh0LmNsaXBCb3VuZHMoKSwgZW5jbG9zaW5nSW50UmVj
dChzcmNSZWN0KSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVj
dGVkQnVuZGxlL0RPTS9JbmplY3RlZEJ1bmRsZVJhbmdlSGFuZGxlLmNwcCBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9ET00vSW5qZWN0ZWRCdW5kbGVSYW5nZUhhbmRs
ZS5jcHAKaW5kZXggM2Y0ZjU2N2RjNGJhZTYxODU1NTI1MjA4NzRmNWZlYjU1Yzg4ZmMyMS4uNGJm
ZGQ3ZjlmNGM0Y2M0ZGZhNmRlYWFiYzAxZjRhNmMxMTFlZGFjYiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0RPTS9JbmplY3RlZEJ1bmRsZVJhbmdl
SGFuZGxlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUv
RE9NL0luamVjdGVkQnVuZGxlUmFuZ2VIYW5kbGUuY3BwCkBAIC00MSw2ICs0MSw3IEBACiAjaW5j
bHVkZSA8V2ViQ29yZS9KU1JhbmdlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9QYWdlLmg+CiAjaW5j
bHVkZSA8V2ViQ29yZS9SYW5nZS5oPgorI2luY2x1ZGUgPFdlYkNvcmUvUmVuZGVyVmlldy5oPgog
I2luY2x1ZGUgPFdlYkNvcmUvVmlzaWJsZVNlbGVjdGlvbi5oPgogI2luY2x1ZGUgPHd0Zi9IYXNo
TWFwLmg+CiAjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CkBAIC0xMjQsNyArMTI1LDgg
QEAgUmVmUHRyPFdlYkltYWdlPiBJbmplY3RlZEJ1bmRsZVJhbmdlSGFuZGxlOjpyZW5kZXJlZElt
YWdlKFNuYXBzaG90T3B0aW9ucyBvcHRpb24KICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICNp
ZiBQTEFURk9STShNQUMpCi0gICAgTG9jYWxEZWZhdWx0U3lzdGVtQXBwZWFyYW5jZSBsb2NhbEFw
cGVhcmFuY2Uob3duZXJEb2N1bWVudC51c2VEYXJrQXBwZWFyYW5jZSgpKTsKKyAgICBSZW5kZXJW
aWV3KiByZW5kZXJWaWV3ID0gZnJhbWVWaWV3LT5yZW5kZXJWaWV3KCk7CisgICAgTG9jYWxEZWZh
dWx0U3lzdGVtQXBwZWFyYW5jZSBsb2NhbEFwcGVhcmFuY2UocmVuZGVyVmlldyA/IHJlbmRlclZp
ZXctPnVzZURhcmtBcHBlYXJhbmNlKCkgOiBmYWxzZSk7CiAjZW5kaWYKIAogICAgIFJlZjxGcmFt
ZT4gcHJvdGVjdG9yKCpmcmFtZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJQYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlBhZ2UuY3BwCmluZGV4IDgwYzUzODNhMmU1NDg1NGU3M2M4NzY1MzdmY2M2NGYyM2NkZjFi
ZjcuLjJmNTRkNWRmZDRhZDU3MjFmOTM5ZDk0Njk2NzMxZjY2MTNhODhkNzEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCkBAIC0xNTU2LDggKzE1NTYs
OCBAQCB2b2lkIFdlYlBhZ2U6OnNjcm9sbE1haW5GcmFtZUlmTm90QXRNYXhTY3JvbGxQb3NpdGlv
bihjb25zdCBJbnRTaXplJiBzY3JvbGxPZmZzZQogdm9pZCBXZWJQYWdlOjpkcmF3UmVjdChHcmFw
aGljc0NvbnRleHQmIGdyYXBoaWNzQ29udGV4dCwgY29uc3QgSW50UmVjdCYgcmVjdCkKIHsKICNp
ZiBQTEFURk9STShNQUMpCi0gICAgYXV0byogZG9jdW1lbnQgPSBtX21haW5GcmFtZS0+Y29yZUZy
YW1lKCktPmRvY3VtZW50KCk7Ci0gICAgTG9jYWxEZWZhdWx0U3lzdGVtQXBwZWFyYW5jZSBsb2Nh
bEFwcGVhcmFuY2UoZG9jdW1lbnQgPyBkb2N1bWVudC0+dXNlRGFya0FwcGVhcmFuY2UoKSA6IGZh
bHNlKTsKKyAgICBSZW5kZXJWaWV3KiByZW5kZXJWaWV3ID0gbV9wYWdlLT5tYWluRnJhbWUoKS52
aWV3KCktPnJlbmRlclZpZXcoKTsKKyAgICBMb2NhbERlZmF1bHRTeXN0ZW1BcHBlYXJhbmNlIGxv
Y2FsQXBwZWFyYW5jZShyZW5kZXJWaWV3ID8gcmVuZGVyVmlldy0+dXNlRGFya0FwcGVhcmFuY2Uo
KSA6IGZhbHNlKTsKICNlbmRpZgogCiAgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0
ZVNhdmVyKGdyYXBoaWNzQ29udGV4dCk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggMmZkYTRiMTYzYjIxZWQxYzJmOTIxMjJj
NzYwMzEyNDJkMGI0YzdjOS4uZDlkMjJhMzI4NjcxODgyMDBjNmEyM2ZmYjU3MGNlZjg1YTc0ZDkz
MSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0No
YW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDE4LTExLTA4ICBUaW1vdGh5IEhhdGNoZXIgIDx0
aW1vdGh5QGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgZXhwZXJpbWVudGFsIHN1cHBvcnQgZm9y
IGEgYHN1cHBvcnRlZC1jb2xvci1zY2hlbWVzYCBDU1MgcHJvcGVydHkuCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTEzMTkKKyAgICAgICAgcmRhcjov
L3Byb2JsZW0vNDU4NTIyNjEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICAqIGNzcy1kYXJrLW1vZGUvcGFyc2Utc3VwcG9ydGVkLWNvbG9yLXNjaGVtZXMt
ZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBjc3MtZGFyay1tb2RlL3BhcnNlLXN1cHBv
cnRlZC1jb2xvci1zY2hlbWVzLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGNzcy1kYXJrLW1vZGUv
c3VwcG9ydGVkLWNvbG9yLXNjaGVtZXMtY3NzLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAg
ICogY3NzLWRhcmstbW9kZS9zdXBwb3J0ZWQtY29sb3Itc2NoZW1lcy1jc3MuaHRtbDogQWRkZWQu
CisKIDIwMTgtMTEtMDcgIEp1c3RpbiBNaWNoYXVkICA8anVzdGluX21pY2hhdWRAYXBwbGUuY29t
PgogCiAgICAgICAgIENTUyBQYWludGluZyBBUEkgc2hvdWxkIHBhc3Mgc2l6ZSwgYXJndW1lbnRz
IGFuZCBpbnB1dCBwcm9wZXJ0aWVzIHRvIHBhaW50IGNhbGxiYWNrCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9jc3MtZGFyay1tb2RlL3BhcnNlLXN1cHBvcnRlZC1jb2xvci1zY2hlbWVzLWV4cGVj
dGVkLnR4dCBiL0xheW91dFRlc3RzL2Nzcy1kYXJrLW1vZGUvcGFyc2Utc3VwcG9ydGVkLWNvbG9y
LXNjaGVtZXMtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjJhMjg3ZjVjM2EwYTA0ZTgzYWJiYjFh
OWI0NDFjMWE3OGRlYzM3NDUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9jc3MtZGFy
ay1tb2RlL3BhcnNlLXN1cHBvcnRlZC1jb2xvci1zY2hlbWVzLWV4cGVjdGVkLnR4dApAQCAtMCww
ICsxLDQgQEAKKworUEFTUyBUZXN0IHZhbGlkIHZhbHVlcyAKK1BBU1MgVGVzdCBpbnZhbGlkIHZh
bHVlcyAKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvY3NzLWRhcmstbW9kZS9wYXJzZS1zdXBw
b3J0ZWQtY29sb3Itc2NoZW1lcy5odG1sIGIvTGF5b3V0VGVzdHMvY3NzLWRhcmstbW9kZS9wYXJz
ZS1zdXBwb3J0ZWQtY29sb3Itc2NoZW1lcy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjFiYzEwYTgyNWQ3M2Zi
Mzc1YWE1OGU5NTgzY2ZkODI0MTY5YjAyOWYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9jc3MtZGFyay1tb2RlL3BhcnNlLXN1cHBvcnRlZC1jb2xvci1zY2hlbWVzLmh0bWwKQEAgLTAs
MCArMSwxMjggQEAKKzwhRE9DVFlQRSBodG1sPgorCis8IS0tIHdlYmtpdC10ZXN0LXJ1bm5lciBb
IGV4cGVyaW1lbnRhbDpEYXJrTW9kZUNTU0VuYWJsZWQ9dHJ1ZSBdIC0tPgorCis8c2NyaXB0IHNy
Yz0iLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIu
Li9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgorCis8c3R5bGU+Cisj
dGVzdEF1dG8geworICAgIHN1cHBvcnRlZC1jb2xvci1zY2hlbWVzOiBhdXRvOworfQorCisjdGVz
dE9ubHkgeworICAgIHN1cHBvcnRlZC1jb2xvci1zY2hlbWVzOiBvbmx5OworfQorCisjdGVzdExp
Z2h0IHsKKyAgICBzdXBwb3J0ZWQtY29sb3Itc2NoZW1lczogbGlnaHQ7Cit9CisKKyN0ZXN0RGFy
ayB7CisgICAgc3VwcG9ydGVkLWNvbG9yLXNjaGVtZXM6IGRhcms7Cit9CisKKyN0ZXN0TGlnaHRE
YXJrIHsKKyAgICBzdXBwb3J0ZWQtY29sb3Itc2NoZW1lczogbGlnaHQgZGFyazsKK30KKworI3Rl
c3REYXJrTGlnaHQgeworICAgIHN1cHBvcnRlZC1jb2xvci1zY2hlbWVzOiBkYXJrIGxpZ2h0Owor
fQorCisjdGVzdExpZ2h0RGFya09ubHkgeworICAgIHN1cHBvcnRlZC1jb2xvci1zY2hlbWVzOiBs
aWdodCBkYXJrIG9ubHk7Cit9CisKKyN0ZXN0T25seURhcmsgeworICAgIHN1cHBvcnRlZC1jb2xv
ci1zY2hlbWVzOiBvbmx5IGRhcms7Cit9CisKKyN0ZXN0TGlnaHRPbmx5RGFyayB7CisgICAgc3Vw
cG9ydGVkLWNvbG9yLXNjaGVtZXM6IGxpZ2h0IG9ubHkgZGFyazsKK30KKworI3Rlc3RMaWdodFVu
a25vd24geworICAgIHN1cHBvcnRlZC1jb2xvci1zY2hlbWVzOiBsaWdodCBmb287Cit9CisKKyN0
ZXN0VW5rbm93bkRhcmtPbmx5IHsKKyAgICBzdXBwb3J0ZWQtY29sb3Itc2NoZW1lczogYmFyIGRh
cmsgb25seTsKK30KKworI3Rlc3RMaWdodFVua25vd25Pbmx5IHsKKyAgICBzdXBwb3J0ZWQtY29s
b3Itc2NoZW1lczogbGlnaHQgYmF6IG9ubHk7Cit9CisKKyN0ZXN0SW52YWxpZExpZ2h0QXV0byB7
CisgICAgc3VwcG9ydGVkLWNvbG9yLXNjaGVtZXM6IGxpZ2h0IGF1dG87Cit9CisKKyN0ZXN0SW52
YWxpZEF1dG9EYXJrIHsKKyAgICBzdXBwb3J0ZWQtY29sb3Itc2NoZW1lczogYXV0byBkYXJrOwor
fQorCisjdGVzdEludmFsaWRMaWdodERhcmtMaWdodCB7CisgICAgc3VwcG9ydGVkLWNvbG9yLXNj
aGVtZXM6IGxpZ2h0IGRhcmsgbGlnaHQ7Cit9CisKKyN0ZXN0SW52YWxpZE51bWJlciB7CisgICAg
c3VwcG9ydGVkLWNvbG9yLXNjaGVtZXM6IDQyOworfQorCisjdGVzdEludmFsaWRTdHJpbmcgewor
ICAgIHN1cHBvcnRlZC1jb2xvci1zY2hlbWVzOiAiZm9vIjsKK30KKworI3Rlc3RJbnZhbGlkTGln
aHRTdHJpbmcgeworICAgIHN1cHBvcnRlZC1jb2xvci1zY2hlbWVzOiBsaWdodCAiZm9vIjsKK30K
Kzwvc3R5bGU+CisKKzxkaXYgaWQ9InRlc3RBdXRvIj48L2Rpdj4KKzxkaXYgaWQ9InRlc3RPbmx5
Ij48L2Rpdj4KKzxkaXYgaWQ9InRlc3RMaWdodCI+PC9kaXY+Cis8ZGl2IGlkPSJ0ZXN0RGFyayI+
PC9kaXY+Cis8ZGl2IGlkPSJ0ZXN0TGlnaHREYXJrIj48L2Rpdj4KKzxkaXYgaWQ9InRlc3REYXJr
TGlnaHQiPjwvZGl2PgorPGRpdiBpZD0idGVzdExpZ2h0RGFya09ubHkiPjwvZGl2PgorPGRpdiBp
ZD0idGVzdE9ubHlEYXJrIj48L2Rpdj4KKzxkaXYgaWQ9InRlc3RMaWdodE9ubHlEYXJrIj48L2Rp
dj4KKzxkaXYgaWQ9InRlc3RMaWdodFVua25vd24iPjwvZGl2PgorPGRpdiBpZD0idGVzdFVua25v
d25EYXJrT25seSI+PC9kaXY+CisKKzxkaXYgaWQ9InRlc3RJbnZhbGlkTGlnaHRBdXRvIj48L2Rp
dj4KKzxkaXYgaWQ9InRlc3RJbnZhbGlkQXV0b0RhcmsiPjwvZGl2PgorPGRpdiBpZD0idGVzdElu
dmFsaWRMaWdodERhcmtMaWdodCI+PC9kaXY+Cis8ZGl2IGlkPSJ0ZXN0SW52YWxpZE51bWJlciI+
PC9kaXY+Cis8ZGl2IGlkPSJ0ZXN0SW52YWxpZFN0cmluZyI+PC9kaXY+Cis8ZGl2IGlkPSJ0ZXN0
SW52YWxpZExpZ2h0U3RyaW5nIj48L2Rpdj4KKworPHNjcmlwdD4KK2Z1bmN0aW9uIHRlc3RfcHJv
cChpZCwgcHJvcGVydHksIGV4cGVjdGVkKSB7CisgICAgYXNzZXJ0X2VxdWFscyh3aW5kb3cuZ2V0
Q29tcHV0ZWRTdHlsZShkb2N1bWVudC5nZXRFbGVtZW50QnlJZChpZCkpLmdldFByb3BlcnR5VmFs
dWUocHJvcGVydHkpLCBleHBlY3RlZCk7Cit9CisKK3Rlc3QoZnVuY3Rpb24oKSB7CisgICAgdGVz
dF9wcm9wKCJ0ZXN0QXV0byIsICJzdXBwb3J0ZWQtY29sb3Itc2NoZW1lcyIsICJhdXRvIik7Cisg
ICAgdGVzdF9wcm9wKCJ0ZXN0T25seSIsICJzdXBwb3J0ZWQtY29sb3Itc2NoZW1lcyIsICJsaWdo
dCBvbmx5Iik7CisgICAgdGVzdF9wcm9wKCJ0ZXN0TGlnaHQiLCAic3VwcG9ydGVkLWNvbG9yLXNj
aGVtZXMiLCAibGlnaHQiKTsKKyAgICB0ZXN0X3Byb3AoInRlc3REYXJrIiwgInN1cHBvcnRlZC1j
b2xvci1zY2hlbWVzIiwgImRhcmsiKTsKKyAgICB0ZXN0X3Byb3AoInRlc3RMaWdodERhcmsiLCAi
c3VwcG9ydGVkLWNvbG9yLXNjaGVtZXMiLCAibGlnaHQgZGFyayIpOworICAgIHRlc3RfcHJvcCgi
dGVzdERhcmtMaWdodCIsICJzdXBwb3J0ZWQtY29sb3Itc2NoZW1lcyIsICJsaWdodCBkYXJrIik7
CisgICAgdGVzdF9wcm9wKCJ0ZXN0TGlnaHREYXJrT25seSIsICJzdXBwb3J0ZWQtY29sb3Itc2No
ZW1lcyIsICJsaWdodCBkYXJrIG9ubHkiKTsKKyAgICB0ZXN0X3Byb3AoInRlc3RPbmx5RGFyayIs
ICJzdXBwb3J0ZWQtY29sb3Itc2NoZW1lcyIsICJkYXJrIG9ubHkiKTsKKyAgICB0ZXN0X3Byb3Ao
InRlc3RMaWdodE9ubHlEYXJrIiwgInN1cHBvcnRlZC1jb2xvci1zY2hlbWVzIiwgImxpZ2h0IGRh
cmsgb25seSIpOworICAgIHRlc3RfcHJvcCgidGVzdExpZ2h0VW5rbm93biIsICJzdXBwb3J0ZWQt
Y29sb3Itc2NoZW1lcyIsICJsaWdodCIpOworICAgIHRlc3RfcHJvcCgidGVzdFVua25vd25EYXJr
T25seSIsICJzdXBwb3J0ZWQtY29sb3Itc2NoZW1lcyIsICJkYXJrIG9ubHkiKTsKK30sICJUZXN0
IHZhbGlkIHZhbHVlcyIpOworCit0ZXN0KGZ1bmN0aW9uKCkgeworICAgIHRlc3RfcHJvcCgidGVz
dEludmFsaWRMaWdodEF1dG8iLCAic3VwcG9ydGVkLWNvbG9yLXNjaGVtZXMiLCAiYXV0byIpOwor
ICAgIHRlc3RfcHJvcCgidGVzdEludmFsaWRBdXRvRGFyayIsICJzdXBwb3J0ZWQtY29sb3Itc2No
ZW1lcyIsICJhdXRvIik7CisgICAgdGVzdF9wcm9wKCJ0ZXN0SW52YWxpZExpZ2h0RGFya0xpZ2h0
IiwgInN1cHBvcnRlZC1jb2xvci1zY2hlbWVzIiwgImF1dG8iKTsKKyAgICB0ZXN0X3Byb3AoInRl
c3RJbnZhbGlkTnVtYmVyIiwgInN1cHBvcnRlZC1jb2xvci1zY2hlbWVzIiwgImF1dG8iKTsKKyAg
ICB0ZXN0X3Byb3AoInRlc3RJbnZhbGlkU3RyaW5nIiwgInN1cHBvcnRlZC1jb2xvci1zY2hlbWVz
IiwgImF1dG8iKTsKKyAgICB0ZXN0X3Byb3AoInRlc3RJbnZhbGlkTGlnaHRTdHJpbmciLCAic3Vw
cG9ydGVkLWNvbG9yLXNjaGVtZXMiLCAiYXV0byIpOworfSwgIlRlc3QgaW52YWxpZCB2YWx1ZXMi
KTsKKzwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvY3NzLWRhcmstbW9kZS9zdXBw
b3J0ZWQtY29sb3Itc2NoZW1lcy1jc3MtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvY3NzLWRh
cmstbW9kZS9zdXBwb3J0ZWQtY29sb3Itc2NoZW1lcy1jc3MtZXhwZWN0ZWQudHh0Cm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmNkZGQ1NmY2MzM5YzMzZTYyZWFmZjRmNGM2Mjg1MTc1ZWViNDVmNDgKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9jc3MtZGFyay1tb2RlL3N1cHBvcnRlZC1jb2xvci1zY2hlbWVz
LWNzcy1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwyOCBAQAorCitQQVNTIEVsZW1lbnQgY29sb3Jz
IGFyZSBjb3JyZWN0IGluIGxpZ2h0IGNvbG9yIHNjaGVtZSB3aXRoIG9ubHkgbGlnaHQgc3VwcG9y
dGVkIGNvbG9yIHNjaGVtZSAKK1BBU1MgRGFyayBjb2xvciBzY2hlbWUgZW5hYmxlZCAKK1BBU1Mg
RWxlbWVudCBjb2xvcnMgYXJlIGNvcnJlY3QgaW4gZGFyayBjb2xvciBzY2hlbWUgd2l0aCBvbmx5
IGxpZ2h0IHN1cHBvcnRlZCBjb2xvciBzY2hlbWUgCitQQVNTIExpZ2h0IGNvbG9yIHNjaGVtZSBl
bmFibGVkIAorUEFTUyBTdXBwb3J0ZWQgY29sb3Igc2NoZW1lcyBjaGFuZ2VkIHRvIGxpZ2h0IGFu
ZCBkYXJrIAorUEFTUyBFbGVtZW50IGNvbG9ycyBhcmUgY29ycmVjdCBpbiBsaWdodCBjb2xvciBz
Y2hlbWUgd2l0aCBsaWdodCBhbmQgZGFyayBzdXBwb3J0ZWQgY29sb3Igc2NoZW1lIAorUEFTUyBE
YXJrIGNvbG9yIHNjaGVtZSBlbmFibGVkIAorUEFTUyBFbGVtZW50IGNvbG9ycyBhcmUgY29ycmVj
dCBpbiBkYXJrIGNvbG9yIHNjaGVtZSB3aXRoIGxpZ2h0IGFuZCBkYXJrIHN1cHBvcnRlZCBjb2xv
ciBzY2hlbWUgCitQQVNTIExpZ2h0IGNvbG9yIHNjaGVtZSBlbmFibGVkIAorUEFTUyBTdXBwb3J0
ZWQgY29sb3Igc2NoZW1lcyBjaGFuZ2VkIHRvIGRhcmsgCitQQVNTIEVsZW1lbnQgY29sb3JzIGFy
ZSBjb3JyZWN0IGluIGxpZ2h0IGNvbG9yIHNjaGVtZSB3aXRoIG9ubHkgZGFyayBzdXBwb3J0ZWQg
Y29sb3Igc2NoZW1lIAorUEFTUyBEYXJrIGNvbG9yIHNjaGVtZSBlbmFibGVkIAorUEFTUyBFbGVt
ZW50IGNvbG9ycyBhcmUgY29ycmVjdCBpbiBkYXJrIGNvbG9yIHNjaGVtZSB3aXRoIG9ubHkgZGFy
ayBzdXBwb3J0ZWQgY29sb3Igc2NoZW1lIAorUEFTUyBTdXBwb3J0ZWQgY29sb3Igc2NoZW1lcyBj
aGFuZ2VkIHRvIGxpZ2h0IGFuZCBhIGJvZ3VzIHZhbHVlIAorUEFTUyBFbGVtZW50IGNvbG9ycyBh
cmUgY29ycmVjdCBpbiBkYXJrIGNvbG9yIHNjaGVtZSB3aXRoIG9ubHkgbGlnaHQgc3VwcG9ydGVk
IGNvbG9yIHNjaGVtZSAKK1BBU1MgU3VwcG9ydGVkIGNvbG9yIHNjaGVtZXMgY2hhbmdlZCB0byBh
dXRvIHZhbHVlIAorUEFTUyBFbGVtZW50IGNvbG9ycyBhcmUgY29ycmVjdCBpbiBkYXJrIGNvbG9y
IHNjaGVtZSB3aXRoIGltcGxpY2l0IGxpZ2h0IHN1cHBvcnRlZCBjb2xvciBzY2hlbWUgCitQQVNT
IFN1cHBvcnRlZCBjb2xvciBzY2hlbWVzIGNoYW5nZWQgdG8gbGlnaHQgYW5kIGRhcmsgdmlhIDxt
ZXRhPiBlbGVtZW50IAorUEFTUyBFbGVtZW50IGNvbG9ycyBhcmUgY29ycmVjdCBpbiBkYXJrIGNv
bG9yIHNjaGVtZSB3aXRoIGxpZ2h0IGFuZCBkYXJrIHN1cHBvcnRlZCBjb2xvciBzY2hlbWUgdmlh
IDxtZXRhPiBlbGVtZW50IAorUEFTUyBTdXBwb3J0ZWQgY29sb3Igc2NoZW1lcyBjaGFuZ2VkIHRv
IGxpZ2h0IHZhbHVlIAorUEFTUyBFbGVtZW50IGNvbG9ycyBhcmUgY29ycmVjdCBpbiBkYXJrIGNv
bG9yIHNjaGVtZSB3aXRoIGV4cGxpY2l0IGxpZ2h0LCBvdmVycmlkaW5nIDxtZXRhPiBlbGVtZW50
IAorUEFTUyBSZW1vdmUgdGVzdCBtZXRhIGVsZW1lbnQgCitQQVNTIFN1cHBvcnRlZCBjb2xvciBz
Y2hlbWVzIGNoYW5nZWQgdG8gbGlnaHQgYW5kIGRhcmsgCitQQVNTIEVsZW1lbnQgY29sb3JzIGFy
ZSBjb3JyZWN0IGluIGRhcmsgY29sb3Igc2NoZW1lIHdpdGggbGlnaHQgYW5kIGRhcmsgc3VwcG9y
dGVkIGNvbG9yIHNjaGVtZSAKK1BBU1MgU3VwcG9ydGVkIGNvbG9yIHNjaGVtZXMgY2hhbmdlZCB0
byBhIGJvZ3VzIHZhbHVlIGFuZCBkYXJrIAorUEFTUyBFbGVtZW50IGNvbG9ycyBhcmUgY29ycmVj
dCBpbiBkYXJrIGNvbG9yIHNjaGVtZSB3aXRoIGRhcmsgc3VwcG9ydGVkIGNvbG9yIHNjaGVtZSAK
KwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvY3NzLWRhcmstbW9kZS9zdXBwb3J0ZWQtY29sb3It
c2NoZW1lcy1jc3MuaHRtbCBiL0xheW91dFRlc3RzL2Nzcy1kYXJrLW1vZGUvc3VwcG9ydGVkLWNv
bG9yLXNjaGVtZXMtY3NzLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjZjYTY4MDFhZjRlN2EyNGQ4NDcwYjJk
OTdkNzBlMThmNzZiOWNmZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Nzcy1kYXJr
LW1vZGUvc3VwcG9ydGVkLWNvbG9yLXNjaGVtZXMtY3NzLmh0bWwKQEAgLTAsMCArMSwxNTMgQEAK
KzwhRE9DVFlQRSBodG1sPgorCis8IS0tIHdlYmtpdC10ZXN0LXJ1bm5lciBbIGV4cGVyaW1lbnRh
bDpEYXJrTW9kZUNTU0VuYWJsZWQ9dHJ1ZSBdIC0tPgorCis8c2NyaXB0IHNyYz0iLi4vcmVzb3Vy
Y2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMv
dGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgorCis8c3R5bGU+CisjdGVzdDEgeworICAg
IGNvbG9yOiB0ZXh0OworfQorPC9zdHlsZT4KKworPGRpdiBpZD0idGVzdDEiPjwvZGl2PgorCis8
c2NyaXB0PgorZnVuY3Rpb24gdGVzdF9wcm9wKGlkLCBwcm9wLCBleHBlY3RlZCkgeworICAgIGFz
c2VydF9lcXVhbHMod2luZG93LmdldENvbXB1dGVkU3R5bGUoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoaWQpKS5nZXRQcm9wZXJ0eVZhbHVlKHByb3ApLCBleHBlY3RlZCk7Cit9CisKK2Z1bmN0aW9u
IHRlc3RfY29sb3JfaXNfd2hpdGUoaWQpIHsKKyAgICB0ZXN0X3Byb3AoInRlc3QxIiwgImNvbG9y
IiwgInJnYigyNTUsIDI1NSwgMjU1KSIpOworfQorCitmdW5jdGlvbiB0ZXN0X2NvbG9yX2lzX2Js
YWNrKGlkKSB7CisgICAgdGVzdF9wcm9wKCJ0ZXN0MSIsICJjb2xvciIsICJyZ2IoMCwgMCwgMCki
KTsKK30KKwordGVzdChmdW5jdGlvbigpIHsKKyAgICAvLyBUaGUgc2VtYW50aWMgdGV4dCBjb2xv
ciBzaG91bGQgYmUgYmxhY2suCisgICAgdGVzdF9jb2xvcl9pc19ibGFjaygidGVzdDEiKTsKK30s
ICJFbGVtZW50IGNvbG9ycyBhcmUgY29ycmVjdCBpbiBsaWdodCBjb2xvciBzY2hlbWUgd2l0aCBv
bmx5IGxpZ2h0IHN1cHBvcnRlZCBjb2xvciBzY2hlbWUiKTsKKwordGVzdChmdW5jdGlvbigpIHsK
KyAgICBpZiAod2luZG93LmludGVybmFscykKKyAgICAgICAgaW50ZXJuYWxzLnNldHRpbmdzLnNl
dFVzZURhcmtBcHBlYXJhbmNlKHRydWUpOworfSwgIkRhcmsgY29sb3Igc2NoZW1lIGVuYWJsZWQi
KTsKKwordGVzdChmdW5jdGlvbigpIHsKKyAgICAvLyBUaGUgc2VtYW50aWMgdGV4dCBjb2xvciBz
aG91bGQgYmUgYmxhY2ssIGFuZCBub3QgY2hhbmdlLgorICAgIHRlc3RfY29sb3JfaXNfYmxhY2so
InRlc3QxIik7Cit9LCAiRWxlbWVudCBjb2xvcnMgYXJlIGNvcnJlY3QgaW4gZGFyayBjb2xvciBz
Y2hlbWUgd2l0aCBvbmx5IGxpZ2h0IHN1cHBvcnRlZCBjb2xvciBzY2hlbWUiKTsKKwordGVzdChm
dW5jdGlvbigpIHsKKyAgICBpZiAod2luZG93LmludGVybmFscykKKyAgICAgICAgaW50ZXJuYWxz
LnNldHRpbmdzLnNldFVzZURhcmtBcHBlYXJhbmNlKGZhbHNlKTsKK30sICJMaWdodCBjb2xvciBz
Y2hlbWUgZW5hYmxlZCIpOworCit0ZXN0KGZ1bmN0aW9uKCkgeworICAgIGRvY3VtZW50LmJvZHku
c3R5bGUuc2V0UHJvcGVydHkoInN1cHBvcnRlZC1jb2xvci1zY2hlbWVzIiwgImxpZ2h0IGRhcmsi
KTsKK30sICJTdXBwb3J0ZWQgY29sb3Igc2NoZW1lcyBjaGFuZ2VkIHRvIGxpZ2h0IGFuZCBkYXJr
Iik7CisKK3Rlc3QoZnVuY3Rpb24oKSB7CisgICAgLy8gVGhlIHNlbWFudGljIHRleHQgY29sb3Ig
c2hvdWxkIGJlIGJsYWNrLgorICAgIHRlc3RfY29sb3JfaXNfYmxhY2soInRlc3QxIik7Cit9LCAi
RWxlbWVudCBjb2xvcnMgYXJlIGNvcnJlY3QgaW4gbGlnaHQgY29sb3Igc2NoZW1lIHdpdGggbGln
aHQgYW5kIGRhcmsgc3VwcG9ydGVkIGNvbG9yIHNjaGVtZSIpOworCit0ZXN0KGZ1bmN0aW9uKCkg
eworICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzKQorICAgICAgICBpbnRlcm5hbHMuc2V0dGluZ3Mu
c2V0VXNlRGFya0FwcGVhcmFuY2UodHJ1ZSk7Cit9LCAiRGFyayBjb2xvciBzY2hlbWUgZW5hYmxl
ZCIpOworCit0ZXN0KGZ1bmN0aW9uKCkgeworICAgIC8vIFRoZSBzZW1hbnRpYyB0ZXh0IGNvbG9y
IHNob3VsZCBiZSB3aGl0ZS4KKyAgICB0ZXN0X2NvbG9yX2lzX3doaXRlKCJ0ZXN0MSIpOworfSwg
IkVsZW1lbnQgY29sb3JzIGFyZSBjb3JyZWN0IGluIGRhcmsgY29sb3Igc2NoZW1lIHdpdGggbGln
aHQgYW5kIGRhcmsgc3VwcG9ydGVkIGNvbG9yIHNjaGVtZSIpOworCit0ZXN0KGZ1bmN0aW9uKCkg
eworICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzKQorICAgICAgICBpbnRlcm5hbHMuc2V0dGluZ3Mu
c2V0VXNlRGFya0FwcGVhcmFuY2UoZmFsc2UpOworfSwgIkxpZ2h0IGNvbG9yIHNjaGVtZSBlbmFi
bGVkIik7CisKK3Rlc3QoZnVuY3Rpb24oKSB7CisgICAgZG9jdW1lbnQuYm9keS5zdHlsZS5zZXRQ
cm9wZXJ0eSgic3VwcG9ydGVkLWNvbG9yLXNjaGVtZXMiLCAiZGFyayIpOworfSwgIlN1cHBvcnRl
ZCBjb2xvciBzY2hlbWVzIGNoYW5nZWQgdG8gZGFyayIpOworCit0ZXN0KGZ1bmN0aW9uKCkgewor
ICAgIC8vIFRoZSBzZW1hbnRpYyB0ZXh0IGNvbG9yIHNob3VsZCBiZSB3aGl0ZS4KKyAgICB0ZXN0
X2NvbG9yX2lzX3doaXRlKCJ0ZXN0MSIpOworfSwgIkVsZW1lbnQgY29sb3JzIGFyZSBjb3JyZWN0
IGluIGxpZ2h0IGNvbG9yIHNjaGVtZSB3aXRoIG9ubHkgZGFyayBzdXBwb3J0ZWQgY29sb3Igc2No
ZW1lIik7CisKK3Rlc3QoZnVuY3Rpb24oKSB7CisgICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMpCisg
ICAgICAgIGludGVybmFscy5zZXR0aW5ncy5zZXRVc2VEYXJrQXBwZWFyYW5jZSh0cnVlKTsKK30s
ICJEYXJrIGNvbG9yIHNjaGVtZSBlbmFibGVkIik7CisKK3Rlc3QoZnVuY3Rpb24oKSB7CisgICAg
Ly8gVGhlIHNlbWFudGljIHRleHQgY29sb3Igc2hvdWxkIGJlIHdoaXRlIHN0aWxsLgorICAgIHRl
c3RfY29sb3JfaXNfd2hpdGUoInRlc3QxIik7Cit9LCAiRWxlbWVudCBjb2xvcnMgYXJlIGNvcnJl
Y3QgaW4gZGFyayBjb2xvciBzY2hlbWUgd2l0aCBvbmx5IGRhcmsgc3VwcG9ydGVkIGNvbG9yIHNj
aGVtZSIpOworCit0ZXN0KGZ1bmN0aW9uKCkgeworICAgIGRvY3VtZW50LmJvZHkuc3R5bGUuc2V0
UHJvcGVydHkoInN1cHBvcnRlZC1jb2xvci1zY2hlbWVzIiwgImxpZ2h0IGZvbyIpOworfSwgIlN1
cHBvcnRlZCBjb2xvciBzY2hlbWVzIGNoYW5nZWQgdG8gbGlnaHQgYW5kIGEgYm9ndXMgdmFsdWUi
KTsKKwordGVzdChmdW5jdGlvbigpIHsKKyAgICAvLyBUaGUgc2VtYW50aWMgdGV4dCBjb2xvciBz
aG91bGQgYmUgYmxhY2sgYWdhaW4uCisgICAgdGVzdF9jb2xvcl9pc19ibGFjaygidGVzdDEiKTsK
K30sICJFbGVtZW50IGNvbG9ycyBhcmUgY29ycmVjdCBpbiBkYXJrIGNvbG9yIHNjaGVtZSB3aXRo
IG9ubHkgbGlnaHQgc3VwcG9ydGVkIGNvbG9yIHNjaGVtZSIpOworCit0ZXN0KGZ1bmN0aW9uKCkg
eworICAgIGRvY3VtZW50LmJvZHkuc3R5bGUuc2V0UHJvcGVydHkoInN1cHBvcnRlZC1jb2xvci1z
Y2hlbWVzIiwgImF1dG8iKTsKK30sICJTdXBwb3J0ZWQgY29sb3Igc2NoZW1lcyBjaGFuZ2VkIHRv
IGF1dG8gdmFsdWUiKTsKKwordGVzdChmdW5jdGlvbigpIHsKKyAgICAvLyBUaGUgc2VtYW50aWMg
dGV4dCBjb2xvciBzaG91bGQgYmUgYmxhY2sgc3RpbGwuCisgICAgdGVzdF9jb2xvcl9pc19ibGFj
aygidGVzdDEiKTsKK30sICJFbGVtZW50IGNvbG9ycyBhcmUgY29ycmVjdCBpbiBkYXJrIGNvbG9y
IHNjaGVtZSB3aXRoIGltcGxpY2l0IGxpZ2h0IHN1cHBvcnRlZCBjb2xvciBzY2hlbWUiKTsKKwor
dGVzdChmdW5jdGlvbigpIHsKKyAgICBsZXQgbWV0YSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQo
Im1ldGEiKTsKKyAgICBtZXRhLmlkID0gInRlc3QtbWV0YSI7CisgICAgbWV0YS5uYW1lID0gInN1
cHBvcnRlZC1jb2xvci1zY2hlbWVzIjsKKyAgICBtZXRhLmNvbnRlbnQgPSAibGlnaHQgZGFyayI7
CisgICAgZG9jdW1lbnQuaGVhZC5hcHBlbmRDaGlsZChtZXRhKTsKK30sICJTdXBwb3J0ZWQgY29s
b3Igc2NoZW1lcyBjaGFuZ2VkIHRvIGxpZ2h0IGFuZCBkYXJrIHZpYSA8bWV0YT4gZWxlbWVudCIp
OworCit0ZXN0KGZ1bmN0aW9uKCkgeworICAgIC8vIFRoZSBzZW1hbnRpYyB0ZXh0IGNvbG9yIHNo
b3VsZCBiZSB3aGl0ZSBub3cuCisgICAgdGVzdF9jb2xvcl9pc193aGl0ZSgidGVzdDEiKTsKK30s
ICJFbGVtZW50IGNvbG9ycyBhcmUgY29ycmVjdCBpbiBkYXJrIGNvbG9yIHNjaGVtZSB3aXRoIGxp
Z2h0IGFuZCBkYXJrIHN1cHBvcnRlZCBjb2xvciBzY2hlbWUgdmlhIDxtZXRhPiBlbGVtZW50Iik7
CisKK3Rlc3QoZnVuY3Rpb24oKSB7CisgICAgZG9jdW1lbnQuYm9keS5zdHlsZS5zZXRQcm9wZXJ0
eSgic3VwcG9ydGVkLWNvbG9yLXNjaGVtZXMiLCAibGlnaHQiKTsKK30sICJTdXBwb3J0ZWQgY29s
b3Igc2NoZW1lcyBjaGFuZ2VkIHRvIGxpZ2h0IHZhbHVlIik7CisKK3Rlc3QoZnVuY3Rpb24oKSB7
CisgICAgLy8gVGhlIHNlbWFudGljIHRleHQgY29sb3Igc2hvdWxkIGJlIGJsYWNrIGFnYWluLgor
ICAgIHRlc3RfY29sb3JfaXNfYmxhY2soInRlc3QxIik7Cit9LCAiRWxlbWVudCBjb2xvcnMgYXJl
IGNvcnJlY3QgaW4gZGFyayBjb2xvciBzY2hlbWUgd2l0aCBleHBsaWNpdCBsaWdodCwgb3ZlcnJp
ZGluZyA8bWV0YT4gZWxlbWVudCIpOworCit0ZXN0KGZ1bmN0aW9uKCkgeworICAgIGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCJ0ZXN0LW1ldGEiKS5yZW1vdmUoKTsKK30sICJSZW1vdmUgdGVzdCBt
ZXRhIGVsZW1lbnQiKTsKKwordGVzdChmdW5jdGlvbigpIHsKKyAgICBkb2N1bWVudC5ib2R5LnN0
eWxlLnNldFByb3BlcnR5KCJzdXBwb3J0ZWQtY29sb3Itc2NoZW1lcyIsICJsaWdodCBkYXJrIik7
Cit9LCAiU3VwcG9ydGVkIGNvbG9yIHNjaGVtZXMgY2hhbmdlZCB0byBsaWdodCBhbmQgZGFyayIp
OworCit0ZXN0KGZ1bmN0aW9uKCkgeworICAgIC8vIFRoZSBzZW1hbnRpYyB0ZXh0IGNvbG9yIHNo
b3VsZCBiZSB3aGl0ZSBub3cuCisgICAgdGVzdF9jb2xvcl9pc193aGl0ZSgidGVzdDEiKTsKK30s
ICJFbGVtZW50IGNvbG9ycyBhcmUgY29ycmVjdCBpbiBkYXJrIGNvbG9yIHNjaGVtZSB3aXRoIGxp
Z2h0IGFuZCBkYXJrIHN1cHBvcnRlZCBjb2xvciBzY2hlbWUiKTsKKwordGVzdChmdW5jdGlvbigp
IHsKKyAgICBkb2N1bWVudC5ib2R5LnN0eWxlLnNldFByb3BlcnR5KCJzdXBwb3J0ZWQtY29sb3It
c2NoZW1lcyIsICJmb28gZGFyayIpOworfSwgIlN1cHBvcnRlZCBjb2xvciBzY2hlbWVzIGNoYW5n
ZWQgdG8gYSBib2d1cyB2YWx1ZSBhbmQgZGFyayIpOworCit0ZXN0KGZ1bmN0aW9uKCkgeworICAg
IC8vIFRoZSBzZW1hbnRpYyB0ZXh0IGNvbG9yIHNob3VsZCBiZSB3aGl0ZSBzdGlsbC4KKyAgICB0
ZXN0X2NvbG9yX2lzX3doaXRlKCJ0ZXN0MSIpOworfSwgIkVsZW1lbnQgY29sb3JzIGFyZSBjb3Jy
ZWN0IGluIGRhcmsgY29sb3Igc2NoZW1lIHdpdGggZGFyayBzdXBwb3J0ZWQgY29sb3Igc2NoZW1l
Iik7Cis8L3NjcmlwdD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>354219</attachid>
            <date>2018-11-08 01:19:49 -0800</date>
            <delta_ts>2018-11-08 07:12:16 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-191319-20181108011949.patch</filename>
            <type>text/plain</type>
            <size>75524</size>
            <attacher name="Timothy Hatcher">timothy</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM3OTgyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjQzMjBlZTM0ODU0NzM2
NGYyMzE2MmRkMGQxNTVmMjM5MmMxMzkzMi4uYTk1NzNiODcxZjU3NTlmOTUzOWY2NjJlNDQwZTQy
ZTkxNGRiNGExZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEwNiBAQAorMjAxOC0xMS0wOCAgVGlt
b3RoeSBIYXRjaGVyICA8dGltb3RoeUBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIGV4cGVyaW1l
bnRhbCBzdXBwb3J0IGZvciBhIGBzdXBwb3J0ZWQtY29sb3Itc2NoZW1lc2AgQ1NTIHByb3BlcnR5
LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkxMzE5
CisgICAgICAgIHJkYXI6Ly9wcm9ibGVtLzQ1ODUyMjYxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGVzdHM6IGNzcy1kYXJrLW1vZGUvcGFyc2Utc3Vw
cG9ydGVkLWNvbG9yLXNjaGVtZXMuaHRtbAorICAgICAgICAgICAgICAgY3NzLWRhcmstbW9kZS9z
dXBwb3J0ZWQtY29sb3Itc2NoZW1lcy1jc3MuaHRtbAorCisgICAgICAgICogV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGNzcy9DU1NDb21wdXRlZFN0eWxlRGVj
bGFyYXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29tcHV0ZWRTdHlsZUV4dHJhY3Rvcjo6
dmFsdWVGb3JQcm9wZXJ0eWluU3R5bGUpOgorICAgICAgICAqIGNzcy9DU1NQcm9wZXJ0aWVzLmpz
b246CisgICAgICAgICogY3NzL0NTU1ZhbHVlS2V5d29yZHMuaW46CisgICAgICAgICogY3NzL1N0
eWxlQnVpbGRlckNvbnZlcnRlci5oOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVCdWlsZGVyQ29u
dmVydGVyOjp1cGRhdGVTdXBwb3J0ZWRDb2xvclNjaGVtZXMpOgorICAgICAgICAoV2ViQ29yZTo6
U3R5bGVCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0U3VwcG9ydGVkQ29sb3JTY2hlbWVzKToKKyAg
ICAgICAgKiBjc3MvU3R5bGVSZXNvbHZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJl
c29sdmVyOjpjb2xvckZyb21QcmltaXRpdmVWYWx1ZSBjb25zdCk6CisgICAgICAgICogY3NzL3Bh
cnNlci9DU1NQcm9wZXJ0eVBhcnNlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjb25zdW1lU3Vw
cG9ydGVkQ29sb3JTY2hlbWVzKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1Byb3BlcnR5UGFyc2Vy
OjpwYXJzZVNpbmdsZVZhbHVlKToKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnJlc2V0TGlua0NvbG9yKToKKyAgICAgICAgKFdlYkNvcmU6
OkRvY3VtZW50OjpyZXNldFZpc2l0ZWRMaW5rQ29sb3IpOgorICAgICAgICAoV2ViQ29yZTo6RG9j
dW1lbnQ6OnJlc2V0QWN0aXZlTGlua0NvbG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50
Ojpwcm9jZXNzU3VwcG9ydGVkQ29sb3JTY2hlbWVzKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3Vt
ZW50Ojp1c2VEYXJrQXBwZWFyYW5jZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVu
dDo6c3R5bGVDb2xvck9wdGlvbnMgY29uc3QpOgorICAgICAgICAqIGRvbS9Eb2N1bWVudC5oOgor
ICAgICAgICAqIGVkaXRpbmcvY29jb2EvV2ViQ29udGVudFJlYWRlckNvY29hLm1tOgorICAgICAg
ICAoV2ViQ29yZTo6Y3JlYXRlRnJhZ21lbnQpOgorICAgICAgICAqIGh0bWwvY2FudmFzL0NhbnZh
c1JlbmRlcmluZ0NvbnRleHQyRC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNSZW5kZXJp
bmdDb250ZXh0MkQ6OmRyYXdGb2N1c0lmTmVlZGVkSW50ZXJuYWwpOgorICAgICAgICAqIGluc3Bl
Y3Rvci9JbnNwZWN0b3JPdmVybGF5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvck92
ZXJsYXk6OnBhaW50KToKKyAgICAgICAgKiBwYWdlL0ZyYW1lVmlldy5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpGcmFtZVZpZXc6OnVzZURhcmtBcHBlYXJhbmNlIGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6OkZyYW1lVmlldzo6cGFpbnRTY3JvbGxDb3JuZXIpOgorICAgICAgICAqIHBsYXRmb3Jt
L21hYy9EcmFnSW1hZ2VNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVEcmFnSW1hZ2VG
b3JMaW5rKToKKyAgICAgICAgKiByZW5kZXJpbmcvSW5saW5lRmxvd0JveC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpJbmxpbmVGbG93Qm94OjpwYWludEJveERlY29yYXRpb25zKToKKyAgICAgICAg
KiByZW5kZXJpbmcvSW5saW5lVGV4dEJveC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVU
ZXh0Qm94OjpwYWludFBsYXRmb3JtRG9jdW1lbnRNYXJrZXIpOgorICAgICAgICAqIHJlbmRlcmlu
Zy9SZW5kZXJCb3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94OjpwYWludFJvb3RC
b3hGaWxsTGF5ZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveDo6cGFpbnRCYWNrZ3Jv
dW5kKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJFbGVtZW50OjpzZWxlY3Rpb25Db2xvciBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJFbGVtZW50OjpzZWxlY3Rpb25CYWNrZ3JvdW5kQ29sb3IgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRWxlbWVudDo6cGFpbnRGb2N1c1JpbmcpOgorICAgICAg
ICAqIHJlbmRlcmluZy9SZW5kZXJJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJJ
bWFnZTo6cGFpbnRBcmVhRWxlbWVudEZvY3VzUmluZyk6CisgICAgICAgICogcmVuZGVyaW5nL1Jl
bmRlckxheWVyQmFja2luZy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllckJhY2tp
bmc6OnBhaW50Q29udGVudHMpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXllckNvbXBv
c2l0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpwYWlu
dENvbnRlbnRzKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGlzdEJveC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJMaXN0Qm94OjpwYWludEl0ZW1Gb3JlZ3JvdW5kKToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlckxpc3RCb3g6OnBhaW50SXRlbUJhY2tncm91bmQpOgorICAgICAg
ICAqIHJlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
T2JqZWN0Ojp1c2VEYXJrQXBwZWFyYW5jZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJPYmplY3Q6OnN0eWxlQ29sb3JPcHRpb25zIGNvbnN0KToKKyAgICAgICAgKiByZW5kZXJpbmcv
UmVuZGVyT2JqZWN0Lmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRhYmxlQ2VsbC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUYWJsZUNlbGw6OnBhaW50QmFja2dyb3VuZHNCZWhp
bmRDZWxsKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGhlbWUuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyVGhlbWU6OnBhaW50KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVy
VGhlbWUuaDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lOjp1c2luZ0RhcmtBcHBlYXJh
bmNlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGhlbWVNYWMu
aDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGhlbWVNYWMubW06CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJUaGVtZU1hYzo6ZG9jdW1lbnRWaWV3Rm9yIGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlclRoZW1lTWFjOjphZGp1c3RNZW51TGlzdFN0eWxlIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lTWFjOjpwYWludENlbGxBbmRTZXRGb2N1c2VkRWxlbWVu
dE5lZWRzUmVwYWludElmTmVjZXNzYXJ5KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1l
TWFjOjpwYWludFNsaWRlclRodW1iKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lTWFj
Ojp1c2luZ0RhcmtBcHBlYXJhbmNlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiByZW5kZXJp
bmcvc3R5bGUvUmVuZGVyU3R5bGUuaDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjpz
dXBwb3J0ZWRDb2xvclNjaGVtZXMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5
bGU6OnNldFN1cHBvcnRlZENvbG9yU2NoZW1lcyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJT
dHlsZTo6aW5pdGlhbFN1cHBvcnRlZENvbG9yU2NoZW1lcyk6CisgICAgICAgICogcmVuZGVyaW5n
L3N0eWxlL1JlbmRlclN0eWxlQ29uc3RhbnRzLmg6CisgICAgICAgICogcmVuZGVyaW5nL3N0eWxl
L1N0eWxlUmFyZUluaGVyaXRlZERhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVSYXJl
SW5oZXJpdGVkRGF0YTo6U3R5bGVSYXJlSW5oZXJpdGVkRGF0YSk6CisgICAgICAgIChXZWJDb3Jl
OjpTdHlsZVJhcmVJbmhlcml0ZWREYXRhOjpvcGVyYXRvcj09IGNvbnN0KToKKyAgICAgICAgKiBy
ZW5kZXJpbmcvc3R5bGUvU3R5bGVSYXJlSW5oZXJpdGVkRGF0YS5oOgorICAgICAgICAqIHJlbmRl
cmluZy9zdHlsZS9TdHlsZVN1cHBvcnRlZENvbG9yU2NoZW1lcy5oOiBBZGRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OlN0eWxlU3VwcG9ydGVkQ29sb3JTY2hlbWVzOjpTdHlsZVN1cHBvcnRlZENvbG9y
U2NoZW1lcyk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVN1cHBvcnRlZENvbG9yU2NoZW1lczo6
b3BlcmF0b3I9PSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVN1cHBvcnRlZENvbG9y
U2NoZW1lczo6b3BlcmF0b3IhPSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVN1cHBv
cnRlZENvbG9yU2NoZW1lczo6aXNBdXRvIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxl
U3VwcG9ydGVkQ29sb3JTY2hlbWVzOjppc09ubHkgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
U3R5bGVTdXBwb3J0ZWRDb2xvclNjaGVtZXM6OmNvbG9yU2NoZW1lcyBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpTdHlsZVN1cHBvcnRlZENvbG9yU2NoZW1lczo6YWRkKToKKyAgICAgICAgKFdl
YkNvcmU6OlN0eWxlU3VwcG9ydGVkQ29sb3JTY2hlbWVzOjpjb250YWlucyBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpTdHlsZVN1cHBvcnRlZENvbG9yU2NoZW1lczo6c2V0QWxsb3dzVHJhbnNm
b3JtYXRpb25zKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlU3VwcG9ydGVkQ29sb3JTY2hlbWVz
OjphbGxvd3NUcmFuc2Zvcm1hdGlvbnMgY29uc3QpOgorICAgICAgICAqIHN2Zy9ncmFwaGljcy9T
VkdJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdJbWFnZTo6ZHJhdyk6CisKIDIwMTgt
MTEtMDcgIEp1c3RpbiBNaWNoYXVkICA8anVzdGluX21pY2hhdWRAYXBwbGUuY29tPgogCiAgICAg
ICAgIENTUyBQYWludGluZyBBUEkgc2hvdWxkIHBhc3Mgc2l6ZSwgYXJndW1lbnRzIGFuZCBpbnB1
dCBwcm9wZXJ0aWVzIHRvIHBhaW50IGNhbGxiYWNrCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGIwYmQ0ZjZlZGZhYTU1
YmYxYTM5MzYwNTIzMzhiYWQ1N2JlNDkwYzMuLjcwMTVkZDVkOGJmMmJlZWQ3MWExMGRhYWE5Njkw
Yjc0NjBjYmY4N2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTgtMTEtMDggIFRpbW90
aHkgSGF0Y2hlciAgPHRpbW90aHlAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBleHBlcmltZW50
YWwgc3VwcG9ydCBmb3IgYSBgc3VwcG9ydGVkLWNvbG9yLXNjaGVtZXNgIENTUyBwcm9wZXJ0eS4K
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MTMxOQor
ICAgICAgICByZGFyOi8vcHJvYmxlbS80NTg1MjI2MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9ET00v
SW5qZWN0ZWRCdW5kbGVSYW5nZUhhbmRsZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OkluamVjdGVk
QnVuZGxlUmFuZ2VIYW5kbGU6OnJlbmRlcmVkSW1hZ2UpOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJQYWdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6ZHJhd1JlY3Qp
OgorCiAyMDE4LTExLTA4ICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNv
bT4KIAogICAgICAgICBbR1RLXSBDcmFzaCB3aGVuIHJ1bm5pbmcgd2l0aCBzYW5kYm94IGVuYWJs
ZWQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agppbmRleCAxNDIwNGE1YjhlM2UwM2Q2OWZhNGUxYmQxMWEyMmMwODBiYjE5MWVlLi5iNTc0MDg2
YmQzZjQ4NmM2YzM5NGI5NTNmZTVlZjI2ZDQzNjk2MmM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC02MjUsNiArNjI1LDcgQEAK
IAkJMUMwMTA3MDExOTI1OTRERjAwOEE0MjAxIC8qIElubGluZVRleHRCb3hTdHlsZS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUMwMTA2RkYxOTI1OTRE
RjAwOEE0MjAxIC8qIElubGluZVRleHRCb3hTdHlsZS5oICovOyB9OwogCQkxQzA5MzlFQjFBMTNF
MTI5MDBCNzg4RTUgLyogQ2FjaGVkU1ZHRm9udC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMUMwOTM5RTkxQTEzRTEyOTAwQjc4OEU1IC8qIENhY2hlZFNW
R0ZvbnQuaCAqLzsgfTsKIAkJMUMwOUQwNTkxRTMxQzZBOTAwNzI1RjE4IC8qIGxpYlBBTC5hIGlu
IEZyYW1ld29ya3MgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUMwOUQwNTAx
RTMxQzMyOTAwNzI1RjE4IC8qIGxpYlBBTC5hICovOyB9OworCQkxQzBBQTE2RDIxOTQwREM4MDA4
OTY4MjkgLyogU3R5bGVTdXBwb3J0ZWRDb2xvclNjaGVtZXMuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFDMEFBMTZBMjE5NDBEQzcwMDg5NjgyOSAvKiBT
dHlsZVN1cHBvcnRlZENvbG9yU2NoZW1lcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CiAJCTFDMTJBQzJCMUVFNzc4QUUwMDc5RTBBMCAvKiBGb250RmFt
aWx5U3BlY2lmaWNhdGlvbkNvcmVUZXh0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAxQzEyQUMyOTFFRTc3OEFFMDA3OUUwQTAgLyogRm9udEZhbWlseVNw
ZWNpZmljYXRpb25Db3JlVGV4dC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCTFDMThEQTU5MTgxQUY2QTUwMEM0RUYyMiAvKiBUZXh0UGFpbnRlci5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUMxOERBNTcx
ODFBRjZBNTAwQzRFRjIyIC8qIFRleHRQYWludGVyLmggKi87IH07CiAJCTFDMjFFNTdEMTgzRUQx
RkYwMDFDMjg5RCAvKiBJT1N1cmZhY2VQb29sLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAxQzIxRTU3QjE4M0VEMUZGMDAxQzI4OUQgLyogSU9TdXJmYWNl
UG9vbC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBA
IC02MzY4LDYgKzYzNjksNyBAQAogCQkxQzA5MzlFODFBMTNFMTI5MDBCNzg4RTUgLyogQ2FjaGVk
U1ZHRm9udC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDYWNoZWRT
VkdGb250LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUMwOTM5RTkxQTEzRTEy
OTAwQjc4OEU1IC8qIENhY2hlZFNWR0ZvbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gQ2FjaGVkU1ZHRm9udC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQzA5
RDA0QjFFMzFDMzI4MDA3MjVGMTggLyogUEFMLnhjb2RlcHJvaiAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9ICJ3cmFwcGVyLnBiLXByb2plY3QiOyBuYW1l
ID0gUEFMLnhjb2RlcHJvajsgcGF0aCA9IFBBTC9QQUwueGNvZGVwcm9qOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQkxQzBBQTE2QTIxOTQwREM3MDA4OTY4MjkgLyogU3R5bGVTdXBwb3J0
ZWRDb2xvclNjaGVtZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3R5bGVT
dXBwb3J0ZWRDb2xvclNjaGVtZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUMx
MkFDMjgxRUU3NzhBRTAwNzlFMEEwIC8qIEZvbnRGYW1pbHlTcGVjaWZpY2F0aW9uQ29yZVRleHQu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRm9udEZhbWlseVNwZWNpZmljYXRpb25Db3JlVGV4dC5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFDMTJBQzI5MUVFNzc4QUUwMDc5RTBB
MCAvKiBGb250RmFtaWx5U3BlY2lmaWNhdGlvbkNvcmVUZXh0LmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEZv
bnRGYW1pbHlTcGVjaWZpY2F0aW9uQ29yZVRleHQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJMUMxMkFDMkMxRUU3Nzk5NTAwNzlFMEEwIC8qIEZvbnREZXNjcmlwdGlvbkNvY29hLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEZvbnREZXNjcmlwdGlvbkNvY29hLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTI0NjYxLDYgKzI0NjYzLDcgQEAKIAkJCQlGNDdBNUUzQTE5
NUI4QzhBMDA0ODMxMDAgLyogU3R5bGVTY3JvbGxTbmFwUG9pbnRzLmNwcCAqLywKIAkJCQlGNDdB
NUUzQjE5NUI4QzhBMDA0ODMxMDAgLyogU3R5bGVTY3JvbGxTbmFwUG9pbnRzLmggKi8sCiAJCQkJ
OUQ2MzgwMEYxQUYxNkUxNjAwMzFBMTVDIC8qIFN0eWxlU2VsZkFsaWdubWVudERhdGEuaCAqLywK
KwkJCQkxQzBBQTE2QTIxOTQwREM3MDA4OTY4MjkgLyogU3R5bGVTdXBwb3J0ZWRDb2xvclNjaGVt
ZXMuaCAqLywKIAkJCQlCQzVFQjVFNjBFODFCRkVGMDBCMjU5NjUgLyogU3R5bGVTdXJyb3VuZERh
dGEuY3BwICovLAogCQkJCUJDNUVCNUU0MEU4MUJGNkQwMEIyNTk2NSAvKiBTdHlsZVN1cnJvdW5k
RGF0YS5oICovLAogCQkJCUJDNUVCODBEMEU4MUYyQ0UwMEIyNTk2NSAvKiBTdHlsZVRyYW5zZm9y
bURhdGEuY3BwICovLApAQCAtMzEwNjAsNiArMzEwNjMsNyBAQAogCQkJCUE4RUE4MDBDMEExOTUx
NkUwMEE4RUY1RiAvKiBTdHlsZVNoZWV0LmggaW4gSGVhZGVycyAqLywKIAkJCQlFNEY5RUVGMzE1
NkRBMDA3MDBEMjNFN0UgLyogU3R5bGVTaGVldENvbnRlbnRzLmggaW4gSGVhZGVycyAqLywKIAkJ
CQlBOEVBODAwQTBBMTk1MTZFMDBBOEVGNUYgLyogU3R5bGVTaGVldExpc3QuaCBpbiBIZWFkZXJz
ICovLAorCQkJCTFDMEFBMTZEMjE5NDBEQzgwMDg5NjgyOSAvKiBTdHlsZVN1cHBvcnRlZENvbG9y
U2NoZW1lcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkM1RUI1RTUwRTgxQkY2RDAwQjI1OTY1IC8q
IFN0eWxlU3Vycm91bmREYXRhLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzVFQjgxMDBFODFGMkNF
MDBCMjU5NjUgLyogU3R5bGVUcmFuc2Zvcm1EYXRhLmggaW4gSGVhZGVycyAqLywKIAkJCQlFNERF
QUExODE3QTkzREMzMDAwRTA0MzAgLyogU3R5bGVUcmVlUmVzb2x2ZXIuaCBpbiBIZWFkZXJzICov
LApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJh
dGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9u
LmNwcAppbmRleCAyZWY2NjI5NTlhOTRjN2VkZmI5OWQyOGY3OTNmYjdhMGU1ZmZiNjc1Li4wM2I3
YjNlNzFiMjU5ZDk4MDQ4OWNkYmI5ZDVlNzM2Y2RkYjNhNGZlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcApAQCAtNDQ4LDYgKzQ0
OCw5IEBAIHN0YXRpYyBjb25zdCBDU1NQcm9wZXJ0eUlEIGNvbXB1dGVkUHJvcGVydGllc1tdID0g
ewogICAgIENTU1Byb3BlcnR5U3Ryb2tlTWl0ZXJsaW1pdCwKICAgICBDU1NQcm9wZXJ0eVN0cm9r
ZU9wYWNpdHksCiAgICAgQ1NTUHJvcGVydHlTdHJva2VXaWR0aCwKKyNpZiBFTkFCTEUoREFSS19N
T0RFX0NTUykKKyAgICBDU1NQcm9wZXJ0eVN1cHBvcnRlZENvbG9yU2NoZW1lcywKKyNlbmRpZgog
ICAgIENTU1Byb3BlcnR5QWxpZ25tZW50QmFzZWxpbmUsCiAgICAgQ1NTUHJvcGVydHlCYXNlbGlu
ZVNoaWZ0LAogICAgIENTU1Byb3BlcnR5RG9taW5hbnRCYXNlbGluZSwKQEAgLTM5NjksNiArMzk3
MiwyNCBAQCBSZWZQdHI8Q1NTVmFsdWU+IENvbXB1dGVkU3R5bGVFeHRyYWN0b3I6OnZhbHVlRm9y
UHJvcGVydHlpblN0eWxlKGNvbnN0IFJlbmRlclN0eQogICAgICAgICAgICAgcmV0dXJuIGNzc1Zh
bHVlUG9vbC5jcmVhdGVWYWx1ZShzdHlsZS5hcHBsZVBheUJ1dHRvblR5cGUoKSk7CiAjZW5kaWYK
IAorI2lmIEVOQUJMRShEQVJLX01PREVfQ1NTKQorICAgICAgICBjYXNlIENTU1Byb3BlcnR5U3Vw
cG9ydGVkQ29sb3JTY2hlbWVzOiB7CisgICAgICAgICAgICBhdXRvIHN1cHBvcnRlZENvbG9yU2No
ZW1lcyA9IHN0eWxlLnN1cHBvcnRlZENvbG9yU2NoZW1lcygpOworICAgICAgICAgICAgaWYgKHN1
cHBvcnRlZENvbG9yU2NoZW1lcy5pc0F1dG8oKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gY3Nz
VmFsdWVQb29sLmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1ZUF1dG8pOworCisgICAgICAg
ICAgICBhdXRvIGxpc3QgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZVNwYWNlU2VwYXJhdGVkKCk7Cisg
ICAgICAgICAgICBpZiAoc3VwcG9ydGVkQ29sb3JTY2hlbWVzLmNvbnRhaW5zKENvbG9yU2NoZW1l
czo6TGlnaHQpKQorICAgICAgICAgICAgICAgIGxpc3QtPmFwcGVuZChjc3NWYWx1ZVBvb2wuY3Jl
YXRlSWRlbnRpZmllclZhbHVlKENTU1ZhbHVlTGlnaHQpKTsKKyAgICAgICAgICAgIGlmIChzdXBw
b3J0ZWRDb2xvclNjaGVtZXMuY29udGFpbnMoQ29sb3JTY2hlbWVzOjpEYXJrKSkKKyAgICAgICAg
ICAgICAgICBsaXN0LT5hcHBlbmQoY3NzVmFsdWVQb29sLmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShD
U1NWYWx1ZURhcmspKTsKKyAgICAgICAgICAgIGlmICghc3VwcG9ydGVkQ29sb3JTY2hlbWVzLmFs
bG93c1RyYW5zZm9ybWF0aW9ucygpKQorICAgICAgICAgICAgICAgIGxpc3QtPmFwcGVuZChjc3NW
YWx1ZVBvb2wuY3JlYXRlSWRlbnRpZmllclZhbHVlKENTU1ZhbHVlT25seSkpOworICAgICAgICAg
ICAgQVNTRVJUKGxpc3QtPmxlbmd0aCgpKTsKKyAgICAgICAgICAgIHJldHVybiBXVEZNb3ZlKGxp
c3QpOworICAgICAgICB9CisjZW5kaWYKKwogICAgICAgICAvKiBJbmRpdmlkdWFsIHByb3BlcnRp
ZXMgbm90IHBhcnQgb2YgdGhlIHNwZWMgKi8KICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eUJhY2tn
cm91bmRSZXBlYXRYOgogICAgICAgICBjYXNlIENTU1Byb3BlcnR5QmFja2dyb3VuZFJlcGVhdFk6
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJvcGVydGllcy5qc29uIGIvU291
cmNlL1dlYkNvcmUvY3NzL0NTU1Byb3BlcnRpZXMuanNvbgppbmRleCAyOGQ4NDgyZDY2Y2Y4NDgz
MWYzNjg3ZjZjYWY4ZDE5OWY0NjIwZTcwLi5hMTU0ZWIwM2ExMDE2ZjM5Y2QyMzhiMGVlNWEyY2Fj
NWY3MmY4Y2ZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJvcGVydGllcy5q
c29uCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcm9wZXJ0aWVzLmpzb24KQEAgLTU3MTIs
NiArNTcxMiwyMiBAQAogICAgICAgICAgICAgfSwKICAgICAgICAgICAgICJzdGF0dXMiOiAibm9u
LXN0YW5kYXJkIgogICAgICAgICB9LAorICAgICAgICAic3VwcG9ydGVkLWNvbG9yLXNjaGVtZXMi
OiB7CisgICAgICAgICAgICAiaW5oZXJpdGVkIjogdHJ1ZSwKKyAgICAgICAgICAgICJ2YWx1ZXMi
OiBbCisgICAgICAgICAgICAgICAgImF1dG8iLAorICAgICAgICAgICAgICAgICJsaWdodCIsCisg
ICAgICAgICAgICAgICAgImRhcmsiLAorICAgICAgICAgICAgICAgICJvbmx5IgorICAgICAgICAg
ICAgXSwKKyAgICAgICAgICAgICJjb2RlZ2VuLXByb3BlcnRpZXMiOiB7CisgICAgICAgICAgICAg
ICAgImNvbnZlcnRlciI6ICJTdXBwb3J0ZWRDb2xvclNjaGVtZXMiLAorICAgICAgICAgICAgICAg
ICJlbmFibGUtaWYiOiAiRU5BQkxFX0RBUktfTU9ERV9DU1MiCisgICAgICAgICAgICB9LAorICAg
ICAgICAgICAgInN0YXR1cyI6IHsKKyAgICAgICAgICAgICAgICAic3RhdHVzIjogIm5vbi1zdGFu
ZGFyZCIKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSwKICAgICAgICAgIm9yZGVyIjogewogICAg
ICAgICAgICAgImNvZGVnZW4tcHJvcGVydGllcyI6IHsKICAgICAgICAgICAgICAgICAiYWxpYXNl
cyI6IFsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NWYWx1ZUtleXdvcmRzLmlu
IGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ZhbHVlS2V5d29yZHMuaW4KaW5kZXggOTBmOTEyYWNl
YjU1YTFhZmRiYWFiMDk1YjYyZmJjNTRhYmIzZDI1NC4uODZiNWU1OTE0ZjQwZTczYWZiMTQ5NTIx
ODQzYTRlYzk3Yzg2MTAxOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ZhbHVl
S2V5d29yZHMuaW4KKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ZhbHVlS2V5d29yZHMuaW4K
QEAgLTEzODQsNiArMTM4NCwxMSBAQCBuby1wcmVmZXJlbmNlCiBsaWdodAogZGFyawogLy8gbm8t
cHJlZmVyZW5jZQorCisvLyBzdXBwb3J0ZWQtY29sb3Itc2NoZW1lcworb25seQorLy8gbGlnaHQK
Ky8vIGRhcmsKICNlbmRpZgogCiAvLyBhdXRvLXJlcGVhdApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvY3NzL1N0eWxlQnVpbGRlckNvbnZlcnRlci5oIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0
eWxlQnVpbGRlckNvbnZlcnRlci5oCmluZGV4IDBlODM4YmI1ZDhkZjAzMzU2NDM4MmQ1NGYyYzMx
OGExZmYxMjM4NzguLmU2MWQxZjU0NzJkNDk5NTBlNWVlMzUzZmE2MDE1OTRhZjQ2Y2YwZDAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZUJ1aWxkZXJDb252ZXJ0ZXIuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVCdWlsZGVyQ29udmVydGVyLmgKQEAgLTc3LDYgKzc3
LDkgQEAgcHVibGljOgogICAgIHRlbXBsYXRlPENTU1Byb3BlcnR5SUQ+IHN0YXRpYyBOaW5lUGll
Y2VJbWFnZSBjb252ZXJ0Qm9yZGVyTWFzayhTdHlsZVJlc29sdmVyJiwgQ1NTVmFsdWUmKTsKICAg
ICB0ZW1wbGF0ZTxDU1NQcm9wZXJ0eUlEPiBzdGF0aWMgUmVmUHRyPFN0eWxlSW1hZ2U+IGNvbnZl
cnRTdHlsZUltYWdlKFN0eWxlUmVzb2x2ZXImLCBDU1NWYWx1ZSYpOwogICAgIHN0YXRpYyBUcmFu
c2Zvcm1PcGVyYXRpb25zIGNvbnZlcnRUcmFuc2Zvcm0oU3R5bGVSZXNvbHZlciYsIGNvbnN0IENT
U1ZhbHVlJik7CisjaWYgRU5BQkxFKERBUktfTU9ERV9DU1MpCisgICAgc3RhdGljIFN0eWxlU3Vw
cG9ydGVkQ29sb3JTY2hlbWVzIGNvbnZlcnRTdXBwb3J0ZWRDb2xvclNjaGVtZXMoU3R5bGVSZXNv
bHZlciYsIGNvbnN0IENTU1ZhbHVlJik7CisjZW5kaWYKICAgICBzdGF0aWMgU3RyaW5nIGNvbnZl
cnRTdHJpbmcoU3R5bGVSZXNvbHZlciYsIGNvbnN0IENTU1ZhbHVlJik7CiAgICAgc3RhdGljIFN0
cmluZyBjb252ZXJ0U3RyaW5nT3JBdXRvKFN0eWxlUmVzb2x2ZXImLCBjb25zdCBDU1NWYWx1ZSYp
OwogICAgIHN0YXRpYyBTdHJpbmcgY29udmVydFN0cmluZ09yTm9uZShTdHlsZVJlc29sdmVyJiwg
Y29uc3QgQ1NTVmFsdWUmKTsKQEAgLTE2NSw2ICsxNjgsMTAgQEAgcHJpdmF0ZToKICAgICBzdGF0
aWMgTGVuZ3RoIHBhcnNlU25hcENvb3JkaW5hdGUoU3R5bGVSZXNvbHZlciYsIGNvbnN0IENTU1Zh
bHVlJik7CiAjZW5kaWYKIAorI2lmIEVOQUJMRShEQVJLX01PREVfQ1NTKQorICAgIHN0YXRpYyB2
b2lkIHVwZGF0ZVN1cHBvcnRlZENvbG9yU2NoZW1lcyhjb25zdCBDU1NQcmltaXRpdmVWYWx1ZSYs
IFN0eWxlU3VwcG9ydGVkQ29sb3JTY2hlbWVzJik7CisjZW5kaWYKKwogICAgIHN0YXRpYyBMZW5n
dGggY29udmVydFRvMTAwUGVyY2VudE1pbnVzTGVuZ3RoKGNvbnN0IExlbmd0aCYpOwogICAgIHRl
bXBsYXRlPENTU1ZhbHVlSUQsIENTU1ZhbHVlSUQ+IHN0YXRpYyBMZW5ndGggY29udmVydFBvc2l0
aW9uQ29tcG9uZW50KFN0eWxlUmVzb2x2ZXImLCBjb25zdCBDU1NQcmltaXRpdmVWYWx1ZSYpOwog
CkBAIC00NTMsNiArNDYwLDQ4IEBAIGlubGluZSBUcmFuc2Zvcm1PcGVyYXRpb25zIFN0eWxlQnVp
bGRlckNvbnZlcnRlcjo6Y29udmVydFRyYW5zZm9ybShTdHlsZVJlc29sdmVyCiAgICAgcmV0dXJu
IG9wZXJhdGlvbnM7CiB9CiAKKyNpZiBFTkFCTEUoREFSS19NT0RFX0NTUykKK2lubGluZSB2b2lk
IFN0eWxlQnVpbGRlckNvbnZlcnRlcjo6dXBkYXRlU3VwcG9ydGVkQ29sb3JTY2hlbWVzKGNvbnN0
IENTU1ByaW1pdGl2ZVZhbHVlJiBwcmltaXRpdmVWYWx1ZSwgU3R5bGVTdXBwb3J0ZWRDb2xvclNj
aGVtZXMmIHN1cHBvcnRlZENvbG9yU2NoZW1lcykKK3sKKyAgICBBU1NFUlQocHJpbWl0aXZlVmFs
dWUuaXNWYWx1ZUlEKCkpOworCisgICAgc3dpdGNoIChwcmltaXRpdmVWYWx1ZS52YWx1ZUlEKCkp
IHsKKyAgICBjYXNlIENTU1ZhbHVlQXV0bzoKKyAgICAgICAgc3VwcG9ydGVkQ29sb3JTY2hlbWVz
ID0gU3R5bGVTdXBwb3J0ZWRDb2xvclNjaGVtZXMoKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2Fz
ZSBDU1NWYWx1ZU9ubHk6CisgICAgICAgIHN1cHBvcnRlZENvbG9yU2NoZW1lcy5zZXRBbGxvd3NU
cmFuc2Zvcm1hdGlvbnMoZmFsc2UpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIENTU1ZhbHVl
TGlnaHQ6CisgICAgICAgIHN1cHBvcnRlZENvbG9yU2NoZW1lcy5hZGQoQ29sb3JTY2hlbWVzOjpM
aWdodCk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQ1NTVmFsdWVEYXJrOgorICAgICAgICBz
dXBwb3J0ZWRDb2xvclNjaGVtZXMuYWRkKENvbG9yU2NoZW1lczo6RGFyayk7CisgICAgICAgIGJy
ZWFrOworICAgIGRlZmF1bHQ6CisgICAgICAgIC8vIFVua25vd24gaWRlbnRpZmllcnMgYXJlIGFs
bG93ZWQgYW5kIGlnbm9yZWQuCisgICAgICAgIGJyZWFrOworICAgIH0KK30KKworaW5saW5lIFN0
eWxlU3VwcG9ydGVkQ29sb3JTY2hlbWVzIFN0eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydFN1
cHBvcnRlZENvbG9yU2NoZW1lcyhTdHlsZVJlc29sdmVyJiwgY29uc3QgQ1NTVmFsdWUmIHZhbHVl
KQoreworICAgIFN0eWxlU3VwcG9ydGVkQ29sb3JTY2hlbWVzIHN1cHBvcnRlZENvbG9yU2NoZW1l
czsKKworICAgIGlmIChpczxDU1NWYWx1ZUxpc3Q+KHZhbHVlKSkgeworICAgICAgICBmb3IgKGF1
dG8mIGN1cnJlbnRWYWx1ZSA6IGRvd25jYXN0PENTU1ZhbHVlTGlzdD4odmFsdWUpKQorICAgICAg
ICAgICAgdXBkYXRlU3VwcG9ydGVkQ29sb3JTY2hlbWVzKGRvd25jYXN0PENTU1ByaW1pdGl2ZVZh
bHVlPihjdXJyZW50VmFsdWUuZ2V0KCkpLCBzdXBwb3J0ZWRDb2xvclNjaGVtZXMpOworICAgIH0g
ZWxzZSBpZiAoaXM8Q1NTUHJpbWl0aXZlVmFsdWU+KHZhbHVlKSkKKyAgICAgICAgdXBkYXRlU3Vw
cG9ydGVkQ29sb3JTY2hlbWVzKGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPih2YWx1ZSksIHN1
cHBvcnRlZENvbG9yU2NoZW1lcyk7CisKKyAgICAvLyBJZiB0aGUgdmFsdWUgd2FzIGp1c3QgIm9u
bHkiLCB0aGF0IGlzIHN5bm9ueW1vdXMgZm9yICJvbmx5IGxpZ2h0Ii4KKyAgICBpZiAoc3VwcG9y
dGVkQ29sb3JTY2hlbWVzLmlzT25seSgpKQorICAgICAgICBzdXBwb3J0ZWRDb2xvclNjaGVtZXMu
YWRkKENvbG9yU2NoZW1lczo6TGlnaHQpOworCisgICAgcmV0dXJuIHN1cHBvcnRlZENvbG9yU2No
ZW1lczsKK30KKyNlbmRpZgorCiBpbmxpbmUgU3RyaW5nIFN0eWxlQnVpbGRlckNvbnZlcnRlcjo6
Y29udmVydFN0cmluZyhTdHlsZVJlc29sdmVyJiwgY29uc3QgQ1NTVmFsdWUmIHZhbHVlKQogewog
ICAgIHJldHVybiBkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4odmFsdWUpLnN0cmluZ1ZhbHVl
KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5jcHAKaW5kZXggNzViMGI4ZDQxYTI5NDRk
YzA4ZTE0YzU1Y2U4MTY4ZjJlYmI4MDFkNy4uMjRiMDZiZWM5MzM3ZTE2YmI4YWI3ZjI0ZGVmOTA5
YTc4YTUyODNiZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmNwcApAQCAtMTg0MSwx
NCArMTg0MSwxNCBAQCBDb2xvciBTdHlsZVJlc29sdmVyOjpjb2xvckZyb21QcmltaXRpdmVWYWx1
ZShjb25zdCBDU1NQcmltaXRpdmVWYWx1ZSYgdmFsdWUsIGJvbwogICAgIGNhc2UgQ1NTVmFsdWVX
ZWJraXRBY3RpdmVsaW5rOgogICAgICAgICByZXR1cm4gZG9jdW1lbnQoKS5hY3RpdmVMaW5rQ29s
b3IoKTsKICAgICBjYXNlIENTU1ZhbHVlV2Via2l0Rm9jdXNSaW5nQ29sb3I6Ci0gICAgICAgIHJl
dHVybiBSZW5kZXJUaGVtZTo6Zm9jdXNSaW5nQ29sb3IoZG9jdW1lbnQoKS5zdHlsZUNvbG9yT3B0
aW9ucygpKTsKKyAgICAgICAgcmV0dXJuIFJlbmRlclRoZW1lOjpmb2N1c1JpbmdDb2xvcihkb2N1
bWVudCgpLnN0eWxlQ29sb3JPcHRpb25zKG1fc3RhdGUuc3R5bGUoKSkpOwogICAgIGNhc2UgQ1NT
VmFsdWVDdXJyZW50Y29sb3I6CiAgICAgICAgIC8vIENvbG9yIGlzIGFuIGluaGVyaXRlZCBwcm9w
ZXJ0eSBzbyBkZXBlbmRpbmcgb24gaXQgZWZmZWN0aXZlbHkgbWFrZXMgdGhlIHByb3BlcnR5IGlu
aGVyaXRlZC4KICAgICAgICAgLy8gRklYTUU6IFNldHRpbmcgdGhlIGZsYWcgYXMgYSBzaWRlIGVm
ZmVjdCBvZiBjYWxsaW5nIHRoaXMgZnVuY3Rpb24gaXMgYSBiaXQgb2JsaXF1ZS4gQ2FuIHdlIGRv
IGJldHRlcj8KICAgICAgICAgbV9zdGF0ZS5zdHlsZSgpLT5zZXRIYXNFeHBsaWNpdGx5SW5oZXJp
dGVkUHJvcGVydGllcygpOwogICAgICAgICByZXR1cm4gbV9zdGF0ZS5zdHlsZSgpLT5jb2xvcigp
OwogICAgIGRlZmF1bHQ6Ci0gICAgICAgIHJldHVybiBTdHlsZUNvbG9yOjpjb2xvckZyb21LZXl3
b3JkKGlkZW50aWZpZXIsIGRvY3VtZW50KCkuc3R5bGVDb2xvck9wdGlvbnMoKSk7CisgICAgICAg
IHJldHVybiBTdHlsZUNvbG9yOjpjb2xvckZyb21LZXl3b3JkKGlkZW50aWZpZXIsIGRvY3VtZW50
KCkuc3R5bGVDb2xvck9wdGlvbnMobV9zdGF0ZS5zdHlsZSgpKSk7CiAgICAgfQogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1Byb3BlcnR5UGFyc2VyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUHJvcGVydHlQYXJzZXIuY3BwCmluZGV4IGQz
YTA0NzdhNzQzMjJmYTI2MmExNjkxMWE3MzE4YjZiNjhiZDdhNzMuLjE1ZTdmZTYwNDVhN2Q0YTRh
ZWUyOTMyYzQ3MjUwYjU4NzE2NDZiZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9w
YXJzZXIvQ1NTUHJvcGVydHlQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJz
ZXIvQ1NTUHJvcGVydHlQYXJzZXIuY3BwCkBAIC0zNzQ3LDcgKzM3NDcsNTEgQEAgc3RhdGljIFJl
ZlB0cjxDU1NWYWx1ZT4gY29uc3VtZVRleHRFbXBoYXNpc1Bvc2l0aW9uKENTU1BhcnNlclRva2Vu
UmFuZ2UmIHJhbmdlKQogICAgICAgICBsaXN0LT5hcHBlbmQoQ1NTVmFsdWVQb29sOjpzaW5nbGV0
b24oKS5jcmVhdGVJZGVudGlmaWVyVmFsdWUobGVmdFJpZ2h0VmFsdWVJRCkpOwogICAgIHJldHVy
biBsaXN0OwogfQotICAgIAorCisjaWYgRU5BQkxFKERBUktfTU9ERV9DU1MpCisKK3N0YXRpYyBS
ZWZQdHI8Q1NTVmFsdWU+IGNvbnN1bWVTdXBwb3J0ZWRDb2xvclNjaGVtZXMoQ1NTUGFyc2VyVG9r
ZW5SYW5nZSYgcmFuZ2UpCit7CisgICAgaWYgKGlzQXV0byhyYW5nZS5wZWVrKCkuaWQoKSkpCisg
ICAgICAgIHJldHVybiBjb25zdW1lSWRlbnQocmFuZ2UpOworCisgICAgVmVjdG9yPENTU1ZhbHVl
SUQsIDM+IGlkZW50aWZpZXJzOworCisgICAgd2hpbGUgKCFyYW5nZS5hdEVuZCgpKSB7CisgICAg
ICAgIGlmIChyYW5nZS5wZWVrKCkudHlwZSgpICE9IElkZW50VG9rZW4pCisgICAgICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKKworICAgICAgICBDU1NWYWx1ZUlEIGlkID0gcmFuZ2UucGVlaygpLmlk
KCk7CisKKyAgICAgICAgc3dpdGNoIChpZCkgeworICAgICAgICBjYXNlIENTU1ZhbHVlQXV0bzoK
KyAgICAgICAgICAgIC8vIEF1dG8gaXMgb25seSBhbGxvd2VkIGFzIGEgc2luZ2xlIHZhbHVlLCBh
bmQgd2FzIGhhbmRsZWQgZWFybGllci4KKyAgICAgICAgICAgIC8vIERvbid0IGFsbG93IGl0IGlu
IHRoZSBsaXN0LgorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICAgICAgY2FzZSBD
U1NWYWx1ZU9ubHk6CisgICAgICAgIGNhc2UgQ1NTVmFsdWVMaWdodDoKKyAgICAgICAgY2FzZSBD
U1NWYWx1ZURhcms6CisgICAgICAgICAgICBpZiAoIWlkZW50aWZpZXJzLmFwcGVuZElmTm90Q29u
dGFpbnMoaWQpKQorICAgICAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICAgICAg
YnJlYWs7CisKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIC8vIFVua25vd24gaWRlbnRp
ZmllcnMgYXJlIGFsbG93ZWQgYW5kIGlnbm9yZWQuCisgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgfQorCisgICAgICAgIHJhbmdlLmNvbnN1bWVJbmNsdWRpbmdXaGl0ZXNwYWNlKCk7CisgICAg
fQorCisgICAgUmVmUHRyPENTU1ZhbHVlTGlzdD4gbGlzdCA9IENTU1ZhbHVlTGlzdDo6Y3JlYXRl
U3BhY2VTZXBhcmF0ZWQoKTsKKyAgICBmb3IgKGF1dG8gaWQgOiBpZGVudGlmaWVycykKKyAgICAg
ICAgbGlzdC0+YXBwZW5kKENTU1ZhbHVlUG9vbDo6c2luZ2xldG9uKCkuY3JlYXRlSWRlbnRpZmll
clZhbHVlKGlkKSk7CisgICAgcmV0dXJuIGxpc3Q7Cit9CisKKyNlbmRpZgorCiAjaWYgRU5BQkxF
KERBU0hCT0FSRF9TVVBQT1JUKQogCiBzdGF0aWMgUmVmUHRyPENTU1ZhbHVlPiBjb25zdW1lV2Vi
a2l0RGFzaGJvYXJkUmVnaW9uKENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlLCBDU1NQYXJzZXJN
b2RlIG1vZGUpCkBAIC00Mjg5LDYgKzQzMzMsMTIgQEAgUmVmUHRyPENTU1ZhbHVlPiBDU1NQcm9w
ZXJ0eVBhcnNlcjo6cGFyc2VTaW5nbGVWYWx1ZShDU1NQcm9wZXJ0eUlEIHByb3BlcnR5LCBDU1MK
ICAgICAgICAgcmV0dXJuIGNvbnN1bWVXZWJraXRBc3BlY3RSYXRpbyhtX3JhbmdlKTsKICAgICBj
YXNlIENTU1Byb3BlcnR5V2Via2l0VGV4dEVtcGhhc2lzUG9zaXRpb246CiAgICAgICAgIHJldHVy
biBjb25zdW1lVGV4dEVtcGhhc2lzUG9zaXRpb24obV9yYW5nZSk7CisjaWYgRU5BQkxFKERBUktf
TU9ERV9DU1MpCisgICAgY2FzZSBDU1NQcm9wZXJ0eVN1cHBvcnRlZENvbG9yU2NoZW1lczoKKyAg
ICAgICAgaWYgKCFSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLmRhcmtN
b2RlQ1NTRW5hYmxlZCgpKQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgIHJl
dHVybiBjb25zdW1lU3VwcG9ydGVkQ29sb3JTY2hlbWVzKG1fcmFuZ2UpOworI2VuZGlmCiAjaWYg
RU5BQkxFKERBU0hCT0FSRF9TVVBQT1JUKQogICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXREYXNo
Ym9hcmRSZWdpb246CiAgICAgICAgIHJldHVybiBjb25zdW1lV2Via2l0RGFzaGJvYXJkUmVnaW9u
KG1fcmFuZ2UsIG1fY29udGV4dC5tb2RlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Eb2N1bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCmluZGV4IDFl
NmJjNGJjNWJhMDNkOWFjZGQ0MTA1NTI4N2U5YjA2MGMyNTQ5YzUuLmYwNzMxNDIxMWQ4NmIxNzIy
NTQ0MWFhMTQ0NTBkYTk5NmMzNWZjNzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9E
b2N1bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcApAQCAtODE3
LDE3ICs4MTcsMTcgQEAgU3RyaW5nIERvY3VtZW50Ojpjb21wYXRNb2RlKCkgY29uc3QKIAogdm9p
ZCBEb2N1bWVudDo6cmVzZXRMaW5rQ29sb3IoKQogewotICAgIG1fbGlua0NvbG9yID0gU3R5bGVD
b2xvcjo6Y29sb3JGcm9tS2V5d29yZChDU1NWYWx1ZVdlYmtpdExpbmssIHN0eWxlQ29sb3JPcHRp
b25zKCkpOworICAgIG1fbGlua0NvbG9yID0gU3R5bGVDb2xvcjo6Y29sb3JGcm9tS2V5d29yZChD
U1NWYWx1ZVdlYmtpdExpbmssIHN0eWxlQ29sb3JPcHRpb25zKG51bGxwdHIpKTsKIH0KIAogdm9p
ZCBEb2N1bWVudDo6cmVzZXRWaXNpdGVkTGlua0NvbG9yKCkKIHsKLSAgICBtX3Zpc2l0ZWRMaW5r
Q29sb3IgPSBTdHlsZUNvbG9yOjpjb2xvckZyb21LZXl3b3JkKENTU1ZhbHVlV2Via2l0TGluaywg
c3R5bGVDb2xvck9wdGlvbnMoKSB8IFN0eWxlQ29sb3I6Ok9wdGlvbnM6OkZvclZpc2l0ZWRMaW5r
KTsKKyAgICBtX3Zpc2l0ZWRMaW5rQ29sb3IgPSBTdHlsZUNvbG9yOjpjb2xvckZyb21LZXl3b3Jk
KENTU1ZhbHVlV2Via2l0TGluaywgc3R5bGVDb2xvck9wdGlvbnMobnVsbHB0cikgfCBTdHlsZUNv
bG9yOjpPcHRpb25zOjpGb3JWaXNpdGVkTGluayk7CiB9CiAKIHZvaWQgRG9jdW1lbnQ6OnJlc2V0
QWN0aXZlTGlua0NvbG9yKCkKIHsKLSAgICBtX2FjdGl2ZUxpbmtDb2xvciA9IFN0eWxlQ29sb3I6
OmNvbG9yRnJvbUtleXdvcmQoQ1NTVmFsdWVXZWJraXRBY3RpdmVsaW5rLCBzdHlsZUNvbG9yT3B0
aW9ucygpKTsKKyAgICBtX2FjdGl2ZUxpbmtDb2xvciA9IFN0eWxlQ29sb3I6OmNvbG9yRnJvbUtl
eXdvcmQoQ1NTVmFsdWVXZWJraXRBY3RpdmVsaW5rLCBzdHlsZUNvbG9yT3B0aW9ucyhudWxscHRy
KSk7CiB9CiAKIERPTUltcGxlbWVudGF0aW9uJiBEb2N1bWVudDo6aW1wbGVtZW50YXRpb24oKQpA
QCAtMzU5MCwxOCArMzU5MCwzNCBAQCBzdGF0aWMgdm9pZCBwcm9jZXNzQ29sb3JTY2hlbWVzKFN0
cmluZ1ZpZXcgY29sb3JTY2hlbWVzLCBjb25zdCBXVEY6OkZ1bmN0aW9uPHZvaQogdm9pZCBEb2N1
bWVudDo6cHJvY2Vzc1N1cHBvcnRlZENvbG9yU2NoZW1lcyhjb25zdCBTdHJpbmcmIGNvbG9yU2No
ZW1lcykKIHsKICAgICBPcHRpb25TZXQ8Q29sb3JTY2hlbWVzPiBzdXBwb3J0ZWRDb2xvclNjaGVt
ZXM7CisgICAgYm9vbCBhbGxvd3NUcmFuc2Zvcm1hdGlvbnMgPSB0cnVlOworICAgIGJvb2wgYXV0
b0VuY291bnRlcmVkID0gZmFsc2U7CisKKyAgICBwcm9jZXNzQ29sb3JTY2hlbWVzKGNvbG9yU2No
ZW1lcywgWyZdKFN0cmluZ1ZpZXcga2V5KSB7CisgICAgICAgIGlmIChlcXVhbExldHRlcnNJZ25v
cmluZ0FTQ0lJQ2FzZShrZXksICJhdXRvIikpIHsKKyAgICAgICAgICAgIHN1cHBvcnRlZENvbG9y
U2NoZW1lcyA9IHsgfTsKKyAgICAgICAgICAgIGFsbG93c1RyYW5zZm9ybWF0aW9ucyA9IHRydWU7
CisgICAgICAgICAgICBhdXRvRW5jb3VudGVyZWQgPSB0cnVlOworICAgICAgICAgICAgcmV0dXJu
OworICAgICAgICB9CisKKyAgICAgICAgaWYgKGF1dG9FbmNvdW50ZXJlZCkKKyAgICAgICAgICAg
IHJldHVybjsKIAotICAgIHByb2Nlc3NDb2xvclNjaGVtZXMoY29sb3JTY2hlbWVzLCBbJnN1cHBv
cnRlZENvbG9yU2NoZW1lc10oU3RyaW5nVmlldyBrZXkpIHsKICAgICAgICAgaWYgKGVxdWFsTGV0
dGVyc0lnbm9yaW5nQVNDSUlDYXNlKGtleSwgImxpZ2h0IikpCiAgICAgICAgICAgICBzdXBwb3J0
ZWRDb2xvclNjaGVtZXMuYWRkKENvbG9yU2NoZW1lczo6TGlnaHQpOwogICAgICAgICBlbHNlIGlm
IChlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShrZXksICJkYXJrIikpCiAgICAgICAgICAg
ICBzdXBwb3J0ZWRDb2xvclNjaGVtZXMuYWRkKENvbG9yU2NoZW1lczo6RGFyayk7CisgICAgICAg
IGVsc2UgaWYgKGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKGtleSwgIm9ubHkiKSkKKyAg
ICAgICAgICAgIGFsbG93c1RyYW5zZm9ybWF0aW9ucyA9IGZhbHNlOwogICAgIH0pOwogCi0gICAg
aWYgKHN1cHBvcnRlZENvbG9yU2NoZW1lcy5pc0VtcHR5KCkpCisgICAgLy8gSWYgdGhlIHZhbHVl
IHdhcyBqdXN0ICJvbmx5IiwgdGhhdCBpcyBzeW5vbnltb3VzIGZvciAib25seSBsaWdodCIuCisg
ICAgaWYgKHN1cHBvcnRlZENvbG9yU2NoZW1lcy5pc0VtcHR5KCkgJiYgIWFsbG93c1RyYW5zZm9y
bWF0aW9ucykKICAgICAgICAgc3VwcG9ydGVkQ29sb3JTY2hlbWVzLmFkZChDb2xvclNjaGVtZXM6
OkxpZ2h0KTsKIAogICAgIG1fc3VwcG9ydGVkQ29sb3JTY2hlbWVzID0gc3VwcG9ydGVkQ29sb3JT
Y2hlbWVzOworICAgIG1fYWxsb3dzQ29sb3JTY2hlbWVUcmFuc2Zvcm1hdGlvbnMgPSBhbGxvd3NU
cmFuc2Zvcm1hdGlvbnM7CiAKICAgICBpZiAoYXV0byogcGFnZSA9IHRoaXMtPnBhZ2UoKSkKICAg
ICAgICAgcGFnZS0+dXBkYXRlU3R5bGVBZnRlckNoYW5nZUluRW52aXJvbm1lbnQoKTsKQEAgLTcy
ODEsMTEgKzcyOTcsMjMgQEAgYm9vbCBEb2N1bWVudDo6dXNlU3lzdGVtQXBwZWFyYW5jZSgpIGNv
bnN0CiAgICAgcmV0dXJuIHVzZVN5c3RlbUFwcGVhcmFuY2U7CiB9CiAKLWJvb2wgRG9jdW1lbnQ6
OnVzZURhcmtBcHBlYXJhbmNlKCkgY29uc3QKK2Jvb2wgRG9jdW1lbnQ6OnVzZURhcmtBcHBlYXJh
bmNlKGNvbnN0IFJlbmRlclN0eWxlKiBzdHlsZSkgY29uc3QKIHsKICNpZiBFTkFCTEUoREFSS19N
T0RFX0NTUykKLSAgICBpZiAobV9zdXBwb3J0ZWRDb2xvclNjaGVtZXMuY29udGFpbnMoQ29sb3JT
Y2hlbWVzOjpEYXJrKSAmJiAhbV9zdXBwb3J0ZWRDb2xvclNjaGVtZXMuY29udGFpbnMoQ29sb3JT
Y2hlbWVzOjpMaWdodCkpCisgICAgT3B0aW9uU2V0PENvbG9yU2NoZW1lcz4gc3VwcG9ydGVkQ29s
b3JTY2hlbWVzOworCisgICAgLy8gVXNlIHRoZSBzdHlsZSdzIHN1cHBvcnRlZCBjb2xvciBzY2hl
bWVzLCBpZiBzdXBwbGllZC4KKyAgICBpZiAoc3R5bGUpCisgICAgICAgIHN1cHBvcnRlZENvbG9y
U2NoZW1lcyA9IHN0eWxlLT5zdXBwb3J0ZWRDb2xvclNjaGVtZXMoKS5jb2xvclNjaGVtZXMoKTsK
KworICAgIC8vIEZhbGxiYWNrIHRvIHRoZSBkb2N1bWVudCdzIHN1cHBvcnRlZCBjb2xvciBzY2hl
bWVzIGlmIHN0eWxlIHdhcyBlbXB0eSAoYXV0bykuCisgICAgaWYgKHN1cHBvcnRlZENvbG9yU2No
ZW1lcy5pc0VtcHR5KCkpCisgICAgICAgIHN1cHBvcnRlZENvbG9yU2NoZW1lcyA9IG1fc3VwcG9y
dGVkQ29sb3JTY2hlbWVzOworCisgICAgaWYgKHN1cHBvcnRlZENvbG9yU2NoZW1lcy5jb250YWlu
cyhDb2xvclNjaGVtZXM6OkRhcmspICYmICFzdXBwb3J0ZWRDb2xvclNjaGVtZXMuY29udGFpbnMo
Q29sb3JTY2hlbWVzOjpMaWdodCkpCiAgICAgICAgIHJldHVybiB0cnVlOworI2Vsc2UKKyAgICBV
TlVTRURfUEFSQU0oc3R5bGUpOwogI2VuZGlmCiAKICAgICBib29sIHBhZ2VVc2VzRGFya0FwcGVh
cmFuY2UgPSBmYWxzZTsKQEAgLTcyOTYsMjEgKzczMjQsMTkgQEAgYm9vbCBEb2N1bWVudDo6dXNl
RGFya0FwcGVhcmFuY2UoKSBjb25zdAogICAgICAgICByZXR1cm4gcGFnZVVzZXNEYXJrQXBwZWFy
YW5jZTsKIAogI2lmIEVOQUJMRShEQVJLX01PREVfQ1NTKQotICAgIGlmIChtX3N1cHBvcnRlZENv
bG9yU2NoZW1lcy5jb250YWlucyhDb2xvclNjaGVtZXM6OkRhcmspKQorICAgIGlmIChzdXBwb3J0
ZWRDb2xvclNjaGVtZXMuY29udGFpbnMoQ29sb3JTY2hlbWVzOjpEYXJrKSkKICAgICAgICAgcmV0
dXJuIHBhZ2VVc2VzRGFya0FwcGVhcmFuY2U7Ci0KLSAgICBBU1NFUlQobV9zdXBwb3J0ZWRDb2xv
clNjaGVtZXMuY29udGFpbnMoQ29sb3JTY2hlbWVzOjpMaWdodCkpOwogI2VuZGlmCiAKICAgICBy
ZXR1cm4gZmFsc2U7CiB9CiAKLU9wdGlvblNldDxTdHlsZUNvbG9yOjpPcHRpb25zPiBEb2N1bWVu
dDo6c3R5bGVDb2xvck9wdGlvbnMoKSBjb25zdAorT3B0aW9uU2V0PFN0eWxlQ29sb3I6Ok9wdGlv
bnM+IERvY3VtZW50OjpzdHlsZUNvbG9yT3B0aW9ucyhjb25zdCBSZW5kZXJTdHlsZSogc3R5bGUp
IGNvbnN0CiB7CiAgICAgT3B0aW9uU2V0PFN0eWxlQ29sb3I6Ok9wdGlvbnM+IG9wdGlvbnM7CiAg
ICAgaWYgKHVzZVN5c3RlbUFwcGVhcmFuY2UoKSkKICAgICAgICAgb3B0aW9ucy5hZGQoU3R5bGVD
b2xvcjo6T3B0aW9uczo6VXNlU3lzdGVtQXBwZWFyYW5jZSk7Ci0gICAgaWYgKHVzZURhcmtBcHBl
YXJhbmNlKCkpCisgICAgaWYgKHVzZURhcmtBcHBlYXJhbmNlKHN0eWxlKSkKICAgICAgICAgb3B0
aW9ucy5hZGQoU3R5bGVDb2xvcjo6T3B0aW9uczo6VXNlRGFya0FwcGVhcmFuY2UpOwogICAgIHJl
dHVybiBvcHRpb25zOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50
LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAppbmRleCA2YTcyNjVhOWIxYmY3MzVk
Y2JlYzkzNGI3N2JjZmZmYTAyZGFkNWNhLi5jZDUzZGJhNjg1YTliMDMwYTM0MjY4MGQ1MmY0MzVi
ZjVkM2M5YjEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaApAQCAtNTc4LDkgKzU3OCw5IEBAIHB1Ymxp
YzoKICAgICBmbG9hdCBkZXZpY2VTY2FsZUZhY3RvcigpIGNvbnN0OwogCiAgICAgV0VCQ09SRV9F
WFBPUlQgYm9vbCB1c2VTeXN0ZW1BcHBlYXJhbmNlKCkgY29uc3Q7Ci0gICAgV0VCQ09SRV9FWFBP
UlQgYm9vbCB1c2VEYXJrQXBwZWFyYW5jZSgpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIGJv
b2wgdXNlRGFya0FwcGVhcmFuY2UoY29uc3QgUmVuZGVyU3R5bGUqKSBjb25zdDsKIAotICAgIE9w
dGlvblNldDxTdHlsZUNvbG9yOjpPcHRpb25zPiBzdHlsZUNvbG9yT3B0aW9ucygpIGNvbnN0Owor
ICAgIE9wdGlvblNldDxTdHlsZUNvbG9yOjpPcHRpb25zPiBzdHlsZUNvbG9yT3B0aW9ucyhjb25z
dCBSZW5kZXJTdHlsZSopIGNvbnN0OwogCiAgICAgV0VCQ09SRV9FWFBPUlQgUmVmPFJhbmdlPiBj
cmVhdGVSYW5nZSgpOwogCkBAIC05MDEsMTEgKzkwMSw2IEBAIHB1YmxpYzoKICAgICB2b2lkIHBy
b2Nlc3NSZWZlcnJlclBvbGljeShjb25zdCBTdHJpbmcmIHBvbGljeSwgUmVmZXJyZXJQb2xpY3lT
b3VyY2UpOwogCiAjaWYgRU5BQkxFKERBUktfTU9ERV9DU1MpCi0gICAgZW51bSBjbGFzcyBDb2xv
clNjaGVtZXMgOiB1aW50OF90IHsKLSAgICAgICAgTGlnaHQgPSAxIDw8IDAsCi0gICAgICAgIERh
cmsgPSAxIDw8IDEKLSAgICB9OwotCiAgICAgdm9pZCBwcm9jZXNzU3VwcG9ydGVkQ29sb3JTY2hl
bWVzKGNvbnN0IFN0cmluZyYgY29sb3JTY2hlbWVzKTsKICNlbmRpZgogCkBAIC0xNzcyLDcgKzE3
NjcsOCBAQCBwcml2YXRlOgogICAgIEhhc2hTZXQ8U1ZHVXNlRWxlbWVudCo+IG1fc3ZnVXNlRWxl
bWVudHM7CiAKICNpZiBFTkFCTEUoREFSS19NT0RFX0NTUykKLSAgICBPcHRpb25TZXQ8Q29sb3JT
Y2hlbWVzPiBtX3N1cHBvcnRlZENvbG9yU2NoZW1lcyB7IENvbG9yU2NoZW1lczo6TGlnaHQgfTsK
KyAgICBPcHRpb25TZXQ8Q29sb3JTY2hlbWVzPiBtX3N1cHBvcnRlZENvbG9yU2NoZW1lczsKKyAg
ICBib29sIG1fYWxsb3dzQ29sb3JTY2hlbWVUcmFuc2Zvcm1hdGlvbnMgeyB0cnVlIH07CiAjZW5k
aWYKIAogI2lmIEVOQUJMRShEQVNIQk9BUkRfU1VQUE9SVCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvY29jb2EvV2ViQ29udGVudFJlYWRlckNvY29hLm1tIGIvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9jb2NvYS9XZWJDb250ZW50UmVhZGVyQ29jb2EubW0KaW5kZXggYWVmZWIx
YWYxZjY5M2MzOTEyYmRmOGQ2OGQzZmQ5ZDVjYzc2NWZlYy4uZDQyMDdiOWNmMWMxY2Q2ODg0NzNk
NGJmMDhiNGVhMjgwMGI3NDZiMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9j
b2NvYS9XZWJDb250ZW50UmVhZGVyQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9jb2NvYS9XZWJDb250ZW50UmVhZGVyQ29jb2EubW0KQEAgLTUwLDYgKzUwLDcgQEAKICNpbXBv
cnQgIk1JTUVUeXBlUmVnaXN0cnkuaCIKICNpbXBvcnQgIlBhZ2UuaCIKICNpbXBvcnQgIlB1Ymxp
Y1VSTE1hbmFnZXIuaCIKKyNpbXBvcnQgIlJlbmRlclZpZXcuaCIKICNpbXBvcnQgIlJ1bnRpbWVF
bmFibGVkRmVhdHVyZXMuaCIKICNpbXBvcnQgIlNlcmlhbGl6ZWRBdHRhY2htZW50RGF0YS5oIgog
I2ltcG9ydCAiU2V0dGluZ3MuaCIKQEAgLTEzMyw3ICsxMzQsOSBAQCBzdGF0aWMgRnJhZ21lbnRB
bmRSZXNvdXJjZXMgY3JlYXRlRnJhZ21lbnQoRnJhbWUmIGZyYW1lLCBOU0F0dHJpYnV0ZWRTdHJp
bmcgKnN0cgogICAgIERvY3VtZW50JiBkb2N1bWVudCA9ICpmcmFtZS5kb2N1bWVudCgpOwogCiAj
aWYgUExBVEZPUk0oTUFDKQotICAgIExvY2FsRGVmYXVsdFN5c3RlbUFwcGVhcmFuY2UgbG9jYWxB
cHBlYXJhbmNlKGRvY3VtZW50LnVzZURhcmtBcHBlYXJhbmNlKCkpOworICAgIGF1dG8qIHZpZXcg
PSBmcmFtZS52aWV3KCk7CisgICAgYXV0byogcmVuZGVyVmlldyA9IHZpZXcgPyB2aWV3LT5yZW5k
ZXJWaWV3KCkgOiBudWxscHRyOworICAgIExvY2FsRGVmYXVsdFN5c3RlbUFwcGVhcmFuY2UgbG9j
YWxBcHBlYXJhbmNlKHJlbmRlclZpZXcgPyByZW5kZXJWaWV3LT51c2VEYXJrQXBwZWFyYW5jZSgp
IDogZmFsc2UpOwogI2VuZGlmCiAKICAgICBOU0FycmF5ICpzdWJyZXNvdXJjZXMgPSBuaWw7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250
ZXh0MkQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29u
dGV4dDJELmNwcAppbmRleCBkMTVkZWM0NjBlZDc1NDhiYjU3NmMxNzk1MTYzOWQ5YTI4NzE2MDM3
Li5kYTFjODBmZDJmZDgxMTBkOWY1OGM3MzIxM2JkYzgzYmViZDAyZjdmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5j
cHAKQEAgLTg2LDcgKzg2LDcgQEAgdm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmRyYXdG
b2N1c0lmTmVlZGVkSW50ZXJuYWwoY29uc3QgUGF0aCYgcGF0aCwgRWxlbWUKICAgICBhdXRvKiBj
b250ZXh0ID0gZHJhd2luZ0NvbnRleHQoKTsKICAgICBpZiAoIWVsZW1lbnQuZm9jdXNlZCgpIHx8
ICFzdGF0ZSgpLmhhc0ludmVydGlibGVUcmFuc2Zvcm0gfHwgcGF0aC5pc0VtcHR5KCkgfHwgIWVs
ZW1lbnQuaXNEZXNjZW5kYW50T2YoY2FudmFzKCkpIHx8ICFjb250ZXh0KQogICAgICAgICByZXR1
cm47Ci0gICAgY29udGV4dC0+ZHJhd0ZvY3VzUmluZyhwYXRoLCAxLCAxLCBSZW5kZXJUaGVtZTo6
Zm9jdXNSaW5nQ29sb3IoZWxlbWVudC5kb2N1bWVudCgpLnN0eWxlQ29sb3JPcHRpb25zKCkpKTsK
KyAgICBjb250ZXh0LT5kcmF3Rm9jdXNSaW5nKHBhdGgsIDEsIDEsIFJlbmRlclRoZW1lOjpmb2N1
c1JpbmdDb2xvcihlbGVtZW50LmRvY3VtZW50KCkuc3R5bGVDb2xvck9wdGlvbnMoY2FudmFzKCku
Y29tcHV0ZWRTdHlsZSgpKSkpOwogfQogCiBTdHJpbmcgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJE
Ojpmb250KCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JPdmVybGF5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JPdmVy
bGF5LmNwcAppbmRleCBkNWRlZjkwZjE2Zjg4MmY4MTRhNmJjZDg2NzViNzhjNjRkZDRiOTFjLi5k
ZWM3MWU1ZmU4NDAxMmQzOWIwMDc0ODk2ODcxMTQwYWFkMDg2MTY1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yT3ZlcmxheS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvck92ZXJsYXkuY3BwCkBAIC0xODAsMTIgKzE4MCwxMyBA
QCB2b2lkIEluc3BlY3Rvck92ZXJsYXk6OnBhaW50KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkK
ICAgICBpZiAoIXNob3VsZFNob3dPdmVybGF5KCkpCiAgICAgICAgIHJldHVybjsKIAorICAgIEdy
YXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcihjb250ZXh0KTsKKyAgICBGcmFtZVZp
ZXcqIHZpZXcgPSBvdmVybGF5UGFnZSgpLT5tYWluRnJhbWUoKS52aWV3KCk7CisKICNpZiBQTEFU
Rk9STShNQUMpCi0gICAgTG9jYWxEZWZhdWx0U3lzdGVtQXBwZWFyYW5jZSBsb2NhbEFwcGVhcmFu
Y2UobV9wYWdlLm1haW5GcmFtZSgpLmRvY3VtZW50KCktPnVzZURhcmtBcHBlYXJhbmNlKCkpOwor
ICAgIExvY2FsRGVmYXVsdFN5c3RlbUFwcGVhcmFuY2UgbG9jYWxBcHBlYXJhbmNlKHZpZXctPnJl
bmRlclZpZXcoKS0+dXNlRGFya0FwcGVhcmFuY2UoKSk7CiAjZW5kaWYKIAotICAgIEdyYXBoaWNz
Q29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcihjb250ZXh0KTsKLSAgICBGcmFtZVZpZXcqIHZp
ZXcgPSBvdmVybGF5UGFnZSgpLT5tYWluRnJhbWUoKS52aWV3KCk7CiAgICAgdmlldy0+dXBkYXRl
TGF5b3V0QW5kU3R5bGVJZk5lZWRlZFJlY3Vyc2l2ZSgpOwogICAgIHZpZXctPnBhaW50KGNvbnRl
eHQsIEludFJlY3QoMCwgMCwgdmlldy0+d2lkdGgoKSwgdmlldy0+aGVpZ2h0KCkpKTsKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvRnJhbWVWaWV3LmNwcAppbmRleCAzZTYyNDZhNTU0ZTY5N2E2ODViZjdmMmI0ZjBi
NTg1MWU4NTcwNzViLi4yMGQ3NjE1ZmVmMDA1ZGFiMzhkNzQ0YzMyYjlmMTZlY2JiZDEyYjlhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCkBAIC0yMDQ2LDkgKzIwNDYsNyBAQCBib29sIEZy
YW1lVmlldzo6c2hvdWxkU2V0Q3Vyc29yKCkgY29uc3QKIAogYm9vbCBGcmFtZVZpZXc6OnVzZURh
cmtBcHBlYXJhbmNlKCkgY29uc3QKIHsKLSAgICBBU1NFUlQoZnJhbWUoKS5kb2N1bWVudCgpKTsK
LSAgICBhdXRvJiBkb2N1bWVudCA9ICpmcmFtZSgpLmRvY3VtZW50KCk7Ci0gICAgcmV0dXJuIGRv
Y3VtZW50LnVzZURhcmtBcHBlYXJhbmNlKCk7CisgICAgcmV0dXJuIHJlbmRlclZpZXcoKS0+dXNl
RGFya0FwcGVhcmFuY2UoKTsKIH0KIAogYm9vbCBGcmFtZVZpZXc6OnNjcm9sbENvbnRlbnRzRmFz
dFBhdGgoY29uc3QgSW50U2l6ZSYgc2Nyb2xsRGVsdGEsIGNvbnN0IEludFJlY3QmIHJlY3RUb1Nj
cm9sbCwgY29uc3QgSW50UmVjdCYgY2xpcFJlY3QpCkBAIC0zOTExLDggKzM5MDksNyBAQCB2b2lk
IEZyYW1lVmlldzo6cGFpbnRTY3JvbGxDb3JuZXIoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBj
b25zdCBJbnRSZWN0JiBjb3JuZQogI2lmIFBMQVRGT1JNKE1BQykKICAgICAvLyBJZiBkYXJrIGFw
cGVhcmFuY2UgaXMgdXNlZCBvciB0aGUgb3ZlcmxheSBzdHlsZSBpcyBsaWdodCAoYmVjYXVzZSBv
ZiBhIGRhcmsgcGFnZSBiYWNrZ3JvdW5kKSwgc2V0IHRoZSBkYXJrIGFwcHBlYXJhbmNlLgogICAg
IC8vIEtlZXAgdGhpcyBpbiBzeW5jIHdpdGggU2Nyb2xsQW5pbWF0b3JNYWMncyBlZmZlY3RpdmVB
cHBlYXJhbmNlRm9yU2Nyb2xsZXJJbXA6LgotICAgIGF1dG8qIGRvY3VtZW50ID0gZnJhbWUoKS5k
b2N1bWVudCgpOwotICAgIGJvb2wgdXNlRGFya0FwcGVhcmFuY2UgPSAoZG9jdW1lbnQgJiYgZG9j
dW1lbnQtPnVzZURhcmtBcHBlYXJhbmNlKCkpIHx8IHNjcm9sbGJhck92ZXJsYXlTdHlsZSgpID09
IFdlYkNvcmU6OlNjcm9sbGJhck92ZXJsYXlTdHlsZUxpZ2h0OworICAgIGJvb2wgdXNlRGFya0Fw
cGVhcmFuY2UgPSByZW5kZXJWaWV3KCktPnVzZURhcmtBcHBlYXJhbmNlKCkgfHwgc2Nyb2xsYmFy
T3ZlcmxheVN0eWxlKCkgPT0gV2ViQ29yZTo6U2Nyb2xsYmFyT3ZlcmxheVN0eWxlTGlnaHQ7CiAg
ICAgTG9jYWxEZWZhdWx0U3lzdGVtQXBwZWFyYW5jZSBsb2NhbEFwcGVhcmFuY2UodXNlRGFya0Fw
cGVhcmFuY2UpOwogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21hYy9EcmFnSW1hZ2VNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvRHJhZ0lt
YWdlTWFjLm1tCmluZGV4IDExY2RhMjRkMGM5NmE3MWFjOGQxYjIyMjI1MWFjZDllMzNlOGYyMTAu
LjljMzBmNzljODRkM2M3ZDg2NWQ0MTE1NTM5MTM2N2M4ZjQ0NGE2ZGEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9EcmFnSW1hZ2VNYWMubW0KKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWFjL0RyYWdJbWFnZU1hYy5tbQpAQCAtMzAwLDcgKzMwMCw3IEBAIERy
YWdJbWFnZVJlZiBjcmVhdGVEcmFnSW1hZ2VGb3JMaW5rKEVsZW1lbnQmIGVsZW1lbnQsIFVSTCYg
dXJsLCBjb25zdCBTdHJpbmcmIHRpCiB7CiAgICAgTGlua0ltYWdlTGF5b3V0IGxheW91dCh1cmws
IHRpdGxlKTsKIAotICAgIExvY2FsRGVmYXVsdFN5c3RlbUFwcGVhcmFuY2UgbG9jYWxBcHBlYXJh
bmNlKGVsZW1lbnQuZG9jdW1lbnQoKS51c2VEYXJrQXBwZWFyYW5jZSgpKTsKKyAgICBMb2NhbERl
ZmF1bHRTeXN0ZW1BcHBlYXJhbmNlIGxvY2FsQXBwZWFyYW5jZShlbGVtZW50LmRvY3VtZW50KCku
dXNlRGFya0FwcGVhcmFuY2UoZWxlbWVudC5jb21wdXRlZFN0eWxlKCkpKTsKIAogICAgIGF1dG8g
aW1hZ2VTaXplID0gbGF5b3V0LmJvdW5kaW5nUmVjdC5zaXplKCk7CiAjaWYgX19NQUNfT1NfWF9W
RVJTSU9OX01JTl9SRVFVSVJFRCA8IDEwMTMwMApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL0lubGluZUZsb3dCb3guY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lu
bGluZUZsb3dCb3guY3BwCmluZGV4IGQ3NDU4MTE4YTJiODVlMTQyYzNkZDA1NWFhZWRjODJjZGZm
ZTVjODUuLjAzZTQxZTcxNTkyMDBhYWNmMmNmODk4YmQyYjJmOWMyODYwNmFiOTUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVGbG93Qm94LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lRmxvd0JveC5jcHAKQEAgLTEzNzIsNyArMTM3Miw3
IEBAIHZvaWQgSW5saW5lRmxvd0JveDo6cGFpbnRCb3hEZWNvcmF0aW9ucyhQYWludEluZm8mIHBh
aW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQmCiAgICAgQ29sb3IgY29sb3IgPSBsaW5lU3R5bGUu
dmlzaXRlZERlcGVuZGVudENvbG9yKENTU1Byb3BlcnR5QmFja2dyb3VuZENvbG9yKTsKIAogICAg
IENvbXBvc2l0ZU9wZXJhdG9yIGNvbXBvc2l0ZU9wID0gQ29tcG9zaXRlU291cmNlT3ZlcjsKLSAg
ICBpZiAocmVuZGVyZXIoKS5kb2N1bWVudCgpLnNldHRpbmdzKCkucHVuY2hPdXRXaGl0ZUJhY2tn
cm91bmRzSW5EYXJrTW9kZSgpICYmIENvbG9yOjppc1doaXRlQ29sb3IoY29sb3IpICYmIHJlbmRl
cmVyKCkudGhlbWUoKS51c2luZ0RhcmtBcHBlYXJhbmNlKHJlbmRlcmVyKCkpKQorICAgIGlmIChy
ZW5kZXJlcigpLmRvY3VtZW50KCkuc2V0dGluZ3MoKS5wdW5jaE91dFdoaXRlQmFja2dyb3VuZHNJ
bkRhcmtNb2RlKCkgJiYgQ29sb3I6OmlzV2hpdGVDb2xvcihjb2xvcikgJiYgcmVuZGVyZXIoKS51
c2VEYXJrQXBwZWFyYW5jZSgpKQogICAgICAgICBjb21wb3NpdGVPcCA9IENvbXBvc2l0ZURlc3Rp
bmF0aW9uT3V0OwogCiAgICAgY29sb3IgPSBsaW5lU3R5bGUuY29sb3JCeUFwcGx5aW5nQ29sb3JG
aWx0ZXIoY29sb3IpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGlu
ZVRleHRCb3guY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZVRleHRCb3guY3Bw
CmluZGV4IDUwMzllMmFhYWNlYjE5NTkzYmU5NDk3ZTllZTJiZjA3OTNmNzk5NzMuLjA4ZWIwMzk3
NmMyZTE2YmQ0OTlhNzA2ZjBiMGIxODQ5NTU2YzI5YWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9JbmxpbmVUZXh0Qm94LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvSW5saW5lVGV4dEJveC5jcHAKQEAgLTcxNiw3ICs3MTYsNyBAQCB2b2lkIElubGluZVRl
eHRCb3g6OnBhaW50UGxhdGZvcm1Eb2N1bWVudE1hcmtlcihHcmFwaGljc0NvbnRleHQmIGNvbnRl
eHQsIGNvbnN0CiAgICAgYXV0byBib3VuZHMgPSBjYWxjdWxhdGVEb2N1bWVudE1hcmtlckJvdW5k
cyhtYXJrZWRUZXh0KTsKIAogICAgIGF1dG8gbGluZVN0eWxlRm9yTWFya2VkVGV4dFR5cGUgPSBb
Jl0oKSAtPiBEb2N1bWVudE1hcmtlckxpbmVTdHlsZSB7Ci0gICAgICAgIGJvb2wgc2hvdWxkVXNl
RGFya0FwcGVhcmFuY2UgPSByZW5kZXJlcigpLmRvY3VtZW50KCkudXNlRGFya0FwcGVhcmFuY2Uo
KTsKKyAgICAgICAgYm9vbCBzaG91bGRVc2VEYXJrQXBwZWFyYW5jZSA9IHJlbmRlcmVyKCkudXNl
RGFya0FwcGVhcmFuY2UoKTsKICAgICAgICAgc3dpdGNoIChtYXJrZWRUZXh0LnR5cGUpIHsKICAg
ICAgICAgY2FzZSBNYXJrZWRUZXh0OjpTcGVsbGluZ0Vycm9yOgogICAgICAgICAgICAgcmV0dXJu
IHsgRG9jdW1lbnRNYXJrZXJMaW5lU3R5bGU6Ok1vZGU6OlNwZWxsaW5nLCBzaG91bGRVc2VEYXJr
QXBwZWFyYW5jZSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckJveC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNwcAppbmRleCBj
YTZlN2MxNDVmYmZlMjdlMDc0Y2IxMWZjZTM4YTIyODM2MDAzMDYwLi4wZjEyYWQ4MGI5NGQwYWU0
ZWYzMmUyYjM0MTIwYWUyOTEzOWNhN2ZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyQm94LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
Qm94LmNwcApAQCAtMTIwNyw3ICsxMjA3LDcgQEAgdm9pZCBSZW5kZXJCb3g6OnBhaW50Um9vdEJv
eEZpbGxMYXllcnMoY29uc3QgUGFpbnRJbmZvJiBwYWludEluZm8pCiAgICAgYXV0byBjb2xvciA9
IHN0eWxlLnZpc2l0ZWREZXBlbmRlbnRDb2xvcihDU1NQcm9wZXJ0eUJhY2tncm91bmRDb2xvcik7
CiAKICAgICBDb21wb3NpdGVPcGVyYXRvciBjb21wb3NpdGVPcCA9IENvbXBvc2l0ZVNvdXJjZU92
ZXI7Ci0gICAgaWYgKGRvY3VtZW50KCkuc2V0dGluZ3MoKS5wdW5jaE91dFdoaXRlQmFja2dyb3Vu
ZHNJbkRhcmtNb2RlKCkgJiYgQ29sb3I6OmlzV2hpdGVDb2xvcihjb2xvcikgJiYgdGhlbWUoKS51
c2luZ0RhcmtBcHBlYXJhbmNlKCp0aGlzKSkKKyAgICBpZiAoZG9jdW1lbnQoKS5zZXR0aW5ncygp
LnB1bmNoT3V0V2hpdGVCYWNrZ3JvdW5kc0luRGFya01vZGUoKSAmJiBDb2xvcjo6aXNXaGl0ZUNv
bG9yKGNvbG9yKSAmJiB1c2VEYXJrQXBwZWFyYW5jZSgpKQogICAgICAgICBjb21wb3NpdGVPcCA9
IENvbXBvc2l0ZURlc3RpbmF0aW9uT3V0OwogCiAgICAgcGFpbnRGaWxsTGF5ZXJzKHBhaW50SW5m
bywgc3R5bGUuY29sb3JCeUFwcGx5aW5nQ29sb3JGaWx0ZXIoY29sb3IpLCBzdHlsZS5iYWNrZ3Jv
dW5kTGF5ZXJzKCksIHZpZXcoKS5iYWNrZ3JvdW5kUmVjdCgpLCBCYWNrZ3JvdW5kQmxlZWROb25l
LCBjb21wb3NpdGVPcCwgcm9vdEJhY2tncm91bmRSZW5kZXJlcik7CkBAIC0xMzQxLDcgKzEzNDEs
NyBAQCB2b2lkIFJlbmRlckJveDo6cGFpbnRCYWNrZ3JvdW5kKGNvbnN0IFBhaW50SW5mbyYgcGFp
bnRJbmZvLCBjb25zdCBMYXlvdXRSZWN0JiBwYQogICAgIENvbG9yIGJhY2tncm91bmRDb2xvciA9
IHN0eWxlKCkudmlzaXRlZERlcGVuZGVudENvbG9yKENTU1Byb3BlcnR5QmFja2dyb3VuZENvbG9y
KTsKIAogICAgIENvbXBvc2l0ZU9wZXJhdG9yIGNvbXBvc2l0ZU9wID0gQ29tcG9zaXRlU291cmNl
T3ZlcjsKLSAgICBpZiAoZG9jdW1lbnQoKS5zZXR0aW5ncygpLnB1bmNoT3V0V2hpdGVCYWNrZ3Jv
dW5kc0luRGFya01vZGUoKSAmJiBDb2xvcjo6aXNXaGl0ZUNvbG9yKGJhY2tncm91bmRDb2xvcikg
JiYgdGhlbWUoKS51c2luZ0RhcmtBcHBlYXJhbmNlKCp0aGlzKSkKKyAgICBpZiAoZG9jdW1lbnQo
KS5zZXR0aW5ncygpLnB1bmNoT3V0V2hpdGVCYWNrZ3JvdW5kc0luRGFya01vZGUoKSAmJiBDb2xv
cjo6aXNXaGl0ZUNvbG9yKGJhY2tncm91bmRDb2xvcikgJiYgdXNlRGFya0FwcGVhcmFuY2UoKSkK
ICAgICAgICAgY29tcG9zaXRlT3AgPSBDb21wb3NpdGVEZXN0aW5hdGlvbk91dDsKIAogICAgIHBh
aW50RmlsbExheWVycyhwYWludEluZm8sIHN0eWxlKCkuY29sb3JCeUFwcGx5aW5nQ29sb3JGaWx0
ZXIoYmFja2dyb3VuZENvbG9yKSwgc3R5bGUoKS5iYWNrZ3JvdW5kTGF5ZXJzKCksIHBhaW50UmVj
dCwgYmxlZWRBdm9pZGFuY2UsIGNvbXBvc2l0ZU9wKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJFbGVtZW50LmNwcAppbmRleCBiZjk3YzA4MjI1Y2JhOTY4MjcxMjMyOGFkNThlOTYw
NzM4MDEzOWEwLi45MDhiODVhODhkNTRiOTM2YjcxNWFiOWFhNjQzMTY3NDQ0MzNkYjQxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVsZW1lbnQuY3BwCkBAIC0xMzc0LDggKzEz
NzQsOCBAQCBDb2xvciBSZW5kZXJFbGVtZW50OjpzZWxlY3Rpb25Db2xvcihDU1NQcm9wZXJ0eUlE
IGNvbG9yUHJvcGVydHkpIGNvbnN0CiAgICAgfQogCiAgICAgaWYgKGZyYW1lKCkuc2VsZWN0aW9u
KCkuaXNGb2N1c2VkQW5kQWN0aXZlKCkpCi0gICAgICAgIHJldHVybiB0aGVtZSgpLmFjdGl2ZVNl
bGVjdGlvbkZvcmVncm91bmRDb2xvcihkb2N1bWVudCgpLnN0eWxlQ29sb3JPcHRpb25zKCkpOwot
ICAgIHJldHVybiB0aGVtZSgpLmluYWN0aXZlU2VsZWN0aW9uRm9yZWdyb3VuZENvbG9yKGRvY3Vt
ZW50KCkuc3R5bGVDb2xvck9wdGlvbnMoKSk7CisgICAgICAgIHJldHVybiB0aGVtZSgpLmFjdGl2
ZVNlbGVjdGlvbkZvcmVncm91bmRDb2xvcihzdHlsZUNvbG9yT3B0aW9ucygpKTsKKyAgICByZXR1
cm4gdGhlbWUoKS5pbmFjdGl2ZVNlbGVjdGlvbkZvcmVncm91bmRDb2xvcihzdHlsZUNvbG9yT3B0
aW9ucygpKTsKIH0KIAogc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBSZW5kZXJFbGVtZW50
OjpzZWxlY3Rpb25Qc2V1ZG9TdHlsZSgpIGNvbnN0CkBAIC0xNDA5LDE1ICsxNDA5LDE1IEBAIENv
bG9yIFJlbmRlckVsZW1lbnQ6OnNlbGVjdGlvbkJhY2tncm91bmRDb2xvcigpIGNvbnN0CiAgICAg
ICAgIHJldHVybiBDb2xvcigpOwogCiAgICAgaWYgKGZyYW1lKCkuc2VsZWN0aW9uKCkuc2hvdWxk
U2hvd0Jsb2NrQ3Vyc29yKCkgJiYgZnJhbWUoKS5zZWxlY3Rpb24oKS5pc0NhcmV0KCkpCi0gICAg
ICAgIHJldHVybiB0aGVtZSgpLnRyYW5zZm9ybVNlbGVjdGlvbkJhY2tncm91bmRDb2xvcihzdHls
ZSgpLnZpc2l0ZWREZXBlbmRlbnRDb2xvcldpdGhDb2xvckZpbHRlcihDU1NQcm9wZXJ0eUNvbG9y
KSwgZG9jdW1lbnQoKS5zdHlsZUNvbG9yT3B0aW9ucygpKTsKKyAgICAgICAgcmV0dXJuIHRoZW1l
KCkudHJhbnNmb3JtU2VsZWN0aW9uQmFja2dyb3VuZENvbG9yKHN0eWxlKCkudmlzaXRlZERlcGVu
ZGVudENvbG9yV2l0aENvbG9yRmlsdGVyKENTU1Byb3BlcnR5Q29sb3IpLCBzdHlsZUNvbG9yT3B0
aW9ucygpKTsKIAogICAgIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4gcHNldWRvU3R5bGUg
PSBzZWxlY3Rpb25Qc2V1ZG9TdHlsZSgpOwogICAgIGlmIChwc2V1ZG9TdHlsZSAmJiBwc2V1ZG9T
dHlsZS0+dmlzaXRlZERlcGVuZGVudENvbG9yV2l0aENvbG9yRmlsdGVyKENTU1Byb3BlcnR5QmFj
a2dyb3VuZENvbG9yKS5pc1ZhbGlkKCkpCi0gICAgICAgIHJldHVybiB0aGVtZSgpLnRyYW5zZm9y
bVNlbGVjdGlvbkJhY2tncm91bmRDb2xvcihwc2V1ZG9TdHlsZS0+dmlzaXRlZERlcGVuZGVudENv
bG9yV2l0aENvbG9yRmlsdGVyKENTU1Byb3BlcnR5QmFja2dyb3VuZENvbG9yKSwgZG9jdW1lbnQo
KS5zdHlsZUNvbG9yT3B0aW9ucygpKTsKKyAgICAgICAgcmV0dXJuIHRoZW1lKCkudHJhbnNmb3Jt
U2VsZWN0aW9uQmFja2dyb3VuZENvbG9yKHBzZXVkb1N0eWxlLT52aXNpdGVkRGVwZW5kZW50Q29s
b3JXaXRoQ29sb3JGaWx0ZXIoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQ29sb3IpLCBzdHlsZUNvbG9y
T3B0aW9ucygpKTsKIAogICAgIGlmIChmcmFtZSgpLnNlbGVjdGlvbigpLmlzRm9jdXNlZEFuZEFj
dGl2ZSgpKQotICAgICAgICByZXR1cm4gdGhlbWUoKS5hY3RpdmVTZWxlY3Rpb25CYWNrZ3JvdW5k
Q29sb3IoZG9jdW1lbnQoKS5zdHlsZUNvbG9yT3B0aW9ucygpKTsKLSAgICByZXR1cm4gdGhlbWUo
KS5pbmFjdGl2ZVNlbGVjdGlvbkJhY2tncm91bmRDb2xvcihkb2N1bWVudCgpLnN0eWxlQ29sb3JP
cHRpb25zKCkpOworICAgICAgICByZXR1cm4gdGhlbWUoKS5hY3RpdmVTZWxlY3Rpb25CYWNrZ3Jv
dW5kQ29sb3Ioc3R5bGVDb2xvck9wdGlvbnMoKSk7CisgICAgcmV0dXJuIHRoZW1lKCkuaW5hY3Rp
dmVTZWxlY3Rpb25CYWNrZ3JvdW5kQ29sb3Ioc3R5bGVDb2xvck9wdGlvbnMoKSk7CiB9CiAKIGJv
b2wgUmVuZGVyRWxlbWVudDo6Z2V0TGVhZGluZ0Nvcm5lcihGbG9hdFBvaW50JiBwb2ludCwgYm9v
bCYgaW5zaWRlRml4ZWQpIGNvbnN0CkBAIC0xODM4LDkgKzE4MzgsOSBAQCB2b2lkIFJlbmRlckVs
ZW1lbnQ6OnBhaW50Rm9jdXNSaW5nKFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBSZW5kZXJT
dHlsZSYgc3R5bAogICAgICAgICAgICAgZm9yIChhdXRvIHJlY3QgOiBwaXhlbFNuYXBwZWRGb2N1
c1JpbmdSZWN0cykKICAgICAgICAgICAgICAgICBwYXRoLmFkZFJlY3QocmVjdCk7CiAgICAgICAg
IH0KLSAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQoKS5kcmF3Rm9jdXNSaW5nKHBhdGgsIHBhZ2Uo
KS5mb2N1c0NvbnRyb2xsZXIoKS50aW1lU2luY2VGb2N1c1dhc1NldCgpLnNlY29uZHMoKSwgbmVl
ZHNSZXBhaW50LCBSZW5kZXJUaGVtZTo6Zm9jdXNSaW5nQ29sb3IoZG9jdW1lbnQoKS5zdHlsZUNv
bG9yT3B0aW9ucygpKSk7CisgICAgICAgIHBhaW50SW5mby5jb250ZXh0KCkuZHJhd0ZvY3VzUmlu
ZyhwYXRoLCBwYWdlKCkuZm9jdXNDb250cm9sbGVyKCkudGltZVNpbmNlRm9jdXNXYXNTZXQoKS5z
ZWNvbmRzKCksIG5lZWRzUmVwYWludCwgUmVuZGVyVGhlbWU6OmZvY3VzUmluZ0NvbG9yKHN0eWxl
Q29sb3JPcHRpb25zKCkpKTsKICAgICB9IGVsc2UKLSAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQo
KS5kcmF3Rm9jdXNSaW5nKHBpeGVsU25hcHBlZEZvY3VzUmluZ1JlY3RzLCBwYWdlKCkuZm9jdXND
b250cm9sbGVyKCkudGltZVNpbmNlRm9jdXNXYXNTZXQoKS5zZWNvbmRzKCksIG5lZWRzUmVwYWlu
dCwgUmVuZGVyVGhlbWU6OmZvY3VzUmluZ0NvbG9yKGRvY3VtZW50KCkuc3R5bGVDb2xvck9wdGlv
bnMoKSkpOworICAgICAgICBwYWludEluZm8uY29udGV4dCgpLmRyYXdGb2N1c1JpbmcocGl4ZWxT
bmFwcGVkRm9jdXNSaW5nUmVjdHMsIHBhZ2UoKS5mb2N1c0NvbnRyb2xsZXIoKS50aW1lU2luY2VG
b2N1c1dhc1NldCgpLnNlY29uZHMoKSwgbmVlZHNSZXBhaW50LCBSZW5kZXJUaGVtZTo6Zm9jdXNS
aW5nQ29sb3Ioc3R5bGVDb2xvck9wdGlvbnMoKSkpOwogICAgIGlmIChuZWVkc1JlcGFpbnQpCiAg
ICAgICAgIHBhZ2UoKS5mb2N1c0NvbnRyb2xsZXIoKS5zZXRGb2N1c2VkRWxlbWVudE5lZWRzUmVw
YWludCgpOwogI2Vsc2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJJbWFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2UuY3BwCmlu
ZGV4IDgxMDllYmZmZDIxZWQ3YzNlNGRhNmFmMjhkOGI5ZDBjMzUwYTM5MTMuLmEwZDJiN2I0N2U2
YzI0NzdmODcxNjE0Mzk5MGUyZGQzZDY1MTdhOWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJJbWFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckltYWdlLmNwcApAQCAtNTc0LDcgKzU3NCw3IEBAIHZvaWQgUmVuZGVySW1hZ2U6OnBh
aW50QXJlYUVsZW1lbnRGb2N1c1JpbmcoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91
dFBvCiAKICNpZiBQTEFURk9STShNQUMpCiAgICAgYm9vbCBuZWVkc1JlcGFpbnQ7Ci0gICAgcGFp
bnRJbmZvLmNvbnRleHQoKS5kcmF3Rm9jdXNSaW5nKHBhdGgsIHBhZ2UoKS5mb2N1c0NvbnRyb2xs
ZXIoKS50aW1lU2luY2VGb2N1c1dhc1NldCgpLnNlY29uZHMoKSwgbmVlZHNSZXBhaW50LCBSZW5k
ZXJUaGVtZTo6Zm9jdXNSaW5nQ29sb3IoZG9jdW1lbnQoKS5zdHlsZUNvbG9yT3B0aW9ucygpKSk7
CisgICAgcGFpbnRJbmZvLmNvbnRleHQoKS5kcmF3Rm9jdXNSaW5nKHBhdGgsIHBhZ2UoKS5mb2N1
c0NvbnRyb2xsZXIoKS50aW1lU2luY2VGb2N1c1dhc1NldCgpLnNlY29uZHMoKSwgbmVlZHNSZXBh
aW50LCBSZW5kZXJUaGVtZTo6Zm9jdXNSaW5nQ29sb3Ioc3R5bGVDb2xvck9wdGlvbnMoKSkpOwog
ICAgIGlmIChuZWVkc1JlcGFpbnQpCiAgICAgICAgIHBhZ2UoKS5mb2N1c0NvbnRyb2xsZXIoKS5z
ZXRGb2N1c2VkRWxlbWVudE5lZWRzUmVwYWludCgpOwogI2Vsc2UKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHAKaW5kZXggODhkNmUwMWRkNmVmYzZl
MmY3YTliYzI0MzM5ZDQ4NDRhZGYyYWQ3YS4uYmI3YjE5ZWJjOGNhNjFhNDJiNGYwYjM5MWNjZTcx
ZTQwMGQwNDU3NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxh
eWVyQmFja2luZy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVy
QmFja2luZy5jcHAKQEAgLTI1NDEsNyArMjU0MSw3IEBAIHZvaWQgUmVuZGVyTGF5ZXJCYWNraW5n
OjpwYWludENvbnRlbnRzKGNvbnN0IEdyYXBoaWNzTGF5ZXIqIGdyYXBoaWNzTGF5ZXIsIEdyYXBo
CiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKE1BQykKLSAgICBMb2NhbERlZmF1bHRTeXN0ZW1BcHBl
YXJhbmNlIGxvY2FsQXBwZWFyYW5jZShyZW5kZXJlcigpLmRvY3VtZW50KCkudXNlRGFya0FwcGVh
cmFuY2UoKSk7CisgICAgTG9jYWxEZWZhdWx0U3lzdGVtQXBwZWFyYW5jZSBsb2NhbEFwcGVhcmFu
Y2UocmVuZGVyZXIoKS51c2VEYXJrQXBwZWFyYW5jZSgpKTsKICNlbmRpZgogCiAgICAgLy8gVGhl
IGRpcnR5UmVjdCBpcyBpbiB0aGUgY29vcmRzIG9mIHRoZSBwYWludGluZyByb290LgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNwcAppbmRl
eCBiNjU1ZmYyNWM5YTk1ODA2MDY0OGJiN2JlZGYyMDlmOWM1MDBiM2M4Li4wOTJiNTAwNzVlYjM5
MWFmZGQ2NmU1MGEyYjJhZWM4MmNiODIxOGRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNwcApAQCAtMjc4Miw3ICsyNzgyLDcgQEAg
dm9pZCBwYWludFNjcm9sbGJhcihTY3JvbGxiYXIqIHNjcm9sbGJhciwgR3JhcGhpY3NDb250ZXh0
JiBjb250ZXh0LCBjb25zdCBJbnRSZWMKIHZvaWQgUmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpwYWlu
dENvbnRlbnRzKGNvbnN0IEdyYXBoaWNzTGF5ZXIqIGdyYXBoaWNzTGF5ZXIsIEdyYXBoaWNzQ29u
dGV4dCYgY29udGV4dCwgR3JhcGhpY3NMYXllclBhaW50aW5nUGhhc2UsIGNvbnN0IEZsb2F0UmVj
dCYgY2xpcCwgR3JhcGhpY3NMYXllclBhaW50QmVoYXZpb3IpCiB7CiAjaWYgUExBVEZPUk0oTUFD
KQotICAgIExvY2FsRGVmYXVsdFN5c3RlbUFwcGVhcmFuY2UgbG9jYWxBcHBlYXJhbmNlKG1fcmVu
ZGVyVmlldy5kb2N1bWVudCgpLnVzZURhcmtBcHBlYXJhbmNlKCkpOworICAgIExvY2FsRGVmYXVs
dFN5c3RlbUFwcGVhcmFuY2UgbG9jYWxBcHBlYXJhbmNlKG1fcmVuZGVyVmlldy51c2VEYXJrQXBw
ZWFyYW5jZSgpKTsKICNlbmRpZgogCiAgICAgSW50UmVjdCBwaXhlbFNuYXBwZWRSZWN0Rm9ySW50
ZWdyYWxQb3NpdGlvbmVkSXRlbXMgPSBzbmFwcGVkSW50UmVjdChMYXlvdXRSZWN0KGNsaXApKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0Qm94LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0Qm94LmNwcAppbmRleCBlY2Q1NTE2
NWZmYzgxOWM1YjMyNmIzZTc2YTI1MDQ4ZDE1MDRhYjFkLi41MjAwODEzZTE5NTY4ZGIzOGVmN2Q1
NmNmOGU4MGM2NDYzMTBhMDUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyTGlzdEJveC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxp
c3RCb3guY3BwCkBAIC00MjgsMTAgKzQyOCwxMCBAQCB2b2lkIFJlbmRlckxpc3RCb3g6OnBhaW50
SXRlbUZvcmVncm91bmQoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFBvaW50Jgog
ICAgIENvbG9yIHRleHRDb2xvciA9IGl0ZW1TdHlsZS52aXNpdGVkRGVwZW5kZW50Q29sb3JXaXRo
Q29sb3JGaWx0ZXIoQ1NTUHJvcGVydHlDb2xvcik7CiAgICAgaWYgKGlzT3B0aW9uRWxlbWVudCAm
JiBkb3duY2FzdDxIVE1MT3B0aW9uRWxlbWVudD4oKmxpc3RJdGVtRWxlbWVudCkuc2VsZWN0ZWQo
KSkgewogICAgICAgICBpZiAoZnJhbWUoKS5zZWxlY3Rpb24oKS5pc0ZvY3VzZWRBbmRBY3RpdmUo
KSAmJiBkb2N1bWVudCgpLmZvY3VzZWRFbGVtZW50KCkgPT0gJnNlbGVjdEVsZW1lbnQoKSkKLSAg
ICAgICAgICAgIHRleHRDb2xvciA9IHRoZW1lKCkuYWN0aXZlTGlzdEJveFNlbGVjdGlvbkZvcmVn
cm91bmRDb2xvcihkb2N1bWVudCgpLnN0eWxlQ29sb3JPcHRpb25zKCkpOworICAgICAgICAgICAg
dGV4dENvbG9yID0gdGhlbWUoKS5hY3RpdmVMaXN0Qm94U2VsZWN0aW9uRm9yZWdyb3VuZENvbG9y
KHN0eWxlQ29sb3JPcHRpb25zKCkpOwogICAgICAgICAvLyBIb25vciB0aGUgZm9yZWdyb3VuZCBj
b2xvciBmb3IgZGlzYWJsZWQgaXRlbXMKICAgICAgICAgZWxzZSBpZiAoIWxpc3RJdGVtRWxlbWVu
dC0+aXNEaXNhYmxlZEZvcm1Db250cm9sKCkgJiYgIXNlbGVjdEVsZW1lbnQoKS5pc0Rpc2FibGVk
Rm9ybUNvbnRyb2woKSkKLSAgICAgICAgICAgIHRleHRDb2xvciA9IHRoZW1lKCkuaW5hY3RpdmVM
aXN0Qm94U2VsZWN0aW9uRm9yZWdyb3VuZENvbG9yKGRvY3VtZW50KCkuc3R5bGVDb2xvck9wdGlv
bnMoKSk7CisgICAgICAgICAgICB0ZXh0Q29sb3IgPSB0aGVtZSgpLmluYWN0aXZlTGlzdEJveFNl
bGVjdGlvbkZvcmVncm91bmRDb2xvcihzdHlsZUNvbG9yT3B0aW9ucygpKTsKICAgICB9CiAKICAg
ICBwYWludEluZm8uY29udGV4dCgpLnNldEZpbGxDb2xvcih0ZXh0Q29sb3IpOwpAQCAtNDYxLDkg
KzQ2MSw5IEBAIHZvaWQgUmVuZGVyTGlzdEJveDo6cGFpbnRJdGVtQmFja2dyb3VuZChQYWludElu
Zm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQmCiAgICAgQ29sb3IgYmFja0NvbG9yOwog
ICAgIGlmIChpczxIVE1MT3B0aW9uRWxlbWVudD4oKmxpc3RJdGVtRWxlbWVudCkgJiYgZG93bmNh
c3Q8SFRNTE9wdGlvbkVsZW1lbnQ+KCpsaXN0SXRlbUVsZW1lbnQpLnNlbGVjdGVkKCkpIHsKICAg
ICAgICAgaWYgKGZyYW1lKCkuc2VsZWN0aW9uKCkuaXNGb2N1c2VkQW5kQWN0aXZlKCkgJiYgZG9j
dW1lbnQoKS5mb2N1c2VkRWxlbWVudCgpID09ICZzZWxlY3RFbGVtZW50KCkpCi0gICAgICAgICAg
ICBiYWNrQ29sb3IgPSB0aGVtZSgpLmFjdGl2ZUxpc3RCb3hTZWxlY3Rpb25CYWNrZ3JvdW5kQ29s
b3IoZG9jdW1lbnQoKS5zdHlsZUNvbG9yT3B0aW9ucygpKTsKKyAgICAgICAgICAgIGJhY2tDb2xv
ciA9IHRoZW1lKCkuYWN0aXZlTGlzdEJveFNlbGVjdGlvbkJhY2tncm91bmRDb2xvcihzdHlsZUNv
bG9yT3B0aW9ucygpKTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgYmFja0NvbG9yID0gdGhl
bWUoKS5pbmFjdGl2ZUxpc3RCb3hTZWxlY3Rpb25CYWNrZ3JvdW5kQ29sb3IoZG9jdW1lbnQoKS5z
dHlsZUNvbG9yT3B0aW9ucygpKTsKKyAgICAgICAgICAgIGJhY2tDb2xvciA9IHRoZW1lKCkuaW5h
Y3RpdmVMaXN0Qm94U2VsZWN0aW9uQmFja2dyb3VuZENvbG9yKHN0eWxlQ29sb3JPcHRpb25zKCkp
OwogICAgIH0gZWxzZQogICAgICAgICBiYWNrQ29sb3IgPSBpdGVtU3R5bGUudmlzaXRlZERlcGVu
ZGVudENvbG9yV2l0aENvbG9yRmlsdGVyKENTU1Byb3BlcnR5QmFja2dyb3VuZENvbG9yKTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcAppbmRleCA3NjQ0NDUwZjA4
MDc3NjhjNTMxZmUyYTI3ODliMWViZmYyNjAwOTk2Li40MjU1MTA1ZTI0NGZkZDUxN2YzNDk0YmFi
Njk5MjhiMzIzOTdhNDZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0
LmNwcApAQCAtMTgwMSw2ICsxODAxLDE2IEBAIEN1cnNvckRpcmVjdGl2ZSBSZW5kZXJPYmplY3Q6
OmdldEN1cnNvcihjb25zdCBMYXlvdXRQb2ludCYsIEN1cnNvciYpIGNvbnN0CiAgICAgcmV0dXJu
IFNldEN1cnNvckJhc2VkT25TdHlsZTsKIH0KIAorYm9vbCBSZW5kZXJPYmplY3Q6OnVzZURhcmtB
cHBlYXJhbmNlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gZG9jdW1lbnQoKS51c2VEYXJrQXBwZWFy
YW5jZSgmc3R5bGUoKSk7Cit9CisKK09wdGlvblNldDxTdHlsZUNvbG9yOjpPcHRpb25zPiBSZW5k
ZXJPYmplY3Q6OnN0eWxlQ29sb3JPcHRpb25zKCkgY29uc3QKK3sKKyAgICByZXR1cm4gZG9jdW1l
bnQoKS5zdHlsZUNvbG9yT3B0aW9ucygmc3R5bGUoKSk7Cit9CisKIGJvb2wgUmVuZGVyT2JqZWN0
OjpjYW5VcGRhdGVTZWxlY3Rpb25PblJvb3RMaW5lQm94ZXMoKQogewogICAgIGlmIChuZWVkc0xh
eW91dCgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVj
dC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5oCmluZGV4IDEzYjM2
ZDY3NjAyYTA1YmViNDZlYjU3NzM3MThkODVhZGE1ODI4YTAuLjJkY2U5ZGNjNTY5MTMwOTFmNzI5
OTQ3ZmM2ZGY3MjY0YThlNDNmNWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJPYmplY3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2Jq
ZWN0LmgKQEAgLTE3Niw2ICsxNzYsOSBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBsb2NhdGVF
bmNsb3NpbmdGcmFnbWVudGVkRmxvdygpOwogICAgIH0KIAorICAgIFdFQkNPUkVfRVhQT1JUIGJv
b2wgdXNlRGFya0FwcGVhcmFuY2UoKSBjb25zdDsKKyAgICBPcHRpb25TZXQ8U3R5bGVDb2xvcjo6
T3B0aW9ucz4gc3R5bGVDb2xvck9wdGlvbnMoKSBjb25zdDsKKwogI2lmbmRlZiBOREVCVUcKICAg
ICB2b2lkIHNldEhhc0FYT2JqZWN0KGJvb2wgZmxhZykgeyBtX2hhc0FYT2JqZWN0ID0gZmxhZzsg
fQogICAgIGJvb2wgaGFzQVhPYmplY3QoKSBjb25zdCB7IHJldHVybiBtX2hhc0FYT2JqZWN0OyB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVDZWxsLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZUNlbGwuY3BwCmluZGV4IDM0
NWE3YmI1N2Y2NzNkNjc1MjNiMzMzMTNmYmFlZWZmMTA5NWE0YTcuLjc1NDE5Nzg3YzdiNmY3YTkx
ZjM2MWM4Njg5M2M4MWY5YmFlYTcwYjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJUYWJsZUNlbGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJUYWJsZUNlbGwuY3BwCkBAIC0xMjg5LDcgKzEyODksNyBAQCB2b2lkIFJlbmRlclRhYmxl
Q2VsbDo6cGFpbnRCYWNrZ3JvdW5kc0JlaGluZENlbGwoUGFpbnRJbmZvJiBwYWludEluZm8sIGNv
bnN0IExheQogCiAgICAgQ29tcG9zaXRlT3BlcmF0b3IgY29tcG9zaXRlT3AgPSBDb21wb3NpdGVT
b3VyY2VPdmVyOwogICAgIENvbG9yIGNvbG9yID0gc3R5bGUudmlzaXRlZERlcGVuZGVudENvbG9y
KENTU1Byb3BlcnR5QmFja2dyb3VuZENvbG9yKTsKLSAgICBpZiAoZG9jdW1lbnQoKS5zZXR0aW5n
cygpLnB1bmNoT3V0V2hpdGVCYWNrZ3JvdW5kc0luRGFya01vZGUoKSAmJiBDb2xvcjo6aXNXaGl0
ZUNvbG9yKGNvbG9yKSAmJiB0aGVtZSgpLnVzaW5nRGFya0FwcGVhcmFuY2UoKnRoaXMpKQorICAg
IGlmIChkb2N1bWVudCgpLnNldHRpbmdzKCkucHVuY2hPdXRXaGl0ZUJhY2tncm91bmRzSW5EYXJr
TW9kZSgpICYmIENvbG9yOjppc1doaXRlQ29sb3IoY29sb3IpICYmIHVzZURhcmtBcHBlYXJhbmNl
KCkpCiAgICAgICAgIGNvbXBvc2l0ZU9wID0gQ29tcG9zaXRlRGVzdGluYXRpb25PdXQ7CiAKICAg
ICBjb2xvciA9IHN0eWxlLmNvbG9yQnlBcHBseWluZ0NvbG9yRmlsdGVyKGNvbG9yKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWUuY3BwCmluZGV4IGJkNjZiYjNmNTkxYTBjN2M4
NGE5Y2JmOGY1M2NjYTZmZmUwYmE4NTkuLjI1NzM5MDM5NmY1MGEzMjI2NmY4MmEwNDhlNDg2NzJj
OTM4YTE1NWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVt
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lLmNwcApAQCAt
MzE4LDcgKzMxOCw3IEBAIGJvb2wgUmVuZGVyVGhlbWU6OnBhaW50KGNvbnN0IFJlbmRlckJveCYg
Ym94LCBDb250cm9sU3RhdGVzJiBjb250cm9sU3RhdGVzLCBjb25zCiAgICAgY2FzZSBCdXR0b25Q
YXJ0OgogICAgIGNhc2UgSW5uZXJTcGluQnV0dG9uUGFydDoKICAgICAgICAgdXBkYXRlQ29udHJv
bFN0YXRlc0ZvclJlbmRlcmVyKGJveCwgY29udHJvbFN0YXRlcyk7Ci0gICAgICAgIFRoZW1lOjpz
aW5nbGV0b24oKS5wYWludChwYXJ0LCBjb250cm9sU3RhdGVzLCBwYWludEluZm8uY29udGV4dCgp
LCBkZXZpY2VQaXhlbFNuYXBwZWRSZWN0LCBib3guc3R5bGUoKS5lZmZlY3RpdmVab29tKCksICZi
b3gudmlldygpLmZyYW1lVmlldygpLCBkZXZpY2VTY2FsZUZhY3RvciwgcGFnZVNjYWxlRmFjdG9y
LCBib3guZG9jdW1lbnQoKS51c2VTeXN0ZW1BcHBlYXJhbmNlKCksIGJveC5kb2N1bWVudCgpLnVz
ZURhcmtBcHBlYXJhbmNlKCkpOworICAgICAgICBUaGVtZTo6c2luZ2xldG9uKCkucGFpbnQocGFy
dCwgY29udHJvbFN0YXRlcywgcGFpbnRJbmZvLmNvbnRleHQoKSwgZGV2aWNlUGl4ZWxTbmFwcGVk
UmVjdCwgYm94LnN0eWxlKCkuZWZmZWN0aXZlWm9vbSgpLCAmYm94LnZpZXcoKS5mcmFtZVZpZXco
KSwgZGV2aWNlU2NhbGVGYWN0b3IsIHBhZ2VTY2FsZUZhY3RvciwgYm94LmRvY3VtZW50KCkudXNl
U3lzdGVtQXBwZWFyYW5jZSgpLCBib3gudXNlRGFya0FwcGVhcmFuY2UoKSk7CiAgICAgICAgIHJl
dHVybiBmYWxzZTsKICAgICBkZWZhdWx0OgogICAgICAgICBicmVhazsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZS5oIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlclRoZW1lLmgKaW5kZXggOGZiYTRkYjQwOTY3NGM3MDMyZTU2YjFlZDVjNzk2
NTgzZjRjMDE1Ni4uMTMyYTZlNDlmMDk2NmQ3ZDUwMzdjYjVjNmEwMzY0ZjgzOTg5OTliOSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lLmgKQEAgLTI2MSw4ICsyNjEsNiBAQCBw
dWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHBhaW50U3lzdGVtUHJldmlld0JhZGdlKEltYWdlJiwg
Y29uc3QgUGFpbnRJbmZvJiwgY29uc3QgRmxvYXRSZWN0Jik7CiAjZW5kaWYKIAotICAgIHZpcnR1
YWwgYm9vbCB1c2luZ0RhcmtBcHBlYXJhbmNlKGNvbnN0IFJlbmRlck9iamVjdCYpIGNvbnN0IHsg
cmV0dXJuIGZhbHNlOyB9Ci0KIHByb3RlY3RlZDoKICAgICB2aXJ0dWFsIEZvbnRDYXNjYWRlRGVz
Y3JpcHRpb24mIGNhY2hlZFN5c3RlbUZvbnREZXNjcmlwdGlvbihDU1NWYWx1ZUlEIHN5c3RlbUZv
bnRJRCkgY29uc3Q7CiAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZUNhY2hlZFN5c3RlbUZvbnREZXNj
cmlwdGlvbihDU1NWYWx1ZUlEIHN5c3RlbUZvbnRJRCwgRm9udENhc2NhZGVEZXNjcmlwdGlvbiYp
IGNvbnN0ID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJU
aGVtZU1hYy5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lTWFjLmgKaW5k
ZXggZDg1NzYxYWJjOWIxMmRmZGRhNTU0NWRkMTRmODAzNDk2Mzc5NTBkNy4uMWRkMmIxZjVmZWY4
NmY4Yzk1Zjg3NmFiZmZmODY2NDg5ZjhjZmFkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlclRoZW1lTWFjLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclRoZW1lTWFjLmgKQEAgLTE3NCw4ICsxNzQsNiBAQCBwcml2YXRlOgogICAgIGJvb2wg
cGFpbnRBdHRhY2htZW50KGNvbnN0IFJlbmRlck9iamVjdCYsIGNvbnN0IFBhaW50SW5mbyYsIGNv
bnN0IEludFJlY3QmKSBmaW5hbDsKICNlbmRpZgogCi0gICAgYm9vbCB1c2luZ0RhcmtBcHBlYXJh
bmNlKGNvbnN0IFJlbmRlck9iamVjdCYpIGNvbnN0IGZpbmFsOwotCiBwcml2YXRlOgogICAgIFN0
cmluZyBmaWxlTGlzdE5hbWVGb3JXaWR0aChjb25zdCBGaWxlTGlzdCosIGNvbnN0IEZvbnRDYXNj
YWRlJiwgaW50IHdpZHRoLCBib29sIG11bHRpcGxlRmlsZXNBbGxvd2VkKSBjb25zdCBmaW5hbDsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lTWFjLm1t
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lTWFjLm1tCmluZGV4IDNmYmQ2
MGQ2MTcxNzlkODBiMTkyNjU5YTliOGYwYmM5YzllNmNkZDUuLmQ1NTBlNWIzM2Y0YWE0ZDJlNTMz
OTVkMGViZWM5MDhiMmY3YzI3YTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJUaGVtZU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
VGhlbWVNYWMubW0KQEAgLTI5Nyw3ICsyOTcsNyBAQCBSZW5kZXJUaGVtZU1hYzo6UmVuZGVyVGhl
bWVNYWMoKQogCiBOU1ZpZXcgKlJlbmRlclRoZW1lTWFjOjpkb2N1bWVudFZpZXdGb3IoY29uc3Qg
UmVuZGVyT2JqZWN0JiBvKSBjb25zdAogewotICAgIExvY2FsRGVmYXVsdFN5c3RlbUFwcGVhcmFu
Y2UgbG9jYWxBcHBlYXJhbmNlKHVzaW5nRGFya0FwcGVhcmFuY2UobykpOworICAgIExvY2FsRGVm
YXVsdFN5c3RlbUFwcGVhcmFuY2UgbG9jYWxBcHBlYXJhbmNlKG8udXNlRGFya0FwcGVhcmFuY2Uo
KSk7CiAgICAgQ29udHJvbFN0YXRlcyBzdGF0ZXMoZXh0cmFjdENvbnRyb2xTdGF0ZXNGb3JSZW5k
ZXJlcihvKSk7CiAgICAgcmV0dXJuIFRoZW1lTWFjOjplbnN1cmVkVmlldygmby52aWV3KCkuZnJh
bWVWaWV3KCksIHN0YXRlcyk7CiB9CkBAIC0xNzEzLDcgKzE3MTMsNyBAQCB2b2lkIFJlbmRlclRo
ZW1lTWFjOjphZGp1c3RNZW51TGlzdFN0eWxlKFN0eWxlUmVzb2x2ZXImIHN0eWxlUmVzb2x2ZXIs
IFJlbmRlclN0eQogICAgIC8vIFNldCB0aGUgZm9yZWdyb3VuZCBjb2xvciB0byBibGFjayBvciBn
cmF5IHdoZW4gd2UgaGF2ZSB0aGUgYXF1YSBsb29rLgogICAgIENvbG9yIGMgPSBDb2xvcjo6ZGFy
a0dyYXk7CiAgICAgaWYgKGUpIHsKLSAgICAgICAgT3B0aW9uU2V0PFN0eWxlQ29sb3I6Ok9wdGlv
bnM+IG9wdGlvbnMgPSBlLT5kb2N1bWVudCgpLnN0eWxlQ29sb3JPcHRpb25zKCk7CisgICAgICAg
IE9wdGlvblNldDxTdHlsZUNvbG9yOjpPcHRpb25zPiBvcHRpb25zID0gZS0+ZG9jdW1lbnQoKS5z
dHlsZUNvbG9yT3B0aW9ucygmc3R5bGUpOwogICAgICAgICBjID0gIWUtPmlzRGlzYWJsZWRGb3Jt
Q29udHJvbCgpID8gc3lzdGVtQ29sb3IoQ1NTVmFsdWVCdXR0b250ZXh0LCBvcHRpb25zKSA6IHN5
c3RlbUNvbG9yKENTU1ZhbHVlR3JheXRleHQsIG9wdGlvbnMpOwogICAgIH0KICAgICBzdHlsZS5z
ZXRDb2xvcihjKTsKQEAgLTE4MDAsNyArMTgwMCw3IEBAIHZvaWQgUmVuZGVyVGhlbWVNYWM6OnNl
dFBvcHVwQnV0dG9uQ2VsbFN0YXRlKGNvbnN0IFJlbmRlck9iamVjdCYgbywgY29uc3QgSW50U2l6
CiAKIHZvaWQgUmVuZGVyVGhlbWVNYWM6OnBhaW50Q2VsbEFuZFNldEZvY3VzZWRFbGVtZW50TmVl
ZHNSZXBhaW50SWZOZWNlc3NhcnkoTlNDZWxsKiBjZWxsLCBjb25zdCBSZW5kZXJPYmplY3QmIHJl
bmRlcmVyLCBjb25zdCBQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgRmxvYXRSZWN0JiByZWN0
KQogewotICAgIExvY2FsRGVmYXVsdFN5c3RlbUFwcGVhcmFuY2UgbG9jYWxBcHBlYXJhbmNlKHVz
aW5nRGFya0FwcGVhcmFuY2UocmVuZGVyZXIpKTsKKyAgICBMb2NhbERlZmF1bHRTeXN0ZW1BcHBl
YXJhbmNlIGxvY2FsQXBwZWFyYW5jZShyZW5kZXJlci51c2VEYXJrQXBwZWFyYW5jZSgpKTsKICAg
ICBib29sIHNob3VsZERyYXdGb2N1c1JpbmcgPSBpc0ZvY3VzZWQocmVuZGVyZXIpICYmIHJlbmRl
cmVyLnN0eWxlKCkub3V0bGluZVN0eWxlSXNBdXRvKCkgPT0gT3V0bGluZUlzQXV0bzo6T247CiAg
ICAgYm9vbCBzaG91bGRVc2VJbWFnZUJ1ZmZlciA9IHJlbmRlcmVyLnN0eWxlKCkuZWZmZWN0aXZl
Wm9vbSgpICE9IDEgfHwgcmVuZGVyZXIucGFnZSgpLnBhZ2VTY2FsZUZhY3RvcigpICE9IDE7CiAg
ICAgYm9vbCBzaG91bGREcmF3Q2VsbCA9IHRydWU7CkBAIC0xODgyLDcgKzE4ODIsNyBAQCBib29s
IFJlbmRlclRoZW1lTWFjOjpwYWludFNsaWRlclRodW1iKGNvbnN0IFJlbmRlck9iamVjdCYgbywg
Y29uc3QgUGFpbnRJbmZvJiBwYQogICAgICAgICA/IHNsaWRlclRodW1iVmVydGljYWwoKQogICAg
ICAgICA6IHNsaWRlclRodW1iSG9yaXpvbnRhbCgpOwogCi0gICAgTG9jYWxEZWZhdWx0U3lzdGVt
QXBwZWFyYW5jZSBsb2NhbEFwcGVhcmFuY2UodXNpbmdEYXJrQXBwZWFyYW5jZShvKSk7CisgICAg
TG9jYWxEZWZhdWx0U3lzdGVtQXBwZWFyYW5jZSBsb2NhbEFwcGVhcmFuY2Uoby51c2VEYXJrQXBw
ZWFyYW5jZSgpKTsKIAogICAgIExvY2FsQ3VycmVudEdyYXBoaWNzQ29udGV4dCBsb2NhbENvbnRl
eHQocGFpbnRJbmZvLmNvbnRleHQoKSk7CiAKQEAgLTI5OTQsMTEgKzI5OTQsNiBAQCBib29sIFJl
bmRlclRoZW1lTWFjOjpwYWludEF0dGFjaG1lbnQoY29uc3QgUmVuZGVyT2JqZWN0JiByZW5kZXJl
ciwgY29uc3QgUGFpbnRJbgogCiAjZW5kaWYgLy8gRU5BQkxFKEFUVEFDSE1FTlRfRUxFTUVOVCkK
IAotYm9vbCBSZW5kZXJUaGVtZU1hYzo6dXNpbmdEYXJrQXBwZWFyYW5jZShjb25zdCBSZW5kZXJP
YmplY3QmIG8pIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG8uZG9jdW1lbnQoKS51c2VEYXJrQXBwZWFy
YW5jZSgpOwotfQotCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBQTEFURk9S
TShNQUMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVy
U3R5bGUuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5oCmlu
ZGV4IDk4MWI4ZWVlZWJlOTZhNjFiMWFhZDM2MzI0MmQ3NGU5NjgxYzAzZWQuLjg1NTVkMGI5ZjYy
NGQ4MjMxNDI2M2IwNTBhZTVjOWFmYWMyYzY2M2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdHlsZS9SZW5kZXJTdHlsZS5oCkBAIC04NCw2ICs4NCwxMCBAQAogI2luY2x1ZGUgIlRl
eHRTaXplQWRqdXN0bWVudC5oIgogI2VuZGlmCiAKKyNpZiBFTkFCTEUoREFSS19NT0RFX0NTUykK
KyNpbmNsdWRlICJTdHlsZVN1cHBvcnRlZENvbG9yU2NoZW1lcy5oIgorI2VuZGlmCisKICNkZWZp
bmUgU0VUX1ZBUihncm91cCwgdmFyaWFibGUsIHZhbHVlKSBkbyB7IFwKICAgICAgICAgaWYgKCFj
b21wYXJlRXF1YWwoZ3JvdXAtPnZhcmlhYmxlLCB2YWx1ZSkpIFwKICAgICAgICAgICAgIGdyb3Vw
LmFjY2VzcygpLnZhcmlhYmxlID0gdmFsdWU7IFwKQEAgLTYzMiw2ICs2MzYsMTAgQEAgcHVibGlj
OgogCiAgICAgUnVieVBvc2l0aW9uIHJ1YnlQb3NpdGlvbigpIGNvbnN0IHsgcmV0dXJuIHN0YXRp
Y19jYXN0PFJ1YnlQb3NpdGlvbj4obV9yYXJlSW5oZXJpdGVkRGF0YS0+cnVieVBvc2l0aW9uKTsg
fQogCisjaWYgRU5BQkxFKERBUktfTU9ERV9DU1MpCisgICAgU3R5bGVTdXBwb3J0ZWRDb2xvclNj
aGVtZXMgc3VwcG9ydGVkQ29sb3JTY2hlbWVzKCkgY29uc3QgeyByZXR1cm4gbV9yYXJlSW5oZXJp
dGVkRGF0YS0+c3VwcG9ydGVkQ29sb3JTY2hlbWVzOyB9CisjZW5kaWYKKwogICAgIFRleHRPcmll
bnRhdGlvbiB0ZXh0T3JpZW50YXRpb24oKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxUZXh0
T3JpZW50YXRpb24+KG1fcmFyZUluaGVyaXRlZERhdGEtPnRleHRPcmllbnRhdGlvbik7IH0KIAog
ICAgIE9iamVjdEZpdCBvYmplY3RGaXQoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxPYmpl
Y3RGaXQ+KG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPm9iamVjdEZpdCk7IH0KQEAgLTExNjUsNiAr
MTE3MywxMCBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHNldFJ1YnlQb3NpdGlvbihSdWJ5UG9zaXRp
b24gcG9zaXRpb24pIHsgU0VUX1ZBUihtX3JhcmVJbmhlcml0ZWREYXRhLCBydWJ5UG9zaXRpb24s
IHN0YXRpY19jYXN0PHVuc2lnbmVkPihwb3NpdGlvbikpOyB9CiAKKyNpZiBFTkFCTEUoREFSS19N
T0RFX0NTUykKKyAgICB2b2lkIHNldFN1cHBvcnRlZENvbG9yU2NoZW1lcyhTdHlsZVN1cHBvcnRl
ZENvbG9yU2NoZW1lcyBzdXBwb3J0ZWQpIHsgU0VUX1ZBUihtX3JhcmVJbmhlcml0ZWREYXRhLCBz
dXBwb3J0ZWRDb2xvclNjaGVtZXMsIHN1cHBvcnRlZCk7IH0KKyNlbmRpZgorCiAgICAgdm9pZCBz
ZXRGaWx0ZXIoY29uc3QgRmlsdGVyT3BlcmF0aW9ucyYgb3BzKSB7IFNFVF9ORVNURURfVkFSKG1f
cmFyZU5vbkluaGVyaXRlZERhdGEsIGZpbHRlciwgb3BlcmF0aW9ucywgb3BzKTsgfQogICAgIHZv
aWQgc2V0QXBwbGVDb2xvckZpbHRlcihjb25zdCBGaWx0ZXJPcGVyYXRpb25zJiBvcHMpIHsgU0VU
X05FU1RFRF9WQVIobV9yYXJlSW5oZXJpdGVkRGF0YSwgYXBwbGVDb2xvckZpbHRlciwgb3BlcmF0
aW9ucywgb3BzKTsgfQogCkBAIC0xNTc4LDYgKzE1OTAsMTAgQEAgcHVibGljOgogICAgIHN0YXRp
YyBRdW90ZXNEYXRhKiBpbml0aWFsUXVvdGVzKCkgeyByZXR1cm4gbnVsbHB0cjsgfQogICAgIHN0
YXRpYyBjb25zdCBBdG9taWNTdHJpbmcmIGluaXRpYWxDb250ZW50QWx0VGV4dCgpIHsgcmV0dXJu
IGVtcHR5QXRvbSgpOyB9CiAKKyNpZiBFTkFCTEUoREFSS19NT0RFX0NTUykKKyAgICBzdGF0aWMg
U3R5bGVTdXBwb3J0ZWRDb2xvclNjaGVtZXMgaW5pdGlhbFN1cHBvcnRlZENvbG9yU2NoZW1lcygp
IHsgcmV0dXJuIHsgfTsgfQorI2VuZGlmCisKICNpZiBFTkFCTEUoQ1NTM19URVhUKQogICAgIHN0
YXRpYyBUZXh0SW5kZW50TGluZSBpbml0aWFsVGV4dEluZGVudExpbmUoKSB7IHJldHVybiBUZXh0
SW5kZW50TGluZTo6Rmlyc3RMaW5lOyB9CiAgICAgc3RhdGljIFRleHRJbmRlbnRUeXBlIGluaXRp
YWxUZXh0SW5kZW50VHlwZSgpIHsgcmV0dXJuIFRleHRJbmRlbnRUeXBlOjpOb3JtYWw7IH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZUNvbnN0
YW50cy5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlQ29uc3Rh
bnRzLmgKaW5kZXggMTc2ZWIyMTNhN2E2ZTc4MmUzMTA3OTBkNTEwZjBjZDFiM2Q5ZTAyOC4uNjZl
NWM3YjQ3NDEwYTFiMGFmMTFiZWE0MzZhYzljYjJhODQ3NzFlNCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlQ29uc3RhbnRzLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlQ29uc3RhbnRzLmgKQEAgLTEw
MTgsNiArMTAxOCwxNSBAQCBlbnVtIGNsYXNzIFJ1YnlQb3NpdGlvbiA6IHVpbnQ4X3QgewogICAg
IEludGVyQ2hhcmFjdGVyCiB9OwogCisjaWYgRU5BQkxFKERBUktfTU9ERV9DU1MpCitlbnVtIGNs
YXNzIENvbG9yU2NoZW1lcyA6IHVpbnQ4X3QgeworICAgIExpZ2h0ID0gMSA8PCAwLAorICAgIERh
cmsgPSAxIDw8IDEKK307CisKK3N0YXRpYyBjb25zdCBzaXplX3QgQ29sb3JTY2hlbWVzQml0cyA9
IDI7CisjZW5kaWYKKwogc3RhdGljIGNvbnN0IHNpemVfdCBHcmlkQXV0b0Zsb3dCaXRzID0gNDsK
IGVudW0gSW50ZXJuYWxHcmlkQXV0b0Zsb3dBbGdvcml0aG0gewogICAgIEludGVybmFsQXV0b0Zs
b3dBbGdvcml0aG1TcGFyc2UgPSAxIDw8IDAsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3R5bGUvU3R5bGVSYXJlSW5oZXJpdGVkRGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVSYXJlSW5oZXJpdGVkRGF0YS5jcHAKaW5kZXggNWZiNzli
M2Y5NDdlNDQ2YjcwZWYzMzgyN2NjNzI4Y2JjODBlYjA2YS4uNDVmNzM2YWIyODI4NzE5OWRlZGY2
NzdmY2E0Zjc2OGJjMGE2MjdjNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N0eWxlL1N0eWxlUmFyZUluaGVyaXRlZERhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdHlsZS9TdHlsZVJhcmVJbmhlcml0ZWREYXRhLmNwcApAQCAtMzEsNiArMzEsNyBA
QAogI2luY2x1ZGUgIlN0eWxlQ3VzdG9tUHJvcGVydHlEYXRhLmgiCiAjaW5jbHVkZSAiU3R5bGVG
aWx0ZXJEYXRhLmgiCiAjaW5jbHVkZSAiU3R5bGVJbWFnZS5oIgorI2luY2x1ZGUgIlN0eWxlU3Vw
cG9ydGVkQ29sb3JTY2hlbWVzLmgiCiAjaW5jbHVkZSA8d3RmL1BvaW50ZXJDb21wYXJpc29uLmg+
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTY3LDYgKzY4LDEwIEBAIHN0cnVjdCBHcmVhdGVy
VGhhbk9yU2FtZVNpemVBc1N0eWxlUmFyZUluaGVyaXRlZERhdGEgOiBwdWJsaWMgUmVmQ291bnRl
ZDxHcmVhdGVyCiAgICAgQ29sb3IgdGFwSGlnaGxpZ2h0Q29sb3I7CiAjZW5kaWYKIAorI2lmIEVO
QUJMRShEQVJLX01PREVfQ1NTKQorICAgIFN0eWxlU3VwcG9ydGVkQ29sb3JTY2hlbWVzIHN1cHBv
cnRlZENvbG9yU2NoZW1lczsKKyNlbmRpZgorCiAgICAgdm9pZCogY3VzdG9tUHJvcGVydHlEYXRh
UmVmc1sxXTsKIH07CiAKQEAgLTE1Myw2ICsxNTgsOSBAQCBTdHlsZVJhcmVJbmhlcml0ZWREYXRh
OjpTdHlsZVJhcmVJbmhlcml0ZWREYXRhKCkKICNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQogICAg
ICwgdGFwSGlnaGxpZ2h0Q29sb3IoUmVuZGVyU3R5bGU6OmluaXRpYWxUYXBIaWdobGlnaHRDb2xv
cigpKQogI2VuZGlmCisjaWYgRU5BQkxFKERBUktfTU9ERV9DU1MpCisgICAgLCBzdXBwb3J0ZWRD
b2xvclNjaGVtZXMoUmVuZGVyU3R5bGU6OmluaXRpYWxTdXBwb3J0ZWRDb2xvclNjaGVtZXMoKSkK
KyNlbmRpZgogewogfQogCkBAIC0yNTEsNiArMjU5LDkgQEAgaW5saW5lIFN0eWxlUmFyZUluaGVy
aXRlZERhdGE6OlN0eWxlUmFyZUluaGVyaXRlZERhdGEoY29uc3QgU3R5bGVSYXJlSW5oZXJpdGVk
RGEKICNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQogICAgICwgdGFwSGlnaGxpZ2h0Q29sb3Ioby50
YXBIaWdobGlnaHRDb2xvcikKICNlbmRpZgorI2lmIEVOQUJMRShEQVJLX01PREVfQ1NTKQorICAg
ICwgc3VwcG9ydGVkQ29sb3JTY2hlbWVzKG8uc3VwcG9ydGVkQ29sb3JTY2hlbWVzKQorI2VuZGlm
CiB7CiB9CiAKQEAgLTI5Niw2ICszMDcsOSBAQCBib29sIFN0eWxlUmFyZUluaGVyaXRlZERhdGE6
Om9wZXJhdG9yPT0oY29uc3QgU3R5bGVSYXJlSW5oZXJpdGVkRGF0YSYgbykgY29uc3QKICNlbmRp
ZgogI2lmIEVOQUJMRShURVhUX0FVVE9TSVpJTkcpCiAgICAgICAgICYmIHRleHRTaXplQWRqdXN0
ID09IG8udGV4dFNpemVBZGp1c3QKKyNlbmRpZgorI2lmIEVOQUJMRShEQVJLX01PREVfQ1NTKQor
ICAgICAgICAmJiBzdXBwb3J0ZWRDb2xvclNjaGVtZXMgPT0gby5zdXBwb3J0ZWRDb2xvclNjaGVt
ZXMKICNlbmRpZgogICAgICAgICAmJiB1c2VyU2VsZWN0ID09IG8udXNlclNlbGVjdAogICAgICAg
ICAmJiBzcGVha0FzID09IG8uc3BlYWtBcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N0eWxlL1N0eWxlUmFyZUluaGVyaXRlZERhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdHlsZS9TdHlsZVJhcmVJbmhlcml0ZWREYXRhLmgKaW5kZXggYTNhZDE3NTAzNGM5
ZjM3MWFlMTM1OGMyOGE1NDU4YWM4NGYwOGU5ZS4uYjJiZGRmZDQ3ZmI4OWJjZWNhZDExYThkZWM0
MDk1NjU5ZjAzODJmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxl
L1N0eWxlUmFyZUluaGVyaXRlZERhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3R5bGUvU3R5bGVSYXJlSW5oZXJpdGVkRGF0YS5oCkBAIC0zNyw2ICszNywxMCBAQAogI2luY2x1
ZGUgIlRleHRTaXplQWRqdXN0bWVudC5oIgogI2VuZGlmCiAKKyNpZiBFTkFCTEUoREFSS19NT0RF
X0NTUykKKyNpbmNsdWRlICJTdHlsZVN1cHBvcnRlZENvbG9yU2NoZW1lcy5oIgorI2VuZGlmCisK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQ3Vyc29yTGlzdDsKQEAgLTE4MSw2ICsxODUs
MTAgQEAgcHVibGljOgogICAgIENvbG9yIHRhcEhpZ2hsaWdodENvbG9yOwogI2VuZGlmCiAKKyNp
ZiBFTkFCTEUoREFSS19NT0RFX0NTUykKKyAgICBTdHlsZVN1cHBvcnRlZENvbG9yU2NoZW1lcyBz
dXBwb3J0ZWRDb2xvclNjaGVtZXM7CisjZW5kaWYKKwogcHJpdmF0ZToKICAgICBTdHlsZVJhcmVJ
bmhlcml0ZWREYXRhKCk7CiAgICAgU3R5bGVSYXJlSW5oZXJpdGVkRGF0YShjb25zdCBTdHlsZVJh
cmVJbmhlcml0ZWREYXRhJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3R5bGUvU3R5bGVTdXBwb3J0ZWRDb2xvclNjaGVtZXMuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdHlsZS9TdHlsZVN1cHBvcnRlZENvbG9yU2NoZW1lcy5oCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZiNmY5
NDk5YjEzNWViNGQ5OGVlNjgyYmIxYjUwYWI4MTY1ODM1MzMKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVTdXBwb3J0ZWRDb2xvclNjaGVtZXMu
aApAQCAtMCwwICsxLDcxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFC
TEUoREFSS19NT0RFX0NTUykKKworI2luY2x1ZGUgIlJlbmRlclN0eWxlQ29uc3RhbnRzLmgiCisj
aW5jbHVkZSA8d3RmL09wdGlvblNldC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNz
IFN0eWxlU3VwcG9ydGVkQ29sb3JTY2hlbWVzIHsKK3B1YmxpYzoKKyAgICBTdHlsZVN1cHBvcnRl
ZENvbG9yU2NoZW1lcygpCisgICAgICAgIDogbV9jb2xvclNjaGVtZXMoMCkgeyB9CisKKyAgICBT
dHlsZVN1cHBvcnRlZENvbG9yU2NoZW1lcyhjb25zdCBTdHlsZVN1cHBvcnRlZENvbG9yU2NoZW1l
cyYgb3RoZXIpCisgICAgICAgIDogbV9jb2xvclNjaGVtZXMob3RoZXIubV9jb2xvclNjaGVtZXMp
LCBtX2FsbG93c1RyYW5zZm9ybWF0aW9ucyhvdGhlci5tX2FsbG93c1RyYW5zZm9ybWF0aW9ucykg
eyB9CisKKyAgICBTdHlsZVN1cHBvcnRlZENvbG9yU2NoZW1lcyhPcHRpb25TZXQ8Q29sb3JTY2hl
bWVzPiBjb2xvclNjaGVtZXMsIGJvb2wgYWxsb3dzVHJhbnNmb3JtYXRpb25zKQorICAgICAgICA6
IG1fY29sb3JTY2hlbWVzKGNvbG9yU2NoZW1lcy50b1JhdygpKSwgbV9hbGxvd3NUcmFuc2Zvcm1h
dGlvbnMoYWxsb3dzVHJhbnNmb3JtYXRpb25zKSB7IH0KKworICAgIGJvb2wgb3BlcmF0b3I9PShj
b25zdCBTdHlsZVN1cHBvcnRlZENvbG9yU2NoZW1lcyYgb3RoZXIpIGNvbnN0CisgICAgeworICAg
ICAgICByZXR1cm4gbV9jb2xvclNjaGVtZXMgPT0gb3RoZXIubV9jb2xvclNjaGVtZXMgJiYgbV9h
bGxvd3NUcmFuc2Zvcm1hdGlvbnMgPT0gb3RoZXIubV9hbGxvd3NUcmFuc2Zvcm1hdGlvbnM7Cisg
ICAgfQorCisgICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFN0eWxlU3VwcG9ydGVkQ29sb3JTY2hl
bWVzJiBvdGhlcikgY29uc3QgeyByZXR1cm4gISgqdGhpcyA9PSBvdGhlcik7IH0KKworICAgIGJv
b2wgaXNBdXRvKCkgY29uc3QgeyByZXR1cm4gIW1fY29sb3JTY2hlbWVzICYmIG1fYWxsb3dzVHJh
bnNmb3JtYXRpb25zOyB9CisgICAgYm9vbCBpc09ubHkoKSBjb25zdCB7IHJldHVybiAhbV9jb2xv
clNjaGVtZXMgJiYgIW1fYWxsb3dzVHJhbnNmb3JtYXRpb25zOyB9CisKKyAgICBPcHRpb25TZXQ8
Q29sb3JTY2hlbWVzPiBjb2xvclNjaGVtZXMoKSBjb25zdCB7IHJldHVybiBPcHRpb25TZXQ8Q29s
b3JTY2hlbWVzPjo6ZnJvbVJhdyhtX2NvbG9yU2NoZW1lcyk7IH0KKworICAgIHZvaWQgYWRkKENv
bG9yU2NoZW1lcyBjb2xvclNjaGVtZSkgeyBtX2NvbG9yU2NoZW1lcyB8PSBzdGF0aWNfY2FzdDx1
bnNpZ25lZD4oY29sb3JTY2hlbWUpOyB9CisgICAgYm9vbCBjb250YWlucyhDb2xvclNjaGVtZXMg
Y29sb3JTY2hlbWUpIGNvbnN0IHsgcmV0dXJuICEhKG1fY29sb3JTY2hlbWVzICYgc3RhdGljX2Nh
c3Q8dW5zaWduZWQ+KGNvbG9yU2NoZW1lKSk7IH0KKworICAgIHZvaWQgc2V0QWxsb3dzVHJhbnNm
b3JtYXRpb25zKGJvb2wgYWxsb3cpIHsgbV9hbGxvd3NUcmFuc2Zvcm1hdGlvbnMgPSBhbGxvdzsg
fQorICAgIGJvb2wgYWxsb3dzVHJhbnNmb3JtYXRpb25zKCkgY29uc3QgeyByZXR1cm4gbV9hbGxv
d3NUcmFuc2Zvcm1hdGlvbnM7IH0KKworcHJpdmF0ZToKKyAgICB1bnNpZ25lZCBtX2NvbG9yU2No
ZW1lcyA6IENvbG9yU2NoZW1lc0JpdHM7IC8vIENvbG9yU2NoZW1lcworICAgIGJvb2wgbV9hbGxv
d3NUcmFuc2Zvcm1hdGlvbnMgeyB0cnVlIH07Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CisKKyNlbmRpZiAvLyBFTkFCTEUoREFSS19NT0RFX0NTUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3Jh
cGhpY3MvU1ZHSW1hZ2UuY3BwCmluZGV4IDkxZWY4NTE0ZTU4M2VkMzUzODBlN2FjNzgyN2QxYmQw
ZjgyNTQwNGEuLjA2MDk3ZWNjYmJlM2MyZTZjNjJhNDU5ZGMxOGViMTYyZDQ5OTQ4YTkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmNwcApAQCAtNDcsNiArNDcsNyBAQAog
I2luY2x1ZGUgIlBhZ2VDb25maWd1cmF0aW9uLmgiCiAjaW5jbHVkZSAiUmVuZGVyU1ZHUm9vdC5o
IgogI2luY2x1ZGUgIlJlbmRlclN0eWxlLmgiCisjaW5jbHVkZSAiUmVuZGVyVmlldy5oIgogI2lu
Y2x1ZGUgIlNWR0RvY3VtZW50LmgiCiAjaW5jbHVkZSAiU1ZHRkVJbWFnZUVsZW1lbnQuaCIKICNp
bmNsdWRlICJTVkdGb3JlaWduT2JqZWN0RWxlbWVudC5oIgpAQCAtMzI0LDggKzMyNSw3IEBAIElt
YWdlRHJhd1Jlc3VsdCBTVkdJbWFnZTo6ZHJhdyhHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNv
bnN0IEZsb2F0UmVjdCYgZHN0UmVjCiAgICAgfQogCiAjaWYgUExBVEZPUk0oTUFDKQotICAgIGF1
dG8qIGRvY3VtZW50ID0gbV9wYWdlLT5tYWluRnJhbWUoKS5kb2N1bWVudCgpOwotICAgIExvY2Fs
RGVmYXVsdFN5c3RlbUFwcGVhcmFuY2UgbG9jYWxBcHBlYXJhbmNlKGRvY3VtZW50ID8gZG9jdW1l
bnQtPnVzZURhcmtBcHBlYXJhbmNlKCkgOiBmYWxzZSk7CisgICAgTG9jYWxEZWZhdWx0U3lzdGVt
QXBwZWFyYW5jZSBsb2NhbEFwcGVhcmFuY2Uodmlldy0+cmVuZGVyVmlldygpLT51c2VEYXJrQXBw
ZWFyYW5jZSgpKTsKICNlbmRpZgogCiAgICAgdmlldy0+cGFpbnQoY29udGV4dCwgaW50ZXJzZWN0
aW9uKGNvbnRleHQuY2xpcEJvdW5kcygpLCBlbmNsb3NpbmdJbnRSZWN0KHNyY1JlY3QpKSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvRE9NL0lu
amVjdGVkQnVuZGxlUmFuZ2VIYW5kbGUuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0lu
amVjdGVkQnVuZGxlL0RPTS9JbmplY3RlZEJ1bmRsZVJhbmdlSGFuZGxlLmNwcAppbmRleCAzZjRm
NTY3ZGM0YmFlNjE4NTU1MjUyMDg3NGY1ZmViNTVjODhmYzIxLi40YmZkZDdmOWY0YzRjYzRkZmE2
ZGVhYWJjMDFmNGE2YzExMWVkYWNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvSW5qZWN0ZWRCdW5kbGUvRE9NL0luamVjdGVkQnVuZGxlUmFuZ2VIYW5kbGUuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9ET00vSW5qZWN0ZWRCdW5k
bGVSYW5nZUhhbmRsZS5jcHAKQEAgLTQxLDYgKzQxLDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL0pT
UmFuZ2UuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1BhZ2UuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Jh
bmdlLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9SZW5kZXJWaWV3Lmg+CiAjaW5jbHVkZSA8V2ViQ29y
ZS9WaXNpYmxlU2VsZWN0aW9uLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRl
IDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KQEAgLTEyNCw3ICsxMjUsOCBAQCBSZWZQdHI8V2ViSW1h
Z2U+IEluamVjdGVkQnVuZGxlUmFuZ2VIYW5kbGU6OnJlbmRlcmVkSW1hZ2UoU25hcHNob3RPcHRp
b25zIG9wdGlvbgogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogI2lmIFBMQVRGT1JNKE1BQykK
LSAgICBMb2NhbERlZmF1bHRTeXN0ZW1BcHBlYXJhbmNlIGxvY2FsQXBwZWFyYW5jZShvd25lckRv
Y3VtZW50LnVzZURhcmtBcHBlYXJhbmNlKCkpOworICAgIFJlbmRlclZpZXcqIHJlbmRlclZpZXcg
PSBmcmFtZVZpZXctPnJlbmRlclZpZXcoKTsKKyAgICBMb2NhbERlZmF1bHRTeXN0ZW1BcHBlYXJh
bmNlIGxvY2FsQXBwZWFyYW5jZShyZW5kZXJWaWV3ID8gcmVuZGVyVmlldy0+dXNlRGFya0FwcGVh
cmFuY2UoKSA6IGZhbHNlKTsKICNlbmRpZgogCiAgICAgUmVmPEZyYW1lPiBwcm90ZWN0b3IoKmZy
YW1lKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBh
Z2UuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKaW5k
ZXggODBjNTM4M2EyZTU0ODU0ZTczYzg3NjUzN2ZjYzY0ZjIzY2RmMWJmNy4uMmY1NGQ1ZGZkNGFk
NTcyMWY5MzlkOTQ2OTY3MzFmNjYxM2E4OGQ3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKQEAgLTE1NTYsOCArMTU1Niw4IEBAIHZvaWQgV2ViUGFn
ZTo6c2Nyb2xsTWFpbkZyYW1lSWZOb3RBdE1heFNjcm9sbFBvc2l0aW9uKGNvbnN0IEludFNpemUm
IHNjcm9sbE9mZnNlCiB2b2lkIFdlYlBhZ2U6OmRyYXdSZWN0KEdyYXBoaWNzQ29udGV4dCYgZ3Jh
cGhpY3NDb250ZXh0LCBjb25zdCBJbnRSZWN0JiByZWN0KQogewogI2lmIFBMQVRGT1JNKE1BQykK
LSAgICBhdXRvKiBkb2N1bWVudCA9IG1fbWFpbkZyYW1lLT5jb3JlRnJhbWUoKS0+ZG9jdW1lbnQo
KTsKLSAgICBMb2NhbERlZmF1bHRTeXN0ZW1BcHBlYXJhbmNlIGxvY2FsQXBwZWFyYW5jZShkb2N1
bWVudCA/IGRvY3VtZW50LT51c2VEYXJrQXBwZWFyYW5jZSgpIDogZmFsc2UpOworICAgIFJlbmRl
clZpZXcqIHJlbmRlclZpZXcgPSBtX3BhZ2UtPm1haW5GcmFtZSgpLnZpZXcoKS0+cmVuZGVyVmll
dygpOworICAgIExvY2FsRGVmYXVsdFN5c3RlbUFwcGVhcmFuY2UgbG9jYWxBcHBlYXJhbmNlKHJl
bmRlclZpZXcgPyByZW5kZXJWaWV3LT51c2VEYXJrQXBwZWFyYW5jZSgpIDogZmFsc2UpOwogI2Vu
ZGlmCiAKICAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoZ3JhcGhpY3ND
b250ZXh0KTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3Rz
L0NoYW5nZUxvZwppbmRleCAyZmRhNGIxNjNiMjFlZDFjMmY5MjEyMmM3NjAzMTI0MmQwYjRjN2M5
Li5kOWQyMmEzMjg2NzE4ODIwMGM2YTIzZmZiNTcwY2VmODVhNzRkOTMxIDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMTYgQEAKKzIwMTgtMTEtMDggIFRpbW90aHkgSGF0Y2hlciAgPHRpbW90aHlAYXBwbGUuY29t
PgorCisgICAgICAgIEFkZCBleHBlcmltZW50YWwgc3VwcG9ydCBmb3IgYSBgc3VwcG9ydGVkLWNv
bG9yLXNjaGVtZXNgIENTUyBwcm9wZXJ0eS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE5MTMxOQorICAgICAgICByZGFyOi8vcHJvYmxlbS80NTg1MjI2
MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogY3Nz
LWRhcmstbW9kZS9wYXJzZS1zdXBwb3J0ZWQtY29sb3Itc2NoZW1lcy1leHBlY3RlZC50eHQ6IEFk
ZGVkLgorICAgICAgICAqIGNzcy1kYXJrLW1vZGUvcGFyc2Utc3VwcG9ydGVkLWNvbG9yLXNjaGVt
ZXMuaHRtbDogQWRkZWQuCisgICAgICAgICogY3NzLWRhcmstbW9kZS9zdXBwb3J0ZWQtY29sb3It
c2NoZW1lcy1jc3MtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBjc3MtZGFyay1tb2Rl
L3N1cHBvcnRlZC1jb2xvci1zY2hlbWVzLWNzcy5odG1sOiBBZGRlZC4KKwogMjAxOC0xMS0wNyAg
SnVzdGluIE1pY2hhdWQgIDxqdXN0aW5fbWljaGF1ZEBhcHBsZS5jb20+CiAKICAgICAgICAgQ1NT
IFBhaW50aW5nIEFQSSBzaG91bGQgcGFzcyBzaXplLCBhcmd1bWVudHMgYW5kIGlucHV0IHByb3Bl
cnRpZXMgdG8gcGFpbnQgY2FsbGJhY2sKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Nzcy1kYXJr
LW1vZGUvcGFyc2Utc3VwcG9ydGVkLWNvbG9yLXNjaGVtZXMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0
VGVzdHMvY3NzLWRhcmstbW9kZS9wYXJzZS1zdXBwb3J0ZWQtY29sb3Itc2NoZW1lcy1leHBlY3Rl
ZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uMmEyODdmNWMzYTBhMDRlODNhYmJiMWE5YjQ0MWMxYTc4ZGVjMzc0
NQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Nzcy1kYXJrLW1vZGUvcGFyc2Utc3Vw
cG9ydGVkLWNvbG9yLXNjaGVtZXMtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNCBAQAorCitQQVNT
IFRlc3QgdmFsaWQgdmFsdWVzIAorUEFTUyBUZXN0IGludmFsaWQgdmFsdWVzIAorCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9jc3MtZGFyay1tb2RlL3BhcnNlLXN1cHBvcnRlZC1jb2xvci1zY2hl
bWVzLmh0bWwgYi9MYXlvdXRUZXN0cy9jc3MtZGFyay1tb2RlL3BhcnNlLXN1cHBvcnRlZC1jb2xv
ci1zY2hlbWVzLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMWJjMTBhODI1ZDczZmIzNzVhYTU4ZTk1ODNjZmQ4
MjQxNjliMDI5ZgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Nzcy1kYXJrLW1vZGUv
cGFyc2Utc3VwcG9ydGVkLWNvbG9yLXNjaGVtZXMuaHRtbApAQCAtMCwwICsxLDEyOCBAQAorPCFE
T0NUWVBFIGh0bWw+CisKKzwhLS0gd2Via2l0LXRlc3QtcnVubmVyIFsgZXhwZXJpbWVudGFsOkRh
cmtNb2RlQ1NTRW5hYmxlZD10cnVlIF0gLS0+CisKKzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMv
dGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy90ZXN0
aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+CisKKzxzdHlsZT4KKyN0ZXN0QXV0byB7CisgICAg
c3VwcG9ydGVkLWNvbG9yLXNjaGVtZXM6IGF1dG87Cit9CisKKyN0ZXN0T25seSB7CisgICAgc3Vw
cG9ydGVkLWNvbG9yLXNjaGVtZXM6IG9ubHk7Cit9CisKKyN0ZXN0TGlnaHQgeworICAgIHN1cHBv
cnRlZC1jb2xvci1zY2hlbWVzOiBsaWdodDsKK30KKworI3Rlc3REYXJrIHsKKyAgICBzdXBwb3J0
ZWQtY29sb3Itc2NoZW1lczogZGFyazsKK30KKworI3Rlc3RMaWdodERhcmsgeworICAgIHN1cHBv
cnRlZC1jb2xvci1zY2hlbWVzOiBsaWdodCBkYXJrOworfQorCisjdGVzdERhcmtMaWdodCB7Cisg
ICAgc3VwcG9ydGVkLWNvbG9yLXNjaGVtZXM6IGRhcmsgbGlnaHQ7Cit9CisKKyN0ZXN0TGlnaHRE
YXJrT25seSB7CisgICAgc3VwcG9ydGVkLWNvbG9yLXNjaGVtZXM6IGxpZ2h0IGRhcmsgb25seTsK
K30KKworI3Rlc3RPbmx5RGFyayB7CisgICAgc3VwcG9ydGVkLWNvbG9yLXNjaGVtZXM6IG9ubHkg
ZGFyazsKK30KKworI3Rlc3RMaWdodE9ubHlEYXJrIHsKKyAgICBzdXBwb3J0ZWQtY29sb3Itc2No
ZW1lczogbGlnaHQgb25seSBkYXJrOworfQorCisjdGVzdExpZ2h0VW5rbm93biB7CisgICAgc3Vw
cG9ydGVkLWNvbG9yLXNjaGVtZXM6IGxpZ2h0IGZvbzsKK30KKworI3Rlc3RVbmtub3duRGFya09u
bHkgeworICAgIHN1cHBvcnRlZC1jb2xvci1zY2hlbWVzOiBiYXIgZGFyayBvbmx5OworfQorCisj
dGVzdExpZ2h0VW5rbm93bk9ubHkgeworICAgIHN1cHBvcnRlZC1jb2xvci1zY2hlbWVzOiBsaWdo
dCBiYXogb25seTsKK30KKworI3Rlc3RJbnZhbGlkTGlnaHRBdXRvIHsKKyAgICBzdXBwb3J0ZWQt
Y29sb3Itc2NoZW1lczogbGlnaHQgYXV0bzsKK30KKworI3Rlc3RJbnZhbGlkQXV0b0Rhcmsgewor
ICAgIHN1cHBvcnRlZC1jb2xvci1zY2hlbWVzOiBhdXRvIGRhcms7Cit9CisKKyN0ZXN0SW52YWxp
ZExpZ2h0RGFya0xpZ2h0IHsKKyAgICBzdXBwb3J0ZWQtY29sb3Itc2NoZW1lczogbGlnaHQgZGFy
ayBsaWdodDsKK30KKworI3Rlc3RJbnZhbGlkTnVtYmVyIHsKKyAgICBzdXBwb3J0ZWQtY29sb3It
c2NoZW1lczogNDI7Cit9CisKKyN0ZXN0SW52YWxpZFN0cmluZyB7CisgICAgc3VwcG9ydGVkLWNv
bG9yLXNjaGVtZXM6ICJmb28iOworfQorCisjdGVzdEludmFsaWRMaWdodFN0cmluZyB7CisgICAg
c3VwcG9ydGVkLWNvbG9yLXNjaGVtZXM6IGxpZ2h0ICJmb28iOworfQorPC9zdHlsZT4KKworPGRp
diBpZD0idGVzdEF1dG8iPjwvZGl2PgorPGRpdiBpZD0idGVzdE9ubHkiPjwvZGl2PgorPGRpdiBp
ZD0idGVzdExpZ2h0Ij48L2Rpdj4KKzxkaXYgaWQ9InRlc3REYXJrIj48L2Rpdj4KKzxkaXYgaWQ9
InRlc3RMaWdodERhcmsiPjwvZGl2PgorPGRpdiBpZD0idGVzdERhcmtMaWdodCI+PC9kaXY+Cis8
ZGl2IGlkPSJ0ZXN0TGlnaHREYXJrT25seSI+PC9kaXY+Cis8ZGl2IGlkPSJ0ZXN0T25seURhcmsi
PjwvZGl2PgorPGRpdiBpZD0idGVzdExpZ2h0T25seURhcmsiPjwvZGl2PgorPGRpdiBpZD0idGVz
dExpZ2h0VW5rbm93biI+PC9kaXY+Cis8ZGl2IGlkPSJ0ZXN0VW5rbm93bkRhcmtPbmx5Ij48L2Rp
dj4KKworPGRpdiBpZD0idGVzdEludmFsaWRMaWdodEF1dG8iPjwvZGl2PgorPGRpdiBpZD0idGVz
dEludmFsaWRBdXRvRGFyayI+PC9kaXY+Cis8ZGl2IGlkPSJ0ZXN0SW52YWxpZExpZ2h0RGFya0xp
Z2h0Ij48L2Rpdj4KKzxkaXYgaWQ9InRlc3RJbnZhbGlkTnVtYmVyIj48L2Rpdj4KKzxkaXYgaWQ9
InRlc3RJbnZhbGlkU3RyaW5nIj48L2Rpdj4KKzxkaXYgaWQ9InRlc3RJbnZhbGlkTGlnaHRTdHJp
bmciPjwvZGl2PgorCis8c2NyaXB0PgorZnVuY3Rpb24gdGVzdF9wcm9wKGlkLCBwcm9wZXJ0eSwg
ZXhwZWN0ZWQpIHsKKyAgICBhc3NlcnRfZXF1YWxzKHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKGlkKSkuZ2V0UHJvcGVydHlWYWx1ZShwcm9wZXJ0eSksIGV4
cGVjdGVkKTsKK30KKwordGVzdChmdW5jdGlvbigpIHsKKyAgICB0ZXN0X3Byb3AoInRlc3RBdXRv
IiwgInN1cHBvcnRlZC1jb2xvci1zY2hlbWVzIiwgImF1dG8iKTsKKyAgICB0ZXN0X3Byb3AoInRl
c3RPbmx5IiwgInN1cHBvcnRlZC1jb2xvci1zY2hlbWVzIiwgImxpZ2h0IG9ubHkiKTsKKyAgICB0
ZXN0X3Byb3AoInRlc3RMaWdodCIsICJzdXBwb3J0ZWQtY29sb3Itc2NoZW1lcyIsICJsaWdodCIp
OworICAgIHRlc3RfcHJvcCgidGVzdERhcmsiLCAic3VwcG9ydGVkLWNvbG9yLXNjaGVtZXMiLCAi
ZGFyayIpOworICAgIHRlc3RfcHJvcCgidGVzdExpZ2h0RGFyayIsICJzdXBwb3J0ZWQtY29sb3It
c2NoZW1lcyIsICJsaWdodCBkYXJrIik7CisgICAgdGVzdF9wcm9wKCJ0ZXN0RGFya0xpZ2h0Iiwg
InN1cHBvcnRlZC1jb2xvci1zY2hlbWVzIiwgImxpZ2h0IGRhcmsiKTsKKyAgICB0ZXN0X3Byb3Ao
InRlc3RMaWdodERhcmtPbmx5IiwgInN1cHBvcnRlZC1jb2xvci1zY2hlbWVzIiwgImxpZ2h0IGRh
cmsgb25seSIpOworICAgIHRlc3RfcHJvcCgidGVzdE9ubHlEYXJrIiwgInN1cHBvcnRlZC1jb2xv
ci1zY2hlbWVzIiwgImRhcmsgb25seSIpOworICAgIHRlc3RfcHJvcCgidGVzdExpZ2h0T25seURh
cmsiLCAic3VwcG9ydGVkLWNvbG9yLXNjaGVtZXMiLCAibGlnaHQgZGFyayBvbmx5Iik7CisgICAg
dGVzdF9wcm9wKCJ0ZXN0TGlnaHRVbmtub3duIiwgInN1cHBvcnRlZC1jb2xvci1zY2hlbWVzIiwg
ImxpZ2h0Iik7CisgICAgdGVzdF9wcm9wKCJ0ZXN0VW5rbm93bkRhcmtPbmx5IiwgInN1cHBvcnRl
ZC1jb2xvci1zY2hlbWVzIiwgImRhcmsgb25seSIpOworfSwgIlRlc3QgdmFsaWQgdmFsdWVzIik7
CisKK3Rlc3QoZnVuY3Rpb24oKSB7CisgICAgdGVzdF9wcm9wKCJ0ZXN0SW52YWxpZExpZ2h0QXV0
byIsICJzdXBwb3J0ZWQtY29sb3Itc2NoZW1lcyIsICJhdXRvIik7CisgICAgdGVzdF9wcm9wKCJ0
ZXN0SW52YWxpZEF1dG9EYXJrIiwgInN1cHBvcnRlZC1jb2xvci1zY2hlbWVzIiwgImF1dG8iKTsK
KyAgICB0ZXN0X3Byb3AoInRlc3RJbnZhbGlkTGlnaHREYXJrTGlnaHQiLCAic3VwcG9ydGVkLWNv
bG9yLXNjaGVtZXMiLCAiYXV0byIpOworICAgIHRlc3RfcHJvcCgidGVzdEludmFsaWROdW1iZXIi
LCAic3VwcG9ydGVkLWNvbG9yLXNjaGVtZXMiLCAiYXV0byIpOworICAgIHRlc3RfcHJvcCgidGVz
dEludmFsaWRTdHJpbmciLCAic3VwcG9ydGVkLWNvbG9yLXNjaGVtZXMiLCAiYXV0byIpOworICAg
IHRlc3RfcHJvcCgidGVzdEludmFsaWRMaWdodFN0cmluZyIsICJzdXBwb3J0ZWQtY29sb3Itc2No
ZW1lcyIsICJhdXRvIik7Cit9LCAiVGVzdCBpbnZhbGlkIHZhbHVlcyIpOworPC9zY3JpcHQ+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9jc3MtZGFyay1tb2RlL3N1cHBvcnRlZC1jb2xvci1zY2hl
bWVzLWNzcy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9jc3MtZGFyay1tb2RlL3N1cHBvcnRl
ZC1jb2xvci1zY2hlbWVzLWNzcy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uY2RkZDU2ZjYzMzlj
MzNlNjJlYWZmNGY0YzYyODUxNzVlZWI0NWY0OAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2Nzcy1kYXJrLW1vZGUvc3VwcG9ydGVkLWNvbG9yLXNjaGVtZXMtY3NzLWV4cGVjdGVkLnR4
dApAQCAtMCwwICsxLDI4IEBACisKK1BBU1MgRWxlbWVudCBjb2xvcnMgYXJlIGNvcnJlY3QgaW4g
bGlnaHQgY29sb3Igc2NoZW1lIHdpdGggb25seSBsaWdodCBzdXBwb3J0ZWQgY29sb3Igc2NoZW1l
IAorUEFTUyBEYXJrIGNvbG9yIHNjaGVtZSBlbmFibGVkIAorUEFTUyBFbGVtZW50IGNvbG9ycyBh
cmUgY29ycmVjdCBpbiBkYXJrIGNvbG9yIHNjaGVtZSB3aXRoIG9ubHkgbGlnaHQgc3VwcG9ydGVk
IGNvbG9yIHNjaGVtZSAKK1BBU1MgTGlnaHQgY29sb3Igc2NoZW1lIGVuYWJsZWQgCitQQVNTIFN1
cHBvcnRlZCBjb2xvciBzY2hlbWVzIGNoYW5nZWQgdG8gbGlnaHQgYW5kIGRhcmsgCitQQVNTIEVs
ZW1lbnQgY29sb3JzIGFyZSBjb3JyZWN0IGluIGxpZ2h0IGNvbG9yIHNjaGVtZSB3aXRoIGxpZ2h0
IGFuZCBkYXJrIHN1cHBvcnRlZCBjb2xvciBzY2hlbWUgCitQQVNTIERhcmsgY29sb3Igc2NoZW1l
IGVuYWJsZWQgCitQQVNTIEVsZW1lbnQgY29sb3JzIGFyZSBjb3JyZWN0IGluIGRhcmsgY29sb3Ig
c2NoZW1lIHdpdGggbGlnaHQgYW5kIGRhcmsgc3VwcG9ydGVkIGNvbG9yIHNjaGVtZSAKK1BBU1Mg
TGlnaHQgY29sb3Igc2NoZW1lIGVuYWJsZWQgCitQQVNTIFN1cHBvcnRlZCBjb2xvciBzY2hlbWVz
IGNoYW5nZWQgdG8gZGFyayAKK1BBU1MgRWxlbWVudCBjb2xvcnMgYXJlIGNvcnJlY3QgaW4gbGln
aHQgY29sb3Igc2NoZW1lIHdpdGggb25seSBkYXJrIHN1cHBvcnRlZCBjb2xvciBzY2hlbWUgCitQ
QVNTIERhcmsgY29sb3Igc2NoZW1lIGVuYWJsZWQgCitQQVNTIEVsZW1lbnQgY29sb3JzIGFyZSBj
b3JyZWN0IGluIGRhcmsgY29sb3Igc2NoZW1lIHdpdGggb25seSBkYXJrIHN1cHBvcnRlZCBjb2xv
ciBzY2hlbWUgCitQQVNTIFN1cHBvcnRlZCBjb2xvciBzY2hlbWVzIGNoYW5nZWQgdG8gbGlnaHQg
YW5kIGEgYm9ndXMgdmFsdWUgCitQQVNTIEVsZW1lbnQgY29sb3JzIGFyZSBjb3JyZWN0IGluIGRh
cmsgY29sb3Igc2NoZW1lIHdpdGggb25seSBsaWdodCBzdXBwb3J0ZWQgY29sb3Igc2NoZW1lIAor
UEFTUyBTdXBwb3J0ZWQgY29sb3Igc2NoZW1lcyBjaGFuZ2VkIHRvIGF1dG8gdmFsdWUgCitQQVNT
IEVsZW1lbnQgY29sb3JzIGFyZSBjb3JyZWN0IGluIGRhcmsgY29sb3Igc2NoZW1lIHdpdGggaW1w
bGljaXQgbGlnaHQgc3VwcG9ydGVkIGNvbG9yIHNjaGVtZSAKK1BBU1MgU3VwcG9ydGVkIGNvbG9y
IHNjaGVtZXMgY2hhbmdlZCB0byBsaWdodCBhbmQgZGFyayB2aWEgPG1ldGE+IGVsZW1lbnQgCitQ
QVNTIEVsZW1lbnQgY29sb3JzIGFyZSBjb3JyZWN0IGluIGRhcmsgY29sb3Igc2NoZW1lIHdpdGgg
bGlnaHQgYW5kIGRhcmsgc3VwcG9ydGVkIGNvbG9yIHNjaGVtZSB2aWEgPG1ldGE+IGVsZW1lbnQg
CitQQVNTIFN1cHBvcnRlZCBjb2xvciBzY2hlbWVzIGNoYW5nZWQgdG8gbGlnaHQgdmFsdWUgCitQ
QVNTIEVsZW1lbnQgY29sb3JzIGFyZSBjb3JyZWN0IGluIGRhcmsgY29sb3Igc2NoZW1lIHdpdGgg
ZXhwbGljaXQgbGlnaHQsIG92ZXJyaWRpbmcgPG1ldGE+IGVsZW1lbnQgCitQQVNTIFJlbW92ZSB0
ZXN0IG1ldGEgZWxlbWVudCAKK1BBU1MgU3VwcG9ydGVkIGNvbG9yIHNjaGVtZXMgY2hhbmdlZCB0
byBsaWdodCBhbmQgZGFyayAKK1BBU1MgRWxlbWVudCBjb2xvcnMgYXJlIGNvcnJlY3QgaW4gZGFy
ayBjb2xvciBzY2hlbWUgd2l0aCBsaWdodCBhbmQgZGFyayBzdXBwb3J0ZWQgY29sb3Igc2NoZW1l
IAorUEFTUyBTdXBwb3J0ZWQgY29sb3Igc2NoZW1lcyBjaGFuZ2VkIHRvIGEgYm9ndXMgdmFsdWUg
YW5kIGRhcmsgCitQQVNTIEVsZW1lbnQgY29sb3JzIGFyZSBjb3JyZWN0IGluIGRhcmsgY29sb3Ig
c2NoZW1lIHdpdGggZGFyayBzdXBwb3J0ZWQgY29sb3Igc2NoZW1lIAorCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9jc3MtZGFyay1tb2RlL3N1cHBvcnRlZC1jb2xvci1zY2hlbWVzLWNzcy5odG1s
IGIvTGF5b3V0VGVzdHMvY3NzLWRhcmstbW9kZS9zdXBwb3J0ZWQtY29sb3Itc2NoZW1lcy1jc3Mu
aHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5iNmNhNjgwMWFmNGU3YTI0ZDg0NzBiMmQ5N2Q3MGUxOGY3NmI5Y2Zl
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvY3NzLWRhcmstbW9kZS9zdXBwb3J0ZWQt
Y29sb3Itc2NoZW1lcy1jc3MuaHRtbApAQCAtMCwwICsxLDE1MyBAQAorPCFET0NUWVBFIGh0bWw+
CisKKzwhLS0gd2Via2l0LXRlc3QtcnVubmVyIFsgZXhwZXJpbWVudGFsOkRhcmtNb2RlQ1NTRW5h
YmxlZD10cnVlIF0gLS0+CisKKzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3Mu
anMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9y
dC5qcyI+PC9zY3JpcHQ+CisKKzxzdHlsZT4KKyN0ZXN0MSB7CisgICAgY29sb3I6IHRleHQ7Cit9
Cis8L3N0eWxlPgorCis8ZGl2IGlkPSJ0ZXN0MSI+PC9kaXY+CisKKzxzY3JpcHQ+CitmdW5jdGlv
biB0ZXN0X3Byb3AoaWQsIHByb3AsIGV4cGVjdGVkKSB7CisgICAgYXNzZXJ0X2VxdWFscyh3aW5k
b3cuZ2V0Q29tcHV0ZWRTdHlsZShkb2N1bWVudC5nZXRFbGVtZW50QnlJZChpZCkpLmdldFByb3Bl
cnR5VmFsdWUocHJvcCksIGV4cGVjdGVkKTsKK30KKworZnVuY3Rpb24gdGVzdF9jb2xvcl9pc193
aGl0ZShpZCkgeworICAgIHRlc3RfcHJvcCgidGVzdDEiLCAiY29sb3IiLCAicmdiKDI1NSwgMjU1
LCAyNTUpIik7Cit9CisKK2Z1bmN0aW9uIHRlc3RfY29sb3JfaXNfYmxhY2soaWQpIHsKKyAgICB0
ZXN0X3Byb3AoInRlc3QxIiwgImNvbG9yIiwgInJnYigwLCAwLCAwKSIpOworfQorCit0ZXN0KGZ1
bmN0aW9uKCkgeworICAgIC8vIFRoZSBzZW1hbnRpYyB0ZXh0IGNvbG9yIHNob3VsZCBiZSBibGFj
ay4KKyAgICB0ZXN0X2NvbG9yX2lzX2JsYWNrKCJ0ZXN0MSIpOworfSwgIkVsZW1lbnQgY29sb3Jz
IGFyZSBjb3JyZWN0IGluIGxpZ2h0IGNvbG9yIHNjaGVtZSB3aXRoIG9ubHkgbGlnaHQgc3VwcG9y
dGVkIGNvbG9yIHNjaGVtZSIpOworCit0ZXN0KGZ1bmN0aW9uKCkgeworICAgIGlmICh3aW5kb3cu
aW50ZXJuYWxzKQorICAgICAgICBpbnRlcm5hbHMuc2V0dGluZ3Muc2V0VXNlRGFya0FwcGVhcmFu
Y2UodHJ1ZSk7Cit9LCAiRGFyayBjb2xvciBzY2hlbWUgZW5hYmxlZCIpOworCit0ZXN0KGZ1bmN0
aW9uKCkgeworICAgIC8vIFRoZSBzZW1hbnRpYyB0ZXh0IGNvbG9yIHNob3VsZCBiZSBibGFjaywg
YW5kIG5vdCBjaGFuZ2UuCisgICAgdGVzdF9jb2xvcl9pc19ibGFjaygidGVzdDEiKTsKK30sICJF
bGVtZW50IGNvbG9ycyBhcmUgY29ycmVjdCBpbiBkYXJrIGNvbG9yIHNjaGVtZSB3aXRoIG9ubHkg
bGlnaHQgc3VwcG9ydGVkIGNvbG9yIHNjaGVtZSIpOworCit0ZXN0KGZ1bmN0aW9uKCkgeworICAg
IGlmICh3aW5kb3cuaW50ZXJuYWxzKQorICAgICAgICBpbnRlcm5hbHMuc2V0dGluZ3Muc2V0VXNl
RGFya0FwcGVhcmFuY2UoZmFsc2UpOworfSwgIkxpZ2h0IGNvbG9yIHNjaGVtZSBlbmFibGVkIik7
CisKK3Rlc3QoZnVuY3Rpb24oKSB7CisgICAgZG9jdW1lbnQuYm9keS5zdHlsZS5zZXRQcm9wZXJ0
eSgic3VwcG9ydGVkLWNvbG9yLXNjaGVtZXMiLCAibGlnaHQgZGFyayIpOworfSwgIlN1cHBvcnRl
ZCBjb2xvciBzY2hlbWVzIGNoYW5nZWQgdG8gbGlnaHQgYW5kIGRhcmsiKTsKKwordGVzdChmdW5j
dGlvbigpIHsKKyAgICAvLyBUaGUgc2VtYW50aWMgdGV4dCBjb2xvciBzaG91bGQgYmUgYmxhY2su
CisgICAgdGVzdF9jb2xvcl9pc19ibGFjaygidGVzdDEiKTsKK30sICJFbGVtZW50IGNvbG9ycyBh
cmUgY29ycmVjdCBpbiBsaWdodCBjb2xvciBzY2hlbWUgd2l0aCBsaWdodCBhbmQgZGFyayBzdXBw
b3J0ZWQgY29sb3Igc2NoZW1lIik7CisKK3Rlc3QoZnVuY3Rpb24oKSB7CisgICAgaWYgKHdpbmRv
dy5pbnRlcm5hbHMpCisgICAgICAgIGludGVybmFscy5zZXR0aW5ncy5zZXRVc2VEYXJrQXBwZWFy
YW5jZSh0cnVlKTsKK30sICJEYXJrIGNvbG9yIHNjaGVtZSBlbmFibGVkIik7CisKK3Rlc3QoZnVu
Y3Rpb24oKSB7CisgICAgLy8gVGhlIHNlbWFudGljIHRleHQgY29sb3Igc2hvdWxkIGJlIHdoaXRl
LgorICAgIHRlc3RfY29sb3JfaXNfd2hpdGUoInRlc3QxIik7Cit9LCAiRWxlbWVudCBjb2xvcnMg
YXJlIGNvcnJlY3QgaW4gZGFyayBjb2xvciBzY2hlbWUgd2l0aCBsaWdodCBhbmQgZGFyayBzdXBw
b3J0ZWQgY29sb3Igc2NoZW1lIik7CisKK3Rlc3QoZnVuY3Rpb24oKSB7CisgICAgaWYgKHdpbmRv
dy5pbnRlcm5hbHMpCisgICAgICAgIGludGVybmFscy5zZXR0aW5ncy5zZXRVc2VEYXJrQXBwZWFy
YW5jZShmYWxzZSk7Cit9LCAiTGlnaHQgY29sb3Igc2NoZW1lIGVuYWJsZWQiKTsKKwordGVzdChm
dW5jdGlvbigpIHsKKyAgICBkb2N1bWVudC5ib2R5LnN0eWxlLnNldFByb3BlcnR5KCJzdXBwb3J0
ZWQtY29sb3Itc2NoZW1lcyIsICJkYXJrIik7Cit9LCAiU3VwcG9ydGVkIGNvbG9yIHNjaGVtZXMg
Y2hhbmdlZCB0byBkYXJrIik7CisKK3Rlc3QoZnVuY3Rpb24oKSB7CisgICAgLy8gVGhlIHNlbWFu
dGljIHRleHQgY29sb3Igc2hvdWxkIGJlIHdoaXRlLgorICAgIHRlc3RfY29sb3JfaXNfd2hpdGUo
InRlc3QxIik7Cit9LCAiRWxlbWVudCBjb2xvcnMgYXJlIGNvcnJlY3QgaW4gbGlnaHQgY29sb3Ig
c2NoZW1lIHdpdGggb25seSBkYXJrIHN1cHBvcnRlZCBjb2xvciBzY2hlbWUiKTsKKwordGVzdChm
dW5jdGlvbigpIHsKKyAgICBpZiAod2luZG93LmludGVybmFscykKKyAgICAgICAgaW50ZXJuYWxz
LnNldHRpbmdzLnNldFVzZURhcmtBcHBlYXJhbmNlKHRydWUpOworfSwgIkRhcmsgY29sb3Igc2No
ZW1lIGVuYWJsZWQiKTsKKwordGVzdChmdW5jdGlvbigpIHsKKyAgICAvLyBUaGUgc2VtYW50aWMg
dGV4dCBjb2xvciBzaG91bGQgYmUgd2hpdGUgc3RpbGwuCisgICAgdGVzdF9jb2xvcl9pc193aGl0
ZSgidGVzdDEiKTsKK30sICJFbGVtZW50IGNvbG9ycyBhcmUgY29ycmVjdCBpbiBkYXJrIGNvbG9y
IHNjaGVtZSB3aXRoIG9ubHkgZGFyayBzdXBwb3J0ZWQgY29sb3Igc2NoZW1lIik7CisKK3Rlc3Qo
ZnVuY3Rpb24oKSB7CisgICAgZG9jdW1lbnQuYm9keS5zdHlsZS5zZXRQcm9wZXJ0eSgic3VwcG9y
dGVkLWNvbG9yLXNjaGVtZXMiLCAibGlnaHQgZm9vIik7Cit9LCAiU3VwcG9ydGVkIGNvbG9yIHNj
aGVtZXMgY2hhbmdlZCB0byBsaWdodCBhbmQgYSBib2d1cyB2YWx1ZSIpOworCit0ZXN0KGZ1bmN0
aW9uKCkgeworICAgIC8vIFRoZSBzZW1hbnRpYyB0ZXh0IGNvbG9yIHNob3VsZCBiZSBibGFjayBh
Z2Fpbi4KKyAgICB0ZXN0X2NvbG9yX2lzX2JsYWNrKCJ0ZXN0MSIpOworfSwgIkVsZW1lbnQgY29s
b3JzIGFyZSBjb3JyZWN0IGluIGRhcmsgY29sb3Igc2NoZW1lIHdpdGggb25seSBsaWdodCBzdXBw
b3J0ZWQgY29sb3Igc2NoZW1lIik7CisKK3Rlc3QoZnVuY3Rpb24oKSB7CisgICAgZG9jdW1lbnQu
Ym9keS5zdHlsZS5zZXRQcm9wZXJ0eSgic3VwcG9ydGVkLWNvbG9yLXNjaGVtZXMiLCAiYXV0byIp
OworfSwgIlN1cHBvcnRlZCBjb2xvciBzY2hlbWVzIGNoYW5nZWQgdG8gYXV0byB2YWx1ZSIpOwor
Cit0ZXN0KGZ1bmN0aW9uKCkgeworICAgIC8vIFRoZSBzZW1hbnRpYyB0ZXh0IGNvbG9yIHNob3Vs
ZCBiZSBibGFjayBzdGlsbC4KKyAgICB0ZXN0X2NvbG9yX2lzX2JsYWNrKCJ0ZXN0MSIpOworfSwg
IkVsZW1lbnQgY29sb3JzIGFyZSBjb3JyZWN0IGluIGRhcmsgY29sb3Igc2NoZW1lIHdpdGggaW1w
bGljaXQgbGlnaHQgc3VwcG9ydGVkIGNvbG9yIHNjaGVtZSIpOworCit0ZXN0KGZ1bmN0aW9uKCkg
eworICAgIGxldCBtZXRhID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgibWV0YSIpOworICAgIG1l
dGEuaWQgPSAidGVzdC1tZXRhIjsKKyAgICBtZXRhLm5hbWUgPSAic3VwcG9ydGVkLWNvbG9yLXNj
aGVtZXMiOworICAgIG1ldGEuY29udGVudCA9ICJsaWdodCBkYXJrIjsKKyAgICBkb2N1bWVudC5o
ZWFkLmFwcGVuZENoaWxkKG1ldGEpOworfSwgIlN1cHBvcnRlZCBjb2xvciBzY2hlbWVzIGNoYW5n
ZWQgdG8gbGlnaHQgYW5kIGRhcmsgdmlhIDxtZXRhPiBlbGVtZW50Iik7CisKK3Rlc3QoZnVuY3Rp
b24oKSB7CisgICAgLy8gVGhlIHNlbWFudGljIHRleHQgY29sb3Igc2hvdWxkIGJlIHdoaXRlIG5v
dy4KKyAgICB0ZXN0X2NvbG9yX2lzX3doaXRlKCJ0ZXN0MSIpOworfSwgIkVsZW1lbnQgY29sb3Jz
IGFyZSBjb3JyZWN0IGluIGRhcmsgY29sb3Igc2NoZW1lIHdpdGggbGlnaHQgYW5kIGRhcmsgc3Vw
cG9ydGVkIGNvbG9yIHNjaGVtZSB2aWEgPG1ldGE+IGVsZW1lbnQiKTsKKwordGVzdChmdW5jdGlv
bigpIHsKKyAgICBkb2N1bWVudC5ib2R5LnN0eWxlLnNldFByb3BlcnR5KCJzdXBwb3J0ZWQtY29s
b3Itc2NoZW1lcyIsICJsaWdodCIpOworfSwgIlN1cHBvcnRlZCBjb2xvciBzY2hlbWVzIGNoYW5n
ZWQgdG8gbGlnaHQgdmFsdWUiKTsKKwordGVzdChmdW5jdGlvbigpIHsKKyAgICAvLyBUaGUgc2Vt
YW50aWMgdGV4dCBjb2xvciBzaG91bGQgYmUgYmxhY2sgYWdhaW4uCisgICAgdGVzdF9jb2xvcl9p
c19ibGFjaygidGVzdDEiKTsKK30sICJFbGVtZW50IGNvbG9ycyBhcmUgY29ycmVjdCBpbiBkYXJr
IGNvbG9yIHNjaGVtZSB3aXRoIGV4cGxpY2l0IGxpZ2h0LCBvdmVycmlkaW5nIDxtZXRhPiBlbGVt
ZW50Iik7CisKK3Rlc3QoZnVuY3Rpb24oKSB7CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
InRlc3QtbWV0YSIpLnJlbW92ZSgpOworfSwgIlJlbW92ZSB0ZXN0IG1ldGEgZWxlbWVudCIpOwor
Cit0ZXN0KGZ1bmN0aW9uKCkgeworICAgIGRvY3VtZW50LmJvZHkuc3R5bGUuc2V0UHJvcGVydHko
InN1cHBvcnRlZC1jb2xvci1zY2hlbWVzIiwgImxpZ2h0IGRhcmsiKTsKK30sICJTdXBwb3J0ZWQg
Y29sb3Igc2NoZW1lcyBjaGFuZ2VkIHRvIGxpZ2h0IGFuZCBkYXJrIik7CisKK3Rlc3QoZnVuY3Rp
b24oKSB7CisgICAgLy8gVGhlIHNlbWFudGljIHRleHQgY29sb3Igc2hvdWxkIGJlIHdoaXRlIG5v
dy4KKyAgICB0ZXN0X2NvbG9yX2lzX3doaXRlKCJ0ZXN0MSIpOworfSwgIkVsZW1lbnQgY29sb3Jz
IGFyZSBjb3JyZWN0IGluIGRhcmsgY29sb3Igc2NoZW1lIHdpdGggbGlnaHQgYW5kIGRhcmsgc3Vw
cG9ydGVkIGNvbG9yIHNjaGVtZSIpOworCit0ZXN0KGZ1bmN0aW9uKCkgeworICAgIGRvY3VtZW50
LmJvZHkuc3R5bGUuc2V0UHJvcGVydHkoInN1cHBvcnRlZC1jb2xvci1zY2hlbWVzIiwgImZvbyBk
YXJrIik7Cit9LCAiU3VwcG9ydGVkIGNvbG9yIHNjaGVtZXMgY2hhbmdlZCB0byBhIGJvZ3VzIHZh
bHVlIGFuZCBkYXJrIik7CisKK3Rlc3QoZnVuY3Rpb24oKSB7CisgICAgLy8gVGhlIHNlbWFudGlj
IHRleHQgY29sb3Igc2hvdWxkIGJlIHdoaXRlIHN0aWxsLgorICAgIHRlc3RfY29sb3JfaXNfd2hp
dGUoInRlc3QxIik7Cit9LCAiRWxlbWVudCBjb2xvcnMgYXJlIGNvcnJlY3QgaW4gZGFyayBjb2xv
ciBzY2hlbWUgd2l0aCBkYXJrIHN1cHBvcnRlZCBjb2xvciBzY2hlbWUiKTsKKzwvc2NyaXB0Pgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>354238</attachid>
            <date>2018-11-08 07:12:18 -0800</date>
            <delta_ts>2018-11-08 11:31:18 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-191319-20181108071217.patch</filename>
            <type>text/plain</type>
            <size>76598</size>
            <attacher name="Timothy Hatcher">timothy</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM3OTgyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjQzMjBlZTM0ODU0NzM2
NGYyMzE2MmRkMGQxNTVmMjM5MmMxMzkzMi4uYTk1NzNiODcxZjU3NTlmOTUzOWY2NjJlNDQwZTQy
ZTkxNGRiNGExZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEwNiBAQAorMjAxOC0xMS0wOCAgVGlt
b3RoeSBIYXRjaGVyICA8dGltb3RoeUBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIGV4cGVyaW1l
bnRhbCBzdXBwb3J0IGZvciBhIGBzdXBwb3J0ZWQtY29sb3Itc2NoZW1lc2AgQ1NTIHByb3BlcnR5
LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkxMzE5
CisgICAgICAgIHJkYXI6Ly9wcm9ibGVtLzQ1ODUyMjYxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGVzdHM6IGNzcy1kYXJrLW1vZGUvcGFyc2Utc3Vw
cG9ydGVkLWNvbG9yLXNjaGVtZXMuaHRtbAorICAgICAgICAgICAgICAgY3NzLWRhcmstbW9kZS9z
dXBwb3J0ZWQtY29sb3Itc2NoZW1lcy1jc3MuaHRtbAorCisgICAgICAgICogV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGNzcy9DU1NDb21wdXRlZFN0eWxlRGVj
bGFyYXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29tcHV0ZWRTdHlsZUV4dHJhY3Rvcjo6
dmFsdWVGb3JQcm9wZXJ0eWluU3R5bGUpOgorICAgICAgICAqIGNzcy9DU1NQcm9wZXJ0aWVzLmpz
b246CisgICAgICAgICogY3NzL0NTU1ZhbHVlS2V5d29yZHMuaW46CisgICAgICAgICogY3NzL1N0
eWxlQnVpbGRlckNvbnZlcnRlci5oOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVCdWlsZGVyQ29u
dmVydGVyOjp1cGRhdGVTdXBwb3J0ZWRDb2xvclNjaGVtZXMpOgorICAgICAgICAoV2ViQ29yZTo6
U3R5bGVCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0U3VwcG9ydGVkQ29sb3JTY2hlbWVzKToKKyAg
ICAgICAgKiBjc3MvU3R5bGVSZXNvbHZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJl
c29sdmVyOjpjb2xvckZyb21QcmltaXRpdmVWYWx1ZSBjb25zdCk6CisgICAgICAgICogY3NzL3Bh
cnNlci9DU1NQcm9wZXJ0eVBhcnNlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjb25zdW1lU3Vw
cG9ydGVkQ29sb3JTY2hlbWVzKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1Byb3BlcnR5UGFyc2Vy
OjpwYXJzZVNpbmdsZVZhbHVlKToKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnJlc2V0TGlua0NvbG9yKToKKyAgICAgICAgKFdlYkNvcmU6
OkRvY3VtZW50OjpyZXNldFZpc2l0ZWRMaW5rQ29sb3IpOgorICAgICAgICAoV2ViQ29yZTo6RG9j
dW1lbnQ6OnJlc2V0QWN0aXZlTGlua0NvbG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50
Ojpwcm9jZXNzU3VwcG9ydGVkQ29sb3JTY2hlbWVzKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3Vt
ZW50Ojp1c2VEYXJrQXBwZWFyYW5jZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVu
dDo6c3R5bGVDb2xvck9wdGlvbnMgY29uc3QpOgorICAgICAgICAqIGRvbS9Eb2N1bWVudC5oOgor
ICAgICAgICAqIGVkaXRpbmcvY29jb2EvV2ViQ29udGVudFJlYWRlckNvY29hLm1tOgorICAgICAg
ICAoV2ViQ29yZTo6Y3JlYXRlRnJhZ21lbnQpOgorICAgICAgICAqIGh0bWwvY2FudmFzL0NhbnZh
c1JlbmRlcmluZ0NvbnRleHQyRC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNSZW5kZXJp
bmdDb250ZXh0MkQ6OmRyYXdGb2N1c0lmTmVlZGVkSW50ZXJuYWwpOgorICAgICAgICAqIGluc3Bl
Y3Rvci9JbnNwZWN0b3JPdmVybGF5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvck92
ZXJsYXk6OnBhaW50KToKKyAgICAgICAgKiBwYWdlL0ZyYW1lVmlldy5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpGcmFtZVZpZXc6OnVzZURhcmtBcHBlYXJhbmNlIGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6OkZyYW1lVmlldzo6cGFpbnRTY3JvbGxDb3JuZXIpOgorICAgICAgICAqIHBsYXRmb3Jt
L21hYy9EcmFnSW1hZ2VNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVEcmFnSW1hZ2VG
b3JMaW5rKToKKyAgICAgICAgKiByZW5kZXJpbmcvSW5saW5lRmxvd0JveC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpJbmxpbmVGbG93Qm94OjpwYWludEJveERlY29yYXRpb25zKToKKyAgICAgICAg
KiByZW5kZXJpbmcvSW5saW5lVGV4dEJveC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVU
ZXh0Qm94OjpwYWludFBsYXRmb3JtRG9jdW1lbnRNYXJrZXIpOgorICAgICAgICAqIHJlbmRlcmlu
Zy9SZW5kZXJCb3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94OjpwYWludFJvb3RC
b3hGaWxsTGF5ZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveDo6cGFpbnRCYWNrZ3Jv
dW5kKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJFbGVtZW50OjpzZWxlY3Rpb25Db2xvciBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJFbGVtZW50OjpzZWxlY3Rpb25CYWNrZ3JvdW5kQ29sb3IgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRWxlbWVudDo6cGFpbnRGb2N1c1JpbmcpOgorICAgICAg
ICAqIHJlbmRlcmluZy9SZW5kZXJJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJJ
bWFnZTo6cGFpbnRBcmVhRWxlbWVudEZvY3VzUmluZyk6CisgICAgICAgICogcmVuZGVyaW5nL1Jl
bmRlckxheWVyQmFja2luZy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllckJhY2tp
bmc6OnBhaW50Q29udGVudHMpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXllckNvbXBv
c2l0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpwYWlu
dENvbnRlbnRzKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGlzdEJveC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJMaXN0Qm94OjpwYWludEl0ZW1Gb3JlZ3JvdW5kKToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlckxpc3RCb3g6OnBhaW50SXRlbUJhY2tncm91bmQpOgorICAgICAg
ICAqIHJlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
T2JqZWN0Ojp1c2VEYXJrQXBwZWFyYW5jZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJPYmplY3Q6OnN0eWxlQ29sb3JPcHRpb25zIGNvbnN0KToKKyAgICAgICAgKiByZW5kZXJpbmcv
UmVuZGVyT2JqZWN0Lmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRhYmxlQ2VsbC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUYWJsZUNlbGw6OnBhaW50QmFja2dyb3VuZHNCZWhp
bmRDZWxsKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGhlbWUuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyVGhlbWU6OnBhaW50KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVy
VGhlbWUuaDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lOjp1c2luZ0RhcmtBcHBlYXJh
bmNlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGhlbWVNYWMu
aDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGhlbWVNYWMubW06CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJUaGVtZU1hYzo6ZG9jdW1lbnRWaWV3Rm9yIGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlclRoZW1lTWFjOjphZGp1c3RNZW51TGlzdFN0eWxlIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lTWFjOjpwYWludENlbGxBbmRTZXRGb2N1c2VkRWxlbWVu
dE5lZWRzUmVwYWludElmTmVjZXNzYXJ5KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1l
TWFjOjpwYWludFNsaWRlclRodW1iKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lTWFj
Ojp1c2luZ0RhcmtBcHBlYXJhbmNlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiByZW5kZXJp
bmcvc3R5bGUvUmVuZGVyU3R5bGUuaDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjpz
dXBwb3J0ZWRDb2xvclNjaGVtZXMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5
bGU6OnNldFN1cHBvcnRlZENvbG9yU2NoZW1lcyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJT
dHlsZTo6aW5pdGlhbFN1cHBvcnRlZENvbG9yU2NoZW1lcyk6CisgICAgICAgICogcmVuZGVyaW5n
L3N0eWxlL1JlbmRlclN0eWxlQ29uc3RhbnRzLmg6CisgICAgICAgICogcmVuZGVyaW5nL3N0eWxl
L1N0eWxlUmFyZUluaGVyaXRlZERhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVSYXJl
SW5oZXJpdGVkRGF0YTo6U3R5bGVSYXJlSW5oZXJpdGVkRGF0YSk6CisgICAgICAgIChXZWJDb3Jl
OjpTdHlsZVJhcmVJbmhlcml0ZWREYXRhOjpvcGVyYXRvcj09IGNvbnN0KToKKyAgICAgICAgKiBy
ZW5kZXJpbmcvc3R5bGUvU3R5bGVSYXJlSW5oZXJpdGVkRGF0YS5oOgorICAgICAgICAqIHJlbmRl
cmluZy9zdHlsZS9TdHlsZVN1cHBvcnRlZENvbG9yU2NoZW1lcy5oOiBBZGRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OlN0eWxlU3VwcG9ydGVkQ29sb3JTY2hlbWVzOjpTdHlsZVN1cHBvcnRlZENvbG9y
U2NoZW1lcyk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVN1cHBvcnRlZENvbG9yU2NoZW1lczo6
b3BlcmF0b3I9PSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVN1cHBvcnRlZENvbG9y
U2NoZW1lczo6b3BlcmF0b3IhPSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVN1cHBv
cnRlZENvbG9yU2NoZW1lczo6aXNBdXRvIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxl
U3VwcG9ydGVkQ29sb3JTY2hlbWVzOjppc09ubHkgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
U3R5bGVTdXBwb3J0ZWRDb2xvclNjaGVtZXM6OmNvbG9yU2NoZW1lcyBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpTdHlsZVN1cHBvcnRlZENvbG9yU2NoZW1lczo6YWRkKToKKyAgICAgICAgKFdl
YkNvcmU6OlN0eWxlU3VwcG9ydGVkQ29sb3JTY2hlbWVzOjpjb250YWlucyBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpTdHlsZVN1cHBvcnRlZENvbG9yU2NoZW1lczo6c2V0QWxsb3dzVHJhbnNm
b3JtYXRpb25zKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlU3VwcG9ydGVkQ29sb3JTY2hlbWVz
OjphbGxvd3NUcmFuc2Zvcm1hdGlvbnMgY29uc3QpOgorICAgICAgICAqIHN2Zy9ncmFwaGljcy9T
VkdJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdJbWFnZTo6ZHJhdyk6CisKIDIwMTgt
MTEtMDcgIEp1c3RpbiBNaWNoYXVkICA8anVzdGluX21pY2hhdWRAYXBwbGUuY29tPgogCiAgICAg
ICAgIENTUyBQYWludGluZyBBUEkgc2hvdWxkIHBhc3Mgc2l6ZSwgYXJndW1lbnRzIGFuZCBpbnB1
dCBwcm9wZXJ0aWVzIHRvIHBhaW50IGNhbGxiYWNrCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGIwYmQ0ZjZlZGZhYTU1
YmYxYTM5MzYwNTIzMzhiYWQ1N2JlNDkwYzMuLjcwMTVkZDVkOGJmMmJlZWQ3MWExMGRhYWE5Njkw
Yjc0NjBjYmY4N2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTgtMTEtMDggIFRpbW90
aHkgSGF0Y2hlciAgPHRpbW90aHlAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBleHBlcmltZW50
YWwgc3VwcG9ydCBmb3IgYSBgc3VwcG9ydGVkLWNvbG9yLXNjaGVtZXNgIENTUyBwcm9wZXJ0eS4K
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MTMxOQor
ICAgICAgICByZGFyOi8vcHJvYmxlbS80NTg1MjI2MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9ET00v
SW5qZWN0ZWRCdW5kbGVSYW5nZUhhbmRsZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OkluamVjdGVk
QnVuZGxlUmFuZ2VIYW5kbGU6OnJlbmRlcmVkSW1hZ2UpOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJQYWdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6ZHJhd1JlY3Qp
OgorCiAyMDE4LTExLTA4ICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNv
bT4KIAogICAgICAgICBbR1RLXSBDcmFzaCB3aGVuIHJ1bm5pbmcgd2l0aCBzYW5kYm94IGVuYWJs
ZWQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agppbmRleCAxNDIwNGE1YjhlM2UwM2Q2OWZhNGUxYmQxMWEyMmMwODBiYjE5MWVlLi5iNTc0MDg2
YmQzZjQ4NmM2YzM5NGI5NTNmZTVlZjI2ZDQzNjk2MmM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC02MjUsNiArNjI1LDcgQEAK
IAkJMUMwMTA3MDExOTI1OTRERjAwOEE0MjAxIC8qIElubGluZVRleHRCb3hTdHlsZS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUMwMTA2RkYxOTI1OTRE
RjAwOEE0MjAxIC8qIElubGluZVRleHRCb3hTdHlsZS5oICovOyB9OwogCQkxQzA5MzlFQjFBMTNF
MTI5MDBCNzg4RTUgLyogQ2FjaGVkU1ZHRm9udC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMUMwOTM5RTkxQTEzRTEyOTAwQjc4OEU1IC8qIENhY2hlZFNW
R0ZvbnQuaCAqLzsgfTsKIAkJMUMwOUQwNTkxRTMxQzZBOTAwNzI1RjE4IC8qIGxpYlBBTC5hIGlu
IEZyYW1ld29ya3MgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUMwOUQwNTAx
RTMxQzMyOTAwNzI1RjE4IC8qIGxpYlBBTC5hICovOyB9OworCQkxQzBBQTE2RDIxOTQwREM4MDA4
OTY4MjkgLyogU3R5bGVTdXBwb3J0ZWRDb2xvclNjaGVtZXMuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFDMEFBMTZBMjE5NDBEQzcwMDg5NjgyOSAvKiBT
dHlsZVN1cHBvcnRlZENvbG9yU2NoZW1lcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CiAJCTFDMTJBQzJCMUVFNzc4QUUwMDc5RTBBMCAvKiBGb250RmFt
aWx5U3BlY2lmaWNhdGlvbkNvcmVUZXh0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAxQzEyQUMyOTFFRTc3OEFFMDA3OUUwQTAgLyogRm9udEZhbWlseVNw
ZWNpZmljYXRpb25Db3JlVGV4dC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCTFDMThEQTU5MTgxQUY2QTUwMEM0RUYyMiAvKiBUZXh0UGFpbnRlci5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUMxOERBNTcx
ODFBRjZBNTAwQzRFRjIyIC8qIFRleHRQYWludGVyLmggKi87IH07CiAJCTFDMjFFNTdEMTgzRUQx
RkYwMDFDMjg5RCAvKiBJT1N1cmZhY2VQb29sLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAxQzIxRTU3QjE4M0VEMUZGMDAxQzI4OUQgLyogSU9TdXJmYWNl
UG9vbC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBA
IC02MzY4LDYgKzYzNjksNyBAQAogCQkxQzA5MzlFODFBMTNFMTI5MDBCNzg4RTUgLyogQ2FjaGVk
U1ZHRm9udC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDYWNoZWRT
VkdGb250LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUMwOTM5RTkxQTEzRTEy
OTAwQjc4OEU1IC8qIENhY2hlZFNWR0ZvbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gQ2FjaGVkU1ZHRm9udC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQzA5
RDA0QjFFMzFDMzI4MDA3MjVGMTggLyogUEFMLnhjb2RlcHJvaiAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9ICJ3cmFwcGVyLnBiLXByb2plY3QiOyBuYW1l
ID0gUEFMLnhjb2RlcHJvajsgcGF0aCA9IFBBTC9QQUwueGNvZGVwcm9qOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQkxQzBBQTE2QTIxOTQwREM3MDA4OTY4MjkgLyogU3R5bGVTdXBwb3J0
ZWRDb2xvclNjaGVtZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3R5bGVT
dXBwb3J0ZWRDb2xvclNjaGVtZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUMx
MkFDMjgxRUU3NzhBRTAwNzlFMEEwIC8qIEZvbnRGYW1pbHlTcGVjaWZpY2F0aW9uQ29yZVRleHQu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRm9udEZhbWlseVNwZWNpZmljYXRpb25Db3JlVGV4dC5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFDMTJBQzI5MUVFNzc4QUUwMDc5RTBB
MCAvKiBGb250RmFtaWx5U3BlY2lmaWNhdGlvbkNvcmVUZXh0LmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEZv
bnRGYW1pbHlTcGVjaWZpY2F0aW9uQ29yZVRleHQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJMUMxMkFDMkMxRUU3Nzk5NTAwNzlFMEEwIC8qIEZvbnREZXNjcmlwdGlvbkNvY29hLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEZvbnREZXNjcmlwdGlvbkNvY29hLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTI0NjYxLDYgKzI0NjYzLDcgQEAKIAkJCQlGNDdBNUUzQTE5
NUI4QzhBMDA0ODMxMDAgLyogU3R5bGVTY3JvbGxTbmFwUG9pbnRzLmNwcCAqLywKIAkJCQlGNDdB
NUUzQjE5NUI4QzhBMDA0ODMxMDAgLyogU3R5bGVTY3JvbGxTbmFwUG9pbnRzLmggKi8sCiAJCQkJ
OUQ2MzgwMEYxQUYxNkUxNjAwMzFBMTVDIC8qIFN0eWxlU2VsZkFsaWdubWVudERhdGEuaCAqLywK
KwkJCQkxQzBBQTE2QTIxOTQwREM3MDA4OTY4MjkgLyogU3R5bGVTdXBwb3J0ZWRDb2xvclNjaGVt
ZXMuaCAqLywKIAkJCQlCQzVFQjVFNjBFODFCRkVGMDBCMjU5NjUgLyogU3R5bGVTdXJyb3VuZERh
dGEuY3BwICovLAogCQkJCUJDNUVCNUU0MEU4MUJGNkQwMEIyNTk2NSAvKiBTdHlsZVN1cnJvdW5k
RGF0YS5oICovLAogCQkJCUJDNUVCODBEMEU4MUYyQ0UwMEIyNTk2NSAvKiBTdHlsZVRyYW5zZm9y
bURhdGEuY3BwICovLApAQCAtMzEwNjAsNiArMzEwNjMsNyBAQAogCQkJCUE4RUE4MDBDMEExOTUx
NkUwMEE4RUY1RiAvKiBTdHlsZVNoZWV0LmggaW4gSGVhZGVycyAqLywKIAkJCQlFNEY5RUVGMzE1
NkRBMDA3MDBEMjNFN0UgLyogU3R5bGVTaGVldENvbnRlbnRzLmggaW4gSGVhZGVycyAqLywKIAkJ
CQlBOEVBODAwQTBBMTk1MTZFMDBBOEVGNUYgLyogU3R5bGVTaGVldExpc3QuaCBpbiBIZWFkZXJz
ICovLAorCQkJCTFDMEFBMTZEMjE5NDBEQzgwMDg5NjgyOSAvKiBTdHlsZVN1cHBvcnRlZENvbG9y
U2NoZW1lcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkM1RUI1RTUwRTgxQkY2RDAwQjI1OTY1IC8q
IFN0eWxlU3Vycm91bmREYXRhLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzVFQjgxMDBFODFGMkNF
MDBCMjU5NjUgLyogU3R5bGVUcmFuc2Zvcm1EYXRhLmggaW4gSGVhZGVycyAqLywKIAkJCQlFNERF
QUExODE3QTkzREMzMDAwRTA0MzAgLyogU3R5bGVUcmVlUmVzb2x2ZXIuaCBpbiBIZWFkZXJzICov
LApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJh
dGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9u
LmNwcAppbmRleCAyZWY2NjI5NTlhOTRjN2VkZmI5OWQyOGY3OTNmYjdhMGU1ZmZiNjc1Li4wM2I3
YjNlNzFiMjU5ZDk4MDQ4OWNkYmI5ZDVlNzM2Y2RkYjNhNGZlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcApAQCAtNDQ4LDYgKzQ0
OCw5IEBAIHN0YXRpYyBjb25zdCBDU1NQcm9wZXJ0eUlEIGNvbXB1dGVkUHJvcGVydGllc1tdID0g
ewogICAgIENTU1Byb3BlcnR5U3Ryb2tlTWl0ZXJsaW1pdCwKICAgICBDU1NQcm9wZXJ0eVN0cm9r
ZU9wYWNpdHksCiAgICAgQ1NTUHJvcGVydHlTdHJva2VXaWR0aCwKKyNpZiBFTkFCTEUoREFSS19N
T0RFX0NTUykKKyAgICBDU1NQcm9wZXJ0eVN1cHBvcnRlZENvbG9yU2NoZW1lcywKKyNlbmRpZgog
ICAgIENTU1Byb3BlcnR5QWxpZ25tZW50QmFzZWxpbmUsCiAgICAgQ1NTUHJvcGVydHlCYXNlbGlu
ZVNoaWZ0LAogICAgIENTU1Byb3BlcnR5RG9taW5hbnRCYXNlbGluZSwKQEAgLTM5NjksNiArMzk3
MiwyNCBAQCBSZWZQdHI8Q1NTVmFsdWU+IENvbXB1dGVkU3R5bGVFeHRyYWN0b3I6OnZhbHVlRm9y
UHJvcGVydHlpblN0eWxlKGNvbnN0IFJlbmRlclN0eQogICAgICAgICAgICAgcmV0dXJuIGNzc1Zh
bHVlUG9vbC5jcmVhdGVWYWx1ZShzdHlsZS5hcHBsZVBheUJ1dHRvblR5cGUoKSk7CiAjZW5kaWYK
IAorI2lmIEVOQUJMRShEQVJLX01PREVfQ1NTKQorICAgICAgICBjYXNlIENTU1Byb3BlcnR5U3Vw
cG9ydGVkQ29sb3JTY2hlbWVzOiB7CisgICAgICAgICAgICBhdXRvIHN1cHBvcnRlZENvbG9yU2No
ZW1lcyA9IHN0eWxlLnN1cHBvcnRlZENvbG9yU2NoZW1lcygpOworICAgICAgICAgICAgaWYgKHN1
cHBvcnRlZENvbG9yU2NoZW1lcy5pc0F1dG8oKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gY3Nz
VmFsdWVQb29sLmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1ZUF1dG8pOworCisgICAgICAg
ICAgICBhdXRvIGxpc3QgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZVNwYWNlU2VwYXJhdGVkKCk7Cisg
ICAgICAgICAgICBpZiAoc3VwcG9ydGVkQ29sb3JTY2hlbWVzLmNvbnRhaW5zKENvbG9yU2NoZW1l
czo6TGlnaHQpKQorICAgICAgICAgICAgICAgIGxpc3QtPmFwcGVuZChjc3NWYWx1ZVBvb2wuY3Jl
YXRlSWRlbnRpZmllclZhbHVlKENTU1ZhbHVlTGlnaHQpKTsKKyAgICAgICAgICAgIGlmIChzdXBw
b3J0ZWRDb2xvclNjaGVtZXMuY29udGFpbnMoQ29sb3JTY2hlbWVzOjpEYXJrKSkKKyAgICAgICAg
ICAgICAgICBsaXN0LT5hcHBlbmQoY3NzVmFsdWVQb29sLmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShD
U1NWYWx1ZURhcmspKTsKKyAgICAgICAgICAgIGlmICghc3VwcG9ydGVkQ29sb3JTY2hlbWVzLmFs
bG93c1RyYW5zZm9ybWF0aW9ucygpKQorICAgICAgICAgICAgICAgIGxpc3QtPmFwcGVuZChjc3NW
YWx1ZVBvb2wuY3JlYXRlSWRlbnRpZmllclZhbHVlKENTU1ZhbHVlT25seSkpOworICAgICAgICAg
ICAgQVNTRVJUKGxpc3QtPmxlbmd0aCgpKTsKKyAgICAgICAgICAgIHJldHVybiBXVEZNb3ZlKGxp
c3QpOworICAgICAgICB9CisjZW5kaWYKKwogICAgICAgICAvKiBJbmRpdmlkdWFsIHByb3BlcnRp
ZXMgbm90IHBhcnQgb2YgdGhlIHNwZWMgKi8KICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eUJhY2tn
cm91bmRSZXBlYXRYOgogICAgICAgICBjYXNlIENTU1Byb3BlcnR5QmFja2dyb3VuZFJlcGVhdFk6
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJvcGVydGllcy5qc29uIGIvU291
cmNlL1dlYkNvcmUvY3NzL0NTU1Byb3BlcnRpZXMuanNvbgppbmRleCAyOGQ4NDgyZDY2Y2Y4NDgz
MWYzNjg3ZjZjYWY4ZDE5OWY0NjIwZTcwLi5hMTU0ZWIwM2ExMDE2ZjM5Y2QyMzhiMGVlNWEyY2Fj
NWY3MmY4Y2ZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJvcGVydGllcy5q
c29uCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcm9wZXJ0aWVzLmpzb24KQEAgLTU3MTIs
NiArNTcxMiwyMiBAQAogICAgICAgICAgICAgfSwKICAgICAgICAgICAgICJzdGF0dXMiOiAibm9u
LXN0YW5kYXJkIgogICAgICAgICB9LAorICAgICAgICAic3VwcG9ydGVkLWNvbG9yLXNjaGVtZXMi
OiB7CisgICAgICAgICAgICAiaW5oZXJpdGVkIjogdHJ1ZSwKKyAgICAgICAgICAgICJ2YWx1ZXMi
OiBbCisgICAgICAgICAgICAgICAgImF1dG8iLAorICAgICAgICAgICAgICAgICJsaWdodCIsCisg
ICAgICAgICAgICAgICAgImRhcmsiLAorICAgICAgICAgICAgICAgICJvbmx5IgorICAgICAgICAg
ICAgXSwKKyAgICAgICAgICAgICJjb2RlZ2VuLXByb3BlcnRpZXMiOiB7CisgICAgICAgICAgICAg
ICAgImNvbnZlcnRlciI6ICJTdXBwb3J0ZWRDb2xvclNjaGVtZXMiLAorICAgICAgICAgICAgICAg
ICJlbmFibGUtaWYiOiAiRU5BQkxFX0RBUktfTU9ERV9DU1MiCisgICAgICAgICAgICB9LAorICAg
ICAgICAgICAgInN0YXR1cyI6IHsKKyAgICAgICAgICAgICAgICAic3RhdHVzIjogIm5vbi1zdGFu
ZGFyZCIKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSwKICAgICAgICAgIm9yZGVyIjogewogICAg
ICAgICAgICAgImNvZGVnZW4tcHJvcGVydGllcyI6IHsKICAgICAgICAgICAgICAgICAiYWxpYXNl
cyI6IFsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NWYWx1ZUtleXdvcmRzLmlu
IGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ZhbHVlS2V5d29yZHMuaW4KaW5kZXggOTBmOTEyYWNl
YjU1YTFhZmRiYWFiMDk1YjYyZmJjNTRhYmIzZDI1NC4uODZiNWU1OTE0ZjQwZTczYWZiMTQ5NTIx
ODQzYTRlYzk3Yzg2MTAxOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ZhbHVl
S2V5d29yZHMuaW4KKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ZhbHVlS2V5d29yZHMuaW4K
QEAgLTEzODQsNiArMTM4NCwxMSBAQCBuby1wcmVmZXJlbmNlCiBsaWdodAogZGFyawogLy8gbm8t
cHJlZmVyZW5jZQorCisvLyBzdXBwb3J0ZWQtY29sb3Itc2NoZW1lcworb25seQorLy8gbGlnaHQK
Ky8vIGRhcmsKICNlbmRpZgogCiAvLyBhdXRvLXJlcGVhdApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvY3NzL1N0eWxlQnVpbGRlckNvbnZlcnRlci5oIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0
eWxlQnVpbGRlckNvbnZlcnRlci5oCmluZGV4IDBlODM4YmI1ZDhkZjAzMzU2NDM4MmQ1NGYyYzMx
OGExZmYxMjM4NzguLmU2MWQxZjU0NzJkNDk5NTBlNWVlMzUzZmE2MDE1OTRhZjQ2Y2YwZDAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZUJ1aWxkZXJDb252ZXJ0ZXIuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVCdWlsZGVyQ29udmVydGVyLmgKQEAgLTc3LDYgKzc3
LDkgQEAgcHVibGljOgogICAgIHRlbXBsYXRlPENTU1Byb3BlcnR5SUQ+IHN0YXRpYyBOaW5lUGll
Y2VJbWFnZSBjb252ZXJ0Qm9yZGVyTWFzayhTdHlsZVJlc29sdmVyJiwgQ1NTVmFsdWUmKTsKICAg
ICB0ZW1wbGF0ZTxDU1NQcm9wZXJ0eUlEPiBzdGF0aWMgUmVmUHRyPFN0eWxlSW1hZ2U+IGNvbnZl
cnRTdHlsZUltYWdlKFN0eWxlUmVzb2x2ZXImLCBDU1NWYWx1ZSYpOwogICAgIHN0YXRpYyBUcmFu
c2Zvcm1PcGVyYXRpb25zIGNvbnZlcnRUcmFuc2Zvcm0oU3R5bGVSZXNvbHZlciYsIGNvbnN0IENT
U1ZhbHVlJik7CisjaWYgRU5BQkxFKERBUktfTU9ERV9DU1MpCisgICAgc3RhdGljIFN0eWxlU3Vw
cG9ydGVkQ29sb3JTY2hlbWVzIGNvbnZlcnRTdXBwb3J0ZWRDb2xvclNjaGVtZXMoU3R5bGVSZXNv
bHZlciYsIGNvbnN0IENTU1ZhbHVlJik7CisjZW5kaWYKICAgICBzdGF0aWMgU3RyaW5nIGNvbnZl
cnRTdHJpbmcoU3R5bGVSZXNvbHZlciYsIGNvbnN0IENTU1ZhbHVlJik7CiAgICAgc3RhdGljIFN0
cmluZyBjb252ZXJ0U3RyaW5nT3JBdXRvKFN0eWxlUmVzb2x2ZXImLCBjb25zdCBDU1NWYWx1ZSYp
OwogICAgIHN0YXRpYyBTdHJpbmcgY29udmVydFN0cmluZ09yTm9uZShTdHlsZVJlc29sdmVyJiwg
Y29uc3QgQ1NTVmFsdWUmKTsKQEAgLTE2NSw2ICsxNjgsMTAgQEAgcHJpdmF0ZToKICAgICBzdGF0
aWMgTGVuZ3RoIHBhcnNlU25hcENvb3JkaW5hdGUoU3R5bGVSZXNvbHZlciYsIGNvbnN0IENTU1Zh
bHVlJik7CiAjZW5kaWYKIAorI2lmIEVOQUJMRShEQVJLX01PREVfQ1NTKQorICAgIHN0YXRpYyB2
b2lkIHVwZGF0ZVN1cHBvcnRlZENvbG9yU2NoZW1lcyhjb25zdCBDU1NQcmltaXRpdmVWYWx1ZSYs
IFN0eWxlU3VwcG9ydGVkQ29sb3JTY2hlbWVzJik7CisjZW5kaWYKKwogICAgIHN0YXRpYyBMZW5n
dGggY29udmVydFRvMTAwUGVyY2VudE1pbnVzTGVuZ3RoKGNvbnN0IExlbmd0aCYpOwogICAgIHRl
bXBsYXRlPENTU1ZhbHVlSUQsIENTU1ZhbHVlSUQ+IHN0YXRpYyBMZW5ndGggY29udmVydFBvc2l0
aW9uQ29tcG9uZW50KFN0eWxlUmVzb2x2ZXImLCBjb25zdCBDU1NQcmltaXRpdmVWYWx1ZSYpOwog
CkBAIC00NTMsNiArNDYwLDQ4IEBAIGlubGluZSBUcmFuc2Zvcm1PcGVyYXRpb25zIFN0eWxlQnVp
bGRlckNvbnZlcnRlcjo6Y29udmVydFRyYW5zZm9ybShTdHlsZVJlc29sdmVyCiAgICAgcmV0dXJu
IG9wZXJhdGlvbnM7CiB9CiAKKyNpZiBFTkFCTEUoREFSS19NT0RFX0NTUykKK2lubGluZSB2b2lk
IFN0eWxlQnVpbGRlckNvbnZlcnRlcjo6dXBkYXRlU3VwcG9ydGVkQ29sb3JTY2hlbWVzKGNvbnN0
IENTU1ByaW1pdGl2ZVZhbHVlJiBwcmltaXRpdmVWYWx1ZSwgU3R5bGVTdXBwb3J0ZWRDb2xvclNj
aGVtZXMmIHN1cHBvcnRlZENvbG9yU2NoZW1lcykKK3sKKyAgICBBU1NFUlQocHJpbWl0aXZlVmFs
dWUuaXNWYWx1ZUlEKCkpOworCisgICAgc3dpdGNoIChwcmltaXRpdmVWYWx1ZS52YWx1ZUlEKCkp
IHsKKyAgICBjYXNlIENTU1ZhbHVlQXV0bzoKKyAgICAgICAgc3VwcG9ydGVkQ29sb3JTY2hlbWVz
ID0gU3R5bGVTdXBwb3J0ZWRDb2xvclNjaGVtZXMoKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2Fz
ZSBDU1NWYWx1ZU9ubHk6CisgICAgICAgIHN1cHBvcnRlZENvbG9yU2NoZW1lcy5zZXRBbGxvd3NU
cmFuc2Zvcm1hdGlvbnMoZmFsc2UpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIENTU1ZhbHVl
TGlnaHQ6CisgICAgICAgIHN1cHBvcnRlZENvbG9yU2NoZW1lcy5hZGQoQ29sb3JTY2hlbWVzOjpM
aWdodCk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQ1NTVmFsdWVEYXJrOgorICAgICAgICBz
dXBwb3J0ZWRDb2xvclNjaGVtZXMuYWRkKENvbG9yU2NoZW1lczo6RGFyayk7CisgICAgICAgIGJy
ZWFrOworICAgIGRlZmF1bHQ6CisgICAgICAgIC8vIFVua25vd24gaWRlbnRpZmllcnMgYXJlIGFs
bG93ZWQgYW5kIGlnbm9yZWQuCisgICAgICAgIGJyZWFrOworICAgIH0KK30KKworaW5saW5lIFN0
eWxlU3VwcG9ydGVkQ29sb3JTY2hlbWVzIFN0eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydFN1
cHBvcnRlZENvbG9yU2NoZW1lcyhTdHlsZVJlc29sdmVyJiwgY29uc3QgQ1NTVmFsdWUmIHZhbHVl
KQoreworICAgIFN0eWxlU3VwcG9ydGVkQ29sb3JTY2hlbWVzIHN1cHBvcnRlZENvbG9yU2NoZW1l
czsKKworICAgIGlmIChpczxDU1NWYWx1ZUxpc3Q+KHZhbHVlKSkgeworICAgICAgICBmb3IgKGF1
dG8mIGN1cnJlbnRWYWx1ZSA6IGRvd25jYXN0PENTU1ZhbHVlTGlzdD4odmFsdWUpKQorICAgICAg
ICAgICAgdXBkYXRlU3VwcG9ydGVkQ29sb3JTY2hlbWVzKGRvd25jYXN0PENTU1ByaW1pdGl2ZVZh
bHVlPihjdXJyZW50VmFsdWUuZ2V0KCkpLCBzdXBwb3J0ZWRDb2xvclNjaGVtZXMpOworICAgIH0g
ZWxzZSBpZiAoaXM8Q1NTUHJpbWl0aXZlVmFsdWU+KHZhbHVlKSkKKyAgICAgICAgdXBkYXRlU3Vw
cG9ydGVkQ29sb3JTY2hlbWVzKGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPih2YWx1ZSksIHN1
cHBvcnRlZENvbG9yU2NoZW1lcyk7CisKKyAgICAvLyBJZiB0aGUgdmFsdWUgd2FzIGp1c3QgIm9u
bHkiLCB0aGF0IGlzIHN5bm9ueW1vdXMgZm9yICJvbmx5IGxpZ2h0Ii4KKyAgICBpZiAoc3VwcG9y
dGVkQ29sb3JTY2hlbWVzLmlzT25seSgpKQorICAgICAgICBzdXBwb3J0ZWRDb2xvclNjaGVtZXMu
YWRkKENvbG9yU2NoZW1lczo6TGlnaHQpOworCisgICAgcmV0dXJuIHN1cHBvcnRlZENvbG9yU2No
ZW1lczsKK30KKyNlbmRpZgorCiBpbmxpbmUgU3RyaW5nIFN0eWxlQnVpbGRlckNvbnZlcnRlcjo6
Y29udmVydFN0cmluZyhTdHlsZVJlc29sdmVyJiwgY29uc3QgQ1NTVmFsdWUmIHZhbHVlKQogewog
ICAgIHJldHVybiBkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4odmFsdWUpLnN0cmluZ1ZhbHVl
KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5jcHAKaW5kZXggNzViMGI4ZDQxYTI5NDRk
YzA4ZTE0YzU1Y2U4MTY4ZjJlYmI4MDFkNy4uMjRiMDZiZWM5MzM3ZTE2YmI4YWI3ZjI0ZGVmOTA5
YTc4YTUyODNiZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmNwcApAQCAtMTg0MSwx
NCArMTg0MSwxNCBAQCBDb2xvciBTdHlsZVJlc29sdmVyOjpjb2xvckZyb21QcmltaXRpdmVWYWx1
ZShjb25zdCBDU1NQcmltaXRpdmVWYWx1ZSYgdmFsdWUsIGJvbwogICAgIGNhc2UgQ1NTVmFsdWVX
ZWJraXRBY3RpdmVsaW5rOgogICAgICAgICByZXR1cm4gZG9jdW1lbnQoKS5hY3RpdmVMaW5rQ29s
b3IoKTsKICAgICBjYXNlIENTU1ZhbHVlV2Via2l0Rm9jdXNSaW5nQ29sb3I6Ci0gICAgICAgIHJl
dHVybiBSZW5kZXJUaGVtZTo6Zm9jdXNSaW5nQ29sb3IoZG9jdW1lbnQoKS5zdHlsZUNvbG9yT3B0
aW9ucygpKTsKKyAgICAgICAgcmV0dXJuIFJlbmRlclRoZW1lOjpmb2N1c1JpbmdDb2xvcihkb2N1
bWVudCgpLnN0eWxlQ29sb3JPcHRpb25zKG1fc3RhdGUuc3R5bGUoKSkpOwogICAgIGNhc2UgQ1NT
VmFsdWVDdXJyZW50Y29sb3I6CiAgICAgICAgIC8vIENvbG9yIGlzIGFuIGluaGVyaXRlZCBwcm9w
ZXJ0eSBzbyBkZXBlbmRpbmcgb24gaXQgZWZmZWN0aXZlbHkgbWFrZXMgdGhlIHByb3BlcnR5IGlu
aGVyaXRlZC4KICAgICAgICAgLy8gRklYTUU6IFNldHRpbmcgdGhlIGZsYWcgYXMgYSBzaWRlIGVm
ZmVjdCBvZiBjYWxsaW5nIHRoaXMgZnVuY3Rpb24gaXMgYSBiaXQgb2JsaXF1ZS4gQ2FuIHdlIGRv
IGJldHRlcj8KICAgICAgICAgbV9zdGF0ZS5zdHlsZSgpLT5zZXRIYXNFeHBsaWNpdGx5SW5oZXJp
dGVkUHJvcGVydGllcygpOwogICAgICAgICByZXR1cm4gbV9zdGF0ZS5zdHlsZSgpLT5jb2xvcigp
OwogICAgIGRlZmF1bHQ6Ci0gICAgICAgIHJldHVybiBTdHlsZUNvbG9yOjpjb2xvckZyb21LZXl3
b3JkKGlkZW50aWZpZXIsIGRvY3VtZW50KCkuc3R5bGVDb2xvck9wdGlvbnMoKSk7CisgICAgICAg
IHJldHVybiBTdHlsZUNvbG9yOjpjb2xvckZyb21LZXl3b3JkKGlkZW50aWZpZXIsIGRvY3VtZW50
KCkuc3R5bGVDb2xvck9wdGlvbnMobV9zdGF0ZS5zdHlsZSgpKSk7CiAgICAgfQogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1Byb3BlcnR5UGFyc2VyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUHJvcGVydHlQYXJzZXIuY3BwCmluZGV4IGQz
YTA0NzdhNzQzMjJmYTI2MmExNjkxMWE3MzE4YjZiNjhiZDdhNzMuLjE1ZTdmZTYwNDVhN2Q0YTRh
ZWUyOTMyYzQ3MjUwYjU4NzE2NDZiZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9w
YXJzZXIvQ1NTUHJvcGVydHlQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJz
ZXIvQ1NTUHJvcGVydHlQYXJzZXIuY3BwCkBAIC0zNzQ3LDcgKzM3NDcsNTEgQEAgc3RhdGljIFJl
ZlB0cjxDU1NWYWx1ZT4gY29uc3VtZVRleHRFbXBoYXNpc1Bvc2l0aW9uKENTU1BhcnNlclRva2Vu
UmFuZ2UmIHJhbmdlKQogICAgICAgICBsaXN0LT5hcHBlbmQoQ1NTVmFsdWVQb29sOjpzaW5nbGV0
b24oKS5jcmVhdGVJZGVudGlmaWVyVmFsdWUobGVmdFJpZ2h0VmFsdWVJRCkpOwogICAgIHJldHVy
biBsaXN0OwogfQotICAgIAorCisjaWYgRU5BQkxFKERBUktfTU9ERV9DU1MpCisKK3N0YXRpYyBS
ZWZQdHI8Q1NTVmFsdWU+IGNvbnN1bWVTdXBwb3J0ZWRDb2xvclNjaGVtZXMoQ1NTUGFyc2VyVG9r
ZW5SYW5nZSYgcmFuZ2UpCit7CisgICAgaWYgKGlzQXV0byhyYW5nZS5wZWVrKCkuaWQoKSkpCisg
ICAgICAgIHJldHVybiBjb25zdW1lSWRlbnQocmFuZ2UpOworCisgICAgVmVjdG9yPENTU1ZhbHVl
SUQsIDM+IGlkZW50aWZpZXJzOworCisgICAgd2hpbGUgKCFyYW5nZS5hdEVuZCgpKSB7CisgICAg
ICAgIGlmIChyYW5nZS5wZWVrKCkudHlwZSgpICE9IElkZW50VG9rZW4pCisgICAgICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKKworICAgICAgICBDU1NWYWx1ZUlEIGlkID0gcmFuZ2UucGVlaygpLmlk
KCk7CisKKyAgICAgICAgc3dpdGNoIChpZCkgeworICAgICAgICBjYXNlIENTU1ZhbHVlQXV0bzoK
KyAgICAgICAgICAgIC8vIEF1dG8gaXMgb25seSBhbGxvd2VkIGFzIGEgc2luZ2xlIHZhbHVlLCBh
bmQgd2FzIGhhbmRsZWQgZWFybGllci4KKyAgICAgICAgICAgIC8vIERvbid0IGFsbG93IGl0IGlu
IHRoZSBsaXN0LgorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICAgICAgY2FzZSBD
U1NWYWx1ZU9ubHk6CisgICAgICAgIGNhc2UgQ1NTVmFsdWVMaWdodDoKKyAgICAgICAgY2FzZSBD
U1NWYWx1ZURhcms6CisgICAgICAgICAgICBpZiAoIWlkZW50aWZpZXJzLmFwcGVuZElmTm90Q29u
dGFpbnMoaWQpKQorICAgICAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICAgICAg
YnJlYWs7CisKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIC8vIFVua25vd24gaWRlbnRp
ZmllcnMgYXJlIGFsbG93ZWQgYW5kIGlnbm9yZWQuCisgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgfQorCisgICAgICAgIHJhbmdlLmNvbnN1bWVJbmNsdWRpbmdXaGl0ZXNwYWNlKCk7CisgICAg
fQorCisgICAgUmVmUHRyPENTU1ZhbHVlTGlzdD4gbGlzdCA9IENTU1ZhbHVlTGlzdDo6Y3JlYXRl
U3BhY2VTZXBhcmF0ZWQoKTsKKyAgICBmb3IgKGF1dG8gaWQgOiBpZGVudGlmaWVycykKKyAgICAg
ICAgbGlzdC0+YXBwZW5kKENTU1ZhbHVlUG9vbDo6c2luZ2xldG9uKCkuY3JlYXRlSWRlbnRpZmll
clZhbHVlKGlkKSk7CisgICAgcmV0dXJuIGxpc3Q7Cit9CisKKyNlbmRpZgorCiAjaWYgRU5BQkxF
KERBU0hCT0FSRF9TVVBQT1JUKQogCiBzdGF0aWMgUmVmUHRyPENTU1ZhbHVlPiBjb25zdW1lV2Vi
a2l0RGFzaGJvYXJkUmVnaW9uKENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlLCBDU1NQYXJzZXJN
b2RlIG1vZGUpCkBAIC00Mjg5LDYgKzQzMzMsMTIgQEAgUmVmUHRyPENTU1ZhbHVlPiBDU1NQcm9w
ZXJ0eVBhcnNlcjo6cGFyc2VTaW5nbGVWYWx1ZShDU1NQcm9wZXJ0eUlEIHByb3BlcnR5LCBDU1MK
ICAgICAgICAgcmV0dXJuIGNvbnN1bWVXZWJraXRBc3BlY3RSYXRpbyhtX3JhbmdlKTsKICAgICBj
YXNlIENTU1Byb3BlcnR5V2Via2l0VGV4dEVtcGhhc2lzUG9zaXRpb246CiAgICAgICAgIHJldHVy
biBjb25zdW1lVGV4dEVtcGhhc2lzUG9zaXRpb24obV9yYW5nZSk7CisjaWYgRU5BQkxFKERBUktf
TU9ERV9DU1MpCisgICAgY2FzZSBDU1NQcm9wZXJ0eVN1cHBvcnRlZENvbG9yU2NoZW1lczoKKyAg
ICAgICAgaWYgKCFSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLmRhcmtN
b2RlQ1NTRW5hYmxlZCgpKQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgIHJl
dHVybiBjb25zdW1lU3VwcG9ydGVkQ29sb3JTY2hlbWVzKG1fcmFuZ2UpOworI2VuZGlmCiAjaWYg
RU5BQkxFKERBU0hCT0FSRF9TVVBQT1JUKQogICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXREYXNo
Ym9hcmRSZWdpb246CiAgICAgICAgIHJldHVybiBjb25zdW1lV2Via2l0RGFzaGJvYXJkUmVnaW9u
KG1fcmFuZ2UsIG1fY29udGV4dC5tb2RlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Eb2N1bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCmluZGV4IDFl
NmJjNGJjNWJhMDNkOWFjZGQ0MTA1NTI4N2U5YjA2MGMyNTQ5YzUuLmYwNzMxNDIxMWQ4NmIxNzIy
NTQ0MWFhMTQ0NTBkYTk5NmMzNWZjNzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9E
b2N1bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcApAQCAtODE3
LDE3ICs4MTcsMTcgQEAgU3RyaW5nIERvY3VtZW50Ojpjb21wYXRNb2RlKCkgY29uc3QKIAogdm9p
ZCBEb2N1bWVudDo6cmVzZXRMaW5rQ29sb3IoKQogewotICAgIG1fbGlua0NvbG9yID0gU3R5bGVD
b2xvcjo6Y29sb3JGcm9tS2V5d29yZChDU1NWYWx1ZVdlYmtpdExpbmssIHN0eWxlQ29sb3JPcHRp
b25zKCkpOworICAgIG1fbGlua0NvbG9yID0gU3R5bGVDb2xvcjo6Y29sb3JGcm9tS2V5d29yZChD
U1NWYWx1ZVdlYmtpdExpbmssIHN0eWxlQ29sb3JPcHRpb25zKG51bGxwdHIpKTsKIH0KIAogdm9p
ZCBEb2N1bWVudDo6cmVzZXRWaXNpdGVkTGlua0NvbG9yKCkKIHsKLSAgICBtX3Zpc2l0ZWRMaW5r
Q29sb3IgPSBTdHlsZUNvbG9yOjpjb2xvckZyb21LZXl3b3JkKENTU1ZhbHVlV2Via2l0TGluaywg
c3R5bGVDb2xvck9wdGlvbnMoKSB8IFN0eWxlQ29sb3I6Ok9wdGlvbnM6OkZvclZpc2l0ZWRMaW5r
KTsKKyAgICBtX3Zpc2l0ZWRMaW5rQ29sb3IgPSBTdHlsZUNvbG9yOjpjb2xvckZyb21LZXl3b3Jk
KENTU1ZhbHVlV2Via2l0TGluaywgc3R5bGVDb2xvck9wdGlvbnMobnVsbHB0cikgfCBTdHlsZUNv
bG9yOjpPcHRpb25zOjpGb3JWaXNpdGVkTGluayk7CiB9CiAKIHZvaWQgRG9jdW1lbnQ6OnJlc2V0
QWN0aXZlTGlua0NvbG9yKCkKIHsKLSAgICBtX2FjdGl2ZUxpbmtDb2xvciA9IFN0eWxlQ29sb3I6
OmNvbG9yRnJvbUtleXdvcmQoQ1NTVmFsdWVXZWJraXRBY3RpdmVsaW5rLCBzdHlsZUNvbG9yT3B0
aW9ucygpKTsKKyAgICBtX2FjdGl2ZUxpbmtDb2xvciA9IFN0eWxlQ29sb3I6OmNvbG9yRnJvbUtl
eXdvcmQoQ1NTVmFsdWVXZWJraXRBY3RpdmVsaW5rLCBzdHlsZUNvbG9yT3B0aW9ucyhudWxscHRy
KSk7CiB9CiAKIERPTUltcGxlbWVudGF0aW9uJiBEb2N1bWVudDo6aW1wbGVtZW50YXRpb24oKQpA
QCAtMzU5MCwxOCArMzU5MCwzNCBAQCBzdGF0aWMgdm9pZCBwcm9jZXNzQ29sb3JTY2hlbWVzKFN0
cmluZ1ZpZXcgY29sb3JTY2hlbWVzLCBjb25zdCBXVEY6OkZ1bmN0aW9uPHZvaQogdm9pZCBEb2N1
bWVudDo6cHJvY2Vzc1N1cHBvcnRlZENvbG9yU2NoZW1lcyhjb25zdCBTdHJpbmcmIGNvbG9yU2No
ZW1lcykKIHsKICAgICBPcHRpb25TZXQ8Q29sb3JTY2hlbWVzPiBzdXBwb3J0ZWRDb2xvclNjaGVt
ZXM7CisgICAgYm9vbCBhbGxvd3NUcmFuc2Zvcm1hdGlvbnMgPSB0cnVlOworICAgIGJvb2wgYXV0
b0VuY291bnRlcmVkID0gZmFsc2U7CisKKyAgICBwcm9jZXNzQ29sb3JTY2hlbWVzKGNvbG9yU2No
ZW1lcywgWyZdKFN0cmluZ1ZpZXcga2V5KSB7CisgICAgICAgIGlmIChlcXVhbExldHRlcnNJZ25v
cmluZ0FTQ0lJQ2FzZShrZXksICJhdXRvIikpIHsKKyAgICAgICAgICAgIHN1cHBvcnRlZENvbG9y
U2NoZW1lcyA9IHsgfTsKKyAgICAgICAgICAgIGFsbG93c1RyYW5zZm9ybWF0aW9ucyA9IHRydWU7
CisgICAgICAgICAgICBhdXRvRW5jb3VudGVyZWQgPSB0cnVlOworICAgICAgICAgICAgcmV0dXJu
OworICAgICAgICB9CisKKyAgICAgICAgaWYgKGF1dG9FbmNvdW50ZXJlZCkKKyAgICAgICAgICAg
IHJldHVybjsKIAotICAgIHByb2Nlc3NDb2xvclNjaGVtZXMoY29sb3JTY2hlbWVzLCBbJnN1cHBv
cnRlZENvbG9yU2NoZW1lc10oU3RyaW5nVmlldyBrZXkpIHsKICAgICAgICAgaWYgKGVxdWFsTGV0
dGVyc0lnbm9yaW5nQVNDSUlDYXNlKGtleSwgImxpZ2h0IikpCiAgICAgICAgICAgICBzdXBwb3J0
ZWRDb2xvclNjaGVtZXMuYWRkKENvbG9yU2NoZW1lczo6TGlnaHQpOwogICAgICAgICBlbHNlIGlm
IChlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShrZXksICJkYXJrIikpCiAgICAgICAgICAg
ICBzdXBwb3J0ZWRDb2xvclNjaGVtZXMuYWRkKENvbG9yU2NoZW1lczo6RGFyayk7CisgICAgICAg
IGVsc2UgaWYgKGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKGtleSwgIm9ubHkiKSkKKyAg
ICAgICAgICAgIGFsbG93c1RyYW5zZm9ybWF0aW9ucyA9IGZhbHNlOwogICAgIH0pOwogCi0gICAg
aWYgKHN1cHBvcnRlZENvbG9yU2NoZW1lcy5pc0VtcHR5KCkpCisgICAgLy8gSWYgdGhlIHZhbHVl
IHdhcyBqdXN0ICJvbmx5IiwgdGhhdCBpcyBzeW5vbnltb3VzIGZvciAib25seSBsaWdodCIuCisg
ICAgaWYgKHN1cHBvcnRlZENvbG9yU2NoZW1lcy5pc0VtcHR5KCkgJiYgIWFsbG93c1RyYW5zZm9y
bWF0aW9ucykKICAgICAgICAgc3VwcG9ydGVkQ29sb3JTY2hlbWVzLmFkZChDb2xvclNjaGVtZXM6
OkxpZ2h0KTsKIAogICAgIG1fc3VwcG9ydGVkQ29sb3JTY2hlbWVzID0gc3VwcG9ydGVkQ29sb3JT
Y2hlbWVzOworICAgIG1fYWxsb3dzQ29sb3JTY2hlbWVUcmFuc2Zvcm1hdGlvbnMgPSBhbGxvd3NU
cmFuc2Zvcm1hdGlvbnM7CiAKICAgICBpZiAoYXV0byogcGFnZSA9IHRoaXMtPnBhZ2UoKSkKICAg
ICAgICAgcGFnZS0+dXBkYXRlU3R5bGVBZnRlckNoYW5nZUluRW52aXJvbm1lbnQoKTsKQEAgLTcy
ODEsMTEgKzcyOTcsMjMgQEAgYm9vbCBEb2N1bWVudDo6dXNlU3lzdGVtQXBwZWFyYW5jZSgpIGNv
bnN0CiAgICAgcmV0dXJuIHVzZVN5c3RlbUFwcGVhcmFuY2U7CiB9CiAKLWJvb2wgRG9jdW1lbnQ6
OnVzZURhcmtBcHBlYXJhbmNlKCkgY29uc3QKK2Jvb2wgRG9jdW1lbnQ6OnVzZURhcmtBcHBlYXJh
bmNlKGNvbnN0IFJlbmRlclN0eWxlKiBzdHlsZSkgY29uc3QKIHsKICNpZiBFTkFCTEUoREFSS19N
T0RFX0NTUykKLSAgICBpZiAobV9zdXBwb3J0ZWRDb2xvclNjaGVtZXMuY29udGFpbnMoQ29sb3JT
Y2hlbWVzOjpEYXJrKSAmJiAhbV9zdXBwb3J0ZWRDb2xvclNjaGVtZXMuY29udGFpbnMoQ29sb3JT
Y2hlbWVzOjpMaWdodCkpCisgICAgT3B0aW9uU2V0PENvbG9yU2NoZW1lcz4gc3VwcG9ydGVkQ29s
b3JTY2hlbWVzOworCisgICAgLy8gVXNlIHRoZSBzdHlsZSdzIHN1cHBvcnRlZCBjb2xvciBzY2hl
bWVzLCBpZiBzdXBwbGllZC4KKyAgICBpZiAoc3R5bGUpCisgICAgICAgIHN1cHBvcnRlZENvbG9y
U2NoZW1lcyA9IHN0eWxlLT5zdXBwb3J0ZWRDb2xvclNjaGVtZXMoKS5jb2xvclNjaGVtZXMoKTsK
KworICAgIC8vIEZhbGxiYWNrIHRvIHRoZSBkb2N1bWVudCdzIHN1cHBvcnRlZCBjb2xvciBzY2hl
bWVzIGlmIHN0eWxlIHdhcyBlbXB0eSAoYXV0bykuCisgICAgaWYgKHN1cHBvcnRlZENvbG9yU2No
ZW1lcy5pc0VtcHR5KCkpCisgICAgICAgIHN1cHBvcnRlZENvbG9yU2NoZW1lcyA9IG1fc3VwcG9y
dGVkQ29sb3JTY2hlbWVzOworCisgICAgaWYgKHN1cHBvcnRlZENvbG9yU2NoZW1lcy5jb250YWlu
cyhDb2xvclNjaGVtZXM6OkRhcmspICYmICFzdXBwb3J0ZWRDb2xvclNjaGVtZXMuY29udGFpbnMo
Q29sb3JTY2hlbWVzOjpMaWdodCkpCiAgICAgICAgIHJldHVybiB0cnVlOworI2Vsc2UKKyAgICBV
TlVTRURfUEFSQU0oc3R5bGUpOwogI2VuZGlmCiAKICAgICBib29sIHBhZ2VVc2VzRGFya0FwcGVh
cmFuY2UgPSBmYWxzZTsKQEAgLTcyOTYsMjEgKzczMjQsMTkgQEAgYm9vbCBEb2N1bWVudDo6dXNl
RGFya0FwcGVhcmFuY2UoKSBjb25zdAogICAgICAgICByZXR1cm4gcGFnZVVzZXNEYXJrQXBwZWFy
YW5jZTsKIAogI2lmIEVOQUJMRShEQVJLX01PREVfQ1NTKQotICAgIGlmIChtX3N1cHBvcnRlZENv
bG9yU2NoZW1lcy5jb250YWlucyhDb2xvclNjaGVtZXM6OkRhcmspKQorICAgIGlmIChzdXBwb3J0
ZWRDb2xvclNjaGVtZXMuY29udGFpbnMoQ29sb3JTY2hlbWVzOjpEYXJrKSkKICAgICAgICAgcmV0
dXJuIHBhZ2VVc2VzRGFya0FwcGVhcmFuY2U7Ci0KLSAgICBBU1NFUlQobV9zdXBwb3J0ZWRDb2xv
clNjaGVtZXMuY29udGFpbnMoQ29sb3JTY2hlbWVzOjpMaWdodCkpOwogI2VuZGlmCiAKICAgICBy
ZXR1cm4gZmFsc2U7CiB9CiAKLU9wdGlvblNldDxTdHlsZUNvbG9yOjpPcHRpb25zPiBEb2N1bWVu
dDo6c3R5bGVDb2xvck9wdGlvbnMoKSBjb25zdAorT3B0aW9uU2V0PFN0eWxlQ29sb3I6Ok9wdGlv
bnM+IERvY3VtZW50OjpzdHlsZUNvbG9yT3B0aW9ucyhjb25zdCBSZW5kZXJTdHlsZSogc3R5bGUp
IGNvbnN0CiB7CiAgICAgT3B0aW9uU2V0PFN0eWxlQ29sb3I6Ok9wdGlvbnM+IG9wdGlvbnM7CiAg
ICAgaWYgKHVzZVN5c3RlbUFwcGVhcmFuY2UoKSkKICAgICAgICAgb3B0aW9ucy5hZGQoU3R5bGVD
b2xvcjo6T3B0aW9uczo6VXNlU3lzdGVtQXBwZWFyYW5jZSk7Ci0gICAgaWYgKHVzZURhcmtBcHBl
YXJhbmNlKCkpCisgICAgaWYgKHVzZURhcmtBcHBlYXJhbmNlKHN0eWxlKSkKICAgICAgICAgb3B0
aW9ucy5hZGQoU3R5bGVDb2xvcjo6T3B0aW9uczo6VXNlRGFya0FwcGVhcmFuY2UpOwogICAgIHJl
dHVybiBvcHRpb25zOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50
LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAppbmRleCA2YTcyNjVhOWIxYmY3MzVk
Y2JlYzkzNGI3N2JjZmZmYTAyZGFkNWNhLi5jZDUzZGJhNjg1YTliMDMwYTM0MjY4MGQ1MmY0MzVi
ZjVkM2M5YjEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaApAQCAtNTc4LDkgKzU3OCw5IEBAIHB1Ymxp
YzoKICAgICBmbG9hdCBkZXZpY2VTY2FsZUZhY3RvcigpIGNvbnN0OwogCiAgICAgV0VCQ09SRV9F
WFBPUlQgYm9vbCB1c2VTeXN0ZW1BcHBlYXJhbmNlKCkgY29uc3Q7Ci0gICAgV0VCQ09SRV9FWFBP
UlQgYm9vbCB1c2VEYXJrQXBwZWFyYW5jZSgpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIGJv
b2wgdXNlRGFya0FwcGVhcmFuY2UoY29uc3QgUmVuZGVyU3R5bGUqKSBjb25zdDsKIAotICAgIE9w
dGlvblNldDxTdHlsZUNvbG9yOjpPcHRpb25zPiBzdHlsZUNvbG9yT3B0aW9ucygpIGNvbnN0Owor
ICAgIE9wdGlvblNldDxTdHlsZUNvbG9yOjpPcHRpb25zPiBzdHlsZUNvbG9yT3B0aW9ucyhjb25z
dCBSZW5kZXJTdHlsZSopIGNvbnN0OwogCiAgICAgV0VCQ09SRV9FWFBPUlQgUmVmPFJhbmdlPiBj
cmVhdGVSYW5nZSgpOwogCkBAIC05MDEsMTEgKzkwMSw2IEBAIHB1YmxpYzoKICAgICB2b2lkIHBy
b2Nlc3NSZWZlcnJlclBvbGljeShjb25zdCBTdHJpbmcmIHBvbGljeSwgUmVmZXJyZXJQb2xpY3lT
b3VyY2UpOwogCiAjaWYgRU5BQkxFKERBUktfTU9ERV9DU1MpCi0gICAgZW51bSBjbGFzcyBDb2xv
clNjaGVtZXMgOiB1aW50OF90IHsKLSAgICAgICAgTGlnaHQgPSAxIDw8IDAsCi0gICAgICAgIERh
cmsgPSAxIDw8IDEKLSAgICB9OwotCiAgICAgdm9pZCBwcm9jZXNzU3VwcG9ydGVkQ29sb3JTY2hl
bWVzKGNvbnN0IFN0cmluZyYgY29sb3JTY2hlbWVzKTsKICNlbmRpZgogCkBAIC0xNzcyLDcgKzE3
NjcsOCBAQCBwcml2YXRlOgogICAgIEhhc2hTZXQ8U1ZHVXNlRWxlbWVudCo+IG1fc3ZnVXNlRWxl
bWVudHM7CiAKICNpZiBFTkFCTEUoREFSS19NT0RFX0NTUykKLSAgICBPcHRpb25TZXQ8Q29sb3JT
Y2hlbWVzPiBtX3N1cHBvcnRlZENvbG9yU2NoZW1lcyB7IENvbG9yU2NoZW1lczo6TGlnaHQgfTsK
KyAgICBPcHRpb25TZXQ8Q29sb3JTY2hlbWVzPiBtX3N1cHBvcnRlZENvbG9yU2NoZW1lczsKKyAg
ICBib29sIG1fYWxsb3dzQ29sb3JTY2hlbWVUcmFuc2Zvcm1hdGlvbnMgeyB0cnVlIH07CiAjZW5k
aWYKIAogI2lmIEVOQUJMRShEQVNIQk9BUkRfU1VQUE9SVCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvY29jb2EvV2ViQ29udGVudFJlYWRlckNvY29hLm1tIGIvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9jb2NvYS9XZWJDb250ZW50UmVhZGVyQ29jb2EubW0KaW5kZXggYWVmZWIx
YWYxZjY5M2MzOTEyYmRmOGQ2OGQzZmQ5ZDVjYzc2NWZlYy4uZDQyMDdiOWNmMWMxY2Q2ODg0NzNk
NGJmMDhiNGVhMjgwMGI3NDZiMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9j
b2NvYS9XZWJDb250ZW50UmVhZGVyQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9jb2NvYS9XZWJDb250ZW50UmVhZGVyQ29jb2EubW0KQEAgLTUwLDYgKzUwLDcgQEAKICNpbXBv
cnQgIk1JTUVUeXBlUmVnaXN0cnkuaCIKICNpbXBvcnQgIlBhZ2UuaCIKICNpbXBvcnQgIlB1Ymxp
Y1VSTE1hbmFnZXIuaCIKKyNpbXBvcnQgIlJlbmRlclZpZXcuaCIKICNpbXBvcnQgIlJ1bnRpbWVF
bmFibGVkRmVhdHVyZXMuaCIKICNpbXBvcnQgIlNlcmlhbGl6ZWRBdHRhY2htZW50RGF0YS5oIgog
I2ltcG9ydCAiU2V0dGluZ3MuaCIKQEAgLTEzMyw3ICsxMzQsOSBAQCBzdGF0aWMgRnJhZ21lbnRB
bmRSZXNvdXJjZXMgY3JlYXRlRnJhZ21lbnQoRnJhbWUmIGZyYW1lLCBOU0F0dHJpYnV0ZWRTdHJp
bmcgKnN0cgogICAgIERvY3VtZW50JiBkb2N1bWVudCA9ICpmcmFtZS5kb2N1bWVudCgpOwogCiAj
aWYgUExBVEZPUk0oTUFDKQotICAgIExvY2FsRGVmYXVsdFN5c3RlbUFwcGVhcmFuY2UgbG9jYWxB
cHBlYXJhbmNlKGRvY3VtZW50LnVzZURhcmtBcHBlYXJhbmNlKCkpOworICAgIGF1dG8qIHZpZXcg
PSBmcmFtZS52aWV3KCk7CisgICAgYXV0byogcmVuZGVyVmlldyA9IHZpZXcgPyB2aWV3LT5yZW5k
ZXJWaWV3KCkgOiBudWxscHRyOworICAgIExvY2FsRGVmYXVsdFN5c3RlbUFwcGVhcmFuY2UgbG9j
YWxBcHBlYXJhbmNlKHJlbmRlclZpZXcgPyByZW5kZXJWaWV3LT51c2VEYXJrQXBwZWFyYW5jZSgp
IDogZmFsc2UpOwogI2VuZGlmCiAKICAgICBOU0FycmF5ICpzdWJyZXNvdXJjZXMgPSBuaWw7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250
ZXh0MkQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29u
dGV4dDJELmNwcAppbmRleCBkMTVkZWM0NjBlZDc1NDhiYjU3NmMxNzk1MTYzOWQ5YTI4NzE2MDM3
Li5kYTFjODBmZDJmZDgxMTBkOWY1OGM3MzIxM2JkYzgzYmViZDAyZjdmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5j
cHAKQEAgLTg2LDcgKzg2LDcgQEAgdm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmRyYXdG
b2N1c0lmTmVlZGVkSW50ZXJuYWwoY29uc3QgUGF0aCYgcGF0aCwgRWxlbWUKICAgICBhdXRvKiBj
b250ZXh0ID0gZHJhd2luZ0NvbnRleHQoKTsKICAgICBpZiAoIWVsZW1lbnQuZm9jdXNlZCgpIHx8
ICFzdGF0ZSgpLmhhc0ludmVydGlibGVUcmFuc2Zvcm0gfHwgcGF0aC5pc0VtcHR5KCkgfHwgIWVs
ZW1lbnQuaXNEZXNjZW5kYW50T2YoY2FudmFzKCkpIHx8ICFjb250ZXh0KQogICAgICAgICByZXR1
cm47Ci0gICAgY29udGV4dC0+ZHJhd0ZvY3VzUmluZyhwYXRoLCAxLCAxLCBSZW5kZXJUaGVtZTo6
Zm9jdXNSaW5nQ29sb3IoZWxlbWVudC5kb2N1bWVudCgpLnN0eWxlQ29sb3JPcHRpb25zKCkpKTsK
KyAgICBjb250ZXh0LT5kcmF3Rm9jdXNSaW5nKHBhdGgsIDEsIDEsIFJlbmRlclRoZW1lOjpmb2N1
c1JpbmdDb2xvcihlbGVtZW50LmRvY3VtZW50KCkuc3R5bGVDb2xvck9wdGlvbnMoY2FudmFzKCku
Y29tcHV0ZWRTdHlsZSgpKSkpOwogfQogCiBTdHJpbmcgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJE
Ojpmb250KCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JPdmVybGF5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JPdmVy
bGF5LmNwcAppbmRleCBkNWRlZjkwZjE2Zjg4MmY4MTRhNmJjZDg2NzViNzhjNjRkZDRiOTFjLi5k
ZWM3MWU1ZmU4NDAxMmQzOWIwMDc0ODk2ODcxMTQwYWFkMDg2MTY1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yT3ZlcmxheS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvck92ZXJsYXkuY3BwCkBAIC0xODAsMTIgKzE4MCwxMyBA
QCB2b2lkIEluc3BlY3Rvck92ZXJsYXk6OnBhaW50KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkK
ICAgICBpZiAoIXNob3VsZFNob3dPdmVybGF5KCkpCiAgICAgICAgIHJldHVybjsKIAorICAgIEdy
YXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcihjb250ZXh0KTsKKyAgICBGcmFtZVZp
ZXcqIHZpZXcgPSBvdmVybGF5UGFnZSgpLT5tYWluRnJhbWUoKS52aWV3KCk7CisKICNpZiBQTEFU
Rk9STShNQUMpCi0gICAgTG9jYWxEZWZhdWx0U3lzdGVtQXBwZWFyYW5jZSBsb2NhbEFwcGVhcmFu
Y2UobV9wYWdlLm1haW5GcmFtZSgpLmRvY3VtZW50KCktPnVzZURhcmtBcHBlYXJhbmNlKCkpOwor
ICAgIExvY2FsRGVmYXVsdFN5c3RlbUFwcGVhcmFuY2UgbG9jYWxBcHBlYXJhbmNlKHZpZXctPnJl
bmRlclZpZXcoKS0+dXNlRGFya0FwcGVhcmFuY2UoKSk7CiAjZW5kaWYKIAotICAgIEdyYXBoaWNz
Q29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcihjb250ZXh0KTsKLSAgICBGcmFtZVZpZXcqIHZp
ZXcgPSBvdmVybGF5UGFnZSgpLT5tYWluRnJhbWUoKS52aWV3KCk7CiAgICAgdmlldy0+dXBkYXRl
TGF5b3V0QW5kU3R5bGVJZk5lZWRlZFJlY3Vyc2l2ZSgpOwogICAgIHZpZXctPnBhaW50KGNvbnRl
eHQsIEludFJlY3QoMCwgMCwgdmlldy0+d2lkdGgoKSwgdmlldy0+aGVpZ2h0KCkpKTsKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvRnJhbWVWaWV3LmNwcAppbmRleCAzZTYyNDZhNTU0ZTY5N2E2ODViZjdmMmI0ZjBi
NTg1MWU4NTcwNzViLi4yMGQ3NjE1ZmVmMDA1ZGFiMzhkNzQ0YzMyYjlmMTZlY2JiZDEyYjlhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCkBAIC0yMDQ2LDkgKzIwNDYsNyBAQCBib29sIEZy
YW1lVmlldzo6c2hvdWxkU2V0Q3Vyc29yKCkgY29uc3QKIAogYm9vbCBGcmFtZVZpZXc6OnVzZURh
cmtBcHBlYXJhbmNlKCkgY29uc3QKIHsKLSAgICBBU1NFUlQoZnJhbWUoKS5kb2N1bWVudCgpKTsK
LSAgICBhdXRvJiBkb2N1bWVudCA9ICpmcmFtZSgpLmRvY3VtZW50KCk7Ci0gICAgcmV0dXJuIGRv
Y3VtZW50LnVzZURhcmtBcHBlYXJhbmNlKCk7CisgICAgcmV0dXJuIHJlbmRlclZpZXcoKS0+dXNl
RGFya0FwcGVhcmFuY2UoKTsKIH0KIAogYm9vbCBGcmFtZVZpZXc6OnNjcm9sbENvbnRlbnRzRmFz
dFBhdGgoY29uc3QgSW50U2l6ZSYgc2Nyb2xsRGVsdGEsIGNvbnN0IEludFJlY3QmIHJlY3RUb1Nj
cm9sbCwgY29uc3QgSW50UmVjdCYgY2xpcFJlY3QpCkBAIC0zOTExLDggKzM5MDksNyBAQCB2b2lk
IEZyYW1lVmlldzo6cGFpbnRTY3JvbGxDb3JuZXIoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBj
b25zdCBJbnRSZWN0JiBjb3JuZQogI2lmIFBMQVRGT1JNKE1BQykKICAgICAvLyBJZiBkYXJrIGFw
cGVhcmFuY2UgaXMgdXNlZCBvciB0aGUgb3ZlcmxheSBzdHlsZSBpcyBsaWdodCAoYmVjYXVzZSBv
ZiBhIGRhcmsgcGFnZSBiYWNrZ3JvdW5kKSwgc2V0IHRoZSBkYXJrIGFwcHBlYXJhbmNlLgogICAg
IC8vIEtlZXAgdGhpcyBpbiBzeW5jIHdpdGggU2Nyb2xsQW5pbWF0b3JNYWMncyBlZmZlY3RpdmVB
cHBlYXJhbmNlRm9yU2Nyb2xsZXJJbXA6LgotICAgIGF1dG8qIGRvY3VtZW50ID0gZnJhbWUoKS5k
b2N1bWVudCgpOwotICAgIGJvb2wgdXNlRGFya0FwcGVhcmFuY2UgPSAoZG9jdW1lbnQgJiYgZG9j
dW1lbnQtPnVzZURhcmtBcHBlYXJhbmNlKCkpIHx8IHNjcm9sbGJhck92ZXJsYXlTdHlsZSgpID09
IFdlYkNvcmU6OlNjcm9sbGJhck92ZXJsYXlTdHlsZUxpZ2h0OworICAgIGJvb2wgdXNlRGFya0Fw
cGVhcmFuY2UgPSByZW5kZXJWaWV3KCktPnVzZURhcmtBcHBlYXJhbmNlKCkgfHwgc2Nyb2xsYmFy
T3ZlcmxheVN0eWxlKCkgPT0gV2ViQ29yZTo6U2Nyb2xsYmFyT3ZlcmxheVN0eWxlTGlnaHQ7CiAg
ICAgTG9jYWxEZWZhdWx0U3lzdGVtQXBwZWFyYW5jZSBsb2NhbEFwcGVhcmFuY2UodXNlRGFya0Fw
cGVhcmFuY2UpOwogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21hYy9EcmFnSW1hZ2VNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvRHJhZ0lt
YWdlTWFjLm1tCmluZGV4IDExY2RhMjRkMGM5NmE3MWFjOGQxYjIyMjI1MWFjZDllMzNlOGYyMTAu
LjljMzBmNzljODRkM2M3ZDg2NWQ0MTE1NTM5MTM2N2M4ZjQ0NGE2ZGEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9EcmFnSW1hZ2VNYWMubW0KKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWFjL0RyYWdJbWFnZU1hYy5tbQpAQCAtMzAwLDcgKzMwMCw3IEBAIERy
YWdJbWFnZVJlZiBjcmVhdGVEcmFnSW1hZ2VGb3JMaW5rKEVsZW1lbnQmIGVsZW1lbnQsIFVSTCYg
dXJsLCBjb25zdCBTdHJpbmcmIHRpCiB7CiAgICAgTGlua0ltYWdlTGF5b3V0IGxheW91dCh1cmws
IHRpdGxlKTsKIAotICAgIExvY2FsRGVmYXVsdFN5c3RlbUFwcGVhcmFuY2UgbG9jYWxBcHBlYXJh
bmNlKGVsZW1lbnQuZG9jdW1lbnQoKS51c2VEYXJrQXBwZWFyYW5jZSgpKTsKKyAgICBMb2NhbERl
ZmF1bHRTeXN0ZW1BcHBlYXJhbmNlIGxvY2FsQXBwZWFyYW5jZShlbGVtZW50LmRvY3VtZW50KCku
dXNlRGFya0FwcGVhcmFuY2UoZWxlbWVudC5jb21wdXRlZFN0eWxlKCkpKTsKIAogICAgIGF1dG8g
aW1hZ2VTaXplID0gbGF5b3V0LmJvdW5kaW5nUmVjdC5zaXplKCk7CiAjaWYgX19NQUNfT1NfWF9W
RVJTSU9OX01JTl9SRVFVSVJFRCA8IDEwMTMwMApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL0lubGluZUZsb3dCb3guY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lu
bGluZUZsb3dCb3guY3BwCmluZGV4IGQ3NDU4MTE4YTJiODVlMTQyYzNkZDA1NWFhZWRjODJjZGZm
ZTVjODUuLjAzZTQxZTcxNTkyMDBhYWNmMmNmODk4YmQyYjJmOWMyODYwNmFiOTUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVGbG93Qm94LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lRmxvd0JveC5jcHAKQEAgLTEzNzIsNyArMTM3Miw3
IEBAIHZvaWQgSW5saW5lRmxvd0JveDo6cGFpbnRCb3hEZWNvcmF0aW9ucyhQYWludEluZm8mIHBh
aW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQmCiAgICAgQ29sb3IgY29sb3IgPSBsaW5lU3R5bGUu
dmlzaXRlZERlcGVuZGVudENvbG9yKENTU1Byb3BlcnR5QmFja2dyb3VuZENvbG9yKTsKIAogICAg
IENvbXBvc2l0ZU9wZXJhdG9yIGNvbXBvc2l0ZU9wID0gQ29tcG9zaXRlU291cmNlT3ZlcjsKLSAg
ICBpZiAocmVuZGVyZXIoKS5kb2N1bWVudCgpLnNldHRpbmdzKCkucHVuY2hPdXRXaGl0ZUJhY2tn
cm91bmRzSW5EYXJrTW9kZSgpICYmIENvbG9yOjppc1doaXRlQ29sb3IoY29sb3IpICYmIHJlbmRl
cmVyKCkudGhlbWUoKS51c2luZ0RhcmtBcHBlYXJhbmNlKHJlbmRlcmVyKCkpKQorICAgIGlmIChy
ZW5kZXJlcigpLmRvY3VtZW50KCkuc2V0dGluZ3MoKS5wdW5jaE91dFdoaXRlQmFja2dyb3VuZHNJ
bkRhcmtNb2RlKCkgJiYgQ29sb3I6OmlzV2hpdGVDb2xvcihjb2xvcikgJiYgcmVuZGVyZXIoKS51
c2VEYXJrQXBwZWFyYW5jZSgpKQogICAgICAgICBjb21wb3NpdGVPcCA9IENvbXBvc2l0ZURlc3Rp
bmF0aW9uT3V0OwogCiAgICAgY29sb3IgPSBsaW5lU3R5bGUuY29sb3JCeUFwcGx5aW5nQ29sb3JG
aWx0ZXIoY29sb3IpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGlu
ZVRleHRCb3guY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZVRleHRCb3guY3Bw
CmluZGV4IDUwMzllMmFhYWNlYjE5NTkzYmU5NDk3ZTllZTJiZjA3OTNmNzk5NzMuLjA4ZWIwMzk3
NmMyZTE2YmQ0OTlhNzA2ZjBiMGIxODQ5NTU2YzI5YWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9JbmxpbmVUZXh0Qm94LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvSW5saW5lVGV4dEJveC5jcHAKQEAgLTcxNiw3ICs3MTYsNyBAQCB2b2lkIElubGluZVRl
eHRCb3g6OnBhaW50UGxhdGZvcm1Eb2N1bWVudE1hcmtlcihHcmFwaGljc0NvbnRleHQmIGNvbnRl
eHQsIGNvbnN0CiAgICAgYXV0byBib3VuZHMgPSBjYWxjdWxhdGVEb2N1bWVudE1hcmtlckJvdW5k
cyhtYXJrZWRUZXh0KTsKIAogICAgIGF1dG8gbGluZVN0eWxlRm9yTWFya2VkVGV4dFR5cGUgPSBb
Jl0oKSAtPiBEb2N1bWVudE1hcmtlckxpbmVTdHlsZSB7Ci0gICAgICAgIGJvb2wgc2hvdWxkVXNl
RGFya0FwcGVhcmFuY2UgPSByZW5kZXJlcigpLmRvY3VtZW50KCkudXNlRGFya0FwcGVhcmFuY2Uo
KTsKKyAgICAgICAgYm9vbCBzaG91bGRVc2VEYXJrQXBwZWFyYW5jZSA9IHJlbmRlcmVyKCkudXNl
RGFya0FwcGVhcmFuY2UoKTsKICAgICAgICAgc3dpdGNoIChtYXJrZWRUZXh0LnR5cGUpIHsKICAg
ICAgICAgY2FzZSBNYXJrZWRUZXh0OjpTcGVsbGluZ0Vycm9yOgogICAgICAgICAgICAgcmV0dXJu
IHsgRG9jdW1lbnRNYXJrZXJMaW5lU3R5bGU6Ok1vZGU6OlNwZWxsaW5nLCBzaG91bGRVc2VEYXJr
QXBwZWFyYW5jZSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckJveC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNwcAppbmRleCBj
YTZlN2MxNDVmYmZlMjdlMDc0Y2IxMWZjZTM4YTIyODM2MDAzMDYwLi4wZjEyYWQ4MGI5NGQwYWU0
ZWYzMmUyYjM0MTIwYWUyOTEzOWNhN2ZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyQm94LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
Qm94LmNwcApAQCAtMTIwNyw3ICsxMjA3LDcgQEAgdm9pZCBSZW5kZXJCb3g6OnBhaW50Um9vdEJv
eEZpbGxMYXllcnMoY29uc3QgUGFpbnRJbmZvJiBwYWludEluZm8pCiAgICAgYXV0byBjb2xvciA9
IHN0eWxlLnZpc2l0ZWREZXBlbmRlbnRDb2xvcihDU1NQcm9wZXJ0eUJhY2tncm91bmRDb2xvcik7
CiAKICAgICBDb21wb3NpdGVPcGVyYXRvciBjb21wb3NpdGVPcCA9IENvbXBvc2l0ZVNvdXJjZU92
ZXI7Ci0gICAgaWYgKGRvY3VtZW50KCkuc2V0dGluZ3MoKS5wdW5jaE91dFdoaXRlQmFja2dyb3Vu
ZHNJbkRhcmtNb2RlKCkgJiYgQ29sb3I6OmlzV2hpdGVDb2xvcihjb2xvcikgJiYgdGhlbWUoKS51
c2luZ0RhcmtBcHBlYXJhbmNlKCp0aGlzKSkKKyAgICBpZiAoZG9jdW1lbnQoKS5zZXR0aW5ncygp
LnB1bmNoT3V0V2hpdGVCYWNrZ3JvdW5kc0luRGFya01vZGUoKSAmJiBDb2xvcjo6aXNXaGl0ZUNv
bG9yKGNvbG9yKSAmJiB1c2VEYXJrQXBwZWFyYW5jZSgpKQogICAgICAgICBjb21wb3NpdGVPcCA9
IENvbXBvc2l0ZURlc3RpbmF0aW9uT3V0OwogCiAgICAgcGFpbnRGaWxsTGF5ZXJzKHBhaW50SW5m
bywgc3R5bGUuY29sb3JCeUFwcGx5aW5nQ29sb3JGaWx0ZXIoY29sb3IpLCBzdHlsZS5iYWNrZ3Jv
dW5kTGF5ZXJzKCksIHZpZXcoKS5iYWNrZ3JvdW5kUmVjdCgpLCBCYWNrZ3JvdW5kQmxlZWROb25l
LCBjb21wb3NpdGVPcCwgcm9vdEJhY2tncm91bmRSZW5kZXJlcik7CkBAIC0xMzQxLDcgKzEzNDEs
NyBAQCB2b2lkIFJlbmRlckJveDo6cGFpbnRCYWNrZ3JvdW5kKGNvbnN0IFBhaW50SW5mbyYgcGFp
bnRJbmZvLCBjb25zdCBMYXlvdXRSZWN0JiBwYQogICAgIENvbG9yIGJhY2tncm91bmRDb2xvciA9
IHN0eWxlKCkudmlzaXRlZERlcGVuZGVudENvbG9yKENTU1Byb3BlcnR5QmFja2dyb3VuZENvbG9y
KTsKIAogICAgIENvbXBvc2l0ZU9wZXJhdG9yIGNvbXBvc2l0ZU9wID0gQ29tcG9zaXRlU291cmNl
T3ZlcjsKLSAgICBpZiAoZG9jdW1lbnQoKS5zZXR0aW5ncygpLnB1bmNoT3V0V2hpdGVCYWNrZ3Jv
dW5kc0luRGFya01vZGUoKSAmJiBDb2xvcjo6aXNXaGl0ZUNvbG9yKGJhY2tncm91bmRDb2xvcikg
JiYgdGhlbWUoKS51c2luZ0RhcmtBcHBlYXJhbmNlKCp0aGlzKSkKKyAgICBpZiAoZG9jdW1lbnQo
KS5zZXR0aW5ncygpLnB1bmNoT3V0V2hpdGVCYWNrZ3JvdW5kc0luRGFya01vZGUoKSAmJiBDb2xv
cjo6aXNXaGl0ZUNvbG9yKGJhY2tncm91bmRDb2xvcikgJiYgdXNlRGFya0FwcGVhcmFuY2UoKSkK
ICAgICAgICAgY29tcG9zaXRlT3AgPSBDb21wb3NpdGVEZXN0aW5hdGlvbk91dDsKIAogICAgIHBh
aW50RmlsbExheWVycyhwYWludEluZm8sIHN0eWxlKCkuY29sb3JCeUFwcGx5aW5nQ29sb3JGaWx0
ZXIoYmFja2dyb3VuZENvbG9yKSwgc3R5bGUoKS5iYWNrZ3JvdW5kTGF5ZXJzKCksIHBhaW50UmVj
dCwgYmxlZWRBdm9pZGFuY2UsIGNvbXBvc2l0ZU9wKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJFbGVtZW50LmNwcAppbmRleCBiZjk3YzA4MjI1Y2JhOTY4MjcxMjMyOGFkNThlOTYw
NzM4MDEzOWEwLi45MDhiODVhODhkNTRiOTM2YjcxNWFiOWFhNjQzMTY3NDQ0MzNkYjQxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVsZW1lbnQuY3BwCkBAIC0xMzc0LDggKzEz
NzQsOCBAQCBDb2xvciBSZW5kZXJFbGVtZW50OjpzZWxlY3Rpb25Db2xvcihDU1NQcm9wZXJ0eUlE
IGNvbG9yUHJvcGVydHkpIGNvbnN0CiAgICAgfQogCiAgICAgaWYgKGZyYW1lKCkuc2VsZWN0aW9u
KCkuaXNGb2N1c2VkQW5kQWN0aXZlKCkpCi0gICAgICAgIHJldHVybiB0aGVtZSgpLmFjdGl2ZVNl
bGVjdGlvbkZvcmVncm91bmRDb2xvcihkb2N1bWVudCgpLnN0eWxlQ29sb3JPcHRpb25zKCkpOwot
ICAgIHJldHVybiB0aGVtZSgpLmluYWN0aXZlU2VsZWN0aW9uRm9yZWdyb3VuZENvbG9yKGRvY3Vt
ZW50KCkuc3R5bGVDb2xvck9wdGlvbnMoKSk7CisgICAgICAgIHJldHVybiB0aGVtZSgpLmFjdGl2
ZVNlbGVjdGlvbkZvcmVncm91bmRDb2xvcihzdHlsZUNvbG9yT3B0aW9ucygpKTsKKyAgICByZXR1
cm4gdGhlbWUoKS5pbmFjdGl2ZVNlbGVjdGlvbkZvcmVncm91bmRDb2xvcihzdHlsZUNvbG9yT3B0
aW9ucygpKTsKIH0KIAogc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBSZW5kZXJFbGVtZW50
OjpzZWxlY3Rpb25Qc2V1ZG9TdHlsZSgpIGNvbnN0CkBAIC0xNDA5LDE1ICsxNDA5LDE1IEBAIENv
bG9yIFJlbmRlckVsZW1lbnQ6OnNlbGVjdGlvbkJhY2tncm91bmRDb2xvcigpIGNvbnN0CiAgICAg
ICAgIHJldHVybiBDb2xvcigpOwogCiAgICAgaWYgKGZyYW1lKCkuc2VsZWN0aW9uKCkuc2hvdWxk
U2hvd0Jsb2NrQ3Vyc29yKCkgJiYgZnJhbWUoKS5zZWxlY3Rpb24oKS5pc0NhcmV0KCkpCi0gICAg
ICAgIHJldHVybiB0aGVtZSgpLnRyYW5zZm9ybVNlbGVjdGlvbkJhY2tncm91bmRDb2xvcihzdHls
ZSgpLnZpc2l0ZWREZXBlbmRlbnRDb2xvcldpdGhDb2xvckZpbHRlcihDU1NQcm9wZXJ0eUNvbG9y
KSwgZG9jdW1lbnQoKS5zdHlsZUNvbG9yT3B0aW9ucygpKTsKKyAgICAgICAgcmV0dXJuIHRoZW1l
KCkudHJhbnNmb3JtU2VsZWN0aW9uQmFja2dyb3VuZENvbG9yKHN0eWxlKCkudmlzaXRlZERlcGVu
ZGVudENvbG9yV2l0aENvbG9yRmlsdGVyKENTU1Byb3BlcnR5Q29sb3IpLCBzdHlsZUNvbG9yT3B0
aW9ucygpKTsKIAogICAgIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4gcHNldWRvU3R5bGUg
PSBzZWxlY3Rpb25Qc2V1ZG9TdHlsZSgpOwogICAgIGlmIChwc2V1ZG9TdHlsZSAmJiBwc2V1ZG9T
dHlsZS0+dmlzaXRlZERlcGVuZGVudENvbG9yV2l0aENvbG9yRmlsdGVyKENTU1Byb3BlcnR5QmFj
a2dyb3VuZENvbG9yKS5pc1ZhbGlkKCkpCi0gICAgICAgIHJldHVybiB0aGVtZSgpLnRyYW5zZm9y
bVNlbGVjdGlvbkJhY2tncm91bmRDb2xvcihwc2V1ZG9TdHlsZS0+dmlzaXRlZERlcGVuZGVudENv
bG9yV2l0aENvbG9yRmlsdGVyKENTU1Byb3BlcnR5QmFja2dyb3VuZENvbG9yKSwgZG9jdW1lbnQo
KS5zdHlsZUNvbG9yT3B0aW9ucygpKTsKKyAgICAgICAgcmV0dXJuIHRoZW1lKCkudHJhbnNmb3Jt
U2VsZWN0aW9uQmFja2dyb3VuZENvbG9yKHBzZXVkb1N0eWxlLT52aXNpdGVkRGVwZW5kZW50Q29s
b3JXaXRoQ29sb3JGaWx0ZXIoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQ29sb3IpLCBzdHlsZUNvbG9y
T3B0aW9ucygpKTsKIAogICAgIGlmIChmcmFtZSgpLnNlbGVjdGlvbigpLmlzRm9jdXNlZEFuZEFj
dGl2ZSgpKQotICAgICAgICByZXR1cm4gdGhlbWUoKS5hY3RpdmVTZWxlY3Rpb25CYWNrZ3JvdW5k
Q29sb3IoZG9jdW1lbnQoKS5zdHlsZUNvbG9yT3B0aW9ucygpKTsKLSAgICByZXR1cm4gdGhlbWUo
KS5pbmFjdGl2ZVNlbGVjdGlvbkJhY2tncm91bmRDb2xvcihkb2N1bWVudCgpLnN0eWxlQ29sb3JP
cHRpb25zKCkpOworICAgICAgICByZXR1cm4gdGhlbWUoKS5hY3RpdmVTZWxlY3Rpb25CYWNrZ3Jv
dW5kQ29sb3Ioc3R5bGVDb2xvck9wdGlvbnMoKSk7CisgICAgcmV0dXJuIHRoZW1lKCkuaW5hY3Rp
dmVTZWxlY3Rpb25CYWNrZ3JvdW5kQ29sb3Ioc3R5bGVDb2xvck9wdGlvbnMoKSk7CiB9CiAKIGJv
b2wgUmVuZGVyRWxlbWVudDo6Z2V0TGVhZGluZ0Nvcm5lcihGbG9hdFBvaW50JiBwb2ludCwgYm9v
bCYgaW5zaWRlRml4ZWQpIGNvbnN0CkBAIC0xODM4LDkgKzE4MzgsOSBAQCB2b2lkIFJlbmRlckVs
ZW1lbnQ6OnBhaW50Rm9jdXNSaW5nKFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBSZW5kZXJT
dHlsZSYgc3R5bAogICAgICAgICAgICAgZm9yIChhdXRvIHJlY3QgOiBwaXhlbFNuYXBwZWRGb2N1
c1JpbmdSZWN0cykKICAgICAgICAgICAgICAgICBwYXRoLmFkZFJlY3QocmVjdCk7CiAgICAgICAg
IH0KLSAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQoKS5kcmF3Rm9jdXNSaW5nKHBhdGgsIHBhZ2Uo
KS5mb2N1c0NvbnRyb2xsZXIoKS50aW1lU2luY2VGb2N1c1dhc1NldCgpLnNlY29uZHMoKSwgbmVl
ZHNSZXBhaW50LCBSZW5kZXJUaGVtZTo6Zm9jdXNSaW5nQ29sb3IoZG9jdW1lbnQoKS5zdHlsZUNv
bG9yT3B0aW9ucygpKSk7CisgICAgICAgIHBhaW50SW5mby5jb250ZXh0KCkuZHJhd0ZvY3VzUmlu
ZyhwYXRoLCBwYWdlKCkuZm9jdXNDb250cm9sbGVyKCkudGltZVNpbmNlRm9jdXNXYXNTZXQoKS5z
ZWNvbmRzKCksIG5lZWRzUmVwYWludCwgUmVuZGVyVGhlbWU6OmZvY3VzUmluZ0NvbG9yKHN0eWxl
Q29sb3JPcHRpb25zKCkpKTsKICAgICB9IGVsc2UKLSAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQo
KS5kcmF3Rm9jdXNSaW5nKHBpeGVsU25hcHBlZEZvY3VzUmluZ1JlY3RzLCBwYWdlKCkuZm9jdXND
b250cm9sbGVyKCkudGltZVNpbmNlRm9jdXNXYXNTZXQoKS5zZWNvbmRzKCksIG5lZWRzUmVwYWlu
dCwgUmVuZGVyVGhlbWU6OmZvY3VzUmluZ0NvbG9yKGRvY3VtZW50KCkuc3R5bGVDb2xvck9wdGlv
bnMoKSkpOworICAgICAgICBwYWludEluZm8uY29udGV4dCgpLmRyYXdGb2N1c1JpbmcocGl4ZWxT
bmFwcGVkRm9jdXNSaW5nUmVjdHMsIHBhZ2UoKS5mb2N1c0NvbnRyb2xsZXIoKS50aW1lU2luY2VG
b2N1c1dhc1NldCgpLnNlY29uZHMoKSwgbmVlZHNSZXBhaW50LCBSZW5kZXJUaGVtZTo6Zm9jdXNS
aW5nQ29sb3Ioc3R5bGVDb2xvck9wdGlvbnMoKSkpOwogICAgIGlmIChuZWVkc1JlcGFpbnQpCiAg
ICAgICAgIHBhZ2UoKS5mb2N1c0NvbnRyb2xsZXIoKS5zZXRGb2N1c2VkRWxlbWVudE5lZWRzUmVw
YWludCgpOwogI2Vsc2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJJbWFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2UuY3BwCmlu
ZGV4IDgxMDllYmZmZDIxZWQ3YzNlNGRhNmFmMjhkOGI5ZDBjMzUwYTM5MTMuLmEwZDJiN2I0N2U2
YzI0NzdmODcxNjE0Mzk5MGUyZGQzZDY1MTdhOWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJJbWFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckltYWdlLmNwcApAQCAtNTc0LDcgKzU3NCw3IEBAIHZvaWQgUmVuZGVySW1hZ2U6OnBh
aW50QXJlYUVsZW1lbnRGb2N1c1JpbmcoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91
dFBvCiAKICNpZiBQTEFURk9STShNQUMpCiAgICAgYm9vbCBuZWVkc1JlcGFpbnQ7Ci0gICAgcGFp
bnRJbmZvLmNvbnRleHQoKS5kcmF3Rm9jdXNSaW5nKHBhdGgsIHBhZ2UoKS5mb2N1c0NvbnRyb2xs
ZXIoKS50aW1lU2luY2VGb2N1c1dhc1NldCgpLnNlY29uZHMoKSwgbmVlZHNSZXBhaW50LCBSZW5k
ZXJUaGVtZTo6Zm9jdXNSaW5nQ29sb3IoZG9jdW1lbnQoKS5zdHlsZUNvbG9yT3B0aW9ucygpKSk7
CisgICAgcGFpbnRJbmZvLmNvbnRleHQoKS5kcmF3Rm9jdXNSaW5nKHBhdGgsIHBhZ2UoKS5mb2N1
c0NvbnRyb2xsZXIoKS50aW1lU2luY2VGb2N1c1dhc1NldCgpLnNlY29uZHMoKSwgbmVlZHNSZXBh
aW50LCBSZW5kZXJUaGVtZTo6Zm9jdXNSaW5nQ29sb3Ioc3R5bGVDb2xvck9wdGlvbnMoKSkpOwog
ICAgIGlmIChuZWVkc1JlcGFpbnQpCiAgICAgICAgIHBhZ2UoKS5mb2N1c0NvbnRyb2xsZXIoKS5z
ZXRGb2N1c2VkRWxlbWVudE5lZWRzUmVwYWludCgpOwogI2Vsc2UKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHAKaW5kZXggODhkNmUwMWRkNmVmYzZl
MmY3YTliYzI0MzM5ZDQ4NDRhZGYyYWQ3YS4uYmI3YjE5ZWJjOGNhNjFhNDJiNGYwYjM5MWNjZTcx
ZTQwMGQwNDU3NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxh
eWVyQmFja2luZy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVy
QmFja2luZy5jcHAKQEAgLTI1NDEsNyArMjU0MSw3IEBAIHZvaWQgUmVuZGVyTGF5ZXJCYWNraW5n
OjpwYWludENvbnRlbnRzKGNvbnN0IEdyYXBoaWNzTGF5ZXIqIGdyYXBoaWNzTGF5ZXIsIEdyYXBo
CiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKE1BQykKLSAgICBMb2NhbERlZmF1bHRTeXN0ZW1BcHBl
YXJhbmNlIGxvY2FsQXBwZWFyYW5jZShyZW5kZXJlcigpLmRvY3VtZW50KCkudXNlRGFya0FwcGVh
cmFuY2UoKSk7CisgICAgTG9jYWxEZWZhdWx0U3lzdGVtQXBwZWFyYW5jZSBsb2NhbEFwcGVhcmFu
Y2UocmVuZGVyZXIoKS51c2VEYXJrQXBwZWFyYW5jZSgpKTsKICNlbmRpZgogCiAgICAgLy8gVGhl
IGRpcnR5UmVjdCBpcyBpbiB0aGUgY29vcmRzIG9mIHRoZSBwYWludGluZyByb290LgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNwcAppbmRl
eCBiNjU1ZmYyNWM5YTk1ODA2MDY0OGJiN2JlZGYyMDlmOWM1MDBiM2M4Li4wOTJiNTAwNzVlYjM5
MWFmZGQ2NmU1MGEyYjJhZWM4MmNiODIxOGRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNwcApAQCAtMjc4Miw3ICsyNzgyLDcgQEAg
dm9pZCBwYWludFNjcm9sbGJhcihTY3JvbGxiYXIqIHNjcm9sbGJhciwgR3JhcGhpY3NDb250ZXh0
JiBjb250ZXh0LCBjb25zdCBJbnRSZWMKIHZvaWQgUmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpwYWlu
dENvbnRlbnRzKGNvbnN0IEdyYXBoaWNzTGF5ZXIqIGdyYXBoaWNzTGF5ZXIsIEdyYXBoaWNzQ29u
dGV4dCYgY29udGV4dCwgR3JhcGhpY3NMYXllclBhaW50aW5nUGhhc2UsIGNvbnN0IEZsb2F0UmVj
dCYgY2xpcCwgR3JhcGhpY3NMYXllclBhaW50QmVoYXZpb3IpCiB7CiAjaWYgUExBVEZPUk0oTUFD
KQotICAgIExvY2FsRGVmYXVsdFN5c3RlbUFwcGVhcmFuY2UgbG9jYWxBcHBlYXJhbmNlKG1fcmVu
ZGVyVmlldy5kb2N1bWVudCgpLnVzZURhcmtBcHBlYXJhbmNlKCkpOworICAgIExvY2FsRGVmYXVs
dFN5c3RlbUFwcGVhcmFuY2UgbG9jYWxBcHBlYXJhbmNlKG1fcmVuZGVyVmlldy51c2VEYXJrQXBw
ZWFyYW5jZSgpKTsKICNlbmRpZgogCiAgICAgSW50UmVjdCBwaXhlbFNuYXBwZWRSZWN0Rm9ySW50
ZWdyYWxQb3NpdGlvbmVkSXRlbXMgPSBzbmFwcGVkSW50UmVjdChMYXlvdXRSZWN0KGNsaXApKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0Qm94LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0Qm94LmNwcAppbmRleCBlY2Q1NTE2
NWZmYzgxOWM1YjMyNmIzZTc2YTI1MDQ4ZDE1MDRhYjFkLi41MjAwODEzZTE5NTY4ZGIzOGVmN2Q1
NmNmOGU4MGM2NDYzMTBhMDUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyTGlzdEJveC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxp
c3RCb3guY3BwCkBAIC00MjgsMTAgKzQyOCwxMCBAQCB2b2lkIFJlbmRlckxpc3RCb3g6OnBhaW50
SXRlbUZvcmVncm91bmQoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFBvaW50Jgog
ICAgIENvbG9yIHRleHRDb2xvciA9IGl0ZW1TdHlsZS52aXNpdGVkRGVwZW5kZW50Q29sb3JXaXRo
Q29sb3JGaWx0ZXIoQ1NTUHJvcGVydHlDb2xvcik7CiAgICAgaWYgKGlzT3B0aW9uRWxlbWVudCAm
JiBkb3duY2FzdDxIVE1MT3B0aW9uRWxlbWVudD4oKmxpc3RJdGVtRWxlbWVudCkuc2VsZWN0ZWQo
KSkgewogICAgICAgICBpZiAoZnJhbWUoKS5zZWxlY3Rpb24oKS5pc0ZvY3VzZWRBbmRBY3RpdmUo
KSAmJiBkb2N1bWVudCgpLmZvY3VzZWRFbGVtZW50KCkgPT0gJnNlbGVjdEVsZW1lbnQoKSkKLSAg
ICAgICAgICAgIHRleHRDb2xvciA9IHRoZW1lKCkuYWN0aXZlTGlzdEJveFNlbGVjdGlvbkZvcmVn
cm91bmRDb2xvcihkb2N1bWVudCgpLnN0eWxlQ29sb3JPcHRpb25zKCkpOworICAgICAgICAgICAg
dGV4dENvbG9yID0gdGhlbWUoKS5hY3RpdmVMaXN0Qm94U2VsZWN0aW9uRm9yZWdyb3VuZENvbG9y
KHN0eWxlQ29sb3JPcHRpb25zKCkpOwogICAgICAgICAvLyBIb25vciB0aGUgZm9yZWdyb3VuZCBj
b2xvciBmb3IgZGlzYWJsZWQgaXRlbXMKICAgICAgICAgZWxzZSBpZiAoIWxpc3RJdGVtRWxlbWVu
dC0+aXNEaXNhYmxlZEZvcm1Db250cm9sKCkgJiYgIXNlbGVjdEVsZW1lbnQoKS5pc0Rpc2FibGVk
Rm9ybUNvbnRyb2woKSkKLSAgICAgICAgICAgIHRleHRDb2xvciA9IHRoZW1lKCkuaW5hY3RpdmVM
aXN0Qm94U2VsZWN0aW9uRm9yZWdyb3VuZENvbG9yKGRvY3VtZW50KCkuc3R5bGVDb2xvck9wdGlv
bnMoKSk7CisgICAgICAgICAgICB0ZXh0Q29sb3IgPSB0aGVtZSgpLmluYWN0aXZlTGlzdEJveFNl
bGVjdGlvbkZvcmVncm91bmRDb2xvcihzdHlsZUNvbG9yT3B0aW9ucygpKTsKICAgICB9CiAKICAg
ICBwYWludEluZm8uY29udGV4dCgpLnNldEZpbGxDb2xvcih0ZXh0Q29sb3IpOwpAQCAtNDYxLDkg
KzQ2MSw5IEBAIHZvaWQgUmVuZGVyTGlzdEJveDo6cGFpbnRJdGVtQmFja2dyb3VuZChQYWludElu
Zm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQmCiAgICAgQ29sb3IgYmFja0NvbG9yOwog
ICAgIGlmIChpczxIVE1MT3B0aW9uRWxlbWVudD4oKmxpc3RJdGVtRWxlbWVudCkgJiYgZG93bmNh
c3Q8SFRNTE9wdGlvbkVsZW1lbnQ+KCpsaXN0SXRlbUVsZW1lbnQpLnNlbGVjdGVkKCkpIHsKICAg
ICAgICAgaWYgKGZyYW1lKCkuc2VsZWN0aW9uKCkuaXNGb2N1c2VkQW5kQWN0aXZlKCkgJiYgZG9j
dW1lbnQoKS5mb2N1c2VkRWxlbWVudCgpID09ICZzZWxlY3RFbGVtZW50KCkpCi0gICAgICAgICAg
ICBiYWNrQ29sb3IgPSB0aGVtZSgpLmFjdGl2ZUxpc3RCb3hTZWxlY3Rpb25CYWNrZ3JvdW5kQ29s
b3IoZG9jdW1lbnQoKS5zdHlsZUNvbG9yT3B0aW9ucygpKTsKKyAgICAgICAgICAgIGJhY2tDb2xv
ciA9IHRoZW1lKCkuYWN0aXZlTGlzdEJveFNlbGVjdGlvbkJhY2tncm91bmRDb2xvcihzdHlsZUNv
bG9yT3B0aW9ucygpKTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgYmFja0NvbG9yID0gdGhl
bWUoKS5pbmFjdGl2ZUxpc3RCb3hTZWxlY3Rpb25CYWNrZ3JvdW5kQ29sb3IoZG9jdW1lbnQoKS5z
dHlsZUNvbG9yT3B0aW9ucygpKTsKKyAgICAgICAgICAgIGJhY2tDb2xvciA9IHRoZW1lKCkuaW5h
Y3RpdmVMaXN0Qm94U2VsZWN0aW9uQmFja2dyb3VuZENvbG9yKHN0eWxlQ29sb3JPcHRpb25zKCkp
OwogICAgIH0gZWxzZQogICAgICAgICBiYWNrQ29sb3IgPSBpdGVtU3R5bGUudmlzaXRlZERlcGVu
ZGVudENvbG9yV2l0aENvbG9yRmlsdGVyKENTU1Byb3BlcnR5QmFja2dyb3VuZENvbG9yKTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcAppbmRleCA3NjQ0NDUwZjA4
MDc3NjhjNTMxZmUyYTI3ODliMWViZmYyNjAwOTk2Li40MjU1MTA1ZTI0NGZkZDUxN2YzNDk0YmFi
Njk5MjhiMzIzOTdhNDZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0
LmNwcApAQCAtMTgwMSw2ICsxODAxLDE2IEBAIEN1cnNvckRpcmVjdGl2ZSBSZW5kZXJPYmplY3Q6
OmdldEN1cnNvcihjb25zdCBMYXlvdXRQb2ludCYsIEN1cnNvciYpIGNvbnN0CiAgICAgcmV0dXJu
IFNldEN1cnNvckJhc2VkT25TdHlsZTsKIH0KIAorYm9vbCBSZW5kZXJPYmplY3Q6OnVzZURhcmtB
cHBlYXJhbmNlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gZG9jdW1lbnQoKS51c2VEYXJrQXBwZWFy
YW5jZSgmc3R5bGUoKSk7Cit9CisKK09wdGlvblNldDxTdHlsZUNvbG9yOjpPcHRpb25zPiBSZW5k
ZXJPYmplY3Q6OnN0eWxlQ29sb3JPcHRpb25zKCkgY29uc3QKK3sKKyAgICByZXR1cm4gZG9jdW1l
bnQoKS5zdHlsZUNvbG9yT3B0aW9ucygmc3R5bGUoKSk7Cit9CisKIGJvb2wgUmVuZGVyT2JqZWN0
OjpjYW5VcGRhdGVTZWxlY3Rpb25PblJvb3RMaW5lQm94ZXMoKQogewogICAgIGlmIChuZWVkc0xh
eW91dCgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVj
dC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5oCmluZGV4IDEzYjM2
ZDY3NjAyYTA1YmViNDZlYjU3NzM3MThkODVhZGE1ODI4YTAuLjJkY2U5ZGNjNTY5MTMwOTFmNzI5
OTQ3ZmM2ZGY3MjY0YThlNDNmNWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJPYmplY3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2Jq
ZWN0LmgKQEAgLTE3Niw2ICsxNzYsOSBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBsb2NhdGVF
bmNsb3NpbmdGcmFnbWVudGVkRmxvdygpOwogICAgIH0KIAorICAgIFdFQkNPUkVfRVhQT1JUIGJv
b2wgdXNlRGFya0FwcGVhcmFuY2UoKSBjb25zdDsKKyAgICBPcHRpb25TZXQ8U3R5bGVDb2xvcjo6
T3B0aW9ucz4gc3R5bGVDb2xvck9wdGlvbnMoKSBjb25zdDsKKwogI2lmbmRlZiBOREVCVUcKICAg
ICB2b2lkIHNldEhhc0FYT2JqZWN0KGJvb2wgZmxhZykgeyBtX2hhc0FYT2JqZWN0ID0gZmxhZzsg
fQogICAgIGJvb2wgaGFzQVhPYmplY3QoKSBjb25zdCB7IHJldHVybiBtX2hhc0FYT2JqZWN0OyB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVDZWxsLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZUNlbGwuY3BwCmluZGV4IDM0
NWE3YmI1N2Y2NzNkNjc1MjNiMzMzMTNmYmFlZWZmMTA5NWE0YTcuLjc1NDE5Nzg3YzdiNmY3YTkx
ZjM2MWM4Njg5M2M4MWY5YmFlYTcwYjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJUYWJsZUNlbGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJUYWJsZUNlbGwuY3BwCkBAIC0xMjg5LDcgKzEyODksNyBAQCB2b2lkIFJlbmRlclRhYmxl
Q2VsbDo6cGFpbnRCYWNrZ3JvdW5kc0JlaGluZENlbGwoUGFpbnRJbmZvJiBwYWludEluZm8sIGNv
bnN0IExheQogCiAgICAgQ29tcG9zaXRlT3BlcmF0b3IgY29tcG9zaXRlT3AgPSBDb21wb3NpdGVT
b3VyY2VPdmVyOwogICAgIENvbG9yIGNvbG9yID0gc3R5bGUudmlzaXRlZERlcGVuZGVudENvbG9y
KENTU1Byb3BlcnR5QmFja2dyb3VuZENvbG9yKTsKLSAgICBpZiAoZG9jdW1lbnQoKS5zZXR0aW5n
cygpLnB1bmNoT3V0V2hpdGVCYWNrZ3JvdW5kc0luRGFya01vZGUoKSAmJiBDb2xvcjo6aXNXaGl0
ZUNvbG9yKGNvbG9yKSAmJiB0aGVtZSgpLnVzaW5nRGFya0FwcGVhcmFuY2UoKnRoaXMpKQorICAg
IGlmIChkb2N1bWVudCgpLnNldHRpbmdzKCkucHVuY2hPdXRXaGl0ZUJhY2tncm91bmRzSW5EYXJr
TW9kZSgpICYmIENvbG9yOjppc1doaXRlQ29sb3IoY29sb3IpICYmIHVzZURhcmtBcHBlYXJhbmNl
KCkpCiAgICAgICAgIGNvbXBvc2l0ZU9wID0gQ29tcG9zaXRlRGVzdGluYXRpb25PdXQ7CiAKICAg
ICBjb2xvciA9IHN0eWxlLmNvbG9yQnlBcHBseWluZ0NvbG9yRmlsdGVyKGNvbG9yKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWUuY3BwCmluZGV4IGJkNjZiYjNmNTkxYTBjN2M4
NGE5Y2JmOGY1M2NjYTZmZmUwYmE4NTkuLjI1NzM5MDM5NmY1MGEzMjI2NmY4MmEwNDhlNDg2NzJj
OTM4YTE1NWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVt
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lLmNwcApAQCAt
MzE4LDcgKzMxOCw3IEBAIGJvb2wgUmVuZGVyVGhlbWU6OnBhaW50KGNvbnN0IFJlbmRlckJveCYg
Ym94LCBDb250cm9sU3RhdGVzJiBjb250cm9sU3RhdGVzLCBjb25zCiAgICAgY2FzZSBCdXR0b25Q
YXJ0OgogICAgIGNhc2UgSW5uZXJTcGluQnV0dG9uUGFydDoKICAgICAgICAgdXBkYXRlQ29udHJv
bFN0YXRlc0ZvclJlbmRlcmVyKGJveCwgY29udHJvbFN0YXRlcyk7Ci0gICAgICAgIFRoZW1lOjpz
aW5nbGV0b24oKS5wYWludChwYXJ0LCBjb250cm9sU3RhdGVzLCBwYWludEluZm8uY29udGV4dCgp
LCBkZXZpY2VQaXhlbFNuYXBwZWRSZWN0LCBib3guc3R5bGUoKS5lZmZlY3RpdmVab29tKCksICZi
b3gudmlldygpLmZyYW1lVmlldygpLCBkZXZpY2VTY2FsZUZhY3RvciwgcGFnZVNjYWxlRmFjdG9y
LCBib3guZG9jdW1lbnQoKS51c2VTeXN0ZW1BcHBlYXJhbmNlKCksIGJveC5kb2N1bWVudCgpLnVz
ZURhcmtBcHBlYXJhbmNlKCkpOworICAgICAgICBUaGVtZTo6c2luZ2xldG9uKCkucGFpbnQocGFy
dCwgY29udHJvbFN0YXRlcywgcGFpbnRJbmZvLmNvbnRleHQoKSwgZGV2aWNlUGl4ZWxTbmFwcGVk
UmVjdCwgYm94LnN0eWxlKCkuZWZmZWN0aXZlWm9vbSgpLCAmYm94LnZpZXcoKS5mcmFtZVZpZXco
KSwgZGV2aWNlU2NhbGVGYWN0b3IsIHBhZ2VTY2FsZUZhY3RvciwgYm94LmRvY3VtZW50KCkudXNl
U3lzdGVtQXBwZWFyYW5jZSgpLCBib3gudXNlRGFya0FwcGVhcmFuY2UoKSk7CiAgICAgICAgIHJl
dHVybiBmYWxzZTsKICAgICBkZWZhdWx0OgogICAgICAgICBicmVhazsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZS5oIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlclRoZW1lLmgKaW5kZXggOGZiYTRkYjQwOTY3NGM3MDMyZTU2YjFlZDVjNzk2
NTgzZjRjMDE1Ni4uMTMyYTZlNDlmMDk2NmQ3ZDUwMzdjYjVjNmEwMzY0ZjgzOTg5OTliOSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lLmgKQEAgLTI2MSw4ICsyNjEsNiBAQCBw
dWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHBhaW50U3lzdGVtUHJldmlld0JhZGdlKEltYWdlJiwg
Y29uc3QgUGFpbnRJbmZvJiwgY29uc3QgRmxvYXRSZWN0Jik7CiAjZW5kaWYKIAotICAgIHZpcnR1
YWwgYm9vbCB1c2luZ0RhcmtBcHBlYXJhbmNlKGNvbnN0IFJlbmRlck9iamVjdCYpIGNvbnN0IHsg
cmV0dXJuIGZhbHNlOyB9Ci0KIHByb3RlY3RlZDoKICAgICB2aXJ0dWFsIEZvbnRDYXNjYWRlRGVz
Y3JpcHRpb24mIGNhY2hlZFN5c3RlbUZvbnREZXNjcmlwdGlvbihDU1NWYWx1ZUlEIHN5c3RlbUZv
bnRJRCkgY29uc3Q7CiAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZUNhY2hlZFN5c3RlbUZvbnREZXNj
cmlwdGlvbihDU1NWYWx1ZUlEIHN5c3RlbUZvbnRJRCwgRm9udENhc2NhZGVEZXNjcmlwdGlvbiYp
IGNvbnN0ID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJU
aGVtZU1hYy5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lTWFjLmgKaW5k
ZXggZDg1NzYxYWJjOWIxMmRmZGRhNTU0NWRkMTRmODAzNDk2Mzc5NTBkNy4uMWRkMmIxZjVmZWY4
NmY4Yzk1Zjg3NmFiZmZmODY2NDg5ZjhjZmFkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlclRoZW1lTWFjLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclRoZW1lTWFjLmgKQEAgLTE3NCw4ICsxNzQsNiBAQCBwcml2YXRlOgogICAgIGJvb2wg
cGFpbnRBdHRhY2htZW50KGNvbnN0IFJlbmRlck9iamVjdCYsIGNvbnN0IFBhaW50SW5mbyYsIGNv
bnN0IEludFJlY3QmKSBmaW5hbDsKICNlbmRpZgogCi0gICAgYm9vbCB1c2luZ0RhcmtBcHBlYXJh
bmNlKGNvbnN0IFJlbmRlck9iamVjdCYpIGNvbnN0IGZpbmFsOwotCiBwcml2YXRlOgogICAgIFN0
cmluZyBmaWxlTGlzdE5hbWVGb3JXaWR0aChjb25zdCBGaWxlTGlzdCosIGNvbnN0IEZvbnRDYXNj
YWRlJiwgaW50IHdpZHRoLCBib29sIG11bHRpcGxlRmlsZXNBbGxvd2VkKSBjb25zdCBmaW5hbDsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lTWFjLm1t
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lTWFjLm1tCmluZGV4IDNmYmQ2
MGQ2MTcxNzlkODBiMTkyNjU5YTliOGYwYmM5YzllNmNkZDUuLmQ1NTBlNWIzM2Y0YWE0ZDJlNTMz
OTVkMGViZWM5MDhiMmY3YzI3YTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJUaGVtZU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
VGhlbWVNYWMubW0KQEAgLTI5Nyw3ICsyOTcsNyBAQCBSZW5kZXJUaGVtZU1hYzo6UmVuZGVyVGhl
bWVNYWMoKQogCiBOU1ZpZXcgKlJlbmRlclRoZW1lTWFjOjpkb2N1bWVudFZpZXdGb3IoY29uc3Qg
UmVuZGVyT2JqZWN0JiBvKSBjb25zdAogewotICAgIExvY2FsRGVmYXVsdFN5c3RlbUFwcGVhcmFu
Y2UgbG9jYWxBcHBlYXJhbmNlKHVzaW5nRGFya0FwcGVhcmFuY2UobykpOworICAgIExvY2FsRGVm
YXVsdFN5c3RlbUFwcGVhcmFuY2UgbG9jYWxBcHBlYXJhbmNlKG8udXNlRGFya0FwcGVhcmFuY2Uo
KSk7CiAgICAgQ29udHJvbFN0YXRlcyBzdGF0ZXMoZXh0cmFjdENvbnRyb2xTdGF0ZXNGb3JSZW5k
ZXJlcihvKSk7CiAgICAgcmV0dXJuIFRoZW1lTWFjOjplbnN1cmVkVmlldygmby52aWV3KCkuZnJh
bWVWaWV3KCksIHN0YXRlcyk7CiB9CkBAIC0xNzEzLDcgKzE3MTMsNyBAQCB2b2lkIFJlbmRlclRo
ZW1lTWFjOjphZGp1c3RNZW51TGlzdFN0eWxlKFN0eWxlUmVzb2x2ZXImIHN0eWxlUmVzb2x2ZXIs
IFJlbmRlclN0eQogICAgIC8vIFNldCB0aGUgZm9yZWdyb3VuZCBjb2xvciB0byBibGFjayBvciBn
cmF5IHdoZW4gd2UgaGF2ZSB0aGUgYXF1YSBsb29rLgogICAgIENvbG9yIGMgPSBDb2xvcjo6ZGFy
a0dyYXk7CiAgICAgaWYgKGUpIHsKLSAgICAgICAgT3B0aW9uU2V0PFN0eWxlQ29sb3I6Ok9wdGlv
bnM+IG9wdGlvbnMgPSBlLT5kb2N1bWVudCgpLnN0eWxlQ29sb3JPcHRpb25zKCk7CisgICAgICAg
IE9wdGlvblNldDxTdHlsZUNvbG9yOjpPcHRpb25zPiBvcHRpb25zID0gZS0+ZG9jdW1lbnQoKS5z
dHlsZUNvbG9yT3B0aW9ucygmc3R5bGUpOwogICAgICAgICBjID0gIWUtPmlzRGlzYWJsZWRGb3Jt
Q29udHJvbCgpID8gc3lzdGVtQ29sb3IoQ1NTVmFsdWVCdXR0b250ZXh0LCBvcHRpb25zKSA6IHN5
c3RlbUNvbG9yKENTU1ZhbHVlR3JheXRleHQsIG9wdGlvbnMpOwogICAgIH0KICAgICBzdHlsZS5z
ZXRDb2xvcihjKTsKQEAgLTE4MDAsNyArMTgwMCw3IEBAIHZvaWQgUmVuZGVyVGhlbWVNYWM6OnNl
dFBvcHVwQnV0dG9uQ2VsbFN0YXRlKGNvbnN0IFJlbmRlck9iamVjdCYgbywgY29uc3QgSW50U2l6
CiAKIHZvaWQgUmVuZGVyVGhlbWVNYWM6OnBhaW50Q2VsbEFuZFNldEZvY3VzZWRFbGVtZW50TmVl
ZHNSZXBhaW50SWZOZWNlc3NhcnkoTlNDZWxsKiBjZWxsLCBjb25zdCBSZW5kZXJPYmplY3QmIHJl
bmRlcmVyLCBjb25zdCBQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgRmxvYXRSZWN0JiByZWN0
KQogewotICAgIExvY2FsRGVmYXVsdFN5c3RlbUFwcGVhcmFuY2UgbG9jYWxBcHBlYXJhbmNlKHVz
aW5nRGFya0FwcGVhcmFuY2UocmVuZGVyZXIpKTsKKyAgICBMb2NhbERlZmF1bHRTeXN0ZW1BcHBl
YXJhbmNlIGxvY2FsQXBwZWFyYW5jZShyZW5kZXJlci51c2VEYXJrQXBwZWFyYW5jZSgpKTsKICAg
ICBib29sIHNob3VsZERyYXdGb2N1c1JpbmcgPSBpc0ZvY3VzZWQocmVuZGVyZXIpICYmIHJlbmRl
cmVyLnN0eWxlKCkub3V0bGluZVN0eWxlSXNBdXRvKCkgPT0gT3V0bGluZUlzQXV0bzo6T247CiAg
ICAgYm9vbCBzaG91bGRVc2VJbWFnZUJ1ZmZlciA9IHJlbmRlcmVyLnN0eWxlKCkuZWZmZWN0aXZl
Wm9vbSgpICE9IDEgfHwgcmVuZGVyZXIucGFnZSgpLnBhZ2VTY2FsZUZhY3RvcigpICE9IDE7CiAg
ICAgYm9vbCBzaG91bGREcmF3Q2VsbCA9IHRydWU7CkBAIC0xODgyLDcgKzE4ODIsNyBAQCBib29s
IFJlbmRlclRoZW1lTWFjOjpwYWludFNsaWRlclRodW1iKGNvbnN0IFJlbmRlck9iamVjdCYgbywg
Y29uc3QgUGFpbnRJbmZvJiBwYQogICAgICAgICA/IHNsaWRlclRodW1iVmVydGljYWwoKQogICAg
ICAgICA6IHNsaWRlclRodW1iSG9yaXpvbnRhbCgpOwogCi0gICAgTG9jYWxEZWZhdWx0U3lzdGVt
QXBwZWFyYW5jZSBsb2NhbEFwcGVhcmFuY2UodXNpbmdEYXJrQXBwZWFyYW5jZShvKSk7CisgICAg
TG9jYWxEZWZhdWx0U3lzdGVtQXBwZWFyYW5jZSBsb2NhbEFwcGVhcmFuY2Uoby51c2VEYXJrQXBw
ZWFyYW5jZSgpKTsKIAogICAgIExvY2FsQ3VycmVudEdyYXBoaWNzQ29udGV4dCBsb2NhbENvbnRl
eHQocGFpbnRJbmZvLmNvbnRleHQoKSk7CiAKQEAgLTI5OTQsMTEgKzI5OTQsNiBAQCBib29sIFJl
bmRlclRoZW1lTWFjOjpwYWludEF0dGFjaG1lbnQoY29uc3QgUmVuZGVyT2JqZWN0JiByZW5kZXJl
ciwgY29uc3QgUGFpbnRJbgogCiAjZW5kaWYgLy8gRU5BQkxFKEFUVEFDSE1FTlRfRUxFTUVOVCkK
IAotYm9vbCBSZW5kZXJUaGVtZU1hYzo6dXNpbmdEYXJrQXBwZWFyYW5jZShjb25zdCBSZW5kZXJP
YmplY3QmIG8pIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG8uZG9jdW1lbnQoKS51c2VEYXJrQXBwZWFy
YW5jZSgpOwotfQotCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBQTEFURk9S
TShNQUMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVy
U3R5bGUuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5oCmlu
ZGV4IDk4MWI4ZWVlZWJlOTZhNjFiMWFhZDM2MzI0MmQ3NGU5NjgxYzAzZWQuLjg1NTVkMGI5ZjYy
NGQ4MjMxNDI2M2IwNTBhZTVjOWFmYWMyYzY2M2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdHlsZS9SZW5kZXJTdHlsZS5oCkBAIC04NCw2ICs4NCwxMCBAQAogI2luY2x1ZGUgIlRl
eHRTaXplQWRqdXN0bWVudC5oIgogI2VuZGlmCiAKKyNpZiBFTkFCTEUoREFSS19NT0RFX0NTUykK
KyNpbmNsdWRlICJTdHlsZVN1cHBvcnRlZENvbG9yU2NoZW1lcy5oIgorI2VuZGlmCisKICNkZWZp
bmUgU0VUX1ZBUihncm91cCwgdmFyaWFibGUsIHZhbHVlKSBkbyB7IFwKICAgICAgICAgaWYgKCFj
b21wYXJlRXF1YWwoZ3JvdXAtPnZhcmlhYmxlLCB2YWx1ZSkpIFwKICAgICAgICAgICAgIGdyb3Vw
LmFjY2VzcygpLnZhcmlhYmxlID0gdmFsdWU7IFwKQEAgLTYzMiw2ICs2MzYsMTAgQEAgcHVibGlj
OgogCiAgICAgUnVieVBvc2l0aW9uIHJ1YnlQb3NpdGlvbigpIGNvbnN0IHsgcmV0dXJuIHN0YXRp
Y19jYXN0PFJ1YnlQb3NpdGlvbj4obV9yYXJlSW5oZXJpdGVkRGF0YS0+cnVieVBvc2l0aW9uKTsg
fQogCisjaWYgRU5BQkxFKERBUktfTU9ERV9DU1MpCisgICAgU3R5bGVTdXBwb3J0ZWRDb2xvclNj
aGVtZXMgc3VwcG9ydGVkQ29sb3JTY2hlbWVzKCkgY29uc3QgeyByZXR1cm4gbV9yYXJlSW5oZXJp
dGVkRGF0YS0+c3VwcG9ydGVkQ29sb3JTY2hlbWVzOyB9CisjZW5kaWYKKwogICAgIFRleHRPcmll
bnRhdGlvbiB0ZXh0T3JpZW50YXRpb24oKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxUZXh0
T3JpZW50YXRpb24+KG1fcmFyZUluaGVyaXRlZERhdGEtPnRleHRPcmllbnRhdGlvbik7IH0KIAog
ICAgIE9iamVjdEZpdCBvYmplY3RGaXQoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxPYmpl
Y3RGaXQ+KG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPm9iamVjdEZpdCk7IH0KQEAgLTExNjUsNiAr
MTE3MywxMCBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHNldFJ1YnlQb3NpdGlvbihSdWJ5UG9zaXRp
b24gcG9zaXRpb24pIHsgU0VUX1ZBUihtX3JhcmVJbmhlcml0ZWREYXRhLCBydWJ5UG9zaXRpb24s
IHN0YXRpY19jYXN0PHVuc2lnbmVkPihwb3NpdGlvbikpOyB9CiAKKyNpZiBFTkFCTEUoREFSS19N
T0RFX0NTUykKKyAgICB2b2lkIHNldFN1cHBvcnRlZENvbG9yU2NoZW1lcyhTdHlsZVN1cHBvcnRl
ZENvbG9yU2NoZW1lcyBzdXBwb3J0ZWQpIHsgU0VUX1ZBUihtX3JhcmVJbmhlcml0ZWREYXRhLCBz
dXBwb3J0ZWRDb2xvclNjaGVtZXMsIHN1cHBvcnRlZCk7IH0KKyNlbmRpZgorCiAgICAgdm9pZCBz
ZXRGaWx0ZXIoY29uc3QgRmlsdGVyT3BlcmF0aW9ucyYgb3BzKSB7IFNFVF9ORVNURURfVkFSKG1f
cmFyZU5vbkluaGVyaXRlZERhdGEsIGZpbHRlciwgb3BlcmF0aW9ucywgb3BzKTsgfQogICAgIHZv
aWQgc2V0QXBwbGVDb2xvckZpbHRlcihjb25zdCBGaWx0ZXJPcGVyYXRpb25zJiBvcHMpIHsgU0VU
X05FU1RFRF9WQVIobV9yYXJlSW5oZXJpdGVkRGF0YSwgYXBwbGVDb2xvckZpbHRlciwgb3BlcmF0
aW9ucywgb3BzKTsgfQogCkBAIC0xNTc4LDYgKzE1OTAsMTAgQEAgcHVibGljOgogICAgIHN0YXRp
YyBRdW90ZXNEYXRhKiBpbml0aWFsUXVvdGVzKCkgeyByZXR1cm4gbnVsbHB0cjsgfQogICAgIHN0
YXRpYyBjb25zdCBBdG9taWNTdHJpbmcmIGluaXRpYWxDb250ZW50QWx0VGV4dCgpIHsgcmV0dXJu
IGVtcHR5QXRvbSgpOyB9CiAKKyNpZiBFTkFCTEUoREFSS19NT0RFX0NTUykKKyAgICBzdGF0aWMg
U3R5bGVTdXBwb3J0ZWRDb2xvclNjaGVtZXMgaW5pdGlhbFN1cHBvcnRlZENvbG9yU2NoZW1lcygp
IHsgcmV0dXJuIHsgfTsgfQorI2VuZGlmCisKICNpZiBFTkFCTEUoQ1NTM19URVhUKQogICAgIHN0
YXRpYyBUZXh0SW5kZW50TGluZSBpbml0aWFsVGV4dEluZGVudExpbmUoKSB7IHJldHVybiBUZXh0
SW5kZW50TGluZTo6Rmlyc3RMaW5lOyB9CiAgICAgc3RhdGljIFRleHRJbmRlbnRUeXBlIGluaXRp
YWxUZXh0SW5kZW50VHlwZSgpIHsgcmV0dXJuIFRleHRJbmRlbnRUeXBlOjpOb3JtYWw7IH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZUNvbnN0
YW50cy5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlQ29uc3Rh
bnRzLmgKaW5kZXggMTc2ZWIyMTNhN2E2ZTc4MmUzMTA3OTBkNTEwZjBjZDFiM2Q5ZTAyOC4uNjZl
NWM3YjQ3NDEwYTFiMGFmMTFiZWE0MzZhYzljYjJhODQ3NzFlNCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlQ29uc3RhbnRzLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlQ29uc3RhbnRzLmgKQEAgLTEw
MTgsNiArMTAxOCwxNSBAQCBlbnVtIGNsYXNzIFJ1YnlQb3NpdGlvbiA6IHVpbnQ4X3QgewogICAg
IEludGVyQ2hhcmFjdGVyCiB9OwogCisjaWYgRU5BQkxFKERBUktfTU9ERV9DU1MpCitlbnVtIGNs
YXNzIENvbG9yU2NoZW1lcyA6IHVpbnQ4X3QgeworICAgIExpZ2h0ID0gMSA8PCAwLAorICAgIERh
cmsgPSAxIDw8IDEKK307CisKK3N0YXRpYyBjb25zdCBzaXplX3QgQ29sb3JTY2hlbWVzQml0cyA9
IDI7CisjZW5kaWYKKwogc3RhdGljIGNvbnN0IHNpemVfdCBHcmlkQXV0b0Zsb3dCaXRzID0gNDsK
IGVudW0gSW50ZXJuYWxHcmlkQXV0b0Zsb3dBbGdvcml0aG0gewogICAgIEludGVybmFsQXV0b0Zs
b3dBbGdvcml0aG1TcGFyc2UgPSAxIDw8IDAsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3R5bGUvU3R5bGVSYXJlSW5oZXJpdGVkRGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVSYXJlSW5oZXJpdGVkRGF0YS5jcHAKaW5kZXggNWZiNzli
M2Y5NDdlNDQ2YjcwZWYzMzgyN2NjNzI4Y2JjODBlYjA2YS4uNDVmNzM2YWIyODI4NzE5OWRlZGY2
NzdmY2E0Zjc2OGJjMGE2MjdjNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N0eWxlL1N0eWxlUmFyZUluaGVyaXRlZERhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdHlsZS9TdHlsZVJhcmVJbmhlcml0ZWREYXRhLmNwcApAQCAtMzEsNiArMzEsNyBA
QAogI2luY2x1ZGUgIlN0eWxlQ3VzdG9tUHJvcGVydHlEYXRhLmgiCiAjaW5jbHVkZSAiU3R5bGVG
aWx0ZXJEYXRhLmgiCiAjaW5jbHVkZSAiU3R5bGVJbWFnZS5oIgorI2luY2x1ZGUgIlN0eWxlU3Vw
cG9ydGVkQ29sb3JTY2hlbWVzLmgiCiAjaW5jbHVkZSA8d3RmL1BvaW50ZXJDb21wYXJpc29uLmg+
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTY3LDYgKzY4LDEwIEBAIHN0cnVjdCBHcmVhdGVy
VGhhbk9yU2FtZVNpemVBc1N0eWxlUmFyZUluaGVyaXRlZERhdGEgOiBwdWJsaWMgUmVmQ291bnRl
ZDxHcmVhdGVyCiAgICAgQ29sb3IgdGFwSGlnaGxpZ2h0Q29sb3I7CiAjZW5kaWYKIAorI2lmIEVO
QUJMRShEQVJLX01PREVfQ1NTKQorICAgIFN0eWxlU3VwcG9ydGVkQ29sb3JTY2hlbWVzIHN1cHBv
cnRlZENvbG9yU2NoZW1lczsKKyNlbmRpZgorCiAgICAgdm9pZCogY3VzdG9tUHJvcGVydHlEYXRh
UmVmc1sxXTsKIH07CiAKQEAgLTE1Myw2ICsxNTgsOSBAQCBTdHlsZVJhcmVJbmhlcml0ZWREYXRh
OjpTdHlsZVJhcmVJbmhlcml0ZWREYXRhKCkKICNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQogICAg
ICwgdGFwSGlnaGxpZ2h0Q29sb3IoUmVuZGVyU3R5bGU6OmluaXRpYWxUYXBIaWdobGlnaHRDb2xv
cigpKQogI2VuZGlmCisjaWYgRU5BQkxFKERBUktfTU9ERV9DU1MpCisgICAgLCBzdXBwb3J0ZWRD
b2xvclNjaGVtZXMoUmVuZGVyU3R5bGU6OmluaXRpYWxTdXBwb3J0ZWRDb2xvclNjaGVtZXMoKSkK
KyNlbmRpZgogewogfQogCkBAIC0yNTEsNiArMjU5LDkgQEAgaW5saW5lIFN0eWxlUmFyZUluaGVy
aXRlZERhdGE6OlN0eWxlUmFyZUluaGVyaXRlZERhdGEoY29uc3QgU3R5bGVSYXJlSW5oZXJpdGVk
RGEKICNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQogICAgICwgdGFwSGlnaGxpZ2h0Q29sb3Ioby50
YXBIaWdobGlnaHRDb2xvcikKICNlbmRpZgorI2lmIEVOQUJMRShEQVJLX01PREVfQ1NTKQorICAg
ICwgc3VwcG9ydGVkQ29sb3JTY2hlbWVzKG8uc3VwcG9ydGVkQ29sb3JTY2hlbWVzKQorI2VuZGlm
CiB7CiB9CiAKQEAgLTI5Niw2ICszMDcsOSBAQCBib29sIFN0eWxlUmFyZUluaGVyaXRlZERhdGE6
Om9wZXJhdG9yPT0oY29uc3QgU3R5bGVSYXJlSW5oZXJpdGVkRGF0YSYgbykgY29uc3QKICNlbmRp
ZgogI2lmIEVOQUJMRShURVhUX0FVVE9TSVpJTkcpCiAgICAgICAgICYmIHRleHRTaXplQWRqdXN0
ID09IG8udGV4dFNpemVBZGp1c3QKKyNlbmRpZgorI2lmIEVOQUJMRShEQVJLX01PREVfQ1NTKQor
ICAgICAgICAmJiBzdXBwb3J0ZWRDb2xvclNjaGVtZXMgPT0gby5zdXBwb3J0ZWRDb2xvclNjaGVt
ZXMKICNlbmRpZgogICAgICAgICAmJiB1c2VyU2VsZWN0ID09IG8udXNlclNlbGVjdAogICAgICAg
ICAmJiBzcGVha0FzID09IG8uc3BlYWtBcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N0eWxlL1N0eWxlUmFyZUluaGVyaXRlZERhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdHlsZS9TdHlsZVJhcmVJbmhlcml0ZWREYXRhLmgKaW5kZXggYTNhZDE3NTAzNGM5
ZjM3MWFlMTM1OGMyOGE1NDU4YWM4NGYwOGU5ZS4uYjJiZGRmZDQ3ZmI4OWJjZWNhZDExYThkZWM0
MDk1NjU5ZjAzODJmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxl
L1N0eWxlUmFyZUluaGVyaXRlZERhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3R5bGUvU3R5bGVSYXJlSW5oZXJpdGVkRGF0YS5oCkBAIC0zNyw2ICszNywxMCBAQAogI2luY2x1
ZGUgIlRleHRTaXplQWRqdXN0bWVudC5oIgogI2VuZGlmCiAKKyNpZiBFTkFCTEUoREFSS19NT0RF
X0NTUykKKyNpbmNsdWRlICJTdHlsZVN1cHBvcnRlZENvbG9yU2NoZW1lcy5oIgorI2VuZGlmCisK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQ3Vyc29yTGlzdDsKQEAgLTE4MSw2ICsxODUs
MTAgQEAgcHVibGljOgogICAgIENvbG9yIHRhcEhpZ2hsaWdodENvbG9yOwogI2VuZGlmCiAKKyNp
ZiBFTkFCTEUoREFSS19NT0RFX0NTUykKKyAgICBTdHlsZVN1cHBvcnRlZENvbG9yU2NoZW1lcyBz
dXBwb3J0ZWRDb2xvclNjaGVtZXM7CisjZW5kaWYKKwogcHJpdmF0ZToKICAgICBTdHlsZVJhcmVJ
bmhlcml0ZWREYXRhKCk7CiAgICAgU3R5bGVSYXJlSW5oZXJpdGVkRGF0YShjb25zdCBTdHlsZVJh
cmVJbmhlcml0ZWREYXRhJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3R5bGUvU3R5bGVTdXBwb3J0ZWRDb2xvclNjaGVtZXMuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdHlsZS9TdHlsZVN1cHBvcnRlZENvbG9yU2NoZW1lcy5oCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZiNmY5
NDk5YjEzNWViNGQ5OGVlNjgyYmIxYjUwYWI4MTY1ODM1MzMKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVTdXBwb3J0ZWRDb2xvclNjaGVtZXMu
aApAQCAtMCwwICsxLDcxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFC
TEUoREFSS19NT0RFX0NTUykKKworI2luY2x1ZGUgIlJlbmRlclN0eWxlQ29uc3RhbnRzLmgiCisj
aW5jbHVkZSA8d3RmL09wdGlvblNldC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNz
IFN0eWxlU3VwcG9ydGVkQ29sb3JTY2hlbWVzIHsKK3B1YmxpYzoKKyAgICBTdHlsZVN1cHBvcnRl
ZENvbG9yU2NoZW1lcygpCisgICAgICAgIDogbV9jb2xvclNjaGVtZXMoMCkgeyB9CisKKyAgICBT
dHlsZVN1cHBvcnRlZENvbG9yU2NoZW1lcyhjb25zdCBTdHlsZVN1cHBvcnRlZENvbG9yU2NoZW1l
cyYgb3RoZXIpCisgICAgICAgIDogbV9jb2xvclNjaGVtZXMob3RoZXIubV9jb2xvclNjaGVtZXMp
LCBtX2FsbG93c1RyYW5zZm9ybWF0aW9ucyhvdGhlci5tX2FsbG93c1RyYW5zZm9ybWF0aW9ucykg
eyB9CisKKyAgICBTdHlsZVN1cHBvcnRlZENvbG9yU2NoZW1lcyhPcHRpb25TZXQ8Q29sb3JTY2hl
bWVzPiBjb2xvclNjaGVtZXMsIGJvb2wgYWxsb3dzVHJhbnNmb3JtYXRpb25zKQorICAgICAgICA6
IG1fY29sb3JTY2hlbWVzKGNvbG9yU2NoZW1lcy50b1JhdygpKSwgbV9hbGxvd3NUcmFuc2Zvcm1h
dGlvbnMoYWxsb3dzVHJhbnNmb3JtYXRpb25zKSB7IH0KKworICAgIGJvb2wgb3BlcmF0b3I9PShj
b25zdCBTdHlsZVN1cHBvcnRlZENvbG9yU2NoZW1lcyYgb3RoZXIpIGNvbnN0CisgICAgeworICAg
ICAgICByZXR1cm4gbV9jb2xvclNjaGVtZXMgPT0gb3RoZXIubV9jb2xvclNjaGVtZXMgJiYgbV9h
bGxvd3NUcmFuc2Zvcm1hdGlvbnMgPT0gb3RoZXIubV9hbGxvd3NUcmFuc2Zvcm1hdGlvbnM7Cisg
ICAgfQorCisgICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFN0eWxlU3VwcG9ydGVkQ29sb3JTY2hl
bWVzJiBvdGhlcikgY29uc3QgeyByZXR1cm4gISgqdGhpcyA9PSBvdGhlcik7IH0KKworICAgIGJv
b2wgaXNBdXRvKCkgY29uc3QgeyByZXR1cm4gIW1fY29sb3JTY2hlbWVzICYmIG1fYWxsb3dzVHJh
bnNmb3JtYXRpb25zOyB9CisgICAgYm9vbCBpc09ubHkoKSBjb25zdCB7IHJldHVybiAhbV9jb2xv
clNjaGVtZXMgJiYgIW1fYWxsb3dzVHJhbnNmb3JtYXRpb25zOyB9CisKKyAgICBPcHRpb25TZXQ8
Q29sb3JTY2hlbWVzPiBjb2xvclNjaGVtZXMoKSBjb25zdCB7IHJldHVybiBPcHRpb25TZXQ8Q29s
b3JTY2hlbWVzPjo6ZnJvbVJhdyhtX2NvbG9yU2NoZW1lcyk7IH0KKworICAgIHZvaWQgYWRkKENv
bG9yU2NoZW1lcyBjb2xvclNjaGVtZSkgeyBtX2NvbG9yU2NoZW1lcyB8PSBzdGF0aWNfY2FzdDx1
bnNpZ25lZD4oY29sb3JTY2hlbWUpOyB9CisgICAgYm9vbCBjb250YWlucyhDb2xvclNjaGVtZXMg
Y29sb3JTY2hlbWUpIGNvbnN0IHsgcmV0dXJuICEhKG1fY29sb3JTY2hlbWVzICYgc3RhdGljX2Nh
c3Q8dW5zaWduZWQ+KGNvbG9yU2NoZW1lKSk7IH0KKworICAgIHZvaWQgc2V0QWxsb3dzVHJhbnNm
b3JtYXRpb25zKGJvb2wgYWxsb3cpIHsgbV9hbGxvd3NUcmFuc2Zvcm1hdGlvbnMgPSBhbGxvdzsg
fQorICAgIGJvb2wgYWxsb3dzVHJhbnNmb3JtYXRpb25zKCkgY29uc3QgeyByZXR1cm4gbV9hbGxv
d3NUcmFuc2Zvcm1hdGlvbnM7IH0KKworcHJpdmF0ZToKKyAgICB1bnNpZ25lZCBtX2NvbG9yU2No
ZW1lcyA6IENvbG9yU2NoZW1lc0JpdHM7IC8vIENvbG9yU2NoZW1lcworICAgIGJvb2wgbV9hbGxv
d3NUcmFuc2Zvcm1hdGlvbnMgeyB0cnVlIH07Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CisKKyNlbmRpZiAvLyBFTkFCTEUoREFSS19NT0RFX0NTUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3Jh
cGhpY3MvU1ZHSW1hZ2UuY3BwCmluZGV4IDkxZWY4NTE0ZTU4M2VkMzUzODBlN2FjNzgyN2QxYmQw
ZjgyNTQwNGEuLjA2MDk3ZWNjYmJlM2MyZTZjNjJhNDU5ZGMxOGViMTYyZDQ5OTQ4YTkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmNwcApAQCAtNDcsNiArNDcsNyBAQAog
I2luY2x1ZGUgIlBhZ2VDb25maWd1cmF0aW9uLmgiCiAjaW5jbHVkZSAiUmVuZGVyU1ZHUm9vdC5o
IgogI2luY2x1ZGUgIlJlbmRlclN0eWxlLmgiCisjaW5jbHVkZSAiUmVuZGVyVmlldy5oIgogI2lu
Y2x1ZGUgIlNWR0RvY3VtZW50LmgiCiAjaW5jbHVkZSAiU1ZHRkVJbWFnZUVsZW1lbnQuaCIKICNp
bmNsdWRlICJTVkdGb3JlaWduT2JqZWN0RWxlbWVudC5oIgpAQCAtMzI0LDggKzMyNSw3IEBAIElt
YWdlRHJhd1Jlc3VsdCBTVkdJbWFnZTo6ZHJhdyhHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNv
bnN0IEZsb2F0UmVjdCYgZHN0UmVjCiAgICAgfQogCiAjaWYgUExBVEZPUk0oTUFDKQotICAgIGF1
dG8qIGRvY3VtZW50ID0gbV9wYWdlLT5tYWluRnJhbWUoKS5kb2N1bWVudCgpOwotICAgIExvY2Fs
RGVmYXVsdFN5c3RlbUFwcGVhcmFuY2UgbG9jYWxBcHBlYXJhbmNlKGRvY3VtZW50ID8gZG9jdW1l
bnQtPnVzZURhcmtBcHBlYXJhbmNlKCkgOiBmYWxzZSk7CisgICAgTG9jYWxEZWZhdWx0U3lzdGVt
QXBwZWFyYW5jZSBsb2NhbEFwcGVhcmFuY2Uodmlldy0+cmVuZGVyVmlldygpLT51c2VEYXJrQXBw
ZWFyYW5jZSgpKTsKICNlbmRpZgogCiAgICAgdmlldy0+cGFpbnQoY29udGV4dCwgaW50ZXJzZWN0
aW9uKGNvbnRleHQuY2xpcEJvdW5kcygpLCBlbmNsb3NpbmdJbnRSZWN0KHNyY1JlY3QpKSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvRE9NL0lu
amVjdGVkQnVuZGxlUmFuZ2VIYW5kbGUuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0lu
amVjdGVkQnVuZGxlL0RPTS9JbmplY3RlZEJ1bmRsZVJhbmdlSGFuZGxlLmNwcAppbmRleCAzZjRm
NTY3ZGM0YmFlNjE4NTU1MjUyMDg3NGY1ZmViNTVjODhmYzIxLi40YmZkZDdmOWY0YzRjYzRkZmE2
ZGVhYWJjMDFmNGE2YzExMWVkYWNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvSW5qZWN0ZWRCdW5kbGUvRE9NL0luamVjdGVkQnVuZGxlUmFuZ2VIYW5kbGUuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9ET00vSW5qZWN0ZWRCdW5k
bGVSYW5nZUhhbmRsZS5jcHAKQEAgLTQxLDYgKzQxLDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL0pT
UmFuZ2UuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1BhZ2UuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Jh
bmdlLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9SZW5kZXJWaWV3Lmg+CiAjaW5jbHVkZSA8V2ViQ29y
ZS9WaXNpYmxlU2VsZWN0aW9uLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRl
IDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KQEAgLTEyNCw3ICsxMjUsOCBAQCBSZWZQdHI8V2ViSW1h
Z2U+IEluamVjdGVkQnVuZGxlUmFuZ2VIYW5kbGU6OnJlbmRlcmVkSW1hZ2UoU25hcHNob3RPcHRp
b25zIG9wdGlvbgogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogI2lmIFBMQVRGT1JNKE1BQykK
LSAgICBMb2NhbERlZmF1bHRTeXN0ZW1BcHBlYXJhbmNlIGxvY2FsQXBwZWFyYW5jZShvd25lckRv
Y3VtZW50LnVzZURhcmtBcHBlYXJhbmNlKCkpOworICAgIFJlbmRlclZpZXcqIHJlbmRlclZpZXcg
PSBmcmFtZVZpZXctPnJlbmRlclZpZXcoKTsKKyAgICBMb2NhbERlZmF1bHRTeXN0ZW1BcHBlYXJh
bmNlIGxvY2FsQXBwZWFyYW5jZShyZW5kZXJWaWV3ID8gcmVuZGVyVmlldy0+dXNlRGFya0FwcGVh
cmFuY2UoKSA6IGZhbHNlKTsKICNlbmRpZgogCiAgICAgUmVmPEZyYW1lPiBwcm90ZWN0b3IoKmZy
YW1lKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBh
Z2UuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKaW5k
ZXggODBjNTM4M2EyZTU0ODU0ZTczYzg3NjUzN2ZjYzY0ZjIzY2RmMWJmNy4uMmY1NGQ1ZGZkNGFk
NTcyMWY5MzlkOTQ2OTY3MzFmNjYxM2E4OGQ3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKQEAgLTE1NTYsOCArMTU1Niw4IEBAIHZvaWQgV2ViUGFn
ZTo6c2Nyb2xsTWFpbkZyYW1lSWZOb3RBdE1heFNjcm9sbFBvc2l0aW9uKGNvbnN0IEludFNpemUm
IHNjcm9sbE9mZnNlCiB2b2lkIFdlYlBhZ2U6OmRyYXdSZWN0KEdyYXBoaWNzQ29udGV4dCYgZ3Jh
cGhpY3NDb250ZXh0LCBjb25zdCBJbnRSZWN0JiByZWN0KQogewogI2lmIFBMQVRGT1JNKE1BQykK
LSAgICBhdXRvKiBkb2N1bWVudCA9IG1fbWFpbkZyYW1lLT5jb3JlRnJhbWUoKS0+ZG9jdW1lbnQo
KTsKLSAgICBMb2NhbERlZmF1bHRTeXN0ZW1BcHBlYXJhbmNlIGxvY2FsQXBwZWFyYW5jZShkb2N1
bWVudCA/IGRvY3VtZW50LT51c2VEYXJrQXBwZWFyYW5jZSgpIDogZmFsc2UpOworICAgIFJlbmRl
clZpZXcqIHJlbmRlclZpZXcgPSBtX3BhZ2UtPm1haW5GcmFtZSgpLnZpZXcoKS0+cmVuZGVyVmll
dygpOworICAgIExvY2FsRGVmYXVsdFN5c3RlbUFwcGVhcmFuY2UgbG9jYWxBcHBlYXJhbmNlKHJl
bmRlclZpZXcgPyByZW5kZXJWaWV3LT51c2VEYXJrQXBwZWFyYW5jZSgpIDogZmFsc2UpOwogI2Vu
ZGlmCiAKICAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoZ3JhcGhpY3ND
b250ZXh0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBw
b3J0L1dlYkVkaXRvckNsaWVudC5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVT
dXBwb3J0L1dlYkVkaXRvckNsaWVudC5tbQppbmRleCA1NTQ2ZDAwYzgxNjRhMmVhOTUxNzRhNDlk
YzhkZTNlZDE0NWU2NmM1Li4zZDZhZmNiMDIwODhkY2YzNWViZDlkOWU3NzA1MjI3ODRjNmI4NDBi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJF
ZGl0b3JDbGllbnQubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBv
cnQvV2ViRWRpdG9yQ2xpZW50Lm1tCkBAIC05MiwxMCArOTIsNiBAQAogI2ltcG9ydCAiV2ViVUlL
aXREZWxlZ2F0ZS5oIgogI2VuZGlmCiAKLSNpZiBQTEFURk9STShNQUMpCi0jaW1wb3J0IDxXZWJD
b3JlL0xvY2FsRGVmYXVsdFN5c3RlbUFwcGVhcmFuY2UuaD4KLSNlbmRpZgotCiB1c2luZyBuYW1l
c3BhY2UgV2ViQ29yZTsKIAogdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKQEAgLTQ3NywxMCAr
NDczLDYgQEAgc3RhdGljIE5TRGljdGlvbmFyeSAqYXR0cmlidXRlc0ZvckF0dHJpYnV0ZWRTdHJp
bmdDb252ZXJzaW9uKCkKIAogdm9pZCBfV2ViQ3JlYXRlRnJhZ21lbnQoRG9jdW1lbnQmIGRvY3Vt
ZW50LCBOU0F0dHJpYnV0ZWRTdHJpbmcgKnN0cmluZywgRnJhZ21lbnRBbmRSZXNvdXJjZXMmIHJl
c3VsdCkKIHsKLSNpZiBQTEFURk9STShNQUMpCi0gICAgTG9jYWxEZWZhdWx0U3lzdGVtQXBwZWFy
YW5jZSBsb2NhbEFwcGVhcmFuY2UoZG9jdW1lbnQudXNlRGFya0FwcGVhcmFuY2UoKSk7Ci0jZW5k
aWYKLQogICAgIHN0YXRpYyBOU0RpY3Rpb25hcnkgKmRvY3VtZW50QXR0cmlidXRlcyA9IFthdHRy
aWJ1dGVzRm9yQXR0cmlidXRlZFN0cmluZ0NvbnZlcnNpb24oKSByZXRhaW5dOwogICAgIE5TQXJy
YXkgKnN1YnJlc291cmNlczsKICAgICBET01Eb2N1bWVudEZyYWdtZW50KiBmcmFnbWVudCA9IFtz
dHJpbmcgX2RvY3VtZW50RnJvbVJhbmdlOk5TTWFrZVJhbmdlKDAsIFtzdHJpbmcgbGVuZ3RoXSkK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCAyZmRhNGIxNjNiMjFlZDFjMmY5MjEyMmM3NjAzMTI0MmQwYjRjN2M5Li5kOWQyMmEz
Mjg2NzE4ODIwMGM2YTIzZmZiNTcwY2VmODVhNzRkOTMxIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAK
KzIwMTgtMTEtMDggIFRpbW90aHkgSGF0Y2hlciAgPHRpbW90aHlAYXBwbGUuY29tPgorCisgICAg
ICAgIEFkZCBleHBlcmltZW50YWwgc3VwcG9ydCBmb3IgYSBgc3VwcG9ydGVkLWNvbG9yLXNjaGVt
ZXNgIENTUyBwcm9wZXJ0eS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE5MTMxOQorICAgICAgICByZGFyOi8vcHJvYmxlbS80NTg1MjI2MQorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogY3NzLWRhcmstbW9k
ZS9wYXJzZS1zdXBwb3J0ZWQtY29sb3Itc2NoZW1lcy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAg
ICAgICAqIGNzcy1kYXJrLW1vZGUvcGFyc2Utc3VwcG9ydGVkLWNvbG9yLXNjaGVtZXMuaHRtbDog
QWRkZWQuCisgICAgICAgICogY3NzLWRhcmstbW9kZS9zdXBwb3J0ZWQtY29sb3Itc2NoZW1lcy1j
c3MtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBjc3MtZGFyay1tb2RlL3N1cHBvcnRl
ZC1jb2xvci1zY2hlbWVzLWNzcy5odG1sOiBBZGRlZC4KKwogMjAxOC0xMS0wNyAgSnVzdGluIE1p
Y2hhdWQgIDxqdXN0aW5fbWljaGF1ZEBhcHBsZS5jb20+CiAKICAgICAgICAgQ1NTIFBhaW50aW5n
IEFQSSBzaG91bGQgcGFzcyBzaXplLCBhcmd1bWVudHMgYW5kIGlucHV0IHByb3BlcnRpZXMgdG8g
cGFpbnQgY2FsbGJhY2sKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Nzcy1kYXJrLW1vZGUvcGFy
c2Utc3VwcG9ydGVkLWNvbG9yLXNjaGVtZXMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvY3Nz
LWRhcmstbW9kZS9wYXJzZS1zdXBwb3J0ZWQtY29sb3Itc2NoZW1lcy1leHBlY3RlZC50eHQKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uMmEyODdmNWMzYTBhMDRlODNhYmJiMWE5YjQ0MWMxYTc4ZGVjMzc0NQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2Nzcy1kYXJrLW1vZGUvcGFyc2Utc3VwcG9ydGVkLWNv
bG9yLXNjaGVtZXMtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNCBAQAorCitQQVNTIFRlc3QgdmFs
aWQgdmFsdWVzIAorUEFTUyBUZXN0IGludmFsaWQgdmFsdWVzIAorCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9jc3MtZGFyay1tb2RlL3BhcnNlLXN1cHBvcnRlZC1jb2xvci1zY2hlbWVzLmh0bWwg
Yi9MYXlvdXRUZXN0cy9jc3MtZGFyay1tb2RlL3BhcnNlLXN1cHBvcnRlZC1jb2xvci1zY2hlbWVz
Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uMWJjMTBhODI1ZDczZmIzNzVhYTU4ZTk1ODNjZmQ4MjQxNjliMDI5
ZgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Nzcy1kYXJrLW1vZGUvcGFyc2Utc3Vw
cG9ydGVkLWNvbG9yLXNjaGVtZXMuaHRtbApAQCAtMCwwICsxLDEyOCBAQAorPCFET0NUWVBFIGh0
bWw+CisKKzwhLS0gd2Via2l0LXRlc3QtcnVubmVyIFsgZXhwZXJpbWVudGFsOkRhcmtNb2RlQ1NT
RW5hYmxlZD10cnVlIF0gLS0+CisKKzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvdGVzdGhhcm5l
c3MuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy90ZXN0aGFybmVzc3Jl
cG9ydC5qcyI+PC9zY3JpcHQ+CisKKzxzdHlsZT4KKyN0ZXN0QXV0byB7CisgICAgc3VwcG9ydGVk
LWNvbG9yLXNjaGVtZXM6IGF1dG87Cit9CisKKyN0ZXN0T25seSB7CisgICAgc3VwcG9ydGVkLWNv
bG9yLXNjaGVtZXM6IG9ubHk7Cit9CisKKyN0ZXN0TGlnaHQgeworICAgIHN1cHBvcnRlZC1jb2xv
ci1zY2hlbWVzOiBsaWdodDsKK30KKworI3Rlc3REYXJrIHsKKyAgICBzdXBwb3J0ZWQtY29sb3It
c2NoZW1lczogZGFyazsKK30KKworI3Rlc3RMaWdodERhcmsgeworICAgIHN1cHBvcnRlZC1jb2xv
ci1zY2hlbWVzOiBsaWdodCBkYXJrOworfQorCisjdGVzdERhcmtMaWdodCB7CisgICAgc3VwcG9y
dGVkLWNvbG9yLXNjaGVtZXM6IGRhcmsgbGlnaHQ7Cit9CisKKyN0ZXN0TGlnaHREYXJrT25seSB7
CisgICAgc3VwcG9ydGVkLWNvbG9yLXNjaGVtZXM6IGxpZ2h0IGRhcmsgb25seTsKK30KKworI3Rl
c3RPbmx5RGFyayB7CisgICAgc3VwcG9ydGVkLWNvbG9yLXNjaGVtZXM6IG9ubHkgZGFyazsKK30K
KworI3Rlc3RMaWdodE9ubHlEYXJrIHsKKyAgICBzdXBwb3J0ZWQtY29sb3Itc2NoZW1lczogbGln
aHQgb25seSBkYXJrOworfQorCisjdGVzdExpZ2h0VW5rbm93biB7CisgICAgc3VwcG9ydGVkLWNv
bG9yLXNjaGVtZXM6IGxpZ2h0IGZvbzsKK30KKworI3Rlc3RVbmtub3duRGFya09ubHkgeworICAg
IHN1cHBvcnRlZC1jb2xvci1zY2hlbWVzOiBiYXIgZGFyayBvbmx5OworfQorCisjdGVzdExpZ2h0
VW5rbm93bk9ubHkgeworICAgIHN1cHBvcnRlZC1jb2xvci1zY2hlbWVzOiBsaWdodCBiYXogb25s
eTsKK30KKworI3Rlc3RJbnZhbGlkTGlnaHRBdXRvIHsKKyAgICBzdXBwb3J0ZWQtY29sb3Itc2No
ZW1lczogbGlnaHQgYXV0bzsKK30KKworI3Rlc3RJbnZhbGlkQXV0b0RhcmsgeworICAgIHN1cHBv
cnRlZC1jb2xvci1zY2hlbWVzOiBhdXRvIGRhcms7Cit9CisKKyN0ZXN0SW52YWxpZExpZ2h0RGFy
a0xpZ2h0IHsKKyAgICBzdXBwb3J0ZWQtY29sb3Itc2NoZW1lczogbGlnaHQgZGFyayBsaWdodDsK
K30KKworI3Rlc3RJbnZhbGlkTnVtYmVyIHsKKyAgICBzdXBwb3J0ZWQtY29sb3Itc2NoZW1lczog
NDI7Cit9CisKKyN0ZXN0SW52YWxpZFN0cmluZyB7CisgICAgc3VwcG9ydGVkLWNvbG9yLXNjaGVt
ZXM6ICJmb28iOworfQorCisjdGVzdEludmFsaWRMaWdodFN0cmluZyB7CisgICAgc3VwcG9ydGVk
LWNvbG9yLXNjaGVtZXM6IGxpZ2h0ICJmb28iOworfQorPC9zdHlsZT4KKworPGRpdiBpZD0idGVz
dEF1dG8iPjwvZGl2PgorPGRpdiBpZD0idGVzdE9ubHkiPjwvZGl2PgorPGRpdiBpZD0idGVzdExp
Z2h0Ij48L2Rpdj4KKzxkaXYgaWQ9InRlc3REYXJrIj48L2Rpdj4KKzxkaXYgaWQ9InRlc3RMaWdo
dERhcmsiPjwvZGl2PgorPGRpdiBpZD0idGVzdERhcmtMaWdodCI+PC9kaXY+Cis8ZGl2IGlkPSJ0
ZXN0TGlnaHREYXJrT25seSI+PC9kaXY+Cis8ZGl2IGlkPSJ0ZXN0T25seURhcmsiPjwvZGl2Pgor
PGRpdiBpZD0idGVzdExpZ2h0T25seURhcmsiPjwvZGl2PgorPGRpdiBpZD0idGVzdExpZ2h0VW5r
bm93biI+PC9kaXY+Cis8ZGl2IGlkPSJ0ZXN0VW5rbm93bkRhcmtPbmx5Ij48L2Rpdj4KKworPGRp
diBpZD0idGVzdEludmFsaWRMaWdodEF1dG8iPjwvZGl2PgorPGRpdiBpZD0idGVzdEludmFsaWRB
dXRvRGFyayI+PC9kaXY+Cis8ZGl2IGlkPSJ0ZXN0SW52YWxpZExpZ2h0RGFya0xpZ2h0Ij48L2Rp
dj4KKzxkaXYgaWQ9InRlc3RJbnZhbGlkTnVtYmVyIj48L2Rpdj4KKzxkaXYgaWQ9InRlc3RJbnZh
bGlkU3RyaW5nIj48L2Rpdj4KKzxkaXYgaWQ9InRlc3RJbnZhbGlkTGlnaHRTdHJpbmciPjwvZGl2
PgorCis8c2NyaXB0PgorZnVuY3Rpb24gdGVzdF9wcm9wKGlkLCBwcm9wZXJ0eSwgZXhwZWN0ZWQp
IHsKKyAgICBhc3NlcnRfZXF1YWxzKHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKGlkKSkuZ2V0UHJvcGVydHlWYWx1ZShwcm9wZXJ0eSksIGV4cGVjdGVkKTsK
K30KKwordGVzdChmdW5jdGlvbigpIHsKKyAgICB0ZXN0X3Byb3AoInRlc3RBdXRvIiwgInN1cHBv
cnRlZC1jb2xvci1zY2hlbWVzIiwgImF1dG8iKTsKKyAgICB0ZXN0X3Byb3AoInRlc3RPbmx5Iiwg
InN1cHBvcnRlZC1jb2xvci1zY2hlbWVzIiwgImxpZ2h0IG9ubHkiKTsKKyAgICB0ZXN0X3Byb3Ao
InRlc3RMaWdodCIsICJzdXBwb3J0ZWQtY29sb3Itc2NoZW1lcyIsICJsaWdodCIpOworICAgIHRl
c3RfcHJvcCgidGVzdERhcmsiLCAic3VwcG9ydGVkLWNvbG9yLXNjaGVtZXMiLCAiZGFyayIpOwor
ICAgIHRlc3RfcHJvcCgidGVzdExpZ2h0RGFyayIsICJzdXBwb3J0ZWQtY29sb3Itc2NoZW1lcyIs
ICJsaWdodCBkYXJrIik7CisgICAgdGVzdF9wcm9wKCJ0ZXN0RGFya0xpZ2h0IiwgInN1cHBvcnRl
ZC1jb2xvci1zY2hlbWVzIiwgImxpZ2h0IGRhcmsiKTsKKyAgICB0ZXN0X3Byb3AoInRlc3RMaWdo
dERhcmtPbmx5IiwgInN1cHBvcnRlZC1jb2xvci1zY2hlbWVzIiwgImxpZ2h0IGRhcmsgb25seSIp
OworICAgIHRlc3RfcHJvcCgidGVzdE9ubHlEYXJrIiwgInN1cHBvcnRlZC1jb2xvci1zY2hlbWVz
IiwgImRhcmsgb25seSIpOworICAgIHRlc3RfcHJvcCgidGVzdExpZ2h0T25seURhcmsiLCAic3Vw
cG9ydGVkLWNvbG9yLXNjaGVtZXMiLCAibGlnaHQgZGFyayBvbmx5Iik7CisgICAgdGVzdF9wcm9w
KCJ0ZXN0TGlnaHRVbmtub3duIiwgInN1cHBvcnRlZC1jb2xvci1zY2hlbWVzIiwgImxpZ2h0Iik7
CisgICAgdGVzdF9wcm9wKCJ0ZXN0VW5rbm93bkRhcmtPbmx5IiwgInN1cHBvcnRlZC1jb2xvci1z
Y2hlbWVzIiwgImRhcmsgb25seSIpOworfSwgIlRlc3QgdmFsaWQgdmFsdWVzIik7CisKK3Rlc3Qo
ZnVuY3Rpb24oKSB7CisgICAgdGVzdF9wcm9wKCJ0ZXN0SW52YWxpZExpZ2h0QXV0byIsICJzdXBw
b3J0ZWQtY29sb3Itc2NoZW1lcyIsICJhdXRvIik7CisgICAgdGVzdF9wcm9wKCJ0ZXN0SW52YWxp
ZEF1dG9EYXJrIiwgInN1cHBvcnRlZC1jb2xvci1zY2hlbWVzIiwgImF1dG8iKTsKKyAgICB0ZXN0
X3Byb3AoInRlc3RJbnZhbGlkTGlnaHREYXJrTGlnaHQiLCAic3VwcG9ydGVkLWNvbG9yLXNjaGVt
ZXMiLCAiYXV0byIpOworICAgIHRlc3RfcHJvcCgidGVzdEludmFsaWROdW1iZXIiLCAic3VwcG9y
dGVkLWNvbG9yLXNjaGVtZXMiLCAiYXV0byIpOworICAgIHRlc3RfcHJvcCgidGVzdEludmFsaWRT
dHJpbmciLCAic3VwcG9ydGVkLWNvbG9yLXNjaGVtZXMiLCAiYXV0byIpOworICAgIHRlc3RfcHJv
cCgidGVzdEludmFsaWRMaWdodFN0cmluZyIsICJzdXBwb3J0ZWQtY29sb3Itc2NoZW1lcyIsICJh
dXRvIik7Cit9LCAiVGVzdCBpbnZhbGlkIHZhbHVlcyIpOworPC9zY3JpcHQ+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9jc3MtZGFyay1tb2RlL3N1cHBvcnRlZC1jb2xvci1zY2hlbWVzLWNzcy1l
eHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9jc3MtZGFyay1tb2RlL3N1cHBvcnRlZC1jb2xvci1z
Y2hlbWVzLWNzcy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uY2RkZDU2ZjYzMzljMzNlNjJlYWZm
NGY0YzYyODUxNzVlZWI0NWY0OAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Nzcy1k
YXJrLW1vZGUvc3VwcG9ydGVkLWNvbG9yLXNjaGVtZXMtY3NzLWV4cGVjdGVkLnR4dApAQCAtMCww
ICsxLDI4IEBACisKK1BBU1MgRWxlbWVudCBjb2xvcnMgYXJlIGNvcnJlY3QgaW4gbGlnaHQgY29s
b3Igc2NoZW1lIHdpdGggb25seSBsaWdodCBzdXBwb3J0ZWQgY29sb3Igc2NoZW1lIAorUEFTUyBE
YXJrIGNvbG9yIHNjaGVtZSBlbmFibGVkIAorUEFTUyBFbGVtZW50IGNvbG9ycyBhcmUgY29ycmVj
dCBpbiBkYXJrIGNvbG9yIHNjaGVtZSB3aXRoIG9ubHkgbGlnaHQgc3VwcG9ydGVkIGNvbG9yIHNj
aGVtZSAKK1BBU1MgTGlnaHQgY29sb3Igc2NoZW1lIGVuYWJsZWQgCitQQVNTIFN1cHBvcnRlZCBj
b2xvciBzY2hlbWVzIGNoYW5nZWQgdG8gbGlnaHQgYW5kIGRhcmsgCitQQVNTIEVsZW1lbnQgY29s
b3JzIGFyZSBjb3JyZWN0IGluIGxpZ2h0IGNvbG9yIHNjaGVtZSB3aXRoIGxpZ2h0IGFuZCBkYXJr
IHN1cHBvcnRlZCBjb2xvciBzY2hlbWUgCitQQVNTIERhcmsgY29sb3Igc2NoZW1lIGVuYWJsZWQg
CitQQVNTIEVsZW1lbnQgY29sb3JzIGFyZSBjb3JyZWN0IGluIGRhcmsgY29sb3Igc2NoZW1lIHdp
dGggbGlnaHQgYW5kIGRhcmsgc3VwcG9ydGVkIGNvbG9yIHNjaGVtZSAKK1BBU1MgTGlnaHQgY29s
b3Igc2NoZW1lIGVuYWJsZWQgCitQQVNTIFN1cHBvcnRlZCBjb2xvciBzY2hlbWVzIGNoYW5nZWQg
dG8gZGFyayAKK1BBU1MgRWxlbWVudCBjb2xvcnMgYXJlIGNvcnJlY3QgaW4gbGlnaHQgY29sb3Ig
c2NoZW1lIHdpdGggb25seSBkYXJrIHN1cHBvcnRlZCBjb2xvciBzY2hlbWUgCitQQVNTIERhcmsg
Y29sb3Igc2NoZW1lIGVuYWJsZWQgCitQQVNTIEVsZW1lbnQgY29sb3JzIGFyZSBjb3JyZWN0IGlu
IGRhcmsgY29sb3Igc2NoZW1lIHdpdGggb25seSBkYXJrIHN1cHBvcnRlZCBjb2xvciBzY2hlbWUg
CitQQVNTIFN1cHBvcnRlZCBjb2xvciBzY2hlbWVzIGNoYW5nZWQgdG8gbGlnaHQgYW5kIGEgYm9n
dXMgdmFsdWUgCitQQVNTIEVsZW1lbnQgY29sb3JzIGFyZSBjb3JyZWN0IGluIGRhcmsgY29sb3Ig
c2NoZW1lIHdpdGggb25seSBsaWdodCBzdXBwb3J0ZWQgY29sb3Igc2NoZW1lIAorUEFTUyBTdXBw
b3J0ZWQgY29sb3Igc2NoZW1lcyBjaGFuZ2VkIHRvIGF1dG8gdmFsdWUgCitQQVNTIEVsZW1lbnQg
Y29sb3JzIGFyZSBjb3JyZWN0IGluIGRhcmsgY29sb3Igc2NoZW1lIHdpdGggaW1wbGljaXQgbGln
aHQgc3VwcG9ydGVkIGNvbG9yIHNjaGVtZSAKK1BBU1MgU3VwcG9ydGVkIGNvbG9yIHNjaGVtZXMg
Y2hhbmdlZCB0byBsaWdodCBhbmQgZGFyayB2aWEgPG1ldGE+IGVsZW1lbnQgCitQQVNTIEVsZW1l
bnQgY29sb3JzIGFyZSBjb3JyZWN0IGluIGRhcmsgY29sb3Igc2NoZW1lIHdpdGggbGlnaHQgYW5k
IGRhcmsgc3VwcG9ydGVkIGNvbG9yIHNjaGVtZSB2aWEgPG1ldGE+IGVsZW1lbnQgCitQQVNTIFN1
cHBvcnRlZCBjb2xvciBzY2hlbWVzIGNoYW5nZWQgdG8gbGlnaHQgdmFsdWUgCitQQVNTIEVsZW1l
bnQgY29sb3JzIGFyZSBjb3JyZWN0IGluIGRhcmsgY29sb3Igc2NoZW1lIHdpdGggZXhwbGljaXQg
bGlnaHQsIG92ZXJyaWRpbmcgPG1ldGE+IGVsZW1lbnQgCitQQVNTIFJlbW92ZSB0ZXN0IG1ldGEg
ZWxlbWVudCAKK1BBU1MgU3VwcG9ydGVkIGNvbG9yIHNjaGVtZXMgY2hhbmdlZCB0byBsaWdodCBh
bmQgZGFyayAKK1BBU1MgRWxlbWVudCBjb2xvcnMgYXJlIGNvcnJlY3QgaW4gZGFyayBjb2xvciBz
Y2hlbWUgd2l0aCBsaWdodCBhbmQgZGFyayBzdXBwb3J0ZWQgY29sb3Igc2NoZW1lIAorUEFTUyBT
dXBwb3J0ZWQgY29sb3Igc2NoZW1lcyBjaGFuZ2VkIHRvIGEgYm9ndXMgdmFsdWUgYW5kIGRhcmsg
CitQQVNTIEVsZW1lbnQgY29sb3JzIGFyZSBjb3JyZWN0IGluIGRhcmsgY29sb3Igc2NoZW1lIHdp
dGggZGFyayBzdXBwb3J0ZWQgY29sb3Igc2NoZW1lIAorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9jc3MtZGFyay1tb2RlL3N1cHBvcnRlZC1jb2xvci1zY2hlbWVzLWNzcy5odG1sIGIvTGF5b3V0
VGVzdHMvY3NzLWRhcmstbW9kZS9zdXBwb3J0ZWQtY29sb3Itc2NoZW1lcy1jc3MuaHRtbApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi5iNmNhNjgwMWFmNGU3YTI0ZDg0NzBiMmQ5N2Q3MGUxOGY3NmI5Y2ZlCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvY3NzLWRhcmstbW9kZS9zdXBwb3J0ZWQtY29sb3Itc2No
ZW1lcy1jc3MuaHRtbApAQCAtMCwwICsxLDE1MyBAQAorPCFET0NUWVBFIGh0bWw+CisKKzwhLS0g
d2Via2l0LXRlc3QtcnVubmVyIFsgZXhwZXJpbWVudGFsOkRhcmtNb2RlQ1NTRW5hYmxlZD10cnVl
IF0gLS0+CisKKzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2Ny
aXB0PgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9z
Y3JpcHQ+CisKKzxzdHlsZT4KKyN0ZXN0MSB7CisgICAgY29sb3I6IHRleHQ7Cit9Cis8L3N0eWxl
PgorCis8ZGl2IGlkPSJ0ZXN0MSI+PC9kaXY+CisKKzxzY3JpcHQ+CitmdW5jdGlvbiB0ZXN0X3By
b3AoaWQsIHByb3AsIGV4cGVjdGVkKSB7CisgICAgYXNzZXJ0X2VxdWFscyh3aW5kb3cuZ2V0Q29t
cHV0ZWRTdHlsZShkb2N1bWVudC5nZXRFbGVtZW50QnlJZChpZCkpLmdldFByb3BlcnR5VmFsdWUo
cHJvcCksIGV4cGVjdGVkKTsKK30KKworZnVuY3Rpb24gdGVzdF9jb2xvcl9pc193aGl0ZShpZCkg
eworICAgIHRlc3RfcHJvcCgidGVzdDEiLCAiY29sb3IiLCAicmdiKDI1NSwgMjU1LCAyNTUpIik7
Cit9CisKK2Z1bmN0aW9uIHRlc3RfY29sb3JfaXNfYmxhY2soaWQpIHsKKyAgICB0ZXN0X3Byb3Ao
InRlc3QxIiwgImNvbG9yIiwgInJnYigwLCAwLCAwKSIpOworfQorCit0ZXN0KGZ1bmN0aW9uKCkg
eworICAgIC8vIFRoZSBzZW1hbnRpYyB0ZXh0IGNvbG9yIHNob3VsZCBiZSBibGFjay4KKyAgICB0
ZXN0X2NvbG9yX2lzX2JsYWNrKCJ0ZXN0MSIpOworfSwgIkVsZW1lbnQgY29sb3JzIGFyZSBjb3Jy
ZWN0IGluIGxpZ2h0IGNvbG9yIHNjaGVtZSB3aXRoIG9ubHkgbGlnaHQgc3VwcG9ydGVkIGNvbG9y
IHNjaGVtZSIpOworCit0ZXN0KGZ1bmN0aW9uKCkgeworICAgIGlmICh3aW5kb3cuaW50ZXJuYWxz
KQorICAgICAgICBpbnRlcm5hbHMuc2V0dGluZ3Muc2V0VXNlRGFya0FwcGVhcmFuY2UodHJ1ZSk7
Cit9LCAiRGFyayBjb2xvciBzY2hlbWUgZW5hYmxlZCIpOworCit0ZXN0KGZ1bmN0aW9uKCkgewor
ICAgIC8vIFRoZSBzZW1hbnRpYyB0ZXh0IGNvbG9yIHNob3VsZCBiZSBibGFjaywgYW5kIG5vdCBj
aGFuZ2UuCisgICAgdGVzdF9jb2xvcl9pc19ibGFjaygidGVzdDEiKTsKK30sICJFbGVtZW50IGNv
bG9ycyBhcmUgY29ycmVjdCBpbiBkYXJrIGNvbG9yIHNjaGVtZSB3aXRoIG9ubHkgbGlnaHQgc3Vw
cG9ydGVkIGNvbG9yIHNjaGVtZSIpOworCit0ZXN0KGZ1bmN0aW9uKCkgeworICAgIGlmICh3aW5k
b3cuaW50ZXJuYWxzKQorICAgICAgICBpbnRlcm5hbHMuc2V0dGluZ3Muc2V0VXNlRGFya0FwcGVh
cmFuY2UoZmFsc2UpOworfSwgIkxpZ2h0IGNvbG9yIHNjaGVtZSBlbmFibGVkIik7CisKK3Rlc3Qo
ZnVuY3Rpb24oKSB7CisgICAgZG9jdW1lbnQuYm9keS5zdHlsZS5zZXRQcm9wZXJ0eSgic3VwcG9y
dGVkLWNvbG9yLXNjaGVtZXMiLCAibGlnaHQgZGFyayIpOworfSwgIlN1cHBvcnRlZCBjb2xvciBz
Y2hlbWVzIGNoYW5nZWQgdG8gbGlnaHQgYW5kIGRhcmsiKTsKKwordGVzdChmdW5jdGlvbigpIHsK
KyAgICAvLyBUaGUgc2VtYW50aWMgdGV4dCBjb2xvciBzaG91bGQgYmUgYmxhY2suCisgICAgdGVz
dF9jb2xvcl9pc19ibGFjaygidGVzdDEiKTsKK30sICJFbGVtZW50IGNvbG9ycyBhcmUgY29ycmVj
dCBpbiBsaWdodCBjb2xvciBzY2hlbWUgd2l0aCBsaWdodCBhbmQgZGFyayBzdXBwb3J0ZWQgY29s
b3Igc2NoZW1lIik7CisKK3Rlc3QoZnVuY3Rpb24oKSB7CisgICAgaWYgKHdpbmRvdy5pbnRlcm5h
bHMpCisgICAgICAgIGludGVybmFscy5zZXR0aW5ncy5zZXRVc2VEYXJrQXBwZWFyYW5jZSh0cnVl
KTsKK30sICJEYXJrIGNvbG9yIHNjaGVtZSBlbmFibGVkIik7CisKK3Rlc3QoZnVuY3Rpb24oKSB7
CisgICAgLy8gVGhlIHNlbWFudGljIHRleHQgY29sb3Igc2hvdWxkIGJlIHdoaXRlLgorICAgIHRl
c3RfY29sb3JfaXNfd2hpdGUoInRlc3QxIik7Cit9LCAiRWxlbWVudCBjb2xvcnMgYXJlIGNvcnJl
Y3QgaW4gZGFyayBjb2xvciBzY2hlbWUgd2l0aCBsaWdodCBhbmQgZGFyayBzdXBwb3J0ZWQgY29s
b3Igc2NoZW1lIik7CisKK3Rlc3QoZnVuY3Rpb24oKSB7CisgICAgaWYgKHdpbmRvdy5pbnRlcm5h
bHMpCisgICAgICAgIGludGVybmFscy5zZXR0aW5ncy5zZXRVc2VEYXJrQXBwZWFyYW5jZShmYWxz
ZSk7Cit9LCAiTGlnaHQgY29sb3Igc2NoZW1lIGVuYWJsZWQiKTsKKwordGVzdChmdW5jdGlvbigp
IHsKKyAgICBkb2N1bWVudC5ib2R5LnN0eWxlLnNldFByb3BlcnR5KCJzdXBwb3J0ZWQtY29sb3It
c2NoZW1lcyIsICJkYXJrIik7Cit9LCAiU3VwcG9ydGVkIGNvbG9yIHNjaGVtZXMgY2hhbmdlZCB0
byBkYXJrIik7CisKK3Rlc3QoZnVuY3Rpb24oKSB7CisgICAgLy8gVGhlIHNlbWFudGljIHRleHQg
Y29sb3Igc2hvdWxkIGJlIHdoaXRlLgorICAgIHRlc3RfY29sb3JfaXNfd2hpdGUoInRlc3QxIik7
Cit9LCAiRWxlbWVudCBjb2xvcnMgYXJlIGNvcnJlY3QgaW4gbGlnaHQgY29sb3Igc2NoZW1lIHdp
dGggb25seSBkYXJrIHN1cHBvcnRlZCBjb2xvciBzY2hlbWUiKTsKKwordGVzdChmdW5jdGlvbigp
IHsKKyAgICBpZiAod2luZG93LmludGVybmFscykKKyAgICAgICAgaW50ZXJuYWxzLnNldHRpbmdz
LnNldFVzZURhcmtBcHBlYXJhbmNlKHRydWUpOworfSwgIkRhcmsgY29sb3Igc2NoZW1lIGVuYWJs
ZWQiKTsKKwordGVzdChmdW5jdGlvbigpIHsKKyAgICAvLyBUaGUgc2VtYW50aWMgdGV4dCBjb2xv
ciBzaG91bGQgYmUgd2hpdGUgc3RpbGwuCisgICAgdGVzdF9jb2xvcl9pc193aGl0ZSgidGVzdDEi
KTsKK30sICJFbGVtZW50IGNvbG9ycyBhcmUgY29ycmVjdCBpbiBkYXJrIGNvbG9yIHNjaGVtZSB3
aXRoIG9ubHkgZGFyayBzdXBwb3J0ZWQgY29sb3Igc2NoZW1lIik7CisKK3Rlc3QoZnVuY3Rpb24o
KSB7CisgICAgZG9jdW1lbnQuYm9keS5zdHlsZS5zZXRQcm9wZXJ0eSgic3VwcG9ydGVkLWNvbG9y
LXNjaGVtZXMiLCAibGlnaHQgZm9vIik7Cit9LCAiU3VwcG9ydGVkIGNvbG9yIHNjaGVtZXMgY2hh
bmdlZCB0byBsaWdodCBhbmQgYSBib2d1cyB2YWx1ZSIpOworCit0ZXN0KGZ1bmN0aW9uKCkgewor
ICAgIC8vIFRoZSBzZW1hbnRpYyB0ZXh0IGNvbG9yIHNob3VsZCBiZSBibGFjayBhZ2Fpbi4KKyAg
ICB0ZXN0X2NvbG9yX2lzX2JsYWNrKCJ0ZXN0MSIpOworfSwgIkVsZW1lbnQgY29sb3JzIGFyZSBj
b3JyZWN0IGluIGRhcmsgY29sb3Igc2NoZW1lIHdpdGggb25seSBsaWdodCBzdXBwb3J0ZWQgY29s
b3Igc2NoZW1lIik7CisKK3Rlc3QoZnVuY3Rpb24oKSB7CisgICAgZG9jdW1lbnQuYm9keS5zdHls
ZS5zZXRQcm9wZXJ0eSgic3VwcG9ydGVkLWNvbG9yLXNjaGVtZXMiLCAiYXV0byIpOworfSwgIlN1
cHBvcnRlZCBjb2xvciBzY2hlbWVzIGNoYW5nZWQgdG8gYXV0byB2YWx1ZSIpOworCit0ZXN0KGZ1
bmN0aW9uKCkgeworICAgIC8vIFRoZSBzZW1hbnRpYyB0ZXh0IGNvbG9yIHNob3VsZCBiZSBibGFj
ayBzdGlsbC4KKyAgICB0ZXN0X2NvbG9yX2lzX2JsYWNrKCJ0ZXN0MSIpOworfSwgIkVsZW1lbnQg
Y29sb3JzIGFyZSBjb3JyZWN0IGluIGRhcmsgY29sb3Igc2NoZW1lIHdpdGggaW1wbGljaXQgbGln
aHQgc3VwcG9ydGVkIGNvbG9yIHNjaGVtZSIpOworCit0ZXN0KGZ1bmN0aW9uKCkgeworICAgIGxl
dCBtZXRhID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgibWV0YSIpOworICAgIG1ldGEuaWQgPSAi
dGVzdC1tZXRhIjsKKyAgICBtZXRhLm5hbWUgPSAic3VwcG9ydGVkLWNvbG9yLXNjaGVtZXMiOwor
ICAgIG1ldGEuY29udGVudCA9ICJsaWdodCBkYXJrIjsKKyAgICBkb2N1bWVudC5oZWFkLmFwcGVu
ZENoaWxkKG1ldGEpOworfSwgIlN1cHBvcnRlZCBjb2xvciBzY2hlbWVzIGNoYW5nZWQgdG8gbGln
aHQgYW5kIGRhcmsgdmlhIDxtZXRhPiBlbGVtZW50Iik7CisKK3Rlc3QoZnVuY3Rpb24oKSB7Cisg
ICAgLy8gVGhlIHNlbWFudGljIHRleHQgY29sb3Igc2hvdWxkIGJlIHdoaXRlIG5vdy4KKyAgICB0
ZXN0X2NvbG9yX2lzX3doaXRlKCJ0ZXN0MSIpOworfSwgIkVsZW1lbnQgY29sb3JzIGFyZSBjb3Jy
ZWN0IGluIGRhcmsgY29sb3Igc2NoZW1lIHdpdGggbGlnaHQgYW5kIGRhcmsgc3VwcG9ydGVkIGNv
bG9yIHNjaGVtZSB2aWEgPG1ldGE+IGVsZW1lbnQiKTsKKwordGVzdChmdW5jdGlvbigpIHsKKyAg
ICBkb2N1bWVudC5ib2R5LnN0eWxlLnNldFByb3BlcnR5KCJzdXBwb3J0ZWQtY29sb3Itc2NoZW1l
cyIsICJsaWdodCIpOworfSwgIlN1cHBvcnRlZCBjb2xvciBzY2hlbWVzIGNoYW5nZWQgdG8gbGln
aHQgdmFsdWUiKTsKKwordGVzdChmdW5jdGlvbigpIHsKKyAgICAvLyBUaGUgc2VtYW50aWMgdGV4
dCBjb2xvciBzaG91bGQgYmUgYmxhY2sgYWdhaW4uCisgICAgdGVzdF9jb2xvcl9pc19ibGFjaygi
dGVzdDEiKTsKK30sICJFbGVtZW50IGNvbG9ycyBhcmUgY29ycmVjdCBpbiBkYXJrIGNvbG9yIHNj
aGVtZSB3aXRoIGV4cGxpY2l0IGxpZ2h0LCBvdmVycmlkaW5nIDxtZXRhPiBlbGVtZW50Iik7CisK
K3Rlc3QoZnVuY3Rpb24oKSB7CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRlc3QtbWV0
YSIpLnJlbW92ZSgpOworfSwgIlJlbW92ZSB0ZXN0IG1ldGEgZWxlbWVudCIpOworCit0ZXN0KGZ1
bmN0aW9uKCkgeworICAgIGRvY3VtZW50LmJvZHkuc3R5bGUuc2V0UHJvcGVydHkoInN1cHBvcnRl
ZC1jb2xvci1zY2hlbWVzIiwgImxpZ2h0IGRhcmsiKTsKK30sICJTdXBwb3J0ZWQgY29sb3Igc2No
ZW1lcyBjaGFuZ2VkIHRvIGxpZ2h0IGFuZCBkYXJrIik7CisKK3Rlc3QoZnVuY3Rpb24oKSB7Cisg
ICAgLy8gVGhlIHNlbWFudGljIHRleHQgY29sb3Igc2hvdWxkIGJlIHdoaXRlIG5vdy4KKyAgICB0
ZXN0X2NvbG9yX2lzX3doaXRlKCJ0ZXN0MSIpOworfSwgIkVsZW1lbnQgY29sb3JzIGFyZSBjb3Jy
ZWN0IGluIGRhcmsgY29sb3Igc2NoZW1lIHdpdGggbGlnaHQgYW5kIGRhcmsgc3VwcG9ydGVkIGNv
bG9yIHNjaGVtZSIpOworCit0ZXN0KGZ1bmN0aW9uKCkgeworICAgIGRvY3VtZW50LmJvZHkuc3R5
bGUuc2V0UHJvcGVydHkoInN1cHBvcnRlZC1jb2xvci1zY2hlbWVzIiwgImZvbyBkYXJrIik7Cit9
LCAiU3VwcG9ydGVkIGNvbG9yIHNjaGVtZXMgY2hhbmdlZCB0byBhIGJvZ3VzIHZhbHVlIGFuZCBk
YXJrIik7CisKK3Rlc3QoZnVuY3Rpb24oKSB7CisgICAgLy8gVGhlIHNlbWFudGljIHRleHQgY29s
b3Igc2hvdWxkIGJlIHdoaXRlIHN0aWxsLgorICAgIHRlc3RfY29sb3JfaXNfd2hpdGUoInRlc3Qx
Iik7Cit9LCAiRWxlbWVudCBjb2xvcnMgYXJlIGNvcnJlY3QgaW4gZGFyayBjb2xvciBzY2hlbWUg
d2l0aCBkYXJrIHN1cHBvcnRlZCBjb2xvciBzY2hlbWUiKTsKKzwvc2NyaXB0Pgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>354256</attachid>
            <date>2018-11-08 11:31:20 -0800</date>
            <delta_ts>2018-11-08 13:18:35 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-191319-20181108113119.patch</filename>
            <type>text/plain</type>
            <size>76601</size>
            <attacher name="Timothy Hatcher">timothy</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM3OTgyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjQzMjBlZTM0ODU0NzM2
NGYyMzE2MmRkMGQxNTVmMjM5MmMxMzkzMi4uYTk1NzNiODcxZjU3NTlmOTUzOWY2NjJlNDQwZTQy
ZTkxNGRiNGExZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEwNiBAQAorMjAxOC0xMS0wOCAgVGlt
b3RoeSBIYXRjaGVyICA8dGltb3RoeUBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIGV4cGVyaW1l
bnRhbCBzdXBwb3J0IGZvciBhIGBzdXBwb3J0ZWQtY29sb3Itc2NoZW1lc2AgQ1NTIHByb3BlcnR5
LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkxMzE5
CisgICAgICAgIHJkYXI6Ly9wcm9ibGVtLzQ1ODUyMjYxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGVzdHM6IGNzcy1kYXJrLW1vZGUvcGFyc2Utc3Vw
cG9ydGVkLWNvbG9yLXNjaGVtZXMuaHRtbAorICAgICAgICAgICAgICAgY3NzLWRhcmstbW9kZS9z
dXBwb3J0ZWQtY29sb3Itc2NoZW1lcy1jc3MuaHRtbAorCisgICAgICAgICogV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGNzcy9DU1NDb21wdXRlZFN0eWxlRGVj
bGFyYXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29tcHV0ZWRTdHlsZUV4dHJhY3Rvcjo6
dmFsdWVGb3JQcm9wZXJ0eWluU3R5bGUpOgorICAgICAgICAqIGNzcy9DU1NQcm9wZXJ0aWVzLmpz
b246CisgICAgICAgICogY3NzL0NTU1ZhbHVlS2V5d29yZHMuaW46CisgICAgICAgICogY3NzL1N0
eWxlQnVpbGRlckNvbnZlcnRlci5oOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVCdWlsZGVyQ29u
dmVydGVyOjp1cGRhdGVTdXBwb3J0ZWRDb2xvclNjaGVtZXMpOgorICAgICAgICAoV2ViQ29yZTo6
U3R5bGVCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0U3VwcG9ydGVkQ29sb3JTY2hlbWVzKToKKyAg
ICAgICAgKiBjc3MvU3R5bGVSZXNvbHZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJl
c29sdmVyOjpjb2xvckZyb21QcmltaXRpdmVWYWx1ZSBjb25zdCk6CisgICAgICAgICogY3NzL3Bh
cnNlci9DU1NQcm9wZXJ0eVBhcnNlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjb25zdW1lU3Vw
cG9ydGVkQ29sb3JTY2hlbWVzKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1Byb3BlcnR5UGFyc2Vy
OjpwYXJzZVNpbmdsZVZhbHVlKToKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnJlc2V0TGlua0NvbG9yKToKKyAgICAgICAgKFdlYkNvcmU6
OkRvY3VtZW50OjpyZXNldFZpc2l0ZWRMaW5rQ29sb3IpOgorICAgICAgICAoV2ViQ29yZTo6RG9j
dW1lbnQ6OnJlc2V0QWN0aXZlTGlua0NvbG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50
Ojpwcm9jZXNzU3VwcG9ydGVkQ29sb3JTY2hlbWVzKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3Vt
ZW50Ojp1c2VEYXJrQXBwZWFyYW5jZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVu
dDo6c3R5bGVDb2xvck9wdGlvbnMgY29uc3QpOgorICAgICAgICAqIGRvbS9Eb2N1bWVudC5oOgor
ICAgICAgICAqIGVkaXRpbmcvY29jb2EvV2ViQ29udGVudFJlYWRlckNvY29hLm1tOgorICAgICAg
ICAoV2ViQ29yZTo6Y3JlYXRlRnJhZ21lbnQpOgorICAgICAgICAqIGh0bWwvY2FudmFzL0NhbnZh
c1JlbmRlcmluZ0NvbnRleHQyRC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNSZW5kZXJp
bmdDb250ZXh0MkQ6OmRyYXdGb2N1c0lmTmVlZGVkSW50ZXJuYWwpOgorICAgICAgICAqIGluc3Bl
Y3Rvci9JbnNwZWN0b3JPdmVybGF5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvck92
ZXJsYXk6OnBhaW50KToKKyAgICAgICAgKiBwYWdlL0ZyYW1lVmlldy5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpGcmFtZVZpZXc6OnVzZURhcmtBcHBlYXJhbmNlIGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6OkZyYW1lVmlldzo6cGFpbnRTY3JvbGxDb3JuZXIpOgorICAgICAgICAqIHBsYXRmb3Jt
L21hYy9EcmFnSW1hZ2VNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVEcmFnSW1hZ2VG
b3JMaW5rKToKKyAgICAgICAgKiByZW5kZXJpbmcvSW5saW5lRmxvd0JveC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpJbmxpbmVGbG93Qm94OjpwYWludEJveERlY29yYXRpb25zKToKKyAgICAgICAg
KiByZW5kZXJpbmcvSW5saW5lVGV4dEJveC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVU
ZXh0Qm94OjpwYWludFBsYXRmb3JtRG9jdW1lbnRNYXJrZXIpOgorICAgICAgICAqIHJlbmRlcmlu
Zy9SZW5kZXJCb3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94OjpwYWludFJvb3RC
b3hGaWxsTGF5ZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveDo6cGFpbnRCYWNrZ3Jv
dW5kKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJFbGVtZW50OjpzZWxlY3Rpb25Db2xvciBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJFbGVtZW50OjpzZWxlY3Rpb25CYWNrZ3JvdW5kQ29sb3IgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRWxlbWVudDo6cGFpbnRGb2N1c1JpbmcpOgorICAgICAg
ICAqIHJlbmRlcmluZy9SZW5kZXJJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJJ
bWFnZTo6cGFpbnRBcmVhRWxlbWVudEZvY3VzUmluZyk6CisgICAgICAgICogcmVuZGVyaW5nL1Jl
bmRlckxheWVyQmFja2luZy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllckJhY2tp
bmc6OnBhaW50Q29udGVudHMpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXllckNvbXBv
c2l0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpwYWlu
dENvbnRlbnRzKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGlzdEJveC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJMaXN0Qm94OjpwYWludEl0ZW1Gb3JlZ3JvdW5kKToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlckxpc3RCb3g6OnBhaW50SXRlbUJhY2tncm91bmQpOgorICAgICAg
ICAqIHJlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
T2JqZWN0Ojp1c2VEYXJrQXBwZWFyYW5jZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJPYmplY3Q6OnN0eWxlQ29sb3JPcHRpb25zIGNvbnN0KToKKyAgICAgICAgKiByZW5kZXJpbmcv
UmVuZGVyT2JqZWN0Lmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRhYmxlQ2VsbC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUYWJsZUNlbGw6OnBhaW50QmFja2dyb3VuZHNCZWhp
bmRDZWxsKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGhlbWUuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyVGhlbWU6OnBhaW50KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVy
VGhlbWUuaDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lOjp1c2luZ0RhcmtBcHBlYXJh
bmNlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGhlbWVNYWMu
aDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGhlbWVNYWMubW06CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJUaGVtZU1hYzo6ZG9jdW1lbnRWaWV3Rm9yIGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlclRoZW1lTWFjOjphZGp1c3RNZW51TGlzdFN0eWxlIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lTWFjOjpwYWludENlbGxBbmRTZXRGb2N1c2VkRWxlbWVu
dE5lZWRzUmVwYWludElmTmVjZXNzYXJ5KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1l
TWFjOjpwYWludFNsaWRlclRodW1iKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lTWFj
Ojp1c2luZ0RhcmtBcHBlYXJhbmNlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiByZW5kZXJp
bmcvc3R5bGUvUmVuZGVyU3R5bGUuaDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjpz
dXBwb3J0ZWRDb2xvclNjaGVtZXMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5
bGU6OnNldFN1cHBvcnRlZENvbG9yU2NoZW1lcyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJT
dHlsZTo6aW5pdGlhbFN1cHBvcnRlZENvbG9yU2NoZW1lcyk6CisgICAgICAgICogcmVuZGVyaW5n
L3N0eWxlL1JlbmRlclN0eWxlQ29uc3RhbnRzLmg6CisgICAgICAgICogcmVuZGVyaW5nL3N0eWxl
L1N0eWxlUmFyZUluaGVyaXRlZERhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVSYXJl
SW5oZXJpdGVkRGF0YTo6U3R5bGVSYXJlSW5oZXJpdGVkRGF0YSk6CisgICAgICAgIChXZWJDb3Jl
OjpTdHlsZVJhcmVJbmhlcml0ZWREYXRhOjpvcGVyYXRvcj09IGNvbnN0KToKKyAgICAgICAgKiBy
ZW5kZXJpbmcvc3R5bGUvU3R5bGVSYXJlSW5oZXJpdGVkRGF0YS5oOgorICAgICAgICAqIHJlbmRl
cmluZy9zdHlsZS9TdHlsZVN1cHBvcnRlZENvbG9yU2NoZW1lcy5oOiBBZGRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OlN0eWxlU3VwcG9ydGVkQ29sb3JTY2hlbWVzOjpTdHlsZVN1cHBvcnRlZENvbG9y
U2NoZW1lcyk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVN1cHBvcnRlZENvbG9yU2NoZW1lczo6
b3BlcmF0b3I9PSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVN1cHBvcnRlZENvbG9y
U2NoZW1lczo6b3BlcmF0b3IhPSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVN1cHBv
cnRlZENvbG9yU2NoZW1lczo6aXNBdXRvIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxl
U3VwcG9ydGVkQ29sb3JTY2hlbWVzOjppc09ubHkgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
U3R5bGVTdXBwb3J0ZWRDb2xvclNjaGVtZXM6OmNvbG9yU2NoZW1lcyBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpTdHlsZVN1cHBvcnRlZENvbG9yU2NoZW1lczo6YWRkKToKKyAgICAgICAgKFdl
YkNvcmU6OlN0eWxlU3VwcG9ydGVkQ29sb3JTY2hlbWVzOjpjb250YWlucyBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpTdHlsZVN1cHBvcnRlZENvbG9yU2NoZW1lczo6c2V0QWxsb3dzVHJhbnNm
b3JtYXRpb25zKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlU3VwcG9ydGVkQ29sb3JTY2hlbWVz
OjphbGxvd3NUcmFuc2Zvcm1hdGlvbnMgY29uc3QpOgorICAgICAgICAqIHN2Zy9ncmFwaGljcy9T
VkdJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdJbWFnZTo6ZHJhdyk6CisKIDIwMTgt
MTEtMDcgIEp1c3RpbiBNaWNoYXVkICA8anVzdGluX21pY2hhdWRAYXBwbGUuY29tPgogCiAgICAg
ICAgIENTUyBQYWludGluZyBBUEkgc2hvdWxkIHBhc3Mgc2l6ZSwgYXJndW1lbnRzIGFuZCBpbnB1
dCBwcm9wZXJ0aWVzIHRvIHBhaW50IGNhbGxiYWNrCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGIwYmQ0ZjZlZGZhYTU1
YmYxYTM5MzYwNTIzMzhiYWQ1N2JlNDkwYzMuLjcwMTVkZDVkOGJmMmJlZWQ3MWExMGRhYWE5Njkw
Yjc0NjBjYmY4N2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTgtMTEtMDggIFRpbW90
aHkgSGF0Y2hlciAgPHRpbW90aHlAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBleHBlcmltZW50
YWwgc3VwcG9ydCBmb3IgYSBgc3VwcG9ydGVkLWNvbG9yLXNjaGVtZXNgIENTUyBwcm9wZXJ0eS4K
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MTMxOQor
ICAgICAgICByZGFyOi8vcHJvYmxlbS80NTg1MjI2MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9ET00v
SW5qZWN0ZWRCdW5kbGVSYW5nZUhhbmRsZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OkluamVjdGVk
QnVuZGxlUmFuZ2VIYW5kbGU6OnJlbmRlcmVkSW1hZ2UpOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJQYWdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6ZHJhd1JlY3Qp
OgorCiAyMDE4LTExLTA4ICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNv
bT4KIAogICAgICAgICBbR1RLXSBDcmFzaCB3aGVuIHJ1bm5pbmcgd2l0aCBzYW5kYm94IGVuYWJs
ZWQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agppbmRleCAxNDIwNGE1YjhlM2UwM2Q2OWZhNGUxYmQxMWEyMmMwODBiYjE5MWVlLi5iNTc0MDg2
YmQzZjQ4NmM2YzM5NGI5NTNmZTVlZjI2ZDQzNjk2MmM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC02MjUsNiArNjI1LDcgQEAK
IAkJMUMwMTA3MDExOTI1OTRERjAwOEE0MjAxIC8qIElubGluZVRleHRCb3hTdHlsZS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUMwMTA2RkYxOTI1OTRE
RjAwOEE0MjAxIC8qIElubGluZVRleHRCb3hTdHlsZS5oICovOyB9OwogCQkxQzA5MzlFQjFBMTNF
MTI5MDBCNzg4RTUgLyogQ2FjaGVkU1ZHRm9udC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMUMwOTM5RTkxQTEzRTEyOTAwQjc4OEU1IC8qIENhY2hlZFNW
R0ZvbnQuaCAqLzsgfTsKIAkJMUMwOUQwNTkxRTMxQzZBOTAwNzI1RjE4IC8qIGxpYlBBTC5hIGlu
IEZyYW1ld29ya3MgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUMwOUQwNTAx
RTMxQzMyOTAwNzI1RjE4IC8qIGxpYlBBTC5hICovOyB9OworCQkxQzBBQTE2RDIxOTQwREM4MDA4
OTY4MjkgLyogU3R5bGVTdXBwb3J0ZWRDb2xvclNjaGVtZXMuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFDMEFBMTZBMjE5NDBEQzcwMDg5NjgyOSAvKiBT
dHlsZVN1cHBvcnRlZENvbG9yU2NoZW1lcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CiAJCTFDMTJBQzJCMUVFNzc4QUUwMDc5RTBBMCAvKiBGb250RmFt
aWx5U3BlY2lmaWNhdGlvbkNvcmVUZXh0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAxQzEyQUMyOTFFRTc3OEFFMDA3OUUwQTAgLyogRm9udEZhbWlseVNw
ZWNpZmljYXRpb25Db3JlVGV4dC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCTFDMThEQTU5MTgxQUY2QTUwMEM0RUYyMiAvKiBUZXh0UGFpbnRlci5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUMxOERBNTcx
ODFBRjZBNTAwQzRFRjIyIC8qIFRleHRQYWludGVyLmggKi87IH07CiAJCTFDMjFFNTdEMTgzRUQx
RkYwMDFDMjg5RCAvKiBJT1N1cmZhY2VQb29sLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAxQzIxRTU3QjE4M0VEMUZGMDAxQzI4OUQgLyogSU9TdXJmYWNl
UG9vbC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBA
IC02MzY4LDYgKzYzNjksNyBAQAogCQkxQzA5MzlFODFBMTNFMTI5MDBCNzg4RTUgLyogQ2FjaGVk
U1ZHRm9udC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDYWNoZWRT
VkdGb250LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUMwOTM5RTkxQTEzRTEy
OTAwQjc4OEU1IC8qIENhY2hlZFNWR0ZvbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gQ2FjaGVkU1ZHRm9udC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQzA5
RDA0QjFFMzFDMzI4MDA3MjVGMTggLyogUEFMLnhjb2RlcHJvaiAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9ICJ3cmFwcGVyLnBiLXByb2plY3QiOyBuYW1l
ID0gUEFMLnhjb2RlcHJvajsgcGF0aCA9IFBBTC9QQUwueGNvZGVwcm9qOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQkxQzBBQTE2QTIxOTQwREM3MDA4OTY4MjkgLyogU3R5bGVTdXBwb3J0
ZWRDb2xvclNjaGVtZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3R5bGVT
dXBwb3J0ZWRDb2xvclNjaGVtZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUMx
MkFDMjgxRUU3NzhBRTAwNzlFMEEwIC8qIEZvbnRGYW1pbHlTcGVjaWZpY2F0aW9uQ29yZVRleHQu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRm9udEZhbWlseVNwZWNpZmljYXRpb25Db3JlVGV4dC5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFDMTJBQzI5MUVFNzc4QUUwMDc5RTBB
MCAvKiBGb250RmFtaWx5U3BlY2lmaWNhdGlvbkNvcmVUZXh0LmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEZv
bnRGYW1pbHlTcGVjaWZpY2F0aW9uQ29yZVRleHQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJMUMxMkFDMkMxRUU3Nzk5NTAwNzlFMEEwIC8qIEZvbnREZXNjcmlwdGlvbkNvY29hLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEZvbnREZXNjcmlwdGlvbkNvY29hLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTI0NjYxLDYgKzI0NjYzLDcgQEAKIAkJCQlGNDdBNUUzQTE5
NUI4QzhBMDA0ODMxMDAgLyogU3R5bGVTY3JvbGxTbmFwUG9pbnRzLmNwcCAqLywKIAkJCQlGNDdB
NUUzQjE5NUI4QzhBMDA0ODMxMDAgLyogU3R5bGVTY3JvbGxTbmFwUG9pbnRzLmggKi8sCiAJCQkJ
OUQ2MzgwMEYxQUYxNkUxNjAwMzFBMTVDIC8qIFN0eWxlU2VsZkFsaWdubWVudERhdGEuaCAqLywK
KwkJCQkxQzBBQTE2QTIxOTQwREM3MDA4OTY4MjkgLyogU3R5bGVTdXBwb3J0ZWRDb2xvclNjaGVt
ZXMuaCAqLywKIAkJCQlCQzVFQjVFNjBFODFCRkVGMDBCMjU5NjUgLyogU3R5bGVTdXJyb3VuZERh
dGEuY3BwICovLAogCQkJCUJDNUVCNUU0MEU4MUJGNkQwMEIyNTk2NSAvKiBTdHlsZVN1cnJvdW5k
RGF0YS5oICovLAogCQkJCUJDNUVCODBEMEU4MUYyQ0UwMEIyNTk2NSAvKiBTdHlsZVRyYW5zZm9y
bURhdGEuY3BwICovLApAQCAtMzEwNjAsNiArMzEwNjMsNyBAQAogCQkJCUE4RUE4MDBDMEExOTUx
NkUwMEE4RUY1RiAvKiBTdHlsZVNoZWV0LmggaW4gSGVhZGVycyAqLywKIAkJCQlFNEY5RUVGMzE1
NkRBMDA3MDBEMjNFN0UgLyogU3R5bGVTaGVldENvbnRlbnRzLmggaW4gSGVhZGVycyAqLywKIAkJ
CQlBOEVBODAwQTBBMTk1MTZFMDBBOEVGNUYgLyogU3R5bGVTaGVldExpc3QuaCBpbiBIZWFkZXJz
ICovLAorCQkJCTFDMEFBMTZEMjE5NDBEQzgwMDg5NjgyOSAvKiBTdHlsZVN1cHBvcnRlZENvbG9y
U2NoZW1lcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkM1RUI1RTUwRTgxQkY2RDAwQjI1OTY1IC8q
IFN0eWxlU3Vycm91bmREYXRhLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzVFQjgxMDBFODFGMkNF
MDBCMjU5NjUgLyogU3R5bGVUcmFuc2Zvcm1EYXRhLmggaW4gSGVhZGVycyAqLywKIAkJCQlFNERF
QUExODE3QTkzREMzMDAwRTA0MzAgLyogU3R5bGVUcmVlUmVzb2x2ZXIuaCBpbiBIZWFkZXJzICov
LApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJh
dGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9u
LmNwcAppbmRleCAyZWY2NjI5NTlhOTRjN2VkZmI5OWQyOGY3OTNmYjdhMGU1ZmZiNjc1Li4wYWZh
MTJmYjdiZGEyMGNiODk0OTA5YjcyNWQxYTU4N2YxOWI1OWE2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcApAQCAtNDQ4LDYgKzQ0
OCw5IEBAIHN0YXRpYyBjb25zdCBDU1NQcm9wZXJ0eUlEIGNvbXB1dGVkUHJvcGVydGllc1tdID0g
ewogICAgIENTU1Byb3BlcnR5U3Ryb2tlTWl0ZXJsaW1pdCwKICAgICBDU1NQcm9wZXJ0eVN0cm9r
ZU9wYWNpdHksCiAgICAgQ1NTUHJvcGVydHlTdHJva2VXaWR0aCwKKyNpZiBFTkFCTEUoREFSS19N
T0RFX0NTUykKKyAgICBDU1NQcm9wZXJ0eVN1cHBvcnRlZENvbG9yU2NoZW1lcywKKyNlbmRpZgog
ICAgIENTU1Byb3BlcnR5QWxpZ25tZW50QmFzZWxpbmUsCiAgICAgQ1NTUHJvcGVydHlCYXNlbGlu
ZVNoaWZ0LAogICAgIENTU1Byb3BlcnR5RG9taW5hbnRCYXNlbGluZSwKQEAgLTM5NjksNiArMzk3
MiwyNyBAQCBSZWZQdHI8Q1NTVmFsdWU+IENvbXB1dGVkU3R5bGVFeHRyYWN0b3I6OnZhbHVlRm9y
UHJvcGVydHlpblN0eWxlKGNvbnN0IFJlbmRlclN0eQogICAgICAgICAgICAgcmV0dXJuIGNzc1Zh
bHVlUG9vbC5jcmVhdGVWYWx1ZShzdHlsZS5hcHBsZVBheUJ1dHRvblR5cGUoKSk7CiAjZW5kaWYK
IAorI2lmIEVOQUJMRShEQVJLX01PREVfQ1NTKQorICAgICAgICBjYXNlIENTU1Byb3BlcnR5U3Vw
cG9ydGVkQ29sb3JTY2hlbWVzOiB7CisgICAgICAgICAgICBpZiAoIVJ1bnRpbWVFbmFibGVkRmVh
dHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkuZGFya01vZGVDU1NFbmFibGVkKCkpCisgICAgICAgICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICAgICAgICAgIGF1dG8gc3VwcG9ydGVkQ29sb3JT
Y2hlbWVzID0gc3R5bGUuc3VwcG9ydGVkQ29sb3JTY2hlbWVzKCk7CisgICAgICAgICAgICBpZiAo
c3VwcG9ydGVkQ29sb3JTY2hlbWVzLmlzQXV0bygpKQorICAgICAgICAgICAgICAgIHJldHVybiBj
c3NWYWx1ZVBvb2wuY3JlYXRlSWRlbnRpZmllclZhbHVlKENTU1ZhbHVlQXV0byk7CisKKyAgICAg
ICAgICAgIGF1dG8gbGlzdCA9IENTU1ZhbHVlTGlzdDo6Y3JlYXRlU3BhY2VTZXBhcmF0ZWQoKTsK
KyAgICAgICAgICAgIGlmIChzdXBwb3J0ZWRDb2xvclNjaGVtZXMuY29udGFpbnMoQ29sb3JTY2hl
bWVzOjpMaWdodCkpCisgICAgICAgICAgICAgICAgbGlzdC0+YXBwZW5kKGNzc1ZhbHVlUG9vbC5j
cmVhdGVJZGVudGlmaWVyVmFsdWUoQ1NTVmFsdWVMaWdodCkpOworICAgICAgICAgICAgaWYgKHN1
cHBvcnRlZENvbG9yU2NoZW1lcy5jb250YWlucyhDb2xvclNjaGVtZXM6OkRhcmspKQorICAgICAg
ICAgICAgICAgIGxpc3QtPmFwcGVuZChjc3NWYWx1ZVBvb2wuY3JlYXRlSWRlbnRpZmllclZhbHVl
KENTU1ZhbHVlRGFyaykpOworICAgICAgICAgICAgaWYgKCFzdXBwb3J0ZWRDb2xvclNjaGVtZXMu
YWxsb3dzVHJhbnNmb3JtYXRpb25zKCkpCisgICAgICAgICAgICAgICAgbGlzdC0+YXBwZW5kKGNz
c1ZhbHVlUG9vbC5jcmVhdGVJZGVudGlmaWVyVmFsdWUoQ1NTVmFsdWVPbmx5KSk7CisgICAgICAg
ICAgICBBU1NFUlQobGlzdC0+bGVuZ3RoKCkpOworICAgICAgICAgICAgcmV0dXJuIFdURk1vdmUo
bGlzdCk7CisgICAgICAgIH0KKyNlbmRpZgorCiAgICAgICAgIC8qIEluZGl2aWR1YWwgcHJvcGVy
dGllcyBub3QgcGFydCBvZiB0aGUgc3BlYyAqLwogICAgICAgICBjYXNlIENTU1Byb3BlcnR5QmFj
a2dyb3VuZFJlcGVhdFg6CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kUmVwZWF0
WToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcm9wZXJ0aWVzLmpzb24gYi9T
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJvcGVydGllcy5qc29uCmluZGV4IDI4ZDg0ODJkNjZjZjg0
ODMxZjM2ODdmNmNhZjhkMTk5ZjQ2MjBlNzAuLmExNTRlYjAzYTEwMTZmMzljZDIzOGIwZWU1YTJj
YWM1ZjcyZjhjZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcm9wZXJ0aWVz
Lmpzb24KKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1Byb3BlcnRpZXMuanNvbgpAQCAtNTcx
Miw2ICs1NzEyLDIyIEBACiAgICAgICAgICAgICB9LAogICAgICAgICAgICAgInN0YXR1cyI6ICJu
b24tc3RhbmRhcmQiCiAgICAgICAgIH0sCisgICAgICAgICJzdXBwb3J0ZWQtY29sb3Itc2NoZW1l
cyI6IHsKKyAgICAgICAgICAgICJpbmhlcml0ZWQiOiB0cnVlLAorICAgICAgICAgICAgInZhbHVl
cyI6IFsKKyAgICAgICAgICAgICAgICAiYXV0byIsCisgICAgICAgICAgICAgICAgImxpZ2h0IiwK
KyAgICAgICAgICAgICAgICAiZGFyayIsCisgICAgICAgICAgICAgICAgIm9ubHkiCisgICAgICAg
ICAgICBdLAorICAgICAgICAgICAgImNvZGVnZW4tcHJvcGVydGllcyI6IHsKKyAgICAgICAgICAg
ICAgICAiY29udmVydGVyIjogIlN1cHBvcnRlZENvbG9yU2NoZW1lcyIsCisgICAgICAgICAgICAg
ICAgImVuYWJsZS1pZiI6ICJFTkFCTEVfREFSS19NT0RFX0NTUyIKKyAgICAgICAgICAgIH0sCisg
ICAgICAgICAgICAic3RhdHVzIjogeworICAgICAgICAgICAgICAgICJzdGF0dXMiOiAibm9uLXN0
YW5kYXJkIgorICAgICAgICAgICAgfQorICAgICAgICB9LAogICAgICAgICAib3JkZXIiOiB7CiAg
ICAgICAgICAgICAiY29kZWdlbi1wcm9wZXJ0aWVzIjogewogICAgICAgICAgICAgICAgICJhbGlh
c2VzIjogWwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ZhbHVlS2V5d29yZHMu
aW4gYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFsdWVLZXl3b3Jkcy5pbgppbmRleCA5MGY5MTJh
Y2ViNTVhMWFmZGJhYWIwOTViNjJmYmM1NGFiYjNkMjU0Li44NmI1ZTU5MTRmNDBlNzNhZmIxNDk1
MjE4NDNhNGVjOTdjODYxMDE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFs
dWVLZXl3b3Jkcy5pbgorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFsdWVLZXl3b3Jkcy5p
bgpAQCAtMTM4NCw2ICsxMzg0LDExIEBAIG5vLXByZWZlcmVuY2UKIGxpZ2h0CiBkYXJrCiAvLyBu
by1wcmVmZXJlbmNlCisKKy8vIHN1cHBvcnRlZC1jb2xvci1zY2hlbWVzCitvbmx5CisvLyBsaWdo
dAorLy8gZGFyawogI2VuZGlmCiAKIC8vIGF1dG8tcmVwZWF0CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9jc3MvU3R5bGVCdWlsZGVyQ29udmVydGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3Mv
U3R5bGVCdWlsZGVyQ29udmVydGVyLmgKaW5kZXggMGU4MzhiYjVkOGRmMDMzNTY0MzgyZDU0ZjJj
MzE4YTFmZjEyMzg3OC4uZTYxZDFmNTQ3MmQ0OTk1MGU1ZWUzNTNmYTYwMTU5NGFmNDZjZjBkMCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlQnVpbGRlckNvbnZlcnRlci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZUJ1aWxkZXJDb252ZXJ0ZXIuaApAQCAtNzcsNiAr
NzcsOSBAQCBwdWJsaWM6CiAgICAgdGVtcGxhdGU8Q1NTUHJvcGVydHlJRD4gc3RhdGljIE5pbmVQ
aWVjZUltYWdlIGNvbnZlcnRCb3JkZXJNYXNrKFN0eWxlUmVzb2x2ZXImLCBDU1NWYWx1ZSYpOwog
ICAgIHRlbXBsYXRlPENTU1Byb3BlcnR5SUQ+IHN0YXRpYyBSZWZQdHI8U3R5bGVJbWFnZT4gY29u
dmVydFN0eWxlSW1hZ2UoU3R5bGVSZXNvbHZlciYsIENTU1ZhbHVlJik7CiAgICAgc3RhdGljIFRy
YW5zZm9ybU9wZXJhdGlvbnMgY29udmVydFRyYW5zZm9ybShTdHlsZVJlc29sdmVyJiwgY29uc3Qg
Q1NTVmFsdWUmKTsKKyNpZiBFTkFCTEUoREFSS19NT0RFX0NTUykKKyAgICBzdGF0aWMgU3R5bGVT
dXBwb3J0ZWRDb2xvclNjaGVtZXMgY29udmVydFN1cHBvcnRlZENvbG9yU2NoZW1lcyhTdHlsZVJl
c29sdmVyJiwgY29uc3QgQ1NTVmFsdWUmKTsKKyNlbmRpZgogICAgIHN0YXRpYyBTdHJpbmcgY29u
dmVydFN0cmluZyhTdHlsZVJlc29sdmVyJiwgY29uc3QgQ1NTVmFsdWUmKTsKICAgICBzdGF0aWMg
U3RyaW5nIGNvbnZlcnRTdHJpbmdPckF1dG8oU3R5bGVSZXNvbHZlciYsIGNvbnN0IENTU1ZhbHVl
Jik7CiAgICAgc3RhdGljIFN0cmluZyBjb252ZXJ0U3RyaW5nT3JOb25lKFN0eWxlUmVzb2x2ZXIm
LCBjb25zdCBDU1NWYWx1ZSYpOwpAQCAtMTY1LDYgKzE2OCwxMCBAQCBwcml2YXRlOgogICAgIHN0
YXRpYyBMZW5ndGggcGFyc2VTbmFwQ29vcmRpbmF0ZShTdHlsZVJlc29sdmVyJiwgY29uc3QgQ1NT
VmFsdWUmKTsKICNlbmRpZgogCisjaWYgRU5BQkxFKERBUktfTU9ERV9DU1MpCisgICAgc3RhdGlj
IHZvaWQgdXBkYXRlU3VwcG9ydGVkQ29sb3JTY2hlbWVzKGNvbnN0IENTU1ByaW1pdGl2ZVZhbHVl
JiwgU3R5bGVTdXBwb3J0ZWRDb2xvclNjaGVtZXMmKTsKKyNlbmRpZgorCiAgICAgc3RhdGljIExl
bmd0aCBjb252ZXJ0VG8xMDBQZXJjZW50TWludXNMZW5ndGgoY29uc3QgTGVuZ3RoJik7CiAgICAg
dGVtcGxhdGU8Q1NTVmFsdWVJRCwgQ1NTVmFsdWVJRD4gc3RhdGljIExlbmd0aCBjb252ZXJ0UG9z
aXRpb25Db21wb25lbnQoU3R5bGVSZXNvbHZlciYsIGNvbnN0IENTU1ByaW1pdGl2ZVZhbHVlJik7
CiAKQEAgLTQ1Myw2ICs0NjAsNDggQEAgaW5saW5lIFRyYW5zZm9ybU9wZXJhdGlvbnMgU3R5bGVC
dWlsZGVyQ29udmVydGVyOjpjb252ZXJ0VHJhbnNmb3JtKFN0eWxlUmVzb2x2ZXIKICAgICByZXR1
cm4gb3BlcmF0aW9uczsKIH0KIAorI2lmIEVOQUJMRShEQVJLX01PREVfQ1NTKQoraW5saW5lIHZv
aWQgU3R5bGVCdWlsZGVyQ29udmVydGVyOjp1cGRhdGVTdXBwb3J0ZWRDb2xvclNjaGVtZXMoY29u
c3QgQ1NTUHJpbWl0aXZlVmFsdWUmIHByaW1pdGl2ZVZhbHVlLCBTdHlsZVN1cHBvcnRlZENvbG9y
U2NoZW1lcyYgc3VwcG9ydGVkQ29sb3JTY2hlbWVzKQoreworICAgIEFTU0VSVChwcmltaXRpdmVW
YWx1ZS5pc1ZhbHVlSUQoKSk7CisKKyAgICBzd2l0Y2ggKHByaW1pdGl2ZVZhbHVlLnZhbHVlSUQo
KSkgeworICAgIGNhc2UgQ1NTVmFsdWVBdXRvOgorICAgICAgICBzdXBwb3J0ZWRDb2xvclNjaGVt
ZXMgPSBTdHlsZVN1cHBvcnRlZENvbG9yU2NoZW1lcygpOworICAgICAgICBicmVhazsKKyAgICBj
YXNlIENTU1ZhbHVlT25seToKKyAgICAgICAgc3VwcG9ydGVkQ29sb3JTY2hlbWVzLnNldEFsbG93
c1RyYW5zZm9ybWF0aW9ucyhmYWxzZSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQ1NTVmFs
dWVMaWdodDoKKyAgICAgICAgc3VwcG9ydGVkQ29sb3JTY2hlbWVzLmFkZChDb2xvclNjaGVtZXM6
OkxpZ2h0KTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBDU1NWYWx1ZURhcms6CisgICAgICAg
IHN1cHBvcnRlZENvbG9yU2NoZW1lcy5hZGQoQ29sb3JTY2hlbWVzOjpEYXJrKTsKKyAgICAgICAg
YnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgICAgLy8gVW5rbm93biBpZGVudGlmaWVycyBhcmUg
YWxsb3dlZCBhbmQgaWdub3JlZC4KKyAgICAgICAgYnJlYWs7CisgICAgfQorfQorCitpbmxpbmUg
U3R5bGVTdXBwb3J0ZWRDb2xvclNjaGVtZXMgU3R5bGVCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0
U3VwcG9ydGVkQ29sb3JTY2hlbWVzKFN0eWxlUmVzb2x2ZXImLCBjb25zdCBDU1NWYWx1ZSYgdmFs
dWUpCit7CisgICAgU3R5bGVTdXBwb3J0ZWRDb2xvclNjaGVtZXMgc3VwcG9ydGVkQ29sb3JTY2hl
bWVzOworCisgICAgaWYgKGlzPENTU1ZhbHVlTGlzdD4odmFsdWUpKSB7CisgICAgICAgIGZvciAo
YXV0byYgY3VycmVudFZhbHVlIDogZG93bmNhc3Q8Q1NTVmFsdWVMaXN0Pih2YWx1ZSkpCisgICAg
ICAgICAgICB1cGRhdGVTdXBwb3J0ZWRDb2xvclNjaGVtZXMoZG93bmNhc3Q8Q1NTUHJpbWl0aXZl
VmFsdWU+KGN1cnJlbnRWYWx1ZS5nZXQoKSksIHN1cHBvcnRlZENvbG9yU2NoZW1lcyk7CisgICAg
fSBlbHNlIGlmIChpczxDU1NQcmltaXRpdmVWYWx1ZT4odmFsdWUpKQorICAgICAgICB1cGRhdGVT
dXBwb3J0ZWRDb2xvclNjaGVtZXMoZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KHZhbHVlKSwg
c3VwcG9ydGVkQ29sb3JTY2hlbWVzKTsKKworICAgIC8vIElmIHRoZSB2YWx1ZSB3YXMganVzdCAi
b25seSIsIHRoYXQgaXMgc3lub255bW91cyBmb3IgIm9ubHkgbGlnaHQiLgorICAgIGlmIChzdXBw
b3J0ZWRDb2xvclNjaGVtZXMuaXNPbmx5KCkpCisgICAgICAgIHN1cHBvcnRlZENvbG9yU2NoZW1l
cy5hZGQoQ29sb3JTY2hlbWVzOjpMaWdodCk7CisKKyAgICByZXR1cm4gc3VwcG9ydGVkQ29sb3JT
Y2hlbWVzOworfQorI2VuZGlmCisKIGlubGluZSBTdHJpbmcgU3R5bGVCdWlsZGVyQ29udmVydGVy
Ojpjb252ZXJ0U3RyaW5nKFN0eWxlUmVzb2x2ZXImLCBjb25zdCBDU1NWYWx1ZSYgdmFsdWUpCiB7
CiAgICAgcmV0dXJuIGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPih2YWx1ZSkuc3RyaW5nVmFs
dWUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmNwcAppbmRleCA3NWIwYjhkNDFhMjk0
NGRjMDhlMTRjNTVjZTgxNjhmMmViYjgwMWQ3Li4yNGIwNmJlYzkzMzdlMTZiYjhhYjdmMjRkZWY5
MDlhNzhhNTI4M2JlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZl
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuY3BwCkBAIC0xODQx
LDE0ICsxODQxLDE0IEBAIENvbG9yIFN0eWxlUmVzb2x2ZXI6OmNvbG9yRnJvbVByaW1pdGl2ZVZh
bHVlKGNvbnN0IENTU1ByaW1pdGl2ZVZhbHVlJiB2YWx1ZSwgYm9vCiAgICAgY2FzZSBDU1NWYWx1
ZVdlYmtpdEFjdGl2ZWxpbms6CiAgICAgICAgIHJldHVybiBkb2N1bWVudCgpLmFjdGl2ZUxpbmtD
b2xvcigpOwogICAgIGNhc2UgQ1NTVmFsdWVXZWJraXRGb2N1c1JpbmdDb2xvcjoKLSAgICAgICAg
cmV0dXJuIFJlbmRlclRoZW1lOjpmb2N1c1JpbmdDb2xvcihkb2N1bWVudCgpLnN0eWxlQ29sb3JP
cHRpb25zKCkpOworICAgICAgICByZXR1cm4gUmVuZGVyVGhlbWU6OmZvY3VzUmluZ0NvbG9yKGRv
Y3VtZW50KCkuc3R5bGVDb2xvck9wdGlvbnMobV9zdGF0ZS5zdHlsZSgpKSk7CiAgICAgY2FzZSBD
U1NWYWx1ZUN1cnJlbnRjb2xvcjoKICAgICAgICAgLy8gQ29sb3IgaXMgYW4gaW5oZXJpdGVkIHBy
b3BlcnR5IHNvIGRlcGVuZGluZyBvbiBpdCBlZmZlY3RpdmVseSBtYWtlcyB0aGUgcHJvcGVydHkg
aW5oZXJpdGVkLgogICAgICAgICAvLyBGSVhNRTogU2V0dGluZyB0aGUgZmxhZyBhcyBhIHNpZGUg
ZWZmZWN0IG9mIGNhbGxpbmcgdGhpcyBmdW5jdGlvbiBpcyBhIGJpdCBvYmxpcXVlLiBDYW4gd2Ug
ZG8gYmV0dGVyPwogICAgICAgICBtX3N0YXRlLnN0eWxlKCktPnNldEhhc0V4cGxpY2l0bHlJbmhl
cml0ZWRQcm9wZXJ0aWVzKCk7CiAgICAgICAgIHJldHVybiBtX3N0YXRlLnN0eWxlKCktPmNvbG9y
KCk7CiAgICAgZGVmYXVsdDoKLSAgICAgICAgcmV0dXJuIFN0eWxlQ29sb3I6OmNvbG9yRnJvbUtl
eXdvcmQoaWRlbnRpZmllciwgZG9jdW1lbnQoKS5zdHlsZUNvbG9yT3B0aW9ucygpKTsKKyAgICAg
ICAgcmV0dXJuIFN0eWxlQ29sb3I6OmNvbG9yRnJvbUtleXdvcmQoaWRlbnRpZmllciwgZG9jdW1l
bnQoKS5zdHlsZUNvbG9yT3B0aW9ucyhtX3N0YXRlLnN0eWxlKCkpKTsKICAgICB9CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUHJvcGVydHlQYXJzZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQcm9wZXJ0eVBhcnNlci5jcHAKaW5kZXgg
ZDNhMDQ3N2E3NDMyMmZhMjYyYTE2OTExYTczMThiNmI2OGJkN2E3My4uMTVlN2ZlNjA0NWE3ZDRh
NGFlZTI5MzJjNDcyNTBiNTg3MTY0NmJmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3Nz
L3BhcnNlci9DU1NQcm9wZXJ0eVBhcnNlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL3Bh
cnNlci9DU1NQcm9wZXJ0eVBhcnNlci5jcHAKQEAgLTM3NDcsNyArMzc0Nyw1MSBAQCBzdGF0aWMg
UmVmUHRyPENTU1ZhbHVlPiBjb25zdW1lVGV4dEVtcGhhc2lzUG9zaXRpb24oQ1NTUGFyc2VyVG9r
ZW5SYW5nZSYgcmFuZ2UpCiAgICAgICAgIGxpc3QtPmFwcGVuZChDU1NWYWx1ZVBvb2w6OnNpbmds
ZXRvbigpLmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShsZWZ0UmlnaHRWYWx1ZUlEKSk7CiAgICAgcmV0
dXJuIGxpc3Q7CiB9Ci0gICAgCisKKyNpZiBFTkFCTEUoREFSS19NT0RFX0NTUykKKworc3RhdGlj
IFJlZlB0cjxDU1NWYWx1ZT4gY29uc3VtZVN1cHBvcnRlZENvbG9yU2NoZW1lcyhDU1NQYXJzZXJU
b2tlblJhbmdlJiByYW5nZSkKK3sKKyAgICBpZiAoaXNBdXRvKHJhbmdlLnBlZWsoKS5pZCgpKSkK
KyAgICAgICAgcmV0dXJuIGNvbnN1bWVJZGVudChyYW5nZSk7CisKKyAgICBWZWN0b3I8Q1NTVmFs
dWVJRCwgMz4gaWRlbnRpZmllcnM7CisKKyAgICB3aGlsZSAoIXJhbmdlLmF0RW5kKCkpIHsKKyAg
ICAgICAgaWYgKHJhbmdlLnBlZWsoKS50eXBlKCkgIT0gSWRlbnRUb2tlbikKKyAgICAgICAgICAg
IHJldHVybiBudWxscHRyOworCisgICAgICAgIENTU1ZhbHVlSUQgaWQgPSByYW5nZS5wZWVrKCku
aWQoKTsKKworICAgICAgICBzd2l0Y2ggKGlkKSB7CisgICAgICAgIGNhc2UgQ1NTVmFsdWVBdXRv
OgorICAgICAgICAgICAgLy8gQXV0byBpcyBvbmx5IGFsbG93ZWQgYXMgYSBzaW5nbGUgdmFsdWUs
IGFuZCB3YXMgaGFuZGxlZCBlYXJsaWVyLgorICAgICAgICAgICAgLy8gRG9uJ3QgYWxsb3cgaXQg
aW4gdGhlIGxpc3QuCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgICAgICBjYXNl
IENTU1ZhbHVlT25seToKKyAgICAgICAgY2FzZSBDU1NWYWx1ZUxpZ2h0OgorICAgICAgICBjYXNl
IENTU1ZhbHVlRGFyazoKKyAgICAgICAgICAgIGlmICghaWRlbnRpZmllcnMuYXBwZW5kSWZOb3RD
b250YWlucyhpZCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgICAg
ICBicmVhazsKKworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgLy8gVW5rbm93biBpZGVu
dGlmaWVycyBhcmUgYWxsb3dlZCBhbmQgaWdub3JlZC4KKyAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICB9CisKKyAgICAgICAgcmFuZ2UuY29uc3VtZUluY2x1ZGluZ1doaXRlc3BhY2UoKTsKKyAg
ICB9CisKKyAgICBSZWZQdHI8Q1NTVmFsdWVMaXN0PiBsaXN0ID0gQ1NTVmFsdWVMaXN0OjpjcmVh
dGVTcGFjZVNlcGFyYXRlZCgpOworICAgIGZvciAoYXV0byBpZCA6IGlkZW50aWZpZXJzKQorICAg
ICAgICBsaXN0LT5hcHBlbmQoQ1NTVmFsdWVQb29sOjpzaW5nbGV0b24oKS5jcmVhdGVJZGVudGlm
aWVyVmFsdWUoaWQpKTsKKyAgICByZXR1cm4gbGlzdDsKK30KKworI2VuZGlmCisKICNpZiBFTkFC
TEUoREFTSEJPQVJEX1NVUFBPUlQpCiAKIHN0YXRpYyBSZWZQdHI8Q1NTVmFsdWU+IGNvbnN1bWVX
ZWJraXREYXNoYm9hcmRSZWdpb24oQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UsIENTU1BhcnNl
ck1vZGUgbW9kZSkKQEAgLTQyODksNiArNDMzMywxMiBAQCBSZWZQdHI8Q1NTVmFsdWU+IENTU1By
b3BlcnR5UGFyc2VyOjpwYXJzZVNpbmdsZVZhbHVlKENTU1Byb3BlcnR5SUQgcHJvcGVydHksIENT
UwogICAgICAgICByZXR1cm4gY29uc3VtZVdlYmtpdEFzcGVjdFJhdGlvKG1fcmFuZ2UpOwogICAg
IGNhc2UgQ1NTUHJvcGVydHlXZWJraXRUZXh0RW1waGFzaXNQb3NpdGlvbjoKICAgICAgICAgcmV0
dXJuIGNvbnN1bWVUZXh0RW1waGFzaXNQb3NpdGlvbihtX3JhbmdlKTsKKyNpZiBFTkFCTEUoREFS
S19NT0RFX0NTUykKKyAgICBjYXNlIENTU1Byb3BlcnR5U3VwcG9ydGVkQ29sb3JTY2hlbWVzOgor
ICAgICAgICBpZiAoIVJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkuZGFy
a01vZGVDU1NFbmFibGVkKCkpCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAg
cmV0dXJuIGNvbnN1bWVTdXBwb3J0ZWRDb2xvclNjaGVtZXMobV9yYW5nZSk7CisjZW5kaWYKICNp
ZiBFTkFCTEUoREFTSEJPQVJEX1NVUFBPUlQpCiAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdERh
c2hib2FyZFJlZ2lvbjoKICAgICAgICAgcmV0dXJuIGNvbnN1bWVXZWJraXREYXNoYm9hcmRSZWdp
b24obV9yYW5nZSwgbV9jb250ZXh0Lm1vZGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZG9tL0RvY3VtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKaW5kZXgg
MWU2YmM0YmM1YmEwM2Q5YWNkZDQxMDU1Mjg3ZTliMDYwYzI1NDljNS4uZjA3MzE0MjExZDg2YjE3
MjI1NDQxYWExNDQ1MGRhOTk2YzM1ZmM3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9t
L0RvY3VtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCkBAIC04
MTcsMTcgKzgxNywxNyBAQCBTdHJpbmcgRG9jdW1lbnQ6OmNvbXBhdE1vZGUoKSBjb25zdAogCiB2
b2lkIERvY3VtZW50OjpyZXNldExpbmtDb2xvcigpCiB7Ci0gICAgbV9saW5rQ29sb3IgPSBTdHls
ZUNvbG9yOjpjb2xvckZyb21LZXl3b3JkKENTU1ZhbHVlV2Via2l0TGluaywgc3R5bGVDb2xvck9w
dGlvbnMoKSk7CisgICAgbV9saW5rQ29sb3IgPSBTdHlsZUNvbG9yOjpjb2xvckZyb21LZXl3b3Jk
KENTU1ZhbHVlV2Via2l0TGluaywgc3R5bGVDb2xvck9wdGlvbnMobnVsbHB0cikpOwogfQogCiB2
b2lkIERvY3VtZW50OjpyZXNldFZpc2l0ZWRMaW5rQ29sb3IoKQogewotICAgIG1fdmlzaXRlZExp
bmtDb2xvciA9IFN0eWxlQ29sb3I6OmNvbG9yRnJvbUtleXdvcmQoQ1NTVmFsdWVXZWJraXRMaW5r
LCBzdHlsZUNvbG9yT3B0aW9ucygpIHwgU3R5bGVDb2xvcjo6T3B0aW9uczo6Rm9yVmlzaXRlZExp
bmspOworICAgIG1fdmlzaXRlZExpbmtDb2xvciA9IFN0eWxlQ29sb3I6OmNvbG9yRnJvbUtleXdv
cmQoQ1NTVmFsdWVXZWJraXRMaW5rLCBzdHlsZUNvbG9yT3B0aW9ucyhudWxscHRyKSB8IFN0eWxl
Q29sb3I6Ok9wdGlvbnM6OkZvclZpc2l0ZWRMaW5rKTsKIH0KIAogdm9pZCBEb2N1bWVudDo6cmVz
ZXRBY3RpdmVMaW5rQ29sb3IoKQogewotICAgIG1fYWN0aXZlTGlua0NvbG9yID0gU3R5bGVDb2xv
cjo6Y29sb3JGcm9tS2V5d29yZChDU1NWYWx1ZVdlYmtpdEFjdGl2ZWxpbmssIHN0eWxlQ29sb3JP
cHRpb25zKCkpOworICAgIG1fYWN0aXZlTGlua0NvbG9yID0gU3R5bGVDb2xvcjo6Y29sb3JGcm9t
S2V5d29yZChDU1NWYWx1ZVdlYmtpdEFjdGl2ZWxpbmssIHN0eWxlQ29sb3JPcHRpb25zKG51bGxw
dHIpKTsKIH0KIAogRE9NSW1wbGVtZW50YXRpb24mIERvY3VtZW50OjppbXBsZW1lbnRhdGlvbigp
CkBAIC0zNTkwLDE4ICszNTkwLDM0IEBAIHN0YXRpYyB2b2lkIHByb2Nlc3NDb2xvclNjaGVtZXMo
U3RyaW5nVmlldyBjb2xvclNjaGVtZXMsIGNvbnN0IFdURjo6RnVuY3Rpb248dm9pCiB2b2lkIERv
Y3VtZW50Ojpwcm9jZXNzU3VwcG9ydGVkQ29sb3JTY2hlbWVzKGNvbnN0IFN0cmluZyYgY29sb3JT
Y2hlbWVzKQogewogICAgIE9wdGlvblNldDxDb2xvclNjaGVtZXM+IHN1cHBvcnRlZENvbG9yU2No
ZW1lczsKKyAgICBib29sIGFsbG93c1RyYW5zZm9ybWF0aW9ucyA9IHRydWU7CisgICAgYm9vbCBh
dXRvRW5jb3VudGVyZWQgPSBmYWxzZTsKKworICAgIHByb2Nlc3NDb2xvclNjaGVtZXMoY29sb3JT
Y2hlbWVzLCBbJl0oU3RyaW5nVmlldyBrZXkpIHsKKyAgICAgICAgaWYgKGVxdWFsTGV0dGVyc0ln
bm9yaW5nQVNDSUlDYXNlKGtleSwgImF1dG8iKSkgeworICAgICAgICAgICAgc3VwcG9ydGVkQ29s
b3JTY2hlbWVzID0geyB9OworICAgICAgICAgICAgYWxsb3dzVHJhbnNmb3JtYXRpb25zID0gdHJ1
ZTsKKyAgICAgICAgICAgIGF1dG9FbmNvdW50ZXJlZCA9IHRydWU7CisgICAgICAgICAgICByZXR1
cm47CisgICAgICAgIH0KKworICAgICAgICBpZiAoYXV0b0VuY291bnRlcmVkKQorICAgICAgICAg
ICAgcmV0dXJuOwogCi0gICAgcHJvY2Vzc0NvbG9yU2NoZW1lcyhjb2xvclNjaGVtZXMsIFsmc3Vw
cG9ydGVkQ29sb3JTY2hlbWVzXShTdHJpbmdWaWV3IGtleSkgewogICAgICAgICBpZiAoZXF1YWxM
ZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2Uoa2V5LCAibGlnaHQiKSkKICAgICAgICAgICAgIHN1cHBv
cnRlZENvbG9yU2NoZW1lcy5hZGQoQ29sb3JTY2hlbWVzOjpMaWdodCk7CiAgICAgICAgIGVsc2Ug
aWYgKGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKGtleSwgImRhcmsiKSkKICAgICAgICAg
ICAgIHN1cHBvcnRlZENvbG9yU2NoZW1lcy5hZGQoQ29sb3JTY2hlbWVzOjpEYXJrKTsKKyAgICAg
ICAgZWxzZSBpZiAoZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2Uoa2V5LCAib25seSIpKQor
ICAgICAgICAgICAgYWxsb3dzVHJhbnNmb3JtYXRpb25zID0gZmFsc2U7CiAgICAgfSk7CiAKLSAg
ICBpZiAoc3VwcG9ydGVkQ29sb3JTY2hlbWVzLmlzRW1wdHkoKSkKKyAgICAvLyBJZiB0aGUgdmFs
dWUgd2FzIGp1c3QgIm9ubHkiLCB0aGF0IGlzIHN5bm9ueW1vdXMgZm9yICJvbmx5IGxpZ2h0Ii4K
KyAgICBpZiAoc3VwcG9ydGVkQ29sb3JTY2hlbWVzLmlzRW1wdHkoKSAmJiAhYWxsb3dzVHJhbnNm
b3JtYXRpb25zKQogICAgICAgICBzdXBwb3J0ZWRDb2xvclNjaGVtZXMuYWRkKENvbG9yU2NoZW1l
czo6TGlnaHQpOwogCiAgICAgbV9zdXBwb3J0ZWRDb2xvclNjaGVtZXMgPSBzdXBwb3J0ZWRDb2xv
clNjaGVtZXM7CisgICAgbV9hbGxvd3NDb2xvclNjaGVtZVRyYW5zZm9ybWF0aW9ucyA9IGFsbG93
c1RyYW5zZm9ybWF0aW9uczsKIAogICAgIGlmIChhdXRvKiBwYWdlID0gdGhpcy0+cGFnZSgpKQog
ICAgICAgICBwYWdlLT51cGRhdGVTdHlsZUFmdGVyQ2hhbmdlSW5FbnZpcm9ubWVudCgpOwpAQCAt
NzI4MSwxMSArNzI5NywyMyBAQCBib29sIERvY3VtZW50Ojp1c2VTeXN0ZW1BcHBlYXJhbmNlKCkg
Y29uc3QKICAgICByZXR1cm4gdXNlU3lzdGVtQXBwZWFyYW5jZTsKIH0KIAotYm9vbCBEb2N1bWVu
dDo6dXNlRGFya0FwcGVhcmFuY2UoKSBjb25zdAorYm9vbCBEb2N1bWVudDo6dXNlRGFya0FwcGVh
cmFuY2UoY29uc3QgUmVuZGVyU3R5bGUqIHN0eWxlKSBjb25zdAogewogI2lmIEVOQUJMRShEQVJL
X01PREVfQ1NTKQotICAgIGlmIChtX3N1cHBvcnRlZENvbG9yU2NoZW1lcy5jb250YWlucyhDb2xv
clNjaGVtZXM6OkRhcmspICYmICFtX3N1cHBvcnRlZENvbG9yU2NoZW1lcy5jb250YWlucyhDb2xv
clNjaGVtZXM6OkxpZ2h0KSkKKyAgICBPcHRpb25TZXQ8Q29sb3JTY2hlbWVzPiBzdXBwb3J0ZWRD
b2xvclNjaGVtZXM7CisKKyAgICAvLyBVc2UgdGhlIHN0eWxlJ3Mgc3VwcG9ydGVkIGNvbG9yIHNj
aGVtZXMsIGlmIHN1cHBsaWVkLgorICAgIGlmIChzdHlsZSkKKyAgICAgICAgc3VwcG9ydGVkQ29s
b3JTY2hlbWVzID0gc3R5bGUtPnN1cHBvcnRlZENvbG9yU2NoZW1lcygpLmNvbG9yU2NoZW1lcygp
OworCisgICAgLy8gRmFsbGJhY2sgdG8gdGhlIGRvY3VtZW50J3Mgc3VwcG9ydGVkIGNvbG9yIHNj
aGVtZXMgaWYgc3R5bGUgd2FzIGVtcHR5IChhdXRvKS4KKyAgICBpZiAoc3VwcG9ydGVkQ29sb3JT
Y2hlbWVzLmlzRW1wdHkoKSkKKyAgICAgICAgc3VwcG9ydGVkQ29sb3JTY2hlbWVzID0gbV9zdXBw
b3J0ZWRDb2xvclNjaGVtZXM7CisKKyAgICBpZiAoc3VwcG9ydGVkQ29sb3JTY2hlbWVzLmNvbnRh
aW5zKENvbG9yU2NoZW1lczo6RGFyaykgJiYgIXN1cHBvcnRlZENvbG9yU2NoZW1lcy5jb250YWlu
cyhDb2xvclNjaGVtZXM6OkxpZ2h0KSkKICAgICAgICAgcmV0dXJuIHRydWU7CisjZWxzZQorICAg
IFVOVVNFRF9QQVJBTShzdHlsZSk7CiAjZW5kaWYKIAogICAgIGJvb2wgcGFnZVVzZXNEYXJrQXBw
ZWFyYW5jZSA9IGZhbHNlOwpAQCAtNzI5NiwyMSArNzMyNCwxOSBAQCBib29sIERvY3VtZW50Ojp1
c2VEYXJrQXBwZWFyYW5jZSgpIGNvbnN0CiAgICAgICAgIHJldHVybiBwYWdlVXNlc0RhcmtBcHBl
YXJhbmNlOwogCiAjaWYgRU5BQkxFKERBUktfTU9ERV9DU1MpCi0gICAgaWYgKG1fc3VwcG9ydGVk
Q29sb3JTY2hlbWVzLmNvbnRhaW5zKENvbG9yU2NoZW1lczo6RGFyaykpCisgICAgaWYgKHN1cHBv
cnRlZENvbG9yU2NoZW1lcy5jb250YWlucyhDb2xvclNjaGVtZXM6OkRhcmspKQogICAgICAgICBy
ZXR1cm4gcGFnZVVzZXNEYXJrQXBwZWFyYW5jZTsKLQotICAgIEFTU0VSVChtX3N1cHBvcnRlZENv
bG9yU2NoZW1lcy5jb250YWlucyhDb2xvclNjaGVtZXM6OkxpZ2h0KSk7CiAjZW5kaWYKIAogICAg
IHJldHVybiBmYWxzZTsKIH0KIAotT3B0aW9uU2V0PFN0eWxlQ29sb3I6Ok9wdGlvbnM+IERvY3Vt
ZW50OjpzdHlsZUNvbG9yT3B0aW9ucygpIGNvbnN0CitPcHRpb25TZXQ8U3R5bGVDb2xvcjo6T3B0
aW9ucz4gRG9jdW1lbnQ6OnN0eWxlQ29sb3JPcHRpb25zKGNvbnN0IFJlbmRlclN0eWxlKiBzdHls
ZSkgY29uc3QKIHsKICAgICBPcHRpb25TZXQ8U3R5bGVDb2xvcjo6T3B0aW9ucz4gb3B0aW9uczsK
ICAgICBpZiAodXNlU3lzdGVtQXBwZWFyYW5jZSgpKQogICAgICAgICBvcHRpb25zLmFkZChTdHls
ZUNvbG9yOjpPcHRpb25zOjpVc2VTeXN0ZW1BcHBlYXJhbmNlKTsKLSAgICBpZiAodXNlRGFya0Fw
cGVhcmFuY2UoKSkKKyAgICBpZiAodXNlRGFya0FwcGVhcmFuY2Uoc3R5bGUpKQogICAgICAgICBv
cHRpb25zLmFkZChTdHlsZUNvbG9yOjpPcHRpb25zOjpVc2VEYXJrQXBwZWFyYW5jZSk7CiAgICAg
cmV0dXJuIG9wdGlvbnM7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1l
bnQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCmluZGV4IDZhNzI2NWE5YjFiZjcz
NWRjYmVjOTM0Yjc3YmNmZmZhMDJkYWQ1Y2EuLmNkNTNkYmE2ODVhOWIwMzBhMzQyNjgwZDUyZjQz
NWJmNWQzYzliMTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCkBAIC01NzgsOSArNTc4LDkgQEAgcHVi
bGljOgogICAgIGZsb2F0IGRldmljZVNjYWxlRmFjdG9yKCkgY29uc3Q7CiAKICAgICBXRUJDT1JF
X0VYUE9SVCBib29sIHVzZVN5c3RlbUFwcGVhcmFuY2UoKSBjb25zdDsKLSAgICBXRUJDT1JFX0VY
UE9SVCBib29sIHVzZURhcmtBcHBlYXJhbmNlKCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQg
Ym9vbCB1c2VEYXJrQXBwZWFyYW5jZShjb25zdCBSZW5kZXJTdHlsZSopIGNvbnN0OwogCi0gICAg
T3B0aW9uU2V0PFN0eWxlQ29sb3I6Ok9wdGlvbnM+IHN0eWxlQ29sb3JPcHRpb25zKCkgY29uc3Q7
CisgICAgT3B0aW9uU2V0PFN0eWxlQ29sb3I6Ok9wdGlvbnM+IHN0eWxlQ29sb3JPcHRpb25zKGNv
bnN0IFJlbmRlclN0eWxlKikgY29uc3Q7CiAKICAgICBXRUJDT1JFX0VYUE9SVCBSZWY8UmFuZ2U+
IGNyZWF0ZVJhbmdlKCk7CiAKQEAgLTkwMSwxMSArOTAxLDYgQEAgcHVibGljOgogICAgIHZvaWQg
cHJvY2Vzc1JlZmVycmVyUG9saWN5KGNvbnN0IFN0cmluZyYgcG9saWN5LCBSZWZlcnJlclBvbGlj
eVNvdXJjZSk7CiAKICNpZiBFTkFCTEUoREFSS19NT0RFX0NTUykKLSAgICBlbnVtIGNsYXNzIENv
bG9yU2NoZW1lcyA6IHVpbnQ4X3QgewotICAgICAgICBMaWdodCA9IDEgPDwgMCwKLSAgICAgICAg
RGFyayA9IDEgPDwgMQotICAgIH07Ci0KICAgICB2b2lkIHByb2Nlc3NTdXBwb3J0ZWRDb2xvclNj
aGVtZXMoY29uc3QgU3RyaW5nJiBjb2xvclNjaGVtZXMpOwogI2VuZGlmCiAKQEAgLTE3NzIsNyAr
MTc2Nyw4IEBAIHByaXZhdGU6CiAgICAgSGFzaFNldDxTVkdVc2VFbGVtZW50Kj4gbV9zdmdVc2VF
bGVtZW50czsKIAogI2lmIEVOQUJMRShEQVJLX01PREVfQ1NTKQotICAgIE9wdGlvblNldDxDb2xv
clNjaGVtZXM+IG1fc3VwcG9ydGVkQ29sb3JTY2hlbWVzIHsgQ29sb3JTY2hlbWVzOjpMaWdodCB9
OworICAgIE9wdGlvblNldDxDb2xvclNjaGVtZXM+IG1fc3VwcG9ydGVkQ29sb3JTY2hlbWVzOwor
ICAgIGJvb2wgbV9hbGxvd3NDb2xvclNjaGVtZVRyYW5zZm9ybWF0aW9ucyB7IHRydWUgfTsKICNl
bmRpZgogCiAjaWYgRU5BQkxFKERBU0hCT0FSRF9TVVBQT1JUKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9jb2NvYS9XZWJDb250ZW50UmVhZGVyQ29jb2EubW0gYi9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL2NvY29hL1dlYkNvbnRlbnRSZWFkZXJDb2NvYS5tbQppbmRleCBhZWZl
YjFhZjFmNjkzYzM5MTJiZGY4ZDY4ZDNmZDlkNWNjNzY1ZmVjLi5kNDIwN2I5Y2YxYzFjZDY4ODQ3
M2Q0YmYwOGI0ZWEyODAwYjc0NmIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L2NvY29hL1dlYkNvbnRlbnRSZWFkZXJDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL2NvY29hL1dlYkNvbnRlbnRSZWFkZXJDb2NvYS5tbQpAQCAtNTAsNiArNTAsNyBAQAogI2lt
cG9ydCAiTUlNRVR5cGVSZWdpc3RyeS5oIgogI2ltcG9ydCAiUGFnZS5oIgogI2ltcG9ydCAiUHVi
bGljVVJMTWFuYWdlci5oIgorI2ltcG9ydCAiUmVuZGVyVmlldy5oIgogI2ltcG9ydCAiUnVudGlt
ZUVuYWJsZWRGZWF0dXJlcy5oIgogI2ltcG9ydCAiU2VyaWFsaXplZEF0dGFjaG1lbnREYXRhLmgi
CiAjaW1wb3J0ICJTZXR0aW5ncy5oIgpAQCAtMTMzLDcgKzEzNCw5IEBAIHN0YXRpYyBGcmFnbWVu
dEFuZFJlc291cmNlcyBjcmVhdGVGcmFnbWVudChGcmFtZSYgZnJhbWUsIE5TQXR0cmlidXRlZFN0
cmluZyAqc3RyCiAgICAgRG9jdW1lbnQmIGRvY3VtZW50ID0gKmZyYW1lLmRvY3VtZW50KCk7CiAK
ICNpZiBQTEFURk9STShNQUMpCi0gICAgTG9jYWxEZWZhdWx0U3lzdGVtQXBwZWFyYW5jZSBsb2Nh
bEFwcGVhcmFuY2UoZG9jdW1lbnQudXNlRGFya0FwcGVhcmFuY2UoKSk7CisgICAgYXV0byogdmll
dyA9IGZyYW1lLnZpZXcoKTsKKyAgICBhdXRvKiByZW5kZXJWaWV3ID0gdmlldyA/IHZpZXctPnJl
bmRlclZpZXcoKSA6IG51bGxwdHI7CisgICAgTG9jYWxEZWZhdWx0U3lzdGVtQXBwZWFyYW5jZSBs
b2NhbEFwcGVhcmFuY2UocmVuZGVyVmlldyA/IHJlbmRlclZpZXctPnVzZURhcmtBcHBlYXJhbmNl
KCkgOiBmYWxzZSk7CiAjZW5kaWYKIAogICAgIE5TQXJyYXkgKnN1YnJlc291cmNlcyA9IG5pbDsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0Nv
bnRleHQyRC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdD
b250ZXh0MkQuY3BwCmluZGV4IGQxNWRlYzQ2MGVkNzU0OGJiNTc2YzE3OTUxNjM5ZDlhMjg3MTYw
MzcuLmRhMWM4MGZkMmZkODExMGQ5ZjU4YzczMjEzYmRjODNiZWJkMDJmN2YgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJE
LmNwcApAQCAtODYsNyArODYsNyBAQCB2b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6ZHJh
d0ZvY3VzSWZOZWVkZWRJbnRlcm5hbChjb25zdCBQYXRoJiBwYXRoLCBFbGVtZQogICAgIGF1dG8q
IGNvbnRleHQgPSBkcmF3aW5nQ29udGV4dCgpOwogICAgIGlmICghZWxlbWVudC5mb2N1c2VkKCkg
fHwgIXN0YXRlKCkuaGFzSW52ZXJ0aWJsZVRyYW5zZm9ybSB8fCBwYXRoLmlzRW1wdHkoKSB8fCAh
ZWxlbWVudC5pc0Rlc2NlbmRhbnRPZihjYW52YXMoKSkgfHwgIWNvbnRleHQpCiAgICAgICAgIHJl
dHVybjsKLSAgICBjb250ZXh0LT5kcmF3Rm9jdXNSaW5nKHBhdGgsIDEsIDEsIFJlbmRlclRoZW1l
Ojpmb2N1c1JpbmdDb2xvcihlbGVtZW50LmRvY3VtZW50KCkuc3R5bGVDb2xvck9wdGlvbnMoKSkp
OworICAgIGNvbnRleHQtPmRyYXdGb2N1c1JpbmcocGF0aCwgMSwgMSwgUmVuZGVyVGhlbWU6OmZv
Y3VzUmluZ0NvbG9yKGVsZW1lbnQuZG9jdW1lbnQoKS5zdHlsZUNvbG9yT3B0aW9ucyhjYW52YXMo
KS5jb21wdXRlZFN0eWxlKCkpKSk7CiB9CiAKIFN0cmluZyBDYW52YXNSZW5kZXJpbmdDb250ZXh0
MkQ6OmZvbnQoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3Rvck92ZXJsYXkuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvck92
ZXJsYXkuY3BwCmluZGV4IGQ1ZGVmOTBmMTZmODgyZjgxNGE2YmNkODY3NWI3OGM2NGRkNGI5MWMu
LmRlYzcxZTVmZTg0MDEyZDM5YjAwNzQ4OTY4NzExNDBhYWQwODYxNjUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JPdmVybGF5LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yT3ZlcmxheS5jcHAKQEAgLTE4MCwxMiArMTgwLDEz
IEBAIHZvaWQgSW5zcGVjdG9yT3ZlcmxheTo6cGFpbnQoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0
KQogICAgIGlmICghc2hvdWxkU2hvd092ZXJsYXkoKSkKICAgICAgICAgcmV0dXJuOwogCisgICAg
R3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKGNvbnRleHQpOworICAgIEZyYW1l
VmlldyogdmlldyA9IG92ZXJsYXlQYWdlKCktPm1haW5GcmFtZSgpLnZpZXcoKTsKKwogI2lmIFBM
QVRGT1JNKE1BQykKLSAgICBMb2NhbERlZmF1bHRTeXN0ZW1BcHBlYXJhbmNlIGxvY2FsQXBwZWFy
YW5jZShtX3BhZ2UubWFpbkZyYW1lKCkuZG9jdW1lbnQoKS0+dXNlRGFya0FwcGVhcmFuY2UoKSk7
CisgICAgTG9jYWxEZWZhdWx0U3lzdGVtQXBwZWFyYW5jZSBsb2NhbEFwcGVhcmFuY2Uodmlldy0+
cmVuZGVyVmlldygpLT51c2VEYXJrQXBwZWFyYW5jZSgpKTsKICNlbmRpZgogCi0gICAgR3JhcGhp
Y3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKGNvbnRleHQpOwotICAgIEZyYW1lVmlldyog
dmlldyA9IG92ZXJsYXlQYWdlKCktPm1haW5GcmFtZSgpLnZpZXcoKTsKICAgICB2aWV3LT51cGRh
dGVMYXlvdXRBbmRTdHlsZUlmTmVlZGVkUmVjdXJzaXZlKCk7CiAgICAgdmlldy0+cGFpbnQoY29u
dGV4dCwgSW50UmVjdCgwLCAwLCB2aWV3LT53aWR0aCgpLCB2aWV3LT5oZWlnaHQoKSkpOwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCmluZGV4IDNlNjI0NmE1NTRlNjk3YTY4NWJmN2YyYjRm
MGI1ODUxZTg1NzA3NWIuLjIwZDc2MTVmZWYwMDVkYWIzOGQ3NDRjMzJiOWYxNmVjYmJkMTJiOWEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAKQEAgLTIwNDYsOSArMjA0Niw3IEBAIGJvb2wg
RnJhbWVWaWV3OjpzaG91bGRTZXRDdXJzb3IoKSBjb25zdAogCiBib29sIEZyYW1lVmlldzo6dXNl
RGFya0FwcGVhcmFuY2UoKSBjb25zdAogewotICAgIEFTU0VSVChmcmFtZSgpLmRvY3VtZW50KCkp
OwotICAgIGF1dG8mIGRvY3VtZW50ID0gKmZyYW1lKCkuZG9jdW1lbnQoKTsKLSAgICByZXR1cm4g
ZG9jdW1lbnQudXNlRGFya0FwcGVhcmFuY2UoKTsKKyAgICByZXR1cm4gcmVuZGVyVmlldygpLT51
c2VEYXJrQXBwZWFyYW5jZSgpOwogfQogCiBib29sIEZyYW1lVmlldzo6c2Nyb2xsQ29udGVudHNG
YXN0UGF0aChjb25zdCBJbnRTaXplJiBzY3JvbGxEZWx0YSwgY29uc3QgSW50UmVjdCYgcmVjdFRv
U2Nyb2xsLCBjb25zdCBJbnRSZWN0JiBjbGlwUmVjdCkKQEAgLTM5MTEsOCArMzkwOSw3IEBAIHZv
aWQgRnJhbWVWaWV3OjpwYWludFNjcm9sbENvcm5lcihHcmFwaGljc0NvbnRleHQmIGNvbnRleHQs
IGNvbnN0IEludFJlY3QmIGNvcm5lCiAjaWYgUExBVEZPUk0oTUFDKQogICAgIC8vIElmIGRhcmsg
YXBwZWFyYW5jZSBpcyB1c2VkIG9yIHRoZSBvdmVybGF5IHN0eWxlIGlzIGxpZ2h0IChiZWNhdXNl
IG9mIGEgZGFyayBwYWdlIGJhY2tncm91bmQpLCBzZXQgdGhlIGRhcmsgYXBwcGVhcmFuY2UuCiAg
ICAgLy8gS2VlcCB0aGlzIGluIHN5bmMgd2l0aCBTY3JvbGxBbmltYXRvck1hYydzIGVmZmVjdGl2
ZUFwcGVhcmFuY2VGb3JTY3JvbGxlckltcDouCi0gICAgYXV0byogZG9jdW1lbnQgPSBmcmFtZSgp
LmRvY3VtZW50KCk7Ci0gICAgYm9vbCB1c2VEYXJrQXBwZWFyYW5jZSA9IChkb2N1bWVudCAmJiBk
b2N1bWVudC0+dXNlRGFya0FwcGVhcmFuY2UoKSkgfHwgc2Nyb2xsYmFyT3ZlcmxheVN0eWxlKCkg
PT0gV2ViQ29yZTo6U2Nyb2xsYmFyT3ZlcmxheVN0eWxlTGlnaHQ7CisgICAgYm9vbCB1c2VEYXJr
QXBwZWFyYW5jZSA9IHJlbmRlclZpZXcoKS0+dXNlRGFya0FwcGVhcmFuY2UoKSB8fCBzY3JvbGxi
YXJPdmVybGF5U3R5bGUoKSA9PSBXZWJDb3JlOjpTY3JvbGxiYXJPdmVybGF5U3R5bGVMaWdodDsK
ICAgICBMb2NhbERlZmF1bHRTeXN0ZW1BcHBlYXJhbmNlIGxvY2FsQXBwZWFyYW5jZSh1c2VEYXJr
QXBwZWFyYW5jZSk7CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWFjL0RyYWdJbWFnZU1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9EcmFn
SW1hZ2VNYWMubW0KaW5kZXggMTFjZGEyNGQwYzk2YTcxYWM4ZDFiMjIyMjUxYWNkOWUzM2U4ZjIx
MC4uOWMzMGY3OWM4NGQzYzdkODY1ZDQxMTU1MzkxMzY3YzhmNDQ0YTZkYSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL0RyYWdJbWFnZU1hYy5tbQorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tYWMvRHJhZ0ltYWdlTWFjLm1tCkBAIC0zMDAsNyArMzAwLDcgQEAg
RHJhZ0ltYWdlUmVmIGNyZWF0ZURyYWdJbWFnZUZvckxpbmsoRWxlbWVudCYgZWxlbWVudCwgVVJM
JiB1cmwsIGNvbnN0IFN0cmluZyYgdGkKIHsKICAgICBMaW5rSW1hZ2VMYXlvdXQgbGF5b3V0KHVy
bCwgdGl0bGUpOwogCi0gICAgTG9jYWxEZWZhdWx0U3lzdGVtQXBwZWFyYW5jZSBsb2NhbEFwcGVh
cmFuY2UoZWxlbWVudC5kb2N1bWVudCgpLnVzZURhcmtBcHBlYXJhbmNlKCkpOworICAgIExvY2Fs
RGVmYXVsdFN5c3RlbUFwcGVhcmFuY2UgbG9jYWxBcHBlYXJhbmNlKGVsZW1lbnQuZG9jdW1lbnQo
KS51c2VEYXJrQXBwZWFyYW5jZShlbGVtZW50LmNvbXB1dGVkU3R5bGUoKSkpOwogCiAgICAgYXV0
byBpbWFnZVNpemUgPSBsYXlvdXQuYm91bmRpbmdSZWN0LnNpemUoKTsKICNpZiBfX01BQ19PU19Y
X1ZFUlNJT05fTUlOX1JFUVVJUkVEIDwgMTAxMzAwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvSW5saW5lRmxvd0JveC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
SW5saW5lRmxvd0JveC5jcHAKaW5kZXggZDc0NTgxMThhMmI4NWUxNDJjM2RkMDU1YWFlZGM4MmNk
ZmZlNWM4NS4uMDNlNDFlNzE1OTIwMGFhY2YyY2Y4OThiZDJiMmY5YzI4NjA2YWI5NSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZUZsb3dCb3guY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVGbG93Qm94LmNwcApAQCAtMTM3Miw3ICsxMzcy
LDcgQEAgdm9pZCBJbmxpbmVGbG93Qm94OjpwYWludEJveERlY29yYXRpb25zKFBhaW50SW5mbyYg
cGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2ludCYKICAgICBDb2xvciBjb2xvciA9IGxpbmVTdHls
ZS52aXNpdGVkRGVwZW5kZW50Q29sb3IoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQ29sb3IpOwogCiAg
ICAgQ29tcG9zaXRlT3BlcmF0b3IgY29tcG9zaXRlT3AgPSBDb21wb3NpdGVTb3VyY2VPdmVyOwot
ICAgIGlmIChyZW5kZXJlcigpLmRvY3VtZW50KCkuc2V0dGluZ3MoKS5wdW5jaE91dFdoaXRlQmFj
a2dyb3VuZHNJbkRhcmtNb2RlKCkgJiYgQ29sb3I6OmlzV2hpdGVDb2xvcihjb2xvcikgJiYgcmVu
ZGVyZXIoKS50aGVtZSgpLnVzaW5nRGFya0FwcGVhcmFuY2UocmVuZGVyZXIoKSkpCisgICAgaWYg
KHJlbmRlcmVyKCkuZG9jdW1lbnQoKS5zZXR0aW5ncygpLnB1bmNoT3V0V2hpdGVCYWNrZ3JvdW5k
c0luRGFya01vZGUoKSAmJiBDb2xvcjo6aXNXaGl0ZUNvbG9yKGNvbG9yKSAmJiByZW5kZXJlcigp
LnVzZURhcmtBcHBlYXJhbmNlKCkpCiAgICAgICAgIGNvbXBvc2l0ZU9wID0gQ29tcG9zaXRlRGVz
dGluYXRpb25PdXQ7CiAKICAgICBjb2xvciA9IGxpbmVTdHlsZS5jb2xvckJ5QXBwbHlpbmdDb2xv
ckZpbHRlcihjb2xvcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5s
aW5lVGV4dEJveC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lVGV4dEJveC5j
cHAKaW5kZXggNTAzOWUyYWFhY2ViMTk1OTNiZTk0OTdlOWVlMmJmMDc5M2Y3OTk3My4uMDhlYjAz
OTc2YzJlMTZiZDQ5OWE3MDZmMGIwYjE4NDk1NTZjMjlhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL0lubGluZVRleHRCb3guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9JbmxpbmVUZXh0Qm94LmNwcApAQCAtNzE2LDcgKzcxNiw3IEBAIHZvaWQgSW5saW5l
VGV4dEJveDo6cGFpbnRQbGF0Zm9ybURvY3VtZW50TWFya2VyKEdyYXBoaWNzQ29udGV4dCYgY29u
dGV4dCwgY29uc3QKICAgICBhdXRvIGJvdW5kcyA9IGNhbGN1bGF0ZURvY3VtZW50TWFya2VyQm91
bmRzKG1hcmtlZFRleHQpOwogCiAgICAgYXV0byBsaW5lU3R5bGVGb3JNYXJrZWRUZXh0VHlwZSA9
IFsmXSgpIC0+IERvY3VtZW50TWFya2VyTGluZVN0eWxlIHsKLSAgICAgICAgYm9vbCBzaG91bGRV
c2VEYXJrQXBwZWFyYW5jZSA9IHJlbmRlcmVyKCkuZG9jdW1lbnQoKS51c2VEYXJrQXBwZWFyYW5j
ZSgpOworICAgICAgICBib29sIHNob3VsZFVzZURhcmtBcHBlYXJhbmNlID0gcmVuZGVyZXIoKS51
c2VEYXJrQXBwZWFyYW5jZSgpOwogICAgICAgICBzd2l0Y2ggKG1hcmtlZFRleHQudHlwZSkgewog
ICAgICAgICBjYXNlIE1hcmtlZFRleHQ6OlNwZWxsaW5nRXJyb3I6CiAgICAgICAgICAgICByZXR1
cm4geyBEb2N1bWVudE1hcmtlckxpbmVTdHlsZTo6TW9kZTo6U3BlbGxpbmcsIHNob3VsZFVzZURh
cmtBcHBlYXJhbmNlIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyQm94LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3BwCmluZGV4
IGNhNmU3YzE0NWZiZmUyN2UwNzRjYjExZmNlMzhhMjI4MzYwMDMwNjAuLjBmMTJhZDgwYjk0ZDBh
ZTRlZjMyZTJiMzQxMjBhZTI5MTM5Y2E3ZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJCb3guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJCb3guY3BwCkBAIC0xMjA3LDcgKzEyMDcsNyBAQCB2b2lkIFJlbmRlckJveDo6cGFpbnRSb290
Qm94RmlsbExheWVycyhjb25zdCBQYWludEluZm8mIHBhaW50SW5mbykKICAgICBhdXRvIGNvbG9y
ID0gc3R5bGUudmlzaXRlZERlcGVuZGVudENvbG9yKENTU1Byb3BlcnR5QmFja2dyb3VuZENvbG9y
KTsKIAogICAgIENvbXBvc2l0ZU9wZXJhdG9yIGNvbXBvc2l0ZU9wID0gQ29tcG9zaXRlU291cmNl
T3ZlcjsKLSAgICBpZiAoZG9jdW1lbnQoKS5zZXR0aW5ncygpLnB1bmNoT3V0V2hpdGVCYWNrZ3Jv
dW5kc0luRGFya01vZGUoKSAmJiBDb2xvcjo6aXNXaGl0ZUNvbG9yKGNvbG9yKSAmJiB0aGVtZSgp
LnVzaW5nRGFya0FwcGVhcmFuY2UoKnRoaXMpKQorICAgIGlmIChkb2N1bWVudCgpLnNldHRpbmdz
KCkucHVuY2hPdXRXaGl0ZUJhY2tncm91bmRzSW5EYXJrTW9kZSgpICYmIENvbG9yOjppc1doaXRl
Q29sb3IoY29sb3IpICYmIHVzZURhcmtBcHBlYXJhbmNlKCkpCiAgICAgICAgIGNvbXBvc2l0ZU9w
ID0gQ29tcG9zaXRlRGVzdGluYXRpb25PdXQ7CiAKICAgICBwYWludEZpbGxMYXllcnMocGFpbnRJ
bmZvLCBzdHlsZS5jb2xvckJ5QXBwbHlpbmdDb2xvckZpbHRlcihjb2xvciksIHN0eWxlLmJhY2tn
cm91bmRMYXllcnMoKSwgdmlldygpLmJhY2tncm91bmRSZWN0KCksIEJhY2tncm91bmRCbGVlZE5v
bmUsIGNvbXBvc2l0ZU9wLCByb290QmFja2dyb3VuZFJlbmRlcmVyKTsKQEAgLTEzNDEsNyArMTM0
MSw3IEBAIHZvaWQgUmVuZGVyQm94OjpwYWludEJhY2tncm91bmQoY29uc3QgUGFpbnRJbmZvJiBw
YWludEluZm8sIGNvbnN0IExheW91dFJlY3QmIHBhCiAgICAgQ29sb3IgYmFja2dyb3VuZENvbG9y
ID0gc3R5bGUoKS52aXNpdGVkRGVwZW5kZW50Q29sb3IoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQ29s
b3IpOwogCiAgICAgQ29tcG9zaXRlT3BlcmF0b3IgY29tcG9zaXRlT3AgPSBDb21wb3NpdGVTb3Vy
Y2VPdmVyOwotICAgIGlmIChkb2N1bWVudCgpLnNldHRpbmdzKCkucHVuY2hPdXRXaGl0ZUJhY2tn
cm91bmRzSW5EYXJrTW9kZSgpICYmIENvbG9yOjppc1doaXRlQ29sb3IoYmFja2dyb3VuZENvbG9y
KSAmJiB0aGVtZSgpLnVzaW5nRGFya0FwcGVhcmFuY2UoKnRoaXMpKQorICAgIGlmIChkb2N1bWVu
dCgpLnNldHRpbmdzKCkucHVuY2hPdXRXaGl0ZUJhY2tncm91bmRzSW5EYXJrTW9kZSgpICYmIENv
bG9yOjppc1doaXRlQ29sb3IoYmFja2dyb3VuZENvbG9yKSAmJiB1c2VEYXJrQXBwZWFyYW5jZSgp
KQogICAgICAgICBjb21wb3NpdGVPcCA9IENvbXBvc2l0ZURlc3RpbmF0aW9uT3V0OwogCiAgICAg
cGFpbnRGaWxsTGF5ZXJzKHBhaW50SW5mbywgc3R5bGUoKS5jb2xvckJ5QXBwbHlpbmdDb2xvckZp
bHRlcihiYWNrZ3JvdW5kQ29sb3IpLCBzdHlsZSgpLmJhY2tncm91bmRMYXllcnMoKSwgcGFpbnRS
ZWN0LCBibGVlZEF2b2lkYW5jZSwgY29tcG9zaXRlT3ApOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckVsZW1lbnQuY3BwCmluZGV4IGJmOTdjMDgyMjVjYmE5NjgyNzEyMzI4YWQ1OGU5
NjA3MzgwMTM5YTAuLjkwOGI4NWE4OGQ1NGI5MzZiNzE1YWI5YWE2NDMxNjc0NDQzM2RiNDEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbGVtZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5jcHAKQEAgLTEzNzQsOCAr
MTM3NCw4IEBAIENvbG9yIFJlbmRlckVsZW1lbnQ6OnNlbGVjdGlvbkNvbG9yKENTU1Byb3BlcnR5
SUQgY29sb3JQcm9wZXJ0eSkgY29uc3QKICAgICB9CiAKICAgICBpZiAoZnJhbWUoKS5zZWxlY3Rp
b24oKS5pc0ZvY3VzZWRBbmRBY3RpdmUoKSkKLSAgICAgICAgcmV0dXJuIHRoZW1lKCkuYWN0aXZl
U2VsZWN0aW9uRm9yZWdyb3VuZENvbG9yKGRvY3VtZW50KCkuc3R5bGVDb2xvck9wdGlvbnMoKSk7
Ci0gICAgcmV0dXJuIHRoZW1lKCkuaW5hY3RpdmVTZWxlY3Rpb25Gb3JlZ3JvdW5kQ29sb3IoZG9j
dW1lbnQoKS5zdHlsZUNvbG9yT3B0aW9ucygpKTsKKyAgICAgICAgcmV0dXJuIHRoZW1lKCkuYWN0
aXZlU2VsZWN0aW9uRm9yZWdyb3VuZENvbG9yKHN0eWxlQ29sb3JPcHRpb25zKCkpOworICAgIHJl
dHVybiB0aGVtZSgpLmluYWN0aXZlU2VsZWN0aW9uRm9yZWdyb3VuZENvbG9yKHN0eWxlQ29sb3JP
cHRpb25zKCkpOwogfQogCiBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+IFJlbmRlckVsZW1l
bnQ6OnNlbGVjdGlvblBzZXVkb1N0eWxlKCkgY29uc3QKQEAgLTE0MDksMTUgKzE0MDksMTUgQEAg
Q29sb3IgUmVuZGVyRWxlbWVudDo6c2VsZWN0aW9uQmFja2dyb3VuZENvbG9yKCkgY29uc3QKICAg
ICAgICAgcmV0dXJuIENvbG9yKCk7CiAKICAgICBpZiAoZnJhbWUoKS5zZWxlY3Rpb24oKS5zaG91
bGRTaG93QmxvY2tDdXJzb3IoKSAmJiBmcmFtZSgpLnNlbGVjdGlvbigpLmlzQ2FyZXQoKSkKLSAg
ICAgICAgcmV0dXJuIHRoZW1lKCkudHJhbnNmb3JtU2VsZWN0aW9uQmFja2dyb3VuZENvbG9yKHN0
eWxlKCkudmlzaXRlZERlcGVuZGVudENvbG9yV2l0aENvbG9yRmlsdGVyKENTU1Byb3BlcnR5Q29s
b3IpLCBkb2N1bWVudCgpLnN0eWxlQ29sb3JPcHRpb25zKCkpOworICAgICAgICByZXR1cm4gdGhl
bWUoKS50cmFuc2Zvcm1TZWxlY3Rpb25CYWNrZ3JvdW5kQ29sb3Ioc3R5bGUoKS52aXNpdGVkRGVw
ZW5kZW50Q29sb3JXaXRoQ29sb3JGaWx0ZXIoQ1NTUHJvcGVydHlDb2xvciksIHN0eWxlQ29sb3JP
cHRpb25zKCkpOwogCiAgICAgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBwc2V1ZG9TdHls
ZSA9IHNlbGVjdGlvblBzZXVkb1N0eWxlKCk7CiAgICAgaWYgKHBzZXVkb1N0eWxlICYmIHBzZXVk
b1N0eWxlLT52aXNpdGVkRGVwZW5kZW50Q29sb3JXaXRoQ29sb3JGaWx0ZXIoQ1NTUHJvcGVydHlC
YWNrZ3JvdW5kQ29sb3IpLmlzVmFsaWQoKSkKLSAgICAgICAgcmV0dXJuIHRoZW1lKCkudHJhbnNm
b3JtU2VsZWN0aW9uQmFja2dyb3VuZENvbG9yKHBzZXVkb1N0eWxlLT52aXNpdGVkRGVwZW5kZW50
Q29sb3JXaXRoQ29sb3JGaWx0ZXIoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQ29sb3IpLCBkb2N1bWVu
dCgpLnN0eWxlQ29sb3JPcHRpb25zKCkpOworICAgICAgICByZXR1cm4gdGhlbWUoKS50cmFuc2Zv
cm1TZWxlY3Rpb25CYWNrZ3JvdW5kQ29sb3IocHNldWRvU3R5bGUtPnZpc2l0ZWREZXBlbmRlbnRD
b2xvcldpdGhDb2xvckZpbHRlcihDU1NQcm9wZXJ0eUJhY2tncm91bmRDb2xvciksIHN0eWxlQ29s
b3JPcHRpb25zKCkpOwogCiAgICAgaWYgKGZyYW1lKCkuc2VsZWN0aW9uKCkuaXNGb2N1c2VkQW5k
QWN0aXZlKCkpCi0gICAgICAgIHJldHVybiB0aGVtZSgpLmFjdGl2ZVNlbGVjdGlvbkJhY2tncm91
bmRDb2xvcihkb2N1bWVudCgpLnN0eWxlQ29sb3JPcHRpb25zKCkpOwotICAgIHJldHVybiB0aGVt
ZSgpLmluYWN0aXZlU2VsZWN0aW9uQmFja2dyb3VuZENvbG9yKGRvY3VtZW50KCkuc3R5bGVDb2xv
ck9wdGlvbnMoKSk7CisgICAgICAgIHJldHVybiB0aGVtZSgpLmFjdGl2ZVNlbGVjdGlvbkJhY2tn
cm91bmRDb2xvcihzdHlsZUNvbG9yT3B0aW9ucygpKTsKKyAgICByZXR1cm4gdGhlbWUoKS5pbmFj
dGl2ZVNlbGVjdGlvbkJhY2tncm91bmRDb2xvcihzdHlsZUNvbG9yT3B0aW9ucygpKTsKIH0KIAog
Ym9vbCBSZW5kZXJFbGVtZW50OjpnZXRMZWFkaW5nQ29ybmVyKEZsb2F0UG9pbnQmIHBvaW50LCBi
b29sJiBpbnNpZGVGaXhlZCkgY29uc3QKQEAgLTE4MzgsOSArMTgzOCw5IEBAIHZvaWQgUmVuZGVy
RWxlbWVudDo6cGFpbnRGb2N1c1JpbmcoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IFJlbmRl
clN0eWxlJiBzdHlsCiAgICAgICAgICAgICBmb3IgKGF1dG8gcmVjdCA6IHBpeGVsU25hcHBlZEZv
Y3VzUmluZ1JlY3RzKQogICAgICAgICAgICAgICAgIHBhdGguYWRkUmVjdChyZWN0KTsKICAgICAg
ICAgfQotICAgICAgICBwYWludEluZm8uY29udGV4dCgpLmRyYXdGb2N1c1JpbmcocGF0aCwgcGFn
ZSgpLmZvY3VzQ29udHJvbGxlcigpLnRpbWVTaW5jZUZvY3VzV2FzU2V0KCkuc2Vjb25kcygpLCBu
ZWVkc1JlcGFpbnQsIFJlbmRlclRoZW1lOjpmb2N1c1JpbmdDb2xvcihkb2N1bWVudCgpLnN0eWxl
Q29sb3JPcHRpb25zKCkpKTsKKyAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQoKS5kcmF3Rm9jdXNS
aW5nKHBhdGgsIHBhZ2UoKS5mb2N1c0NvbnRyb2xsZXIoKS50aW1lU2luY2VGb2N1c1dhc1NldCgp
LnNlY29uZHMoKSwgbmVlZHNSZXBhaW50LCBSZW5kZXJUaGVtZTo6Zm9jdXNSaW5nQ29sb3Ioc3R5
bGVDb2xvck9wdGlvbnMoKSkpOwogICAgIH0gZWxzZQotICAgICAgICBwYWludEluZm8uY29udGV4
dCgpLmRyYXdGb2N1c1JpbmcocGl4ZWxTbmFwcGVkRm9jdXNSaW5nUmVjdHMsIHBhZ2UoKS5mb2N1
c0NvbnRyb2xsZXIoKS50aW1lU2luY2VGb2N1c1dhc1NldCgpLnNlY29uZHMoKSwgbmVlZHNSZXBh
aW50LCBSZW5kZXJUaGVtZTo6Zm9jdXNSaW5nQ29sb3IoZG9jdW1lbnQoKS5zdHlsZUNvbG9yT3B0
aW9ucygpKSk7CisgICAgICAgIHBhaW50SW5mby5jb250ZXh0KCkuZHJhd0ZvY3VzUmluZyhwaXhl
bFNuYXBwZWRGb2N1c1JpbmdSZWN0cywgcGFnZSgpLmZvY3VzQ29udHJvbGxlcigpLnRpbWVTaW5j
ZUZvY3VzV2FzU2V0KCkuc2Vjb25kcygpLCBuZWVkc1JlcGFpbnQsIFJlbmRlclRoZW1lOjpmb2N1
c1JpbmdDb2xvcihzdHlsZUNvbG9yT3B0aW9ucygpKSk7CiAgICAgaWYgKG5lZWRzUmVwYWludCkK
ICAgICAgICAgcGFnZSgpLmZvY3VzQ29udHJvbGxlcigpLnNldEZvY3VzZWRFbGVtZW50TmVlZHNS
ZXBhaW50KCk7CiAjZWxzZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckltYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZS5jcHAK
aW5kZXggODEwOWViZmZkMjFlZDdjM2U0ZGE2YWYyOGQ4YjlkMGMzNTBhMzkxMy4uYTBkMmI3YjQ3
ZTZjMjQ3N2Y4NzE2MTQzOTkwZTJkZDNkNjUxN2E5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckltYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVySW1hZ2UuY3BwCkBAIC01NzQsNyArNTc0LDcgQEAgdm9pZCBSZW5kZXJJbWFnZTo6
cGFpbnRBcmVhRWxlbWVudEZvY3VzUmluZyhQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5
b3V0UG8KIAogI2lmIFBMQVRGT1JNKE1BQykKICAgICBib29sIG5lZWRzUmVwYWludDsKLSAgICBw
YWludEluZm8uY29udGV4dCgpLmRyYXdGb2N1c1JpbmcocGF0aCwgcGFnZSgpLmZvY3VzQ29udHJv
bGxlcigpLnRpbWVTaW5jZUZvY3VzV2FzU2V0KCkuc2Vjb25kcygpLCBuZWVkc1JlcGFpbnQsIFJl
bmRlclRoZW1lOjpmb2N1c1JpbmdDb2xvcihkb2N1bWVudCgpLnN0eWxlQ29sb3JPcHRpb25zKCkp
KTsKKyAgICBwYWludEluZm8uY29udGV4dCgpLmRyYXdGb2N1c1JpbmcocGF0aCwgcGFnZSgpLmZv
Y3VzQ29udHJvbGxlcigpLnRpbWVTaW5jZUZvY3VzV2FzU2V0KCkuc2Vjb25kcygpLCBuZWVkc1Jl
cGFpbnQsIFJlbmRlclRoZW1lOjpmb2N1c1JpbmdDb2xvcihzdHlsZUNvbG9yT3B0aW9ucygpKSk7
CiAgICAgaWYgKG5lZWRzUmVwYWludCkKICAgICAgICAgcGFnZSgpLmZvY3VzQ29udHJvbGxlcigp
LnNldEZvY3VzZWRFbGVtZW50TmVlZHNSZXBhaW50KCk7CiAjZWxzZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcAppbmRleCA4OGQ2ZTAxZGQ2ZWZj
NmUyZjdhOWJjMjQzMzlkNDg0NGFkZjJhZDdhLi5iYjdiMTllYmM4Y2E2MWE0MmI0ZjBiMzkxY2Nl
NzFlNDAwZDA0NTc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
TGF5ZXJCYWNraW5nLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5
ZXJCYWNraW5nLmNwcApAQCAtMjU0MSw3ICsyNTQxLDcgQEAgdm9pZCBSZW5kZXJMYXllckJhY2tp
bmc6OnBhaW50Q29udGVudHMoY29uc3QgR3JhcGhpY3NMYXllciogZ3JhcGhpY3NMYXllciwgR3Jh
cGgKICNlbmRpZgogCiAjaWYgUExBVEZPUk0oTUFDKQotICAgIExvY2FsRGVmYXVsdFN5c3RlbUFw
cGVhcmFuY2UgbG9jYWxBcHBlYXJhbmNlKHJlbmRlcmVyKCkuZG9jdW1lbnQoKS51c2VEYXJrQXBw
ZWFyYW5jZSgpKTsKKyAgICBMb2NhbERlZmF1bHRTeXN0ZW1BcHBlYXJhbmNlIGxvY2FsQXBwZWFy
YW5jZShyZW5kZXJlcigpLnVzZURhcmtBcHBlYXJhbmNlKCkpOwogI2VuZGlmCiAKICAgICAvLyBU
aGUgZGlydHlSZWN0IGlzIGluIHRoZSBjb29yZHMgb2YgdGhlIHBhaW50aW5nIHJvb3QuCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuY3BwCmlu
ZGV4IGI2NTVmZjI1YzlhOTU4MDYwNjQ4YmI3YmVkZjIwOWY5YzUwMGIzYzguLjA5MmI1MDA3NWVi
MzkxYWZkZDY2ZTUwYTJiMmFlYzgyY2I4MjE4ZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuY3BwCkBAIC0yNzgyLDcgKzI3ODIsNyBA
QCB2b2lkIHBhaW50U2Nyb2xsYmFyKFNjcm9sbGJhciogc2Nyb2xsYmFyLCBHcmFwaGljc0NvbnRl
eHQmIGNvbnRleHQsIGNvbnN0IEludFJlYwogdm9pZCBSZW5kZXJMYXllckNvbXBvc2l0b3I6OnBh
aW50Q29udGVudHMoY29uc3QgR3JhcGhpY3NMYXllciogZ3JhcGhpY3NMYXllciwgR3JhcGhpY3ND
b250ZXh0JiBjb250ZXh0LCBHcmFwaGljc0xheWVyUGFpbnRpbmdQaGFzZSwgY29uc3QgRmxvYXRS
ZWN0JiBjbGlwLCBHcmFwaGljc0xheWVyUGFpbnRCZWhhdmlvcikKIHsKICNpZiBQTEFURk9STShN
QUMpCi0gICAgTG9jYWxEZWZhdWx0U3lzdGVtQXBwZWFyYW5jZSBsb2NhbEFwcGVhcmFuY2UobV9y
ZW5kZXJWaWV3LmRvY3VtZW50KCkudXNlRGFya0FwcGVhcmFuY2UoKSk7CisgICAgTG9jYWxEZWZh
dWx0U3lzdGVtQXBwZWFyYW5jZSBsb2NhbEFwcGVhcmFuY2UobV9yZW5kZXJWaWV3LnVzZURhcmtB
cHBlYXJhbmNlKCkpOwogI2VuZGlmCiAKICAgICBJbnRSZWN0IHBpeGVsU25hcHBlZFJlY3RGb3JJ
bnRlZ3JhbFBvc2l0aW9uZWRJdGVtcyA9IHNuYXBwZWRJbnRSZWN0KExheW91dFJlY3QoY2xpcCkp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RCb3guY3Bw
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RCb3guY3BwCmluZGV4IGVjZDU1
MTY1ZmZjODE5YzViMzI2YjNlNzZhMjUwNDhkMTUwNGFiMWQuLjUyMDA4MTNlMTk1NjhkYjM4ZWY3
ZDU2Y2Y4ZTgwYzY0NjMxMGEwNTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJMaXN0Qm94LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
TGlzdEJveC5jcHAKQEAgLTQyOCwxMCArNDI4LDEwIEBAIHZvaWQgUmVuZGVyTGlzdEJveDo6cGFp
bnRJdGVtRm9yZWdyb3VuZChQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQm
CiAgICAgQ29sb3IgdGV4dENvbG9yID0gaXRlbVN0eWxlLnZpc2l0ZWREZXBlbmRlbnRDb2xvcldp
dGhDb2xvckZpbHRlcihDU1NQcm9wZXJ0eUNvbG9yKTsKICAgICBpZiAoaXNPcHRpb25FbGVtZW50
ICYmIGRvd25jYXN0PEhUTUxPcHRpb25FbGVtZW50PigqbGlzdEl0ZW1FbGVtZW50KS5zZWxlY3Rl
ZCgpKSB7CiAgICAgICAgIGlmIChmcmFtZSgpLnNlbGVjdGlvbigpLmlzRm9jdXNlZEFuZEFjdGl2
ZSgpICYmIGRvY3VtZW50KCkuZm9jdXNlZEVsZW1lbnQoKSA9PSAmc2VsZWN0RWxlbWVudCgpKQot
ICAgICAgICAgICAgdGV4dENvbG9yID0gdGhlbWUoKS5hY3RpdmVMaXN0Qm94U2VsZWN0aW9uRm9y
ZWdyb3VuZENvbG9yKGRvY3VtZW50KCkuc3R5bGVDb2xvck9wdGlvbnMoKSk7CisgICAgICAgICAg
ICB0ZXh0Q29sb3IgPSB0aGVtZSgpLmFjdGl2ZUxpc3RCb3hTZWxlY3Rpb25Gb3JlZ3JvdW5kQ29s
b3Ioc3R5bGVDb2xvck9wdGlvbnMoKSk7CiAgICAgICAgIC8vIEhvbm9yIHRoZSBmb3JlZ3JvdW5k
IGNvbG9yIGZvciBkaXNhYmxlZCBpdGVtcwogICAgICAgICBlbHNlIGlmICghbGlzdEl0ZW1FbGVt
ZW50LT5pc0Rpc2FibGVkRm9ybUNvbnRyb2woKSAmJiAhc2VsZWN0RWxlbWVudCgpLmlzRGlzYWJs
ZWRGb3JtQ29udHJvbCgpKQotICAgICAgICAgICAgdGV4dENvbG9yID0gdGhlbWUoKS5pbmFjdGl2
ZUxpc3RCb3hTZWxlY3Rpb25Gb3JlZ3JvdW5kQ29sb3IoZG9jdW1lbnQoKS5zdHlsZUNvbG9yT3B0
aW9ucygpKTsKKyAgICAgICAgICAgIHRleHRDb2xvciA9IHRoZW1lKCkuaW5hY3RpdmVMaXN0Qm94
U2VsZWN0aW9uRm9yZWdyb3VuZENvbG9yKHN0eWxlQ29sb3JPcHRpb25zKCkpOwogICAgIH0KIAog
ICAgIHBhaW50SW5mby5jb250ZXh0KCkuc2V0RmlsbENvbG9yKHRleHRDb2xvcik7CkBAIC00NjEs
OSArNDYxLDkgQEAgdm9pZCBSZW5kZXJMaXN0Qm94OjpwYWludEl0ZW1CYWNrZ3JvdW5kKFBhaW50
SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2ludCYKICAgICBDb2xvciBiYWNrQ29sb3I7
CiAgICAgaWYgKGlzPEhUTUxPcHRpb25FbGVtZW50PigqbGlzdEl0ZW1FbGVtZW50KSAmJiBkb3du
Y2FzdDxIVE1MT3B0aW9uRWxlbWVudD4oKmxpc3RJdGVtRWxlbWVudCkuc2VsZWN0ZWQoKSkgewog
ICAgICAgICBpZiAoZnJhbWUoKS5zZWxlY3Rpb24oKS5pc0ZvY3VzZWRBbmRBY3RpdmUoKSAmJiBk
b2N1bWVudCgpLmZvY3VzZWRFbGVtZW50KCkgPT0gJnNlbGVjdEVsZW1lbnQoKSkKLSAgICAgICAg
ICAgIGJhY2tDb2xvciA9IHRoZW1lKCkuYWN0aXZlTGlzdEJveFNlbGVjdGlvbkJhY2tncm91bmRD
b2xvcihkb2N1bWVudCgpLnN0eWxlQ29sb3JPcHRpb25zKCkpOworICAgICAgICAgICAgYmFja0Nv
bG9yID0gdGhlbWUoKS5hY3RpdmVMaXN0Qm94U2VsZWN0aW9uQmFja2dyb3VuZENvbG9yKHN0eWxl
Q29sb3JPcHRpb25zKCkpOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBiYWNrQ29sb3IgPSB0
aGVtZSgpLmluYWN0aXZlTGlzdEJveFNlbGVjdGlvbkJhY2tncm91bmRDb2xvcihkb2N1bWVudCgp
LnN0eWxlQ29sb3JPcHRpb25zKCkpOworICAgICAgICAgICAgYmFja0NvbG9yID0gdGhlbWUoKS5p
bmFjdGl2ZUxpc3RCb3hTZWxlY3Rpb25CYWNrZ3JvdW5kQ29sb3Ioc3R5bGVDb2xvck9wdGlvbnMo
KSk7CiAgICAgfSBlbHNlCiAgICAgICAgIGJhY2tDb2xvciA9IGl0ZW1TdHlsZS52aXNpdGVkRGVw
ZW5kZW50Q29sb3JXaXRoQ29sb3JGaWx0ZXIoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQ29sb3IpOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwCmluZGV4IDc2NDQ0NTBm
MDgwNzc2OGM1MzFmZTJhMjc4OWIxZWJmZjI2MDA5OTYuLjQyNTUxMDVlMjQ0ZmRkNTE3ZjM0OTRi
YWI2OTkyOGIzMjM5N2E0NmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmpl
Y3QuY3BwCkBAIC0xODAxLDYgKzE4MDEsMTYgQEAgQ3Vyc29yRGlyZWN0aXZlIFJlbmRlck9iamVj
dDo6Z2V0Q3Vyc29yKGNvbnN0IExheW91dFBvaW50JiwgQ3Vyc29yJikgY29uc3QKICAgICByZXR1
cm4gU2V0Q3Vyc29yQmFzZWRPblN0eWxlOwogfQogCitib29sIFJlbmRlck9iamVjdDo6dXNlRGFy
a0FwcGVhcmFuY2UoKSBjb25zdAoreworICAgIHJldHVybiBkb2N1bWVudCgpLnVzZURhcmtBcHBl
YXJhbmNlKCZzdHlsZSgpKTsKK30KKworT3B0aW9uU2V0PFN0eWxlQ29sb3I6Ok9wdGlvbnM+IFJl
bmRlck9iamVjdDo6c3R5bGVDb2xvck9wdGlvbnMoKSBjb25zdAoreworICAgIHJldHVybiBkb2N1
bWVudCgpLnN0eWxlQ29sb3JPcHRpb25zKCZzdHlsZSgpKTsKK30KKwogYm9vbCBSZW5kZXJPYmpl
Y3Q6OmNhblVwZGF0ZVNlbGVjdGlvbk9uUm9vdExpbmVCb3hlcygpCiB7CiAgICAgaWYgKG5lZWRz
TGF5b3V0KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2Jq
ZWN0LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmgKaW5kZXggMTNi
MzZkNjc2MDJhMDViZWI0NmViNTc3MzcxOGQ4NWFkYTU4MjhhMC4uMmRjZTlkY2M1NjkxMzA5MWY3
Mjk5NDdmYzZkZjcyNjRhOGU0M2Y1ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlck9iamVjdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJP
YmplY3QuaApAQCAtMTc2LDYgKzE3Niw5IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGxvY2F0
ZUVuY2xvc2luZ0ZyYWdtZW50ZWRGbG93KCk7CiAgICAgfQogCisgICAgV0VCQ09SRV9FWFBPUlQg
Ym9vbCB1c2VEYXJrQXBwZWFyYW5jZSgpIGNvbnN0OworICAgIE9wdGlvblNldDxTdHlsZUNvbG9y
OjpPcHRpb25zPiBzdHlsZUNvbG9yT3B0aW9ucygpIGNvbnN0OworCiAjaWZuZGVmIE5ERUJVRwog
ICAgIHZvaWQgc2V0SGFzQVhPYmplY3QoYm9vbCBmbGFnKSB7IG1faGFzQVhPYmplY3QgPSBmbGFn
OyB9CiAgICAgYm9vbCBoYXNBWE9iamVjdCgpIGNvbnN0IHsgcmV0dXJuIG1faGFzQVhPYmplY3Q7
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZUNlbGwu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlQ2VsbC5jcHAKaW5kZXgg
MzQ1YTdiYjU3ZjY3M2Q2NzUyM2IzMzMxM2ZiYWVlZmYxMDk1YTRhNy4uNzU0MTk3ODdjN2I2Zjdh
OTFmMzYxYzg2ODkzYzgxZjliYWVhNzBiNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlclRhYmxlQ2VsbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclRhYmxlQ2VsbC5jcHAKQEAgLTEyODksNyArMTI4OSw3IEBAIHZvaWQgUmVuZGVyVGFi
bGVDZWxsOjpwYWludEJhY2tncm91bmRzQmVoaW5kQ2VsbChQYWludEluZm8mIHBhaW50SW5mbywg
Y29uc3QgTGF5CiAKICAgICBDb21wb3NpdGVPcGVyYXRvciBjb21wb3NpdGVPcCA9IENvbXBvc2l0
ZVNvdXJjZU92ZXI7CiAgICAgQ29sb3IgY29sb3IgPSBzdHlsZS52aXNpdGVkRGVwZW5kZW50Q29s
b3IoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQ29sb3IpOwotICAgIGlmIChkb2N1bWVudCgpLnNldHRp
bmdzKCkucHVuY2hPdXRXaGl0ZUJhY2tncm91bmRzSW5EYXJrTW9kZSgpICYmIENvbG9yOjppc1do
aXRlQ29sb3IoY29sb3IpICYmIHRoZW1lKCkudXNpbmdEYXJrQXBwZWFyYW5jZSgqdGhpcykpCisg
ICAgaWYgKGRvY3VtZW50KCkuc2V0dGluZ3MoKS5wdW5jaE91dFdoaXRlQmFja2dyb3VuZHNJbkRh
cmtNb2RlKCkgJiYgQ29sb3I6OmlzV2hpdGVDb2xvcihjb2xvcikgJiYgdXNlRGFya0FwcGVhcmFu
Y2UoKSkKICAgICAgICAgY29tcG9zaXRlT3AgPSBDb21wb3NpdGVEZXN0aW5hdGlvbk91dDsKIAog
ICAgIGNvbG9yID0gc3R5bGUuY29sb3JCeUFwcGx5aW5nQ29sb3JGaWx0ZXIoY29sb3IpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZS5jcHAKaW5kZXggYmQ2NmJiM2Y1OTFhMGM3
Yzg0YTljYmY4ZjUzY2NhNmZmZTBiYTg1OS4uMjU3MzkwMzk2ZjUwYTMyMjY2ZjgyYTA0OGU0ODY3
MmM5MzhhMTU1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRo
ZW1lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWUuY3BwCkBA
IC0zMTgsNyArMzE4LDcgQEAgYm9vbCBSZW5kZXJUaGVtZTo6cGFpbnQoY29uc3QgUmVuZGVyQm94
JiBib3gsIENvbnRyb2xTdGF0ZXMmIGNvbnRyb2xTdGF0ZXMsIGNvbnMKICAgICBjYXNlIEJ1dHRv
blBhcnQ6CiAgICAgY2FzZSBJbm5lclNwaW5CdXR0b25QYXJ0OgogICAgICAgICB1cGRhdGVDb250
cm9sU3RhdGVzRm9yUmVuZGVyZXIoYm94LCBjb250cm9sU3RhdGVzKTsKLSAgICAgICAgVGhlbWU6
OnNpbmdsZXRvbigpLnBhaW50KHBhcnQsIGNvbnRyb2xTdGF0ZXMsIHBhaW50SW5mby5jb250ZXh0
KCksIGRldmljZVBpeGVsU25hcHBlZFJlY3QsIGJveC5zdHlsZSgpLmVmZmVjdGl2ZVpvb20oKSwg
JmJveC52aWV3KCkuZnJhbWVWaWV3KCksIGRldmljZVNjYWxlRmFjdG9yLCBwYWdlU2NhbGVGYWN0
b3IsIGJveC5kb2N1bWVudCgpLnVzZVN5c3RlbUFwcGVhcmFuY2UoKSwgYm94LmRvY3VtZW50KCku
dXNlRGFya0FwcGVhcmFuY2UoKSk7CisgICAgICAgIFRoZW1lOjpzaW5nbGV0b24oKS5wYWludChw
YXJ0LCBjb250cm9sU3RhdGVzLCBwYWludEluZm8uY29udGV4dCgpLCBkZXZpY2VQaXhlbFNuYXBw
ZWRSZWN0LCBib3guc3R5bGUoKS5lZmZlY3RpdmVab29tKCksICZib3gudmlldygpLmZyYW1lVmll
dygpLCBkZXZpY2VTY2FsZUZhY3RvciwgcGFnZVNjYWxlRmFjdG9yLCBib3guZG9jdW1lbnQoKS51
c2VTeXN0ZW1BcHBlYXJhbmNlKCksIGJveC51c2VEYXJrQXBwZWFyYW5jZSgpKTsKICAgICAgICAg
cmV0dXJuIGZhbHNlOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIGJyZWFrOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lLmggYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyVGhlbWUuaAppbmRleCA4ZmJhNGRiNDA5Njc0YzcwMzJlNTZiMWVkNWM3
OTY1ODNmNGMwMTU2Li4xMzJhNmU0OWYwOTY2ZDdkNTAzN2NiNWM2YTAzNjRmODM5ODk5OWI5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWUuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWUuaApAQCAtMjYxLDggKzI2MSw2IEBA
IHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgcGFpbnRTeXN0ZW1QcmV2aWV3QmFkZ2UoSW1hZ2Um
LCBjb25zdCBQYWludEluZm8mLCBjb25zdCBGbG9hdFJlY3QmKTsKICNlbmRpZgogCi0gICAgdmly
dHVhbCBib29sIHVzaW5nRGFya0FwcGVhcmFuY2UoY29uc3QgUmVuZGVyT2JqZWN0JikgY29uc3Qg
eyByZXR1cm4gZmFsc2U7IH0KLQogcHJvdGVjdGVkOgogICAgIHZpcnR1YWwgRm9udENhc2NhZGVE
ZXNjcmlwdGlvbiYgY2FjaGVkU3lzdGVtRm9udERlc2NyaXB0aW9uKENTU1ZhbHVlSUQgc3lzdGVt
Rm9udElEKSBjb25zdDsKICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlQ2FjaGVkU3lzdGVtRm9udERl
c2NyaXB0aW9uKENTU1ZhbHVlSUQgc3lzdGVtRm9udElELCBGb250Q2FzY2FkZURlc2NyaXB0aW9u
JikgY29uc3QgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
clRoZW1lTWFjLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVNYWMuaApp
bmRleCBkODU3NjFhYmM5YjEyZGZkZGE1NTQ1ZGQxNGY4MDM0OTYzNzk1MGQ3Li4xZGQyYjFmNWZl
Zjg2ZjhjOTVmODc2YWJmZmY4NjY0ODlmOGNmYWQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVNYWMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyVGhlbWVNYWMuaApAQCAtMTc0LDggKzE3NCw2IEBAIHByaXZhdGU6CiAgICAgYm9v
bCBwYWludEF0dGFjaG1lbnQoY29uc3QgUmVuZGVyT2JqZWN0JiwgY29uc3QgUGFpbnRJbmZvJiwg
Y29uc3QgSW50UmVjdCYpIGZpbmFsOwogI2VuZGlmCiAKLSAgICBib29sIHVzaW5nRGFya0FwcGVh
cmFuY2UoY29uc3QgUmVuZGVyT2JqZWN0JikgY29uc3QgZmluYWw7Ci0KIHByaXZhdGU6CiAgICAg
U3RyaW5nIGZpbGVMaXN0TmFtZUZvcldpZHRoKGNvbnN0IEZpbGVMaXN0KiwgY29uc3QgRm9udENh
c2NhZGUmLCBpbnQgd2lkdGgsIGJvb2wgbXVsdGlwbGVGaWxlc0FsbG93ZWQpIGNvbnN0IGZpbmFs
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVNYWMu
bW0gYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVNYWMubW0KaW5kZXggM2Zi
ZDYwZDYxNzE3OWQ4MGIxOTI2NTlhOWI4ZjBiYzljOWU2Y2RkNS4uZDU1MGU1YjMzZjRhYTRkMmU1
MzM5NWQwZWJlYzkwOGIyZjdjMjdhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlclRoZW1lTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJUaGVtZU1hYy5tbQpAQCAtMjk3LDcgKzI5Nyw3IEBAIFJlbmRlclRoZW1lTWFjOjpSZW5kZXJU
aGVtZU1hYygpCiAKIE5TVmlldyAqUmVuZGVyVGhlbWVNYWM6OmRvY3VtZW50Vmlld0Zvcihjb25z
dCBSZW5kZXJPYmplY3QmIG8pIGNvbnN0CiB7Ci0gICAgTG9jYWxEZWZhdWx0U3lzdGVtQXBwZWFy
YW5jZSBsb2NhbEFwcGVhcmFuY2UodXNpbmdEYXJrQXBwZWFyYW5jZShvKSk7CisgICAgTG9jYWxE
ZWZhdWx0U3lzdGVtQXBwZWFyYW5jZSBsb2NhbEFwcGVhcmFuY2Uoby51c2VEYXJrQXBwZWFyYW5j
ZSgpKTsKICAgICBDb250cm9sU3RhdGVzIHN0YXRlcyhleHRyYWN0Q29udHJvbFN0YXRlc0ZvclJl
bmRlcmVyKG8pKTsKICAgICByZXR1cm4gVGhlbWVNYWM6OmVuc3VyZWRWaWV3KCZvLnZpZXcoKS5m
cmFtZVZpZXcoKSwgc3RhdGVzKTsKIH0KQEAgLTE3MTMsNyArMTcxMyw3IEBAIHZvaWQgUmVuZGVy
VGhlbWVNYWM6OmFkanVzdE1lbnVMaXN0U3R5bGUoU3R5bGVSZXNvbHZlciYgc3R5bGVSZXNvbHZl
ciwgUmVuZGVyU3R5CiAgICAgLy8gU2V0IHRoZSBmb3JlZ3JvdW5kIGNvbG9yIHRvIGJsYWNrIG9y
IGdyYXkgd2hlbiB3ZSBoYXZlIHRoZSBhcXVhIGxvb2suCiAgICAgQ29sb3IgYyA9IENvbG9yOjpk
YXJrR3JheTsKICAgICBpZiAoZSkgewotICAgICAgICBPcHRpb25TZXQ8U3R5bGVDb2xvcjo6T3B0
aW9ucz4gb3B0aW9ucyA9IGUtPmRvY3VtZW50KCkuc3R5bGVDb2xvck9wdGlvbnMoKTsKKyAgICAg
ICAgT3B0aW9uU2V0PFN0eWxlQ29sb3I6Ok9wdGlvbnM+IG9wdGlvbnMgPSBlLT5kb2N1bWVudCgp
LnN0eWxlQ29sb3JPcHRpb25zKCZzdHlsZSk7CiAgICAgICAgIGMgPSAhZS0+aXNEaXNhYmxlZEZv
cm1Db250cm9sKCkgPyBzeXN0ZW1Db2xvcihDU1NWYWx1ZUJ1dHRvbnRleHQsIG9wdGlvbnMpIDog
c3lzdGVtQ29sb3IoQ1NTVmFsdWVHcmF5dGV4dCwgb3B0aW9ucyk7CiAgICAgfQogICAgIHN0eWxl
LnNldENvbG9yKGMpOwpAQCAtMTgwMCw3ICsxODAwLDcgQEAgdm9pZCBSZW5kZXJUaGVtZU1hYzo6
c2V0UG9wdXBCdXR0b25DZWxsU3RhdGUoY29uc3QgUmVuZGVyT2JqZWN0JiBvLCBjb25zdCBJbnRT
aXoKIAogdm9pZCBSZW5kZXJUaGVtZU1hYzo6cGFpbnRDZWxsQW5kU2V0Rm9jdXNlZEVsZW1lbnRO
ZWVkc1JlcGFpbnRJZk5lY2Vzc2FyeShOU0NlbGwqIGNlbGwsIGNvbnN0IFJlbmRlck9iamVjdCYg
cmVuZGVyZXIsIGNvbnN0IFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBGbG9hdFJlY3QmIHJl
Y3QpCiB7Ci0gICAgTG9jYWxEZWZhdWx0U3lzdGVtQXBwZWFyYW5jZSBsb2NhbEFwcGVhcmFuY2Uo
dXNpbmdEYXJrQXBwZWFyYW5jZShyZW5kZXJlcikpOworICAgIExvY2FsRGVmYXVsdFN5c3RlbUFw
cGVhcmFuY2UgbG9jYWxBcHBlYXJhbmNlKHJlbmRlcmVyLnVzZURhcmtBcHBlYXJhbmNlKCkpOwog
ICAgIGJvb2wgc2hvdWxkRHJhd0ZvY3VzUmluZyA9IGlzRm9jdXNlZChyZW5kZXJlcikgJiYgcmVu
ZGVyZXIuc3R5bGUoKS5vdXRsaW5lU3R5bGVJc0F1dG8oKSA9PSBPdXRsaW5lSXNBdXRvOjpPbjsK
ICAgICBib29sIHNob3VsZFVzZUltYWdlQnVmZmVyID0gcmVuZGVyZXIuc3R5bGUoKS5lZmZlY3Rp
dmVab29tKCkgIT0gMSB8fCByZW5kZXJlci5wYWdlKCkucGFnZVNjYWxlRmFjdG9yKCkgIT0gMTsK
ICAgICBib29sIHNob3VsZERyYXdDZWxsID0gdHJ1ZTsKQEAgLTE4ODIsNyArMTg4Miw3IEBAIGJv
b2wgUmVuZGVyVGhlbWVNYWM6OnBhaW50U2xpZGVyVGh1bWIoY29uc3QgUmVuZGVyT2JqZWN0JiBv
LCBjb25zdCBQYWludEluZm8mIHBhCiAgICAgICAgID8gc2xpZGVyVGh1bWJWZXJ0aWNhbCgpCiAg
ICAgICAgIDogc2xpZGVyVGh1bWJIb3Jpem9udGFsKCk7CiAKLSAgICBMb2NhbERlZmF1bHRTeXN0
ZW1BcHBlYXJhbmNlIGxvY2FsQXBwZWFyYW5jZSh1c2luZ0RhcmtBcHBlYXJhbmNlKG8pKTsKKyAg
ICBMb2NhbERlZmF1bHRTeXN0ZW1BcHBlYXJhbmNlIGxvY2FsQXBwZWFyYW5jZShvLnVzZURhcmtB
cHBlYXJhbmNlKCkpOwogCiAgICAgTG9jYWxDdXJyZW50R3JhcGhpY3NDb250ZXh0IGxvY2FsQ29u
dGV4dChwYWludEluZm8uY29udGV4dCgpKTsKIApAQCAtMjk5NCwxMSArMjk5NCw2IEBAIGJvb2wg
UmVuZGVyVGhlbWVNYWM6OnBhaW50QXR0YWNobWVudChjb25zdCBSZW5kZXJPYmplY3QmIHJlbmRl
cmVyLCBjb25zdCBQYWludEluCiAKICNlbmRpZiAvLyBFTkFCTEUoQVRUQUNITUVOVF9FTEVNRU5U
KQogCi1ib29sIFJlbmRlclRoZW1lTWFjOjp1c2luZ0RhcmtBcHBlYXJhbmNlKGNvbnN0IFJlbmRl
ck9iamVjdCYgbykgY29uc3QKLXsKLSAgICByZXR1cm4gby5kb2N1bWVudCgpLnVzZURhcmtBcHBl
YXJhbmNlKCk7Ci19Ci0KIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIFBMQVRG
T1JNKE1BQykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5k
ZXJTdHlsZS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmgK
aW5kZXggOTgxYjhlZWVlYmU5NmE2MWIxYWFkMzYzMjQyZDc0ZTk2ODFjMDNlZC4uODU1NWQwYjlm
NjI0ZDgyMzE0MjYzYjA1MGFlNWM5YWZhYzJjNjYzZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmgKQEAgLTg0LDYgKzg0LDEwIEBACiAjaW5jbHVkZSAi
VGV4dFNpemVBZGp1c3RtZW50LmgiCiAjZW5kaWYKIAorI2lmIEVOQUJMRShEQVJLX01PREVfQ1NT
KQorI2luY2x1ZGUgIlN0eWxlU3VwcG9ydGVkQ29sb3JTY2hlbWVzLmgiCisjZW5kaWYKKwogI2Rl
ZmluZSBTRVRfVkFSKGdyb3VwLCB2YXJpYWJsZSwgdmFsdWUpIGRvIHsgXAogICAgICAgICBpZiAo
IWNvbXBhcmVFcXVhbChncm91cC0+dmFyaWFibGUsIHZhbHVlKSkgXAogICAgICAgICAgICAgZ3Jv
dXAuYWNjZXNzKCkudmFyaWFibGUgPSB2YWx1ZTsgXApAQCAtNjMyLDYgKzYzNiwxMCBAQCBwdWJs
aWM6CiAKICAgICBSdWJ5UG9zaXRpb24gcnVieVBvc2l0aW9uKCkgY29uc3QgeyByZXR1cm4gc3Rh
dGljX2Nhc3Q8UnVieVBvc2l0aW9uPihtX3JhcmVJbmhlcml0ZWREYXRhLT5ydWJ5UG9zaXRpb24p
OyB9CiAKKyNpZiBFTkFCTEUoREFSS19NT0RFX0NTUykKKyAgICBTdHlsZVN1cHBvcnRlZENvbG9y
U2NoZW1lcyBzdXBwb3J0ZWRDb2xvclNjaGVtZXMoKSBjb25zdCB7IHJldHVybiBtX3JhcmVJbmhl
cml0ZWREYXRhLT5zdXBwb3J0ZWRDb2xvclNjaGVtZXM7IH0KKyNlbmRpZgorCiAgICAgVGV4dE9y
aWVudGF0aW9uIHRleHRPcmllbnRhdGlvbigpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PFRl
eHRPcmllbnRhdGlvbj4obV9yYXJlSW5oZXJpdGVkRGF0YS0+dGV4dE9yaWVudGF0aW9uKTsgfQog
CiAgICAgT2JqZWN0Rml0IG9iamVjdEZpdCgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PE9i
amVjdEZpdD4obV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+b2JqZWN0Rml0KTsgfQpAQCAtMTE2NSw2
ICsxMTczLDEwIEBAIHB1YmxpYzoKIAogICAgIHZvaWQgc2V0UnVieVBvc2l0aW9uKFJ1YnlQb3Np
dGlvbiBwb3NpdGlvbikgeyBTRVRfVkFSKG1fcmFyZUluaGVyaXRlZERhdGEsIHJ1YnlQb3NpdGlv
biwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHBvc2l0aW9uKSk7IH0KIAorI2lmIEVOQUJMRShEQVJL
X01PREVfQ1NTKQorICAgIHZvaWQgc2V0U3VwcG9ydGVkQ29sb3JTY2hlbWVzKFN0eWxlU3VwcG9y
dGVkQ29sb3JTY2hlbWVzIHN1cHBvcnRlZCkgeyBTRVRfVkFSKG1fcmFyZUluaGVyaXRlZERhdGEs
IHN1cHBvcnRlZENvbG9yU2NoZW1lcywgc3VwcG9ydGVkKTsgfQorI2VuZGlmCisKICAgICB2b2lk
IHNldEZpbHRlcihjb25zdCBGaWx0ZXJPcGVyYXRpb25zJiBvcHMpIHsgU0VUX05FU1RFRF9WQVIo
bV9yYXJlTm9uSW5oZXJpdGVkRGF0YSwgZmlsdGVyLCBvcGVyYXRpb25zLCBvcHMpOyB9CiAgICAg
dm9pZCBzZXRBcHBsZUNvbG9yRmlsdGVyKGNvbnN0IEZpbHRlck9wZXJhdGlvbnMmIG9wcykgeyBT
RVRfTkVTVEVEX1ZBUihtX3JhcmVJbmhlcml0ZWREYXRhLCBhcHBsZUNvbG9yRmlsdGVyLCBvcGVy
YXRpb25zLCBvcHMpOyB9CiAKQEAgLTE1NzgsNiArMTU5MCwxMCBAQCBwdWJsaWM6CiAgICAgc3Rh
dGljIFF1b3Rlc0RhdGEqIGluaXRpYWxRdW90ZXMoKSB7IHJldHVybiBudWxscHRyOyB9CiAgICAg
c3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyYgaW5pdGlhbENvbnRlbnRBbHRUZXh0KCkgeyByZXR1
cm4gZW1wdHlBdG9tKCk7IH0KIAorI2lmIEVOQUJMRShEQVJLX01PREVfQ1NTKQorICAgIHN0YXRp
YyBTdHlsZVN1cHBvcnRlZENvbG9yU2NoZW1lcyBpbml0aWFsU3VwcG9ydGVkQ29sb3JTY2hlbWVz
KCkgeyByZXR1cm4geyB9OyB9CisjZW5kaWYKKwogI2lmIEVOQUJMRShDU1MzX1RFWFQpCiAgICAg
c3RhdGljIFRleHRJbmRlbnRMaW5lIGluaXRpYWxUZXh0SW5kZW50TGluZSgpIHsgcmV0dXJuIFRl
eHRJbmRlbnRMaW5lOjpGaXJzdExpbmU7IH0KICAgICBzdGF0aWMgVGV4dEluZGVudFR5cGUgaW5p
dGlhbFRleHRJbmRlbnRUeXBlKCkgeyByZXR1cm4gVGV4dEluZGVudFR5cGU6Ok5vcm1hbDsgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlQ29u
c3RhbnRzLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGVDb25z
dGFudHMuaAppbmRleCAxNzZlYjIxM2E3YTZlNzgyZTMxMDc5MGQ1MTBmMGNkMWIzZDllMDI4Li42
NmU1YzdiNDc0MTBhMWIwYWYxMWJlYTQzNmFjOWNiMmE4NDc3MWU0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGVDb25zdGFudHMuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGVDb25zdGFudHMuaApAQCAt
MTAxOCw2ICsxMDE4LDE1IEBAIGVudW0gY2xhc3MgUnVieVBvc2l0aW9uIDogdWludDhfdCB7CiAg
ICAgSW50ZXJDaGFyYWN0ZXIKIH07CiAKKyNpZiBFTkFCTEUoREFSS19NT0RFX0NTUykKK2VudW0g
Y2xhc3MgQ29sb3JTY2hlbWVzIDogdWludDhfdCB7CisgICAgTGlnaHQgPSAxIDw8IDAsCisgICAg
RGFyayA9IDEgPDwgMQorfTsKKworc3RhdGljIGNvbnN0IHNpemVfdCBDb2xvclNjaGVtZXNCaXRz
ID0gMjsKKyNlbmRpZgorCiBzdGF0aWMgY29uc3Qgc2l6ZV90IEdyaWRBdXRvRmxvd0JpdHMgPSA0
OwogZW51bSBJbnRlcm5hbEdyaWRBdXRvRmxvd0FsZ29yaXRobSB7CiAgICAgSW50ZXJuYWxBdXRv
Rmxvd0FsZ29yaXRobVNwYXJzZSA9IDEgPDwgMCwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdHlsZS9TdHlsZVJhcmVJbmhlcml0ZWREYXRhLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVJhcmVJbmhlcml0ZWREYXRhLmNwcAppbmRleCA1ZmI3
OWIzZjk0N2U0NDZiNzBlZjMzODI3Y2M3MjhjYmM4MGViMDZhLi40NWY3MzZhYjI4Mjg3MTk5ZGVk
ZjY3N2ZjYTRmNzY4YmMwYTYyN2M3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3R5bGUvU3R5bGVSYXJlSW5oZXJpdGVkRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N0eWxlL1N0eWxlUmFyZUluaGVyaXRlZERhdGEuY3BwCkBAIC0zMSw2ICszMSw3
IEBACiAjaW5jbHVkZSAiU3R5bGVDdXN0b21Qcm9wZXJ0eURhdGEuaCIKICNpbmNsdWRlICJTdHls
ZUZpbHRlckRhdGEuaCIKICNpbmNsdWRlICJTdHlsZUltYWdlLmgiCisjaW5jbHVkZSAiU3R5bGVT
dXBwb3J0ZWRDb2xvclNjaGVtZXMuaCIKICNpbmNsdWRlIDx3dGYvUG9pbnRlckNvbXBhcmlzb24u
aD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNjcsNiArNjgsMTAgQEAgc3RydWN0IEdyZWF0
ZXJUaGFuT3JTYW1lU2l6ZUFzU3R5bGVSYXJlSW5oZXJpdGVkRGF0YSA6IHB1YmxpYyBSZWZDb3Vu
dGVkPEdyZWF0ZXIKICAgICBDb2xvciB0YXBIaWdobGlnaHRDb2xvcjsKICNlbmRpZgogCisjaWYg
RU5BQkxFKERBUktfTU9ERV9DU1MpCisgICAgU3R5bGVTdXBwb3J0ZWRDb2xvclNjaGVtZXMgc3Vw
cG9ydGVkQ29sb3JTY2hlbWVzOworI2VuZGlmCisKICAgICB2b2lkKiBjdXN0b21Qcm9wZXJ0eURh
dGFSZWZzWzFdOwogfTsKIApAQCAtMTUzLDYgKzE1OCw5IEBAIFN0eWxlUmFyZUluaGVyaXRlZERh
dGE6OlN0eWxlUmFyZUluaGVyaXRlZERhdGEoKQogI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCiAg
ICAgLCB0YXBIaWdobGlnaHRDb2xvcihSZW5kZXJTdHlsZTo6aW5pdGlhbFRhcEhpZ2hsaWdodENv
bG9yKCkpCiAjZW5kaWYKKyNpZiBFTkFCTEUoREFSS19NT0RFX0NTUykKKyAgICAsIHN1cHBvcnRl
ZENvbG9yU2NoZW1lcyhSZW5kZXJTdHlsZTo6aW5pdGlhbFN1cHBvcnRlZENvbG9yU2NoZW1lcygp
KQorI2VuZGlmCiB7CiB9CiAKQEAgLTI1MSw2ICsyNTksOSBAQCBpbmxpbmUgU3R5bGVSYXJlSW5o
ZXJpdGVkRGF0YTo6U3R5bGVSYXJlSW5oZXJpdGVkRGF0YShjb25zdCBTdHlsZVJhcmVJbmhlcml0
ZWREYQogI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCiAgICAgLCB0YXBIaWdobGlnaHRDb2xvcihv
LnRhcEhpZ2hsaWdodENvbG9yKQogI2VuZGlmCisjaWYgRU5BQkxFKERBUktfTU9ERV9DU1MpCisg
ICAgLCBzdXBwb3J0ZWRDb2xvclNjaGVtZXMoby5zdXBwb3J0ZWRDb2xvclNjaGVtZXMpCisjZW5k
aWYKIHsKIH0KIApAQCAtMjk2LDYgKzMwNyw5IEBAIGJvb2wgU3R5bGVSYXJlSW5oZXJpdGVkRGF0
YTo6b3BlcmF0b3I9PShjb25zdCBTdHlsZVJhcmVJbmhlcml0ZWREYXRhJiBvKSBjb25zdAogI2Vu
ZGlmCiAjaWYgRU5BQkxFKFRFWFRfQVVUT1NJWklORykKICAgICAgICAgJiYgdGV4dFNpemVBZGp1
c3QgPT0gby50ZXh0U2l6ZUFkanVzdAorI2VuZGlmCisjaWYgRU5BQkxFKERBUktfTU9ERV9DU1Mp
CisgICAgICAgICYmIHN1cHBvcnRlZENvbG9yU2NoZW1lcyA9PSBvLnN1cHBvcnRlZENvbG9yU2No
ZW1lcwogI2VuZGlmCiAgICAgICAgICYmIHVzZXJTZWxlY3QgPT0gby51c2VyU2VsZWN0CiAgICAg
ICAgICYmIHNwZWFrQXMgPT0gby5zcGVha0FzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3R5bGUvU3R5bGVSYXJlSW5oZXJpdGVkRGF0YS5oIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N0eWxlL1N0eWxlUmFyZUluaGVyaXRlZERhdGEuaAppbmRleCBhM2FkMTc1MDM0
YzlmMzcxYWUxMzU4YzI4YTU0NThhYzg0ZjA4ZTllLi5iMmJkZGZkNDdmYjg5YmNlY2FkMTFhOGRl
YzQwOTU2NTlmMDM4MmZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5
bGUvU3R5bGVSYXJlSW5oZXJpdGVkRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdHlsZS9TdHlsZVJhcmVJbmhlcml0ZWREYXRhLmgKQEAgLTM3LDYgKzM3LDEwIEBACiAjaW5j
bHVkZSAiVGV4dFNpemVBZGp1c3RtZW50LmgiCiAjZW5kaWYKIAorI2lmIEVOQUJMRShEQVJLX01P
REVfQ1NTKQorI2luY2x1ZGUgIlN0eWxlU3VwcG9ydGVkQ29sb3JTY2hlbWVzLmgiCisjZW5kaWYK
KwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBDdXJzb3JMaXN0OwpAQCAtMTgxLDYgKzE4
NSwxMCBAQCBwdWJsaWM6CiAgICAgQ29sb3IgdGFwSGlnaGxpZ2h0Q29sb3I7CiAjZW5kaWYKIAor
I2lmIEVOQUJMRShEQVJLX01PREVfQ1NTKQorICAgIFN0eWxlU3VwcG9ydGVkQ29sb3JTY2hlbWVz
IHN1cHBvcnRlZENvbG9yU2NoZW1lczsKKyNlbmRpZgorCiBwcml2YXRlOgogICAgIFN0eWxlUmFy
ZUluaGVyaXRlZERhdGEoKTsKICAgICBTdHlsZVJhcmVJbmhlcml0ZWREYXRhKGNvbnN0IFN0eWxl
UmFyZUluaGVyaXRlZERhdGEmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdHlsZS9TdHlsZVN1cHBvcnRlZENvbG9yU2NoZW1lcy5oIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N0eWxlL1N0eWxlU3VwcG9ydGVkQ29sb3JTY2hlbWVzLmgKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjA2
YmFkZmFiNTdlMWVjMGExMzE1MzMwNjQyZWVlMjBkZDY3OThjMgotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVN1cHBvcnRlZENvbG9yU2NoZW1l
cy5oCkBAIC0wLDAgKzEsNzAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVO
QUJMRShEQVJLX01PREVfQ1NTKQorCisjaW5jbHVkZSAiUmVuZGVyU3R5bGVDb25zdGFudHMuaCIK
KyNpbmNsdWRlIDx3dGYvT3B0aW9uU2V0Lmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xh
c3MgU3R5bGVTdXBwb3J0ZWRDb2xvclNjaGVtZXMgeworcHVibGljOgorICAgIFN0eWxlU3VwcG9y
dGVkQ29sb3JTY2hlbWVzKCkgeyB9CisKKyAgICBTdHlsZVN1cHBvcnRlZENvbG9yU2NoZW1lcyhj
b25zdCBTdHlsZVN1cHBvcnRlZENvbG9yU2NoZW1lcyYgb3RoZXIpCisgICAgICAgIDogbV9jb2xv
clNjaGVtZXMob3RoZXIubV9jb2xvclNjaGVtZXMpLCBtX2FsbG93c1RyYW5zZm9ybWF0aW9ucyhv
dGhlci5tX2FsbG93c1RyYW5zZm9ybWF0aW9ucykgeyB9CisKKyAgICBTdHlsZVN1cHBvcnRlZENv
bG9yU2NoZW1lcyhPcHRpb25TZXQ8Q29sb3JTY2hlbWVzPiBjb2xvclNjaGVtZXMsIGJvb2wgYWxs
b3dzVHJhbnNmb3JtYXRpb25zKQorICAgICAgICA6IG1fY29sb3JTY2hlbWVzKGNvbG9yU2NoZW1l
cyksIG1fYWxsb3dzVHJhbnNmb3JtYXRpb25zKGFsbG93c1RyYW5zZm9ybWF0aW9ucykgeyB9CisK
KyAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgU3R5bGVTdXBwb3J0ZWRDb2xvclNjaGVtZXMmIG90
aGVyKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fY29sb3JTY2hlbWVzID09IG90aGVy
Lm1fY29sb3JTY2hlbWVzICYmIG1fYWxsb3dzVHJhbnNmb3JtYXRpb25zID09IG90aGVyLm1fYWxs
b3dzVHJhbnNmb3JtYXRpb25zOworICAgIH0KKworICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBT
dHlsZVN1cHBvcnRlZENvbG9yU2NoZW1lcyYgb3RoZXIpIGNvbnN0IHsgcmV0dXJuICEoKnRoaXMg
PT0gb3RoZXIpOyB9CisKKyAgICBib29sIGlzQXV0bygpIGNvbnN0IHsgcmV0dXJuIG1fY29sb3JT
Y2hlbWVzLmlzRW1wdHkoKSAmJiBtX2FsbG93c1RyYW5zZm9ybWF0aW9uczsgfQorICAgIGJvb2wg
aXNPbmx5KCkgY29uc3QgeyByZXR1cm4gbV9jb2xvclNjaGVtZXMuaXNFbXB0eSgpICYmICFtX2Fs
bG93c1RyYW5zZm9ybWF0aW9uczsgfQorCisgICAgT3B0aW9uU2V0PENvbG9yU2NoZW1lcz4gY29s
b3JTY2hlbWVzKCkgY29uc3QgeyByZXR1cm4gbV9jb2xvclNjaGVtZXM7IH0KKworICAgIHZvaWQg
YWRkKENvbG9yU2NoZW1lcyBjb2xvclNjaGVtZSkgeyBtX2NvbG9yU2NoZW1lcy5hZGQoY29sb3JT
Y2hlbWUpOyB9CisgICAgYm9vbCBjb250YWlucyhDb2xvclNjaGVtZXMgY29sb3JTY2hlbWUpIGNv
bnN0IHsgcmV0dXJuIG1fY29sb3JTY2hlbWVzLmNvbnRhaW5zKGNvbG9yU2NoZW1lKTsgfQorCisg
ICAgdm9pZCBzZXRBbGxvd3NUcmFuc2Zvcm1hdGlvbnMoYm9vbCBhbGxvdykgeyBtX2FsbG93c1Ry
YW5zZm9ybWF0aW9ucyA9IGFsbG93OyB9CisgICAgYm9vbCBhbGxvd3NUcmFuc2Zvcm1hdGlvbnMo
KSBjb25zdCB7IHJldHVybiBtX2FsbG93c1RyYW5zZm9ybWF0aW9uczsgfQorCitwcml2YXRlOgor
ICAgIE9wdGlvblNldDxDb2xvclNjaGVtZXM+IG1fY29sb3JTY2hlbWVzOworICAgIGJvb2wgbV9h
bGxvd3NUcmFuc2Zvcm1hdGlvbnMgeyB0cnVlIH07Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoREFSS19NT0RFX0NTUykKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcv
Z3JhcGhpY3MvU1ZHSW1hZ2UuY3BwCmluZGV4IDkxZWY4NTE0ZTU4M2VkMzUzODBlN2FjNzgyN2Qx
YmQwZjgyNTQwNGEuLjA2MDk3ZWNjYmJlM2MyZTZjNjJhNDU5ZGMxOGViMTYyZDQ5OTQ4YTkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmNwcApAQCAtNDcsNiArNDcsNyBA
QAogI2luY2x1ZGUgIlBhZ2VDb25maWd1cmF0aW9uLmgiCiAjaW5jbHVkZSAiUmVuZGVyU1ZHUm9v
dC5oIgogI2luY2x1ZGUgIlJlbmRlclN0eWxlLmgiCisjaW5jbHVkZSAiUmVuZGVyVmlldy5oIgog
I2luY2x1ZGUgIlNWR0RvY3VtZW50LmgiCiAjaW5jbHVkZSAiU1ZHRkVJbWFnZUVsZW1lbnQuaCIK
ICNpbmNsdWRlICJTVkdGb3JlaWduT2JqZWN0RWxlbWVudC5oIgpAQCAtMzI0LDggKzMyNSw3IEBA
IEltYWdlRHJhd1Jlc3VsdCBTVkdJbWFnZTo6ZHJhdyhHcmFwaGljc0NvbnRleHQmIGNvbnRleHQs
IGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjCiAgICAgfQogCiAjaWYgUExBVEZPUk0oTUFDKQotICAg
IGF1dG8qIGRvY3VtZW50ID0gbV9wYWdlLT5tYWluRnJhbWUoKS5kb2N1bWVudCgpOwotICAgIExv
Y2FsRGVmYXVsdFN5c3RlbUFwcGVhcmFuY2UgbG9jYWxBcHBlYXJhbmNlKGRvY3VtZW50ID8gZG9j
dW1lbnQtPnVzZURhcmtBcHBlYXJhbmNlKCkgOiBmYWxzZSk7CisgICAgTG9jYWxEZWZhdWx0U3lz
dGVtQXBwZWFyYW5jZSBsb2NhbEFwcGVhcmFuY2Uodmlldy0+cmVuZGVyVmlldygpLT51c2VEYXJr
QXBwZWFyYW5jZSgpKTsKICNlbmRpZgogCiAgICAgdmlldy0+cGFpbnQoY29udGV4dCwgaW50ZXJz
ZWN0aW9uKGNvbnRleHQuY2xpcEJvdW5kcygpLCBlbmNsb3NpbmdJbnRSZWN0KHNyY1JlY3QpKSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvRE9N
L0luamVjdGVkQnVuZGxlUmFuZ2VIYW5kbGUuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0luamVjdGVkQnVuZGxlL0RPTS9JbmplY3RlZEJ1bmRsZVJhbmdlSGFuZGxlLmNwcAppbmRleCAz
ZjRmNTY3ZGM0YmFlNjE4NTU1MjUyMDg3NGY1ZmViNTVjODhmYzIxLi40YmZkZDdmOWY0YzRjYzRk
ZmE2ZGVhYWJjMDFmNGE2YzExMWVkYWNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvSW5qZWN0ZWRCdW5kbGUvRE9NL0luamVjdGVkQnVuZGxlUmFuZ2VIYW5kbGUuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9ET00vSW5qZWN0ZWRC
dW5kbGVSYW5nZUhhbmRsZS5jcHAKQEAgLTQxLDYgKzQxLDcgQEAKICNpbmNsdWRlIDxXZWJDb3Jl
L0pTUmFuZ2UuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1BhZ2UuaD4KICNpbmNsdWRlIDxXZWJDb3Jl
L1JhbmdlLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9SZW5kZXJWaWV3Lmg+CiAjaW5jbHVkZSA8V2Vi
Q29yZS9WaXNpYmxlU2VsZWN0aW9uLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNs
dWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KQEAgLTEyNCw3ICsxMjUsOCBAQCBSZWZQdHI8V2Vi
SW1hZ2U+IEluamVjdGVkQnVuZGxlUmFuZ2VIYW5kbGU6OnJlbmRlcmVkSW1hZ2UoU25hcHNob3RP
cHRpb25zIG9wdGlvbgogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogI2lmIFBMQVRGT1JNKE1B
QykKLSAgICBMb2NhbERlZmF1bHRTeXN0ZW1BcHBlYXJhbmNlIGxvY2FsQXBwZWFyYW5jZShvd25l
ckRvY3VtZW50LnVzZURhcmtBcHBlYXJhbmNlKCkpOworICAgIFJlbmRlclZpZXcqIHJlbmRlclZp
ZXcgPSBmcmFtZVZpZXctPnJlbmRlclZpZXcoKTsKKyAgICBMb2NhbERlZmF1bHRTeXN0ZW1BcHBl
YXJhbmNlIGxvY2FsQXBwZWFyYW5jZShyZW5kZXJWaWV3ID8gcmVuZGVyVmlldy0+dXNlRGFya0Fw
cGVhcmFuY2UoKSA6IGZhbHNlKTsKICNlbmRpZgogCiAgICAgUmVmPEZyYW1lPiBwcm90ZWN0b3Io
KmZyYW1lKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlBhZ2UuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAK
aW5kZXggODBjNTM4M2EyZTU0ODU0ZTczYzg3NjUzN2ZjYzY0ZjIzY2RmMWJmNy4uMmY1NGQ1ZGZk
NGFkNTcyMWY5MzlkOTQ2OTY3MzFmNjYxM2E4OGQ3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKQEAgLTE1NTYsOCArMTU1Niw4IEBAIHZvaWQgV2Vi
UGFnZTo6c2Nyb2xsTWFpbkZyYW1lSWZOb3RBdE1heFNjcm9sbFBvc2l0aW9uKGNvbnN0IEludFNp
emUmIHNjcm9sbE9mZnNlCiB2b2lkIFdlYlBhZ2U6OmRyYXdSZWN0KEdyYXBoaWNzQ29udGV4dCYg
Z3JhcGhpY3NDb250ZXh0LCBjb25zdCBJbnRSZWN0JiByZWN0KQogewogI2lmIFBMQVRGT1JNKE1B
QykKLSAgICBhdXRvKiBkb2N1bWVudCA9IG1fbWFpbkZyYW1lLT5jb3JlRnJhbWUoKS0+ZG9jdW1l
bnQoKTsKLSAgICBMb2NhbERlZmF1bHRTeXN0ZW1BcHBlYXJhbmNlIGxvY2FsQXBwZWFyYW5jZShk
b2N1bWVudCA/IGRvY3VtZW50LT51c2VEYXJrQXBwZWFyYW5jZSgpIDogZmFsc2UpOworICAgIFJl
bmRlclZpZXcqIHJlbmRlclZpZXcgPSBtX3BhZ2UtPm1haW5GcmFtZSgpLnZpZXcoKS0+cmVuZGVy
VmlldygpOworICAgIExvY2FsRGVmYXVsdFN5c3RlbUFwcGVhcmFuY2UgbG9jYWxBcHBlYXJhbmNl
KHJlbmRlclZpZXcgPyByZW5kZXJWaWV3LT51c2VEYXJrQXBwZWFyYW5jZSgpIDogZmFsc2UpOwog
I2VuZGlmCiAKICAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoZ3JhcGhp
Y3NDb250ZXh0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVT
dXBwb3J0L1dlYkVkaXRvckNsaWVudC5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNv
cmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5tbQppbmRleCA1NTQ2ZDAwYzgxNjRhMmVhOTUxNzRh
NDlkYzhkZTNlZDE0NWU2NmM1Li4zZDZhZmNiMDIwODhkY2YzNWViZDlkOWU3NzA1MjI3ODRjNmI4
NDBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9X
ZWJFZGl0b3JDbGllbnQubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1
cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lm1tCkBAIC05MiwxMCArOTIsNiBAQAogI2ltcG9ydCAiV2Vi
VUlLaXREZWxlZ2F0ZS5oIgogI2VuZGlmCiAKLSNpZiBQTEFURk9STShNQUMpCi0jaW1wb3J0IDxX
ZWJDb3JlL0xvY2FsRGVmYXVsdFN5c3RlbUFwcGVhcmFuY2UuaD4KLSNlbmRpZgotCiB1c2luZyBu
YW1lc3BhY2UgV2ViQ29yZTsKIAogdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKQEAgLTQ3Nywx
MCArNDczLDYgQEAgc3RhdGljIE5TRGljdGlvbmFyeSAqYXR0cmlidXRlc0ZvckF0dHJpYnV0ZWRT
dHJpbmdDb252ZXJzaW9uKCkKIAogdm9pZCBfV2ViQ3JlYXRlRnJhZ21lbnQoRG9jdW1lbnQmIGRv
Y3VtZW50LCBOU0F0dHJpYnV0ZWRTdHJpbmcgKnN0cmluZywgRnJhZ21lbnRBbmRSZXNvdXJjZXMm
IHJlc3VsdCkKIHsKLSNpZiBQTEFURk9STShNQUMpCi0gICAgTG9jYWxEZWZhdWx0U3lzdGVtQXBw
ZWFyYW5jZSBsb2NhbEFwcGVhcmFuY2UoZG9jdW1lbnQudXNlRGFya0FwcGVhcmFuY2UoKSk7Ci0j
ZW5kaWYKLQogICAgIHN0YXRpYyBOU0RpY3Rpb25hcnkgKmRvY3VtZW50QXR0cmlidXRlcyA9IFth
dHRyaWJ1dGVzRm9yQXR0cmlidXRlZFN0cmluZ0NvbnZlcnNpb24oKSByZXRhaW5dOwogICAgIE5T
QXJyYXkgKnN1YnJlc291cmNlczsKICAgICBET01Eb2N1bWVudEZyYWdtZW50KiBmcmFnbWVudCA9
IFtzdHJpbmcgX2RvY3VtZW50RnJvbVJhbmdlOk5TTWFrZVJhbmdlKDAsIFtzdHJpbmcgbGVuZ3Ro
XSkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5n
ZUxvZwppbmRleCAyZmRhNGIxNjNiMjFlZDFjMmY5MjEyMmM3NjAzMTI0MmQwYjRjN2M5Li5kOWQy
MmEzMjg2NzE4ODIwMGM2YTIzZmZiNTcwY2VmODVhNzRkOTMxIDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYg
QEAKKzIwMTgtMTEtMDggIFRpbW90aHkgSGF0Y2hlciAgPHRpbW90aHlAYXBwbGUuY29tPgorCisg
ICAgICAgIEFkZCBleHBlcmltZW50YWwgc3VwcG9ydCBmb3IgYSBgc3VwcG9ydGVkLWNvbG9yLXNj
aGVtZXNgIENTUyBwcm9wZXJ0eS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE5MTMxOQorICAgICAgICByZGFyOi8vcHJvYmxlbS80NTg1MjI2MQorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogY3NzLWRhcmst
bW9kZS9wYXJzZS1zdXBwb3J0ZWQtY29sb3Itc2NoZW1lcy1leHBlY3RlZC50eHQ6IEFkZGVkLgor
ICAgICAgICAqIGNzcy1kYXJrLW1vZGUvcGFyc2Utc3VwcG9ydGVkLWNvbG9yLXNjaGVtZXMuaHRt
bDogQWRkZWQuCisgICAgICAgICogY3NzLWRhcmstbW9kZS9zdXBwb3J0ZWQtY29sb3Itc2NoZW1l
cy1jc3MtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBjc3MtZGFyay1tb2RlL3N1cHBv
cnRlZC1jb2xvci1zY2hlbWVzLWNzcy5odG1sOiBBZGRlZC4KKwogMjAxOC0xMS0wNyAgSnVzdGlu
IE1pY2hhdWQgIDxqdXN0aW5fbWljaGF1ZEBhcHBsZS5jb20+CiAKICAgICAgICAgQ1NTIFBhaW50
aW5nIEFQSSBzaG91bGQgcGFzcyBzaXplLCBhcmd1bWVudHMgYW5kIGlucHV0IHByb3BlcnRpZXMg
dG8gcGFpbnQgY2FsbGJhY2sKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Nzcy1kYXJrLW1vZGUv
cGFyc2Utc3VwcG9ydGVkLWNvbG9yLXNjaGVtZXMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMv
Y3NzLWRhcmstbW9kZS9wYXJzZS1zdXBwb3J0ZWQtY29sb3Itc2NoZW1lcy1leHBlY3RlZC50eHQK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uMmEyODdmNWMzYTBhMDRlODNhYmJiMWE5YjQ0MWMxYTc4ZGVjMzc0NQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Nzcy1kYXJrLW1vZGUvcGFyc2Utc3VwcG9ydGVk
LWNvbG9yLXNjaGVtZXMtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNCBAQAorCitQQVNTIFRlc3Qg
dmFsaWQgdmFsdWVzIAorUEFTUyBUZXN0IGludmFsaWQgdmFsdWVzIAorCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9jc3MtZGFyay1tb2RlL3BhcnNlLXN1cHBvcnRlZC1jb2xvci1zY2hlbWVzLmh0
bWwgYi9MYXlvdXRUZXN0cy9jc3MtZGFyay1tb2RlL3BhcnNlLXN1cHBvcnRlZC1jb2xvci1zY2hl
bWVzLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uMWJjMTBhODI1ZDczZmIzNzVhYTU4ZTk1ODNjZmQ4MjQxNjli
MDI5ZgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Nzcy1kYXJrLW1vZGUvcGFyc2Ut
c3VwcG9ydGVkLWNvbG9yLXNjaGVtZXMuaHRtbApAQCAtMCwwICsxLDEyOCBAQAorPCFET0NUWVBF
IGh0bWw+CisKKzwhLS0gd2Via2l0LXRlc3QtcnVubmVyIFsgZXhwZXJpbWVudGFsOkRhcmtNb2Rl
Q1NTRW5hYmxlZD10cnVlIF0gLS0+CisKKzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvdGVzdGhh
cm5lc3MuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy90ZXN0aGFybmVz
c3JlcG9ydC5qcyI+PC9zY3JpcHQ+CisKKzxzdHlsZT4KKyN0ZXN0QXV0byB7CisgICAgc3VwcG9y
dGVkLWNvbG9yLXNjaGVtZXM6IGF1dG87Cit9CisKKyN0ZXN0T25seSB7CisgICAgc3VwcG9ydGVk
LWNvbG9yLXNjaGVtZXM6IG9ubHk7Cit9CisKKyN0ZXN0TGlnaHQgeworICAgIHN1cHBvcnRlZC1j
b2xvci1zY2hlbWVzOiBsaWdodDsKK30KKworI3Rlc3REYXJrIHsKKyAgICBzdXBwb3J0ZWQtY29s
b3Itc2NoZW1lczogZGFyazsKK30KKworI3Rlc3RMaWdodERhcmsgeworICAgIHN1cHBvcnRlZC1j
b2xvci1zY2hlbWVzOiBsaWdodCBkYXJrOworfQorCisjdGVzdERhcmtMaWdodCB7CisgICAgc3Vw
cG9ydGVkLWNvbG9yLXNjaGVtZXM6IGRhcmsgbGlnaHQ7Cit9CisKKyN0ZXN0TGlnaHREYXJrT25s
eSB7CisgICAgc3VwcG9ydGVkLWNvbG9yLXNjaGVtZXM6IGxpZ2h0IGRhcmsgb25seTsKK30KKwor
I3Rlc3RPbmx5RGFyayB7CisgICAgc3VwcG9ydGVkLWNvbG9yLXNjaGVtZXM6IG9ubHkgZGFyazsK
K30KKworI3Rlc3RMaWdodE9ubHlEYXJrIHsKKyAgICBzdXBwb3J0ZWQtY29sb3Itc2NoZW1lczog
bGlnaHQgb25seSBkYXJrOworfQorCisjdGVzdExpZ2h0VW5rbm93biB7CisgICAgc3VwcG9ydGVk
LWNvbG9yLXNjaGVtZXM6IGxpZ2h0IGZvbzsKK30KKworI3Rlc3RVbmtub3duRGFya09ubHkgewor
ICAgIHN1cHBvcnRlZC1jb2xvci1zY2hlbWVzOiBiYXIgZGFyayBvbmx5OworfQorCisjdGVzdExp
Z2h0VW5rbm93bk9ubHkgeworICAgIHN1cHBvcnRlZC1jb2xvci1zY2hlbWVzOiBsaWdodCBiYXog
b25seTsKK30KKworI3Rlc3RJbnZhbGlkTGlnaHRBdXRvIHsKKyAgICBzdXBwb3J0ZWQtY29sb3It
c2NoZW1lczogbGlnaHQgYXV0bzsKK30KKworI3Rlc3RJbnZhbGlkQXV0b0RhcmsgeworICAgIHN1
cHBvcnRlZC1jb2xvci1zY2hlbWVzOiBhdXRvIGRhcms7Cit9CisKKyN0ZXN0SW52YWxpZExpZ2h0
RGFya0xpZ2h0IHsKKyAgICBzdXBwb3J0ZWQtY29sb3Itc2NoZW1lczogbGlnaHQgZGFyayBsaWdo
dDsKK30KKworI3Rlc3RJbnZhbGlkTnVtYmVyIHsKKyAgICBzdXBwb3J0ZWQtY29sb3Itc2NoZW1l
czogNDI7Cit9CisKKyN0ZXN0SW52YWxpZFN0cmluZyB7CisgICAgc3VwcG9ydGVkLWNvbG9yLXNj
aGVtZXM6ICJmb28iOworfQorCisjdGVzdEludmFsaWRMaWdodFN0cmluZyB7CisgICAgc3VwcG9y
dGVkLWNvbG9yLXNjaGVtZXM6IGxpZ2h0ICJmb28iOworfQorPC9zdHlsZT4KKworPGRpdiBpZD0i
dGVzdEF1dG8iPjwvZGl2PgorPGRpdiBpZD0idGVzdE9ubHkiPjwvZGl2PgorPGRpdiBpZD0idGVz
dExpZ2h0Ij48L2Rpdj4KKzxkaXYgaWQ9InRlc3REYXJrIj48L2Rpdj4KKzxkaXYgaWQ9InRlc3RM
aWdodERhcmsiPjwvZGl2PgorPGRpdiBpZD0idGVzdERhcmtMaWdodCI+PC9kaXY+Cis8ZGl2IGlk
PSJ0ZXN0TGlnaHREYXJrT25seSI+PC9kaXY+Cis8ZGl2IGlkPSJ0ZXN0T25seURhcmsiPjwvZGl2
PgorPGRpdiBpZD0idGVzdExpZ2h0T25seURhcmsiPjwvZGl2PgorPGRpdiBpZD0idGVzdExpZ2h0
VW5rbm93biI+PC9kaXY+Cis8ZGl2IGlkPSJ0ZXN0VW5rbm93bkRhcmtPbmx5Ij48L2Rpdj4KKwor
PGRpdiBpZD0idGVzdEludmFsaWRMaWdodEF1dG8iPjwvZGl2PgorPGRpdiBpZD0idGVzdEludmFs
aWRBdXRvRGFyayI+PC9kaXY+Cis8ZGl2IGlkPSJ0ZXN0SW52YWxpZExpZ2h0RGFya0xpZ2h0Ij48
L2Rpdj4KKzxkaXYgaWQ9InRlc3RJbnZhbGlkTnVtYmVyIj48L2Rpdj4KKzxkaXYgaWQ9InRlc3RJ
bnZhbGlkU3RyaW5nIj48L2Rpdj4KKzxkaXYgaWQ9InRlc3RJbnZhbGlkTGlnaHRTdHJpbmciPjwv
ZGl2PgorCis8c2NyaXB0PgorZnVuY3Rpb24gdGVzdF9wcm9wKGlkLCBwcm9wZXJ0eSwgZXhwZWN0
ZWQpIHsKKyAgICBhc3NlcnRfZXF1YWxzKHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKGlkKSkuZ2V0UHJvcGVydHlWYWx1ZShwcm9wZXJ0eSksIGV4cGVjdGVk
KTsKK30KKwordGVzdChmdW5jdGlvbigpIHsKKyAgICB0ZXN0X3Byb3AoInRlc3RBdXRvIiwgInN1
cHBvcnRlZC1jb2xvci1zY2hlbWVzIiwgImF1dG8iKTsKKyAgICB0ZXN0X3Byb3AoInRlc3RPbmx5
IiwgInN1cHBvcnRlZC1jb2xvci1zY2hlbWVzIiwgImxpZ2h0IG9ubHkiKTsKKyAgICB0ZXN0X3By
b3AoInRlc3RMaWdodCIsICJzdXBwb3J0ZWQtY29sb3Itc2NoZW1lcyIsICJsaWdodCIpOworICAg
IHRlc3RfcHJvcCgidGVzdERhcmsiLCAic3VwcG9ydGVkLWNvbG9yLXNjaGVtZXMiLCAiZGFyayIp
OworICAgIHRlc3RfcHJvcCgidGVzdExpZ2h0RGFyayIsICJzdXBwb3J0ZWQtY29sb3Itc2NoZW1l
cyIsICJsaWdodCBkYXJrIik7CisgICAgdGVzdF9wcm9wKCJ0ZXN0RGFya0xpZ2h0IiwgInN1cHBv
cnRlZC1jb2xvci1zY2hlbWVzIiwgImxpZ2h0IGRhcmsiKTsKKyAgICB0ZXN0X3Byb3AoInRlc3RM
aWdodERhcmtPbmx5IiwgInN1cHBvcnRlZC1jb2xvci1zY2hlbWVzIiwgImxpZ2h0IGRhcmsgb25s
eSIpOworICAgIHRlc3RfcHJvcCgidGVzdE9ubHlEYXJrIiwgInN1cHBvcnRlZC1jb2xvci1zY2hl
bWVzIiwgImRhcmsgb25seSIpOworICAgIHRlc3RfcHJvcCgidGVzdExpZ2h0T25seURhcmsiLCAi
c3VwcG9ydGVkLWNvbG9yLXNjaGVtZXMiLCAibGlnaHQgZGFyayBvbmx5Iik7CisgICAgdGVzdF9w
cm9wKCJ0ZXN0TGlnaHRVbmtub3duIiwgInN1cHBvcnRlZC1jb2xvci1zY2hlbWVzIiwgImxpZ2h0
Iik7CisgICAgdGVzdF9wcm9wKCJ0ZXN0VW5rbm93bkRhcmtPbmx5IiwgInN1cHBvcnRlZC1jb2xv
ci1zY2hlbWVzIiwgImRhcmsgb25seSIpOworfSwgIlRlc3QgdmFsaWQgdmFsdWVzIik7CisKK3Rl
c3QoZnVuY3Rpb24oKSB7CisgICAgdGVzdF9wcm9wKCJ0ZXN0SW52YWxpZExpZ2h0QXV0byIsICJz
dXBwb3J0ZWQtY29sb3Itc2NoZW1lcyIsICJhdXRvIik7CisgICAgdGVzdF9wcm9wKCJ0ZXN0SW52
YWxpZEF1dG9EYXJrIiwgInN1cHBvcnRlZC1jb2xvci1zY2hlbWVzIiwgImF1dG8iKTsKKyAgICB0
ZXN0X3Byb3AoInRlc3RJbnZhbGlkTGlnaHREYXJrTGlnaHQiLCAic3VwcG9ydGVkLWNvbG9yLXNj
aGVtZXMiLCAiYXV0byIpOworICAgIHRlc3RfcHJvcCgidGVzdEludmFsaWROdW1iZXIiLCAic3Vw
cG9ydGVkLWNvbG9yLXNjaGVtZXMiLCAiYXV0byIpOworICAgIHRlc3RfcHJvcCgidGVzdEludmFs
aWRTdHJpbmciLCAic3VwcG9ydGVkLWNvbG9yLXNjaGVtZXMiLCAiYXV0byIpOworICAgIHRlc3Rf
cHJvcCgidGVzdEludmFsaWRMaWdodFN0cmluZyIsICJzdXBwb3J0ZWQtY29sb3Itc2NoZW1lcyIs
ICJhdXRvIik7Cit9LCAiVGVzdCBpbnZhbGlkIHZhbHVlcyIpOworPC9zY3JpcHQ+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9jc3MtZGFyay1tb2RlL3N1cHBvcnRlZC1jb2xvci1zY2hlbWVzLWNz
cy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9jc3MtZGFyay1tb2RlL3N1cHBvcnRlZC1jb2xv
ci1zY2hlbWVzLWNzcy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uY2RkZDU2ZjYzMzljMzNlNjJl
YWZmNGY0YzYyODUxNzVlZWI0NWY0OAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Nz
cy1kYXJrLW1vZGUvc3VwcG9ydGVkLWNvbG9yLXNjaGVtZXMtY3NzLWV4cGVjdGVkLnR4dApAQCAt
MCwwICsxLDI4IEBACisKK1BBU1MgRWxlbWVudCBjb2xvcnMgYXJlIGNvcnJlY3QgaW4gbGlnaHQg
Y29sb3Igc2NoZW1lIHdpdGggb25seSBsaWdodCBzdXBwb3J0ZWQgY29sb3Igc2NoZW1lIAorUEFT
UyBEYXJrIGNvbG9yIHNjaGVtZSBlbmFibGVkIAorUEFTUyBFbGVtZW50IGNvbG9ycyBhcmUgY29y
cmVjdCBpbiBkYXJrIGNvbG9yIHNjaGVtZSB3aXRoIG9ubHkgbGlnaHQgc3VwcG9ydGVkIGNvbG9y
IHNjaGVtZSAKK1BBU1MgTGlnaHQgY29sb3Igc2NoZW1lIGVuYWJsZWQgCitQQVNTIFN1cHBvcnRl
ZCBjb2xvciBzY2hlbWVzIGNoYW5nZWQgdG8gbGlnaHQgYW5kIGRhcmsgCitQQVNTIEVsZW1lbnQg
Y29sb3JzIGFyZSBjb3JyZWN0IGluIGxpZ2h0IGNvbG9yIHNjaGVtZSB3aXRoIGxpZ2h0IGFuZCBk
YXJrIHN1cHBvcnRlZCBjb2xvciBzY2hlbWUgCitQQVNTIERhcmsgY29sb3Igc2NoZW1lIGVuYWJs
ZWQgCitQQVNTIEVsZW1lbnQgY29sb3JzIGFyZSBjb3JyZWN0IGluIGRhcmsgY29sb3Igc2NoZW1l
IHdpdGggbGlnaHQgYW5kIGRhcmsgc3VwcG9ydGVkIGNvbG9yIHNjaGVtZSAKK1BBU1MgTGlnaHQg
Y29sb3Igc2NoZW1lIGVuYWJsZWQgCitQQVNTIFN1cHBvcnRlZCBjb2xvciBzY2hlbWVzIGNoYW5n
ZWQgdG8gZGFyayAKK1BBU1MgRWxlbWVudCBjb2xvcnMgYXJlIGNvcnJlY3QgaW4gbGlnaHQgY29s
b3Igc2NoZW1lIHdpdGggb25seSBkYXJrIHN1cHBvcnRlZCBjb2xvciBzY2hlbWUgCitQQVNTIERh
cmsgY29sb3Igc2NoZW1lIGVuYWJsZWQgCitQQVNTIEVsZW1lbnQgY29sb3JzIGFyZSBjb3JyZWN0
IGluIGRhcmsgY29sb3Igc2NoZW1lIHdpdGggb25seSBkYXJrIHN1cHBvcnRlZCBjb2xvciBzY2hl
bWUgCitQQVNTIFN1cHBvcnRlZCBjb2xvciBzY2hlbWVzIGNoYW5nZWQgdG8gbGlnaHQgYW5kIGEg
Ym9ndXMgdmFsdWUgCitQQVNTIEVsZW1lbnQgY29sb3JzIGFyZSBjb3JyZWN0IGluIGRhcmsgY29s
b3Igc2NoZW1lIHdpdGggb25seSBsaWdodCBzdXBwb3J0ZWQgY29sb3Igc2NoZW1lIAorUEFTUyBT
dXBwb3J0ZWQgY29sb3Igc2NoZW1lcyBjaGFuZ2VkIHRvIGF1dG8gdmFsdWUgCitQQVNTIEVsZW1l
bnQgY29sb3JzIGFyZSBjb3JyZWN0IGluIGRhcmsgY29sb3Igc2NoZW1lIHdpdGggaW1wbGljaXQg
bGlnaHQgc3VwcG9ydGVkIGNvbG9yIHNjaGVtZSAKK1BBU1MgU3VwcG9ydGVkIGNvbG9yIHNjaGVt
ZXMgY2hhbmdlZCB0byBsaWdodCBhbmQgZGFyayB2aWEgPG1ldGE+IGVsZW1lbnQgCitQQVNTIEVs
ZW1lbnQgY29sb3JzIGFyZSBjb3JyZWN0IGluIGRhcmsgY29sb3Igc2NoZW1lIHdpdGggbGlnaHQg
YW5kIGRhcmsgc3VwcG9ydGVkIGNvbG9yIHNjaGVtZSB2aWEgPG1ldGE+IGVsZW1lbnQgCitQQVNT
IFN1cHBvcnRlZCBjb2xvciBzY2hlbWVzIGNoYW5nZWQgdG8gbGlnaHQgdmFsdWUgCitQQVNTIEVs
ZW1lbnQgY29sb3JzIGFyZSBjb3JyZWN0IGluIGRhcmsgY29sb3Igc2NoZW1lIHdpdGggZXhwbGlj
aXQgbGlnaHQsIG92ZXJyaWRpbmcgPG1ldGE+IGVsZW1lbnQgCitQQVNTIFJlbW92ZSB0ZXN0IG1l
dGEgZWxlbWVudCAKK1BBU1MgU3VwcG9ydGVkIGNvbG9yIHNjaGVtZXMgY2hhbmdlZCB0byBsaWdo
dCBhbmQgZGFyayAKK1BBU1MgRWxlbWVudCBjb2xvcnMgYXJlIGNvcnJlY3QgaW4gZGFyayBjb2xv
ciBzY2hlbWUgd2l0aCBsaWdodCBhbmQgZGFyayBzdXBwb3J0ZWQgY29sb3Igc2NoZW1lIAorUEFT
UyBTdXBwb3J0ZWQgY29sb3Igc2NoZW1lcyBjaGFuZ2VkIHRvIGEgYm9ndXMgdmFsdWUgYW5kIGRh
cmsgCitQQVNTIEVsZW1lbnQgY29sb3JzIGFyZSBjb3JyZWN0IGluIGRhcmsgY29sb3Igc2NoZW1l
IHdpdGggZGFyayBzdXBwb3J0ZWQgY29sb3Igc2NoZW1lIAorCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9jc3MtZGFyay1tb2RlL3N1cHBvcnRlZC1jb2xvci1zY2hlbWVzLWNzcy5odG1sIGIvTGF5
b3V0VGVzdHMvY3NzLWRhcmstbW9kZS9zdXBwb3J0ZWQtY29sb3Itc2NoZW1lcy1jc3MuaHRtbApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5iNmNhNjgwMWFmNGU3YTI0ZDg0NzBiMmQ5N2Q3MGUxOGY3NmI5Y2ZlCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvY3NzLWRhcmstbW9kZS9zdXBwb3J0ZWQtY29sb3It
c2NoZW1lcy1jc3MuaHRtbApAQCAtMCwwICsxLDE1MyBAQAorPCFET0NUWVBFIGh0bWw+CisKKzwh
LS0gd2Via2l0LXRlc3QtcnVubmVyIFsgZXhwZXJpbWVudGFsOkRhcmtNb2RlQ1NTRW5hYmxlZD10
cnVlIF0gLS0+CisKKzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwv
c2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+
PC9zY3JpcHQ+CisKKzxzdHlsZT4KKyN0ZXN0MSB7CisgICAgY29sb3I6IHRleHQ7Cit9Cis8L3N0
eWxlPgorCis8ZGl2IGlkPSJ0ZXN0MSI+PC9kaXY+CisKKzxzY3JpcHQ+CitmdW5jdGlvbiB0ZXN0
X3Byb3AoaWQsIHByb3AsIGV4cGVjdGVkKSB7CisgICAgYXNzZXJ0X2VxdWFscyh3aW5kb3cuZ2V0
Q29tcHV0ZWRTdHlsZShkb2N1bWVudC5nZXRFbGVtZW50QnlJZChpZCkpLmdldFByb3BlcnR5VmFs
dWUocHJvcCksIGV4cGVjdGVkKTsKK30KKworZnVuY3Rpb24gdGVzdF9jb2xvcl9pc193aGl0ZShp
ZCkgeworICAgIHRlc3RfcHJvcCgidGVzdDEiLCAiY29sb3IiLCAicmdiKDI1NSwgMjU1LCAyNTUp
Iik7Cit9CisKK2Z1bmN0aW9uIHRlc3RfY29sb3JfaXNfYmxhY2soaWQpIHsKKyAgICB0ZXN0X3By
b3AoInRlc3QxIiwgImNvbG9yIiwgInJnYigwLCAwLCAwKSIpOworfQorCit0ZXN0KGZ1bmN0aW9u
KCkgeworICAgIC8vIFRoZSBzZW1hbnRpYyB0ZXh0IGNvbG9yIHNob3VsZCBiZSBibGFjay4KKyAg
ICB0ZXN0X2NvbG9yX2lzX2JsYWNrKCJ0ZXN0MSIpOworfSwgIkVsZW1lbnQgY29sb3JzIGFyZSBj
b3JyZWN0IGluIGxpZ2h0IGNvbG9yIHNjaGVtZSB3aXRoIG9ubHkgbGlnaHQgc3VwcG9ydGVkIGNv
bG9yIHNjaGVtZSIpOworCit0ZXN0KGZ1bmN0aW9uKCkgeworICAgIGlmICh3aW5kb3cuaW50ZXJu
YWxzKQorICAgICAgICBpbnRlcm5hbHMuc2V0dGluZ3Muc2V0VXNlRGFya0FwcGVhcmFuY2UodHJ1
ZSk7Cit9LCAiRGFyayBjb2xvciBzY2hlbWUgZW5hYmxlZCIpOworCit0ZXN0KGZ1bmN0aW9uKCkg
eworICAgIC8vIFRoZSBzZW1hbnRpYyB0ZXh0IGNvbG9yIHNob3VsZCBiZSBibGFjaywgYW5kIG5v
dCBjaGFuZ2UuCisgICAgdGVzdF9jb2xvcl9pc19ibGFjaygidGVzdDEiKTsKK30sICJFbGVtZW50
IGNvbG9ycyBhcmUgY29ycmVjdCBpbiBkYXJrIGNvbG9yIHNjaGVtZSB3aXRoIG9ubHkgbGlnaHQg
c3VwcG9ydGVkIGNvbG9yIHNjaGVtZSIpOworCit0ZXN0KGZ1bmN0aW9uKCkgeworICAgIGlmICh3
aW5kb3cuaW50ZXJuYWxzKQorICAgICAgICBpbnRlcm5hbHMuc2V0dGluZ3Muc2V0VXNlRGFya0Fw
cGVhcmFuY2UoZmFsc2UpOworfSwgIkxpZ2h0IGNvbG9yIHNjaGVtZSBlbmFibGVkIik7CisKK3Rl
c3QoZnVuY3Rpb24oKSB7CisgICAgZG9jdW1lbnQuYm9keS5zdHlsZS5zZXRQcm9wZXJ0eSgic3Vw
cG9ydGVkLWNvbG9yLXNjaGVtZXMiLCAibGlnaHQgZGFyayIpOworfSwgIlN1cHBvcnRlZCBjb2xv
ciBzY2hlbWVzIGNoYW5nZWQgdG8gbGlnaHQgYW5kIGRhcmsiKTsKKwordGVzdChmdW5jdGlvbigp
IHsKKyAgICAvLyBUaGUgc2VtYW50aWMgdGV4dCBjb2xvciBzaG91bGQgYmUgYmxhY2suCisgICAg
dGVzdF9jb2xvcl9pc19ibGFjaygidGVzdDEiKTsKK30sICJFbGVtZW50IGNvbG9ycyBhcmUgY29y
cmVjdCBpbiBsaWdodCBjb2xvciBzY2hlbWUgd2l0aCBsaWdodCBhbmQgZGFyayBzdXBwb3J0ZWQg
Y29sb3Igc2NoZW1lIik7CisKK3Rlc3QoZnVuY3Rpb24oKSB7CisgICAgaWYgKHdpbmRvdy5pbnRl
cm5hbHMpCisgICAgICAgIGludGVybmFscy5zZXR0aW5ncy5zZXRVc2VEYXJrQXBwZWFyYW5jZSh0
cnVlKTsKK30sICJEYXJrIGNvbG9yIHNjaGVtZSBlbmFibGVkIik7CisKK3Rlc3QoZnVuY3Rpb24o
KSB7CisgICAgLy8gVGhlIHNlbWFudGljIHRleHQgY29sb3Igc2hvdWxkIGJlIHdoaXRlLgorICAg
IHRlc3RfY29sb3JfaXNfd2hpdGUoInRlc3QxIik7Cit9LCAiRWxlbWVudCBjb2xvcnMgYXJlIGNv
cnJlY3QgaW4gZGFyayBjb2xvciBzY2hlbWUgd2l0aCBsaWdodCBhbmQgZGFyayBzdXBwb3J0ZWQg
Y29sb3Igc2NoZW1lIik7CisKK3Rlc3QoZnVuY3Rpb24oKSB7CisgICAgaWYgKHdpbmRvdy5pbnRl
cm5hbHMpCisgICAgICAgIGludGVybmFscy5zZXR0aW5ncy5zZXRVc2VEYXJrQXBwZWFyYW5jZShm
YWxzZSk7Cit9LCAiTGlnaHQgY29sb3Igc2NoZW1lIGVuYWJsZWQiKTsKKwordGVzdChmdW5jdGlv
bigpIHsKKyAgICBkb2N1bWVudC5ib2R5LnN0eWxlLnNldFByb3BlcnR5KCJzdXBwb3J0ZWQtY29s
b3Itc2NoZW1lcyIsICJkYXJrIik7Cit9LCAiU3VwcG9ydGVkIGNvbG9yIHNjaGVtZXMgY2hhbmdl
ZCB0byBkYXJrIik7CisKK3Rlc3QoZnVuY3Rpb24oKSB7CisgICAgLy8gVGhlIHNlbWFudGljIHRl
eHQgY29sb3Igc2hvdWxkIGJlIHdoaXRlLgorICAgIHRlc3RfY29sb3JfaXNfd2hpdGUoInRlc3Qx
Iik7Cit9LCAiRWxlbWVudCBjb2xvcnMgYXJlIGNvcnJlY3QgaW4gbGlnaHQgY29sb3Igc2NoZW1l
IHdpdGggb25seSBkYXJrIHN1cHBvcnRlZCBjb2xvciBzY2hlbWUiKTsKKwordGVzdChmdW5jdGlv
bigpIHsKKyAgICBpZiAod2luZG93LmludGVybmFscykKKyAgICAgICAgaW50ZXJuYWxzLnNldHRp
bmdzLnNldFVzZURhcmtBcHBlYXJhbmNlKHRydWUpOworfSwgIkRhcmsgY29sb3Igc2NoZW1lIGVu
YWJsZWQiKTsKKwordGVzdChmdW5jdGlvbigpIHsKKyAgICAvLyBUaGUgc2VtYW50aWMgdGV4dCBj
b2xvciBzaG91bGQgYmUgd2hpdGUgc3RpbGwuCisgICAgdGVzdF9jb2xvcl9pc193aGl0ZSgidGVz
dDEiKTsKK30sICJFbGVtZW50IGNvbG9ycyBhcmUgY29ycmVjdCBpbiBkYXJrIGNvbG9yIHNjaGVt
ZSB3aXRoIG9ubHkgZGFyayBzdXBwb3J0ZWQgY29sb3Igc2NoZW1lIik7CisKK3Rlc3QoZnVuY3Rp
b24oKSB7CisgICAgZG9jdW1lbnQuYm9keS5zdHlsZS5zZXRQcm9wZXJ0eSgic3VwcG9ydGVkLWNv
bG9yLXNjaGVtZXMiLCAibGlnaHQgZm9vIik7Cit9LCAiU3VwcG9ydGVkIGNvbG9yIHNjaGVtZXMg
Y2hhbmdlZCB0byBsaWdodCBhbmQgYSBib2d1cyB2YWx1ZSIpOworCit0ZXN0KGZ1bmN0aW9uKCkg
eworICAgIC8vIFRoZSBzZW1hbnRpYyB0ZXh0IGNvbG9yIHNob3VsZCBiZSBibGFjayBhZ2Fpbi4K
KyAgICB0ZXN0X2NvbG9yX2lzX2JsYWNrKCJ0ZXN0MSIpOworfSwgIkVsZW1lbnQgY29sb3JzIGFy
ZSBjb3JyZWN0IGluIGRhcmsgY29sb3Igc2NoZW1lIHdpdGggb25seSBsaWdodCBzdXBwb3J0ZWQg
Y29sb3Igc2NoZW1lIik7CisKK3Rlc3QoZnVuY3Rpb24oKSB7CisgICAgZG9jdW1lbnQuYm9keS5z
dHlsZS5zZXRQcm9wZXJ0eSgic3VwcG9ydGVkLWNvbG9yLXNjaGVtZXMiLCAiYXV0byIpOworfSwg
IlN1cHBvcnRlZCBjb2xvciBzY2hlbWVzIGNoYW5nZWQgdG8gYXV0byB2YWx1ZSIpOworCit0ZXN0
KGZ1bmN0aW9uKCkgeworICAgIC8vIFRoZSBzZW1hbnRpYyB0ZXh0IGNvbG9yIHNob3VsZCBiZSBi
bGFjayBzdGlsbC4KKyAgICB0ZXN0X2NvbG9yX2lzX2JsYWNrKCJ0ZXN0MSIpOworfSwgIkVsZW1l
bnQgY29sb3JzIGFyZSBjb3JyZWN0IGluIGRhcmsgY29sb3Igc2NoZW1lIHdpdGggaW1wbGljaXQg
bGlnaHQgc3VwcG9ydGVkIGNvbG9yIHNjaGVtZSIpOworCit0ZXN0KGZ1bmN0aW9uKCkgeworICAg
IGxldCBtZXRhID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgibWV0YSIpOworICAgIG1ldGEuaWQg
PSAidGVzdC1tZXRhIjsKKyAgICBtZXRhLm5hbWUgPSAic3VwcG9ydGVkLWNvbG9yLXNjaGVtZXMi
OworICAgIG1ldGEuY29udGVudCA9ICJsaWdodCBkYXJrIjsKKyAgICBkb2N1bWVudC5oZWFkLmFw
cGVuZENoaWxkKG1ldGEpOworfSwgIlN1cHBvcnRlZCBjb2xvciBzY2hlbWVzIGNoYW5nZWQgdG8g
bGlnaHQgYW5kIGRhcmsgdmlhIDxtZXRhPiBlbGVtZW50Iik7CisKK3Rlc3QoZnVuY3Rpb24oKSB7
CisgICAgLy8gVGhlIHNlbWFudGljIHRleHQgY29sb3Igc2hvdWxkIGJlIHdoaXRlIG5vdy4KKyAg
ICB0ZXN0X2NvbG9yX2lzX3doaXRlKCJ0ZXN0MSIpOworfSwgIkVsZW1lbnQgY29sb3JzIGFyZSBj
b3JyZWN0IGluIGRhcmsgY29sb3Igc2NoZW1lIHdpdGggbGlnaHQgYW5kIGRhcmsgc3VwcG9ydGVk
IGNvbG9yIHNjaGVtZSB2aWEgPG1ldGE+IGVsZW1lbnQiKTsKKwordGVzdChmdW5jdGlvbigpIHsK
KyAgICBkb2N1bWVudC5ib2R5LnN0eWxlLnNldFByb3BlcnR5KCJzdXBwb3J0ZWQtY29sb3Itc2No
ZW1lcyIsICJsaWdodCIpOworfSwgIlN1cHBvcnRlZCBjb2xvciBzY2hlbWVzIGNoYW5nZWQgdG8g
bGlnaHQgdmFsdWUiKTsKKwordGVzdChmdW5jdGlvbigpIHsKKyAgICAvLyBUaGUgc2VtYW50aWMg
dGV4dCBjb2xvciBzaG91bGQgYmUgYmxhY2sgYWdhaW4uCisgICAgdGVzdF9jb2xvcl9pc19ibGFj
aygidGVzdDEiKTsKK30sICJFbGVtZW50IGNvbG9ycyBhcmUgY29ycmVjdCBpbiBkYXJrIGNvbG9y
IHNjaGVtZSB3aXRoIGV4cGxpY2l0IGxpZ2h0LCBvdmVycmlkaW5nIDxtZXRhPiBlbGVtZW50Iik7
CisKK3Rlc3QoZnVuY3Rpb24oKSB7CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRlc3Qt
bWV0YSIpLnJlbW92ZSgpOworfSwgIlJlbW92ZSB0ZXN0IG1ldGEgZWxlbWVudCIpOworCit0ZXN0
KGZ1bmN0aW9uKCkgeworICAgIGRvY3VtZW50LmJvZHkuc3R5bGUuc2V0UHJvcGVydHkoInN1cHBv
cnRlZC1jb2xvci1zY2hlbWVzIiwgImxpZ2h0IGRhcmsiKTsKK30sICJTdXBwb3J0ZWQgY29sb3Ig
c2NoZW1lcyBjaGFuZ2VkIHRvIGxpZ2h0IGFuZCBkYXJrIik7CisKK3Rlc3QoZnVuY3Rpb24oKSB7
CisgICAgLy8gVGhlIHNlbWFudGljIHRleHQgY29sb3Igc2hvdWxkIGJlIHdoaXRlIG5vdy4KKyAg
ICB0ZXN0X2NvbG9yX2lzX3doaXRlKCJ0ZXN0MSIpOworfSwgIkVsZW1lbnQgY29sb3JzIGFyZSBj
b3JyZWN0IGluIGRhcmsgY29sb3Igc2NoZW1lIHdpdGggbGlnaHQgYW5kIGRhcmsgc3VwcG9ydGVk
IGNvbG9yIHNjaGVtZSIpOworCit0ZXN0KGZ1bmN0aW9uKCkgeworICAgIGRvY3VtZW50LmJvZHku
c3R5bGUuc2V0UHJvcGVydHkoInN1cHBvcnRlZC1jb2xvci1zY2hlbWVzIiwgImZvbyBkYXJrIik7
Cit9LCAiU3VwcG9ydGVkIGNvbG9yIHNjaGVtZXMgY2hhbmdlZCB0byBhIGJvZ3VzIHZhbHVlIGFu
ZCBkYXJrIik7CisKK3Rlc3QoZnVuY3Rpb24oKSB7CisgICAgLy8gVGhlIHNlbWFudGljIHRleHQg
Y29sb3Igc2hvdWxkIGJlIHdoaXRlIHN0aWxsLgorICAgIHRlc3RfY29sb3JfaXNfd2hpdGUoInRl
c3QxIik7Cit9LCAiRWxlbWVudCBjb2xvcnMgYXJlIGNvcnJlY3QgaW4gZGFyayBjb2xvciBzY2hl
bWUgd2l0aCBkYXJrIHN1cHBvcnRlZCBjb2xvciBzY2hlbWUiKTsKKzwvc2NyaXB0Pgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>354265</attachid>
            <date>2018-11-08 13:18:37 -0800</date>
            <delta_ts>2018-11-08 13:57:50 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-191319-20181108131836.patch</filename>
            <type>text/plain</type>
            <size>76625</size>
            <attacher name="Timothy Hatcher">timothy</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM3OTgyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjQzMjBlZTM0ODU0NzM2
NGYyMzE2MmRkMGQxNTVmMjM5MmMxMzkzMi4uZTJmYzU0MjdmYTlhYzRiMzRlMmJmOTM3Nzg5M2Jj
MDI2ZTFkODBmMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEwNiBAQAorMjAxOC0xMS0wOCAgVGlt
b3RoeSBIYXRjaGVyICA8dGltb3RoeUBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIGV4cGVyaW1l
bnRhbCBzdXBwb3J0IGZvciBhIGBzdXBwb3J0ZWQtY29sb3Itc2NoZW1lc2AgQ1NTIHByb3BlcnR5
LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkxMzE5
CisgICAgICAgIHJkYXI6Ly9wcm9ibGVtLzQ1ODUyMjYxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
RGVhbiBKYWNrc29uLgorCisgICAgICAgIFRlc3RzOiBjc3MtZGFyay1tb2RlL3BhcnNlLXN1cHBv
cnRlZC1jb2xvci1zY2hlbWVzLmh0bWwKKyAgICAgICAgICAgICAgIGNzcy1kYXJrLW1vZGUvc3Vw
cG9ydGVkLWNvbG9yLXNjaGVtZXMtY3NzLmh0bWwKKworICAgICAgICAqIFdlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBjc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xh
cmF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbXB1dGVkU3R5bGVFeHRyYWN0b3I6OnZh
bHVlRm9yUHJvcGVydHlpblN0eWxlKToKKyAgICAgICAgKiBjc3MvQ1NTUHJvcGVydGllcy5qc29u
OgorICAgICAgICAqIGNzcy9DU1NWYWx1ZUtleXdvcmRzLmluOgorICAgICAgICAqIGNzcy9TdHls
ZUJ1aWxkZXJDb252ZXJ0ZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlQnVpbGRlckNvbnZl
cnRlcjo6dXBkYXRlU3VwcG9ydGVkQ29sb3JTY2hlbWVzKToKKyAgICAgICAgKFdlYkNvcmU6OlN0
eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydFN1cHBvcnRlZENvbG9yU2NoZW1lcyk6CisgICAg
ICAgICogY3NzL1N0eWxlUmVzb2x2ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVSZXNv
bHZlcjo6Y29sb3JGcm9tUHJpbWl0aXZlVmFsdWUgY29uc3QpOgorICAgICAgICAqIGNzcy9wYXJz
ZXIvQ1NTUHJvcGVydHlQYXJzZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y29uc3VtZVN1cHBv
cnRlZENvbG9yU2NoZW1lcyk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQcm9wZXJ0eVBhcnNlcjo6
cGFyc2VTaW5nbGVWYWx1ZSk6CisgICAgICAgICogZG9tL0RvY3VtZW50LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkRvY3VtZW50OjpyZXNldExpbmtDb2xvcik6CisgICAgICAgIChXZWJDb3JlOjpE
b2N1bWVudDo6cmVzZXRWaXNpdGVkTGlua0NvbG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3Vt
ZW50OjpyZXNldEFjdGl2ZUxpbmtDb2xvcik6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6
cHJvY2Vzc1N1cHBvcnRlZENvbG9yU2NoZW1lcyk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVu
dDo6dXNlRGFya0FwcGVhcmFuY2UgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6
OnN0eWxlQ29sb3JPcHRpb25zIGNvbnN0KToKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuaDoKKyAg
ICAgICAgKiBlZGl0aW5nL2NvY29hL1dlYkNvbnRlbnRSZWFkZXJDb2NvYS5tbToKKyAgICAgICAg
KFdlYkNvcmU6OmNyZWF0ZUZyYWdtZW50KToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9DYW52YXNS
ZW5kZXJpbmdDb250ZXh0MkQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzUmVuZGVyaW5n
Q29udGV4dDJEOjpkcmF3Rm9jdXNJZk5lZWRlZEludGVybmFsKToKKyAgICAgICAgKiBpbnNwZWN0
b3IvSW5zcGVjdG9yT3ZlcmxheS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JPdmVy
bGF5OjpwYWludCk6CisgICAgICAgICogcGFnZS9GcmFtZVZpZXcuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6RnJhbWVWaWV3Ojp1c2VEYXJrQXBwZWFyYW5jZSBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpGcmFtZVZpZXc6OnBhaW50U2Nyb2xsQ29ybmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9t
YWMvRHJhZ0ltYWdlTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlRHJhZ0ltYWdlRm9y
TGluayk6CisgICAgICAgICogcmVuZGVyaW5nL0lubGluZUZsb3dCb3guY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SW5saW5lRmxvd0JveDo6cGFpbnRCb3hEZWNvcmF0aW9ucyk6CisgICAgICAgICog
cmVuZGVyaW5nL0lubGluZVRleHRCb3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lVGV4
dEJveDo6cGFpbnRQbGF0Zm9ybURvY3VtZW50TWFya2VyKToKKyAgICAgICAgKiByZW5kZXJpbmcv
UmVuZGVyQm94LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveDo6cGFpbnRSb290Qm94
RmlsbExheWVycyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3g6OnBhaW50QmFja2dyb3Vu
ZCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckVsZW1lbnQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyRWxlbWVudDo6c2VsZWN0aW9uQ29sb3IgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyRWxlbWVudDo6c2VsZWN0aW9uQmFja2dyb3VuZENvbG9yIGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlckVsZW1lbnQ6OnBhaW50Rm9jdXNSaW5nKToKKyAgICAgICAg
KiByZW5kZXJpbmcvUmVuZGVySW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVySW1h
Z2U6OnBhaW50QXJlYUVsZW1lbnRGb2N1c1JpbmcpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5k
ZXJMYXllckJhY2tpbmcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJCYWNraW5n
OjpwYWludENvbnRlbnRzKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3Np
dG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyQ29tcG9zaXRvcjo6cGFpbnRD
b250ZW50cyk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxpc3RCb3guY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyTGlzdEJveDo6cGFpbnRJdGVtRm9yZWdyb3VuZCk6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJMaXN0Qm94OjpwYWludEl0ZW1CYWNrZ3JvdW5kKToKKyAgICAgICAg
KiByZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck9i
amVjdDo6dXNlRGFya0FwcGVhcmFuY2UgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
T2JqZWN0OjpzdHlsZUNvbG9yT3B0aW9ucyBjb25zdCk6CisgICAgICAgICogcmVuZGVyaW5nL1Jl
bmRlck9iamVjdC5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUYWJsZUNlbGwuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGFibGVDZWxsOjpwYWludEJhY2tncm91bmRzQmVoaW5k
Q2VsbCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRoZW1lLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlclRoZW1lOjpwYWludCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRo
ZW1lLmg6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZTo6dXNpbmdEYXJrQXBwZWFyYW5j
ZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRoZW1lTWFjLmg6
CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRoZW1lTWFjLm1tOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyVGhlbWVNYWM6OmRvY3VtZW50Vmlld0ZvciBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJUaGVtZU1hYzo6YWRqdXN0TWVudUxpc3RTdHlsZSBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJUaGVtZU1hYzo6cGFpbnRDZWxsQW5kU2V0Rm9jdXNlZEVsZW1lbnRO
ZWVkc1JlcGFpbnRJZk5lY2Vzc2FyeSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZU1h
Yzo6cGFpbnRTbGlkZXJUaHVtYik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZU1hYzo6
dXNpbmdEYXJrQXBwZWFyYW5jZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogcmVuZGVyaW5n
L3N0eWxlL1JlbmRlclN0eWxlLmg6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6c3Vw
cG9ydGVkQ29sb3JTY2hlbWVzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxl
OjpzZXRTdXBwb3J0ZWRDb2xvclNjaGVtZXMpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5
bGU6OmluaXRpYWxTdXBwb3J0ZWRDb2xvclNjaGVtZXMpOgorICAgICAgICAqIHJlbmRlcmluZy9z
dHlsZS9SZW5kZXJTdHlsZUNvbnN0YW50cy5oOgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9T
dHlsZVJhcmVJbmhlcml0ZWREYXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUmFyZUlu
aGVyaXRlZERhdGE6OlN0eWxlUmFyZUluaGVyaXRlZERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6
U3R5bGVSYXJlSW5oZXJpdGVkRGF0YTo6b3BlcmF0b3I9PSBjb25zdCk6CisgICAgICAgICogcmVu
ZGVyaW5nL3N0eWxlL1N0eWxlUmFyZUluaGVyaXRlZERhdGEuaDoKKyAgICAgICAgKiByZW5kZXJp
bmcvc3R5bGUvU3R5bGVTdXBwb3J0ZWRDb2xvclNjaGVtZXMuaDogQWRkZWQuCisgICAgICAgIChX
ZWJDb3JlOjpTdHlsZVN1cHBvcnRlZENvbG9yU2NoZW1lczo6U3R5bGVTdXBwb3J0ZWRDb2xvclNj
aGVtZXMpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVTdXBwb3J0ZWRDb2xvclNjaGVtZXM6Om9w
ZXJhdG9yPT0gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVTdXBwb3J0ZWRDb2xvclNj
aGVtZXM6Om9wZXJhdG9yIT0gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVTdXBwb3J0
ZWRDb2xvclNjaGVtZXM6OmlzQXV0byBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVN1
cHBvcnRlZENvbG9yU2NoZW1lczo6aXNPbmx5IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlN0
eWxlU3VwcG9ydGVkQ29sb3JTY2hlbWVzOjpjb2xvclNjaGVtZXMgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6U3R5bGVTdXBwb3J0ZWRDb2xvclNjaGVtZXM6OmFkZCk6CisgICAgICAgIChXZWJD
b3JlOjpTdHlsZVN1cHBvcnRlZENvbG9yU2NoZW1lczo6Y29udGFpbnMgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6U3R5bGVTdXBwb3J0ZWRDb2xvclNjaGVtZXM6OnNldEFsbG93c1RyYW5zZm9y
bWF0aW9ucyk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVN1cHBvcnRlZENvbG9yU2NoZW1lczo6
YWxsb3dzVHJhbnNmb3JtYXRpb25zIGNvbnN0KToKKyAgICAgICAgKiBzdmcvZ3JhcGhpY3MvU1ZH
SW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHSW1hZ2U6OmRyYXcpOgorCiAyMDE4LTEx
LTA3ICBKdXN0aW4gTWljaGF1ZCAgPGp1c3Rpbl9taWNoYXVkQGFwcGxlLmNvbT4KIAogICAgICAg
ICBDU1MgUGFpbnRpbmcgQVBJIHNob3VsZCBwYXNzIHNpemUsIGFyZ3VtZW50cyBhbmQgaW5wdXQg
cHJvcGVydGllcyB0byBwYWludCBjYWxsYmFjawpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCBiMGJkNGY2ZWRmYWE1NWJm
MWEzOTM2MDUyMzM4YmFkNTdiZTQ5MGMzLi5hZmE3ZWY1NTVkOGY0YjlkN2RhZDk5ZmE2ZThiZjg5
MDM5YzQ4YzlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3Vy
Y2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDE4LTExLTA4ICBUaW1vdGh5
IEhhdGNoZXIgIDx0aW1vdGh5QGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgZXhwZXJpbWVudGFs
IHN1cHBvcnQgZm9yIGEgYHN1cHBvcnRlZC1jb2xvci1zY2hlbWVzYCBDU1MgcHJvcGVydHkuCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTEzMTkKKyAg
ICAgICAgcmRhcjovL3Byb2JsZW0vNDU4NTIyNjEKKworICAgICAgICBSZXZpZXdlZCBieSBEZWFu
IEphY2tzb24uCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0RPTS9Jbmpl
Y3RlZEJ1bmRsZVJhbmdlSGFuZGxlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6SW5qZWN0ZWRCdW5k
bGVSYW5nZUhhbmRsZTo6cmVuZGVyZWRJbWFnZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYlBhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpkcmF3UmVjdCk6CisK
IDIwMTgtMTEtMDggIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgog
CiAgICAgICAgIFtHVEtdIENyYXNoIHdoZW4gcnVubmluZyB3aXRoIHNhbmRib3ggZW5hYmxlZApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmlu
ZGV4IDE0MjA0YTViOGUzZTAzZDY5ZmE0ZTFiZDExYTIyYzA4MGJiMTkxZWUuLmI1NzQwODZiZDNm
NDg2YzZjMzk0Yjk1M2ZlNWVmMjZkNDM2OTYyYzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTYyNSw2ICs2MjUsNyBAQAogCQkx
QzAxMDcwMTE5MjU5NERGMDA4QTQyMDEgLyogSW5saW5lVGV4dEJveFN0eWxlLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQzAxMDZGRjE5MjU5NERGMDA4
QTQyMDEgLyogSW5saW5lVGV4dEJveFN0eWxlLmggKi87IH07CiAJCTFDMDkzOUVCMUExM0UxMjkw
MEI3ODhFNSAvKiBDYWNoZWRTVkdGb250LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAxQzA5MzlFOTFBMTNFMTI5MDBCNzg4RTUgLyogQ2FjaGVkU1ZHRm9u
dC5oICovOyB9OwogCQkxQzA5RDA1OTFFMzFDNkE5MDA3MjVGMTggLyogbGliUEFMLmEgaW4gRnJh
bWV3b3JrcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQzA5RDA1MDFFMzFD
MzI5MDA3MjVGMTggLyogbGliUEFMLmEgKi87IH07CisJCTFDMEFBMTZEMjE5NDBEQzgwMDg5Njgy
OSAvKiBTdHlsZVN1cHBvcnRlZENvbG9yU2NoZW1lcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUMwQUExNkEyMTk0MERDNzAwODk2ODI5IC8qIFN0eWxl
U3VwcG9ydGVkQ29sb3JTY2hlbWVzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKIAkJMUMxMkFDMkIxRUU3NzhBRTAwNzlFMEEwIC8qIEZvbnRGYW1pbHlT
cGVjaWZpY2F0aW9uQ29yZVRleHQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDFDMTJBQzI5MUVFNzc4QUUwMDc5RTBBMCAvKiBGb250RmFtaWx5U3BlY2lm
aWNhdGlvbkNvcmVUZXh0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJMUMxOERBNTkxODFBRjZBNTAwQzRFRjIyIC8qIFRleHRQYWludGVyLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQzE4REE1NzE4MUFG
NkE1MDBDNEVGMjIgLyogVGV4dFBhaW50ZXIuaCAqLzsgfTsKIAkJMUMyMUU1N0QxODNFRDFGRjAw
MUMyODlEIC8qIElPU3VyZmFjZVBvb2wuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDFDMjFFNTdCMTgzRUQxRkYwMDFDMjg5RCAvKiBJT1N1cmZhY2VQb29s
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTYz
NjgsNiArNjM2OSw3IEBACiAJCTFDMDkzOUU4MUExM0UxMjkwMEI3ODhFNSAvKiBDYWNoZWRTVkdG
b250LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENhY2hlZFNWR0Zv
bnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQzA5MzlFOTFBMTNFMTI5MDBC
Nzg4RTUgLyogQ2FjaGVkU1ZHRm9udC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBDYWNoZWRTVkdGb250Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFDMDlEMDRC
MUUzMUMzMjgwMDcyNUYxOCAvKiBQQUwueGNvZGVwcm9qICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gIndyYXBwZXIucGItcHJvamVjdCI7IG5hbWUgPSBQ
QUwueGNvZGVwcm9qOyBwYXRoID0gUEFML1BBTC54Y29kZXByb2o7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTFDMEFBMTZBMjE5NDBEQzcwMDg5NjgyOSAvKiBTdHlsZVN1cHBvcnRlZENv
bG9yU2NoZW1lcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTdHlsZVN1cHBv
cnRlZENvbG9yU2NoZW1lcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQzEyQUMy
ODFFRTc3OEFFMDA3OUUwQTAgLyogRm9udEZhbWlseVNwZWNpZmljYXRpb25Db3JlVGV4dC5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBGb250RmFtaWx5U3BlY2lmaWNhdGlvbkNvcmVUZXh0LmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUMxMkFDMjkxRUU3NzhBRTAwNzlFMEEwIC8q
IEZvbnRGYW1pbHlTcGVjaWZpY2F0aW9uQ29yZVRleHQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRm9udEZh
bWlseVNwZWNpZmljYXRpb25Db3JlVGV4dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQkxQzEyQUMyQzFFRTc3OTk1MDA3OUUwQTAgLyogRm9udERlc2NyaXB0aW9uQ29jb2EuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gRm9udERlc2NyaXB0aW9uQ29jb2EuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwpAQCAtMjQ2NjEsNiArMjQ2NjMsNyBAQAogCQkJCUY0N0E1RTNBMTk1QjhD
OEEwMDQ4MzEwMCAvKiBTdHlsZVNjcm9sbFNuYXBQb2ludHMuY3BwICovLAogCQkJCUY0N0E1RTNC
MTk1QjhDOEEwMDQ4MzEwMCAvKiBTdHlsZVNjcm9sbFNuYXBQb2ludHMuaCAqLywKIAkJCQk5RDYz
ODAwRjFBRjE2RTE2MDAzMUExNUMgLyogU3R5bGVTZWxmQWxpZ25tZW50RGF0YS5oICovLAorCQkJ
CTFDMEFBMTZBMjE5NDBEQzcwMDg5NjgyOSAvKiBTdHlsZVN1cHBvcnRlZENvbG9yU2NoZW1lcy5o
ICovLAogCQkJCUJDNUVCNUU2MEU4MUJGRUYwMEIyNTk2NSAvKiBTdHlsZVN1cnJvdW5kRGF0YS5j
cHAgKi8sCiAJCQkJQkM1RUI1RTQwRTgxQkY2RDAwQjI1OTY1IC8qIFN0eWxlU3Vycm91bmREYXRh
LmggKi8sCiAJCQkJQkM1RUI4MEQwRTgxRjJDRTAwQjI1OTY1IC8qIFN0eWxlVHJhbnNmb3JtRGF0
YS5jcHAgKi8sCkBAIC0zMTA2MCw2ICszMTA2Myw3IEBACiAJCQkJQThFQTgwMEMwQTE5NTE2RTAw
QThFRjVGIC8qIFN0eWxlU2hlZXQuaCBpbiBIZWFkZXJzICovLAogCQkJCUU0RjlFRUYzMTU2REEw
MDcwMEQyM0U3RSAvKiBTdHlsZVNoZWV0Q29udGVudHMuaCBpbiBIZWFkZXJzICovLAogCQkJCUE4
RUE4MDBBMEExOTUxNkUwMEE4RUY1RiAvKiBTdHlsZVNoZWV0TGlzdC5oIGluIEhlYWRlcnMgKi8s
CisJCQkJMUMwQUExNkQyMTk0MERDODAwODk2ODI5IC8qIFN0eWxlU3VwcG9ydGVkQ29sb3JTY2hl
bWVzLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzVFQjVFNTBFODFCRjZEMDBCMjU5NjUgLyogU3R5
bGVTdXJyb3VuZERhdGEuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDNUVCODEwMEU4MUYyQ0UwMEIy
NTk2NSAvKiBTdHlsZVRyYW5zZm9ybURhdGEuaCBpbiBIZWFkZXJzICovLAogCQkJCUU0REVBQTE4
MTdBOTNEQzMwMDBFMDQzMCAvKiBTdHlsZVRyZWVSZXNvbHZlci5oIGluIEhlYWRlcnMgKi8sCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9u
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3Bw
CmluZGV4IDJlZjY2Mjk1OWE5NGM3ZWRmYjk5ZDI4Zjc5M2ZiN2EwZTVmZmI2NzUuLjBhZmExMmZi
N2JkYTIwY2I4OTQ5MDliNzI1ZDFhNTg3ZjE5YjU5YTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwCkBAIC00NDgsNiArNDQ4LDkg
QEAgc3RhdGljIGNvbnN0IENTU1Byb3BlcnR5SUQgY29tcHV0ZWRQcm9wZXJ0aWVzW10gPSB7CiAg
ICAgQ1NTUHJvcGVydHlTdHJva2VNaXRlcmxpbWl0LAogICAgIENTU1Byb3BlcnR5U3Ryb2tlT3Bh
Y2l0eSwKICAgICBDU1NQcm9wZXJ0eVN0cm9rZVdpZHRoLAorI2lmIEVOQUJMRShEQVJLX01PREVf
Q1NTKQorICAgIENTU1Byb3BlcnR5U3VwcG9ydGVkQ29sb3JTY2hlbWVzLAorI2VuZGlmCiAgICAg
Q1NTUHJvcGVydHlBbGlnbm1lbnRCYXNlbGluZSwKICAgICBDU1NQcm9wZXJ0eUJhc2VsaW5lU2hp
ZnQsCiAgICAgQ1NTUHJvcGVydHlEb21pbmFudEJhc2VsaW5lLApAQCAtMzk2OSw2ICszOTcyLDI3
IEBAIFJlZlB0cjxDU1NWYWx1ZT4gQ29tcHV0ZWRTdHlsZUV4dHJhY3Rvcjo6dmFsdWVGb3JQcm9w
ZXJ0eWluU3R5bGUoY29uc3QgUmVuZGVyU3R5CiAgICAgICAgICAgICByZXR1cm4gY3NzVmFsdWVQ
b29sLmNyZWF0ZVZhbHVlKHN0eWxlLmFwcGxlUGF5QnV0dG9uVHlwZSgpKTsKICNlbmRpZgogCisj
aWYgRU5BQkxFKERBUktfTU9ERV9DU1MpCisgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlTdXBwb3J0
ZWRDb2xvclNjaGVtZXM6IHsKKyAgICAgICAgICAgIGlmICghUnVudGltZUVuYWJsZWRGZWF0dXJl
czo6c2hhcmVkRmVhdHVyZXMoKS5kYXJrTW9kZUNTU0VuYWJsZWQoKSkKKyAgICAgICAgICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKKworICAgICAgICAgICAgYXV0byBzdXBwb3J0ZWRDb2xvclNjaGVt
ZXMgPSBzdHlsZS5zdXBwb3J0ZWRDb2xvclNjaGVtZXMoKTsKKyAgICAgICAgICAgIGlmIChzdXBw
b3J0ZWRDb2xvclNjaGVtZXMuaXNBdXRvKCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIGNzc1Zh
bHVlUG9vbC5jcmVhdGVJZGVudGlmaWVyVmFsdWUoQ1NTVmFsdWVBdXRvKTsKKworICAgICAgICAg
ICAgYXV0byBsaXN0ID0gQ1NTVmFsdWVMaXN0OjpjcmVhdGVTcGFjZVNlcGFyYXRlZCgpOworICAg
ICAgICAgICAgaWYgKHN1cHBvcnRlZENvbG9yU2NoZW1lcy5jb250YWlucyhDb2xvclNjaGVtZXM6
OkxpZ2h0KSkKKyAgICAgICAgICAgICAgICBsaXN0LT5hcHBlbmQoY3NzVmFsdWVQb29sLmNyZWF0
ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1ZUxpZ2h0KSk7CisgICAgICAgICAgICBpZiAoc3VwcG9y
dGVkQ29sb3JTY2hlbWVzLmNvbnRhaW5zKENvbG9yU2NoZW1lczo6RGFyaykpCisgICAgICAgICAg
ICAgICAgbGlzdC0+YXBwZW5kKGNzc1ZhbHVlUG9vbC5jcmVhdGVJZGVudGlmaWVyVmFsdWUoQ1NT
VmFsdWVEYXJrKSk7CisgICAgICAgICAgICBpZiAoIXN1cHBvcnRlZENvbG9yU2NoZW1lcy5hbGxv
d3NUcmFuc2Zvcm1hdGlvbnMoKSkKKyAgICAgICAgICAgICAgICBsaXN0LT5hcHBlbmQoY3NzVmFs
dWVQb29sLmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1ZU9ubHkpKTsKKyAgICAgICAgICAg
IEFTU0VSVChsaXN0LT5sZW5ndGgoKSk7CisgICAgICAgICAgICByZXR1cm4gV1RGTW92ZShsaXN0
KTsKKyAgICAgICAgfQorI2VuZGlmCisKICAgICAgICAgLyogSW5kaXZpZHVhbCBwcm9wZXJ0aWVz
IG5vdCBwYXJ0IG9mIHRoZSBzcGVjICovCiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlCYWNrZ3Jv
dW5kUmVwZWF0WDoKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eUJhY2tncm91bmRSZXBlYXRZOgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1Byb3BlcnRpZXMuanNvbiBiL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NQcm9wZXJ0aWVzLmpzb24KaW5kZXggMjhkODQ4MmQ2NmNmODQ4MzFm
MzY4N2Y2Y2FmOGQxOTlmNDYyMGU3MC4uYTE1NGViMDNhMTAxNmYzOWNkMjM4YjBlZTVhMmNhYzVm
NzJmOGNmYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1Byb3BlcnRpZXMuanNv
bgorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJvcGVydGllcy5qc29uCkBAIC01NzEyLDYg
KzU3MTIsMjIgQEAKICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAic3RhdHVzIjogIm5vbi1z
dGFuZGFyZCIKICAgICAgICAgfSwKKyAgICAgICAgInN1cHBvcnRlZC1jb2xvci1zY2hlbWVzIjog
eworICAgICAgICAgICAgImluaGVyaXRlZCI6IHRydWUsCisgICAgICAgICAgICAidmFsdWVzIjog
WworICAgICAgICAgICAgICAgICJhdXRvIiwKKyAgICAgICAgICAgICAgICAibGlnaHQiLAorICAg
ICAgICAgICAgICAgICJkYXJrIiwKKyAgICAgICAgICAgICAgICAib25seSIKKyAgICAgICAgICAg
IF0sCisgICAgICAgICAgICAiY29kZWdlbi1wcm9wZXJ0aWVzIjogeworICAgICAgICAgICAgICAg
ICJjb252ZXJ0ZXIiOiAiU3VwcG9ydGVkQ29sb3JTY2hlbWVzIiwKKyAgICAgICAgICAgICAgICAi
ZW5hYmxlLWlmIjogIkVOQUJMRV9EQVJLX01PREVfQ1NTIgorICAgICAgICAgICAgfSwKKyAgICAg
ICAgICAgICJzdGF0dXMiOiB7CisgICAgICAgICAgICAgICAgInN0YXR1cyI6ICJub24tc3RhbmRh
cmQiCisgICAgICAgICAgICB9CisgICAgICAgIH0sCiAgICAgICAgICJvcmRlciI6IHsKICAgICAg
ICAgICAgICJjb2RlZ2VuLXByb3BlcnRpZXMiOiB7CiAgICAgICAgICAgICAgICAgImFsaWFzZXMi
OiBbCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFsdWVLZXl3b3Jkcy5pbiBi
L1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NWYWx1ZUtleXdvcmRzLmluCmluZGV4IDkwZjkxMmFjZWI1
NWExYWZkYmFhYjA5NWI2MmZiYzU0YWJiM2QyNTQuLjg2YjVlNTkxNGY0MGU3M2FmYjE0OTUyMTg0
M2E0ZWM5N2M4NjEwMTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NWYWx1ZUtl
eXdvcmRzLmluCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NWYWx1ZUtleXdvcmRzLmluCkBA
IC0xMzg0LDYgKzEzODQsMTEgQEAgbm8tcHJlZmVyZW5jZQogbGlnaHQKIGRhcmsKIC8vIG5vLXBy
ZWZlcmVuY2UKKworLy8gc3VwcG9ydGVkLWNvbG9yLXNjaGVtZXMKK29ubHkKKy8vIGxpZ2h0Cisv
LyBkYXJrCiAjZW5kaWYKIAogLy8gYXV0by1yZXBlYXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2Nzcy9TdHlsZUJ1aWxkZXJDb252ZXJ0ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHls
ZUJ1aWxkZXJDb252ZXJ0ZXIuaAppbmRleCAwZTgzOGJiNWQ4ZGYwMzM1NjQzODJkNTRmMmMzMThh
MWZmMTIzODc4Li5lNjFkMWY1NDcyZDQ5OTUwZTVlZTM1M2ZhNjAxNTk0YWY0NmNmMGQwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVCdWlsZGVyQ29udmVydGVyLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvY3NzL1N0eWxlQnVpbGRlckNvbnZlcnRlci5oCkBAIC03Nyw2ICs3Nyw5
IEBAIHB1YmxpYzoKICAgICB0ZW1wbGF0ZTxDU1NQcm9wZXJ0eUlEPiBzdGF0aWMgTmluZVBpZWNl
SW1hZ2UgY29udmVydEJvcmRlck1hc2soU3R5bGVSZXNvbHZlciYsIENTU1ZhbHVlJik7CiAgICAg
dGVtcGxhdGU8Q1NTUHJvcGVydHlJRD4gc3RhdGljIFJlZlB0cjxTdHlsZUltYWdlPiBjb252ZXJ0
U3R5bGVJbWFnZShTdHlsZVJlc29sdmVyJiwgQ1NTVmFsdWUmKTsKICAgICBzdGF0aWMgVHJhbnNm
b3JtT3BlcmF0aW9ucyBjb252ZXJ0VHJhbnNmb3JtKFN0eWxlUmVzb2x2ZXImLCBjb25zdCBDU1NW
YWx1ZSYpOworI2lmIEVOQUJMRShEQVJLX01PREVfQ1NTKQorICAgIHN0YXRpYyBTdHlsZVN1cHBv
cnRlZENvbG9yU2NoZW1lcyBjb252ZXJ0U3VwcG9ydGVkQ29sb3JTY2hlbWVzKFN0eWxlUmVzb2x2
ZXImLCBjb25zdCBDU1NWYWx1ZSYpOworI2VuZGlmCiAgICAgc3RhdGljIFN0cmluZyBjb252ZXJ0
U3RyaW5nKFN0eWxlUmVzb2x2ZXImLCBjb25zdCBDU1NWYWx1ZSYpOwogICAgIHN0YXRpYyBTdHJp
bmcgY29udmVydFN0cmluZ09yQXV0byhTdHlsZVJlc29sdmVyJiwgY29uc3QgQ1NTVmFsdWUmKTsK
ICAgICBzdGF0aWMgU3RyaW5nIGNvbnZlcnRTdHJpbmdPck5vbmUoU3R5bGVSZXNvbHZlciYsIGNv
bnN0IENTU1ZhbHVlJik7CkBAIC0xNjUsNiArMTY4LDEwIEBAIHByaXZhdGU6CiAgICAgc3RhdGlj
IExlbmd0aCBwYXJzZVNuYXBDb29yZGluYXRlKFN0eWxlUmVzb2x2ZXImLCBjb25zdCBDU1NWYWx1
ZSYpOwogI2VuZGlmCiAKKyNpZiBFTkFCTEUoREFSS19NT0RFX0NTUykKKyAgICBzdGF0aWMgdm9p
ZCB1cGRhdGVTdXBwb3J0ZWRDb2xvclNjaGVtZXMoY29uc3QgQ1NTUHJpbWl0aXZlVmFsdWUmLCBT
dHlsZVN1cHBvcnRlZENvbG9yU2NoZW1lcyYpOworI2VuZGlmCisKICAgICBzdGF0aWMgTGVuZ3Ro
IGNvbnZlcnRUbzEwMFBlcmNlbnRNaW51c0xlbmd0aChjb25zdCBMZW5ndGgmKTsKICAgICB0ZW1w
bGF0ZTxDU1NWYWx1ZUlELCBDU1NWYWx1ZUlEPiBzdGF0aWMgTGVuZ3RoIGNvbnZlcnRQb3NpdGlv
bkNvbXBvbmVudChTdHlsZVJlc29sdmVyJiwgY29uc3QgQ1NTUHJpbWl0aXZlVmFsdWUmKTsKIApA
QCAtNDUzLDYgKzQ2MCw0OCBAQCBpbmxpbmUgVHJhbnNmb3JtT3BlcmF0aW9ucyBTdHlsZUJ1aWxk
ZXJDb252ZXJ0ZXI6OmNvbnZlcnRUcmFuc2Zvcm0oU3R5bGVSZXNvbHZlcgogICAgIHJldHVybiBv
cGVyYXRpb25zOwogfQogCisjaWYgRU5BQkxFKERBUktfTU9ERV9DU1MpCitpbmxpbmUgdm9pZCBT
dHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OnVwZGF0ZVN1cHBvcnRlZENvbG9yU2NoZW1lcyhjb25zdCBD
U1NQcmltaXRpdmVWYWx1ZSYgcHJpbWl0aXZlVmFsdWUsIFN0eWxlU3VwcG9ydGVkQ29sb3JTY2hl
bWVzJiBzdXBwb3J0ZWRDb2xvclNjaGVtZXMpCit7CisgICAgQVNTRVJUKHByaW1pdGl2ZVZhbHVl
LmlzVmFsdWVJRCgpKTsKKworICAgIHN3aXRjaCAocHJpbWl0aXZlVmFsdWUudmFsdWVJRCgpKSB7
CisgICAgY2FzZSBDU1NWYWx1ZUF1dG86CisgICAgICAgIHN1cHBvcnRlZENvbG9yU2NoZW1lcyA9
IFN0eWxlU3VwcG9ydGVkQ29sb3JTY2hlbWVzKCk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2Ug
Q1NTVmFsdWVPbmx5OgorICAgICAgICBzdXBwb3J0ZWRDb2xvclNjaGVtZXMuc2V0QWxsb3dzVHJh
bnNmb3JtYXRpb25zKGZhbHNlKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBDU1NWYWx1ZUxp
Z2h0OgorICAgICAgICBzdXBwb3J0ZWRDb2xvclNjaGVtZXMuYWRkKENvbG9yU2NoZW1lczo6TGln
aHQpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIENTU1ZhbHVlRGFyazoKKyAgICAgICAgc3Vw
cG9ydGVkQ29sb3JTY2hlbWVzLmFkZChDb2xvclNjaGVtZXM6OkRhcmspOworICAgICAgICBicmVh
azsKKyAgICBkZWZhdWx0OgorICAgICAgICAvLyBVbmtub3duIGlkZW50aWZpZXJzIGFyZSBhbGxv
d2VkIGFuZCBpZ25vcmVkLgorICAgICAgICBicmVhazsKKyAgICB9Cit9CisKK2lubGluZSBTdHls
ZVN1cHBvcnRlZENvbG9yU2NoZW1lcyBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRTdXBw
b3J0ZWRDb2xvclNjaGVtZXMoU3R5bGVSZXNvbHZlciYsIGNvbnN0IENTU1ZhbHVlJiB2YWx1ZSkK
K3sKKyAgICBTdHlsZVN1cHBvcnRlZENvbG9yU2NoZW1lcyBzdXBwb3J0ZWRDb2xvclNjaGVtZXM7
CisKKyAgICBpZiAoaXM8Q1NTVmFsdWVMaXN0Pih2YWx1ZSkpIHsKKyAgICAgICAgZm9yIChhdXRv
JiBjdXJyZW50VmFsdWUgOiBkb3duY2FzdDxDU1NWYWx1ZUxpc3Q+KHZhbHVlKSkKKyAgICAgICAg
ICAgIHVwZGF0ZVN1cHBvcnRlZENvbG9yU2NoZW1lcyhkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1
ZT4oY3VycmVudFZhbHVlLmdldCgpKSwgc3VwcG9ydGVkQ29sb3JTY2hlbWVzKTsKKyAgICB9IGVs
c2UgaWYgKGlzPENTU1ByaW1pdGl2ZVZhbHVlPih2YWx1ZSkpCisgICAgICAgIHVwZGF0ZVN1cHBv
cnRlZENvbG9yU2NoZW1lcyhkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4odmFsdWUpLCBzdXBw
b3J0ZWRDb2xvclNjaGVtZXMpOworCisgICAgLy8gSWYgdGhlIHZhbHVlIHdhcyBqdXN0ICJvbmx5
IiwgdGhhdCBpcyBzeW5vbnltb3VzIGZvciAib25seSBsaWdodCIuCisgICAgaWYgKHN1cHBvcnRl
ZENvbG9yU2NoZW1lcy5pc09ubHkoKSkKKyAgICAgICAgc3VwcG9ydGVkQ29sb3JTY2hlbWVzLmFk
ZChDb2xvclNjaGVtZXM6OkxpZ2h0KTsKKworICAgIHJldHVybiBzdXBwb3J0ZWRDb2xvclNjaGVt
ZXM7Cit9CisjZW5kaWYKKwogaW5saW5lIFN0cmluZyBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNv
bnZlcnRTdHJpbmcoU3R5bGVSZXNvbHZlciYsIGNvbnN0IENTU1ZhbHVlJiB2YWx1ZSkKIHsKICAg
ICByZXR1cm4gZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KHZhbHVlKS5zdHJpbmdWYWx1ZSgp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuY3BwCmluZGV4IDc1YjBiOGQ0MWEyOTQ0ZGMw
OGUxNGM1NWNlODE2OGYyZWJiODAxZDcuLjI0YjA2YmVjOTMzN2UxNmJiOGFiN2YyNGRlZjkwOWE3
OGE1MjgzYmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5jcHAKQEAgLTE4NDEsMTQg
KzE4NDEsMTQgQEAgQ29sb3IgU3R5bGVSZXNvbHZlcjo6Y29sb3JGcm9tUHJpbWl0aXZlVmFsdWUo
Y29uc3QgQ1NTUHJpbWl0aXZlVmFsdWUmIHZhbHVlLCBib28KICAgICBjYXNlIENTU1ZhbHVlV2Vi
a2l0QWN0aXZlbGluazoKICAgICAgICAgcmV0dXJuIGRvY3VtZW50KCkuYWN0aXZlTGlua0NvbG9y
KCk7CiAgICAgY2FzZSBDU1NWYWx1ZVdlYmtpdEZvY3VzUmluZ0NvbG9yOgotICAgICAgICByZXR1
cm4gUmVuZGVyVGhlbWU6OmZvY3VzUmluZ0NvbG9yKGRvY3VtZW50KCkuc3R5bGVDb2xvck9wdGlv
bnMoKSk7CisgICAgICAgIHJldHVybiBSZW5kZXJUaGVtZTo6Zm9jdXNSaW5nQ29sb3IoZG9jdW1l
bnQoKS5zdHlsZUNvbG9yT3B0aW9ucyhtX3N0YXRlLnN0eWxlKCkpKTsKICAgICBjYXNlIENTU1Zh
bHVlQ3VycmVudGNvbG9yOgogICAgICAgICAvLyBDb2xvciBpcyBhbiBpbmhlcml0ZWQgcHJvcGVy
dHkgc28gZGVwZW5kaW5nIG9uIGl0IGVmZmVjdGl2ZWx5IG1ha2VzIHRoZSBwcm9wZXJ0eSBpbmhl
cml0ZWQuCiAgICAgICAgIC8vIEZJWE1FOiBTZXR0aW5nIHRoZSBmbGFnIGFzIGEgc2lkZSBlZmZl
Y3Qgb2YgY2FsbGluZyB0aGlzIGZ1bmN0aW9uIGlzIGEgYml0IG9ibGlxdWUuIENhbiB3ZSBkbyBi
ZXR0ZXI/CiAgICAgICAgIG1fc3RhdGUuc3R5bGUoKS0+c2V0SGFzRXhwbGljaXRseUluaGVyaXRl
ZFByb3BlcnRpZXMoKTsKICAgICAgICAgcmV0dXJuIG1fc3RhdGUuc3R5bGUoKS0+Y29sb3IoKTsK
ICAgICBkZWZhdWx0OgotICAgICAgICByZXR1cm4gU3R5bGVDb2xvcjo6Y29sb3JGcm9tS2V5d29y
ZChpZGVudGlmaWVyLCBkb2N1bWVudCgpLnN0eWxlQ29sb3JPcHRpb25zKCkpOworICAgICAgICBy
ZXR1cm4gU3R5bGVDb2xvcjo6Y29sb3JGcm9tS2V5d29yZChpZGVudGlmaWVyLCBkb2N1bWVudCgp
LnN0eWxlQ29sb3JPcHRpb25zKG1fc3RhdGUuc3R5bGUoKSkpOwogICAgIH0KIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQcm9wZXJ0eVBhcnNlci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1Byb3BlcnR5UGFyc2VyLmNwcAppbmRleCBkM2Ew
NDc3YTc0MzIyZmEyNjJhMTY5MTFhNzMxOGI2YjY4YmQ3YTczLi4xNWU3ZmU2MDQ1YTdkNGE0YWVl
MjkzMmM0NzI1MGI1ODcxNjQ2YmZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFy
c2VyL0NTU1Byb3BlcnR5UGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2Vy
L0NTU1Byb3BlcnR5UGFyc2VyLmNwcApAQCAtMzc0Nyw3ICszNzQ3LDUxIEBAIHN0YXRpYyBSZWZQ
dHI8Q1NTVmFsdWU+IGNvbnN1bWVUZXh0RW1waGFzaXNQb3NpdGlvbihDU1NQYXJzZXJUb2tlblJh
bmdlJiByYW5nZSkKICAgICAgICAgbGlzdC0+YXBwZW5kKENTU1ZhbHVlUG9vbDo6c2luZ2xldG9u
KCkuY3JlYXRlSWRlbnRpZmllclZhbHVlKGxlZnRSaWdodFZhbHVlSUQpKTsKICAgICByZXR1cm4g
bGlzdDsKIH0KLSAgICAKKworI2lmIEVOQUJMRShEQVJLX01PREVfQ1NTKQorCitzdGF0aWMgUmVm
UHRyPENTU1ZhbHVlPiBjb25zdW1lU3VwcG9ydGVkQ29sb3JTY2hlbWVzKENTU1BhcnNlclRva2Vu
UmFuZ2UmIHJhbmdlKQoreworICAgIGlmIChpc0F1dG8ocmFuZ2UucGVlaygpLmlkKCkpKQorICAg
ICAgICByZXR1cm4gY29uc3VtZUlkZW50KHJhbmdlKTsKKworICAgIFZlY3RvcjxDU1NWYWx1ZUlE
LCAzPiBpZGVudGlmaWVyczsKKworICAgIHdoaWxlICghcmFuZ2UuYXRFbmQoKSkgeworICAgICAg
ICBpZiAocmFuZ2UucGVlaygpLnR5cGUoKSAhPSBJZGVudFRva2VuKQorICAgICAgICAgICAgcmV0
dXJuIG51bGxwdHI7CisKKyAgICAgICAgQ1NTVmFsdWVJRCBpZCA9IHJhbmdlLnBlZWsoKS5pZCgp
OworCisgICAgICAgIHN3aXRjaCAoaWQpIHsKKyAgICAgICAgY2FzZSBDU1NWYWx1ZUF1dG86Cisg
ICAgICAgICAgICAvLyBBdXRvIGlzIG9ubHkgYWxsb3dlZCBhcyBhIHNpbmdsZSB2YWx1ZSwgYW5k
IHdhcyBoYW5kbGVkIGVhcmxpZXIuCisgICAgICAgICAgICAvLyBEb24ndCBhbGxvdyBpdCBpbiB0
aGUgbGlzdC4KKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgICAgIGNhc2UgQ1NT
VmFsdWVPbmx5OgorICAgICAgICBjYXNlIENTU1ZhbHVlTGlnaHQ6CisgICAgICAgIGNhc2UgQ1NT
VmFsdWVEYXJrOgorICAgICAgICAgICAgaWYgKCFpZGVudGlmaWVycy5hcHBlbmRJZk5vdENvbnRh
aW5zKGlkKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgICAgIGJy
ZWFrOworCisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAvLyBVbmtub3duIGlkZW50aWZp
ZXJzIGFyZSBhbGxvd2VkIGFuZCBpZ25vcmVkLgorICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
IH0KKworICAgICAgICByYW5nZS5jb25zdW1lSW5jbHVkaW5nV2hpdGVzcGFjZSgpOworICAgIH0K
KworICAgIFJlZlB0cjxDU1NWYWx1ZUxpc3Q+IGxpc3QgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZVNw
YWNlU2VwYXJhdGVkKCk7CisgICAgZm9yIChhdXRvIGlkIDogaWRlbnRpZmllcnMpCisgICAgICAg
IGxpc3QtPmFwcGVuZChDU1NWYWx1ZVBvb2w6OnNpbmdsZXRvbigpLmNyZWF0ZUlkZW50aWZpZXJW
YWx1ZShpZCkpOworICAgIHJldHVybiBsaXN0OworfQorCisjZW5kaWYKKwogI2lmIEVOQUJMRShE
QVNIQk9BUkRfU1VQUE9SVCkKIAogc3RhdGljIFJlZlB0cjxDU1NWYWx1ZT4gY29uc3VtZVdlYmtp
dERhc2hib2FyZFJlZ2lvbihDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSwgQ1NTUGFyc2VyTW9k
ZSBtb2RlKQpAQCAtNDI4OSw2ICs0MzMzLDEyIEBAIFJlZlB0cjxDU1NWYWx1ZT4gQ1NTUHJvcGVy
dHlQYXJzZXI6OnBhcnNlU2luZ2xlVmFsdWUoQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eSwgQ1NTCiAg
ICAgICAgIHJldHVybiBjb25zdW1lV2Via2l0QXNwZWN0UmF0aW8obV9yYW5nZSk7CiAgICAgY2Fz
ZSBDU1NQcm9wZXJ0eVdlYmtpdFRleHRFbXBoYXNpc1Bvc2l0aW9uOgogICAgICAgICByZXR1cm4g
Y29uc3VtZVRleHRFbXBoYXNpc1Bvc2l0aW9uKG1fcmFuZ2UpOworI2lmIEVOQUJMRShEQVJLX01P
REVfQ1NTKQorICAgIGNhc2UgQ1NTUHJvcGVydHlTdXBwb3J0ZWRDb2xvclNjaGVtZXM6CisgICAg
ICAgIGlmICghUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMoKS5kYXJrTW9k
ZUNTU0VuYWJsZWQoKSkKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICByZXR1
cm4gY29uc3VtZVN1cHBvcnRlZENvbG9yU2NoZW1lcyhtX3JhbmdlKTsKKyNlbmRpZgogI2lmIEVO
QUJMRShEQVNIQk9BUkRfU1VQUE9SVCkKICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0RGFzaGJv
YXJkUmVnaW9uOgogICAgICAgICByZXR1cm4gY29uc3VtZVdlYmtpdERhc2hib2FyZFJlZ2lvbiht
X3JhbmdlLCBtX2NvbnRleHQubW9kZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20v
RG9jdW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAppbmRleCAxZTZi
YzRiYzViYTAzZDlhY2RkNDEwNTUyODdlOWIwNjBjMjU0OWM1Li5mMDczMTQyMTFkODZiMTcyMjU0
NDFhYTE0NDUwZGE5OTZjMzVmYzc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9j
dW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKQEAgLTgxNywx
NyArODE3LDE3IEBAIFN0cmluZyBEb2N1bWVudDo6Y29tcGF0TW9kZSgpIGNvbnN0CiAKIHZvaWQg
RG9jdW1lbnQ6OnJlc2V0TGlua0NvbG9yKCkKIHsKLSAgICBtX2xpbmtDb2xvciA9IFN0eWxlQ29s
b3I6OmNvbG9yRnJvbUtleXdvcmQoQ1NTVmFsdWVXZWJraXRMaW5rLCBzdHlsZUNvbG9yT3B0aW9u
cygpKTsKKyAgICBtX2xpbmtDb2xvciA9IFN0eWxlQ29sb3I6OmNvbG9yRnJvbUtleXdvcmQoQ1NT
VmFsdWVXZWJraXRMaW5rLCBzdHlsZUNvbG9yT3B0aW9ucyhudWxscHRyKSk7CiB9CiAKIHZvaWQg
RG9jdW1lbnQ6OnJlc2V0VmlzaXRlZExpbmtDb2xvcigpCiB7Ci0gICAgbV92aXNpdGVkTGlua0Nv
bG9yID0gU3R5bGVDb2xvcjo6Y29sb3JGcm9tS2V5d29yZChDU1NWYWx1ZVdlYmtpdExpbmssIHN0
eWxlQ29sb3JPcHRpb25zKCkgfCBTdHlsZUNvbG9yOjpPcHRpb25zOjpGb3JWaXNpdGVkTGluayk7
CisgICAgbV92aXNpdGVkTGlua0NvbG9yID0gU3R5bGVDb2xvcjo6Y29sb3JGcm9tS2V5d29yZChD
U1NWYWx1ZVdlYmtpdExpbmssIHN0eWxlQ29sb3JPcHRpb25zKG51bGxwdHIpIHwgU3R5bGVDb2xv
cjo6T3B0aW9uczo6Rm9yVmlzaXRlZExpbmspOwogfQogCiB2b2lkIERvY3VtZW50OjpyZXNldEFj
dGl2ZUxpbmtDb2xvcigpCiB7Ci0gICAgbV9hY3RpdmVMaW5rQ29sb3IgPSBTdHlsZUNvbG9yOjpj
b2xvckZyb21LZXl3b3JkKENTU1ZhbHVlV2Via2l0QWN0aXZlbGluaywgc3R5bGVDb2xvck9wdGlv
bnMoKSk7CisgICAgbV9hY3RpdmVMaW5rQ29sb3IgPSBTdHlsZUNvbG9yOjpjb2xvckZyb21LZXl3
b3JkKENTU1ZhbHVlV2Via2l0QWN0aXZlbGluaywgc3R5bGVDb2xvck9wdGlvbnMobnVsbHB0cikp
OwogfQogCiBET01JbXBsZW1lbnRhdGlvbiYgRG9jdW1lbnQ6OmltcGxlbWVudGF0aW9uKCkKQEAg
LTM1OTAsMTggKzM1OTAsMzQgQEAgc3RhdGljIHZvaWQgcHJvY2Vzc0NvbG9yU2NoZW1lcyhTdHJp
bmdWaWV3IGNvbG9yU2NoZW1lcywgY29uc3QgV1RGOjpGdW5jdGlvbjx2b2kKIHZvaWQgRG9jdW1l
bnQ6OnByb2Nlc3NTdXBwb3J0ZWRDb2xvclNjaGVtZXMoY29uc3QgU3RyaW5nJiBjb2xvclNjaGVt
ZXMpCiB7CiAgICAgT3B0aW9uU2V0PENvbG9yU2NoZW1lcz4gc3VwcG9ydGVkQ29sb3JTY2hlbWVz
OworICAgIGJvb2wgYWxsb3dzVHJhbnNmb3JtYXRpb25zID0gdHJ1ZTsKKyAgICBib29sIGF1dG9F
bmNvdW50ZXJlZCA9IGZhbHNlOworCisgICAgcHJvY2Vzc0NvbG9yU2NoZW1lcyhjb2xvclNjaGVt
ZXMsIFsmXShTdHJpbmdWaWV3IGtleSkgeworICAgICAgICBpZiAoZXF1YWxMZXR0ZXJzSWdub3Jp
bmdBU0NJSUNhc2Uoa2V5LCAiYXV0byIpKSB7CisgICAgICAgICAgICBzdXBwb3J0ZWRDb2xvclNj
aGVtZXMgPSB7IH07CisgICAgICAgICAgICBhbGxvd3NUcmFuc2Zvcm1hdGlvbnMgPSB0cnVlOwor
ICAgICAgICAgICAgYXV0b0VuY291bnRlcmVkID0gdHJ1ZTsKKyAgICAgICAgICAgIHJldHVybjsK
KyAgICAgICAgfQorCisgICAgICAgIGlmIChhdXRvRW5jb3VudGVyZWQpCisgICAgICAgICAgICBy
ZXR1cm47CiAKLSAgICBwcm9jZXNzQ29sb3JTY2hlbWVzKGNvbG9yU2NoZW1lcywgWyZzdXBwb3J0
ZWRDb2xvclNjaGVtZXNdKFN0cmluZ1ZpZXcga2V5KSB7CiAgICAgICAgIGlmIChlcXVhbExldHRl
cnNJZ25vcmluZ0FTQ0lJQ2FzZShrZXksICJsaWdodCIpKQogICAgICAgICAgICAgc3VwcG9ydGVk
Q29sb3JTY2hlbWVzLmFkZChDb2xvclNjaGVtZXM6OkxpZ2h0KTsKICAgICAgICAgZWxzZSBpZiAo
ZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2Uoa2V5LCAiZGFyayIpKQogICAgICAgICAgICAg
c3VwcG9ydGVkQ29sb3JTY2hlbWVzLmFkZChDb2xvclNjaGVtZXM6OkRhcmspOworICAgICAgICBl
bHNlIGlmIChlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShrZXksICJvbmx5IikpCisgICAg
ICAgICAgICBhbGxvd3NUcmFuc2Zvcm1hdGlvbnMgPSBmYWxzZTsKICAgICB9KTsKIAotICAgIGlm
IChzdXBwb3J0ZWRDb2xvclNjaGVtZXMuaXNFbXB0eSgpKQorICAgIC8vIElmIHRoZSB2YWx1ZSB3
YXMganVzdCAib25seSIsIHRoYXQgaXMgc3lub255bW91cyBmb3IgIm9ubHkgbGlnaHQiLgorICAg
IGlmIChzdXBwb3J0ZWRDb2xvclNjaGVtZXMuaXNFbXB0eSgpICYmICFhbGxvd3NUcmFuc2Zvcm1h
dGlvbnMpCiAgICAgICAgIHN1cHBvcnRlZENvbG9yU2NoZW1lcy5hZGQoQ29sb3JTY2hlbWVzOjpM
aWdodCk7CiAKICAgICBtX3N1cHBvcnRlZENvbG9yU2NoZW1lcyA9IHN1cHBvcnRlZENvbG9yU2No
ZW1lczsKKyAgICBtX2FsbG93c0NvbG9yU2NoZW1lVHJhbnNmb3JtYXRpb25zID0gYWxsb3dzVHJh
bnNmb3JtYXRpb25zOwogCiAgICAgaWYgKGF1dG8qIHBhZ2UgPSB0aGlzLT5wYWdlKCkpCiAgICAg
ICAgIHBhZ2UtPnVwZGF0ZVN0eWxlQWZ0ZXJDaGFuZ2VJbkVudmlyb25tZW50KCk7CkBAIC03Mjgx
LDExICs3Mjk3LDIzIEBAIGJvb2wgRG9jdW1lbnQ6OnVzZVN5c3RlbUFwcGVhcmFuY2UoKSBjb25z
dAogICAgIHJldHVybiB1c2VTeXN0ZW1BcHBlYXJhbmNlOwogfQogCi1ib29sIERvY3VtZW50Ojp1
c2VEYXJrQXBwZWFyYW5jZSgpIGNvbnN0Citib29sIERvY3VtZW50Ojp1c2VEYXJrQXBwZWFyYW5j
ZShjb25zdCBSZW5kZXJTdHlsZSogc3R5bGUpIGNvbnN0CiB7CiAjaWYgRU5BQkxFKERBUktfTU9E
RV9DU1MpCi0gICAgaWYgKG1fc3VwcG9ydGVkQ29sb3JTY2hlbWVzLmNvbnRhaW5zKENvbG9yU2No
ZW1lczo6RGFyaykgJiYgIW1fc3VwcG9ydGVkQ29sb3JTY2hlbWVzLmNvbnRhaW5zKENvbG9yU2No
ZW1lczo6TGlnaHQpKQorICAgIE9wdGlvblNldDxDb2xvclNjaGVtZXM+IHN1cHBvcnRlZENvbG9y
U2NoZW1lczsKKworICAgIC8vIFVzZSB0aGUgc3R5bGUncyBzdXBwb3J0ZWQgY29sb3Igc2NoZW1l
cywgaWYgc3VwcGxpZWQuCisgICAgaWYgKHN0eWxlKQorICAgICAgICBzdXBwb3J0ZWRDb2xvclNj
aGVtZXMgPSBzdHlsZS0+c3VwcG9ydGVkQ29sb3JTY2hlbWVzKCkuY29sb3JTY2hlbWVzKCk7CisK
KyAgICAvLyBGYWxsYmFjayB0byB0aGUgZG9jdW1lbnQncyBzdXBwb3J0ZWQgY29sb3Igc2NoZW1l
cyBpZiBzdHlsZSB3YXMgZW1wdHkgKGF1dG8pLgorICAgIGlmIChzdXBwb3J0ZWRDb2xvclNjaGVt
ZXMuaXNFbXB0eSgpKQorICAgICAgICBzdXBwb3J0ZWRDb2xvclNjaGVtZXMgPSBtX3N1cHBvcnRl
ZENvbG9yU2NoZW1lczsKKworICAgIGlmIChzdXBwb3J0ZWRDb2xvclNjaGVtZXMuY29udGFpbnMo
Q29sb3JTY2hlbWVzOjpEYXJrKSAmJiAhc3VwcG9ydGVkQ29sb3JTY2hlbWVzLmNvbnRhaW5zKENv
bG9yU2NoZW1lczo6TGlnaHQpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKKyNlbHNlCisgICAgVU5V
U0VEX1BBUkFNKHN0eWxlKTsKICNlbmRpZgogCiAgICAgYm9vbCBwYWdlVXNlc0RhcmtBcHBlYXJh
bmNlID0gZmFsc2U7CkBAIC03Mjk2LDIxICs3MzI0LDE5IEBAIGJvb2wgRG9jdW1lbnQ6OnVzZURh
cmtBcHBlYXJhbmNlKCkgY29uc3QKICAgICAgICAgcmV0dXJuIHBhZ2VVc2VzRGFya0FwcGVhcmFu
Y2U7CiAKICNpZiBFTkFCTEUoREFSS19NT0RFX0NTUykKLSAgICBpZiAobV9zdXBwb3J0ZWRDb2xv
clNjaGVtZXMuY29udGFpbnMoQ29sb3JTY2hlbWVzOjpEYXJrKSkKKyAgICBpZiAoc3VwcG9ydGVk
Q29sb3JTY2hlbWVzLmNvbnRhaW5zKENvbG9yU2NoZW1lczo6RGFyaykpCiAgICAgICAgIHJldHVy
biBwYWdlVXNlc0RhcmtBcHBlYXJhbmNlOwotCi0gICAgQVNTRVJUKG1fc3VwcG9ydGVkQ29sb3JT
Y2hlbWVzLmNvbnRhaW5zKENvbG9yU2NoZW1lczo6TGlnaHQpKTsKICNlbmRpZgogCiAgICAgcmV0
dXJuIGZhbHNlOwogfQogCi1PcHRpb25TZXQ8U3R5bGVDb2xvcjo6T3B0aW9ucz4gRG9jdW1lbnQ6
OnN0eWxlQ29sb3JPcHRpb25zKCkgY29uc3QKK09wdGlvblNldDxTdHlsZUNvbG9yOjpPcHRpb25z
PiBEb2N1bWVudDo6c3R5bGVDb2xvck9wdGlvbnMoY29uc3QgUmVuZGVyU3R5bGUqIHN0eWxlKSBj
b25zdAogewogICAgIE9wdGlvblNldDxTdHlsZUNvbG9yOjpPcHRpb25zPiBvcHRpb25zOwogICAg
IGlmICh1c2VTeXN0ZW1BcHBlYXJhbmNlKCkpCiAgICAgICAgIG9wdGlvbnMuYWRkKFN0eWxlQ29s
b3I6Ok9wdGlvbnM6OlVzZVN5c3RlbUFwcGVhcmFuY2UpOwotICAgIGlmICh1c2VEYXJrQXBwZWFy
YW5jZSgpKQorICAgIGlmICh1c2VEYXJrQXBwZWFyYW5jZShzdHlsZSkpCiAgICAgICAgIG9wdGlv
bnMuYWRkKFN0eWxlQ29sb3I6Ok9wdGlvbnM6OlVzZURhcmtBcHBlYXJhbmNlKTsKICAgICByZXR1
cm4gb3B0aW9uczsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5o
IGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKaW5kZXggNmE3MjY1YTliMWJmNzM1ZGNi
ZWM5MzRiNzdiY2ZmZmEwMmRhZDVjYS4uY2Q1M2RiYTY4NWE5YjAzMGEzNDI2ODBkNTJmNDM1YmY1
ZDNjOWIxMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKQEAgLTU3OCw5ICs1NzgsOSBAQCBwdWJsaWM6
CiAgICAgZmxvYXQgZGV2aWNlU2NhbGVGYWN0b3IoKSBjb25zdDsKIAogICAgIFdFQkNPUkVfRVhQ
T1JUIGJvb2wgdXNlU3lzdGVtQXBwZWFyYW5jZSgpIGNvbnN0OwotICAgIFdFQkNPUkVfRVhQT1JU
IGJvb2wgdXNlRGFya0FwcGVhcmFuY2UoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBib29s
IHVzZURhcmtBcHBlYXJhbmNlKGNvbnN0IFJlbmRlclN0eWxlKikgY29uc3Q7CiAKLSAgICBPcHRp
b25TZXQ8U3R5bGVDb2xvcjo6T3B0aW9ucz4gc3R5bGVDb2xvck9wdGlvbnMoKSBjb25zdDsKKyAg
ICBPcHRpb25TZXQ8U3R5bGVDb2xvcjo6T3B0aW9ucz4gc3R5bGVDb2xvck9wdGlvbnMoY29uc3Qg
UmVuZGVyU3R5bGUqKSBjb25zdDsKIAogICAgIFdFQkNPUkVfRVhQT1JUIFJlZjxSYW5nZT4gY3Jl
YXRlUmFuZ2UoKTsKIApAQCAtOTAxLDExICs5MDEsNiBAQCBwdWJsaWM6CiAgICAgdm9pZCBwcm9j
ZXNzUmVmZXJyZXJQb2xpY3koY29uc3QgU3RyaW5nJiBwb2xpY3ksIFJlZmVycmVyUG9saWN5U291
cmNlKTsKIAogI2lmIEVOQUJMRShEQVJLX01PREVfQ1NTKQotICAgIGVudW0gY2xhc3MgQ29sb3JT
Y2hlbWVzIDogdWludDhfdCB7Ci0gICAgICAgIExpZ2h0ID0gMSA8PCAwLAotICAgICAgICBEYXJr
ID0gMSA8PCAxCi0gICAgfTsKLQogICAgIHZvaWQgcHJvY2Vzc1N1cHBvcnRlZENvbG9yU2NoZW1l
cyhjb25zdCBTdHJpbmcmIGNvbG9yU2NoZW1lcyk7CiAjZW5kaWYKIApAQCAtMTc3Miw3ICsxNzY3
LDggQEAgcHJpdmF0ZToKICAgICBIYXNoU2V0PFNWR1VzZUVsZW1lbnQqPiBtX3N2Z1VzZUVsZW1l
bnRzOwogCiAjaWYgRU5BQkxFKERBUktfTU9ERV9DU1MpCi0gICAgT3B0aW9uU2V0PENvbG9yU2No
ZW1lcz4gbV9zdXBwb3J0ZWRDb2xvclNjaGVtZXMgeyBDb2xvclNjaGVtZXM6OkxpZ2h0IH07Cisg
ICAgT3B0aW9uU2V0PENvbG9yU2NoZW1lcz4gbV9zdXBwb3J0ZWRDb2xvclNjaGVtZXM7CisgICAg
Ym9vbCBtX2FsbG93c0NvbG9yU2NoZW1lVHJhbnNmb3JtYXRpb25zIHsgdHJ1ZSB9OwogI2VuZGlm
CiAKICNpZiBFTkFCTEUoREFTSEJPQVJEX1NVUFBPUlQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL2NvY29hL1dlYkNvbnRlbnRSZWFkZXJDb2NvYS5tbSBiL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvY29jb2EvV2ViQ29udGVudFJlYWRlckNvY29hLm1tCmluZGV4IGFlZmViMWFm
MWY2OTNjMzkxMmJkZjhkNjhkM2ZkOWQ1Y2M3NjVmZWMuLmQ0MjA3YjljZjFjMWNkNjg4NDczZDRi
ZjA4YjRlYTI4MDBiNzQ2YjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29j
b2EvV2ViQ29udGVudFJlYWRlckNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
Y29jb2EvV2ViQ29udGVudFJlYWRlckNvY29hLm1tCkBAIC01MCw2ICs1MCw3IEBACiAjaW1wb3J0
ICJNSU1FVHlwZVJlZ2lzdHJ5LmgiCiAjaW1wb3J0ICJQYWdlLmgiCiAjaW1wb3J0ICJQdWJsaWNV
UkxNYW5hZ2VyLmgiCisjaW1wb3J0ICJSZW5kZXJWaWV3LmgiCiAjaW1wb3J0ICJSdW50aW1lRW5h
YmxlZEZlYXR1cmVzLmgiCiAjaW1wb3J0ICJTZXJpYWxpemVkQXR0YWNobWVudERhdGEuaCIKICNp
bXBvcnQgIlNldHRpbmdzLmgiCkBAIC0xMzMsNyArMTM0LDkgQEAgc3RhdGljIEZyYWdtZW50QW5k
UmVzb3VyY2VzIGNyZWF0ZUZyYWdtZW50KEZyYW1lJiBmcmFtZSwgTlNBdHRyaWJ1dGVkU3RyaW5n
ICpzdHIKICAgICBEb2N1bWVudCYgZG9jdW1lbnQgPSAqZnJhbWUuZG9jdW1lbnQoKTsKIAogI2lm
IFBMQVRGT1JNKE1BQykKLSAgICBMb2NhbERlZmF1bHRTeXN0ZW1BcHBlYXJhbmNlIGxvY2FsQXBw
ZWFyYW5jZShkb2N1bWVudC51c2VEYXJrQXBwZWFyYW5jZSgpKTsKKyAgICBhdXRvKiB2aWV3ID0g
ZnJhbWUudmlldygpOworICAgIGF1dG8qIHJlbmRlclZpZXcgPSB2aWV3ID8gdmlldy0+cmVuZGVy
VmlldygpIDogbnVsbHB0cjsKKyAgICBMb2NhbERlZmF1bHRTeXN0ZW1BcHBlYXJhbmNlIGxvY2Fs
QXBwZWFyYW5jZShyZW5kZXJWaWV3ID8gcmVuZGVyVmlldy0+dXNlRGFya0FwcGVhcmFuY2UoKSA6
IGZhbHNlKTsKICNlbmRpZgogCiAgICAgTlNBcnJheSAqc3VicmVzb3VyY2VzID0gbmlsOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4
dDJELmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRl
eHQyRC5jcHAKaW5kZXggZDE1ZGVjNDYwZWQ3NTQ4YmI1NzZjMTc5NTE2MzlkOWEyODcxNjAzNy4u
ZGExYzgwZmQyZmQ4MTEwZDlmNThjNzMyMTNiZGM4M2JlYmQwMmY3ZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuY3Bw
CkBAIC04Niw3ICs4Niw3IEBAIHZvaWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpkcmF3Rm9j
dXNJZk5lZWRlZEludGVybmFsKGNvbnN0IFBhdGgmIHBhdGgsIEVsZW1lCiAgICAgYXV0byogY29u
dGV4dCA9IGRyYXdpbmdDb250ZXh0KCk7CiAgICAgaWYgKCFlbGVtZW50LmZvY3VzZWQoKSB8fCAh
c3RhdGUoKS5oYXNJbnZlcnRpYmxlVHJhbnNmb3JtIHx8IHBhdGguaXNFbXB0eSgpIHx8ICFlbGVt
ZW50LmlzRGVzY2VuZGFudE9mKGNhbnZhcygpKSB8fCAhY29udGV4dCkKICAgICAgICAgcmV0dXJu
OwotICAgIGNvbnRleHQtPmRyYXdGb2N1c1JpbmcocGF0aCwgMSwgMSwgUmVuZGVyVGhlbWU6OmZv
Y3VzUmluZ0NvbG9yKGVsZW1lbnQuZG9jdW1lbnQoKS5zdHlsZUNvbG9yT3B0aW9ucygpKSk7Cisg
ICAgY29udGV4dC0+ZHJhd0ZvY3VzUmluZyhwYXRoLCAxLCAxLCBSZW5kZXJUaGVtZTo6Zm9jdXNS
aW5nQ29sb3IoZWxlbWVudC5kb2N1bWVudCgpLnN0eWxlQ29sb3JPcHRpb25zKGNhbnZhcygpLmNv
bXB1dGVkU3R5bGUoKSkpKTsKIH0KIAogU3RyaW5nIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6
Zm9udCgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yT3ZlcmxheS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yT3Zlcmxh
eS5jcHAKaW5kZXggZDVkZWY5MGYxNmY4ODJmODE0YTZiY2Q4Njc1Yjc4YzY0ZGQ0YjkxYy4uZGVj
NzFlNWZlODQwMTJkMzliMDA3NDg5Njg3MTE0MGFhZDA4NjE2NSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvck92ZXJsYXkuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JPdmVybGF5LmNwcApAQCAtMTgwLDEyICsxODAsMTMgQEAg
dm9pZCBJbnNwZWN0b3JPdmVybGF5OjpwYWludChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQpCiAg
ICAgaWYgKCFzaG91bGRTaG93T3ZlcmxheSgpKQogICAgICAgICByZXR1cm47CiAKKyAgICBHcmFw
aGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoY29udGV4dCk7CisgICAgRnJhbWVWaWV3
KiB2aWV3ID0gb3ZlcmxheVBhZ2UoKS0+bWFpbkZyYW1lKCkudmlldygpOworCiAjaWYgUExBVEZP
Uk0oTUFDKQotICAgIExvY2FsRGVmYXVsdFN5c3RlbUFwcGVhcmFuY2UgbG9jYWxBcHBlYXJhbmNl
KG1fcGFnZS5tYWluRnJhbWUoKS5kb2N1bWVudCgpLT51c2VEYXJrQXBwZWFyYW5jZSgpKTsKKyAg
ICBMb2NhbERlZmF1bHRTeXN0ZW1BcHBlYXJhbmNlIGxvY2FsQXBwZWFyYW5jZSh2aWV3LT5yZW5k
ZXJWaWV3KCktPnVzZURhcmtBcHBlYXJhbmNlKCkpOwogI2VuZGlmCiAKLSAgICBHcmFwaGljc0Nv
bnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoY29udGV4dCk7Ci0gICAgRnJhbWVWaWV3KiB2aWV3
ID0gb3ZlcmxheVBhZ2UoKS0+bWFpbkZyYW1lKCkudmlldygpOwogICAgIHZpZXctPnVwZGF0ZUxh
eW91dEFuZFN0eWxlSWZOZWVkZWRSZWN1cnNpdmUoKTsKICAgICB2aWV3LT5wYWludChjb250ZXh0
LCBJbnRSZWN0KDAsIDAsIHZpZXctPndpZHRoKCksIHZpZXctPmhlaWdodCgpKSk7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0ZyYW1lVmlldy5jcHAKaW5kZXggM2U2MjQ2YTU1NGU2OTdhNjg1YmY3ZjJiNGYwYjU4
NTFlODU3MDc1Yi4uMjBkNzYxNWZlZjAwNWRhYjM4ZDc0NGMzMmI5ZjE2ZWNiYmQxMmI5YSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcApAQCAtMjA0Niw5ICsyMDQ2LDcgQEAgYm9vbCBGcmFt
ZVZpZXc6OnNob3VsZFNldEN1cnNvcigpIGNvbnN0CiAKIGJvb2wgRnJhbWVWaWV3Ojp1c2VEYXJr
QXBwZWFyYW5jZSgpIGNvbnN0CiB7Ci0gICAgQVNTRVJUKGZyYW1lKCkuZG9jdW1lbnQoKSk7Ci0g
ICAgYXV0byYgZG9jdW1lbnQgPSAqZnJhbWUoKS5kb2N1bWVudCgpOwotICAgIHJldHVybiBkb2N1
bWVudC51c2VEYXJrQXBwZWFyYW5jZSgpOworICAgIHJldHVybiByZW5kZXJWaWV3KCktPnVzZURh
cmtBcHBlYXJhbmNlKCk7CiB9CiAKIGJvb2wgRnJhbWVWaWV3OjpzY3JvbGxDb250ZW50c0Zhc3RQ
YXRoKGNvbnN0IEludFNpemUmIHNjcm9sbERlbHRhLCBjb25zdCBJbnRSZWN0JiByZWN0VG9TY3Jv
bGwsIGNvbnN0IEludFJlY3QmIGNsaXBSZWN0KQpAQCAtMzkxMSw4ICszOTA5LDcgQEAgdm9pZCBG
cmFtZVZpZXc6OnBhaW50U2Nyb2xsQ29ybmVyKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29u
c3QgSW50UmVjdCYgY29ybmUKICNpZiBQTEFURk9STShNQUMpCiAgICAgLy8gSWYgZGFyayBhcHBl
YXJhbmNlIGlzIHVzZWQgb3IgdGhlIG92ZXJsYXkgc3R5bGUgaXMgbGlnaHQgKGJlY2F1c2Ugb2Yg
YSBkYXJrIHBhZ2UgYmFja2dyb3VuZCksIHNldCB0aGUgZGFyayBhcHBwZWFyYW5jZS4KICAgICAv
LyBLZWVwIHRoaXMgaW4gc3luYyB3aXRoIFNjcm9sbEFuaW1hdG9yTWFjJ3MgZWZmZWN0aXZlQXBw
ZWFyYW5jZUZvclNjcm9sbGVySW1wOi4KLSAgICBhdXRvKiBkb2N1bWVudCA9IGZyYW1lKCkuZG9j
dW1lbnQoKTsKLSAgICBib29sIHVzZURhcmtBcHBlYXJhbmNlID0gKGRvY3VtZW50ICYmIGRvY3Vt
ZW50LT51c2VEYXJrQXBwZWFyYW5jZSgpKSB8fCBzY3JvbGxiYXJPdmVybGF5U3R5bGUoKSA9PSBX
ZWJDb3JlOjpTY3JvbGxiYXJPdmVybGF5U3R5bGVMaWdodDsKKyAgICBib29sIHVzZURhcmtBcHBl
YXJhbmNlID0gcmVuZGVyVmlldygpLT51c2VEYXJrQXBwZWFyYW5jZSgpIHx8IHNjcm9sbGJhck92
ZXJsYXlTdHlsZSgpID09IFdlYkNvcmU6OlNjcm9sbGJhck92ZXJsYXlTdHlsZUxpZ2h0OwogICAg
IExvY2FsRGVmYXVsdFN5c3RlbUFwcGVhcmFuY2UgbG9jYWxBcHBlYXJhbmNlKHVzZURhcmtBcHBl
YXJhbmNlKTsKICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
YWMvRHJhZ0ltYWdlTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL0RyYWdJbWFn
ZU1hYy5tbQppbmRleCAxMWNkYTI0ZDBjOTZhNzFhYzhkMWIyMjIyNTFhY2Q5ZTMzZThmMjEwLi45
YzMwZjc5Yzg0ZDNjN2Q4NjVkNDExNTUzOTEzNjdjOGY0NDRhNmRhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvRHJhZ0ltYWdlTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21hYy9EcmFnSW1hZ2VNYWMubW0KQEAgLTMwMCw3ICszMDAsNyBAQCBEcmFn
SW1hZ2VSZWYgY3JlYXRlRHJhZ0ltYWdlRm9yTGluayhFbGVtZW50JiBlbGVtZW50LCBVUkwmIHVy
bCwgY29uc3QgU3RyaW5nJiB0aQogewogICAgIExpbmtJbWFnZUxheW91dCBsYXlvdXQodXJsLCB0
aXRsZSk7CiAKLSAgICBMb2NhbERlZmF1bHRTeXN0ZW1BcHBlYXJhbmNlIGxvY2FsQXBwZWFyYW5j
ZShlbGVtZW50LmRvY3VtZW50KCkudXNlRGFya0FwcGVhcmFuY2UoKSk7CisgICAgTG9jYWxEZWZh
dWx0U3lzdGVtQXBwZWFyYW5jZSBsb2NhbEFwcGVhcmFuY2UoZWxlbWVudC5kb2N1bWVudCgpLnVz
ZURhcmtBcHBlYXJhbmNlKGVsZW1lbnQuY29tcHV0ZWRTdHlsZSgpKSk7CiAKICAgICBhdXRvIGlt
YWdlU2l6ZSA9IGxheW91dC5ib3VuZGluZ1JlY3Quc2l6ZSgpOwogI2lmIF9fTUFDX09TX1hfVkVS
U0lPTl9NSU5fUkVRVUlSRUQgPCAxMDEzMDAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9JbmxpbmVGbG93Qm94LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9Jbmxp
bmVGbG93Qm94LmNwcAppbmRleCBkNzQ1ODExOGEyYjg1ZTE0MmMzZGQwNTVhYWVkYzgyY2RmZmU1
Yzg1Li4wM2U0MWU3MTU5MjAwYWFjZjJjZjg5OGJkMmIyZjljMjg2MDZhYjk1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lRmxvd0JveC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZUZsb3dCb3guY3BwCkBAIC0xMzcyLDcgKzEzNzIsNyBA
QCB2b2lkIElubGluZUZsb3dCb3g6OnBhaW50Qm94RGVjb3JhdGlvbnMoUGFpbnRJbmZvJiBwYWlu
dEluZm8sIGNvbnN0IExheW91dFBvaW50JgogICAgIENvbG9yIGNvbG9yID0gbGluZVN0eWxlLnZp
c2l0ZWREZXBlbmRlbnRDb2xvcihDU1NQcm9wZXJ0eUJhY2tncm91bmRDb2xvcik7CiAKICAgICBD
b21wb3NpdGVPcGVyYXRvciBjb21wb3NpdGVPcCA9IENvbXBvc2l0ZVNvdXJjZU92ZXI7Ci0gICAg
aWYgKHJlbmRlcmVyKCkuZG9jdW1lbnQoKS5zZXR0aW5ncygpLnB1bmNoT3V0V2hpdGVCYWNrZ3Jv
dW5kc0luRGFya01vZGUoKSAmJiBDb2xvcjo6aXNXaGl0ZUNvbG9yKGNvbG9yKSAmJiByZW5kZXJl
cigpLnRoZW1lKCkudXNpbmdEYXJrQXBwZWFyYW5jZShyZW5kZXJlcigpKSkKKyAgICBpZiAocmVu
ZGVyZXIoKS5kb2N1bWVudCgpLnNldHRpbmdzKCkucHVuY2hPdXRXaGl0ZUJhY2tncm91bmRzSW5E
YXJrTW9kZSgpICYmIENvbG9yOjppc1doaXRlQ29sb3IoY29sb3IpICYmIHJlbmRlcmVyKCkudXNl
RGFya0FwcGVhcmFuY2UoKSkKICAgICAgICAgY29tcG9zaXRlT3AgPSBDb21wb3NpdGVEZXN0aW5h
dGlvbk91dDsKIAogICAgIGNvbG9yID0gbGluZVN0eWxlLmNvbG9yQnlBcHBseWluZ0NvbG9yRmls
dGVyKGNvbG9yKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVU
ZXh0Qm94LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVUZXh0Qm94LmNwcApp
bmRleCA1MDM5ZTJhYWFjZWIxOTU5M2JlOTQ5N2U5ZWUyYmYwNzkzZjc5OTczLi4wOGViMDM5NzZj
MmUxNmJkNDk5YTcwNmYwYjBiMTg0OTU1NmMyOWFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvSW5saW5lVGV4dEJveC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL0lubGluZVRleHRCb3guY3BwCkBAIC03MTYsNyArNzE2LDcgQEAgdm9pZCBJbmxpbmVUZXh0
Qm94OjpwYWludFBsYXRmb3JtRG9jdW1lbnRNYXJrZXIoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0
LCBjb25zdAogICAgIGF1dG8gYm91bmRzID0gY2FsY3VsYXRlRG9jdW1lbnRNYXJrZXJCb3VuZHMo
bWFya2VkVGV4dCk7CiAKICAgICBhdXRvIGxpbmVTdHlsZUZvck1hcmtlZFRleHRUeXBlID0gWyZd
KCkgLT4gRG9jdW1lbnRNYXJrZXJMaW5lU3R5bGUgewotICAgICAgICBib29sIHNob3VsZFVzZURh
cmtBcHBlYXJhbmNlID0gcmVuZGVyZXIoKS5kb2N1bWVudCgpLnVzZURhcmtBcHBlYXJhbmNlKCk7
CisgICAgICAgIGJvb2wgc2hvdWxkVXNlRGFya0FwcGVhcmFuY2UgPSByZW5kZXJlcigpLnVzZURh
cmtBcHBlYXJhbmNlKCk7CiAgICAgICAgIHN3aXRjaCAobWFya2VkVGV4dC50eXBlKSB7CiAgICAg
ICAgIGNhc2UgTWFya2VkVGV4dDo6U3BlbGxpbmdFcnJvcjoKICAgICAgICAgICAgIHJldHVybiB7
IERvY3VtZW50TWFya2VyTGluZVN0eWxlOjpNb2RlOjpTcGVsbGluZywgc2hvdWxkVXNlRGFya0Fw
cGVhcmFuY2UgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJC
b3guY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHAKaW5kZXggY2E2
ZTdjMTQ1ZmJmZTI3ZTA3NGNiMTFmY2UzOGEyMjgzNjAwMzA2MC4uMGYxMmFkODBiOTRkMGFlNGVm
MzJlMmIzNDEyMGFlMjkxMzljYTdmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckJveC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJv
eC5jcHAKQEAgLTEyMDcsNyArMTIwNyw3IEBAIHZvaWQgUmVuZGVyQm94OjpwYWludFJvb3RCb3hG
aWxsTGF5ZXJzKGNvbnN0IFBhaW50SW5mbyYgcGFpbnRJbmZvKQogICAgIGF1dG8gY29sb3IgPSBz
dHlsZS52aXNpdGVkRGVwZW5kZW50Q29sb3IoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQ29sb3IpOwog
CiAgICAgQ29tcG9zaXRlT3BlcmF0b3IgY29tcG9zaXRlT3AgPSBDb21wb3NpdGVTb3VyY2VPdmVy
OwotICAgIGlmIChkb2N1bWVudCgpLnNldHRpbmdzKCkucHVuY2hPdXRXaGl0ZUJhY2tncm91bmRz
SW5EYXJrTW9kZSgpICYmIENvbG9yOjppc1doaXRlQ29sb3IoY29sb3IpICYmIHRoZW1lKCkudXNp
bmdEYXJrQXBwZWFyYW5jZSgqdGhpcykpCisgICAgaWYgKGRvY3VtZW50KCkuc2V0dGluZ3MoKS5w
dW5jaE91dFdoaXRlQmFja2dyb3VuZHNJbkRhcmtNb2RlKCkgJiYgQ29sb3I6OmlzV2hpdGVDb2xv
cihjb2xvcikgJiYgdXNlRGFya0FwcGVhcmFuY2UoKSkKICAgICAgICAgY29tcG9zaXRlT3AgPSBD
b21wb3NpdGVEZXN0aW5hdGlvbk91dDsKIAogICAgIHBhaW50RmlsbExheWVycyhwYWludEluZm8s
IHN0eWxlLmNvbG9yQnlBcHBseWluZ0NvbG9yRmlsdGVyKGNvbG9yKSwgc3R5bGUuYmFja2dyb3Vu
ZExheWVycygpLCB2aWV3KCkuYmFja2dyb3VuZFJlY3QoKSwgQmFja2dyb3VuZEJsZWVkTm9uZSwg
Y29tcG9zaXRlT3AsIHJvb3RCYWNrZ3JvdW5kUmVuZGVyZXIpOwpAQCAtMTM0MSw3ICsxMzQxLDcg
QEAgdm9pZCBSZW5kZXJCb3g6OnBhaW50QmFja2dyb3VuZChjb25zdCBQYWludEluZm8mIHBhaW50
SW5mbywgY29uc3QgTGF5b3V0UmVjdCYgcGEKICAgICBDb2xvciBiYWNrZ3JvdW5kQ29sb3IgPSBz
dHlsZSgpLnZpc2l0ZWREZXBlbmRlbnRDb2xvcihDU1NQcm9wZXJ0eUJhY2tncm91bmRDb2xvcik7
CiAKICAgICBDb21wb3NpdGVPcGVyYXRvciBjb21wb3NpdGVPcCA9IENvbXBvc2l0ZVNvdXJjZU92
ZXI7Ci0gICAgaWYgKGRvY3VtZW50KCkuc2V0dGluZ3MoKS5wdW5jaE91dFdoaXRlQmFja2dyb3Vu
ZHNJbkRhcmtNb2RlKCkgJiYgQ29sb3I6OmlzV2hpdGVDb2xvcihiYWNrZ3JvdW5kQ29sb3IpICYm
IHRoZW1lKCkudXNpbmdEYXJrQXBwZWFyYW5jZSgqdGhpcykpCisgICAgaWYgKGRvY3VtZW50KCku
c2V0dGluZ3MoKS5wdW5jaE91dFdoaXRlQmFja2dyb3VuZHNJbkRhcmtNb2RlKCkgJiYgQ29sb3I6
OmlzV2hpdGVDb2xvcihiYWNrZ3JvdW5kQ29sb3IpICYmIHVzZURhcmtBcHBlYXJhbmNlKCkpCiAg
ICAgICAgIGNvbXBvc2l0ZU9wID0gQ29tcG9zaXRlRGVzdGluYXRpb25PdXQ7CiAKICAgICBwYWlu
dEZpbGxMYXllcnMocGFpbnRJbmZvLCBzdHlsZSgpLmNvbG9yQnlBcHBseWluZ0NvbG9yRmlsdGVy
KGJhY2tncm91bmRDb2xvciksIHN0eWxlKCkuYmFja2dyb3VuZExheWVycygpLCBwYWludFJlY3Qs
IGJsZWVkQXZvaWRhbmNlLCBjb21wb3NpdGVPcCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyRWxlbWVudC5jcHAKaW5kZXggYmY5N2MwODIyNWNiYTk2ODI3MTIzMjhhZDU4ZTk2MDcz
ODAxMzlhMC4uOTA4Yjg1YTg4ZDU0YjkzNmI3MTVhYjlhYTY0MzE2NzQ0NDMzZGI0MSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVsZW1lbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbGVtZW50LmNwcApAQCAtMTM3NCw4ICsxMzc0
LDggQEAgQ29sb3IgUmVuZGVyRWxlbWVudDo6c2VsZWN0aW9uQ29sb3IoQ1NTUHJvcGVydHlJRCBj
b2xvclByb3BlcnR5KSBjb25zdAogICAgIH0KIAogICAgIGlmIChmcmFtZSgpLnNlbGVjdGlvbigp
LmlzRm9jdXNlZEFuZEFjdGl2ZSgpKQotICAgICAgICByZXR1cm4gdGhlbWUoKS5hY3RpdmVTZWxl
Y3Rpb25Gb3JlZ3JvdW5kQ29sb3IoZG9jdW1lbnQoKS5zdHlsZUNvbG9yT3B0aW9ucygpKTsKLSAg
ICByZXR1cm4gdGhlbWUoKS5pbmFjdGl2ZVNlbGVjdGlvbkZvcmVncm91bmRDb2xvcihkb2N1bWVu
dCgpLnN0eWxlQ29sb3JPcHRpb25zKCkpOworICAgICAgICByZXR1cm4gdGhlbWUoKS5hY3RpdmVT
ZWxlY3Rpb25Gb3JlZ3JvdW5kQ29sb3Ioc3R5bGVDb2xvck9wdGlvbnMoKSk7CisgICAgcmV0dXJu
IHRoZW1lKCkuaW5hY3RpdmVTZWxlY3Rpb25Gb3JlZ3JvdW5kQ29sb3Ioc3R5bGVDb2xvck9wdGlv
bnMoKSk7CiB9CiAKIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4gUmVuZGVyRWxlbWVudDo6
c2VsZWN0aW9uUHNldWRvU3R5bGUoKSBjb25zdApAQCAtMTQwOSwxNSArMTQwOSwxNSBAQCBDb2xv
ciBSZW5kZXJFbGVtZW50OjpzZWxlY3Rpb25CYWNrZ3JvdW5kQ29sb3IoKSBjb25zdAogICAgICAg
ICByZXR1cm4gQ29sb3IoKTsKIAogICAgIGlmIChmcmFtZSgpLnNlbGVjdGlvbigpLnNob3VsZFNo
b3dCbG9ja0N1cnNvcigpICYmIGZyYW1lKCkuc2VsZWN0aW9uKCkuaXNDYXJldCgpKQotICAgICAg
ICByZXR1cm4gdGhlbWUoKS50cmFuc2Zvcm1TZWxlY3Rpb25CYWNrZ3JvdW5kQ29sb3Ioc3R5bGUo
KS52aXNpdGVkRGVwZW5kZW50Q29sb3JXaXRoQ29sb3JGaWx0ZXIoQ1NTUHJvcGVydHlDb2xvciks
IGRvY3VtZW50KCkuc3R5bGVDb2xvck9wdGlvbnMoKSk7CisgICAgICAgIHJldHVybiB0aGVtZSgp
LnRyYW5zZm9ybVNlbGVjdGlvbkJhY2tncm91bmRDb2xvcihzdHlsZSgpLnZpc2l0ZWREZXBlbmRl
bnRDb2xvcldpdGhDb2xvckZpbHRlcihDU1NQcm9wZXJ0eUNvbG9yKSwgc3R5bGVDb2xvck9wdGlv
bnMoKSk7CiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+IHBzZXVkb1N0eWxlID0g
c2VsZWN0aW9uUHNldWRvU3R5bGUoKTsKICAgICBpZiAocHNldWRvU3R5bGUgJiYgcHNldWRvU3R5
bGUtPnZpc2l0ZWREZXBlbmRlbnRDb2xvcldpdGhDb2xvckZpbHRlcihDU1NQcm9wZXJ0eUJhY2tn
cm91bmRDb2xvcikuaXNWYWxpZCgpKQotICAgICAgICByZXR1cm4gdGhlbWUoKS50cmFuc2Zvcm1T
ZWxlY3Rpb25CYWNrZ3JvdW5kQ29sb3IocHNldWRvU3R5bGUtPnZpc2l0ZWREZXBlbmRlbnRDb2xv
cldpdGhDb2xvckZpbHRlcihDU1NQcm9wZXJ0eUJhY2tncm91bmRDb2xvciksIGRvY3VtZW50KCku
c3R5bGVDb2xvck9wdGlvbnMoKSk7CisgICAgICAgIHJldHVybiB0aGVtZSgpLnRyYW5zZm9ybVNl
bGVjdGlvbkJhY2tncm91bmRDb2xvcihwc2V1ZG9TdHlsZS0+dmlzaXRlZERlcGVuZGVudENvbG9y
V2l0aENvbG9yRmlsdGVyKENTU1Byb3BlcnR5QmFja2dyb3VuZENvbG9yKSwgc3R5bGVDb2xvck9w
dGlvbnMoKSk7CiAKICAgICBpZiAoZnJhbWUoKS5zZWxlY3Rpb24oKS5pc0ZvY3VzZWRBbmRBY3Rp
dmUoKSkKLSAgICAgICAgcmV0dXJuIHRoZW1lKCkuYWN0aXZlU2VsZWN0aW9uQmFja2dyb3VuZENv
bG9yKGRvY3VtZW50KCkuc3R5bGVDb2xvck9wdGlvbnMoKSk7Ci0gICAgcmV0dXJuIHRoZW1lKCku
aW5hY3RpdmVTZWxlY3Rpb25CYWNrZ3JvdW5kQ29sb3IoZG9jdW1lbnQoKS5zdHlsZUNvbG9yT3B0
aW9ucygpKTsKKyAgICAgICAgcmV0dXJuIHRoZW1lKCkuYWN0aXZlU2VsZWN0aW9uQmFja2dyb3Vu
ZENvbG9yKHN0eWxlQ29sb3JPcHRpb25zKCkpOworICAgIHJldHVybiB0aGVtZSgpLmluYWN0aXZl
U2VsZWN0aW9uQmFja2dyb3VuZENvbG9yKHN0eWxlQ29sb3JPcHRpb25zKCkpOwogfQogCiBib29s
IFJlbmRlckVsZW1lbnQ6OmdldExlYWRpbmdDb3JuZXIoRmxvYXRQb2ludCYgcG9pbnQsIGJvb2wm
IGluc2lkZUZpeGVkKSBjb25zdApAQCAtMTgzOCw5ICsxODM4LDkgQEAgdm9pZCBSZW5kZXJFbGVt
ZW50OjpwYWludEZvY3VzUmluZyhQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgUmVuZGVyU3R5
bGUmIHN0eWwKICAgICAgICAgICAgIGZvciAoYXV0byByZWN0IDogcGl4ZWxTbmFwcGVkRm9jdXNS
aW5nUmVjdHMpCiAgICAgICAgICAgICAgICAgcGF0aC5hZGRSZWN0KHJlY3QpOwogICAgICAgICB9
Ci0gICAgICAgIHBhaW50SW5mby5jb250ZXh0KCkuZHJhd0ZvY3VzUmluZyhwYXRoLCBwYWdlKCku
Zm9jdXNDb250cm9sbGVyKCkudGltZVNpbmNlRm9jdXNXYXNTZXQoKS5zZWNvbmRzKCksIG5lZWRz
UmVwYWludCwgUmVuZGVyVGhlbWU6OmZvY3VzUmluZ0NvbG9yKGRvY3VtZW50KCkuc3R5bGVDb2xv
ck9wdGlvbnMoKSkpOworICAgICAgICBwYWludEluZm8uY29udGV4dCgpLmRyYXdGb2N1c1Jpbmco
cGF0aCwgcGFnZSgpLmZvY3VzQ29udHJvbGxlcigpLnRpbWVTaW5jZUZvY3VzV2FzU2V0KCkuc2Vj
b25kcygpLCBuZWVkc1JlcGFpbnQsIFJlbmRlclRoZW1lOjpmb2N1c1JpbmdDb2xvcihzdHlsZUNv
bG9yT3B0aW9ucygpKSk7CiAgICAgfSBlbHNlCi0gICAgICAgIHBhaW50SW5mby5jb250ZXh0KCku
ZHJhd0ZvY3VzUmluZyhwaXhlbFNuYXBwZWRGb2N1c1JpbmdSZWN0cywgcGFnZSgpLmZvY3VzQ29u
dHJvbGxlcigpLnRpbWVTaW5jZUZvY3VzV2FzU2V0KCkuc2Vjb25kcygpLCBuZWVkc1JlcGFpbnQs
IFJlbmRlclRoZW1lOjpmb2N1c1JpbmdDb2xvcihkb2N1bWVudCgpLnN0eWxlQ29sb3JPcHRpb25z
KCkpKTsKKyAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQoKS5kcmF3Rm9jdXNSaW5nKHBpeGVsU25h
cHBlZEZvY3VzUmluZ1JlY3RzLCBwYWdlKCkuZm9jdXNDb250cm9sbGVyKCkudGltZVNpbmNlRm9j
dXNXYXNTZXQoKS5zZWNvbmRzKCksIG5lZWRzUmVwYWludCwgUmVuZGVyVGhlbWU6OmZvY3VzUmlu
Z0NvbG9yKHN0eWxlQ29sb3JPcHRpb25zKCkpKTsKICAgICBpZiAobmVlZHNSZXBhaW50KQogICAg
ICAgICBwYWdlKCkuZm9jdXNDb250cm9sbGVyKCkuc2V0Rm9jdXNlZEVsZW1lbnROZWVkc1JlcGFp
bnQoKTsKICNlbHNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
SW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlLmNwcAppbmRl
eCA4MTA5ZWJmZmQyMWVkN2MzZTRkYTZhZjI4ZDhiOWQwYzM1MGEzOTEzLi5hMGQyYjdiNDdlNmMy
NDc3Zjg3MTYxNDM5OTBlMmRkM2Q2NTE3YTljIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVySW1hZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJJbWFnZS5jcHAKQEAgLTU3NCw3ICs1NzQsNyBAQCB2b2lkIFJlbmRlckltYWdlOjpwYWlu
dEFyZWFFbGVtZW50Rm9jdXNSaW5nKFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQ
bwogCiAjaWYgUExBVEZPUk0oTUFDKQogICAgIGJvb2wgbmVlZHNSZXBhaW50OwotICAgIHBhaW50
SW5mby5jb250ZXh0KCkuZHJhd0ZvY3VzUmluZyhwYXRoLCBwYWdlKCkuZm9jdXNDb250cm9sbGVy
KCkudGltZVNpbmNlRm9jdXNXYXNTZXQoKS5zZWNvbmRzKCksIG5lZWRzUmVwYWludCwgUmVuZGVy
VGhlbWU6OmZvY3VzUmluZ0NvbG9yKGRvY3VtZW50KCkuc3R5bGVDb2xvck9wdGlvbnMoKSkpOwor
ICAgIHBhaW50SW5mby5jb250ZXh0KCkuZHJhd0ZvY3VzUmluZyhwYXRoLCBwYWdlKCkuZm9jdXND
b250cm9sbGVyKCkudGltZVNpbmNlRm9jdXNXYXNTZXQoKS5zZWNvbmRzKCksIG5lZWRzUmVwYWlu
dCwgUmVuZGVyVGhlbWU6OmZvY3VzUmluZ0NvbG9yKHN0eWxlQ29sb3JPcHRpb25zKCkpKTsKICAg
ICBpZiAobmVlZHNSZXBhaW50KQogICAgICAgICBwYWdlKCkuZm9jdXNDb250cm9sbGVyKCkuc2V0
Rm9jdXNlZEVsZW1lbnROZWVkc1JlcGFpbnQoKTsKICNlbHNlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwCmluZGV4IDg4ZDZlMDFkZDZlZmM2ZTJm
N2E5YmMyNDMzOWQ0ODQ0YWRmMmFkN2EuLmJiN2IxOWViYzhjYTYxYTQyYjRmMGIzOTFjY2U3MWU0
MDBkMDQ1NzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXll
ckJhY2tpbmcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJh
Y2tpbmcuY3BwCkBAIC0yNTQxLDcgKzI1NDEsNyBAQCB2b2lkIFJlbmRlckxheWVyQmFja2luZzo6
cGFpbnRDb250ZW50cyhjb25zdCBHcmFwaGljc0xheWVyKiBncmFwaGljc0xheWVyLCBHcmFwaAog
I2VuZGlmCiAKICNpZiBQTEFURk9STShNQUMpCi0gICAgTG9jYWxEZWZhdWx0U3lzdGVtQXBwZWFy
YW5jZSBsb2NhbEFwcGVhcmFuY2UocmVuZGVyZXIoKS5kb2N1bWVudCgpLnVzZURhcmtBcHBlYXJh
bmNlKCkpOworICAgIExvY2FsRGVmYXVsdFN5c3RlbUFwcGVhcmFuY2UgbG9jYWxBcHBlYXJhbmNl
KHJlbmRlcmVyKCkudXNlRGFya0FwcGVhcmFuY2UoKSk7CiAjZW5kaWYKIAogICAgIC8vIFRoZSBk
aXJ0eVJlY3QgaXMgaW4gdGhlIGNvb3JkcyBvZiB0aGUgcGFpbnRpbmcgcm9vdC4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuY3BwIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5jcHAKaW5kZXgg
YjY1NWZmMjVjOWE5NTgwNjA2NDhiYjdiZWRmMjA5ZjljNTAwYjNjOC4uMDkyYjUwMDc1ZWIzOTFh
ZmRkNjZlNTBhMmIyYWVjODJjYjgyMThkYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5jcHAKQEAgLTI3ODIsNyArMjc4Miw3IEBAIHZv
aWQgcGFpbnRTY3JvbGxiYXIoU2Nyb2xsYmFyKiBzY3JvbGxiYXIsIEdyYXBoaWNzQ29udGV4dCYg
Y29udGV4dCwgY29uc3QgSW50UmVjCiB2b2lkIFJlbmRlckxheWVyQ29tcG9zaXRvcjo6cGFpbnRD
b250ZW50cyhjb25zdCBHcmFwaGljc0xheWVyKiBncmFwaGljc0xheWVyLCBHcmFwaGljc0NvbnRl
eHQmIGNvbnRleHQsIEdyYXBoaWNzTGF5ZXJQYWludGluZ1BoYXNlLCBjb25zdCBGbG9hdFJlY3Qm
IGNsaXAsIEdyYXBoaWNzTGF5ZXJQYWludEJlaGF2aW9yKQogewogI2lmIFBMQVRGT1JNKE1BQykK
LSAgICBMb2NhbERlZmF1bHRTeXN0ZW1BcHBlYXJhbmNlIGxvY2FsQXBwZWFyYW5jZShtX3JlbmRl
clZpZXcuZG9jdW1lbnQoKS51c2VEYXJrQXBwZWFyYW5jZSgpKTsKKyAgICBMb2NhbERlZmF1bHRT
eXN0ZW1BcHBlYXJhbmNlIGxvY2FsQXBwZWFyYW5jZShtX3JlbmRlclZpZXcudXNlRGFya0FwcGVh
cmFuY2UoKSk7CiAjZW5kaWYKIAogICAgIEludFJlY3QgcGl4ZWxTbmFwcGVkUmVjdEZvckludGVn
cmFsUG9zaXRpb25lZEl0ZW1zID0gc25hcHBlZEludFJlY3QoTGF5b3V0UmVjdChjbGlwKSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdEJveC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdEJveC5jcHAKaW5kZXggZWNkNTUxNjVm
ZmM4MTljNWIzMjZiM2U3NmEyNTA0OGQxNTA0YWIxZC4uNTIwMDgxM2UxOTU2OGRiMzhlZjdkNTZj
ZjhlODBjNjQ2MzEwYTA1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckxpc3RCb3guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0
Qm94LmNwcApAQCAtNDI4LDEwICs0MjgsMTAgQEAgdm9pZCBSZW5kZXJMaXN0Qm94OjpwYWludEl0
ZW1Gb3JlZ3JvdW5kKFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2ludCYKICAg
ICBDb2xvciB0ZXh0Q29sb3IgPSBpdGVtU3R5bGUudmlzaXRlZERlcGVuZGVudENvbG9yV2l0aENv
bG9yRmlsdGVyKENTU1Byb3BlcnR5Q29sb3IpOwogICAgIGlmIChpc09wdGlvbkVsZW1lbnQgJiYg
ZG93bmNhc3Q8SFRNTE9wdGlvbkVsZW1lbnQ+KCpsaXN0SXRlbUVsZW1lbnQpLnNlbGVjdGVkKCkp
IHsKICAgICAgICAgaWYgKGZyYW1lKCkuc2VsZWN0aW9uKCkuaXNGb2N1c2VkQW5kQWN0aXZlKCkg
JiYgZG9jdW1lbnQoKS5mb2N1c2VkRWxlbWVudCgpID09ICZzZWxlY3RFbGVtZW50KCkpCi0gICAg
ICAgICAgICB0ZXh0Q29sb3IgPSB0aGVtZSgpLmFjdGl2ZUxpc3RCb3hTZWxlY3Rpb25Gb3JlZ3Jv
dW5kQ29sb3IoZG9jdW1lbnQoKS5zdHlsZUNvbG9yT3B0aW9ucygpKTsKKyAgICAgICAgICAgIHRl
eHRDb2xvciA9IHRoZW1lKCkuYWN0aXZlTGlzdEJveFNlbGVjdGlvbkZvcmVncm91bmRDb2xvcihz
dHlsZUNvbG9yT3B0aW9ucygpKTsKICAgICAgICAgLy8gSG9ub3IgdGhlIGZvcmVncm91bmQgY29s
b3IgZm9yIGRpc2FibGVkIGl0ZW1zCiAgICAgICAgIGVsc2UgaWYgKCFsaXN0SXRlbUVsZW1lbnQt
PmlzRGlzYWJsZWRGb3JtQ29udHJvbCgpICYmICFzZWxlY3RFbGVtZW50KCkuaXNEaXNhYmxlZEZv
cm1Db250cm9sKCkpCi0gICAgICAgICAgICB0ZXh0Q29sb3IgPSB0aGVtZSgpLmluYWN0aXZlTGlz
dEJveFNlbGVjdGlvbkZvcmVncm91bmRDb2xvcihkb2N1bWVudCgpLnN0eWxlQ29sb3JPcHRpb25z
KCkpOworICAgICAgICAgICAgdGV4dENvbG9yID0gdGhlbWUoKS5pbmFjdGl2ZUxpc3RCb3hTZWxl
Y3Rpb25Gb3JlZ3JvdW5kQ29sb3Ioc3R5bGVDb2xvck9wdGlvbnMoKSk7CiAgICAgfQogCiAgICAg
cGFpbnRJbmZvLmNvbnRleHQoKS5zZXRGaWxsQ29sb3IodGV4dENvbG9yKTsKQEAgLTQ2MSw5ICs0
NjEsOSBAQCB2b2lkIFJlbmRlckxpc3RCb3g6OnBhaW50SXRlbUJhY2tncm91bmQoUGFpbnRJbmZv
JiBwYWludEluZm8sIGNvbnN0IExheW91dFBvaW50JgogICAgIENvbG9yIGJhY2tDb2xvcjsKICAg
ICBpZiAoaXM8SFRNTE9wdGlvbkVsZW1lbnQ+KCpsaXN0SXRlbUVsZW1lbnQpICYmIGRvd25jYXN0
PEhUTUxPcHRpb25FbGVtZW50PigqbGlzdEl0ZW1FbGVtZW50KS5zZWxlY3RlZCgpKSB7CiAgICAg
ICAgIGlmIChmcmFtZSgpLnNlbGVjdGlvbigpLmlzRm9jdXNlZEFuZEFjdGl2ZSgpICYmIGRvY3Vt
ZW50KCkuZm9jdXNlZEVsZW1lbnQoKSA9PSAmc2VsZWN0RWxlbWVudCgpKQotICAgICAgICAgICAg
YmFja0NvbG9yID0gdGhlbWUoKS5hY3RpdmVMaXN0Qm94U2VsZWN0aW9uQmFja2dyb3VuZENvbG9y
KGRvY3VtZW50KCkuc3R5bGVDb2xvck9wdGlvbnMoKSk7CisgICAgICAgICAgICBiYWNrQ29sb3Ig
PSB0aGVtZSgpLmFjdGl2ZUxpc3RCb3hTZWxlY3Rpb25CYWNrZ3JvdW5kQ29sb3Ioc3R5bGVDb2xv
ck9wdGlvbnMoKSk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIGJhY2tDb2xvciA9IHRoZW1l
KCkuaW5hY3RpdmVMaXN0Qm94U2VsZWN0aW9uQmFja2dyb3VuZENvbG9yKGRvY3VtZW50KCkuc3R5
bGVDb2xvck9wdGlvbnMoKSk7CisgICAgICAgICAgICBiYWNrQ29sb3IgPSB0aGVtZSgpLmluYWN0
aXZlTGlzdEJveFNlbGVjdGlvbkJhY2tncm91bmRDb2xvcihzdHlsZUNvbG9yT3B0aW9ucygpKTsK
ICAgICB9IGVsc2UKICAgICAgICAgYmFja0NvbG9yID0gaXRlbVN0eWxlLnZpc2l0ZWREZXBlbmRl
bnRDb2xvcldpdGhDb2xvckZpbHRlcihDU1NQcm9wZXJ0eUJhY2tncm91bmRDb2xvcik7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAKaW5kZXggNzY0NDQ1MGYwODA3
NzY4YzUzMWZlMmEyNzg5YjFlYmZmMjYwMDk5Ni4uNDI1NTEwNWUyNDRmZGQ1MTdmMzQ5NGJhYjY5
OTI4YjMyMzk3YTQ2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ck9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5j
cHAKQEAgLTE4MDEsNiArMTgwMSwxNiBAQCBDdXJzb3JEaXJlY3RpdmUgUmVuZGVyT2JqZWN0Ojpn
ZXRDdXJzb3IoY29uc3QgTGF5b3V0UG9pbnQmLCBDdXJzb3ImKSBjb25zdAogICAgIHJldHVybiBT
ZXRDdXJzb3JCYXNlZE9uU3R5bGU7CiB9CiAKK2Jvb2wgUmVuZGVyT2JqZWN0Ojp1c2VEYXJrQXBw
ZWFyYW5jZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIGRvY3VtZW50KCkudXNlRGFya0FwcGVhcmFu
Y2UoJnN0eWxlKCkpOworfQorCitPcHRpb25TZXQ8U3R5bGVDb2xvcjo6T3B0aW9ucz4gUmVuZGVy
T2JqZWN0OjpzdHlsZUNvbG9yT3B0aW9ucygpIGNvbnN0Cit7CisgICAgcmV0dXJuIGRvY3VtZW50
KCkuc3R5bGVDb2xvck9wdGlvbnMoJnN0eWxlKCkpOworfQorCiBib29sIFJlbmRlck9iamVjdDo6
Y2FuVXBkYXRlU2VsZWN0aW9uT25Sb290TGluZUJveGVzKCkKIHsKICAgICBpZiAobmVlZHNMYXlv
dXQoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3Qu
aCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuaAppbmRleCAxM2IzNmQ2
NzYwMmEwNWJlYjQ2ZWI1NzczNzE4ZDg1YWRhNTgyOGEwLi4yZGNlOWRjYzU2OTEzMDkxZjcyOTk0
N2ZjNmRmNzI2NGE4ZTQzZjVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyT2JqZWN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVj
dC5oCkBAIC0xNzYsNiArMTc2LDkgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gbG9jYXRlRW5j
bG9zaW5nRnJhZ21lbnRlZEZsb3coKTsKICAgICB9CiAKKyAgICBXRUJDT1JFX0VYUE9SVCBib29s
IHVzZURhcmtBcHBlYXJhbmNlKCkgY29uc3Q7CisgICAgT3B0aW9uU2V0PFN0eWxlQ29sb3I6Ok9w
dGlvbnM+IHN0eWxlQ29sb3JPcHRpb25zKCkgY29uc3Q7CisKICNpZm5kZWYgTkRFQlVHCiAgICAg
dm9pZCBzZXRIYXNBWE9iamVjdChib29sIGZsYWcpIHsgbV9oYXNBWE9iamVjdCA9IGZsYWc7IH0K
ICAgICBib29sIGhhc0FYT2JqZWN0KCkgY29uc3QgeyByZXR1cm4gbV9oYXNBWE9iamVjdDsgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlQ2VsbC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVDZWxsLmNwcAppbmRleCAzNDVh
N2JiNTdmNjczZDY3NTIzYjMzMzEzZmJhZWVmZjEwOTVhNGE3Li43NTQxOTc4N2M3YjZmN2E5MWYz
NjFjODY4OTNjODFmOWJhZWE3MGI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyVGFibGVDZWxsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyVGFibGVDZWxsLmNwcApAQCAtMTI4OSw3ICsxMjg5LDcgQEAgdm9pZCBSZW5kZXJUYWJsZUNl
bGw6OnBhaW50QmFja2dyb3VuZHNCZWhpbmRDZWxsKFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25z
dCBMYXkKIAogICAgIENvbXBvc2l0ZU9wZXJhdG9yIGNvbXBvc2l0ZU9wID0gQ29tcG9zaXRlU291
cmNlT3ZlcjsKICAgICBDb2xvciBjb2xvciA9IHN0eWxlLnZpc2l0ZWREZXBlbmRlbnRDb2xvcihD
U1NQcm9wZXJ0eUJhY2tncm91bmRDb2xvcik7Ci0gICAgaWYgKGRvY3VtZW50KCkuc2V0dGluZ3Mo
KS5wdW5jaE91dFdoaXRlQmFja2dyb3VuZHNJbkRhcmtNb2RlKCkgJiYgQ29sb3I6OmlzV2hpdGVD
b2xvcihjb2xvcikgJiYgdGhlbWUoKS51c2luZ0RhcmtBcHBlYXJhbmNlKCp0aGlzKSkKKyAgICBp
ZiAoZG9jdW1lbnQoKS5zZXR0aW5ncygpLnB1bmNoT3V0V2hpdGVCYWNrZ3JvdW5kc0luRGFya01v
ZGUoKSAmJiBDb2xvcjo6aXNXaGl0ZUNvbG9yKGNvbG9yKSAmJiB1c2VEYXJrQXBwZWFyYW5jZSgp
KQogICAgICAgICBjb21wb3NpdGVPcCA9IENvbXBvc2l0ZURlc3RpbmF0aW9uT3V0OwogCiAgICAg
Y29sb3IgPSBzdHlsZS5jb2xvckJ5QXBwbHlpbmdDb2xvckZpbHRlcihjb2xvcik7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWUuY3BwIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lLmNwcAppbmRleCBiZDY2YmIzZjU5MWEwYzdjODRh
OWNiZjhmNTNjY2E2ZmZlMGJhODU5Li4yNTczOTAzOTZmNTBhMzIyNjZmODJhMDQ4ZTQ4NjcyYzkz
OGExNTVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZS5jcHAKQEAgLTMx
OCw3ICszMTgsNyBAQCBib29sIFJlbmRlclRoZW1lOjpwYWludChjb25zdCBSZW5kZXJCb3gmIGJv
eCwgQ29udHJvbFN0YXRlcyYgY29udHJvbFN0YXRlcywgY29ucwogICAgIGNhc2UgQnV0dG9uUGFy
dDoKICAgICBjYXNlIElubmVyU3BpbkJ1dHRvblBhcnQ6CiAgICAgICAgIHVwZGF0ZUNvbnRyb2xT
dGF0ZXNGb3JSZW5kZXJlcihib3gsIGNvbnRyb2xTdGF0ZXMpOwotICAgICAgICBUaGVtZTo6c2lu
Z2xldG9uKCkucGFpbnQocGFydCwgY29udHJvbFN0YXRlcywgcGFpbnRJbmZvLmNvbnRleHQoKSwg
ZGV2aWNlUGl4ZWxTbmFwcGVkUmVjdCwgYm94LnN0eWxlKCkuZWZmZWN0aXZlWm9vbSgpLCAmYm94
LnZpZXcoKS5mcmFtZVZpZXcoKSwgZGV2aWNlU2NhbGVGYWN0b3IsIHBhZ2VTY2FsZUZhY3Rvciwg
Ym94LmRvY3VtZW50KCkudXNlU3lzdGVtQXBwZWFyYW5jZSgpLCBib3guZG9jdW1lbnQoKS51c2VE
YXJrQXBwZWFyYW5jZSgpKTsKKyAgICAgICAgVGhlbWU6OnNpbmdsZXRvbigpLnBhaW50KHBhcnQs
IGNvbnRyb2xTdGF0ZXMsIHBhaW50SW5mby5jb250ZXh0KCksIGRldmljZVBpeGVsU25hcHBlZFJl
Y3QsIGJveC5zdHlsZSgpLmVmZmVjdGl2ZVpvb20oKSwgJmJveC52aWV3KCkuZnJhbWVWaWV3KCks
IGRldmljZVNjYWxlRmFjdG9yLCBwYWdlU2NhbGVGYWN0b3IsIGJveC5kb2N1bWVudCgpLnVzZVN5
c3RlbUFwcGVhcmFuY2UoKSwgYm94LnVzZURhcmtBcHBlYXJhbmNlKCkpOwogICAgICAgICByZXR1
cm4gZmFsc2U7CiAgICAgZGVmYXVsdDoKICAgICAgICAgYnJlYWs7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWUuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJUaGVtZS5oCmluZGV4IDhmYmE0ZGI0MDk2NzRjNzAzMmU1NmIxZWQ1Yzc5NjU4
M2Y0YzAxNTYuLjEzMmE2ZTQ5ZjA5NjZkN2Q1MDM3Y2I1YzZhMDM2NGY4Mzk4OTk5YjkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZS5oCkBAIC0yNjEsOCArMjYxLDYgQEAgcHVi
bGljOgogICAgIHZpcnR1YWwgdm9pZCBwYWludFN5c3RlbVByZXZpZXdCYWRnZShJbWFnZSYsIGNv
bnN0IFBhaW50SW5mbyYsIGNvbnN0IEZsb2F0UmVjdCYpOwogI2VuZGlmCiAKLSAgICB2aXJ0dWFs
IGJvb2wgdXNpbmdEYXJrQXBwZWFyYW5jZShjb25zdCBSZW5kZXJPYmplY3QmKSBjb25zdCB7IHJl
dHVybiBmYWxzZTsgfQotCiBwcm90ZWN0ZWQ6CiAgICAgdmlydHVhbCBGb250Q2FzY2FkZURlc2Ny
aXB0aW9uJiBjYWNoZWRTeXN0ZW1Gb250RGVzY3JpcHRpb24oQ1NTVmFsdWVJRCBzeXN0ZW1Gb250
SUQpIGNvbnN0OwogICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVDYWNoZWRTeXN0ZW1Gb250RGVzY3Jp
cHRpb24oQ1NTVmFsdWVJRCBzeXN0ZW1Gb250SUQsIEZvbnRDYXNjYWRlRGVzY3JpcHRpb24mKSBj
b25zdCA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhl
bWVNYWMuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZU1hYy5oCmluZGV4
IGQ4NTc2MWFiYzliMTJkZmRkYTU1NDVkZDE0ZjgwMzQ5NjM3OTUwZDcuLjFkZDJiMWY1ZmVmODZm
OGM5NWY4NzZhYmZmZjg2NjQ4OWY4Y2ZhZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJUaGVtZU1hYy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJUaGVtZU1hYy5oCkBAIC0xNzQsOCArMTc0LDYgQEAgcHJpdmF0ZToKICAgICBib29sIHBh
aW50QXR0YWNobWVudChjb25zdCBSZW5kZXJPYmplY3QmLCBjb25zdCBQYWludEluZm8mLCBjb25z
dCBJbnRSZWN0JikgZmluYWw7CiAjZW5kaWYKIAotICAgIGJvb2wgdXNpbmdEYXJrQXBwZWFyYW5j
ZShjb25zdCBSZW5kZXJPYmplY3QmKSBjb25zdCBmaW5hbDsKLQogcHJpdmF0ZToKICAgICBTdHJp
bmcgZmlsZUxpc3ROYW1lRm9yV2lkdGgoY29uc3QgRmlsZUxpc3QqLCBjb25zdCBGb250Q2FzY2Fk
ZSYsIGludCB3aWR0aCwgYm9vbCBtdWx0aXBsZUZpbGVzQWxsb3dlZCkgY29uc3QgZmluYWw7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZU1hYy5tbSBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZU1hYy5tbQppbmRleCAzZmJkNjBk
NjE3MTc5ZDgwYjE5MjY1OWE5YjhmMGJjOWM5ZTZjZGQ1Li5kNTUwZTViMzNmNGFhNGQyZTUzMzk1
ZDBlYmVjOTA4YjJmN2MyN2E5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyVGhlbWVNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRo
ZW1lTWFjLm1tCkBAIC0yOTcsNyArMjk3LDcgQEAgUmVuZGVyVGhlbWVNYWM6OlJlbmRlclRoZW1l
TWFjKCkKIAogTlNWaWV3ICpSZW5kZXJUaGVtZU1hYzo6ZG9jdW1lbnRWaWV3Rm9yKGNvbnN0IFJl
bmRlck9iamVjdCYgbykgY29uc3QKIHsKLSAgICBMb2NhbERlZmF1bHRTeXN0ZW1BcHBlYXJhbmNl
IGxvY2FsQXBwZWFyYW5jZSh1c2luZ0RhcmtBcHBlYXJhbmNlKG8pKTsKKyAgICBMb2NhbERlZmF1
bHRTeXN0ZW1BcHBlYXJhbmNlIGxvY2FsQXBwZWFyYW5jZShvLnVzZURhcmtBcHBlYXJhbmNlKCkp
OwogICAgIENvbnRyb2xTdGF0ZXMgc3RhdGVzKGV4dHJhY3RDb250cm9sU3RhdGVzRm9yUmVuZGVy
ZXIobykpOwogICAgIHJldHVybiBUaGVtZU1hYzo6ZW5zdXJlZFZpZXcoJm8udmlldygpLmZyYW1l
VmlldygpLCBzdGF0ZXMpOwogfQpAQCAtMTcxMyw3ICsxNzEzLDcgQEAgdm9pZCBSZW5kZXJUaGVt
ZU1hYzo6YWRqdXN0TWVudUxpc3RTdHlsZShTdHlsZVJlc29sdmVyJiBzdHlsZVJlc29sdmVyLCBS
ZW5kZXJTdHkKICAgICAvLyBTZXQgdGhlIGZvcmVncm91bmQgY29sb3IgdG8gYmxhY2sgb3IgZ3Jh
eSB3aGVuIHdlIGhhdmUgdGhlIGFxdWEgbG9vay4KICAgICBDb2xvciBjID0gQ29sb3I6OmRhcmtH
cmF5OwogICAgIGlmIChlKSB7Ci0gICAgICAgIE9wdGlvblNldDxTdHlsZUNvbG9yOjpPcHRpb25z
PiBvcHRpb25zID0gZS0+ZG9jdW1lbnQoKS5zdHlsZUNvbG9yT3B0aW9ucygpOworICAgICAgICBP
cHRpb25TZXQ8U3R5bGVDb2xvcjo6T3B0aW9ucz4gb3B0aW9ucyA9IGUtPmRvY3VtZW50KCkuc3R5
bGVDb2xvck9wdGlvbnMoJnN0eWxlKTsKICAgICAgICAgYyA9ICFlLT5pc0Rpc2FibGVkRm9ybUNv
bnRyb2woKSA/IHN5c3RlbUNvbG9yKENTU1ZhbHVlQnV0dG9udGV4dCwgb3B0aW9ucykgOiBzeXN0
ZW1Db2xvcihDU1NWYWx1ZUdyYXl0ZXh0LCBvcHRpb25zKTsKICAgICB9CiAgICAgc3R5bGUuc2V0
Q29sb3IoYyk7CkBAIC0xODAwLDcgKzE4MDAsNyBAQCB2b2lkIFJlbmRlclRoZW1lTWFjOjpzZXRQ
b3B1cEJ1dHRvbkNlbGxTdGF0ZShjb25zdCBSZW5kZXJPYmplY3QmIG8sIGNvbnN0IEludFNpegog
CiB2b2lkIFJlbmRlclRoZW1lTWFjOjpwYWludENlbGxBbmRTZXRGb2N1c2VkRWxlbWVudE5lZWRz
UmVwYWludElmTmVjZXNzYXJ5KE5TQ2VsbCogY2VsbCwgY29uc3QgUmVuZGVyT2JqZWN0JiByZW5k
ZXJlciwgY29uc3QgUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IEZsb2F0UmVjdCYgcmVjdCkK
IHsKLSAgICBMb2NhbERlZmF1bHRTeXN0ZW1BcHBlYXJhbmNlIGxvY2FsQXBwZWFyYW5jZSh1c2lu
Z0RhcmtBcHBlYXJhbmNlKHJlbmRlcmVyKSk7CisgICAgTG9jYWxEZWZhdWx0U3lzdGVtQXBwZWFy
YW5jZSBsb2NhbEFwcGVhcmFuY2UocmVuZGVyZXIudXNlRGFya0FwcGVhcmFuY2UoKSk7CiAgICAg
Ym9vbCBzaG91bGREcmF3Rm9jdXNSaW5nID0gaXNGb2N1c2VkKHJlbmRlcmVyKSAmJiByZW5kZXJl
ci5zdHlsZSgpLm91dGxpbmVTdHlsZUlzQXV0bygpID09IE91dGxpbmVJc0F1dG86Ok9uOwogICAg
IGJvb2wgc2hvdWxkVXNlSW1hZ2VCdWZmZXIgPSByZW5kZXJlci5zdHlsZSgpLmVmZmVjdGl2ZVpv
b20oKSAhPSAxIHx8IHJlbmRlcmVyLnBhZ2UoKS5wYWdlU2NhbGVGYWN0b3IoKSAhPSAxOwogICAg
IGJvb2wgc2hvdWxkRHJhd0NlbGwgPSB0cnVlOwpAQCAtMTg4Miw3ICsxODgyLDcgQEAgYm9vbCBS
ZW5kZXJUaGVtZU1hYzo6cGFpbnRTbGlkZXJUaHVtYihjb25zdCBSZW5kZXJPYmplY3QmIG8sIGNv
bnN0IFBhaW50SW5mbyYgcGEKICAgICAgICAgPyBzbGlkZXJUaHVtYlZlcnRpY2FsKCkKICAgICAg
ICAgOiBzbGlkZXJUaHVtYkhvcml6b250YWwoKTsKIAotICAgIExvY2FsRGVmYXVsdFN5c3RlbUFw
cGVhcmFuY2UgbG9jYWxBcHBlYXJhbmNlKHVzaW5nRGFya0FwcGVhcmFuY2UobykpOworICAgIExv
Y2FsRGVmYXVsdFN5c3RlbUFwcGVhcmFuY2UgbG9jYWxBcHBlYXJhbmNlKG8udXNlRGFya0FwcGVh
cmFuY2UoKSk7CiAKICAgICBMb2NhbEN1cnJlbnRHcmFwaGljc0NvbnRleHQgbG9jYWxDb250ZXh0
KHBhaW50SW5mby5jb250ZXh0KCkpOwogCkBAIC0yOTk0LDExICsyOTk0LDYgQEAgYm9vbCBSZW5k
ZXJUaGVtZU1hYzo6cGFpbnRBdHRhY2htZW50KGNvbnN0IFJlbmRlck9iamVjdCYgcmVuZGVyZXIs
IGNvbnN0IFBhaW50SW4KIAogI2VuZGlmIC8vIEVOQUJMRShBVFRBQ0hNRU5UX0VMRU1FTlQpCiAK
LWJvb2wgUmVuZGVyVGhlbWVNYWM6OnVzaW5nRGFya0FwcGVhcmFuY2UoY29uc3QgUmVuZGVyT2Jq
ZWN0JiBvKSBjb25zdAotewotICAgIHJldHVybiBvLmRvY3VtZW50KCkudXNlRGFya0FwcGVhcmFu
Y2UoKTsKLX0KLQogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gUExBVEZPUk0o
TUFDKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0
eWxlLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuaAppbmRl
eCA5ODFiOGVlZWViZTk2YTYxYjFhYWQzNjMyNDJkNzRlOTY4MWMwM2VkLi44NTU1ZDBiOWY2MjRk
ODIzMTQyNjNiMDUwYWU1YzlhZmFjMmM2NjNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3R5bGUvUmVuZGVyU3R5bGUuaApAQCAtODQsNiArODQsMTAgQEAKICNpbmNsdWRlICJUZXh0
U2l6ZUFkanVzdG1lbnQuaCIKICNlbmRpZgogCisjaWYgRU5BQkxFKERBUktfTU9ERV9DU1MpCisj
aW5jbHVkZSAiU3R5bGVTdXBwb3J0ZWRDb2xvclNjaGVtZXMuaCIKKyNlbmRpZgorCiAjZGVmaW5l
IFNFVF9WQVIoZ3JvdXAsIHZhcmlhYmxlLCB2YWx1ZSkgZG8geyBcCiAgICAgICAgIGlmICghY29t
cGFyZUVxdWFsKGdyb3VwLT52YXJpYWJsZSwgdmFsdWUpKSBcCiAgICAgICAgICAgICBncm91cC5h
Y2Nlc3MoKS52YXJpYWJsZSA9IHZhbHVlOyBcCkBAIC02MzIsNiArNjM2LDEwIEBAIHB1YmxpYzoK
IAogICAgIFJ1YnlQb3NpdGlvbiBydWJ5UG9zaXRpb24oKSBjb25zdCB7IHJldHVybiBzdGF0aWNf
Y2FzdDxSdWJ5UG9zaXRpb24+KG1fcmFyZUluaGVyaXRlZERhdGEtPnJ1YnlQb3NpdGlvbik7IH0K
IAorI2lmIEVOQUJMRShEQVJLX01PREVfQ1NTKQorICAgIFN0eWxlU3VwcG9ydGVkQ29sb3JTY2hl
bWVzIHN1cHBvcnRlZENvbG9yU2NoZW1lcygpIGNvbnN0IHsgcmV0dXJuIG1fcmFyZUluaGVyaXRl
ZERhdGEtPnN1cHBvcnRlZENvbG9yU2NoZW1lczsgfQorI2VuZGlmCisKICAgICBUZXh0T3JpZW50
YXRpb24gdGV4dE9yaWVudGF0aW9uKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8VGV4dE9y
aWVudGF0aW9uPihtX3JhcmVJbmhlcml0ZWREYXRhLT50ZXh0T3JpZW50YXRpb24pOyB9CiAKICAg
ICBPYmplY3RGaXQgb2JqZWN0Rml0KCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8T2JqZWN0
Rml0PihtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5vYmplY3RGaXQpOyB9CkBAIC0xMTY1LDYgKzEx
NzMsMTAgQEAgcHVibGljOgogCiAgICAgdm9pZCBzZXRSdWJ5UG9zaXRpb24oUnVieVBvc2l0aW9u
IHBvc2l0aW9uKSB7IFNFVF9WQVIobV9yYXJlSW5oZXJpdGVkRGF0YSwgcnVieVBvc2l0aW9uLCBz
dGF0aWNfY2FzdDx1bnNpZ25lZD4ocG9zaXRpb24pKTsgfQogCisjaWYgRU5BQkxFKERBUktfTU9E
RV9DU1MpCisgICAgdm9pZCBzZXRTdXBwb3J0ZWRDb2xvclNjaGVtZXMoU3R5bGVTdXBwb3J0ZWRD
b2xvclNjaGVtZXMgc3VwcG9ydGVkKSB7IFNFVF9WQVIobV9yYXJlSW5oZXJpdGVkRGF0YSwgc3Vw
cG9ydGVkQ29sb3JTY2hlbWVzLCBzdXBwb3J0ZWQpOyB9CisjZW5kaWYKKwogICAgIHZvaWQgc2V0
RmlsdGVyKGNvbnN0IEZpbHRlck9wZXJhdGlvbnMmIG9wcykgeyBTRVRfTkVTVEVEX1ZBUihtX3Jh
cmVOb25Jbmhlcml0ZWREYXRhLCBmaWx0ZXIsIG9wZXJhdGlvbnMsIG9wcyk7IH0KICAgICB2b2lk
IHNldEFwcGxlQ29sb3JGaWx0ZXIoY29uc3QgRmlsdGVyT3BlcmF0aW9ucyYgb3BzKSB7IFNFVF9O
RVNURURfVkFSKG1fcmFyZUluaGVyaXRlZERhdGEsIGFwcGxlQ29sb3JGaWx0ZXIsIG9wZXJhdGlv
bnMsIG9wcyk7IH0KIApAQCAtMTU3OCw2ICsxNTkwLDEwIEBAIHB1YmxpYzoKICAgICBzdGF0aWMg
UXVvdGVzRGF0YSogaW5pdGlhbFF1b3RlcygpIHsgcmV0dXJuIG51bGxwdHI7IH0KICAgICBzdGF0
aWMgY29uc3QgQXRvbWljU3RyaW5nJiBpbml0aWFsQ29udGVudEFsdFRleHQoKSB7IHJldHVybiBl
bXB0eUF0b20oKTsgfQogCisjaWYgRU5BQkxFKERBUktfTU9ERV9DU1MpCisgICAgc3RhdGljIFN0
eWxlU3VwcG9ydGVkQ29sb3JTY2hlbWVzIGluaXRpYWxTdXBwb3J0ZWRDb2xvclNjaGVtZXMoKSB7
IHJldHVybiB7IH07IH0KKyNlbmRpZgorCiAjaWYgRU5BQkxFKENTUzNfVEVYVCkKICAgICBzdGF0
aWMgVGV4dEluZGVudExpbmUgaW5pdGlhbFRleHRJbmRlbnRMaW5lKCkgeyByZXR1cm4gVGV4dElu
ZGVudExpbmU6OkZpcnN0TGluZTsgfQogICAgIHN0YXRpYyBUZXh0SW5kZW50VHlwZSBpbml0aWFs
VGV4dEluZGVudFR5cGUoKSB7IHJldHVybiBUZXh0SW5kZW50VHlwZTo6Tm9ybWFsOyB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGVDb25zdGFu
dHMuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZUNvbnN0YW50
cy5oCmluZGV4IDE3NmViMjEzYTdhNmU3ODJlMzEwNzkwZDUxMGYwY2QxYjNkOWUwMjguLjY2ZTVj
N2I0NzQxMGExYjBhZjExYmVhNDM2YWM5Y2IyYTg0NzcxZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZUNvbnN0YW50cy5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZUNvbnN0YW50cy5oCkBAIC0xMDE4
LDYgKzEwMTgsMTUgQEAgZW51bSBjbGFzcyBSdWJ5UG9zaXRpb24gOiB1aW50OF90IHsKICAgICBJ
bnRlckNoYXJhY3RlcgogfTsKIAorI2lmIEVOQUJMRShEQVJLX01PREVfQ1NTKQorZW51bSBjbGFz
cyBDb2xvclNjaGVtZXMgOiB1aW50OF90IHsKKyAgICBMaWdodCA9IDEgPDwgMCwKKyAgICBEYXJr
ID0gMSA8PCAxCit9OworCitzdGF0aWMgY29uc3Qgc2l6ZV90IENvbG9yU2NoZW1lc0JpdHMgPSAy
OworI2VuZGlmCisKIHN0YXRpYyBjb25zdCBzaXplX3QgR3JpZEF1dG9GbG93Qml0cyA9IDQ7CiBl
bnVtIEludGVybmFsR3JpZEF1dG9GbG93QWxnb3JpdGhtIHsKICAgICBJbnRlcm5hbEF1dG9GbG93
QWxnb3JpdGhtU3BhcnNlID0gMSA8PCAwLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N0eWxlL1N0eWxlUmFyZUluaGVyaXRlZERhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N0eWxlL1N0eWxlUmFyZUluaGVyaXRlZERhdGEuY3BwCmluZGV4IDVmYjc5YjNm
OTQ3ZTQ0NmI3MGVmMzM4MjdjYzcyOGNiYzgwZWIwNmEuLjQ1ZjczNmFiMjgyODcxOTlkZWRmNjc3
ZmNhNGY3NjhiYzBhNjI3YzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dHlsZS9TdHlsZVJhcmVJbmhlcml0ZWREYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3R5bGUvU3R5bGVSYXJlSW5oZXJpdGVkRGF0YS5jcHAKQEAgLTMxLDYgKzMxLDcgQEAK
ICNpbmNsdWRlICJTdHlsZUN1c3RvbVByb3BlcnR5RGF0YS5oIgogI2luY2x1ZGUgIlN0eWxlRmls
dGVyRGF0YS5oIgogI2luY2x1ZGUgIlN0eWxlSW1hZ2UuaCIKKyNpbmNsdWRlICJTdHlsZVN1cHBv
cnRlZENvbG9yU2NoZW1lcy5oIgogI2luY2x1ZGUgPHd0Zi9Qb2ludGVyQ29tcGFyaXNvbi5oPgog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC02Nyw2ICs2OCwxMCBAQCBzdHJ1Y3QgR3JlYXRlclRo
YW5PclNhbWVTaXplQXNTdHlsZVJhcmVJbmhlcml0ZWREYXRhIDogcHVibGljIFJlZkNvdW50ZWQ8
R3JlYXRlcgogICAgIENvbG9yIHRhcEhpZ2hsaWdodENvbG9yOwogI2VuZGlmCiAKKyNpZiBFTkFC
TEUoREFSS19NT0RFX0NTUykKKyAgICBTdHlsZVN1cHBvcnRlZENvbG9yU2NoZW1lcyBzdXBwb3J0
ZWRDb2xvclNjaGVtZXM7CisjZW5kaWYKKwogICAgIHZvaWQqIGN1c3RvbVByb3BlcnR5RGF0YVJl
ZnNbMV07CiB9OwogCkBAIC0xNTMsNiArMTU4LDkgQEAgU3R5bGVSYXJlSW5oZXJpdGVkRGF0YTo6
U3R5bGVSYXJlSW5oZXJpdGVkRGF0YSgpCiAjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKICAgICAs
IHRhcEhpZ2hsaWdodENvbG9yKFJlbmRlclN0eWxlOjppbml0aWFsVGFwSGlnaGxpZ2h0Q29sb3Io
KSkKICNlbmRpZgorI2lmIEVOQUJMRShEQVJLX01PREVfQ1NTKQorICAgICwgc3VwcG9ydGVkQ29s
b3JTY2hlbWVzKFJlbmRlclN0eWxlOjppbml0aWFsU3VwcG9ydGVkQ29sb3JTY2hlbWVzKCkpCisj
ZW5kaWYKIHsKIH0KIApAQCAtMjUxLDYgKzI1OSw5IEBAIGlubGluZSBTdHlsZVJhcmVJbmhlcml0
ZWREYXRhOjpTdHlsZVJhcmVJbmhlcml0ZWREYXRhKGNvbnN0IFN0eWxlUmFyZUluaGVyaXRlZERh
CiAjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKICAgICAsIHRhcEhpZ2hsaWdodENvbG9yKG8udGFw
SGlnaGxpZ2h0Q29sb3IpCiAjZW5kaWYKKyNpZiBFTkFCTEUoREFSS19NT0RFX0NTUykKKyAgICAs
IHN1cHBvcnRlZENvbG9yU2NoZW1lcyhvLnN1cHBvcnRlZENvbG9yU2NoZW1lcykKKyNlbmRpZgog
ewogfQogCkBAIC0yOTYsNiArMzA3LDkgQEAgYm9vbCBTdHlsZVJhcmVJbmhlcml0ZWREYXRhOjpv
cGVyYXRvcj09KGNvbnN0IFN0eWxlUmFyZUluaGVyaXRlZERhdGEmIG8pIGNvbnN0CiAjZW5kaWYK
ICNpZiBFTkFCTEUoVEVYVF9BVVRPU0laSU5HKQogICAgICAgICAmJiB0ZXh0U2l6ZUFkanVzdCA9
PSBvLnRleHRTaXplQWRqdXN0CisjZW5kaWYKKyNpZiBFTkFCTEUoREFSS19NT0RFX0NTUykKKyAg
ICAgICAgJiYgc3VwcG9ydGVkQ29sb3JTY2hlbWVzID09IG8uc3VwcG9ydGVkQ29sb3JTY2hlbWVz
CiAjZW5kaWYKICAgICAgICAgJiYgdXNlclNlbGVjdCA9PSBvLnVzZXJTZWxlY3QKICAgICAgICAg
JiYgc3BlYWtBcyA9PSBvLnNwZWFrQXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdHlsZS9TdHlsZVJhcmVJbmhlcml0ZWREYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3R5bGUvU3R5bGVSYXJlSW5oZXJpdGVkRGF0YS5oCmluZGV4IGEzYWQxNzUwMzRjOWYz
NzFhZTEzNThjMjhhNTQ1OGFjODRmMDhlOWUuLmIyYmRkZmQ0N2ZiODliY2VjYWQxMWE4ZGVjNDA5
NTY1OWYwMzgyZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9T
dHlsZVJhcmVJbmhlcml0ZWREYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0
eWxlL1N0eWxlUmFyZUluaGVyaXRlZERhdGEuaApAQCAtMzcsNiArMzcsMTAgQEAKICNpbmNsdWRl
ICJUZXh0U2l6ZUFkanVzdG1lbnQuaCIKICNlbmRpZgogCisjaWYgRU5BQkxFKERBUktfTU9ERV9D
U1MpCisjaW5jbHVkZSAiU3R5bGVTdXBwb3J0ZWRDb2xvclNjaGVtZXMuaCIKKyNlbmRpZgorCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEN1cnNvckxpc3Q7CkBAIC0xODEsNiArMTg1LDEw
IEBAIHB1YmxpYzoKICAgICBDb2xvciB0YXBIaWdobGlnaHRDb2xvcjsKICNlbmRpZgogCisjaWYg
RU5BQkxFKERBUktfTU9ERV9DU1MpCisgICAgU3R5bGVTdXBwb3J0ZWRDb2xvclNjaGVtZXMgc3Vw
cG9ydGVkQ29sb3JTY2hlbWVzOworI2VuZGlmCisKIHByaXZhdGU6CiAgICAgU3R5bGVSYXJlSW5o
ZXJpdGVkRGF0YSgpOwogICAgIFN0eWxlUmFyZUluaGVyaXRlZERhdGEoY29uc3QgU3R5bGVSYXJl
SW5oZXJpdGVkRGF0YSYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0
eWxlL1N0eWxlU3VwcG9ydGVkQ29sb3JTY2hlbWVzLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3R5bGUvU3R5bGVTdXBwb3J0ZWRDb2xvclNjaGVtZXMuaApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45NmUyNGNi
MTlkMzZmZTY2ZDBiY2I4MTM0MTY5ZDczNjgwNTM2N2IyCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlU3VwcG9ydGVkQ29sb3JTY2hlbWVzLmgK
QEAgLTAsMCArMSw3NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxF
KERBUktfTU9ERV9DU1MpCisKKyNpbmNsdWRlICJSZW5kZXJTdHlsZUNvbnN0YW50cy5oIgorI2lu
Y2x1ZGUgPHd0Zi9PcHRpb25TZXQuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBT
dHlsZVN1cHBvcnRlZENvbG9yU2NoZW1lcyB7CitwdWJsaWM6CisgICAgU3R5bGVTdXBwb3J0ZWRD
b2xvclNjaGVtZXMoKSB7IH0KKworICAgIFN0eWxlU3VwcG9ydGVkQ29sb3JTY2hlbWVzKGNvbnN0
IFN0eWxlU3VwcG9ydGVkQ29sb3JTY2hlbWVzJiBvdGhlcikKKyAgICAgICAgOiBtX2NvbG9yU2No
ZW1lcyhvdGhlci5tX2NvbG9yU2NoZW1lcykKKyAgICAgICAgLCBtX2FsbG93c1RyYW5zZm9ybWF0
aW9ucyhvdGhlci5tX2FsbG93c1RyYW5zZm9ybWF0aW9ucykKKyAgICB7IH0KKworICAgIFN0eWxl
U3VwcG9ydGVkQ29sb3JTY2hlbWVzKE9wdGlvblNldDxDb2xvclNjaGVtZXM+IGNvbG9yU2NoZW1l
cywgYm9vbCBhbGxvd3NUcmFuc2Zvcm1hdGlvbnMpCisgICAgICAgIDogbV9jb2xvclNjaGVtZXMo
Y29sb3JTY2hlbWVzKQorICAgICAgICAsIG1fYWxsb3dzVHJhbnNmb3JtYXRpb25zKGFsbG93c1Ry
YW5zZm9ybWF0aW9ucykKKyAgICB7IH0KKworICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBTdHls
ZVN1cHBvcnRlZENvbG9yU2NoZW1lcyYgb3RoZXIpIGNvbnN0CisgICAgeworICAgICAgICByZXR1
cm4gbV9jb2xvclNjaGVtZXMgPT0gb3RoZXIubV9jb2xvclNjaGVtZXMgJiYgbV9hbGxvd3NUcmFu
c2Zvcm1hdGlvbnMgPT0gb3RoZXIubV9hbGxvd3NUcmFuc2Zvcm1hdGlvbnM7CisgICAgfQorCisg
ICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFN0eWxlU3VwcG9ydGVkQ29sb3JTY2hlbWVzJiBvdGhl
cikgY29uc3QgeyByZXR1cm4gISgqdGhpcyA9PSBvdGhlcik7IH0KKworICAgIGJvb2wgaXNBdXRv
KCkgY29uc3QgeyByZXR1cm4gbV9jb2xvclNjaGVtZXMuaXNFbXB0eSgpICYmIG1fYWxsb3dzVHJh
bnNmb3JtYXRpb25zOyB9CisgICAgYm9vbCBpc09ubHkoKSBjb25zdCB7IHJldHVybiBtX2NvbG9y
U2NoZW1lcy5pc0VtcHR5KCkgJiYgIW1fYWxsb3dzVHJhbnNmb3JtYXRpb25zOyB9CisKKyAgICBP
cHRpb25TZXQ8Q29sb3JTY2hlbWVzPiBjb2xvclNjaGVtZXMoKSBjb25zdCB7IHJldHVybiBtX2Nv
bG9yU2NoZW1lczsgfQorCisgICAgdm9pZCBhZGQoQ29sb3JTY2hlbWVzIGNvbG9yU2NoZW1lKSB7
IG1fY29sb3JTY2hlbWVzLmFkZChjb2xvclNjaGVtZSk7IH0KKyAgICBib29sIGNvbnRhaW5zKENv
bG9yU2NoZW1lcyBjb2xvclNjaGVtZSkgY29uc3QgeyByZXR1cm4gbV9jb2xvclNjaGVtZXMuY29u
dGFpbnMoY29sb3JTY2hlbWUpOyB9CisKKyAgICB2b2lkIHNldEFsbG93c1RyYW5zZm9ybWF0aW9u
cyhib29sIGFsbG93KSB7IG1fYWxsb3dzVHJhbnNmb3JtYXRpb25zID0gYWxsb3c7IH0KKyAgICBi
b29sIGFsbG93c1RyYW5zZm9ybWF0aW9ucygpIGNvbnN0IHsgcmV0dXJuIG1fYWxsb3dzVHJhbnNm
b3JtYXRpb25zOyB9CisKK3ByaXZhdGU6CisgICAgT3B0aW9uU2V0PENvbG9yU2NoZW1lcz4gbV9j
b2xvclNjaGVtZXM7CisgICAgYm9vbCBtX2FsbG93c1RyYW5zZm9ybWF0aW9ucyB7IHRydWUgfTsK
K307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShEQVJLX01P
REVfQ1NTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZS5jcHAKaW5kZXggOTFl
Zjg1MTRlNTgzZWQzNTM4MGU3YWM3ODI3ZDFiZDBmODI1NDA0YS4uMDYwOTdlY2NiYmUzYzJlNmM2
MmE0NTlkYzE4ZWIxNjJkNDk5NDhhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL2dy
YXBoaWNzL1NWR0ltYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZH
SW1hZ2UuY3BwCkBAIC00Nyw2ICs0Nyw3IEBACiAjaW5jbHVkZSAiUGFnZUNvbmZpZ3VyYXRpb24u
aCIKICNpbmNsdWRlICJSZW5kZXJTVkdSb290LmgiCiAjaW5jbHVkZSAiUmVuZGVyU3R5bGUuaCIK
KyNpbmNsdWRlICJSZW5kZXJWaWV3LmgiCiAjaW5jbHVkZSAiU1ZHRG9jdW1lbnQuaCIKICNpbmNs
dWRlICJTVkdGRUltYWdlRWxlbWVudC5oIgogI2luY2x1ZGUgIlNWR0ZvcmVpZ25PYmplY3RFbGVt
ZW50LmgiCkBAIC0zMjQsOCArMzI1LDcgQEAgSW1hZ2VEcmF3UmVzdWx0IFNWR0ltYWdlOjpkcmF3
KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWMKICAgICB9
CiAKICNpZiBQTEFURk9STShNQUMpCi0gICAgYXV0byogZG9jdW1lbnQgPSBtX3BhZ2UtPm1haW5G
cmFtZSgpLmRvY3VtZW50KCk7Ci0gICAgTG9jYWxEZWZhdWx0U3lzdGVtQXBwZWFyYW5jZSBsb2Nh
bEFwcGVhcmFuY2UoZG9jdW1lbnQgPyBkb2N1bWVudC0+dXNlRGFya0FwcGVhcmFuY2UoKSA6IGZh
bHNlKTsKKyAgICBMb2NhbERlZmF1bHRTeXN0ZW1BcHBlYXJhbmNlIGxvY2FsQXBwZWFyYW5jZSh2
aWV3LT5yZW5kZXJWaWV3KCktPnVzZURhcmtBcHBlYXJhbmNlKCkpOwogI2VuZGlmCiAKICAgICB2
aWV3LT5wYWludChjb250ZXh0LCBpbnRlcnNlY3Rpb24oY29udGV4dC5jbGlwQm91bmRzKCksIGVu
Y2xvc2luZ0ludFJlY3Qoc3JjUmVjdCkpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9ET00vSW5qZWN0ZWRCdW5kbGVSYW5nZUhhbmRsZS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvRE9NL0luamVjdGVkQnVu
ZGxlUmFuZ2VIYW5kbGUuY3BwCmluZGV4IDNmNGY1NjdkYzRiYWU2MTg1NTUyNTIwODc0ZjVmZWI1
NWM4OGZjMjEuLjRiZmRkN2Y5ZjRjNGNjNGRmYTZkZWFhYmMwMWY0YTZjMTExZWRhY2IgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9ET00vSW5qZWN0
ZWRCdW5kbGVSYW5nZUhhbmRsZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0lu
amVjdGVkQnVuZGxlL0RPTS9JbmplY3RlZEJ1bmRsZVJhbmdlSGFuZGxlLmNwcApAQCAtNDEsNiAr
NDEsNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvSlNSYW5nZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUv
UGFnZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmFuZ2UuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1Jl
bmRlclZpZXcuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Zpc2libGVTZWxlY3Rpb24uaD4KICNpbmNs
dWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgpAQCAt
MTI0LDcgKzEyNSw4IEBAIFJlZlB0cjxXZWJJbWFnZT4gSW5qZWN0ZWRCdW5kbGVSYW5nZUhhbmRs
ZTo6cmVuZGVyZWRJbWFnZShTbmFwc2hvdE9wdGlvbnMgb3B0aW9uCiAgICAgICAgIHJldHVybiBu
dWxscHRyOwogCiAjaWYgUExBVEZPUk0oTUFDKQotICAgIExvY2FsRGVmYXVsdFN5c3RlbUFwcGVh
cmFuY2UgbG9jYWxBcHBlYXJhbmNlKG93bmVyRG9jdW1lbnQudXNlRGFya0FwcGVhcmFuY2UoKSk7
CisgICAgUmVuZGVyVmlldyogcmVuZGVyVmlldyA9IGZyYW1lVmlldy0+cmVuZGVyVmlldygpOwor
ICAgIExvY2FsRGVmYXVsdFN5c3RlbUFwcGVhcmFuY2UgbG9jYWxBcHBlYXJhbmNlKHJlbmRlclZp
ZXcgPyByZW5kZXJWaWV3LT51c2VEYXJrQXBwZWFyYW5jZSgpIDogZmFsc2UpOwogI2VuZGlmCiAK
ICAgICBSZWY8RnJhbWU+IHByb3RlY3RvcigqZnJhbWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAppbmRleCA4MGM1MzgzYTJlNTQ4NTRlNzNjODc2NTM3
ZmNjNjRmMjNjZGYxYmY3Li4yZjU0ZDVkZmQ0YWQ1NzIxZjkzOWQ5NDY5NjczMWY2NjEzYTg4ZDcx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcApAQCAt
MTU1Niw4ICsxNTU2LDggQEAgdm9pZCBXZWJQYWdlOjpzY3JvbGxNYWluRnJhbWVJZk5vdEF0TWF4
U2Nyb2xsUG9zaXRpb24oY29uc3QgSW50U2l6ZSYgc2Nyb2xsT2Zmc2UKIHZvaWQgV2ViUGFnZTo6
ZHJhd1JlY3QoR3JhcGhpY3NDb250ZXh0JiBncmFwaGljc0NvbnRleHQsIGNvbnN0IEludFJlY3Qm
IHJlY3QpCiB7CiAjaWYgUExBVEZPUk0oTUFDKQotICAgIGF1dG8qIGRvY3VtZW50ID0gbV9tYWlu
RnJhbWUtPmNvcmVGcmFtZSgpLT5kb2N1bWVudCgpOwotICAgIExvY2FsRGVmYXVsdFN5c3RlbUFw
cGVhcmFuY2UgbG9jYWxBcHBlYXJhbmNlKGRvY3VtZW50ID8gZG9jdW1lbnQtPnVzZURhcmtBcHBl
YXJhbmNlKCkgOiBmYWxzZSk7CisgICAgUmVuZGVyVmlldyogcmVuZGVyVmlldyA9IG1fcGFnZS0+
bWFpbkZyYW1lKCkudmlldygpLT5yZW5kZXJWaWV3KCk7CisgICAgTG9jYWxEZWZhdWx0U3lzdGVt
QXBwZWFyYW5jZSBsb2NhbEFwcGVhcmFuY2UocmVuZGVyVmlldyA/IHJlbmRlclZpZXctPnVzZURh
cmtBcHBlYXJhbmNlKCkgOiBmYWxzZSk7CiAjZW5kaWYKIAogICAgIEdyYXBoaWNzQ29udGV4dFN0
YXRlU2F2ZXIgc3RhdGVTYXZlcihncmFwaGljc0NvbnRleHQpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lm1tIGIvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lm1tCmlu
ZGV4IDU1NDZkMDBjODE2NGEyZWE5NTE3NGE0OWRjOGRlM2VkMTQ1ZTY2YzUuLjNkNmFmY2IwMjA4
OGRjZjM1ZWJkOWQ5ZTc3MDUyMjc4NGM2Yjg0MGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQubW0KQEAgLTky
LDEwICs5Miw2IEBACiAjaW1wb3J0ICJXZWJVSUtpdERlbGVnYXRlLmgiCiAjZW5kaWYKIAotI2lm
IFBMQVRGT1JNKE1BQykKLSNpbXBvcnQgPFdlYkNvcmUvTG9jYWxEZWZhdWx0U3lzdGVtQXBwZWFy
YW5jZS5oPgotI2VuZGlmCi0KIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiB1c2luZyBuYW1l
c3BhY2UgSFRNTE5hbWVzOwpAQCAtNDc3LDEwICs0NzMsNiBAQCBzdGF0aWMgTlNEaWN0aW9uYXJ5
ICphdHRyaWJ1dGVzRm9yQXR0cmlidXRlZFN0cmluZ0NvbnZlcnNpb24oKQogCiB2b2lkIF9XZWJD
cmVhdGVGcmFnbWVudChEb2N1bWVudCYgZG9jdW1lbnQsIE5TQXR0cmlidXRlZFN0cmluZyAqc3Ry
aW5nLCBGcmFnbWVudEFuZFJlc291cmNlcyYgcmVzdWx0KQogewotI2lmIFBMQVRGT1JNKE1BQykK
LSAgICBMb2NhbERlZmF1bHRTeXN0ZW1BcHBlYXJhbmNlIGxvY2FsQXBwZWFyYW5jZShkb2N1bWVu
dC51c2VEYXJrQXBwZWFyYW5jZSgpKTsKLSNlbmRpZgotCiAgICAgc3RhdGljIE5TRGljdGlvbmFy
eSAqZG9jdW1lbnRBdHRyaWJ1dGVzID0gW2F0dHJpYnV0ZXNGb3JBdHRyaWJ1dGVkU3RyaW5nQ29u
dmVyc2lvbigpIHJldGFpbl07CiAgICAgTlNBcnJheSAqc3VicmVzb3VyY2VzOwogICAgIERPTURv
Y3VtZW50RnJhZ21lbnQqIGZyYWdtZW50ID0gW3N0cmluZyBfZG9jdW1lbnRGcm9tUmFuZ2U6TlNN
YWtlUmFuZ2UoMCwgW3N0cmluZyBsZW5ndGhdKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDJmZGE0YjE2M2IyMWVkMWMyZjky
MTIyYzc2MDMxMjQyZDBiNGM3YzkuLmE2ZDhlMDEyNTUxZjZhOTgxZTliMTNjOTZlNmRiMmEwM2Q2
Y2VhNTAgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBAQAorMjAxOC0xMS0wOCAgVGltb3RoeSBIYXRjaGVy
ICA8dGltb3RoeUBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIGV4cGVyaW1lbnRhbCBzdXBwb3J0
IGZvciBhIGBzdXBwb3J0ZWQtY29sb3Itc2NoZW1lc2AgQ1NTIHByb3BlcnR5LgorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkxMzE5CisgICAgICAgIHJk
YXI6Ly9wcm9ibGVtLzQ1ODUyMjYxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGVhbiBKYWNrc29u
LgorCisgICAgICAgICogY3NzLWRhcmstbW9kZS9wYXJzZS1zdXBwb3J0ZWQtY29sb3Itc2NoZW1l
cy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGNzcy1kYXJrLW1vZGUvcGFyc2Utc3Vw
cG9ydGVkLWNvbG9yLXNjaGVtZXMuaHRtbDogQWRkZWQuCisgICAgICAgICogY3NzLWRhcmstbW9k
ZS9zdXBwb3J0ZWQtY29sb3Itc2NoZW1lcy1jc3MtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAg
ICAgKiBjc3MtZGFyay1tb2RlL3N1cHBvcnRlZC1jb2xvci1zY2hlbWVzLWNzcy5odG1sOiBBZGRl
ZC4KKwogMjAxOC0xMS0wNyAgSnVzdGluIE1pY2hhdWQgIDxqdXN0aW5fbWljaGF1ZEBhcHBsZS5j
b20+CiAKICAgICAgICAgQ1NTIFBhaW50aW5nIEFQSSBzaG91bGQgcGFzcyBzaXplLCBhcmd1bWVu
dHMgYW5kIGlucHV0IHByb3BlcnRpZXMgdG8gcGFpbnQgY2FsbGJhY2sKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2Nzcy1kYXJrLW1vZGUvcGFyc2Utc3VwcG9ydGVkLWNvbG9yLXNjaGVtZXMtZXhw
ZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvY3NzLWRhcmstbW9kZS9wYXJzZS1zdXBwb3J0ZWQtY29s
b3Itc2NoZW1lcy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMmEyODdmNWMzYTBhMDRlODNhYmJi
MWE5YjQ0MWMxYTc4ZGVjMzc0NQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Nzcy1k
YXJrLW1vZGUvcGFyc2Utc3VwcG9ydGVkLWNvbG9yLXNjaGVtZXMtZXhwZWN0ZWQudHh0CkBAIC0w
LDAgKzEsNCBAQAorCitQQVNTIFRlc3QgdmFsaWQgdmFsdWVzIAorUEFTUyBUZXN0IGludmFsaWQg
dmFsdWVzIAorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9jc3MtZGFyay1tb2RlL3BhcnNlLXN1
cHBvcnRlZC1jb2xvci1zY2hlbWVzLmh0bWwgYi9MYXlvdXRUZXN0cy9jc3MtZGFyay1tb2RlL3Bh
cnNlLXN1cHBvcnRlZC1jb2xvci1zY2hlbWVzLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMWJjMTBhODI1ZDcz
ZmIzNzVhYTU4ZTk1ODNjZmQ4MjQxNjliMDI5ZgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2Nzcy1kYXJrLW1vZGUvcGFyc2Utc3VwcG9ydGVkLWNvbG9yLXNjaGVtZXMuaHRtbApAQCAt
MCwwICsxLDEyOCBAQAorPCFET0NUWVBFIGh0bWw+CisKKzwhLS0gd2Via2l0LXRlc3QtcnVubmVy
IFsgZXhwZXJpbWVudGFsOkRhcmtNb2RlQ1NTRW5hYmxlZD10cnVlIF0gLS0+CisKKzxzY3JpcHQg
c3JjPSIuLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9
Ii4uL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+CisKKzxzdHlsZT4K
KyN0ZXN0QXV0byB7CisgICAgc3VwcG9ydGVkLWNvbG9yLXNjaGVtZXM6IGF1dG87Cit9CisKKyN0
ZXN0T25seSB7CisgICAgc3VwcG9ydGVkLWNvbG9yLXNjaGVtZXM6IG9ubHk7Cit9CisKKyN0ZXN0
TGlnaHQgeworICAgIHN1cHBvcnRlZC1jb2xvci1zY2hlbWVzOiBsaWdodDsKK30KKworI3Rlc3RE
YXJrIHsKKyAgICBzdXBwb3J0ZWQtY29sb3Itc2NoZW1lczogZGFyazsKK30KKworI3Rlc3RMaWdo
dERhcmsgeworICAgIHN1cHBvcnRlZC1jb2xvci1zY2hlbWVzOiBsaWdodCBkYXJrOworfQorCisj
dGVzdERhcmtMaWdodCB7CisgICAgc3VwcG9ydGVkLWNvbG9yLXNjaGVtZXM6IGRhcmsgbGlnaHQ7
Cit9CisKKyN0ZXN0TGlnaHREYXJrT25seSB7CisgICAgc3VwcG9ydGVkLWNvbG9yLXNjaGVtZXM6
IGxpZ2h0IGRhcmsgb25seTsKK30KKworI3Rlc3RPbmx5RGFyayB7CisgICAgc3VwcG9ydGVkLWNv
bG9yLXNjaGVtZXM6IG9ubHkgZGFyazsKK30KKworI3Rlc3RMaWdodE9ubHlEYXJrIHsKKyAgICBz
dXBwb3J0ZWQtY29sb3Itc2NoZW1lczogbGlnaHQgb25seSBkYXJrOworfQorCisjdGVzdExpZ2h0
VW5rbm93biB7CisgICAgc3VwcG9ydGVkLWNvbG9yLXNjaGVtZXM6IGxpZ2h0IGZvbzsKK30KKwor
I3Rlc3RVbmtub3duRGFya09ubHkgeworICAgIHN1cHBvcnRlZC1jb2xvci1zY2hlbWVzOiBiYXIg
ZGFyayBvbmx5OworfQorCisjdGVzdExpZ2h0VW5rbm93bk9ubHkgeworICAgIHN1cHBvcnRlZC1j
b2xvci1zY2hlbWVzOiBsaWdodCBiYXogb25seTsKK30KKworI3Rlc3RJbnZhbGlkTGlnaHRBdXRv
IHsKKyAgICBzdXBwb3J0ZWQtY29sb3Itc2NoZW1lczogbGlnaHQgYXV0bzsKK30KKworI3Rlc3RJ
bnZhbGlkQXV0b0RhcmsgeworICAgIHN1cHBvcnRlZC1jb2xvci1zY2hlbWVzOiBhdXRvIGRhcms7
Cit9CisKKyN0ZXN0SW52YWxpZExpZ2h0RGFya0xpZ2h0IHsKKyAgICBzdXBwb3J0ZWQtY29sb3It
c2NoZW1lczogbGlnaHQgZGFyayBsaWdodDsKK30KKworI3Rlc3RJbnZhbGlkTnVtYmVyIHsKKyAg
ICBzdXBwb3J0ZWQtY29sb3Itc2NoZW1lczogNDI7Cit9CisKKyN0ZXN0SW52YWxpZFN0cmluZyB7
CisgICAgc3VwcG9ydGVkLWNvbG9yLXNjaGVtZXM6ICJmb28iOworfQorCisjdGVzdEludmFsaWRM
aWdodFN0cmluZyB7CisgICAgc3VwcG9ydGVkLWNvbG9yLXNjaGVtZXM6IGxpZ2h0ICJmb28iOwor
fQorPC9zdHlsZT4KKworPGRpdiBpZD0idGVzdEF1dG8iPjwvZGl2PgorPGRpdiBpZD0idGVzdE9u
bHkiPjwvZGl2PgorPGRpdiBpZD0idGVzdExpZ2h0Ij48L2Rpdj4KKzxkaXYgaWQ9InRlc3REYXJr
Ij48L2Rpdj4KKzxkaXYgaWQ9InRlc3RMaWdodERhcmsiPjwvZGl2PgorPGRpdiBpZD0idGVzdERh
cmtMaWdodCI+PC9kaXY+Cis8ZGl2IGlkPSJ0ZXN0TGlnaHREYXJrT25seSI+PC9kaXY+Cis8ZGl2
IGlkPSJ0ZXN0T25seURhcmsiPjwvZGl2PgorPGRpdiBpZD0idGVzdExpZ2h0T25seURhcmsiPjwv
ZGl2PgorPGRpdiBpZD0idGVzdExpZ2h0VW5rbm93biI+PC9kaXY+Cis8ZGl2IGlkPSJ0ZXN0VW5r
bm93bkRhcmtPbmx5Ij48L2Rpdj4KKworPGRpdiBpZD0idGVzdEludmFsaWRMaWdodEF1dG8iPjwv
ZGl2PgorPGRpdiBpZD0idGVzdEludmFsaWRBdXRvRGFyayI+PC9kaXY+Cis8ZGl2IGlkPSJ0ZXN0
SW52YWxpZExpZ2h0RGFya0xpZ2h0Ij48L2Rpdj4KKzxkaXYgaWQ9InRlc3RJbnZhbGlkTnVtYmVy
Ij48L2Rpdj4KKzxkaXYgaWQ9InRlc3RJbnZhbGlkU3RyaW5nIj48L2Rpdj4KKzxkaXYgaWQ9InRl
c3RJbnZhbGlkTGlnaHRTdHJpbmciPjwvZGl2PgorCis8c2NyaXB0PgorZnVuY3Rpb24gdGVzdF9w
cm9wKGlkLCBwcm9wZXJ0eSwgZXhwZWN0ZWQpIHsKKyAgICBhc3NlcnRfZXF1YWxzKHdpbmRvdy5n
ZXRDb21wdXRlZFN0eWxlKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGlkKSkuZ2V0UHJvcGVydHlW
YWx1ZShwcm9wZXJ0eSksIGV4cGVjdGVkKTsKK30KKwordGVzdChmdW5jdGlvbigpIHsKKyAgICB0
ZXN0X3Byb3AoInRlc3RBdXRvIiwgInN1cHBvcnRlZC1jb2xvci1zY2hlbWVzIiwgImF1dG8iKTsK
KyAgICB0ZXN0X3Byb3AoInRlc3RPbmx5IiwgInN1cHBvcnRlZC1jb2xvci1zY2hlbWVzIiwgImxp
Z2h0IG9ubHkiKTsKKyAgICB0ZXN0X3Byb3AoInRlc3RMaWdodCIsICJzdXBwb3J0ZWQtY29sb3It
c2NoZW1lcyIsICJsaWdodCIpOworICAgIHRlc3RfcHJvcCgidGVzdERhcmsiLCAic3VwcG9ydGVk
LWNvbG9yLXNjaGVtZXMiLCAiZGFyayIpOworICAgIHRlc3RfcHJvcCgidGVzdExpZ2h0RGFyayIs
ICJzdXBwb3J0ZWQtY29sb3Itc2NoZW1lcyIsICJsaWdodCBkYXJrIik7CisgICAgdGVzdF9wcm9w
KCJ0ZXN0RGFya0xpZ2h0IiwgInN1cHBvcnRlZC1jb2xvci1zY2hlbWVzIiwgImxpZ2h0IGRhcmsi
KTsKKyAgICB0ZXN0X3Byb3AoInRlc3RMaWdodERhcmtPbmx5IiwgInN1cHBvcnRlZC1jb2xvci1z
Y2hlbWVzIiwgImxpZ2h0IGRhcmsgb25seSIpOworICAgIHRlc3RfcHJvcCgidGVzdE9ubHlEYXJr
IiwgInN1cHBvcnRlZC1jb2xvci1zY2hlbWVzIiwgImRhcmsgb25seSIpOworICAgIHRlc3RfcHJv
cCgidGVzdExpZ2h0T25seURhcmsiLCAic3VwcG9ydGVkLWNvbG9yLXNjaGVtZXMiLCAibGlnaHQg
ZGFyayBvbmx5Iik7CisgICAgdGVzdF9wcm9wKCJ0ZXN0TGlnaHRVbmtub3duIiwgInN1cHBvcnRl
ZC1jb2xvci1zY2hlbWVzIiwgImxpZ2h0Iik7CisgICAgdGVzdF9wcm9wKCJ0ZXN0VW5rbm93bkRh
cmtPbmx5IiwgInN1cHBvcnRlZC1jb2xvci1zY2hlbWVzIiwgImRhcmsgb25seSIpOworfSwgIlRl
c3QgdmFsaWQgdmFsdWVzIik7CisKK3Rlc3QoZnVuY3Rpb24oKSB7CisgICAgdGVzdF9wcm9wKCJ0
ZXN0SW52YWxpZExpZ2h0QXV0byIsICJzdXBwb3J0ZWQtY29sb3Itc2NoZW1lcyIsICJhdXRvIik7
CisgICAgdGVzdF9wcm9wKCJ0ZXN0SW52YWxpZEF1dG9EYXJrIiwgInN1cHBvcnRlZC1jb2xvci1z
Y2hlbWVzIiwgImF1dG8iKTsKKyAgICB0ZXN0X3Byb3AoInRlc3RJbnZhbGlkTGlnaHREYXJrTGln
aHQiLCAic3VwcG9ydGVkLWNvbG9yLXNjaGVtZXMiLCAiYXV0byIpOworICAgIHRlc3RfcHJvcCgi
dGVzdEludmFsaWROdW1iZXIiLCAic3VwcG9ydGVkLWNvbG9yLXNjaGVtZXMiLCAiYXV0byIpOwor
ICAgIHRlc3RfcHJvcCgidGVzdEludmFsaWRTdHJpbmciLCAic3VwcG9ydGVkLWNvbG9yLXNjaGVt
ZXMiLCAiYXV0byIpOworICAgIHRlc3RfcHJvcCgidGVzdEludmFsaWRMaWdodFN0cmluZyIsICJz
dXBwb3J0ZWQtY29sb3Itc2NoZW1lcyIsICJhdXRvIik7Cit9LCAiVGVzdCBpbnZhbGlkIHZhbHVl
cyIpOworPC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9jc3MtZGFyay1tb2RlL3N1
cHBvcnRlZC1jb2xvci1zY2hlbWVzLWNzcy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9jc3Mt
ZGFyay1tb2RlL3N1cHBvcnRlZC1jb2xvci1zY2hlbWVzLWNzcy1leHBlY3RlZC50eHQKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uY2RkZDU2ZjYzMzljMzNlNjJlYWZmNGY0YzYyODUxNzVlZWI0NWY0OAotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2Nzcy1kYXJrLW1vZGUvc3VwcG9ydGVkLWNvbG9yLXNjaGVt
ZXMtY3NzLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDI4IEBACisKK1BBU1MgRWxlbWVudCBjb2xv
cnMgYXJlIGNvcnJlY3QgaW4gbGlnaHQgY29sb3Igc2NoZW1lIHdpdGggb25seSBsaWdodCBzdXBw
b3J0ZWQgY29sb3Igc2NoZW1lIAorUEFTUyBEYXJrIGNvbG9yIHNjaGVtZSBlbmFibGVkIAorUEFT
UyBFbGVtZW50IGNvbG9ycyBhcmUgY29ycmVjdCBpbiBkYXJrIGNvbG9yIHNjaGVtZSB3aXRoIG9u
bHkgbGlnaHQgc3VwcG9ydGVkIGNvbG9yIHNjaGVtZSAKK1BBU1MgTGlnaHQgY29sb3Igc2NoZW1l
IGVuYWJsZWQgCitQQVNTIFN1cHBvcnRlZCBjb2xvciBzY2hlbWVzIGNoYW5nZWQgdG8gbGlnaHQg
YW5kIGRhcmsgCitQQVNTIEVsZW1lbnQgY29sb3JzIGFyZSBjb3JyZWN0IGluIGxpZ2h0IGNvbG9y
IHNjaGVtZSB3aXRoIGxpZ2h0IGFuZCBkYXJrIHN1cHBvcnRlZCBjb2xvciBzY2hlbWUgCitQQVNT
IERhcmsgY29sb3Igc2NoZW1lIGVuYWJsZWQgCitQQVNTIEVsZW1lbnQgY29sb3JzIGFyZSBjb3Jy
ZWN0IGluIGRhcmsgY29sb3Igc2NoZW1lIHdpdGggbGlnaHQgYW5kIGRhcmsgc3VwcG9ydGVkIGNv
bG9yIHNjaGVtZSAKK1BBU1MgTGlnaHQgY29sb3Igc2NoZW1lIGVuYWJsZWQgCitQQVNTIFN1cHBv
cnRlZCBjb2xvciBzY2hlbWVzIGNoYW5nZWQgdG8gZGFyayAKK1BBU1MgRWxlbWVudCBjb2xvcnMg
YXJlIGNvcnJlY3QgaW4gbGlnaHQgY29sb3Igc2NoZW1lIHdpdGggb25seSBkYXJrIHN1cHBvcnRl
ZCBjb2xvciBzY2hlbWUgCitQQVNTIERhcmsgY29sb3Igc2NoZW1lIGVuYWJsZWQgCitQQVNTIEVs
ZW1lbnQgY29sb3JzIGFyZSBjb3JyZWN0IGluIGRhcmsgY29sb3Igc2NoZW1lIHdpdGggb25seSBk
YXJrIHN1cHBvcnRlZCBjb2xvciBzY2hlbWUgCitQQVNTIFN1cHBvcnRlZCBjb2xvciBzY2hlbWVz
IGNoYW5nZWQgdG8gbGlnaHQgYW5kIGEgYm9ndXMgdmFsdWUgCitQQVNTIEVsZW1lbnQgY29sb3Jz
IGFyZSBjb3JyZWN0IGluIGRhcmsgY29sb3Igc2NoZW1lIHdpdGggb25seSBsaWdodCBzdXBwb3J0
ZWQgY29sb3Igc2NoZW1lIAorUEFTUyBTdXBwb3J0ZWQgY29sb3Igc2NoZW1lcyBjaGFuZ2VkIHRv
IGF1dG8gdmFsdWUgCitQQVNTIEVsZW1lbnQgY29sb3JzIGFyZSBjb3JyZWN0IGluIGRhcmsgY29s
b3Igc2NoZW1lIHdpdGggaW1wbGljaXQgbGlnaHQgc3VwcG9ydGVkIGNvbG9yIHNjaGVtZSAKK1BB
U1MgU3VwcG9ydGVkIGNvbG9yIHNjaGVtZXMgY2hhbmdlZCB0byBsaWdodCBhbmQgZGFyayB2aWEg
PG1ldGE+IGVsZW1lbnQgCitQQVNTIEVsZW1lbnQgY29sb3JzIGFyZSBjb3JyZWN0IGluIGRhcmsg
Y29sb3Igc2NoZW1lIHdpdGggbGlnaHQgYW5kIGRhcmsgc3VwcG9ydGVkIGNvbG9yIHNjaGVtZSB2
aWEgPG1ldGE+IGVsZW1lbnQgCitQQVNTIFN1cHBvcnRlZCBjb2xvciBzY2hlbWVzIGNoYW5nZWQg
dG8gbGlnaHQgdmFsdWUgCitQQVNTIEVsZW1lbnQgY29sb3JzIGFyZSBjb3JyZWN0IGluIGRhcmsg
Y29sb3Igc2NoZW1lIHdpdGggZXhwbGljaXQgbGlnaHQsIG92ZXJyaWRpbmcgPG1ldGE+IGVsZW1l
bnQgCitQQVNTIFJlbW92ZSB0ZXN0IG1ldGEgZWxlbWVudCAKK1BBU1MgU3VwcG9ydGVkIGNvbG9y
IHNjaGVtZXMgY2hhbmdlZCB0byBsaWdodCBhbmQgZGFyayAKK1BBU1MgRWxlbWVudCBjb2xvcnMg
YXJlIGNvcnJlY3QgaW4gZGFyayBjb2xvciBzY2hlbWUgd2l0aCBsaWdodCBhbmQgZGFyayBzdXBw
b3J0ZWQgY29sb3Igc2NoZW1lIAorUEFTUyBTdXBwb3J0ZWQgY29sb3Igc2NoZW1lcyBjaGFuZ2Vk
IHRvIGEgYm9ndXMgdmFsdWUgYW5kIGRhcmsgCitQQVNTIEVsZW1lbnQgY29sb3JzIGFyZSBjb3Jy
ZWN0IGluIGRhcmsgY29sb3Igc2NoZW1lIHdpdGggZGFyayBzdXBwb3J0ZWQgY29sb3Igc2NoZW1l
IAorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9jc3MtZGFyay1tb2RlL3N1cHBvcnRlZC1jb2xv
ci1zY2hlbWVzLWNzcy5odG1sIGIvTGF5b3V0VGVzdHMvY3NzLWRhcmstbW9kZS9zdXBwb3J0ZWQt
Y29sb3Itc2NoZW1lcy1jc3MuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iNmNhNjgwMWFmNGU3YTI0ZDg0NzBi
MmQ5N2Q3MGUxOGY3NmI5Y2ZlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvY3NzLWRh
cmstbW9kZS9zdXBwb3J0ZWQtY29sb3Itc2NoZW1lcy1jc3MuaHRtbApAQCAtMCwwICsxLDE1MyBA
QAorPCFET0NUWVBFIGh0bWw+CisKKzwhLS0gd2Via2l0LXRlc3QtcnVubmVyIFsgZXhwZXJpbWVu
dGFsOkRhcmtNb2RlQ1NTRW5hYmxlZD10cnVlIF0gLS0+CisKKzxzY3JpcHQgc3JjPSIuLi9yZXNv
dXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNl
cy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+CisKKzxzdHlsZT4KKyN0ZXN0MSB7Cisg
ICAgY29sb3I6IHRleHQ7Cit9Cis8L3N0eWxlPgorCis8ZGl2IGlkPSJ0ZXN0MSI+PC9kaXY+CisK
KzxzY3JpcHQ+CitmdW5jdGlvbiB0ZXN0X3Byb3AoaWQsIHByb3AsIGV4cGVjdGVkKSB7CisgICAg
YXNzZXJ0X2VxdWFscyh3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShkb2N1bWVudC5nZXRFbGVtZW50
QnlJZChpZCkpLmdldFByb3BlcnR5VmFsdWUocHJvcCksIGV4cGVjdGVkKTsKK30KKworZnVuY3Rp
b24gdGVzdF9jb2xvcl9pc193aGl0ZShpZCkgeworICAgIHRlc3RfcHJvcCgidGVzdDEiLCAiY29s
b3IiLCAicmdiKDI1NSwgMjU1LCAyNTUpIik7Cit9CisKK2Z1bmN0aW9uIHRlc3RfY29sb3JfaXNf
YmxhY2soaWQpIHsKKyAgICB0ZXN0X3Byb3AoInRlc3QxIiwgImNvbG9yIiwgInJnYigwLCAwLCAw
KSIpOworfQorCit0ZXN0KGZ1bmN0aW9uKCkgeworICAgIC8vIFRoZSBzZW1hbnRpYyB0ZXh0IGNv
bG9yIHNob3VsZCBiZSBibGFjay4KKyAgICB0ZXN0X2NvbG9yX2lzX2JsYWNrKCJ0ZXN0MSIpOwor
fSwgIkVsZW1lbnQgY29sb3JzIGFyZSBjb3JyZWN0IGluIGxpZ2h0IGNvbG9yIHNjaGVtZSB3aXRo
IG9ubHkgbGlnaHQgc3VwcG9ydGVkIGNvbG9yIHNjaGVtZSIpOworCit0ZXN0KGZ1bmN0aW9uKCkg
eworICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzKQorICAgICAgICBpbnRlcm5hbHMuc2V0dGluZ3Mu
c2V0VXNlRGFya0FwcGVhcmFuY2UodHJ1ZSk7Cit9LCAiRGFyayBjb2xvciBzY2hlbWUgZW5hYmxl
ZCIpOworCit0ZXN0KGZ1bmN0aW9uKCkgeworICAgIC8vIFRoZSBzZW1hbnRpYyB0ZXh0IGNvbG9y
IHNob3VsZCBiZSBibGFjaywgYW5kIG5vdCBjaGFuZ2UuCisgICAgdGVzdF9jb2xvcl9pc19ibGFj
aygidGVzdDEiKTsKK30sICJFbGVtZW50IGNvbG9ycyBhcmUgY29ycmVjdCBpbiBkYXJrIGNvbG9y
IHNjaGVtZSB3aXRoIG9ubHkgbGlnaHQgc3VwcG9ydGVkIGNvbG9yIHNjaGVtZSIpOworCit0ZXN0
KGZ1bmN0aW9uKCkgeworICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzKQorICAgICAgICBpbnRlcm5h
bHMuc2V0dGluZ3Muc2V0VXNlRGFya0FwcGVhcmFuY2UoZmFsc2UpOworfSwgIkxpZ2h0IGNvbG9y
IHNjaGVtZSBlbmFibGVkIik7CisKK3Rlc3QoZnVuY3Rpb24oKSB7CisgICAgZG9jdW1lbnQuYm9k
eS5zdHlsZS5zZXRQcm9wZXJ0eSgic3VwcG9ydGVkLWNvbG9yLXNjaGVtZXMiLCAibGlnaHQgZGFy
ayIpOworfSwgIlN1cHBvcnRlZCBjb2xvciBzY2hlbWVzIGNoYW5nZWQgdG8gbGlnaHQgYW5kIGRh
cmsiKTsKKwordGVzdChmdW5jdGlvbigpIHsKKyAgICAvLyBUaGUgc2VtYW50aWMgdGV4dCBjb2xv
ciBzaG91bGQgYmUgYmxhY2suCisgICAgdGVzdF9jb2xvcl9pc19ibGFjaygidGVzdDEiKTsKK30s
ICJFbGVtZW50IGNvbG9ycyBhcmUgY29ycmVjdCBpbiBsaWdodCBjb2xvciBzY2hlbWUgd2l0aCBs
aWdodCBhbmQgZGFyayBzdXBwb3J0ZWQgY29sb3Igc2NoZW1lIik7CisKK3Rlc3QoZnVuY3Rpb24o
KSB7CisgICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMpCisgICAgICAgIGludGVybmFscy5zZXR0aW5n
cy5zZXRVc2VEYXJrQXBwZWFyYW5jZSh0cnVlKTsKK30sICJEYXJrIGNvbG9yIHNjaGVtZSBlbmFi
bGVkIik7CisKK3Rlc3QoZnVuY3Rpb24oKSB7CisgICAgLy8gVGhlIHNlbWFudGljIHRleHQgY29s
b3Igc2hvdWxkIGJlIHdoaXRlLgorICAgIHRlc3RfY29sb3JfaXNfd2hpdGUoInRlc3QxIik7Cit9
LCAiRWxlbWVudCBjb2xvcnMgYXJlIGNvcnJlY3QgaW4gZGFyayBjb2xvciBzY2hlbWUgd2l0aCBs
aWdodCBhbmQgZGFyayBzdXBwb3J0ZWQgY29sb3Igc2NoZW1lIik7CisKK3Rlc3QoZnVuY3Rpb24o
KSB7CisgICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMpCisgICAgICAgIGludGVybmFscy5zZXR0aW5n
cy5zZXRVc2VEYXJrQXBwZWFyYW5jZShmYWxzZSk7Cit9LCAiTGlnaHQgY29sb3Igc2NoZW1lIGVu
YWJsZWQiKTsKKwordGVzdChmdW5jdGlvbigpIHsKKyAgICBkb2N1bWVudC5ib2R5LnN0eWxlLnNl
dFByb3BlcnR5KCJzdXBwb3J0ZWQtY29sb3Itc2NoZW1lcyIsICJkYXJrIik7Cit9LCAiU3VwcG9y
dGVkIGNvbG9yIHNjaGVtZXMgY2hhbmdlZCB0byBkYXJrIik7CisKK3Rlc3QoZnVuY3Rpb24oKSB7
CisgICAgLy8gVGhlIHNlbWFudGljIHRleHQgY29sb3Igc2hvdWxkIGJlIHdoaXRlLgorICAgIHRl
c3RfY29sb3JfaXNfd2hpdGUoInRlc3QxIik7Cit9LCAiRWxlbWVudCBjb2xvcnMgYXJlIGNvcnJl
Y3QgaW4gbGlnaHQgY29sb3Igc2NoZW1lIHdpdGggb25seSBkYXJrIHN1cHBvcnRlZCBjb2xvciBz
Y2hlbWUiKTsKKwordGVzdChmdW5jdGlvbigpIHsKKyAgICBpZiAod2luZG93LmludGVybmFscykK
KyAgICAgICAgaW50ZXJuYWxzLnNldHRpbmdzLnNldFVzZURhcmtBcHBlYXJhbmNlKHRydWUpOwor
fSwgIkRhcmsgY29sb3Igc2NoZW1lIGVuYWJsZWQiKTsKKwordGVzdChmdW5jdGlvbigpIHsKKyAg
ICAvLyBUaGUgc2VtYW50aWMgdGV4dCBjb2xvciBzaG91bGQgYmUgd2hpdGUgc3RpbGwuCisgICAg
dGVzdF9jb2xvcl9pc193aGl0ZSgidGVzdDEiKTsKK30sICJFbGVtZW50IGNvbG9ycyBhcmUgY29y
cmVjdCBpbiBkYXJrIGNvbG9yIHNjaGVtZSB3aXRoIG9ubHkgZGFyayBzdXBwb3J0ZWQgY29sb3Ig
c2NoZW1lIik7CisKK3Rlc3QoZnVuY3Rpb24oKSB7CisgICAgZG9jdW1lbnQuYm9keS5zdHlsZS5z
ZXRQcm9wZXJ0eSgic3VwcG9ydGVkLWNvbG9yLXNjaGVtZXMiLCAibGlnaHQgZm9vIik7Cit9LCAi
U3VwcG9ydGVkIGNvbG9yIHNjaGVtZXMgY2hhbmdlZCB0byBsaWdodCBhbmQgYSBib2d1cyB2YWx1
ZSIpOworCit0ZXN0KGZ1bmN0aW9uKCkgeworICAgIC8vIFRoZSBzZW1hbnRpYyB0ZXh0IGNvbG9y
IHNob3VsZCBiZSBibGFjayBhZ2Fpbi4KKyAgICB0ZXN0X2NvbG9yX2lzX2JsYWNrKCJ0ZXN0MSIp
OworfSwgIkVsZW1lbnQgY29sb3JzIGFyZSBjb3JyZWN0IGluIGRhcmsgY29sb3Igc2NoZW1lIHdp
dGggb25seSBsaWdodCBzdXBwb3J0ZWQgY29sb3Igc2NoZW1lIik7CisKK3Rlc3QoZnVuY3Rpb24o
KSB7CisgICAgZG9jdW1lbnQuYm9keS5zdHlsZS5zZXRQcm9wZXJ0eSgic3VwcG9ydGVkLWNvbG9y
LXNjaGVtZXMiLCAiYXV0byIpOworfSwgIlN1cHBvcnRlZCBjb2xvciBzY2hlbWVzIGNoYW5nZWQg
dG8gYXV0byB2YWx1ZSIpOworCit0ZXN0KGZ1bmN0aW9uKCkgeworICAgIC8vIFRoZSBzZW1hbnRp
YyB0ZXh0IGNvbG9yIHNob3VsZCBiZSBibGFjayBzdGlsbC4KKyAgICB0ZXN0X2NvbG9yX2lzX2Js
YWNrKCJ0ZXN0MSIpOworfSwgIkVsZW1lbnQgY29sb3JzIGFyZSBjb3JyZWN0IGluIGRhcmsgY29s
b3Igc2NoZW1lIHdpdGggaW1wbGljaXQgbGlnaHQgc3VwcG9ydGVkIGNvbG9yIHNjaGVtZSIpOwor
Cit0ZXN0KGZ1bmN0aW9uKCkgeworICAgIGxldCBtZXRhID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dCgibWV0YSIpOworICAgIG1ldGEuaWQgPSAidGVzdC1tZXRhIjsKKyAgICBtZXRhLm5hbWUgPSAi
c3VwcG9ydGVkLWNvbG9yLXNjaGVtZXMiOworICAgIG1ldGEuY29udGVudCA9ICJsaWdodCBkYXJr
IjsKKyAgICBkb2N1bWVudC5oZWFkLmFwcGVuZENoaWxkKG1ldGEpOworfSwgIlN1cHBvcnRlZCBj
b2xvciBzY2hlbWVzIGNoYW5nZWQgdG8gbGlnaHQgYW5kIGRhcmsgdmlhIDxtZXRhPiBlbGVtZW50
Iik7CisKK3Rlc3QoZnVuY3Rpb24oKSB7CisgICAgLy8gVGhlIHNlbWFudGljIHRleHQgY29sb3Ig
c2hvdWxkIGJlIHdoaXRlIG5vdy4KKyAgICB0ZXN0X2NvbG9yX2lzX3doaXRlKCJ0ZXN0MSIpOwor
fSwgIkVsZW1lbnQgY29sb3JzIGFyZSBjb3JyZWN0IGluIGRhcmsgY29sb3Igc2NoZW1lIHdpdGgg
bGlnaHQgYW5kIGRhcmsgc3VwcG9ydGVkIGNvbG9yIHNjaGVtZSB2aWEgPG1ldGE+IGVsZW1lbnQi
KTsKKwordGVzdChmdW5jdGlvbigpIHsKKyAgICBkb2N1bWVudC5ib2R5LnN0eWxlLnNldFByb3Bl
cnR5KCJzdXBwb3J0ZWQtY29sb3Itc2NoZW1lcyIsICJsaWdodCIpOworfSwgIlN1cHBvcnRlZCBj
b2xvciBzY2hlbWVzIGNoYW5nZWQgdG8gbGlnaHQgdmFsdWUiKTsKKwordGVzdChmdW5jdGlvbigp
IHsKKyAgICAvLyBUaGUgc2VtYW50aWMgdGV4dCBjb2xvciBzaG91bGQgYmUgYmxhY2sgYWdhaW4u
CisgICAgdGVzdF9jb2xvcl9pc19ibGFjaygidGVzdDEiKTsKK30sICJFbGVtZW50IGNvbG9ycyBh
cmUgY29ycmVjdCBpbiBkYXJrIGNvbG9yIHNjaGVtZSB3aXRoIGV4cGxpY2l0IGxpZ2h0LCBvdmVy
cmlkaW5nIDxtZXRhPiBlbGVtZW50Iik7CisKK3Rlc3QoZnVuY3Rpb24oKSB7CisgICAgZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoInRlc3QtbWV0YSIpLnJlbW92ZSgpOworfSwgIlJlbW92ZSB0ZXN0
IG1ldGEgZWxlbWVudCIpOworCit0ZXN0KGZ1bmN0aW9uKCkgeworICAgIGRvY3VtZW50LmJvZHku
c3R5bGUuc2V0UHJvcGVydHkoInN1cHBvcnRlZC1jb2xvci1zY2hlbWVzIiwgImxpZ2h0IGRhcmsi
KTsKK30sICJTdXBwb3J0ZWQgY29sb3Igc2NoZW1lcyBjaGFuZ2VkIHRvIGxpZ2h0IGFuZCBkYXJr
Iik7CisKK3Rlc3QoZnVuY3Rpb24oKSB7CisgICAgLy8gVGhlIHNlbWFudGljIHRleHQgY29sb3Ig
c2hvdWxkIGJlIHdoaXRlIG5vdy4KKyAgICB0ZXN0X2NvbG9yX2lzX3doaXRlKCJ0ZXN0MSIpOwor
fSwgIkVsZW1lbnQgY29sb3JzIGFyZSBjb3JyZWN0IGluIGRhcmsgY29sb3Igc2NoZW1lIHdpdGgg
bGlnaHQgYW5kIGRhcmsgc3VwcG9ydGVkIGNvbG9yIHNjaGVtZSIpOworCit0ZXN0KGZ1bmN0aW9u
KCkgeworICAgIGRvY3VtZW50LmJvZHkuc3R5bGUuc2V0UHJvcGVydHkoInN1cHBvcnRlZC1jb2xv
ci1zY2hlbWVzIiwgImZvbyBkYXJrIik7Cit9LCAiU3VwcG9ydGVkIGNvbG9yIHNjaGVtZXMgY2hh
bmdlZCB0byBhIGJvZ3VzIHZhbHVlIGFuZCBkYXJrIik7CisKK3Rlc3QoZnVuY3Rpb24oKSB7Cisg
ICAgLy8gVGhlIHNlbWFudGljIHRleHQgY29sb3Igc2hvdWxkIGJlIHdoaXRlIHN0aWxsLgorICAg
IHRlc3RfY29sb3JfaXNfd2hpdGUoInRlc3QxIik7Cit9LCAiRWxlbWVudCBjb2xvcnMgYXJlIGNv
cnJlY3QgaW4gZGFyayBjb2xvciBzY2hlbWUgd2l0aCBkYXJrIHN1cHBvcnRlZCBjb2xvciBzY2hl
bWUiKTsKKzwvc2NyaXB0Pgo=
</data>

          </attachment>
      

    </bug>

</bugzilla>