<?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>152847</bug_id>
          
          <creation_ts>2016-01-07 12:33:55 -0800</creation_ts>
          <short_desc>Absolute positioning -webkit-search-cancel-button crashes Safari</short_desc>
          <delta_ts>2016-01-08 22:28:04 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>CSS</component>
          <version>Safari 9</version>
          <rep_platform>Mac</rep_platform>
          <op_sys>OS X 10.10</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter>m.renty</reporter>
          <assigned_to name="alan">zalan</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>dbates</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>glenn</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>zalan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1153515</commentid>
    <comment_count>0</comment_count>
    <who name="">m.renty</who>
    <bug_when>2016-01-07 12:33:55 -0800</bug_when>
    <thetext>When trying to absolute position of the -webkit-search-cancel-button of an input[type=search] Safari quits unexpectedly.
I recreated it in JSBin http://jsbin.com/bimiqipojo, you can trigger it by focussing the input.
Tested this both in OSX 10.10 and 10.11.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1153751</commentid>
    <comment_count>1</comment_count>
    <who name="alan">zalan</who>
    <bug_when>2016-01-07 19:42:44 -0800</bug_when>
    <thetext>I can&apos;t reproduce it with trunk r194751.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1153775</commentid>
    <comment_count>2</comment_count>
    <who name="">m.renty</who>
    <bug_when>2016-01-08 00:18:58 -0800</bug_when>
    <thetext>What do you mean with trunk r194751?
I have enclosed a link to JSBin where I recreated the bug, when you focus the input Safari quits every time.

