<?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>71490</bug_id>
          
          <creation_ts>2011-11-03 11:11:48 -0700</creation_ts>
          <short_desc>Support uiStateTransitionProgress for scrollbars</short_desc>
          <delta_ts>2011-11-07 15:45:51 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Layout and Rendering</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Beth Dakin">bdakin</reporter>
          <assigned_to name="Beth Dakin">bdakin</assigned_to>
          <cc>bdakin</cc>
    
    <cc>dbates</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>495653</commentid>
    <comment_count>0</comment_count>
    <who name="Beth Dakin">bdakin</who>
    <bug_when>2011-11-03 11:11:48 -0700</bug_when>
    <thetext>&lt;rdar://problem/9849612&gt;

ScrollAnimatorMac should also support uiStateTransitionProgress animations.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>495686</commentid>
    <comment_count>1</comment_count>
      <attachid>113535</attachid>
    <who name="Beth Dakin">bdakin</who>
    <bug_when>2011-11-03 11:52:53 -0700</bug_when>
    <thetext>Created attachment 113535
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>495697</commentid>
    <comment_count>2</comment_count>
      <attachid>113535</attachid>
    <who name="">mitz</who>
    <bug_when>2011-11-03 12:05:19 -0700</bug_when>
    <thetext>Comment on attachment 113535
Patch

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

&gt; Source/WebCore/platform/mac/ScrollAnimatorMac.mm:54
&gt; +static bool supportsUIStateTransitionProgress()
&gt; +{
&gt; +    // FIXME: This is temportary until all platforms that support ScrollbarPainter support this part of the api.
&gt; +    static ScrollbarPainter dummyPainter = [NSClassFromString(@&quot;NSScrollerImp&quot;) scrollerImpWithStyle:wkRecommendedScrollerStyle() controlSize:RegularScrollbar horizontal:NO replacingScrollerImp:nil];
&gt; +    static bool globalSupportsUIStateTransitionProgress = [dummyPainter respondsToSelector:@selector(mouseEnteredScroller)];
&gt; +    return globalSupportsUIStateTransitionProgress;
&gt; +}

