<?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>77646</bug_id>
          
          <creation_ts>2012-02-02 09:01:23 -0800</creation_ts>
          <short_desc>[chromium] Plumb animation started notifications from CCLayerTreeHost to GraphicsLayerChromium</short_desc>
          <delta_ts>2012-02-28 11:46:56 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit Misc.</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>
          
          <blocked>76468</blocked>
    
    <blocked>77662</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter>vollick</reporter>
          <assigned_to>vollick</assigned_to>
          <cc>cc-bugs</cc>
    
    <cc>jamesr</cc>
    
    <cc>nduca</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>547898</commentid>
    <comment_count>0</comment_count>
    <who name="">vollick</who>
    <bug_when>2012-02-02 09:01:23 -0800</bug_when>
    <thetext>We must notify the GraphicsLayer&apos;s client when we&apos;ve started an animation on this layer. We need to get the animation started results (which are plumbed to CCLayerTreeHost) to their respective GraphicsLayerChromiums so that this notification can take place.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>547932</commentid>
    <comment_count>1</comment_count>
      <attachid>125148</attachid>
    <who name="">vollick</who>
    <bug_when>2012-02-02 09:39:15 -0800</bug_when>
    <thetext>Created attachment 125148
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>548153</commentid>
    <comment_count>2</comment_count>
      <attachid>125148</attachid>
    <who name="Nat Duca">nduca</who>
    <bug_when>2012-02-02 14:02:38 -0800</bug_when>
    <thetext>Comment on attachment 125148
Patch

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

Looks good but we need to go to an AnimationDelegate model rather than a generic LayerChromiumClient.

&gt; Source/WebCore/platform/graphics/chromium/GraphicsLayerChromium.cpp:78
&gt; +    m_layer-&gt;setClient(this);

People would like us to use an animation delegate model.

E.g. CCLayerChromium::setAnimationDelegate(this)

Where CCLayerChromiumAnimationDelegate has our notifyAnimationStarted method.

We should only set the delegate when we have an animation. Though, we don&apos;t have to clear the delegate when stop having an animation --- just make sure you clear it during destruction. :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>552457</commentid>
    <comment_count>3</comment_count>
      <attachid>126145</attachid>
    <who name="">vollick</who>
    <bug_when>2012-02-08 13:44:00 -0800</bug_when>
    <thetext>Created attachment 126145
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>553799</commentid>
    <comment_count>4</comment_count>
      <attachid>126145</attachid>
    <who name="Nat Duca">nduca</who>
    <bug_when>2012-02-09 21:28:46 -0800</bug_when>
    <thetext>Comment on attachment 126145
Patch

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

&gt; Source/WebCore/platform/graphics/chromium/GraphicsLayerChromium.cpp:79
&gt;  

I&apos;d like this to only be set when you add an animation. Once set, it can be left on forever. Essentially, remove this line, then on the *Animation methods, put a call like setLayerAnimationDelegateIfNeeded() before using the layer. That should set the delegate, if its not already set.

&gt; Source/WebCore/platform/graphics/chromium/GraphicsLayerChromium.cpp:88
&gt; +        m_layer-&gt;clearLayerAnimationDelegate();

Why clear and not just setAnimationDelegate(0)?

&gt; Source/WebCore/platform/graphics/chromium/GraphicsLayerChromium.cpp:94
&gt; +        m_layer-&gt;clearLayerAnimationDelegate();

what&apos;s this? And why is it conditional on m_transformLayer?

&gt; Source/WebCore/platform/graphics/chromium/GraphicsLayerChromium.cpp:378
&gt; +    return primaryLayer()-&gt;addAnimation(values, boxSize, animation, animationName, timeOffset);

is primaryLayer always going to have an animation delegate pointing at us?  What if primaryLayer is a transform layer?

Again, i&apos;d prefer we did a setLayerDelegate(primaryLayer()) call here to prevent this mess.

&gt; Source/WebCore/platform/graphics/chromium/GraphicsLayerChromium.h:46
&gt; +class GraphicsLayerChromium : public GraphicsLayer,

Check webkit style, is this normative?

&gt; Source/WebCore/platform/graphics/chromium/LayerChromium.h:223
&gt; +    void clearLayerAnimationDelegate() { m_layerAnimationDelegate = 0; }

Not sure this makes sense when you have a setter above.

&gt; Source/WebCore/platform/graphics/chromium/cc/CCLayerTreeHost.cpp:270
&gt; +    setAnimationResultsRecursive(results.get(), m_rootLayer.get());

if you use a const reference to the CCAnimationResults, then you can just do *results here. I definitely prefer being const-correct in this case --- we&apos;re not mutating the results.

&gt; Source/WebCore/platform/graphics/chromium/cc/CCLayerTreeHost.cpp:606
&gt; +{

Is there any way to normalize between the name &quot;setAnimationResults&quot; and &quot;nofityAnimations&quot;? It&apos;d be cool if it was CCLTH::notifyLayersOfAnimationResults(CCAnimationResults*) or something. Please dont use that name, it kinda sucks. But hopefully you get my point.

&gt; Source/WebCore/platform/graphics/chromium/cc/CCSingleThreadProxy.cpp:232
&gt;  

Looks like you did a bugfix in the animationcontrollerimpl. You should have a test for the controller that catches this mistake, if possible... if not, nbd. But its a good corner case you uncovered.

Do you have tests for the layer delegate being called correctly? Smells like a test for the CCLayerTreeHostTest file</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>554441</commentid>
    <comment_count>5</comment_count>
      <attachid>126595</attachid>
    <who name="">vollick</who>
    <bug_when>2012-02-10 15:32:09 -0800</bug_when>
    <thetext>Created attachment 126595
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>559736</commentid>
    <comment_count>6</comment_count>
      <attachid>126595</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-02-17 23:35:51 -0800</bug_when>
    <thetext>Comment on attachment 126595
Patch

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

&gt; Source/WebCore/platform/graphics/chromium/LayerChromium.cpp:2
&gt; + * Copyright (C) 2012 Google Inc. All rights reserved.

don&apos;t change copyright header dates when modifying the file, just leave them alone

&gt; Source/WebCore/platform/graphics/chromium/LayerChromium.h:227
&gt; +    friend class CCLayerTreeHost;

It would be much, much better to have notifyAnimationStarted() be public than to friend CCLayerTreeHost</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>564646</commentid>
    <comment_count>7</comment_count>
      <attachid>128809</attachid>
    <who name="">vollick</who>
    <bug_when>2012-02-24 14:28:38 -0800</bug_when>
    <thetext>Created attachment 128809
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>564649</commentid>
    <comment_count>8</comment_count>
      <attachid>128811</attachid>
    <who name="">vollick</who>
    <bug_when>2012-02-24 14:33:08 -0800</bug_when>
    <thetext>Created attachment 128811
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>564650</commentid>
    <comment_count>9</comment_count>
    <who name="">vollick</who>
    <bug_when>2012-02-24 14:36:51 -0800</bug_when>
    <thetext>Noteworthy changes:
 - There are now two types of animation event
   1) Started (webkit needs this notification)
   2) Finished (GraphicsLayerChromium needs this to update its animation id map)

 - I now test that these events get sent in response to an animation being started and finished (CCLayerTreeHostTest.cpp)