(In reply to comment #1)
&gt; I can&apos;t reproduce it with trunk r194751.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1153965</commentid>
    <comment_count>3</comment_count>
    <who name="alan">zalan</who>
    <bug_when>2016-01-08 13:07:45 -0800</bug_when>
    <thetext>(In reply to comment #2)
&gt; What do you mean with trunk r194751?
&gt; I have enclosed a link to JSBin where I recreated the bug, when you focus
&gt; the input Safari quits every time.
&gt; 
&gt; (In reply to comment #1)
&gt; &gt; I can&apos;t reproduce it with trunk r194751.

Could you include the version of Safari that you use to reproduce this crash?
(something like Version 9.0.X (XXXXX.X.X))</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1153973</commentid>
    <comment_count>4</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2016-01-08 13:18:34 -0800</bug_when>
    <thetext>I can reproduce with r194567. Click in the input, then type:

Thread 0 Crashed:: Dispatch queue: com.apple.main-thread
0   com.apple.WebCore             	0x000000010cb003b7 WebCore::RenderBox::offsetFromContainer(WebCore::RenderElement&amp;, WebCore::LayoutPoint const&amp;, bool*) const + 135
1   com.apple.WebCore             	0x000000010cbeade3 WebCore::RenderThemeMac::convertToPaintingRect(WebCore::RenderObject const&amp;, WebCore::RenderObject const&amp;, WebCore::FloatRect const&amp;, WebCore::IntRect const&amp;) const + 131
2   com.apple.WebCore             	0x000000010cbef558 WebCore::RenderThemeMac::paintSearchFieldCancelButton(WebCore::RenderObject const&amp;, WebCore::PaintInfo const&amp;, WebCore::IntRect const&amp;) + 1096
3   com.apple.WebCore             	0x000000010cbe740c WebCore::RenderTheme::paint(WebCore::RenderBox const&amp;, WebCore::ControlStates&amp;, WebCore::PaintInfo const&amp;, WebCore::LayoutRect const&amp;) + 1516
4   com.apple.WebCore             	0x000000010bed579d WebCore::RenderBox::paintBoxDecorations(WebCore::PaintInfo&amp;, WebCore::LayoutPoint const&amp;) + 541
5   com.apple.WebCore             	0x000000010bed2db5 WebCore::RenderBlock::paintObject(WebCore::PaintInfo&amp;, WebCore::LayoutPoint const&amp;) + 277
6   com.apple.WebCore             	0x000000010bed5126 WebCore::RenderBlock::paint(WebCore::PaintInfo&amp;, WebCore::LayoutPoint const&amp;) + 326
7   com.apple.WebCore             	0x000000010cb57871 WebCore::RenderLayer::paintBackgroundForFragments(WTF::Vector&lt;WebCore::LayerFragment, 1ul, WTF::CrashOnOverflow, 16ul&gt; const&amp;, WebCore::GraphicsContext&amp;, WebCore::GraphicsContext&amp;, WebCore::LayoutRect const&amp;, bool, WebCore::RenderLayer::LayerPaintingInfo const&amp;, unsigned int, WebCore::RenderObject*) + 385
8   com.apple.WebCore             	0x000000010cb546ea WebCore::RenderLayer::paintLayerContents(WebCore::GraphicsContext&amp;, WebCore::RenderLayer::LayerPaintingInfo const&amp;, unsigned int) + 2650
9   com.apple.WebCore             	0x000000010cb54988 WebCore::RenderLayer::paintLayerContents(WebCore::GraphicsContext&amp;, WebCore::RenderLayer::LayerPaintingInfo const&amp;, unsigned int) + 3320
10  com.apple.WebCore             	0x000000010cb54988 WebCore::RenderLayer::paintLayerContents(WebCore::GraphicsContext&amp;, WebCore::RenderLayer::LayerPaintingInfo const&amp;, unsigned int) + 3320
11  com.apple.WebCore             	0x000000010cb52677 WebCore::RenderLayer::paint(WebCore::GraphicsContext&amp;, WebCore::LayoutRect const&amp;, WebCore::LayoutSize const&amp;, unsigned int, WebCore::RenderObject*, unsigned int) + 263
12  com.apple.WebCore             	0x000000010c43cd12 WebCore::FrameView::paintContents(WebCore::GraphicsContext&amp;, WebCore::IntRect const&amp;) + 514
13  com.apple.WebCore             	0x000000010cc58630 WebCore::ScrollView::paint(WebCore::GraphicsContext&amp;, WebCore::IntRect const&amp;) + 416
14  com.apple.WebCore             	0x000000010bfa174d WebCore::RenderWidget::paintContents(WebCore::PaintInfo&amp;, WebCore::LayoutPoint const&amp;) + 909
15  com.apple.WebCore             	0x000000010bfa10e3 WebCore::RenderWidget::paint(WebCore::PaintInfo&amp;, WebCore::LayoutPoint const&amp;) + 787
16  com.apple.WebCore             	0x000000010cb5abba WebCore::RenderLayer::paintForegroundForFragmentsWithPhase(WebCore::PaintPhase, WTF::Vector&lt;WebCore::LayerFragment, 1ul, WTF::CrashOnOverflow, 16ul&gt; const&amp;, WebCore::GraphicsContext&amp;, WebCore::RenderLayer::LayerPaintingInfo const&amp;, unsigned int, WebCore::RenderObject*) + 394
17  com.apple.WebCore             	0x000000010cb57b40 WebCore::RenderLayer::paintForegroundForFragments(WTF::Vector&lt;WebCore::LayerFragment, 1ul, WTF::CrashOnOverflow, 16ul&gt; const&amp;, WebCore::GraphicsContext&amp;, WebCore::GraphicsContext&amp;, WebCore::LayoutRect const&amp;, bool, WebCore::RenderLayer::LayerPaintingInfo const&amp;, unsigned int, WebCore::RenderObject*, bool) + 496
18  com.apple.WebCore             	0x000000010cb54840 WebCore::RenderLayer::paintLayerContents(WebCore::GraphicsContext&amp;, WebCore::RenderLayer::LayerPaintingInfo const&amp;, unsigned int) + 2992
19  com.apple.WebCore             	0x000000010cb54988 WebCore::RenderLayer::paintLayerContents(WebCore::GraphicsContext&amp;, WebCore::RenderLayer::LayerPaintingInfo const&amp;, unsigned int) + 3320
20  com.apple.WebCore             	0x000000010cb54988 WebCore::RenderLayer::paintLayerContents(WebCore::GraphicsContext&amp;, WebCore::RenderLayer::LayerPaintingInfo const&amp;, unsigned int) + 3320
21  com.apple.WebCore             	0x000000010cb52677 WebCore::RenderLayer::paint(WebCore::GraphicsContext&amp;, WebCore::LayoutRect const&amp;, WebCore::LayoutSize const&amp;, unsigned int, WebCore::RenderObject*, unsigned int) + 263
22  com.apple.WebCore             	0x000000010c43cd12 WebCore::FrameView::paintContents(WebCore::GraphicsContext&amp;, WebCore::IntRect const&amp;) + 514
23  com.apple.WebCore             	0x000000010cc58630 WebCore::ScrollView::paint(WebCore::GraphicsContext&amp;, WebCore::IntRect const&amp;) + 416
24  com.apple.WebCore             	0x000000010bfa174d WebCore::RenderWidget::paintContents(WebCore::PaintInfo&amp;, WebCore::LayoutPoint const&amp;) + 909
25  com.apple.WebCore             	0x000000010bfa10e3 WebCore::RenderWidget::paint(WebCore::PaintInfo&amp;, WebCore::LayoutPoint const&amp;) + 787
26  com.apple.WebCore             	0x000000010cb5abba WebCore::RenderLayer::paintForegroundForFragmentsWithPhase(WebCore::PaintPhase, WTF::Vector&lt;WebCore::LayerFragment, 1ul, WTF::CrashOnOverflow, 16ul&gt; const&amp;, WebCore::GraphicsContext&amp;, WebCore::RenderLayer::LayerPaintingInfo const&amp;, unsigned int, WebCore::RenderObject*) + 394
27  com.apple.WebCore             	0x000000010cb57b40 WebCore::RenderLayer::paintForegroundForFragments(WTF::Vector&lt;WebCore::LayerFragment, 1ul, WTF::CrashOnOverflow, 16ul&gt; const&amp;, WebCore::GraphicsContext&amp;, WebCore::GraphicsContext&amp;, WebCore::LayoutRect const&amp;, bool, WebCore::RenderLayer::LayerPaintingInfo const&amp;, unsigned int, WebCore::RenderObject*, bool) + 496
28  com.apple.WebCore             	0x000000010cb54840 WebCore::RenderLayer::paintLayerContents(WebCore::GraphicsContext&amp;, WebCore::RenderLayer::LayerPaintingInfo const&amp;, unsigned int) + 2992
29  com.apple.WebCore             	0x000000010cb54988 WebCore::RenderLayer::paintLayerContents(WebCore::GraphicsContext&amp;, WebCore::RenderLayer::LayerPaintingInfo const&amp;, unsigned int) + 3320
30  com.apple.WebCore             	0x000000010cb54988 WebCore::RenderLayer::paintLayerContents(WebCore::GraphicsContext&amp;, WebCore::RenderLayer::LayerPaintingInfo const&amp;, unsigned int) + 3320
31  com.apple.WebCore             	0x000000010cb54988 WebCore::RenderLayer::paintLayerContents(WebCore::GraphicsContext&amp;, WebCore::RenderLayer::LayerPaintingInfo const&amp;, unsigned int) + 3320
32  com.apple.WebCore             	0x000000010cb54988 WebCore::RenderLayer::paintLayerContents(WebCore::GraphicsContext&amp;, WebCore::RenderLayer::LayerPaintingInfo const&amp;, unsigned int) + 3320
33  com.apple.WebCore             	0x000000010cb65bcc WebCore::RenderLayerBacking::paintIntoLayer(WebCore::GraphicsLayer const*, WebCore::GraphicsContext&amp;, WebCore::IntRect const&amp;, unsigned int, unsigned int) + 524
34  com.apple.WebCore             	0x000000010cb65e70 WebCore::RenderLayerBacking::paintContents(WebCore::GraphicsLayer const*, WebCore::GraphicsContext&amp;, unsigned int, WebCore::FloatRect const&amp;) + 528
35  com.apple.WebCore             	0x000000010c469977 WebCore::GraphicsLayer::paintGraphicsLayerContents(WebCore::GraphicsContext&amp;, WebCore::FloatRect const&amp;) + 135
36  com.apple.WebCore             	0x000000010caa18c9 WebCore::PlatformCALayer::drawLayerContents(CGContext*, WebCore::PlatformCALayer*, WTF::Vector&lt;WebCore::FloatRect, 5ul, WTF::CrashOnOverflow, 16ul&gt;&amp;) + 345
37  com.apple.WebCore             	0x000000010ce1e533 WebCore::TileGrid::platformCALayerPaintContents(WebCore::PlatformCALayer*, WebCore::GraphicsContext&amp;, WebCore::FloatRect const&amp;) + 163
38  com.apple.WebCore             	0x000000010cec34ac -[WebSimpleLayer drawInContext:] + 172</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1153974</commentid>
    <comment_count>5</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2016-01-08 13:18:45 -0800</bug_when>
    <thetext>&lt;rdar://problem/24112087&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1153975</commentid>
    <comment_count>6</comment_count>
    <who name="">m.renty</who>
    <bug_when>2016-01-08 13:20:53 -0800</bug_when>
    <thetext>It occurs in Safari Version 9.0.2 (10601.3.9) both on OSX 10.10.5 and 10.11.2.
When you focus the input[type=search] everything is fine, but when you type the first character Safari quits.

(In reply to comment #3)
&gt; (In reply to comment #2)
&gt; &gt; What do you mean with trunk r194751?
&gt; &gt; I have enclosed a link to JSBin where I recreated the bug, when you focus
&gt; &gt; the input Safari quits every time.
&gt; &gt; 
&gt; &gt; (In reply to comment #1)
&gt; &gt; &gt; I can&apos;t reproduce it with trunk r194751.
&gt; 
&gt; Could you include the version of Safari that you use to reproduce this crash?
&gt; (something like Version 9.0.X (XXXXX.X.X))</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1153984</commentid>
    <comment_count>7</comment_count>
    <who name="alan">zalan</who>
    <bug_when>2016-01-08 13:30:35 -0800</bug_when>
    <thetext>containingRenderer -&gt; null

ASSERTION FAILED: containingRenderer
RenderThemeMac.mm(685) : WebCore::FloatRect WebCore::RenderThemeMac::convertToPaintingRect(const WebCore::RenderObject &amp;, const WebCore::RenderObject &amp;, const WebCore::FloatRect &amp;, const WebCore::IntRect &amp;) const
1   0x10f02cb80 WTFCrash
2   0x112bad992 WebCore::RenderThemeMac::convertToPaintingRect(WebCore::RenderObject const&amp;, WebCore::RenderObject const&amp;, WebCore::FloatRect const&amp;, WebCore::IntRect const&amp;) const
3   0x112bb6b21 WebCore::RenderThemeMac::paintSearchFieldCancelButton(WebCore::RenderObject const&amp;, WebCore::PaintInfo const&amp;, WebCore::IntRect const&amp;)
4   0x112ba566c WebCore::RenderTheme::paint(WebCore::RenderBox const&amp;, WebCore::ControlStates&amp;, WebCore::PaintInfo const&amp;, WebCore::LayoutRect const&amp;)
5   0x112902d79 WebCore::RenderBox::paintBoxDecorations(WebCore::PaintInfo&amp;, WebCore::LayoutPoint const&amp;)
6   0x112892dd4 WebCore::RenderBlock::paintObject(WebCore::PaintInfo&amp;, WebCore::LayoutPoint const&amp;)
7   0x1128920e5 WebCore::RenderBlock::paint(WebCore::PaintInfo&amp;, WebCore::LayoutPoint const&amp;)
8   0x1129eb250 WebCore::RenderLayer::paintBackgroundForFragments(WTF::Vector&lt;WebCore::LayerFragment, 1ul, WTF::CrashOnOverflow, 16ul&gt; const&amp;, WebCore::GraphicsContext&amp;, WebCore::GraphicsContext&amp;, WebCore::LayoutRect const&amp;, bool, WebCore::RenderLayer::LayerPaintingInfo const&amp;, unsigned int, WebCore::RenderObject*)
9   0x1129e75f6 WebCore::RenderLayer::paintLayerContents(WebCore::GraphicsContext&amp;, WebCore::RenderLayer::LayerPaintingInfo const&amp;, unsigned int)
10  0x1129e6c5a WebCore::RenderLayer::paintLayerContentsAndReflection(WebCore::GraphicsContext&amp;, WebCore::RenderLayer::LayerPaintingInfo const&amp;, unsigned int)
11  0x1129e59d6 WebCore::RenderLayer::paintLayer(WebCore::GraphicsContext&amp;, WebCore::RenderLayer::LayerPaintingInfo const&amp;, unsigned int)
12  0x1129eb374 WebCore::RenderLayer::paintList(WTF::Vector&lt;WebCore::RenderLayer*, 0ul, WTF::CrashOnOverflow, 16ul&gt;*, WebCore::GraphicsContext&amp;, WebCore::RenderLayer::LayerPaintingInfo const&amp;, unsigned int)
13  0x1129e7848 WebCore::RenderLayer::paintLayerContents(WebCore::GraphicsContext&amp;, WebCore::RenderLayer::LayerPaintingInfo const&amp;, unsigned int)
14  0x1129e6c5a WebCore::RenderLayer::paintLayerContentsAndReflection(WebCore::GraphicsContext&amp;, WebCore::RenderLayer::LayerPaintingInfo const&amp;, unsigned int)
15  0x1129e59d6 WebCore::RenderLayer::paintLayer(WebCore::GraphicsContext&amp;, WebCore::RenderLayer::LayerPaintingInfo const&amp;, unsigned int)
16  0x1129eb374 WebCore::RenderLayer::paintList(WTF::Vector&lt;WebCore::RenderLayer*, 0ul, WTF::CrashOnOverflow, 16ul&gt;*, WebCore::GraphicsContext&amp;, WebCore::RenderLayer::LayerPaintingInfo const&amp;, unsigned int)
17  0x1129e7848 WebCore::RenderLayer::paintLayerContents(WebCore::GraphicsContext&amp;, WebCore::RenderLayer::LayerPaintingInfo const&amp;, unsigned int)
18  0x1129e6c5a WebCore::RenderLayer::paintLayerContentsAndReflection(WebCore::GraphicsContext&amp;, WebCore::RenderLayer::LayerPaintingInfo const&amp;, unsigned int)
19  0x1129e59d6 WebCore::RenderLayer::paintLayer(WebCore::GraphicsContext&amp;, WebCore::RenderLayer::LayerPaintingInfo const&amp;, unsigned int)
20  0x1129e5321 WebCore::RenderLayer::paint(WebCore::GraphicsContext&amp;, WebCore::LayoutRect const&amp;, WebCore::LayoutSize const&amp;, unsigned int, WebCore::RenderObject*, unsigned int)
21  0x11185b3ce WebCore::FrameView::paintContents(WebCore::GraphicsContext&amp;, WebCore::IntRect const&amp;)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1154099</commentid>
    <comment_count>8</comment_count>
      <attachid>268605</attachid>
    <who name="alan">zalan</who>
    <bug_when>2016-01-08 20:13:16 -0800</bug_when>
    <thetext>Created attachment 268605
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1154105</commentid>
    <comment_count>9</comment_count>
      <attachid>268610</attachid>
    <who name="alan">zalan</who>
    <bug_when>2016-01-08 20:54:17 -0800</bug_when>
    <thetext>Created attachment 268610
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1154106</commentid>
    <comment_count>10</comment_count>
      <attachid>268610</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2016-01-08 21:22:49 -0800</bug_when>
    <thetext>Comment on attachment 268610
Patch

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

&gt; Source/WebCore/rendering/RenderThemeMac.mm:679
&gt; +    IntPoint offsetFromInputRenderer = roundedIntPoint(customButtonRenderer.localToContainerPoint(customButtonRenderer.contentBoxRect().location(), &amp;inputRenderer));

Should this be FloatPoint or LayoutPoint?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1154123</commentid>
    <comment_count>11</comment_count>
      <attachid>268610</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-01-08 22:27:59 -0800</bug_when>
    <thetext>Comment on attachment 268610
Patch

Clearing flags on attachment: 268610

Committed r194817: &lt;http://trac.webkit.org/changeset/194817&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1154124</commentid>
    <comment_count>12</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-01-08 22:28:04 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>268605</attachid>
            <date>2016-01-08 20:13:16 -0800</date>
            <delta_ts>2016-01-08 20:54:13 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-152847-20160108201244.patch</filename>
            <type>text/plain</type>
            <size>17621</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk0Nzc1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjRhYWFlM2VhODhhZWZj
YTkyNzUzMTQxYTY3NWMwZmYyNzIzYTJiMi4uYTk4NGMxMGUzNWM2YWRkYjRhNzQ2NDVjM2U1NzZm
ZDdkZjAzNzczNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDMxIEBACiAyMDE2LTAxLTA4ICBaYWxh
biBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CiAKKyAgICAgICAgQWJzb2x1dGUgcG9zaXRpb25p
bmcgLXdlYmtpdC1zZWFyY2gtY2FuY2VsLWJ1dHRvbiBjcmFzaGVzIFNhZmFyaS4KKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1Mjg0NworICAgICAgICA8
cmRhcjovL3Byb2JsZW0vMjQxMTIwODc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgRG8gbm90IGNhbGwgb2Zmc2V0RnJvbUNvbnRhaW5lciB3aGlsZSBy
ZXNvbHZpbmcgdGhlIHBhaW50aW5nIHBvc2l0aW9uIGZvciB0aGUgc2VhcmNoL2NhbmNlbCBidXR0
b24gcmVuZGVyZXIuCisgICAgICAgIEl0IHNraXBzIHRoZSBzdGF0aWMgcG9zaXRpb25lZCBwYXJl
bnQgaW5wdXQgcmVuZGVyZXIsIHdoZW4gdGhlIHNlYXJjaC9jYW5jZWwgcmVuZGVyZXIgaXMgYWJz
b2x1dGUgcG9zaXRpb25lZC4KKyAgICAgICAgVGhpcyBwYXRjaCBhbHNvIGZpeGVzIGEgcmVuZGVy
aW5nIGdsaXRjaCB3aGVuIHRoZSBtYXJnaW4tcmlnaHQgaXMgPiAwLgorCisgICAgICAgIFRlc3Q6
IGZhc3QvZm9ybXMvYWJzb2x1dGUtcG9zaXRpb25lZC1jdXN0b20tc2VhcmNoLWNhbmNlbC1jcmFz
aC5odG1sCisKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGhlbWUuaDoKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlclRoZW1lOjpwYWludFNlYXJjaEZpZWxkQ2FuY2VsQnV0dG9uKToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lOjpwYWludFNlYXJjaEZpZWxkUmVzdWx0c0RlY29yYXRp
b25QYXJ0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lOjpwYWludFNlYXJjaEZpZWxk
UmVzdWx0c0J1dHRvbik6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRoZW1lTWFjLmg6Cisg
ICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRoZW1lTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6
Y29udmVydFRvUGFpbnRpbmdQb3NpdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVt
ZU1hYzo6cGFpbnRTZWFyY2hGaWVsZENhbmNlbEJ1dHRvbik6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJUaGVtZU1hYzo6cGFpbnRTZWFyY2hGaWVsZFJlc3VsdHNEZWNvcmF0aW9uUGFydCk6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZU1hYzo6cGFpbnRTZWFyY2hGaWVsZFJlc3VsdHNC
dXR0b24pOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVNYWM6OmNvbnZlcnRUb1BhaW50
aW5nUmVjdCk6IERlbGV0ZWQuCisKKzIwMTYtMDEtMDggIFphbGFuIEJ1anRhcyAgPHphbGFuQGFw
cGxlLmNvbT4KKwogICAgICAgICBIb3ZlcmluZyBsaW5rIG9uIGh0dHA6Ly9oZWxwLmFwcGxlLmNv
bS9hcHBsZXR2LyMvIGRvZXMgbm90IHNob3cgdGV4dCB1bmRlcmxpbmUuCiAgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTI5MDYKICAgICAgICAgPHJkYXI6
Ly9wcm9ibGVtLzIzMzM5NjE3PgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclRoZW1lLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWUuaApp
bmRleCA4ZDkxNjdhNjlhNjgzMjQxODVhNGIzYmNkZjNkZjZhYzhkMmM4ZGQ4Li41YTlkMjhiOGI1
NjM4YWIzZjNjODMyMTcyOWZkNzhhYTI4MGJmMzJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyVGhlbWUuaApAQCAtMzM4LDE2ICszMzgsMTYgQEAgcHJvdGVjdGVkOgogICAgIHZpcnR1
YWwgYm9vbCBwYWludFNlYXJjaEZpZWxkRGVjb3JhdGlvbnMoY29uc3QgUmVuZGVyT2JqZWN0Jiwg
Y29uc3QgUGFpbnRJbmZvJiwgY29uc3QgSW50UmVjdCYpIHsgcmV0dXJuIHRydWU7IH0KIAogICAg
IHZpcnR1YWwgdm9pZCBhZGp1c3RTZWFyY2hGaWVsZENhbmNlbEJ1dHRvblN0eWxlKFN0eWxlUmVz
b2x2ZXImLCBSZW5kZXJTdHlsZSYsIEVsZW1lbnQqKSBjb25zdDsKLSAgICB2aXJ0dWFsIGJvb2wg
cGFpbnRTZWFyY2hGaWVsZENhbmNlbEJ1dHRvbihjb25zdCBSZW5kZXJPYmplY3QmLCBjb25zdCBQ
YWludEluZm8mLCBjb25zdCBJbnRSZWN0JikgeyByZXR1cm4gdHJ1ZTsgfQorICAgIHZpcnR1YWwg
Ym9vbCBwYWludFNlYXJjaEZpZWxkQ2FuY2VsQnV0dG9uKGNvbnN0IFJlbmRlckJveCYsIGNvbnN0
IFBhaW50SW5mbyYsIGNvbnN0IEludFJlY3QmKSB7IHJldHVybiB0cnVlOyB9CiAKICAgICB2aXJ0
dWFsIHZvaWQgYWRqdXN0U2VhcmNoRmllbGREZWNvcmF0aW9uUGFydFN0eWxlKFN0eWxlUmVzb2x2
ZXImLCBSZW5kZXJTdHlsZSYsIEVsZW1lbnQqKSBjb25zdDsKICAgICB2aXJ0dWFsIGJvb2wgcGFp
bnRTZWFyY2hGaWVsZERlY29yYXRpb25QYXJ0KGNvbnN0IFJlbmRlck9iamVjdCYsIGNvbnN0IFBh
aW50SW5mbyYsIGNvbnN0IEludFJlY3QmKSB7IHJldHVybiB0cnVlOyB9CiAKICAgICB2aXJ0dWFs
IHZvaWQgYWRqdXN0U2VhcmNoRmllbGRSZXN1bHRzRGVjb3JhdGlvblBhcnRTdHlsZShTdHlsZVJl
c29sdmVyJiwgUmVuZGVyU3R5bGUmLCBFbGVtZW50KikgY29uc3Q7Ci0gICAgdmlydHVhbCBib29s
IHBhaW50U2VhcmNoRmllbGRSZXN1bHRzRGVjb3JhdGlvblBhcnQoY29uc3QgUmVuZGVyT2JqZWN0
JiwgY29uc3QgUGFpbnRJbmZvJiwgY29uc3QgSW50UmVjdCYpIHsgcmV0dXJuIHRydWU7IH0KKyAg
ICB2aXJ0dWFsIGJvb2wgcGFpbnRTZWFyY2hGaWVsZFJlc3VsdHNEZWNvcmF0aW9uUGFydChjb25z
dCBSZW5kZXJCb3gmLCBjb25zdCBQYWludEluZm8mLCBjb25zdCBJbnRSZWN0JikgeyByZXR1cm4g
dHJ1ZTsgfQogCiAgICAgdmlydHVhbCB2b2lkIGFkanVzdFNlYXJjaEZpZWxkUmVzdWx0c0J1dHRv
blN0eWxlKFN0eWxlUmVzb2x2ZXImLCBSZW5kZXJTdHlsZSYsIEVsZW1lbnQqKSBjb25zdDsKLSAg
ICB2aXJ0dWFsIGJvb2wgcGFpbnRTZWFyY2hGaWVsZFJlc3VsdHNCdXR0b24oY29uc3QgUmVuZGVy
T2JqZWN0JiwgY29uc3QgUGFpbnRJbmZvJiwgY29uc3QgSW50UmVjdCYpIHsgcmV0dXJuIHRydWU7
IH0KKyAgICB2aXJ0dWFsIGJvb2wgcGFpbnRTZWFyY2hGaWVsZFJlc3VsdHNCdXR0b24oY29uc3Qg
UmVuZGVyQm94JiwgY29uc3QgUGFpbnRJbmZvJiwgY29uc3QgSW50UmVjdCYpIHsgcmV0dXJuIHRy
dWU7IH0KIAogICAgIHZpcnR1YWwgdm9pZCBhZGp1c3RNZWRpYUNvbnRyb2xTdHlsZShTdHlsZVJl
c29sdmVyJiwgUmVuZGVyU3R5bGUmLCBFbGVtZW50KikgY29uc3Q7CiAgICAgdmlydHVhbCBib29s
IHBhaW50TWVkaWFGdWxsc2NyZWVuQnV0dG9uKGNvbnN0IFJlbmRlck9iamVjdCYsIGNvbnN0IFBh
aW50SW5mbyYsIGNvbnN0IEludFJlY3QmKSB7IHJldHVybiB0cnVlOyB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVNYWMuaCBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJUaGVtZU1hYy5oCmluZGV4IDNkZDg4MjQ4YzIyYjY3NGY5YzA3Nzlh
YTQ3NGRiNjhkMTA5OGVhYTIuLjllMjQ3YzM3Yzg2YjM5Yzg0N2M0NzExYzI4YTEyN2ZhY2ZjMTQ2
YjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZU1hYy5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZU1hYy5oCkBAIC0xNDQs
MTYgKzE0NCwxNiBAQCBwcm90ZWN0ZWQ6CiAgICAgdmlydHVhbCB2b2lkIGFkanVzdFNlYXJjaEZp
ZWxkU3R5bGUoU3R5bGVSZXNvbHZlciYsIFJlbmRlclN0eWxlJiwgRWxlbWVudCopIGNvbnN0IG92
ZXJyaWRlOwogCiAgICAgdmlydHVhbCB2b2lkIGFkanVzdFNlYXJjaEZpZWxkQ2FuY2VsQnV0dG9u
U3R5bGUoU3R5bGVSZXNvbHZlciYsIFJlbmRlclN0eWxlJiwgRWxlbWVudCopIGNvbnN0IG92ZXJy
aWRlOwotICAgIHZpcnR1YWwgYm9vbCBwYWludFNlYXJjaEZpZWxkQ2FuY2VsQnV0dG9uKGNvbnN0
IFJlbmRlck9iamVjdCYsIGNvbnN0IFBhaW50SW5mbyYsIGNvbnN0IEludFJlY3QmKSBvdmVycmlk
ZTsKKyAgICB2aXJ0dWFsIGJvb2wgcGFpbnRTZWFyY2hGaWVsZENhbmNlbEJ1dHRvbihjb25zdCBS
ZW5kZXJCb3gmLCBjb25zdCBQYWludEluZm8mLCBjb25zdCBJbnRSZWN0Jikgb3ZlcnJpZGU7CiAK
ICAgICB2aXJ0dWFsIHZvaWQgYWRqdXN0U2VhcmNoRmllbGREZWNvcmF0aW9uUGFydFN0eWxlKFN0
eWxlUmVzb2x2ZXImLCBSZW5kZXJTdHlsZSYsIEVsZW1lbnQqKSBjb25zdCBvdmVycmlkZTsKICAg
ICB2aXJ0dWFsIGJvb2wgcGFpbnRTZWFyY2hGaWVsZERlY29yYXRpb25QYXJ0KGNvbnN0IFJlbmRl
ck9iamVjdCYsIGNvbnN0IFBhaW50SW5mbyYsIGNvbnN0IEludFJlY3QmKSBvdmVycmlkZTsKIAog
ICAgIHZpcnR1YWwgdm9pZCBhZGp1c3RTZWFyY2hGaWVsZFJlc3VsdHNEZWNvcmF0aW9uUGFydFN0
eWxlKFN0eWxlUmVzb2x2ZXImLCBSZW5kZXJTdHlsZSYsIEVsZW1lbnQqKSBjb25zdCBvdmVycmlk
ZTsKLSAgICB2aXJ0dWFsIGJvb2wgcGFpbnRTZWFyY2hGaWVsZFJlc3VsdHNEZWNvcmF0aW9uUGFy
dChjb25zdCBSZW5kZXJPYmplY3QmLCBjb25zdCBQYWludEluZm8mLCBjb25zdCBJbnRSZWN0Jikg
b3ZlcnJpZGU7CisgICAgdmlydHVhbCBib29sIHBhaW50U2VhcmNoRmllbGRSZXN1bHRzRGVjb3Jh
dGlvblBhcnQoY29uc3QgUmVuZGVyQm94JiwgY29uc3QgUGFpbnRJbmZvJiwgY29uc3QgSW50UmVj
dCYpIG92ZXJyaWRlOwogCiAgICAgdmlydHVhbCB2b2lkIGFkanVzdFNlYXJjaEZpZWxkUmVzdWx0
c0J1dHRvblN0eWxlKFN0eWxlUmVzb2x2ZXImLCBSZW5kZXJTdHlsZSYsIEVsZW1lbnQqKSBjb25z
dCBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIGJvb2wgcGFpbnRTZWFyY2hGaWVsZFJlc3VsdHNCdXR0
b24oY29uc3QgUmVuZGVyT2JqZWN0JiwgY29uc3QgUGFpbnRJbmZvJiwgY29uc3QgSW50UmVjdCYp
IG92ZXJyaWRlOworICAgIHZpcnR1YWwgYm9vbCBwYWludFNlYXJjaEZpZWxkUmVzdWx0c0J1dHRv
bihjb25zdCBSZW5kZXJCb3gmLCBjb25zdCBQYWludEluZm8mLCBjb25zdCBJbnRSZWN0Jikgb3Zl
cnJpZGU7CiAKICNpZiBFTkFCTEUoVklERU8pCiAgICAgdmlydHVhbCBib29sIHN1cHBvcnRzQ2xv
c2VkQ2FwdGlvbmluZygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KQEAgLTE3Miw4
ICsxNzIsNiBAQCBwcm90ZWN0ZWQ6CiBwcml2YXRlOgogICAgIHZpcnR1YWwgU3RyaW5nIGZpbGVM
aXN0TmFtZUZvcldpZHRoKGNvbnN0IEZpbGVMaXN0KiwgY29uc3QgRm9udENhc2NhZGUmLCBpbnQg
d2lkdGgsIGJvb2wgbXVsdGlwbGVGaWxlc0FsbG93ZWQpIGNvbnN0IG92ZXJyaWRlOwogCi0gICAg
RmxvYXRSZWN0IGNvbnZlcnRUb1BhaW50aW5nUmVjdChjb25zdCBSZW5kZXJPYmplY3QmIGlucHV0
UmVuZGVyZXIsIGNvbnN0IFJlbmRlck9iamVjdCYgcGFydFJlbmRlcmVyLCBjb25zdCBGbG9hdFJl
Y3QmIGlucHV0UmVjdCwgY29uc3QgSW50UmVjdCYpIGNvbnN0OwotCiAgICAgdmlydHVhbCBDb2xv
ciBzeXN0ZW1Db2xvcihDU1NWYWx1ZUlEKSBjb25zdCBvdmVycmlkZTsKIAogICAgIC8vIEdldCB0
aGUgY29udHJvbCBzaXplIGJhc2VkIG9mZiB0aGUgZm9udC4gVXNlZCBieSBzb21lIG9mIHRoZSBj
b250cm9scyAobGlrZSBidXR0b25zKS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJUaGVtZU1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJU
aGVtZU1hYy5tbQppbmRleCAzMDQzYWQyNzRjNDU1NjUxODQ4NWQ0YzIyY2ZiOTE3NDA5ZDg4MGMy
Li5hZDEwZjI3N2E2NTFmNjA0YjNiYjRmNmJmMWZhZTQ2MzY5NmY3NTBiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVNYWMubW0KKysrIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lTWFjLm1tCkBAIC02NzMsMjcgKzY3MywxNCBAQCB2
b2lkIFJlbmRlclRoZW1lTWFjOjphZGp1c3RSZXBhaW50UmVjdChjb25zdCBSZW5kZXJPYmplY3Qm
IHJlbmRlcmVyLCBGbG9hdFJlY3QmCiAgICAgfQogfQogCi1GbG9hdFJlY3QgUmVuZGVyVGhlbWVN
YWM6OmNvbnZlcnRUb1BhaW50aW5nUmVjdChjb25zdCBSZW5kZXJPYmplY3QmIGlucHV0UmVuZGVy
ZXIsIGNvbnN0IFJlbmRlck9iamVjdCYgcGFydFJlbmRlcmVyLCBjb25zdCBGbG9hdFJlY3QmIGlu
cHV0UmVjdCwgY29uc3QgSW50UmVjdCYgcikgY29uc3QKLXsKLSAgICBGbG9hdFJlY3QgcGFydFJl
Y3QoaW5wdXRSZWN0KTsKLQotICAgIC8vIENvbXB1dGUgYW4gb2Zmc2V0IGJldHdlZW4gdGhlIHBh
cnQgcmVuZGVyZXIgYW5kIHRoZSBpbnB1dCByZW5kZXJlcgotICAgIEZsb2F0U2l6ZSBvZmZzZXRG
cm9tSW5wdXRSZW5kZXJlcjsKLSAgICBjb25zdCBSZW5kZXJPYmplY3QqIHJlbmRlcmVyID0gJnBh
cnRSZW5kZXJlcjsKLSAgICB3aGlsZSAocmVuZGVyZXIgJiYgcmVuZGVyZXIgIT0gJmlucHV0UmVu
ZGVyZXIpIHsKLSAgICAgICAgUmVuZGVyRWxlbWVudCogY29udGFpbmluZ1JlbmRlcmVyID0gcmVu
ZGVyZXItPmNvbnRhaW5lcigpOwotICAgICAgICBBU1NFUlQoY29udGFpbmluZ1JlbmRlcmVyKTsK
LSAgICAgICAgb2Zmc2V0RnJvbUlucHV0UmVuZGVyZXIgLT0gcm91bmRlZEludFNpemUocmVuZGVy
ZXItPm9mZnNldEZyb21Db250YWluZXIoKmNvbnRhaW5pbmdSZW5kZXJlciwgTGF5b3V0UG9pbnQo
KSkpOwotICAgICAgICByZW5kZXJlciA9IGNvbnRhaW5pbmdSZW5kZXJlcjsKLSAgICB9Ci0gICAg
Ly8gSWYgdGhlIGlucHV0IHJlbmRlcmVyIHdhcyBub3QgYSBjb250YWluZXIsIHNvbWV0aGluZyB3
ZW50IHdyb25nCi0gICAgQVNTRVJUKHJlbmRlcmVyID09ICZpbnB1dFJlbmRlcmVyKTsKLSAgICAv
LyBNb3ZlIHRoZSByZWN0IGludG8gcGFydFJlbmRlcmVyJ3MgY29vcmRzCi0gICAgcGFydFJlY3Qu
bW92ZShvZmZzZXRGcm9tSW5wdXRSZW5kZXJlcik7Ci0gICAgLy8gQWNjb3VudCBmb3IgdGhlIGxv
Y2FsIGRyYXdpbmcgb2Zmc2V0ICh0eCwgdHkpCi0gICAgcGFydFJlY3QubW92ZShyLngoKSwgci55
KCkpOwotCi0gICAgcmV0dXJuIHBhcnRSZWN0Oworc3RhdGljIEZsb2F0UG9pbnQgY29udmVydFRv
UGFpbnRpbmdQb3NpdGlvbihjb25zdCBSZW5kZXJCb3gmIGlucHV0UmVuZGVyZXIsIGNvbnN0IFJl
bmRlckJveCYgY3VzdG9tQnV0dG9uUmVuZGVyZXIsIGNvbnN0IEZsb2F0UG9pbnQmIGN1c3RvbUJ1
dHRvbkxvY2FsUG9zaXRpb24sCisgICAgY29uc3QgSW50UG9pbnQmIHBhaW50T2Zmc2V0KQorewor
ICAgIEludFBvaW50IG9mZnNldEZyb21JbnB1dFJlbmRlcmVyID0gcm91bmRlZEludFBvaW50KGN1
c3RvbUJ1dHRvblJlbmRlcmVyLmxvY2FsVG9Db250YWluZXJQb2ludChjdXN0b21CdXR0b25SZW5k
ZXJlci5jb250ZW50Qm94UmVjdCgpLmxvY2F0aW9uKCksICZpbnB1dFJlbmRlcmVyKSk7CisgICAg
RmxvYXRQb2ludCBwYWludGluZ1Bvc2l0aW9uID0gY3VzdG9tQnV0dG9uTG9jYWxQb3NpdGlvbjsK
KyAgICBwYWludGluZ1Bvc2l0aW9uLm1vdmVCeSgtb2Zmc2V0RnJvbUlucHV0UmVuZGVyZXIpOwor
ICAgIHBhaW50aW5nUG9zaXRpb24ubW92ZUJ5KHBhaW50T2Zmc2V0KTsKKyAgICByZXR1cm4gcGFp
bnRpbmdQb3NpdGlvbjsKIH0KIAogdm9pZCBSZW5kZXJUaGVtZU1hYzo6dXBkYXRlQ2hlY2tlZFN0
YXRlKE5TQ2VsbCogY2VsbCwgY29uc3QgUmVuZGVyT2JqZWN0JiBvKQpAQCAtMTY3NCwzNSArMTY2
MSwzNiBAQCB2b2lkIFJlbmRlclRoZW1lTWFjOjphZGp1c3RTZWFyY2hGaWVsZFN0eWxlKFN0eWxl
UmVzb2x2ZXImIHN0eWxlUmVzb2x2ZXIsIFJlbmRlcgogICAgIHN0eWxlLnNldEJveFNoYWRvdyhu
dWxscHRyKTsKIH0KIAotYm9vbCBSZW5kZXJUaGVtZU1hYzo6cGFpbnRTZWFyY2hGaWVsZENhbmNl
bEJ1dHRvbihjb25zdCBSZW5kZXJPYmplY3QmIG8sIGNvbnN0IFBhaW50SW5mbyYgcGFpbnRJbmZv
LCBjb25zdCBJbnRSZWN0JiByKQorYm9vbCBSZW5kZXJUaGVtZU1hYzo6cGFpbnRTZWFyY2hGaWVs
ZENhbmNlbEJ1dHRvbihjb25zdCBSZW5kZXJCb3gmIGJveCwgY29uc3QgUGFpbnRJbmZvJiBwYWlu
dEluZm8sIGNvbnN0IEludFJlY3QmIHIpCiB7Ci0gICAgaWYgKCFvLm5vZGUoKSkKKyAgICBpZiAo
IWJveC5lbGVtZW50KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBFbGVtZW50KiBpbnB1
dCA9IG8ubm9kZSgpLT5zaGFkb3dIb3N0KCk7CisgICAgRWxlbWVudCogaW5wdXQgPSBib3guZWxl
bWVudCgpLT5zaGFkb3dIb3N0KCk7CiAgICAgaWYgKCFpbnB1dCkKLSAgICAgICAgaW5wdXQgPSBk
b3duY2FzdDxFbGVtZW50PihvLm5vZGUoKSk7CisgICAgICAgIGlucHV0ID0gYm94LmVsZW1lbnQo
KTsKIAotICAgIGlmICghaW5wdXQtPnJlbmRlcmVyKCktPmlzQm94KCkpCisgICAgaWYgKCFpczxS
ZW5kZXJCb3g+KGlucHV0LT5yZW5kZXJlcigpKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCisg
ICAgY29uc3QgUmVuZGVyQm94JiBpbnB1dEJveCA9IGRvd25jYXN0PFJlbmRlckJveD4oKmlucHV0
LT5yZW5kZXJlcigpKTsKICAgICBMb2NhbEN1cnJlbnRHcmFwaGljc0NvbnRleHQgbG9jYWxDb250
ZXh0KHBhaW50SW5mby5jb250ZXh0KCkpOwotICAgIHNldFNlYXJjaENlbGxTdGF0ZSgqaW5wdXQt
PnJlbmRlcmVyKCksIHIpOworICAgIHNldFNlYXJjaENlbGxTdGF0ZShpbnB1dEJveCwgcik7CiAK
ICAgICBOU1NlYXJjaEZpZWxkQ2VsbCogc2VhcmNoID0gdGhpcy0+c2VhcmNoKCk7CiAKICAgICBp
ZiAoIWlucHV0LT5pc0Rpc2FibGVkRm9ybUNvbnRyb2woKSAmJiAoaXM8SFRNTFRleHRGb3JtQ29u
dHJvbEVsZW1lbnQ+KCppbnB1dCkgJiYgIWRvd25jYXN0PEhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVt
ZW50PigqaW5wdXQpLmlzUmVhZE9ubHkoKSkpCi0gICAgICAgIHVwZGF0ZVByZXNzZWRTdGF0ZShb
c2VhcmNoIGNhbmNlbEJ1dHRvbkNlbGxdLCBvKTsKKyAgICAgICAgdXBkYXRlUHJlc3NlZFN0YXRl
KFtzZWFyY2ggY2FuY2VsQnV0dG9uQ2VsbF0sIGJveCk7CiAgICAgZWxzZSBpZiAoW1tzZWFyY2gg
Y2FuY2VsQnV0dG9uQ2VsbF0gaXNIaWdobGlnaHRlZF0pCiAgICAgICAgIFtbc2VhcmNoIGNhbmNl
bEJ1dHRvbkNlbGxdIHNldEhpZ2hsaWdodGVkOk5PXTsKIAogICAgIEdyYXBoaWNzQ29udGV4dFN0
YXRlU2F2ZXIgc3RhdGVTYXZlcihwYWludEluZm8uY29udGV4dCgpKTsKIAotICAgIGZsb2F0IHpv
b21MZXZlbCA9IG8uc3R5bGUoKS5lZmZlY3RpdmVab29tKCk7CisgICAgZmxvYXQgem9vbUxldmVs
ID0gYm94LnN0eWxlKCkuZWZmZWN0aXZlWm9vbSgpOwogCi0gICAgRmxvYXRSZWN0IGxvY2FsQm91
bmRzID0gW3NlYXJjaCBjYW5jZWxCdXR0b25SZWN0Rm9yQm91bmRzOk5TUmVjdChzbmFwcGVkSW50
UmVjdChpbnB1dC0+cmVuZGVyQm94KCktPmNvbnRlbnRCb3hSZWN0KCkpKV07Ci0gICAgbG9jYWxC
b3VuZHMgPSBjb252ZXJ0VG9QYWludGluZ1JlY3QoKmlucHV0LT5yZW5kZXJlcigpLCBvLCBsb2Nh
bEJvdW5kcywgcik7CisgICAgRmxvYXRSZWN0IGxvY2FsQm91bmRzID0gW3NlYXJjaCBjYW5jZWxC
dXR0b25SZWN0Rm9yQm91bmRzOk5TUmVjdChzbmFwcGVkSW50UmVjdChpbnB1dEJveC5jb250ZW50
Qm94UmVjdCgpKSldOworICAgIEZsb2F0UG9pbnQgcGFpbnRpbmdQb3MgPSBjb252ZXJ0VG9QYWlu
dGluZ1Bvc2l0aW9uKGlucHV0Qm94LCBib3gsIGxvY2FsQm91bmRzLmxvY2F0aW9uKCksIHIubG9j
YXRpb24oKSk7CiAKLSAgICBGbG9hdFJlY3QgdW56b29tZWRSZWN0KGxvY2FsQm91bmRzKTsKKyAg
ICBGbG9hdFJlY3QgdW56b29tZWRSZWN0KHBhaW50aW5nUG9zLCBsb2NhbEJvdW5kcy5zaXplKCkp
OwogICAgIGlmICh6b29tTGV2ZWwgIT0gMS4wZikgewogICAgICAgICB1bnpvb21lZFJlY3Quc2V0
V2lkdGgodW56b29tZWRSZWN0LndpZHRoKCkgLyB6b29tTGV2ZWwpOwogICAgICAgICB1bnpvb21l
ZFJlY3Quc2V0SGVpZ2h0KHVuem9vbWVkUmVjdC5oZWlnaHQoKSAvIHpvb21MZXZlbCk7CkBAIC0x
NzExLDcgKzE2OTksNyBAQCBib29sIFJlbmRlclRoZW1lTWFjOjpwYWludFNlYXJjaEZpZWxkQ2Fu
Y2VsQnV0dG9uKGNvbnN0IFJlbmRlck9iamVjdCYgbywgY29uc3QgUAogICAgICAgICBwYWludElu
Zm8uY29udGV4dCgpLnRyYW5zbGF0ZSgtdW56b29tZWRSZWN0LngoKSwgLXVuem9vbWVkUmVjdC55
KCkpOwogICAgIH0KIAotICAgIFtbc2VhcmNoIGNhbmNlbEJ1dHRvbkNlbGxdIGRyYXdXaXRoRnJh
bWU6dW56b29tZWRSZWN0IGluVmlldzpkb2N1bWVudFZpZXdGb3IobyldOworICAgIFtbc2VhcmNo
IGNhbmNlbEJ1dHRvbkNlbGxdIGRyYXdXaXRoRnJhbWU6dW56b29tZWRSZWN0IGluVmlldzpkb2N1
bWVudFZpZXdGb3IoYm94KV07CiAgICAgW1tzZWFyY2ggY2FuY2VsQnV0dG9uQ2VsbF0gc2V0Q29u
dHJvbFZpZXc6bmlsXTsKICAgICByZXR1cm4gZmFsc2U7CiB9CkBAIC0xNzU4LDI4ICsxNzQ2LDMw
IEBAIHZvaWQgUmVuZGVyVGhlbWVNYWM6OmFkanVzdFNlYXJjaEZpZWxkUmVzdWx0c0RlY29yYXRp
b25QYXJ0U3R5bGUoU3R5bGVSZXNvbHZlciYsCiAgICAgc3R5bGUuc2V0Qm94U2hhZG93KG51bGxw
dHIpOwogfQogCi1ib29sIFJlbmRlclRoZW1lTWFjOjpwYWludFNlYXJjaEZpZWxkUmVzdWx0c0Rl
Y29yYXRpb25QYXJ0KGNvbnN0IFJlbmRlck9iamVjdCYgbywgY29uc3QgUGFpbnRJbmZvJiBwYWlu
dEluZm8sIGNvbnN0IEludFJlY3QmIHIpCitib29sIFJlbmRlclRoZW1lTWFjOjpwYWludFNlYXJj
aEZpZWxkUmVzdWx0c0RlY29yYXRpb25QYXJ0KGNvbnN0IFJlbmRlckJveCYgYm94LCBjb25zdCBQ
YWludEluZm8mIHBhaW50SW5mbywgY29uc3QgSW50UmVjdCYgcikKIHsKLSAgICBpZiAoIW8ubm9k
ZSgpKQorICAgIGlmICghYm94LmVsZW1lbnQoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAg
IE5vZGUqIGlucHV0ID0gby5ub2RlKCktPnNoYWRvd0hvc3QoKTsKKyAgICBFbGVtZW50KiBpbnB1
dCA9IGJveC5lbGVtZW50KCktPnNoYWRvd0hvc3QoKTsKICAgICBpZiAoIWlucHV0KQotICAgICAg
ICBpbnB1dCA9IG8ubm9kZSgpOwotICAgIGlmICghaW5wdXQtPnJlbmRlcmVyKCktPmlzQm94KCkp
CisgICAgICAgIGlucHV0ID0gYm94LmVsZW1lbnQoKTsKKyAgICBpZiAoIWlzPFJlbmRlckJveD4o
aW5wdXQtPnJlbmRlcmVyKCkpKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0KKyAgICAKKyAgICBj
b25zdCBSZW5kZXJCb3gmIGlucHV0Qm94ID0gZG93bmNhc3Q8UmVuZGVyQm94PigqaW5wdXQtPnJl
bmRlcmVyKCkpOwogICAgIExvY2FsQ3VycmVudEdyYXBoaWNzQ29udGV4dCBsb2NhbENvbnRleHQo
cGFpbnRJbmZvLmNvbnRleHQoKSk7Ci0gICAgc2V0U2VhcmNoQ2VsbFN0YXRlKCppbnB1dC0+cmVu
ZGVyZXIoKSwgcik7CisgICAgc2V0U2VhcmNoQ2VsbFN0YXRlKGlucHV0Qm94LCByKTsKIAogICAg
IE5TU2VhcmNoRmllbGRDZWxsKiBzZWFyY2ggPSB0aGlzLT5zZWFyY2goKTsKIAogICAgIGlmIChb
c2VhcmNoIHNlYXJjaE1lbnVUZW1wbGF0ZV0gIT0gbmlsKQogICAgICAgICBbc2VhcmNoIHNldFNl
YXJjaE1lbnVUZW1wbGF0ZTpuaWxdOwogCi0gICAgRmxvYXRSZWN0IGxvY2FsQm91bmRzID0gW3Nl
YXJjaCBzZWFyY2hCdXR0b25SZWN0Rm9yQm91bmRzOk5TUmVjdChzbmFwcGVkSW50UmVjdChpbnB1
dC0+cmVuZGVyQm94KCktPmJvcmRlckJveFJlY3QoKSkpXTsKLSAgICBsb2NhbEJvdW5kcyA9IGNv
bnZlcnRUb1BhaW50aW5nUmVjdCgqaW5wdXQtPnJlbmRlcmVyKCksIG8sIGxvY2FsQm91bmRzLCBy
KTsKKyAgICBGbG9hdFJlY3QgbG9jYWxCb3VuZHMgPSBbc2VhcmNoIHNlYXJjaEJ1dHRvblJlY3RG
b3JCb3VuZHM6TlNSZWN0KHNuYXBwZWRJbnRSZWN0KGlucHV0Qm94LmJvcmRlckJveFJlY3QoKSkp
XTsKKyAgICBGbG9hdFBvaW50IHBhaW50aW5nUG9zID0gY29udmVydFRvUGFpbnRpbmdQb3NpdGlv
bihpbnB1dEJveCwgYm94LCBsb2NhbEJvdW5kcy5sb2NhdGlvbigpLCByLmxvY2F0aW9uKCkpOwor
ICAgIGxvY2FsQm91bmRzLnNldExvY2F0aW9uKHBhaW50aW5nUG9zKTsKIAotICAgIFtbc2VhcmNo
IHNlYXJjaEJ1dHRvbkNlbGxdIGRyYXdXaXRoRnJhbWU6bG9jYWxCb3VuZHMgaW5WaWV3OmRvY3Vt
ZW50Vmlld0ZvcihvKV07CisgICAgW1tzZWFyY2ggc2VhcmNoQnV0dG9uQ2VsbF0gZHJhd1dpdGhG
cmFtZTpsb2NhbEJvdW5kcyBpblZpZXc6ZG9jdW1lbnRWaWV3Rm9yKGJveCldOwogICAgIFtbc2Vh
cmNoIHNlYXJjaEJ1dHRvbkNlbGxdIHNldENvbnRyb2xWaWV3Om5pbF07CiAgICAgcmV0dXJuIGZh
bHNlOwogfQpAQCAtMTc5MywxNiArMTc4MywxNyBAQCB2b2lkIFJlbmRlclRoZW1lTWFjOjphZGp1
c3RTZWFyY2hGaWVsZFJlc3VsdHNCdXR0b25TdHlsZShTdHlsZVJlc29sdmVyJiwgUmVuZGVyUwog
ICAgIHN0eWxlLnNldEJveFNoYWRvdyhudWxscHRyKTsKIH0KIAotYm9vbCBSZW5kZXJUaGVtZU1h
Yzo6cGFpbnRTZWFyY2hGaWVsZFJlc3VsdHNCdXR0b24oY29uc3QgUmVuZGVyT2JqZWN0JiBvLCBj
b25zdCBQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgSW50UmVjdCYgcikKK2Jvb2wgUmVuZGVy
VGhlbWVNYWM6OnBhaW50U2VhcmNoRmllbGRSZXN1bHRzQnV0dG9uKGNvbnN0IFJlbmRlckJveCYg
Ym94LCBjb25zdCBQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgSW50UmVjdCYgcikKIHsKLSAg
ICBOb2RlKiBpbnB1dCA9IG8ubm9kZSgpLT5zaGFkb3dIb3N0KCk7CisgICAgRWxlbWVudCogaW5w
dXQgPSBib3guZWxlbWVudCgpLT5zaGFkb3dIb3N0KCk7CiAgICAgaWYgKCFpbnB1dCkKLSAgICAg
ICAgaW5wdXQgPSBvLm5vZGUoKTsKLSAgICBpZiAoIWlucHV0LT5yZW5kZXJlcigpLT5pc0JveCgp
KQorICAgICAgICBpbnB1dCA9IGJveC5lbGVtZW50KCk7CisgICAgaWYgKCFpczxSZW5kZXJCb3g+
KGlucHV0LT5yZW5kZXJlcigpKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotCisgICAgCisgICAg
Y29uc3QgUmVuZGVyQm94JiBpbnB1dEJveCA9IGRvd25jYXN0PFJlbmRlckJveD4oKmlucHV0LT5y
ZW5kZXJlcigpKTsKICAgICBMb2NhbEN1cnJlbnRHcmFwaGljc0NvbnRleHQgbG9jYWxDb250ZXh0
KHBhaW50SW5mby5jb250ZXh0KCkpOwotICAgIHNldFNlYXJjaENlbGxTdGF0ZSgqaW5wdXQtPnJl
bmRlcmVyKCksIHIpOworICAgIHNldFNlYXJjaENlbGxTdGF0ZShpbnB1dEJveCwgcik7CiAKICAg
ICBOU1NlYXJjaEZpZWxkQ2VsbCogc2VhcmNoID0gdGhpcy0+c2VhcmNoKCk7CiAKQEAgLTE4MTAs
MTIgKzE4MDEsMTIgQEAgYm9vbCBSZW5kZXJUaGVtZU1hYzo6cGFpbnRTZWFyY2hGaWVsZFJlc3Vs
dHNCdXR0b24oY29uc3QgUmVuZGVyT2JqZWN0JiBvLCBjb25zdAogICAgICAgICBbc2VhcmNoIHNl
dFNlYXJjaE1lbnVUZW1wbGF0ZTpzZWFyY2hNZW51VGVtcGxhdGUoKV07CiAKICAgICBHcmFwaGlj
c0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIocGFpbnRJbmZvLmNvbnRleHQoKSk7Ci0gICAg
ZmxvYXQgem9vbUxldmVsID0gby5zdHlsZSgpLmVmZmVjdGl2ZVpvb20oKTsKLQotICAgIEZsb2F0
UmVjdCBsb2NhbEJvdW5kcyA9IFtzZWFyY2ggc2VhcmNoQnV0dG9uUmVjdEZvckJvdW5kczpOU1Jl
Y3Qoc25hcHBlZEludFJlY3QoaW5wdXQtPnJlbmRlckJveCgpLT5jb250ZW50Qm94UmVjdCgpKSld
OwotICAgIGxvY2FsQm91bmRzID0gY29udmVydFRvUGFpbnRpbmdSZWN0KCppbnB1dC0+cmVuZGVy
ZXIoKSwgbywgbG9jYWxCb3VuZHMsIHIpOworICAgIGZsb2F0IHpvb21MZXZlbCA9IGJveC5zdHls
ZSgpLmVmZmVjdGl2ZVpvb20oKTsKIAotICAgIEludFJlY3QgdW56b29tZWRSZWN0KGxvY2FsQm91
bmRzKTsKKyAgICBGbG9hdFJlY3QgbG9jYWxCb3VuZHMgPSBbc2VhcmNoIHNlYXJjaEJ1dHRvblJl
Y3RGb3JCb3VuZHM6TlNSZWN0KHNuYXBwZWRJbnRSZWN0KGlucHV0Qm94LmNvbnRlbnRCb3hSZWN0
KCkpKV07CisgICAgRmxvYXRQb2ludCBwYWludGluZ1BvcyA9IGNvbnZlcnRUb1BhaW50aW5nUG9z
aXRpb24oaW5wdXRCb3gsIGJveCwgbG9jYWxCb3VuZHMubG9jYXRpb24oKSwgci5sb2NhdGlvbigp
KTsKKyAgICAKKyAgICBGbG9hdFJlY3QgdW56b29tZWRSZWN0KHBhaW50aW5nUG9zLCBsb2NhbEJv
dW5kcy5zaXplKCkpOwogICAgIGlmICh6b29tTGV2ZWwgIT0gMS4wZikgewogICAgICAgICB1bnpv
b21lZFJlY3Quc2V0V2lkdGgodW56b29tZWRSZWN0LndpZHRoKCkgLyB6b29tTGV2ZWwpOwogICAg
ICAgICB1bnpvb21lZFJlY3Quc2V0SGVpZ2h0KHVuem9vbWVkUmVjdC5oZWlnaHQoKSAvIHpvb21M
ZXZlbCk7CkBAIC0xODI0LDcgKzE4MTUsNyBAQCBib29sIFJlbmRlclRoZW1lTWFjOjpwYWludFNl
YXJjaEZpZWxkUmVzdWx0c0J1dHRvbihjb25zdCBSZW5kZXJPYmplY3QmIG8sIGNvbnN0CiAgICAg
ICAgIHBhaW50SW5mby5jb250ZXh0KCkudHJhbnNsYXRlKC11bnpvb21lZFJlY3QueCgpLCAtdW56
b29tZWRSZWN0LnkoKSk7CiAgICAgfQogCi0gICAgW1tzZWFyY2ggc2VhcmNoQnV0dG9uQ2VsbF0g
ZHJhd1dpdGhGcmFtZTp1bnpvb21lZFJlY3QgaW5WaWV3OmRvY3VtZW50Vmlld0ZvcihvKV07Cisg
ICAgW1tzZWFyY2ggc2VhcmNoQnV0dG9uQ2VsbF0gZHJhd1dpdGhGcmFtZTp1bnpvb21lZFJlY3Qg
aW5WaWV3OmRvY3VtZW50Vmlld0Zvcihib3gpXTsKICAgICBbW3NlYXJjaCBzZWFyY2hCdXR0b25D
ZWxsXSBzZXRDb250cm9sVmlldzpuaWxdOwogCiAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDBh
MzQ5M2JmZTFkYjVmZmY0M2EyOWU1YzhkMGE0MmYxOTAwZmVlZDMuLjYyMGI5ZWIxNjIyYjQyYThm
ZWYwODM3ZWUzNzQxM2ZlMTkyZDQyNDkgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxv
ZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsNSArMSwyMCBAQAogMjAxNi0wMS0w
OCAgWmFsYW4gQnVqdGFzICA8emFsYW5AYXBwbGUuY29tPgogCisgICAgICAgIEFic29sdXRlIHBv
c2l0aW9uaW5nIC13ZWJraXQtc2VhcmNoLWNhbmNlbC1idXR0b24gY3Jhc2hlcyBTYWZhcmkuCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTI4NDcKKyAg
ICAgICAgPHJkYXI6Ly9wcm9ibGVtLzI0MTEyMDg3PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIERvIG5vdCBjYWxsIG9mZnNldEZyb21Db250YWluZXIg
d2hpbGUgcmVzb2x2aW5nIHRoZSBwYWludGluZyBwb3NpdGlvbiBmb3IgdGhlIHNlYXJjaC9jYW5j
ZWwgYnV0dG9uIHJlbmRlcmVyLgorICAgICAgICBJdCBza2lwcyB0aGUgc3RhdGljIHBvc2l0aW9u
ZWQgcGFyZW50IGlucHV0IHJlbmRlcmVyLCB3aGVuIHRoZSBzZWFyY2gvY2FuY2VsIHJlbmRlcmVy
IGlzIGFic29sdXRlIHBvc2l0aW9uZWQuCisgICAgICAgIFRoaXMgcGF0Y2ggYWxzbyBmaXhlcyBh
IHJlbmRlcmluZyBnbGl0Y2ggd2hlbiB0aGUgbWFyZ2luLXJpZ2h0IGlzID4gMC4KKworICAgICAg
ICAqIGZhc3QvZm9ybXMvYWJzb2x1dGUtcG9zaXRpb25lZC1jdXN0b20tc2VhcmNoLWNhbmNlbC1j
cmFzaC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZm9ybXMvYWJzb2x1dGUt
cG9zaXRpb25lZC1jdXN0b20tc2VhcmNoLWNhbmNlbC1jcmFzaC5odG1sOiBBZGRlZC4KKworMjAx
Ni0wMS0wOCAgWmFsYW4gQnVqdGFzICA8emFsYW5AYXBwbGUuY29tPgorCiAgICAgICAgIEhvdmVy
aW5nIGxpbmsgb24gaHR0cDovL2hlbHAuYXBwbGUuY29tL2FwcGxldHYvIy8gZG9lcyBub3Qgc2hv
dyB0ZXh0IHVuZGVybGluZS4KICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE1MjkwNgogICAgICAgICA8cmRhcjovL3Byb2JsZW0vMjMzMzk2MTc+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2Fic29sdXRlLXBvc2l0aW9uZWQtY3VzdG9t
LXNlYXJjaC1jYW5jZWwtY3Jhc2gtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jt
cy9hYnNvbHV0ZS1wb3NpdGlvbmVkLWN1c3RvbS1zZWFyY2gtY2FuY2VsLWNyYXNoLWV4cGVjdGVk
LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi40YzVjYWE5YThmZDZiZTJjYzAwOTVlODZlYmZmZjdiMWQxN2YwNWZl
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9hYnNvbHV0ZS1wb3Np
dGlvbmVkLWN1c3RvbS1zZWFyY2gtY2FuY2VsLWNyYXNoLWV4cGVjdGVkLnR4dApAQCAtMCwwICsx
IEBACitQQVNTIGlmIG5vIGNyYXNoLiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZm9y
bXMvYWJzb2x1dGUtcG9zaXRpb25lZC1jdXN0b20tc2VhcmNoLWNhbmNlbC1jcmFzaC5odG1sIGIv
TGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9hYnNvbHV0ZS1wb3NpdGlvbmVkLWN1c3RvbS1zZWFyY2gt
Y2FuY2VsLWNyYXNoLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOWQzMWE3Y2YxZDE2YzBmMTNhZDFjNDY0MWQy
NjQ5MTAyNTgyOThmYwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMv
YWJzb2x1dGUtcG9zaXRpb25lZC1jdXN0b20tc2VhcmNoLWNhbmNlbC1jcmFzaC5odG1sCkBAIC0w
LDAgKzEsMjcgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzx0aXRsZT5UaGlz
IHRlc3RzIHRoYXQgYWJzb2x1dGUgcG9zaXRpb25lZCBzZWFyY2gvY2FuY2VsIGJ1dHRvbiBwYWlu
dGluZyBpcyBub3QgY3Jhc2hpbmc8L3RpdGxlPgorPHN0eWxlPgorI3Rlc3QgeworICAgIGJvcmRl
cjogMXB4IHNvbGlkIHJlZDsKKyAgICBwYWRkaW5nLXJpZ2h0OiAyMHB4OworICAgIHBhZGRpbmct
bGVmdDogNTBweDsKKyAgICAtd2Via2l0LWFwcGVhcmFuY2U6IG5vbmU7Cit9CisKKyN0ZXN0Ojot
d2Via2l0LXNlYXJjaC1jYW5jZWwtYnV0dG9uIHsKKyAgICBwb3NpdGlvbjogYWJzb2x1dGU7Cit9
Cis8L3N0eWxlPgorPC9oZWFkPgorPGJvZHk+CitQQVNTIGlmIG5vIGNyYXNoLgorPGlucHV0IGlk
PSJ0ZXN0IiB0eXBlPSJzZWFyY2giPgorPHNjcmlwdD4KKyAgICBpZiAod2luZG93LnRlc3RSdW5u
ZXIpCisgICAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOworICAgIGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCJ0ZXN0IikudmFsdWUgPSAiZm9vYmFyIjsKKzwvc2NyaXB0PgorPC9ib2R5Pgor
PC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>268610</attachid>
            <date>2016-01-08 20:54:17 -0800</date>
            <delta_ts>2016-01-08 22:27:59 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-152847-20160108205345.patch</filename>
            <type>text/plain</type>
            <size>28328</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk0Nzc1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjRhYWFlM2VhODhhZWZj
YTkyNzUzMTQxYTY3NWMwZmYyNzIzYTJiMi4uYTk4NGMxMGUzNWM2YWRkYjRhNzQ2NDVjM2U1NzZm
ZDdkZjAzNzczNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDMxIEBACiAyMDE2LTAxLTA4ICBaYWxh
biBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CiAKKyAgICAgICAgQWJzb2x1dGUgcG9zaXRpb25p
bmcgLXdlYmtpdC1zZWFyY2gtY2FuY2VsLWJ1dHRvbiBjcmFzaGVzIFNhZmFyaS4KKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1Mjg0NworICAgICAgICA8
cmRhcjovL3Byb2JsZW0vMjQxMTIwODc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgRG8gbm90IGNhbGwgb2Zmc2V0RnJvbUNvbnRhaW5lciB3aGlsZSBy
ZXNvbHZpbmcgdGhlIHBhaW50aW5nIHBvc2l0aW9uIGZvciB0aGUgc2VhcmNoL2NhbmNlbCBidXR0
b24gcmVuZGVyZXIuCisgICAgICAgIEl0IHNraXBzIHRoZSBzdGF0aWMgcG9zaXRpb25lZCBwYXJl
bnQgaW5wdXQgcmVuZGVyZXIsIHdoZW4gdGhlIHNlYXJjaC9jYW5jZWwgcmVuZGVyZXIgaXMgYWJz
b2x1dGUgcG9zaXRpb25lZC4KKyAgICAgICAgVGhpcyBwYXRjaCBhbHNvIGZpeGVzIGEgcmVuZGVy
aW5nIGdsaXRjaCB3aGVuIHRoZSBtYXJnaW4tcmlnaHQgaXMgPiAwLgorCisgICAgICAgIFRlc3Q6
IGZhc3QvZm9ybXMvYWJzb2x1dGUtcG9zaXRpb25lZC1jdXN0b20tc2VhcmNoLWNhbmNlbC1jcmFz
aC5odG1sCisKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGhlbWUuaDoKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlclRoZW1lOjpwYWludFNlYXJjaEZpZWxkQ2FuY2VsQnV0dG9uKToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lOjpwYWludFNlYXJjaEZpZWxkUmVzdWx0c0RlY29yYXRp
b25QYXJ0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lOjpwYWludFNlYXJjaEZpZWxk
UmVzdWx0c0J1dHRvbik6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRoZW1lTWFjLmg6Cisg
ICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRoZW1lTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6
Y29udmVydFRvUGFpbnRpbmdQb3NpdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVt
ZU1hYzo6cGFpbnRTZWFyY2hGaWVsZENhbmNlbEJ1dHRvbik6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJUaGVtZU1hYzo6cGFpbnRTZWFyY2hGaWVsZFJlc3VsdHNEZWNvcmF0aW9uUGFydCk6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZU1hYzo6cGFpbnRTZWFyY2hGaWVsZFJlc3VsdHNC
dXR0b24pOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVNYWM6OmNvbnZlcnRUb1BhaW50
aW5nUmVjdCk6IERlbGV0ZWQuCisKKzIwMTYtMDEtMDggIFphbGFuIEJ1anRhcyAgPHphbGFuQGFw
cGxlLmNvbT4KKwogICAgICAgICBIb3ZlcmluZyBsaW5rIG9uIGh0dHA6Ly9oZWxwLmFwcGxlLmNv
bS9hcHBsZXR2LyMvIGRvZXMgbm90IHNob3cgdGV4dCB1bmRlcmxpbmUuCiAgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTI5MDYKICAgICAgICAgPHJkYXI6
Ly9wcm9ibGVtLzIzMzM5NjE3PgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclRoZW1lLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWUuaApp
bmRleCA4ZDkxNjdhNjlhNjgzMjQxODVhNGIzYmNkZjNkZjZhYzhkMmM4ZGQ4Li41YTlkMjhiOGI1
NjM4YWIzZjNjODMyMTcyOWZkNzhhYTI4MGJmMzJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyVGhlbWUuaApAQCAtMzM4LDE2ICszMzgsMTYgQEAgcHJvdGVjdGVkOgogICAgIHZpcnR1
YWwgYm9vbCBwYWludFNlYXJjaEZpZWxkRGVjb3JhdGlvbnMoY29uc3QgUmVuZGVyT2JqZWN0Jiwg
Y29uc3QgUGFpbnRJbmZvJiwgY29uc3QgSW50UmVjdCYpIHsgcmV0dXJuIHRydWU7IH0KIAogICAg
IHZpcnR1YWwgdm9pZCBhZGp1c3RTZWFyY2hGaWVsZENhbmNlbEJ1dHRvblN0eWxlKFN0eWxlUmVz
b2x2ZXImLCBSZW5kZXJTdHlsZSYsIEVsZW1lbnQqKSBjb25zdDsKLSAgICB2aXJ0dWFsIGJvb2wg
cGFpbnRTZWFyY2hGaWVsZENhbmNlbEJ1dHRvbihjb25zdCBSZW5kZXJPYmplY3QmLCBjb25zdCBQ
YWludEluZm8mLCBjb25zdCBJbnRSZWN0JikgeyByZXR1cm4gdHJ1ZTsgfQorICAgIHZpcnR1YWwg
Ym9vbCBwYWludFNlYXJjaEZpZWxkQ2FuY2VsQnV0dG9uKGNvbnN0IFJlbmRlckJveCYsIGNvbnN0
IFBhaW50SW5mbyYsIGNvbnN0IEludFJlY3QmKSB7IHJldHVybiB0cnVlOyB9CiAKICAgICB2aXJ0
dWFsIHZvaWQgYWRqdXN0U2VhcmNoRmllbGREZWNvcmF0aW9uUGFydFN0eWxlKFN0eWxlUmVzb2x2
ZXImLCBSZW5kZXJTdHlsZSYsIEVsZW1lbnQqKSBjb25zdDsKICAgICB2aXJ0dWFsIGJvb2wgcGFp
bnRTZWFyY2hGaWVsZERlY29yYXRpb25QYXJ0KGNvbnN0IFJlbmRlck9iamVjdCYsIGNvbnN0IFBh
aW50SW5mbyYsIGNvbnN0IEludFJlY3QmKSB7IHJldHVybiB0cnVlOyB9CiAKICAgICB2aXJ0dWFs
IHZvaWQgYWRqdXN0U2VhcmNoRmllbGRSZXN1bHRzRGVjb3JhdGlvblBhcnRTdHlsZShTdHlsZVJl
c29sdmVyJiwgUmVuZGVyU3R5bGUmLCBFbGVtZW50KikgY29uc3Q7Ci0gICAgdmlydHVhbCBib29s
IHBhaW50U2VhcmNoRmllbGRSZXN1bHRzRGVjb3JhdGlvblBhcnQoY29uc3QgUmVuZGVyT2JqZWN0
JiwgY29uc3QgUGFpbnRJbmZvJiwgY29uc3QgSW50UmVjdCYpIHsgcmV0dXJuIHRydWU7IH0KKyAg
ICB2aXJ0dWFsIGJvb2wgcGFpbnRTZWFyY2hGaWVsZFJlc3VsdHNEZWNvcmF0aW9uUGFydChjb25z
dCBSZW5kZXJCb3gmLCBjb25zdCBQYWludEluZm8mLCBjb25zdCBJbnRSZWN0JikgeyByZXR1cm4g
dHJ1ZTsgfQogCiAgICAgdmlydHVhbCB2b2lkIGFkanVzdFNlYXJjaEZpZWxkUmVzdWx0c0J1dHRv
blN0eWxlKFN0eWxlUmVzb2x2ZXImLCBSZW5kZXJTdHlsZSYsIEVsZW1lbnQqKSBjb25zdDsKLSAg
ICB2aXJ0dWFsIGJvb2wgcGFpbnRTZWFyY2hGaWVsZFJlc3VsdHNCdXR0b24oY29uc3QgUmVuZGVy
T2JqZWN0JiwgY29uc3QgUGFpbnRJbmZvJiwgY29uc3QgSW50UmVjdCYpIHsgcmV0dXJuIHRydWU7
IH0KKyAgICB2aXJ0dWFsIGJvb2wgcGFpbnRTZWFyY2hGaWVsZFJlc3VsdHNCdXR0b24oY29uc3Qg
UmVuZGVyQm94JiwgY29uc3QgUGFpbnRJbmZvJiwgY29uc3QgSW50UmVjdCYpIHsgcmV0dXJuIHRy
dWU7IH0KIAogICAgIHZpcnR1YWwgdm9pZCBhZGp1c3RNZWRpYUNvbnRyb2xTdHlsZShTdHlsZVJl
c29sdmVyJiwgUmVuZGVyU3R5bGUmLCBFbGVtZW50KikgY29uc3Q7CiAgICAgdmlydHVhbCBib29s
IHBhaW50TWVkaWFGdWxsc2NyZWVuQnV0dG9uKGNvbnN0IFJlbmRlck9iamVjdCYsIGNvbnN0IFBh
aW50SW5mbyYsIGNvbnN0IEludFJlY3QmKSB7IHJldHVybiB0cnVlOyB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVFZmwuY3BwIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lRWZsLmNwcAppbmRleCBiM2JiNzIyOTgzM2VmYzhjMWZh
OTM3NjMxYTNmODYxZTc1ZjZiMGRmLi5jMWU3OWQzNzFhMTk1ZjgyMTllYzIwNTU3OWU4NzBmOGM1
MWI4NTZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVF
ZmwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUVmbC5jcHAK
QEAgLTkzMiw3ICs5MzIsNyBAQCB2b2lkIFJlbmRlclRoZW1lRWZsOjphZGp1c3RTZWFyY2hGaWVs
ZFJlc3VsdHNCdXR0b25TdHlsZShTdHlsZVJlc29sdmVyJiBzdHlsZVJlcwogICAgIHN0eWxlLnNl
dEhlaWdodChMZW5ndGgoZGVjb3JhdGlvblNpemUsIEZpeGVkKSk7CiB9CiAKLWJvb2wgUmVuZGVy
VGhlbWVFZmw6OnBhaW50U2VhcmNoRmllbGRSZXN1bHRzQnV0dG9uKGNvbnN0IFJlbmRlck9iamVj
dCYgb2JqZWN0LCBjb25zdCBQYWludEluZm8mIGluZm8sIGNvbnN0IEludFJlY3QmIHJlY3QpCiti
b29sIFJlbmRlclRoZW1lRWZsOjpwYWludFNlYXJjaEZpZWxkUmVzdWx0c0J1dHRvbihjb25zdCBS
ZW5kZXJCb3gmIG9iamVjdCwgY29uc3QgUGFpbnRJbmZvJiBpbmZvLCBjb25zdCBJbnRSZWN0JiBy
ZWN0KQogewogICAgIHJldHVybiBwYWludFRoZW1lUGFydChvYmplY3QsIFNlYXJjaEZpZWxkUmVz
dWx0c0J1dHRvbiwgaW5mbywgcmVjdCk7CiB9CkBAIC05NTQsNyArOTU0LDcgQEAgdm9pZCBSZW5k
ZXJUaGVtZUVmbDo6YWRqdXN0U2VhcmNoRmllbGRSZXN1bHRzRGVjb3JhdGlvblBhcnRTdHlsZShT
dHlsZVJlc29sdmVyJgogICAgIHN0eWxlLnNldEhlaWdodChMZW5ndGgoZGVjb3JhdGlvblNpemUs
IEZpeGVkKSk7CiB9CiAKLWJvb2wgUmVuZGVyVGhlbWVFZmw6OnBhaW50U2VhcmNoRmllbGRSZXN1
bHRzRGVjb3JhdGlvblBhcnQoY29uc3QgUmVuZGVyT2JqZWN0JiBvYmplY3QsIGNvbnN0IFBhaW50
SW5mbyYgaW5mbywgY29uc3QgSW50UmVjdCYgcmVjdCkKK2Jvb2wgUmVuZGVyVGhlbWVFZmw6OnBh
aW50U2VhcmNoRmllbGRSZXN1bHRzRGVjb3JhdGlvblBhcnQoY29uc3QgUmVuZGVyQm94JiBvYmpl
Y3QsIGNvbnN0IFBhaW50SW5mbyYgaW5mbywgY29uc3QgSW50UmVjdCYgcmVjdCkKIHsKICAgICBy
ZXR1cm4gcGFpbnRUaGVtZVBhcnQob2JqZWN0LCBTZWFyY2hGaWVsZFJlc3VsdHNEZWNvcmF0aW9u
LCBpbmZvLCByZWN0KTsKIH0KQEAgLTk3OCw3ICs5NzgsNyBAQCB2b2lkIFJlbmRlclRoZW1lRWZs
OjphZGp1c3RTZWFyY2hGaWVsZENhbmNlbEJ1dHRvblN0eWxlKFN0eWxlUmVzb2x2ZXImIHN0eWxl
UmVzbwogICAgIHN0eWxlLnNldEhlaWdodChMZW5ndGgoY2FuY2VsQnV0dG9uU2l6ZSwgRml4ZWQp
KTsKIH0KIAotYm9vbCBSZW5kZXJUaGVtZUVmbDo6cGFpbnRTZWFyY2hGaWVsZENhbmNlbEJ1dHRv
bihjb25zdCBSZW5kZXJPYmplY3QmIG9iamVjdCwgY29uc3QgUGFpbnRJbmZvJiBpbmZvLCBjb25z
dCBJbnRSZWN0JiByZWN0KQorYm9vbCBSZW5kZXJUaGVtZUVmbDo6cGFpbnRTZWFyY2hGaWVsZENh
bmNlbEJ1dHRvbihjb25zdCBSZW5kZXJCb3gmIG9iamVjdCwgY29uc3QgUGFpbnRJbmZvJiBpbmZv
LCBjb25zdCBJbnRSZWN0JiByZWN0KQogewogICAgIHJldHVybiBwYWludFRoZW1lUGFydChvYmpl
Y3QsIFNlYXJjaEZpZWxkQ2FuY2VsQnV0dG9uLCBpbmZvLCByZWN0KTsKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUVmbC5oIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lRWZsLmgKaW5kZXggODFkYjgxZTc5YzZlNDAxZTAwZDk1
ZWM0NWUxOTc2ZWExODMyZTI4OC4uMTM1ZTlmMDBlMTU4MGQ1MTEwYzdlY2Y5YTQzYTI0NjEzYWE3
YTJiMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lRWZs
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lRWZsLmgKQEAgLTEz
MCwxNiArMTMwLDE2IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgcGFpbnRNZW51TGlzdEJ1
dHRvbkRlY29yYXRpb25zKGNvbnN0IFJlbmRlckJveCYsIGNvbnN0IFBhaW50SW5mbyYsIGNvbnN0
IEZsb2F0UmVjdCYpIG92ZXJyaWRlOwogCiAgICAgdmlydHVhbCB2b2lkIGFkanVzdFNlYXJjaEZp
ZWxkUmVzdWx0c0RlY29yYXRpb25QYXJ0U3R5bGUoU3R5bGVSZXNvbHZlciYsIFJlbmRlclN0eWxl
JiwgRWxlbWVudCopIGNvbnN0IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgYm9vbCBwYWludFNlYXJj
aEZpZWxkUmVzdWx0c0RlY29yYXRpb25QYXJ0KGNvbnN0IFJlbmRlck9iamVjdCYsIGNvbnN0IFBh
aW50SW5mbyYsIGNvbnN0IEludFJlY3QmKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIGJvb2wgcGFp
bnRTZWFyY2hGaWVsZFJlc3VsdHNEZWNvcmF0aW9uUGFydChjb25zdCBSZW5kZXJCb3gmLCBjb25z
dCBQYWludEluZm8mLCBjb25zdCBJbnRSZWN0Jikgb3ZlcnJpZGU7CiAKICAgICB2aXJ0dWFsIHZv
aWQgYWRqdXN0U2VhcmNoRmllbGRTdHlsZShTdHlsZVJlc29sdmVyJiwgUmVuZGVyU3R5bGUmLCBF
bGVtZW50KikgY29uc3Qgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCBib29sIHBhaW50U2VhcmNoRmll
bGQoY29uc3QgUmVuZGVyT2JqZWN0JiwgY29uc3QgUGFpbnRJbmZvJiwgY29uc3QgSW50UmVjdCYp
IG92ZXJyaWRlOwogCiAgICAgdmlydHVhbCB2b2lkIGFkanVzdFNlYXJjaEZpZWxkUmVzdWx0c0J1
dHRvblN0eWxlKFN0eWxlUmVzb2x2ZXImLCBSZW5kZXJTdHlsZSYsIEVsZW1lbnQqKSBjb25zdCBv
dmVycmlkZTsKLSAgICB2aXJ0dWFsIGJvb2wgcGFpbnRTZWFyY2hGaWVsZFJlc3VsdHNCdXR0b24o
Y29uc3QgUmVuZGVyT2JqZWN0JiwgY29uc3QgUGFpbnRJbmZvJiwgY29uc3QgSW50UmVjdCYpIG92
ZXJyaWRlOworICAgIHZpcnR1YWwgYm9vbCBwYWludFNlYXJjaEZpZWxkUmVzdWx0c0J1dHRvbihj
b25zdCBSZW5kZXJCb3gmLCBjb25zdCBQYWludEluZm8mLCBjb25zdCBJbnRSZWN0Jikgb3ZlcnJp
ZGU7CiAKICAgICB2aXJ0dWFsIHZvaWQgYWRqdXN0U2VhcmNoRmllbGRDYW5jZWxCdXR0b25TdHls
ZShTdHlsZVJlc29sdmVyJiwgUmVuZGVyU3R5bGUmLCBFbGVtZW50KikgY29uc3Qgb3ZlcnJpZGU7
Ci0gICAgdmlydHVhbCBib29sIHBhaW50U2VhcmNoRmllbGRDYW5jZWxCdXR0b24oY29uc3QgUmVu
ZGVyT2JqZWN0JiwgY29uc3QgUGFpbnRJbmZvJiwgY29uc3QgSW50UmVjdCYpIG92ZXJyaWRlOwor
ICAgIHZpcnR1YWwgYm9vbCBwYWludFNlYXJjaEZpZWxkQ2FuY2VsQnV0dG9uKGNvbnN0IFJlbmRl
ckJveCYsIGNvbnN0IFBhaW50SW5mbyYsIGNvbnN0IEludFJlY3QmKSBvdmVycmlkZTsKIAogICAg
IHZpcnR1YWwgdm9pZCBhZGp1c3RTbGlkZXJUcmFja1N0eWxlKFN0eWxlUmVzb2x2ZXImLCBSZW5k
ZXJTdHlsZSYsIEVsZW1lbnQqKSBjb25zdCBvdmVycmlkZTsKICAgICB2aXJ0dWFsIGJvb2wgcGFp
bnRTbGlkZXJUcmFjayhjb25zdCBSZW5kZXJPYmplY3QmLCBjb25zdCBQYWludEluZm8mLCBjb25z
dCBJbnRSZWN0Jikgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyVGhlbWVHdGsuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRo
ZW1lR3RrLmNwcAppbmRleCBiZDdmZmEyYTZlZTc3MjlkMmY3MzI0MGIwMWVhNTY3OWM0YzgzODFh
Li4wODI0OWE3N2JmN2E1YWM3MzRkNWJhNGVlNTQzNTgyZmRhOTcyZDk3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVHdGsuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUd0ay5jcHAKQEAgLTEwMDIsNyArMTAwMiw3IEBA
IHZvaWQgUmVuZGVyVGhlbWVHdGs6OmFkanVzdFNlYXJjaEZpZWxkUmVzdWx0c0J1dHRvblN0eWxl
KFN0eWxlUmVzb2x2ZXImIHN0eWxlUmVzCiAgICAgYWRqdXN0U2VhcmNoRmllbGRDYW5jZWxCdXR0
b25TdHlsZShzdHlsZVJlc29sdmVyLCBzdHlsZSwgZSk7CiB9CiAKLWJvb2wgUmVuZGVyVGhlbWVH
dGs6OnBhaW50U2VhcmNoRmllbGRSZXN1bHRzQnV0dG9uKGNvbnN0IFJlbmRlck9iamVjdCYgbywg
Y29uc3QgUGFpbnRJbmZvJiBpLCBjb25zdCBJbnRSZWN0JiByZWN0KQorYm9vbCBSZW5kZXJUaGVt
ZUd0azo6cGFpbnRTZWFyY2hGaWVsZFJlc3VsdHNCdXR0b24oY29uc3QgUmVuZGVyQm94JiBvLCBj
b25zdCBQYWludEluZm8mIGksIGNvbnN0IEludFJlY3QmIHJlY3QpCiB7CiAgICAgcmV0dXJuIHBh
aW50U2VhcmNoRmllbGRSZXN1bHRzRGVjb3JhdGlvblBhcnQobywgaSwgcmVjdCk7CiB9CkBAIC0x
MDUzLDcgKzEwNTMsNyBAQCBzdGF0aWMgSW50UmVjdCBjZW50ZXJSZWN0VmVydGljYWxseUluUGFy
ZW50SW5wdXRFbGVtZW50KGNvbnN0IFJlbmRlck9iamVjdCYgcmVuZAogICAgIHJldHVybiBzY2Fs
ZWRSZWN0OwogfQogCi1ib29sIFJlbmRlclRoZW1lR3RrOjpwYWludFNlYXJjaEZpZWxkUmVzdWx0
c0RlY29yYXRpb25QYXJ0KGNvbnN0IFJlbmRlck9iamVjdCYgcmVuZGVyT2JqZWN0LCBjb25zdCBQ
YWludEluZm8mIHBhaW50SW5mbywgY29uc3QgSW50UmVjdCYgcmVjdCkKK2Jvb2wgUmVuZGVyVGhl
bWVHdGs6OnBhaW50U2VhcmNoRmllbGRSZXN1bHRzRGVjb3JhdGlvblBhcnQoY29uc3QgUmVuZGVy
Qm94JiByZW5kZXJPYmplY3QsIGNvbnN0IFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBJbnRS
ZWN0JiByZWN0KQogewogICAgIEludFJlY3QgaWNvblJlY3QgPSBjZW50ZXJSZWN0VmVydGljYWxs
eUluUGFyZW50SW5wdXRFbGVtZW50KHJlbmRlck9iamVjdCwgcmVjdCk7CiAgICAgaWYgKGljb25S
ZWN0LmlzRW1wdHkoKSkKQEAgLTEwNzIsNyArMTA3Miw3IEBAIHZvaWQgUmVuZGVyVGhlbWVHdGs6
OmFkanVzdFNlYXJjaEZpZWxkQ2FuY2VsQnV0dG9uU3R5bGUoU3R5bGVSZXNvbHZlciYsIFJlbmRl
clN0CiAgICAgYWRqdXN0U2VhcmNoRmllbGRJY29uU3R5bGUoc3R5bGUpOwogfQogCi1ib29sIFJl
bmRlclRoZW1lR3RrOjpwYWludFNlYXJjaEZpZWxkQ2FuY2VsQnV0dG9uKGNvbnN0IFJlbmRlck9i
amVjdCYgcmVuZGVyT2JqZWN0LCBjb25zdCBQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgSW50
UmVjdCYgcmVjdCkKK2Jvb2wgUmVuZGVyVGhlbWVHdGs6OnBhaW50U2VhcmNoRmllbGRDYW5jZWxC
dXR0b24oY29uc3QgUmVuZGVyQm94JiByZW5kZXJPYmplY3QsIGNvbnN0IFBhaW50SW5mbyYgcGFp
bnRJbmZvLCBjb25zdCBJbnRSZWN0JiByZWN0KQogewogICAgIEludFJlY3QgaWNvblJlY3QgPSBj
ZW50ZXJSZWN0VmVydGljYWxseUluUGFyZW50SW5wdXRFbGVtZW50KHJlbmRlck9iamVjdCwgcmVj
dCk7CiAgICAgaWYgKGljb25SZWN0LmlzRW1wdHkoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUd0ay5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclRoZW1lR3RrLmgKaW5kZXggMjA3YjRkNzg4MDdhYmI1NWE5YTllMTIwNzQxZDdjNWQ1
ZGMzNDdjNS4uMDcwYjM5NmY5OWEzMzFjMzdmZDZmN2I3MDgxNmVlNzgzMTkwMjg1YSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lR3RrLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lR3RrLmgKQEAgLTEzMywxNiArMTMzLDE2
IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCBib29sIHBhaW50TWVudUxpc3RCdXR0b25EZWNvcmF0
aW9ucyhjb25zdCBSZW5kZXJCb3gmLCBjb25zdCBQYWludEluZm8mLCBjb25zdCBGbG9hdFJlY3Qm
KSBvdmVycmlkZTsKIAogICAgIHZpcnR1YWwgdm9pZCBhZGp1c3RTZWFyY2hGaWVsZFJlc3VsdHNE
ZWNvcmF0aW9uUGFydFN0eWxlKFN0eWxlUmVzb2x2ZXImLCBSZW5kZXJTdHlsZSYsIEVsZW1lbnQq
KSBjb25zdCBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIGJvb2wgcGFpbnRTZWFyY2hGaWVsZFJlc3Vs
dHNEZWNvcmF0aW9uUGFydChjb25zdCBSZW5kZXJPYmplY3QmLCBjb25zdCBQYWludEluZm8mLCBj
b25zdCBJbnRSZWN0Jikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBib29sIHBhaW50U2VhcmNoRmll
bGRSZXN1bHRzRGVjb3JhdGlvblBhcnQoY29uc3QgUmVuZGVyQm94JiwgY29uc3QgUGFpbnRJbmZv
JiwgY29uc3QgSW50UmVjdCYpIG92ZXJyaWRlOwogCiAgICAgdmlydHVhbCB2b2lkIGFkanVzdFNl
YXJjaEZpZWxkU3R5bGUoU3R5bGVSZXNvbHZlciYsIFJlbmRlclN0eWxlJiwgRWxlbWVudCopIGNv
bnN0IG92ZXJyaWRlOwogICAgIHZpcnR1YWwgYm9vbCBwYWludFNlYXJjaEZpZWxkKGNvbnN0IFJl
bmRlck9iamVjdCYsIGNvbnN0IFBhaW50SW5mbyYsIGNvbnN0IEludFJlY3QmKSBvdmVycmlkZTsK
IAogICAgIHZpcnR1YWwgdm9pZCBhZGp1c3RTZWFyY2hGaWVsZFJlc3VsdHNCdXR0b25TdHlsZShT
dHlsZVJlc29sdmVyJiwgUmVuZGVyU3R5bGUmLCBFbGVtZW50KikgY29uc3Qgb3ZlcnJpZGU7Ci0g
ICAgdmlydHVhbCBib29sIHBhaW50U2VhcmNoRmllbGRSZXN1bHRzQnV0dG9uKGNvbnN0IFJlbmRl
ck9iamVjdCYsIGNvbnN0IFBhaW50SW5mbyYsIGNvbnN0IEludFJlY3QmKSBvdmVycmlkZTsKKyAg
ICB2aXJ0dWFsIGJvb2wgcGFpbnRTZWFyY2hGaWVsZFJlc3VsdHNCdXR0b24oY29uc3QgUmVuZGVy
Qm94JiwgY29uc3QgUGFpbnRJbmZvJiwgY29uc3QgSW50UmVjdCYpIG92ZXJyaWRlOwogCiAgICAg
dmlydHVhbCB2b2lkIGFkanVzdFNlYXJjaEZpZWxkQ2FuY2VsQnV0dG9uU3R5bGUoU3R5bGVSZXNv
bHZlciYsIFJlbmRlclN0eWxlJiwgRWxlbWVudCopIGNvbnN0IG92ZXJyaWRlOwotICAgIHZpcnR1
YWwgYm9vbCBwYWludFNlYXJjaEZpZWxkQ2FuY2VsQnV0dG9uKGNvbnN0IFJlbmRlck9iamVjdCYs
IGNvbnN0IFBhaW50SW5mbyYsIGNvbnN0IEludFJlY3QmKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFs
IGJvb2wgcGFpbnRTZWFyY2hGaWVsZENhbmNlbEJ1dHRvbihjb25zdCBSZW5kZXJCb3gmLCBjb25z
dCBQYWludEluZm8mLCBjb25zdCBJbnRSZWN0Jikgb3ZlcnJpZGU7CiAKICAgICB2aXJ0dWFsIGJv
b2wgcGFpbnRTbGlkZXJUcmFjayhjb25zdCBSZW5kZXJPYmplY3QmLCBjb25zdCBQYWludEluZm8m
LCBjb25zdCBJbnRSZWN0Jikgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIGFkanVzdFNsaWRl
clRyYWNrU3R5bGUoU3R5bGVSZXNvbHZlciYsIFJlbmRlclN0eWxlJiwgRWxlbWVudCopIGNvbnN0
IG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRo
ZW1lTWFjLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVNYWMuaAppbmRl
eCAzZGQ4ODI0OGMyMmI2NzRmOWMwNzc5YWE0NzRkYjY4ZDEwOThlYWEyLi45ZTI0N2MzN2M4NmIz
OWM4NDdjNDcxMWMyOGExMjdmYWNmYzE0NmI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyVGhlbWVNYWMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyVGhlbWVNYWMuaApAQCAtMTQ0LDE2ICsxNDQsMTYgQEAgcHJvdGVjdGVkOgogICAgIHZp
cnR1YWwgdm9pZCBhZGp1c3RTZWFyY2hGaWVsZFN0eWxlKFN0eWxlUmVzb2x2ZXImLCBSZW5kZXJT
dHlsZSYsIEVsZW1lbnQqKSBjb25zdCBvdmVycmlkZTsKIAogICAgIHZpcnR1YWwgdm9pZCBhZGp1
c3RTZWFyY2hGaWVsZENhbmNlbEJ1dHRvblN0eWxlKFN0eWxlUmVzb2x2ZXImLCBSZW5kZXJTdHls
ZSYsIEVsZW1lbnQqKSBjb25zdCBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIGJvb2wgcGFpbnRTZWFy
Y2hGaWVsZENhbmNlbEJ1dHRvbihjb25zdCBSZW5kZXJPYmplY3QmLCBjb25zdCBQYWludEluZm8m
LCBjb25zdCBJbnRSZWN0Jikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBib29sIHBhaW50U2VhcmNo
RmllbGRDYW5jZWxCdXR0b24oY29uc3QgUmVuZGVyQm94JiwgY29uc3QgUGFpbnRJbmZvJiwgY29u
c3QgSW50UmVjdCYpIG92ZXJyaWRlOwogCiAgICAgdmlydHVhbCB2b2lkIGFkanVzdFNlYXJjaEZp
ZWxkRGVjb3JhdGlvblBhcnRTdHlsZShTdHlsZVJlc29sdmVyJiwgUmVuZGVyU3R5bGUmLCBFbGVt
ZW50KikgY29uc3Qgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCBib29sIHBhaW50U2VhcmNoRmllbGRE
ZWNvcmF0aW9uUGFydChjb25zdCBSZW5kZXJPYmplY3QmLCBjb25zdCBQYWludEluZm8mLCBjb25z
dCBJbnRSZWN0Jikgb3ZlcnJpZGU7CiAKICAgICB2aXJ0dWFsIHZvaWQgYWRqdXN0U2VhcmNoRmll
bGRSZXN1bHRzRGVjb3JhdGlvblBhcnRTdHlsZShTdHlsZVJlc29sdmVyJiwgUmVuZGVyU3R5bGUm
LCBFbGVtZW50KikgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBib29sIHBhaW50U2VhcmNo
RmllbGRSZXN1bHRzRGVjb3JhdGlvblBhcnQoY29uc3QgUmVuZGVyT2JqZWN0JiwgY29uc3QgUGFp
bnRJbmZvJiwgY29uc3QgSW50UmVjdCYpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgYm9vbCBwYWlu
dFNlYXJjaEZpZWxkUmVzdWx0c0RlY29yYXRpb25QYXJ0KGNvbnN0IFJlbmRlckJveCYsIGNvbnN0
IFBhaW50SW5mbyYsIGNvbnN0IEludFJlY3QmKSBvdmVycmlkZTsKIAogICAgIHZpcnR1YWwgdm9p
ZCBhZGp1c3RTZWFyY2hGaWVsZFJlc3VsdHNCdXR0b25TdHlsZShTdHlsZVJlc29sdmVyJiwgUmVu
ZGVyU3R5bGUmLCBFbGVtZW50KikgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBib29sIHBh
aW50U2VhcmNoRmllbGRSZXN1bHRzQnV0dG9uKGNvbnN0IFJlbmRlck9iamVjdCYsIGNvbnN0IFBh
aW50SW5mbyYsIGNvbnN0IEludFJlY3QmKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIGJvb2wgcGFp
bnRTZWFyY2hGaWVsZFJlc3VsdHNCdXR0b24oY29uc3QgUmVuZGVyQm94JiwgY29uc3QgUGFpbnRJ
bmZvJiwgY29uc3QgSW50UmVjdCYpIG92ZXJyaWRlOwogCiAjaWYgRU5BQkxFKFZJREVPKQogICAg
IHZpcnR1YWwgYm9vbCBzdXBwb3J0c0Nsb3NlZENhcHRpb25pbmcoKSBjb25zdCBvdmVycmlkZSB7
IHJldHVybiB0cnVlOyB9CkBAIC0xNzIsOCArMTcyLDYgQEAgcHJvdGVjdGVkOgogcHJpdmF0ZToK
ICAgICB2aXJ0dWFsIFN0cmluZyBmaWxlTGlzdE5hbWVGb3JXaWR0aChjb25zdCBGaWxlTGlzdCos
IGNvbnN0IEZvbnRDYXNjYWRlJiwgaW50IHdpZHRoLCBib29sIG11bHRpcGxlRmlsZXNBbGxvd2Vk
KSBjb25zdCBvdmVycmlkZTsKIAotICAgIEZsb2F0UmVjdCBjb252ZXJ0VG9QYWludGluZ1JlY3Qo
Y29uc3QgUmVuZGVyT2JqZWN0JiBpbnB1dFJlbmRlcmVyLCBjb25zdCBSZW5kZXJPYmplY3QmIHBh
cnRSZW5kZXJlciwgY29uc3QgRmxvYXRSZWN0JiBpbnB1dFJlY3QsIGNvbnN0IEludFJlY3QmKSBj
b25zdDsKLQogICAgIHZpcnR1YWwgQ29sb3Igc3lzdGVtQ29sb3IoQ1NTVmFsdWVJRCkgY29uc3Qg
b3ZlcnJpZGU7CiAKICAgICAvLyBHZXQgdGhlIGNvbnRyb2wgc2l6ZSBiYXNlZCBvZmYgdGhlIGZv
bnQuIFVzZWQgYnkgc29tZSBvZiB0aGUgY29udHJvbHMgKGxpa2UgYnV0dG9ucykuCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVNYWMubW0gYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVNYWMubW0KaW5kZXggMzA0M2FkMjc0YzQ1NTY1
MTg0ODVkNGMyMmNmYjkxNzQwOWQ4ODBjMi4uYWQxMGYyNzdhNjUxZjYwNGIzYmI0ZjZiZjFmYWU0
NjM2OTZmNzUwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRo
ZW1lTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZU1hYy5t
bQpAQCAtNjczLDI3ICs2NzMsMTQgQEAgdm9pZCBSZW5kZXJUaGVtZU1hYzo6YWRqdXN0UmVwYWlu
dFJlY3QoY29uc3QgUmVuZGVyT2JqZWN0JiByZW5kZXJlciwgRmxvYXRSZWN0JgogICAgIH0KIH0K
IAotRmxvYXRSZWN0IFJlbmRlclRoZW1lTWFjOjpjb252ZXJ0VG9QYWludGluZ1JlY3QoY29uc3Qg
UmVuZGVyT2JqZWN0JiBpbnB1dFJlbmRlcmVyLCBjb25zdCBSZW5kZXJPYmplY3QmIHBhcnRSZW5k
ZXJlciwgY29uc3QgRmxvYXRSZWN0JiBpbnB1dFJlY3QsIGNvbnN0IEludFJlY3QmIHIpIGNvbnN0
Ci17Ci0gICAgRmxvYXRSZWN0IHBhcnRSZWN0KGlucHV0UmVjdCk7Ci0KLSAgICAvLyBDb21wdXRl
IGFuIG9mZnNldCBiZXR3ZWVuIHRoZSBwYXJ0IHJlbmRlcmVyIGFuZCB0aGUgaW5wdXQgcmVuZGVy
ZXIKLSAgICBGbG9hdFNpemUgb2Zmc2V0RnJvbUlucHV0UmVuZGVyZXI7Ci0gICAgY29uc3QgUmVu
ZGVyT2JqZWN0KiByZW5kZXJlciA9ICZwYXJ0UmVuZGVyZXI7Ci0gICAgd2hpbGUgKHJlbmRlcmVy
ICYmIHJlbmRlcmVyICE9ICZpbnB1dFJlbmRlcmVyKSB7Ci0gICAgICAgIFJlbmRlckVsZW1lbnQq
IGNvbnRhaW5pbmdSZW5kZXJlciA9IHJlbmRlcmVyLT5jb250YWluZXIoKTsKLSAgICAgICAgQVNT
RVJUKGNvbnRhaW5pbmdSZW5kZXJlcik7Ci0gICAgICAgIG9mZnNldEZyb21JbnB1dFJlbmRlcmVy
IC09IHJvdW5kZWRJbnRTaXplKHJlbmRlcmVyLT5vZmZzZXRGcm9tQ29udGFpbmVyKCpjb250YWlu
aW5nUmVuZGVyZXIsIExheW91dFBvaW50KCkpKTsKLSAgICAgICAgcmVuZGVyZXIgPSBjb250YWlu
aW5nUmVuZGVyZXI7Ci0gICAgfQotICAgIC8vIElmIHRoZSBpbnB1dCByZW5kZXJlciB3YXMgbm90
IGEgY29udGFpbmVyLCBzb21ldGhpbmcgd2VudCB3cm9uZwotICAgIEFTU0VSVChyZW5kZXJlciA9
PSAmaW5wdXRSZW5kZXJlcik7Ci0gICAgLy8gTW92ZSB0aGUgcmVjdCBpbnRvIHBhcnRSZW5kZXJl
cidzIGNvb3JkcwotICAgIHBhcnRSZWN0Lm1vdmUob2Zmc2V0RnJvbUlucHV0UmVuZGVyZXIpOwot
ICAgIC8vIEFjY291bnQgZm9yIHRoZSBsb2NhbCBkcmF3aW5nIG9mZnNldCAodHgsIHR5KQotICAg
IHBhcnRSZWN0Lm1vdmUoci54KCksIHIueSgpKTsKLQotICAgIHJldHVybiBwYXJ0UmVjdDsKK3N0
YXRpYyBGbG9hdFBvaW50IGNvbnZlcnRUb1BhaW50aW5nUG9zaXRpb24oY29uc3QgUmVuZGVyQm94
JiBpbnB1dFJlbmRlcmVyLCBjb25zdCBSZW5kZXJCb3gmIGN1c3RvbUJ1dHRvblJlbmRlcmVyLCBj
b25zdCBGbG9hdFBvaW50JiBjdXN0b21CdXR0b25Mb2NhbFBvc2l0aW9uLAorICAgIGNvbnN0IElu
dFBvaW50JiBwYWludE9mZnNldCkKK3sKKyAgICBJbnRQb2ludCBvZmZzZXRGcm9tSW5wdXRSZW5k
ZXJlciA9IHJvdW5kZWRJbnRQb2ludChjdXN0b21CdXR0b25SZW5kZXJlci5sb2NhbFRvQ29udGFp
bmVyUG9pbnQoY3VzdG9tQnV0dG9uUmVuZGVyZXIuY29udGVudEJveFJlY3QoKS5sb2NhdGlvbigp
LCAmaW5wdXRSZW5kZXJlcikpOworICAgIEZsb2F0UG9pbnQgcGFpbnRpbmdQb3NpdGlvbiA9IGN1
c3RvbUJ1dHRvbkxvY2FsUG9zaXRpb247CisgICAgcGFpbnRpbmdQb3NpdGlvbi5tb3ZlQnkoLW9m
ZnNldEZyb21JbnB1dFJlbmRlcmVyKTsKKyAgICBwYWludGluZ1Bvc2l0aW9uLm1vdmVCeShwYWlu
dE9mZnNldCk7CisgICAgcmV0dXJuIHBhaW50aW5nUG9zaXRpb247CiB9CiAKIHZvaWQgUmVuZGVy
VGhlbWVNYWM6OnVwZGF0ZUNoZWNrZWRTdGF0ZShOU0NlbGwqIGNlbGwsIGNvbnN0IFJlbmRlck9i
amVjdCYgbykKQEAgLTE2NzQsMzUgKzE2NjEsMzYgQEAgdm9pZCBSZW5kZXJUaGVtZU1hYzo6YWRq
dXN0U2VhcmNoRmllbGRTdHlsZShTdHlsZVJlc29sdmVyJiBzdHlsZVJlc29sdmVyLCBSZW5kZXIK
ICAgICBzdHlsZS5zZXRCb3hTaGFkb3cobnVsbHB0cik7CiB9CiAKLWJvb2wgUmVuZGVyVGhlbWVN
YWM6OnBhaW50U2VhcmNoRmllbGRDYW5jZWxCdXR0b24oY29uc3QgUmVuZGVyT2JqZWN0JiBvLCBj
b25zdCBQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgSW50UmVjdCYgcikKK2Jvb2wgUmVuZGVy
VGhlbWVNYWM6OnBhaW50U2VhcmNoRmllbGRDYW5jZWxCdXR0b24oY29uc3QgUmVuZGVyQm94JiBi
b3gsIGNvbnN0IFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBJbnRSZWN0JiByKQogewotICAg
IGlmICghby5ub2RlKCkpCisgICAgaWYgKCFib3guZWxlbWVudCgpKQogICAgICAgICByZXR1cm4g
ZmFsc2U7Ci0gICAgRWxlbWVudCogaW5wdXQgPSBvLm5vZGUoKS0+c2hhZG93SG9zdCgpOworICAg
IEVsZW1lbnQqIGlucHV0ID0gYm94LmVsZW1lbnQoKS0+c2hhZG93SG9zdCgpOwogICAgIGlmICgh
aW5wdXQpCi0gICAgICAgIGlucHV0ID0gZG93bmNhc3Q8RWxlbWVudD4oby5ub2RlKCkpOworICAg
ICAgICBpbnB1dCA9IGJveC5lbGVtZW50KCk7CiAKLSAgICBpZiAoIWlucHV0LT5yZW5kZXJlcigp
LT5pc0JveCgpKQorICAgIGlmICghaXM8UmVuZGVyQm94PihpbnB1dC0+cmVuZGVyZXIoKSkpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKIAorICAgIGNvbnN0IFJlbmRlckJveCYgaW5wdXRCb3ggPSBk
b3duY2FzdDxSZW5kZXJCb3g+KCppbnB1dC0+cmVuZGVyZXIoKSk7CiAgICAgTG9jYWxDdXJyZW50
R3JhcGhpY3NDb250ZXh0IGxvY2FsQ29udGV4dChwYWludEluZm8uY29udGV4dCgpKTsKLSAgICBz
ZXRTZWFyY2hDZWxsU3RhdGUoKmlucHV0LT5yZW5kZXJlcigpLCByKTsKKyAgICBzZXRTZWFyY2hD
ZWxsU3RhdGUoaW5wdXRCb3gsIHIpOwogCiAgICAgTlNTZWFyY2hGaWVsZENlbGwqIHNlYXJjaCA9
IHRoaXMtPnNlYXJjaCgpOwogCiAgICAgaWYgKCFpbnB1dC0+aXNEaXNhYmxlZEZvcm1Db250cm9s
KCkgJiYgKGlzPEhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50PigqaW5wdXQpICYmICFkb3duY2Fz
dDxIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudD4oKmlucHV0KS5pc1JlYWRPbmx5KCkpKQotICAg
ICAgICB1cGRhdGVQcmVzc2VkU3RhdGUoW3NlYXJjaCBjYW5jZWxCdXR0b25DZWxsXSwgbyk7Cisg
ICAgICAgIHVwZGF0ZVByZXNzZWRTdGF0ZShbc2VhcmNoIGNhbmNlbEJ1dHRvbkNlbGxdLCBib3gp
OwogICAgIGVsc2UgaWYgKFtbc2VhcmNoIGNhbmNlbEJ1dHRvbkNlbGxdIGlzSGlnaGxpZ2h0ZWRd
KQogICAgICAgICBbW3NlYXJjaCBjYW5jZWxCdXR0b25DZWxsXSBzZXRIaWdobGlnaHRlZDpOT107
CiAKICAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIocGFpbnRJbmZvLmNv
bnRleHQoKSk7CiAKLSAgICBmbG9hdCB6b29tTGV2ZWwgPSBvLnN0eWxlKCkuZWZmZWN0aXZlWm9v
bSgpOworICAgIGZsb2F0IHpvb21MZXZlbCA9IGJveC5zdHlsZSgpLmVmZmVjdGl2ZVpvb20oKTsK
IAotICAgIEZsb2F0UmVjdCBsb2NhbEJvdW5kcyA9IFtzZWFyY2ggY2FuY2VsQnV0dG9uUmVjdEZv
ckJvdW5kczpOU1JlY3Qoc25hcHBlZEludFJlY3QoaW5wdXQtPnJlbmRlckJveCgpLT5jb250ZW50
Qm94UmVjdCgpKSldOwotICAgIGxvY2FsQm91bmRzID0gY29udmVydFRvUGFpbnRpbmdSZWN0KCpp
bnB1dC0+cmVuZGVyZXIoKSwgbywgbG9jYWxCb3VuZHMsIHIpOworICAgIEZsb2F0UmVjdCBsb2Nh
bEJvdW5kcyA9IFtzZWFyY2ggY2FuY2VsQnV0dG9uUmVjdEZvckJvdW5kczpOU1JlY3Qoc25hcHBl
ZEludFJlY3QoaW5wdXRCb3guY29udGVudEJveFJlY3QoKSkpXTsKKyAgICBGbG9hdFBvaW50IHBh
aW50aW5nUG9zID0gY29udmVydFRvUGFpbnRpbmdQb3NpdGlvbihpbnB1dEJveCwgYm94LCBsb2Nh
bEJvdW5kcy5sb2NhdGlvbigpLCByLmxvY2F0aW9uKCkpOwogCi0gICAgRmxvYXRSZWN0IHVuem9v
bWVkUmVjdChsb2NhbEJvdW5kcyk7CisgICAgRmxvYXRSZWN0IHVuem9vbWVkUmVjdChwYWludGlu
Z1BvcywgbG9jYWxCb3VuZHMuc2l6ZSgpKTsKICAgICBpZiAoem9vbUxldmVsICE9IDEuMGYpIHsK
ICAgICAgICAgdW56b29tZWRSZWN0LnNldFdpZHRoKHVuem9vbWVkUmVjdC53aWR0aCgpIC8gem9v
bUxldmVsKTsKICAgICAgICAgdW56b29tZWRSZWN0LnNldEhlaWdodCh1bnpvb21lZFJlY3QuaGVp
Z2h0KCkgLyB6b29tTGV2ZWwpOwpAQCAtMTcxMSw3ICsxNjk5LDcgQEAgYm9vbCBSZW5kZXJUaGVt
ZU1hYzo6cGFpbnRTZWFyY2hGaWVsZENhbmNlbEJ1dHRvbihjb25zdCBSZW5kZXJPYmplY3QmIG8s
IGNvbnN0IFAKICAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQoKS50cmFuc2xhdGUoLXVuem9vbWVk
UmVjdC54KCksIC11bnpvb21lZFJlY3QueSgpKTsKICAgICB9CiAKLSAgICBbW3NlYXJjaCBjYW5j
ZWxCdXR0b25DZWxsXSBkcmF3V2l0aEZyYW1lOnVuem9vbWVkUmVjdCBpblZpZXc6ZG9jdW1lbnRW
aWV3Rm9yKG8pXTsKKyAgICBbW3NlYXJjaCBjYW5jZWxCdXR0b25DZWxsXSBkcmF3V2l0aEZyYW1l
OnVuem9vbWVkUmVjdCBpblZpZXc6ZG9jdW1lbnRWaWV3Rm9yKGJveCldOwogICAgIFtbc2VhcmNo
IGNhbmNlbEJ1dHRvbkNlbGxdIHNldENvbnRyb2xWaWV3Om5pbF07CiAgICAgcmV0dXJuIGZhbHNl
OwogfQpAQCAtMTc1OCwyOCArMTc0NiwzMCBAQCB2b2lkIFJlbmRlclRoZW1lTWFjOjphZGp1c3RT
ZWFyY2hGaWVsZFJlc3VsdHNEZWNvcmF0aW9uUGFydFN0eWxlKFN0eWxlUmVzb2x2ZXImLAogICAg
IHN0eWxlLnNldEJveFNoYWRvdyhudWxscHRyKTsKIH0KIAotYm9vbCBSZW5kZXJUaGVtZU1hYzo6
cGFpbnRTZWFyY2hGaWVsZFJlc3VsdHNEZWNvcmF0aW9uUGFydChjb25zdCBSZW5kZXJPYmplY3Qm
IG8sIGNvbnN0IFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBJbnRSZWN0JiByKQorYm9vbCBS
ZW5kZXJUaGVtZU1hYzo6cGFpbnRTZWFyY2hGaWVsZFJlc3VsdHNEZWNvcmF0aW9uUGFydChjb25z
dCBSZW5kZXJCb3gmIGJveCwgY29uc3QgUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IEludFJl
Y3QmIHIpCiB7Ci0gICAgaWYgKCFvLm5vZGUoKSkKKyAgICBpZiAoIWJveC5lbGVtZW50KCkpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBOb2RlKiBpbnB1dCA9IG8ubm9kZSgpLT5zaGFkb3dI
b3N0KCk7CisgICAgRWxlbWVudCogaW5wdXQgPSBib3guZWxlbWVudCgpLT5zaGFkb3dIb3N0KCk7
CiAgICAgaWYgKCFpbnB1dCkKLSAgICAgICAgaW5wdXQgPSBvLm5vZGUoKTsKLSAgICBpZiAoIWlu
cHV0LT5yZW5kZXJlcigpLT5pc0JveCgpKQorICAgICAgICBpbnB1dCA9IGJveC5lbGVtZW50KCk7
CisgICAgaWYgKCFpczxSZW5kZXJCb3g+KGlucHV0LT5yZW5kZXJlcigpKSkKICAgICAgICAgcmV0
dXJuIGZhbHNlOwotCisgICAgCisgICAgY29uc3QgUmVuZGVyQm94JiBpbnB1dEJveCA9IGRvd25j
YXN0PFJlbmRlckJveD4oKmlucHV0LT5yZW5kZXJlcigpKTsKICAgICBMb2NhbEN1cnJlbnRHcmFw
aGljc0NvbnRleHQgbG9jYWxDb250ZXh0KHBhaW50SW5mby5jb250ZXh0KCkpOwotICAgIHNldFNl
YXJjaENlbGxTdGF0ZSgqaW5wdXQtPnJlbmRlcmVyKCksIHIpOworICAgIHNldFNlYXJjaENlbGxT
dGF0ZShpbnB1dEJveCwgcik7CiAKICAgICBOU1NlYXJjaEZpZWxkQ2VsbCogc2VhcmNoID0gdGhp
cy0+c2VhcmNoKCk7CiAKICAgICBpZiAoW3NlYXJjaCBzZWFyY2hNZW51VGVtcGxhdGVdICE9IG5p
bCkKICAgICAgICAgW3NlYXJjaCBzZXRTZWFyY2hNZW51VGVtcGxhdGU6bmlsXTsKIAotICAgIEZs
b2F0UmVjdCBsb2NhbEJvdW5kcyA9IFtzZWFyY2ggc2VhcmNoQnV0dG9uUmVjdEZvckJvdW5kczpO
U1JlY3Qoc25hcHBlZEludFJlY3QoaW5wdXQtPnJlbmRlckJveCgpLT5ib3JkZXJCb3hSZWN0KCkp
KV07Ci0gICAgbG9jYWxCb3VuZHMgPSBjb252ZXJ0VG9QYWludGluZ1JlY3QoKmlucHV0LT5yZW5k
ZXJlcigpLCBvLCBsb2NhbEJvdW5kcywgcik7CisgICAgRmxvYXRSZWN0IGxvY2FsQm91bmRzID0g
W3NlYXJjaCBzZWFyY2hCdXR0b25SZWN0Rm9yQm91bmRzOk5TUmVjdChzbmFwcGVkSW50UmVjdChp
bnB1dEJveC5ib3JkZXJCb3hSZWN0KCkpKV07CisgICAgRmxvYXRQb2ludCBwYWludGluZ1BvcyA9
IGNvbnZlcnRUb1BhaW50aW5nUG9zaXRpb24oaW5wdXRCb3gsIGJveCwgbG9jYWxCb3VuZHMubG9j
YXRpb24oKSwgci5sb2NhdGlvbigpKTsKKyAgICBsb2NhbEJvdW5kcy5zZXRMb2NhdGlvbihwYWlu
dGluZ1Bvcyk7CiAKLSAgICBbW3NlYXJjaCBzZWFyY2hCdXR0b25DZWxsXSBkcmF3V2l0aEZyYW1l
OmxvY2FsQm91bmRzIGluVmlldzpkb2N1bWVudFZpZXdGb3IobyldOworICAgIFtbc2VhcmNoIHNl
YXJjaEJ1dHRvbkNlbGxdIGRyYXdXaXRoRnJhbWU6bG9jYWxCb3VuZHMgaW5WaWV3OmRvY3VtZW50
Vmlld0Zvcihib3gpXTsKICAgICBbW3NlYXJjaCBzZWFyY2hCdXR0b25DZWxsXSBzZXRDb250cm9s
VmlldzpuaWxdOwogICAgIHJldHVybiBmYWxzZTsKIH0KQEAgLTE3OTMsMTYgKzE3ODMsMTcgQEAg
dm9pZCBSZW5kZXJUaGVtZU1hYzo6YWRqdXN0U2VhcmNoRmllbGRSZXN1bHRzQnV0dG9uU3R5bGUo
U3R5bGVSZXNvbHZlciYsIFJlbmRlclMKICAgICBzdHlsZS5zZXRCb3hTaGFkb3cobnVsbHB0cik7
CiB9CiAKLWJvb2wgUmVuZGVyVGhlbWVNYWM6OnBhaW50U2VhcmNoRmllbGRSZXN1bHRzQnV0dG9u
KGNvbnN0IFJlbmRlck9iamVjdCYgbywgY29uc3QgUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0
IEludFJlY3QmIHIpCitib29sIFJlbmRlclRoZW1lTWFjOjpwYWludFNlYXJjaEZpZWxkUmVzdWx0
c0J1dHRvbihjb25zdCBSZW5kZXJCb3gmIGJveCwgY29uc3QgUGFpbnRJbmZvJiBwYWludEluZm8s
IGNvbnN0IEludFJlY3QmIHIpCiB7Ci0gICAgTm9kZSogaW5wdXQgPSBvLm5vZGUoKS0+c2hhZG93
SG9zdCgpOworICAgIEVsZW1lbnQqIGlucHV0ID0gYm94LmVsZW1lbnQoKS0+c2hhZG93SG9zdCgp
OwogICAgIGlmICghaW5wdXQpCi0gICAgICAgIGlucHV0ID0gby5ub2RlKCk7Ci0gICAgaWYgKCFp
bnB1dC0+cmVuZGVyZXIoKS0+aXNCb3goKSkKKyAgICAgICAgaW5wdXQgPSBib3guZWxlbWVudCgp
OworICAgIGlmICghaXM8UmVuZGVyQm94PihpbnB1dC0+cmVuZGVyZXIoKSkpCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKLQorICAgIAorICAgIGNvbnN0IFJlbmRlckJveCYgaW5wdXRCb3ggPSBkb3du
Y2FzdDxSZW5kZXJCb3g+KCppbnB1dC0+cmVuZGVyZXIoKSk7CiAgICAgTG9jYWxDdXJyZW50R3Jh
cGhpY3NDb250ZXh0IGxvY2FsQ29udGV4dChwYWludEluZm8uY29udGV4dCgpKTsKLSAgICBzZXRT
ZWFyY2hDZWxsU3RhdGUoKmlucHV0LT5yZW5kZXJlcigpLCByKTsKKyAgICBzZXRTZWFyY2hDZWxs
U3RhdGUoaW5wdXRCb3gsIHIpOwogCiAgICAgTlNTZWFyY2hGaWVsZENlbGwqIHNlYXJjaCA9IHRo
aXMtPnNlYXJjaCgpOwogCkBAIC0xODEwLDEyICsxODAxLDEyIEBAIGJvb2wgUmVuZGVyVGhlbWVN
YWM6OnBhaW50U2VhcmNoRmllbGRSZXN1bHRzQnV0dG9uKGNvbnN0IFJlbmRlck9iamVjdCYgbywg
Y29uc3QKICAgICAgICAgW3NlYXJjaCBzZXRTZWFyY2hNZW51VGVtcGxhdGU6c2VhcmNoTWVudVRl
bXBsYXRlKCldOwogCiAgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKHBh
aW50SW5mby5jb250ZXh0KCkpOwotICAgIGZsb2F0IHpvb21MZXZlbCA9IG8uc3R5bGUoKS5lZmZl
Y3RpdmVab29tKCk7Ci0KLSAgICBGbG9hdFJlY3QgbG9jYWxCb3VuZHMgPSBbc2VhcmNoIHNlYXJj
aEJ1dHRvblJlY3RGb3JCb3VuZHM6TlNSZWN0KHNuYXBwZWRJbnRSZWN0KGlucHV0LT5yZW5kZXJC
b3goKS0+Y29udGVudEJveFJlY3QoKSkpXTsKLSAgICBsb2NhbEJvdW5kcyA9IGNvbnZlcnRUb1Bh
aW50aW5nUmVjdCgqaW5wdXQtPnJlbmRlcmVyKCksIG8sIGxvY2FsQm91bmRzLCByKTsKKyAgICBm
bG9hdCB6b29tTGV2ZWwgPSBib3guc3R5bGUoKS5lZmZlY3RpdmVab29tKCk7CiAKLSAgICBJbnRS
ZWN0IHVuem9vbWVkUmVjdChsb2NhbEJvdW5kcyk7CisgICAgRmxvYXRSZWN0IGxvY2FsQm91bmRz
ID0gW3NlYXJjaCBzZWFyY2hCdXR0b25SZWN0Rm9yQm91bmRzOk5TUmVjdChzbmFwcGVkSW50UmVj
dChpbnB1dEJveC5jb250ZW50Qm94UmVjdCgpKSldOworICAgIEZsb2F0UG9pbnQgcGFpbnRpbmdQ
b3MgPSBjb252ZXJ0VG9QYWludGluZ1Bvc2l0aW9uKGlucHV0Qm94LCBib3gsIGxvY2FsQm91bmRz
LmxvY2F0aW9uKCksIHIubG9jYXRpb24oKSk7CisgICAgCisgICAgRmxvYXRSZWN0IHVuem9vbWVk
UmVjdChwYWludGluZ1BvcywgbG9jYWxCb3VuZHMuc2l6ZSgpKTsKICAgICBpZiAoem9vbUxldmVs
ICE9IDEuMGYpIHsKICAgICAgICAgdW56b29tZWRSZWN0LnNldFdpZHRoKHVuem9vbWVkUmVjdC53
aWR0aCgpIC8gem9vbUxldmVsKTsKICAgICAgICAgdW56b29tZWRSZWN0LnNldEhlaWdodCh1bnpv
b21lZFJlY3QuaGVpZ2h0KCkgLyB6b29tTGV2ZWwpOwpAQCAtMTgyNCw3ICsxODE1LDcgQEAgYm9v
bCBSZW5kZXJUaGVtZU1hYzo6cGFpbnRTZWFyY2hGaWVsZFJlc3VsdHNCdXR0b24oY29uc3QgUmVu
ZGVyT2JqZWN0JiBvLCBjb25zdAogICAgICAgICBwYWludEluZm8uY29udGV4dCgpLnRyYW5zbGF0
ZSgtdW56b29tZWRSZWN0LngoKSwgLXVuem9vbWVkUmVjdC55KCkpOwogICAgIH0KIAotICAgIFtb
c2VhcmNoIHNlYXJjaEJ1dHRvbkNlbGxdIGRyYXdXaXRoRnJhbWU6dW56b29tZWRSZWN0IGluVmll
dzpkb2N1bWVudFZpZXdGb3IobyldOworICAgIFtbc2VhcmNoIHNlYXJjaEJ1dHRvbkNlbGxdIGRy
YXdXaXRoRnJhbWU6dW56b29tZWRSZWN0IGluVmlldzpkb2N1bWVudFZpZXdGb3IoYm94KV07CiAg
ICAgW1tzZWFyY2ggc2VhcmNoQnV0dG9uQ2VsbF0gc2V0Q29udHJvbFZpZXc6bmlsXTsKIAogICAg
IHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJUaGVtZVdpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVXaW4u
Y3BwCmluZGV4IGFjMjU1ZGE4NzNiMDQzNDEwZDVjNTQ5YzU2ZTZmZDRkODQxY2ZkNWEuLmI4OGU2
NjBmMDAwZjIwNjcxNDNmMTlkZDUyNTVjOTgzOWUwZjIyZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZVdpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlclRoZW1lV2luLmNwcApAQCAtODczLDcgKzg3Myw3IEBAIHZvaWQgUmVu
ZGVyVGhlbWVXaW46OmFkanVzdFNlYXJjaEZpZWxkU3R5bGUoU3R5bGVSZXNvbHZlciYgc3R5bGVS
ZXNvbHZlciwgUmVuZGVyCiAgICAgICAgIHN0eWxlLnNldE91dGxpbmVPZmZzZXQoLTIpOwogfQog
Ci1ib29sIFJlbmRlclRoZW1lV2luOjpwYWludFNlYXJjaEZpZWxkQ2FuY2VsQnV0dG9uKGNvbnN0
IFJlbmRlck9iamVjdCYgbywgY29uc3QgUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IEludFJl
Y3QmIHIpCitib29sIFJlbmRlclRoZW1lV2luOjpwYWludFNlYXJjaEZpZWxkQ2FuY2VsQnV0dG9u
KGNvbnN0IFJlbmRlckJveCYgbywgY29uc3QgUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IElu
dFJlY3QmIHIpCiB7CiAgICAgSW50UmVjdCBib3VuZHMgPSByOwogICAgIEFTU0VSVChvLnBhcmVu
dCgpKTsKQEAgLTkyMiw3ICs5MjIsNyBAQCB2b2lkIFJlbmRlclRoZW1lV2luOjphZGp1c3RTZWFy
Y2hGaWVsZFJlc3VsdHNEZWNvcmF0aW9uUGFydFN0eWxlKFN0eWxlUmVzb2x2ZXImLAogICAgIHN0
eWxlLnNldEhlaWdodChMZW5ndGgobWFnbmlmaWVyU2l6ZSwgRml4ZWQpKTsKIH0KIAotYm9vbCBS
ZW5kZXJUaGVtZVdpbjo6cGFpbnRTZWFyY2hGaWVsZFJlc3VsdHNEZWNvcmF0aW9uUGFydChjb25z
dCBSZW5kZXJPYmplY3QmIG8sIGNvbnN0IFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBJbnRS
ZWN0JiByKQorYm9vbCBSZW5kZXJUaGVtZVdpbjo6cGFpbnRTZWFyY2hGaWVsZFJlc3VsdHNEZWNv
cmF0aW9uUGFydChjb25zdCBSZW5kZXJCb3gmIG8sIGNvbnN0IFBhaW50SW5mbyYgcGFpbnRJbmZv
LCBjb25zdCBJbnRSZWN0JiByKQogewogICAgIEludFJlY3QgYm91bmRzID0gcjsKICAgICBBU1NF
UlQoby5wYXJlbnQoKSk7CkBAIC05NTUsNyArOTU1LDcgQEAgdm9pZCBSZW5kZXJUaGVtZVdpbjo6
YWRqdXN0U2VhcmNoRmllbGRSZXN1bHRzQnV0dG9uU3R5bGUoU3R5bGVSZXNvbHZlciYsIFJlbmRl
clMKICAgICBzdHlsZS5zZXRIZWlnaHQoTGVuZ3RoKG1hZ25pZmllckhlaWdodCwgRml4ZWQpKTsK
IH0KIAotYm9vbCBSZW5kZXJUaGVtZVdpbjo6cGFpbnRTZWFyY2hGaWVsZFJlc3VsdHNCdXR0b24o
Y29uc3QgUmVuZGVyT2JqZWN0JiBvLCBjb25zdCBQYWludEluZm8mIHBhaW50SW5mbywgY29uc3Qg
SW50UmVjdCYgcikKK2Jvb2wgUmVuZGVyVGhlbWVXaW46OnBhaW50U2VhcmNoRmllbGRSZXN1bHRz
QnV0dG9uKGNvbnN0IFJlbmRlckJveCYgbywgY29uc3QgUGFpbnRJbmZvJiBwYWludEluZm8sIGNv
bnN0IEludFJlY3QmIHIpCiB7CiAgICAgSW50UmVjdCBib3VuZHMgPSByOwogICAgIEFTU0VSVChv
LnBhcmVudCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJU
aGVtZVdpbi5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lV2luLmgKaW5k
ZXggNGQ5OGI3NDkxOGQ5ZDlmZGU2MjI4MWZlNGJmOTI3OTRjYmQ5MGM4Zi4uMGE3YjE4ZGU5ZmE1
MDkwNzU4OWIyNDFmYmI5OWFlOGIxM2I1Yjc1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlclRoZW1lV2luLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclRoZW1lV2luLmgKQEAgLTk5LDE2ICs5OSwxNiBAQCBwdWJsaWM6CiAgICAgdmlydHVh
bCBib29sIHBhaW50U2VhcmNoRmllbGQoY29uc3QgUmVuZGVyT2JqZWN0JiwgY29uc3QgUGFpbnRJ
bmZvJiwgY29uc3QgSW50UmVjdCYpIG92ZXJyaWRlOwogCiAgICAgdmlydHVhbCB2b2lkIGFkanVz
dFNlYXJjaEZpZWxkQ2FuY2VsQnV0dG9uU3R5bGUoU3R5bGVSZXNvbHZlciYsIFJlbmRlclN0eWxl
JiwgRWxlbWVudCopIGNvbnN0IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgYm9vbCBwYWludFNlYXJj
aEZpZWxkQ2FuY2VsQnV0dG9uKGNvbnN0IFJlbmRlck9iamVjdCYsIGNvbnN0IFBhaW50SW5mbyYs
IGNvbnN0IEludFJlY3QmKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIGJvb2wgcGFpbnRTZWFyY2hG
aWVsZENhbmNlbEJ1dHRvbihjb25zdCBSZW5kZXJCb3gmLCBjb25zdCBQYWludEluZm8mLCBjb25z
dCBJbnRSZWN0Jikgb3ZlcnJpZGU7CiAKICAgICB2aXJ0dWFsIHZvaWQgYWRqdXN0U2VhcmNoRmll
bGREZWNvcmF0aW9uUGFydFN0eWxlKFN0eWxlUmVzb2x2ZXImLCBSZW5kZXJTdHlsZSYsIEVsZW1l
bnQqKSBjb25zdCBvdmVycmlkZTsKICAgICB2aXJ0dWFsIGJvb2wgcGFpbnRTZWFyY2hGaWVsZERl
Y29yYXRpb25QYXJ0KGNvbnN0IFJlbmRlck9iamVjdCYsIGNvbnN0IFBhaW50SW5mbyYsIGNvbnN0
IEludFJlY3QmKSBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQogCiAgICAgdmlydHVhbCB2b2lk
IGFkanVzdFNlYXJjaEZpZWxkUmVzdWx0c0RlY29yYXRpb25QYXJ0U3R5bGUoU3R5bGVSZXNvbHZl
ciYsIFJlbmRlclN0eWxlJiwgRWxlbWVudCopIGNvbnN0IG92ZXJyaWRlOwotICAgIHZpcnR1YWwg
Ym9vbCBwYWludFNlYXJjaEZpZWxkUmVzdWx0c0RlY29yYXRpb25QYXJ0KGNvbnN0IFJlbmRlck9i
amVjdCYsIGNvbnN0IFBhaW50SW5mbyYsIGNvbnN0IEludFJlY3QmKSBvdmVycmlkZTsKKyAgICB2
aXJ0dWFsIGJvb2wgcGFpbnRTZWFyY2hGaWVsZFJlc3VsdHNEZWNvcmF0aW9uUGFydChjb25zdCBS
ZW5kZXJCb3gmLCBjb25zdCBQYWludEluZm8mLCBjb25zdCBJbnRSZWN0Jikgb3ZlcnJpZGU7CiAK
ICAgICB2aXJ0dWFsIHZvaWQgYWRqdXN0U2VhcmNoRmllbGRSZXN1bHRzQnV0dG9uU3R5bGUoU3R5
bGVSZXNvbHZlciYsIFJlbmRlclN0eWxlJiwgRWxlbWVudCopIGNvbnN0IG92ZXJyaWRlOwotICAg
IHZpcnR1YWwgYm9vbCBwYWludFNlYXJjaEZpZWxkUmVzdWx0c0J1dHRvbihjb25zdCBSZW5kZXJP
YmplY3QmLCBjb25zdCBQYWludEluZm8mLCBjb25zdCBJbnRSZWN0Jikgb3ZlcnJpZGU7CisgICAg
dmlydHVhbCBib29sIHBhaW50U2VhcmNoRmllbGRSZXN1bHRzQnV0dG9uKGNvbnN0IFJlbmRlckJv
eCYsIGNvbnN0IFBhaW50SW5mbyYsIGNvbnN0IEludFJlY3QmKSBvdmVycmlkZTsKIAogICAgIHZp
cnR1YWwgdm9pZCB0aGVtZUNoYW5nZWQoKSBvdmVycmlkZTsKIApkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDBhMzQ5M2JmZTFk
YjVmZmY0M2EyOWU1YzhkMGE0MmYxOTAwZmVlZDMuLjYyMGI5ZWIxNjIyYjQyYThmZWYwODM3ZWUz
NzQxM2ZlMTkyZDQyNDkgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9M
YXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsNSArMSwyMCBAQAogMjAxNi0wMS0wOCAgWmFsYW4g
QnVqdGFzICA8emFsYW5AYXBwbGUuY29tPgogCisgICAgICAgIEFic29sdXRlIHBvc2l0aW9uaW5n
IC13ZWJraXQtc2VhcmNoLWNhbmNlbC1idXR0b24gY3Jhc2hlcyBTYWZhcmkuCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTI4NDcKKyAgICAgICAgPHJk
YXI6Ly9wcm9ibGVtLzI0MTEyMDg3PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIERvIG5vdCBjYWxsIG9mZnNldEZyb21Db250YWluZXIgd2hpbGUgcmVz
b2x2aW5nIHRoZSBwYWludGluZyBwb3NpdGlvbiBmb3IgdGhlIHNlYXJjaC9jYW5jZWwgYnV0dG9u
IHJlbmRlcmVyLgorICAgICAgICBJdCBza2lwcyB0aGUgc3RhdGljIHBvc2l0aW9uZWQgcGFyZW50
IGlucHV0IHJlbmRlcmVyLCB3aGVuIHRoZSBzZWFyY2gvY2FuY2VsIHJlbmRlcmVyIGlzIGFic29s
dXRlIHBvc2l0aW9uZWQuCisgICAgICAgIFRoaXMgcGF0Y2ggYWxzbyBmaXhlcyBhIHJlbmRlcmlu
ZyBnbGl0Y2ggd2hlbiB0aGUgbWFyZ2luLXJpZ2h0IGlzID4gMC4KKworICAgICAgICAqIGZhc3Qv
Zm9ybXMvYWJzb2x1dGUtcG9zaXRpb25lZC1jdXN0b20tc2VhcmNoLWNhbmNlbC1jcmFzaC1leHBl
Y3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZm9ybXMvYWJzb2x1dGUtcG9zaXRpb25l
ZC1jdXN0b20tc2VhcmNoLWNhbmNlbC1jcmFzaC5odG1sOiBBZGRlZC4KKworMjAxNi0wMS0wOCAg
WmFsYW4gQnVqdGFzICA8emFsYW5AYXBwbGUuY29tPgorCiAgICAgICAgIEhvdmVyaW5nIGxpbmsg
b24gaHR0cDovL2hlbHAuYXBwbGUuY29tL2FwcGxldHYvIy8gZG9lcyBub3Qgc2hvdyB0ZXh0IHVu
ZGVybGluZS4KICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE1MjkwNgogICAgICAgICA8cmRhcjovL3Byb2JsZW0vMjMzMzk2MTc+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2Fic29sdXRlLXBvc2l0aW9uZWQtY3VzdG9tLXNlYXJjaC1j
YW5jZWwtY3Jhc2gtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9hYnNvbHV0
ZS1wb3NpdGlvbmVkLWN1c3RvbS1zZWFyY2gtY2FuY2VsLWNyYXNoLWV4cGVjdGVkLnR4dApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi40YzVjYWE5YThmZDZiZTJjYzAwOTVlODZlYmZmZjdiMWQxN2YwNWZlCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9hYnNvbHV0ZS1wb3NpdGlvbmVkLWN1
c3RvbS1zZWFyY2gtY2FuY2VsLWNyYXNoLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxIEBACitQQVNT
IGlmIG5vIGNyYXNoLiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvYWJzb2x1
dGUtcG9zaXRpb25lZC1jdXN0b20tc2VhcmNoLWNhbmNlbC1jcmFzaC5odG1sIGIvTGF5b3V0VGVz
dHMvZmFzdC9mb3Jtcy9hYnNvbHV0ZS1wb3NpdGlvbmVkLWN1c3RvbS1zZWFyY2gtY2FuY2VsLWNy
YXNoLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uOWQzMWE3Y2YxZDE2YzBmMTNhZDFjNDY0MWQyNjQ5MTAyNTgy
OThmYwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvYWJzb2x1dGUt
cG9zaXRpb25lZC1jdXN0b20tc2VhcmNoLWNhbmNlbC1jcmFzaC5odG1sCkBAIC0wLDAgKzEsMjcg
QEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzx0aXRsZT5UaGlzIHRlc3RzIHRo
YXQgYWJzb2x1dGUgcG9zaXRpb25lZCBzZWFyY2gvY2FuY2VsIGJ1dHRvbiBwYWludGluZyBpcyBu
b3QgY3Jhc2hpbmc8L3RpdGxlPgorPHN0eWxlPgorI3Rlc3QgeworICAgIGJvcmRlcjogMXB4IHNv
bGlkIHJlZDsKKyAgICBwYWRkaW5nLXJpZ2h0OiAyMHB4OworICAgIHBhZGRpbmctbGVmdDogNTBw
eDsKKyAgICAtd2Via2l0LWFwcGVhcmFuY2U6IG5vbmU7Cit9CisKKyN0ZXN0Ojotd2Via2l0LXNl
YXJjaC1jYW5jZWwtYnV0dG9uIHsKKyAgICBwb3NpdGlvbjogYWJzb2x1dGU7Cit9Cis8L3N0eWxl
PgorPC9oZWFkPgorPGJvZHk+CitQQVNTIGlmIG5vIGNyYXNoLgorPGlucHV0IGlkPSJ0ZXN0IiB0
eXBlPSJzZWFyY2giPgorPHNjcmlwdD4KKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAg
ICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCJ0ZXN0IikudmFsdWUgPSAiZm9vYmFyIjsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgo=
</data>

          </attachment>
      

    </bug>

</bugzilla>