<?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>56851</bug_id>
          
          <creation_ts>2011-03-22 11:37:37 -0700</creation_ts>
          <short_desc>Media controls must use full screen style when in new full screen mode.</short_desc>
          <delta_ts>2011-03-26 20:15:42 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Media</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Jer Noble">jer.noble</reporter>
          <assigned_to name="Jer Noble">jer.noble</assigned_to>
          <cc>abarth</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>eric</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>371509</commentid>
    <comment_count>0</comment_count>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2011-03-22 11:37:37 -0700</bug_when>
    <thetext>The new full screen API support will require the media element controls to change styles when in full screen mode.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>371555</commentid>
    <comment_count>1</comment_count>
      <attachid>86491</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2011-03-22 12:23:28 -0700</bug_when>
    <thetext>Created attachment 86491
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>371578</commentid>
    <comment_count>2</comment_count>
      <attachid>86491</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2011-03-22 13:10:58 -0700</bug_when>
    <thetext>Comment on attachment 86491
Patch

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

&gt; Source/WebCore/css/CSSStyleSelector.cpp:1433
&gt; +#if ENABLE(FULLSCREEN_API)
&gt; +    static bool loadedFullScreenStyleSheet;
&gt; +    if (!loadedFullScreenStyleSheet &amp;&amp; e-&gt;document()-&gt;webkitIsFullScreen()) {
&gt; +        loadedFullScreenStyleSheet = true;
&gt; +        String fullscreenRules = String(fullscreenUserAgentStyleSheet, sizeof(fullscreenUserAgentStyleSheet)) + RenderTheme::defaultTheme()-&gt;extraFullScreenStyleSheet();
&gt; +        CSSStyleSheet* fullscreenSheet = parseUASheet(fullscreenRules);
&gt; +        defaultStyle-&gt;addRulesFromSheet(fullscreenSheet, screenEval());
&gt; +        defaultQuirksStyle-&gt;addRulesFromSheet(fullscreenSheet, screenEval());
&gt; +    }
&gt; +#endif

Because this style should only be used for &lt;video&gt; fullscreen, can&apos;t you further restrict this loading to when e-&gt;hasTagName(videoTag)? Or should the video controls style change when in document fullscreen mode too?

&gt; Source/WebCore/html/shadow/MediaControls.cpp:60
&gt; +#if ENABLE(FULLSCREEN_API)
&gt; +    if (mediaElement-&gt;document()-&gt;webkitIsFullScreen() &amp;&amp; mediaElement-&gt;document()-&gt;webkitCurrentFullScreenElement() == mediaElement)
&gt; +        return true;
&gt; +#endif

Are these tests necessary, or do we want to use different default controls when in document fullscreen?

&gt; Source/WebCore/rendering/MediaControlElements.cpp:291
&gt; +    if (overrides == m_overridesPosition)
&gt; +        return;
&gt; +    m_overridesPosition = overrides;

The check seems unnecessary since you only change the instance variable.

&gt; Source/WebCore/rendering/RenderThemeMac.mm:1992
&gt;      case MediaToggleClosedCaptionsButtonPart:
&gt;          // We rely on QTKit to render captions so don&apos;t enable the button unless it will be able to do so.
&gt;          if (!element-&gt;hasTagName(videoTag))
&gt;              return false;

Need a &quot;break&quot; here.

&gt; Source/WebCore/rendering/RenderThemeMac.mm:1995
&gt; +    case MediaRewindButtonPart:
&gt; +        return mediaElement-&gt;movieLoadType() == MediaPlayer::LiveStream 
&gt; +            || mediaElement-&gt;movieLoadType() == MediaPlayer::StoredStream;

Doesn&apos;t this change the display of inline elements, which currently show the rewind button for everything except live streams?

&gt; Source/WebCore/rendering/RenderThemeMac.mm:1997
&gt; +    case MediaReturnToRealtimeButtonPart:
&gt; +        return mediaElement-&gt;movieLoadType() == MediaPlayer::LiveStream;

The base class already does this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>371628</commentid>
    <comment_count>3</comment_count>
      <attachid>86491</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2011-03-22 14:10:15 -0700</bug_when>
    <thetext>Comment on attachment 86491
Patch

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

&gt;&gt; Source/WebCore/css/CSSStyleSelector.cpp:1433
&gt;&gt; +#endif
&gt; 
&gt; Because this style should only be used for &lt;video&gt; fullscreen, can&apos;t you further restrict this loading to when e-&gt;hasTagName(videoTag)? Or should the video controls style change when in document fullscreen mode too?

Technically, there are styles in the fullScreen.css file which affect non &lt;video&gt; elements, such as &lt;img&gt; elements, as well as the suggested rules from the Mozilla Full Screen API document.

&gt;&gt; Source/WebCore/html/shadow/MediaControls.cpp:60
&gt;&gt; +#endif
&gt; 
&gt; Are these tests necessary, or do we want to use different default controls when in document fullscreen?

When going into full screen mode using the new, generic full screen api, HTMLMediaElement will continue to return &quot;false&quot; for &quot;isFullscreen()&quot;, which is why we need these additional checks.  But the current behavior should probably have a bug filed against it.

&gt;&gt; Source/WebCore/rendering/MediaControlElements.cpp:291
&gt;&gt; +    m_overridesPosition = overrides;
&gt; 
&gt; The check seems unnecessary since you only change the instance variable.

Indeed.  I was just following the file&apos;s convention, but as you point out, the convention is unnecessary. :)

&gt;&gt; Source/WebCore/rendering/RenderThemeMac.mm:1992
&gt;&gt;              return false;
&gt; 
&gt; Need a &quot;break&quot; here.

Whoops!  Added.

&gt;&gt; Source/WebCore/rendering/RenderThemeMac.mm:1995
&gt;&gt; +            || mediaElement-&gt;movieLoadType() == MediaPlayer::StoredStream;
&gt; 
&gt; Doesn&apos;t this change the display of inline elements, which currently show the rewind button for everything except live streams?

You&apos;re right, this should have a isFullscreen check added.

&gt;&gt; Source/WebCore/rendering/RenderThemeMac.mm:1997
&gt;&gt; +        return mediaElement-&gt;movieLoadType() == MediaPlayer::LiveStream;
&gt; 
&gt; The base class already does this.

Removed.

&gt; Source/WebCore/rendering/RenderThemeMac.mm:2000
&gt; +        return mediaElement-&gt;isFullscreen() 

And this needs to be changed as well, given the buggy isFullscreen behavior described above.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>371630</commentid>
    <comment_count>4</comment_count>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2011-03-22 14:11:10 -0700</bug_when>
    <thetext>I&apos;ll make the suggested changes and re-upload after rebasing the patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>373231</commentid>
    <comment_count>5</comment_count>
      <attachid>86491</attachid>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2011-03-24 17:58:39 -0700</bug_when>
    <thetext>Comment on attachment 86491
Patch

Marking r- since Jer plans to upload a new patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>373871</commentid>
    <comment_count>6</comment_count>
      <attachid>87016</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2011-03-26 00:15:56 -0700</bug_when>
    <thetext>Created attachment 87016
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>373874</commentid>
    <comment_count>7</comment_count>
      <attachid>87017</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2011-03-26 00:30:17 -0700</bug_when>
    <thetext>Created attachment 87017
Patch

fullscreenQuickTime.css was missing from the last patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>373959</commentid>
    <comment_count>8</comment_count>
      <attachid>87017</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2011-03-26 13:06:50 -0700</bug_when>
    <thetext>Comment on attachment 87017
Patch

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

Nice, this is *much* cleaner than the earlier version!

&gt; Source/WebCore/html/shadow/MediaControls.cpp:150
&gt; +    m_fullScreenMinVolumeButton = MediaControlFullscreenVolumeMinButtonElement::create(mediaElement);
&gt; +    m_fullScreenMinVolumeButton-&gt;attachToParent(m_panel.get());
&gt; +    
&gt; +    m_fullScreenVolumeSlider = MediaControlFullscreenVolumeSliderElement::create(mediaElement);
&gt; +    m_fullScreenVolumeSlider-&gt;attachToParent(m_panel.get());
&gt; +    
&gt; +    m_fullScreenMaxVolumeButton = MediaControlFullscreenVolumeMaxButtonElement::create(mediaElement);
&gt; +    m_fullScreenMaxVolumeButton-&gt;attachToParent(m_panel.get());
&gt; +    

