<?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>93305</bug_id>
          
          <creation_ts>2012-08-06 16:09:31 -0700</creation_ts>
          <short_desc>Add optional debug logging for tiled scrolling</short_desc>
          <delta_ts>2012-08-09 10:31:57 -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>Layout and Rendering</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Tim Horton">thorton</reporter>
          <assigned_to name="Tim Horton">thorton</assigned_to>
          <cc>adele</cc>
    
    <cc>andersca</cc>
    
    <cc>bdakin</cc>
    
    <cc>eric</cc>
    
    <cc>jamesr</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>tonikitoo</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>688518</commentid>
    <comment_count>0</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2012-08-06 16:09:31 -0700</bug_when>
    <thetext>It&apos;d be nice if we could log when painting can&apos;t keep up with tiled scrolling (i.e. the &quot;white flash&quot; (or black, as the case may be) that people see when they scroll too fast).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>688519</commentid>
    <comment_count>1</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2012-08-06 16:09:51 -0700</bug_when>
    <thetext>This can&apos;t use a log channel because it needs to work in release mode.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>690744</commentid>
    <comment_count>2</comment_count>
      <attachid>157297</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2012-08-08 14:30:33 -0700</bug_when>
    <thetext>Created attachment 157297
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>690746</commentid>
    <comment_count>3</comment_count>
      <attachid>157298</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2012-08-08 14:31:32 -0700</bug_when>
    <thetext>Created attachment 157298
style</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>690767</commentid>
    <comment_count>4</comment_count>
      <attachid>157298</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2012-08-08 14:48:29 -0700</bug_when>
    <thetext>Comment on attachment 157298
style

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

&gt; Source/WebCore/page/scrolling/mac/ScrollingTreeNodeMac.mm:299
&gt; +void ScrollingTreeNodeMac::logExposedUnfilledArea()

This needs a big scarey comment (or an assertion) about being called on the scrolling thread.

&gt; Source/WebCore/page/scrolling/mac/ScrollingTreeNodeMac.mm:301
&gt; +    Region paintedTileCoveredVisibleRegion;

Too many adjectives!

&gt; Source/WebCore/page/scrolling/mac/ScrollingTreeNodeMac.mm:310
&gt; +        NSArray* sublayers = [[layer sublayers] copy];

You&apos;re leaking the array.

&gt; Source/WebCore/page/scrolling/mac/ScrollingTreeNodeMac.mm:312
&gt; +        for (CALayer* sublayer in sublayers)
&gt; +            layerQueue.append(sublayer);

Not sure why you descend into sublayers here like this; can&apos;t you assume something about layer tree structure?

&gt; Source/WebCore/platform/graphics/TiledBacking.h:45
&gt; +    bool scrollingPerformanceLoggingEnabled() { return m_scrollingPerformanceLoggingEnabled; }

const please.

&gt; Source/WebCore/platform/graphics/ca/mac/TileCache.h:72
&gt; +    IntRect visibleRect() { return m_visibleRect; }
&gt; +    unsigned blankPixelCount();

const please.

&gt; Source/WebCore/platform/graphics/ca/mac/TileCache.mm:320
&gt; +        RetainPtr&lt;WebTileLayer&gt;&amp; tileLayer = it-&gt;second;

Probably simpler as WebTileLayer* tileLayer = it-&gt;second.get()

&gt; Source/WebCore/platform/graphics/ca/mac/TileCache.mm:332
&gt; +        IntRect visiblePart([tileLayer.get() frame]);
&gt; +        visiblePart.intersect(m_visibleRect);
&gt; +
&gt; +        if(!visiblePart.isEmpty() &amp;&amp; [tileLayer.get() repaintCount])
&gt; +            paintedTileCoveredVisibleRegion.unite(visiblePart);
&gt; +    }
&gt; +
&gt; +    Region uncoveredRegion(m_visibleRect);
&gt; +    uncoveredRegion.subtract(paintedTileCoveredVisibleRegion);
&gt; +
&gt; +    return uncoveredRegion.totalArea();

This seems similar to the logExposedUnfilledArea() code. Why do you need both?

missing space after if

&gt; Source/WebCore/platform/graphics/ca/mac/WebTileLayer.mm:68
&gt; +- (unsigned)repaintCount
&gt; +{
&gt; +    return _repaintCount;
&gt; +}

Do we waste cycles maintaining _repaintCount even when not showing counters?

&gt; Source/WebCore/platform/graphics/ca/mac/WebTileLayer.mm:75
&gt; +    if([self repaintCount] == 1 &amp;&amp; !visiblePart.isEmpty())

Space after if</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>690870</commentid>
    <comment_count>5</comment_count>
      <attachid>157321</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2012-08-08 16:10:47 -0700</bug_when>
    <thetext>Created attachment 157321
revised patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>690873</commentid>
    <comment_count>6</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2012-08-08 16:12:42 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; (From update of attachment 157298 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=157298&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/page/scrolling/mac/ScrollingTreeNodeMac.mm:299
&gt; &gt; +void ScrollingTreeNodeMac::logExposedUnfilledArea()
&gt; 
&gt; This needs a big scarey comment (or an assertion) about being called on the scrolling thread.

That whole file lives on the scrolling thread, as far as I can tell. It seems like this would be a bit out of place.

&gt; Not sure why you descend into sublayers here like this; can&apos;t you assume something about layer tree structure?

The new patch assumes more, and won&apos;t crawl the whole tree, but I&apos;m still not sure how to get straight to the tiles.

&gt; This seems similar to the logExposedUnfilledArea() code. Why do you need both?

Fixed.

&gt; Do we waste cycles maintaining _repaintCount even when not showing counters?

We do! We should file a bug, since that behavior already existed, and we should only maintain _repaintCount when scrolling performance logging or layer repaint counters are enabled.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>691065</commentid>
    <comment_count>7</comment_count>
      <attachid>157321</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-08-08 18:39:49 -0700</bug_when>
    <thetext>Comment on attachment 157321
revised patch

Attachment 157321 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/13462323</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>691073</commentid>
    <comment_count>8</comment_count>
      <attachid>157362</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2012-08-08 18:43:10 -0700</bug_when>
    <thetext>Created attachment 157362
humorously, fix mac build</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>691092</commentid>
    <comment_count>9</comment_count>
      <attachid>157368</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2012-08-08 18:59:14 -0700</bug_when>
    <thetext>Created attachment 157368
negate the offset like it used to be</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>691121</commentid>
    <comment_count>10</comment_count>
      <attachid>157373</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2012-08-08 19:50:42 -0700</bug_when>
    <thetext>Created attachment 157373
typo&apos;d &apos;layer&apos; for &apos;sublayer&apos;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>691122</commentid>
    <comment_count>11</comment_count>
      <attachid>157368</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2012-08-08 19:51:59 -0700</bug_when>
    <thetext>Comment on attachment 157368
negate the offset like it used to be

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

&gt; Source/WebCore/page/scrolling/mac/ScrollingTreeNodeMac.mm:319
&gt; +            break;

When you break here you still leak sublayers.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>691124</commentid>
    <comment_count>12</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2012-08-08 19:52:48 -0700</bug_when>
    <thetext>(In reply to comment #11)
&gt; (From update of attachment 157368 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=157368&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/page/scrolling/mac/ScrollingTreeNodeMac.mm:319
&gt; &gt; +            break;
&gt; 
&gt; When you break here you still leak sublayers.

I caught that in my later patch (though failed to note that in my comment, hoping nobody would notice that patch :D).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>691127</commentid>
    <comment_count>13</comment_count>
      <attachid>157373</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2012-08-08 19:58:07 -0700</bug_when>
    <thetext>Comment on attachment 157373
typo&apos;d &apos;layer&apos; for &apos;sublayer&apos;

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

&gt; Source/WebCore/platform/graphics/ca/mac/TileCache.h:71
&gt; +    IntRect visibleRect() { return m_visibleRect; }

const

&gt; Source/WebCore/platform/graphics/ca/mac/TileCache.mm:317
&gt; +    Vector&lt;RetainPtr&lt;WebTileLayer&gt; &gt; tiles(m_tiles.size());

Vector&lt;RetainPtr&lt;WebTileLayer&gt; &gt; could use a typedef.

&gt; Source/WebCore/platform/graphics/ca/mac/TileCache.mm:323
&gt; +unsigned TileCache::blankPixelCountForTiles(Vector&lt;RetainPtr&lt;WebTileLayer&gt; &gt; tiles, IntRect visibleRect, IntPoint tileTranslation)

Please pass the vector by const reference.

&gt; Source/WebCore/platform/graphics/ca/mac/TileCache.mm:327
&gt; +    for (Vector&lt;RetainPtr&lt;WebTileLayer&gt; &gt;::const_iterator it = tiles.begin(), end = tiles.end(); it != end; ++it) {

Does declaring end here work on all versions of gcc/clang we care about? We don&apos;t normally do it this way.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>691133</commentid>
    <comment_count>14</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2012-08-08 20:10:50 -0700</bug_when>
    <thetext>(In reply to comment #13)
&gt; &gt; Source/WebCore/platform/graphics/ca/mac/TileCache.mm:327
&gt; &gt; +    for (Vector&lt;RetainPtr&lt;WebTileLayer&gt; &gt;::const_iterator it = tiles.begin(), end = tiles.end(); it != end; ++it) {
&gt; 
&gt; Does declaring end here work on all versions of gcc/clang we care about? We don&apos;t normally do it this way.

Anders uses that in a few places in TileCache.mm; I&apos;m pretty sure it works everywhere. I don&apos;t think it&apos;s an unusual feature. Perhaps we should use it more often :)

Thanks, Simon!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>691136</commentid>
    <comment_count>15</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2012-08-08 20:14:24 -0700</bug_when>
    <thetext>I&apos;m going to let the Mac EWS finish before landing since it already found one build failure I don&apos;t see with my clang.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>691166</commentid>
    <comment_count>16</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2012-08-08 21:07:44 -0700</bug_when>
    <thetext>(In reply to comment #14)
&gt; (In reply to comment #13)
&gt; &gt; &gt; Source/WebCore/platform/graphics/ca/mac/TileCache.mm:327
&gt; &gt; &gt; +    for (Vector&lt;RetainPtr&lt;WebTileLayer&gt; &gt;::const_iterator it = tiles.begin(), end = tiles.end(); it != end; ++it) {
&gt; &gt; 
&gt; &gt; Does declaring end here work on all versions of gcc/clang we care about? We don&apos;t normally do it this way.
&gt; 
&gt; Anders uses that in a few places in TileCache.mm; I&apos;m pretty sure it works everywhere. I don&apos;t think it&apos;s an unusual feature. Perhaps we should use it more often :)
&gt; 
&gt; Thanks, Simon!

smfr: r still=you with s/currentTime/monotonicallyIncreasingTime/? :) (still waiting for ews and finding bugs where there are none)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>691287</commentid>
    <comment_count>17</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2012-08-09 00:27:07 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/125156</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>691558</commentid>
    <comment_count>18</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2012-08-09 10:31:57 -0700</bug_when>
    <thetext>Sure!</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>157297</attachid>
            <date>2012-08-08 14:30:33 -0700</date>
            <delta_ts>2012-08-08 14:31:32 -0700</delta_ts>
            <desc>patch</desc>
            <filename>spl.diff</filename>
            <type>text/plain</type>
            <size>27386</size>
            <attacher name="Tim Horton">thorton</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA0NTY4NjcyLi4wZjM5ZTk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNjYg
QEAKKzIwMTItMDgtMDggIFRpbSBIb3J0b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+CisK
KyAgICAgICAgQWRkIG9wdGlvbmFsIGRlYnVnIGxvZ2dpbmcgZm9yIHRpbGVkIHNjcm9sbGluZwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTMzMDUKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgc2Nyb2xs
aW5nIHBlcmZvcm1hbmNlIGxvZ2dpbmcgdG8gU2Nyb2xsaW5nVHJlZU5vZGVNYWMgYW5kIFdlYlRp
bGVMYXllciwgd2hpY2ggd2lsbCBsb2cKKyAgICAgICAgdGhlIGFtb3VudCBvZiB1bnBhaW50ZWQg
YXJlYSBleHBvc2VkIGR1cmluZyBzY3JvbGxpbmcgYW5kIHBhaW50aW5nLCByZXNwZWN0aXZlbHku
CisKKyAgICAgICAgTm8gbmV3IHRlc3RzLCBhcyB0aGlzIGlzIGp1c3QgZGVidWdnaW5nIGxvZ2dp
bmcuCisKKyAgICAgICAgKiBXZWJDb3JlLmV4cC5pbjoKKyAgICAgICAgKiBwYWdlL0ZyYW1lVmll
dy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVZpZXc6OnNldFNjcm9sbGluZ1BlcmZvcm1h
bmNlTG9nZ2luZ0VuYWJsZWQpOgorICAgICAgICBBZGRlZCBzZXRTY3JvbGxpbmdQZXJmb3JtYW5j
ZUxvZ2dpbmdFbmFibGVkLCBwYXNzZXMgZmxhZyBpbnRvIFRpbGVkQmFja2luZy4KKworICAgICAg
ICAqIHBhZ2UvRnJhbWVWaWV3Lmg6CisgICAgICAgICogcGFnZS9TZXR0aW5ncy5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpTZXR0aW5nczo6U2V0dGluZ3MpOgorICAgICAgICAoV2ViQ29yZTo6U2V0
dGluZ3M6OnNldFNjcm9sbGluZ1BlcmZvcm1hbmNlTG9nZ2luZ0VuYWJsZWQpOgorICAgICAgICBB
ZGRlZCBzZXRTY3JvbGxpbmdQZXJmb3JtYW5jZUxvZ2dpbmdFbmFibGVkLCBwYXNzZXMgZmxhZyBp
bnRvIEZyYW1lVmlldy4KKworICAgICAgICAqIHBhZ2UvU2V0dGluZ3MuaDoKKyAgICAgICAgKFdl
YkNvcmU6OlNldHRpbmdzOjpzY3JvbGxpbmdQZXJmb3JtYW5jZUxvZ2dpbmdFbmFibGVkKToKKyAg
ICAgICAgKiBwYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlNjcm9sbGluZ1RyZWU6OlNjcm9sbGluZ1RyZWUpOgorICAgICAgICAoV2ViQ29yZTo6U2Ny
b2xsaW5nVHJlZTo6c2V0U2Nyb2xsaW5nUGVyZm9ybWFuY2VMb2dnaW5nRW5hYmxlZCk6CisgICAg
ICAgIChXZWJDb3JlOjpTY3JvbGxpbmdUcmVlOjpzY3JvbGxpbmdQZWZvcm1hbmNlTG9nZ2luZ0Vu
YWJsZWQpOgorICAgICAgICBBZGRlZCBTY3JvbGxpbmdQZXJmb3JtYW5jZUxvZ2dpbmdFbmFibGVk
IHNldHRlci9nZXR0ZXI7IHRoaXMgaXMgd2hlcmUgaXQncyBhY2Nlc3NlZCBmcm9tIFNjcm9sbGlu
Z1RyZWVOb2RlTWFjLgorCisgICAgICAgICogcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZS5o
OgorICAgICAgICAqIHBhZ2Uvc2Nyb2xsaW5nL21hYy9TY3JvbGxpbmdUcmVlTm9kZU1hYy5oOgor
ICAgICAgICAoU2Nyb2xsaW5nVHJlZU5vZGVNYWMpOgorICAgICAgICAqIHBhZ2Uvc2Nyb2xsaW5n
L21hYy9TY3JvbGxpbmdUcmVlTm9kZU1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGlu
Z1RyZWVOb2RlTWFjOjpzZXRTY3JvbGxQb3NpdGlvbik6CisgICAgICAgIFdoZW4gdXBkYXRpbmcg
c2Nyb2xsIHBvc2l0aW9uLCBjb25kaXRpb25hbGx5IGxvZyB0aGUgYW1vdW50IG9mIHVucGFpbnRl
ZCBhcmVhIHRoYXQgd2FzIGp1c3QgZXhwb3NlZC4KKworICAgICAgICAoV2ViQ29yZTo6U2Nyb2xs
aW5nVHJlZU5vZGVNYWM6OmxvZ0V4cG9zZWRUaWxlbGVzc0FyZWEpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL1RpbGVkQmFja2luZy5oOgorICAgICAgICAoV2ViQ29yZTo6VGlsZWRCYWNr
aW5nOjpUaWxlZEJhY2tpbmcpOgorICAgICAgICAoV2ViQ29yZTo6VGlsZWRCYWNraW5nOjpzZXRT
Y3JvbGxpbmdQZXJmb3JtYW5jZUxvZ2dpbmdFbmFibGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlRp
bGVkQmFja2luZzo6c2Nyb2xsaW5nUGVyZm9ybWFuY2VMb2dnaW5nRW5hYmxlZCk6CisgICAgICAg
IEFkZGVkIFNjcm9sbGluZ1BlcmZvcm1hbmNlTG9nZ2luZ0VuYWJsZWQgc2V0dGVyL2dldHRlcjsg
dGhpcyBpcyB3aGVyZSBpdCdzIGFjY2Vzc2VkIGZyb20gV2ViVGlsZUxheWVyLgorCisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvY2EvbWFjL1RpbGVDYWNoZS5oOgorICAgICAgICAoV2ViQ29y
ZTo6VGlsZUNhY2hlOjp2aXNpYmxlUmVjdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2EvbWFjL1RpbGVDYWNoZS5tbToKKyAgICAgICAgKFdlYkNvcmU6OlRpbGVDYWNoZTo6YmxhbmtQ
aXhlbENvdW50KToKKyAgICAgICAgQ29tcHV0ZSB0aGUgZXhwb3NlZCwgdW5wYWludGVkIGFyZWEg
b2YgdGhlIHRpbGUgY2FjaGUgYnkgaXRlcmF0aW5nIG92ZXIgdGhlIGxheWVycywKKyAgICAgICAg
Y2hlY2tpbmcgaWYgdGhleSd2ZSBiZWVuIHBhaW50ZWQsIGFuZCBzdWJ0cmFjdGluZyBwYWludGVk
IGxheWVycyBmcm9tIHRoZSB0b3RhbCB2aXNpYmxlIGFyZWEuCisKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9jYS9tYWMvV2ViVGlsZUxheWVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvY2EvbWFjL1dlYlRpbGVMYXllci5tbToKKyAgICAgICAgKC1bV2ViVGlsZUxheWVyIGRy
YXdJbkNvbnRleHQ6XSk6CisgICAgICAgICgtW1dlYlRpbGVMYXllciByZXBhaW50Q291bnRdKToK
KyAgICAgICAgKC1bV2ViVGlsZUxheWVyIGxvZ0ZpbGxlZEZyZXNoVGlsZV0pOgorICAgICAgICBX
aGVuIHBhaW50aW5nIGEgV2ViVGlsZUxheWVyLCBjb25kaXRpb25hbGx5IGxvZyB0aGUgYW1vdW50
IG9mIHVucGFpbnRlZCBhcmVhIHJlbWFpbmluZyBhZnRlciBwYWludGluZyBzYWlkIHRpbGUuCisK
KyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlckxheWVyQmFja2luZzo6UmVuZGVyTGF5ZXJCYWNraW5nKToKKyAgICAgICAg
UGx1bWIgU2Nyb2xsaW5nUGVyZm9ybWFuY2VMb2dnaW5nRW5hYmxlZCB0aHJvdWdoIHRvIFRpbGVk
QmFja2luZy4KKwogMjAxMi0wOC0wNiAgQWRhbSBCYXJ0aCAgPGFiYXJ0aEB3ZWJraXQub3JnPgog
CiAgICAgICAgIEpTQyBzaG91bGQgdXNlIEJpbmRpbmdTdGF0ZSB0byBkZXRlcm1pbmUgdGhlIGFj
dGl2ZURPTVdpbmRvdwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4g
Yi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgppbmRleCA0N2QwNDk3Li45MTEzZDk5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLmV4cC5pbgpAQCAtOTE0LDYgKzkxNCw3IEBAIF9fWk43V2ViQ29yZThTZXR0
aW5nczM1c2V0RXhwZXJpbWVudGFsTm90aWZpY2F0aW9uc0VuYWJsZWRFYgogX19aTjdXZWJDb3Jl
OFNldHRpbmdzMzVzZXRUcmVhdHNBbnlUZXh0Q1NTTGlua0FzU3R5bGVzaGVldEViCiBfX1pON1dl
YkNvcmU4U2V0dGluZ3MzNnNldE9mZmxpbmVXZWJBcHBsaWNhdGlvbkNhY2hlRW5hYmxlZEViCiBf
X1pON1dlYkNvcmU4U2V0dGluZ3MzN3NldEZpeGVkRWxlbWVudHNMYXlvdXRSZWxhdGl2ZVRvRnJh
bWVFYgorX19aTjdXZWJDb3JlOFNldHRpbmdzMzdzZXRTY3JvbGxpbmdQZXJmb3JtYW5jZUxvZ2dp
bmdFbmFibGVkRWIKIF9fWk43V2ViQ29yZThTZXR0aW5nczQwc2V0SmF2YVNjcmlwdENhbk9wZW5X
aW5kb3dzQXV0b21hdGljYWxseUViCiBfX1pON1dlYkNvcmU4U2V0dGluZ3M0MHNldFRleHREaXJl
Y3Rpb25TdWJtZW51SW5jbHVzaW9uQmVoYXZpb3JFTlNfMzdUZXh0RGlyZWN0aW9uU3VibWVudUlu
Y2x1c2lvbkJlaGF2aW9yRQogX19aTjdXZWJDb3JlOFNldHRpbmdzNDFzZXROZWVkc0tleWJvYXJk
RXZlbnREaXNhbWJpZ3VhdGlvblF1aXJrc0ViCkBAIC05NTgsNiArOTU5LDcgQEAgX19aTjdXZWJD
b3JlOUZyYW1lVmlldzI0Zm9yY2VMYXlvdXRGb3JQYWdpbmF0aW9uRVJLTlNfOUZsb2F0U2l6ZUVT
M19mTlNfMTlBZGp1c3QKIF9fWk43V2ViQ29yZTlGcmFtZVZpZXcyNmFkanVzdFBhZ2VIZWlnaHRE
ZXByZWNhdGVkRVBmZmZmCiBfX1pON1dlYkNvcmU5RnJhbWVWaWV3MjlzZXRTaG91bGRVcGRhdGVX
aGlsZU9mZnNjcmVlbkViCiBfX1pON1dlYkNvcmU5RnJhbWVWaWV3Mzd1cGRhdGVMYXlvdXRBbmRT
dHlsZUlmTmVlZGVkUmVjdXJzaXZlRXYKK19fWk43V2ViQ29yZTlGcmFtZVZpZXczN3NldFNjcm9s
bGluZ1BlcmZvcm1hbmNlTG9nZ2luZ0VuYWJsZWRFYgogX19aTjdXZWJDb3JlOUZyYW1lVmlldzM4
c2Nyb2xsUG9zaXRpb25DaGFuZ2VkVmlhUGxhdGZvcm1XaWRnZXRFdgogX19aTjdXZWJDb3JlOUZy
YW1lVmlldzM4c3luY0NvbXBvc2l0aW5nU3RhdGVJbmNsdWRpbmdTdWJmcmFtZXNFdgogX19aTjdX
ZWJDb3JlOUZyYW1lVmlldzZjcmVhdGVFUE5TXzVGcmFtZUUKQEAgLTI1MDEsNiArMjUwMyw3IEBA
IF9fWk43V2ViQ29yZThEb2N1bWVudDE5YWNjZXNzU1ZHRXh0ZW5zaW9uc0V2CiAKICNpZiBFTkFC
TEUoVEhSRUFERURfU0NST0xMSU5HKQogX19aTjdXZWJDb3JlMTNTY3JvbGxpbmdUcmVlMTdzZXRE
ZWJ1Z1Jvb3RMYXllckVQN0NBTGF5ZXIKK19fWk43V2ViQ29yZTEzU2Nyb2xsaW5nVHJlZTM3c2V0
U2Nyb2xsaW5nUGVyZm9ybWFuY2VMb2dnaW5nRW5hYmxlZEViCiBfX1pON1dlYkNvcmUxM1Njcm9s
bGluZ1RyZWUyMXRyeVRvSGFuZGxlV2hlZWxFdmVudEVSS05TXzE4UGxhdGZvcm1XaGVlbEV2ZW50
RQogX19aTjdXZWJDb3JlMTNTY3JvbGxpbmdUcmVlMjJ1cGRhdGVCYWNrRm9yd2FyZFN0YXRlRWJi
CiBfX1pON1dlYkNvcmUxM1Njcm9sbGluZ1RyZWVEMUV2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0ZyYW1lVmlldy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5j
cHAKaW5kZXggZjlkOTA3My4uMjA3ODdlZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9GcmFtZVZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcApA
QCAtMzU3NSw0ICszNTc1LDEyIEBAIEFYT2JqZWN0Q2FjaGUqIEZyYW1lVmlldzo6YXhPYmplY3RD
YWNoZSgpIGNvbnN0CiAgICAgcmV0dXJuIDA7CiB9CiAgICAgCit2b2lkIEZyYW1lVmlldzo6c2V0
U2Nyb2xsaW5nUGVyZm9ybWFuY2VMb2dnaW5nRW5hYmxlZChib29sIGZsYWcpCit7CisjaWYgVVNF
KEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQorICAgIGlmIChUaWxlZEJhY2tpbmcqIHRpbGVkQmFj
a2luZyA9IHRoaXMtPnRpbGVkQmFja2luZygpKQorICAgICAgICB0aWxlZEJhY2tpbmctPnNldFNj
cm9sbGluZ1BlcmZvcm1hbmNlTG9nZ2luZ0VuYWJsZWQoZmxhZyk7CisjZW5kaWYKK30KKwogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFt
ZVZpZXcuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmgKaW5kZXggNWQ2MDk0Yy4u
ZjNiYzAxYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5oCkBAIC0zMzksNiArMzM5LDggQEAgcHVi
bGljOgogICAgIC8vIHdlIG5lZWQgdGhpcyBmdW5jdGlvbiBpbiBvcmRlciB0byBkbyB0aGUgc2Ny
b2xsIG91cnNlbHZlcy4KICAgICBib29sIHdoZWVsRXZlbnQoY29uc3QgUGxhdGZvcm1XaGVlbEV2
ZW50Jik7CiAKKyAgICB2b2lkIHNldFNjcm9sbGluZ1BlcmZvcm1hbmNlTG9nZ2luZ0VuYWJsZWQo
Ym9vbCk7CisKIHByb3RlY3RlZDoKICAgICB2aXJ0dWFsIGJvb2wgc2Nyb2xsQ29udGVudHNGYXN0
UGF0aChjb25zdCBJbnRTaXplJiBzY3JvbGxEZWx0YSwgY29uc3QgSW50UmVjdCYgcmVjdFRvU2Ny
b2xsLCBjb25zdCBJbnRSZWN0JiBjbGlwUmVjdCk7CiAgICAgdmlydHVhbCB2b2lkIHNjcm9sbENv
bnRlbnRzU2xvd1BhdGgoY29uc3QgSW50UmVjdCYgdXBkYXRlUmVjdCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0
dGluZ3MuY3BwCmluZGV4IDk5ODgyZGYuLmU5N2M2NGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvU2V0dGluZ3MuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3Mu
Y3BwCkBAIC0yODUsNiArMjg1LDcgQEAgU2V0dGluZ3M6OlNldHRpbmdzKFBhZ2UqIHBhZ2UpCiAg
ICAgLCBtX3dpbmRvd0ZvY3VzUmVzdHJpY3RlZCh0cnVlKQogICAgICwgbV9kaWFnbm9zdGljTG9n
Z2luZ0VuYWJsZWQoZmFsc2UpCiAgICAgLCBtX3RoaXJkUGFydHlTdG9yYWdlQmxvY2tpbmdFbmFi
bGVkKGZhbHNlKQorICAgICwgbV9zY3JvbGxpbmdQZXJmb3JtYW5jZUxvZ2dpbmdFbmFibGVkKGZh
bHNlKQogICAgICwgbV9sb2Fkc0ltYWdlc0F1dG9tYXRpY2FsbHlUaW1lcih0aGlzLCAmU2V0dGlu
Z3M6OmxvYWRzSW1hZ2VzQXV0b21hdGljYWxseVRpbWVyRmlyZWQpCiAgICAgLCBtX2luY3JlbWVu
dGFsUmVuZGVyaW5nU3VwcHJlc3Npb25UaW1lb3V0SW5TZWNvbmRzKGRlZmF1bHRJbmNyZW1lbnRh
bFJlbmRlcmluZ1N1cHByZXNzaW9uVGltZW91dEluU2Vjb25kcykKIHsKQEAgLTkzOSw2ICs5NDAs
MTQgQEAgdm9pZCBTZXR0aW5nczo6c2V0VGlsZWRCYWNraW5nU3RvcmVFbmFibGVkKGJvb2wgZW5h
YmxlZCkKICNlbmRpZgogfQogCit2b2lkIFNldHRpbmdzOjpzZXRTY3JvbGxpbmdQZXJmb3JtYW5j
ZUxvZ2dpbmdFbmFibGVkKGJvb2wgZW5hYmxlZCkKK3sKKyAgICBtX3Njcm9sbGluZ1BlcmZvcm1h
bmNlTG9nZ2luZ0VuYWJsZWQgPSBlbmFibGVkOworCisgICAgaWYgKG1fcGFnZS0+bWFpbkZyYW1l
KCkgJiYgbV9wYWdlLT5tYWluRnJhbWUoKS0+dmlldygpKQorICAgICAgICBtX3BhZ2UtPm1haW5G
cmFtZSgpLT52aWV3KCktPnNldFNjcm9sbGluZ1BlcmZvcm1hbmNlTG9nZ2luZ0VuYWJsZWQoZW5h
YmxlZCk7Cit9CisKIHZvaWQgU2V0dGluZ3M6OnNldE1vY2tTY3JvbGxiYXJzRW5hYmxlZChib29s
IGZsYWcpCiB7CiAgICAgZ01vY2tTY3JvbGxiYXJzRW5hYmxlZCA9IGZsYWc7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Nl
dHRpbmdzLmgKaW5kZXggZDdiMDY0ZS4uZmQ0ZDlhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGFnZS9TZXR0aW5ncy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MuaApA
QCAtNjA0LDYgKzYwNCw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdm9pZCBzZXRU
aGlyZFBhcnR5U3RvcmFnZUJsb2NraW5nRW5hYmxlZChib29sIGVuYWJsZWQpIHsgbV90aGlyZFBh
cnR5U3RvcmFnZUJsb2NraW5nRW5hYmxlZCA9IGVuYWJsZWQ7IH0KICAgICAgICAgYm9vbCB0aGly
ZFBhcnR5U3RvcmFnZUJsb2NraW5nRW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1fdGhpcmRQYXJ0
eVN0b3JhZ2VCbG9ja2luZ0VuYWJsZWQ7IH0KIAorICAgICAgICB2b2lkIHNldFNjcm9sbGluZ1Bl
cmZvcm1hbmNlTG9nZ2luZ0VuYWJsZWQoYm9vbCk7CisgICAgICAgIGJvb2wgc2Nyb2xsaW5nUGVy
Zm9ybWFuY2VMb2dnaW5nRW5hYmxlZCgpIHsgcmV0dXJuIG1fc2Nyb2xsaW5nUGVyZm9ybWFuY2VM
b2dnaW5nRW5hYmxlZDsgfQorCiAjaWYgVVNFKEpTQykKICAgICAgICAgc3RhdGljIHZvaWQgc2V0
U2hvdWxkUmVzcGVjdFByaW9yaXR5SW5DU1NBdHRyaWJ1dGVTZXR0ZXJzKGJvb2wpOwogICAgICAg
ICBzdGF0aWMgYm9vbCBzaG91bGRSZXNwZWN0UHJpb3JpdHlJbkNTU0F0dHJpYnV0ZVNldHRlcnMo
KTsKQEAgLTc5NCw2ICs3OTcsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICAgICAgYm9v
bCBtX3RoaXJkUGFydHlTdG9yYWdlQmxvY2tpbmdFbmFibGVkIDogMTsKIAorICAgICAgICBib29s
IG1fc2Nyb2xsaW5nUGVyZm9ybWFuY2VMb2dnaW5nRW5hYmxlZCA6IDE7CisKICAgICAgICAgVGlt
ZXI8U2V0dGluZ3M+IG1fbG9hZHNJbWFnZXNBdXRvbWF0aWNhbGx5VGltZXI7CiAgICAgICAgIHZv
aWQgbG9hZHNJbWFnZXNBdXRvbWF0aWNhbGx5VGltZXJGaXJlZChUaW1lcjxTZXR0aW5ncz4qKTsK
ICAgICAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3Jv
bGxpbmdUcmVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1Ry
ZWUuY3BwCmluZGV4IDM2ZTZhYWUuLmJhNmE1MmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWUuY3BwCkBAIC01MCw2ICs1MCw3IEBAIFNjcm9sbGlu
Z1RyZWU6OlNjcm9sbGluZ1RyZWUoU2Nyb2xsaW5nQ29vcmRpbmF0b3IqIHNjcm9sbGluZ0Nvb3Jk
aW5hdG9yKQogICAgICwgbV9jYW5Hb0ZvcndhcmQoZmFsc2UpCiAgICAgLCBtX21haW5GcmFtZVBp
bm5lZFRvVGhlTGVmdChmYWxzZSkKICAgICAsIG1fbWFpbkZyYW1lUGlubmVkVG9UaGVSaWdodChm
YWxzZSkKKyAgICAsIG1fc2Nyb2xsaW5nUGVyZm9ybWFuY2VMb2dnaW5nRW5hYmxlZChmYWxzZSkK
IHsKIH0KIApAQCAtMjE4LDYgKzIxOSwxNiBAQCBib29sIFNjcm9sbGluZ1RyZWU6OndpbGxXaGVl
bEV2ZW50U3RhcnRTd2lwZUdlc3R1cmUoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50JiB3aAogICAg
IHJldHVybiBmYWxzZTsKIH0KIAordm9pZCBTY3JvbGxpbmdUcmVlOjpzZXRTY3JvbGxpbmdQZXJm
b3JtYW5jZUxvZ2dpbmdFbmFibGVkKGJvb2wgZmxhZykKK3sKKyAgICBtX3Njcm9sbGluZ1BlcmZv
cm1hbmNlTG9nZ2luZ0VuYWJsZWQgPSBmbGFnOworfQorCitib29sIFNjcm9sbGluZ1RyZWU6OnNj
cm9sbGluZ1BlZm9ybWFuY2VMb2dnaW5nRW5hYmxlZCgpCit7CisgICAgcmV0dXJuIG1fc2Nyb2xs
aW5nUGVyZm9ybWFuY2VMb2dnaW5nRW5hYmxlZDsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQogCiAjZW5kaWYgLy8gRU5BQkxFKFRIUkVBREVEX1NDUk9MTElORykKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWUuaCBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWUuaAppbmRleCBlZjc3OTI2Li40MTIwZTll
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVl
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZS5oCkBA
IC05Nyw2ICs5Nyw5IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldERlYnVnUm9vdExheWVyKENBTGF5
ZXIgKik7CiAjZW5kaWYKIAorICAgIHZvaWQgc2V0U2Nyb2xsaW5nUGVyZm9ybWFuY2VMb2dnaW5n
RW5hYmxlZChib29sIGZsYWcpOworICAgIGJvb2wgc2Nyb2xsaW5nUGVmb3JtYW5jZUxvZ2dpbmdF
bmFibGVkKCk7CisKIHByaXZhdGU6CiAgICAgZXhwbGljaXQgU2Nyb2xsaW5nVHJlZShTY3JvbGxp
bmdDb29yZGluYXRvciopOwogCkBAIC0xMTYsNiArMTE5LDggQEAgcHJpdmF0ZToKICAgICBib29s
IG1fbWFpbkZyYW1lUGlubmVkVG9UaGVMZWZ0OwogICAgIGJvb2wgbV9tYWluRnJhbWVQaW5uZWRU
b1RoZVJpZ2h0OwogCisgICAgYm9vbCBtX3Njcm9sbGluZ1BlcmZvcm1hbmNlTG9nZ2luZ0VuYWJs
ZWQ7CisKICNpZiBQTEFURk9STShNQUMpCiAgICAgUmV0YWluUHRyPENBTGF5ZXI+IG1fZGVidWdJ
bmZvTGF5ZXI7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xs
aW5nL21hYy9TY3JvbGxpbmdUcmVlTm9kZU1hYy5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3Jv
bGxpbmcvbWFjL1Njcm9sbGluZ1RyZWVOb2RlTWFjLmgKaW5kZXggOGExNTc2ZS4uNDMwNGI2MSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGluZ1Ry
ZWVOb2RlTWFjLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9s
bGluZ1RyZWVOb2RlTWFjLmgKQEAgLTc0LDYgKzc0LDggQEAgcHJpdmF0ZToKIAogICAgIHZvaWQg
dXBkYXRlTWFpbkZyYW1lUGluU3RhdGUoY29uc3QgSW50UG9pbnQmIHNjcm9sbFBvc2l0aW9uKTsK
IAorICAgIHZvaWQgbG9nRXhwb3NlZFVuZmlsbGVkQXJlYSgpOworCiAgICAgU2Nyb2xsRWxhc3Rp
Y2l0eUNvbnRyb2xsZXIgbV9zY3JvbGxFbGFzdGljaXR5Q29udHJvbGxlcjsKICAgICBSZXRhaW5Q
dHI8Q0ZSdW5Mb29wVGltZXJSZWY+IG1fc25hcFJ1YmJlcmJhbmRUaW1lcjsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGluZ1RyZWVOb2RlTWFj
Lm1tIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGluZ1RyZWVOb2Rl
TWFjLm1tCmluZGV4IGEzN2JmNDAuLmMzZmJiNTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2Uvc2Nyb2xsaW5nL21hYy9TY3JvbGxpbmdUcmVlTm9kZU1hYy5tbQorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nVHJlZU5vZGVNYWMubW0KQEAgLTMx
LDYgKzMxLDExIEBACiAjaW5jbHVkZSAiUGxhdGZvcm1XaGVlbEV2ZW50LmgiCiAjaW5jbHVkZSAi
U2Nyb2xsaW5nVHJlZS5oIgogI2luY2x1ZGUgIlNjcm9sbGluZ1RyZWVTdGF0ZS5oIgorI2luY2x1
ZGUgIlNldHRpbmdzLmgiCisjaW5jbHVkZSAiV2ViVGlsZUxheWVyLmgiCisKKyNpbmNsdWRlIDx3
dGYvQ3VycmVudFRpbWUuaD4KKyNpbmNsdWRlIDx3dGYvRGVxdWUuaD4KIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCkBAIC0yMzMsNiArMjM4LDkgQEAgdm9pZCBTY3JvbGxpbmdUcmVlTm9kZU1hYzo6
c2V0U2Nyb2xsUG9zaXRpb24oY29uc3QgSW50UG9pbnQmIHNjcm9sbFBvc2l0aW9uKQogICAgIG5l
d1Njcm9sbFBvc2l0aW9uID0gbmV3U2Nyb2xsUG9zaXRpb24uZXhwYW5kZWRUbyhtaW5pbXVtU2Ny
b2xsUG9zaXRpb24oKSk7CiAKICAgICBzZXRTY3JvbGxQb3NpdGlvbldpdGhvdXRDb250ZW50RWRn
ZUNvbnN0cmFpbnRzKG5ld1Njcm9sbFBvc2l0aW9uKTsKKworICAgIGlmIChzY3JvbGxpbmdUcmVl
KCktPnNjcm9sbGluZ1BlZm9ybWFuY2VMb2dnaW5nRW5hYmxlZCgpKQorICAgICAgICBsb2dFeHBv
c2VkVW5maWxsZWRBcmVhKCk7CiB9CiAKIHZvaWQgU2Nyb2xsaW5nVHJlZU5vZGVNYWM6OnNldFNj
cm9sbFBvc2l0aW9uV2l0aG91dENvbnRlbnRFZGdlQ29uc3RyYWludHMoY29uc3QgSW50UG9pbnQm
IHNjcm9sbFBvc2l0aW9uKQpAQCAtMjg4LDYgKzI5Niw0MCBAQCB2b2lkIFNjcm9sbGluZ1RyZWVO
b2RlTWFjOjp1cGRhdGVNYWluRnJhbWVQaW5TdGF0ZShjb25zdCBJbnRQb2ludCYgc2Nyb2xsUG9z
aXRpbwogICAgIHNjcm9sbGluZ1RyZWUoKS0+c2V0TWFpbkZyYW1lUGluU3RhdGUocGlubmVkVG9U
aGVMZWZ0LCBwaW5uZWRUb1RoZVJpZ2h0KTsKIH0KIAordm9pZCBTY3JvbGxpbmdUcmVlTm9kZU1h
Yzo6bG9nRXhwb3NlZFVuZmlsbGVkQXJlYSgpCit7CisgICAgUmVnaW9uIHBhaW50ZWRUaWxlQ292
ZXJlZFZpc2libGVSZWdpb247CisgICAgSW50UG9pbnQgcG9zaXRpb24gPSBzY3JvbGxQb3NpdGlv
bigpOworCisgICAgRGVxdWU8Q0FMYXllcio+IGxheWVyUXVldWU7CisgICAgbGF5ZXJRdWV1ZS5h
cHBlbmQobV9zY3JvbGxMYXllci5nZXQoKSk7CisKKyAgICB3aGlsZSghbGF5ZXJRdWV1ZS5pc0Vt
cHR5KCkpIHsKKyAgICAgICAgQ0FMYXllciogbGF5ZXIgPSBsYXllclF1ZXVlLnRha2VGaXJzdCgp
OworCisgICAgICAgIE5TQXJyYXkqIHN1YmxheWVycyA9IFtbbGF5ZXIgc3VibGF5ZXJzXSBjb3B5
XTsKKyAgICAgICAgZm9yIChDQUxheWVyKiBzdWJsYXllciBpbiBzdWJsYXllcnMpCisgICAgICAg
ICAgICBsYXllclF1ZXVlLmFwcGVuZChzdWJsYXllcik7CisKKyAgICAgICAgaWYgKCFbbGF5ZXIg
aXNLaW5kT2ZDbGFzczpbV2ViVGlsZUxheWVyIGNsYXNzXV0pCisgICAgICAgICAgICBjb250aW51
ZTsKKworICAgICAgICBXZWJUaWxlTGF5ZXIqIHdlYlRpbGVMYXllciA9IHN0YXRpY19jYXN0PFdl
YlRpbGVMYXllcio+KGxheWVyKTsKKworICAgICAgICBJbnRSZWN0IHZpc2libGVQYXJ0KENHUmVj
dE9mZnNldCh3ZWJUaWxlTGF5ZXIuZnJhbWUsIC1wb3NpdGlvbi54KCksIC1wb3NpdGlvbi55KCkp
KTsKKyAgICAgICAgdmlzaWJsZVBhcnQuaW50ZXJzZWN0KHZpZXdwb3J0UmVjdCgpKTsKKworICAg
ICAgICBpZiAoIXZpc2libGVQYXJ0LmlzRW1wdHkoKSAmJiBbd2ViVGlsZUxheWVyIHJlcGFpbnRD
b3VudF0pCisgICAgICAgICAgICBwYWludGVkVGlsZUNvdmVyZWRWaXNpYmxlUmVnaW9uLnVuaXRl
KHZpc2libGVQYXJ0KTsKKyAgICB9CisKKyAgICBSZWdpb24gdW5jb3ZlcmVkUmVnaW9uKHZpZXdw
b3J0UmVjdCgpKTsKKyAgICB1bmNvdmVyZWRSZWdpb24uc3VidHJhY3QocGFpbnRlZFRpbGVDb3Zl
cmVkVmlzaWJsZVJlZ2lvbik7CisKKyAgICBpZiAoIXVuY292ZXJlZFJlZ2lvbi5pc0VtcHR5KCkp
CisgICAgICAgIHByaW50ZigiU0NST0xMSU5HOiBFeHBvc2VkIHRpbGVsZXNzIGFyZWEuIFRpbWU6
ICVmIFVuZmlsbGVkIFBpeGVsczogJXVcbiIsIFdURjo6Y3VycmVudFRpbWUoKSwgdW5jb3ZlcmVk
UmVnaW9uLnRvdGFsQXJlYSgpKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5k
aWYgLy8gRU5BQkxFKFRIUkVBREVEX1NDUk9MTElORykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL1RpbGVkQmFja2luZy5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvVGlsZWRCYWNraW5nLmgKaW5kZXggYWNkY2Y1ZS4uMjQ3MjJmZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvVGlsZWRCYWNraW5nLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvVGlsZWRCYWNraW5nLmgKQEAg
LTMyLDExICszMiwyMCBAQCBjbGFzcyBJbnRSZWN0OwogCiBjbGFzcyBUaWxlZEJhY2tpbmcgewog
cHVibGljOgorICAgIFRpbGVkQmFja2luZygpCisgICAgICAgIDogbV9zY3JvbGxpbmdQZXJmb3Jt
YW5jZUxvZ2dpbmdFbmFibGVkKDApCisgICAgeyB9CiAgICAgdmlydHVhbCB+VGlsZWRCYWNraW5n
KCkgeyB9CiAKICAgICB2aXJ0dWFsIHZvaWQgdmlzaWJsZVJlY3RDaGFuZ2VkKGNvbnN0IEludFJl
Y3QmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHNldElzSW5XaW5kb3coYm9vbCkgPSAwOwogICAg
IHZpcnR1YWwgdm9pZCBzZXRDYW5IYXZlU2Nyb2xsYmFycyhib29sKSA9IDA7CisKKyAgICB2b2lk
IHNldFNjcm9sbGluZ1BlcmZvcm1hbmNlTG9nZ2luZ0VuYWJsZWQoYm9vbCBmbGFnKSAgeyBtX3Nj
cm9sbGluZ1BlcmZvcm1hbmNlTG9nZ2luZ0VuYWJsZWQgPSBmbGFnOyB9CisgICAgYm9vbCBzY3Jv
bGxpbmdQZXJmb3JtYW5jZUxvZ2dpbmdFbmFibGVkKCkgeyByZXR1cm4gbV9zY3JvbGxpbmdQZXJm
b3JtYW5jZUxvZ2dpbmdFbmFibGVkOyB9CisKK3ByaXZhdGU6CisgICAgYm9vbCBtX3Njcm9sbGlu
Z1BlcmZvcm1hbmNlTG9nZ2luZ0VuYWJsZWQ7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9tYWMvVGls
ZUNhY2hlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9tYWMvVGlsZUNh
Y2hlLmgKaW5kZXggNjFmMzA1MC4uZTA3ZmE0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2EvbWFjL1RpbGVDYWNoZS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NhL21hYy9UaWxlQ2FjaGUuaApAQCAtNjgsNiArNjgsOSBAQCBw
dWJsaWM6CiAgICAgdm9pZCBzZXRUaWxlRGVidWdCb3JkZXJXaWR0aChmbG9hdCk7CiAgICAgdm9p
ZCBzZXRUaWxlRGVidWdCb3JkZXJDb2xvcihDR0NvbG9yUmVmKTsKIAorICAgIEludFJlY3Qgdmlz
aWJsZVJlY3QoKSB7IHJldHVybiBtX3Zpc2libGVSZWN0OyB9CisgICAgdW5zaWduZWQgYmxhbmtQ
aXhlbENvdW50KCk7CisKIHByaXZhdGU6CiAgICAgVGlsZUNhY2hlKFdlYlRpbGVDYWNoZUxheWVy
KiwgY29uc3QgSW50U2l6ZSYgdGlsZVNpemUpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9tYWMvVGlsZUNhY2hlLm1tIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2EvbWFjL1RpbGVDYWNoZS5tbQppbmRleCBjYWVmMDc0Li5kNWMw
MGVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9tYWMv
VGlsZUNhY2hlLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL21h
Yy9UaWxlQ2FjaGUubW0KQEAgLTI4LDYgKzI4LDcgQEAKIAogI2ltcG9ydCAiSW50UmVjdC5oIgog
I2ltcG9ydCAiUGxhdGZvcm1DQUxheWVyLmgiCisjaW1wb3J0ICJSZWdpb24uaCIKICNpbXBvcnQg
IldlYkxheWVyLmgiCiAjaW1wb3J0ICJXZWJUaWxlQ2FjaGVMYXllci5oIgogI2ltcG9ydCAiV2Vi
VGlsZUxheWVyLmgiCkBAIC0zMTEsNiArMzEyLDI2IEBAIHZvaWQgVGlsZUNhY2hlOjp0aWxlUmV2
YWxpZGF0aW9uVGltZXJGaXJlZChUaW1lcjxUaWxlQ2FjaGU+KikKICAgICByZXZhbGlkYXRlVGls
ZXMoKTsKIH0KIAordW5zaWduZWQgVGlsZUNhY2hlOjpibGFua1BpeGVsQ291bnQoKQoreworICAg
IFJlZ2lvbiBwYWludGVkVGlsZUNvdmVyZWRWaXNpYmxlUmVnaW9uOworCisgICAgZm9yIChUaWxl
TWFwOjppdGVyYXRvciBpdCA9IG1fdGlsZXMuYmVnaW4oKSwgZW5kID0gbV90aWxlcy5lbmQoKTsg
aXQgIT0gZW5kOyArK2l0KSB7CisgICAgICAgIFJldGFpblB0cjxXZWJUaWxlTGF5ZXI+JiB0aWxl
TGF5ZXIgPSBpdC0+c2Vjb25kOworCisgICAgICAgIEludFJlY3QgdmlzaWJsZVBhcnQoW3RpbGVM
YXllci5nZXQoKSBmcmFtZV0pOworICAgICAgICB2aXNpYmxlUGFydC5pbnRlcnNlY3QobV92aXNp
YmxlUmVjdCk7CisKKyAgICAgICAgaWYoIXZpc2libGVQYXJ0LmlzRW1wdHkoKSAmJiBbdGlsZUxh
eWVyLmdldCgpIHJlcGFpbnRDb3VudF0pCisgICAgICAgICAgICBwYWludGVkVGlsZUNvdmVyZWRW
aXNpYmxlUmVnaW9uLnVuaXRlKHZpc2libGVQYXJ0KTsKKyAgICB9CisKKyAgICBSZWdpb24gdW5j
b3ZlcmVkUmVnaW9uKG1fdmlzaWJsZVJlY3QpOworICAgIHVuY292ZXJlZFJlZ2lvbi5zdWJ0cmFj
dChwYWludGVkVGlsZUNvdmVyZWRWaXNpYmxlUmVnaW9uKTsKKworICAgIHJldHVybiB1bmNvdmVy
ZWRSZWdpb24udG90YWxBcmVhKCk7Cit9CisKIHZvaWQgVGlsZUNhY2hlOjpyZXZhbGlkYXRlVGls
ZXMoKQogewogICAgIC8vIElmIHRoZSB1bmRlcmx5aW5nIFBsYXRmb3JtTGF5ZXIgaGFzIGJlZW4g
ZGVzdHJveWVkLCBidXQgdGhlIFdlYlRpbGVDYWNoZUxheWVyIGhhc24ndApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvbWFjL1dlYlRpbGVMYXllci5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvbWFjL1dlYlRpbGVMYXllci5oCmlu
ZGV4IDU3N2UzNGEuLjRhMmQ1YzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NhL21hYy9XZWJUaWxlTGF5ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jYS9tYWMvV2ViVGlsZUxheWVyLmgKQEAgLTM3LDYgKzM3LDcgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogCiAtICh2b2lkKXNldFRpbGVDYWNoZTooV2ViQ29yZTo6VGlsZUNh
Y2hlKil0aWxlQ2FjaGU7CiAtICh1bnNpZ25lZClpbmNyZW1lbnRSZXBhaW50Q291bnQ7CistICh1
bnNpZ25lZClyZXBhaW50Q291bnQ7CiBAZW5kCiAKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvbWFjL1dlYlRpbGVMYXllci5tbSBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL21hYy9XZWJUaWxlTGF5ZXIubW0KaW5kZXggNmY3Yzg1
Yy4uNjBlOGMyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2EvbWFjL1dlYlRpbGVMYXllci5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jYS9tYWMvV2ViVGlsZUxheWVyLm1tCkBAIC0yNyw2ICsyNyw3IEBACiAjaW1wb3J0ICJX
ZWJUaWxlTGF5ZXIuaCIKIAogI2ltcG9ydCAiVGlsZUNhY2hlLmgiCisjaW1wb3J0IDx3dGYvQ3Vy
cmVudFRpbWUuaD4KICNpbXBvcnQgPHd0Zi9VbnVzZWRQYXJhbS5oPgogCiB1c2luZyBuYW1lc3Bh
Y2UgV2ViQ29yZTsKQEAgLTQzLDggKzQ0LDEyIEBAIC0gKGlkPENBQWN0aW9uPilhY3Rpb25Gb3JL
ZXk6KE5TU3RyaW5nICopa2V5CiAKIC0gKHZvaWQpZHJhd0luQ29udGV4dDooQ0dDb250ZXh0UmVm
KWNvbnRleHQKIHsKLSAgICBpZiAoX3RpbGVDYWNoZSkKKyAgICBpZiAoX3RpbGVDYWNoZSkgewog
ICAgICAgICBfdGlsZUNhY2hlLT5kcmF3TGF5ZXIoc2VsZiwgY29udGV4dCk7CisKKyAgICAgICAg
aWYgKF90aWxlQ2FjaGUtPnNjcm9sbGluZ1BlcmZvcm1hbmNlTG9nZ2luZ0VuYWJsZWQoKSkKKyAg
ICAgICAgICAgIFtzZWxmIGxvZ0ZpbGxlZEZyZXNoVGlsZV07CisgICAgfQogfQogCiAtICh2b2lk
KXNldFRpbGVDYWNoZTooV2ViQ29yZTo6VGlsZUNhY2hlKil0aWxlQ2FjaGUKQEAgLTU3LDUgKzYy
LDE5IEBAIC0gKHVuc2lnbmVkKWluY3JlbWVudFJlcGFpbnRDb3VudAogICAgIHJldHVybiArK19y
ZXBhaW50Q291bnQ7CiB9CiAKKy0gKHVuc2lnbmVkKXJlcGFpbnRDb3VudAoreworICAgIHJldHVy
biBfcmVwYWludENvdW50OworfQorCistICh2b2lkKWxvZ0ZpbGxlZEZyZXNoVGlsZQoreworICAg
IEludFJlY3QgdmlzaWJsZVBhcnQoZW5jbG9zaW5nSW50UmVjdChbc2VsZiBmcmFtZV0pKTsKKyAg
ICB2aXNpYmxlUGFydC5pbnRlcnNlY3QoX3RpbGVDYWNoZS0+dmlzaWJsZVJlY3QoKSk7CisKKyAg
ICBpZihbc2VsZiByZXBhaW50Q291bnRdID09IDEgJiYgIXZpc2libGVQYXJ0LmlzRW1wdHkoKSkK
KyAgICAgICAgcHJpbnRmKCJTQ1JPTExJTkc6IEZpbGxlZCB2aXNpYmxlIGZyZXNoIHRpbGUuIFRp
bWU6ICVmIFVuZmlsbGVkIFBpeGVsczogJXVcbiIsIFdURjo6Y3VycmVudFRpbWUoKSwgX3RpbGVD
YWNoZS0+YmxhbmtQaXhlbENvdW50KCkpOworfQorCiBAZW5kCiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHAKaW5kZXggZTExMGE0ZC4uYzVmYWNi
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2lu
Zy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5j
cHAKQEAgLTUyLDYgKzUyLDcgQEAKICNpbmNsdWRlICJSZW5kZXJWaWRlby5oIgogI2luY2x1ZGUg
IlJlbmRlclZpZXcuaCIKICNpbmNsdWRlICJTY3JvbGxpbmdDb29yZGluYXRvci5oIgorI2luY2x1
ZGUgIlNldHRpbmdzLmgiCiAjaW5jbHVkZSAiU3R5bGVSZXNvbHZlci5oIgogI2luY2x1ZGUgIlRp
bGVkQmFja2luZy5oIgogCkBAIC0xMjEsOCArMTIyLDExIEBAIFJlbmRlckxheWVyQmFja2luZzo6
UmVuZGVyTGF5ZXJCYWNraW5nKFJlbmRlckxheWVyKiBsYXllcikKICAgICBpZiAobV91c2luZ1Rp
bGVkQ2FjaGVMYXllcikgewogICAgICAgICBpZiAoUGFnZSogcGFnZSA9IHJlbmRlcmVyKCktPmZy
YW1lKCktPnBhZ2UoKSkgewogICAgICAgICAgICAgaWYgKFRpbGVkQmFja2luZyogdGlsZWRCYWNr
aW5nID0gbV9ncmFwaGljc0xheWVyLT50aWxlZEJhY2tpbmcoKSkgeworICAgICAgICAgICAgICAg
IEZyYW1lKiBmcmFtZSA9IHJlbmRlcmVyKCktPmZyYW1lKCk7CisKICAgICAgICAgICAgICAgICB0
aWxlZEJhY2tpbmctPnNldElzSW5XaW5kb3cocGFnZS0+aXNPbnNjcmVlbigpKTsKLSAgICAgICAg
ICAgICAgICB0aWxlZEJhY2tpbmctPnNldENhbkhhdmVTY3JvbGxiYXJzKHJlbmRlcmVyKCktPmZy
YW1lKCktPnZpZXcoKS0+Y2FuSGF2ZVNjcm9sbGJhcnMoKSk7CisgICAgICAgICAgICAgICAgdGls
ZWRCYWNraW5nLT5zZXRDYW5IYXZlU2Nyb2xsYmFycyhmcmFtZS0+dmlldygpLT5jYW5IYXZlU2Ny
b2xsYmFycygpKTsKKyAgICAgICAgICAgICAgICB0aWxlZEJhY2tpbmctPnNldFNjcm9sbGluZ1Bl
cmZvcm1hbmNlTG9nZ2luZ0VuYWJsZWQoZnJhbWUtPnNldHRpbmdzKCkgJiYgZnJhbWUtPnNldHRp
bmdzKCktPnNjcm9sbGluZ1BlcmZvcm1hbmNlTG9nZ2luZ0VuYWJsZWQoKSk7CiAgICAgICAgICAg
ICB9CiAgICAgICAgIH0KICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VM
b2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggZWQ2MTgwNS4uN2YyOTZhYiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwpAQCAtMSwzICsxLDI3IEBACisyMDEyLTA4LTA4ICBUaW0gSG9ydG9uICA8dGltb3Ro
eV9ob3J0b25AYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBvcHRpb25hbCBkZWJ1ZyBsb2dnaW5n
IGZvciB0aWxlZCBzY3JvbGxpbmcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTkzMzA1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgQWRkIGEgbmV3IGJvb2xlYW4gcHJlZmVyZW5jZSwgU2Nyb2xsaW5nUGVyZm9y
bWFuY2VMb2dnaW5nRW5hYmxlZCwgd2hpY2ggd2lsbCBiZSB1c2VkIHRvIHRvZ2dsZQorICAgICAg
ICB0aGUgV2ViQ29yZSBwYXJ0cyBvZiB0aGlzIGNoYW5nZS4KKworICAgICAgICAqIFNoYXJlZC9X
ZWJQcmVmZXJlbmNlc1N0b3JlLmg6IEFkZCBTY3JvbGxpbmdQZXJmb3JtYW5jZUxvZ2dpbmdFbmFi
bGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS1ByZWZlcmVuY2VzLmNwcDoKKyAgICAg
ICAgKFdLUHJlZmVyZW5jZXNTZXRTY3JvbGxpbmdQZXJmb3JtYW5jZUxvZ2dpbmdFbmFibGVkKTog
QWRkZWQuCisgICAgICAgIChXS1ByZWZlcmVuY2VzR2V0U2Nyb2xsaW5nUGVyZm9ybWFuY2VMb2dn
aW5nRW5hYmxlZCk6IEFkZGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS1ByZWZlcmVu
Y2VzUHJpdmF0ZS5oOiBBZGQgZ2V0dGVycyBhbmQgc2V0dGVycyBmb3IgU2Nyb2xsaW5nUGVyZm9y
bWFuY2VMb2dnaW5nRW5hYmxlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFn
ZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OldlYlBhZ2UpOiBBZGQgU2Nyb2xsaW5n
UGVyZm9ybWFuY2VMb2dnaW5nRW5hYmxlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6dXBk
YXRlUHJlZmVyZW5jZXMpOiBBZGQgU2Nyb2xsaW5nUGVyZm9ybWFuY2VMb2dnaW5nRW5hYmxlZC4K
KyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6c2V0U2Nyb2xsaW5nUGVyZm9ybWFuY2VMb2dnaW5n
RW5hYmxlZCk6IFByb3BhZ2F0ZSBzZXR0aW5ncyBjaGFuZ2VzIHRocm91Z2ggdG8gRnJhbWVWaWV3
LgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmg6CisgICAgICAgIChXZWJL
aXQ6OldlYlBhZ2U6OnNjcm9sbGluZ1BlcmZvcm1hbmNlTG9nZ2luZ0VuYWJsZWQpOiBBZGQgYSBn
ZXR0ZXIgZm9yIHRoZSBzZXR0aW5nIHNvIHRoYXQgVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0Fy
ZWEgY2FuIGFjY2VzcyBpdC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1RpbGVk
Q29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhLm1tOgorICAgICAgICAoV2ViS2l0OjpUaWxlZENvcmVB
bmltYXRpb25EcmF3aW5nQXJlYTo6dXBkYXRlUHJlZmVyZW5jZXMpOiBQYXNzIFNjcm9sbGluZ1Bl
cmZvcm1hbmNlTG9nZ2luZ0VuYWJsZWQgZG93biBpbnRvIHRoZSBzY3JvbGxpbmcgdGhyZWFkLgor
CiAyMDEyLTA4LTA2ICBTaGVyaWZmIEJvdCAgPHdlYmtpdC5yZXZpZXcuYm90QGdtYWlsLmNvbT4K
IAogICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByMTI0ODE2LgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvU2hhcmVkL1dlYlByZWZlcmVuY2VzU3RvcmUuaCBiL1NvdXJjZS9XZWJL
aXQyL1NoYXJlZC9XZWJQcmVmZXJlbmNlc1N0b3JlLmgKaW5kZXggNmZjOTViNS4uYWYwODEyZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYlByZWZlcmVuY2VzU3RvcmUuaAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViUHJlZmVyZW5jZXNTdG9yZS5oCkBAIC0xMTcs
NiArMTE3LDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAgICAgbWFjcm8oQXN5bmNocm9ub3VzUGx1
Z2luSW5pdGlhbGl6YXRpb25FbmFibGVkLCBhc3luY2hyb25vdXNQbHVnaW5Jbml0aWFsaXphdGlv
bkVuYWJsZWQsIEJvb2wsIGJvb2wsIGZhbHNlKSBcCiAgICAgbWFjcm8oQXN5bmNocm9ub3VzUGx1
Z2luSW5pdGlhbGl6YXRpb25FbmFibGVkRm9yQWxsUGx1Z2lucywgYXN5bmNocm9ub3VzUGx1Z2lu
SW5pdGlhbGl6YXRpb25FbmFibGVkRm9yQWxsUGx1Z2lucywgQm9vbCwgYm9vbCwgZmFsc2UpIFwK
ICAgICBtYWNybyhBcnRpZmljaWFsUGx1Z2luSW5pdGlhbGl6YXRpb25EZWxheUVuYWJsZWQsIGFy
dGlmaWNpYWxQbHVnaW5Jbml0aWFsaXphdGlvbkRlbGF5RW5hYmxlZCwgQm9vbCwgYm9vbCwgZmFs
c2UpIFwKKyAgICBtYWNybyhTY3JvbGxpbmdQZXJmb3JtYW5jZUxvZ2dpbmdFbmFibGVkLCBzY3Jv
bGxpbmdQZXJmb3JtYW5jZUxvZ2dpbmdFbmFibGVkLCBCb29sLCBib29sLCBmYWxzZSkgXAogICAg
IG1hY3JvKFRoaXJkUGFydHlTdG9yYWdlQmxvY2tpbmdFbmFibGVkLCB0aGlyZFBhcnR5U3RvcmFn
ZUJsb2NraW5nRW5hYmxlZCwgQm9vbCwgYm9vbCwgZmFsc2UpIFwKICAgICBcCiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1ByZWZlcmVuY2VzLmNwcCBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1ByZWZlcmVuY2VzLmNwcAppbmRleCBkNTgz
N2ZjLi42NmQ0ZGNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0Mv
V0tQcmVmZXJlbmNlcy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dL
UHJlZmVyZW5jZXMuY3BwCkBAIC04NzMsMyArODczLDEzIEBAIGJvb2wgV0tQcmVmZXJlbmNlc0dl
dEFydGlmaWNpYWxQbHVnaW5Jbml0aWFsaXphdGlvbkRlbGF5RW5hYmxlZChXS1ByZWZlcmVuY2Vz
UmVmCiB7CiAgICAgcmV0dXJuIHRvSW1wbChwcmVmZXJlbmNlc1JlZiktPmFydGlmaWNpYWxQbHVn
aW5Jbml0aWFsaXphdGlvbkRlbGF5RW5hYmxlZCgpOwogfQorCit2b2lkIFdLUHJlZmVyZW5jZXNT
ZXRTY3JvbGxpbmdQZXJmb3JtYW5jZUxvZ2dpbmdFbmFibGVkKFdLUHJlZmVyZW5jZXNSZWYgcHJl
ZmVyZW5jZXNSZWYsIGJvb2wgZW5hYmxlZCkKK3sKKyAgICB0b0ltcGwocHJlZmVyZW5jZXNSZWYp
LT5zZXRTY3JvbGxpbmdQZXJmb3JtYW5jZUxvZ2dpbmdFbmFibGVkKGVuYWJsZWQpOworfQorCiti
b29sIFdLUHJlZmVyZW5jZXNHZXRTY3JvbGxpbmdQZXJmb3JtYW5jZUxvZ2dpbmdFbmFibGVkKFdL
UHJlZmVyZW5jZXNSZWYgcHJlZmVyZW5jZXNSZWYpCit7CisgICAgcmV0dXJuIHRvSW1wbChwcmVm
ZXJlbmNlc1JlZiktPnNjcm9sbGluZ1BlcmZvcm1hbmNlTG9nZ2luZ0VuYWJsZWQoKTsKK30KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1ByZWZlcmVuY2VzUHJp
dmF0ZS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLUHJlZmVyZW5jZXNQcml2
YXRlLmgKaW5kZXggMmJiZjhkMS4uYjQ2OWQ3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9DL1dLUHJlZmVyZW5jZXNQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9DL1dLUHJlZmVyZW5jZXNQcml2YXRlLmgKQEAgLTIwMyw2ICsyMDMs
MTAgQEAgV0tfRVhQT1JUIGJvb2wgV0tQcmVmZXJlbmNlc0dldEFzeW5jaHJvbm91c1BsdWdpbklu
aXRpYWxpemF0aW9uRW5hYmxlZEZvckFsbFBsdWcKIFdLX0VYUE9SVCB2b2lkIFdLUHJlZmVyZW5j
ZXNTZXRBcnRpZmljaWFsUGx1Z2luSW5pdGlhbGl6YXRpb25EZWxheUVuYWJsZWQoV0tQcmVmZXJl
bmNlc1JlZiBwcmVmZXJlbmNlc1JlZiwgYm9vbCBlbmFibGVkKTsKIFdLX0VYUE9SVCBib29sIFdL
UHJlZmVyZW5jZXNHZXRBcnRpZmljaWFsUGx1Z2luSW5pdGlhbGl6YXRpb25EZWxheUVuYWJsZWQo
V0tQcmVmZXJlbmNlc1JlZiBwcmVmZXJlbmNlc1JlZik7CiAKKy8vIERlZmF1bHRzIHRvIGZhbHNl
CitXS19FWFBPUlQgdm9pZCBXS1ByZWZlcmVuY2VzU2V0U2Nyb2xsaW5nUGVyZm9ybWFuY2VMb2dn
aW5nRW5hYmxlZChXS1ByZWZlcmVuY2VzUmVmIHByZWZlcmVuY2VzUmVmLCBib29sIGVuYWJsZWQp
OworV0tfRVhQT1JUIGJvb2wgV0tQcmVmZXJlbmNlc0dldFNjcm9sbGluZ1BlcmZvcm1hbmNlTG9n
Z2luZ0VuYWJsZWQoV0tQcmVmZXJlbmNlc1JlZiBwcmVmZXJlbmNlc1JlZik7CisKIFdLX0VYUE9S
VCB2b2lkIFdLUHJlZmVyZW5jZXNSZXNldFRlc3RSdW5uZXJPdmVycmlkZXMoV0tQcmVmZXJlbmNl
c1JlZiBwcmVmZXJlbmNlc1JlZik7CiAKICNpZmRlZiBfX2NwbHVzcGx1cwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwIGIvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCmluZGV4IDU2NTAwN2YuLmE1MjQ0
NDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdl
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAK
QEAgLTIxMCw2ICsyMTAsNyBAQCBXZWJQYWdlOjpXZWJQYWdlKHVpbnQ2NF90IHBhZ2VJRCwgY29u
c3QgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyYgcGFyYW1ldGVycykKICAgICAsIG1fYXN5bmNo
cm9ub3VzUGx1Z2luSW5pdGlhbGl6YXRpb25FbmFibGVkKGZhbHNlKQogICAgICwgbV9hc3luY2hy
b25vdXNQbHVnaW5Jbml0aWFsaXphdGlvbkVuYWJsZWRGb3JBbGxQbHVnaW5zKGZhbHNlKQogICAg
ICwgbV9hcnRpZmljaWFsUGx1Z2luSW5pdGlhbGl6YXRpb25EZWxheUVuYWJsZWQoZmFsc2UpCisg
ICAgLCBtX3Njcm9sbGluZ1BlcmZvcm1hbmNlTG9nZ2luZ0VuYWJsZWQoZmFsc2UpCiAjaWYgUExB
VEZPUk0oTUFDKQogICAgICwgbV93aW5kb3dJc1Zpc2libGUoZmFsc2UpCiAgICAgLCBtX2lzU21h
cnRJbnNlcnREZWxldGVFbmFibGVkKHBhcmFtZXRlcnMuaXNTbWFydEluc2VydERlbGV0ZUVuYWJs
ZWQpCkBAIC0xOTgzLDYgKzE5ODQsOCBAQCB2b2lkIFdlYlBhZ2U6OnVwZGF0ZVByZWZlcmVuY2Vz
KGNvbnN0IFdlYlByZWZlcmVuY2VzU3RvcmUmIHN0b3JlKQogICAgIG1fYXN5bmNocm9ub3VzUGx1
Z2luSW5pdGlhbGl6YXRpb25FbmFibGVkRm9yQWxsUGx1Z2lucyA9IHN0b3JlLmdldEJvb2xWYWx1
ZUZvcktleShXZWJQcmVmZXJlbmNlc0tleTo6YXN5bmNocm9ub3VzUGx1Z2luSW5pdGlhbGl6YXRp
b25FbmFibGVkRm9yQWxsUGx1Z2luc0tleSgpKTsKICAgICBtX2FydGlmaWNpYWxQbHVnaW5Jbml0
aWFsaXphdGlvbkRlbGF5RW5hYmxlZCA9IHN0b3JlLmdldEJvb2xWYWx1ZUZvcktleShXZWJQcmVm
ZXJlbmNlc0tleTo6YXJ0aWZpY2lhbFBsdWdpbkluaXRpYWxpemF0aW9uRGVsYXlFbmFibGVkS2V5
KCkpOwogCisgICAgbV9zY3JvbGxpbmdQZXJmb3JtYW5jZUxvZ2dpbmdFbmFibGVkID0gc3RvcmUu
Z2V0Qm9vbFZhbHVlRm9yS2V5KFdlYlByZWZlcmVuY2VzS2V5OjpzY3JvbGxpbmdQZXJmb3JtYW5j
ZUxvZ2dpbmdFbmFibGVkS2V5KCkpOworCiAgICAgLy8gRklYTUU6IFRoaXMgc2hvdWxkIGJlIGdl
bmVyYXRlZCBmcm9tIG1hY3JvIGV4cGFuc2lvbiBmb3IgYWxsIHByZWZlcmVuY2VzLAogICAgIC8v
IGJ1dCB3ZSBjdXJyZW50bHkgZG9uJ3QgbWF0Y2ggdGhlIG5hbWluZyBvZiBXZWJDb3JlIGV4YWN0
bHkgc28gd2UgYXJlCiAgICAgLy8gaGFuZHJvbGxpbmcgdGhlIGJvb2xlYW4gYW5kIGludGVnZXIg
cHJlZmVyZW5jZXMgdW50aWwgdGhhdCBpcyBmaXhlZC4KQEAgLTIxMDAsNiArMjEwMyw4IEBAIHZv
aWQgV2ViUGFnZTo6dXBkYXRlUHJlZmVyZW5jZXMoY29uc3QgV2ViUHJlZmVyZW5jZXNTdG9yZSYg
c3RvcmUpCiAKICAgICBzZXR0aW5ncy0+c2V0RGlhZ25vc3RpY0xvZ2dpbmdFbmFibGVkKHN0b3Jl
LmdldEJvb2xWYWx1ZUZvcktleShXZWJQcmVmZXJlbmNlc0tleTo6ZGlhZ25vc3RpY0xvZ2dpbmdF
bmFibGVkS2V5KCkpKTsKIAorICAgIHNldHRpbmdzLT5zZXRTY3JvbGxpbmdQZXJmb3JtYW5jZUxv
Z2dpbmdFbmFibGVkKG1fc2Nyb2xsaW5nUGVyZm9ybWFuY2VMb2dnaW5nRW5hYmxlZCk7CisKICAg
ICBwbGF0Zm9ybVByZWZlcmVuY2VzRGlkQ2hhbmdlKHN0b3JlKTsKIAogICAgIGlmIChtX2RyYXdp
bmdBcmVhKQpAQCAtMzI5Myw0ICszMjk4LDE1IEBAIHZvaWQgV2ViUGFnZTo6c2V0VmlzaWJpbGl0
eVN0YXRlKGludCB2aXNpYmlsaXR5U3RhdGUsIGJvb2wgaXNJbml0aWFsU3RhdGUpCiB9CiAjZW5k
aWYKIAordm9pZCBXZWJQYWdlOjpzZXRTY3JvbGxpbmdQZXJmb3JtYW5jZUxvZ2dpbmdFbmFibGVk
KGJvb2wgZW5hYmxlZCkKK3sKKyAgICBtX3Njcm9sbGluZ1BlcmZvcm1hbmNlTG9nZ2luZ0VuYWJs
ZWQgPSBlbmFibGVkOworCisgICAgRnJhbWVWaWV3KiBmcmFtZVZpZXcgPSBtX21haW5GcmFtZS0+
Y29yZUZyYW1lKCktPnZpZXcoKTsKKyAgICBpZiAoIWZyYW1lVmlldykKKyAgICAgICAgcmV0dXJu
OworCisgICAgZnJhbWVWaWV3LT5zZXRTY3JvbGxpbmdQZXJmb3JtYW5jZUxvZ2dpbmdFbmFibGVk
KGVuYWJsZWQpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmggYi9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCmluZGV4IDI1NmI3OWYuLjVhY2U5ZTIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKKysrIGIv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaApAQCAtNTc3LDYgKzU3
Nyw5IEBAIHB1YmxpYzoKICAgICBib29sIGFydGlmaWNpYWxQbHVnaW5Jbml0aWFsaXphdGlvbkRl
bGF5RW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1fYXJ0aWZpY2lhbFBsdWdpbkluaXRpYWxpemF0
aW9uRGVsYXlFbmFibGVkOyB9CiAgICAgdm9pZCBzZXRBcnRpZmljaWFsUGx1Z2luSW5pdGlhbGl6
YXRpb25EZWxheUVuYWJsZWQoYm9vbCBlbmFibGVkKSB7IG1fYXJ0aWZpY2lhbFBsdWdpbkluaXRp
YWxpemF0aW9uRGVsYXlFbmFibGVkID0gZW5hYmxlZDsgfQogCisgICAgYm9vbCBzY3JvbGxpbmdQ
ZXJmb3JtYW5jZUxvZ2dpbmdFbmFibGVkKCkgY29uc3QgeyByZXR1cm4gbV9zY3JvbGxpbmdQZXJm
b3JtYW5jZUxvZ2dpbmdFbmFibGVkOyB9CisgICAgdm9pZCBzZXRTY3JvbGxpbmdQZXJmb3JtYW5j
ZUxvZ2dpbmdFbmFibGVkKGJvb2wgZW5hYmxlZCk7CisKIHByaXZhdGU6CiAgICAgV2ViUGFnZSh1
aW50NjRfdCBwYWdlSUQsIGNvbnN0IFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMmKTsKIApAQCAt
NzcwLDYgKzc3Myw4IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2FzeW5jaHJvbm91c1BsdWdpbklu
aXRpYWxpemF0aW9uRW5hYmxlZEZvckFsbFBsdWdpbnM7CiAgICAgYm9vbCBtX2FydGlmaWNpYWxQ
bHVnaW5Jbml0aWFsaXphdGlvbkRlbGF5RW5hYmxlZDsKIAorICAgIGJvb2wgbV9zY3JvbGxpbmdQ
ZXJmb3JtYW5jZUxvZ2dpbmdFbmFibGVkOworCiAjaWYgUExBVEZPUk0oTUFDKQogICAgIC8vIFdo
ZXRoZXIgdGhlIGNvbnRhaW5pbmcgd2luZG93IGlzIHZpc2libGUgb3Igbm90LgogICAgIGJvb2wg
bV93aW5kb3dJc1Zpc2libGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYlBhZ2UvbWFjL1RpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhLm1tIGIvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9UaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJl
YS5tbQppbmRleCA0ZGZmYjZlLi4yNDMzZDc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1RpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhLm1tCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvVGlsZWRDb3JlQW5pbWF0
aW9uRHJhd2luZ0FyZWEubW0KQEAgLTIxMiw3ICsyMTIsMTAgQEAgdm9pZCBUaWxlZENvcmVBbmlt
YXRpb25EcmF3aW5nQXJlYTo6dXBkYXRlUHJlZmVyZW5jZXMoKQogICAgICAgICBtX2RlYnVnSW5m
b0xheWVyID0gbnVsbHB0cjsKICAgICB9CiAKKyAgICBib29sIHNjcm9sbGluZ1BlcmZvcm1hbmNl
TG9nZ2luZ0VuYWJsZWQgPSBtX3dlYlBhZ2UtPnNjcm9sbGluZ1BlcmZvcm1hbmNlTG9nZ2luZ0Vu
YWJsZWQoKTsKKwogICAgIFNjcm9sbGluZ1RocmVhZDo6ZGlzcGF0Y2goYmluZCgmU2Nyb2xsaW5n
VHJlZTo6c2V0RGVidWdSb290TGF5ZXIsIG1fd2ViUGFnZS0+Y29yZVBhZ2UoKS0+c2Nyb2xsaW5n
Q29vcmRpbmF0b3IoKS0+c2Nyb2xsaW5nVHJlZSgpLCBtX2RlYnVnSW5mb0xheWVyKSk7CisgICAg
U2Nyb2xsaW5nVGhyZWFkOjpkaXNwYXRjaChiaW5kKCZTY3JvbGxpbmdUcmVlOjpzZXRTY3JvbGxp
bmdQZXJmb3JtYW5jZUxvZ2dpbmdFbmFibGVkLCBtX3dlYlBhZ2UtPmNvcmVQYWdlKCktPnNjcm9s
bGluZ0Nvb3JkaW5hdG9yKCktPnNjcm9sbGluZ1RyZWUoKSwgc2Nyb2xsaW5nUGVyZm9ybWFuY2VM
b2dnaW5nRW5hYmxlZCkpOwogfQogCiB2b2lkIFRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVh
OjpkaXNwYXRjaEFmdGVyRW5zdXJpbmdVcGRhdGVkU2Nyb2xsUG9zaXRpb24oY29uc3QgRnVuY3Rp
b248dm9pZCAoKT4mIGZ1bmN0aW9uUmVmKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>157298</attachid>
            <date>2012-08-08 14:31:32 -0700</date>
            <delta_ts>2012-08-08 16:10:47 -0700</delta_ts>
            <desc>style</desc>
            <filename>spl.diff</filename>
            <type>text/plain</type>
            <size>27378</size>
            <attacher name="Tim Horton">thorton</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA0NTY4NjcyLi4wZjM5ZTk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNjYg
QEAKKzIwMTItMDgtMDggIFRpbSBIb3J0b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+CisK
KyAgICAgICAgQWRkIG9wdGlvbmFsIGRlYnVnIGxvZ2dpbmcgZm9yIHRpbGVkIHNjcm9sbGluZwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTMzMDUKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgc2Nyb2xs
aW5nIHBlcmZvcm1hbmNlIGxvZ2dpbmcgdG8gU2Nyb2xsaW5nVHJlZU5vZGVNYWMgYW5kIFdlYlRp
bGVMYXllciwgd2hpY2ggd2lsbCBsb2cKKyAgICAgICAgdGhlIGFtb3VudCBvZiB1bnBhaW50ZWQg
YXJlYSBleHBvc2VkIGR1cmluZyBzY3JvbGxpbmcgYW5kIHBhaW50aW5nLCByZXNwZWN0aXZlbHku
CisKKyAgICAgICAgTm8gbmV3IHRlc3RzLCBhcyB0aGlzIGlzIGp1c3QgZGVidWdnaW5nIGxvZ2dp
bmcuCisKKyAgICAgICAgKiBXZWJDb3JlLmV4cC5pbjoKKyAgICAgICAgKiBwYWdlL0ZyYW1lVmll
dy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVZpZXc6OnNldFNjcm9sbGluZ1BlcmZvcm1h
bmNlTG9nZ2luZ0VuYWJsZWQpOgorICAgICAgICBBZGRlZCBzZXRTY3JvbGxpbmdQZXJmb3JtYW5j
ZUxvZ2dpbmdFbmFibGVkLCBwYXNzZXMgZmxhZyBpbnRvIFRpbGVkQmFja2luZy4KKworICAgICAg
ICAqIHBhZ2UvRnJhbWVWaWV3Lmg6CisgICAgICAgICogcGFnZS9TZXR0aW5ncy5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpTZXR0aW5nczo6U2V0dGluZ3MpOgorICAgICAgICAoV2ViQ29yZTo6U2V0
dGluZ3M6OnNldFNjcm9sbGluZ1BlcmZvcm1hbmNlTG9nZ2luZ0VuYWJsZWQpOgorICAgICAgICBB
ZGRlZCBzZXRTY3JvbGxpbmdQZXJmb3JtYW5jZUxvZ2dpbmdFbmFibGVkLCBwYXNzZXMgZmxhZyBp
bnRvIEZyYW1lVmlldy4KKworICAgICAgICAqIHBhZ2UvU2V0dGluZ3MuaDoKKyAgICAgICAgKFdl
YkNvcmU6OlNldHRpbmdzOjpzY3JvbGxpbmdQZXJmb3JtYW5jZUxvZ2dpbmdFbmFibGVkKToKKyAg
ICAgICAgKiBwYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlNjcm9sbGluZ1RyZWU6OlNjcm9sbGluZ1RyZWUpOgorICAgICAgICAoV2ViQ29yZTo6U2Ny
b2xsaW5nVHJlZTo6c2V0U2Nyb2xsaW5nUGVyZm9ybWFuY2VMb2dnaW5nRW5hYmxlZCk6CisgICAg
ICAgIChXZWJDb3JlOjpTY3JvbGxpbmdUcmVlOjpzY3JvbGxpbmdQZWZvcm1hbmNlTG9nZ2luZ0Vu
YWJsZWQpOgorICAgICAgICBBZGRlZCBTY3JvbGxpbmdQZXJmb3JtYW5jZUxvZ2dpbmdFbmFibGVk
IHNldHRlci9nZXR0ZXI7IHRoaXMgaXMgd2hlcmUgaXQncyBhY2Nlc3NlZCBmcm9tIFNjcm9sbGlu
Z1RyZWVOb2RlTWFjLgorCisgICAgICAgICogcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZS5o
OgorICAgICAgICAqIHBhZ2Uvc2Nyb2xsaW5nL21hYy9TY3JvbGxpbmdUcmVlTm9kZU1hYy5oOgor
ICAgICAgICAoU2Nyb2xsaW5nVHJlZU5vZGVNYWMpOgorICAgICAgICAqIHBhZ2Uvc2Nyb2xsaW5n
L21hYy9TY3JvbGxpbmdUcmVlTm9kZU1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGlu
Z1RyZWVOb2RlTWFjOjpzZXRTY3JvbGxQb3NpdGlvbik6CisgICAgICAgIFdoZW4gdXBkYXRpbmcg
c2Nyb2xsIHBvc2l0aW9uLCBjb25kaXRpb25hbGx5IGxvZyB0aGUgYW1vdW50IG9mIHVucGFpbnRl
ZCBhcmVhIHRoYXQgd2FzIGp1c3QgZXhwb3NlZC4KKworICAgICAgICAoV2ViQ29yZTo6U2Nyb2xs
aW5nVHJlZU5vZGVNYWM6OmxvZ0V4cG9zZWRUaWxlbGVzc0FyZWEpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL1RpbGVkQmFja2luZy5oOgorICAgICAgICAoV2ViQ29yZTo6VGlsZWRCYWNr
aW5nOjpUaWxlZEJhY2tpbmcpOgorICAgICAgICAoV2ViQ29yZTo6VGlsZWRCYWNraW5nOjpzZXRT
Y3JvbGxpbmdQZXJmb3JtYW5jZUxvZ2dpbmdFbmFibGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlRp
bGVkQmFja2luZzo6c2Nyb2xsaW5nUGVyZm9ybWFuY2VMb2dnaW5nRW5hYmxlZCk6CisgICAgICAg
IEFkZGVkIFNjcm9sbGluZ1BlcmZvcm1hbmNlTG9nZ2luZ0VuYWJsZWQgc2V0dGVyL2dldHRlcjsg
dGhpcyBpcyB3aGVyZSBpdCdzIGFjY2Vzc2VkIGZyb20gV2ViVGlsZUxheWVyLgorCisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvY2EvbWFjL1RpbGVDYWNoZS5oOgorICAgICAgICAoV2ViQ29y
ZTo6VGlsZUNhY2hlOjp2aXNpYmxlUmVjdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2EvbWFjL1RpbGVDYWNoZS5tbToKKyAgICAgICAgKFdlYkNvcmU6OlRpbGVDYWNoZTo6YmxhbmtQ
aXhlbENvdW50KToKKyAgICAgICAgQ29tcHV0ZSB0aGUgZXhwb3NlZCwgdW5wYWludGVkIGFyZWEg
b2YgdGhlIHRpbGUgY2FjaGUgYnkgaXRlcmF0aW5nIG92ZXIgdGhlIGxheWVycywKKyAgICAgICAg
Y2hlY2tpbmcgaWYgdGhleSd2ZSBiZWVuIHBhaW50ZWQsIGFuZCBzdWJ0cmFjdGluZyBwYWludGVk
IGxheWVycyBmcm9tIHRoZSB0b3RhbCB2aXNpYmxlIGFyZWEuCisKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9jYS9tYWMvV2ViVGlsZUxheWVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvY2EvbWFjL1dlYlRpbGVMYXllci5tbToKKyAgICAgICAgKC1bV2ViVGlsZUxheWVyIGRy
YXdJbkNvbnRleHQ6XSk6CisgICAgICAgICgtW1dlYlRpbGVMYXllciByZXBhaW50Q291bnRdKToK
KyAgICAgICAgKC1bV2ViVGlsZUxheWVyIGxvZ0ZpbGxlZEZyZXNoVGlsZV0pOgorICAgICAgICBX
aGVuIHBhaW50aW5nIGEgV2ViVGlsZUxheWVyLCBjb25kaXRpb25hbGx5IGxvZyB0aGUgYW1vdW50
IG9mIHVucGFpbnRlZCBhcmVhIHJlbWFpbmluZyBhZnRlciBwYWludGluZyBzYWlkIHRpbGUuCisK
KyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlckxheWVyQmFja2luZzo6UmVuZGVyTGF5ZXJCYWNraW5nKToKKyAgICAgICAg
UGx1bWIgU2Nyb2xsaW5nUGVyZm9ybWFuY2VMb2dnaW5nRW5hYmxlZCB0aHJvdWdoIHRvIFRpbGVk
QmFja2luZy4KKwogMjAxMi0wOC0wNiAgQWRhbSBCYXJ0aCAgPGFiYXJ0aEB3ZWJraXQub3JnPgog
CiAgICAgICAgIEpTQyBzaG91bGQgdXNlIEJpbmRpbmdTdGF0ZSB0byBkZXRlcm1pbmUgdGhlIGFj
dGl2ZURPTVdpbmRvdwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4g
Yi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgppbmRleCA0N2QwNDk3Li45MTEzZDk5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLmV4cC5pbgpAQCAtOTE0LDYgKzkxNCw3IEBAIF9fWk43V2ViQ29yZThTZXR0
aW5nczM1c2V0RXhwZXJpbWVudGFsTm90aWZpY2F0aW9uc0VuYWJsZWRFYgogX19aTjdXZWJDb3Jl
OFNldHRpbmdzMzVzZXRUcmVhdHNBbnlUZXh0Q1NTTGlua0FzU3R5bGVzaGVldEViCiBfX1pON1dl
YkNvcmU4U2V0dGluZ3MzNnNldE9mZmxpbmVXZWJBcHBsaWNhdGlvbkNhY2hlRW5hYmxlZEViCiBf
X1pON1dlYkNvcmU4U2V0dGluZ3MzN3NldEZpeGVkRWxlbWVudHNMYXlvdXRSZWxhdGl2ZVRvRnJh
bWVFYgorX19aTjdXZWJDb3JlOFNldHRpbmdzMzdzZXRTY3JvbGxpbmdQZXJmb3JtYW5jZUxvZ2dp
bmdFbmFibGVkRWIKIF9fWk43V2ViQ29yZThTZXR0aW5nczQwc2V0SmF2YVNjcmlwdENhbk9wZW5X
aW5kb3dzQXV0b21hdGljYWxseUViCiBfX1pON1dlYkNvcmU4U2V0dGluZ3M0MHNldFRleHREaXJl
Y3Rpb25TdWJtZW51SW5jbHVzaW9uQmVoYXZpb3JFTlNfMzdUZXh0RGlyZWN0aW9uU3VibWVudUlu
Y2x1c2lvbkJlaGF2aW9yRQogX19aTjdXZWJDb3JlOFNldHRpbmdzNDFzZXROZWVkc0tleWJvYXJk
RXZlbnREaXNhbWJpZ3VhdGlvblF1aXJrc0ViCkBAIC05NTgsNiArOTU5LDcgQEAgX19aTjdXZWJD
b3JlOUZyYW1lVmlldzI0Zm9yY2VMYXlvdXRGb3JQYWdpbmF0aW9uRVJLTlNfOUZsb2F0U2l6ZUVT
M19mTlNfMTlBZGp1c3QKIF9fWk43V2ViQ29yZTlGcmFtZVZpZXcyNmFkanVzdFBhZ2VIZWlnaHRE
ZXByZWNhdGVkRVBmZmZmCiBfX1pON1dlYkNvcmU5RnJhbWVWaWV3MjlzZXRTaG91bGRVcGRhdGVX
aGlsZU9mZnNjcmVlbkViCiBfX1pON1dlYkNvcmU5RnJhbWVWaWV3Mzd1cGRhdGVMYXlvdXRBbmRT
dHlsZUlmTmVlZGVkUmVjdXJzaXZlRXYKK19fWk43V2ViQ29yZTlGcmFtZVZpZXczN3NldFNjcm9s
bGluZ1BlcmZvcm1hbmNlTG9nZ2luZ0VuYWJsZWRFYgogX19aTjdXZWJDb3JlOUZyYW1lVmlldzM4
c2Nyb2xsUG9zaXRpb25DaGFuZ2VkVmlhUGxhdGZvcm1XaWRnZXRFdgogX19aTjdXZWJDb3JlOUZy
YW1lVmlldzM4c3luY0NvbXBvc2l0aW5nU3RhdGVJbmNsdWRpbmdTdWJmcmFtZXNFdgogX19aTjdX
ZWJDb3JlOUZyYW1lVmlldzZjcmVhdGVFUE5TXzVGcmFtZUUKQEAgLTI1MDEsNiArMjUwMyw3IEBA
IF9fWk43V2ViQ29yZThEb2N1bWVudDE5YWNjZXNzU1ZHRXh0ZW5zaW9uc0V2CiAKICNpZiBFTkFC
TEUoVEhSRUFERURfU0NST0xMSU5HKQogX19aTjdXZWJDb3JlMTNTY3JvbGxpbmdUcmVlMTdzZXRE
ZWJ1Z1Jvb3RMYXllckVQN0NBTGF5ZXIKK19fWk43V2ViQ29yZTEzU2Nyb2xsaW5nVHJlZTM3c2V0
U2Nyb2xsaW5nUGVyZm9ybWFuY2VMb2dnaW5nRW5hYmxlZEViCiBfX1pON1dlYkNvcmUxM1Njcm9s
bGluZ1RyZWUyMXRyeVRvSGFuZGxlV2hlZWxFdmVudEVSS05TXzE4UGxhdGZvcm1XaGVlbEV2ZW50
RQogX19aTjdXZWJDb3JlMTNTY3JvbGxpbmdUcmVlMjJ1cGRhdGVCYWNrRm9yd2FyZFN0YXRlRWJi
CiBfX1pON1dlYkNvcmUxM1Njcm9sbGluZ1RyZWVEMUV2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0ZyYW1lVmlldy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5j
cHAKaW5kZXggZjlkOTA3My4uMjA3ODdlZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9GcmFtZVZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcApA
QCAtMzU3NSw0ICszNTc1LDEyIEBAIEFYT2JqZWN0Q2FjaGUqIEZyYW1lVmlldzo6YXhPYmplY3RD
YWNoZSgpIGNvbnN0CiAgICAgcmV0dXJuIDA7CiB9CiAgICAgCit2b2lkIEZyYW1lVmlldzo6c2V0
U2Nyb2xsaW5nUGVyZm9ybWFuY2VMb2dnaW5nRW5hYmxlZChib29sIGZsYWcpCit7CisjaWYgVVNF
KEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQorICAgIGlmIChUaWxlZEJhY2tpbmcqIHRpbGVkQmFj
a2luZyA9IHRoaXMtPnRpbGVkQmFja2luZygpKQorICAgICAgICB0aWxlZEJhY2tpbmctPnNldFNj
cm9sbGluZ1BlcmZvcm1hbmNlTG9nZ2luZ0VuYWJsZWQoZmxhZyk7CisjZW5kaWYKK30KKwogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFt
ZVZpZXcuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmgKaW5kZXggNWQ2MDk0Yy4u
ZjNiYzAxYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5oCkBAIC0zMzksNiArMzM5LDggQEAgcHVi
bGljOgogICAgIC8vIHdlIG5lZWQgdGhpcyBmdW5jdGlvbiBpbiBvcmRlciB0byBkbyB0aGUgc2Ny
b2xsIG91cnNlbHZlcy4KICAgICBib29sIHdoZWVsRXZlbnQoY29uc3QgUGxhdGZvcm1XaGVlbEV2
ZW50Jik7CiAKKyAgICB2b2lkIHNldFNjcm9sbGluZ1BlcmZvcm1hbmNlTG9nZ2luZ0VuYWJsZWQo
Ym9vbCk7CisKIHByb3RlY3RlZDoKICAgICB2aXJ0dWFsIGJvb2wgc2Nyb2xsQ29udGVudHNGYXN0
UGF0aChjb25zdCBJbnRTaXplJiBzY3JvbGxEZWx0YSwgY29uc3QgSW50UmVjdCYgcmVjdFRvU2Ny
b2xsLCBjb25zdCBJbnRSZWN0JiBjbGlwUmVjdCk7CiAgICAgdmlydHVhbCB2b2lkIHNjcm9sbENv
bnRlbnRzU2xvd1BhdGgoY29uc3QgSW50UmVjdCYgdXBkYXRlUmVjdCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0
dGluZ3MuY3BwCmluZGV4IDk5ODgyZGYuLmU5N2M2NGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvU2V0dGluZ3MuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3Mu
Y3BwCkBAIC0yODUsNiArMjg1LDcgQEAgU2V0dGluZ3M6OlNldHRpbmdzKFBhZ2UqIHBhZ2UpCiAg
ICAgLCBtX3dpbmRvd0ZvY3VzUmVzdHJpY3RlZCh0cnVlKQogICAgICwgbV9kaWFnbm9zdGljTG9n
Z2luZ0VuYWJsZWQoZmFsc2UpCiAgICAgLCBtX3RoaXJkUGFydHlTdG9yYWdlQmxvY2tpbmdFbmFi
bGVkKGZhbHNlKQorICAgICwgbV9zY3JvbGxpbmdQZXJmb3JtYW5jZUxvZ2dpbmdFbmFibGVkKGZh
bHNlKQogICAgICwgbV9sb2Fkc0ltYWdlc0F1dG9tYXRpY2FsbHlUaW1lcih0aGlzLCAmU2V0dGlu
Z3M6OmxvYWRzSW1hZ2VzQXV0b21hdGljYWxseVRpbWVyRmlyZWQpCiAgICAgLCBtX2luY3JlbWVu
dGFsUmVuZGVyaW5nU3VwcHJlc3Npb25UaW1lb3V0SW5TZWNvbmRzKGRlZmF1bHRJbmNyZW1lbnRh
bFJlbmRlcmluZ1N1cHByZXNzaW9uVGltZW91dEluU2Vjb25kcykKIHsKQEAgLTkzOSw2ICs5NDAs
MTQgQEAgdm9pZCBTZXR0aW5nczo6c2V0VGlsZWRCYWNraW5nU3RvcmVFbmFibGVkKGJvb2wgZW5h
YmxlZCkKICNlbmRpZgogfQogCit2b2lkIFNldHRpbmdzOjpzZXRTY3JvbGxpbmdQZXJmb3JtYW5j
ZUxvZ2dpbmdFbmFibGVkKGJvb2wgZW5hYmxlZCkKK3sKKyAgICBtX3Njcm9sbGluZ1BlcmZvcm1h
bmNlTG9nZ2luZ0VuYWJsZWQgPSBlbmFibGVkOworCisgICAgaWYgKG1fcGFnZS0+bWFpbkZyYW1l
KCkgJiYgbV9wYWdlLT5tYWluRnJhbWUoKS0+dmlldygpKQorICAgICAgICBtX3BhZ2UtPm1haW5G
cmFtZSgpLT52aWV3KCktPnNldFNjcm9sbGluZ1BlcmZvcm1hbmNlTG9nZ2luZ0VuYWJsZWQoZW5h
YmxlZCk7Cit9CisKIHZvaWQgU2V0dGluZ3M6OnNldE1vY2tTY3JvbGxiYXJzRW5hYmxlZChib29s
IGZsYWcpCiB7CiAgICAgZ01vY2tTY3JvbGxiYXJzRW5hYmxlZCA9IGZsYWc7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Nl
dHRpbmdzLmgKaW5kZXggZDdiMDY0ZS4uZmQ0ZDlhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGFnZS9TZXR0aW5ncy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MuaApA
QCAtNjA0LDYgKzYwNCw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdm9pZCBzZXRU
aGlyZFBhcnR5U3RvcmFnZUJsb2NraW5nRW5hYmxlZChib29sIGVuYWJsZWQpIHsgbV90aGlyZFBh
cnR5U3RvcmFnZUJsb2NraW5nRW5hYmxlZCA9IGVuYWJsZWQ7IH0KICAgICAgICAgYm9vbCB0aGly
ZFBhcnR5U3RvcmFnZUJsb2NraW5nRW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1fdGhpcmRQYXJ0
eVN0b3JhZ2VCbG9ja2luZ0VuYWJsZWQ7IH0KIAorICAgICAgICB2b2lkIHNldFNjcm9sbGluZ1Bl
cmZvcm1hbmNlTG9nZ2luZ0VuYWJsZWQoYm9vbCk7CisgICAgICAgIGJvb2wgc2Nyb2xsaW5nUGVy
Zm9ybWFuY2VMb2dnaW5nRW5hYmxlZCgpIHsgcmV0dXJuIG1fc2Nyb2xsaW5nUGVyZm9ybWFuY2VM
b2dnaW5nRW5hYmxlZDsgfQorCiAjaWYgVVNFKEpTQykKICAgICAgICAgc3RhdGljIHZvaWQgc2V0
U2hvdWxkUmVzcGVjdFByaW9yaXR5SW5DU1NBdHRyaWJ1dGVTZXR0ZXJzKGJvb2wpOwogICAgICAg
ICBzdGF0aWMgYm9vbCBzaG91bGRSZXNwZWN0UHJpb3JpdHlJbkNTU0F0dHJpYnV0ZVNldHRlcnMo
KTsKQEAgLTc5NCw2ICs3OTcsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICAgICAgYm9v
bCBtX3RoaXJkUGFydHlTdG9yYWdlQmxvY2tpbmdFbmFibGVkIDogMTsKIAorICAgICAgICBib29s
IG1fc2Nyb2xsaW5nUGVyZm9ybWFuY2VMb2dnaW5nRW5hYmxlZCA6IDE7CisKICAgICAgICAgVGlt
ZXI8U2V0dGluZ3M+IG1fbG9hZHNJbWFnZXNBdXRvbWF0aWNhbGx5VGltZXI7CiAgICAgICAgIHZv
aWQgbG9hZHNJbWFnZXNBdXRvbWF0aWNhbGx5VGltZXJGaXJlZChUaW1lcjxTZXR0aW5ncz4qKTsK
ICAgICAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3Jv
bGxpbmdUcmVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1Ry
ZWUuY3BwCmluZGV4IDM2ZTZhYWUuLmJhNmE1MmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWUuY3BwCkBAIC01MCw2ICs1MCw3IEBAIFNjcm9sbGlu
Z1RyZWU6OlNjcm9sbGluZ1RyZWUoU2Nyb2xsaW5nQ29vcmRpbmF0b3IqIHNjcm9sbGluZ0Nvb3Jk
aW5hdG9yKQogICAgICwgbV9jYW5Hb0ZvcndhcmQoZmFsc2UpCiAgICAgLCBtX21haW5GcmFtZVBp
bm5lZFRvVGhlTGVmdChmYWxzZSkKICAgICAsIG1fbWFpbkZyYW1lUGlubmVkVG9UaGVSaWdodChm
YWxzZSkKKyAgICAsIG1fc2Nyb2xsaW5nUGVyZm9ybWFuY2VMb2dnaW5nRW5hYmxlZChmYWxzZSkK
IHsKIH0KIApAQCAtMjE4LDYgKzIxOSwxNiBAQCBib29sIFNjcm9sbGluZ1RyZWU6OndpbGxXaGVl
bEV2ZW50U3RhcnRTd2lwZUdlc3R1cmUoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50JiB3aAogICAg
IHJldHVybiBmYWxzZTsKIH0KIAordm9pZCBTY3JvbGxpbmdUcmVlOjpzZXRTY3JvbGxpbmdQZXJm
b3JtYW5jZUxvZ2dpbmdFbmFibGVkKGJvb2wgZmxhZykKK3sKKyAgICBtX3Njcm9sbGluZ1BlcmZv
cm1hbmNlTG9nZ2luZ0VuYWJsZWQgPSBmbGFnOworfQorCitib29sIFNjcm9sbGluZ1RyZWU6OnNj
cm9sbGluZ1BlZm9ybWFuY2VMb2dnaW5nRW5hYmxlZCgpCit7CisgICAgcmV0dXJuIG1fc2Nyb2xs
aW5nUGVyZm9ybWFuY2VMb2dnaW5nRW5hYmxlZDsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQogCiAjZW5kaWYgLy8gRU5BQkxFKFRIUkVBREVEX1NDUk9MTElORykKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWUuaCBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWUuaAppbmRleCBlZjc3OTI2Li40MTIwZTll
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVl
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZS5oCkBA
IC05Nyw2ICs5Nyw5IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldERlYnVnUm9vdExheWVyKENBTGF5
ZXIgKik7CiAjZW5kaWYKIAorICAgIHZvaWQgc2V0U2Nyb2xsaW5nUGVyZm9ybWFuY2VMb2dnaW5n
RW5hYmxlZChib29sIGZsYWcpOworICAgIGJvb2wgc2Nyb2xsaW5nUGVmb3JtYW5jZUxvZ2dpbmdF
bmFibGVkKCk7CisKIHByaXZhdGU6CiAgICAgZXhwbGljaXQgU2Nyb2xsaW5nVHJlZShTY3JvbGxp
bmdDb29yZGluYXRvciopOwogCkBAIC0xMTYsNiArMTE5LDggQEAgcHJpdmF0ZToKICAgICBib29s
IG1fbWFpbkZyYW1lUGlubmVkVG9UaGVMZWZ0OwogICAgIGJvb2wgbV9tYWluRnJhbWVQaW5uZWRU
b1RoZVJpZ2h0OwogCisgICAgYm9vbCBtX3Njcm9sbGluZ1BlcmZvcm1hbmNlTG9nZ2luZ0VuYWJs
ZWQ7CisKICNpZiBQTEFURk9STShNQUMpCiAgICAgUmV0YWluUHRyPENBTGF5ZXI+IG1fZGVidWdJ
bmZvTGF5ZXI7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xs
aW5nL21hYy9TY3JvbGxpbmdUcmVlTm9kZU1hYy5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3Jv
bGxpbmcvbWFjL1Njcm9sbGluZ1RyZWVOb2RlTWFjLmgKaW5kZXggOGExNTc2ZS4uNDMwNGI2MSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGluZ1Ry
ZWVOb2RlTWFjLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9s
bGluZ1RyZWVOb2RlTWFjLmgKQEAgLTc0LDYgKzc0LDggQEAgcHJpdmF0ZToKIAogICAgIHZvaWQg
dXBkYXRlTWFpbkZyYW1lUGluU3RhdGUoY29uc3QgSW50UG9pbnQmIHNjcm9sbFBvc2l0aW9uKTsK
IAorICAgIHZvaWQgbG9nRXhwb3NlZFVuZmlsbGVkQXJlYSgpOworCiAgICAgU2Nyb2xsRWxhc3Rp
Y2l0eUNvbnRyb2xsZXIgbV9zY3JvbGxFbGFzdGljaXR5Q29udHJvbGxlcjsKICAgICBSZXRhaW5Q
dHI8Q0ZSdW5Mb29wVGltZXJSZWY+IG1fc25hcFJ1YmJlcmJhbmRUaW1lcjsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGluZ1RyZWVOb2RlTWFj
Lm1tIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGluZ1RyZWVOb2Rl
TWFjLm1tCmluZGV4IGEzN2JmNDAuLmMzZmJiNTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2Uvc2Nyb2xsaW5nL21hYy9TY3JvbGxpbmdUcmVlTm9kZU1hYy5tbQorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nVHJlZU5vZGVNYWMubW0KQEAgLTMx
LDYgKzMxLDExIEBACiAjaW5jbHVkZSAiUGxhdGZvcm1XaGVlbEV2ZW50LmgiCiAjaW5jbHVkZSAi
U2Nyb2xsaW5nVHJlZS5oIgogI2luY2x1ZGUgIlNjcm9sbGluZ1RyZWVTdGF0ZS5oIgorI2luY2x1
ZGUgIlNldHRpbmdzLmgiCisjaW5jbHVkZSAiV2ViVGlsZUxheWVyLmgiCisKKyNpbmNsdWRlIDx3
dGYvQ3VycmVudFRpbWUuaD4KKyNpbmNsdWRlIDx3dGYvRGVxdWUuaD4KIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCkBAIC0yMzMsNiArMjM4LDkgQEAgdm9pZCBTY3JvbGxpbmdUcmVlTm9kZU1hYzo6
c2V0U2Nyb2xsUG9zaXRpb24oY29uc3QgSW50UG9pbnQmIHNjcm9sbFBvc2l0aW9uKQogICAgIG5l
d1Njcm9sbFBvc2l0aW9uID0gbmV3U2Nyb2xsUG9zaXRpb24uZXhwYW5kZWRUbyhtaW5pbXVtU2Ny
b2xsUG9zaXRpb24oKSk7CiAKICAgICBzZXRTY3JvbGxQb3NpdGlvbldpdGhvdXRDb250ZW50RWRn
ZUNvbnN0cmFpbnRzKG5ld1Njcm9sbFBvc2l0aW9uKTsKKworICAgIGlmIChzY3JvbGxpbmdUcmVl
KCktPnNjcm9sbGluZ1BlZm9ybWFuY2VMb2dnaW5nRW5hYmxlZCgpKQorICAgICAgICBsb2dFeHBv
c2VkVW5maWxsZWRBcmVhKCk7CiB9CiAKIHZvaWQgU2Nyb2xsaW5nVHJlZU5vZGVNYWM6OnNldFNj
cm9sbFBvc2l0aW9uV2l0aG91dENvbnRlbnRFZGdlQ29uc3RyYWludHMoY29uc3QgSW50UG9pbnQm
IHNjcm9sbFBvc2l0aW9uKQpAQCAtMjg4LDYgKzI5Niw0MCBAQCB2b2lkIFNjcm9sbGluZ1RyZWVO
b2RlTWFjOjp1cGRhdGVNYWluRnJhbWVQaW5TdGF0ZShjb25zdCBJbnRQb2ludCYgc2Nyb2xsUG9z
aXRpbwogICAgIHNjcm9sbGluZ1RyZWUoKS0+c2V0TWFpbkZyYW1lUGluU3RhdGUocGlubmVkVG9U
aGVMZWZ0LCBwaW5uZWRUb1RoZVJpZ2h0KTsKIH0KIAordm9pZCBTY3JvbGxpbmdUcmVlTm9kZU1h
Yzo6bG9nRXhwb3NlZFVuZmlsbGVkQXJlYSgpCit7CisgICAgUmVnaW9uIHBhaW50ZWRUaWxlQ292
ZXJlZFZpc2libGVSZWdpb247CisgICAgSW50UG9pbnQgcG9zaXRpb24gPSBzY3JvbGxQb3NpdGlv
bigpOworCisgICAgRGVxdWU8Q0FMYXllcio+IGxheWVyUXVldWU7CisgICAgbGF5ZXJRdWV1ZS5h
cHBlbmQobV9zY3JvbGxMYXllci5nZXQoKSk7CisKKyAgICB3aGlsZSghbGF5ZXJRdWV1ZS5pc0Vt
cHR5KCkpIHsKKyAgICAgICAgQ0FMYXllciogbGF5ZXIgPSBsYXllclF1ZXVlLnRha2VGaXJzdCgp
OworCisgICAgICAgIE5TQXJyYXkqIHN1YmxheWVycyA9IFtbbGF5ZXIgc3VibGF5ZXJzXSBjb3B5
XTsKKyAgICAgICAgZm9yIChDQUxheWVyKiBzdWJsYXllciBpbiBzdWJsYXllcnMpCisgICAgICAg
ICAgICBsYXllclF1ZXVlLmFwcGVuZChzdWJsYXllcik7CisKKyAgICAgICAgaWYgKCFbbGF5ZXIg
aXNLaW5kT2ZDbGFzczpbV2ViVGlsZUxheWVyIGNsYXNzXV0pCisgICAgICAgICAgICBjb250aW51
ZTsKKworICAgICAgICBXZWJUaWxlTGF5ZXIqIHdlYlRpbGVMYXllciA9IHN0YXRpY19jYXN0PFdl
YlRpbGVMYXllcio+KGxheWVyKTsKKworICAgICAgICBJbnRSZWN0IHZpc2libGVQYXJ0KENHUmVj
dE9mZnNldCh3ZWJUaWxlTGF5ZXIuZnJhbWUsIC1wb3NpdGlvbi54KCksIC1wb3NpdGlvbi55KCkp
KTsKKyAgICAgICAgdmlzaWJsZVBhcnQuaW50ZXJzZWN0KHZpZXdwb3J0UmVjdCgpKTsKKworICAg
ICAgICBpZiAoIXZpc2libGVQYXJ0LmlzRW1wdHkoKSAmJiBbd2ViVGlsZUxheWVyIHJlcGFpbnRD
b3VudF0pCisgICAgICAgICAgICBwYWludGVkVGlsZUNvdmVyZWRWaXNpYmxlUmVnaW9uLnVuaXRl
KHZpc2libGVQYXJ0KTsKKyAgICB9CisKKyAgICBSZWdpb24gdW5jb3ZlcmVkUmVnaW9uKHZpZXdw
b3J0UmVjdCgpKTsKKyAgICB1bmNvdmVyZWRSZWdpb24uc3VidHJhY3QocGFpbnRlZFRpbGVDb3Zl
cmVkVmlzaWJsZVJlZ2lvbik7CisKKyAgICBpZiAoIXVuY292ZXJlZFJlZ2lvbi5pc0VtcHR5KCkp
CisgICAgICAgIHByaW50ZigiU0NST0xMSU5HOiBFeHBvc2VkIHRpbGVsZXNzIGFyZWEuIFRpbWU6
ICVmIFVuZmlsbGVkIFBpeGVsczogJXVcbiIsIFdURjo6Y3VycmVudFRpbWUoKSwgdW5jb3ZlcmVk
UmVnaW9uLnRvdGFsQXJlYSgpKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5k
aWYgLy8gRU5BQkxFKFRIUkVBREVEX1NDUk9MTElORykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL1RpbGVkQmFja2luZy5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvVGlsZWRCYWNraW5nLmgKaW5kZXggYWNkY2Y1ZS4uMjQ3MjJmZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvVGlsZWRCYWNraW5nLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvVGlsZWRCYWNraW5nLmgKQEAg
LTMyLDExICszMiwyMCBAQCBjbGFzcyBJbnRSZWN0OwogCiBjbGFzcyBUaWxlZEJhY2tpbmcgewog
cHVibGljOgorICAgIFRpbGVkQmFja2luZygpCisgICAgICAgIDogbV9zY3JvbGxpbmdQZXJmb3Jt
YW5jZUxvZ2dpbmdFbmFibGVkKDApCisgICAgeyB9CiAgICAgdmlydHVhbCB+VGlsZWRCYWNraW5n
KCkgeyB9CiAKICAgICB2aXJ0dWFsIHZvaWQgdmlzaWJsZVJlY3RDaGFuZ2VkKGNvbnN0IEludFJl
Y3QmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHNldElzSW5XaW5kb3coYm9vbCkgPSAwOwogICAg
IHZpcnR1YWwgdm9pZCBzZXRDYW5IYXZlU2Nyb2xsYmFycyhib29sKSA9IDA7CisKKyAgICB2b2lk
IHNldFNjcm9sbGluZ1BlcmZvcm1hbmNlTG9nZ2luZ0VuYWJsZWQoYm9vbCBmbGFnKSAgeyBtX3Nj
cm9sbGluZ1BlcmZvcm1hbmNlTG9nZ2luZ0VuYWJsZWQgPSBmbGFnOyB9CisgICAgYm9vbCBzY3Jv
bGxpbmdQZXJmb3JtYW5jZUxvZ2dpbmdFbmFibGVkKCkgeyByZXR1cm4gbV9zY3JvbGxpbmdQZXJm
b3JtYW5jZUxvZ2dpbmdFbmFibGVkOyB9CisKK3ByaXZhdGU6CisgICAgYm9vbCBtX3Njcm9sbGlu
Z1BlcmZvcm1hbmNlTG9nZ2luZ0VuYWJsZWQ7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9tYWMvVGls
ZUNhY2hlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9tYWMvVGlsZUNh
Y2hlLmgKaW5kZXggNjFmMzA1MC4uZTA3ZmE0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2EvbWFjL1RpbGVDYWNoZS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NhL21hYy9UaWxlQ2FjaGUuaApAQCAtNjgsNiArNjgsOSBAQCBw
dWJsaWM6CiAgICAgdm9pZCBzZXRUaWxlRGVidWdCb3JkZXJXaWR0aChmbG9hdCk7CiAgICAgdm9p
ZCBzZXRUaWxlRGVidWdCb3JkZXJDb2xvcihDR0NvbG9yUmVmKTsKIAorICAgIEludFJlY3Qgdmlz
aWJsZVJlY3QoKSB7IHJldHVybiBtX3Zpc2libGVSZWN0OyB9CisgICAgdW5zaWduZWQgYmxhbmtQ
aXhlbENvdW50KCk7CisKIHByaXZhdGU6CiAgICAgVGlsZUNhY2hlKFdlYlRpbGVDYWNoZUxheWVy
KiwgY29uc3QgSW50U2l6ZSYgdGlsZVNpemUpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9tYWMvVGlsZUNhY2hlLm1tIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2EvbWFjL1RpbGVDYWNoZS5tbQppbmRleCBjYWVmMDc0Li5kNWMw
MGVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9tYWMv
VGlsZUNhY2hlLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL21h
Yy9UaWxlQ2FjaGUubW0KQEAgLTI4LDYgKzI4LDcgQEAKIAogI2ltcG9ydCAiSW50UmVjdC5oIgog
I2ltcG9ydCAiUGxhdGZvcm1DQUxheWVyLmgiCisjaW1wb3J0ICJSZWdpb24uaCIKICNpbXBvcnQg
IldlYkxheWVyLmgiCiAjaW1wb3J0ICJXZWJUaWxlQ2FjaGVMYXllci5oIgogI2ltcG9ydCAiV2Vi
VGlsZUxheWVyLmgiCkBAIC0zMTEsNiArMzEyLDI2IEBAIHZvaWQgVGlsZUNhY2hlOjp0aWxlUmV2
YWxpZGF0aW9uVGltZXJGaXJlZChUaW1lcjxUaWxlQ2FjaGU+KikKICAgICByZXZhbGlkYXRlVGls
ZXMoKTsKIH0KIAordW5zaWduZWQgVGlsZUNhY2hlOjpibGFua1BpeGVsQ291bnQoKQoreworICAg
IFJlZ2lvbiBwYWludGVkVGlsZUNvdmVyZWRWaXNpYmxlUmVnaW9uOworCisgICAgZm9yIChUaWxl
TWFwOjppdGVyYXRvciBpdCA9IG1fdGlsZXMuYmVnaW4oKSwgZW5kID0gbV90aWxlcy5lbmQoKTsg
aXQgIT0gZW5kOyArK2l0KSB7CisgICAgICAgIFJldGFpblB0cjxXZWJUaWxlTGF5ZXI+JiB0aWxl
TGF5ZXIgPSBpdC0+c2Vjb25kOworCisgICAgICAgIEludFJlY3QgdmlzaWJsZVBhcnQoW3RpbGVM
YXllci5nZXQoKSBmcmFtZV0pOworICAgICAgICB2aXNpYmxlUGFydC5pbnRlcnNlY3QobV92aXNp
YmxlUmVjdCk7CisKKyAgICAgICAgaWYoIXZpc2libGVQYXJ0LmlzRW1wdHkoKSAmJiBbdGlsZUxh
eWVyLmdldCgpIHJlcGFpbnRDb3VudF0pCisgICAgICAgICAgICBwYWludGVkVGlsZUNvdmVyZWRW
aXNpYmxlUmVnaW9uLnVuaXRlKHZpc2libGVQYXJ0KTsKKyAgICB9CisKKyAgICBSZWdpb24gdW5j
b3ZlcmVkUmVnaW9uKG1fdmlzaWJsZVJlY3QpOworICAgIHVuY292ZXJlZFJlZ2lvbi5zdWJ0cmFj
dChwYWludGVkVGlsZUNvdmVyZWRWaXNpYmxlUmVnaW9uKTsKKworICAgIHJldHVybiB1bmNvdmVy
ZWRSZWdpb24udG90YWxBcmVhKCk7Cit9CisKIHZvaWQgVGlsZUNhY2hlOjpyZXZhbGlkYXRlVGls
ZXMoKQogewogICAgIC8vIElmIHRoZSB1bmRlcmx5aW5nIFBsYXRmb3JtTGF5ZXIgaGFzIGJlZW4g
ZGVzdHJveWVkLCBidXQgdGhlIFdlYlRpbGVDYWNoZUxheWVyIGhhc24ndApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvbWFjL1dlYlRpbGVMYXllci5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvbWFjL1dlYlRpbGVMYXllci5oCmlu
ZGV4IDU3N2UzNGEuLjRhMmQ1YzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NhL21hYy9XZWJUaWxlTGF5ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jYS9tYWMvV2ViVGlsZUxheWVyLmgKQEAgLTM3LDYgKzM3LDcgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogCiAtICh2b2lkKXNldFRpbGVDYWNoZTooV2ViQ29yZTo6VGlsZUNh
Y2hlKil0aWxlQ2FjaGU7CiAtICh1bnNpZ25lZClpbmNyZW1lbnRSZXBhaW50Q291bnQ7CistICh1
bnNpZ25lZClyZXBhaW50Q291bnQ7CiBAZW5kCiAKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvbWFjL1dlYlRpbGVMYXllci5tbSBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL21hYy9XZWJUaWxlTGF5ZXIubW0KaW5kZXggNmY3Yzg1
Yy4uNjBlOGMyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2EvbWFjL1dlYlRpbGVMYXllci5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jYS9tYWMvV2ViVGlsZUxheWVyLm1tCkBAIC0yNyw2ICsyNyw3IEBACiAjaW1wb3J0ICJX
ZWJUaWxlTGF5ZXIuaCIKIAogI2ltcG9ydCAiVGlsZUNhY2hlLmgiCisjaW1wb3J0IDx3dGYvQ3Vy
cmVudFRpbWUuaD4KICNpbXBvcnQgPHd0Zi9VbnVzZWRQYXJhbS5oPgogCiB1c2luZyBuYW1lc3Bh
Y2UgV2ViQ29yZTsKQEAgLTQzLDggKzQ0LDEyIEBAIC0gKGlkPENBQWN0aW9uPilhY3Rpb25Gb3JL
ZXk6KE5TU3RyaW5nICopa2V5CiAKIC0gKHZvaWQpZHJhd0luQ29udGV4dDooQ0dDb250ZXh0UmVm
KWNvbnRleHQKIHsKLSAgICBpZiAoX3RpbGVDYWNoZSkKKyAgICBpZiAoX3RpbGVDYWNoZSkgewog
ICAgICAgICBfdGlsZUNhY2hlLT5kcmF3TGF5ZXIoc2VsZiwgY29udGV4dCk7CisKKyAgICAgICAg
aWYgKF90aWxlQ2FjaGUtPnNjcm9sbGluZ1BlcmZvcm1hbmNlTG9nZ2luZ0VuYWJsZWQoKSkKKyAg
ICAgICAgICAgIFtzZWxmIGxvZ0ZpbGxlZEZyZXNoVGlsZV07CisgICAgfQogfQogCiAtICh2b2lk
KXNldFRpbGVDYWNoZTooV2ViQ29yZTo6VGlsZUNhY2hlKil0aWxlQ2FjaGUKQEAgLTU3LDUgKzYy
LDE5IEBAIC0gKHVuc2lnbmVkKWluY3JlbWVudFJlcGFpbnRDb3VudAogICAgIHJldHVybiArK19y
ZXBhaW50Q291bnQ7CiB9CiAKKy0gKHVuc2lnbmVkKXJlcGFpbnRDb3VudAoreworICAgIHJldHVy
biBfcmVwYWludENvdW50OworfQorCistICh2b2lkKWxvZ0ZpbGxlZEZyZXNoVGlsZQoreworICAg
IEludFJlY3QgdmlzaWJsZVBhcnQoZW5jbG9zaW5nSW50UmVjdChbc2VsZiBmcmFtZV0pKTsKKyAg
ICB2aXNpYmxlUGFydC5pbnRlcnNlY3QoX3RpbGVDYWNoZS0+dmlzaWJsZVJlY3QoKSk7CisKKyAg
ICBpZihbc2VsZiByZXBhaW50Q291bnRdID09IDEgJiYgIXZpc2libGVQYXJ0LmlzRW1wdHkoKSkK
KyAgICAgICAgcHJpbnRmKCJTQ1JPTExJTkc6IEZpbGxlZCB2aXNpYmxlIGZyZXNoIHRpbGUuIFRp
bWU6ICVmIFVuZmlsbGVkIFBpeGVsczogJXVcbiIsIFdURjo6Y3VycmVudFRpbWUoKSwgX3RpbGVD
YWNoZS0+YmxhbmtQaXhlbENvdW50KCkpOworfQorCiBAZW5kCiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHAKaW5kZXggZTExMGE0ZC4uYzVmYWNi
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2lu
Zy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5j
cHAKQEAgLTUyLDYgKzUyLDcgQEAKICNpbmNsdWRlICJSZW5kZXJWaWRlby5oIgogI2luY2x1ZGUg
IlJlbmRlclZpZXcuaCIKICNpbmNsdWRlICJTY3JvbGxpbmdDb29yZGluYXRvci5oIgorI2luY2x1
ZGUgIlNldHRpbmdzLmgiCiAjaW5jbHVkZSAiU3R5bGVSZXNvbHZlci5oIgogI2luY2x1ZGUgIlRp
bGVkQmFja2luZy5oIgogCkBAIC0xMjEsOCArMTIyLDExIEBAIFJlbmRlckxheWVyQmFja2luZzo6
UmVuZGVyTGF5ZXJCYWNraW5nKFJlbmRlckxheWVyKiBsYXllcikKICAgICBpZiAobV91c2luZ1Rp
bGVkQ2FjaGVMYXllcikgewogICAgICAgICBpZiAoUGFnZSogcGFnZSA9IHJlbmRlcmVyKCktPmZy
YW1lKCktPnBhZ2UoKSkgewogICAgICAgICAgICAgaWYgKFRpbGVkQmFja2luZyogdGlsZWRCYWNr
aW5nID0gbV9ncmFwaGljc0xheWVyLT50aWxlZEJhY2tpbmcoKSkgeworICAgICAgICAgICAgICAg
IEZyYW1lKiBmcmFtZSA9IHJlbmRlcmVyKCktPmZyYW1lKCk7CisKICAgICAgICAgICAgICAgICB0
aWxlZEJhY2tpbmctPnNldElzSW5XaW5kb3cocGFnZS0+aXNPbnNjcmVlbigpKTsKLSAgICAgICAg
ICAgICAgICB0aWxlZEJhY2tpbmctPnNldENhbkhhdmVTY3JvbGxiYXJzKHJlbmRlcmVyKCktPmZy
YW1lKCktPnZpZXcoKS0+Y2FuSGF2ZVNjcm9sbGJhcnMoKSk7CisgICAgICAgICAgICAgICAgdGls
ZWRCYWNraW5nLT5zZXRDYW5IYXZlU2Nyb2xsYmFycyhmcmFtZS0+dmlldygpLT5jYW5IYXZlU2Ny
b2xsYmFycygpKTsKKyAgICAgICAgICAgICAgICB0aWxlZEJhY2tpbmctPnNldFNjcm9sbGluZ1Bl
cmZvcm1hbmNlTG9nZ2luZ0VuYWJsZWQoZnJhbWUtPnNldHRpbmdzKCkgJiYgZnJhbWUtPnNldHRp
bmdzKCktPnNjcm9sbGluZ1BlcmZvcm1hbmNlTG9nZ2luZ0VuYWJsZWQoKSk7CiAgICAgICAgICAg
ICB9CiAgICAgICAgIH0KICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VM
b2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggZWQ2MTgwNS4uN2YyOTZhYiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwpAQCAtMSwzICsxLDI3IEBACisyMDEyLTA4LTA4ICBUaW0gSG9ydG9uICA8dGltb3Ro
eV9ob3J0b25AYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBvcHRpb25hbCBkZWJ1ZyBsb2dnaW5n
IGZvciB0aWxlZCBzY3JvbGxpbmcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTkzMzA1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgQWRkIGEgbmV3IGJvb2xlYW4gcHJlZmVyZW5jZSwgU2Nyb2xsaW5nUGVyZm9y
bWFuY2VMb2dnaW5nRW5hYmxlZCwgd2hpY2ggd2lsbCBiZSB1c2VkIHRvIHRvZ2dsZQorICAgICAg
ICB0aGUgV2ViQ29yZSBwYXJ0cyBvZiB0aGlzIGNoYW5nZS4KKworICAgICAgICAqIFNoYXJlZC9X
ZWJQcmVmZXJlbmNlc1N0b3JlLmg6IEFkZCBTY3JvbGxpbmdQZXJmb3JtYW5jZUxvZ2dpbmdFbmFi
bGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS1ByZWZlcmVuY2VzLmNwcDoKKyAgICAg
ICAgKFdLUHJlZmVyZW5jZXNTZXRTY3JvbGxpbmdQZXJmb3JtYW5jZUxvZ2dpbmdFbmFibGVkKTog
QWRkZWQuCisgICAgICAgIChXS1ByZWZlcmVuY2VzR2V0U2Nyb2xsaW5nUGVyZm9ybWFuY2VMb2dn
aW5nRW5hYmxlZCk6IEFkZGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS1ByZWZlcmVu
Y2VzUHJpdmF0ZS5oOiBBZGQgZ2V0dGVycyBhbmQgc2V0dGVycyBmb3IgU2Nyb2xsaW5nUGVyZm9y
bWFuY2VMb2dnaW5nRW5hYmxlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFn
ZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OldlYlBhZ2UpOiBBZGQgU2Nyb2xsaW5n
UGVyZm9ybWFuY2VMb2dnaW5nRW5hYmxlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6dXBk
YXRlUHJlZmVyZW5jZXMpOiBBZGQgU2Nyb2xsaW5nUGVyZm9ybWFuY2VMb2dnaW5nRW5hYmxlZC4K
KyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6c2V0U2Nyb2xsaW5nUGVyZm9ybWFuY2VMb2dnaW5n
RW5hYmxlZCk6IFByb3BhZ2F0ZSBzZXR0aW5ncyBjaGFuZ2VzIHRocm91Z2ggdG8gRnJhbWVWaWV3
LgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmg6CisgICAgICAgIChXZWJL
aXQ6OldlYlBhZ2U6OnNjcm9sbGluZ1BlcmZvcm1hbmNlTG9nZ2luZ0VuYWJsZWQpOiBBZGQgYSBn
ZXR0ZXIgZm9yIHRoZSBzZXR0aW5nIHNvIHRoYXQgVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0Fy
ZWEgY2FuIGFjY2VzcyBpdC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1RpbGVk
Q29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhLm1tOgorICAgICAgICAoV2ViS2l0OjpUaWxlZENvcmVB
bmltYXRpb25EcmF3aW5nQXJlYTo6dXBkYXRlUHJlZmVyZW5jZXMpOiBQYXNzIFNjcm9sbGluZ1Bl
cmZvcm1hbmNlTG9nZ2luZ0VuYWJsZWQgZG93biBpbnRvIHRoZSBzY3JvbGxpbmcgdGhyZWFkLgor
CiAyMDEyLTA4LTA2ICBTaGVyaWZmIEJvdCAgPHdlYmtpdC5yZXZpZXcuYm90QGdtYWlsLmNvbT4K
IAogICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByMTI0ODE2LgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvU2hhcmVkL1dlYlByZWZlcmVuY2VzU3RvcmUuaCBiL1NvdXJjZS9XZWJL
aXQyL1NoYXJlZC9XZWJQcmVmZXJlbmNlc1N0b3JlLmgKaW5kZXggNmZjOTViNS4uYWYwODEyZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYlByZWZlcmVuY2VzU3RvcmUuaAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViUHJlZmVyZW5jZXNTdG9yZS5oCkBAIC0xMTcs
NiArMTE3LDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAgICAgbWFjcm8oQXN5bmNocm9ub3VzUGx1
Z2luSW5pdGlhbGl6YXRpb25FbmFibGVkLCBhc3luY2hyb25vdXNQbHVnaW5Jbml0aWFsaXphdGlv
bkVuYWJsZWQsIEJvb2wsIGJvb2wsIGZhbHNlKSBcCiAgICAgbWFjcm8oQXN5bmNocm9ub3VzUGx1
Z2luSW5pdGlhbGl6YXRpb25FbmFibGVkRm9yQWxsUGx1Z2lucywgYXN5bmNocm9ub3VzUGx1Z2lu
SW5pdGlhbGl6YXRpb25FbmFibGVkRm9yQWxsUGx1Z2lucywgQm9vbCwgYm9vbCwgZmFsc2UpIFwK
ICAgICBtYWNybyhBcnRpZmljaWFsUGx1Z2luSW5pdGlhbGl6YXRpb25EZWxheUVuYWJsZWQsIGFy
dGlmaWNpYWxQbHVnaW5Jbml0aWFsaXphdGlvbkRlbGF5RW5hYmxlZCwgQm9vbCwgYm9vbCwgZmFs
c2UpIFwKKyAgICBtYWNybyhTY3JvbGxpbmdQZXJmb3JtYW5jZUxvZ2dpbmdFbmFibGVkLCBzY3Jv
bGxpbmdQZXJmb3JtYW5jZUxvZ2dpbmdFbmFibGVkLCBCb29sLCBib29sLCBmYWxzZSkgXAogICAg
IG1hY3JvKFRoaXJkUGFydHlTdG9yYWdlQmxvY2tpbmdFbmFibGVkLCB0aGlyZFBhcnR5U3RvcmFn
ZUJsb2NraW5nRW5hYmxlZCwgQm9vbCwgYm9vbCwgZmFsc2UpIFwKICAgICBcCiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1ByZWZlcmVuY2VzLmNwcCBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1ByZWZlcmVuY2VzLmNwcAppbmRleCBkNTgz
N2ZjLi42NmQ0ZGNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0Mv
V0tQcmVmZXJlbmNlcy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dL
UHJlZmVyZW5jZXMuY3BwCkBAIC04NzMsMyArODczLDEzIEBAIGJvb2wgV0tQcmVmZXJlbmNlc0dl
dEFydGlmaWNpYWxQbHVnaW5Jbml0aWFsaXphdGlvbkRlbGF5RW5hYmxlZChXS1ByZWZlcmVuY2Vz
UmVmCiB7CiAgICAgcmV0dXJuIHRvSW1wbChwcmVmZXJlbmNlc1JlZiktPmFydGlmaWNpYWxQbHVn
aW5Jbml0aWFsaXphdGlvbkRlbGF5RW5hYmxlZCgpOwogfQorCit2b2lkIFdLUHJlZmVyZW5jZXNT
ZXRTY3JvbGxpbmdQZXJmb3JtYW5jZUxvZ2dpbmdFbmFibGVkKFdLUHJlZmVyZW5jZXNSZWYgcHJl
ZmVyZW5jZXNSZWYsIGJvb2wgZW5hYmxlZCkKK3sKKyAgICB0b0ltcGwocHJlZmVyZW5jZXNSZWYp
LT5zZXRTY3JvbGxpbmdQZXJmb3JtYW5jZUxvZ2dpbmdFbmFibGVkKGVuYWJsZWQpOworfQorCiti
b29sIFdLUHJlZmVyZW5jZXNHZXRTY3JvbGxpbmdQZXJmb3JtYW5jZUxvZ2dpbmdFbmFibGVkKFdL
UHJlZmVyZW5jZXNSZWYgcHJlZmVyZW5jZXNSZWYpCit7CisgICAgcmV0dXJuIHRvSW1wbChwcmVm
ZXJlbmNlc1JlZiktPnNjcm9sbGluZ1BlcmZvcm1hbmNlTG9nZ2luZ0VuYWJsZWQoKTsKK30KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1ByZWZlcmVuY2VzUHJp
dmF0ZS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLUHJlZmVyZW5jZXNQcml2
YXRlLmgKaW5kZXggMmJiZjhkMS4uYjQ2OWQ3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9DL1dLUHJlZmVyZW5jZXNQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9DL1dLUHJlZmVyZW5jZXNQcml2YXRlLmgKQEAgLTIwMyw2ICsyMDMs
MTAgQEAgV0tfRVhQT1JUIGJvb2wgV0tQcmVmZXJlbmNlc0dldEFzeW5jaHJvbm91c1BsdWdpbklu
aXRpYWxpemF0aW9uRW5hYmxlZEZvckFsbFBsdWcKIFdLX0VYUE9SVCB2b2lkIFdLUHJlZmVyZW5j
ZXNTZXRBcnRpZmljaWFsUGx1Z2luSW5pdGlhbGl6YXRpb25EZWxheUVuYWJsZWQoV0tQcmVmZXJl
bmNlc1JlZiBwcmVmZXJlbmNlc1JlZiwgYm9vbCBlbmFibGVkKTsKIFdLX0VYUE9SVCBib29sIFdL
UHJlZmVyZW5jZXNHZXRBcnRpZmljaWFsUGx1Z2luSW5pdGlhbGl6YXRpb25EZWxheUVuYWJsZWQo
V0tQcmVmZXJlbmNlc1JlZiBwcmVmZXJlbmNlc1JlZik7CiAKKy8vIERlZmF1bHRzIHRvIGZhbHNl
CitXS19FWFBPUlQgdm9pZCBXS1ByZWZlcmVuY2VzU2V0U2Nyb2xsaW5nUGVyZm9ybWFuY2VMb2dn
aW5nRW5hYmxlZChXS1ByZWZlcmVuY2VzUmVmIHByZWZlcmVuY2VzUmVmLCBib29sIGVuYWJsZWQp
OworV0tfRVhQT1JUIGJvb2wgV0tQcmVmZXJlbmNlc0dldFNjcm9sbGluZ1BlcmZvcm1hbmNlTG9n
Z2luZ0VuYWJsZWQoV0tQcmVmZXJlbmNlc1JlZiBwcmVmZXJlbmNlc1JlZik7CisKIFdLX0VYUE9S
VCB2b2lkIFdLUHJlZmVyZW5jZXNSZXNldFRlc3RSdW5uZXJPdmVycmlkZXMoV0tQcmVmZXJlbmNl
c1JlZiBwcmVmZXJlbmNlc1JlZik7CiAKICNpZmRlZiBfX2NwbHVzcGx1cwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwIGIvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCmluZGV4IDU2NTAwN2YuLmE1MjQ0
NDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdl
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAK
QEAgLTIxMCw2ICsyMTAsNyBAQCBXZWJQYWdlOjpXZWJQYWdlKHVpbnQ2NF90IHBhZ2VJRCwgY29u
c3QgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyYgcGFyYW1ldGVycykKICAgICAsIG1fYXN5bmNo
cm9ub3VzUGx1Z2luSW5pdGlhbGl6YXRpb25FbmFibGVkKGZhbHNlKQogICAgICwgbV9hc3luY2hy
b25vdXNQbHVnaW5Jbml0aWFsaXphdGlvbkVuYWJsZWRGb3JBbGxQbHVnaW5zKGZhbHNlKQogICAg
ICwgbV9hcnRpZmljaWFsUGx1Z2luSW5pdGlhbGl6YXRpb25EZWxheUVuYWJsZWQoZmFsc2UpCisg
ICAgLCBtX3Njcm9sbGluZ1BlcmZvcm1hbmNlTG9nZ2luZ0VuYWJsZWQoZmFsc2UpCiAjaWYgUExB
VEZPUk0oTUFDKQogICAgICwgbV93aW5kb3dJc1Zpc2libGUoZmFsc2UpCiAgICAgLCBtX2lzU21h
cnRJbnNlcnREZWxldGVFbmFibGVkKHBhcmFtZXRlcnMuaXNTbWFydEluc2VydERlbGV0ZUVuYWJs
ZWQpCkBAIC0xOTgzLDYgKzE5ODQsOCBAQCB2b2lkIFdlYlBhZ2U6OnVwZGF0ZVByZWZlcmVuY2Vz
KGNvbnN0IFdlYlByZWZlcmVuY2VzU3RvcmUmIHN0b3JlKQogICAgIG1fYXN5bmNocm9ub3VzUGx1
Z2luSW5pdGlhbGl6YXRpb25FbmFibGVkRm9yQWxsUGx1Z2lucyA9IHN0b3JlLmdldEJvb2xWYWx1
ZUZvcktleShXZWJQcmVmZXJlbmNlc0tleTo6YXN5bmNocm9ub3VzUGx1Z2luSW5pdGlhbGl6YXRp
b25FbmFibGVkRm9yQWxsUGx1Z2luc0tleSgpKTsKICAgICBtX2FydGlmaWNpYWxQbHVnaW5Jbml0
aWFsaXphdGlvbkRlbGF5RW5hYmxlZCA9IHN0b3JlLmdldEJvb2xWYWx1ZUZvcktleShXZWJQcmVm
ZXJlbmNlc0tleTo6YXJ0aWZpY2lhbFBsdWdpbkluaXRpYWxpemF0aW9uRGVsYXlFbmFibGVkS2V5
KCkpOwogCisgICAgbV9zY3JvbGxpbmdQZXJmb3JtYW5jZUxvZ2dpbmdFbmFibGVkID0gc3RvcmUu
Z2V0Qm9vbFZhbHVlRm9yS2V5KFdlYlByZWZlcmVuY2VzS2V5OjpzY3JvbGxpbmdQZXJmb3JtYW5j
ZUxvZ2dpbmdFbmFibGVkS2V5KCkpOworCiAgICAgLy8gRklYTUU6IFRoaXMgc2hvdWxkIGJlIGdl
bmVyYXRlZCBmcm9tIG1hY3JvIGV4cGFuc2lvbiBmb3IgYWxsIHByZWZlcmVuY2VzLAogICAgIC8v
IGJ1dCB3ZSBjdXJyZW50bHkgZG9uJ3QgbWF0Y2ggdGhlIG5hbWluZyBvZiBXZWJDb3JlIGV4YWN0
bHkgc28gd2UgYXJlCiAgICAgLy8gaGFuZHJvbGxpbmcgdGhlIGJvb2xlYW4gYW5kIGludGVnZXIg
cHJlZmVyZW5jZXMgdW50aWwgdGhhdCBpcyBmaXhlZC4KQEAgLTIxMDAsNiArMjEwMyw4IEBAIHZv
aWQgV2ViUGFnZTo6dXBkYXRlUHJlZmVyZW5jZXMoY29uc3QgV2ViUHJlZmVyZW5jZXNTdG9yZSYg
c3RvcmUpCiAKICAgICBzZXR0aW5ncy0+c2V0RGlhZ25vc3RpY0xvZ2dpbmdFbmFibGVkKHN0b3Jl
LmdldEJvb2xWYWx1ZUZvcktleShXZWJQcmVmZXJlbmNlc0tleTo6ZGlhZ25vc3RpY0xvZ2dpbmdF
bmFibGVkS2V5KCkpKTsKIAorICAgIHNldHRpbmdzLT5zZXRTY3JvbGxpbmdQZXJmb3JtYW5jZUxv
Z2dpbmdFbmFibGVkKG1fc2Nyb2xsaW5nUGVyZm9ybWFuY2VMb2dnaW5nRW5hYmxlZCk7CisKICAg
ICBwbGF0Zm9ybVByZWZlcmVuY2VzRGlkQ2hhbmdlKHN0b3JlKTsKIAogICAgIGlmIChtX2RyYXdp
bmdBcmVhKQpAQCAtMzI5Myw0ICszMjk4LDE1IEBAIHZvaWQgV2ViUGFnZTo6c2V0VmlzaWJpbGl0
eVN0YXRlKGludCB2aXNpYmlsaXR5U3RhdGUsIGJvb2wgaXNJbml0aWFsU3RhdGUpCiB9CiAjZW5k
aWYKIAordm9pZCBXZWJQYWdlOjpzZXRTY3JvbGxpbmdQZXJmb3JtYW5jZUxvZ2dpbmdFbmFibGVk
KGJvb2wgZW5hYmxlZCkKK3sKKyAgICBtX3Njcm9sbGluZ1BlcmZvcm1hbmNlTG9nZ2luZ0VuYWJs
ZWQgPSBlbmFibGVkOworCisgICAgRnJhbWVWaWV3KiBmcmFtZVZpZXcgPSBtX21haW5GcmFtZS0+
Y29yZUZyYW1lKCktPnZpZXcoKTsKKyAgICBpZiAoIWZyYW1lVmlldykKKyAgICAgICAgcmV0dXJu
OworCisgICAgZnJhbWVWaWV3LT5zZXRTY3JvbGxpbmdQZXJmb3JtYW5jZUxvZ2dpbmdFbmFibGVk
KGVuYWJsZWQpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmggYi9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCmluZGV4IDI1NmI3OWYuLjE1MzYwMjMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKKysrIGIv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaApAQCAtNTc3LDYgKzU3
Nyw5IEBAIHB1YmxpYzoKICAgICBib29sIGFydGlmaWNpYWxQbHVnaW5Jbml0aWFsaXphdGlvbkRl
bGF5RW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1fYXJ0aWZpY2lhbFBsdWdpbkluaXRpYWxpemF0
aW9uRGVsYXlFbmFibGVkOyB9CiAgICAgdm9pZCBzZXRBcnRpZmljaWFsUGx1Z2luSW5pdGlhbGl6
YXRpb25EZWxheUVuYWJsZWQoYm9vbCBlbmFibGVkKSB7IG1fYXJ0aWZpY2lhbFBsdWdpbkluaXRp
YWxpemF0aW9uRGVsYXlFbmFibGVkID0gZW5hYmxlZDsgfQogCisgICAgYm9vbCBzY3JvbGxpbmdQ
ZXJmb3JtYW5jZUxvZ2dpbmdFbmFibGVkKCkgY29uc3QgeyByZXR1cm4gbV9zY3JvbGxpbmdQZXJm
b3JtYW5jZUxvZ2dpbmdFbmFibGVkOyB9CisgICAgdm9pZCBzZXRTY3JvbGxpbmdQZXJmb3JtYW5j
ZUxvZ2dpbmdFbmFibGVkKGJvb2wpOworCiBwcml2YXRlOgogICAgIFdlYlBhZ2UodWludDY0X3Qg
cGFnZUlELCBjb25zdCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzJik7CiAKQEAgLTc3MCw2ICs3
NzMsOCBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9hc3luY2hyb25vdXNQbHVnaW5Jbml0aWFsaXph
dGlvbkVuYWJsZWRGb3JBbGxQbHVnaW5zOwogICAgIGJvb2wgbV9hcnRpZmljaWFsUGx1Z2luSW5p
dGlhbGl6YXRpb25EZWxheUVuYWJsZWQ7CiAKKyAgICBib29sIG1fc2Nyb2xsaW5nUGVyZm9ybWFu
Y2VMb2dnaW5nRW5hYmxlZDsKKwogI2lmIFBMQVRGT1JNKE1BQykKICAgICAvLyBXaGV0aGVyIHRo
ZSBjb250YWluaW5nIHdpbmRvdyBpcyB2aXNpYmxlIG9yIG5vdC4KICAgICBib29sIG1fd2luZG93
SXNWaXNpYmxlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdl
L21hYy9UaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYS5tbSBiL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUGFnZS9tYWMvVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWEubW0KaW5k
ZXggNGRmZmI2ZS4uMjQzM2Q3NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJQYWdlL21hYy9UaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYS5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1RpbGVkQ29yZUFuaW1hdGlvbkRyYXdp
bmdBcmVhLm1tCkBAIC0yMTIsNyArMjEyLDEwIEBAIHZvaWQgVGlsZWRDb3JlQW5pbWF0aW9uRHJh
d2luZ0FyZWE6OnVwZGF0ZVByZWZlcmVuY2VzKCkKICAgICAgICAgbV9kZWJ1Z0luZm9MYXllciA9
IG51bGxwdHI7CiAgICAgfQogCisgICAgYm9vbCBzY3JvbGxpbmdQZXJmb3JtYW5jZUxvZ2dpbmdF
bmFibGVkID0gbV93ZWJQYWdlLT5zY3JvbGxpbmdQZXJmb3JtYW5jZUxvZ2dpbmdFbmFibGVkKCk7
CisKICAgICBTY3JvbGxpbmdUaHJlYWQ6OmRpc3BhdGNoKGJpbmQoJlNjcm9sbGluZ1RyZWU6OnNl
dERlYnVnUm9vdExheWVyLCBtX3dlYlBhZ2UtPmNvcmVQYWdlKCktPnNjcm9sbGluZ0Nvb3JkaW5h
dG9yKCktPnNjcm9sbGluZ1RyZWUoKSwgbV9kZWJ1Z0luZm9MYXllcikpOworICAgIFNjcm9sbGlu
Z1RocmVhZDo6ZGlzcGF0Y2goYmluZCgmU2Nyb2xsaW5nVHJlZTo6c2V0U2Nyb2xsaW5nUGVyZm9y
bWFuY2VMb2dnaW5nRW5hYmxlZCwgbV93ZWJQYWdlLT5jb3JlUGFnZSgpLT5zY3JvbGxpbmdDb29y
ZGluYXRvcigpLT5zY3JvbGxpbmdUcmVlKCksIHNjcm9sbGluZ1BlcmZvcm1hbmNlTG9nZ2luZ0Vu
YWJsZWQpKTsKIH0KIAogdm9pZCBUaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYTo6ZGlzcGF0
Y2hBZnRlckVuc3VyaW5nVXBkYXRlZFNjcm9sbFBvc2l0aW9uKGNvbnN0IEZ1bmN0aW9uPHZvaWQg
KCk+JiBmdW5jdGlvblJlZikK
</data>
<flag name="review"
          id="167179"
          type_id="1"
          status="-"
          setter="simon.fraser"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>157321</attachid>
            <date>2012-08-08 16:10:47 -0700</date>
            <delta_ts>2012-08-08 18:43:10 -0700</delta_ts>
            <desc>revised patch</desc>
            <filename>spl.diff</filename>
            <type>text/plain</type>
            <size>28591</size>
            <attacher name="Tim Horton">thorton</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA0NTY4NjcyLi5jYTk5ZDUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNzcg
QEAKKzIwMTItMDgtMDggIFRpbSBIb3J0b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+CisK
KyAgICAgICAgQWRkIG9wdGlvbmFsIGRlYnVnIGxvZ2dpbmcgZm9yIHRpbGVkIHNjcm9sbGluZwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTMzMDUKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgc2Nyb2xs
aW5nIHBlcmZvcm1hbmNlIGxvZ2dpbmcgdG8gU2Nyb2xsaW5nVHJlZU5vZGVNYWMgYW5kIFdlYlRp
bGVMYXllciwgd2hpY2ggd2lsbCBsb2cKKyAgICAgICAgdGhlIGFtb3VudCBvZiB1bnBhaW50ZWQg
YXJlYSBleHBvc2VkIGR1cmluZyBzY3JvbGxpbmcgYW5kIHBhaW50aW5nLCByZXNwZWN0aXZlbHku
CisKKyAgICAgICAgVGhlIGxvZ2dpbmcgb3V0cHV0IGxvb2tzIGxpa2UgdGhpczoKKworICAgICAg
ICAgICAgU0NST0xMSU5HOiBFeHBvc2VkIHRpbGVsZXNzIGFyZWEuIFRpbWU6IDEzNDQ0NjQ4NTAu
MTU0ODM5IFVuZmlsbGVkIFBpeGVsczogMTEyMjAwOAorICAgICAgICAgICAgU0NST0xMSU5HOiBG
aWxsZWQgdmlzaWJsZSBmcmVzaCB0aWxlLiBUaW1lOiAxMzQ0NDY0ODUwLjU3NTMwMyBVbmZpbGxl
ZCBQaXhlbHM6IDEwNzgyNzIKKyAgICAgICAgICAgIFNDUk9MTElORzogRmlsbGVkIHZpc2libGUg
ZnJlc2ggdGlsZS4gVGltZTogMTM0NDQ2NDg1MC42NzY1NjkgVW5maWxsZWQgUGl4ZWxzOiA4MjM4
MDgKKyAgICAgICAgICAgIFNDUk9MTElORzogRmlsbGVkIHZpc2libGUgZnJlc2ggdGlsZS4gVGlt
ZTogMTM0NDQ2NDg1MC43OTU4NzcgVW5maWxsZWQgUGl4ZWxzOiA1NjkzNDQKKyAgICAgICAgICAg
IFNDUk9MTElORzogRmlsbGVkIHZpc2libGUgZnJlc2ggdGlsZS4gVGltZTogMTM0NDQ2NDg1MC44
NDY5NDAgVW5maWxsZWQgUGl4ZWxzOiA1MjQyODgKKyAgICAgICAgICAgIFNDUk9MTElORzogRmls
bGVkIHZpc2libGUgZnJlc2ggdGlsZS4gVGltZTogMTM0NDQ2NDg1MC45ODQxMTMgVW5maWxsZWQg
UGl4ZWxzOiAyNjIxNDQKKyAgICAgICAgICAgIFNDUk9MTElORzogRmlsbGVkIHZpc2libGUgZnJl
c2ggdGlsZS4gVGltZTogMTM0NDQ2NDg1MS4wMjc5ODUgVW5maWxsZWQgUGl4ZWxzOiAwCisKKyAg
ICAgICAgTm8gbmV3IHRlc3RzLCBhcyB0aGlzIGlzIGp1c3QgZGVidWdnaW5nIGxvZ2dpbmcuCisK
KyAgICAgICAgKiBXZWJDb3JlLmV4cC5pbjoKKyAgICAgICAgKiBwYWdlL0ZyYW1lVmlldy5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVZpZXc6OnNldFNjcm9sbGluZ1BlcmZvcm1hbmNlTG9n
Z2luZ0VuYWJsZWQpOgorICAgICAgICBBZGRlZCBzZXRTY3JvbGxpbmdQZXJmb3JtYW5jZUxvZ2dp
bmdFbmFibGVkLCBwYXNzZXMgZmxhZyBpbnRvIFRpbGVkQmFja2luZy4KKworICAgICAgICAqIHBh
Z2UvRnJhbWVWaWV3Lmg6CisgICAgICAgICogcGFnZS9TZXR0aW5ncy5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpTZXR0aW5nczo6U2V0dGluZ3MpOgorICAgICAgICAoV2ViQ29yZTo6U2V0dGluZ3M6
OnNldFNjcm9sbGluZ1BlcmZvcm1hbmNlTG9nZ2luZ0VuYWJsZWQpOgorICAgICAgICBBZGRlZCBz
ZXRTY3JvbGxpbmdQZXJmb3JtYW5jZUxvZ2dpbmdFbmFibGVkLCBwYXNzZXMgZmxhZyBpbnRvIEZy
YW1lVmlldy4KKworICAgICAgICAqIHBhZ2UvU2V0dGluZ3MuaDoKKyAgICAgICAgKFdlYkNvcmU6
OlNldHRpbmdzOjpzY3JvbGxpbmdQZXJmb3JtYW5jZUxvZ2dpbmdFbmFibGVkKToKKyAgICAgICAg
KiBwYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNj
cm9sbGluZ1RyZWU6OlNjcm9sbGluZ1RyZWUpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5n
VHJlZTo6c2V0U2Nyb2xsaW5nUGVyZm9ybWFuY2VMb2dnaW5nRW5hYmxlZCk6CisgICAgICAgIChX
ZWJDb3JlOjpTY3JvbGxpbmdUcmVlOjpzY3JvbGxpbmdQZWZvcm1hbmNlTG9nZ2luZ0VuYWJsZWQp
OgorICAgICAgICBBZGRlZCBTY3JvbGxpbmdQZXJmb3JtYW5jZUxvZ2dpbmdFbmFibGVkIHNldHRl
ci9nZXR0ZXI7IHRoaXMgaXMgd2hlcmUgaXQncyBhY2Nlc3NlZCBmcm9tIFNjcm9sbGluZ1RyZWVO
b2RlTWFjLgorCisgICAgICAgICogcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZS5oOgorICAg
ICAgICAqIHBhZ2Uvc2Nyb2xsaW5nL21hYy9TY3JvbGxpbmdUcmVlTm9kZU1hYy5oOgorICAgICAg
ICAoU2Nyb2xsaW5nVHJlZU5vZGVNYWMpOgorICAgICAgICAqIHBhZ2Uvc2Nyb2xsaW5nL21hYy9T
Y3JvbGxpbmdUcmVlTm9kZU1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1RyZWVO
b2RlTWFjOjpzZXRTY3JvbGxQb3NpdGlvbik6CisgICAgICAgIFdoZW4gdXBkYXRpbmcgc2Nyb2xs
IHBvc2l0aW9uLCBjb25kaXRpb25hbGx5IGxvZyB0aGUgYW1vdW50IG9mIHVucGFpbnRlZCBhcmVh
IHRoYXQgd2FzIGp1c3QgZXhwb3NlZC4KKworICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nVHJl
ZU5vZGVNYWM6OmxvZ0V4cG9zZWRUaWxlbGVzc0FyZWEpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL1RpbGVkQmFja2luZy5oOgorICAgICAgICAoV2ViQ29yZTo6VGlsZWRCYWNraW5nOjpU
aWxlZEJhY2tpbmcpOgorICAgICAgICAoV2ViQ29yZTo6VGlsZWRCYWNraW5nOjpzZXRTY3JvbGxp
bmdQZXJmb3JtYW5jZUxvZ2dpbmdFbmFibGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlRpbGVkQmFj
a2luZzo6c2Nyb2xsaW5nUGVyZm9ybWFuY2VMb2dnaW5nRW5hYmxlZCk6CisgICAgICAgIEFkZGVk
IFNjcm9sbGluZ1BlcmZvcm1hbmNlTG9nZ2luZ0VuYWJsZWQgc2V0dGVyL2dldHRlcjsgdGhpcyBp
cyB3aGVyZSBpdCdzIGFjY2Vzc2VkIGZyb20gV2ViVGlsZUxheWVyLgorCisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvY2EvbWFjL1RpbGVDYWNoZS5oOgorICAgICAgICAoV2ViQ29yZTo6VGls
ZUNhY2hlOjp2aXNpYmxlUmVjdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2EvbWFj
L1RpbGVDYWNoZS5tbToKKyAgICAgICAgKFdlYkNvcmU6OlRpbGVDYWNoZTo6YmxhbmtQaXhlbENv
dW50KToKKyAgICAgICAgKFdlYkNvcmU6OlRpbGVDYWNoZTo6YmxhbmtQaXhlbENvdW50Rm9yVGls
ZXMpOgorICAgICAgICBDb21wdXRlIHRoZSBleHBvc2VkLCB1bnBhaW50ZWQgYXJlYSBvZiB0aGUg
dGlsZSBjYWNoZSBieSBpdGVyYXRpbmcgb3ZlciB0aGUgbGF5ZXJzLAorICAgICAgICBjaGVja2lu
ZyBpZiB0aGV5J3ZlIGJlZW4gcGFpbnRlZCwgYW5kIHN1YnRyYWN0aW5nIHBhaW50ZWQgbGF5ZXJz
IGZyb20gdGhlIHRvdGFsIHZpc2libGUgYXJlYS4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2NhL21hYy9XZWJUaWxlTGF5ZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9j
YS9tYWMvV2ViVGlsZUxheWVyLm1tOgorICAgICAgICAoLVtXZWJUaWxlTGF5ZXIgZHJhd0luQ29u
dGV4dDpdKToKKyAgICAgICAgKC1bV2ViVGlsZUxheWVyIHJlcGFpbnRDb3VudF0pOgorICAgICAg
ICAoLVtXZWJUaWxlTGF5ZXIgbG9nRmlsbGVkRnJlc2hUaWxlXSk6CisgICAgICAgIFdoZW4gcGFp
bnRpbmcgYSBXZWJUaWxlTGF5ZXIsIGNvbmRpdGlvbmFsbHkgbG9nIHRoZSBhbW91bnQgb2YgdW5w
YWludGVkIGFyZWEgcmVtYWluaW5nIGFmdGVyIHBhaW50aW5nIHNhaWQgdGlsZS4KKworICAgICAg
ICAqIHJlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyTGF5ZXJCYWNraW5nOjpSZW5kZXJMYXllckJhY2tpbmcpOgorICAgICAgICBQbHVtYiBT
Y3JvbGxpbmdQZXJmb3JtYW5jZUxvZ2dpbmdFbmFibGVkIHRocm91Z2ggdG8gVGlsZWRCYWNraW5n
LgorCiAyMDEyLTA4LTA2ICBBZGFtIEJhcnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+CiAKICAgICAg
ICAgSlNDIHNob3VsZCB1c2UgQmluZGluZ1N0YXRlIHRvIGRldGVybWluZSB0aGUgYWN0aXZlRE9N
V2luZG93CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbiBiL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCmluZGV4IDQ3ZDA0OTcuLjkxMTNkOTkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUuZXhwLmluCkBAIC05MTQsNiArOTE0LDcgQEAgX19aTjdXZWJDb3JlOFNldHRpbmdzMzVz
ZXRFeHBlcmltZW50YWxOb3RpZmljYXRpb25zRW5hYmxlZEViCiBfX1pON1dlYkNvcmU4U2V0dGlu
Z3MzNXNldFRyZWF0c0FueVRleHRDU1NMaW5rQXNTdHlsZXNoZWV0RWIKIF9fWk43V2ViQ29yZThT
ZXR0aW5nczM2c2V0T2ZmbGluZVdlYkFwcGxpY2F0aW9uQ2FjaGVFbmFibGVkRWIKIF9fWk43V2Vi
Q29yZThTZXR0aW5nczM3c2V0Rml4ZWRFbGVtZW50c0xheW91dFJlbGF0aXZlVG9GcmFtZUViCitf
X1pON1dlYkNvcmU4U2V0dGluZ3MzN3NldFNjcm9sbGluZ1BlcmZvcm1hbmNlTG9nZ2luZ0VuYWJs
ZWRFYgogX19aTjdXZWJDb3JlOFNldHRpbmdzNDBzZXRKYXZhU2NyaXB0Q2FuT3BlbldpbmRvd3NB
dXRvbWF0aWNhbGx5RWIKIF9fWk43V2ViQ29yZThTZXR0aW5nczQwc2V0VGV4dERpcmVjdGlvblN1
Ym1lbnVJbmNsdXNpb25CZWhhdmlvckVOU18zN1RleHREaXJlY3Rpb25TdWJtZW51SW5jbHVzaW9u
QmVoYXZpb3JFCiBfX1pON1dlYkNvcmU4U2V0dGluZ3M0MXNldE5lZWRzS2V5Ym9hcmRFdmVudERp
c2FtYmlndWF0aW9uUXVpcmtzRWIKQEAgLTk1OCw2ICs5NTksNyBAQCBfX1pON1dlYkNvcmU5RnJh
bWVWaWV3MjRmb3JjZUxheW91dEZvclBhZ2luYXRpb25FUktOU185RmxvYXRTaXplRVMzX2ZOU18x
OUFkanVzdAogX19aTjdXZWJDb3JlOUZyYW1lVmlldzI2YWRqdXN0UGFnZUhlaWdodERlcHJlY2F0
ZWRFUGZmZmYKIF9fWk43V2ViQ29yZTlGcmFtZVZpZXcyOXNldFNob3VsZFVwZGF0ZVdoaWxlT2Zm
c2NyZWVuRWIKIF9fWk43V2ViQ29yZTlGcmFtZVZpZXczN3VwZGF0ZUxheW91dEFuZFN0eWxlSWZO
ZWVkZWRSZWN1cnNpdmVFdgorX19aTjdXZWJDb3JlOUZyYW1lVmlldzM3c2V0U2Nyb2xsaW5nUGVy
Zm9ybWFuY2VMb2dnaW5nRW5hYmxlZEViCiBfX1pON1dlYkNvcmU5RnJhbWVWaWV3MzhzY3JvbGxQ
b3NpdGlvbkNoYW5nZWRWaWFQbGF0Zm9ybVdpZGdldEV2CiBfX1pON1dlYkNvcmU5RnJhbWVWaWV3
MzhzeW5jQ29tcG9zaXRpbmdTdGF0ZUluY2x1ZGluZ1N1YmZyYW1lc0V2CiBfX1pON1dlYkNvcmU5
RnJhbWVWaWV3NmNyZWF0ZUVQTlNfNUZyYW1lRQpAQCAtMjUwMSw2ICsyNTAzLDcgQEAgX19aTjdX
ZWJDb3JlOERvY3VtZW50MTlhY2Nlc3NTVkdFeHRlbnNpb25zRXYKIAogI2lmIEVOQUJMRShUSFJF
QURFRF9TQ1JPTExJTkcpCiBfX1pON1dlYkNvcmUxM1Njcm9sbGluZ1RyZWUxN3NldERlYnVnUm9v
dExheWVyRVA3Q0FMYXllcgorX19aTjdXZWJDb3JlMTNTY3JvbGxpbmdUcmVlMzdzZXRTY3JvbGxp
bmdQZXJmb3JtYW5jZUxvZ2dpbmdFbmFibGVkRWIKIF9fWk43V2ViQ29yZTEzU2Nyb2xsaW5nVHJl
ZTIxdHJ5VG9IYW5kbGVXaGVlbEV2ZW50RVJLTlNfMThQbGF0Zm9ybVdoZWVsRXZlbnRFCiBfX1pO
N1dlYkNvcmUxM1Njcm9sbGluZ1RyZWUyMnVwZGF0ZUJhY2tGb3J3YXJkU3RhdGVFYmIKIF9fWk43
V2ViQ29yZTEzU2Nyb2xsaW5nVHJlZUQxRXYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvRnJhbWVWaWV3LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcAppbmRl
eCBmOWQ5MDczLi4yMDc4N2VlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1l
Vmlldy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCkBAIC0zNTc1
LDQgKzM1NzUsMTIgQEAgQVhPYmplY3RDYWNoZSogRnJhbWVWaWV3OjpheE9iamVjdENhY2hlKCkg
Y29uc3QKICAgICByZXR1cm4gMDsKIH0KICAgICAKK3ZvaWQgRnJhbWVWaWV3OjpzZXRTY3JvbGxp
bmdQZXJmb3JtYW5jZUxvZ2dpbmdFbmFibGVkKGJvb2wgZmxhZykKK3sKKyNpZiBVU0UoQUNDRUxF
UkFURURfQ09NUE9TSVRJTkcpCisgICAgaWYgKFRpbGVkQmFja2luZyogdGlsZWRCYWNraW5nID0g
dGhpcy0+dGlsZWRCYWNraW5nKCkpCisgICAgICAgIHRpbGVkQmFja2luZy0+c2V0U2Nyb2xsaW5n
UGVyZm9ybWFuY2VMb2dnaW5nRW5hYmxlZChmbGFnKTsKKyNlbmRpZgorfQorCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5o
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuaAppbmRleCA1ZDYwOTRjLi5mM2JjMDFh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmgKQEAgLTMzOSw2ICszMzksOCBAQCBwdWJsaWM6CiAg
ICAgLy8gd2UgbmVlZCB0aGlzIGZ1bmN0aW9uIGluIG9yZGVyIHRvIGRvIHRoZSBzY3JvbGwgb3Vy
c2VsdmVzLgogICAgIGJvb2wgd2hlZWxFdmVudChjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmKTsK
IAorICAgIHZvaWQgc2V0U2Nyb2xsaW5nUGVyZm9ybWFuY2VMb2dnaW5nRW5hYmxlZChib29sKTsK
KwogcHJvdGVjdGVkOgogICAgIHZpcnR1YWwgYm9vbCBzY3JvbGxDb250ZW50c0Zhc3RQYXRoKGNv
bnN0IEludFNpemUmIHNjcm9sbERlbHRhLCBjb25zdCBJbnRSZWN0JiByZWN0VG9TY3JvbGwsIGNv
bnN0IEludFJlY3QmIGNsaXBSZWN0KTsKICAgICB2aXJ0dWFsIHZvaWQgc2Nyb2xsQ29udGVudHNT
bG93UGF0aChjb25zdCBJbnRSZWN0JiB1cGRhdGVSZWN0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvU2V0dGluZ3MuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy5j
cHAKaW5kZXggOTk4ODJkZi4uZTk3YzY0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9TZXR0aW5ncy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy5jcHAKQEAg
LTI4NSw2ICsyODUsNyBAQCBTZXR0aW5nczo6U2V0dGluZ3MoUGFnZSogcGFnZSkKICAgICAsIG1f
d2luZG93Rm9jdXNSZXN0cmljdGVkKHRydWUpCiAgICAgLCBtX2RpYWdub3N0aWNMb2dnaW5nRW5h
YmxlZChmYWxzZSkKICAgICAsIG1fdGhpcmRQYXJ0eVN0b3JhZ2VCbG9ja2luZ0VuYWJsZWQoZmFs
c2UpCisgICAgLCBtX3Njcm9sbGluZ1BlcmZvcm1hbmNlTG9nZ2luZ0VuYWJsZWQoZmFsc2UpCiAg
ICAgLCBtX2xvYWRzSW1hZ2VzQXV0b21hdGljYWxseVRpbWVyKHRoaXMsICZTZXR0aW5nczo6bG9h
ZHNJbWFnZXNBdXRvbWF0aWNhbGx5VGltZXJGaXJlZCkKICAgICAsIG1faW5jcmVtZW50YWxSZW5k
ZXJpbmdTdXBwcmVzc2lvblRpbWVvdXRJblNlY29uZHMoZGVmYXVsdEluY3JlbWVudGFsUmVuZGVy
aW5nU3VwcHJlc3Npb25UaW1lb3V0SW5TZWNvbmRzKQogewpAQCAtOTM5LDYgKzk0MCwxNCBAQCB2
b2lkIFNldHRpbmdzOjpzZXRUaWxlZEJhY2tpbmdTdG9yZUVuYWJsZWQoYm9vbCBlbmFibGVkKQog
I2VuZGlmCiB9CiAKK3ZvaWQgU2V0dGluZ3M6OnNldFNjcm9sbGluZ1BlcmZvcm1hbmNlTG9nZ2lu
Z0VuYWJsZWQoYm9vbCBlbmFibGVkKQoreworICAgIG1fc2Nyb2xsaW5nUGVyZm9ybWFuY2VMb2dn
aW5nRW5hYmxlZCA9IGVuYWJsZWQ7CisKKyAgICBpZiAobV9wYWdlLT5tYWluRnJhbWUoKSAmJiBt
X3BhZ2UtPm1haW5GcmFtZSgpLT52aWV3KCkpCisgICAgICAgIG1fcGFnZS0+bWFpbkZyYW1lKCkt
PnZpZXcoKS0+c2V0U2Nyb2xsaW5nUGVyZm9ybWFuY2VMb2dnaW5nRW5hYmxlZChlbmFibGVkKTsK
K30KKwogdm9pZCBTZXR0aW5nczo6c2V0TW9ja1Njcm9sbGJhcnNFbmFibGVkKGJvb2wgZmxhZykK
IHsKICAgICBnTW9ja1Njcm9sbGJhcnNFbmFibGVkID0gZmxhZzsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3Mu
aAppbmRleCBkN2IwNjRlLi5mZDRkOWE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L1NldHRpbmdzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy5oCkBAIC02MDQs
NiArNjA0LDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2b2lkIHNldFRoaXJkUGFy
dHlTdG9yYWdlQmxvY2tpbmdFbmFibGVkKGJvb2wgZW5hYmxlZCkgeyBtX3RoaXJkUGFydHlTdG9y
YWdlQmxvY2tpbmdFbmFibGVkID0gZW5hYmxlZDsgfQogICAgICAgICBib29sIHRoaXJkUGFydHlT
dG9yYWdlQmxvY2tpbmdFbmFibGVkKCkgY29uc3QgeyByZXR1cm4gbV90aGlyZFBhcnR5U3RvcmFn
ZUJsb2NraW5nRW5hYmxlZDsgfQogCisgICAgICAgIHZvaWQgc2V0U2Nyb2xsaW5nUGVyZm9ybWFu
Y2VMb2dnaW5nRW5hYmxlZChib29sKTsKKyAgICAgICAgYm9vbCBzY3JvbGxpbmdQZXJmb3JtYW5j
ZUxvZ2dpbmdFbmFibGVkKCkgeyByZXR1cm4gbV9zY3JvbGxpbmdQZXJmb3JtYW5jZUxvZ2dpbmdF
bmFibGVkOyB9CisKICNpZiBVU0UoSlNDKQogICAgICAgICBzdGF0aWMgdm9pZCBzZXRTaG91bGRS
ZXNwZWN0UHJpb3JpdHlJbkNTU0F0dHJpYnV0ZVNldHRlcnMoYm9vbCk7CiAgICAgICAgIHN0YXRp
YyBib29sIHNob3VsZFJlc3BlY3RQcmlvcml0eUluQ1NTQXR0cmlidXRlU2V0dGVycygpOwpAQCAt
Nzk0LDYgKzc5Nyw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgICAgICBib29sIG1fdGhp
cmRQYXJ0eVN0b3JhZ2VCbG9ja2luZ0VuYWJsZWQgOiAxOwogCisgICAgICAgIGJvb2wgbV9zY3Jv
bGxpbmdQZXJmb3JtYW5jZUxvZ2dpbmdFbmFibGVkIDogMTsKKwogICAgICAgICBUaW1lcjxTZXR0
aW5ncz4gbV9sb2Fkc0ltYWdlc0F1dG9tYXRpY2FsbHlUaW1lcjsKICAgICAgICAgdm9pZCBsb2Fk
c0ltYWdlc0F1dG9tYXRpY2FsbHlUaW1lckZpcmVkKFRpbWVyPFNldHRpbmdzPiopOwogICAgICAg
ICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1Ry
ZWUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZS5jcHAK
aW5kZXggMzZlNmFhZS4uYmE2YTUyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9z
Y3JvbGxpbmcvU2Nyb2xsaW5nVHJlZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3Jv
bGxpbmcvU2Nyb2xsaW5nVHJlZS5jcHAKQEAgLTUwLDYgKzUwLDcgQEAgU2Nyb2xsaW5nVHJlZTo6
U2Nyb2xsaW5nVHJlZShTY3JvbGxpbmdDb29yZGluYXRvciogc2Nyb2xsaW5nQ29vcmRpbmF0b3Ip
CiAgICAgLCBtX2NhbkdvRm9yd2FyZChmYWxzZSkKICAgICAsIG1fbWFpbkZyYW1lUGlubmVkVG9U
aGVMZWZ0KGZhbHNlKQogICAgICwgbV9tYWluRnJhbWVQaW5uZWRUb1RoZVJpZ2h0KGZhbHNlKQor
ICAgICwgbV9zY3JvbGxpbmdQZXJmb3JtYW5jZUxvZ2dpbmdFbmFibGVkKGZhbHNlKQogewogfQog
CkBAIC0yMTgsNiArMjE5LDE2IEBAIGJvb2wgU2Nyb2xsaW5nVHJlZTo6d2lsbFdoZWVsRXZlbnRT
dGFydFN3aXBlR2VzdHVyZShjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmIHdoCiAgICAgcmV0dXJu
IGZhbHNlOwogfQogCit2b2lkIFNjcm9sbGluZ1RyZWU6OnNldFNjcm9sbGluZ1BlcmZvcm1hbmNl
TG9nZ2luZ0VuYWJsZWQoYm9vbCBmbGFnKQoreworICAgIG1fc2Nyb2xsaW5nUGVyZm9ybWFuY2VM
b2dnaW5nRW5hYmxlZCA9IGZsYWc7Cit9CisKK2Jvb2wgU2Nyb2xsaW5nVHJlZTo6c2Nyb2xsaW5n
UGVmb3JtYW5jZUxvZ2dpbmdFbmFibGVkKCkKK3sKKyAgICByZXR1cm4gbV9zY3JvbGxpbmdQZXJm
b3JtYW5jZUxvZ2dpbmdFbmFibGVkOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNl
bmRpZiAvLyBFTkFCTEUoVEhSRUFERURfU0NST0xMSU5HKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZS5oIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZS5oCmluZGV4IGVmNzc5MjYuLjQxMjBlOWUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWUuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlLmgKQEAgLTk3LDYg
Kzk3LDkgQEAgcHVibGljOgogICAgIHZvaWQgc2V0RGVidWdSb290TGF5ZXIoQ0FMYXllciAqKTsK
ICNlbmRpZgogCisgICAgdm9pZCBzZXRTY3JvbGxpbmdQZXJmb3JtYW5jZUxvZ2dpbmdFbmFibGVk
KGJvb2wgZmxhZyk7CisgICAgYm9vbCBzY3JvbGxpbmdQZWZvcm1hbmNlTG9nZ2luZ0VuYWJsZWQo
KTsKKwogcHJpdmF0ZToKICAgICBleHBsaWNpdCBTY3JvbGxpbmdUcmVlKFNjcm9sbGluZ0Nvb3Jk
aW5hdG9yKik7CiAKQEAgLTExNiw2ICsxMTksOCBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9tYWlu
RnJhbWVQaW5uZWRUb1RoZUxlZnQ7CiAgICAgYm9vbCBtX21haW5GcmFtZVBpbm5lZFRvVGhlUmln
aHQ7CiAKKyAgICBib29sIG1fc2Nyb2xsaW5nUGVyZm9ybWFuY2VMb2dnaW5nRW5hYmxlZDsKKwog
I2lmIFBMQVRGT1JNKE1BQykKICAgICBSZXRhaW5QdHI8Q0FMYXllcj4gbV9kZWJ1Z0luZm9MYXll
cjsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbWFj
L1Njcm9sbGluZ1RyZWVOb2RlTWFjLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9t
YWMvU2Nyb2xsaW5nVHJlZU5vZGVNYWMuaAppbmRleCA4YTE1NzZlLi40MzA0YjYxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nVHJlZU5vZGVN
YWMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nVHJl
ZU5vZGVNYWMuaApAQCAtNzQsNiArNzQsOCBAQCBwcml2YXRlOgogCiAgICAgdm9pZCB1cGRhdGVN
YWluRnJhbWVQaW5TdGF0ZShjb25zdCBJbnRQb2ludCYgc2Nyb2xsUG9zaXRpb24pOwogCisgICAg
dm9pZCBsb2dFeHBvc2VkVW5maWxsZWRBcmVhKCk7CisKICAgICBTY3JvbGxFbGFzdGljaXR5Q29u
dHJvbGxlciBtX3Njcm9sbEVsYXN0aWNpdHlDb250cm9sbGVyOwogICAgIFJldGFpblB0cjxDRlJ1
bkxvb3BUaW1lclJlZj4gbV9zbmFwUnViYmVyYmFuZFRpbWVyOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nVHJlZU5vZGVNYWMubW0gYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nVHJlZU5vZGVNYWMubW0K
aW5kZXggYTM3YmY0MC4uNTg0NTY5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9z
Y3JvbGxpbmcvbWFjL1Njcm9sbGluZ1RyZWVOb2RlTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2Uvc2Nyb2xsaW5nL21hYy9TY3JvbGxpbmdUcmVlTm9kZU1hYy5tbQpAQCAtMzEsNiArMzEs
MTIgQEAKICNpbmNsdWRlICJQbGF0Zm9ybVdoZWVsRXZlbnQuaCIKICNpbmNsdWRlICJTY3JvbGxp
bmdUcmVlLmgiCiAjaW5jbHVkZSAiU2Nyb2xsaW5nVHJlZVN0YXRlLmgiCisjaW5jbHVkZSAiU2V0
dGluZ3MuaCIKKyNpbmNsdWRlICJUaWxlQ2FjaGUuaCIKKyNpbmNsdWRlICJXZWJUaWxlTGF5ZXIu
aCIKKworI2luY2x1ZGUgPHd0Zi9DdXJyZW50VGltZS5oPgorI2luY2x1ZGUgPHd0Zi9EZXF1ZS5o
PgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTIzMyw2ICsyMzksOSBAQCB2b2lkIFNjcm9s
bGluZ1RyZWVOb2RlTWFjOjpzZXRTY3JvbGxQb3NpdGlvbihjb25zdCBJbnRQb2ludCYgc2Nyb2xs
UG9zaXRpb24pCiAgICAgbmV3U2Nyb2xsUG9zaXRpb24gPSBuZXdTY3JvbGxQb3NpdGlvbi5leHBh
bmRlZFRvKG1pbmltdW1TY3JvbGxQb3NpdGlvbigpKTsKIAogICAgIHNldFNjcm9sbFBvc2l0aW9u
V2l0aG91dENvbnRlbnRFZGdlQ29uc3RyYWludHMobmV3U2Nyb2xsUG9zaXRpb24pOworCisgICAg
aWYgKHNjcm9sbGluZ1RyZWUoKS0+c2Nyb2xsaW5nUGVmb3JtYW5jZUxvZ2dpbmdFbmFibGVkKCkp
CisgICAgICAgIGxvZ0V4cG9zZWRVbmZpbGxlZEFyZWEoKTsKIH0KIAogdm9pZCBTY3JvbGxpbmdU
cmVlTm9kZU1hYzo6c2V0U2Nyb2xsUG9zaXRpb25XaXRob3V0Q29udGVudEVkZ2VDb25zdHJhaW50
cyhjb25zdCBJbnRQb2ludCYgc2Nyb2xsUG9zaXRpb24pCkBAIC0yODgsNiArMjk3LDM5IEBAIHZv
aWQgU2Nyb2xsaW5nVHJlZU5vZGVNYWM6OnVwZGF0ZU1haW5GcmFtZVBpblN0YXRlKGNvbnN0IElu
dFBvaW50JiBzY3JvbGxQb3NpdGlvCiAgICAgc2Nyb2xsaW5nVHJlZSgpLT5zZXRNYWluRnJhbWVQ
aW5TdGF0ZShwaW5uZWRUb1RoZUxlZnQsIHBpbm5lZFRvVGhlUmlnaHQpOwogfQogCit2b2lkIFNj
cm9sbGluZ1RyZWVOb2RlTWFjOjpsb2dFeHBvc2VkVW5maWxsZWRBcmVhKCkKK3sKKyAgICBSZWdp
b24gcGFpbnRlZFZpc2libGVUaWxlczsKKworICAgIERlcXVlPENBTGF5ZXIqPiBsYXllclF1ZXVl
OworICAgIGxheWVyUXVldWUuYXBwZW5kKG1fc2Nyb2xsTGF5ZXIuZ2V0KCkpOworICAgIFZlY3Rv
cjxSZXRhaW5QdHI8V2ViVGlsZUxheWVyPiA+IHRpbGVzOworCisgICAgd2hpbGUoIWxheWVyUXVl
dWUuaXNFbXB0eSgpKSB7CisgICAgICAgIENBTGF5ZXIqIGxheWVyID0gbGF5ZXJRdWV1ZS50YWtl
Rmlyc3QoKTsKKyAgICAgICAgTlNBcnJheSogc3VibGF5ZXJzID0gW1tsYXllciBzdWJsYXllcnNd
IGNvcHldOworCisgICAgICAgIC8vIElmIHRoaXMgbGF5ZXIgaXMgdGhlIHBhcmVudCBvZiBhIHRp
bGUsIGl0IGlzIHRoZSBwYXJlbnQgb2YgYWxsIG9mIHRoZSB0aWxlcyBhbmQgbm90aGluZyBlbHNl
LgorICAgICAgICBpZiAoW1tzdWJsYXllcnMgb2JqZWN0QXRJbmRleDowXSBpc0tpbmRPZkNsYXNz
OltXZWJUaWxlTGF5ZXIgY2xhc3NdXSkgeworICAgICAgICAgICAgZm9yIChDQUxheWVyKiBzdWJs
YXllciBpbiBzdWJsYXllcnMpIHsKKyAgICAgICAgICAgICAgICBBU1NFUlQoW3N1YmxheWVyIGlz
S2luZE9mQ2xhc3M6W1dlYlRpbGVMYXllciBjbGFzc11dKTsKKyAgICAgICAgICAgICAgICB0aWxl
cy5hcHBlbmQoc3RhdGljX2Nhc3Q8V2ViVGlsZUxheWVyKj4obGF5ZXIpKTsKKyAgICAgICAgICAg
IH0KKworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKworICAgICAgICBmb3IgKENBTGF5
ZXIqIHN1YmxheWVyIGluIHN1YmxheWVycykKKyAgICAgICAgICAgIGxheWVyUXVldWUuYXBwZW5k
KHN1YmxheWVyKTsKKyAgICAgICAgW3N1YmxheWVycyByZWxlYXNlXTsKKyAgICB9CisKKyAgICB1
bnNpZ25lZCB1bmZpbGxlZEFyZWEgPSBUaWxlQ2FjaGU6OmJsYW5rUGl4ZWxDb3VudEZvclRpbGVz
KHRpbGVzLCB2aWV3cG9ydFJlY3QoKSwgc2Nyb2xsUG9zaXRpb24oKSk7CisKKyAgICBpZiAodW5m
aWxsZWRBcmVhKQorICAgICAgICBwcmludGYoIlNDUk9MTElORzogRXhwb3NlZCB0aWxlbGVzcyBh
cmVhLiBUaW1lOiAlZiBVbmZpbGxlZCBQaXhlbHM6ICV1XG4iLCBXVEY6OmN1cnJlbnRUaW1lKCks
IHVuZmlsbGVkQXJlYSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8v
IEVOQUJMRShUSFJFQURFRF9TQ1JPTExJTkcpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9UaWxlZEJhY2tpbmcuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL1RpbGVkQmFja2luZy5oCmluZGV4IGFjZGNmNWUuLmNmYTM2YjEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1RpbGVkQmFja2luZy5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1RpbGVkQmFja2luZy5oCkBAIC0zMiwx
MSArMzIsMjAgQEAgY2xhc3MgSW50UmVjdDsKIAogY2xhc3MgVGlsZWRCYWNraW5nIHsKIHB1Ymxp
YzoKKyAgICBUaWxlZEJhY2tpbmcoKQorICAgICAgICA6IG1fc2Nyb2xsaW5nUGVyZm9ybWFuY2VM
b2dnaW5nRW5hYmxlZCgwKQorICAgIHsgfQogICAgIHZpcnR1YWwgflRpbGVkQmFja2luZygpIHsg
fQogCiAgICAgdmlydHVhbCB2b2lkIHZpc2libGVSZWN0Q2hhbmdlZChjb25zdCBJbnRSZWN0Jikg
PSAwOwogICAgIHZpcnR1YWwgdm9pZCBzZXRJc0luV2luZG93KGJvb2wpID0gMDsKICAgICB2aXJ0
dWFsIHZvaWQgc2V0Q2FuSGF2ZVNjcm9sbGJhcnMoYm9vbCkgPSAwOworCisgICAgdm9pZCBzZXRT
Y3JvbGxpbmdQZXJmb3JtYW5jZUxvZ2dpbmdFbmFibGVkKGJvb2wgZmxhZykgIHsgbV9zY3JvbGxp
bmdQZXJmb3JtYW5jZUxvZ2dpbmdFbmFibGVkID0gZmxhZzsgfQorICAgIGJvb2wgc2Nyb2xsaW5n
UGVyZm9ybWFuY2VMb2dnaW5nRW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1fc2Nyb2xsaW5nUGVy
Zm9ybWFuY2VMb2dnaW5nRW5hYmxlZDsgfQorCitwcml2YXRlOgorICAgIGJvb2wgbV9zY3JvbGxp
bmdQZXJmb3JtYW5jZUxvZ2dpbmdFbmFibGVkOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvbWFjL1Rp
bGVDYWNoZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvbWFjL1RpbGVD
YWNoZS5oCmluZGV4IDYxZjMwNTAuLmRkMjk3YjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NhL21hYy9UaWxlQ2FjaGUuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9tYWMvVGlsZUNhY2hlLmgKQEAgLTY4LDYgKzY4LDExIEBA
IHB1YmxpYzoKICAgICB2b2lkIHNldFRpbGVEZWJ1Z0JvcmRlcldpZHRoKGZsb2F0KTsKICAgICB2
b2lkIHNldFRpbGVEZWJ1Z0JvcmRlckNvbG9yKENHQ29sb3JSZWYpOwogCisgICAgSW50UmVjdCB2
aXNpYmxlUmVjdCgpIHsgcmV0dXJuIG1fdmlzaWJsZVJlY3Q7IH0KKyAgICAKKyAgICB1bnNpZ25l
ZCBibGFua1BpeGVsQ291bnQoKSBjb25zdDsKKyAgICBzdGF0aWMgdW5zaWduZWQgYmxhbmtQaXhl
bENvdW50Rm9yVGlsZXMoVmVjdG9yPFJldGFpblB0cjxXZWJUaWxlTGF5ZXI+ID4sIEludFJlY3Qs
IEludFBvaW50KTsKKwogcHJpdmF0ZToKICAgICBUaWxlQ2FjaGUoV2ViVGlsZUNhY2hlTGF5ZXIq
LCBjb25zdCBJbnRTaXplJiB0aWxlU2l6ZSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NhL21hYy9UaWxlQ2FjaGUubW0gYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jYS9tYWMvVGlsZUNhY2hlLm1tCmluZGV4IGNhZWYwNzQuLjgwOGNh
ODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL21hYy9U
aWxlQ2FjaGUubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvbWFj
L1RpbGVDYWNoZS5tbQpAQCAtMjgsNiArMjgsNyBAQAogCiAjaW1wb3J0ICJJbnRSZWN0LmgiCiAj
aW1wb3J0ICJQbGF0Zm9ybUNBTGF5ZXIuaCIKKyNpbXBvcnQgIlJlZ2lvbi5oIgogI2ltcG9ydCAi
V2ViTGF5ZXIuaCIKICNpbXBvcnQgIldlYlRpbGVDYWNoZUxheWVyLmgiCiAjaW1wb3J0ICJXZWJU
aWxlTGF5ZXIuaCIKQEAgLTMxMCw2ICszMTEsMzQgQEAgdm9pZCBUaWxlQ2FjaGU6OnRpbGVSZXZh
bGlkYXRpb25UaW1lckZpcmVkKFRpbWVyPFRpbGVDYWNoZT4qKQogewogICAgIHJldmFsaWRhdGVU
aWxlcygpOwogfQorICAgIAordW5zaWduZWQgVGlsZUNhY2hlOjpibGFua1BpeGVsQ291bnQoKSBj
b25zdAoreworICAgIFZlY3RvcjxSZXRhaW5QdHI8V2ViVGlsZUxheWVyPiA+IHRpbGVzKG1fdGls
ZXMuc2l6ZSgpKTsKKyAgICB0aWxlcy5hcHBlbmRSYW5nZShtX3RpbGVzLmJlZ2luKCkudmFsdWVz
KCksIG1fdGlsZXMuZW5kKCkudmFsdWVzKCkpOworICAgIAorICAgIHJldHVybiBibGFua1BpeGVs
Q291bnRGb3JUaWxlcyh0aWxlcywgbV92aXNpYmxlUmVjdCwgSW50UG9pbnQoMCwwKSk7Cit9CisK
K3Vuc2lnbmVkIFRpbGVDYWNoZTo6YmxhbmtQaXhlbENvdW50Rm9yVGlsZXMoVmVjdG9yPFJldGFp
blB0cjxXZWJUaWxlTGF5ZXI+ID4gdGlsZXMsIEludFJlY3QgdmlzaWJsZVJlY3QsIEludFBvaW50
IHRpbGVUcmFuc2xhdGlvbikKK3sKKyAgICBSZWdpb24gcGFpbnRlZFZpc2libGVUaWxlczsKKwor
ICAgIGZvciAoVmVjdG9yPFJldGFpblB0cjxXZWJUaWxlTGF5ZXI+ID46OmNvbnN0X2l0ZXJhdG9y
IGl0ID0gdGlsZXMuYmVnaW4oKSwgZW5kID0gdGlsZXMuZW5kKCk7IGl0ICE9IGVuZDsgKytpdCkg
eworICAgICAgICBjb25zdCBXZWJUaWxlTGF5ZXIqIHRpbGVMYXllciA9IGl0LT5nZXQoKTsKKwor
ICAgICAgICBJbnRSZWN0IHZpc2libGVQYXJ0KENHUmVjdE9mZnNldChbdGlsZUxheWVyIGZyYW1l
XSwgdGlsZVRyYW5zbGF0aW9uLngoKSwgdGlsZVRyYW5zbGF0aW9uLnkoKSkpOworICAgICAgICB2
aXNpYmxlUGFydC5pbnRlcnNlY3QodmlzaWJsZVJlY3QpOworCisgICAgICAgIGlmICghdmlzaWJs
ZVBhcnQuaXNFbXB0eSgpICYmIFt0aWxlTGF5ZXIgcmVwYWludENvdW50XSkKKyAgICAgICAgICAg
IHBhaW50ZWRWaXNpYmxlVGlsZXMudW5pdGUodmlzaWJsZVBhcnQpOworICAgIH0KKworICAgIFJl
Z2lvbiB1bmNvdmVyZWRSZWdpb24odmlzaWJsZVJlY3QpOworICAgIHVuY292ZXJlZFJlZ2lvbi5z
dWJ0cmFjdChwYWludGVkVmlzaWJsZVRpbGVzKTsKKworICAgIHJldHVybiB1bmNvdmVyZWRSZWdp
b24udG90YWxBcmVhKCk7Cit9CiAKIHZvaWQgVGlsZUNhY2hlOjpyZXZhbGlkYXRlVGlsZXMoKQog
ewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvbWFjL1dl
YlRpbGVMYXllci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvbWFjL1dl
YlRpbGVMYXllci5oCmluZGV4IDU3N2UzNGEuLjRhMmQ1YzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL21hYy9XZWJUaWxlTGF5ZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9tYWMvV2ViVGlsZUxheWVyLmgKQEAgLTM3
LDYgKzM3LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAtICh2b2lkKXNldFRpbGVDYWNoZToo
V2ViQ29yZTo6VGlsZUNhY2hlKil0aWxlQ2FjaGU7CiAtICh1bnNpZ25lZClpbmNyZW1lbnRSZXBh
aW50Q291bnQ7CistICh1bnNpZ25lZClyZXBhaW50Q291bnQ7CiBAZW5kCiAKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvbWFjL1dlYlRpbGVMYXllci5t
bSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL21hYy9XZWJUaWxlTGF5ZXIu
bW0KaW5kZXggNmY3Yzg1Yy4uZjNmMWFjNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2EvbWFjL1dlYlRpbGVMYXllci5tbQorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9tYWMvV2ViVGlsZUxheWVyLm1tCkBAIC0yNyw2ICsyNyw3
IEBACiAjaW1wb3J0ICJXZWJUaWxlTGF5ZXIuaCIKIAogI2ltcG9ydCAiVGlsZUNhY2hlLmgiCisj
aW1wb3J0IDx3dGYvQ3VycmVudFRpbWUuaD4KICNpbXBvcnQgPHd0Zi9VbnVzZWRQYXJhbS5oPgog
CiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKQEAgLTQzLDggKzQ0LDEyIEBAIC0gKGlkPENBQWN0
aW9uPilhY3Rpb25Gb3JLZXk6KE5TU3RyaW5nICopa2V5CiAKIC0gKHZvaWQpZHJhd0luQ29udGV4
dDooQ0dDb250ZXh0UmVmKWNvbnRleHQKIHsKLSAgICBpZiAoX3RpbGVDYWNoZSkKKyAgICBpZiAo
X3RpbGVDYWNoZSkgewogICAgICAgICBfdGlsZUNhY2hlLT5kcmF3TGF5ZXIoc2VsZiwgY29udGV4
dCk7CisKKyAgICAgICAgaWYgKF90aWxlQ2FjaGUtPnNjcm9sbGluZ1BlcmZvcm1hbmNlTG9nZ2lu
Z0VuYWJsZWQoKSkKKyAgICAgICAgICAgIFtzZWxmIGxvZ0ZpbGxlZEZyZXNoVGlsZV07CisgICAg
fQogfQogCiAtICh2b2lkKXNldFRpbGVDYWNoZTooV2ViQ29yZTo6VGlsZUNhY2hlKil0aWxlQ2Fj
aGUKQEAgLTU3LDUgKzYyLDE5IEBAIC0gKHVuc2lnbmVkKWluY3JlbWVudFJlcGFpbnRDb3VudAog
ICAgIHJldHVybiArK19yZXBhaW50Q291bnQ7CiB9CiAKKy0gKHVuc2lnbmVkKXJlcGFpbnRDb3Vu
dAoreworICAgIHJldHVybiBfcmVwYWludENvdW50OworfQorCistICh2b2lkKWxvZ0ZpbGxlZEZy
ZXNoVGlsZQoreworICAgIEludFJlY3QgdmlzaWJsZVBhcnQoZW5jbG9zaW5nSW50UmVjdChbc2Vs
ZiBmcmFtZV0pKTsKKyAgICB2aXNpYmxlUGFydC5pbnRlcnNlY3QoX3RpbGVDYWNoZS0+dmlzaWJs
ZVJlY3QoKSk7CisKKyAgICBpZiAoW3NlbGYgcmVwYWludENvdW50XSA9PSAxICYmICF2aXNpYmxl
UGFydC5pc0VtcHR5KCkpCisgICAgICAgIHByaW50ZigiU0NST0xMSU5HOiBGaWxsZWQgdmlzaWJs
ZSBmcmVzaCB0aWxlLiBUaW1lOiAlZiBVbmZpbGxlZCBQaXhlbHM6ICV1XG4iLCBXVEY6OmN1cnJl
bnRUaW1lKCksIF90aWxlQ2FjaGUtPmJsYW5rUGl4ZWxDb3VudCgpKTsKK30KKwogQGVuZAogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwCmluZGV4
IGUxMTBhNGQuLmM1ZmFjYmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJMYXllckJhY2tpbmcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJMYXllckJhY2tpbmcuY3BwCkBAIC01Miw2ICs1Miw3IEBACiAjaW5jbHVkZSAiUmVuZGVyVmlk
ZW8uaCIKICNpbmNsdWRlICJSZW5kZXJWaWV3LmgiCiAjaW5jbHVkZSAiU2Nyb2xsaW5nQ29vcmRp
bmF0b3IuaCIKKyNpbmNsdWRlICJTZXR0aW5ncy5oIgogI2luY2x1ZGUgIlN0eWxlUmVzb2x2ZXIu
aCIKICNpbmNsdWRlICJUaWxlZEJhY2tpbmcuaCIKIApAQCAtMTIxLDggKzEyMiwxMSBAQCBSZW5k
ZXJMYXllckJhY2tpbmc6OlJlbmRlckxheWVyQmFja2luZyhSZW5kZXJMYXllciogbGF5ZXIpCiAg
ICAgaWYgKG1fdXNpbmdUaWxlZENhY2hlTGF5ZXIpIHsKICAgICAgICAgaWYgKFBhZ2UqIHBhZ2Ug
PSByZW5kZXJlcigpLT5mcmFtZSgpLT5wYWdlKCkpIHsKICAgICAgICAgICAgIGlmIChUaWxlZEJh
Y2tpbmcqIHRpbGVkQmFja2luZyA9IG1fZ3JhcGhpY3NMYXllci0+dGlsZWRCYWNraW5nKCkpIHsK
KyAgICAgICAgICAgICAgICBGcmFtZSogZnJhbWUgPSByZW5kZXJlcigpLT5mcmFtZSgpOworCiAg
ICAgICAgICAgICAgICAgdGlsZWRCYWNraW5nLT5zZXRJc0luV2luZG93KHBhZ2UtPmlzT25zY3Jl
ZW4oKSk7Ci0gICAgICAgICAgICAgICAgdGlsZWRCYWNraW5nLT5zZXRDYW5IYXZlU2Nyb2xsYmFy
cyhyZW5kZXJlcigpLT5mcmFtZSgpLT52aWV3KCktPmNhbkhhdmVTY3JvbGxiYXJzKCkpOworICAg
ICAgICAgICAgICAgIHRpbGVkQmFja2luZy0+c2V0Q2FuSGF2ZVNjcm9sbGJhcnMoZnJhbWUtPnZp
ZXcoKS0+Y2FuSGF2ZVNjcm9sbGJhcnMoKSk7CisgICAgICAgICAgICAgICAgdGlsZWRCYWNraW5n
LT5zZXRTY3JvbGxpbmdQZXJmb3JtYW5jZUxvZ2dpbmdFbmFibGVkKGZyYW1lLT5zZXR0aW5ncygp
ICYmIGZyYW1lLT5zZXR0aW5ncygpLT5zY3JvbGxpbmdQZXJmb3JtYW5jZUxvZ2dpbmdFbmFibGVk
KCkpOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IGVkNjE4
MDUuLjdmMjk2YWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9T
b3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNyBAQAorMjAxMi0wOC0wOCAgVGlt
IEhvcnRvbiAgPHRpbW90aHlfaG9ydG9uQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgb3B0aW9u
YWwgZGVidWcgbG9nZ2luZyBmb3IgdGlsZWQgc2Nyb2xsaW5nCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05MzMwNQorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBhIG5ldyBib29sZWFuIHByZWZlcmVuY2Us
IFNjcm9sbGluZ1BlcmZvcm1hbmNlTG9nZ2luZ0VuYWJsZWQsIHdoaWNoIHdpbGwgYmUgdXNlZCB0
byB0b2dnbGUKKyAgICAgICAgdGhlIFdlYkNvcmUgcGFydHMgb2YgdGhpcyBjaGFuZ2UuCisKKyAg
ICAgICAgKiBTaGFyZWQvV2ViUHJlZmVyZW5jZXNTdG9yZS5oOiBBZGQgU2Nyb2xsaW5nUGVyZm9y
bWFuY2VMb2dnaW5nRW5hYmxlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tQcmVmZXJl
bmNlcy5jcHA6CisgICAgICAgIChXS1ByZWZlcmVuY2VzU2V0U2Nyb2xsaW5nUGVyZm9ybWFuY2VM
b2dnaW5nRW5hYmxlZCk6IEFkZGVkLgorICAgICAgICAoV0tQcmVmZXJlbmNlc0dldFNjcm9sbGlu
Z1BlcmZvcm1hbmNlTG9nZ2luZ0VuYWJsZWQpOiBBZGRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3Mv
QVBJL0MvV0tQcmVmZXJlbmNlc1ByaXZhdGUuaDogQWRkIGdldHRlcnMgYW5kIHNldHRlcnMgZm9y
IFNjcm9sbGluZ1BlcmZvcm1hbmNlTG9nZ2luZ0VuYWJsZWQuCisgICAgICAgICogV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlBhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpXZWJQYWdl
KTogQWRkIFNjcm9sbGluZ1BlcmZvcm1hbmNlTG9nZ2luZ0VuYWJsZWQuCisgICAgICAgIChXZWJL
aXQ6OldlYlBhZ2U6OnVwZGF0ZVByZWZlcmVuY2VzKTogQWRkIFNjcm9sbGluZ1BlcmZvcm1hbmNl
TG9nZ2luZ0VuYWJsZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnNldFNjcm9sbGluZ1Bl
cmZvcm1hbmNlTG9nZ2luZ0VuYWJsZWQpOiBQcm9wYWdhdGUgc2V0dGluZ3MgY2hhbmdlcyB0aHJv
dWdoIHRvIEZyYW1lVmlldy4KKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5o
OgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpzY3JvbGxpbmdQZXJmb3JtYW5jZUxvZ2dpbmdF
bmFibGVkKTogQWRkIGEgZ2V0dGVyIGZvciB0aGUgc2V0dGluZyBzbyB0aGF0IFRpbGVkQ29yZUFu
aW1hdGlvbkRyYXdpbmdBcmVhIGNhbiBhY2Nlc3MgaXQuCisgICAgICAgICogV2ViUHJvY2Vzcy9X
ZWJQYWdlL21hYy9UaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYS5tbToKKyAgICAgICAgKFdl
YktpdDo6VGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWE6OnVwZGF0ZVByZWZlcmVuY2VzKTog
UGFzcyBTY3JvbGxpbmdQZXJmb3JtYW5jZUxvZ2dpbmdFbmFibGVkIGRvd24gaW50byB0aGUgc2Ny
b2xsaW5nIHRocmVhZC4KKwogMjAxMi0wOC0wNiAgU2hlcmlmZiBCb3QgIDx3ZWJraXQucmV2aWV3
LmJvdEBnbWFpbC5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjEyNDgx
Ni4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJQcmVmZXJlbmNlc1N0b3Jl
LmggYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViUHJlZmVyZW5jZXNTdG9yZS5oCmluZGV4IDZm
Yzk1YjUuLmFmMDgxMmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJQcmVm
ZXJlbmNlc1N0b3JlLmgKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYlByZWZlcmVuY2Vz
U3RvcmUuaApAQCAtMTE3LDYgKzExNyw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogICAgIG1hY3Jv
KEFzeW5jaHJvbm91c1BsdWdpbkluaXRpYWxpemF0aW9uRW5hYmxlZCwgYXN5bmNocm9ub3VzUGx1
Z2luSW5pdGlhbGl6YXRpb25FbmFibGVkLCBCb29sLCBib29sLCBmYWxzZSkgXAogICAgIG1hY3Jv
KEFzeW5jaHJvbm91c1BsdWdpbkluaXRpYWxpemF0aW9uRW5hYmxlZEZvckFsbFBsdWdpbnMsIGFz
eW5jaHJvbm91c1BsdWdpbkluaXRpYWxpemF0aW9uRW5hYmxlZEZvckFsbFBsdWdpbnMsIEJvb2ws
IGJvb2wsIGZhbHNlKSBcCiAgICAgbWFjcm8oQXJ0aWZpY2lhbFBsdWdpbkluaXRpYWxpemF0aW9u
RGVsYXlFbmFibGVkLCBhcnRpZmljaWFsUGx1Z2luSW5pdGlhbGl6YXRpb25EZWxheUVuYWJsZWQs
IEJvb2wsIGJvb2wsIGZhbHNlKSBcCisgICAgbWFjcm8oU2Nyb2xsaW5nUGVyZm9ybWFuY2VMb2dn
aW5nRW5hYmxlZCwgc2Nyb2xsaW5nUGVyZm9ybWFuY2VMb2dnaW5nRW5hYmxlZCwgQm9vbCwgYm9v
bCwgZmFsc2UpIFwKICAgICBtYWNybyhUaGlyZFBhcnR5U3RvcmFnZUJsb2NraW5nRW5hYmxlZCwg
dGhpcmRQYXJ0eVN0b3JhZ2VCbG9ja2luZ0VuYWJsZWQsIEJvb2wsIGJvb2wsIGZhbHNlKSBcCiAg
ICAgXAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQcmVm
ZXJlbmNlcy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQcmVmZXJlbmNl
cy5jcHAKaW5kZXggZDU4MzdmYy4uNjZkNGRjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9DL1dLUHJlZmVyZW5jZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvQy9XS1ByZWZlcmVuY2VzLmNwcApAQCAtODczLDMgKzg3MywxMyBAQCBib29s
IFdLUHJlZmVyZW5jZXNHZXRBcnRpZmljaWFsUGx1Z2luSW5pdGlhbGl6YXRpb25EZWxheUVuYWJs
ZWQoV0tQcmVmZXJlbmNlc1JlZgogewogICAgIHJldHVybiB0b0ltcGwocHJlZmVyZW5jZXNSZWYp
LT5hcnRpZmljaWFsUGx1Z2luSW5pdGlhbGl6YXRpb25EZWxheUVuYWJsZWQoKTsKIH0KKwordm9p
ZCBXS1ByZWZlcmVuY2VzU2V0U2Nyb2xsaW5nUGVyZm9ybWFuY2VMb2dnaW5nRW5hYmxlZChXS1By
ZWZlcmVuY2VzUmVmIHByZWZlcmVuY2VzUmVmLCBib29sIGVuYWJsZWQpCit7CisgICAgdG9JbXBs
KHByZWZlcmVuY2VzUmVmKS0+c2V0U2Nyb2xsaW5nUGVyZm9ybWFuY2VMb2dnaW5nRW5hYmxlZChl
bmFibGVkKTsKK30KKworYm9vbCBXS1ByZWZlcmVuY2VzR2V0U2Nyb2xsaW5nUGVyZm9ybWFuY2VM
b2dnaW5nRW5hYmxlZChXS1ByZWZlcmVuY2VzUmVmIHByZWZlcmVuY2VzUmVmKQoreworICAgIHJl
dHVybiB0b0ltcGwocHJlZmVyZW5jZXNSZWYpLT5zY3JvbGxpbmdQZXJmb3JtYW5jZUxvZ2dpbmdF
bmFibGVkKCk7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0Mv
V0tQcmVmZXJlbmNlc1ByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9X
S1ByZWZlcmVuY2VzUHJpdmF0ZS5oCmluZGV4IDJiYmY4ZDEuLmI0NjlkN2EgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1ByZWZlcmVuY2VzUHJpdmF0ZS5oCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1ByZWZlcmVuY2VzUHJpdmF0ZS5o
CkBAIC0yMDMsNiArMjAzLDEwIEBAIFdLX0VYUE9SVCBib29sIFdLUHJlZmVyZW5jZXNHZXRBc3lu
Y2hyb25vdXNQbHVnaW5Jbml0aWFsaXphdGlvbkVuYWJsZWRGb3JBbGxQbHVnCiBXS19FWFBPUlQg
dm9pZCBXS1ByZWZlcmVuY2VzU2V0QXJ0aWZpY2lhbFBsdWdpbkluaXRpYWxpemF0aW9uRGVsYXlF
bmFibGVkKFdLUHJlZmVyZW5jZXNSZWYgcHJlZmVyZW5jZXNSZWYsIGJvb2wgZW5hYmxlZCk7CiBX
S19FWFBPUlQgYm9vbCBXS1ByZWZlcmVuY2VzR2V0QXJ0aWZpY2lhbFBsdWdpbkluaXRpYWxpemF0
aW9uRGVsYXlFbmFibGVkKFdLUHJlZmVyZW5jZXNSZWYgcHJlZmVyZW5jZXNSZWYpOwogCisvLyBE
ZWZhdWx0cyB0byBmYWxzZQorV0tfRVhQT1JUIHZvaWQgV0tQcmVmZXJlbmNlc1NldFNjcm9sbGlu
Z1BlcmZvcm1hbmNlTG9nZ2luZ0VuYWJsZWQoV0tQcmVmZXJlbmNlc1JlZiBwcmVmZXJlbmNlc1Jl
ZiwgYm9vbCBlbmFibGVkKTsKK1dLX0VYUE9SVCBib29sIFdLUHJlZmVyZW5jZXNHZXRTY3JvbGxp
bmdQZXJmb3JtYW5jZUxvZ2dpbmdFbmFibGVkKFdLUHJlZmVyZW5jZXNSZWYgcHJlZmVyZW5jZXNS
ZWYpOworCiBXS19FWFBPUlQgdm9pZCBXS1ByZWZlcmVuY2VzUmVzZXRUZXN0UnVubmVyT3ZlcnJp
ZGVzKFdLUHJlZmVyZW5jZXNSZWYgcHJlZmVyZW5jZXNSZWYpOwogCiAjaWZkZWYgX19jcGx1c3Bs
dXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdl
LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAppbmRl
eCA1NjUwMDdmLi5hNTI0NDQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYlBhZ2UuY3BwCkBAIC0yMTAsNiArMjEwLDcgQEAgV2ViUGFnZTo6V2ViUGFnZSh1aW50
NjRfdCBwYWdlSUQsIGNvbnN0IFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMmIHBhcmFtZXRlcnMp
CiAgICAgLCBtX2FzeW5jaHJvbm91c1BsdWdpbkluaXRpYWxpemF0aW9uRW5hYmxlZChmYWxzZSkK
ICAgICAsIG1fYXN5bmNocm9ub3VzUGx1Z2luSW5pdGlhbGl6YXRpb25FbmFibGVkRm9yQWxsUGx1
Z2lucyhmYWxzZSkKICAgICAsIG1fYXJ0aWZpY2lhbFBsdWdpbkluaXRpYWxpemF0aW9uRGVsYXlF
bmFibGVkKGZhbHNlKQorICAgICwgbV9zY3JvbGxpbmdQZXJmb3JtYW5jZUxvZ2dpbmdFbmFibGVk
KGZhbHNlKQogI2lmIFBMQVRGT1JNKE1BQykKICAgICAsIG1fd2luZG93SXNWaXNpYmxlKGZhbHNl
KQogICAgICwgbV9pc1NtYXJ0SW5zZXJ0RGVsZXRlRW5hYmxlZChwYXJhbWV0ZXJzLmlzU21hcnRJ
bnNlcnREZWxldGVFbmFibGVkKQpAQCAtMTk4Myw2ICsxOTg0LDggQEAgdm9pZCBXZWJQYWdlOjp1
cGRhdGVQcmVmZXJlbmNlcyhjb25zdCBXZWJQcmVmZXJlbmNlc1N0b3JlJiBzdG9yZSkKICAgICBt
X2FzeW5jaHJvbm91c1BsdWdpbkluaXRpYWxpemF0aW9uRW5hYmxlZEZvckFsbFBsdWdpbnMgPSBz
dG9yZS5nZXRCb29sVmFsdWVGb3JLZXkoV2ViUHJlZmVyZW5jZXNLZXk6OmFzeW5jaHJvbm91c1Bs
dWdpbkluaXRpYWxpemF0aW9uRW5hYmxlZEZvckFsbFBsdWdpbnNLZXkoKSk7CiAgICAgbV9hcnRp
ZmljaWFsUGx1Z2luSW5pdGlhbGl6YXRpb25EZWxheUVuYWJsZWQgPSBzdG9yZS5nZXRCb29sVmFs
dWVGb3JLZXkoV2ViUHJlZmVyZW5jZXNLZXk6OmFydGlmaWNpYWxQbHVnaW5Jbml0aWFsaXphdGlv
bkRlbGF5RW5hYmxlZEtleSgpKTsKIAorICAgIG1fc2Nyb2xsaW5nUGVyZm9ybWFuY2VMb2dnaW5n
RW5hYmxlZCA9IHN0b3JlLmdldEJvb2xWYWx1ZUZvcktleShXZWJQcmVmZXJlbmNlc0tleTo6c2Ny
b2xsaW5nUGVyZm9ybWFuY2VMb2dnaW5nRW5hYmxlZEtleSgpKTsKKwogICAgIC8vIEZJWE1FOiBU
aGlzIHNob3VsZCBiZSBnZW5lcmF0ZWQgZnJvbSBtYWNybyBleHBhbnNpb24gZm9yIGFsbCBwcmVm
ZXJlbmNlcywKICAgICAvLyBidXQgd2UgY3VycmVudGx5IGRvbid0IG1hdGNoIHRoZSBuYW1pbmcg
b2YgV2ViQ29yZSBleGFjdGx5IHNvIHdlIGFyZQogICAgIC8vIGhhbmRyb2xsaW5nIHRoZSBib29s
ZWFuIGFuZCBpbnRlZ2VyIHByZWZlcmVuY2VzIHVudGlsIHRoYXQgaXMgZml4ZWQuCkBAIC0yMTAw
LDYgKzIxMDMsOCBAQCB2b2lkIFdlYlBhZ2U6OnVwZGF0ZVByZWZlcmVuY2VzKGNvbnN0IFdlYlBy
ZWZlcmVuY2VzU3RvcmUmIHN0b3JlKQogCiAgICAgc2V0dGluZ3MtPnNldERpYWdub3N0aWNMb2dn
aW5nRW5hYmxlZChzdG9yZS5nZXRCb29sVmFsdWVGb3JLZXkoV2ViUHJlZmVyZW5jZXNLZXk6OmRp
YWdub3N0aWNMb2dnaW5nRW5hYmxlZEtleSgpKSk7CiAKKyAgICBzZXR0aW5ncy0+c2V0U2Nyb2xs
aW5nUGVyZm9ybWFuY2VMb2dnaW5nRW5hYmxlZChtX3Njcm9sbGluZ1BlcmZvcm1hbmNlTG9nZ2lu
Z0VuYWJsZWQpOworCiAgICAgcGxhdGZvcm1QcmVmZXJlbmNlc0RpZENoYW5nZShzdG9yZSk7CiAK
ICAgICBpZiAobV9kcmF3aW5nQXJlYSkKQEAgLTMyOTMsNCArMzI5OCwxNSBAQCB2b2lkIFdlYlBh
Z2U6OnNldFZpc2liaWxpdHlTdGF0ZShpbnQgdmlzaWJpbGl0eVN0YXRlLCBib29sIGlzSW5pdGlh
bFN0YXRlKQogfQogI2VuZGlmCiAKK3ZvaWQgV2ViUGFnZTo6c2V0U2Nyb2xsaW5nUGVyZm9ybWFu
Y2VMb2dnaW5nRW5hYmxlZChib29sIGVuYWJsZWQpCit7CisgICAgbV9zY3JvbGxpbmdQZXJmb3Jt
YW5jZUxvZ2dpbmdFbmFibGVkID0gZW5hYmxlZDsKKworICAgIEZyYW1lVmlldyogZnJhbWVWaWV3
ID0gbV9tYWluRnJhbWUtPmNvcmVGcmFtZSgpLT52aWV3KCk7CisgICAgaWYgKCFmcmFtZVZpZXcp
CisgICAgICAgIHJldHVybjsKKworICAgIGZyYW1lVmlldy0+c2V0U2Nyb2xsaW5nUGVyZm9ybWFu
Y2VMb2dnaW5nRW5hYmxlZChlbmFibGVkKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oIGIv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAppbmRleCAyNTZiNzlm
Li4xNTM2MDIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdl
LmgKQEAgLTU3Nyw2ICs1NzcsOSBAQCBwdWJsaWM6CiAgICAgYm9vbCBhcnRpZmljaWFsUGx1Z2lu
SW5pdGlhbGl6YXRpb25EZWxheUVuYWJsZWQoKSBjb25zdCB7IHJldHVybiBtX2FydGlmaWNpYWxQ
bHVnaW5Jbml0aWFsaXphdGlvbkRlbGF5RW5hYmxlZDsgfQogICAgIHZvaWQgc2V0QXJ0aWZpY2lh
bFBsdWdpbkluaXRpYWxpemF0aW9uRGVsYXlFbmFibGVkKGJvb2wgZW5hYmxlZCkgeyBtX2FydGlm
aWNpYWxQbHVnaW5Jbml0aWFsaXphdGlvbkRlbGF5RW5hYmxlZCA9IGVuYWJsZWQ7IH0KIAorICAg
IGJvb2wgc2Nyb2xsaW5nUGVyZm9ybWFuY2VMb2dnaW5nRW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJu
IG1fc2Nyb2xsaW5nUGVyZm9ybWFuY2VMb2dnaW5nRW5hYmxlZDsgfQorICAgIHZvaWQgc2V0U2Ny
b2xsaW5nUGVyZm9ybWFuY2VMb2dnaW5nRW5hYmxlZChib29sKTsKKwogcHJpdmF0ZToKICAgICBX
ZWJQYWdlKHVpbnQ2NF90IHBhZ2VJRCwgY29uc3QgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyYp
OwogCkBAIC03NzAsNiArNzczLDggQEAgcHJpdmF0ZToKICAgICBib29sIG1fYXN5bmNocm9ub3Vz
UGx1Z2luSW5pdGlhbGl6YXRpb25FbmFibGVkRm9yQWxsUGx1Z2luczsKICAgICBib29sIG1fYXJ0
aWZpY2lhbFBsdWdpbkluaXRpYWxpemF0aW9uRGVsYXlFbmFibGVkOwogCisgICAgYm9vbCBtX3Nj
cm9sbGluZ1BlcmZvcm1hbmNlTG9nZ2luZ0VuYWJsZWQ7CisKICNpZiBQTEFURk9STShNQUMpCiAg
ICAgLy8gV2hldGhlciB0aGUgY29udGFpbmluZyB3aW5kb3cgaXMgdmlzaWJsZSBvciBub3QuCiAg
ICAgYm9vbCBtX3dpbmRvd0lzVmlzaWJsZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUGFnZS9tYWMvVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWEubW0gYi9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1RpbGVkQ29yZUFuaW1hdGlvbkRy
YXdpbmdBcmVhLm1tCmluZGV4IDRkZmZiNmUuLjI0MzNkNzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0Fy
ZWEubW0KKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9UaWxlZENv
cmVBbmltYXRpb25EcmF3aW5nQXJlYS5tbQpAQCAtMjEyLDcgKzIxMiwxMCBAQCB2b2lkIFRpbGVk
Q29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhOjp1cGRhdGVQcmVmZXJlbmNlcygpCiAgICAgICAgIG1f
ZGVidWdJbmZvTGF5ZXIgPSBudWxscHRyOwogICAgIH0KIAorICAgIGJvb2wgc2Nyb2xsaW5nUGVy
Zm9ybWFuY2VMb2dnaW5nRW5hYmxlZCA9IG1fd2ViUGFnZS0+c2Nyb2xsaW5nUGVyZm9ybWFuY2VM
b2dnaW5nRW5hYmxlZCgpOworCiAgICAgU2Nyb2xsaW5nVGhyZWFkOjpkaXNwYXRjaChiaW5kKCZT
Y3JvbGxpbmdUcmVlOjpzZXREZWJ1Z1Jvb3RMYXllciwgbV93ZWJQYWdlLT5jb3JlUGFnZSgpLT5z
Y3JvbGxpbmdDb29yZGluYXRvcigpLT5zY3JvbGxpbmdUcmVlKCksIG1fZGVidWdJbmZvTGF5ZXIp
KTsKKyAgICBTY3JvbGxpbmdUaHJlYWQ6OmRpc3BhdGNoKGJpbmQoJlNjcm9sbGluZ1RyZWU6OnNl
dFNjcm9sbGluZ1BlcmZvcm1hbmNlTG9nZ2luZ0VuYWJsZWQsIG1fd2ViUGFnZS0+Y29yZVBhZ2Uo
KS0+c2Nyb2xsaW5nQ29vcmRpbmF0b3IoKS0+c2Nyb2xsaW5nVHJlZSgpLCBzY3JvbGxpbmdQZXJm
b3JtYW5jZUxvZ2dpbmdFbmFibGVkKSk7CiB9CiAKIHZvaWQgVGlsZWRDb3JlQW5pbWF0aW9uRHJh
d2luZ0FyZWE6OmRpc3BhdGNoQWZ0ZXJFbnN1cmluZ1VwZGF0ZWRTY3JvbGxQb3NpdGlvbihjb25z
dCBGdW5jdGlvbjx2b2lkICgpPiYgZnVuY3Rpb25SZWYpCg==
</data>
<flag name="commit-queue"
          id="167265"
          type_id="3"
          status="-"
          setter="buildbot"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>157362</attachid>
            <date>2012-08-08 18:43:10 -0700</date>
            <delta_ts>2012-08-08 18:59:14 -0700</delta_ts>
            <desc>humorously, fix mac build</desc>
            <filename>spl.diff</filename>
            <type>text/plain</type>
            <size>28918</size>
            <attacher name="Tim Horton">thorton</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA2Yjk3Mjk5Li43YmIzZDAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNzcg
QEAKKzIwMTItMDgtMDggIFRpbSBIb3J0b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+CisK
KyAgICAgICAgQWRkIG9wdGlvbmFsIGRlYnVnIGxvZ2dpbmcgZm9yIHRpbGVkIHNjcm9sbGluZwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTMzMDUKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgc2Nyb2xs
aW5nIHBlcmZvcm1hbmNlIGxvZ2dpbmcgdG8gU2Nyb2xsaW5nVHJlZU5vZGVNYWMgYW5kIFdlYlRp
bGVMYXllciwgd2hpY2ggd2lsbCBsb2cKKyAgICAgICAgdGhlIGFtb3VudCBvZiB1bnBhaW50ZWQg
YXJlYSBleHBvc2VkIGR1cmluZyBzY3JvbGxpbmcgYW5kIHBhaW50aW5nLCByZXNwZWN0aXZlbHku
CisKKyAgICAgICAgVGhlIGxvZ2dpbmcgb3V0cHV0IGxvb2tzIGxpa2UgdGhpczoKKworICAgICAg
ICAgICAgU0NST0xMSU5HOiBFeHBvc2VkIHRpbGVsZXNzIGFyZWEuIFRpbWU6IDEzNDQ0NjQ4NTAu
MTU0ODM5IFVuZmlsbGVkIFBpeGVsczogMTEyMjAwOAorICAgICAgICAgICAgU0NST0xMSU5HOiBG
aWxsZWQgdmlzaWJsZSBmcmVzaCB0aWxlLiBUaW1lOiAxMzQ0NDY0ODUwLjU3NTMwMyBVbmZpbGxl
ZCBQaXhlbHM6IDEwNzgyNzIKKyAgICAgICAgICAgIFNDUk9MTElORzogRmlsbGVkIHZpc2libGUg
ZnJlc2ggdGlsZS4gVGltZTogMTM0NDQ2NDg1MC42NzY1NjkgVW5maWxsZWQgUGl4ZWxzOiA4MjM4
MDgKKyAgICAgICAgICAgIFNDUk9MTElORzogRmlsbGVkIHZpc2libGUgZnJlc2ggdGlsZS4gVGlt
ZTogMTM0NDQ2NDg1MC43OTU4NzcgVW5maWxsZWQgUGl4ZWxzOiA1NjkzNDQKKyAgICAgICAgICAg
IFNDUk9MTElORzogRmlsbGVkIHZpc2libGUgZnJlc2ggdGlsZS4gVGltZTogMTM0NDQ2NDg1MC44
NDY5NDAgVW5maWxsZWQgUGl4ZWxzOiA1MjQyODgKKyAgICAgICAgICAgIFNDUk9MTElORzogRmls
bGVkIHZpc2libGUgZnJlc2ggdGlsZS4gVGltZTogMTM0NDQ2NDg1MC45ODQxMTMgVW5maWxsZWQg
UGl4ZWxzOiAyNjIxNDQKKyAgICAgICAgICAgIFNDUk9MTElORzogRmlsbGVkIHZpc2libGUgZnJl
c2ggdGlsZS4gVGltZTogMTM0NDQ2NDg1MS4wMjc5ODUgVW5maWxsZWQgUGl4ZWxzOiAwCisKKyAg
ICAgICAgTm8gbmV3IHRlc3RzLCBhcyB0aGlzIGlzIGp1c3QgZGVidWdnaW5nIGxvZ2dpbmcuCisK
KyAgICAgICAgKiBXZWJDb3JlLmV4cC5pbjoKKyAgICAgICAgKiBwYWdlL0ZyYW1lVmlldy5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVZpZXc6OnNldFNjcm9sbGluZ1BlcmZvcm1hbmNlTG9n
Z2luZ0VuYWJsZWQpOgorICAgICAgICBBZGRlZCBzZXRTY3JvbGxpbmdQZXJmb3JtYW5jZUxvZ2dp
bmdFbmFibGVkLCBwYXNzZXMgZmxhZyBpbnRvIFRpbGVkQmFja2luZy4KKworICAgICAgICAqIHBh
Z2UvRnJhbWVWaWV3Lmg6CisgICAgICAgICogcGFnZS9TZXR0aW5ncy5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpTZXR0aW5nczo6U2V0dGluZ3MpOgorICAgICAgICAoV2ViQ29yZTo6U2V0dGluZ3M6
OnNldFNjcm9sbGluZ1BlcmZvcm1hbmNlTG9nZ2luZ0VuYWJsZWQpOgorICAgICAgICBBZGRlZCBz
ZXRTY3JvbGxpbmdQZXJmb3JtYW5jZUxvZ2dpbmdFbmFibGVkLCBwYXNzZXMgZmxhZyBpbnRvIEZy
YW1lVmlldy4KKworICAgICAgICAqIHBhZ2UvU2V0dGluZ3MuaDoKKyAgICAgICAgKFdlYkNvcmU6
OlNldHRpbmdzOjpzY3JvbGxpbmdQZXJmb3JtYW5jZUxvZ2dpbmdFbmFibGVkKToKKyAgICAgICAg
KiBwYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNj
cm9sbGluZ1RyZWU6OlNjcm9sbGluZ1RyZWUpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5n
VHJlZTo6c2V0U2Nyb2xsaW5nUGVyZm9ybWFuY2VMb2dnaW5nRW5hYmxlZCk6CisgICAgICAgIChX
ZWJDb3JlOjpTY3JvbGxpbmdUcmVlOjpzY3JvbGxpbmdQZWZvcm1hbmNlTG9nZ2luZ0VuYWJsZWQp
OgorICAgICAgICBBZGRlZCBTY3JvbGxpbmdQZXJmb3JtYW5jZUxvZ2dpbmdFbmFibGVkIHNldHRl
ci9nZXR0ZXI7IHRoaXMgaXMgd2hlcmUgaXQncyBhY2Nlc3NlZCBmcm9tIFNjcm9sbGluZ1RyZWVO
b2RlTWFjLgorCisgICAgICAgICogcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZS5oOgorICAg
ICAgICAqIHBhZ2Uvc2Nyb2xsaW5nL21hYy9TY3JvbGxpbmdUcmVlTm9kZU1hYy5oOgorICAgICAg
ICAoU2Nyb2xsaW5nVHJlZU5vZGVNYWMpOgorICAgICAgICAqIHBhZ2Uvc2Nyb2xsaW5nL21hYy9T
Y3JvbGxpbmdUcmVlTm9kZU1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1RyZWVO
b2RlTWFjOjpzZXRTY3JvbGxQb3NpdGlvbik6CisgICAgICAgIFdoZW4gdXBkYXRpbmcgc2Nyb2xs
IHBvc2l0aW9uLCBjb25kaXRpb25hbGx5IGxvZyB0aGUgYW1vdW50IG9mIHVucGFpbnRlZCBhcmVh
IHRoYXQgd2FzIGp1c3QgZXhwb3NlZC4KKworICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nVHJl
ZU5vZGVNYWM6OmxvZ0V4cG9zZWRUaWxlbGVzc0FyZWEpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL1RpbGVkQmFja2luZy5oOgorICAgICAgICAoV2ViQ29yZTo6VGlsZWRCYWNraW5nOjpU
aWxlZEJhY2tpbmcpOgorICAgICAgICAoV2ViQ29yZTo6VGlsZWRCYWNraW5nOjpzZXRTY3JvbGxp
bmdQZXJmb3JtYW5jZUxvZ2dpbmdFbmFibGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlRpbGVkQmFj
a2luZzo6c2Nyb2xsaW5nUGVyZm9ybWFuY2VMb2dnaW5nRW5hYmxlZCk6CisgICAgICAgIEFkZGVk
IFNjcm9sbGluZ1BlcmZvcm1hbmNlTG9nZ2luZ0VuYWJsZWQgc2V0dGVyL2dldHRlcjsgdGhpcyBp
cyB3aGVyZSBpdCdzIGFjY2Vzc2VkIGZyb20gV2ViVGlsZUxheWVyLgorCisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvY2EvbWFjL1RpbGVDYWNoZS5oOgorICAgICAgICAoV2ViQ29yZTo6VGls
ZUNhY2hlOjp2aXNpYmxlUmVjdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2EvbWFj
L1RpbGVDYWNoZS5tbToKKyAgICAgICAgKFdlYkNvcmU6OlRpbGVDYWNoZTo6YmxhbmtQaXhlbENv
dW50KToKKyAgICAgICAgKFdlYkNvcmU6OlRpbGVDYWNoZTo6YmxhbmtQaXhlbENvdW50Rm9yVGls
ZXMpOgorICAgICAgICBDb21wdXRlIHRoZSBleHBvc2VkLCB1bnBhaW50ZWQgYXJlYSBvZiB0aGUg
dGlsZSBjYWNoZSBieSBpdGVyYXRpbmcgb3ZlciB0aGUgbGF5ZXJzLAorICAgICAgICBjaGVja2lu
ZyBpZiB0aGV5J3ZlIGJlZW4gcGFpbnRlZCwgYW5kIHN1YnRyYWN0aW5nIHBhaW50ZWQgbGF5ZXJz
IGZyb20gdGhlIHRvdGFsIHZpc2libGUgYXJlYS4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2NhL21hYy9XZWJUaWxlTGF5ZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9j
YS9tYWMvV2ViVGlsZUxheWVyLm1tOgorICAgICAgICAoLVtXZWJUaWxlTGF5ZXIgZHJhd0luQ29u
dGV4dDpdKToKKyAgICAgICAgKC1bV2ViVGlsZUxheWVyIHJlcGFpbnRDb3VudF0pOgorICAgICAg
ICAoLVtXZWJUaWxlTGF5ZXIgbG9nRmlsbGVkRnJlc2hUaWxlXSk6CisgICAgICAgIFdoZW4gcGFp
bnRpbmcgYSBXZWJUaWxlTGF5ZXIsIGNvbmRpdGlvbmFsbHkgbG9nIHRoZSBhbW91bnQgb2YgdW5w
YWludGVkIGFyZWEgcmVtYWluaW5nIGFmdGVyIHBhaW50aW5nIHNhaWQgdGlsZS4KKworICAgICAg
ICAqIHJlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyTGF5ZXJCYWNraW5nOjpSZW5kZXJMYXllckJhY2tpbmcpOgorICAgICAgICBQbHVtYiBT
Y3JvbGxpbmdQZXJmb3JtYW5jZUxvZ2dpbmdFbmFibGVkIHRocm91Z2ggdG8gVGlsZWRCYWNraW5n
LgorCiAyMDEyLTA4LTA4ICBUaGlhZ28gTWFyY29zIFAuIFNhbnRvcyAgPHRoaWFnby5zYW50b3NA
aW50ZWwuY29tPgogCiAgICAgICAgIENhbnZhc1JlbmRlckNvbnRleHQyRDo6c2V0Rm9udCgpIHNo
b3VsZCBpZ25vcmUgaW5oZXJpdGVkIHByb3BlcnRpZXMgYW5kIGRlZmF1bHQga2V5d29yZCB2YWx1
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4gYi9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLmV4cC5pbgppbmRleCBjYmY4NTA0Li5iZGNhMTI5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
LmV4cC5pbgpAQCAtOTE0LDYgKzkxNCw3IEBAIF9fWk43V2ViQ29yZThTZXR0aW5nczM1c2V0RXhw
ZXJpbWVudGFsTm90aWZpY2F0aW9uc0VuYWJsZWRFYgogX19aTjdXZWJDb3JlOFNldHRpbmdzMzVz
ZXRUcmVhdHNBbnlUZXh0Q1NTTGlua0FzU3R5bGVzaGVldEViCiBfX1pON1dlYkNvcmU4U2V0dGlu
Z3MzNnNldE9mZmxpbmVXZWJBcHBsaWNhdGlvbkNhY2hlRW5hYmxlZEViCiBfX1pON1dlYkNvcmU4
U2V0dGluZ3MzN3NldEZpeGVkRWxlbWVudHNMYXlvdXRSZWxhdGl2ZVRvRnJhbWVFYgorX19aTjdX
ZWJDb3JlOFNldHRpbmdzMzdzZXRTY3JvbGxpbmdQZXJmb3JtYW5jZUxvZ2dpbmdFbmFibGVkRWIK
IF9fWk43V2ViQ29yZThTZXR0aW5nczQwc2V0SmF2YVNjcmlwdENhbk9wZW5XaW5kb3dzQXV0b21h
dGljYWxseUViCiBfX1pON1dlYkNvcmU4U2V0dGluZ3M0MHNldFRleHREaXJlY3Rpb25TdWJtZW51
SW5jbHVzaW9uQmVoYXZpb3JFTlNfMzdUZXh0RGlyZWN0aW9uU3VibWVudUluY2x1c2lvbkJlaGF2
aW9yRQogX19aTjdXZWJDb3JlOFNldHRpbmdzNDFzZXROZWVkc0tleWJvYXJkRXZlbnREaXNhbWJp
Z3VhdGlvblF1aXJrc0ViCkBAIC05NTksNiArOTYwLDcgQEAgX19aTjdXZWJDb3JlOUZyYW1lVmll
dzI0cGFpbnRDb250ZW50c0ZvclNuYXBzaG90RVBOU18xNUdyYXBoaWNzQ29udGV4dEVSS05TXzdJ
bnQKIF9fWk43V2ViQ29yZTlGcmFtZVZpZXcyNmFkanVzdFBhZ2VIZWlnaHREZXByZWNhdGVkRVBm
ZmZmCiBfX1pON1dlYkNvcmU5RnJhbWVWaWV3MjlzZXRTaG91bGRVcGRhdGVXaGlsZU9mZnNjcmVl
bkViCiBfX1pON1dlYkNvcmU5RnJhbWVWaWV3Mzd1cGRhdGVMYXlvdXRBbmRTdHlsZUlmTmVlZGVk
UmVjdXJzaXZlRXYKK19fWk43V2ViQ29yZTlGcmFtZVZpZXczN3NldFNjcm9sbGluZ1BlcmZvcm1h
bmNlTG9nZ2luZ0VuYWJsZWRFYgogX19aTjdXZWJDb3JlOUZyYW1lVmlldzM4c2Nyb2xsUG9zaXRp
b25DaGFuZ2VkVmlhUGxhdGZvcm1XaWRnZXRFdgogX19aTjdXZWJDb3JlOUZyYW1lVmlldzM4c3lu
Y0NvbXBvc2l0aW5nU3RhdGVJbmNsdWRpbmdTdWJmcmFtZXNFdgogX19aTjdXZWJDb3JlOUZyYW1l
VmlldzZjcmVhdGVFUE5TXzVGcmFtZUUKQEAgLTI1MDIsNiArMjUwNCw3IEBAIF9fWk43V2ViQ29y
ZThEb2N1bWVudDE5YWNjZXNzU1ZHRXh0ZW5zaW9uc0V2CiAKICNpZiBFTkFCTEUoVEhSRUFERURf
U0NST0xMSU5HKQogX19aTjdXZWJDb3JlMTNTY3JvbGxpbmdUcmVlMTdzZXREZWJ1Z1Jvb3RMYXll
ckVQN0NBTGF5ZXIKK19fWk43V2ViQ29yZTEzU2Nyb2xsaW5nVHJlZTM3c2V0U2Nyb2xsaW5nUGVy
Zm9ybWFuY2VMb2dnaW5nRW5hYmxlZEViCiBfX1pON1dlYkNvcmUxM1Njcm9sbGluZ1RyZWUyMXRy
eVRvSGFuZGxlV2hlZWxFdmVudEVSS05TXzE4UGxhdGZvcm1XaGVlbEV2ZW50RQogX19aTjdXZWJD
b3JlMTNTY3JvbGxpbmdUcmVlMjJ1cGRhdGVCYWNrRm9yd2FyZFN0YXRlRWJiCiBfX1pON1dlYkNv
cmUxM1Njcm9sbGluZ1RyZWVEMUV2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Zy
YW1lVmlldy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAKaW5kZXggZDI5
NTY3NC4uY2M1M2Q5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcApAQCAtMzYwMSw0ICsz
NjAxLDEyIEBAIEFYT2JqZWN0Q2FjaGUqIEZyYW1lVmlldzo6YXhPYmplY3RDYWNoZSgpIGNvbnN0
CiAgICAgcmV0dXJuIDA7CiB9CiAgICAgCit2b2lkIEZyYW1lVmlldzo6c2V0U2Nyb2xsaW5nUGVy
Zm9ybWFuY2VMb2dnaW5nRW5hYmxlZChib29sIGZsYWcpCit7CisjaWYgVVNFKEFDQ0VMRVJBVEVE
X0NPTVBPU0lUSU5HKQorICAgIGlmIChUaWxlZEJhY2tpbmcqIHRpbGVkQmFja2luZyA9IHRoaXMt
PnRpbGVkQmFja2luZygpKQorICAgICAgICB0aWxlZEJhY2tpbmctPnNldFNjcm9sbGluZ1BlcmZv
cm1hbmNlTG9nZ2luZ0VuYWJsZWQoZmxhZyk7CisjZW5kaWYKK30KKwogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmgKaW5kZXggODk5YjA3MS4uNWVmMDA2NCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0ZyYW1lVmlldy5oCkBAIC0zNDIsNiArMzQyLDggQEAgcHVibGljOgogICAgIC8v
IHdlIG5lZWQgdGhpcyBmdW5jdGlvbiBpbiBvcmRlciB0byBkbyB0aGUgc2Nyb2xsIG91cnNlbHZl
cy4KICAgICBib29sIHdoZWVsRXZlbnQoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50Jik7CiAKKyAg
ICB2b2lkIHNldFNjcm9sbGluZ1BlcmZvcm1hbmNlTG9nZ2luZ0VuYWJsZWQoYm9vbCk7CisKIHBy
b3RlY3RlZDoKICAgICB2aXJ0dWFsIGJvb2wgc2Nyb2xsQ29udGVudHNGYXN0UGF0aChjb25zdCBJ
bnRTaXplJiBzY3JvbGxEZWx0YSwgY29uc3QgSW50UmVjdCYgcmVjdFRvU2Nyb2xsLCBjb25zdCBJ
bnRSZWN0JiBjbGlwUmVjdCk7CiAgICAgdmlydHVhbCB2b2lkIHNjcm9sbENvbnRlbnRzU2xvd1Bh
dGgoY29uc3QgSW50UmVjdCYgdXBkYXRlUmVjdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL1NldHRpbmdzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MuY3BwCmlu
ZGV4IDk5ODgyZGYuLmU5N2M2NGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0
dGluZ3MuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MuY3BwCkBAIC0yODUs
NiArMjg1LDcgQEAgU2V0dGluZ3M6OlNldHRpbmdzKFBhZ2UqIHBhZ2UpCiAgICAgLCBtX3dpbmRv
d0ZvY3VzUmVzdHJpY3RlZCh0cnVlKQogICAgICwgbV9kaWFnbm9zdGljTG9nZ2luZ0VuYWJsZWQo
ZmFsc2UpCiAgICAgLCBtX3RoaXJkUGFydHlTdG9yYWdlQmxvY2tpbmdFbmFibGVkKGZhbHNlKQor
ICAgICwgbV9zY3JvbGxpbmdQZXJmb3JtYW5jZUxvZ2dpbmdFbmFibGVkKGZhbHNlKQogICAgICwg
bV9sb2Fkc0ltYWdlc0F1dG9tYXRpY2FsbHlUaW1lcih0aGlzLCAmU2V0dGluZ3M6OmxvYWRzSW1h
Z2VzQXV0b21hdGljYWxseVRpbWVyRmlyZWQpCiAgICAgLCBtX2luY3JlbWVudGFsUmVuZGVyaW5n
U3VwcHJlc3Npb25UaW1lb3V0SW5TZWNvbmRzKGRlZmF1bHRJbmNyZW1lbnRhbFJlbmRlcmluZ1N1
cHByZXNzaW9uVGltZW91dEluU2Vjb25kcykKIHsKQEAgLTkzOSw2ICs5NDAsMTQgQEAgdm9pZCBT
ZXR0aW5nczo6c2V0VGlsZWRCYWNraW5nU3RvcmVFbmFibGVkKGJvb2wgZW5hYmxlZCkKICNlbmRp
ZgogfQogCit2b2lkIFNldHRpbmdzOjpzZXRTY3JvbGxpbmdQZXJmb3JtYW5jZUxvZ2dpbmdFbmFi
bGVkKGJvb2wgZW5hYmxlZCkKK3sKKyAgICBtX3Njcm9sbGluZ1BlcmZvcm1hbmNlTG9nZ2luZ0Vu
YWJsZWQgPSBlbmFibGVkOworCisgICAgaWYgKG1fcGFnZS0+bWFpbkZyYW1lKCkgJiYgbV9wYWdl
LT5tYWluRnJhbWUoKS0+dmlldygpKQorICAgICAgICBtX3BhZ2UtPm1haW5GcmFtZSgpLT52aWV3
KCktPnNldFNjcm9sbGluZ1BlcmZvcm1hbmNlTG9nZ2luZ0VuYWJsZWQoZW5hYmxlZCk7Cit9CisK
IHZvaWQgU2V0dGluZ3M6OnNldE1vY2tTY3JvbGxiYXJzRW5hYmxlZChib29sIGZsYWcpCiB7CiAg
ICAgZ01vY2tTY3JvbGxiYXJzRW5hYmxlZCA9IGZsYWc7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL1NldHRpbmdzLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzLmgKaW5k
ZXggZDdiMDY0ZS4uZmQ0ZDlhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0
aW5ncy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MuaApAQCAtNjA0LDYgKzYw
NCw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdm9pZCBzZXRUaGlyZFBhcnR5U3Rv
cmFnZUJsb2NraW5nRW5hYmxlZChib29sIGVuYWJsZWQpIHsgbV90aGlyZFBhcnR5U3RvcmFnZUJs
b2NraW5nRW5hYmxlZCA9IGVuYWJsZWQ7IH0KICAgICAgICAgYm9vbCB0aGlyZFBhcnR5U3RvcmFn
ZUJsb2NraW5nRW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1fdGhpcmRQYXJ0eVN0b3JhZ2VCbG9j
a2luZ0VuYWJsZWQ7IH0KIAorICAgICAgICB2b2lkIHNldFNjcm9sbGluZ1BlcmZvcm1hbmNlTG9n
Z2luZ0VuYWJsZWQoYm9vbCk7CisgICAgICAgIGJvb2wgc2Nyb2xsaW5nUGVyZm9ybWFuY2VMb2dn
aW5nRW5hYmxlZCgpIHsgcmV0dXJuIG1fc2Nyb2xsaW5nUGVyZm9ybWFuY2VMb2dnaW5nRW5hYmxl
ZDsgfQorCiAjaWYgVVNFKEpTQykKICAgICAgICAgc3RhdGljIHZvaWQgc2V0U2hvdWxkUmVzcGVj
dFByaW9yaXR5SW5DU1NBdHRyaWJ1dGVTZXR0ZXJzKGJvb2wpOwogICAgICAgICBzdGF0aWMgYm9v
bCBzaG91bGRSZXNwZWN0UHJpb3JpdHlJbkNTU0F0dHJpYnV0ZVNldHRlcnMoKTsKQEAgLTc5NCw2
ICs3OTcsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICAgICAgYm9vbCBtX3RoaXJkUGFy
dHlTdG9yYWdlQmxvY2tpbmdFbmFibGVkIDogMTsKIAorICAgICAgICBib29sIG1fc2Nyb2xsaW5n
UGVyZm9ybWFuY2VMb2dnaW5nRW5hYmxlZCA6IDE7CisKICAgICAgICAgVGltZXI8U2V0dGluZ3M+
IG1fbG9hZHNJbWFnZXNBdXRvbWF0aWNhbGx5VGltZXI7CiAgICAgICAgIHZvaWQgbG9hZHNJbWFn
ZXNBdXRvbWF0aWNhbGx5VGltZXJGaXJlZChUaW1lcjxTZXR0aW5ncz4qKTsKICAgICAgICAgCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWUuY3BwCmluZGV4
IDM2ZTZhYWUuLmJhNmE1MmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xs
aW5nL1Njcm9sbGluZ1RyZWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5n
L1Njcm9sbGluZ1RyZWUuY3BwCkBAIC01MCw2ICs1MCw3IEBAIFNjcm9sbGluZ1RyZWU6OlNjcm9s
bGluZ1RyZWUoU2Nyb2xsaW5nQ29vcmRpbmF0b3IqIHNjcm9sbGluZ0Nvb3JkaW5hdG9yKQogICAg
ICwgbV9jYW5Hb0ZvcndhcmQoZmFsc2UpCiAgICAgLCBtX21haW5GcmFtZVBpbm5lZFRvVGhlTGVm
dChmYWxzZSkKICAgICAsIG1fbWFpbkZyYW1lUGlubmVkVG9UaGVSaWdodChmYWxzZSkKKyAgICAs
IG1fc2Nyb2xsaW5nUGVyZm9ybWFuY2VMb2dnaW5nRW5hYmxlZChmYWxzZSkKIHsKIH0KIApAQCAt
MjE4LDYgKzIxOSwxNiBAQCBib29sIFNjcm9sbGluZ1RyZWU6OndpbGxXaGVlbEV2ZW50U3RhcnRT
d2lwZUdlc3R1cmUoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50JiB3aAogICAgIHJldHVybiBmYWxz
ZTsKIH0KIAordm9pZCBTY3JvbGxpbmdUcmVlOjpzZXRTY3JvbGxpbmdQZXJmb3JtYW5jZUxvZ2dp
bmdFbmFibGVkKGJvb2wgZmxhZykKK3sKKyAgICBtX3Njcm9sbGluZ1BlcmZvcm1hbmNlTG9nZ2lu
Z0VuYWJsZWQgPSBmbGFnOworfQorCitib29sIFNjcm9sbGluZ1RyZWU6OnNjcm9sbGluZ1BlZm9y
bWFuY2VMb2dnaW5nRW5hYmxlZCgpCit7CisgICAgcmV0dXJuIG1fc2Nyb2xsaW5nUGVyZm9ybWFu
Y2VMb2dnaW5nRW5hYmxlZDsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYg
Ly8gRU5BQkxFKFRIUkVBREVEX1NDUk9MTElORykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWUuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Ny
b2xsaW5nL1Njcm9sbGluZ1RyZWUuaAppbmRleCBlZjc3OTI2Li40MTIwZTllIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZS5oCkBAIC05Nyw2ICs5Nyw5
IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldERlYnVnUm9vdExheWVyKENBTGF5ZXIgKik7CiAjZW5k
aWYKIAorICAgIHZvaWQgc2V0U2Nyb2xsaW5nUGVyZm9ybWFuY2VMb2dnaW5nRW5hYmxlZChib29s
IGZsYWcpOworICAgIGJvb2wgc2Nyb2xsaW5nUGVmb3JtYW5jZUxvZ2dpbmdFbmFibGVkKCk7CisK
IHByaXZhdGU6CiAgICAgZXhwbGljaXQgU2Nyb2xsaW5nVHJlZShTY3JvbGxpbmdDb29yZGluYXRv
ciopOwogCkBAIC0xMTYsNiArMTE5LDggQEAgcHJpdmF0ZToKICAgICBib29sIG1fbWFpbkZyYW1l
UGlubmVkVG9UaGVMZWZ0OwogICAgIGJvb2wgbV9tYWluRnJhbWVQaW5uZWRUb1RoZVJpZ2h0Owog
CisgICAgYm9vbCBtX3Njcm9sbGluZ1BlcmZvcm1hbmNlTG9nZ2luZ0VuYWJsZWQ7CisKICNpZiBQ
TEFURk9STShNQUMpCiAgICAgUmV0YWluUHRyPENBTGF5ZXI+IG1fZGVidWdJbmZvTGF5ZXI7CiAj
ZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL21hYy9TY3Jv
bGxpbmdUcmVlTm9kZU1hYy5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbWFjL1Nj
cm9sbGluZ1RyZWVOb2RlTWFjLmgKaW5kZXggOGExNTc2ZS4uNDMwNGI2MSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGluZ1RyZWVOb2RlTWFjLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGluZ1RyZWVOb2Rl
TWFjLmgKQEAgLTc0LDYgKzc0LDggQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgdXBkYXRlTWFpbkZy
YW1lUGluU3RhdGUoY29uc3QgSW50UG9pbnQmIHNjcm9sbFBvc2l0aW9uKTsKIAorICAgIHZvaWQg
bG9nRXhwb3NlZFVuZmlsbGVkQXJlYSgpOworCiAgICAgU2Nyb2xsRWxhc3RpY2l0eUNvbnRyb2xs
ZXIgbV9zY3JvbGxFbGFzdGljaXR5Q29udHJvbGxlcjsKICAgICBSZXRhaW5QdHI8Q0ZSdW5Mb29w
VGltZXJSZWY+IG1fc25hcFJ1YmJlcmJhbmRUaW1lcjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGluZ1RyZWVOb2RlTWFjLm1tIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGluZ1RyZWVOb2RlTWFjLm1tCmluZGV4
IGEzN2JmNDAuLjU4NDU2OTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xs
aW5nL21hYy9TY3JvbGxpbmdUcmVlTm9kZU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nVHJlZU5vZGVNYWMubW0KQEAgLTMxLDYgKzMxLDEyIEBA
CiAjaW5jbHVkZSAiUGxhdGZvcm1XaGVlbEV2ZW50LmgiCiAjaW5jbHVkZSAiU2Nyb2xsaW5nVHJl
ZS5oIgogI2luY2x1ZGUgIlNjcm9sbGluZ1RyZWVTdGF0ZS5oIgorI2luY2x1ZGUgIlNldHRpbmdz
LmgiCisjaW5jbHVkZSAiVGlsZUNhY2hlLmgiCisjaW5jbHVkZSAiV2ViVGlsZUxheWVyLmgiCisK
KyNpbmNsdWRlIDx3dGYvQ3VycmVudFRpbWUuaD4KKyNpbmNsdWRlIDx3dGYvRGVxdWUuaD4KIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC0yMzMsNiArMjM5LDkgQEAgdm9pZCBTY3JvbGxpbmdU
cmVlTm9kZU1hYzo6c2V0U2Nyb2xsUG9zaXRpb24oY29uc3QgSW50UG9pbnQmIHNjcm9sbFBvc2l0
aW9uKQogICAgIG5ld1Njcm9sbFBvc2l0aW9uID0gbmV3U2Nyb2xsUG9zaXRpb24uZXhwYW5kZWRU
byhtaW5pbXVtU2Nyb2xsUG9zaXRpb24oKSk7CiAKICAgICBzZXRTY3JvbGxQb3NpdGlvbldpdGhv
dXRDb250ZW50RWRnZUNvbnN0cmFpbnRzKG5ld1Njcm9sbFBvc2l0aW9uKTsKKworICAgIGlmIChz
Y3JvbGxpbmdUcmVlKCktPnNjcm9sbGluZ1BlZm9ybWFuY2VMb2dnaW5nRW5hYmxlZCgpKQorICAg
ICAgICBsb2dFeHBvc2VkVW5maWxsZWRBcmVhKCk7CiB9CiAKIHZvaWQgU2Nyb2xsaW5nVHJlZU5v
ZGVNYWM6OnNldFNjcm9sbFBvc2l0aW9uV2l0aG91dENvbnRlbnRFZGdlQ29uc3RyYWludHMoY29u
c3QgSW50UG9pbnQmIHNjcm9sbFBvc2l0aW9uKQpAQCAtMjg4LDYgKzI5NywzOSBAQCB2b2lkIFNj
cm9sbGluZ1RyZWVOb2RlTWFjOjp1cGRhdGVNYWluRnJhbWVQaW5TdGF0ZShjb25zdCBJbnRQb2lu
dCYgc2Nyb2xsUG9zaXRpbwogICAgIHNjcm9sbGluZ1RyZWUoKS0+c2V0TWFpbkZyYW1lUGluU3Rh
dGUocGlubmVkVG9UaGVMZWZ0LCBwaW5uZWRUb1RoZVJpZ2h0KTsKIH0KIAordm9pZCBTY3JvbGxp
bmdUcmVlTm9kZU1hYzo6bG9nRXhwb3NlZFVuZmlsbGVkQXJlYSgpCit7CisgICAgUmVnaW9uIHBh
aW50ZWRWaXNpYmxlVGlsZXM7CisKKyAgICBEZXF1ZTxDQUxheWVyKj4gbGF5ZXJRdWV1ZTsKKyAg
ICBsYXllclF1ZXVlLmFwcGVuZChtX3Njcm9sbExheWVyLmdldCgpKTsKKyAgICBWZWN0b3I8UmV0
YWluUHRyPFdlYlRpbGVMYXllcj4gPiB0aWxlczsKKworICAgIHdoaWxlKCFsYXllclF1ZXVlLmlz
RW1wdHkoKSkgeworICAgICAgICBDQUxheWVyKiBsYXllciA9IGxheWVyUXVldWUudGFrZUZpcnN0
KCk7CisgICAgICAgIE5TQXJyYXkqIHN1YmxheWVycyA9IFtbbGF5ZXIgc3VibGF5ZXJzXSBjb3B5
XTsKKworICAgICAgICAvLyBJZiB0aGlzIGxheWVyIGlzIHRoZSBwYXJlbnQgb2YgYSB0aWxlLCBp
dCBpcyB0aGUgcGFyZW50IG9mIGFsbCBvZiB0aGUgdGlsZXMgYW5kIG5vdGhpbmcgZWxzZS4KKyAg
ICAgICAgaWYgKFtbc3VibGF5ZXJzIG9iamVjdEF0SW5kZXg6MF0gaXNLaW5kT2ZDbGFzczpbV2Vi
VGlsZUxheWVyIGNsYXNzXV0pIHsKKyAgICAgICAgICAgIGZvciAoQ0FMYXllciogc3VibGF5ZXIg
aW4gc3VibGF5ZXJzKSB7CisgICAgICAgICAgICAgICAgQVNTRVJUKFtzdWJsYXllciBpc0tpbmRP
ZkNsYXNzOltXZWJUaWxlTGF5ZXIgY2xhc3NdXSk7CisgICAgICAgICAgICAgICAgdGlsZXMuYXBw
ZW5kKHN0YXRpY19jYXN0PFdlYlRpbGVMYXllcio+KGxheWVyKSk7CisgICAgICAgICAgICB9CisK
KyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisKKyAgICAgICAgZm9yIChDQUxheWVyKiBz
dWJsYXllciBpbiBzdWJsYXllcnMpCisgICAgICAgICAgICBsYXllclF1ZXVlLmFwcGVuZChzdWJs
YXllcik7CisgICAgICAgIFtzdWJsYXllcnMgcmVsZWFzZV07CisgICAgfQorCisgICAgdW5zaWdu
ZWQgdW5maWxsZWRBcmVhID0gVGlsZUNhY2hlOjpibGFua1BpeGVsQ291bnRGb3JUaWxlcyh0aWxl
cywgdmlld3BvcnRSZWN0KCksIHNjcm9sbFBvc2l0aW9uKCkpOworCisgICAgaWYgKHVuZmlsbGVk
QXJlYSkKKyAgICAgICAgcHJpbnRmKCJTQ1JPTExJTkc6IEV4cG9zZWQgdGlsZWxlc3MgYXJlYS4g
VGltZTogJWYgVW5maWxsZWQgUGl4ZWxzOiAldVxuIiwgV1RGOjpjdXJyZW50VGltZSgpLCB1bmZp
bGxlZEFyZWEpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFC
TEUoVEhSRUFERURfU0NST0xMSU5HKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvVGlsZWRCYWNraW5nLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9UaWxlZEJhY2tpbmcuaAppbmRleCBhY2RjZjVlLi5jZmEzNmIxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9UaWxlZEJhY2tpbmcuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9UaWxlZEJhY2tpbmcuaApAQCAtMzIsMTEgKzMy
LDIwIEBAIGNsYXNzIEludFJlY3Q7CiAKIGNsYXNzIFRpbGVkQmFja2luZyB7CiBwdWJsaWM6Cisg
ICAgVGlsZWRCYWNraW5nKCkKKyAgICAgICAgOiBtX3Njcm9sbGluZ1BlcmZvcm1hbmNlTG9nZ2lu
Z0VuYWJsZWQoMCkKKyAgICB7IH0KICAgICB2aXJ0dWFsIH5UaWxlZEJhY2tpbmcoKSB7IH0KIAog
ICAgIHZpcnR1YWwgdm9pZCB2aXNpYmxlUmVjdENoYW5nZWQoY29uc3QgSW50UmVjdCYpID0gMDsK
ICAgICB2aXJ0dWFsIHZvaWQgc2V0SXNJbldpbmRvdyhib29sKSA9IDA7CiAgICAgdmlydHVhbCB2
b2lkIHNldENhbkhhdmVTY3JvbGxiYXJzKGJvb2wpID0gMDsKKworICAgIHZvaWQgc2V0U2Nyb2xs
aW5nUGVyZm9ybWFuY2VMb2dnaW5nRW5hYmxlZChib29sIGZsYWcpICB7IG1fc2Nyb2xsaW5nUGVy
Zm9ybWFuY2VMb2dnaW5nRW5hYmxlZCA9IGZsYWc7IH0KKyAgICBib29sIHNjcm9sbGluZ1BlcmZv
cm1hbmNlTG9nZ2luZ0VuYWJsZWQoKSBjb25zdCB7IHJldHVybiBtX3Njcm9sbGluZ1BlcmZvcm1h
bmNlTG9nZ2luZ0VuYWJsZWQ7IH0KKworcHJpdmF0ZToKKyAgICBib29sIG1fc2Nyb2xsaW5nUGVy
Zm9ybWFuY2VMb2dnaW5nRW5hYmxlZDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL21hYy9UaWxlQ2Fj
aGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL21hYy9UaWxlQ2FjaGUu
aAppbmRleCA2MWYzMDUwLi4zNDJhYzU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jYS9tYWMvVGlsZUNhY2hlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2EvbWFjL1RpbGVDYWNoZS5oCkBAIC02OCw2ICs2OCwxMSBAQCBwdWJs
aWM6CiAgICAgdm9pZCBzZXRUaWxlRGVidWdCb3JkZXJXaWR0aChmbG9hdCk7CiAgICAgdm9pZCBz
ZXRUaWxlRGVidWdCb3JkZXJDb2xvcihDR0NvbG9yUmVmKTsKIAorICAgIEludFJlY3QgdmlzaWJs
ZVJlY3QoKSB7IHJldHVybiBtX3Zpc2libGVSZWN0OyB9CisKKyAgICB1bnNpZ25lZCBibGFua1Bp
eGVsQ291bnQoKSBjb25zdDsKKyAgICBzdGF0aWMgdW5zaWduZWQgYmxhbmtQaXhlbENvdW50Rm9y
VGlsZXMoVmVjdG9yPFJldGFpblB0cjxXZWJUaWxlTGF5ZXI+ID4sIEludFJlY3QsIEludFBvaW50
KTsKKwogcHJpdmF0ZToKICAgICBUaWxlQ2FjaGUoV2ViVGlsZUNhY2hlTGF5ZXIqLCBjb25zdCBJ
bnRTaXplJiB0aWxlU2l6ZSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NhL21hYy9UaWxlQ2FjaGUubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jYS9tYWMvVGlsZUNhY2hlLm1tCmluZGV4IGNhZWYwNzQuLjdiNGE0MmEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL21hYy9UaWxlQ2FjaGUu
bW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvbWFjL1RpbGVDYWNo
ZS5tbQpAQCAtMjgsNiArMjgsNyBAQAogCiAjaW1wb3J0ICJJbnRSZWN0LmgiCiAjaW1wb3J0ICJQ
bGF0Zm9ybUNBTGF5ZXIuaCIKKyNpbXBvcnQgIlJlZ2lvbi5oIgogI2ltcG9ydCAiV2ViTGF5ZXIu
aCIKICNpbXBvcnQgIldlYlRpbGVDYWNoZUxheWVyLmgiCiAjaW1wb3J0ICJXZWJUaWxlTGF5ZXIu
aCIKQEAgLTMxMSw2ICszMTIsMzQgQEAgdm9pZCBUaWxlQ2FjaGU6OnRpbGVSZXZhbGlkYXRpb25U
aW1lckZpcmVkKFRpbWVyPFRpbGVDYWNoZT4qKQogICAgIHJldmFsaWRhdGVUaWxlcygpOwogfQog
Cit1bnNpZ25lZCBUaWxlQ2FjaGU6OmJsYW5rUGl4ZWxDb3VudCgpIGNvbnN0Cit7CisgICAgVmVj
dG9yPFJldGFpblB0cjxXZWJUaWxlTGF5ZXI+ID4gdGlsZXMobV90aWxlcy5zaXplKCkpOworICAg
IHRpbGVzLmFwcGVuZFJhbmdlKG1fdGlsZXMuYmVnaW4oKS52YWx1ZXMoKSwgbV90aWxlcy5lbmQo
KS52YWx1ZXMoKSk7CisKKyAgICByZXR1cm4gYmxhbmtQaXhlbENvdW50Rm9yVGlsZXModGlsZXMs
IG1fdmlzaWJsZVJlY3QsIEludFBvaW50KDAsMCkpOworfQorCit1bnNpZ25lZCBUaWxlQ2FjaGU6
OmJsYW5rUGl4ZWxDb3VudEZvclRpbGVzKFZlY3RvcjxSZXRhaW5QdHI8V2ViVGlsZUxheWVyPiA+
IHRpbGVzLCBJbnRSZWN0IHZpc2libGVSZWN0LCBJbnRQb2ludCB0aWxlVHJhbnNsYXRpb24pCit7
CisgICAgUmVnaW9uIHBhaW50ZWRWaXNpYmxlVGlsZXM7CisKKyAgICBmb3IgKFZlY3RvcjxSZXRh
aW5QdHI8V2ViVGlsZUxheWVyPiA+Ojpjb25zdF9pdGVyYXRvciBpdCA9IHRpbGVzLmJlZ2luKCks
IGVuZCA9IHRpbGVzLmVuZCgpOyBpdCAhPSBlbmQ7ICsraXQpIHsKKyAgICAgICAgY29uc3QgV2Vi
VGlsZUxheWVyKiB0aWxlTGF5ZXIgPSBpdC0+Z2V0KCk7CisKKyAgICAgICAgSW50UmVjdCB2aXNp
YmxlUGFydChDR1JlY3RPZmZzZXQoW3RpbGVMYXllciBmcmFtZV0sIHRpbGVUcmFuc2xhdGlvbi54
KCksIHRpbGVUcmFuc2xhdGlvbi55KCkpKTsKKyAgICAgICAgdmlzaWJsZVBhcnQuaW50ZXJzZWN0
KHZpc2libGVSZWN0KTsKKworICAgICAgICBpZiAoIXZpc2libGVQYXJ0LmlzRW1wdHkoKSAmJiBb
dGlsZUxheWVyIHJlcGFpbnRDb3VudF0pCisgICAgICAgICAgICBwYWludGVkVmlzaWJsZVRpbGVz
LnVuaXRlKHZpc2libGVQYXJ0KTsKKyAgICB9CisKKyAgICBSZWdpb24gdW5jb3ZlcmVkUmVnaW9u
KHZpc2libGVSZWN0KTsKKyAgICB1bmNvdmVyZWRSZWdpb24uc3VidHJhY3QocGFpbnRlZFZpc2li
bGVUaWxlcyk7CisKKyAgICByZXR1cm4gdW5jb3ZlcmVkUmVnaW9uLnRvdGFsQXJlYSgpOworfQor
CiB2b2lkIFRpbGVDYWNoZTo6cmV2YWxpZGF0ZVRpbGVzKCkKIHsKICAgICAvLyBJZiB0aGUgdW5k
ZXJseWluZyBQbGF0Zm9ybUxheWVyIGhhcyBiZWVuIGRlc3Ryb3llZCwgYnV0IHRoZSBXZWJUaWxl
Q2FjaGVMYXllciBoYXNuJ3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NhL21hYy9XZWJUaWxlTGF5ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NhL21hYy9XZWJUaWxlTGF5ZXIuaAppbmRleCA1NzdlMzRhLi40YTJkNWMxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9tYWMvV2ViVGlsZUxh
eWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvbWFjL1dlYlRp
bGVMYXllci5oCkBAIC0zNyw2ICszNyw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogLSAodm9p
ZClzZXRUaWxlQ2FjaGU6KFdlYkNvcmU6OlRpbGVDYWNoZSopdGlsZUNhY2hlOwogLSAodW5zaWdu
ZWQpaW5jcmVtZW50UmVwYWludENvdW50OworLSAodW5zaWduZWQpcmVwYWludENvdW50OwogQGVu
ZAogCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL21h
Yy9XZWJUaWxlTGF5ZXIubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9t
YWMvV2ViVGlsZUxheWVyLm1tCmluZGV4IDZmN2M4NWMuLmJkNDExNDUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL21hYy9XZWJUaWxlTGF5ZXIubW0KKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvbWFjL1dlYlRpbGVMYXllci5t
bQpAQCAtMjcsMTAgKzI3LDE1IEBACiAjaW1wb3J0ICJXZWJUaWxlTGF5ZXIuaCIKIAogI2ltcG9y
dCAiVGlsZUNhY2hlLmgiCisjaW1wb3J0IDx3dGYvQ3VycmVudFRpbWUuaD4KICNpbXBvcnQgPHd0
Zi9VbnVzZWRQYXJhbS5oPgogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAorQGludGVyZmFj
ZSBXZWJUaWxlTGF5ZXIgKFNjcm9sbGluZ1BlcmZvcm1hbmNlTG9nZ2luZ0ludGVybmFsKQorLSAo
dm9pZClsb2dGaWxsZWRGcmVzaFRpbGU7CitAZW5kCisKIEBpbXBsZW1lbnRhdGlvbiBXZWJUaWxl
TGF5ZXIKIAogLSAoaWQ8Q0FBY3Rpb24+KWFjdGlvbkZvcktleTooTlNTdHJpbmcgKilrZXkKQEAg
LTQzLDggKzQ4LDEyIEBAIC0gKGlkPENBQWN0aW9uPilhY3Rpb25Gb3JLZXk6KE5TU3RyaW5nICop
a2V5CiAKIC0gKHZvaWQpZHJhd0luQ29udGV4dDooQ0dDb250ZXh0UmVmKWNvbnRleHQKIHsKLSAg
ICBpZiAoX3RpbGVDYWNoZSkKKyAgICBpZiAoX3RpbGVDYWNoZSkgewogICAgICAgICBfdGlsZUNh
Y2hlLT5kcmF3TGF5ZXIoc2VsZiwgY29udGV4dCk7CisKKyAgICAgICAgaWYgKF90aWxlQ2FjaGUt
PnNjcm9sbGluZ1BlcmZvcm1hbmNlTG9nZ2luZ0VuYWJsZWQoKSkKKyAgICAgICAgICAgIFtzZWxm
IGxvZ0ZpbGxlZEZyZXNoVGlsZV07CisgICAgfQogfQogCiAtICh2b2lkKXNldFRpbGVDYWNoZToo
V2ViQ29yZTo6VGlsZUNhY2hlKil0aWxlQ2FjaGUKQEAgLTU3LDUgKzY2LDE5IEBAIC0gKHVuc2ln
bmVkKWluY3JlbWVudFJlcGFpbnRDb3VudAogICAgIHJldHVybiArK19yZXBhaW50Q291bnQ7CiB9
CiAKKy0gKHVuc2lnbmVkKXJlcGFpbnRDb3VudAoreworICAgIHJldHVybiBfcmVwYWludENvdW50
OworfQorCistICh2b2lkKWxvZ0ZpbGxlZEZyZXNoVGlsZQoreworICAgIEludFJlY3QgdmlzaWJs
ZVBhcnQoZW5jbG9zaW5nSW50UmVjdChbc2VsZiBmcmFtZV0pKTsKKyAgICB2aXNpYmxlUGFydC5p
bnRlcnNlY3QoX3RpbGVDYWNoZS0+dmlzaWJsZVJlY3QoKSk7CisKKyAgICBpZiAoW3NlbGYgcmVw
YWludENvdW50XSA9PSAxICYmICF2aXNpYmxlUGFydC5pc0VtcHR5KCkpCisgICAgICAgIHByaW50
ZigiU0NST0xMSU5HOiBGaWxsZWQgdmlzaWJsZSBmcmVzaCB0aWxlLiBUaW1lOiAlZiBVbmZpbGxl
ZCBQaXhlbHM6ICV1XG4iLCBXVEY6OmN1cnJlbnRUaW1lKCksIF90aWxlQ2FjaGUtPmJsYW5rUGl4
ZWxDb3VudCgpKTsKK30KKwogQGVuZAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJMYXllckJhY2tpbmcuY3BwCmluZGV4IDI1ZTI3NDUuLjQxNTg5MTcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwCkBAIC01Miw2ICs1
Miw3IEBACiAjaW5jbHVkZSAiUmVuZGVyVmlkZW8uaCIKICNpbmNsdWRlICJSZW5kZXJWaWV3Lmgi
CiAjaW5jbHVkZSAiU2Nyb2xsaW5nQ29vcmRpbmF0b3IuaCIKKyNpbmNsdWRlICJTZXR0aW5ncy5o
IgogI2luY2x1ZGUgIlN0eWxlUmVzb2x2ZXIuaCIKICNpbmNsdWRlICJUaWxlZEJhY2tpbmcuaCIK
IApAQCAtMTIxLDggKzEyMiwxMSBAQCBSZW5kZXJMYXllckJhY2tpbmc6OlJlbmRlckxheWVyQmFj
a2luZyhSZW5kZXJMYXllciogbGF5ZXIpCiAgICAgaWYgKG1fdXNpbmdUaWxlZENhY2hlTGF5ZXIp
IHsKICAgICAgICAgaWYgKFBhZ2UqIHBhZ2UgPSByZW5kZXJlcigpLT5mcmFtZSgpLT5wYWdlKCkp
IHsKICAgICAgICAgICAgIGlmIChUaWxlZEJhY2tpbmcqIHRpbGVkQmFja2luZyA9IG1fZ3JhcGhp
Y3NMYXllci0+dGlsZWRCYWNraW5nKCkpIHsKKyAgICAgICAgICAgICAgICBGcmFtZSogZnJhbWUg
PSByZW5kZXJlcigpLT5mcmFtZSgpOworCiAgICAgICAgICAgICAgICAgdGlsZWRCYWNraW5nLT5z
ZXRJc0luV2luZG93KHBhZ2UtPmlzT25zY3JlZW4oKSk7Ci0gICAgICAgICAgICAgICAgdGlsZWRC
YWNraW5nLT5zZXRDYW5IYXZlU2Nyb2xsYmFycyhyZW5kZXJlcigpLT5mcmFtZSgpLT52aWV3KCkt
PmNhbkhhdmVTY3JvbGxiYXJzKCkpOworICAgICAgICAgICAgICAgIHRpbGVkQmFja2luZy0+c2V0
Q2FuSGF2ZVNjcm9sbGJhcnMoZnJhbWUtPnZpZXcoKS0+Y2FuSGF2ZVNjcm9sbGJhcnMoKSk7Cisg
ICAgICAgICAgICAgICAgdGlsZWRCYWNraW5nLT5zZXRTY3JvbGxpbmdQZXJmb3JtYW5jZUxvZ2dp
bmdFbmFibGVkKGZyYW1lLT5zZXR0aW5ncygpICYmIGZyYW1lLT5zZXR0aW5ncygpLT5zY3JvbGxp
bmdQZXJmb3JtYW5jZUxvZ2dpbmdFbmFibGVkKCkpOwogICAgICAgICAgICAgfQogICAgICAgICB9
CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dl
YktpdDIvQ2hhbmdlTG9nCmluZGV4IGMwYmM4YTUuLjJhN2VhNzEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyNyBAQAorMjAxMi0wOC0wOCAgVGltIEhvcnRvbiAgPHRpbW90aHlfaG9ydG9uQGFwcGxl
LmNvbT4KKworICAgICAgICBBZGQgb3B0aW9uYWwgZGVidWcgbG9nZ2luZyBmb3IgdGlsZWQgc2Ny
b2xsaW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05
MzMwNQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFk
ZCBhIG5ldyBib29sZWFuIHByZWZlcmVuY2UsIFNjcm9sbGluZ1BlcmZvcm1hbmNlTG9nZ2luZ0Vu
YWJsZWQsIHdoaWNoIHdpbGwgYmUgdXNlZCB0byB0b2dnbGUKKyAgICAgICAgdGhlIFdlYkNvcmUg
cGFydHMgb2YgdGhpcyBjaGFuZ2UuCisKKyAgICAgICAgKiBTaGFyZWQvV2ViUHJlZmVyZW5jZXNT
dG9yZS5oOiBBZGQgU2Nyb2xsaW5nUGVyZm9ybWFuY2VMb2dnaW5nRW5hYmxlZC4KKyAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL0MvV0tQcmVmZXJlbmNlcy5jcHA6CisgICAgICAgIChXS1ByZWZlcmVu
Y2VzU2V0U2Nyb2xsaW5nUGVyZm9ybWFuY2VMb2dnaW5nRW5hYmxlZCk6IEFkZGVkLgorICAgICAg
ICAoV0tQcmVmZXJlbmNlc0dldFNjcm9sbGluZ1BlcmZvcm1hbmNlTG9nZ2luZ0VuYWJsZWQpOiBB
ZGRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tQcmVmZXJlbmNlc1ByaXZhdGUuaDog
QWRkIGdldHRlcnMgYW5kIHNldHRlcnMgZm9yIFNjcm9sbGluZ1BlcmZvcm1hbmNlTG9nZ2luZ0Vu
YWJsZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQYWdlOjpXZWJQYWdlKTogQWRkIFNjcm9sbGluZ1BlcmZvcm1hbmNlTG9n
Z2luZ0VuYWJsZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnVwZGF0ZVByZWZlcmVuY2Vz
KTogQWRkIFNjcm9sbGluZ1BlcmZvcm1hbmNlTG9nZ2luZ0VuYWJsZWQuCisgICAgICAgIChXZWJL
aXQ6OldlYlBhZ2U6OnNldFNjcm9sbGluZ1BlcmZvcm1hbmNlTG9nZ2luZ0VuYWJsZWQpOiBQcm9w
YWdhdGUgc2V0dGluZ3MgY2hhbmdlcyB0aHJvdWdoIHRvIEZyYW1lVmlldy4KKyAgICAgICAgKiBX
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpz
Y3JvbGxpbmdQZXJmb3JtYW5jZUxvZ2dpbmdFbmFibGVkKTogQWRkIGEgZ2V0dGVyIGZvciB0aGUg
c2V0dGluZyBzbyB0aGF0IFRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhIGNhbiBhY2Nlc3Mg
aXQuCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9UaWxlZENvcmVBbmltYXRpb25E
cmF3aW5nQXJlYS5tbToKKyAgICAgICAgKFdlYktpdDo6VGlsZWRDb3JlQW5pbWF0aW9uRHJhd2lu
Z0FyZWE6OnVwZGF0ZVByZWZlcmVuY2VzKTogUGFzcyBTY3JvbGxpbmdQZXJmb3JtYW5jZUxvZ2dp
bmdFbmFibGVkIGRvd24gaW50byB0aGUgc2Nyb2xsaW5nIHRocmVhZC4KKwogMjAxMi0wOC0wOCAg
QW5kZXJzIENhcmxzc29uICA8YW5kZXJzY2FAYXBwbGUuY29tPgogCiAgICAgICAgIFJFR1JFU1NJ
T046IENyYXNoIHdoZW4gcGx1Zy1pbiBpbml0aWFsaXphdGlvbiBmYWlscwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvU2hhcmVkL1dlYlByZWZlcmVuY2VzU3RvcmUuaCBiL1NvdXJjZS9XZWJL
aXQyL1NoYXJlZC9XZWJQcmVmZXJlbmNlc1N0b3JlLmgKaW5kZXggNmZjOTViNS4uYWYwODEyZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYlByZWZlcmVuY2VzU3RvcmUuaAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViUHJlZmVyZW5jZXNTdG9yZS5oCkBAIC0xMTcs
NiArMTE3LDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAgICAgbWFjcm8oQXN5bmNocm9ub3VzUGx1
Z2luSW5pdGlhbGl6YXRpb25FbmFibGVkLCBhc3luY2hyb25vdXNQbHVnaW5Jbml0aWFsaXphdGlv
bkVuYWJsZWQsIEJvb2wsIGJvb2wsIGZhbHNlKSBcCiAgICAgbWFjcm8oQXN5bmNocm9ub3VzUGx1
Z2luSW5pdGlhbGl6YXRpb25FbmFibGVkRm9yQWxsUGx1Z2lucywgYXN5bmNocm9ub3VzUGx1Z2lu
SW5pdGlhbGl6YXRpb25FbmFibGVkRm9yQWxsUGx1Z2lucywgQm9vbCwgYm9vbCwgZmFsc2UpIFwK
ICAgICBtYWNybyhBcnRpZmljaWFsUGx1Z2luSW5pdGlhbGl6YXRpb25EZWxheUVuYWJsZWQsIGFy
dGlmaWNpYWxQbHVnaW5Jbml0aWFsaXphdGlvbkRlbGF5RW5hYmxlZCwgQm9vbCwgYm9vbCwgZmFs
c2UpIFwKKyAgICBtYWNybyhTY3JvbGxpbmdQZXJmb3JtYW5jZUxvZ2dpbmdFbmFibGVkLCBzY3Jv
bGxpbmdQZXJmb3JtYW5jZUxvZ2dpbmdFbmFibGVkLCBCb29sLCBib29sLCBmYWxzZSkgXAogICAg
IG1hY3JvKFRoaXJkUGFydHlTdG9yYWdlQmxvY2tpbmdFbmFibGVkLCB0aGlyZFBhcnR5U3RvcmFn
ZUJsb2NraW5nRW5hYmxlZCwgQm9vbCwgYm9vbCwgZmFsc2UpIFwKICAgICBcCiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1ByZWZlcmVuY2VzLmNwcCBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1ByZWZlcmVuY2VzLmNwcAppbmRleCBkNTgz
N2ZjLi42NmQ0ZGNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0Mv
V0tQcmVmZXJlbmNlcy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dL
UHJlZmVyZW5jZXMuY3BwCkBAIC04NzMsMyArODczLDEzIEBAIGJvb2wgV0tQcmVmZXJlbmNlc0dl
dEFydGlmaWNpYWxQbHVnaW5Jbml0aWFsaXphdGlvbkRlbGF5RW5hYmxlZChXS1ByZWZlcmVuY2Vz
UmVmCiB7CiAgICAgcmV0dXJuIHRvSW1wbChwcmVmZXJlbmNlc1JlZiktPmFydGlmaWNpYWxQbHVn
aW5Jbml0aWFsaXphdGlvbkRlbGF5RW5hYmxlZCgpOwogfQorCit2b2lkIFdLUHJlZmVyZW5jZXNT
ZXRTY3JvbGxpbmdQZXJmb3JtYW5jZUxvZ2dpbmdFbmFibGVkKFdLUHJlZmVyZW5jZXNSZWYgcHJl
ZmVyZW5jZXNSZWYsIGJvb2wgZW5hYmxlZCkKK3sKKyAgICB0b0ltcGwocHJlZmVyZW5jZXNSZWYp
LT5zZXRTY3JvbGxpbmdQZXJmb3JtYW5jZUxvZ2dpbmdFbmFibGVkKGVuYWJsZWQpOworfQorCiti
b29sIFdLUHJlZmVyZW5jZXNHZXRTY3JvbGxpbmdQZXJmb3JtYW5jZUxvZ2dpbmdFbmFibGVkKFdL
UHJlZmVyZW5jZXNSZWYgcHJlZmVyZW5jZXNSZWYpCit7CisgICAgcmV0dXJuIHRvSW1wbChwcmVm
ZXJlbmNlc1JlZiktPnNjcm9sbGluZ1BlcmZvcm1hbmNlTG9nZ2luZ0VuYWJsZWQoKTsKK30KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1ByZWZlcmVuY2VzUHJp
dmF0ZS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLUHJlZmVyZW5jZXNQcml2
YXRlLmgKaW5kZXggMmJiZjhkMS4uYjQ2OWQ3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9DL1dLUHJlZmVyZW5jZXNQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9DL1dLUHJlZmVyZW5jZXNQcml2YXRlLmgKQEAgLTIwMyw2ICsyMDMs
MTAgQEAgV0tfRVhQT1JUIGJvb2wgV0tQcmVmZXJlbmNlc0dldEFzeW5jaHJvbm91c1BsdWdpbklu
aXRpYWxpemF0aW9uRW5hYmxlZEZvckFsbFBsdWcKIFdLX0VYUE9SVCB2b2lkIFdLUHJlZmVyZW5j
ZXNTZXRBcnRpZmljaWFsUGx1Z2luSW5pdGlhbGl6YXRpb25EZWxheUVuYWJsZWQoV0tQcmVmZXJl
bmNlc1JlZiBwcmVmZXJlbmNlc1JlZiwgYm9vbCBlbmFibGVkKTsKIFdLX0VYUE9SVCBib29sIFdL
UHJlZmVyZW5jZXNHZXRBcnRpZmljaWFsUGx1Z2luSW5pdGlhbGl6YXRpb25EZWxheUVuYWJsZWQo
V0tQcmVmZXJlbmNlc1JlZiBwcmVmZXJlbmNlc1JlZik7CiAKKy8vIERlZmF1bHRzIHRvIGZhbHNl
CitXS19FWFBPUlQgdm9pZCBXS1ByZWZlcmVuY2VzU2V0U2Nyb2xsaW5nUGVyZm9ybWFuY2VMb2dn
aW5nRW5hYmxlZChXS1ByZWZlcmVuY2VzUmVmIHByZWZlcmVuY2VzUmVmLCBib29sIGVuYWJsZWQp
OworV0tfRVhQT1JUIGJvb2wgV0tQcmVmZXJlbmNlc0dldFNjcm9sbGluZ1BlcmZvcm1hbmNlTG9n
Z2luZ0VuYWJsZWQoV0tQcmVmZXJlbmNlc1JlZiBwcmVmZXJlbmNlc1JlZik7CisKIFdLX0VYUE9S
VCB2b2lkIFdLUHJlZmVyZW5jZXNSZXNldFRlc3RSdW5uZXJPdmVycmlkZXMoV0tQcmVmZXJlbmNl
c1JlZiBwcmVmZXJlbmNlc1JlZik7CiAKICNpZmRlZiBfX2NwbHVzcGx1cwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwIGIvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCmluZGV4IDc1ZDQyMTEuLjU5NjE3
ZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdl
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAK
QEAgLTIxNCw2ICsyMTQsNyBAQCBXZWJQYWdlOjpXZWJQYWdlKHVpbnQ2NF90IHBhZ2VJRCwgY29u
c3QgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyYgcGFyYW1ldGVycykKICAgICAsIG1fYXN5bmNo
cm9ub3VzUGx1Z2luSW5pdGlhbGl6YXRpb25FbmFibGVkKGZhbHNlKQogICAgICwgbV9hc3luY2hy
b25vdXNQbHVnaW5Jbml0aWFsaXphdGlvbkVuYWJsZWRGb3JBbGxQbHVnaW5zKGZhbHNlKQogICAg
ICwgbV9hcnRpZmljaWFsUGx1Z2luSW5pdGlhbGl6YXRpb25EZWxheUVuYWJsZWQoZmFsc2UpCisg
ICAgLCBtX3Njcm9sbGluZ1BlcmZvcm1hbmNlTG9nZ2luZ0VuYWJsZWQoZmFsc2UpCiAjaWYgUExB
VEZPUk0oTUFDKQogICAgICwgbV93aW5kb3dJc1Zpc2libGUoZmFsc2UpCiAgICAgLCBtX2lzU21h
cnRJbnNlcnREZWxldGVFbmFibGVkKHBhcmFtZXRlcnMuaXNTbWFydEluc2VydERlbGV0ZUVuYWJs
ZWQpCkBAIC0xOTc1LDYgKzE5NzYsOCBAQCB2b2lkIFdlYlBhZ2U6OnVwZGF0ZVByZWZlcmVuY2Vz
KGNvbnN0IFdlYlByZWZlcmVuY2VzU3RvcmUmIHN0b3JlKQogICAgIG1fYXN5bmNocm9ub3VzUGx1
Z2luSW5pdGlhbGl6YXRpb25FbmFibGVkRm9yQWxsUGx1Z2lucyA9IHN0b3JlLmdldEJvb2xWYWx1
ZUZvcktleShXZWJQcmVmZXJlbmNlc0tleTo6YXN5bmNocm9ub3VzUGx1Z2luSW5pdGlhbGl6YXRp
b25FbmFibGVkRm9yQWxsUGx1Z2luc0tleSgpKTsKICAgICBtX2FydGlmaWNpYWxQbHVnaW5Jbml0
aWFsaXphdGlvbkRlbGF5RW5hYmxlZCA9IHN0b3JlLmdldEJvb2xWYWx1ZUZvcktleShXZWJQcmVm
ZXJlbmNlc0tleTo6YXJ0aWZpY2lhbFBsdWdpbkluaXRpYWxpemF0aW9uRGVsYXlFbmFibGVkS2V5
KCkpOwogCisgICAgbV9zY3JvbGxpbmdQZXJmb3JtYW5jZUxvZ2dpbmdFbmFibGVkID0gc3RvcmUu
Z2V0Qm9vbFZhbHVlRm9yS2V5KFdlYlByZWZlcmVuY2VzS2V5OjpzY3JvbGxpbmdQZXJmb3JtYW5j
ZUxvZ2dpbmdFbmFibGVkS2V5KCkpOworCiAgICAgLy8gRklYTUU6IFRoaXMgc2hvdWxkIGJlIGdl
bmVyYXRlZCBmcm9tIG1hY3JvIGV4cGFuc2lvbiBmb3IgYWxsIHByZWZlcmVuY2VzLAogICAgIC8v
IGJ1dCB3ZSBjdXJyZW50bHkgZG9uJ3QgbWF0Y2ggdGhlIG5hbWluZyBvZiBXZWJDb3JlIGV4YWN0
bHkgc28gd2UgYXJlCiAgICAgLy8gaGFuZHJvbGxpbmcgdGhlIGJvb2xlYW4gYW5kIGludGVnZXIg
cHJlZmVyZW5jZXMgdW50aWwgdGhhdCBpcyBmaXhlZC4KQEAgLTIwOTIsNiArMjA5NSw4IEBAIHZv
aWQgV2ViUGFnZTo6dXBkYXRlUHJlZmVyZW5jZXMoY29uc3QgV2ViUHJlZmVyZW5jZXNTdG9yZSYg
c3RvcmUpCiAKICAgICBzZXR0aW5ncy0+c2V0RGlhZ25vc3RpY0xvZ2dpbmdFbmFibGVkKHN0b3Jl
LmdldEJvb2xWYWx1ZUZvcktleShXZWJQcmVmZXJlbmNlc0tleTo6ZGlhZ25vc3RpY0xvZ2dpbmdF
bmFibGVkS2V5KCkpKTsKIAorICAgIHNldHRpbmdzLT5zZXRTY3JvbGxpbmdQZXJmb3JtYW5jZUxv
Z2dpbmdFbmFibGVkKG1fc2Nyb2xsaW5nUGVyZm9ybWFuY2VMb2dnaW5nRW5hYmxlZCk7CisKICAg
ICBwbGF0Zm9ybVByZWZlcmVuY2VzRGlkQ2hhbmdlKHN0b3JlKTsKIAogICAgIGlmIChtX2RyYXdp
bmdBcmVhKQpAQCAtMzI4NSw0ICszMjkwLDE1IEBAIHZvaWQgV2ViUGFnZTo6c2V0VmlzaWJpbGl0
eVN0YXRlKGludCB2aXNpYmlsaXR5U3RhdGUsIGJvb2wgaXNJbml0aWFsU3RhdGUpCiB9CiAjZW5k
aWYKIAordm9pZCBXZWJQYWdlOjpzZXRTY3JvbGxpbmdQZXJmb3JtYW5jZUxvZ2dpbmdFbmFibGVk
KGJvb2wgZW5hYmxlZCkKK3sKKyAgICBtX3Njcm9sbGluZ1BlcmZvcm1hbmNlTG9nZ2luZ0VuYWJs
ZWQgPSBlbmFibGVkOworCisgICAgRnJhbWVWaWV3KiBmcmFtZVZpZXcgPSBtX21haW5GcmFtZS0+
Y29yZUZyYW1lKCktPnZpZXcoKTsKKyAgICBpZiAoIWZyYW1lVmlldykKKyAgICAgICAgcmV0dXJu
OworCisgICAgZnJhbWVWaWV3LT5zZXRTY3JvbGxpbmdQZXJmb3JtYW5jZUxvZ2dpbmdFbmFibGVk
KGVuYWJsZWQpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmggYi9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCmluZGV4IDdkODY4OGJjLi5iYmZhYmQwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKQEAgLTU3NSw2ICs1
NzUsOSBAQCBwdWJsaWM6CiAgICAgYm9vbCBhcnRpZmljaWFsUGx1Z2luSW5pdGlhbGl6YXRpb25E
ZWxheUVuYWJsZWQoKSBjb25zdCB7IHJldHVybiBtX2FydGlmaWNpYWxQbHVnaW5Jbml0aWFsaXph
dGlvbkRlbGF5RW5hYmxlZDsgfQogICAgIHZvaWQgc2V0QXJ0aWZpY2lhbFBsdWdpbkluaXRpYWxp
emF0aW9uRGVsYXlFbmFibGVkKGJvb2wgZW5hYmxlZCkgeyBtX2FydGlmaWNpYWxQbHVnaW5Jbml0
aWFsaXphdGlvbkRlbGF5RW5hYmxlZCA9IGVuYWJsZWQ7IH0KIAorICAgIGJvb2wgc2Nyb2xsaW5n
UGVyZm9ybWFuY2VMb2dnaW5nRW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1fc2Nyb2xsaW5nUGVy
Zm9ybWFuY2VMb2dnaW5nRW5hYmxlZDsgfQorICAgIHZvaWQgc2V0U2Nyb2xsaW5nUGVyZm9ybWFu
Y2VMb2dnaW5nRW5hYmxlZChib29sKTsKKwogcHJpdmF0ZToKICAgICBXZWJQYWdlKHVpbnQ2NF90
IHBhZ2VJRCwgY29uc3QgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyYpOwogCkBAIC03NzEsNiAr
Nzc0LDggQEAgcHJpdmF0ZToKICAgICBib29sIG1fYXN5bmNocm9ub3VzUGx1Z2luSW5pdGlhbGl6
YXRpb25FbmFibGVkRm9yQWxsUGx1Z2luczsKICAgICBib29sIG1fYXJ0aWZpY2lhbFBsdWdpbklu
aXRpYWxpemF0aW9uRGVsYXlFbmFibGVkOwogCisgICAgYm9vbCBtX3Njcm9sbGluZ1BlcmZvcm1h
bmNlTG9nZ2luZ0VuYWJsZWQ7CisKICNpZiBQTEFURk9STShNQUMpCiAgICAgLy8gV2hldGhlciB0
aGUgY29udGFpbmluZyB3aW5kb3cgaXMgdmlzaWJsZSBvciBub3QuCiAgICAgYm9vbCBtX3dpbmRv
d0lzVmlzaWJsZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFn
ZS9tYWMvVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWEubW0gYi9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1RpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhLm1tCmlu
ZGV4IDRkZmZiNmUuLjI0MzNkNzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViUGFnZS9tYWMvVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWEubW0KKysrIGIvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9UaWxlZENvcmVBbmltYXRpb25EcmF3
aW5nQXJlYS5tbQpAQCAtMjEyLDcgKzIxMiwxMCBAQCB2b2lkIFRpbGVkQ29yZUFuaW1hdGlvbkRy
YXdpbmdBcmVhOjp1cGRhdGVQcmVmZXJlbmNlcygpCiAgICAgICAgIG1fZGVidWdJbmZvTGF5ZXIg
PSBudWxscHRyOwogICAgIH0KIAorICAgIGJvb2wgc2Nyb2xsaW5nUGVyZm9ybWFuY2VMb2dnaW5n
RW5hYmxlZCA9IG1fd2ViUGFnZS0+c2Nyb2xsaW5nUGVyZm9ybWFuY2VMb2dnaW5nRW5hYmxlZCgp
OworCiAgICAgU2Nyb2xsaW5nVGhyZWFkOjpkaXNwYXRjaChiaW5kKCZTY3JvbGxpbmdUcmVlOjpz
ZXREZWJ1Z1Jvb3RMYXllciwgbV93ZWJQYWdlLT5jb3JlUGFnZSgpLT5zY3JvbGxpbmdDb29yZGlu
YXRvcigpLT5zY3JvbGxpbmdUcmVlKCksIG1fZGVidWdJbmZvTGF5ZXIpKTsKKyAgICBTY3JvbGxp
bmdUaHJlYWQ6OmRpc3BhdGNoKGJpbmQoJlNjcm9sbGluZ1RyZWU6OnNldFNjcm9sbGluZ1BlcmZv
cm1hbmNlTG9nZ2luZ0VuYWJsZWQsIG1fd2ViUGFnZS0+Y29yZVBhZ2UoKS0+c2Nyb2xsaW5nQ29v
cmRpbmF0b3IoKS0+c2Nyb2xsaW5nVHJlZSgpLCBzY3JvbGxpbmdQZXJmb3JtYW5jZUxvZ2dpbmdF
bmFibGVkKSk7CiB9CiAKIHZvaWQgVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWE6OmRpc3Bh
dGNoQWZ0ZXJFbnN1cmluZ1VwZGF0ZWRTY3JvbGxQb3NpdGlvbihjb25zdCBGdW5jdGlvbjx2b2lk
ICgpPiYgZnVuY3Rpb25SZWYpCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>157368</attachid>
            <date>2012-08-08 18:59:14 -0700</date>
            <delta_ts>2012-08-08 19:51:59 -0700</delta_ts>
            <desc>negate the offset like it used to be</desc>
            <filename>spl.diff</filename>
            <type>text/plain</type>
            <size>29007</size>
            <attacher name="Tim Horton">thorton</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA2Yjk3Mjk5Li43YmIzZDAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNzcg
QEAKKzIwMTItMDgtMDggIFRpbSBIb3J0b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+CisK
KyAgICAgICAgQWRkIG9wdGlvbmFsIGRlYnVnIGxvZ2dpbmcgZm9yIHRpbGVkIHNjcm9sbGluZwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTMzMDUKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgc2Nyb2xs
aW5nIHBlcmZvcm1hbmNlIGxvZ2dpbmcgdG8gU2Nyb2xsaW5nVHJlZU5vZGVNYWMgYW5kIFdlYlRp
bGVMYXllciwgd2hpY2ggd2lsbCBsb2cKKyAgICAgICAgdGhlIGFtb3VudCBvZiB1bnBhaW50ZWQg
YXJlYSBleHBvc2VkIGR1cmluZyBzY3JvbGxpbmcgYW5kIHBhaW50aW5nLCByZXNwZWN0aXZlbHku
CisKKyAgICAgICAgVGhlIGxvZ2dpbmcgb3V0cHV0IGxvb2tzIGxpa2UgdGhpczoKKworICAgICAg
ICAgICAgU0NST0xMSU5HOiBFeHBvc2VkIHRpbGVsZXNzIGFyZWEuIFRpbWU6IDEzNDQ0NjQ4NTAu
MTU0ODM5IFVuZmlsbGVkIFBpeGVsczogMTEyMjAwOAorICAgICAgICAgICAgU0NST0xMSU5HOiBG
aWxsZWQgdmlzaWJsZSBmcmVzaCB0aWxlLiBUaW1lOiAxMzQ0NDY0ODUwLjU3NTMwMyBVbmZpbGxl
ZCBQaXhlbHM6IDEwNzgyNzIKKyAgICAgICAgICAgIFNDUk9MTElORzogRmlsbGVkIHZpc2libGUg
ZnJlc2ggdGlsZS4gVGltZTogMTM0NDQ2NDg1MC42NzY1NjkgVW5maWxsZWQgUGl4ZWxzOiA4MjM4
MDgKKyAgICAgICAgICAgIFNDUk9MTElORzogRmlsbGVkIHZpc2libGUgZnJlc2ggdGlsZS4gVGlt
ZTogMTM0NDQ2NDg1MC43OTU4NzcgVW5maWxsZWQgUGl4ZWxzOiA1NjkzNDQKKyAgICAgICAgICAg
IFNDUk9MTElORzogRmlsbGVkIHZpc2libGUgZnJlc2ggdGlsZS4gVGltZTogMTM0NDQ2NDg1MC44
NDY5NDAgVW5maWxsZWQgUGl4ZWxzOiA1MjQyODgKKyAgICAgICAgICAgIFNDUk9MTElORzogRmls
bGVkIHZpc2libGUgZnJlc2ggdGlsZS4gVGltZTogMTM0NDQ2NDg1MC45ODQxMTMgVW5maWxsZWQg
UGl4ZWxzOiAyNjIxNDQKKyAgICAgICAgICAgIFNDUk9MTElORzogRmlsbGVkIHZpc2libGUgZnJl
c2ggdGlsZS4gVGltZTogMTM0NDQ2NDg1MS4wMjc5ODUgVW5maWxsZWQgUGl4ZWxzOiAwCisKKyAg
ICAgICAgTm8gbmV3IHRlc3RzLCBhcyB0aGlzIGlzIGp1c3QgZGVidWdnaW5nIGxvZ2dpbmcuCisK
KyAgICAgICAgKiBXZWJDb3JlLmV4cC5pbjoKKyAgICAgICAgKiBwYWdlL0ZyYW1lVmlldy5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVZpZXc6OnNldFNjcm9sbGluZ1BlcmZvcm1hbmNlTG9n
Z2luZ0VuYWJsZWQpOgorICAgICAgICBBZGRlZCBzZXRTY3JvbGxpbmdQZXJmb3JtYW5jZUxvZ2dp
bmdFbmFibGVkLCBwYXNzZXMgZmxhZyBpbnRvIFRpbGVkQmFja2luZy4KKworICAgICAgICAqIHBh
Z2UvRnJhbWVWaWV3Lmg6CisgICAgICAgICogcGFnZS9TZXR0aW5ncy5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpTZXR0aW5nczo6U2V0dGluZ3MpOgorICAgICAgICAoV2ViQ29yZTo6U2V0dGluZ3M6
OnNldFNjcm9sbGluZ1BlcmZvcm1hbmNlTG9nZ2luZ0VuYWJsZWQpOgorICAgICAgICBBZGRlZCBz
ZXRTY3JvbGxpbmdQZXJmb3JtYW5jZUxvZ2dpbmdFbmFibGVkLCBwYXNzZXMgZmxhZyBpbnRvIEZy
YW1lVmlldy4KKworICAgICAgICAqIHBhZ2UvU2V0dGluZ3MuaDoKKyAgICAgICAgKFdlYkNvcmU6
OlNldHRpbmdzOjpzY3JvbGxpbmdQZXJmb3JtYW5jZUxvZ2dpbmdFbmFibGVkKToKKyAgICAgICAg
KiBwYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNj
cm9sbGluZ1RyZWU6OlNjcm9sbGluZ1RyZWUpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5n
VHJlZTo6c2V0U2Nyb2xsaW5nUGVyZm9ybWFuY2VMb2dnaW5nRW5hYmxlZCk6CisgICAgICAgIChX
ZWJDb3JlOjpTY3JvbGxpbmdUcmVlOjpzY3JvbGxpbmdQZWZvcm1hbmNlTG9nZ2luZ0VuYWJsZWQp
OgorICAgICAgICBBZGRlZCBTY3JvbGxpbmdQZXJmb3JtYW5jZUxvZ2dpbmdFbmFibGVkIHNldHRl
ci9nZXR0ZXI7IHRoaXMgaXMgd2hlcmUgaXQncyBhY2Nlc3NlZCBmcm9tIFNjcm9sbGluZ1RyZWVO
b2RlTWFjLgorCisgICAgICAgICogcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZS5oOgorICAg
ICAgICAqIHBhZ2Uvc2Nyb2xsaW5nL21hYy9TY3JvbGxpbmdUcmVlTm9kZU1hYy5oOgorICAgICAg
ICAoU2Nyb2xsaW5nVHJlZU5vZGVNYWMpOgorICAgICAgICAqIHBhZ2Uvc2Nyb2xsaW5nL21hYy9T
Y3JvbGxpbmdUcmVlTm9kZU1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1RyZWVO
b2RlTWFjOjpzZXRTY3JvbGxQb3NpdGlvbik6CisgICAgICAgIFdoZW4gdXBkYXRpbmcgc2Nyb2xs
IHBvc2l0aW9uLCBjb25kaXRpb25hbGx5IGxvZyB0aGUgYW1vdW50IG9mIHVucGFpbnRlZCBhcmVh
IHRoYXQgd2FzIGp1c3QgZXhwb3NlZC4KKworICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nVHJl
ZU5vZGVNYWM6OmxvZ0V4cG9zZWRUaWxlbGVzc0FyZWEpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL1RpbGVkQmFja2luZy5oOgorICAgICAgICAoV2ViQ29yZTo6VGlsZWRCYWNraW5nOjpU
aWxlZEJhY2tpbmcpOgorICAgICAgICAoV2ViQ29yZTo6VGlsZWRCYWNraW5nOjpzZXRTY3JvbGxp
bmdQZXJmb3JtYW5jZUxvZ2dpbmdFbmFibGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlRpbGVkQmFj
a2luZzo6c2Nyb2xsaW5nUGVyZm9ybWFuY2VMb2dnaW5nRW5hYmxlZCk6CisgICAgICAgIEFkZGVk
IFNjcm9sbGluZ1BlcmZvcm1hbmNlTG9nZ2luZ0VuYWJsZWQgc2V0dGVyL2dldHRlcjsgdGhpcyBp
cyB3aGVyZSBpdCdzIGFjY2Vzc2VkIGZyb20gV2ViVGlsZUxheWVyLgorCisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvY2EvbWFjL1RpbGVDYWNoZS5oOgorICAgICAgICAoV2ViQ29yZTo6VGls
ZUNhY2hlOjp2aXNpYmxlUmVjdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2EvbWFj
L1RpbGVDYWNoZS5tbToKKyAgICAgICAgKFdlYkNvcmU6OlRpbGVDYWNoZTo6YmxhbmtQaXhlbENv
dW50KToKKyAgICAgICAgKFdlYkNvcmU6OlRpbGVDYWNoZTo6YmxhbmtQaXhlbENvdW50Rm9yVGls
ZXMpOgorICAgICAgICBDb21wdXRlIHRoZSBleHBvc2VkLCB1bnBhaW50ZWQgYXJlYSBvZiB0aGUg
dGlsZSBjYWNoZSBieSBpdGVyYXRpbmcgb3ZlciB0aGUgbGF5ZXJzLAorICAgICAgICBjaGVja2lu
ZyBpZiB0aGV5J3ZlIGJlZW4gcGFpbnRlZCwgYW5kIHN1YnRyYWN0aW5nIHBhaW50ZWQgbGF5ZXJz
IGZyb20gdGhlIHRvdGFsIHZpc2libGUgYXJlYS4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2NhL21hYy9XZWJUaWxlTGF5ZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9j
YS9tYWMvV2ViVGlsZUxheWVyLm1tOgorICAgICAgICAoLVtXZWJUaWxlTGF5ZXIgZHJhd0luQ29u
dGV4dDpdKToKKyAgICAgICAgKC1bV2ViVGlsZUxheWVyIHJlcGFpbnRDb3VudF0pOgorICAgICAg
ICAoLVtXZWJUaWxlTGF5ZXIgbG9nRmlsbGVkRnJlc2hUaWxlXSk6CisgICAgICAgIFdoZW4gcGFp
bnRpbmcgYSBXZWJUaWxlTGF5ZXIsIGNvbmRpdGlvbmFsbHkgbG9nIHRoZSBhbW91bnQgb2YgdW5w
YWludGVkIGFyZWEgcmVtYWluaW5nIGFmdGVyIHBhaW50aW5nIHNhaWQgdGlsZS4KKworICAgICAg
ICAqIHJlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyTGF5ZXJCYWNraW5nOjpSZW5kZXJMYXllckJhY2tpbmcpOgorICAgICAgICBQbHVtYiBT
Y3JvbGxpbmdQZXJmb3JtYW5jZUxvZ2dpbmdFbmFibGVkIHRocm91Z2ggdG8gVGlsZWRCYWNraW5n
LgorCiAyMDEyLTA4LTA4ICBUaGlhZ28gTWFyY29zIFAuIFNhbnRvcyAgPHRoaWFnby5zYW50b3NA
aW50ZWwuY29tPgogCiAgICAgICAgIENhbnZhc1JlbmRlckNvbnRleHQyRDo6c2V0Rm9udCgpIHNo
b3VsZCBpZ25vcmUgaW5oZXJpdGVkIHByb3BlcnRpZXMgYW5kIGRlZmF1bHQga2V5d29yZCB2YWx1
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4gYi9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLmV4cC5pbgppbmRleCBjYmY4NTA0Li5iZGNhMTI5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
LmV4cC5pbgpAQCAtOTE0LDYgKzkxNCw3IEBAIF9fWk43V2ViQ29yZThTZXR0aW5nczM1c2V0RXhw
ZXJpbWVudGFsTm90aWZpY2F0aW9uc0VuYWJsZWRFYgogX19aTjdXZWJDb3JlOFNldHRpbmdzMzVz
ZXRUcmVhdHNBbnlUZXh0Q1NTTGlua0FzU3R5bGVzaGVldEViCiBfX1pON1dlYkNvcmU4U2V0dGlu
Z3MzNnNldE9mZmxpbmVXZWJBcHBsaWNhdGlvbkNhY2hlRW5hYmxlZEViCiBfX1pON1dlYkNvcmU4
U2V0dGluZ3MzN3NldEZpeGVkRWxlbWVudHNMYXlvdXRSZWxhdGl2ZVRvRnJhbWVFYgorX19aTjdX
ZWJDb3JlOFNldHRpbmdzMzdzZXRTY3JvbGxpbmdQZXJmb3JtYW5jZUxvZ2dpbmdFbmFibGVkRWIK
IF9fWk43V2ViQ29yZThTZXR0aW5nczQwc2V0SmF2YVNjcmlwdENhbk9wZW5XaW5kb3dzQXV0b21h
dGljYWxseUViCiBfX1pON1dlYkNvcmU4U2V0dGluZ3M0MHNldFRleHREaXJlY3Rpb25TdWJtZW51
SW5jbHVzaW9uQmVoYXZpb3JFTlNfMzdUZXh0RGlyZWN0aW9uU3VibWVudUluY2x1c2lvbkJlaGF2
aW9yRQogX19aTjdXZWJDb3JlOFNldHRpbmdzNDFzZXROZWVkc0tleWJvYXJkRXZlbnREaXNhbWJp
Z3VhdGlvblF1aXJrc0ViCkBAIC05NTksNiArOTYwLDcgQEAgX19aTjdXZWJDb3JlOUZyYW1lVmll
dzI0cGFpbnRDb250ZW50c0ZvclNuYXBzaG90RVBOU18xNUdyYXBoaWNzQ29udGV4dEVSS05TXzdJ
bnQKIF9fWk43V2ViQ29yZTlGcmFtZVZpZXcyNmFkanVzdFBhZ2VIZWlnaHREZXByZWNhdGVkRVBm
ZmZmCiBfX1pON1dlYkNvcmU5RnJhbWVWaWV3MjlzZXRTaG91bGRVcGRhdGVXaGlsZU9mZnNjcmVl
bkViCiBfX1pON1dlYkNvcmU5RnJhbWVWaWV3Mzd1cGRhdGVMYXlvdXRBbmRTdHlsZUlmTmVlZGVk
UmVjdXJzaXZlRXYKK19fWk43V2ViQ29yZTlGcmFtZVZpZXczN3NldFNjcm9sbGluZ1BlcmZvcm1h
bmNlTG9nZ2luZ0VuYWJsZWRFYgogX19aTjdXZWJDb3JlOUZyYW1lVmlldzM4c2Nyb2xsUG9zaXRp
b25DaGFuZ2VkVmlhUGxhdGZvcm1XaWRnZXRFdgogX19aTjdXZWJDb3JlOUZyYW1lVmlldzM4c3lu
Y0NvbXBvc2l0aW5nU3RhdGVJbmNsdWRpbmdTdWJmcmFtZXNFdgogX19aTjdXZWJDb3JlOUZyYW1l
VmlldzZjcmVhdGVFUE5TXzVGcmFtZUUKQEAgLTI1MDIsNiArMjUwNCw3IEBAIF9fWk43V2ViQ29y
ZThEb2N1bWVudDE5YWNjZXNzU1ZHRXh0ZW5zaW9uc0V2CiAKICNpZiBFTkFCTEUoVEhSRUFERURf
U0NST0xMSU5HKQogX19aTjdXZWJDb3JlMTNTY3JvbGxpbmdUcmVlMTdzZXREZWJ1Z1Jvb3RMYXll
ckVQN0NBTGF5ZXIKK19fWk43V2ViQ29yZTEzU2Nyb2xsaW5nVHJlZTM3c2V0U2Nyb2xsaW5nUGVy
Zm9ybWFuY2VMb2dnaW5nRW5hYmxlZEViCiBfX1pON1dlYkNvcmUxM1Njcm9sbGluZ1RyZWUyMXRy
eVRvSGFuZGxlV2hlZWxFdmVudEVSS05TXzE4UGxhdGZvcm1XaGVlbEV2ZW50RQogX19aTjdXZWJD
b3JlMTNTY3JvbGxpbmdUcmVlMjJ1cGRhdGVCYWNrRm9yd2FyZFN0YXRlRWJiCiBfX1pON1dlYkNv
cmUxM1Njcm9sbGluZ1RyZWVEMUV2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Zy
YW1lVmlldy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAKaW5kZXggZDI5
NTY3NC4uY2M1M2Q5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcApAQCAtMzYwMSw0ICsz
NjAxLDEyIEBAIEFYT2JqZWN0Q2FjaGUqIEZyYW1lVmlldzo6YXhPYmplY3RDYWNoZSgpIGNvbnN0
CiAgICAgcmV0dXJuIDA7CiB9CiAgICAgCit2b2lkIEZyYW1lVmlldzo6c2V0U2Nyb2xsaW5nUGVy
Zm9ybWFuY2VMb2dnaW5nRW5hYmxlZChib29sIGZsYWcpCit7CisjaWYgVVNFKEFDQ0VMRVJBVEVE
X0NPTVBPU0lUSU5HKQorICAgIGlmIChUaWxlZEJhY2tpbmcqIHRpbGVkQmFja2luZyA9IHRoaXMt
PnRpbGVkQmFja2luZygpKQorICAgICAgICB0aWxlZEJhY2tpbmctPnNldFNjcm9sbGluZ1BlcmZv
cm1hbmNlTG9nZ2luZ0VuYWJsZWQoZmxhZyk7CisjZW5kaWYKK30KKwogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmgKaW5kZXggODk5YjA3MS4uNWVmMDA2NCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0ZyYW1lVmlldy5oCkBAIC0zNDIsNiArMzQyLDggQEAgcHVibGljOgogICAgIC8v
IHdlIG5lZWQgdGhpcyBmdW5jdGlvbiBpbiBvcmRlciB0byBkbyB0aGUgc2Nyb2xsIG91cnNlbHZl
cy4KICAgICBib29sIHdoZWVsRXZlbnQoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50Jik7CiAKKyAg
ICB2b2lkIHNldFNjcm9sbGluZ1BlcmZvcm1hbmNlTG9nZ2luZ0VuYWJsZWQoYm9vbCk7CisKIHBy
b3RlY3RlZDoKICAgICB2aXJ0dWFsIGJvb2wgc2Nyb2xsQ29udGVudHNGYXN0UGF0aChjb25zdCBJ
bnRTaXplJiBzY3JvbGxEZWx0YSwgY29uc3QgSW50UmVjdCYgcmVjdFRvU2Nyb2xsLCBjb25zdCBJ
bnRSZWN0JiBjbGlwUmVjdCk7CiAgICAgdmlydHVhbCB2b2lkIHNjcm9sbENvbnRlbnRzU2xvd1Bh
dGgoY29uc3QgSW50UmVjdCYgdXBkYXRlUmVjdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL1NldHRpbmdzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MuY3BwCmlu
ZGV4IDk5ODgyZGYuLmU5N2M2NGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0
dGluZ3MuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MuY3BwCkBAIC0yODUs
NiArMjg1LDcgQEAgU2V0dGluZ3M6OlNldHRpbmdzKFBhZ2UqIHBhZ2UpCiAgICAgLCBtX3dpbmRv
d0ZvY3VzUmVzdHJpY3RlZCh0cnVlKQogICAgICwgbV9kaWFnbm9zdGljTG9nZ2luZ0VuYWJsZWQo
ZmFsc2UpCiAgICAgLCBtX3RoaXJkUGFydHlTdG9yYWdlQmxvY2tpbmdFbmFibGVkKGZhbHNlKQor
ICAgICwgbV9zY3JvbGxpbmdQZXJmb3JtYW5jZUxvZ2dpbmdFbmFibGVkKGZhbHNlKQogICAgICwg
bV9sb2Fkc0ltYWdlc0F1dG9tYXRpY2FsbHlUaW1lcih0aGlzLCAmU2V0dGluZ3M6OmxvYWRzSW1h
Z2VzQXV0b21hdGljYWxseVRpbWVyRmlyZWQpCiAgICAgLCBtX2luY3JlbWVudGFsUmVuZGVyaW5n
U3VwcHJlc3Npb25UaW1lb3V0SW5TZWNvbmRzKGRlZmF1bHRJbmNyZW1lbnRhbFJlbmRlcmluZ1N1
cHByZXNzaW9uVGltZW91dEluU2Vjb25kcykKIHsKQEAgLTkzOSw2ICs5NDAsMTQgQEAgdm9pZCBT
ZXR0aW5nczo6c2V0VGlsZWRCYWNraW5nU3RvcmVFbmFibGVkKGJvb2wgZW5hYmxlZCkKICNlbmRp
ZgogfQogCit2b2lkIFNldHRpbmdzOjpzZXRTY3JvbGxpbmdQZXJmb3JtYW5jZUxvZ2dpbmdFbmFi
bGVkKGJvb2wgZW5hYmxlZCkKK3sKKyAgICBtX3Njcm9sbGluZ1BlcmZvcm1hbmNlTG9nZ2luZ0Vu
YWJsZWQgPSBlbmFibGVkOworCisgICAgaWYgKG1fcGFnZS0+bWFpbkZyYW1lKCkgJiYgbV9wYWdl
LT5tYWluRnJhbWUoKS0+dmlldygpKQorICAgICAgICBtX3BhZ2UtPm1haW5GcmFtZSgpLT52aWV3
KCktPnNldFNjcm9sbGluZ1BlcmZvcm1hbmNlTG9nZ2luZ0VuYWJsZWQoZW5hYmxlZCk7Cit9CisK
IHZvaWQgU2V0dGluZ3M6OnNldE1vY2tTY3JvbGxiYXJzRW5hYmxlZChib29sIGZsYWcpCiB7CiAg
ICAgZ01vY2tTY3JvbGxiYXJzRW5hYmxlZCA9IGZsYWc7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL1NldHRpbmdzLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzLmgKaW5k
ZXggZDdiMDY0ZS4uZmQ0ZDlhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0
aW5ncy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MuaApAQCAtNjA0LDYgKzYw
NCw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdm9pZCBzZXRUaGlyZFBhcnR5U3Rv
cmFnZUJsb2NraW5nRW5hYmxlZChib29sIGVuYWJsZWQpIHsgbV90aGlyZFBhcnR5U3RvcmFnZUJs
b2NraW5nRW5hYmxlZCA9IGVuYWJsZWQ7IH0KICAgICAgICAgYm9vbCB0aGlyZFBhcnR5U3RvcmFn
ZUJsb2NraW5nRW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1fdGhpcmRQYXJ0eVN0b3JhZ2VCbG9j
a2luZ0VuYWJsZWQ7IH0KIAorICAgICAgICB2b2lkIHNldFNjcm9sbGluZ1BlcmZvcm1hbmNlTG9n
Z2luZ0VuYWJsZWQoYm9vbCk7CisgICAgICAgIGJvb2wgc2Nyb2xsaW5nUGVyZm9ybWFuY2VMb2dn
aW5nRW5hYmxlZCgpIHsgcmV0dXJuIG1fc2Nyb2xsaW5nUGVyZm9ybWFuY2VMb2dnaW5nRW5hYmxl
ZDsgfQorCiAjaWYgVVNFKEpTQykKICAgICAgICAgc3RhdGljIHZvaWQgc2V0U2hvdWxkUmVzcGVj
dFByaW9yaXR5SW5DU1NBdHRyaWJ1dGVTZXR0ZXJzKGJvb2wpOwogICAgICAgICBzdGF0aWMgYm9v
bCBzaG91bGRSZXNwZWN0UHJpb3JpdHlJbkNTU0F0dHJpYnV0ZVNldHRlcnMoKTsKQEAgLTc5NCw2
ICs3OTcsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICAgICAgYm9vbCBtX3RoaXJkUGFy
dHlTdG9yYWdlQmxvY2tpbmdFbmFibGVkIDogMTsKIAorICAgICAgICBib29sIG1fc2Nyb2xsaW5n
UGVyZm9ybWFuY2VMb2dnaW5nRW5hYmxlZCA6IDE7CisKICAgICAgICAgVGltZXI8U2V0dGluZ3M+
IG1fbG9hZHNJbWFnZXNBdXRvbWF0aWNhbGx5VGltZXI7CiAgICAgICAgIHZvaWQgbG9hZHNJbWFn
ZXNBdXRvbWF0aWNhbGx5VGltZXJGaXJlZChUaW1lcjxTZXR0aW5ncz4qKTsKICAgICAgICAgCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWUuY3BwCmluZGV4
IDM2ZTZhYWUuLmJhNmE1MmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xs
aW5nL1Njcm9sbGluZ1RyZWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5n
L1Njcm9sbGluZ1RyZWUuY3BwCkBAIC01MCw2ICs1MCw3IEBAIFNjcm9sbGluZ1RyZWU6OlNjcm9s
bGluZ1RyZWUoU2Nyb2xsaW5nQ29vcmRpbmF0b3IqIHNjcm9sbGluZ0Nvb3JkaW5hdG9yKQogICAg
ICwgbV9jYW5Hb0ZvcndhcmQoZmFsc2UpCiAgICAgLCBtX21haW5GcmFtZVBpbm5lZFRvVGhlTGVm
dChmYWxzZSkKICAgICAsIG1fbWFpbkZyYW1lUGlubmVkVG9UaGVSaWdodChmYWxzZSkKKyAgICAs
IG1fc2Nyb2xsaW5nUGVyZm9ybWFuY2VMb2dnaW5nRW5hYmxlZChmYWxzZSkKIHsKIH0KIApAQCAt
MjE4LDYgKzIxOSwxNiBAQCBib29sIFNjcm9sbGluZ1RyZWU6OndpbGxXaGVlbEV2ZW50U3RhcnRT
d2lwZUdlc3R1cmUoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50JiB3aAogICAgIHJldHVybiBmYWxz
ZTsKIH0KIAordm9pZCBTY3JvbGxpbmdUcmVlOjpzZXRTY3JvbGxpbmdQZXJmb3JtYW5jZUxvZ2dp
bmdFbmFibGVkKGJvb2wgZmxhZykKK3sKKyAgICBtX3Njcm9sbGluZ1BlcmZvcm1hbmNlTG9nZ2lu
Z0VuYWJsZWQgPSBmbGFnOworfQorCitib29sIFNjcm9sbGluZ1RyZWU6OnNjcm9sbGluZ1BlZm9y
bWFuY2VMb2dnaW5nRW5hYmxlZCgpCit7CisgICAgcmV0dXJuIG1fc2Nyb2xsaW5nUGVyZm9ybWFu
Y2VMb2dnaW5nRW5hYmxlZDsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYg
Ly8gRU5BQkxFKFRIUkVBREVEX1NDUk9MTElORykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWUuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Ny
b2xsaW5nL1Njcm9sbGluZ1RyZWUuaAppbmRleCBlZjc3OTI2Li40MTIwZTllIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZS5oCkBAIC05Nyw2ICs5Nyw5
IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldERlYnVnUm9vdExheWVyKENBTGF5ZXIgKik7CiAjZW5k
aWYKIAorICAgIHZvaWQgc2V0U2Nyb2xsaW5nUGVyZm9ybWFuY2VMb2dnaW5nRW5hYmxlZChib29s
IGZsYWcpOworICAgIGJvb2wgc2Nyb2xsaW5nUGVmb3JtYW5jZUxvZ2dpbmdFbmFibGVkKCk7CisK
IHByaXZhdGU6CiAgICAgZXhwbGljaXQgU2Nyb2xsaW5nVHJlZShTY3JvbGxpbmdDb29yZGluYXRv
ciopOwogCkBAIC0xMTYsNiArMTE5LDggQEAgcHJpdmF0ZToKICAgICBib29sIG1fbWFpbkZyYW1l
UGlubmVkVG9UaGVMZWZ0OwogICAgIGJvb2wgbV9tYWluRnJhbWVQaW5uZWRUb1RoZVJpZ2h0Owog
CisgICAgYm9vbCBtX3Njcm9sbGluZ1BlcmZvcm1hbmNlTG9nZ2luZ0VuYWJsZWQ7CisKICNpZiBQ
TEFURk9STShNQUMpCiAgICAgUmV0YWluUHRyPENBTGF5ZXI+IG1fZGVidWdJbmZvTGF5ZXI7CiAj
ZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL21hYy9TY3Jv
bGxpbmdUcmVlTm9kZU1hYy5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbWFjL1Nj
cm9sbGluZ1RyZWVOb2RlTWFjLmgKaW5kZXggOGExNTc2ZS4uNDMwNGI2MSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGluZ1RyZWVOb2RlTWFjLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGluZ1RyZWVOb2Rl
TWFjLmgKQEAgLTc0LDYgKzc0LDggQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgdXBkYXRlTWFpbkZy
YW1lUGluU3RhdGUoY29uc3QgSW50UG9pbnQmIHNjcm9sbFBvc2l0aW9uKTsKIAorICAgIHZvaWQg
bG9nRXhwb3NlZFVuZmlsbGVkQXJlYSgpOworCiAgICAgU2Nyb2xsRWxhc3RpY2l0eUNvbnRyb2xs
ZXIgbV9zY3JvbGxFbGFzdGljaXR5Q29udHJvbGxlcjsKICAgICBSZXRhaW5QdHI8Q0ZSdW5Mb29w
VGltZXJSZWY+IG1fc25hcFJ1YmJlcmJhbmRUaW1lcjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGluZ1RyZWVOb2RlTWFjLm1tIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGluZ1RyZWVOb2RlTWFjLm1tCmluZGV4
IGEzN2JmNDAuLjU1OTEzNzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xs
aW5nL21hYy9TY3JvbGxpbmdUcmVlTm9kZU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nVHJlZU5vZGVNYWMubW0KQEAgLTMxLDYgKzMxLDEyIEBA
CiAjaW5jbHVkZSAiUGxhdGZvcm1XaGVlbEV2ZW50LmgiCiAjaW5jbHVkZSAiU2Nyb2xsaW5nVHJl
ZS5oIgogI2luY2x1ZGUgIlNjcm9sbGluZ1RyZWVTdGF0ZS5oIgorI2luY2x1ZGUgIlNldHRpbmdz
LmgiCisjaW5jbHVkZSAiVGlsZUNhY2hlLmgiCisjaW5jbHVkZSAiV2ViVGlsZUxheWVyLmgiCisK
KyNpbmNsdWRlIDx3dGYvQ3VycmVudFRpbWUuaD4KKyNpbmNsdWRlIDx3dGYvRGVxdWUuaD4KIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC0yMzMsNiArMjM5LDkgQEAgdm9pZCBTY3JvbGxpbmdU
cmVlTm9kZU1hYzo6c2V0U2Nyb2xsUG9zaXRpb24oY29uc3QgSW50UG9pbnQmIHNjcm9sbFBvc2l0
aW9uKQogICAgIG5ld1Njcm9sbFBvc2l0aW9uID0gbmV3U2Nyb2xsUG9zaXRpb24uZXhwYW5kZWRU
byhtaW5pbXVtU2Nyb2xsUG9zaXRpb24oKSk7CiAKICAgICBzZXRTY3JvbGxQb3NpdGlvbldpdGhv
dXRDb250ZW50RWRnZUNvbnN0cmFpbnRzKG5ld1Njcm9sbFBvc2l0aW9uKTsKKworICAgIGlmIChz
Y3JvbGxpbmdUcmVlKCktPnNjcm9sbGluZ1BlZm9ybWFuY2VMb2dnaW5nRW5hYmxlZCgpKQorICAg
ICAgICBsb2dFeHBvc2VkVW5maWxsZWRBcmVhKCk7CiB9CiAKIHZvaWQgU2Nyb2xsaW5nVHJlZU5v
ZGVNYWM6OnNldFNjcm9sbFBvc2l0aW9uV2l0aG91dENvbnRlbnRFZGdlQ29uc3RyYWludHMoY29u
c3QgSW50UG9pbnQmIHNjcm9sbFBvc2l0aW9uKQpAQCAtMjg4LDYgKzI5Nyw0MCBAQCB2b2lkIFNj
cm9sbGluZ1RyZWVOb2RlTWFjOjp1cGRhdGVNYWluRnJhbWVQaW5TdGF0ZShjb25zdCBJbnRQb2lu
dCYgc2Nyb2xsUG9zaXRpbwogICAgIHNjcm9sbGluZ1RyZWUoKS0+c2V0TWFpbkZyYW1lUGluU3Rh
dGUocGlubmVkVG9UaGVMZWZ0LCBwaW5uZWRUb1RoZVJpZ2h0KTsKIH0KIAordm9pZCBTY3JvbGxp
bmdUcmVlTm9kZU1hYzo6bG9nRXhwb3NlZFVuZmlsbGVkQXJlYSgpCit7CisgICAgUmVnaW9uIHBh
aW50ZWRWaXNpYmxlVGlsZXM7CisKKyAgICBEZXF1ZTxDQUxheWVyKj4gbGF5ZXJRdWV1ZTsKKyAg
ICBsYXllclF1ZXVlLmFwcGVuZChtX3Njcm9sbExheWVyLmdldCgpKTsKKyAgICBWZWN0b3I8UmV0
YWluUHRyPFdlYlRpbGVMYXllcj4gPiB0aWxlczsKKworICAgIHdoaWxlKCFsYXllclF1ZXVlLmlz
RW1wdHkoKSkgeworICAgICAgICBDQUxheWVyKiBsYXllciA9IGxheWVyUXVldWUudGFrZUZpcnN0
KCk7CisgICAgICAgIE5TQXJyYXkqIHN1YmxheWVycyA9IFtbbGF5ZXIgc3VibGF5ZXJzXSBjb3B5
XTsKKworICAgICAgICAvLyBJZiB0aGlzIGxheWVyIGlzIHRoZSBwYXJlbnQgb2YgYSB0aWxlLCBp
dCBpcyB0aGUgcGFyZW50IG9mIGFsbCBvZiB0aGUgdGlsZXMgYW5kIG5vdGhpbmcgZWxzZS4KKyAg
ICAgICAgaWYgKFtbc3VibGF5ZXJzIG9iamVjdEF0SW5kZXg6MF0gaXNLaW5kT2ZDbGFzczpbV2Vi
VGlsZUxheWVyIGNsYXNzXV0pIHsKKyAgICAgICAgICAgIGZvciAoQ0FMYXllciogc3VibGF5ZXIg
aW4gc3VibGF5ZXJzKSB7CisgICAgICAgICAgICAgICAgQVNTRVJUKFtzdWJsYXllciBpc0tpbmRP
ZkNsYXNzOltXZWJUaWxlTGF5ZXIgY2xhc3NdXSk7CisgICAgICAgICAgICAgICAgdGlsZXMuYXBw
ZW5kKHN0YXRpY19jYXN0PFdlYlRpbGVMYXllcio+KGxheWVyKSk7CisgICAgICAgICAgICB9CisK
KyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisKKyAgICAgICAgZm9yIChDQUxheWVyKiBz
dWJsYXllciBpbiBzdWJsYXllcnMpCisgICAgICAgICAgICBsYXllclF1ZXVlLmFwcGVuZChzdWJs
YXllcik7CisgICAgICAgIFtzdWJsYXllcnMgcmVsZWFzZV07CisgICAgfQorCisgICAgSW50UG9p
bnQgc2Nyb2xsUG9zaXRpb24gPSB0aGlzLT5zY3JvbGxQb3NpdGlvbigpOworICAgIHVuc2lnbmVk
IHVuZmlsbGVkQXJlYSA9IFRpbGVDYWNoZTo6YmxhbmtQaXhlbENvdW50Rm9yVGlsZXModGlsZXMs
IHZpZXdwb3J0UmVjdCgpLCBJbnRQb2ludCgtc2Nyb2xsUG9zaXRpb24ueCgpLCAtc2Nyb2xsUG9z
aXRpb24ueSgpKSk7CisKKyAgICBpZiAodW5maWxsZWRBcmVhKQorICAgICAgICBwcmludGYoIlND
Uk9MTElORzogRXhwb3NlZCB0aWxlbGVzcyBhcmVhLiBUaW1lOiAlZiBVbmZpbGxlZCBQaXhlbHM6
ICV1XG4iLCBXVEY6OmN1cnJlbnRUaW1lKCksIHVuZmlsbGVkQXJlYSk7Cit9CisKIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShUSFJFQURFRF9TQ1JPTExJTkcpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9UaWxlZEJhY2tpbmcu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1RpbGVkQmFja2luZy5oCmluZGV4
IGFjZGNmNWUuLmNmYTM2YjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL1RpbGVkQmFja2luZy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL1RpbGVkQmFja2luZy5oCkBAIC0zMiwxMSArMzIsMjAgQEAgY2xhc3MgSW50UmVjdDsKIAog
Y2xhc3MgVGlsZWRCYWNraW5nIHsKIHB1YmxpYzoKKyAgICBUaWxlZEJhY2tpbmcoKQorICAgICAg
ICA6IG1fc2Nyb2xsaW5nUGVyZm9ybWFuY2VMb2dnaW5nRW5hYmxlZCgwKQorICAgIHsgfQogICAg
IHZpcnR1YWwgflRpbGVkQmFja2luZygpIHsgfQogCiAgICAgdmlydHVhbCB2b2lkIHZpc2libGVS
ZWN0Q2hhbmdlZChjb25zdCBJbnRSZWN0JikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBzZXRJc0lu
V2luZG93KGJvb2wpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgc2V0Q2FuSGF2ZVNjcm9sbGJhcnMo
Ym9vbCkgPSAwOworCisgICAgdm9pZCBzZXRTY3JvbGxpbmdQZXJmb3JtYW5jZUxvZ2dpbmdFbmFi
bGVkKGJvb2wgZmxhZykgIHsgbV9zY3JvbGxpbmdQZXJmb3JtYW5jZUxvZ2dpbmdFbmFibGVkID0g
ZmxhZzsgfQorICAgIGJvb2wgc2Nyb2xsaW5nUGVyZm9ybWFuY2VMb2dnaW5nRW5hYmxlZCgpIGNv
bnN0IHsgcmV0dXJuIG1fc2Nyb2xsaW5nUGVyZm9ybWFuY2VMb2dnaW5nRW5hYmxlZDsgfQorCitw
cml2YXRlOgorICAgIGJvb2wgbV9zY3JvbGxpbmdQZXJmb3JtYW5jZUxvZ2dpbmdFbmFibGVkOwog
fTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2EvbWFjL1RpbGVDYWNoZS5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2EvbWFjL1RpbGVDYWNoZS5oCmluZGV4IDYxZjMwNTAuLjM0MmFjNTUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL21hYy9UaWxl
Q2FjaGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9tYWMvVGls
ZUNhY2hlLmgKQEAgLTY4LDYgKzY4LDExIEBAIHB1YmxpYzoKICAgICB2b2lkIHNldFRpbGVEZWJ1
Z0JvcmRlcldpZHRoKGZsb2F0KTsKICAgICB2b2lkIHNldFRpbGVEZWJ1Z0JvcmRlckNvbG9yKENH
Q29sb3JSZWYpOwogCisgICAgSW50UmVjdCB2aXNpYmxlUmVjdCgpIHsgcmV0dXJuIG1fdmlzaWJs
ZVJlY3Q7IH0KKworICAgIHVuc2lnbmVkIGJsYW5rUGl4ZWxDb3VudCgpIGNvbnN0OworICAgIHN0
YXRpYyB1bnNpZ25lZCBibGFua1BpeGVsQ291bnRGb3JUaWxlcyhWZWN0b3I8UmV0YWluUHRyPFdl
YlRpbGVMYXllcj4gPiwgSW50UmVjdCwgSW50UG9pbnQpOworCiBwcml2YXRlOgogICAgIFRpbGVD
YWNoZShXZWJUaWxlQ2FjaGVMYXllciosIGNvbnN0IEludFNpemUmIHRpbGVTaXplKTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvbWFjL1RpbGVDYWNo
ZS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL21hYy9UaWxlQ2FjaGUu
bW0KaW5kZXggY2FlZjA3NC4uN2I0YTQyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2EvbWFjL1RpbGVDYWNoZS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jYS9tYWMvVGlsZUNhY2hlLm1tCkBAIC0yOCw2ICsyOCw3IEBACiAK
ICNpbXBvcnQgIkludFJlY3QuaCIKICNpbXBvcnQgIlBsYXRmb3JtQ0FMYXllci5oIgorI2ltcG9y
dCAiUmVnaW9uLmgiCiAjaW1wb3J0ICJXZWJMYXllci5oIgogI2ltcG9ydCAiV2ViVGlsZUNhY2hl
TGF5ZXIuaCIKICNpbXBvcnQgIldlYlRpbGVMYXllci5oIgpAQCAtMzExLDYgKzMxMiwzNCBAQCB2
b2lkIFRpbGVDYWNoZTo6dGlsZVJldmFsaWRhdGlvblRpbWVyRmlyZWQoVGltZXI8VGlsZUNhY2hl
PiopCiAgICAgcmV2YWxpZGF0ZVRpbGVzKCk7CiB9CiAKK3Vuc2lnbmVkIFRpbGVDYWNoZTo6Ymxh
bmtQaXhlbENvdW50KCkgY29uc3QKK3sKKyAgICBWZWN0b3I8UmV0YWluUHRyPFdlYlRpbGVMYXll
cj4gPiB0aWxlcyhtX3RpbGVzLnNpemUoKSk7CisgICAgdGlsZXMuYXBwZW5kUmFuZ2UobV90aWxl
cy5iZWdpbigpLnZhbHVlcygpLCBtX3RpbGVzLmVuZCgpLnZhbHVlcygpKTsKKworICAgIHJldHVy
biBibGFua1BpeGVsQ291bnRGb3JUaWxlcyh0aWxlcywgbV92aXNpYmxlUmVjdCwgSW50UG9pbnQo
MCwwKSk7Cit9CisKK3Vuc2lnbmVkIFRpbGVDYWNoZTo6YmxhbmtQaXhlbENvdW50Rm9yVGlsZXMo
VmVjdG9yPFJldGFpblB0cjxXZWJUaWxlTGF5ZXI+ID4gdGlsZXMsIEludFJlY3QgdmlzaWJsZVJl
Y3QsIEludFBvaW50IHRpbGVUcmFuc2xhdGlvbikKK3sKKyAgICBSZWdpb24gcGFpbnRlZFZpc2li
bGVUaWxlczsKKworICAgIGZvciAoVmVjdG9yPFJldGFpblB0cjxXZWJUaWxlTGF5ZXI+ID46OmNv
bnN0X2l0ZXJhdG9yIGl0ID0gdGlsZXMuYmVnaW4oKSwgZW5kID0gdGlsZXMuZW5kKCk7IGl0ICE9
IGVuZDsgKytpdCkgeworICAgICAgICBjb25zdCBXZWJUaWxlTGF5ZXIqIHRpbGVMYXllciA9IGl0
LT5nZXQoKTsKKworICAgICAgICBJbnRSZWN0IHZpc2libGVQYXJ0KENHUmVjdE9mZnNldChbdGls
ZUxheWVyIGZyYW1lXSwgdGlsZVRyYW5zbGF0aW9uLngoKSwgdGlsZVRyYW5zbGF0aW9uLnkoKSkp
OworICAgICAgICB2aXNpYmxlUGFydC5pbnRlcnNlY3QodmlzaWJsZVJlY3QpOworCisgICAgICAg
IGlmICghdmlzaWJsZVBhcnQuaXNFbXB0eSgpICYmIFt0aWxlTGF5ZXIgcmVwYWludENvdW50XSkK
KyAgICAgICAgICAgIHBhaW50ZWRWaXNpYmxlVGlsZXMudW5pdGUodmlzaWJsZVBhcnQpOworICAg
IH0KKworICAgIFJlZ2lvbiB1bmNvdmVyZWRSZWdpb24odmlzaWJsZVJlY3QpOworICAgIHVuY292
ZXJlZFJlZ2lvbi5zdWJ0cmFjdChwYWludGVkVmlzaWJsZVRpbGVzKTsKKworICAgIHJldHVybiB1
bmNvdmVyZWRSZWdpb24udG90YWxBcmVhKCk7Cit9CisKIHZvaWQgVGlsZUNhY2hlOjpyZXZhbGlk
YXRlVGlsZXMoKQogewogICAgIC8vIElmIHRoZSB1bmRlcmx5aW5nIFBsYXRmb3JtTGF5ZXIgaGFz
IGJlZW4gZGVzdHJveWVkLCBidXQgdGhlIFdlYlRpbGVDYWNoZUxheWVyIGhhc24ndApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvbWFjL1dlYlRpbGVMYXll
ci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvbWFjL1dlYlRpbGVMYXll
ci5oCmluZGV4IDU3N2UzNGEuLjRhMmQ1YzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NhL21hYy9XZWJUaWxlTGF5ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9tYWMvV2ViVGlsZUxheWVyLmgKQEAgLTM3LDYgKzM3LDcg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAtICh2b2lkKXNldFRpbGVDYWNoZTooV2ViQ29yZTo6
VGlsZUNhY2hlKil0aWxlQ2FjaGU7CiAtICh1bnNpZ25lZClpbmNyZW1lbnRSZXBhaW50Q291bnQ7
CistICh1bnNpZ25lZClyZXBhaW50Q291bnQ7CiBAZW5kCiAKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvbWFjL1dlYlRpbGVMYXllci5tbSBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL21hYy9XZWJUaWxlTGF5ZXIubW0KaW5kZXgg
NmY3Yzg1Yy4uYmQ0MTE0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2EvbWFjL1dlYlRpbGVMYXllci5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jYS9tYWMvV2ViVGlsZUxheWVyLm1tCkBAIC0yNywxMCArMjcsMTUgQEAKICNp
bXBvcnQgIldlYlRpbGVMYXllci5oIgogCiAjaW1wb3J0ICJUaWxlQ2FjaGUuaCIKKyNpbXBvcnQg
PHd0Zi9DdXJyZW50VGltZS5oPgogI2ltcG9ydCA8d3RmL1VudXNlZFBhcmFtLmg+CiAKIHVzaW5n
IG5hbWVzcGFjZSBXZWJDb3JlOwogCitAaW50ZXJmYWNlIFdlYlRpbGVMYXllciAoU2Nyb2xsaW5n
UGVyZm9ybWFuY2VMb2dnaW5nSW50ZXJuYWwpCistICh2b2lkKWxvZ0ZpbGxlZEZyZXNoVGlsZTsK
K0BlbmQKKwogQGltcGxlbWVudGF0aW9uIFdlYlRpbGVMYXllcgogCiAtIChpZDxDQUFjdGlvbj4p
YWN0aW9uRm9yS2V5OihOU1N0cmluZyAqKWtleQpAQCAtNDMsOCArNDgsMTIgQEAgLSAoaWQ8Q0FB
Y3Rpb24+KWFjdGlvbkZvcktleTooTlNTdHJpbmcgKilrZXkKIAogLSAodm9pZClkcmF3SW5Db250
ZXh0OihDR0NvbnRleHRSZWYpY29udGV4dAogewotICAgIGlmIChfdGlsZUNhY2hlKQorICAgIGlm
IChfdGlsZUNhY2hlKSB7CiAgICAgICAgIF90aWxlQ2FjaGUtPmRyYXdMYXllcihzZWxmLCBjb250
ZXh0KTsKKworICAgICAgICBpZiAoX3RpbGVDYWNoZS0+c2Nyb2xsaW5nUGVyZm9ybWFuY2VMb2dn
aW5nRW5hYmxlZCgpKQorICAgICAgICAgICAgW3NlbGYgbG9nRmlsbGVkRnJlc2hUaWxlXTsKKyAg
ICB9CiB9CiAKIC0gKHZvaWQpc2V0VGlsZUNhY2hlOihXZWJDb3JlOjpUaWxlQ2FjaGUqKXRpbGVD
YWNoZQpAQCAtNTcsNSArNjYsMTkgQEAgLSAodW5zaWduZWQpaW5jcmVtZW50UmVwYWludENvdW50
CiAgICAgcmV0dXJuICsrX3JlcGFpbnRDb3VudDsKIH0KIAorLSAodW5zaWduZWQpcmVwYWludENv
dW50Cit7CisgICAgcmV0dXJuIF9yZXBhaW50Q291bnQ7Cit9CisKKy0gKHZvaWQpbG9nRmlsbGVk
RnJlc2hUaWxlCit7CisgICAgSW50UmVjdCB2aXNpYmxlUGFydChlbmNsb3NpbmdJbnRSZWN0KFtz
ZWxmIGZyYW1lXSkpOworICAgIHZpc2libGVQYXJ0LmludGVyc2VjdChfdGlsZUNhY2hlLT52aXNp
YmxlUmVjdCgpKTsKKworICAgIGlmIChbc2VsZiByZXBhaW50Q291bnRdID09IDEgJiYgIXZpc2li
bGVQYXJ0LmlzRW1wdHkoKSkKKyAgICAgICAgcHJpbnRmKCJTQ1JPTExJTkc6IEZpbGxlZCB2aXNp
YmxlIGZyZXNoIHRpbGUuIFRpbWU6ICVmIFVuZmlsbGVkIFBpeGVsczogJXVcbiIsIFdURjo6Y3Vy
cmVudFRpbWUoKSwgX3RpbGVDYWNoZS0+YmxhbmtQaXhlbENvdW50KCkpOworfQorCiBAZW5kCiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHAKaW5k
ZXggMjVlMjc0NS4uNDE1ODkxNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckxheWVyQmFja2luZy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckxheWVyQmFja2luZy5jcHAKQEAgLTUyLDYgKzUyLDcgQEAKICNpbmNsdWRlICJSZW5kZXJW
aWRlby5oIgogI2luY2x1ZGUgIlJlbmRlclZpZXcuaCIKICNpbmNsdWRlICJTY3JvbGxpbmdDb29y
ZGluYXRvci5oIgorI2luY2x1ZGUgIlNldHRpbmdzLmgiCiAjaW5jbHVkZSAiU3R5bGVSZXNvbHZl
ci5oIgogI2luY2x1ZGUgIlRpbGVkQmFja2luZy5oIgogCkBAIC0xMjEsOCArMTIyLDExIEBAIFJl
bmRlckxheWVyQmFja2luZzo6UmVuZGVyTGF5ZXJCYWNraW5nKFJlbmRlckxheWVyKiBsYXllcikK
ICAgICBpZiAobV91c2luZ1RpbGVkQ2FjaGVMYXllcikgewogICAgICAgICBpZiAoUGFnZSogcGFn
ZSA9IHJlbmRlcmVyKCktPmZyYW1lKCktPnBhZ2UoKSkgewogICAgICAgICAgICAgaWYgKFRpbGVk
QmFja2luZyogdGlsZWRCYWNraW5nID0gbV9ncmFwaGljc0xheWVyLT50aWxlZEJhY2tpbmcoKSkg
eworICAgICAgICAgICAgICAgIEZyYW1lKiBmcmFtZSA9IHJlbmRlcmVyKCktPmZyYW1lKCk7CisK
ICAgICAgICAgICAgICAgICB0aWxlZEJhY2tpbmctPnNldElzSW5XaW5kb3cocGFnZS0+aXNPbnNj
cmVlbigpKTsKLSAgICAgICAgICAgICAgICB0aWxlZEJhY2tpbmctPnNldENhbkhhdmVTY3JvbGxi
YXJzKHJlbmRlcmVyKCktPmZyYW1lKCktPnZpZXcoKS0+Y2FuSGF2ZVNjcm9sbGJhcnMoKSk7Cisg
ICAgICAgICAgICAgICAgdGlsZWRCYWNraW5nLT5zZXRDYW5IYXZlU2Nyb2xsYmFycyhmcmFtZS0+
dmlldygpLT5jYW5IYXZlU2Nyb2xsYmFycygpKTsKKyAgICAgICAgICAgICAgICB0aWxlZEJhY2tp
bmctPnNldFNjcm9sbGluZ1BlcmZvcm1hbmNlTG9nZ2luZ0VuYWJsZWQoZnJhbWUtPnNldHRpbmdz
KCkgJiYgZnJhbWUtPnNldHRpbmdzKCktPnNjcm9sbGluZ1BlcmZvcm1hbmNlTG9nZ2luZ0VuYWJs
ZWQoKSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggYzBi
YzhhNS4uMmE3ZWE3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI3IEBACisyMDEyLTA4LTA4ICBU
aW0gSG9ydG9uICA8dGltb3RoeV9ob3J0b25AYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBvcHRp
b25hbCBkZWJ1ZyBsb2dnaW5nIGZvciB0aWxlZCBzY3JvbGxpbmcKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTkzMzA1CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIGEgbmV3IGJvb2xlYW4gcHJlZmVyZW5j
ZSwgU2Nyb2xsaW5nUGVyZm9ybWFuY2VMb2dnaW5nRW5hYmxlZCwgd2hpY2ggd2lsbCBiZSB1c2Vk
IHRvIHRvZ2dsZQorICAgICAgICB0aGUgV2ViQ29yZSBwYXJ0cyBvZiB0aGlzIGNoYW5nZS4KKwor
ICAgICAgICAqIFNoYXJlZC9XZWJQcmVmZXJlbmNlc1N0b3JlLmg6IEFkZCBTY3JvbGxpbmdQZXJm
b3JtYW5jZUxvZ2dpbmdFbmFibGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS1ByZWZl
cmVuY2VzLmNwcDoKKyAgICAgICAgKFdLUHJlZmVyZW5jZXNTZXRTY3JvbGxpbmdQZXJmb3JtYW5j
ZUxvZ2dpbmdFbmFibGVkKTogQWRkZWQuCisgICAgICAgIChXS1ByZWZlcmVuY2VzR2V0U2Nyb2xs
aW5nUGVyZm9ybWFuY2VMb2dnaW5nRW5hYmxlZCk6IEFkZGVkLgorICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvQy9XS1ByZWZlcmVuY2VzUHJpdmF0ZS5oOiBBZGQgZ2V0dGVycyBhbmQgc2V0dGVycyBm
b3IgU2Nyb2xsaW5nUGVyZm9ybWFuY2VMb2dnaW5nRW5hYmxlZC4KKyAgICAgICAgKiBXZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OldlYlBh
Z2UpOiBBZGQgU2Nyb2xsaW5nUGVyZm9ybWFuY2VMb2dnaW5nRW5hYmxlZC4KKyAgICAgICAgKFdl
YktpdDo6V2ViUGFnZTo6dXBkYXRlUHJlZmVyZW5jZXMpOiBBZGQgU2Nyb2xsaW5nUGVyZm9ybWFu
Y2VMb2dnaW5nRW5hYmxlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6c2V0U2Nyb2xsaW5n
UGVyZm9ybWFuY2VMb2dnaW5nRW5hYmxlZCk6IFByb3BhZ2F0ZSBzZXR0aW5ncyBjaGFuZ2VzIHRo
cm91Z2ggdG8gRnJhbWVWaWV3LgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdl
Lmg6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnNjcm9sbGluZ1BlcmZvcm1hbmNlTG9nZ2lu
Z0VuYWJsZWQpOiBBZGQgYSBnZXR0ZXIgZm9yIHRoZSBzZXR0aW5nIHNvIHRoYXQgVGlsZWRDb3Jl
QW5pbWF0aW9uRHJhd2luZ0FyZWEgY2FuIGFjY2VzcyBpdC4KKyAgICAgICAgKiBXZWJQcm9jZXNz
L1dlYlBhZ2UvbWFjL1RpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhLm1tOgorICAgICAgICAo
V2ViS2l0OjpUaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYTo6dXBkYXRlUHJlZmVyZW5jZXMp
OiBQYXNzIFNjcm9sbGluZ1BlcmZvcm1hbmNlTG9nZ2luZ0VuYWJsZWQgZG93biBpbnRvIHRoZSBz
Y3JvbGxpbmcgdGhyZWFkLgorCiAyMDEyLTA4LTA4ICBBbmRlcnMgQ2FybHNzb24gIDxhbmRlcnNj
YUBhcHBsZS5jb20+CiAKICAgICAgICAgUkVHUkVTU0lPTjogQ3Jhc2ggd2hlbiBwbHVnLWluIGlu
aXRpYWxpemF0aW9uIGZhaWxzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2Vi
UHJlZmVyZW5jZXNTdG9yZS5oIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYlByZWZlcmVuY2Vz
U3RvcmUuaAppbmRleCA2ZmM5NWI1Li5hZjA4MTJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9TaGFyZWQvV2ViUHJlZmVyZW5jZXNTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJl
ZC9XZWJQcmVmZXJlbmNlc1N0b3JlLmgKQEAgLTExNyw2ICsxMTcsNyBAQCBuYW1lc3BhY2UgV2Vi
S2l0IHsKICAgICBtYWNybyhBc3luY2hyb25vdXNQbHVnaW5Jbml0aWFsaXphdGlvbkVuYWJsZWQs
IGFzeW5jaHJvbm91c1BsdWdpbkluaXRpYWxpemF0aW9uRW5hYmxlZCwgQm9vbCwgYm9vbCwgZmFs
c2UpIFwKICAgICBtYWNybyhBc3luY2hyb25vdXNQbHVnaW5Jbml0aWFsaXphdGlvbkVuYWJsZWRG
b3JBbGxQbHVnaW5zLCBhc3luY2hyb25vdXNQbHVnaW5Jbml0aWFsaXphdGlvbkVuYWJsZWRGb3JB
bGxQbHVnaW5zLCBCb29sLCBib29sLCBmYWxzZSkgXAogICAgIG1hY3JvKEFydGlmaWNpYWxQbHVn
aW5Jbml0aWFsaXphdGlvbkRlbGF5RW5hYmxlZCwgYXJ0aWZpY2lhbFBsdWdpbkluaXRpYWxpemF0
aW9uRGVsYXlFbmFibGVkLCBCb29sLCBib29sLCBmYWxzZSkgXAorICAgIG1hY3JvKFNjcm9sbGlu
Z1BlcmZvcm1hbmNlTG9nZ2luZ0VuYWJsZWQsIHNjcm9sbGluZ1BlcmZvcm1hbmNlTG9nZ2luZ0Vu
YWJsZWQsIEJvb2wsIGJvb2wsIGZhbHNlKSBcCiAgICAgbWFjcm8oVGhpcmRQYXJ0eVN0b3JhZ2VC
bG9ja2luZ0VuYWJsZWQsIHRoaXJkUGFydHlTdG9yYWdlQmxvY2tpbmdFbmFibGVkLCBCb29sLCBi
b29sLCBmYWxzZSkgXAogICAgIFwKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9DL1dLUHJlZmVyZW5jZXMuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9DL1dLUHJlZmVyZW5jZXMuY3BwCmluZGV4IGQ1ODM3ZmMuLjY2ZDRkY2QgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1ByZWZlcmVuY2VzLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQcmVmZXJlbmNlcy5jcHAKQEAgLTg3Mywz
ICs4NzMsMTMgQEAgYm9vbCBXS1ByZWZlcmVuY2VzR2V0QXJ0aWZpY2lhbFBsdWdpbkluaXRpYWxp
emF0aW9uRGVsYXlFbmFibGVkKFdLUHJlZmVyZW5jZXNSZWYKIHsKICAgICByZXR1cm4gdG9JbXBs
KHByZWZlcmVuY2VzUmVmKS0+YXJ0aWZpY2lhbFBsdWdpbkluaXRpYWxpemF0aW9uRGVsYXlFbmFi
bGVkKCk7CiB9CisKK3ZvaWQgV0tQcmVmZXJlbmNlc1NldFNjcm9sbGluZ1BlcmZvcm1hbmNlTG9n
Z2luZ0VuYWJsZWQoV0tQcmVmZXJlbmNlc1JlZiBwcmVmZXJlbmNlc1JlZiwgYm9vbCBlbmFibGVk
KQoreworICAgIHRvSW1wbChwcmVmZXJlbmNlc1JlZiktPnNldFNjcm9sbGluZ1BlcmZvcm1hbmNl
TG9nZ2luZ0VuYWJsZWQoZW5hYmxlZCk7Cit9CisKK2Jvb2wgV0tQcmVmZXJlbmNlc0dldFNjcm9s
bGluZ1BlcmZvcm1hbmNlTG9nZ2luZ0VuYWJsZWQoV0tQcmVmZXJlbmNlc1JlZiBwcmVmZXJlbmNl
c1JlZikKK3sKKyAgICByZXR1cm4gdG9JbXBsKHByZWZlcmVuY2VzUmVmKS0+c2Nyb2xsaW5nUGVy
Zm9ybWFuY2VMb2dnaW5nRW5hYmxlZCgpOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9DL1dLUHJlZmVyZW5jZXNQcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL0MvV0tQcmVmZXJlbmNlc1ByaXZhdGUuaAppbmRleCAyYmJmOGQxLi5iNDY5
ZDdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQcmVmZXJl
bmNlc1ByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQcmVm
ZXJlbmNlc1ByaXZhdGUuaApAQCAtMjAzLDYgKzIwMywxMCBAQCBXS19FWFBPUlQgYm9vbCBXS1By
ZWZlcmVuY2VzR2V0QXN5bmNocm9ub3VzUGx1Z2luSW5pdGlhbGl6YXRpb25FbmFibGVkRm9yQWxs
UGx1ZwogV0tfRVhQT1JUIHZvaWQgV0tQcmVmZXJlbmNlc1NldEFydGlmaWNpYWxQbHVnaW5Jbml0
aWFsaXphdGlvbkRlbGF5RW5hYmxlZChXS1ByZWZlcmVuY2VzUmVmIHByZWZlcmVuY2VzUmVmLCBi
b29sIGVuYWJsZWQpOwogV0tfRVhQT1JUIGJvb2wgV0tQcmVmZXJlbmNlc0dldEFydGlmaWNpYWxQ
bHVnaW5Jbml0aWFsaXphdGlvbkRlbGF5RW5hYmxlZChXS1ByZWZlcmVuY2VzUmVmIHByZWZlcmVu
Y2VzUmVmKTsKIAorLy8gRGVmYXVsdHMgdG8gZmFsc2UKK1dLX0VYUE9SVCB2b2lkIFdLUHJlZmVy
ZW5jZXNTZXRTY3JvbGxpbmdQZXJmb3JtYW5jZUxvZ2dpbmdFbmFibGVkKFdLUHJlZmVyZW5jZXNS
ZWYgcHJlZmVyZW5jZXNSZWYsIGJvb2wgZW5hYmxlZCk7CitXS19FWFBPUlQgYm9vbCBXS1ByZWZl
cmVuY2VzR2V0U2Nyb2xsaW5nUGVyZm9ybWFuY2VMb2dnaW5nRW5hYmxlZChXS1ByZWZlcmVuY2Vz
UmVmIHByZWZlcmVuY2VzUmVmKTsKKwogV0tfRVhQT1JUIHZvaWQgV0tQcmVmZXJlbmNlc1Jlc2V0
VGVzdFJ1bm5lck92ZXJyaWRlcyhXS1ByZWZlcmVuY2VzUmVmIHByZWZlcmVuY2VzUmVmKTsKIAog
I2lmZGVmIF9fY3BsdXNwbHVzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZS5jcHAKaW5kZXggNzVkNDIxMS4uNTk2MTdkZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcApAQCAtMjE0LDYgKzIxNCw3IEBAIFdlYlBh
Z2U6OldlYlBhZ2UodWludDY0X3QgcGFnZUlELCBjb25zdCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0
ZXJzJiBwYXJhbWV0ZXJzKQogICAgICwgbV9hc3luY2hyb25vdXNQbHVnaW5Jbml0aWFsaXphdGlv
bkVuYWJsZWQoZmFsc2UpCiAgICAgLCBtX2FzeW5jaHJvbm91c1BsdWdpbkluaXRpYWxpemF0aW9u
RW5hYmxlZEZvckFsbFBsdWdpbnMoZmFsc2UpCiAgICAgLCBtX2FydGlmaWNpYWxQbHVnaW5Jbml0
aWFsaXphdGlvbkRlbGF5RW5hYmxlZChmYWxzZSkKKyAgICAsIG1fc2Nyb2xsaW5nUGVyZm9ybWFu
Y2VMb2dnaW5nRW5hYmxlZChmYWxzZSkKICNpZiBQTEFURk9STShNQUMpCiAgICAgLCBtX3dpbmRv
d0lzVmlzaWJsZShmYWxzZSkKICAgICAsIG1faXNTbWFydEluc2VydERlbGV0ZUVuYWJsZWQocGFy
YW1ldGVycy5pc1NtYXJ0SW5zZXJ0RGVsZXRlRW5hYmxlZCkKQEAgLTE5NzUsNiArMTk3Niw4IEBA
IHZvaWQgV2ViUGFnZTo6dXBkYXRlUHJlZmVyZW5jZXMoY29uc3QgV2ViUHJlZmVyZW5jZXNTdG9y
ZSYgc3RvcmUpCiAgICAgbV9hc3luY2hyb25vdXNQbHVnaW5Jbml0aWFsaXphdGlvbkVuYWJsZWRG
b3JBbGxQbHVnaW5zID0gc3RvcmUuZ2V0Qm9vbFZhbHVlRm9yS2V5KFdlYlByZWZlcmVuY2VzS2V5
Ojphc3luY2hyb25vdXNQbHVnaW5Jbml0aWFsaXphdGlvbkVuYWJsZWRGb3JBbGxQbHVnaW5zS2V5
KCkpOwogICAgIG1fYXJ0aWZpY2lhbFBsdWdpbkluaXRpYWxpemF0aW9uRGVsYXlFbmFibGVkID0g
c3RvcmUuZ2V0Qm9vbFZhbHVlRm9yS2V5KFdlYlByZWZlcmVuY2VzS2V5OjphcnRpZmljaWFsUGx1
Z2luSW5pdGlhbGl6YXRpb25EZWxheUVuYWJsZWRLZXkoKSk7CiAKKyAgICBtX3Njcm9sbGluZ1Bl
cmZvcm1hbmNlTG9nZ2luZ0VuYWJsZWQgPSBzdG9yZS5nZXRCb29sVmFsdWVGb3JLZXkoV2ViUHJl
ZmVyZW5jZXNLZXk6OnNjcm9sbGluZ1BlcmZvcm1hbmNlTG9nZ2luZ0VuYWJsZWRLZXkoKSk7CisK
ICAgICAvLyBGSVhNRTogVGhpcyBzaG91bGQgYmUgZ2VuZXJhdGVkIGZyb20gbWFjcm8gZXhwYW5z
aW9uIGZvciBhbGwgcHJlZmVyZW5jZXMsCiAgICAgLy8gYnV0IHdlIGN1cnJlbnRseSBkb24ndCBt
YXRjaCB0aGUgbmFtaW5nIG9mIFdlYkNvcmUgZXhhY3RseSBzbyB3ZSBhcmUKICAgICAvLyBoYW5k
cm9sbGluZyB0aGUgYm9vbGVhbiBhbmQgaW50ZWdlciBwcmVmZXJlbmNlcyB1bnRpbCB0aGF0IGlz
IGZpeGVkLgpAQCAtMjA5Miw2ICsyMDk1LDggQEAgdm9pZCBXZWJQYWdlOjp1cGRhdGVQcmVmZXJl
bmNlcyhjb25zdCBXZWJQcmVmZXJlbmNlc1N0b3JlJiBzdG9yZSkKIAogICAgIHNldHRpbmdzLT5z
ZXREaWFnbm9zdGljTG9nZ2luZ0VuYWJsZWQoc3RvcmUuZ2V0Qm9vbFZhbHVlRm9yS2V5KFdlYlBy
ZWZlcmVuY2VzS2V5OjpkaWFnbm9zdGljTG9nZ2luZ0VuYWJsZWRLZXkoKSkpOwogCisgICAgc2V0
dGluZ3MtPnNldFNjcm9sbGluZ1BlcmZvcm1hbmNlTG9nZ2luZ0VuYWJsZWQobV9zY3JvbGxpbmdQ
ZXJmb3JtYW5jZUxvZ2dpbmdFbmFibGVkKTsKKwogICAgIHBsYXRmb3JtUHJlZmVyZW5jZXNEaWRD
aGFuZ2Uoc3RvcmUpOwogCiAgICAgaWYgKG1fZHJhd2luZ0FyZWEpCkBAIC0zMjg1LDQgKzMyOTAs
MTUgQEAgdm9pZCBXZWJQYWdlOjpzZXRWaXNpYmlsaXR5U3RhdGUoaW50IHZpc2liaWxpdHlTdGF0
ZSwgYm9vbCBpc0luaXRpYWxTdGF0ZSkKIH0KICNlbmRpZgogCit2b2lkIFdlYlBhZ2U6OnNldFNj
cm9sbGluZ1BlcmZvcm1hbmNlTG9nZ2luZ0VuYWJsZWQoYm9vbCBlbmFibGVkKQoreworICAgIG1f
c2Nyb2xsaW5nUGVyZm9ybWFuY2VMb2dnaW5nRW5hYmxlZCA9IGVuYWJsZWQ7CisKKyAgICBGcmFt
ZVZpZXcqIGZyYW1lVmlldyA9IG1fbWFpbkZyYW1lLT5jb3JlRnJhbWUoKS0+dmlldygpOworICAg
IGlmICghZnJhbWVWaWV3KQorICAgICAgICByZXR1cm47CisKKyAgICBmcmFtZVZpZXctPnNldFNj
cm9sbGluZ1BlcmZvcm1hbmNlTG9nZ2luZ0VuYWJsZWQoZW5hYmxlZCk7Cit9CisKIH0gLy8gbmFt
ZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYlBhZ2UuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdl
LmgKaW5kZXggN2Q4Njg4YmMuLmJiZmFiZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlBhZ2UuaApAQCAtNTc1LDYgKzU3NSw5IEBAIHB1YmxpYzoKICAgICBib29s
IGFydGlmaWNpYWxQbHVnaW5Jbml0aWFsaXphdGlvbkRlbGF5RW5hYmxlZCgpIGNvbnN0IHsgcmV0
dXJuIG1fYXJ0aWZpY2lhbFBsdWdpbkluaXRpYWxpemF0aW9uRGVsYXlFbmFibGVkOyB9CiAgICAg
dm9pZCBzZXRBcnRpZmljaWFsUGx1Z2luSW5pdGlhbGl6YXRpb25EZWxheUVuYWJsZWQoYm9vbCBl
bmFibGVkKSB7IG1fYXJ0aWZpY2lhbFBsdWdpbkluaXRpYWxpemF0aW9uRGVsYXlFbmFibGVkID0g
ZW5hYmxlZDsgfQogCisgICAgYm9vbCBzY3JvbGxpbmdQZXJmb3JtYW5jZUxvZ2dpbmdFbmFibGVk
KCkgY29uc3QgeyByZXR1cm4gbV9zY3JvbGxpbmdQZXJmb3JtYW5jZUxvZ2dpbmdFbmFibGVkOyB9
CisgICAgdm9pZCBzZXRTY3JvbGxpbmdQZXJmb3JtYW5jZUxvZ2dpbmdFbmFibGVkKGJvb2wpOwor
CiBwcml2YXRlOgogICAgIFdlYlBhZ2UodWludDY0X3QgcGFnZUlELCBjb25zdCBXZWJQYWdlQ3Jl
YXRpb25QYXJhbWV0ZXJzJik7CiAKQEAgLTc3MSw2ICs3NzQsOCBAQCBwcml2YXRlOgogICAgIGJv
b2wgbV9hc3luY2hyb25vdXNQbHVnaW5Jbml0aWFsaXphdGlvbkVuYWJsZWRGb3JBbGxQbHVnaW5z
OwogICAgIGJvb2wgbV9hcnRpZmljaWFsUGx1Z2luSW5pdGlhbGl6YXRpb25EZWxheUVuYWJsZWQ7
CiAKKyAgICBib29sIG1fc2Nyb2xsaW5nUGVyZm9ybWFuY2VMb2dnaW5nRW5hYmxlZDsKKwogI2lm
IFBMQVRGT1JNKE1BQykKICAgICAvLyBXaGV0aGVyIHRoZSBjb250YWluaW5nIHdpbmRvdyBpcyB2
aXNpYmxlIG9yIG5vdC4KICAgICBib29sIG1fd2luZG93SXNWaXNpYmxlOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9UaWxlZENvcmVBbmltYXRpb25E
cmF3aW5nQXJlYS5tbSBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvVGls
ZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWEubW0KaW5kZXggNGRmZmI2ZS4uMjQzM2Q3NyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9UaWxlZENvcmVB
bmltYXRpb25EcmF3aW5nQXJlYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YlBhZ2UvbWFjL1RpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhLm1tCkBAIC0yMTIsNyArMjEy
LDEwIEBAIHZvaWQgVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWE6OnVwZGF0ZVByZWZlcmVu
Y2VzKCkKICAgICAgICAgbV9kZWJ1Z0luZm9MYXllciA9IG51bGxwdHI7CiAgICAgfQogCisgICAg
Ym9vbCBzY3JvbGxpbmdQZXJmb3JtYW5jZUxvZ2dpbmdFbmFibGVkID0gbV93ZWJQYWdlLT5zY3Jv
bGxpbmdQZXJmb3JtYW5jZUxvZ2dpbmdFbmFibGVkKCk7CisKICAgICBTY3JvbGxpbmdUaHJlYWQ6
OmRpc3BhdGNoKGJpbmQoJlNjcm9sbGluZ1RyZWU6OnNldERlYnVnUm9vdExheWVyLCBtX3dlYlBh
Z2UtPmNvcmVQYWdlKCktPnNjcm9sbGluZ0Nvb3JkaW5hdG9yKCktPnNjcm9sbGluZ1RyZWUoKSwg
bV9kZWJ1Z0luZm9MYXllcikpOworICAgIFNjcm9sbGluZ1RocmVhZDo6ZGlzcGF0Y2goYmluZCgm
U2Nyb2xsaW5nVHJlZTo6c2V0U2Nyb2xsaW5nUGVyZm9ybWFuY2VMb2dnaW5nRW5hYmxlZCwgbV93
ZWJQYWdlLT5jb3JlUGFnZSgpLT5zY3JvbGxpbmdDb29yZGluYXRvcigpLT5zY3JvbGxpbmdUcmVl
KCksIHNjcm9sbGluZ1BlcmZvcm1hbmNlTG9nZ2luZ0VuYWJsZWQpKTsKIH0KIAogdm9pZCBUaWxl
ZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYTo6ZGlzcGF0Y2hBZnRlckVuc3VyaW5nVXBkYXRlZFNj
cm9sbFBvc2l0aW9uKGNvbnN0IEZ1bmN0aW9uPHZvaWQgKCk+JiBmdW5jdGlvblJlZikK
</data>
<flag name="review"
          id="167281"
          type_id="1"
          status="-"
          setter="simon.fraser"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>157373</attachid>
            <date>2012-08-08 19:50:42 -0700</date>
            <delta_ts>2012-08-08 19:58:07 -0700</delta_ts>
            <desc>typo&apos;d &apos;layer&apos; for &apos;sublayer&apos;</desc>
            <filename>spl.diff</filename>
            <type>text/plain</type>
            <size>29033</size>
            <attacher name="Tim Horton">thorton</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA2Yjk3Mjk5Li43YmIzZDAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNzcg
QEAKKzIwMTItMDgtMDggIFRpbSBIb3J0b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+CisK
KyAgICAgICAgQWRkIG9wdGlvbmFsIGRlYnVnIGxvZ2dpbmcgZm9yIHRpbGVkIHNjcm9sbGluZwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTMzMDUKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgc2Nyb2xs
aW5nIHBlcmZvcm1hbmNlIGxvZ2dpbmcgdG8gU2Nyb2xsaW5nVHJlZU5vZGVNYWMgYW5kIFdlYlRp
bGVMYXllciwgd2hpY2ggd2lsbCBsb2cKKyAgICAgICAgdGhlIGFtb3VudCBvZiB1bnBhaW50ZWQg
YXJlYSBleHBvc2VkIGR1cmluZyBzY3JvbGxpbmcgYW5kIHBhaW50aW5nLCByZXNwZWN0aXZlbHku
CisKKyAgICAgICAgVGhlIGxvZ2dpbmcgb3V0cHV0IGxvb2tzIGxpa2UgdGhpczoKKworICAgICAg
ICAgICAgU0NST0xMSU5HOiBFeHBvc2VkIHRpbGVsZXNzIGFyZWEuIFRpbWU6IDEzNDQ0NjQ4NTAu
MTU0ODM5IFVuZmlsbGVkIFBpeGVsczogMTEyMjAwOAorICAgICAgICAgICAgU0NST0xMSU5HOiBG
aWxsZWQgdmlzaWJsZSBmcmVzaCB0aWxlLiBUaW1lOiAxMzQ0NDY0ODUwLjU3NTMwMyBVbmZpbGxl
ZCBQaXhlbHM6IDEwNzgyNzIKKyAgICAgICAgICAgIFNDUk9MTElORzogRmlsbGVkIHZpc2libGUg
ZnJlc2ggdGlsZS4gVGltZTogMTM0NDQ2NDg1MC42NzY1NjkgVW5maWxsZWQgUGl4ZWxzOiA4MjM4
MDgKKyAgICAgICAgICAgIFNDUk9MTElORzogRmlsbGVkIHZpc2libGUgZnJlc2ggdGlsZS4gVGlt
ZTogMTM0NDQ2NDg1MC43OTU4NzcgVW5maWxsZWQgUGl4ZWxzOiA1NjkzNDQKKyAgICAgICAgICAg
IFNDUk9MTElORzogRmlsbGVkIHZpc2libGUgZnJlc2ggdGlsZS4gVGltZTogMTM0NDQ2NDg1MC44
NDY5NDAgVW5maWxsZWQgUGl4ZWxzOiA1MjQyODgKKyAgICAgICAgICAgIFNDUk9MTElORzogRmls
bGVkIHZpc2libGUgZnJlc2ggdGlsZS4gVGltZTogMTM0NDQ2NDg1MC45ODQxMTMgVW5maWxsZWQg
UGl4ZWxzOiAyNjIxNDQKKyAgICAgICAgICAgIFNDUk9MTElORzogRmlsbGVkIHZpc2libGUgZnJl
c2ggdGlsZS4gVGltZTogMTM0NDQ2NDg1MS4wMjc5ODUgVW5maWxsZWQgUGl4ZWxzOiAwCisKKyAg
ICAgICAgTm8gbmV3IHRlc3RzLCBhcyB0aGlzIGlzIGp1c3QgZGVidWdnaW5nIGxvZ2dpbmcuCisK
KyAgICAgICAgKiBXZWJDb3JlLmV4cC5pbjoKKyAgICAgICAgKiBwYWdlL0ZyYW1lVmlldy5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVZpZXc6OnNldFNjcm9sbGluZ1BlcmZvcm1hbmNlTG9n
Z2luZ0VuYWJsZWQpOgorICAgICAgICBBZGRlZCBzZXRTY3JvbGxpbmdQZXJmb3JtYW5jZUxvZ2dp
bmdFbmFibGVkLCBwYXNzZXMgZmxhZyBpbnRvIFRpbGVkQmFja2luZy4KKworICAgICAgICAqIHBh
Z2UvRnJhbWVWaWV3Lmg6CisgICAgICAgICogcGFnZS9TZXR0aW5ncy5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpTZXR0aW5nczo6U2V0dGluZ3MpOgorICAgICAgICAoV2ViQ29yZTo6U2V0dGluZ3M6
OnNldFNjcm9sbGluZ1BlcmZvcm1hbmNlTG9nZ2luZ0VuYWJsZWQpOgorICAgICAgICBBZGRlZCBz
ZXRTY3JvbGxpbmdQZXJmb3JtYW5jZUxvZ2dpbmdFbmFibGVkLCBwYXNzZXMgZmxhZyBpbnRvIEZy
YW1lVmlldy4KKworICAgICAgICAqIHBhZ2UvU2V0dGluZ3MuaDoKKyAgICAgICAgKFdlYkNvcmU6
OlNldHRpbmdzOjpzY3JvbGxpbmdQZXJmb3JtYW5jZUxvZ2dpbmdFbmFibGVkKToKKyAgICAgICAg
KiBwYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNj
cm9sbGluZ1RyZWU6OlNjcm9sbGluZ1RyZWUpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5n
VHJlZTo6c2V0U2Nyb2xsaW5nUGVyZm9ybWFuY2VMb2dnaW5nRW5hYmxlZCk6CisgICAgICAgIChX
ZWJDb3JlOjpTY3JvbGxpbmdUcmVlOjpzY3JvbGxpbmdQZWZvcm1hbmNlTG9nZ2luZ0VuYWJsZWQp
OgorICAgICAgICBBZGRlZCBTY3JvbGxpbmdQZXJmb3JtYW5jZUxvZ2dpbmdFbmFibGVkIHNldHRl
ci9nZXR0ZXI7IHRoaXMgaXMgd2hlcmUgaXQncyBhY2Nlc3NlZCBmcm9tIFNjcm9sbGluZ1RyZWVO
b2RlTWFjLgorCisgICAgICAgICogcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZS5oOgorICAg
ICAgICAqIHBhZ2Uvc2Nyb2xsaW5nL21hYy9TY3JvbGxpbmdUcmVlTm9kZU1hYy5oOgorICAgICAg
ICAoU2Nyb2xsaW5nVHJlZU5vZGVNYWMpOgorICAgICAgICAqIHBhZ2Uvc2Nyb2xsaW5nL21hYy9T
Y3JvbGxpbmdUcmVlTm9kZU1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1RyZWVO
b2RlTWFjOjpzZXRTY3JvbGxQb3NpdGlvbik6CisgICAgICAgIFdoZW4gdXBkYXRpbmcgc2Nyb2xs
IHBvc2l0aW9uLCBjb25kaXRpb25hbGx5IGxvZyB0aGUgYW1vdW50IG9mIHVucGFpbnRlZCBhcmVh
IHRoYXQgd2FzIGp1c3QgZXhwb3NlZC4KKworICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nVHJl
ZU5vZGVNYWM6OmxvZ0V4cG9zZWRUaWxlbGVzc0FyZWEpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL1RpbGVkQmFja2luZy5oOgorICAgICAgICAoV2ViQ29yZTo6VGlsZWRCYWNraW5nOjpU
aWxlZEJhY2tpbmcpOgorICAgICAgICAoV2ViQ29yZTo6VGlsZWRCYWNraW5nOjpzZXRTY3JvbGxp
bmdQZXJmb3JtYW5jZUxvZ2dpbmdFbmFibGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlRpbGVkQmFj
a2luZzo6c2Nyb2xsaW5nUGVyZm9ybWFuY2VMb2dnaW5nRW5hYmxlZCk6CisgICAgICAgIEFkZGVk
IFNjcm9sbGluZ1BlcmZvcm1hbmNlTG9nZ2luZ0VuYWJsZWQgc2V0dGVyL2dldHRlcjsgdGhpcyBp
cyB3aGVyZSBpdCdzIGFjY2Vzc2VkIGZyb20gV2ViVGlsZUxheWVyLgorCisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvY2EvbWFjL1RpbGVDYWNoZS5oOgorICAgICAgICAoV2ViQ29yZTo6VGls
ZUNhY2hlOjp2aXNpYmxlUmVjdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2EvbWFj
L1RpbGVDYWNoZS5tbToKKyAgICAgICAgKFdlYkNvcmU6OlRpbGVDYWNoZTo6YmxhbmtQaXhlbENv
dW50KToKKyAgICAgICAgKFdlYkNvcmU6OlRpbGVDYWNoZTo6YmxhbmtQaXhlbENvdW50Rm9yVGls
ZXMpOgorICAgICAgICBDb21wdXRlIHRoZSBleHBvc2VkLCB1bnBhaW50ZWQgYXJlYSBvZiB0aGUg
dGlsZSBjYWNoZSBieSBpdGVyYXRpbmcgb3ZlciB0aGUgbGF5ZXJzLAorICAgICAgICBjaGVja2lu
ZyBpZiB0aGV5J3ZlIGJlZW4gcGFpbnRlZCwgYW5kIHN1YnRyYWN0aW5nIHBhaW50ZWQgbGF5ZXJz
IGZyb20gdGhlIHRvdGFsIHZpc2libGUgYXJlYS4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2NhL21hYy9XZWJUaWxlTGF5ZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9j
YS9tYWMvV2ViVGlsZUxheWVyLm1tOgorICAgICAgICAoLVtXZWJUaWxlTGF5ZXIgZHJhd0luQ29u
dGV4dDpdKToKKyAgICAgICAgKC1bV2ViVGlsZUxheWVyIHJlcGFpbnRDb3VudF0pOgorICAgICAg
ICAoLVtXZWJUaWxlTGF5ZXIgbG9nRmlsbGVkRnJlc2hUaWxlXSk6CisgICAgICAgIFdoZW4gcGFp
bnRpbmcgYSBXZWJUaWxlTGF5ZXIsIGNvbmRpdGlvbmFsbHkgbG9nIHRoZSBhbW91bnQgb2YgdW5w
YWludGVkIGFyZWEgcmVtYWluaW5nIGFmdGVyIHBhaW50aW5nIHNhaWQgdGlsZS4KKworICAgICAg
ICAqIHJlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyTGF5ZXJCYWNraW5nOjpSZW5kZXJMYXllckJhY2tpbmcpOgorICAgICAgICBQbHVtYiBT
Y3JvbGxpbmdQZXJmb3JtYW5jZUxvZ2dpbmdFbmFibGVkIHRocm91Z2ggdG8gVGlsZWRCYWNraW5n
LgorCiAyMDEyLTA4LTA4ICBUaGlhZ28gTWFyY29zIFAuIFNhbnRvcyAgPHRoaWFnby5zYW50b3NA
aW50ZWwuY29tPgogCiAgICAgICAgIENhbnZhc1JlbmRlckNvbnRleHQyRDo6c2V0Rm9udCgpIHNo
b3VsZCBpZ25vcmUgaW5oZXJpdGVkIHByb3BlcnRpZXMgYW5kIGRlZmF1bHQga2V5d29yZCB2YWx1
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4gYi9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLmV4cC5pbgppbmRleCBjYmY4NTA0Li5iZGNhMTI5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
LmV4cC5pbgpAQCAtOTE0LDYgKzkxNCw3IEBAIF9fWk43V2ViQ29yZThTZXR0aW5nczM1c2V0RXhw
ZXJpbWVudGFsTm90aWZpY2F0aW9uc0VuYWJsZWRFYgogX19aTjdXZWJDb3JlOFNldHRpbmdzMzVz
ZXRUcmVhdHNBbnlUZXh0Q1NTTGlua0FzU3R5bGVzaGVldEViCiBfX1pON1dlYkNvcmU4U2V0dGlu
Z3MzNnNldE9mZmxpbmVXZWJBcHBsaWNhdGlvbkNhY2hlRW5hYmxlZEViCiBfX1pON1dlYkNvcmU4
U2V0dGluZ3MzN3NldEZpeGVkRWxlbWVudHNMYXlvdXRSZWxhdGl2ZVRvRnJhbWVFYgorX19aTjdX
ZWJDb3JlOFNldHRpbmdzMzdzZXRTY3JvbGxpbmdQZXJmb3JtYW5jZUxvZ2dpbmdFbmFibGVkRWIK
IF9fWk43V2ViQ29yZThTZXR0aW5nczQwc2V0SmF2YVNjcmlwdENhbk9wZW5XaW5kb3dzQXV0b21h
dGljYWxseUViCiBfX1pON1dlYkNvcmU4U2V0dGluZ3M0MHNldFRleHREaXJlY3Rpb25TdWJtZW51
SW5jbHVzaW9uQmVoYXZpb3JFTlNfMzdUZXh0RGlyZWN0aW9uU3VibWVudUluY2x1c2lvbkJlaGF2
aW9yRQogX19aTjdXZWJDb3JlOFNldHRpbmdzNDFzZXROZWVkc0tleWJvYXJkRXZlbnREaXNhbWJp
Z3VhdGlvblF1aXJrc0ViCkBAIC05NTksNiArOTYwLDcgQEAgX19aTjdXZWJDb3JlOUZyYW1lVmll
dzI0cGFpbnRDb250ZW50c0ZvclNuYXBzaG90RVBOU18xNUdyYXBoaWNzQ29udGV4dEVSS05TXzdJ
bnQKIF9fWk43V2ViQ29yZTlGcmFtZVZpZXcyNmFkanVzdFBhZ2VIZWlnaHREZXByZWNhdGVkRVBm
ZmZmCiBfX1pON1dlYkNvcmU5RnJhbWVWaWV3MjlzZXRTaG91bGRVcGRhdGVXaGlsZU9mZnNjcmVl
bkViCiBfX1pON1dlYkNvcmU5RnJhbWVWaWV3Mzd1cGRhdGVMYXlvdXRBbmRTdHlsZUlmTmVlZGVk
UmVjdXJzaXZlRXYKK19fWk43V2ViQ29yZTlGcmFtZVZpZXczN3NldFNjcm9sbGluZ1BlcmZvcm1h
bmNlTG9nZ2luZ0VuYWJsZWRFYgogX19aTjdXZWJDb3JlOUZyYW1lVmlldzM4c2Nyb2xsUG9zaXRp
b25DaGFuZ2VkVmlhUGxhdGZvcm1XaWRnZXRFdgogX19aTjdXZWJDb3JlOUZyYW1lVmlldzM4c3lu
Y0NvbXBvc2l0aW5nU3RhdGVJbmNsdWRpbmdTdWJmcmFtZXNFdgogX19aTjdXZWJDb3JlOUZyYW1l
VmlldzZjcmVhdGVFUE5TXzVGcmFtZUUKQEAgLTI1MDIsNiArMjUwNCw3IEBAIF9fWk43V2ViQ29y
ZThEb2N1bWVudDE5YWNjZXNzU1ZHRXh0ZW5zaW9uc0V2CiAKICNpZiBFTkFCTEUoVEhSRUFERURf
U0NST0xMSU5HKQogX19aTjdXZWJDb3JlMTNTY3JvbGxpbmdUcmVlMTdzZXREZWJ1Z1Jvb3RMYXll
ckVQN0NBTGF5ZXIKK19fWk43V2ViQ29yZTEzU2Nyb2xsaW5nVHJlZTM3c2V0U2Nyb2xsaW5nUGVy
Zm9ybWFuY2VMb2dnaW5nRW5hYmxlZEViCiBfX1pON1dlYkNvcmUxM1Njcm9sbGluZ1RyZWUyMXRy
eVRvSGFuZGxlV2hlZWxFdmVudEVSS05TXzE4UGxhdGZvcm1XaGVlbEV2ZW50RQogX19aTjdXZWJD
b3JlMTNTY3JvbGxpbmdUcmVlMjJ1cGRhdGVCYWNrRm9yd2FyZFN0YXRlRWJiCiBfX1pON1dlYkNv
cmUxM1Njcm9sbGluZ1RyZWVEMUV2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Zy
YW1lVmlldy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAKaW5kZXggZDI5
NTY3NC4uY2M1M2Q5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcApAQCAtMzYwMSw0ICsz
NjAxLDEyIEBAIEFYT2JqZWN0Q2FjaGUqIEZyYW1lVmlldzo6YXhPYmplY3RDYWNoZSgpIGNvbnN0
CiAgICAgcmV0dXJuIDA7CiB9CiAgICAgCit2b2lkIEZyYW1lVmlldzo6c2V0U2Nyb2xsaW5nUGVy
Zm9ybWFuY2VMb2dnaW5nRW5hYmxlZChib29sIGZsYWcpCit7CisjaWYgVVNFKEFDQ0VMRVJBVEVE
X0NPTVBPU0lUSU5HKQorICAgIGlmIChUaWxlZEJhY2tpbmcqIHRpbGVkQmFja2luZyA9IHRoaXMt
PnRpbGVkQmFja2luZygpKQorICAgICAgICB0aWxlZEJhY2tpbmctPnNldFNjcm9sbGluZ1BlcmZv
cm1hbmNlTG9nZ2luZ0VuYWJsZWQoZmxhZyk7CisjZW5kaWYKK30KKwogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmgKaW5kZXggODk5YjA3MS4uNWVmMDA2NCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0ZyYW1lVmlldy5oCkBAIC0zNDIsNiArMzQyLDggQEAgcHVibGljOgogICAgIC8v
IHdlIG5lZWQgdGhpcyBmdW5jdGlvbiBpbiBvcmRlciB0byBkbyB0aGUgc2Nyb2xsIG91cnNlbHZl
cy4KICAgICBib29sIHdoZWVsRXZlbnQoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50Jik7CiAKKyAg
ICB2b2lkIHNldFNjcm9sbGluZ1BlcmZvcm1hbmNlTG9nZ2luZ0VuYWJsZWQoYm9vbCk7CisKIHBy
b3RlY3RlZDoKICAgICB2aXJ0dWFsIGJvb2wgc2Nyb2xsQ29udGVudHNGYXN0UGF0aChjb25zdCBJ
bnRTaXplJiBzY3JvbGxEZWx0YSwgY29uc3QgSW50UmVjdCYgcmVjdFRvU2Nyb2xsLCBjb25zdCBJ
bnRSZWN0JiBjbGlwUmVjdCk7CiAgICAgdmlydHVhbCB2b2lkIHNjcm9sbENvbnRlbnRzU2xvd1Bh
dGgoY29uc3QgSW50UmVjdCYgdXBkYXRlUmVjdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL1NldHRpbmdzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MuY3BwCmlu
ZGV4IDk5ODgyZGYuLmU5N2M2NGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0
dGluZ3MuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MuY3BwCkBAIC0yODUs
NiArMjg1LDcgQEAgU2V0dGluZ3M6OlNldHRpbmdzKFBhZ2UqIHBhZ2UpCiAgICAgLCBtX3dpbmRv
d0ZvY3VzUmVzdHJpY3RlZCh0cnVlKQogICAgICwgbV9kaWFnbm9zdGljTG9nZ2luZ0VuYWJsZWQo
ZmFsc2UpCiAgICAgLCBtX3RoaXJkUGFydHlTdG9yYWdlQmxvY2tpbmdFbmFibGVkKGZhbHNlKQor
ICAgICwgbV9zY3JvbGxpbmdQZXJmb3JtYW5jZUxvZ2dpbmdFbmFibGVkKGZhbHNlKQogICAgICwg
bV9sb2Fkc0ltYWdlc0F1dG9tYXRpY2FsbHlUaW1lcih0aGlzLCAmU2V0dGluZ3M6OmxvYWRzSW1h
Z2VzQXV0b21hdGljYWxseVRpbWVyRmlyZWQpCiAgICAgLCBtX2luY3JlbWVudGFsUmVuZGVyaW5n
U3VwcHJlc3Npb25UaW1lb3V0SW5TZWNvbmRzKGRlZmF1bHRJbmNyZW1lbnRhbFJlbmRlcmluZ1N1
cHByZXNzaW9uVGltZW91dEluU2Vjb25kcykKIHsKQEAgLTkzOSw2ICs5NDAsMTQgQEAgdm9pZCBT
ZXR0aW5nczo6c2V0VGlsZWRCYWNraW5nU3RvcmVFbmFibGVkKGJvb2wgZW5hYmxlZCkKICNlbmRp
ZgogfQogCit2b2lkIFNldHRpbmdzOjpzZXRTY3JvbGxpbmdQZXJmb3JtYW5jZUxvZ2dpbmdFbmFi
bGVkKGJvb2wgZW5hYmxlZCkKK3sKKyAgICBtX3Njcm9sbGluZ1BlcmZvcm1hbmNlTG9nZ2luZ0Vu
YWJsZWQgPSBlbmFibGVkOworCisgICAgaWYgKG1fcGFnZS0+bWFpbkZyYW1lKCkgJiYgbV9wYWdl
LT5tYWluRnJhbWUoKS0+dmlldygpKQorICAgICAgICBtX3BhZ2UtPm1haW5GcmFtZSgpLT52aWV3
KCktPnNldFNjcm9sbGluZ1BlcmZvcm1hbmNlTG9nZ2luZ0VuYWJsZWQoZW5hYmxlZCk7Cit9CisK
IHZvaWQgU2V0dGluZ3M6OnNldE1vY2tTY3JvbGxiYXJzRW5hYmxlZChib29sIGZsYWcpCiB7CiAg
ICAgZ01vY2tTY3JvbGxiYXJzRW5hYmxlZCA9IGZsYWc7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL1NldHRpbmdzLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzLmgKaW5k
ZXggZDdiMDY0ZS4uZmQ0ZDlhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0
aW5ncy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MuaApAQCAtNjA0LDYgKzYw
NCw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdm9pZCBzZXRUaGlyZFBhcnR5U3Rv
cmFnZUJsb2NraW5nRW5hYmxlZChib29sIGVuYWJsZWQpIHsgbV90aGlyZFBhcnR5U3RvcmFnZUJs
b2NraW5nRW5hYmxlZCA9IGVuYWJsZWQ7IH0KICAgICAgICAgYm9vbCB0aGlyZFBhcnR5U3RvcmFn
ZUJsb2NraW5nRW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1fdGhpcmRQYXJ0eVN0b3JhZ2VCbG9j
a2luZ0VuYWJsZWQ7IH0KIAorICAgICAgICB2b2lkIHNldFNjcm9sbGluZ1BlcmZvcm1hbmNlTG9n
Z2luZ0VuYWJsZWQoYm9vbCk7CisgICAgICAgIGJvb2wgc2Nyb2xsaW5nUGVyZm9ybWFuY2VMb2dn
aW5nRW5hYmxlZCgpIHsgcmV0dXJuIG1fc2Nyb2xsaW5nUGVyZm9ybWFuY2VMb2dnaW5nRW5hYmxl
ZDsgfQorCiAjaWYgVVNFKEpTQykKICAgICAgICAgc3RhdGljIHZvaWQgc2V0U2hvdWxkUmVzcGVj
dFByaW9yaXR5SW5DU1NBdHRyaWJ1dGVTZXR0ZXJzKGJvb2wpOwogICAgICAgICBzdGF0aWMgYm9v
bCBzaG91bGRSZXNwZWN0UHJpb3JpdHlJbkNTU0F0dHJpYnV0ZVNldHRlcnMoKTsKQEAgLTc5NCw2
ICs3OTcsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICAgICAgYm9vbCBtX3RoaXJkUGFy
dHlTdG9yYWdlQmxvY2tpbmdFbmFibGVkIDogMTsKIAorICAgICAgICBib29sIG1fc2Nyb2xsaW5n
UGVyZm9ybWFuY2VMb2dnaW5nRW5hYmxlZCA6IDE7CisKICAgICAgICAgVGltZXI8U2V0dGluZ3M+
IG1fbG9hZHNJbWFnZXNBdXRvbWF0aWNhbGx5VGltZXI7CiAgICAgICAgIHZvaWQgbG9hZHNJbWFn
ZXNBdXRvbWF0aWNhbGx5VGltZXJGaXJlZChUaW1lcjxTZXR0aW5ncz4qKTsKICAgICAgICAgCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWUuY3BwCmluZGV4
IDM2ZTZhYWUuLmJhNmE1MmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xs
aW5nL1Njcm9sbGluZ1RyZWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5n
L1Njcm9sbGluZ1RyZWUuY3BwCkBAIC01MCw2ICs1MCw3IEBAIFNjcm9sbGluZ1RyZWU6OlNjcm9s
bGluZ1RyZWUoU2Nyb2xsaW5nQ29vcmRpbmF0b3IqIHNjcm9sbGluZ0Nvb3JkaW5hdG9yKQogICAg
ICwgbV9jYW5Hb0ZvcndhcmQoZmFsc2UpCiAgICAgLCBtX21haW5GcmFtZVBpbm5lZFRvVGhlTGVm
dChmYWxzZSkKICAgICAsIG1fbWFpbkZyYW1lUGlubmVkVG9UaGVSaWdodChmYWxzZSkKKyAgICAs
IG1fc2Nyb2xsaW5nUGVyZm9ybWFuY2VMb2dnaW5nRW5hYmxlZChmYWxzZSkKIHsKIH0KIApAQCAt
MjE4LDYgKzIxOSwxNiBAQCBib29sIFNjcm9sbGluZ1RyZWU6OndpbGxXaGVlbEV2ZW50U3RhcnRT
d2lwZUdlc3R1cmUoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50JiB3aAogICAgIHJldHVybiBmYWxz
ZTsKIH0KIAordm9pZCBTY3JvbGxpbmdUcmVlOjpzZXRTY3JvbGxpbmdQZXJmb3JtYW5jZUxvZ2dp
bmdFbmFibGVkKGJvb2wgZmxhZykKK3sKKyAgICBtX3Njcm9sbGluZ1BlcmZvcm1hbmNlTG9nZ2lu
Z0VuYWJsZWQgPSBmbGFnOworfQorCitib29sIFNjcm9sbGluZ1RyZWU6OnNjcm9sbGluZ1BlZm9y
bWFuY2VMb2dnaW5nRW5hYmxlZCgpCit7CisgICAgcmV0dXJuIG1fc2Nyb2xsaW5nUGVyZm9ybWFu
Y2VMb2dnaW5nRW5hYmxlZDsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYg
Ly8gRU5BQkxFKFRIUkVBREVEX1NDUk9MTElORykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWUuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Ny
b2xsaW5nL1Njcm9sbGluZ1RyZWUuaAppbmRleCBlZjc3OTI2Li40MTIwZTllIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZS5oCkBAIC05Nyw2ICs5Nyw5
IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldERlYnVnUm9vdExheWVyKENBTGF5ZXIgKik7CiAjZW5k
aWYKIAorICAgIHZvaWQgc2V0U2Nyb2xsaW5nUGVyZm9ybWFuY2VMb2dnaW5nRW5hYmxlZChib29s
IGZsYWcpOworICAgIGJvb2wgc2Nyb2xsaW5nUGVmb3JtYW5jZUxvZ2dpbmdFbmFibGVkKCk7CisK
IHByaXZhdGU6CiAgICAgZXhwbGljaXQgU2Nyb2xsaW5nVHJlZShTY3JvbGxpbmdDb29yZGluYXRv
ciopOwogCkBAIC0xMTYsNiArMTE5LDggQEAgcHJpdmF0ZToKICAgICBib29sIG1fbWFpbkZyYW1l
UGlubmVkVG9UaGVMZWZ0OwogICAgIGJvb2wgbV9tYWluRnJhbWVQaW5uZWRUb1RoZVJpZ2h0Owog
CisgICAgYm9vbCBtX3Njcm9sbGluZ1BlcmZvcm1hbmNlTG9nZ2luZ0VuYWJsZWQ7CisKICNpZiBQ
TEFURk9STShNQUMpCiAgICAgUmV0YWluUHRyPENBTGF5ZXI+IG1fZGVidWdJbmZvTGF5ZXI7CiAj
ZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL21hYy9TY3Jv
bGxpbmdUcmVlTm9kZU1hYy5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbWFjL1Nj
cm9sbGluZ1RyZWVOb2RlTWFjLmgKaW5kZXggOGExNTc2ZS4uNDMwNGI2MSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGluZ1RyZWVOb2RlTWFjLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGluZ1RyZWVOb2Rl
TWFjLmgKQEAgLTc0LDYgKzc0LDggQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgdXBkYXRlTWFpbkZy
YW1lUGluU3RhdGUoY29uc3QgSW50UG9pbnQmIHNjcm9sbFBvc2l0aW9uKTsKIAorICAgIHZvaWQg
bG9nRXhwb3NlZFVuZmlsbGVkQXJlYSgpOworCiAgICAgU2Nyb2xsRWxhc3RpY2l0eUNvbnRyb2xs
ZXIgbV9zY3JvbGxFbGFzdGljaXR5Q29udHJvbGxlcjsKICAgICBSZXRhaW5QdHI8Q0ZSdW5Mb29w
VGltZXJSZWY+IG1fc25hcFJ1YmJlcmJhbmRUaW1lcjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGluZ1RyZWVOb2RlTWFjLm1tIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGluZ1RyZWVOb2RlTWFjLm1tCmluZGV4
IGEzN2JmNDAuLmJmYjE4ODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xs
aW5nL21hYy9TY3JvbGxpbmdUcmVlTm9kZU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nVHJlZU5vZGVNYWMubW0KQEAgLTMxLDYgKzMxLDEyIEBA
CiAjaW5jbHVkZSAiUGxhdGZvcm1XaGVlbEV2ZW50LmgiCiAjaW5jbHVkZSAiU2Nyb2xsaW5nVHJl
ZS5oIgogI2luY2x1ZGUgIlNjcm9sbGluZ1RyZWVTdGF0ZS5oIgorI2luY2x1ZGUgIlNldHRpbmdz
LmgiCisjaW5jbHVkZSAiVGlsZUNhY2hlLmgiCisjaW5jbHVkZSAiV2ViVGlsZUxheWVyLmgiCisK
KyNpbmNsdWRlIDx3dGYvQ3VycmVudFRpbWUuaD4KKyNpbmNsdWRlIDx3dGYvRGVxdWUuaD4KIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC0yMzMsNiArMjM5LDkgQEAgdm9pZCBTY3JvbGxpbmdU
cmVlTm9kZU1hYzo6c2V0U2Nyb2xsUG9zaXRpb24oY29uc3QgSW50UG9pbnQmIHNjcm9sbFBvc2l0
aW9uKQogICAgIG5ld1Njcm9sbFBvc2l0aW9uID0gbmV3U2Nyb2xsUG9zaXRpb24uZXhwYW5kZWRU
byhtaW5pbXVtU2Nyb2xsUG9zaXRpb24oKSk7CiAKICAgICBzZXRTY3JvbGxQb3NpdGlvbldpdGhv
dXRDb250ZW50RWRnZUNvbnN0cmFpbnRzKG5ld1Njcm9sbFBvc2l0aW9uKTsKKworICAgIGlmIChz
Y3JvbGxpbmdUcmVlKCktPnNjcm9sbGluZ1BlZm9ybWFuY2VMb2dnaW5nRW5hYmxlZCgpKQorICAg
ICAgICBsb2dFeHBvc2VkVW5maWxsZWRBcmVhKCk7CiB9CiAKIHZvaWQgU2Nyb2xsaW5nVHJlZU5v
ZGVNYWM6OnNldFNjcm9sbFBvc2l0aW9uV2l0aG91dENvbnRlbnRFZGdlQ29uc3RyYWludHMoY29u
c3QgSW50UG9pbnQmIHNjcm9sbFBvc2l0aW9uKQpAQCAtMjg4LDYgKzI5NywzOSBAQCB2b2lkIFNj
cm9sbGluZ1RyZWVOb2RlTWFjOjp1cGRhdGVNYWluRnJhbWVQaW5TdGF0ZShjb25zdCBJbnRQb2lu
dCYgc2Nyb2xsUG9zaXRpbwogICAgIHNjcm9sbGluZ1RyZWUoKS0+c2V0TWFpbkZyYW1lUGluU3Rh
dGUocGlubmVkVG9UaGVMZWZ0LCBwaW5uZWRUb1RoZVJpZ2h0KTsKIH0KIAordm9pZCBTY3JvbGxp
bmdUcmVlTm9kZU1hYzo6bG9nRXhwb3NlZFVuZmlsbGVkQXJlYSgpCit7CisgICAgUmVnaW9uIHBh
aW50ZWRWaXNpYmxlVGlsZXM7CisKKyAgICBEZXF1ZTxDQUxheWVyKj4gbGF5ZXJRdWV1ZTsKKyAg
ICBsYXllclF1ZXVlLmFwcGVuZChtX3Njcm9sbExheWVyLmdldCgpKTsKKyAgICBWZWN0b3I8UmV0
YWluUHRyPFdlYlRpbGVMYXllcj4gPiB0aWxlczsKKworICAgIHdoaWxlKCFsYXllclF1ZXVlLmlz
RW1wdHkoKSAmJiB0aWxlcy5pc0VtcHR5KCkpIHsKKyAgICAgICAgQ0FMYXllciogbGF5ZXIgPSBs
YXllclF1ZXVlLnRha2VGaXJzdCgpOworICAgICAgICBOU0FycmF5KiBzdWJsYXllcnMgPSBbW2xh
eWVyIHN1YmxheWVyc10gY29weV07CisKKyAgICAgICAgLy8gSWYgdGhpcyBsYXllciBpcyB0aGUg
cGFyZW50IG9mIGEgdGlsZSwgaXQgaXMgdGhlIHBhcmVudCBvZiBhbGwgb2YgdGhlIHRpbGVzIGFu
ZCBub3RoaW5nIGVsc2UuCisgICAgICAgIGlmIChbW3N1YmxheWVycyBvYmplY3RBdEluZGV4OjBd
IGlzS2luZE9mQ2xhc3M6W1dlYlRpbGVMYXllciBjbGFzc11dKSB7CisgICAgICAgICAgICBmb3Ig
KENBTGF5ZXIqIHN1YmxheWVyIGluIHN1YmxheWVycykgeworICAgICAgICAgICAgICAgIEFTU0VS
VChbc3VibGF5ZXIgaXNLaW5kT2ZDbGFzczpbV2ViVGlsZUxheWVyIGNsYXNzXV0pOworICAgICAg
ICAgICAgICAgIHRpbGVzLmFwcGVuZChzdGF0aWNfY2FzdDxXZWJUaWxlTGF5ZXIqPihzdWJsYXll
cikpOworICAgICAgICAgICAgfQorICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgZm9yIChD
QUxheWVyKiBzdWJsYXllciBpbiBzdWJsYXllcnMpCisgICAgICAgICAgICAgICAgbGF5ZXJRdWV1
ZS5hcHBlbmQoc3VibGF5ZXIpOworICAgICAgICB9CisKKyAgICAgICAgW3N1YmxheWVycyByZWxl
YXNlXTsKKyAgICB9CisKKyAgICBJbnRQb2ludCBzY3JvbGxQb3NpdGlvbiA9IHRoaXMtPnNjcm9s
bFBvc2l0aW9uKCk7CisgICAgdW5zaWduZWQgdW5maWxsZWRBcmVhID0gVGlsZUNhY2hlOjpibGFu
a1BpeGVsQ291bnRGb3JUaWxlcyh0aWxlcywgdmlld3BvcnRSZWN0KCksIEludFBvaW50KC1zY3Jv
bGxQb3NpdGlvbi54KCksIC1zY3JvbGxQb3NpdGlvbi55KCkpKTsKKworICAgIGlmICh1bmZpbGxl
ZEFyZWEpCisgICAgICAgIHByaW50ZigiU0NST0xMSU5HOiBFeHBvc2VkIHRpbGVsZXNzIGFyZWEu
IFRpbWU6ICVmIFVuZmlsbGVkIFBpeGVsczogJXVcbiIsIFdURjo6Y3VycmVudFRpbWUoKSwgdW5m
aWxsZWRBcmVhKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5B
QkxFKFRIUkVBREVEX1NDUk9MTElORykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL1RpbGVkQmFja2luZy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvVGlsZWRCYWNraW5nLmgKaW5kZXggYWNkY2Y1ZS4uY2ZhMzZiMSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvVGlsZWRCYWNraW5nLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvVGlsZWRCYWNraW5nLmgKQEAgLTMyLDExICsz
MiwyMCBAQCBjbGFzcyBJbnRSZWN0OwogCiBjbGFzcyBUaWxlZEJhY2tpbmcgewogcHVibGljOgor
ICAgIFRpbGVkQmFja2luZygpCisgICAgICAgIDogbV9zY3JvbGxpbmdQZXJmb3JtYW5jZUxvZ2dp
bmdFbmFibGVkKDApCisgICAgeyB9CiAgICAgdmlydHVhbCB+VGlsZWRCYWNraW5nKCkgeyB9CiAK
ICAgICB2aXJ0dWFsIHZvaWQgdmlzaWJsZVJlY3RDaGFuZ2VkKGNvbnN0IEludFJlY3QmKSA9IDA7
CiAgICAgdmlydHVhbCB2b2lkIHNldElzSW5XaW5kb3coYm9vbCkgPSAwOwogICAgIHZpcnR1YWwg
dm9pZCBzZXRDYW5IYXZlU2Nyb2xsYmFycyhib29sKSA9IDA7CisKKyAgICB2b2lkIHNldFNjcm9s
bGluZ1BlcmZvcm1hbmNlTG9nZ2luZ0VuYWJsZWQoYm9vbCBmbGFnKSAgeyBtX3Njcm9sbGluZ1Bl
cmZvcm1hbmNlTG9nZ2luZ0VuYWJsZWQgPSBmbGFnOyB9CisgICAgYm9vbCBzY3JvbGxpbmdQZXJm
b3JtYW5jZUxvZ2dpbmdFbmFibGVkKCkgY29uc3QgeyByZXR1cm4gbV9zY3JvbGxpbmdQZXJmb3Jt
YW5jZUxvZ2dpbmdFbmFibGVkOyB9CisKK3ByaXZhdGU6CisgICAgYm9vbCBtX3Njcm9sbGluZ1Bl
cmZvcm1hbmNlTG9nZ2luZ0VuYWJsZWQ7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9tYWMvVGlsZUNh
Y2hlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9tYWMvVGlsZUNhY2hl
LmgKaW5kZXggNjFmMzA1MC4uMzQyYWM1NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2EvbWFjL1RpbGVDYWNoZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NhL21hYy9UaWxlQ2FjaGUuaApAQCAtNjgsNiArNjgsMTEgQEAgcHVi
bGljOgogICAgIHZvaWQgc2V0VGlsZURlYnVnQm9yZGVyV2lkdGgoZmxvYXQpOwogICAgIHZvaWQg
c2V0VGlsZURlYnVnQm9yZGVyQ29sb3IoQ0dDb2xvclJlZik7CiAKKyAgICBJbnRSZWN0IHZpc2li
bGVSZWN0KCkgeyByZXR1cm4gbV92aXNpYmxlUmVjdDsgfQorCisgICAgdW5zaWduZWQgYmxhbmtQ
aXhlbENvdW50KCkgY29uc3Q7CisgICAgc3RhdGljIHVuc2lnbmVkIGJsYW5rUGl4ZWxDb3VudEZv
clRpbGVzKFZlY3RvcjxSZXRhaW5QdHI8V2ViVGlsZUxheWVyPiA+LCBJbnRSZWN0LCBJbnRQb2lu
dCk7CisKIHByaXZhdGU6CiAgICAgVGlsZUNhY2hlKFdlYlRpbGVDYWNoZUxheWVyKiwgY29uc3Qg
SW50U2l6ZSYgdGlsZVNpemUpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jYS9tYWMvVGlsZUNhY2hlLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2EvbWFjL1RpbGVDYWNoZS5tbQppbmRleCBjYWVmMDc0Li43YjRhNDJhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9tYWMvVGlsZUNhY2hl
Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL21hYy9UaWxlQ2Fj
aGUubW0KQEAgLTI4LDYgKzI4LDcgQEAKIAogI2ltcG9ydCAiSW50UmVjdC5oIgogI2ltcG9ydCAi
UGxhdGZvcm1DQUxheWVyLmgiCisjaW1wb3J0ICJSZWdpb24uaCIKICNpbXBvcnQgIldlYkxheWVy
LmgiCiAjaW1wb3J0ICJXZWJUaWxlQ2FjaGVMYXllci5oIgogI2ltcG9ydCAiV2ViVGlsZUxheWVy
LmgiCkBAIC0zMTEsNiArMzEyLDM0IEBAIHZvaWQgVGlsZUNhY2hlOjp0aWxlUmV2YWxpZGF0aW9u
VGltZXJGaXJlZChUaW1lcjxUaWxlQ2FjaGU+KikKICAgICByZXZhbGlkYXRlVGlsZXMoKTsKIH0K
IAordW5zaWduZWQgVGlsZUNhY2hlOjpibGFua1BpeGVsQ291bnQoKSBjb25zdAoreworICAgIFZl
Y3RvcjxSZXRhaW5QdHI8V2ViVGlsZUxheWVyPiA+IHRpbGVzKG1fdGlsZXMuc2l6ZSgpKTsKKyAg
ICB0aWxlcy5hcHBlbmRSYW5nZShtX3RpbGVzLmJlZ2luKCkudmFsdWVzKCksIG1fdGlsZXMuZW5k
KCkudmFsdWVzKCkpOworCisgICAgcmV0dXJuIGJsYW5rUGl4ZWxDb3VudEZvclRpbGVzKHRpbGVz
LCBtX3Zpc2libGVSZWN0LCBJbnRQb2ludCgwLDApKTsKK30KKwordW5zaWduZWQgVGlsZUNhY2hl
OjpibGFua1BpeGVsQ291bnRGb3JUaWxlcyhWZWN0b3I8UmV0YWluUHRyPFdlYlRpbGVMYXllcj4g
PiB0aWxlcywgSW50UmVjdCB2aXNpYmxlUmVjdCwgSW50UG9pbnQgdGlsZVRyYW5zbGF0aW9uKQor
eworICAgIFJlZ2lvbiBwYWludGVkVmlzaWJsZVRpbGVzOworCisgICAgZm9yIChWZWN0b3I8UmV0
YWluUHRyPFdlYlRpbGVMYXllcj4gPjo6Y29uc3RfaXRlcmF0b3IgaXQgPSB0aWxlcy5iZWdpbigp
LCBlbmQgPSB0aWxlcy5lbmQoKTsgaXQgIT0gZW5kOyArK2l0KSB7CisgICAgICAgIGNvbnN0IFdl
YlRpbGVMYXllciogdGlsZUxheWVyID0gaXQtPmdldCgpOworCisgICAgICAgIEludFJlY3Qgdmlz
aWJsZVBhcnQoQ0dSZWN0T2Zmc2V0KFt0aWxlTGF5ZXIgZnJhbWVdLCB0aWxlVHJhbnNsYXRpb24u
eCgpLCB0aWxlVHJhbnNsYXRpb24ueSgpKSk7CisgICAgICAgIHZpc2libGVQYXJ0LmludGVyc2Vj
dCh2aXNpYmxlUmVjdCk7CisKKyAgICAgICAgaWYgKCF2aXNpYmxlUGFydC5pc0VtcHR5KCkgJiYg
W3RpbGVMYXllciByZXBhaW50Q291bnRdKQorICAgICAgICAgICAgcGFpbnRlZFZpc2libGVUaWxl
cy51bml0ZSh2aXNpYmxlUGFydCk7CisgICAgfQorCisgICAgUmVnaW9uIHVuY292ZXJlZFJlZ2lv
bih2aXNpYmxlUmVjdCk7CisgICAgdW5jb3ZlcmVkUmVnaW9uLnN1YnRyYWN0KHBhaW50ZWRWaXNp
YmxlVGlsZXMpOworCisgICAgcmV0dXJuIHVuY292ZXJlZFJlZ2lvbi50b3RhbEFyZWEoKTsKK30K
Kwogdm9pZCBUaWxlQ2FjaGU6OnJldmFsaWRhdGVUaWxlcygpCiB7CiAgICAgLy8gSWYgdGhlIHVu
ZGVybHlpbmcgUGxhdGZvcm1MYXllciBoYXMgYmVlbiBkZXN0cm95ZWQsIGJ1dCB0aGUgV2ViVGls
ZUNhY2hlTGF5ZXIgaGFzbid0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jYS9tYWMvV2ViVGlsZUxheWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jYS9tYWMvV2ViVGlsZUxheWVyLmgKaW5kZXggNTc3ZTM0YS4uNGEyZDVjMSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvbWFjL1dlYlRpbGVM
YXllci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL21hYy9XZWJU
aWxlTGF5ZXIuaApAQCAtMzcsNiArMzcsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIC0gKHZv
aWQpc2V0VGlsZUNhY2hlOihXZWJDb3JlOjpUaWxlQ2FjaGUqKXRpbGVDYWNoZTsKIC0gKHVuc2ln
bmVkKWluY3JlbWVudFJlcGFpbnRDb3VudDsKKy0gKHVuc2lnbmVkKXJlcGFpbnRDb3VudDsKIEBl
bmQKIAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9t
YWMvV2ViVGlsZUxheWVyLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Ev
bWFjL1dlYlRpbGVMYXllci5tbQppbmRleCA2ZjdjODVjLi5iZDQxMTQ1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9tYWMvV2ViVGlsZUxheWVyLm1tCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL21hYy9XZWJUaWxlTGF5ZXIu
bW0KQEAgLTI3LDEwICsyNywxNSBAQAogI2ltcG9ydCAiV2ViVGlsZUxheWVyLmgiCiAKICNpbXBv
cnQgIlRpbGVDYWNoZS5oIgorI2ltcG9ydCA8d3RmL0N1cnJlbnRUaW1lLmg+CiAjaW1wb3J0IDx3
dGYvVW51c2VkUGFyYW0uaD4KIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKK0BpbnRlcmZh
Y2UgV2ViVGlsZUxheWVyIChTY3JvbGxpbmdQZXJmb3JtYW5jZUxvZ2dpbmdJbnRlcm5hbCkKKy0g
KHZvaWQpbG9nRmlsbGVkRnJlc2hUaWxlOworQGVuZAorCiBAaW1wbGVtZW50YXRpb24gV2ViVGls
ZUxheWVyCiAKIC0gKGlkPENBQWN0aW9uPilhY3Rpb25Gb3JLZXk6KE5TU3RyaW5nICopa2V5CkBA
IC00Myw4ICs0OCwxMiBAQCAtIChpZDxDQUFjdGlvbj4pYWN0aW9uRm9yS2V5OihOU1N0cmluZyAq
KWtleQogCiAtICh2b2lkKWRyYXdJbkNvbnRleHQ6KENHQ29udGV4dFJlZiljb250ZXh0CiB7Ci0g
ICAgaWYgKF90aWxlQ2FjaGUpCisgICAgaWYgKF90aWxlQ2FjaGUpIHsKICAgICAgICAgX3RpbGVD
YWNoZS0+ZHJhd0xheWVyKHNlbGYsIGNvbnRleHQpOworCisgICAgICAgIGlmIChfdGlsZUNhY2hl
LT5zY3JvbGxpbmdQZXJmb3JtYW5jZUxvZ2dpbmdFbmFibGVkKCkpCisgICAgICAgICAgICBbc2Vs
ZiBsb2dGaWxsZWRGcmVzaFRpbGVdOworICAgIH0KIH0KIAogLSAodm9pZClzZXRUaWxlQ2FjaGU6
KFdlYkNvcmU6OlRpbGVDYWNoZSopdGlsZUNhY2hlCkBAIC01Nyw1ICs2NiwxOSBAQCAtICh1bnNp
Z25lZClpbmNyZW1lbnRSZXBhaW50Q291bnQKICAgICByZXR1cm4gKytfcmVwYWludENvdW50Owog
fQogCistICh1bnNpZ25lZClyZXBhaW50Q291bnQKK3sKKyAgICByZXR1cm4gX3JlcGFpbnRDb3Vu
dDsKK30KKworLSAodm9pZClsb2dGaWxsZWRGcmVzaFRpbGUKK3sKKyAgICBJbnRSZWN0IHZpc2li
bGVQYXJ0KGVuY2xvc2luZ0ludFJlY3QoW3NlbGYgZnJhbWVdKSk7CisgICAgdmlzaWJsZVBhcnQu
aW50ZXJzZWN0KF90aWxlQ2FjaGUtPnZpc2libGVSZWN0KCkpOworCisgICAgaWYgKFtzZWxmIHJl
cGFpbnRDb3VudF0gPT0gMSAmJiAhdmlzaWJsZVBhcnQuaXNFbXB0eSgpKQorICAgICAgICBwcmlu
dGYoIlNDUk9MTElORzogRmlsbGVkIHZpc2libGUgZnJlc2ggdGlsZS4gVGltZTogJWYgVW5maWxs
ZWQgUGl4ZWxzOiAldVxuIiwgV1RGOjpjdXJyZW50VGltZSgpLCBfdGlsZUNhY2hlLT5ibGFua1Bp
eGVsQ291bnQoKSk7Cit9CisKIEBlbmQKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyTGF5ZXJCYWNraW5nLmNwcAppbmRleCAyNWUyNzQ1Li40MTU4OTE3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcApAQCAtNTIsNiAr
NTIsNyBAQAogI2luY2x1ZGUgIlJlbmRlclZpZGVvLmgiCiAjaW5jbHVkZSAiUmVuZGVyVmlldy5o
IgogI2luY2x1ZGUgIlNjcm9sbGluZ0Nvb3JkaW5hdG9yLmgiCisjaW5jbHVkZSAiU2V0dGluZ3Mu
aCIKICNpbmNsdWRlICJTdHlsZVJlc29sdmVyLmgiCiAjaW5jbHVkZSAiVGlsZWRCYWNraW5nLmgi
CiAKQEAgLTEyMSw4ICsxMjIsMTEgQEAgUmVuZGVyTGF5ZXJCYWNraW5nOjpSZW5kZXJMYXllckJh
Y2tpbmcoUmVuZGVyTGF5ZXIqIGxheWVyKQogICAgIGlmIChtX3VzaW5nVGlsZWRDYWNoZUxheWVy
KSB7CiAgICAgICAgIGlmIChQYWdlKiBwYWdlID0gcmVuZGVyZXIoKS0+ZnJhbWUoKS0+cGFnZSgp
KSB7CiAgICAgICAgICAgICBpZiAoVGlsZWRCYWNraW5nKiB0aWxlZEJhY2tpbmcgPSBtX2dyYXBo
aWNzTGF5ZXItPnRpbGVkQmFja2luZygpKSB7CisgICAgICAgICAgICAgICAgRnJhbWUqIGZyYW1l
ID0gcmVuZGVyZXIoKS0+ZnJhbWUoKTsKKwogICAgICAgICAgICAgICAgIHRpbGVkQmFja2luZy0+
c2V0SXNJbldpbmRvdyhwYWdlLT5pc09uc2NyZWVuKCkpOwotICAgICAgICAgICAgICAgIHRpbGVk
QmFja2luZy0+c2V0Q2FuSGF2ZVNjcm9sbGJhcnMocmVuZGVyZXIoKS0+ZnJhbWUoKS0+dmlldygp
LT5jYW5IYXZlU2Nyb2xsYmFycygpKTsKKyAgICAgICAgICAgICAgICB0aWxlZEJhY2tpbmctPnNl
dENhbkhhdmVTY3JvbGxiYXJzKGZyYW1lLT52aWV3KCktPmNhbkhhdmVTY3JvbGxiYXJzKCkpOwor
ICAgICAgICAgICAgICAgIHRpbGVkQmFja2luZy0+c2V0U2Nyb2xsaW5nUGVyZm9ybWFuY2VMb2dn
aW5nRW5hYmxlZChmcmFtZS0+c2V0dGluZ3MoKSAmJiBmcmFtZS0+c2V0dGluZ3MoKS0+c2Nyb2xs
aW5nUGVyZm9ybWFuY2VMb2dnaW5nRW5hYmxlZCgpKTsKICAgICAgICAgICAgIH0KICAgICAgICAg
fQogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9X
ZWJLaXQyL0NoYW5nZUxvZwppbmRleCBjMGJjOGE1Li4yYTdlYTcxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMjcgQEAKKzIwMTItMDgtMDggIFRpbSBIb3J0b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBs
ZS5jb20+CisKKyAgICAgICAgQWRkIG9wdGlvbmFsIGRlYnVnIGxvZ2dpbmcgZm9yIHRpbGVkIHNj
cm9sbGluZworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
OTMzMDUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBB
ZGQgYSBuZXcgYm9vbGVhbiBwcmVmZXJlbmNlLCBTY3JvbGxpbmdQZXJmb3JtYW5jZUxvZ2dpbmdF
bmFibGVkLCB3aGljaCB3aWxsIGJlIHVzZWQgdG8gdG9nZ2xlCisgICAgICAgIHRoZSBXZWJDb3Jl
IHBhcnRzIG9mIHRoaXMgY2hhbmdlLgorCisgICAgICAgICogU2hhcmVkL1dlYlByZWZlcmVuY2Vz
U3RvcmUuaDogQWRkIFNjcm9sbGluZ1BlcmZvcm1hbmNlTG9nZ2luZ0VuYWJsZWQuCisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS9DL1dLUHJlZmVyZW5jZXMuY3BwOgorICAgICAgICAoV0tQcmVmZXJl
bmNlc1NldFNjcm9sbGluZ1BlcmZvcm1hbmNlTG9nZ2luZ0VuYWJsZWQpOiBBZGRlZC4KKyAgICAg
ICAgKFdLUHJlZmVyZW5jZXNHZXRTY3JvbGxpbmdQZXJmb3JtYW5jZUxvZ2dpbmdFbmFibGVkKTog
QWRkZWQuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLUHJlZmVyZW5jZXNQcml2YXRlLmg6
IEFkZCBnZXR0ZXJzIGFuZCBzZXR0ZXJzIGZvciBTY3JvbGxpbmdQZXJmb3JtYW5jZUxvZ2dpbmdF
bmFibGVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6V2ViUGFnZTo6V2ViUGFnZSk6IEFkZCBTY3JvbGxpbmdQZXJmb3JtYW5jZUxv
Z2dpbmdFbmFibGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjp1cGRhdGVQcmVmZXJlbmNl
cyk6IEFkZCBTY3JvbGxpbmdQZXJmb3JtYW5jZUxvZ2dpbmdFbmFibGVkLgorICAgICAgICAoV2Vi
S2l0OjpXZWJQYWdlOjpzZXRTY3JvbGxpbmdQZXJmb3JtYW5jZUxvZ2dpbmdFbmFibGVkKTogUHJv
cGFnYXRlIHNldHRpbmdzIGNoYW5nZXMgdGhyb3VnaCB0byBGcmFtZVZpZXcuCisgICAgICAgICog
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6
c2Nyb2xsaW5nUGVyZm9ybWFuY2VMb2dnaW5nRW5hYmxlZCk6IEFkZCBhIGdldHRlciBmb3IgdGhl
IHNldHRpbmcgc28gdGhhdCBUaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYSBjYW4gYWNjZXNz
IGl0LgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9tYWMvVGlsZWRDb3JlQW5pbWF0aW9u
RHJhd2luZ0FyZWEubW06CisgICAgICAgIChXZWJLaXQ6OlRpbGVkQ29yZUFuaW1hdGlvbkRyYXdp
bmdBcmVhOjp1cGRhdGVQcmVmZXJlbmNlcyk6IFBhc3MgU2Nyb2xsaW5nUGVyZm9ybWFuY2VMb2dn
aW5nRW5hYmxlZCBkb3duIGludG8gdGhlIHNjcm9sbGluZyB0aHJlYWQuCisKIDIwMTItMDgtMDgg
IEFuZGVycyBDYXJsc3NvbiAgPGFuZGVyc2NhQGFwcGxlLmNvbT4KIAogICAgICAgICBSRUdSRVNT
SU9OOiBDcmFzaCB3aGVuIHBsdWctaW4gaW5pdGlhbGl6YXRpb24gZmFpbHMKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJQcmVmZXJlbmNlc1N0b3JlLmggYi9Tb3VyY2UvV2Vi
S2l0Mi9TaGFyZWQvV2ViUHJlZmVyZW5jZXNTdG9yZS5oCmluZGV4IDZmYzk1YjUuLmFmMDgxMmQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJQcmVmZXJlbmNlc1N0b3JlLmgK
KysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYlByZWZlcmVuY2VzU3RvcmUuaApAQCAtMTE3
LDYgKzExNyw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogICAgIG1hY3JvKEFzeW5jaHJvbm91c1Bs
dWdpbkluaXRpYWxpemF0aW9uRW5hYmxlZCwgYXN5bmNocm9ub3VzUGx1Z2luSW5pdGlhbGl6YXRp
b25FbmFibGVkLCBCb29sLCBib29sLCBmYWxzZSkgXAogICAgIG1hY3JvKEFzeW5jaHJvbm91c1Bs
dWdpbkluaXRpYWxpemF0aW9uRW5hYmxlZEZvckFsbFBsdWdpbnMsIGFzeW5jaHJvbm91c1BsdWdp
bkluaXRpYWxpemF0aW9uRW5hYmxlZEZvckFsbFBsdWdpbnMsIEJvb2wsIGJvb2wsIGZhbHNlKSBc
CiAgICAgbWFjcm8oQXJ0aWZpY2lhbFBsdWdpbkluaXRpYWxpemF0aW9uRGVsYXlFbmFibGVkLCBh
cnRpZmljaWFsUGx1Z2luSW5pdGlhbGl6YXRpb25EZWxheUVuYWJsZWQsIEJvb2wsIGJvb2wsIGZh
bHNlKSBcCisgICAgbWFjcm8oU2Nyb2xsaW5nUGVyZm9ybWFuY2VMb2dnaW5nRW5hYmxlZCwgc2Ny
b2xsaW5nUGVyZm9ybWFuY2VMb2dnaW5nRW5hYmxlZCwgQm9vbCwgYm9vbCwgZmFsc2UpIFwKICAg
ICBtYWNybyhUaGlyZFBhcnR5U3RvcmFnZUJsb2NraW5nRW5hYmxlZCwgdGhpcmRQYXJ0eVN0b3Jh
Z2VCbG9ja2luZ0VuYWJsZWQsIEJvb2wsIGJvb2wsIGZhbHNlKSBcCiAgICAgXAogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQcmVmZXJlbmNlcy5jcHAgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQcmVmZXJlbmNlcy5jcHAKaW5kZXggZDU4
MzdmYy4uNjZkNGRjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9D
L1dLUHJlZmVyZW5jZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9X
S1ByZWZlcmVuY2VzLmNwcApAQCAtODczLDMgKzg3MywxMyBAQCBib29sIFdLUHJlZmVyZW5jZXNH
ZXRBcnRpZmljaWFsUGx1Z2luSW5pdGlhbGl6YXRpb25EZWxheUVuYWJsZWQoV0tQcmVmZXJlbmNl
c1JlZgogewogICAgIHJldHVybiB0b0ltcGwocHJlZmVyZW5jZXNSZWYpLT5hcnRpZmljaWFsUGx1
Z2luSW5pdGlhbGl6YXRpb25EZWxheUVuYWJsZWQoKTsKIH0KKwordm9pZCBXS1ByZWZlcmVuY2Vz
U2V0U2Nyb2xsaW5nUGVyZm9ybWFuY2VMb2dnaW5nRW5hYmxlZChXS1ByZWZlcmVuY2VzUmVmIHBy
ZWZlcmVuY2VzUmVmLCBib29sIGVuYWJsZWQpCit7CisgICAgdG9JbXBsKHByZWZlcmVuY2VzUmVm
KS0+c2V0U2Nyb2xsaW5nUGVyZm9ybWFuY2VMb2dnaW5nRW5hYmxlZChlbmFibGVkKTsKK30KKwor
Ym9vbCBXS1ByZWZlcmVuY2VzR2V0U2Nyb2xsaW5nUGVyZm9ybWFuY2VMb2dnaW5nRW5hYmxlZChX
S1ByZWZlcmVuY2VzUmVmIHByZWZlcmVuY2VzUmVmKQoreworICAgIHJldHVybiB0b0ltcGwocHJl
ZmVyZW5jZXNSZWYpLT5zY3JvbGxpbmdQZXJmb3JtYW5jZUxvZ2dpbmdFbmFibGVkKCk7Cit9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQcmVmZXJlbmNlc1By
aXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1ByZWZlcmVuY2VzUHJp
dmF0ZS5oCmluZGV4IDJiYmY4ZDEuLmI0NjlkN2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvQy9XS1ByZWZlcmVuY2VzUHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1ByZWZlcmVuY2VzUHJpdmF0ZS5oCkBAIC0yMDMsNiArMjAz
LDEwIEBAIFdLX0VYUE9SVCBib29sIFdLUHJlZmVyZW5jZXNHZXRBc3luY2hyb25vdXNQbHVnaW5J
bml0aWFsaXphdGlvbkVuYWJsZWRGb3JBbGxQbHVnCiBXS19FWFBPUlQgdm9pZCBXS1ByZWZlcmVu
Y2VzU2V0QXJ0aWZpY2lhbFBsdWdpbkluaXRpYWxpemF0aW9uRGVsYXlFbmFibGVkKFdLUHJlZmVy
ZW5jZXNSZWYgcHJlZmVyZW5jZXNSZWYsIGJvb2wgZW5hYmxlZCk7CiBXS19FWFBPUlQgYm9vbCBX
S1ByZWZlcmVuY2VzR2V0QXJ0aWZpY2lhbFBsdWdpbkluaXRpYWxpemF0aW9uRGVsYXlFbmFibGVk
KFdLUHJlZmVyZW5jZXNSZWYgcHJlZmVyZW5jZXNSZWYpOwogCisvLyBEZWZhdWx0cyB0byBmYWxz
ZQorV0tfRVhQT1JUIHZvaWQgV0tQcmVmZXJlbmNlc1NldFNjcm9sbGluZ1BlcmZvcm1hbmNlTG9n
Z2luZ0VuYWJsZWQoV0tQcmVmZXJlbmNlc1JlZiBwcmVmZXJlbmNlc1JlZiwgYm9vbCBlbmFibGVk
KTsKK1dLX0VYUE9SVCBib29sIFdLUHJlZmVyZW5jZXNHZXRTY3JvbGxpbmdQZXJmb3JtYW5jZUxv
Z2dpbmdFbmFibGVkKFdLUHJlZmVyZW5jZXNSZWYgcHJlZmVyZW5jZXNSZWYpOworCiBXS19FWFBP
UlQgdm9pZCBXS1ByZWZlcmVuY2VzUmVzZXRUZXN0UnVubmVyT3ZlcnJpZGVzKFdLUHJlZmVyZW5j
ZXNSZWYgcHJlZmVyZW5jZXNSZWYpOwogCiAjaWZkZWYgX19jcGx1c3BsdXMKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcCBiL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAppbmRleCA3NWQ0MjExLi41OTYx
N2RmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFn
ZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3Bw
CkBAIC0yMTQsNiArMjE0LDcgQEAgV2ViUGFnZTo6V2ViUGFnZSh1aW50NjRfdCBwYWdlSUQsIGNv
bnN0IFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMmIHBhcmFtZXRlcnMpCiAgICAgLCBtX2FzeW5j
aHJvbm91c1BsdWdpbkluaXRpYWxpemF0aW9uRW5hYmxlZChmYWxzZSkKICAgICAsIG1fYXN5bmNo
cm9ub3VzUGx1Z2luSW5pdGlhbGl6YXRpb25FbmFibGVkRm9yQWxsUGx1Z2lucyhmYWxzZSkKICAg
ICAsIG1fYXJ0aWZpY2lhbFBsdWdpbkluaXRpYWxpemF0aW9uRGVsYXlFbmFibGVkKGZhbHNlKQor
ICAgICwgbV9zY3JvbGxpbmdQZXJmb3JtYW5jZUxvZ2dpbmdFbmFibGVkKGZhbHNlKQogI2lmIFBM
QVRGT1JNKE1BQykKICAgICAsIG1fd2luZG93SXNWaXNpYmxlKGZhbHNlKQogICAgICwgbV9pc1Nt
YXJ0SW5zZXJ0RGVsZXRlRW5hYmxlZChwYXJhbWV0ZXJzLmlzU21hcnRJbnNlcnREZWxldGVFbmFi
bGVkKQpAQCAtMTk3NSw2ICsxOTc2LDggQEAgdm9pZCBXZWJQYWdlOjp1cGRhdGVQcmVmZXJlbmNl
cyhjb25zdCBXZWJQcmVmZXJlbmNlc1N0b3JlJiBzdG9yZSkKICAgICBtX2FzeW5jaHJvbm91c1Bs
dWdpbkluaXRpYWxpemF0aW9uRW5hYmxlZEZvckFsbFBsdWdpbnMgPSBzdG9yZS5nZXRCb29sVmFs
dWVGb3JLZXkoV2ViUHJlZmVyZW5jZXNLZXk6OmFzeW5jaHJvbm91c1BsdWdpbkluaXRpYWxpemF0
aW9uRW5hYmxlZEZvckFsbFBsdWdpbnNLZXkoKSk7CiAgICAgbV9hcnRpZmljaWFsUGx1Z2luSW5p
dGlhbGl6YXRpb25EZWxheUVuYWJsZWQgPSBzdG9yZS5nZXRCb29sVmFsdWVGb3JLZXkoV2ViUHJl
ZmVyZW5jZXNLZXk6OmFydGlmaWNpYWxQbHVnaW5Jbml0aWFsaXphdGlvbkRlbGF5RW5hYmxlZEtl
eSgpKTsKIAorICAgIG1fc2Nyb2xsaW5nUGVyZm9ybWFuY2VMb2dnaW5nRW5hYmxlZCA9IHN0b3Jl
LmdldEJvb2xWYWx1ZUZvcktleShXZWJQcmVmZXJlbmNlc0tleTo6c2Nyb2xsaW5nUGVyZm9ybWFu
Y2VMb2dnaW5nRW5hYmxlZEtleSgpKTsKKwogICAgIC8vIEZJWE1FOiBUaGlzIHNob3VsZCBiZSBn
ZW5lcmF0ZWQgZnJvbSBtYWNybyBleHBhbnNpb24gZm9yIGFsbCBwcmVmZXJlbmNlcywKICAgICAv
LyBidXQgd2UgY3VycmVudGx5IGRvbid0IG1hdGNoIHRoZSBuYW1pbmcgb2YgV2ViQ29yZSBleGFj
dGx5IHNvIHdlIGFyZQogICAgIC8vIGhhbmRyb2xsaW5nIHRoZSBib29sZWFuIGFuZCBpbnRlZ2Vy
IHByZWZlcmVuY2VzIHVudGlsIHRoYXQgaXMgZml4ZWQuCkBAIC0yMDkyLDYgKzIwOTUsOCBAQCB2
b2lkIFdlYlBhZ2U6OnVwZGF0ZVByZWZlcmVuY2VzKGNvbnN0IFdlYlByZWZlcmVuY2VzU3RvcmUm
IHN0b3JlKQogCiAgICAgc2V0dGluZ3MtPnNldERpYWdub3N0aWNMb2dnaW5nRW5hYmxlZChzdG9y
ZS5nZXRCb29sVmFsdWVGb3JLZXkoV2ViUHJlZmVyZW5jZXNLZXk6OmRpYWdub3N0aWNMb2dnaW5n
RW5hYmxlZEtleSgpKSk7CiAKKyAgICBzZXR0aW5ncy0+c2V0U2Nyb2xsaW5nUGVyZm9ybWFuY2VM
b2dnaW5nRW5hYmxlZChtX3Njcm9sbGluZ1BlcmZvcm1hbmNlTG9nZ2luZ0VuYWJsZWQpOworCiAg
ICAgcGxhdGZvcm1QcmVmZXJlbmNlc0RpZENoYW5nZShzdG9yZSk7CiAKICAgICBpZiAobV9kcmF3
aW5nQXJlYSkKQEAgLTMyODUsNCArMzI5MCwxNSBAQCB2b2lkIFdlYlBhZ2U6OnNldFZpc2liaWxp
dHlTdGF0ZShpbnQgdmlzaWJpbGl0eVN0YXRlLCBib29sIGlzSW5pdGlhbFN0YXRlKQogfQogI2Vu
ZGlmCiAKK3ZvaWQgV2ViUGFnZTo6c2V0U2Nyb2xsaW5nUGVyZm9ybWFuY2VMb2dnaW5nRW5hYmxl
ZChib29sIGVuYWJsZWQpCit7CisgICAgbV9zY3JvbGxpbmdQZXJmb3JtYW5jZUxvZ2dpbmdFbmFi
bGVkID0gZW5hYmxlZDsKKworICAgIEZyYW1lVmlldyogZnJhbWVWaWV3ID0gbV9tYWluRnJhbWUt
PmNvcmVGcmFtZSgpLT52aWV3KCk7CisgICAgaWYgKCFmcmFtZVZpZXcpCisgICAgICAgIHJldHVy
bjsKKworICAgIGZyYW1lVmlldy0+c2V0U2Nyb2xsaW5nUGVyZm9ybWFuY2VMb2dnaW5nRW5hYmxl
ZChlbmFibGVkKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oIGIvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAppbmRleCA3ZDg2ODhiYy4uYmJmYWJkMCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCkBAIC01NzUsNiAr
NTc1LDkgQEAgcHVibGljOgogICAgIGJvb2wgYXJ0aWZpY2lhbFBsdWdpbkluaXRpYWxpemF0aW9u
RGVsYXlFbmFibGVkKCkgY29uc3QgeyByZXR1cm4gbV9hcnRpZmljaWFsUGx1Z2luSW5pdGlhbGl6
YXRpb25EZWxheUVuYWJsZWQ7IH0KICAgICB2b2lkIHNldEFydGlmaWNpYWxQbHVnaW5Jbml0aWFs
aXphdGlvbkRlbGF5RW5hYmxlZChib29sIGVuYWJsZWQpIHsgbV9hcnRpZmljaWFsUGx1Z2luSW5p
dGlhbGl6YXRpb25EZWxheUVuYWJsZWQgPSBlbmFibGVkOyB9CiAKKyAgICBib29sIHNjcm9sbGlu
Z1BlcmZvcm1hbmNlTG9nZ2luZ0VuYWJsZWQoKSBjb25zdCB7IHJldHVybiBtX3Njcm9sbGluZ1Bl
cmZvcm1hbmNlTG9nZ2luZ0VuYWJsZWQ7IH0KKyAgICB2b2lkIHNldFNjcm9sbGluZ1BlcmZvcm1h
bmNlTG9nZ2luZ0VuYWJsZWQoYm9vbCk7CisKIHByaXZhdGU6CiAgICAgV2ViUGFnZSh1aW50NjRf
dCBwYWdlSUQsIGNvbnN0IFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMmKTsKIApAQCAtNzcxLDYg
Kzc3NCw4IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2FzeW5jaHJvbm91c1BsdWdpbkluaXRpYWxp
emF0aW9uRW5hYmxlZEZvckFsbFBsdWdpbnM7CiAgICAgYm9vbCBtX2FydGlmaWNpYWxQbHVnaW5J
bml0aWFsaXphdGlvbkRlbGF5RW5hYmxlZDsKIAorICAgIGJvb2wgbV9zY3JvbGxpbmdQZXJmb3Jt
YW5jZUxvZ2dpbmdFbmFibGVkOworCiAjaWYgUExBVEZPUk0oTUFDKQogICAgIC8vIFdoZXRoZXIg
dGhlIGNvbnRhaW5pbmcgd2luZG93IGlzIHZpc2libGUgb3Igbm90LgogICAgIGJvb2wgbV93aW5k
b3dJc1Zpc2libGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBh
Z2UvbWFjL1RpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhLm1tIGIvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9UaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYS5tbQpp
bmRleCA0ZGZmYjZlLi4yNDMzZDc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYlBhZ2UvbWFjL1RpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhLm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvVGlsZWRDb3JlQW5pbWF0aW9uRHJh
d2luZ0FyZWEubW0KQEAgLTIxMiw3ICsyMTIsMTAgQEAgdm9pZCBUaWxlZENvcmVBbmltYXRpb25E
cmF3aW5nQXJlYTo6dXBkYXRlUHJlZmVyZW5jZXMoKQogICAgICAgICBtX2RlYnVnSW5mb0xheWVy
ID0gbnVsbHB0cjsKICAgICB9CiAKKyAgICBib29sIHNjcm9sbGluZ1BlcmZvcm1hbmNlTG9nZ2lu
Z0VuYWJsZWQgPSBtX3dlYlBhZ2UtPnNjcm9sbGluZ1BlcmZvcm1hbmNlTG9nZ2luZ0VuYWJsZWQo
KTsKKwogICAgIFNjcm9sbGluZ1RocmVhZDo6ZGlzcGF0Y2goYmluZCgmU2Nyb2xsaW5nVHJlZTo6
c2V0RGVidWdSb290TGF5ZXIsIG1fd2ViUGFnZS0+Y29yZVBhZ2UoKS0+c2Nyb2xsaW5nQ29vcmRp
bmF0b3IoKS0+c2Nyb2xsaW5nVHJlZSgpLCBtX2RlYnVnSW5mb0xheWVyKSk7CisgICAgU2Nyb2xs
aW5nVGhyZWFkOjpkaXNwYXRjaChiaW5kKCZTY3JvbGxpbmdUcmVlOjpzZXRTY3JvbGxpbmdQZXJm
b3JtYW5jZUxvZ2dpbmdFbmFibGVkLCBtX3dlYlBhZ2UtPmNvcmVQYWdlKCktPnNjcm9sbGluZ0Nv
b3JkaW5hdG9yKCktPnNjcm9sbGluZ1RyZWUoKSwgc2Nyb2xsaW5nUGVyZm9ybWFuY2VMb2dnaW5n
RW5hYmxlZCkpOwogfQogCiB2b2lkIFRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhOjpkaXNw
YXRjaEFmdGVyRW5zdXJpbmdVcGRhdGVkU2Nyb2xsUG9zaXRpb24oY29uc3QgRnVuY3Rpb248dm9p
ZCAoKT4mIGZ1bmN0aW9uUmVmKQo=
</data>
<flag name="review"
          id="167280"
          type_id="1"
          status="+"
          setter="simon.fraser"
    />
          </attachment>
      

    </bug>

</bugzilla>