(In reply to comment #6)
&gt; (From update of attachment 126595 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=126595&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/platform/graphics/chromium/LayerChromium.cpp:2
&gt; &gt; + * Copyright (C) 2012 Google Inc. All rights reserved.
&gt; 
&gt; don&apos;t change copyright header dates when modifying the file, just leave them alone
&gt; 
Done.
&gt; &gt; Source/WebCore/platform/graphics/chromium/LayerChromium.h:227
&gt; &gt; +    friend class CCLayerTreeHost;
&gt; 
&gt; It would be much, much better to have notifyAnimationStarted() be public than to friend CCLayerTreeHost
Done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>564674</commentid>
    <comment_count>10</comment_count>
      <attachid>128811</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-02-24 14:59:24 -0800</bug_when>
    <thetext>Comment on attachment 128811
Patch

I think there&apos;s an issue with startTime here - on the impl side we&apos;re using the monotonicallyIncreasingTime() clock, but GraphicsLayerClient is expecting the currentTime() timebase.  I think we need a re-normalization pass on the time values somewhere (probably GraphicsLayerChromium) in case the timebases are different for the two time sources.  As we discussed offline I think it&apos;s fine to file a bug on that issue separately and take care of it before we turn this on by default since it&apos;ll be pretty isolated from the rest of this patch, which looks great.

R=me!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>564802</commentid>
    <comment_count>11</comment_count>
      <attachid>128811</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-02-24 18:19:55 -0800</bug_when>
    <thetext>Comment on attachment 128811
Patch

Clearing flags on attachment: 128811

Committed r108880: &lt;http://trac.webkit.org/changeset/108880&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>564803</commentid>
    <comment_count>12</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-02-24 18:20:01 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>125148</attachid>
            <date>2012-02-02 09:39:15 -0800</date>
            <delta_ts>2012-02-08 13:43:56 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-77646-20120202123913.patch</filename>
            <type>text/plain</type>
            <size>10633</size>
            <attacher>vollick</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA2NDY1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9HcmFwaGljc0xheWVyQ2hyb21pdW0uY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vR3JhcGhpY3NMYXllckNocm9t
aXVtLmNwcAppbmRleCA4Y2FiZjNlYmM2N2RkNzQ4MzZmYmU1MmQxMjQ3MWEzOTI3MTQxY2Q0Li5m
NWE4MDg0NmUxZTNhODVmZWJjNmExMzU1NjFiMGM4OWQ4YTRhYzM1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9HcmFwaGljc0xheWVyQ2hyb21p
dW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0dy
YXBoaWNzTGF5ZXJDaHJvbWl1bS5jcHAKQEAgLTc1LDYgKzc1LDcgQEAgR3JhcGhpY3NMYXllckNo
cm9taXVtOjpHcmFwaGljc0xheWVyQ2hyb21pdW0oR3JhcGhpY3NMYXllckNsaWVudCogY2xpZW50
KQogICAgICwgbV9pblNldENoaWxkcmVuKGZhbHNlKQogewogICAgIG1fbGF5ZXIgPSBDb250ZW50
TGF5ZXJDaHJvbWl1bTo6Y3JlYXRlKHRoaXMpOworICAgIG1fbGF5ZXItPnNldENsaWVudCh0aGlz
KTsKIAogICAgIHVwZGF0ZURlYnVnSW5kaWNhdG9ycygpOwogfQpAQCAtMzk0LDEyICszOTUsNiBA
QCB2b2lkIEdyYXBoaWNzTGF5ZXJDaHJvbWl1bTo6cmVzdW1lQW5pbWF0aW9ucygpCiAgICAgbV9s
YXllci0+cmVzdW1lQW5pbWF0aW9ucygpOwogfQogCi12b2lkIEdyYXBoaWNzTGF5ZXJDaHJvbWl1
bTo6cGxhdGZvcm1DaHJvbWl1bUxheWVyQW5pbWF0aW9uU3RhcnRlZChkb3VibGUgc3RhcnRUaW1l
KQotewotICAgIGlmIChtX2NsaWVudCkKLSAgICAgICAgbV9jbGllbnQtPm5vdGlmeUFuaW1hdGlv
blN0YXJ0ZWQodGhpcywgc3RhcnRUaW1lKTsKLX0KLQogdm9pZCBHcmFwaGljc0xheWVyQ2hyb21p
dW06OnNldENvbnRlbnRzVG9NZWRpYShQbGF0Zm9ybUxheWVyKiBsYXllcikKIHsKICAgICBib29s
IGNoaWxkcmVuQ2hhbmdlZCA9IGZhbHNlOwpAQCAtNzA3LDYgKzcwMiwxMiBAQCB2b2lkIEdyYXBo
aWNzTGF5ZXJDaHJvbWl1bTo6cGFpbnRDb250ZW50cyhHcmFwaGljc0NvbnRleHQmIGNvbnRleHQs
IGNvbnN0IEludFJlYwogICAgIHBhaW50R3JhcGhpY3NMYXllckNvbnRlbnRzKGNvbnRleHQsIGNs
aXApOwogfQogCit2b2lkIEdyYXBoaWNzTGF5ZXJDaHJvbWl1bTo6bm90aWZ5QW5pbWF0aW9uU3Rh
cnRlZChkb3VibGUgc3RhcnRUaW1lKQoreworICAgIGlmIChtX2NsaWVudCkKKyAgICAgICAgbV9j
bGllbnQtPm5vdGlmeUFuaW1hdGlvblN0YXJ0ZWQodGhpcywgc3RhcnRUaW1lKTsKK30KKwogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lU
SU5HKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vR3JhcGhpY3NMYXllckNocm9taXVtLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9HcmFwaGljc0xheWVyQ2hyb21pdW0uaAppbmRleCBkMTkwMWVmYTJhNzgy
MWI2YWViMTg0M2IyM2JmNjhmZGFhNmQ0M2RmLi4zNjYzZWUyYzc1MzM1MzUyYjc2OTk3ZTY1NmQ0
NzMzODAyYTk0MTRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9HcmFwaGljc0xheWVyQ2hyb21pdW0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9HcmFwaGljc0xheWVyQ2hyb21pdW0uaApAQCAtNDIs
NyArNDIsOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIExheWVyQ2hyb21pdW07CiAK
LWNsYXNzIEdyYXBoaWNzTGF5ZXJDaHJvbWl1bSA6IHB1YmxpYyBHcmFwaGljc0xheWVyLCBwdWJs
aWMgQ29udGVudExheWVyRGVsZWdhdGUgeworY2xhc3MgR3JhcGhpY3NMYXllckNocm9taXVtIDog
cHVibGljIEdyYXBoaWNzTGF5ZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdWJs
aWMgQ29udGVudExheWVyRGVsZWdhdGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBw
dWJsaWMgTGF5ZXJDaHJvbWl1bUNsaWVudCB7CiBwdWJsaWM6CiAgICAgR3JhcGhpY3NMYXllckNo
cm9taXVtKEdyYXBoaWNzTGF5ZXJDbGllbnQqKTsKICAgICB2aXJ0dWFsIH5HcmFwaGljc0xheWVy
Q2hyb21pdW0oKTsKQEAgLTk4LDggKzEwMCw2IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQg
c3VzcGVuZEFuaW1hdGlvbnMoZG91YmxlIHRpbWUpOwogICAgIHZpcnR1YWwgdm9pZCByZXN1bWVB
bmltYXRpb25zKCk7CiAKLSAgICB2b2lkIHBsYXRmb3JtQ2hyb21pdW1MYXllckFuaW1hdGlvblN0
YXJ0ZWQoZG91YmxlIHN0YXJ0VGltZSk7Ci0KICAgICB2aXJ0dWFsIFBsYXRmb3JtTGF5ZXIqIHBs
YXRmb3JtTGF5ZXIoKSBjb25zdDsKIAogICAgIHZpcnR1YWwgdm9pZCBzZXREZWJ1Z0JhY2tncm91
bmRDb2xvcihjb25zdCBDb2xvciYpOwpAQCAtMTA5LDYgKzEwOSw5IEBAIHB1YmxpYzoKICAgICAv
LyBDb250ZW50TGF5ZXJEZWxlZ2F0ZSBpbXBsZW1lbnRhdGlvbi4KICAgICB2aXJ0dWFsIHZvaWQg
cGFpbnRDb250ZW50cyhHcmFwaGljc0NvbnRleHQmLCBjb25zdCBJbnRSZWN0JiBjbGlwKTsKIAor
ICAgIC8vIExheWVyQ2hyb21pdW1DbGllbnQgaW1wbGVtZW50YXRpb24uCisgICAgdmlydHVhbCB2
b2lkIG5vdGlmeUFuaW1hdGlvblN0YXJ0ZWQoZG91YmxlIHN0YXJ0VGltZSk7CisKICAgICAvLyBF
eHBvc2VkIGZvciB0ZXN0cy4KICAgICBMYXllckNocm9taXVtKiBjb250ZW50c0xheWVyKCkgY29u
c3QgeyByZXR1cm4gbV9jb250ZW50c0xheWVyLmdldCgpOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyQ2hyb21pdW0uY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJDaHJvbWl1bS5j
cHAKaW5kZXggNjA4MjZlNjI5YjA3Y2NlZDZlOTExYWFmNmI0MWQxYTc4MjA5ODkzNC4uYzI3NzA3
YTUxZDkxNTliMGYxMzRhZmMyOWRkZjJiODk1Yjc5OTYxYyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJDaHJvbWl1bS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJDaHJvbWl1bS5j
cHAKQEAgLTgxLDYgKzgxLDcgQEAgTGF5ZXJDaHJvbWl1bTo6TGF5ZXJDaHJvbWl1bSgpCiAgICAg
LCBtX3RhcmdldFJlbmRlclN1cmZhY2UoMCkKICAgICAsIG1fY29udGVudHNTY2FsZSgxLjApCiAg
ICAgLCBtX3BhZ2VTY2FsZURpcnR5KGZhbHNlKQorICAgICwgbV9jbGllbnQoMCkKIHsKIH0KIApA
QCAtMTIzLDYgKzEyNCwxMiBAQCB2b2lkIExheWVyQ2hyb21pdW06OnJlc3VtZUFuaW1hdGlvbnMo
KQogICAgIG1fYW5pbWF0aW9uQ29udHJvbGxlci0+cmVzdW1lQW5pbWF0aW9ucygpOwogfQogCit2
b2lkIExheWVyQ2hyb21pdW06Om5vdGlmeUFuaW1hdGlvblN0YXJ0ZWQoZG91YmxlIHRpbWUpCit7
CisgICAgaWYgKG1fY2xpZW50KQorICAgICAgICBtX2NsaWVudC0+bm90aWZ5QW5pbWF0aW9uU3Rh
cnRlZCh0aW1lKTsKK30KKwogdm9pZCBMYXllckNocm9taXVtOjpzZXRJc05vbkNvbXBvc2l0ZWRD
b250ZW50KGJvb2wgaXNOb25Db21wb3NpdGVkQ29udGVudCkKIHsKICAgICBtX2lzTm9uQ29tcG9z
aXRlZENvbnRlbnQgPSBpc05vbkNvbXBvc2l0ZWRDb250ZW50OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJDaHJvbWl1bS5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJDaHJvbWl1bS5oCmlu
ZGV4IGRjNGVkNjA2NDVlZTNlMjBiMThmNjRhZjYyYmFjZTEzNmNiZDI5MDcuLjZmZGRlYWIwMThj
ZGY0OGFhNTQwMjZjZTUzMGMwYzRhNTM1OTk2ZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyQ2hyb21pdW0uaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllckNocm9taXVtLmgKQEAgLTU4
LDYgKzU4LDExIEBAIGNsYXNzIENDVGV4dHVyZVVwZGF0ZXI7CiBjbGFzcyBHcmFwaGljc0NvbnRl
eHQzRDsKIGNsYXNzIFJlZ2lvbjsKIAorY2xhc3MgTGF5ZXJDaHJvbWl1bUNsaWVudCB7CitwdWJs
aWM6CisgICAgdmlydHVhbCB2b2lkIG5vdGlmeUFuaW1hdGlvblN0YXJ0ZWQoZG91YmxlIHRpbWUp
ID0gMDsKK307CisKIC8vIEJhc2UgY2xhc3MgZm9yIGNvbXBvc2l0ZWQgbGF5ZXJzLiBTcGVjaWFs
IGxheWVyIHR5cGVzIGFyZSBkZXJpdmVkIGZyb20KIC8vIHRoaXMgY2xhc3MuCiBjbGFzcyBMYXll
ckNocm9taXVtIDogcHVibGljIFJlZkNvdW50ZWQ8TGF5ZXJDaHJvbWl1bT4gewpAQCAtMjE4LDYg
KzIyMywxMCBAQCBwdWJsaWM6CiAgICAgdm9pZCBzdXNwZW5kQW5pbWF0aW9ucyhkb3VibGUgdGlt
ZSk7CiAgICAgdm9pZCByZXN1bWVBbmltYXRpb25zKCk7CiAKKyAgICB2b2lkIG5vdGlmeUFuaW1h
dGlvblN0YXJ0ZWQoZG91YmxlIHRpbWUpOworCisgICAgdm9pZCBzZXRDbGllbnQoTGF5ZXJDaHJv
bWl1bUNsaWVudCogY2xpZW50KSB7IG1fY2xpZW50ID0gY2xpZW50OyB9CisKIHByb3RlY3RlZDoK
ICAgICBmcmllbmQgY2xhc3MgQ0NMYXllckltcGw7CiAgICAgZnJpZW5kIGNsYXNzIExheWVyVGls
ZXJDaHJvbWl1bTsKQEAgLTMxMiw2ICszMjEsOCBAQCBwcml2YXRlOgogICAgIFN0cmluZyBtX25h
bWU7CiAKICAgICBib29sIG1fcGFnZVNjYWxlRGlydHk7CisKKyAgICBMYXllckNocm9taXVtQ2xp
ZW50KiBtX2NsaWVudDsKIH07CiAKIHZvaWQgc29ydExheWVycyhWZWN0b3I8UmVmUHRyPExheWVy
Q2hyb21pdW0+ID46Oml0ZXJhdG9yLCBWZWN0b3I8UmVmUHRyPExheWVyQ2hyb21pdW0+ID46Oml0
ZXJhdG9yLCB2b2lkKik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyQW5pbWF0aW9uQ29udHJvbGxlci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyQW5pbWF0aW9uQ29u
dHJvbGxlci5jcHAKaW5kZXggMTYxNzg1OTk1NzQ2NTk5MWNkMTMyZWY2ZThmMzk1NmQ1MTk2NzA2
YS4uNWQ4YzM2MjJjMjY4MWQ1N2NmNGZjZTc3NGFjYzVjZTY1OTc0MmIzNyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllckFuaW1h
dGlvbkNvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDTGF5ZXJBbmltYXRpb25Db250cm9sbGVyLmNwcApAQCAtMTAwLDYgKzEw
MCwxNCBAQCB2b2lkIENDTGF5ZXJBbmltYXRpb25Db250cm9sbGVyOjpzeW5jaHJvbml6ZUFuaW1h
dGlvbnMoQ0NMYXllckFuaW1hdGlvbkNvbnRyb2xsZQogICAgIHB1c2hBbmltYXRpb25Qcm9wZXJ0
aWVzKGNvbnRyb2xsZXJJbXBsKTsKIH0KIAorQ0NBY3RpdmVBbmltYXRpb24qIENDTGF5ZXJBbmlt
YXRpb25Db250cm9sbGVyOjpnZXRBY3RpdmVBbmltYXRpb24oQ0NBY3RpdmVBbmltYXRpb246Okdy
b3VwSUQgZ3JvdXAsIENDQWN0aXZlQW5pbWF0aW9uOjpUYXJnZXRQcm9wZXJ0eSB0YXJnZXRQcm9w
ZXJ0eSkKK3sKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fYWN0aXZlQW5pbWF0aW9ucy5z
aXplKCk7ICsraSkKKyAgICAgICAgaWYgKG1fYWN0aXZlQW5pbWF0aW9uc1tpXS0+Z3JvdXAoKSA9
PSBncm91cCAmJiBtX2FjdGl2ZUFuaW1hdGlvbnNbaV0tPnRhcmdldFByb3BlcnR5KCkgPT0gdGFy
Z2V0UHJvcGVydHkpCisgICAgICAgICAgICByZXR1cm4gbV9hY3RpdmVBbmltYXRpb25zW2ldLmdl
dCgpOworICAgIHJldHVybiAwOworfQorCiB2b2lkIENDTGF5ZXJBbmltYXRpb25Db250cm9sbGVy
OjpyZW1vdmVBbmltYXRpb25zQ29tcGxldGVkT25JbXBsVGhyZWFkKENDTGF5ZXJBbmltYXRpb25D
b250cm9sbGVySW1wbCogY29udHJvbGxlckltcGwpCiB7CiAgICAgLy8gQW55IGFuaW1hdGlvbnMg
ZmluaXNoZWQgb24gdGhlIGltcGwgdGhyZWFkIGFyZSByZW1vdmVkIGZyb20gdGhlIG1haW4gdGhy
ZWFkJ3MgY29sbGVjdGlvbi4KQEAgLTIyNSwxNCArMjMzLDYgQEAgYm9vbCBDQ0xheWVyQW5pbWF0
aW9uQ29udHJvbGxlcjo6Y3JlYXRlT3BhY2l0eUFuaW1hdGlvbihjb25zdCBLZXlmcmFtZVZhbHVl
TGlzdCYKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotQ0NBY3RpdmVBbmltYXRpb24qIENDTGF5ZXJB
bmltYXRpb25Db250cm9sbGVyOjpnZXRBY3RpdmVBbmltYXRpb24oQ0NBY3RpdmVBbmltYXRpb246
Okdyb3VwSUQgZ3JvdXAsIENDQWN0aXZlQW5pbWF0aW9uOjpUYXJnZXRQcm9wZXJ0eSB0YXJnZXRQ
cm9wZXJ0eSkKLXsKLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fYWN0aXZlQW5pbWF0aW9u
cy5zaXplKCk7ICsraSkKLSAgICAgICAgaWYgKG1fYWN0aXZlQW5pbWF0aW9uc1tpXS0+Z3JvdXAo
KSA9PSBncm91cCAmJiBtX2FjdGl2ZUFuaW1hdGlvbnNbaV0tPnRhcmdldFByb3BlcnR5KCkgPT0g
dGFyZ2V0UHJvcGVydHkpCi0gICAgICAgICAgICByZXR1cm4gbV9hY3RpdmVBbmltYXRpb25zW2ld
LmdldCgpOwotICAgIHJldHVybiAwOwotfQotCiB2b2lkIENDTGF5ZXJBbmltYXRpb25Db250cm9s
bGVyOjpyZW1vdmUoQ0NBY3RpdmVBbmltYXRpb246Okdyb3VwSUQgZ3JvdXAsIENDQWN0aXZlQW5p
bWF0aW9uOjpUYXJnZXRQcm9wZXJ0eSB0YXJnZXRQcm9wZXJ0eSkKIHsKICAgICBmb3IgKHNpemVf
dCBpID0gMDsgaSA8IG1fYWN0aXZlQW5pbWF0aW9ucy5zaXplKCk7ICsraSkgewpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllckFu
aW1hdGlvbkNvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDTGF5ZXJBbmltYXRpb25Db250cm9sbGVyLmgKaW5kZXggM2RiYjU0NzU5ZDYy
YWRhZmZkYjAyZjhhMzZjNDk1OTk3NWE2YWI0Yy4uMWI4Y2E5NDNiZmQ5ZmRiZDIwMjljNWRjMjg3
YzFkYmIyNTUxM2NkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NMYXllckFuaW1hdGlvbkNvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyQW5pbWF0aW9uQ29u
dHJvbGxlci5oCkBAIC02Myw2ICs2Myw3IEBAIHB1YmxpYzoKIAogICAgIC8vIFRoaXMgaXMgZm9y
IHRlc3RpbmcgcHVycG9zZXMgb25seS4KICAgICBWZWN0b3I8T3duUHRyPENDQWN0aXZlQW5pbWF0
aW9uPiA+JiBhY3RpdmVBbmltYXRpb25zKCkgeyByZXR1cm4gbV9hY3RpdmVBbmltYXRpb25zOyB9
CisgICAgQ0NBY3RpdmVBbmltYXRpb24qIGdldEFjdGl2ZUFuaW1hdGlvbihDQ0FjdGl2ZUFuaW1h
dGlvbjo6R3JvdXBJRCwgQ0NBY3RpdmVBbmltYXRpb246OlRhcmdldFByb3BlcnR5KTsKIAogcHJp
dmF0ZToKICAgICBDQ0xheWVyQW5pbWF0aW9uQ29udHJvbGxlcigpIHsgfQpAQCAtNzUsNyArNzYs
NiBAQCBwcml2YXRlOgogICAgIGJvb2wgY3JlYXRlVHJhbnNmb3JtQW5pbWF0aW9uKGNvbnN0IEtl
eWZyYW1lVmFsdWVMaXN0JiwgY29uc3QgQW5pbWF0aW9uKiwgY29uc3QgU3RyaW5nJiBhbmltYXRp
b25OYW1lLCBkb3VibGUgdGltZU9mZnNldCk7CiAgICAgYm9vbCBjcmVhdGVPcGFjaXR5QW5pbWF0
aW9uKGNvbnN0IEtleWZyYW1lVmFsdWVMaXN0JiwgY29uc3QgQW5pbWF0aW9uKiwgY29uc3QgU3Ry
aW5nJiBhbmltYXRpb25OYW1lLCBkb3VibGUgdGltZU9mZnNldCk7CiAKLSAgICBDQ0FjdGl2ZUFu
aW1hdGlvbiogZ2V0QWN0aXZlQW5pbWF0aW9uKENDQWN0aXZlQW5pbWF0aW9uOjpHcm91cElELCBD
Q0FjdGl2ZUFuaW1hdGlvbjo6VGFyZ2V0UHJvcGVydHkpOwogICAgIHZvaWQgcmVtb3ZlKENDQWN0
aXZlQW5pbWF0aW9uOjpHcm91cElELCBDQ0FjdGl2ZUFuaW1hdGlvbjo6VGFyZ2V0UHJvcGVydHkp
OwogCiAgICAgVmVjdG9yPE93blB0cjxDQ0FjdGl2ZUFuaW1hdGlvbj4gPiBtX2FjdGl2ZUFuaW1h
dGlvbnM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmNwcAppbmRleCA4NjM0N2QwZmVlYzZh
ZmQ0MzZlNGVkMTVmMDM4MjE1MTg2NGY5N2NjLi5iYzY1MTc4OWU2NzFjZmJmNWQyYTgyYTM2NmRl
OTc2YWQ4YThkMjM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5jcHAKQEAgLTI0MCw3
ICsyNDAsMTIgQEAgdm9pZCBDQ0xheWVyVHJlZUhvc3Q6OnNldE5lZWRzUmVkcmF3KCkKIHZvaWQg
Q0NMYXllclRyZWVIb3N0OjpzZXRBbmltYXRpb25SZXN1bHRzKGNvbnN0IENDQWN0aXZlQW5pbWF0
aW9uOjpBbmltYXRpb25SZXN1bHRzJiByZXN1bHRzKQogewogICAgIEFTU0VSVChDQ1RocmVhZFBy
b3h5Ojppc01haW5UaHJlYWQoKSk7Ci0gICAgLy8gRklYTUU6IGltcGxlbWVudCB0aGlzLiBXaWxs
IGhhdmUgdG8gd2FsayB0aGUgdHJlZS4KKyAgICBpZiAoIW1fcm9vdExheWVyKQorICAgICAgICBy
ZXR1cm47CisKKyAgICAvLyBXYWxrIHRoZSB3aG9sZSB0cmVlLiBLZWVwIGFuIGV5ZSBvbiB0aGUg
Y29zdCBvZiB0aGlzIGZ1bmN0aW9uLgorICAgIFRSQUNFX0VWRU5UKCJDQ0xheWVyVHJlZUhvc3Q6
OnNldEFuaW1hdGlvblJlc3VsdHMiLCB0aGlzLCAwKTsKKyAgICBzZXRBbmltYXRpb25SZXN1bHRz
UmVjdXJzaXZlKHJlc3VsdHMsIG1fcm9vdExheWVyLmdldCgpKTsKIH0KIAogdm9pZCBDQ0xheWVy
VHJlZUhvc3Q6OnNldFJvb3RMYXllcihQYXNzUmVmUHRyPExheWVyQ2hyb21pdW0+IHJvb3RMYXll
cikKQEAgLTU2Miw2ICs1NjcsMTcgQEAgdm9pZCBDQ0xheWVyVHJlZUhvc3Q6OmNsZWFyUGVuZGlu
Z1VwZGF0ZSgpCiAgICAgbV91cGRhdGVMaXN0LmNsZWFyKCk7CiB9CiAKK3ZvaWQgQ0NMYXllclRy
ZWVIb3N0OjpzZXRBbmltYXRpb25SZXN1bHRzUmVjdXJzaXZlKGNvbnN0IENDQWN0aXZlQW5pbWF0
aW9uOjpBbmltYXRpb25SZXN1bHRzJiByZXN1bHRzLCBMYXllckNocm9taXVtKiBsYXllcikKK3sK
KyAgICBmb3IgKHNpemVfdCByZXN1bHRJbmRleCA9IDA7IHJlc3VsdEluZGV4IDwgcmVzdWx0cy5z
dGFydGVkQW5pbWF0aW9ucy5zaXplKCk7ICsrcmVzdWx0SW5kZXgpIHsKKyAgICAgICAgaWYgKGxh
eWVyLT5pZCgpID09IHJlc3VsdHMuc3RhcnRlZEFuaW1hdGlvbnNbcmVzdWx0SW5kZXhdLmxheWVy
SUQpCisgICAgICAgICAgICBsYXllci0+bm90aWZ5QW5pbWF0aW9uU3RhcnRlZChyZXN1bHRzLnN0
YXJ0ZWRBbmltYXRpb25zW3Jlc3VsdEluZGV4XS50aW1lKTsKKyAgICB9CisKKyAgICBmb3IgKHNp
emVfdCBjaGlsZEluZGV4ID0gMDsgY2hpbGRJbmRleCA8IGxheWVyLT5jaGlsZHJlbigpLnNpemUo
KTsgKytjaGlsZEluZGV4KQorICAgICAgICBzZXRBbmltYXRpb25SZXN1bHRzUmVjdXJzaXZlKHJl
c3VsdHMsIGxheWVyLT5jaGlsZHJlbigpW2NoaWxkSW5kZXhdLmdldCgpKTsKK30KKwogdm9pZCBD
Q0xheWVyVHJlZUhvc3Q6OmFwcGx5U2Nyb2xsQW5kU2NhbGUoY29uc3QgQ0NTY3JvbGxBbmRTY2Fs
ZVNldCYgaW5mbykKIHsKICAgICAvLyBGSVhNRTogcHVzaGluZyBzY3JvbGwgb2Zmc2V0cyB0byBu
b24tcm9vdCBsYXllcnMgbm90IGltcGxlbWVudGVkCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5o
CmluZGV4IGMyYmU0NTlkYTcyZDU1M2JhYmFmMGY5NmU3YTYwNTM5Y2E2YWE5YTUuLmYxODEyZjg4
NjczODhkNDQwZWE2Mjc4ODYzMWI5MmZlOGYzNDVkYmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVl
SG9zdC5oCkBAIC0yMTgsNiArMjE4LDggQEAgcHJpdmF0ZToKICAgICB2b2lkIHJlc2VydmVUZXh0
dXJlcygpOwogICAgIHZvaWQgY2xlYXJQZW5kaW5nVXBkYXRlKCk7CiAKKyAgICB2b2lkIHNldEFu
aW1hdGlvblJlc3VsdHNSZWN1cnNpdmUoY29uc3QgQ0NBY3RpdmVBbmltYXRpb246OkFuaW1hdGlv
blJlc3VsdHMmLCBMYXllckNocm9taXVtKik7CisKICAgICBpbnQgbV9jb21wb3NpdG9ySWRlbnRp
ZmllcjsKIAogICAgIGJvb2wgbV9hbmltYXRpbmc7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>126145</attachid>
            <date>2012-02-08 13:44:00 -0800</date>
            <delta_ts>2012-02-10 15:32:07 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-77646-20120208164358.patch</filename>
            <type>text/plain</type>
            <size>34796</size>
            <attacher>vollick</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA3OTBiZDEwZWNkM2IxNzc4M2Q2MzIxNTRmMjYyMDEyOGIxMzRiNTIwLi4x
ZGQ1M2FhZDA2NmVhY2RmN2YzZWYxZGM5MjA5OTQ0NTE0MzY4ZmM3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMTA5IEBACisyMDEyLTAxLTI3ICBJYW4gVm9sbGljayAgPHZvbGxpY2tAY2hyb21pdW0u
b3JnPgorCisgICAgICAgIFtjaHJvbWl1bV0gSW1wbGVtZW50IGtleWZyYW1lZCBhbmltYXRpb25z
IGZvciB0aGUgY2MgdGhyZWFkLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9NzcyMjkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBObyBuZXcgdGVzdHMuIChPT1BTISkKKworICAgICAgICAqIFdlYkNvcmUuZ3lw
aToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0FjdGl2ZUFuaW1h
dGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ0FjdGl2ZUFuaW1hdGlvbjo6Q0NBY3RpdmVB
bmltYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6Q0NBY3RpdmVBbmltYXRpb246OmNsb25lRm9y
SW1wbFRocmVhZCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NB
Y3RpdmVBbmltYXRpb24uaDoKKyAgICAgICAgKENDQWN0aXZlQW5pbWF0aW9uKToKKyAgICAgICAg
KCk6CisgICAgICAgIChXZWJDb3JlOjpDQ0FjdGl2ZUFuaW1hdGlvbjo6Y3JlYXRlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNDQWN0aXZlQW5pbWF0aW9uOjpuYW1lKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0FuaW1hdGlvbkN1cnZlLmg6CisgICAgICAgIChDQ1Ry
YW5zZm9ybUFuaW1hdGlvbkN1cnZlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ0xheWVyQW5pbWF0aW9uQ29udHJvbGxlci5jcHA6CisgICAgICAgICgpOgorICAg
ICAgICAoV2ViQ29yZTo6Q0NMYXllckFuaW1hdGlvbkNvbnRyb2xsZXI6OmFkZEFuaW1hdGlvbik6
CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVyQW5pbWF0aW9uQ29udHJvbGxlcjo6Y3JlYXRlVHJh
bnNmb3JtQW5pbWF0aW9uKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6
Q0NMYXllckFuaW1hdGlvbkNvbnRyb2xsZXI6OmNyZWF0ZU9wYWNpdHlBbmltYXRpb24pOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJBbmltYXRpb25Db250
cm9sbGVyLmg6CisgICAgICAgIChDQ0xheWVyQW5pbWF0aW9uQ29udHJvbGxlcik6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllckFuaW1hdGlvbkNvbnRyb2xs
ZXJJbXBsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJBbmltYXRpb25Db250cm9sbGVy
SW1wbDo6dGlja0FuaW1hdGlvbnMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDTGF5ZXJBbmltYXRpb25Db250cm9sbGVySW1wbC5oOgorICAgICAgICAoQ0NMYXll
ckFuaW1hdGlvbkNvbnRyb2xsZXJJbXBsQ2xpZW50KToKKyAgICAgICAgKENDTGF5ZXJBbmltYXRp
b25Db250cm9sbGVySW1wbCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NMYXllckltcGwuaDoKKyAgICAgICAgKENDTGF5ZXJJbXBsKToKKyAgICAgICAgKFdlYkNv
cmU6OkNDTGF5ZXJJbXBsOjpib3VuZHMpOgorCisyMDEyLTAxLTE2ICBJYW4gVm9sbGljayAgPHZv
bGxpY2tAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtjaHJvbWl1bV0gSGFuZGxlIENTUyBhbmlt
YXRpb25zIG9uIENDVGhyZWFkIHdoZW4gcG9zc2libGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc1ODc0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJDb3JlLmd5cGk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vR3JhcGhpY3NMYXllckNocm9taXVtLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJDaHJvbWl1bTo6YWRkQ2hpbGQpOgorICAgICAgICAoV2Vi
Q29yZTo6R3JhcGhpY3NMYXllckNocm9taXVtOjphZGRBbmltYXRpb24pOgorICAgICAgICAoV2Vi
Q29yZTo6R3JhcGhpY3NMYXllckNocm9taXVtOjpwYXVzZUFuaW1hdGlvbik6CisgICAgICAgIChX
ZWJDb3JlOjpHcmFwaGljc0xheWVyQ2hyb21pdW06OnJlbW92ZUFuaW1hdGlvbik6CisgICAgICAg
IChXZWJDb3JlOjpHcmFwaGljc0xheWVyQ2hyb21pdW06OnN1c3BlbmRBbmltYXRpb25zKToKKyAg
ICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJDaHJvbWl1bTo6cmVzdW1lQW5pbWF0aW9ucyk6
CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyQ2hyb21pdW06OnNldENvbnRlbnRzVG9N
ZWRpYSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyQ2hyb21pdW06OnVwZGF0ZUxh
eWVyUHJlc2VydmVzM0QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0dy
YXBoaWNzTGF5ZXJDaHJvbWl1bS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL0xheWVyQ2hyb21pdW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJDaHJvbWl1bTo6
TGF5ZXJDaHJvbWl1bSk6CisgICAgICAgIChXZWJDb3JlOjpMYXllckNocm9taXVtOjphZGRBbmlt
YXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJDaHJvbWl1bTo6cGF1c2VBbmltYXRpb24p
OgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJDaHJvbWl1bTo6cmVtb3ZlQW5pbWF0aW9uKToKKyAg
ICAgICAgKFdlYkNvcmU6OkxheWVyQ2hyb21pdW06OnN1c3BlbmRBbmltYXRpb25zKToKKyAgICAg
ICAgKFdlYkNvcmU6OkxheWVyQ2hyb21pdW06OnJlc3VtZUFuaW1hdGlvbnMpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyQ2hyb21pdW0uaDoKKyAgICAgICAgKFdl
YkNvcmU6OkxheWVyQ2hyb21pdW06OmFuaW1hdGlvbkNvbnRyb2xsZXIpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RyZWVTeW5jaHJvbml6ZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6VHJlZVN5bmNocm9uaXplcjo6c3luY2hyb25pemVUcmVlUmVjdXJzaXZlKToKKyAg
ICAgICAgKFdlYkNvcmU6OlRyZWVTeW5jaHJvbml6ZXI6OnN5bmNocm9uaXplVHJlZXMpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RyZWVTeW5jaHJvbml6ZXIuaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0FjdGl2ZUFuaW1hdGlvbi5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpDQ0FjdGl2ZUFuaW1hdGlvbjo6Y2xvbmVGb3JJbXBsVGhy
ZWFkKToKKyAgICAgICAgKFdlYkNvcmU6OkNDQWN0aXZlQW5pbWF0aW9uOjpwdXNoUHJvcGVydGll
c1RvKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0FjdGl2ZUFu
aW1hdGlvbi5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5
ZXJBbmltYXRpb25Db250cm9sbGVyLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpDQ0xh
eWVyQW5pbWF0aW9uQ29udHJvbGxlcjo6YWRkQW5pbWF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6
OkNDTGF5ZXJBbmltYXRpb25Db250cm9sbGVyOjpwYXVzZUFuaW1hdGlvbik6CisgICAgICAgIChX
ZWJDb3JlOjpDQ0xheWVyQW5pbWF0aW9uQ29udHJvbGxlcjo6cmVtb3ZlQW5pbWF0aW9uKToKKyAg
ICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJBbmltYXRpb25Db250cm9sbGVyOjpzdXNwZW5kQW5pbWF0
aW9ucyk6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVyQW5pbWF0aW9uQ29udHJvbGxlcjo6cmVz
dW1lQW5pbWF0aW9ucyk6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVyQW5pbWF0aW9uQ29udHJv
bGxlcjo6cHVzaEFuaW1hdGlvbnNUbyk6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVyQW5pbWF0
aW9uQ29udHJvbGxlcjo6Z2V0QWN0aXZlQW5pbWF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkND
TGF5ZXJBbmltYXRpb25Db250cm9sbGVyOjpyZW1vdmUpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJBbmltYXRpb25Db250cm9sbGVyLmg6IENvcGllZCBm
cm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJB
bmltYXRpb25Db250cm9sbGVySW1wbC5oLgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllckFuaW1h
dGlvbkNvbnRyb2xsZXI6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVyQW5pbWF0
aW9uQ29udHJvbGxlcjo6fkNDTGF5ZXJBbmltYXRpb25Db250cm9sbGVyKToKKyAgICAgICAgKFdl
YkNvcmU6OkNDTGF5ZXJBbmltYXRpb25Db250cm9sbGVyOjphY3RpdmVBbmltYXRpb25zKToKKyAg
ICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJBbmltYXRpb25Db250cm9sbGVyOjpDQ0xheWVyQW5pbWF0
aW9uQ29udHJvbGxlcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NMYXllckFuaW1hdGlvbkNvbnRyb2xsZXJJbXBsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkND
TGF5ZXJBbmltYXRpb25Db250cm9sbGVySW1wbDo6YWRkKToKKyAgICAgICAgKFdlYkNvcmU6OkND
TGF5ZXJBbmltYXRpb25Db250cm9sbGVySW1wbDo6cHVyZ2VGaW5pc2hlZEFuaW1hdGlvbnMpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJBbmltYXRpb25D
b250cm9sbGVySW1wbC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDTGF5ZXJJbXBsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJJbXBsOjpDQ0xheWVy
SW1wbCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllcklt
cGwuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJJbXBsOjpvcGFjaXR5KToKKyAgICAgICAg
KFdlYkNvcmU6OkNDTGF5ZXJJbXBsOjp0cmFuc2Zvcm0pOgorICAgICAgICAoV2ViQ29yZTo6Q0NM
YXllckltcGw6OmFuaW1hdGlvbkNvbnRyb2xsZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpD
Q0xheWVyVHJlZUhvc3Q6OmZpbmlzaENvbW1pdE9uSW1wbFRocmVhZCk6CisgICAgICAgIChXZWJD
b3JlOjpDQ0xheWVyVHJlZUhvc3Q6OmRpZEJlY29tZUludmlzaWJsZU9uSW1wbFRocmVhZCk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1w
bC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVyVHJlZUhvc3RJbXBsOjphbmltYXRlKToK
KyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJUcmVlSG9zdEltcGw6OmFuaW1hdGVMYXllcnMpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdElt
cGwuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJUcmVlSG9zdEltcGw6Omhhc0FjdGl2ZUFu
aW1hdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVyVHJlZUhvc3RJbXBsOjpzZXRIYXNB
Y3RpdmVBbmltYXRpb24pOgorCiAyMDEyLTAyLTA4ICBJYW4gVm9sbGljayAgPHZvbGxpY2tAY2hy
b21pdW0ub3JnPgogCiAgICAgICAgIFtjaHJvbWl1bV0gSW1wbGVtZW50IGtleWZyYW1lZCBhbmlt
YXRpb25zIGZvciB0aGUgY2MgdGhyZWFkLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwppbmRleCA2
NjBjNTFlODNhZDMwOTk1ZDNmYWNiMmY0NDJjNjFmNDU3MzEzYzg3Li40ZGQ1MmE2MjY1OTU0Y2Ez
YWQ0NDUwNjM5ZDQ3YzM1YWUwYTRhODdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDIyIEBACisyMDEyLTAxLTI3ICBJYW4gVm9sbGljayAgPHZvbGxpY2tAY2hyb21pdW0u
b3JnPgorCisgICAgICAgIFtjaHJvbWl1bV0gSW1wbGVtZW50IGtleWZyYW1lZCBhbmltYXRpb25z
IGZvciB0aGUgY2MgdGhyZWFkLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9NzcyMjkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICAqIHRlc3RzL0NDQWN0aXZlQW5pbWF0aW9uVGVzdC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpjcmVhdGVBY3RpdmVBbmltYXRpb24pOgorICAgICAgICAqIHRlc3RzL0NDQW5pbWF0
aW9uVGVzdENvbW1vbi5oOgorICAgICAgICAoV2ViS2l0VGVzdHM6OkZha2VUcmFuc2Zvcm1UcmFu
c2l0aW9uOjpnZXRWYWx1ZSk6CisgICAgICAgICogdGVzdHMvQ0NMYXllckFuaW1hdGlvbkNvbnRy
b2xsZXJJbXBsVGVzdC5jcHA6CisgICAgICAgIChXZWJLaXRUZXN0czo6RmFrZUNvbnRyb2xsZXJD
bGllbnQ6OmJvdW5kcyk6CisgICAgICAgIChGYWtlQ29udHJvbGxlckNsaWVudCk6CisgICAgICAg
IChXZWJLaXRUZXN0czo6Y3JlYXRlQWN0aXZlQW5pbWF0aW9uKToKKyAgICAgICAgKFdlYktpdFRl
c3RzKToKKyAgICAgICAgKFdlYktpdFRlc3RzOjpURVNUKToKKyAgICAgICAgKiB0ZXN0cy9UcmVl
U3luY2hyb25pemVyVGVzdC5jcHA6CisKIDIwMTItMDItMDggIElhbiBWb2xsaWNrICA8dm9sbGlj
a0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgW2Nocm9taXVtXSBJbXBsZW1lbnQga2V5ZnJhbWVk
IGFuaW1hdGlvbnMgZm9yIHRoZSBjYyB0aHJlYWQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLmd5cGkgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKaW5kZXggNTJjMjEw
OWJiMTFmZTAzNTVhOWE2NjU5ZGVkMWZjNGMyZDU5NTI5ZC4uYWMyODc0MzYwZGUxNmMwYjU4Y2Y5
YmZhYzUyNGZjNzM4MjJlYjc3NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5n
eXBpCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQpAQCAtMzI0Nyw2ICszMjQ3LDcg
QEAKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyQW5p
bWF0aW9uQ29udHJvbGxlci5jcHAnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDTGF5ZXJBbmltYXRpb25Db250cm9sbGVySW1wbC5oJywKICAgICAgICAgICAg
ICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyQW5pbWF0aW9uQ29udHJvbGxl
ckltcGwuY3BwJywKKyAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q0xheWVyQW5pbWF0aW9uRGVsZWdhdGUuaCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NMYXllckltcGwuY3BwJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVySW1wbC5oJywKICAgICAgICAgICAgICdwbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVySXRlcmF0b3IuY3BwJywKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0dyYXBoaWNzTGF5ZXJD
aHJvbWl1bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9H
cmFwaGljc0xheWVyQ2hyb21pdW0uY3BwCmluZGV4IDExZmE0NmI3OTIxMDJkNWJhYmU5NGYyMGVi
ZTFmZTllODU3Mjc0MjAuLjY3NjI0YzcyMzA5MzYwNDMzMWE4OTNkNmY3NDAzMzk5ZTNkNDkwYmQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0dy
YXBoaWNzTGF5ZXJDaHJvbWl1bS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vR3JhcGhpY3NMYXllckNocm9taXVtLmNwcApAQCAtNzUsNiArNzUsNyBA
QCBHcmFwaGljc0xheWVyQ2hyb21pdW06OkdyYXBoaWNzTGF5ZXJDaHJvbWl1bShHcmFwaGljc0xh
eWVyQ2xpZW50KiBjbGllbnQpCiAgICAgLCBtX2luU2V0Q2hpbGRyZW4oZmFsc2UpCiB7CiAgICAg
bV9sYXllciA9IENvbnRlbnRMYXllckNocm9taXVtOjpjcmVhdGUodGhpcyk7CisgICAgbV9sYXll
ci0+c2V0TGF5ZXJBbmltYXRpb25EZWxlZ2F0ZSh0aGlzKTsKIAogICAgIHVwZGF0ZURlYnVnSW5k
aWNhdG9ycygpOwogfQpAQCAtODQsMTEgKzg1LDE0IEBAIEdyYXBoaWNzTGF5ZXJDaHJvbWl1bTo6
fkdyYXBoaWNzTGF5ZXJDaHJvbWl1bSgpCiAgICAgaWYgKG1fbGF5ZXIpIHsKICAgICAgICAgbV9s
YXllci0+Y2xlYXJEZWxlZ2F0ZSgpOwogICAgICAgICBtX2xheWVyLT5jbGVhclJlbmRlclN1cmZh
Y2UoKTsKKyAgICAgICAgbV9sYXllci0+Y2xlYXJMYXllckFuaW1hdGlvbkRlbGVnYXRlKCk7CiAg
ICAgfQogICAgIGlmIChtX2NvbnRlbnRzTGF5ZXIpCiAgICAgICAgIG1fY29udGVudHNMYXllci0+
Y2xlYXJSZW5kZXJTdXJmYWNlKCk7Ci0gICAgaWYgKG1fdHJhbnNmb3JtTGF5ZXIpCisgICAgaWYg
KG1fdHJhbnNmb3JtTGF5ZXIpIHsKICAgICAgICAgbV90cmFuc2Zvcm1MYXllci0+Y2xlYXJSZW5k
ZXJTdXJmYWNlKCk7CisgICAgICAgIG1fbGF5ZXItPmNsZWFyTGF5ZXJBbmltYXRpb25EZWxlZ2F0
ZSgpOworICAgIH0KIH0KIAogdm9pZCBHcmFwaGljc0xheWVyQ2hyb21pdW06OnNldE5hbWUoY29u
c3QgU3RyaW5nJiBpbk5hbWUpCkBAIC0zNzEsMzMgKzM3NSwyNyBAQCB2b2lkIEdyYXBoaWNzTGF5
ZXJDaHJvbWl1bTo6c2V0Q29udGVudHNUb0NhbnZhcyhQbGF0Zm9ybUxheWVyKiBwbGF0Zm9ybUxh
eWVyKQogCiBib29sIEdyYXBoaWNzTGF5ZXJDaHJvbWl1bTo6YWRkQW5pbWF0aW9uKGNvbnN0IEtl
eWZyYW1lVmFsdWVMaXN0JiB2YWx1ZXMsIGNvbnN0IEludFNpemUmIGJveFNpemUsIGNvbnN0IEFu
aW1hdGlvbiogYW5pbWF0aW9uLCBjb25zdCBTdHJpbmcmIGFuaW1hdGlvbk5hbWUsIGRvdWJsZSB0
aW1lT2Zmc2V0KQogewotICAgIHJldHVybiBtX2xheWVyLT5hZGRBbmltYXRpb24odmFsdWVzLCBi
b3hTaXplLCBhbmltYXRpb24sIGFuaW1hdGlvbk5hbWUsIHRpbWVPZmZzZXQpOworICAgIHJldHVy
biBwcmltYXJ5TGF5ZXIoKS0+YWRkQW5pbWF0aW9uKHZhbHVlcywgYm94U2l6ZSwgYW5pbWF0aW9u
LCBhbmltYXRpb25OYW1lLCB0aW1lT2Zmc2V0KTsKIH0KIAogdm9pZCBHcmFwaGljc0xheWVyQ2hy
b21pdW06OnBhdXNlQW5pbWF0aW9uKGNvbnN0IFN0cmluZyYgYW5pbWF0aW9uTmFtZSwgZG91Ymxl
IHRpbWVPZmZzZXQpCiB7Ci0gICAgbV9sYXllci0+cGF1c2VBbmltYXRpb24oYW5pbWF0aW9uTmFt
ZSwgdGltZU9mZnNldCk7CisgICAgcHJpbWFyeUxheWVyKCktPnBhdXNlQW5pbWF0aW9uKGFuaW1h
dGlvbk5hbWUsIHRpbWVPZmZzZXQpOwogfQogCiB2b2lkIEdyYXBoaWNzTGF5ZXJDaHJvbWl1bTo6
cmVtb3ZlQW5pbWF0aW9uKGNvbnN0IFN0cmluZyYgYW5pbWF0aW9uTmFtZSkKIHsKLSAgICBtX2xh
eWVyLT5yZW1vdmVBbmltYXRpb24oYW5pbWF0aW9uTmFtZSk7CisgICAgcHJpbWFyeUxheWVyKCkt
PnJlbW92ZUFuaW1hdGlvbihhbmltYXRpb25OYW1lKTsKIH0KIAogdm9pZCBHcmFwaGljc0xheWVy
Q2hyb21pdW06OnN1c3BlbmRBbmltYXRpb25zKGRvdWJsZSB0aW1lKQogewotICAgIG1fbGF5ZXIt
PnN1c3BlbmRBbmltYXRpb25zKHRpbWUpOworICAgIHByaW1hcnlMYXllcigpLT5zdXNwZW5kQW5p
bWF0aW9ucyh0aW1lKTsKIH0KIAogdm9pZCBHcmFwaGljc0xheWVyQ2hyb21pdW06OnJlc3VtZUFu
aW1hdGlvbnMoKQogewotICAgIG1fbGF5ZXItPnJlc3VtZUFuaW1hdGlvbnMoKTsKLX0KLQotdm9p
ZCBHcmFwaGljc0xheWVyQ2hyb21pdW06OmxheWVyQW5pbWF0aW9uU3RhcnRlZChkb3VibGUgc3Rh
cnRUaW1lKQotewotICAgIGlmIChtX2NsaWVudCkKLSAgICAgICAgbV9jbGllbnQtPm5vdGlmeUFu
aW1hdGlvblN0YXJ0ZWQodGhpcywgc3RhcnRUaW1lKTsKKyAgICBwcmltYXJ5TGF5ZXIoKS0+cmVz
dW1lQW5pbWF0aW9ucygpOwogfQogCiB2b2lkIEdyYXBoaWNzTGF5ZXJDaHJvbWl1bTo6c2V0Q29u
dGVudHNUb01lZGlhKFBsYXRmb3JtTGF5ZXIqIGxheWVyKQpAQCAtNTU1LDYgKzU1Myw3IEBAIHZv
aWQgR3JhcGhpY3NMYXllckNocm9taXVtOjp1cGRhdGVMYXllclByZXNlcnZlczNEKCkKICAgICAg
ICAgLy8gQ3JlYXRlIHRoZSB0cmFuc2Zvcm0gbGF5ZXIuCiAgICAgICAgIG1fdHJhbnNmb3JtTGF5
ZXIgPSBMYXllckNocm9taXVtOjpjcmVhdGUoKTsKICAgICAgICAgbV90cmFuc2Zvcm1MYXllci0+
c2V0UHJlc2VydmVzM0QodHJ1ZSk7CisgICAgICAgIG1fdHJhbnNmb3JtTGF5ZXItPnNldExheWVy
QW5pbWF0aW9uRGVsZWdhdGUodGhpcyk7CiAKICAgICAgICAgLy8gQ29weSB0aGUgcG9zaXRpb24g
ZnJvbSB0aGlzIGxheWVyLgogICAgICAgICB1cGRhdGVMYXllclBvc2l0aW9uKCk7CkBAIC01ODcs
NiArNTg2LDcgQEAgdm9pZCBHcmFwaGljc0xheWVyQ2hyb21pdW06OnVwZGF0ZUxheWVyUHJlc2Vy
dmVzM0QoKQogICAgICAgICAgICAgbV90cmFuc2Zvcm1MYXllci0+cGFyZW50KCktPnJlcGxhY2VD
aGlsZChtX3RyYW5zZm9ybUxheWVyLmdldCgpLCBtX2xheWVyLmdldCgpKTsKIAogICAgICAgICAv
LyBSZWxlYXNlIHRoZSB0cmFuc2Zvcm0gbGF5ZXIuCisgICAgICAgIG1fdHJhbnNmb3JtTGF5ZXIt
PmNsZWFyTGF5ZXJBbmltYXRpb25EZWxlZ2F0ZSgpOwogICAgICAgICBtX3RyYW5zZm9ybUxheWVy
ID0gMDsKIAogICAgICAgICB1cGRhdGVMYXllclBvc2l0aW9uKCk7CkBAIC03MDcsNiArNzA3LDEy
IEBAIHZvaWQgR3JhcGhpY3NMYXllckNocm9taXVtOjpwYWludENvbnRlbnRzKEdyYXBoaWNzQ29u
dGV4dCYgY29udGV4dCwgY29uc3QgSW50UmVjCiAgICAgcGFpbnRHcmFwaGljc0xheWVyQ29udGVu
dHMoY29udGV4dCwgY2xpcCk7CiB9CiAKK3ZvaWQgR3JhcGhpY3NMYXllckNocm9taXVtOjpub3Rp
ZnlBbmltYXRpb25TdGFydGVkKGRvdWJsZSBzdGFydFRpbWUpCit7CisgICAgaWYgKG1fY2xpZW50
KQorICAgICAgICBtX2NsaWVudC0+bm90aWZ5QW5pbWF0aW9uU3RhcnRlZCh0aGlzLCBzdGFydFRp
bWUpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBVU0UoQUNDRUxF
UkFURURfQ09NUE9TSVRJTkcpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9HcmFwaGljc0xheWVyQ2hyb21pdW0uaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0dyYXBoaWNzTGF5ZXJDaHJvbWl1bS5oCmluZGV4
IDJiNzg1MDE4NmVhMWM5ZTA5NDZkYTM3MzJjNTM1MmVjZGM5ZWMwYjcuLjRmNmE3MjY2YzYzNWJm
ZTMzOGM2NmRhYmI3OTFiOGExYmE2Yzk4OGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0dyYXBoaWNzTGF5ZXJDaHJvbWl1bS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0dyYXBoaWNzTGF5ZXJDaHJv
bWl1bS5oCkBAIC0zNywxMiArMzcsMTUgQEAKICNpbmNsdWRlICJMYXllckNocm9taXVtLmgiCiAj
aW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0LmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NMYXllci5oIgor
I2luY2x1ZGUgImNjL0NDTGF5ZXJBbmltYXRpb25EZWxlZ2F0ZS5oIgogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKIGNsYXNzIExheWVyQ2hyb21pdW07CiAKLWNsYXNzIEdyYXBoaWNzTGF5ZXJDaHJv
bWl1bSA6IHB1YmxpYyBHcmFwaGljc0xheWVyLCBwdWJsaWMgQ29udGVudExheWVyRGVsZWdhdGUg
eworY2xhc3MgR3JhcGhpY3NMYXllckNocm9taXVtIDogcHVibGljIEdyYXBoaWNzTGF5ZXIsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdWJsaWMgQ29udGVudExheWVyRGVsZWdhdGUs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdWJsaWMgQ0NMYXllckFuaW1hdGlvbkRl
bGVnYXRlIHsKIHB1YmxpYzoKICAgICBHcmFwaGljc0xheWVyQ2hyb21pdW0oR3JhcGhpY3NMYXll
ckNsaWVudCopOwogICAgIHZpcnR1YWwgfkdyYXBoaWNzTGF5ZXJDaHJvbWl1bSgpOwpAQCAtOTgs
OCArMTAxLDYgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBzdXNwZW5kQW5pbWF0aW9ucyhk
b3VibGUgdGltZSk7CiAgICAgdmlydHVhbCB2b2lkIHJlc3VtZUFuaW1hdGlvbnMoKTsKIAotICAg
IHZvaWQgbGF5ZXJBbmltYXRpb25TdGFydGVkKGRvdWJsZSBzdGFydFRpbWUpOwotCiAgICAgdmly
dHVhbCBQbGF0Zm9ybUxheWVyKiBwbGF0Zm9ybUxheWVyKCkgY29uc3Q7CiAKICAgICB2aXJ0dWFs
IHZvaWQgc2V0RGVidWdCYWNrZ3JvdW5kQ29sb3IoY29uc3QgQ29sb3ImKTsKQEAgLTEwOSw2ICsx
MTAsOSBAQCBwdWJsaWM6CiAgICAgLy8gQ29udGVudExheWVyRGVsZWdhdGUgaW1wbGVtZW50YXRp
b24uCiAgICAgdmlydHVhbCB2b2lkIHBhaW50Q29udGVudHMoR3JhcGhpY3NDb250ZXh0JiwgY29u
c3QgSW50UmVjdCYgY2xpcCk7CiAKKyAgICAvLyBDQ0xheWVyQW5pbWF0aW9uRGVsZWdhdGUgaW1w
bGVtZW50YXRpb24uCisgICAgdmlydHVhbCB2b2lkIG5vdGlmeUFuaW1hdGlvblN0YXJ0ZWQoZG91
YmxlIHN0YXJ0VGltZSk7CisKICAgICAvLyBFeHBvc2VkIGZvciB0ZXN0cy4KICAgICBMYXllckNo
cm9taXVtKiBjb250ZW50c0xheWVyKCkgY29uc3QgeyByZXR1cm4gbV9jb250ZW50c0xheWVyLmdl
dCgpOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL0xheWVyQ2hyb21pdW0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vTGF5ZXJDaHJvbWl1bS5jcHAKaW5kZXggNWNjMGRmNzkwZmJlMDliMTVjMGZm
YTUyYWJjZWRlNjgxNTQ5YTMwOC4uZGU1M2UwMTJiZjlmODExNWJmNGQyYWI3NzM2NTA0YTU0NGI4
NjYzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vTGF5ZXJDaHJvbWl1bS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vTGF5ZXJDaHJvbWl1bS5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29w
eXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKQEAgLTM0LDYgKzM0LDcgQEAKICNpbmNsdWRlICJM
YXllckNocm9taXVtLmgiCiAKICNpbmNsdWRlICJjYy9DQ0xheWVyQW5pbWF0aW9uQ29udHJvbGxl
ci5oIgorI2luY2x1ZGUgImNjL0NDTGF5ZXJBbmltYXRpb25EZWxlZ2F0ZS5oIgogI2luY2x1ZGUg
ImNjL0NDTGF5ZXJJbXBsLmgiCiAjaW5jbHVkZSAiY2MvQ0NMYXllclRyZWVIb3N0LmgiCiAjaWYg
VVNFKFNLSUEpCkBAIC04MSw2ICs4Miw3IEBAIExheWVyQ2hyb21pdW06OkxheWVyQ2hyb21pdW0o
KQogICAgICwgbV90YXJnZXRSZW5kZXJTdXJmYWNlKDApCiAgICAgLCBtX2NvbnRlbnRzU2NhbGUo
MS4wKQogICAgICwgbV9wYWdlU2NhbGVEaXJ0eShmYWxzZSkKKyAgICAsIG1fbGF5ZXJBbmltYXRp
b25EZWxlZ2F0ZSgwKQogewogfQogCkBAIC0xMzAsNiArMTMyLDEyIEBAIHZvaWQgTGF5ZXJDaHJv
bWl1bTo6cmVzdW1lQW5pbWF0aW9ucygpCiAgICAgc2V0TmVlZHNDb21taXQoKTsKIH0KIAordm9p
ZCBMYXllckNocm9taXVtOjpub3RpZnlBbmltYXRpb25TdGFydGVkKGRvdWJsZSB0aW1lKQorewor
ICAgIGlmIChtX2xheWVyQW5pbWF0aW9uRGVsZWdhdGUpCisgICAgICAgIG1fbGF5ZXJBbmltYXRp
b25EZWxlZ2F0ZS0+bm90aWZ5QW5pbWF0aW9uU3RhcnRlZCh0aW1lKTsKK30KKwogdm9pZCBMYXll
ckNocm9taXVtOjpzZXRJc05vbkNvbXBvc2l0ZWRDb250ZW50KGJvb2wgaXNOb25Db21wb3NpdGVk
Q29udGVudCkKIHsKICAgICBtX2lzTm9uQ29tcG9zaXRlZENvbnRlbnQgPSBpc05vbkNvbXBvc2l0
ZWRDb250ZW50OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vTGF5ZXJDaHJvbWl1bS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vTGF5ZXJDaHJvbWl1bS5oCmluZGV4IDg5YjYyNjVkMGYxM2RkZTVkZGZjOTNl
NTQ0ODFlNmJkMjMzMGMzMDkuLmZhODM0MmI3MTBhMDllNWQ1ODIyY2RkZmY1Y2EzMDkwNjc1YmM2
M2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L0xheWVyQ2hyb21pdW0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9MYXllckNocm9taXVtLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0
IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucyBhcmUKQEAgLTUyLDYgKzUyLDcgQEAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogY2xhc3MgQ0NMYXllckFuaW1hdGlvbkNvbnRyb2xsZXI7CitjbGFzcyBDQ0xheWVyQW5p
bWF0aW9uRGVsZWdhdGU7CiBjbGFzcyBDQ0xheWVySW1wbDsKIGNsYXNzIENDTGF5ZXJUcmVlSG9z
dDsKIGNsYXNzIENDVGV4dHVyZVVwZGF0ZXI7CkBAIC0yMTgsOCArMjE5LDEyIEBAIHB1YmxpYzoK
ICAgICB2b2lkIHN1c3BlbmRBbmltYXRpb25zKGRvdWJsZSB0aW1lKTsKICAgICB2b2lkIHJlc3Vt
ZUFuaW1hdGlvbnMoKTsKIAorICAgIHZvaWQgc2V0TGF5ZXJBbmltYXRpb25EZWxlZ2F0ZShDQ0xh
eWVyQW5pbWF0aW9uRGVsZWdhdGUqIGxheWVyQW5pbWF0aW9uRGVsZWdhdGUpIHsgbV9sYXllckFu
aW1hdGlvbkRlbGVnYXRlID0gbGF5ZXJBbmltYXRpb25EZWxlZ2F0ZTsgfQorICAgIHZvaWQgY2xl
YXJMYXllckFuaW1hdGlvbkRlbGVnYXRlKCkgeyBtX2xheWVyQW5pbWF0aW9uRGVsZWdhdGUgPSAw
OyB9CisKIHByb3RlY3RlZDoKICAgICBmcmllbmQgY2xhc3MgQ0NMYXllckltcGw7CisgICAgZnJp
ZW5kIGNsYXNzIENDTGF5ZXJUcmVlSG9zdDsKICAgICBmcmllbmQgY2xhc3MgQ0NMYXllclRyZWVI
b3N0VGVzdDsKICAgICBmcmllbmQgY2xhc3MgTGF5ZXJUaWxlckNocm9taXVtOwogICAgIGZyaWVu
ZCBjbGFzcyBUcmVlU3luY2hyb25pemVyOwpAQCAtMjI3LDYgKzIzMiw4IEBAIHByb3RlY3RlZDoK
IAogICAgIExheWVyQ2hyb21pdW0oKTsKIAorICAgIHZvaWQgbm90aWZ5QW5pbWF0aW9uU3RhcnRl
ZChkb3VibGUgdGltZSk7CisKICAgICAvLyBUaGlzIGlzIGNhbGxlZCB0byBjbGVhbiB1cCByZXNv
dXJjZXMgYmVpbmcgaGVsZCBpbiB0aGUgc2FtZSBjb250ZXh0IGFzCiAgICAgLy8gbGF5ZXJSZW5k
ZXJlckNvbnRleHQoKS4gU3ViY2xhc3NlcyBzaG91bGQgb3ZlcnJpZGUgdGhpcyBtZXRob2QgaWYg
dGhleQogICAgIC8vIGhvbGQgY29udGV4dC1kZXBlbmRlbnQgcmVzb3VyY2VzIHN1Y2ggYXMgdGV4
dHVyZXMuCkBAIC0zMTQsNiArMzIxLDggQEAgcHJpdmF0ZToKICAgICBTdHJpbmcgbV9uYW1lOwog
CiAgICAgYm9vbCBtX3BhZ2VTY2FsZURpcnR5OworCisgICAgQ0NMYXllckFuaW1hdGlvbkRlbGVn
YXRlKiBtX2xheWVyQW5pbWF0aW9uRGVsZWdhdGU7CiB9OwogCiB2b2lkIHNvcnRMYXllcnMoVmVj
dG9yPFJlZlB0cjxMYXllckNocm9taXVtPiA+OjppdGVyYXRvciwgVmVjdG9yPFJlZlB0cjxMYXll
ckNocm9taXVtPiA+OjppdGVyYXRvciwgdm9pZCopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NLZXlmcmFtZWRBbmltYXRpb25DdXJ2
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0tl
eWZyYW1lZEFuaW1hdGlvbkN1cnZlLmNwcAppbmRleCAxNTdmNzgzMTNiZWQxOGFhZmQ2ZDhlZTcz
NjQ3NzkwNTExZGI0MjM2Li42MDNlNGQ2MDJjOTg2YTZlODRhYjFhZjQ2M2ZiOGFmOTBhZjFiNGQ1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ0tleWZyYW1lZEFuaW1hdGlvbkN1cnZlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0tleWZyYW1lZEFuaW1hdGlvbkN1cnZlLmNwcApA
QCAtMjYsMTEgKzI2LDE2IEBACiAKICNpbmNsdWRlICJjYy9DQ0tleWZyYW1lZEFuaW1hdGlvbkN1
cnZlLmgiCiAKLSNpbmNsdWRlIDx3dGYvT3duUHRyLmg+Ci0KLW5hbWVzcGFjZSB7CisjaW5jbHVk
ZSAiSWRlbnRpdHlUcmFuc2Zvcm1PcGVyYXRpb24uaCIKKyNpbmNsdWRlICJNYXRyaXgzRFRyYW5z
Zm9ybU9wZXJhdGlvbi5oIgorI2luY2x1ZGUgIk1hdHJpeFRyYW5zZm9ybU9wZXJhdGlvbi5oIgor
I2luY2x1ZGUgIlBlcnNwZWN0aXZlVHJhbnNmb3JtT3BlcmF0aW9uLmgiCisjaW5jbHVkZSAiUm90
YXRlVHJhbnNmb3JtT3BlcmF0aW9uLmgiCisjaW5jbHVkZSAiU2NhbGVUcmFuc2Zvcm1PcGVyYXRp
b24uaCIKKyNpbmNsdWRlICJTa2V3VHJhbnNmb3JtT3BlcmF0aW9uLmgiCisjaW5jbHVkZSAiVHJh
bnNsYXRlVHJhbnNmb3JtT3BlcmF0aW9uLmgiCiAKLX0gLy8gbmFtZXNwYWNlCisjaW5jbHVkZSA8
d3RmL093blB0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTExNyw3ICsxMjIsNzUg
QEAgZG91YmxlIENDS2V5ZnJhbWVkVHJhbnNmb3JtQW5pbWF0aW9uQ3VydmU6OmR1cmF0aW9uKCkg
Y29uc3QKIAogUGFzc093blB0cjxDQ0FuaW1hdGlvbkN1cnZlPiBDQ0tleWZyYW1lZFRyYW5zZm9y
bUFuaW1hdGlvbkN1cnZlOjpjbG9uZSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIGFkb3B0UHRyKG5l
dyBDQ0tleWZyYW1lZFRyYW5zZm9ybUFuaW1hdGlvbkN1cnZlKCp0aGlzKSk7CisgICAgT3duUHRy
PENDS2V5ZnJhbWVkVHJhbnNmb3JtQW5pbWF0aW9uQ3VydmU+IHRvUmV0dXJuKENDS2V5ZnJhbWVk
VHJhbnNmb3JtQW5pbWF0aW9uQ3VydmU6OmNyZWF0ZSgpKTsKKyAgICAvLyBXZSBuZWVkIHRvIGRv
IGEgZGVlcCBjb3B5IG9mIGFsbCBvZiB0aGUga2V5ZnJhbWVzIHNpbmNlIHRoZXkgY29udGFpbiBy
ZWYKKyAgICAvLyBwb2ludGVycyB0byBUcmFuc2Zvcm1PcGVyYXRpb24gb2JqZWN0cy4KKyAgICBm
b3IgKHNpemVfdCBpID0gMDsgaSA8IG1fa2V5ZnJhbWVzLnNpemUoKTsgKytpKSB7CisgICAgICAg
IENDVHJhbnNmb3JtS2V5ZnJhbWUga2V5ZnJhbWUobV9rZXlmcmFtZXNbaV0udGltZSk7CisgICAg
ICAgIGZvciAoc2l6ZV90IGogPSAwOyBqIDwgbV9rZXlmcmFtZXNbaV0udmFsdWUuc2l6ZSgpOyAr
K2opIHsKKyAgICAgICAgICAgIFRyYW5zZm9ybU9wZXJhdGlvbjo6T3BlcmF0aW9uVHlwZSBvcGVy
YXRpb25UeXBlID0gbV9rZXlmcmFtZXNbaV0udmFsdWUub3BlcmF0aW9ucygpW2pdLT5nZXRPcGVy
YXRpb25UeXBlKCk7CisgICAgICAgICAgICBzd2l0Y2ggKG9wZXJhdGlvblR5cGUpIHsKKyAgICAg
ICAgICAgIGNhc2UgVHJhbnNmb3JtT3BlcmF0aW9uOjpTQ0FMRV9YOgorICAgICAgICAgICAgY2Fz
ZSBUcmFuc2Zvcm1PcGVyYXRpb246OlNDQUxFX1k6CisgICAgICAgICAgICBjYXNlIFRyYW5zZm9y
bU9wZXJhdGlvbjo6U0NBTEVfWjoKKyAgICAgICAgICAgIGNhc2UgVHJhbnNmb3JtT3BlcmF0aW9u
OjpTQ0FMRV8zRDoKKyAgICAgICAgICAgIGNhc2UgVHJhbnNmb3JtT3BlcmF0aW9uOjpTQ0FMRTog
eworICAgICAgICAgICAgICAgIFNjYWxlVHJhbnNmb3JtT3BlcmF0aW9uKiB0cmFuc2Zvcm0gPSBz
dGF0aWNfY2FzdDxTY2FsZVRyYW5zZm9ybU9wZXJhdGlvbio+KG1fa2V5ZnJhbWVzW2ldLnZhbHVl
Lm9wZXJhdGlvbnMoKVtqXS5nZXQoKSk7CisgICAgICAgICAgICAgICAga2V5ZnJhbWUudmFsdWUu
b3BlcmF0aW9ucygpLmFwcGVuZChTY2FsZVRyYW5zZm9ybU9wZXJhdGlvbjo6Y3JlYXRlKHRyYW5z
Zm9ybS0+eCgpLCB0cmFuc2Zvcm0tPnkoKSwgdHJhbnNmb3JtLT56KCksIG9wZXJhdGlvblR5cGUp
KTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGNh
c2UgVHJhbnNmb3JtT3BlcmF0aW9uOjpUUkFOU0xBVEVfWDoKKyAgICAgICAgICAgIGNhc2UgVHJh
bnNmb3JtT3BlcmF0aW9uOjpUUkFOU0xBVEVfWToKKyAgICAgICAgICAgIGNhc2UgVHJhbnNmb3Jt
T3BlcmF0aW9uOjpUUkFOU0xBVEVfWjoKKyAgICAgICAgICAgIGNhc2UgVHJhbnNmb3JtT3BlcmF0
aW9uOjpUUkFOU0xBVEVfM0Q6CisgICAgICAgICAgICBjYXNlIFRyYW5zZm9ybU9wZXJhdGlvbjo6
VFJBTlNMQVRFOiB7CisgICAgICAgICAgICAgICAgVHJhbnNsYXRlVHJhbnNmb3JtT3BlcmF0aW9u
KiB0cmFuc2Zvcm0gPSBzdGF0aWNfY2FzdDxUcmFuc2xhdGVUcmFuc2Zvcm1PcGVyYXRpb24qPiht
X2tleWZyYW1lc1tpXS52YWx1ZS5vcGVyYXRpb25zKClbal0uZ2V0KCkpOworICAgICAgICAgICAg
ICAgIGtleWZyYW1lLnZhbHVlLm9wZXJhdGlvbnMoKS5hcHBlbmQoVHJhbnNsYXRlVHJhbnNmb3Jt
T3BlcmF0aW9uOjpjcmVhdGUodHJhbnNmb3JtLT54KCksIHRyYW5zZm9ybS0+eSgpLCB0cmFuc2Zv
cm0tPnooKSwgb3BlcmF0aW9uVHlwZSkpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICAgICAgfQorICAgICAgICAgICAgY2FzZSBUcmFuc2Zvcm1PcGVyYXRpb246OlJPVEFURV9YOgor
ICAgICAgICAgICAgY2FzZSBUcmFuc2Zvcm1PcGVyYXRpb246OlJPVEFURV9ZOgorICAgICAgICAg
ICAgY2FzZSBUcmFuc2Zvcm1PcGVyYXRpb246OlJPVEFURV8zRDoKKyAgICAgICAgICAgIGNhc2Ug
VHJhbnNmb3JtT3BlcmF0aW9uOjpST1RBVEU6IHsKKyAgICAgICAgICAgICAgICBSb3RhdGVUcmFu
c2Zvcm1PcGVyYXRpb24qIHRyYW5zZm9ybSA9IHN0YXRpY19jYXN0PFJvdGF0ZVRyYW5zZm9ybU9w
ZXJhdGlvbio+KG1fa2V5ZnJhbWVzW2ldLnZhbHVlLm9wZXJhdGlvbnMoKVtqXS5nZXQoKSk7Cisg
ICAgICAgICAgICAgICAga2V5ZnJhbWUudmFsdWUub3BlcmF0aW9ucygpLmFwcGVuZChSb3RhdGVU
cmFuc2Zvcm1PcGVyYXRpb246OmNyZWF0ZSh0cmFuc2Zvcm0tPngoKSwgdHJhbnNmb3JtLT55KCks
IHRyYW5zZm9ybS0+eigpLCB0cmFuc2Zvcm0tPmFuZ2xlKCksIG9wZXJhdGlvblR5cGUpKTsKKyAg
ICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGNhc2UgVHJh
bnNmb3JtT3BlcmF0aW9uOjpTS0VXX1g6CisgICAgICAgICAgICBjYXNlIFRyYW5zZm9ybU9wZXJh
dGlvbjo6U0tFV19ZOgorICAgICAgICAgICAgY2FzZSBUcmFuc2Zvcm1PcGVyYXRpb246OlNLRVc6
IHsKKyAgICAgICAgICAgICAgICBTa2V3VHJhbnNmb3JtT3BlcmF0aW9uKiB0cmFuc2Zvcm0gPSBz
dGF0aWNfY2FzdDxTa2V3VHJhbnNmb3JtT3BlcmF0aW9uKj4obV9rZXlmcmFtZXNbaV0udmFsdWUu
b3BlcmF0aW9ucygpW2pdLmdldCgpKTsKKyAgICAgICAgICAgICAgICBrZXlmcmFtZS52YWx1ZS5v
cGVyYXRpb25zKCkuYXBwZW5kKFNrZXdUcmFuc2Zvcm1PcGVyYXRpb246OmNyZWF0ZSh0cmFuc2Zv
cm0tPmFuZ2xlWCgpLCB0cmFuc2Zvcm0tPmFuZ2xlWSgpLCBvcGVyYXRpb25UeXBlKSk7CisgICAg
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBjYXNlIFRyYW5z
Zm9ybU9wZXJhdGlvbjo6TUFUUklYOiB7CisgICAgICAgICAgICAgICAgTWF0cml4VHJhbnNmb3Jt
T3BlcmF0aW9uKiB0cmFuc2Zvcm0gPSBzdGF0aWNfY2FzdDxNYXRyaXhUcmFuc2Zvcm1PcGVyYXRp
b24qPihtX2tleWZyYW1lc1tpXS52YWx1ZS5vcGVyYXRpb25zKClbal0uZ2V0KCkpOworICAgICAg
ICAgICAgICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IG0gPSB0cmFuc2Zvcm0tPm1hdHJpeCgpOwor
ICAgICAgICAgICAgICAgIGtleWZyYW1lLnZhbHVlLm9wZXJhdGlvbnMoKS5hcHBlbmQoTWF0cml4
VHJhbnNmb3JtT3BlcmF0aW9uOjpjcmVhdGUobS5hKCksIG0uYigpLCBtLmMoKSwgbS5kKCksIG0u
ZSgpLCBtLmYoKSkpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAg
ICAgICAgICAgY2FzZSBUcmFuc2Zvcm1PcGVyYXRpb246Ok1BVFJJWF8zRDogeworICAgICAgICAg
ICAgICAgIE1hdHJpeDNEVHJhbnNmb3JtT3BlcmF0aW9uKiB0cmFuc2Zvcm0gPSBzdGF0aWNfY2Fz
dDxNYXRyaXgzRFRyYW5zZm9ybU9wZXJhdGlvbio+KG1fa2V5ZnJhbWVzW2ldLnZhbHVlLm9wZXJh
dGlvbnMoKVtqXS5nZXQoKSk7CisgICAgICAgICAgICAgICAga2V5ZnJhbWUudmFsdWUub3BlcmF0
aW9ucygpLmFwcGVuZChNYXRyaXgzRFRyYW5zZm9ybU9wZXJhdGlvbjo6Y3JlYXRlKHRyYW5zZm9y
bS0+bWF0cml4KCkpKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgIGNhc2UgVHJhbnNmb3JtT3BlcmF0aW9uOjpQRVJTUEVDVElWRTogeworICAgICAg
ICAgICAgICAgIFBlcnNwZWN0aXZlVHJhbnNmb3JtT3BlcmF0aW9uKiB0cmFuc2Zvcm0gPSBzdGF0
aWNfY2FzdDxQZXJzcGVjdGl2ZVRyYW5zZm9ybU9wZXJhdGlvbio+KG1fa2V5ZnJhbWVzW2ldLnZh
bHVlLm9wZXJhdGlvbnMoKVtqXS5nZXQoKSk7CisgICAgICAgICAgICAgICAga2V5ZnJhbWUudmFs
dWUub3BlcmF0aW9ucygpLmFwcGVuZChQZXJzcGVjdGl2ZVRyYW5zZm9ybU9wZXJhdGlvbjo6Y3Jl
YXRlKHRyYW5zZm9ybS0+cGVyc3BlY3RpdmUoKSkpOworICAgICAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICAgICAgfQorICAgICAgICAgICAgY2FzZSBUcmFuc2Zvcm1PcGVyYXRpb246OklERU5U
SVRZOiB7CisgICAgICAgICAgICAgICAga2V5ZnJhbWUudmFsdWUub3BlcmF0aW9ucygpLmFwcGVu
ZChJZGVudGl0eVRyYW5zZm9ybU9wZXJhdGlvbjo6Y3JlYXRlKCkpOworICAgICAgICAgICAgICAg
IGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICAgICAgY2FzZSBUcmFuc2Zvcm1PcGVyYXRp
b246Ok5PTkU6CisgICAgICAgICAgICAgICAgLy8gRG8gbm90aGluZy4KKyAgICAgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgICAgIH0gLy8gc3dpdGNoCisgICAgICAgIH0gLy8gZm9yIGVhY2gg
b3BlcmF0aW9uCisgICAgICAgIHRvUmV0dXJuLT5hZGQoa2V5ZnJhbWUpOworICAgIH0KKyAgICBy
ZXR1cm4gdG9SZXR1cm4ucmVsZWFzZSgpOwogfQogCiBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBDQ0tl
eWZyYW1lZFRyYW5zZm9ybUFuaW1hdGlvbkN1cnZlOjpnZXRWYWx1ZShkb3VibGUgdCwgY29uc3Qg
SW50U2l6ZSYgbGF5ZXJTaXplKSBjb25zdApAQCAtMTQ2LDIyICsyMTksOCBAQCBUcmFuc2Zvcm1h
dGlvbk1hdHJpeCBDQ0tleWZyYW1lZFRyYW5zZm9ybUFuaW1hdGlvbkN1cnZlOjpnZXRWYWx1ZShk
b3VibGUgdCwgY29ucwogICAgIC8vIEZJWE1FOiBhcHBseSB0aW1pbmcgZnVuY3Rpb24gaGVyZS4K
ICAgICBkb3VibGUgcHJvZ3Jlc3MgPSAodCAtIG1fa2V5ZnJhbWVzW2ldLnRpbWUpIC8gKG1fa2V5
ZnJhbWVzW2krMV0udGltZSAtIG1fa2V5ZnJhbWVzW2ldLnRpbWUpOwogCi0gICAgLy8gVGhlIGZv
bGxvd2luZyBpcyBhZGFwdGVkIGZyb20gQW5kcm9pZEFuaW1hdGlvbgotICAgIGJvb2wgdmFsaWQg
PSB0cnVlOwotICAgIHNpemVfdCBmcm9tU2l6ZSA9IG1fa2V5ZnJhbWVzW2ldLnZhbHVlLnNpemUo
KTsKLSAgICBpZiAoZnJvbVNpemUpIHsKLSAgICAgICAgaWYgKG1fa2V5ZnJhbWVzW2krMV0udmFs
dWUuc2l6ZSgpICE9IGZyb21TaXplKQotICAgICAgICAgICAgdmFsaWQgPSBmYWxzZTsKLSAgICAg
ICAgZWxzZSB7Ci0gICAgICAgICAgICBmb3IgKHNpemVfdCBqID0gMDsgaiA8IGZyb21TaXplICYm
IHZhbGlkOyBqKyspIHsKLSAgICAgICAgICAgICAgICBpZiAoIW1fa2V5ZnJhbWVzW2ldLnZhbHVl
Lm9wZXJhdGlvbnMoKVtqXS0+aXNTYW1lVHlwZSgqbV9rZXlmcmFtZXNbaSsxXS52YWx1ZS5vcGVy
YXRpb25zKClbal0pKQotICAgICAgICAgICAgICAgICAgICB2YWxpZCA9IGZhbHNlOwotICAgICAg
ICAgICAgfQotICAgICAgICB9Ci0gICAgfQotCi0gICAgaWYgKHZhbGlkKSB7Ci0gICAgICAgIGZv
ciAoc2l6ZV90IGogPSAwOyBpIDwgbV9rZXlmcmFtZXNbaSsxXS52YWx1ZS5zaXplKCk7ICsraikK
KyAgICBpZiAobV9rZXlmcmFtZXNbaV0udmFsdWUub3BlcmF0aW9uc01hdGNoKG1fa2V5ZnJhbWVz
W2krMV0udmFsdWUpKSB7CisgICAgICAgIGZvciAoc2l6ZV90IGogPSAwOyBqIDwgbV9rZXlmcmFt
ZXNbaSsxXS52YWx1ZS5zaXplKCk7ICsraikKICAgICAgICAgICAgIG1fa2V5ZnJhbWVzW2krMV0u
dmFsdWUub3BlcmF0aW9ucygpW2pdLT5ibGVuZChtX2tleWZyYW1lc1tpXS52YWx1ZS5hdChqKSwg
cHJvZ3Jlc3MpLT5hcHBseSh0cmFuc2Zvcm1NYXRyaXgsIGxheWVyU2l6ZSk7CiAgICAgfSBlbHNl
IHsKICAgICAgICAgVHJhbnNmb3JtYXRpb25NYXRyaXggc291cmNlOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NLZXlmcmFtZWRBbmlt
YXRpb25DdXJ2ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NLZXlmcmFtZWRBbmltYXRpb25DdXJ2ZS5oCmluZGV4IDkyZDMxMGM1ODYzZDZkNDEzYTYw
NGIyNWFmMjVjNjM0NDBlOTYwNzAuLjQ2M2NlNDFmNjdiOTRjOTZmMWIyOWI4NzZlMDc2YjQzYzhj
N2M3OWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDS2V5ZnJhbWVkQW5pbWF0aW9uQ3VydmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0tleWZyYW1lZEFuaW1hdGlvbkN1cnZlLmgK
QEAgLTQ0LDYgKzQ0LDEwIEBAIHN0cnVjdCBDQ0Zsb2F0S2V5ZnJhbWUgewogfTsKIAogc3RydWN0
IENDVHJhbnNmb3JtS2V5ZnJhbWUgeworICAgIENDVHJhbnNmb3JtS2V5ZnJhbWUoZG91YmxlIHRp
bWUpCisgICAgICAgIDogdGltZSh0aW1lKQorICAgIHsKKyAgICB9CiAgICAgQ0NUcmFuc2Zvcm1L
ZXlmcmFtZShkb3VibGUgdGltZSwgY29uc3QgVHJhbnNmb3JtT3BlcmF0aW9ucyYgdmFsdWUpCiAg
ICAgICAgIDogdGltZSh0aW1lKQogICAgICAgICAsIHZhbHVlKHZhbHVlKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllckFuaW1h
dGlvbkNvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NMYXllckFuaW1hdGlvbkNvbnRyb2xsZXIuY3BwCmluZGV4IGY3M2QwYTQ5NWY4
YjU5ZDYzYWVhMDc1ZDExZWFiZThmNWU1NTA5NjQuLjUzNWFiNDQxMDc5OTBiMzcyNDEyYTkzZGY2
YjMzYWUzMmMxMzQ1NzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJBbmltYXRpb25Db250cm9sbGVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyQW5pbWF0aW9u
Q29udHJvbGxlci5jcHAKQEAgLTE2OCwxMCArMTY4LDEwIEBAIGJvb2wgQ0NMYXllckFuaW1hdGlv
bkNvbnRyb2xsZXI6OmNyZWF0ZVRyYW5zZm9ybUFuaW1hdGlvbihjb25zdCBLZXlmcmFtZVZhbHVl
TGlzCiAgICAgICAgIFRyYW5zZm9ybUFuaW1hdGlvblZhbHVlKiBvcmlnaW5hbFZhbHVlID0gKFRy
YW5zZm9ybUFuaW1hdGlvblZhbHVlKil2YWx1ZUxpc3QuYXQoaSk7CiAKICAgICAgICAgLy8gRklY
TUU6IGFkZCBzdXBwb3J0IGZvciB0aW1pbmcgZnVuY3Rpb25zLgotICAgICAgICBpZiAob3JpZ2lu
YWxWYWx1ZS0+dGltaW5nRnVuY3Rpb24oKSkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICAgIGlmIChvcmlnaW5hbFZhbHVlLT50aW1pbmdGdW5jdGlvbigpICYmIG9yaWdpbmFsVmFsdWUt
PnRpbWluZ0Z1bmN0aW9uKCktPnR5cGUoKSAhPSBUaW1pbmdGdW5jdGlvbjo6TGluZWFyRnVuY3Rp
b24pCisgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgICAgIGN1cnZlLT5hZGQoQ0NUcmFu
c2Zvcm1LZXlmcmFtZShvcmlnaW5hbFZhbHVlLT5rZXlUaW1lKCksICpvcmlnaW5hbFZhbHVlLT52
YWx1ZSgpKSk7CisgICAgICAgIGN1cnZlLT5hZGQoQ0NUcmFuc2Zvcm1LZXlmcmFtZShvcmlnaW5h
bFZhbHVlLT5rZXlUaW1lKCkgKiBhbmltYXRpb24tPmR1cmF0aW9uKCksICpvcmlnaW5hbFZhbHVl
LT52YWx1ZSgpKSk7CiAgICAgfQogCiAgICAgU3RyaW5nIG5hbWUgPSBhbmltYXRpb25OYW1lLmlz
RW1wdHkoKSA/IHByb3BlcnR5SWRUb1N0cmluZyh2YWx1ZUxpc3QucHJvcGVydHkoKSkgOiBhbmlt
YXRpb25OYW1lOwpAQCAtMTgxLDcgKzE4MSw2IEBAIGJvb2wgQ0NMYXllckFuaW1hdGlvbkNvbnRy
b2xsZXI6OmNyZWF0ZVRyYW5zZm9ybUFuaW1hdGlvbihjb25zdCBLZXlmcmFtZVZhbHVlTGlzCiAK
ICAgICBtX2FjdGl2ZUFuaW1hdGlvbnMuYXBwZW5kKGFuaW0ucmVsZWFzZSgpKTsKIAotICAgIC8v
IG5lZWRzTm90aWZ5Q2xpZW50KCk7IEZJWE1FOiAvLyB3aGF0IGlzIHRoaXMgZm9yPwogICAgIHJl
dHVybiB0cnVlOwogfQogCkBAIC0yMDgsMTAgKzIwNywxMCBAQCBib29sIENDTGF5ZXJBbmltYXRp
b25Db250cm9sbGVyOjpjcmVhdGVPcGFjaXR5QW5pbWF0aW9uKGNvbnN0IEtleWZyYW1lVmFsdWVM
aXN0JgogICAgICAgICBGbG9hdEFuaW1hdGlvblZhbHVlKiBvcmlnaW5hbFZhbHVlID0gKEZsb2F0
QW5pbWF0aW9uVmFsdWUqKXZhbHVlTGlzdC5hdChpKTsKIAogICAgICAgICAvLyBGSVhNRTogYWRk
IHN1cHBvcnQgZm9yIHRpbWluZyBmdW5jdGlvbnMuCi0gICAgICAgIGlmIChvcmlnaW5hbFZhbHVl
LT50aW1pbmdGdW5jdGlvbigpKQorICAgICAgICBpZiAob3JpZ2luYWxWYWx1ZS0+dGltaW5nRnVu
Y3Rpb24oKSAmJiBvcmlnaW5hbFZhbHVlLT50aW1pbmdGdW5jdGlvbigpLT50eXBlKCkgIT0gVGlt
aW5nRnVuY3Rpb246OkxpbmVhckZ1bmN0aW9uKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwog
Ci0gICAgICAgIGN1cnZlLT5hZGQoQ0NGbG9hdEtleWZyYW1lKG9yaWdpbmFsVmFsdWUtPmtleVRp
bWUoKSwgb3JpZ2luYWxWYWx1ZS0+dmFsdWUoKSkpOworICAgICAgICBjdXJ2ZS0+YWRkKENDRmxv
YXRLZXlmcmFtZShvcmlnaW5hbFZhbHVlLT5rZXlUaW1lKCkgKiBhbmltYXRpb24tPmR1cmF0aW9u
KCksIG9yaWdpbmFsVmFsdWUtPnZhbHVlKCkpKTsKICAgICB9CiAKICAgICBTdHJpbmcgbmFtZSA9
IGFuaW1hdGlvbk5hbWUuaXNFbXB0eSgpID8gcHJvcGVydHlJZFRvU3RyaW5nKHZhbHVlTGlzdC5w
cm9wZXJ0eSgpKSA6IGFuaW1hdGlvbk5hbWU7CkBAIC0yMjEsNyArMjIwLDYgQEAgYm9vbCBDQ0xh
eWVyQW5pbWF0aW9uQ29udHJvbGxlcjo6Y3JlYXRlT3BhY2l0eUFuaW1hdGlvbihjb25zdCBLZXlm
cmFtZVZhbHVlTGlzdCYKIAogICAgIG1fYWN0aXZlQW5pbWF0aW9ucy5hcHBlbmQoYW5pbS5yZWxl
YXNlKCkpOwogCi0gICAgLy8gbmVlZHNOb3RpZnlDbGllbnQoKTsgRklYTUU6IC8vIHdoYXQgaXMg
dGhpcyBmb3I/CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJBbmltYXRpb25Db250cm9s
bGVySW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ0xheWVyQW5pbWF0aW9uQ29udHJvbGxlckltcGwuY3BwCmluZGV4IDUxYTg0ZDQ2NDM2Nzhm
Y2IxYTU3ODA4ZGY4MjlmYTk2ZmRlYWViZDAuLjJiMDdmODAzMDdjNzNiMmNlZDRmMjQ3M2M4N2Y3
YTNjNGY4YzI1NDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDTGF5ZXJBbmltYXRpb25Db250cm9sbGVySW1wbC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllckFuaW1hdGlv
bkNvbnRyb2xsZXJJbXBsLmNwcApAQCAtMTM1LDExICsxMzUsMTEgQEAgdm9pZCBDQ0xheWVyQW5p
bWF0aW9uQ29udHJvbGxlckltcGw6OnN0YXJ0QW5pbWF0aW9uc1dhaXRpbmdGb3JUYXJnZXRBdmFp
bGFiaWxpdHkKICAgICAgICAgICAgIGlmIChudWxsSW50ZXJzZWN0aW9uKSB7CiAgICAgICAgICAg
ICAgICAgbV9hY3RpdmVBbmltYXRpb25zW2ldLT5zZXRSdW5TdGF0ZShDQ0FjdGl2ZUFuaW1hdGlv
bjo6UnVubmluZywgbm93KTsKICAgICAgICAgICAgICAgICBtX2FjdGl2ZUFuaW1hdGlvbnNbaV0t
PnNldFN0YXJ0VGltZShub3cpOworICAgICAgICAgICAgICAgIHJlc3VsdHMtPnN0YXJ0ZWRBbmlt
YXRpb25zKCkuYXBwZW5kKENDQW5pbWF0aW9uUmVzdWx0KG1fY2xpZW50LT5pZCgpLCBub3cpKTsK
ICAgICAgICAgICAgICAgICBmb3IgKHNpemVfdCBqID0gaSArIDE7IGogPCBtX2FjdGl2ZUFuaW1h
dGlvbnMuc2l6ZSgpOyArK2opIHsKICAgICAgICAgICAgICAgICAgICAgaWYgKG1fYWN0aXZlQW5p
bWF0aW9uc1tpXS0+Z3JvdXAoKSA9PSBtX2FjdGl2ZUFuaW1hdGlvbnNbal0tPmdyb3VwKCkpIHsK
ICAgICAgICAgICAgICAgICAgICAgICAgIG1fYWN0aXZlQW5pbWF0aW9uc1tqXS0+c2V0UnVuU3Rh
dGUoQ0NBY3RpdmVBbmltYXRpb246OlJ1bm5pbmcsIG5vdyk7CiAgICAgICAgICAgICAgICAgICAg
ICAgICBtX2FjdGl2ZUFuaW1hdGlvbnNbal0tPnNldFN0YXJ0VGltZShub3cpOwotICAgICAgICAg
ICAgICAgICAgICAgICAgcmVzdWx0cy0+c3RhcnRlZEFuaW1hdGlvbnMoKS5hcHBlbmQoQ0NBbmlt
YXRpb25SZXN1bHQobV9jbGllbnQtPmlkKCksIG5vdykpOwogICAgICAgICAgICAgICAgICAgICB9
CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQpAQCAtMTk3LDYgKzE5Nyw3IEBAIHZv
aWQgQ0NMYXllckFuaW1hdGlvbkNvbnRyb2xsZXJJbXBsOjp0aWNrQW5pbWF0aW9ucyhkb3VibGUg
bm93KQogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9hY3RpdmVBbmltYXRpb25zLnNpemUo
KTsgKytpKSB7CiAgICAgICAgIGlmIChtX2FjdGl2ZUFuaW1hdGlvbnNbaV0tPnJ1blN0YXRlKCkg
PT0gQ0NBY3RpdmVBbmltYXRpb246OlJ1bm5pbmcpIHsKICAgICAgICAgICAgIGRvdWJsZSB0cmlt
bWVkID0gbV9hY3RpdmVBbmltYXRpb25zW2ldLT50cmltVGltZVRvQ3VycmVudEl0ZXJhdGlvbihu
b3cpOworCiAgICAgICAgICAgICBzd2l0Y2ggKG1fYWN0aXZlQW5pbWF0aW9uc1tpXS0+dGFyZ2V0
UHJvcGVydHkoKSkgewogCiAgICAgICAgICAgICBjYXNlIENDQWN0aXZlQW5pbWF0aW9uOjpUcmFu
c2Zvcm06IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDTGF5ZXJBbmltYXRpb25EZWxlZ2F0ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllckFuaW1hdGlvbkRlbGVnYXRlLmgKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNmNiYWIzY2IzZWU2YzkxOWIzMGE2MDcxZGNlYjMyODBmZTVjMTJlMAotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDTGF5ZXJBbmltYXRpb25EZWxlZ2F0ZS5oCkBAIC0wLDAgKzEsMzggQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuICBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAor
ICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
CisgKiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKyAqIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpZm5kZWYgQ0NMYXllckFuaW1hdGlvbkRlbGVnYXRlX2gKKyNkZWZpbmUgQ0NMYXllckFu
aW1hdGlvbkRlbGVnYXRlX2gKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCisvLyBUaGlzIGNsYXNz
IGlzIHVzZWQgdG8gc2VuZCBub3RpZmljYXRpb25zIHdoZW4gbGF5ZXIgYW5pbWF0aW9uIGJlZ2lu
LgorY2xhc3MgQ0NMYXllckFuaW1hdGlvbkRlbGVnYXRlIHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFs
IHZvaWQgbm90aWZ5QW5pbWF0aW9uU3RhcnRlZChkb3VibGUgdGltZSkgPSAwOworfTsKKworfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gQ0NMYXllckFuaW1hdGlvbkRlbGVnYXRl
X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDTGF5ZXJUcmVlSG9zdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuY3BwCmluZGV4IDI1ZTdmMTFhZDc1ZTI3Njg0
ZDM5OWNhZDdmNDMxOTg0ZGVhZTA5ZTcuLjhiZjA5ZTUyMGM0NWRlNjc0ODI3OGZmNjkzMmNiYzMw
MTk5YWQ4MGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmNwcApAQCAtMjYyLDcgKzI2
MiwxMiBAQCB2b2lkIENDTGF5ZXJUcmVlSG9zdDo6c2V0TmVlZHNSZWRyYXcoKQogdm9pZCBDQ0xh
eWVyVHJlZUhvc3Q6OnNldEFuaW1hdGlvblJlc3VsdHMoUGFzc093blB0cjxDQ0FuaW1hdGlvblJl
c3VsdHM+IHJlc3VsdHMpCiB7CiAgICAgQVNTRVJUKENDVGhyZWFkUHJveHk6OmlzTWFpblRocmVh
ZCgpKTsKLSAgICAvLyBGSVhNRTogaW1wbGVtZW50IHRoaXMuIFdpbGwgaGF2ZSB0byB3YWxrIHRo
ZSB0cmVlLgorICAgIGlmICghbV9yb290TGF5ZXIpCisgICAgICAgIHJldHVybjsKKworICAgIC8v
IFdhbGsgdGhlIHdob2xlIHRyZWUuIEtlZXAgYW4gZXllIG9uIHRoZSBjb3N0IG9mIHRoaXMgZnVu
Y3Rpb24uCisgICAgVFJBQ0VfRVZFTlQoIkNDTGF5ZXJUcmVlSG9zdDo6c2V0QW5pbWF0aW9uUmVz
dWx0cyIsIHRoaXMsIDApOworICAgIHNldEFuaW1hdGlvblJlc3VsdHNSZWN1cnNpdmUocmVzdWx0
cy5nZXQoKSwgbV9yb290TGF5ZXIuZ2V0KCkpOwogfQogCiB2b2lkIENDTGF5ZXJUcmVlSG9zdDo6
c2V0Um9vdExheWVyKFBhc3NSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gcm9vdExheWVyKQpAQCAtNTk3
LDYgKzYwMiwxNyBAQCB2b2lkIENDTGF5ZXJUcmVlSG9zdDo6Y2xlYXJQZW5kaW5nVXBkYXRlKCkK
ICAgICBtX3VwZGF0ZUxpc3QuY2xlYXIoKTsKIH0KIAordm9pZCBDQ0xheWVyVHJlZUhvc3Q6OnNl
dEFuaW1hdGlvblJlc3VsdHNSZWN1cnNpdmUoQ0NBbmltYXRpb25SZXN1bHRzKiByZXN1bHRzLCBM
YXllckNocm9taXVtKiBsYXllcikKK3sKKyAgICBmb3IgKHNpemVfdCByZXN1bHRJbmRleCA9IDA7
IHJlc3VsdEluZGV4IDwgcmVzdWx0cy0+c3RhcnRlZEFuaW1hdGlvbnMoKS5zaXplKCk7ICsrcmVz
dWx0SW5kZXgpIHsKKyAgICAgICAgaWYgKGxheWVyLT5pZCgpID09IHJlc3VsdHMtPnN0YXJ0ZWRB
bmltYXRpb25zKClbcmVzdWx0SW5kZXhdLmxheWVySUQpCisgICAgICAgICAgICBsYXllci0+bm90
aWZ5QW5pbWF0aW9uU3RhcnRlZChyZXN1bHRzLT5zdGFydGVkQW5pbWF0aW9ucygpW3Jlc3VsdElu
ZGV4XS50aW1lKTsKKyAgICB9CisKKyAgICBmb3IgKHNpemVfdCBjaGlsZEluZGV4ID0gMDsgY2hp
bGRJbmRleCA8IGxheWVyLT5jaGlsZHJlbigpLnNpemUoKTsgKytjaGlsZEluZGV4KQorICAgICAg
ICBzZXRBbmltYXRpb25SZXN1bHRzUmVjdXJzaXZlKHJlc3VsdHMsIGxheWVyLT5jaGlsZHJlbigp
W2NoaWxkSW5kZXhdLmdldCgpKTsKK30KKwogdm9pZCBDQ0xheWVyVHJlZUhvc3Q6OmFwcGx5U2Ny
b2xsQW5kU2NhbGUoY29uc3QgQ0NTY3JvbGxBbmRTY2FsZVNldCYgaW5mbykKIHsKICAgICAvLyBG
SVhNRTogcHVzaGluZyBzY3JvbGwgb2Zmc2V0cyB0byBub24tcm9vdCBsYXllcnMgbm90IGltcGxl
bWVudGVkCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5oCmluZGV4IDQxOTBmMGJkMWNhNGZlOGI1
ZTI0Mzc2ZTE3NWUzNDg0M2MzOWEyMjAuLmQzZjM1NzNiYzI2MjAxZDUxOWZkYzZhMDFjYTU3M2I5
NDZmMDc1OWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5oCkBAIC0zMCw2ICszMCw3IEBA
CiAjaW5jbHVkZSAiTGF5ZXJDaHJvbWl1bS5oIgogI2luY2x1ZGUgIlJhdGVMaW1pdGVyLmgiCiAj
aW5jbHVkZSAiVHJhbnNmb3JtYXRpb25NYXRyaXguaCIKKyNpbmNsdWRlICJjYy9DQ0FjdGl2ZUFu
aW1hdGlvbi5oIgogI2luY2x1ZGUgImNjL0NDTGF5ZXJUcmVlSG9zdENvbW1vbi5oIgogI2luY2x1
ZGUgImNjL0NDUHJveHkuaCIKIApAQCAtMjE2LDYgKzIxNyw4IEBAIHByaXZhdGU6CiAgICAgdm9p
ZCByZXNlcnZlVGV4dHVyZXMoKTsKICAgICB2b2lkIGNsZWFyUGVuZGluZ1VwZGF0ZSgpOwogCisg
ICAgdm9pZCBzZXRBbmltYXRpb25SZXN1bHRzUmVjdXJzaXZlKENDQW5pbWF0aW9uUmVzdWx0cyos
IExheWVyQ2hyb21pdW0qKTsKKwogICAgIGludCBtX2NvbXBvc2l0b3JJZGVudGlmaWVyOwogCiAg
ICAgYm9vbCBtX2FuaW1hdGluZzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuaApp
bmRleCA0YTNmMDYxOGNmMGVmOTQyYjUwMTg4ZWIxNTgwMzdiNjgzZDZhNDczLi42NTFlZDNhNGUy
NjE5MmMzYjU4Zjc5NmViMWQ0ZTVkYWZjZGJjMDllIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRy
ZWVIb3N0SW1wbC5oCkBAIC0yNSw2ICsyNSw3IEBACiAjaWZuZGVmIENDTGF5ZXJUcmVlSG9zdElt
cGxfaAogI2RlZmluZSBDQ0xheWVyVHJlZUhvc3RJbXBsX2gKIAorI2luY2x1ZGUgImNjL0NDQWN0
aXZlQW5pbWF0aW9uLmgiCiAjaW5jbHVkZSAiY2MvQ0NJbnB1dEhhbmRsZXIuaCIKICNpbmNsdWRl
ICJjYy9DQ0xheWVyU29ydGVyLmgiCiAjaW5jbHVkZSAiY2MvQ0NMYXllclRyZWVIb3N0LmgiCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q1NpbmdsZVRocmVhZFByb3h5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDU2luZ2xlVGhyZWFkUHJveHkuY3BwCmluZGV4IDczNDIyNzQ0NjhmZDZm
ODFkODBlNzBhNzgzM2FjMWI2ZDNhMDUxY2QuLmJiNWZlNTA2ZWFjZmI4MTIyM2FkMTNiNjY4MDFm
ODM0ZjUzOTAxYTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDU2luZ2xlVGhyZWFkUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2luZ2xlVGhyZWFkUHJveHkuY3BwCkBA
IC0yMjUsNiArMjI1LDggQEAgdm9pZCBDQ1NpbmdsZVRocmVhZFByb3h5OjpzdG9wKCkKIAogdm9p
ZCBDQ1NpbmdsZVRocmVhZFByb3h5OjpwdXNoQW5pbWF0aW9uUmVzdWx0VG9NYWluVGhyZWFkT25J
bXBsVGhyZWFkKFBhc3NPd25QdHI8Q0NBbmltYXRpb25SZXN1bHRzPiByZXN1bHRzKQogeworICAg
IEFTU0VSVChDQ1Byb3h5Ojppc0ltcGxUaHJlYWQoKSk7CisgICAgRGVidWdTY29wZWRTZXRNYWlu
VGhyZWFkIG1haW47CiAgICAgbV9sYXllclRyZWVIb3N0LT5zZXRBbmltYXRpb25SZXN1bHRzKHJl
c3VsdHMpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ1NpbmdsZVRocmVhZFByb3h5LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NpbmdsZVRocmVhZFByb3h5LmgKaW5kZXggZWRl
MDhkNjE5ODFjODc0M2Y4YWM2ZjM4MWEzNGFkZDA2ZGRiZjQzYS4uOWRjZGVhODUyMTY2Y2Q4Y2U2
YzljYmE3MjUwMzI5OTdkNTRmZTNlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2luZ2xlVGhyZWFkUHJv
eHkuaApAQCAtMTExLDYgKzExMSwyNCBAQCBwdWJsaWM6CiAgICAgfQogfTsKIAorLy8gRm9yIHVz
ZSBpbiB0aGUgc2luZ2xlLXRocmVhZGVkIGNhc2UuIEluIGRlYnVnIGJ1aWxkcywgaXQgcHJldGVu
ZHMgdGhhdCB0aGUKKy8vIGNvZGUgaXMgcnVubmluZyBvbiB0aGUgbWFpbiB0aHJlYWQgdG8gc2F0
aXNmeSBhc3NlcnRpb24gY2hlY2tzLgorY2xhc3MgRGVidWdTY29wZWRTZXRNYWluVGhyZWFkIHsK
K3B1YmxpYzoKKyAgICBEZWJ1Z1Njb3BlZFNldE1haW5UaHJlYWQoKQorICAgIHsKKyNpZiAhQVNT
RVJUX0RJU0FCTEVECisgICAgICAgIENDUHJveHk6OnNldEN1cnJlbnRUaHJlYWRJc0ltcGxUaHJl
YWQoZmFsc2UpOworI2VuZGlmCisgICAgfQorICAgIH5EZWJ1Z1Njb3BlZFNldE1haW5UaHJlYWQo
KQorICAgIHsKKyNpZiAhQVNTRVJUX0RJU0FCTEVECisgICAgICAgIENDUHJveHk6OnNldEN1cnJl
bnRUaHJlYWRJc0ltcGxUaHJlYWQodHJ1ZSk7CisjZW5kaWYKKyAgICB9Cit9OworCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>126595</attachid>
            <date>2012-02-10 15:32:09 -0800</date>
            <delta_ts>2012-02-24 14:28:35 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-77646-20120210183208.patch</filename>
            <type>text/plain</type>
            <size>14090</size>
            <attacher>vollick</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA3MzE5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLmd5cGkgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKaW5kZXggMDBjMjg5ZjNi
NDg1NzRmMjBlMjkyOWY2ODAwOWRhNjY4ZjAwZjYwOS4uMTM5NzMwMTJjMWEzMzRlMmUyYmZmZDFh
MjJjMzJmNjgyNTY5ODQwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBp
CisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQpAQCAtMzI0OSw2ICszMjQ5LDcgQEAK
ICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyQW5pbWF0
aW9uQ29udHJvbGxlci5jcHAnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDTGF5ZXJBbmltYXRpb25Db250cm9sbGVySW1wbC5oJywKICAgICAgICAgICAgICdw
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyQW5pbWF0aW9uQ29udHJvbGxlcklt
cGwuY3BwJywKKyAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xh
eWVyQW5pbWF0aW9uRGVsZWdhdGUuaCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NMYXllckltcGwuY3BwJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ0xheWVySW1wbC5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVySXRlcmF0b3IuY3BwJywKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0dyYXBoaWNzTGF5ZXJDaHJv
bWl1bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9HcmFw
aGljc0xheWVyQ2hyb21pdW0uY3BwCmluZGV4IDExZmE0NmI3OTIxMDJkNWJhYmU5NGYyMGViZTFm
ZTllODU3Mjc0MjAuLjk3ZmM4MmEzZmJmNzAzODkxNDA0YzFlYWUzZDNmNGIzNmMwMDAxZmQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0dyYXBo
aWNzTGF5ZXJDaHJvbWl1bS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vR3JhcGhpY3NMYXllckNocm9taXVtLmNwcApAQCAtODQsMTEgKzg0LDIwIEBA
IEdyYXBoaWNzTGF5ZXJDaHJvbWl1bTo6fkdyYXBoaWNzTGF5ZXJDaHJvbWl1bSgpCiAgICAgaWYg
KG1fbGF5ZXIpIHsKICAgICAgICAgbV9sYXllci0+Y2xlYXJEZWxlZ2F0ZSgpOwogICAgICAgICBt
X2xheWVyLT5jbGVhclJlbmRlclN1cmZhY2UoKTsKKyAgICAgICAgLy8gUHJpbWFyeSBsYXllciBt
YXkgaGF2ZSBhdCBvbmUgcG9pbnQgYmVlbiBtX2xheWVyLiBCZSBzdXJlIHRvIHJlc2V0CisgICAg
ICAgIC8vIHRoZSBkZWxlZ2F0ZSwganVzdCBpbiBjYXNlLgorICAgICAgICBtX2xheWVyLT5zZXRM
YXllckFuaW1hdGlvbkRlbGVnYXRlKDApOwogICAgIH0KKwogICAgIGlmIChtX2NvbnRlbnRzTGF5
ZXIpCiAgICAgICAgIG1fY29udGVudHNMYXllci0+Y2xlYXJSZW5kZXJTdXJmYWNlKCk7Ci0gICAg
aWYgKG1fdHJhbnNmb3JtTGF5ZXIpCisKKyAgICBpZiAobV90cmFuc2Zvcm1MYXllcikgewogICAg
ICAgICBtX3RyYW5zZm9ybUxheWVyLT5jbGVhclJlbmRlclN1cmZhY2UoKTsKKyAgICAgICAgLy8g
UHJpbWFyeSBsYXllciBtYXkgaGF2ZSBzd2l0Y2hlZCBmcm9tIG1fbGF5ZXIgdG8gbV90cmFuc2Zv
cm1MYXllci4KKyAgICAgICAgLy8gQmUgc3VyZSB0byByZXNldCB0aGUgZGVsZWdhdGUsIGp1c3Qg
aW4gY2FzZS4KKyAgICAgICAgbV90cmFuc2Zvcm1MYXllci0+c2V0TGF5ZXJBbmltYXRpb25EZWxl
Z2F0ZSgwKTsKKyAgICB9CiB9CiAKIHZvaWQgR3JhcGhpY3NMYXllckNocm9taXVtOjpzZXROYW1l
KGNvbnN0IFN0cmluZyYgaW5OYW1lKQpAQCAtMzcxLDMzICszODAsMjggQEAgdm9pZCBHcmFwaGlj
c0xheWVyQ2hyb21pdW06OnNldENvbnRlbnRzVG9DYW52YXMoUGxhdGZvcm1MYXllciogcGxhdGZv
cm1MYXllcikKIAogYm9vbCBHcmFwaGljc0xheWVyQ2hyb21pdW06OmFkZEFuaW1hdGlvbihjb25z
dCBLZXlmcmFtZVZhbHVlTGlzdCYgdmFsdWVzLCBjb25zdCBJbnRTaXplJiBib3hTaXplLCBjb25z
dCBBbmltYXRpb24qIGFuaW1hdGlvbiwgY29uc3QgU3RyaW5nJiBhbmltYXRpb25OYW1lLCBkb3Vi
bGUgdGltZU9mZnNldCkKIHsKLSAgICByZXR1cm4gbV9sYXllci0+YWRkQW5pbWF0aW9uKHZhbHVl
cywgYm94U2l6ZSwgYW5pbWF0aW9uLCBhbmltYXRpb25OYW1lLCB0aW1lT2Zmc2V0KTsKKyAgICBw
cmltYXJ5TGF5ZXIoKS0+c2V0TGF5ZXJBbmltYXRpb25EZWxlZ2F0ZSh0aGlzKTsKKyAgICByZXR1
cm4gcHJpbWFyeUxheWVyKCktPmFkZEFuaW1hdGlvbih2YWx1ZXMsIGJveFNpemUsIGFuaW1hdGlv
biwgYW5pbWF0aW9uTmFtZSwgdGltZU9mZnNldCk7CiB9CiAKIHZvaWQgR3JhcGhpY3NMYXllckNo
cm9taXVtOjpwYXVzZUFuaW1hdGlvbihjb25zdCBTdHJpbmcmIGFuaW1hdGlvbk5hbWUsIGRvdWJs
ZSB0aW1lT2Zmc2V0KQogewotICAgIG1fbGF5ZXItPnBhdXNlQW5pbWF0aW9uKGFuaW1hdGlvbk5h
bWUsIHRpbWVPZmZzZXQpOworICAgIHByaW1hcnlMYXllcigpLT5wYXVzZUFuaW1hdGlvbihhbmlt
YXRpb25OYW1lLCB0aW1lT2Zmc2V0KTsKIH0KIAogdm9pZCBHcmFwaGljc0xheWVyQ2hyb21pdW06
OnJlbW92ZUFuaW1hdGlvbihjb25zdCBTdHJpbmcmIGFuaW1hdGlvbk5hbWUpCiB7Ci0gICAgbV9s
YXllci0+cmVtb3ZlQW5pbWF0aW9uKGFuaW1hdGlvbk5hbWUpOworICAgIHByaW1hcnlMYXllcigp
LT5yZW1vdmVBbmltYXRpb24oYW5pbWF0aW9uTmFtZSk7CiB9CiAKIHZvaWQgR3JhcGhpY3NMYXll
ckNocm9taXVtOjpzdXNwZW5kQW5pbWF0aW9ucyhkb3VibGUgdGltZSkKIHsKLSAgICBtX2xheWVy
LT5zdXNwZW5kQW5pbWF0aW9ucyh0aW1lKTsKKyAgICBwcmltYXJ5TGF5ZXIoKS0+c3VzcGVuZEFu
aW1hdGlvbnModGltZSk7CiB9CiAKIHZvaWQgR3JhcGhpY3NMYXllckNocm9taXVtOjpyZXN1bWVB
bmltYXRpb25zKCkKIHsKLSAgICBtX2xheWVyLT5yZXN1bWVBbmltYXRpb25zKCk7Ci19Ci0KLXZv
aWQgR3JhcGhpY3NMYXllckNocm9taXVtOjpsYXllckFuaW1hdGlvblN0YXJ0ZWQoZG91YmxlIHN0
YXJ0VGltZSkKLXsKLSAgICBpZiAobV9jbGllbnQpCi0gICAgICAgIG1fY2xpZW50LT5ub3RpZnlB
bmltYXRpb25TdGFydGVkKHRoaXMsIHN0YXJ0VGltZSk7CisgICAgcHJpbWFyeUxheWVyKCktPnJl
c3VtZUFuaW1hdGlvbnMoKTsKIH0KIAogdm9pZCBHcmFwaGljc0xheWVyQ2hyb21pdW06OnNldENv
bnRlbnRzVG9NZWRpYShQbGF0Zm9ybUxheWVyKiBsYXllcikKQEAgLTU1NSw2ICs1NTksNyBAQCB2
b2lkIEdyYXBoaWNzTGF5ZXJDaHJvbWl1bTo6dXBkYXRlTGF5ZXJQcmVzZXJ2ZXMzRCgpCiAgICAg
ICAgIC8vIENyZWF0ZSB0aGUgdHJhbnNmb3JtIGxheWVyLgogICAgICAgICBtX3RyYW5zZm9ybUxh
eWVyID0gTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlKCk7CiAgICAgICAgIG1fdHJhbnNmb3JtTGF5ZXIt
PnNldFByZXNlcnZlczNEKHRydWUpOworICAgICAgICBtX3RyYW5zZm9ybUxheWVyLT5zZXRMYXll
ckFuaW1hdGlvbkRlbGVnYXRlKHRoaXMpOwogCiAgICAgICAgIC8vIENvcHkgdGhlIHBvc2l0aW9u
IGZyb20gdGhpcyBsYXllci4KICAgICAgICAgdXBkYXRlTGF5ZXJQb3NpdGlvbigpOwpAQCAtNTg3
LDYgKzU5Miw3IEBAIHZvaWQgR3JhcGhpY3NMYXllckNocm9taXVtOjp1cGRhdGVMYXllclByZXNl
cnZlczNEKCkKICAgICAgICAgICAgIG1fdHJhbnNmb3JtTGF5ZXItPnBhcmVudCgpLT5yZXBsYWNl
Q2hpbGQobV90cmFuc2Zvcm1MYXllci5nZXQoKSwgbV9sYXllci5nZXQoKSk7CiAKICAgICAgICAg
Ly8gUmVsZWFzZSB0aGUgdHJhbnNmb3JtIGxheWVyLgorICAgICAgICBtX3RyYW5zZm9ybUxheWVy
LT5jbGVhckxheWVyQW5pbWF0aW9uRGVsZWdhdGUoKTsKICAgICAgICAgbV90cmFuc2Zvcm1MYXll
ciA9IDA7CiAKICAgICAgICAgdXBkYXRlTGF5ZXJQb3NpdGlvbigpOwpAQCAtNzA3LDYgKzcxMywx
MiBAQCB2b2lkIEdyYXBoaWNzTGF5ZXJDaHJvbWl1bTo6cGFpbnRDb250ZW50cyhHcmFwaGljc0Nv
bnRleHQmIGNvbnRleHQsIGNvbnN0IEludFJlYwogICAgIHBhaW50R3JhcGhpY3NMYXllckNvbnRl
bnRzKGNvbnRleHQsIGNsaXApOwogfQogCit2b2lkIEdyYXBoaWNzTGF5ZXJDaHJvbWl1bTo6bm90
aWZ5QW5pbWF0aW9uU3RhcnRlZChkb3VibGUgc3RhcnRUaW1lKQoreworICAgIGlmIChtX2NsaWVu
dCkKKyAgICAgICAgbV9jbGllbnQtPm5vdGlmeUFuaW1hdGlvblN0YXJ0ZWQodGhpcywgc3RhcnRU
aW1lKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gVVNFKEFDQ0VM
RVJBVEVEX0NPTVBPU0lUSU5HKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vR3JhcGhpY3NMYXllckNocm9taXVtLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9HcmFwaGljc0xheWVyQ2hyb21pdW0uaAppbmRl
eCAyYjc4NTAxODZlYTFjOWUwOTQ2ZGEzNzMyYzUzNTJlY2RjOWVjMGI3Li40ZjZhNzI2NmM2MzVi
ZmUzMzhjNjZkYWJiNzkxYjhhMWJhNmM5ODhiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9HcmFwaGljc0xheWVyQ2hyb21pdW0uaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9HcmFwaGljc0xheWVyQ2hy
b21pdW0uaApAQCAtMzcsMTIgKzM3LDE1IEBACiAjaW5jbHVkZSAiTGF5ZXJDaHJvbWl1bS5oIgog
I2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgogI2luY2x1ZGUgIkdyYXBoaWNzTGF5ZXIuaCIK
KyNpbmNsdWRlICJjYy9DQ0xheWVyQW5pbWF0aW9uRGVsZWdhdGUuaCIKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCiBjbGFzcyBMYXllckNocm9taXVtOwogCi1jbGFzcyBHcmFwaGljc0xheWVyQ2hy
b21pdW0gOiBwdWJsaWMgR3JhcGhpY3NMYXllciwgcHVibGljIENvbnRlbnRMYXllckRlbGVnYXRl
IHsKK2NsYXNzIEdyYXBoaWNzTGF5ZXJDaHJvbWl1bSA6IHB1YmxpYyBHcmFwaGljc0xheWVyLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVibGljIENvbnRlbnRMYXllckRlbGVnYXRl
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVibGljIENDTGF5ZXJBbmltYXRpb25E
ZWxlZ2F0ZSB7CiBwdWJsaWM6CiAgICAgR3JhcGhpY3NMYXllckNocm9taXVtKEdyYXBoaWNzTGF5
ZXJDbGllbnQqKTsKICAgICB2aXJ0dWFsIH5HcmFwaGljc0xheWVyQ2hyb21pdW0oKTsKQEAgLTk4
LDggKzEwMSw2IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgc3VzcGVuZEFuaW1hdGlvbnMo
ZG91YmxlIHRpbWUpOwogICAgIHZpcnR1YWwgdm9pZCByZXN1bWVBbmltYXRpb25zKCk7CiAKLSAg
ICB2b2lkIGxheWVyQW5pbWF0aW9uU3RhcnRlZChkb3VibGUgc3RhcnRUaW1lKTsKLQogICAgIHZp
cnR1YWwgUGxhdGZvcm1MYXllciogcGxhdGZvcm1MYXllcigpIGNvbnN0OwogCiAgICAgdmlydHVh
bCB2b2lkIHNldERlYnVnQmFja2dyb3VuZENvbG9yKGNvbnN0IENvbG9yJik7CkBAIC0xMDksNiAr
MTEwLDkgQEAgcHVibGljOgogICAgIC8vIENvbnRlbnRMYXllckRlbGVnYXRlIGltcGxlbWVudGF0
aW9uLgogICAgIHZpcnR1YWwgdm9pZCBwYWludENvbnRlbnRzKEdyYXBoaWNzQ29udGV4dCYsIGNv
bnN0IEludFJlY3QmIGNsaXApOwogCisgICAgLy8gQ0NMYXllckFuaW1hdGlvbkRlbGVnYXRlIGlt
cGxlbWVudGF0aW9uLgorICAgIHZpcnR1YWwgdm9pZCBub3RpZnlBbmltYXRpb25TdGFydGVkKGRv
dWJsZSBzdGFydFRpbWUpOworCiAgICAgLy8gRXhwb3NlZCBmb3IgdGVzdHMuCiAgICAgTGF5ZXJD
aHJvbWl1bSogY29udGVudHNMYXllcigpIGNvbnN0IHsgcmV0dXJuIG1fY29udGVudHNMYXllci5n
ZXQoKTsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9MYXllckNocm9taXVtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL0xheWVyQ2hyb21pdW0uY3BwCmluZGV4IDFlNWUwNmM1MTJkOWJlNDg1YjE3
MWIzYjdmNzA1NzE3YzJjZjFhMTIuLmMwMGEyNWM3ZTBjYzc2ZDVjMWFhZTJhOWI2OTY3NmY1Mzcy
ZGRjNGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL0xheWVyQ2hyb21pdW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL0xheWVyQ2hyb21pdW0uY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENv
cHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29w
eXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCkBAIC0zNCw2ICszNCw3IEBACiAjaW5jbHVkZSAi
TGF5ZXJDaHJvbWl1bS5oIgogCiAjaW5jbHVkZSAiY2MvQ0NMYXllckFuaW1hdGlvbkNvbnRyb2xs
ZXIuaCIKKyNpbmNsdWRlICJjYy9DQ0xheWVyQW5pbWF0aW9uRGVsZWdhdGUuaCIKICNpbmNsdWRl
ICJjYy9DQ0xheWVySW1wbC5oIgogI2luY2x1ZGUgImNjL0NDTGF5ZXJUcmVlSG9zdC5oIgogI2lm
IFVTRShTS0lBKQpAQCAtODEsNiArODIsNyBAQCBMYXllckNocm9taXVtOjpMYXllckNocm9taXVt
KCkKICAgICAsIG1fdGFyZ2V0UmVuZGVyU3VyZmFjZSgwKQogICAgICwgbV9jb250ZW50c1NjYWxl
KDEuMCkKICAgICAsIG1fcGFnZVNjYWxlRGlydHkoZmFsc2UpCisgICAgLCBtX2xheWVyQW5pbWF0
aW9uRGVsZWdhdGUoMCkKIHsKIH0KIApAQCAtMTI2LDYgKzEyOCwxMiBAQCB2b2lkIExheWVyQ2hy
b21pdW06OnJlc3VtZUFuaW1hdGlvbnMoKQogICAgIHNldE5lZWRzQ29tbWl0KCk7CiB9CiAKK3Zv
aWQgTGF5ZXJDaHJvbWl1bTo6bm90aWZ5QW5pbWF0aW9uU3RhcnRlZChkb3VibGUgdGltZSkKK3sK
KyAgICBpZiAobV9sYXllckFuaW1hdGlvbkRlbGVnYXRlKQorICAgICAgICBtX2xheWVyQW5pbWF0
aW9uRGVsZWdhdGUtPm5vdGlmeUFuaW1hdGlvblN0YXJ0ZWQodGltZSk7Cit9CisKIHZvaWQgTGF5
ZXJDaHJvbWl1bTo6c2V0SXNOb25Db21wb3NpdGVkQ29udGVudChib29sIGlzTm9uQ29tcG9zaXRl
ZENvbnRlbnQpCiB7CiAgICAgbV9pc05vbkNvbXBvc2l0ZWRDb250ZW50ID0gaXNOb25Db21wb3Np
dGVkQ29udGVudDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL0xheWVyQ2hyb21pdW0uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL0xheWVyQ2hyb21pdW0uaAppbmRleCAwOGNhZmRkNTk4Njg1YjcxMTM1YjA5
MzcyMGEzZGQ0OTc0MTllNTRiLi41MWZmNzQwMTM5ZmY3MjIwNGMxZDQwMTY1NDk4YmYzMDI0MTJh
ZjMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9MYXllckNocm9taXVtLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vTGF5ZXJDaHJvbWl1bS5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0
IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMgYXJlCkBAIC01Miw2ICs1Miw3IEBACiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKIGNsYXNzIENDTGF5ZXJBbmltYXRpb25Db250cm9sbGVyOworY2xhc3MgQ0NMYXllckFu
aW1hdGlvbkRlbGVnYXRlOwogY2xhc3MgQ0NMYXllckltcGw7CiBjbGFzcyBDQ0xheWVyVHJlZUhv
c3Q7CiBjbGFzcyBDQ1RleHR1cmVVcGRhdGVyOwpAQCAtMjE4LDggKzIxOSwxMiBAQCBwdWJsaWM6
CiAgICAgdm9pZCBzdXNwZW5kQW5pbWF0aW9ucyhkb3VibGUgdGltZSk7CiAgICAgdm9pZCByZXN1
bWVBbmltYXRpb25zKCk7CiAKKyAgICB2b2lkIHNldExheWVyQW5pbWF0aW9uRGVsZWdhdGUoQ0NM
YXllckFuaW1hdGlvbkRlbGVnYXRlKiBsYXllckFuaW1hdGlvbkRlbGVnYXRlKSB7IG1fbGF5ZXJB
bmltYXRpb25EZWxlZ2F0ZSA9IGxheWVyQW5pbWF0aW9uRGVsZWdhdGU7IH0KKyAgICB2b2lkIGNs
ZWFyTGF5ZXJBbmltYXRpb25EZWxlZ2F0ZSgpIHsgbV9sYXllckFuaW1hdGlvbkRlbGVnYXRlID0g
MDsgfQorCiBwcm90ZWN0ZWQ6CiAgICAgZnJpZW5kIGNsYXNzIENDTGF5ZXJJbXBsOworICAgIGZy
aWVuZCBjbGFzcyBDQ0xheWVyVHJlZUhvc3Q7CiAgICAgZnJpZW5kIGNsYXNzIENDTGF5ZXJUcmVl
SG9zdFRlc3Q7CiAgICAgZnJpZW5kIGNsYXNzIExheWVyVGlsZXJDaHJvbWl1bTsKICAgICBmcmll
bmQgY2xhc3MgVHJlZVN5bmNocm9uaXplcjsKQEAgLTIyNyw2ICsyMzIsOCBAQCBwcm90ZWN0ZWQ6
CiAKICAgICBMYXllckNocm9taXVtKCk7CiAKKyAgICB2b2lkIG5vdGlmeUFuaW1hdGlvblN0YXJ0
ZWQoZG91YmxlIHRpbWUpOworCiAgICAgYm9vbCBpc1BhaW50ZWRBeGlzQWxpZ25lZEluU2NyZWVu
KCkgY29uc3Q7CiAKICAgICB2b2lkIHNldE5lZWRzQ29tbWl0KCk7CkBAIC0zMDksNiArMzE2LDgg
QEAgcHJpdmF0ZToKICAgICBTdHJpbmcgbV9uYW1lOwogCiAgICAgYm9vbCBtX3BhZ2VTY2FsZURp
cnR5OworCisgICAgQ0NMYXllckFuaW1hdGlvbkRlbGVnYXRlKiBtX2xheWVyQW5pbWF0aW9uRGVs
ZWdhdGU7CiB9OwogCiB2b2lkIHNvcnRMYXllcnMoVmVjdG9yPFJlZlB0cjxMYXllckNocm9taXVt
PiA+OjppdGVyYXRvciwgVmVjdG9yPFJlZlB0cjxMYXllckNocm9taXVtPiA+OjppdGVyYXRvciwg
dm9pZCopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NBbmltYXRpb25SZXN1bHRzLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ0FuaW1hdGlvblJlc3VsdHMuaAppbmRleCAxMmM3YmM0OWZi
ZTczNzZhMzE1MDk3MDMzNjdhNjIzNGY0MDQyZmM5Li4yYWY4YTcyNWM0OTA4NWUwMjkwODNlNjVh
OTJjZDJlZTEyMWUxOTM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ0FuaW1hdGlvblJlc3VsdHMuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0FuaW1hdGlvblJlc3VsdHMuaApAQCAt
NTAsNyArNTAsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB+Q0NBbmltYXRpb25SZXN1bHRzKCkg
eyB9CiAKICAgICBWZWN0b3I8Q0NBbmltYXRpb25SZXN1bHQ+JiBzdGFydGVkQW5pbWF0aW9ucygp
IHsgcmV0dXJuIG1fc3RhcnRlZEFuaW1hdGlvbnM7IH0KLSAgICBjb25zdCBWZWN0b3I8Q0NBbmlt
YXRpb25SZXN1bHQ+JiBzdGF0ZWRBbmltYXRpb25zKCkgY29uc3QgeyByZXR1cm4gbV9zdGFydGVk
QW5pbWF0aW9uczsgfQorICAgIGNvbnN0IFZlY3RvcjxDQ0FuaW1hdGlvblJlc3VsdD4mIHN0YXJ0
ZWRBbmltYXRpb25zKCkgY29uc3QgeyByZXR1cm4gbV9zdGFydGVkQW5pbWF0aW9uczsgfQogCiBw
cml2YXRlOgogICAgIENDQW5pbWF0aW9uUmVzdWx0cygpIHsgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllckFuaW1hdGlvbkNv
bnRyb2xsZXJJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDTGF5ZXJBbmltYXRpb25Db250cm9sbGVySW1wbC5jcHAKaW5kZXggMzlkMWJkYzA4
NmY4ZDFjY2ZiNGI0NzIyNjZhMGI5YTQ4NzA1ZTY3YS4uNGYwMzZhOTRlNzg1MjJiYWE5YmE3NzJi
Y2U3MGRmZTk0ZjhmMzU5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllckFuaW1hdGlvbkNvbnRyb2xsZXJJbXBsLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyQW5p
bWF0aW9uQ29udHJvbGxlckltcGwuY3BwCkBAIC0xOTcsNiArMTk3LDcgQEAgdm9pZCBDQ0xheWVy
QW5pbWF0aW9uQ29udHJvbGxlckltcGw6OnRpY2tBbmltYXRpb25zKGRvdWJsZSBub3cpCiAgICAg
Zm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX2FjdGl2ZUFuaW1hdGlvbnMuc2l6ZSgpOyArK2kpIHsK
ICAgICAgICAgaWYgKG1fYWN0aXZlQW5pbWF0aW9uc1tpXS0+cnVuU3RhdGUoKSA9PSBDQ0FjdGl2
ZUFuaW1hdGlvbjo6UnVubmluZykgewogICAgICAgICAgICAgZG91YmxlIHRyaW1tZWQgPSBtX2Fj
dGl2ZUFuaW1hdGlvbnNbaV0tPnRyaW1UaW1lVG9DdXJyZW50SXRlcmF0aW9uKG5vdyk7CisKICAg
ICAgICAgICAgIHN3aXRjaCAobV9hY3RpdmVBbmltYXRpb25zW2ldLT50YXJnZXRQcm9wZXJ0eSgp
KSB7CiAKICAgICAgICAgICAgIGNhc2UgQ0NBY3RpdmVBbmltYXRpb246OlRyYW5zZm9ybTogewpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NMYXllclRyZWVIb3N0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5jcHAKaW5kZXggZDZmZTA1MjMyZDM5MDQ0NjAyNzMy
MDRjMTFmYzQ4OWVmYmQ3Y2U5Yy4uNDllMjA0ZDA0ODFlYmFhNTMzMjI0Mzg3MGJmZmMwOWQ0ZGU0
ZDI2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NMYXllclRyZWVIb3N0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuY3BwCkBAIC0yNjQsNyArMjY0LDEy
IEBAIHZvaWQgQ0NMYXllclRyZWVIb3N0OjpzZXROZWVkc1JlZHJhdygpCiB2b2lkIENDTGF5ZXJU
cmVlSG9zdDo6c2V0QW5pbWF0aW9uUmVzdWx0cyhQYXNzT3duUHRyPENDQW5pbWF0aW9uUmVzdWx0
cz4gcmVzdWx0cykKIHsKICAgICBBU1NFUlQoQ0NUaHJlYWRQcm94eTo6aXNNYWluVGhyZWFkKCkp
OwotICAgIC8vIEltcGxlbWVudGVkIGhlcmU6IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD03NzY0NgorICAgIGlmICghbV9yb290TGF5ZXIpCisgICAgICAgIHJldHVybjsK
KworICAgIC8vIFdhbGsgdGhlIHdob2xlIHRyZWUuIEtlZXAgYW4gZXllIG9uIHRoZSBjb3N0IG9m
IHRoaXMgZnVuY3Rpb24uCisgICAgVFJBQ0VfRVZFTlQoIkNDTGF5ZXJUcmVlSG9zdDo6c2V0QW5p
bWF0aW9uUmVzdWx0cyIsIHRoaXMsIDApOworICAgIHNldEFuaW1hdGlvblJlc3VsdHNSZWN1cnNp
dmUoKnJlc3VsdHMsIG1fcm9vdExheWVyLmdldCgpKTsKIH0KIAogdm9pZCBDQ0xheWVyVHJlZUhv
c3Q6OnNldFJvb3RMYXllcihQYXNzUmVmUHRyPExheWVyQ2hyb21pdW0+IHJvb3RMYXllcikKQEAg
LTYwMyw2ICs2MDgsMTcgQEAgdm9pZCBDQ0xheWVyVHJlZUhvc3Q6OmNsZWFyUGVuZGluZ1VwZGF0
ZSgpCiAgICAgbV91cGRhdGVMaXN0LmNsZWFyKCk7CiB9CiAKK3ZvaWQgQ0NMYXllclRyZWVIb3N0
OjpzZXRBbmltYXRpb25SZXN1bHRzUmVjdXJzaXZlKGNvbnN0IENDQW5pbWF0aW9uUmVzdWx0cyYg
cmVzdWx0cywgTGF5ZXJDaHJvbWl1bSogbGF5ZXIpCit7CisgICAgZm9yIChzaXplX3QgcmVzdWx0
SW5kZXggPSAwOyByZXN1bHRJbmRleCA8IHJlc3VsdHMuc3RhcnRlZEFuaW1hdGlvbnMoKS5zaXpl
KCk7ICsrcmVzdWx0SW5kZXgpIHsKKyAgICAgICAgaWYgKGxheWVyLT5pZCgpID09IHJlc3VsdHMu
c3RhcnRlZEFuaW1hdGlvbnMoKVtyZXN1bHRJbmRleF0ubGF5ZXJJRCkKKyAgICAgICAgICAgIGxh
eWVyLT5ub3RpZnlBbmltYXRpb25TdGFydGVkKHJlc3VsdHMuc3RhcnRlZEFuaW1hdGlvbnMoKVty
ZXN1bHRJbmRleF0udGltZSk7CisgICAgfQorCisgICAgZm9yIChzaXplX3QgY2hpbGRJbmRleCA9
IDA7IGNoaWxkSW5kZXggPCBsYXllci0+Y2hpbGRyZW4oKS5zaXplKCk7ICsrY2hpbGRJbmRleCkK
KyAgICAgICAgc2V0QW5pbWF0aW9uUmVzdWx0c1JlY3Vyc2l2ZShyZXN1bHRzLCBsYXllci0+Y2hp
bGRyZW4oKVtjaGlsZEluZGV4XS5nZXQoKSk7Cit9CisKIHZvaWQgQ0NMYXllclRyZWVIb3N0Ojph
cHBseVNjcm9sbEFuZFNjYWxlKGNvbnN0IENDU2Nyb2xsQW5kU2NhbGVTZXQmIGluZm8pCiB7CiAg
ICAgLy8gRklYTUU6IHB1c2hpbmcgc2Nyb2xsIG9mZnNldHMgdG8gbm9uLXJvb3QgbGF5ZXJzIG5v
dCBpbXBsZW1lbnRlZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuaAppbmRleCBlMTgzYmU1MjQz
NWZlM2M4Mzg2OGUxYjI0M2FhMmE1NzU4ZDliNGJlLi4zYjJhOTc0NmMwYWM5ZWVmOGEwZDk4Nzdh
ZGM1ODgyZDM0ZDE2N2I3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuaApAQCAtMzAsNiAr
MzAsNyBAQAogI2luY2x1ZGUgIkxheWVyQ2hyb21pdW0uaCIKICNpbmNsdWRlICJSYXRlTGltaXRl
ci5oIgogI2luY2x1ZGUgIlRyYW5zZm9ybWF0aW9uTWF0cml4LmgiCisjaW5jbHVkZSAiY2MvQ0NB
Y3RpdmVBbmltYXRpb24uaCIKICNpbmNsdWRlICJjYy9DQ0xheWVyVHJlZUhvc3RDb21tb24uaCIK
ICNpbmNsdWRlICJjYy9DQ1Byb3h5LmgiCiAKQEAgLTIxOSw2ICsyMjAsOCBAQCBwcml2YXRlOgog
ICAgIHZvaWQgcmVzZXJ2ZVRleHR1cmVzKCk7CiAgICAgdm9pZCBjbGVhclBlbmRpbmdVcGRhdGUo
KTsKIAorICAgIHZvaWQgc2V0QW5pbWF0aW9uUmVzdWx0c1JlY3Vyc2l2ZShjb25zdCBDQ0FuaW1h
dGlvblJlc3VsdHMmLCBMYXllckNocm9taXVtKik7CisKICAgICBpbnQgbV9jb21wb3NpdG9ySWRl
bnRpZmllcjsKIAogICAgIGJvb2wgbV9hbmltYXRpbmc7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJl
ZUhvc3RJbXBsLmgKaW5kZXggOGZjMmJiYWVkNjY0ZWM4YTU2MGNmYWMyNDcyY2M3NDg3OTgyNDY1
ZS4uMDY5MDI1NTQwZDM4NTdmYzQzZTgzYWNkZjFmYmRlOGUxZDJmNmYzMiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVI
b3N0SW1wbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuaApAQCAtMjUsNiArMjUsNyBAQAogI2lmbmRlZiBDQ0xh
eWVyVHJlZUhvc3RJbXBsX2gKICNkZWZpbmUgQ0NMYXllclRyZWVIb3N0SW1wbF9oCiAKKyNpbmNs
dWRlICJjYy9DQ0FjdGl2ZUFuaW1hdGlvbi5oIgogI2luY2x1ZGUgImNjL0NDSW5wdXRIYW5kbGVy
LmgiCiAjaW5jbHVkZSAiY2MvQ0NMYXllclNvcnRlci5oIgogI2luY2x1ZGUgImNjL0NDTGF5ZXJU
cmVlSG9zdC5oIgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>128809</attachid>
            <date>2012-02-24 14:28:38 -0800</date>
            <delta_ts>2012-02-24 14:33:03 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-77646-20120224172837.patch</filename>
            <type>text/plain</type>
            <size>34332</size>
            <attacher>vollick</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA4Nzc0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjgyMzlmNjBlZTRjNGRh
MmNlNTYwZjJjOWY5N2Q0NmM0MmYwZjhjYS4uYzQzYTEwYTg1ZmM1NzhlNTBlY2VlOTQxZjljNjJh
OGJiYmIyY2M2NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc0IEBACisyMDEyLTAyLTI0ICBJYW4g
Vm9sbGljayAgPHZvbGxpY2tAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtjaHJvbWl1bV0gUGx1
bWIgYW5pbWF0aW9uIHN0YXJ0ZWQgbm90aWZpY2F0aW9ucyBmcm9tIENDTGF5ZXJUcmVlSG9zdCB0
byBHcmFwaGljc0xheWVyQ2hyb21pdW0KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTc3NjQ2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgKiBXZWJDb3JlLmd5cGk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vR3JhcGhpY3NMYXllckNocm9taXVtLmNwcDoKKyAgICAgICAgKHN0ZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyQ2hyb21pdW06On5HcmFwaGljc0xheWVyQ2hy
b21pdW0pOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllckNocm9taXVtOjphZGRBbmlt
YXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllckNocm9taXVtOjpwYXVzZUFu
aW1hdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyQ2hyb21pdW06OnJlbW92
ZUFuaW1hdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyQ2hyb21pdW06OnN1
c3BlbmRBbmltYXRpb25zKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJDaHJvbWl1
bTo6cmVzdW1lQW5pbWF0aW9ucyk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyQ2hy
b21pdW06OnVwZGF0ZUxheWVyUHJlc2VydmVzM0QpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NMYXllckNocm9taXVtOjptYXBBbmltYXRpb25OYW1lVG9JZCk6CisgICAgICAgIChXZWJDb3Jl
KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJDaHJvbWl1bTo6bm90aWZ5QW5pbWF0
aW9uU3RhcnRlZCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyQ2hyb21pdW06Om5v
dGlmeUFuaW1hdGlvbkZpbmlzaGVkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9HcmFwaGljc0xheWVyQ2hyb21pdW0uaDoKKyAgICAgICAgKEdyYXBoaWNzTGF5ZXJDaHJv
bWl1bSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJDaHJvbWl1
bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMYXllckNocm9taXVtOjpMYXllckNocm9taXVtKToK
KyAgICAgICAgKFdlYkNvcmU6OkxheWVyQ2hyb21pdW06OnNldEFuaW1hdGlvbkV2ZW50KToKKyAg
ICAgICAgKFdlYkNvcmUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xh
eWVyQ2hyb21pdW0uaDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoTGF5ZXJDaHJvbWl1
bSk6CisgICAgICAgIChXZWJDb3JlOjpMYXllckNocm9taXVtOjpzZXRMYXllckFuaW1hdGlvbkRl
bGVnYXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0FuaW1h
dGlvbkV2ZW50cy5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJD
b3JlOjpDQ0FuaW1hdGlvbkV2ZW50OjpDQ0FuaW1hdGlvbkV2ZW50KToKKyAgICAgICAgKFdlYkNv
cmU6OkNDQW5pbWF0aW9uRXZlbnQ6On5DQ0FuaW1hdGlvbkV2ZW50KToKKyAgICAgICAgKFdlYkNv
cmU6OkNDQW5pbWF0aW9uRXZlbnQ6OnRvQW5pbWF0aW9uU3RhcnRlZEV2ZW50KToKKyAgICAgICAg
KFdlYkNvcmU6OkNDQW5pbWF0aW9uRXZlbnQ6OnRvQW5pbWF0aW9uRmluaXNoZWRFdmVudCk6Cisg
ICAgICAgIChXZWJDb3JlOjpDQ0FuaW1hdGlvblN0YXJ0ZWRFdmVudDo6Y3JlYXRlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNDQW5pbWF0aW9uU3RhcnRlZEV2ZW50OjpDQ0FuaW1hdGlvblN0YXJ0ZWRF
dmVudCk6CisgICAgICAgIChXZWJDb3JlOjpDQ0FuaW1hdGlvblN0YXJ0ZWRFdmVudDo6fkNDQW5p
bWF0aW9uU3RhcnRlZEV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkNDQW5pbWF0aW9uU3RhcnRl
ZEV2ZW50Ojp0eXBlKToKKyAgICAgICAgKFdlYkNvcmU6OkNDQW5pbWF0aW9uRmluaXNoZWRFdmVu
dDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkNDQW5pbWF0aW9uRmluaXNoZWRFdmVudDo6
Q0NBbmltYXRpb25GaW5pc2hlZEV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkNDQW5pbWF0aW9u
RmluaXNoZWRFdmVudDo6fkNDQW5pbWF0aW9uRmluaXNoZWRFdmVudCk6CisgICAgICAgIChXZWJD
b3JlOjpDQ0FuaW1hdGlvbkZpbmlzaGVkRXZlbnQ6OnR5cGUpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDQW5pbWF0aW9uRXZlbnRzLmg6CisgICAgICAgIChXZWJD
b3JlKToKKyAgICAgICAgKENDQW5pbWF0aW9uRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6Q0NB
bmltYXRpb25FdmVudDo6bGF5ZXJJZCk6CisgICAgICAgIChDQ0FuaW1hdGlvblN0YXJ0ZWRFdmVu
dCk6CisgICAgICAgIChXZWJDb3JlOjpDQ0FuaW1hdGlvblN0YXJ0ZWRFdmVudDo6c3RhcnRUaW1l
KToKKyAgICAgICAgKENDQW5pbWF0aW9uRmluaXNoZWRFdmVudCk6CisgICAgICAgIChXZWJDb3Jl
OjpDQ0FuaW1hdGlvbkZpbmlzaGVkRXZlbnQ6OmFuaW1hdGlvbklkKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyQW5pbWF0aW9uQ29udHJvbGxlckltcGwu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllckFuaW1hdGlvbkNvbnRyb2xsZXJJbXBsOjph
bmltYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJBbmltYXRpb25Db250cm9sbGVySW1w
bDo6c3RhcnRBbmltYXRpb25zV2FpdGluZ0Zvck5leHRUaWNrKToKKyAgICAgICAgKFdlYkNvcmU6
OkNDTGF5ZXJBbmltYXRpb25Db250cm9sbGVySW1wbDo6c3RhcnRBbmltYXRpb25zV2FpdGluZ0Zv
clN0YXJ0VGltZSk6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVyQW5pbWF0aW9uQ29udHJvbGxl
ckltcGw6OnN0YXJ0QW5pbWF0aW9uc1dhaXRpbmdGb3JUYXJnZXRBdmFpbGFiaWxpdHkpOgorICAg
ICAgICAoV2ViQ29yZTo6Q0NMYXllckFuaW1hdGlvbkNvbnRyb2xsZXJJbXBsOjpwdXJnZUZpbmlz
aGVkQW5pbWF0aW9ucyk6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVyQW5pbWF0aW9uQ29udHJv
bGxlckltcGw6OnRpY2tBbmltYXRpb25zKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ0xheWVyQW5pbWF0aW9uQ29udHJvbGxlckltcGwuaDoKKyAgICAgICAgKEND
TGF5ZXJBbmltYXRpb25Db250cm9sbGVySW1wbCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NMYXllckFuaW1hdGlvbkRlbGVnYXRlLmg6IENvcGllZCBmcm9tIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDQW5pbWF0aW9uRXZl
bnRzLmguCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKENDTGF5ZXJBbmltYXRpb25EZWxl
Z2F0ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRy
ZWVIb3N0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJUcmVlSG9zdDo6c2V0QW5pbWF0
aW9uRXZlbnRzKToKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJUcmVlSG9zdDo6c2V0QW5pbWF0
aW9uRXZlbnRzUmVjdXJzaXZlKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5oOgorCiAyMDEyLTAyLTI0
ICBSb2JpbiBDYW8gIDxyb2Jpbi5jYW9AdG9yY2htb2JpbGUuY29tLmNuPgogCiAgICAgICAgIFtC
bGFja0JlcnJ5XSBVcHN0cmVhbSBJbWFnZUJsYWNrQmVycnkgaW4gcGxhdGZvcm0vZ3JhcGhpY3Mv
YmxhY2tiZXJyeQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cg
Yi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwppbmRleCA3OTdiMzFjNmMxOTQ3NDk3
YWMwODg2NzllY2ZjNTMwNDkxNzA3ZWE1Li42ODZlMDczMDE1ODQ2NDY2N2JiZjMwZGZmZGE0MzZm
NzRhZDk4ZmMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwor
KysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIxIEBACisy
MDEyLTAyLTI0ICBJYW4gVm9sbGljayAgPHZvbGxpY2tAY2hyb21pdW0ub3JnPgorCisgICAgICAg
IFtjaHJvbWl1bV0gUGx1bWIgYW5pbWF0aW9uIHN0YXJ0ZWQgbm90aWZpY2F0aW9ucyBmcm9tIEND
TGF5ZXJUcmVlSG9zdCB0byBHcmFwaGljc0xheWVyQ2hyb21pdW0KKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc3NjQ2CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiB0ZXN0cy9DQ0xheWVyVHJlZUhvc3RUZXN0
LmNwcDoKKyAgICAgICAgKFRlc3RIb29rcyk6CisgICAgICAgIChXVEY6OlRlc3RIb29rczo6bm90
aWZ5QW5pbWF0aW9uU3RhcnRlZCk6CisgICAgICAgIChXVEY6OlRlc3RIb29rczo6bm90aWZ5QW5p
bWF0aW9uRmluaXNoZWQpOgorICAgICAgICAoV1RGOjpNb2NrTGF5ZXJUcmVlSG9zdDo6Y3JlYXRl
KToKKyAgICAgICAgKFdURjo6Q0NMYXllclRyZWVIb3N0VGVzdEFkZEFuaW1hdGlvbjo6Q0NMYXll
clRyZWVIb3N0VGVzdEFkZEFuaW1hdGlvbik6CisgICAgICAgIChXVEY6OkNDTGF5ZXJUcmVlSG9z
dFRlc3RBZGRBbmltYXRpb246OmFuaW1hdGVMYXllcnMpOgorICAgICAgICAoV1RGOjpDQ0xheWVy
VHJlZUhvc3RUZXN0QWRkQW5pbWF0aW9uOjpub3RpZnlBbmltYXRpb25TdGFydGVkKToKKyAgICAg
ICAgKENDTGF5ZXJUcmVlSG9zdFRlc3RBZGRBbmltYXRpb24pOgorICAgICAgICAoV1RGOjpDQ0xh
eWVyVHJlZUhvc3RUZXN0QWRkQW5pbWF0aW9uOjpub3RpZnlBbmltYXRpb25GaW5pc2hlZCk6CisK
IDIwMTItMDItMjQgIFNoaW55YSBLYXdhbmFrYSAgPHNoaW55YWtAY2hyb21pdW0ub3JnPgogCiAg
ICAgICAgIFNwZWxsQ2hlY2tSZXF1ZXN0IG5lZWRzIHRvIGtub3cgdGhlIGNvbnRleHQgd2hlcmUg
dGhlIHNwZWxsY2hlY2sgaGFwcGVuZWQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLmd5cGkgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKaW5kZXggZDU3ODYyYTk4MzMx
ZTZjMDVkNzZjNmU0MDhhMGFkODRiZmRmMTUyYS4uZTQ3MmU3MTQwYjI0NWU5NTRiNWQwMGFlMDRl
NmVkY2E4Yzg1NTczNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCisr
KyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQpAQCAtMzI1MSw3ICszMjUxLDggQEAKICAg
ICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0FjdGl2ZUFuaW1hdGlv
bi5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0FuaW1h
dGlvbkN1cnZlLmNwcCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NBbmltYXRpb25DdXJ2ZS5oJywKLSAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ0FuaW1hdGlvblJlc3VsdHMuaCcsCisgICAgICAgICAgICAncGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NBbmltYXRpb25FdmVudHMuY3BwJywKKyAgICAgICAgICAg
ICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0FuaW1hdGlvbkV2ZW50cy5oJywKICAg
ICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0NhbnZhc0RyYXdRdWFk
LmNwcCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NDYW52
YXNEcmF3UXVhZC5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ0NhbnZhc0xheWVySW1wbC5jcHAnLApAQCAtMzI3NSw2ICszMjc2LDcgQEAKICAgICAgICAg
ICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyQW5pbWF0aW9uQ29udHJv
bGxlci5jcHAnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
TGF5ZXJBbmltYXRpb25Db250cm9sbGVySW1wbC5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyQW5pbWF0aW9uQ29udHJvbGxlckltcGwuY3BwJywK
KyAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyQW5pbWF0
aW9uRGVsZWdhdGUuaCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NMYXllckltcGwuY3BwJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ0xheWVySW1wbC5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ0xheWVySXRlcmF0b3IuY3BwJywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0dyYXBoaWNzTGF5ZXJDaHJvbWl1bS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9HcmFwaGljc0xheWVy
Q2hyb21pdW0uY3BwCmluZGV4IGNkZWNmNTkxNzM5ODY3MmU1YmRhZGI0YjExZDdlYzMyOTVjYmVk
NTguLjJkYmQwYTMwNDllN2FkMmUwZTEzNzQ2MmU5NDk3YjJmZDg1ZDAzYWEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0dyYXBoaWNzTGF5ZXJD
aHJvbWl1bS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vR3JhcGhpY3NMYXllckNocm9taXVtLmNwcApAQCAtNjIsNyArNjIsOCBAQAogdXNpbmcgbmFt
ZXNwYWNlIHN0ZDsKIAogbmFtZXNwYWNlIHsKLXN0YXRpYyBpbnQgc19uZXh0R3JvdXBJZCA9IDA7
CitzdGF0aWMgaW50IHNfbmV4dEdyb3VwSWQgPSAxOworc3RhdGljIGludCBzX25leHRBbmltYXRp
b25JZCA9IDE7CiB9CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTg4LDExICs4OSwyMCBAQCBH
cmFwaGljc0xheWVyQ2hyb21pdW06On5HcmFwaGljc0xheWVyQ2hyb21pdW0oKQogICAgIGlmICht
X2xheWVyKSB7CiAgICAgICAgIG1fbGF5ZXItPmNsZWFyRGVsZWdhdGUoKTsKICAgICAgICAgbV9s
YXllci0+Y2xlYXJSZW5kZXJTdXJmYWNlKCk7CisgICAgICAgIC8vIFByaW1hcnkgbGF5ZXIgbWF5
IGhhdmUgYXQgb25lIHBvaW50IGJlZW4gbV9sYXllci4gQmUgc3VyZSB0byByZXNldAorICAgICAg
ICAvLyB0aGUgZGVsZWdhdGUsIGp1c3QgaW4gY2FzZS4KKyAgICAgICAgbV9sYXllci0+c2V0TGF5
ZXJBbmltYXRpb25EZWxlZ2F0ZSgwKTsKICAgICB9CisKICAgICBpZiAobV9jb250ZW50c0xheWVy
KQogICAgICAgICBtX2NvbnRlbnRzTGF5ZXItPmNsZWFyUmVuZGVyU3VyZmFjZSgpOwotICAgIGlm
IChtX3RyYW5zZm9ybUxheWVyKQorCisgICAgaWYgKG1fdHJhbnNmb3JtTGF5ZXIpIHsKICAgICAg
ICAgbV90cmFuc2Zvcm1MYXllci0+Y2xlYXJSZW5kZXJTdXJmYWNlKCk7CisgICAgICAgIC8vIFBy
aW1hcnkgbGF5ZXIgbWF5IGhhdmUgc3dpdGNoZWQgZnJvbSBtX2xheWVyIHRvIG1fdHJhbnNmb3Jt
TGF5ZXIuCisgICAgICAgIC8vIEJlIHN1cmUgdG8gcmVzZXQgdGhlIGRlbGVnYXRlLCBqdXN0IGlu
IGNhc2UuCisgICAgICAgIG1fdHJhbnNmb3JtTGF5ZXItPnNldExheWVyQW5pbWF0aW9uRGVsZWdh
dGUoMCk7CisgICAgfQogfQogCiB2b2lkIEdyYXBoaWNzTGF5ZXJDaHJvbWl1bTo6c2V0TmFtZShj
b25zdCBTdHJpbmcmIGluTmFtZSkKQEAgLTM4OCwyNyArMzk4LDI4IEBAIHZvaWQgR3JhcGhpY3NM
YXllckNocm9taXVtOjpzZXRDb250ZW50c1RvQ2FudmFzKFBsYXRmb3JtTGF5ZXIqIHBsYXRmb3Jt
TGF5ZXIpCiAKIGJvb2wgR3JhcGhpY3NMYXllckNocm9taXVtOjphZGRBbmltYXRpb24oY29uc3Qg
S2V5ZnJhbWVWYWx1ZUxpc3QmIHZhbHVlcywgY29uc3QgSW50U2l6ZSYgYm94U2l6ZSwgY29uc3Qg
QW5pbWF0aW9uKiBhbmltYXRpb24sIGNvbnN0IFN0cmluZyYgYW5pbWF0aW9uTmFtZSwgZG91Ymxl
IHRpbWVPZmZzZXQpCiB7Ci0gICAgcmV0dXJuIG1fbGF5ZXItPmFkZEFuaW1hdGlvbih2YWx1ZXMs
IGJveFNpemUsIGFuaW1hdGlvbiwgbWFwQW5pbWF0aW9uTmFtZVRvSWQoYW5pbWF0aW9uTmFtZSks
IHNfbmV4dEdyb3VwSWQrKywgdGltZU9mZnNldCk7CisgICAgcHJpbWFyeUxheWVyKCktPnNldExh
eWVyQW5pbWF0aW9uRGVsZWdhdGUodGhpcyk7CisgICAgcmV0dXJuIHByaW1hcnlMYXllcigpLT5h
ZGRBbmltYXRpb24odmFsdWVzLCBib3hTaXplLCBhbmltYXRpb24sIG1hcEFuaW1hdGlvbk5hbWVU
b0lkKGFuaW1hdGlvbk5hbWUpLCBzX25leHRHcm91cElkKyssIHRpbWVPZmZzZXQpOwogfQogCiB2
b2lkIEdyYXBoaWNzTGF5ZXJDaHJvbWl1bTo6cGF1c2VBbmltYXRpb24oY29uc3QgU3RyaW5nJiBh
bmltYXRpb25OYW1lLCBkb3VibGUgdGltZU9mZnNldCkKIHsKLSAgICBtX2xheWVyLT5wYXVzZUFu
aW1hdGlvbihtYXBBbmltYXRpb25OYW1lVG9JZChhbmltYXRpb25OYW1lKSwgdGltZU9mZnNldCk7
CisgICAgcHJpbWFyeUxheWVyKCktPnBhdXNlQW5pbWF0aW9uKG1hcEFuaW1hdGlvbk5hbWVUb0lk
KGFuaW1hdGlvbk5hbWUpLCB0aW1lT2Zmc2V0KTsKIH0KIAogdm9pZCBHcmFwaGljc0xheWVyQ2hy
b21pdW06OnJlbW92ZUFuaW1hdGlvbihjb25zdCBTdHJpbmcmIGFuaW1hdGlvbk5hbWUpCiB7Ci0g
ICAgbV9sYXllci0+cmVtb3ZlQW5pbWF0aW9uKG1hcEFuaW1hdGlvbk5hbWVUb0lkKGFuaW1hdGlv
bk5hbWUpKTsKKyAgICBwcmltYXJ5TGF5ZXIoKS0+cmVtb3ZlQW5pbWF0aW9uKG1hcEFuaW1hdGlv
bk5hbWVUb0lkKGFuaW1hdGlvbk5hbWUpKTsKIH0KIAogdm9pZCBHcmFwaGljc0xheWVyQ2hyb21p
dW06OnN1c3BlbmRBbmltYXRpb25zKGRvdWJsZSB0aW1lKQogewotICAgIG1fbGF5ZXItPnN1c3Bl
bmRBbmltYXRpb25zKHRpbWUpOworICAgIHByaW1hcnlMYXllcigpLT5zdXNwZW5kQW5pbWF0aW9u
cyh0aW1lKTsKIH0KIAogdm9pZCBHcmFwaGljc0xheWVyQ2hyb21pdW06OnJlc3VtZUFuaW1hdGlv
bnMoKQogewotICAgIG1fbGF5ZXItPnJlc3VtZUFuaW1hdGlvbnMoKTsKKyAgICBwcmltYXJ5TGF5
ZXIoKS0+cmVzdW1lQW5pbWF0aW9ucygpOwogfQogCiB2b2lkIEdyYXBoaWNzTGF5ZXJDaHJvbWl1
bTo6c2V0Q29udGVudHNUb01lZGlhKFBsYXRmb3JtTGF5ZXIqIGxheWVyKQpAQCAtNTY2LDYgKzU3
Nyw3IEBAIHZvaWQgR3JhcGhpY3NMYXllckNocm9taXVtOjp1cGRhdGVMYXllclByZXNlcnZlczNE
KCkKICAgICAgICAgLy8gQ3JlYXRlIHRoZSB0cmFuc2Zvcm0gbGF5ZXIuCiAgICAgICAgIG1fdHJh
bnNmb3JtTGF5ZXIgPSBMYXllckNocm9taXVtOjpjcmVhdGUoKTsKICAgICAgICAgbV90cmFuc2Zv
cm1MYXllci0+c2V0UHJlc2VydmVzM0QodHJ1ZSk7CisgICAgICAgIG1fdHJhbnNmb3JtTGF5ZXIt
PnNldExheWVyQW5pbWF0aW9uRGVsZWdhdGUodGhpcyk7CiAKICAgICAgICAgLy8gQ29weSB0aGUg
cG9zaXRpb24gZnJvbSB0aGlzIGxheWVyLgogICAgICAgICB1cGRhdGVMYXllclBvc2l0aW9uKCk7
CkBAIC01OTgsNiArNjEwLDcgQEAgdm9pZCBHcmFwaGljc0xheWVyQ2hyb21pdW06OnVwZGF0ZUxh
eWVyUHJlc2VydmVzM0QoKQogICAgICAgICAgICAgbV90cmFuc2Zvcm1MYXllci0+cGFyZW50KCkt
PnJlcGxhY2VDaGlsZChtX3RyYW5zZm9ybUxheWVyLmdldCgpLCBtX2xheWVyLmdldCgpKTsKIAog
ICAgICAgICAvLyBSZWxlYXNlIHRoZSB0cmFuc2Zvcm0gbGF5ZXIuCisgICAgICAgIG1fdHJhbnNm
b3JtTGF5ZXItPnNldExheWVyQW5pbWF0aW9uRGVsZWdhdGUoMCk7CiAgICAgICAgIG1fdHJhbnNm
b3JtTGF5ZXIgPSAwOwogCiAgICAgICAgIHVwZGF0ZUxheWVyUG9zaXRpb24oKTsKQEAgLTcyMCw4
ICs3MzMsMjkgQEAgdm9pZCBHcmFwaGljc0xheWVyQ2hyb21pdW06OnBhaW50Q29udGVudHMoR3Jh
cGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBJbnRSZWMKIAogaW50IEdyYXBoaWNzTGF5ZXJD
aHJvbWl1bTo6bWFwQW5pbWF0aW9uTmFtZVRvSWQoY29uc3QgU3RyaW5nJiBhbmltYXRpb25OYW1l
KQogewotICAgIC8vIEZJWE1FOiBuZWVkIHRvIG1haW50YWluIGEgbmFtZSB0byBpZCBtYXBwaW5n
IGluIHRoaXMgY2xhc3MuCi0gICAgcmV0dXJuIDA7CisgICAgaWYgKGFuaW1hdGlvbk5hbWUuaXNF
bXB0eSgpKQorICAgICAgICByZXR1cm4gMDsKKworICAgIGlmICghbV9hbmltYXRpb25JZE1hcC5j
b250YWlucyhhbmltYXRpb25OYW1lKSkKKyAgICAgICAgbV9hbmltYXRpb25JZE1hcC5hZGQoYW5p
bWF0aW9uTmFtZSwgc19uZXh0QW5pbWF0aW9uSWQrKyk7CisKKyAgICByZXR1cm4gbV9hbmltYXRp
b25JZE1hcC5maW5kKGFuaW1hdGlvbk5hbWUpLT5zZWNvbmQ7Cit9CisKK3ZvaWQgR3JhcGhpY3NM
YXllckNocm9taXVtOjpub3RpZnlBbmltYXRpb25TdGFydGVkKGRvdWJsZSBzdGFydFRpbWUpCit7
CisgICAgaWYgKG1fY2xpZW50KQorICAgICAgICBtX2NsaWVudC0+bm90aWZ5QW5pbWF0aW9uU3Rh
cnRlZCh0aGlzLCBzdGFydFRpbWUpOworfQorCit2b2lkIEdyYXBoaWNzTGF5ZXJDaHJvbWl1bTo6
bm90aWZ5QW5pbWF0aW9uRmluaXNoZWQoaW50IGFuaW1hdGlvbklkKQoreworICAgIGZvciAoQW5p
bWF0aW9uSWRNYXA6Oml0ZXJhdG9yIGlkSXRlciA9IG1fYW5pbWF0aW9uSWRNYXAuYmVnaW4oKTsg
aWRJdGVyICE9IG1fYW5pbWF0aW9uSWRNYXAuZW5kKCk7ICsraWRJdGVyKSB7CisgICAgICAgIGlm
IChpZEl0ZXItPnNlY29uZCA9PSBhbmltYXRpb25JZCkgeworICAgICAgICAgICAgbV9hbmltYXRp
b25JZE1hcC5yZW1vdmUoaWRJdGVyKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQor
ICAgIH0KIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vR3JhcGhpY3NMYXllckNocm9taXVtLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9HcmFwaGljc0xheWVy
Q2hyb21pdW0uaAppbmRleCBlYjMxNDZiYmQyYjUzMDg5MmI0YmFhZmMzYmFkYjMzNTRlNDQ3MjIy
Li5jZmZhZWUyMzU3MDY5OGVkNDMzMDU0NjA2OTYwOTIzZWQ5ZDFmODNjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9HcmFwaGljc0xheWVyQ2hy
b21pdW0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9H
cmFwaGljc0xheWVyQ2hyb21pdW0uaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAo
QykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zIGFyZQpAQCAtMzcsMTIgKzM3LDE1IEBACiAjaW5jbHVkZSAiTGF5ZXJD
aHJvbWl1bS5oIgogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgogI2luY2x1ZGUgIkdyYXBo
aWNzTGF5ZXIuaCIKKyNpbmNsdWRlICJjYy9DQ0xheWVyQW5pbWF0aW9uRGVsZWdhdGUuaCIKKwor
I2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3Mg
TGF5ZXJDaHJvbWl1bTsKIAotY2xhc3MgR3JhcGhpY3NMYXllckNocm9taXVtIDogcHVibGljIEdy
YXBoaWNzTGF5ZXIsIHB1YmxpYyBDb250ZW50TGF5ZXJEZWxlZ2F0ZSB7CitjbGFzcyBHcmFwaGlj
c0xheWVyQ2hyb21pdW0gOiBwdWJsaWMgR3JhcGhpY3NMYXllciwgcHVibGljIENvbnRlbnRMYXll
ckRlbGVnYXRlLCBwdWJsaWMgQ0NMYXllckFuaW1hdGlvbkRlbGVnYXRlIHsKIHB1YmxpYzoKICAg
ICBHcmFwaGljc0xheWVyQ2hyb21pdW0oR3JhcGhpY3NMYXllckNsaWVudCopOwogICAgIHZpcnR1
YWwgfkdyYXBoaWNzTGF5ZXJDaHJvbWl1bSgpOwpAQCAtMTEwLDEwICsxMTMsMTYgQEAgcHVibGlj
OgogICAgIC8vIENvbnRlbnRMYXllckRlbGVnYXRlIGltcGxlbWVudGF0aW9uLgogICAgIHZpcnR1
YWwgdm9pZCBwYWludENvbnRlbnRzKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEludFJlY3QmIGNs
aXApOwogCisgICAgLy8gQ0NMYXllckFuaW1hdGlvbkRlbGVnYXRlIGltcGxlbWVudGF0aW9uLgor
ICAgIHZpcnR1YWwgdm9pZCBub3RpZnlBbmltYXRpb25TdGFydGVkKGRvdWJsZSBzdGFydFRpbWUp
OworICAgIHZpcnR1YWwgdm9pZCBub3RpZnlBbmltYXRpb25GaW5pc2hlZChpbnQgYW5pbWF0aW9u
SWQpOworCiAgICAgLy8gRXhwb3NlZCBmb3IgdGVzdHMuCiAgICAgTGF5ZXJDaHJvbWl1bSogY29u
dGVudHNMYXllcigpIGNvbnN0IHsgcmV0dXJuIG1fY29udGVudHNMYXllci5nZXQoKTsgfQogCiBw
cml2YXRlOgorICAgIHR5cGVkZWYgSGFzaE1hcDxTdHJpbmcsIGludD4gQW5pbWF0aW9uSWRNYXA7
CisKICAgICBMYXllckNocm9taXVtKiBwcmltYXJ5TGF5ZXIoKSBjb25zdCAgeyByZXR1cm4gbV90
cmFuc2Zvcm1MYXllci5nZXQoKSA/IG1fdHJhbnNmb3JtTGF5ZXIuZ2V0KCkgOiBtX2xheWVyLmdl
dCgpOyB9CiAgICAgTGF5ZXJDaHJvbWl1bSogaG9zdExheWVyRm9yQ2hpbGRyZW4oKSBjb25zdDsK
ICAgICBMYXllckNocm9taXVtKiBsYXllckZvclBhcmVudCgpIGNvbnN0OwpAQCAtMTU2LDYgKzE2
NSw4IEBAIHByaXZhdGU6CiAgICAgQ29udGVudHNMYXllclB1cnBvc2UgbV9jb250ZW50c0xheWVy
UHVycG9zZTsKICAgICBib29sIG1fY29udGVudHNMYXllckhhc0JhY2tncm91bmRDb2xvciA6IDE7
CiAgICAgYm9vbCBtX2luU2V0Q2hpbGRyZW47CisKKyAgICBBbmltYXRpb25JZE1hcCBtX2FuaW1h
dGlvbklkTWFwOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJDaHJvbWl1bS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllckNocm9taXVt
LmNwcAppbmRleCA4ZWVkYTY4YTQ4NzljOWEyYjc2NTQ1NDk0YTExYTA3ZTdkMjk3ZmZhLi42M2U3
OGFhMzdjZDMzNDIzZjMwNzY2MmM4ZjhiMGI1MDE0NGE0NTM3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllckNocm9taXVtLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllckNocm9taXVt
LmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFy
ZQpAQCAtMzMsNyArMzMsOSBAQAogI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKICNp
bmNsdWRlICJMYXllckNocm9taXVtLmgiCiAKKyNpbmNsdWRlICJjYy9DQ0FuaW1hdGlvbkV2ZW50
cy5oIgogI2luY2x1ZGUgImNjL0NDTGF5ZXJBbmltYXRpb25Db250cm9sbGVyLmgiCisjaW5jbHVk
ZSAiY2MvQ0NMYXllckFuaW1hdGlvbkRlbGVnYXRlLmgiCiAjaW5jbHVkZSAiY2MvQ0NMYXllcklt
cGwuaCIKICNpbmNsdWRlICJjYy9DQ0xheWVyVHJlZUhvc3QuaCIKICNpZiBVU0UoU0tJQSkKQEAg
LTgyLDYgKzg0LDcgQEAgTGF5ZXJDaHJvbWl1bTo6TGF5ZXJDaHJvbWl1bSgpCiAgICAgLCBtX3Rh
cmdldFJlbmRlclN1cmZhY2UoMCkKICAgICAsIG1fY29udGVudHNTY2FsZSgxLjApCiAgICAgLCBt
X3BhZ2VTY2FsZURpcnR5KGZhbHNlKQorICAgICwgbV9sYXllckFuaW1hdGlvbkRlbGVnYXRlKDAp
CiB7CiB9CiAKQEAgLTE0MSw2ICsxNDQsMjUgQEAgYm9vbCBMYXllckNocm9taXVtOjpoYXNBY3Rp
dmVBbmltYXRpb24oKSBjb25zdAogICAgIHJldHVybiBtX2xheWVyQW5pbWF0aW9uQ29udHJvbGxl
ci0+aGFzQWN0aXZlQW5pbWF0aW9uKCk7CiB9CiAKK3ZvaWQgTGF5ZXJDaHJvbWl1bTo6c2V0QW5p
bWF0aW9uRXZlbnQoY29uc3QgQ0NBbmltYXRpb25FdmVudCYgZXZlbnQpCit7CisgICAgc3dpdGNo
IChldmVudC50eXBlKCkpIHsKKworICAgIGNhc2UgQ0NBbmltYXRpb25FdmVudDo6U3RhcnRlZDog
eworICAgICAgICBjb25zdCBDQ0FuaW1hdGlvblN0YXJ0ZWRFdmVudCogc3RhcnRlZEV2ZW50ID0g
ZXZlbnQudG9BbmltYXRpb25TdGFydGVkRXZlbnQoKTsKKyAgICAgICAgbV9sYXllckFuaW1hdGlv
bkRlbGVnYXRlLT5ub3RpZnlBbmltYXRpb25TdGFydGVkKHN0YXJ0ZWRFdmVudC0+c3RhcnRUaW1l
KCkpOworICAgICAgICBicmVhazsKKyAgICB9CisKKyAgICBjYXNlIENDQW5pbWF0aW9uRXZlbnQ6
OkZpbmlzaGVkOiB7CisgICAgICAgIGNvbnN0IENDQW5pbWF0aW9uRmluaXNoZWRFdmVudCogZmlu
aXNoZWRFdmVudCA9IGV2ZW50LnRvQW5pbWF0aW9uRmluaXNoZWRFdmVudCgpOworICAgICAgICBt
X2xheWVyQW5pbWF0aW9uRGVsZWdhdGUtPm5vdGlmeUFuaW1hdGlvbkZpbmlzaGVkKGZpbmlzaGVk
RXZlbnQtPmFuaW1hdGlvbklkKCkpOworICAgICAgICBicmVhazsKKyAgICB9CisKKyAgICB9Cit9
CisKIHZvaWQgTGF5ZXJDaHJvbWl1bTo6c2V0SXNOb25Db21wb3NpdGVkQ29udGVudChib29sIGlz
Tm9uQ29tcG9zaXRlZENvbnRlbnQpCiB7CiAgICAgbV9pc05vbkNvbXBvc2l0ZWRDb250ZW50ID0g
aXNOb25Db21wb3NpdGVkQ29udGVudDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyQ2hyb21pdW0uaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyQ2hyb21pdW0uaAppbmRleCA4OTc2NDdkMmQ1
MjYzNWM4MDhiYWE3Mjg0Y2RlYjlhODNjNDMwNDBhLi44OWFiM2E4YjI4MjE3ODkxMTA0MjA4NjMy
NmIzMTNmNzQ4MTU2OWRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9MYXllckNocm9taXVtLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJDaHJvbWl1bS5oCkBAIC0xLDUgKzEsNSBAQAogLyoK
LSAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAg
KgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCkBAIC01Miw3ICs1Miw5IEBACiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgQ0NBbmltYXRpb25FdmVudDsKIGNsYXNzIENDTGF5
ZXJBbmltYXRpb25Db250cm9sbGVyOworY2xhc3MgQ0NMYXllckFuaW1hdGlvbkRlbGVnYXRlOwog
Y2xhc3MgQ0NMYXllckltcGw7CiBjbGFzcyBDQ0xheWVyVHJlZUhvc3Q7CiBjbGFzcyBDQ1RleHR1
cmVVcGRhdGVyOwpAQCAtMjI0LDggKzIyNiwxMyBAQCBwdWJsaWM6CiAKICAgICBDQ0xheWVyQW5p
bWF0aW9uQ29udHJvbGxlciogbGF5ZXJBbmltYXRpb25Db250cm9sbGVyKCkgeyByZXR1cm4gbV9s
YXllckFuaW1hdGlvbkNvbnRyb2xsZXIuZ2V0KCk7IH0KICAgICB2b2lkIHNldExheWVyQW5pbWF0
aW9uQ29udHJvbGxlcihQYXNzT3duUHRyPENDTGF5ZXJBbmltYXRpb25Db250cm9sbGVyPik7CisK
KyAgICB2b2lkIHNldExheWVyQW5pbWF0aW9uRGVsZWdhdGUoQ0NMYXllckFuaW1hdGlvbkRlbGVn
YXRlKiBsYXllckFuaW1hdGlvbkRlbGVnYXRlKSB7IG1fbGF5ZXJBbmltYXRpb25EZWxlZ2F0ZSA9
IGxheWVyQW5pbWF0aW9uRGVsZWdhdGU7IH0KKwogICAgIGJvb2wgaGFzQWN0aXZlQW5pbWF0aW9u
KCkgY29uc3Q7CiAKKyAgICB2b2lkIHNldEFuaW1hdGlvbkV2ZW50KGNvbnN0IENDQW5pbWF0aW9u
RXZlbnQmKTsKKwogcHJvdGVjdGVkOgogICAgIGZyaWVuZCBjbGFzcyBDQ0xheWVySW1wbDsKICAg
ICBmcmllbmQgY2xhc3MgTGF5ZXJUaWxlckNocm9taXVtOwpAQCAtMzE0LDYgKzMyMSw4IEBAIHBy
aXZhdGU6CiAgICAgU3RyaW5nIG1fbmFtZTsKIAogICAgIGJvb2wgbV9wYWdlU2NhbGVEaXJ0eTsK
KworICAgIENDTGF5ZXJBbmltYXRpb25EZWxlZ2F0ZSogbV9sYXllckFuaW1hdGlvbkRlbGVnYXRl
OwogfTsKIAogdm9pZCBzb3J0TGF5ZXJzKFZlY3RvcjxSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gPjo6
aXRlcmF0b3IsIFZlY3RvcjxSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gPjo6aXRlcmF0b3IsIHZvaWQq
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDQW5pbWF0aW9uRXZlbnRzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDQW5pbWF0aW9uRXZlbnRzLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kMGQ3MDVk
ZTA1MjAwMjc0NjdkNWZlYjRkZDUwMzg5NjE0NmRmMjQ0Ci0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NBbmltYXRpb25FdmVu
dHMuY3BwCkBAIC0wLDAgKzEsOTQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICog
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OCisgKiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKyAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcu
aCIKKworI2luY2x1ZGUgImNjL0NDQW5pbWF0aW9uRXZlbnRzLmgiCisKKyNpbmNsdWRlIDx3dGYv
T3duUHRyLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworQ0NBbmltYXRpb25FdmVudDo6Q0NB
bmltYXRpb25FdmVudChpbnQgbGF5ZXJJZCkKKyAgICA6IG1fbGF5ZXJJZChsYXllcklkKQorewor
fQorCitDQ0FuaW1hdGlvbkV2ZW50Ojp+Q0NBbmltYXRpb25FdmVudCgpCit7Cit9CisKK2NvbnN0
IENDQW5pbWF0aW9uU3RhcnRlZEV2ZW50KiBDQ0FuaW1hdGlvbkV2ZW50Ojp0b0FuaW1hdGlvblN0
YXJ0ZWRFdmVudCgpIGNvbnN0Cit7CisgICAgQVNTRVJUKHR5cGUoKSA9PSBTdGFydGVkKTsKKyAg
ICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgQ0NBbmltYXRpb25TdGFydGVkRXZlbnQqPih0aGlz
KTsKK30KKworY29uc3QgQ0NBbmltYXRpb25GaW5pc2hlZEV2ZW50KiBDQ0FuaW1hdGlvbkV2ZW50
Ojp0b0FuaW1hdGlvbkZpbmlzaGVkRXZlbnQoKSBjb25zdAoreworICAgIEFTU0VSVCh0eXBlKCkg
PT0gRmluaXNoZWQpOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCBDQ0FuaW1hdGlvbkZp
bmlzaGVkRXZlbnQqPih0aGlzKTsKK30KKworUGFzc093blB0cjxDQ0FuaW1hdGlvblN0YXJ0ZWRF
dmVudD4gQ0NBbmltYXRpb25TdGFydGVkRXZlbnQ6OmNyZWF0ZShpbnQgbGF5ZXJJZCwgZG91Ymxl
IHN0YXJ0VGltZSkKK3sKKyAgICByZXR1cm4gYWRvcHRQdHIobmV3IENDQW5pbWF0aW9uU3RhcnRl
ZEV2ZW50KGxheWVySWQsIHN0YXJ0VGltZSkpOworfQorCitDQ0FuaW1hdGlvblN0YXJ0ZWRFdmVu
dDo6Q0NBbmltYXRpb25TdGFydGVkRXZlbnQoaW50IGxheWVySWQsIGRvdWJsZSBzdGFydFRpbWUp
CisgICAgOiBDQ0FuaW1hdGlvbkV2ZW50KGxheWVySWQpCisgICAgLCBtX3N0YXJ0VGltZShzdGFy
dFRpbWUpCit7Cit9CisKK0NDQW5pbWF0aW9uU3RhcnRlZEV2ZW50Ojp+Q0NBbmltYXRpb25TdGFy
dGVkRXZlbnQoKQoreworfQorCitDQ0FuaW1hdGlvbkV2ZW50OjpUeXBlIENDQW5pbWF0aW9uU3Rh
cnRlZEV2ZW50Ojp0eXBlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gU3RhcnRlZDsKK30KKworUGFz
c093blB0cjxDQ0FuaW1hdGlvbkZpbmlzaGVkRXZlbnQ+IENDQW5pbWF0aW9uRmluaXNoZWRFdmVu
dDo6Y3JlYXRlKGludCBsYXllcklkLCBpbnQgYW5pbWF0aW9uSWQpCit7CisgICAgcmV0dXJuIGFk
b3B0UHRyKG5ldyBDQ0FuaW1hdGlvbkZpbmlzaGVkRXZlbnQobGF5ZXJJZCwgYW5pbWF0aW9uSWQp
KTsKK30KKworQ0NBbmltYXRpb25GaW5pc2hlZEV2ZW50OjpDQ0FuaW1hdGlvbkZpbmlzaGVkRXZl
bnQoaW50IGxheWVySWQsIGludCBhbmltYXRpb25JZCkKKyAgICA6IENDQW5pbWF0aW9uRXZlbnQo
bGF5ZXJJZCkKKyAgICAsIG1fYW5pbWF0aW9uSWQoYW5pbWF0aW9uSWQpCit7Cit9CisKK0NDQW5p
bWF0aW9uRmluaXNoZWRFdmVudDo6fkNDQW5pbWF0aW9uRmluaXNoZWRFdmVudCgpCit7Cit9CisK
K0NDQW5pbWF0aW9uRXZlbnQ6OlR5cGUgQ0NBbmltYXRpb25GaW5pc2hlZEV2ZW50Ojp0eXBlKCkg
Y29uc3QKK3sKKyAgICByZXR1cm4gRmluaXNoZWQ7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDQW5pbWF0aW9uRXZlbnRzLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ0FuaW1hdGlvbkV2ZW50cy5oCmluZGV4IGIyMWE3OWUzMTM5N2VjODhl
M2Q1OTRlOTIzMjYzYzFlYjgwMzNlODQuLmZkYWE1ZDIzOWNkOWI1YjE4YjNiZDgwNTI0NGZhZDQw
Mjk1OTkzOGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDQW5pbWF0aW9uRXZlbnRzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NBbmltYXRpb25FdmVudHMuaApAQCAtMjUsMjAgKzI1
LDY5IEBACiAjaWZuZGVmIENDQW5pbWF0aW9uRXZlbnRzX2gKICNkZWZpbmUgQ0NBbmltYXRpb25F
dmVudHNfaAogCisjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KICNpbmNsdWRlIDx3dGYvVmVj
dG9yLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgQ0NBbmltYXRpb25TdGFydGVk
RXZlbnQ7CitjbGFzcyBDQ0FuaW1hdGlvbkZpbmlzaGVkRXZlbnQ7CisKK2NsYXNzIENDQW5pbWF0
aW9uRXZlbnQgeworcHVibGljOgorICAgIGVudW0gVHlwZSB7IFN0YXJ0ZWQsIEZpbmlzaGVkIH07
CisKKyAgICB2aXJ0dWFsIH5DQ0FuaW1hdGlvbkV2ZW50KCk7CisKKyAgICB2aXJ0dWFsIFR5cGUg
dHlwZSgpIGNvbnN0ID0gMDsKKworICAgIGludCBsYXllcklkKCkgY29uc3QgeyByZXR1cm4gbV9s
YXllcklkOyB9CisKKyAgICBjb25zdCBDQ0FuaW1hdGlvblN0YXJ0ZWRFdmVudCogdG9BbmltYXRp
b25TdGFydGVkRXZlbnQoKSBjb25zdDsKKyAgICBjb25zdCBDQ0FuaW1hdGlvbkZpbmlzaGVkRXZl
bnQqIHRvQW5pbWF0aW9uRmluaXNoZWRFdmVudCgpIGNvbnN0OworCitwcm90ZWN0ZWQ6CisgICAg
Q0NBbmltYXRpb25FdmVudChpbnQgbGF5ZXJJZCk7CisKK3ByaXZhdGU6CisgICAgaW50IG1fbGF5
ZXJJZDsKK307CisKKy8vIEluZGljYXRlcyB0aGF0IGFuIGFuaW1hdGlvbiBoYXMgc3RhcnRlZCBv
biBhIHBhcnRpY3VsYXIgbGF5ZXIuCitjbGFzcyBDQ0FuaW1hdGlvblN0YXJ0ZWRFdmVudCA6IHB1
YmxpYyBDQ0FuaW1hdGlvbkV2ZW50IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc093blB0cjxD
Q0FuaW1hdGlvblN0YXJ0ZWRFdmVudD4gY3JlYXRlKGludCBsYXllcklkLCBkb3VibGUgc3RhcnRU
aW1lKTsKKworICAgIHZpcnR1YWwgfkNDQW5pbWF0aW9uU3RhcnRlZEV2ZW50KCk7CisKKyAgICB2
aXJ0dWFsIFR5cGUgdHlwZSgpIGNvbnN0OworCisgICAgZG91YmxlIHN0YXJ0VGltZSgpIGNvbnN0
IHsgcmV0dXJuIG1fc3RhcnRUaW1lOyB9CisKK3ByaXZhdGU6CisgICAgQ0NBbmltYXRpb25TdGFy
dGVkRXZlbnQoaW50IGxheWVySWQsIGRvdWJsZSBzdGFydFRpbWUpOworCisgICAgZG91YmxlIG1f
c3RhcnRUaW1lOworfTsKKwogLy8gSW5kaWNhdGVzIHRoYXQgYW4gYW5pbWF0aW9uIGhhcyBzdGFy
dGVkIG9uIGEgcGFydGljdWxhciBsYXllci4KLXN0cnVjdCBDQ0FuaW1hdGlvblN0YXJ0ZWRFdmVu
dCB7Ci0gICAgQ0NBbmltYXRpb25TdGFydGVkRXZlbnQoaW50IGxheWVySUQsIGRvdWJsZSB0aW1l
KQotICAgICAgICA6IGxheWVySUQobGF5ZXJJRCkKLSAgICAgICAgLCB0aW1lKHRpbWUpIHsgfQot
ICAgIGludCBsYXllcklEOwotICAgIGRvdWJsZSB0aW1lOworY2xhc3MgQ0NBbmltYXRpb25GaW5p
c2hlZEV2ZW50IDogcHVibGljIENDQW5pbWF0aW9uRXZlbnQgeworcHVibGljOgorICAgIHN0YXRp
YyBQYXNzT3duUHRyPENDQW5pbWF0aW9uRmluaXNoZWRFdmVudD4gY3JlYXRlKGludCBsYXllcklk
LCBpbnQgYW5pbWF0aW9uSWQpOworCisgICAgdmlydHVhbCB+Q0NBbmltYXRpb25GaW5pc2hlZEV2
ZW50KCk7CisKKyAgICB2aXJ0dWFsIFR5cGUgdHlwZSgpIGNvbnN0OworCisgICAgaW50IGFuaW1h
dGlvbklkKCkgY29uc3QgeyByZXR1cm4gbV9hbmltYXRpb25JZDsgfQorCitwcml2YXRlOgorICAg
IENDQW5pbWF0aW9uRmluaXNoZWRFdmVudChpbnQgbGF5ZXJJZCwgaW50IGFuaW1hdGlvbklkKTsK
KworICAgIGludCBtX2FuaW1hdGlvbklkOwogfTsKIAotdHlwZWRlZiBWZWN0b3I8Q0NBbmltYXRp
b25TdGFydGVkRXZlbnQ+IENDQW5pbWF0aW9uRXZlbnRzVmVjdG9yOwordHlwZWRlZiBWZWN0b3I8
T3duUHRyPENDQW5pbWF0aW9uRXZlbnQ+ID4gQ0NBbmltYXRpb25FdmVudHNWZWN0b3I7CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllckFuaW1hdGlvbkNvbnRyb2xsZXJJbXBsLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJB
bmltYXRpb25Db250cm9sbGVySW1wbC5jcHAKaW5kZXggMjA5NmNlMzk4MmNlODkwNTNmOTdhNDMx
Y2M0NmU0YTk3MjkzNjUxNy4uZThkNmJjN2VmNzVhYzQwM2QxMWNhNjExNTQ4OGVjYzcxZDU2MzVk
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NMYXllckFuaW1hdGlvbkNvbnRyb2xsZXJJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyQW5pbWF0aW9uQ29udHJvbGxl
ckltcGwuY3BwCkBAIC01Niw3ICs1Niw3IEBAIHZvaWQgQ0NMYXllckFuaW1hdGlvbkNvbnRyb2xs
ZXJJbXBsOjphbmltYXRlKGRvdWJsZSBmcmFtZUJlZ2luVGltZVNlY3MsIENDQW5pbWF0CiAgICAg
c3RhcnRBbmltYXRpb25zV2FpdGluZ0ZvclRhcmdldEF2YWlsYWJpbGl0eShmcmFtZUJlZ2luVGlt
ZVNlY3MsIGV2ZW50cyk7CiAgICAgcmVzb2x2ZUNvbmZsaWN0cyhmcmFtZUJlZ2luVGltZVNlY3Mp
OwogICAgIHRpY2tBbmltYXRpb25zKGZyYW1lQmVnaW5UaW1lU2Vjcyk7Ci0gICAgcHVyZ2VGaW5p
c2hlZEFuaW1hdGlvbnMoKTsKKyAgICBwdXJnZUZpbmlzaGVkQW5pbWF0aW9ucyhldmVudHMpOwog
ICAgIHN0YXJ0QW5pbWF0aW9uc1dhaXRpbmdGb3JUYXJnZXRBdmFpbGFiaWxpdHkoZnJhbWVCZWdp
blRpbWVTZWNzLCBldmVudHMpOwogfQogCkBAIC04OSw3ICs4OSw3IEBAIHZvaWQgQ0NMYXllckFu
aW1hdGlvbkNvbnRyb2xsZXJJbXBsOjpzdGFydEFuaW1hdGlvbnNXYWl0aW5nRm9yTmV4dFRpY2so
ZG91YmxlIG5vCiAgICAgICAgIGlmIChtX2FjdGl2ZUFuaW1hdGlvbnNbaV0tPnJ1blN0YXRlKCkg
PT0gQ0NBY3RpdmVBbmltYXRpb246OldhaXRpbmdGb3JOZXh0VGljaykgewogICAgICAgICAgICAg
bV9hY3RpdmVBbmltYXRpb25zW2ldLT5zZXRSdW5TdGF0ZShDQ0FjdGl2ZUFuaW1hdGlvbjo6UnVu
bmluZywgbm93KTsKICAgICAgICAgICAgIG1fYWN0aXZlQW5pbWF0aW9uc1tpXS0+c2V0U3RhcnRU
aW1lKG5vdyk7Ci0gICAgICAgICAgICBldmVudHMuYXBwZW5kKENDQW5pbWF0aW9uU3RhcnRlZEV2
ZW50KG1fY2xpZW50LT5pZCgpLCBub3cpKTsKKyAgICAgICAgICAgIGV2ZW50cy5hcHBlbmQoQ0NB
bmltYXRpb25TdGFydGVkRXZlbnQ6OmNyZWF0ZShtX2NsaWVudC0+aWQoKSwgbm93KSk7CiAgICAg
ICAgIH0KICAgICB9CiB9CkBAIC05OSw3ICs5OSw3IEBAIHZvaWQgQ0NMYXllckFuaW1hdGlvbkNv
bnRyb2xsZXJJbXBsOjpzdGFydEFuaW1hdGlvbnNXYWl0aW5nRm9yU3RhcnRUaW1lKGRvdWJsZSBu
CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX2FjdGl2ZUFuaW1hdGlvbnMuc2l6ZSgpOyAr
K2kpIHsKICAgICAgICAgaWYgKG1fYWN0aXZlQW5pbWF0aW9uc1tpXS0+cnVuU3RhdGUoKSA9PSBD
Q0FjdGl2ZUFuaW1hdGlvbjo6V2FpdGluZ0ZvclN0YXJ0VGltZSAmJiBtX2FjdGl2ZUFuaW1hdGlv
bnNbaV0tPnN0YXJ0VGltZSgpIDw9IG5vdykgewogICAgICAgICAgICAgbV9hY3RpdmVBbmltYXRp
b25zW2ldLT5zZXRSdW5TdGF0ZShDQ0FjdGl2ZUFuaW1hdGlvbjo6UnVubmluZywgbm93KTsKLSAg
ICAgICAgICAgIGV2ZW50cy5hcHBlbmQoQ0NBbmltYXRpb25TdGFydGVkRXZlbnQobV9jbGllbnQt
PmlkKCksIG5vdykpOworICAgICAgICAgICAgZXZlbnRzLmFwcGVuZChDQ0FuaW1hdGlvblN0YXJ0
ZWRFdmVudDo6Y3JlYXRlKG1fY2xpZW50LT5pZCgpLCBub3cpKTsKICAgICAgICAgfQogICAgIH0K
IH0KQEAgLTEzNiw3ICsxMzYsNyBAQCB2b2lkIENDTGF5ZXJBbmltYXRpb25Db250cm9sbGVySW1w
bDo6c3RhcnRBbmltYXRpb25zV2FpdGluZ0ZvclRhcmdldEF2YWlsYWJpbGl0eQogICAgICAgICAg
ICAgaWYgKG51bGxJbnRlcnNlY3Rpb24pIHsKICAgICAgICAgICAgICAgICBtX2FjdGl2ZUFuaW1h
dGlvbnNbaV0tPnNldFJ1blN0YXRlKENDQWN0aXZlQW5pbWF0aW9uOjpSdW5uaW5nLCBub3cpOwog
ICAgICAgICAgICAgICAgIG1fYWN0aXZlQW5pbWF0aW9uc1tpXS0+c2V0U3RhcnRUaW1lKG5vdyk7
Ci0gICAgICAgICAgICAgICAgZXZlbnRzLmFwcGVuZChDQ0FuaW1hdGlvblN0YXJ0ZWRFdmVudCht
X2NsaWVudC0+aWQoKSwgbm93KSk7CisgICAgICAgICAgICAgICAgZXZlbnRzLmFwcGVuZChDQ0Fu
aW1hdGlvblN0YXJ0ZWRFdmVudDo6Y3JlYXRlKG1fY2xpZW50LT5pZCgpLCBub3cpKTsKICAgICAg
ICAgICAgICAgICBmb3IgKHNpemVfdCBqID0gaSArIDE7IGogPCBtX2FjdGl2ZUFuaW1hdGlvbnMu
c2l6ZSgpOyArK2opIHsKICAgICAgICAgICAgICAgICAgICAgaWYgKG1fYWN0aXZlQW5pbWF0aW9u
c1tpXS0+Z3JvdXAoKSA9PSBtX2FjdGl2ZUFuaW1hdGlvbnNbal0tPmdyb3VwKCkpIHsKICAgICAg
ICAgICAgICAgICAgICAgICAgIG1fYWN0aXZlQW5pbWF0aW9uc1tqXS0+c2V0UnVuU3RhdGUoQ0NB
Y3RpdmVBbmltYXRpb246OlJ1bm5pbmcsIG5vdyk7CkBAIC0xNjksNyArMTY5LDcgQEAgdm9pZCBD
Q0xheWVyQW5pbWF0aW9uQ29udHJvbGxlckltcGw6OnJlc29sdmVDb25mbGljdHMoZG91YmxlIG5v
dykKICAgICB9CiB9CiAKLXZvaWQgQ0NMYXllckFuaW1hdGlvbkNvbnRyb2xsZXJJbXBsOjpwdXJn
ZUZpbmlzaGVkQW5pbWF0aW9ucygpCit2b2lkIENDTGF5ZXJBbmltYXRpb25Db250cm9sbGVySW1w
bDo6cHVyZ2VGaW5pc2hlZEFuaW1hdGlvbnMoQ0NBbmltYXRpb25FdmVudHNWZWN0b3ImIGV2ZW50
cykKIHsKICAgICAvLyBFYWNoIGl0ZXJhdGlvbiwgbV9hY3RpdmVBbmltYXRpb25zLnNpemUoKSBk
ZWNyZWFzZXMgb3IgaSBpbmNyZW1lbnRzLAogICAgIC8vIGd1YXJhbnRlZWluZyBwcm9ncmVzcyB0
b3dhcmRzIGxvb3AgdGVybWluYXRpb24uCkBAIC0xODYsNiArMTg2LDcgQEAgdm9pZCBDQ0xheWVy
QW5pbWF0aW9uQ29udHJvbGxlckltcGw6OnB1cmdlRmluaXNoZWRBbmltYXRpb25zKCkKICAgICAg
ICAgICAgIH0KICAgICAgICAgfQogICAgICAgICBpZiAoYWxsQW5pbXNXaXRoU2FtZUlkQXJlRmlu
aXNoZWQpIHsKKyAgICAgICAgICAgIGV2ZW50cy5hcHBlbmQoQ0NBbmltYXRpb25GaW5pc2hlZEV2
ZW50OjpjcmVhdGUobV9jbGllbnQtPmlkKCksIG1fYWN0aXZlQW5pbWF0aW9uc1tpXS0+aWQoKSkp
OwogICAgICAgICAgICAgbV9maW5pc2hlZEFuaW1hdGlvbnMuYXBwZW5kKG1fYWN0aXZlQW5pbWF0
aW9uc1tpXS0+c2lnbmF0dXJlKCkpOwogICAgICAgICAgICAgbV9hY3RpdmVBbmltYXRpb25zLnJl
bW92ZShpKTsKICAgICAgICAgfSBlbHNlCkBAIC0xOTgsNiArMTk5LDcgQEAgdm9pZCBDQ0xheWVy
QW5pbWF0aW9uQ29udHJvbGxlckltcGw6OnRpY2tBbmltYXRpb25zKGRvdWJsZSBub3cpCiAgICAg
Zm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX2FjdGl2ZUFuaW1hdGlvbnMuc2l6ZSgpOyArK2kpIHsK
ICAgICAgICAgaWYgKG1fYWN0aXZlQW5pbWF0aW9uc1tpXS0+cnVuU3RhdGUoKSA9PSBDQ0FjdGl2
ZUFuaW1hdGlvbjo6UnVubmluZykgewogICAgICAgICAgICAgZG91YmxlIHRyaW1tZWQgPSBtX2Fj
dGl2ZUFuaW1hdGlvbnNbaV0tPnRyaW1UaW1lVG9DdXJyZW50SXRlcmF0aW9uKG5vdyk7CisKICAg
ICAgICAgICAgIHN3aXRjaCAobV9hY3RpdmVBbmltYXRpb25zW2ldLT50YXJnZXRQcm9wZXJ0eSgp
KSB7CiAKICAgICAgICAgICAgIGNhc2UgQ0NBY3RpdmVBbmltYXRpb246OlRyYW5zZm9ybTogewpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NMYXllckFuaW1hdGlvbkNvbnRyb2xsZXJJbXBsLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyQW5pbWF0aW9uQ29udHJvbGxlckltcGwuaApp
bmRleCAyOTYwNjZkZTAwMmUyNjQ0YTBhZDdhMDY5NDE5NDc5YzAyZDhjYjdlLi4zNTQwMDQ5YjAz
NjFmZGU2MjM5NWFiYzBlNGUxNTE3MDQyZDQ0OGIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyQW5pbWF0aW9uQ29udHJvbGxl
ckltcGwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ0xheWVyQW5pbWF0aW9uQ29udHJvbGxlckltcGwuaApAQCAtODIsNyArODIsNyBAQCBwcml2
YXRlOgogICAgIHZvaWQgc3RhcnRBbmltYXRpb25zV2FpdGluZ0ZvclN0YXJ0VGltZShkb3VibGUg
bm93LCBDQ0FuaW1hdGlvbkV2ZW50c1ZlY3RvciYpOwogICAgIHZvaWQgc3RhcnRBbmltYXRpb25z
V2FpdGluZ0ZvclRhcmdldEF2YWlsYWJpbGl0eShkb3VibGUgbm93LCBDQ0FuaW1hdGlvbkV2ZW50
c1ZlY3RvciYpOwogICAgIHZvaWQgcmVzb2x2ZUNvbmZsaWN0cyhkb3VibGUgbm93KTsKLSAgICB2
b2lkIHB1cmdlRmluaXNoZWRBbmltYXRpb25zKCk7CisgICAgdm9pZCBwdXJnZUZpbmlzaGVkQW5p
bWF0aW9ucyhDQ0FuaW1hdGlvbkV2ZW50c1ZlY3RvciYpOwogCiAgICAgdm9pZCB0aWNrQW5pbWF0
aW9ucyhkb3VibGUgbm93KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllckFuaW1hdGlvbkRlbGVnYXRlLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyQW5pbWF0aW9uRGVs
ZWdhdGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5hNzY0Y2MzN2JkY2M3ZWUzZTg5YTdlODcyYmVkMDI1ZTYyY2Ix
ZGE4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NMYXllckFuaW1hdGlvbkRlbGVnYXRlLmgKQEAgLTAsMCArMSwzOSBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAq
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04KKyAqIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUwor
ICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2lmbmRlZiBDQ0xheWVyQW5pbWF0aW9uRGVsZWdhdGVfaAorI2RlZmlu
ZSBDQ0xheWVyQW5pbWF0aW9uRGVsZWdhdGVfaAorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKKy8v
IFRoaXMgY2xhc3MgaXMgdXNlZCB0byBzZW5kIG5vdGlmaWNhdGlvbnMgd2hlbiBsYXllciBhbmlt
YXRpb25zIGJlZ2luIG9yIGVuZC4KK2NsYXNzIENDTGF5ZXJBbmltYXRpb25EZWxlZ2F0ZSB7Citw
dWJsaWM6CisgICAgdmlydHVhbCB2b2lkIG5vdGlmeUFuaW1hdGlvblN0YXJ0ZWQoZG91YmxlIHRp
bWUpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgbm90aWZ5QW5pbWF0aW9uRmluaXNoZWQoaW50IGFu
aW1hdGlvbklkKSA9IDA7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAv
LyBDQ0xheWVyQW5pbWF0aW9uRGVsZWdhdGVfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5j
cHAKaW5kZXggNTAxZWUxN2RlNjllNGMzODFhNmNhYjRlMTIwYzJiMWEyZmZiYTAxOC4uNjc1OTlj
Y2M1ZTU3N2FkNTIxNDg3ZmJjZDNlNDYwNTQ4YzNhMGUyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVy
VHJlZUhvc3QuY3BwCkBAIC0yNjIsNyArMjYyLDcgQEAgdm9pZCBDQ0xheWVyVHJlZUhvc3Q6OnNl
dE5lZWRzUmVkcmF3KCkKIHZvaWQgQ0NMYXllclRyZWVIb3N0OjpzZXRBbmltYXRpb25FdmVudHMo
UGFzc093blB0cjxDQ0FuaW1hdGlvbkV2ZW50c1ZlY3Rvcj4gZXZlbnRzKQogewogICAgIEFTU0VS
VChDQ1RocmVhZFByb3h5Ojppc01haW5UaHJlYWQoKSk7Ci0gICAgLy8gRklYTUU6IG5lZWQgdG8g
d2FsayB0aGUgdHJlZS4KKyAgICBzZXRBbmltYXRpb25FdmVudHNSZWN1cnNpdmUoKmV2ZW50cywg
bV9yb290TGF5ZXIuZ2V0KCkpOwogfQogCiB2b2lkIENDTGF5ZXJUcmVlSG9zdDo6c2V0Um9vdExh
eWVyKFBhc3NSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gcm9vdExheWVyKQpAQCAtNjQ3LDQgKzY0Nywx
NSBAQCB2b2lkIENDTGF5ZXJUcmVlSG9zdDo6ZGVsZXRlVGV4dHVyZUFmdGVyQ29tbWl0KFBhc3NP
d25QdHI8TWFuYWdlZFRleHR1cmU+IHRleHR1cgogICAgIG1fZGVsZXRlVGV4dHVyZUFmdGVyQ29t
bWl0TGlzdC5hcHBlbmQodGV4dHVyZSk7CiB9CiAKK3ZvaWQgQ0NMYXllclRyZWVIb3N0OjpzZXRB
bmltYXRpb25FdmVudHNSZWN1cnNpdmUoY29uc3QgQ0NBbmltYXRpb25FdmVudHNWZWN0b3ImIGV2
ZW50cywgTGF5ZXJDaHJvbWl1bSogbGF5ZXIpCit7CisgICAgZm9yIChzaXplX3QgZXZlbnRJbmRl
eCA9IDA7IGV2ZW50SW5kZXggPCBldmVudHMuc2l6ZSgpOyArK2V2ZW50SW5kZXgpIHsKKyAgICAg
ICAgaWYgKGxheWVyLT5pZCgpID09IGV2ZW50c1tldmVudEluZGV4XS0+bGF5ZXJJZCgpKQorICAg
ICAgICAgICAgbGF5ZXItPnNldEFuaW1hdGlvbkV2ZW50KCpldmVudHNbZXZlbnRJbmRleF0pOwor
ICAgIH0KKworICAgIGZvciAoc2l6ZV90IGNoaWxkSW5kZXggPSAwOyBjaGlsZEluZGV4IDwgbGF5
ZXItPmNoaWxkcmVuKCkuc2l6ZSgpOyArK2NoaWxkSW5kZXgpCisgICAgICAgIHNldEFuaW1hdGlv
bkV2ZW50c1JlY3Vyc2l2ZShldmVudHMsIGxheWVyLT5jaGlsZHJlbigpW2NoaWxkSW5kZXhdLmdl
dCgpKTsKIH0KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhv
c3QuaAppbmRleCAxNjYyZjUwYzMzODg3OTdjOGVkNzZkYjVlNjk1NTI3YjM0ODk4OWI4Li44OWFk
ZTU1OGJiOTZjMTFiNjk1MmM3YThiMWRkNGQ0ZWY2NGZmMDI0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVy
VHJlZUhvc3QuaApAQCAtMjE4LDYgKzIxOCw4IEBAIHByaXZhdGU6CiAgICAgdm9pZCByZXNlcnZl
VGV4dHVyZXMoKTsKICAgICB2b2lkIGNsZWFyUGVuZGluZ1VwZGF0ZSgpOwogCisgICAgdm9pZCBz
ZXRBbmltYXRpb25FdmVudHNSZWN1cnNpdmUoY29uc3QgQ0NBbmltYXRpb25FdmVudHNWZWN0b3Im
LCBMYXllckNocm9taXVtKik7CisKICAgICBpbnQgbV9jb21wb3NpdG9ySWRlbnRpZmllcjsKIAog
ICAgIGJvb2wgbV9hbmltYXRpbmc7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3Rlc3RzL0NDTGF5ZXJUcmVlSG9zdFRlc3QuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90
ZXN0cy9DQ0xheWVyVHJlZUhvc3RUZXN0LmNwcAppbmRleCAxMGNmYTY5MzExMzVmNTQ3NGFjNDc0
ZTI1Y2E0MjNhMGUxN2Q5NTkzLi5jZWQ2MmNjMDZkZDRjNWI3Zjg3Y2U1ZmE4NjFiMWQxMjg5NTRj
NDI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJUcmVl
SG9zdFRlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NMYXllclRy
ZWVIb3N0VGVzdC5jcHAKQEAgLTM4LDYgKzM4LDcgQEAKICNpbmNsdWRlICJXZWJLaXQuaCIKICNp
bmNsdWRlICJjYy9DQ0FjdGl2ZUFuaW1hdGlvbi5oIgogI2luY2x1ZGUgImNjL0NDTGF5ZXJBbmlt
YXRpb25Db250cm9sbGVyLmgiCisjaW5jbHVkZSAiY2MvQ0NMYXllckFuaW1hdGlvbkRlbGVnYXRl
LmgiCiAjaW5jbHVkZSAiY2MvQ0NMYXllckltcGwuaCIKICNpbmNsdWRlICJjYy9DQ0xheWVyVHJl
ZUhvc3RJbXBsLmgiCiAjaW5jbHVkZSAiY2MvQ0NTY29wZWRUaHJlYWRQcm94eS5oIgpAQCAtNTks
NyArNjAsNyBAQCB1c2luZyBuYW1lc3BhY2UgV1RGOwogbmFtZXNwYWNlIHsKIAogLy8gVXNlZCBi
eSB0ZXN0IHN0dWJzIHRvIG5vdGlmeSB0aGUgdGVzdCB3aGVuIHNvbWV0aGluZyBpbnRlcmVzdGlu
ZyBoYXBwZW5zLgotY2xhc3MgVGVzdEhvb2tzIHsKK2NsYXNzIFRlc3RIb29rcyA6IHB1YmxpYyBD
Q0xheWVyQW5pbWF0aW9uRGVsZWdhdGUgewogcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBiZWdp
bkNvbW1pdE9uQ0NUaHJlYWQoQ0NMYXllclRyZWVIb3N0SW1wbCopIHsgfQogICAgIHZpcnR1YWwg
dm9pZCBjb21taXRDb21wbGV0ZU9uQ0NUaHJlYWQoQ0NMYXllclRyZWVIb3N0SW1wbCopIHsgfQpA
QCAtNjgsNiArNjksMTAgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBhcHBseVNjcm9sbEFu
ZFNjYWxlKGNvbnN0IEludFNpemUmLCBmbG9hdCkgeyB9CiAgICAgdmlydHVhbCB2b2lkIHVwZGF0
ZUFuaW1hdGlvbnMoZG91YmxlIGZyYW1lQmVnaW5UaW1lKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQg
bGF5b3V0KCkgeyB9CisKKyAgICAvLyBJbXBsZW1lbnRhdGlvbiBvZiBDQ0xheWVyQW5pbWF0aW9u
RGVsZWdhdGUKKyAgICB2aXJ0dWFsIHZvaWQgbm90aWZ5QW5pbWF0aW9uU3RhcnRlZChkb3VibGUg
dGltZSkgeyB9CisgICAgdmlydHVhbCB2b2lkIG5vdGlmeUFuaW1hdGlvbkZpbmlzaGVkKGludCBh
bmltYXRpb25JZCkgeyB9CiB9OwogCiAvLyBBZGFwdHMgQ0NMYXllclRyZWVIb3N0SW1wbCBmb3Ig
dGVzdC4gUnVucyByZWFsIGNvZGUsIHRoZW4gaW52b2tlcyB0ZXN0IGhvb2tzLgpAQCAtMTMwLDYg
KzEzNSw4IEBAIHB1YmxpYzoKICAgICAgICAgLy8gTGF5ZXJUcmVlSG9zdEltcGwgd29uJ3QgZHJh
dyBpZiBpdCBoYXMgMXgxIHZpZXdwb3J0LgogICAgICAgICBsYXllclRyZWVIb3N0LT5zZXRWaWV3
cG9ydFNpemUoSW50U2l6ZSgxLCAxKSk7CiAKKyAgICAgICAgbGF5ZXJUcmVlSG9zdC0+cm9vdExh
eWVyKCktPnNldExheWVyQW5pbWF0aW9uRGVsZWdhdGUodGVzdEhvb2tzKTsKKwogICAgICAgICBy
ZXR1cm4gbGF5ZXJUcmVlSG9zdC5yZWxlYXNlKCk7CiAgICAgfQogCkBAIC04MjcsNyArODM0LDgg
QEAgY2xhc3MgQ0NMYXllclRyZWVIb3N0VGVzdEFkZEFuaW1hdGlvbiA6IHB1YmxpYyBDQ0xheWVy
VHJlZUhvc3RUZXN0VGhyZWFkT25seSB7CiBwdWJsaWM6CiAgICAgQ0NMYXllclRyZWVIb3N0VGVz
dEFkZEFuaW1hdGlvbigpCiAgICAgICAgIDogbV9udW1BbmltYXRlcygwKQotICAgICAgICAsIG1f
bGF5ZXJUcmVlSG9zdEltcGwoMCkKKyAgICAgICAgLCBtX3JlY2VpdmVkQW5pbWF0aW9uU3RhcnRl
ZE5vdGlmaWNhdGlvbihmYWxzZSkKKyAgICAgICAgLCBtX3JlY2VpdmVkQW5pbWF0aW9uRmluaXNo
ZWROb3RpZmljYXRpb24oZmFsc2UpCiAgICAgewogICAgIH0KIApAQCAtODQ1LDE2ICs4NTMsMjkg
QEAgcHVibGljOgogICAgICAgICAgICAgbV9udW1BbmltYXRlcysrOwogICAgICAgICAgICAgcmV0
dXJuOwogICAgICAgICB9CisgICAgICAgIEVYUEVDVF9UUlVFKG1fcmVjZWl2ZWRBbmltYXRpb25T
dGFydGVkTm90aWZpY2F0aW9uKTsKKyAgICAgICAgRVhQRUNUX1RSVUUobV9yZWNlaXZlZEFuaW1h
dGlvbkZpbmlzaGVkTm90aWZpY2F0aW9uKTsKICAgICAgICAgZW5kVGVzdCgpOwogICAgIH0KIAor
ICAgIHZpcnR1YWwgdm9pZCBub3RpZnlBbmltYXRpb25TdGFydGVkKGRvdWJsZSkKKyAgICB7Cisg
ICAgICAgIG1fcmVjZWl2ZWRBbmltYXRpb25TdGFydGVkTm90aWZpY2F0aW9uID0gdHJ1ZTsKKyAg
ICB9CisKKyAgICB2aXJ0dWFsIHZvaWQgbm90aWZ5QW5pbWF0aW9uRmluaXNoZWQoaW50KQorICAg
IHsKKyAgICAgICAgbV9yZWNlaXZlZEFuaW1hdGlvbkZpbmlzaGVkTm90aWZpY2F0aW9uID0gdHJ1
ZTsKKyAgICB9CisKICAgICB2aXJ0dWFsIHZvaWQgYWZ0ZXJUZXN0KCkKICAgICB7CiAgICAgfQog
CiBwcml2YXRlOgogICAgIGludCBtX251bUFuaW1hdGVzOwotICAgIENDTGF5ZXJUcmVlSG9zdElt
cGwqIG1fbGF5ZXJUcmVlSG9zdEltcGw7CisgICAgYm9vbCBtX3JlY2VpdmVkQW5pbWF0aW9uU3Rh
cnRlZE5vdGlmaWNhdGlvbjsKKyAgICBib29sIG1fcmVjZWl2ZWRBbmltYXRpb25GaW5pc2hlZE5v
dGlmaWNhdGlvbjsKIH07CiAKIFRFU1RfRihDQ0xheWVyVHJlZUhvc3RUZXN0QWRkQW5pbWF0aW9u
LCBydW5NdWx0aVRocmVhZCkK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>128811</attachid>
            <date>2012-02-24 14:33:08 -0800</date>
            <delta_ts>2012-02-24 18:19:55 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-77646-20120224173306.patch</filename>
            <type>text/plain</type>
            <size>33486</size>
            <attacher>vollick</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA4Nzc0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjgyMzlmNjBlZTRjNGRh
MmNlNTYwZjJjOWY5N2Q0NmM0MmYwZjhjYS4uYzQzYTEwYTg1ZmM1NzhlNTBlY2VlOTQxZjljNjJh
OGJiYmIyY2M2NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc0IEBACisyMDEyLTAyLTI0ICBJYW4g
Vm9sbGljayAgPHZvbGxpY2tAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtjaHJvbWl1bV0gUGx1
bWIgYW5pbWF0aW9uIHN0YXJ0ZWQgbm90aWZpY2F0aW9ucyBmcm9tIENDTGF5ZXJUcmVlSG9zdCB0
byBHcmFwaGljc0xheWVyQ2hyb21pdW0KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTc3NjQ2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgKiBXZWJDb3JlLmd5cGk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vR3JhcGhpY3NMYXllckNocm9taXVtLmNwcDoKKyAgICAgICAgKHN0ZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyQ2hyb21pdW06On5HcmFwaGljc0xheWVyQ2hy
b21pdW0pOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllckNocm9taXVtOjphZGRBbmlt
YXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllckNocm9taXVtOjpwYXVzZUFu
aW1hdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyQ2hyb21pdW06OnJlbW92
ZUFuaW1hdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyQ2hyb21pdW06OnN1
c3BlbmRBbmltYXRpb25zKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJDaHJvbWl1
bTo6cmVzdW1lQW5pbWF0aW9ucyk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyQ2hy
b21pdW06OnVwZGF0ZUxheWVyUHJlc2VydmVzM0QpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NMYXllckNocm9taXVtOjptYXBBbmltYXRpb25OYW1lVG9JZCk6CisgICAgICAgIChXZWJDb3Jl
KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJDaHJvbWl1bTo6bm90aWZ5QW5pbWF0
aW9uU3RhcnRlZCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyQ2hyb21pdW06Om5v
dGlmeUFuaW1hdGlvbkZpbmlzaGVkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9HcmFwaGljc0xheWVyQ2hyb21pdW0uaDoKKyAgICAgICAgKEdyYXBoaWNzTGF5ZXJDaHJv
bWl1bSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJDaHJvbWl1
bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMYXllckNocm9taXVtOjpMYXllckNocm9taXVtKToK
KyAgICAgICAgKFdlYkNvcmU6OkxheWVyQ2hyb21pdW06OnNldEFuaW1hdGlvbkV2ZW50KToKKyAg
ICAgICAgKFdlYkNvcmUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xh
eWVyQ2hyb21pdW0uaDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoTGF5ZXJDaHJvbWl1
bSk6CisgICAgICAgIChXZWJDb3JlOjpMYXllckNocm9taXVtOjpzZXRMYXllckFuaW1hdGlvbkRl
bGVnYXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0FuaW1h
dGlvbkV2ZW50cy5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJD
b3JlOjpDQ0FuaW1hdGlvbkV2ZW50OjpDQ0FuaW1hdGlvbkV2ZW50KToKKyAgICAgICAgKFdlYkNv
cmU6OkNDQW5pbWF0aW9uRXZlbnQ6On5DQ0FuaW1hdGlvbkV2ZW50KToKKyAgICAgICAgKFdlYkNv
cmU6OkNDQW5pbWF0aW9uRXZlbnQ6OnRvQW5pbWF0aW9uU3RhcnRlZEV2ZW50KToKKyAgICAgICAg
KFdlYkNvcmU6OkNDQW5pbWF0aW9uRXZlbnQ6OnRvQW5pbWF0aW9uRmluaXNoZWRFdmVudCk6Cisg
ICAgICAgIChXZWJDb3JlOjpDQ0FuaW1hdGlvblN0YXJ0ZWRFdmVudDo6Y3JlYXRlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNDQW5pbWF0aW9uU3RhcnRlZEV2ZW50OjpDQ0FuaW1hdGlvblN0YXJ0ZWRF
dmVudCk6CisgICAgICAgIChXZWJDb3JlOjpDQ0FuaW1hdGlvblN0YXJ0ZWRFdmVudDo6fkNDQW5p
bWF0aW9uU3RhcnRlZEV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkNDQW5pbWF0aW9uU3RhcnRl
ZEV2ZW50Ojp0eXBlKToKKyAgICAgICAgKFdlYkNvcmU6OkNDQW5pbWF0aW9uRmluaXNoZWRFdmVu
dDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkNDQW5pbWF0aW9uRmluaXNoZWRFdmVudDo6
Q0NBbmltYXRpb25GaW5pc2hlZEV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkNDQW5pbWF0aW9u
RmluaXNoZWRFdmVudDo6fkNDQW5pbWF0aW9uRmluaXNoZWRFdmVudCk6CisgICAgICAgIChXZWJD
b3JlOjpDQ0FuaW1hdGlvbkZpbmlzaGVkRXZlbnQ6OnR5cGUpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDQW5pbWF0aW9uRXZlbnRzLmg6CisgICAgICAgIChXZWJD
b3JlKToKKyAgICAgICAgKENDQW5pbWF0aW9uRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6Q0NB
bmltYXRpb25FdmVudDo6bGF5ZXJJZCk6CisgICAgICAgIChDQ0FuaW1hdGlvblN0YXJ0ZWRFdmVu
dCk6CisgICAgICAgIChXZWJDb3JlOjpDQ0FuaW1hdGlvblN0YXJ0ZWRFdmVudDo6c3RhcnRUaW1l
KToKKyAgICAgICAgKENDQW5pbWF0aW9uRmluaXNoZWRFdmVudCk6CisgICAgICAgIChXZWJDb3Jl
OjpDQ0FuaW1hdGlvbkZpbmlzaGVkRXZlbnQ6OmFuaW1hdGlvbklkKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyQW5pbWF0aW9uQ29udHJvbGxlckltcGwu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllckFuaW1hdGlvbkNvbnRyb2xsZXJJbXBsOjph
bmltYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJBbmltYXRpb25Db250cm9sbGVySW1w
bDo6c3RhcnRBbmltYXRpb25zV2FpdGluZ0Zvck5leHRUaWNrKToKKyAgICAgICAgKFdlYkNvcmU6
OkNDTGF5ZXJBbmltYXRpb25Db250cm9sbGVySW1wbDo6c3RhcnRBbmltYXRpb25zV2FpdGluZ0Zv
clN0YXJ0VGltZSk6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVyQW5pbWF0aW9uQ29udHJvbGxl
ckltcGw6OnN0YXJ0QW5pbWF0aW9uc1dhaXRpbmdGb3JUYXJnZXRBdmFpbGFiaWxpdHkpOgorICAg
ICAgICAoV2ViQ29yZTo6Q0NMYXllckFuaW1hdGlvbkNvbnRyb2xsZXJJbXBsOjpwdXJnZUZpbmlz
aGVkQW5pbWF0aW9ucyk6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVyQW5pbWF0aW9uQ29udHJv
bGxlckltcGw6OnRpY2tBbmltYXRpb25zKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ0xheWVyQW5pbWF0aW9uQ29udHJvbGxlckltcGwuaDoKKyAgICAgICAgKEND
TGF5ZXJBbmltYXRpb25Db250cm9sbGVySW1wbCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NMYXllckFuaW1hdGlvbkRlbGVnYXRlLmg6IENvcGllZCBmcm9tIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDQW5pbWF0aW9uRXZl
bnRzLmguCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKENDTGF5ZXJBbmltYXRpb25EZWxl
Z2F0ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRy
ZWVIb3N0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJUcmVlSG9zdDo6c2V0QW5pbWF0
aW9uRXZlbnRzKToKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJUcmVlSG9zdDo6c2V0QW5pbWF0
aW9uRXZlbnRzUmVjdXJzaXZlKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5oOgorCiAyMDEyLTAyLTI0
ICBSb2JpbiBDYW8gIDxyb2Jpbi5jYW9AdG9yY2htb2JpbGUuY29tLmNuPgogCiAgICAgICAgIFtC
bGFja0JlcnJ5XSBVcHN0cmVhbSBJbWFnZUJsYWNrQmVycnkgaW4gcGxhdGZvcm0vZ3JhcGhpY3Mv
YmxhY2tiZXJyeQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cg
Yi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwppbmRleCA3OTdiMzFjNmMxOTQ3NDk3
YWMwODg2NzllY2ZjNTMwNDkxNzA3ZWE1Li42ODZlMDczMDE1ODQ2NDY2N2JiZjMwZGZmZGE0MzZm
NzRhZDk4ZmMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwor
KysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIxIEBACisy
MDEyLTAyLTI0ICBJYW4gVm9sbGljayAgPHZvbGxpY2tAY2hyb21pdW0ub3JnPgorCisgICAgICAg
IFtjaHJvbWl1bV0gUGx1bWIgYW5pbWF0aW9uIHN0YXJ0ZWQgbm90aWZpY2F0aW9ucyBmcm9tIEND
TGF5ZXJUcmVlSG9zdCB0byBHcmFwaGljc0xheWVyQ2hyb21pdW0KKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc3NjQ2CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiB0ZXN0cy9DQ0xheWVyVHJlZUhvc3RUZXN0
LmNwcDoKKyAgICAgICAgKFRlc3RIb29rcyk6CisgICAgICAgIChXVEY6OlRlc3RIb29rczo6bm90
aWZ5QW5pbWF0aW9uU3RhcnRlZCk6CisgICAgICAgIChXVEY6OlRlc3RIb29rczo6bm90aWZ5QW5p
bWF0aW9uRmluaXNoZWQpOgorICAgICAgICAoV1RGOjpNb2NrTGF5ZXJUcmVlSG9zdDo6Y3JlYXRl
KToKKyAgICAgICAgKFdURjo6Q0NMYXllclRyZWVIb3N0VGVzdEFkZEFuaW1hdGlvbjo6Q0NMYXll
clRyZWVIb3N0VGVzdEFkZEFuaW1hdGlvbik6CisgICAgICAgIChXVEY6OkNDTGF5ZXJUcmVlSG9z
dFRlc3RBZGRBbmltYXRpb246OmFuaW1hdGVMYXllcnMpOgorICAgICAgICAoV1RGOjpDQ0xheWVy
VHJlZUhvc3RUZXN0QWRkQW5pbWF0aW9uOjpub3RpZnlBbmltYXRpb25TdGFydGVkKToKKyAgICAg
ICAgKENDTGF5ZXJUcmVlSG9zdFRlc3RBZGRBbmltYXRpb24pOgorICAgICAgICAoV1RGOjpDQ0xh
eWVyVHJlZUhvc3RUZXN0QWRkQW5pbWF0aW9uOjpub3RpZnlBbmltYXRpb25GaW5pc2hlZCk6CisK
IDIwMTItMDItMjQgIFNoaW55YSBLYXdhbmFrYSAgPHNoaW55YWtAY2hyb21pdW0ub3JnPgogCiAg
ICAgICAgIFNwZWxsQ2hlY2tSZXF1ZXN0IG5lZWRzIHRvIGtub3cgdGhlIGNvbnRleHQgd2hlcmUg
dGhlIHNwZWxsY2hlY2sgaGFwcGVuZWQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLmd5cGkgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKaW5kZXggZDU3ODYyYTk4MzMx
ZTZjMDVkNzZjNmU0MDhhMGFkODRiZmRmMTUyYS4uZTQ3MmU3MTQwYjI0NWU5NTRiNWQwMGFlMDRl
NmVkY2E4Yzg1NTczNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCisr
KyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQpAQCAtMzI1MSw3ICszMjUxLDggQEAKICAg
ICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0FjdGl2ZUFuaW1hdGlv
bi5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0FuaW1h
dGlvbkN1cnZlLmNwcCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NBbmltYXRpb25DdXJ2ZS5oJywKLSAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ0FuaW1hdGlvblJlc3VsdHMuaCcsCisgICAgICAgICAgICAncGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NBbmltYXRpb25FdmVudHMuY3BwJywKKyAgICAgICAgICAg
ICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0FuaW1hdGlvbkV2ZW50cy5oJywKICAg
ICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0NhbnZhc0RyYXdRdWFk
LmNwcCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NDYW52
YXNEcmF3UXVhZC5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ0NhbnZhc0xheWVySW1wbC5jcHAnLApAQCAtMzI3NSw2ICszMjc2LDcgQEAKICAgICAgICAg
ICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyQW5pbWF0aW9uQ29udHJv
bGxlci5jcHAnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
TGF5ZXJBbmltYXRpb25Db250cm9sbGVySW1wbC5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyQW5pbWF0aW9uQ29udHJvbGxlckltcGwuY3BwJywK
KyAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyQW5pbWF0
aW9uRGVsZWdhdGUuaCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NMYXllckltcGwuY3BwJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ0xheWVySW1wbC5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ0xheWVySXRlcmF0b3IuY3BwJywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0dyYXBoaWNzTGF5ZXJDaHJvbWl1bS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9HcmFwaGljc0xheWVy
Q2hyb21pdW0uY3BwCmluZGV4IGNkZWNmNTkxNzM5ODY3MmU1YmRhZGI0YjExZDdlYzMyOTVjYmVk
NTguLjJkYmQwYTMwNDllN2FkMmUwZTEzNzQ2MmU5NDk3YjJmZDg1ZDAzYWEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0dyYXBoaWNzTGF5ZXJD
aHJvbWl1bS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vR3JhcGhpY3NMYXllckNocm9taXVtLmNwcApAQCAtNjIsNyArNjIsOCBAQAogdXNpbmcgbmFt
ZXNwYWNlIHN0ZDsKIAogbmFtZXNwYWNlIHsKLXN0YXRpYyBpbnQgc19uZXh0R3JvdXBJZCA9IDA7
CitzdGF0aWMgaW50IHNfbmV4dEdyb3VwSWQgPSAxOworc3RhdGljIGludCBzX25leHRBbmltYXRp
b25JZCA9IDE7CiB9CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTg4LDExICs4OSwyMCBAQCBH
cmFwaGljc0xheWVyQ2hyb21pdW06On5HcmFwaGljc0xheWVyQ2hyb21pdW0oKQogICAgIGlmICht
X2xheWVyKSB7CiAgICAgICAgIG1fbGF5ZXItPmNsZWFyRGVsZWdhdGUoKTsKICAgICAgICAgbV9s
YXllci0+Y2xlYXJSZW5kZXJTdXJmYWNlKCk7CisgICAgICAgIC8vIFByaW1hcnkgbGF5ZXIgbWF5
IGhhdmUgYXQgb25lIHBvaW50IGJlZW4gbV9sYXllci4gQmUgc3VyZSB0byByZXNldAorICAgICAg
ICAvLyB0aGUgZGVsZWdhdGUsIGp1c3QgaW4gY2FzZS4KKyAgICAgICAgbV9sYXllci0+c2V0TGF5
ZXJBbmltYXRpb25EZWxlZ2F0ZSgwKTsKICAgICB9CisKICAgICBpZiAobV9jb250ZW50c0xheWVy
KQogICAgICAgICBtX2NvbnRlbnRzTGF5ZXItPmNsZWFyUmVuZGVyU3VyZmFjZSgpOwotICAgIGlm
IChtX3RyYW5zZm9ybUxheWVyKQorCisgICAgaWYgKG1fdHJhbnNmb3JtTGF5ZXIpIHsKICAgICAg
ICAgbV90cmFuc2Zvcm1MYXllci0+Y2xlYXJSZW5kZXJTdXJmYWNlKCk7CisgICAgICAgIC8vIFBy
aW1hcnkgbGF5ZXIgbWF5IGhhdmUgc3dpdGNoZWQgZnJvbSBtX2xheWVyIHRvIG1fdHJhbnNmb3Jt
TGF5ZXIuCisgICAgICAgIC8vIEJlIHN1cmUgdG8gcmVzZXQgdGhlIGRlbGVnYXRlLCBqdXN0IGlu
IGNhc2UuCisgICAgICAgIG1fdHJhbnNmb3JtTGF5ZXItPnNldExheWVyQW5pbWF0aW9uRGVsZWdh
dGUoMCk7CisgICAgfQogfQogCiB2b2lkIEdyYXBoaWNzTGF5ZXJDaHJvbWl1bTo6c2V0TmFtZShj
b25zdCBTdHJpbmcmIGluTmFtZSkKQEAgLTM4OCwyNyArMzk4LDI4IEBAIHZvaWQgR3JhcGhpY3NM
YXllckNocm9taXVtOjpzZXRDb250ZW50c1RvQ2FudmFzKFBsYXRmb3JtTGF5ZXIqIHBsYXRmb3Jt
TGF5ZXIpCiAKIGJvb2wgR3JhcGhpY3NMYXllckNocm9taXVtOjphZGRBbmltYXRpb24oY29uc3Qg
S2V5ZnJhbWVWYWx1ZUxpc3QmIHZhbHVlcywgY29uc3QgSW50U2l6ZSYgYm94U2l6ZSwgY29uc3Qg
QW5pbWF0aW9uKiBhbmltYXRpb24sIGNvbnN0IFN0cmluZyYgYW5pbWF0aW9uTmFtZSwgZG91Ymxl
IHRpbWVPZmZzZXQpCiB7Ci0gICAgcmV0dXJuIG1fbGF5ZXItPmFkZEFuaW1hdGlvbih2YWx1ZXMs
IGJveFNpemUsIGFuaW1hdGlvbiwgbWFwQW5pbWF0aW9uTmFtZVRvSWQoYW5pbWF0aW9uTmFtZSks
IHNfbmV4dEdyb3VwSWQrKywgdGltZU9mZnNldCk7CisgICAgcHJpbWFyeUxheWVyKCktPnNldExh
eWVyQW5pbWF0aW9uRGVsZWdhdGUodGhpcyk7CisgICAgcmV0dXJuIHByaW1hcnlMYXllcigpLT5h
ZGRBbmltYXRpb24odmFsdWVzLCBib3hTaXplLCBhbmltYXRpb24sIG1hcEFuaW1hdGlvbk5hbWVU
b0lkKGFuaW1hdGlvbk5hbWUpLCBzX25leHRHcm91cElkKyssIHRpbWVPZmZzZXQpOwogfQogCiB2
b2lkIEdyYXBoaWNzTGF5ZXJDaHJvbWl1bTo6cGF1c2VBbmltYXRpb24oY29uc3QgU3RyaW5nJiBh
bmltYXRpb25OYW1lLCBkb3VibGUgdGltZU9mZnNldCkKIHsKLSAgICBtX2xheWVyLT5wYXVzZUFu
aW1hdGlvbihtYXBBbmltYXRpb25OYW1lVG9JZChhbmltYXRpb25OYW1lKSwgdGltZU9mZnNldCk7
CisgICAgcHJpbWFyeUxheWVyKCktPnBhdXNlQW5pbWF0aW9uKG1hcEFuaW1hdGlvbk5hbWVUb0lk
KGFuaW1hdGlvbk5hbWUpLCB0aW1lT2Zmc2V0KTsKIH0KIAogdm9pZCBHcmFwaGljc0xheWVyQ2hy
b21pdW06OnJlbW92ZUFuaW1hdGlvbihjb25zdCBTdHJpbmcmIGFuaW1hdGlvbk5hbWUpCiB7Ci0g
ICAgbV9sYXllci0+cmVtb3ZlQW5pbWF0aW9uKG1hcEFuaW1hdGlvbk5hbWVUb0lkKGFuaW1hdGlv
bk5hbWUpKTsKKyAgICBwcmltYXJ5TGF5ZXIoKS0+cmVtb3ZlQW5pbWF0aW9uKG1hcEFuaW1hdGlv
bk5hbWVUb0lkKGFuaW1hdGlvbk5hbWUpKTsKIH0KIAogdm9pZCBHcmFwaGljc0xheWVyQ2hyb21p
dW06OnN1c3BlbmRBbmltYXRpb25zKGRvdWJsZSB0aW1lKQogewotICAgIG1fbGF5ZXItPnN1c3Bl
bmRBbmltYXRpb25zKHRpbWUpOworICAgIHByaW1hcnlMYXllcigpLT5zdXNwZW5kQW5pbWF0aW9u
cyh0aW1lKTsKIH0KIAogdm9pZCBHcmFwaGljc0xheWVyQ2hyb21pdW06OnJlc3VtZUFuaW1hdGlv
bnMoKQogewotICAgIG1fbGF5ZXItPnJlc3VtZUFuaW1hdGlvbnMoKTsKKyAgICBwcmltYXJ5TGF5
ZXIoKS0+cmVzdW1lQW5pbWF0aW9ucygpOwogfQogCiB2b2lkIEdyYXBoaWNzTGF5ZXJDaHJvbWl1
bTo6c2V0Q29udGVudHNUb01lZGlhKFBsYXRmb3JtTGF5ZXIqIGxheWVyKQpAQCAtNTY2LDYgKzU3
Nyw3IEBAIHZvaWQgR3JhcGhpY3NMYXllckNocm9taXVtOjp1cGRhdGVMYXllclByZXNlcnZlczNE
KCkKICAgICAgICAgLy8gQ3JlYXRlIHRoZSB0cmFuc2Zvcm0gbGF5ZXIuCiAgICAgICAgIG1fdHJh
bnNmb3JtTGF5ZXIgPSBMYXllckNocm9taXVtOjpjcmVhdGUoKTsKICAgICAgICAgbV90cmFuc2Zv
cm1MYXllci0+c2V0UHJlc2VydmVzM0QodHJ1ZSk7CisgICAgICAgIG1fdHJhbnNmb3JtTGF5ZXIt
PnNldExheWVyQW5pbWF0aW9uRGVsZWdhdGUodGhpcyk7CiAKICAgICAgICAgLy8gQ29weSB0aGUg
cG9zaXRpb24gZnJvbSB0aGlzIGxheWVyLgogICAgICAgICB1cGRhdGVMYXllclBvc2l0aW9uKCk7
CkBAIC01OTgsNiArNjEwLDcgQEAgdm9pZCBHcmFwaGljc0xheWVyQ2hyb21pdW06OnVwZGF0ZUxh
eWVyUHJlc2VydmVzM0QoKQogICAgICAgICAgICAgbV90cmFuc2Zvcm1MYXllci0+cGFyZW50KCkt
PnJlcGxhY2VDaGlsZChtX3RyYW5zZm9ybUxheWVyLmdldCgpLCBtX2xheWVyLmdldCgpKTsKIAog
ICAgICAgICAvLyBSZWxlYXNlIHRoZSB0cmFuc2Zvcm0gbGF5ZXIuCisgICAgICAgIG1fdHJhbnNm
b3JtTGF5ZXItPnNldExheWVyQW5pbWF0aW9uRGVsZWdhdGUoMCk7CiAgICAgICAgIG1fdHJhbnNm
b3JtTGF5ZXIgPSAwOwogCiAgICAgICAgIHVwZGF0ZUxheWVyUG9zaXRpb24oKTsKQEAgLTcyMCw4
ICs3MzMsMjkgQEAgdm9pZCBHcmFwaGljc0xheWVyQ2hyb21pdW06OnBhaW50Q29udGVudHMoR3Jh
cGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBJbnRSZWMKIAogaW50IEdyYXBoaWNzTGF5ZXJD
aHJvbWl1bTo6bWFwQW5pbWF0aW9uTmFtZVRvSWQoY29uc3QgU3RyaW5nJiBhbmltYXRpb25OYW1l
KQogewotICAgIC8vIEZJWE1FOiBuZWVkIHRvIG1haW50YWluIGEgbmFtZSB0byBpZCBtYXBwaW5n
IGluIHRoaXMgY2xhc3MuCi0gICAgcmV0dXJuIDA7CisgICAgaWYgKGFuaW1hdGlvbk5hbWUuaXNF
bXB0eSgpKQorICAgICAgICByZXR1cm4gMDsKKworICAgIGlmICghbV9hbmltYXRpb25JZE1hcC5j
b250YWlucyhhbmltYXRpb25OYW1lKSkKKyAgICAgICAgbV9hbmltYXRpb25JZE1hcC5hZGQoYW5p
bWF0aW9uTmFtZSwgc19uZXh0QW5pbWF0aW9uSWQrKyk7CisKKyAgICByZXR1cm4gbV9hbmltYXRp
b25JZE1hcC5maW5kKGFuaW1hdGlvbk5hbWUpLT5zZWNvbmQ7Cit9CisKK3ZvaWQgR3JhcGhpY3NM
YXllckNocm9taXVtOjpub3RpZnlBbmltYXRpb25TdGFydGVkKGRvdWJsZSBzdGFydFRpbWUpCit7
CisgICAgaWYgKG1fY2xpZW50KQorICAgICAgICBtX2NsaWVudC0+bm90aWZ5QW5pbWF0aW9uU3Rh
cnRlZCh0aGlzLCBzdGFydFRpbWUpOworfQorCit2b2lkIEdyYXBoaWNzTGF5ZXJDaHJvbWl1bTo6
bm90aWZ5QW5pbWF0aW9uRmluaXNoZWQoaW50IGFuaW1hdGlvbklkKQoreworICAgIGZvciAoQW5p
bWF0aW9uSWRNYXA6Oml0ZXJhdG9yIGlkSXRlciA9IG1fYW5pbWF0aW9uSWRNYXAuYmVnaW4oKTsg
aWRJdGVyICE9IG1fYW5pbWF0aW9uSWRNYXAuZW5kKCk7ICsraWRJdGVyKSB7CisgICAgICAgIGlm
IChpZEl0ZXItPnNlY29uZCA9PSBhbmltYXRpb25JZCkgeworICAgICAgICAgICAgbV9hbmltYXRp
b25JZE1hcC5yZW1vdmUoaWRJdGVyKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQor
ICAgIH0KIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vR3JhcGhpY3NMYXllckNocm9taXVtLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9HcmFwaGljc0xheWVy
Q2hyb21pdW0uaAppbmRleCBlYjMxNDZiYmQyYjUzMDg5MmI0YmFhZmMzYmFkYjMzNTRlNDQ3MjIy
Li5kZjFiZjI2YWE3ZjcxN2E3NzZmN2VjOWNkZjY3NDk5ZDM1MDIwZWMyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9HcmFwaGljc0xheWVyQ2hy
b21pdW0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9H
cmFwaGljc0xheWVyQ2hyb21pdW0uaApAQCAtMzcsMTIgKzM3LDE1IEBACiAjaW5jbHVkZSAiTGF5
ZXJDaHJvbWl1bS5oIgogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgogI2luY2x1ZGUgIkdy
YXBoaWNzTGF5ZXIuaCIKKyNpbmNsdWRlICJjYy9DQ0xheWVyQW5pbWF0aW9uRGVsZWdhdGUuaCIK
KworI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xh
c3MgTGF5ZXJDaHJvbWl1bTsKIAotY2xhc3MgR3JhcGhpY3NMYXllckNocm9taXVtIDogcHVibGlj
IEdyYXBoaWNzTGF5ZXIsIHB1YmxpYyBDb250ZW50TGF5ZXJEZWxlZ2F0ZSB7CitjbGFzcyBHcmFw
aGljc0xheWVyQ2hyb21pdW0gOiBwdWJsaWMgR3JhcGhpY3NMYXllciwgcHVibGljIENvbnRlbnRM
YXllckRlbGVnYXRlLCBwdWJsaWMgQ0NMYXllckFuaW1hdGlvbkRlbGVnYXRlIHsKIHB1YmxpYzoK
ICAgICBHcmFwaGljc0xheWVyQ2hyb21pdW0oR3JhcGhpY3NMYXllckNsaWVudCopOwogICAgIHZp
cnR1YWwgfkdyYXBoaWNzTGF5ZXJDaHJvbWl1bSgpOwpAQCAtMTEwLDEwICsxMTMsMTYgQEAgcHVi
bGljOgogICAgIC8vIENvbnRlbnRMYXllckRlbGVnYXRlIGltcGxlbWVudGF0aW9uLgogICAgIHZp
cnR1YWwgdm9pZCBwYWludENvbnRlbnRzKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEludFJlY3Qm
IGNsaXApOwogCisgICAgLy8gQ0NMYXllckFuaW1hdGlvbkRlbGVnYXRlIGltcGxlbWVudGF0aW9u
LgorICAgIHZpcnR1YWwgdm9pZCBub3RpZnlBbmltYXRpb25TdGFydGVkKGRvdWJsZSBzdGFydFRp
bWUpOworICAgIHZpcnR1YWwgdm9pZCBub3RpZnlBbmltYXRpb25GaW5pc2hlZChpbnQgYW5pbWF0
aW9uSWQpOworCiAgICAgLy8gRXhwb3NlZCBmb3IgdGVzdHMuCiAgICAgTGF5ZXJDaHJvbWl1bSog
Y29udGVudHNMYXllcigpIGNvbnN0IHsgcmV0dXJuIG1fY29udGVudHNMYXllci5nZXQoKTsgfQog
CiBwcml2YXRlOgorICAgIHR5cGVkZWYgSGFzaE1hcDxTdHJpbmcsIGludD4gQW5pbWF0aW9uSWRN
YXA7CisKICAgICBMYXllckNocm9taXVtKiBwcmltYXJ5TGF5ZXIoKSBjb25zdCAgeyByZXR1cm4g
bV90cmFuc2Zvcm1MYXllci5nZXQoKSA/IG1fdHJhbnNmb3JtTGF5ZXIuZ2V0KCkgOiBtX2xheWVy
LmdldCgpOyB9CiAgICAgTGF5ZXJDaHJvbWl1bSogaG9zdExheWVyRm9yQ2hpbGRyZW4oKSBjb25z
dDsKICAgICBMYXllckNocm9taXVtKiBsYXllckZvclBhcmVudCgpIGNvbnN0OwpAQCAtMTU2LDYg
KzE2NSw4IEBAIHByaXZhdGU6CiAgICAgQ29udGVudHNMYXllclB1cnBvc2UgbV9jb250ZW50c0xh
eWVyUHVycG9zZTsKICAgICBib29sIG1fY29udGVudHNMYXllckhhc0JhY2tncm91bmRDb2xvciA6
IDE7CiAgICAgYm9vbCBtX2luU2V0Q2hpbGRyZW47CisKKyAgICBBbmltYXRpb25JZE1hcCBtX2Fu
aW1hdGlvbklkTWFwOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJDaHJvbWl1bS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllckNocm9t
aXVtLmNwcAppbmRleCA4ZWVkYTY4YTQ4NzljOWEyYjc2NTQ1NDk0YTExYTA3ZTdkMjk3ZmZhLi5i
ZDY3Yjc1NmY2NjhhNzE1YmMyMTBhYWM5NzYwN2RkMzZhZTcxYWExIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllckNocm9taXVtLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllckNocm9t
aXVtLmNwcApAQCAtMzMsNyArMzMsOSBAQAogI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElO
RykKICNpbmNsdWRlICJMYXllckNocm9taXVtLmgiCiAKKyNpbmNsdWRlICJjYy9DQ0FuaW1hdGlv
bkV2ZW50cy5oIgogI2luY2x1ZGUgImNjL0NDTGF5ZXJBbmltYXRpb25Db250cm9sbGVyLmgiCisj
aW5jbHVkZSAiY2MvQ0NMYXllckFuaW1hdGlvbkRlbGVnYXRlLmgiCiAjaW5jbHVkZSAiY2MvQ0NM
YXllckltcGwuaCIKICNpbmNsdWRlICJjYy9DQ0xheWVyVHJlZUhvc3QuaCIKICNpZiBVU0UoU0tJ
QSkKQEAgLTgyLDYgKzg0LDcgQEAgTGF5ZXJDaHJvbWl1bTo6TGF5ZXJDaHJvbWl1bSgpCiAgICAg
LCBtX3RhcmdldFJlbmRlclN1cmZhY2UoMCkKICAgICAsIG1fY29udGVudHNTY2FsZSgxLjApCiAg
ICAgLCBtX3BhZ2VTY2FsZURpcnR5KGZhbHNlKQorICAgICwgbV9sYXllckFuaW1hdGlvbkRlbGVn
YXRlKDApCiB7CiB9CiAKQEAgLTE0MSw2ICsxNDQsMjUgQEAgYm9vbCBMYXllckNocm9taXVtOjpo
YXNBY3RpdmVBbmltYXRpb24oKSBjb25zdAogICAgIHJldHVybiBtX2xheWVyQW5pbWF0aW9uQ29u
dHJvbGxlci0+aGFzQWN0aXZlQW5pbWF0aW9uKCk7CiB9CiAKK3ZvaWQgTGF5ZXJDaHJvbWl1bTo6
c2V0QW5pbWF0aW9uRXZlbnQoY29uc3QgQ0NBbmltYXRpb25FdmVudCYgZXZlbnQpCit7CisgICAg
c3dpdGNoIChldmVudC50eXBlKCkpIHsKKworICAgIGNhc2UgQ0NBbmltYXRpb25FdmVudDo6U3Rh
cnRlZDogeworICAgICAgICBjb25zdCBDQ0FuaW1hdGlvblN0YXJ0ZWRFdmVudCogc3RhcnRlZEV2
ZW50ID0gZXZlbnQudG9BbmltYXRpb25TdGFydGVkRXZlbnQoKTsKKyAgICAgICAgbV9sYXllckFu
aW1hdGlvbkRlbGVnYXRlLT5ub3RpZnlBbmltYXRpb25TdGFydGVkKHN0YXJ0ZWRFdmVudC0+c3Rh
cnRUaW1lKCkpOworICAgICAgICBicmVhazsKKyAgICB9CisKKyAgICBjYXNlIENDQW5pbWF0aW9u
RXZlbnQ6OkZpbmlzaGVkOiB7CisgICAgICAgIGNvbnN0IENDQW5pbWF0aW9uRmluaXNoZWRFdmVu
dCogZmluaXNoZWRFdmVudCA9IGV2ZW50LnRvQW5pbWF0aW9uRmluaXNoZWRFdmVudCgpOworICAg
ICAgICBtX2xheWVyQW5pbWF0aW9uRGVsZWdhdGUtPm5vdGlmeUFuaW1hdGlvbkZpbmlzaGVkKGZp
bmlzaGVkRXZlbnQtPmFuaW1hdGlvbklkKCkpOworICAgICAgICBicmVhazsKKyAgICB9CisKKyAg
ICB9Cit9CisKIHZvaWQgTGF5ZXJDaHJvbWl1bTo6c2V0SXNOb25Db21wb3NpdGVkQ29udGVudChi
b29sIGlzTm9uQ29tcG9zaXRlZENvbnRlbnQpCiB7CiAgICAgbV9pc05vbkNvbXBvc2l0ZWRDb250
ZW50ID0gaXNOb25Db21wb3NpdGVkQ29udGVudDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyQ2hyb21pdW0uaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyQ2hyb21pdW0uaAppbmRleCA4OTc2
NDdkMmQ1MjYzNWM4MDhiYWE3Mjg0Y2RlYjlhODNjNDMwNDBhLi44ZTUxZTdlOTUzM2M3YjE4NTE3
NWIyNDliMzM3ZDcyZDQ2ZDUxN2YyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9MYXllckNocm9taXVtLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJDaHJvbWl1bS5oCkBAIC01Miw3ICs1Miw5
IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgQ0NBbmltYXRpb25FdmVudDsKIGNs
YXNzIENDTGF5ZXJBbmltYXRpb25Db250cm9sbGVyOworY2xhc3MgQ0NMYXllckFuaW1hdGlvbkRl
bGVnYXRlOwogY2xhc3MgQ0NMYXllckltcGw7CiBjbGFzcyBDQ0xheWVyVHJlZUhvc3Q7CiBjbGFz
cyBDQ1RleHR1cmVVcGRhdGVyOwpAQCAtMjI0LDggKzIyNiwxMyBAQCBwdWJsaWM6CiAKICAgICBD
Q0xheWVyQW5pbWF0aW9uQ29udHJvbGxlciogbGF5ZXJBbmltYXRpb25Db250cm9sbGVyKCkgeyBy
ZXR1cm4gbV9sYXllckFuaW1hdGlvbkNvbnRyb2xsZXIuZ2V0KCk7IH0KICAgICB2b2lkIHNldExh
eWVyQW5pbWF0aW9uQ29udHJvbGxlcihQYXNzT3duUHRyPENDTGF5ZXJBbmltYXRpb25Db250cm9s
bGVyPik7CisKKyAgICB2b2lkIHNldExheWVyQW5pbWF0aW9uRGVsZWdhdGUoQ0NMYXllckFuaW1h
dGlvbkRlbGVnYXRlKiBsYXllckFuaW1hdGlvbkRlbGVnYXRlKSB7IG1fbGF5ZXJBbmltYXRpb25E
ZWxlZ2F0ZSA9IGxheWVyQW5pbWF0aW9uRGVsZWdhdGU7IH0KKwogICAgIGJvb2wgaGFzQWN0aXZl
QW5pbWF0aW9uKCkgY29uc3Q7CiAKKyAgICB2b2lkIHNldEFuaW1hdGlvbkV2ZW50KGNvbnN0IEND
QW5pbWF0aW9uRXZlbnQmKTsKKwogcHJvdGVjdGVkOgogICAgIGZyaWVuZCBjbGFzcyBDQ0xheWVy
SW1wbDsKICAgICBmcmllbmQgY2xhc3MgTGF5ZXJUaWxlckNocm9taXVtOwpAQCAtMzE0LDYgKzMy
MSw4IEBAIHByaXZhdGU6CiAgICAgU3RyaW5nIG1fbmFtZTsKIAogICAgIGJvb2wgbV9wYWdlU2Nh
bGVEaXJ0eTsKKworICAgIENDTGF5ZXJBbmltYXRpb25EZWxlZ2F0ZSogbV9sYXllckFuaW1hdGlv
bkRlbGVnYXRlOwogfTsKIAogdm9pZCBzb3J0TGF5ZXJzKFZlY3RvcjxSZWZQdHI8TGF5ZXJDaHJv
bWl1bT4gPjo6aXRlcmF0b3IsIFZlY3RvcjxSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gPjo6aXRlcmF0
b3IsIHZvaWQqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDQW5pbWF0aW9uRXZlbnRzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDQW5pbWF0aW9uRXZlbnRzLmNwcApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li5kMGQ3MDVkZTA1MjAwMjc0NjdkNWZlYjRkZDUwMzg5NjE0NmRmMjQ0Ci0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NBbmlt
YXRpb25FdmVudHMuY3BwCkBAIC0wLDAgKzEsOTQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
ICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF
IEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICog
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OCisgKiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKyAqIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRl
ICJjb25maWcuaCIKKworI2luY2x1ZGUgImNjL0NDQW5pbWF0aW9uRXZlbnRzLmgiCisKKyNpbmNs
dWRlIDx3dGYvT3duUHRyLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworQ0NBbmltYXRpb25F
dmVudDo6Q0NBbmltYXRpb25FdmVudChpbnQgbGF5ZXJJZCkKKyAgICA6IG1fbGF5ZXJJZChsYXll
cklkKQoreworfQorCitDQ0FuaW1hdGlvbkV2ZW50Ojp+Q0NBbmltYXRpb25FdmVudCgpCit7Cit9
CisKK2NvbnN0IENDQW5pbWF0aW9uU3RhcnRlZEV2ZW50KiBDQ0FuaW1hdGlvbkV2ZW50Ojp0b0Fu
aW1hdGlvblN0YXJ0ZWRFdmVudCgpIGNvbnN0Cit7CisgICAgQVNTRVJUKHR5cGUoKSA9PSBTdGFy
dGVkKTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgQ0NBbmltYXRpb25TdGFydGVkRXZl
bnQqPih0aGlzKTsKK30KKworY29uc3QgQ0NBbmltYXRpb25GaW5pc2hlZEV2ZW50KiBDQ0FuaW1h
dGlvbkV2ZW50Ojp0b0FuaW1hdGlvbkZpbmlzaGVkRXZlbnQoKSBjb25zdAoreworICAgIEFTU0VS
VCh0eXBlKCkgPT0gRmluaXNoZWQpOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCBDQ0Fu
aW1hdGlvbkZpbmlzaGVkRXZlbnQqPih0aGlzKTsKK30KKworUGFzc093blB0cjxDQ0FuaW1hdGlv
blN0YXJ0ZWRFdmVudD4gQ0NBbmltYXRpb25TdGFydGVkRXZlbnQ6OmNyZWF0ZShpbnQgbGF5ZXJJ
ZCwgZG91YmxlIHN0YXJ0VGltZSkKK3sKKyAgICByZXR1cm4gYWRvcHRQdHIobmV3IENDQW5pbWF0
aW9uU3RhcnRlZEV2ZW50KGxheWVySWQsIHN0YXJ0VGltZSkpOworfQorCitDQ0FuaW1hdGlvblN0
YXJ0ZWRFdmVudDo6Q0NBbmltYXRpb25TdGFydGVkRXZlbnQoaW50IGxheWVySWQsIGRvdWJsZSBz
dGFydFRpbWUpCisgICAgOiBDQ0FuaW1hdGlvbkV2ZW50KGxheWVySWQpCisgICAgLCBtX3N0YXJ0
VGltZShzdGFydFRpbWUpCit7Cit9CisKK0NDQW5pbWF0aW9uU3RhcnRlZEV2ZW50Ojp+Q0NBbmlt
YXRpb25TdGFydGVkRXZlbnQoKQoreworfQorCitDQ0FuaW1hdGlvbkV2ZW50OjpUeXBlIENDQW5p
bWF0aW9uU3RhcnRlZEV2ZW50Ojp0eXBlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gU3RhcnRlZDsK
K30KKworUGFzc093blB0cjxDQ0FuaW1hdGlvbkZpbmlzaGVkRXZlbnQ+IENDQW5pbWF0aW9uRmlu
aXNoZWRFdmVudDo6Y3JlYXRlKGludCBsYXllcklkLCBpbnQgYW5pbWF0aW9uSWQpCit7CisgICAg
cmV0dXJuIGFkb3B0UHRyKG5ldyBDQ0FuaW1hdGlvbkZpbmlzaGVkRXZlbnQobGF5ZXJJZCwgYW5p
bWF0aW9uSWQpKTsKK30KKworQ0NBbmltYXRpb25GaW5pc2hlZEV2ZW50OjpDQ0FuaW1hdGlvbkZp
bmlzaGVkRXZlbnQoaW50IGxheWVySWQsIGludCBhbmltYXRpb25JZCkKKyAgICA6IENDQW5pbWF0
aW9uRXZlbnQobGF5ZXJJZCkKKyAgICAsIG1fYW5pbWF0aW9uSWQoYW5pbWF0aW9uSWQpCit7Cit9
CisKK0NDQW5pbWF0aW9uRmluaXNoZWRFdmVudDo6fkNDQW5pbWF0aW9uRmluaXNoZWRFdmVudCgp
Cit7Cit9CisKK0NDQW5pbWF0aW9uRXZlbnQ6OlR5cGUgQ0NBbmltYXRpb25GaW5pc2hlZEV2ZW50
Ojp0eXBlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gRmluaXNoZWQ7Cit9CisKK30gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDQW5pbWF0aW9uRXZlbnRzLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0FuaW1hdGlvbkV2ZW50cy5oCmluZGV4IGIyMWE3OWUz
MTM5N2VjODhlM2Q1OTRlOTIzMjYzYzFlYjgwMzNlODQuLmZkYWE1ZDIzOWNkOWI1YjE4YjNiZDgw
NTI0NGZhZDQwMjk1OTkzOGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDQW5pbWF0aW9uRXZlbnRzLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NBbmltYXRpb25FdmVudHMuaApAQCAt
MjUsMjAgKzI1LDY5IEBACiAjaWZuZGVmIENDQW5pbWF0aW9uRXZlbnRzX2gKICNkZWZpbmUgQ0NB
bmltYXRpb25FdmVudHNfaAogCisjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KICNpbmNsdWRl
IDx3dGYvVmVjdG9yLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgQ0NBbmltYXRp
b25TdGFydGVkRXZlbnQ7CitjbGFzcyBDQ0FuaW1hdGlvbkZpbmlzaGVkRXZlbnQ7CisKK2NsYXNz
IENDQW5pbWF0aW9uRXZlbnQgeworcHVibGljOgorICAgIGVudW0gVHlwZSB7IFN0YXJ0ZWQsIEZp
bmlzaGVkIH07CisKKyAgICB2aXJ0dWFsIH5DQ0FuaW1hdGlvbkV2ZW50KCk7CisKKyAgICB2aXJ0
dWFsIFR5cGUgdHlwZSgpIGNvbnN0ID0gMDsKKworICAgIGludCBsYXllcklkKCkgY29uc3QgeyBy
ZXR1cm4gbV9sYXllcklkOyB9CisKKyAgICBjb25zdCBDQ0FuaW1hdGlvblN0YXJ0ZWRFdmVudCog
dG9BbmltYXRpb25TdGFydGVkRXZlbnQoKSBjb25zdDsKKyAgICBjb25zdCBDQ0FuaW1hdGlvbkZp
bmlzaGVkRXZlbnQqIHRvQW5pbWF0aW9uRmluaXNoZWRFdmVudCgpIGNvbnN0OworCitwcm90ZWN0
ZWQ6CisgICAgQ0NBbmltYXRpb25FdmVudChpbnQgbGF5ZXJJZCk7CisKK3ByaXZhdGU6CisgICAg
aW50IG1fbGF5ZXJJZDsKK307CisKKy8vIEluZGljYXRlcyB0aGF0IGFuIGFuaW1hdGlvbiBoYXMg
c3RhcnRlZCBvbiBhIHBhcnRpY3VsYXIgbGF5ZXIuCitjbGFzcyBDQ0FuaW1hdGlvblN0YXJ0ZWRF
dmVudCA6IHB1YmxpYyBDQ0FuaW1hdGlvbkV2ZW50IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFz
c093blB0cjxDQ0FuaW1hdGlvblN0YXJ0ZWRFdmVudD4gY3JlYXRlKGludCBsYXllcklkLCBkb3Vi
bGUgc3RhcnRUaW1lKTsKKworICAgIHZpcnR1YWwgfkNDQW5pbWF0aW9uU3RhcnRlZEV2ZW50KCk7
CisKKyAgICB2aXJ0dWFsIFR5cGUgdHlwZSgpIGNvbnN0OworCisgICAgZG91YmxlIHN0YXJ0VGlt
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3RhcnRUaW1lOyB9CisKK3ByaXZhdGU6CisgICAgQ0NBbmlt
YXRpb25TdGFydGVkRXZlbnQoaW50IGxheWVySWQsIGRvdWJsZSBzdGFydFRpbWUpOworCisgICAg
ZG91YmxlIG1fc3RhcnRUaW1lOworfTsKKwogLy8gSW5kaWNhdGVzIHRoYXQgYW4gYW5pbWF0aW9u
IGhhcyBzdGFydGVkIG9uIGEgcGFydGljdWxhciBsYXllci4KLXN0cnVjdCBDQ0FuaW1hdGlvblN0
YXJ0ZWRFdmVudCB7Ci0gICAgQ0NBbmltYXRpb25TdGFydGVkRXZlbnQoaW50IGxheWVySUQsIGRv
dWJsZSB0aW1lKQotICAgICAgICA6IGxheWVySUQobGF5ZXJJRCkKLSAgICAgICAgLCB0aW1lKHRp
bWUpIHsgfQotICAgIGludCBsYXllcklEOwotICAgIGRvdWJsZSB0aW1lOworY2xhc3MgQ0NBbmlt
YXRpb25GaW5pc2hlZEV2ZW50IDogcHVibGljIENDQW5pbWF0aW9uRXZlbnQgeworcHVibGljOgor
ICAgIHN0YXRpYyBQYXNzT3duUHRyPENDQW5pbWF0aW9uRmluaXNoZWRFdmVudD4gY3JlYXRlKGlu
dCBsYXllcklkLCBpbnQgYW5pbWF0aW9uSWQpOworCisgICAgdmlydHVhbCB+Q0NBbmltYXRpb25G
aW5pc2hlZEV2ZW50KCk7CisKKyAgICB2aXJ0dWFsIFR5cGUgdHlwZSgpIGNvbnN0OworCisgICAg
aW50IGFuaW1hdGlvbklkKCkgY29uc3QgeyByZXR1cm4gbV9hbmltYXRpb25JZDsgfQorCitwcml2
YXRlOgorICAgIENDQW5pbWF0aW9uRmluaXNoZWRFdmVudChpbnQgbGF5ZXJJZCwgaW50IGFuaW1h
dGlvbklkKTsKKworICAgIGludCBtX2FuaW1hdGlvbklkOwogfTsKIAotdHlwZWRlZiBWZWN0b3I8
Q0NBbmltYXRpb25TdGFydGVkRXZlbnQ+IENDQW5pbWF0aW9uRXZlbnRzVmVjdG9yOwordHlwZWRl
ZiBWZWN0b3I8T3duUHRyPENDQW5pbWF0aW9uRXZlbnQ+ID4gQ0NBbmltYXRpb25FdmVudHNWZWN0
b3I7CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllckFuaW1hdGlvbkNvbnRyb2xs
ZXJJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDTGF5ZXJBbmltYXRpb25Db250cm9sbGVySW1wbC5jcHAKaW5kZXggMjA5NmNlMzk4MmNlODkw
NTNmOTdhNDMxY2M0NmU0YTk3MjkzNjUxNy4uZThkNmJjN2VmNzVhYzQwM2QxMWNhNjExNTQ4OGVj
YzcxZDU2MzVkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NMYXllckFuaW1hdGlvbkNvbnRyb2xsZXJJbXBsLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyQW5pbWF0aW9u
Q29udHJvbGxlckltcGwuY3BwCkBAIC01Niw3ICs1Niw3IEBAIHZvaWQgQ0NMYXllckFuaW1hdGlv
bkNvbnRyb2xsZXJJbXBsOjphbmltYXRlKGRvdWJsZSBmcmFtZUJlZ2luVGltZVNlY3MsIENDQW5p
bWF0CiAgICAgc3RhcnRBbmltYXRpb25zV2FpdGluZ0ZvclRhcmdldEF2YWlsYWJpbGl0eShmcmFt
ZUJlZ2luVGltZVNlY3MsIGV2ZW50cyk7CiAgICAgcmVzb2x2ZUNvbmZsaWN0cyhmcmFtZUJlZ2lu
VGltZVNlY3MpOwogICAgIHRpY2tBbmltYXRpb25zKGZyYW1lQmVnaW5UaW1lU2Vjcyk7Ci0gICAg
cHVyZ2VGaW5pc2hlZEFuaW1hdGlvbnMoKTsKKyAgICBwdXJnZUZpbmlzaGVkQW5pbWF0aW9ucyhl
dmVudHMpOwogICAgIHN0YXJ0QW5pbWF0aW9uc1dhaXRpbmdGb3JUYXJnZXRBdmFpbGFiaWxpdHko
ZnJhbWVCZWdpblRpbWVTZWNzLCBldmVudHMpOwogfQogCkBAIC04OSw3ICs4OSw3IEBAIHZvaWQg
Q0NMYXllckFuaW1hdGlvbkNvbnRyb2xsZXJJbXBsOjpzdGFydEFuaW1hdGlvbnNXYWl0aW5nRm9y
TmV4dFRpY2soZG91YmxlIG5vCiAgICAgICAgIGlmIChtX2FjdGl2ZUFuaW1hdGlvbnNbaV0tPnJ1
blN0YXRlKCkgPT0gQ0NBY3RpdmVBbmltYXRpb246OldhaXRpbmdGb3JOZXh0VGljaykgewogICAg
ICAgICAgICAgbV9hY3RpdmVBbmltYXRpb25zW2ldLT5zZXRSdW5TdGF0ZShDQ0FjdGl2ZUFuaW1h
dGlvbjo6UnVubmluZywgbm93KTsKICAgICAgICAgICAgIG1fYWN0aXZlQW5pbWF0aW9uc1tpXS0+
c2V0U3RhcnRUaW1lKG5vdyk7Ci0gICAgICAgICAgICBldmVudHMuYXBwZW5kKENDQW5pbWF0aW9u
U3RhcnRlZEV2ZW50KG1fY2xpZW50LT5pZCgpLCBub3cpKTsKKyAgICAgICAgICAgIGV2ZW50cy5h
cHBlbmQoQ0NBbmltYXRpb25TdGFydGVkRXZlbnQ6OmNyZWF0ZShtX2NsaWVudC0+aWQoKSwgbm93
KSk7CiAgICAgICAgIH0KICAgICB9CiB9CkBAIC05OSw3ICs5OSw3IEBAIHZvaWQgQ0NMYXllckFu
aW1hdGlvbkNvbnRyb2xsZXJJbXBsOjpzdGFydEFuaW1hdGlvbnNXYWl0aW5nRm9yU3RhcnRUaW1l
KGRvdWJsZSBuCiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX2FjdGl2ZUFuaW1hdGlvbnMu
c2l6ZSgpOyArK2kpIHsKICAgICAgICAgaWYgKG1fYWN0aXZlQW5pbWF0aW9uc1tpXS0+cnVuU3Rh
dGUoKSA9PSBDQ0FjdGl2ZUFuaW1hdGlvbjo6V2FpdGluZ0ZvclN0YXJ0VGltZSAmJiBtX2FjdGl2
ZUFuaW1hdGlvbnNbaV0tPnN0YXJ0VGltZSgpIDw9IG5vdykgewogICAgICAgICAgICAgbV9hY3Rp
dmVBbmltYXRpb25zW2ldLT5zZXRSdW5TdGF0ZShDQ0FjdGl2ZUFuaW1hdGlvbjo6UnVubmluZywg
bm93KTsKLSAgICAgICAgICAgIGV2ZW50cy5hcHBlbmQoQ0NBbmltYXRpb25TdGFydGVkRXZlbnQo
bV9jbGllbnQtPmlkKCksIG5vdykpOworICAgICAgICAgICAgZXZlbnRzLmFwcGVuZChDQ0FuaW1h
dGlvblN0YXJ0ZWRFdmVudDo6Y3JlYXRlKG1fY2xpZW50LT5pZCgpLCBub3cpKTsKICAgICAgICAg
fQogICAgIH0KIH0KQEAgLTEzNiw3ICsxMzYsNyBAQCB2b2lkIENDTGF5ZXJBbmltYXRpb25Db250
cm9sbGVySW1wbDo6c3RhcnRBbmltYXRpb25zV2FpdGluZ0ZvclRhcmdldEF2YWlsYWJpbGl0eQog
ICAgICAgICAgICAgaWYgKG51bGxJbnRlcnNlY3Rpb24pIHsKICAgICAgICAgICAgICAgICBtX2Fj
dGl2ZUFuaW1hdGlvbnNbaV0tPnNldFJ1blN0YXRlKENDQWN0aXZlQW5pbWF0aW9uOjpSdW5uaW5n
LCBub3cpOwogICAgICAgICAgICAgICAgIG1fYWN0aXZlQW5pbWF0aW9uc1tpXS0+c2V0U3RhcnRU
aW1lKG5vdyk7Ci0gICAgICAgICAgICAgICAgZXZlbnRzLmFwcGVuZChDQ0FuaW1hdGlvblN0YXJ0
ZWRFdmVudChtX2NsaWVudC0+aWQoKSwgbm93KSk7CisgICAgICAgICAgICAgICAgZXZlbnRzLmFw
cGVuZChDQ0FuaW1hdGlvblN0YXJ0ZWRFdmVudDo6Y3JlYXRlKG1fY2xpZW50LT5pZCgpLCBub3cp
KTsKICAgICAgICAgICAgICAgICBmb3IgKHNpemVfdCBqID0gaSArIDE7IGogPCBtX2FjdGl2ZUFu
aW1hdGlvbnMuc2l6ZSgpOyArK2opIHsKICAgICAgICAgICAgICAgICAgICAgaWYgKG1fYWN0aXZl
QW5pbWF0aW9uc1tpXS0+Z3JvdXAoKSA9PSBtX2FjdGl2ZUFuaW1hdGlvbnNbal0tPmdyb3VwKCkp
IHsKICAgICAgICAgICAgICAgICAgICAgICAgIG1fYWN0aXZlQW5pbWF0aW9uc1tqXS0+c2V0UnVu
U3RhdGUoQ0NBY3RpdmVBbmltYXRpb246OlJ1bm5pbmcsIG5vdyk7CkBAIC0xNjksNyArMTY5LDcg
QEAgdm9pZCBDQ0xheWVyQW5pbWF0aW9uQ29udHJvbGxlckltcGw6OnJlc29sdmVDb25mbGljdHMo
ZG91YmxlIG5vdykKICAgICB9CiB9CiAKLXZvaWQgQ0NMYXllckFuaW1hdGlvbkNvbnRyb2xsZXJJ
bXBsOjpwdXJnZUZpbmlzaGVkQW5pbWF0aW9ucygpCit2b2lkIENDTGF5ZXJBbmltYXRpb25Db250
cm9sbGVySW1wbDo6cHVyZ2VGaW5pc2hlZEFuaW1hdGlvbnMoQ0NBbmltYXRpb25FdmVudHNWZWN0
b3ImIGV2ZW50cykKIHsKICAgICAvLyBFYWNoIGl0ZXJhdGlvbiwgbV9hY3RpdmVBbmltYXRpb25z
LnNpemUoKSBkZWNyZWFzZXMgb3IgaSBpbmNyZW1lbnRzLAogICAgIC8vIGd1YXJhbnRlZWluZyBw
cm9ncmVzcyB0b3dhcmRzIGxvb3AgdGVybWluYXRpb24uCkBAIC0xODYsNiArMTg2LDcgQEAgdm9p
ZCBDQ0xheWVyQW5pbWF0aW9uQ29udHJvbGxlckltcGw6OnB1cmdlRmluaXNoZWRBbmltYXRpb25z
KCkKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgICAgICBpZiAoYWxsQW5pbXNXaXRoU2Ft
ZUlkQXJlRmluaXNoZWQpIHsKKyAgICAgICAgICAgIGV2ZW50cy5hcHBlbmQoQ0NBbmltYXRpb25G
aW5pc2hlZEV2ZW50OjpjcmVhdGUobV9jbGllbnQtPmlkKCksIG1fYWN0aXZlQW5pbWF0aW9uc1tp
XS0+aWQoKSkpOwogICAgICAgICAgICAgbV9maW5pc2hlZEFuaW1hdGlvbnMuYXBwZW5kKG1fYWN0
aXZlQW5pbWF0aW9uc1tpXS0+c2lnbmF0dXJlKCkpOwogICAgICAgICAgICAgbV9hY3RpdmVBbmlt
YXRpb25zLnJlbW92ZShpKTsKICAgICAgICAgfSBlbHNlCkBAIC0xOTgsNiArMTk5LDcgQEAgdm9p
ZCBDQ0xheWVyQW5pbWF0aW9uQ29udHJvbGxlckltcGw6OnRpY2tBbmltYXRpb25zKGRvdWJsZSBu
b3cpCiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX2FjdGl2ZUFuaW1hdGlvbnMuc2l6ZSgp
OyArK2kpIHsKICAgICAgICAgaWYgKG1fYWN0aXZlQW5pbWF0aW9uc1tpXS0+cnVuU3RhdGUoKSA9
PSBDQ0FjdGl2ZUFuaW1hdGlvbjo6UnVubmluZykgewogICAgICAgICAgICAgZG91YmxlIHRyaW1t
ZWQgPSBtX2FjdGl2ZUFuaW1hdGlvbnNbaV0tPnRyaW1UaW1lVG9DdXJyZW50SXRlcmF0aW9uKG5v
dyk7CisKICAgICAgICAgICAgIHN3aXRjaCAobV9hY3RpdmVBbmltYXRpb25zW2ldLT50YXJnZXRQ
cm9wZXJ0eSgpKSB7CiAKICAgICAgICAgICAgIGNhc2UgQ0NBY3RpdmVBbmltYXRpb246OlRyYW5z
Zm9ybTogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NMYXllckFuaW1hdGlvbkNvbnRyb2xsZXJJbXBsLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyQW5pbWF0aW9uQ29udHJvbGxl
ckltcGwuaAppbmRleCAyOTYwNjZkZTAwMmUyNjQ0YTBhZDdhMDY5NDE5NDc5YzAyZDhjYjdlLi4z
NTQwMDQ5YjAzNjFmZGU2MjM5NWFiYzBlNGUxNTE3MDQyZDQ0OGIwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyQW5pbWF0aW9u
Q29udHJvbGxlckltcGwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ0xheWVyQW5pbWF0aW9uQ29udHJvbGxlckltcGwuaApAQCAtODIsNyArODIs
NyBAQCBwcml2YXRlOgogICAgIHZvaWQgc3RhcnRBbmltYXRpb25zV2FpdGluZ0ZvclN0YXJ0VGlt
ZShkb3VibGUgbm93LCBDQ0FuaW1hdGlvbkV2ZW50c1ZlY3RvciYpOwogICAgIHZvaWQgc3RhcnRB
bmltYXRpb25zV2FpdGluZ0ZvclRhcmdldEF2YWlsYWJpbGl0eShkb3VibGUgbm93LCBDQ0FuaW1h
dGlvbkV2ZW50c1ZlY3RvciYpOwogICAgIHZvaWQgcmVzb2x2ZUNvbmZsaWN0cyhkb3VibGUgbm93
KTsKLSAgICB2b2lkIHB1cmdlRmluaXNoZWRBbmltYXRpb25zKCk7CisgICAgdm9pZCBwdXJnZUZp
bmlzaGVkQW5pbWF0aW9ucyhDQ0FuaW1hdGlvbkV2ZW50c1ZlY3RvciYpOwogCiAgICAgdm9pZCB0
aWNrQW5pbWF0aW9ucyhkb3VibGUgbm93KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllckFuaW1hdGlvbkRlbGVnYXRlLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyQW5p
bWF0aW9uRGVsZWdhdGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hNzY0Y2MzN2JkY2M3ZWUzZTg5YTdlODcyYmVk
MDI1ZTYyY2IxZGE4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllckFuaW1hdGlvbkRlbGVnYXRlLmgKQEAgLTAsMCAr
MSwzOSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5ZCisg
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04KKyAqIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUworICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBDQ0xheWVyQW5pbWF0aW9uRGVsZWdhdGVf
aAorI2RlZmluZSBDQ0xheWVyQW5pbWF0aW9uRGVsZWdhdGVfaAorCituYW1lc3BhY2UgV2ViQ29y
ZSB7CisKKy8vIFRoaXMgY2xhc3MgaXMgdXNlZCB0byBzZW5kIG5vdGlmaWNhdGlvbnMgd2hlbiBs
YXllciBhbmltYXRpb25zIGJlZ2luIG9yIGVuZC4KK2NsYXNzIENDTGF5ZXJBbmltYXRpb25EZWxl
Z2F0ZSB7CitwdWJsaWM6CisgICAgdmlydHVhbCB2b2lkIG5vdGlmeUFuaW1hdGlvblN0YXJ0ZWQo
ZG91YmxlIHRpbWUpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgbm90aWZ5QW5pbWF0aW9uRmluaXNo
ZWQoaW50IGFuaW1hdGlvbklkKSA9IDA7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisK
KyNlbmRpZiAvLyBDQ0xheWVyQW5pbWF0aW9uRGVsZWdhdGVfaApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJU
cmVlSG9zdC5jcHAKaW5kZXggNTAxZWUxN2RlNjllNGMzODFhNmNhYjRlMTIwYzJiMWEyZmZiYTAx
OC4uNjc1OTljY2M1ZTU3N2FkNTIxNDg3ZmJjZDNlNDYwNTQ4YzNhMGUyNiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVI
b3N0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ0xheWVyVHJlZUhvc3QuY3BwCkBAIC0yNjIsNyArMjYyLDcgQEAgdm9pZCBDQ0xheWVyVHJl
ZUhvc3Q6OnNldE5lZWRzUmVkcmF3KCkKIHZvaWQgQ0NMYXllclRyZWVIb3N0OjpzZXRBbmltYXRp
b25FdmVudHMoUGFzc093blB0cjxDQ0FuaW1hdGlvbkV2ZW50c1ZlY3Rvcj4gZXZlbnRzKQogewog
ICAgIEFTU0VSVChDQ1RocmVhZFByb3h5Ojppc01haW5UaHJlYWQoKSk7Ci0gICAgLy8gRklYTUU6
IG5lZWQgdG8gd2FsayB0aGUgdHJlZS4KKyAgICBzZXRBbmltYXRpb25FdmVudHNSZWN1cnNpdmUo
KmV2ZW50cywgbV9yb290TGF5ZXIuZ2V0KCkpOwogfQogCiB2b2lkIENDTGF5ZXJUcmVlSG9zdDo6
c2V0Um9vdExheWVyKFBhc3NSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gcm9vdExheWVyKQpAQCAtNjQ3
LDQgKzY0NywxNSBAQCB2b2lkIENDTGF5ZXJUcmVlSG9zdDo6ZGVsZXRlVGV4dHVyZUFmdGVyQ29t
bWl0KFBhc3NPd25QdHI8TWFuYWdlZFRleHR1cmU+IHRleHR1cgogICAgIG1fZGVsZXRlVGV4dHVy
ZUFmdGVyQ29tbWl0TGlzdC5hcHBlbmQodGV4dHVyZSk7CiB9CiAKK3ZvaWQgQ0NMYXllclRyZWVI
b3N0OjpzZXRBbmltYXRpb25FdmVudHNSZWN1cnNpdmUoY29uc3QgQ0NBbmltYXRpb25FdmVudHNW
ZWN0b3ImIGV2ZW50cywgTGF5ZXJDaHJvbWl1bSogbGF5ZXIpCit7CisgICAgZm9yIChzaXplX3Qg
ZXZlbnRJbmRleCA9IDA7IGV2ZW50SW5kZXggPCBldmVudHMuc2l6ZSgpOyArK2V2ZW50SW5kZXgp
IHsKKyAgICAgICAgaWYgKGxheWVyLT5pZCgpID09IGV2ZW50c1tldmVudEluZGV4XS0+bGF5ZXJJ
ZCgpKQorICAgICAgICAgICAgbGF5ZXItPnNldEFuaW1hdGlvbkV2ZW50KCpldmVudHNbZXZlbnRJ
bmRleF0pOworICAgIH0KKworICAgIGZvciAoc2l6ZV90IGNoaWxkSW5kZXggPSAwOyBjaGlsZElu
ZGV4IDwgbGF5ZXItPmNoaWxkcmVuKCkuc2l6ZSgpOyArK2NoaWxkSW5kZXgpCisgICAgICAgIHNl
dEFuaW1hdGlvbkV2ZW50c1JlY3Vyc2l2ZShldmVudHMsIGxheWVyLT5jaGlsZHJlbigpW2NoaWxk
SW5kZXhdLmdldCgpKTsKIH0KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVI
b3N0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xh
eWVyVHJlZUhvc3QuaAppbmRleCAxNjYyZjUwYzMzODg3OTdjOGVkNzZkYjVlNjk1NTI3YjM0ODk4
OWI4Li44OWFkZTU1OGJiOTZjMTFiNjk1MmM3YThiMWRkNGQ0ZWY2NGZmMDI0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJl
ZUhvc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ0xheWVyVHJlZUhvc3QuaApAQCAtMjE4LDYgKzIxOCw4IEBAIHByaXZhdGU6CiAgICAgdm9p
ZCByZXNlcnZlVGV4dHVyZXMoKTsKICAgICB2b2lkIGNsZWFyUGVuZGluZ1VwZGF0ZSgpOwogCisg
ICAgdm9pZCBzZXRBbmltYXRpb25FdmVudHNSZWN1cnNpdmUoY29uc3QgQ0NBbmltYXRpb25FdmVu
dHNWZWN0b3ImLCBMYXllckNocm9taXVtKik7CisKICAgICBpbnQgbV9jb21wb3NpdG9ySWRlbnRp
ZmllcjsKIAogICAgIGJvb2wgbV9hbmltYXRpbmc7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJUcmVlSG9zdFRlc3QuY3BwIGIvU291cmNlL1dlYktpdC9j
aHJvbWl1bS90ZXN0cy9DQ0xheWVyVHJlZUhvc3RUZXN0LmNwcAppbmRleCAxMGNmYTY5MzExMzVm
NTQ3NGFjNDc0ZTI1Y2E0MjNhMGUxN2Q5NTkzLi5jZWQ2MmNjMDZkZDRjNWI3Zjg3Y2U1ZmE4NjFi
MWQxMjg5NTRjNDI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0ND
TGF5ZXJUcmVlSG9zdFRlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMv
Q0NMYXllclRyZWVIb3N0VGVzdC5jcHAKQEAgLTM4LDYgKzM4LDcgQEAKICNpbmNsdWRlICJXZWJL
aXQuaCIKICNpbmNsdWRlICJjYy9DQ0FjdGl2ZUFuaW1hdGlvbi5oIgogI2luY2x1ZGUgImNjL0ND
TGF5ZXJBbmltYXRpb25Db250cm9sbGVyLmgiCisjaW5jbHVkZSAiY2MvQ0NMYXllckFuaW1hdGlv
bkRlbGVnYXRlLmgiCiAjaW5jbHVkZSAiY2MvQ0NMYXllckltcGwuaCIKICNpbmNsdWRlICJjYy9D
Q0xheWVyVHJlZUhvc3RJbXBsLmgiCiAjaW5jbHVkZSAiY2MvQ0NTY29wZWRUaHJlYWRQcm94eS5o
IgpAQCAtNTksNyArNjAsNyBAQCB1c2luZyBuYW1lc3BhY2UgV1RGOwogbmFtZXNwYWNlIHsKIAog
Ly8gVXNlZCBieSB0ZXN0IHN0dWJzIHRvIG5vdGlmeSB0aGUgdGVzdCB3aGVuIHNvbWV0aGluZyBp
bnRlcmVzdGluZyBoYXBwZW5zLgotY2xhc3MgVGVzdEhvb2tzIHsKK2NsYXNzIFRlc3RIb29rcyA6
IHB1YmxpYyBDQ0xheWVyQW5pbWF0aW9uRGVsZWdhdGUgewogcHVibGljOgogICAgIHZpcnR1YWwg
dm9pZCBiZWdpbkNvbW1pdE9uQ0NUaHJlYWQoQ0NMYXllclRyZWVIb3N0SW1wbCopIHsgfQogICAg
IHZpcnR1YWwgdm9pZCBjb21taXRDb21wbGV0ZU9uQ0NUaHJlYWQoQ0NMYXllclRyZWVIb3N0SW1w
bCopIHsgfQpAQCAtNjgsNiArNjksMTAgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBhcHBs
eVNjcm9sbEFuZFNjYWxlKGNvbnN0IEludFNpemUmLCBmbG9hdCkgeyB9CiAgICAgdmlydHVhbCB2
b2lkIHVwZGF0ZUFuaW1hdGlvbnMoZG91YmxlIGZyYW1lQmVnaW5UaW1lKSB7IH0KICAgICB2aXJ0
dWFsIHZvaWQgbGF5b3V0KCkgeyB9CisKKyAgICAvLyBJbXBsZW1lbnRhdGlvbiBvZiBDQ0xheWVy
QW5pbWF0aW9uRGVsZWdhdGUKKyAgICB2aXJ0dWFsIHZvaWQgbm90aWZ5QW5pbWF0aW9uU3RhcnRl
ZChkb3VibGUgdGltZSkgeyB9CisgICAgdmlydHVhbCB2b2lkIG5vdGlmeUFuaW1hdGlvbkZpbmlz
aGVkKGludCBhbmltYXRpb25JZCkgeyB9CiB9OwogCiAvLyBBZGFwdHMgQ0NMYXllclRyZWVIb3N0
SW1wbCBmb3IgdGVzdC4gUnVucyByZWFsIGNvZGUsIHRoZW4gaW52b2tlcyB0ZXN0IGhvb2tzLgpA
QCAtMTMwLDYgKzEzNSw4IEBAIHB1YmxpYzoKICAgICAgICAgLy8gTGF5ZXJUcmVlSG9zdEltcGwg
d29uJ3QgZHJhdyBpZiBpdCBoYXMgMXgxIHZpZXdwb3J0LgogICAgICAgICBsYXllclRyZWVIb3N0
LT5zZXRWaWV3cG9ydFNpemUoSW50U2l6ZSgxLCAxKSk7CiAKKyAgICAgICAgbGF5ZXJUcmVlSG9z
dC0+cm9vdExheWVyKCktPnNldExheWVyQW5pbWF0aW9uRGVsZWdhdGUodGVzdEhvb2tzKTsKKwog
ICAgICAgICByZXR1cm4gbGF5ZXJUcmVlSG9zdC5yZWxlYXNlKCk7CiAgICAgfQogCkBAIC04Mjcs
NyArODM0LDggQEAgY2xhc3MgQ0NMYXllclRyZWVIb3N0VGVzdEFkZEFuaW1hdGlvbiA6IHB1Ymxp
YyBDQ0xheWVyVHJlZUhvc3RUZXN0VGhyZWFkT25seSB7CiBwdWJsaWM6CiAgICAgQ0NMYXllclRy
ZWVIb3N0VGVzdEFkZEFuaW1hdGlvbigpCiAgICAgICAgIDogbV9udW1BbmltYXRlcygwKQotICAg
ICAgICAsIG1fbGF5ZXJUcmVlSG9zdEltcGwoMCkKKyAgICAgICAgLCBtX3JlY2VpdmVkQW5pbWF0
aW9uU3RhcnRlZE5vdGlmaWNhdGlvbihmYWxzZSkKKyAgICAgICAgLCBtX3JlY2VpdmVkQW5pbWF0
aW9uRmluaXNoZWROb3RpZmljYXRpb24oZmFsc2UpCiAgICAgewogICAgIH0KIApAQCAtODQ1LDE2
ICs4NTMsMjkgQEAgcHVibGljOgogICAgICAgICAgICAgbV9udW1BbmltYXRlcysrOwogICAgICAg
ICAgICAgcmV0dXJuOwogICAgICAgICB9CisgICAgICAgIEVYUEVDVF9UUlVFKG1fcmVjZWl2ZWRB
bmltYXRpb25TdGFydGVkTm90aWZpY2F0aW9uKTsKKyAgICAgICAgRVhQRUNUX1RSVUUobV9yZWNl
aXZlZEFuaW1hdGlvbkZpbmlzaGVkTm90aWZpY2F0aW9uKTsKICAgICAgICAgZW5kVGVzdCgpOwog
ICAgIH0KIAorICAgIHZpcnR1YWwgdm9pZCBub3RpZnlBbmltYXRpb25TdGFydGVkKGRvdWJsZSkK
KyAgICB7CisgICAgICAgIG1fcmVjZWl2ZWRBbmltYXRpb25TdGFydGVkTm90aWZpY2F0aW9uID0g
dHJ1ZTsKKyAgICB9CisKKyAgICB2aXJ0dWFsIHZvaWQgbm90aWZ5QW5pbWF0aW9uRmluaXNoZWQo
aW50KQorICAgIHsKKyAgICAgICAgbV9yZWNlaXZlZEFuaW1hdGlvbkZpbmlzaGVkTm90aWZpY2F0
aW9uID0gdHJ1ZTsKKyAgICB9CisKICAgICB2aXJ0dWFsIHZvaWQgYWZ0ZXJUZXN0KCkKICAgICB7
CiAgICAgfQogCiBwcml2YXRlOgogICAgIGludCBtX251bUFuaW1hdGVzOwotICAgIENDTGF5ZXJU
cmVlSG9zdEltcGwqIG1fbGF5ZXJUcmVlSG9zdEltcGw7CisgICAgYm9vbCBtX3JlY2VpdmVkQW5p
bWF0aW9uU3RhcnRlZE5vdGlmaWNhdGlvbjsKKyAgICBib29sIG1fcmVjZWl2ZWRBbmltYXRpb25G
aW5pc2hlZE5vdGlmaWNhdGlvbjsKIH07CiAKIFRFU1RfRihDQ0xheWVyVHJlZUhvc3RUZXN0QWRk
QW5pbWF0aW9uLCBydW5NdWx0aVRocmVhZCkK
</data>

          </attachment>
      

    </bug>

</bugzilla>