It would be nice if it was possible to create these controls only when the element goes into fullscreen, maybe via an explicit call from the element? I think it can be done in a follow-up patch, but it would be a nice optimization because most &lt;video&gt; elements will never go fullscreen, and *no* &lt;audio&gt; element ever will. It might be good to have a FIXME here with a bug number for the enhancement so we don&apos;t forget to do it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>373970</commentid>
    <comment_count>9</comment_count>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2011-03-26 13:26:49 -0700</bug_when>
    <thetext>(In reply to comment #8)
&gt; (From update of attachment 87017 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=87017&amp;action=review
&gt; 
&gt; Nice, this is *much* cleaner than the earlier version!

Thanks!

&gt; &gt; Source/WebCore/html/shadow/MediaControls.cpp:150
&gt; &gt; +    m_fullScreenMinVolumeButton = MediaControlFullscreenVolumeMinButtonElement::create(mediaElement);
&gt; &gt; +    m_fullScreenMinVolumeButton-&gt;attachToParent(m_panel.get());
&gt; &gt; +    
&gt; &gt; +    m_fullScreenVolumeSlider = MediaControlFullscreenVolumeSliderElement::create(mediaElement);
&gt; &gt; +    m_fullScreenVolumeSlider-&gt;attachToParent(m_panel.get());
&gt; &gt; +    
&gt; &gt; +    m_fullScreenMaxVolumeButton = MediaControlFullscreenVolumeMaxButtonElement::create(mediaElement);
&gt; &gt; +    m_fullScreenMaxVolumeButton-&gt;attachToParent(m_panel.get());
&gt; &gt; +    
&gt; 
&gt; It would be nice if it was possible to create these controls only when the element goes into fullscreen, maybe via an explicit call from the element? I think it can be done in a follow-up patch, but it would be a nice optimization because most &lt;video&gt; elements will never go fullscreen, and *no* &lt;audio&gt; element ever will. It might be good to have a FIXME here with a bug number for the enhancement so we don&apos;t forget to do it.

We could do a lot more for most of the shadow media controls: only create the Closed Caption button when the media has CCs, for example.  Filed: https://bugs.webkit.org/show_bug.cgi?id=57163</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>374013</commentid>
    <comment_count>10</comment_count>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2011-03-26 17:16:56 -0700</bug_when>
    <thetext>Committed r82053: &lt;http://trac.webkit.org/changeset/82053&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>374022</commentid>
    <comment_count>11</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-03-26 18:24:37 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/82053 might have broken SnowLeopard Intel Release (Tests)
The following tests are not passing:
accessibility/media-element.html
media/audio-controls-rendering.html
media/audio-repaint.html
media/controls-after-reload.html
media/controls-styling.html
media/controls-without-preload.html
media/media-document-audio-repaint.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>374030</commentid>
    <comment_count>12</comment_count>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2011-03-26 19:44:27 -0700</bug_when>
    <thetext>Looks like the &quot;skip back&quot; button is mising.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>374031</commentid>
    <comment_count>13</comment_count>
      <attachid>87017</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2011-03-26 19:49:54 -0700</bug_when>
    <thetext>Comment on attachment 87017
Patch

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

&gt; Source/WebCore/rendering/RenderThemeMac.mm:1997
&gt; +        return mediaElement-&gt;isFullscreen()
&gt; +            &amp;&amp; (mediaElement-&gt;movieLoadType() == MediaPlayer::LiveStream 
&gt; +            || mediaElement-&gt;movieLoadType() == MediaPlayer::StoredStream);

Aha, this should really be: &quot;if (mediaElement-&gt;isFullscreen())&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>374036</commentid>
    <comment_count>14</comment_count>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2011-03-26 20:15:42 -0700</bug_when>
    <thetext>Committed r82057: &lt;http://trac.webkit.org/changeset/82057&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>86491</attachid>
            <date>2011-03-22 12:23:28 -0700</date>
            <delta_ts>2011-03-26 00:15:54 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-56851-20110322122327.patch</filename>
            <type>text/plain</type>
            <size>21151</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODE2MTUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAyOTJjMzI5ODE2NjhkZjYy
Y2Y0MTgzYzJlOGUwZWIyMWQ1NzViNDMxLi5mNWE3OGVjOThhMDIyYmY0YjdiNTBhYzQzNjNmNmU3
MjRlNjVlNmFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDAgQEAKKzIwMTEtMDMtMjIgIEplciBO
b2JsZSAgPGplci5ub2JsZUBhcHBsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgTWVkaWEgY29udHJvbHMgbXVzdCB1c2UgZnVsbCBzY3JlZW4g
c3R5bGUgd2hlbiBpbiBuZXcgZnVsbCBzY3JlZW4gbW9kZS4KKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU2ODUxCisKKyAgICAgICAgQWRkIG5ldyBmdWxs
IHNjcmVlbiBzdHlsZXMgZm9yIHRoZSBmdWxsIHNjcmVlbiBtZWRpYSBlbGVtZW50cy4KKworICAg
ICAgICAqIERlcml2ZWRTb3VyY2VzLm1ha2U6IEFkZCBmdWxsU2NyZWVuUXVpY2tUaW1lLmNzcy4K
KyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6IERpdHRvLgorICAg
ICAgICAqIGNzcy9DU1NTdHlsZVNlbGVjdG9yLmNwcDogUmVtb3ZlZCBsb2FkRnVsbFNjcmVlblJ1
bGVzSWZOZWVkZWQoKS4KKyAgICAgICAgKFdlYkNvcmU6OkNTU1N0eWxlU2VsZWN0b3I6OkNTU1N0
eWxlU2VsZWN0b3IpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkNTU1N0eWxlU2VsZWN0b3I6
OnN0eWxlRm9yRWxlbWVudCk6IExvYWQgZnVsbCBzY3JlZW4gcnVsZXMgCisgICAgICAgICAgICBp
ZiBuZWVkZWQuCisgICAgICAgICogY3NzL2Z1bGxzY3JlZW5RdWlja1RpbWUuY3NzOiBBZGRlZC4K
KyAgICAgICAgKiBodG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xzLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OmlzRnVsbFNjcmVlbik6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb250cm9s
czo6dXBkYXRlKTogT25seSBvdmVycmlkZSB2b2x1bWUgcG9zaXRpb24gaWYKKyAgICAgICAgICAg
IG1lZGlhIGVsZW1lbnQgaXMgbm90IGluIGZ1bGwgc2NyZWVuLgorICAgICAgICAoV2ViQ29yZTo6
TWVkaWFDb250cm9sczo6dXBkYXRlVm9sdW1lU2xpZGVyQ29udGFpbmVyKTogRGl0dG8uCisgICAg
ICAgIChXZWJDb3JlOjpNZWRpYUNvbnRyb2xzOjpmb3J3YXJkRXZlbnQpOiBEaXR0by4KKyAgICAg
ICAgKiByZW5kZXJpbmcvTWVkaWFDb250cm9sRWxlbWVudHMuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6TWVkaWFDb250cm9sVm9sdW1lU2xpZGVyQ29udGFpbmVyRWxlbWVudDo6c3R5bGVGb3JFbGVt
ZW50KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpNZWRpYUNvbnRyb2xWb2x1bWVTbGlkZXJD
b250YWluZXJFbGVtZW50OjpNZWRpYUNvbnRyb2xWb2x1bWVTbGlkZXJDb250YWluZXJFbGVtZW50
KTogCisgICAgICAgICAgICBBZGRlZCBtX292ZXJyaWRlUG9zaXRpb24uCisgICAgICAgIChXZWJD
b3JlOjpNZWRpYUNvbnRyb2xWb2x1bWVTbGlkZXJDb250YWluZXJFbGVtZW50OjpzZXRPdmVycmlk
ZXNQb3NpdGlvbik6IEFkZGVkLgorICAgICAgICAqIHJlbmRlcmluZy9NZWRpYUNvbnRyb2xFbGVt
ZW50cy5oOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb250cm9sVm9sdW1lU2xpZGVyQ29udGFp
bmVyRWxlbWVudDo6b3ZlcnJpZGVzUG9zaXRpb24pOiBBZGRlZC4KKyAgICAgICAgKiByZW5kZXJp
bmcvUmVuZGVyVGhlbWUuaDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lOjpleHRyYUZ1
bGxTY3JlZW5TdHlsZVNoZWV0KTogQWRkZWQuCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRo
ZW1lTWFjLmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRoZW1lTWFjLm1tOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVNYWM6OmV4dHJhRnVsbFNjcmVlblN0eWxlU2hlZXQpOiBB
ZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lTWFjOjpzaG91bGRSZW5kZXJNZWRp
YUNvbnRyb2xQYXJ0KTogUmVuZGVyIHNlZWsgZm9yd2FyZCBhbmQgYmFja3dhcmQgCisgICAgICAg
ICAgICBidXR0b25zLgorCiAyMDExLTAzLTIxICBEZWFuIEphY2tzb24gIDxkaW5vQGFwcGxlLmNv
bT4KIAogICAgICAgICBSZXZpZXdlZCBieSBDaHJpcyBNYXJyaW4gYW5kIFNpbW9uIEZyYXNlci4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UgYi9Tb3VyY2Uv
V2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlCmluZGV4IDhlYzE5MzFhOTQwMzIyMDRlZjg2OGYx
MWQxMzRjZGM1Mzg5MTdkZWQuLjllM2IwNzAzMjAyNDQyYzc2YjNkODBlMjRjMDE2YjlkYTJlZWY3
ZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKKysrIGIv
U291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQpAQCAtNzM4LDcgKzczOCw3IEBAIGlm
ZXEgKCQoZmluZHN0cmluZyBFTkFCTEVfVklERU8sJChGRUFUVVJFX0RFRklORVMpKSwgRU5BQkxF
X1ZJREVPKQogZW5kaWYKIAogaWZlcSAoJChmaW5kc3RyaW5nIEVOQUJMRV9GVUxMU0NSRUVOX0FQ
SSwkKEZFQVRVUkVfREVGSU5FUykpLCBFTkFCTEVfRlVMTFNDUkVFTl9BUEkpCi0gICAgVVNFUl9B
R0VOVF9TVFlMRV9TSEVFVFMgOj0gJChVU0VSX0FHRU5UX1NUWUxFX1NIRUVUUykgJChXZWJDb3Jl
KS9jc3MvZnVsbHNjcmVlbi5jc3MKKyAgICBVU0VSX0FHRU5UX1NUWUxFX1NIRUVUUyA6PSAkKFVT
RVJfQUdFTlRfU1RZTEVfU0hFRVRTKSAkKFdlYkNvcmUpL2Nzcy9mdWxsc2NyZWVuLmNzcyAkKFdl
YkNvcmUpL2Nzcy9mdWxsc2NyZWVuUXVpY2tUaW1lLmNzcwogZW5kaWYKIAogVXNlckFnZW50U3R5
bGVTaGVldHMuaCA6IGNzcy9tYWtlLWNzcy1maWxlLWFycmF5cy5wbCAkKFVTRVJfQUdFTlRfU1RZ
TEVfU0hFRVRTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCmluZGV4IGMzYjFjMzNkNjQwYjExZmVhNzNmMjRiOGEwMDBiYjUzMTM1YTVjZDcu
LmZkZDZjMDI5MWM4ODhjNmM5ZDZiMjM2NWQ1N2ZmYjY5M2NmZGNkM2MgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTExODI1LDYg
KzExODI1LDcgQEAKIAkJQ0EzQkY2N0IxMEQ5OUJBRTAwRTZDRTUzIC8qIFNjcm9sbEFuaW1hdG9y
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNjcm9sbEFuaW1hdG9y
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0EzQkY2N0QxMEQ5OUJBRTAwRTZD
RTUzIC8qIFNjcm9sbEFuaW1hdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFNjcm9sbEFuaW1hdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNENEUwQUZB
MTFGN0JDMjcwMDlEMzgxMSAvKiBmdWxsc2NyZWVuLmNzcyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuY3NzOyBw
YXRoID0gZnVsbHNjcmVlbi5jc3M7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNEQkQ5
M0JBMTMzM0JENEIwMDI1NzBFMyAvKiBmdWxsc2NyZWVuUXVpY2tUaW1lLmNzcyAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHRleHQuY3NzOyBwYXRoID0gZnVsbHNjcmVlblF1aWNrVGltZS5jc3M7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUNERUE3QzgyMTI3NjIzMDQwMEI4NDZERCAvKiBSZW5kZXJGdWxsU2Ny
ZWVuLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbmRlckZ1bGxTY3JlZW4u
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0RFQTdDODMxMjc2MjMwNDAwQjg0NkRE
IC8qIFJlbmRlckZ1bGxTY3JlZW4uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gUmVuZGVyRnVsbFNjcmVlbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUNFMDJGMEMzMTFFODNBREQwMEM2Njg0QSAvKiBTY3JpcHRDb250cm9sbGVyQmFzZS5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTY3JpcHRDb250cm9sbGVyQmFzZS5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTg4NjAsNiArMTg4NjEsNyBAQAogCQkJCUJDOUFE
RDIyMENDNDAzMjYwMDA5OEM0QyAvKiBXZWJLaXRDU1NUcmFuc2Zvcm1WYWx1ZS5oICovLAogCQkJ
CTMxNjExRTU0MEUxQzRENEEwMEY2QTU3OSAvKiBXZWJLaXRDU1NUcmFuc2Zvcm1WYWx1ZS5pZGwg
Ki8sCiAJCQkJNENERTU0RUMwRTU1Nzk3ODAwODlFMjZDIC8qIHdtbC5jc3MgKi8sCisJCQkJQ0RC
RDkzQkExMzMzQkQ0QjAwMjU3MEUzIC8qIGZ1bGxzY3JlZW5RdWlja1RpbWUuY3NzICovLAogCQkJ
KTsKIAkJCXBhdGggPSBjc3M7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2VsZWN0b3IuY3BwIGIvU291cmNlL1dlYkNv
cmUvY3NzL0NTU1N0eWxlU2VsZWN0b3IuY3BwCmluZGV4IDJhMGI5MjY5NGNiN2EzMjM0ZDVlNzc1
NGEyNGYwOTE2MzQwNTMzY2EuLmZkZjNlMGE4NDEzYmIxN2E4ZjFiYTlmZGQ4OGIwNGJhMTliNjk5
YWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNlbGVjdG9yLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTZWxlY3Rvci5jcHAKQEAgLTQzNiw5ICs0
MzYsNiBAQCBzdGF0aWMgUnVsZVNldCogc2libGluZ1J1bGVzSW5EZWZhdWx0U3R5bGU7CiBSZW5k
ZXJTdHlsZSogQ1NTU3R5bGVTZWxlY3Rvcjo6c19zdHlsZU5vdFlldEF2YWlsYWJsZTsKIAogc3Rh
dGljIHZvaWQgbG9hZEZ1bGxEZWZhdWx0U3R5bGUoKTsKLSNpZiBFTkFCTEUoRlVMTFNDUkVFTl9B
UEkpCi1zdGF0aWMgdm9pZCBsb2FkRnVsbFNjcmVlblJ1bGVzSWZOZWVkZWQoRG9jdW1lbnQqKTsK
LSNlbmRpZgogc3RhdGljIHZvaWQgbG9hZFNpbXBsZURlZmF1bHRTdHlsZSgpOwogLy8gRklYTUU6
IEl0IHdvdWxkIGJlIG5pY2UgdG8gdXNlIHNvbWUgbWVjaGFuaXNtIHRoYXQgZ3VhcmFudGVlcyB0
aGlzIGlzIGluIHN5bmMgd2l0aCB0aGUgcmVhbCBVQSBzdHlsZXNoZWV0Lgogc3RhdGljIGNvbnN0
IGNoYXIqIHNpbXBsZVVzZXJBZ2VudFN0eWxlU2hlZXQgPSAiaHRtbCxib2R5LGRpdntkaXNwbGF5
OmJsb2NrfWJvZHl7bWFyZ2luOjhweH1kaXY6Zm9jdXMsc3Bhbjpmb2N1c3tvdXRsaW5lOmF1dG8g
NXB4IC13ZWJraXQtZm9jdXMtcmluZy1jb2xvcn1hOi13ZWJraXQtYW55LWxpbmt7Y29sb3I6LXdl
YmtpdC1saW5rO3RleHQtZGVjb3JhdGlvbjp1bmRlcmxpbmV9YTotd2Via2l0LWFueS1saW5rOmFj
dGl2ZXtjb2xvcjotd2Via2l0LWFjdGl2ZWxpbmt9IjsKQEAgLTUxOSw5ICs1MTYsNiBAQCBDU1NT
dHlsZVNlbGVjdG9yOjpDU1NTdHlsZVNlbGVjdG9yKERvY3VtZW50KiBkb2N1bWVudCwgU3R5bGVT
aGVldExpc3QqIHN0eWxlU2hlZQogICAgICAgICAgICAgbG9hZFNpbXBsZURlZmF1bHRTdHlsZSgp
OwogICAgICAgICBlbHNlIHsKICAgICAgICAgICAgIGxvYWRGdWxsRGVmYXVsdFN0eWxlKCk7Ci0j
aWYgRU5BQkxFKEZVTExTQ1JFRU5fQVBJKQotICAgICAgICAgICAgbG9hZEZ1bGxTY3JlZW5SdWxl
c0lmTmVlZGVkKGRvY3VtZW50KTsKLSNlbmRpZgogICAgICAgICB9CiAgICAgfQogCkBAIC02NTYs
MTkgKzY1MCw2IEBAIHN0YXRpYyB2b2lkIGxvYWRGdWxsRGVmYXVsdFN0eWxlKCkKICAgICBkZWZh
dWx0UXVpcmtzU3R5bGUtPmFkZFJ1bGVzRnJvbVNoZWV0KHF1aXJrc1NoZWV0LCBzY3JlZW5FdmFs
KCkpOwogfQogCi0jaWYgRU5BQkxFKEZVTExTQ1JFRU5fQVBJKQotc3RhdGljIHZvaWQgbG9hZEZ1
bGxTY3JlZW5SdWxlc0lmTmVlZGVkKERvY3VtZW50KiBkb2N1bWVudCkKLXsKLSAgICBpZiAoIWRv
Y3VtZW50LT53ZWJraXRJc0Z1bGxTY3JlZW4oKSkKLSAgICAgICAgcmV0dXJuOwotICAgIC8vIEZ1
bGwtc2NyZWVuIHJ1bGVzLgotICAgIFN0cmluZyBmdWxsc2NyZWVuUnVsZXMgPSBTdHJpbmcoZnVs
bHNjcmVlblVzZXJBZ2VudFN0eWxlU2hlZXQsIHNpemVvZihmdWxsc2NyZWVuVXNlckFnZW50U3R5
bGVTaGVldCkpICsgUmVuZGVyVGhlbWU6OmRlZmF1bHRUaGVtZSgpLT5leHRyYURlZmF1bHRTdHls
ZVNoZWV0KCk7Ci0gICAgQ1NTU3R5bGVTaGVldCogZnVsbHNjcmVlblNoZWV0ID0gcGFyc2VVQVNo
ZWV0KGZ1bGxzY3JlZW5SdWxlcyk7Ci0gICAgZGVmYXVsdFN0eWxlLT5hZGRSdWxlc0Zyb21TaGVl
dChmdWxsc2NyZWVuU2hlZXQsIHNjcmVlbkV2YWwoKSk7Ci0gICAgZGVmYXVsdFF1aXJrc1N0eWxl
LT5hZGRSdWxlc0Zyb21TaGVldChmdWxsc2NyZWVuU2hlZXQsIHNjcmVlbkV2YWwoKSk7Ci19Ci0j
ZW5kaWYKLQogc3RhdGljIHZvaWQgbG9hZFNpbXBsZURlZmF1bHRTdHlsZSgpCiB7CiAgICAgQVNT
RVJUKCFkZWZhdWx0U3R5bGUpOwpAQCAtMTM4OCw5ICsxMzY5LDYgQEAgUGFzc1JlZlB0cjxSZW5k
ZXJTdHlsZT4gQ1NTU3R5bGVTZWxlY3Rvcjo6c3R5bGVGb3JFbGVtZW50KEVsZW1lbnQqIGUsIFJl
bmRlclN0eWwKICAgICAKICAgICBpZiAoc2ltcGxlRGVmYXVsdFN0eWxlU2hlZXQgJiYgIWVsZW1l
bnRDYW5Vc2VTaW1wbGVEZWZhdWx0U3R5bGUoZSkpIHsKICAgICAgICAgbG9hZEZ1bGxEZWZhdWx0
U3R5bGUoKTsKLSNpZiBFTkFCTEUoRlVMTFNDUkVFTl9BUEkpCi0gICAgICAgIGxvYWRGdWxsU2Ny
ZWVuUnVsZXNJZk5lZWRlZChlLT5kb2N1bWVudCgpKTsKLSNlbmRpZgogICAgICAgICBhc3NlcnRO
b1NpYmxpbmdSdWxlc0luRGVmYXVsdFN0eWxlKCk7CiAgICAgfQogCkBAIC0xNDQzLDYgKzE0MjEs
MTcgQEAgUGFzc1JlZlB0cjxSZW5kZXJTdHlsZT4gQ1NTU3R5bGVTZWxlY3Rvcjo6c3R5bGVGb3JF
bGVtZW50KEVsZW1lbnQqIGUsIFJlbmRlclN0eWwKICAgICB9CiAjZW5kaWYKIAorI2lmIEVOQUJM
RShGVUxMU0NSRUVOX0FQSSkKKyAgICBzdGF0aWMgYm9vbCBsb2FkZWRGdWxsU2NyZWVuU3R5bGVT
aGVldDsKKyAgICBpZiAoIWxvYWRlZEZ1bGxTY3JlZW5TdHlsZVNoZWV0ICYmIGUtPmRvY3VtZW50
KCktPndlYmtpdElzRnVsbFNjcmVlbigpKSB7CisgICAgICAgIGxvYWRlZEZ1bGxTY3JlZW5TdHls
ZVNoZWV0ID0gdHJ1ZTsKKyAgICAgICAgU3RyaW5nIGZ1bGxzY3JlZW5SdWxlcyA9IFN0cmluZyhm
dWxsc2NyZWVuVXNlckFnZW50U3R5bGVTaGVldCwgc2l6ZW9mKGZ1bGxzY3JlZW5Vc2VyQWdlbnRT
dHlsZVNoZWV0KSkgKyBSZW5kZXJUaGVtZTo6ZGVmYXVsdFRoZW1lKCktPmV4dHJhRnVsbFNjcmVl
blN0eWxlU2hlZXQoKTsKKyAgICAgICAgQ1NTU3R5bGVTaGVldCogZnVsbHNjcmVlblNoZWV0ID0g
cGFyc2VVQVNoZWV0KGZ1bGxzY3JlZW5SdWxlcyk7CisgICAgICAgIGRlZmF1bHRTdHlsZS0+YWRk
UnVsZXNGcm9tU2hlZXQoZnVsbHNjcmVlblNoZWV0LCBzY3JlZW5FdmFsKCkpOworICAgICAgICBk
ZWZhdWx0UXVpcmtzU3R5bGUtPmFkZFJ1bGVzRnJvbVNoZWV0KGZ1bGxzY3JlZW5TaGVldCwgc2Ny
ZWVuRXZhbCgpKTsKKyAgICB9CisjZW5kaWYKKwogICAgIGludCBmaXJzdFVBUnVsZSA9IC0xLCBs
YXN0VUFSdWxlID0gLTE7CiAgICAgaW50IGZpcnN0VXNlclJ1bGUgPSAtMSwgbGFzdFVzZXJSdWxl
ID0gLTE7CiAgICAgaW50IGZpcnN0QXV0aG9yUnVsZSA9IC0xLCBsYXN0QXV0aG9yUnVsZSA9IC0x
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL2Z1bGxzY3JlZW5RdWlja1RpbWUuY3Nz
IGIvU291cmNlL1dlYkNvcmUvY3NzL2Z1bGxzY3JlZW5RdWlja1RpbWUuY3NzCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjczYjkxNjcwZmNmOTBiMWRkNjBkZjgxZTkxYjBkNTVjODEwYWI3MzYKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvZnVsbHNjcmVlblF1aWNrVGltZS5jc3MKQEAgLTAsMCAr
MSwxNDcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICog
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAor
ICovCisKKy8qIGFsdGVybmF0ZSBtZWRpYSBjb250cm9scyAtIEV4dGVuZCBmdWxsc2NyZWVuLmNz
cyAqLworCit2aWRlbzotd2Via2l0LWZ1bGwtc2NyZWVuOjotd2Via2l0LW1lZGlhLWNvbnRyb2xz
LXBhbmVsIHsKKyAgICAtd2Via2l0LWJveC1hbGlnbjogc3RhcnQ7CisgICAgLXdlYmtpdC1ib3gt
cGFjazogZW5kOyAgICAKKyAgICAtd2Via2l0LWFwcGVhcmFuY2U6IG5vbmU7CisKKyAgICBib3R0
b206IDUwcHg7CisgICAgbGVmdDogNTAlOworICAgIG1hcmdpbi1sZWZ0OiAtMjIwcHg7CisgICAg
cGFkZGluZzogMTJweCAwIDAgMTBweDsKKyAgICB3aWR0aDogNDMwcHg7CisgICAgaGVpZ2h0OiA0
OHB4OworICAgIAorICAgIGJhY2tncm91bmQtaW1hZ2U6IC13ZWJraXQtZ3JhZGllbnQoCisgICAg
ICAgIGxpbmVhciwKKyAgICAgICAgbGVmdCB0b3AsCisgICAgICAgIGxlZnQgYm90dG9tLAorICAg
ICAgICBjb2xvci1zdG9wKDAsIHJnYmEoMzAsIDMwLCAzMCwgLjk3KSksCisgICAgICAgIGNvbG9y
LXN0b3AoMC4zMzMsIHJnYmEoNDUsIDQ1LCA0NSwgLjk3KSksCisgICAgICAgIGNvbG9yLXN0b3Ao
MC4zNSwgIHJnYmEoMjUsIDI1LCAyNSwgLjk3KSksCisgICAgICAgIGNvbG9yLXN0b3AoMC4zNjYs
IHJnYmEoMjUsIDI1LCAyNSwgLjk3KSksCisgICAgICAgIGNvbG9yLXN0b3AoMC4zNjYsIHJnYmEo
MTIsIDEyLCAxMiwgLjk3KSksCisgICAgICAgIGNvbG9yLXN0b3AoMSwgcmdiYSgxOSwgMTksIDE5
LCAuOTcpKQorICAgICk7CisKKyAgICAtd2Via2l0LWJveC1zaGFkb3c6IAorICAgICAgICBpbnNl
dCAwIC0xcHggMXB4IHJnYmEoMCwgMCwgMCwgMC41KSwKKyAgICAgICAgaW5zZXQgMCAgMXB4IDAg
MHB4ICAgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjE1KSwKKyAgICAgICAgaW5zZXQgMCAtMXB4IDAg
MHB4ICAgcmdiYSgyMDIsIDIwMiwgMjAyLCAwLjA5KSwKKyAgICAgICAgMCAgMCAgIDAgMXB4IHJn
YmEoMCwgMCwgMCwgMC41KTsKKyAgICAtd2Via2l0LWJvcmRlci1yYWRpdXM6IDhweDsKK30KKwor
dmlkZW86LXdlYmtpdC1mdWxsLXNjcmVlbjo6LXdlYmtpdC1tZWRpYS1jb250cm9scy1tdXRlLWJ1
dHRvbiB7CisgICAgcG9zaXRpb246IGFic29sdXRlOworICAgIGxlZnQ6IDExcHg7CisgICAgdG9w
OiAxNXB4OworfQorCit2aWRlbzotd2Via2l0LWZ1bGwtc2NyZWVuOjotd2Via2l0LW1lZGlhLWNv
bnRyb2xzLXZvbHVtZS1zbGlkZXItY29udGFpbmVyIHsKKyAgICBkaXNwbGF5OiAtd2Via2l0LWJv
eDsKKyAgICAtd2Via2l0LWFwcGVhcmFuY2U6IG5vbmU7CisgICAgLXdlYmtpdC11c2VyLXNlbGVj
dDogbm9uZTsKKyAgICAtd2Via2l0LWJveC1vcmllbnQ6IGhvcml6b250YWw7CisgICAgLXdlYmtp
dC1ib3gtYWxpZ246IGNlbnRlcjsKKyAgICAtd2Via2l0LWJveC1wYWNrOiBlbmQ7CisgICAgcG9z
aXRpb246IGFic29sdXRlOworICAgIGxlZnQ6IDI2cHg7CisgICAgdG9wOiAxNXB4OworICAgIHdp
ZHRoOiA3MnB4OworICAgIHRleHQtYWxpZ246IHJpZ2h0OworICAgIGhlaWdodDogMTJweDsKK30K
KwordmlkZW86LXdlYmtpdC1mdWxsLXNjcmVlbjo6LXdlYmtpdC1tZWRpYS1jb250cm9scy12b2x1
bWUtc2xpZGVyIHsKKyAgICAtd2Via2l0LWFwcGVhcmFuY2U6IG1lZGlhLXNsaWRlcjsKKyAgICBk
aXNwbGF5OiAtd2Via2l0LWJveDsKKyAgICAtd2Via2l0LWJveC1mbGV4OiAxOworICAgIHBvc2l0
aW9uOiBzdGF0aWM7CisgICAgdG9wOiBhdXRvOworICAgIGxlZnQ6IGF1dG87CisgICAgcmlnaHQ6
IGF1dG87CisgICAgYm90dG9tOiBhdXRvOworICAgIG1hcmdpbi1sZWZ0OiAzcHg7CisgICAgaGVp
Z2h0OiAxMHB4OworICAgIHdpZHRoOiA1MHB4OworfQorCit2aWRlbzotd2Via2l0LWZ1bGwtc2Ny
ZWVuOjotd2Via2l0LW1lZGlhLWNvbnRyb2xzLXZvbHVtZS1zbGlkZXItbXV0ZS1idXR0b24gewor
ICAgIGRpc3BsYXk6IC13ZWJraXQtYm94OworICAgIHBvc2l0aW9uOiBzdGF0aWM7CisgICAgdG9w
OiBhdXRvOworICAgIGxlZnQ6IGF1dG87CisgICAgcmlnaHQ6IGF1dG87CisgICAgYm90dG9tOiBh
dXRvOworICAgIG1hcmdpbi1sZWZ0OiAzcHg7CisgICAgd2lkdGg6IDE0cHg7CisgICAgaGVpZ2h0
OiAxMnB4OworfQorCit2aWRlbzotd2Via2l0LWZ1bGwtc2NyZWVuOjotd2Via2l0LW1lZGlhLWNv
bnRyb2xzLXBsYXktYnV0dG9uIHsKKyAgICBwb3NpdGlvbjogYWJzb2x1dGU7CisgICAgd2lkdGg6
IDIycHg7CisgICAgaGVpZ2h0OiAyM3B4OworICAgIGxlZnQ6IDIwOXB4OworICAgIHRvcDogOXB4
OworfQorCit2aWRlbzotd2Via2l0LWZ1bGwtc2NyZWVuOjotd2Via2l0LW1lZGlhLWNvbnRyb2xz
LXJld2luZC1idXR0b24geworICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKKyAgICBsZWZ0OiAxNjJw
eDsKKyAgICB0b3A6IDEzcHg7CisgICAgd2lkdGg6IDE4cHg7CisgICAgaGVpZ2h0OiAxOHB4Owor
fQorCit2aWRlbzotd2Via2l0LWZ1bGwtc2NyZWVuOjotd2Via2l0LW1lZGlhLWNvbnRyb2xzLXNl
ZWstYmFjay1idXR0b24geworICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKKyAgICBkaXNwbGF5OiAt
d2Via2l0LWJveDsKKyAgICB3aWR0aDogMjNweDsKKyAgICBoZWlnaHQ6IDE2cHg7CisgICAgbGVm
dDogMTYycHg7CisgICAgdG9wOiAxM3B4OworfQorCit2aWRlbzotd2Via2l0LWZ1bGwtc2NyZWVu
Ojotd2Via2l0LW1lZGlhLWNvbnRyb2xzLXNlZWstZm9yd2FyZC1idXR0b24geworICAgIHBvc2l0
aW9uOiBhYnNvbHV0ZTsKKyAgICBkaXNwbGF5OiAtd2Via2l0LWJveDsKKyAgICB3aWR0aDogMjNw
eDsKKyAgICBoZWlnaHQ6IDE2cHg7CisgICAgbGVmdDogMjYycHg7CisgICAgdG9wOiAxM3B4Owor
fQorCit2aWRlbzotd2Via2l0LWZ1bGwtc2NyZWVuOjotd2Via2l0LW1lZGlhLWNvbnRyb2xzLXRp
bWVsaW5lLWNvbnRhaW5lciB7CisgICAgaGVpZ2h0OiBhdXRvOworICAgIHdpZHRoOiA0MjBweDsK
KyAgICBwb3NpdGlvbjogYWJzb2x1dGU7CisgICAgYm90dG9tOiA5cHg7CisgICAgbGVmdDogOHB4
OworICAgIHJpZ2h0OiA4cHg7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3No
YWRvdy9NZWRpYUNvbnRyb2xzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlh
Q29udHJvbHMuY3BwCmluZGV4IGUyMDExZDFjMTMyYzk0MTY0MjdkMjE5ZTY5ZDczZWRmMGI2ZGE0
MzYuLmQxNGJkYzk2ODgzNDJkNWNkMTAwZmFkYjJkZTg2YjZmZmYwYmJjM2MgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJvbHMuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJvbHMuY3BwCkBAIC00OSw2ICs0OSwxOSBA
QCB1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwogCiBzdGF0aWMgY29uc3QgZG91YmxlIGNPcGFj
aXR5QW5pbWF0aW9uUmVwZWF0RGVsYXkgPSAwLjA1OwogCitzdGF0aWMgYm9vbCBpc0Z1bGxTY3Jl
ZW4oSFRNTE1lZGlhRWxlbWVudCogbWVkaWFFbGVtZW50KSAKK3sKKyAgICBpZiAobWVkaWFFbGVt
ZW50LT5pc0Z1bGxzY3JlZW4oKSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisKKyNpZiBFTkFCTEUo
RlVMTFNDUkVFTl9BUEkpCisgICAgaWYgKG1lZGlhRWxlbWVudC0+ZG9jdW1lbnQoKS0+d2Via2l0
SXNGdWxsU2NyZWVuKCkgJiYgbWVkaWFFbGVtZW50LT5kb2N1bWVudCgpLT53ZWJraXRDdXJyZW50
RnVsbFNjcmVlbkVsZW1lbnQoKSA9PSBtZWRpYUVsZW1lbnQpCisgICAgICAgIHJldHVybiB0cnVl
OworI2VuZGlmCisKKyAgICByZXR1cm4gZmFsc2U7Cit9ICAgIAorCiBNZWRpYUNvbnRyb2xzOjpN
ZWRpYUNvbnRyb2xzKEhUTUxNZWRpYUVsZW1lbnQqIG1lZGlhRWxlbWVudCkKICAgICA6IG1fbWVk
aWFFbGVtZW50KG1lZGlhRWxlbWVudCkKICAgICAsIG1fb3BhY2l0eUFuaW1hdGlvblRpbWVyKHRo
aXMsICZNZWRpYUNvbnRyb2xzOjpvcGFjaXR5QW5pbWF0aW9uVGltZXJGaXJlZCkKQEAgLTIxOSw2
ICsyMzIsOSBAQCB2b2lkIE1lZGlhQ29udHJvbHM6OnVwZGF0ZSgpCiAgICAgICAgIG1fcGFuZWwt
PnVwZGF0ZSgpOwogICAgICAgICBjaGFuZ2VPcGFjaXR5KG1fcGFuZWwuZ2V0KCksIG9wYWNpdHlC
ZWZvcmVDaGFuZ2luZ1N0eWxlKTsKICAgICB9CisgICAgCisgICAgbV92b2x1bWVTbGlkZXJDb250
YWluZXItPnNldE92ZXJyaWRlc1Bvc2l0aW9uKCFpc0Z1bGxTY3JlZW4obV9tZWRpYUVsZW1lbnQp
KTsKKwogICAgIGlmIChtX211dGVCdXR0b24pCiAgICAgICAgIG1fbXV0ZUJ1dHRvbi0+dXBkYXRl
KCk7CiAgICAgaWYgKG1fcGxheUJ1dHRvbikKQEAgLTQ4MCw2ICs0OTYsOCBAQCB2b2lkIE1lZGlh
Q29udHJvbHM6OnVwZGF0ZVZvbHVtZVNsaWRlckNvbnRhaW5lcihib29sIHZpc2libGUpCiAgICAg
aWYgKCFtX21lZGlhRWxlbWVudC0+aGFzQXVkaW8oKSB8fCAhbV92b2x1bWVTbGlkZXJDb250YWlu
ZXIgfHwgIW1fdm9sdW1lU2xpZGVyKQogICAgICAgICByZXR1cm47CiAKKyAgICBtX3ZvbHVtZVNs
aWRlckNvbnRhaW5lci0+c2V0T3ZlcnJpZGVzUG9zaXRpb24oIWlzRnVsbFNjcmVlbihtX21lZGlh
RWxlbWVudCkpOworCiAgICAgaWYgKHZpc2libGUgJiYgIW1fdm9sdW1lU2xpZGVyQ29udGFpbmVy
LT5pc1Zpc2libGUoKSkgewogICAgICAgICBpZiAoIW1fbXV0ZUJ1dHRvbiB8fCAhbV9tdXRlQnV0
dG9uLT5yZW5kZXJlcigpIHx8ICFtX211dGVCdXR0b24tPnJlbmRlckJveCgpKQogICAgICAgICAg
ICAgcmV0dXJuOwpAQCAtNTE1LDcgKzUzMyw3IEBAIHZvaWQgTWVkaWFDb250cm9sczo6Zm9yd2Fy
ZEV2ZW50KEV2ZW50KiBldmVudCkKICAgICAgICAgICAgIGRlZmF1bHRIYW5kbGVkID0gZXZlbnQt
PmRlZmF1bHRIYW5kbGVkKCk7CiAgICAgICAgIH0KIAotICAgICAgICBib29sIHNob3dWb2x1bWVT
bGlkZXIgPSBmYWxzZTsKKyAgICAgICAgYm9vbCBzaG93Vm9sdW1lU2xpZGVyID0gaXNGdWxsU2Ny
ZWVuKG1fbWVkaWFFbGVtZW50KTsKICAgICAgICAgaWYgKCFkZWZhdWx0SGFuZGxlZCAmJiBtX211
dGVCdXR0b24gJiYgbV9tdXRlQnV0dG9uLT5oaXRUZXN0KHBvaW50KSkgewogICAgICAgICAgICAg
bV9tdXRlQnV0dG9uLT5kZWZhdWx0RXZlbnRIYW5kbGVyKGV2ZW50KTsKICAgICAgICAgICAgIGlm
IChldmVudC0+dHlwZSgpICE9IGV2ZW50TmFtZXMoKS5tb3VzZW91dEV2ZW50KQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL01lZGlhQ29udHJvbEVsZW1lbnRzLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9NZWRpYUNvbnRyb2xFbGVtZW50cy5jcHAKaW5kZXggZWU2
MTE3OWZjZGNiOTQ5MmEwMTFkYTIyNjZlMDA0YTc3MzIwNGE0Zi4uMzMyOWY2OWZhYTRhMjUxZjJj
OTgyY2JmMTFkOTQzNWU1YTkxZmRiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL01lZGlhQ29udHJvbEVsZW1lbnRzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvTWVkaWFDb250cm9sRWxlbWVudHMuY3BwCkBAIC0yNTQsNiArMjU0LDcgQEAgY29uc3QgQXRv
bWljU3RyaW5nJiBNZWRpYUNvbnRyb2xUaW1lbGluZUNvbnRhaW5lckVsZW1lbnQ6OnNoYWRvd1Bz
ZXVkb0lkKCkgY29uc3QKIGlubGluZSBNZWRpYUNvbnRyb2xWb2x1bWVTbGlkZXJDb250YWluZXJF
bGVtZW50OjpNZWRpYUNvbnRyb2xWb2x1bWVTbGlkZXJDb250YWluZXJFbGVtZW50KEhUTUxNZWRp
YUVsZW1lbnQqIG1lZGlhRWxlbWVudCkKICAgICA6IE1lZGlhQ29udHJvbEVsZW1lbnQobWVkaWFF
bGVtZW50KQogICAgICwgbV9pc1Zpc2libGUoZmFsc2UpCisgICAgLCBtX292ZXJyaWRlc1Bvc2l0
aW9uKHRydWUpCiAgICAgLCBtX3goMCkKICAgICAsIG1feSgwKQogewpAQCAtMjY3LDEwICsyNjgs
MTIgQEAgUGFzc1JlZlB0cjxNZWRpYUNvbnRyb2xWb2x1bWVTbGlkZXJDb250YWluZXJFbGVtZW50
PiBNZWRpYUNvbnRyb2xWb2x1bWVTbGlkZXJDb24KIFBhc3NSZWZQdHI8UmVuZGVyU3R5bGU+IE1l
ZGlhQ29udHJvbFZvbHVtZVNsaWRlckNvbnRhaW5lckVsZW1lbnQ6OnN0eWxlRm9yRWxlbWVudCgp
CiB7CiAgICAgUmVmUHRyPFJlbmRlclN0eWxlPiBzdHlsZSA9IE1lZGlhQ29udHJvbEVsZW1lbnQ6
OnN0eWxlRm9yRWxlbWVudCgpOwotICAgIHN0eWxlLT5zZXRQb3NpdGlvbihBYnNvbHV0ZVBvc2l0
aW9uKTsKLSAgICBzdHlsZS0+c2V0TGVmdChMZW5ndGgobV94LCBGaXhlZCkpOwotICAgIHN0eWxl
LT5zZXRUb3AoTGVuZ3RoKG1feSwgRml4ZWQpKTsKLSAgICBzdHlsZS0+c2V0RGlzcGxheShtX2lz
VmlzaWJsZSA/IEJMT0NLIDogTk9ORSk7CisgICAgaWYgKG1fb3ZlcnJpZGVzUG9zaXRpb24pIHsK
KyAgICAgICAgc3R5bGUtPnNldFBvc2l0aW9uKEFic29sdXRlUG9zaXRpb24pOworICAgICAgICBz
dHlsZS0+c2V0TGVmdChMZW5ndGgobV94LCBGaXhlZCkpOworICAgICAgICBzdHlsZS0+c2V0VG9w
KExlbmd0aChtX3ksIEZpeGVkKSk7CisgICAgICAgIHN0eWxlLT5zZXREaXNwbGF5KG1faXNWaXNp
YmxlID8gQkxPQ0sgOiBOT05FKTsKKyAgICB9CiAgICAgcmV0dXJuIHN0eWxlOwogfQogCkBAIC0y
ODEsNiArMjg0LDEzIEBAIHZvaWQgTWVkaWFDb250cm9sVm9sdW1lU2xpZGVyQ29udGFpbmVyRWxl
bWVudDo6c2V0VmlzaWJsZShib29sIHZpc2libGUpCiAgICAgbV9pc1Zpc2libGUgPSB2aXNpYmxl
OwogfQogCit2b2lkIE1lZGlhQ29udHJvbFZvbHVtZVNsaWRlckNvbnRhaW5lckVsZW1lbnQ6OnNl
dE92ZXJyaWRlc1Bvc2l0aW9uKGJvb2wgb3ZlcnJpZGVzKQoreworICAgIGlmIChvdmVycmlkZXMg
PT0gbV9vdmVycmlkZXNQb3NpdGlvbikKKyAgICAgICAgcmV0dXJuOworICAgIG1fb3ZlcnJpZGVz
UG9zaXRpb24gPSBvdmVycmlkZXM7Cit9CisKIHZvaWQgTWVkaWFDb250cm9sVm9sdW1lU2xpZGVy
Q29udGFpbmVyRWxlbWVudDo6c2V0UG9zaXRpb24oaW50IHgsIGludCB5KQogewogICAgIGlmICh4
ID09IG1feCAmJiB5ID09IG1feSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9NZWRpYUNvbnRyb2xFbGVtZW50cy5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL01lZGlh
Q29udHJvbEVsZW1lbnRzLmgKaW5kZXggMjBhYWMwZjEzNjc3ODc3NzczODQ3ZGU0OWQ5MzY5NzQ2
NWM3NjU0Yy4uN2U3MzIyZDIxMmRiMzg4YTE3NjA3NmIzMGRkNDY2YjdiZGNkNWU4NyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL01lZGlhQ29udHJvbEVsZW1lbnRzLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL01lZGlhQ29udHJvbEVsZW1lbnRzLmgKQEAgLTE0
MCw2ICsxNDAsOCBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8TWVkaWFDb250cm9s
Vm9sdW1lU2xpZGVyQ29udGFpbmVyRWxlbWVudD4gY3JlYXRlKEhUTUxNZWRpYUVsZW1lbnQqKTsK
IAogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxSZW5kZXJTdHlsZT4gc3R5bGVGb3JFbGVtZW50KCk7
CisgICAgdm9pZCBzZXRPdmVycmlkZXNQb3NpdGlvbihib29sKTsKKyAgICBib29sIG92ZXJyaWRl
c1Bvc2l0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9vdmVycmlkZXNQb3NpdGlvbjsgfQogICAgIHZv
aWQgc2V0VmlzaWJsZShib29sKTsKICAgICBib29sIGlzVmlzaWJsZSgpIHsgcmV0dXJuIG1faXNW
aXNpYmxlOyB9CiAgICAgdm9pZCBzZXRQb3NpdGlvbihpbnQgeCwgaW50IHkpOwpAQCAtMTUxLDYg
KzE1Myw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCBjb25zdCBBdG9taWNTdHJpbmcmIHNoYWRv
d1BzZXVkb0lkKCkgY29uc3Q7CiAKICAgICBib29sIG1faXNWaXNpYmxlOworICAgIGJvb2wgbV9v
dmVycmlkZXNQb3NpdGlvbjsKICAgICBpbnQgbV94LCBtX3k7CiB9OwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWUuaCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJUaGVtZS5oCmluZGV4IDM1ZjI1NmM5NmEzNTZkZmE3NmUwZGE3NzY4OTVm
MTI3YWFlYTgwNjQuLjNjY2U0YzFhZmIzZThhZTQwYjQzZjYxZmYwZGFlZWQ4NWNlNzAwZTggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZS5oCkBAIC04OCw2ICs4OCw5IEBAIHB1
YmxpYzoKICAgICB2aXJ0dWFsIFN0cmluZyBleHRyYVF1aXJrc1N0eWxlU2hlZXQoKSB7IHJldHVy
biBTdHJpbmcoKTsgfQogI2lmIEVOQUJMRShWSURFTykKICAgICB2aXJ0dWFsIFN0cmluZyBleHRy
YU1lZGlhQ29udHJvbHNTdHlsZVNoZWV0KCkgeyByZXR1cm4gU3RyaW5nKCk7IH07CisjaWYgRU5B
QkxFKEZVTExTQ1JFRU5fQVBJKQorICAgIHZpcnR1YWwgU3RyaW5nIGV4dHJhRnVsbFNjcmVlblN0
eWxlU2hlZXQoKSB7IHJldHVybiBTdHJpbmcoKTsgfTsKKyNlbmRpZgogI2VuZGlmCiAKICAgICAv
LyBBIG1ldGhvZCB0byBvYnRhaW4gdGhlIGJhc2VsaW5lIHBvc2l0aW9uIGZvciBhICJsZWFmIiBj
b250cm9sLiAgVGhpcyB3aWxsIG9ubHkgYmUgdXNlZCBpZiBhIGJhc2VsaW5lCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVNYWMuaCBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZU1hYy5oCmluZGV4IGQ5NTFmZjYzMDg5ZTVmZDcwMTBl
MzFiMWY5MTk2NzIzNGFmZDc0NjYuLmQ2NDk0NGI4MTQwMDExNWMwZWFiODI4ZmExZDBhN2I4M2Qx
YTBlZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZU1h
Yy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZU1hYy5oCkBAIC0x
NjIsNiArMTYyLDkgQEAgcHJvdGVjdGVkOgogCiAgICAgLy8gTWVkaWEgY29udHJvbHMKICAgICB2
aXJ0dWFsIFN0cmluZyBleHRyYU1lZGlhQ29udHJvbHNTdHlsZVNoZWV0KCk7CisjaWYgRU5BQkxF
KEZVTExTQ1JFRU5fQVBJKQorICAgIHZpcnR1YWwgU3RyaW5nIGV4dHJhRnVsbFNjcmVlblN0eWxl
U2hlZXQoKTsKKyNlbmRpZgogCiAgICAgdmlydHVhbCBib29sIHNob3VsZFJlbmRlck1lZGlhQ29u
dHJvbFBhcnQoQ29udHJvbFBhcnQsIEVsZW1lbnQqKTsKICAgICB2aXJ0dWFsIGJvb2wgdXNlc01l
ZGlhQ29udHJvbFN0YXR1c0Rpc3BsYXkoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJUaGVtZU1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJUaGVtZU1hYy5tbQppbmRleCBmNTYxMWRjZGQ3NDY4NjM0Y2U5MjUwOWQ1MDVkZDg0ZTYzZTgy
ZTA5Li5kYjg3MDM1Zjc5MmFhMjllMmY5MGQ4ODkwNWY0N2I3MmRiYTcwYWM4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVNYWMubW0KKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lTWFjLm1tCkBAIC0xOTYxLDIwICsxOTYxLDQ1
IEBAIFN0cmluZyBSZW5kZXJUaGVtZU1hYzo6ZXh0cmFNZWRpYUNvbnRyb2xzU3R5bGVTaGVldCgp
CiAjZW5kaWYKIH0KIAorI2lmIEVOQUJMRShGVUxMU0NSRUVOX0FQSSkKK1N0cmluZyBSZW5kZXJU
aGVtZU1hYzo6ZXh0cmFGdWxsU2NyZWVuU3R5bGVTaGVldCgpCit7CisjaWYgUExBVEZPUk0oTUFD
KQorICAgIGlmIChtZWRpYUNvbnRyb2xsZXJUaGVtZSgpID09IE1lZGlhQ29udHJvbGxlclRoZW1l
UXVpY2tUaW1lKQorICAgICAgICByZXR1cm4gU3RyaW5nKGZ1bGxzY3JlZW5RdWlja1RpbWVVc2Vy
QWdlbnRTdHlsZVNoZWV0LCBzaXplb2YoZnVsbHNjcmVlblF1aWNrVGltZVVzZXJBZ2VudFN0eWxl
U2hlZXQpKTsKKyAgICAKKyAgICByZXR1cm4gU3RyaW5nKCk7CisjZWxzZQorICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBTdHJpbmcoKTsKKyNlbmRpZgorfQorI2VuZGlmCisK
IGJvb2wgUmVuZGVyVGhlbWVNYWM6OnNob3VsZFJlbmRlck1lZGlhQ29udHJvbFBhcnQoQ29udHJv
bFBhcnQgcGFydCwgRWxlbWVudCogZWxlbWVudCkKIHsKKyAgICBIVE1MTWVkaWFFbGVtZW50KiBt
ZWRpYUVsZW1lbnQgPSBzdGF0aWNfY2FzdDxIVE1MTWVkaWFFbGVtZW50Kj4oZWxlbWVudCk7CiAg
ICAgc3dpdGNoIChwYXJ0KSB7CiAgICAgY2FzZSBNZWRpYVZvbHVtZVNsaWRlckNvbnRhaW5lclBh
cnQ6CiAgICAgY2FzZSBNZWRpYVZvbHVtZVNsaWRlclBhcnQ6CiAgICAgY2FzZSBNZWRpYVZvbHVt
ZVNsaWRlck11dGVCdXR0b25QYXJ0OgogICAgIGNhc2UgTWVkaWFWb2x1bWVTbGlkZXJUaHVtYlBh
cnQ6IHsKLSAgICAgICAgSFRNTE1lZGlhRWxlbWVudCogbWVkaWFFbGVtZW50ID0gc3RhdGljX2Nh
c3Q8SFRNTE1lZGlhRWxlbWVudCo+KGVsZW1lbnQpOwogICAgICAgICByZXR1cm4gbWVkaWFDb250
cm9sbGVyVGhlbWUoKSA9PSBNZWRpYUNvbnRyb2xsZXJUaGVtZVF1aWNrVGltZSAmJiBtZWRpYUVs
ZW1lbnQtPmhhc0F1ZGlvKCk7CiAgICAgfQogICAgIGNhc2UgTWVkaWFUb2dnbGVDbG9zZWRDYXB0
aW9uc0J1dHRvblBhcnQ6CiAgICAgICAgIC8vIFdlIHJlbHkgb24gUVRLaXQgdG8gcmVuZGVyIGNh
cHRpb25zIHNvIGRvbid0IGVuYWJsZSB0aGUgYnV0dG9uIHVubGVzcyBpdCB3aWxsIGJlIGFibGUg
dG8gZG8gc28uCiAgICAgICAgIGlmICghZWxlbWVudC0+aGFzVGFnTmFtZSh2aWRlb1RhZykpCiAg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgY2FzZSBNZWRpYVJld2luZEJ1dHRvblBhcnQ6
CisgICAgICAgIHJldHVybiBtZWRpYUVsZW1lbnQtPm1vdmllTG9hZFR5cGUoKSA9PSBNZWRpYVBs
YXllcjo6TGl2ZVN0cmVhbSAKKyAgICAgICAgICAgIHx8IG1lZGlhRWxlbWVudC0+bW92aWVMb2Fk
VHlwZSgpID09IE1lZGlhUGxheWVyOjpTdG9yZWRTdHJlYW07CisgICAgY2FzZSBNZWRpYVJldHVy
blRvUmVhbHRpbWVCdXR0b25QYXJ0OgorICAgICAgICByZXR1cm4gbWVkaWFFbGVtZW50LT5tb3Zp
ZUxvYWRUeXBlKCkgPT0gTWVkaWFQbGF5ZXI6OkxpdmVTdHJlYW07CisgICAgY2FzZSBNZWRpYVNl
ZWtGb3J3YXJkQnV0dG9uUGFydDoKKyAgICBjYXNlIE1lZGlhU2Vla0JhY2tCdXR0b25QYXJ0Ogor
ICAgICAgICByZXR1cm4gbWVkaWFFbGVtZW50LT5pc0Z1bGxzY3JlZW4oKSAKKyAgICAgICAgICAg
ICYmIG1lZGlhRWxlbWVudC0+bW92aWVMb2FkVHlwZSgpICE9IE1lZGlhUGxheWVyOjpTdG9yZWRT
dHJlYW0gCisgICAgICAgICAgICAmJiBtZWRpYUVsZW1lbnQtPm1vdmllTG9hZFR5cGUoKSAhPSBN
ZWRpYVBsYXllcjo6TGl2ZVN0cmVhbTsKICAgICBkZWZhdWx0OgogICAgICAgICBicmVhazsKICAg
ICB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>87016</attachid>
            <date>2011-03-26 00:15:56 -0700</date>
            <delta_ts>2011-03-26 00:30:13 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-56851-20110326001555.patch</filename>
            <type>text/plain</type>
            <size>25124</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODE5NjMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBlMjM1MDIwNjc5NDkzZWIx
MGFhODIwYzRjZWI3ODMyZTYwNjhlNzEyLi44ZmUzYTk1YWY2MmU4MTY4M2FiNzdlMWMxNjIxM2Rh
ZDFkNGZhMzU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTIgQEAKKzIwMTEtMDMtMjIgIEplciBO
b2JsZSAgPGplci5ub2JsZUBhcHBsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgTWVkaWEgY29udHJvbHMgbXVzdCB1c2UgZnVsbCBzY3JlZW4g
c3R5bGUgd2hlbiBpbiBuZXcgZnVsbCBzY3JlZW4gbW9kZS4KKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU2ODUxCisKKyAgICAgICAgQWRkIG5ldyBmdWxs
IHNjcmVlbiBzdHlsZXMgZm9yIHRoZSBmdWxsIHNjcmVlbiBtZWRpYSBlbGVtZW50cy4KKworICAg
ICAgICAqIERlcml2ZWRTb3VyY2VzLm1ha2U6IEFkZCBmdWxsU2NyZWVuUXVpY2tUaW1lLmNzcy4K
KyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6IERpdHRvLgorICAg
ICAgICAqIGNzcy9DU1NTdHlsZVNlbGVjdG9yLmNwcDogUmVtb3ZlZCBsb2FkRnVsbFNjcmVlblJ1
bGVzSWZOZWVkZWQoKS4KKyAgICAgICAgKFdlYkNvcmU6OkNTU1N0eWxlU2VsZWN0b3I6OkNTU1N0
eWxlU2VsZWN0b3IpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkNTU1N0eWxlU2VsZWN0b3I6
OnN0eWxlRm9yRWxlbWVudCk6IExvYWQgZnVsbCBzY3JlZW4gcnVsZXMgCisgICAgICAgICAgICBp
ZiBuZWVkZWQuCisgICAgICAgICogY3NzL2Z1bGxzY3JlZW5RdWlja1RpbWUuY3NzOiBBZGRlZC4K
KyAgICAgICAgKiBjc3MvbWVkaWFDb250cm9scy5jc3M6CisgICAgICAgICogaHRtbC9zaGFkb3cv
TWVkaWFDb250cm9scy5jcHA6CisgICAgICAgIChXZWJDb3JlOjppc0Z1bGxTY3JlZW4pOiBBZGRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbHM6OmNyZWF0ZSk6IEFkZCBuZXcgZnVs
bCBzY3JlZW4gdm9sdW1lIGNvbnRyb2xzLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb250cm9s
czo6dXBkYXRlU3R5bGUpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbHM6
OnVwZGF0ZSk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb250cm9sczo6dXBkYXRl
Vm9sdW1lU2xpZGVyQ29udGFpbmVyKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpNZWRpYUNv
bnRyb2xzOjpmb3J3YXJkRXZlbnQpOiBEaXR0by4KKyAgICAgICAgKiByZW5kZXJpbmcvTWVkaWFD
b250cm9sRWxlbWVudHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb250cm9sRnVsbHNj
cmVlblZvbHVtZVNsaWRlckVsZW1lbnQ6Ok1lZGlhQ29udHJvbEZ1bGxzY3JlZW5Wb2x1bWVTbGlk
ZXJFbGVtZW50KTogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYUNvbnRyb2xGdWxsc2Ny
ZWVuVm9sdW1lU2xpZGVyRWxlbWVudDo6Y3JlYXRlKTogQWRkZWQuCisgICAgICAgIChXZWJDb3Jl
OjpNZWRpYUNvbnRyb2xGdWxsc2NyZWVuVm9sdW1lU2xpZGVyRWxlbWVudDo6c2hhZG93UHNldWRv
SWQpOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbEZ1bGxzY3JlZW5Wb2x1
bWVNaW5CdXR0b25FbGVtZW50OjpNZWRpYUNvbnRyb2xGdWxsc2NyZWVuVm9sdW1lTWluQnV0dG9u
RWxlbWVudCk6IEFkZGV0CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUNvbnRyb2xGdWxsc2NyZWVu
Vm9sdW1lTWluQnV0dG9uRWxlbWVudDo6Y3JlYXRlKTogQWRkZWQuCisgICAgICAgIChXZWJDb3Jl
OjpNZWRpYUNvbnRyb2xGdWxsc2NyZWVuVm9sdW1lTWluQnV0dG9uRWxlbWVudDo6ZGVmYXVsdEV2
ZW50SGFuZGxlcik6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb250cm9sRnVsbHNj
cmVlblZvbHVtZU1pbkJ1dHRvbkVsZW1lbnQ6OnNoYWRvd1BzZXVkb0lkKTogQWRkZWQuCisgICAg
ICAgIChXZWJDb3JlOjpNZWRpYUNvbnRyb2xGdWxsc2NyZWVuVm9sdW1lTWF4QnV0dG9uRWxlbWVu
dDo6TWVkaWFDb250cm9sRnVsbHNjcmVlblZvbHVtZU1heEJ1dHRvbkVsZW1lbnQpOiBBZGRlZC4K
KyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbEZ1bGxzY3JlZW5Wb2x1bWVNYXhCdXR0b25F
bGVtZW50OjpjcmVhdGUpOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbEZ1
bGxzY3JlZW5Wb2x1bWVNYXhCdXR0b25FbGVtZW50OjpkZWZhdWx0RXZlbnRIYW5kbGVyKTogQWRk
ZWQuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYUNvbnRyb2xGdWxsc2NyZWVuVm9sdW1lTWF4QnV0
dG9uRWxlbWVudDo6c2hhZG93UHNldWRvSWQpOiBBZGRlZC4KKyAgICAgICAgKiByZW5kZXJpbmcv
TWVkaWFDb250cm9sRWxlbWVudHMuaDoKKyAgICAgICAgICAgIEFkZGVkIG1fb3ZlcnJpZGVQb3Np
dGlvbi4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbFZvbHVtZVNsaWRlckNvbnRhaW5l
ckVsZW1lbnQ6OnNldE92ZXJyaWRlc1Bvc2l0aW9uKTogQWRkZWQuCisgICAgICAgICogcmVuZGVy
aW5nL01lZGlhQ29udHJvbEVsZW1lbnRzLmg6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUNvbnRy
b2xWb2x1bWVTbGlkZXJDb250YWluZXJFbGVtZW50OjpvdmVycmlkZXNQb3NpdGlvbik6IEFkZGVk
LgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUaGVtZS5oOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyVGhlbWU6OmV4dHJhRnVsbFNjcmVlblN0eWxlU2hlZXQpOiBBZGRlZC4KKyAgICAgICAg
KiByZW5kZXJpbmcvUmVuZGVyVGhlbWVNYWMuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVy
VGhlbWVNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZU1hYzo6ZXh0cmFGdWxs
U2NyZWVuU3R5bGVTaGVldCk6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVN
YWM6OnNob3VsZFJlbmRlck1lZGlhQ29udHJvbFBhcnQpOiBSZW5kZXIgc2VlayBmb3J3YXJkIGFu
ZCBiYWNrd2FyZCAKKyAgICAgICAgICAgIGJ1dHRvbnMuCisKIDIwMTEtMDMtMjUgIFZzZXZvbG9k
IFZsYXNvdiAgPHZzZXZpa0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgUGF2
ZWwgRmVsZG1hbi4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1h
a2UgYi9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlCmluZGV4IDY5NmVmMWM5MjQz
Mzc0N2ZlNGU5NzliYzNiZGI2NDJkMmQzNjE2MjIuLmM4ZmEzMTA1NTU3MjUwOGExMWJhOTNiZjE2
OGY4YTUxNDFiNTVmYWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2Vz
Lm1ha2UKKysrIGIvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQpAQCAtNzM3LDcg
KzczNyw3IEBAIGlmZXEgKCQoZmluZHN0cmluZyBFTkFCTEVfVklERU8sJChGRUFUVVJFX0RFRklO
RVMpKSwgRU5BQkxFX1ZJREVPKQogZW5kaWYKIAogaWZlcSAoJChmaW5kc3RyaW5nIEVOQUJMRV9G
VUxMU0NSRUVOX0FQSSwkKEZFQVRVUkVfREVGSU5FUykpLCBFTkFCTEVfRlVMTFNDUkVFTl9BUEkp
Ci0gICAgVVNFUl9BR0VOVF9TVFlMRV9TSEVFVFMgOj0gJChVU0VSX0FHRU5UX1NUWUxFX1NIRUVU
UykgJChXZWJDb3JlKS9jc3MvZnVsbHNjcmVlbi5jc3MKKyAgICBVU0VSX0FHRU5UX1NUWUxFX1NI
RUVUUyA6PSAkKFVTRVJfQUdFTlRfU1RZTEVfU0hFRVRTKSAkKFdlYkNvcmUpL2Nzcy9mdWxsc2Ny
ZWVuLmNzcyAkKFdlYkNvcmUpL2Nzcy9mdWxsc2NyZWVuUXVpY2tUaW1lLmNzcwogZW5kaWYKIAog
VXNlckFnZW50U3R5bGVTaGVldHMuaCA6IGNzcy9tYWtlLWNzcy1maWxlLWFycmF5cy5wbCAkKFVT
RVJfQUdFTlRfU1RZTEVfU0hFRVRTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDgxMzcwOTYyZTJmZjlmNWNkZjdjNmU0MzdmM2Y4
YjYyYzE3ODgxOWEuLjQ2Nzg2ZTM0ODI4MWZmMGE3Y2QxZTM5ZGFjN2I4NjgyMTQ1OTIyYTggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
QEAgLTExODM4LDYgKzExODM4LDcgQEAKIAkJQ0EzQkY2N0IxMEQ5OUJBRTAwRTZDRTUzIC8qIFNj
cm9sbEFuaW1hdG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNj
cm9sbEFuaW1hdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0EzQkY2N0Qx
MEQ5OUJBRTAwRTZDRTUzIC8qIFNjcm9sbEFuaW1hdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFNjcm9sbEFuaW1hdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUNENEUwQUZBMTFGN0JDMjcwMDlEMzgxMSAvKiBmdWxsc2NyZWVuLmNzcyAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHRleHQuY3NzOyBwYXRoID0gZnVsbHNjcmVlbi5jc3M7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCUNEQkQ5M0JBMTMzM0JENEIwMDI1NzBFMyAvKiBmdWxsc2NyZWVuUXVpY2tUaW1lLmNz
cyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHRleHQuY3NzOyBwYXRoID0gZnVsbHNjcmVlblF1aWNrVGltZS5jc3M7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNERUE3QzgyMTI3NjIzMDQwMEI4NDZERCAvKiBS
ZW5kZXJGdWxsU2NyZWVuLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbmRl
ckZ1bGxTY3JlZW4uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0RFQTdDODMxMjc2
MjMwNDAwQjg0NkREIC8qIFJlbmRlckZ1bGxTY3JlZW4uY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gUmVuZGVyRnVsbFNjcmVlbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUNFMDJGMEMzMTFFODNBREQwMEM2Njg0QSAvKiBTY3JpcHRDb250cm9sbGVy
QmFzZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTY3JpcHRDb250cm9sbGVy
QmFzZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTg4NzksNiArMTg4ODAsNyBA
QAogCQkJCUJDOUFERDIyMENDNDAzMjYwMDA5OEM0QyAvKiBXZWJLaXRDU1NUcmFuc2Zvcm1WYWx1
ZS5oICovLAogCQkJCTMxNjExRTU0MEUxQzRENEEwMEY2QTU3OSAvKiBXZWJLaXRDU1NUcmFuc2Zv
cm1WYWx1ZS5pZGwgKi8sCiAJCQkJNENERTU0RUMwRTU1Nzk3ODAwODlFMjZDIC8qIHdtbC5jc3Mg
Ki8sCisJCQkJQ0RCRDkzQkExMzMzQkQ0QjAwMjU3MEUzIC8qIGZ1bGxzY3JlZW5RdWlja1RpbWUu
Y3NzICovLAogCQkJKTsKIAkJCXBhdGggPSBjc3M7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4i
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2VsZWN0b3IuY3BwIGIv
U291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2VsZWN0b3IuY3BwCmluZGV4IGU2OTk1YTEyMDli
NzYzMDNmOTg1MmQzMjM2N2E2ZmQ5M2JiODQ0ZDIuLjdmZTQzOTVjNWExNWQyMDc0MmJiNTM5Y2E0
YTQxYTc3ZGQ0N2I0YTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNl
bGVjdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTZWxlY3Rvci5jcHAK
QEAgLTQzNyw5ICs0MzcsNiBAQCBzdGF0aWMgUnVsZVNldCogc2libGluZ1J1bGVzSW5EZWZhdWx0
U3R5bGU7CiBSZW5kZXJTdHlsZSogQ1NTU3R5bGVTZWxlY3Rvcjo6c19zdHlsZU5vdFlldEF2YWls
YWJsZTsKIAogc3RhdGljIHZvaWQgbG9hZEZ1bGxEZWZhdWx0U3R5bGUoKTsKLSNpZiBFTkFCTEUo
RlVMTFNDUkVFTl9BUEkpCi1zdGF0aWMgdm9pZCBsb2FkRnVsbFNjcmVlblJ1bGVzSWZOZWVkZWQo
RG9jdW1lbnQqKTsKLSNlbmRpZgogc3RhdGljIHZvaWQgbG9hZFNpbXBsZURlZmF1bHRTdHlsZSgp
OwogLy8gRklYTUU6IEl0IHdvdWxkIGJlIG5pY2UgdG8gdXNlIHNvbWUgbWVjaGFuaXNtIHRoYXQg
Z3VhcmFudGVlcyB0aGlzIGlzIGluIHN5bmMgd2l0aCB0aGUgcmVhbCBVQSBzdHlsZXNoZWV0Lgog
c3RhdGljIGNvbnN0IGNoYXIqIHNpbXBsZVVzZXJBZ2VudFN0eWxlU2hlZXQgPSAiaHRtbCxib2R5
LGRpdntkaXNwbGF5OmJsb2NrfWJvZHl7bWFyZ2luOjhweH1kaXY6Zm9jdXMsc3Bhbjpmb2N1c3tv
dXRsaW5lOmF1dG8gNXB4IC13ZWJraXQtZm9jdXMtcmluZy1jb2xvcn1hOi13ZWJraXQtYW55LWxp
bmt7Y29sb3I6LXdlYmtpdC1saW5rO3RleHQtZGVjb3JhdGlvbjp1bmRlcmxpbmV9YTotd2Via2l0
LWFueS1saW5rOmFjdGl2ZXtjb2xvcjotd2Via2l0LWFjdGl2ZWxpbmt9IjsKQEAgLTUyMCw5ICs1
MTcsNiBAQCBDU1NTdHlsZVNlbGVjdG9yOjpDU1NTdHlsZVNlbGVjdG9yKERvY3VtZW50KiBkb2N1
bWVudCwgU3R5bGVTaGVldExpc3QqIHN0eWxlU2hlZQogICAgICAgICAgICAgbG9hZFNpbXBsZURl
ZmF1bHRTdHlsZSgpOwogICAgICAgICBlbHNlIHsKICAgICAgICAgICAgIGxvYWRGdWxsRGVmYXVs
dFN0eWxlKCk7Ci0jaWYgRU5BQkxFKEZVTExTQ1JFRU5fQVBJKQotICAgICAgICAgICAgbG9hZEZ1
bGxTY3JlZW5SdWxlc0lmTmVlZGVkKGRvY3VtZW50KTsKLSNlbmRpZgogICAgICAgICB9CiAgICAg
fQogCkBAIC02NTcsMTkgKzY1MSw2IEBAIHN0YXRpYyB2b2lkIGxvYWRGdWxsRGVmYXVsdFN0eWxl
KCkKICAgICBkZWZhdWx0UXVpcmtzU3R5bGUtPmFkZFJ1bGVzRnJvbVNoZWV0KHF1aXJrc1NoZWV0
LCBzY3JlZW5FdmFsKCkpOwogfQogCi0jaWYgRU5BQkxFKEZVTExTQ1JFRU5fQVBJKQotc3RhdGlj
IHZvaWQgbG9hZEZ1bGxTY3JlZW5SdWxlc0lmTmVlZGVkKERvY3VtZW50KiBkb2N1bWVudCkKLXsK
LSAgICBpZiAoIWRvY3VtZW50LT53ZWJraXRJc0Z1bGxTY3JlZW4oKSkKLSAgICAgICAgcmV0dXJu
OwotICAgIC8vIEZ1bGwtc2NyZWVuIHJ1bGVzLgotICAgIFN0cmluZyBmdWxsc2NyZWVuUnVsZXMg
PSBTdHJpbmcoZnVsbHNjcmVlblVzZXJBZ2VudFN0eWxlU2hlZXQsIHNpemVvZihmdWxsc2NyZWVu
VXNlckFnZW50U3R5bGVTaGVldCkpICsgUmVuZGVyVGhlbWU6OmRlZmF1bHRUaGVtZSgpLT5leHRy
YURlZmF1bHRTdHlsZVNoZWV0KCk7Ci0gICAgQ1NTU3R5bGVTaGVldCogZnVsbHNjcmVlblNoZWV0
ID0gcGFyc2VVQVNoZWV0KGZ1bGxzY3JlZW5SdWxlcyk7Ci0gICAgZGVmYXVsdFN0eWxlLT5hZGRS
dWxlc0Zyb21TaGVldChmdWxsc2NyZWVuU2hlZXQsIHNjcmVlbkV2YWwoKSk7Ci0gICAgZGVmYXVs
dFF1aXJrc1N0eWxlLT5hZGRSdWxlc0Zyb21TaGVldChmdWxsc2NyZWVuU2hlZXQsIHNjcmVlbkV2
YWwoKSk7Ci19Ci0jZW5kaWYKLQogc3RhdGljIHZvaWQgbG9hZFNpbXBsZURlZmF1bHRTdHlsZSgp
CiB7CiAgICAgQVNTRVJUKCFkZWZhdWx0U3R5bGUpOwpAQCAtMTM4OSw5ICsxMzcwLDYgQEAgUGFz
c1JlZlB0cjxSZW5kZXJTdHlsZT4gQ1NTU3R5bGVTZWxlY3Rvcjo6c3R5bGVGb3JFbGVtZW50KEVs
ZW1lbnQqIGUsIFJlbmRlclN0eWwKICAgICAKICAgICBpZiAoc2ltcGxlRGVmYXVsdFN0eWxlU2hl
ZXQgJiYgIWVsZW1lbnRDYW5Vc2VTaW1wbGVEZWZhdWx0U3R5bGUoZSkpIHsKICAgICAgICAgbG9h
ZEZ1bGxEZWZhdWx0U3R5bGUoKTsKLSNpZiBFTkFCTEUoRlVMTFNDUkVFTl9BUEkpCi0gICAgICAg
IGxvYWRGdWxsU2NyZWVuUnVsZXNJZk5lZWRlZChlLT5kb2N1bWVudCgpKTsKLSNlbmRpZgogICAg
ICAgICBhc3NlcnROb1NpYmxpbmdSdWxlc0luRGVmYXVsdFN0eWxlKCk7CiAgICAgfQogCkBAIC0x
NDQ0LDYgKzE0MjIsMTcgQEAgUGFzc1JlZlB0cjxSZW5kZXJTdHlsZT4gQ1NTU3R5bGVTZWxlY3Rv
cjo6c3R5bGVGb3JFbGVtZW50KEVsZW1lbnQqIGUsIFJlbmRlclN0eWwKICAgICB9CiAjZW5kaWYK
IAorI2lmIEVOQUJMRShGVUxMU0NSRUVOX0FQSSkKKyAgICBzdGF0aWMgYm9vbCBsb2FkZWRGdWxs
U2NyZWVuU3R5bGVTaGVldDsKKyAgICBpZiAoIWxvYWRlZEZ1bGxTY3JlZW5TdHlsZVNoZWV0ICYm
IGUtPmRvY3VtZW50KCktPndlYmtpdElzRnVsbFNjcmVlbigpKSB7CisgICAgICAgIGxvYWRlZEZ1
bGxTY3JlZW5TdHlsZVNoZWV0ID0gdHJ1ZTsKKyAgICAgICAgU3RyaW5nIGZ1bGxzY3JlZW5SdWxl
cyA9IFN0cmluZyhmdWxsc2NyZWVuVXNlckFnZW50U3R5bGVTaGVldCwgc2l6ZW9mKGZ1bGxzY3Jl
ZW5Vc2VyQWdlbnRTdHlsZVNoZWV0KSkgKyBSZW5kZXJUaGVtZTo6ZGVmYXVsdFRoZW1lKCktPmV4
dHJhRnVsbFNjcmVlblN0eWxlU2hlZXQoKTsKKyAgICAgICAgQ1NTU3R5bGVTaGVldCogZnVsbHNj
cmVlblNoZWV0ID0gcGFyc2VVQVNoZWV0KGZ1bGxzY3JlZW5SdWxlcyk7CisgICAgICAgIGRlZmF1
bHRTdHlsZS0+YWRkUnVsZXNGcm9tU2hlZXQoZnVsbHNjcmVlblNoZWV0LCBzY3JlZW5FdmFsKCkp
OworICAgICAgICBkZWZhdWx0UXVpcmtzU3R5bGUtPmFkZFJ1bGVzRnJvbVNoZWV0KGZ1bGxzY3Jl
ZW5TaGVldCwgc2NyZWVuRXZhbCgpKTsKKyAgICB9CisjZW5kaWYKKwogICAgIGludCBmaXJzdFVB
UnVsZSA9IC0xLCBsYXN0VUFSdWxlID0gLTE7CiAgICAgaW50IGZpcnN0VXNlclJ1bGUgPSAtMSwg
bGFzdFVzZXJSdWxlID0gLTE7CiAgICAgaW50IGZpcnN0QXV0aG9yUnVsZSA9IC0xLCBsYXN0QXV0
aG9yUnVsZSA9IC0xOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL21lZGlhQ29udHJv
bHMuY3NzIGIvU291cmNlL1dlYkNvcmUvY3NzL21lZGlhQ29udHJvbHMuY3NzCmluZGV4IDg4MTQ0
YjQ2ZGZkMzNkZjAzNTU5OTk4YTMyYTUzYjNkZTk3YjQ3ZTkuLjg3NGNiMTMwZDVmMTA5NGQ4ZGI5
MWUyNjNkNDJmMGRkYWU0M2VjYTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9tZWRp
YUNvbnRyb2xzLmNzcworKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvbWVkaWFDb250cm9scy5jc3MK
QEAgLTE3MSwzICsxNzEsMTUgQEAgYXVkaW86Oi13ZWJraXQtbWVkaWEtY29udHJvbHMtdm9sdW1l
LXNsaWRlci1tdXRlLWJ1dHRvbiwgdmlkZW86Oi13ZWJraXQtbWVkaWEtY28KICAgICBib3JkZXI6
IGluaXRpYWw7CiAgICAgY29sb3I6IGluaGVyaXQ7CiB9CisKK2F1ZGlvOjotd2Via2l0LW1lZGlh
LWNvbnRyb2xzLWZ1bGxzY3JlZW4tdm9sdW1lLXNsaWRlciwgdmlkZW86Oi13ZWJraXQtbWVkaWEt
Y29udHJvbHMtZnVsbHNjcmVlbi12b2x1bWUtc2xpZGVyIHsKKyAgICBkaXNwbGF5OiBub25lOwor
fQorCithdWRpbzo6LXdlYmtpdC1tZWRpYS1jb250cm9scy1mdWxsc2NyZWVuLXZvbHVtZS1taW4t
YnV0dG9uLCB2aWRlbzo6LXdlYmtpdC1tZWRpYS1jb250cm9scy1mdWxsc2NyZWVuLXZvbHVtZS1t
aW4tYnV0dG9uIHsKKyAgICBkaXNwbGF5OiBub25lOworfQorCithdWRpbzo6LXdlYmtpdC1tZWRp
YS1jb250cm9scy1mdWxsc2NyZWVuLXZvbHVtZS1tYXgtYnV0dG9uLCB2aWRlbzo6LXdlYmtpdC1t
ZWRpYS1jb250cm9scy1mdWxsc2NyZWVuLXZvbHVtZS1tYXgtYnV0dG9uIHsKKyAgICBkaXNwbGF5
OiBub25lOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVt
ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKaW5kZXgg
MDQ3MTEyNjk1MmNiZjMxYmU3ODJkOWVjYTg5Mjc0NTlmYmI2ZjNhMy4uZDU0OGI2NWI3ODk2N2M1
ZmRiNmEzY2EzNDA3ZTFhNzg5YzAzN2E3MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MTWVkaWFFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRp
YUVsZW1lbnQuY3BwCkBAIC0yNDMzLDYgKzI0MzMsMTkgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50
Ojp1cGRhdGVXaWRnZXQoUGx1Z2luQ3JlYXRpb25PcHRpb24pCiAKICNlbmRpZiAvLyBFTkFCTEUo
UExVR0lOX1BST1hZX0ZPUl9WSURFTykKIAorYm9vbCBIVE1MTWVkaWFFbGVtZW50Ojppc0Z1bGxz
Y3JlZW4oKSBjb25zdAoreworICAgIGlmIChtX2lzRnVsbHNjcmVlbikKKyAgICAgICAgcmV0dXJu
IHRydWU7CisgICAgCisjaWYgRU5BQkxFKEZVTExTQ1JFRU5fQVBJKQorICAgIGlmIChkb2N1bWVu
dCgpLT53ZWJraXRJc0Z1bGxTY3JlZW4oKSAmJiBkb2N1bWVudCgpLT53ZWJraXRDdXJyZW50RnVs
bFNjcmVlbkVsZW1lbnQoKSA9PSB0aGlzKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyNlbmRpZgor
ICAgIAorICAgIHJldHVybiBmYWxzZTsKK30KKwogdm9pZCBIVE1MTWVkaWFFbGVtZW50OjplbnRl
ckZ1bGxzY3JlZW4oKQogewogICAgIExPRyhNZWRpYSwgIkhUTUxNZWRpYUVsZW1lbnQ6OmVudGVy
RnVsbHNjcmVlbiIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFF
bGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaAppbmRleCBm
NWQ3YzZhMDc0NjBmODIzYWU1NmQyMmVlYTM0YzA4YWNkZTEyMmE4Li5lYTk1OGZhYTQzZmQ3N2Vi
MjU5OGQxODVlNmRiNjZmYzI5NjE0MThlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxNZWRpYUVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVs
ZW1lbnQuaApAQCAtMTY0LDcgKzE2NCw3IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgaGFzU2luZ2xl
U2VjdXJpdHlPcmlnaW4oKSBjb25zdCB7IHJldHVybiAhbV9wbGF5ZXIgfHwgbV9wbGF5ZXItPmhh
c1NpbmdsZVNlY3VyaXR5T3JpZ2luKCk7IH0KICAgICAKLSAgICBib29sIGlzRnVsbHNjcmVlbigp
IGNvbnN0IHsgcmV0dXJuIG1faXNGdWxsc2NyZWVuOyB9CisgICAgYm9vbCBpc0Z1bGxzY3JlZW4o
KSBjb25zdDsKICAgICB2b2lkIGVudGVyRnVsbHNjcmVlbigpOwogICAgIHZvaWQgZXhpdEZ1bGxz
Y3JlZW4oKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFD
b250cm9scy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xzLmNw
cAppbmRleCBhOTNmYTI4MjI4ZDYzMTg3N2JiMjgwNTk0YjlkYTkzOTEzOTlkNjk0Li4zNGM4ZThl
NjQ5ZDAxMDFmN2ViYWVjYzI5N2ZiZTg5YjY2NjZkMTIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xzLmNwcApAQCAtODEsNiArODEsOSBAQCBQYXNzUmVmUHRy
PE1lZGlhQ29udHJvbFNoYWRvd1Jvb3RFbGVtZW50PiBNZWRpYUNvbnRyb2xzOjpjcmVhdGUoSFRN
TE1lZGlhRWxlbWVudAogICAgIEFTU0VSVCghbV92b2x1bWVTbGlkZXJDb250YWluZXIpOwogICAg
IEFTU0VSVCghbV92b2x1bWVTbGlkZXIpOwogICAgIEFTU0VSVCghbV92b2x1bWVTbGlkZXJNdXRl
QnV0dG9uKTsKKyAgICBBU1NFUlQoIW1fZnVsbFNjcmVlbk1pblZvbHVtZUJ1dHRvbik7CisgICAg
QVNTRVJUKCFtX2Z1bGxTY3JlZW5NYXhWb2x1bWVCdXR0b24pOworICAgIEFTU0VSVCghbV9mdWxs
U2NyZWVuVm9sdW1lU2xpZGVyKTsKIAogICAgIFJlZlB0cjxNZWRpYUNvbnRyb2xTaGFkb3dSb290
RWxlbWVudD4gY29udHJvbHMgPSBNZWRpYUNvbnRyb2xTaGFkb3dSb290RWxlbWVudDo6Y3JlYXRl
KG1lZGlhRWxlbWVudCk7CiAKQEAgLTEzNSw3ICsxMzgsMTYgQEAgUGFzc1JlZlB0cjxNZWRpYUNv
bnRyb2xTaGFkb3dSb290RWxlbWVudD4gTWVkaWFDb250cm9sczo6Y3JlYXRlKEhUTUxNZWRpYUVs
ZW1lbnQKICAgICBtX3ZvbHVtZVNsaWRlck11dGVCdXR0b24tPmF0dGFjaFRvUGFyZW50KG1fdm9s
dW1lU2xpZGVyQ29udGFpbmVyLmdldCgpKTsKIAogICAgIG1fdm9sdW1lU2xpZGVyQ29udGFpbmVy
LT5hdHRhY2hUb1BhcmVudChtX3BhbmVsLmdldCgpKTsKLQorICAgIAorICAgIG1fZnVsbFNjcmVl
bk1pblZvbHVtZUJ1dHRvbiA9IE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5Wb2x1bWVNaW5CdXR0b25F
bGVtZW50OjpjcmVhdGUobWVkaWFFbGVtZW50KTsKKyAgICBtX2Z1bGxTY3JlZW5NaW5Wb2x1bWVC
dXR0b24tPmF0dGFjaFRvUGFyZW50KG1fcGFuZWwuZ2V0KCkpOworICAgIAorICAgIG1fZnVsbFNj
cmVlblZvbHVtZVNsaWRlciA9IE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5Wb2x1bWVTbGlkZXJFbGVt
ZW50OjpjcmVhdGUobWVkaWFFbGVtZW50KTsKKyAgICBtX2Z1bGxTY3JlZW5Wb2x1bWVTbGlkZXIt
PmF0dGFjaFRvUGFyZW50KG1fcGFuZWwuZ2V0KCkpOworICAgIAorICAgIG1fZnVsbFNjcmVlbk1h
eFZvbHVtZUJ1dHRvbiA9IE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5Wb2x1bWVNYXhCdXR0b25FbGVt
ZW50OjpjcmVhdGUobWVkaWFFbGVtZW50KTsKKyAgICBtX2Z1bGxTY3JlZW5NYXhWb2x1bWVCdXR0
b24tPmF0dGFjaFRvUGFyZW50KG1fcGFuZWwuZ2V0KCkpOworICAgIAogICAgIG1fcGFuZWwtPmF0
dGFjaFRvUGFyZW50KGNvbnRyb2xzLmdldCgpKTsKICAgICByZXR1cm4gY29udHJvbHMucmVsZWFz
ZSgpOwogfQpAQCAtMjE2LDYgKzIyOCwxMiBAQCB2b2lkIE1lZGlhQ29udHJvbHM6OnVwZGF0ZVN0
eWxlKCkKICAgICAgICAgbV92b2x1bWVTbGlkZXJNdXRlQnV0dG9uLT51cGRhdGVTdHlsZSgpOwog
ICAgIGlmIChtX3ZvbHVtZVNsaWRlcikKICAgICAgICAgbV92b2x1bWVTbGlkZXItPnVwZGF0ZVN0
eWxlKCk7CisgICAgaWYgKG1fZnVsbFNjcmVlbk1pblZvbHVtZUJ1dHRvbikKKyAgICAgICAgbV9m
dWxsU2NyZWVuTWluVm9sdW1lQnV0dG9uLT51cGRhdGVTdHlsZSgpOworICAgIGlmIChtX2Z1bGxT
Y3JlZW5Wb2x1bWVTbGlkZXIpCisgICAgICAgIG1fZnVsbFNjcmVlblZvbHVtZVNsaWRlci0+dXBk
YXRlU3R5bGUoKTsKKyAgICBpZiAobV9mdWxsU2NyZWVuTWF4Vm9sdW1lQnV0dG9uKQorICAgICAg
ICBtX2Z1bGxTY3JlZW5NYXhWb2x1bWVCdXR0b24tPnVwZGF0ZVN0eWxlKCk7CiB9CiAKIHZvaWQg
TWVkaWFDb250cm9sczo6ZGVzdHJveSgpCkBAIC0yNTgsNiArMjc2LDkgQEAgdm9pZCBNZWRpYUNv
bnRyb2xzOjp1cGRhdGUoKQogICAgICAgICAgICAgbV92b2x1bWVTbGlkZXJNdXRlQnV0dG9uID0g
MDsKICAgICAgICAgICAgIG1fY29udHJvbHNTaGFkb3dSb290ID0gMDsKICAgICAgICAgICAgIG1f
dG9nZ2xlQ2xvc2VkQ2FwdGlvbnNCdXR0b24gPSAwOworICAgICAgICAgICAgbV9mdWxsU2NyZWVu
TWluVm9sdW1lQnV0dG9uID0gMDsKKyAgICAgICAgICAgIG1fZnVsbFNjcmVlblZvbHVtZVNsaWRl
ciA9IDA7CisgICAgICAgICAgICBtX2Z1bGxTY3JlZW5NYXhWb2x1bWVCdXR0b24gPSAwOwogICAg
ICAgICB9CiAgICAgICAgIG1fb3BhY2l0eUFuaW1hdGlvblRvID0gMS4wZjsKICAgICAgICAgbV9v
cGFjaXR5QW5pbWF0aW9uVGltZXIuc3RvcCgpOwpAQCAtMzA5LDcgKzMzMCwxMiBAQCB2b2lkIE1l
ZGlhQ29udHJvbHM6OnVwZGF0ZSgpCiAgICAgICAgIG1fdm9sdW1lU2xpZGVyLT51cGRhdGUoKTsK
ICAgICBpZiAobV92b2x1bWVTbGlkZXJNdXRlQnV0dG9uKQogICAgICAgICBtX3ZvbHVtZVNsaWRl
ck11dGVCdXR0b24tPnVwZGF0ZSgpOwotCisgICAgaWYgKG1fZnVsbFNjcmVlbk1pblZvbHVtZUJ1
dHRvbikKKyAgICAgICAgbV9mdWxsU2NyZWVuTWluVm9sdW1lQnV0dG9uLT51cGRhdGUoKTsKKyAg
ICBpZiAobV9mdWxsU2NyZWVuVm9sdW1lU2xpZGVyKQorICAgICAgICBtX2Z1bGxTY3JlZW5Wb2x1
bWVTbGlkZXItPnVwZGF0ZSgpOworICAgIGlmIChtX2Z1bGxTY3JlZW5NYXhWb2x1bWVCdXR0b24p
CisgICAgICAgIG1fZnVsbFNjcmVlbk1heFZvbHVtZUJ1dHRvbi0+dXBkYXRlKCk7CiAgICAgdXBk
YXRlVGltZURpc3BsYXkoKTsKICAgICB1cGRhdGVDb250cm9sVmlzaWJpbGl0eSgpOwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFDb250cm9scy5oIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFDb250cm9scy5oCmluZGV4IDMyMjMyNmQ3NzNm
ODVmMmQ3MWYzMTg5Nzg4Y2E5ZDA2Yjg2NzlhM2MuLmViZjdlZWQzMmVhZDJjNjE5OTZlMDkxNTFj
ZTliMjViMTU5MDNkZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01l
ZGlhQ29udHJvbHMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRy
b2xzLmgKQEAgLTUzLDYgKzUzLDkgQEAgY2xhc3MgTWVkaWFDb250cm9sU3RhdHVzRGlzcGxheUVs
ZW1lbnQ7CiBjbGFzcyBNZWRpYUNvbnRyb2xUaW1lbGluZUNvbnRhaW5lckVsZW1lbnQ7CiBjbGFz
cyBNZWRpYUNvbnRyb2xWb2x1bWVTbGlkZXJDb250YWluZXJFbGVtZW50OwogY2xhc3MgTWVkaWFD
b250cm9sRWxlbWVudDsKK2NsYXNzIE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5Wb2x1bWVNaW5CdXR0
b25FbGVtZW50OworY2xhc3MgTWVkaWFDb250cm9sRnVsbHNjcmVlblZvbHVtZVNsaWRlckVsZW1l
bnQ7CitjbGFzcyBNZWRpYUNvbnRyb2xGdWxsc2NyZWVuVm9sdW1lTWF4QnV0dG9uRWxlbWVudDsK
IGNsYXNzIE1lZGlhUGxheWVyOwogCiBjbGFzcyBSZW5kZXJCb3g7CkBAIC0xMTAsNiArMTEzLDkg
QEAgcHJpdmF0ZToKICAgICBSZWZQdHI8TWVkaWFDb250cm9sVGltZURpc3BsYXlFbGVtZW50PiBt
X2N1cnJlbnRUaW1lRGlzcGxheTsKICAgICBSZWZQdHI8TWVkaWFDb250cm9sVGltZURpc3BsYXlF
bGVtZW50PiBtX3RpbWVSZW1haW5pbmdEaXNwbGF5OwogICAgIFJlZlB0cjxNZWRpYUNvbnRyb2xT
dGF0dXNEaXNwbGF5RWxlbWVudD4gbV9zdGF0dXNEaXNwbGF5OworICAgIFJlZlB0cjxNZWRpYUNv
bnRyb2xGdWxsc2NyZWVuVm9sdW1lTWluQnV0dG9uRWxlbWVudD4gbV9mdWxsU2NyZWVuTWluVm9s
dW1lQnV0dG9uOworICAgIFJlZlB0cjxNZWRpYUNvbnRyb2xGdWxsc2NyZWVuVm9sdW1lU2xpZGVy
RWxlbWVudD4gbV9mdWxsU2NyZWVuVm9sdW1lU2xpZGVyOworICAgIFJlZlB0cjxNZWRpYUNvbnRy
b2xGdWxsc2NyZWVuVm9sdW1lTWF4QnV0dG9uRWxlbWVudD4gbV9mdWxsU2NyZWVuTWF4Vm9sdW1l
QnV0dG9uOwogCiAgICAgSFRNTE1lZGlhRWxlbWVudCogbV9tZWRpYUVsZW1lbnQ7CiAgICAgVGlt
ZXI8TWVkaWFDb250cm9scz4gbV9vcGFjaXR5QW5pbWF0aW9uVGltZXI7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvTWVkaWFDb250cm9sRWxlbWVudHMuY3BwIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL01lZGlhQ29udHJvbEVsZW1lbnRzLmNwcAppbmRleCBlYjM1YjNk
YzFhYzg4NmJhMzJlMjEwOWE4NmIyNGJiNmRhMTViMjMxLi5iZTY0OTQ3ZmNkOGYzYTg1ZjYwNGI3
ZWY4OTc5NWMyNjNlNTMyNzE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
TWVkaWFDb250cm9sRWxlbWVudHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9N
ZWRpYUNvbnRyb2xFbGVtZW50cy5jcHAKQEAgLTkwOSw2ICs5MDksMjkgQEAgY29uc3QgQXRvbWlj
U3RyaW5nJiBNZWRpYUNvbnRyb2xWb2x1bWVTbGlkZXJFbGVtZW50OjpzaGFkb3dQc2V1ZG9JZCgp
IGNvbnN0CiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAoraW5saW5lIE1lZGlh
Q29udHJvbEZ1bGxzY3JlZW5Wb2x1bWVTbGlkZXJFbGVtZW50OjpNZWRpYUNvbnRyb2xGdWxsc2Ny
ZWVuVm9sdW1lU2xpZGVyRWxlbWVudChIVE1MTWVkaWFFbGVtZW50KiBtZWRpYUVsZW1lbnQpCis6
IE1lZGlhQ29udHJvbFZvbHVtZVNsaWRlckVsZW1lbnQobWVkaWFFbGVtZW50KQoreworfQorCitQ
YXNzUmVmUHRyPE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5Wb2x1bWVTbGlkZXJFbGVtZW50PiBNZWRp
YUNvbnRyb2xGdWxsc2NyZWVuVm9sdW1lU2xpZGVyRWxlbWVudDo6Y3JlYXRlKEhUTUxNZWRpYUVs
ZW1lbnQqIG1lZGlhRWxlbWVudCkKK3sKKyAgICBSZWZQdHI8TWVkaWFDb250cm9sRnVsbHNjcmVl
blZvbHVtZVNsaWRlckVsZW1lbnQ+IHNsaWRlciA9IGFkb3B0UmVmKG5ldyBNZWRpYUNvbnRyb2xG
dWxsc2NyZWVuVm9sdW1lU2xpZGVyRWxlbWVudChtZWRpYUVsZW1lbnQpKTsKKyAgICBzbGlkZXIt
PnNldFR5cGUoInJhbmdlIik7CisgICAgc2xpZGVyLT5zZXRBdHRyaWJ1dGUocHJlY2lzaW9uQXR0
ciwgImZsb2F0Iik7CisgICAgc2xpZGVyLT5zZXRBdHRyaWJ1dGUobWF4QXR0ciwgIjEiKTsKKyAg
ICBzbGlkZXItPnNldEF0dHJpYnV0ZSh2YWx1ZUF0dHIsIFN0cmluZzo6bnVtYmVyKG1lZGlhRWxl
bWVudC0+dm9sdW1lKCkpKTsKKyAgICByZXR1cm4gc2xpZGVyLnJlbGVhc2UoKTsKK30KKworY29u
c3QgQXRvbWljU3RyaW5nJiBNZWRpYUNvbnRyb2xGdWxsc2NyZWVuVm9sdW1lU2xpZGVyRWxlbWVu
dDo6c2hhZG93UHNldWRvSWQoKSBjb25zdAoreworICAgIERFRklORV9TVEFUSUNfTE9DQUwoQXRv
bWljU3RyaW5nLCBpZCwgKCItd2Via2l0LW1lZGlhLWNvbnRyb2xzLWZ1bGxzY3JlZW4tdm9sdW1l
LXNsaWRlciIpKTsKKyAgICByZXR1cm4gaWQ7Cit9CisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0KKwogaW5saW5lIE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5CdXR0b25FbGVtZW50OjpN
ZWRpYUNvbnRyb2xGdWxsc2NyZWVuQnV0dG9uRWxlbWVudChIVE1MTWVkaWFFbGVtZW50KiBtZWRp
YUVsZW1lbnQpCiAgICAgOiBNZWRpYUNvbnRyb2xJbnB1dEVsZW1lbnQobWVkaWFFbGVtZW50LCBN
ZWRpYUZ1bGxzY3JlZW5CdXR0b24pCiB7CkBAIC05NTEsNiArOTc0LDY2IEBAIGNvbnN0IEF0b21p
Y1N0cmluZyYgTWVkaWFDb250cm9sRnVsbHNjcmVlbkJ1dHRvbkVsZW1lbnQ6OnNoYWRvd1BzZXVk
b0lkKCkgY29uc3QKIAogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCitpbmxpbmUg
TWVkaWFDb250cm9sRnVsbHNjcmVlblZvbHVtZU1pbkJ1dHRvbkVsZW1lbnQ6Ok1lZGlhQ29udHJv
bEZ1bGxzY3JlZW5Wb2x1bWVNaW5CdXR0b25FbGVtZW50KEhUTUxNZWRpYUVsZW1lbnQqIG1lZGlh
RWxlbWVudCkKKzogTWVkaWFDb250cm9sSW5wdXRFbGVtZW50KG1lZGlhRWxlbWVudCwgTWVkaWFV
bk11dGVCdXR0b24pCit7Cit9CisKK1Bhc3NSZWZQdHI8TWVkaWFDb250cm9sRnVsbHNjcmVlblZv
bHVtZU1pbkJ1dHRvbkVsZW1lbnQ+IE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5Wb2x1bWVNaW5CdXR0
b25FbGVtZW50OjpjcmVhdGUoSFRNTE1lZGlhRWxlbWVudCogbWVkaWFFbGVtZW50KQoreworICAg
IFJlZlB0cjxNZWRpYUNvbnRyb2xGdWxsc2NyZWVuVm9sdW1lTWluQnV0dG9uRWxlbWVudD4gYnV0
dG9uID0gYWRvcHRSZWYobmV3IE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5Wb2x1bWVNaW5CdXR0b25F
bGVtZW50KG1lZGlhRWxlbWVudCkpOworICAgIGJ1dHRvbi0+c2V0VHlwZSgiYnV0dG9uIik7Cisg
ICAgcmV0dXJuIGJ1dHRvbi5yZWxlYXNlKCk7Cit9CisKK3ZvaWQgTWVkaWFDb250cm9sRnVsbHNj
cmVlblZvbHVtZU1pbkJ1dHRvbkVsZW1lbnQ6OmRlZmF1bHRFdmVudEhhbmRsZXIoRXZlbnQqIGV2
ZW50KQoreworICAgIGlmIChldmVudC0+dHlwZSgpID09IGV2ZW50TmFtZXMoKS5jbGlja0V2ZW50
KSB7CisgICAgICAgIEV4Y2VwdGlvbkNvZGUgY29kZSA9IDA7CisgICAgICAgIG1lZGlhRWxlbWVu
dCgpLT5zZXRWb2x1bWUoMCwgY29kZSk7CisgICAgICAgIGV2ZW50LT5zZXREZWZhdWx0SGFuZGxl
ZCgpOworICAgIH0KKyAgICBIVE1MSW5wdXRFbGVtZW50OjpkZWZhdWx0RXZlbnRIYW5kbGVyKGV2
ZW50KTsKK30KKworY29uc3QgQXRvbWljU3RyaW5nJiBNZWRpYUNvbnRyb2xGdWxsc2NyZWVuVm9s
dW1lTWluQnV0dG9uRWxlbWVudDo6c2hhZG93UHNldWRvSWQoKSBjb25zdAoreworICAgIERFRklO
RV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCBpZCwgKCItd2Via2l0LW1lZGlhLWNvbnRyb2xz
LWZ1bGxzY3JlZW4tdm9sdW1lLW1pbi1idXR0b24iKSk7CisgICAgcmV0dXJuIGlkOworfQorCisv
LyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK2lubGluZSBNZWRpYUNvbnRyb2xGdWxs
c2NyZWVuVm9sdW1lTWF4QnV0dG9uRWxlbWVudDo6TWVkaWFDb250cm9sRnVsbHNjcmVlblZvbHVt
ZU1heEJ1dHRvbkVsZW1lbnQoSFRNTE1lZGlhRWxlbWVudCogbWVkaWFFbGVtZW50KQorOiBNZWRp
YUNvbnRyb2xJbnB1dEVsZW1lbnQobWVkaWFFbGVtZW50LCBNZWRpYU11dGVCdXR0b24pCit7Cit9
CisKK1Bhc3NSZWZQdHI8TWVkaWFDb250cm9sRnVsbHNjcmVlblZvbHVtZU1heEJ1dHRvbkVsZW1l
bnQ+IE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5Wb2x1bWVNYXhCdXR0b25FbGVtZW50OjpjcmVhdGUo
SFRNTE1lZGlhRWxlbWVudCogbWVkaWFFbGVtZW50KQoreworICAgIFJlZlB0cjxNZWRpYUNvbnRy
b2xGdWxsc2NyZWVuVm9sdW1lTWF4QnV0dG9uRWxlbWVudD4gYnV0dG9uID0gYWRvcHRSZWYobmV3
IE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5Wb2x1bWVNYXhCdXR0b25FbGVtZW50KG1lZGlhRWxlbWVu
dCkpOworICAgIGJ1dHRvbi0+c2V0VHlwZSgiYnV0dG9uIik7CisgICAgcmV0dXJuIGJ1dHRvbi5y
ZWxlYXNlKCk7Cit9CisKK3ZvaWQgTWVkaWFDb250cm9sRnVsbHNjcmVlblZvbHVtZU1heEJ1dHRv
bkVsZW1lbnQ6OmRlZmF1bHRFdmVudEhhbmRsZXIoRXZlbnQqIGV2ZW50KQoreworICAgIGlmIChl
dmVudC0+dHlwZSgpID09IGV2ZW50TmFtZXMoKS5jbGlja0V2ZW50KSB7CisgICAgICAgIEV4Y2Vw
dGlvbkNvZGUgY29kZSA9IDA7CisgICAgICAgIG1lZGlhRWxlbWVudCgpLT5zZXRWb2x1bWUoMSwg
Y29kZSk7CisgICAgICAgIGV2ZW50LT5zZXREZWZhdWx0SGFuZGxlZCgpOworICAgIH0KKyAgICBI
VE1MSW5wdXRFbGVtZW50OjpkZWZhdWx0RXZlbnRIYW5kbGVyKGV2ZW50KTsKK30KKworY29uc3Qg
QXRvbWljU3RyaW5nJiBNZWRpYUNvbnRyb2xGdWxsc2NyZWVuVm9sdW1lTWF4QnV0dG9uRWxlbWVu
dDo6c2hhZG93UHNldWRvSWQoKSBjb25zdAoreworICAgIERFRklORV9TVEFUSUNfTE9DQUwoQXRv
bWljU3RyaW5nLCBpZCwgKCItd2Via2l0LW1lZGlhLWNvbnRyb2xzLWZ1bGxzY3JlZW4tdm9sdW1l
LW1heC1idXR0b24iKSk7CisgICAgcmV0dXJuIGlkOworfQorCisvLyAtLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tCisKIGNsYXNzIFJlbmRlck1lZGlhQ29udHJvbFRpbWVEaXNwbGF5IDogcHVi
bGljIFJlbmRlckZsZXhpYmxlQm94IHsKIHB1YmxpYzoKICAgICBSZW5kZXJNZWRpYUNvbnRyb2xU
aW1lRGlzcGxheShOb2RlKik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
TWVkaWFDb250cm9sRWxlbWVudHMuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9NZWRpYUNv
bnRyb2xFbGVtZW50cy5oCmluZGV4IDUxYzYxNDk3NGYxM2FhYTFhYWI5Yzg1ZTA0MzZmOTAyNzZi
ODFlMTUuLjc3MTE2ZTM3N2Y1YzMxY2VjZjBhODYxNjM5M2Q0MGM2NTliYTU2MmYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9NZWRpYUNvbnRyb2xFbGVtZW50cy5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9NZWRpYUNvbnRyb2xFbGVtZW50cy5oCkBAIC0zNzIs
OSArMzcyLDEwIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZGVmYXVsdEV2ZW50SGFuZGxl
cihFdmVudCopOwogICAgIHZvaWQgdXBkYXRlKCk7CiAKLXByaXZhdGU6Citwcm90ZWN0ZWQ6CiAg
ICAgTWVkaWFDb250cm9sVm9sdW1lU2xpZGVyRWxlbWVudChIVE1MTWVkaWFFbGVtZW50Kik7CiAK
K3ByaXZhdGU6CiAgICAgdmlydHVhbCBjb25zdCBBdG9taWNTdHJpbmcmIHNoYWRvd1BzZXVkb0lk
KCkgY29uc3Q7CiB9OwogCkBAIC0zOTQsNiArMzk1LDQ2IEBAIHByaXZhdGU6CiAKIC8vIC0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAorY2xhc3MgTWVkaWFDb250cm9sRnVsbHNjcmVlblZv
bHVtZVNsaWRlckVsZW1lbnQgOiBwdWJsaWMgTWVkaWFDb250cm9sVm9sdW1lU2xpZGVyRWxlbWVu
dCB7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NSZWZQdHI8TWVkaWFDb250cm9sRnVsbHNjcmVl
blZvbHVtZVNsaWRlckVsZW1lbnQ+IGNyZWF0ZShIVE1MTWVkaWFFbGVtZW50Kik7CisgICAgCitw
cml2YXRlOgorICAgIE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5Wb2x1bWVTbGlkZXJFbGVtZW50KEhU
TUxNZWRpYUVsZW1lbnQqKTsKKyAgICAKKyAgICB2aXJ0dWFsIGNvbnN0IEF0b21pY1N0cmluZyYg
c2hhZG93UHNldWRvSWQoKSBjb25zdDsKK307CisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0KKworY2xhc3MgTWVkaWFDb250cm9sRnVsbHNjcmVlblZvbHVtZU1pbkJ1dHRvbkVsZW1l
bnQgOiBwdWJsaWMgTWVkaWFDb250cm9sSW5wdXRFbGVtZW50IHsKK3B1YmxpYzoKKyAgICBzdGF0
aWMgUGFzc1JlZlB0cjxNZWRpYUNvbnRyb2xGdWxsc2NyZWVuVm9sdW1lTWluQnV0dG9uRWxlbWVu
dD4gY3JlYXRlKEhUTUxNZWRpYUVsZW1lbnQqKTsKKyAgICAKKyAgICB2aXJ0dWFsIHZvaWQgZGVm
YXVsdEV2ZW50SGFuZGxlcihFdmVudCopOworICAgIAorcHJpdmF0ZToKKyAgICBNZWRpYUNvbnRy
b2xGdWxsc2NyZWVuVm9sdW1lTWluQnV0dG9uRWxlbWVudChIVE1MTWVkaWFFbGVtZW50Kik7Cisg
ICAgCisgICAgdmlydHVhbCBjb25zdCBBdG9taWNTdHJpbmcmIHNoYWRvd1BzZXVkb0lkKCkgY29u
c3Q7Cit9OworCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK2NsYXNzIE1lZGlh
Q29udHJvbEZ1bGxzY3JlZW5Wb2x1bWVNYXhCdXR0b25FbGVtZW50IDogcHVibGljIE1lZGlhQ29u
dHJvbElucHV0RWxlbWVudCB7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NSZWZQdHI8TWVkaWFD
b250cm9sRnVsbHNjcmVlblZvbHVtZU1heEJ1dHRvbkVsZW1lbnQ+IGNyZWF0ZShIVE1MTWVkaWFF
bGVtZW50Kik7CisgICAgCisgICAgdmlydHVhbCB2b2lkIGRlZmF1bHRFdmVudEhhbmRsZXIoRXZl
bnQqKTsKKyAgICAKK3ByaXZhdGU6CisgICAgTWVkaWFDb250cm9sRnVsbHNjcmVlblZvbHVtZU1h
eEJ1dHRvbkVsZW1lbnQoSFRNTE1lZGlhRWxlbWVudCopOworICAgIAorICAgIHZpcnR1YWwgY29u
c3QgQXRvbWljU3RyaW5nJiBzaGFkb3dQc2V1ZG9JZCgpIGNvbnN0OworfTsKKworLy8gLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCiBjbGFzcyBNZWRpYUNvbnRyb2xUaW1lRGlzcGxheUVs
ZW1lbnQgOiBwdWJsaWMgTWVkaWFDb250cm9sRWxlbWVudCB7CiBwdWJsaWM6CiAgICAgdm9pZCBz
ZXRDdXJyZW50VmFsdWUoZmxvYXQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlclRoZW1lLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWUu
aAppbmRleCAzNWYyNTZjOTZhMzU2ZGZhNzZlMGRhNzc2ODk1ZjEyN2FhZWE4MDY0Li4zY2NlNGMx
YWZiM2U4YWU0MGI0M2Y2MWZmMGRhZWVkODVjZTcwMGU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyVGhlbWUuaApAQCAtODgsNiArODgsOSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBT
dHJpbmcgZXh0cmFRdWlya3NTdHlsZVNoZWV0KCkgeyByZXR1cm4gU3RyaW5nKCk7IH0KICNpZiBF
TkFCTEUoVklERU8pCiAgICAgdmlydHVhbCBTdHJpbmcgZXh0cmFNZWRpYUNvbnRyb2xzU3R5bGVT
aGVldCgpIHsgcmV0dXJuIFN0cmluZygpOyB9OworI2lmIEVOQUJMRShGVUxMU0NSRUVOX0FQSSkK
KyAgICB2aXJ0dWFsIFN0cmluZyBleHRyYUZ1bGxTY3JlZW5TdHlsZVNoZWV0KCkgeyByZXR1cm4g
U3RyaW5nKCk7IH07CisjZW5kaWYKICNlbmRpZgogCiAgICAgLy8gQSBtZXRob2QgdG8gb2J0YWlu
IHRoZSBiYXNlbGluZSBwb3NpdGlvbiBmb3IgYSAibGVhZiIgY29udHJvbC4gIFRoaXMgd2lsbCBv
bmx5IGJlIHVzZWQgaWYgYSBiYXNlbGluZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlclRoZW1lTWFjLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
VGhlbWVNYWMuaAppbmRleCBkOTUxZmY2MzA4OWU1ZmQ3MDEwZTMxYjFmOTE5NjcyMzRhZmQ3NDY2
Li5kNjQ5NDRiODE0MDAxMTVjMGVhYjgyOGZhMWQwYTdiODNkMWEwZWY0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVNYWMuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVNYWMuaApAQCAtMTYyLDYgKzE2Miw5IEBAIHByb3Rl
Y3RlZDoKIAogICAgIC8vIE1lZGlhIGNvbnRyb2xzCiAgICAgdmlydHVhbCBTdHJpbmcgZXh0cmFN
ZWRpYUNvbnRyb2xzU3R5bGVTaGVldCgpOworI2lmIEVOQUJMRShGVUxMU0NSRUVOX0FQSSkKKyAg
ICB2aXJ0dWFsIFN0cmluZyBleHRyYUZ1bGxTY3JlZW5TdHlsZVNoZWV0KCk7CisjZW5kaWYKIAog
ICAgIHZpcnR1YWwgYm9vbCBzaG91bGRSZW5kZXJNZWRpYUNvbnRyb2xQYXJ0KENvbnRyb2xQYXJ0
LCBFbGVtZW50Kik7CiAgICAgdmlydHVhbCBib29sIHVzZXNNZWRpYUNvbnRyb2xTdGF0dXNEaXNw
bGF5KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVN
YWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVNYWMubW0KaW5kZXgg
ZjU2MTFkY2RkNzQ2ODYzNGNlOTI1MDlkNTA1ZGQ4NGU2M2U4MmUwOS4uNzViOTJkMTZjYTJiZWJm
MjQzMTM0Nzc0ZDFmYmQzNTFlNTg5OGQ2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlclRoZW1lTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJUaGVtZU1hYy5tbQpAQCAtMTk2MSwyMCArMTk2MSw0NSBAQCBTdHJpbmcgUmVuZGVyVGhl
bWVNYWM6OmV4dHJhTWVkaWFDb250cm9sc1N0eWxlU2hlZXQoKQogI2VuZGlmCiB9CiAKKyNpZiBF
TkFCTEUoRlVMTFNDUkVFTl9BUEkpCitTdHJpbmcgUmVuZGVyVGhlbWVNYWM6OmV4dHJhRnVsbFNj
cmVlblN0eWxlU2hlZXQoKQoreworI2lmIFBMQVRGT1JNKE1BQykKKyAgICBpZiAobWVkaWFDb250
cm9sbGVyVGhlbWUoKSA9PSBNZWRpYUNvbnRyb2xsZXJUaGVtZVF1aWNrVGltZSkKKyAgICAgICAg
cmV0dXJuIFN0cmluZyhmdWxsc2NyZWVuUXVpY2tUaW1lVXNlckFnZW50U3R5bGVTaGVldCwgc2l6
ZW9mKGZ1bGxzY3JlZW5RdWlja1RpbWVVc2VyQWdlbnRTdHlsZVNoZWV0KSk7CisgICAgCisgICAg
cmV0dXJuIFN0cmluZygpOworI2Vsc2UKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICBy
ZXR1cm4gU3RyaW5nKCk7CisjZW5kaWYKK30KKyNlbmRpZgorCiBib29sIFJlbmRlclRoZW1lTWFj
OjpzaG91bGRSZW5kZXJNZWRpYUNvbnRyb2xQYXJ0KENvbnRyb2xQYXJ0IHBhcnQsIEVsZW1lbnQq
IGVsZW1lbnQpCiB7CisgICAgSFRNTE1lZGlhRWxlbWVudCogbWVkaWFFbGVtZW50ID0gc3RhdGlj
X2Nhc3Q8SFRNTE1lZGlhRWxlbWVudCo+KGVsZW1lbnQpOwogICAgIHN3aXRjaCAocGFydCkgewog
ICAgIGNhc2UgTWVkaWFWb2x1bWVTbGlkZXJDb250YWluZXJQYXJ0OgogICAgIGNhc2UgTWVkaWFW
b2x1bWVTbGlkZXJQYXJ0OgogICAgIGNhc2UgTWVkaWFWb2x1bWVTbGlkZXJNdXRlQnV0dG9uUGFy
dDoKICAgICBjYXNlIE1lZGlhVm9sdW1lU2xpZGVyVGh1bWJQYXJ0OiB7Ci0gICAgICAgIEhUTUxN
ZWRpYUVsZW1lbnQqIG1lZGlhRWxlbWVudCA9IHN0YXRpY19jYXN0PEhUTUxNZWRpYUVsZW1lbnQq
PihlbGVtZW50KTsKICAgICAgICAgcmV0dXJuIG1lZGlhQ29udHJvbGxlclRoZW1lKCkgPT0gTWVk
aWFDb250cm9sbGVyVGhlbWVRdWlja1RpbWUgJiYgbWVkaWFFbGVtZW50LT5oYXNBdWRpbygpOwog
ICAgIH0KICAgICBjYXNlIE1lZGlhVG9nZ2xlQ2xvc2VkQ2FwdGlvbnNCdXR0b25QYXJ0OgogICAg
ICAgICAvLyBXZSByZWx5IG9uIFFUS2l0IHRvIHJlbmRlciBjYXB0aW9ucyBzbyBkb24ndCBlbmFi
bGUgdGhlIGJ1dHRvbiB1bmxlc3MgaXQgd2lsbCBiZSBhYmxlIHRvIGRvIHNvLgogICAgICAgICBp
ZiAoIWVsZW1lbnQtPmhhc1RhZ05hbWUodmlkZW9UYWcpKQogICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgICAgICBicmVhazsKKyAgICBjYXNlIE1lZGlhUmV3aW5kQnV0dG9uUGFydDoKKyAg
ICAgICAgcmV0dXJuIG1lZGlhRWxlbWVudC0+aXNGdWxsc2NyZWVuKCkKKyAgICAgICAgICAgICYm
IChtZWRpYUVsZW1lbnQtPm1vdmllTG9hZFR5cGUoKSA9PSBNZWRpYVBsYXllcjo6TGl2ZVN0cmVh
bSAKKyAgICAgICAgICAgIHx8IG1lZGlhRWxlbWVudC0+bW92aWVMb2FkVHlwZSgpID09IE1lZGlh
UGxheWVyOjpTdG9yZWRTdHJlYW0pOworICAgIGNhc2UgTWVkaWFTZWVrRm9yd2FyZEJ1dHRvblBh
cnQ6CisgICAgY2FzZSBNZWRpYVNlZWtCYWNrQnV0dG9uUGFydDoKKyAgICAgICAgcmV0dXJuIG1l
ZGlhRWxlbWVudC0+aXNGdWxsc2NyZWVuKCkgCisgICAgICAgICAgICAmJiBtZWRpYUVsZW1lbnQt
Pm1vdmllTG9hZFR5cGUoKSAhPSBNZWRpYVBsYXllcjo6U3RvcmVkU3RyZWFtIAorICAgICAgICAg
ICAgJiYgbWVkaWFFbGVtZW50LT5tb3ZpZUxvYWRUeXBlKCkgIT0gTWVkaWFQbGF5ZXI6OkxpdmVT
dHJlYW07CiAgICAgZGVmYXVsdDoKICAgICAgICAgYnJlYWs7CiAgICAgfQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>87017</attachid>
            <date>2011-03-26 00:30:17 -0700</date>
            <delta_ts>2011-03-26 19:49:54 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-56851-20110326003016.patch</filename>
            <type>text/plain</type>
            <size>29971</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODIwMjUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAxNjBkMGM1MDFmMDA0OWVh
ODAwYjliNTExYjNiMzljZDk3ZjNlZTIwLi40MzMwYTZlN2JhNzUxOGIxOTA5N2IzMzVhMzFjMjRh
NWI4MWVmNzM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTIgQEAKKzIwMTEtMDMtMjIgIEplciBO
b2JsZSAgPGplci5ub2JsZUBhcHBsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgTWVkaWEgY29udHJvbHMgbXVzdCB1c2UgZnVsbCBzY3JlZW4g
c3R5bGUgd2hlbiBpbiBuZXcgZnVsbCBzY3JlZW4gbW9kZS4KKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU2ODUxCisKKyAgICAgICAgQWRkIG5ldyBmdWxs
IHNjcmVlbiBzdHlsZXMgZm9yIHRoZSBmdWxsIHNjcmVlbiBtZWRpYSBlbGVtZW50cy4KKworICAg
ICAgICAqIERlcml2ZWRTb3VyY2VzLm1ha2U6IEFkZCBmdWxsU2NyZWVuUXVpY2tUaW1lLmNzcy4K
KyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6IERpdHRvLgorICAg
ICAgICAqIGNzcy9DU1NTdHlsZVNlbGVjdG9yLmNwcDogUmVtb3ZlZCBsb2FkRnVsbFNjcmVlblJ1
bGVzSWZOZWVkZWQoKS4KKyAgICAgICAgKFdlYkNvcmU6OkNTU1N0eWxlU2VsZWN0b3I6OkNTU1N0
eWxlU2VsZWN0b3IpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkNTU1N0eWxlU2VsZWN0b3I6
OnN0eWxlRm9yRWxlbWVudCk6IExvYWQgZnVsbCBzY3JlZW4gcnVsZXMgCisgICAgICAgICAgICBp
ZiBuZWVkZWQuCisgICAgICAgICogY3NzL2Z1bGxzY3JlZW5RdWlja1RpbWUuY3NzOiBBZGRlZC4K
KyAgICAgICAgKiBjc3MvbWVkaWFDb250cm9scy5jc3M6CisgICAgICAgICogaHRtbC9zaGFkb3cv
TWVkaWFDb250cm9scy5jcHA6CisgICAgICAgIChXZWJDb3JlOjppc0Z1bGxTY3JlZW4pOiBBZGRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbHM6OmNyZWF0ZSk6IEFkZCBuZXcgZnVs
bCBzY3JlZW4gdm9sdW1lIGNvbnRyb2xzLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb250cm9s
czo6dXBkYXRlU3R5bGUpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbHM6
OnVwZGF0ZSk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb250cm9sczo6dXBkYXRl
Vm9sdW1lU2xpZGVyQ29udGFpbmVyKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpNZWRpYUNv
bnRyb2xzOjpmb3J3YXJkRXZlbnQpOiBEaXR0by4KKyAgICAgICAgKiByZW5kZXJpbmcvTWVkaWFD
b250cm9sRWxlbWVudHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb250cm9sRnVsbHNj
cmVlblZvbHVtZVNsaWRlckVsZW1lbnQ6Ok1lZGlhQ29udHJvbEZ1bGxzY3JlZW5Wb2x1bWVTbGlk
ZXJFbGVtZW50KTogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYUNvbnRyb2xGdWxsc2Ny
ZWVuVm9sdW1lU2xpZGVyRWxlbWVudDo6Y3JlYXRlKTogQWRkZWQuCisgICAgICAgIChXZWJDb3Jl
OjpNZWRpYUNvbnRyb2xGdWxsc2NyZWVuVm9sdW1lU2xpZGVyRWxlbWVudDo6c2hhZG93UHNldWRv
SWQpOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbEZ1bGxzY3JlZW5Wb2x1
bWVNaW5CdXR0b25FbGVtZW50OjpNZWRpYUNvbnRyb2xGdWxsc2NyZWVuVm9sdW1lTWluQnV0dG9u
RWxlbWVudCk6IEFkZGV0CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUNvbnRyb2xGdWxsc2NyZWVu
Vm9sdW1lTWluQnV0dG9uRWxlbWVudDo6Y3JlYXRlKTogQWRkZWQuCisgICAgICAgIChXZWJDb3Jl
OjpNZWRpYUNvbnRyb2xGdWxsc2NyZWVuVm9sdW1lTWluQnV0dG9uRWxlbWVudDo6ZGVmYXVsdEV2
ZW50SGFuZGxlcik6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb250cm9sRnVsbHNj
cmVlblZvbHVtZU1pbkJ1dHRvbkVsZW1lbnQ6OnNoYWRvd1BzZXVkb0lkKTogQWRkZWQuCisgICAg
ICAgIChXZWJDb3JlOjpNZWRpYUNvbnRyb2xGdWxsc2NyZWVuVm9sdW1lTWF4QnV0dG9uRWxlbWVu
dDo6TWVkaWFDb250cm9sRnVsbHNjcmVlblZvbHVtZU1heEJ1dHRvbkVsZW1lbnQpOiBBZGRlZC4K
KyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbEZ1bGxzY3JlZW5Wb2x1bWVNYXhCdXR0b25F
bGVtZW50OjpjcmVhdGUpOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbEZ1
bGxzY3JlZW5Wb2x1bWVNYXhCdXR0b25FbGVtZW50OjpkZWZhdWx0RXZlbnRIYW5kbGVyKTogQWRk
ZWQuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYUNvbnRyb2xGdWxsc2NyZWVuVm9sdW1lTWF4QnV0
dG9uRWxlbWVudDo6c2hhZG93UHNldWRvSWQpOiBBZGRlZC4KKyAgICAgICAgKiByZW5kZXJpbmcv
TWVkaWFDb250cm9sRWxlbWVudHMuaDoKKyAgICAgICAgICAgIEFkZGVkIG1fb3ZlcnJpZGVQb3Np
dGlvbi4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbFZvbHVtZVNsaWRlckNvbnRhaW5l
ckVsZW1lbnQ6OnNldE92ZXJyaWRlc1Bvc2l0aW9uKTogQWRkZWQuCisgICAgICAgICogcmVuZGVy
aW5nL01lZGlhQ29udHJvbEVsZW1lbnRzLmg6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUNvbnRy
b2xWb2x1bWVTbGlkZXJDb250YWluZXJFbGVtZW50OjpvdmVycmlkZXNQb3NpdGlvbik6IEFkZGVk
LgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUaGVtZS5oOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyVGhlbWU6OmV4dHJhRnVsbFNjcmVlblN0eWxlU2hlZXQpOiBBZGRlZC4KKyAgICAgICAg
KiByZW5kZXJpbmcvUmVuZGVyVGhlbWVNYWMuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVy
VGhlbWVNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZU1hYzo6ZXh0cmFGdWxs
U2NyZWVuU3R5bGVTaGVldCk6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVN
YWM6OnNob3VsZFJlbmRlck1lZGlhQ29udHJvbFBhcnQpOiBSZW5kZXIgc2VlayBmb3J3YXJkIGFu
ZCBiYWNrd2FyZCAKKyAgICAgICAgICAgIGJ1dHRvbnMuCisKIDIwMTEtMDMtMjYgIFBhdHJpY2sg
R2Fuc3RlcmVyICA8cGFyb2dhQHdlYmtpdC5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdlZCBXaW5D
RSBidWlsZCBmaXggZm9yIHI4MjAwMC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0Rlcml2
ZWRTb3VyY2VzLm1ha2UgYi9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlCmluZGV4
IDY5NmVmMWM5MjQzMzc0N2ZlNGU5NzliYzNiZGI2NDJkMmQzNjE2MjIuLmM4ZmEzMTA1NTU3MjUw
OGExMWJhOTNiZjE2OGY4YTUxNDFiNTVmYWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0Rl
cml2ZWRTb3VyY2VzLm1ha2UKKysrIGIvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFr
ZQpAQCAtNzM3LDcgKzczNyw3IEBAIGlmZXEgKCQoZmluZHN0cmluZyBFTkFCTEVfVklERU8sJChG
RUFUVVJFX0RFRklORVMpKSwgRU5BQkxFX1ZJREVPKQogZW5kaWYKIAogaWZlcSAoJChmaW5kc3Ry
aW5nIEVOQUJMRV9GVUxMU0NSRUVOX0FQSSwkKEZFQVRVUkVfREVGSU5FUykpLCBFTkFCTEVfRlVM
TFNDUkVFTl9BUEkpCi0gICAgVVNFUl9BR0VOVF9TVFlMRV9TSEVFVFMgOj0gJChVU0VSX0FHRU5U
X1NUWUxFX1NIRUVUUykgJChXZWJDb3JlKS9jc3MvZnVsbHNjcmVlbi5jc3MKKyAgICBVU0VSX0FH
RU5UX1NUWUxFX1NIRUVUUyA6PSAkKFVTRVJfQUdFTlRfU1RZTEVfU0hFRVRTKSAkKFdlYkNvcmUp
L2Nzcy9mdWxsc2NyZWVuLmNzcyAkKFdlYkNvcmUpL2Nzcy9mdWxsc2NyZWVuUXVpY2tUaW1lLmNz
cwogZW5kaWYKIAogVXNlckFnZW50U3R5bGVTaGVldHMuaCA6IGNzcy9tYWtlLWNzcy1maWxlLWFy
cmF5cy5wbCAkKFVTRVJfQUdFTlRfU1RZTEVfU0hFRVRTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGNjZDBiYzU3MWU2NWYxZTA4
N2QyYmEzNWMxOTI1ODZhZjhjMzJlYzguLjQyNjQ1YzA0MWMyM2E2MmQ0Yjg0ZTA5YTUyYTk3ZTM4
YmRlM2M1Y2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKQEAgLTExODQwLDYgKzExODQwLDcgQEAKIAkJQ0EzQkY2N0IxMEQ5OUJBRTAw
RTZDRTUzIC8qIFNjcm9sbEFuaW1hdG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IFNjcm9sbEFuaW1hdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJQ0EzQkY2N0QxMEQ5OUJBRTAwRTZDRTUzIC8qIFNjcm9sbEFuaW1hdG9yLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNjcm9sbEFuaW1hdG9yLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUNENEUwQUZBMTFGN0JDMjcwMDlEMzgxMSAvKiBmdWxsc2NyZWVuLmNz
cyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHRleHQuY3NzOyBwYXRoID0gZnVsbHNjcmVlbi5jc3M7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCUNEQkQ5M0JBMTMzM0JENEIwMDI1NzBFMyAvKiBmdWxsc2NyZWVu
UXVpY2tUaW1lLmNzcyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuY3NzOyBwYXRoID0gZnVsbHNjcmVlblF1aWNr
VGltZS5jc3M7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNERUE3QzgyMTI3NjIzMDQw
MEI4NDZERCAvKiBSZW5kZXJGdWxsU2NyZWVuLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFJlbmRlckZ1bGxTY3JlZW4uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
Q0RFQTdDODMxMjc2MjMwNDAwQjg0NkREIC8qIFJlbmRlckZ1bGxTY3JlZW4uY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVuZGVyRnVsbFNjcmVlbi5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNFMDJGMEMzMTFFODNBREQwMEM2Njg0QSAvKiBTY3Jp
cHRDb250cm9sbGVyQmFzZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTY3Jp
cHRDb250cm9sbGVyQmFzZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTg4ODIs
NiArMTg4ODMsNyBAQAogCQkJCUJDOUFERDIyMENDNDAzMjYwMDA5OEM0QyAvKiBXZWJLaXRDU1NU
cmFuc2Zvcm1WYWx1ZS5oICovLAogCQkJCTMxNjExRTU0MEUxQzRENEEwMEY2QTU3OSAvKiBXZWJL
aXRDU1NUcmFuc2Zvcm1WYWx1ZS5pZGwgKi8sCiAJCQkJNENERTU0RUMwRTU1Nzk3ODAwODlFMjZD
IC8qIHdtbC5jc3MgKi8sCisJCQkJQ0RCRDkzQkExMzMzQkQ0QjAwMjU3MEUzIC8qIGZ1bGxzY3Jl
ZW5RdWlja1RpbWUuY3NzICovLAogCQkJKTsKIAkJCXBhdGggPSBjc3M7CiAJCQlzb3VyY2VUcmVl
ID0gIjxncm91cD4iOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2Vs
ZWN0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2VsZWN0b3IuY3BwCmluZGV4
IGU2OTk1YTEyMDliNzYzMDNmOTg1MmQzMjM2N2E2ZmQ5M2JiODQ0ZDIuLjdmZTQzOTVjNWExNWQy
MDc0MmJiNTM5Y2E0YTQxYTc3ZGQ0N2I0YTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NTdHlsZVNlbGVjdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVT
ZWxlY3Rvci5jcHAKQEAgLTQzNyw5ICs0MzcsNiBAQCBzdGF0aWMgUnVsZVNldCogc2libGluZ1J1
bGVzSW5EZWZhdWx0U3R5bGU7CiBSZW5kZXJTdHlsZSogQ1NTU3R5bGVTZWxlY3Rvcjo6c19zdHls
ZU5vdFlldEF2YWlsYWJsZTsKIAogc3RhdGljIHZvaWQgbG9hZEZ1bGxEZWZhdWx0U3R5bGUoKTsK
LSNpZiBFTkFCTEUoRlVMTFNDUkVFTl9BUEkpCi1zdGF0aWMgdm9pZCBsb2FkRnVsbFNjcmVlblJ1
bGVzSWZOZWVkZWQoRG9jdW1lbnQqKTsKLSNlbmRpZgogc3RhdGljIHZvaWQgbG9hZFNpbXBsZURl
ZmF1bHRTdHlsZSgpOwogLy8gRklYTUU6IEl0IHdvdWxkIGJlIG5pY2UgdG8gdXNlIHNvbWUgbWVj
aGFuaXNtIHRoYXQgZ3VhcmFudGVlcyB0aGlzIGlzIGluIHN5bmMgd2l0aCB0aGUgcmVhbCBVQSBz
dHlsZXNoZWV0Lgogc3RhdGljIGNvbnN0IGNoYXIqIHNpbXBsZVVzZXJBZ2VudFN0eWxlU2hlZXQg
PSAiaHRtbCxib2R5LGRpdntkaXNwbGF5OmJsb2NrfWJvZHl7bWFyZ2luOjhweH1kaXY6Zm9jdXMs
c3Bhbjpmb2N1c3tvdXRsaW5lOmF1dG8gNXB4IC13ZWJraXQtZm9jdXMtcmluZy1jb2xvcn1hOi13
ZWJraXQtYW55LWxpbmt7Y29sb3I6LXdlYmtpdC1saW5rO3RleHQtZGVjb3JhdGlvbjp1bmRlcmxp
bmV9YTotd2Via2l0LWFueS1saW5rOmFjdGl2ZXtjb2xvcjotd2Via2l0LWFjdGl2ZWxpbmt9IjsK
QEAgLTUyMCw5ICs1MTcsNiBAQCBDU1NTdHlsZVNlbGVjdG9yOjpDU1NTdHlsZVNlbGVjdG9yKERv
Y3VtZW50KiBkb2N1bWVudCwgU3R5bGVTaGVldExpc3QqIHN0eWxlU2hlZQogICAgICAgICAgICAg
bG9hZFNpbXBsZURlZmF1bHRTdHlsZSgpOwogICAgICAgICBlbHNlIHsKICAgICAgICAgICAgIGxv
YWRGdWxsRGVmYXVsdFN0eWxlKCk7Ci0jaWYgRU5BQkxFKEZVTExTQ1JFRU5fQVBJKQotICAgICAg
ICAgICAgbG9hZEZ1bGxTY3JlZW5SdWxlc0lmTmVlZGVkKGRvY3VtZW50KTsKLSNlbmRpZgogICAg
ICAgICB9CiAgICAgfQogCkBAIC02NTcsMTkgKzY1MSw2IEBAIHN0YXRpYyB2b2lkIGxvYWRGdWxs
RGVmYXVsdFN0eWxlKCkKICAgICBkZWZhdWx0UXVpcmtzU3R5bGUtPmFkZFJ1bGVzRnJvbVNoZWV0
KHF1aXJrc1NoZWV0LCBzY3JlZW5FdmFsKCkpOwogfQogCi0jaWYgRU5BQkxFKEZVTExTQ1JFRU5f
QVBJKQotc3RhdGljIHZvaWQgbG9hZEZ1bGxTY3JlZW5SdWxlc0lmTmVlZGVkKERvY3VtZW50KiBk
b2N1bWVudCkKLXsKLSAgICBpZiAoIWRvY3VtZW50LT53ZWJraXRJc0Z1bGxTY3JlZW4oKSkKLSAg
ICAgICAgcmV0dXJuOwotICAgIC8vIEZ1bGwtc2NyZWVuIHJ1bGVzLgotICAgIFN0cmluZyBmdWxs
c2NyZWVuUnVsZXMgPSBTdHJpbmcoZnVsbHNjcmVlblVzZXJBZ2VudFN0eWxlU2hlZXQsIHNpemVv
ZihmdWxsc2NyZWVuVXNlckFnZW50U3R5bGVTaGVldCkpICsgUmVuZGVyVGhlbWU6OmRlZmF1bHRU
aGVtZSgpLT5leHRyYURlZmF1bHRTdHlsZVNoZWV0KCk7Ci0gICAgQ1NTU3R5bGVTaGVldCogZnVs
bHNjcmVlblNoZWV0ID0gcGFyc2VVQVNoZWV0KGZ1bGxzY3JlZW5SdWxlcyk7Ci0gICAgZGVmYXVs
dFN0eWxlLT5hZGRSdWxlc0Zyb21TaGVldChmdWxsc2NyZWVuU2hlZXQsIHNjcmVlbkV2YWwoKSk7
Ci0gICAgZGVmYXVsdFF1aXJrc1N0eWxlLT5hZGRSdWxlc0Zyb21TaGVldChmdWxsc2NyZWVuU2hl
ZXQsIHNjcmVlbkV2YWwoKSk7Ci19Ci0jZW5kaWYKLQogc3RhdGljIHZvaWQgbG9hZFNpbXBsZURl
ZmF1bHRTdHlsZSgpCiB7CiAgICAgQVNTRVJUKCFkZWZhdWx0U3R5bGUpOwpAQCAtMTM4OSw5ICsx
MzcwLDYgQEAgUGFzc1JlZlB0cjxSZW5kZXJTdHlsZT4gQ1NTU3R5bGVTZWxlY3Rvcjo6c3R5bGVG
b3JFbGVtZW50KEVsZW1lbnQqIGUsIFJlbmRlclN0eWwKICAgICAKICAgICBpZiAoc2ltcGxlRGVm
YXVsdFN0eWxlU2hlZXQgJiYgIWVsZW1lbnRDYW5Vc2VTaW1wbGVEZWZhdWx0U3R5bGUoZSkpIHsK
ICAgICAgICAgbG9hZEZ1bGxEZWZhdWx0U3R5bGUoKTsKLSNpZiBFTkFCTEUoRlVMTFNDUkVFTl9B
UEkpCi0gICAgICAgIGxvYWRGdWxsU2NyZWVuUnVsZXNJZk5lZWRlZChlLT5kb2N1bWVudCgpKTsK
LSNlbmRpZgogICAgICAgICBhc3NlcnROb1NpYmxpbmdSdWxlc0luRGVmYXVsdFN0eWxlKCk7CiAg
ICAgfQogCkBAIC0xNDQ0LDYgKzE0MjIsMTcgQEAgUGFzc1JlZlB0cjxSZW5kZXJTdHlsZT4gQ1NT
U3R5bGVTZWxlY3Rvcjo6c3R5bGVGb3JFbGVtZW50KEVsZW1lbnQqIGUsIFJlbmRlclN0eWwKICAg
ICB9CiAjZW5kaWYKIAorI2lmIEVOQUJMRShGVUxMU0NSRUVOX0FQSSkKKyAgICBzdGF0aWMgYm9v
bCBsb2FkZWRGdWxsU2NyZWVuU3R5bGVTaGVldDsKKyAgICBpZiAoIWxvYWRlZEZ1bGxTY3JlZW5T
dHlsZVNoZWV0ICYmIGUtPmRvY3VtZW50KCktPndlYmtpdElzRnVsbFNjcmVlbigpKSB7CisgICAg
ICAgIGxvYWRlZEZ1bGxTY3JlZW5TdHlsZVNoZWV0ID0gdHJ1ZTsKKyAgICAgICAgU3RyaW5nIGZ1
bGxzY3JlZW5SdWxlcyA9IFN0cmluZyhmdWxsc2NyZWVuVXNlckFnZW50U3R5bGVTaGVldCwgc2l6
ZW9mKGZ1bGxzY3JlZW5Vc2VyQWdlbnRTdHlsZVNoZWV0KSkgKyBSZW5kZXJUaGVtZTo6ZGVmYXVs
dFRoZW1lKCktPmV4dHJhRnVsbFNjcmVlblN0eWxlU2hlZXQoKTsKKyAgICAgICAgQ1NTU3R5bGVT
aGVldCogZnVsbHNjcmVlblNoZWV0ID0gcGFyc2VVQVNoZWV0KGZ1bGxzY3JlZW5SdWxlcyk7Cisg
ICAgICAgIGRlZmF1bHRTdHlsZS0+YWRkUnVsZXNGcm9tU2hlZXQoZnVsbHNjcmVlblNoZWV0LCBz
Y3JlZW5FdmFsKCkpOworICAgICAgICBkZWZhdWx0UXVpcmtzU3R5bGUtPmFkZFJ1bGVzRnJvbVNo
ZWV0KGZ1bGxzY3JlZW5TaGVldCwgc2NyZWVuRXZhbCgpKTsKKyAgICB9CisjZW5kaWYKKwogICAg
IGludCBmaXJzdFVBUnVsZSA9IC0xLCBsYXN0VUFSdWxlID0gLTE7CiAgICAgaW50IGZpcnN0VXNl
clJ1bGUgPSAtMSwgbGFzdFVzZXJSdWxlID0gLTE7CiAgICAgaW50IGZpcnN0QXV0aG9yUnVsZSA9
IC0xLCBsYXN0QXV0aG9yUnVsZSA9IC0xOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3Nz
L2Z1bGxzY3JlZW5RdWlja1RpbWUuY3NzIGIvU291cmNlL1dlYkNvcmUvY3NzL2Z1bGxzY3JlZW5R
dWlja1RpbWUuY3NzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjgwY2Y5ZTQ0NzRiODc1M2M4NzA0YzZlYzBjMWJiMmNk
Y2M4MzYwODgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvZnVsbHNjcmVl
blF1aWNrVGltZS5jc3MKQEAgLTAsMCArMSwxNTQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTEgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBB
TkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKy8qIGFsdGVybmF0ZSBtZWRpYSBjb250cm9s
cyAtIEV4dGVuZCBmdWxsc2NyZWVuLmNzcyAqLworCit2aWRlbzotd2Via2l0LWZ1bGwtc2NyZWVu
Ojotd2Via2l0LW1lZGlhLWNvbnRyb2xzLXBhbmVsIHsKKyAgICAtd2Via2l0LWJveC1hbGlnbjog
c3RhcnQ7CisgICAgLXdlYmtpdC1ib3gtcGFjazogZW5kOyAgICAKKyAgICAtd2Via2l0LWFwcGVh
cmFuY2U6IG5vbmU7CisKKyAgICBib3R0b206IDUwcHg7CisgICAgbGVmdDogNTAlOworICAgIG1h
cmdpbi1sZWZ0OiAtMjIwcHg7CisgICAgcGFkZGluZzogMTJweCAwIDAgMTBweDsKKyAgICB3aWR0
aDogNDMwcHg7CisgICAgaGVpZ2h0OiA0OHB4OworICAgIAorICAgIGJhY2tncm91bmQtaW1hZ2U6
IC13ZWJraXQtZ3JhZGllbnQoCisgICAgICAgIGxpbmVhciwKKyAgICAgICAgbGVmdCB0b3AsCisg
ICAgICAgIGxlZnQgYm90dG9tLAorICAgICAgICBjb2xvci1zdG9wKDAsIHJnYmEoMzAsIDMwLCAz
MCwgLjk3KSksCisgICAgICAgIGNvbG9yLXN0b3AoMC4zMzMsIHJnYmEoNDUsIDQ1LCA0NSwgLjk3
KSksCisgICAgICAgIGNvbG9yLXN0b3AoMC4zNSwgIHJnYmEoMjUsIDI1LCAyNSwgLjk3KSksCisg
ICAgICAgIGNvbG9yLXN0b3AoMC4zNjYsIHJnYmEoMjUsIDI1LCAyNSwgLjk3KSksCisgICAgICAg
IGNvbG9yLXN0b3AoMC4zNjYsIHJnYmEoMTIsIDEyLCAxMiwgLjk3KSksCisgICAgICAgIGNvbG9y
LXN0b3AoMSwgcmdiYSgxOSwgMTksIDE5LCAuOTcpKQorICAgICk7CisKKyAgICAtd2Via2l0LWJv
eC1zaGFkb3c6IAorICAgICAgICBpbnNldCAwIC0xcHggMXB4IHJnYmEoMCwgMCwgMCwgMC41KSwK
KyAgICAgICAgaW5zZXQgMCAgMXB4IDAgMHB4ICAgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjE1KSwK
KyAgICAgICAgaW5zZXQgMCAtMXB4IDAgMHB4ICAgcmdiYSgyMDIsIDIwMiwgMjAyLCAwLjA5KSwK
KyAgICAgICAgMCAgMCAgIDAgMXB4IHJnYmEoMCwgMCwgMCwgMC41KTsKKyAgICAtd2Via2l0LWJv
cmRlci1yYWRpdXM6IDhweDsKK30KKwordmlkZW86LXdlYmtpdC1mdWxsLXNjcmVlbjo6LXdlYmtp
dC1tZWRpYS1jb250cm9scy1tdXRlLWJ1dHRvbiB7CisgICAgZGlzcGxheTogbm9uZTsKK30KKwor
dmlkZW86LXdlYmtpdC1mdWxsLXNjcmVlbjo6LXdlYmtpdC1tZWRpYS1jb250cm9scy12b2x1bWUt
c2xpZGVyLWNvbnRhaW5lciB7CisgICAgZGlzcGxheTogbm9uZTsKK30KKwordmlkZW86LXdlYmtp
dC1mdWxsLXNjcmVlbjo6LXdlYmtpdC1tZWRpYS1jb250cm9scy12b2x1bWUtc2xpZGVyIHsKKyAg
ICBkaXNwbGF5OiBub25lOworfQorCit2aWRlbzotd2Via2l0LWZ1bGwtc2NyZWVuOjotd2Via2l0
LW1lZGlhLWNvbnRyb2xzLXZvbHVtZS1zbGlkZXItbXV0ZS1idXR0b24geworICAgIGRpc3BsYXk6
IG5vbmU7Cit9CisKK3ZpZGVvOi13ZWJraXQtZnVsbC1zY3JlZW46Oi13ZWJraXQtbWVkaWEtY29u
dHJvbHMtZnVsbHNjcmVlbi12b2x1bWUtbWluLWJ1dHRvbiB7CisgICAgLXdlYmtpdC1hcHBlYXJh
bmNlOiBtZWRpYS1tdXRlLWJ1dHRvbjsKKyAgICBkaXNwbGF5OiBibG9jazsKKyAgICBwb3NpdGlv
bjogYWJzb2x1dGU7CisgICAgbGVmdDogMTFweDsKKyAgICB0b3A6IDE1cHg7CisgICAgd2lkdGg6
IDE0cHg7CisgICAgaGVpZ2h0OiAxMnB4OworfQorCit2aWRlbzotd2Via2l0LWZ1bGwtc2NyZWVu
Ojotd2Via2l0LW1lZGlhLWNvbnRyb2xzLWZ1bGxzY3JlZW4tdm9sdW1lLXNsaWRlciB7CisgICAg
LXdlYmtpdC1hcHBlYXJhbmNlOiBtZWRpYS1zbGlkZXI7CisgICAgZGlzcGxheTogYmxvY2s7Cisg
ICAgcG9zaXRpb246IGFic29sdXRlOworICAgIGxlZnQ6IDI4cHg7CisgICAgdG9wOiAxNXB4Owor
ICAgIGhlaWdodDogMTJweDsKKyAgICB3aWR0aDogNTBweDsKK30KKwordmlkZW86LXdlYmtpdC1m
dWxsLXNjcmVlbjo6LXdlYmtpdC1tZWRpYS1jb250cm9scy1mdWxsc2NyZWVuLXZvbHVtZS1tYXgt
YnV0dG9uIHsKKyAgICAtd2Via2l0LWFwcGVhcmFuY2U6IG1lZGlhLW11dGUtYnV0dG9uOworICAg
IGRpc3BsYXk6IGJsb2NrOworICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKKyAgICBsZWZ0OiA4NHB4
OworICAgIHRvcDogMTVweDsKKyAgICB3aWR0aDogMTRweDsKKyAgICBoZWlnaHQ6IDEycHg7Cit9
CisKK3ZpZGVvOi13ZWJraXQtZnVsbC1zY3JlZW46Oi13ZWJraXQtbWVkaWEtY29udHJvbHMtcGxh
eS1idXR0b24geworICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKKyAgICB3aWR0aDogMjJweDsKKyAg
ICBoZWlnaHQ6IDIzcHg7CisgICAgbGVmdDogMjA5cHg7CisgICAgdG9wOiA5cHg7Cit9CisKK3Zp
ZGVvOi13ZWJraXQtZnVsbC1zY3JlZW46Oi13ZWJraXQtbWVkaWEtY29udHJvbHMtcmV3aW5kLWJ1
dHRvbiB7CisgICAgcG9zaXRpb246IGFic29sdXRlOworICAgIGxlZnQ6IDE2MnB4OworICAgIHRv
cDogMTNweDsKKyAgICB3aWR0aDogMThweDsKKyAgICBoZWlnaHQ6IDE4cHg7Cit9CisKK3ZpZGVv
Oi13ZWJraXQtZnVsbC1zY3JlZW46Oi13ZWJraXQtbWVkaWEtY29udHJvbHMtc2Vlay1iYWNrLWJ1
dHRvbiB7CisgICAgcG9zaXRpb246IGFic29sdXRlOworICAgIGRpc3BsYXk6IC13ZWJraXQtYm94
OworICAgIHdpZHRoOiAyM3B4OworICAgIGhlaWdodDogMTZweDsKKyAgICBsZWZ0OiAxNjJweDsK
KyAgICB0b3A6IDEzcHg7Cit9CisKK3ZpZGVvOi13ZWJraXQtZnVsbC1zY3JlZW46Oi13ZWJraXQt
bWVkaWEtY29udHJvbHMtc2Vlay1mb3J3YXJkLWJ1dHRvbiB7CisgICAgcG9zaXRpb246IGFic29s
dXRlOworICAgIGRpc3BsYXk6IC13ZWJraXQtYm94OworICAgIHdpZHRoOiAyM3B4OworICAgIGhl
aWdodDogMTZweDsKKyAgICBsZWZ0OiAyNjJweDsKKyAgICB0b3A6IDEzcHg7Cit9CisKK3ZpZGVv
Oi13ZWJraXQtZnVsbC1zY3JlZW46Oi13ZWJraXQtbWVkaWEtY29udHJvbHMtdGltZWxpbmUtY29u
dGFpbmVyIHsKKyAgICBoZWlnaHQ6IGF1dG87CisgICAgd2lkdGg6IDQyMHB4OworICAgIHBvc2l0
aW9uOiBhYnNvbHV0ZTsKKyAgICBib3R0b206IDlweDsKKyAgICBsZWZ0OiA4cHg7CisgICAgcmln
aHQ6IDhweDsKK30KKwordmlkZW86LXdlYmtpdC1mdWxsLXNjcmVlbjo6dmlkZW86Oi13ZWJraXQt
bWVkaWEtY29udHJvbHMtc3RhdHVzLWRpc3BsYXkgeworICAgIHdpZHRoOiA0MjBweDsKKyAgICBw
b3NpdGlvbjogYWJzb2x1dGU7CisgICAgYm90dG9tOiA5cHg7CisgICAgbGVmdDogOHB4OworICAg
IHJpZ2h0OiA4cHg7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvbWVkaWFDb250
cm9scy5jc3MgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvbWVkaWFDb250cm9scy5jc3MKaW5kZXggODgx
NDRiNDZkZmQzM2RmMDM1NTk5OThhMzJhNTNiM2RlOTdiNDdlOS4uODc0Y2IxMzBkNWYxMDk0ZDhk
YjkxZTI2M2Q0MmYwZGRhZTQzZWNhMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL21l
ZGlhQ29udHJvbHMuY3NzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9tZWRpYUNvbnRyb2xzLmNz
cwpAQCAtMTcxLDMgKzE3MSwxNSBAQCBhdWRpbzo6LXdlYmtpdC1tZWRpYS1jb250cm9scy12b2x1
bWUtc2xpZGVyLW11dGUtYnV0dG9uLCB2aWRlbzo6LXdlYmtpdC1tZWRpYS1jbwogICAgIGJvcmRl
cjogaW5pdGlhbDsKICAgICBjb2xvcjogaW5oZXJpdDsKIH0KKworYXVkaW86Oi13ZWJraXQtbWVk
aWEtY29udHJvbHMtZnVsbHNjcmVlbi12b2x1bWUtc2xpZGVyLCB2aWRlbzo6LXdlYmtpdC1tZWRp
YS1jb250cm9scy1mdWxsc2NyZWVuLXZvbHVtZS1zbGlkZXIgeworICAgIGRpc3BsYXk6IG5vbmU7
Cit9CisKK2F1ZGlvOjotd2Via2l0LW1lZGlhLWNvbnRyb2xzLWZ1bGxzY3JlZW4tdm9sdW1lLW1p
bi1idXR0b24sIHZpZGVvOjotd2Via2l0LW1lZGlhLWNvbnRyb2xzLWZ1bGxzY3JlZW4tdm9sdW1l
LW1pbi1idXR0b24geworICAgIGRpc3BsYXk6IG5vbmU7Cit9CisKK2F1ZGlvOjotd2Via2l0LW1l
ZGlhLWNvbnRyb2xzLWZ1bGxzY3JlZW4tdm9sdW1lLW1heC1idXR0b24sIHZpZGVvOjotd2Via2l0
LW1lZGlhLWNvbnRyb2xzLWZ1bGxzY3JlZW4tdm9sdW1lLW1heC1idXR0b24geworICAgIGRpc3Bs
YXk6IG5vbmU7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVs
ZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAppbmRl
eCAwNDcxMTI2OTUyY2JmMzFiZTc4MmQ5ZWNhODkyNzQ1OWZiYjZmM2EzLi5kNTQ4YjY1Yjc4OTY3
YzVmZGI2YTNjYTM0MDdlMWE3ODljMDM3YTcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1l
ZGlhRWxlbWVudC5jcHAKQEAgLTI0MzMsNiArMjQzMywxOSBAQCB2b2lkIEhUTUxNZWRpYUVsZW1l
bnQ6OnVwZGF0ZVdpZGdldChQbHVnaW5DcmVhdGlvbk9wdGlvbikKIAogI2VuZGlmIC8vIEVOQUJM
RShQTFVHSU5fUFJPWFlfRk9SX1ZJREVPKQogCitib29sIEhUTUxNZWRpYUVsZW1lbnQ6OmlzRnVs
bHNjcmVlbigpIGNvbnN0Cit7CisgICAgaWYgKG1faXNGdWxsc2NyZWVuKQorICAgICAgICByZXR1
cm4gdHJ1ZTsKKyAgICAKKyNpZiBFTkFCTEUoRlVMTFNDUkVFTl9BUEkpCisgICAgaWYgKGRvY3Vt
ZW50KCktPndlYmtpdElzRnVsbFNjcmVlbigpICYmIGRvY3VtZW50KCktPndlYmtpdEN1cnJlbnRG
dWxsU2NyZWVuRWxlbWVudCgpID09IHRoaXMpCisgICAgICAgIHJldHVybiB0cnVlOworI2VuZGlm
CisgICAgCisgICAgcmV0dXJuIGZhbHNlOworfQorCiB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OmVu
dGVyRnVsbHNjcmVlbigpCiB7CiAgICAgTE9HKE1lZGlhLCAiSFRNTE1lZGlhRWxlbWVudDo6ZW50
ZXJGdWxsc2NyZWVuIik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRp
YUVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oCmluZGV4
IGY1ZDdjNmEwNzQ2MGY4MjNhZTU2ZDIyZWVhMzRjMDhhY2RlMTIyYTguLmVhOTU4ZmFhNDNmZDc3
ZWIyNTk4ZDE4NWU2ZGI2NmZjMjk2MTQxOGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTE1lZGlhRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlh
RWxlbWVudC5oCkBAIC0xNjQsNyArMTY0LDcgQEAgcHVibGljOgogCiAgICAgYm9vbCBoYXNTaW5n
bGVTZWN1cml0eU9yaWdpbigpIGNvbnN0IHsgcmV0dXJuICFtX3BsYXllciB8fCBtX3BsYXllci0+
aGFzU2luZ2xlU2VjdXJpdHlPcmlnaW4oKTsgfQogICAgIAotICAgIGJvb2wgaXNGdWxsc2NyZWVu
KCkgY29uc3QgeyByZXR1cm4gbV9pc0Z1bGxzY3JlZW47IH0KKyAgICBib29sIGlzRnVsbHNjcmVl
bigpIGNvbnN0OwogICAgIHZvaWQgZW50ZXJGdWxsc2NyZWVuKCk7CiAgICAgdm9pZCBleGl0RnVs
bHNjcmVlbigpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRp
YUNvbnRyb2xzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJvbHMu
Y3BwCmluZGV4IGE5M2ZhMjgyMjhkNjMxODc3YmIyODA1OTRiOWRhOTM5MTM5OWQ2OTQuLjM0Yzhl
OGU2NDlkMDEwMWY3ZWJhZWNjMjk3ZmJlODliNjY2NmQxMjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJvbHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvc2hhZG93L01lZGlhQ29udHJvbHMuY3BwCkBAIC04MSw2ICs4MSw5IEBAIFBhc3NSZWZQ
dHI8TWVkaWFDb250cm9sU2hhZG93Um9vdEVsZW1lbnQ+IE1lZGlhQ29udHJvbHM6OmNyZWF0ZShI
VE1MTWVkaWFFbGVtZW50CiAgICAgQVNTRVJUKCFtX3ZvbHVtZVNsaWRlckNvbnRhaW5lcik7CiAg
ICAgQVNTRVJUKCFtX3ZvbHVtZVNsaWRlcik7CiAgICAgQVNTRVJUKCFtX3ZvbHVtZVNsaWRlck11
dGVCdXR0b24pOworICAgIEFTU0VSVCghbV9mdWxsU2NyZWVuTWluVm9sdW1lQnV0dG9uKTsKKyAg
ICBBU1NFUlQoIW1fZnVsbFNjcmVlbk1heFZvbHVtZUJ1dHRvbik7CisgICAgQVNTRVJUKCFtX2Z1
bGxTY3JlZW5Wb2x1bWVTbGlkZXIpOwogCiAgICAgUmVmUHRyPE1lZGlhQ29udHJvbFNoYWRvd1Jv
b3RFbGVtZW50PiBjb250cm9scyA9IE1lZGlhQ29udHJvbFNoYWRvd1Jvb3RFbGVtZW50OjpjcmVh
dGUobWVkaWFFbGVtZW50KTsKIApAQCAtMTM1LDcgKzEzOCwxNiBAQCBQYXNzUmVmUHRyPE1lZGlh
Q29udHJvbFNoYWRvd1Jvb3RFbGVtZW50PiBNZWRpYUNvbnRyb2xzOjpjcmVhdGUoSFRNTE1lZGlh
RWxlbWVudAogICAgIG1fdm9sdW1lU2xpZGVyTXV0ZUJ1dHRvbi0+YXR0YWNoVG9QYXJlbnQobV92
b2x1bWVTbGlkZXJDb250YWluZXIuZ2V0KCkpOwogCiAgICAgbV92b2x1bWVTbGlkZXJDb250YWlu
ZXItPmF0dGFjaFRvUGFyZW50KG1fcGFuZWwuZ2V0KCkpOwotCisgICAgCisgICAgbV9mdWxsU2Ny
ZWVuTWluVm9sdW1lQnV0dG9uID0gTWVkaWFDb250cm9sRnVsbHNjcmVlblZvbHVtZU1pbkJ1dHRv
bkVsZW1lbnQ6OmNyZWF0ZShtZWRpYUVsZW1lbnQpOworICAgIG1fZnVsbFNjcmVlbk1pblZvbHVt
ZUJ1dHRvbi0+YXR0YWNoVG9QYXJlbnQobV9wYW5lbC5nZXQoKSk7CisgICAgCisgICAgbV9mdWxs
U2NyZWVuVm9sdW1lU2xpZGVyID0gTWVkaWFDb250cm9sRnVsbHNjcmVlblZvbHVtZVNsaWRlckVs
ZW1lbnQ6OmNyZWF0ZShtZWRpYUVsZW1lbnQpOworICAgIG1fZnVsbFNjcmVlblZvbHVtZVNsaWRl
ci0+YXR0YWNoVG9QYXJlbnQobV9wYW5lbC5nZXQoKSk7CisgICAgCisgICAgbV9mdWxsU2NyZWVu
TWF4Vm9sdW1lQnV0dG9uID0gTWVkaWFDb250cm9sRnVsbHNjcmVlblZvbHVtZU1heEJ1dHRvbkVs
ZW1lbnQ6OmNyZWF0ZShtZWRpYUVsZW1lbnQpOworICAgIG1fZnVsbFNjcmVlbk1heFZvbHVtZUJ1
dHRvbi0+YXR0YWNoVG9QYXJlbnQobV9wYW5lbC5nZXQoKSk7CisgICAgCiAgICAgbV9wYW5lbC0+
YXR0YWNoVG9QYXJlbnQoY29udHJvbHMuZ2V0KCkpOwogICAgIHJldHVybiBjb250cm9scy5yZWxl
YXNlKCk7CiB9CkBAIC0yMTYsNiArMjI4LDEyIEBAIHZvaWQgTWVkaWFDb250cm9sczo6dXBkYXRl
U3R5bGUoKQogICAgICAgICBtX3ZvbHVtZVNsaWRlck11dGVCdXR0b24tPnVwZGF0ZVN0eWxlKCk7
CiAgICAgaWYgKG1fdm9sdW1lU2xpZGVyKQogICAgICAgICBtX3ZvbHVtZVNsaWRlci0+dXBkYXRl
U3R5bGUoKTsKKyAgICBpZiAobV9mdWxsU2NyZWVuTWluVm9sdW1lQnV0dG9uKQorICAgICAgICBt
X2Z1bGxTY3JlZW5NaW5Wb2x1bWVCdXR0b24tPnVwZGF0ZVN0eWxlKCk7CisgICAgaWYgKG1fZnVs
bFNjcmVlblZvbHVtZVNsaWRlcikKKyAgICAgICAgbV9mdWxsU2NyZWVuVm9sdW1lU2xpZGVyLT51
cGRhdGVTdHlsZSgpOworICAgIGlmIChtX2Z1bGxTY3JlZW5NYXhWb2x1bWVCdXR0b24pCisgICAg
ICAgIG1fZnVsbFNjcmVlbk1heFZvbHVtZUJ1dHRvbi0+dXBkYXRlU3R5bGUoKTsKIH0KIAogdm9p
ZCBNZWRpYUNvbnRyb2xzOjpkZXN0cm95KCkKQEAgLTI1OCw2ICsyNzYsOSBAQCB2b2lkIE1lZGlh
Q29udHJvbHM6OnVwZGF0ZSgpCiAgICAgICAgICAgICBtX3ZvbHVtZVNsaWRlck11dGVCdXR0b24g
PSAwOwogICAgICAgICAgICAgbV9jb250cm9sc1NoYWRvd1Jvb3QgPSAwOwogICAgICAgICAgICAg
bV90b2dnbGVDbG9zZWRDYXB0aW9uc0J1dHRvbiA9IDA7CisgICAgICAgICAgICBtX2Z1bGxTY3Jl
ZW5NaW5Wb2x1bWVCdXR0b24gPSAwOworICAgICAgICAgICAgbV9mdWxsU2NyZWVuVm9sdW1lU2xp
ZGVyID0gMDsKKyAgICAgICAgICAgIG1fZnVsbFNjcmVlbk1heFZvbHVtZUJ1dHRvbiA9IDA7CiAg
ICAgICAgIH0KICAgICAgICAgbV9vcGFjaXR5QW5pbWF0aW9uVG8gPSAxLjBmOwogICAgICAgICBt
X29wYWNpdHlBbmltYXRpb25UaW1lci5zdG9wKCk7CkBAIC0zMDksNyArMzMwLDEyIEBAIHZvaWQg
TWVkaWFDb250cm9sczo6dXBkYXRlKCkKICAgICAgICAgbV92b2x1bWVTbGlkZXItPnVwZGF0ZSgp
OwogICAgIGlmIChtX3ZvbHVtZVNsaWRlck11dGVCdXR0b24pCiAgICAgICAgIG1fdm9sdW1lU2xp
ZGVyTXV0ZUJ1dHRvbi0+dXBkYXRlKCk7Ci0KKyAgICBpZiAobV9mdWxsU2NyZWVuTWluVm9sdW1l
QnV0dG9uKQorICAgICAgICBtX2Z1bGxTY3JlZW5NaW5Wb2x1bWVCdXR0b24tPnVwZGF0ZSgpOwor
ICAgIGlmIChtX2Z1bGxTY3JlZW5Wb2x1bWVTbGlkZXIpCisgICAgICAgIG1fZnVsbFNjcmVlblZv
bHVtZVNsaWRlci0+dXBkYXRlKCk7CisgICAgaWYgKG1fZnVsbFNjcmVlbk1heFZvbHVtZUJ1dHRv
bikKKyAgICAgICAgbV9mdWxsU2NyZWVuTWF4Vm9sdW1lQnV0dG9uLT51cGRhdGUoKTsKICAgICB1
cGRhdGVUaW1lRGlzcGxheSgpOwogICAgIHVwZGF0ZUNvbnRyb2xWaXNpYmlsaXR5KCk7CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xzLmggYi9T
b3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xzLmgKaW5kZXggMzIyMzI2ZDc3
M2Y4NWYyZDcxZjMxODk3ODhjYTlkMDZiODY3OWEzYy4uZWJmN2VlZDMyZWFkMmM2MTk5NmUwOTE1
MWNlOWIyNWIxNTkwM2RkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cv
TWVkaWFDb250cm9scy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29u
dHJvbHMuaApAQCAtNTMsNiArNTMsOSBAQCBjbGFzcyBNZWRpYUNvbnRyb2xTdGF0dXNEaXNwbGF5
RWxlbWVudDsKIGNsYXNzIE1lZGlhQ29udHJvbFRpbWVsaW5lQ29udGFpbmVyRWxlbWVudDsKIGNs
YXNzIE1lZGlhQ29udHJvbFZvbHVtZVNsaWRlckNvbnRhaW5lckVsZW1lbnQ7CiBjbGFzcyBNZWRp
YUNvbnRyb2xFbGVtZW50OworY2xhc3MgTWVkaWFDb250cm9sRnVsbHNjcmVlblZvbHVtZU1pbkJ1
dHRvbkVsZW1lbnQ7CitjbGFzcyBNZWRpYUNvbnRyb2xGdWxsc2NyZWVuVm9sdW1lU2xpZGVyRWxl
bWVudDsKK2NsYXNzIE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5Wb2x1bWVNYXhCdXR0b25FbGVtZW50
OwogY2xhc3MgTWVkaWFQbGF5ZXI7CiAKIGNsYXNzIFJlbmRlckJveDsKQEAgLTExMCw2ICsxMTMs
OSBAQCBwcml2YXRlOgogICAgIFJlZlB0cjxNZWRpYUNvbnRyb2xUaW1lRGlzcGxheUVsZW1lbnQ+
IG1fY3VycmVudFRpbWVEaXNwbGF5OwogICAgIFJlZlB0cjxNZWRpYUNvbnRyb2xUaW1lRGlzcGxh
eUVsZW1lbnQ+IG1fdGltZVJlbWFpbmluZ0Rpc3BsYXk7CiAgICAgUmVmUHRyPE1lZGlhQ29udHJv
bFN0YXR1c0Rpc3BsYXlFbGVtZW50PiBtX3N0YXR1c0Rpc3BsYXk7CisgICAgUmVmUHRyPE1lZGlh
Q29udHJvbEZ1bGxzY3JlZW5Wb2x1bWVNaW5CdXR0b25FbGVtZW50PiBtX2Z1bGxTY3JlZW5NaW5W
b2x1bWVCdXR0b247CisgICAgUmVmUHRyPE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5Wb2x1bWVTbGlk
ZXJFbGVtZW50PiBtX2Z1bGxTY3JlZW5Wb2x1bWVTbGlkZXI7CisgICAgUmVmUHRyPE1lZGlhQ29u
dHJvbEZ1bGxzY3JlZW5Wb2x1bWVNYXhCdXR0b25FbGVtZW50PiBtX2Z1bGxTY3JlZW5NYXhWb2x1
bWVCdXR0b247CiAKICAgICBIVE1MTWVkaWFFbGVtZW50KiBtX21lZGlhRWxlbWVudDsKICAgICBU
aW1lcjxNZWRpYUNvbnRyb2xzPiBtX29wYWNpdHlBbmltYXRpb25UaW1lcjsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9NZWRpYUNvbnRyb2xFbGVtZW50cy5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvTWVkaWFDb250cm9sRWxlbWVudHMuY3BwCmluZGV4IGViMzVi
M2RjMWFjODg2YmEzMmUyMTA5YTg2YjI0YmI2ZGExNWIyMzEuLmJlNjQ5NDdmY2Q4ZjNhODVmNjA0
YjdlZjg5Nzk1YzI2M2U1MzI3MTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9NZWRpYUNvbnRyb2xFbGVtZW50cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L01lZGlhQ29udHJvbEVsZW1lbnRzLmNwcApAQCAtOTA5LDYgKzkwOSwyOSBAQCBjb25zdCBBdG9t
aWNTdHJpbmcmIE1lZGlhQ29udHJvbFZvbHVtZVNsaWRlckVsZW1lbnQ6OnNoYWRvd1BzZXVkb0lk
KCkgY29uc3QKIAogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCitpbmxpbmUgTWVk
aWFDb250cm9sRnVsbHNjcmVlblZvbHVtZVNsaWRlckVsZW1lbnQ6Ok1lZGlhQ29udHJvbEZ1bGxz
Y3JlZW5Wb2x1bWVTbGlkZXJFbGVtZW50KEhUTUxNZWRpYUVsZW1lbnQqIG1lZGlhRWxlbWVudCkK
KzogTWVkaWFDb250cm9sVm9sdW1lU2xpZGVyRWxlbWVudChtZWRpYUVsZW1lbnQpCit7Cit9CisK
K1Bhc3NSZWZQdHI8TWVkaWFDb250cm9sRnVsbHNjcmVlblZvbHVtZVNsaWRlckVsZW1lbnQ+IE1l
ZGlhQ29udHJvbEZ1bGxzY3JlZW5Wb2x1bWVTbGlkZXJFbGVtZW50OjpjcmVhdGUoSFRNTE1lZGlh
RWxlbWVudCogbWVkaWFFbGVtZW50KQoreworICAgIFJlZlB0cjxNZWRpYUNvbnRyb2xGdWxsc2Ny
ZWVuVm9sdW1lU2xpZGVyRWxlbWVudD4gc2xpZGVyID0gYWRvcHRSZWYobmV3IE1lZGlhQ29udHJv
bEZ1bGxzY3JlZW5Wb2x1bWVTbGlkZXJFbGVtZW50KG1lZGlhRWxlbWVudCkpOworICAgIHNsaWRl
ci0+c2V0VHlwZSgicmFuZ2UiKTsKKyAgICBzbGlkZXItPnNldEF0dHJpYnV0ZShwcmVjaXNpb25B
dHRyLCAiZmxvYXQiKTsKKyAgICBzbGlkZXItPnNldEF0dHJpYnV0ZShtYXhBdHRyLCAiMSIpOwor
ICAgIHNsaWRlci0+c2V0QXR0cmlidXRlKHZhbHVlQXR0ciwgU3RyaW5nOjpudW1iZXIobWVkaWFF
bGVtZW50LT52b2x1bWUoKSkpOworICAgIHJldHVybiBzbGlkZXIucmVsZWFzZSgpOworfQorCitj
b25zdCBBdG9taWNTdHJpbmcmIE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5Wb2x1bWVTbGlkZXJFbGVt
ZW50OjpzaGFkb3dQc2V1ZG9JZCgpIGNvbnN0Cit7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChB
dG9taWNTdHJpbmcsIGlkLCAoIi13ZWJraXQtbWVkaWEtY29udHJvbHMtZnVsbHNjcmVlbi12b2x1
bWUtc2xpZGVyIikpOworICAgIHJldHVybiBpZDsKK30KKworLy8gLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLQorCiBpbmxpbmUgTWVkaWFDb250cm9sRnVsbHNjcmVlbkJ1dHRvbkVsZW1lbnQ6
Ok1lZGlhQ29udHJvbEZ1bGxzY3JlZW5CdXR0b25FbGVtZW50KEhUTUxNZWRpYUVsZW1lbnQqIG1l
ZGlhRWxlbWVudCkKICAgICA6IE1lZGlhQ29udHJvbElucHV0RWxlbWVudChtZWRpYUVsZW1lbnQs
IE1lZGlhRnVsbHNjcmVlbkJ1dHRvbikKIHsKQEAgLTk1MSw2ICs5NzQsNjYgQEAgY29uc3QgQXRv
bWljU3RyaW5nJiBNZWRpYUNvbnRyb2xGdWxsc2NyZWVuQnV0dG9uRWxlbWVudDo6c2hhZG93UHNl
dWRvSWQoKSBjb25zdAogCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKK2lubGlu
ZSBNZWRpYUNvbnRyb2xGdWxsc2NyZWVuVm9sdW1lTWluQnV0dG9uRWxlbWVudDo6TWVkaWFDb250
cm9sRnVsbHNjcmVlblZvbHVtZU1pbkJ1dHRvbkVsZW1lbnQoSFRNTE1lZGlhRWxlbWVudCogbWVk
aWFFbGVtZW50KQorOiBNZWRpYUNvbnRyb2xJbnB1dEVsZW1lbnQobWVkaWFFbGVtZW50LCBNZWRp
YVVuTXV0ZUJ1dHRvbikKK3sKK30KKworUGFzc1JlZlB0cjxNZWRpYUNvbnRyb2xGdWxsc2NyZWVu
Vm9sdW1lTWluQnV0dG9uRWxlbWVudD4gTWVkaWFDb250cm9sRnVsbHNjcmVlblZvbHVtZU1pbkJ1
dHRvbkVsZW1lbnQ6OmNyZWF0ZShIVE1MTWVkaWFFbGVtZW50KiBtZWRpYUVsZW1lbnQpCit7Cisg
ICAgUmVmUHRyPE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5Wb2x1bWVNaW5CdXR0b25FbGVtZW50PiBi
dXR0b24gPSBhZG9wdFJlZihuZXcgTWVkaWFDb250cm9sRnVsbHNjcmVlblZvbHVtZU1pbkJ1dHRv
bkVsZW1lbnQobWVkaWFFbGVtZW50KSk7CisgICAgYnV0dG9uLT5zZXRUeXBlKCJidXR0b24iKTsK
KyAgICByZXR1cm4gYnV0dG9uLnJlbGVhc2UoKTsKK30KKwordm9pZCBNZWRpYUNvbnRyb2xGdWxs
c2NyZWVuVm9sdW1lTWluQnV0dG9uRWxlbWVudDo6ZGVmYXVsdEV2ZW50SGFuZGxlcihFdmVudCog
ZXZlbnQpCit7CisgICAgaWYgKGV2ZW50LT50eXBlKCkgPT0gZXZlbnROYW1lcygpLmNsaWNrRXZl
bnQpIHsKKyAgICAgICAgRXhjZXB0aW9uQ29kZSBjb2RlID0gMDsKKyAgICAgICAgbWVkaWFFbGVt
ZW50KCktPnNldFZvbHVtZSgwLCBjb2RlKTsKKyAgICAgICAgZXZlbnQtPnNldERlZmF1bHRIYW5k
bGVkKCk7CisgICAgfQorICAgIEhUTUxJbnB1dEVsZW1lbnQ6OmRlZmF1bHRFdmVudEhhbmRsZXIo
ZXZlbnQpOworfQorCitjb25zdCBBdG9taWNTdHJpbmcmIE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5W
b2x1bWVNaW5CdXR0b25FbGVtZW50OjpzaGFkb3dQc2V1ZG9JZCgpIGNvbnN0Cit7CisgICAgREVG
SU5FX1NUQVRJQ19MT0NBTChBdG9taWNTdHJpbmcsIGlkLCAoIi13ZWJraXQtbWVkaWEtY29udHJv
bHMtZnVsbHNjcmVlbi12b2x1bWUtbWluLWJ1dHRvbiIpKTsKKyAgICByZXR1cm4gaWQ7Cit9CisK
Ky8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworaW5saW5lIE1lZGlhQ29udHJvbEZ1
bGxzY3JlZW5Wb2x1bWVNYXhCdXR0b25FbGVtZW50OjpNZWRpYUNvbnRyb2xGdWxsc2NyZWVuVm9s
dW1lTWF4QnV0dG9uRWxlbWVudChIVE1MTWVkaWFFbGVtZW50KiBtZWRpYUVsZW1lbnQpCis6IE1l
ZGlhQ29udHJvbElucHV0RWxlbWVudChtZWRpYUVsZW1lbnQsIE1lZGlhTXV0ZUJ1dHRvbikKK3sK
K30KKworUGFzc1JlZlB0cjxNZWRpYUNvbnRyb2xGdWxsc2NyZWVuVm9sdW1lTWF4QnV0dG9uRWxl
bWVudD4gTWVkaWFDb250cm9sRnVsbHNjcmVlblZvbHVtZU1heEJ1dHRvbkVsZW1lbnQ6OmNyZWF0
ZShIVE1MTWVkaWFFbGVtZW50KiBtZWRpYUVsZW1lbnQpCit7CisgICAgUmVmUHRyPE1lZGlhQ29u
dHJvbEZ1bGxzY3JlZW5Wb2x1bWVNYXhCdXR0b25FbGVtZW50PiBidXR0b24gPSBhZG9wdFJlZihu
ZXcgTWVkaWFDb250cm9sRnVsbHNjcmVlblZvbHVtZU1heEJ1dHRvbkVsZW1lbnQobWVkaWFFbGVt
ZW50KSk7CisgICAgYnV0dG9uLT5zZXRUeXBlKCJidXR0b24iKTsKKyAgICByZXR1cm4gYnV0dG9u
LnJlbGVhc2UoKTsKK30KKwordm9pZCBNZWRpYUNvbnRyb2xGdWxsc2NyZWVuVm9sdW1lTWF4QnV0
dG9uRWxlbWVudDo6ZGVmYXVsdEV2ZW50SGFuZGxlcihFdmVudCogZXZlbnQpCit7CisgICAgaWYg
KGV2ZW50LT50eXBlKCkgPT0gZXZlbnROYW1lcygpLmNsaWNrRXZlbnQpIHsKKyAgICAgICAgRXhj
ZXB0aW9uQ29kZSBjb2RlID0gMDsKKyAgICAgICAgbWVkaWFFbGVtZW50KCktPnNldFZvbHVtZSgx
LCBjb2RlKTsKKyAgICAgICAgZXZlbnQtPnNldERlZmF1bHRIYW5kbGVkKCk7CisgICAgfQorICAg
IEhUTUxJbnB1dEVsZW1lbnQ6OmRlZmF1bHRFdmVudEhhbmRsZXIoZXZlbnQpOworfQorCitjb25z
dCBBdG9taWNTdHJpbmcmIE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5Wb2x1bWVNYXhCdXR0b25FbGVt
ZW50OjpzaGFkb3dQc2V1ZG9JZCgpIGNvbnN0Cit7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChB
dG9taWNTdHJpbmcsIGlkLCAoIi13ZWJraXQtbWVkaWEtY29udHJvbHMtZnVsbHNjcmVlbi12b2x1
bWUtbWF4LWJ1dHRvbiIpKTsKKyAgICByZXR1cm4gaWQ7Cit9CisKKy8vIC0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0KKwogY2xhc3MgUmVuZGVyTWVkaWFDb250cm9sVGltZURpc3BsYXkgOiBw
dWJsaWMgUmVuZGVyRmxleGlibGVCb3ggewogcHVibGljOgogICAgIFJlbmRlck1lZGlhQ29udHJv
bFRpbWVEaXNwbGF5KE5vZGUqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9NZWRpYUNvbnRyb2xFbGVtZW50cy5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL01lZGlh
Q29udHJvbEVsZW1lbnRzLmgKaW5kZXggNTFjNjE0OTc0ZjEzYWFhMWFhYjljODVlMDQzNmY5MDI3
NmI4MWUxNS4uNzcxMTZlMzc3ZjVjMzFjZWNmMGE4NjE2MzkzZDQwYzY1OWJhNTYyZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL01lZGlhQ29udHJvbEVsZW1lbnRzLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL01lZGlhQ29udHJvbEVsZW1lbnRzLmgKQEAgLTM3
Miw5ICszNzIsMTAgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBkZWZhdWx0RXZlbnRIYW5k
bGVyKEV2ZW50Kik7CiAgICAgdm9pZCB1cGRhdGUoKTsKIAotcHJpdmF0ZToKK3Byb3RlY3RlZDoK
ICAgICBNZWRpYUNvbnRyb2xWb2x1bWVTbGlkZXJFbGVtZW50KEhUTUxNZWRpYUVsZW1lbnQqKTsK
IAorcHJpdmF0ZToKICAgICB2aXJ0dWFsIGNvbnN0IEF0b21pY1N0cmluZyYgc2hhZG93UHNldWRv
SWQoKSBjb25zdDsKIH07CiAKQEAgLTM5NCw2ICszOTUsNDYgQEAgcHJpdmF0ZToKIAogLy8gLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCitjbGFzcyBNZWRpYUNvbnRyb2xGdWxsc2NyZWVu
Vm9sdW1lU2xpZGVyRWxlbWVudCA6IHB1YmxpYyBNZWRpYUNvbnRyb2xWb2x1bWVTbGlkZXJFbGVt
ZW50IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxNZWRpYUNvbnRyb2xGdWxsc2Ny
ZWVuVm9sdW1lU2xpZGVyRWxlbWVudD4gY3JlYXRlKEhUTUxNZWRpYUVsZW1lbnQqKTsKKyAgICAK
K3ByaXZhdGU6CisgICAgTWVkaWFDb250cm9sRnVsbHNjcmVlblZvbHVtZVNsaWRlckVsZW1lbnQo
SFRNTE1lZGlhRWxlbWVudCopOworICAgIAorICAgIHZpcnR1YWwgY29uc3QgQXRvbWljU3RyaW5n
JiBzaGFkb3dQc2V1ZG9JZCgpIGNvbnN0OworfTsKKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLQorCitjbGFzcyBNZWRpYUNvbnRyb2xGdWxsc2NyZWVuVm9sdW1lTWluQnV0dG9uRWxl
bWVudCA6IHB1YmxpYyBNZWRpYUNvbnRyb2xJbnB1dEVsZW1lbnQgeworcHVibGljOgorICAgIHN0
YXRpYyBQYXNzUmVmUHRyPE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5Wb2x1bWVNaW5CdXR0b25FbGVt
ZW50PiBjcmVhdGUoSFRNTE1lZGlhRWxlbWVudCopOworICAgIAorICAgIHZpcnR1YWwgdm9pZCBk
ZWZhdWx0RXZlbnRIYW5kbGVyKEV2ZW50Kik7CisgICAgCitwcml2YXRlOgorICAgIE1lZGlhQ29u
dHJvbEZ1bGxzY3JlZW5Wb2x1bWVNaW5CdXR0b25FbGVtZW50KEhUTUxNZWRpYUVsZW1lbnQqKTsK
KyAgICAKKyAgICB2aXJ0dWFsIGNvbnN0IEF0b21pY1N0cmluZyYgc2hhZG93UHNldWRvSWQoKSBj
b25zdDsKK307CisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworY2xhc3MgTWVk
aWFDb250cm9sRnVsbHNjcmVlblZvbHVtZU1heEJ1dHRvbkVsZW1lbnQgOiBwdWJsaWMgTWVkaWFD
b250cm9sSW5wdXRFbGVtZW50IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxNZWRp
YUNvbnRyb2xGdWxsc2NyZWVuVm9sdW1lTWF4QnV0dG9uRWxlbWVudD4gY3JlYXRlKEhUTUxNZWRp
YUVsZW1lbnQqKTsKKyAgICAKKyAgICB2aXJ0dWFsIHZvaWQgZGVmYXVsdEV2ZW50SGFuZGxlcihF
dmVudCopOworICAgIAorcHJpdmF0ZToKKyAgICBNZWRpYUNvbnRyb2xGdWxsc2NyZWVuVm9sdW1l
TWF4QnV0dG9uRWxlbWVudChIVE1MTWVkaWFFbGVtZW50Kik7CisgICAgCisgICAgdmlydHVhbCBj
b25zdCBBdG9taWNTdHJpbmcmIHNoYWRvd1BzZXVkb0lkKCkgY29uc3Q7Cit9OworCisvLyAtLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKIGNsYXNzIE1lZGlhQ29udHJvbFRpbWVEaXNwbGF5
RWxlbWVudCA6IHB1YmxpYyBNZWRpYUNvbnRyb2xFbGVtZW50IHsKIHB1YmxpYzoKICAgICB2b2lk
IHNldEN1cnJlbnRWYWx1ZShmbG9hdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyVGhlbWUuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVt
ZS5oCmluZGV4IDM1ZjI1NmM5NmEzNTZkZmE3NmUwZGE3NzY4OTVmMTI3YWFlYTgwNjQuLjNjY2U0
YzFhZmIzZThhZTQwYjQzZjYxZmYwZGFlZWQ4NWNlNzAwZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJUaGVtZS5oCkBAIC04OCw2ICs4OCw5IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFs
IFN0cmluZyBleHRyYVF1aXJrc1N0eWxlU2hlZXQoKSB7IHJldHVybiBTdHJpbmcoKTsgfQogI2lm
IEVOQUJMRShWSURFTykKICAgICB2aXJ0dWFsIFN0cmluZyBleHRyYU1lZGlhQ29udHJvbHNTdHls
ZVNoZWV0KCkgeyByZXR1cm4gU3RyaW5nKCk7IH07CisjaWYgRU5BQkxFKEZVTExTQ1JFRU5fQVBJ
KQorICAgIHZpcnR1YWwgU3RyaW5nIGV4dHJhRnVsbFNjcmVlblN0eWxlU2hlZXQoKSB7IHJldHVy
biBTdHJpbmcoKTsgfTsKKyNlbmRpZgogI2VuZGlmCiAKICAgICAvLyBBIG1ldGhvZCB0byBvYnRh
aW4gdGhlIGJhc2VsaW5lIHBvc2l0aW9uIGZvciBhICJsZWFmIiBjb250cm9sLiAgVGhpcyB3aWxs
IG9ubHkgYmUgdXNlZCBpZiBhIGJhc2VsaW5lCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyVGhlbWVNYWMuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJUaGVtZU1hYy5oCmluZGV4IGQ5NTFmZjYzMDg5ZTVmZDcwMTBlMzFiMWY5MTk2NzIzNGFmZDc0
NjYuLmQ2NDk0NGI4MTQwMDExNWMwZWFiODI4ZmExZDBhN2I4M2QxYTBlZjQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZU1hYy5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZU1hYy5oCkBAIC0xNjIsNiArMTYyLDkgQEAgcHJv
dGVjdGVkOgogCiAgICAgLy8gTWVkaWEgY29udHJvbHMKICAgICB2aXJ0dWFsIFN0cmluZyBleHRy
YU1lZGlhQ29udHJvbHNTdHlsZVNoZWV0KCk7CisjaWYgRU5BQkxFKEZVTExTQ1JFRU5fQVBJKQor
ICAgIHZpcnR1YWwgU3RyaW5nIGV4dHJhRnVsbFNjcmVlblN0eWxlU2hlZXQoKTsKKyNlbmRpZgog
CiAgICAgdmlydHVhbCBib29sIHNob3VsZFJlbmRlck1lZGlhQ29udHJvbFBhcnQoQ29udHJvbFBh
cnQsIEVsZW1lbnQqKTsKICAgICB2aXJ0dWFsIGJvb2wgdXNlc01lZGlhQ29udHJvbFN0YXR1c0Rp
c3BsYXkoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVt
ZU1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZU1hYy5tbQppbmRl
eCBmNTYxMWRjZGQ3NDY4NjM0Y2U5MjUwOWQ1MDVkZDg0ZTYzZTgyZTA5Li43NWI5MmQxNmNhMmJl
YmYyNDMxMzQ3NzRkMWZiZDM1MWU1ODk4ZDZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyVGhlbWVNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclRoZW1lTWFjLm1tCkBAIC0xOTYxLDIwICsxOTYxLDQ1IEBAIFN0cmluZyBSZW5kZXJU
aGVtZU1hYzo6ZXh0cmFNZWRpYUNvbnRyb2xzU3R5bGVTaGVldCgpCiAjZW5kaWYKIH0KIAorI2lm
IEVOQUJMRShGVUxMU0NSRUVOX0FQSSkKK1N0cmluZyBSZW5kZXJUaGVtZU1hYzo6ZXh0cmFGdWxs
U2NyZWVuU3R5bGVTaGVldCgpCit7CisjaWYgUExBVEZPUk0oTUFDKQorICAgIGlmIChtZWRpYUNv
bnRyb2xsZXJUaGVtZSgpID09IE1lZGlhQ29udHJvbGxlclRoZW1lUXVpY2tUaW1lKQorICAgICAg
ICByZXR1cm4gU3RyaW5nKGZ1bGxzY3JlZW5RdWlja1RpbWVVc2VyQWdlbnRTdHlsZVNoZWV0LCBz
aXplb2YoZnVsbHNjcmVlblF1aWNrVGltZVVzZXJBZ2VudFN0eWxlU2hlZXQpKTsKKyAgICAKKyAg
ICByZXR1cm4gU3RyaW5nKCk7CisjZWxzZQorICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAg
IHJldHVybiBTdHJpbmcoKTsKKyNlbmRpZgorfQorI2VuZGlmCisKIGJvb2wgUmVuZGVyVGhlbWVN
YWM6OnNob3VsZFJlbmRlck1lZGlhQ29udHJvbFBhcnQoQ29udHJvbFBhcnQgcGFydCwgRWxlbWVu
dCogZWxlbWVudCkKIHsKKyAgICBIVE1MTWVkaWFFbGVtZW50KiBtZWRpYUVsZW1lbnQgPSBzdGF0
aWNfY2FzdDxIVE1MTWVkaWFFbGVtZW50Kj4oZWxlbWVudCk7CiAgICAgc3dpdGNoIChwYXJ0KSB7
CiAgICAgY2FzZSBNZWRpYVZvbHVtZVNsaWRlckNvbnRhaW5lclBhcnQ6CiAgICAgY2FzZSBNZWRp
YVZvbHVtZVNsaWRlclBhcnQ6CiAgICAgY2FzZSBNZWRpYVZvbHVtZVNsaWRlck11dGVCdXR0b25Q
YXJ0OgogICAgIGNhc2UgTWVkaWFWb2x1bWVTbGlkZXJUaHVtYlBhcnQ6IHsKLSAgICAgICAgSFRN
TE1lZGlhRWxlbWVudCogbWVkaWFFbGVtZW50ID0gc3RhdGljX2Nhc3Q8SFRNTE1lZGlhRWxlbWVu
dCo+KGVsZW1lbnQpOwogICAgICAgICByZXR1cm4gbWVkaWFDb250cm9sbGVyVGhlbWUoKSA9PSBN
ZWRpYUNvbnRyb2xsZXJUaGVtZVF1aWNrVGltZSAmJiBtZWRpYUVsZW1lbnQtPmhhc0F1ZGlvKCk7
CiAgICAgfQogICAgIGNhc2UgTWVkaWFUb2dnbGVDbG9zZWRDYXB0aW9uc0J1dHRvblBhcnQ6CiAg
ICAgICAgIC8vIFdlIHJlbHkgb24gUVRLaXQgdG8gcmVuZGVyIGNhcHRpb25zIHNvIGRvbid0IGVu
YWJsZSB0aGUgYnV0dG9uIHVubGVzcyBpdCB3aWxsIGJlIGFibGUgdG8gZG8gc28uCiAgICAgICAg
IGlmICghZWxlbWVudC0+aGFzVGFnTmFtZSh2aWRlb1RhZykpCiAgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgTWVkaWFSZXdpbmRCdXR0b25QYXJ0Ogor
ICAgICAgICByZXR1cm4gbWVkaWFFbGVtZW50LT5pc0Z1bGxzY3JlZW4oKQorICAgICAgICAgICAg
JiYgKG1lZGlhRWxlbWVudC0+bW92aWVMb2FkVHlwZSgpID09IE1lZGlhUGxheWVyOjpMaXZlU3Ry
ZWFtIAorICAgICAgICAgICAgfHwgbWVkaWFFbGVtZW50LT5tb3ZpZUxvYWRUeXBlKCkgPT0gTWVk
aWFQbGF5ZXI6OlN0b3JlZFN0cmVhbSk7CisgICAgY2FzZSBNZWRpYVNlZWtGb3J3YXJkQnV0dG9u
UGFydDoKKyAgICBjYXNlIE1lZGlhU2Vla0JhY2tCdXR0b25QYXJ0OgorICAgICAgICByZXR1cm4g
bWVkaWFFbGVtZW50LT5pc0Z1bGxzY3JlZW4oKSAKKyAgICAgICAgICAgICYmIG1lZGlhRWxlbWVu
dC0+bW92aWVMb2FkVHlwZSgpICE9IE1lZGlhUGxheWVyOjpTdG9yZWRTdHJlYW0gCisgICAgICAg
ICAgICAmJiBtZWRpYUVsZW1lbnQtPm1vdmllTG9hZFR5cGUoKSAhPSBNZWRpYVBsYXllcjo6TGl2
ZVN0cmVhbTsKICAgICBkZWZhdWx0OgogICAgICAgICBicmVhazsKICAgICB9Cg==
</data>
<flag name="review"
          id="79401"
          type_id="1"
          status="+"
          setter="eric.carlson"
    />
          </attachment>
      

    </bug>

</bugzilla>