You don’t need to instantiate an NSScrollerImp. You can use the class method +instancesRespondToSelector:, something along the lines of
    [NSClassFromString(@&quot;NSScrollerImg&quot;) instancesRespondToSelector:@selector(mouseEnteredScroller)]</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>495741</commentid>
    <comment_count>3</comment_count>
    <who name="Beth Dakin">bdakin</who>
    <bug_when>2011-11-03 13:17:43 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; (From update of attachment 113535 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=113535&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/platform/mac/ScrollAnimatorMac.mm:54
&gt; &gt; +static bool supportsUIStateTransitionProgress()
&gt; &gt; +{
&gt; &gt; +    // FIXME: This is temportary until all platforms that support ScrollbarPainter support this part of the api.
&gt; &gt; +    static ScrollbarPainter dummyPainter = [NSClassFromString(@&quot;NSScrollerImp&quot;) scrollerImpWithStyle:wkRecommendedScrollerStyle() controlSize:RegularScrollbar horizontal:NO replacingScrollerImp:nil];
&gt; &gt; +    static bool globalSupportsUIStateTransitionProgress = [dummyPainter respondsToSelector:@selector(mouseEnteredScroller)];
&gt; &gt; +    return globalSupportsUIStateTransitionProgress;
&gt; &gt; +}
&gt; 
&gt; You don’t need to instantiate an NSScrollerImp. You can use the class method +instancesRespondToSelector:, something along the lines of
&gt;     [NSClassFromString(@&quot;NSScrollerImg&quot;) instancesRespondToSelector:@selector(mouseEnteredScroller)]

Excellent! I will fix that now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>495860</commentid>
    <comment_count>4</comment_count>
      <attachid>113535</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2011-11-03 16:26:39 -0700</bug_when>
    <thetext>Comment on attachment 113535
Patch

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

I only briefly looked at this patch and didn&apos;t check it for correctness. I have some minor nits. None are show stoppers.

&gt; Source/WebCore/platform/mac/ScrollAnimatorMac.mm:50
&gt; +    // FIXME: This is temportary until all platforms that support ScrollbarPainter support this part of the api.

Nit:
temportary =&gt; temporary
api =&gt; API

&gt; Source/WebCore/platform/mac/ScrollAnimatorMac.mm:327
&gt; +    default:
&gt; +        ASSERT_NOT_REACHED();

Can we make this switch-statement stronger? In particular, can we omit the default case statement here so as to have the the compiler ensure that we handle all the enum values in FeatureToAnimate? The benefit of this is that we would catch a missing case statement at compile-time as opposed to run-time.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>495868</commentid>
    <comment_count>5</comment_count>
    <who name="Beth Dakin">bdakin</who>
    <bug_when>2011-11-03 16:29:28 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; (From update of attachment 113535 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=113535&amp;action=review
&gt; 
&gt; I only briefly looked at this patch and didn&apos;t check it for correctness. I have some minor nits. None are show stoppers.
&gt; 
&gt; &gt; Source/WebCore/platform/mac/ScrollAnimatorMac.mm:50
&gt; &gt; +    // FIXME: This is temportary until all platforms that support ScrollbarPainter support this part of the api.
&gt; 
&gt; Nit:
&gt; temportary =&gt; temporary
&gt; api =&gt; API
&gt; 

Ah, good catch. Will fix.

&gt; &gt; Source/WebCore/platform/mac/ScrollAnimatorMac.mm:327
&gt; &gt; +    default:
&gt; &gt; +        ASSERT_NOT_REACHED();
&gt; 
&gt; Can we make this switch-statement stronger? In particular, can we omit the default case statement here so as to have the the compiler ensure that we handle all the enum values in FeatureToAnimate? The benefit of this is that we would catch a missing case statement at compile-time as opposed to run-time.

Sure, that seems like a good idea.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>495874</commentid>
    <comment_count>6</comment_count>
      <attachid>113575</attachid>
    <who name="Beth Dakin">bdakin</who>
    <bug_when>2011-11-03 16:34:08 -0700</bug_when>
    <thetext>Created attachment 113575
Patch with a few small adjustments

Here&apos;s a patch that addresses Dan&apos;s and Dan&apos;s (heh!) comments from above.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>496138</commentid>
    <comment_count>7</comment_count>
      <attachid>113575</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2011-11-04 04:04:08 -0700</bug_when>
    <thetext>Comment on attachment 113575
Patch with a few small adjustments

Attachment 113575 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/10319109</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>497328</commentid>
    <comment_count>8</comment_count>
      <attachid>113898</attachid>
    <who name="Beth Dakin">bdakin</who>
    <bug_when>2011-11-07 11:26:17 -0800</bug_when>
    <thetext>Created attachment 113898
Patch that should pass mac-ews</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>497406</commentid>
    <comment_count>9</comment_count>
      <attachid>113898</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2011-11-07 13:05:45 -0800</bug_when>
    <thetext>Comment on attachment 113898
Patch that should pass mac-ews

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

&gt; Source/WebCore/page/EventHandler.cpp:1716
&gt; +        if (ScrollableArea* scrollableArea = m_lastScrollbarUnderMouse-&gt;scrollableArea())
&gt; +            scrollableArea-&gt;scrollAnimator()-&gt;mouseExitedScrollbar(m_lastScrollbarUnderMouse.get());

This seems like something that should be communicated directly to the Scrollbar.  Scrollbar already has mouseMoved and other fun.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>497416</commentid>
    <comment_count>10</comment_count>
    <who name="Beth Dakin">bdakin</who>
    <bug_when>2011-11-07 13:19:08 -0800</bug_when>
    <thetext>(In reply to comment #9)
&gt; (From update of attachment 113898 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=113898&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/page/EventHandler.cpp:1716
&gt; &gt; +        if (ScrollableArea* scrollableArea = m_lastScrollbarUnderMouse-&gt;scrollableArea())
&gt; &gt; +            scrollableArea-&gt;scrollAnimator()-&gt;mouseExitedScrollbar(m_lastScrollbarUnderMouse.get());
&gt; 
&gt; This seems like something that should be communicated directly to the Scrollbar.  Scrollbar already has mouseMoved and other fun.

Do you mean that you think that this code that calls into ScrollAnimator should be in Scrollbar instead of EventHandler? Or do you mean that you think that we shouldn&apos;t call into ScrollAnimator at all? Assuming you mean the first, that seems like a fine move.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>497521</commentid>
    <comment_count>11</comment_count>
      <attachid>113940</attachid>
    <who name="Beth Dakin">bdakin</who>
    <bug_when>2011-11-07 15:24:10 -0800</bug_when>
    <thetext>Created attachment 113940
Patch that moves work to Scrollbar from EventHandler

Here&apos;s a patch that addresses Sam&apos;s comment and also fixes a bug with the patch that I noticed while doing that. It is necessary to hit test before we send the mouseExited() notification during a mouseUp event, so this patch has Scrollbar::mouseUp() take a PlatformMouseEvent so that it can do just that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>497544</commentid>
    <comment_count>12</comment_count>
    <who name="Beth Dakin">bdakin</who>
    <bug_when>2011-11-07 15:45:51 -0800</bug_when>
    <thetext>Thanks, Sam! Committed change with revision 99493.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>113535</attachid>
            <date>2011-11-03 11:52:53 -0700</date>
            <delta_ts>2011-11-03 16:34:08 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>for-review.txt</filename>
            <type>text/plain</type>
            <size>21777</size>
            <attacher name="Beth Dakin">bdakin</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDk5MjIzKQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNjYgQEAKKzIwMTEtMTEtMDMgIEJldGggRGFr
aW4gIDxiZGFraW5AYXBwbGUuY29tPgorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD03MTQ5MAorICAgICAgICBTdXBwb3J0IHVpU3RhdGVUcmFuc2l0aW9u
UHJvZ3Jlc3MgZm9yIHNjcm9sbGJhcnMKKyAgICAgICAgLWFuZCBjb3JyZXNwb25kaW5nLQorICAg
ICAgICA8cmRhcjovL3Byb2JsZW0vOTg0OTYxMj4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBTdGVwIDEgb2Ygc3VwcG9ydGluZyB1aVN0YXRlVHJhbnNp
dGlvblByb2dyZXNzIGlzIGtub3dpbmcgd2hlbiB0aGUgbW91c2UgaGFzIAorICAgICAgICBlbnRl
cmVkIG9yIGV4aXRlZCBhIHNjcm9sbGJhci4gVGhlc2UgY2hhbmdlcyB0byBFdmVudEhhbmRsZXIg
cGFzcyB0aGF0IGluZm9ybWF0aW9uIAorICAgICAgICBvbiB0byB0aGUgU2Nyb2xsQW5pbWF0b3Iu
CisgICAgICAgICogcGFnZS9FdmVudEhhbmRsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RXZl
bnRIYW5kbGVyOjpoYW5kbGVNb3VzZVJlbGVhc2VFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpF
dmVudEhhbmRsZXI6OnVwZGF0ZUxhc3RTY3JvbGxiYXJVbmRlck1vdXNlKToKKyAgICAgICAgCisg
ICAgICAgIFNjcm9sbEFuaW1hdG9yIHBhc3NlcyB0aGUgaW5mb3JtYXRpb24gb24gdG8gQXBwS2l0
LgorICAgICAgICAqIHBsYXRmb3JtL1Njcm9sbEFuaW1hdG9yLmg6CisgICAgICAgIChXZWJDb3Jl
OjpTY3JvbGxBbmltYXRvcjo6bW91c2VFbnRlcmVkU2Nyb2xsYmFyKToKKyAgICAgICAgKFdlYkNv
cmU6OlNjcm9sbEFuaW1hdG9yOjptb3VzZUV4aXRlZFNjcm9sbGJhcik6CisgICAgICAgICogcGxh
dGZvcm0vbWFjL1Njcm9sbEFuaW1hdG9yTWFjLmg6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxB
bmltYXRvck1hYzo6bW91c2VFbnRlcmVkU2Nyb2xsYmFyKToKKyAgICAgICAgKFdlYkNvcmU6OlNj
cm9sbEFuaW1hdG9yTWFjOjptb3VzZUV4aXRlZFNjcm9sbGJhcik6CisKKyAgICAgICAgVGhlcmUg
YXJlIHNldmVyYWwgbmV3IHBpZWNlcyBvZiBBcHBLaXQgYXBpIHdlIG11c3QgY2FsbCBpbnRvLgor
ICAgICAgICAqIHBsYXRmb3JtL21hYy9OU1Njcm9sbGVySW1wRGV0YWlscy5oOgorCisgICAgICAg
IFRoaXMgaXMgYSB0ZW1wb3JhcnkgZnVuY3Rpb24gdGhhdCBpcyBuZWVkZWQgZm9yIHRoZSB0aW1l
IGJlaW5nIHNpbmNlIHRoZXJlIGlzIG5ldyAKKyAgICAgICAgQXBwS2l0IGFwaSByZXF1aXJlZCBm
b3IgdGhpcyB0byB3b3JrLgorICAgICAgICAqIHBsYXRmb3JtL21hYy9TY3JvbGxBbmltYXRvck1h
Yy5tbToKKyAgICAgICAgKHN1cHBvcnRzVUlTdGF0ZVRyYW5zaXRpb25Qcm9ncmVzcyk6CisKKyAg
ICAgICAgSSByZWZhY3RvcmVkIFdlYlNjcm9sbGJhclBhcnRBbmltYXRpb24gc28gdGhhdCBpdCBj
YW4gaGFuZGxlIHRoZSAKKyAgICAgICAgdWlTdGF0ZVRyYW5zaXRpb25Qcm9ncmVzcyBhbmltYXRp
b24gYXMgd2VsbCBhcyB0aGUgYWxwaGEgYW5pbWF0aW9ucyBpdCBhbHJlYWR5IAorICAgICAgICBo
YW5kbGVkLiBUaGlzIG1vc3RseSBpbnZvbHZlZCByZS1uYW1pbmcgdGhpbmdzIGFuZCBtYWtpbmcg
dXNlIG9mIGEgbmV3IGVudW0gY2FsbGVkIAorICAgICAgICBGZWF0dXJlVG9BbmltYXRlIHdoaWNo
IGtlZXBzIHRyYWNrIG9mIHdoYXQgdGhlIGluc3RhbmNlIG9mIAorICAgICAgICBXZWJTY3JvbGxi
YXJQYXJ0QW5pbWF0aW9uIGlzIGFuaW1hdGluZy4KKyAgICAgICAgKC1bV2ViU2Nyb2xsYmFyUGFy
dEFuaW1hdGlvbiBpbml0V2l0aFNjcm9sbGJhclBhaW50ZXI6YW5pbWF0ZTpzY3JvbGxBbmltYXRv
cjphbmltYXRlRnJvbTphbmltYXRlVG86ZHVyYXRpb246XSk6CisgICAgICAgICgtW1dlYlNjcm9s
bGJhclBhcnRBbmltYXRpb24gc2V0U2Nyb2xsYmFyUGFpbnRlcjpdKToKKyAgICAgICAgKC1bV2Vi
U2Nyb2xsYmFyUGFydEFuaW1hdGlvbiBzZXRTdGFydFZhbHVlOl0pOgorICAgICAgICAoLVtXZWJT
Y3JvbGxiYXJQYXJ0QW5pbWF0aW9uIHNldEVuZFZhbHVlOl0pOgorICAgICAgICAoLVtXZWJTY3Jv
bGxiYXJQYXJ0QW5pbWF0aW9uIHNldEN1cnJlbnRQcm9ncmVzczpdKToKKworICAgICAgICBXZWJT
Y3JvbGxiYXJQYWludGVyRGVsZWdhdGUgaGFzIHR3byBuZXcgYW5pbWF0aW9ucywgCisgICAgICAg
IF92ZXJ0aWNhbFVJU3RhdGVUcmFuc2l0aW9uQW5pbWF0aW9uLCBhbmQgX2hvcml6b250YWxVSVN0
YXRlVHJhbnNpdGlvbkFuaW1hdGlvbi4gSXQgCisgICAgICAgIGFsc28gcmVzcG9uZHMgdG8gYSBm
ZXcgbmV3IGRlbGVnYXRlIGNhbGxzLgorICAgICAgICAoLVtXZWJTY3JvbGxiYXJQYWludGVyRGVs
ZWdhdGUgY2FuY2VsQW5pbWF0aW9uc10pOgorCisgICAgICAgIFRoaXMgaXMgYSBuZXcgZGVsZWdh
dGUgY2FsbCBuZWVkZWQgZm9yIHVpU3RhdGVUcmFuc2l0aW9uUHJvZ3Jlc3MuCisgICAgICAgICgt
W1dlYlNjcm9sbGJhclBhaW50ZXJEZWxlZ2F0ZSBtb3VzZUxvY2F0aW9uSW5TY3JvbGxlckZvclNj
cm9sbGVySW1wOl0pOgorCisgICAgICAgIEkgcmUtbmFtZWQgc2V0VXBBbmltYXRpb24gdG8gc2V0
VXBBbHBoYUFuaW1hdGlvbiBzaW5jZSBpdCBkb2VzIGEgbG90IG9mIHRoaW5ncyAKKyAgICAgICAg
dGhhdCBhcmUgc3BlY2lmaWMgdG8gdGhlIGFscGhhIGFuaW1hdGlvbiBhbmQgSSBjaG9zZSBub3Qg
dG8gcmUtdXNlIGl0IGZvciAKKyAgICAgICAgdWlTdGF0ZVRyYW5zaXRpb24uCisgICAgICAgICgt
W1dlYlNjcm9sbGJhclBhaW50ZXJEZWxlZ2F0ZSBzZXRVcEFscGhhQW5pbWF0aW9uOnNjcm9sbGVy
UGFpbnRlcjpwYXJ0OldlYkNvcmU6OmFuaW1hdGVBbHBoYVRvOmR1cmF0aW9uOl0pOgorICAgICAg
ICAoLVtXZWJTY3JvbGxiYXJQYWludGVyRGVsZWdhdGUgc2Nyb2xsZXJJbXA6YW5pbWF0ZUtub2JB
bHBoYVRvOmR1cmF0aW9uOl0pOgorICAgICAgICAoLVtXZWJTY3JvbGxiYXJQYWludGVyRGVsZWdh
dGUgc2Nyb2xsZXJJbXA6YW5pbWF0ZVRyYWNrQWxwaGFUbzpkdXJhdGlvbjpdKToKKworICAgICAg
ICBOZXcgZGVsZWdhdGUgY2FsbCBmb3IgdGhlIHVpU3RhdGVUcmFuc2l0aW9uIGFuaW1hdGlvbiB0
aGF0IHNldHMgdXAgdGhhdCBhbmltYXRpb24gCisgICAgICAgIGFuZCBraWNrcyBpdCBvZmYuCisg
ICAgICAgICgtW1dlYlNjcm9sbGJhclBhaW50ZXJEZWxlZ2F0ZSBzY3JvbGxlckltcDphbmltYXRl
VUlTdGF0ZVRyYW5zaXRpb25XaXRoRHVyYXRpb246XSk6CisgICAgICAgICgtW1dlYlNjcm9sbGJh
clBhaW50ZXJEZWxlZ2F0ZSBzY3JvbGxBbmltYXRvckRlc3Ryb3llZF0pOgorCiAyMDExLTExLTAz
ICBNYXJrIEhhaG5lbmJlcmcgIDxtaGFobmVuYmVyZ0BhcHBsZS5jb20+CiAKICAgICAgICAgRGUt
dmlydHVhbGl6ZSBKU09iamVjdDo6Y2xhc3NOYW1lCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdl
L0V2ZW50SGFuZGxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9FdmVu
dEhhbmRsZXIuY3BwCShyZXZpc2lvbiA5ODk3NykKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRXZl
bnRIYW5kbGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTcxMiw2ICsxNzEyLDggQEAgYm9vbCBF
dmVudEhhbmRsZXI6OmhhbmRsZU1vdXNlUmVsZWFzZUV2ZQogCiAgICAgaWYgKG1fbGFzdFNjcm9s
bGJhclVuZGVyTW91c2UpIHsKICAgICAgICAgaW52YWxpZGF0ZUNsaWNrKCk7CisgICAgICAgIGlm
IChTY3JvbGxhYmxlQXJlYSogc2Nyb2xsYWJsZUFyZWEgPSBtX2xhc3RTY3JvbGxiYXJVbmRlck1v
dXNlLT5zY3JvbGxhYmxlQXJlYSgpKQorICAgICAgICAgICAgc2Nyb2xsYWJsZUFyZWEtPnNjcm9s
bEFuaW1hdG9yKCktPm1vdXNlRXhpdGVkU2Nyb2xsYmFyKG1fbGFzdFNjcm9sbGJhclVuZGVyTW91
c2UuZ2V0KCkpOwogICAgICAgICByZXR1cm4gbV9sYXN0U2Nyb2xsYmFyVW5kZXJNb3VzZS0+bW91
c2VVcCgpOwogICAgIH0KIApAQCAtMzEzMiwxMiArMzEzNCwyMiBAQCBib29sIEV2ZW50SGFuZGxl
cjo6cGFzc01vdXNlUHJlc3NFdmVudFRvCiAvLyBsYXN0IHRvIHNjcm9sbGJhciBpZiBzZXRMYXN0
IGlzIHRydWU7IGVsc2Ugc2V0IGxhc3QgdG8gMC4KIHZvaWQgRXZlbnRIYW5kbGVyOjp1cGRhdGVM
YXN0U2Nyb2xsYmFyVW5kZXJNb3VzZShTY3JvbGxiYXIqIHNjcm9sbGJhciwgYm9vbCBzZXRMYXN0
KQogewotICAgIGlmIChtX2xhc3RTY3JvbGxiYXJVbmRlck1vdXNlICE9IHNjcm9sbGJhcikgewot
ICAgICAgICAvLyBTZW5kIG1vdXNlIGV4aXRlZCB0byB0aGUgb2xkIHNjcm9sbGJhci4KLSAgICAg
ICAgaWYgKG1fbGFzdFNjcm9sbGJhclVuZGVyTW91c2UpCi0gICAgICAgICAgICBtX2xhc3RTY3Jv
bGxiYXJVbmRlck1vdXNlLT5tb3VzZUV4aXRlZCgpOwotICAgICAgICBtX2xhc3RTY3JvbGxiYXJV
bmRlck1vdXNlID0gc2V0TGFzdCA/IHNjcm9sbGJhciA6IDA7CisgICAgaWYgKG1fbGFzdFNjcm9s
bGJhclVuZGVyTW91c2UgPT0gc2Nyb2xsYmFyKQorICAgICAgICByZXR1cm47CisKKyAgICAvLyBT
ZW5kIG1vdXNlIGV4aXRlZCB0byB0aGUgb2xkIHNjcm9sbGJhci4KKyAgICBpZiAobV9sYXN0U2Ny
b2xsYmFyVW5kZXJNb3VzZSkgeworICAgICAgICBtX2xhc3RTY3JvbGxiYXJVbmRlck1vdXNlLT5t
b3VzZUV4aXRlZCgpOworICAgICAgICBpZiAoU2Nyb2xsYWJsZUFyZWEqIHNjcm9sbGFibGVBcmVh
ID0gbV9sYXN0U2Nyb2xsYmFyVW5kZXJNb3VzZS0+c2Nyb2xsYWJsZUFyZWEoKSkKKyAgICAgICAg
ICAgIHNjcm9sbGFibGVBcmVhLT5zY3JvbGxBbmltYXRvcigpLT5tb3VzZUV4aXRlZFNjcm9sbGJh
cihtX2xhc3RTY3JvbGxiYXJVbmRlck1vdXNlLmdldCgpKTsKICAgICB9CisKKyAgICBpZiAoc2V0
TGFzdCAmJiBzY3JvbGxiYXIpIHsKKyAgICAgICAgaWYgKFNjcm9sbGFibGVBcmVhKiBzY3JvbGxh
YmxlQXJlYSA9IHNjcm9sbGJhci0+c2Nyb2xsYWJsZUFyZWEoKSkKKyAgICAgICAgICAgIHNjcm9s
bGFibGVBcmVhLT5zY3JvbGxBbmltYXRvcigpLT5tb3VzZUVudGVyZWRTY3JvbGxiYXIoc2Nyb2xs
YmFyKTsKKyAgICB9CisKKyAgICBtX2xhc3RTY3JvbGxiYXJVbmRlck1vdXNlID0gc2V0TGFzdCA/
IHNjcm9sbGJhciA6IDA7CiB9CiAKICNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQpJbmRleDogU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0b3IuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRvci5oCShyZXZpc2lvbiA5ODk3NykKKysr
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1hdG9yLmgJKHdvcmtpbmcgY29weSkK
QEAgLTc4LDYgKzc4LDggQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBtb3VzZUVudGVyZWRD
b250ZW50QXJlYSgpIGNvbnN0IHsgfQogICAgIHZpcnR1YWwgdm9pZCBtb3VzZUV4aXRlZENvbnRl
bnRBcmVhKCkgY29uc3QgeyB9CiAgICAgdmlydHVhbCB2b2lkIG1vdXNlTW92ZWRJbkNvbnRlbnRB
cmVhKCkgY29uc3QgeyB9CisgICAgdmlydHVhbCB2b2lkIG1vdXNlRW50ZXJlZFNjcm9sbGJhcihT
Y3JvbGxiYXIqKSBjb25zdCB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgbW91c2VFeGl0ZWRTY3JvbGxi
YXIoU2Nyb2xsYmFyKikgY29uc3QgeyB9CiAgICAgdmlydHVhbCB2b2lkIHdpbGxTdGFydExpdmVS
ZXNpemUoKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgY29udGVudHNSZXNpemVkKCkgY29uc3QgeyB9
CiAgICAgdmlydHVhbCB2b2lkIHdpbGxFbmRMaXZlUmVzaXplKCkgeyB9CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tYWMvTlNTY3JvbGxlckltcERldGFpbHMuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvTlNTY3JvbGxlckltcERldGFpbHMuaAkocmV2
aXNpb24gOTg5NzcpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvTlNTY3JvbGxlcklt
cERldGFpbHMuaAkod29ya2luZyBjb3B5KQpAQCAtNDEsNiArNDEsNyBAQCBAaW50ZXJmYWNlIE5T
T2JqZWN0IChTY3JvbGxiYXJQYWludGVyKQogLSAodm9pZClzZXRLbm9iUHJvcG9ydGlvbjooQ0dG
bG9hdClwcm9wb3J0aW9uOwogLSAodm9pZClzZXRLbm9iU3R5bGU6KE5TU2Nyb2xsZXJLbm9iU3R5
bGUpa25vYlN0eWxlOwogLSAodm9pZClzZXREZWxlZ2F0ZTooaWQpZGVsZWdhdGU7CistICh2b2lk
KXNldFVpU3RhdGVUcmFuc2l0aW9uUHJvZ3Jlc3M6KENHRmxvYXQpdWlTdGF0ZVRyYW5zaXRpb25Q
cm9ncmVzczsKIC0gKEJPT0wpaXNIb3Jpem9udGFsOwogLSAoQ0dGbG9hdCl0cmFja1dpZHRoOwog
LSAoQ0dGbG9hdCl0cmFja0JveFdpZHRoOwpAQCAtNDksOSArNTAsMTIgQEAgQGludGVyZmFjZSBO
U09iamVjdCAoU2Nyb2xsYmFyUGFpbnRlcikKIC0gKENHRmxvYXQpa25vYk92ZXJsYXBFbmRJbnNl
dDsKIC0gKENHRmxvYXQpdHJhY2tFbmRJbnNldDsKIC0gKENHRmxvYXQpa25vYkVuZEluc2V0Owor
LSAoQ0dGbG9hdCl1aVN0YXRlVHJhbnNpdGlvblByb2dyZXNzOwogLSAoTlNSZWN0KXJlY3RGb3JQ
YXJ0OihOU1Njcm9sbGVyUGFydClwYXJ0Q29kZTsKIC0gKHZvaWQpZHJhd0tub2JTbG90SW5SZWN0
OihOU1JlY3Qpc2xvdFJlY3QgaGlnaGxpZ2h0OihCT09MKWZsYWcgYWxwaGE6KENHRmxvYXQpYWxw
aGE7CiAtICh2b2lkKWRyYXdLbm9iOworLSAodm9pZCltb3VzZUVudGVyZWRTY3JvbGxlcjsKKy0g
KHZvaWQpbW91c2VFeGl0ZWRTY3JvbGxlcjsKIEBlbmQKIAogQGludGVyZmFjZSBOU09iamVjdCAo
U2Nyb2xsYmFyUGFpbnRlckNvbnRyb2xsZXIpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tYWMvU2Nyb2xsQW5pbWF0b3JNYWMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tYWMvU2Nyb2xsQW5pbWF0b3JNYWMuaAkocmV2aXNpb24gOTg5NzcpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvU2Nyb2xsQW5pbWF0b3JNYWMuaAkod29ya2luZyBjb3B5
KQpAQCAtMTE3LDYgKzExNyw4IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIG1vdXNlRW50
ZXJlZENvbnRlbnRBcmVhKCkgY29uc3Q7CiAgICAgdmlydHVhbCB2b2lkIG1vdXNlRXhpdGVkQ29u
dGVudEFyZWEoKSBjb25zdDsKICAgICB2aXJ0dWFsIHZvaWQgbW91c2VNb3ZlZEluQ29udGVudEFy
ZWEoKSBjb25zdDsKKyAgICB2aXJ0dWFsIHZvaWQgbW91c2VFbnRlcmVkU2Nyb2xsYmFyKFNjcm9s
bGJhciopIGNvbnN0OworICAgIHZpcnR1YWwgdm9pZCBtb3VzZUV4aXRlZFNjcm9sbGJhcihTY3Jv
bGxiYXIqKSBjb25zdDsKICAgICB2aXJ0dWFsIHZvaWQgd2lsbFN0YXJ0TGl2ZVJlc2l6ZSgpOwog
ICAgIHZpcnR1YWwgdm9pZCBjb250ZW50c1Jlc2l6ZWQoKSBjb25zdDsKICAgICB2aXJ0dWFsIHZv
aWQgd2lsbEVuZExpdmVSZXNpemUoKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21h
Yy9TY3JvbGxBbmltYXRvck1hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tYWMvU2Nyb2xsQW5pbWF0b3JNYWMubW0JKHJldmlzaW9uIDk4OTc3KQorKysgU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Njcm9sbEFuaW1hdG9yTWFjLm1tCSh3b3JraW5nIGNvcHkp
CkBAIC00NSw2ICs0NSwxNCBAQAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiB1c2luZyBuYW1l
c3BhY2Ugc3RkOwogCitzdGF0aWMgYm9vbCBzdXBwb3J0c1VJU3RhdGVUcmFuc2l0aW9uUHJvZ3Jl
c3MoKQoreworICAgIC8vIEZJWE1FOiBUaGlzIGlzIHRlbXBvcnRhcnkgdW50aWwgYWxsIHBsYXRm
b3JtcyB0aGF0IHN1cHBvcnQgU2Nyb2xsYmFyUGFpbnRlciBzdXBwb3J0IHRoaXMgcGFydCBvZiB0
aGUgYXBpLgorICAgIHN0YXRpYyBTY3JvbGxiYXJQYWludGVyIGR1bW15UGFpbnRlciA9IFtOU0Ns
YXNzRnJvbVN0cmluZyhAIk5TU2Nyb2xsZXJJbXAiKSBzY3JvbGxlckltcFdpdGhTdHlsZTp3a1Jl
Y29tbWVuZGVkU2Nyb2xsZXJTdHlsZSgpIGNvbnRyb2xTaXplOlJlZ3VsYXJTY3JvbGxiYXIgaG9y
aXpvbnRhbDpOTyByZXBsYWNpbmdTY3JvbGxlckltcDpuaWxdOworICAgIHN0YXRpYyBib29sIGds
b2JhbFN1cHBvcnRzVUlTdGF0ZVRyYW5zaXRpb25Qcm9ncmVzcyA9IFtkdW1teVBhaW50ZXIgcmVz
cG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcihtb3VzZUVudGVyZWRTY3JvbGxlcildOworICAgIHJl
dHVybiBnbG9iYWxTdXBwb3J0c1VJU3RhdGVUcmFuc2l0aW9uUHJvZ3Jlc3M7Cit9CisKIEBpbnRl
cmZhY2UgTlNPYmplY3QgKFNjcm9sbEFuaW1hdGlvbkhlbHBlckRldGFpbHMpCiAtIChpZClpbml0
V2l0aERlbGVnYXRlOihpZClkZWxlZ2F0ZTsKIC0gKHZvaWQpX3N0b3BSdW47CkBAIC0yNDMsMzQg
KzI1MSw1NSBAQCAtICh2b2lkKXNjcm9sbGVySW1wUGFpcjooaWQpc2Nyb2xsZXJJbXBQCiAKIEBl
bmQKIAorZW51bSBGZWF0dXJlVG9BbmltYXRlIHsKKyAgICBUaHVtYkFscGhhLAorICAgIFRyYWNr
QWxwaGEsCisgICAgVUlTdGF0ZVRyYW5zaXRpb24KK307CisKIEBpbnRlcmZhY2UgV2ViU2Nyb2xs
YmFyUGFydEFuaW1hdGlvbiA6IE5TQW5pbWF0aW9uCiB7CiAgICAgUmV0YWluUHRyPFNjcm9sbGJh
clBhaW50ZXI+IF9zY3JvbGxlclBhaW50ZXI7Ci0gICAgV2ViQ29yZTo6U2Nyb2xsYmFyUGFydCBf
cGFydDsKLSAgICBXZWJDb3JlOjpTY3JvbGxBbmltYXRvck1hYyogX2FuaW1hdG9yOwotICAgIENH
RmxvYXQgX2luaXRpYWxBbHBoYTsKLSAgICBDR0Zsb2F0IF9uZXdBbHBoYTsKKyAgICBGZWF0dXJl
VG9BbmltYXRlIF9mZWF0dXJlVG9BbmltYXRlOworICAgIFNjcm9sbEFuaW1hdG9yTWFjKiBfYW5p
bWF0b3I7CisgICAgQ0dGbG9hdCBfc3RhcnRWYWx1ZTsKKyAgICBDR0Zsb2F0IF9lbmRWYWx1ZTsK
IH0KLS0gKGlkKWluaXRXaXRoU2Nyb2xsYmFyUGFpbnRlcjooU2Nyb2xsYmFyUGFpbnRlcilzY3Jv
bGxlclBhaW50ZXIgcGFydDooV2ViQ29yZTo6U2Nyb2xsYmFyUGFydClwYXJ0IHNjcm9sbEFuaW1h
dG9yOihXZWJDb3JlOjpTY3JvbGxBbmltYXRvck1hYyopc2Nyb2xsQW5pbWF0b3IgYW5pbWF0ZUFs
cGhhVG86KENHRmxvYXQpbmV3QWxwaGEgZHVyYXRpb246KE5TVGltZUludGVydmFsKWR1cmF0aW9u
OworLSAoaWQpaW5pdFdpdGhTY3JvbGxiYXJQYWludGVyOihTY3JvbGxiYXJQYWludGVyKXNjcm9s
bGVyUGFpbnRlciBhbmltYXRlOihGZWF0dXJlVG9BbmltYXRlKWZlYXR1cmVUb0FuaW1hdGUgc2Ny
b2xsQW5pbWF0b3I6KFNjcm9sbEFuaW1hdG9yTWFjKilzY3JvbGxBbmltYXRvciBhbmltYXRlRnJv
bTooQ0dGbG9hdClzdGFydFZhbHVlIGFuaW1hdGVUbzooQ0dGbG9hdCllbmRWYWx1ZSBkdXJhdGlv
bjooTlNUaW1lSW50ZXJ2YWwpZHVyYXRpb247CiBAZW5kCiAKIEBpbXBsZW1lbnRhdGlvbiBXZWJT
Y3JvbGxiYXJQYXJ0QW5pbWF0aW9uCiAKLS0gKGlkKWluaXRXaXRoU2Nyb2xsYmFyUGFpbnRlcjoo
U2Nyb2xsYmFyUGFpbnRlcilzY3JvbGxlclBhaW50ZXIgcGFydDooV2ViQ29yZTo6U2Nyb2xsYmFy
UGFydClwYXJ0IHNjcm9sbEFuaW1hdG9yOihXZWJDb3JlOjpTY3JvbGxBbmltYXRvck1hYyopc2Ny
b2xsQW5pbWF0b3IgYW5pbWF0ZUFscGhhVG86KENHRmxvYXQpbmV3QWxwaGEgZHVyYXRpb246KE5T
VGltZUludGVydmFsKWR1cmF0aW9uCistIChpZClpbml0V2l0aFNjcm9sbGJhclBhaW50ZXI6KFNj
cm9sbGJhclBhaW50ZXIpc2Nyb2xsZXJQYWludGVyIGFuaW1hdGU6KEZlYXR1cmVUb0FuaW1hdGUp
ZmVhdHVyZVRvQW5pbWF0ZSBzY3JvbGxBbmltYXRvcjooU2Nyb2xsQW5pbWF0b3JNYWMqKXNjcm9s
bEFuaW1hdG9yIGFuaW1hdGVGcm9tOihDR0Zsb2F0KXN0YXJ0VmFsdWUgYW5pbWF0ZVRvOihDR0Zs
b2F0KWVuZFZhbHVlIGR1cmF0aW9uOihOU1RpbWVJbnRlcnZhbClkdXJhdGlvbgogewogICAgIHNl
bGYgPSBbc3VwZXIgaW5pdFdpdGhEdXJhdGlvbjpkdXJhdGlvbiBhbmltYXRpb25DdXJ2ZTpOU0Fu
aW1hdGlvbkVhc2VJbk91dF07CiAgICAgaWYgKCFzZWxmKQogICAgICAgICByZXR1cm4gbmlsOwog
ICAgIAogICAgIF9zY3JvbGxlclBhaW50ZXIgPSBzY3JvbGxlclBhaW50ZXI7Ci0gICAgX3BhcnQg
PSBwYXJ0OworICAgIF9mZWF0dXJlVG9BbmltYXRlID0gZmVhdHVyZVRvQW5pbWF0ZTsKICAgICBf
YW5pbWF0b3IgPSBzY3JvbGxBbmltYXRvcjsKLSAgICBfaW5pdGlhbEFscGhhID0gX3BhcnQgPT0g
V2ViQ29yZTo6VGh1bWJQYXJ0ID8gW19zY3JvbGxlclBhaW50ZXIuZ2V0KCkga25vYkFscGhhXSA6
IFtfc2Nyb2xsZXJQYWludGVyLmdldCgpIHRyYWNrQWxwaGFdOwotICAgIF9uZXdBbHBoYSA9IG5l
d0FscGhhOworICAgIF9zdGFydFZhbHVlID0gc3RhcnRWYWx1ZTsKKyAgICBfZW5kVmFsdWUgPSBl
bmRWYWx1ZTsKICAgICAKICAgICByZXR1cm4gc2VsZjsgICAgCiB9CiAKKy0gKHZvaWQpc2V0U2Ny
b2xsYmFyUGFpbnRlcjooU2Nyb2xsYmFyUGFpbnRlcilzY3JvbGxlclBhaW50ZXIKK3sKKyAgICBf
c2Nyb2xsZXJQYWludGVyID0gc2Nyb2xsZXJQYWludGVyOworfQorCistICh2b2lkKXNldFN0YXJ0
VmFsdWU6KENHRmxvYXQpc3RhcnRWYWx1ZQoreworICAgIF9zdGFydFZhbHVlID0gc3RhcnRWYWx1
ZTsKK30KKworLSAodm9pZClzZXRFbmRWYWx1ZTooQ0dGbG9hdCllbmRWYWx1ZQoreworICAgIF9l
bmRWYWx1ZSA9IGVuZFZhbHVlOworfQorCiAtICh2b2lkKXNldEN1cnJlbnRQcm9ncmVzczooTlNB
bmltYXRpb25Qcm9ncmVzcylwcm9ncmVzcwogewogICAgIFtzdXBlciBzZXRDdXJyZW50UHJvZ3Jl
c3M6cHJvZ3Jlc3NdOwpAQCAtMjc4LDIyICszMDcsMzIgQEAgLSAodm9pZClzZXRDdXJyZW50UHJv
Z3Jlc3M6KE5TQW5pbWF0aW9uUAogICAgIGlmICghX2FuaW1hdG9yKQogICAgICAgICByZXR1cm47
CiAKLSAgICBDR0Zsb2F0IGN1cnJlbnRBbHBoYTsKLSAgICBpZiAoX2luaXRpYWxBbHBoYSA+IF9u
ZXdBbHBoYSkKLSAgICAgICAgY3VycmVudEFscGhhID0gMSAtIHByb2dyZXNzOworICAgIENHRmxv
YXQgY3VycmVudFZhbHVlOworICAgIGlmIChfc3RhcnRWYWx1ZSA+IF9lbmRWYWx1ZSkKKyAgICAg
ICAgY3VycmVudFZhbHVlID0gMSAtIHByb2dyZXNzOwogICAgIGVsc2UKLSAgICAgICAgY3VycmVu
dEFscGhhID0gcHJvZ3Jlc3M7Ci0gICAgCi0gICAgaWYgKF9wYXJ0ID09IFdlYkNvcmU6OlRodW1i
UGFydCkKLSAgICAgICAgW19zY3JvbGxlclBhaW50ZXIuZ2V0KCkgc2V0S25vYkFscGhhOmN1cnJl
bnRBbHBoYV07Ci0gICAgZWxzZQotICAgICAgICBbX3Njcm9sbGVyUGFpbnRlci5nZXQoKSBzZXRU
cmFja0FscGhhOmN1cnJlbnRBbHBoYV07CisgICAgICAgIGN1cnJlbnRWYWx1ZSA9IHByb2dyZXNz
OworCisgICAgc3dpdGNoIChfZmVhdHVyZVRvQW5pbWF0ZSkgeworICAgIGNhc2UgVGh1bWJBbHBo
YToKKyAgICAgICAgW19zY3JvbGxlclBhaW50ZXIuZ2V0KCkgc2V0S25vYkFscGhhOmN1cnJlbnRW
YWx1ZV07CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgVHJhY2tBbHBoYToKKyAgICAgICAgW19z
Y3JvbGxlclBhaW50ZXIuZ2V0KCkgc2V0VHJhY2tBbHBoYTpjdXJyZW50VmFsdWVdOworICAgICAg
ICBicmVhazsKKyAgICBjYXNlIFVJU3RhdGVUcmFuc2l0aW9uOgorICAgICAgICBbX3Njcm9sbGVy
UGFpbnRlci5nZXQoKSBzZXRVaVN0YXRlVHJhbnNpdGlvblByb2dyZXNzOmN1cnJlbnRWYWx1ZV07
CisgICAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOworICAgICAgICBicmVhazsKKyAgICB9CiAKICAgICAvLyBJbnZhbGlkYXRlIHRoZSBzY3Jv
bGxiYXJzIHNvIHRoYXQgdGhleSBwYWludCB0aGUgYW5pbWF0aW9uCi0gICAgaWYgKFdlYkNvcmU6
OlNjcm9sbGJhciogdmVydGljYWxTY3JvbGxiYXIgPSBfYW5pbWF0b3ItPnNjcm9sbGFibGVBcmVh
KCktPnZlcnRpY2FsU2Nyb2xsYmFyKCkpCi0gICAgICAgIHZlcnRpY2FsU2Nyb2xsYmFyLT5pbnZh
bGlkYXRlUmVjdChXZWJDb3JlOjpJbnRSZWN0KDAsIDAsIHZlcnRpY2FsU2Nyb2xsYmFyLT53aWR0
aCgpLCB2ZXJ0aWNhbFNjcm9sbGJhci0+aGVpZ2h0KCkpKTsKLSAgICBpZiAoV2ViQ29yZTo6U2Ny
b2xsYmFyKiBob3Jpem9udGFsU2Nyb2xsYmFyID0gX2FuaW1hdG9yLT5zY3JvbGxhYmxlQXJlYSgp
LT5ob3Jpem9udGFsU2Nyb2xsYmFyKCkpCi0gICAgICAgIGhvcml6b250YWxTY3JvbGxiYXItPmlu
dmFsaWRhdGVSZWN0KFdlYkNvcmU6OkludFJlY3QoMCwgMCwgaG9yaXpvbnRhbFNjcm9sbGJhci0+
d2lkdGgoKSwgaG9yaXpvbnRhbFNjcm9sbGJhci0+aGVpZ2h0KCkpKTsKKyAgICBpZiAoU2Nyb2xs
YmFyKiB2ZXJ0aWNhbFNjcm9sbGJhciA9IF9hbmltYXRvci0+c2Nyb2xsYWJsZUFyZWEoKS0+dmVy
dGljYWxTY3JvbGxiYXIoKSkKKyAgICAgICAgdmVydGljYWxTY3JvbGxiYXItPmludmFsaWRhdGUo
KTsKKyAgICBpZiAoU2Nyb2xsYmFyKiBob3Jpem9udGFsU2Nyb2xsYmFyID0gX2FuaW1hdG9yLT5z
Y3JvbGxhYmxlQXJlYSgpLT5ob3Jpem9udGFsU2Nyb2xsYmFyKCkpCisgICAgICAgIGhvcml6b250
YWxTY3JvbGxiYXItPmludmFsaWRhdGUoKTsKIH0KIAogLSAodm9pZClzY3JvbGxBbmltYXRvckRl
c3Ryb3llZApAQCAtMzE1LDYgKzM1NCw5IEBAIEBpbnRlcmZhY2UgV2ViU2Nyb2xsYmFyUGFpbnRl
ckRlbGVnYXRlIDoKIAogICAgIFJldGFpblB0cjxXZWJTY3JvbGxiYXJQYXJ0QW5pbWF0aW9uPiBf
dmVydGljYWxUcmFja0FuaW1hdGlvbjsKICAgICBSZXRhaW5QdHI8V2ViU2Nyb2xsYmFyUGFydEFu
aW1hdGlvbj4gX2hvcml6b250YWxUcmFja0FuaW1hdGlvbjsKKworICAgIFJldGFpblB0cjxXZWJT
Y3JvbGxiYXJQYXJ0QW5pbWF0aW9uPiBfdmVydGljYWxVSVN0YXRlVHJhbnNpdGlvbkFuaW1hdGlv
bjsKKyAgICBSZXRhaW5QdHI8V2ViU2Nyb2xsYmFyUGFydEFuaW1hdGlvbj4gX2hvcml6b250YWxV
SVN0YXRlVHJhbnNpdGlvbkFuaW1hdGlvbjsKIH0KIC0gKGlkKWluaXRXaXRoU2Nyb2xsQW5pbWF0
b3I6KFdlYkNvcmU6OlNjcm9sbEFuaW1hdG9yTWFjKilzY3JvbGxBbmltYXRvcjsKIC0gKHZvaWQp
Y2FuY2VsQW5pbWF0aW9uczsKQEAgLTMzOSw2ICszODEsOCBAQCAtICh2b2lkKWNhbmNlbEFuaW1h
dGlvbnMKICAgICBbX2hvcml6b250YWxLbm9iQW5pbWF0aW9uLmdldCgpIHN0b3BBbmltYXRpb25d
OwogICAgIFtfdmVydGljYWxUcmFja0FuaW1hdGlvbi5nZXQoKSBzdG9wQW5pbWF0aW9uXTsKICAg
ICBbX2hvcml6b250YWxUcmFja0FuaW1hdGlvbi5nZXQoKSBzdG9wQW5pbWF0aW9uXTsKKyAgICBb
X3ZlcnRpY2FsVUlTdGF0ZVRyYW5zaXRpb25BbmltYXRpb24uZ2V0KCkgc3RvcEFuaW1hdGlvbl07
CisgICAgW19ob3Jpem9udGFsVUlTdGF0ZVRyYW5zaXRpb25BbmltYXRpb24uZ2V0KCkgc3RvcEFu
aW1hdGlvbl07CiAgICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUzsKIH0KIApAQCAtMzY0LDcg
KzQwOCwyNSBAQCAtIChDQUxheWVyICopbGF5ZXIKICAgICByZXR1cm4gZHVtbXlMYXllcjsKIH0K
IAotLSAodm9pZClzZXRVcEFuaW1hdGlvbjooUmV0YWluUHRyPFdlYlNjcm9sbGJhclBhcnRBbmlt
YXRpb24+JilzY3JvbGxiYXJQYXJ0QW5pbWF0aW9uIHNjcm9sbGVyUGFpbnRlcjooU2Nyb2xsYmFy
UGFpbnRlcilzY3JvbGxlclBhaW50ZXIgcGFydDooV2ViQ29yZTo6U2Nyb2xsYmFyUGFydClwYXJ0
IGFuaW1hdGVBbHBoYVRvOihDR0Zsb2F0KW5ld0FscGhhIGR1cmF0aW9uOihOU1RpbWVJbnRlcnZh
bClkdXJhdGlvbgorLSAoTlNQb2ludCltb3VzZUxvY2F0aW9uSW5TY3JvbGxlckZvclNjcm9sbGVy
SW1wOihpZClzY3JvbGxlckltcAoreworICAgIGlmICghX2FuaW1hdG9yKQorICAgICAgICByZXR1
cm4gTlNaZXJvUG9pbnQ7CisKKyAgICBTY3JvbGxiYXJQYWludGVyIHNjcm9sbGVyUGFpbnRlciA9
IChTY3JvbGxiYXJQYWludGVyKXNjcm9sbGVySW1wOworICAgIFNjcm9sbGJhciogc2Nyb2xsYmFy
OworICAgIGlmIChbc2Nyb2xsZXJQYWludGVyIGlzSG9yaXpvbnRhbF0pCisgICAgICAgIHNjcm9s
bGJhciA9IF9hbmltYXRvci0+c2Nyb2xsYWJsZUFyZWEoKS0+aG9yaXpvbnRhbFNjcm9sbGJhcigp
OworICAgIGVsc2UgCisgICAgICAgIHNjcm9sbGJhciA9IF9hbmltYXRvci0+c2Nyb2xsYWJsZUFy
ZWEoKS0+dmVydGljYWxTY3JvbGxiYXIoKTsKKworICAgIGlmICghc2Nyb2xsYmFyKQorICAgICAg
ICByZXR1cm4gTlNaZXJvUG9pbnQ7CisKKyAgICByZXR1cm4gc2Nyb2xsYmFyLT5jb252ZXJ0RnJv
bUNvbnRhaW5pbmdWaWV3KF9hbmltYXRvci0+c2Nyb2xsYWJsZUFyZWEoKS0+Y3VycmVudE1vdXNl
UG9zaXRpb24oKSk7Cit9CisKKy0gKHZvaWQpc2V0VXBBbHBoYUFuaW1hdGlvbjooUmV0YWluUHRy
PFdlYlNjcm9sbGJhclBhcnRBbmltYXRpb24+JilzY3JvbGxiYXJQYXJ0QW5pbWF0aW9uIHNjcm9s
bGVyUGFpbnRlcjooU2Nyb2xsYmFyUGFpbnRlcilzY3JvbGxlclBhaW50ZXIgcGFydDooV2ViQ29y
ZTo6U2Nyb2xsYmFyUGFydClwYXJ0IGFuaW1hdGVBbHBoYVRvOihDR0Zsb2F0KW5ld0FscGhhIGR1
cmF0aW9uOihOU1RpbWVJbnRlcnZhbClkdXJhdGlvbgogewogICAgIC8vIElmIHRoZSB1c2VyIGhh
cyBzY3JvbGxlZCB0aGUgcGFnZSwgdGhlbiB0aGUgc2Nyb2xsYmFycyBtdXN0IGJlIGFuaW1hdGVk
IGhlcmUuIAogICAgIC8vIFRoaXMgb3ZlcnJpZGVzIHRoZSBlYXJseSByZXR1cm5zLgpAQCAtMzk4
LDkgKzQ2MCwxMCBAQCAtICh2b2lkKXNldFVwQW5pbWF0aW9uOihSZXRhaW5QdHI8V2ViU2NyCiAg
ICAgW05TQW5pbWF0aW9uQ29udGV4dCBiZWdpbkdyb3VwaW5nXTsKICAgICBbW05TQW5pbWF0aW9u
Q29udGV4dCBjdXJyZW50Q29udGV4dF0gc2V0RHVyYXRpb246ZHVyYXRpb25dOwogICAgIHNjcm9s
bGJhclBhcnRBbmltYXRpb24uYWRvcHROUyhbW1dlYlNjcm9sbGJhclBhcnRBbmltYXRpb24gYWxs
b2NdIGluaXRXaXRoU2Nyb2xsYmFyUGFpbnRlcjpzY3JvbGxlclBhaW50ZXIgCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHBhcnQ6cGFydAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBzY3JvbGxBbmltYXRvcjpfYW5pbWF0b3IgCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGFuaW1hdGVBbHBoYVRvOm5ld0FscGhhIAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmltYXRlOnBhcnQgPT0g
VGh1bWJQYXJ0ID8gVGh1bWJBbHBoYSA6IFRyYWNrQWxwaGEKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2Nyb2xsQW5p
bWF0b3I6X2FuaW1hdG9yCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuaW1hdGVGcm9tOnBhcnQgPT0gVGh1bWJQYXJ0
ID8gW3Njcm9sbGVyUGFpbnRlciBrbm9iQWxwaGFdIDogW3Njcm9sbGVyUGFpbnRlciB0cmFja0Fs
cGhhXQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBhbmltYXRlVG86bmV3QWxwaGEgCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGR1cmF0aW9u
OmR1cmF0aW9uXSk7CiAgICAgW3Njcm9sbGJhclBhcnRBbmltYXRpb24uZ2V0KCkgc2V0QW5pbWF0
aW9uQmxvY2tpbmdNb2RlOk5TQW5pbWF0aW9uTm9uYmxvY2tpbmddOwogICAgIFtzY3JvbGxiYXJQ
YXJ0QW5pbWF0aW9uLmdldCgpIHN0YXJ0QW5pbWF0aW9uXTsKQEAgLTQxNCw5ICs0NzcsOSBAQCAt
ICh2b2lkKXNjcm9sbGVySW1wOihpZClzY3JvbGxlckltcCBhbmltCiAKICAgICBTY3JvbGxiYXJQ
YWludGVyIHNjcm9sbGVyUGFpbnRlciA9IChTY3JvbGxiYXJQYWludGVyKXNjcm9sbGVySW1wOwog
ICAgIGlmIChbc2Nyb2xsZXJJbXAgaXNIb3Jpem9udGFsXSkKLSAgICAgICAgW3NlbGYgc2V0VXBB
bmltYXRpb246X2hvcml6b250YWxLbm9iQW5pbWF0aW9uIHNjcm9sbGVyUGFpbnRlcjpzY3JvbGxl
clBhaW50ZXIgcGFydDpXZWJDb3JlOjpUaHVtYlBhcnQgYW5pbWF0ZUFscGhhVG86bmV3S25vYkFs
cGhhIGR1cmF0aW9uOmR1cmF0aW9uXTsKKyAgICAgICAgW3NlbGYgc2V0VXBBbHBoYUFuaW1hdGlv
bjpfaG9yaXpvbnRhbEtub2JBbmltYXRpb24gc2Nyb2xsZXJQYWludGVyOnNjcm9sbGVyUGFpbnRl
ciBwYXJ0OldlYkNvcmU6OlRodW1iUGFydCBhbmltYXRlQWxwaGFUbzpuZXdLbm9iQWxwaGEgZHVy
YXRpb246ZHVyYXRpb25dOwogICAgIGVsc2UKLSAgICAgICAgW3NlbGYgc2V0VXBBbmltYXRpb246
X3ZlcnRpY2FsS25vYkFuaW1hdGlvbiBzY3JvbGxlclBhaW50ZXI6c2Nyb2xsZXJQYWludGVyIHBh
cnQ6V2ViQ29yZTo6VGh1bWJQYXJ0IGFuaW1hdGVBbHBoYVRvOm5ld0tub2JBbHBoYSBkdXJhdGlv
bjpkdXJhdGlvbl07CisgICAgICAgIFtzZWxmIHNldFVwQWxwaGFBbmltYXRpb246X3ZlcnRpY2Fs
S25vYkFuaW1hdGlvbiBzY3JvbGxlclBhaW50ZXI6c2Nyb2xsZXJQYWludGVyIHBhcnQ6V2ViQ29y
ZTo6VGh1bWJQYXJ0IGFuaW1hdGVBbHBoYVRvOm5ld0tub2JBbHBoYSBkdXJhdGlvbjpkdXJhdGlv
bl07CiB9CiAKIC0gKHZvaWQpc2Nyb2xsZXJJbXA6KGlkKXNjcm9sbGVySW1wIGFuaW1hdGVUcmFj
a0FscGhhVG86KENHRmxvYXQpbmV3VHJhY2tBbHBoYSBkdXJhdGlvbjooTlNUaW1lSW50ZXJ2YWwp
ZHVyYXRpb24KQEAgLTQyNiw5ICs0ODksNDQgQEAgLSAodm9pZClzY3JvbGxlckltcDooaWQpc2Ny
b2xsZXJJbXAgYW5pbQogCiAgICAgU2Nyb2xsYmFyUGFpbnRlciBzY3JvbGxlclBhaW50ZXIgPSAo
U2Nyb2xsYmFyUGFpbnRlcilzY3JvbGxlckltcDsKICAgICBpZiAoW3Njcm9sbGVySW1wIGlzSG9y
aXpvbnRhbF0pCi0gICAgICAgIFtzZWxmIHNldFVwQW5pbWF0aW9uOl9ob3Jpem9udGFsVHJhY2tB
bmltYXRpb24gc2Nyb2xsZXJQYWludGVyOnNjcm9sbGVyUGFpbnRlciBwYXJ0OldlYkNvcmU6OkJh
Y2tUcmFja1BhcnQgYW5pbWF0ZUFscGhhVG86bmV3VHJhY2tBbHBoYSBkdXJhdGlvbjpkdXJhdGlv
bl07CisgICAgICAgIFtzZWxmIHNldFVwQWxwaGFBbmltYXRpb246X2hvcml6b250YWxUcmFja0Fu
aW1hdGlvbiBzY3JvbGxlclBhaW50ZXI6c2Nyb2xsZXJQYWludGVyIHBhcnQ6V2ViQ29yZTo6QmFj
a1RyYWNrUGFydCBhbmltYXRlQWxwaGFUbzpuZXdUcmFja0FscGhhIGR1cmF0aW9uOmR1cmF0aW9u
XTsKICAgICBlbHNlCi0gICAgICAgIFtzZWxmIHNldFVwQW5pbWF0aW9uOl92ZXJ0aWNhbFRyYWNr
QW5pbWF0aW9uIHNjcm9sbGVyUGFpbnRlcjpzY3JvbGxlclBhaW50ZXIgcGFydDpXZWJDb3JlOjpC
YWNrVHJhY2tQYXJ0IGFuaW1hdGVBbHBoYVRvOm5ld1RyYWNrQWxwaGEgZHVyYXRpb246ZHVyYXRp
b25dOworICAgICAgICBbc2VsZiBzZXRVcEFscGhhQW5pbWF0aW9uOl92ZXJ0aWNhbFRyYWNrQW5p
bWF0aW9uIHNjcm9sbGVyUGFpbnRlcjpzY3JvbGxlclBhaW50ZXIgcGFydDpXZWJDb3JlOjpCYWNr
VHJhY2tQYXJ0IGFuaW1hdGVBbHBoYVRvOm5ld1RyYWNrQWxwaGEgZHVyYXRpb246ZHVyYXRpb25d
OworfQorCistICh2b2lkKXNjcm9sbGVySW1wOihpZClzY3JvbGxlckltcCBhbmltYXRlVUlTdGF0
ZVRyYW5zaXRpb25XaXRoRHVyYXRpb246KE5TVGltZUludGVydmFsKWR1cmF0aW9uCit7CisgICAg
aWYgKCFfYW5pbWF0b3IpCisgICAgICAgIHJldHVybjsKKworICAgIGlmICghc3VwcG9ydHNVSVN0
YXRlVHJhbnNpdGlvblByb2dyZXNzKCkpCisgICAgICAgIHJldHVybjsKKworICAgIFNjcm9sbGJh
clBhaW50ZXIgc2Nyb2xsZXJQYWludGVyID0gKFNjcm9sbGJhclBhaW50ZXIpc2Nyb2xsZXJJbXA7
CisgICAgUmV0YWluUHRyPFdlYlNjcm9sbGJhclBhcnRBbmltYXRpb24+IHNjcm9sbGJhclBhcnRB
bmltYXRpb24gPSBbc2Nyb2xsZXJQYWludGVyIGlzSG9yaXpvbnRhbF0gPyBfaG9yaXpvbnRhbFVJ
U3RhdGVUcmFuc2l0aW9uQW5pbWF0aW9uIDogX3ZlcnRpY2FsVUlTdGF0ZVRyYW5zaXRpb25Bbmlt
YXRpb247CisKKyAgICAvLyBVSVN0YXRlVHJhbnNpdGlvbiBhbHdheXMgYW5pbWF0ZXMgdG8gMS4g
SW4gY2FzZSBhbiBhbmltYXRpb24gaXMgaW4gcHJvZ3Jlc3MgdGhpcyBhdm9pZHMgYSBoYXJkIHRy
YW5zaXRpb24uCisgICAgW3Njcm9sbGVyUGFpbnRlciBzZXRVaVN0YXRlVHJhbnNpdGlvblByb2dy
ZXNzOjEgLSBbc2Nyb2xsZXJQYWludGVyIHVpU3RhdGVUcmFuc2l0aW9uUHJvZ3Jlc3NdXTsKKwor
ICAgIFtOU0FuaW1hdGlvbkNvbnRleHQgYmVnaW5Hcm91cGluZ107CisgICAgW1tOU0FuaW1hdGlv
bkNvbnRleHQgY3VycmVudENvbnRleHRdIHNldER1cmF0aW9uOmR1cmF0aW9uXTsKKyAgICBpZiAo
IXNjcm9sbGJhclBhcnRBbmltYXRpb24pIHsKKyAgICAgICAgc2Nyb2xsYmFyUGFydEFuaW1hdGlv
bi5hZG9wdE5TKFtbV2ViU2Nyb2xsYmFyUGFydEFuaW1hdGlvbiBhbGxvY10gaW5pdFdpdGhTY3Jv
bGxiYXJQYWludGVyOnNjcm9sbGVyUGFpbnRlciAKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5pbWF0ZTpVSVN0YXRl
VHJhbnNpdGlvbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBzY3JvbGxBbmltYXRvcjpfYW5pbWF0b3IKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgYW5pbWF0ZUZyb206W3Njcm9sbGVyUGFpbnRlciB1aVN0YXRlVHJhbnNpdGlvblByb2dyZXNz
XQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBhbmltYXRlVG86MS4wIAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkdXJhdGlvbjpkdXJhdGlv
bl0pOworICAgICAgICBbc2Nyb2xsYmFyUGFydEFuaW1hdGlvbi5nZXQoKSBzZXRBbmltYXRpb25C
bG9ja2luZ01vZGU6TlNBbmltYXRpb25Ob25ibG9ja2luZ107CisgICAgfSBlbHNlIHsKKyAgICAg
ICAgLy8gSWYgd2UgZG9uJ3QgbmVlZCB0byBpbml0aWFsaXplIHRoZSBhbmltYXRpb24sIGp1c3Qg
cmVzZXQgdGhlIHZhbHVlcyBpbiBjYXNlIHRoZXkgaGF2ZSBjaGFuZ2VkLgorICAgICAgICBbc2Ny
b2xsYmFyUGFydEFuaW1hdGlvbi5nZXQoKSBzZXRTY3JvbGxiYXJQYWludGVyOnNjcm9sbGVyUGFp
bnRlcl07CisgICAgICAgIFtzY3JvbGxiYXJQYXJ0QW5pbWF0aW9uLmdldCgpIHNldFN0YXJ0VmFs
dWU6W3Njcm9sbGVyUGFpbnRlciB1aVN0YXRlVHJhbnNpdGlvblByb2dyZXNzXV07CisgICAgICAg
IFtzY3JvbGxiYXJQYXJ0QW5pbWF0aW9uLmdldCgpIHNldEVuZFZhbHVlOjEuMF07CisgICAgICAg
IFtzY3JvbGxiYXJQYXJ0QW5pbWF0aW9uLmdldCgpIHNldER1cmF0aW9uOmR1cmF0aW9uXTsKKyAg
ICB9CisgICAgW3Njcm9sbGJhclBhcnRBbmltYXRpb24uZ2V0KCkgc3RhcnRBbmltYXRpb25dOwor
ICAgIFtOU0FuaW1hdGlvbkNvbnRleHQgZW5kR3JvdXBpbmddOwogfQogCiAtICh2b2lkKXNjcm9s
bGVySW1wOihpZClzY3JvbGxlckltcCBvdmVybGF5U2Nyb2xsZXJTdGF0ZUNoYW5nZWRUbzooTlNV
SW50ZWdlciluZXdPdmVybGF5U2Nyb2xsZXJTdGF0ZQpAQCAtNDQ1LDYgKzU0Myw4IEBAIC0gKHZv
aWQpc2Nyb2xsQW5pbWF0b3JEZXN0cm95ZWQKICAgICBbX2hvcml6b250YWxLbm9iQW5pbWF0aW9u
LmdldCgpIHNjcm9sbEFuaW1hdG9yRGVzdHJveWVkXTsKICAgICBbX3ZlcnRpY2FsVHJhY2tBbmlt
YXRpb24uZ2V0KCkgc2Nyb2xsQW5pbWF0b3JEZXN0cm95ZWRdOwogICAgIFtfaG9yaXpvbnRhbFRy
YWNrQW5pbWF0aW9uLmdldCgpIHNjcm9sbEFuaW1hdG9yRGVzdHJveWVkXTsKKyAgICBbX3ZlcnRp
Y2FsVUlTdGF0ZVRyYW5zaXRpb25BbmltYXRpb24uZ2V0KCkgc2Nyb2xsQW5pbWF0b3JEZXN0cm95
ZWRdOworICAgIFtfaG9yaXpvbnRhbFVJU3RhdGVUcmFuc2l0aW9uQW5pbWF0aW9uLmdldCgpIHNj
cm9sbEFuaW1hdG9yRGVzdHJveWVkXTsKICAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TOwog
fQogCkBAIC02NTcsNiArNzU3LDM0IEBAIHZvaWQgU2Nyb2xsQW5pbWF0b3JNYWM6Om1vdXNlTW92
ZWRJbkNvbnQKICNlbmRpZgogfQogCit2b2lkIFNjcm9sbEFuaW1hdG9yTWFjOjptb3VzZUVudGVy
ZWRTY3JvbGxiYXIoU2Nyb2xsYmFyKiBzY3JvbGxiYXIpIGNvbnN0Cit7CisgICAgaWYgKCFzY3Jv
bGxhYmxlQXJlYSgpLT5pc09uQWN0aXZlUGFnZSgpKQorICAgICAgICByZXR1cm47CisjaWYgVVNF
KFNDUk9MTEJBUl9QQUlOVEVSKQorICAgIGlmICghc3VwcG9ydHNVSVN0YXRlVHJhbnNpdGlvblBy
b2dyZXNzKCkpCisgICAgICAgIHJldHVybjsKKyAgICBpZiAoU2Nyb2xsYmFyVGhlbWVNYWMqIHRo
ZW1lID0gbWFjU2Nyb2xsYmFyVGhlbWUoKSkgeworICAgICAgICBTY3JvbGxiYXJQYWludGVyIHBh
aW50ZXIgPSB0aGVtZS0+cGFpbnRlckZvclNjcm9sbGJhcihzY3JvbGxiYXIpOworICAgICAgICBb
cGFpbnRlciBtb3VzZUVudGVyZWRTY3JvbGxlcl07CisgICAgfQorI2VuZGlmCit9CisKK3ZvaWQg
U2Nyb2xsQW5pbWF0b3JNYWM6Om1vdXNlRXhpdGVkU2Nyb2xsYmFyKFNjcm9sbGJhciogc2Nyb2xs
YmFyKSBjb25zdAoreworICAgIGlmICghc2Nyb2xsYWJsZUFyZWEoKS0+aXNPbkFjdGl2ZVBhZ2Uo
KSkKKyAgICAgICAgcmV0dXJuOworI2lmIFVTRShTQ1JPTExCQVJfUEFJTlRFUikKKyAgICBpZiAo
IXN1cHBvcnRzVUlTdGF0ZVRyYW5zaXRpb25Qcm9ncmVzcygpKQorICAgICAgICByZXR1cm47Cisg
ICAgaWYgKFNjcm9sbGJhclRoZW1lTWFjKiB0aGVtZSA9IG1hY1Njcm9sbGJhclRoZW1lKCkpIHsK
KyAgICAgICAgU2Nyb2xsYmFyUGFpbnRlciBwYWludGVyID0gdGhlbWUtPnBhaW50ZXJGb3JTY3Jv
bGxiYXIoc2Nyb2xsYmFyKTsKKyAgICAgICAgW3BhaW50ZXIgbW91c2VFeGl0ZWRTY3JvbGxlcl07
CisgICAgfQorI2VuZGlmCit9CisKIHZvaWQgU2Nyb2xsQW5pbWF0b3JNYWM6OndpbGxTdGFydExp
dmVSZXNpemUoKQogewogICAgIGlmICghc2Nyb2xsYWJsZUFyZWEoKS0+aXNPbkFjdGl2ZVBhZ2Uo
KSkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>113575</attachid>
            <date>2011-11-03 16:34:08 -0700</date>
            <delta_ts>2011-11-07 11:26:17 -0800</delta_ts>
            <desc>Patch with a few small adjustments</desc>
            <filename>for-review-2.txt</filename>
            <type>text/plain</type>
            <size>21545</size>
            <attacher name="Beth Dakin">bdakin</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDk5MjIzKQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNjYgQEAKKzIwMTEtMTEtMDMgIEJldGggRGFr
aW4gIDxiZGFraW5AYXBwbGUuY29tPgorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD03MTQ5MAorICAgICAgICBTdXBwb3J0IHVpU3RhdGVUcmFuc2l0aW9u
UHJvZ3Jlc3MgZm9yIHNjcm9sbGJhcnMKKyAgICAgICAgLWFuZCBjb3JyZXNwb25kaW5nLQorICAg
ICAgICA8cmRhcjovL3Byb2JsZW0vOTg0OTYxMj4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBTdGVwIDEgb2Ygc3VwcG9ydGluZyB1aVN0YXRlVHJhbnNp
dGlvblByb2dyZXNzIGlzIGtub3dpbmcgd2hlbiB0aGUgbW91c2UgaGFzIAorICAgICAgICBlbnRl
cmVkIG9yIGV4aXRlZCBhIHNjcm9sbGJhci4gVGhlc2UgY2hhbmdlcyB0byBFdmVudEhhbmRsZXIg
cGFzcyB0aGF0IGluZm9ybWF0aW9uIAorICAgICAgICBvbiB0byB0aGUgU2Nyb2xsQW5pbWF0b3Iu
CisgICAgICAgICogcGFnZS9FdmVudEhhbmRsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RXZl
bnRIYW5kbGVyOjpoYW5kbGVNb3VzZVJlbGVhc2VFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpF
dmVudEhhbmRsZXI6OnVwZGF0ZUxhc3RTY3JvbGxiYXJVbmRlck1vdXNlKToKKyAgICAgICAgCisg
ICAgICAgIFNjcm9sbEFuaW1hdG9yIHBhc3NlcyB0aGUgaW5mb3JtYXRpb24gb24gdG8gQXBwS2l0
LgorICAgICAgICAqIHBsYXRmb3JtL1Njcm9sbEFuaW1hdG9yLmg6CisgICAgICAgIChXZWJDb3Jl
OjpTY3JvbGxBbmltYXRvcjo6bW91c2VFbnRlcmVkU2Nyb2xsYmFyKToKKyAgICAgICAgKFdlYkNv
cmU6OlNjcm9sbEFuaW1hdG9yOjptb3VzZUV4aXRlZFNjcm9sbGJhcik6CisgICAgICAgICogcGxh
dGZvcm0vbWFjL1Njcm9sbEFuaW1hdG9yTWFjLmg6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxB
bmltYXRvck1hYzo6bW91c2VFbnRlcmVkU2Nyb2xsYmFyKToKKyAgICAgICAgKFdlYkNvcmU6OlNj
cm9sbEFuaW1hdG9yTWFjOjptb3VzZUV4aXRlZFNjcm9sbGJhcik6CisKKyAgICAgICAgVGhlcmUg
YXJlIHNldmVyYWwgbmV3IHBpZWNlcyBvZiBBcHBLaXQgYXBpIHdlIG11c3QgY2FsbCBpbnRvLgor
ICAgICAgICAqIHBsYXRmb3JtL21hYy9OU1Njcm9sbGVySW1wRGV0YWlscy5oOgorCisgICAgICAg
IFRoaXMgaXMgYSB0ZW1wb3JhcnkgZnVuY3Rpb24gdGhhdCBpcyBuZWVkZWQgZm9yIHRoZSB0aW1l
IGJlaW5nIHNpbmNlIHRoZXJlIGlzIG5ldyAKKyAgICAgICAgQXBwS2l0IGFwaSByZXF1aXJlZCBm
b3IgdGhpcyB0byB3b3JrLgorICAgICAgICAqIHBsYXRmb3JtL21hYy9TY3JvbGxBbmltYXRvck1h
Yy5tbToKKyAgICAgICAgKHN1cHBvcnRzVUlTdGF0ZVRyYW5zaXRpb25Qcm9ncmVzcyk6CisKKyAg
ICAgICAgSSByZWZhY3RvcmVkIFdlYlNjcm9sbGJhclBhcnRBbmltYXRpb24gc28gdGhhdCBpdCBj
YW4gaGFuZGxlIHRoZSAKKyAgICAgICAgdWlTdGF0ZVRyYW5zaXRpb25Qcm9ncmVzcyBhbmltYXRp
b24gYXMgd2VsbCBhcyB0aGUgYWxwaGEgYW5pbWF0aW9ucyBpdCBhbHJlYWR5IAorICAgICAgICBo
YW5kbGVkLiBUaGlzIG1vc3RseSBpbnZvbHZlZCByZS1uYW1pbmcgdGhpbmdzIGFuZCBtYWtpbmcg
dXNlIG9mIGEgbmV3IGVudW0gY2FsbGVkIAorICAgICAgICBGZWF0dXJlVG9BbmltYXRlIHdoaWNo
IGtlZXBzIHRyYWNrIG9mIHdoYXQgdGhlIGluc3RhbmNlIG9mIAorICAgICAgICBXZWJTY3JvbGxi
YXJQYXJ0QW5pbWF0aW9uIGlzIGFuaW1hdGluZy4KKyAgICAgICAgKC1bV2ViU2Nyb2xsYmFyUGFy
dEFuaW1hdGlvbiBpbml0V2l0aFNjcm9sbGJhclBhaW50ZXI6YW5pbWF0ZTpzY3JvbGxBbmltYXRv
cjphbmltYXRlRnJvbTphbmltYXRlVG86ZHVyYXRpb246XSk6CisgICAgICAgICgtW1dlYlNjcm9s
bGJhclBhcnRBbmltYXRpb24gc2V0U2Nyb2xsYmFyUGFpbnRlcjpdKToKKyAgICAgICAgKC1bV2Vi
U2Nyb2xsYmFyUGFydEFuaW1hdGlvbiBzZXRTdGFydFZhbHVlOl0pOgorICAgICAgICAoLVtXZWJT
Y3JvbGxiYXJQYXJ0QW5pbWF0aW9uIHNldEVuZFZhbHVlOl0pOgorICAgICAgICAoLVtXZWJTY3Jv
bGxiYXJQYXJ0QW5pbWF0aW9uIHNldEN1cnJlbnRQcm9ncmVzczpdKToKKworICAgICAgICBXZWJT
Y3JvbGxiYXJQYWludGVyRGVsZWdhdGUgaGFzIHR3byBuZXcgYW5pbWF0aW9ucywgCisgICAgICAg
IF92ZXJ0aWNhbFVJU3RhdGVUcmFuc2l0aW9uQW5pbWF0aW9uLCBhbmQgX2hvcml6b250YWxVSVN0
YXRlVHJhbnNpdGlvbkFuaW1hdGlvbi4gSXQgCisgICAgICAgIGFsc28gcmVzcG9uZHMgdG8gYSBm
ZXcgbmV3IGRlbGVnYXRlIGNhbGxzLgorICAgICAgICAoLVtXZWJTY3JvbGxiYXJQYWludGVyRGVs
ZWdhdGUgY2FuY2VsQW5pbWF0aW9uc10pOgorCisgICAgICAgIFRoaXMgaXMgYSBuZXcgZGVsZWdh
dGUgY2FsbCBuZWVkZWQgZm9yIHVpU3RhdGVUcmFuc2l0aW9uUHJvZ3Jlc3MuCisgICAgICAgICgt
W1dlYlNjcm9sbGJhclBhaW50ZXJEZWxlZ2F0ZSBtb3VzZUxvY2F0aW9uSW5TY3JvbGxlckZvclNj
cm9sbGVySW1wOl0pOgorCisgICAgICAgIEkgcmUtbmFtZWQgc2V0VXBBbmltYXRpb24gdG8gc2V0
VXBBbHBoYUFuaW1hdGlvbiBzaW5jZSBpdCBkb2VzIGEgbG90IG9mIHRoaW5ncyAKKyAgICAgICAg
dGhhdCBhcmUgc3BlY2lmaWMgdG8gdGhlIGFscGhhIGFuaW1hdGlvbiBhbmQgSSBjaG9zZSBub3Qg
dG8gcmUtdXNlIGl0IGZvciAKKyAgICAgICAgdWlTdGF0ZVRyYW5zaXRpb24uCisgICAgICAgICgt
W1dlYlNjcm9sbGJhclBhaW50ZXJEZWxlZ2F0ZSBzZXRVcEFscGhhQW5pbWF0aW9uOnNjcm9sbGVy
UGFpbnRlcjpwYXJ0OldlYkNvcmU6OmFuaW1hdGVBbHBoYVRvOmR1cmF0aW9uOl0pOgorICAgICAg
ICAoLVtXZWJTY3JvbGxiYXJQYWludGVyRGVsZWdhdGUgc2Nyb2xsZXJJbXA6YW5pbWF0ZUtub2JB
bHBoYVRvOmR1cmF0aW9uOl0pOgorICAgICAgICAoLVtXZWJTY3JvbGxiYXJQYWludGVyRGVsZWdh
dGUgc2Nyb2xsZXJJbXA6YW5pbWF0ZVRyYWNrQWxwaGFUbzpkdXJhdGlvbjpdKToKKworICAgICAg
ICBOZXcgZGVsZWdhdGUgY2FsbCBmb3IgdGhlIHVpU3RhdGVUcmFuc2l0aW9uIGFuaW1hdGlvbiB0
aGF0IHNldHMgdXAgdGhhdCBhbmltYXRpb24gCisgICAgICAgIGFuZCBraWNrcyBpdCBvZmYuCisg
ICAgICAgICgtW1dlYlNjcm9sbGJhclBhaW50ZXJEZWxlZ2F0ZSBzY3JvbGxlckltcDphbmltYXRl
VUlTdGF0ZVRyYW5zaXRpb25XaXRoRHVyYXRpb246XSk6CisgICAgICAgICgtW1dlYlNjcm9sbGJh
clBhaW50ZXJEZWxlZ2F0ZSBzY3JvbGxBbmltYXRvckRlc3Ryb3llZF0pOgorCiAyMDExLTExLTAz
ICBNYXJrIEhhaG5lbmJlcmcgIDxtaGFobmVuYmVyZ0BhcHBsZS5jb20+CiAKICAgICAgICAgRGUt
dmlydHVhbGl6ZSBKU09iamVjdDo6Y2xhc3NOYW1lCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdl
L0V2ZW50SGFuZGxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9FdmVu
dEhhbmRsZXIuY3BwCShyZXZpc2lvbiA5ODk3NykKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRXZl
bnRIYW5kbGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTcxMiw2ICsxNzEyLDggQEAgYm9vbCBF
dmVudEhhbmRsZXI6OmhhbmRsZU1vdXNlUmVsZWFzZUV2ZQogCiAgICAgaWYgKG1fbGFzdFNjcm9s
bGJhclVuZGVyTW91c2UpIHsKICAgICAgICAgaW52YWxpZGF0ZUNsaWNrKCk7CisgICAgICAgIGlm
IChTY3JvbGxhYmxlQXJlYSogc2Nyb2xsYWJsZUFyZWEgPSBtX2xhc3RTY3JvbGxiYXJVbmRlck1v
dXNlLT5zY3JvbGxhYmxlQXJlYSgpKQorICAgICAgICAgICAgc2Nyb2xsYWJsZUFyZWEtPnNjcm9s
bEFuaW1hdG9yKCktPm1vdXNlRXhpdGVkU2Nyb2xsYmFyKG1fbGFzdFNjcm9sbGJhclVuZGVyTW91
c2UuZ2V0KCkpOwogICAgICAgICByZXR1cm4gbV9sYXN0U2Nyb2xsYmFyVW5kZXJNb3VzZS0+bW91
c2VVcCgpOwogICAgIH0KIApAQCAtMzEzMiwxMiArMzEzNCwyMiBAQCBib29sIEV2ZW50SGFuZGxl
cjo6cGFzc01vdXNlUHJlc3NFdmVudFRvCiAvLyBsYXN0IHRvIHNjcm9sbGJhciBpZiBzZXRMYXN0
IGlzIHRydWU7IGVsc2Ugc2V0IGxhc3QgdG8gMC4KIHZvaWQgRXZlbnRIYW5kbGVyOjp1cGRhdGVM
YXN0U2Nyb2xsYmFyVW5kZXJNb3VzZShTY3JvbGxiYXIqIHNjcm9sbGJhciwgYm9vbCBzZXRMYXN0
KQogewotICAgIGlmIChtX2xhc3RTY3JvbGxiYXJVbmRlck1vdXNlICE9IHNjcm9sbGJhcikgewot
ICAgICAgICAvLyBTZW5kIG1vdXNlIGV4aXRlZCB0byB0aGUgb2xkIHNjcm9sbGJhci4KLSAgICAg
ICAgaWYgKG1fbGFzdFNjcm9sbGJhclVuZGVyTW91c2UpCi0gICAgICAgICAgICBtX2xhc3RTY3Jv
bGxiYXJVbmRlck1vdXNlLT5tb3VzZUV4aXRlZCgpOwotICAgICAgICBtX2xhc3RTY3JvbGxiYXJV
bmRlck1vdXNlID0gc2V0TGFzdCA/IHNjcm9sbGJhciA6IDA7CisgICAgaWYgKG1fbGFzdFNjcm9s
bGJhclVuZGVyTW91c2UgPT0gc2Nyb2xsYmFyKQorICAgICAgICByZXR1cm47CisKKyAgICAvLyBT
ZW5kIG1vdXNlIGV4aXRlZCB0byB0aGUgb2xkIHNjcm9sbGJhci4KKyAgICBpZiAobV9sYXN0U2Ny
b2xsYmFyVW5kZXJNb3VzZSkgeworICAgICAgICBtX2xhc3RTY3JvbGxiYXJVbmRlck1vdXNlLT5t
b3VzZUV4aXRlZCgpOworICAgICAgICBpZiAoU2Nyb2xsYWJsZUFyZWEqIHNjcm9sbGFibGVBcmVh
ID0gbV9sYXN0U2Nyb2xsYmFyVW5kZXJNb3VzZS0+c2Nyb2xsYWJsZUFyZWEoKSkKKyAgICAgICAg
ICAgIHNjcm9sbGFibGVBcmVhLT5zY3JvbGxBbmltYXRvcigpLT5tb3VzZUV4aXRlZFNjcm9sbGJh
cihtX2xhc3RTY3JvbGxiYXJVbmRlck1vdXNlLmdldCgpKTsKICAgICB9CisKKyAgICBpZiAoc2V0
TGFzdCAmJiBzY3JvbGxiYXIpIHsKKyAgICAgICAgaWYgKFNjcm9sbGFibGVBcmVhKiBzY3JvbGxh
YmxlQXJlYSA9IHNjcm9sbGJhci0+c2Nyb2xsYWJsZUFyZWEoKSkKKyAgICAgICAgICAgIHNjcm9s
bGFibGVBcmVhLT5zY3JvbGxBbmltYXRvcigpLT5tb3VzZUVudGVyZWRTY3JvbGxiYXIoc2Nyb2xs
YmFyKTsKKyAgICB9CisKKyAgICBtX2xhc3RTY3JvbGxiYXJVbmRlck1vdXNlID0gc2V0TGFzdCA/
IHNjcm9sbGJhciA6IDA7CiB9CiAKICNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQpJbmRleDogU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0b3IuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRvci5oCShyZXZpc2lvbiA5ODk3NykKKysr
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1hdG9yLmgJKHdvcmtpbmcgY29weSkK
QEAgLTc4LDYgKzc4LDggQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBtb3VzZUVudGVyZWRD
b250ZW50QXJlYSgpIGNvbnN0IHsgfQogICAgIHZpcnR1YWwgdm9pZCBtb3VzZUV4aXRlZENvbnRl
bnRBcmVhKCkgY29uc3QgeyB9CiAgICAgdmlydHVhbCB2b2lkIG1vdXNlTW92ZWRJbkNvbnRlbnRB
cmVhKCkgY29uc3QgeyB9CisgICAgdmlydHVhbCB2b2lkIG1vdXNlRW50ZXJlZFNjcm9sbGJhcihT
Y3JvbGxiYXIqKSBjb25zdCB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgbW91c2VFeGl0ZWRTY3JvbGxi
YXIoU2Nyb2xsYmFyKikgY29uc3QgeyB9CiAgICAgdmlydHVhbCB2b2lkIHdpbGxTdGFydExpdmVS
ZXNpemUoKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgY29udGVudHNSZXNpemVkKCkgY29uc3QgeyB9
CiAgICAgdmlydHVhbCB2b2lkIHdpbGxFbmRMaXZlUmVzaXplKCkgeyB9CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tYWMvTlNTY3JvbGxlckltcERldGFpbHMuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvTlNTY3JvbGxlckltcERldGFpbHMuaAkocmV2
aXNpb24gOTg5NzcpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvTlNTY3JvbGxlcklt
cERldGFpbHMuaAkod29ya2luZyBjb3B5KQpAQCAtNDEsNiArNDEsNyBAQCBAaW50ZXJmYWNlIE5T
T2JqZWN0IChTY3JvbGxiYXJQYWludGVyKQogLSAodm9pZClzZXRLbm9iUHJvcG9ydGlvbjooQ0dG
bG9hdClwcm9wb3J0aW9uOwogLSAodm9pZClzZXRLbm9iU3R5bGU6KE5TU2Nyb2xsZXJLbm9iU3R5
bGUpa25vYlN0eWxlOwogLSAodm9pZClzZXREZWxlZ2F0ZTooaWQpZGVsZWdhdGU7CistICh2b2lk
KXNldFVpU3RhdGVUcmFuc2l0aW9uUHJvZ3Jlc3M6KENHRmxvYXQpdWlTdGF0ZVRyYW5zaXRpb25Q
cm9ncmVzczsKIC0gKEJPT0wpaXNIb3Jpem9udGFsOwogLSAoQ0dGbG9hdCl0cmFja1dpZHRoOwog
LSAoQ0dGbG9hdCl0cmFja0JveFdpZHRoOwpAQCAtNDksOSArNTAsMTIgQEAgQGludGVyZmFjZSBO
U09iamVjdCAoU2Nyb2xsYmFyUGFpbnRlcikKIC0gKENHRmxvYXQpa25vYk92ZXJsYXBFbmRJbnNl
dDsKIC0gKENHRmxvYXQpdHJhY2tFbmRJbnNldDsKIC0gKENHRmxvYXQpa25vYkVuZEluc2V0Owor
LSAoQ0dGbG9hdCl1aVN0YXRlVHJhbnNpdGlvblByb2dyZXNzOwogLSAoTlNSZWN0KXJlY3RGb3JQ
YXJ0OihOU1Njcm9sbGVyUGFydClwYXJ0Q29kZTsKIC0gKHZvaWQpZHJhd0tub2JTbG90SW5SZWN0
OihOU1JlY3Qpc2xvdFJlY3QgaGlnaGxpZ2h0OihCT09MKWZsYWcgYWxwaGE6KENHRmxvYXQpYWxw
aGE7CiAtICh2b2lkKWRyYXdLbm9iOworLSAodm9pZCltb3VzZUVudGVyZWRTY3JvbGxlcjsKKy0g
KHZvaWQpbW91c2VFeGl0ZWRTY3JvbGxlcjsKIEBlbmQKIAogQGludGVyZmFjZSBOU09iamVjdCAo
U2Nyb2xsYmFyUGFpbnRlckNvbnRyb2xsZXIpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tYWMvU2Nyb2xsQW5pbWF0b3JNYWMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tYWMvU2Nyb2xsQW5pbWF0b3JNYWMuaAkocmV2aXNpb24gOTg5NzcpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvU2Nyb2xsQW5pbWF0b3JNYWMuaAkod29ya2luZyBjb3B5
KQpAQCAtMTE3LDYgKzExNyw4IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIG1vdXNlRW50
ZXJlZENvbnRlbnRBcmVhKCkgY29uc3Q7CiAgICAgdmlydHVhbCB2b2lkIG1vdXNlRXhpdGVkQ29u
dGVudEFyZWEoKSBjb25zdDsKICAgICB2aXJ0dWFsIHZvaWQgbW91c2VNb3ZlZEluQ29udGVudEFy
ZWEoKSBjb25zdDsKKyAgICB2aXJ0dWFsIHZvaWQgbW91c2VFbnRlcmVkU2Nyb2xsYmFyKFNjcm9s
bGJhciopIGNvbnN0OworICAgIHZpcnR1YWwgdm9pZCBtb3VzZUV4aXRlZFNjcm9sbGJhcihTY3Jv
bGxiYXIqKSBjb25zdDsKICAgICB2aXJ0dWFsIHZvaWQgd2lsbFN0YXJ0TGl2ZVJlc2l6ZSgpOwog
ICAgIHZpcnR1YWwgdm9pZCBjb250ZW50c1Jlc2l6ZWQoKSBjb25zdDsKICAgICB2aXJ0dWFsIHZv
aWQgd2lsbEVuZExpdmVSZXNpemUoKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21h
Yy9TY3JvbGxBbmltYXRvck1hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tYWMvU2Nyb2xsQW5pbWF0b3JNYWMubW0JKHJldmlzaW9uIDk4OTc3KQorKysgU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Njcm9sbEFuaW1hdG9yTWFjLm1tCSh3b3JraW5nIGNvcHkp
CkBAIC00NSw2ICs0NSwxMyBAQAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiB1c2luZyBuYW1l
c3BhY2Ugc3RkOwogCitzdGF0aWMgYm9vbCBzdXBwb3J0c1VJU3RhdGVUcmFuc2l0aW9uUHJvZ3Jl
c3MoKQoreworICAgIC8vIEZJWE1FOiBUaGlzIGlzIHRlbXBvcmFyeSB1bnRpbCBhbGwgcGxhdGZv
cm1zIHRoYXQgc3VwcG9ydCBTY3JvbGxiYXJQYWludGVyIHN1cHBvcnQgdGhpcyBwYXJ0IG9mIHRo
ZSBBUEkuCisgICAgc3RhdGljIGJvb2wgZ2xvYmFsU3VwcG9ydHNVSVN0YXRlVHJhbnNpdGlvblBy
b2dyZXNzID0gW05TQ2xhc3NGcm9tU3RyaW5nKEAiTlNTY3JvbGxlckltcCIpIGluc3RhbmNlc1Jl
c3BvbmRUb1NlbGVjdG9yOkBzZWxlY3Rvcihtb3VzZUVudGVyZWRTY3JvbGxlcildOworICAgIHJl
dHVybiBnbG9iYWxTdXBwb3J0c1VJU3RhdGVUcmFuc2l0aW9uUHJvZ3Jlc3M7Cit9CisKIEBpbnRl
cmZhY2UgTlNPYmplY3QgKFNjcm9sbEFuaW1hdGlvbkhlbHBlckRldGFpbHMpCiAtIChpZClpbml0
V2l0aERlbGVnYXRlOihpZClkZWxlZ2F0ZTsKIC0gKHZvaWQpX3N0b3BSdW47CkBAIC0yNDMsMzQg
KzI1MCw1NSBAQCAtICh2b2lkKXNjcm9sbGVySW1wUGFpcjooaWQpc2Nyb2xsZXJJbXBQCiAKIEBl
bmQKIAorZW51bSBGZWF0dXJlVG9BbmltYXRlIHsKKyAgICBUaHVtYkFscGhhLAorICAgIFRyYWNr
QWxwaGEsCisgICAgVUlTdGF0ZVRyYW5zaXRpb24KK307CisKIEBpbnRlcmZhY2UgV2ViU2Nyb2xs
YmFyUGFydEFuaW1hdGlvbiA6IE5TQW5pbWF0aW9uCiB7CiAgICAgUmV0YWluUHRyPFNjcm9sbGJh
clBhaW50ZXI+IF9zY3JvbGxlclBhaW50ZXI7Ci0gICAgV2ViQ29yZTo6U2Nyb2xsYmFyUGFydCBf
cGFydDsKLSAgICBXZWJDb3JlOjpTY3JvbGxBbmltYXRvck1hYyogX2FuaW1hdG9yOwotICAgIENH
RmxvYXQgX2luaXRpYWxBbHBoYTsKLSAgICBDR0Zsb2F0IF9uZXdBbHBoYTsKKyAgICBGZWF0dXJl
VG9BbmltYXRlIF9mZWF0dXJlVG9BbmltYXRlOworICAgIFNjcm9sbEFuaW1hdG9yTWFjKiBfYW5p
bWF0b3I7CisgICAgQ0dGbG9hdCBfc3RhcnRWYWx1ZTsKKyAgICBDR0Zsb2F0IF9lbmRWYWx1ZTsK
IH0KLS0gKGlkKWluaXRXaXRoU2Nyb2xsYmFyUGFpbnRlcjooU2Nyb2xsYmFyUGFpbnRlcilzY3Jv
bGxlclBhaW50ZXIgcGFydDooV2ViQ29yZTo6U2Nyb2xsYmFyUGFydClwYXJ0IHNjcm9sbEFuaW1h
dG9yOihXZWJDb3JlOjpTY3JvbGxBbmltYXRvck1hYyopc2Nyb2xsQW5pbWF0b3IgYW5pbWF0ZUFs
cGhhVG86KENHRmxvYXQpbmV3QWxwaGEgZHVyYXRpb246KE5TVGltZUludGVydmFsKWR1cmF0aW9u
OworLSAoaWQpaW5pdFdpdGhTY3JvbGxiYXJQYWludGVyOihTY3JvbGxiYXJQYWludGVyKXNjcm9s
bGVyUGFpbnRlciBhbmltYXRlOihGZWF0dXJlVG9BbmltYXRlKWZlYXR1cmVUb0FuaW1hdGUgc2Ny
b2xsQW5pbWF0b3I6KFNjcm9sbEFuaW1hdG9yTWFjKilzY3JvbGxBbmltYXRvciBhbmltYXRlRnJv
bTooQ0dGbG9hdClzdGFydFZhbHVlIGFuaW1hdGVUbzooQ0dGbG9hdCllbmRWYWx1ZSBkdXJhdGlv
bjooTlNUaW1lSW50ZXJ2YWwpZHVyYXRpb247CiBAZW5kCiAKIEBpbXBsZW1lbnRhdGlvbiBXZWJT
Y3JvbGxiYXJQYXJ0QW5pbWF0aW9uCiAKLS0gKGlkKWluaXRXaXRoU2Nyb2xsYmFyUGFpbnRlcjoo
U2Nyb2xsYmFyUGFpbnRlcilzY3JvbGxlclBhaW50ZXIgcGFydDooV2ViQ29yZTo6U2Nyb2xsYmFy
UGFydClwYXJ0IHNjcm9sbEFuaW1hdG9yOihXZWJDb3JlOjpTY3JvbGxBbmltYXRvck1hYyopc2Ny
b2xsQW5pbWF0b3IgYW5pbWF0ZUFscGhhVG86KENHRmxvYXQpbmV3QWxwaGEgZHVyYXRpb246KE5T
VGltZUludGVydmFsKWR1cmF0aW9uCistIChpZClpbml0V2l0aFNjcm9sbGJhclBhaW50ZXI6KFNj
cm9sbGJhclBhaW50ZXIpc2Nyb2xsZXJQYWludGVyIGFuaW1hdGU6KEZlYXR1cmVUb0FuaW1hdGUp
ZmVhdHVyZVRvQW5pbWF0ZSBzY3JvbGxBbmltYXRvcjooU2Nyb2xsQW5pbWF0b3JNYWMqKXNjcm9s
bEFuaW1hdG9yIGFuaW1hdGVGcm9tOihDR0Zsb2F0KXN0YXJ0VmFsdWUgYW5pbWF0ZVRvOihDR0Zs
b2F0KWVuZFZhbHVlIGR1cmF0aW9uOihOU1RpbWVJbnRlcnZhbClkdXJhdGlvbgogewogICAgIHNl
bGYgPSBbc3VwZXIgaW5pdFdpdGhEdXJhdGlvbjpkdXJhdGlvbiBhbmltYXRpb25DdXJ2ZTpOU0Fu
aW1hdGlvbkVhc2VJbk91dF07CiAgICAgaWYgKCFzZWxmKQogICAgICAgICByZXR1cm4gbmlsOwog
ICAgIAogICAgIF9zY3JvbGxlclBhaW50ZXIgPSBzY3JvbGxlclBhaW50ZXI7Ci0gICAgX3BhcnQg
PSBwYXJ0OworICAgIF9mZWF0dXJlVG9BbmltYXRlID0gZmVhdHVyZVRvQW5pbWF0ZTsKICAgICBf
YW5pbWF0b3IgPSBzY3JvbGxBbmltYXRvcjsKLSAgICBfaW5pdGlhbEFscGhhID0gX3BhcnQgPT0g
V2ViQ29yZTo6VGh1bWJQYXJ0ID8gW19zY3JvbGxlclBhaW50ZXIuZ2V0KCkga25vYkFscGhhXSA6
IFtfc2Nyb2xsZXJQYWludGVyLmdldCgpIHRyYWNrQWxwaGFdOwotICAgIF9uZXdBbHBoYSA9IG5l
d0FscGhhOworICAgIF9zdGFydFZhbHVlID0gc3RhcnRWYWx1ZTsKKyAgICBfZW5kVmFsdWUgPSBl
bmRWYWx1ZTsKICAgICAKICAgICByZXR1cm4gc2VsZjsgICAgCiB9CiAKKy0gKHZvaWQpc2V0U2Ny
b2xsYmFyUGFpbnRlcjooU2Nyb2xsYmFyUGFpbnRlcilzY3JvbGxlclBhaW50ZXIKK3sKKyAgICBf
c2Nyb2xsZXJQYWludGVyID0gc2Nyb2xsZXJQYWludGVyOworfQorCistICh2b2lkKXNldFN0YXJ0
VmFsdWU6KENHRmxvYXQpc3RhcnRWYWx1ZQoreworICAgIF9zdGFydFZhbHVlID0gc3RhcnRWYWx1
ZTsKK30KKworLSAodm9pZClzZXRFbmRWYWx1ZTooQ0dGbG9hdCllbmRWYWx1ZQoreworICAgIF9l
bmRWYWx1ZSA9IGVuZFZhbHVlOworfQorCiAtICh2b2lkKXNldEN1cnJlbnRQcm9ncmVzczooTlNB
bmltYXRpb25Qcm9ncmVzcylwcm9ncmVzcwogewogICAgIFtzdXBlciBzZXRDdXJyZW50UHJvZ3Jl
c3M6cHJvZ3Jlc3NdOwpAQCAtMjc4LDIyICszMDYsMjkgQEAgLSAodm9pZClzZXRDdXJyZW50UHJv
Z3Jlc3M6KE5TQW5pbWF0aW9uUAogICAgIGlmICghX2FuaW1hdG9yKQogICAgICAgICByZXR1cm47
CiAKLSAgICBDR0Zsb2F0IGN1cnJlbnRBbHBoYTsKLSAgICBpZiAoX2luaXRpYWxBbHBoYSA+IF9u
ZXdBbHBoYSkKLSAgICAgICAgY3VycmVudEFscGhhID0gMSAtIHByb2dyZXNzOworICAgIENHRmxv
YXQgY3VycmVudFZhbHVlOworICAgIGlmIChfc3RhcnRWYWx1ZSA+IF9lbmRWYWx1ZSkKKyAgICAg
ICAgY3VycmVudFZhbHVlID0gMSAtIHByb2dyZXNzOwogICAgIGVsc2UKLSAgICAgICAgY3VycmVu
dEFscGhhID0gcHJvZ3Jlc3M7Ci0gICAgCi0gICAgaWYgKF9wYXJ0ID09IFdlYkNvcmU6OlRodW1i
UGFydCkKLSAgICAgICAgW19zY3JvbGxlclBhaW50ZXIuZ2V0KCkgc2V0S25vYkFscGhhOmN1cnJl
bnRBbHBoYV07Ci0gICAgZWxzZQotICAgICAgICBbX3Njcm9sbGVyUGFpbnRlci5nZXQoKSBzZXRU
cmFja0FscGhhOmN1cnJlbnRBbHBoYV07CisgICAgICAgIGN1cnJlbnRWYWx1ZSA9IHByb2dyZXNz
OworCisgICAgc3dpdGNoIChfZmVhdHVyZVRvQW5pbWF0ZSkgeworICAgIGNhc2UgVGh1bWJBbHBo
YToKKyAgICAgICAgW19zY3JvbGxlclBhaW50ZXIuZ2V0KCkgc2V0S25vYkFscGhhOmN1cnJlbnRW
YWx1ZV07CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgVHJhY2tBbHBoYToKKyAgICAgICAgW19z
Y3JvbGxlclBhaW50ZXIuZ2V0KCkgc2V0VHJhY2tBbHBoYTpjdXJyZW50VmFsdWVdOworICAgICAg
ICBicmVhazsKKyAgICBjYXNlIFVJU3RhdGVUcmFuc2l0aW9uOgorICAgICAgICBbX3Njcm9sbGVy
UGFpbnRlci5nZXQoKSBzZXRVaVN0YXRlVHJhbnNpdGlvblByb2dyZXNzOmN1cnJlbnRWYWx1ZV07
CisgICAgICAgIGJyZWFrOworICAgIH0KIAogICAgIC8vIEludmFsaWRhdGUgdGhlIHNjcm9sbGJh
cnMgc28gdGhhdCB0aGV5IHBhaW50IHRoZSBhbmltYXRpb24KLSAgICBpZiAoV2ViQ29yZTo6U2Ny
b2xsYmFyKiB2ZXJ0aWNhbFNjcm9sbGJhciA9IF9hbmltYXRvci0+c2Nyb2xsYWJsZUFyZWEoKS0+
dmVydGljYWxTY3JvbGxiYXIoKSkKLSAgICAgICAgdmVydGljYWxTY3JvbGxiYXItPmludmFsaWRh
dGVSZWN0KFdlYkNvcmU6OkludFJlY3QoMCwgMCwgdmVydGljYWxTY3JvbGxiYXItPndpZHRoKCks
IHZlcnRpY2FsU2Nyb2xsYmFyLT5oZWlnaHQoKSkpOwotICAgIGlmIChXZWJDb3JlOjpTY3JvbGxi
YXIqIGhvcml6b250YWxTY3JvbGxiYXIgPSBfYW5pbWF0b3ItPnNjcm9sbGFibGVBcmVhKCktPmhv
cml6b250YWxTY3JvbGxiYXIoKSkKLSAgICAgICAgaG9yaXpvbnRhbFNjcm9sbGJhci0+aW52YWxp
ZGF0ZVJlY3QoV2ViQ29yZTo6SW50UmVjdCgwLCAwLCBob3Jpem9udGFsU2Nyb2xsYmFyLT53aWR0
aCgpLCBob3Jpem9udGFsU2Nyb2xsYmFyLT5oZWlnaHQoKSkpOworICAgIGlmIChTY3JvbGxiYXIq
IHZlcnRpY2FsU2Nyb2xsYmFyID0gX2FuaW1hdG9yLT5zY3JvbGxhYmxlQXJlYSgpLT52ZXJ0aWNh
bFNjcm9sbGJhcigpKQorICAgICAgICB2ZXJ0aWNhbFNjcm9sbGJhci0+aW52YWxpZGF0ZSgpOwor
ICAgIGlmIChTY3JvbGxiYXIqIGhvcml6b250YWxTY3JvbGxiYXIgPSBfYW5pbWF0b3ItPnNjcm9s
bGFibGVBcmVhKCktPmhvcml6b250YWxTY3JvbGxiYXIoKSkKKyAgICAgICAgaG9yaXpvbnRhbFNj
cm9sbGJhci0+aW52YWxpZGF0ZSgpOwogfQogCiAtICh2b2lkKXNjcm9sbEFuaW1hdG9yRGVzdHJv
eWVkCkBAIC0zMTUsNiArMzUwLDkgQEAgQGludGVyZmFjZSBXZWJTY3JvbGxiYXJQYWludGVyRGVs
ZWdhdGUgOgogCiAgICAgUmV0YWluUHRyPFdlYlNjcm9sbGJhclBhcnRBbmltYXRpb24+IF92ZXJ0
aWNhbFRyYWNrQW5pbWF0aW9uOwogICAgIFJldGFpblB0cjxXZWJTY3JvbGxiYXJQYXJ0QW5pbWF0
aW9uPiBfaG9yaXpvbnRhbFRyYWNrQW5pbWF0aW9uOworCisgICAgUmV0YWluUHRyPFdlYlNjcm9s
bGJhclBhcnRBbmltYXRpb24+IF92ZXJ0aWNhbFVJU3RhdGVUcmFuc2l0aW9uQW5pbWF0aW9uOwor
ICAgIFJldGFpblB0cjxXZWJTY3JvbGxiYXJQYXJ0QW5pbWF0aW9uPiBfaG9yaXpvbnRhbFVJU3Rh
dGVUcmFuc2l0aW9uQW5pbWF0aW9uOwogfQogLSAoaWQpaW5pdFdpdGhTY3JvbGxBbmltYXRvcjoo
V2ViQ29yZTo6U2Nyb2xsQW5pbWF0b3JNYWMqKXNjcm9sbEFuaW1hdG9yOwogLSAodm9pZCljYW5j
ZWxBbmltYXRpb25zOwpAQCAtMzM5LDYgKzM3Nyw4IEBAIC0gKHZvaWQpY2FuY2VsQW5pbWF0aW9u
cwogICAgIFtfaG9yaXpvbnRhbEtub2JBbmltYXRpb24uZ2V0KCkgc3RvcEFuaW1hdGlvbl07CiAg
ICAgW192ZXJ0aWNhbFRyYWNrQW5pbWF0aW9uLmdldCgpIHN0b3BBbmltYXRpb25dOwogICAgIFtf
aG9yaXpvbnRhbFRyYWNrQW5pbWF0aW9uLmdldCgpIHN0b3BBbmltYXRpb25dOworICAgIFtfdmVy
dGljYWxVSVN0YXRlVHJhbnNpdGlvbkFuaW1hdGlvbi5nZXQoKSBzdG9wQW5pbWF0aW9uXTsKKyAg
ICBbX2hvcml6b250YWxVSVN0YXRlVHJhbnNpdGlvbkFuaW1hdGlvbi5nZXQoKSBzdG9wQW5pbWF0
aW9uXTsKICAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TOwogfQogCkBAIC0zNjQsNyArNDA0
LDI1IEBAIC0gKENBTGF5ZXIgKilsYXllcgogICAgIHJldHVybiBkdW1teUxheWVyOwogfQogCi0t
ICh2b2lkKXNldFVwQW5pbWF0aW9uOihSZXRhaW5QdHI8V2ViU2Nyb2xsYmFyUGFydEFuaW1hdGlv
bj4mKXNjcm9sbGJhclBhcnRBbmltYXRpb24gc2Nyb2xsZXJQYWludGVyOihTY3JvbGxiYXJQYWlu
dGVyKXNjcm9sbGVyUGFpbnRlciBwYXJ0OihXZWJDb3JlOjpTY3JvbGxiYXJQYXJ0KXBhcnQgYW5p
bWF0ZUFscGhhVG86KENHRmxvYXQpbmV3QWxwaGEgZHVyYXRpb246KE5TVGltZUludGVydmFsKWR1
cmF0aW9uCistIChOU1BvaW50KW1vdXNlTG9jYXRpb25JblNjcm9sbGVyRm9yU2Nyb2xsZXJJbXA6
KGlkKXNjcm9sbGVySW1wCit7CisgICAgaWYgKCFfYW5pbWF0b3IpCisgICAgICAgIHJldHVybiBO
U1plcm9Qb2ludDsKKworICAgIFNjcm9sbGJhclBhaW50ZXIgc2Nyb2xsZXJQYWludGVyID0gKFNj
cm9sbGJhclBhaW50ZXIpc2Nyb2xsZXJJbXA7CisgICAgU2Nyb2xsYmFyKiBzY3JvbGxiYXI7Cisg
ICAgaWYgKFtzY3JvbGxlclBhaW50ZXIgaXNIb3Jpem9udGFsXSkKKyAgICAgICAgc2Nyb2xsYmFy
ID0gX2FuaW1hdG9yLT5zY3JvbGxhYmxlQXJlYSgpLT5ob3Jpem9udGFsU2Nyb2xsYmFyKCk7Cisg
ICAgZWxzZSAKKyAgICAgICAgc2Nyb2xsYmFyID0gX2FuaW1hdG9yLT5zY3JvbGxhYmxlQXJlYSgp
LT52ZXJ0aWNhbFNjcm9sbGJhcigpOworCisgICAgaWYgKCFzY3JvbGxiYXIpCisgICAgICAgIHJl
dHVybiBOU1plcm9Qb2ludDsKKworICAgIHJldHVybiBzY3JvbGxiYXItPmNvbnZlcnRGcm9tQ29u
dGFpbmluZ1ZpZXcoX2FuaW1hdG9yLT5zY3JvbGxhYmxlQXJlYSgpLT5jdXJyZW50TW91c2VQb3Np
dGlvbigpKTsKK30KKworLSAodm9pZClzZXRVcEFscGhhQW5pbWF0aW9uOihSZXRhaW5QdHI8V2Vi
U2Nyb2xsYmFyUGFydEFuaW1hdGlvbj4mKXNjcm9sbGJhclBhcnRBbmltYXRpb24gc2Nyb2xsZXJQ
YWludGVyOihTY3JvbGxiYXJQYWludGVyKXNjcm9sbGVyUGFpbnRlciBwYXJ0OihXZWJDb3JlOjpT
Y3JvbGxiYXJQYXJ0KXBhcnQgYW5pbWF0ZUFscGhhVG86KENHRmxvYXQpbmV3QWxwaGEgZHVyYXRp
b246KE5TVGltZUludGVydmFsKWR1cmF0aW9uCiB7CiAgICAgLy8gSWYgdGhlIHVzZXIgaGFzIHNj
cm9sbGVkIHRoZSBwYWdlLCB0aGVuIHRoZSBzY3JvbGxiYXJzIG11c3QgYmUgYW5pbWF0ZWQgaGVy
ZS4gCiAgICAgLy8gVGhpcyBvdmVycmlkZXMgdGhlIGVhcmx5IHJldHVybnMuCkBAIC0zOTgsOSAr
NDU2LDEwIEBAIC0gKHZvaWQpc2V0VXBBbmltYXRpb246KFJldGFpblB0cjxXZWJTY3IKICAgICBb
TlNBbmltYXRpb25Db250ZXh0IGJlZ2luR3JvdXBpbmddOwogICAgIFtbTlNBbmltYXRpb25Db250
ZXh0IGN1cnJlbnRDb250ZXh0XSBzZXREdXJhdGlvbjpkdXJhdGlvbl07CiAgICAgc2Nyb2xsYmFy
UGFydEFuaW1hdGlvbi5hZG9wdE5TKFtbV2ViU2Nyb2xsYmFyUGFydEFuaW1hdGlvbiBhbGxvY10g
aW5pdFdpdGhTY3JvbGxiYXJQYWludGVyOnNjcm9sbGVyUGFpbnRlciAKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFy
dDpwYXJ0Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHNjcm9sbEFuaW1hdG9yOl9hbmltYXRvciAKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
YW5pbWF0ZUFscGhhVG86bmV3QWxwaGEgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuaW1hdGU6cGFydCA9PSBUaHVt
YlBhcnQgPyBUaHVtYkFscGhhIDogVHJhY2tBbHBoYQorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY3JvbGxBbmltYXRv
cjpfYW5pbWF0b3IKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgYW5pbWF0ZUZyb206cGFydCA9PSBUaHVtYlBhcnQgPyBb
c2Nyb2xsZXJQYWludGVyIGtub2JBbHBoYV0gOiBbc2Nyb2xsZXJQYWludGVyIHRyYWNrQWxwaGFd
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGFuaW1hdGVUbzpuZXdBbHBoYSAKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZHVyYXRpb246ZHVy
YXRpb25dKTsKICAgICBbc2Nyb2xsYmFyUGFydEFuaW1hdGlvbi5nZXQoKSBzZXRBbmltYXRpb25C
bG9ja2luZ01vZGU6TlNBbmltYXRpb25Ob25ibG9ja2luZ107CiAgICAgW3Njcm9sbGJhclBhcnRB
bmltYXRpb24uZ2V0KCkgc3RhcnRBbmltYXRpb25dOwpAQCAtNDE0LDkgKzQ3Myw5IEBAIC0gKHZv
aWQpc2Nyb2xsZXJJbXA6KGlkKXNjcm9sbGVySW1wIGFuaW0KIAogICAgIFNjcm9sbGJhclBhaW50
ZXIgc2Nyb2xsZXJQYWludGVyID0gKFNjcm9sbGJhclBhaW50ZXIpc2Nyb2xsZXJJbXA7CiAgICAg
aWYgKFtzY3JvbGxlckltcCBpc0hvcml6b250YWxdKQotICAgICAgICBbc2VsZiBzZXRVcEFuaW1h
dGlvbjpfaG9yaXpvbnRhbEtub2JBbmltYXRpb24gc2Nyb2xsZXJQYWludGVyOnNjcm9sbGVyUGFp
bnRlciBwYXJ0OldlYkNvcmU6OlRodW1iUGFydCBhbmltYXRlQWxwaGFUbzpuZXdLbm9iQWxwaGEg
ZHVyYXRpb246ZHVyYXRpb25dOworICAgICAgICBbc2VsZiBzZXRVcEFscGhhQW5pbWF0aW9uOl9o
b3Jpem9udGFsS25vYkFuaW1hdGlvbiBzY3JvbGxlclBhaW50ZXI6c2Nyb2xsZXJQYWludGVyIHBh
cnQ6V2ViQ29yZTo6VGh1bWJQYXJ0IGFuaW1hdGVBbHBoYVRvOm5ld0tub2JBbHBoYSBkdXJhdGlv
bjpkdXJhdGlvbl07CiAgICAgZWxzZQotICAgICAgICBbc2VsZiBzZXRVcEFuaW1hdGlvbjpfdmVy
dGljYWxLbm9iQW5pbWF0aW9uIHNjcm9sbGVyUGFpbnRlcjpzY3JvbGxlclBhaW50ZXIgcGFydDpX
ZWJDb3JlOjpUaHVtYlBhcnQgYW5pbWF0ZUFscGhhVG86bmV3S25vYkFscGhhIGR1cmF0aW9uOmR1
cmF0aW9uXTsKKyAgICAgICAgW3NlbGYgc2V0VXBBbHBoYUFuaW1hdGlvbjpfdmVydGljYWxLbm9i
QW5pbWF0aW9uIHNjcm9sbGVyUGFpbnRlcjpzY3JvbGxlclBhaW50ZXIgcGFydDpXZWJDb3JlOjpU
aHVtYlBhcnQgYW5pbWF0ZUFscGhhVG86bmV3S25vYkFscGhhIGR1cmF0aW9uOmR1cmF0aW9uXTsK
IH0KIAogLSAodm9pZClzY3JvbGxlckltcDooaWQpc2Nyb2xsZXJJbXAgYW5pbWF0ZVRyYWNrQWxw
aGFUbzooQ0dGbG9hdCluZXdUcmFja0FscGhhIGR1cmF0aW9uOihOU1RpbWVJbnRlcnZhbClkdXJh
dGlvbgpAQCAtNDI2LDkgKzQ4NSw0NCBAQCAtICh2b2lkKXNjcm9sbGVySW1wOihpZClzY3JvbGxl
ckltcCBhbmltCiAKICAgICBTY3JvbGxiYXJQYWludGVyIHNjcm9sbGVyUGFpbnRlciA9IChTY3Jv
bGxiYXJQYWludGVyKXNjcm9sbGVySW1wOwogICAgIGlmIChbc2Nyb2xsZXJJbXAgaXNIb3Jpem9u
dGFsXSkKLSAgICAgICAgW3NlbGYgc2V0VXBBbmltYXRpb246X2hvcml6b250YWxUcmFja0FuaW1h
dGlvbiBzY3JvbGxlclBhaW50ZXI6c2Nyb2xsZXJQYWludGVyIHBhcnQ6V2ViQ29yZTo6QmFja1Ry
YWNrUGFydCBhbmltYXRlQWxwaGFUbzpuZXdUcmFja0FscGhhIGR1cmF0aW9uOmR1cmF0aW9uXTsK
KyAgICAgICAgW3NlbGYgc2V0VXBBbHBoYUFuaW1hdGlvbjpfaG9yaXpvbnRhbFRyYWNrQW5pbWF0
aW9uIHNjcm9sbGVyUGFpbnRlcjpzY3JvbGxlclBhaW50ZXIgcGFydDpXZWJDb3JlOjpCYWNrVHJh
Y2tQYXJ0IGFuaW1hdGVBbHBoYVRvOm5ld1RyYWNrQWxwaGEgZHVyYXRpb246ZHVyYXRpb25dOwog
ICAgIGVsc2UKLSAgICAgICAgW3NlbGYgc2V0VXBBbmltYXRpb246X3ZlcnRpY2FsVHJhY2tBbmlt
YXRpb24gc2Nyb2xsZXJQYWludGVyOnNjcm9sbGVyUGFpbnRlciBwYXJ0OldlYkNvcmU6OkJhY2tU
cmFja1BhcnQgYW5pbWF0ZUFscGhhVG86bmV3VHJhY2tBbHBoYSBkdXJhdGlvbjpkdXJhdGlvbl07
CisgICAgICAgIFtzZWxmIHNldFVwQWxwaGFBbmltYXRpb246X3ZlcnRpY2FsVHJhY2tBbmltYXRp
b24gc2Nyb2xsZXJQYWludGVyOnNjcm9sbGVyUGFpbnRlciBwYXJ0OldlYkNvcmU6OkJhY2tUcmFj
a1BhcnQgYW5pbWF0ZUFscGhhVG86bmV3VHJhY2tBbHBoYSBkdXJhdGlvbjpkdXJhdGlvbl07Cit9
CisKKy0gKHZvaWQpc2Nyb2xsZXJJbXA6KGlkKXNjcm9sbGVySW1wIGFuaW1hdGVVSVN0YXRlVHJh
bnNpdGlvbldpdGhEdXJhdGlvbjooTlNUaW1lSW50ZXJ2YWwpZHVyYXRpb24KK3sKKyAgICBpZiAo
IV9hbmltYXRvcikKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKCFzdXBwb3J0c1VJU3RhdGVU
cmFuc2l0aW9uUHJvZ3Jlc3MoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgU2Nyb2xsYmFyUGFp
bnRlciBzY3JvbGxlclBhaW50ZXIgPSAoU2Nyb2xsYmFyUGFpbnRlcilzY3JvbGxlckltcDsKKyAg
ICBSZXRhaW5QdHI8V2ViU2Nyb2xsYmFyUGFydEFuaW1hdGlvbj4gc2Nyb2xsYmFyUGFydEFuaW1h
dGlvbiA9IFtzY3JvbGxlclBhaW50ZXIgaXNIb3Jpem9udGFsXSA/IF9ob3Jpem9udGFsVUlTdGF0
ZVRyYW5zaXRpb25BbmltYXRpb24gOiBfdmVydGljYWxVSVN0YXRlVHJhbnNpdGlvbkFuaW1hdGlv
bjsKKworICAgIC8vIFVJU3RhdGVUcmFuc2l0aW9uIGFsd2F5cyBhbmltYXRlcyB0byAxLiBJbiBj
YXNlIGFuIGFuaW1hdGlvbiBpcyBpbiBwcm9ncmVzcyB0aGlzIGF2b2lkcyBhIGhhcmQgdHJhbnNp
dGlvbi4KKyAgICBbc2Nyb2xsZXJQYWludGVyIHNldFVpU3RhdGVUcmFuc2l0aW9uUHJvZ3Jlc3M6
MSAtIFtzY3JvbGxlclBhaW50ZXIgdWlTdGF0ZVRyYW5zaXRpb25Qcm9ncmVzc11dOworCisgICAg
W05TQW5pbWF0aW9uQ29udGV4dCBiZWdpbkdyb3VwaW5nXTsKKyAgICBbW05TQW5pbWF0aW9uQ29u
dGV4dCBjdXJyZW50Q29udGV4dF0gc2V0RHVyYXRpb246ZHVyYXRpb25dOworICAgIGlmICghc2Ny
b2xsYmFyUGFydEFuaW1hdGlvbikgeworICAgICAgICBzY3JvbGxiYXJQYXJ0QW5pbWF0aW9uLmFk
b3B0TlMoW1tXZWJTY3JvbGxiYXJQYXJ0QW5pbWF0aW9uIGFsbG9jXSBpbml0V2l0aFNjcm9sbGJh
clBhaW50ZXI6c2Nyb2xsZXJQYWludGVyIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmltYXRlOlVJU3RhdGVUcmFu
c2l0aW9uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHNjcm9sbEFuaW1hdG9yOl9hbmltYXRvcgorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBh
bmltYXRlRnJvbTpbc2Nyb2xsZXJQYWludGVyIHVpU3RhdGVUcmFuc2l0aW9uUHJvZ3Jlc3NdCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGFuaW1hdGVUbzoxLjAgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGR1cmF0aW9uOmR1cmF0aW9uXSk7
CisgICAgICAgIFtzY3JvbGxiYXJQYXJ0QW5pbWF0aW9uLmdldCgpIHNldEFuaW1hdGlvbkJsb2Nr
aW5nTW9kZTpOU0FuaW1hdGlvbk5vbmJsb2NraW5nXTsKKyAgICB9IGVsc2UgeworICAgICAgICAv
LyBJZiB3ZSBkb24ndCBuZWVkIHRvIGluaXRpYWxpemUgdGhlIGFuaW1hdGlvbiwganVzdCByZXNl
dCB0aGUgdmFsdWVzIGluIGNhc2UgdGhleSBoYXZlIGNoYW5nZWQuCisgICAgICAgIFtzY3JvbGxi
YXJQYXJ0QW5pbWF0aW9uLmdldCgpIHNldFNjcm9sbGJhclBhaW50ZXI6c2Nyb2xsZXJQYWludGVy
XTsKKyAgICAgICAgW3Njcm9sbGJhclBhcnRBbmltYXRpb24uZ2V0KCkgc2V0U3RhcnRWYWx1ZTpb
c2Nyb2xsZXJQYWludGVyIHVpU3RhdGVUcmFuc2l0aW9uUHJvZ3Jlc3NdXTsKKyAgICAgICAgW3Nj
cm9sbGJhclBhcnRBbmltYXRpb24uZ2V0KCkgc2V0RW5kVmFsdWU6MS4wXTsKKyAgICAgICAgW3Nj
cm9sbGJhclBhcnRBbmltYXRpb24uZ2V0KCkgc2V0RHVyYXRpb246ZHVyYXRpb25dOworICAgIH0K
KyAgICBbc2Nyb2xsYmFyUGFydEFuaW1hdGlvbi5nZXQoKSBzdGFydEFuaW1hdGlvbl07CisgICAg
W05TQW5pbWF0aW9uQ29udGV4dCBlbmRHcm91cGluZ107CiB9CiAKIC0gKHZvaWQpc2Nyb2xsZXJJ
bXA6KGlkKXNjcm9sbGVySW1wIG92ZXJsYXlTY3JvbGxlclN0YXRlQ2hhbmdlZFRvOihOU1VJbnRl
Z2VyKW5ld092ZXJsYXlTY3JvbGxlclN0YXRlCkBAIC00NDUsNiArNTM5LDggQEAgLSAodm9pZClz
Y3JvbGxBbmltYXRvckRlc3Ryb3llZAogICAgIFtfaG9yaXpvbnRhbEtub2JBbmltYXRpb24uZ2V0
KCkgc2Nyb2xsQW5pbWF0b3JEZXN0cm95ZWRdOwogICAgIFtfdmVydGljYWxUcmFja0FuaW1hdGlv
bi5nZXQoKSBzY3JvbGxBbmltYXRvckRlc3Ryb3llZF07CiAgICAgW19ob3Jpem9udGFsVHJhY2tB
bmltYXRpb24uZ2V0KCkgc2Nyb2xsQW5pbWF0b3JEZXN0cm95ZWRdOworICAgIFtfdmVydGljYWxV
SVN0YXRlVHJhbnNpdGlvbkFuaW1hdGlvbi5nZXQoKSBzY3JvbGxBbmltYXRvckRlc3Ryb3llZF07
CisgICAgW19ob3Jpem9udGFsVUlTdGF0ZVRyYW5zaXRpb25BbmltYXRpb24uZ2V0KCkgc2Nyb2xs
QW5pbWF0b3JEZXN0cm95ZWRdOwogICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlM7CiB9CiAK
QEAgLTY1Nyw2ICs3NTMsMzQgQEAgdm9pZCBTY3JvbGxBbmltYXRvck1hYzo6bW91c2VNb3ZlZElu
Q29udAogI2VuZGlmCiB9CiAKK3ZvaWQgU2Nyb2xsQW5pbWF0b3JNYWM6Om1vdXNlRW50ZXJlZFNj
cm9sbGJhcihTY3JvbGxiYXIqIHNjcm9sbGJhcikgY29uc3QKK3sKKyAgICBpZiAoIXNjcm9sbGFi
bGVBcmVhKCktPmlzT25BY3RpdmVQYWdlKCkpCisgICAgICAgIHJldHVybjsKKyNpZiBVU0UoU0NS
T0xMQkFSX1BBSU5URVIpCisgICAgaWYgKCFzdXBwb3J0c1VJU3RhdGVUcmFuc2l0aW9uUHJvZ3Jl
c3MoKSkKKyAgICAgICAgcmV0dXJuOworICAgIGlmIChTY3JvbGxiYXJUaGVtZU1hYyogdGhlbWUg
PSBtYWNTY3JvbGxiYXJUaGVtZSgpKSB7CisgICAgICAgIFNjcm9sbGJhclBhaW50ZXIgcGFpbnRl
ciA9IHRoZW1lLT5wYWludGVyRm9yU2Nyb2xsYmFyKHNjcm9sbGJhcik7CisgICAgICAgIFtwYWlu
dGVyIG1vdXNlRW50ZXJlZFNjcm9sbGVyXTsKKyAgICB9CisjZW5kaWYKK30KKwordm9pZCBTY3Jv
bGxBbmltYXRvck1hYzo6bW91c2VFeGl0ZWRTY3JvbGxiYXIoU2Nyb2xsYmFyKiBzY3JvbGxiYXIp
IGNvbnN0Cit7CisgICAgaWYgKCFzY3JvbGxhYmxlQXJlYSgpLT5pc09uQWN0aXZlUGFnZSgpKQor
ICAgICAgICByZXR1cm47CisjaWYgVVNFKFNDUk9MTEJBUl9QQUlOVEVSKQorICAgIGlmICghc3Vw
cG9ydHNVSVN0YXRlVHJhbnNpdGlvblByb2dyZXNzKCkpCisgICAgICAgIHJldHVybjsKKyAgICBp
ZiAoU2Nyb2xsYmFyVGhlbWVNYWMqIHRoZW1lID0gbWFjU2Nyb2xsYmFyVGhlbWUoKSkgeworICAg
ICAgICBTY3JvbGxiYXJQYWludGVyIHBhaW50ZXIgPSB0aGVtZS0+cGFpbnRlckZvclNjcm9sbGJh
cihzY3JvbGxiYXIpOworICAgICAgICBbcGFpbnRlciBtb3VzZUV4aXRlZFNjcm9sbGVyXTsKKyAg
ICB9CisjZW5kaWYKK30KKwogdm9pZCBTY3JvbGxBbmltYXRvck1hYzo6d2lsbFN0YXJ0TGl2ZVJl
c2l6ZSgpCiB7CiAgICAgaWYgKCFzY3JvbGxhYmxlQXJlYSgpLT5pc09uQWN0aXZlUGFnZSgpKQo=
</data>
<flag name="commit-queue"
          id="112075"
          type_id="3"
          status="-"
          setter="dbates"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>113898</attachid>
            <date>2011-11-07 11:26:17 -0800</date>
            <delta_ts>2011-11-07 15:24:10 -0800</delta_ts>
            <desc>Patch that should pass mac-ews</desc>
            <filename>for-review-3.txt</filename>
            <type>text/plain</type>
            <size>21655</size>
            <attacher name="Beth Dakin">bdakin</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDk5NDQ5KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNjYgQEAKKzIwMTEtMTEtMDcgIEJldGggRGFr
aW4gIDxiZGFraW5AYXBwbGUuY29tPgorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD03MTQ5MAorICAgICAgICBTdXBwb3J0IHVpU3RhdGVUcmFuc2l0aW9u
UHJvZ3Jlc3MgZm9yIHNjcm9sbGJhcnMKKyAgICAgICAgLWFuZCBjb3JyZXNwb25kaW5nLQorICAg
ICAgICA8cmRhcjovL3Byb2JsZW0vOTg0OTYxMj4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBTdGVwIDEgb2Ygc3VwcG9ydGluZyB1aVN0YXRlVHJhbnNp
dGlvblByb2dyZXNzIGlzIGtub3dpbmcgd2hlbiB0aGUgbW91c2UgaGFzIAorICAgICAgICBlbnRl
cmVkIG9yIGV4aXRlZCBhIHNjcm9sbGJhci4gVGhlc2UgY2hhbmdlcyB0byBFdmVudEhhbmRsZXIg
cGFzcyB0aGF0IGluZm9ybWF0aW9uIAorICAgICAgICBvbiB0byB0aGUgU2Nyb2xsQW5pbWF0b3Iu
CisgICAgICAgICogcGFnZS9FdmVudEhhbmRsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RXZl
bnRIYW5kbGVyOjpoYW5kbGVNb3VzZVJlbGVhc2VFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpF
dmVudEhhbmRsZXI6OnVwZGF0ZUxhc3RTY3JvbGxiYXJVbmRlck1vdXNlKToKKyAgICAgICAgCisg
ICAgICAgIFNjcm9sbEFuaW1hdG9yIHBhc3NlcyB0aGUgaW5mb3JtYXRpb24gb24gdG8gQXBwS2l0
LgorICAgICAgICAqIHBsYXRmb3JtL1Njcm9sbEFuaW1hdG9yLmg6CisgICAgICAgIChXZWJDb3Jl
OjpTY3JvbGxBbmltYXRvcjo6bW91c2VFbnRlcmVkU2Nyb2xsYmFyKToKKyAgICAgICAgKFdlYkNv
cmU6OlNjcm9sbEFuaW1hdG9yOjptb3VzZUV4aXRlZFNjcm9sbGJhcik6CisgICAgICAgICogcGxh
dGZvcm0vbWFjL1Njcm9sbEFuaW1hdG9yTWFjLmg6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxB
bmltYXRvck1hYzo6bW91c2VFbnRlcmVkU2Nyb2xsYmFyKToKKyAgICAgICAgKFdlYkNvcmU6OlNj
cm9sbEFuaW1hdG9yTWFjOjptb3VzZUV4aXRlZFNjcm9sbGJhcik6CisKKyAgICAgICAgVGhlcmUg
YXJlIHNldmVyYWwgbmV3IHBpZWNlcyBvZiBBcHBLaXQgYXBpIHdlIG11c3QgY2FsbCBpbnRvLgor
ICAgICAgICAqIHBsYXRmb3JtL21hYy9OU1Njcm9sbGVySW1wRGV0YWlscy5oOgorCisgICAgICAg
IFRoaXMgaXMgYSB0ZW1wb3JhcnkgZnVuY3Rpb24gdGhhdCBpcyBuZWVkZWQgZm9yIHRoZSB0aW1l
IGJlaW5nIHNpbmNlIHRoZXJlIGlzIG5ldyAKKyAgICAgICAgQXBwS2l0IGFwaSByZXF1aXJlZCBm
b3IgdGhpcyB0byB3b3JrLgorICAgICAgICAqIHBsYXRmb3JtL21hYy9TY3JvbGxBbmltYXRvck1h
Yy5tbToKKyAgICAgICAgKHN1cHBvcnRzVUlTdGF0ZVRyYW5zaXRpb25Qcm9ncmVzcyk6CisKKyAg
ICAgICAgSSByZWZhY3RvcmVkIFdlYlNjcm9sbGJhclBhcnRBbmltYXRpb24gc28gdGhhdCBpdCBj
YW4gaGFuZGxlIHRoZSAKKyAgICAgICAgdWlTdGF0ZVRyYW5zaXRpb25Qcm9ncmVzcyBhbmltYXRp
b24gYXMgd2VsbCBhcyB0aGUgYWxwaGEgYW5pbWF0aW9ucyBpdCBhbHJlYWR5IAorICAgICAgICBo
YW5kbGVkLiBUaGlzIG1vc3RseSBpbnZvbHZlZCByZS1uYW1pbmcgdGhpbmdzIGFuZCBtYWtpbmcg
dXNlIG9mIGEgbmV3IGVudW0gY2FsbGVkIAorICAgICAgICBGZWF0dXJlVG9BbmltYXRlIHdoaWNo
IGtlZXBzIHRyYWNrIG9mIHdoYXQgdGhlIGluc3RhbmNlIG9mIAorICAgICAgICBXZWJTY3JvbGxi
YXJQYXJ0QW5pbWF0aW9uIGlzIGFuaW1hdGluZy4KKyAgICAgICAgKC1bV2ViU2Nyb2xsYmFyUGFy
dEFuaW1hdGlvbiBpbml0V2l0aFNjcm9sbGJhclBhaW50ZXI6YW5pbWF0ZTpzY3JvbGxBbmltYXRv
cjphbmltYXRlRnJvbTphbmltYXRlVG86ZHVyYXRpb246XSk6CisgICAgICAgICgtW1dlYlNjcm9s
bGJhclBhcnRBbmltYXRpb24gc2V0U2Nyb2xsYmFyUGFpbnRlcjpdKToKKyAgICAgICAgKC1bV2Vi
U2Nyb2xsYmFyUGFydEFuaW1hdGlvbiBzZXRTdGFydFZhbHVlOl0pOgorICAgICAgICAoLVtXZWJT
Y3JvbGxiYXJQYXJ0QW5pbWF0aW9uIHNldEVuZFZhbHVlOl0pOgorICAgICAgICAoLVtXZWJTY3Jv
bGxiYXJQYXJ0QW5pbWF0aW9uIHNldEN1cnJlbnRQcm9ncmVzczpdKToKKworICAgICAgICBXZWJT
Y3JvbGxiYXJQYWludGVyRGVsZWdhdGUgaGFzIHR3byBuZXcgYW5pbWF0aW9ucywgCisgICAgICAg
IF92ZXJ0aWNhbFVJU3RhdGVUcmFuc2l0aW9uQW5pbWF0aW9uLCBhbmQgX2hvcml6b250YWxVSVN0
YXRlVHJhbnNpdGlvbkFuaW1hdGlvbi4gSXQgCisgICAgICAgIGFsc28gcmVzcG9uZHMgdG8gYSBm
ZXcgbmV3IGRlbGVnYXRlIGNhbGxzLgorICAgICAgICAoLVtXZWJTY3JvbGxiYXJQYWludGVyRGVs
ZWdhdGUgY2FuY2VsQW5pbWF0aW9uc10pOgorCisgICAgICAgIFRoaXMgaXMgYSBuZXcgZGVsZWdh
dGUgY2FsbCBuZWVkZWQgZm9yIHVpU3RhdGVUcmFuc2l0aW9uUHJvZ3Jlc3MuCisgICAgICAgICgt
W1dlYlNjcm9sbGJhclBhaW50ZXJEZWxlZ2F0ZSBtb3VzZUxvY2F0aW9uSW5TY3JvbGxlckZvclNj
cm9sbGVySW1wOl0pOgorCisgICAgICAgIEkgcmUtbmFtZWQgc2V0VXBBbmltYXRpb24gdG8gc2V0
VXBBbHBoYUFuaW1hdGlvbiBzaW5jZSBpdCBkb2VzIGEgbG90IG9mIHRoaW5ncyAKKyAgICAgICAg
dGhhdCBhcmUgc3BlY2lmaWMgdG8gdGhlIGFscGhhIGFuaW1hdGlvbiBhbmQgSSBjaG9zZSBub3Qg
dG8gcmUtdXNlIGl0IGZvciAKKyAgICAgICAgdWlTdGF0ZVRyYW5zaXRpb24uCisgICAgICAgICgt
W1dlYlNjcm9sbGJhclBhaW50ZXJEZWxlZ2F0ZSBzZXRVcEFscGhhQW5pbWF0aW9uOnNjcm9sbGVy
UGFpbnRlcjpwYXJ0OldlYkNvcmU6OmFuaW1hdGVBbHBoYVRvOmR1cmF0aW9uOl0pOgorICAgICAg
ICAoLVtXZWJTY3JvbGxiYXJQYWludGVyRGVsZWdhdGUgc2Nyb2xsZXJJbXA6YW5pbWF0ZUtub2JB
bHBoYVRvOmR1cmF0aW9uOl0pOgorICAgICAgICAoLVtXZWJTY3JvbGxiYXJQYWludGVyRGVsZWdh
dGUgc2Nyb2xsZXJJbXA6YW5pbWF0ZVRyYWNrQWxwaGFUbzpkdXJhdGlvbjpdKToKKworICAgICAg
ICBOZXcgZGVsZWdhdGUgY2FsbCBmb3IgdGhlIHVpU3RhdGVUcmFuc2l0aW9uIGFuaW1hdGlvbiB0
aGF0IHNldHMgdXAgdGhhdCBhbmltYXRpb24gCisgICAgICAgIGFuZCBraWNrcyBpdCBvZmYuCisg
ICAgICAgICgtW1dlYlNjcm9sbGJhclBhaW50ZXJEZWxlZ2F0ZSBzY3JvbGxlckltcDphbmltYXRl
VUlTdGF0ZVRyYW5zaXRpb25XaXRoRHVyYXRpb246XSk6CisgICAgICAgICgtW1dlYlNjcm9sbGJh
clBhaW50ZXJEZWxlZ2F0ZSBzY3JvbGxBbmltYXRvckRlc3Ryb3llZF0pOgorCiAyMDExLTExLTA3
ICBTaGVyaWZmIEJvdCAgPHdlYmtpdC5yZXZpZXcuYm90QGdtYWlsLmNvbT4KIAogICAgICAgICBV
bnJldmlld2VkLCByb2xsaW5nIG91dCByOTk0MzIuCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdl
L0V2ZW50SGFuZGxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9FdmVu
dEhhbmRsZXIuY3BwCShyZXZpc2lvbiA5OTQ0OSkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRXZl
bnRIYW5kbGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTcxMiw2ICsxNzEyLDggQEAgYm9vbCBF
dmVudEhhbmRsZXI6OmhhbmRsZU1vdXNlUmVsZWFzZUV2ZQogCiAgICAgaWYgKG1fbGFzdFNjcm9s
bGJhclVuZGVyTW91c2UpIHsKICAgICAgICAgaW52YWxpZGF0ZUNsaWNrKCk7CisgICAgICAgIGlm
IChTY3JvbGxhYmxlQXJlYSogc2Nyb2xsYWJsZUFyZWEgPSBtX2xhc3RTY3JvbGxiYXJVbmRlck1v
dXNlLT5zY3JvbGxhYmxlQXJlYSgpKQorICAgICAgICAgICAgc2Nyb2xsYWJsZUFyZWEtPnNjcm9s
bEFuaW1hdG9yKCktPm1vdXNlRXhpdGVkU2Nyb2xsYmFyKG1fbGFzdFNjcm9sbGJhclVuZGVyTW91
c2UuZ2V0KCkpOwogICAgICAgICByZXR1cm4gbV9sYXN0U2Nyb2xsYmFyVW5kZXJNb3VzZS0+bW91
c2VVcCgpOwogICAgIH0KIApAQCAtMzEzMiwxMiArMzEzNCwyMiBAQCBib29sIEV2ZW50SGFuZGxl
cjo6cGFzc01vdXNlUHJlc3NFdmVudFRvCiAvLyBsYXN0IHRvIHNjcm9sbGJhciBpZiBzZXRMYXN0
IGlzIHRydWU7IGVsc2Ugc2V0IGxhc3QgdG8gMC4KIHZvaWQgRXZlbnRIYW5kbGVyOjp1cGRhdGVM
YXN0U2Nyb2xsYmFyVW5kZXJNb3VzZShTY3JvbGxiYXIqIHNjcm9sbGJhciwgYm9vbCBzZXRMYXN0
KQogewotICAgIGlmIChtX2xhc3RTY3JvbGxiYXJVbmRlck1vdXNlICE9IHNjcm9sbGJhcikgewot
ICAgICAgICAvLyBTZW5kIG1vdXNlIGV4aXRlZCB0byB0aGUgb2xkIHNjcm9sbGJhci4KLSAgICAg
ICAgaWYgKG1fbGFzdFNjcm9sbGJhclVuZGVyTW91c2UpCi0gICAgICAgICAgICBtX2xhc3RTY3Jv
bGxiYXJVbmRlck1vdXNlLT5tb3VzZUV4aXRlZCgpOwotICAgICAgICBtX2xhc3RTY3JvbGxiYXJV
bmRlck1vdXNlID0gc2V0TGFzdCA/IHNjcm9sbGJhciA6IDA7CisgICAgaWYgKG1fbGFzdFNjcm9s
bGJhclVuZGVyTW91c2UgPT0gc2Nyb2xsYmFyKQorICAgICAgICByZXR1cm47CisKKyAgICAvLyBT
ZW5kIG1vdXNlIGV4aXRlZCB0byB0aGUgb2xkIHNjcm9sbGJhci4KKyAgICBpZiAobV9sYXN0U2Ny
b2xsYmFyVW5kZXJNb3VzZSkgeworICAgICAgICBtX2xhc3RTY3JvbGxiYXJVbmRlck1vdXNlLT5t
b3VzZUV4aXRlZCgpOworICAgICAgICBpZiAoU2Nyb2xsYWJsZUFyZWEqIHNjcm9sbGFibGVBcmVh
ID0gbV9sYXN0U2Nyb2xsYmFyVW5kZXJNb3VzZS0+c2Nyb2xsYWJsZUFyZWEoKSkKKyAgICAgICAg
ICAgIHNjcm9sbGFibGVBcmVhLT5zY3JvbGxBbmltYXRvcigpLT5tb3VzZUV4aXRlZFNjcm9sbGJh
cihtX2xhc3RTY3JvbGxiYXJVbmRlck1vdXNlLmdldCgpKTsKICAgICB9CisKKyAgICBpZiAoc2V0
TGFzdCAmJiBzY3JvbGxiYXIpIHsKKyAgICAgICAgaWYgKFNjcm9sbGFibGVBcmVhKiBzY3JvbGxh
YmxlQXJlYSA9IHNjcm9sbGJhci0+c2Nyb2xsYWJsZUFyZWEoKSkKKyAgICAgICAgICAgIHNjcm9s
bGFibGVBcmVhLT5zY3JvbGxBbmltYXRvcigpLT5tb3VzZUVudGVyZWRTY3JvbGxiYXIoc2Nyb2xs
YmFyKTsKKyAgICB9CisKKyAgICBtX2xhc3RTY3JvbGxiYXJVbmRlck1vdXNlID0gc2V0TGFzdCA/
IHNjcm9sbGJhciA6IDA7CiB9CiAKICNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQpJbmRleDogU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0b3IuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRvci5oCShyZXZpc2lvbiA5OTQ0OSkKKysr
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1hdG9yLmgJKHdvcmtpbmcgY29weSkK
QEAgLTc4LDYgKzc4LDggQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBtb3VzZUVudGVyZWRD
b250ZW50QXJlYSgpIGNvbnN0IHsgfQogICAgIHZpcnR1YWwgdm9pZCBtb3VzZUV4aXRlZENvbnRl
bnRBcmVhKCkgY29uc3QgeyB9CiAgICAgdmlydHVhbCB2b2lkIG1vdXNlTW92ZWRJbkNvbnRlbnRB
cmVhKCkgY29uc3QgeyB9CisgICAgdmlydHVhbCB2b2lkIG1vdXNlRW50ZXJlZFNjcm9sbGJhcihT
Y3JvbGxiYXIqKSBjb25zdCB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgbW91c2VFeGl0ZWRTY3JvbGxi
YXIoU2Nyb2xsYmFyKikgY29uc3QgeyB9CiAgICAgdmlydHVhbCB2b2lkIHdpbGxTdGFydExpdmVS
ZXNpemUoKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgY29udGVudHNSZXNpemVkKCkgY29uc3QgeyB9
CiAgICAgdmlydHVhbCB2b2lkIHdpbGxFbmRMaXZlUmVzaXplKCkgeyB9CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tYWMvTlNTY3JvbGxlckltcERldGFpbHMuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvTlNTY3JvbGxlckltcERldGFpbHMuaAkocmV2
aXNpb24gOTk0NDkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvTlNTY3JvbGxlcklt
cERldGFpbHMuaAkod29ya2luZyBjb3B5KQpAQCAtNDEsNiArNDEsNyBAQCBAaW50ZXJmYWNlIE5T
T2JqZWN0IChTY3JvbGxiYXJQYWludGVyKQogLSAodm9pZClzZXRLbm9iUHJvcG9ydGlvbjooQ0dG
bG9hdClwcm9wb3J0aW9uOwogLSAodm9pZClzZXRLbm9iU3R5bGU6KE5TU2Nyb2xsZXJLbm9iU3R5
bGUpa25vYlN0eWxlOwogLSAodm9pZClzZXREZWxlZ2F0ZTooaWQpZGVsZWdhdGU7CistICh2b2lk
KXNldFVpU3RhdGVUcmFuc2l0aW9uUHJvZ3Jlc3M6KENHRmxvYXQpdWlTdGF0ZVRyYW5zaXRpb25Q
cm9ncmVzczsKIC0gKEJPT0wpaXNIb3Jpem9udGFsOwogLSAoQ0dGbG9hdCl0cmFja1dpZHRoOwog
LSAoQ0dGbG9hdCl0cmFja0JveFdpZHRoOwpAQCAtNDksOSArNTAsMTIgQEAgQGludGVyZmFjZSBO
U09iamVjdCAoU2Nyb2xsYmFyUGFpbnRlcikKIC0gKENHRmxvYXQpa25vYk92ZXJsYXBFbmRJbnNl
dDsKIC0gKENHRmxvYXQpdHJhY2tFbmRJbnNldDsKIC0gKENHRmxvYXQpa25vYkVuZEluc2V0Owor
LSAoQ0dGbG9hdCl1aVN0YXRlVHJhbnNpdGlvblByb2dyZXNzOwogLSAoTlNSZWN0KXJlY3RGb3JQ
YXJ0OihOU1Njcm9sbGVyUGFydClwYXJ0Q29kZTsKIC0gKHZvaWQpZHJhd0tub2JTbG90SW5SZWN0
OihOU1JlY3Qpc2xvdFJlY3QgaGlnaGxpZ2h0OihCT09MKWZsYWcgYWxwaGE6KENHRmxvYXQpYWxw
aGE7CiAtICh2b2lkKWRyYXdLbm9iOworLSAodm9pZCltb3VzZUVudGVyZWRTY3JvbGxlcjsKKy0g
KHZvaWQpbW91c2VFeGl0ZWRTY3JvbGxlcjsKIEBlbmQKIAogQGludGVyZmFjZSBOU09iamVjdCAo
U2Nyb2xsYmFyUGFpbnRlckNvbnRyb2xsZXIpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tYWMvU2Nyb2xsQW5pbWF0b3JNYWMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tYWMvU2Nyb2xsQW5pbWF0b3JNYWMuaAkocmV2aXNpb24gOTk0NDkpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvU2Nyb2xsQW5pbWF0b3JNYWMuaAkod29ya2luZyBjb3B5
KQpAQCAtMTE3LDYgKzExNyw4IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIG1vdXNlRW50
ZXJlZENvbnRlbnRBcmVhKCkgY29uc3Q7CiAgICAgdmlydHVhbCB2b2lkIG1vdXNlRXhpdGVkQ29u
dGVudEFyZWEoKSBjb25zdDsKICAgICB2aXJ0dWFsIHZvaWQgbW91c2VNb3ZlZEluQ29udGVudEFy
ZWEoKSBjb25zdDsKKyAgICB2aXJ0dWFsIHZvaWQgbW91c2VFbnRlcmVkU2Nyb2xsYmFyKFNjcm9s
bGJhciopIGNvbnN0OworICAgIHZpcnR1YWwgdm9pZCBtb3VzZUV4aXRlZFNjcm9sbGJhcihTY3Jv
bGxiYXIqKSBjb25zdDsKICAgICB2aXJ0dWFsIHZvaWQgd2lsbFN0YXJ0TGl2ZVJlc2l6ZSgpOwog
ICAgIHZpcnR1YWwgdm9pZCBjb250ZW50c1Jlc2l6ZWQoKSBjb25zdDsKICAgICB2aXJ0dWFsIHZv
aWQgd2lsbEVuZExpdmVSZXNpemUoKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21h
Yy9TY3JvbGxBbmltYXRvck1hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tYWMvU2Nyb2xsQW5pbWF0b3JNYWMubW0JKHJldmlzaW9uIDk5NDQ5KQorKysgU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Njcm9sbEFuaW1hdG9yTWFjLm1tCSh3b3JraW5nIGNvcHkp
CkBAIC00NSw2ICs0NSwxNSBAQAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiB1c2luZyBuYW1l
c3BhY2Ugc3RkOwogCisjaWYgVVNFKFNDUk9MTEJBUl9QQUlOVEVSKQorc3RhdGljIGJvb2wgc3Vw
cG9ydHNVSVN0YXRlVHJhbnNpdGlvblByb2dyZXNzKCkKK3sKKyAgICAvLyBGSVhNRTogVGhpcyBp
cyB0ZW1wb3JhcnkgdW50aWwgYWxsIHBsYXRmb3JtcyB0aGF0IHN1cHBvcnQgU2Nyb2xsYmFyUGFp
bnRlciBzdXBwb3J0IHRoaXMgcGFydCBvZiB0aGUgQVBJLgorICAgIHN0YXRpYyBib29sIGdsb2Jh
bFN1cHBvcnRzVUlTdGF0ZVRyYW5zaXRpb25Qcm9ncmVzcyA9IFtOU0NsYXNzRnJvbVN0cmluZyhA
Ik5TU2Nyb2xsZXJJbXAiKSBpbnN0YW5jZXNSZXNwb25kVG9TZWxlY3RvcjpAc2VsZWN0b3IobW91
c2VFbnRlcmVkU2Nyb2xsZXIpXTsKKyAgICByZXR1cm4gZ2xvYmFsU3VwcG9ydHNVSVN0YXRlVHJh
bnNpdGlvblByb2dyZXNzOworfQorI2VuZGlmCisKIEBpbnRlcmZhY2UgTlNPYmplY3QgKFNjcm9s
bEFuaW1hdGlvbkhlbHBlckRldGFpbHMpCiAtIChpZClpbml0V2l0aERlbGVnYXRlOihpZClkZWxl
Z2F0ZTsKIC0gKHZvaWQpX3N0b3BSdW47CkBAIC0yNDMsMzQgKzI1Miw1NSBAQCAtICh2b2lkKXNj
cm9sbGVySW1wUGFpcjooaWQpc2Nyb2xsZXJJbXBQCiAKIEBlbmQKIAorZW51bSBGZWF0dXJlVG9B
bmltYXRlIHsKKyAgICBUaHVtYkFscGhhLAorICAgIFRyYWNrQWxwaGEsCisgICAgVUlTdGF0ZVRy
YW5zaXRpb24KK307CisKIEBpbnRlcmZhY2UgV2ViU2Nyb2xsYmFyUGFydEFuaW1hdGlvbiA6IE5T
QW5pbWF0aW9uCiB7CiAgICAgUmV0YWluUHRyPFNjcm9sbGJhclBhaW50ZXI+IF9zY3JvbGxlclBh
aW50ZXI7Ci0gICAgV2ViQ29yZTo6U2Nyb2xsYmFyUGFydCBfcGFydDsKLSAgICBXZWJDb3JlOjpT
Y3JvbGxBbmltYXRvck1hYyogX2FuaW1hdG9yOwotICAgIENHRmxvYXQgX2luaXRpYWxBbHBoYTsK
LSAgICBDR0Zsb2F0IF9uZXdBbHBoYTsKKyAgICBGZWF0dXJlVG9BbmltYXRlIF9mZWF0dXJlVG9B
bmltYXRlOworICAgIFNjcm9sbEFuaW1hdG9yTWFjKiBfYW5pbWF0b3I7CisgICAgQ0dGbG9hdCBf
c3RhcnRWYWx1ZTsKKyAgICBDR0Zsb2F0IF9lbmRWYWx1ZTsKIH0KLS0gKGlkKWluaXRXaXRoU2Ny
b2xsYmFyUGFpbnRlcjooU2Nyb2xsYmFyUGFpbnRlcilzY3JvbGxlclBhaW50ZXIgcGFydDooV2Vi
Q29yZTo6U2Nyb2xsYmFyUGFydClwYXJ0IHNjcm9sbEFuaW1hdG9yOihXZWJDb3JlOjpTY3JvbGxB
bmltYXRvck1hYyopc2Nyb2xsQW5pbWF0b3IgYW5pbWF0ZUFscGhhVG86KENHRmxvYXQpbmV3QWxw
aGEgZHVyYXRpb246KE5TVGltZUludGVydmFsKWR1cmF0aW9uOworLSAoaWQpaW5pdFdpdGhTY3Jv
bGxiYXJQYWludGVyOihTY3JvbGxiYXJQYWludGVyKXNjcm9sbGVyUGFpbnRlciBhbmltYXRlOihG
ZWF0dXJlVG9BbmltYXRlKWZlYXR1cmVUb0FuaW1hdGUgc2Nyb2xsQW5pbWF0b3I6KFNjcm9sbEFu
aW1hdG9yTWFjKilzY3JvbGxBbmltYXRvciBhbmltYXRlRnJvbTooQ0dGbG9hdClzdGFydFZhbHVl
IGFuaW1hdGVUbzooQ0dGbG9hdCllbmRWYWx1ZSBkdXJhdGlvbjooTlNUaW1lSW50ZXJ2YWwpZHVy
YXRpb247CiBAZW5kCiAKIEBpbXBsZW1lbnRhdGlvbiBXZWJTY3JvbGxiYXJQYXJ0QW5pbWF0aW9u
CiAKLS0gKGlkKWluaXRXaXRoU2Nyb2xsYmFyUGFpbnRlcjooU2Nyb2xsYmFyUGFpbnRlcilzY3Jv
bGxlclBhaW50ZXIgcGFydDooV2ViQ29yZTo6U2Nyb2xsYmFyUGFydClwYXJ0IHNjcm9sbEFuaW1h
dG9yOihXZWJDb3JlOjpTY3JvbGxBbmltYXRvck1hYyopc2Nyb2xsQW5pbWF0b3IgYW5pbWF0ZUFs
cGhhVG86KENHRmxvYXQpbmV3QWxwaGEgZHVyYXRpb246KE5TVGltZUludGVydmFsKWR1cmF0aW9u
CistIChpZClpbml0V2l0aFNjcm9sbGJhclBhaW50ZXI6KFNjcm9sbGJhclBhaW50ZXIpc2Nyb2xs
ZXJQYWludGVyIGFuaW1hdGU6KEZlYXR1cmVUb0FuaW1hdGUpZmVhdHVyZVRvQW5pbWF0ZSBzY3Jv
bGxBbmltYXRvcjooU2Nyb2xsQW5pbWF0b3JNYWMqKXNjcm9sbEFuaW1hdG9yIGFuaW1hdGVGcm9t
OihDR0Zsb2F0KXN0YXJ0VmFsdWUgYW5pbWF0ZVRvOihDR0Zsb2F0KWVuZFZhbHVlIGR1cmF0aW9u
OihOU1RpbWVJbnRlcnZhbClkdXJhdGlvbgogewogICAgIHNlbGYgPSBbc3VwZXIgaW5pdFdpdGhE
dXJhdGlvbjpkdXJhdGlvbiBhbmltYXRpb25DdXJ2ZTpOU0FuaW1hdGlvbkVhc2VJbk91dF07CiAg
ICAgaWYgKCFzZWxmKQogICAgICAgICByZXR1cm4gbmlsOwogICAgIAogICAgIF9zY3JvbGxlclBh
aW50ZXIgPSBzY3JvbGxlclBhaW50ZXI7Ci0gICAgX3BhcnQgPSBwYXJ0OworICAgIF9mZWF0dXJl
VG9BbmltYXRlID0gZmVhdHVyZVRvQW5pbWF0ZTsKICAgICBfYW5pbWF0b3IgPSBzY3JvbGxBbmlt
YXRvcjsKLSAgICBfaW5pdGlhbEFscGhhID0gX3BhcnQgPT0gV2ViQ29yZTo6VGh1bWJQYXJ0ID8g
W19zY3JvbGxlclBhaW50ZXIuZ2V0KCkga25vYkFscGhhXSA6IFtfc2Nyb2xsZXJQYWludGVyLmdl
dCgpIHRyYWNrQWxwaGFdOwotICAgIF9uZXdBbHBoYSA9IG5ld0FscGhhOworICAgIF9zdGFydFZh
bHVlID0gc3RhcnRWYWx1ZTsKKyAgICBfZW5kVmFsdWUgPSBlbmRWYWx1ZTsKICAgICAKICAgICBy
ZXR1cm4gc2VsZjsgICAgCiB9CiAKKy0gKHZvaWQpc2V0U2Nyb2xsYmFyUGFpbnRlcjooU2Nyb2xs
YmFyUGFpbnRlcilzY3JvbGxlclBhaW50ZXIKK3sKKyAgICBfc2Nyb2xsZXJQYWludGVyID0gc2Ny
b2xsZXJQYWludGVyOworfQorCistICh2b2lkKXNldFN0YXJ0VmFsdWU6KENHRmxvYXQpc3RhcnRW
YWx1ZQoreworICAgIF9zdGFydFZhbHVlID0gc3RhcnRWYWx1ZTsKK30KKworLSAodm9pZClzZXRF
bmRWYWx1ZTooQ0dGbG9hdCllbmRWYWx1ZQoreworICAgIF9lbmRWYWx1ZSA9IGVuZFZhbHVlOwor
fQorCiAtICh2b2lkKXNldEN1cnJlbnRQcm9ncmVzczooTlNBbmltYXRpb25Qcm9ncmVzcylwcm9n
cmVzcwogewogICAgIFtzdXBlciBzZXRDdXJyZW50UHJvZ3Jlc3M6cHJvZ3Jlc3NdOwpAQCAtMjc4
LDIyICszMDgsMjkgQEAgLSAodm9pZClzZXRDdXJyZW50UHJvZ3Jlc3M6KE5TQW5pbWF0aW9uUAog
ICAgIGlmICghX2FuaW1hdG9yKQogICAgICAgICByZXR1cm47CiAKLSAgICBDR0Zsb2F0IGN1cnJl
bnRBbHBoYTsKLSAgICBpZiAoX2luaXRpYWxBbHBoYSA+IF9uZXdBbHBoYSkKLSAgICAgICAgY3Vy
cmVudEFscGhhID0gMSAtIHByb2dyZXNzOwotICAgIGVsc2UKLSAgICAgICAgY3VycmVudEFscGhh
ID0gcHJvZ3Jlc3M7Ci0gICAgCi0gICAgaWYgKF9wYXJ0ID09IFdlYkNvcmU6OlRodW1iUGFydCkK
LSAgICAgICAgW19zY3JvbGxlclBhaW50ZXIuZ2V0KCkgc2V0S25vYkFscGhhOmN1cnJlbnRBbHBo
YV07CisgICAgQ0dGbG9hdCBjdXJyZW50VmFsdWU7CisgICAgaWYgKF9zdGFydFZhbHVlID4gX2Vu
ZFZhbHVlKQorICAgICAgICBjdXJyZW50VmFsdWUgPSAxIC0gcHJvZ3Jlc3M7CiAgICAgZWxzZQot
ICAgICAgICBbX3Njcm9sbGVyUGFpbnRlci5nZXQoKSBzZXRUcmFja0FscGhhOmN1cnJlbnRBbHBo
YV07CisgICAgICAgIGN1cnJlbnRWYWx1ZSA9IHByb2dyZXNzOworCisgICAgc3dpdGNoIChfZmVh
dHVyZVRvQW5pbWF0ZSkgeworICAgIGNhc2UgVGh1bWJBbHBoYToKKyAgICAgICAgW19zY3JvbGxl
clBhaW50ZXIuZ2V0KCkgc2V0S25vYkFscGhhOmN1cnJlbnRWYWx1ZV07CisgICAgICAgIGJyZWFr
OworICAgIGNhc2UgVHJhY2tBbHBoYToKKyAgICAgICAgW19zY3JvbGxlclBhaW50ZXIuZ2V0KCkg
c2V0VHJhY2tBbHBoYTpjdXJyZW50VmFsdWVdOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFVJ
U3RhdGVUcmFuc2l0aW9uOgorICAgICAgICBbX3Njcm9sbGVyUGFpbnRlci5nZXQoKSBzZXRVaVN0
YXRlVHJhbnNpdGlvblByb2dyZXNzOmN1cnJlbnRWYWx1ZV07CisgICAgICAgIGJyZWFrOworICAg
IH0KIAogICAgIC8vIEludmFsaWRhdGUgdGhlIHNjcm9sbGJhcnMgc28gdGhhdCB0aGV5IHBhaW50
IHRoZSBhbmltYXRpb24KLSAgICBpZiAoV2ViQ29yZTo6U2Nyb2xsYmFyKiB2ZXJ0aWNhbFNjcm9s
bGJhciA9IF9hbmltYXRvci0+c2Nyb2xsYWJsZUFyZWEoKS0+dmVydGljYWxTY3JvbGxiYXIoKSkK
LSAgICAgICAgdmVydGljYWxTY3JvbGxiYXItPmludmFsaWRhdGVSZWN0KFdlYkNvcmU6OkludFJl
Y3QoMCwgMCwgdmVydGljYWxTY3JvbGxiYXItPndpZHRoKCksIHZlcnRpY2FsU2Nyb2xsYmFyLT5o
ZWlnaHQoKSkpOwotICAgIGlmIChXZWJDb3JlOjpTY3JvbGxiYXIqIGhvcml6b250YWxTY3JvbGxi
YXIgPSBfYW5pbWF0b3ItPnNjcm9sbGFibGVBcmVhKCktPmhvcml6b250YWxTY3JvbGxiYXIoKSkK
LSAgICAgICAgaG9yaXpvbnRhbFNjcm9sbGJhci0+aW52YWxpZGF0ZVJlY3QoV2ViQ29yZTo6SW50
UmVjdCgwLCAwLCBob3Jpem9udGFsU2Nyb2xsYmFyLT53aWR0aCgpLCBob3Jpem9udGFsU2Nyb2xs
YmFyLT5oZWlnaHQoKSkpOworICAgIGlmIChTY3JvbGxiYXIqIHZlcnRpY2FsU2Nyb2xsYmFyID0g
X2FuaW1hdG9yLT5zY3JvbGxhYmxlQXJlYSgpLT52ZXJ0aWNhbFNjcm9sbGJhcigpKQorICAgICAg
ICB2ZXJ0aWNhbFNjcm9sbGJhci0+aW52YWxpZGF0ZSgpOworICAgIGlmIChTY3JvbGxiYXIqIGhv
cml6b250YWxTY3JvbGxiYXIgPSBfYW5pbWF0b3ItPnNjcm9sbGFibGVBcmVhKCktPmhvcml6b250
YWxTY3JvbGxiYXIoKSkKKyAgICAgICAgaG9yaXpvbnRhbFNjcm9sbGJhci0+aW52YWxpZGF0ZSgp
OwogfQogCiAtICh2b2lkKXNjcm9sbEFuaW1hdG9yRGVzdHJveWVkCkBAIC0zMTUsNiArMzUyLDkg
QEAgQGludGVyZmFjZSBXZWJTY3JvbGxiYXJQYWludGVyRGVsZWdhdGUgOgogCiAgICAgUmV0YWlu
UHRyPFdlYlNjcm9sbGJhclBhcnRBbmltYXRpb24+IF92ZXJ0aWNhbFRyYWNrQW5pbWF0aW9uOwog
ICAgIFJldGFpblB0cjxXZWJTY3JvbGxiYXJQYXJ0QW5pbWF0aW9uPiBfaG9yaXpvbnRhbFRyYWNr
QW5pbWF0aW9uOworCisgICAgUmV0YWluUHRyPFdlYlNjcm9sbGJhclBhcnRBbmltYXRpb24+IF92
ZXJ0aWNhbFVJU3RhdGVUcmFuc2l0aW9uQW5pbWF0aW9uOworICAgIFJldGFpblB0cjxXZWJTY3Jv
bGxiYXJQYXJ0QW5pbWF0aW9uPiBfaG9yaXpvbnRhbFVJU3RhdGVUcmFuc2l0aW9uQW5pbWF0aW9u
OwogfQogLSAoaWQpaW5pdFdpdGhTY3JvbGxBbmltYXRvcjooV2ViQ29yZTo6U2Nyb2xsQW5pbWF0
b3JNYWMqKXNjcm9sbEFuaW1hdG9yOwogLSAodm9pZCljYW5jZWxBbmltYXRpb25zOwpAQCAtMzM5
LDYgKzM3OSw4IEBAIC0gKHZvaWQpY2FuY2VsQW5pbWF0aW9ucwogICAgIFtfaG9yaXpvbnRhbEtu
b2JBbmltYXRpb24uZ2V0KCkgc3RvcEFuaW1hdGlvbl07CiAgICAgW192ZXJ0aWNhbFRyYWNrQW5p
bWF0aW9uLmdldCgpIHN0b3BBbmltYXRpb25dOwogICAgIFtfaG9yaXpvbnRhbFRyYWNrQW5pbWF0
aW9uLmdldCgpIHN0b3BBbmltYXRpb25dOworICAgIFtfdmVydGljYWxVSVN0YXRlVHJhbnNpdGlv
bkFuaW1hdGlvbi5nZXQoKSBzdG9wQW5pbWF0aW9uXTsKKyAgICBbX2hvcml6b250YWxVSVN0YXRl
VHJhbnNpdGlvbkFuaW1hdGlvbi5nZXQoKSBzdG9wQW5pbWF0aW9uXTsKICAgICBFTkRfQkxPQ0tf
T0JKQ19FWENFUFRJT05TOwogfQogCkBAIC0zNjQsNyArNDA2LDI1IEBAIC0gKENBTGF5ZXIgKils
YXllcgogICAgIHJldHVybiBkdW1teUxheWVyOwogfQogCi0tICh2b2lkKXNldFVwQW5pbWF0aW9u
OihSZXRhaW5QdHI8V2ViU2Nyb2xsYmFyUGFydEFuaW1hdGlvbj4mKXNjcm9sbGJhclBhcnRBbmlt
YXRpb24gc2Nyb2xsZXJQYWludGVyOihTY3JvbGxiYXJQYWludGVyKXNjcm9sbGVyUGFpbnRlciBw
YXJ0OihXZWJDb3JlOjpTY3JvbGxiYXJQYXJ0KXBhcnQgYW5pbWF0ZUFscGhhVG86KENHRmxvYXQp
bmV3QWxwaGEgZHVyYXRpb246KE5TVGltZUludGVydmFsKWR1cmF0aW9uCistIChOU1BvaW50KW1v
dXNlTG9jYXRpb25JblNjcm9sbGVyRm9yU2Nyb2xsZXJJbXA6KGlkKXNjcm9sbGVySW1wCit7Cisg
ICAgaWYgKCFfYW5pbWF0b3IpCisgICAgICAgIHJldHVybiBOU1plcm9Qb2ludDsKKworICAgIFNj
cm9sbGJhclBhaW50ZXIgc2Nyb2xsZXJQYWludGVyID0gKFNjcm9sbGJhclBhaW50ZXIpc2Nyb2xs
ZXJJbXA7CisgICAgU2Nyb2xsYmFyKiBzY3JvbGxiYXI7CisgICAgaWYgKFtzY3JvbGxlclBhaW50
ZXIgaXNIb3Jpem9udGFsXSkKKyAgICAgICAgc2Nyb2xsYmFyID0gX2FuaW1hdG9yLT5zY3JvbGxh
YmxlQXJlYSgpLT5ob3Jpem9udGFsU2Nyb2xsYmFyKCk7CisgICAgZWxzZSAKKyAgICAgICAgc2Ny
b2xsYmFyID0gX2FuaW1hdG9yLT5zY3JvbGxhYmxlQXJlYSgpLT52ZXJ0aWNhbFNjcm9sbGJhcigp
OworCisgICAgaWYgKCFzY3JvbGxiYXIpCisgICAgICAgIHJldHVybiBOU1plcm9Qb2ludDsKKwor
ICAgIHJldHVybiBzY3JvbGxiYXItPmNvbnZlcnRGcm9tQ29udGFpbmluZ1ZpZXcoX2FuaW1hdG9y
LT5zY3JvbGxhYmxlQXJlYSgpLT5jdXJyZW50TW91c2VQb3NpdGlvbigpKTsKK30KKworLSAodm9p
ZClzZXRVcEFscGhhQW5pbWF0aW9uOihSZXRhaW5QdHI8V2ViU2Nyb2xsYmFyUGFydEFuaW1hdGlv
bj4mKXNjcm9sbGJhclBhcnRBbmltYXRpb24gc2Nyb2xsZXJQYWludGVyOihTY3JvbGxiYXJQYWlu
dGVyKXNjcm9sbGVyUGFpbnRlciBwYXJ0OihXZWJDb3JlOjpTY3JvbGxiYXJQYXJ0KXBhcnQgYW5p
bWF0ZUFscGhhVG86KENHRmxvYXQpbmV3QWxwaGEgZHVyYXRpb246KE5TVGltZUludGVydmFsKWR1
cmF0aW9uCiB7CiAgICAgLy8gSWYgdGhlIHVzZXIgaGFzIHNjcm9sbGVkIHRoZSBwYWdlLCB0aGVu
IHRoZSBzY3JvbGxiYXJzIG11c3QgYmUgYW5pbWF0ZWQgaGVyZS4gCiAgICAgLy8gVGhpcyBvdmVy
cmlkZXMgdGhlIGVhcmx5IHJldHVybnMuCkBAIC0zOTgsOSArNDU4LDEwIEBAIC0gKHZvaWQpc2V0
VXBBbmltYXRpb246KFJldGFpblB0cjxXZWJTY3IKICAgICBbTlNBbmltYXRpb25Db250ZXh0IGJl
Z2luR3JvdXBpbmddOwogICAgIFtbTlNBbmltYXRpb25Db250ZXh0IGN1cnJlbnRDb250ZXh0XSBz
ZXREdXJhdGlvbjpkdXJhdGlvbl07CiAgICAgc2Nyb2xsYmFyUGFydEFuaW1hdGlvbi5hZG9wdE5T
KFtbV2ViU2Nyb2xsYmFyUGFydEFuaW1hdGlvbiBhbGxvY10gaW5pdFdpdGhTY3JvbGxiYXJQYWlu
dGVyOnNjcm9sbGVyUGFpbnRlciAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFydDpwYXJ0Ci0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNj
cm9sbEFuaW1hdG9yOl9hbmltYXRvciAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5pbWF0ZUFscGhhVG86bmV3QWxw
aGEgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGFuaW1hdGU6cGFydCA9PSBUaHVtYlBhcnQgPyBUaHVtYkFscGhhIDog
VHJhY2tBbHBoYQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBzY3JvbGxBbmltYXRvcjpfYW5pbWF0b3IKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgYW5pbWF0ZUZyb206cGFydCA9PSBUaHVtYlBhcnQgPyBbc2Nyb2xsZXJQYWludGVyIGtub2JB
bHBoYV0gOiBbc2Nyb2xsZXJQYWludGVyIHRyYWNrQWxwaGFdCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuaW1hdGVU
bzpuZXdBbHBoYSAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgZHVyYXRpb246ZHVyYXRpb25dKTsKICAgICBbc2Nyb2xs
YmFyUGFydEFuaW1hdGlvbi5nZXQoKSBzZXRBbmltYXRpb25CbG9ja2luZ01vZGU6TlNBbmltYXRp
b25Ob25ibG9ja2luZ107CiAgICAgW3Njcm9sbGJhclBhcnRBbmltYXRpb24uZ2V0KCkgc3RhcnRB
bmltYXRpb25dOwpAQCAtNDE0LDkgKzQ3NSw5IEBAIC0gKHZvaWQpc2Nyb2xsZXJJbXA6KGlkKXNj
cm9sbGVySW1wIGFuaW0KIAogICAgIFNjcm9sbGJhclBhaW50ZXIgc2Nyb2xsZXJQYWludGVyID0g
KFNjcm9sbGJhclBhaW50ZXIpc2Nyb2xsZXJJbXA7CiAgICAgaWYgKFtzY3JvbGxlckltcCBpc0hv
cml6b250YWxdKQotICAgICAgICBbc2VsZiBzZXRVcEFuaW1hdGlvbjpfaG9yaXpvbnRhbEtub2JB
bmltYXRpb24gc2Nyb2xsZXJQYWludGVyOnNjcm9sbGVyUGFpbnRlciBwYXJ0OldlYkNvcmU6OlRo
dW1iUGFydCBhbmltYXRlQWxwaGFUbzpuZXdLbm9iQWxwaGEgZHVyYXRpb246ZHVyYXRpb25dOwor
ICAgICAgICBbc2VsZiBzZXRVcEFscGhhQW5pbWF0aW9uOl9ob3Jpem9udGFsS25vYkFuaW1hdGlv
biBzY3JvbGxlclBhaW50ZXI6c2Nyb2xsZXJQYWludGVyIHBhcnQ6V2ViQ29yZTo6VGh1bWJQYXJ0
IGFuaW1hdGVBbHBoYVRvOm5ld0tub2JBbHBoYSBkdXJhdGlvbjpkdXJhdGlvbl07CiAgICAgZWxz
ZQotICAgICAgICBbc2VsZiBzZXRVcEFuaW1hdGlvbjpfdmVydGljYWxLbm9iQW5pbWF0aW9uIHNj
cm9sbGVyUGFpbnRlcjpzY3JvbGxlclBhaW50ZXIgcGFydDpXZWJDb3JlOjpUaHVtYlBhcnQgYW5p
bWF0ZUFscGhhVG86bmV3S25vYkFscGhhIGR1cmF0aW9uOmR1cmF0aW9uXTsKKyAgICAgICAgW3Nl
bGYgc2V0VXBBbHBoYUFuaW1hdGlvbjpfdmVydGljYWxLbm9iQW5pbWF0aW9uIHNjcm9sbGVyUGFp
bnRlcjpzY3JvbGxlclBhaW50ZXIgcGFydDpXZWJDb3JlOjpUaHVtYlBhcnQgYW5pbWF0ZUFscGhh
VG86bmV3S25vYkFscGhhIGR1cmF0aW9uOmR1cmF0aW9uXTsKIH0KIAogLSAodm9pZClzY3JvbGxl
ckltcDooaWQpc2Nyb2xsZXJJbXAgYW5pbWF0ZVRyYWNrQWxwaGFUbzooQ0dGbG9hdCluZXdUcmFj
a0FscGhhIGR1cmF0aW9uOihOU1RpbWVJbnRlcnZhbClkdXJhdGlvbgpAQCAtNDI2LDkgKzQ4Nyw0
NCBAQCAtICh2b2lkKXNjcm9sbGVySW1wOihpZClzY3JvbGxlckltcCBhbmltCiAKICAgICBTY3Jv
bGxiYXJQYWludGVyIHNjcm9sbGVyUGFpbnRlciA9IChTY3JvbGxiYXJQYWludGVyKXNjcm9sbGVy
SW1wOwogICAgIGlmIChbc2Nyb2xsZXJJbXAgaXNIb3Jpem9udGFsXSkKLSAgICAgICAgW3NlbGYg
c2V0VXBBbmltYXRpb246X2hvcml6b250YWxUcmFja0FuaW1hdGlvbiBzY3JvbGxlclBhaW50ZXI6
c2Nyb2xsZXJQYWludGVyIHBhcnQ6V2ViQ29yZTo6QmFja1RyYWNrUGFydCBhbmltYXRlQWxwaGFU
bzpuZXdUcmFja0FscGhhIGR1cmF0aW9uOmR1cmF0aW9uXTsKKyAgICAgICAgW3NlbGYgc2V0VXBB
bHBoYUFuaW1hdGlvbjpfaG9yaXpvbnRhbFRyYWNrQW5pbWF0aW9uIHNjcm9sbGVyUGFpbnRlcjpz
Y3JvbGxlclBhaW50ZXIgcGFydDpXZWJDb3JlOjpCYWNrVHJhY2tQYXJ0IGFuaW1hdGVBbHBoYVRv
Om5ld1RyYWNrQWxwaGEgZHVyYXRpb246ZHVyYXRpb25dOwogICAgIGVsc2UKLSAgICAgICAgW3Nl
bGYgc2V0VXBBbmltYXRpb246X3ZlcnRpY2FsVHJhY2tBbmltYXRpb24gc2Nyb2xsZXJQYWludGVy
OnNjcm9sbGVyUGFpbnRlciBwYXJ0OldlYkNvcmU6OkJhY2tUcmFja1BhcnQgYW5pbWF0ZUFscGhh
VG86bmV3VHJhY2tBbHBoYSBkdXJhdGlvbjpkdXJhdGlvbl07CisgICAgICAgIFtzZWxmIHNldFVw
QWxwaGFBbmltYXRpb246X3ZlcnRpY2FsVHJhY2tBbmltYXRpb24gc2Nyb2xsZXJQYWludGVyOnNj
cm9sbGVyUGFpbnRlciBwYXJ0OldlYkNvcmU6OkJhY2tUcmFja1BhcnQgYW5pbWF0ZUFscGhhVG86
bmV3VHJhY2tBbHBoYSBkdXJhdGlvbjpkdXJhdGlvbl07Cit9CisKKy0gKHZvaWQpc2Nyb2xsZXJJ
bXA6KGlkKXNjcm9sbGVySW1wIGFuaW1hdGVVSVN0YXRlVHJhbnNpdGlvbldpdGhEdXJhdGlvbjoo
TlNUaW1lSW50ZXJ2YWwpZHVyYXRpb24KK3sKKyAgICBpZiAoIV9hbmltYXRvcikKKyAgICAgICAg
cmV0dXJuOworCisgICAgaWYgKCFzdXBwb3J0c1VJU3RhdGVUcmFuc2l0aW9uUHJvZ3Jlc3MoKSkK
KyAgICAgICAgcmV0dXJuOworCisgICAgU2Nyb2xsYmFyUGFpbnRlciBzY3JvbGxlclBhaW50ZXIg
PSAoU2Nyb2xsYmFyUGFpbnRlcilzY3JvbGxlckltcDsKKyAgICBSZXRhaW5QdHI8V2ViU2Nyb2xs
YmFyUGFydEFuaW1hdGlvbj4gc2Nyb2xsYmFyUGFydEFuaW1hdGlvbiA9IFtzY3JvbGxlclBhaW50
ZXIgaXNIb3Jpem9udGFsXSA/IF9ob3Jpem9udGFsVUlTdGF0ZVRyYW5zaXRpb25BbmltYXRpb24g
OiBfdmVydGljYWxVSVN0YXRlVHJhbnNpdGlvbkFuaW1hdGlvbjsKKworICAgIC8vIFVJU3RhdGVU
cmFuc2l0aW9uIGFsd2F5cyBhbmltYXRlcyB0byAxLiBJbiBjYXNlIGFuIGFuaW1hdGlvbiBpcyBp
biBwcm9ncmVzcyB0aGlzIGF2b2lkcyBhIGhhcmQgdHJhbnNpdGlvbi4KKyAgICBbc2Nyb2xsZXJQ
YWludGVyIHNldFVpU3RhdGVUcmFuc2l0aW9uUHJvZ3Jlc3M6MSAtIFtzY3JvbGxlclBhaW50ZXIg
dWlTdGF0ZVRyYW5zaXRpb25Qcm9ncmVzc11dOworCisgICAgW05TQW5pbWF0aW9uQ29udGV4dCBi
ZWdpbkdyb3VwaW5nXTsKKyAgICBbW05TQW5pbWF0aW9uQ29udGV4dCBjdXJyZW50Q29udGV4dF0g
c2V0RHVyYXRpb246ZHVyYXRpb25dOworICAgIGlmICghc2Nyb2xsYmFyUGFydEFuaW1hdGlvbikg
eworICAgICAgICBzY3JvbGxiYXJQYXJ0QW5pbWF0aW9uLmFkb3B0TlMoW1tXZWJTY3JvbGxiYXJQ
YXJ0QW5pbWF0aW9uIGFsbG9jXSBpbml0V2l0aFNjcm9sbGJhclBhaW50ZXI6c2Nyb2xsZXJQYWlu
dGVyIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBhbmltYXRlOlVJU3RhdGVUcmFuc2l0aW9uCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNj
cm9sbEFuaW1hdG9yOl9hbmltYXRvcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmltYXRlRnJvbTpbc2Nyb2xsZXJQ
YWludGVyIHVpU3RhdGVUcmFuc2l0aW9uUHJvZ3Jlc3NdCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuaW1hdGVUbzox
LjAgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGR1cmF0aW9uOmR1cmF0aW9uXSk7CisgICAgICAgIFtzY3JvbGxiYXJQ
YXJ0QW5pbWF0aW9uLmdldCgpIHNldEFuaW1hdGlvbkJsb2NraW5nTW9kZTpOU0FuaW1hdGlvbk5v
bmJsb2NraW5nXTsKKyAgICB9IGVsc2UgeworICAgICAgICAvLyBJZiB3ZSBkb24ndCBuZWVkIHRv
IGluaXRpYWxpemUgdGhlIGFuaW1hdGlvbiwganVzdCByZXNldCB0aGUgdmFsdWVzIGluIGNhc2Ug
dGhleSBoYXZlIGNoYW5nZWQuCisgICAgICAgIFtzY3JvbGxiYXJQYXJ0QW5pbWF0aW9uLmdldCgp
IHNldFNjcm9sbGJhclBhaW50ZXI6c2Nyb2xsZXJQYWludGVyXTsKKyAgICAgICAgW3Njcm9sbGJh
clBhcnRBbmltYXRpb24uZ2V0KCkgc2V0U3RhcnRWYWx1ZTpbc2Nyb2xsZXJQYWludGVyIHVpU3Rh
dGVUcmFuc2l0aW9uUHJvZ3Jlc3NdXTsKKyAgICAgICAgW3Njcm9sbGJhclBhcnRBbmltYXRpb24u
Z2V0KCkgc2V0RW5kVmFsdWU6MS4wXTsKKyAgICAgICAgW3Njcm9sbGJhclBhcnRBbmltYXRpb24u
Z2V0KCkgc2V0RHVyYXRpb246ZHVyYXRpb25dOworICAgIH0KKyAgICBbc2Nyb2xsYmFyUGFydEFu
aW1hdGlvbi5nZXQoKSBzdGFydEFuaW1hdGlvbl07CisgICAgW05TQW5pbWF0aW9uQ29udGV4dCBl
bmRHcm91cGluZ107CiB9CiAKIC0gKHZvaWQpc2Nyb2xsZXJJbXA6KGlkKXNjcm9sbGVySW1wIG92
ZXJsYXlTY3JvbGxlclN0YXRlQ2hhbmdlZFRvOihOU1VJbnRlZ2VyKW5ld092ZXJsYXlTY3JvbGxl
clN0YXRlCkBAIC00NDUsNiArNTQxLDggQEAgLSAodm9pZClzY3JvbGxBbmltYXRvckRlc3Ryb3ll
ZAogICAgIFtfaG9yaXpvbnRhbEtub2JBbmltYXRpb24uZ2V0KCkgc2Nyb2xsQW5pbWF0b3JEZXN0
cm95ZWRdOwogICAgIFtfdmVydGljYWxUcmFja0FuaW1hdGlvbi5nZXQoKSBzY3JvbGxBbmltYXRv
ckRlc3Ryb3llZF07CiAgICAgW19ob3Jpem9udGFsVHJhY2tBbmltYXRpb24uZ2V0KCkgc2Nyb2xs
QW5pbWF0b3JEZXN0cm95ZWRdOworICAgIFtfdmVydGljYWxVSVN0YXRlVHJhbnNpdGlvbkFuaW1h
dGlvbi5nZXQoKSBzY3JvbGxBbmltYXRvckRlc3Ryb3llZF07CisgICAgW19ob3Jpem9udGFsVUlT
dGF0ZVRyYW5zaXRpb25BbmltYXRpb24uZ2V0KCkgc2Nyb2xsQW5pbWF0b3JEZXN0cm95ZWRdOwog
ICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlM7CiB9CiAKQEAgLTY1Nyw2ICs3NTUsMzggQEAg
dm9pZCBTY3JvbGxBbmltYXRvck1hYzo6bW91c2VNb3ZlZEluQ29udAogI2VuZGlmCiB9CiAKK3Zv
aWQgU2Nyb2xsQW5pbWF0b3JNYWM6Om1vdXNlRW50ZXJlZFNjcm9sbGJhcihTY3JvbGxiYXIqIHNj
cm9sbGJhcikgY29uc3QKK3sKKyAgICBpZiAoIXNjcm9sbGFibGVBcmVhKCktPmlzT25BY3RpdmVQ
YWdlKCkpCisgICAgICAgIHJldHVybjsKKyNpZiBVU0UoU0NST0xMQkFSX1BBSU5URVIpCisgICAg
aWYgKCFzdXBwb3J0c1VJU3RhdGVUcmFuc2l0aW9uUHJvZ3Jlc3MoKSkKKyAgICAgICAgcmV0dXJu
OworICAgIGlmIChTY3JvbGxiYXJUaGVtZU1hYyogdGhlbWUgPSBtYWNTY3JvbGxiYXJUaGVtZSgp
KSB7CisgICAgICAgIFNjcm9sbGJhclBhaW50ZXIgcGFpbnRlciA9IHRoZW1lLT5wYWludGVyRm9y
U2Nyb2xsYmFyKHNjcm9sbGJhcik7CisgICAgICAgIFtwYWludGVyIG1vdXNlRW50ZXJlZFNjcm9s
bGVyXTsKKyAgICB9CisjZWxzZQorICAgIFVOVVNFRF9QQVJBTShzY3JvbGxiYXIpOworI2VuZGlm
Cit9CisKK3ZvaWQgU2Nyb2xsQW5pbWF0b3JNYWM6Om1vdXNlRXhpdGVkU2Nyb2xsYmFyKFNjcm9s
bGJhciogc2Nyb2xsYmFyKSBjb25zdAoreworICAgIGlmICghc2Nyb2xsYWJsZUFyZWEoKS0+aXNP
bkFjdGl2ZVBhZ2UoKSkKKyAgICAgICAgcmV0dXJuOworI2lmIFVTRShTQ1JPTExCQVJfUEFJTlRF
UikKKyAgICBpZiAoIXN1cHBvcnRzVUlTdGF0ZVRyYW5zaXRpb25Qcm9ncmVzcygpKQorICAgICAg
ICByZXR1cm47CisgICAgaWYgKFNjcm9sbGJhclRoZW1lTWFjKiB0aGVtZSA9IG1hY1Njcm9sbGJh
clRoZW1lKCkpIHsKKyAgICAgICAgU2Nyb2xsYmFyUGFpbnRlciBwYWludGVyID0gdGhlbWUtPnBh
aW50ZXJGb3JTY3JvbGxiYXIoc2Nyb2xsYmFyKTsKKyAgICAgICAgW3BhaW50ZXIgbW91c2VFeGl0
ZWRTY3JvbGxlcl07CisgICAgfQorI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0oc2Nyb2xsYmFyKTsK
KyNlbmRpZgorfQorCiB2b2lkIFNjcm9sbEFuaW1hdG9yTWFjOjp3aWxsU3RhcnRMaXZlUmVzaXpl
KCkKIHsKICAgICBpZiAoIXNjcm9sbGFibGVBcmVhKCktPmlzT25BY3RpdmVQYWdlKCkpCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>113940</attachid>
            <date>2011-11-07 15:24:10 -0800</date>
            <delta_ts>2011-11-07 15:33:49 -0800</delta_ts>
            <desc>Patch that moves work to Scrollbar from EventHandler</desc>
            <filename>for-review-4.txt</filename>
            <type>text/plain</type>
            <size>32146</size>
            <attacher name="Beth Dakin">bdakin</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDk5NDg2KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsODEgQEAKKzIwMTEtMTEtMDcgIEJldGggRGFr
aW4gIDxiZGFraW5AYXBwbGUuY29tPgorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD03MTQ5MAorICAgICAgICBTdXBwb3J0IHVpU3RhdGVUcmFuc2l0aW9u
UHJvZ3Jlc3MgZm9yIHNjcm9sbGJhcnMKKyAgICAgICAgLWFuZCBjb3JyZXNwb25kaW5nLQorICAg
ICAgICA8cmRhcjovL3Byb2JsZW0vOTg0OTYxMj4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBTdGVwIDEgb2Ygc3VwcG9ydGluZyB1aVN0YXRlVHJhbnNp
dGlvblByb2dyZXNzIGlzIGtub3dpbmcgd2hlbiB0aGUgbW91c2UgaGFzIAorICAgICAgICBlbnRl
cmVkIG9yIGV4aXRlZCBhIHNjcm9sbGJhci4gVGhlc2UgY2hhbmdlcyB0byBTY3JvbGxiYXIgcGFz
cyB0aGF0IGluZm9ybWF0aW9uIAorICAgICAgICBvbiB0byB0aGUgU2Nyb2xsQW5pbWF0b3IuIEFs
c28sIFNjcm9sbGJhcjo6bW91c2VVcCgpIG5vdyB0YWtlcyBhIAorICAgICAgICBQbGF0Zm9ybU1v
dXNlRXZlbnQgYXMgYSBwYXJhbWV0ZXIuIFRoaXMgaXMgbmVjZXNzYXJ5IGJlY2F1c2UgbV9ob3Zl
cmVkTm9kZSBpcyBub3QgCisgICAgICAgIGFsd2F5cyB1cCB0byBkYXRlIG9uIGEgbW91c2VVcCwg
c28gbW91c2VVcCBtdXN0IGhpdFRlc3QgdGhlIHNjcm9sbGJhciB0byBzZWUgaWYgCisgICAgICAg
IHRoZSBtb3VzZSBoYXMgZXhpdGVkIHRoZSBzY3JvbGxiYXIuCisgICAgICAgICogcGxhdGZvcm0v
U2Nyb2xsYmFyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhcjo6bW91c2VNb3ZlZCk6
CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXI6Om1vdXNlRXhpdGVkKToKKyAgICAgICAgKFdl
YkNvcmU6OlNjcm9sbGJhcjo6bW91c2VVcCk6CisgICAgICAgICogcGxhdGZvcm0vU2Nyb2xsYmFy
Lmg6CisKKyAgICAgICAgVGhlc2UgY2hhbmdlcyBhcmUgcmVxdWlyZWQgbm93IHRoYXQgU2Nyb2xs
YmFyOjptb3VzZVVwKCkgdGFrZXMgYSBwYXJhbWV0ZXIuCisgICAgICAgICogV2ViQ29yZS5leHAu
aW46CisgICAgICAgICogcGFnZS9FdmVudEhhbmRsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
RXZlbnRIYW5kbGVyOjpoYW5kbGVNb3VzZURvdWJsZUNsaWNrRXZlbnQpOgorICAgICAgICAoV2Vi
Q29yZTo6RXZlbnRIYW5kbGVyOjpoYW5kbGVNb3VzZVJlbGVhc2VFdmVudCk6CisgICAgICAgICog
cGxhdGZvcm0vY2hyb21pdW0vUG9wdXBMaXN0Qm94LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBv
cHVwTGlzdEJveDo6aGFuZGxlTW91c2VSZWxlYXNlRXZlbnQpOgorICAgICAgICAqIHBsYXRmb3Jt
L3dpbi9Qb3B1cE1lbnVXaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6UG9wdXBNZW51V2luOjp3
bmRQcm9jKToKKyAgICAgICAgCisgICAgICAgIFNjcm9sbEFuaW1hdG9yIHBhc3NlcyB0aGUgaW5m
b3JtYXRpb24gb24gdG8gQXBwS2l0LgorICAgICAgICAqIHBsYXRmb3JtL1Njcm9sbEFuaW1hdG9y
Lmg6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxBbmltYXRvcjo6bW91c2VFbnRlcmVkU2Nyb2xs
YmFyKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbEFuaW1hdG9yOjptb3VzZUV4aXRlZFNjcm9s
bGJhcik6CisgICAgICAgICogcGxhdGZvcm0vbWFjL1Njcm9sbEFuaW1hdG9yTWFjLmg6CisgICAg
ICAgIChXZWJDb3JlOjpTY3JvbGxBbmltYXRvck1hYzo6bW91c2VFbnRlcmVkU2Nyb2xsYmFyKToK
KyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbEFuaW1hdG9yTWFjOjptb3VzZUV4aXRlZFNjcm9sbGJh
cik6CisKKyAgICAgICAgVGhlcmUgYXJlIHNldmVyYWwgbmV3IHBpZWNlcyBvZiBBcHBLaXQgYXBp
IHdlIG11c3QgY2FsbCBpbnRvLgorICAgICAgICAqIHBsYXRmb3JtL21hYy9OU1Njcm9sbGVySW1w
RGV0YWlscy5oOgorCisgICAgICAgIFRoaXMgaXMgYSB0ZW1wb3JhcnkgZnVuY3Rpb24gdGhhdCBp
cyBuZWVkZWQgZm9yIHRoZSB0aW1lIGJlaW5nIHNpbmNlIHRoZXJlIGlzIG5ldyAKKyAgICAgICAg
QXBwS2l0IGFwaSByZXF1aXJlZCBmb3IgdGhpcyB0byB3b3JrLgorICAgICAgICAqIHBsYXRmb3Jt
L21hYy9TY3JvbGxBbmltYXRvck1hYy5tbToKKyAgICAgICAgKHN1cHBvcnRzVUlTdGF0ZVRyYW5z
aXRpb25Qcm9ncmVzcyk6CisKKyAgICAgICAgSSByZWZhY3RvcmVkIFdlYlNjcm9sbGJhclBhcnRB
bmltYXRpb24gc28gdGhhdCBpdCBjYW4gaGFuZGxlIHRoZSAKKyAgICAgICAgdWlTdGF0ZVRyYW5z
aXRpb25Qcm9ncmVzcyBhbmltYXRpb24gYXMgd2VsbCBhcyB0aGUgYWxwaGEgYW5pbWF0aW9ucyBp
dCBhbHJlYWR5IAorICAgICAgICBoYW5kbGVkLiBUaGlzIG1vc3RseSBpbnZvbHZlZCByZS1uYW1p
bmcgdGhpbmdzIGFuZCBtYWtpbmcgdXNlIG9mIGEgbmV3IGVudW0gY2FsbGVkIAorICAgICAgICBG
ZWF0dXJlVG9BbmltYXRlIHdoaWNoIGtlZXBzIHRyYWNrIG9mIHdoYXQgdGhlIGluc3RhbmNlIG9m
IAorICAgICAgICBXZWJTY3JvbGxiYXJQYXJ0QW5pbWF0aW9uIGlzIGFuaW1hdGluZy4KKyAgICAg
ICAgKC1bV2ViU2Nyb2xsYmFyUGFydEFuaW1hdGlvbiBpbml0V2l0aFNjcm9sbGJhclBhaW50ZXI6
YW5pbWF0ZTpzY3JvbGxBbmltYXRvcjphbmltYXRlRnJvbTphbmltYXRlVG86ZHVyYXRpb246XSk6
CisgICAgICAgICgtW1dlYlNjcm9sbGJhclBhcnRBbmltYXRpb24gc2V0U2Nyb2xsYmFyUGFpbnRl
cjpdKToKKyAgICAgICAgKC1bV2ViU2Nyb2xsYmFyUGFydEFuaW1hdGlvbiBzZXRTdGFydFZhbHVl
Ol0pOgorICAgICAgICAoLVtXZWJTY3JvbGxiYXJQYXJ0QW5pbWF0aW9uIHNldEVuZFZhbHVlOl0p
OgorICAgICAgICAoLVtXZWJTY3JvbGxiYXJQYXJ0QW5pbWF0aW9uIHNldEN1cnJlbnRQcm9ncmVz
czpdKToKKworICAgICAgICBXZWJTY3JvbGxiYXJQYWludGVyRGVsZWdhdGUgaGFzIHR3byBuZXcg
YW5pbWF0aW9ucywgCisgICAgICAgIF92ZXJ0aWNhbFVJU3RhdGVUcmFuc2l0aW9uQW5pbWF0aW9u
LCBhbmQgX2hvcml6b250YWxVSVN0YXRlVHJhbnNpdGlvbkFuaW1hdGlvbi4gSXQgCisgICAgICAg
IGFsc28gcmVzcG9uZHMgdG8gYSBmZXcgbmV3IGRlbGVnYXRlIGNhbGxzLgorICAgICAgICAoLVtX
ZWJTY3JvbGxiYXJQYWludGVyRGVsZWdhdGUgY2FuY2VsQW5pbWF0aW9uc10pOgorCisgICAgICAg
IFRoaXMgaXMgYSBuZXcgZGVsZWdhdGUgY2FsbCBuZWVkZWQgZm9yIHVpU3RhdGVUcmFuc2l0aW9u
UHJvZ3Jlc3MuCisgICAgICAgICgtW1dlYlNjcm9sbGJhclBhaW50ZXJEZWxlZ2F0ZSBtb3VzZUxv
Y2F0aW9uSW5TY3JvbGxlckZvclNjcm9sbGVySW1wOl0pOgorCisgICAgICAgIEkgcmUtbmFtZWQg
c2V0VXBBbmltYXRpb24gdG8gc2V0VXBBbHBoYUFuaW1hdGlvbiBzaW5jZSBpdCBkb2VzIGEgbG90
IG9mIHRoaW5ncyAKKyAgICAgICAgdGhhdCBhcmUgc3BlY2lmaWMgdG8gdGhlIGFscGhhIGFuaW1h
dGlvbiBhbmQgSSBjaG9zZSBub3QgdG8gcmUtdXNlIGl0IGZvciAKKyAgICAgICAgdWlTdGF0ZVRy
YW5zaXRpb24uCisgICAgICAgICgtW1dlYlNjcm9sbGJhclBhaW50ZXJEZWxlZ2F0ZSBzZXRVcEFs
cGhhQW5pbWF0aW9uOnNjcm9sbGVyUGFpbnRlcjpwYXJ0OldlYkNvcmU6OmFuaW1hdGVBbHBoYVRv
OmR1cmF0aW9uOl0pOgorICAgICAgICAoLVtXZWJTY3JvbGxiYXJQYWludGVyRGVsZWdhdGUgc2Ny
b2xsZXJJbXA6YW5pbWF0ZUtub2JBbHBoYVRvOmR1cmF0aW9uOl0pOgorICAgICAgICAoLVtXZWJT
Y3JvbGxiYXJQYWludGVyRGVsZWdhdGUgc2Nyb2xsZXJJbXA6YW5pbWF0ZVRyYWNrQWxwaGFUbzpk
dXJhdGlvbjpdKToKKworICAgICAgICBOZXcgZGVsZWdhdGUgY2FsbCBmb3IgdGhlIHVpU3RhdGVU
cmFuc2l0aW9uIGFuaW1hdGlvbiB0aGF0IHNldHMgdXAgdGhhdCBhbmltYXRpb24gCisgICAgICAg
IGFuZCBraWNrcyBpdCBvZmYuCisgICAgICAgICgtW1dlYlNjcm9sbGJhclBhaW50ZXJEZWxlZ2F0
ZSBzY3JvbGxlckltcDphbmltYXRlVUlTdGF0ZVRyYW5zaXRpb25XaXRoRHVyYXRpb246XSk6Cisg
ICAgICAgICgtW1dlYlNjcm9sbGJhclBhaW50ZXJEZWxlZ2F0ZSBzY3JvbGxBbmltYXRvckRlc3Ry
b3llZF0pOgorCiAyMDExLTExLTA3ICBWYW5nZWxpcyBLb2trZXZpcyAgPHZhbmdlbGlzQGNocm9t
aXVtLm9yZz4KIAogICAgICAgICBDcmVhdGUgYSBzZXBhcmF0ZSBzZXR0aW5nIGZvciBjb21wb3Np
dGluZyBvZiBmb3Igc2Nyb2xsYWJsZSBbaV1mcmFtZXMKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dl
YkNvcmUuZXhwLmluCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmlu
CShyZXZpc2lvbiA5OTQ0OSkKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xMDg3LDExICsxMDg3LDExIEBAIF9fWk43V2ViQ29yZTlQYWdlR3JvdXAy
NnJlbW92ZVVzZXJTY3JpcHQKIF9fWk43V2ViQ29yZTlQYWdlR3JvdXAyNnNldFNob3VsZFRyYWNr
VmlzaXRlZExpbmtzRWIKIF9fWk43V2ViQ29yZTlQYWdlR3JvdXAyOXJlbW92ZVVzZXJTdHlsZVNo
ZWV0RnJvbVdvcmxkRVBOU18xNURPTVdyYXBwZXJXb3JsZEVSS05TXzRLVVJMRQogX19aTjdXZWJD
b3JlOVBhZ2VHcm91cDMwcmVtb3ZlVXNlclN0eWxlU2hlZXRzRnJvbVdvcmxkRVBOU18xNURPTVdy
YXBwZXJXb3JsZEUKLV9fWk43V2ViQ29yZTlTY3JvbGxiYXI3bW91c2VVcEV2CiBfX1pON1dlYkNv
cmU5UGFnZUdyb3VwOXBhZ2VHcm91cEVSS04zV1RGNlN0cmluZ0UKIF9fWk43V2ViQ29yZTlTY3Jv
bGxiYXIxM3NldFByb3BvcnRpb25FaWkKIF9fWk43V2ViQ29yZTlTY3JvbGxiYXIyMWNyZWF0ZU5h
dGl2ZVNjcm9sbGJhckVQTlNfMTRTY3JvbGxhYmxlQXJlYUVOU18yMFNjcm9sbGJhck9yaWVudGF0
aW9uRU5TXzIwU2Nyb2xsYmFyQ29udHJvbFNpemVFCiBfX1pON1dlYkNvcmU5U2Nyb2xsYmFyMjJt
YXhPdmVybGFwQmV0d2VlblBhZ2VzRXYKK19fWk43V2ViQ29yZTlTY3JvbGxiYXI3bW91c2VVcEVS
S05TXzE4UGxhdGZvcm1Nb3VzZUV2ZW50RQogX19aTjdXZWJDb3JlOVNjcm9sbGJhcjhzZXRTdGVw
c0VpaWkKIF9fWk43V2ViQ29yZTlTY3JvbGxiYXI5bW91c2VEb3duRVJLTlNfMThQbGF0Zm9ybU1v
dXNlRXZlbnRFCiBfX1pON1dlYkNvcmU5VGltZXJCYXNlNHN0b3BFdgpJbmRleDogU291cmNlL1dl
YkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3BhZ2UvRXZlbnRIYW5kbGVyLmNwcAkocmV2aXNpb24gOTk0NDkpCisrKyBTb3VyY2UvV2ViQ29y
ZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE1MjQsNyArMTUyNCw3
IEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpoYW5kbGVNb3VzZURvdWJsZUNsaWMKICAgICBib29sIHN3
YWxsb3dDbGlja0V2ZW50ID0gbW91c2VFdmVudC5idXR0b24oKSAhPSBSaWdodEJ1dHRvbiAmJiB0
YXJnZXROb2RlKG1ldikgPT0gbV9jbGlja05vZGUgJiYgZGlzcGF0Y2hNb3VzZUV2ZW50KGV2ZW50
TmFtZXMoKS5jbGlja0V2ZW50LCB0YXJnZXROb2RlKG1ldiksIHRydWUsIG1fY2xpY2tDb3VudCwg
bW91c2VFdmVudCwgdHJ1ZSk7CiAKICAgICBpZiAobV9sYXN0U2Nyb2xsYmFyVW5kZXJNb3VzZSkK
LSAgICAgICAgc3dhbGxvd01vdXNlVXBFdmVudCA9IG1fbGFzdFNjcm9sbGJhclVuZGVyTW91c2Ut
Pm1vdXNlVXAoKTsKKyAgICAgICAgc3dhbGxvd01vdXNlVXBFdmVudCA9IG1fbGFzdFNjcm9sbGJh
clVuZGVyTW91c2UtPm1vdXNlVXAobW91c2VFdmVudCk7CiAKICAgICBib29sIHN3YWxsb3dNb3Vz
ZVJlbGVhc2VFdmVudCA9ICFzd2FsbG93TW91c2VVcEV2ZW50ICYmIGhhbmRsZU1vdXNlUmVsZWFz
ZUV2ZW50KG1ldik7CiAKQEAgLTE3MTIsNyArMTcxMiw3IEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpo
YW5kbGVNb3VzZVJlbGVhc2VFdmUKIAogICAgIGlmIChtX2xhc3RTY3JvbGxiYXJVbmRlck1vdXNl
KSB7CiAgICAgICAgIGludmFsaWRhdGVDbGljaygpOwotICAgICAgICByZXR1cm4gbV9sYXN0U2Ny
b2xsYmFyVW5kZXJNb3VzZS0+bW91c2VVcCgpOworICAgICAgICByZXR1cm4gbV9sYXN0U2Nyb2xs
YmFyVW5kZXJNb3VzZS0+bW91c2VVcChtb3VzZUV2ZW50KTsKICAgICB9CiAKICAgICBIaXRUZXN0
UmVxdWVzdCByZXF1ZXN0KEhpdFRlc3RSZXF1ZXN0OjpNb3VzZVVwKTsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1hdG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0b3IuaAkocmV2aXNpb24gOTk0NDkpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRvci5oCSh3b3JraW5nIGNvcHkpCkBAIC03
OCw2ICs3OCw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgbW91c2VFbnRlcmVkQ29udGVu
dEFyZWEoKSBjb25zdCB7IH0KICAgICB2aXJ0dWFsIHZvaWQgbW91c2VFeGl0ZWRDb250ZW50QXJl
YSgpIGNvbnN0IHsgfQogICAgIHZpcnR1YWwgdm9pZCBtb3VzZU1vdmVkSW5Db250ZW50QXJlYSgp
IGNvbnN0IHsgfQorICAgIHZpcnR1YWwgdm9pZCBtb3VzZUVudGVyZWRTY3JvbGxiYXIoU2Nyb2xs
YmFyKikgY29uc3QgeyB9CisgICAgdmlydHVhbCB2b2lkIG1vdXNlRXhpdGVkU2Nyb2xsYmFyKFNj
cm9sbGJhciopIGNvbnN0IHsgfQogICAgIHZpcnR1YWwgdm9pZCB3aWxsU3RhcnRMaXZlUmVzaXpl
KCkgeyB9CiAgICAgdmlydHVhbCB2b2lkIGNvbnRlbnRzUmVzaXplZCgpIGNvbnN0IHsgfQogICAg
IHZpcnR1YWwgdm9pZCB3aWxsRW5kTGl2ZVJlc2l6ZSgpIHsgfQpJbmRleDogU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vU2Nyb2xsYmFyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9TY3JvbGxiYXIuY3BwCShyZXZpc2lvbiA5OTQ0OSkKKysrIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1Njcm9sbGJhci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM0Niw3ICszNDYsMTIg
QEAgYm9vbCBTY3JvbGxiYXI6Om1vdXNlTW92ZWQoY29uc3QgUGxhdGZvcgogICAgIGlmIChtX3By
ZXNzZWRQYXJ0ICE9IE5vUGFydCkKICAgICAgICAgbV9wcmVzc2VkUG9zID0gKG9yaWVudGF0aW9u
KCkgPT0gSG9yaXpvbnRhbFNjcm9sbGJhciA/IGNvbnZlcnRGcm9tQ29udGFpbmluZ1dpbmRvdyhl
dnQucG9zKCkpLngoKSA6IGNvbnZlcnRGcm9tQ29udGFpbmluZ1dpbmRvdyhldnQucG9zKCkpLnko
KSk7CiAKLSAgICBTY3JvbGxiYXJQYXJ0IHBhcnQgPSB0aGVtZSgpLT5oaXRUZXN0KHRoaXMsIGV2
dCk7ICAgIAorICAgIGlmIChtX2hvdmVyZWRQYXJ0ID09IE5vUGFydCkgeworICAgICAgICBpZiAo
bV9zY3JvbGxhYmxlQXJlYSkKKyAgICAgICAgICAgIG1fc2Nyb2xsYWJsZUFyZWEtPnNjcm9sbEFu
aW1hdG9yKCktPm1vdXNlRW50ZXJlZFNjcm9sbGJhcih0aGlzKTsKKyAgICB9CisKKyAgICBTY3Jv
bGxiYXJQYXJ0IHBhcnQgPSB0aGVtZSgpLT5oaXRUZXN0KHRoaXMsIGV2dCk7CiAgICAgaWYgKHBh
cnQgIT0gbV9ob3ZlcmVkUGFydCkgewogICAgICAgICBpZiAobV9wcmVzc2VkUGFydCAhPSBOb1Bh
cnQpIHsKICAgICAgICAgICAgIGlmIChwYXJ0ID09IG1fcHJlc3NlZFBhcnQpIHsKQEAgLTM3MCwx
NyArMzc1LDI3IEBAIGJvb2wgU2Nyb2xsYmFyOjptb3VzZU1vdmVkKGNvbnN0IFBsYXRmb3IKIAog
Ym9vbCBTY3JvbGxiYXI6Om1vdXNlRXhpdGVkKCkKIHsKKyAgICBpZiAobV9zY3JvbGxhYmxlQXJl
YSkKKyAgICAgICAgbV9zY3JvbGxhYmxlQXJlYS0+c2Nyb2xsQW5pbWF0b3IoKS0+bW91c2VFeGl0
ZWRTY3JvbGxiYXIodGhpcyk7CiAgICAgc2V0SG92ZXJlZFBhcnQoTm9QYXJ0KTsKICAgICByZXR1
cm4gdHJ1ZTsKIH0KIAotYm9vbCBTY3JvbGxiYXI6Om1vdXNlVXAoKQorYm9vbCBTY3JvbGxiYXI6
Om1vdXNlVXAoY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50JiBtb3VzZUV2ZW50KQogewogICAgIHNl
dFByZXNzZWRQYXJ0KE5vUGFydCk7CiAgICAgbV9wcmVzc2VkUG9zID0gMDsKICAgICBtX2RyYWdn
aW5nRG9jdW1lbnQgPSBmYWxzZTsKICAgICBzdG9wVGltZXJJZk5lZWRlZCgpOwogCisgICAgaWYg
KG1fc2Nyb2xsYWJsZUFyZWEpIHsKKyAgICAgICAgLy8gbV9ob3ZlcmVkUGFydCB3b24ndCBiZSB1
cGRhdGVkIHVudGlsIHRoZSBuZXh0IG1vdXNlTW92ZWQgb3IgbW91c2VEb3duLCBzbyB3ZSBoYXZl
IHRvIGhpdCB0ZXN0CisgICAgICAgIC8vIHRvIHJlYWxseSBrbm93IGlmIHRoZSBtb3VzZSBoYXMg
ZXhpdGVkIHRoZSBzY3JvbGxiYXIgb24gYSBtb3VzZVVwLgorICAgICAgICBTY3JvbGxiYXJQYXJ0
IHBhcnQgPSB0aGVtZSgpLT5oaXRUZXN0KHRoaXMsIG1vdXNlRXZlbnQpOworICAgICAgICBpZiAo
cGFydCA9PSBOb1BhcnQpCisgICAgICAgICAgICBtX3Njcm9sbGFibGVBcmVhLT5zY3JvbGxBbmlt
YXRvcigpLT5tb3VzZUV4aXRlZFNjcm9sbGJhcih0aGlzKTsKKyAgICB9CisKICAgICBpZiAocGFy
ZW50KCkgJiYgcGFyZW50KCktPmlzRnJhbWVWaWV3KCkpCiAgICAgICAgIHN0YXRpY19jYXN0PEZy
YW1lVmlldyo+KHBhcmVudCgpKS0+ZnJhbWUoKS0+ZXZlbnRIYW5kbGVyKCktPnNldE1vdXNlUHJl
c3NlZChmYWxzZSk7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGJhci5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGJhci5oCShyZXZp
c2lvbiA5OTQ0OSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGJhci5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC05Nyw3ICs5Nyw3IEBAIHB1YmxpYzoKICAgICBib29sIG1vdXNlRXhpdGVk
KCk7CiAgICAgCiAgICAgLy8gVXNlZCBieSBzb21lIHBsYXRmb3JtIHNjcm9sbGJhcnMgdG8ga25v
dyB3aGVuIHRoZXkndmUgYmVlbiByZWxlYXNlZCBmcm9tIGNhcHR1cmUuCi0gICAgYm9vbCBtb3Vz
ZVVwKCk7CisgICAgYm9vbCBtb3VzZVVwKGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYpOwogCiAg
ICAgYm9vbCBtb3VzZURvd24oY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50Jik7CiAKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1BvcHVwTGlzdEJveC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vUG9wdXBMaXN0Qm94LmNwcAko
cmV2aXNpb24gOTk0NDkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9Qb3B1
cExpc3RCb3guY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMjYsNyArMTI2LDcgQEAgYm9vbCBQb3B1
cExpc3RCb3g6OmhhbmRsZU1vdXNlTW92ZUV2ZW50KAogYm9vbCBQb3B1cExpc3RCb3g6OmhhbmRs
ZU1vdXNlUmVsZWFzZUV2ZW50KGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYgZXZlbnQpCiB7CiAg
ICAgaWYgKG1fY2FwdHVyaW5nU2Nyb2xsYmFyKSB7Ci0gICAgICAgIG1fY2FwdHVyaW5nU2Nyb2xs
YmFyLT5tb3VzZVVwKCk7CisgICAgICAgIG1fY2FwdHVyaW5nU2Nyb2xsYmFyLT5tb3VzZVVwKGV2
ZW50KTsKICAgICAgICAgbV9jYXB0dXJpbmdTY3JvbGxiYXIgPSAwOwogICAgICAgICByZXR1cm4g
dHJ1ZTsKICAgICB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvTlNTY3JvbGxl
ckltcERldGFpbHMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMv
TlNTY3JvbGxlckltcERldGFpbHMuaAkocmV2aXNpb24gOTk0NDkpCisrKyBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tYWMvTlNTY3JvbGxlckltcERldGFpbHMuaAkod29ya2luZyBjb3B5KQpAQCAt
NDEsNiArNDEsNyBAQCBAaW50ZXJmYWNlIE5TT2JqZWN0IChTY3JvbGxiYXJQYWludGVyKQogLSAo
dm9pZClzZXRLbm9iUHJvcG9ydGlvbjooQ0dGbG9hdClwcm9wb3J0aW9uOwogLSAodm9pZClzZXRL
bm9iU3R5bGU6KE5TU2Nyb2xsZXJLbm9iU3R5bGUpa25vYlN0eWxlOwogLSAodm9pZClzZXREZWxl
Z2F0ZTooaWQpZGVsZWdhdGU7CistICh2b2lkKXNldFVpU3RhdGVUcmFuc2l0aW9uUHJvZ3Jlc3M6
KENHRmxvYXQpdWlTdGF0ZVRyYW5zaXRpb25Qcm9ncmVzczsKIC0gKEJPT0wpaXNIb3Jpem9udGFs
OwogLSAoQ0dGbG9hdCl0cmFja1dpZHRoOwogLSAoQ0dGbG9hdCl0cmFja0JveFdpZHRoOwpAQCAt
NDksOSArNTAsMTIgQEAgQGludGVyZmFjZSBOU09iamVjdCAoU2Nyb2xsYmFyUGFpbnRlcikKIC0g
KENHRmxvYXQpa25vYk92ZXJsYXBFbmRJbnNldDsKIC0gKENHRmxvYXQpdHJhY2tFbmRJbnNldDsK
IC0gKENHRmxvYXQpa25vYkVuZEluc2V0OworLSAoQ0dGbG9hdCl1aVN0YXRlVHJhbnNpdGlvblBy
b2dyZXNzOwogLSAoTlNSZWN0KXJlY3RGb3JQYXJ0OihOU1Njcm9sbGVyUGFydClwYXJ0Q29kZTsK
IC0gKHZvaWQpZHJhd0tub2JTbG90SW5SZWN0OihOU1JlY3Qpc2xvdFJlY3QgaGlnaGxpZ2h0OihC
T09MKWZsYWcgYWxwaGE6KENHRmxvYXQpYWxwaGE7CiAtICh2b2lkKWRyYXdLbm9iOworLSAodm9p
ZCltb3VzZUVudGVyZWRTY3JvbGxlcjsKKy0gKHZvaWQpbW91c2VFeGl0ZWRTY3JvbGxlcjsKIEBl
bmQKIAogQGludGVyZmFjZSBOU09iamVjdCAoU2Nyb2xsYmFyUGFpbnRlckNvbnRyb2xsZXIpCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvU2Nyb2xsQW5pbWF0b3JNYWMuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvU2Nyb2xsQW5pbWF0b3JNYWMu
aAkocmV2aXNpb24gOTk0NDkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvU2Nyb2xs
QW5pbWF0b3JNYWMuaAkod29ya2luZyBjb3B5KQpAQCAtMTE3LDYgKzExNyw4IEBAIHByaXZhdGU6
CiAgICAgdmlydHVhbCB2b2lkIG1vdXNlRW50ZXJlZENvbnRlbnRBcmVhKCkgY29uc3Q7CiAgICAg
dmlydHVhbCB2b2lkIG1vdXNlRXhpdGVkQ29udGVudEFyZWEoKSBjb25zdDsKICAgICB2aXJ0dWFs
IHZvaWQgbW91c2VNb3ZlZEluQ29udGVudEFyZWEoKSBjb25zdDsKKyAgICB2aXJ0dWFsIHZvaWQg
bW91c2VFbnRlcmVkU2Nyb2xsYmFyKFNjcm9sbGJhciopIGNvbnN0OworICAgIHZpcnR1YWwgdm9p
ZCBtb3VzZUV4aXRlZFNjcm9sbGJhcihTY3JvbGxiYXIqKSBjb25zdDsKICAgICB2aXJ0dWFsIHZv
aWQgd2lsbFN0YXJ0TGl2ZVJlc2l6ZSgpOwogICAgIHZpcnR1YWwgdm9pZCBjb250ZW50c1Jlc2l6
ZWQoKSBjb25zdDsKICAgICB2aXJ0dWFsIHZvaWQgd2lsbEVuZExpdmVSZXNpemUoKTsKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9TY3JvbGxBbmltYXRvck1hYy5tbQo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvU2Nyb2xsQW5pbWF0b3JNYWMubW0J
KHJldmlzaW9uIDk5NDQ5KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Njcm9sbEFu
aW1hdG9yTWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC00NSw2ICs0NSwxNSBAQAogdXNpbmcgbmFt
ZXNwYWNlIFdlYkNvcmU7CiB1c2luZyBuYW1lc3BhY2Ugc3RkOwogCisjaWYgVVNFKFNDUk9MTEJB
Ul9QQUlOVEVSKQorc3RhdGljIGJvb2wgc3VwcG9ydHNVSVN0YXRlVHJhbnNpdGlvblByb2dyZXNz
KCkKK3sKKyAgICAvLyBGSVhNRTogVGhpcyBpcyB0ZW1wb3JhcnkgdW50aWwgYWxsIHBsYXRmb3Jt
cyB0aGF0IHN1cHBvcnQgU2Nyb2xsYmFyUGFpbnRlciBzdXBwb3J0IHRoaXMgcGFydCBvZiB0aGUg
QVBJLgorICAgIHN0YXRpYyBib29sIGdsb2JhbFN1cHBvcnRzVUlTdGF0ZVRyYW5zaXRpb25Qcm9n
cmVzcyA9IFtOU0NsYXNzRnJvbVN0cmluZyhAIk5TU2Nyb2xsZXJJbXAiKSBpbnN0YW5jZXNSZXNw
b25kVG9TZWxlY3RvcjpAc2VsZWN0b3IobW91c2VFbnRlcmVkU2Nyb2xsZXIpXTsKKyAgICByZXR1
cm4gZ2xvYmFsU3VwcG9ydHNVSVN0YXRlVHJhbnNpdGlvblByb2dyZXNzOworfQorI2VuZGlmCisK
IEBpbnRlcmZhY2UgTlNPYmplY3QgKFNjcm9sbEFuaW1hdGlvbkhlbHBlckRldGFpbHMpCiAtIChp
ZClpbml0V2l0aERlbGVnYXRlOihpZClkZWxlZ2F0ZTsKIC0gKHZvaWQpX3N0b3BSdW47CkBAIC0y
NDMsMzQgKzI1Miw1NSBAQCAtICh2b2lkKXNjcm9sbGVySW1wUGFpcjooaWQpc2Nyb2xsZXJJbXBQ
CiAKIEBlbmQKIAorZW51bSBGZWF0dXJlVG9BbmltYXRlIHsKKyAgICBUaHVtYkFscGhhLAorICAg
IFRyYWNrQWxwaGEsCisgICAgVUlTdGF0ZVRyYW5zaXRpb24KK307CisKIEBpbnRlcmZhY2UgV2Vi
U2Nyb2xsYmFyUGFydEFuaW1hdGlvbiA6IE5TQW5pbWF0aW9uCiB7CiAgICAgUmV0YWluUHRyPFNj
cm9sbGJhclBhaW50ZXI+IF9zY3JvbGxlclBhaW50ZXI7Ci0gICAgV2ViQ29yZTo6U2Nyb2xsYmFy
UGFydCBfcGFydDsKLSAgICBXZWJDb3JlOjpTY3JvbGxBbmltYXRvck1hYyogX2FuaW1hdG9yOwot
ICAgIENHRmxvYXQgX2luaXRpYWxBbHBoYTsKLSAgICBDR0Zsb2F0IF9uZXdBbHBoYTsKKyAgICBG
ZWF0dXJlVG9BbmltYXRlIF9mZWF0dXJlVG9BbmltYXRlOworICAgIFNjcm9sbEFuaW1hdG9yTWFj
KiBfYW5pbWF0b3I7CisgICAgQ0dGbG9hdCBfc3RhcnRWYWx1ZTsKKyAgICBDR0Zsb2F0IF9lbmRW
YWx1ZTsKIH0KLS0gKGlkKWluaXRXaXRoU2Nyb2xsYmFyUGFpbnRlcjooU2Nyb2xsYmFyUGFpbnRl
cilzY3JvbGxlclBhaW50ZXIgcGFydDooV2ViQ29yZTo6U2Nyb2xsYmFyUGFydClwYXJ0IHNjcm9s
bEFuaW1hdG9yOihXZWJDb3JlOjpTY3JvbGxBbmltYXRvck1hYyopc2Nyb2xsQW5pbWF0b3IgYW5p
bWF0ZUFscGhhVG86KENHRmxvYXQpbmV3QWxwaGEgZHVyYXRpb246KE5TVGltZUludGVydmFsKWR1
cmF0aW9uOworLSAoaWQpaW5pdFdpdGhTY3JvbGxiYXJQYWludGVyOihTY3JvbGxiYXJQYWludGVy
KXNjcm9sbGVyUGFpbnRlciBhbmltYXRlOihGZWF0dXJlVG9BbmltYXRlKWZlYXR1cmVUb0FuaW1h
dGUgc2Nyb2xsQW5pbWF0b3I6KFNjcm9sbEFuaW1hdG9yTWFjKilzY3JvbGxBbmltYXRvciBhbmlt
YXRlRnJvbTooQ0dGbG9hdClzdGFydFZhbHVlIGFuaW1hdGVUbzooQ0dGbG9hdCllbmRWYWx1ZSBk
dXJhdGlvbjooTlNUaW1lSW50ZXJ2YWwpZHVyYXRpb247CiBAZW5kCiAKIEBpbXBsZW1lbnRhdGlv
biBXZWJTY3JvbGxiYXJQYXJ0QW5pbWF0aW9uCiAKLS0gKGlkKWluaXRXaXRoU2Nyb2xsYmFyUGFp
bnRlcjooU2Nyb2xsYmFyUGFpbnRlcilzY3JvbGxlclBhaW50ZXIgcGFydDooV2ViQ29yZTo6U2Ny
b2xsYmFyUGFydClwYXJ0IHNjcm9sbEFuaW1hdG9yOihXZWJDb3JlOjpTY3JvbGxBbmltYXRvck1h
Yyopc2Nyb2xsQW5pbWF0b3IgYW5pbWF0ZUFscGhhVG86KENHRmxvYXQpbmV3QWxwaGEgZHVyYXRp
b246KE5TVGltZUludGVydmFsKWR1cmF0aW9uCistIChpZClpbml0V2l0aFNjcm9sbGJhclBhaW50
ZXI6KFNjcm9sbGJhclBhaW50ZXIpc2Nyb2xsZXJQYWludGVyIGFuaW1hdGU6KEZlYXR1cmVUb0Fu
aW1hdGUpZmVhdHVyZVRvQW5pbWF0ZSBzY3JvbGxBbmltYXRvcjooU2Nyb2xsQW5pbWF0b3JNYWMq
KXNjcm9sbEFuaW1hdG9yIGFuaW1hdGVGcm9tOihDR0Zsb2F0KXN0YXJ0VmFsdWUgYW5pbWF0ZVRv
OihDR0Zsb2F0KWVuZFZhbHVlIGR1cmF0aW9uOihOU1RpbWVJbnRlcnZhbClkdXJhdGlvbgogewog
ICAgIHNlbGYgPSBbc3VwZXIgaW5pdFdpdGhEdXJhdGlvbjpkdXJhdGlvbiBhbmltYXRpb25DdXJ2
ZTpOU0FuaW1hdGlvbkVhc2VJbk91dF07CiAgICAgaWYgKCFzZWxmKQogICAgICAgICByZXR1cm4g
bmlsOwogICAgIAogICAgIF9zY3JvbGxlclBhaW50ZXIgPSBzY3JvbGxlclBhaW50ZXI7Ci0gICAg
X3BhcnQgPSBwYXJ0OworICAgIF9mZWF0dXJlVG9BbmltYXRlID0gZmVhdHVyZVRvQW5pbWF0ZTsK
ICAgICBfYW5pbWF0b3IgPSBzY3JvbGxBbmltYXRvcjsKLSAgICBfaW5pdGlhbEFscGhhID0gX3Bh
cnQgPT0gV2ViQ29yZTo6VGh1bWJQYXJ0ID8gW19zY3JvbGxlclBhaW50ZXIuZ2V0KCkga25vYkFs
cGhhXSA6IFtfc2Nyb2xsZXJQYWludGVyLmdldCgpIHRyYWNrQWxwaGFdOwotICAgIF9uZXdBbHBo
YSA9IG5ld0FscGhhOworICAgIF9zdGFydFZhbHVlID0gc3RhcnRWYWx1ZTsKKyAgICBfZW5kVmFs
dWUgPSBlbmRWYWx1ZTsKICAgICAKICAgICByZXR1cm4gc2VsZjsgICAgCiB9CiAKKy0gKHZvaWQp
c2V0U2Nyb2xsYmFyUGFpbnRlcjooU2Nyb2xsYmFyUGFpbnRlcilzY3JvbGxlclBhaW50ZXIKK3sK
KyAgICBfc2Nyb2xsZXJQYWludGVyID0gc2Nyb2xsZXJQYWludGVyOworfQorCistICh2b2lkKXNl
dFN0YXJ0VmFsdWU6KENHRmxvYXQpc3RhcnRWYWx1ZQoreworICAgIF9zdGFydFZhbHVlID0gc3Rh
cnRWYWx1ZTsKK30KKworLSAodm9pZClzZXRFbmRWYWx1ZTooQ0dGbG9hdCllbmRWYWx1ZQorewor
ICAgIF9lbmRWYWx1ZSA9IGVuZFZhbHVlOworfQorCiAtICh2b2lkKXNldEN1cnJlbnRQcm9ncmVz
czooTlNBbmltYXRpb25Qcm9ncmVzcylwcm9ncmVzcwogewogICAgIFtzdXBlciBzZXRDdXJyZW50
UHJvZ3Jlc3M6cHJvZ3Jlc3NdOwpAQCAtMjc4LDIyICszMDgsMjkgQEAgLSAodm9pZClzZXRDdXJy
ZW50UHJvZ3Jlc3M6KE5TQW5pbWF0aW9uUAogICAgIGlmICghX2FuaW1hdG9yKQogICAgICAgICBy
ZXR1cm47CiAKLSAgICBDR0Zsb2F0IGN1cnJlbnRBbHBoYTsKLSAgICBpZiAoX2luaXRpYWxBbHBo
YSA+IF9uZXdBbHBoYSkKLSAgICAgICAgY3VycmVudEFscGhhID0gMSAtIHByb2dyZXNzOwotICAg
IGVsc2UKLSAgICAgICAgY3VycmVudEFscGhhID0gcHJvZ3Jlc3M7Ci0gICAgCi0gICAgaWYgKF9w
YXJ0ID09IFdlYkNvcmU6OlRodW1iUGFydCkKLSAgICAgICAgW19zY3JvbGxlclBhaW50ZXIuZ2V0
KCkgc2V0S25vYkFscGhhOmN1cnJlbnRBbHBoYV07CisgICAgQ0dGbG9hdCBjdXJyZW50VmFsdWU7
CisgICAgaWYgKF9zdGFydFZhbHVlID4gX2VuZFZhbHVlKQorICAgICAgICBjdXJyZW50VmFsdWUg
PSAxIC0gcHJvZ3Jlc3M7CiAgICAgZWxzZQotICAgICAgICBbX3Njcm9sbGVyUGFpbnRlci5nZXQo
KSBzZXRUcmFja0FscGhhOmN1cnJlbnRBbHBoYV07CisgICAgICAgIGN1cnJlbnRWYWx1ZSA9IHBy
b2dyZXNzOworCisgICAgc3dpdGNoIChfZmVhdHVyZVRvQW5pbWF0ZSkgeworICAgIGNhc2UgVGh1
bWJBbHBoYToKKyAgICAgICAgW19zY3JvbGxlclBhaW50ZXIuZ2V0KCkgc2V0S25vYkFscGhhOmN1
cnJlbnRWYWx1ZV07CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgVHJhY2tBbHBoYToKKyAgICAg
ICAgW19zY3JvbGxlclBhaW50ZXIuZ2V0KCkgc2V0VHJhY2tBbHBoYTpjdXJyZW50VmFsdWVdOwor
ICAgICAgICBicmVhazsKKyAgICBjYXNlIFVJU3RhdGVUcmFuc2l0aW9uOgorICAgICAgICBbX3Nj
cm9sbGVyUGFpbnRlci5nZXQoKSBzZXRVaVN0YXRlVHJhbnNpdGlvblByb2dyZXNzOmN1cnJlbnRW
YWx1ZV07CisgICAgICAgIGJyZWFrOworICAgIH0KIAogICAgIC8vIEludmFsaWRhdGUgdGhlIHNj
cm9sbGJhcnMgc28gdGhhdCB0aGV5IHBhaW50IHRoZSBhbmltYXRpb24KLSAgICBpZiAoV2ViQ29y
ZTo6U2Nyb2xsYmFyKiB2ZXJ0aWNhbFNjcm9sbGJhciA9IF9hbmltYXRvci0+c2Nyb2xsYWJsZUFy
ZWEoKS0+dmVydGljYWxTY3JvbGxiYXIoKSkKLSAgICAgICAgdmVydGljYWxTY3JvbGxiYXItPmlu
dmFsaWRhdGVSZWN0KFdlYkNvcmU6OkludFJlY3QoMCwgMCwgdmVydGljYWxTY3JvbGxiYXItPndp
ZHRoKCksIHZlcnRpY2FsU2Nyb2xsYmFyLT5oZWlnaHQoKSkpOwotICAgIGlmIChXZWJDb3JlOjpT
Y3JvbGxiYXIqIGhvcml6b250YWxTY3JvbGxiYXIgPSBfYW5pbWF0b3ItPnNjcm9sbGFibGVBcmVh
KCktPmhvcml6b250YWxTY3JvbGxiYXIoKSkKLSAgICAgICAgaG9yaXpvbnRhbFNjcm9sbGJhci0+
aW52YWxpZGF0ZVJlY3QoV2ViQ29yZTo6SW50UmVjdCgwLCAwLCBob3Jpem9udGFsU2Nyb2xsYmFy
LT53aWR0aCgpLCBob3Jpem9udGFsU2Nyb2xsYmFyLT5oZWlnaHQoKSkpOworICAgIGlmIChTY3Jv
bGxiYXIqIHZlcnRpY2FsU2Nyb2xsYmFyID0gX2FuaW1hdG9yLT5zY3JvbGxhYmxlQXJlYSgpLT52
ZXJ0aWNhbFNjcm9sbGJhcigpKQorICAgICAgICB2ZXJ0aWNhbFNjcm9sbGJhci0+aW52YWxpZGF0
ZSgpOworICAgIGlmIChTY3JvbGxiYXIqIGhvcml6b250YWxTY3JvbGxiYXIgPSBfYW5pbWF0b3It
PnNjcm9sbGFibGVBcmVhKCktPmhvcml6b250YWxTY3JvbGxiYXIoKSkKKyAgICAgICAgaG9yaXpv
bnRhbFNjcm9sbGJhci0+aW52YWxpZGF0ZSgpOwogfQogCiAtICh2b2lkKXNjcm9sbEFuaW1hdG9y
RGVzdHJveWVkCkBAIC0zMTUsNiArMzUyLDkgQEAgQGludGVyZmFjZSBXZWJTY3JvbGxiYXJQYWlu
dGVyRGVsZWdhdGUgOgogCiAgICAgUmV0YWluUHRyPFdlYlNjcm9sbGJhclBhcnRBbmltYXRpb24+
IF92ZXJ0aWNhbFRyYWNrQW5pbWF0aW9uOwogICAgIFJldGFpblB0cjxXZWJTY3JvbGxiYXJQYXJ0
QW5pbWF0aW9uPiBfaG9yaXpvbnRhbFRyYWNrQW5pbWF0aW9uOworCisgICAgUmV0YWluUHRyPFdl
YlNjcm9sbGJhclBhcnRBbmltYXRpb24+IF92ZXJ0aWNhbFVJU3RhdGVUcmFuc2l0aW9uQW5pbWF0
aW9uOworICAgIFJldGFpblB0cjxXZWJTY3JvbGxiYXJQYXJ0QW5pbWF0aW9uPiBfaG9yaXpvbnRh
bFVJU3RhdGVUcmFuc2l0aW9uQW5pbWF0aW9uOwogfQogLSAoaWQpaW5pdFdpdGhTY3JvbGxBbmlt
YXRvcjooV2ViQ29yZTo6U2Nyb2xsQW5pbWF0b3JNYWMqKXNjcm9sbEFuaW1hdG9yOwogLSAodm9p
ZCljYW5jZWxBbmltYXRpb25zOwpAQCAtMzM5LDYgKzM3OSw4IEBAIC0gKHZvaWQpY2FuY2VsQW5p
bWF0aW9ucwogICAgIFtfaG9yaXpvbnRhbEtub2JBbmltYXRpb24uZ2V0KCkgc3RvcEFuaW1hdGlv
bl07CiAgICAgW192ZXJ0aWNhbFRyYWNrQW5pbWF0aW9uLmdldCgpIHN0b3BBbmltYXRpb25dOwog
ICAgIFtfaG9yaXpvbnRhbFRyYWNrQW5pbWF0aW9uLmdldCgpIHN0b3BBbmltYXRpb25dOworICAg
IFtfdmVydGljYWxVSVN0YXRlVHJhbnNpdGlvbkFuaW1hdGlvbi5nZXQoKSBzdG9wQW5pbWF0aW9u
XTsKKyAgICBbX2hvcml6b250YWxVSVN0YXRlVHJhbnNpdGlvbkFuaW1hdGlvbi5nZXQoKSBzdG9w
QW5pbWF0aW9uXTsKICAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TOwogfQogCkBAIC0zNjQs
NyArNDA2LDI1IEBAIC0gKENBTGF5ZXIgKilsYXllcgogICAgIHJldHVybiBkdW1teUxheWVyOwog
fQogCi0tICh2b2lkKXNldFVwQW5pbWF0aW9uOihSZXRhaW5QdHI8V2ViU2Nyb2xsYmFyUGFydEFu
aW1hdGlvbj4mKXNjcm9sbGJhclBhcnRBbmltYXRpb24gc2Nyb2xsZXJQYWludGVyOihTY3JvbGxi
YXJQYWludGVyKXNjcm9sbGVyUGFpbnRlciBwYXJ0OihXZWJDb3JlOjpTY3JvbGxiYXJQYXJ0KXBh
cnQgYW5pbWF0ZUFscGhhVG86KENHRmxvYXQpbmV3QWxwaGEgZHVyYXRpb246KE5TVGltZUludGVy
dmFsKWR1cmF0aW9uCistIChOU1BvaW50KW1vdXNlTG9jYXRpb25JblNjcm9sbGVyRm9yU2Nyb2xs
ZXJJbXA6KGlkKXNjcm9sbGVySW1wCit7CisgICAgaWYgKCFfYW5pbWF0b3IpCisgICAgICAgIHJl
dHVybiBOU1plcm9Qb2ludDsKKworICAgIFNjcm9sbGJhclBhaW50ZXIgc2Nyb2xsZXJQYWludGVy
ID0gKFNjcm9sbGJhclBhaW50ZXIpc2Nyb2xsZXJJbXA7CisgICAgU2Nyb2xsYmFyKiBzY3JvbGxi
YXI7CisgICAgaWYgKFtzY3JvbGxlclBhaW50ZXIgaXNIb3Jpem9udGFsXSkKKyAgICAgICAgc2Ny
b2xsYmFyID0gX2FuaW1hdG9yLT5zY3JvbGxhYmxlQXJlYSgpLT5ob3Jpem9udGFsU2Nyb2xsYmFy
KCk7CisgICAgZWxzZSAKKyAgICAgICAgc2Nyb2xsYmFyID0gX2FuaW1hdG9yLT5zY3JvbGxhYmxl
QXJlYSgpLT52ZXJ0aWNhbFNjcm9sbGJhcigpOworCisgICAgaWYgKCFzY3JvbGxiYXIpCisgICAg
ICAgIHJldHVybiBOU1plcm9Qb2ludDsKKworICAgIHJldHVybiBzY3JvbGxiYXItPmNvbnZlcnRG
cm9tQ29udGFpbmluZ1ZpZXcoX2FuaW1hdG9yLT5zY3JvbGxhYmxlQXJlYSgpLT5jdXJyZW50TW91
c2VQb3NpdGlvbigpKTsKK30KKworLSAodm9pZClzZXRVcEFscGhhQW5pbWF0aW9uOihSZXRhaW5Q
dHI8V2ViU2Nyb2xsYmFyUGFydEFuaW1hdGlvbj4mKXNjcm9sbGJhclBhcnRBbmltYXRpb24gc2Ny
b2xsZXJQYWludGVyOihTY3JvbGxiYXJQYWludGVyKXNjcm9sbGVyUGFpbnRlciBwYXJ0OihXZWJD
b3JlOjpTY3JvbGxiYXJQYXJ0KXBhcnQgYW5pbWF0ZUFscGhhVG86KENHRmxvYXQpbmV3QWxwaGEg
ZHVyYXRpb246KE5TVGltZUludGVydmFsKWR1cmF0aW9uCiB7CiAgICAgLy8gSWYgdGhlIHVzZXIg
aGFzIHNjcm9sbGVkIHRoZSBwYWdlLCB0aGVuIHRoZSBzY3JvbGxiYXJzIG11c3QgYmUgYW5pbWF0
ZWQgaGVyZS4gCiAgICAgLy8gVGhpcyBvdmVycmlkZXMgdGhlIGVhcmx5IHJldHVybnMuCkBAIC0z
OTgsOSArNDU4LDEwIEBAIC0gKHZvaWQpc2V0VXBBbmltYXRpb246KFJldGFpblB0cjxXZWJTY3IK
ICAgICBbTlNBbmltYXRpb25Db250ZXh0IGJlZ2luR3JvdXBpbmddOwogICAgIFtbTlNBbmltYXRp
b25Db250ZXh0IGN1cnJlbnRDb250ZXh0XSBzZXREdXJhdGlvbjpkdXJhdGlvbl07CiAgICAgc2Ny
b2xsYmFyUGFydEFuaW1hdGlvbi5hZG9wdE5TKFtbV2ViU2Nyb2xsYmFyUGFydEFuaW1hdGlvbiBh
bGxvY10gaW5pdFdpdGhTY3JvbGxiYXJQYWludGVyOnNjcm9sbGVyUGFpbnRlciAKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgcGFydDpwYXJ0Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHNjcm9sbEFuaW1hdG9yOl9hbmltYXRvciAKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgYW5pbWF0ZUFscGhhVG86bmV3QWxwaGEgCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuaW1hdGU6cGFydCA9
PSBUaHVtYlBhcnQgPyBUaHVtYkFscGhhIDogVHJhY2tBbHBoYQorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY3JvbGxB
bmltYXRvcjpfYW5pbWF0b3IKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5pbWF0ZUZyb206cGFydCA9PSBUaHVtYlBh
cnQgPyBbc2Nyb2xsZXJQYWludGVyIGtub2JBbHBoYV0gOiBbc2Nyb2xsZXJQYWludGVyIHRyYWNr
QWxwaGFdCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGFuaW1hdGVUbzpuZXdBbHBoYSAKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZHVyYXRp
b246ZHVyYXRpb25dKTsKICAgICBbc2Nyb2xsYmFyUGFydEFuaW1hdGlvbi5nZXQoKSBzZXRBbmlt
YXRpb25CbG9ja2luZ01vZGU6TlNBbmltYXRpb25Ob25ibG9ja2luZ107CiAgICAgW3Njcm9sbGJh
clBhcnRBbmltYXRpb24uZ2V0KCkgc3RhcnRBbmltYXRpb25dOwpAQCAtNDE0LDkgKzQ3NSw5IEBA
IC0gKHZvaWQpc2Nyb2xsZXJJbXA6KGlkKXNjcm9sbGVySW1wIGFuaW0KIAogICAgIFNjcm9sbGJh
clBhaW50ZXIgc2Nyb2xsZXJQYWludGVyID0gKFNjcm9sbGJhclBhaW50ZXIpc2Nyb2xsZXJJbXA7
CiAgICAgaWYgKFtzY3JvbGxlckltcCBpc0hvcml6b250YWxdKQotICAgICAgICBbc2VsZiBzZXRV
cEFuaW1hdGlvbjpfaG9yaXpvbnRhbEtub2JBbmltYXRpb24gc2Nyb2xsZXJQYWludGVyOnNjcm9s
bGVyUGFpbnRlciBwYXJ0OldlYkNvcmU6OlRodW1iUGFydCBhbmltYXRlQWxwaGFUbzpuZXdLbm9i
QWxwaGEgZHVyYXRpb246ZHVyYXRpb25dOworICAgICAgICBbc2VsZiBzZXRVcEFscGhhQW5pbWF0
aW9uOl9ob3Jpem9udGFsS25vYkFuaW1hdGlvbiBzY3JvbGxlclBhaW50ZXI6c2Nyb2xsZXJQYWlu
dGVyIHBhcnQ6V2ViQ29yZTo6VGh1bWJQYXJ0IGFuaW1hdGVBbHBoYVRvOm5ld0tub2JBbHBoYSBk
dXJhdGlvbjpkdXJhdGlvbl07CiAgICAgZWxzZQotICAgICAgICBbc2VsZiBzZXRVcEFuaW1hdGlv
bjpfdmVydGljYWxLbm9iQW5pbWF0aW9uIHNjcm9sbGVyUGFpbnRlcjpzY3JvbGxlclBhaW50ZXIg
cGFydDpXZWJDb3JlOjpUaHVtYlBhcnQgYW5pbWF0ZUFscGhhVG86bmV3S25vYkFscGhhIGR1cmF0
aW9uOmR1cmF0aW9uXTsKKyAgICAgICAgW3NlbGYgc2V0VXBBbHBoYUFuaW1hdGlvbjpfdmVydGlj
YWxLbm9iQW5pbWF0aW9uIHNjcm9sbGVyUGFpbnRlcjpzY3JvbGxlclBhaW50ZXIgcGFydDpXZWJD
b3JlOjpUaHVtYlBhcnQgYW5pbWF0ZUFscGhhVG86bmV3S25vYkFscGhhIGR1cmF0aW9uOmR1cmF0
aW9uXTsKIH0KIAogLSAodm9pZClzY3JvbGxlckltcDooaWQpc2Nyb2xsZXJJbXAgYW5pbWF0ZVRy
YWNrQWxwaGFUbzooQ0dGbG9hdCluZXdUcmFja0FscGhhIGR1cmF0aW9uOihOU1RpbWVJbnRlcnZh
bClkdXJhdGlvbgpAQCAtNDI2LDkgKzQ4Nyw0NCBAQCAtICh2b2lkKXNjcm9sbGVySW1wOihpZClz
Y3JvbGxlckltcCBhbmltCiAKICAgICBTY3JvbGxiYXJQYWludGVyIHNjcm9sbGVyUGFpbnRlciA9
IChTY3JvbGxiYXJQYWludGVyKXNjcm9sbGVySW1wOwogICAgIGlmIChbc2Nyb2xsZXJJbXAgaXNI
b3Jpem9udGFsXSkKLSAgICAgICAgW3NlbGYgc2V0VXBBbmltYXRpb246X2hvcml6b250YWxUcmFj
a0FuaW1hdGlvbiBzY3JvbGxlclBhaW50ZXI6c2Nyb2xsZXJQYWludGVyIHBhcnQ6V2ViQ29yZTo6
QmFja1RyYWNrUGFydCBhbmltYXRlQWxwaGFUbzpuZXdUcmFja0FscGhhIGR1cmF0aW9uOmR1cmF0
aW9uXTsKKyAgICAgICAgW3NlbGYgc2V0VXBBbHBoYUFuaW1hdGlvbjpfaG9yaXpvbnRhbFRyYWNr
QW5pbWF0aW9uIHNjcm9sbGVyUGFpbnRlcjpzY3JvbGxlclBhaW50ZXIgcGFydDpXZWJDb3JlOjpC
YWNrVHJhY2tQYXJ0IGFuaW1hdGVBbHBoYVRvOm5ld1RyYWNrQWxwaGEgZHVyYXRpb246ZHVyYXRp
b25dOwogICAgIGVsc2UKLSAgICAgICAgW3NlbGYgc2V0VXBBbmltYXRpb246X3ZlcnRpY2FsVHJh
Y2tBbmltYXRpb24gc2Nyb2xsZXJQYWludGVyOnNjcm9sbGVyUGFpbnRlciBwYXJ0OldlYkNvcmU6
OkJhY2tUcmFja1BhcnQgYW5pbWF0ZUFscGhhVG86bmV3VHJhY2tBbHBoYSBkdXJhdGlvbjpkdXJh
dGlvbl07CisgICAgICAgIFtzZWxmIHNldFVwQWxwaGFBbmltYXRpb246X3ZlcnRpY2FsVHJhY2tB
bmltYXRpb24gc2Nyb2xsZXJQYWludGVyOnNjcm9sbGVyUGFpbnRlciBwYXJ0OldlYkNvcmU6OkJh
Y2tUcmFja1BhcnQgYW5pbWF0ZUFscGhhVG86bmV3VHJhY2tBbHBoYSBkdXJhdGlvbjpkdXJhdGlv
bl07Cit9CisKKy0gKHZvaWQpc2Nyb2xsZXJJbXA6KGlkKXNjcm9sbGVySW1wIGFuaW1hdGVVSVN0
YXRlVHJhbnNpdGlvbldpdGhEdXJhdGlvbjooTlNUaW1lSW50ZXJ2YWwpZHVyYXRpb24KK3sKKyAg
ICBpZiAoIV9hbmltYXRvcikKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKCFzdXBwb3J0c1VJ
U3RhdGVUcmFuc2l0aW9uUHJvZ3Jlc3MoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgU2Nyb2xs
YmFyUGFpbnRlciBzY3JvbGxlclBhaW50ZXIgPSAoU2Nyb2xsYmFyUGFpbnRlcilzY3JvbGxlcklt
cDsKKyAgICBSZXRhaW5QdHI8V2ViU2Nyb2xsYmFyUGFydEFuaW1hdGlvbj4gc2Nyb2xsYmFyUGFy
dEFuaW1hdGlvbiA9IFtzY3JvbGxlclBhaW50ZXIgaXNIb3Jpem9udGFsXSA/IF9ob3Jpem9udGFs
VUlTdGF0ZVRyYW5zaXRpb25BbmltYXRpb24gOiBfdmVydGljYWxVSVN0YXRlVHJhbnNpdGlvbkFu
aW1hdGlvbjsKKworICAgIC8vIFVJU3RhdGVUcmFuc2l0aW9uIGFsd2F5cyBhbmltYXRlcyB0byAx
LiBJbiBjYXNlIGFuIGFuaW1hdGlvbiBpcyBpbiBwcm9ncmVzcyB0aGlzIGF2b2lkcyBhIGhhcmQg
dHJhbnNpdGlvbi4KKyAgICBbc2Nyb2xsZXJQYWludGVyIHNldFVpU3RhdGVUcmFuc2l0aW9uUHJv
Z3Jlc3M6MSAtIFtzY3JvbGxlclBhaW50ZXIgdWlTdGF0ZVRyYW5zaXRpb25Qcm9ncmVzc11dOwor
CisgICAgW05TQW5pbWF0aW9uQ29udGV4dCBiZWdpbkdyb3VwaW5nXTsKKyAgICBbW05TQW5pbWF0
aW9uQ29udGV4dCBjdXJyZW50Q29udGV4dF0gc2V0RHVyYXRpb246ZHVyYXRpb25dOworICAgIGlm
ICghc2Nyb2xsYmFyUGFydEFuaW1hdGlvbikgeworICAgICAgICBzY3JvbGxiYXJQYXJ0QW5pbWF0
aW9uLmFkb3B0TlMoW1tXZWJTY3JvbGxiYXJQYXJ0QW5pbWF0aW9uIGFsbG9jXSBpbml0V2l0aFNj
cm9sbGJhclBhaW50ZXI6c2Nyb2xsZXJQYWludGVyIAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmltYXRlOlVJU3Rh
dGVUcmFuc2l0aW9uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHNjcm9sbEFuaW1hdG9yOl9hbmltYXRvcgorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBhbmltYXRlRnJvbTpbc2Nyb2xsZXJQYWludGVyIHVpU3RhdGVUcmFuc2l0aW9uUHJvZ3Jl
c3NdCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGFuaW1hdGVUbzoxLjAgCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGR1cmF0aW9uOmR1cmF0
aW9uXSk7CisgICAgICAgIFtzY3JvbGxiYXJQYXJ0QW5pbWF0aW9uLmdldCgpIHNldEFuaW1hdGlv
bkJsb2NraW5nTW9kZTpOU0FuaW1hdGlvbk5vbmJsb2NraW5nXTsKKyAgICB9IGVsc2UgeworICAg
ICAgICAvLyBJZiB3ZSBkb24ndCBuZWVkIHRvIGluaXRpYWxpemUgdGhlIGFuaW1hdGlvbiwganVz
dCByZXNldCB0aGUgdmFsdWVzIGluIGNhc2UgdGhleSBoYXZlIGNoYW5nZWQuCisgICAgICAgIFtz
Y3JvbGxiYXJQYXJ0QW5pbWF0aW9uLmdldCgpIHNldFNjcm9sbGJhclBhaW50ZXI6c2Nyb2xsZXJQ
YWludGVyXTsKKyAgICAgICAgW3Njcm9sbGJhclBhcnRBbmltYXRpb24uZ2V0KCkgc2V0U3RhcnRW
YWx1ZTpbc2Nyb2xsZXJQYWludGVyIHVpU3RhdGVUcmFuc2l0aW9uUHJvZ3Jlc3NdXTsKKyAgICAg
ICAgW3Njcm9sbGJhclBhcnRBbmltYXRpb24uZ2V0KCkgc2V0RW5kVmFsdWU6MS4wXTsKKyAgICAg
ICAgW3Njcm9sbGJhclBhcnRBbmltYXRpb24uZ2V0KCkgc2V0RHVyYXRpb246ZHVyYXRpb25dOwor
ICAgIH0KKyAgICBbc2Nyb2xsYmFyUGFydEFuaW1hdGlvbi5nZXQoKSBzdGFydEFuaW1hdGlvbl07
CisgICAgW05TQW5pbWF0aW9uQ29udGV4dCBlbmRHcm91cGluZ107CiB9CiAKIC0gKHZvaWQpc2Ny
b2xsZXJJbXA6KGlkKXNjcm9sbGVySW1wIG92ZXJsYXlTY3JvbGxlclN0YXRlQ2hhbmdlZFRvOihO
U1VJbnRlZ2VyKW5ld092ZXJsYXlTY3JvbGxlclN0YXRlCkBAIC00NDUsNiArNTQxLDggQEAgLSAo
dm9pZClzY3JvbGxBbmltYXRvckRlc3Ryb3llZAogICAgIFtfaG9yaXpvbnRhbEtub2JBbmltYXRp
b24uZ2V0KCkgc2Nyb2xsQW5pbWF0b3JEZXN0cm95ZWRdOwogICAgIFtfdmVydGljYWxUcmFja0Fu
aW1hdGlvbi5nZXQoKSBzY3JvbGxBbmltYXRvckRlc3Ryb3llZF07CiAgICAgW19ob3Jpem9udGFs
VHJhY2tBbmltYXRpb24uZ2V0KCkgc2Nyb2xsQW5pbWF0b3JEZXN0cm95ZWRdOworICAgIFtfdmVy
dGljYWxVSVN0YXRlVHJhbnNpdGlvbkFuaW1hdGlvbi5nZXQoKSBzY3JvbGxBbmltYXRvckRlc3Ry
b3llZF07CisgICAgW19ob3Jpem9udGFsVUlTdGF0ZVRyYW5zaXRpb25BbmltYXRpb24uZ2V0KCkg
c2Nyb2xsQW5pbWF0b3JEZXN0cm95ZWRdOwogICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlM7
CiB9CiAKQEAgLTY1Nyw2ICs3NTUsMzggQEAgdm9pZCBTY3JvbGxBbmltYXRvck1hYzo6bW91c2VN
b3ZlZEluQ29udAogI2VuZGlmCiB9CiAKK3ZvaWQgU2Nyb2xsQW5pbWF0b3JNYWM6Om1vdXNlRW50
ZXJlZFNjcm9sbGJhcihTY3JvbGxiYXIqIHNjcm9sbGJhcikgY29uc3QKK3sKKyAgICBpZiAoIXNj
cm9sbGFibGVBcmVhKCktPmlzT25BY3RpdmVQYWdlKCkpCisgICAgICAgIHJldHVybjsKKyNpZiBV
U0UoU0NST0xMQkFSX1BBSU5URVIpCisgICAgaWYgKCFzdXBwb3J0c1VJU3RhdGVUcmFuc2l0aW9u
UHJvZ3Jlc3MoKSkKKyAgICAgICAgcmV0dXJuOworICAgIGlmIChTY3JvbGxiYXJUaGVtZU1hYyog
dGhlbWUgPSBtYWNTY3JvbGxiYXJUaGVtZSgpKSB7CisgICAgICAgIFNjcm9sbGJhclBhaW50ZXIg
cGFpbnRlciA9IHRoZW1lLT5wYWludGVyRm9yU2Nyb2xsYmFyKHNjcm9sbGJhcik7CisgICAgICAg
IFtwYWludGVyIG1vdXNlRW50ZXJlZFNjcm9sbGVyXTsKKyAgICB9CisjZWxzZQorICAgIFVOVVNF
RF9QQVJBTShzY3JvbGxiYXIpOworI2VuZGlmCit9CisKK3ZvaWQgU2Nyb2xsQW5pbWF0b3JNYWM6
Om1vdXNlRXhpdGVkU2Nyb2xsYmFyKFNjcm9sbGJhciogc2Nyb2xsYmFyKSBjb25zdAoreworICAg
IGlmICghc2Nyb2xsYWJsZUFyZWEoKS0+aXNPbkFjdGl2ZVBhZ2UoKSkKKyAgICAgICAgcmV0dXJu
OworI2lmIFVTRShTQ1JPTExCQVJfUEFJTlRFUikKKyAgICBpZiAoIXN1cHBvcnRzVUlTdGF0ZVRy
YW5zaXRpb25Qcm9ncmVzcygpKQorICAgICAgICByZXR1cm47CisgICAgaWYgKFNjcm9sbGJhclRo
ZW1lTWFjKiB0aGVtZSA9IG1hY1Njcm9sbGJhclRoZW1lKCkpIHsKKyAgICAgICAgU2Nyb2xsYmFy
UGFpbnRlciBwYWludGVyID0gdGhlbWUtPnBhaW50ZXJGb3JTY3JvbGxiYXIoc2Nyb2xsYmFyKTsK
KyAgICAgICAgW3BhaW50ZXIgbW91c2VFeGl0ZWRTY3JvbGxlcl07CisgICAgfQorI2Vsc2UKKyAg
ICBVTlVTRURfUEFSQU0oc2Nyb2xsYmFyKTsKKyNlbmRpZgorfQorCiB2b2lkIFNjcm9sbEFuaW1h
dG9yTWFjOjp3aWxsU3RhcnRMaXZlUmVzaXplKCkKIHsKICAgICBpZiAoIXNjcm9sbGFibGVBcmVh
KCktPmlzT25BY3RpdmVQYWdlKCkpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4v
UG9wdXBNZW51V2luLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93
aW4vUG9wdXBNZW51V2luLmNwcAkocmV2aXNpb24gOTk0NDkpCisrKyBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS93aW4vUG9wdXBNZW51V2luLmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTk2LDcgKzk5
Niw3IEBAIExSRVNVTFQgUG9wdXBNZW51V2luOjp3bmRQcm9jKEhXTkQgaFduZCwKICAgICAgICAg
ICAgICAgICAgICAgLy8gUHV0IHRoZSBwb2ludCBpbnRvIGNvb3JkaW5hdGVzIHJlbGF0aXZlIHRv
IHRoZSBzY3JvbGwgYmFyCiAgICAgICAgICAgICAgICAgICAgIG1vdXNlUG9pbnQubW92ZSgtc2Ny
b2xsQmFyUmVjdC54KCksIC1zY3JvbGxCYXJSZWN0LnkoKSk7CiAgICAgICAgICAgICAgICAgICAg
IFBsYXRmb3JtTW91c2VFdmVudCBldmVudChoV25kLCBtZXNzYWdlLCB3UGFyYW0sIE1BS0VMUEFS
QU0obW91c2VQb2ludC54KCksIG1vdXNlUG9pbnQueSgpKSk7Ci0gICAgICAgICAgICAgICAgICAg
IHNjcm9sbGJhcigpLT5tb3VzZVVwKCk7CisgICAgICAgICAgICAgICAgICAgIHNjcm9sbGJhcigp
LT5tb3VzZVVwKGV2ZW50KTsKICAgICAgICAgICAgICAgICAgICAgLy8gRklYTUU6IFRoaXMgaXMg
YSBoYWNrIHRvIHdvcmsgYXJvdW5kIFNjcm9sbGJhciBub3QgaW52YWxpZGF0aW5nIGNvcnJlY3Rs
eSB3aGVuIGl0IGRvZXNuJ3QgaGF2ZSBhIHBhcmVudCB3aWRnZXQKICAgICAgICAgICAgICAgICAg
ICAgUkVDVCByID0gc2Nyb2xsQmFyUmVjdDsKICAgICAgICAgICAgICAgICAgICAgOjpJbnZhbGlk
YXRlUmVjdChwb3B1cEhhbmRsZSgpLCAmciwgVFJVRSk7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCShyZXZpc2lv
biA5OTQ4OCkKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAt
MSwzICsxLDE4IEBACisyMDExLTExLTA3ICBCZXRoIERha2luICA8YmRha2luQGFwcGxlLmNvbT4K
KworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzE0OTAK
KyAgICAgICAgU3VwcG9ydCB1aVN0YXRlVHJhbnNpdGlvblByb2dyZXNzIGZvciBzY3JvbGxiYXJz
CisgICAgICAgIC1hbmQgY29ycmVzcG9uZGluZy0KKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzk4
NDk2MTI+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
U2Nyb2xsYmFyOjptb3VzZVVwKCkgbm93IHRha2VzIGEgUGxhdGZvcm1Nb3VzZUV2ZW50IGFzIGEg
cGFyYW1ldGVyLgorICAgICAgICAqIFVJUHJvY2Vzcy93aW4vV2ViUG9wdXBNZW51UHJveHlXaW4u
Y3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQb3B1cE1lbnVQcm94eVdpbjo6b25MQnV0dG9uVXAp
OgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QREYvQnVpbHRJblBERlZpZXcuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpCdWlsdEluUERGVmlldzo6aGFuZGxlTW91c2VFdmVudCk6CisKIDIw
MTEtMTEtMDcgIEFsZXhleSBQcm9za3VyeWFrb3YgIDxhcEBhcHBsZS5jb20+CiAKICAgICAgICAg
VGhlIEZ1bGwgS2V5Ym9hcmQgQWNjZXNzIHByZWZlcmVuY2Ugc2hvdWxkIGJlIHJlYWQgaW4gdGhl
IFVJIHByb2Nlc3MKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy93aW4vV2ViUG9wdXBN
ZW51UHJveHlXaW4uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy93
aW4vV2ViUG9wdXBNZW51UHJveHlXaW4uY3BwCShyZXZpc2lvbiA5OTQ0OSkKKysrIFNvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy93aW4vV2ViUG9wdXBNZW51UHJveHlXaW4uY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC03MDUsNyArNzA1LDcgQEAgTFJFU1VMVCBXZWJQb3B1cE1lbnVQcm94eVdpbjo6b25M
QnV0dG9uVQogICAgICAgICAgICAgLy8gUHV0IHRoZSBwb2ludCBpbnRvIGNvb3JkaW5hdGVzIHJl
bGF0aXZlIHRvIHRoZSBzY3JvbGwgYmFyCiAgICAgICAgICAgICBtb3VzZVBvaW50Lm1vdmUoLXNj
cm9sbEJhclJlY3QueCgpLCAtc2Nyb2xsQmFyUmVjdC55KCkpOwogICAgICAgICAgICAgUGxhdGZv
cm1Nb3VzZUV2ZW50IGV2ZW50KGhXbmQsIG1lc3NhZ2UsIHdQYXJhbSwgTUFLRUxQQVJBTShtb3Vz
ZVBvaW50LngoKSwgbW91c2VQb2ludC55KCkpKTsKLSAgICAgICAgICAgIHNjcm9sbGJhcigpLT5t
b3VzZVVwKCk7CisgICAgICAgICAgICBzY3JvbGxiYXIoKS0+bW91c2VVcChldmVudCk7CiAgICAg
ICAgICAgICAvLyBGSVhNRTogVGhpcyBpcyBhIGhhY2sgdG8gd29yayBhcm91bmQgU2Nyb2xsYmFy
IG5vdCBpbnZhbGlkYXRpbmcgY29ycmVjdGx5IHdoZW4gaXQgZG9lc24ndCBoYXZlIGEgcGFyZW50
IHdpZGdldAogICAgICAgICAgICAgUkVDVCByID0gc2Nyb2xsQmFyUmVjdDsKICAgICAgICAgICAg
IDo6SW52YWxpZGF0ZVJlY3QobV9wb3B1cCwgJnIsIFRSVUUpOwpJbmRleDogU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9CdWlsdEluUERGVmlldy5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9CdWlsdEluUERGVmlldy5j
cHAJKHJldmlzaW9uIDk5NDQ5KQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5z
L1BERi9CdWlsdEluUERGVmlldy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ2MywxMiArNDYzLDE0
IEBAIGJvb2wgQnVpbHRJblBERlZpZXc6OmhhbmRsZU1vdXNlRXZlbnQoY28KICAgICAgICAgLy8g
V2hlbiBzdXBwb3J0IGZvciBQREYgZm9ybXMgaXMgYWRkZWQsIHdlJ2xsIG5lZWQgdG8gYWN0dWFs
bHkgZm9jdXMgdGhlIHBsdWctaW4gd2hlbiBjbGlja2luZyBpbiBhIGZvcm0uCiAgICAgICAgIGJy
ZWFrOwogICAgIH0KLSAgICBjYXNlIFdlYkV2ZW50OjpNb3VzZVVwOgorICAgIGNhc2UgV2ViRXZl
bnQ6Ok1vdXNlVXA6IHsKKyAgICAgICAgUGxhdGZvcm1Nb3VzZUV2ZW50IHBsYXRmb3JtRXZlbnQg
PSBwbGF0Zm9ybShldmVudCk7CiAgICAgICAgIGlmIChtX2hvcml6b250YWxTY3JvbGxiYXIpCi0g
ICAgICAgICAgICBtX2hvcml6b250YWxTY3JvbGxiYXItPm1vdXNlVXAoKTsKKyAgICAgICAgICAg
IG1faG9yaXpvbnRhbFNjcm9sbGJhci0+bW91c2VVcChwbGF0Zm9ybUV2ZW50KTsKICAgICAgICAg
aWYgKG1fdmVydGljYWxTY3JvbGxiYXIpCi0gICAgICAgICAgICBtX3ZlcnRpY2FsU2Nyb2xsYmFy
LT5tb3VzZVVwKCk7CisgICAgICAgICAgICBtX3ZlcnRpY2FsU2Nyb2xsYmFyLT5tb3VzZVVwKHBs
YXRmb3JtRXZlbnQpOwogICAgICAgICBicmVhazsKKyAgICB9CiAgICAgZGVmYXVsdDoKICAgICAg
ICAgYnJlYWs7CiAgICAgfQpJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cJKHJldmlzaW9u
IDk5NDg4KQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29w
eSkKQEAgLTEsMyArMSwxNiBAQAorMjAxMS0xMS0wNyAgQmV0aCBEYWtpbiAgPGJkYWtpbkBhcHBs
ZS5jb20+CisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTcxNDkwCisgICAgICAgIFN1cHBvcnQgdWlTdGF0ZVRyYW5zaXRpb25Qcm9ncmVzcyBmb3Igc2Ny
b2xsYmFycworICAgICAgICAtYW5kIGNvcnJlc3BvbmRpbmctCisgICAgICAgIDxyZGFyOi8vcHJv
YmxlbS85ODQ5NjEyPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIFNjcm9sbGJhcjo6bW91c2VVcCgpIG5vdyB0YWtlcyBhIFBsYXRmb3JtTW91c2VFdmVu
dCBhcyBhIHBhcmFtZXRlci4KKyAgICAgICAgKiBzcmMvV2ViU2Nyb2xsYmFySW1wbC5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlNjcm9sbGJhckltcGw6Om9uTW91c2VVcCk6CisKIDIwMTEtMTEt
MDcgIEZhZHkgU2FtdWVsICA8ZnNhbXVlbEBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgW0Nocm9t
aXVtXSBSZW5hbWUgV2ViVmlldzo6c2NhbGVQYWdlIHRvIFdlYlZpZXc6OnNldFBhZ2VTY2FsZUZh
Y3RvciB0byBtYXRjaCBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9X
ZWJTY3JvbGxiYXJJbXBsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3NyYy9XZWJTY3JvbGxiYXJJbXBsLmNwcAkocmV2aXNpb24gOTk0NDkpCisrKyBTb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3NyYy9XZWJTY3JvbGxiYXJJbXBsLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MjE2LDEwICsyMTYsMTEgQEAgYm9vbCBXZWJTY3JvbGxiYXJJbXBsOjpvbk1vdXNlRG93bihjb25z
dAogCiBib29sIFdlYlNjcm9sbGJhckltcGw6Om9uTW91c2VVcChjb25zdCBXZWJJbnB1dEV2ZW50
JiBldmVudCkKIHsKKyAgICBXZWJNb3VzZUV2ZW50IG1vdXNldXAgPSAqc3RhdGljX2Nhc3Q8Y29u
c3QgV2ViTW91c2VFdmVudCo+KCZldmVudCk7CiAgICAgaWYgKG1fc2Nyb2xsYmFyLT5wcmVzc2Vk
UGFydCgpID09IE5vUGFydCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgcmV0dXJuIG1f
c2Nyb2xsYmFyLT5tb3VzZVVwKCk7CisgICAgcmV0dXJuIG1fc2Nyb2xsYmFyLT5tb3VzZVVwKFBs
YXRmb3JtTW91c2VFdmVudEJ1aWxkZXIobV9zY3JvbGxiYXIuZ2V0KCksIG1vdXNldXApKTsKIH0K
IAogYm9vbCBXZWJTY3JvbGxiYXJJbXBsOjpvbk1vdXNlTW92ZShjb25zdCBXZWJJbnB1dEV2ZW50
JiBldmVudCkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZwo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cJKHJldmlzaW9uIDk5NDg4KQorKysgU291cmNl
L1dlYktpdC93aW4vQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTYgQEAKKzIw
MTEtMTEtMDcgIEJldGggRGFraW4gIDxiZGFraW5AYXBwbGUuY29tPgorCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03MTQ5MAorICAgICAgICBTdXBwb3J0
IHVpU3RhdGVUcmFuc2l0aW9uUHJvZ3Jlc3MgZm9yIHNjcm9sbGJhcnMKKyAgICAgICAgLWFuZCBj
b3JyZXNwb25kaW5nLQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vOTg0OTYxMj4KKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBTY3JvbGxiYXI6Om1vdXNl
VXAoKSBub3cgdGFrZXMgYSBQbGF0Zm9ybU1vdXNlRXZlbnQgYXMgYSBwYXJhbWV0ZXIuCisgICAg
ICAgICogV2ViU2Nyb2xsQmFyLmNwcDoKKyAgICAgICAgKFdlYlNjcm9sbEJhcjo6aGFuZGxlTW91
c2VFdmVudCk6CisKIDIwMTEtMTEtMDIgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgog
CiAgICAgICAgIENoYW5nZSByZW1haW5pbmcgY2FsbGVycyBvZiByZWxlYXNlUmVmIHRvIGNhbGwg
bGVha1JlZgpJbmRleDogU291cmNlL1dlYktpdC93aW4vV2ViU2Nyb2xsQmFyLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3dpbi9XZWJTY3JvbGxCYXIuY3BwCShyZXZpc2lvbiA5OTQ0
OSkKKysrIFNvdXJjZS9XZWJLaXQvd2luL1dlYlNjcm9sbEJhci5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTIzMCw3ICsyMzAsNyBAQCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYlNjcm9sbEJh
cjo6CiAgICAgICAgICAgICBtX3Njcm9sbEJhci0+bW91c2VEb3duKG1vdXNlRXZlbnQpOwogICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgV01fTEJVVFRPTlVQOgotICAgICAgICAgICAg
bV9zY3JvbGxCYXItPm1vdXNlVXAoKTsKKyAgICAgICAgICAgIG1fc2Nyb2xsQmFyLT5tb3VzZVVw
KG1vdXNlRXZlbnQpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgV01fTU9VU0VN
T1ZFOgogICAgICAgICAgICAgbV9zY3JvbGxCYXItPm1vdXNlTW92ZWQobW91c2VFdmVudCk7Cg==
</data>
<flag name="review"
          id="112458"
          type_id="1"
          status="+"
          setter="sam"
    />
          </attachment>
      

    </bug>

</bugzilla>