<?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>255076</bug_id>
          
          <creation_ts>2023-04-05 21:54:54 -0700</creation_ts>
          <short_desc>Add PaintPhase::Accessibility and AccessibilityRegionContext to enable AX element bounding-box caching</short_desc>
          <delta_ts>2023-04-28 01:02:48 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Layout and Rendering</component>
          <version>Other</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="Tyler Wilcock">tyler_w</reporter>
          <assigned_to name="Tyler Wilcock">tyler_w</assigned_to>
          <cc>annulen</cc>
    
    <cc>bfulgham</cc>
    
    <cc>cdumez</cc>
    
    <cc>cfleizach</cc>
    
    <cc>changseok</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>fred.wang</cc>
    
    <cc>glenn</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>kangil.han</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>mmaxfield</cc>
    
    <cc>pdr</cc>
    
    <cc>ryuan.choi</cc>
    
    <cc>sergio</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>zalan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1946949</commentid>
    <comment_count>0</comment_count>
    <who name="Tyler Wilcock">tyler_w</who>
    <bug_when>2023-04-05 21:54:54 -0700</bug_when>
    <thetext>Accessibility needs to cache the bounding box of non-accessibility-is-ignored elements on the secondary AX thread. We can use paint to get this geometry.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1946950</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2023-04-05 21:56:10 -0700</bug_when>
    <thetext>&lt;rdar://problem/107694492&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1946954</commentid>
    <comment_count>2</comment_count>
      <attachid>465792</attachid>
    <who name="Tyler Wilcock">tyler_w</who>
    <bug_when>2023-04-05 22:34:15 -0700</bug_when>
    <thetext>Created attachment 465792
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1946958</commentid>
    <comment_count>3</comment_count>
      <attachid>465793</attachid>
    <who name="Tyler Wilcock">tyler_w</who>
    <bug_when>2023-04-05 23:26:50 -0700</bug_when>
    <thetext>Created attachment 465793
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1946962</commentid>
    <comment_count>4</comment_count>
      <attachid>465795</attachid>
    <who name="Tyler Wilcock">tyler_w</who>
    <bug_when>2023-04-05 23:56:58 -0700</bug_when>
    <thetext>Created attachment 465795
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1948654</commentid>
    <comment_count>5</comment_count>
      <attachid>465795</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2023-04-13 17:27:43 -0700</bug_when>
    <thetext>Comment on attachment 465795
Patch

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

The approach is good. Let’s get the naming right.

&gt; Source/WebCore/page/LocalFrameView.cpp:4686
&gt; +    traverseForPaintInvalidation(NullGraphicsContext::PaintInvalidationReasons::InvalidatingAccessibilityObjectRects, &amp;accessibilityPaintContext);

There’s a naming conflict here, and I think you’ve adopted the “invalidating” term too literally. This isn’t a “invalidate the accessibility rects” paint pass, it’s a “generate the accessibility rects”. So calling “traverseForPaintInvalidation” doesn’t make sense here, suggesting we rename “traverseForPaintInvalidation()” to something like “traverseForUtilityPaint”.

PaintInvalidationReasons should also be renamed.

“Utility paint” is not a great name. We should think of a better one.

&gt; Source/WebCore/rendering/PaintContext.h:36
&gt; +class PaintContext : public CanMakeCheckedPtr {

This would be a UtilityPaintContext or something (it’s explicitly *not* a paint context).

&gt; Source/WebCore/rendering/RenderLayer.cpp:3176
&gt; +    bool isCollectingAccessibilityRects = context.invalidatingAccessibilityObjectRects();

This is where the mis-naming is obvious.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1948668</commentid>
    <comment_count>6</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2023-04-13 19:05:36 -0700</bug_when>
    <thetext>I see that the callers of LocalFrameView::traverseForPaintInvalidation() are LocalFrameView::invalidateControlTints() and LocalFrameView::invalidateImagesWithAsyncDecodes().

The non-invalidation one is ContentfulPaintChecker, which just calls paint() directly:

    NullGraphicsContext checkerContext(NullGraphicsContext::PaintInvalidationReasons::DetectingContentfulPaint);
    frameView.paint(checkerContext, frameView.renderView()-&gt;documentRect());

Maybe that’s the way to go for accessibility rects.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1949100</commentid>
    <comment_count>7</comment_count>
      <attachid>465945</attachid>
    <who name="Tyler Wilcock">tyler_w</who>
    <bug_when>2023-04-17 01:00:11 -0700</bug_when>
    <thetext>Created attachment 465945
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1949102</commentid>
    <comment_count>8</comment_count>
    <who name="Tyler Wilcock">tyler_w</who>
    <bug_when>2023-04-17 01:03:21 -0700</bug_when>
    <thetext>&gt; The non-invalidation one is ContentfulPaintChecker, which just calls paint()
&gt; directly:
&gt; 
&gt;     NullGraphicsContext
&gt; checkerContext(NullGraphicsContext::PaintInvalidationReasons::
&gt; DetectingContentfulPaint);
&gt;     frameView.paint(checkerContext, frameView.renderView()-&gt;documentRect());
&gt; 
&gt; Maybe that’s the way to go for accessibility rects.
Thanks, implemented this.

As far as the name for what is currently called &quot;PaintContext&quot;. There are two consumers of this context — event regions and accessibility. And both do very similar things: use the paint traversal to get final geometry for use in a non-directly-graphical way.

So maybe this type of paint is a &quot;geometry traversal paint&quot;, making this a GeometryTraversalContext?

  Thoughts or other ideas?

  Latest patch uses GeometryTraversalContext in case seeing the name in context helps — happy to change further if needed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1951374</commentid>
    <comment_count>9</comment_count>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2023-04-26 11:01:47 -0700</bug_when>
    <thetext>(In reply to Tyler Wilcock from comment #8)
&gt; &gt; The non-invalidation one is ContentfulPaintChecker, which just calls paint()
&gt; &gt; directly:
&gt; &gt; 
&gt; &gt;     NullGraphicsContext
&gt; &gt; checkerContext(NullGraphicsContext::PaintInvalidationReasons::
&gt; &gt; DetectingContentfulPaint);
&gt; &gt;     frameView.paint(checkerContext, frameView.renderView()-&gt;documentRect());
&gt; &gt; 
&gt; &gt; Maybe that’s the way to go for accessibility rects.
&gt; Thanks, implemented this.
&gt; 
&gt; As far as the name for what is currently called &quot;PaintContext&quot;. There are
&gt; two consumers of this context — event regions and accessibility. And both do
&gt; very similar things: use the paint traversal to get final geometry for use
&gt; in a non-directly-graphical way.
&gt; 
&gt; So maybe this type of paint is a &quot;geometry traversal paint&quot;, making this a
&gt; GeometryTraversalContext?
&gt; 
&gt;   Thoughts or other ideas?
&gt; 
&gt;   Latest patch uses GeometryTraversalContext in case seeing the name in
&gt; context helps — happy to change further if needed.

Wonder if a better name would be

RegionContext, 

which then can be either the existing EventRegionContext object or a new AccessibilityRegionContext.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1951534</commentid>
    <comment_count>10</comment_count>
      <attachid>466114</attachid>
    <who name="Tyler Wilcock">tyler_w</who>
    <bug_when>2023-04-27 00:32:48 -0700</bug_when>
    <thetext>Created attachment 466114
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1951663</commentid>
    <comment_count>11</comment_count>
    <who name="Tyler Wilcock">tyler_w</who>
    <bug_when>2023-04-27 15:23:00 -0700</bug_when>
    <thetext>(In reply to chris fleizach from comment #9)
&gt; (In reply to Tyler Wilcock from comment #8)
&gt; &gt; &gt; The non-invalidation one is ContentfulPaintChecker, which just calls paint()
&gt; &gt; &gt; directly:
&gt; &gt; &gt; 
&gt; &gt; &gt;     NullGraphicsContext
&gt; &gt; &gt; checkerContext(NullGraphicsContext::PaintInvalidationReasons::
&gt; &gt; &gt; DetectingContentfulPaint);
&gt; &gt; &gt;     frameView.paint(checkerContext, frameView.renderView()-&gt;documentRect());
&gt; &gt; &gt; 
&gt; &gt; &gt; Maybe that’s the way to go for accessibility rects.
&gt; &gt; Thanks, implemented this.
&gt; &gt; 
&gt; &gt; As far as the name for what is currently called &quot;PaintContext&quot;. There are
&gt; &gt; two consumers of this context — event regions and accessibility. And both do
&gt; &gt; very similar things: use the paint traversal to get final geometry for use
&gt; &gt; in a non-directly-graphical way.
&gt; &gt; 
&gt; &gt; So maybe this type of paint is a &quot;geometry traversal paint&quot;, making this a
&gt; &gt; GeometryTraversalContext?
&gt; &gt; 
&gt; &gt;   Thoughts or other ideas?
&gt; &gt; 
&gt; &gt;   Latest patch uses GeometryTraversalContext in case seeing the name in
&gt; &gt; context helps — happy to change further if needed.
&gt; 
&gt; Wonder if a better name would be
&gt; 
&gt; RegionContext, 
&gt; 
&gt; which then can be either the existing EventRegionContext object or a new
&gt; AccessibilityRegionContext.
OK, made this change, so should be ready to review again.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1951668</commentid>
    <comment_count>12</comment_count>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2023-04-27 15:39:27 -0700</bug_when>
    <thetext>(In reply to Tyler Wilcock from comment #11)
&gt; (In reply to chris fleizach from comment #9)
&gt; &gt; (In reply to Tyler Wilcock from comment #8)
&gt; &gt; &gt; &gt; The non-invalidation one is ContentfulPaintChecker, which just calls paint()
&gt; &gt; &gt; &gt; directly:
&gt; &gt; &gt; &gt; 
&gt; &gt; &gt; &gt;     NullGraphicsContext
&gt; &gt; &gt; &gt; checkerContext(NullGraphicsContext::PaintInvalidationReasons::
&gt; &gt; &gt; &gt; DetectingContentfulPaint);
&gt; &gt; &gt; &gt;     frameView.paint(checkerContext, frameView.renderView()-&gt;documentRect());
&gt; &gt; &gt; &gt; 
&gt; &gt; &gt; &gt; Maybe that’s the way to go for accessibility rects.
&gt; &gt; &gt; Thanks, implemented this.
&gt; &gt; &gt; 
&gt; &gt; &gt; As far as the name for what is currently called &quot;PaintContext&quot;. There are
&gt; &gt; &gt; two consumers of this context — event regions and accessibility. And both do
&gt; &gt; &gt; very similar things: use the paint traversal to get final geometry for use
&gt; &gt; &gt; in a non-directly-graphical way.
&gt; &gt; &gt; 
&gt; &gt; &gt; So maybe this type of paint is a &quot;geometry traversal paint&quot;, making this a
&gt; &gt; &gt; GeometryTraversalContext?
&gt; &gt; &gt; 
&gt; &gt; &gt;   Thoughts or other ideas?
&gt; &gt; &gt; 
&gt; &gt; &gt;   Latest patch uses GeometryTraversalContext in case seeing the name in
&gt; &gt; &gt; context helps — happy to change further if needed.
&gt; &gt; 
&gt; &gt; Wonder if a better name would be
&gt; &gt; 
&gt; &gt; RegionContext, 
&gt; &gt; 
&gt; &gt; which then can be either the existing EventRegionContext object or a new
&gt; &gt; AccessibilityRegionContext.
&gt; OK, made this change, so should be ready to review again.

Looks pretty good to me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1951768</commentid>
    <comment_count>13</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2023-04-28 01:02:43 -0700</bug_when>
    <thetext>Committed 263493@main (6fa5a22eeca9): &lt;https://commits.webkit.org/263493@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 466114.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>465792</attachid>
            <date>2023-04-05 22:34:15 -0700</date>
            <delta_ts>2023-04-05 23:56:03 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-255076-20230405223414.patch</filename>
            <type>text/plain</type>
            <size>102663</size>
            <attacher name="Tyler Wilcock">tyler_w</attacher>
            
              <data encoding="base64">RnJvbSBmMDBiZGU1OTUwNTJmZmQ2ZWE4Mzg5MGNmNWIxYjk3NzI0YTQ0Y2VmIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBUeWxlciBXaWxjb2NrIDx0eWxlcl93QGFwcGxlLmNvbT4KRGF0
ZTogV2VkLCA1IEFwciAyMDIzIDIxOjU1OjE4IC0wNzAwClN1YmplY3Q6IFtQQVRDSF0gQWRkIFBh
aW50UGhhc2U6OkFjY2Vzc2liaWxpdHkgYW5kIEFjY2Vzc2liaWxpdHlQYWludENvbnRleHQKIHRv
IGZhY2lsaXRhdGUgQVggZWxlbWVudCBib3VuZGluZy1ib3ggdXBkYXRlcwogaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI1NTA3NiByZGFyOi8vcHJvYmxlbS8xMDc2OTQ0
OTIKClJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgoKQWNjZXNzaWJpbGl0eSBuZWVkcyB0byBj
YWNoZSB0aGUgYm91bmRpbmcgYm94IG9mIG5vbi1hY2Nlc3NpYmlsaXR5LWlzLWlnbm9yZWQgZWxl
bWVudHMgb24gdGhlIHNlY29uZGFyeSBBWCB0aHJlYWQuClRvIGdldCB0aGVzZSBib3VuZGluZy1i
b3hlcywgdGhpcyBwYXRjaCBhZGRzIGEgbmV3IGFjY2Vzc2liaWxpdHkgcGFpbnQgcGhhc2Ugd2l0
aCB0aGUgaW50ZW50aW9uIG9mIHRyaWdnZXJpbmcgdGhpcwpwYWludCBwaGFzZSBpbiBgUGFnZTo6
ZG9BZnRlclVwZGF0ZVJlbmRlcmluZ2AgKHdoaWNoIHdpbGwgYmUgZG9uZSBpbiBhIGZ1dHVyZSBw
YXRjaCkganVzdCBhcyBldmVudCByZWdpb25zIGRvLgoKVG8gYWNjb21wbGlzaCB0aGlzLCB0aGlz
IHBhdGNoIHJlZmFjdG9ycyBgRXZlbnRSZWdpb25Db250ZXh0YHMgY2xpcCBzdGFjayBhbmQgdHJh
bnNmb3JtIHN0YWNrIG1haW50ZW5hbmNlIGludG8gYSBuZXcKYFBhaW50Q29udGV4dGAgYmFzZSBj
bGFzcy4gYEV2ZW50UmVnaW9uQ29udGV4dGAgbm93IGRlcml2ZXMgZnJvbSBgUGFpbnRDb250ZXh0
YCBhbG9uZyB3aXRoIGEgbmV3IGBBY2Nlc3NpYmlsaXR5UGFpbnRDb250ZXh0YApjbGFzcy4gYEFj
Y2Vzc2liaWxpdHlQYWludENvbnRleHRgIHdpbGwgdGFrZSB0aGUgYm91bmRzIGdlbmVyYXRlZCBi
eSBwYWludGluZywgYXBwbHkgdHJhbnNmb3JtcyBhbmQgY2xpcHMsIGFuZCB1c2hlcgp0aGlzIGlu
Zm9ybWF0aW9uIGVsc2V3aGVyZSB0byBiZSB1c2VkIHRvIHVwZGF0ZSBhY2Nlc3NpYmlsaXR5IGRh
dGEgc3RydWN0dXJlcyAod2l0aCB0aGF0IGxhc3Qgc3RlcCBjb21pbmcgaW4gYSBsYXRlciBwYXRj
aCkuCgoqIFNvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0OgpBZGQgQWNjZXNzaWJpbGl0eVBhaW50
Q29udGV4dC5jcHAgYW5kIFBhaW50Q29udGV4dC5jcHAuCgoqIFNvdXJjZS9XZWJDb3JlL1dlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKQWRkIEFjY2Vzc2liaWxpdHlQYWludENvbnRl
eHQue2gsIGNwcH0gYW5kIFBhaW50Q29udGV4dC57aCwgY3BwfQoKKiBTb3VyY2UvV2ViQ29yZS9k
b20vRG9jdW1lbnQuaDoKKiBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwOgooV2ViQ29y
ZTo6RG9jdW1lbnQ6OnVwZGF0ZUFjY2Vzc2liaWxpdHlPYmplY3RSZWN0cyk6IEFkZGVkLgoKKiBT
b3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vaW5saW5lL0xheW91dEludGVncmF0aW9u
TGluZUxheW91dC5jcHA6CihXZWJDb3JlOjpMYXlvdXRJbnRlZ3JhdGlvbjo6TGluZUxheW91dDo6
cGFpbnQpOgpQYWludCBmb3IgUGFpbnRQaGFzZTo6QWNjZXNzaWJpbGl0eS4KCiogU291cmNlL1dl
YkNvcmUvcGFnZS9Mb2NhbEZyYW1lVmlldy5jcHA6CihXZWJDb3JlOjpMb2NhbEZyYW1lVmlldzo6
dXBkYXRlQWNjZXNzaWJpbGl0eU9iamVjdFJlY3RzKTogQWRkZWQuCihXZWJDb3JlOjpMb2NhbEZy
YW1lVmlldzo6dHJhdmVyc2VGb3JQYWludEludmFsaWRhdGlvbik6CihXZWJDb3JlOjpMb2NhbEZy
YW1lVmlldzo6cGFpbnRDb250ZW50cyk6CiogU291cmNlL1dlYkNvcmUvcGFnZS9Mb2NhbEZyYW1l
Vmlldy5oOgoqIFNvdXJjZS9XZWJDb3JlL3BhZ2UvUmVtb3RlRnJhbWVWaWV3LmNwcDoKKFdlYkNv
cmU6OlJlbW90ZUZyYW1lVmlldzo6cGFpbnRDb250ZW50cyk6CiogU291cmNlL1dlYkNvcmUvcGFn
ZS9SZW1vdGVGcmFtZVZpZXcuaDoKKiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxWaWV3
LmNwcDoKKFdlYkNvcmU6OlNjcm9sbFZpZXc6OnBhaW50KToKKiBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9TY3JvbGxWaWV3Lmg6CiogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYmFyLmNw
cDoKKFdlYkNvcmU6OlNjcm9sbGJhcjo6cGFpbnQpOgoqIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1Njcm9sbGJhci5oOgoqIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1dpZGdldC5jcHA6CihXZWJD
b3JlOjpXaWRnZXQ6OnBhaW50KToKKiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9XaWRnZXQuaDoK
KiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaDoKKFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6aW52YWxpZGF0aW5nQWNjZXNzaWJpbGl0eU9iamVjdFJl
Y3RzIGNvbnN0KToKKiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9OdWxsR3JhcGhp
Y3NDb250ZXh0Lmg6CiogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dpZGdldElPUy5tbToK
KFdlYkNvcmU6OldpZGdldDo6cGFpbnQpOgoqIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9X
aWRnZXRNYWMubW06CihXZWJDb3JlOjpXaWRnZXQ6OnBhaW50KToKQWNjZXB0IGEgYFBhaW50Q29u
dGV4dCpgIHBhcmFtZXRlciBpbnN0ZWFkIG9mIGFuIGBFdmVudFJlZ2lvbkNvbnRleHQqYC4KCiog
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0FjY2Vzc2liaWxpdHlQYWludENvbnRleHQuY3BwOiBB
ZGRlZC4KKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlQYWludENvbnRleHQ6OnRha2VCb3VuZHMpOgoq
IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9BY2Nlc3NpYmlsaXR5UGFpbnRDb250ZXh0Lmg6IEFk
ZGVkLgooV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVBhaW50Q29udGV4dDo6bWFwUmVjdCk6CgoqIFNv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9FdmVudFJlZ2lvbi5oOgoqIFNvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9FdmVudFJlZ2lvbi5jcHA6CihXZWJDb3JlOjpFdmVudFJlZ2lvbkNvbnRleHQ6OnB1
c2hUcmFuc2Zvcm0pOiBEZWxldGVkLgooV2ViQ29yZTo6RXZlbnRSZWdpb25Db250ZXh0Ojpwb3BU
cmFuc2Zvcm0pOiBEZWxldGVkLgooV2ViQ29yZTo6RXZlbnRSZWdpb25Db250ZXh0OjpwdXNoQ2xp
cCk6IERlbGV0ZWQuCihXZWJDb3JlOjpFdmVudFJlZ2lvbkNvbnRleHQ6OnBvcENsaXApOiBEZWxl
dGVkLgpUaGVzZSBmdW5jdGlvbnMgYW5kIHRoZWlyIGFzc29jaWF0ZWQgc3RhdGUgYXJlIG1vdmVk
IHRvCnRoZSBuZXdseSBhZGRlZCBiYXNlIGNsYXNzLCBgUGFpbnRDb250ZXh0YC4KCihXZWJDb3Jl
OjpFdmVudFJlZ2lvbkNvbnRleHRTdGF0ZVNhdmVyOjpFdmVudFJlZ2lvbkNvbnRleHRTdGF0ZVNh
dmVyKTogRGVsZXRlZC4KKFdlYkNvcmU6OkV2ZW50UmVnaW9uQ29udGV4dFN0YXRlU2F2ZXI6On5F
dmVudFJlZ2lvbkNvbnRleHRTdGF0ZVNhdmVyKTogRGVsZXRlZC4KKFdlYkNvcmU6OkV2ZW50UmVn
aW9uQ29udGV4dFN0YXRlU2F2ZXI6OnB1c2hDbGlwKTogRGVsZXRlZC4KKFdlYkNvcmU6OkV2ZW50
UmVnaW9uQ29udGV4dFN0YXRlU2F2ZXI6OmNvbnRleHQgY29uc3QpOiBEZWxldGVkLgpSZXBsYWNl
ZCBieSB0aGUgZXF1aXZhbGVudCBhbmQgbmV3LXRvLXRoaXMtcGF0Y2ggYFBhaW50Q29udGV4dFN0
YXRlU2F2ZXJgLgoKKiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvTGVnYWN5SW5saW5lRWxlbWVu
dEJveC5jcHA6CihXZWJDb3JlOjpMZWdhY3lJbmxpbmVFbGVtZW50Qm94OjpwYWludCk6CiogU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0xlZ2FjeUlubGluZUZsb3dCb3guY3BwOgooV2ViQ29yZTo6
TGVnYWN5SW5saW5lRmxvd0JveDo6cGFpbnQpOgpBdm9pZCBlYXJseSByZXR1cm4gd2hlbiBwYWlu
dGluZyBmb3IgUGFpbnRQaGFzZTo6QWNjZXNzaWJpbGl0eS4KCiogU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1BhaW50Q29udGV4dC5oOiBBZGRlZC4KKiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UGFpbnRDb250ZXh0LmNwcDogQWRkZWQuCihXZWJDb3JlOjpQYWludENvbnRleHQ6OnB1c2hUcmFu
c2Zvcm0pOgooV2ViQ29yZTo6UGFpbnRDb250ZXh0Ojpwb3BUcmFuc2Zvcm0pOgooV2ViQ29yZTo6
UGFpbnRDb250ZXh0OjpwdXNoQ2xpcCk6CihXZWJDb3JlOjpQYWludENvbnRleHQ6OnBvcENsaXAp
OgpSZXBsYWNlcyBlcXVpdmFsZW50IGZ1bmN0aW9uYWxpdHkgdGhhdCB1c2VkIHRvIGJlIGluIGBF
dmVudFJlZ2lvbkNvbnRleHRgLgooV2ViQ29yZTo6UGFpbnRDb250ZXh0Ojppc0V2ZW50UmVnaW9u
UGFpbnRDb250ZXh0IGNvbnN0KToKKFdlYkNvcmU6OlBhaW50Q29udGV4dDo6aXNBY2Nlc3NpYmls
aXR5UGFpbnRDb250ZXh0IGNvbnN0KToKCihXZWJDb3JlOjpQYWludENvbnRleHRTdGF0ZVNhdmVy
OjpQYWludENvbnRleHRTdGF0ZVNhdmVyKToKKFdlYkNvcmU6OlBhaW50Q29udGV4dFN0YXRlU2F2
ZXI6On5QYWludENvbnRleHRTdGF0ZVNhdmVyKToKKFdlYkNvcmU6OlBhaW50Q29udGV4dFN0YXRl
U2F2ZXI6OnB1c2hDbGlwKToKKFdlYkNvcmU6OlBhaW50Q29udGV4dFN0YXRlU2F2ZXI6OmNvbnRl
eHQgY29uc3QpOgpSZXBsYWNlcyBlcXVpdmFsZW50IGZ1bmN0aW9uYWxpdHkgdGhhdCB1c2VkIHRv
IGJlIGluIGBFdmVudFJlZ2lvbkNvbnRleHRTdGF0ZVNhdmVyYC4KCiogU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1BhaW50SW5mby5oOgpTdG9yZSBhIGBQYWludENvbnRleHQqYCByYXRoZXIgdGhh
biBhbiBgRXZlbnRSZWdpb25Db250ZXh0KmAuCihXZWJDb3JlOjpQYWludEluZm86OmV2ZW50UmVn
aW9uUGFpbnRDb250ZXh0KTogQWRkZWQuCihXZWJDb3JlOjpQYWludEluZm86OmFjY2Vzc2liaWxp
dHlQYWludENvbnRleHQpOiBBZGRlZC4KCiogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1BhaW50
UGhhc2UuaDoKQWRkIG5ldyBQYWludFBoYXNlOjpBY2Nlc3NpYmlsaXR5LgoKKiBTb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwOgooV2ViQ29yZTo6UmVuZGVyQmxvY2s6OnBh
aW50Q29udGVudHMpOgpDaGVjayBmb3Igbm9uLW51bGwgZXZlbnQgcmVnaW9uIHBhaW50IGNvbnRl
eHQgdG8gbWFpbnRhaW4gZXhpc3RpbmcKYmVoYXZpb3IuCgooV2ViQ29yZTo6UmVuZGVyQmxvY2s6
OnBhaW50T2JqZWN0KToKR2l2ZSB0aGUgcGFpbnQtcmVjdCBvZiB0aGlzIGBSZW5kZXJCbG9ja2Ag
dG8gdGhlIGBBY2Nlc3NpYmlsaXR5UGFpbnRDb250ZXh0YCBpZiBwcmVzZW50LgpIYW5kbGUgbmV3
IGBQYWludFBoYXNlOjpBY2Nlc3NpYmlsaXR5YC4KCiogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckJveC5jcHA6CihXZWJDb3JlOjpSZW5kZXJCb3g6OnB1c2hDb250ZW50c0NsaXApOgoo
V2ViQ29yZTo6UmVuZGVyQm94Ojpwb3BDb250ZW50c0NsaXApOgpQdXNoIGFuZCBwb3AgY2xpcCBm
b3IgYm90aCBgUGFpbnRQaGFzZTo6QWNjZXNzaWJpbGl0eWAgYW5kIGBQYWludFBoYXNlOjpFdmVu
dFJlZ2lvbkNvbnRleHRgLgoKKiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRWxlbWVu
dC5jcHA6CihXZWJDb3JlOjpSZW5kZXJFbGVtZW50OjpwYWludEFzSW5saW5lQmxvY2spOgpBbGxv
dyBwYWludCBmb3IgYFBhaW50UGhhc2U6OkFjY2Vzc2liaWxpdHlgLgoKKiBTb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwOgooV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OnBhaW50
KToKKFdlYkNvcmU6OlJlbmRlckxheWVyOjpjbGlwVG9SZWN0KToKKFdlYkNvcmU6OlJlbmRlckxh
eWVyOjpwYWludExheWVyV2l0aEVmZmVjdHMpOgooV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OnNldHVw
Q2xpcFBhdGgpOgooV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OmFwcGx5RmlsdGVycyk6CihXZWJDb3Jl
OjpSZW5kZXJMYXllcjo6cGFpbnRMYXllckNvbnRlbnRzKToKKFdlYkNvcmU6OlJlbmRlckxheWVy
OjpwYWludExheWVyQnlBcHBseWluZ1RyYW5zZm9ybSk6CihXZWJDb3JlOjpSZW5kZXJMYXllcjo6
cGFpbnRUcmFuc2Zvcm1lZExheWVySW50b0ZyYWdtZW50cyk6CihXZWJDb3JlOjpSZW5kZXJMYXll
cjo6cGFpbnRCYWNrZ3JvdW5kRm9yRnJhZ21lbnRzKToKKFdlYkNvcmU6OlJlbmRlckxheWVyOjpw
YWludEZvcmVncm91bmRGb3JGcmFnbWVudHMpOgooV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OnBhaW50
Rm9yZWdyb3VuZEZvckZyYWdtZW50c1dpdGhQaGFzZSk6CihXZWJDb3JlOjpSZW5kZXJMYXllcjo6
cGFpbnRPdXRsaW5lRm9yRnJhZ21lbnRzKToKKFdlYkNvcmU6OlJlbmRlckxheWVyOjpwYWludE1h
c2tGb3JGcmFnbWVudHMpOgooV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OnBhaW50Q2hpbGRDbGlwcGlu
Z01hc2tGb3JGcmFnbWVudHMpOgooV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OnBhaW50T3ZlcmZsb3dD
b250cm9sc0ZvckZyYWdtZW50cyk6CihXZWJDb3JlOjpSZW5kZXJMYXllcjo6Y29sbGVjdEV2ZW50
UmVnaW9uRm9yRnJhZ21lbnRzKToKKFdlYkNvcmU6OlJlbmRlckxheWVyOjpjb2xsZWN0QWNjZXNz
aWJpbGl0eVJlY3RzRm9yRnJhZ21lbnRzKTogQWRkZWQuClJlcGxhY2UgdXNhZ2Ugb2YgYEV2ZW50
UmVnaW9uQ29udGV4dFN0YXRlU2F2ZXJgIHdpdGggYFBhaW50Q29udGV4dFN0YXRlU2F2ZXJgLgpD
aGVjayBmb3IgdGhlIHByZXNlbmNlIG9mIGBFdmVudFJlZ2lvbkNvbnRleHRgIHdoZW4gYXBwcm9w
cmlhdGUgdG8gbWFpbnRhaW4gZXhpc3RpbmcgYmVoYXZpb3IuCgoqIFNvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJMYXllci5oOgooV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OnBhaW50KToKQWNj
ZXB0IGEgYFBhaW50Q29udGV4dCpgIHBhcmFtZXRlciBpbnN0ZWFkIG9mIGFuIGBFdmVudFJlZ2lv
bkNvbnRleHQqYC4KU3RvcmUgYSBgUGFpbnRDb250ZXh0KmAgcmF0aGVyIHRoYW4gYW4gYEV2ZW50
UmVnaW9uQ29udGV4dCpgIGluIGBzdHJ1Y3QgTGF5ZXJQYWludGluZ0luZm9gLgoKKiBTb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcDoKKFdlYkNvcmU6OlJlbmRl
ckxheWVyQmFja2luZzo6cGFpbnRJbnRvTGF5ZXIpOgoqIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJMYXllckJhY2tpbmcuaDoKQWNjZXB0IGEgYFBhaW50Q29udGV4dCpgIHBhcmFtZXRl
ciBpbnN0ZWFkIG9mIGFuIGBFdmVudFJlZ2lvbkNvbnRleHQqYC4KUmVwbGFjZSB1c2FnZSBvZiBg
RXZlbnRSZWdpb25Db250ZXh0U3RhdGVTYXZlcmAgd2l0aCBgUGFpbnRDb250ZXh0U3RhdGVTYXZl
cmAuCgoqIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0TWFya2VyLmNwcDoKKFdl
YkNvcmU6OlJlbmRlckxpc3RNYXJrZXI6OnBhaW50KToKUGFpbnQgZm9yIGBQYWludFBoYXNlOjpB
Y2Nlc3NpYmlsaXR5YC4KCiogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJlcGxhY2Vk
LmNwcDoKKFdlYkNvcmU6OlJlbmRlclJlcGxhY2VkOjpwYWludCk6CihXZWJDb3JlOjpSZW5kZXJS
ZXBsYWNlZDo6c2hvdWxkUGFpbnQpOgpQYWludCBmb3IgYFBhaW50UGhhc2U6OkFjY2Vzc2liaWxp
dHlgLgoKKiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU2Nyb2xsYmFyLmg6CiogU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNjcm9sbGJhci5jcHA6CihXZWJDb3JlOjpSZW5k
ZXJTY3JvbGxiYXI6OnBhaW50KToKQWNjZXB0IGEgYFBhaW50Q29udGV4dCpgIHBhcmFtZXRlciBp
bnN0ZWFkIG9mIGFuIGBFdmVudFJlZ2lvbkNvbnRleHQqYC4KCiogU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlcldpZGdldC5jcHA6CihXZWJDb3JlOjpSZW5kZXJXaWRnZXQ6OnBhaW50Q29u
dGVudHMpOgooV2ViQ29yZTo6UmVuZGVyV2lkZ2V0OjpwYWludCk6ClJldHVybiBlYXJseSBiZWZv
cmUgYWN0dWFsIHBhaW50IGZvciBgUGFpbnRQaGFzZTo6QWNjZXNzaWJpbGl0eWAuCgoqIFNvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9UZXh0Qm94UGFpbnRlci5jcHA6CihXZWJDb3JlOjpUZXh0Qm94
UGFpbnRlcjxUZXh0Qm94UGF0aD46OlRleHRCb3hQYWludGVyKToKKFdlYkNvcmU6OlRleHRCb3hQ
YWludGVyPFRleHRCb3hQYXRoPjo6cGFpbnQpOgpBbGxvdyBwYWludCBmb3IgYFBhaW50UGhhc2U6
OkFjY2Vzc2liaWxpdHlgIGluIEFTU0VSVCAod2Ugd2lsbCBuZWVkIHRvCmhhbmRsZSB0aGVzZSBw
YWludHMgaW4gYSBmdXR1cmUgcGF0Y2gpLgoKKiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1
Z2lucy9QbHVnaW5WaWV3Lmg6CiogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1
Z2luVmlldy5jcHA6CihXZWJLaXQ6OlBsdWdpblZpZXc6OnBhaW50KToKQWNjZXB0IGEgYFBhaW50
Q29udGV4dCpgIHBhcmFtZXRlciBpbnN0ZWFkIG9mIGFuIGBFdmVudFJlZ2lvbkNvbnRleHQqYC4K
LS0tCiBTb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dCAgICAgICAgICAgICAgICAgICAgfCAgMiAr
CiAuLi4vV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogfCAxNCArKy0K
IFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAgICAgICAgICAgICAgICB8ICA4ICsrCiBT
b3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaCAgICAgICAgICAgICAgICAgfCAgMSArCiAuLi4v
aW5saW5lL0xheW91dEludGVncmF0aW9uTGluZUxheW91dC5jcHAgICAgfCAgMSArCiBTb3VyY2Uv
V2ViQ29yZS9wYWdlL0xvY2FsRnJhbWVWaWV3LmNwcCAgICAgICAgfCAyNiArKystLQogU291cmNl
L1dlYkNvcmUvcGFnZS9Mb2NhbEZyYW1lVmlldy5oICAgICAgICAgIHwgIDcgKy0KIFNvdXJjZS9X
ZWJDb3JlL3BhZ2UvUmVtb3RlRnJhbWVWaWV3LmNwcCAgICAgICB8ICAyICstCiBTb3VyY2UvV2Vi
Q29yZS9wYWdlL1JlbW90ZUZyYW1lVmlldy5oICAgICAgICAgfCAgMiArLQogU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vU2Nyb2xsVmlldy5jcHAgICAgICAgIHwgIDcgKy0KIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1Njcm9sbFZpZXcuaCAgICAgICAgICB8ICA2ICstCiBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9TY3JvbGxiYXIuY3BwICAgICAgICAgfCAgMiArLQogU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vU2Nyb2xsYmFyLmggICAgICAgICAgIHwgIDIgKy0KIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL1dpZGdldC5jcHAgICAgICAgICAgICB8ICAyICstCiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9XaWRnZXQuaCAgICAgICAgICAgICAgfCAgNCArLQogLi4uL3BsYXRmb3JtL2dyYXBoaWNzL0dy
YXBoaWNzQ29udGV4dC5oICAgICAgIHwgIDEgKwogLi4uL3BsYXRmb3JtL2dyYXBoaWNzL051bGxH
cmFwaGljc0NvbnRleHQuaCAgIHwgIDQgKy0KIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9X
aWRnZXRJT1MubW0gICAgICB8ICAyICstCiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2lk
Z2V0TWFjLm1tICAgICAgfCAgMiArLQogLi4uL3JlbmRlcmluZy9BY2Nlc3NpYmlsaXR5UGFpbnRD
b250ZXh0LmNwcCAgIHwgNDIgKysrKysrKysKIC4uLi9yZW5kZXJpbmcvQWNjZXNzaWJpbGl0eVBh
aW50Q29udGV4dC5oICAgICB8IDY5ICsrKysrKysrKysrKysKIFNvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9FdmVudFJlZ2lvbi5jcHAgICAgICB8IDQzICstLS0tLS0tCiBTb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvRXZlbnRSZWdpb24uaCAgICAgICAgfCA1OCArKy0tLS0tLS0tLQogLi4uL3JlbmRl
cmluZy9MZWdhY3lJbmxpbmVFbGVtZW50Qm94LmNwcCAgICAgIHwgIDIgKy0KIC4uLi9XZWJDb3Jl
L3JlbmRlcmluZy9MZWdhY3lJbmxpbmVGbG93Qm94LmNwcCB8ICAyICstCiBTb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUGFpbnRDb250ZXh0LmNwcCAgICAgfCA3NCArKysrKysrKysrKysrKwogU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1BhaW50Q29udGV4dC5oICAgICAgIHwgOTUgKysrKysrKysr
KysrKysrKysrCiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUGFpbnRJbmZvLmggICAgICAgICAg
fCAgOSArLQogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1BhaW50UGhhc2UuaCAgICAgICAgIHwg
IDEgKwogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcCAgICAgIHwgMTUg
Ky0tCiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNwcCAgICAgICAgfCAgOCAr
LQogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVsZW1lbnQuY3BwICAgIHwgIDIgKy0K
IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAgICAgICB8IDk4ICsrKysr
KysrKysrLS0tLS0tLS0KIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5oICAg
ICAgICB8IDExICsrLQogLi4uL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5j
cHAgIHwgMTYgKy0tCiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5n
LmggfCAgNCArLQogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RNYXJrZXIuY3Bw
IHwgIDggKy0KIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSZXBsYWNlZC5jcHAgICB8
IDEwICstCiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU2Nyb2xsYmFyLmNwcCAgfCAg
MiArLQogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNjcm9sbGJhci5oICAgIHwgIDIg
Ky0KIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJXaWRnZXQuY3BwICAgICB8IDEyICst
LQogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1RleHRCb3hQYWludGVyLmNwcCAgIHwgIDQgKy0K
IC4uLi9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwICB8ICAyICstCiBT
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmggfCAgMiArLQogNDQg
ZmlsZXMgY2hhbmdlZCwgNDgyIGluc2VydGlvbnMoKyksIDIwNCBkZWxldGlvbnMoLSkKIGNyZWF0
ZSBtb2RlIDEwMDY0NCBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvQWNjZXNzaWJpbGl0eVBhaW50
Q29udGV4dC5jcHAKIGNyZWF0ZSBtb2RlIDEwMDY0NCBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
QWNjZXNzaWJpbGl0eVBhaW50Q29udGV4dC5oCiBjcmVhdGUgbW9kZSAxMDA2NDQgU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1BhaW50Q29udGV4dC5jcHAKIGNyZWF0ZSBtb2RlIDEwMDY0NCBTb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUGFpbnRDb250ZXh0LmgKCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Tb3VyY2VzLnR4dCBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CmluZGV4IDgz
YWM3ZWEzYzIzMy4uYzI5ZGQ2ODBjMzFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Tb3Vy
Y2VzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dApAQCAtMjQzNCw2ICsyNDM0
LDcgQEAgcGx1Z2lucy9ET01QbHVnaW4uY3BwCiBwbHVnaW5zL0RPTVBsdWdpbkFycmF5LmNwcAog
cGx1Z2lucy9QbHVnaW5EYXRhLmNwcAogcGx1Z2lucy9QbHVnaW5JbmZvUHJvdmlkZXIuY3BwCity
ZW5kZXJpbmcvQWNjZXNzaWJpbGl0eVBhaW50Q29udGV4dC5jcHAKIHJlbmRlcmluZy9BdXRvVGFi
bGVMYXlvdXQuY3BwCiByZW5kZXJpbmcvQmFja2dyb3VuZFBhaW50ZXIuY3BwCiByZW5kZXJpbmcv
QmlkaVJ1bi5jcHAKQEAgLTI0NzYsNiArMjQ3Nyw3IEBAIHJlbmRlcmluZy9MZWdhY3lSb290SW5s
aW5lQm94LmNwcAogcmVuZGVyaW5nL0xlZ2FjeUlubGluZVRleHRCb3guY3BwCiByZW5kZXJpbmcv
TWFya2VkVGV4dC5jcHAKIHJlbmRlcmluZy9PcmRlckl0ZXJhdG9yLmNwcAorcmVuZGVyaW5nL1Bh
aW50Q29udGV4dC5jcHAKIHJlbmRlcmluZy9QYXRoT3BlcmF0aW9uLmNwcAogcmVuZGVyaW5nL1Bv
aW50ZXJFdmVudHNIaXRSdWxlcy5jcHAKIHJlbmRlcmluZy9SZWZlcmVuY2VkU1ZHUmVzb3VyY2Vz
LmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCmluZGV4IDliNzg5YTYxODFlYy4uOTI4N2QwMWUzNDFiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0zLDcgKzMsNyBAQAog
CWFyY2hpdmVWZXJzaW9uID0gMTsKIAljbGFzc2VzID0gewogCX07Ci0Jb2JqZWN0VmVyc2lvbiA9
IDUxOworCW9iamVjdFZlcnNpb24gPSA1NDsKIAlvYmplY3RzID0gewogCiAvKiBCZWdpbiBQQlhB
Z2dyZWdhdGVUYXJnZXQgc2VjdGlvbiAqLwpAQCAtMTU1Nyw2ICsxNTU3LDggQEAKIAkJNDdDNEQ1
N0QyNjUwOEJDQjAwQzdBQjFGIC8qIElubGluZUZvcm1hdHRpbmdHZW9tZXRyeS5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDdDNEQ1N0MyNjUwOEJDQTAw
QzdBQjFGIC8qIElubGluZUZvcm1hdHRpbmdHZW9tZXRyeS5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQ3Rjk0N0RCMjY1MDJGMkYwMDg3OTY4QyAv
KiBCbG9ja0Zvcm1hdHRpbmdRdWlya3MuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDQ3Rjk0N0RBMjY1MDJGMkYwMDg3OTY4QyAvKiBCbG9ja0Zvcm1hdHRp
bmdRdWlya3MuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQk0N0ZBOTcwMDI2NTA5ODJCMDA4NDE0MTYgLyogVGFibGVGb3JtYXR0aW5nR2VvbWV0cnku
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ3RkE5NkZG
MjY1MDk4MkEwMDg0MTQxNiAvKiBUYWJsZUZvcm1hdHRpbmdHZW9tZXRyeS5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTQ4MjI5NzBFMjlDOEVCQzAw
MDMzQTEyNiAvKiBQYWludENvbnRleHQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDQ4MjI5NzBDMjlDOEVCQzAwMDMzQTEyNiAvKiBQYWludENvbnRleHQu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk0OEI1
QkYzNzI5Q0E2OTE3MDBGRUJFM0IgLyogQWNjZXNzaWJpbGl0eVBhaW50Q29udGV4dC5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDhCNUJGMzUyOUNBNjkx
NzAwRkVCRTNCIC8qIEFjY2Vzc2liaWxpdHlQYWludENvbnRleHQuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0OTNFNUUwOTEyRDY0MjA1MDAwMjAw
ODEgLyogUGxhdGZvcm1DQUxheWVyQ2xpZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA0OTNFNUUwODEyRDY0MjA1MDAwMjAwODEgLyogUGxhdGZvcm1D
QUxheWVyQ2xpZW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJNDk0NUJGRDQxM0NGODA5MDAwQ0MzQjM4IC8qIFRyYW5zZm9ybVN0YXRlLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0OTQ1QkZEMjEzQ0Y4
MDkwMDBDQzNCMzggLyogVHJhbnNmb3JtU3RhdGUuaCAqLzsgfTsKIAkJNDk0ODRGQzIxMDJDRjIz
QzAwMTg3REQzIC8qIENhbnZhc0dyYWRpZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA0OTQ4NEZCNDEwMkNGMjNDMDAxODdERDMgLyogQ2FudmFzR3Jh
ZGllbnQuaCAqLzsgfTsKQEAgLTEwMDgwLDYgKzEwMDgyLDEwIEBACiAJCTQ3QzRENTdDMjY1MDhC
Q0EwMEM3QUIxRiAvKiBJbmxpbmVGb3JtYXR0aW5nR2VvbWV0cnkuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gSW5saW5lRm9ybWF0dGluZ0dlb21ldHJ5Lmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTQ3Rjk0N0RBMjY1MDJGMkYwMDg3OTY4QyAvKiBCbG9ja0Zvcm1h
dHRpbmdRdWlya3MuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQmxvY2tGb3Jt
YXR0aW5nUXVpcmtzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ3RkE5NkZGMjY1
MDk4MkEwMDg0MTQxNiAvKiBUYWJsZUZvcm1hdHRpbmdHZW9tZXRyeS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBUYWJsZUZvcm1hdHRpbmdHZW9tZXRyeS5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQk0ODIyOTcwQjI5QzhFQkMwMDAzM0ExMjYgLyogUGFpbnRDb250
ZXh0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFBhaW50Q29udGV4
dC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQ4MjI5NzBDMjlDOEVCQzAwMDMz
QTEyNiAvKiBQYWludENvbnRleHQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
UGFpbnRDb250ZXh0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQ4QjVCRjM1MjlD
QTY5MTcwMEZFQkUzQiAvKiBBY2Nlc3NpYmlsaXR5UGFpbnRDb250ZXh0LmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFjY2Vzc2liaWxpdHlQYWludENvbnRleHQuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDhCNUJGMzYyOUNBNjkxNzAwRkVCRTNCIC8qIEFjY2Vz
c2liaWxpdHlQYWludENvbnRleHQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQWNjZXNzaWJpbGl0
eVBhaW50Q29udGV4dC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ5M0U1RTA4
MTJENjQyMDUwMDAyMDA4MSAvKiBQbGF0Zm9ybUNBTGF5ZXJDbGllbnQuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gUGxhdGZvcm1DQUxheWVyQ2xpZW50Lmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTQ5NDVCRkQxMTNDRjgwOTAwMENDM0IzOCAvKiBUcmFuc2Zvcm1T
dGF0ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBUcmFuc2Zvcm1T
dGF0ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ5NDVCRkQyMTNDRjgwOTAw
MENDM0IzOCAvKiBUcmFuc2Zvcm1TdGF0ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBUcmFuc2Zvcm1TdGF0ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMzQw
OTEsNiArMzQwOTcsOCBAQAogCQkJCUJDOEM4RkFBMEREQ0QyRjIwMEI1OTJGNCAvKiBzdHlsZSAq
LywKIAkJCQkwODhDMkY3NDEyMzkwMDgwMDAzRDY1Q0UgLyogc3ZnICovLAogCQkJCUU0N0MzOTFF
MUZFNkUwOEMwMEJCQkM2QiAvKiB1cGRhdGluZyAqLywKKwkJCQk0OEI1QkYzNjI5Q0E2OTE3MDBG
RUJFM0IgLyogQWNjZXNzaWJpbGl0eVBhaW50Q29udGV4dC5jcHAgKi8sCisJCQkJNDhCNUJGMzUy
OUNBNjkxNzAwRkVCRTNCIC8qIEFjY2Vzc2liaWxpdHlQYWludENvbnRleHQuaCAqLywKIAkJCQkx
QTMzQUUzRjI4RjlGMjkwMDA5ODA0QjQgLyogQXR0YWNobWVudExheW91dC5oICovLAogCQkJCTFB
MzNBRTQwMjhGOUY0NzgwMDk4MDRCNCAvKiBBdHRhY2htZW50TGF5b3V0Lm1tICovLAogCQkJCUE4
Q0ZGMDRCMEExNTRGMDkwMDBBNDIzNCAvKiBBdXRvVGFibGVMYXlvdXQuY3BwICovLApAQCAtMzQx
ODYsNiArMzQxOTQsOCBAQAogCQkJCUNERTdGQzQzMTgxOTA0QjEwMDJCQkI3NyAvKiBPcmRlckl0
ZXJhdG9yLmggKi8sCiAJCQkJMzc3NEFCQTMwRkEyMUVCNDAwQUQ3REU5IC8qIE92ZXJsYXBUZXN0
UmVxdWVzdENsaWVudC5oICovLAogCQkJCTkzNzdBQjlGMTVERUZFRUYwMDMxRkQwNCAvKiBQYWdp
bmF0aW9uLmggKi8sCisJCQkJNDgyMjk3MEIyOUM4RUJDMDAwMzNBMTI2IC8qIFBhaW50Q29udGV4
dC5jcHAgKi8sCisJCQkJNDgyMjk3MEMyOUM4RUJDMDAwMzNBMTI2IC8qIFBhaW50Q29udGV4dC5o
ICovLAogCQkJCTU1RUM5NTk3MjA2OUM5MkQwMDdERDBBOSAvKiBQYWludEZyZXF1ZW5jeVRyYWNr
ZXIuaCAqLywKIAkJCQkwODg1MDY3RDExREEwNDVCMDAxODJCOTggLyogUGFpbnRJbmZvLmggKi8s
CiAJCQkJMDg4NTA2N0UxMURBMDQ1QjAwMTgyQjk4IC8qIFBhaW50UGhhc2UuaCAqLywKQEAgLTM1
NTg1LDYgKzM1NTk1LDcgQEAKIAkJCQkyOUFDQjIxMjE0M0U3MTI4MDA2QkNBNUYgLyogQWNjZXNz
aWJpbGl0eU1vY2tPYmplY3QuaCBpbiBIZWFkZXJzICovLAogCQkJCTI5QTgxMjM2MEZCQjlDMUQw
MDUxMDI5MyAvKiBBY2Nlc3NpYmlsaXR5T2JqZWN0LmggaW4gSGVhZGVycyAqLywKIAkJCQkyOTM2
QkY1QzIxRDY5RTRCMDA0QThGQzkgLyogQWNjZXNzaWJpbGl0eU9iamVjdEludGVyZmFjZS5oIGlu
IEhlYWRlcnMgKi8sCisJCQkJNDhCNUJGMzcyOUNBNjkxNzAwRkVCRTNCIC8qIEFjY2Vzc2liaWxp
dHlQYWludENvbnRleHQuaCBpbiBIZWFkZXJzICovLAogCQkJCUE0MDlDOTg1MTE2RDBEREQwMDcx
OTdCRCAvKiBBY2Nlc3NpYmlsaXR5UHJvZ3Jlc3NJbmRpY2F0b3IuaCBpbiBIZWFkZXJzICovLAog
CQkJCTI5QTgxMjM5MEZCQjlDMUQwMDUxMDI5MyAvKiBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0
LmggaW4gSGVhZGVycyAqLywKIAkJCQk5M0M0RjZFQjExMDhGOUE1MDA5OUQwREIgLyogQWNjZXNz
aWJpbGl0eVNjcm9sbGJhci5oIGluIEhlYWRlcnMgKi8sCkBAIC0zODg4MSw2ICszODg5Miw3IEBA
CiAJCQkJMzcxRTY1Q0MxMzY2MUVEQzAwQkVFREIwIC8qIFBhZ2VTZXJpYWxpemVyLmggaW4gSGVh
ZGVycyAqLywKIAkJCQlFMTI4NEFFMTEwNDQ3RDQ1MDBFQUVCNTIgLyogUGFnZVRyYW5zaXRpb25F
dmVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTM3N0FCQTAxNURFRkVFRjAwMzFGRDA0IC8qIFBh
Z2luYXRpb24uaCBpbiBIZWFkZXJzICovLAorCQkJCTQ4MjI5NzBFMjlDOEVCQzAwMDMzQTEyNiAv
KiBQYWludENvbnRleHQuaCBpbiBIZWFkZXJzICovLAogCQkJCTU1RUM5NTk5MjA2QUE3QTAwMDdE
RDBBOSAvKiBQYWludEZyZXF1ZW5jeVRyYWNrZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTA4ODUw
NjdGMTFEQTA0NUIwMDE4MkI5OCAvKiBQYWludEluZm8uaCBpbiBIZWFkZXJzICovLAogCQkJCTA4
ODUwNjgwMTFEQTA0NUIwMDE4MkI5OCAvKiBQYWludFBoYXNlLmggaW4gSGVhZGVycyAqLywKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vRG9jdW1lbnQuY3BwCmluZGV4IDBhYzc1NGNlYWYzZi4uN2FhODM5NWQwOWI4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9Eb2N1bWVudC5jcHAKQEAgLTQ3NDYsNiArNDc0NiwxNCBAQCB2b2lkIERvY3VtZW50
Ojp1cGRhdGVFdmVudFJlZ2lvbnMoKQogICAgIH0KIH0KIAordm9pZCBEb2N1bWVudDo6dXBkYXRl
QWNjZXNzaWJpbGl0eU9iamVjdFJlY3RzKCkKK3sKKyNpZiBFTkFCTEUoQUNDRVNTSUJJTElUWV9J
U09MQVRFRF9UUkVFKQorICAgIGlmIChhdXRvKiB2aWV3ID0gcmVuZGVyVmlldygpKQorICAgICAg
ICB2aWV3LT5mcmFtZVZpZXcoKS51cGRhdGVBY2Nlc3NpYmlsaXR5T2JqZWN0UmVjdHMoKTsKKyNl
bmRpZgorfQorCiB2b2lkIERvY3VtZW50OjppbnZhbGlkYXRlRXZlbnRSZWdpb25zRm9yRnJhbWUo
SFRNTEZyYW1lT3duZXJFbGVtZW50JiBlbGVtZW50KQogewogICAgIGF1dG8qIHJlbmRlcmVyID0g
ZWxlbWVudC5yZW5kZXJlcigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3Vt
ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAppbmRleCA5ODYzMDkxYmYxMzYu
Ljg4ZmM0ZjQwOWZmZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKQEAgLTEyMjgsNiArMTIyOCw3IEBA
IHB1YmxpYzoKIAogICAgIFdFQkNPUkVfRVhQT1JUIFN0cmluZyBkaXNwbGF5U3RyaW5nTW9kaWZp
ZWRCeUVuY29kaW5nKGNvbnN0IFN0cmluZyYpIGNvbnN0OwogCisgICAgdm9pZCB1cGRhdGVBY2Nl
c3NpYmlsaXR5T2JqZWN0UmVjdHMoKTsKICAgICB2b2lkIHVwZGF0ZUV2ZW50UmVnaW9ucygpOwog
CiAgICAgdm9pZCBpbnZhbGlkYXRlUmVuZGVyaW5nRGVwZW5kZW50UmVnaW9ucygpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL2lubGluZS9MYXlvdXRJbnRl
Z3JhdGlvbkxpbmVMYXlvdXQuY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9u
L2lubGluZS9MYXlvdXRJbnRlZ3JhdGlvbkxpbmVMYXlvdXQuY3BwCmluZGV4IGI0OWQzOGQ1YTJl
ZC4uOTViMTZmNjlmYmViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdy
YXRpb24vaW5saW5lL0xheW91dEludGVncmF0aW9uTGluZUxheW91dC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL2lubGluZS9MYXlvdXRJbnRlZ3JhdGlvbkxpbmVM
YXlvdXQuY3BwCkBAIC0xMTM1LDYgKzExMzUsNyBAQCB2b2lkIExpbmVMYXlvdXQ6OnBhaW50KFBh
aW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbnRPZmZzZXQsIGNvbgog
CiAgICAgYXV0byBzaG91bGRQYWludEZvclBoYXNlID0gWyZdIHsKICAgICAgICAgc3dpdGNoIChw
YWludEluZm8ucGhhc2UpIHsKKyAgICAgICAgY2FzZSBQYWludFBoYXNlOjpBY2Nlc3NpYmlsaXR5
OgogICAgICAgICBjYXNlIFBhaW50UGhhc2U6OkZvcmVncm91bmQ6CiAgICAgICAgIGNhc2UgUGFp
bnRQaGFzZTo6RXZlbnRSZWdpb246CiAgICAgICAgIGNhc2UgUGFpbnRQaGFzZTo6VGV4dENsaXA6
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0xvY2FsRnJhbWVWaWV3LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvTG9jYWxGcmFtZVZpZXcuY3BwCmluZGV4IDFkOTI3ZWJjZWZhYS4u
MjljMzkyYjFmNWZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0xvY2FsRnJhbWVW
aWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0xvY2FsRnJhbWVWaWV3LmNwcApAQCAt
NDY3Niw3ICs0Njc2LDE4IEBAIHZvaWQgTG9jYWxGcmFtZVZpZXc6OmludmFsaWRhdGVJbWFnZXNX
aXRoQXN5bmNEZWNvZGVzKCkKICAgICB0cmF2ZXJzZUZvclBhaW50SW52YWxpZGF0aW9uKE51bGxH
cmFwaGljc0NvbnRleHQ6OlBhaW50SW52YWxpZGF0aW9uUmVhc29uczo6SW52YWxpZGF0aW5nSW1h
Z2VzV2l0aEFzeW5jRGVjb2Rlcyk7CiB9CiAKLXZvaWQgTG9jYWxGcmFtZVZpZXc6OnRyYXZlcnNl
Rm9yUGFpbnRJbnZhbGlkYXRpb24oTnVsbEdyYXBoaWNzQ29udGV4dDo6UGFpbnRJbnZhbGlkYXRp
b25SZWFzb25zIHBhaW50SW52YWxpZGF0aW9uUmVhc29ucykKK3ZvaWQgTG9jYWxGcmFtZVZpZXc6
OnVwZGF0ZUFjY2Vzc2liaWxpdHlPYmplY3RSZWN0cygpCit7CisjaWYgRU5BQkxFKEFDQ0VTU0lC
SUxJVFlfSVNPTEFURURfVFJFRSkKKyAgICBpZiAoIUFYT2JqZWN0Q2FjaGU6OmFjY2Vzc2liaWxp
dHlFbmFibGVkKCkgfHwgIUFYT2JqZWN0Q2FjaGU6OmlzSXNvbGF0ZWRUcmVlRW5hYmxlZCgpKQor
ICAgICAgICByZXR1cm47CisKKyAgICBBY2Nlc3NpYmlsaXR5UGFpbnRDb250ZXh0IGFjY2Vzc2li
aWxpdHlQYWludENvbnRleHQ7CisgICAgdHJhdmVyc2VGb3JQYWludEludmFsaWRhdGlvbihOdWxs
R3JhcGhpY3NDb250ZXh0OjpQYWludEludmFsaWRhdGlvblJlYXNvbnM6OkludmFsaWRhdGluZ0Fj
Y2Vzc2liaWxpdHlPYmplY3RSZWN0cywgJmFjY2Vzc2liaWxpdHlQYWludENvbnRleHQpOworI2Vu
ZGlmCit9CisKK3ZvaWQgTG9jYWxGcmFtZVZpZXc6OnRyYXZlcnNlRm9yUGFpbnRJbnZhbGlkYXRp
b24oTnVsbEdyYXBoaWNzQ29udGV4dDo6UGFpbnRJbnZhbGlkYXRpb25SZWFzb25zIHBhaW50SW52
YWxpZGF0aW9uUmVhc29ucywgUGFpbnRDb250ZXh0KiBwYWludENvbnRleHQpCiB7CiAgICAgaWYg
KG5lZWRzTGF5b3V0KCkpCiAgICAgICAgIGxheW91dENvbnRleHQoKS5sYXlvdXQoKTsKQEAgLTQ2
ODQsOSArNDY5NSw5IEBAIHZvaWQgTG9jYWxGcmFtZVZpZXc6OnRyYXZlcnNlRm9yUGFpbnRJbnZh
bGlkYXRpb24oTnVsbEdyYXBoaWNzQ29udGV4dDo6UGFpbnRJbnZhCiAgICAgTnVsbEdyYXBoaWNz
Q29udGV4dCBjb250ZXh0KHBhaW50SW52YWxpZGF0aW9uUmVhc29ucyk7CiAgICAgaWYgKHBsYXRm
b3JtV2lkZ2V0KCkpIHsKICAgICAgICAgLy8gRklYTUU6IGNvbnN1bHQgcGFpbnRzRW50aXJlQ29u
dGVudHMoKS4KLSAgICAgICAgcGFpbnRDb250ZW50cyhjb250ZXh0LCB2aXNpYmxlQ29udGVudFJl
Y3QoTGVnYWN5SU9TRG9jdW1lbnRWaXNpYmxlUmVjdCkpOworICAgICAgICBwYWludENvbnRlbnRz
KGNvbnRleHQsIHZpc2libGVDb250ZW50UmVjdChMZWdhY3lJT1NEb2N1bWVudFZpc2libGVSZWN0
KSwgU2VjdXJpdHlPcmlnaW5QYWludFBvbGljeTo6QW55T3JpZ2luLCBwYWludENvbnRleHQpOwog
ICAgIH0gZWxzZQotICAgICAgICBwYWludChjb250ZXh0LCBmcmFtZVJlY3QoKSk7CisgICAgICAg
IHBhaW50KGNvbnRleHQsIGZyYW1lUmVjdCgpLCBTZWN1cml0eU9yaWdpblBhaW50UG9saWN5OjpB
bnlPcmlnaW4sIHBhaW50Q29udGV4dCk7CiB9CiAKIGJvb2wgTG9jYWxGcmFtZVZpZXc6Ondhc1Nj
cm9sbGVkQnlVc2VyKCkgY29uc3QKQEAgLTQ3MzgsNiArNDc0OSw5IEBAIHZvaWQgTG9jYWxGcmFt
ZVZpZXc6OndpbGxQYWludENvbnRlbnRzKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3Qg
SW50UmVjdCYsCiAgICAgICAgIG1fcGFpbnRCZWhhdmlvci5hZGQoUGFpbnRCZWhhdmlvcjo6U25h
cHNob3R0aW5nKTsKICAgICB9CiAKKyAgICBpZiAoY29udGV4dC5pbnZhbGlkYXRpbmdBY2Nlc3Np
YmlsaXR5T2JqZWN0UmVjdHMoKSkKKyAgICAgICAgbV9wYWludEJlaGF2aW9yLmFkZChQYWludEJl
aGF2aW9yOjpGbGF0dGVuQ29tcG9zaXRpbmdMYXllcnMpOworCiAgICAgcGFpbnRpbmdTdGF0ZS5p
c0ZsYXR0ZW5pbmdQYWludE9mUm9vdEZyYW1lID0gKG1fcGFpbnRCZWhhdmlvciAmIFBhaW50QmVo
YXZpb3I6OkZsYXR0ZW5Db21wb3NpdGluZ0xheWVycykgJiYgIW1fZnJhbWUtPm93bmVyRWxlbWVu
dCgpICYmICFjb250ZXh0LmRldGVjdGluZ0NvbnRlbnRmdWxQYWludCgpOwogICAgIGlmIChwYWlu
dGluZ1N0YXRlLmlzRmxhdHRlbmluZ1BhaW50T2ZSb290RnJhbWUpCiAgICAgICAgIG5vdGlmeVdp
ZGdldHNJbkFsbEZyYW1lcyhXaWxsUGFpbnRGbGF0dGVuZWQpOwpAQCAtNDc2Niw3ICs0NzgwLDcg
QEAgdm9pZCBMb2NhbEZyYW1lVmlldzo6ZGlkUGFpbnRDb250ZW50cyhHcmFwaGljc0NvbnRleHQm
IGNvbnRleHQsIGNvbnN0IEludFJlY3QmIGQKICAgICB9CiB9CiAKLXZvaWQgTG9jYWxGcmFtZVZp
ZXc6OnBhaW50Q29udGVudHMoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBJbnRSZWN0
JiBkaXJ0eVJlY3QsIFNlY3VyaXR5T3JpZ2luUGFpbnRQb2xpY3kgc2VjdXJpdHlPcmlnaW5QYWlu
dFBvbGljeSwgRXZlbnRSZWdpb25Db250ZXh0KiBldmVudFJlZ2lvbkNvbnRleHQpCit2b2lkIExv
Y2FsRnJhbWVWaWV3OjpwYWludENvbnRlbnRzKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29u
c3QgSW50UmVjdCYgZGlydHlSZWN0LCBTZWN1cml0eU9yaWdpblBhaW50UG9saWN5IHNlY3VyaXR5
T3JpZ2luUGFpbnRQb2xpY3ksIFBhaW50Q29udGV4dCogcGFpbnRDb250ZXh0KQogewogI2lmbmRl
ZiBOREVCVUcKICAgICBib29sIGZpbGxXaXRoV2FybmluZ0NvbG9yOwpAQCAtNDgxNCw5ICs0ODI4
LDkgQEAgdm9pZCBMb2NhbEZyYW1lVmlldzo6cGFpbnRDb250ZW50cyhHcmFwaGljc0NvbnRleHQm
IGNvbnRleHQsIGNvbnN0IEludFJlY3QmIGRpcnQKIAogICAgIFJlbmRlck9iamVjdDo6U2V0TGF5
b3V0TmVlZGVkRm9yYmlkZGVuU2NvcGUgZm9yYmlkU2V0TmVlZHNMYXlvdXQocm9vdExheWVyLT5y
ZW5kZXJlcigpKTsKIAotICAgIHJvb3RMYXllci0+cGFpbnQoY29udGV4dCwgZGlydHlSZWN0LCBM
YXlvdXRTaXplKCksIG1fcGFpbnRCZWhhdmlvciwgcmVuZGVyZXIsIHsgfSwgc2VjdXJpdHlPcmln
aW5QYWludFBvbGljeSA9PSBTZWN1cml0eU9yaWdpblBhaW50UG9saWN5OjpBbnlPcmlnaW4gPyBS
ZW5kZXJMYXllcjo6U2VjdXJpdHlPcmlnaW5QYWludFBvbGljeTo6QW55T3JpZ2luIDogUmVuZGVy
TGF5ZXI6OlNlY3VyaXR5T3JpZ2luUGFpbnRQb2xpY3k6OkFjY2Vzc2libGVPcmlnaW5Pbmx5LCBl
dmVudFJlZ2lvbkNvbnRleHQpOworICAgIHJvb3RMYXllci0+cGFpbnQoY29udGV4dCwgZGlydHlS
ZWN0LCBMYXlvdXRTaXplKCksIG1fcGFpbnRCZWhhdmlvciwgcmVuZGVyZXIsIHsgfSwgc2VjdXJp
dHlPcmlnaW5QYWludFBvbGljeSA9PSBTZWN1cml0eU9yaWdpblBhaW50UG9saWN5OjpBbnlPcmln
aW4gPyBSZW5kZXJMYXllcjo6U2VjdXJpdHlPcmlnaW5QYWludFBvbGljeTo6QW55T3JpZ2luIDog
UmVuZGVyTGF5ZXI6OlNlY3VyaXR5T3JpZ2luUGFpbnRQb2xpY3k6OkFjY2Vzc2libGVPcmlnaW5P
bmx5LCBwYWludENvbnRleHQpOwogICAgIGlmIChhdXRvKiBzY3JvbGxhYmxlUm9vdExheWVyID0g
cm9vdExheWVyLT5zY3JvbGxhYmxlQXJlYSgpKSB7Ci0gICAgICAgIGlmIChzY3JvbGxhYmxlUm9v
dExheWVyLT5jb250YWluc0RpcnR5T3ZlcmxheVNjcm9sbGJhcnMoKSAmJiAhZXZlbnRSZWdpb25D
b250ZXh0KQorICAgICAgICBpZiAoc2Nyb2xsYWJsZVJvb3RMYXllci0+Y29udGFpbnNEaXJ0eU92
ZXJsYXlTY3JvbGxiYXJzKCkgJiYgIXBhaW50Q29udGV4dCkKICAgICAgICAgICAgIHNjcm9sbGFi
bGVSb290TGF5ZXItPnBhaW50T3ZlcmxheVNjcm9sbGJhcnMoY29udGV4dCwgZGlydHlSZWN0LCBt
X3BhaW50QmVoYXZpb3IsIHJlbmRlcmVyKTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvTG9jYWxGcmFtZVZpZXcuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTG9jYWxG
cmFtZVZpZXcuaAppbmRleCBiODljODA3Njk5YjAuLjgxMmUxZmE3OTE2OCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGFnZS9Mb2NhbEZyYW1lVmlldy5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvTG9jYWxGcmFtZVZpZXcuaApAQCAtNTMsMTMgKzUzLDEzIEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIGNsYXNzIEFYT2JqZWN0Q2FjaGU7CiBjbGFzcyBDb250YWluZXJOb2RlOwogY2xhc3Mg
RWxlbWVudDsKLWNsYXNzIEV2ZW50UmVnaW9uQ29udGV4dDsKIGNsYXNzIEZsb2F0U2l6ZTsKIGNs
YXNzIEZyYW1lOwogY2xhc3MgR3JhcGhpY3NDb250ZXh0OwogY2xhc3MgSFRNTEZyYW1lT3duZXJF
bGVtZW50OwogY2xhc3MgTG9jYWxGcmFtZTsKIGNsYXNzIFBhZ2U7CitjbGFzcyBQYWludENvbnRl
eHQ7CiBjbGFzcyBSZW5kZXJCb3g7CiBjbGFzcyBSZW5kZXJFbGVtZW50OwogY2xhc3MgUmVuZGVy
RW1iZWRkZWRPYmplY3Q7CkBAIC00MDYsNyArNDA2LDcgQEAgcHVibGljOgogICAgIHZvaWQgYWRk
RW1iZWRkZWRPYmplY3RUb1VwZGF0ZShSZW5kZXJFbWJlZGRlZE9iamVjdCYpOwogICAgIHZvaWQg
cmVtb3ZlRW1iZWRkZWRPYmplY3RUb1VwZGF0ZShSZW5kZXJFbWJlZGRlZE9iamVjdCYpOwogCi0g
ICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBwYWludENvbnRlbnRzKEdyYXBoaWNzQ29udGV4dCYsIGNv
bnN0IEludFJlY3QmIGRpcnR5UmVjdCwgU2VjdXJpdHlPcmlnaW5QYWludFBvbGljeSA9IFNlY3Vy
aXR5T3JpZ2luUGFpbnRQb2xpY3k6OkFueU9yaWdpbiwgRXZlbnRSZWdpb25Db250ZXh0KiA9IG51
bGxwdHIpIGZpbmFsOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcGFpbnRDb250ZW50cyhHcmFw
aGljc0NvbnRleHQmLCBjb25zdCBJbnRSZWN0JiBkaXJ0eVJlY3QsIFNlY3VyaXR5T3JpZ2luUGFp
bnRQb2xpY3kgPSBTZWN1cml0eU9yaWdpblBhaW50UG9saWN5OjpBbnlPcmlnaW4sIFBhaW50Q29u
dGV4dCogPSBudWxscHRyKSBmaW5hbDsKIAogICAgIHN0cnVjdCBQYWludGluZ1N0YXRlIHsKICAg
ICAgICAgT3B0aW9uU2V0PFBhaW50QmVoYXZpb3I+IHBhaW50QmVoYXZpb3I7CkBAIC03MTIsNiAr
NzEyLDcgQEAgcHVibGljOgogCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBpbnZhbGlkYXRlQ29u
dHJvbFRpbnRzKCk7CiAgICAgdm9pZCBpbnZhbGlkYXRlSW1hZ2VzV2l0aEFzeW5jRGVjb2Rlcygp
OworICAgIHZvaWQgdXBkYXRlQWNjZXNzaWJpbGl0eU9iamVjdFJlY3RzKCk7CiAKICAgICB2b2lk
IGludmFsaWRhdGVTY3JvbGxiYXJzRm9yQWxsU2Nyb2xsYWJsZUFyZWFzKCk7CiAKQEAgLTc0MCw3
ICs3NDEsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgc2Nyb2xsQ29udGVudHNGYXN0UGF0aChjb25z
dCBJbnRTaXplJiBzY3JvbGxEZWx0YSwgY29uc3QgSW50UmVjdCYgcmVjdFRvU2Nyb2xsLCBjb25z
dCBJbnRSZWN0JiBjbGlwUmVjdCkgZmluYWw7CiAgICAgdm9pZCBzY3JvbGxDb250ZW50c1Nsb3dQ
YXRoKGNvbnN0IEludFJlY3QmIHVwZGF0ZVJlY3QpIGZpbmFsOwogCi0gICAgdm9pZCB0cmF2ZXJz
ZUZvclBhaW50SW52YWxpZGF0aW9uKE51bGxHcmFwaGljc0NvbnRleHRQYWludEludmFsaWRhdGlv
blJlYXNvbnMpOworICAgIHZvaWQgdHJhdmVyc2VGb3JQYWludEludmFsaWRhdGlvbihOdWxsR3Jh
cGhpY3NDb250ZXh0UGFpbnRJbnZhbGlkYXRpb25SZWFzb25zLCBQYWludENvbnRleHQqID0gbnVs
bHB0cik7CiAgICAgdm9pZCByZXBhaW50U2xvd1JlcGFpbnRPYmplY3RzKCk7CiAKICAgICBib29s
IGlzVmVydGljYWxEb2N1bWVudCgpIGNvbnN0IGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGFnZS9SZW1vdGVGcmFtZVZpZXcuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9SZW1v
dGVGcmFtZVZpZXcuY3BwCmluZGV4IGUwYTYxNGFmMWViMC4uMjZmZjlkZTEzYzE0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1JlbW90ZUZyYW1lVmlldy5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9SZW1vdGVGcmFtZVZpZXcuY3BwCkBAIC05OSw3ICs5OSw3IEBAIEludFJl
Y3QgUmVtb3RlRnJhbWVWaWV3Ojp3aW5kb3dDbGlwUmVjdCgpIGNvbnN0CiAgICAgcmV0dXJuIHsg
fTsKIH0KIAotdm9pZCBSZW1vdGVGcmFtZVZpZXc6OnBhaW50Q29udGVudHMoR3JhcGhpY3NDb250
ZXh0JiwgY29uc3QgSW50UmVjdCYsIFNlY3VyaXR5T3JpZ2luUGFpbnRQb2xpY3ksIEV2ZW50UmVn
aW9uQ29udGV4dCopCit2b2lkIFJlbW90ZUZyYW1lVmlldzo6cGFpbnRDb250ZW50cyhHcmFwaGlj
c0NvbnRleHQmLCBjb25zdCBJbnRSZWN0JiwgU2VjdXJpdHlPcmlnaW5QYWludFBvbGljeSwgUGFp
bnRDb250ZXh0KikKIHsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9SZW1v
dGVGcmFtZVZpZXcuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUmVtb3RlRnJhbWVWaWV3LmgKaW5k
ZXggM2YyZmU5ZjE2ZjA0Li41MWEyYzBjMGVhMzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvUmVtb3RlRnJhbWVWaWV3LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9SZW1vdGVG
cmFtZVZpZXcuaApAQCAtNTIsNyArNTIsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgaW52YWxpZGF0
ZVNjcm9sbGJhclJlY3QoU2Nyb2xsYmFyJiwgY29uc3QgSW50UmVjdCYpIGZpbmFsOwogICAgIEhv
c3RXaW5kb3cqIGhvc3RXaW5kb3coKSBjb25zdCBmaW5hbDsKICAgICBJbnRSZWN0IHdpbmRvd0Ns
aXBSZWN0KCkgY29uc3QgZmluYWw7Ci0gICAgdm9pZCBwYWludENvbnRlbnRzKEdyYXBoaWNzQ29u
dGV4dCYsIGNvbnN0IEludFJlY3QmIGRhbWFnZVJlY3QsIFNlY3VyaXR5T3JpZ2luUGFpbnRQb2xp
Y3ksIEV2ZW50UmVnaW9uQ29udGV4dCopIGZpbmFsOworICAgIHZvaWQgcGFpbnRDb250ZW50cyhH
cmFwaGljc0NvbnRleHQmLCBjb25zdCBJbnRSZWN0JiBkYW1hZ2VSZWN0LCBTZWN1cml0eU9yaWdp
blBhaW50UG9saWN5LCBQYWludENvbnRleHQqKSBmaW5hbDsKICAgICB2b2lkIGFkZGVkT3JSZW1v
dmVkU2Nyb2xsYmFyKCkgZmluYWw7CiAgICAgdm9pZCBkZWxlZ2F0ZWRTY3JvbGxpbmdNb2RlRGlk
Q2hhbmdlKCkgZmluYWw7CiAgICAgdm9pZCB1cGRhdGVTY3JvbGxDb3JuZXIoKSBmaW5hbDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbFZpZXcuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsVmlldy5jcHAKaW5kZXggM2FmMmYxYmY3Yjc0Li5jYmY1
ZmNmYTQyZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbFZpZXcu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbFZpZXcuY3BwCkBAIC0yNiw2
ICsyNiw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiU2Nyb2xsVmlldy5oIgog
CisjaW5jbHVkZSAiQWNjZXNzaWJpbGl0eVBhaW50Q29udGV4dC5oIgogI2luY2x1ZGUgIkZsb2F0
UXVhZC5oIgogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgogI2luY2x1ZGUgIkdyYXBoaWNz
TGF5ZXIuaCIKQEAgLTEyNzYsMTQgKzEyNzcsMTQgQEAgdm9pZCBTY3JvbGxWaWV3OjpwYWludFBh
blNjcm9sbEljb24oR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KQogICAgIGNvbnRleHQuZHJhd0lt
YWdlKHBhblNjcm9sbEljb24sIGljb25HQ1BvaW50KTsKIH0KIAotdm9pZCBTY3JvbGxWaWV3Ojpw
YWludChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEludFJlY3QmIHJlY3QsIFNlY3Vy
aXR5T3JpZ2luUGFpbnRQb2xpY3kgc2VjdXJpdHlPcmlnaW5QYWludFBvbGljeSwgRXZlbnRSZWdp
b25Db250ZXh0KiBldmVudFJlZ2lvbkNvbnRleHQpCit2b2lkIFNjcm9sbFZpZXc6OnBhaW50KEdy
YXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgSW50UmVjdCYgcmVjdCwgU2VjdXJpdHlPcmln
aW5QYWludFBvbGljeSBzZWN1cml0eU9yaWdpblBhaW50UG9saWN5LCBQYWludENvbnRleHQqIHBh
aW50Q29udGV4dCkKIHsKICAgICBpZiAocGxhdGZvcm1XaWRnZXQoKSkgewogICAgICAgICBXaWRn
ZXQ6OnBhaW50KGNvbnRleHQsIHJlY3QpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAg
aWYgKGNvbnRleHQucGFpbnRpbmdEaXNhYmxlZCgpICYmICFjb250ZXh0LnBlcmZvcm1pbmdQYWlu
dEludmFsaWRhdGlvbigpICYmICFldmVudFJlZ2lvbkNvbnRleHQpCisgICAgaWYgKGNvbnRleHQu
cGFpbnRpbmdEaXNhYmxlZCgpICYmICFjb250ZXh0LnBlcmZvcm1pbmdQYWludEludmFsaWRhdGlv
bigpICYmICFwYWludENvbnRleHQpCiAgICAgICAgIHJldHVybjsKIAogICAgIEludFJlY3QgZG9j
dW1lbnREaXJ0eVJlY3QgPSByZWN0OwpAQCAtMTMwNiw3ICsxMzA3LDcgQEAgdm9pZCBTY3JvbGxW
aWV3OjpwYWludChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEludFJlY3QmIHJlY3Qs
IFNlY3VyaXR5T3IKICAgICAgICAgICAgIGNvbnRleHQuY2xpcCh2aXNpYmxlQ29udGVudFJlY3Qo
TGVnYWN5SU9TRG9jdW1lbnRWaXNpYmxlUmVjdCkpOwogICAgICAgICB9CiAKLSAgICAgICAgcGFp
bnRDb250ZW50cyhjb250ZXh0LCBkb2N1bWVudERpcnR5UmVjdCwgc2VjdXJpdHlPcmlnaW5QYWlu
dFBvbGljeSwgZXZlbnRSZWdpb25Db250ZXh0KTsKKyAgICAgICAgcGFpbnRDb250ZW50cyhjb250
ZXh0LCBkb2N1bWVudERpcnR5UmVjdCwgc2VjdXJpdHlPcmlnaW5QYWludFBvbGljeSwgcGFpbnRD
b250ZXh0KTsKICAgICB9CiAKICNpZiBIQVZFKFJVQkJFUl9CQU5ESU5HKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsVmlldy5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vU2Nyb2xsVmlldy5oCmluZGV4IGZhMTA3Y2Y5MTFjMy4uYWE5NjRlYzYxMDg2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxWaWV3LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsVmlldy5oCkBAIC01NywxMCArNTcsMTAgQEAgT0JKQ19D
TEFTUyBXQUtWaWV3OwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIEV2ZW50UmVnaW9u
Q29udGV4dDsKIGNsYXNzIEZsb2F0UXVhZDsKIGNsYXNzIEhvc3RXaW5kb3c7CiBjbGFzcyBMZWdh
Y3lUaWxlQ2FjaGU7CitjbGFzcyBQYWludENvbnRleHQ7CiBjbGFzcyBTY3JvbGxiYXI7CiAKIGVu
dW0gY2xhc3MgRGVsZWdhdGVkU2Nyb2xsaW5nTW9kZSA6IHVpbnQ4X3QgewpAQCAtMzgxLDcgKzM4
MSw3IEBAIHB1YmxpYzoKICAgICB9CiAKICAgICAvLyBXaWRnZXQgb3ZlcnJpZGUuIEhhbmRsZXMg
cGFpbnRpbmcgb2YgdGhlIGNvbnRlbnRzIG9mIHRoZSB2aWV3IGFzIHdlbGwgYXMgdGhlIHNjcm9s
bGJhcnMuCi0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBwYWludChHcmFwaGljc0NvbnRleHQmLCBj
b25zdCBJbnRSZWN0JiwgV2lkZ2V0OjpTZWN1cml0eU9yaWdpblBhaW50UG9saWN5ID0gU2VjdXJp
dHlPcmlnaW5QYWludFBvbGljeTo6QW55T3JpZ2luLCBFdmVudFJlZ2lvbkNvbnRleHQqID0gbnVs
bHB0cikgZmluYWw7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBwYWludChHcmFwaGljc0NvbnRl
eHQmLCBjb25zdCBJbnRSZWN0JiwgV2lkZ2V0OjpTZWN1cml0eU9yaWdpblBhaW50UG9saWN5ID0g
U2VjdXJpdHlPcmlnaW5QYWludFBvbGljeTo6QW55T3JpZ2luLCBQYWludENvbnRleHQqID0gbnVs
bHB0cikgZmluYWw7CiAgICAgdm9pZCBwYWludFNjcm9sbGJhcnMoR3JhcGhpY3NDb250ZXh0Jiwg
Y29uc3QgSW50UmVjdCYpOwogCiAgICAgLy8gV2lkZ2V0IG92ZXJyaWRlcyB0byBlbnN1cmUgdGhh
dCBvdXIgY2hpbGRyZW4ncyB2aXNpYmlsaXR5IHN0YXR1cyBpcyBrZXB0IHVwIHRvIGRhdGUgd2hl
biB3ZSBnZXQgc2hvd24gYW5kIGhpZGRlbi4KQEAgLTQyMyw3ICs0MjMsNyBAQCBwcm90ZWN0ZWQ6
CiAgICAgU2Nyb2xsVmlldygpOwogCiAgICAgdmlydHVhbCB2b2lkIHJlcGFpbnRDb250ZW50UmVj
dGFuZ2xlKGNvbnN0IEludFJlY3QmKTsKLSAgICB2aXJ0dWFsIHZvaWQgcGFpbnRDb250ZW50cyhH
cmFwaGljc0NvbnRleHQmLCBjb25zdCBJbnRSZWN0JiBkYW1hZ2VSZWN0LCBTZWN1cml0eU9yaWdp
blBhaW50UG9saWN5ID0gU2VjdXJpdHlPcmlnaW5QYWludFBvbGljeTo6QW55T3JpZ2luLCBFdmVu
dFJlZ2lvbkNvbnRleHQqID0gbnVsbHB0cikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBwYWludENv
bnRlbnRzKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEludFJlY3QmIGRhbWFnZVJlY3QsIFNlY3Vy
aXR5T3JpZ2luUGFpbnRQb2xpY3kgPSBTZWN1cml0eU9yaWdpblBhaW50UG9saWN5OjpBbnlPcmln
aW4sIFBhaW50Q29udGV4dCogPSBudWxscHRyKSA9IDA7CiAKICAgICB2aXJ0dWFsIHZvaWQgcGFp
bnRPdmVyaGFuZ0FyZWFzKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEludFJlY3QmIGhvcml6b250
YWxPdmVyaGFuZ0FyZWEsIGNvbnN0IEludFJlY3QmIHZlcnRpY2FsT3ZlcmhhbmdBcmVhLCBjb25z
dCBJbnRSZWN0JiBkaXJ0eVJlY3QpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9TY3JvbGxiYXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYmFyLmNw
cAppbmRleCA2ZTNlZGMxOWY3ZjguLjFiOTM5YmQ3YmNmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vU2Nyb2xsYmFyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9TY3JvbGxiYXIuY3BwCkBAIC0xNjEsNyArMTYxLDcgQEAgdm9pZCBTY3JvbGxiYXI6OnVwZGF0
ZVRodW1iUHJvcG9ydGlvbigpCiAgICAgdXBkYXRlVGh1bWIoKTsKIH0KIAotdm9pZCBTY3JvbGxi
YXI6OnBhaW50KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgSW50UmVjdCYgZGFtYWdl
UmVjdCwgV2lkZ2V0OjpTZWN1cml0eU9yaWdpblBhaW50UG9saWN5LCBFdmVudFJlZ2lvbkNvbnRl
eHQqKQordm9pZCBTY3JvbGxiYXI6OnBhaW50KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29u
c3QgSW50UmVjdCYgZGFtYWdlUmVjdCwgV2lkZ2V0OjpTZWN1cml0eU9yaWdpblBhaW50UG9saWN5
LCBQYWludENvbnRleHQqKQogewogICAgIGlmIChjb250ZXh0LmludmFsaWRhdGluZ0NvbnRyb2xU
aW50cygpICYmIHRoZW1lKCkuc3VwcG9ydHNDb250cm9sVGludHMoKSkgewogICAgICAgICBpbnZh
bGlkYXRlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxiYXIu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGJhci5oCmluZGV4IGU3NGFkMzZhNWJk
Ni4uYzQ3YTk0YjMyY2M1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3Jv
bGxiYXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxiYXIuaApAQCAtODUs
NyArODUsNyBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRQcm9wb3J0aW9u
KGludCB2aXNpYmxlU2l6ZSwgaW50IHRvdGFsU2l6ZSk7CiAgICAgdm9pZCBzZXRQcmVzc2VkUG9z
KGludCBwKSB7IG1fcHJlc3NlZFBvcyA9IHA7IH0KIAotICAgIHZvaWQgcGFpbnQoR3JhcGhpY3ND
b250ZXh0JiwgY29uc3QgSW50UmVjdCYgZGFtYWdlUmVjdCwgV2lkZ2V0OjpTZWN1cml0eU9yaWdp
blBhaW50UG9saWN5ID0gU2VjdXJpdHlPcmlnaW5QYWludFBvbGljeTo6QW55T3JpZ2luLCBFdmVu
dFJlZ2lvbkNvbnRleHQqID0gbnVsbHB0cikgb3ZlcnJpZGU7CisgICAgdm9pZCBwYWludChHcmFw
aGljc0NvbnRleHQmLCBjb25zdCBJbnRSZWN0JiBkYW1hZ2VSZWN0LCBXaWRnZXQ6OlNlY3VyaXR5
T3JpZ2luUGFpbnRQb2xpY3kgPSBTZWN1cml0eU9yaWdpblBhaW50UG9saWN5OjpBbnlPcmlnaW4s
IFBhaW50Q29udGV4dCogPSBudWxscHRyKSBvdmVycmlkZTsKIAogICAgIGJvb2wgZW5hYmxlZCgp
IGNvbnN0IHsgcmV0dXJuIG1fZW5hYmxlZDsgfQogICAgIHZpcnR1YWwgdm9pZCBzZXRFbmFibGVk
KGJvb2wpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vV2lkZ2V0LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1dpZGdldC5jcHAKaW5kZXggZDlkOGJhNWQ3NjY4Li5j
ZTlkZjE4OTcyNTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1dpZGdldC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vV2lkZ2V0LmNwcApAQCAtMjg4LDcgKzI4
OCw3IEBAIHZvaWQgV2lkZ2V0OjpzZXRGcmFtZVJlY3QoY29uc3QgSW50UmVjdCYgcmVjdCkKICAg
ICBub3RJbXBsZW1lbnRlZCgpOwogfQogCi12b2lkIFdpZGdldDo6cGFpbnQoR3JhcGhpY3NDb250
ZXh0JiwgY29uc3QgSW50UmVjdCYsIFNlY3VyaXR5T3JpZ2luUGFpbnRQb2xpY3ksIEV2ZW50UmVn
aW9uQ29udGV4dCopCit2b2lkIFdpZGdldDo6cGFpbnQoR3JhcGhpY3NDb250ZXh0JiwgY29uc3Qg
SW50UmVjdCYsIFNlY3VyaXR5T3JpZ2luUGFpbnRQb2xpY3ksIFBhaW50Q29udGV4dCopCiB7CiAg
ICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL1dpZGdldC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vV2lkZ2V0LmgKaW5kZXggODgz
ZjJjNzljNDFiLi5iNjY0MzUwMmNlYTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL1dpZGdldC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1dpZGdldC5oCkBAIC02
MCw3ICs2MCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQ3Vyc29yOwogY2xhc3Mg
RXZlbnQ7Ci1jbGFzcyBFdmVudFJlZ2lvbkNvbnRleHQ7CitjbGFzcyBQYWludENvbnRleHQ7CiBj
bGFzcyBGb250Q2FzY2FkZTsKIGNsYXNzIEdyYXBoaWNzQ29udGV4dDsKIGNsYXNzIExvY2FsRnJh
bWVWaWV3OwpAQCAtMTEwLDcgKzExMCw3IEBAIHB1YmxpYzoKIAogICAgIGVudW0gY2xhc3MgU2Vj
dXJpdHlPcmlnaW5QYWludFBvbGljeSB7IEFueU9yaWdpbiwgQWNjZXNzaWJsZU9yaWdpbk9ubHkg
fTsKIAotICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgdm9pZCBwYWludChHcmFwaGljc0NvbnRl
eHQmLCBjb25zdCBJbnRSZWN0JiwgU2VjdXJpdHlPcmlnaW5QYWludFBvbGljeSA9IFNlY3VyaXR5
T3JpZ2luUGFpbnRQb2xpY3k6OkFueU9yaWdpbiwgRXZlbnRSZWdpb25Db250ZXh0KiA9IG51bGxw
dHIpOworICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgdm9pZCBwYWludChHcmFwaGljc0NvbnRl
eHQmLCBjb25zdCBJbnRSZWN0JiwgU2VjdXJpdHlPcmlnaW5QYWludFBvbGljeSA9IFNlY3VyaXR5
T3JpZ2luUGFpbnRQb2xpY3k6OkFueU9yaWdpbiwgUGFpbnRDb250ZXh0KiA9IG51bGxwdHIpOwog
ICAgIHZvaWQgaW52YWxpZGF0ZSgpIHsgaW52YWxpZGF0ZVJlY3QoYm91bmRzUmVjdCgpKTsgfQog
ICAgIHZpcnR1YWwgdm9pZCBpbnZhbGlkYXRlUmVjdChjb25zdCBJbnRSZWN0JikgPSAwOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRl
eHQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5o
CmluZGV4IDNhOTgwN2YyMzQwMC4uY2U5NmVjMWE4ZWJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaApAQCAtODQsNiArODQsNyBA
QCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIHBlcmZvcm1pbmdQYWludEludmFsaWRhdGlvbigp
IGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCBib29sIGludmFsaWRhdGluZ0Nv
bnRyb2xUaW50cygpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCBib29sIGlu
dmFsaWRhdGluZ0ltYWdlc1dpdGhBc3luY0RlY29kZXMoKSBjb25zdCB7IHJldHVybiBmYWxzZTsg
fQorICAgIHZpcnR1YWwgYm9vbCBpbnZhbGlkYXRpbmdBY2Nlc3NpYmlsaXR5T2JqZWN0UmVjdHMo
KSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwgYm9vbCBkZXRlY3RpbmdDb250
ZW50ZnVsUGFpbnQoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogCiAgICAgLy8gQ29udGV4dCBT
dGF0ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTnVsbEdy
YXBoaWNzQ29udGV4dC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTnVsbEdy
YXBoaWNzQ29udGV4dC5oCmluZGV4IGVmMWI3OTI1YTcyOC4uODk2MjIxNzQ3YTFhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9OdWxsR3JhcGhpY3NDb250ZXh0
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTnVsbEdyYXBoaWNzQ29u
dGV4dC5oCkBAIC0zMyw3ICszMyw4IEBAIGVudW0gY2xhc3MgTnVsbEdyYXBoaWNzQ29udGV4dFBh
aW50SW52YWxpZGF0aW9uUmVhc29ucyA6IHVpbnQ4X3QgewogICAgIE5vbmUsCiAgICAgSW52YWxp
ZGF0aW5nQ29udHJvbFRpbnRzLAogICAgIEludmFsaWRhdGluZ0ltYWdlc1dpdGhBc3luY0RlY29k
ZXMsCi0gICAgRGV0ZWN0aW5nQ29udGVudGZ1bFBhaW50CisgICAgRGV0ZWN0aW5nQ29udGVudGZ1
bFBhaW50LAorICAgIEludmFsaWRhdGluZ0FjY2Vzc2liaWxpdHlPYmplY3RSZWN0cwogfTsKIAog
Y2xhc3MgTnVsbEdyYXBoaWNzQ29udGV4dCA6IHB1YmxpYyBHcmFwaGljc0NvbnRleHQgewpAQCAt
NTYsNiArNTcsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgcGVyZm9ybWluZ1BhaW50SW52YWxpZGF0
aW9uKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9wYWludEludmFsaWRhdGlvblJlYXNvbnMgIT0g
UGFpbnRJbnZhbGlkYXRpb25SZWFzb25zOjpOb25lOyB9CiAgICAgYm9vbCBpbnZhbGlkYXRpbmdD
b250cm9sVGludHMoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX3BhaW50SW52YWxpZGF0aW9uUmVh
c29ucyA9PSBQYWludEludmFsaWRhdGlvblJlYXNvbnM6OkludmFsaWRhdGluZ0NvbnRyb2xUaW50
czsgfQogICAgIGJvb2wgaW52YWxpZGF0aW5nSW1hZ2VzV2l0aEFzeW5jRGVjb2RlcygpIGNvbnN0
IGZpbmFsIHsgcmV0dXJuIG1fcGFpbnRJbnZhbGlkYXRpb25SZWFzb25zID09IFBhaW50SW52YWxp
ZGF0aW9uUmVhc29uczo6SW52YWxpZGF0aW5nSW1hZ2VzV2l0aEFzeW5jRGVjb2RlczsgfQorICAg
IGJvb2wgaW52YWxpZGF0aW5nQWNjZXNzaWJpbGl0eU9iamVjdFJlY3RzKCkgY29uc3QgZmluYWwg
eyByZXR1cm4gbV9wYWludEludmFsaWRhdGlvblJlYXNvbnMgPT0gUGFpbnRJbnZhbGlkYXRpb25S
ZWFzb25zOjpJbnZhbGlkYXRpbmdBY2Nlc3NpYmlsaXR5T2JqZWN0UmVjdHM7IH0KICAgICBib29s
IGRldGVjdGluZ0NvbnRlbnRmdWxQYWludCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fcGFpbnRJ
bnZhbGlkYXRpb25SZWFzb25zID09IFBhaW50SW52YWxpZGF0aW9uUmVhc29uczo6RGV0ZWN0aW5n
Q29udGVudGZ1bFBhaW50OyB9CiAKICAgICB2b2lkIGRpZFVwZGF0ZVN0YXRlKEdyYXBoaWNzQ29u
dGV4dFN0YXRlJikgZmluYWwgeyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9pb3MvV2lkZ2V0SU9TLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dpZGdldElP
Uy5tbQppbmRleCBlOTY0OTRiYzkxODkuLjkxODE2NDRjNjZmOSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dpZGdldElPUy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9pb3MvV2lkZ2V0SU9TLm1tCkBAIC0xNDYsNyArMTQ2LDcgQEAgTlNWaWV3KiBXaWRn
ZXQ6OmdldE91dGVyVmlldygpIGNvbnN0CiAgICAgcmV0dXJuIHZpZXc7CiB9CiAKLXZvaWQgV2lk
Z2V0OjpwYWludChHcmFwaGljc0NvbnRleHQmIHAsIGNvbnN0IEludFJlY3QmIHIsIFNlY3VyaXR5
T3JpZ2luUGFpbnRQb2xpY3ksIEV2ZW50UmVnaW9uQ29udGV4dCopCit2b2lkIFdpZGdldDo6cGFp
bnQoR3JhcGhpY3NDb250ZXh0JiBwLCBjb25zdCBJbnRSZWN0JiByLCBTZWN1cml0eU9yaWdpblBh
aW50UG9saWN5LCBQYWludENvbnRleHQqKQogewogICAgIGlmIChwLnBhaW50aW5nRGlzYWJsZWQo
KSkKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWFjL1dpZGdldE1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XaWRnZXRNYWMu
bW0KaW5kZXggODJlN2ViMWYxODk5Li4xYzczNTE4YWM2ZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21hYy9XaWRnZXRNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWFjL1dpZGdldE1hYy5tbQpAQCAtMTg2LDcgKzE4Niw3IEBAIE5TVmlldyAqV2lkZ2V0
OjpnZXRPdXRlclZpZXcoKSBjb25zdAogICAgIHJldHVybiB2aWV3OwogfQogCi12b2lkIFdpZGdl
dDo6cGFpbnQoR3JhcGhpY3NDb250ZXh0JiBwLCBjb25zdCBJbnRSZWN0JiByLCBTZWN1cml0eU9y
aWdpblBhaW50UG9saWN5LCBFdmVudFJlZ2lvbkNvbnRleHQqKQordm9pZCBXaWRnZXQ6OnBhaW50
KEdyYXBoaWNzQ29udGV4dCYgcCwgY29uc3QgSW50UmVjdCYgciwgU2VjdXJpdHlPcmlnaW5QYWlu
dFBvbGljeSwgUGFpbnRDb250ZXh0KikKIHsKICAgICBpZiAocC5wYWludGluZ0Rpc2FibGVkKCkp
CiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9B
Y2Nlc3NpYmlsaXR5UGFpbnRDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9B
Y2Nlc3NpYmlsaXR5UGFpbnRDb250ZXh0LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAuLjI1ZDFiNWEyN2NhOQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9BY2Nlc3NpYmlsaXR5UGFpbnRDb250ZXh0LmNwcApAQCAtMCwwICsxLDQy
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkFjY2Vzc2li
aWxpdHlQYWludENvbnRleHQuaCIKKworI2luY2x1ZGUgIlJlbmRlckJveC5oIgorCituYW1lc3Bh
Y2UgV2ViQ29yZSB7CisKK0FjY2Vzc2liaWxpdHlQYWludENvbnRleHQ6On5BY2Nlc3NpYmlsaXR5
UGFpbnRDb250ZXh0KCkgPSBkZWZhdWx0OworCit2b2lkIEFjY2Vzc2liaWxpdHlQYWludENvbnRl
eHQ6OnRha2VCb3VuZHMoY29uc3QgUmVuZGVyQm94JiByZW5kZXJCb3gsIEZsb2F0UmVjdCBwYWlu
dFJlY3QpCit7CisgICAgLy8gRklYTUU6IFVzZSBgcGFpbnRSZWN0YCB0byBxdWV1ZSBhIGZyYW1l
IHVwZGF0ZSBmb3IgdGhlIEFYIG9iamVjdCBhc3NvY2lhdGVkIHdpdGggYHJlbmRlckJveGAuCisg
ICAgVU5VU0VEX1BBUkFNKHJlbmRlckJveCk7CisgICAgVU5VU0VEX1BBUkFNKHBhaW50UmVjdCk7
Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9BY2Nlc3NpYmlsaXR5UGFpbnRDb250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvQWNjZXNzaWJpbGl0eVBhaW50Q29udGV4dC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMC4uNGFjOWJiZjg3M2VjCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0FjY2Vzc2liaWxpdHlQYWludENvbnRleHQuaApAQCAtMCww
ICsxLDY5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIzIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
KyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJGbG9hdFJl
Y3QuaCIKKyNpbmNsdWRlICJQYWludENvbnRleHQuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgewor
CitjbGFzcyBSZW5kZXJCb3g7CisKK2NsYXNzIEFjY2Vzc2liaWxpdHlQYWludENvbnRleHQgOiBw
dWJsaWMgUGFpbnRDb250ZXh0IHsKK3B1YmxpYzoKKyAgICBBY2Nlc3NpYmlsaXR5UGFpbnRDb250
ZXh0KCkgPSBkZWZhdWx0OworICAgIHZpcnR1YWwgfkFjY2Vzc2liaWxpdHlQYWludENvbnRleHQo
KTsKKworICAgIGJvb2wgaXNBY2Nlc3NpYmlsaXR5UGFpbnRDb250ZXh0KCkgY29uc3QgZmluYWwg
eyByZXR1cm4gdHJ1ZTsgfQorCisgICAgdm9pZCB0YWtlQm91bmRzKGNvbnN0IFJlbmRlckJveCYs
IEZsb2F0UmVjdCAvKiBwYWludFJlY3QgKi8pOworCitwcml2YXRlOgorICAgIC8vIE1hcHMgdGhl
IGdpdmVuIHJlY3QgdXNpbmcgdGhlIGN1cnJlbnQgdHJhbnNmb3JtIGFuZCBjbGlwIHN0YWNrLgor
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIFJlY3RUPgorICAgIEZsb2F0UmVjdCBtYXBSZWN0KFJlY3RU
JiYgcmVjdCkKKyAgICB7CisgICAgICAgIGJvb2wgaGFzVHJhbnNmb3JtID0gbV90cmFuc2Zvcm1T
dGFjay5zaXplKCk7CisgICAgICAgIGJvb2wgaGFzQ2xpcCA9IG1fY2xpcFN0YWNrLnNpemUoKTsK
KyAgICAgICAgaWYgKCFoYXNUcmFuc2Zvcm0gJiYgIWhhc0NsaXApCisgICAgICAgICAgICByZXR1
cm4gcmVjdDsKKworICAgICAgICBGbG9hdFJlY3QgbWFwcGVkUmVjdCA9IHJlY3Q7CisgICAgICAg
IGlmIChoYXNUcmFuc2Zvcm0pCisgICAgICAgICAgICBtYXBwZWRSZWN0ID0gbV90cmFuc2Zvcm1T
dGFjay5sYXN0KCkubWFwUmVjdChtYXBwZWRSZWN0KTsKKyAgICAgICAgaWYgKGhhc0NsaXApCisg
ICAgICAgICAgICBtYXBwZWRSZWN0LmludGVyc2VjdChtX2NsaXBTdGFjay5sYXN0KCkpOworCisg
ICAgICAgIHJldHVybiBtYXBwZWRSZWN0OworICAgIH0KKworfTsgLy8gY2xhc3MgQWNjZXNzaWJp
bGl0eVBhaW50Q29udGV4dAorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKK1NQRUNJQUxJWkVf
VFlQRV9UUkFJVFNfQkVHSU4oV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVBhaW50Q29udGV4dCkKKyAg
ICBzdGF0aWMgYm9vbCBpc1R5cGUoY29uc3QgV2ViQ29yZTo6UGFpbnRDb250ZXh0JiBwYWludENv
bnRleHQpIHsgcmV0dXJuIHBhaW50Q29udGV4dC5pc0FjY2Vzc2liaWxpdHlQYWludENvbnRleHQo
KTsgfQorU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19FTkQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL0V2ZW50UmVnaW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9FdmVudFJlZ2lvbi5jcHAKaW5kZXggOTA0NGYxNTRlYWJiLi43YTdjN2E5NjlhOGYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9FdmVudFJlZ2lvbi5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0V2ZW50UmVnaW9uLmNwcApAQCAtNDMsNDggKzQzLDcgQEAg
RXZlbnRSZWdpb25Db250ZXh0OjpFdmVudFJlZ2lvbkNvbnRleHQoRXZlbnRSZWdpb24mIGV2ZW50
UmVnaW9uKQogewogfQogCi12b2lkIEV2ZW50UmVnaW9uQ29udGV4dDo6cHVzaFRyYW5zZm9ybShj
b25zdCBBZmZpbmVUcmFuc2Zvcm0mIHRyYW5zZm9ybSkKLXsKLSAgICBpZiAobV90cmFuc2Zvcm1T
dGFjay5pc0VtcHR5KCkpCi0gICAgICAgIG1fdHJhbnNmb3JtU3RhY2suYXBwZW5kKHRyYW5zZm9y
bSk7Ci0gICAgZWxzZQotICAgICAgICBtX3RyYW5zZm9ybVN0YWNrLmFwcGVuZChtX3RyYW5zZm9y
bVN0YWNrLmxhc3QoKSAqIHRyYW5zZm9ybSk7Ci19Ci0KLXZvaWQgRXZlbnRSZWdpb25Db250ZXh0
Ojpwb3BUcmFuc2Zvcm0oKQotewotICAgIGlmIChtX3RyYW5zZm9ybVN0YWNrLmlzRW1wdHkoKSkg
ewotICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0K
LSAgICBtX3RyYW5zZm9ybVN0YWNrLnJlbW92ZUxhc3QoKTsKLX0KLQotdm9pZCBFdmVudFJlZ2lv
bkNvbnRleHQ6OnB1c2hDbGlwKGNvbnN0IEludFJlY3QmIGNsaXBSZWN0KQotewotICAgIGF1dG8g
dHJhbnNmb3JtZWRDbGlwID0gbV90cmFuc2Zvcm1TdGFjay5pc0VtcHR5KCkgPyBjbGlwUmVjdCA6
IG1fdHJhbnNmb3JtU3RhY2subGFzdCgpLm1hcFJlY3QoY2xpcFJlY3QpOwotCi0gICAgaWYgKG1f
Y2xpcFN0YWNrLmlzRW1wdHkoKSkKLSAgICAgICAgbV9jbGlwU3RhY2suYXBwZW5kKHRyYW5zZm9y
bWVkQ2xpcCk7Ci0gICAgZWxzZQotICAgICAgICBtX2NsaXBTdGFjay5hcHBlbmQoaW50ZXJzZWN0
aW9uKG1fY2xpcFN0YWNrLmxhc3QoKSwgdHJhbnNmb3JtZWRDbGlwKSk7Ci19Ci0KLXZvaWQgRXZl
bnRSZWdpb25Db250ZXh0OjpwdXNoQ2xpcChjb25zdCBQYXRoJiBwYXRoLCBXaW5kUnVsZSkKLXsK
LSAgICAvLyBGSVhNRTogQXBwcm94aW1hdGUgcGF0aHMgYmV0dGVyLgotICAgIGF1dG8gcGF0aEJv
dW5kcyA9IGVuY2xvc2luZ0ludFJlY3QocGF0aC5ib3VuZGluZ1JlY3QoKSk7Ci0gICAgcHVzaENs
aXAocGF0aEJvdW5kcyk7Ci19Ci0KLXZvaWQgRXZlbnRSZWdpb25Db250ZXh0Ojpwb3BDbGlwKCkK
LXsKLSAgICBpZiAobV9jbGlwU3RhY2suaXNFbXB0eSgpKSB7Ci0gICAgICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIG1fY2xpcFN0YWNrLnJlbW92
ZUxhc3QoKTsKLX0KK0V2ZW50UmVnaW9uQ29udGV4dDo6fkV2ZW50UmVnaW9uQ29udGV4dCgpID0g
ZGVmYXVsdDsKIAogdm9pZCBFdmVudFJlZ2lvbkNvbnRleHQ6OnVuaXRlKGNvbnN0IFJlZ2lvbiYg
cmVnaW9uLCBSZW5kZXJPYmplY3QmIHJlbmRlcmVyLCBjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUs
IGJvb2wgb3ZlcnJpZGVVc2VyTW9kaWZ5SXNFZGl0YWJsZSkKIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9FdmVudFJlZ2lvbi5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL0V2ZW50UmVnaW9uLmgKaW5kZXggNGZkNGIxZWE1YmJhLi42ZmJlODQ2MjhiZjMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9FdmVudFJlZ2lvbi5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9FdmVudFJlZ2lvbi5oCkBAIC0yOSw2ICsyOSw3IEBACiAjaW5j
bHVkZSAiSW50UmVjdEhhc2guaCIKICNpbmNsdWRlICJJbnRlcmFjdGlvblJlZ2lvbi5oIgogI2lu
Y2x1ZGUgIk5vZGUuaCIKKyNpbmNsdWRlICJQYWludENvbnRleHQuaCIKICNpbmNsdWRlICJSZWdp
b24uaCIKICNpbmNsdWRlICJSZW5kZXJTdHlsZUNvbnN0YW50cy5oIgogI2luY2x1ZGUgIlRvdWNo
QWN0aW9uLmgiCkBAIC00NCwxOCArNDUsMTIgQEAgY2xhc3MgUGF0aDsKIGNsYXNzIFJlbmRlck9i
amVjdDsKIGNsYXNzIFJlbmRlclN0eWxlOwogCi1lbnVtIGNsYXNzIFdpbmRSdWxlIDogYm9vbDsK
LQotY2xhc3MgRXZlbnRSZWdpb25Db250ZXh0IHsKK2NsYXNzIEV2ZW50UmVnaW9uQ29udGV4dCA6
IHB1YmxpYyBQYWludENvbnRleHQgewogcHVibGljOgogICAgIGV4cGxpY2l0IEV2ZW50UmVnaW9u
Q29udGV4dChFdmVudFJlZ2lvbiYpOworICAgIHZpcnR1YWwgfkV2ZW50UmVnaW9uQ29udGV4dCgp
OwogCi0gICAgdm9pZCBwdXNoVHJhbnNmb3JtKGNvbnN0IEFmZmluZVRyYW5zZm9ybSYpOwotICAg
IHZvaWQgcG9wVHJhbnNmb3JtKCk7Ci0KLSAgICB2b2lkIHB1c2hDbGlwKGNvbnN0IEludFJlY3Qm
KTsKLSAgICB2b2lkIHB1c2hDbGlwKGNvbnN0IFBhdGgmLCBXaW5kUnVsZSk7Ci0gICAgdm9pZCBw
b3BDbGlwKCk7CisgICAgYm9vbCBpc0V2ZW50UmVnaW9uUGFpbnRDb250ZXh0KCkgY29uc3QgZmlu
YWwgeyByZXR1cm4gdHJ1ZTsgfQogCiAgICAgdm9pZCB1bml0ZShjb25zdCBSZWdpb24mLCBSZW5k
ZXJPYmplY3QmLCBjb25zdCBSZW5kZXJTdHlsZSYsIGJvb2wgb3ZlcnJpZGVVc2VyTW9kaWZ5SXNF
ZGl0YWJsZSA9IGZhbHNlKTsKICAgICBib29sIGNvbnRhaW5zKGNvbnN0IEludFJlY3QmKSBjb25z
dDsKQEAgLTY4LDggKzYzLDYgQEAgcHVibGljOgogCiBwcml2YXRlOgogICAgIEV2ZW50UmVnaW9u
JiBtX2V2ZW50UmVnaW9uOwotICAgIFZlY3RvcjxBZmZpbmVUcmFuc2Zvcm0+IG1fdHJhbnNmb3Jt
U3RhY2s7Ci0gICAgVmVjdG9yPEludFJlY3Q+IG1fY2xpcFN0YWNrOwogCiAjaWYgRU5BQkxFKElO
VEVSQUNUSU9OX1JFR0lPTlNfSU5fRVZFTlRfUkVHSU9OKQogICAgIFZlY3RvcjxJbnRlcmFjdGlv
blJlZ2lvbj4gbV9pbnRlcmFjdGlvblJlZ2lvbnM7CkBAIC03OSw0NSArNzIsNiBAQCBwcml2YXRl
OgogI2VuZGlmCiB9OwogCi1jbGFzcyBFdmVudFJlZ2lvbkNvbnRleHRTdGF0ZVNhdmVyIHsKLXB1
YmxpYzoKLSAgICBFdmVudFJlZ2lvbkNvbnRleHRTdGF0ZVNhdmVyKEV2ZW50UmVnaW9uQ29udGV4
dCogY29udGV4dCkKLSAgICAgICAgOiBtX2NvbnRleHQoY29udGV4dCkKLSAgICB7Ci0gICAgfQot
ICAgIAotICAgIH5FdmVudFJlZ2lvbkNvbnRleHRTdGF0ZVNhdmVyKCkKLSAgICB7Ci0gICAgICAg
IGlmICghbV9jb250ZXh0KQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIGlmIChtX3B1
c2hlZENsaXApCi0gICAgICAgICAgICBtX2NvbnRleHQtPnBvcENsaXAoKTsKLSAgICB9Ci0gICAg
Ci0gICAgdm9pZCBwdXNoQ2xpcChjb25zdCBJbnRSZWN0JiBjbGlwUmVjdCkKLSAgICB7Ci0gICAg
ICAgIEFTU0VSVCghbV9wdXNoZWRDbGlwKTsKLSAgICAgICAgaWYgKG1fY29udGV4dCkKLSAgICAg
ICAgICAgIG1fY29udGV4dC0+cHVzaENsaXAoY2xpcFJlY3QpOwotICAgICAgICBtX3B1c2hlZENs
aXAgPSB0cnVlOwotICAgIH0KLQotICAgIHZvaWQgcHVzaENsaXAoY29uc3QgUGF0aCYgcGF0aCwg
V2luZFJ1bGUgd2luZFJ1bGUpCi0gICAgewotICAgICAgICBBU1NFUlQoIW1fcHVzaGVkQ2xpcCk7
Ci0gICAgICAgIGlmIChtX2NvbnRleHQpCi0gICAgICAgICAgICBtX2NvbnRleHQtPnB1c2hDbGlw
KHBhdGgsIHdpbmRSdWxlKTsKLSAgICAgICAgbV9wdXNoZWRDbGlwID0gdHJ1ZTsKLSAgICB9Ci0K
LSAgICBFdmVudFJlZ2lvbkNvbnRleHQqIGNvbnRleHQoKSBjb25zdCB7IHJldHVybiBtX2NvbnRl
eHQ7IH0KLQotcHJpdmF0ZToKLSAgICBFdmVudFJlZ2lvbkNvbnRleHQqIG1fY29udGV4dDsKLSAg
ICBib29sIG1fcHVzaGVkQ2xpcCB7IGZhbHNlIH07Ci19OwotCiBjbGFzcyBFdmVudFJlZ2lvbiB7
CiBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgRXZlbnRSZWdpb24oKTsKQEAgLTIxMywzICsx
NjcsNyBAQCBpbmxpbmUgdm9pZCBFdmVudFJlZ2lvbjo6ZW5zdXJlRWRpdGFibGVSZWdpb24oKQog
I2VuZGlmCiAKIH0KKworU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19CRUdJTihXZWJDb3JlOjpFdmVu
dFJlZ2lvbkNvbnRleHQpCisgICAgc3RhdGljIGJvb2wgaXNUeXBlKGNvbnN0IFdlYkNvcmU6OlBh
aW50Q29udGV4dCYgcGFpbnRDb250ZXh0KSB7IHJldHVybiBwYWludENvbnRleHQuaXNFdmVudFJl
Z2lvblBhaW50Q29udGV4dCgpOyB9CitTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0VORCgpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvTGVnYWN5SW5saW5lRWxlbWVudEJveC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvTGVnYWN5SW5saW5lRWxlbWVudEJveC5jcHAK
aW5kZXggYjY2MTM2ZDZlODBlLi4zMDMyYjQ3MGRhZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9MZWdhY3lJbmxpbmVFbGVtZW50Qm94LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvTGVnYWN5SW5saW5lRWxlbWVudEJveC5jcHAKQEAgLTcxLDcgKzcxLDcg
QEAgdm9pZCBMZWdhY3lJbmxpbmVFbGVtZW50Qm94OjpwYWludChQYWludEluZm8mIHBhaW50SW5m
bywgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW4KICAgICBpZiAoIXBhaW50SW5mby5zaG91bGRQYWlu
dFdpdGhpblJvb3QocmVuZGVyZXIoKSkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGlmIChwYWlu
dEluZm8ucGhhc2UgIT0gUGFpbnRQaGFzZTo6Rm9yZWdyb3VuZCAmJiBwYWludEluZm8ucGhhc2Ug
IT0gUGFpbnRQaGFzZTo6U2VsZWN0aW9uICYmIHBhaW50SW5mby5waGFzZSAhPSBQYWludFBoYXNl
OjpFdmVudFJlZ2lvbikKKyAgICBpZiAocGFpbnRJbmZvLnBoYXNlICE9IFBhaW50UGhhc2U6OkZv
cmVncm91bmQgJiYgcGFpbnRJbmZvLnBoYXNlICE9IFBhaW50UGhhc2U6OlNlbGVjdGlvbiAmJiBw
YWludEluZm8ucGhhc2UgIT0gUGFpbnRQaGFzZTo6RXZlbnRSZWdpb24gJiYgcGFpbnRJbmZvLnBo
YXNlICE9IFBhaW50UGhhc2U6OkFjY2Vzc2liaWxpdHkpCiAgICAgICAgIHJldHVybjsKIAogICAg
IExheW91dFBvaW50IGNoaWxkUG9pbnQgPSBwYWludE9mZnNldDsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9MZWdhY3lJbmxpbmVGbG93Qm94LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9MZWdhY3lJbmxpbmVGbG93Qm94LmNwcAppbmRleCA5YzQ4MmQ3ZTkwYjMu
LjU2NjU3M2FkNWI0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0xlZ2Fj
eUlubGluZUZsb3dCb3guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9MZWdhY3lJ
bmxpbmVGbG93Qm94LmNwcApAQCAtMTEwNCw3ICsxMTA0LDcgQEAgYm9vbCBMZWdhY3lJbmxpbmVG
bG93Qm94Ojpub2RlQXRQb2ludChjb25zdCBIaXRUZXN0UmVxdWVzdCYgcmVxdWVzdCwgSGl0VGVz
dFJlc3UKIAogdm9pZCBMZWdhY3lJbmxpbmVGbG93Qm94OjpwYWludChQYWludEluZm8mIHBhaW50
SW5mbywgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50T2Zmc2V0LCBMYXlvdXRVbml0IGxpbmVUb3As
IExheW91dFVuaXQgbGluZUJvdHRvbSkKIHsKLSAgICBpZiAocGFpbnRJbmZvLnBoYXNlICE9IFBh
aW50UGhhc2U6OkZvcmVncm91bmQgJiYgcGFpbnRJbmZvLnBoYXNlICE9IFBhaW50UGhhc2U6OlNl
bGVjdGlvbiAmJiBwYWludEluZm8ucGhhc2UgIT0gUGFpbnRQaGFzZTo6T3V0bGluZSAmJiBwYWlu
dEluZm8ucGhhc2UgIT0gUGFpbnRQaGFzZTo6U2VsZk91dGxpbmUgJiYgcGFpbnRJbmZvLnBoYXNl
ICE9IFBhaW50UGhhc2U6OkNoaWxkT3V0bGluZXMgJiYgcGFpbnRJbmZvLnBoYXNlICE9IFBhaW50
UGhhc2U6OlRleHRDbGlwICYmIHBhaW50SW5mby5waGFzZSAhPSBQYWludFBoYXNlOjpNYXNrICYm
IHBhaW50SW5mby5waGFzZSAhPSBQYWludFBoYXNlOjpFdmVudFJlZ2lvbikKKyAgICBpZiAocGFp
bnRJbmZvLnBoYXNlICE9IFBhaW50UGhhc2U6OkZvcmVncm91bmQgJiYgcGFpbnRJbmZvLnBoYXNl
ICE9IFBhaW50UGhhc2U6OlNlbGVjdGlvbiAmJiBwYWludEluZm8ucGhhc2UgIT0gUGFpbnRQaGFz
ZTo6T3V0bGluZSAmJiBwYWludEluZm8ucGhhc2UgIT0gUGFpbnRQaGFzZTo6U2VsZk91dGxpbmUg
JiYgcGFpbnRJbmZvLnBoYXNlICE9IFBhaW50UGhhc2U6OkNoaWxkT3V0bGluZXMgJiYgcGFpbnRJ
bmZvLnBoYXNlICE9IFBhaW50UGhhc2U6OlRleHRDbGlwICYmIHBhaW50SW5mby5waGFzZSAhPSBQ
YWludFBoYXNlOjpNYXNrICYmIHBhaW50SW5mby5waGFzZSAhPSBQYWludFBoYXNlOjpFdmVudFJl
Z2lvbiAmJiBwYWludEluZm8ucGhhc2UgIT0gUGFpbnRQaGFzZTo6QWNjZXNzaWJpbGl0eSkKICAg
ICAgICAgcmV0dXJuOwogCiAgICAgTGF5b3V0UmVjdCBvdmVyZmxvd1JlY3QodmlzdWFsT3ZlcmZs
b3dSZWN0KGxpbmVUb3AsIGxpbmVCb3R0b20pKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9QYWludENvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Bh
aW50Q29udGV4dC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi40
NTIxMTJmNjgxN2MKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UGFpbnRDb250ZXh0LmNwcApAQCAtMCwwICsxLDc0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDIzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUg
ImNvbmZpZy5oIgorI2luY2x1ZGUgIlBhaW50Q29udGV4dC5oIgorCituYW1lc3BhY2UgV2ViQ29y
ZSB7CisKK3ZvaWQgUGFpbnRDb250ZXh0OjpwdXNoVHJhbnNmb3JtKGNvbnN0IEFmZmluZVRyYW5z
Zm9ybSYgdHJhbnNmb3JtKQoreworICAgIGlmIChtX3RyYW5zZm9ybVN0YWNrLmlzRW1wdHkoKSkK
KyAgICAgICAgbV90cmFuc2Zvcm1TdGFjay5hcHBlbmQodHJhbnNmb3JtKTsKKyAgICBlbHNlCisg
ICAgICAgIG1fdHJhbnNmb3JtU3RhY2suYXBwZW5kKG1fdHJhbnNmb3JtU3RhY2subGFzdCgpICog
dHJhbnNmb3JtKTsKK30KKwordm9pZCBQYWludENvbnRleHQ6OnBvcFRyYW5zZm9ybSgpCit7Cisg
ICAgaWYgKG1fdHJhbnNmb3JtU3RhY2suaXNFbXB0eSgpKSB7CisgICAgICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIG1fdHJhbnNmb3JtU3RhY2su
cmVtb3ZlTGFzdCgpOworfQorCit2b2lkIFBhaW50Q29udGV4dDo6cHVzaENsaXAoY29uc3QgSW50
UmVjdCYgY2xpcFJlY3QpCit7CisgICAgYXV0byB0cmFuc2Zvcm1lZENsaXAgPSBtX3RyYW5zZm9y
bVN0YWNrLmlzRW1wdHkoKSA/IGNsaXBSZWN0IDogbV90cmFuc2Zvcm1TdGFjay5sYXN0KCkubWFw
UmVjdChjbGlwUmVjdCk7CisKKyAgICBpZiAobV9jbGlwU3RhY2suaXNFbXB0eSgpKQorICAgICAg
ICBtX2NsaXBTdGFjay5hcHBlbmQodHJhbnNmb3JtZWRDbGlwKTsKKyAgICBlbHNlCisgICAgICAg
IG1fY2xpcFN0YWNrLmFwcGVuZChpbnRlcnNlY3Rpb24obV9jbGlwU3RhY2subGFzdCgpLCB0cmFu
c2Zvcm1lZENsaXApKTsKK30KKwordm9pZCBQYWludENvbnRleHQ6OnB1c2hDbGlwKGNvbnN0IFBh
dGgmIHBhdGgpCit7CisgICAgLy8gRklYTUU6IEFwcHJveGltYXRlIHBhdGhzIGJldHRlci4KKyAg
ICBhdXRvIHBhdGhCb3VuZHMgPSBlbmNsb3NpbmdJbnRSZWN0KHBhdGguYm91bmRpbmdSZWN0KCkp
OworICAgIHB1c2hDbGlwKHBhdGhCb3VuZHMpOworfQorCit2b2lkIFBhaW50Q29udGV4dDo6cG9w
Q2xpcCgpCit7CisgICAgaWYgKG1fY2xpcFN0YWNrLmlzRW1wdHkoKSkgeworICAgICAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBtX2NsaXBTdGFj
ay5yZW1vdmVMYXN0KCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9QYWludENvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9QYWludENvbnRleHQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAuLjllODRjZDIzM2UwYwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9QYWludENvbnRleHQuaApAQCAtMCwwICsxLDk1IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDIzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJBZmZpbmVUcmFuc2Zvcm0uaCIKKyNpbmNsdWRlIDx3
dGYvQ2hlY2tlZFB0ci5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKworbmFtZXNwYWNlIFdl
YkNvcmUgeworCitjbGFzcyBQYXRoOworCitjbGFzcyBQYWludENvbnRleHQgOiBwdWJsaWMgQ2Fu
TWFrZUNoZWNrZWRQdHIgeworcHVibGljOgorICAgIHZpcnR1YWwgflBhaW50Q29udGV4dCgpID0g
ZGVmYXVsdDsKKworICAgIHZvaWQgcHVzaFRyYW5zZm9ybShjb25zdCBBZmZpbmVUcmFuc2Zvcm0m
KTsKKyAgICB2b2lkIHBvcFRyYW5zZm9ybSgpOworCisgICAgdm9pZCBwdXNoQ2xpcChjb25zdCBJ
bnRSZWN0Jik7CisgICAgdm9pZCBwdXNoQ2xpcChjb25zdCBQYXRoJik7CisgICAgdm9pZCBwb3BD
bGlwKCk7CisKKyAgICB2aXJ0dWFsIGJvb2wgaXNFdmVudFJlZ2lvblBhaW50Q29udGV4dCgpIGNv
bnN0IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCBib29sIGlzQWNjZXNzaWJpbGl0eVBh
aW50Q29udGV4dCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisKK3Byb3RlY3RlZDoKKyAgICBW
ZWN0b3I8QWZmaW5lVHJhbnNmb3JtPiBtX3RyYW5zZm9ybVN0YWNrOworICAgIFZlY3RvcjxJbnRS
ZWN0PiBtX2NsaXBTdGFjazsKKworfTsgLy8gY2xhc3MgUGFpbnRDb250ZXh0CisKK2NsYXNzIFBh
aW50Q29udGV4dFN0YXRlU2F2ZXIgeworcHVibGljOgorICAgIFBhaW50Q29udGV4dFN0YXRlU2F2
ZXIoUGFpbnRDb250ZXh0KiBjb250ZXh0KQorICAgICAgICA6IG1fY29udGV4dChjb250ZXh0KQor
ICAgIHsKKyAgICB9CisKKyAgICB+UGFpbnRDb250ZXh0U3RhdGVTYXZlcigpCisgICAgeworICAg
ICAgICBpZiAoIW1fY29udGV4dCkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBpZiAo
bV9wdXNoZWRDbGlwKQorICAgICAgICAgICAgbV9jb250ZXh0LT5wb3BDbGlwKCk7CisgICAgfQor
CisgICAgdm9pZCBwdXNoQ2xpcChjb25zdCBJbnRSZWN0JiBjbGlwUmVjdCkKKyAgICB7CisgICAg
ICAgIEFTU0VSVCghbV9wdXNoZWRDbGlwKTsKKyAgICAgICAgaWYgKG1fY29udGV4dCkKKyAgICAg
ICAgICAgIG1fY29udGV4dC0+cHVzaENsaXAoY2xpcFJlY3QpOworICAgICAgICBtX3B1c2hlZENs
aXAgPSB0cnVlOworICAgIH0KKworICAgIHZvaWQgcHVzaENsaXAoY29uc3QgUGF0aCYgcGF0aCkK
KyAgICB7CisgICAgICAgIEFTU0VSVCghbV9wdXNoZWRDbGlwKTsKKyAgICAgICAgaWYgKG1fY29u
dGV4dCkKKyAgICAgICAgICAgIG1fY29udGV4dC0+cHVzaENsaXAocGF0aCk7CisgICAgICAgIG1f
cHVzaGVkQ2xpcCA9IHRydWU7CisgICAgfQorCisgICAgUGFpbnRDb250ZXh0KiBjb250ZXh0KCkg
Y29uc3QgeyByZXR1cm4gY29uc3RfY2FzdDxQYWludENvbnRleHQqPihtX2NvbnRleHQuZ2V0KCkp
OyB9CisKK3ByaXZhdGU6CisgICAgQ2hlY2tlZFB0cjxQYWludENvbnRleHQ+IG1fY29udGV4dDsK
KyAgICBib29sIG1fcHVzaGVkQ2xpcCB7IGZhbHNlIH07Cit9OyAvLyBjbGFzcyBQYWludENvbnRl
eHRTdGF0ZVNhdmVyCisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9QYWludEluZm8uaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9QYWludEluZm8uaAppbmRleCAwNTBkNWNhZjZiMmYuLjEyMzIwNTBlMjA1YSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1BhaW50SW5mby5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9QYWludEluZm8uaApAQCAtMjUsNyArMjUsOSBAQAogCiAjcHJhZ21hIG9u
Y2UKIAorI2luY2x1ZGUgIkFjY2Vzc2liaWxpdHlQYWludENvbnRleHQuaCIKICNpbmNsdWRlICJB
ZmZpbmVUcmFuc2Zvcm0uaCIKKyNpbmNsdWRlICJFdmVudFJlZ2lvbi5oIgogI2luY2x1ZGUgIkdy
YXBoaWNzQ29udGV4dC5oIgogI2luY2x1ZGUgIkludFJlY3QuaCIKICNpbmNsdWRlICJMYXlvdXRS
ZWN0LmgiCkBAIC0zNyw3ICszOSw2IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3Mg
RXZlbnRSZWdpb25Db250ZXh0OwogY2xhc3MgT3ZlcmxhcFRlc3RSZXF1ZXN0Q2xpZW50OwogY2xh
c3MgUmVuZGVySW5saW5lOwogY2xhc3MgUmVuZGVyTGF5ZXI7CkBAIC0xMjEsNiArMTIyLDkgQEAg
c3RydWN0IFBhaW50SW5mbyB7CiAgICAgICAgIHJlY3Quc2V0U2l6ZShMYXlvdXRTaXplKHRyYW5m
b3JtZWRSZWN0LnNpemUoKSkpOwogICAgIH0KIAorICAgIEV2ZW50UmVnaW9uQ29udGV4dCogZXZl
bnRSZWdpb25QYWludENvbnRleHQoKSB7IHJldHVybiBkeW5hbWljRG93bmNhc3Q8RXZlbnRSZWdp
b25Db250ZXh0PihwYWludENvbnRleHQpOyB9CisgICAgQWNjZXNzaWJpbGl0eVBhaW50Q29udGV4
dCogYWNjZXNzaWJpbGl0eVBhaW50Q29udGV4dCgpIHsgcmV0dXJuIGR5bmFtaWNEb3duY2FzdDxB
Y2Nlc3NpYmlsaXR5UGFpbnRDb250ZXh0PihwYWludENvbnRleHQpOyB9CisKICAgICBMYXlvdXRS
ZWN0IHJlY3Q7CiAgICAgUGFpbnRQaGFzZSBwaGFzZTsKICAgICBPcHRpb25TZXQ8UGFpbnRCZWhh
dmlvcj4gcGFpbnRCZWhhdmlvcjsKQEAgLTEzMCw3ICsxMzQsOCBAQCBzdHJ1Y3QgUGFpbnRJbmZv
IHsKICAgICBjb25zdCBSZW5kZXJMYXllck1vZGVsT2JqZWN0KiBwYWludENvbnRhaW5lcjsgLy8g
dGhlIGxheWVyIG9iamVjdCB0aGF0IG9yaWdpbmF0ZXMgdGhlIGN1cnJlbnQgcGFpbnRpbmcKICAg
ICBib29sIHJlcXVpcmVTZWN1cml0eU9yaWdpbkFjY2Vzc0ZvcldpZGdldHMgeyBmYWxzZSB9Owog
ICAgIGNvbnN0IFJlbmRlckxheWVyKiBtX2VuY2xvc2luZ1NlbGZQYWludGluZ0xheWVyIHsgbnVs
bHB0ciB9OwotICAgIEV2ZW50UmVnaW9uQ29udGV4dCogZXZlbnRSZWdpb25Db250ZXh0IHsgbnVs
bHB0ciB9OyAvLyBGb3IgUGFpbnRQaGFzZTo6RXZlbnRSZWdpb24uCisgICAgLy8gQ2VydGFpbiBw
aGFzZXMgKGUuZy4gUGFpbnRQaGFzZTo6RXZlbnRSZWdpb24sIFBhaW50UGhhc2U6OkFjY2Vzc2li
aWxpdHkpIHJlcXVpcmUgY29udGV4dC4KKyAgICBQYWludENvbnRleHQqIHBhaW50Q29udGV4dCB7
IG51bGxwdHIgfTsKIAogcHJpdmF0ZToKICAgICBHcmFwaGljc0NvbnRleHQqIG1fY29udGV4dDsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9QYWludFBoYXNlLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUGFpbnRQaGFzZS5oCmluZGV4IDRhNTZmNTMzMTQ1Zi4uZTZk
ZGRhNjRkNjZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUGFpbnRQaGFz
ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9QYWludFBoYXNlLmgKQEAgLTUxLDYg
KzUxLDcgQEAgZW51bSBjbGFzcyBQYWludFBoYXNlIDogdWludDE2X3QgewogICAgIE1hc2sgICAg
ICAgICAgICAgICAgICAgICA9IDEgPDwgMTAsCiAgICAgQ2xpcHBpbmdNYXNrICAgICAgICAgICAg
ID0gMSA8PCAxMSwKICAgICBFdmVudFJlZ2lvbiAgICAgICAgICAgICAgPSAxIDw8IDEyLAorICAg
IEFjY2Vzc2liaWxpdHkgICAgICAgICAgICA9IDEgPDwgMTMsCiB9OwogCiBlbnVtIGNsYXNzIFBh
aW50QmVoYXZpb3IgOiB1aW50MTZfdCB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyQmxvY2suY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJs
b2NrLmNwcAppbmRleCA5MzQ4MGQ4NjM3ZjIuLmUxYWU1ZGZlMzczMyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwCkBAIC0xMTY3LDcgKzExNjcsNyBAQCB2b2lkIFJl
bmRlckJsb2NrOjpwYWludENvbnRlbnRzKFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlv
dXRQb2ludCYgcGFpbnRPZgogICAgICAgICBwYWludEluZm9Gb3JDaGlsZC5waGFzZSA9IG5ld1Bo
YXNlOwogICAgICAgICBwYWludEluZm9Gb3JDaGlsZC51cGRhdGVTdWJ0cmVlUGFpbnRSb290Rm9y
Q2hpbGRyZW4odGhpcyk7CiAKLSAgICAgICAgaWYgKHBhaW50SW5mby5ldmVudFJlZ2lvbkNvbnRl
eHQpCisgICAgICAgIGlmIChwYWludEluZm8uZXZlbnRSZWdpb25QYWludENvbnRleHQoKSkKICAg
ICAgICAgICAgIHBhaW50SW5mb0ZvckNoaWxkLnBhaW50QmVoYXZpb3IuYWRkKFBhaW50QmVoYXZp
b3I6OkV2ZW50UmVnaW9uSW5jbHVkZUJhY2tncm91bmQpOwogCiAgICAgICAgIC8vIEZJWE1FOiBQ
YWludC10aW1lIHBhZ2luYXRpb24gaXMgb2Jzb2xldGUgYW5kIGlzIG5vdyBvbmx5IHVzZWQgYnkg
ZW1iZWRkZWQgV2ViVmlld3MgaW5zaWRlIEFwcEtpdApAQCAtMTI4MCwyMSArMTI4MCwyNCBAQCB2
b2lkIFJlbmRlckJsb2NrOjpwYWludE9iamVjdChQYWludEluZm8mIHBhaW50SW5mbywgY29uc3Qg
TGF5b3V0UG9pbnQmIHBhaW50T2ZmcwogICAgIGlmIChwYWludEluZm8ucGFpbnRSb290QmFja2dy
b3VuZE9ubHkoKSkKICAgICAgICAgcmV0dXJuOwogCisgICAgaWYgKHBhaW50UGhhc2UgPT0gUGFp
bnRQaGFzZTo6QWNjZXNzaWJpbGl0eSkKKyAgICAgICAgcGFpbnRJbmZvLmFjY2Vzc2liaWxpdHlQ
YWludENvbnRleHQoKS0+dGFrZUJvdW5kcygqdGhpcywgRmxvYXRSZWN0KHBhaW50T2Zmc2V0LCBz
aXplKCkpKTsKKwogICAgIGlmIChwYWludFBoYXNlID09IFBhaW50UGhhc2U6OkV2ZW50UmVnaW9u
KSB7CiAgICAgICAgIGF1dG8gYm9yZGVyUmVjdCA9IExheW91dFJlY3QocGFpbnRPZmZzZXQsIHNp
emUoKSk7CiAKICAgICAgICAgaWYgKHBhaW50SW5mby5wYWludEJlaGF2aW9yLmNvbnRhaW5zKFBh
aW50QmVoYXZpb3I6OkV2ZW50UmVnaW9uSW5jbHVkZUJhY2tncm91bmQpICYmIHZpc2libGVUb0hp
dFRlc3RpbmcoKSkgewogICAgICAgICAgICAgYXV0byBib3JkZXJSZWdpb24gPSBhcHByb3hpbWF0
ZUFzUmVnaW9uKHN0eWxlKCkuZ2V0Um91bmRlZEJvcmRlckZvcihib3JkZXJSZWN0KSk7CiAgICAg
ICAgICAgICBMT0dfV0lUSF9TVFJFQU0oRXZlbnRSZWdpb25zLCBzdHJlYW0gPDwgIlJlbmRlckJs
b2NrICIgPDwgKnRoaXMgPDwgIiB1bml0aW5nIHJlZ2lvbiAiIDw8IGJvcmRlclJlZ2lvbiA8PCAi
IGV2ZW50IGxpc3RlbmVyIHR5cGVzICIgPDwgc3R5bGUoKS5ldmVudExpc3RlbmVyUmVnaW9uVHlw
ZXMoKSk7Ci0gICAgICAgICAgICBwYWludEluZm8uZXZlbnRSZWdpb25Db250ZXh0LT51bml0ZShi
b3JkZXJSZWdpb24sICp0aGlzLCBzdHlsZSgpLCBpc1RleHRDb250cm9sKCkgJiYgZG93bmNhc3Q8
UmVuZGVyVGV4dENvbnRyb2w+KCp0aGlzKS50ZXh0Rm9ybUNvbnRyb2xFbGVtZW50KCkuaXNJbm5l
clRleHRFbGVtZW50RWRpdGFibGUoKSk7CisgICAgICAgICAgICBwYWludEluZm8uZXZlbnRSZWdp
b25QYWludENvbnRleHQoKS0+dW5pdGUoYm9yZGVyUmVnaW9uLCAqdGhpcywgc3R5bGUoKSwgaXNU
ZXh0Q29udHJvbCgpICYmIGRvd25jYXN0PFJlbmRlclRleHRDb250cm9sPigqdGhpcykudGV4dEZv
cm1Db250cm9sRWxlbWVudCgpLmlzSW5uZXJUZXh0RWxlbWVudEVkaXRhYmxlKCkpOwogICAgICAg
ICB9CiAKICAgICAgICAgaWYgKCFwYWludEluZm8ucGFpbnRCZWhhdmlvci5jb250YWlucyhQYWlu
dEJlaGF2aW9yOjpFdmVudFJlZ2lvbkluY2x1ZGVGb3JlZ3JvdW5kKSkKICAgICAgICAgICAgIHJl
dHVybjsKIAotICAgICAgICBib29sIG5lZWRzVHJhdmVyc2VEZXNjZW5kYW50cyA9IGhhc1Zpc3Vh
bE92ZXJmbG93KCkgfHwgY29udGFpbnNGbG9hdHMoKSB8fCAhcGFpbnRJbmZvLmV2ZW50UmVnaW9u
Q29udGV4dC0+Y29udGFpbnMoZW5jbG9zaW5nSW50UmVjdChib3JkZXJSZWN0KSkgfHwgdmlldygp
Lm5lZWRzRXZlbnRSZWdpb25VcGRhdGVGb3JOb25Db21wb3NpdGVkRnJhbWUoKTsKKyAgICAgICAg
Ym9vbCBuZWVkc1RyYXZlcnNlRGVzY2VuZGFudHMgPSBoYXNWaXN1YWxPdmVyZmxvdygpIHx8IGNv
bnRhaW5zRmxvYXRzKCkgfHwgIXBhaW50SW5mby5ldmVudFJlZ2lvblBhaW50Q29udGV4dCgpLT5j
b250YWlucyhlbmNsb3NpbmdJbnRSZWN0KGJvcmRlclJlY3QpKSB8fCB2aWV3KCkubmVlZHNFdmVu
dFJlZ2lvblVwZGF0ZUZvck5vbkNvbXBvc2l0ZWRGcmFtZSgpOwogICAgICAgICBMT0dfV0lUSF9T
VFJFQU0oRXZlbnRSZWdpb25zLCBzdHJlYW0gPDwgIlJlbmRlckJsb2NrICIgPDwgKnRoaXMgPDwg
IiBuZWVkc1RyYXZlcnNlRGVzY2VuZGFudHMgZm9yIGV2ZW50IHJlZ2lvbjogaGFzVmlzdWFsT3Zl
cmZsb3c6ICIgPDwgaGFzVmlzdWFsT3ZlcmZsb3coKSA8PCAiIGNvbnRhaW5zRmxvYXRzOiAiCi0g
ICAgICAgICAgICA8PCBjb250YWluc0Zsb2F0cygpIDw8ICAiIGJvcmRlciBib3ggaXMgb3V0c2lk
ZSBjdXJyZW50IHJlZ2lvbjogIiA8PCAhcGFpbnRJbmZvLmV2ZW50UmVnaW9uQ29udGV4dC0+Y29u
dGFpbnMoZW5jbG9zaW5nSW50UmVjdChib3JkZXJSZWN0KSkgPDwgIiBuZWVkc0V2ZW50UmVnaW9u
VXBkYXRlRm9yTm9uQ29tcG9zaXRlZEZyYW1lOiIgPDwgdmlldygpLm5lZWRzRXZlbnRSZWdpb25V
cGRhdGVGb3JOb25Db21wb3NpdGVkRnJhbWUoKSk7CisgICAgICAgICAgICA8PCBjb250YWluc0Zs
b2F0cygpIDw8ICAiIGJvcmRlciBib3ggaXMgb3V0c2lkZSBjdXJyZW50IHJlZ2lvbjogIiA8PCAh
cGFpbnRJbmZvLmV2ZW50UmVnaW9uUGFpbnRDb250ZXh0KCktPmNvbnRhaW5zKGVuY2xvc2luZ0lu
dFJlY3QoYm9yZGVyUmVjdCkpIDw8ICIgbmVlZHNFdmVudFJlZ2lvblVwZGF0ZUZvck5vbkNvbXBv
c2l0ZWRGcmFtZToiIDw8IHZpZXcoKS5uZWVkc0V2ZW50UmVnaW9uVXBkYXRlRm9yTm9uQ29tcG9z
aXRlZEZyYW1lKCkpOwogI2lmIEVOQUJMRShUT1VDSF9BQ1RJT05fUkVHSU9OUykKICAgICAgICAg
bmVlZHNUcmF2ZXJzZURlc2NlbmRhbnRzIHw9IGRvY3VtZW50KCkubWF5SGF2ZUVsZW1lbnRzV2l0
aE5vbkF1dG9Ub3VjaEFjdGlvbigpOwogICAgICAgICBMT0dfV0lUSF9TVFJFQU0oRXZlbnRSZWdp
b25zLCBzdHJlYW0gPDwgIiAgbWF5IGhhdmUgdG91Y2gtYWN0aW9uIGVsZW1lbnRzOiAiIDw8IGRv
Y3VtZW50KCkubWF5SGF2ZUVsZW1lbnRzV2l0aE5vbkF1dG9Ub3VjaEFjdGlvbigpKTsKQEAgLTEz
NDYsOCArMTM0OSw4IEBAIHZvaWQgUmVuZGVyQmxvY2s6OnBhaW50T2JqZWN0KFBhaW50SW5mbyYg
cGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbnRPZmZzCiAgICAgICAgIHBhaW50U2Vs
ZWN0aW9uKHBhaW50SW5mbywgc2Nyb2xsZWRPZmZzZXQpOyAvLyBGaWxsIGluIGdhcHMgaW4gc2Vs
ZWN0aW9uIG9uIGxpbmVzIGFuZCBiZXR3ZWVuIGJsb2Nrcy4KIAogICAgIC8vIDQuIHBhaW50IGZs
b2F0cy4KLSAgICBpZiAocGFpbnRQaGFzZSA9PSBQYWludFBoYXNlOjpGbG9hdCB8fCBwYWludFBo
YXNlID09IFBhaW50UGhhc2U6OlNlbGVjdGlvbiB8fCBwYWludFBoYXNlID09IFBhaW50UGhhc2U6
OlRleHRDbGlwIHx8IHBhaW50UGhhc2UgPT0gUGFpbnRQaGFzZTo6RXZlbnRSZWdpb24pCi0gICAg
ICAgIHBhaW50RmxvYXRzKHBhaW50SW5mbywgc2Nyb2xsZWRPZmZzZXQsIHBhaW50UGhhc2UgPT0g
UGFpbnRQaGFzZTo6U2VsZWN0aW9uIHx8IHBhaW50UGhhc2UgPT0gUGFpbnRQaGFzZTo6VGV4dENs
aXAgfHwgcGFpbnRQaGFzZSA9PSBQYWludFBoYXNlOjpFdmVudFJlZ2lvbik7CisgICAgaWYgKHBh
aW50UGhhc2UgPT0gUGFpbnRQaGFzZTo6RmxvYXQgfHwgcGFpbnRQaGFzZSA9PSBQYWludFBoYXNl
OjpTZWxlY3Rpb24gfHwgcGFpbnRQaGFzZSA9PSBQYWludFBoYXNlOjpUZXh0Q2xpcCB8fCBwYWlu
dFBoYXNlID09IFBhaW50UGhhc2U6OkV2ZW50UmVnaW9uIHx8IHBhaW50UGhhc2UgPT0gUGFpbnRQ
aGFzZTo6QWNjZXNzaWJpbGl0eSkKKyAgICAgICAgcGFpbnRGbG9hdHMocGFpbnRJbmZvLCBzY3Jv
bGxlZE9mZnNldCwgcGFpbnRQaGFzZSA9PSBQYWludFBoYXNlOjpTZWxlY3Rpb24gfHwgcGFpbnRQ
aGFzZSA9PSBQYWludFBoYXNlOjpUZXh0Q2xpcCB8fCBwYWludFBoYXNlID09IFBhaW50UGhhc2U6
OkV2ZW50UmVnaW9uIHx8IHBhaW50UGhhc2UgPT0gUGFpbnRQaGFzZTo6QWNjZXNzaWJpbGl0eSk7
CiAKICAgICAvLyA1LiBwYWludCBvdXRsaW5lLgogICAgIGlmICgocGFpbnRQaGFzZSA9PSBQYWlu
dFBoYXNlOjpPdXRsaW5lIHx8IHBhaW50UGhhc2UgPT0gUGFpbnRQaGFzZTo6U2VsZk91dGxpbmUp
ICYmIGhhc091dGxpbmUoKSAmJiBzdHlsZSgpLnZpc2liaWxpdHkoKSA9PSBWaXNpYmlsaXR5OjpW
aXNpYmxlKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3BwCmluZGV4IDM5ZTk1
N2UxN2RhYS4uZWE0MmM1M2ZlM2FlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyQm94LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94
LmNwcApAQCAtMjE2NCw4ICsyMTY0LDggQEAgYm9vbCBSZW5kZXJCb3g6OnB1c2hDb250ZW50c0Ns
aXAoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFBvaW50JiBhY2N1bXUKICAgICAg
ICAgY2xpcENvbnRlbnRGb3JCb3JkZXJSYWRpdXMocGFpbnRJbmZvLmNvbnRleHQoKSwgYWNjdW11
bGF0ZWRPZmZzZXQsIGRldmljZVNjYWxlRmFjdG9yKTsKICAgICBwYWludEluZm8uY29udGV4dCgp
LmNsaXAoY2xpcFJlY3QpOwogCi0gICAgaWYgKHBhaW50SW5mby5waGFzZSA9PSBQYWludFBoYXNl
OjpFdmVudFJlZ2lvbikKLSAgICAgICAgcGFpbnRJbmZvLmV2ZW50UmVnaW9uQ29udGV4dC0+cHVz
aENsaXAoZW5jbG9zaW5nSW50UmVjdChjbGlwUmVjdCkpOworICAgIGlmIChwYWludEluZm8ucGhh
c2UgPT0gUGFpbnRQaGFzZTo6RXZlbnRSZWdpb24gfHwgcGFpbnRJbmZvLnBoYXNlID09IFBhaW50
UGhhc2U6OkFjY2Vzc2liaWxpdHkpCisgICAgICAgIHBhaW50SW5mby5wYWludENvbnRleHQtPnB1
c2hDbGlwKGVuY2xvc2luZ0ludFJlY3QoY2xpcFJlY3QpKTsKIAogICAgIHJldHVybiB0cnVlOwog
fQpAQCAtMjE3NCw4ICsyMTc0LDggQEAgdm9pZCBSZW5kZXJCb3g6OnBvcENvbnRlbnRzQ2xpcChQ
YWludEluZm8mIHBhaW50SW5mbywgUGFpbnRQaGFzZSBvcmlnaW5hbFBoYXNlLAogewogICAgIEFT
U0VSVChoYXNDb250cm9sQ2xpcCgpIHx8IChoYXNOb25WaXNpYmxlT3ZlcmZsb3coKSAmJiAhbGF5
ZXIoKS0+aXNTZWxmUGFpbnRpbmdMYXllcigpKSk7CiAKLSAgICBpZiAocGFpbnRJbmZvLnBoYXNl
ID09IFBhaW50UGhhc2U6OkV2ZW50UmVnaW9uKQotICAgICAgICBwYWludEluZm8uZXZlbnRSZWdp
b25Db250ZXh0LT5wb3BDbGlwKCk7CisgICAgaWYgKHBhaW50SW5mby5waGFzZSA9PSBQYWludFBo
YXNlOjpFdmVudFJlZ2lvbiB8fCBwYWludEluZm8ucGhhc2UgPT0gUGFpbnRQaGFzZTo6QWNjZXNz
aWJpbGl0eSkKKyAgICAgICAgcGFpbnRJbmZvLnBhaW50Q29udGV4dC0+cG9wQ2xpcCgpOwogCiAg
ICAgcGFpbnRJbmZvLmNvbnRleHQoKS5yZXN0b3JlKCk7CiAgICAgaWYgKG9yaWdpbmFsUGhhc2Ug
PT0gUGFpbnRQaGFzZTo6T3V0bGluZSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckVsZW1lbnQuY3BwCmluZGV4IDZjMDZkZDZiNDFkNy4uM2E2ZDA1NDY3ZjcxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVsZW1lbnQuY3BwCkBAIC0xMTIyLDcgKzExMjIsNyBA
QCB2b2lkIFJlbmRlckVsZW1lbnQ6OnBhaW50QXNJbmxpbmVCbG9jayhQYWludEluZm8mIHBhaW50
SW5mbywgY29uc3QgTGF5b3V0UG9pbnQmCiAgICAgLy8gKFNlZSBBcHBlbmRpeCBFLjIsIHNlY3Rp
b24gNi40IG9uIGlubGluZSBibG9jay90YWJsZS9yZXBsYWNlZCBlbGVtZW50cyBpbiB0aGUgQ1NT
Mi4xIHNwZWNpZmljYXRpb24uKQogICAgIC8vIFRoaXMgaXMgYWxzbyB1c2VkIGJ5IG90aGVyIGVs
ZW1lbnRzIChlLmcuIGZsZXggaXRlbXMgYW5kIGdyaWQgaXRlbXMpLgogICAgIFBhaW50UGhhc2Ug
cGFpbnRQaGFzZVRvVXNlID0gaXNFeGNsdWRlZEFuZFBsYWNlZEluQm9yZGVyKCkgPyBwYWludElu
Zm8ucGhhc2UgOiBQYWludFBoYXNlOjpGb3JlZ3JvdW5kOwotICAgIGlmIChwYWludEluZm8ucGhh
c2UgPT0gUGFpbnRQaGFzZTo6U2VsZWN0aW9uIHx8IHBhaW50SW5mby5waGFzZSA9PSBQYWludFBo
YXNlOjpFdmVudFJlZ2lvbiB8fCBwYWludEluZm8ucGhhc2UgPT0gUGFpbnRQaGFzZTo6VGV4dENs
aXApCisgICAgaWYgKHBhaW50SW5mby5waGFzZSA9PSBQYWludFBoYXNlOjpTZWxlY3Rpb24gfHwg
cGFpbnRJbmZvLnBoYXNlID09IFBhaW50UGhhc2U6OkV2ZW50UmVnaW9uIHx8IHBhaW50SW5mby5w
aGFzZSA9PSBQYWludFBoYXNlOjpUZXh0Q2xpcCB8fCBwYWludEluZm8ucGhhc2UgPT0gUGFpbnRQ
aGFzZTo6QWNjZXNzaWJpbGl0eSkKICAgICAgICAgcGFpbnQocGFpbnRJbmZvLCBjaGlsZFBvaW50
KTsKICAgICBlbHNlIGlmIChwYWludEluZm8ucGhhc2UgPT0gcGFpbnRQaGFzZVRvVXNlKSB7CiAg
ICAgICAgIHBhaW50UGhhc2UoKnRoaXMsIFBhaW50UGhhc2U6OkJsb2NrQmFja2dyb3VuZCwgcGFp
bnRJbmZvLCBjaGlsZFBvaW50KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJMYXllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIu
Y3BwCmluZGV4IGI3NjgzNWY5ZGRlMS4uYjIzNTExNzU3NDllIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJMYXllci5jcHAKQEAgLTI3NzMsMTQgKzI3NzMsMTUgQEAgYm9vbCBSZW5k
ZXJMYXllcjo6aXNQb2ludEluUmVzaXplQ29udHJvbChJbnRQb2ludCBsb2NhbFBvaW50KSBjb25z
dAogICAgIHJldHVybiBvdmVyZmxvd0NvbnRyb2xzUmVjdHMoKS5yZXNpemVyLmNvbnRhaW5zKGxv
Y2FsUG9pbnQpOwogfQogCi12b2lkIFJlbmRlckxheWVyOjpwYWludChHcmFwaGljc0NvbnRleHQm
IGNvbnRleHQsIGNvbnN0IExheW91dFJlY3QmIGRhbWFnZVJlY3QsIGNvbnN0IExheW91dFNpemUm
IHN1YnBpeGVsT2Zmc2V0LCBPcHRpb25TZXQ8UGFpbnRCZWhhdmlvcj4gcGFpbnRCZWhhdmlvciwg
UmVuZGVyT2JqZWN0KiBzdWJ0cmVlUGFpbnRSb290LCBPcHRpb25TZXQ8UGFpbnRMYXllckZsYWc+
IHBhaW50RmxhZ3MsIFNlY3VyaXR5T3JpZ2luUGFpbnRQb2xpY3kgcGFpbnRQb2xpY3ksIEV2ZW50
UmVnaW9uQ29udGV4dCogZXZlbnRSZWdpb25Db250ZXh0KQordm9pZCBSZW5kZXJMYXllcjo6cGFp
bnQoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBMYXlvdXRSZWN0JiBkYW1hZ2VSZWN0
LCBjb25zdCBMYXlvdXRTaXplJiBzdWJwaXhlbE9mZnNldCwgT3B0aW9uU2V0PFBhaW50QmVoYXZp
b3I+IHBhaW50QmVoYXZpb3IsIFJlbmRlck9iamVjdCogc3VidHJlZVBhaW50Um9vdCwgT3B0aW9u
U2V0PFBhaW50TGF5ZXJGbGFnPiBwYWludEZsYWdzLCBTZWN1cml0eU9yaWdpblBhaW50UG9saWN5
IHBhaW50UG9saWN5LCBQYWludENvbnRleHQqIHBhaW50Q29udGV4dCkKIHsKICAgICBPdmVybGFw
VGVzdFJlcXVlc3RNYXAgb3ZlcmxhcFRlc3RSZXF1ZXN0czsKIAogICAgIExheWVyUGFpbnRpbmdJ
bmZvIHBhaW50aW5nSW5mbyh0aGlzLCBlbmNsb3NpbmdJbnRSZWN0KGRhbWFnZVJlY3QpLCBwYWlu
dEJlaGF2aW9yLCBzdWJwaXhlbE9mZnNldCwgc3VidHJlZVBhaW50Um9vdCwgJm92ZXJsYXBUZXN0
UmVxdWVzdHMsIHBhaW50UG9saWN5ID09IFNlY3VyaXR5T3JpZ2luUGFpbnRQb2xpY3k6OkFjY2Vz
c2libGVPcmlnaW5Pbmx5KTsKLSAgICBpZiAoZXZlbnRSZWdpb25Db250ZXh0KSB7Ci0gICAgICAg
IHBhaW50aW5nSW5mby5ldmVudFJlZ2lvbkNvbnRleHQgPSBldmVudFJlZ2lvbkNvbnRleHQ7Ci0g
ICAgICAgIHBhaW50RmxhZ3MuYWRkKFJlbmRlckxheWVyOjpQYWludExheWVyRmxhZzo6Q29sbGVj
dGluZ0V2ZW50UmVnaW9uKTsKKyAgICBpZiAocGFpbnRDb250ZXh0KSB7CisgICAgICAgIHBhaW50
aW5nSW5mby5wYWludENvbnRleHQgPSBwYWludENvbnRleHQ7CisgICAgICAgIGlmIChpczxFdmVu
dFJlZ2lvbkNvbnRleHQ+KHBhaW50Q29udGV4dCkpCisgICAgICAgICAgICBwYWludEZsYWdzLmFk
ZChSZW5kZXJMYXllcjo6UGFpbnRMYXllckZsYWc6OkNvbGxlY3RpbmdFdmVudFJlZ2lvbik7CiAg
ICAgfQogICAgIHBhaW50TGF5ZXIoY29udGV4dCwgcGFpbnRpbmdJbmZvLCBwYWludEZsYWdzKTsK
IApAQCAtMjc4OCw3ICsyNzg5LDcgQEAgdm9pZCBSZW5kZXJMYXllcjo6cGFpbnQoR3JhcGhpY3ND
b250ZXh0JiBjb250ZXh0LCBjb25zdCBMYXlvdXRSZWN0JiBkYW1hZ2VSZWN0LAogICAgICAgICB3
aWRnZXQtPnNldE92ZXJsYXBUZXN0UmVzdWx0KGZhbHNlKTsKIH0KIAotdm9pZCBSZW5kZXJMYXll
cjo6Y2xpcFRvUmVjdChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIEdyYXBoaWNzQ29udGV4dFN0
YXRlU2F2ZXImIHN0YXRlU2F2ZXIsIEV2ZW50UmVnaW9uQ29udGV4dFN0YXRlU2F2ZXImIGV2ZW50
UmVnaW9uU3RhdGVTYXZlciwgY29uc3QgTGF5ZXJQYWludGluZ0luZm8mIHBhaW50aW5nSW5mbywg
T3B0aW9uU2V0PFBhaW50QmVoYXZpb3I+IHBhaW50QmVoYXZpb3IsIGNvbnN0IENsaXBSZWN0JiBj
bGlwUmVjdCwgQm9yZGVyUmFkaXVzQ2xpcHBpbmdSdWxlIHJ1bGUpCit2b2lkIFJlbmRlckxheWVy
OjpjbGlwVG9SZWN0KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgR3JhcGhpY3NDb250ZXh0U3Rh
dGVTYXZlciYgc3RhdGVTYXZlciwgUGFpbnRDb250ZXh0U3RhdGVTYXZlciYgcGFpbnRDb250ZXh0
U3RhdGVTYXZlciwgY29uc3QgTGF5ZXJQYWludGluZ0luZm8mIHBhaW50aW5nSW5mbywgT3B0aW9u
U2V0PFBhaW50QmVoYXZpb3I+IHBhaW50QmVoYXZpb3IsIGNvbnN0IENsaXBSZWN0JiBjbGlwUmVj
dCwgQm9yZGVyUmFkaXVzQ2xpcHBpbmdSdWxlIHJ1bGUpCiB7CiAgICAgZmxvYXQgZGV2aWNlU2Nh
bGVGYWN0b3IgPSByZW5kZXJlcigpLmRvY3VtZW50KCkuZGV2aWNlU2NhbGVGYWN0b3IoKTsKICAg
ICBib29sIG5lZWRzQ2xpcHBpbmcgPSAhY2xpcFJlY3QuaXNJbmZpbml0ZSgpICYmIGNsaXBSZWN0
LnJlY3QoKSAhPSBwYWludGluZ0luZm8ucGFpbnREaXJ0eVJlY3Q7CkBAIC0yODAwLDcgKzI4MDEs
NyBAQCB2b2lkIFJlbmRlckxheWVyOjpjbGlwVG9SZWN0KEdyYXBoaWNzQ29udGV4dCYgY29udGV4
dCwgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlcgogICAgICAgICBhZGp1c3RlZENsaXBSZWN0Lm1v
dmUocGFpbnRpbmdJbmZvLnN1YnBpeGVsT2Zmc2V0KTsKICAgICAgICAgYXV0byBzbmFwcGVkQ2xp
cFJlY3QgPSBzbmFwUmVjdFRvRGV2aWNlUGl4ZWxzSWZOZWVkZWQoYWRqdXN0ZWRDbGlwUmVjdCwg
cmVuZGVyZXIoKSk7CiAgICAgICAgIGNvbnRleHQuY2xpcChzbmFwcGVkQ2xpcFJlY3QpOwotICAg
ICAgICBldmVudFJlZ2lvblN0YXRlU2F2ZXIucHVzaENsaXAoZW5jbG9zaW5nSW50UmVjdChzbmFw
cGVkQ2xpcFJlY3QpKTsKKyAgICAgICAgcGFpbnRDb250ZXh0U3RhdGVTYXZlci5wdXNoQ2xpcChl
bmNsb3NpbmdJbnRSZWN0KHNuYXBwZWRDbGlwUmVjdCkpOwogICAgIH0KIAogICAgIGlmIChjbGlw
UmVjdC5hZmZlY3RlZEJ5UmFkaXVzKCkpIHsKQEAgLTI5NDQsNyArMjk0NSw3IEBAIHZvaWQgUmVu
ZGVyTGF5ZXI6OnBhaW50TGF5ZXJXaXRoRWZmZWN0cyhHcmFwaGljc0NvbnRleHQmIGNvbnRleHQs
IGNvbnN0IExheWVyUGFpCiAgICAgICAgIC8vIE1ha2Ugc3VyZSB0aGUgcGFyZW50J3MgY2xpcCBy
ZWN0cyBoYXZlIGJlZW4gY2FsY3VsYXRlZC4KICAgICAgICAgQ2xpcFJlY3QgY2xpcFJlY3QgPSBw
YWludGluZ0luZm8ucGFpbnREaXJ0eVJlY3Q7CiAgICAgICAgIEdyYXBoaWNzQ29udGV4dFN0YXRl
U2F2ZXIgc3RhdGVTYXZlcihjb250ZXh0LCBmYWxzZSk7Ci0gICAgICAgIEV2ZW50UmVnaW9uQ29u
dGV4dFN0YXRlU2F2ZXIgZXZlbnRSZWdpb25TdGF0ZVNhdmVyKHBhaW50aW5nSW5mby5ldmVudFJl
Z2lvbkNvbnRleHQpOworICAgICAgICBQYWludENvbnRleHRTdGF0ZVNhdmVyIHBhaW50Q29udGV4
dFN0YXRlU2F2ZXIocGFpbnRpbmdJbmZvLnBhaW50Q29udGV4dCk7CiAgICAgICAgIGlmIChwYXJl
bnQoKSkgewogICAgICAgICAgICAgYXV0byBvcHRpb25zID0gcGFpbnRGbGFncy5jb250YWlucyhQ
YWludExheWVyRmxhZzo6UGFpbnRpbmdPdmVyZmxvd0NvbnRlbnRzKSA/IGNsaXBSZWN0T3B0aW9u
c0ZvclBhaW50aW5nT3ZlcmZsb3dDb250cm9scyA6IGNsaXBSZWN0RGVmYXVsdE9wdGlvbnM7CiAg
ICAgICAgICAgICBhdXRvIGNsaXBSZWN0c0NvbnRleHQgPSBDbGlwUmVjdHNDb250ZXh0KHBhaW50
aW5nSW5mby5yb290TGF5ZXIsIChwYWludEZsYWdzICYgUGFpbnRMYXllckZsYWc6OlRlbXBvcmFy
eUNsaXBSZWN0cykgPyBUZW1wb3JhcnlDbGlwUmVjdHMgOiBQYWludGluZ0NsaXBSZWN0cywgb3B0
aW9ucyk7CkBAIC0yOTczLDcgKzI5NzQsNyBAQCB2b2lkIFJlbmRlckxheWVyOjpwYWludExheWVy
V2l0aEVmZmVjdHMoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBMYXllclBhaQogI2Vu
ZGlmCiAKICAgICAgICAgICAgIC8vIFB1c2ggdGhlIHBhcmVudCBjb29yZGluYXRlIHNwYWNlJ3Mg
Y2xpcC4KLSAgICAgICAgICAgIHBhcmVudCgpLT5jbGlwVG9SZWN0KGNvbnRleHQsIHN0YXRlU2F2
ZXIsIGV2ZW50UmVnaW9uU3RhdGVTYXZlciwgcGFpbnRpbmdJbmZvLCBwYWludEJlaGF2aW9yLCBj
bGlwUmVjdCk7CisgICAgICAgICAgICBwYXJlbnQoKS0+Y2xpcFRvUmVjdChjb250ZXh0LCBzdGF0
ZVNhdmVyLCBwYWludENvbnRleHRTdGF0ZVNhdmVyLCBwYWludGluZ0luZm8sIHBhaW50QmVoYXZp
b3IsIGNsaXBSZWN0KTsKICAgICAgICAgfQogCiAgICAgICAgIHBhaW50TGF5ZXJCeUFwcGx5aW5n
VHJhbnNmb3JtKGNvbnRleHQsIHBhaW50aW5nSW5mbywgcGFpbnRGbGFncyk7CkBAIC0zMDQ3LDcg
KzMwNDgsNyBAQCBzdGQ6OnBhaXI8UGF0aCwgV2luZFJ1bGU+IFJlbmRlckxheWVyOjpjb21wdXRl
Q2xpcFBhdGgoY29uc3QgTGF5b3V0U2l6ZSYgb2Zmc2V0RgogICAgIHJldHVybiB7IFBhdGgoKSwg
V2luZFJ1bGU6Ok5vblplcm8gfTsKIH0KIAotdm9pZCBSZW5kZXJMYXllcjo6c2V0dXBDbGlwUGF0
aChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXImIHN0
YXRlU2F2ZXIsIEV2ZW50UmVnaW9uQ29udGV4dFN0YXRlU2F2ZXImIGV2ZW50UmVnaW9uU3RhdGVT
YXZlciwgY29uc3QgTGF5ZXJQYWludGluZ0luZm8mIHBhaW50aW5nSW5mbywgT3B0aW9uU2V0PFBh
aW50TGF5ZXJGbGFnPiBwYWludEZsYWdzLCBjb25zdCBMYXlvdXRTaXplJiBvZmZzZXRGcm9tUm9v
dCkKK3ZvaWQgUmVuZGVyTGF5ZXI6OnNldHVwQ2xpcFBhdGgoR3JhcGhpY3NDb250ZXh0JiBjb250
ZXh0LCBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyJiBzdGF0ZVNhdmVyLCBQYWludENvbnRleHRT
dGF0ZVNhdmVyJiBwYWludENvbnRleHRTdGF0ZVNhdmVyLCBjb25zdCBMYXllclBhaW50aW5nSW5m
byYgcGFpbnRpbmdJbmZvLCBPcHRpb25TZXQ8UGFpbnRMYXllckZsYWc+IHBhaW50RmxhZ3MsIGNv
bnN0IExheW91dFNpemUmIG9mZnNldEZyb21Sb290KQogewogICAgIGJvb2wgaXNDb2xsZWN0aW5n
RXZlbnRSZWdpb24gPSBwYWludEZsYWdzLmNvbnRhaW5zKFBhaW50TGF5ZXJGbGFnOjpDb2xsZWN0
aW5nRXZlbnRSZWdpb24pOwogICAgIGlmICghcmVuZGVyZXIoKS5oYXNDbGlwUGF0aCgpIHx8IChj
b250ZXh0LnBhaW50aW5nRGlzYWJsZWQoKSAmJiAhaXNDb2xsZWN0aW5nRXZlbnRSZWdpb24pIHx8
IHBhaW50aW5nSW5mby5wYWludERpcnR5UmVjdC5pc0VtcHR5KCkpCkBAIC0zMDY3LDcgKzMwNjgs
NyBAQCB2b2lkIFJlbmRlckxheWVyOjpzZXR1cENsaXBQYXRoKEdyYXBoaWNzQ29udGV4dCYgY29u
dGV4dCwgR3JhcGhpY3NDb250ZXh0U3RhdGVTYQogICAgICAgICBhdXRvIFtwYXRoLCB3aW5kUnVs
ZV0gPSBjb21wdXRlQ2xpcFBhdGgocGFpbnRpbmdPZmZzZXRGcm9tUm9vdCwgY2xpcHBlZENvbnRl
bnRCb3VuZHMpOwogCiAgICAgICAgIGlmIChpc0NvbGxlY3RpbmdFdmVudFJlZ2lvbikgewotICAg
ICAgICAgICAgZXZlbnRSZWdpb25TdGF0ZVNhdmVyLnB1c2hDbGlwKHBhdGgsIHdpbmRSdWxlKTsK
KyAgICAgICAgICAgIHBhaW50Q29udGV4dFN0YXRlU2F2ZXIucHVzaENsaXAocGF0aCk7CiAgICAg
ICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIApAQCAtMzE1MCw5ICszMTUxLDkgQEAgdm9pZCBS
ZW5kZXJMYXllcjo6YXBwbHlGaWx0ZXJzKEdyYXBoaWNzQ29udGV4dCYgb3JpZ2luYWxDb250ZXh0
LCBjb25zdCBMYXllclBhaW4KICAgICBDbGlwUmVjdCBiYWNrZ3JvdW5kUmVjdCA9IGxheWVyRnJh
Z21lbnRzLmlzRW1wdHkoKSA/IENsaXBSZWN0KCkgOiBsYXllckZyYWdtZW50c1swXS5iYWNrZ3Jv
dW5kUmVjdDsKIAogICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcihvcmln
aW5hbENvbnRleHQsIGZhbHNlKTsKLSAgICBFdmVudFJlZ2lvbkNvbnRleHRTdGF0ZVNhdmVyIGV2
ZW50UmVnaW9uU3RhdGVTYXZlcihwYWludGluZ0luZm8uZXZlbnRSZWdpb25Db250ZXh0KTsKKyAg
ICBQYWludENvbnRleHRTdGF0ZVNhdmVyIHBhaW50Q29udGV4dFN0YXRlU2F2ZXIocGFpbnRpbmdJ
bmZvLnBhaW50Q29udGV4dCk7CiAKLSAgICBjbGlwVG9SZWN0KG9yaWdpbmFsQ29udGV4dCwgc3Rh
dGVTYXZlciwgZXZlbnRSZWdpb25TdGF0ZVNhdmVyLCBwYWludGluZ0luZm8sIGJlaGF2aW9yLCBi
YWNrZ3JvdW5kUmVjdCk7CisgICAgY2xpcFRvUmVjdChvcmlnaW5hbENvbnRleHQsIHN0YXRlU2F2
ZXIsIHBhaW50Q29udGV4dFN0YXRlU2F2ZXIsIHBhaW50aW5nSW5mbywgYmVoYXZpb3IsIGJhY2tn
cm91bmRSZWN0KTsKICAgICBtX2ZpbHRlcnMtPmFwcGx5RmlsdGVyRWZmZWN0KG9yaWdpbmFsQ29u
dGV4dCk7CiB9CiAKQEAgLTMxNzIsNiArMzE3Myw3IEBAIHZvaWQgUmVuZGVyTGF5ZXI6OnBhaW50
TGF5ZXJDb250ZW50cyhHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IExheWVyUGFpbnRp
CiAgICAgYm9vbCBpc1BhaW50aW5nQ29tcG9zaXRlZEJhY2tncm91bmQgPSBsb2NhbFBhaW50Rmxh
Z3MuY29udGFpbnMoUGFpbnRMYXllckZsYWc6OlBhaW50aW5nQ29tcG9zaXRpbmdCYWNrZ3JvdW5k
UGhhc2UpOwogICAgIGJvb2wgaXNQYWludGluZ092ZXJmbG93Q29udGVudHMgPSBsb2NhbFBhaW50
RmxhZ3MuY29udGFpbnMoUGFpbnRMYXllckZsYWc6OlBhaW50aW5nT3ZlcmZsb3dDb250ZW50cyk7
CiAgICAgYm9vbCBpc0NvbGxlY3RpbmdFdmVudFJlZ2lvbiA9IGxvY2FsUGFpbnRGbGFncy5jb250
YWlucyhQYWludExheWVyRmxhZzo6Q29sbGVjdGluZ0V2ZW50UmVnaW9uKTsKKyAgICBib29sIGlz
Q29sbGVjdGluZ0FjY2Vzc2liaWxpdHlSZWN0cyA9IGNvbnRleHQuaW52YWxpZGF0aW5nQWNjZXNz
aWJpbGl0eU9iamVjdFJlY3RzKCk7CiAKICAgICBib29sIGlzU2VsZlBhaW50aW5nTGF5ZXIgPSB0
aGlzLT5pc1NlbGZQYWludGluZ0xheWVyKCk7CiAKQEAgLTMxODEsMTEgKzMxODMsMTEgQEAgdm9p
ZCBSZW5kZXJMYXllcjo6cGFpbnRMYXllckNvbnRlbnRzKEdyYXBoaWNzQ29udGV4dCYgY29udGV4
dCwgY29uc3QgTGF5ZXJQYWludGkKICAgICAvLyBjb250ZW50LiBXaGVuIG5vdCBjb21wb3NpdGVk
IHNjcm9sbGluZywgdGhlIG91dGxpbmUgaXMgcGFpbnRlZCBpbiB0aGUKICAgICAvLyBmb3JlZ3Jv
dW5kIHBoYXNlLiBTaW5jZSBzY3JvbGxlZCBjb250ZW50cyBhcmUgbW92ZWQgYnkgcmVwYWludGlu
ZyBpbiB0aGlzCiAgICAgLy8gY2FzZSwgdGhlIG91dGxpbmUgd29uJ3QgZ2V0ICdkcmFnZ2VkIGFs
b25nJy4KLSAgICBib29sIHNob3VsZFBhaW50T3V0bGluZSA9IGlzU2VsZlBhaW50aW5nTGF5ZXIg
JiYgIWlzUGFpbnRpbmdPdmVybGF5U2Nyb2xsYmFycyAmJiAhaXNDb2xsZWN0aW5nRXZlbnRSZWdp
b24KKyAgICBib29sIHNob3VsZFBhaW50T3V0bGluZSA9IGlzU2VsZlBhaW50aW5nTGF5ZXIgJiYg
IWlzUGFpbnRpbmdPdmVybGF5U2Nyb2xsYmFycyAmJiAhaXNDb2xsZWN0aW5nRXZlbnRSZWdpb24g
JiYgIWlzQ29sbGVjdGluZ0FjY2Vzc2liaWxpdHlSZWN0cwogICAgICAgICAmJiAocmVuZGVyZXIo
KS52aWV3KCkucHJpbnRpbmcoKSB8fCByZW5kZXJlcigpLnZpZXcoKS5oYXNSZW5kZXJlcnNXaXRo
T3V0bGluZSgpKQogICAgICAgICAmJiAoKGlzUGFpbnRpbmdTY3JvbGxpbmdDb250ZW50ICYmIGlz
UGFpbnRpbmdDb21wb3NpdGVkQmFja2dyb3VuZCkKICAgICAgICAgfHwgKCFpc1BhaW50aW5nU2Ny
b2xsaW5nQ29udGVudCAmJiBpc1BhaW50aW5nQ29tcG9zaXRlZEZvcmVncm91bmQpKTsKLSAgICBi
b29sIHNob3VsZFBhaW50Q29udGVudCA9IG1faGFzVmlzaWJsZUNvbnRlbnQgJiYgaXNTZWxmUGFp
bnRpbmdMYXllciAmJiAhaXNQYWludGluZ092ZXJsYXlTY3JvbGxiYXJzICYmICFpc0NvbGxlY3Rp
bmdFdmVudFJlZ2lvbjsKKyAgICBib29sIHNob3VsZFBhaW50Q29udGVudCA9IG1faGFzVmlzaWJs
ZUNvbnRlbnQgJiYgaXNTZWxmUGFpbnRpbmdMYXllciAmJiAhaXNQYWludGluZ092ZXJsYXlTY3Jv
bGxiYXJzICYmICFpc0NvbGxlY3RpbmdFdmVudFJlZ2lvbiAmJiAhaXNDb2xsZWN0aW5nQWNjZXNz
aWJpbGl0eVJlY3RzOwogCiAgICAgaWYgKGxvY2FsUGFpbnRGbGFncy5jb250YWlucyhQYWludExh
eWVyRmxhZzo6UGFpbnRpbmdSb290QmFja2dyb3VuZE9ubHkpICYmICFyZW5kZXJlcigpLmlzUmVu
ZGVyVmlldygpICYmICFyZW5kZXJlcigpLmlzRG9jdW1lbnRFbGVtZW50UmVuZGVyZXIoKSkgewog
ICAgICAgICAvLyBJZiBiZWdpblRyYW5zcGFyZW5jeUxheWVycyB3YXMgY2FsbGVkIHByaW9yIHRv
IHRoaXMsIGVuc3VyZSB0aGUgdHJhbnNwYXJlbmN5IHN0YXRlIGlzIGNsZWFuZWQgdXAgYmVmb3Jl
IHJldHVybmluZy4KQEAgLTMyMTMsMTAgKzMyMTUsMTAgQEAgdm9pZCBSZW5kZXJMYXllcjo6cGFp
bnRMYXllckNvbnRlbnRzKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgTGF5ZXJQYWlu
dGkKICAgICAgICAgY29sdW1uQXdhcmVPZmZzZXRGcm9tUm9vdCA9IHRvTGF5b3V0U2l6ZShjb252
ZXJ0VG9MYXllckNvb3JkcyhwYWludGluZ0luZm8ucm9vdExheWVyLCBMYXlvdXRQb2ludCgpLCBB
ZGp1c3RGb3JDb2x1bW5zKSk7CiAKICAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRl
U2F2ZXIoY29udGV4dCwgZmFsc2UpOwotICAgIEV2ZW50UmVnaW9uQ29udGV4dFN0YXRlU2F2ZXIg
ZXZlbnRSZWdpb25TdGF0ZVNhdmVyKHBhaW50aW5nSW5mby5ldmVudFJlZ2lvbkNvbnRleHQpOwor
ICAgIFBhaW50Q29udGV4dFN0YXRlU2F2ZXIgcGFpbnRDb250ZXh0U3RhdGVTYXZlcihwYWludGlu
Z0luZm8ucGFpbnRDb250ZXh0KTsKIAogICAgIGlmIChzaG91bGRBcHBseUNsaXBQYXRoKHBhaW50
aW5nSW5mby5wYWludEJlaGF2aW9yLCBsb2NhbFBhaW50RmxhZ3MpKQotICAgICAgICBzZXR1cENs
aXBQYXRoKGNvbnRleHQsIHN0YXRlU2F2ZXIsIGV2ZW50UmVnaW9uU3RhdGVTYXZlciwgcGFpbnRp
bmdJbmZvLCBsb2NhbFBhaW50RmxhZ3MsIGNvbHVtbkF3YXJlT2Zmc2V0RnJvbVJvb3QpOworICAg
ICAgICBzZXR1cENsaXBQYXRoKGNvbnRleHQsIHN0YXRlU2F2ZXIsIHBhaW50Q29udGV4dFN0YXRl
U2F2ZXIsIHBhaW50aW5nSW5mbywgbG9jYWxQYWludEZsYWdzLCBjb2x1bW5Bd2FyZU9mZnNldEZy
b21Sb290KTsKIAogICAgIGJvb2wgc2VsZWN0aW9uQW5kQmFja2dyb3VuZHNPbmx5ID0gcGFpbnRp
bmdJbmZvLnBhaW50QmVoYXZpb3IuY29udGFpbnMoUGFpbnRCZWhhdmlvcjo6U2VsZWN0aW9uQW5k
QmFja2dyb3VuZHNPbmx5KTsKICAgICBib29sIHNlbGVjdGlvbk9ubHkgPSBwYWludGluZ0luZm8u
cGFpbnRCZWhhdmlvci5jb250YWlucyhQYWludEJlaGF2aW9yOjpTZWxlY3Rpb25Pbmx5KTsKQEAg
LTMyNzMsNyArMzI3NSw3IEBAIHZvaWQgUmVuZGVyTGF5ZXI6OnBhaW50TGF5ZXJDb250ZW50cyhH
cmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IExheWVyUGFpbnRpCiAgICAgICAgICAgICBw
ZXJmb3JtT3ZlcmxhcFRlc3RzKCpsb2NhbFBhaW50aW5nSW5mby5vdmVybGFwVGVzdFJlcXVlc3Rz
LCBsb2NhbFBhaW50aW5nSW5mby5yb290TGF5ZXIsIHRoaXMpOwogCiAgICAgICAgIExheW91dFJl
Y3QgcGFpbnREaXJ0eVJlY3QgPSBsb2NhbFBhaW50aW5nSW5mby5wYWludERpcnR5UmVjdDsKLSAg
ICAgICAgaWYgKHNob3VsZFBhaW50Q29udGVudCB8fCBzaG91bGRQYWludE91dGxpbmUgfHwgaXNQ
YWludGluZ092ZXJsYXlTY3JvbGxiYXJzIHx8IGlzQ29sbGVjdGluZ0V2ZW50UmVnaW9uKSB7Cisg
ICAgICAgIGlmIChzaG91bGRQYWludENvbnRlbnQgfHwgc2hvdWxkUGFpbnRPdXRsaW5lIHx8IGlz
UGFpbnRpbmdPdmVybGF5U2Nyb2xsYmFycyB8fCBpc0NvbGxlY3RpbmdFdmVudFJlZ2lvbiB8fCBp
c0NvbGxlY3RpbmdBY2Nlc3NpYmlsaXR5UmVjdHMpIHsKICAgICAgICAgICAgIC8vIENvbGxlY3Qg
dGhlIGZyYWdtZW50cy4gVGhpcyB3aWxsIGNvbXB1dGUgdGhlIGNsaXAgcmVjdGFuZ2xlcyBhbmQg
cGFpbnQgb2Zmc2V0cyBmb3IgZWFjaCBsYXllciBmcmFnbWVudCwgYXMgd2VsbCBhcyB3aGV0aGVy
IG9yIG5vdCB0aGUgY29udGVudCBvZiBlYWNoCiAgICAgICAgICAgICAvLyBmcmFnbWVudCBzaG91
bGQgcGFpbnQuIElmIHRoZSBwYXJlbnQncyBmaWx0ZXIgZGljdGF0ZXMgZnVsbCByZXBhaW50IHRv
IGVuc3VyZSBwcm9wZXIgZmlsdGVyIGVmZmVjdCwKICAgICAgICAgICAgIC8vIHVzZSB0aGUgb3Zl
cmZsb3cgY2xpcCBhcyBkaXJ0eSByZWN0LCBpbnN0ZWFkIG9mIG5vIGNsaXBwaW5nLiBJdCBtYWlu
dGFpbnMgcHJvcGVyIGNsaXBwaW5nIGZvciBvdmVyZmxvdzo6c2Nyb2xsLgpAQCAtMzMxMSw2ICsz
MzEzLDkgQEAgdm9pZCBSZW5kZXJMYXllcjo6cGFpbnRMYXllckNvbnRlbnRzKEdyYXBoaWNzQ29u
dGV4dCYgY29udGV4dCwgY29uc3QgTGF5ZXJQYWludGkKICAgICAgICAgaWYgKGlzQ29sbGVjdGlu
Z0V2ZW50UmVnaW9uKQogICAgICAgICAgICAgY29sbGVjdEV2ZW50UmVnaW9uRm9yRnJhZ21lbnRz
KGxheWVyRnJhZ21lbnRzLCBjdXJyZW50Q29udGV4dCwgbG9jYWxQYWludGluZ0luZm8sIHBhaW50
QmVoYXZpb3IpOwogCisgICAgICAgIGlmIChpc0NvbGxlY3RpbmdBY2Nlc3NpYmlsaXR5UmVjdHMp
CisgICAgICAgICAgICBjb2xsZWN0QWNjZXNzaWJpbGl0eVJlY3RzRm9yRnJhZ21lbnRzKGxheWVy
RnJhZ21lbnRzLCBjdXJyZW50Q29udGV4dCwgbG9jYWxQYWludGluZ0luZm8sIHBhaW50QmVoYXZp
b3IpOworCiAgICAgICAgIGlmIChzaG91bGRQYWludE91dGxpbmUpCiAgICAgICAgICAgICBwYWlu
dE91dGxpbmVGb3JGcmFnbWVudHMobGF5ZXJGcmFnbWVudHMsIGN1cnJlbnRDb250ZXh0LCBsb2Nh
bFBhaW50aW5nSW5mbywgcGFpbnRCZWhhdmlvciwgc3VidHJlZVBhaW50Um9vdEZvclJlbmRlcmVy
KTsKIApAQCAtMzM5MSw4ICszMzk2LDggQEAgdm9pZCBSZW5kZXJMYXllcjo6cGFpbnRMYXllckJ5
QXBwbHlpbmdUcmFuc2Zvcm0oR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdAogICAgIGF1
dG8gYWZmaW5lVHJhbnNmb3JtID0gdHJhbnNmb3JtLnRvQWZmaW5lVHJhbnNmb3JtKCk7CiAgICAg
Y29udGV4dC5jb25jYXRDVE0oYWZmaW5lVHJhbnNmb3JtKTsKIAotICAgIGlmIChwYWludGluZ0lu
Zm8uZXZlbnRSZWdpb25Db250ZXh0KQotICAgICAgICBwYWludGluZ0luZm8uZXZlbnRSZWdpb25D
b250ZXh0LT5wdXNoVHJhbnNmb3JtKGFmZmluZVRyYW5zZm9ybSk7CisgICAgaWYgKHBhaW50aW5n
SW5mby5wYWludENvbnRleHQpCisgICAgICAgIHBhaW50aW5nSW5mby5wYWludENvbnRleHQtPnB1
c2hUcmFuc2Zvcm0oYWZmaW5lVHJhbnNmb3JtKTsKIAogICAgIC8vIE9ubHkgcHJvcGFnYXRlIHRo
ZSBzdWJwaXhlbCBvZmZzZXRzIHRvIHRoZSBkZXNjZW5kYW50IGxheWVycywgaWYgd2UncmUgbm90
IHRoZSByb290CiAgICAgLy8gb2YgYSBTVkcgc3VidHJlZSwgd2hlcmUgbm8gcGl4ZWwgc25hcHBp
bmcgaXMgYXBwbGllZCAtLSBvbmx5IHRoZSBvdXRlcm1vc3QgPHN2Zz4gbGF5ZXIKQEAgLTM0MDgs
OCArMzQxMyw4IEBAIHZvaWQgUmVuZGVyTGF5ZXI6OnBhaW50TGF5ZXJCeUFwcGx5aW5nVHJhbnNm
b3JtKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QKICAgICB0cmFuc2Zvcm1lZFBhaW50
aW5nSW5mby5zdWJwaXhlbE9mZnNldCA9IGFkanVzdGVkU3VicGl4ZWxPZmZzZXQ7CiAgICAgcGFp
bnRMYXllckNvbnRlbnRzQW5kUmVmbGVjdGlvbihjb250ZXh0LCB0cmFuc2Zvcm1lZFBhaW50aW5n
SW5mbywgcGFpbnRGbGFncyk7CiAKLSAgICBpZiAocGFpbnRpbmdJbmZvLmV2ZW50UmVnaW9uQ29u
dGV4dCkKLSAgICAgICAgcGFpbnRpbmdJbmZvLmV2ZW50UmVnaW9uQ29udGV4dC0+cG9wVHJhbnNm
b3JtKCk7CisgICAgaWYgKHBhaW50aW5nSW5mby5wYWludENvbnRleHQpCisgICAgICAgIHBhaW50
aW5nSW5mby5wYWludENvbnRleHQtPnBvcFRyYW5zZm9ybSgpOwogCiAgICAgY29udGV4dC5zZXRD
VE0ob2xkVHJhbnNmb3JtKTsKIH0KQEAgLTM2MjYsOSArMzYzMSw5IEBAIHZvaWQgUmVuZGVyTGF5
ZXI6OnBhaW50VHJhbnNmb3JtZWRMYXllckludG9GcmFnbWVudHMoR3JhcGhpY3NDb250ZXh0JiBj
b250ZXh0LCBjCiAgICAgICAgICAgICBwYWludEJlaGF2aW9yLmFkZChQYWludEJlaGF2aW9yOjpD
b21wb3NpdGVkT3ZlcmZsb3dTY3JvbGxDb250ZW50KTsKIAogICAgICAgICBHcmFwaGljc0NvbnRl
eHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoY29udGV4dCwgZmFsc2UpOwotICAgICAgICBFdmVudFJl
Z2lvbkNvbnRleHRTdGF0ZVNhdmVyIGV2ZW50UmVnaW9uU3RhdGVTYXZlcihwYWludGluZ0luZm8u
ZXZlbnRSZWdpb25Db250ZXh0KTsKKyAgICAgICAgUGFpbnRDb250ZXh0U3RhdGVTYXZlciBwYWlu
dENvbnRleHRTdGF0ZVNhdmVyKHBhaW50aW5nSW5mby5wYWludENvbnRleHQpOwogCi0gICAgICAg
IHBhcmVudCgpLT5jbGlwVG9SZWN0KGNvbnRleHQsIHN0YXRlU2F2ZXIsIGV2ZW50UmVnaW9uU3Rh
dGVTYXZlciwgcGFpbnRpbmdJbmZvLCBwYWludEJlaGF2aW9yLCBjbGlwUmVjdCk7CisgICAgICAg
IHBhcmVudCgpLT5jbGlwVG9SZWN0KGNvbnRleHQsIHN0YXRlU2F2ZXIsIHBhaW50Q29udGV4dFN0
YXRlU2F2ZXIsIHBhaW50aW5nSW5mbywgcGFpbnRCZWhhdmlvciwgY2xpcFJlY3QpOwogICAgICAg
ICBwYWludExheWVyQnlBcHBseWluZ1RyYW5zZm9ybShjb250ZXh0LCBwYWludGluZ0luZm8sIHBh
aW50RmxhZ3MsIGZyYWdtZW50LnBhZ2luYXRpb25PZmZzZXQpOwogICAgIH0KIH0KQEAgLTM2NDYs
MTIgKzM2NTEsMTIgQEAgdm9pZCBSZW5kZXJMYXllcjo6cGFpbnRCYWNrZ3JvdW5kRm9yRnJhZ21l
bnRzKGNvbnN0IExheWVyRnJhZ21lbnRzJiBsYXllckZyYWdtZW4KICAgICAgICAgICAgIGJlZ2lu
VHJhbnNwYXJlbmN5TGF5ZXJzKGNvbnRleHRGb3JUcmFuc3BhcmVuY3lMYXllciwgbG9jYWxQYWlu
dGluZ0luZm8sIHRyYW5zcGFyZW5jeVBhaW50RGlydHlSZWN0KTsKICAgICAKICAgICAgICAgR3Jh
cGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKGNvbnRleHQsIGZhbHNlKTsKLSAgICAg
ICAgRXZlbnRSZWdpb25Db250ZXh0U3RhdGVTYXZlciBldmVudFJlZ2lvblN0YXRlU2F2ZXIobG9j
YWxQYWludGluZ0luZm8uZXZlbnRSZWdpb25Db250ZXh0KTsKKyAgICAgICAgUGFpbnRDb250ZXh0
U3RhdGVTYXZlciBwYWludENvbnRleHRTdGF0ZVNhdmVyKGxvY2FsUGFpbnRpbmdJbmZvLnBhaW50
Q29udGV4dCk7CiAKICAgICAgICAgaWYgKGxvY2FsUGFpbnRpbmdJbmZvLmNsaXBUb0RpcnR5UmVj
dCkgewogICAgICAgICAgICAgLy8gUGFpbnQgb3VyIGJhY2tncm91bmQgZmlyc3QsIGJlZm9yZSBw
YWludGluZyBhbnkgY2hpbGQgbGF5ZXJzLgogICAgICAgICAgICAgLy8gRXN0YWJsaXNoIHRoZSBj
bGlwIHVzZWQgdG8gcGFpbnQgb3VyIGJhY2tncm91bmQuCi0gICAgICAgICAgICBjbGlwVG9SZWN0
KGNvbnRleHQsIHN0YXRlU2F2ZXIsIGV2ZW50UmVnaW9uU3RhdGVTYXZlciwgbG9jYWxQYWludGlu
Z0luZm8sIHBhaW50QmVoYXZpb3IsIGZyYWdtZW50LmJhY2tncm91bmRSZWN0LCBEb05vdEluY2x1
ZGVTZWxmRm9yQm9yZGVyUmFkaXVzKTsgLy8gQmFja2dyb3VuZCBwYWludGluZyB3aWxsIGhhbmRs
ZSBjbGlwcGluZyB0byBzZWxmLgorICAgICAgICAgICAgY2xpcFRvUmVjdChjb250ZXh0LCBzdGF0
ZVNhdmVyLCBwYWludENvbnRleHRTdGF0ZVNhdmVyLCBsb2NhbFBhaW50aW5nSW5mbywgcGFpbnRC
ZWhhdmlvciwgZnJhZ21lbnQuYmFja2dyb3VuZFJlY3QsIERvTm90SW5jbHVkZVNlbGZGb3JCb3Jk
ZXJSYWRpdXMpOyAvLyBCYWNrZ3JvdW5kIHBhaW50aW5nIHdpbGwgaGFuZGxlIGNsaXBwaW5nIHRv
IHNlbGYuCiAgICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIC8vIFBhaW50IHRoZSBiYWNrZ3Jv
dW5kLgpAQCAtMzY5NywxMiArMzcwMiwxMiBAQCB2b2lkIFJlbmRlckxheWVyOjpwYWludEZvcmVn
cm91bmRGb3JGcmFnbWVudHMoY29uc3QgTGF5ZXJGcmFnbWVudHMmIGxheWVyRnJhZ21lbgogICAg
ICAgICBsb2NhbFBhaW50QmVoYXZpb3IuYWRkKFBhaW50QmVoYXZpb3I6OkNvbXBvc2l0ZWRPdmVy
Zmxvd1Njcm9sbENvbnRlbnQpOwogCiAgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0
ZVNhdmVyKGNvbnRleHQsIGZhbHNlKTsKLSAgICBFdmVudFJlZ2lvbkNvbnRleHRTdGF0ZVNhdmVy
IGV2ZW50UmVnaW9uU3RhdGVTYXZlcihsb2NhbFBhaW50aW5nSW5mby5ldmVudFJlZ2lvbkNvbnRl
eHQpOworICAgIFBhaW50Q29udGV4dFN0YXRlU2F2ZXIgcGFpbnRDb250ZXh0U3RhdGVTYXZlcihs
b2NhbFBhaW50aW5nSW5mby5wYWludENvbnRleHQpOwogCiAgICAgLy8gT3B0aW1pemUgY2xpcHBp
bmcgZm9yIHRoZSBzaW5nbGUgZnJhZ21lbnQgY2FzZS4KICAgICBib29sIHNob3VsZENsaXAgPSBs
b2NhbFBhaW50aW5nSW5mby5jbGlwVG9EaXJ0eVJlY3QgJiYgbGF5ZXJGcmFnbWVudHMuc2l6ZSgp
ID09IDEgJiYgbGF5ZXJGcmFnbWVudHNbMF0uc2hvdWxkUGFpbnRDb250ZW50ICYmICFsYXllckZy
YWdtZW50c1swXS5mb3JlZ3JvdW5kUmVjdC5pc0VtcHR5KCk7CiAgICAgaWYgKHNob3VsZENsaXAp
Ci0gICAgICAgIGNsaXBUb1JlY3QoY29udGV4dCwgc3RhdGVTYXZlciwgZXZlbnRSZWdpb25TdGF0
ZVNhdmVyLCBsb2NhbFBhaW50aW5nSW5mbywgbG9jYWxQYWludEJlaGF2aW9yLCBsYXllckZyYWdt
ZW50c1swXS5mb3JlZ3JvdW5kUmVjdCk7CisgICAgICAgIGNsaXBUb1JlY3QoY29udGV4dCwgc3Rh
dGVTYXZlciwgcGFpbnRDb250ZXh0U3RhdGVTYXZlciwgbG9jYWxQYWludGluZ0luZm8sIGxvY2Fs
UGFpbnRCZWhhdmlvciwgbGF5ZXJGcmFnbWVudHNbMF0uZm9yZWdyb3VuZFJlY3QpOwogICAgIAog
ICAgIC8vIFdlIGhhdmUgdG8gbG9vcCB0aHJvdWdoIGV2ZXJ5IGZyYWdtZW50IG11bHRpcGxlIHRp
bWVzLCBzaW5jZSB3ZSBoYXZlIHRvIHJlcGFpbnQgaW4gZWFjaCBzcGVjaWZpYyBwaGFzZSBpbiBv
cmRlciBmb3IKICAgICAvLyBpbnRlcmxlYXZpbmcgb2YgdGhlIGZyYWdtZW50cyB0byB3b3JrIHBy
b3Blcmx5LgpAQCAtMzc0NCwxMCArMzc0OSwxMCBAQCB2b2lkIFJlbmRlckxheWVyOjpwYWludEZv
cmVncm91bmRGb3JGcmFnbWVudHNXaXRoUGhhc2UoUGFpbnRQaGFzZSBwaGFzZSwgY29uc3QgTAog
ICAgICAgICAgICAgY29udGludWU7CiAKICAgICAgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZl
ciBzdGF0ZVNhdmVyKGNvbnRleHQsIGZhbHNlKTsKLSAgICAgICAgRXZlbnRSZWdpb25Db250ZXh0
U3RhdGVTYXZlciBldmVudFJlZ2lvblN0YXRlU2F2ZXIobG9jYWxQYWludGluZ0luZm8uZXZlbnRS
ZWdpb25Db250ZXh0KTsKKyAgICAgICAgUGFpbnRDb250ZXh0U3RhdGVTYXZlciBwYWludENvbnRl
eHRTdGF0ZVNhdmVyKGxvY2FsUGFpbnRpbmdJbmZvLnBhaW50Q29udGV4dCk7CiAKICAgICAgICAg
aWYgKHNob3VsZENsaXApCi0gICAgICAgICAgICBjbGlwVG9SZWN0KGNvbnRleHQsIHN0YXRlU2F2
ZXIsIGV2ZW50UmVnaW9uU3RhdGVTYXZlciwgbG9jYWxQYWludGluZ0luZm8sIHBhaW50QmVoYXZp
b3IsIGZyYWdtZW50LmZvcmVncm91bmRSZWN0KTsKKyAgICAgICAgICAgIGNsaXBUb1JlY3QoY29u
dGV4dCwgc3RhdGVTYXZlciwgcGFpbnRDb250ZXh0U3RhdGVTYXZlciwgbG9jYWxQYWludGluZ0lu
Zm8sIHBhaW50QmVoYXZpb3IsIGZyYWdtZW50LmZvcmVncm91bmRSZWN0KTsKICAgICAKICAgICAg
ICAgUGFpbnRJbmZvIHBhaW50SW5mbyhjb250ZXh0LCBmcmFnbWVudC5mb3JlZ3JvdW5kUmVjdC5y
ZWN0KCksIHBoYXNlLCBwYWludEJlaGF2aW9yLCBzdWJ0cmVlUGFpbnRSb290Rm9yUmVuZGVyZXIs
IG51bGxwdHIsIG51bGxwdHIsICZsb2NhbFBhaW50aW5nSW5mby5yb290TGF5ZXItPnJlbmRlcmVy
KCksIHRoaXMsIGxvY2FsUGFpbnRpbmdJbmZvLnJlcXVpcmVTZWN1cml0eU9yaWdpbkFjY2Vzc0Zv
cldpZGdldHMpOwogICAgICAgICBpZiAocGhhc2UgPT0gUGFpbnRQaGFzZTo6Rm9yZWdyb3VuZCkK
QEAgLTM3NjcsOSArMzc3Miw5IEBAIHZvaWQgUmVuZGVyTGF5ZXI6OnBhaW50T3V0bGluZUZvckZy
YWdtZW50cyhjb25zdCBMYXllckZyYWdtZW50cyYgbGF5ZXJGcmFnbWVudHMsCiAgICAgICAgIFBh
aW50SW5mbyBwYWludEluZm8oY29udGV4dCwgZnJhZ21lbnQuYmFja2dyb3VuZFJlY3QucmVjdCgp
LCBQYWludFBoYXNlOjpTZWxmT3V0bGluZSwgcGFpbnRCZWhhdmlvciwgc3VidHJlZVBhaW50Um9v
dEZvclJlbmRlcmVyLCBudWxscHRyLCBudWxscHRyLCAmbG9jYWxQYWludGluZ0luZm8ucm9vdExh
eWVyLT5yZW5kZXJlcigpLCB0aGlzKTsKIAogICAgICAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNh
dmVyIHN0YXRlU2F2ZXIoY29udGV4dCwgZmFsc2UpOwotICAgICAgICBFdmVudFJlZ2lvbkNvbnRl
eHRTdGF0ZVNhdmVyIGV2ZW50UmVnaW9uU3RhdGVTYXZlcihsb2NhbFBhaW50aW5nSW5mby5ldmVu
dFJlZ2lvbkNvbnRleHQpOworICAgICAgICBQYWludENvbnRleHRTdGF0ZVNhdmVyIHBhaW50Q29u
dGV4dFN0YXRlU2F2ZXIobG9jYWxQYWludGluZ0luZm8ucGFpbnRDb250ZXh0KTsKIAotICAgICAg
ICBjbGlwVG9SZWN0KGNvbnRleHQsIHN0YXRlU2F2ZXIsIGV2ZW50UmVnaW9uU3RhdGVTYXZlciwg
bG9jYWxQYWludGluZ0luZm8sIHBhaW50QmVoYXZpb3IsIGZyYWdtZW50LmJhY2tncm91bmRSZWN0
LCBEb05vdEluY2x1ZGVTZWxmRm9yQm9yZGVyUmFkaXVzKTsKKyAgICAgICAgY2xpcFRvUmVjdChj
b250ZXh0LCBzdGF0ZVNhdmVyLCBwYWludENvbnRleHRTdGF0ZVNhdmVyLCBsb2NhbFBhaW50aW5n
SW5mbywgcGFpbnRCZWhhdmlvciwgZnJhZ21lbnQuYmFja2dyb3VuZFJlY3QsIERvTm90SW5jbHVk
ZVNlbGZGb3JCb3JkZXJSYWRpdXMpOwogICAgICAgICByZW5kZXJlcigpLnBhaW50KHBhaW50SW5m
bywgcGFpbnRPZmZzZXRGb3JSZW5kZXJlcihmcmFnbWVudCwgbG9jYWxQYWludGluZ0luZm8pKTsK
ICAgICB9CiB9CkBAIC0zNzgyLDEwICszNzg3LDEwIEBAIHZvaWQgUmVuZGVyTGF5ZXI6OnBhaW50
TWFza0ZvckZyYWdtZW50cyhjb25zdCBMYXllckZyYWdtZW50cyYgbGF5ZXJGcmFnbWVudHMsIEdy
CiAgICAgICAgICAgICBjb250aW51ZTsKIAogICAgICAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNh
dmVyIHN0YXRlU2F2ZXIoY29udGV4dCwgZmFsc2UpOwotICAgICAgICBFdmVudFJlZ2lvbkNvbnRl
eHRTdGF0ZVNhdmVyIGV2ZW50UmVnaW9uU3RhdGVTYXZlcihsb2NhbFBhaW50aW5nSW5mby5ldmVu
dFJlZ2lvbkNvbnRleHQpOworICAgICAgICBQYWludENvbnRleHRTdGF0ZVNhdmVyIHBhaW50Q29u
dGV4dFN0YXRlU2F2ZXIobG9jYWxQYWludGluZ0luZm8ucGFpbnRDb250ZXh0KTsKIAogICAgICAg
ICBpZiAobG9jYWxQYWludGluZ0luZm8uY2xpcFRvRGlydHlSZWN0KQotICAgICAgICAgICAgY2xp
cFRvUmVjdChjb250ZXh0LCBzdGF0ZVNhdmVyLCBldmVudFJlZ2lvblN0YXRlU2F2ZXIsIGxvY2Fs
UGFpbnRpbmdJbmZvLCBwYWludEJlaGF2aW9yLCBmcmFnbWVudC5iYWNrZ3JvdW5kUmVjdCwgRG9O
b3RJbmNsdWRlU2VsZkZvckJvcmRlclJhZGl1cyk7IC8vIE1hc2sgcGFpbnRpbmcgd2lsbCBoYW5k
bGUgY2xpcHBpbmcgdG8gc2VsZi4KKyAgICAgICAgICAgIGNsaXBUb1JlY3QoY29udGV4dCwgc3Rh
dGVTYXZlciwgcGFpbnRDb250ZXh0U3RhdGVTYXZlciwgbG9jYWxQYWludGluZ0luZm8sIHBhaW50
QmVoYXZpb3IsIGZyYWdtZW50LmJhY2tncm91bmRSZWN0LCBEb05vdEluY2x1ZGVTZWxmRm9yQm9y
ZGVyUmFkaXVzKTsgLy8gTWFzayBwYWludGluZyB3aWxsIGhhbmRsZSBjbGlwcGluZyB0byBzZWxm
LgogICAgICAgICAKICAgICAgICAgLy8gUGFpbnQgdGhlIG1hc2suCiAgICAgICAgIC8vIEZJWE1F
OiBFdmVudHVhbGx5IHdlIHdpbGwgY29sbGVjdCB0aGUgcmVnaW9uIGZyb20gdGhlIGZyYWdtZW50
IGl0c2VsZiBpbnN0ZWFkIG9mIGp1c3QgZnJvbSB0aGUgcGFpbnQgaW5mby4KQEAgLTM4MDEsMTAg
KzM4MDYsMTAgQEAgdm9pZCBSZW5kZXJMYXllcjo6cGFpbnRDaGlsZENsaXBwaW5nTWFza0ZvckZy
YWdtZW50cyhjb25zdCBMYXllckZyYWdtZW50cyYgbGF5ZXIKICAgICAgICAgICAgIGNvbnRpbnVl
OwogCiAgICAgICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcihjb250ZXh0
LCBmYWxzZSk7Ci0gICAgICAgIEV2ZW50UmVnaW9uQ29udGV4dFN0YXRlU2F2ZXIgZXZlbnRSZWdp
b25TdGF0ZVNhdmVyKGxvY2FsUGFpbnRpbmdJbmZvLmV2ZW50UmVnaW9uQ29udGV4dCk7CisgICAg
ICAgIFBhaW50Q29udGV4dFN0YXRlU2F2ZXIgcGFpbnRDb250ZXh0U3RhdGVTYXZlcihsb2NhbFBh
aW50aW5nSW5mby5wYWludENvbnRleHQpOwogCiAgICAgICAgIGlmIChsb2NhbFBhaW50aW5nSW5m
by5jbGlwVG9EaXJ0eVJlY3QpCi0gICAgICAgICAgICBjbGlwVG9SZWN0KGNvbnRleHQsIHN0YXRl
U2F2ZXIsIGV2ZW50UmVnaW9uU3RhdGVTYXZlciwgbG9jYWxQYWludGluZ0luZm8sIHBhaW50QmVo
YXZpb3IsIGZyYWdtZW50LmZvcmVncm91bmRSZWN0LCBJbmNsdWRlU2VsZkZvckJvcmRlclJhZGl1
cyk7IC8vIENoaWxkIGNsaXBwaW5nIG1hc2sgcGFpbnRpbmcgd2lsbCBoYW5kbGUgY2xpcHBpbmcg
dG8gc2VsZi4KKyAgICAgICAgICAgIGNsaXBUb1JlY3QoY29udGV4dCwgc3RhdGVTYXZlciwgcGFp
bnRDb250ZXh0U3RhdGVTYXZlciwgbG9jYWxQYWludGluZ0luZm8sIHBhaW50QmVoYXZpb3IsIGZy
YWdtZW50LmZvcmVncm91bmRSZWN0LCBJbmNsdWRlU2VsZkZvckJvcmRlclJhZGl1cyk7IC8vIENo
aWxkIGNsaXBwaW5nIG1hc2sgcGFpbnRpbmcgd2lsbCBoYW5kbGUgY2xpcHBpbmcgdG8gc2VsZi4K
IAogICAgICAgICAvLyBQYWludCB0aGUgY2xpcHBlZCBtYXNrLgogICAgICAgICBQYWludEluZm8g
cGFpbnRJbmZvKGNvbnRleHQsIGZyYWdtZW50LmJhY2tncm91bmRSZWN0LnJlY3QoKSwgUGFpbnRQ
aGFzZTo6Q2xpcHBpbmdNYXNrLCBwYWludEJlaGF2aW9yLCBzdWJ0cmVlUGFpbnRSb290Rm9yUmVu
ZGVyZXIsIG51bGxwdHIsIG51bGxwdHIsICZsb2NhbFBhaW50aW5nSW5mby5yb290TGF5ZXItPnJl
bmRlcmVyKCksIHRoaXMpOwpAQCAtMzgyMSwyNSArMzgyNiwzNiBAQCB2b2lkIFJlbmRlckxheWVy
OjpwYWludE92ZXJmbG93Q29udHJvbHNGb3JGcmFnbWVudHMoY29uc3QgTGF5ZXJGcmFnbWVudHMm
IGxheWVyRgogICAgICAgICAgICAgY29udGludWU7CiAKICAgICAgICAgR3JhcGhpY3NDb250ZXh0
U3RhdGVTYXZlciBzdGF0ZVNhdmVyKGNvbnRleHQsIGZhbHNlKTsKLSAgICAgICAgRXZlbnRSZWdp
b25Db250ZXh0U3RhdGVTYXZlciBldmVudFJlZ2lvblN0YXRlU2F2ZXIobG9jYWxQYWludGluZ0lu
Zm8uZXZlbnRSZWdpb25Db250ZXh0KTsKKyAgICAgICAgUGFpbnRDb250ZXh0U3RhdGVTYXZlciBw
YWludENvbnRleHRTdGF0ZVNhdmVyKGxvY2FsUGFpbnRpbmdJbmZvLnBhaW50Q29udGV4dCk7CiAK
LSAgICAgICAgY2xpcFRvUmVjdChjb250ZXh0LCBzdGF0ZVNhdmVyLCBldmVudFJlZ2lvblN0YXRl
U2F2ZXIsIGxvY2FsUGFpbnRpbmdJbmZvLCB7IH0sIGZyYWdtZW50LmJhY2tncm91bmRSZWN0KTsK
KyAgICAgICAgY2xpcFRvUmVjdChjb250ZXh0LCBzdGF0ZVNhdmVyLCBwYWludENvbnRleHRTdGF0
ZVNhdmVyLCBsb2NhbFBhaW50aW5nSW5mbywgeyB9LCBmcmFnbWVudC5iYWNrZ3JvdW5kUmVjdCk7
CiAgICAgICAgIG1fc2Nyb2xsYWJsZUFyZWEtPnBhaW50T3ZlcmZsb3dDb250cm9scyhjb250ZXh0
LCByb3VuZGVkSW50UG9pbnQocGFpbnRPZmZzZXRGb3JSZW5kZXJlcihmcmFnbWVudCwgbG9jYWxQ
YWludGluZ0luZm8pKSwgc25hcHBlZEludFJlY3QoZnJhZ21lbnQuYmFja2dyb3VuZFJlY3QucmVj
dCgpKSwgdHJ1ZSk7CiAgICAgfQogfQogCiB2b2lkIFJlbmRlckxheWVyOjpjb2xsZWN0RXZlbnRS
ZWdpb25Gb3JGcmFnbWVudHMoY29uc3QgTGF5ZXJGcmFnbWVudHMmIGxheWVyRnJhZ21lbnRzLCBH
cmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IExheWVyUGFpbnRpbmdJbmZvJiBsb2NhbFBh
aW50aW5nSW5mbywgT3B0aW9uU2V0PFBhaW50QmVoYXZpb3I+IHBhaW50QmVoYXZpb3IpCiB7Ci0g
ICAgQVNTRVJUKGxvY2FsUGFpbnRpbmdJbmZvLmV2ZW50UmVnaW9uQ29udGV4dCk7CisgICAgQVNT
RVJUKGxvY2FsUGFpbnRpbmdJbmZvLmV2ZW50UmVnaW9uUGFpbnRDb250ZXh0KCkpOwogICAgIGZv
ciAoY29uc3QgYXV0byYgZnJhZ21lbnQgOiBsYXllckZyYWdtZW50cykgewogICAgICAgICBQYWlu
dEluZm8gcGFpbnRJbmZvKGNvbnRleHQsIGZyYWdtZW50LmZvcmVncm91bmRSZWN0LnJlY3QoKSwg
UGFpbnRQaGFzZTo6RXZlbnRSZWdpb24sIHBhaW50QmVoYXZpb3IpOwotICAgICAgICBwYWludElu
Zm8uZXZlbnRSZWdpb25Db250ZXh0ID0gbG9jYWxQYWludGluZ0luZm8uZXZlbnRSZWdpb25Db250
ZXh0OworICAgICAgICBwYWludEluZm8ucGFpbnRDb250ZXh0ID0gbG9jYWxQYWludGluZ0luZm8u
cGFpbnRDb250ZXh0OwogICAgICAgICBpZiAobG9jYWxQYWludGluZ0luZm8uY2xpcFRvRGlydHlS
ZWN0KSAvLyBjbGlwLXBhdGg/Ci0gICAgICAgICAgICBwYWludEluZm8uZXZlbnRSZWdpb25Db250
ZXh0LT5wdXNoQ2xpcChlbmNsb3NpbmdJbnRSZWN0KGZyYWdtZW50LmJhY2tncm91bmRSZWN0LnJl
Y3QoKSkpOworICAgICAgICAgICAgcGFpbnRJbmZvLnBhaW50Q29udGV4dC0+cHVzaENsaXAoZW5j
bG9zaW5nSW50UmVjdChmcmFnbWVudC5iYWNrZ3JvdW5kUmVjdC5yZWN0KCkpKTsKIAogICAgICAg
ICByZW5kZXJlcigpLnBhaW50KHBhaW50SW5mbywgcGFpbnRPZmZzZXRGb3JSZW5kZXJlcihmcmFn
bWVudCwgbG9jYWxQYWludGluZ0luZm8pKTsKICAgICAgICAgaWYgKGxvY2FsUGFpbnRpbmdJbmZv
LmNsaXBUb0RpcnR5UmVjdCkKLSAgICAgICAgICAgIHBhaW50SW5mby5ldmVudFJlZ2lvbkNvbnRl
eHQtPnBvcENsaXAoKTsKKyAgICAgICAgICAgIHBhaW50SW5mby5wYWludENvbnRleHQtPnBvcENs
aXAoKTsKKyAgICB9Cit9CisKK3ZvaWQgUmVuZGVyTGF5ZXI6OmNvbGxlY3RBY2Nlc3NpYmlsaXR5
UmVjdHNGb3JGcmFnbWVudHMoY29uc3QgTGF5ZXJGcmFnbWVudHMmIGxheWVyRnJhZ21lbnRzLCBH
cmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IExheWVyUGFpbnRpbmdJbmZvJiBsb2NhbFBh
aW50aW5nSW5mbywgT3B0aW9uU2V0PFBhaW50QmVoYXZpb3I+IHBhaW50QmVoYXZpb3IpCit7Cisg
ICAgQVNTRVJUKGNvbnRleHQuaW52YWxpZGF0aW5nQWNjZXNzaWJpbGl0eU9iamVjdFJlY3RzKCkp
OworICAgIGZvciAoY29uc3QgYXV0byYgZnJhZ21lbnQgOiBsYXllckZyYWdtZW50cykgeworICAg
ICAgICBQYWludEluZm8gcGFpbnRJbmZvKGNvbnRleHQsIGZyYWdtZW50LmZvcmVncm91bmRSZWN0
LnJlY3QoKSwgUGFpbnRQaGFzZTo6QWNjZXNzaWJpbGl0eSwgcGFpbnRCZWhhdmlvcik7CisgICAg
ICAgIHBhaW50SW5mby5wYWludENvbnRleHQgPSBsb2NhbFBhaW50aW5nSW5mby5wYWludENvbnRl
eHQ7CisKKyAgICAgICAgcmVuZGVyZXIoKS5wYWludChwYWludEluZm8sIHBhaW50T2Zmc2V0Rm9y
UmVuZGVyZXIoZnJhZ21lbnQsIGxvY2FsUGFpbnRpbmdJbmZvKSk7CiAgICAgfQogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuaCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5oCmluZGV4IDFhODRlNDlhNDAwYi4uODNkMjU3
M2M2ZjJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuaApAQCAtNjcsMTAg
KzY3LDEwIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIENTU0ZpbHRlcjsKIGNsYXNzIENs
aXBSZWN0czsKIGNsYXNzIENsaXBSZWN0c0NhY2hlOwotY2xhc3MgRXZlbnRSZWdpb25Db250ZXh0
OwogY2xhc3MgSGl0VGVzdFJlcXVlc3Q7CiBjbGFzcyBIaXRUZXN0UmVzdWx0OwogY2xhc3MgSGl0
VGVzdGluZ1RyYW5zZm9ybVN0YXRlOworY2xhc3MgUGFpbnRDb250ZXh0OwogY2xhc3MgUmVnaW9u
OwogY2xhc3MgUmVuZGVyRnJhZ21lbnRlZEZsb3c7CiBjbGFzcyBSZW5kZXJHZW9tZXRyeU1hcDsK
QEAgLTYzOSw3ICs2MzksNyBAQCBwdWJsaWM6CiAgICAgLy8gZnJvbnQuICBUaGUgaGl0VGVzdCBt
ZXRob2QgbG9va3MgZm9yIG1vdXNlIGV2ZW50cyBieSB3YWxraW5nCiAgICAgLy8gbGF5ZXJzIHRo
YXQgaW50ZXJzZWN0IHRoZSBwb2ludCBmcm9tIGZyb250IHRvIGJhY2suCiAgICAgdm9pZCBwYWlu
dChHcmFwaGljc0NvbnRleHQmLCBjb25zdCBMYXlvdXRSZWN0JiBkYW1hZ2VSZWN0LCBjb25zdCBM
YXlvdXRTaXplJiBzdWJwaXhlbE9mZnNldCA9IExheW91dFNpemUoKSwgT3B0aW9uU2V0PFBhaW50
QmVoYXZpb3I+ID0gUGFpbnRCZWhhdmlvcjo6Tm9ybWFsLAotICAgICAgICBSZW5kZXJPYmplY3Qq
IHN1YnRyZWVQYWludFJvb3QgPSBudWxscHRyLCBPcHRpb25TZXQ8UGFpbnRMYXllckZsYWc+ID0g
eyB9LCBTZWN1cml0eU9yaWdpblBhaW50UG9saWN5ID0gU2VjdXJpdHlPcmlnaW5QYWludFBvbGlj
eTo6QW55T3JpZ2luLCBFdmVudFJlZ2lvbkNvbnRleHQqID0gbnVsbHB0cik7CisgICAgICAgIFJl
bmRlck9iamVjdCogc3VidHJlZVBhaW50Um9vdCA9IG51bGxwdHIsIE9wdGlvblNldDxQYWludExh
eWVyRmxhZz4gPSB7IH0sIFNlY3VyaXR5T3JpZ2luUGFpbnRQb2xpY3kgPSBTZWN1cml0eU9yaWdp
blBhaW50UG9saWN5OjpBbnlPcmlnaW4sIFBhaW50Q29udGV4dCogPSBudWxscHRyKTsKICAgICBX
RUJDT1JFX0VYUE9SVCBib29sIGhpdFRlc3QoY29uc3QgSGl0VGVzdFJlcXVlc3QmLCBIaXRUZXN0
UmVzdWx0Jik7CiAgICAgYm9vbCBoaXRUZXN0KGNvbnN0IEhpdFRlc3RSZXF1ZXN0JiwgY29uc3Qg
SGl0VGVzdExvY2F0aW9uJiwgSGl0VGVzdFJlc3VsdCYpOwogCkBAIC05MzMsNyArOTMzLDcgQEAg
cHJpdmF0ZToKICAgICAgICAgT3B0aW9uU2V0PFBhaW50QmVoYXZpb3I+IHBhaW50QmVoYXZpb3I7
CiAgICAgICAgIGJvb2wgcmVxdWlyZVNlY3VyaXR5T3JpZ2luQWNjZXNzRm9yV2lkZ2V0czsKICAg
ICAgICAgYm9vbCBjbGlwVG9EaXJ0eVJlY3QgeyB0cnVlIH07Ci0gICAgICAgIEV2ZW50UmVnaW9u
Q29udGV4dCogZXZlbnRSZWdpb25Db250ZXh0IHsgbnVsbHB0ciB9OworICAgICAgICBQYWludENv
bnRleHQqIHBhaW50Q29udGV4dCB7IG51bGxwdHIgfTsKICAgICB9OwogCiAgICAgTGF5b3V0UG9p
bnQgcGFpbnRPZmZzZXRGb3JSZW5kZXJlcihjb25zdCBMYXllckZyYWdtZW50JiBmcmFnbWVudCwg
Y29uc3QgTGF5ZXJQYWludGluZ0luZm8mIHBhaW50aW5nSW5mbykgY29uc3QKQEAgLTk1OSw3ICs5
NTksNyBAQCBwcml2YXRlOgogCiAgICAgTGF5b3V0UmVjdCBjbGlwUmVjdFJlbGF0aXZlVG9BbmNl
c3RvcihSZW5kZXJMYXllciogYW5jZXN0b3IsIExheW91dFNpemUgb2Zmc2V0RnJvbUFuY2VzdG9y
LCBjb25zdCBMYXlvdXRSZWN0JiBjb25zdHJhaW5pbmdSZWN0KSBjb25zdDsKIAotICAgIHZvaWQg
Y2xpcFRvUmVjdChHcmFwaGljc0NvbnRleHQmLCBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyJiwg
RXZlbnRSZWdpb25Db250ZXh0U3RhdGVTYXZlciYsIGNvbnN0IExheWVyUGFpbnRpbmdJbmZvJiwg
T3B0aW9uU2V0PFBhaW50QmVoYXZpb3I+LCBjb25zdCBDbGlwUmVjdCYsIEJvcmRlclJhZGl1c0Ns
aXBwaW5nUnVsZSA9IEluY2x1ZGVTZWxmRm9yQm9yZGVyUmFkaXVzKTsKKyAgICB2b2lkIGNsaXBU
b1JlY3QoR3JhcGhpY3NDb250ZXh0JiwgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciYsIFBhaW50
Q29udGV4dFN0YXRlU2F2ZXImLCBjb25zdCBMYXllclBhaW50aW5nSW5mbyYsIE9wdGlvblNldDxQ
YWludEJlaGF2aW9yPiwgY29uc3QgQ2xpcFJlY3QmLCBCb3JkZXJSYWRpdXNDbGlwcGluZ1J1bGUg
PSBJbmNsdWRlU2VsZkZvckJvcmRlclJhZGl1cyk7CiAKICAgICBib29sIHNob3VsZFJlcGFpbnRB
ZnRlckxheW91dCgpIGNvbnN0OwogCkBAIC0xMDc2LDcgKzEwNzYsNyBAQCBwcml2YXRlOgogCiAg
ICAgc3RkOjpwYWlyPFBhdGgsIFdpbmRSdWxlPiBjb21wdXRlQ2xpcFBhdGgoY29uc3QgTGF5b3V0
U2l6ZSYgb2Zmc2V0RnJvbVJvb3QsIGNvbnN0IExheW91dFJlY3QmIHJvb3RSZWxhdGl2ZUJvdW5k
c0Zvck5vbkJveGVzKSBjb25zdDsKIAotICAgIHZvaWQgc2V0dXBDbGlwUGF0aChHcmFwaGljc0Nv
bnRleHQmLCBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyJiwgRXZlbnRSZWdpb25Db250ZXh0U3Rh
dGVTYXZlciYsIGNvbnN0IExheWVyUGFpbnRpbmdJbmZvJiwgT3B0aW9uU2V0PFBhaW50TGF5ZXJG
bGFnPiwgY29uc3QgTGF5b3V0U2l6ZSYgb2Zmc2V0RnJvbVJvb3QpOworICAgIHZvaWQgc2V0dXBD
bGlwUGF0aChHcmFwaGljc0NvbnRleHQmLCBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyJiwgUGFp
bnRDb250ZXh0U3RhdGVTYXZlciYsIGNvbnN0IExheWVyUGFpbnRpbmdJbmZvJiwgT3B0aW9uU2V0
PFBhaW50TGF5ZXJGbGFnPiwgY29uc3QgTGF5b3V0U2l6ZSYgb2Zmc2V0RnJvbVJvb3QpOwogCiAg
ICAgdm9pZCBlbnN1cmVMYXllckZpbHRlcnMoKTsKICAgICB2b2lkIGNsZWFyTGF5ZXJGaWx0ZXJz
KCk7CkBAIC0xMTA4LDYgKzExMDgsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgcGFpbnRDaGlsZENs
aXBwaW5nTWFza0ZvckZyYWdtZW50cyhjb25zdCBMYXllckZyYWdtZW50cyYsIEdyYXBoaWNzQ29u
dGV4dCYsIGNvbnN0IExheWVyUGFpbnRpbmdJbmZvJiwgT3B0aW9uU2V0PFBhaW50QmVoYXZpb3I+
LCBSZW5kZXJPYmplY3QqIHBhaW50aW5nUm9vdEZvclJlbmRlcmVyKTsKICAgICB2b2lkIHBhaW50
VHJhbnNmb3JtZWRMYXllckludG9GcmFnbWVudHMoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgTGF5
ZXJQYWludGluZ0luZm8mLCBPcHRpb25TZXQ8UGFpbnRMYXllckZsYWc+KTsKICAgICB2b2lkIGNv
bGxlY3RFdmVudFJlZ2lvbkZvckZyYWdtZW50cyhjb25zdCBMYXllckZyYWdtZW50cyYsIEdyYXBo
aWNzQ29udGV4dCYsIGNvbnN0IExheWVyUGFpbnRpbmdJbmZvJiwgT3B0aW9uU2V0PFBhaW50QmVo
YXZpb3I+KTsKKyAgICB2b2lkIGNvbGxlY3RBY2Nlc3NpYmlsaXR5UmVjdHNGb3JGcmFnbWVudHMo
Y29uc3QgTGF5ZXJGcmFnbWVudHMmLCBHcmFwaGljc0NvbnRleHQmLCBjb25zdCBMYXllclBhaW50
aW5nSW5mbyYsIE9wdGlvblNldDxQYWludEJlaGF2aW9yPik7CiAKICAgICBSZW5kZXJMYXllciog
dHJhbnNwYXJlbnRQYWludGluZ0FuY2VzdG9yKCk7CiAgICAgdm9pZCBiZWdpblRyYW5zcGFyZW5j
eUxheWVycyhHcmFwaGljc0NvbnRleHQmLCBjb25zdCBMYXllclBhaW50aW5nSW5mbyYsIGNvbnN0
IExheW91dFJlY3QmIGRpcnR5UmVjdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJMYXllckJhY2tpbmcuY3BwCmluZGV4IGJjMjIwMzk4ODZiYy4uNzMyZDkzNWZhNGNlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcApA
QCAtMzQwOCw3ICszNDA4LDcgQEAgdm9pZCBSZW5kZXJMYXllckJhY2tpbmc6OnNldENvbnRlbnRz
TmVlZERpc3BsYXlJblJlY3QoY29uc3QgTGF5b3V0UmVjdCYgciwgR3JhcGgKIAogdm9pZCBSZW5k
ZXJMYXllckJhY2tpbmc6OnBhaW50SW50b0xheWVyKGNvbnN0IEdyYXBoaWNzTGF5ZXIqIGdyYXBo
aWNzTGF5ZXIsIEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwKICAgICBjb25zdCBJbnRSZWN0JiBw
YWludERpcnR5UmVjdCwgLy8gSW4gdGhlIGNvb3JkcyBvZiByb290TGF5ZXIuCi0gICAgT3B0aW9u
U2V0PFBhaW50QmVoYXZpb3I+IHBhaW50QmVoYXZpb3IsIEV2ZW50UmVnaW9uQ29udGV4dCogZXZl
bnRSZWdpb25Db250ZXh0KQorICAgIE9wdGlvblNldDxQYWludEJlaGF2aW9yPiBwYWludEJlaGF2
aW9yLCBQYWludENvbnRleHQqIHBhaW50Q29udGV4dCkKIHsKICNpZiBVU0UoT1dOSU5HX0xBWUVS
X0JFQVJfVFJBUCkKICAgICBSRUxFQVNFX0FTU0VSVF9XSVRIX01FU1NBR0UobV9vd25pbmdMYXll
ckJlYXJUcmFwID09IEJFQVJfVFJBUF9WQUxVRSwgIlJlbmRlckxheWVyQmFja2luZzo6cGFpbnRJ
bnRvTGF5ZXIoKTogbV9vd25pbmdMYXllckJlYXJUcmFwIGNhdWdodCB0aGUgYmVhciAoNTU2OTky
OTIpIik7CkBAIC0zNDI3LDE0ICszNDI3LDE0IEBAIHZvaWQgUmVuZGVyTGF5ZXJCYWNraW5nOjpw
YWludEludG9MYXllcihjb25zdCBHcmFwaGljc0xheWVyKiBncmFwaGljc0xheWVyLCBHcmFwCiAK
ICAgICBhdXRvIHBhaW50RmxhZ3MgPSBwYWludEZsYWdzRm9yTGF5ZXIoKmdyYXBoaWNzTGF5ZXIp
OwogCi0gICAgaWYgKGV2ZW50UmVnaW9uQ29udGV4dCkKKyAgICBpZiAoaXM8RXZlbnRSZWdpb25D
b250ZXh0PihwYWludENvbnRleHQpKQogICAgICAgICBwYWludEZsYWdzLmFkZChSZW5kZXJMYXll
cjo6UGFpbnRMYXllckZsYWc6OkNvbGxlY3RpbmdFdmVudFJlZ2lvbik7CiAKICAgICBSZW5kZXJP
YmplY3Q6OlNldExheW91dE5lZWRlZEZvcmJpZGRlblNjb3BlIGZvcmJpZFNldE5lZWRzTGF5b3V0
KHJlbmRlcmVyKCkpOwogCiAgICAgYXV0byBwYWludE9uZUxheWVyID0gWyZdKFJlbmRlckxheWVy
JiBsYXllciwgT3B0aW9uU2V0PFJlbmRlckxheWVyOjpQYWludExheWVyRmxhZz4gcGFpbnRGbGFn
cykgewogICAgICAgICBMb2NhbEZyYW1lVmlldzo6UGFpbnRpbmdTdGF0ZSBwYWludGluZ1N0YXRl
OwotICAgICAgICBpZiAoIWV2ZW50UmVnaW9uQ29udGV4dCkgeworICAgICAgICBpZiAoIXBhaW50
Q29udGV4dCkgewogICAgICAgICAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsUGFp
bnQobGF5ZXIucmVuZGVyZXIoKSk7CiAKICAgICAgICAgICAgIGlmIChsYXllci5pc1JlbmRlclZp
ZXdMYXllcigpKQpAQCAtMzQ0MiwxOCArMzQ0MiwxOCBAQCB2b2lkIFJlbmRlckxheWVyQmFja2lu
Zzo6cGFpbnRJbnRvTGF5ZXIoY29uc3QgR3JhcGhpY3NMYXllciogZ3JhcGhpY3NMYXllciwgR3Jh
cAogICAgICAgICB9CiAKICAgICAgICAgUmVuZGVyTGF5ZXI6OkxheWVyUGFpbnRpbmdJbmZvIHBh
aW50aW5nSW5mbygmbV9vd25pbmdMYXllciwgcGFpbnREaXJ0eVJlY3QsIHBhaW50QmVoYXZpb3Is
IC1tX3N1YnBpeGVsT2Zmc2V0RnJvbVJlbmRlcmVyKTsKLSAgICAgICAgcGFpbnRpbmdJbmZvLmV2
ZW50UmVnaW9uQ29udGV4dCA9IGV2ZW50UmVnaW9uQ29udGV4dDsKKyAgICAgICAgcGFpbnRpbmdJ
bmZvLnBhaW50Q29udGV4dCA9IHBhaW50Q29udGV4dDsKIAogICAgICAgICBpZiAoJmxheWVyID09
ICZtX293bmluZ0xheWVyKSB7CiAgICAgICAgICAgICBsYXllci5wYWludExheWVyQ29udGVudHMo
Y29udGV4dCwgcGFpbnRpbmdJbmZvLCBwYWludEZsYWdzKTsKIAogICAgICAgICAgICAgYXV0byog
c2Nyb2xsYWJsZUFyZWEgPSBsYXllci5zY3JvbGxhYmxlQXJlYSgpOwotICAgICAgICAgICAgaWYg
KHNjcm9sbGFibGVBcmVhICYmIHNjcm9sbGFibGVBcmVhLT5jb250YWluc0RpcnR5T3ZlcmxheVNj
cm9sbGJhcnMoKSAmJiAhZXZlbnRSZWdpb25Db250ZXh0KQorICAgICAgICAgICAgaWYgKHNjcm9s
bGFibGVBcmVhICYmIHNjcm9sbGFibGVBcmVhLT5jb250YWluc0RpcnR5T3ZlcmxheVNjcm9sbGJh
cnMoKSAmJiAhcGFpbnRDb250ZXh0KQogICAgICAgICAgICAgICAgIGxheWVyLnBhaW50TGF5ZXJD
b250ZW50cyhjb250ZXh0LCBwYWludGluZ0luZm8sIHBhaW50RmxhZ3MgfCBSZW5kZXJMYXllcjo6
UGFpbnRMYXllckZsYWc6OlBhaW50aW5nT3ZlcmxheVNjcm9sbGJhcnMpOwogICAgICAgICB9IGVs
c2UKICAgICAgICAgICAgIGxheWVyLnBhaW50TGF5ZXJXaXRoRWZmZWN0cyhjb250ZXh0LCBwYWlu
dGluZ0luZm8sIHBhaW50RmxhZ3MpOwogCi0gICAgICAgIGlmICghZXZlbnRSZWdpb25Db250ZXh0
KSB7CisgICAgICAgIGlmICghcGFpbnRDb250ZXh0KSB7CiAgICAgICAgICAgICBpZiAobGF5ZXIu
aXNSZW5kZXJWaWV3TGF5ZXIoKSkKICAgICAgICAgICAgICAgICByZW5kZXJlcigpLnZpZXcoKS5m
cmFtZVZpZXcoKS5kaWRQYWludENvbnRlbnRzKGNvbnRleHQsIHBhaW50RGlydHlSZWN0LCBwYWlu
dGluZ1N0YXRlKTsKIApAQCAtMzQ3NSwxNCArMzQ3NSwxNCBAQCB2b2lkIFJlbmRlckxheWVyQmFj
a2luZzo6cGFpbnRJbnRvTGF5ZXIoY29uc3QgR3JhcGhpY3NMYXllciogZ3JhcGhpY3NMYXllciwg
R3JhcAogCiAgICAgICAgIGlmIChncmFwaGljc0xheWVyLT5wYWludGluZ1BoYXNlKCkuY29udGFp
bnMoR3JhcGhpY3NMYXllclBhaW50aW5nUGhhc2U6Ok92ZXJmbG93Q29udGVudHMpKQogICAgICAg
ICAgICAgc2hhcmluZ0xheWVyUGFpbnRGbGFncy5hZGQoUmVuZGVyTGF5ZXI6OlBhaW50TGF5ZXJG
bGFnOjpQYWludGluZ092ZXJmbG93Q29udGVudHMpOwotICAgICAgICBpZiAoZXZlbnRSZWdpb25D
b250ZXh0KQorICAgICAgICBpZiAoaXM8RXZlbnRSZWdpb25Db250ZXh0PihwYWludENvbnRleHQp
KQogICAgICAgICAgICAgc2hhcmluZ0xheWVyUGFpbnRGbGFncy5hZGQoUmVuZGVyTGF5ZXI6OlBh
aW50TGF5ZXJGbGFnOjpDb2xsZWN0aW5nRXZlbnRSZWdpb24pOwogCiAgICAgICAgIGZvciAoYXV0
byYgbGF5ZXJXZWFrUHRyIDogbV9iYWNraW5nU2hhcmluZ0xheWVycykKICAgICAgICAgICAgIHBh
aW50T25lTGF5ZXIoKmxheWVyV2Vha1B0ciwgc2hhcmluZ0xheWVyUGFpbnRGbGFncyk7CiAgICAg
fQogCi0gICAgaWYgKCFldmVudFJlZ2lvbkNvbnRleHQpCisgICAgaWYgKCFwYWludENvbnRleHQp
CiAgICAgICAgIGNvbXBvc2l0b3IoKS5kaWRQYWludEJhY2tpbmcodGhpcyk7CiAKICNpZiBVU0Uo
T1dOSU5HX0xBWUVSX0JFQVJfVFJBUCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJMYXllckJhY2tpbmcuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJMYXllckJhY2tpbmcuaAppbmRleCBjMDRiOTNkNmI1OGYuLmE5YjBmNGQ3MDM5YiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuaApAQCAtMzUsOSAr
MzUsOSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIEV2ZW50UmVnaW9uQ29udGV4
dDsKIGNsYXNzIEtleWZyYW1lTGlzdDsKIGNsYXNzIFBhaW50ZWRDb250ZW50c0luZm87CitjbGFz
cyBQYWludENvbnRleHQ7CiBjbGFzcyBSZW5kZXJMYXllckNvbXBvc2l0b3I7CiBjbGFzcyBUaWxl
ZEJhY2tpbmc7CiBjbGFzcyBUcmFuc2Zvcm1hdGlvbk1hdHJpeDsKQEAgLTM5Niw3ICszOTYsNyBA
QCBwcml2YXRlOgogICAgIGJvb2wgaGFzVGlsZWRCYWNraW5nRmxhdHRlbmluZ0xheWVyKCkgY29u
c3QgeyByZXR1cm4gKG1fY2hpbGRDb250YWlubWVudExheWVyICYmIG1faXNGcmFtZUxheWVyV2l0
aFRpbGVkQmFja2luZyk7IH0KICAgICBHcmFwaGljc0xheWVyKiB0aWxlQ2FjaGVGbGF0dGVuaW5n
TGF5ZXIoKSBjb25zdCB7IHJldHVybiBtX2lzRnJhbWVMYXllcldpdGhUaWxlZEJhY2tpbmcgPyBt
X2NoaWxkQ29udGFpbm1lbnRMYXllci5nZXQoKSA6IG51bGxwdHI7IH0KIAotICAgIHZvaWQgcGFp
bnRJbnRvTGF5ZXIoY29uc3QgR3JhcGhpY3NMYXllciosIEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0
IEludFJlY3QmIHBhaW50RGlydHlSZWN0LCBPcHRpb25TZXQ8UGFpbnRCZWhhdmlvcj4sIEV2ZW50
UmVnaW9uQ29udGV4dCogPSBudWxscHRyKTsKKyAgICB2b2lkIHBhaW50SW50b0xheWVyKGNvbnN0
IEdyYXBoaWNzTGF5ZXIqLCBHcmFwaGljc0NvbnRleHQmLCBjb25zdCBJbnRSZWN0JiBwYWludERp
cnR5UmVjdCwgT3B0aW9uU2V0PFBhaW50QmVoYXZpb3I+LCBQYWludENvbnRleHQqID0gbnVsbHB0
cik7CiAgICAgT3B0aW9uU2V0PFJlbmRlckxheWVyOjpQYWludExheWVyRmxhZz4gcGFpbnRGbGFn
c0ZvckxheWVyKGNvbnN0IEdyYXBoaWNzTGF5ZXImKSBjb25zdDsKICAgICAKICAgICB2b2lkIHBh
aW50RGVidWdPdmVybGF5cyhjb25zdCBHcmFwaGljc0xheWVyKiwgR3JhcGhpY3NDb250ZXh0Jik7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdE1hcmtlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdE1hcmtlci5jcHAKaW5kZXgg
MjQ2ZWNlMjczYTNlLi40YzAwMTI3ODIwZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJMaXN0TWFya2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyTGlzdE1hcmtlci5jcHAKQEAgLTE1ODQsNyArMTU4NCw3IEBAIGF1dG8gUmVuZGVy
TGlzdE1hcmtlcjo6dGV4dFJ1bigpIGNvbnN0IC0+IFRleHRSdW5XaXRoVW5kZXJseWluZ1N0cmlu
ZwogCiB2b2lkIFJlbmRlckxpc3RNYXJrZXI6OnBhaW50KFBhaW50SW5mbyYgcGFpbnRJbmZvLCBj
b25zdCBMYXlvdXRQb2ludCYgcGFpbnRPZmZzZXQpCiB7Ci0gICAgaWYgKHBhaW50SW5mby5waGFz
ZSAhPSBQYWludFBoYXNlOjpGb3JlZ3JvdW5kKQorICAgIGlmIChwYWludEluZm8ucGhhc2UgIT0g
UGFpbnRQaGFzZTo6Rm9yZWdyb3VuZCAmJiBwYWludEluZm8ucGhhc2UgIT0gUGFpbnRQaGFzZTo6
QWNjZXNzaWJpbGl0eSkKICAgICAgICAgcmV0dXJuOwogICAgIAogICAgIGlmIChzdHlsZSgpLnZp
c2liaWxpdHkoKSAhPSBWaXNpYmlsaXR5OjpWaXNpYmxlKQpAQCAtMTYwMCw2ICsxNjAwLDEyIEBA
IHZvaWQgUmVuZGVyTGlzdE1hcmtlcjo6cGFpbnQoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0
IExheW91dFBvaW50JiBwYWludE9mZnNlCiAgICAgCiAgICAgYXV0byBtYXJrZXJSZWN0ID0gcmVs
YXRpdmVNYXJrZXJSZWN0KCk7CiAgICAgbWFya2VyUmVjdC5tb3ZlQnkoYm94T3JpZ2luKTsKKwor
ICAgIGlmIChwYWludEluZm8ucGhhc2UgPT0gUGFpbnRQaGFzZTo6QWNjZXNzaWJpbGl0eSkgewor
ICAgICAgICBwYWludEluZm8uYWNjZXNzaWJpbGl0eVBhaW50Q29udGV4dCgpLT50YWtlQm91bmRz
KCp0aGlzLCBtYXJrZXJSZWN0KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwogICAgIGlmICht
YXJrZXJSZWN0LmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUmVwbGFjZWQuY3BwIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlclJlcGxhY2VkLmNwcAppbmRleCAxMzQxNjFhMTZhNjUuLmU5ZWUyZjNi
MGRiNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJlcGxhY2Vk
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUmVwbGFjZWQuY3BwCkBA
IC0yMTcsMTEgKzIxNywxNiBAQCB2b2lkIFJlbmRlclJlcGxhY2VkOjpwYWludChQYWludEluZm8m
IHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50T2Zmc2V0KQogICAgICAgICBpZiAo
dmlzaWJsZVRvSGl0VGVzdGluZygpKSB7CiAgICAgICAgICAgICBhdXRvIGJvcmRlclJlY3QgPSBM
YXlvdXRSZWN0KGFkanVzdGVkUGFpbnRPZmZzZXQsIHNpemUoKSk7CiAgICAgICAgICAgICBhdXRv
IGJvcmRlclJlZ2lvbiA9IGFwcHJveGltYXRlQXNSZWdpb24oc3R5bGUoKS5nZXRSb3VuZGVkQm9y
ZGVyRm9yKGJvcmRlclJlY3QpKTsKLSAgICAgICAgICAgIHBhaW50SW5mby5ldmVudFJlZ2lvbkNv
bnRleHQtPnVuaXRlKGJvcmRlclJlZ2lvbiwgKnRoaXMsIHN0eWxlKCkpOworICAgICAgICAgICAg
cGFpbnRJbmZvLmV2ZW50UmVnaW9uUGFpbnRDb250ZXh0KCktPnVuaXRlKGJvcmRlclJlZ2lvbiwg
KnRoaXMsIHN0eWxlKCkpOwogICAgICAgICB9CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKKyAg
ICBpZiAocGFpbnRJbmZvLnBoYXNlID09IFBhaW50UGhhc2U6OkFjY2Vzc2liaWxpdHkpIHsKKyAg
ICAgICAgcGFpbnRJbmZvLmFjY2Vzc2liaWxpdHlQYWludENvbnRleHQoKS0+dGFrZUJvdW5kcygq
dGhpcywgRmxvYXRSZWN0KGFkanVzdGVkUGFpbnRPZmZzZXQsIHNpemUoKSkpOworICAgICAgICBy
ZXR1cm47CisgICAgfQorCiAgICAgU2V0TGF5b3V0TmVlZGVkRm9yYmlkZGVuU2NvcGUgc2NvcGUo
KnRoaXMpOwogCiAgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzYXZlZEdyYXBoaWNzQ29u
dGV4dChwYWludEluZm8uY29udGV4dCgpLCBmYWxzZSk7CkBAIC0zMTEsNyArMzE2LDggQEAgYm9v
bCBSZW5kZXJSZXBsYWNlZDo6c2hvdWxkUGFpbnQoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0
IExheW91dFBvaW50JiBwYWludE8KICAgICAgICAgJiYgcGFpbnRJbmZvLnBoYXNlICE9IFBhaW50
UGhhc2U6OlNlbGZPdXRsaW5lCiAgICAgICAgICYmIHBhaW50SW5mby5waGFzZSAhPSBQYWludFBo
YXNlOjpTZWxlY3Rpb24KICAgICAgICAgJiYgcGFpbnRJbmZvLnBoYXNlICE9IFBhaW50UGhhc2U6
Ok1hc2sKLSAgICAgICAgJiYgcGFpbnRJbmZvLnBoYXNlICE9IFBhaW50UGhhc2U6OkV2ZW50UmVn
aW9uKQorICAgICAgICAmJiBwYWludEluZm8ucGhhc2UgIT0gUGFpbnRQaGFzZTo6RXZlbnRSZWdp
b24KKyAgICAgICAgJiYgcGFpbnRJbmZvLnBoYXNlICE9IFBhaW50UGhhc2U6OkFjY2Vzc2liaWxp
dHkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGlmICghcGFpbnRJbmZvLnNob3VsZFBh
aW50V2l0aGluUm9vdCgqdGhpcykpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyU2Nyb2xsYmFyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJT
Y3JvbGxiYXIuY3BwCmluZGV4IDAyMGM4ZWMyOTU2Mi4uMDhjY2M1MWQwZTRlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU2Nyb2xsYmFyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU2Nyb2xsYmFyLmNwcApAQCAtMTAwLDcgKzEwMCw3
IEBAIHZvaWQgUmVuZGVyU2Nyb2xsYmFyOjpzdHlsZUNoYW5nZWQoKQogICAgIHVwZGF0ZVNjcm9s
bGJhclBhcnRzKCk7CiB9CiAKLXZvaWQgUmVuZGVyU2Nyb2xsYmFyOjpwYWludChHcmFwaGljc0Nv
bnRleHQmIGNvbnRleHQsIGNvbnN0IEludFJlY3QmIGRhbWFnZVJlY3QsIFdpZGdldDo6U2VjdXJp
dHlPcmlnaW5QYWludFBvbGljeSwgRXZlbnRSZWdpb25Db250ZXh0KikKK3ZvaWQgUmVuZGVyU2Ny
b2xsYmFyOjpwYWludChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEludFJlY3QmIGRh
bWFnZVJlY3QsIFdpZGdldDo6U2VjdXJpdHlPcmlnaW5QYWludFBvbGljeSwgUGFpbnRDb250ZXh0
KikKIHsKICAgICBpZiAoY29udGV4dC5pbnZhbGlkYXRpbmdDb250cm9sVGludHMoKSkgewogICAg
ICAgICB1cGRhdGVTY3JvbGxiYXJQYXJ0cygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlclNjcm9sbGJhci5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlclNjcm9sbGJhci5oCmluZGV4IGQ0NjU1Y2YxNzVkMy4uZDYxNDI5ODk1MWFiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU2Nyb2xsYmFyLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNjcm9sbGJhci5oCkBAIC02OCw3ICs2OCw3IEBA
IHByaXZhdGU6CiAgICAgdm9pZCBzZXRQYXJlbnQoU2Nyb2xsVmlldyopIG92ZXJyaWRlOwogICAg
IHZvaWQgc2V0RW5hYmxlZChib29sKSBvdmVycmlkZTsKIAotICAgIHZvaWQgcGFpbnQoR3JhcGhp
Y3NDb250ZXh0JiwgY29uc3QgSW50UmVjdCYgZGFtYWdlUmVjdCwgV2lkZ2V0OjpTZWN1cml0eU9y
aWdpblBhaW50UG9saWN5LCBFdmVudFJlZ2lvbkNvbnRleHQqKSBvdmVycmlkZTsKKyAgICB2b2lk
IHBhaW50KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEludFJlY3QmIGRhbWFnZVJlY3QsIFdpZGdl
dDo6U2VjdXJpdHlPcmlnaW5QYWludFBvbGljeSwgUGFpbnRDb250ZXh0Kikgb3ZlcnJpZGU7CiAK
ICAgICB2b2lkIHNldEhvdmVyZWRQYXJ0KFNjcm9sbGJhclBhcnQpIG92ZXJyaWRlOwogICAgIHZv
aWQgc2V0UHJlc3NlZFBhcnQoU2Nyb2xsYmFyUGFydCkgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyV2lkZ2V0LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJXaWRnZXQuY3BwCmluZGV4IDBkNGUwNzAxNjgyMy4uYjFkZTlmMTRh
MmM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyV2lkZ2V0LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyV2lkZ2V0LmNwcApAQCAtMjYz
LDE3ICsyNjMsMTcgQEAgdm9pZCBSZW5kZXJXaWRnZXQ6OnBhaW50Q29udGVudHMoUGFpbnRJbmZv
JiBwYWludEluZm8sIGNvbnN0IExheW91dFBvaW50JiBwYWludE8KICAgICAgICAgcGFpbnRSZWN0
Lm1vdmUoLXdpZGdldFBhaW50T2Zmc2V0KTsKICAgICB9CiAKLSAgICBpZiAocGFpbnRJbmZvLmV2
ZW50UmVnaW9uQ29udGV4dCkgeworICAgIGlmIChwYWludEluZm8ucGFpbnRDb250ZXh0KSB7CiAg
ICAgICAgIEFmZmluZVRyYW5zZm9ybSB0cmFuc2Zvcm07CiAgICAgICAgIHRyYW5zZm9ybS50cmFu
c2xhdGUoY29udGVudFBhaW50T2Zmc2V0KTsKLSAgICAgICAgcGFpbnRJbmZvLmV2ZW50UmVnaW9u
Q29udGV4dC0+cHVzaFRyYW5zZm9ybSh0cmFuc2Zvcm0pOworICAgICAgICBwYWludEluZm8ucGFp
bnRDb250ZXh0LT5wdXNoVHJhbnNmb3JtKHRyYW5zZm9ybSk7CiAgICAgfQogCiAgICAgLy8gRklY
TUU6IFJlbW92ZSByZXBhaW50cmVjdCBlbmNsb3NpbmcvaW50ZWdyYWwgc25hcHBpbmcgd2hlbiBS
ZW5kZXJXaWRnZXQgYmVjb21lcyBkZXZpY2UgcGl4ZWwgc25hcHBlZC4KLSAgICBtX3dpZGdldC0+
cGFpbnQocGFpbnRJbmZvLmNvbnRleHQoKSwgc25hcHBlZEludFJlY3QocGFpbnRSZWN0KSwgcGFp
bnRJbmZvLnJlcXVpcmVTZWN1cml0eU9yaWdpbkFjY2Vzc0ZvcldpZGdldHMgPyBXaWRnZXQ6OlNl
Y3VyaXR5T3JpZ2luUGFpbnRQb2xpY3k6OkFjY2Vzc2libGVPcmlnaW5Pbmx5IDogV2lkZ2V0OjpT
ZWN1cml0eU9yaWdpblBhaW50UG9saWN5OjpBbnlPcmlnaW4sIHBhaW50SW5mby5ldmVudFJlZ2lv
bkNvbnRleHQpOworICAgIG1fd2lkZ2V0LT5wYWludChwYWludEluZm8uY29udGV4dCgpLCBzbmFw
cGVkSW50UmVjdChwYWludFJlY3QpLCBwYWludEluZm8ucmVxdWlyZVNlY3VyaXR5T3JpZ2luQWNj
ZXNzRm9yV2lkZ2V0cyA/IFdpZGdldDo6U2VjdXJpdHlPcmlnaW5QYWludFBvbGljeTo6QWNjZXNz
aWJsZU9yaWdpbk9ubHkgOiBXaWRnZXQ6OlNlY3VyaXR5T3JpZ2luUGFpbnRQb2xpY3k6OkFueU9y
aWdpbiwgcGFpbnRJbmZvLnBhaW50Q29udGV4dCk7CiAKLSAgICBpZiAocGFpbnRJbmZvLmV2ZW50
UmVnaW9uQ29udGV4dCkKLSAgICAgICAgcGFpbnRJbmZvLmV2ZW50UmVnaW9uQ29udGV4dC0+cG9w
VHJhbnNmb3JtKCk7CisgICAgaWYgKHBhaW50SW5mby5wYWludENvbnRleHQpCisgICAgICAgIHBh
aW50SW5mby5wYWludENvbnRleHQtPnBvcFRyYW5zZm9ybSgpOwogCiAgICAgaWYgKCF3aWRnZXRQ
YWludE9mZnNldC5pc1plcm8oKSkKICAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQoKS50cmFuc2xh
dGUoLXdpZGdldFBhaW50T2Zmc2V0KTsKQEAgLTMzNyw3ICszMzcsNyBAQCB2b2lkIFJlbmRlcldp
ZGdldDo6cGFpbnQoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFBvaW50JiBwYWlu
dE9mZnNldCkKICAgICBpZiAoc3R5bGUoKS5oYXNCb3JkZXJSYWRpdXMoKSkKICAgICAgICAgcGFp
bnRJbmZvLmNvbnRleHQoKS5yZXN0b3JlKCk7CiAKLSAgICBpZiAocGFpbnRJbmZvLnBoYXNlID09
IFBhaW50UGhhc2U6OkV2ZW50UmVnaW9uKQorICAgIGlmIChwYWludEluZm8ucGhhc2UgPT0gUGFp
bnRQaGFzZTo6RXZlbnRSZWdpb24gfHwgcGFpbnRJbmZvLnBoYXNlID09IFBhaW50UGhhc2U6OkFj
Y2Vzc2liaWxpdHkpCiAgICAgICAgIHJldHVybjsKIAogICAgIC8vIFBhaW50IGEgcGFydGlhbGx5
IHRyYW5zcGFyZW50IHdhc2ggb3ZlciBzZWxlY3RlZCB3aWRnZXRzLgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1RleHRCb3hQYWludGVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9UZXh0Qm94UGFpbnRlci5jcHAKaW5kZXggMDg5YjhlNWRhZDJhLi5jNzc4MTBl
MTJjNTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9UZXh0Qm94UGFpbnRl
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1RleHRCb3hQYWludGVyLmNwcApA
QCAtODEsNyArODEsNyBAQCBUZXh0Qm94UGFpbnRlcjxUZXh0Qm94UGF0aD46OlRleHRCb3hQYWlu
dGVyKFRleHRCb3hQYXRoJiYgdGV4dEJveCwgUGFpbnRJbmZvJiBwYQogICAgICwgbV91c2VDdXN0
b21VbmRlcmxpbmVzKG1fY29udGFpbnNDb21wb3NpdGlvbiAmJiBtX3JlbmRlcmVyLmZyYW1lKCku
ZWRpdG9yKCkuY29tcG9zaXRpb25Vc2VzQ3VzdG9tVW5kZXJsaW5lcygpKQogICAgICwgbV9lbXBo
YXNpc01hcmtFeGlzdHNBbmRJc0Fib3ZlKFJlbmRlclRleHQ6OmVtcGhhc2lzTWFya0V4aXN0c0Fu
ZElzQWJvdmUobV9yZW5kZXJlciwgbV9zdHlsZSkpCiB7Ci0gICAgQVNTRVJUKHBhaW50SW5mby5w
aGFzZSA9PSBQYWludFBoYXNlOjpGb3JlZ3JvdW5kIHx8IHBhaW50SW5mby5waGFzZSA9PSBQYWlu
dFBoYXNlOjpTZWxlY3Rpb24gfHwgcGFpbnRJbmZvLnBoYXNlID09IFBhaW50UGhhc2U6OlRleHRD
bGlwIHx8IHBhaW50SW5mby5waGFzZSA9PSBQYWludFBoYXNlOjpFdmVudFJlZ2lvbik7CisgICAg
QVNTRVJUKHBhaW50SW5mby5waGFzZSA9PSBQYWludFBoYXNlOjpGb3JlZ3JvdW5kIHx8IHBhaW50
SW5mby5waGFzZSA9PSBQYWludFBoYXNlOjpTZWxlY3Rpb24gfHwgcGFpbnRJbmZvLnBoYXNlID09
IFBhaW50UGhhc2U6OlRleHRDbGlwIHx8IHBhaW50SW5mby5waGFzZSA9PSBQYWludFBoYXNlOjpF
dmVudFJlZ2lvbiB8fCBwYWludEluZm8ucGhhc2UgPT0gUGFpbnRQaGFzZTo6QWNjZXNzaWJpbGl0
eSk7CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFRleHRCb3hQYXRoPgpAQCAtMTA1LDcgKzEwNSw3
IEBAIHZvaWQgVGV4dEJveFBhaW50ZXI8VGV4dEJveFBhdGg+OjpwYWludCgpCiAgICAgaWYgKG1f
cGFpbnRJbmZvLnBoYXNlID09IFBhaW50UGhhc2U6OkV2ZW50UmVnaW9uKSB7CiAgICAgICAgIGNv
bnN0ZXhwciBPcHRpb25TZXQ8SGl0VGVzdFJlcXVlc3Q6OlR5cGU+IGhpdFR5cGUgeyBIaXRUZXN0
UmVxdWVzdDo6VHlwZTo6SWdub3JlQ1NTUG9pbnRlckV2ZW50c1Byb3BlcnR5IH07CiAgICAgICAg
IGlmIChtX3JlbmRlcmVyLnBhcmVudCgpLT52aXNpYmxlVG9IaXRUZXN0aW5nKGhpdFR5cGUpKQot
ICAgICAgICAgICAgbV9wYWludEluZm8uZXZlbnRSZWdpb25Db250ZXh0LT51bml0ZShlbmNsb3Np
bmdJbnRSZWN0KG1fcGFpbnRSZWN0KSwgY29uc3RfY2FzdDxSZW5kZXJUZXh0Jj4obV9yZW5kZXJl
ciksIG1fc3R5bGUpOworICAgICAgICAgICAgbV9wYWludEluZm8uZXZlbnRSZWdpb25QYWludENv
bnRleHQoKS0+dW5pdGUoZW5jbG9zaW5nSW50UmVjdChtX3BhaW50UmVjdCksIGNvbnN0X2Nhc3Q8
UmVuZGVyVGV4dCY+KG1fcmVuZGVyZXIpLCBtX3N0eWxlKTsKICAgICAgICAgcmV0dXJuOwogICAg
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2lu
Vmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNw
cAppbmRleCA5MjUzZTkwNWFmYzUuLjQxYmZjY2M4MWQ3MyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAKQEAgLTQxOCw3ICs0MTgsNyBAQCB2
b2lkIFBsdWdpblZpZXc6OnNldEZyYW1lUmVjdChjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiByZWN0
KQogICAgIHZpZXdHZW9tZXRyeURpZENoYW5nZSgpOwogfQogCi12b2lkIFBsdWdpblZpZXc6OnBh
aW50KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgSW50UmVjdCYgLypkaXJ0eVJlY3Qq
LywgV2lkZ2V0OjpTZWN1cml0eU9yaWdpblBhaW50UG9saWN5LCBFdmVudFJlZ2lvbkNvbnRleHQq
KQordm9pZCBQbHVnaW5WaWV3OjpwYWludChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0
IEludFJlY3QmIC8qZGlydHlSZWN0Ki8sIFdpZGdldDo6U2VjdXJpdHlPcmlnaW5QYWludFBvbGlj
eSwgUGFpbnRDb250ZXh0KikKIHsKICAgICBpZiAoIW1faXNJbml0aWFsaXplZCkKICAgICAgICAg
cmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1
Z2luVmlldy5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5o
CmluZGV4IDcyMTIyY2I0NThkZS4uYmU5YTU1OWYwZjdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmgKKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5oCkBAIC0xMzEsNyArMTMxLDcgQEAgcHJpdmF0
ZToKIAogICAgIC8vIFdlYkNvcmU6OldpZGdldAogICAgIHZvaWQgc2V0RnJhbWVSZWN0KGNvbnN0
IFdlYkNvcmU6OkludFJlY3QmKSBmaW5hbDsKLSAgICB2b2lkIHBhaW50KFdlYkNvcmU6OkdyYXBo
aWNzQ29udGV4dCYsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmLCBXZWJDb3JlOjpXaWRnZXQ6OlNl
Y3VyaXR5T3JpZ2luUGFpbnRQb2xpY3ksIFdlYkNvcmU6OkV2ZW50UmVnaW9uQ29udGV4dCopIGZp
bmFsOworICAgIHZvaWQgcGFpbnQoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0JiwgY29uc3QgV2Vi
Q29yZTo6SW50UmVjdCYsIFdlYkNvcmU6OldpZGdldDo6U2VjdXJpdHlPcmlnaW5QYWludFBvbGlj
eSwgV2ViQ29yZTo6UGFpbnRDb250ZXh0KikgZmluYWw7CiAgICAgdm9pZCBpbnZhbGlkYXRlUmVj
dChjb25zdCBXZWJDb3JlOjpJbnRSZWN0JikgZmluYWw7CiAgICAgdm9pZCBmcmFtZVJlY3RzQ2hh
bmdlZCgpIGZpbmFsOwogICAgIHZvaWQgc2V0UGFyZW50KFdlYkNvcmU6OlNjcm9sbFZpZXcqKSBm
aW5hbDsK
</data>
<flag name="commit-queue"
          id="493672"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>465793</attachid>
            <date>2023-04-05 23:26:50 -0700</date>
            <delta_ts>2023-04-05 23:56:55 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-255076-20230405232650.patch</filename>
            <type>text/plain</type>
            <size>104168</size>
            <attacher name="Tyler Wilcock">tyler_w</attacher>
            
              <data encoding="base64">RnJvbSBmNGRmN2U1YTg2MzY1OWE3ZTQ1YWZlMGUzMDU5NDRiM2U0ZjE1OTA2IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBUeWxlciBXaWxjb2NrIDx0eWxlcl93QGFwcGxlLmNvbT4KRGF0
ZTogV2VkLCA1IEFwciAyMDIzIDIxOjU1OjE4IC0wNzAwClN1YmplY3Q6IFtQQVRDSF0gQWRkIFBh
aW50UGhhc2U6OkFjY2Vzc2liaWxpdHkgYW5kIEFjY2Vzc2liaWxpdHlQYWludENvbnRleHQKIHRv
IGZhY2lsaXRhdGUgQVggZWxlbWVudCBib3VuZGluZy1ib3ggY2FjaGluZwogaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI1NTA3NiByZGFyOi8vcHJvYmxlbS8xMDc2OTQ0
OTIKClJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgoKQWNjZXNzaWJpbGl0eSBuZWVkcyB0byBj
YWNoZSB0aGUgYm91bmRpbmcgYm94IG9mIG5vbi1hY2Nlc3NpYmlsaXR5LWlzLWlnbm9yZWQgZWxl
bWVudHMgb24gdGhlIHNlY29uZGFyeSBBWCB0aHJlYWQuClRvIGdldCB0aGVzZSBib3VuZGluZy1i
b3hlcywgdGhpcyBwYXRjaCBhZGRzIGEgbmV3IGFjY2Vzc2liaWxpdHkgcGFpbnQgcGhhc2Ugd2l0
aCB0aGUgaW50ZW50aW9uIG9mIHRyaWdnZXJpbmcgdGhpcwpwYWludCBwaGFzZSBpbiBgUGFnZTo6
ZG9BZnRlclVwZGF0ZVJlbmRlcmluZ2AgKHdoaWNoIHdpbGwgYmUgZG9uZSBpbiBhIGZ1dHVyZSBw
YXRjaCkganVzdCBhcyBldmVudCByZWdpb25zIGRvLgoKVG8gYWNjb21wbGlzaCB0aGlzLCB0aGlz
IHBhdGNoIHJlZmFjdG9ycyBgRXZlbnRSZWdpb25Db250ZXh0YHMgY2xpcCBzdGFjayBhbmQgdHJh
bnNmb3JtIHN0YWNrIG1haW50ZW5hbmNlIGludG8gYSBuZXcKYFBhaW50Q29udGV4dGAgYmFzZSBj
bGFzcy4gYEV2ZW50UmVnaW9uQ29udGV4dGAgbm93IGRlcml2ZXMgZnJvbSBgUGFpbnRDb250ZXh0
YCBhbG9uZyB3aXRoIGEgbmV3IGBBY2Nlc3NpYmlsaXR5UGFpbnRDb250ZXh0YApjbGFzcy4gYEFj
Y2Vzc2liaWxpdHlQYWludENvbnRleHRgIHdpbGwgdGFrZSB0aGUgYm91bmRzIGdlbmVyYXRlZCBi
eSBwYWludGluZywgYXBwbHkgdHJhbnNmb3JtcyBhbmQgY2xpcHMsIGFuZCB1c2hlcgp0aGlzIGlu
Zm9ybWF0aW9uIGVsc2V3aGVyZSB0byBiZSB1c2VkIHRvIHVwZGF0ZSBhY2Nlc3NpYmlsaXR5IGRh
dGEgc3RydWN0dXJlcyAod2l0aCB0aGF0IGxhc3Qgc3RlcCBjb21pbmcgaW4gYSBsYXRlciBwYXRj
aCkuCgoqIFNvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0OgpBZGQgQWNjZXNzaWJpbGl0eVBhaW50
Q29udGV4dC5jcHAgYW5kIFBhaW50Q29udGV4dC5jcHAuCgoqIFNvdXJjZS9XZWJDb3JlL1dlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKQWRkIEFjY2Vzc2liaWxpdHlQYWludENvbnRl
eHQue2gsIGNwcH0gYW5kIFBhaW50Q29udGV4dC57aCwgY3BwfQoKKiBTb3VyY2UvV2ViQ29yZS9k
b20vRG9jdW1lbnQuaDoKKiBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwOgooV2ViQ29y
ZTo6RG9jdW1lbnQ6OnVwZGF0ZUFjY2Vzc2liaWxpdHlPYmplY3RSZWN0cyk6IEFkZGVkLgoKKiBT
b3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vaW5saW5lL0xheW91dEludGVncmF0aW9u
TGluZUxheW91dC5jcHA6CihXZWJDb3JlOjpMYXlvdXRJbnRlZ3JhdGlvbjo6TGluZUxheW91dDo6
cGFpbnQpOgpQYWludCBmb3IgUGFpbnRQaGFzZTo6QWNjZXNzaWJpbGl0eS4KCiogU291cmNlL1dl
YkNvcmUvcGFnZS9Mb2NhbEZyYW1lVmlldy5jcHA6CihXZWJDb3JlOjpMb2NhbEZyYW1lVmlldzo6
dXBkYXRlQWNjZXNzaWJpbGl0eU9iamVjdFJlY3RzKTogQWRkZWQuCihXZWJDb3JlOjpMb2NhbEZy
YW1lVmlldzo6dHJhdmVyc2VGb3JQYWludEludmFsaWRhdGlvbik6CihXZWJDb3JlOjpMb2NhbEZy
YW1lVmlldzo6cGFpbnRDb250ZW50cyk6CiogU291cmNlL1dlYkNvcmUvcGFnZS9Mb2NhbEZyYW1l
Vmlldy5oOgoqIFNvdXJjZS9XZWJDb3JlL3BhZ2UvUmVtb3RlRnJhbWVWaWV3LmNwcDoKKFdlYkNv
cmU6OlJlbW90ZUZyYW1lVmlldzo6cGFpbnRDb250ZW50cyk6CiogU291cmNlL1dlYkNvcmUvcGFn
ZS9SZW1vdGVGcmFtZVZpZXcuaDoKKiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxWaWV3
LmNwcDoKKFdlYkNvcmU6OlNjcm9sbFZpZXc6OnBhaW50KToKKiBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9TY3JvbGxWaWV3Lmg6CiogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYmFyLmNw
cDoKKFdlYkNvcmU6OlNjcm9sbGJhcjo6cGFpbnQpOgoqIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1Njcm9sbGJhci5oOgoqIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1dpZGdldC5jcHA6CiogU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1dpZGdldEd0ay5jcHA6CiogU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vd2luL1dpZGdldFdpbi5jcHA6CihXZWJDb3JlOjpXaWRnZXQ6OnBhaW50KToKKiBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9XaWRnZXQuaDoKKiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaDoKKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6
aW52YWxpZGF0aW5nQWNjZXNzaWJpbGl0eU9iamVjdFJlY3RzIGNvbnN0KToKKiBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9OdWxsR3JhcGhpY3NDb250ZXh0Lmg6CiogU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vaW9zL1dpZGdldElPUy5tbToKKFdlYkNvcmU6OldpZGdldDo6cGFpbnQp
OgoqIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XaWRnZXRNYWMubW06CihXZWJDb3JlOjpX
aWRnZXQ6OnBhaW50KToKQWNjZXB0IGEgYFBhaW50Q29udGV4dCpgIHBhcmFtZXRlciBpbnN0ZWFk
IG9mIGFuIGBFdmVudFJlZ2lvbkNvbnRleHQqYC4KCiogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L0FjY2Vzc2liaWxpdHlQYWludENvbnRleHQuY3BwOiBBZGRlZC4KKFdlYkNvcmU6OkFjY2Vzc2li
aWxpdHlQYWludENvbnRleHQ6OnRha2VCb3VuZHMpOgoqIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9BY2Nlc3NpYmlsaXR5UGFpbnRDb250ZXh0Lmg6IEFkZGVkLgooV2ViQ29yZTo6QWNjZXNzaWJp
bGl0eVBhaW50Q29udGV4dDo6bWFwUmVjdCk6CgoqIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9F
dmVudFJlZ2lvbi5oOgoqIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9FdmVudFJlZ2lvbi5jcHA6
CihXZWJDb3JlOjpFdmVudFJlZ2lvbkNvbnRleHQ6OnB1c2hUcmFuc2Zvcm0pOiBEZWxldGVkLgoo
V2ViQ29yZTo6RXZlbnRSZWdpb25Db250ZXh0Ojpwb3BUcmFuc2Zvcm0pOiBEZWxldGVkLgooV2Vi
Q29yZTo6RXZlbnRSZWdpb25Db250ZXh0OjpwdXNoQ2xpcCk6IERlbGV0ZWQuCihXZWJDb3JlOjpF
dmVudFJlZ2lvbkNvbnRleHQ6OnBvcENsaXApOiBEZWxldGVkLgpUaGVzZSBmdW5jdGlvbnMgYW5k
IHRoZWlyIGFzc29jaWF0ZWQgc3RhdGUgYXJlIG1vdmVkIHRvCnRoZSBuZXdseSBhZGRlZCBiYXNl
IGNsYXNzLCBgUGFpbnRDb250ZXh0YC4KCihXZWJDb3JlOjpFdmVudFJlZ2lvbkNvbnRleHRTdGF0
ZVNhdmVyOjpFdmVudFJlZ2lvbkNvbnRleHRTdGF0ZVNhdmVyKTogRGVsZXRlZC4KKFdlYkNvcmU6
OkV2ZW50UmVnaW9uQ29udGV4dFN0YXRlU2F2ZXI6On5FdmVudFJlZ2lvbkNvbnRleHRTdGF0ZVNh
dmVyKTogRGVsZXRlZC4KKFdlYkNvcmU6OkV2ZW50UmVnaW9uQ29udGV4dFN0YXRlU2F2ZXI6OnB1
c2hDbGlwKTogRGVsZXRlZC4KKFdlYkNvcmU6OkV2ZW50UmVnaW9uQ29udGV4dFN0YXRlU2F2ZXI6
OmNvbnRleHQgY29uc3QpOiBEZWxldGVkLgpSZXBsYWNlZCBieSB0aGUgZXF1aXZhbGVudCBhbmQg
bmV3LXRvLXRoaXMtcGF0Y2ggYFBhaW50Q29udGV4dFN0YXRlU2F2ZXJgLgoKKiBTb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvTGVnYWN5SW5saW5lRWxlbWVudEJveC5jcHA6CihXZWJDb3JlOjpMZWdh
Y3lJbmxpbmVFbGVtZW50Qm94OjpwYWludCk6CiogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0xl
Z2FjeUlubGluZUZsb3dCb3guY3BwOgooV2ViQ29yZTo6TGVnYWN5SW5saW5lRmxvd0JveDo6cGFp
bnQpOgpBdm9pZCBlYXJseSByZXR1cm4gd2hlbiBwYWludGluZyBmb3IgUGFpbnRQaGFzZTo6QWNj
ZXNzaWJpbGl0eS4KCiogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1BhaW50Q29udGV4dC5oOiBB
ZGRlZC4KKiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUGFpbnRDb250ZXh0LmNwcDogQWRkZWQu
CihXZWJDb3JlOjpQYWludENvbnRleHQ6OnB1c2hUcmFuc2Zvcm0pOgooV2ViQ29yZTo6UGFpbnRD
b250ZXh0Ojpwb3BUcmFuc2Zvcm0pOgooV2ViQ29yZTo6UGFpbnRDb250ZXh0OjpwdXNoQ2xpcCk6
CihXZWJDb3JlOjpQYWludENvbnRleHQ6OnBvcENsaXApOgpSZXBsYWNlcyBlcXVpdmFsZW50IGZ1
bmN0aW9uYWxpdHkgdGhhdCB1c2VkIHRvIGJlIGluIGBFdmVudFJlZ2lvbkNvbnRleHRgLgooV2Vi
Q29yZTo6UGFpbnRDb250ZXh0Ojppc0V2ZW50UmVnaW9uUGFpbnRDb250ZXh0IGNvbnN0KToKKFdl
YkNvcmU6OlBhaW50Q29udGV4dDo6aXNBY2Nlc3NpYmlsaXR5UGFpbnRDb250ZXh0IGNvbnN0KToK
CihXZWJDb3JlOjpQYWludENvbnRleHRTdGF0ZVNhdmVyOjpQYWludENvbnRleHRTdGF0ZVNhdmVy
KToKKFdlYkNvcmU6OlBhaW50Q29udGV4dFN0YXRlU2F2ZXI6On5QYWludENvbnRleHRTdGF0ZVNh
dmVyKToKKFdlYkNvcmU6OlBhaW50Q29udGV4dFN0YXRlU2F2ZXI6OnB1c2hDbGlwKToKKFdlYkNv
cmU6OlBhaW50Q29udGV4dFN0YXRlU2F2ZXI6OmNvbnRleHQgY29uc3QpOgpSZXBsYWNlcyBlcXVp
dmFsZW50IGZ1bmN0aW9uYWxpdHkgdGhhdCB1c2VkIHRvIGJlIGluIGBFdmVudFJlZ2lvbkNvbnRl
eHRTdGF0ZVNhdmVyYC4KCiogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1BhaW50SW5mby5oOgpT
dG9yZSBhIGBQYWludENvbnRleHQqYCByYXRoZXIgdGhhbiBhbiBgRXZlbnRSZWdpb25Db250ZXh0
KmAuCihXZWJDb3JlOjpQYWludEluZm86OmV2ZW50UmVnaW9uUGFpbnRDb250ZXh0KTogQWRkZWQu
CihXZWJDb3JlOjpQYWludEluZm86OmFjY2Vzc2liaWxpdHlQYWludENvbnRleHQpOiBBZGRlZC4K
CiogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1BhaW50UGhhc2UuaDoKQWRkIG5ldyBQYWludFBo
YXNlOjpBY2Nlc3NpYmlsaXR5LgoKKiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxv
Y2suY3BwOgooV2ViQ29yZTo6UmVuZGVyQmxvY2s6OnBhaW50Q29udGVudHMpOgpDaGVjayBmb3Ig
bm9uLW51bGwgZXZlbnQgcmVnaW9uIHBhaW50IGNvbnRleHQgdG8gbWFpbnRhaW4gZXhpc3RpbmcK
YmVoYXZpb3IuCgooV2ViQ29yZTo6UmVuZGVyQmxvY2s6OnBhaW50T2JqZWN0KToKR2l2ZSB0aGUg
cGFpbnQtcmVjdCBvZiB0aGlzIGBSZW5kZXJCbG9ja2AgdG8gdGhlIGBBY2Nlc3NpYmlsaXR5UGFp
bnRDb250ZXh0YCBpZiBwcmVzZW50LgpIYW5kbGUgbmV3IGBQYWludFBoYXNlOjpBY2Nlc3NpYmls
aXR5YC4KCiogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHA6CihXZWJDb3Jl
OjpSZW5kZXJCb3g6OnB1c2hDb250ZW50c0NsaXApOgooV2ViQ29yZTo6UmVuZGVyQm94Ojpwb3BD
b250ZW50c0NsaXApOgpQdXNoIGFuZCBwb3AgY2xpcCBmb3IgYm90aCBgUGFpbnRQaGFzZTo6QWNj
ZXNzaWJpbGl0eWAgYW5kIGBQYWludFBoYXNlOjpFdmVudFJlZ2lvbkNvbnRleHRgLgoKKiBTb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5jcHA6CihXZWJDb3JlOjpSZW5kZXJF
bGVtZW50OjpwYWludEFzSW5saW5lQmxvY2spOgpBbGxvdyBwYWludCBmb3IgYFBhaW50UGhhc2U6
OkFjY2Vzc2liaWxpdHlgLgoKKiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIu
Y3BwOgooV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OnBhaW50KToKKFdlYkNvcmU6OlJlbmRlckxheWVy
OjpjbGlwVG9SZWN0KToKKFdlYkNvcmU6OlJlbmRlckxheWVyOjpwYWludExheWVyV2l0aEVmZmVj
dHMpOgooV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OnNldHVwQ2xpcFBhdGgpOgooV2ViQ29yZTo6UmVu
ZGVyTGF5ZXI6OmFwcGx5RmlsdGVycyk6CihXZWJDb3JlOjpSZW5kZXJMYXllcjo6cGFpbnRMYXll
ckNvbnRlbnRzKToKKFdlYkNvcmU6OlJlbmRlckxheWVyOjpwYWludExheWVyQnlBcHBseWluZ1Ry
YW5zZm9ybSk6CihXZWJDb3JlOjpSZW5kZXJMYXllcjo6cGFpbnRUcmFuc2Zvcm1lZExheWVySW50
b0ZyYWdtZW50cyk6CihXZWJDb3JlOjpSZW5kZXJMYXllcjo6cGFpbnRCYWNrZ3JvdW5kRm9yRnJh
Z21lbnRzKToKKFdlYkNvcmU6OlJlbmRlckxheWVyOjpwYWludEZvcmVncm91bmRGb3JGcmFnbWVu
dHMpOgooV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OnBhaW50Rm9yZWdyb3VuZEZvckZyYWdtZW50c1dp
dGhQaGFzZSk6CihXZWJDb3JlOjpSZW5kZXJMYXllcjo6cGFpbnRPdXRsaW5lRm9yRnJhZ21lbnRz
KToKKFdlYkNvcmU6OlJlbmRlckxheWVyOjpwYWludE1hc2tGb3JGcmFnbWVudHMpOgooV2ViQ29y
ZTo6UmVuZGVyTGF5ZXI6OnBhaW50Q2hpbGRDbGlwcGluZ01hc2tGb3JGcmFnbWVudHMpOgooV2Vi
Q29yZTo6UmVuZGVyTGF5ZXI6OnBhaW50T3ZlcmZsb3dDb250cm9sc0ZvckZyYWdtZW50cyk6CihX
ZWJDb3JlOjpSZW5kZXJMYXllcjo6Y29sbGVjdEV2ZW50UmVnaW9uRm9yRnJhZ21lbnRzKToKKFdl
YkNvcmU6OlJlbmRlckxheWVyOjpjb2xsZWN0QWNjZXNzaWJpbGl0eVJlY3RzRm9yRnJhZ21lbnRz
KTogQWRkZWQuClJlcGxhY2UgdXNhZ2Ugb2YgYEV2ZW50UmVnaW9uQ29udGV4dFN0YXRlU2F2ZXJg
IHdpdGggYFBhaW50Q29udGV4dFN0YXRlU2F2ZXJgLgpDaGVjayBmb3IgdGhlIHByZXNlbmNlIG9m
IGBFdmVudFJlZ2lvbkNvbnRleHRgIHdoZW4gYXBwcm9wcmlhdGUgdG8gbWFpbnRhaW4gZXhpc3Rp
bmcgYmVoYXZpb3IuCgoqIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5oOgoo
V2ViQ29yZTo6UmVuZGVyTGF5ZXI6OnBhaW50KToKQWNjZXB0IGEgYFBhaW50Q29udGV4dCpgIHBh
cmFtZXRlciBpbnN0ZWFkIG9mIGFuIGBFdmVudFJlZ2lvbkNvbnRleHQqYC4KU3RvcmUgYSBgUGFp
bnRDb250ZXh0KmAgcmF0aGVyIHRoYW4gYW4gYEV2ZW50UmVnaW9uQ29udGV4dCpgIGluIGBzdHJ1
Y3QgTGF5ZXJQYWludGluZ0luZm9gLgoKKiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
TGF5ZXJCYWNraW5nLmNwcDoKKFdlYkNvcmU6OlJlbmRlckxheWVyQmFja2luZzo6cGFpbnRJbnRv
TGF5ZXIpOgoqIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuaDoK
QWNjZXB0IGEgYFBhaW50Q29udGV4dCpgIHBhcmFtZXRlciBpbnN0ZWFkIG9mIGFuIGBFdmVudFJl
Z2lvbkNvbnRleHQqYC4KUmVwbGFjZSB1c2FnZSBvZiBgRXZlbnRSZWdpb25Db250ZXh0U3RhdGVT
YXZlcmAgd2l0aCBgUGFpbnRDb250ZXh0U3RhdGVTYXZlcmAuCgoqIFNvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJMaXN0TWFya2VyLmNwcDoKKFdlYkNvcmU6OlJlbmRlckxpc3RNYXJrZXI6
OnBhaW50KToKUGFpbnQgZm9yIGBQYWludFBoYXNlOjpBY2Nlc3NpYmlsaXR5YC4KCiogU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJlcGxhY2VkLmNwcDoKKFdlYkNvcmU6OlJlbmRlclJl
cGxhY2VkOjpwYWludCk6CihXZWJDb3JlOjpSZW5kZXJSZXBsYWNlZDo6c2hvdWxkUGFpbnQpOgpQ
YWludCBmb3IgYFBhaW50UGhhc2U6OkFjY2Vzc2liaWxpdHlgLgoKKiBTb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyU2Nyb2xsYmFyLmg6CiogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlclNjcm9sbGJhci5jcHA6CihXZWJDb3JlOjpSZW5kZXJTY3JvbGxiYXI6OnBhaW50KToKQWNj
ZXB0IGEgYFBhaW50Q29udGV4dCpgIHBhcmFtZXRlciBpbnN0ZWFkIG9mIGFuIGBFdmVudFJlZ2lv
bkNvbnRleHQqYC4KCiogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcldpZGdldC5jcHA6
CihXZWJDb3JlOjpSZW5kZXJXaWRnZXQ6OnBhaW50Q29udGVudHMpOgooV2ViQ29yZTo6UmVuZGVy
V2lkZ2V0OjpwYWludCk6ClJldHVybiBlYXJseSBiZWZvcmUgYWN0dWFsIHBhaW50IGZvciBgUGFp
bnRQaGFzZTo6QWNjZXNzaWJpbGl0eWAuCgoqIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9UZXh0
Qm94UGFpbnRlci5jcHA6CihXZWJDb3JlOjpUZXh0Qm94UGFpbnRlcjxUZXh0Qm94UGF0aD46OlRl
eHRCb3hQYWludGVyKToKKFdlYkNvcmU6OlRleHRCb3hQYWludGVyPFRleHRCb3hQYXRoPjo6cGFp
bnQpOgpBbGxvdyBwYWludCBmb3IgYFBhaW50UGhhc2U6OkFjY2Vzc2liaWxpdHlgIGluIEFTU0VS
VCAod2Ugd2lsbCBuZWVkIHRvCmhhbmRsZSB0aGVzZSBwYWludHMgaW4gYSBmdXR1cmUgcGF0Y2gp
LgoKKiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3Lmg6CiogU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHA6CihXZWJLaXQ6OlBs
dWdpblZpZXc6OnBhaW50KToKQWNjZXB0IGEgYFBhaW50Q29udGV4dCpgIHBhcmFtZXRlciBpbnN0
ZWFkIG9mIGFuIGBFdmVudFJlZ2lvbkNvbnRleHQqYC4KLS0tCiBTb3VyY2UvV2ViQ29yZS9Tb3Vy
Y2VzLnR4dCAgICAgICAgICAgICAgICAgICAgfCAgMiArCiAuLi4vV2ViQ29yZS9XZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2ogfCAxNCArKy0KIFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1
bWVudC5jcHAgICAgICAgICAgICAgICB8ICA4ICsrCiBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1l
bnQuaCAgICAgICAgICAgICAgICAgfCAgMSArCiAuLi4vaW5saW5lL0xheW91dEludGVncmF0aW9u
TGluZUxheW91dC5jcHAgICAgfCAgMSArCiBTb3VyY2UvV2ViQ29yZS9wYWdlL0xvY2FsRnJhbWVW
aWV3LmNwcCAgICAgICAgfCAyNiArKystLQogU291cmNlL1dlYkNvcmUvcGFnZS9Mb2NhbEZyYW1l
Vmlldy5oICAgICAgICAgIHwgIDcgKy0KIFNvdXJjZS9XZWJDb3JlL3BhZ2UvUmVtb3RlRnJhbWVW
aWV3LmNwcCAgICAgICB8ICAyICstCiBTb3VyY2UvV2ViQ29yZS9wYWdlL1JlbW90ZUZyYW1lVmll
dy5oICAgICAgICAgfCAgMiArLQogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsVmlldy5j
cHAgICAgICAgIHwgIDcgKy0KIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbFZpZXcuaCAg
ICAgICAgICB8ICA2ICstCiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxiYXIuY3BwICAg
ICAgICAgfCAgMiArLQogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYmFyLmggICAgICAg
ICAgIHwgIDIgKy0KIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1dpZGdldC5jcHAgICAgICAgICAg
ICB8ICAyICstCiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9XaWRnZXQuaCAgICAgICAgICAgICAg
fCAgNCArLQogLi4uL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oICAgICAgIHwg
IDEgKwogLi4uL3BsYXRmb3JtL2dyYXBoaWNzL051bGxHcmFwaGljc0NvbnRleHQuaCAgIHwgIDQg
Ky0KIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9XaWRnZXRHdGsuY3BwICAgICB8ICA0ICst
CiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2lkZ2V0SU9TLm1tICAgICAgfCAgMiArLQog
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dpZGdldE1hYy5tbSAgICAgIHwgIDIgKy0KIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9XaWRnZXRXaW4uY3BwICAgICB8ICA0ICstCiAuLi4v
cmVuZGVyaW5nL0FjY2Vzc2liaWxpdHlQYWludENvbnRleHQuY3BwICAgfCA0MiArKysrKysrKwog
Li4uL3JlbmRlcmluZy9BY2Nlc3NpYmlsaXR5UGFpbnRDb250ZXh0LmggICAgIHwgNjkgKysrKysr
KysrKysrKwogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0V2ZW50UmVnaW9uLmNwcCAgICAgIHwg
NDMgKy0tLS0tLS0KIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9FdmVudFJlZ2lvbi5oICAgICAg
ICB8IDU4ICsrLS0tLS0tLS0tCiAuLi4vcmVuZGVyaW5nL0xlZ2FjeUlubGluZUVsZW1lbnRCb3gu
Y3BwICAgICAgfCAgMiArLQogLi4uL1dlYkNvcmUvcmVuZGVyaW5nL0xlZ2FjeUlubGluZUZsb3dC
b3guY3BwIHwgIDIgKy0KIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9QYWludENvbnRleHQuY3Bw
ICAgICB8IDc0ICsrKysrKysrKysrKysrCiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUGFpbnRD
b250ZXh0LmggICAgICAgfCA5NSArKysrKysrKysrKysrKysrKysKIFNvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9QYWludEluZm8uaCAgICAgICAgICB8ICA5ICstCiBTb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUGFpbnRQaGFzZS5oICAgICAgICAgfCAgMSArCiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyQmxvY2suY3BwICAgICAgfCAxNSArLS0KIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJCb3guY3BwICAgICAgICB8ICA4ICstCiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyRWxlbWVudC5jcHAgICAgfCAgMiArLQogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckxheWVyLmNwcCAgICAgIHwgOTggKysrKysrKysrKystLS0tLS0tLQogU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmggICAgICAgIHwgMTEgKystCiAuLi4vV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcCAgfCAxNiArLS0KIFNvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuaCB8ICA0ICstCiBTb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyTGlzdE1hcmtlci5jcHAgfCAgOCArLQogU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlclJlcGxhY2VkLmNwcCAgIHwgMTAgKy0KIFNvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJTY3JvbGxiYXIuY3BwICB8ICAyICstCiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyU2Nyb2xsYmFyLmggICAgfCAgMiArLQogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlcldpZGdldC5jcHAgICAgIHwgMTIgKy0tCiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
VGV4dEJveFBhaW50ZXIuY3BwICAgfCAgNCArLQogLi4uL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdp
bnMvUGx1Z2luVmlldy5jcHAgIHwgIDIgKy0KIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVn
aW5zL1BsdWdpblZpZXcuaCB8ICAyICstCiA0NiBmaWxlcyBjaGFuZ2VkLCA0ODggaW5zZXJ0aW9u
cygrKSwgMjA2IGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9BY2Nlc3NpYmlsaXR5UGFpbnRDb250ZXh0LmNwcAogY3JlYXRlIG1vZGUgMTAw
NjQ0IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9BY2Nlc3NpYmlsaXR5UGFpbnRDb250ZXh0LmgK
IGNyZWF0ZSBtb2RlIDEwMDY0NCBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUGFpbnRDb250ZXh0
LmNwcAogY3JlYXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9QYWludENv
bnRleHQuaAoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0IGIvU291cmNl
L1dlYkNvcmUvU291cmNlcy50eHQKaW5kZXggODNhYzdlYTNjMjMzLi5jMjlkZDY4MGMzMWUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3Jl
L1NvdXJjZXMudHh0CkBAIC0yNDM0LDYgKzI0MzQsNyBAQCBwbHVnaW5zL0RPTVBsdWdpbi5jcHAK
IHBsdWdpbnMvRE9NUGx1Z2luQXJyYXkuY3BwCiBwbHVnaW5zL1BsdWdpbkRhdGEuY3BwCiBwbHVn
aW5zL1BsdWdpbkluZm9Qcm92aWRlci5jcHAKK3JlbmRlcmluZy9BY2Nlc3NpYmlsaXR5UGFpbnRD
b250ZXh0LmNwcAogcmVuZGVyaW5nL0F1dG9UYWJsZUxheW91dC5jcHAKIHJlbmRlcmluZy9CYWNr
Z3JvdW5kUGFpbnRlci5jcHAKIHJlbmRlcmluZy9CaWRpUnVuLmNwcApAQCAtMjQ3Niw2ICsyNDc3
LDcgQEAgcmVuZGVyaW5nL0xlZ2FjeVJvb3RJbmxpbmVCb3guY3BwCiByZW5kZXJpbmcvTGVnYWN5
SW5saW5lVGV4dEJveC5jcHAKIHJlbmRlcmluZy9NYXJrZWRUZXh0LmNwcAogcmVuZGVyaW5nL09y
ZGVySXRlcmF0b3IuY3BwCityZW5kZXJpbmcvUGFpbnRDb250ZXh0LmNwcAogcmVuZGVyaW5nL1Bh
dGhPcGVyYXRpb24uY3BwCiByZW5kZXJpbmcvUG9pbnRlckV2ZW50c0hpdFJ1bGVzLmNwcAogcmVu
ZGVyaW5nL1JlZmVyZW5jZWRTVkdSZXNvdXJjZXMuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggOWI3ODlhNjE4MWVjLi45Mjg3
ZDAxZTM0MWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKQEAgLTMsNyArMyw3IEBACiAJYXJjaGl2ZVZlcnNpb24gPSAxOwogCWNsYXNz
ZXMgPSB7CiAJfTsKLQlvYmplY3RWZXJzaW9uID0gNTE7CisJb2JqZWN0VmVyc2lvbiA9IDU0Owog
CW9iamVjdHMgPSB7CiAKIC8qIEJlZ2luIFBCWEFnZ3JlZ2F0ZVRhcmdldCBzZWN0aW9uICovCkBA
IC0xNTU3LDYgKzE1NTcsOCBAQAogCQk0N0M0RDU3RDI2NTA4QkNCMDBDN0FCMUYgLyogSW5saW5l
Rm9ybWF0dGluZ0dlb21ldHJ5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA0N0M0RDU3QzI2NTA4QkNBMDBDN0FCMUYgLyogSW5saW5lRm9ybWF0dGluZ0dl
b21ldHJ5LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
IAkJNDdGOTQ3REIyNjUwMkYyRjAwODc5NjhDIC8qIEJsb2NrRm9ybWF0dGluZ1F1aXJrcy5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDdGOTQ3REEyNjUw
MkYyRjAwODc5NjhDIC8qIEJsb2NrRm9ybWF0dGluZ1F1aXJrcy5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQ3RkE5NzAwMjY1MDk4MkIwMDg0MTQx
NiAvKiBUYWJsZUZvcm1hdHRpbmdHZW9tZXRyeS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNDdGQTk2RkYyNjUwOTgyQTAwODQxNDE2IC8qIFRhYmxlRm9y
bWF0dGluZ0dlb21ldHJ5LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKKwkJNDgyMjk3MEUyOUM4RUJDMDAwMzNBMTI2IC8qIFBhaW50Q29udGV4dC5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDgyMjk3MEMyOUM4
RUJDMDAwMzNBMTI2IC8qIFBhaW50Q29udGV4dC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CisJCTQ4QjVCRjM3MjlDQTY5MTcwMEZFQkUzQiAvKiBBY2Nl
c3NpYmlsaXR5UGFpbnRDb250ZXh0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA0OEI1QkYzNTI5Q0E2OTE3MDBGRUJFM0IgLyogQWNjZXNzaWJpbGl0eVBh
aW50Q29udGV4dC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCTQ5M0U1RTA5MTJENjQyMDUwMDAyMDA4MSAvKiBQbGF0Zm9ybUNBTGF5ZXJDbGllbnQu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ5M0U1RTA4
MTJENjQyMDUwMDAyMDA4MSAvKiBQbGF0Zm9ybUNBTGF5ZXJDbGllbnQuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0OTQ1QkZENDEzQ0Y4MDkwMDBD
QzNCMzggLyogVHJhbnNmb3JtU3RhdGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDQ5NDVCRkQyMTNDRjgwOTAwMENDM0IzOCAvKiBUcmFuc2Zvcm1TdGF0
ZS5oICovOyB9OwogCQk0OTQ4NEZDMjEwMkNGMjNDMDAxODdERDMgLyogQ2FudmFzR3JhZGllbnQu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ5NDg0RkI0
MTAyQ0YyM0MwMDE4N0REMyAvKiBDYW52YXNHcmFkaWVudC5oICovOyB9OwpAQCAtMTAwODAsNiAr
MTAwODIsMTAgQEAKIAkJNDdDNEQ1N0MyNjUwOEJDQTAwQzdBQjFGIC8qIElubGluZUZvcm1hdHRp
bmdHZW9tZXRyeS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbmxpbmVGb3Jt
YXR0aW5nR2VvbWV0cnkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDdGOTQ3REEy
NjUwMkYyRjAwODc5NjhDIC8qIEJsb2NrRm9ybWF0dGluZ1F1aXJrcy5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBCbG9ja0Zvcm1hdHRpbmdRdWlya3MuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJNDdGQTk2RkYyNjUwOTgyQTAwODQxNDE2IC8qIFRhYmxlRm9ybWF0
dGluZ0dlb21ldHJ5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFRhYmxlRm9y
bWF0dGluZ0dlb21ldHJ5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQ4MjI5NzBC
MjlDOEVCQzAwMDMzQTEyNiAvKiBQYWludENvbnRleHQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gUGFpbnRDb250ZXh0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJNDgyMjk3MEMyOUM4RUJDMDAwMzNBMTI2IC8qIFBhaW50Q29udGV4dC5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQYWludENvbnRleHQuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJNDhCNUJGMzUyOUNBNjkxNzAwRkVCRTNCIC8qIEFjY2Vzc2liaWxp
dHlQYWludENvbnRleHQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQWNjZXNz
aWJpbGl0eVBhaW50Q29udGV4dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0OEI1
QkYzNjI5Q0E2OTE3MDBGRUJFM0IgLyogQWNjZXNzaWJpbGl0eVBhaW50Q29udGV4dC5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBBY2Nlc3NpYmlsaXR5UGFpbnRDb250ZXh0LmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDkzRTVFMDgxMkQ2NDIwNTAwMDIwMDgxIC8qIFBsYXRmb3Jt
Q0FMYXllckNsaWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQbGF0Zm9y
bUNBTGF5ZXJDbGllbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDk0NUJGRDEx
M0NGODA5MDAwQ0MzQjM4IC8qIFRyYW5zZm9ybVN0YXRlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IFRyYW5zZm9ybVN0YXRlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNDk0NUJGRDIxM0NGODA5MDAwQ0MzQjM4IC8qIFRyYW5zZm9ybVN0YXRlLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFRyYW5zZm9ybVN0YXRlLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0zNDA5MSw2ICszNDA5Nyw4IEBACiAJCQkJQkM4QzhG
QUEwRERDRDJGMjAwQjU5MkY0IC8qIHN0eWxlICovLAogCQkJCTA4OEMyRjc0MTIzOTAwODAwMDNE
NjVDRSAvKiBzdmcgKi8sCiAJCQkJRTQ3QzM5MUUxRkU2RTA4QzAwQkJCQzZCIC8qIHVwZGF0aW5n
ICovLAorCQkJCTQ4QjVCRjM2MjlDQTY5MTcwMEZFQkUzQiAvKiBBY2Nlc3NpYmlsaXR5UGFpbnRD
b250ZXh0LmNwcCAqLywKKwkJCQk0OEI1QkYzNTI5Q0E2OTE3MDBGRUJFM0IgLyogQWNjZXNzaWJp
bGl0eVBhaW50Q29udGV4dC5oICovLAogCQkJCTFBMzNBRTNGMjhGOUYyOTAwMDk4MDRCNCAvKiBB
dHRhY2htZW50TGF5b3V0LmggKi8sCiAJCQkJMUEzM0FFNDAyOEY5RjQ3ODAwOTgwNEI0IC8qIEF0
dGFjaG1lbnRMYXlvdXQubW0gKi8sCiAJCQkJQThDRkYwNEIwQTE1NEYwOTAwMEE0MjM0IC8qIEF1
dG9UYWJsZUxheW91dC5jcHAgKi8sCkBAIC0zNDE4Niw2ICszNDE5NCw4IEBACiAJCQkJQ0RFN0ZD
NDMxODE5MDRCMTAwMkJCQjc3IC8qIE9yZGVySXRlcmF0b3IuaCAqLywKIAkJCQkzNzc0QUJBMzBG
QTIxRUI0MDBBRDdERTkgLyogT3ZlcmxhcFRlc3RSZXF1ZXN0Q2xpZW50LmggKi8sCiAJCQkJOTM3
N0FCOUYxNURFRkVFRjAwMzFGRDA0IC8qIFBhZ2luYXRpb24uaCAqLywKKwkJCQk0ODIyOTcwQjI5
QzhFQkMwMDAzM0ExMjYgLyogUGFpbnRDb250ZXh0LmNwcCAqLywKKwkJCQk0ODIyOTcwQzI5QzhF
QkMwMDAzM0ExMjYgLyogUGFpbnRDb250ZXh0LmggKi8sCiAJCQkJNTVFQzk1OTcyMDY5QzkyRDAw
N0REMEE5IC8qIFBhaW50RnJlcXVlbmN5VHJhY2tlci5oICovLAogCQkJCTA4ODUwNjdEMTFEQTA0
NUIwMDE4MkI5OCAvKiBQYWludEluZm8uaCAqLywKIAkJCQkwODg1MDY3RTExREEwNDVCMDAxODJC
OTggLyogUGFpbnRQaGFzZS5oICovLApAQCAtMzU1ODUsNiArMzU1OTUsNyBAQAogCQkJCTI5QUNC
MjEyMTQzRTcxMjgwMDZCQ0E1RiAvKiBBY2Nlc3NpYmlsaXR5TW9ja09iamVjdC5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMjlBODEyMzYwRkJCOUMxRDAwNTEwMjkzIC8qIEFjY2Vzc2liaWxpdHlPYmpl
Y3QuaCBpbiBIZWFkZXJzICovLAogCQkJCTI5MzZCRjVDMjFENjlFNEIwMDRBOEZDOSAvKiBBY2Nl
c3NpYmlsaXR5T2JqZWN0SW50ZXJmYWNlLmggaW4gSGVhZGVycyAqLywKKwkJCQk0OEI1QkYzNzI5
Q0E2OTE3MDBGRUJFM0IgLyogQWNjZXNzaWJpbGl0eVBhaW50Q29udGV4dC5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJQTQwOUM5ODUxMTZEMERERDAwNzE5N0JEIC8qIEFjY2Vzc2liaWxpdHlQcm9ncmVz
c0luZGljYXRvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMjlBODEyMzkwRkJCOUMxRDAwNTEwMjkz
IC8qIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuaCBpbiBIZWFkZXJzICovLAogCQkJCTkzQzRG
NkVCMTEwOEY5QTUwMDk5RDBEQiAvKiBBY2Nlc3NpYmlsaXR5U2Nyb2xsYmFyLmggaW4gSGVhZGVy
cyAqLywKQEAgLTM4ODgxLDYgKzM4ODkyLDcgQEAKIAkJCQkzNzFFNjVDQzEzNjYxRURDMDBCRUVE
QjAgLyogUGFnZVNlcmlhbGl6ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUUxMjg0QUUxMTA0NDdE
NDUwMEVBRUI1MiAvKiBQYWdlVHJhbnNpdGlvbkV2ZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQk5
Mzc3QUJBMDE1REVGRUVGMDAzMUZEMDQgLyogUGFnaW5hdGlvbi5oIGluIEhlYWRlcnMgKi8sCisJ
CQkJNDgyMjk3MEUyOUM4RUJDMDAwMzNBMTI2IC8qIFBhaW50Q29udGV4dC5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJNTVFQzk1OTkyMDZBQTdBMDAwN0REMEE5IC8qIFBhaW50RnJlcXVlbmN5VHJhY2tl
ci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMDg4NTA2N0YxMURBMDQ1QjAwMTgyQjk4IC8qIFBhaW50
SW5mby5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMDg4NTA2ODAxMURBMDQ1QjAwMTgyQjk4IC8qIFBh
aW50UGhhc2UuaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9t
L0RvY3VtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKaW5kZXggMGFj
NzU0Y2VhZjNmLi43YWE4Mzk1ZDA5YjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9E
b2N1bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcApAQCAtNDc0
Niw2ICs0NzQ2LDE0IEBAIHZvaWQgRG9jdW1lbnQ6OnVwZGF0ZUV2ZW50UmVnaW9ucygpCiAgICAg
fQogfQogCit2b2lkIERvY3VtZW50Ojp1cGRhdGVBY2Nlc3NpYmlsaXR5T2JqZWN0UmVjdHMoKQor
eworI2lmIEVOQUJMRShBQ0NFU1NJQklMSVRZX0lTT0xBVEVEX1RSRUUpCisgICAgaWYgKGF1dG8q
IHZpZXcgPSByZW5kZXJWaWV3KCkpCisgICAgICAgIHZpZXctPmZyYW1lVmlldygpLnVwZGF0ZUFj
Y2Vzc2liaWxpdHlPYmplY3RSZWN0cygpOworI2VuZGlmCit9CisKIHZvaWQgRG9jdW1lbnQ6Omlu
dmFsaWRhdGVFdmVudFJlZ2lvbnNGb3JGcmFtZShIVE1MRnJhbWVPd25lckVsZW1lbnQmIGVsZW1l
bnQpCiB7CiAgICAgYXV0byogcmVuZGVyZXIgPSBlbGVtZW50LnJlbmRlcmVyKCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9E
b2N1bWVudC5oCmluZGV4IDk4NjMwOTFiZjEzNi4uODhmYzRmNDA5ZmZmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9j
dW1lbnQuaApAQCAtMTIyOCw2ICsxMjI4LDcgQEAgcHVibGljOgogCiAgICAgV0VCQ09SRV9FWFBP
UlQgU3RyaW5nIGRpc3BsYXlTdHJpbmdNb2RpZmllZEJ5RW5jb2RpbmcoY29uc3QgU3RyaW5nJikg
Y29uc3Q7CiAKKyAgICB2b2lkIHVwZGF0ZUFjY2Vzc2liaWxpdHlPYmplY3RSZWN0cygpOwogICAg
IHZvaWQgdXBkYXRlRXZlbnRSZWdpb25zKCk7CiAKICAgICB2b2lkIGludmFsaWRhdGVSZW5kZXJp
bmdEZXBlbmRlbnRSZWdpb25zKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQv
aW50ZWdyYXRpb24vaW5saW5lL0xheW91dEludGVncmF0aW9uTGluZUxheW91dC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vaW5saW5lL0xheW91dEludGVncmF0aW9uTGlu
ZUxheW91dC5jcHAKaW5kZXggYjQ5ZDM4ZDVhMmVkLi45NWIxNmY2OWZiZWIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9pbmxpbmUvTGF5b3V0SW50ZWdyYXRp
b25MaW5lTGF5b3V0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24v
aW5saW5lL0xheW91dEludGVncmF0aW9uTGluZUxheW91dC5jcHAKQEAgLTExMzUsNiArMTEzNSw3
IEBAIHZvaWQgTGluZUxheW91dDo6cGFpbnQoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExh
eW91dFBvaW50JiBwYWludE9mZnNldCwgY29uCiAKICAgICBhdXRvIHNob3VsZFBhaW50Rm9yUGhh
c2UgPSBbJl0gewogICAgICAgICBzd2l0Y2ggKHBhaW50SW5mby5waGFzZSkgeworICAgICAgICBj
YXNlIFBhaW50UGhhc2U6OkFjY2Vzc2liaWxpdHk6CiAgICAgICAgIGNhc2UgUGFpbnRQaGFzZTo6
Rm9yZWdyb3VuZDoKICAgICAgICAgY2FzZSBQYWludFBoYXNlOjpFdmVudFJlZ2lvbjoKICAgICAg
ICAgY2FzZSBQYWludFBoYXNlOjpUZXh0Q2xpcDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvTG9jYWxGcmFtZVZpZXcuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Mb2NhbEZyYW1l
Vmlldy5jcHAKaW5kZXggMWQ5MjdlYmNlZmFhLi4yOWMzOTJiMWY1ZmEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvTG9jYWxGcmFtZVZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvTG9jYWxGcmFtZVZpZXcuY3BwCkBAIC00Njc2LDcgKzQ2NzYsMTggQEAgdm9pZCBMb2Nh
bEZyYW1lVmlldzo6aW52YWxpZGF0ZUltYWdlc1dpdGhBc3luY0RlY29kZXMoKQogICAgIHRyYXZl
cnNlRm9yUGFpbnRJbnZhbGlkYXRpb24oTnVsbEdyYXBoaWNzQ29udGV4dDo6UGFpbnRJbnZhbGlk
YXRpb25SZWFzb25zOjpJbnZhbGlkYXRpbmdJbWFnZXNXaXRoQXN5bmNEZWNvZGVzKTsKIH0KIAot
dm9pZCBMb2NhbEZyYW1lVmlldzo6dHJhdmVyc2VGb3JQYWludEludmFsaWRhdGlvbihOdWxsR3Jh
cGhpY3NDb250ZXh0OjpQYWludEludmFsaWRhdGlvblJlYXNvbnMgcGFpbnRJbnZhbGlkYXRpb25S
ZWFzb25zKQordm9pZCBMb2NhbEZyYW1lVmlldzo6dXBkYXRlQWNjZXNzaWJpbGl0eU9iamVjdFJl
Y3RzKCkKK3sKKyNpZiBFTkFCTEUoQUNDRVNTSUJJTElUWV9JU09MQVRFRF9UUkVFKQorICAgIGlm
ICghQVhPYmplY3RDYWNoZTo6YWNjZXNzaWJpbGl0eUVuYWJsZWQoKSB8fCAhQVhPYmplY3RDYWNo
ZTo6aXNJc29sYXRlZFRyZWVFbmFibGVkKCkpCisgICAgICAgIHJldHVybjsKKworICAgIEFjY2Vz
c2liaWxpdHlQYWludENvbnRleHQgYWNjZXNzaWJpbGl0eVBhaW50Q29udGV4dDsKKyAgICB0cmF2
ZXJzZUZvclBhaW50SW52YWxpZGF0aW9uKE51bGxHcmFwaGljc0NvbnRleHQ6OlBhaW50SW52YWxp
ZGF0aW9uUmVhc29uczo6SW52YWxpZGF0aW5nQWNjZXNzaWJpbGl0eU9iamVjdFJlY3RzLCAmYWNj
ZXNzaWJpbGl0eVBhaW50Q29udGV4dCk7CisjZW5kaWYKK30KKwordm9pZCBMb2NhbEZyYW1lVmll
dzo6dHJhdmVyc2VGb3JQYWludEludmFsaWRhdGlvbihOdWxsR3JhcGhpY3NDb250ZXh0OjpQYWlu
dEludmFsaWRhdGlvblJlYXNvbnMgcGFpbnRJbnZhbGlkYXRpb25SZWFzb25zLCBQYWludENvbnRl
eHQqIHBhaW50Q29udGV4dCkKIHsKICAgICBpZiAobmVlZHNMYXlvdXQoKSkKICAgICAgICAgbGF5
b3V0Q29udGV4dCgpLmxheW91dCgpOwpAQCAtNDY4NCw5ICs0Njk1LDkgQEAgdm9pZCBMb2NhbEZy
YW1lVmlldzo6dHJhdmVyc2VGb3JQYWludEludmFsaWRhdGlvbihOdWxsR3JhcGhpY3NDb250ZXh0
OjpQYWludEludmEKICAgICBOdWxsR3JhcGhpY3NDb250ZXh0IGNvbnRleHQocGFpbnRJbnZhbGlk
YXRpb25SZWFzb25zKTsKICAgICBpZiAocGxhdGZvcm1XaWRnZXQoKSkgewogICAgICAgICAvLyBG
SVhNRTogY29uc3VsdCBwYWludHNFbnRpcmVDb250ZW50cygpLgotICAgICAgICBwYWludENvbnRl
bnRzKGNvbnRleHQsIHZpc2libGVDb250ZW50UmVjdChMZWdhY3lJT1NEb2N1bWVudFZpc2libGVS
ZWN0KSk7CisgICAgICAgIHBhaW50Q29udGVudHMoY29udGV4dCwgdmlzaWJsZUNvbnRlbnRSZWN0
KExlZ2FjeUlPU0RvY3VtZW50VmlzaWJsZVJlY3QpLCBTZWN1cml0eU9yaWdpblBhaW50UG9saWN5
OjpBbnlPcmlnaW4sIHBhaW50Q29udGV4dCk7CiAgICAgfSBlbHNlCi0gICAgICAgIHBhaW50KGNv
bnRleHQsIGZyYW1lUmVjdCgpKTsKKyAgICAgICAgcGFpbnQoY29udGV4dCwgZnJhbWVSZWN0KCks
IFNlY3VyaXR5T3JpZ2luUGFpbnRQb2xpY3k6OkFueU9yaWdpbiwgcGFpbnRDb250ZXh0KTsKIH0K
IAogYm9vbCBMb2NhbEZyYW1lVmlldzo6d2FzU2Nyb2xsZWRCeVVzZXIoKSBjb25zdApAQCAtNDcz
OCw2ICs0NzQ5LDkgQEAgdm9pZCBMb2NhbEZyYW1lVmlldzo6d2lsbFBhaW50Q29udGVudHMoR3Jh
cGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBJbnRSZWN0JiwKICAgICAgICAgbV9wYWludEJl
aGF2aW9yLmFkZChQYWludEJlaGF2aW9yOjpTbmFwc2hvdHRpbmcpOwogICAgIH0KIAorICAgIGlm
IChjb250ZXh0LmludmFsaWRhdGluZ0FjY2Vzc2liaWxpdHlPYmplY3RSZWN0cygpKQorICAgICAg
ICBtX3BhaW50QmVoYXZpb3IuYWRkKFBhaW50QmVoYXZpb3I6OkZsYXR0ZW5Db21wb3NpdGluZ0xh
eWVycyk7CisKICAgICBwYWludGluZ1N0YXRlLmlzRmxhdHRlbmluZ1BhaW50T2ZSb290RnJhbWUg
PSAobV9wYWludEJlaGF2aW9yICYgUGFpbnRCZWhhdmlvcjo6RmxhdHRlbkNvbXBvc2l0aW5nTGF5
ZXJzKSAmJiAhbV9mcmFtZS0+b3duZXJFbGVtZW50KCkgJiYgIWNvbnRleHQuZGV0ZWN0aW5nQ29u
dGVudGZ1bFBhaW50KCk7CiAgICAgaWYgKHBhaW50aW5nU3RhdGUuaXNGbGF0dGVuaW5nUGFpbnRP
ZlJvb3RGcmFtZSkKICAgICAgICAgbm90aWZ5V2lkZ2V0c0luQWxsRnJhbWVzKFdpbGxQYWludEZs
YXR0ZW5lZCk7CkBAIC00NzY2LDcgKzQ3ODAsNyBAQCB2b2lkIExvY2FsRnJhbWVWaWV3OjpkaWRQ
YWludENvbnRlbnRzKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgSW50UmVjdCYgZAog
ICAgIH0KIH0KIAotdm9pZCBMb2NhbEZyYW1lVmlldzo6cGFpbnRDb250ZW50cyhHcmFwaGljc0Nv
bnRleHQmIGNvbnRleHQsIGNvbnN0IEludFJlY3QmIGRpcnR5UmVjdCwgU2VjdXJpdHlPcmlnaW5Q
YWludFBvbGljeSBzZWN1cml0eU9yaWdpblBhaW50UG9saWN5LCBFdmVudFJlZ2lvbkNvbnRleHQq
IGV2ZW50UmVnaW9uQ29udGV4dCkKK3ZvaWQgTG9jYWxGcmFtZVZpZXc6OnBhaW50Q29udGVudHMo
R3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBJbnRSZWN0JiBkaXJ0eVJlY3QsIFNlY3Vy
aXR5T3JpZ2luUGFpbnRQb2xpY3kgc2VjdXJpdHlPcmlnaW5QYWludFBvbGljeSwgUGFpbnRDb250
ZXh0KiBwYWludENvbnRleHQpCiB7CiAjaWZuZGVmIE5ERUJVRwogICAgIGJvb2wgZmlsbFdpdGhX
YXJuaW5nQ29sb3I7CkBAIC00ODE0LDkgKzQ4MjgsOSBAQCB2b2lkIExvY2FsRnJhbWVWaWV3Ojpw
YWludENvbnRlbnRzKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgSW50UmVjdCYgZGly
dAogCiAgICAgUmVuZGVyT2JqZWN0OjpTZXRMYXlvdXROZWVkZWRGb3JiaWRkZW5TY29wZSBmb3Ji
aWRTZXROZWVkc0xheW91dChyb290TGF5ZXItPnJlbmRlcmVyKCkpOwogCi0gICAgcm9vdExheWVy
LT5wYWludChjb250ZXh0LCBkaXJ0eVJlY3QsIExheW91dFNpemUoKSwgbV9wYWludEJlaGF2aW9y
LCByZW5kZXJlciwgeyB9LCBzZWN1cml0eU9yaWdpblBhaW50UG9saWN5ID09IFNlY3VyaXR5T3Jp
Z2luUGFpbnRQb2xpY3k6OkFueU9yaWdpbiA/IFJlbmRlckxheWVyOjpTZWN1cml0eU9yaWdpblBh
aW50UG9saWN5OjpBbnlPcmlnaW4gOiBSZW5kZXJMYXllcjo6U2VjdXJpdHlPcmlnaW5QYWludFBv
bGljeTo6QWNjZXNzaWJsZU9yaWdpbk9ubHksIGV2ZW50UmVnaW9uQ29udGV4dCk7CisgICAgcm9v
dExheWVyLT5wYWludChjb250ZXh0LCBkaXJ0eVJlY3QsIExheW91dFNpemUoKSwgbV9wYWludEJl
aGF2aW9yLCByZW5kZXJlciwgeyB9LCBzZWN1cml0eU9yaWdpblBhaW50UG9saWN5ID09IFNlY3Vy
aXR5T3JpZ2luUGFpbnRQb2xpY3k6OkFueU9yaWdpbiA/IFJlbmRlckxheWVyOjpTZWN1cml0eU9y
aWdpblBhaW50UG9saWN5OjpBbnlPcmlnaW4gOiBSZW5kZXJMYXllcjo6U2VjdXJpdHlPcmlnaW5Q
YWludFBvbGljeTo6QWNjZXNzaWJsZU9yaWdpbk9ubHksIHBhaW50Q29udGV4dCk7CiAgICAgaWYg
KGF1dG8qIHNjcm9sbGFibGVSb290TGF5ZXIgPSByb290TGF5ZXItPnNjcm9sbGFibGVBcmVhKCkp
IHsKLSAgICAgICAgaWYgKHNjcm9sbGFibGVSb290TGF5ZXItPmNvbnRhaW5zRGlydHlPdmVybGF5
U2Nyb2xsYmFycygpICYmICFldmVudFJlZ2lvbkNvbnRleHQpCisgICAgICAgIGlmIChzY3JvbGxh
YmxlUm9vdExheWVyLT5jb250YWluc0RpcnR5T3ZlcmxheVNjcm9sbGJhcnMoKSAmJiAhcGFpbnRD
b250ZXh0KQogICAgICAgICAgICAgc2Nyb2xsYWJsZVJvb3RMYXllci0+cGFpbnRPdmVybGF5U2Ny
b2xsYmFycyhjb250ZXh0LCBkaXJ0eVJlY3QsIG1fcGFpbnRCZWhhdmlvciwgcmVuZGVyZXIpOwog
ICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9Mb2NhbEZyYW1lVmlldy5o
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9Mb2NhbEZyYW1lVmlldy5oCmluZGV4IGI4OWM4MDc2OTli
MC4uODEyZTFmYTc5MTY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0xvY2FsRnJh
bWVWaWV3LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Mb2NhbEZyYW1lVmlldy5oCkBAIC01
MywxMyArNTMsMTMgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgQVhPYmplY3RDYWNoZTsK
IGNsYXNzIENvbnRhaW5lck5vZGU7CiBjbGFzcyBFbGVtZW50OwotY2xhc3MgRXZlbnRSZWdpb25D
b250ZXh0OwogY2xhc3MgRmxvYXRTaXplOwogY2xhc3MgRnJhbWU7CiBjbGFzcyBHcmFwaGljc0Nv
bnRleHQ7CiBjbGFzcyBIVE1MRnJhbWVPd25lckVsZW1lbnQ7CiBjbGFzcyBMb2NhbEZyYW1lOwog
Y2xhc3MgUGFnZTsKK2NsYXNzIFBhaW50Q29udGV4dDsKIGNsYXNzIFJlbmRlckJveDsKIGNsYXNz
IFJlbmRlckVsZW1lbnQ7CiBjbGFzcyBSZW5kZXJFbWJlZGRlZE9iamVjdDsKQEAgLTQwNiw3ICs0
MDYsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBhZGRFbWJlZGRlZE9iamVjdFRvVXBkYXRlKFJlbmRl
ckVtYmVkZGVkT2JqZWN0Jik7CiAgICAgdm9pZCByZW1vdmVFbWJlZGRlZE9iamVjdFRvVXBkYXRl
KFJlbmRlckVtYmVkZGVkT2JqZWN0Jik7CiAKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHBhaW50
Q29udGVudHMoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgSW50UmVjdCYgZGlydHlSZWN0LCBTZWN1
cml0eU9yaWdpblBhaW50UG9saWN5ID0gU2VjdXJpdHlPcmlnaW5QYWludFBvbGljeTo6QW55T3Jp
Z2luLCBFdmVudFJlZ2lvbkNvbnRleHQqID0gbnVsbHB0cikgZmluYWw7CisgICAgV0VCQ09SRV9F
WFBPUlQgdm9pZCBwYWludENvbnRlbnRzKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEludFJlY3Qm
IGRpcnR5UmVjdCwgU2VjdXJpdHlPcmlnaW5QYWludFBvbGljeSA9IFNlY3VyaXR5T3JpZ2luUGFp
bnRQb2xpY3k6OkFueU9yaWdpbiwgUGFpbnRDb250ZXh0KiA9IG51bGxwdHIpIGZpbmFsOwogCiAg
ICAgc3RydWN0IFBhaW50aW5nU3RhdGUgewogICAgICAgICBPcHRpb25TZXQ8UGFpbnRCZWhhdmlv
cj4gcGFpbnRCZWhhdmlvcjsKQEAgLTcxMiw2ICs3MTIsNyBAQCBwdWJsaWM6CiAKICAgICBXRUJD
T1JFX0VYUE9SVCB2b2lkIGludmFsaWRhdGVDb250cm9sVGludHMoKTsKICAgICB2b2lkIGludmFs
aWRhdGVJbWFnZXNXaXRoQXN5bmNEZWNvZGVzKCk7CisgICAgdm9pZCB1cGRhdGVBY2Nlc3NpYmls
aXR5T2JqZWN0UmVjdHMoKTsKIAogICAgIHZvaWQgaW52YWxpZGF0ZVNjcm9sbGJhcnNGb3JBbGxT
Y3JvbGxhYmxlQXJlYXMoKTsKIApAQCAtNzQwLDcgKzc0MSw3IEBAIHByaXZhdGU6CiAgICAgYm9v
bCBzY3JvbGxDb250ZW50c0Zhc3RQYXRoKGNvbnN0IEludFNpemUmIHNjcm9sbERlbHRhLCBjb25z
dCBJbnRSZWN0JiByZWN0VG9TY3JvbGwsIGNvbnN0IEludFJlY3QmIGNsaXBSZWN0KSBmaW5hbDsK
ICAgICB2b2lkIHNjcm9sbENvbnRlbnRzU2xvd1BhdGgoY29uc3QgSW50UmVjdCYgdXBkYXRlUmVj
dCkgZmluYWw7CiAKLSAgICB2b2lkIHRyYXZlcnNlRm9yUGFpbnRJbnZhbGlkYXRpb24oTnVsbEdy
YXBoaWNzQ29udGV4dFBhaW50SW52YWxpZGF0aW9uUmVhc29ucyk7CisgICAgdm9pZCB0cmF2ZXJz
ZUZvclBhaW50SW52YWxpZGF0aW9uKE51bGxHcmFwaGljc0NvbnRleHRQYWludEludmFsaWRhdGlv
blJlYXNvbnMsIFBhaW50Q29udGV4dCogPSBudWxscHRyKTsKICAgICB2b2lkIHJlcGFpbnRTbG93
UmVwYWludE9iamVjdHMoKTsKIAogICAgIGJvb2wgaXNWZXJ0aWNhbERvY3VtZW50KCkgY29uc3Qg
ZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1JlbW90ZUZyYW1lVmlldy5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1JlbW90ZUZyYW1lVmlldy5jcHAKaW5kZXggZTBhNjE0
YWYxZWIwLi4yNmZmOWRlMTNjMTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUmVt
b3RlRnJhbWVWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1JlbW90ZUZyYW1lVmll
dy5jcHAKQEAgLTk5LDcgKzk5LDcgQEAgSW50UmVjdCBSZW1vdGVGcmFtZVZpZXc6OndpbmRvd0Ns
aXBSZWN0KCkgY29uc3QKICAgICByZXR1cm4geyB9OwogfQogCi12b2lkIFJlbW90ZUZyYW1lVmll
dzo6cGFpbnRDb250ZW50cyhHcmFwaGljc0NvbnRleHQmLCBjb25zdCBJbnRSZWN0JiwgU2VjdXJp
dHlPcmlnaW5QYWludFBvbGljeSwgRXZlbnRSZWdpb25Db250ZXh0KikKK3ZvaWQgUmVtb3RlRnJh
bWVWaWV3OjpwYWludENvbnRlbnRzKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEludFJlY3QmLCBT
ZWN1cml0eU9yaWdpblBhaW50UG9saWN5LCBQYWludENvbnRleHQqKQogewogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1JlbW90ZUZyYW1lVmlldy5oIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9SZW1vdGVGcmFtZVZpZXcuaAppbmRleCAzZjJmZTlmMTZmMDQuLjUxYTJjMGMwZWEz
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9SZW1vdGVGcmFtZVZpZXcuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1JlbW90ZUZyYW1lVmlldy5oCkBAIC01Miw3ICs1Miw3IEBA
IHByaXZhdGU6CiAgICAgdm9pZCBpbnZhbGlkYXRlU2Nyb2xsYmFyUmVjdChTY3JvbGxiYXImLCBj
b25zdCBJbnRSZWN0JikgZmluYWw7CiAgICAgSG9zdFdpbmRvdyogaG9zdFdpbmRvdygpIGNvbnN0
IGZpbmFsOwogICAgIEludFJlY3Qgd2luZG93Q2xpcFJlY3QoKSBjb25zdCBmaW5hbDsKLSAgICB2
b2lkIHBhaW50Q29udGVudHMoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgSW50UmVjdCYgZGFtYWdl
UmVjdCwgU2VjdXJpdHlPcmlnaW5QYWludFBvbGljeSwgRXZlbnRSZWdpb25Db250ZXh0KikgZmlu
YWw7CisgICAgdm9pZCBwYWludENvbnRlbnRzKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEludFJl
Y3QmIGRhbWFnZVJlY3QsIFNlY3VyaXR5T3JpZ2luUGFpbnRQb2xpY3ksIFBhaW50Q29udGV4dCop
IGZpbmFsOwogICAgIHZvaWQgYWRkZWRPclJlbW92ZWRTY3JvbGxiYXIoKSBmaW5hbDsKICAgICB2
b2lkIGRlbGVnYXRlZFNjcm9sbGluZ01vZGVEaWRDaGFuZ2UoKSBmaW5hbDsKICAgICB2b2lkIHVw
ZGF0ZVNjcm9sbENvcm5lcigpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vU2Nyb2xsVmlldy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxWaWV3
LmNwcAppbmRleCAzYWYyZjFiZjdiNzQuLmNiZjVmY2ZhNDJlZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsVmlldy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vU2Nyb2xsVmlldy5jcHAKQEAgLTI2LDYgKzI2LDcgQEAKICNpbmNsdWRlICJjb25maWcu
aCIKICNpbmNsdWRlICJTY3JvbGxWaWV3LmgiCiAKKyNpbmNsdWRlICJBY2Nlc3NpYmlsaXR5UGFp
bnRDb250ZXh0LmgiCiAjaW5jbHVkZSAiRmxvYXRRdWFkLmgiCiAjaW5jbHVkZSAiR3JhcGhpY3ND
b250ZXh0LmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NMYXllci5oIgpAQCAtMTI3NiwxNCArMTI3Nywx
NCBAQCB2b2lkIFNjcm9sbFZpZXc6OnBhaW50UGFuU2Nyb2xsSWNvbihHcmFwaGljc0NvbnRleHQm
IGNvbnRleHQpCiAgICAgY29udGV4dC5kcmF3SW1hZ2UocGFuU2Nyb2xsSWNvbiwgaWNvbkdDUG9p
bnQpOwogfQogCi12b2lkIFNjcm9sbFZpZXc6OnBhaW50KEdyYXBoaWNzQ29udGV4dCYgY29udGV4
dCwgY29uc3QgSW50UmVjdCYgcmVjdCwgU2VjdXJpdHlPcmlnaW5QYWludFBvbGljeSBzZWN1cml0
eU9yaWdpblBhaW50UG9saWN5LCBFdmVudFJlZ2lvbkNvbnRleHQqIGV2ZW50UmVnaW9uQ29udGV4
dCkKK3ZvaWQgU2Nyb2xsVmlldzo6cGFpbnQoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25z
dCBJbnRSZWN0JiByZWN0LCBTZWN1cml0eU9yaWdpblBhaW50UG9saWN5IHNlY3VyaXR5T3JpZ2lu
UGFpbnRQb2xpY3ksIFBhaW50Q29udGV4dCogcGFpbnRDb250ZXh0KQogewogICAgIGlmIChwbGF0
Zm9ybVdpZGdldCgpKSB7CiAgICAgICAgIFdpZGdldDo6cGFpbnQoY29udGV4dCwgcmVjdCk7CiAg
ICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBpZiAoY29udGV4dC5wYWludGluZ0Rpc2FibGVk
KCkgJiYgIWNvbnRleHQucGVyZm9ybWluZ1BhaW50SW52YWxpZGF0aW9uKCkgJiYgIWV2ZW50UmVn
aW9uQ29udGV4dCkKKyAgICBpZiAoY29udGV4dC5wYWludGluZ0Rpc2FibGVkKCkgJiYgIWNvbnRl
eHQucGVyZm9ybWluZ1BhaW50SW52YWxpZGF0aW9uKCkgJiYgIXBhaW50Q29udGV4dCkKICAgICAg
ICAgcmV0dXJuOwogCiAgICAgSW50UmVjdCBkb2N1bWVudERpcnR5UmVjdCA9IHJlY3Q7CkBAIC0x
MzA2LDcgKzEzMDcsNyBAQCB2b2lkIFNjcm9sbFZpZXc6OnBhaW50KEdyYXBoaWNzQ29udGV4dCYg
Y29udGV4dCwgY29uc3QgSW50UmVjdCYgcmVjdCwgU2VjdXJpdHlPcgogICAgICAgICAgICAgY29u
dGV4dC5jbGlwKHZpc2libGVDb250ZW50UmVjdChMZWdhY3lJT1NEb2N1bWVudFZpc2libGVSZWN0
KSk7CiAgICAgICAgIH0KIAotICAgICAgICBwYWludENvbnRlbnRzKGNvbnRleHQsIGRvY3VtZW50
RGlydHlSZWN0LCBzZWN1cml0eU9yaWdpblBhaW50UG9saWN5LCBldmVudFJlZ2lvbkNvbnRleHQp
OworICAgICAgICBwYWludENvbnRlbnRzKGNvbnRleHQsIGRvY3VtZW50RGlydHlSZWN0LCBzZWN1
cml0eU9yaWdpblBhaW50UG9saWN5LCBwYWludENvbnRleHQpOwogICAgIH0KIAogI2lmIEhBVkUo
UlVCQkVSX0JBTkRJTkcpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3Jv
bGxWaWV3LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxWaWV3LmgKaW5kZXggZmEx
MDdjZjkxMWMzLi5hYTk2NGVjNjEwODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL1Njcm9sbFZpZXcuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxWaWV3
LmgKQEAgLTU3LDEwICs1NywxMCBAQCBPQkpDX0NMQVNTIFdBS1ZpZXc7CiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAotY2xhc3MgRXZlbnRSZWdpb25Db250ZXh0OwogY2xhc3MgRmxvYXRRdWFkOwog
Y2xhc3MgSG9zdFdpbmRvdzsKIGNsYXNzIExlZ2FjeVRpbGVDYWNoZTsKK2NsYXNzIFBhaW50Q29u
dGV4dDsKIGNsYXNzIFNjcm9sbGJhcjsKIAogZW51bSBjbGFzcyBEZWxlZ2F0ZWRTY3JvbGxpbmdN
b2RlIDogdWludDhfdCB7CkBAIC0zODEsNyArMzgxLDcgQEAgcHVibGljOgogICAgIH0KIAogICAg
IC8vIFdpZGdldCBvdmVycmlkZS4gSGFuZGxlcyBwYWludGluZyBvZiB0aGUgY29udGVudHMgb2Yg
dGhlIHZpZXcgYXMgd2VsbCBhcyB0aGUgc2Nyb2xsYmFycy4KLSAgICBXRUJDT1JFX0VYUE9SVCB2
b2lkIHBhaW50KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEludFJlY3QmLCBXaWRnZXQ6OlNlY3Vy
aXR5T3JpZ2luUGFpbnRQb2xpY3kgPSBTZWN1cml0eU9yaWdpblBhaW50UG9saWN5OjpBbnlPcmln
aW4sIEV2ZW50UmVnaW9uQ29udGV4dCogPSBudWxscHRyKSBmaW5hbDsKKyAgICBXRUJDT1JFX0VY
UE9SVCB2b2lkIHBhaW50KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEludFJlY3QmLCBXaWRnZXQ6
OlNlY3VyaXR5T3JpZ2luUGFpbnRQb2xpY3kgPSBTZWN1cml0eU9yaWdpblBhaW50UG9saWN5OjpB
bnlPcmlnaW4sIFBhaW50Q29udGV4dCogPSBudWxscHRyKSBmaW5hbDsKICAgICB2b2lkIHBhaW50
U2Nyb2xsYmFycyhHcmFwaGljc0NvbnRleHQmLCBjb25zdCBJbnRSZWN0Jik7CiAKICAgICAvLyBX
aWRnZXQgb3ZlcnJpZGVzIHRvIGVuc3VyZSB0aGF0IG91ciBjaGlsZHJlbidzIHZpc2liaWxpdHkg
c3RhdHVzIGlzIGtlcHQgdXAgdG8gZGF0ZSB3aGVuIHdlIGdldCBzaG93biBhbmQgaGlkZGVuLgpA
QCAtNDIzLDcgKzQyMyw3IEBAIHByb3RlY3RlZDoKICAgICBTY3JvbGxWaWV3KCk7CiAKICAgICB2
aXJ0dWFsIHZvaWQgcmVwYWludENvbnRlbnRSZWN0YW5nbGUoY29uc3QgSW50UmVjdCYpOwotICAg
IHZpcnR1YWwgdm9pZCBwYWludENvbnRlbnRzKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEludFJl
Y3QmIGRhbWFnZVJlY3QsIFNlY3VyaXR5T3JpZ2luUGFpbnRQb2xpY3kgPSBTZWN1cml0eU9yaWdp
blBhaW50UG9saWN5OjpBbnlPcmlnaW4sIEV2ZW50UmVnaW9uQ29udGV4dCogPSBudWxscHRyKSA9
IDA7CisgICAgdmlydHVhbCB2b2lkIHBhaW50Q29udGVudHMoR3JhcGhpY3NDb250ZXh0JiwgY29u
c3QgSW50UmVjdCYgZGFtYWdlUmVjdCwgU2VjdXJpdHlPcmlnaW5QYWludFBvbGljeSA9IFNlY3Vy
aXR5T3JpZ2luUGFpbnRQb2xpY3k6OkFueU9yaWdpbiwgUGFpbnRDb250ZXh0KiA9IG51bGxwdHIp
ID0gMDsKIAogICAgIHZpcnR1YWwgdm9pZCBwYWludE92ZXJoYW5nQXJlYXMoR3JhcGhpY3NDb250
ZXh0JiwgY29uc3QgSW50UmVjdCYgaG9yaXpvbnRhbE92ZXJoYW5nQXJlYSwgY29uc3QgSW50UmVj
dCYgdmVydGljYWxPdmVyaGFuZ0FyZWEsIGNvbnN0IEludFJlY3QmIGRpcnR5UmVjdCk7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGJhci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxiYXIuY3BwCmluZGV4IDZlM2VkYzE5ZjdmOC4uMWI5Mzli
ZDdiY2Y2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxiYXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGJhci5jcHAKQEAgLTE2MSw3ICsx
NjEsNyBAQCB2b2lkIFNjcm9sbGJhcjo6dXBkYXRlVGh1bWJQcm9wb3J0aW9uKCkKICAgICB1cGRh
dGVUaHVtYigpOwogfQogCi12b2lkIFNjcm9sbGJhcjo6cGFpbnQoR3JhcGhpY3NDb250ZXh0JiBj
b250ZXh0LCBjb25zdCBJbnRSZWN0JiBkYW1hZ2VSZWN0LCBXaWRnZXQ6OlNlY3VyaXR5T3JpZ2lu
UGFpbnRQb2xpY3ksIEV2ZW50UmVnaW9uQ29udGV4dCopCit2b2lkIFNjcm9sbGJhcjo6cGFpbnQo
R3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBJbnRSZWN0JiBkYW1hZ2VSZWN0LCBXaWRn
ZXQ6OlNlY3VyaXR5T3JpZ2luUGFpbnRQb2xpY3ksIFBhaW50Q29udGV4dCopCiB7CiAgICAgaWYg
KGNvbnRleHQuaW52YWxpZGF0aW5nQ29udHJvbFRpbnRzKCkgJiYgdGhlbWUoKS5zdXBwb3J0c0Nv
bnRyb2xUaW50cygpKSB7CiAgICAgICAgIGludmFsaWRhdGUoKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGJhci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
U2Nyb2xsYmFyLmgKaW5kZXggZTc0YWQzNmE1YmQ2Li5jNDdhOTRiMzJjYzUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGJhci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1Njcm9sbGJhci5oCkBAIC04NSw3ICs4NSw3IEBAIHB1YmxpYzoKICAgICBXRUJD
T1JFX0VYUE9SVCB2b2lkIHNldFByb3BvcnRpb24oaW50IHZpc2libGVTaXplLCBpbnQgdG90YWxT
aXplKTsKICAgICB2b2lkIHNldFByZXNzZWRQb3MoaW50IHApIHsgbV9wcmVzc2VkUG9zID0gcDsg
fQogCi0gICAgdm9pZCBwYWludChHcmFwaGljc0NvbnRleHQmLCBjb25zdCBJbnRSZWN0JiBkYW1h
Z2VSZWN0LCBXaWRnZXQ6OlNlY3VyaXR5T3JpZ2luUGFpbnRQb2xpY3kgPSBTZWN1cml0eU9yaWdp
blBhaW50UG9saWN5OjpBbnlPcmlnaW4sIEV2ZW50UmVnaW9uQ29udGV4dCogPSBudWxscHRyKSBv
dmVycmlkZTsKKyAgICB2b2lkIHBhaW50KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEludFJlY3Qm
IGRhbWFnZVJlY3QsIFdpZGdldDo6U2VjdXJpdHlPcmlnaW5QYWludFBvbGljeSA9IFNlY3VyaXR5
T3JpZ2luUGFpbnRQb2xpY3k6OkFueU9yaWdpbiwgUGFpbnRDb250ZXh0KiA9IG51bGxwdHIpIG92
ZXJyaWRlOwogCiAgICAgYm9vbCBlbmFibGVkKCkgY29uc3QgeyByZXR1cm4gbV9lbmFibGVkOyB9
CiAgICAgdmlydHVhbCB2b2lkIHNldEVuYWJsZWQoYm9vbCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9XaWRnZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vV2lk
Z2V0LmNwcAppbmRleCBkOWQ4YmE1ZDc2NjguLmNlOWRmMTg5NzI1MCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vV2lkZ2V0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9XaWRnZXQuY3BwCkBAIC0yODgsNyArMjg4LDcgQEAgdm9pZCBXaWRnZXQ6OnNldEZyYW1l
UmVjdChjb25zdCBJbnRSZWN0JiByZWN0KQogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CiAKLXZv
aWQgV2lkZ2V0OjpwYWludChHcmFwaGljc0NvbnRleHQmLCBjb25zdCBJbnRSZWN0JiwgU2VjdXJp
dHlPcmlnaW5QYWludFBvbGljeSwgRXZlbnRSZWdpb25Db250ZXh0KikKK3ZvaWQgV2lkZ2V0Ojpw
YWludChHcmFwaGljc0NvbnRleHQmLCBjb25zdCBJbnRSZWN0JiwgU2VjdXJpdHlPcmlnaW5QYWlu
dFBvbGljeSwgUGFpbnRDb250ZXh0KikKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vV2lkZ2V0LmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9XaWRnZXQuaAppbmRleCA4ODNmMmM3OWM0MWIuLmI2NjQzNTAyY2VhNCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vV2lkZ2V0LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vV2lkZ2V0LmgKQEAgLTYwLDcgKzYwLDcgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogCiBjbGFzcyBDdXJzb3I7CiBjbGFzcyBFdmVudDsKLWNsYXNzIEV2ZW50UmVnaW9uQ29u
dGV4dDsKK2NsYXNzIFBhaW50Q29udGV4dDsKIGNsYXNzIEZvbnRDYXNjYWRlOwogY2xhc3MgR3Jh
cGhpY3NDb250ZXh0OwogY2xhc3MgTG9jYWxGcmFtZVZpZXc7CkBAIC0xMTAsNyArMTEwLDcgQEAg
cHVibGljOgogCiAgICAgZW51bSBjbGFzcyBTZWN1cml0eU9yaWdpblBhaW50UG9saWN5IHsgQW55
T3JpZ2luLCBBY2Nlc3NpYmxlT3JpZ2luT25seSB9OwogCi0gICAgV0VCQ09SRV9FWFBPUlQgdmly
dHVhbCB2b2lkIHBhaW50KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEludFJlY3QmLCBTZWN1cml0
eU9yaWdpblBhaW50UG9saWN5ID0gU2VjdXJpdHlPcmlnaW5QYWludFBvbGljeTo6QW55T3JpZ2lu
LCBFdmVudFJlZ2lvbkNvbnRleHQqID0gbnVsbHB0cik7CisgICAgV0VCQ09SRV9FWFBPUlQgdmly
dHVhbCB2b2lkIHBhaW50KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEludFJlY3QmLCBTZWN1cml0
eU9yaWdpblBhaW50UG9saWN5ID0gU2VjdXJpdHlPcmlnaW5QYWludFBvbGljeTo6QW55T3JpZ2lu
LCBQYWludENvbnRleHQqID0gbnVsbHB0cik7CiAgICAgdm9pZCBpbnZhbGlkYXRlKCkgeyBpbnZh
bGlkYXRlUmVjdChib3VuZHNSZWN0KCkpOyB9CiAgICAgdmlydHVhbCB2b2lkIGludmFsaWRhdGVS
ZWN0KGNvbnN0IEludFJlY3QmKSA9IDA7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmgKaW5kZXggM2E5ODA3ZjIzNDAwLi5jZTk2ZWMx
YThlYmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBo
aWNzQ29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBo
aWNzQ29udGV4dC5oCkBAIC04NCw2ICs4NCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wg
cGVyZm9ybWluZ1BhaW50SW52YWxpZGF0aW9uKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAg
ICB2aXJ0dWFsIGJvb2wgaW52YWxpZGF0aW5nQ29udHJvbFRpbnRzKCkgY29uc3QgeyByZXR1cm4g
ZmFsc2U7IH0KICAgICB2aXJ0dWFsIGJvb2wgaW52YWxpZGF0aW5nSW1hZ2VzV2l0aEFzeW5jRGVj
b2RlcygpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCBib29sIGludmFsaWRh
dGluZ0FjY2Vzc2liaWxpdHlPYmplY3RSZWN0cygpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAg
ICAgdmlydHVhbCBib29sIGRldGVjdGluZ0NvbnRlbnRmdWxQYWludCgpIGNvbnN0IHsgcmV0dXJu
IGZhbHNlOyB9CiAKICAgICAvLyBDb250ZXh0IFN0YXRlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9OdWxsR3JhcGhpY3NDb250ZXh0LmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9OdWxsR3JhcGhpY3NDb250ZXh0LmgKaW5kZXggZWYxYjc5
MjVhNzI4Li44OTYyMjE3NDdhMWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL051bGxHcmFwaGljc0NvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9OdWxsR3JhcGhpY3NDb250ZXh0LmgKQEAgLTMzLDcgKzMzLDggQEAgZW51
bSBjbGFzcyBOdWxsR3JhcGhpY3NDb250ZXh0UGFpbnRJbnZhbGlkYXRpb25SZWFzb25zIDogdWlu
dDhfdCB7CiAgICAgTm9uZSwKICAgICBJbnZhbGlkYXRpbmdDb250cm9sVGludHMsCiAgICAgSW52
YWxpZGF0aW5nSW1hZ2VzV2l0aEFzeW5jRGVjb2RlcywKLSAgICBEZXRlY3RpbmdDb250ZW50ZnVs
UGFpbnQKKyAgICBEZXRlY3RpbmdDb250ZW50ZnVsUGFpbnQsCisgICAgSW52YWxpZGF0aW5nQWNj
ZXNzaWJpbGl0eU9iamVjdFJlY3RzCiB9OwogCiBjbGFzcyBOdWxsR3JhcGhpY3NDb250ZXh0IDog
cHVibGljIEdyYXBoaWNzQ29udGV4dCB7CkBAIC01Niw2ICs1Nyw3IEBAIHByaXZhdGU6CiAgICAg
Ym9vbCBwZXJmb3JtaW5nUGFpbnRJbnZhbGlkYXRpb24oKSBjb25zdCBmaW5hbCB7IHJldHVybiBt
X3BhaW50SW52YWxpZGF0aW9uUmVhc29ucyAhPSBQYWludEludmFsaWRhdGlvblJlYXNvbnM6Ok5v
bmU7IH0KICAgICBib29sIGludmFsaWRhdGluZ0NvbnRyb2xUaW50cygpIGNvbnN0IGZpbmFsIHsg
cmV0dXJuIG1fcGFpbnRJbnZhbGlkYXRpb25SZWFzb25zID09IFBhaW50SW52YWxpZGF0aW9uUmVh
c29uczo6SW52YWxpZGF0aW5nQ29udHJvbFRpbnRzOyB9CiAgICAgYm9vbCBpbnZhbGlkYXRpbmdJ
bWFnZXNXaXRoQXN5bmNEZWNvZGVzKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9wYWludEludmFs
aWRhdGlvblJlYXNvbnMgPT0gUGFpbnRJbnZhbGlkYXRpb25SZWFzb25zOjpJbnZhbGlkYXRpbmdJ
bWFnZXNXaXRoQXN5bmNEZWNvZGVzOyB9CisgICAgYm9vbCBpbnZhbGlkYXRpbmdBY2Nlc3NpYmls
aXR5T2JqZWN0UmVjdHMoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX3BhaW50SW52YWxpZGF0aW9u
UmVhc29ucyA9PSBQYWludEludmFsaWRhdGlvblJlYXNvbnM6OkludmFsaWRhdGluZ0FjY2Vzc2li
aWxpdHlPYmplY3RSZWN0czsgfQogICAgIGJvb2wgZGV0ZWN0aW5nQ29udGVudGZ1bFBhaW50KCkg
Y29uc3QgZmluYWwgeyByZXR1cm4gbV9wYWludEludmFsaWRhdGlvblJlYXNvbnMgPT0gUGFpbnRJ
bnZhbGlkYXRpb25SZWFzb25zOjpEZXRlY3RpbmdDb250ZW50ZnVsUGFpbnQ7IH0KIAogICAgIHZv
aWQgZGlkVXBkYXRlU3RhdGUoR3JhcGhpY3NDb250ZXh0U3RhdGUmKSBmaW5hbCB7IH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9XaWRnZXRHdGsuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1dpZGdldEd0ay5jcHAKaW5kZXggYmM2Yzk0NDlmYzlkLi4z
NGM2ZDQzZjkyMzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9XaWRn
ZXRHdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9XaWRnZXRHdGsuY3Bw
CkBAIC0zNSw2ICszNSw4IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgUGFpbnRD
b250ZXh0OworCiBXaWRnZXQ6On5XaWRnZXQoKQogewogICAgIEFTU0VSVCghcGFyZW50KCkpOwpA
QCAtNjAsNyArNjIsNyBAQCB2b2lkIFdpZGdldDo6aGlkZSgpCiAgICAgc2V0U2VsZlZpc2libGUo
ZmFsc2UpOwogfQogCi12b2lkIFdpZGdldDo6cGFpbnQoR3JhcGhpY3NDb250ZXh0JiwgY29uc3Qg
SW50UmVjdCYsIFNlY3VyaXR5T3JpZ2luUGFpbnRQb2xpY3ksIEV2ZW50UmVnaW9uQ29udGV4dCop
Cit2b2lkIFdpZGdldDo6cGFpbnQoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgSW50UmVjdCYsIFNl
Y3VyaXR5T3JpZ2luUGFpbnRQb2xpY3ksIFBhaW50Q29udGV4dCopCiB7CiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XaWRnZXRJT1MubW0gYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9pb3MvV2lkZ2V0SU9TLm1tCmluZGV4IGU5NjQ5NGJjOTE4OS4uOTE4MTY0
NGM2NmY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2lkZ2V0SU9T
Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XaWRnZXRJT1MubW0KQEAgLTE0
Niw3ICsxNDYsNyBAQCBOU1ZpZXcqIFdpZGdldDo6Z2V0T3V0ZXJWaWV3KCkgY29uc3QKICAgICBy
ZXR1cm4gdmlldzsKIH0KIAotdm9pZCBXaWRnZXQ6OnBhaW50KEdyYXBoaWNzQ29udGV4dCYgcCwg
Y29uc3QgSW50UmVjdCYgciwgU2VjdXJpdHlPcmlnaW5QYWludFBvbGljeSwgRXZlbnRSZWdpb25D
b250ZXh0KikKK3ZvaWQgV2lkZ2V0OjpwYWludChHcmFwaGljc0NvbnRleHQmIHAsIGNvbnN0IElu
dFJlY3QmIHIsIFNlY3VyaXR5T3JpZ2luUGFpbnRQb2xpY3ksIFBhaW50Q29udGV4dCopCiB7CiAg
ICAgaWYgKHAucGFpbnRpbmdEaXNhYmxlZCgpKQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2lkZ2V0TWFjLm1tIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWFjL1dpZGdldE1hYy5tbQppbmRleCA4MmU3ZWIxZjE4OTkuLjFjNzM1MThh
YzZkZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dpZGdldE1hYy5t
bQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2lkZ2V0TWFjLm1tCkBAIC0xODYs
NyArMTg2LDcgQEAgTlNWaWV3ICpXaWRnZXQ6OmdldE91dGVyVmlldygpIGNvbnN0CiAgICAgcmV0
dXJuIHZpZXc7CiB9CiAKLXZvaWQgV2lkZ2V0OjpwYWludChHcmFwaGljc0NvbnRleHQmIHAsIGNv
bnN0IEludFJlY3QmIHIsIFNlY3VyaXR5T3JpZ2luUGFpbnRQb2xpY3ksIEV2ZW50UmVnaW9uQ29u
dGV4dCopCit2b2lkIFdpZGdldDo6cGFpbnQoR3JhcGhpY3NDb250ZXh0JiBwLCBjb25zdCBJbnRS
ZWN0JiByLCBTZWN1cml0eU9yaWdpblBhaW50UG9saWN5LCBQYWludENvbnRleHQqKQogewogICAg
IGlmIChwLnBhaW50aW5nRGlzYWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1dpZGdldFdpbi5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS93aW4vV2lkZ2V0V2luLmNwcAppbmRleCBjYjUyYjE3MTdiZTcuLmVkNTk2YTIy
OWUzZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1dpZGdldFdpbi5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1dpZGdldFdpbi5jcHAKQEAgLTM5
LDYgKzM5LDggQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBQYWludENvbnRleHQ7
CisKIFdpZGdldDo6fldpZGdldCgpIAogewogICAgIEFTU0VSVCghcGFyZW50KCkpOwpAQCAtNjcs
NyArNjksNyBAQCB2b2lkIFdpZGdldDo6c2V0Q3Vyc29yKGNvbnN0IEN1cnNvciYgY3Vyc29yKQog
ICAgICAgICB2aWV3LT5ob3N0V2luZG93KCktPnNldEN1cnNvcihjdXJzb3IpOwogfQogCi12b2lk
IFdpZGdldDo6cGFpbnQoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgSW50UmVjdCYsIFNlY3VyaXR5
T3JpZ2luUGFpbnRQb2xpY3ksIEV2ZW50UmVnaW9uQ29udGV4dCopCit2b2lkIFdpZGdldDo6cGFp
bnQoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgSW50UmVjdCYsIFNlY3VyaXR5T3JpZ2luUGFpbnRQ
b2xpY3ksIFBhaW50Q29udGV4dCopCiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9BY2Nlc3NpYmlsaXR5UGFpbnRDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9BY2Nlc3NpYmlsaXR5UGFpbnRDb250ZXh0LmNwcApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjI1ZDFiNWEyN2NhOQotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9BY2Nlc3NpYmlsaXR5UGFpbnRDb250ZXh0LmNwcApA
QCAtMCwwICsxLDQyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIzIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1
ZGUgIkFjY2Vzc2liaWxpdHlQYWludENvbnRleHQuaCIKKworI2luY2x1ZGUgIlJlbmRlckJveC5o
IgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK0FjY2Vzc2liaWxpdHlQYWludENvbnRleHQ6On5B
Y2Nlc3NpYmlsaXR5UGFpbnRDb250ZXh0KCkgPSBkZWZhdWx0OworCit2b2lkIEFjY2Vzc2liaWxp
dHlQYWludENvbnRleHQ6OnRha2VCb3VuZHMoY29uc3QgUmVuZGVyQm94JiByZW5kZXJCb3gsIEZs
b2F0UmVjdCBwYWludFJlY3QpCit7CisgICAgLy8gRklYTUU6IFVzZSBgcGFpbnRSZWN0YCB0byBx
dWV1ZSBhIGZyYW1lIHVwZGF0ZSBmb3IgdGhlIEFYIG9iamVjdCBhc3NvY2lhdGVkIHdpdGggYHJl
bmRlckJveGAuCisgICAgVU5VU0VEX1BBUkFNKHJlbmRlckJveCk7CisgICAgVU5VU0VEX1BBUkFN
KHBhaW50UmVjdCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9BY2Nlc3NpYmlsaXR5UGFpbnRDb250ZXh0LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvQWNjZXNzaWJpbGl0eVBhaW50Q29udGV4dC5oCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uNGFjOWJiZjg3M2VjCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0FjY2Vzc2liaWxpdHlQYWludENvbnRl
eHQuaApAQCAtMCwwICsxLDY5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIzIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisg
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNs
dWRlICJGbG9hdFJlY3QuaCIKKyNpbmNsdWRlICJQYWludENvbnRleHQuaCIKKworbmFtZXNwYWNl
IFdlYkNvcmUgeworCitjbGFzcyBSZW5kZXJCb3g7CisKK2NsYXNzIEFjY2Vzc2liaWxpdHlQYWlu
dENvbnRleHQgOiBwdWJsaWMgUGFpbnRDb250ZXh0IHsKK3B1YmxpYzoKKyAgICBBY2Nlc3NpYmls
aXR5UGFpbnRDb250ZXh0KCkgPSBkZWZhdWx0OworICAgIHZpcnR1YWwgfkFjY2Vzc2liaWxpdHlQ
YWludENvbnRleHQoKTsKKworICAgIGJvb2wgaXNBY2Nlc3NpYmlsaXR5UGFpbnRDb250ZXh0KCkg
Y29uc3QgZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQorCisgICAgdm9pZCB0YWtlQm91bmRzKGNvbnN0
IFJlbmRlckJveCYsIEZsb2F0UmVjdCAvKiBwYWludFJlY3QgKi8pOworCitwcml2YXRlOgorICAg
IC8vIE1hcHMgdGhlIGdpdmVuIHJlY3QgdXNpbmcgdGhlIGN1cnJlbnQgdHJhbnNmb3JtIGFuZCBj
bGlwIHN0YWNrLgorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFJlY3RUPgorICAgIEZsb2F0UmVjdCBt
YXBSZWN0KFJlY3RUJiYgcmVjdCkKKyAgICB7CisgICAgICAgIGJvb2wgaGFzVHJhbnNmb3JtID0g
bV90cmFuc2Zvcm1TdGFjay5zaXplKCk7CisgICAgICAgIGJvb2wgaGFzQ2xpcCA9IG1fY2xpcFN0
YWNrLnNpemUoKTsKKyAgICAgICAgaWYgKCFoYXNUcmFuc2Zvcm0gJiYgIWhhc0NsaXApCisgICAg
ICAgICAgICByZXR1cm4gcmVjdDsKKworICAgICAgICBGbG9hdFJlY3QgbWFwcGVkUmVjdCA9IHJl
Y3Q7CisgICAgICAgIGlmIChoYXNUcmFuc2Zvcm0pCisgICAgICAgICAgICBtYXBwZWRSZWN0ID0g
bV90cmFuc2Zvcm1TdGFjay5sYXN0KCkubWFwUmVjdChtYXBwZWRSZWN0KTsKKyAgICAgICAgaWYg
KGhhc0NsaXApCisgICAgICAgICAgICBtYXBwZWRSZWN0LmludGVyc2VjdChtX2NsaXBTdGFjay5s
YXN0KCkpOworCisgICAgICAgIHJldHVybiBtYXBwZWRSZWN0OworICAgIH0KKworfTsgLy8gY2xh
c3MgQWNjZXNzaWJpbGl0eVBhaW50Q29udGV4dAorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisK
K1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNfQkVHSU4oV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVBhaW50
Q29udGV4dCkKKyAgICBzdGF0aWMgYm9vbCBpc1R5cGUoY29uc3QgV2ViQ29yZTo6UGFpbnRDb250
ZXh0JiBwYWludENvbnRleHQpIHsgcmV0dXJuIHBhaW50Q29udGV4dC5pc0FjY2Vzc2liaWxpdHlQ
YWludENvbnRleHQoKTsgfQorU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19FTkQoKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0V2ZW50UmVnaW9uLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9FdmVudFJlZ2lvbi5jcHAKaW5kZXggOTA0NGYxNTRlYWJiLi43YTdjN2E5
NjlhOGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9FdmVudFJlZ2lvbi5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0V2ZW50UmVnaW9uLmNwcApAQCAtNDMs
NDggKzQzLDcgQEAgRXZlbnRSZWdpb25Db250ZXh0OjpFdmVudFJlZ2lvbkNvbnRleHQoRXZlbnRS
ZWdpb24mIGV2ZW50UmVnaW9uKQogewogfQogCi12b2lkIEV2ZW50UmVnaW9uQ29udGV4dDo6cHVz
aFRyYW5zZm9ybShjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHRyYW5zZm9ybSkKLXsKLSAgICBpZiAo
bV90cmFuc2Zvcm1TdGFjay5pc0VtcHR5KCkpCi0gICAgICAgIG1fdHJhbnNmb3JtU3RhY2suYXBw
ZW5kKHRyYW5zZm9ybSk7Ci0gICAgZWxzZQotICAgICAgICBtX3RyYW5zZm9ybVN0YWNrLmFwcGVu
ZChtX3RyYW5zZm9ybVN0YWNrLmxhc3QoKSAqIHRyYW5zZm9ybSk7Ci19Ci0KLXZvaWQgRXZlbnRS
ZWdpb25Db250ZXh0Ojpwb3BUcmFuc2Zvcm0oKQotewotICAgIGlmIChtX3RyYW5zZm9ybVN0YWNr
LmlzRW1wdHkoKSkgewotICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgcmV0
dXJuOwotICAgIH0KLSAgICBtX3RyYW5zZm9ybVN0YWNrLnJlbW92ZUxhc3QoKTsKLX0KLQotdm9p
ZCBFdmVudFJlZ2lvbkNvbnRleHQ6OnB1c2hDbGlwKGNvbnN0IEludFJlY3QmIGNsaXBSZWN0KQot
ewotICAgIGF1dG8gdHJhbnNmb3JtZWRDbGlwID0gbV90cmFuc2Zvcm1TdGFjay5pc0VtcHR5KCkg
PyBjbGlwUmVjdCA6IG1fdHJhbnNmb3JtU3RhY2subGFzdCgpLm1hcFJlY3QoY2xpcFJlY3QpOwot
Ci0gICAgaWYgKG1fY2xpcFN0YWNrLmlzRW1wdHkoKSkKLSAgICAgICAgbV9jbGlwU3RhY2suYXBw
ZW5kKHRyYW5zZm9ybWVkQ2xpcCk7Ci0gICAgZWxzZQotICAgICAgICBtX2NsaXBTdGFjay5hcHBl
bmQoaW50ZXJzZWN0aW9uKG1fY2xpcFN0YWNrLmxhc3QoKSwgdHJhbnNmb3JtZWRDbGlwKSk7Ci19
Ci0KLXZvaWQgRXZlbnRSZWdpb25Db250ZXh0OjpwdXNoQ2xpcChjb25zdCBQYXRoJiBwYXRoLCBX
aW5kUnVsZSkKLXsKLSAgICAvLyBGSVhNRTogQXBwcm94aW1hdGUgcGF0aHMgYmV0dGVyLgotICAg
IGF1dG8gcGF0aEJvdW5kcyA9IGVuY2xvc2luZ0ludFJlY3QocGF0aC5ib3VuZGluZ1JlY3QoKSk7
Ci0gICAgcHVzaENsaXAocGF0aEJvdW5kcyk7Ci19Ci0KLXZvaWQgRXZlbnRSZWdpb25Db250ZXh0
Ojpwb3BDbGlwKCkKLXsKLSAgICBpZiAobV9jbGlwU3RhY2suaXNFbXB0eSgpKSB7Ci0gICAgICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIG1fY2xp
cFN0YWNrLnJlbW92ZUxhc3QoKTsKLX0KK0V2ZW50UmVnaW9uQ29udGV4dDo6fkV2ZW50UmVnaW9u
Q29udGV4dCgpID0gZGVmYXVsdDsKIAogdm9pZCBFdmVudFJlZ2lvbkNvbnRleHQ6OnVuaXRlKGNv
bnN0IFJlZ2lvbiYgcmVnaW9uLCBSZW5kZXJPYmplY3QmIHJlbmRlcmVyLCBjb25zdCBSZW5kZXJT
dHlsZSYgc3R5bGUsIGJvb2wgb3ZlcnJpZGVVc2VyTW9kaWZ5SXNFZGl0YWJsZSkKIHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9FdmVudFJlZ2lvbi5oIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL0V2ZW50UmVnaW9uLmgKaW5kZXggNGZkNGIxZWE1YmJhLi42ZmJlODQ2
MjhiZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9FdmVudFJlZ2lvbi5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9FdmVudFJlZ2lvbi5oCkBAIC0yOSw2ICsy
OSw3IEBACiAjaW5jbHVkZSAiSW50UmVjdEhhc2guaCIKICNpbmNsdWRlICJJbnRlcmFjdGlvblJl
Z2lvbi5oIgogI2luY2x1ZGUgIk5vZGUuaCIKKyNpbmNsdWRlICJQYWludENvbnRleHQuaCIKICNp
bmNsdWRlICJSZWdpb24uaCIKICNpbmNsdWRlICJSZW5kZXJTdHlsZUNvbnN0YW50cy5oIgogI2lu
Y2x1ZGUgIlRvdWNoQWN0aW9uLmgiCkBAIC00NCwxOCArNDUsMTIgQEAgY2xhc3MgUGF0aDsKIGNs
YXNzIFJlbmRlck9iamVjdDsKIGNsYXNzIFJlbmRlclN0eWxlOwogCi1lbnVtIGNsYXNzIFdpbmRS
dWxlIDogYm9vbDsKLQotY2xhc3MgRXZlbnRSZWdpb25Db250ZXh0IHsKK2NsYXNzIEV2ZW50UmVn
aW9uQ29udGV4dCA6IHB1YmxpYyBQYWludENvbnRleHQgewogcHVibGljOgogICAgIGV4cGxpY2l0
IEV2ZW50UmVnaW9uQ29udGV4dChFdmVudFJlZ2lvbiYpOworICAgIHZpcnR1YWwgfkV2ZW50UmVn
aW9uQ29udGV4dCgpOwogCi0gICAgdm9pZCBwdXNoVHJhbnNmb3JtKGNvbnN0IEFmZmluZVRyYW5z
Zm9ybSYpOwotICAgIHZvaWQgcG9wVHJhbnNmb3JtKCk7Ci0KLSAgICB2b2lkIHB1c2hDbGlwKGNv
bnN0IEludFJlY3QmKTsKLSAgICB2b2lkIHB1c2hDbGlwKGNvbnN0IFBhdGgmLCBXaW5kUnVsZSk7
Ci0gICAgdm9pZCBwb3BDbGlwKCk7CisgICAgYm9vbCBpc0V2ZW50UmVnaW9uUGFpbnRDb250ZXh0
KCkgY29uc3QgZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQogCiAgICAgdm9pZCB1bml0ZShjb25zdCBS
ZWdpb24mLCBSZW5kZXJPYmplY3QmLCBjb25zdCBSZW5kZXJTdHlsZSYsIGJvb2wgb3ZlcnJpZGVV
c2VyTW9kaWZ5SXNFZGl0YWJsZSA9IGZhbHNlKTsKICAgICBib29sIGNvbnRhaW5zKGNvbnN0IElu
dFJlY3QmKSBjb25zdDsKQEAgLTY4LDggKzYzLDYgQEAgcHVibGljOgogCiBwcml2YXRlOgogICAg
IEV2ZW50UmVnaW9uJiBtX2V2ZW50UmVnaW9uOwotICAgIFZlY3RvcjxBZmZpbmVUcmFuc2Zvcm0+
IG1fdHJhbnNmb3JtU3RhY2s7Ci0gICAgVmVjdG9yPEludFJlY3Q+IG1fY2xpcFN0YWNrOwogCiAj
aWYgRU5BQkxFKElOVEVSQUNUSU9OX1JFR0lPTlNfSU5fRVZFTlRfUkVHSU9OKQogICAgIFZlY3Rv
cjxJbnRlcmFjdGlvblJlZ2lvbj4gbV9pbnRlcmFjdGlvblJlZ2lvbnM7CkBAIC03OSw0NSArNzIs
NiBAQCBwcml2YXRlOgogI2VuZGlmCiB9OwogCi1jbGFzcyBFdmVudFJlZ2lvbkNvbnRleHRTdGF0
ZVNhdmVyIHsKLXB1YmxpYzoKLSAgICBFdmVudFJlZ2lvbkNvbnRleHRTdGF0ZVNhdmVyKEV2ZW50
UmVnaW9uQ29udGV4dCogY29udGV4dCkKLSAgICAgICAgOiBtX2NvbnRleHQoY29udGV4dCkKLSAg
ICB7Ci0gICAgfQotICAgIAotICAgIH5FdmVudFJlZ2lvbkNvbnRleHRTdGF0ZVNhdmVyKCkKLSAg
ICB7Ci0gICAgICAgIGlmICghbV9jb250ZXh0KQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAg
ICAgIGlmIChtX3B1c2hlZENsaXApCi0gICAgICAgICAgICBtX2NvbnRleHQtPnBvcENsaXAoKTsK
LSAgICB9Ci0gICAgCi0gICAgdm9pZCBwdXNoQ2xpcChjb25zdCBJbnRSZWN0JiBjbGlwUmVjdCkK
LSAgICB7Ci0gICAgICAgIEFTU0VSVCghbV9wdXNoZWRDbGlwKTsKLSAgICAgICAgaWYgKG1fY29u
dGV4dCkKLSAgICAgICAgICAgIG1fY29udGV4dC0+cHVzaENsaXAoY2xpcFJlY3QpOwotICAgICAg
ICBtX3B1c2hlZENsaXAgPSB0cnVlOwotICAgIH0KLQotICAgIHZvaWQgcHVzaENsaXAoY29uc3Qg
UGF0aCYgcGF0aCwgV2luZFJ1bGUgd2luZFJ1bGUpCi0gICAgewotICAgICAgICBBU1NFUlQoIW1f
cHVzaGVkQ2xpcCk7Ci0gICAgICAgIGlmIChtX2NvbnRleHQpCi0gICAgICAgICAgICBtX2NvbnRl
eHQtPnB1c2hDbGlwKHBhdGgsIHdpbmRSdWxlKTsKLSAgICAgICAgbV9wdXNoZWRDbGlwID0gdHJ1
ZTsKLSAgICB9Ci0KLSAgICBFdmVudFJlZ2lvbkNvbnRleHQqIGNvbnRleHQoKSBjb25zdCB7IHJl
dHVybiBtX2NvbnRleHQ7IH0KLQotcHJpdmF0ZToKLSAgICBFdmVudFJlZ2lvbkNvbnRleHQqIG1f
Y29udGV4dDsKLSAgICBib29sIG1fcHVzaGVkQ2xpcCB7IGZhbHNlIH07Ci19OwotCiBjbGFzcyBF
dmVudFJlZ2lvbiB7CiBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgRXZlbnRSZWdpb24oKTsK
QEAgLTIxMywzICsxNjcsNyBAQCBpbmxpbmUgdm9pZCBFdmVudFJlZ2lvbjo6ZW5zdXJlRWRpdGFi
bGVSZWdpb24oKQogI2VuZGlmCiAKIH0KKworU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19CRUdJTihX
ZWJDb3JlOjpFdmVudFJlZ2lvbkNvbnRleHQpCisgICAgc3RhdGljIGJvb2wgaXNUeXBlKGNvbnN0
IFdlYkNvcmU6OlBhaW50Q29udGV4dCYgcGFpbnRDb250ZXh0KSB7IHJldHVybiBwYWludENvbnRl
eHQuaXNFdmVudFJlZ2lvblBhaW50Q29udGV4dCgpOyB9CitTUEVDSUFMSVpFX1RZUEVfVFJBSVRT
X0VORCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvTGVnYWN5SW5saW5l
RWxlbWVudEJveC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvTGVnYWN5SW5saW5lRWxl
bWVudEJveC5jcHAKaW5kZXggYjY2MTM2ZDZlODBlLi4zMDMyYjQ3MGRhZWQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9MZWdhY3lJbmxpbmVFbGVtZW50Qm94LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvTGVnYWN5SW5saW5lRWxlbWVudEJveC5jcHAKQEAg
LTcxLDcgKzcxLDcgQEAgdm9pZCBMZWdhY3lJbmxpbmVFbGVtZW50Qm94OjpwYWludChQYWludElu
Zm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW4KICAgICBpZiAoIXBhaW50SW5m
by5zaG91bGRQYWludFdpdGhpblJvb3QocmVuZGVyZXIoKSkpCiAgICAgICAgIHJldHVybjsKIAot
ICAgIGlmIChwYWludEluZm8ucGhhc2UgIT0gUGFpbnRQaGFzZTo6Rm9yZWdyb3VuZCAmJiBwYWlu
dEluZm8ucGhhc2UgIT0gUGFpbnRQaGFzZTo6U2VsZWN0aW9uICYmIHBhaW50SW5mby5waGFzZSAh
PSBQYWludFBoYXNlOjpFdmVudFJlZ2lvbikKKyAgICBpZiAocGFpbnRJbmZvLnBoYXNlICE9IFBh
aW50UGhhc2U6OkZvcmVncm91bmQgJiYgcGFpbnRJbmZvLnBoYXNlICE9IFBhaW50UGhhc2U6OlNl
bGVjdGlvbiAmJiBwYWludEluZm8ucGhhc2UgIT0gUGFpbnRQaGFzZTo6RXZlbnRSZWdpb24gJiYg
cGFpbnRJbmZvLnBoYXNlICE9IFBhaW50UGhhc2U6OkFjY2Vzc2liaWxpdHkpCiAgICAgICAgIHJl
dHVybjsKIAogICAgIExheW91dFBvaW50IGNoaWxkUG9pbnQgPSBwYWludE9mZnNldDsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9MZWdhY3lJbmxpbmVGbG93Qm94LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9MZWdhY3lJbmxpbmVGbG93Qm94LmNwcAppbmRleCA5
YzQ4MmQ3ZTkwYjMuLjU2NjU3M2FkNWI0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL0xlZ2FjeUlubGluZUZsb3dCb3guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9MZWdhY3lJbmxpbmVGbG93Qm94LmNwcApAQCAtMTEwNCw3ICsxMTA0LDcgQEAgYm9vbCBM
ZWdhY3lJbmxpbmVGbG93Qm94Ojpub2RlQXRQb2ludChjb25zdCBIaXRUZXN0UmVxdWVzdCYgcmVx
dWVzdCwgSGl0VGVzdFJlc3UKIAogdm9pZCBMZWdhY3lJbmxpbmVGbG93Qm94OjpwYWludChQYWlu
dEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50T2Zmc2V0LCBMYXlvdXRV
bml0IGxpbmVUb3AsIExheW91dFVuaXQgbGluZUJvdHRvbSkKIHsKLSAgICBpZiAocGFpbnRJbmZv
LnBoYXNlICE9IFBhaW50UGhhc2U6OkZvcmVncm91bmQgJiYgcGFpbnRJbmZvLnBoYXNlICE9IFBh
aW50UGhhc2U6OlNlbGVjdGlvbiAmJiBwYWludEluZm8ucGhhc2UgIT0gUGFpbnRQaGFzZTo6T3V0
bGluZSAmJiBwYWludEluZm8ucGhhc2UgIT0gUGFpbnRQaGFzZTo6U2VsZk91dGxpbmUgJiYgcGFp
bnRJbmZvLnBoYXNlICE9IFBhaW50UGhhc2U6OkNoaWxkT3V0bGluZXMgJiYgcGFpbnRJbmZvLnBo
YXNlICE9IFBhaW50UGhhc2U6OlRleHRDbGlwICYmIHBhaW50SW5mby5waGFzZSAhPSBQYWludFBo
YXNlOjpNYXNrICYmIHBhaW50SW5mby5waGFzZSAhPSBQYWludFBoYXNlOjpFdmVudFJlZ2lvbikK
KyAgICBpZiAocGFpbnRJbmZvLnBoYXNlICE9IFBhaW50UGhhc2U6OkZvcmVncm91bmQgJiYgcGFp
bnRJbmZvLnBoYXNlICE9IFBhaW50UGhhc2U6OlNlbGVjdGlvbiAmJiBwYWludEluZm8ucGhhc2Ug
IT0gUGFpbnRQaGFzZTo6T3V0bGluZSAmJiBwYWludEluZm8ucGhhc2UgIT0gUGFpbnRQaGFzZTo6
U2VsZk91dGxpbmUgJiYgcGFpbnRJbmZvLnBoYXNlICE9IFBhaW50UGhhc2U6OkNoaWxkT3V0bGlu
ZXMgJiYgcGFpbnRJbmZvLnBoYXNlICE9IFBhaW50UGhhc2U6OlRleHRDbGlwICYmIHBhaW50SW5m
by5waGFzZSAhPSBQYWludFBoYXNlOjpNYXNrICYmIHBhaW50SW5mby5waGFzZSAhPSBQYWludFBo
YXNlOjpFdmVudFJlZ2lvbiAmJiBwYWludEluZm8ucGhhc2UgIT0gUGFpbnRQaGFzZTo6QWNjZXNz
aWJpbGl0eSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgTGF5b3V0UmVjdCBvdmVyZmxvd1JlY3Qo
dmlzdWFsT3ZlcmZsb3dSZWN0KGxpbmVUb3AsIGxpbmVCb3R0b20pKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9QYWludENvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1BhaW50Q29udGV4dC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwLi40NTIxMTJmNjgxN2MKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUGFpbnRDb250ZXh0LmNwcApAQCAtMCwwICsxLDc0IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDIzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisg
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlBhaW50Q29udGV4dC5oIgorCituYW1l
c3BhY2UgV2ViQ29yZSB7CisKK3ZvaWQgUGFpbnRDb250ZXh0OjpwdXNoVHJhbnNmb3JtKGNvbnN0
IEFmZmluZVRyYW5zZm9ybSYgdHJhbnNmb3JtKQoreworICAgIGlmIChtX3RyYW5zZm9ybVN0YWNr
LmlzRW1wdHkoKSkKKyAgICAgICAgbV90cmFuc2Zvcm1TdGFjay5hcHBlbmQodHJhbnNmb3JtKTsK
KyAgICBlbHNlCisgICAgICAgIG1fdHJhbnNmb3JtU3RhY2suYXBwZW5kKG1fdHJhbnNmb3JtU3Rh
Y2subGFzdCgpICogdHJhbnNmb3JtKTsKK30KKwordm9pZCBQYWludENvbnRleHQ6OnBvcFRyYW5z
Zm9ybSgpCit7CisgICAgaWYgKG1fdHJhbnNmb3JtU3RhY2suaXNFbXB0eSgpKSB7CisgICAgICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIG1fdHJh
bnNmb3JtU3RhY2sucmVtb3ZlTGFzdCgpOworfQorCit2b2lkIFBhaW50Q29udGV4dDo6cHVzaENs
aXAoY29uc3QgSW50UmVjdCYgY2xpcFJlY3QpCit7CisgICAgYXV0byB0cmFuc2Zvcm1lZENsaXAg
PSBtX3RyYW5zZm9ybVN0YWNrLmlzRW1wdHkoKSA/IGNsaXBSZWN0IDogbV90cmFuc2Zvcm1TdGFj
ay5sYXN0KCkubWFwUmVjdChjbGlwUmVjdCk7CisKKyAgICBpZiAobV9jbGlwU3RhY2suaXNFbXB0
eSgpKQorICAgICAgICBtX2NsaXBTdGFjay5hcHBlbmQodHJhbnNmb3JtZWRDbGlwKTsKKyAgICBl
bHNlCisgICAgICAgIG1fY2xpcFN0YWNrLmFwcGVuZChpbnRlcnNlY3Rpb24obV9jbGlwU3RhY2su
bGFzdCgpLCB0cmFuc2Zvcm1lZENsaXApKTsKK30KKwordm9pZCBQYWludENvbnRleHQ6OnB1c2hD
bGlwKGNvbnN0IFBhdGgmIHBhdGgpCit7CisgICAgLy8gRklYTUU6IEFwcHJveGltYXRlIHBhdGhz
IGJldHRlci4KKyAgICBhdXRvIHBhdGhCb3VuZHMgPSBlbmNsb3NpbmdJbnRSZWN0KHBhdGguYm91
bmRpbmdSZWN0KCkpOworICAgIHB1c2hDbGlwKHBhdGhCb3VuZHMpOworfQorCit2b2lkIFBhaW50
Q29udGV4dDo6cG9wQ2xpcCgpCit7CisgICAgaWYgKG1fY2xpcFN0YWNrLmlzRW1wdHkoKSkgewor
ICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAg
ICBtX2NsaXBTdGFjay5yZW1vdmVMYXN0KCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9QYWludENvbnRleHQuaCBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9QYWludENvbnRleHQuaApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAuLjllODRjZDIzM2UwYwotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9QYWludENvbnRleHQuaApAQCAtMCwwICsxLDk1IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDIzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJBZmZpbmVUcmFuc2Zvcm0uaCIK
KyNpbmNsdWRlIDx3dGYvQ2hlY2tlZFB0ci5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKwor
bmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBQYXRoOworCitjbGFzcyBQYWludENvbnRleHQg
OiBwdWJsaWMgQ2FuTWFrZUNoZWNrZWRQdHIgeworcHVibGljOgorICAgIHZpcnR1YWwgflBhaW50
Q29udGV4dCgpID0gZGVmYXVsdDsKKworICAgIHZvaWQgcHVzaFRyYW5zZm9ybShjb25zdCBBZmZp
bmVUcmFuc2Zvcm0mKTsKKyAgICB2b2lkIHBvcFRyYW5zZm9ybSgpOworCisgICAgdm9pZCBwdXNo
Q2xpcChjb25zdCBJbnRSZWN0Jik7CisgICAgdm9pZCBwdXNoQ2xpcChjb25zdCBQYXRoJik7Cisg
ICAgdm9pZCBwb3BDbGlwKCk7CisKKyAgICB2aXJ0dWFsIGJvb2wgaXNFdmVudFJlZ2lvblBhaW50
Q29udGV4dCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCBib29sIGlzQWNj
ZXNzaWJpbGl0eVBhaW50Q29udGV4dCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisKK3Byb3Rl
Y3RlZDoKKyAgICBWZWN0b3I8QWZmaW5lVHJhbnNmb3JtPiBtX3RyYW5zZm9ybVN0YWNrOworICAg
IFZlY3RvcjxJbnRSZWN0PiBtX2NsaXBTdGFjazsKKworfTsgLy8gY2xhc3MgUGFpbnRDb250ZXh0
CisKK2NsYXNzIFBhaW50Q29udGV4dFN0YXRlU2F2ZXIgeworcHVibGljOgorICAgIFBhaW50Q29u
dGV4dFN0YXRlU2F2ZXIoUGFpbnRDb250ZXh0KiBjb250ZXh0KQorICAgICAgICA6IG1fY29udGV4
dChjb250ZXh0KQorICAgIHsKKyAgICB9CisKKyAgICB+UGFpbnRDb250ZXh0U3RhdGVTYXZlcigp
CisgICAgeworICAgICAgICBpZiAoIW1fY29udGV4dCkKKyAgICAgICAgICAgIHJldHVybjsKKwor
ICAgICAgICBpZiAobV9wdXNoZWRDbGlwKQorICAgICAgICAgICAgbV9jb250ZXh0LT5wb3BDbGlw
KCk7CisgICAgfQorCisgICAgdm9pZCBwdXNoQ2xpcChjb25zdCBJbnRSZWN0JiBjbGlwUmVjdCkK
KyAgICB7CisgICAgICAgIEFTU0VSVCghbV9wdXNoZWRDbGlwKTsKKyAgICAgICAgaWYgKG1fY29u
dGV4dCkKKyAgICAgICAgICAgIG1fY29udGV4dC0+cHVzaENsaXAoY2xpcFJlY3QpOworICAgICAg
ICBtX3B1c2hlZENsaXAgPSB0cnVlOworICAgIH0KKworICAgIHZvaWQgcHVzaENsaXAoY29uc3Qg
UGF0aCYgcGF0aCkKKyAgICB7CisgICAgICAgIEFTU0VSVCghbV9wdXNoZWRDbGlwKTsKKyAgICAg
ICAgaWYgKG1fY29udGV4dCkKKyAgICAgICAgICAgIG1fY29udGV4dC0+cHVzaENsaXAocGF0aCk7
CisgICAgICAgIG1fcHVzaGVkQ2xpcCA9IHRydWU7CisgICAgfQorCisgICAgUGFpbnRDb250ZXh0
KiBjb250ZXh0KCkgY29uc3QgeyByZXR1cm4gY29uc3RfY2FzdDxQYWludENvbnRleHQqPihtX2Nv
bnRleHQuZ2V0KCkpOyB9CisKK3ByaXZhdGU6CisgICAgQ2hlY2tlZFB0cjxQYWludENvbnRleHQ+
IG1fY29udGV4dDsKKyAgICBib29sIG1fcHVzaGVkQ2xpcCB7IGZhbHNlIH07Cit9OyAvLyBjbGFz
cyBQYWludENvbnRleHRTdGF0ZVNhdmVyCisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9QYWludEluZm8uaCBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9QYWludEluZm8uaAppbmRleCAwNTBkNWNhZjZiMmYuLjEyMzIwNTBlMjA1
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1BhaW50SW5mby5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9QYWludEluZm8uaApAQCAtMjUsNyArMjUsOSBAQAog
CiAjcHJhZ21hIG9uY2UKIAorI2luY2x1ZGUgIkFjY2Vzc2liaWxpdHlQYWludENvbnRleHQuaCIK
ICNpbmNsdWRlICJBZmZpbmVUcmFuc2Zvcm0uaCIKKyNpbmNsdWRlICJFdmVudFJlZ2lvbi5oIgog
I2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgogI2luY2x1ZGUgIkludFJlY3QuaCIKICNpbmNs
dWRlICJMYXlvdXRSZWN0LmgiCkBAIC0zNyw3ICszOSw2IEBACiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAotY2xhc3MgRXZlbnRSZWdpb25Db250ZXh0OwogY2xhc3MgT3ZlcmxhcFRlc3RSZXF1ZXN0
Q2xpZW50OwogY2xhc3MgUmVuZGVySW5saW5lOwogY2xhc3MgUmVuZGVyTGF5ZXI7CkBAIC0xMjEs
NiArMTIyLDkgQEAgc3RydWN0IFBhaW50SW5mbyB7CiAgICAgICAgIHJlY3Quc2V0U2l6ZShMYXlv
dXRTaXplKHRyYW5mb3JtZWRSZWN0LnNpemUoKSkpOwogICAgIH0KIAorICAgIEV2ZW50UmVnaW9u
Q29udGV4dCogZXZlbnRSZWdpb25QYWludENvbnRleHQoKSB7IHJldHVybiBkeW5hbWljRG93bmNh
c3Q8RXZlbnRSZWdpb25Db250ZXh0PihwYWludENvbnRleHQpOyB9CisgICAgQWNjZXNzaWJpbGl0
eVBhaW50Q29udGV4dCogYWNjZXNzaWJpbGl0eVBhaW50Q29udGV4dCgpIHsgcmV0dXJuIGR5bmFt
aWNEb3duY2FzdDxBY2Nlc3NpYmlsaXR5UGFpbnRDb250ZXh0PihwYWludENvbnRleHQpOyB9CisK
ICAgICBMYXlvdXRSZWN0IHJlY3Q7CiAgICAgUGFpbnRQaGFzZSBwaGFzZTsKICAgICBPcHRpb25T
ZXQ8UGFpbnRCZWhhdmlvcj4gcGFpbnRCZWhhdmlvcjsKQEAgLTEzMCw3ICsxMzQsOCBAQCBzdHJ1
Y3QgUGFpbnRJbmZvIHsKICAgICBjb25zdCBSZW5kZXJMYXllck1vZGVsT2JqZWN0KiBwYWludENv
bnRhaW5lcjsgLy8gdGhlIGxheWVyIG9iamVjdCB0aGF0IG9yaWdpbmF0ZXMgdGhlIGN1cnJlbnQg
cGFpbnRpbmcKICAgICBib29sIHJlcXVpcmVTZWN1cml0eU9yaWdpbkFjY2Vzc0ZvcldpZGdldHMg
eyBmYWxzZSB9OwogICAgIGNvbnN0IFJlbmRlckxheWVyKiBtX2VuY2xvc2luZ1NlbGZQYWludGlu
Z0xheWVyIHsgbnVsbHB0ciB9OwotICAgIEV2ZW50UmVnaW9uQ29udGV4dCogZXZlbnRSZWdpb25D
b250ZXh0IHsgbnVsbHB0ciB9OyAvLyBGb3IgUGFpbnRQaGFzZTo6RXZlbnRSZWdpb24uCisgICAg
Ly8gQ2VydGFpbiBwaGFzZXMgKGUuZy4gUGFpbnRQaGFzZTo6RXZlbnRSZWdpb24sIFBhaW50UGhh
c2U6OkFjY2Vzc2liaWxpdHkpIHJlcXVpcmUgY29udGV4dC4KKyAgICBQYWludENvbnRleHQqIHBh
aW50Q29udGV4dCB7IG51bGxwdHIgfTsKIAogcHJpdmF0ZToKICAgICBHcmFwaGljc0NvbnRleHQq
IG1fY29udGV4dDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9QYWludFBo
YXNlLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUGFpbnRQaGFzZS5oCmluZGV4IDRhNTZm
NTMzMTQ1Zi4uZTZkZGRhNjRkNjZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUGFpbnRQaGFzZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9QYWludFBoYXNl
LmgKQEAgLTUxLDYgKzUxLDcgQEAgZW51bSBjbGFzcyBQYWludFBoYXNlIDogdWludDE2X3Qgewog
ICAgIE1hc2sgICAgICAgICAgICAgICAgICAgICA9IDEgPDwgMTAsCiAgICAgQ2xpcHBpbmdNYXNr
ICAgICAgICAgICAgID0gMSA8PCAxMSwKICAgICBFdmVudFJlZ2lvbiAgICAgICAgICAgICAgPSAx
IDw8IDEyLAorICAgIEFjY2Vzc2liaWxpdHkgICAgICAgICAgICA9IDEgPDwgMTMsCiB9OwogCiBl
bnVtIGNsYXNzIFBhaW50QmVoYXZpb3IgOiB1aW50MTZfdCB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckJsb2NrLmNwcAppbmRleCA5MzQ4MGQ4NjM3ZjIuLmUxYWU1ZGZlMzczMyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwCkBAIC0xMTY3LDcgKzExNjcs
NyBAQCB2b2lkIFJlbmRlckJsb2NrOjpwYWludENvbnRlbnRzKFBhaW50SW5mbyYgcGFpbnRJbmZv
LCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbnRPZgogICAgICAgICBwYWludEluZm9Gb3JDaGlsZC5w
aGFzZSA9IG5ld1BoYXNlOwogICAgICAgICBwYWludEluZm9Gb3JDaGlsZC51cGRhdGVTdWJ0cmVl
UGFpbnRSb290Rm9yQ2hpbGRyZW4odGhpcyk7CiAKLSAgICAgICAgaWYgKHBhaW50SW5mby5ldmVu
dFJlZ2lvbkNvbnRleHQpCisgICAgICAgIGlmIChwYWludEluZm8uZXZlbnRSZWdpb25QYWludENv
bnRleHQoKSkKICAgICAgICAgICAgIHBhaW50SW5mb0ZvckNoaWxkLnBhaW50QmVoYXZpb3IuYWRk
KFBhaW50QmVoYXZpb3I6OkV2ZW50UmVnaW9uSW5jbHVkZUJhY2tncm91bmQpOwogCiAgICAgICAg
IC8vIEZJWE1FOiBQYWludC10aW1lIHBhZ2luYXRpb24gaXMgb2Jzb2xldGUgYW5kIGlzIG5vdyBv
bmx5IHVzZWQgYnkgZW1iZWRkZWQgV2ViVmlld3MgaW5zaWRlIEFwcEtpdApAQCAtMTI4MCwyMSAr
MTI4MCwyNCBAQCB2b2lkIFJlbmRlckJsb2NrOjpwYWludE9iamVjdChQYWludEluZm8mIHBhaW50
SW5mbywgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50T2ZmcwogICAgIGlmIChwYWludEluZm8ucGFp
bnRSb290QmFja2dyb3VuZE9ubHkoKSkKICAgICAgICAgcmV0dXJuOwogCisgICAgaWYgKHBhaW50
UGhhc2UgPT0gUGFpbnRQaGFzZTo6QWNjZXNzaWJpbGl0eSkKKyAgICAgICAgcGFpbnRJbmZvLmFj
Y2Vzc2liaWxpdHlQYWludENvbnRleHQoKS0+dGFrZUJvdW5kcygqdGhpcywgRmxvYXRSZWN0KHBh
aW50T2Zmc2V0LCBzaXplKCkpKTsKKwogICAgIGlmIChwYWludFBoYXNlID09IFBhaW50UGhhc2U6
OkV2ZW50UmVnaW9uKSB7CiAgICAgICAgIGF1dG8gYm9yZGVyUmVjdCA9IExheW91dFJlY3QocGFp
bnRPZmZzZXQsIHNpemUoKSk7CiAKICAgICAgICAgaWYgKHBhaW50SW5mby5wYWludEJlaGF2aW9y
LmNvbnRhaW5zKFBhaW50QmVoYXZpb3I6OkV2ZW50UmVnaW9uSW5jbHVkZUJhY2tncm91bmQpICYm
IHZpc2libGVUb0hpdFRlc3RpbmcoKSkgewogICAgICAgICAgICAgYXV0byBib3JkZXJSZWdpb24g
PSBhcHByb3hpbWF0ZUFzUmVnaW9uKHN0eWxlKCkuZ2V0Um91bmRlZEJvcmRlckZvcihib3JkZXJS
ZWN0KSk7CiAgICAgICAgICAgICBMT0dfV0lUSF9TVFJFQU0oRXZlbnRSZWdpb25zLCBzdHJlYW0g
PDwgIlJlbmRlckJsb2NrICIgPDwgKnRoaXMgPDwgIiB1bml0aW5nIHJlZ2lvbiAiIDw8IGJvcmRl
clJlZ2lvbiA8PCAiIGV2ZW50IGxpc3RlbmVyIHR5cGVzICIgPDwgc3R5bGUoKS5ldmVudExpc3Rl
bmVyUmVnaW9uVHlwZXMoKSk7Ci0gICAgICAgICAgICBwYWludEluZm8uZXZlbnRSZWdpb25Db250
ZXh0LT51bml0ZShib3JkZXJSZWdpb24sICp0aGlzLCBzdHlsZSgpLCBpc1RleHRDb250cm9sKCkg
JiYgZG93bmNhc3Q8UmVuZGVyVGV4dENvbnRyb2w+KCp0aGlzKS50ZXh0Rm9ybUNvbnRyb2xFbGVt
ZW50KCkuaXNJbm5lclRleHRFbGVtZW50RWRpdGFibGUoKSk7CisgICAgICAgICAgICBwYWludElu
Zm8uZXZlbnRSZWdpb25QYWludENvbnRleHQoKS0+dW5pdGUoYm9yZGVyUmVnaW9uLCAqdGhpcywg
c3R5bGUoKSwgaXNUZXh0Q29udHJvbCgpICYmIGRvd25jYXN0PFJlbmRlclRleHRDb250cm9sPigq
dGhpcykudGV4dEZvcm1Db250cm9sRWxlbWVudCgpLmlzSW5uZXJUZXh0RWxlbWVudEVkaXRhYmxl
KCkpOwogICAgICAgICB9CiAKICAgICAgICAgaWYgKCFwYWludEluZm8ucGFpbnRCZWhhdmlvci5j
b250YWlucyhQYWludEJlaGF2aW9yOjpFdmVudFJlZ2lvbkluY2x1ZGVGb3JlZ3JvdW5kKSkKICAg
ICAgICAgICAgIHJldHVybjsKIAotICAgICAgICBib29sIG5lZWRzVHJhdmVyc2VEZXNjZW5kYW50
cyA9IGhhc1Zpc3VhbE92ZXJmbG93KCkgfHwgY29udGFpbnNGbG9hdHMoKSB8fCAhcGFpbnRJbmZv
LmV2ZW50UmVnaW9uQ29udGV4dC0+Y29udGFpbnMoZW5jbG9zaW5nSW50UmVjdChib3JkZXJSZWN0
KSkgfHwgdmlldygpLm5lZWRzRXZlbnRSZWdpb25VcGRhdGVGb3JOb25Db21wb3NpdGVkRnJhbWUo
KTsKKyAgICAgICAgYm9vbCBuZWVkc1RyYXZlcnNlRGVzY2VuZGFudHMgPSBoYXNWaXN1YWxPdmVy
ZmxvdygpIHx8IGNvbnRhaW5zRmxvYXRzKCkgfHwgIXBhaW50SW5mby5ldmVudFJlZ2lvblBhaW50
Q29udGV4dCgpLT5jb250YWlucyhlbmNsb3NpbmdJbnRSZWN0KGJvcmRlclJlY3QpKSB8fCB2aWV3
KCkubmVlZHNFdmVudFJlZ2lvblVwZGF0ZUZvck5vbkNvbXBvc2l0ZWRGcmFtZSgpOwogICAgICAg
ICBMT0dfV0lUSF9TVFJFQU0oRXZlbnRSZWdpb25zLCBzdHJlYW0gPDwgIlJlbmRlckJsb2NrICIg
PDwgKnRoaXMgPDwgIiBuZWVkc1RyYXZlcnNlRGVzY2VuZGFudHMgZm9yIGV2ZW50IHJlZ2lvbjog
aGFzVmlzdWFsT3ZlcmZsb3c6ICIgPDwgaGFzVmlzdWFsT3ZlcmZsb3coKSA8PCAiIGNvbnRhaW5z
RmxvYXRzOiAiCi0gICAgICAgICAgICA8PCBjb250YWluc0Zsb2F0cygpIDw8ICAiIGJvcmRlciBi
b3ggaXMgb3V0c2lkZSBjdXJyZW50IHJlZ2lvbjogIiA8PCAhcGFpbnRJbmZvLmV2ZW50UmVnaW9u
Q29udGV4dC0+Y29udGFpbnMoZW5jbG9zaW5nSW50UmVjdChib3JkZXJSZWN0KSkgPDwgIiBuZWVk
c0V2ZW50UmVnaW9uVXBkYXRlRm9yTm9uQ29tcG9zaXRlZEZyYW1lOiIgPDwgdmlldygpLm5lZWRz
RXZlbnRSZWdpb25VcGRhdGVGb3JOb25Db21wb3NpdGVkRnJhbWUoKSk7CisgICAgICAgICAgICA8
PCBjb250YWluc0Zsb2F0cygpIDw8ICAiIGJvcmRlciBib3ggaXMgb3V0c2lkZSBjdXJyZW50IHJl
Z2lvbjogIiA8PCAhcGFpbnRJbmZvLmV2ZW50UmVnaW9uUGFpbnRDb250ZXh0KCktPmNvbnRhaW5z
KGVuY2xvc2luZ0ludFJlY3QoYm9yZGVyUmVjdCkpIDw8ICIgbmVlZHNFdmVudFJlZ2lvblVwZGF0
ZUZvck5vbkNvbXBvc2l0ZWRGcmFtZToiIDw8IHZpZXcoKS5uZWVkc0V2ZW50UmVnaW9uVXBkYXRl
Rm9yTm9uQ29tcG9zaXRlZEZyYW1lKCkpOwogI2lmIEVOQUJMRShUT1VDSF9BQ1RJT05fUkVHSU9O
UykKICAgICAgICAgbmVlZHNUcmF2ZXJzZURlc2NlbmRhbnRzIHw9IGRvY3VtZW50KCkubWF5SGF2
ZUVsZW1lbnRzV2l0aE5vbkF1dG9Ub3VjaEFjdGlvbigpOwogICAgICAgICBMT0dfV0lUSF9TVFJF
QU0oRXZlbnRSZWdpb25zLCBzdHJlYW0gPDwgIiAgbWF5IGhhdmUgdG91Y2gtYWN0aW9uIGVsZW1l
bnRzOiAiIDw8IGRvY3VtZW50KCkubWF5SGF2ZUVsZW1lbnRzV2l0aE5vbkF1dG9Ub3VjaEFjdGlv
bigpKTsKQEAgLTEzNDYsOCArMTM0OSw4IEBAIHZvaWQgUmVuZGVyQmxvY2s6OnBhaW50T2JqZWN0
KFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbnRPZmZzCiAgICAg
ICAgIHBhaW50U2VsZWN0aW9uKHBhaW50SW5mbywgc2Nyb2xsZWRPZmZzZXQpOyAvLyBGaWxsIGlu
IGdhcHMgaW4gc2VsZWN0aW9uIG9uIGxpbmVzIGFuZCBiZXR3ZWVuIGJsb2Nrcy4KIAogICAgIC8v
IDQuIHBhaW50IGZsb2F0cy4KLSAgICBpZiAocGFpbnRQaGFzZSA9PSBQYWludFBoYXNlOjpGbG9h
dCB8fCBwYWludFBoYXNlID09IFBhaW50UGhhc2U6OlNlbGVjdGlvbiB8fCBwYWludFBoYXNlID09
IFBhaW50UGhhc2U6OlRleHRDbGlwIHx8IHBhaW50UGhhc2UgPT0gUGFpbnRQaGFzZTo6RXZlbnRS
ZWdpb24pCi0gICAgICAgIHBhaW50RmxvYXRzKHBhaW50SW5mbywgc2Nyb2xsZWRPZmZzZXQsIHBh
aW50UGhhc2UgPT0gUGFpbnRQaGFzZTo6U2VsZWN0aW9uIHx8IHBhaW50UGhhc2UgPT0gUGFpbnRQ
aGFzZTo6VGV4dENsaXAgfHwgcGFpbnRQaGFzZSA9PSBQYWludFBoYXNlOjpFdmVudFJlZ2lvbik7
CisgICAgaWYgKHBhaW50UGhhc2UgPT0gUGFpbnRQaGFzZTo6RmxvYXQgfHwgcGFpbnRQaGFzZSA9
PSBQYWludFBoYXNlOjpTZWxlY3Rpb24gfHwgcGFpbnRQaGFzZSA9PSBQYWludFBoYXNlOjpUZXh0
Q2xpcCB8fCBwYWludFBoYXNlID09IFBhaW50UGhhc2U6OkV2ZW50UmVnaW9uIHx8IHBhaW50UGhh
c2UgPT0gUGFpbnRQaGFzZTo6QWNjZXNzaWJpbGl0eSkKKyAgICAgICAgcGFpbnRGbG9hdHMocGFp
bnRJbmZvLCBzY3JvbGxlZE9mZnNldCwgcGFpbnRQaGFzZSA9PSBQYWludFBoYXNlOjpTZWxlY3Rp
b24gfHwgcGFpbnRQaGFzZSA9PSBQYWludFBoYXNlOjpUZXh0Q2xpcCB8fCBwYWludFBoYXNlID09
IFBhaW50UGhhc2U6OkV2ZW50UmVnaW9uIHx8IHBhaW50UGhhc2UgPT0gUGFpbnRQaGFzZTo6QWNj
ZXNzaWJpbGl0eSk7CiAKICAgICAvLyA1LiBwYWludCBvdXRsaW5lLgogICAgIGlmICgocGFpbnRQ
aGFzZSA9PSBQYWludFBoYXNlOjpPdXRsaW5lIHx8IHBhaW50UGhhc2UgPT0gUGFpbnRQaGFzZTo6
U2VsZk91dGxpbmUpICYmIGhhc091dGxpbmUoKSAmJiBzdHlsZSgpLnZpc2liaWxpdHkoKSA9PSBW
aXNpYmlsaXR5OjpWaXNpYmxlKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyQm94LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3Bw
CmluZGV4IDM5ZTk1N2UxN2RhYS4uZWE0MmM1M2ZlM2FlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyQm94LmNwcApAQCAtMjE2NCw4ICsyMTY0LDggQEAgYm9vbCBSZW5kZXJCb3g6OnB1
c2hDb250ZW50c0NsaXAoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFBvaW50JiBh
Y2N1bXUKICAgICAgICAgY2xpcENvbnRlbnRGb3JCb3JkZXJSYWRpdXMocGFpbnRJbmZvLmNvbnRl
eHQoKSwgYWNjdW11bGF0ZWRPZmZzZXQsIGRldmljZVNjYWxlRmFjdG9yKTsKICAgICBwYWludElu
Zm8uY29udGV4dCgpLmNsaXAoY2xpcFJlY3QpOwogCi0gICAgaWYgKHBhaW50SW5mby5waGFzZSA9
PSBQYWludFBoYXNlOjpFdmVudFJlZ2lvbikKLSAgICAgICAgcGFpbnRJbmZvLmV2ZW50UmVnaW9u
Q29udGV4dC0+cHVzaENsaXAoZW5jbG9zaW5nSW50UmVjdChjbGlwUmVjdCkpOworICAgIGlmIChw
YWludEluZm8ucGhhc2UgPT0gUGFpbnRQaGFzZTo6RXZlbnRSZWdpb24gfHwgcGFpbnRJbmZvLnBo
YXNlID09IFBhaW50UGhhc2U6OkFjY2Vzc2liaWxpdHkpCisgICAgICAgIHBhaW50SW5mby5wYWlu
dENvbnRleHQtPnB1c2hDbGlwKGVuY2xvc2luZ0ludFJlY3QoY2xpcFJlY3QpKTsKIAogICAgIHJl
dHVybiB0cnVlOwogfQpAQCAtMjE3NCw4ICsyMTc0LDggQEAgdm9pZCBSZW5kZXJCb3g6OnBvcENv
bnRlbnRzQ2xpcChQYWludEluZm8mIHBhaW50SW5mbywgUGFpbnRQaGFzZSBvcmlnaW5hbFBoYXNl
LAogewogICAgIEFTU0VSVChoYXNDb250cm9sQ2xpcCgpIHx8IChoYXNOb25WaXNpYmxlT3ZlcmZs
b3coKSAmJiAhbGF5ZXIoKS0+aXNTZWxmUGFpbnRpbmdMYXllcigpKSk7CiAKLSAgICBpZiAocGFp
bnRJbmZvLnBoYXNlID09IFBhaW50UGhhc2U6OkV2ZW50UmVnaW9uKQotICAgICAgICBwYWludElu
Zm8uZXZlbnRSZWdpb25Db250ZXh0LT5wb3BDbGlwKCk7CisgICAgaWYgKHBhaW50SW5mby5waGFz
ZSA9PSBQYWludFBoYXNlOjpFdmVudFJlZ2lvbiB8fCBwYWludEluZm8ucGhhc2UgPT0gUGFpbnRQ
aGFzZTo6QWNjZXNzaWJpbGl0eSkKKyAgICAgICAgcGFpbnRJbmZvLnBhaW50Q29udGV4dC0+cG9w
Q2xpcCgpOwogCiAgICAgcGFpbnRJbmZvLmNvbnRleHQoKS5yZXN0b3JlKCk7CiAgICAgaWYgKG9y
aWdpbmFsUGhhc2UgPT0gUGFpbnRQaGFzZTo6T3V0bGluZSkgewpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckVsZW1lbnQuY3BwCmluZGV4IDZjMDZkZDZiNDFkNy4uM2E2ZDA1NDY3Zjcx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVsZW1lbnQuY3BwCkBAIC0xMTIy
LDcgKzExMjIsNyBAQCB2b2lkIFJlbmRlckVsZW1lbnQ6OnBhaW50QXNJbmxpbmVCbG9jayhQYWlu
dEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQmCiAgICAgLy8gKFNlZSBBcHBlbmRp
eCBFLjIsIHNlY3Rpb24gNi40IG9uIGlubGluZSBibG9jay90YWJsZS9yZXBsYWNlZCBlbGVtZW50
cyBpbiB0aGUgQ1NTMi4xIHNwZWNpZmljYXRpb24uKQogICAgIC8vIFRoaXMgaXMgYWxzbyB1c2Vk
IGJ5IG90aGVyIGVsZW1lbnRzIChlLmcuIGZsZXggaXRlbXMgYW5kIGdyaWQgaXRlbXMpLgogICAg
IFBhaW50UGhhc2UgcGFpbnRQaGFzZVRvVXNlID0gaXNFeGNsdWRlZEFuZFBsYWNlZEluQm9yZGVy
KCkgPyBwYWludEluZm8ucGhhc2UgOiBQYWludFBoYXNlOjpGb3JlZ3JvdW5kOwotICAgIGlmIChw
YWludEluZm8ucGhhc2UgPT0gUGFpbnRQaGFzZTo6U2VsZWN0aW9uIHx8IHBhaW50SW5mby5waGFz
ZSA9PSBQYWludFBoYXNlOjpFdmVudFJlZ2lvbiB8fCBwYWludEluZm8ucGhhc2UgPT0gUGFpbnRQ
aGFzZTo6VGV4dENsaXApCisgICAgaWYgKHBhaW50SW5mby5waGFzZSA9PSBQYWludFBoYXNlOjpT
ZWxlY3Rpb24gfHwgcGFpbnRJbmZvLnBoYXNlID09IFBhaW50UGhhc2U6OkV2ZW50UmVnaW9uIHx8
IHBhaW50SW5mby5waGFzZSA9PSBQYWludFBoYXNlOjpUZXh0Q2xpcCB8fCBwYWludEluZm8ucGhh
c2UgPT0gUGFpbnRQaGFzZTo6QWNjZXNzaWJpbGl0eSkKICAgICAgICAgcGFpbnQocGFpbnRJbmZv
LCBjaGlsZFBvaW50KTsKICAgICBlbHNlIGlmIChwYWludEluZm8ucGhhc2UgPT0gcGFpbnRQaGFz
ZVRvVXNlKSB7CiAgICAgICAgIHBhaW50UGhhc2UoKnRoaXMsIFBhaW50UGhhc2U6OkJsb2NrQmFj
a2dyb3VuZCwgcGFpbnRJbmZvLCBjaGlsZFBvaW50KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyTGF5ZXIuY3BwCmluZGV4IGI3NjgzNWY5ZGRlMS4uODA0Y2JkOGZiZTVmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAKQEAgLTI3NzMsMTQgKzI3NzMsMTUg
QEAgYm9vbCBSZW5kZXJMYXllcjo6aXNQb2ludEluUmVzaXplQ29udHJvbChJbnRQb2ludCBsb2Nh
bFBvaW50KSBjb25zdAogICAgIHJldHVybiBvdmVyZmxvd0NvbnRyb2xzUmVjdHMoKS5yZXNpemVy
LmNvbnRhaW5zKGxvY2FsUG9pbnQpOwogfQogCi12b2lkIFJlbmRlckxheWVyOjpwYWludChHcmFw
aGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IExheW91dFJlY3QmIGRhbWFnZVJlY3QsIGNvbnN0
IExheW91dFNpemUmIHN1YnBpeGVsT2Zmc2V0LCBPcHRpb25TZXQ8UGFpbnRCZWhhdmlvcj4gcGFp
bnRCZWhhdmlvciwgUmVuZGVyT2JqZWN0KiBzdWJ0cmVlUGFpbnRSb290LCBPcHRpb25TZXQ8UGFp
bnRMYXllckZsYWc+IHBhaW50RmxhZ3MsIFNlY3VyaXR5T3JpZ2luUGFpbnRQb2xpY3kgcGFpbnRQ
b2xpY3ksIEV2ZW50UmVnaW9uQ29udGV4dCogZXZlbnRSZWdpb25Db250ZXh0KQordm9pZCBSZW5k
ZXJMYXllcjo6cGFpbnQoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBMYXlvdXRSZWN0
JiBkYW1hZ2VSZWN0LCBjb25zdCBMYXlvdXRTaXplJiBzdWJwaXhlbE9mZnNldCwgT3B0aW9uU2V0
PFBhaW50QmVoYXZpb3I+IHBhaW50QmVoYXZpb3IsIFJlbmRlck9iamVjdCogc3VidHJlZVBhaW50
Um9vdCwgT3B0aW9uU2V0PFBhaW50TGF5ZXJGbGFnPiBwYWludEZsYWdzLCBTZWN1cml0eU9yaWdp
blBhaW50UG9saWN5IHBhaW50UG9saWN5LCBQYWludENvbnRleHQqIHBhaW50Q29udGV4dCkKIHsK
ICAgICBPdmVybGFwVGVzdFJlcXVlc3RNYXAgb3ZlcmxhcFRlc3RSZXF1ZXN0czsKIAogICAgIExh
eWVyUGFpbnRpbmdJbmZvIHBhaW50aW5nSW5mbyh0aGlzLCBlbmNsb3NpbmdJbnRSZWN0KGRhbWFn
ZVJlY3QpLCBwYWludEJlaGF2aW9yLCBzdWJwaXhlbE9mZnNldCwgc3VidHJlZVBhaW50Um9vdCwg
Jm92ZXJsYXBUZXN0UmVxdWVzdHMsIHBhaW50UG9saWN5ID09IFNlY3VyaXR5T3JpZ2luUGFpbnRQ
b2xpY3k6OkFjY2Vzc2libGVPcmlnaW5Pbmx5KTsKLSAgICBpZiAoZXZlbnRSZWdpb25Db250ZXh0
KSB7Ci0gICAgICAgIHBhaW50aW5nSW5mby5ldmVudFJlZ2lvbkNvbnRleHQgPSBldmVudFJlZ2lv
bkNvbnRleHQ7Ci0gICAgICAgIHBhaW50RmxhZ3MuYWRkKFJlbmRlckxheWVyOjpQYWludExheWVy
RmxhZzo6Q29sbGVjdGluZ0V2ZW50UmVnaW9uKTsKKyAgICBpZiAocGFpbnRDb250ZXh0KSB7Cisg
ICAgICAgIHBhaW50aW5nSW5mby5wYWludENvbnRleHQgPSBwYWludENvbnRleHQ7CisgICAgICAg
IGlmIChpczxFdmVudFJlZ2lvbkNvbnRleHQ+KHBhaW50Q29udGV4dCkpCisgICAgICAgICAgICBw
YWludEZsYWdzLmFkZChSZW5kZXJMYXllcjo6UGFpbnRMYXllckZsYWc6OkNvbGxlY3RpbmdFdmVu
dFJlZ2lvbik7CiAgICAgfQogICAgIHBhaW50TGF5ZXIoY29udGV4dCwgcGFpbnRpbmdJbmZvLCBw
YWludEZsYWdzKTsKIApAQCAtMjc4OCw3ICsyNzg5LDcgQEAgdm9pZCBSZW5kZXJMYXllcjo6cGFp
bnQoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBMYXlvdXRSZWN0JiBkYW1hZ2VSZWN0
LAogICAgICAgICB3aWRnZXQtPnNldE92ZXJsYXBUZXN0UmVzdWx0KGZhbHNlKTsKIH0KIAotdm9p
ZCBSZW5kZXJMYXllcjo6Y2xpcFRvUmVjdChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIEdyYXBo
aWNzQ29udGV4dFN0YXRlU2F2ZXImIHN0YXRlU2F2ZXIsIEV2ZW50UmVnaW9uQ29udGV4dFN0YXRl
U2F2ZXImIGV2ZW50UmVnaW9uU3RhdGVTYXZlciwgY29uc3QgTGF5ZXJQYWludGluZ0luZm8mIHBh
aW50aW5nSW5mbywgT3B0aW9uU2V0PFBhaW50QmVoYXZpb3I+IHBhaW50QmVoYXZpb3IsIGNvbnN0
IENsaXBSZWN0JiBjbGlwUmVjdCwgQm9yZGVyUmFkaXVzQ2xpcHBpbmdSdWxlIHJ1bGUpCit2b2lk
IFJlbmRlckxheWVyOjpjbGlwVG9SZWN0KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgR3JhcGhp
Y3NDb250ZXh0U3RhdGVTYXZlciYgc3RhdGVTYXZlciwgUGFpbnRDb250ZXh0U3RhdGVTYXZlciYg
cGFpbnRDb250ZXh0U3RhdGVTYXZlciwgY29uc3QgTGF5ZXJQYWludGluZ0luZm8mIHBhaW50aW5n
SW5mbywgT3B0aW9uU2V0PFBhaW50QmVoYXZpb3I+IHBhaW50QmVoYXZpb3IsIGNvbnN0IENsaXBS
ZWN0JiBjbGlwUmVjdCwgQm9yZGVyUmFkaXVzQ2xpcHBpbmdSdWxlIHJ1bGUpCiB7CiAgICAgZmxv
YXQgZGV2aWNlU2NhbGVGYWN0b3IgPSByZW5kZXJlcigpLmRvY3VtZW50KCkuZGV2aWNlU2NhbGVG
YWN0b3IoKTsKICAgICBib29sIG5lZWRzQ2xpcHBpbmcgPSAhY2xpcFJlY3QuaXNJbmZpbml0ZSgp
ICYmIGNsaXBSZWN0LnJlY3QoKSAhPSBwYWludGluZ0luZm8ucGFpbnREaXJ0eVJlY3Q7CkBAIC0y
ODAwLDcgKzI4MDEsNyBAQCB2b2lkIFJlbmRlckxheWVyOjpjbGlwVG9SZWN0KEdyYXBoaWNzQ29u
dGV4dCYgY29udGV4dCwgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlcgogICAgICAgICBhZGp1c3Rl
ZENsaXBSZWN0Lm1vdmUocGFpbnRpbmdJbmZvLnN1YnBpeGVsT2Zmc2V0KTsKICAgICAgICAgYXV0
byBzbmFwcGVkQ2xpcFJlY3QgPSBzbmFwUmVjdFRvRGV2aWNlUGl4ZWxzSWZOZWVkZWQoYWRqdXN0
ZWRDbGlwUmVjdCwgcmVuZGVyZXIoKSk7CiAgICAgICAgIGNvbnRleHQuY2xpcChzbmFwcGVkQ2xp
cFJlY3QpOwotICAgICAgICBldmVudFJlZ2lvblN0YXRlU2F2ZXIucHVzaENsaXAoZW5jbG9zaW5n
SW50UmVjdChzbmFwcGVkQ2xpcFJlY3QpKTsKKyAgICAgICAgcGFpbnRDb250ZXh0U3RhdGVTYXZl
ci5wdXNoQ2xpcChlbmNsb3NpbmdJbnRSZWN0KHNuYXBwZWRDbGlwUmVjdCkpOwogICAgIH0KIAog
ICAgIGlmIChjbGlwUmVjdC5hZmZlY3RlZEJ5UmFkaXVzKCkpIHsKQEAgLTI5NDQsNyArMjk0NSw3
IEBAIHZvaWQgUmVuZGVyTGF5ZXI6OnBhaW50TGF5ZXJXaXRoRWZmZWN0cyhHcmFwaGljc0NvbnRl
eHQmIGNvbnRleHQsIGNvbnN0IExheWVyUGFpCiAgICAgICAgIC8vIE1ha2Ugc3VyZSB0aGUgcGFy
ZW50J3MgY2xpcCByZWN0cyBoYXZlIGJlZW4gY2FsY3VsYXRlZC4KICAgICAgICAgQ2xpcFJlY3Qg
Y2xpcFJlY3QgPSBwYWludGluZ0luZm8ucGFpbnREaXJ0eVJlY3Q7CiAgICAgICAgIEdyYXBoaWNz
Q29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcihjb250ZXh0LCBmYWxzZSk7Ci0gICAgICAgIEV2
ZW50UmVnaW9uQ29udGV4dFN0YXRlU2F2ZXIgZXZlbnRSZWdpb25TdGF0ZVNhdmVyKHBhaW50aW5n
SW5mby5ldmVudFJlZ2lvbkNvbnRleHQpOworICAgICAgICBQYWludENvbnRleHRTdGF0ZVNhdmVy
IHBhaW50Q29udGV4dFN0YXRlU2F2ZXIocGFpbnRpbmdJbmZvLnBhaW50Q29udGV4dCk7CiAgICAg
ICAgIGlmIChwYXJlbnQoKSkgewogICAgICAgICAgICAgYXV0byBvcHRpb25zID0gcGFpbnRGbGFn
cy5jb250YWlucyhQYWludExheWVyRmxhZzo6UGFpbnRpbmdPdmVyZmxvd0NvbnRlbnRzKSA/IGNs
aXBSZWN0T3B0aW9uc0ZvclBhaW50aW5nT3ZlcmZsb3dDb250cm9scyA6IGNsaXBSZWN0RGVmYXVs
dE9wdGlvbnM7CiAgICAgICAgICAgICBhdXRvIGNsaXBSZWN0c0NvbnRleHQgPSBDbGlwUmVjdHND
b250ZXh0KHBhaW50aW5nSW5mby5yb290TGF5ZXIsIChwYWludEZsYWdzICYgUGFpbnRMYXllckZs
YWc6OlRlbXBvcmFyeUNsaXBSZWN0cykgPyBUZW1wb3JhcnlDbGlwUmVjdHMgOiBQYWludGluZ0Ns
aXBSZWN0cywgb3B0aW9ucyk7CkBAIC0yOTczLDcgKzI5NzQsNyBAQCB2b2lkIFJlbmRlckxheWVy
OjpwYWludExheWVyV2l0aEVmZmVjdHMoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBM
YXllclBhaQogI2VuZGlmCiAKICAgICAgICAgICAgIC8vIFB1c2ggdGhlIHBhcmVudCBjb29yZGlu
YXRlIHNwYWNlJ3MgY2xpcC4KLSAgICAgICAgICAgIHBhcmVudCgpLT5jbGlwVG9SZWN0KGNvbnRl
eHQsIHN0YXRlU2F2ZXIsIGV2ZW50UmVnaW9uU3RhdGVTYXZlciwgcGFpbnRpbmdJbmZvLCBwYWlu
dEJlaGF2aW9yLCBjbGlwUmVjdCk7CisgICAgICAgICAgICBwYXJlbnQoKS0+Y2xpcFRvUmVjdChj
b250ZXh0LCBzdGF0ZVNhdmVyLCBwYWludENvbnRleHRTdGF0ZVNhdmVyLCBwYWludGluZ0luZm8s
IHBhaW50QmVoYXZpb3IsIGNsaXBSZWN0KTsKICAgICAgICAgfQogCiAgICAgICAgIHBhaW50TGF5
ZXJCeUFwcGx5aW5nVHJhbnNmb3JtKGNvbnRleHQsIHBhaW50aW5nSW5mbywgcGFpbnRGbGFncyk7
CkBAIC0zMDQ3LDcgKzMwNDgsNyBAQCBzdGQ6OnBhaXI8UGF0aCwgV2luZFJ1bGU+IFJlbmRlckxh
eWVyOjpjb21wdXRlQ2xpcFBhdGgoY29uc3QgTGF5b3V0U2l6ZSYgb2Zmc2V0RgogICAgIHJldHVy
biB7IFBhdGgoKSwgV2luZFJ1bGU6Ok5vblplcm8gfTsKIH0KIAotdm9pZCBSZW5kZXJMYXllcjo6
c2V0dXBDbGlwUGF0aChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIEdyYXBoaWNzQ29udGV4dFN0
YXRlU2F2ZXImIHN0YXRlU2F2ZXIsIEV2ZW50UmVnaW9uQ29udGV4dFN0YXRlU2F2ZXImIGV2ZW50
UmVnaW9uU3RhdGVTYXZlciwgY29uc3QgTGF5ZXJQYWludGluZ0luZm8mIHBhaW50aW5nSW5mbywg
T3B0aW9uU2V0PFBhaW50TGF5ZXJGbGFnPiBwYWludEZsYWdzLCBjb25zdCBMYXlvdXRTaXplJiBv
ZmZzZXRGcm9tUm9vdCkKK3ZvaWQgUmVuZGVyTGF5ZXI6OnNldHVwQ2xpcFBhdGgoR3JhcGhpY3ND
b250ZXh0JiBjb250ZXh0LCBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyJiBzdGF0ZVNhdmVyLCBQ
YWludENvbnRleHRTdGF0ZVNhdmVyJiBwYWludENvbnRleHRTdGF0ZVNhdmVyLCBjb25zdCBMYXll
clBhaW50aW5nSW5mbyYgcGFpbnRpbmdJbmZvLCBPcHRpb25TZXQ8UGFpbnRMYXllckZsYWc+IHBh
aW50RmxhZ3MsIGNvbnN0IExheW91dFNpemUmIG9mZnNldEZyb21Sb290KQogewogICAgIGJvb2wg
aXNDb2xsZWN0aW5nRXZlbnRSZWdpb24gPSBwYWludEZsYWdzLmNvbnRhaW5zKFBhaW50TGF5ZXJG
bGFnOjpDb2xsZWN0aW5nRXZlbnRSZWdpb24pOwogICAgIGlmICghcmVuZGVyZXIoKS5oYXNDbGlw
UGF0aCgpIHx8IChjb250ZXh0LnBhaW50aW5nRGlzYWJsZWQoKSAmJiAhaXNDb2xsZWN0aW5nRXZl
bnRSZWdpb24pIHx8IHBhaW50aW5nSW5mby5wYWludERpcnR5UmVjdC5pc0VtcHR5KCkpCkBAIC0z
MDY3LDcgKzMwNjgsNyBAQCB2b2lkIFJlbmRlckxheWVyOjpzZXR1cENsaXBQYXRoKEdyYXBoaWNz
Q29udGV4dCYgY29udGV4dCwgR3JhcGhpY3NDb250ZXh0U3RhdGVTYQogICAgICAgICBhdXRvIFtw
YXRoLCB3aW5kUnVsZV0gPSBjb21wdXRlQ2xpcFBhdGgocGFpbnRpbmdPZmZzZXRGcm9tUm9vdCwg
Y2xpcHBlZENvbnRlbnRCb3VuZHMpOwogCiAgICAgICAgIGlmIChpc0NvbGxlY3RpbmdFdmVudFJl
Z2lvbikgewotICAgICAgICAgICAgZXZlbnRSZWdpb25TdGF0ZVNhdmVyLnB1c2hDbGlwKHBhdGgs
IHdpbmRSdWxlKTsKKyAgICAgICAgICAgIHBhaW50Q29udGV4dFN0YXRlU2F2ZXIucHVzaENsaXAo
cGF0aCk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIApAQCAtMzE1MCw5ICszMTUx
LDkgQEAgdm9pZCBSZW5kZXJMYXllcjo6YXBwbHlGaWx0ZXJzKEdyYXBoaWNzQ29udGV4dCYgb3Jp
Z2luYWxDb250ZXh0LCBjb25zdCBMYXllclBhaW4KICAgICBDbGlwUmVjdCBiYWNrZ3JvdW5kUmVj
dCA9IGxheWVyRnJhZ21lbnRzLmlzRW1wdHkoKSA/IENsaXBSZWN0KCkgOiBsYXllckZyYWdtZW50
c1swXS5iYWNrZ3JvdW5kUmVjdDsKIAogICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3Rh
dGVTYXZlcihvcmlnaW5hbENvbnRleHQsIGZhbHNlKTsKLSAgICBFdmVudFJlZ2lvbkNvbnRleHRT
dGF0ZVNhdmVyIGV2ZW50UmVnaW9uU3RhdGVTYXZlcihwYWludGluZ0luZm8uZXZlbnRSZWdpb25D
b250ZXh0KTsKKyAgICBQYWludENvbnRleHRTdGF0ZVNhdmVyIHBhaW50Q29udGV4dFN0YXRlU2F2
ZXIocGFpbnRpbmdJbmZvLnBhaW50Q29udGV4dCk7CiAKLSAgICBjbGlwVG9SZWN0KG9yaWdpbmFs
Q29udGV4dCwgc3RhdGVTYXZlciwgZXZlbnRSZWdpb25TdGF0ZVNhdmVyLCBwYWludGluZ0luZm8s
IGJlaGF2aW9yLCBiYWNrZ3JvdW5kUmVjdCk7CisgICAgY2xpcFRvUmVjdChvcmlnaW5hbENvbnRl
eHQsIHN0YXRlU2F2ZXIsIHBhaW50Q29udGV4dFN0YXRlU2F2ZXIsIHBhaW50aW5nSW5mbywgYmVo
YXZpb3IsIGJhY2tncm91bmRSZWN0KTsKICAgICBtX2ZpbHRlcnMtPmFwcGx5RmlsdGVyRWZmZWN0
KG9yaWdpbmFsQ29udGV4dCk7CiB9CiAKQEAgLTMxNzIsNiArMzE3Myw3IEBAIHZvaWQgUmVuZGVy
TGF5ZXI6OnBhaW50TGF5ZXJDb250ZW50cyhHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0
IExheWVyUGFpbnRpCiAgICAgYm9vbCBpc1BhaW50aW5nQ29tcG9zaXRlZEJhY2tncm91bmQgPSBs
b2NhbFBhaW50RmxhZ3MuY29udGFpbnMoUGFpbnRMYXllckZsYWc6OlBhaW50aW5nQ29tcG9zaXRp
bmdCYWNrZ3JvdW5kUGhhc2UpOwogICAgIGJvb2wgaXNQYWludGluZ092ZXJmbG93Q29udGVudHMg
PSBsb2NhbFBhaW50RmxhZ3MuY29udGFpbnMoUGFpbnRMYXllckZsYWc6OlBhaW50aW5nT3ZlcmZs
b3dDb250ZW50cyk7CiAgICAgYm9vbCBpc0NvbGxlY3RpbmdFdmVudFJlZ2lvbiA9IGxvY2FsUGFp
bnRGbGFncy5jb250YWlucyhQYWludExheWVyRmxhZzo6Q29sbGVjdGluZ0V2ZW50UmVnaW9uKTsK
KyAgICBib29sIGlzQ29sbGVjdGluZ0FjY2Vzc2liaWxpdHlSZWN0cyA9IGNvbnRleHQuaW52YWxp
ZGF0aW5nQWNjZXNzaWJpbGl0eU9iamVjdFJlY3RzKCk7CiAKICAgICBib29sIGlzU2VsZlBhaW50
aW5nTGF5ZXIgPSB0aGlzLT5pc1NlbGZQYWludGluZ0xheWVyKCk7CiAKQEAgLTMxODEsMTEgKzMx
ODMsMTEgQEAgdm9pZCBSZW5kZXJMYXllcjo6cGFpbnRMYXllckNvbnRlbnRzKEdyYXBoaWNzQ29u
dGV4dCYgY29udGV4dCwgY29uc3QgTGF5ZXJQYWludGkKICAgICAvLyBjb250ZW50LiBXaGVuIG5v
dCBjb21wb3NpdGVkIHNjcm9sbGluZywgdGhlIG91dGxpbmUgaXMgcGFpbnRlZCBpbiB0aGUKICAg
ICAvLyBmb3JlZ3JvdW5kIHBoYXNlLiBTaW5jZSBzY3JvbGxlZCBjb250ZW50cyBhcmUgbW92ZWQg
YnkgcmVwYWludGluZyBpbiB0aGlzCiAgICAgLy8gY2FzZSwgdGhlIG91dGxpbmUgd29uJ3QgZ2V0
ICdkcmFnZ2VkIGFsb25nJy4KLSAgICBib29sIHNob3VsZFBhaW50T3V0bGluZSA9IGlzU2VsZlBh
aW50aW5nTGF5ZXIgJiYgIWlzUGFpbnRpbmdPdmVybGF5U2Nyb2xsYmFycyAmJiAhaXNDb2xsZWN0
aW5nRXZlbnRSZWdpb24KKyAgICBib29sIHNob3VsZFBhaW50T3V0bGluZSA9IGlzU2VsZlBhaW50
aW5nTGF5ZXIgJiYgIWlzUGFpbnRpbmdPdmVybGF5U2Nyb2xsYmFycyAmJiAhaXNDb2xsZWN0aW5n
RXZlbnRSZWdpb24gJiYgIWlzQ29sbGVjdGluZ0FjY2Vzc2liaWxpdHlSZWN0cwogICAgICAgICAm
JiAocmVuZGVyZXIoKS52aWV3KCkucHJpbnRpbmcoKSB8fCByZW5kZXJlcigpLnZpZXcoKS5oYXNS
ZW5kZXJlcnNXaXRoT3V0bGluZSgpKQogICAgICAgICAmJiAoKGlzUGFpbnRpbmdTY3JvbGxpbmdD
b250ZW50ICYmIGlzUGFpbnRpbmdDb21wb3NpdGVkQmFja2dyb3VuZCkKICAgICAgICAgfHwgKCFp
c1BhaW50aW5nU2Nyb2xsaW5nQ29udGVudCAmJiBpc1BhaW50aW5nQ29tcG9zaXRlZEZvcmVncm91
bmQpKTsKLSAgICBib29sIHNob3VsZFBhaW50Q29udGVudCA9IG1faGFzVmlzaWJsZUNvbnRlbnQg
JiYgaXNTZWxmUGFpbnRpbmdMYXllciAmJiAhaXNQYWludGluZ092ZXJsYXlTY3JvbGxiYXJzICYm
ICFpc0NvbGxlY3RpbmdFdmVudFJlZ2lvbjsKKyAgICBib29sIHNob3VsZFBhaW50Q29udGVudCA9
IG1faGFzVmlzaWJsZUNvbnRlbnQgJiYgaXNTZWxmUGFpbnRpbmdMYXllciAmJiAhaXNQYWludGlu
Z092ZXJsYXlTY3JvbGxiYXJzICYmICFpc0NvbGxlY3RpbmdFdmVudFJlZ2lvbiAmJiAhaXNDb2xs
ZWN0aW5nQWNjZXNzaWJpbGl0eVJlY3RzOwogCiAgICAgaWYgKGxvY2FsUGFpbnRGbGFncy5jb250
YWlucyhQYWludExheWVyRmxhZzo6UGFpbnRpbmdSb290QmFja2dyb3VuZE9ubHkpICYmICFyZW5k
ZXJlcigpLmlzUmVuZGVyVmlldygpICYmICFyZW5kZXJlcigpLmlzRG9jdW1lbnRFbGVtZW50UmVu
ZGVyZXIoKSkgewogICAgICAgICAvLyBJZiBiZWdpblRyYW5zcGFyZW5jeUxheWVycyB3YXMgY2Fs
bGVkIHByaW9yIHRvIHRoaXMsIGVuc3VyZSB0aGUgdHJhbnNwYXJlbmN5IHN0YXRlIGlzIGNsZWFu
ZWQgdXAgYmVmb3JlIHJldHVybmluZy4KQEAgLTMyMTMsMTAgKzMyMTUsMTAgQEAgdm9pZCBSZW5k
ZXJMYXllcjo6cGFpbnRMYXllckNvbnRlbnRzKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29u
c3QgTGF5ZXJQYWludGkKICAgICAgICAgY29sdW1uQXdhcmVPZmZzZXRGcm9tUm9vdCA9IHRvTGF5
b3V0U2l6ZShjb252ZXJ0VG9MYXllckNvb3JkcyhwYWludGluZ0luZm8ucm9vdExheWVyLCBMYXlv
dXRQb2ludCgpLCBBZGp1c3RGb3JDb2x1bW5zKSk7CiAKICAgICBHcmFwaGljc0NvbnRleHRTdGF0
ZVNhdmVyIHN0YXRlU2F2ZXIoY29udGV4dCwgZmFsc2UpOwotICAgIEV2ZW50UmVnaW9uQ29udGV4
dFN0YXRlU2F2ZXIgZXZlbnRSZWdpb25TdGF0ZVNhdmVyKHBhaW50aW5nSW5mby5ldmVudFJlZ2lv
bkNvbnRleHQpOworICAgIFBhaW50Q29udGV4dFN0YXRlU2F2ZXIgcGFpbnRDb250ZXh0U3RhdGVT
YXZlcihwYWludGluZ0luZm8ucGFpbnRDb250ZXh0KTsKIAogICAgIGlmIChzaG91bGRBcHBseUNs
aXBQYXRoKHBhaW50aW5nSW5mby5wYWludEJlaGF2aW9yLCBsb2NhbFBhaW50RmxhZ3MpKQotICAg
ICAgICBzZXR1cENsaXBQYXRoKGNvbnRleHQsIHN0YXRlU2F2ZXIsIGV2ZW50UmVnaW9uU3RhdGVT
YXZlciwgcGFpbnRpbmdJbmZvLCBsb2NhbFBhaW50RmxhZ3MsIGNvbHVtbkF3YXJlT2Zmc2V0RnJv
bVJvb3QpOworICAgICAgICBzZXR1cENsaXBQYXRoKGNvbnRleHQsIHN0YXRlU2F2ZXIsIHBhaW50
Q29udGV4dFN0YXRlU2F2ZXIsIHBhaW50aW5nSW5mbywgbG9jYWxQYWludEZsYWdzLCBjb2x1bW5B
d2FyZU9mZnNldEZyb21Sb290KTsKIAogICAgIGJvb2wgc2VsZWN0aW9uQW5kQmFja2dyb3VuZHNP
bmx5ID0gcGFpbnRpbmdJbmZvLnBhaW50QmVoYXZpb3IuY29udGFpbnMoUGFpbnRCZWhhdmlvcjo6
U2VsZWN0aW9uQW5kQmFja2dyb3VuZHNPbmx5KTsKICAgICBib29sIHNlbGVjdGlvbk9ubHkgPSBw
YWludGluZ0luZm8ucGFpbnRCZWhhdmlvci5jb250YWlucyhQYWludEJlaGF2aW9yOjpTZWxlY3Rp
b25Pbmx5KTsKQEAgLTMyNzMsNyArMzI3NSw3IEBAIHZvaWQgUmVuZGVyTGF5ZXI6OnBhaW50TGF5
ZXJDb250ZW50cyhHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IExheWVyUGFpbnRpCiAg
ICAgICAgICAgICBwZXJmb3JtT3ZlcmxhcFRlc3RzKCpsb2NhbFBhaW50aW5nSW5mby5vdmVybGFw
VGVzdFJlcXVlc3RzLCBsb2NhbFBhaW50aW5nSW5mby5yb290TGF5ZXIsIHRoaXMpOwogCiAgICAg
ICAgIExheW91dFJlY3QgcGFpbnREaXJ0eVJlY3QgPSBsb2NhbFBhaW50aW5nSW5mby5wYWludERp
cnR5UmVjdDsKLSAgICAgICAgaWYgKHNob3VsZFBhaW50Q29udGVudCB8fCBzaG91bGRQYWludE91
dGxpbmUgfHwgaXNQYWludGluZ092ZXJsYXlTY3JvbGxiYXJzIHx8IGlzQ29sbGVjdGluZ0V2ZW50
UmVnaW9uKSB7CisgICAgICAgIGlmIChzaG91bGRQYWludENvbnRlbnQgfHwgc2hvdWxkUGFpbnRP
dXRsaW5lIHx8IGlzUGFpbnRpbmdPdmVybGF5U2Nyb2xsYmFycyB8fCBpc0NvbGxlY3RpbmdFdmVu
dFJlZ2lvbiB8fCBpc0NvbGxlY3RpbmdBY2Nlc3NpYmlsaXR5UmVjdHMpIHsKICAgICAgICAgICAg
IC8vIENvbGxlY3QgdGhlIGZyYWdtZW50cy4gVGhpcyB3aWxsIGNvbXB1dGUgdGhlIGNsaXAgcmVj
dGFuZ2xlcyBhbmQgcGFpbnQgb2Zmc2V0cyBmb3IgZWFjaCBsYXllciBmcmFnbWVudCwgYXMgd2Vs
bCBhcyB3aGV0aGVyIG9yIG5vdCB0aGUgY29udGVudCBvZiBlYWNoCiAgICAgICAgICAgICAvLyBm
cmFnbWVudCBzaG91bGQgcGFpbnQuIElmIHRoZSBwYXJlbnQncyBmaWx0ZXIgZGljdGF0ZXMgZnVs
bCByZXBhaW50IHRvIGVuc3VyZSBwcm9wZXIgZmlsdGVyIGVmZmVjdCwKICAgICAgICAgICAgIC8v
IHVzZSB0aGUgb3ZlcmZsb3cgY2xpcCBhcyBkaXJ0eSByZWN0LCBpbnN0ZWFkIG9mIG5vIGNsaXBw
aW5nLiBJdCBtYWludGFpbnMgcHJvcGVyIGNsaXBwaW5nIGZvciBvdmVyZmxvdzo6c2Nyb2xsLgpA
QCAtMzMxMSw2ICszMzEzLDkgQEAgdm9pZCBSZW5kZXJMYXllcjo6cGFpbnRMYXllckNvbnRlbnRz
KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgTGF5ZXJQYWludGkKICAgICAgICAgaWYg
KGlzQ29sbGVjdGluZ0V2ZW50UmVnaW9uKQogICAgICAgICAgICAgY29sbGVjdEV2ZW50UmVnaW9u
Rm9yRnJhZ21lbnRzKGxheWVyRnJhZ21lbnRzLCBjdXJyZW50Q29udGV4dCwgbG9jYWxQYWludGlu
Z0luZm8sIHBhaW50QmVoYXZpb3IpOwogCisgICAgICAgIGlmIChpc0NvbGxlY3RpbmdBY2Nlc3Np
YmlsaXR5UmVjdHMpCisgICAgICAgICAgICBjb2xsZWN0QWNjZXNzaWJpbGl0eVJlY3RzRm9yRnJh
Z21lbnRzKGxheWVyRnJhZ21lbnRzLCBjdXJyZW50Q29udGV4dCwgbG9jYWxQYWludGluZ0luZm8s
IHBhaW50QmVoYXZpb3IpOworCiAgICAgICAgIGlmIChzaG91bGRQYWludE91dGxpbmUpCiAgICAg
ICAgICAgICBwYWludE91dGxpbmVGb3JGcmFnbWVudHMobGF5ZXJGcmFnbWVudHMsIGN1cnJlbnRD
b250ZXh0LCBsb2NhbFBhaW50aW5nSW5mbywgcGFpbnRCZWhhdmlvciwgc3VidHJlZVBhaW50Um9v
dEZvclJlbmRlcmVyKTsKIApAQCAtMzM5MSw4ICszMzk2LDggQEAgdm9pZCBSZW5kZXJMYXllcjo6
cGFpbnRMYXllckJ5QXBwbHlpbmdUcmFuc2Zvcm0oR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBj
b25zdAogICAgIGF1dG8gYWZmaW5lVHJhbnNmb3JtID0gdHJhbnNmb3JtLnRvQWZmaW5lVHJhbnNm
b3JtKCk7CiAgICAgY29udGV4dC5jb25jYXRDVE0oYWZmaW5lVHJhbnNmb3JtKTsKIAotICAgIGlm
IChwYWludGluZ0luZm8uZXZlbnRSZWdpb25Db250ZXh0KQotICAgICAgICBwYWludGluZ0luZm8u
ZXZlbnRSZWdpb25Db250ZXh0LT5wdXNoVHJhbnNmb3JtKGFmZmluZVRyYW5zZm9ybSk7CisgICAg
aWYgKHBhaW50aW5nSW5mby5wYWludENvbnRleHQpCisgICAgICAgIHBhaW50aW5nSW5mby5wYWlu
dENvbnRleHQtPnB1c2hUcmFuc2Zvcm0oYWZmaW5lVHJhbnNmb3JtKTsKIAogICAgIC8vIE9ubHkg
cHJvcGFnYXRlIHRoZSBzdWJwaXhlbCBvZmZzZXRzIHRvIHRoZSBkZXNjZW5kYW50IGxheWVycywg
aWYgd2UncmUgbm90IHRoZSByb290CiAgICAgLy8gb2YgYSBTVkcgc3VidHJlZSwgd2hlcmUgbm8g
cGl4ZWwgc25hcHBpbmcgaXMgYXBwbGllZCAtLSBvbmx5IHRoZSBvdXRlcm1vc3QgPHN2Zz4gbGF5
ZXIKQEAgLTM0MDgsOCArMzQxMyw4IEBAIHZvaWQgUmVuZGVyTGF5ZXI6OnBhaW50TGF5ZXJCeUFw
cGx5aW5nVHJhbnNmb3JtKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QKICAgICB0cmFu
c2Zvcm1lZFBhaW50aW5nSW5mby5zdWJwaXhlbE9mZnNldCA9IGFkanVzdGVkU3VicGl4ZWxPZmZz
ZXQ7CiAgICAgcGFpbnRMYXllckNvbnRlbnRzQW5kUmVmbGVjdGlvbihjb250ZXh0LCB0cmFuc2Zv
cm1lZFBhaW50aW5nSW5mbywgcGFpbnRGbGFncyk7CiAKLSAgICBpZiAocGFpbnRpbmdJbmZvLmV2
ZW50UmVnaW9uQ29udGV4dCkKLSAgICAgICAgcGFpbnRpbmdJbmZvLmV2ZW50UmVnaW9uQ29udGV4
dC0+cG9wVHJhbnNmb3JtKCk7CisgICAgaWYgKHBhaW50aW5nSW5mby5wYWludENvbnRleHQpCisg
ICAgICAgIHBhaW50aW5nSW5mby5wYWludENvbnRleHQtPnBvcFRyYW5zZm9ybSgpOwogCiAgICAg
Y29udGV4dC5zZXRDVE0ob2xkVHJhbnNmb3JtKTsKIH0KQEAgLTM2MjYsOSArMzYzMSw5IEBAIHZv
aWQgUmVuZGVyTGF5ZXI6OnBhaW50VHJhbnNmb3JtZWRMYXllckludG9GcmFnbWVudHMoR3JhcGhp
Y3NDb250ZXh0JiBjb250ZXh0LCBjCiAgICAgICAgICAgICBwYWludEJlaGF2aW9yLmFkZChQYWlu
dEJlaGF2aW9yOjpDb21wb3NpdGVkT3ZlcmZsb3dTY3JvbGxDb250ZW50KTsKIAogICAgICAgICBH
cmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoY29udGV4dCwgZmFsc2UpOwotICAg
ICAgICBFdmVudFJlZ2lvbkNvbnRleHRTdGF0ZVNhdmVyIGV2ZW50UmVnaW9uU3RhdGVTYXZlcihw
YWludGluZ0luZm8uZXZlbnRSZWdpb25Db250ZXh0KTsKKyAgICAgICAgUGFpbnRDb250ZXh0U3Rh
dGVTYXZlciBwYWludENvbnRleHRTdGF0ZVNhdmVyKHBhaW50aW5nSW5mby5wYWludENvbnRleHQp
OwogCi0gICAgICAgIHBhcmVudCgpLT5jbGlwVG9SZWN0KGNvbnRleHQsIHN0YXRlU2F2ZXIsIGV2
ZW50UmVnaW9uU3RhdGVTYXZlciwgcGFpbnRpbmdJbmZvLCBwYWludEJlaGF2aW9yLCBjbGlwUmVj
dCk7CisgICAgICAgIHBhcmVudCgpLT5jbGlwVG9SZWN0KGNvbnRleHQsIHN0YXRlU2F2ZXIsIHBh
aW50Q29udGV4dFN0YXRlU2F2ZXIsIHBhaW50aW5nSW5mbywgcGFpbnRCZWhhdmlvciwgY2xpcFJl
Y3QpOwogICAgICAgICBwYWludExheWVyQnlBcHBseWluZ1RyYW5zZm9ybShjb250ZXh0LCBwYWlu
dGluZ0luZm8sIHBhaW50RmxhZ3MsIGZyYWdtZW50LnBhZ2luYXRpb25PZmZzZXQpOwogICAgIH0K
IH0KQEAgLTM2NDYsMTIgKzM2NTEsMTIgQEAgdm9pZCBSZW5kZXJMYXllcjo6cGFpbnRCYWNrZ3Jv
dW5kRm9yRnJhZ21lbnRzKGNvbnN0IExheWVyRnJhZ21lbnRzJiBsYXllckZyYWdtZW4KICAgICAg
ICAgICAgIGJlZ2luVHJhbnNwYXJlbmN5TGF5ZXJzKGNvbnRleHRGb3JUcmFuc3BhcmVuY3lMYXll
ciwgbG9jYWxQYWludGluZ0luZm8sIHRyYW5zcGFyZW5jeVBhaW50RGlydHlSZWN0KTsKICAgICAK
ICAgICAgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKGNvbnRleHQsIGZh
bHNlKTsKLSAgICAgICAgRXZlbnRSZWdpb25Db250ZXh0U3RhdGVTYXZlciBldmVudFJlZ2lvblN0
YXRlU2F2ZXIobG9jYWxQYWludGluZ0luZm8uZXZlbnRSZWdpb25Db250ZXh0KTsKKyAgICAgICAg
UGFpbnRDb250ZXh0U3RhdGVTYXZlciBwYWludENvbnRleHRTdGF0ZVNhdmVyKGxvY2FsUGFpbnRp
bmdJbmZvLnBhaW50Q29udGV4dCk7CiAKICAgICAgICAgaWYgKGxvY2FsUGFpbnRpbmdJbmZvLmNs
aXBUb0RpcnR5UmVjdCkgewogICAgICAgICAgICAgLy8gUGFpbnQgb3VyIGJhY2tncm91bmQgZmly
c3QsIGJlZm9yZSBwYWludGluZyBhbnkgY2hpbGQgbGF5ZXJzLgogICAgICAgICAgICAgLy8gRXN0
YWJsaXNoIHRoZSBjbGlwIHVzZWQgdG8gcGFpbnQgb3VyIGJhY2tncm91bmQuCi0gICAgICAgICAg
ICBjbGlwVG9SZWN0KGNvbnRleHQsIHN0YXRlU2F2ZXIsIGV2ZW50UmVnaW9uU3RhdGVTYXZlciwg
bG9jYWxQYWludGluZ0luZm8sIHBhaW50QmVoYXZpb3IsIGZyYWdtZW50LmJhY2tncm91bmRSZWN0
LCBEb05vdEluY2x1ZGVTZWxmRm9yQm9yZGVyUmFkaXVzKTsgLy8gQmFja2dyb3VuZCBwYWludGlu
ZyB3aWxsIGhhbmRsZSBjbGlwcGluZyB0byBzZWxmLgorICAgICAgICAgICAgY2xpcFRvUmVjdChj
b250ZXh0LCBzdGF0ZVNhdmVyLCBwYWludENvbnRleHRTdGF0ZVNhdmVyLCBsb2NhbFBhaW50aW5n
SW5mbywgcGFpbnRCZWhhdmlvciwgZnJhZ21lbnQuYmFja2dyb3VuZFJlY3QsIERvTm90SW5jbHVk
ZVNlbGZGb3JCb3JkZXJSYWRpdXMpOyAvLyBCYWNrZ3JvdW5kIHBhaW50aW5nIHdpbGwgaGFuZGxl
IGNsaXBwaW5nIHRvIHNlbGYuCiAgICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIC8vIFBhaW50
IHRoZSBiYWNrZ3JvdW5kLgpAQCAtMzY5NywxMiArMzcwMiwxMiBAQCB2b2lkIFJlbmRlckxheWVy
OjpwYWludEZvcmVncm91bmRGb3JGcmFnbWVudHMoY29uc3QgTGF5ZXJGcmFnbWVudHMmIGxheWVy
RnJhZ21lbgogICAgICAgICBsb2NhbFBhaW50QmVoYXZpb3IuYWRkKFBhaW50QmVoYXZpb3I6OkNv
bXBvc2l0ZWRPdmVyZmxvd1Njcm9sbENvbnRlbnQpOwogCiAgICAgR3JhcGhpY3NDb250ZXh0U3Rh
dGVTYXZlciBzdGF0ZVNhdmVyKGNvbnRleHQsIGZhbHNlKTsKLSAgICBFdmVudFJlZ2lvbkNvbnRl
eHRTdGF0ZVNhdmVyIGV2ZW50UmVnaW9uU3RhdGVTYXZlcihsb2NhbFBhaW50aW5nSW5mby5ldmVu
dFJlZ2lvbkNvbnRleHQpOworICAgIFBhaW50Q29udGV4dFN0YXRlU2F2ZXIgcGFpbnRDb250ZXh0
U3RhdGVTYXZlcihsb2NhbFBhaW50aW5nSW5mby5wYWludENvbnRleHQpOwogCiAgICAgLy8gT3B0
aW1pemUgY2xpcHBpbmcgZm9yIHRoZSBzaW5nbGUgZnJhZ21lbnQgY2FzZS4KICAgICBib29sIHNo
b3VsZENsaXAgPSBsb2NhbFBhaW50aW5nSW5mby5jbGlwVG9EaXJ0eVJlY3QgJiYgbGF5ZXJGcmFn
bWVudHMuc2l6ZSgpID09IDEgJiYgbGF5ZXJGcmFnbWVudHNbMF0uc2hvdWxkUGFpbnRDb250ZW50
ICYmICFsYXllckZyYWdtZW50c1swXS5mb3JlZ3JvdW5kUmVjdC5pc0VtcHR5KCk7CiAgICAgaWYg
KHNob3VsZENsaXApCi0gICAgICAgIGNsaXBUb1JlY3QoY29udGV4dCwgc3RhdGVTYXZlciwgZXZl
bnRSZWdpb25TdGF0ZVNhdmVyLCBsb2NhbFBhaW50aW5nSW5mbywgbG9jYWxQYWludEJlaGF2aW9y
LCBsYXllckZyYWdtZW50c1swXS5mb3JlZ3JvdW5kUmVjdCk7CisgICAgICAgIGNsaXBUb1JlY3Qo
Y29udGV4dCwgc3RhdGVTYXZlciwgcGFpbnRDb250ZXh0U3RhdGVTYXZlciwgbG9jYWxQYWludGlu
Z0luZm8sIGxvY2FsUGFpbnRCZWhhdmlvciwgbGF5ZXJGcmFnbWVudHNbMF0uZm9yZWdyb3VuZFJl
Y3QpOwogICAgIAogICAgIC8vIFdlIGhhdmUgdG8gbG9vcCB0aHJvdWdoIGV2ZXJ5IGZyYWdtZW50
IG11bHRpcGxlIHRpbWVzLCBzaW5jZSB3ZSBoYXZlIHRvIHJlcGFpbnQgaW4gZWFjaCBzcGVjaWZp
YyBwaGFzZSBpbiBvcmRlciBmb3IKICAgICAvLyBpbnRlcmxlYXZpbmcgb2YgdGhlIGZyYWdtZW50
cyB0byB3b3JrIHByb3Blcmx5LgpAQCAtMzc0NCwxMCArMzc0OSwxMCBAQCB2b2lkIFJlbmRlckxh
eWVyOjpwYWludEZvcmVncm91bmRGb3JGcmFnbWVudHNXaXRoUGhhc2UoUGFpbnRQaGFzZSBwaGFz
ZSwgY29uc3QgTAogICAgICAgICAgICAgY29udGludWU7CiAKICAgICAgICAgR3JhcGhpY3NDb250
ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKGNvbnRleHQsIGZhbHNlKTsKLSAgICAgICAgRXZlbnRS
ZWdpb25Db250ZXh0U3RhdGVTYXZlciBldmVudFJlZ2lvblN0YXRlU2F2ZXIobG9jYWxQYWludGlu
Z0luZm8uZXZlbnRSZWdpb25Db250ZXh0KTsKKyAgICAgICAgUGFpbnRDb250ZXh0U3RhdGVTYXZl
ciBwYWludENvbnRleHRTdGF0ZVNhdmVyKGxvY2FsUGFpbnRpbmdJbmZvLnBhaW50Q29udGV4dCk7
CiAKICAgICAgICAgaWYgKHNob3VsZENsaXApCi0gICAgICAgICAgICBjbGlwVG9SZWN0KGNvbnRl
eHQsIHN0YXRlU2F2ZXIsIGV2ZW50UmVnaW9uU3RhdGVTYXZlciwgbG9jYWxQYWludGluZ0luZm8s
IHBhaW50QmVoYXZpb3IsIGZyYWdtZW50LmZvcmVncm91bmRSZWN0KTsKKyAgICAgICAgICAgIGNs
aXBUb1JlY3QoY29udGV4dCwgc3RhdGVTYXZlciwgcGFpbnRDb250ZXh0U3RhdGVTYXZlciwgbG9j
YWxQYWludGluZ0luZm8sIHBhaW50QmVoYXZpb3IsIGZyYWdtZW50LmZvcmVncm91bmRSZWN0KTsK
ICAgICAKICAgICAgICAgUGFpbnRJbmZvIHBhaW50SW5mbyhjb250ZXh0LCBmcmFnbWVudC5mb3Jl
Z3JvdW5kUmVjdC5yZWN0KCksIHBoYXNlLCBwYWludEJlaGF2aW9yLCBzdWJ0cmVlUGFpbnRSb290
Rm9yUmVuZGVyZXIsIG51bGxwdHIsIG51bGxwdHIsICZsb2NhbFBhaW50aW5nSW5mby5yb290TGF5
ZXItPnJlbmRlcmVyKCksIHRoaXMsIGxvY2FsUGFpbnRpbmdJbmZvLnJlcXVpcmVTZWN1cml0eU9y
aWdpbkFjY2Vzc0ZvcldpZGdldHMpOwogICAgICAgICBpZiAocGhhc2UgPT0gUGFpbnRQaGFzZTo6
Rm9yZWdyb3VuZCkKQEAgLTM3NjcsOSArMzc3Miw5IEBAIHZvaWQgUmVuZGVyTGF5ZXI6OnBhaW50
T3V0bGluZUZvckZyYWdtZW50cyhjb25zdCBMYXllckZyYWdtZW50cyYgbGF5ZXJGcmFnbWVudHMs
CiAgICAgICAgIFBhaW50SW5mbyBwYWludEluZm8oY29udGV4dCwgZnJhZ21lbnQuYmFja2dyb3Vu
ZFJlY3QucmVjdCgpLCBQYWludFBoYXNlOjpTZWxmT3V0bGluZSwgcGFpbnRCZWhhdmlvciwgc3Vi
dHJlZVBhaW50Um9vdEZvclJlbmRlcmVyLCBudWxscHRyLCBudWxscHRyLCAmbG9jYWxQYWludGlu
Z0luZm8ucm9vdExheWVyLT5yZW5kZXJlcigpLCB0aGlzKTsKIAogICAgICAgICBHcmFwaGljc0Nv
bnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoY29udGV4dCwgZmFsc2UpOwotICAgICAgICBFdmVu
dFJlZ2lvbkNvbnRleHRTdGF0ZVNhdmVyIGV2ZW50UmVnaW9uU3RhdGVTYXZlcihsb2NhbFBhaW50
aW5nSW5mby5ldmVudFJlZ2lvbkNvbnRleHQpOworICAgICAgICBQYWludENvbnRleHRTdGF0ZVNh
dmVyIHBhaW50Q29udGV4dFN0YXRlU2F2ZXIobG9jYWxQYWludGluZ0luZm8ucGFpbnRDb250ZXh0
KTsKIAotICAgICAgICBjbGlwVG9SZWN0KGNvbnRleHQsIHN0YXRlU2F2ZXIsIGV2ZW50UmVnaW9u
U3RhdGVTYXZlciwgbG9jYWxQYWludGluZ0luZm8sIHBhaW50QmVoYXZpb3IsIGZyYWdtZW50LmJh
Y2tncm91bmRSZWN0LCBEb05vdEluY2x1ZGVTZWxmRm9yQm9yZGVyUmFkaXVzKTsKKyAgICAgICAg
Y2xpcFRvUmVjdChjb250ZXh0LCBzdGF0ZVNhdmVyLCBwYWludENvbnRleHRTdGF0ZVNhdmVyLCBs
b2NhbFBhaW50aW5nSW5mbywgcGFpbnRCZWhhdmlvciwgZnJhZ21lbnQuYmFja2dyb3VuZFJlY3Qs
IERvTm90SW5jbHVkZVNlbGZGb3JCb3JkZXJSYWRpdXMpOwogICAgICAgICByZW5kZXJlcigpLnBh
aW50KHBhaW50SW5mbywgcGFpbnRPZmZzZXRGb3JSZW5kZXJlcihmcmFnbWVudCwgbG9jYWxQYWlu
dGluZ0luZm8pKTsKICAgICB9CiB9CkBAIC0zNzgyLDEwICszNzg3LDEwIEBAIHZvaWQgUmVuZGVy
TGF5ZXI6OnBhaW50TWFza0ZvckZyYWdtZW50cyhjb25zdCBMYXllckZyYWdtZW50cyYgbGF5ZXJG
cmFnbWVudHMsIEdyCiAgICAgICAgICAgICBjb250aW51ZTsKIAogICAgICAgICBHcmFwaGljc0Nv
bnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoY29udGV4dCwgZmFsc2UpOwotICAgICAgICBFdmVu
dFJlZ2lvbkNvbnRleHRTdGF0ZVNhdmVyIGV2ZW50UmVnaW9uU3RhdGVTYXZlcihsb2NhbFBhaW50
aW5nSW5mby5ldmVudFJlZ2lvbkNvbnRleHQpOworICAgICAgICBQYWludENvbnRleHRTdGF0ZVNh
dmVyIHBhaW50Q29udGV4dFN0YXRlU2F2ZXIobG9jYWxQYWludGluZ0luZm8ucGFpbnRDb250ZXh0
KTsKIAogICAgICAgICBpZiAobG9jYWxQYWludGluZ0luZm8uY2xpcFRvRGlydHlSZWN0KQotICAg
ICAgICAgICAgY2xpcFRvUmVjdChjb250ZXh0LCBzdGF0ZVNhdmVyLCBldmVudFJlZ2lvblN0YXRl
U2F2ZXIsIGxvY2FsUGFpbnRpbmdJbmZvLCBwYWludEJlaGF2aW9yLCBmcmFnbWVudC5iYWNrZ3Jv
dW5kUmVjdCwgRG9Ob3RJbmNsdWRlU2VsZkZvckJvcmRlclJhZGl1cyk7IC8vIE1hc2sgcGFpbnRp
bmcgd2lsbCBoYW5kbGUgY2xpcHBpbmcgdG8gc2VsZi4KKyAgICAgICAgICAgIGNsaXBUb1JlY3Qo
Y29udGV4dCwgc3RhdGVTYXZlciwgcGFpbnRDb250ZXh0U3RhdGVTYXZlciwgbG9jYWxQYWludGlu
Z0luZm8sIHBhaW50QmVoYXZpb3IsIGZyYWdtZW50LmJhY2tncm91bmRSZWN0LCBEb05vdEluY2x1
ZGVTZWxmRm9yQm9yZGVyUmFkaXVzKTsgLy8gTWFzayBwYWludGluZyB3aWxsIGhhbmRsZSBjbGlw
cGluZyB0byBzZWxmLgogICAgICAgICAKICAgICAgICAgLy8gUGFpbnQgdGhlIG1hc2suCiAgICAg
ICAgIC8vIEZJWE1FOiBFdmVudHVhbGx5IHdlIHdpbGwgY29sbGVjdCB0aGUgcmVnaW9uIGZyb20g
dGhlIGZyYWdtZW50IGl0c2VsZiBpbnN0ZWFkIG9mIGp1c3QgZnJvbSB0aGUgcGFpbnQgaW5mby4K
QEAgLTM4MDEsMTAgKzM4MDYsMTAgQEAgdm9pZCBSZW5kZXJMYXllcjo6cGFpbnRDaGlsZENsaXBw
aW5nTWFza0ZvckZyYWdtZW50cyhjb25zdCBMYXllckZyYWdtZW50cyYgbGF5ZXIKICAgICAgICAg
ICAgIGNvbnRpbnVlOwogCiAgICAgICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVT
YXZlcihjb250ZXh0LCBmYWxzZSk7Ci0gICAgICAgIEV2ZW50UmVnaW9uQ29udGV4dFN0YXRlU2F2
ZXIgZXZlbnRSZWdpb25TdGF0ZVNhdmVyKGxvY2FsUGFpbnRpbmdJbmZvLmV2ZW50UmVnaW9uQ29u
dGV4dCk7CisgICAgICAgIFBhaW50Q29udGV4dFN0YXRlU2F2ZXIgcGFpbnRDb250ZXh0U3RhdGVT
YXZlcihsb2NhbFBhaW50aW5nSW5mby5wYWludENvbnRleHQpOwogCiAgICAgICAgIGlmIChsb2Nh
bFBhaW50aW5nSW5mby5jbGlwVG9EaXJ0eVJlY3QpCi0gICAgICAgICAgICBjbGlwVG9SZWN0KGNv
bnRleHQsIHN0YXRlU2F2ZXIsIGV2ZW50UmVnaW9uU3RhdGVTYXZlciwgbG9jYWxQYWludGluZ0lu
Zm8sIHBhaW50QmVoYXZpb3IsIGZyYWdtZW50LmZvcmVncm91bmRSZWN0LCBJbmNsdWRlU2VsZkZv
ckJvcmRlclJhZGl1cyk7IC8vIENoaWxkIGNsaXBwaW5nIG1hc2sgcGFpbnRpbmcgd2lsbCBoYW5k
bGUgY2xpcHBpbmcgdG8gc2VsZi4KKyAgICAgICAgICAgIGNsaXBUb1JlY3QoY29udGV4dCwgc3Rh
dGVTYXZlciwgcGFpbnRDb250ZXh0U3RhdGVTYXZlciwgbG9jYWxQYWludGluZ0luZm8sIHBhaW50
QmVoYXZpb3IsIGZyYWdtZW50LmZvcmVncm91bmRSZWN0LCBJbmNsdWRlU2VsZkZvckJvcmRlclJh
ZGl1cyk7IC8vIENoaWxkIGNsaXBwaW5nIG1hc2sgcGFpbnRpbmcgd2lsbCBoYW5kbGUgY2xpcHBp
bmcgdG8gc2VsZi4KIAogICAgICAgICAvLyBQYWludCB0aGUgY2xpcHBlZCBtYXNrLgogICAgICAg
ICBQYWludEluZm8gcGFpbnRJbmZvKGNvbnRleHQsIGZyYWdtZW50LmJhY2tncm91bmRSZWN0LnJl
Y3QoKSwgUGFpbnRQaGFzZTo6Q2xpcHBpbmdNYXNrLCBwYWludEJlaGF2aW9yLCBzdWJ0cmVlUGFp
bnRSb290Rm9yUmVuZGVyZXIsIG51bGxwdHIsIG51bGxwdHIsICZsb2NhbFBhaW50aW5nSW5mby5y
b290TGF5ZXItPnJlbmRlcmVyKCksIHRoaXMpOwpAQCAtMzgyMSwyNSArMzgyNiwzNiBAQCB2b2lk
IFJlbmRlckxheWVyOjpwYWludE92ZXJmbG93Q29udHJvbHNGb3JGcmFnbWVudHMoY29uc3QgTGF5
ZXJGcmFnbWVudHMmIGxheWVyRgogICAgICAgICAgICAgY29udGludWU7CiAKICAgICAgICAgR3Jh
cGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKGNvbnRleHQsIGZhbHNlKTsKLSAgICAg
ICAgRXZlbnRSZWdpb25Db250ZXh0U3RhdGVTYXZlciBldmVudFJlZ2lvblN0YXRlU2F2ZXIobG9j
YWxQYWludGluZ0luZm8uZXZlbnRSZWdpb25Db250ZXh0KTsKKyAgICAgICAgUGFpbnRDb250ZXh0
U3RhdGVTYXZlciBwYWludENvbnRleHRTdGF0ZVNhdmVyKGxvY2FsUGFpbnRpbmdJbmZvLnBhaW50
Q29udGV4dCk7CiAKLSAgICAgICAgY2xpcFRvUmVjdChjb250ZXh0LCBzdGF0ZVNhdmVyLCBldmVu
dFJlZ2lvblN0YXRlU2F2ZXIsIGxvY2FsUGFpbnRpbmdJbmZvLCB7IH0sIGZyYWdtZW50LmJhY2tn
cm91bmRSZWN0KTsKKyAgICAgICAgY2xpcFRvUmVjdChjb250ZXh0LCBzdGF0ZVNhdmVyLCBwYWlu
dENvbnRleHRTdGF0ZVNhdmVyLCBsb2NhbFBhaW50aW5nSW5mbywgeyB9LCBmcmFnbWVudC5iYWNr
Z3JvdW5kUmVjdCk7CiAgICAgICAgIG1fc2Nyb2xsYWJsZUFyZWEtPnBhaW50T3ZlcmZsb3dDb250
cm9scyhjb250ZXh0LCByb3VuZGVkSW50UG9pbnQocGFpbnRPZmZzZXRGb3JSZW5kZXJlcihmcmFn
bWVudCwgbG9jYWxQYWludGluZ0luZm8pKSwgc25hcHBlZEludFJlY3QoZnJhZ21lbnQuYmFja2dy
b3VuZFJlY3QucmVjdCgpKSwgdHJ1ZSk7CiAgICAgfQogfQogCiB2b2lkIFJlbmRlckxheWVyOjpj
b2xsZWN0RXZlbnRSZWdpb25Gb3JGcmFnbWVudHMoY29uc3QgTGF5ZXJGcmFnbWVudHMmIGxheWVy
RnJhZ21lbnRzLCBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IExheWVyUGFpbnRpbmdJ
bmZvJiBsb2NhbFBhaW50aW5nSW5mbywgT3B0aW9uU2V0PFBhaW50QmVoYXZpb3I+IHBhaW50QmVo
YXZpb3IpCiB7Ci0gICAgQVNTRVJUKGxvY2FsUGFpbnRpbmdJbmZvLmV2ZW50UmVnaW9uQ29udGV4
dCk7CisgICAgQVNTRVJUKGlzPEV2ZW50UmVnaW9uQ29udGV4dD4obG9jYWxQYWludGluZ0luZm8u
cGFpbnRDb250ZXh0KSk7CiAgICAgZm9yIChjb25zdCBhdXRvJiBmcmFnbWVudCA6IGxheWVyRnJh
Z21lbnRzKSB7CiAgICAgICAgIFBhaW50SW5mbyBwYWludEluZm8oY29udGV4dCwgZnJhZ21lbnQu
Zm9yZWdyb3VuZFJlY3QucmVjdCgpLCBQYWludFBoYXNlOjpFdmVudFJlZ2lvbiwgcGFpbnRCZWhh
dmlvcik7Ci0gICAgICAgIHBhaW50SW5mby5ldmVudFJlZ2lvbkNvbnRleHQgPSBsb2NhbFBhaW50
aW5nSW5mby5ldmVudFJlZ2lvbkNvbnRleHQ7CisgICAgICAgIHBhaW50SW5mby5wYWludENvbnRl
eHQgPSBsb2NhbFBhaW50aW5nSW5mby5wYWludENvbnRleHQ7CiAgICAgICAgIGlmIChsb2NhbFBh
aW50aW5nSW5mby5jbGlwVG9EaXJ0eVJlY3QpIC8vIGNsaXAtcGF0aD8KLSAgICAgICAgICAgIHBh
aW50SW5mby5ldmVudFJlZ2lvbkNvbnRleHQtPnB1c2hDbGlwKGVuY2xvc2luZ0ludFJlY3QoZnJh
Z21lbnQuYmFja2dyb3VuZFJlY3QucmVjdCgpKSk7CisgICAgICAgICAgICBwYWludEluZm8ucGFp
bnRDb250ZXh0LT5wdXNoQ2xpcChlbmNsb3NpbmdJbnRSZWN0KGZyYWdtZW50LmJhY2tncm91bmRS
ZWN0LnJlY3QoKSkpOwogCiAgICAgICAgIHJlbmRlcmVyKCkucGFpbnQocGFpbnRJbmZvLCBwYWlu
dE9mZnNldEZvclJlbmRlcmVyKGZyYWdtZW50LCBsb2NhbFBhaW50aW5nSW5mbykpOwogICAgICAg
ICBpZiAobG9jYWxQYWludGluZ0luZm8uY2xpcFRvRGlydHlSZWN0KQotICAgICAgICAgICAgcGFp
bnRJbmZvLmV2ZW50UmVnaW9uQ29udGV4dC0+cG9wQ2xpcCgpOworICAgICAgICAgICAgcGFpbnRJ
bmZvLnBhaW50Q29udGV4dC0+cG9wQ2xpcCgpOworICAgIH0KK30KKwordm9pZCBSZW5kZXJMYXll
cjo6Y29sbGVjdEFjY2Vzc2liaWxpdHlSZWN0c0ZvckZyYWdtZW50cyhjb25zdCBMYXllckZyYWdt
ZW50cyYgbGF5ZXJGcmFnbWVudHMsIEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgTGF5
ZXJQYWludGluZ0luZm8mIGxvY2FsUGFpbnRpbmdJbmZvLCBPcHRpb25TZXQ8UGFpbnRCZWhhdmlv
cj4gcGFpbnRCZWhhdmlvcikKK3sKKyAgICBBU1NFUlQoY29udGV4dC5pbnZhbGlkYXRpbmdBY2Nl
c3NpYmlsaXR5T2JqZWN0UmVjdHMoKSk7CisgICAgZm9yIChjb25zdCBhdXRvJiBmcmFnbWVudCA6
IGxheWVyRnJhZ21lbnRzKSB7CisgICAgICAgIFBhaW50SW5mbyBwYWludEluZm8oY29udGV4dCwg
ZnJhZ21lbnQuZm9yZWdyb3VuZFJlY3QucmVjdCgpLCBQYWludFBoYXNlOjpBY2Nlc3NpYmlsaXR5
LCBwYWludEJlaGF2aW9yKTsKKyAgICAgICAgcGFpbnRJbmZvLnBhaW50Q29udGV4dCA9IGxvY2Fs
UGFpbnRpbmdJbmZvLnBhaW50Q29udGV4dDsKKworICAgICAgICByZW5kZXJlcigpLnBhaW50KHBh
aW50SW5mbywgcGFpbnRPZmZzZXRGb3JSZW5kZXJlcihmcmFnbWVudCwgbG9jYWxQYWludGluZ0lu
Zm8pKTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJMYXllci5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmgKaW5k
ZXggMWE4NGU0OWE0MDBiLi44M2QyNTczYzZmMmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJMYXllci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJMYXllci5oCkBAIC02NywxMCArNjcsMTAgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xh
c3MgQ1NTRmlsdGVyOwogY2xhc3MgQ2xpcFJlY3RzOwogY2xhc3MgQ2xpcFJlY3RzQ2FjaGU7Ci1j
bGFzcyBFdmVudFJlZ2lvbkNvbnRleHQ7CiBjbGFzcyBIaXRUZXN0UmVxdWVzdDsKIGNsYXNzIEhp
dFRlc3RSZXN1bHQ7CiBjbGFzcyBIaXRUZXN0aW5nVHJhbnNmb3JtU3RhdGU7CitjbGFzcyBQYWlu
dENvbnRleHQ7CiBjbGFzcyBSZWdpb247CiBjbGFzcyBSZW5kZXJGcmFnbWVudGVkRmxvdzsKIGNs
YXNzIFJlbmRlckdlb21ldHJ5TWFwOwpAQCAtNjM5LDcgKzYzOSw3IEBAIHB1YmxpYzoKICAgICAv
LyBmcm9udC4gIFRoZSBoaXRUZXN0IG1ldGhvZCBsb29rcyBmb3IgbW91c2UgZXZlbnRzIGJ5IHdh
bGtpbmcKICAgICAvLyBsYXllcnMgdGhhdCBpbnRlcnNlY3QgdGhlIHBvaW50IGZyb20gZnJvbnQg
dG8gYmFjay4KICAgICB2b2lkIHBhaW50KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IExheW91dFJl
Y3QmIGRhbWFnZVJlY3QsIGNvbnN0IExheW91dFNpemUmIHN1YnBpeGVsT2Zmc2V0ID0gTGF5b3V0
U2l6ZSgpLCBPcHRpb25TZXQ8UGFpbnRCZWhhdmlvcj4gPSBQYWludEJlaGF2aW9yOjpOb3JtYWws
Ci0gICAgICAgIFJlbmRlck9iamVjdCogc3VidHJlZVBhaW50Um9vdCA9IG51bGxwdHIsIE9wdGlv
blNldDxQYWludExheWVyRmxhZz4gPSB7IH0sIFNlY3VyaXR5T3JpZ2luUGFpbnRQb2xpY3kgPSBT
ZWN1cml0eU9yaWdpblBhaW50UG9saWN5OjpBbnlPcmlnaW4sIEV2ZW50UmVnaW9uQ29udGV4dCog
PSBudWxscHRyKTsKKyAgICAgICAgUmVuZGVyT2JqZWN0KiBzdWJ0cmVlUGFpbnRSb290ID0gbnVs
bHB0ciwgT3B0aW9uU2V0PFBhaW50TGF5ZXJGbGFnPiA9IHsgfSwgU2VjdXJpdHlPcmlnaW5QYWlu
dFBvbGljeSA9IFNlY3VyaXR5T3JpZ2luUGFpbnRQb2xpY3k6OkFueU9yaWdpbiwgUGFpbnRDb250
ZXh0KiA9IG51bGxwdHIpOwogICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgaGl0VGVzdChjb25zdCBI
aXRUZXN0UmVxdWVzdCYsIEhpdFRlc3RSZXN1bHQmKTsKICAgICBib29sIGhpdFRlc3QoY29uc3Qg
SGl0VGVzdFJlcXVlc3QmLCBjb25zdCBIaXRUZXN0TG9jYXRpb24mLCBIaXRUZXN0UmVzdWx0Jik7
CiAKQEAgLTkzMyw3ICs5MzMsNyBAQCBwcml2YXRlOgogICAgICAgICBPcHRpb25TZXQ8UGFpbnRC
ZWhhdmlvcj4gcGFpbnRCZWhhdmlvcjsKICAgICAgICAgYm9vbCByZXF1aXJlU2VjdXJpdHlPcmln
aW5BY2Nlc3NGb3JXaWRnZXRzOwogICAgICAgICBib29sIGNsaXBUb0RpcnR5UmVjdCB7IHRydWUg
fTsKLSAgICAgICAgRXZlbnRSZWdpb25Db250ZXh0KiBldmVudFJlZ2lvbkNvbnRleHQgeyBudWxs
cHRyIH07CisgICAgICAgIFBhaW50Q29udGV4dCogcGFpbnRDb250ZXh0IHsgbnVsbHB0ciB9Owog
ICAgIH07CiAKICAgICBMYXlvdXRQb2ludCBwYWludE9mZnNldEZvclJlbmRlcmVyKGNvbnN0IExh
eWVyRnJhZ21lbnQmIGZyYWdtZW50LCBjb25zdCBMYXllclBhaW50aW5nSW5mbyYgcGFpbnRpbmdJ
bmZvKSBjb25zdApAQCAtOTU5LDcgKzk1OSw3IEBAIHByaXZhdGU6CiAKICAgICBMYXlvdXRSZWN0
IGNsaXBSZWN0UmVsYXRpdmVUb0FuY2VzdG9yKFJlbmRlckxheWVyKiBhbmNlc3RvciwgTGF5b3V0
U2l6ZSBvZmZzZXRGcm9tQW5jZXN0b3IsIGNvbnN0IExheW91dFJlY3QmIGNvbnN0cmFpbmluZ1Jl
Y3QpIGNvbnN0OwogCi0gICAgdm9pZCBjbGlwVG9SZWN0KEdyYXBoaWNzQ29udGV4dCYsIEdyYXBo
aWNzQ29udGV4dFN0YXRlU2F2ZXImLCBFdmVudFJlZ2lvbkNvbnRleHRTdGF0ZVNhdmVyJiwgY29u
c3QgTGF5ZXJQYWludGluZ0luZm8mLCBPcHRpb25TZXQ8UGFpbnRCZWhhdmlvcj4sIGNvbnN0IENs
aXBSZWN0JiwgQm9yZGVyUmFkaXVzQ2xpcHBpbmdSdWxlID0gSW5jbHVkZVNlbGZGb3JCb3JkZXJS
YWRpdXMpOworICAgIHZvaWQgY2xpcFRvUmVjdChHcmFwaGljc0NvbnRleHQmLCBHcmFwaGljc0Nv
bnRleHRTdGF0ZVNhdmVyJiwgUGFpbnRDb250ZXh0U3RhdGVTYXZlciYsIGNvbnN0IExheWVyUGFp
bnRpbmdJbmZvJiwgT3B0aW9uU2V0PFBhaW50QmVoYXZpb3I+LCBjb25zdCBDbGlwUmVjdCYsIEJv
cmRlclJhZGl1c0NsaXBwaW5nUnVsZSA9IEluY2x1ZGVTZWxmRm9yQm9yZGVyUmFkaXVzKTsKIAog
ICAgIGJvb2wgc2hvdWxkUmVwYWludEFmdGVyTGF5b3V0KCkgY29uc3Q7CiAKQEAgLTEwNzYsNyAr
MTA3Niw3IEBAIHByaXZhdGU6CiAKICAgICBzdGQ6OnBhaXI8UGF0aCwgV2luZFJ1bGU+IGNvbXB1
dGVDbGlwUGF0aChjb25zdCBMYXlvdXRTaXplJiBvZmZzZXRGcm9tUm9vdCwgY29uc3QgTGF5b3V0
UmVjdCYgcm9vdFJlbGF0aXZlQm91bmRzRm9yTm9uQm94ZXMpIGNvbnN0OwogCi0gICAgdm9pZCBz
ZXR1cENsaXBQYXRoKEdyYXBoaWNzQ29udGV4dCYsIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIm
LCBFdmVudFJlZ2lvbkNvbnRleHRTdGF0ZVNhdmVyJiwgY29uc3QgTGF5ZXJQYWludGluZ0luZm8m
LCBPcHRpb25TZXQ8UGFpbnRMYXllckZsYWc+LCBjb25zdCBMYXlvdXRTaXplJiBvZmZzZXRGcm9t
Um9vdCk7CisgICAgdm9pZCBzZXR1cENsaXBQYXRoKEdyYXBoaWNzQ29udGV4dCYsIEdyYXBoaWNz
Q29udGV4dFN0YXRlU2F2ZXImLCBQYWludENvbnRleHRTdGF0ZVNhdmVyJiwgY29uc3QgTGF5ZXJQ
YWludGluZ0luZm8mLCBPcHRpb25TZXQ8UGFpbnRMYXllckZsYWc+LCBjb25zdCBMYXlvdXRTaXpl
JiBvZmZzZXRGcm9tUm9vdCk7CiAKICAgICB2b2lkIGVuc3VyZUxheWVyRmlsdGVycygpOwogICAg
IHZvaWQgY2xlYXJMYXllckZpbHRlcnMoKTsKQEAgLTExMDgsNiArMTEwOCw3IEBAIHByaXZhdGU6
CiAgICAgdm9pZCBwYWludENoaWxkQ2xpcHBpbmdNYXNrRm9yRnJhZ21lbnRzKGNvbnN0IExheWVy
RnJhZ21lbnRzJiwgR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgTGF5ZXJQYWludGluZ0luZm8mLCBP
cHRpb25TZXQ8UGFpbnRCZWhhdmlvcj4sIFJlbmRlck9iamVjdCogcGFpbnRpbmdSb290Rm9yUmVu
ZGVyZXIpOwogICAgIHZvaWQgcGFpbnRUcmFuc2Zvcm1lZExheWVySW50b0ZyYWdtZW50cyhHcmFw
aGljc0NvbnRleHQmLCBjb25zdCBMYXllclBhaW50aW5nSW5mbyYsIE9wdGlvblNldDxQYWludExh
eWVyRmxhZz4pOwogICAgIHZvaWQgY29sbGVjdEV2ZW50UmVnaW9uRm9yRnJhZ21lbnRzKGNvbnN0
IExheWVyRnJhZ21lbnRzJiwgR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgTGF5ZXJQYWludGluZ0lu
Zm8mLCBPcHRpb25TZXQ8UGFpbnRCZWhhdmlvcj4pOworICAgIHZvaWQgY29sbGVjdEFjY2Vzc2li
aWxpdHlSZWN0c0ZvckZyYWdtZW50cyhjb25zdCBMYXllckZyYWdtZW50cyYsIEdyYXBoaWNzQ29u
dGV4dCYsIGNvbnN0IExheWVyUGFpbnRpbmdJbmZvJiwgT3B0aW9uU2V0PFBhaW50QmVoYXZpb3I+
KTsKIAogICAgIFJlbmRlckxheWVyKiB0cmFuc3BhcmVudFBhaW50aW5nQW5jZXN0b3IoKTsKICAg
ICB2b2lkIGJlZ2luVHJhbnNwYXJlbmN5TGF5ZXJzKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IExh
eWVyUGFpbnRpbmdJbmZvJiwgY29uc3QgTGF5b3V0UmVjdCYgZGlydHlSZWN0KTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHAKaW5kZXggYmMyMjAz
OTg4NmJjLi43MzJkOTM1ZmE0Y2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJMYXllckJhY2tpbmcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJMYXllckJhY2tpbmcuY3BwCkBAIC0zNDA4LDcgKzM0MDgsNyBAQCB2b2lkIFJlbmRlckxh
eWVyQmFja2luZzo6c2V0Q29udGVudHNOZWVkRGlzcGxheUluUmVjdChjb25zdCBMYXlvdXRSZWN0
JiByLCBHcmFwaAogCiB2b2lkIFJlbmRlckxheWVyQmFja2luZzo6cGFpbnRJbnRvTGF5ZXIoY29u
c3QgR3JhcGhpY3NMYXllciogZ3JhcGhpY3NMYXllciwgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0
LAogICAgIGNvbnN0IEludFJlY3QmIHBhaW50RGlydHlSZWN0LCAvLyBJbiB0aGUgY29vcmRzIG9m
IHJvb3RMYXllci4KLSAgICBPcHRpb25TZXQ8UGFpbnRCZWhhdmlvcj4gcGFpbnRCZWhhdmlvciwg
RXZlbnRSZWdpb25Db250ZXh0KiBldmVudFJlZ2lvbkNvbnRleHQpCisgICAgT3B0aW9uU2V0PFBh
aW50QmVoYXZpb3I+IHBhaW50QmVoYXZpb3IsIFBhaW50Q29udGV4dCogcGFpbnRDb250ZXh0KQog
ewogI2lmIFVTRShPV05JTkdfTEFZRVJfQkVBUl9UUkFQKQogICAgIFJFTEVBU0VfQVNTRVJUX1dJ
VEhfTUVTU0FHRShtX293bmluZ0xheWVyQmVhclRyYXAgPT0gQkVBUl9UUkFQX1ZBTFVFLCAiUmVu
ZGVyTGF5ZXJCYWNraW5nOjpwYWludEludG9MYXllcigpOiBtX293bmluZ0xheWVyQmVhclRyYXAg
Y2F1Z2h0IHRoZSBiZWFyICg1NTY5OTI5MikiKTsKQEAgLTM0MjcsMTQgKzM0MjcsMTQgQEAgdm9p
ZCBSZW5kZXJMYXllckJhY2tpbmc6OnBhaW50SW50b0xheWVyKGNvbnN0IEdyYXBoaWNzTGF5ZXIq
IGdyYXBoaWNzTGF5ZXIsIEdyYXAKIAogICAgIGF1dG8gcGFpbnRGbGFncyA9IHBhaW50RmxhZ3NG
b3JMYXllcigqZ3JhcGhpY3NMYXllcik7CiAKLSAgICBpZiAoZXZlbnRSZWdpb25Db250ZXh0KQor
ICAgIGlmIChpczxFdmVudFJlZ2lvbkNvbnRleHQ+KHBhaW50Q29udGV4dCkpCiAgICAgICAgIHBh
aW50RmxhZ3MuYWRkKFJlbmRlckxheWVyOjpQYWludExheWVyRmxhZzo6Q29sbGVjdGluZ0V2ZW50
UmVnaW9uKTsKIAogICAgIFJlbmRlck9iamVjdDo6U2V0TGF5b3V0TmVlZGVkRm9yYmlkZGVuU2Nv
cGUgZm9yYmlkU2V0TmVlZHNMYXlvdXQocmVuZGVyZXIoKSk7CiAKICAgICBhdXRvIHBhaW50T25l
TGF5ZXIgPSBbJl0oUmVuZGVyTGF5ZXImIGxheWVyLCBPcHRpb25TZXQ8UmVuZGVyTGF5ZXI6OlBh
aW50TGF5ZXJGbGFnPiBwYWludEZsYWdzKSB7CiAgICAgICAgIExvY2FsRnJhbWVWaWV3OjpQYWlu
dGluZ1N0YXRlIHBhaW50aW5nU3RhdGU7Ci0gICAgICAgIGlmICghZXZlbnRSZWdpb25Db250ZXh0
KSB7CisgICAgICAgIGlmICghcGFpbnRDb250ZXh0KSB7CiAgICAgICAgICAgICBJbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb246OndpbGxQYWludChsYXllci5yZW5kZXJlcigpKTsKIAogICAgICAgICAg
ICAgaWYgKGxheWVyLmlzUmVuZGVyVmlld0xheWVyKCkpCkBAIC0zNDQyLDE4ICszNDQyLDE4IEBA
IHZvaWQgUmVuZGVyTGF5ZXJCYWNraW5nOjpwYWludEludG9MYXllcihjb25zdCBHcmFwaGljc0xh
eWVyKiBncmFwaGljc0xheWVyLCBHcmFwCiAgICAgICAgIH0KIAogICAgICAgICBSZW5kZXJMYXll
cjo6TGF5ZXJQYWludGluZ0luZm8gcGFpbnRpbmdJbmZvKCZtX293bmluZ0xheWVyLCBwYWludERp
cnR5UmVjdCwgcGFpbnRCZWhhdmlvciwgLW1fc3VicGl4ZWxPZmZzZXRGcm9tUmVuZGVyZXIpOwot
ICAgICAgICBwYWludGluZ0luZm8uZXZlbnRSZWdpb25Db250ZXh0ID0gZXZlbnRSZWdpb25Db250
ZXh0OworICAgICAgICBwYWludGluZ0luZm8ucGFpbnRDb250ZXh0ID0gcGFpbnRDb250ZXh0Owog
CiAgICAgICAgIGlmICgmbGF5ZXIgPT0gJm1fb3duaW5nTGF5ZXIpIHsKICAgICAgICAgICAgIGxh
eWVyLnBhaW50TGF5ZXJDb250ZW50cyhjb250ZXh0LCBwYWludGluZ0luZm8sIHBhaW50RmxhZ3Mp
OwogCiAgICAgICAgICAgICBhdXRvKiBzY3JvbGxhYmxlQXJlYSA9IGxheWVyLnNjcm9sbGFibGVB
cmVhKCk7Ci0gICAgICAgICAgICBpZiAoc2Nyb2xsYWJsZUFyZWEgJiYgc2Nyb2xsYWJsZUFyZWEt
PmNvbnRhaW5zRGlydHlPdmVybGF5U2Nyb2xsYmFycygpICYmICFldmVudFJlZ2lvbkNvbnRleHQp
CisgICAgICAgICAgICBpZiAoc2Nyb2xsYWJsZUFyZWEgJiYgc2Nyb2xsYWJsZUFyZWEtPmNvbnRh
aW5zRGlydHlPdmVybGF5U2Nyb2xsYmFycygpICYmICFwYWludENvbnRleHQpCiAgICAgICAgICAg
ICAgICAgbGF5ZXIucGFpbnRMYXllckNvbnRlbnRzKGNvbnRleHQsIHBhaW50aW5nSW5mbywgcGFp
bnRGbGFncyB8IFJlbmRlckxheWVyOjpQYWludExheWVyRmxhZzo6UGFpbnRpbmdPdmVybGF5U2Ny
b2xsYmFycyk7CiAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgbGF5ZXIucGFpbnRMYXllcldp
dGhFZmZlY3RzKGNvbnRleHQsIHBhaW50aW5nSW5mbywgcGFpbnRGbGFncyk7CiAKLSAgICAgICAg
aWYgKCFldmVudFJlZ2lvbkNvbnRleHQpIHsKKyAgICAgICAgaWYgKCFwYWludENvbnRleHQpIHsK
ICAgICAgICAgICAgIGlmIChsYXllci5pc1JlbmRlclZpZXdMYXllcigpKQogICAgICAgICAgICAg
ICAgIHJlbmRlcmVyKCkudmlldygpLmZyYW1lVmlldygpLmRpZFBhaW50Q29udGVudHMoY29udGV4
dCwgcGFpbnREaXJ0eVJlY3QsIHBhaW50aW5nU3RhdGUpOwogCkBAIC0zNDc1LDE0ICszNDc1LDE0
IEBAIHZvaWQgUmVuZGVyTGF5ZXJCYWNraW5nOjpwYWludEludG9MYXllcihjb25zdCBHcmFwaGlj
c0xheWVyKiBncmFwaGljc0xheWVyLCBHcmFwCiAKICAgICAgICAgaWYgKGdyYXBoaWNzTGF5ZXIt
PnBhaW50aW5nUGhhc2UoKS5jb250YWlucyhHcmFwaGljc0xheWVyUGFpbnRpbmdQaGFzZTo6T3Zl
cmZsb3dDb250ZW50cykpCiAgICAgICAgICAgICBzaGFyaW5nTGF5ZXJQYWludEZsYWdzLmFkZChS
ZW5kZXJMYXllcjo6UGFpbnRMYXllckZsYWc6OlBhaW50aW5nT3ZlcmZsb3dDb250ZW50cyk7Ci0g
ICAgICAgIGlmIChldmVudFJlZ2lvbkNvbnRleHQpCisgICAgICAgIGlmIChpczxFdmVudFJlZ2lv
bkNvbnRleHQ+KHBhaW50Q29udGV4dCkpCiAgICAgICAgICAgICBzaGFyaW5nTGF5ZXJQYWludEZs
YWdzLmFkZChSZW5kZXJMYXllcjo6UGFpbnRMYXllckZsYWc6OkNvbGxlY3RpbmdFdmVudFJlZ2lv
bik7CiAKICAgICAgICAgZm9yIChhdXRvJiBsYXllcldlYWtQdHIgOiBtX2JhY2tpbmdTaGFyaW5n
TGF5ZXJzKQogICAgICAgICAgICAgcGFpbnRPbmVMYXllcigqbGF5ZXJXZWFrUHRyLCBzaGFyaW5n
TGF5ZXJQYWludEZsYWdzKTsKICAgICB9CiAKLSAgICBpZiAoIWV2ZW50UmVnaW9uQ29udGV4dCkK
KyAgICBpZiAoIXBhaW50Q29udGV4dCkKICAgICAgICAgY29tcG9zaXRvcigpLmRpZFBhaW50QmFj
a2luZyh0aGlzKTsKIAogI2lmIFVTRShPV05JTkdfTEFZRVJfQkVBUl9UUkFQKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5oIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5oCmluZGV4IGMwNGI5M2Q2YjU4
Zi4uYTliMGY0ZDcwMzliIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyTGF5ZXJCYWNraW5nLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxh
eWVyQmFja2luZy5oCkBAIC0zNSw5ICszNSw5IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAot
Y2xhc3MgRXZlbnRSZWdpb25Db250ZXh0OwogY2xhc3MgS2V5ZnJhbWVMaXN0OwogY2xhc3MgUGFp
bnRlZENvbnRlbnRzSW5mbzsKK2NsYXNzIFBhaW50Q29udGV4dDsKIGNsYXNzIFJlbmRlckxheWVy
Q29tcG9zaXRvcjsKIGNsYXNzIFRpbGVkQmFja2luZzsKIGNsYXNzIFRyYW5zZm9ybWF0aW9uTWF0
cml4OwpAQCAtMzk2LDcgKzM5Niw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBoYXNUaWxlZEJhY2tp
bmdGbGF0dGVuaW5nTGF5ZXIoKSBjb25zdCB7IHJldHVybiAobV9jaGlsZENvbnRhaW5tZW50TGF5
ZXIgJiYgbV9pc0ZyYW1lTGF5ZXJXaXRoVGlsZWRCYWNraW5nKTsgfQogICAgIEdyYXBoaWNzTGF5
ZXIqIHRpbGVDYWNoZUZsYXR0ZW5pbmdMYXllcigpIGNvbnN0IHsgcmV0dXJuIG1faXNGcmFtZUxh
eWVyV2l0aFRpbGVkQmFja2luZyA/IG1fY2hpbGRDb250YWlubWVudExheWVyLmdldCgpIDogbnVs
bHB0cjsgfQogCi0gICAgdm9pZCBwYWludEludG9MYXllcihjb25zdCBHcmFwaGljc0xheWVyKiwg
R3JhcGhpY3NDb250ZXh0JiwgY29uc3QgSW50UmVjdCYgcGFpbnREaXJ0eVJlY3QsIE9wdGlvblNl
dDxQYWludEJlaGF2aW9yPiwgRXZlbnRSZWdpb25Db250ZXh0KiA9IG51bGxwdHIpOworICAgIHZv
aWQgcGFpbnRJbnRvTGF5ZXIoY29uc3QgR3JhcGhpY3NMYXllciosIEdyYXBoaWNzQ29udGV4dCYs
IGNvbnN0IEludFJlY3QmIHBhaW50RGlydHlSZWN0LCBPcHRpb25TZXQ8UGFpbnRCZWhhdmlvcj4s
IFBhaW50Q29udGV4dCogPSBudWxscHRyKTsKICAgICBPcHRpb25TZXQ8UmVuZGVyTGF5ZXI6OlBh
aW50TGF5ZXJGbGFnPiBwYWludEZsYWdzRm9yTGF5ZXIoY29uc3QgR3JhcGhpY3NMYXllciYpIGNv
bnN0OwogICAgIAogICAgIHZvaWQgcGFpbnREZWJ1Z092ZXJsYXlzKGNvbnN0IEdyYXBoaWNzTGF5
ZXIqLCBHcmFwaGljc0NvbnRleHQmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJMaXN0TWFya2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJMaXN0TWFya2VyLmNwcAppbmRleCAyNDZlY2UyNzNhM2UuLjRjMDAxMjc4MjBkZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RNYXJrZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0TWFya2VyLmNwcApAQCAtMTU4NCw3
ICsxNTg0LDcgQEAgYXV0byBSZW5kZXJMaXN0TWFya2VyOjp0ZXh0UnVuKCkgY29uc3QgLT4gVGV4
dFJ1bldpdGhVbmRlcmx5aW5nU3RyaW5nCiAKIHZvaWQgUmVuZGVyTGlzdE1hcmtlcjo6cGFpbnQo
UGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFBvaW50JiBwYWludE9mZnNldCkKIHsK
LSAgICBpZiAocGFpbnRJbmZvLnBoYXNlICE9IFBhaW50UGhhc2U6OkZvcmVncm91bmQpCisgICAg
aWYgKHBhaW50SW5mby5waGFzZSAhPSBQYWludFBoYXNlOjpGb3JlZ3JvdW5kICYmIHBhaW50SW5m
by5waGFzZSAhPSBQYWludFBoYXNlOjpBY2Nlc3NpYmlsaXR5KQogICAgICAgICByZXR1cm47CiAg
ICAgCiAgICAgaWYgKHN0eWxlKCkudmlzaWJpbGl0eSgpICE9IFZpc2liaWxpdHk6OlZpc2libGUp
CkBAIC0xNjAwLDYgKzE2MDAsMTIgQEAgdm9pZCBSZW5kZXJMaXN0TWFya2VyOjpwYWludChQYWlu
dEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50T2Zmc2UKICAgICAKICAg
ICBhdXRvIG1hcmtlclJlY3QgPSByZWxhdGl2ZU1hcmtlclJlY3QoKTsKICAgICBtYXJrZXJSZWN0
Lm1vdmVCeShib3hPcmlnaW4pOworCisgICAgaWYgKHBhaW50SW5mby5waGFzZSA9PSBQYWludFBo
YXNlOjpBY2Nlc3NpYmlsaXR5KSB7CisgICAgICAgIHBhaW50SW5mby5hY2Nlc3NpYmlsaXR5UGFp
bnRDb250ZXh0KCktPnRha2VCb3VuZHMoKnRoaXMsIG1hcmtlclJlY3QpOworICAgICAgICByZXR1
cm47CisgICAgfQorCiAgICAgaWYgKG1hcmtlclJlY3QuaXNFbXB0eSgpKQogICAgICAgICByZXR1
cm47CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSZXBsYWNl
ZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUmVwbGFjZWQuY3BwCmluZGV4
IDEzNDE2MWExNmE2NS4uZTllZTJmM2IwZGI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyUmVwbGFjZWQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJSZXBsYWNlZC5jcHAKQEAgLTIxNywxMSArMjE3LDE2IEBAIHZvaWQgUmVuZGVyUmVw
bGFjZWQ6OnBhaW50KFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2ludCYgcGFp
bnRPZmZzZXQpCiAgICAgICAgIGlmICh2aXNpYmxlVG9IaXRUZXN0aW5nKCkpIHsKICAgICAgICAg
ICAgIGF1dG8gYm9yZGVyUmVjdCA9IExheW91dFJlY3QoYWRqdXN0ZWRQYWludE9mZnNldCwgc2l6
ZSgpKTsKICAgICAgICAgICAgIGF1dG8gYm9yZGVyUmVnaW9uID0gYXBwcm94aW1hdGVBc1JlZ2lv
bihzdHlsZSgpLmdldFJvdW5kZWRCb3JkZXJGb3IoYm9yZGVyUmVjdCkpOwotICAgICAgICAgICAg
cGFpbnRJbmZvLmV2ZW50UmVnaW9uQ29udGV4dC0+dW5pdGUoYm9yZGVyUmVnaW9uLCAqdGhpcywg
c3R5bGUoKSk7CisgICAgICAgICAgICBwYWludEluZm8uZXZlbnRSZWdpb25QYWludENvbnRleHQo
KS0+dW5pdGUoYm9yZGVyUmVnaW9uLCAqdGhpcywgc3R5bGUoKSk7CiAgICAgICAgIH0KICAgICAg
ICAgcmV0dXJuOwogICAgIH0KIAorICAgIGlmIChwYWludEluZm8ucGhhc2UgPT0gUGFpbnRQaGFz
ZTo6QWNjZXNzaWJpbGl0eSkgeworICAgICAgICBwYWludEluZm8uYWNjZXNzaWJpbGl0eVBhaW50
Q29udGV4dCgpLT50YWtlQm91bmRzKCp0aGlzLCBGbG9hdFJlY3QoYWRqdXN0ZWRQYWludE9mZnNl
dCwgc2l6ZSgpKSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKICAgICBTZXRMYXlvdXROZWVk
ZWRGb3JiaWRkZW5TY29wZSBzY29wZSgqdGhpcyk7CiAKICAgICBHcmFwaGljc0NvbnRleHRTdGF0
ZVNhdmVyIHNhdmVkR3JhcGhpY3NDb250ZXh0KHBhaW50SW5mby5jb250ZXh0KCksIGZhbHNlKTsK
QEAgLTMxMSw3ICszMTYsOCBAQCBib29sIFJlbmRlclJlcGxhY2VkOjpzaG91bGRQYWludChQYWlu
dEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50TwogICAgICAgICAmJiBw
YWludEluZm8ucGhhc2UgIT0gUGFpbnRQaGFzZTo6U2VsZk91dGxpbmUKICAgICAgICAgJiYgcGFp
bnRJbmZvLnBoYXNlICE9IFBhaW50UGhhc2U6OlNlbGVjdGlvbgogICAgICAgICAmJiBwYWludElu
Zm8ucGhhc2UgIT0gUGFpbnRQaGFzZTo6TWFzawotICAgICAgICAmJiBwYWludEluZm8ucGhhc2Ug
IT0gUGFpbnRQaGFzZTo6RXZlbnRSZWdpb24pCisgICAgICAgICYmIHBhaW50SW5mby5waGFzZSAh
PSBQYWludFBoYXNlOjpFdmVudFJlZ2lvbgorICAgICAgICAmJiBwYWludEluZm8ucGhhc2UgIT0g
UGFpbnRQaGFzZTo6QWNjZXNzaWJpbGl0eSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAg
aWYgKCFwYWludEluZm8uc2hvdWxkUGFpbnRXaXRoaW5Sb290KCp0aGlzKSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTY3JvbGxiYXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlclNjcm9sbGJhci5jcHAKaW5kZXggMDIwYzhlYzI5NTYyLi4w
OGNjYzUxZDBlNGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJT
Y3JvbGxiYXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTY3JvbGxi
YXIuY3BwCkBAIC0xMDAsNyArMTAwLDcgQEAgdm9pZCBSZW5kZXJTY3JvbGxiYXI6OnN0eWxlQ2hh
bmdlZCgpCiAgICAgdXBkYXRlU2Nyb2xsYmFyUGFydHMoKTsKIH0KIAotdm9pZCBSZW5kZXJTY3Jv
bGxiYXI6OnBhaW50KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgSW50UmVjdCYgZGFt
YWdlUmVjdCwgV2lkZ2V0OjpTZWN1cml0eU9yaWdpblBhaW50UG9saWN5LCBFdmVudFJlZ2lvbkNv
bnRleHQqKQordm9pZCBSZW5kZXJTY3JvbGxiYXI6OnBhaW50KEdyYXBoaWNzQ29udGV4dCYgY29u
dGV4dCwgY29uc3QgSW50UmVjdCYgZGFtYWdlUmVjdCwgV2lkZ2V0OjpTZWN1cml0eU9yaWdpblBh
aW50UG9saWN5LCBQYWludENvbnRleHQqKQogewogICAgIGlmIChjb250ZXh0LmludmFsaWRhdGlu
Z0NvbnRyb2xUaW50cygpKSB7CiAgICAgICAgIHVwZGF0ZVNjcm9sbGJhclBhcnRzKCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU2Nyb2xsYmFyLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU2Nyb2xsYmFyLmgKaW5kZXggZDQ2NTVjZjE3NWQz
Li5kNjE0Mjk4OTUxYWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJTY3JvbGxiYXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU2Nyb2xs
YmFyLmgKQEAgLTY4LDcgKzY4LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHNldFBhcmVudChTY3Jv
bGxWaWV3Kikgb3ZlcnJpZGU7CiAgICAgdm9pZCBzZXRFbmFibGVkKGJvb2wpIG92ZXJyaWRlOwog
Ci0gICAgdm9pZCBwYWludChHcmFwaGljc0NvbnRleHQmLCBjb25zdCBJbnRSZWN0JiBkYW1hZ2VS
ZWN0LCBXaWRnZXQ6OlNlY3VyaXR5T3JpZ2luUGFpbnRQb2xpY3ksIEV2ZW50UmVnaW9uQ29udGV4
dCopIG92ZXJyaWRlOworICAgIHZvaWQgcGFpbnQoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgSW50
UmVjdCYgZGFtYWdlUmVjdCwgV2lkZ2V0OjpTZWN1cml0eU9yaWdpblBhaW50UG9saWN5LCBQYWlu
dENvbnRleHQqKSBvdmVycmlkZTsKIAogICAgIHZvaWQgc2V0SG92ZXJlZFBhcnQoU2Nyb2xsYmFy
UGFydCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBzZXRQcmVzc2VkUGFydChTY3JvbGxiYXJQYXJ0KSBv
dmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJXaWRn
ZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcldpZGdldC5jcHAKaW5kZXgg
MGQ0ZTA3MDE2ODIzLi5iMWRlOWYxNGEyYzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJXaWRnZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJXaWRnZXQuY3BwCkBAIC0yNjMsMTcgKzI2MywxNyBAQCB2b2lkIFJlbmRlcldpZGdldDo6
cGFpbnRDb250ZW50cyhQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQmIHBh
aW50TwogICAgICAgICBwYWludFJlY3QubW92ZSgtd2lkZ2V0UGFpbnRPZmZzZXQpOwogICAgIH0K
IAotICAgIGlmIChwYWludEluZm8uZXZlbnRSZWdpb25Db250ZXh0KSB7CisgICAgaWYgKHBhaW50
SW5mby5wYWludENvbnRleHQpIHsKICAgICAgICAgQWZmaW5lVHJhbnNmb3JtIHRyYW5zZm9ybTsK
ICAgICAgICAgdHJhbnNmb3JtLnRyYW5zbGF0ZShjb250ZW50UGFpbnRPZmZzZXQpOwotICAgICAg
ICBwYWludEluZm8uZXZlbnRSZWdpb25Db250ZXh0LT5wdXNoVHJhbnNmb3JtKHRyYW5zZm9ybSk7
CisgICAgICAgIHBhaW50SW5mby5wYWludENvbnRleHQtPnB1c2hUcmFuc2Zvcm0odHJhbnNmb3Jt
KTsKICAgICB9CiAKICAgICAvLyBGSVhNRTogUmVtb3ZlIHJlcGFpbnRyZWN0IGVuY2xvc2luZy9p
bnRlZ3JhbCBzbmFwcGluZyB3aGVuIFJlbmRlcldpZGdldCBiZWNvbWVzIGRldmljZSBwaXhlbCBz
bmFwcGVkLgotICAgIG1fd2lkZ2V0LT5wYWludChwYWludEluZm8uY29udGV4dCgpLCBzbmFwcGVk
SW50UmVjdChwYWludFJlY3QpLCBwYWludEluZm8ucmVxdWlyZVNlY3VyaXR5T3JpZ2luQWNjZXNz
Rm9yV2lkZ2V0cyA/IFdpZGdldDo6U2VjdXJpdHlPcmlnaW5QYWludFBvbGljeTo6QWNjZXNzaWJs
ZU9yaWdpbk9ubHkgOiBXaWRnZXQ6OlNlY3VyaXR5T3JpZ2luUGFpbnRQb2xpY3k6OkFueU9yaWdp
biwgcGFpbnRJbmZvLmV2ZW50UmVnaW9uQ29udGV4dCk7CisgICAgbV93aWRnZXQtPnBhaW50KHBh
aW50SW5mby5jb250ZXh0KCksIHNuYXBwZWRJbnRSZWN0KHBhaW50UmVjdCksIHBhaW50SW5mby5y
ZXF1aXJlU2VjdXJpdHlPcmlnaW5BY2Nlc3NGb3JXaWRnZXRzID8gV2lkZ2V0OjpTZWN1cml0eU9y
aWdpblBhaW50UG9saWN5OjpBY2Nlc3NpYmxlT3JpZ2luT25seSA6IFdpZGdldDo6U2VjdXJpdHlP
cmlnaW5QYWludFBvbGljeTo6QW55T3JpZ2luLCBwYWludEluZm8ucGFpbnRDb250ZXh0KTsKIAot
ICAgIGlmIChwYWludEluZm8uZXZlbnRSZWdpb25Db250ZXh0KQotICAgICAgICBwYWludEluZm8u
ZXZlbnRSZWdpb25Db250ZXh0LT5wb3BUcmFuc2Zvcm0oKTsKKyAgICBpZiAocGFpbnRJbmZvLnBh
aW50Q29udGV4dCkKKyAgICAgICAgcGFpbnRJbmZvLnBhaW50Q29udGV4dC0+cG9wVHJhbnNmb3Jt
KCk7CiAKICAgICBpZiAoIXdpZGdldFBhaW50T2Zmc2V0LmlzWmVybygpKQogICAgICAgICBwYWlu
dEluZm8uY29udGV4dCgpLnRyYW5zbGF0ZSgtd2lkZ2V0UGFpbnRPZmZzZXQpOwpAQCAtMzM3LDcg
KzMzNyw3IEBAIHZvaWQgUmVuZGVyV2lkZ2V0OjpwYWludChQYWludEluZm8mIHBhaW50SW5mbywg
Y29uc3QgTGF5b3V0UG9pbnQmIHBhaW50T2Zmc2V0KQogICAgIGlmIChzdHlsZSgpLmhhc0JvcmRl
clJhZGl1cygpKQogICAgICAgICBwYWludEluZm8uY29udGV4dCgpLnJlc3RvcmUoKTsKIAotICAg
IGlmIChwYWludEluZm8ucGhhc2UgPT0gUGFpbnRQaGFzZTo6RXZlbnRSZWdpb24pCisgICAgaWYg
KHBhaW50SW5mby5waGFzZSA9PSBQYWludFBoYXNlOjpFdmVudFJlZ2lvbiB8fCBwYWludEluZm8u
cGhhc2UgPT0gUGFpbnRQaGFzZTo6QWNjZXNzaWJpbGl0eSkKICAgICAgICAgcmV0dXJuOwogCiAg
ICAgLy8gUGFpbnQgYSBwYXJ0aWFsbHkgdHJhbnNwYXJlbnQgd2FzaCBvdmVyIHNlbGVjdGVkIHdp
ZGdldHMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvVGV4dEJveFBhaW50
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1RleHRCb3hQYWludGVyLmNwcAppbmRl
eCAwODliOGU1ZGFkMmEuLmM3NzgxMGUxMmM1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1RleHRCb3hQYWludGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvVGV4dEJveFBhaW50ZXIuY3BwCkBAIC04MSw3ICs4MSw3IEBAIFRleHRCb3hQYWludGVyPFRl
eHRCb3hQYXRoPjo6VGV4dEJveFBhaW50ZXIoVGV4dEJveFBhdGgmJiB0ZXh0Qm94LCBQYWludElu
Zm8mIHBhCiAgICAgLCBtX3VzZUN1c3RvbVVuZGVybGluZXMobV9jb250YWluc0NvbXBvc2l0aW9u
ICYmIG1fcmVuZGVyZXIuZnJhbWUoKS5lZGl0b3IoKS5jb21wb3NpdGlvblVzZXNDdXN0b21VbmRl
cmxpbmVzKCkpCiAgICAgLCBtX2VtcGhhc2lzTWFya0V4aXN0c0FuZElzQWJvdmUoUmVuZGVyVGV4
dDo6ZW1waGFzaXNNYXJrRXhpc3RzQW5kSXNBYm92ZShtX3JlbmRlcmVyLCBtX3N0eWxlKSkKIHsK
LSAgICBBU1NFUlQocGFpbnRJbmZvLnBoYXNlID09IFBhaW50UGhhc2U6OkZvcmVncm91bmQgfHwg
cGFpbnRJbmZvLnBoYXNlID09IFBhaW50UGhhc2U6OlNlbGVjdGlvbiB8fCBwYWludEluZm8ucGhh
c2UgPT0gUGFpbnRQaGFzZTo6VGV4dENsaXAgfHwgcGFpbnRJbmZvLnBoYXNlID09IFBhaW50UGhh
c2U6OkV2ZW50UmVnaW9uKTsKKyAgICBBU1NFUlQocGFpbnRJbmZvLnBoYXNlID09IFBhaW50UGhh
c2U6OkZvcmVncm91bmQgfHwgcGFpbnRJbmZvLnBoYXNlID09IFBhaW50UGhhc2U6OlNlbGVjdGlv
biB8fCBwYWludEluZm8ucGhhc2UgPT0gUGFpbnRQaGFzZTo6VGV4dENsaXAgfHwgcGFpbnRJbmZv
LnBoYXNlID09IFBhaW50UGhhc2U6OkV2ZW50UmVnaW9uIHx8IHBhaW50SW5mby5waGFzZSA9PSBQ
YWludFBoYXNlOjpBY2Nlc3NpYmlsaXR5KTsKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgVGV4dEJv
eFBhdGg+CkBAIC0xMDUsNyArMTA1LDcgQEAgdm9pZCBUZXh0Qm94UGFpbnRlcjxUZXh0Qm94UGF0
aD46OnBhaW50KCkKICAgICBpZiAobV9wYWludEluZm8ucGhhc2UgPT0gUGFpbnRQaGFzZTo6RXZl
bnRSZWdpb24pIHsKICAgICAgICAgY29uc3RleHByIE9wdGlvblNldDxIaXRUZXN0UmVxdWVzdDo6
VHlwZT4gaGl0VHlwZSB7IEhpdFRlc3RSZXF1ZXN0OjpUeXBlOjpJZ25vcmVDU1NQb2ludGVyRXZl
bnRzUHJvcGVydHkgfTsKICAgICAgICAgaWYgKG1fcmVuZGVyZXIucGFyZW50KCktPnZpc2libGVU
b0hpdFRlc3RpbmcoaGl0VHlwZSkpCi0gICAgICAgICAgICBtX3BhaW50SW5mby5ldmVudFJlZ2lv
bkNvbnRleHQtPnVuaXRlKGVuY2xvc2luZ0ludFJlY3QobV9wYWludFJlY3QpLCBjb25zdF9jYXN0
PFJlbmRlclRleHQmPihtX3JlbmRlcmVyKSwgbV9zdHlsZSk7CisgICAgICAgICAgICBtX3BhaW50
SW5mby5ldmVudFJlZ2lvblBhaW50Q29udGV4dCgpLT51bml0ZShlbmNsb3NpbmdJbnRSZWN0KG1f
cGFpbnRSZWN0KSwgY29uc3RfY2FzdDxSZW5kZXJUZXh0Jj4obV9yZW5kZXJlciksIG1fc3R5bGUp
OwogICAgICAgICByZXR1cm47CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwCmluZGV4IDkyNTNlOTA1YWZjNS4uNDFiZmNjYzgxZDcz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNw
cApAQCAtNDE4LDcgKzQxOCw3IEBAIHZvaWQgUGx1Z2luVmlldzo6c2V0RnJhbWVSZWN0KGNvbnN0
IFdlYkNvcmU6OkludFJlY3QmIHJlY3QpCiAgICAgdmlld0dlb21ldHJ5RGlkQ2hhbmdlKCk7CiB9
CiAKLXZvaWQgUGx1Z2luVmlldzo6cGFpbnQoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25z
dCBJbnRSZWN0JiAvKmRpcnR5UmVjdCovLCBXaWRnZXQ6OlNlY3VyaXR5T3JpZ2luUGFpbnRQb2xp
Y3ksIEV2ZW50UmVnaW9uQ29udGV4dCopCit2b2lkIFBsdWdpblZpZXc6OnBhaW50KEdyYXBoaWNz
Q29udGV4dCYgY29udGV4dCwgY29uc3QgSW50UmVjdCYgLypkaXJ0eVJlY3QqLywgV2lkZ2V0OjpT
ZWN1cml0eU9yaWdpblBhaW50UG9saWN5LCBQYWludENvbnRleHQqKQogewogICAgIGlmICghbV9p
c0luaXRpYWxpemVkKQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvUGx1Z2lucy9QbHVnaW5WaWV3LmgKaW5kZXggNzIxMjJjYjQ1OGRlLi5iZTlhNTU5ZjBmN2Qg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcu
aAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmgKQEAg
LTEzMSw3ICsxMzEsNyBAQCBwcml2YXRlOgogCiAgICAgLy8gV2ViQ29yZTo6V2lkZ2V0CiAgICAg
dm9pZCBzZXRGcmFtZVJlY3QoY29uc3QgV2ViQ29yZTo6SW50UmVjdCYpIGZpbmFsOwotICAgIHZv
aWQgcGFpbnQoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0JiwgY29uc3QgV2ViQ29yZTo6SW50UmVj
dCYsIFdlYkNvcmU6OldpZGdldDo6U2VjdXJpdHlPcmlnaW5QYWludFBvbGljeSwgV2ViQ29yZTo6
RXZlbnRSZWdpb25Db250ZXh0KikgZmluYWw7CisgICAgdm9pZCBwYWludChXZWJDb3JlOjpHcmFw
aGljc0NvbnRleHQmLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiwgV2ViQ29yZTo6V2lkZ2V0OjpT
ZWN1cml0eU9yaWdpblBhaW50UG9saWN5LCBXZWJDb3JlOjpQYWludENvbnRleHQqKSBmaW5hbDsK
ICAgICB2b2lkIGludmFsaWRhdGVSZWN0KGNvbnN0IFdlYkNvcmU6OkludFJlY3QmKSBmaW5hbDsK
ICAgICB2b2lkIGZyYW1lUmVjdHNDaGFuZ2VkKCkgZmluYWw7CiAgICAgdm9pZCBzZXRQYXJlbnQo
V2ViQ29yZTo6U2Nyb2xsVmlldyopIGZpbmFsOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>465795</attachid>
            <date>2023-04-05 23:56:58 -0700</date>
            <delta_ts>2023-04-17 01:00:08 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-255076-20230405235657.patch</filename>
            <type>text/plain</type>
            <size>105036</size>
            <attacher name="Tyler Wilcock">tyler_w</attacher>
            
              <data encoding="base64">RnJvbSAxZmZmMjAwNTI4YzliOGE4MGNlY2VlZmY3ODU5N2EyMmQ2YWU3MWY0IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBUeWxlciBXaWxjb2NrIDx0eWxlcl93QGFwcGxlLmNvbT4KRGF0
ZTogV2VkLCA1IEFwciAyMDIzIDIxOjU1OjE4IC0wNzAwClN1YmplY3Q6IFtQQVRDSF0gQWRkIFBh
aW50UGhhc2U6OkFjY2Vzc2liaWxpdHkgYW5kIEFjY2Vzc2liaWxpdHlQYWludENvbnRleHQKIHRv
IGZhY2lsaXRhdGUgQVggZWxlbWVudCBib3VuZGluZy1ib3ggY2FjaGluZwogaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI1NTA3NiByZGFyOi8vcHJvYmxlbS8xMDc2OTQ0
OTIKClJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgoKQWNjZXNzaWJpbGl0eSBuZWVkcyB0byBj
YWNoZSB0aGUgYm91bmRpbmcgYm94IG9mIG5vbi1hY2Nlc3NpYmlsaXR5LWlzLWlnbm9yZWQgZWxl
bWVudHMgb24gdGhlIHNlY29uZGFyeSBBWCB0aHJlYWQuClRvIGdldCB0aGVzZSBib3VuZGluZy1i
b3hlcywgdGhpcyBwYXRjaCBhZGRzIGEgbmV3IGFjY2Vzc2liaWxpdHkgcGFpbnQgcGhhc2Ugd2l0
aCB0aGUgaW50ZW50aW9uIG9mIHRyaWdnZXJpbmcgdGhpcwpwYWludCBwaGFzZSBpbiBgUGFnZTo6
ZG9BZnRlclVwZGF0ZVJlbmRlcmluZ2AgKHdoaWNoIHdpbGwgYmUgZG9uZSBpbiBhIGZ1dHVyZSBw
YXRjaCkganVzdCBhcyBldmVudCByZWdpb25zIGRvLgoKVG8gYWNjb21wbGlzaCB0aGlzLCB0aGlz
IHBhdGNoIHJlZmFjdG9ycyBgRXZlbnRSZWdpb25Db250ZXh0YHMgY2xpcCBzdGFjayBhbmQgdHJh
bnNmb3JtIHN0YWNrIG1haW50ZW5hbmNlIGludG8gYSBuZXcKYFBhaW50Q29udGV4dGAgYmFzZSBj
bGFzcy4gYEV2ZW50UmVnaW9uQ29udGV4dGAgbm93IGRlcml2ZXMgZnJvbSBgUGFpbnRDb250ZXh0
YCBhbG9uZyB3aXRoIGEgbmV3IGBBY2Nlc3NpYmlsaXR5UGFpbnRDb250ZXh0YApjbGFzcy4gYEFj
Y2Vzc2liaWxpdHlQYWludENvbnRleHRgIHdpbGwgdGFrZSB0aGUgYm91bmRzIGdlbmVyYXRlZCBi
eSBwYWludGluZywgYXBwbHkgdHJhbnNmb3JtcyBhbmQgY2xpcHMsIGFuZCB1c2hlcgp0aGlzIGlu
Zm9ybWF0aW9uIGVsc2V3aGVyZSB0byBiZSB1c2VkIHRvIHVwZGF0ZSBhY2Nlc3NpYmlsaXR5IGRh
dGEgc3RydWN0dXJlcyAod2l0aCB0aGF0IGxhc3Qgc3RlcCBjb21pbmcgaW4gYSBsYXRlciBwYXRj
aCkuCgoqIFNvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2U6CkFkZCBBY2Nlc3NpYmlsaXR5UGFp
bnRDb250ZXh0LmggYW5kIFBhaW50Q29udGV4dC5oLgoqIFNvdXJjZS9XZWJDb3JlL1NvdXJjZXMu
dHh0OgpBZGQgQWNjZXNzaWJpbGl0eVBhaW50Q29udGV4dC5jcHAgYW5kIFBhaW50Q29udGV4dC5j
cHAuCgoqIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoK
QWRkIEFjY2Vzc2liaWxpdHlQYWludENvbnRleHQue2gsIGNwcH0gYW5kIFBhaW50Q29udGV4dC57
aCwgY3BwfQoKKiBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaDoKKiBTb3VyY2UvV2ViQ29y
ZS9kb20vRG9jdW1lbnQuY3BwOgooV2ViQ29yZTo6RG9jdW1lbnQ6OnVwZGF0ZUFjY2Vzc2liaWxp
dHlPYmplY3RSZWN0cyk6IEFkZGVkLgoKKiBTb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRp
b24vaW5saW5lL0xheW91dEludGVncmF0aW9uTGluZUxheW91dC5jcHA6CihXZWJDb3JlOjpMYXlv
dXRJbnRlZ3JhdGlvbjo6TGluZUxheW91dDo6cGFpbnQpOgpQYWludCBmb3IgUGFpbnRQaGFzZTo6
QWNjZXNzaWJpbGl0eS4KCiogU291cmNlL1dlYkNvcmUvcGFnZS9Mb2NhbEZyYW1lVmlldy5jcHA6
CihXZWJDb3JlOjpMb2NhbEZyYW1lVmlldzo6dXBkYXRlQWNjZXNzaWJpbGl0eU9iamVjdFJlY3Rz
KTogQWRkZWQuCihXZWJDb3JlOjpMb2NhbEZyYW1lVmlldzo6dHJhdmVyc2VGb3JQYWludEludmFs
aWRhdGlvbik6CihXZWJDb3JlOjpMb2NhbEZyYW1lVmlldzo6cGFpbnRDb250ZW50cyk6CiogU291
cmNlL1dlYkNvcmUvcGFnZS9Mb2NhbEZyYW1lVmlldy5oOgoqIFNvdXJjZS9XZWJDb3JlL3BhZ2Uv
UmVtb3RlRnJhbWVWaWV3LmNwcDoKKFdlYkNvcmU6OlJlbW90ZUZyYW1lVmlldzo6cGFpbnRDb250
ZW50cyk6CiogU291cmNlL1dlYkNvcmUvcGFnZS9SZW1vdGVGcmFtZVZpZXcuaDoKKiBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxWaWV3LmNwcDoKKFdlYkNvcmU6OlNjcm9sbFZpZXc6OnBh
aW50KToKKiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxWaWV3Lmg6CiogU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vU2Nyb2xsYmFyLmNwcDoKKFdlYkNvcmU6OlNjcm9sbGJhcjo6cGFpbnQp
OgoqIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGJhci5oOgoqIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1dpZGdldC5jcHA6CiogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1dpZGdl
dEd0ay5jcHA6CiogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1dpZGdldFdpbi5jcHA6CihX
ZWJDb3JlOjpXaWRnZXQ6OnBhaW50KToKKiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9XaWRnZXQu
aDoKKiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaDoK
KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6aW52YWxpZGF0aW5nQWNjZXNzaWJpbGl0eU9iamVj
dFJlY3RzIGNvbnN0KToKKiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9OdWxsR3Jh
cGhpY3NDb250ZXh0Lmg6CiogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dpZGdldElPUy5t
bToKKFdlYkNvcmU6OldpZGdldDo6cGFpbnQpOgoqIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21h
Yy9XaWRnZXRNYWMubW06CihXZWJDb3JlOjpXaWRnZXQ6OnBhaW50KToKQWNjZXB0IGEgYFBhaW50
Q29udGV4dCpgIHBhcmFtZXRlciBpbnN0ZWFkIG9mIGFuIGBFdmVudFJlZ2lvbkNvbnRleHQqYC4K
CiogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0FjY2Vzc2liaWxpdHlQYWludENvbnRleHQuY3Bw
OiBBZGRlZC4KKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlQYWludENvbnRleHQ6OnRha2VCb3VuZHMp
OgoqIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9BY2Nlc3NpYmlsaXR5UGFpbnRDb250ZXh0Lmg6
IEFkZGVkLgooV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVBhaW50Q29udGV4dDo6bWFwUmVjdCk6Cgoq
IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9FdmVudFJlZ2lvbi5oOgoqIFNvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9FdmVudFJlZ2lvbi5jcHA6CihXZWJDb3JlOjpFdmVudFJlZ2lvbkNvbnRleHQ6
OnB1c2hUcmFuc2Zvcm0pOiBEZWxldGVkLgooV2ViQ29yZTo6RXZlbnRSZWdpb25Db250ZXh0Ojpw
b3BUcmFuc2Zvcm0pOiBEZWxldGVkLgooV2ViQ29yZTo6RXZlbnRSZWdpb25Db250ZXh0OjpwdXNo
Q2xpcCk6IERlbGV0ZWQuCihXZWJDb3JlOjpFdmVudFJlZ2lvbkNvbnRleHQ6OnBvcENsaXApOiBE
ZWxldGVkLgpUaGVzZSBmdW5jdGlvbnMgYW5kIHRoZWlyIGFzc29jaWF0ZWQgc3RhdGUgYXJlIG1v
dmVkIHRvCnRoZSBuZXdseSBhZGRlZCBiYXNlIGNsYXNzLCBgUGFpbnRDb250ZXh0YC4KCihXZWJD
b3JlOjpFdmVudFJlZ2lvbkNvbnRleHRTdGF0ZVNhdmVyOjpFdmVudFJlZ2lvbkNvbnRleHRTdGF0
ZVNhdmVyKTogRGVsZXRlZC4KKFdlYkNvcmU6OkV2ZW50UmVnaW9uQ29udGV4dFN0YXRlU2F2ZXI6
On5FdmVudFJlZ2lvbkNvbnRleHRTdGF0ZVNhdmVyKTogRGVsZXRlZC4KKFdlYkNvcmU6OkV2ZW50
UmVnaW9uQ29udGV4dFN0YXRlU2F2ZXI6OnB1c2hDbGlwKTogRGVsZXRlZC4KKFdlYkNvcmU6OkV2
ZW50UmVnaW9uQ29udGV4dFN0YXRlU2F2ZXI6OmNvbnRleHQgY29uc3QpOiBEZWxldGVkLgpSZXBs
YWNlZCBieSB0aGUgZXF1aXZhbGVudCBhbmQgbmV3LXRvLXRoaXMtcGF0Y2ggYFBhaW50Q29udGV4
dFN0YXRlU2F2ZXJgLgoKKiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvTGVnYWN5SW5saW5lRWxl
bWVudEJveC5jcHA6CihXZWJDb3JlOjpMZWdhY3lJbmxpbmVFbGVtZW50Qm94OjpwYWludCk6Ciog
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0xlZ2FjeUlubGluZUZsb3dCb3guY3BwOgooV2ViQ29y
ZTo6TGVnYWN5SW5saW5lRmxvd0JveDo6cGFpbnQpOgpBdm9pZCBlYXJseSByZXR1cm4gd2hlbiBw
YWludGluZyBmb3IgUGFpbnRQaGFzZTo6QWNjZXNzaWJpbGl0eS4KCiogU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1BhaW50Q29udGV4dC5oOiBBZGRlZC4KKiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUGFpbnRDb250ZXh0LmNwcDogQWRkZWQuCihXZWJDb3JlOjpQYWludENvbnRleHQ6OnB1c2hU
cmFuc2Zvcm0pOgooV2ViQ29yZTo6UGFpbnRDb250ZXh0Ojpwb3BUcmFuc2Zvcm0pOgooV2ViQ29y
ZTo6UGFpbnRDb250ZXh0OjpwdXNoQ2xpcCk6CihXZWJDb3JlOjpQYWludENvbnRleHQ6OnBvcENs
aXApOgpSZXBsYWNlcyBlcXVpdmFsZW50IGZ1bmN0aW9uYWxpdHkgdGhhdCB1c2VkIHRvIGJlIGlu
IGBFdmVudFJlZ2lvbkNvbnRleHRgLgooV2ViQ29yZTo6UGFpbnRDb250ZXh0Ojppc0V2ZW50UmVn
aW9uUGFpbnRDb250ZXh0IGNvbnN0KToKKFdlYkNvcmU6OlBhaW50Q29udGV4dDo6aXNBY2Nlc3Np
YmlsaXR5UGFpbnRDb250ZXh0IGNvbnN0KToKCihXZWJDb3JlOjpQYWludENvbnRleHRTdGF0ZVNh
dmVyOjpQYWludENvbnRleHRTdGF0ZVNhdmVyKToKKFdlYkNvcmU6OlBhaW50Q29udGV4dFN0YXRl
U2F2ZXI6On5QYWludENvbnRleHRTdGF0ZVNhdmVyKToKKFdlYkNvcmU6OlBhaW50Q29udGV4dFN0
YXRlU2F2ZXI6OnB1c2hDbGlwKToKKFdlYkNvcmU6OlBhaW50Q29udGV4dFN0YXRlU2F2ZXI6OmNv
bnRleHQgY29uc3QpOgpSZXBsYWNlcyBlcXVpdmFsZW50IGZ1bmN0aW9uYWxpdHkgdGhhdCB1c2Vk
IHRvIGJlIGluIGBFdmVudFJlZ2lvbkNvbnRleHRTdGF0ZVNhdmVyYC4KCiogU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1BhaW50SW5mby5oOgpTdG9yZSBhIGBQYWludENvbnRleHQqYCByYXRoZXIg
dGhhbiBhbiBgRXZlbnRSZWdpb25Db250ZXh0KmAuCihXZWJDb3JlOjpQYWludEluZm86OmV2ZW50
UmVnaW9uUGFpbnRDb250ZXh0KTogQWRkZWQuCihXZWJDb3JlOjpQYWludEluZm86OmFjY2Vzc2li
aWxpdHlQYWludENvbnRleHQpOiBBZGRlZC4KCiogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Bh
aW50UGhhc2UuaDoKQWRkIG5ldyBQYWludFBoYXNlOjpBY2Nlc3NpYmlsaXR5LgoKKiBTb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwOgooV2ViQ29yZTo6UmVuZGVyQmxvY2s6
OnBhaW50Q29udGVudHMpOgpDaGVjayBmb3Igbm9uLW51bGwgZXZlbnQgcmVnaW9uIHBhaW50IGNv
bnRleHQgdG8gbWFpbnRhaW4gZXhpc3RpbmcKYmVoYXZpb3IuCgooV2ViQ29yZTo6UmVuZGVyQmxv
Y2s6OnBhaW50T2JqZWN0KToKR2l2ZSB0aGUgcGFpbnQtcmVjdCBvZiB0aGlzIGBSZW5kZXJCbG9j
a2AgdG8gdGhlIGBBY2Nlc3NpYmlsaXR5UGFpbnRDb250ZXh0YCBpZiBwcmVzZW50LgpIYW5kbGUg
bmV3IGBQYWludFBoYXNlOjpBY2Nlc3NpYmlsaXR5YC4KCiogU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckJveC5jcHA6CihXZWJDb3JlOjpSZW5kZXJCb3g6OnB1c2hDb250ZW50c0NsaXAp
OgooV2ViQ29yZTo6UmVuZGVyQm94Ojpwb3BDb250ZW50c0NsaXApOgpQdXNoIGFuZCBwb3AgY2xp
cCBmb3IgYm90aCBgUGFpbnRQaGFzZTo6QWNjZXNzaWJpbGl0eWAgYW5kIGBQYWludFBoYXNlOjpF
dmVudFJlZ2lvbkNvbnRleHRgLgoKKiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRWxl
bWVudC5jcHA6CihXZWJDb3JlOjpSZW5kZXJFbGVtZW50OjpwYWludEFzSW5saW5lQmxvY2spOgpB
bGxvdyBwYWludCBmb3IgYFBhaW50UGhhc2U6OkFjY2Vzc2liaWxpdHlgLgoKKiBTb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwOgooV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OnBh
aW50KToKKFdlYkNvcmU6OlJlbmRlckxheWVyOjpjbGlwVG9SZWN0KToKKFdlYkNvcmU6OlJlbmRl
ckxheWVyOjpwYWludExheWVyV2l0aEVmZmVjdHMpOgooV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OnNl
dHVwQ2xpcFBhdGgpOgooV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OmFwcGx5RmlsdGVycyk6CihXZWJD
b3JlOjpSZW5kZXJMYXllcjo6cGFpbnRMYXllckNvbnRlbnRzKToKKFdlYkNvcmU6OlJlbmRlckxh
eWVyOjpwYWludExheWVyQnlBcHBseWluZ1RyYW5zZm9ybSk6CihXZWJDb3JlOjpSZW5kZXJMYXll
cjo6cGFpbnRUcmFuc2Zvcm1lZExheWVySW50b0ZyYWdtZW50cyk6CihXZWJDb3JlOjpSZW5kZXJM
YXllcjo6cGFpbnRCYWNrZ3JvdW5kRm9yRnJhZ21lbnRzKToKKFdlYkNvcmU6OlJlbmRlckxheWVy
OjpwYWludEZvcmVncm91bmRGb3JGcmFnbWVudHMpOgooV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OnBh
aW50Rm9yZWdyb3VuZEZvckZyYWdtZW50c1dpdGhQaGFzZSk6CihXZWJDb3JlOjpSZW5kZXJMYXll
cjo6cGFpbnRPdXRsaW5lRm9yRnJhZ21lbnRzKToKKFdlYkNvcmU6OlJlbmRlckxheWVyOjpwYWlu
dE1hc2tGb3JGcmFnbWVudHMpOgooV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OnBhaW50Q2hpbGRDbGlw
cGluZ01hc2tGb3JGcmFnbWVudHMpOgooV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OnBhaW50T3ZlcmZs
b3dDb250cm9sc0ZvckZyYWdtZW50cyk6CihXZWJDb3JlOjpSZW5kZXJMYXllcjo6Y29sbGVjdEV2
ZW50UmVnaW9uRm9yRnJhZ21lbnRzKToKKFdlYkNvcmU6OlJlbmRlckxheWVyOjpjb2xsZWN0QWNj
ZXNzaWJpbGl0eVJlY3RzRm9yRnJhZ21lbnRzKTogQWRkZWQuClJlcGxhY2UgdXNhZ2Ugb2YgYEV2
ZW50UmVnaW9uQ29udGV4dFN0YXRlU2F2ZXJgIHdpdGggYFBhaW50Q29udGV4dFN0YXRlU2F2ZXJg
LgpDaGVjayBmb3IgdGhlIHByZXNlbmNlIG9mIGBFdmVudFJlZ2lvbkNvbnRleHRgIHdoZW4gYXBw
cm9wcmlhdGUgdG8gbWFpbnRhaW4gZXhpc3RpbmcgYmVoYXZpb3IuCgoqIFNvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJMYXllci5oOgooV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OnBhaW50KToK
QWNjZXB0IGEgYFBhaW50Q29udGV4dCpgIHBhcmFtZXRlciBpbnN0ZWFkIG9mIGFuIGBFdmVudFJl
Z2lvbkNvbnRleHQqYC4KU3RvcmUgYSBgUGFpbnRDb250ZXh0KmAgcmF0aGVyIHRoYW4gYW4gYEV2
ZW50UmVnaW9uQ29udGV4dCpgIGluIGBzdHJ1Y3QgTGF5ZXJQYWludGluZ0luZm9gLgoKKiBTb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcDoKKFdlYkNvcmU6OlJl
bmRlckxheWVyQmFja2luZzo6cGFpbnRJbnRvTGF5ZXIpOgoqIFNvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJMYXllckJhY2tpbmcuaDoKQWNjZXB0IGEgYFBhaW50Q29udGV4dCpgIHBhcmFt
ZXRlciBpbnN0ZWFkIG9mIGFuIGBFdmVudFJlZ2lvbkNvbnRleHQqYC4KUmVwbGFjZSB1c2FnZSBv
ZiBgRXZlbnRSZWdpb25Db250ZXh0U3RhdGVTYXZlcmAgd2l0aCBgUGFpbnRDb250ZXh0U3RhdGVT
YXZlcmAuCgoqIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0TWFya2VyLmNwcDoK
KFdlYkNvcmU6OlJlbmRlckxpc3RNYXJrZXI6OnBhaW50KToKUGFpbnQgZm9yIGBQYWludFBoYXNl
OjpBY2Nlc3NpYmlsaXR5YC4KCiogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJlcGxh
Y2VkLmNwcDoKKFdlYkNvcmU6OlJlbmRlclJlcGxhY2VkOjpwYWludCk6CihXZWJDb3JlOjpSZW5k
ZXJSZXBsYWNlZDo6c2hvdWxkUGFpbnQpOgpQYWludCBmb3IgYFBhaW50UGhhc2U6OkFjY2Vzc2li
aWxpdHlgLgoKKiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU2Nyb2xsYmFyLmg6Ciog
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNjcm9sbGJhci5jcHA6CihXZWJDb3JlOjpS
ZW5kZXJTY3JvbGxiYXI6OnBhaW50KToKQWNjZXB0IGEgYFBhaW50Q29udGV4dCpgIHBhcmFtZXRl
ciBpbnN0ZWFkIG9mIGFuIGBFdmVudFJlZ2lvbkNvbnRleHQqYC4KCiogU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlcldpZGdldC5jcHA6CihXZWJDb3JlOjpSZW5kZXJXaWRnZXQ6OnBhaW50
Q29udGVudHMpOgooV2ViQ29yZTo6UmVuZGVyV2lkZ2V0OjpwYWludCk6ClJldHVybiBlYXJseSBi
ZWZvcmUgYWN0dWFsIHBhaW50IGZvciBgUGFpbnRQaGFzZTo6QWNjZXNzaWJpbGl0eWAuCgoqIFNv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9UZXh0Qm94UGFpbnRlci5jcHA6CihXZWJDb3JlOjpUZXh0
Qm94UGFpbnRlcjxUZXh0Qm94UGF0aD46OlRleHRCb3hQYWludGVyKToKKFdlYkNvcmU6OlRleHRC
b3hQYWludGVyPFRleHRCb3hQYXRoPjo6cGFpbnQpOgpBbGxvdyBwYWludCBmb3IgYFBhaW50UGhh
c2U6OkFjY2Vzc2liaWxpdHlgIGluIEFTU0VSVCAod2Ugd2lsbCBuZWVkIHRvCmhhbmRsZSB0aGVz
ZSBwYWludHMgaW4gYSBmdXR1cmUgcGF0Y2gpLgoKKiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
UGx1Z2lucy9QbHVnaW5WaWV3Lmg6CiogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMv
UGx1Z2luVmlldy5jcHA6CihXZWJLaXQ6OlBsdWdpblZpZXc6OnBhaW50KToKQWNjZXB0IGEgYFBh
aW50Q29udGV4dCpgIHBhcmFtZXRlciBpbnN0ZWFkIG9mIGFuIGBFdmVudFJlZ2lvbkNvbnRleHQq
YC4KLS0tCiBTb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlICAgICAgICAgICAgICAgICAgfCAg
MiArCiBTb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dCAgICAgICAgICAgICAgICAgICAgfCAgMiAr
CiAuLi4vV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogfCAxNCArKy0K
IFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAgICAgICAgICAgICAgICB8ICA4ICsrCiBT
b3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaCAgICAgICAgICAgICAgICAgfCAgMSArCiAuLi4v
aW5saW5lL0xheW91dEludGVncmF0aW9uTGluZUxheW91dC5jcHAgICAgfCAgMSArCiBTb3VyY2Uv
V2ViQ29yZS9wYWdlL0xvY2FsRnJhbWVWaWV3LmNwcCAgICAgICAgfCAyNiArKystLQogU291cmNl
L1dlYkNvcmUvcGFnZS9Mb2NhbEZyYW1lVmlldy5oICAgICAgICAgIHwgIDcgKy0KIFNvdXJjZS9X
ZWJDb3JlL3BhZ2UvUmVtb3RlRnJhbWVWaWV3LmNwcCAgICAgICB8ICAyICstCiBTb3VyY2UvV2Vi
Q29yZS9wYWdlL1JlbW90ZUZyYW1lVmlldy5oICAgICAgICAgfCAgMiArLQogU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vU2Nyb2xsVmlldy5jcHAgICAgICAgIHwgIDcgKy0KIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1Njcm9sbFZpZXcuaCAgICAgICAgICB8ICA2ICstCiBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9TY3JvbGxiYXIuY3BwICAgICAgICAgfCAgMiArLQogU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vU2Nyb2xsYmFyLmggICAgICAgICAgIHwgIDIgKy0KIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL1dpZGdldC5jcHAgICAgICAgICAgICB8ICAyICstCiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9XaWRnZXQuaCAgICAgICAgICAgICAgfCAgNCArLQogLi4uL3BsYXRmb3JtL2dyYXBoaWNzL0dy
YXBoaWNzQ29udGV4dC5oICAgICAgIHwgIDEgKwogLi4uL3BsYXRmb3JtL2dyYXBoaWNzL051bGxH
cmFwaGljc0NvbnRleHQuaCAgIHwgIDQgKy0KIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9X
aWRnZXRHdGsuY3BwICAgICB8ICA0ICstCiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2lk
Z2V0SU9TLm1tICAgICAgfCAgMiArLQogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dpZGdl
dE1hYy5tbSAgICAgIHwgIDIgKy0KIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9XaWRnZXRX
aW4uY3BwICAgICB8ICA0ICstCiAuLi4vcmVuZGVyaW5nL0FjY2Vzc2liaWxpdHlQYWludENvbnRl
eHQuY3BwICAgfCA0MiArKysrKysrKwogLi4uL3JlbmRlcmluZy9BY2Nlc3NpYmlsaXR5UGFpbnRD
b250ZXh0LmggICAgIHwgNjkgKysrKysrKysrKysrKwogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L0V2ZW50UmVnaW9uLmNwcCAgICAgIHwgNDMgKy0tLS0tLS0KIFNvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9FdmVudFJlZ2lvbi5oICAgICAgICB8IDU4ICsrLS0tLS0tLS0tCiAuLi4vcmVuZGVyaW5n
L0xlZ2FjeUlubGluZUVsZW1lbnRCb3guY3BwICAgICAgfCAgMiArLQogLi4uL1dlYkNvcmUvcmVu
ZGVyaW5nL0xlZ2FjeUlubGluZUZsb3dCb3guY3BwIHwgIDIgKy0KIFNvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9QYWludENvbnRleHQuY3BwICAgICB8IDc0ICsrKysrKysrKysrKysrCiBTb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUGFpbnRDb250ZXh0LmggICAgICAgfCA5NSArKysrKysrKysrKysr
KysrKysKIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9QYWludEluZm8uaCAgICAgICAgICB8ICA5
ICstCiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUGFpbnRQaGFzZS5oICAgICAgICAgfCAgMSAr
CiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwICAgICAgfCAxNSArLS0K
IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3BwICAgICAgICB8ICA4ICstCiBT
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5jcHAgICAgfCAgMiArLQogU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcCAgICAgIHwgOTggKysrKysrKysr
KystLS0tLS0tLQogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmggICAgICAg
IHwgMTEgKystCiAuLi4vV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcCAg
fCAxNiArLS0KIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuaCB8
ICA0ICstCiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdE1hcmtlci5jcHAgfCAg
OCArLQogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJlcGxhY2VkLmNwcCAgIHwgMTAg
Ky0KIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTY3JvbGxiYXIuY3BwICB8ICAyICst
CiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU2Nyb2xsYmFyLmggICAgfCAgMiArLQog
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcldpZGdldC5jcHAgICAgIHwgMTIgKy0tCiBT
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvVGV4dEJveFBhaW50ZXIuY3BwICAgfCAgNCArLQogLi4u
L1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAgIHwgIDIgKy0KIFNvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuaCB8ICAyICstCiA0NyBmaWxl
cyBjaGFuZ2VkLCA0OTAgaW5zZXJ0aW9ucygrKSwgMjA2IGRlbGV0aW9ucygtKQogY3JlYXRlIG1v
ZGUgMTAwNjQ0IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9BY2Nlc3NpYmlsaXR5UGFpbnRDb250
ZXh0LmNwcAogY3JlYXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9BY2Nl
c3NpYmlsaXR5UGFpbnRDb250ZXh0LmgKIGNyZWF0ZSBtb2RlIDEwMDY0NCBTb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUGFpbnRDb250ZXh0LmNwcAogY3JlYXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9QYWludENvbnRleHQuaAoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL0hlYWRlcnMuY21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCmluZGV4IGI2
N2YyNDBiMTUyOC4uMTVhNGU0ZmFlNWY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9IZWFk
ZXJzLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKQEAgLTIwNTYsNiAr
MjA1Niw3IEBAIHNldChXZWJDb3JlX1BSSVZBVEVfRlJBTUVXT1JLX0hFQURFUlMKICAgICBwbHVn
aW5zL1BsdWdpbkluZm9Qcm92aWRlci5oCiAgICAgcGx1Z2lucy9QbHVnaW5WaWV3QmFzZS5oCiAK
KyAgICByZW5kZXJpbmcvQWNjZXNzaWJpbGl0eVBhaW50Q29udGV4dC5oCiAgICAgcmVuZGVyaW5n
L0JyZWFrTGluZXMuaAogICAgIHJlbmRlcmluZy9DYXJldFJlY3RDb21wdXRhdGlvbi5oCiAgICAg
cmVuZGVyaW5nL0NTU0ZpbHRlci5oCkBAIC0yMDgxLDYgKzIwODIsNyBAQCBzZXQoV2ViQ29yZV9Q
UklWQVRFX0ZSQU1FV09SS19IRUFERVJTCiAgICAgcmVuZGVyaW5nL09yZGVySXRlcmF0b3IuaAog
ICAgIHJlbmRlcmluZy9PdmVybGFwVGVzdFJlcXVlc3RDbGllbnQuaAogICAgIHJlbmRlcmluZy9Q
YWdpbmF0aW9uLmgKKyAgICByZW5kZXJpbmcvUGFpbnRDb250ZXh0LmgKICAgICByZW5kZXJpbmcv
UGFpbnRGcmVxdWVuY3lUcmFja2VyLmgKICAgICByZW5kZXJpbmcvUGFpbnRJbmZvLmgKICAgICBy
ZW5kZXJpbmcvUGFpbnRQaGFzZS5oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2Vz
LnR4dCBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CmluZGV4IDgzYWM3ZWEzYzIzMy4uYzI5
ZGQ2ODBjMzFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dApAQCAtMjQzNCw2ICsyNDM0LDcgQEAgcGx1Z2lucy9E
T01QbHVnaW4uY3BwCiBwbHVnaW5zL0RPTVBsdWdpbkFycmF5LmNwcAogcGx1Z2lucy9QbHVnaW5E
YXRhLmNwcAogcGx1Z2lucy9QbHVnaW5JbmZvUHJvdmlkZXIuY3BwCityZW5kZXJpbmcvQWNjZXNz
aWJpbGl0eVBhaW50Q29udGV4dC5jcHAKIHJlbmRlcmluZy9BdXRvVGFibGVMYXlvdXQuY3BwCiBy
ZW5kZXJpbmcvQmFja2dyb3VuZFBhaW50ZXIuY3BwCiByZW5kZXJpbmcvQmlkaVJ1bi5jcHAKQEAg
LTI0NzYsNiArMjQ3Nyw3IEBAIHJlbmRlcmluZy9MZWdhY3lSb290SW5saW5lQm94LmNwcAogcmVu
ZGVyaW5nL0xlZ2FjeUlubGluZVRleHRCb3guY3BwCiByZW5kZXJpbmcvTWFya2VkVGV4dC5jcHAK
IHJlbmRlcmluZy9PcmRlckl0ZXJhdG9yLmNwcAorcmVuZGVyaW5nL1BhaW50Q29udGV4dC5jcHAK
IHJlbmRlcmluZy9QYXRoT3BlcmF0aW9uLmNwcAogcmVuZGVyaW5nL1BvaW50ZXJFdmVudHNIaXRS
dWxlcy5jcHAKIHJlbmRlcmluZy9SZWZlcmVuY2VkU1ZHUmVzb3VyY2VzLmNwcApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDliNzg5
YTYxODFlYy4uOTI4N2QwMWUzNDFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0zLDcgKzMsNyBAQAogCWFyY2hpdmVWZXJzaW9u
ID0gMTsKIAljbGFzc2VzID0gewogCX07Ci0Jb2JqZWN0VmVyc2lvbiA9IDUxOworCW9iamVjdFZl
cnNpb24gPSA1NDsKIAlvYmplY3RzID0gewogCiAvKiBCZWdpbiBQQlhBZ2dyZWdhdGVUYXJnZXQg
c2VjdGlvbiAqLwpAQCAtMTU1Nyw2ICsxNTU3LDggQEAKIAkJNDdDNEQ1N0QyNjUwOEJDQjAwQzdB
QjFGIC8qIElubGluZUZvcm1hdHRpbmdHZW9tZXRyeS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDdDNEQ1N0MyNjUwOEJDQTAwQzdBQjFGIC8qIElubGlu
ZUZvcm1hdHRpbmdHZW9tZXRyeS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCTQ3Rjk0N0RCMjY1MDJGMkYwMDg3OTY4QyAvKiBCbG9ja0Zvcm1hdHRp
bmdRdWlya3MuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDQ3Rjk0N0RBMjY1MDJGMkYwMDg3OTY4QyAvKiBCbG9ja0Zvcm1hdHRpbmdRdWlya3MuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0N0ZBOTcwMDI2
NTA5ODJCMDA4NDE0MTYgLyogVGFibGVGb3JtYXR0aW5nR2VvbWV0cnkuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ3RkE5NkZGMjY1MDk4MkEwMDg0MTQx
NiAvKiBUYWJsZUZvcm1hdHRpbmdHZW9tZXRyeS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CisJCTQ4MjI5NzBFMjlDOEVCQzAwMDMzQTEyNiAvKiBQYWlu
dENvbnRleHQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDQ4MjI5NzBDMjlDOEVCQzAwMDMzQTEyNiAvKiBQYWludENvbnRleHQuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk0OEI1QkYzNzI5Q0E2OTE3MDBG
RUJFM0IgLyogQWNjZXNzaWJpbGl0eVBhaW50Q29udGV4dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDhCNUJGMzUyOUNBNjkxNzAwRkVCRTNCIC8qIEFj
Y2Vzc2liaWxpdHlQYWludENvbnRleHQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQk0OTNFNUUwOTEyRDY0MjA1MDAwMjAwODEgLyogUGxhdGZvcm1D
QUxheWVyQ2xpZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA0OTNFNUUwODEyRDY0MjA1MDAwMjAwODEgLyogUGxhdGZvcm1DQUxheWVyQ2xpZW50Lmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDk0NUJG
RDQxM0NGODA5MDAwQ0MzQjM4IC8qIFRyYW5zZm9ybVN0YXRlLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0OTQ1QkZEMjEzQ0Y4MDkwMDBDQzNCMzggLyog
VHJhbnNmb3JtU3RhdGUuaCAqLzsgfTsKIAkJNDk0ODRGQzIxMDJDRjIzQzAwMTg3REQzIC8qIENh
bnZhc0dyYWRpZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA0OTQ4NEZCNDEwMkNGMjNDMDAxODdERDMgLyogQ2FudmFzR3JhZGllbnQuaCAqLzsgfTsK
QEAgLTEwMDgwLDYgKzEwMDgyLDEwIEBACiAJCTQ3QzRENTdDMjY1MDhCQ0EwMEM3QUIxRiAvKiBJ
bmxpbmVGb3JtYXR0aW5nR2VvbWV0cnkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gSW5saW5lRm9ybWF0dGluZ0dlb21ldHJ5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTQ3Rjk0N0RBMjY1MDJGMkYwMDg3OTY4QyAvKiBCbG9ja0Zvcm1hdHRpbmdRdWlya3MuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQmxvY2tGb3JtYXR0aW5nUXVpcmtzLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ3RkE5NkZGMjY1MDk4MkEwMDg0MTQxNiAv
KiBUYWJsZUZvcm1hdHRpbmdHZW9tZXRyeS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBUYWJsZUZvcm1hdHRpbmdHZW9tZXRyeS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQk0ODIyOTcwQjI5QzhFQkMwMDAzM0ExMjYgLyogUGFpbnRDb250ZXh0LmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFBhaW50Q29udGV4dC5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTQ4MjI5NzBDMjlDOEVCQzAwMDMzQTEyNiAvKiBQYWludENv
bnRleHQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUGFpbnRDb250ZXh0Lmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQ4QjVCRjM1MjlDQTY5MTcwMEZFQkUzQiAv
KiBBY2Nlc3NpYmlsaXR5UGFpbnRDb250ZXh0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IEFjY2Vzc2liaWxpdHlQYWludENvbnRleHQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJNDhCNUJGMzYyOUNBNjkxNzAwRkVCRTNCIC8qIEFjY2Vzc2liaWxpdHlQYWludENv
bnRleHQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQWNjZXNzaWJpbGl0eVBhaW50Q29udGV4dC5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ5M0U1RTA4MTJENjQyMDUwMDAyMDA4
MSAvKiBQbGF0Zm9ybUNBTGF5ZXJDbGllbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gUGxhdGZvcm1DQUxheWVyQ2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTQ5NDVCRkQxMTNDRjgwOTAwMENDM0IzOCAvKiBUcmFuc2Zvcm1TdGF0ZS5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBUcmFuc2Zvcm1TdGF0ZS5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ5NDVCRkQyMTNDRjgwOTAwMENDM0IzOCAvKiBUcmFu
c2Zvcm1TdGF0ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBUcmFuc2Zvcm1T
dGF0ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMzQwOTEsNiArMzQwOTcsOCBA
QAogCQkJCUJDOEM4RkFBMEREQ0QyRjIwMEI1OTJGNCAvKiBzdHlsZSAqLywKIAkJCQkwODhDMkY3
NDEyMzkwMDgwMDAzRDY1Q0UgLyogc3ZnICovLAogCQkJCUU0N0MzOTFFMUZFNkUwOEMwMEJCQkM2
QiAvKiB1cGRhdGluZyAqLywKKwkJCQk0OEI1QkYzNjI5Q0E2OTE3MDBGRUJFM0IgLyogQWNjZXNz
aWJpbGl0eVBhaW50Q29udGV4dC5jcHAgKi8sCisJCQkJNDhCNUJGMzUyOUNBNjkxNzAwRkVCRTNC
IC8qIEFjY2Vzc2liaWxpdHlQYWludENvbnRleHQuaCAqLywKIAkJCQkxQTMzQUUzRjI4RjlGMjkw
MDA5ODA0QjQgLyogQXR0YWNobWVudExheW91dC5oICovLAogCQkJCTFBMzNBRTQwMjhGOUY0Nzgw
MDk4MDRCNCAvKiBBdHRhY2htZW50TGF5b3V0Lm1tICovLAogCQkJCUE4Q0ZGMDRCMEExNTRGMDkw
MDBBNDIzNCAvKiBBdXRvVGFibGVMYXlvdXQuY3BwICovLApAQCAtMzQxODYsNiArMzQxOTQsOCBA
QAogCQkJCUNERTdGQzQzMTgxOTA0QjEwMDJCQkI3NyAvKiBPcmRlckl0ZXJhdG9yLmggKi8sCiAJ
CQkJMzc3NEFCQTMwRkEyMUVCNDAwQUQ3REU5IC8qIE92ZXJsYXBUZXN0UmVxdWVzdENsaWVudC5o
ICovLAogCQkJCTkzNzdBQjlGMTVERUZFRUYwMDMxRkQwNCAvKiBQYWdpbmF0aW9uLmggKi8sCisJ
CQkJNDgyMjk3MEIyOUM4RUJDMDAwMzNBMTI2IC8qIFBhaW50Q29udGV4dC5jcHAgKi8sCisJCQkJ
NDgyMjk3MEMyOUM4RUJDMDAwMzNBMTI2IC8qIFBhaW50Q29udGV4dC5oICovLAogCQkJCTU1RUM5
NTk3MjA2OUM5MkQwMDdERDBBOSAvKiBQYWludEZyZXF1ZW5jeVRyYWNrZXIuaCAqLywKIAkJCQkw
ODg1MDY3RDExREEwNDVCMDAxODJCOTggLyogUGFpbnRJbmZvLmggKi8sCiAJCQkJMDg4NTA2N0Ux
MURBMDQ1QjAwMTgyQjk4IC8qIFBhaW50UGhhc2UuaCAqLywKQEAgLTM1NTg1LDYgKzM1NTk1LDcg
QEAKIAkJCQkyOUFDQjIxMjE0M0U3MTI4MDA2QkNBNUYgLyogQWNjZXNzaWJpbGl0eU1vY2tPYmpl
Y3QuaCBpbiBIZWFkZXJzICovLAogCQkJCTI5QTgxMjM2MEZCQjlDMUQwMDUxMDI5MyAvKiBBY2Nl
c3NpYmlsaXR5T2JqZWN0LmggaW4gSGVhZGVycyAqLywKIAkJCQkyOTM2QkY1QzIxRDY5RTRCMDA0
QThGQzkgLyogQWNjZXNzaWJpbGl0eU9iamVjdEludGVyZmFjZS5oIGluIEhlYWRlcnMgKi8sCisJ
CQkJNDhCNUJGMzcyOUNBNjkxNzAwRkVCRTNCIC8qIEFjY2Vzc2liaWxpdHlQYWludENvbnRleHQu
aCBpbiBIZWFkZXJzICovLAogCQkJCUE0MDlDOTg1MTE2RDBEREQwMDcxOTdCRCAvKiBBY2Nlc3Np
YmlsaXR5UHJvZ3Jlc3NJbmRpY2F0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCTI5QTgxMjM5MEZC
QjlDMUQwMDUxMDI5MyAvKiBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmggaW4gSGVhZGVycyAq
LywKIAkJCQk5M0M0RjZFQjExMDhGOUE1MDA5OUQwREIgLyogQWNjZXNzaWJpbGl0eVNjcm9sbGJh
ci5oIGluIEhlYWRlcnMgKi8sCkBAIC0zODg4MSw2ICszODg5Miw3IEBACiAJCQkJMzcxRTY1Q0Mx
MzY2MUVEQzAwQkVFREIwIC8qIFBhZ2VTZXJpYWxpemVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlF
MTI4NEFFMTEwNDQ3RDQ1MDBFQUVCNTIgLyogUGFnZVRyYW5zaXRpb25FdmVudC5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJOTM3N0FCQTAxNURFRkVFRjAwMzFGRDA0IC8qIFBhZ2luYXRpb24uaCBpbiBI
ZWFkZXJzICovLAorCQkJCTQ4MjI5NzBFMjlDOEVCQzAwMDMzQTEyNiAvKiBQYWludENvbnRleHQu
aCBpbiBIZWFkZXJzICovLAogCQkJCTU1RUM5NTk5MjA2QUE3QTAwMDdERDBBOSAvKiBQYWludEZy
ZXF1ZW5jeVRyYWNrZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTA4ODUwNjdGMTFEQTA0NUIwMDE4
MkI5OCAvKiBQYWludEluZm8uaCBpbiBIZWFkZXJzICovLAogCQkJCTA4ODUwNjgwMTFEQTA0NUIw
MDE4MkI5OCAvKiBQYWludFBoYXNlLmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQu
Y3BwCmluZGV4IDBhYzc1NGNlYWYzZi4uN2FhODM5NWQwOWI4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVu
dC5jcHAKQEAgLTQ3NDYsNiArNDc0NiwxNCBAQCB2b2lkIERvY3VtZW50Ojp1cGRhdGVFdmVudFJl
Z2lvbnMoKQogICAgIH0KIH0KIAordm9pZCBEb2N1bWVudDo6dXBkYXRlQWNjZXNzaWJpbGl0eU9i
amVjdFJlY3RzKCkKK3sKKyNpZiBFTkFCTEUoQUNDRVNTSUJJTElUWV9JU09MQVRFRF9UUkVFKQor
ICAgIGlmIChhdXRvKiB2aWV3ID0gcmVuZGVyVmlldygpKQorICAgICAgICB2aWV3LT5mcmFtZVZp
ZXcoKS51cGRhdGVBY2Nlc3NpYmlsaXR5T2JqZWN0UmVjdHMoKTsKKyNlbmRpZgorfQorCiB2b2lk
IERvY3VtZW50OjppbnZhbGlkYXRlRXZlbnRSZWdpb25zRm9yRnJhbWUoSFRNTEZyYW1lT3duZXJF
bGVtZW50JiBlbGVtZW50KQogewogICAgIGF1dG8qIHJlbmRlcmVyID0gZWxlbWVudC5yZW5kZXJl
cigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmggYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vRG9jdW1lbnQuaAppbmRleCA5ODYzMDkxYmYxMzYuLjg4ZmM0ZjQwOWZmZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvZG9tL0RvY3VtZW50LmgKQEAgLTEyMjgsNiArMTIyOCw3IEBAIHB1YmxpYzoKIAogICAg
IFdFQkNPUkVfRVhQT1JUIFN0cmluZyBkaXNwbGF5U3RyaW5nTW9kaWZpZWRCeUVuY29kaW5nKGNv
bnN0IFN0cmluZyYpIGNvbnN0OwogCisgICAgdm9pZCB1cGRhdGVBY2Nlc3NpYmlsaXR5T2JqZWN0
UmVjdHMoKTsKICAgICB2b2lkIHVwZGF0ZUV2ZW50UmVnaW9ucygpOwogCiAgICAgdm9pZCBpbnZh
bGlkYXRlUmVuZGVyaW5nRGVwZW5kZW50UmVnaW9ucygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL2lubGluZS9MYXlvdXRJbnRlZ3JhdGlvbkxpbmVMYXlv
dXQuY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL2lubGluZS9MYXlvdXRJ
bnRlZ3JhdGlvbkxpbmVMYXlvdXQuY3BwCmluZGV4IGI0OWQzOGQ1YTJlZC4uOTViMTZmNjlmYmVi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vaW5saW5lL0xh
eW91dEludGVncmF0aW9uTGluZUxheW91dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0
L2ludGVncmF0aW9uL2lubGluZS9MYXlvdXRJbnRlZ3JhdGlvbkxpbmVMYXlvdXQuY3BwCkBAIC0x
MTM1LDYgKzExMzUsNyBAQCB2b2lkIExpbmVMYXlvdXQ6OnBhaW50KFBhaW50SW5mbyYgcGFpbnRJ
bmZvLCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbnRPZmZzZXQsIGNvbgogCiAgICAgYXV0byBzaG91
bGRQYWludEZvclBoYXNlID0gWyZdIHsKICAgICAgICAgc3dpdGNoIChwYWludEluZm8ucGhhc2Up
IHsKKyAgICAgICAgY2FzZSBQYWludFBoYXNlOjpBY2Nlc3NpYmlsaXR5OgogICAgICAgICBjYXNl
IFBhaW50UGhhc2U6OkZvcmVncm91bmQ6CiAgICAgICAgIGNhc2UgUGFpbnRQaGFzZTo6RXZlbnRS
ZWdpb246CiAgICAgICAgIGNhc2UgUGFpbnRQaGFzZTo6VGV4dENsaXA6CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL0xvY2FsRnJhbWVWaWV3LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvTG9jYWxGcmFtZVZpZXcuY3BwCmluZGV4IDFkOTI3ZWJjZWZhYS4uMjljMzkyYjFmNWZhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0xvY2FsRnJhbWVWaWV3LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL0xvY2FsRnJhbWVWaWV3LmNwcApAQCAtNDY3Niw3ICs0Njc2LDE4
IEBAIHZvaWQgTG9jYWxGcmFtZVZpZXc6OmludmFsaWRhdGVJbWFnZXNXaXRoQXN5bmNEZWNvZGVz
KCkKICAgICB0cmF2ZXJzZUZvclBhaW50SW52YWxpZGF0aW9uKE51bGxHcmFwaGljc0NvbnRleHQ6
OlBhaW50SW52YWxpZGF0aW9uUmVhc29uczo6SW52YWxpZGF0aW5nSW1hZ2VzV2l0aEFzeW5jRGVj
b2Rlcyk7CiB9CiAKLXZvaWQgTG9jYWxGcmFtZVZpZXc6OnRyYXZlcnNlRm9yUGFpbnRJbnZhbGlk
YXRpb24oTnVsbEdyYXBoaWNzQ29udGV4dDo6UGFpbnRJbnZhbGlkYXRpb25SZWFzb25zIHBhaW50
SW52YWxpZGF0aW9uUmVhc29ucykKK3ZvaWQgTG9jYWxGcmFtZVZpZXc6OnVwZGF0ZUFjY2Vzc2li
aWxpdHlPYmplY3RSZWN0cygpCit7CisjaWYgRU5BQkxFKEFDQ0VTU0lCSUxJVFlfSVNPTEFURURf
VFJFRSkKKyAgICBpZiAoIUFYT2JqZWN0Q2FjaGU6OmFjY2Vzc2liaWxpdHlFbmFibGVkKCkgfHwg
IUFYT2JqZWN0Q2FjaGU6OmlzSXNvbGF0ZWRUcmVlRW5hYmxlZCgpKQorICAgICAgICByZXR1cm47
CisKKyAgICBBY2Nlc3NpYmlsaXR5UGFpbnRDb250ZXh0IGFjY2Vzc2liaWxpdHlQYWludENvbnRl
eHQ7CisgICAgdHJhdmVyc2VGb3JQYWludEludmFsaWRhdGlvbihOdWxsR3JhcGhpY3NDb250ZXh0
OjpQYWludEludmFsaWRhdGlvblJlYXNvbnM6OkludmFsaWRhdGluZ0FjY2Vzc2liaWxpdHlPYmpl
Y3RSZWN0cywgJmFjY2Vzc2liaWxpdHlQYWludENvbnRleHQpOworI2VuZGlmCit9CisKK3ZvaWQg
TG9jYWxGcmFtZVZpZXc6OnRyYXZlcnNlRm9yUGFpbnRJbnZhbGlkYXRpb24oTnVsbEdyYXBoaWNz
Q29udGV4dDo6UGFpbnRJbnZhbGlkYXRpb25SZWFzb25zIHBhaW50SW52YWxpZGF0aW9uUmVhc29u
cywgUGFpbnRDb250ZXh0KiBwYWludENvbnRleHQpCiB7CiAgICAgaWYgKG5lZWRzTGF5b3V0KCkp
CiAgICAgICAgIGxheW91dENvbnRleHQoKS5sYXlvdXQoKTsKQEAgLTQ2ODQsOSArNDY5NSw5IEBA
IHZvaWQgTG9jYWxGcmFtZVZpZXc6OnRyYXZlcnNlRm9yUGFpbnRJbnZhbGlkYXRpb24oTnVsbEdy
YXBoaWNzQ29udGV4dDo6UGFpbnRJbnZhCiAgICAgTnVsbEdyYXBoaWNzQ29udGV4dCBjb250ZXh0
KHBhaW50SW52YWxpZGF0aW9uUmVhc29ucyk7CiAgICAgaWYgKHBsYXRmb3JtV2lkZ2V0KCkpIHsK
ICAgICAgICAgLy8gRklYTUU6IGNvbnN1bHQgcGFpbnRzRW50aXJlQ29udGVudHMoKS4KLSAgICAg
ICAgcGFpbnRDb250ZW50cyhjb250ZXh0LCB2aXNpYmxlQ29udGVudFJlY3QoTGVnYWN5SU9TRG9j
dW1lbnRWaXNpYmxlUmVjdCkpOworICAgICAgICBwYWludENvbnRlbnRzKGNvbnRleHQsIHZpc2li
bGVDb250ZW50UmVjdChMZWdhY3lJT1NEb2N1bWVudFZpc2libGVSZWN0KSwgU2VjdXJpdHlPcmln
aW5QYWludFBvbGljeTo6QW55T3JpZ2luLCBwYWludENvbnRleHQpOwogICAgIH0gZWxzZQotICAg
ICAgICBwYWludChjb250ZXh0LCBmcmFtZVJlY3QoKSk7CisgICAgICAgIHBhaW50KGNvbnRleHQs
IGZyYW1lUmVjdCgpLCBTZWN1cml0eU9yaWdpblBhaW50UG9saWN5OjpBbnlPcmlnaW4sIHBhaW50
Q29udGV4dCk7CiB9CiAKIGJvb2wgTG9jYWxGcmFtZVZpZXc6Ondhc1Njcm9sbGVkQnlVc2VyKCkg
Y29uc3QKQEAgLTQ3MzgsNiArNDc0OSw5IEBAIHZvaWQgTG9jYWxGcmFtZVZpZXc6OndpbGxQYWlu
dENvbnRlbnRzKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgSW50UmVjdCYsCiAgICAg
ICAgIG1fcGFpbnRCZWhhdmlvci5hZGQoUGFpbnRCZWhhdmlvcjo6U25hcHNob3R0aW5nKTsKICAg
ICB9CiAKKyAgICBpZiAoY29udGV4dC5pbnZhbGlkYXRpbmdBY2Nlc3NpYmlsaXR5T2JqZWN0UmVj
dHMoKSkKKyAgICAgICAgbV9wYWludEJlaGF2aW9yLmFkZChQYWludEJlaGF2aW9yOjpGbGF0dGVu
Q29tcG9zaXRpbmdMYXllcnMpOworCiAgICAgcGFpbnRpbmdTdGF0ZS5pc0ZsYXR0ZW5pbmdQYWlu
dE9mUm9vdEZyYW1lID0gKG1fcGFpbnRCZWhhdmlvciAmIFBhaW50QmVoYXZpb3I6OkZsYXR0ZW5D
b21wb3NpdGluZ0xheWVycykgJiYgIW1fZnJhbWUtPm93bmVyRWxlbWVudCgpICYmICFjb250ZXh0
LmRldGVjdGluZ0NvbnRlbnRmdWxQYWludCgpOwogICAgIGlmIChwYWludGluZ1N0YXRlLmlzRmxh
dHRlbmluZ1BhaW50T2ZSb290RnJhbWUpCiAgICAgICAgIG5vdGlmeVdpZGdldHNJbkFsbEZyYW1l
cyhXaWxsUGFpbnRGbGF0dGVuZWQpOwpAQCAtNDc2Niw3ICs0NzgwLDcgQEAgdm9pZCBMb2NhbEZy
YW1lVmlldzo6ZGlkUGFpbnRDb250ZW50cyhHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0
IEludFJlY3QmIGQKICAgICB9CiB9CiAKLXZvaWQgTG9jYWxGcmFtZVZpZXc6OnBhaW50Q29udGVu
dHMoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBJbnRSZWN0JiBkaXJ0eVJlY3QsIFNl
Y3VyaXR5T3JpZ2luUGFpbnRQb2xpY3kgc2VjdXJpdHlPcmlnaW5QYWludFBvbGljeSwgRXZlbnRS
ZWdpb25Db250ZXh0KiBldmVudFJlZ2lvbkNvbnRleHQpCit2b2lkIExvY2FsRnJhbWVWaWV3Ojpw
YWludENvbnRlbnRzKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgSW50UmVjdCYgZGly
dHlSZWN0LCBTZWN1cml0eU9yaWdpblBhaW50UG9saWN5IHNlY3VyaXR5T3JpZ2luUGFpbnRQb2xp
Y3ksIFBhaW50Q29udGV4dCogcGFpbnRDb250ZXh0KQogewogI2lmbmRlZiBOREVCVUcKICAgICBi
b29sIGZpbGxXaXRoV2FybmluZ0NvbG9yOwpAQCAtNDgxNCw5ICs0ODI4LDkgQEAgdm9pZCBMb2Nh
bEZyYW1lVmlldzo6cGFpbnRDb250ZW50cyhHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0
IEludFJlY3QmIGRpcnQKIAogICAgIFJlbmRlck9iamVjdDo6U2V0TGF5b3V0TmVlZGVkRm9yYmlk
ZGVuU2NvcGUgZm9yYmlkU2V0TmVlZHNMYXlvdXQocm9vdExheWVyLT5yZW5kZXJlcigpKTsKIAot
ICAgIHJvb3RMYXllci0+cGFpbnQoY29udGV4dCwgZGlydHlSZWN0LCBMYXlvdXRTaXplKCksIG1f
cGFpbnRCZWhhdmlvciwgcmVuZGVyZXIsIHsgfSwgc2VjdXJpdHlPcmlnaW5QYWludFBvbGljeSA9
PSBTZWN1cml0eU9yaWdpblBhaW50UG9saWN5OjpBbnlPcmlnaW4gPyBSZW5kZXJMYXllcjo6U2Vj
dXJpdHlPcmlnaW5QYWludFBvbGljeTo6QW55T3JpZ2luIDogUmVuZGVyTGF5ZXI6OlNlY3VyaXR5
T3JpZ2luUGFpbnRQb2xpY3k6OkFjY2Vzc2libGVPcmlnaW5Pbmx5LCBldmVudFJlZ2lvbkNvbnRl
eHQpOworICAgIHJvb3RMYXllci0+cGFpbnQoY29udGV4dCwgZGlydHlSZWN0LCBMYXlvdXRTaXpl
KCksIG1fcGFpbnRCZWhhdmlvciwgcmVuZGVyZXIsIHsgfSwgc2VjdXJpdHlPcmlnaW5QYWludFBv
bGljeSA9PSBTZWN1cml0eU9yaWdpblBhaW50UG9saWN5OjpBbnlPcmlnaW4gPyBSZW5kZXJMYXll
cjo6U2VjdXJpdHlPcmlnaW5QYWludFBvbGljeTo6QW55T3JpZ2luIDogUmVuZGVyTGF5ZXI6OlNl
Y3VyaXR5T3JpZ2luUGFpbnRQb2xpY3k6OkFjY2Vzc2libGVPcmlnaW5Pbmx5LCBwYWludENvbnRl
eHQpOwogICAgIGlmIChhdXRvKiBzY3JvbGxhYmxlUm9vdExheWVyID0gcm9vdExheWVyLT5zY3Jv
bGxhYmxlQXJlYSgpKSB7Ci0gICAgICAgIGlmIChzY3JvbGxhYmxlUm9vdExheWVyLT5jb250YWlu
c0RpcnR5T3ZlcmxheVNjcm9sbGJhcnMoKSAmJiAhZXZlbnRSZWdpb25Db250ZXh0KQorICAgICAg
ICBpZiAoc2Nyb2xsYWJsZVJvb3RMYXllci0+Y29udGFpbnNEaXJ0eU92ZXJsYXlTY3JvbGxiYXJz
KCkgJiYgIXBhaW50Q29udGV4dCkKICAgICAgICAgICAgIHNjcm9sbGFibGVSb290TGF5ZXItPnBh
aW50T3ZlcmxheVNjcm9sbGJhcnMoY29udGV4dCwgZGlydHlSZWN0LCBtX3BhaW50QmVoYXZpb3Is
IHJlbmRlcmVyKTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTG9j
YWxGcmFtZVZpZXcuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTG9jYWxGcmFtZVZpZXcuaAppbmRl
eCBiODljODA3Njk5YjAuLjgxMmUxZmE3OTE2OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGFnZS9Mb2NhbEZyYW1lVmlldy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTG9jYWxGcmFt
ZVZpZXcuaApAQCAtNTMsMTMgKzUzLDEzIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIEFY
T2JqZWN0Q2FjaGU7CiBjbGFzcyBDb250YWluZXJOb2RlOwogY2xhc3MgRWxlbWVudDsKLWNsYXNz
IEV2ZW50UmVnaW9uQ29udGV4dDsKIGNsYXNzIEZsb2F0U2l6ZTsKIGNsYXNzIEZyYW1lOwogY2xh
c3MgR3JhcGhpY3NDb250ZXh0OwogY2xhc3MgSFRNTEZyYW1lT3duZXJFbGVtZW50OwogY2xhc3Mg
TG9jYWxGcmFtZTsKIGNsYXNzIFBhZ2U7CitjbGFzcyBQYWludENvbnRleHQ7CiBjbGFzcyBSZW5k
ZXJCb3g7CiBjbGFzcyBSZW5kZXJFbGVtZW50OwogY2xhc3MgUmVuZGVyRW1iZWRkZWRPYmplY3Q7
CkBAIC00MDYsNyArNDA2LDcgQEAgcHVibGljOgogICAgIHZvaWQgYWRkRW1iZWRkZWRPYmplY3RU
b1VwZGF0ZShSZW5kZXJFbWJlZGRlZE9iamVjdCYpOwogICAgIHZvaWQgcmVtb3ZlRW1iZWRkZWRP
YmplY3RUb1VwZGF0ZShSZW5kZXJFbWJlZGRlZE9iamVjdCYpOwogCi0gICAgV0VCQ09SRV9FWFBP
UlQgdm9pZCBwYWludENvbnRlbnRzKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEludFJlY3QmIGRp
cnR5UmVjdCwgU2VjdXJpdHlPcmlnaW5QYWludFBvbGljeSA9IFNlY3VyaXR5T3JpZ2luUGFpbnRQ
b2xpY3k6OkFueU9yaWdpbiwgRXZlbnRSZWdpb25Db250ZXh0KiA9IG51bGxwdHIpIGZpbmFsOwor
ICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcGFpbnRDb250ZW50cyhHcmFwaGljc0NvbnRleHQmLCBj
b25zdCBJbnRSZWN0JiBkaXJ0eVJlY3QsIFNlY3VyaXR5T3JpZ2luUGFpbnRQb2xpY3kgPSBTZWN1
cml0eU9yaWdpblBhaW50UG9saWN5OjpBbnlPcmlnaW4sIFBhaW50Q29udGV4dCogPSBudWxscHRy
KSBmaW5hbDsKIAogICAgIHN0cnVjdCBQYWludGluZ1N0YXRlIHsKICAgICAgICAgT3B0aW9uU2V0
PFBhaW50QmVoYXZpb3I+IHBhaW50QmVoYXZpb3I7CkBAIC03MTIsNiArNzEyLDcgQEAgcHVibGlj
OgogCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBpbnZhbGlkYXRlQ29udHJvbFRpbnRzKCk7CiAg
ICAgdm9pZCBpbnZhbGlkYXRlSW1hZ2VzV2l0aEFzeW5jRGVjb2RlcygpOworICAgIHZvaWQgdXBk
YXRlQWNjZXNzaWJpbGl0eU9iamVjdFJlY3RzKCk7CiAKICAgICB2b2lkIGludmFsaWRhdGVTY3Jv
bGxiYXJzRm9yQWxsU2Nyb2xsYWJsZUFyZWFzKCk7CiAKQEAgLTc0MCw3ICs3NDEsNyBAQCBwcml2
YXRlOgogICAgIGJvb2wgc2Nyb2xsQ29udGVudHNGYXN0UGF0aChjb25zdCBJbnRTaXplJiBzY3Jv
bGxEZWx0YSwgY29uc3QgSW50UmVjdCYgcmVjdFRvU2Nyb2xsLCBjb25zdCBJbnRSZWN0JiBjbGlw
UmVjdCkgZmluYWw7CiAgICAgdm9pZCBzY3JvbGxDb250ZW50c1Nsb3dQYXRoKGNvbnN0IEludFJl
Y3QmIHVwZGF0ZVJlY3QpIGZpbmFsOwogCi0gICAgdm9pZCB0cmF2ZXJzZUZvclBhaW50SW52YWxp
ZGF0aW9uKE51bGxHcmFwaGljc0NvbnRleHRQYWludEludmFsaWRhdGlvblJlYXNvbnMpOworICAg
IHZvaWQgdHJhdmVyc2VGb3JQYWludEludmFsaWRhdGlvbihOdWxsR3JhcGhpY3NDb250ZXh0UGFp
bnRJbnZhbGlkYXRpb25SZWFzb25zLCBQYWludENvbnRleHQqID0gbnVsbHB0cik7CiAgICAgdm9p
ZCByZXBhaW50U2xvd1JlcGFpbnRPYmplY3RzKCk7CiAKICAgICBib29sIGlzVmVydGljYWxEb2N1
bWVudCgpIGNvbnN0IGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9SZW1v
dGVGcmFtZVZpZXcuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9SZW1vdGVGcmFtZVZpZXcuY3Bw
CmluZGV4IGUwYTYxNGFmMWViMC4uMjZmZjlkZTEzYzE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL1JlbW90ZUZyYW1lVmlldy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9S
ZW1vdGVGcmFtZVZpZXcuY3BwCkBAIC05OSw3ICs5OSw3IEBAIEludFJlY3QgUmVtb3RlRnJhbWVW
aWV3Ojp3aW5kb3dDbGlwUmVjdCgpIGNvbnN0CiAgICAgcmV0dXJuIHsgfTsKIH0KIAotdm9pZCBS
ZW1vdGVGcmFtZVZpZXc6OnBhaW50Q29udGVudHMoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgSW50
UmVjdCYsIFNlY3VyaXR5T3JpZ2luUGFpbnRQb2xpY3ksIEV2ZW50UmVnaW9uQ29udGV4dCopCit2
b2lkIFJlbW90ZUZyYW1lVmlldzo6cGFpbnRDb250ZW50cyhHcmFwaGljc0NvbnRleHQmLCBjb25z
dCBJbnRSZWN0JiwgU2VjdXJpdHlPcmlnaW5QYWludFBvbGljeSwgUGFpbnRDb250ZXh0KikKIHsK
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9SZW1vdGVGcmFtZVZpZXcuaCBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvUmVtb3RlRnJhbWVWaWV3LmgKaW5kZXggM2YyZmU5ZjE2ZjA0
Li41MWEyYzBjMGVhMzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUmVtb3RlRnJh
bWVWaWV3LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9SZW1vdGVGcmFtZVZpZXcuaApAQCAt
NTIsNyArNTIsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgaW52YWxpZGF0ZVNjcm9sbGJhclJlY3Qo
U2Nyb2xsYmFyJiwgY29uc3QgSW50UmVjdCYpIGZpbmFsOwogICAgIEhvc3RXaW5kb3cqIGhvc3RX
aW5kb3coKSBjb25zdCBmaW5hbDsKICAgICBJbnRSZWN0IHdpbmRvd0NsaXBSZWN0KCkgY29uc3Qg
ZmluYWw7Ci0gICAgdm9pZCBwYWludENvbnRlbnRzKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IElu
dFJlY3QmIGRhbWFnZVJlY3QsIFNlY3VyaXR5T3JpZ2luUGFpbnRQb2xpY3ksIEV2ZW50UmVnaW9u
Q29udGV4dCopIGZpbmFsOworICAgIHZvaWQgcGFpbnRDb250ZW50cyhHcmFwaGljc0NvbnRleHQm
LCBjb25zdCBJbnRSZWN0JiBkYW1hZ2VSZWN0LCBTZWN1cml0eU9yaWdpblBhaW50UG9saWN5LCBQ
YWludENvbnRleHQqKSBmaW5hbDsKICAgICB2b2lkIGFkZGVkT3JSZW1vdmVkU2Nyb2xsYmFyKCkg
ZmluYWw7CiAgICAgdm9pZCBkZWxlZ2F0ZWRTY3JvbGxpbmdNb2RlRGlkQ2hhbmdlKCkgZmluYWw7
CiAgICAgdm9pZCB1cGRhdGVTY3JvbGxDb3JuZXIoKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbFZpZXcuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vU2Nyb2xsVmlldy5jcHAKaW5kZXggM2FmMmYxYmY3Yjc0Li5jYmY1ZmNmYTQyZWUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbFZpZXcuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbFZpZXcuY3BwCkBAIC0yNiw2ICsyNiw3IEBACiAjaW5j
bHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiU2Nyb2xsVmlldy5oIgogCisjaW5jbHVkZSAiQWNj
ZXNzaWJpbGl0eVBhaW50Q29udGV4dC5oIgogI2luY2x1ZGUgIkZsb2F0UXVhZC5oIgogI2luY2x1
ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgogI2luY2x1ZGUgIkdyYXBoaWNzTGF5ZXIuaCIKQEAgLTEy
NzYsMTQgKzEyNzcsMTQgQEAgdm9pZCBTY3JvbGxWaWV3OjpwYWludFBhblNjcm9sbEljb24oR3Jh
cGhpY3NDb250ZXh0JiBjb250ZXh0KQogICAgIGNvbnRleHQuZHJhd0ltYWdlKHBhblNjcm9sbElj
b24sIGljb25HQ1BvaW50KTsKIH0KIAotdm9pZCBTY3JvbGxWaWV3OjpwYWludChHcmFwaGljc0Nv
bnRleHQmIGNvbnRleHQsIGNvbnN0IEludFJlY3QmIHJlY3QsIFNlY3VyaXR5T3JpZ2luUGFpbnRQ
b2xpY3kgc2VjdXJpdHlPcmlnaW5QYWludFBvbGljeSwgRXZlbnRSZWdpb25Db250ZXh0KiBldmVu
dFJlZ2lvbkNvbnRleHQpCit2b2lkIFNjcm9sbFZpZXc6OnBhaW50KEdyYXBoaWNzQ29udGV4dCYg
Y29udGV4dCwgY29uc3QgSW50UmVjdCYgcmVjdCwgU2VjdXJpdHlPcmlnaW5QYWludFBvbGljeSBz
ZWN1cml0eU9yaWdpblBhaW50UG9saWN5LCBQYWludENvbnRleHQqIHBhaW50Q29udGV4dCkKIHsK
ICAgICBpZiAocGxhdGZvcm1XaWRnZXQoKSkgewogICAgICAgICBXaWRnZXQ6OnBhaW50KGNvbnRl
eHQsIHJlY3QpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgaWYgKGNvbnRleHQucGFp
bnRpbmdEaXNhYmxlZCgpICYmICFjb250ZXh0LnBlcmZvcm1pbmdQYWludEludmFsaWRhdGlvbigp
ICYmICFldmVudFJlZ2lvbkNvbnRleHQpCisgICAgaWYgKGNvbnRleHQucGFpbnRpbmdEaXNhYmxl
ZCgpICYmICFjb250ZXh0LnBlcmZvcm1pbmdQYWludEludmFsaWRhdGlvbigpICYmICFwYWludENv
bnRleHQpCiAgICAgICAgIHJldHVybjsKIAogICAgIEludFJlY3QgZG9jdW1lbnREaXJ0eVJlY3Qg
PSByZWN0OwpAQCAtMTMwNiw3ICsxMzA3LDcgQEAgdm9pZCBTY3JvbGxWaWV3OjpwYWludChHcmFw
aGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEludFJlY3QmIHJlY3QsIFNlY3VyaXR5T3IKICAg
ICAgICAgICAgIGNvbnRleHQuY2xpcCh2aXNpYmxlQ29udGVudFJlY3QoTGVnYWN5SU9TRG9jdW1l
bnRWaXNpYmxlUmVjdCkpOwogICAgICAgICB9CiAKLSAgICAgICAgcGFpbnRDb250ZW50cyhjb250
ZXh0LCBkb2N1bWVudERpcnR5UmVjdCwgc2VjdXJpdHlPcmlnaW5QYWludFBvbGljeSwgZXZlbnRS
ZWdpb25Db250ZXh0KTsKKyAgICAgICAgcGFpbnRDb250ZW50cyhjb250ZXh0LCBkb2N1bWVudERp
cnR5UmVjdCwgc2VjdXJpdHlPcmlnaW5QYWludFBvbGljeSwgcGFpbnRDb250ZXh0KTsKICAgICB9
CiAKICNpZiBIQVZFKFJVQkJFUl9CQU5ESU5HKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vU2Nyb2xsVmlldy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsVmll
dy5oCmluZGV4IGZhMTA3Y2Y5MTFjMy4uYWE5NjRlYzYxMDg2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxWaWV3LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vU2Nyb2xsVmlldy5oCkBAIC01NywxMCArNTcsMTAgQEAgT0JKQ19DTEFTUyBXQUtWaWV3Owog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIEV2ZW50UmVnaW9uQ29udGV4dDsKIGNsYXNz
IEZsb2F0UXVhZDsKIGNsYXNzIEhvc3RXaW5kb3c7CiBjbGFzcyBMZWdhY3lUaWxlQ2FjaGU7Citj
bGFzcyBQYWludENvbnRleHQ7CiBjbGFzcyBTY3JvbGxiYXI7CiAKIGVudW0gY2xhc3MgRGVsZWdh
dGVkU2Nyb2xsaW5nTW9kZSA6IHVpbnQ4X3QgewpAQCAtMzgxLDcgKzM4MSw3IEBAIHB1YmxpYzoK
ICAgICB9CiAKICAgICAvLyBXaWRnZXQgb3ZlcnJpZGUuIEhhbmRsZXMgcGFpbnRpbmcgb2YgdGhl
IGNvbnRlbnRzIG9mIHRoZSB2aWV3IGFzIHdlbGwgYXMgdGhlIHNjcm9sbGJhcnMuCi0gICAgV0VC
Q09SRV9FWFBPUlQgdm9pZCBwYWludChHcmFwaGljc0NvbnRleHQmLCBjb25zdCBJbnRSZWN0Jiwg
V2lkZ2V0OjpTZWN1cml0eU9yaWdpblBhaW50UG9saWN5ID0gU2VjdXJpdHlPcmlnaW5QYWludFBv
bGljeTo6QW55T3JpZ2luLCBFdmVudFJlZ2lvbkNvbnRleHQqID0gbnVsbHB0cikgZmluYWw7Cisg
ICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBwYWludChHcmFwaGljc0NvbnRleHQmLCBjb25zdCBJbnRS
ZWN0JiwgV2lkZ2V0OjpTZWN1cml0eU9yaWdpblBhaW50UG9saWN5ID0gU2VjdXJpdHlPcmlnaW5Q
YWludFBvbGljeTo6QW55T3JpZ2luLCBQYWludENvbnRleHQqID0gbnVsbHB0cikgZmluYWw7CiAg
ICAgdm9pZCBwYWludFNjcm9sbGJhcnMoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgSW50UmVjdCYp
OwogCiAgICAgLy8gV2lkZ2V0IG92ZXJyaWRlcyB0byBlbnN1cmUgdGhhdCBvdXIgY2hpbGRyZW4n
cyB2aXNpYmlsaXR5IHN0YXR1cyBpcyBrZXB0IHVwIHRvIGRhdGUgd2hlbiB3ZSBnZXQgc2hvd24g
YW5kIGhpZGRlbi4KQEAgLTQyMyw3ICs0MjMsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgU2Nyb2xsVmll
dygpOwogCiAgICAgdmlydHVhbCB2b2lkIHJlcGFpbnRDb250ZW50UmVjdGFuZ2xlKGNvbnN0IElu
dFJlY3QmKTsKLSAgICB2aXJ0dWFsIHZvaWQgcGFpbnRDb250ZW50cyhHcmFwaGljc0NvbnRleHQm
LCBjb25zdCBJbnRSZWN0JiBkYW1hZ2VSZWN0LCBTZWN1cml0eU9yaWdpblBhaW50UG9saWN5ID0g
U2VjdXJpdHlPcmlnaW5QYWludFBvbGljeTo6QW55T3JpZ2luLCBFdmVudFJlZ2lvbkNvbnRleHQq
ID0gbnVsbHB0cikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBwYWludENvbnRlbnRzKEdyYXBoaWNz
Q29udGV4dCYsIGNvbnN0IEludFJlY3QmIGRhbWFnZVJlY3QsIFNlY3VyaXR5T3JpZ2luUGFpbnRQ
b2xpY3kgPSBTZWN1cml0eU9yaWdpblBhaW50UG9saWN5OjpBbnlPcmlnaW4sIFBhaW50Q29udGV4
dCogPSBudWxscHRyKSA9IDA7CiAKICAgICB2aXJ0dWFsIHZvaWQgcGFpbnRPdmVyaGFuZ0FyZWFz
KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEludFJlY3QmIGhvcml6b250YWxPdmVyaGFuZ0FyZWEs
IGNvbnN0IEludFJlY3QmIHZlcnRpY2FsT3ZlcmhhbmdBcmVhLCBjb25zdCBJbnRSZWN0JiBkaXJ0
eVJlY3QpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxiYXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYmFyLmNwcAppbmRleCA2ZTNlZGMx
OWY3ZjguLjFiOTM5YmQ3YmNmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
U2Nyb2xsYmFyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxiYXIuY3Bw
CkBAIC0xNjEsNyArMTYxLDcgQEAgdm9pZCBTY3JvbGxiYXI6OnVwZGF0ZVRodW1iUHJvcG9ydGlv
bigpCiAgICAgdXBkYXRlVGh1bWIoKTsKIH0KIAotdm9pZCBTY3JvbGxiYXI6OnBhaW50KEdyYXBo
aWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgSW50UmVjdCYgZGFtYWdlUmVjdCwgV2lkZ2V0OjpT
ZWN1cml0eU9yaWdpblBhaW50UG9saWN5LCBFdmVudFJlZ2lvbkNvbnRleHQqKQordm9pZCBTY3Jv
bGxiYXI6OnBhaW50KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgSW50UmVjdCYgZGFt
YWdlUmVjdCwgV2lkZ2V0OjpTZWN1cml0eU9yaWdpblBhaW50UG9saWN5LCBQYWludENvbnRleHQq
KQogewogICAgIGlmIChjb250ZXh0LmludmFsaWRhdGluZ0NvbnRyb2xUaW50cygpICYmIHRoZW1l
KCkuc3VwcG9ydHNDb250cm9sVGludHMoKSkgewogICAgICAgICBpbnZhbGlkYXRlKCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxiYXIuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL1Njcm9sbGJhci5oCmluZGV4IGU3NGFkMzZhNWJkNi4uYzQ3YTk0YjMyY2M1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxiYXIuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxiYXIuaApAQCAtODUsNyArODUsNyBAQCBwdWJs
aWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRQcm9wb3J0aW9uKGludCB2aXNpYmxlU2l6
ZSwgaW50IHRvdGFsU2l6ZSk7CiAgICAgdm9pZCBzZXRQcmVzc2VkUG9zKGludCBwKSB7IG1fcHJl
c3NlZFBvcyA9IHA7IH0KIAotICAgIHZvaWQgcGFpbnQoR3JhcGhpY3NDb250ZXh0JiwgY29uc3Qg
SW50UmVjdCYgZGFtYWdlUmVjdCwgV2lkZ2V0OjpTZWN1cml0eU9yaWdpblBhaW50UG9saWN5ID0g
U2VjdXJpdHlPcmlnaW5QYWludFBvbGljeTo6QW55T3JpZ2luLCBFdmVudFJlZ2lvbkNvbnRleHQq
ID0gbnVsbHB0cikgb3ZlcnJpZGU7CisgICAgdm9pZCBwYWludChHcmFwaGljc0NvbnRleHQmLCBj
b25zdCBJbnRSZWN0JiBkYW1hZ2VSZWN0LCBXaWRnZXQ6OlNlY3VyaXR5T3JpZ2luUGFpbnRQb2xp
Y3kgPSBTZWN1cml0eU9yaWdpblBhaW50UG9saWN5OjpBbnlPcmlnaW4sIFBhaW50Q29udGV4dCog
PSBudWxscHRyKSBvdmVycmlkZTsKIAogICAgIGJvb2wgZW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJu
IG1fZW5hYmxlZDsgfQogICAgIHZpcnR1YWwgdm9pZCBzZXRFbmFibGVkKGJvb2wpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vV2lkZ2V0LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1dpZGdldC5jcHAKaW5kZXggZDlkOGJhNWQ3NjY4Li5jZTlkZjE4OTcyNTAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1dpZGdldC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vV2lkZ2V0LmNwcApAQCAtMjg4LDcgKzI4OCw3IEBAIHZvaWQgV2lk
Z2V0OjpzZXRGcmFtZVJlY3QoY29uc3QgSW50UmVjdCYgcmVjdCkKICAgICBub3RJbXBsZW1lbnRl
ZCgpOwogfQogCi12b2lkIFdpZGdldDo6cGFpbnQoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgSW50
UmVjdCYsIFNlY3VyaXR5T3JpZ2luUGFpbnRQb2xpY3ksIEV2ZW50UmVnaW9uQ29udGV4dCopCit2
b2lkIFdpZGdldDo6cGFpbnQoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgSW50UmVjdCYsIFNlY3Vy
aXR5T3JpZ2luUGFpbnRQb2xpY3ksIFBhaW50Q29udGV4dCopCiB7CiAgICAgbm90SW1wbGVtZW50
ZWQoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1dpZGdldC5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vV2lkZ2V0LmgKaW5kZXggODgzZjJjNzljNDFiLi5iNjY0
MzUwMmNlYTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1dpZGdldC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1dpZGdldC5oCkBAIC02MCw3ICs2MCw3IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQ3Vyc29yOwogY2xhc3MgRXZlbnQ7Ci1jbGFzcyBF
dmVudFJlZ2lvbkNvbnRleHQ7CitjbGFzcyBQYWludENvbnRleHQ7CiBjbGFzcyBGb250Q2FzY2Fk
ZTsKIGNsYXNzIEdyYXBoaWNzQ29udGV4dDsKIGNsYXNzIExvY2FsRnJhbWVWaWV3OwpAQCAtMTEw
LDcgKzExMCw3IEBAIHB1YmxpYzoKIAogICAgIGVudW0gY2xhc3MgU2VjdXJpdHlPcmlnaW5QYWlu
dFBvbGljeSB7IEFueU9yaWdpbiwgQWNjZXNzaWJsZU9yaWdpbk9ubHkgfTsKIAotICAgIFdFQkNP
UkVfRVhQT1JUIHZpcnR1YWwgdm9pZCBwYWludChHcmFwaGljc0NvbnRleHQmLCBjb25zdCBJbnRS
ZWN0JiwgU2VjdXJpdHlPcmlnaW5QYWludFBvbGljeSA9IFNlY3VyaXR5T3JpZ2luUGFpbnRQb2xp
Y3k6OkFueU9yaWdpbiwgRXZlbnRSZWdpb25Db250ZXh0KiA9IG51bGxwdHIpOworICAgIFdFQkNP
UkVfRVhQT1JUIHZpcnR1YWwgdm9pZCBwYWludChHcmFwaGljc0NvbnRleHQmLCBjb25zdCBJbnRS
ZWN0JiwgU2VjdXJpdHlPcmlnaW5QYWludFBvbGljeSA9IFNlY3VyaXR5T3JpZ2luUGFpbnRQb2xp
Y3k6OkFueU9yaWdpbiwgUGFpbnRDb250ZXh0KiA9IG51bGxwdHIpOwogICAgIHZvaWQgaW52YWxp
ZGF0ZSgpIHsgaW52YWxpZGF0ZVJlY3QoYm91bmRzUmVjdCgpKTsgfQogICAgIHZpcnR1YWwgdm9p
ZCBpbnZhbGlkYXRlUmVjdChjb25zdCBJbnRSZWN0JikgPSAwOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oCmluZGV4IDNhOTgwN2Yy
MzQwMC4uY2U5NmVjMWE4ZWJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9HcmFwaGljc0NvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9HcmFwaGljc0NvbnRleHQuaApAQCAtODQsNiArODQsNyBAQCBwdWJsaWM6CiAgICAg
dmlydHVhbCBib29sIHBlcmZvcm1pbmdQYWludEludmFsaWRhdGlvbigpIGNvbnN0IHsgcmV0dXJu
IGZhbHNlOyB9CiAgICAgdmlydHVhbCBib29sIGludmFsaWRhdGluZ0NvbnRyb2xUaW50cygpIGNv
bnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCBib29sIGludmFsaWRhdGluZ0ltYWdl
c1dpdGhBc3luY0RlY29kZXMoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwg
Ym9vbCBpbnZhbGlkYXRpbmdBY2Nlc3NpYmlsaXR5T2JqZWN0UmVjdHMoKSBjb25zdCB7IHJldHVy
biBmYWxzZTsgfQogICAgIHZpcnR1YWwgYm9vbCBkZXRlY3RpbmdDb250ZW50ZnVsUGFpbnQoKSBj
b25zdCB7IHJldHVybiBmYWxzZTsgfQogCiAgICAgLy8gQ29udGV4dCBTdGF0ZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTnVsbEdyYXBoaWNzQ29udGV4dC5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTnVsbEdyYXBoaWNzQ29udGV4dC5o
CmluZGV4IGVmMWI3OTI1YTcyOC4uODk2MjIxNzQ3YTFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9OdWxsR3JhcGhpY3NDb250ZXh0LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTnVsbEdyYXBoaWNzQ29udGV4dC5oCkBAIC0zMyw3
ICszMyw4IEBAIGVudW0gY2xhc3MgTnVsbEdyYXBoaWNzQ29udGV4dFBhaW50SW52YWxpZGF0aW9u
UmVhc29ucyA6IHVpbnQ4X3QgewogICAgIE5vbmUsCiAgICAgSW52YWxpZGF0aW5nQ29udHJvbFRp
bnRzLAogICAgIEludmFsaWRhdGluZ0ltYWdlc1dpdGhBc3luY0RlY29kZXMsCi0gICAgRGV0ZWN0
aW5nQ29udGVudGZ1bFBhaW50CisgICAgRGV0ZWN0aW5nQ29udGVudGZ1bFBhaW50LAorICAgIElu
dmFsaWRhdGluZ0FjY2Vzc2liaWxpdHlPYmplY3RSZWN0cwogfTsKIAogY2xhc3MgTnVsbEdyYXBo
aWNzQ29udGV4dCA6IHB1YmxpYyBHcmFwaGljc0NvbnRleHQgewpAQCAtNTYsNiArNTcsNyBAQCBw
cml2YXRlOgogICAgIGJvb2wgcGVyZm9ybWluZ1BhaW50SW52YWxpZGF0aW9uKCkgY29uc3QgZmlu
YWwgeyByZXR1cm4gbV9wYWludEludmFsaWRhdGlvblJlYXNvbnMgIT0gUGFpbnRJbnZhbGlkYXRp
b25SZWFzb25zOjpOb25lOyB9CiAgICAgYm9vbCBpbnZhbGlkYXRpbmdDb250cm9sVGludHMoKSBj
b25zdCBmaW5hbCB7IHJldHVybiBtX3BhaW50SW52YWxpZGF0aW9uUmVhc29ucyA9PSBQYWludElu
dmFsaWRhdGlvblJlYXNvbnM6OkludmFsaWRhdGluZ0NvbnRyb2xUaW50czsgfQogICAgIGJvb2wg
aW52YWxpZGF0aW5nSW1hZ2VzV2l0aEFzeW5jRGVjb2RlcygpIGNvbnN0IGZpbmFsIHsgcmV0dXJu
IG1fcGFpbnRJbnZhbGlkYXRpb25SZWFzb25zID09IFBhaW50SW52YWxpZGF0aW9uUmVhc29uczo6
SW52YWxpZGF0aW5nSW1hZ2VzV2l0aEFzeW5jRGVjb2RlczsgfQorICAgIGJvb2wgaW52YWxpZGF0
aW5nQWNjZXNzaWJpbGl0eU9iamVjdFJlY3RzKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9wYWlu
dEludmFsaWRhdGlvblJlYXNvbnMgPT0gUGFpbnRJbnZhbGlkYXRpb25SZWFzb25zOjpJbnZhbGlk
YXRpbmdBY2Nlc3NpYmlsaXR5T2JqZWN0UmVjdHM7IH0KICAgICBib29sIGRldGVjdGluZ0NvbnRl
bnRmdWxQYWludCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fcGFpbnRJbnZhbGlkYXRpb25SZWFz
b25zID09IFBhaW50SW52YWxpZGF0aW9uUmVhc29uczo6RGV0ZWN0aW5nQ29udGVudGZ1bFBhaW50
OyB9CiAKICAgICB2b2lkIGRpZFVwZGF0ZVN0YXRlKEdyYXBoaWNzQ29udGV4dFN0YXRlJikgZmlu
YWwgeyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvV2lkZ2V0R3Rr
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9XaWRnZXRHdGsuY3BwCmluZGV4IGJj
NmM5NDQ5ZmM5ZC4uMzRjNmQ0M2Y5MjM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ndGsvV2lkZ2V0R3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsv
V2lkZ2V0R3RrLmNwcApAQCAtMzUsNiArMzUsOCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
K2NsYXNzIFBhaW50Q29udGV4dDsKKwogV2lkZ2V0Ojp+V2lkZ2V0KCkKIHsKICAgICBBU1NFUlQo
IXBhcmVudCgpKTsKQEAgLTYwLDcgKzYyLDcgQEAgdm9pZCBXaWRnZXQ6OmhpZGUoKQogICAgIHNl
dFNlbGZWaXNpYmxlKGZhbHNlKTsKIH0KIAotdm9pZCBXaWRnZXQ6OnBhaW50KEdyYXBoaWNzQ29u
dGV4dCYsIGNvbnN0IEludFJlY3QmLCBTZWN1cml0eU9yaWdpblBhaW50UG9saWN5LCBFdmVudFJl
Z2lvbkNvbnRleHQqKQordm9pZCBXaWRnZXQ6OnBhaW50KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0
IEludFJlY3QmLCBTZWN1cml0eU9yaWdpblBhaW50UG9saWN5LCBQYWludENvbnRleHQqKQogewog
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2lkZ2V0SU9TLm1t
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dpZGdldElPUy5tbQppbmRleCBlOTY0OTRi
YzkxODkuLjkxODE2NDRjNjZmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
aW9zL1dpZGdldElPUy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2lkZ2V0
SU9TLm1tCkBAIC0xNDYsNyArMTQ2LDcgQEAgTlNWaWV3KiBXaWRnZXQ6OmdldE91dGVyVmlldygp
IGNvbnN0CiAgICAgcmV0dXJuIHZpZXc7CiB9CiAKLXZvaWQgV2lkZ2V0OjpwYWludChHcmFwaGlj
c0NvbnRleHQmIHAsIGNvbnN0IEludFJlY3QmIHIsIFNlY3VyaXR5T3JpZ2luUGFpbnRQb2xpY3ks
IEV2ZW50UmVnaW9uQ29udGV4dCopCit2b2lkIFdpZGdldDo6cGFpbnQoR3JhcGhpY3NDb250ZXh0
JiBwLCBjb25zdCBJbnRSZWN0JiByLCBTZWN1cml0eU9yaWdpblBhaW50UG9saWN5LCBQYWludENv
bnRleHQqKQogewogICAgIGlmIChwLnBhaW50aW5nRGlzYWJsZWQoKSkKICAgICAgICAgcmV0dXJu
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dpZGdldE1hYy5tbSBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XaWRnZXRNYWMubW0KaW5kZXggODJlN2ViMWYx
ODk5Li4xYzczNTE4YWM2ZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21h
Yy9XaWRnZXRNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dpZGdldE1h
Yy5tbQpAQCAtMTg2LDcgKzE4Niw3IEBAIE5TVmlldyAqV2lkZ2V0OjpnZXRPdXRlclZpZXcoKSBj
b25zdAogICAgIHJldHVybiB2aWV3OwogfQogCi12b2lkIFdpZGdldDo6cGFpbnQoR3JhcGhpY3ND
b250ZXh0JiBwLCBjb25zdCBJbnRSZWN0JiByLCBTZWN1cml0eU9yaWdpblBhaW50UG9saWN5LCBF
dmVudFJlZ2lvbkNvbnRleHQqKQordm9pZCBXaWRnZXQ6OnBhaW50KEdyYXBoaWNzQ29udGV4dCYg
cCwgY29uc3QgSW50UmVjdCYgciwgU2VjdXJpdHlPcmlnaW5QYWludFBvbGljeSwgUGFpbnRDb250
ZXh0KikKIHsKICAgICBpZiAocC5wYWludGluZ0Rpc2FibGVkKCkpCiAgICAgICAgIHJldHVybjsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9XaWRnZXRXaW4uY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1dpZGdldFdpbi5jcHAKaW5kZXggY2I1MmIxNzE3
YmU3Li5lZDU5NmEyMjllM2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dp
bi9XaWRnZXRXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9XaWRnZXRX
aW4uY3BwCkBAIC0zOSw2ICszOSw4IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3Mg
UGFpbnRDb250ZXh0OworCiBXaWRnZXQ6On5XaWRnZXQoKSAKIHsKICAgICBBU1NFUlQoIXBhcmVu
dCgpKTsKQEAgLTY3LDcgKzY5LDcgQEAgdm9pZCBXaWRnZXQ6OnNldEN1cnNvcihjb25zdCBDdXJz
b3ImIGN1cnNvcikKICAgICAgICAgdmlldy0+aG9zdFdpbmRvdygpLT5zZXRDdXJzb3IoY3Vyc29y
KTsKIH0KIAotdm9pZCBXaWRnZXQ6OnBhaW50KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEludFJl
Y3QmLCBTZWN1cml0eU9yaWdpblBhaW50UG9saWN5LCBFdmVudFJlZ2lvbkNvbnRleHQqKQordm9p
ZCBXaWRnZXQ6OnBhaW50KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEludFJlY3QmLCBTZWN1cml0
eU9yaWdpblBhaW50UG9saWN5LCBQYWludENvbnRleHQqKQogewogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvQWNjZXNzaWJpbGl0eVBhaW50Q29udGV4dC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvQWNjZXNzaWJpbGl0eVBhaW50Q29udGV4dC5jcHAKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi4yNWQxYjVhMjdjYTkKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvQWNjZXNzaWJpbGl0eVBhaW50
Q29udGV4dC5jcHAKQEAgLTAsMCArMSw0MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMyBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
KyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgor
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25m
aWcuaCIKKyNpbmNsdWRlICJBY2Nlc3NpYmlsaXR5UGFpbnRDb250ZXh0LmgiCisKKyNpbmNsdWRl
ICJSZW5kZXJCb3guaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitBY2Nlc3NpYmlsaXR5UGFp
bnRDb250ZXh0Ojp+QWNjZXNzaWJpbGl0eVBhaW50Q29udGV4dCgpID0gZGVmYXVsdDsKKwordm9p
ZCBBY2Nlc3NpYmlsaXR5UGFpbnRDb250ZXh0Ojp0YWtlQm91bmRzKGNvbnN0IFJlbmRlckJveCYg
cmVuZGVyQm94LCBGbG9hdFJlY3QgcGFpbnRSZWN0KQoreworICAgIC8vIEZJWE1FOiBVc2UgYHBh
aW50UmVjdGAgdG8gcXVldWUgYSBmcmFtZSB1cGRhdGUgZm9yIHRoZSBBWCBvYmplY3QgYXNzb2Np
YXRlZCB3aXRoIGByZW5kZXJCb3hgLgorICAgIFVOVVNFRF9QQVJBTShyZW5kZXJCb3gpOworICAg
IFVOVVNFRF9QQVJBTShwYWludFJlY3QpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvQWNjZXNzaWJpbGl0eVBhaW50Q29u
dGV4dC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0FjY2Vzc2liaWxpdHlQYWludENvbnRl
eHQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjRhYzliYmY4NzNl
YwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9BY2Nlc3NpYmls
aXR5UGFpbnRDb250ZXh0LmgKQEAgLTAsMCArMSw2OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAyMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEg
b25jZQorCisjaW5jbHVkZSAiRmxvYXRSZWN0LmgiCisjaW5jbHVkZSAiUGFpbnRDb250ZXh0Lmgi
CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgUmVuZGVyQm94OworCitjbGFzcyBBY2Nl
c3NpYmlsaXR5UGFpbnRDb250ZXh0IDogcHVibGljIFBhaW50Q29udGV4dCB7CitwdWJsaWM6Cisg
ICAgQWNjZXNzaWJpbGl0eVBhaW50Q29udGV4dCgpID0gZGVmYXVsdDsKKyAgICB2aXJ0dWFsIH5B
Y2Nlc3NpYmlsaXR5UGFpbnRDb250ZXh0KCk7CisKKyAgICBib29sIGlzQWNjZXNzaWJpbGl0eVBh
aW50Q29udGV4dCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KKworICAgIHZvaWQgdGFr
ZUJvdW5kcyhjb25zdCBSZW5kZXJCb3gmLCBGbG9hdFJlY3QgLyogcGFpbnRSZWN0ICovKTsKKwor
cHJpdmF0ZToKKyAgICAvLyBNYXBzIHRoZSBnaXZlbiByZWN0IHVzaW5nIHRoZSBjdXJyZW50IHRy
YW5zZm9ybSBhbmQgY2xpcCBzdGFjay4KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBSZWN0VD4KKyAg
ICBGbG9hdFJlY3QgbWFwUmVjdChSZWN0VCYmIHJlY3QpCisgICAgeworICAgICAgICBib29sIGhh
c1RyYW5zZm9ybSA9IG1fdHJhbnNmb3JtU3RhY2suc2l6ZSgpOworICAgICAgICBib29sIGhhc0Ns
aXAgPSBtX2NsaXBTdGFjay5zaXplKCk7CisgICAgICAgIGlmICghaGFzVHJhbnNmb3JtICYmICFo
YXNDbGlwKQorICAgICAgICAgICAgcmV0dXJuIHJlY3Q7CisKKyAgICAgICAgRmxvYXRSZWN0IG1h
cHBlZFJlY3QgPSByZWN0OworICAgICAgICBpZiAoaGFzVHJhbnNmb3JtKQorICAgICAgICAgICAg
bWFwcGVkUmVjdCA9IG1fdHJhbnNmb3JtU3RhY2subGFzdCgpLm1hcFJlY3QobWFwcGVkUmVjdCk7
CisgICAgICAgIGlmIChoYXNDbGlwKQorICAgICAgICAgICAgbWFwcGVkUmVjdC5pbnRlcnNlY3Qo
bV9jbGlwU3RhY2subGFzdCgpKTsKKworICAgICAgICByZXR1cm4gbWFwcGVkUmVjdDsKKyAgICB9
CisKK307IC8vIGNsYXNzIEFjY2Vzc2liaWxpdHlQYWludENvbnRleHQKKworfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQorCitTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0JFR0lOKFdlYkNvcmU6OkFjY2Vz
c2liaWxpdHlQYWludENvbnRleHQpCisgICAgc3RhdGljIGJvb2wgaXNUeXBlKGNvbnN0IFdlYkNv
cmU6OlBhaW50Q29udGV4dCYgcGFpbnRDb250ZXh0KSB7IHJldHVybiBwYWludENvbnRleHQuaXNB
Y2Nlc3NpYmlsaXR5UGFpbnRDb250ZXh0KCk7IH0KK1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNfRU5E
KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9FdmVudFJlZ2lvbi5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvRXZlbnRSZWdpb24uY3BwCmluZGV4IDkwNDRmMTU0
ZWFiYi4uN2E3YzdhOTY5YThmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
RXZlbnRSZWdpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9FdmVudFJlZ2lv
bi5jcHAKQEAgLTQzLDQ4ICs0Myw3IEBAIEV2ZW50UmVnaW9uQ29udGV4dDo6RXZlbnRSZWdpb25D
b250ZXh0KEV2ZW50UmVnaW9uJiBldmVudFJlZ2lvbikKIHsKIH0KIAotdm9pZCBFdmVudFJlZ2lv
bkNvbnRleHQ6OnB1c2hUcmFuc2Zvcm0oY29uc3QgQWZmaW5lVHJhbnNmb3JtJiB0cmFuc2Zvcm0p
Ci17Ci0gICAgaWYgKG1fdHJhbnNmb3JtU3RhY2suaXNFbXB0eSgpKQotICAgICAgICBtX3RyYW5z
Zm9ybVN0YWNrLmFwcGVuZCh0cmFuc2Zvcm0pOwotICAgIGVsc2UKLSAgICAgICAgbV90cmFuc2Zv
cm1TdGFjay5hcHBlbmQobV90cmFuc2Zvcm1TdGFjay5sYXN0KCkgKiB0cmFuc2Zvcm0pOwotfQot
Ci12b2lkIEV2ZW50UmVnaW9uQ29udGV4dDo6cG9wVHJhbnNmb3JtKCkKLXsKLSAgICBpZiAobV90
cmFuc2Zvcm1TdGFjay5pc0VtcHR5KCkpIHsKLSAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgbV90cmFuc2Zvcm1TdGFjay5yZW1vdmVMYXN0
KCk7Ci19Ci0KLXZvaWQgRXZlbnRSZWdpb25Db250ZXh0OjpwdXNoQ2xpcChjb25zdCBJbnRSZWN0
JiBjbGlwUmVjdCkKLXsKLSAgICBhdXRvIHRyYW5zZm9ybWVkQ2xpcCA9IG1fdHJhbnNmb3JtU3Rh
Y2suaXNFbXB0eSgpID8gY2xpcFJlY3QgOiBtX3RyYW5zZm9ybVN0YWNrLmxhc3QoKS5tYXBSZWN0
KGNsaXBSZWN0KTsKLQotICAgIGlmIChtX2NsaXBTdGFjay5pc0VtcHR5KCkpCi0gICAgICAgIG1f
Y2xpcFN0YWNrLmFwcGVuZCh0cmFuc2Zvcm1lZENsaXApOwotICAgIGVsc2UKLSAgICAgICAgbV9j
bGlwU3RhY2suYXBwZW5kKGludGVyc2VjdGlvbihtX2NsaXBTdGFjay5sYXN0KCksIHRyYW5zZm9y
bWVkQ2xpcCkpOwotfQotCi12b2lkIEV2ZW50UmVnaW9uQ29udGV4dDo6cHVzaENsaXAoY29uc3Qg
UGF0aCYgcGF0aCwgV2luZFJ1bGUpCi17Ci0gICAgLy8gRklYTUU6IEFwcHJveGltYXRlIHBhdGhz
IGJldHRlci4KLSAgICBhdXRvIHBhdGhCb3VuZHMgPSBlbmNsb3NpbmdJbnRSZWN0KHBhdGguYm91
bmRpbmdSZWN0KCkpOwotICAgIHB1c2hDbGlwKHBhdGhCb3VuZHMpOwotfQotCi12b2lkIEV2ZW50
UmVnaW9uQ29udGV4dDo6cG9wQ2xpcCgpCi17Ci0gICAgaWYgKG1fY2xpcFN0YWNrLmlzRW1wdHko
KSkgewotICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgcmV0dXJuOwotICAg
IH0KLSAgICBtX2NsaXBTdGFjay5yZW1vdmVMYXN0KCk7Ci19CitFdmVudFJlZ2lvbkNvbnRleHQ6
On5FdmVudFJlZ2lvbkNvbnRleHQoKSA9IGRlZmF1bHQ7CiAKIHZvaWQgRXZlbnRSZWdpb25Db250
ZXh0Ojp1bml0ZShjb25zdCBSZWdpb24mIHJlZ2lvbiwgUmVuZGVyT2JqZWN0JiByZW5kZXJlciwg
Y29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlLCBib29sIG92ZXJyaWRlVXNlck1vZGlmeUlzRWRpdGFi
bGUpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvRXZlbnRSZWdpb24u
aCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9FdmVudFJlZ2lvbi5oCmluZGV4IDRmZDRiMWVh
NWJiYS4uNmZiZTg0NjI4YmYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
RXZlbnRSZWdpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvRXZlbnRSZWdpb24u
aApAQCAtMjksNiArMjksNyBAQAogI2luY2x1ZGUgIkludFJlY3RIYXNoLmgiCiAjaW5jbHVkZSAi
SW50ZXJhY3Rpb25SZWdpb24uaCIKICNpbmNsdWRlICJOb2RlLmgiCisjaW5jbHVkZSAiUGFpbnRD
b250ZXh0LmgiCiAjaW5jbHVkZSAiUmVnaW9uLmgiCiAjaW5jbHVkZSAiUmVuZGVyU3R5bGVDb25z
dGFudHMuaCIKICNpbmNsdWRlICJUb3VjaEFjdGlvbi5oIgpAQCAtNDQsMTggKzQ1LDEyIEBAIGNs
YXNzIFBhdGg7CiBjbGFzcyBSZW5kZXJPYmplY3Q7CiBjbGFzcyBSZW5kZXJTdHlsZTsKIAotZW51
bSBjbGFzcyBXaW5kUnVsZSA6IGJvb2w7Ci0KLWNsYXNzIEV2ZW50UmVnaW9uQ29udGV4dCB7Citj
bGFzcyBFdmVudFJlZ2lvbkNvbnRleHQgOiBwdWJsaWMgUGFpbnRDb250ZXh0IHsKIHB1YmxpYzoK
ICAgICBleHBsaWNpdCBFdmVudFJlZ2lvbkNvbnRleHQoRXZlbnRSZWdpb24mKTsKKyAgICB2aXJ0
dWFsIH5FdmVudFJlZ2lvbkNvbnRleHQoKTsKIAotICAgIHZvaWQgcHVzaFRyYW5zZm9ybShjb25z
dCBBZmZpbmVUcmFuc2Zvcm0mKTsKLSAgICB2b2lkIHBvcFRyYW5zZm9ybSgpOwotCi0gICAgdm9p
ZCBwdXNoQ2xpcChjb25zdCBJbnRSZWN0Jik7Ci0gICAgdm9pZCBwdXNoQ2xpcChjb25zdCBQYXRo
JiwgV2luZFJ1bGUpOwotICAgIHZvaWQgcG9wQ2xpcCgpOworICAgIGJvb2wgaXNFdmVudFJlZ2lv
blBhaW50Q29udGV4dCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KIAogICAgIHZvaWQg
dW5pdGUoY29uc3QgUmVnaW9uJiwgUmVuZGVyT2JqZWN0JiwgY29uc3QgUmVuZGVyU3R5bGUmLCBi
b29sIG92ZXJyaWRlVXNlck1vZGlmeUlzRWRpdGFibGUgPSBmYWxzZSk7CiAgICAgYm9vbCBjb250
YWlucyhjb25zdCBJbnRSZWN0JikgY29uc3Q7CkBAIC02OCw4ICs2Myw2IEBAIHB1YmxpYzoKIAog
cHJpdmF0ZToKICAgICBFdmVudFJlZ2lvbiYgbV9ldmVudFJlZ2lvbjsKLSAgICBWZWN0b3I8QWZm
aW5lVHJhbnNmb3JtPiBtX3RyYW5zZm9ybVN0YWNrOwotICAgIFZlY3RvcjxJbnRSZWN0PiBtX2Ns
aXBTdGFjazsKIAogI2lmIEVOQUJMRShJTlRFUkFDVElPTl9SRUdJT05TX0lOX0VWRU5UX1JFR0lP
TikKICAgICBWZWN0b3I8SW50ZXJhY3Rpb25SZWdpb24+IG1faW50ZXJhY3Rpb25SZWdpb25zOwpA
QCAtNzksNDUgKzcyLDYgQEAgcHJpdmF0ZToKICNlbmRpZgogfTsKIAotY2xhc3MgRXZlbnRSZWdp
b25Db250ZXh0U3RhdGVTYXZlciB7Ci1wdWJsaWM6Ci0gICAgRXZlbnRSZWdpb25Db250ZXh0U3Rh
dGVTYXZlcihFdmVudFJlZ2lvbkNvbnRleHQqIGNvbnRleHQpCi0gICAgICAgIDogbV9jb250ZXh0
KGNvbnRleHQpCi0gICAgewotICAgIH0KLSAgICAKLSAgICB+RXZlbnRSZWdpb25Db250ZXh0U3Rh
dGVTYXZlcigpCi0gICAgewotICAgICAgICBpZiAoIW1fY29udGV4dCkKLSAgICAgICAgICAgIHJl
dHVybjsKLQotICAgICAgICBpZiAobV9wdXNoZWRDbGlwKQotICAgICAgICAgICAgbV9jb250ZXh0
LT5wb3BDbGlwKCk7Ci0gICAgfQotICAgIAotICAgIHZvaWQgcHVzaENsaXAoY29uc3QgSW50UmVj
dCYgY2xpcFJlY3QpCi0gICAgewotICAgICAgICBBU1NFUlQoIW1fcHVzaGVkQ2xpcCk7Ci0gICAg
ICAgIGlmIChtX2NvbnRleHQpCi0gICAgICAgICAgICBtX2NvbnRleHQtPnB1c2hDbGlwKGNsaXBS
ZWN0KTsKLSAgICAgICAgbV9wdXNoZWRDbGlwID0gdHJ1ZTsKLSAgICB9Ci0KLSAgICB2b2lkIHB1
c2hDbGlwKGNvbnN0IFBhdGgmIHBhdGgsIFdpbmRSdWxlIHdpbmRSdWxlKQotICAgIHsKLSAgICAg
ICAgQVNTRVJUKCFtX3B1c2hlZENsaXApOwotICAgICAgICBpZiAobV9jb250ZXh0KQotICAgICAg
ICAgICAgbV9jb250ZXh0LT5wdXNoQ2xpcChwYXRoLCB3aW5kUnVsZSk7Ci0gICAgICAgIG1fcHVz
aGVkQ2xpcCA9IHRydWU7Ci0gICAgfQotCi0gICAgRXZlbnRSZWdpb25Db250ZXh0KiBjb250ZXh0
KCkgY29uc3QgeyByZXR1cm4gbV9jb250ZXh0OyB9Ci0KLXByaXZhdGU6Ci0gICAgRXZlbnRSZWdp
b25Db250ZXh0KiBtX2NvbnRleHQ7Ci0gICAgYm9vbCBtX3B1c2hlZENsaXAgeyBmYWxzZSB9Owot
fTsKLQogY2xhc3MgRXZlbnRSZWdpb24gewogcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIEV2
ZW50UmVnaW9uKCk7CkBAIC0yMTMsMyArMTY3LDcgQEAgaW5saW5lIHZvaWQgRXZlbnRSZWdpb246
OmVuc3VyZUVkaXRhYmxlUmVnaW9uKCkKICNlbmRpZgogCiB9CisKK1NQRUNJQUxJWkVfVFlQRV9U
UkFJVFNfQkVHSU4oV2ViQ29yZTo6RXZlbnRSZWdpb25Db250ZXh0KQorICAgIHN0YXRpYyBib29s
IGlzVHlwZShjb25zdCBXZWJDb3JlOjpQYWludENvbnRleHQmIHBhaW50Q29udGV4dCkgeyByZXR1
cm4gcGFpbnRDb250ZXh0LmlzRXZlbnRSZWdpb25QYWludENvbnRleHQoKTsgfQorU1BFQ0lBTEla
RV9UWVBFX1RSQUlUU19FTkQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L0xlZ2FjeUlubGluZUVsZW1lbnRCb3guY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0xl
Z2FjeUlubGluZUVsZW1lbnRCb3guY3BwCmluZGV4IGI2NjEzNmQ2ZTgwZS4uMzAzMmI0NzBkYWVk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvTGVnYWN5SW5saW5lRWxlbWVu
dEJveC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0xlZ2FjeUlubGluZUVsZW1l
bnRCb3guY3BwCkBAIC03MSw3ICs3MSw3IEBAIHZvaWQgTGVnYWN5SW5saW5lRWxlbWVudEJveDo6
cGFpbnQoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFBvaW50JiBwYWluCiAgICAg
aWYgKCFwYWludEluZm8uc2hvdWxkUGFpbnRXaXRoaW5Sb290KHJlbmRlcmVyKCkpKQogICAgICAg
ICByZXR1cm47CiAKLSAgICBpZiAocGFpbnRJbmZvLnBoYXNlICE9IFBhaW50UGhhc2U6OkZvcmVn
cm91bmQgJiYgcGFpbnRJbmZvLnBoYXNlICE9IFBhaW50UGhhc2U6OlNlbGVjdGlvbiAmJiBwYWlu
dEluZm8ucGhhc2UgIT0gUGFpbnRQaGFzZTo6RXZlbnRSZWdpb24pCisgICAgaWYgKHBhaW50SW5m
by5waGFzZSAhPSBQYWludFBoYXNlOjpGb3JlZ3JvdW5kICYmIHBhaW50SW5mby5waGFzZSAhPSBQ
YWludFBoYXNlOjpTZWxlY3Rpb24gJiYgcGFpbnRJbmZvLnBoYXNlICE9IFBhaW50UGhhc2U6OkV2
ZW50UmVnaW9uICYmIHBhaW50SW5mby5waGFzZSAhPSBQYWludFBoYXNlOjpBY2Nlc3NpYmlsaXR5
KQogICAgICAgICByZXR1cm47CiAKICAgICBMYXlvdXRQb2ludCBjaGlsZFBvaW50ID0gcGFpbnRP
ZmZzZXQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvTGVnYWN5SW5saW5l
Rmxvd0JveC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvTGVnYWN5SW5saW5lRmxvd0Jv
eC5jcHAKaW5kZXggOWM0ODJkN2U5MGIzLi41NjY1NzNhZDViNGEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9MZWdhY3lJbmxpbmVGbG93Qm94LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvTGVnYWN5SW5saW5lRmxvd0JveC5jcHAKQEAgLTExMDQsNyArMTEw
NCw3IEBAIGJvb2wgTGVnYWN5SW5saW5lRmxvd0JveDo6bm9kZUF0UG9pbnQoY29uc3QgSGl0VGVz
dFJlcXVlc3QmIHJlcXVlc3QsIEhpdFRlc3RSZXN1CiAKIHZvaWQgTGVnYWN5SW5saW5lRmxvd0Jv
eDo6cGFpbnQoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFBvaW50JiBwYWludE9m
ZnNldCwgTGF5b3V0VW5pdCBsaW5lVG9wLCBMYXlvdXRVbml0IGxpbmVCb3R0b20pCiB7Ci0gICAg
aWYgKHBhaW50SW5mby5waGFzZSAhPSBQYWludFBoYXNlOjpGb3JlZ3JvdW5kICYmIHBhaW50SW5m
by5waGFzZSAhPSBQYWludFBoYXNlOjpTZWxlY3Rpb24gJiYgcGFpbnRJbmZvLnBoYXNlICE9IFBh
aW50UGhhc2U6Ok91dGxpbmUgJiYgcGFpbnRJbmZvLnBoYXNlICE9IFBhaW50UGhhc2U6OlNlbGZP
dXRsaW5lICYmIHBhaW50SW5mby5waGFzZSAhPSBQYWludFBoYXNlOjpDaGlsZE91dGxpbmVzICYm
IHBhaW50SW5mby5waGFzZSAhPSBQYWludFBoYXNlOjpUZXh0Q2xpcCAmJiBwYWludEluZm8ucGhh
c2UgIT0gUGFpbnRQaGFzZTo6TWFzayAmJiBwYWludEluZm8ucGhhc2UgIT0gUGFpbnRQaGFzZTo6
RXZlbnRSZWdpb24pCisgICAgaWYgKHBhaW50SW5mby5waGFzZSAhPSBQYWludFBoYXNlOjpGb3Jl
Z3JvdW5kICYmIHBhaW50SW5mby5waGFzZSAhPSBQYWludFBoYXNlOjpTZWxlY3Rpb24gJiYgcGFp
bnRJbmZvLnBoYXNlICE9IFBhaW50UGhhc2U6Ok91dGxpbmUgJiYgcGFpbnRJbmZvLnBoYXNlICE9
IFBhaW50UGhhc2U6OlNlbGZPdXRsaW5lICYmIHBhaW50SW5mby5waGFzZSAhPSBQYWludFBoYXNl
OjpDaGlsZE91dGxpbmVzICYmIHBhaW50SW5mby5waGFzZSAhPSBQYWludFBoYXNlOjpUZXh0Q2xp
cCAmJiBwYWludEluZm8ucGhhc2UgIT0gUGFpbnRQaGFzZTo6TWFzayAmJiBwYWludEluZm8ucGhh
c2UgIT0gUGFpbnRQaGFzZTo6RXZlbnRSZWdpb24gJiYgcGFpbnRJbmZvLnBoYXNlICE9IFBhaW50
UGhhc2U6OkFjY2Vzc2liaWxpdHkpCiAgICAgICAgIHJldHVybjsKIAogICAgIExheW91dFJlY3Qg
b3ZlcmZsb3dSZWN0KHZpc3VhbE92ZXJmbG93UmVjdChsaW5lVG9wLCBsaW5lQm90dG9tKSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUGFpbnRDb250ZXh0LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9QYWludENvbnRleHQuY3BwCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uNDUyMTEyZjY4MTdjCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1BhaW50Q29udGV4dC5jcHAKQEAgLTAsMCArMSw3NCBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJQYWludENvbnRl
eHQuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCit2b2lkIFBhaW50Q29udGV4dDo6cHVzaFRy
YW5zZm9ybShjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHRyYW5zZm9ybSkKK3sKKyAgICBpZiAobV90
cmFuc2Zvcm1TdGFjay5pc0VtcHR5KCkpCisgICAgICAgIG1fdHJhbnNmb3JtU3RhY2suYXBwZW5k
KHRyYW5zZm9ybSk7CisgICAgZWxzZQorICAgICAgICBtX3RyYW5zZm9ybVN0YWNrLmFwcGVuZCht
X3RyYW5zZm9ybVN0YWNrLmxhc3QoKSAqIHRyYW5zZm9ybSk7Cit9CisKK3ZvaWQgUGFpbnRDb250
ZXh0Ojpwb3BUcmFuc2Zvcm0oKQoreworICAgIGlmIChtX3RyYW5zZm9ybVN0YWNrLmlzRW1wdHko
KSkgeworICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJuOworICAg
IH0KKyAgICBtX3RyYW5zZm9ybVN0YWNrLnJlbW92ZUxhc3QoKTsKK30KKwordm9pZCBQYWludENv
bnRleHQ6OnB1c2hDbGlwKGNvbnN0IEludFJlY3QmIGNsaXBSZWN0KQoreworICAgIGF1dG8gdHJh
bnNmb3JtZWRDbGlwID0gbV90cmFuc2Zvcm1TdGFjay5pc0VtcHR5KCkgPyBjbGlwUmVjdCA6IG1f
dHJhbnNmb3JtU3RhY2subGFzdCgpLm1hcFJlY3QoY2xpcFJlY3QpOworCisgICAgaWYgKG1fY2xp
cFN0YWNrLmlzRW1wdHkoKSkKKyAgICAgICAgbV9jbGlwU3RhY2suYXBwZW5kKHRyYW5zZm9ybWVk
Q2xpcCk7CisgICAgZWxzZQorICAgICAgICBtX2NsaXBTdGFjay5hcHBlbmQoaW50ZXJzZWN0aW9u
KG1fY2xpcFN0YWNrLmxhc3QoKSwgdHJhbnNmb3JtZWRDbGlwKSk7Cit9CisKK3ZvaWQgUGFpbnRD
b250ZXh0OjpwdXNoQ2xpcChjb25zdCBQYXRoJiBwYXRoKQoreworICAgIC8vIEZJWE1FOiBBcHBy
b3hpbWF0ZSBwYXRocyBiZXR0ZXIuCisgICAgYXV0byBwYXRoQm91bmRzID0gZW5jbG9zaW5nSW50
UmVjdChwYXRoLmJvdW5kaW5nUmVjdCgpKTsKKyAgICBwdXNoQ2xpcChwYXRoQm91bmRzKTsKK30K
Kwordm9pZCBQYWludENvbnRleHQ6OnBvcENsaXAoKQoreworICAgIGlmIChtX2NsaXBTdGFjay5p
c0VtcHR5KCkpIHsKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVy
bjsKKyAgICB9CisgICAgbV9jbGlwU3RhY2sucmVtb3ZlTGFzdCgpOworfQorCit9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUGFpbnRD
b250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUGFpbnRDb250ZXh0LmgKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi45ZTg0Y2QyMzNlMGMKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUGFpbnRDb250ZXh0LmgKQEAgLTAs
MCArMSw5NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMyBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
CisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiQWZmaW5l
VHJhbnNmb3JtLmgiCisjaW5jbHVkZSA8d3RmL0NoZWNrZWRQdHIuaD4KKyNpbmNsdWRlIDx3dGYv
VmVjdG9yLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgUGF0aDsKKworY2xhc3Mg
UGFpbnRDb250ZXh0IDogcHVibGljIENhbk1ha2VDaGVja2VkUHRyIHsKK3B1YmxpYzoKKyAgICB2
aXJ0dWFsIH5QYWludENvbnRleHQoKSA9IGRlZmF1bHQ7CisKKyAgICB2b2lkIHB1c2hUcmFuc2Zv
cm0oY29uc3QgQWZmaW5lVHJhbnNmb3JtJik7CisgICAgdm9pZCBwb3BUcmFuc2Zvcm0oKTsKKwor
ICAgIHZvaWQgcHVzaENsaXAoY29uc3QgSW50UmVjdCYpOworICAgIHZvaWQgcHVzaENsaXAoY29u
c3QgUGF0aCYpOworICAgIHZvaWQgcG9wQ2xpcCgpOworCisgICAgdmlydHVhbCBib29sIGlzRXZl
bnRSZWdpb25QYWludENvbnRleHQoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQorICAgIHZpcnR1
YWwgYm9vbCBpc0FjY2Vzc2liaWxpdHlQYWludENvbnRleHQoKSBjb25zdCB7IHJldHVybiBmYWxz
ZTsgfQorCitwcm90ZWN0ZWQ6CisgICAgVmVjdG9yPEFmZmluZVRyYW5zZm9ybT4gbV90cmFuc2Zv
cm1TdGFjazsKKyAgICBWZWN0b3I8SW50UmVjdD4gbV9jbGlwU3RhY2s7CisKK307IC8vIGNsYXNz
IFBhaW50Q29udGV4dAorCitjbGFzcyBQYWludENvbnRleHRTdGF0ZVNhdmVyIHsKK3B1YmxpYzoK
KyAgICBQYWludENvbnRleHRTdGF0ZVNhdmVyKFBhaW50Q29udGV4dCogY29udGV4dCkKKyAgICAg
ICAgOiBtX2NvbnRleHQoY29udGV4dCkKKyAgICB7CisgICAgfQorCisgICAgflBhaW50Q29udGV4
dFN0YXRlU2F2ZXIoKQorICAgIHsKKyAgICAgICAgaWYgKCFtX2NvbnRleHQpCisgICAgICAgICAg
ICByZXR1cm47CisKKyAgICAgICAgaWYgKG1fcHVzaGVkQ2xpcCkKKyAgICAgICAgICAgIG1fY29u
dGV4dC0+cG9wQ2xpcCgpOworICAgIH0KKworICAgIHZvaWQgcHVzaENsaXAoY29uc3QgSW50UmVj
dCYgY2xpcFJlY3QpCisgICAgeworICAgICAgICBBU1NFUlQoIW1fcHVzaGVkQ2xpcCk7CisgICAg
ICAgIGlmIChtX2NvbnRleHQpCisgICAgICAgICAgICBtX2NvbnRleHQtPnB1c2hDbGlwKGNsaXBS
ZWN0KTsKKyAgICAgICAgbV9wdXNoZWRDbGlwID0gdHJ1ZTsKKyAgICB9CisKKyAgICB2b2lkIHB1
c2hDbGlwKGNvbnN0IFBhdGgmIHBhdGgpCisgICAgeworICAgICAgICBBU1NFUlQoIW1fcHVzaGVk
Q2xpcCk7CisgICAgICAgIGlmIChtX2NvbnRleHQpCisgICAgICAgICAgICBtX2NvbnRleHQtPnB1
c2hDbGlwKHBhdGgpOworICAgICAgICBtX3B1c2hlZENsaXAgPSB0cnVlOworICAgIH0KKworICAg
IFBhaW50Q29udGV4dCogY29udGV4dCgpIGNvbnN0IHsgcmV0dXJuIGNvbnN0X2Nhc3Q8UGFpbnRD
b250ZXh0Kj4obV9jb250ZXh0LmdldCgpKTsgfQorCitwcml2YXRlOgorICAgIENoZWNrZWRQdHI8
UGFpbnRDb250ZXh0PiBtX2NvbnRleHQ7CisgICAgYm9vbCBtX3B1c2hlZENsaXAgeyBmYWxzZSB9
OworfTsgLy8gY2xhc3MgUGFpbnRDb250ZXh0U3RhdGVTYXZlcgorCit9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUGFpbnRJbmZvLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUGFpbnRJbmZvLmgKaW5kZXggMDUwZDVjYWY2YjJm
Li4xMjMyMDUwZTIwNWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9QYWlu
dEluZm8uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUGFpbnRJbmZvLmgKQEAgLTI1
LDcgKzI1LDkgQEAKIAogI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRlICJBY2Nlc3NpYmlsaXR5UGFp
bnRDb250ZXh0LmgiCiAjaW5jbHVkZSAiQWZmaW5lVHJhbnNmb3JtLmgiCisjaW5jbHVkZSAiRXZl
bnRSZWdpb24uaCIKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQuaCIKICNpbmNsdWRlICJJbnRS
ZWN0LmgiCiAjaW5jbHVkZSAiTGF5b3V0UmVjdC5oIgpAQCAtMzcsNyArMzksNiBAQAogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIEV2ZW50UmVnaW9uQ29udGV4dDsKIGNsYXNzIE92ZXJs
YXBUZXN0UmVxdWVzdENsaWVudDsKIGNsYXNzIFJlbmRlcklubGluZTsKIGNsYXNzIFJlbmRlckxh
eWVyOwpAQCAtMTIxLDYgKzEyMiw5IEBAIHN0cnVjdCBQYWludEluZm8gewogICAgICAgICByZWN0
LnNldFNpemUoTGF5b3V0U2l6ZSh0cmFuZm9ybWVkUmVjdC5zaXplKCkpKTsKICAgICB9CiAKKyAg
ICBFdmVudFJlZ2lvbkNvbnRleHQqIGV2ZW50UmVnaW9uUGFpbnRDb250ZXh0KCkgeyByZXR1cm4g
ZHluYW1pY0Rvd25jYXN0PEV2ZW50UmVnaW9uQ29udGV4dD4ocGFpbnRDb250ZXh0KTsgfQorICAg
IEFjY2Vzc2liaWxpdHlQYWludENvbnRleHQqIGFjY2Vzc2liaWxpdHlQYWludENvbnRleHQoKSB7
IHJldHVybiBkeW5hbWljRG93bmNhc3Q8QWNjZXNzaWJpbGl0eVBhaW50Q29udGV4dD4ocGFpbnRD
b250ZXh0KTsgfQorCiAgICAgTGF5b3V0UmVjdCByZWN0OwogICAgIFBhaW50UGhhc2UgcGhhc2U7
CiAgICAgT3B0aW9uU2V0PFBhaW50QmVoYXZpb3I+IHBhaW50QmVoYXZpb3I7CkBAIC0xMzAsNyAr
MTM0LDggQEAgc3RydWN0IFBhaW50SW5mbyB7CiAgICAgY29uc3QgUmVuZGVyTGF5ZXJNb2RlbE9i
amVjdCogcGFpbnRDb250YWluZXI7IC8vIHRoZSBsYXllciBvYmplY3QgdGhhdCBvcmlnaW5hdGVz
IHRoZSBjdXJyZW50IHBhaW50aW5nCiAgICAgYm9vbCByZXF1aXJlU2VjdXJpdHlPcmlnaW5BY2Nl
c3NGb3JXaWRnZXRzIHsgZmFsc2UgfTsKICAgICBjb25zdCBSZW5kZXJMYXllciogbV9lbmNsb3Np
bmdTZWxmUGFpbnRpbmdMYXllciB7IG51bGxwdHIgfTsKLSAgICBFdmVudFJlZ2lvbkNvbnRleHQq
IGV2ZW50UmVnaW9uQ29udGV4dCB7IG51bGxwdHIgfTsgLy8gRm9yIFBhaW50UGhhc2U6OkV2ZW50
UmVnaW9uLgorICAgIC8vIENlcnRhaW4gcGhhc2VzIChlLmcuIFBhaW50UGhhc2U6OkV2ZW50UmVn
aW9uLCBQYWludFBoYXNlOjpBY2Nlc3NpYmlsaXR5KSByZXF1aXJlIGNvbnRleHQuCisgICAgUGFp
bnRDb250ZXh0KiBwYWludENvbnRleHQgeyBudWxscHRyIH07CiAKIHByaXZhdGU6CiAgICAgR3Jh
cGhpY3NDb250ZXh0KiBtX2NvbnRleHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUGFpbnRQaGFzZS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1BhaW50UGhhc2Uu
aAppbmRleCA0YTU2ZjUzMzE0NWYuLmU2ZGRkYTY0ZDY2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1BhaW50UGhhc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUGFpbnRQaGFzZS5oCkBAIC01MSw2ICs1MSw3IEBAIGVudW0gY2xhc3MgUGFpbnRQaGFzZSA6
IHVpbnQxNl90IHsKICAgICBNYXNrICAgICAgICAgICAgICAgICAgICAgPSAxIDw8IDEwLAogICAg
IENsaXBwaW5nTWFzayAgICAgICAgICAgICA9IDEgPDwgMTEsCiAgICAgRXZlbnRSZWdpb24gICAg
ICAgICAgICAgID0gMSA8PCAxMiwKKyAgICBBY2Nlc3NpYmlsaXR5ICAgICAgICAgICAgPSAxIDw8
IDEzLAogfTsKIAogZW51bSBjbGFzcyBQYWludEJlaGF2aW9yIDogdWludDE2X3QgewpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAKaW5kZXggOTM0ODBkODYzN2YyLi5lMWFl
NWRmZTM3MzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9j
ay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcApAQCAt
MTE2Nyw3ICsxMTY3LDcgQEAgdm9pZCBSZW5kZXJCbG9jazo6cGFpbnRDb250ZW50cyhQYWludElu
Zm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50T2YKICAgICAgICAgcGFpbnRJ
bmZvRm9yQ2hpbGQucGhhc2UgPSBuZXdQaGFzZTsKICAgICAgICAgcGFpbnRJbmZvRm9yQ2hpbGQu
dXBkYXRlU3VidHJlZVBhaW50Um9vdEZvckNoaWxkcmVuKHRoaXMpOwogCi0gICAgICAgIGlmIChw
YWludEluZm8uZXZlbnRSZWdpb25Db250ZXh0KQorICAgICAgICBpZiAocGFpbnRJbmZvLmV2ZW50
UmVnaW9uUGFpbnRDb250ZXh0KCkpCiAgICAgICAgICAgICBwYWludEluZm9Gb3JDaGlsZC5wYWlu
dEJlaGF2aW9yLmFkZChQYWludEJlaGF2aW9yOjpFdmVudFJlZ2lvbkluY2x1ZGVCYWNrZ3JvdW5k
KTsKIAogICAgICAgICAvLyBGSVhNRTogUGFpbnQtdGltZSBwYWdpbmF0aW9uIGlzIG9ic29sZXRl
IGFuZCBpcyBub3cgb25seSB1c2VkIGJ5IGVtYmVkZGVkIFdlYlZpZXdzIGluc2lkZSBBcHBLaXQK
QEAgLTEyODAsMjEgKzEyODAsMjQgQEAgdm9pZCBSZW5kZXJCbG9jazo6cGFpbnRPYmplY3QoUGFp
bnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFBvaW50JiBwYWludE9mZnMKICAgICBpZiAo
cGFpbnRJbmZvLnBhaW50Um9vdEJhY2tncm91bmRPbmx5KCkpCiAgICAgICAgIHJldHVybjsKIAor
ICAgIGlmIChwYWludFBoYXNlID09IFBhaW50UGhhc2U6OkFjY2Vzc2liaWxpdHkpCisgICAgICAg
IHBhaW50SW5mby5hY2Nlc3NpYmlsaXR5UGFpbnRDb250ZXh0KCktPnRha2VCb3VuZHMoKnRoaXMs
IEZsb2F0UmVjdChwYWludE9mZnNldCwgc2l6ZSgpKSk7CisKICAgICBpZiAocGFpbnRQaGFzZSA9
PSBQYWludFBoYXNlOjpFdmVudFJlZ2lvbikgewogICAgICAgICBhdXRvIGJvcmRlclJlY3QgPSBM
YXlvdXRSZWN0KHBhaW50T2Zmc2V0LCBzaXplKCkpOwogCiAgICAgICAgIGlmIChwYWludEluZm8u
cGFpbnRCZWhhdmlvci5jb250YWlucyhQYWludEJlaGF2aW9yOjpFdmVudFJlZ2lvbkluY2x1ZGVC
YWNrZ3JvdW5kKSAmJiB2aXNpYmxlVG9IaXRUZXN0aW5nKCkpIHsKICAgICAgICAgICAgIGF1dG8g
Ym9yZGVyUmVnaW9uID0gYXBwcm94aW1hdGVBc1JlZ2lvbihzdHlsZSgpLmdldFJvdW5kZWRCb3Jk
ZXJGb3IoYm9yZGVyUmVjdCkpOwogICAgICAgICAgICAgTE9HX1dJVEhfU1RSRUFNKEV2ZW50UmVn
aW9ucywgc3RyZWFtIDw8ICJSZW5kZXJCbG9jayAiIDw8ICp0aGlzIDw8ICIgdW5pdGluZyByZWdp
b24gIiA8PCBib3JkZXJSZWdpb24gPDwgIiBldmVudCBsaXN0ZW5lciB0eXBlcyAiIDw8IHN0eWxl
KCkuZXZlbnRMaXN0ZW5lclJlZ2lvblR5cGVzKCkpOwotICAgICAgICAgICAgcGFpbnRJbmZvLmV2
ZW50UmVnaW9uQ29udGV4dC0+dW5pdGUoYm9yZGVyUmVnaW9uLCAqdGhpcywgc3R5bGUoKSwgaXNU
ZXh0Q29udHJvbCgpICYmIGRvd25jYXN0PFJlbmRlclRleHRDb250cm9sPigqdGhpcykudGV4dEZv
cm1Db250cm9sRWxlbWVudCgpLmlzSW5uZXJUZXh0RWxlbWVudEVkaXRhYmxlKCkpOworICAgICAg
ICAgICAgcGFpbnRJbmZvLmV2ZW50UmVnaW9uUGFpbnRDb250ZXh0KCktPnVuaXRlKGJvcmRlclJl
Z2lvbiwgKnRoaXMsIHN0eWxlKCksIGlzVGV4dENvbnRyb2woKSAmJiBkb3duY2FzdDxSZW5kZXJU
ZXh0Q29udHJvbD4oKnRoaXMpLnRleHRGb3JtQ29udHJvbEVsZW1lbnQoKS5pc0lubmVyVGV4dEVs
ZW1lbnRFZGl0YWJsZSgpKTsKICAgICAgICAgfQogCiAgICAgICAgIGlmICghcGFpbnRJbmZvLnBh
aW50QmVoYXZpb3IuY29udGFpbnMoUGFpbnRCZWhhdmlvcjo6RXZlbnRSZWdpb25JbmNsdWRlRm9y
ZWdyb3VuZCkpCiAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgYm9vbCBuZWVkc1RyYXZl
cnNlRGVzY2VuZGFudHMgPSBoYXNWaXN1YWxPdmVyZmxvdygpIHx8IGNvbnRhaW5zRmxvYXRzKCkg
fHwgIXBhaW50SW5mby5ldmVudFJlZ2lvbkNvbnRleHQtPmNvbnRhaW5zKGVuY2xvc2luZ0ludFJl
Y3QoYm9yZGVyUmVjdCkpIHx8IHZpZXcoKS5uZWVkc0V2ZW50UmVnaW9uVXBkYXRlRm9yTm9uQ29t
cG9zaXRlZEZyYW1lKCk7CisgICAgICAgIGJvb2wgbmVlZHNUcmF2ZXJzZURlc2NlbmRhbnRzID0g
aGFzVmlzdWFsT3ZlcmZsb3coKSB8fCBjb250YWluc0Zsb2F0cygpIHx8ICFwYWludEluZm8uZXZl
bnRSZWdpb25QYWludENvbnRleHQoKS0+Y29udGFpbnMoZW5jbG9zaW5nSW50UmVjdChib3JkZXJS
ZWN0KSkgfHwgdmlldygpLm5lZWRzRXZlbnRSZWdpb25VcGRhdGVGb3JOb25Db21wb3NpdGVkRnJh
bWUoKTsKICAgICAgICAgTE9HX1dJVEhfU1RSRUFNKEV2ZW50UmVnaW9ucywgc3RyZWFtIDw8ICJS
ZW5kZXJCbG9jayAiIDw8ICp0aGlzIDw8ICIgbmVlZHNUcmF2ZXJzZURlc2NlbmRhbnRzIGZvciBl
dmVudCByZWdpb246IGhhc1Zpc3VhbE92ZXJmbG93OiAiIDw8IGhhc1Zpc3VhbE92ZXJmbG93KCkg
PDwgIiBjb250YWluc0Zsb2F0czogIgotICAgICAgICAgICAgPDwgY29udGFpbnNGbG9hdHMoKSA8
PCAgIiBib3JkZXIgYm94IGlzIG91dHNpZGUgY3VycmVudCByZWdpb246ICIgPDwgIXBhaW50SW5m
by5ldmVudFJlZ2lvbkNvbnRleHQtPmNvbnRhaW5zKGVuY2xvc2luZ0ludFJlY3QoYm9yZGVyUmVj
dCkpIDw8ICIgbmVlZHNFdmVudFJlZ2lvblVwZGF0ZUZvck5vbkNvbXBvc2l0ZWRGcmFtZToiIDw8
IHZpZXcoKS5uZWVkc0V2ZW50UmVnaW9uVXBkYXRlRm9yTm9uQ29tcG9zaXRlZEZyYW1lKCkpOwor
ICAgICAgICAgICAgPDwgY29udGFpbnNGbG9hdHMoKSA8PCAgIiBib3JkZXIgYm94IGlzIG91dHNp
ZGUgY3VycmVudCByZWdpb246ICIgPDwgIXBhaW50SW5mby5ldmVudFJlZ2lvblBhaW50Q29udGV4
dCgpLT5jb250YWlucyhlbmNsb3NpbmdJbnRSZWN0KGJvcmRlclJlY3QpKSA8PCAiIG5lZWRzRXZl
bnRSZWdpb25VcGRhdGVGb3JOb25Db21wb3NpdGVkRnJhbWU6IiA8PCB2aWV3KCkubmVlZHNFdmVu
dFJlZ2lvblVwZGF0ZUZvck5vbkNvbXBvc2l0ZWRGcmFtZSgpKTsKICNpZiBFTkFCTEUoVE9VQ0hf
QUNUSU9OX1JFR0lPTlMpCiAgICAgICAgIG5lZWRzVHJhdmVyc2VEZXNjZW5kYW50cyB8PSBkb2N1
bWVudCgpLm1heUhhdmVFbGVtZW50c1dpdGhOb25BdXRvVG91Y2hBY3Rpb24oKTsKICAgICAgICAg
TE9HX1dJVEhfU1RSRUFNKEV2ZW50UmVnaW9ucywgc3RyZWFtIDw8ICIgIG1heSBoYXZlIHRvdWNo
LWFjdGlvbiBlbGVtZW50czogIiA8PCBkb2N1bWVudCgpLm1heUhhdmVFbGVtZW50c1dpdGhOb25B
dXRvVG91Y2hBY3Rpb24oKSk7CkBAIC0xMzQ2LDggKzEzNDksOCBAQCB2b2lkIFJlbmRlckJsb2Nr
OjpwYWludE9iamVjdChQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQmIHBh
aW50T2ZmcwogICAgICAgICBwYWludFNlbGVjdGlvbihwYWludEluZm8sIHNjcm9sbGVkT2Zmc2V0
KTsgLy8gRmlsbCBpbiBnYXBzIGluIHNlbGVjdGlvbiBvbiBsaW5lcyBhbmQgYmV0d2VlbiBibG9j
a3MuCiAKICAgICAvLyA0LiBwYWludCBmbG9hdHMuCi0gICAgaWYgKHBhaW50UGhhc2UgPT0gUGFp
bnRQaGFzZTo6RmxvYXQgfHwgcGFpbnRQaGFzZSA9PSBQYWludFBoYXNlOjpTZWxlY3Rpb24gfHwg
cGFpbnRQaGFzZSA9PSBQYWludFBoYXNlOjpUZXh0Q2xpcCB8fCBwYWludFBoYXNlID09IFBhaW50
UGhhc2U6OkV2ZW50UmVnaW9uKQotICAgICAgICBwYWludEZsb2F0cyhwYWludEluZm8sIHNjcm9s
bGVkT2Zmc2V0LCBwYWludFBoYXNlID09IFBhaW50UGhhc2U6OlNlbGVjdGlvbiB8fCBwYWludFBo
YXNlID09IFBhaW50UGhhc2U6OlRleHRDbGlwIHx8IHBhaW50UGhhc2UgPT0gUGFpbnRQaGFzZTo6
RXZlbnRSZWdpb24pOworICAgIGlmIChwYWludFBoYXNlID09IFBhaW50UGhhc2U6OkZsb2F0IHx8
IHBhaW50UGhhc2UgPT0gUGFpbnRQaGFzZTo6U2VsZWN0aW9uIHx8IHBhaW50UGhhc2UgPT0gUGFp
bnRQaGFzZTo6VGV4dENsaXAgfHwgcGFpbnRQaGFzZSA9PSBQYWludFBoYXNlOjpFdmVudFJlZ2lv
biB8fCBwYWludFBoYXNlID09IFBhaW50UGhhc2U6OkFjY2Vzc2liaWxpdHkpCisgICAgICAgIHBh
aW50RmxvYXRzKHBhaW50SW5mbywgc2Nyb2xsZWRPZmZzZXQsIHBhaW50UGhhc2UgPT0gUGFpbnRQ
aGFzZTo6U2VsZWN0aW9uIHx8IHBhaW50UGhhc2UgPT0gUGFpbnRQaGFzZTo6VGV4dENsaXAgfHwg
cGFpbnRQaGFzZSA9PSBQYWludFBoYXNlOjpFdmVudFJlZ2lvbiB8fCBwYWludFBoYXNlID09IFBh
aW50UGhhc2U6OkFjY2Vzc2liaWxpdHkpOwogCiAgICAgLy8gNS4gcGFpbnQgb3V0bGluZS4KICAg
ICBpZiAoKHBhaW50UGhhc2UgPT0gUGFpbnRQaGFzZTo6T3V0bGluZSB8fCBwYWludFBoYXNlID09
IFBhaW50UGhhc2U6OlNlbGZPdXRsaW5lKSAmJiBoYXNPdXRsaW5lKCkgJiYgc3R5bGUoKS52aXNp
YmlsaXR5KCkgPT0gVmlzaWJpbGl0eTo6VmlzaWJsZSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyQm94LmNwcAppbmRleCAzOWU5NTdlMTdkYWEuLmVhNDJjNTNmZTNhZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHAKQEAgLTIxNjQsOCArMjE2NCw4IEBAIGJvb2wg
UmVuZGVyQm94OjpwdXNoQ29udGVudHNDbGlwKFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBM
YXlvdXRQb2ludCYgYWNjdW11CiAgICAgICAgIGNsaXBDb250ZW50Rm9yQm9yZGVyUmFkaXVzKHBh
aW50SW5mby5jb250ZXh0KCksIGFjY3VtdWxhdGVkT2Zmc2V0LCBkZXZpY2VTY2FsZUZhY3Rvcik7
CiAgICAgcGFpbnRJbmZvLmNvbnRleHQoKS5jbGlwKGNsaXBSZWN0KTsKIAotICAgIGlmIChwYWlu
dEluZm8ucGhhc2UgPT0gUGFpbnRQaGFzZTo6RXZlbnRSZWdpb24pCi0gICAgICAgIHBhaW50SW5m
by5ldmVudFJlZ2lvbkNvbnRleHQtPnB1c2hDbGlwKGVuY2xvc2luZ0ludFJlY3QoY2xpcFJlY3Qp
KTsKKyAgICBpZiAocGFpbnRJbmZvLnBoYXNlID09IFBhaW50UGhhc2U6OkV2ZW50UmVnaW9uIHx8
IHBhaW50SW5mby5waGFzZSA9PSBQYWludFBoYXNlOjpBY2Nlc3NpYmlsaXR5KQorICAgICAgICBw
YWludEluZm8ucGFpbnRDb250ZXh0LT5wdXNoQ2xpcChlbmNsb3NpbmdJbnRSZWN0KGNsaXBSZWN0
KSk7CiAKICAgICByZXR1cm4gdHJ1ZTsKIH0KQEAgLTIxNzQsOCArMjE3NCw4IEBAIHZvaWQgUmVu
ZGVyQm94Ojpwb3BDb250ZW50c0NsaXAoUGFpbnRJbmZvJiBwYWludEluZm8sIFBhaW50UGhhc2Ug
b3JpZ2luYWxQaGFzZSwKIHsKICAgICBBU1NFUlQoaGFzQ29udHJvbENsaXAoKSB8fCAoaGFzTm9u
VmlzaWJsZU92ZXJmbG93KCkgJiYgIWxheWVyKCktPmlzU2VsZlBhaW50aW5nTGF5ZXIoKSkpOwog
Ci0gICAgaWYgKHBhaW50SW5mby5waGFzZSA9PSBQYWludFBoYXNlOjpFdmVudFJlZ2lvbikKLSAg
ICAgICAgcGFpbnRJbmZvLmV2ZW50UmVnaW9uQ29udGV4dC0+cG9wQ2xpcCgpOworICAgIGlmIChw
YWludEluZm8ucGhhc2UgPT0gUGFpbnRQaGFzZTo6RXZlbnRSZWdpb24gfHwgcGFpbnRJbmZvLnBo
YXNlID09IFBhaW50UGhhc2U6OkFjY2Vzc2liaWxpdHkpCisgICAgICAgIHBhaW50SW5mby5wYWlu
dENvbnRleHQtPnBvcENsaXAoKTsKIAogICAgIHBhaW50SW5mby5jb250ZXh0KCkucmVzdG9yZSgp
OwogICAgIGlmIChvcmlnaW5hbFBoYXNlID09IFBhaW50UGhhc2U6Ok91dGxpbmUpIHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbGVtZW50LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbGVtZW50LmNwcAppbmRleCA2YzA2ZGQ2YjQxZDcu
LjNhNmQwNTQ2N2Y3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbGVtZW50
LmNwcApAQCAtMTEyMiw3ICsxMTIyLDcgQEAgdm9pZCBSZW5kZXJFbGVtZW50OjpwYWludEFzSW5s
aW5lQmxvY2soUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFBvaW50JgogICAgIC8v
IChTZWUgQXBwZW5kaXggRS4yLCBzZWN0aW9uIDYuNCBvbiBpbmxpbmUgYmxvY2svdGFibGUvcmVw
bGFjZWQgZWxlbWVudHMgaW4gdGhlIENTUzIuMSBzcGVjaWZpY2F0aW9uLikKICAgICAvLyBUaGlz
IGlzIGFsc28gdXNlZCBieSBvdGhlciBlbGVtZW50cyAoZS5nLiBmbGV4IGl0ZW1zIGFuZCBncmlk
IGl0ZW1zKS4KICAgICBQYWludFBoYXNlIHBhaW50UGhhc2VUb1VzZSA9IGlzRXhjbHVkZWRBbmRQ
bGFjZWRJbkJvcmRlcigpID8gcGFpbnRJbmZvLnBoYXNlIDogUGFpbnRQaGFzZTo6Rm9yZWdyb3Vu
ZDsKLSAgICBpZiAocGFpbnRJbmZvLnBoYXNlID09IFBhaW50UGhhc2U6OlNlbGVjdGlvbiB8fCBw
YWludEluZm8ucGhhc2UgPT0gUGFpbnRQaGFzZTo6RXZlbnRSZWdpb24gfHwgcGFpbnRJbmZvLnBo
YXNlID09IFBhaW50UGhhc2U6OlRleHRDbGlwKQorICAgIGlmIChwYWludEluZm8ucGhhc2UgPT0g
UGFpbnRQaGFzZTo6U2VsZWN0aW9uIHx8IHBhaW50SW5mby5waGFzZSA9PSBQYWludFBoYXNlOjpF
dmVudFJlZ2lvbiB8fCBwYWludEluZm8ucGhhc2UgPT0gUGFpbnRQaGFzZTo6VGV4dENsaXAgfHwg
cGFpbnRJbmZvLnBoYXNlID09IFBhaW50UGhhc2U6OkFjY2Vzc2liaWxpdHkpCiAgICAgICAgIHBh
aW50KHBhaW50SW5mbywgY2hpbGRQb2ludCk7CiAgICAgZWxzZSBpZiAocGFpbnRJbmZvLnBoYXNl
ID09IHBhaW50UGhhc2VUb1VzZSkgewogICAgICAgICBwYWludFBoYXNlKCp0aGlzLCBQYWludFBo
YXNlOjpCbG9ja0JhY2tncm91bmQsIHBhaW50SW5mbywgY2hpbGRQb2ludCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcAppbmRleCBiNzY4MzVmOWRkZTEuLjgwNGNiZDhm
YmU1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCkBAIC0yNzcz
LDE0ICsyNzczLDE1IEBAIGJvb2wgUmVuZGVyTGF5ZXI6OmlzUG9pbnRJblJlc2l6ZUNvbnRyb2wo
SW50UG9pbnQgbG9jYWxQb2ludCkgY29uc3QKICAgICByZXR1cm4gb3ZlcmZsb3dDb250cm9sc1Jl
Y3RzKCkucmVzaXplci5jb250YWlucyhsb2NhbFBvaW50KTsKIH0KIAotdm9pZCBSZW5kZXJMYXll
cjo6cGFpbnQoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBMYXlvdXRSZWN0JiBkYW1h
Z2VSZWN0LCBjb25zdCBMYXlvdXRTaXplJiBzdWJwaXhlbE9mZnNldCwgT3B0aW9uU2V0PFBhaW50
QmVoYXZpb3I+IHBhaW50QmVoYXZpb3IsIFJlbmRlck9iamVjdCogc3VidHJlZVBhaW50Um9vdCwg
T3B0aW9uU2V0PFBhaW50TGF5ZXJGbGFnPiBwYWludEZsYWdzLCBTZWN1cml0eU9yaWdpblBhaW50
UG9saWN5IHBhaW50UG9saWN5LCBFdmVudFJlZ2lvbkNvbnRleHQqIGV2ZW50UmVnaW9uQ29udGV4
dCkKK3ZvaWQgUmVuZGVyTGF5ZXI6OnBhaW50KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29u
c3QgTGF5b3V0UmVjdCYgZGFtYWdlUmVjdCwgY29uc3QgTGF5b3V0U2l6ZSYgc3VicGl4ZWxPZmZz
ZXQsIE9wdGlvblNldDxQYWludEJlaGF2aW9yPiBwYWludEJlaGF2aW9yLCBSZW5kZXJPYmplY3Qq
IHN1YnRyZWVQYWludFJvb3QsIE9wdGlvblNldDxQYWludExheWVyRmxhZz4gcGFpbnRGbGFncywg
U2VjdXJpdHlPcmlnaW5QYWludFBvbGljeSBwYWludFBvbGljeSwgUGFpbnRDb250ZXh0KiBwYWlu
dENvbnRleHQpCiB7CiAgICAgT3ZlcmxhcFRlc3RSZXF1ZXN0TWFwIG92ZXJsYXBUZXN0UmVxdWVz
dHM7CiAKICAgICBMYXllclBhaW50aW5nSW5mbyBwYWludGluZ0luZm8odGhpcywgZW5jbG9zaW5n
SW50UmVjdChkYW1hZ2VSZWN0KSwgcGFpbnRCZWhhdmlvciwgc3VicGl4ZWxPZmZzZXQsIHN1YnRy
ZWVQYWludFJvb3QsICZvdmVybGFwVGVzdFJlcXVlc3RzLCBwYWludFBvbGljeSA9PSBTZWN1cml0
eU9yaWdpblBhaW50UG9saWN5OjpBY2Nlc3NpYmxlT3JpZ2luT25seSk7Ci0gICAgaWYgKGV2ZW50
UmVnaW9uQ29udGV4dCkgewotICAgICAgICBwYWludGluZ0luZm8uZXZlbnRSZWdpb25Db250ZXh0
ID0gZXZlbnRSZWdpb25Db250ZXh0OwotICAgICAgICBwYWludEZsYWdzLmFkZChSZW5kZXJMYXll
cjo6UGFpbnRMYXllckZsYWc6OkNvbGxlY3RpbmdFdmVudFJlZ2lvbik7CisgICAgaWYgKHBhaW50
Q29udGV4dCkgeworICAgICAgICBwYWludGluZ0luZm8ucGFpbnRDb250ZXh0ID0gcGFpbnRDb250
ZXh0OworICAgICAgICBpZiAoaXM8RXZlbnRSZWdpb25Db250ZXh0PihwYWludENvbnRleHQpKQor
ICAgICAgICAgICAgcGFpbnRGbGFncy5hZGQoUmVuZGVyTGF5ZXI6OlBhaW50TGF5ZXJGbGFnOjpD
b2xsZWN0aW5nRXZlbnRSZWdpb24pOwogICAgIH0KICAgICBwYWludExheWVyKGNvbnRleHQsIHBh
aW50aW5nSW5mbywgcGFpbnRGbGFncyk7CiAKQEAgLTI3ODgsNyArMjc4OSw3IEBAIHZvaWQgUmVu
ZGVyTGF5ZXI6OnBhaW50KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgTGF5b3V0UmVj
dCYgZGFtYWdlUmVjdCwKICAgICAgICAgd2lkZ2V0LT5zZXRPdmVybGFwVGVzdFJlc3VsdChmYWxz
ZSk7CiB9CiAKLXZvaWQgUmVuZGVyTGF5ZXI6OmNsaXBUb1JlY3QoR3JhcGhpY3NDb250ZXh0JiBj
b250ZXh0LCBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyJiBzdGF0ZVNhdmVyLCBFdmVudFJlZ2lv
bkNvbnRleHRTdGF0ZVNhdmVyJiBldmVudFJlZ2lvblN0YXRlU2F2ZXIsIGNvbnN0IExheWVyUGFp
bnRpbmdJbmZvJiBwYWludGluZ0luZm8sIE9wdGlvblNldDxQYWludEJlaGF2aW9yPiBwYWludEJl
aGF2aW9yLCBjb25zdCBDbGlwUmVjdCYgY2xpcFJlY3QsIEJvcmRlclJhZGl1c0NsaXBwaW5nUnVs
ZSBydWxlKQordm9pZCBSZW5kZXJMYXllcjo6Y2xpcFRvUmVjdChHcmFwaGljc0NvbnRleHQmIGNv
bnRleHQsIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXImIHN0YXRlU2F2ZXIsIFBhaW50Q29udGV4
dFN0YXRlU2F2ZXImIHBhaW50Q29udGV4dFN0YXRlU2F2ZXIsIGNvbnN0IExheWVyUGFpbnRpbmdJ
bmZvJiBwYWludGluZ0luZm8sIE9wdGlvblNldDxQYWludEJlaGF2aW9yPiBwYWludEJlaGF2aW9y
LCBjb25zdCBDbGlwUmVjdCYgY2xpcFJlY3QsIEJvcmRlclJhZGl1c0NsaXBwaW5nUnVsZSBydWxl
KQogewogICAgIGZsb2F0IGRldmljZVNjYWxlRmFjdG9yID0gcmVuZGVyZXIoKS5kb2N1bWVudCgp
LmRldmljZVNjYWxlRmFjdG9yKCk7CiAgICAgYm9vbCBuZWVkc0NsaXBwaW5nID0gIWNsaXBSZWN0
LmlzSW5maW5pdGUoKSAmJiBjbGlwUmVjdC5yZWN0KCkgIT0gcGFpbnRpbmdJbmZvLnBhaW50RGly
dHlSZWN0OwpAQCAtMjgwMCw3ICsyODAxLDcgQEAgdm9pZCBSZW5kZXJMYXllcjo6Y2xpcFRvUmVj
dChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIKICAg
ICAgICAgYWRqdXN0ZWRDbGlwUmVjdC5tb3ZlKHBhaW50aW5nSW5mby5zdWJwaXhlbE9mZnNldCk7
CiAgICAgICAgIGF1dG8gc25hcHBlZENsaXBSZWN0ID0gc25hcFJlY3RUb0RldmljZVBpeGVsc0lm
TmVlZGVkKGFkanVzdGVkQ2xpcFJlY3QsIHJlbmRlcmVyKCkpOwogICAgICAgICBjb250ZXh0LmNs
aXAoc25hcHBlZENsaXBSZWN0KTsKLSAgICAgICAgZXZlbnRSZWdpb25TdGF0ZVNhdmVyLnB1c2hD
bGlwKGVuY2xvc2luZ0ludFJlY3Qoc25hcHBlZENsaXBSZWN0KSk7CisgICAgICAgIHBhaW50Q29u
dGV4dFN0YXRlU2F2ZXIucHVzaENsaXAoZW5jbG9zaW5nSW50UmVjdChzbmFwcGVkQ2xpcFJlY3Qp
KTsKICAgICB9CiAKICAgICBpZiAoY2xpcFJlY3QuYWZmZWN0ZWRCeVJhZGl1cygpKSB7CkBAIC0y
OTQ0LDcgKzI5NDUsNyBAQCB2b2lkIFJlbmRlckxheWVyOjpwYWludExheWVyV2l0aEVmZmVjdHMo
R3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBMYXllclBhaQogICAgICAgICAvLyBNYWtl
IHN1cmUgdGhlIHBhcmVudCdzIGNsaXAgcmVjdHMgaGF2ZSBiZWVuIGNhbGN1bGF0ZWQuCiAgICAg
ICAgIENsaXBSZWN0IGNsaXBSZWN0ID0gcGFpbnRpbmdJbmZvLnBhaW50RGlydHlSZWN0OwogICAg
ICAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoY29udGV4dCwgZmFsc2Up
OwotICAgICAgICBFdmVudFJlZ2lvbkNvbnRleHRTdGF0ZVNhdmVyIGV2ZW50UmVnaW9uU3RhdGVT
YXZlcihwYWludGluZ0luZm8uZXZlbnRSZWdpb25Db250ZXh0KTsKKyAgICAgICAgUGFpbnRDb250
ZXh0U3RhdGVTYXZlciBwYWludENvbnRleHRTdGF0ZVNhdmVyKHBhaW50aW5nSW5mby5wYWludENv
bnRleHQpOwogICAgICAgICBpZiAocGFyZW50KCkpIHsKICAgICAgICAgICAgIGF1dG8gb3B0aW9u
cyA9IHBhaW50RmxhZ3MuY29udGFpbnMoUGFpbnRMYXllckZsYWc6OlBhaW50aW5nT3ZlcmZsb3dD
b250ZW50cykgPyBjbGlwUmVjdE9wdGlvbnNGb3JQYWludGluZ092ZXJmbG93Q29udHJvbHMgOiBj
bGlwUmVjdERlZmF1bHRPcHRpb25zOwogICAgICAgICAgICAgYXV0byBjbGlwUmVjdHNDb250ZXh0
ID0gQ2xpcFJlY3RzQ29udGV4dChwYWludGluZ0luZm8ucm9vdExheWVyLCAocGFpbnRGbGFncyAm
IFBhaW50TGF5ZXJGbGFnOjpUZW1wb3JhcnlDbGlwUmVjdHMpID8gVGVtcG9yYXJ5Q2xpcFJlY3Rz
IDogUGFpbnRpbmdDbGlwUmVjdHMsIG9wdGlvbnMpOwpAQCAtMjk3Myw3ICsyOTc0LDcgQEAgdm9p
ZCBSZW5kZXJMYXllcjo6cGFpbnRMYXllcldpdGhFZmZlY3RzKEdyYXBoaWNzQ29udGV4dCYgY29u
dGV4dCwgY29uc3QgTGF5ZXJQYWkKICNlbmRpZgogCiAgICAgICAgICAgICAvLyBQdXNoIHRoZSBw
YXJlbnQgY29vcmRpbmF0ZSBzcGFjZSdzIGNsaXAuCi0gICAgICAgICAgICBwYXJlbnQoKS0+Y2xp
cFRvUmVjdChjb250ZXh0LCBzdGF0ZVNhdmVyLCBldmVudFJlZ2lvblN0YXRlU2F2ZXIsIHBhaW50
aW5nSW5mbywgcGFpbnRCZWhhdmlvciwgY2xpcFJlY3QpOworICAgICAgICAgICAgcGFyZW50KCkt
PmNsaXBUb1JlY3QoY29udGV4dCwgc3RhdGVTYXZlciwgcGFpbnRDb250ZXh0U3RhdGVTYXZlciwg
cGFpbnRpbmdJbmZvLCBwYWludEJlaGF2aW9yLCBjbGlwUmVjdCk7CiAgICAgICAgIH0KIAogICAg
ICAgICBwYWludExheWVyQnlBcHBseWluZ1RyYW5zZm9ybShjb250ZXh0LCBwYWludGluZ0luZm8s
IHBhaW50RmxhZ3MpOwpAQCAtMzA0Nyw3ICszMDQ4LDcgQEAgc3RkOjpwYWlyPFBhdGgsIFdpbmRS
dWxlPiBSZW5kZXJMYXllcjo6Y29tcHV0ZUNsaXBQYXRoKGNvbnN0IExheW91dFNpemUmIG9mZnNl
dEYKICAgICByZXR1cm4geyBQYXRoKCksIFdpbmRSdWxlOjpOb25aZXJvIH07CiB9CiAKLXZvaWQg
UmVuZGVyTGF5ZXI6OnNldHVwQ2xpcFBhdGgoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBHcmFw
aGljc0NvbnRleHRTdGF0ZVNhdmVyJiBzdGF0ZVNhdmVyLCBFdmVudFJlZ2lvbkNvbnRleHRTdGF0
ZVNhdmVyJiBldmVudFJlZ2lvblN0YXRlU2F2ZXIsIGNvbnN0IExheWVyUGFpbnRpbmdJbmZvJiBw
YWludGluZ0luZm8sIE9wdGlvblNldDxQYWludExheWVyRmxhZz4gcGFpbnRGbGFncywgY29uc3Qg
TGF5b3V0U2l6ZSYgb2Zmc2V0RnJvbVJvb3QpCit2b2lkIFJlbmRlckxheWVyOjpzZXR1cENsaXBQ
YXRoKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciYg
c3RhdGVTYXZlciwgUGFpbnRDb250ZXh0U3RhdGVTYXZlciYgcGFpbnRDb250ZXh0U3RhdGVTYXZl
ciwgY29uc3QgTGF5ZXJQYWludGluZ0luZm8mIHBhaW50aW5nSW5mbywgT3B0aW9uU2V0PFBhaW50
TGF5ZXJGbGFnPiBwYWludEZsYWdzLCBjb25zdCBMYXlvdXRTaXplJiBvZmZzZXRGcm9tUm9vdCkK
IHsKICAgICBib29sIGlzQ29sbGVjdGluZ0V2ZW50UmVnaW9uID0gcGFpbnRGbGFncy5jb250YWlu
cyhQYWludExheWVyRmxhZzo6Q29sbGVjdGluZ0V2ZW50UmVnaW9uKTsKICAgICBpZiAoIXJlbmRl
cmVyKCkuaGFzQ2xpcFBhdGgoKSB8fCAoY29udGV4dC5wYWludGluZ0Rpc2FibGVkKCkgJiYgIWlz
Q29sbGVjdGluZ0V2ZW50UmVnaW9uKSB8fCBwYWludGluZ0luZm8ucGFpbnREaXJ0eVJlY3QuaXNF
bXB0eSgpKQpAQCAtMzA2Nyw3ICszMDY4LDcgQEAgdm9pZCBSZW5kZXJMYXllcjo6c2V0dXBDbGlw
UGF0aChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIEdyYXBoaWNzQ29udGV4dFN0YXRlU2EKICAg
ICAgICAgYXV0byBbcGF0aCwgd2luZFJ1bGVdID0gY29tcHV0ZUNsaXBQYXRoKHBhaW50aW5nT2Zm
c2V0RnJvbVJvb3QsIGNsaXBwZWRDb250ZW50Qm91bmRzKTsKIAogICAgICAgICBpZiAoaXNDb2xs
ZWN0aW5nRXZlbnRSZWdpb24pIHsKLSAgICAgICAgICAgIGV2ZW50UmVnaW9uU3RhdGVTYXZlci5w
dXNoQ2xpcChwYXRoLCB3aW5kUnVsZSk7CisgICAgICAgICAgICBwYWludENvbnRleHRTdGF0ZVNh
dmVyLnB1c2hDbGlwKHBhdGgpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKQEAg
LTMxNTAsOSArMzE1MSw5IEBAIHZvaWQgUmVuZGVyTGF5ZXI6OmFwcGx5RmlsdGVycyhHcmFwaGlj
c0NvbnRleHQmIG9yaWdpbmFsQ29udGV4dCwgY29uc3QgTGF5ZXJQYWluCiAgICAgQ2xpcFJlY3Qg
YmFja2dyb3VuZFJlY3QgPSBsYXllckZyYWdtZW50cy5pc0VtcHR5KCkgPyBDbGlwUmVjdCgpIDog
bGF5ZXJGcmFnbWVudHNbMF0uYmFja2dyb3VuZFJlY3Q7CiAKICAgICBHcmFwaGljc0NvbnRleHRT
dGF0ZVNhdmVyIHN0YXRlU2F2ZXIob3JpZ2luYWxDb250ZXh0LCBmYWxzZSk7Ci0gICAgRXZlbnRS
ZWdpb25Db250ZXh0U3RhdGVTYXZlciBldmVudFJlZ2lvblN0YXRlU2F2ZXIocGFpbnRpbmdJbmZv
LmV2ZW50UmVnaW9uQ29udGV4dCk7CisgICAgUGFpbnRDb250ZXh0U3RhdGVTYXZlciBwYWludENv
bnRleHRTdGF0ZVNhdmVyKHBhaW50aW5nSW5mby5wYWludENvbnRleHQpOwogCi0gICAgY2xpcFRv
UmVjdChvcmlnaW5hbENvbnRleHQsIHN0YXRlU2F2ZXIsIGV2ZW50UmVnaW9uU3RhdGVTYXZlciwg
cGFpbnRpbmdJbmZvLCBiZWhhdmlvciwgYmFja2dyb3VuZFJlY3QpOworICAgIGNsaXBUb1JlY3Qo
b3JpZ2luYWxDb250ZXh0LCBzdGF0ZVNhdmVyLCBwYWludENvbnRleHRTdGF0ZVNhdmVyLCBwYWlu
dGluZ0luZm8sIGJlaGF2aW9yLCBiYWNrZ3JvdW5kUmVjdCk7CiAgICAgbV9maWx0ZXJzLT5hcHBs
eUZpbHRlckVmZmVjdChvcmlnaW5hbENvbnRleHQpOwogfQogCkBAIC0zMTcyLDYgKzMxNzMsNyBA
QCB2b2lkIFJlbmRlckxheWVyOjpwYWludExheWVyQ29udGVudHMoR3JhcGhpY3NDb250ZXh0JiBj
b250ZXh0LCBjb25zdCBMYXllclBhaW50aQogICAgIGJvb2wgaXNQYWludGluZ0NvbXBvc2l0ZWRC
YWNrZ3JvdW5kID0gbG9jYWxQYWludEZsYWdzLmNvbnRhaW5zKFBhaW50TGF5ZXJGbGFnOjpQYWlu
dGluZ0NvbXBvc2l0aW5nQmFja2dyb3VuZFBoYXNlKTsKICAgICBib29sIGlzUGFpbnRpbmdPdmVy
Zmxvd0NvbnRlbnRzID0gbG9jYWxQYWludEZsYWdzLmNvbnRhaW5zKFBhaW50TGF5ZXJGbGFnOjpQ
YWludGluZ092ZXJmbG93Q29udGVudHMpOwogICAgIGJvb2wgaXNDb2xsZWN0aW5nRXZlbnRSZWdp
b24gPSBsb2NhbFBhaW50RmxhZ3MuY29udGFpbnMoUGFpbnRMYXllckZsYWc6OkNvbGxlY3RpbmdF
dmVudFJlZ2lvbik7CisgICAgYm9vbCBpc0NvbGxlY3RpbmdBY2Nlc3NpYmlsaXR5UmVjdHMgPSBj
b250ZXh0LmludmFsaWRhdGluZ0FjY2Vzc2liaWxpdHlPYmplY3RSZWN0cygpOwogCiAgICAgYm9v
bCBpc1NlbGZQYWludGluZ0xheWVyID0gdGhpcy0+aXNTZWxmUGFpbnRpbmdMYXllcigpOwogCkBA
IC0zMTgxLDExICszMTgzLDExIEBAIHZvaWQgUmVuZGVyTGF5ZXI6OnBhaW50TGF5ZXJDb250ZW50
cyhHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IExheWVyUGFpbnRpCiAgICAgLy8gY29u
dGVudC4gV2hlbiBub3QgY29tcG9zaXRlZCBzY3JvbGxpbmcsIHRoZSBvdXRsaW5lIGlzIHBhaW50
ZWQgaW4gdGhlCiAgICAgLy8gZm9yZWdyb3VuZCBwaGFzZS4gU2luY2Ugc2Nyb2xsZWQgY29udGVu
dHMgYXJlIG1vdmVkIGJ5IHJlcGFpbnRpbmcgaW4gdGhpcwogICAgIC8vIGNhc2UsIHRoZSBvdXRs
aW5lIHdvbid0IGdldCAnZHJhZ2dlZCBhbG9uZycuCi0gICAgYm9vbCBzaG91bGRQYWludE91dGxp
bmUgPSBpc1NlbGZQYWludGluZ0xheWVyICYmICFpc1BhaW50aW5nT3ZlcmxheVNjcm9sbGJhcnMg
JiYgIWlzQ29sbGVjdGluZ0V2ZW50UmVnaW9uCisgICAgYm9vbCBzaG91bGRQYWludE91dGxpbmUg
PSBpc1NlbGZQYWludGluZ0xheWVyICYmICFpc1BhaW50aW5nT3ZlcmxheVNjcm9sbGJhcnMgJiYg
IWlzQ29sbGVjdGluZ0V2ZW50UmVnaW9uICYmICFpc0NvbGxlY3RpbmdBY2Nlc3NpYmlsaXR5UmVj
dHMKICAgICAgICAgJiYgKHJlbmRlcmVyKCkudmlldygpLnByaW50aW5nKCkgfHwgcmVuZGVyZXIo
KS52aWV3KCkuaGFzUmVuZGVyZXJzV2l0aE91dGxpbmUoKSkKICAgICAgICAgJiYgKChpc1BhaW50
aW5nU2Nyb2xsaW5nQ29udGVudCAmJiBpc1BhaW50aW5nQ29tcG9zaXRlZEJhY2tncm91bmQpCiAg
ICAgICAgIHx8ICghaXNQYWludGluZ1Njcm9sbGluZ0NvbnRlbnQgJiYgaXNQYWludGluZ0NvbXBv
c2l0ZWRGb3JlZ3JvdW5kKSk7Ci0gICAgYm9vbCBzaG91bGRQYWludENvbnRlbnQgPSBtX2hhc1Zp
c2libGVDb250ZW50ICYmIGlzU2VsZlBhaW50aW5nTGF5ZXIgJiYgIWlzUGFpbnRpbmdPdmVybGF5
U2Nyb2xsYmFycyAmJiAhaXNDb2xsZWN0aW5nRXZlbnRSZWdpb247CisgICAgYm9vbCBzaG91bGRQ
YWludENvbnRlbnQgPSBtX2hhc1Zpc2libGVDb250ZW50ICYmIGlzU2VsZlBhaW50aW5nTGF5ZXIg
JiYgIWlzUGFpbnRpbmdPdmVybGF5U2Nyb2xsYmFycyAmJiAhaXNDb2xsZWN0aW5nRXZlbnRSZWdp
b24gJiYgIWlzQ29sbGVjdGluZ0FjY2Vzc2liaWxpdHlSZWN0czsKIAogICAgIGlmIChsb2NhbFBh
aW50RmxhZ3MuY29udGFpbnMoUGFpbnRMYXllckZsYWc6OlBhaW50aW5nUm9vdEJhY2tncm91bmRP
bmx5KSAmJiAhcmVuZGVyZXIoKS5pc1JlbmRlclZpZXcoKSAmJiAhcmVuZGVyZXIoKS5pc0RvY3Vt
ZW50RWxlbWVudFJlbmRlcmVyKCkpIHsKICAgICAgICAgLy8gSWYgYmVnaW5UcmFuc3BhcmVuY3lM
YXllcnMgd2FzIGNhbGxlZCBwcmlvciB0byB0aGlzLCBlbnN1cmUgdGhlIHRyYW5zcGFyZW5jeSBz
dGF0ZSBpcyBjbGVhbmVkIHVwIGJlZm9yZSByZXR1cm5pbmcuCkBAIC0zMjEzLDEwICszMjE1LDEw
IEBAIHZvaWQgUmVuZGVyTGF5ZXI6OnBhaW50TGF5ZXJDb250ZW50cyhHcmFwaGljc0NvbnRleHQm
IGNvbnRleHQsIGNvbnN0IExheWVyUGFpbnRpCiAgICAgICAgIGNvbHVtbkF3YXJlT2Zmc2V0RnJv
bVJvb3QgPSB0b0xheW91dFNpemUoY29udmVydFRvTGF5ZXJDb29yZHMocGFpbnRpbmdJbmZvLnJv
b3RMYXllciwgTGF5b3V0UG9pbnQoKSwgQWRqdXN0Rm9yQ29sdW1ucykpOwogCiAgICAgR3JhcGhp
Y3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKGNvbnRleHQsIGZhbHNlKTsKLSAgICBFdmVu
dFJlZ2lvbkNvbnRleHRTdGF0ZVNhdmVyIGV2ZW50UmVnaW9uU3RhdGVTYXZlcihwYWludGluZ0lu
Zm8uZXZlbnRSZWdpb25Db250ZXh0KTsKKyAgICBQYWludENvbnRleHRTdGF0ZVNhdmVyIHBhaW50
Q29udGV4dFN0YXRlU2F2ZXIocGFpbnRpbmdJbmZvLnBhaW50Q29udGV4dCk7CiAKICAgICBpZiAo
c2hvdWxkQXBwbHlDbGlwUGF0aChwYWludGluZ0luZm8ucGFpbnRCZWhhdmlvciwgbG9jYWxQYWlu
dEZsYWdzKSkKLSAgICAgICAgc2V0dXBDbGlwUGF0aChjb250ZXh0LCBzdGF0ZVNhdmVyLCBldmVu
dFJlZ2lvblN0YXRlU2F2ZXIsIHBhaW50aW5nSW5mbywgbG9jYWxQYWludEZsYWdzLCBjb2x1bW5B
d2FyZU9mZnNldEZyb21Sb290KTsKKyAgICAgICAgc2V0dXBDbGlwUGF0aChjb250ZXh0LCBzdGF0
ZVNhdmVyLCBwYWludENvbnRleHRTdGF0ZVNhdmVyLCBwYWludGluZ0luZm8sIGxvY2FsUGFpbnRG
bGFncywgY29sdW1uQXdhcmVPZmZzZXRGcm9tUm9vdCk7CiAKICAgICBib29sIHNlbGVjdGlvbkFu
ZEJhY2tncm91bmRzT25seSA9IHBhaW50aW5nSW5mby5wYWludEJlaGF2aW9yLmNvbnRhaW5zKFBh
aW50QmVoYXZpb3I6OlNlbGVjdGlvbkFuZEJhY2tncm91bmRzT25seSk7CiAgICAgYm9vbCBzZWxl
Y3Rpb25Pbmx5ID0gcGFpbnRpbmdJbmZvLnBhaW50QmVoYXZpb3IuY29udGFpbnMoUGFpbnRCZWhh
dmlvcjo6U2VsZWN0aW9uT25seSk7CkBAIC0zMjczLDcgKzMyNzUsNyBAQCB2b2lkIFJlbmRlckxh
eWVyOjpwYWludExheWVyQ29udGVudHMoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBM
YXllclBhaW50aQogICAgICAgICAgICAgcGVyZm9ybU92ZXJsYXBUZXN0cygqbG9jYWxQYWludGlu
Z0luZm8ub3ZlcmxhcFRlc3RSZXF1ZXN0cywgbG9jYWxQYWludGluZ0luZm8ucm9vdExheWVyLCB0
aGlzKTsKIAogICAgICAgICBMYXlvdXRSZWN0IHBhaW50RGlydHlSZWN0ID0gbG9jYWxQYWludGlu
Z0luZm8ucGFpbnREaXJ0eVJlY3Q7Ci0gICAgICAgIGlmIChzaG91bGRQYWludENvbnRlbnQgfHwg
c2hvdWxkUGFpbnRPdXRsaW5lIHx8IGlzUGFpbnRpbmdPdmVybGF5U2Nyb2xsYmFycyB8fCBpc0Nv
bGxlY3RpbmdFdmVudFJlZ2lvbikgeworICAgICAgICBpZiAoc2hvdWxkUGFpbnRDb250ZW50IHx8
IHNob3VsZFBhaW50T3V0bGluZSB8fCBpc1BhaW50aW5nT3ZlcmxheVNjcm9sbGJhcnMgfHwgaXND
b2xsZWN0aW5nRXZlbnRSZWdpb24gfHwgaXNDb2xsZWN0aW5nQWNjZXNzaWJpbGl0eVJlY3RzKSB7
CiAgICAgICAgICAgICAvLyBDb2xsZWN0IHRoZSBmcmFnbWVudHMuIFRoaXMgd2lsbCBjb21wdXRl
IHRoZSBjbGlwIHJlY3RhbmdsZXMgYW5kIHBhaW50IG9mZnNldHMgZm9yIGVhY2ggbGF5ZXIgZnJh
Z21lbnQsIGFzIHdlbGwgYXMgd2hldGhlciBvciBub3QgdGhlIGNvbnRlbnQgb2YgZWFjaAogICAg
ICAgICAgICAgLy8gZnJhZ21lbnQgc2hvdWxkIHBhaW50LiBJZiB0aGUgcGFyZW50J3MgZmlsdGVy
IGRpY3RhdGVzIGZ1bGwgcmVwYWludCB0byBlbnN1cmUgcHJvcGVyIGZpbHRlciBlZmZlY3QsCiAg
ICAgICAgICAgICAvLyB1c2UgdGhlIG92ZXJmbG93IGNsaXAgYXMgZGlydHkgcmVjdCwgaW5zdGVh
ZCBvZiBubyBjbGlwcGluZy4gSXQgbWFpbnRhaW5zIHByb3BlciBjbGlwcGluZyBmb3Igb3ZlcmZs
b3c6OnNjcm9sbC4KQEAgLTMzMTEsNiArMzMxMyw5IEBAIHZvaWQgUmVuZGVyTGF5ZXI6OnBhaW50
TGF5ZXJDb250ZW50cyhHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IExheWVyUGFpbnRp
CiAgICAgICAgIGlmIChpc0NvbGxlY3RpbmdFdmVudFJlZ2lvbikKICAgICAgICAgICAgIGNvbGxl
Y3RFdmVudFJlZ2lvbkZvckZyYWdtZW50cyhsYXllckZyYWdtZW50cywgY3VycmVudENvbnRleHQs
IGxvY2FsUGFpbnRpbmdJbmZvLCBwYWludEJlaGF2aW9yKTsKIAorICAgICAgICBpZiAoaXNDb2xs
ZWN0aW5nQWNjZXNzaWJpbGl0eVJlY3RzKQorICAgICAgICAgICAgY29sbGVjdEFjY2Vzc2liaWxp
dHlSZWN0c0ZvckZyYWdtZW50cyhsYXllckZyYWdtZW50cywgY3VycmVudENvbnRleHQsIGxvY2Fs
UGFpbnRpbmdJbmZvLCBwYWludEJlaGF2aW9yKTsKKwogICAgICAgICBpZiAoc2hvdWxkUGFpbnRP
dXRsaW5lKQogICAgICAgICAgICAgcGFpbnRPdXRsaW5lRm9yRnJhZ21lbnRzKGxheWVyRnJhZ21l
bnRzLCBjdXJyZW50Q29udGV4dCwgbG9jYWxQYWludGluZ0luZm8sIHBhaW50QmVoYXZpb3IsIHN1
YnRyZWVQYWludFJvb3RGb3JSZW5kZXJlcik7CiAKQEAgLTMzOTEsOCArMzM5Niw4IEBAIHZvaWQg
UmVuZGVyTGF5ZXI6OnBhaW50TGF5ZXJCeUFwcGx5aW5nVHJhbnNmb3JtKEdyYXBoaWNzQ29udGV4
dCYgY29udGV4dCwgY29uc3QKICAgICBhdXRvIGFmZmluZVRyYW5zZm9ybSA9IHRyYW5zZm9ybS50
b0FmZmluZVRyYW5zZm9ybSgpOwogICAgIGNvbnRleHQuY29uY2F0Q1RNKGFmZmluZVRyYW5zZm9y
bSk7CiAKLSAgICBpZiAocGFpbnRpbmdJbmZvLmV2ZW50UmVnaW9uQ29udGV4dCkKLSAgICAgICAg
cGFpbnRpbmdJbmZvLmV2ZW50UmVnaW9uQ29udGV4dC0+cHVzaFRyYW5zZm9ybShhZmZpbmVUcmFu
c2Zvcm0pOworICAgIGlmIChwYWludGluZ0luZm8ucGFpbnRDb250ZXh0KQorICAgICAgICBwYWlu
dGluZ0luZm8ucGFpbnRDb250ZXh0LT5wdXNoVHJhbnNmb3JtKGFmZmluZVRyYW5zZm9ybSk7CiAK
ICAgICAvLyBPbmx5IHByb3BhZ2F0ZSB0aGUgc3VicGl4ZWwgb2Zmc2V0cyB0byB0aGUgZGVzY2Vu
ZGFudCBsYXllcnMsIGlmIHdlJ3JlIG5vdCB0aGUgcm9vdAogICAgIC8vIG9mIGEgU1ZHIHN1YnRy
ZWUsIHdoZXJlIG5vIHBpeGVsIHNuYXBwaW5nIGlzIGFwcGxpZWQgLS0gb25seSB0aGUgb3V0ZXJt
b3N0IDxzdmc+IGxheWVyCkBAIC0zNDA4LDggKzM0MTMsOCBAQCB2b2lkIFJlbmRlckxheWVyOjpw
YWludExheWVyQnlBcHBseWluZ1RyYW5zZm9ybShHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNv
bnN0CiAgICAgdHJhbnNmb3JtZWRQYWludGluZ0luZm8uc3VicGl4ZWxPZmZzZXQgPSBhZGp1c3Rl
ZFN1YnBpeGVsT2Zmc2V0OwogICAgIHBhaW50TGF5ZXJDb250ZW50c0FuZFJlZmxlY3Rpb24oY29u
dGV4dCwgdHJhbnNmb3JtZWRQYWludGluZ0luZm8sIHBhaW50RmxhZ3MpOwogCi0gICAgaWYgKHBh
aW50aW5nSW5mby5ldmVudFJlZ2lvbkNvbnRleHQpCi0gICAgICAgIHBhaW50aW5nSW5mby5ldmVu
dFJlZ2lvbkNvbnRleHQtPnBvcFRyYW5zZm9ybSgpOworICAgIGlmIChwYWludGluZ0luZm8ucGFp
bnRDb250ZXh0KQorICAgICAgICBwYWludGluZ0luZm8ucGFpbnRDb250ZXh0LT5wb3BUcmFuc2Zv
cm0oKTsKIAogICAgIGNvbnRleHQuc2V0Q1RNKG9sZFRyYW5zZm9ybSk7CiB9CkBAIC0zNjI2LDkg
KzM2MzEsOSBAQCB2b2lkIFJlbmRlckxheWVyOjpwYWludFRyYW5zZm9ybWVkTGF5ZXJJbnRvRnJh
Z21lbnRzKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgYwogICAgICAgICAgICAgcGFpbnRCZWhh
dmlvci5hZGQoUGFpbnRCZWhhdmlvcjo6Q29tcG9zaXRlZE92ZXJmbG93U2Nyb2xsQ29udGVudCk7
CiAKICAgICAgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKGNvbnRleHQs
IGZhbHNlKTsKLSAgICAgICAgRXZlbnRSZWdpb25Db250ZXh0U3RhdGVTYXZlciBldmVudFJlZ2lv
blN0YXRlU2F2ZXIocGFpbnRpbmdJbmZvLmV2ZW50UmVnaW9uQ29udGV4dCk7CisgICAgICAgIFBh
aW50Q29udGV4dFN0YXRlU2F2ZXIgcGFpbnRDb250ZXh0U3RhdGVTYXZlcihwYWludGluZ0luZm8u
cGFpbnRDb250ZXh0KTsKIAotICAgICAgICBwYXJlbnQoKS0+Y2xpcFRvUmVjdChjb250ZXh0LCBz
dGF0ZVNhdmVyLCBldmVudFJlZ2lvblN0YXRlU2F2ZXIsIHBhaW50aW5nSW5mbywgcGFpbnRCZWhh
dmlvciwgY2xpcFJlY3QpOworICAgICAgICBwYXJlbnQoKS0+Y2xpcFRvUmVjdChjb250ZXh0LCBz
dGF0ZVNhdmVyLCBwYWludENvbnRleHRTdGF0ZVNhdmVyLCBwYWludGluZ0luZm8sIHBhaW50QmVo
YXZpb3IsIGNsaXBSZWN0KTsKICAgICAgICAgcGFpbnRMYXllckJ5QXBwbHlpbmdUcmFuc2Zvcm0o
Y29udGV4dCwgcGFpbnRpbmdJbmZvLCBwYWludEZsYWdzLCBmcmFnbWVudC5wYWdpbmF0aW9uT2Zm
c2V0KTsKICAgICB9CiB9CkBAIC0zNjQ2LDEyICszNjUxLDEyIEBAIHZvaWQgUmVuZGVyTGF5ZXI6
OnBhaW50QmFja2dyb3VuZEZvckZyYWdtZW50cyhjb25zdCBMYXllckZyYWdtZW50cyYgbGF5ZXJG
cmFnbWVuCiAgICAgICAgICAgICBiZWdpblRyYW5zcGFyZW5jeUxheWVycyhjb250ZXh0Rm9yVHJh
bnNwYXJlbmN5TGF5ZXIsIGxvY2FsUGFpbnRpbmdJbmZvLCB0cmFuc3BhcmVuY3lQYWludERpcnR5
UmVjdCk7CiAgICAgCiAgICAgICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZl
cihjb250ZXh0LCBmYWxzZSk7Ci0gICAgICAgIEV2ZW50UmVnaW9uQ29udGV4dFN0YXRlU2F2ZXIg
ZXZlbnRSZWdpb25TdGF0ZVNhdmVyKGxvY2FsUGFpbnRpbmdJbmZvLmV2ZW50UmVnaW9uQ29udGV4
dCk7CisgICAgICAgIFBhaW50Q29udGV4dFN0YXRlU2F2ZXIgcGFpbnRDb250ZXh0U3RhdGVTYXZl
cihsb2NhbFBhaW50aW5nSW5mby5wYWludENvbnRleHQpOwogCiAgICAgICAgIGlmIChsb2NhbFBh
aW50aW5nSW5mby5jbGlwVG9EaXJ0eVJlY3QpIHsKICAgICAgICAgICAgIC8vIFBhaW50IG91ciBi
YWNrZ3JvdW5kIGZpcnN0LCBiZWZvcmUgcGFpbnRpbmcgYW55IGNoaWxkIGxheWVycy4KICAgICAg
ICAgICAgIC8vIEVzdGFibGlzaCB0aGUgY2xpcCB1c2VkIHRvIHBhaW50IG91ciBiYWNrZ3JvdW5k
LgotICAgICAgICAgICAgY2xpcFRvUmVjdChjb250ZXh0LCBzdGF0ZVNhdmVyLCBldmVudFJlZ2lv
blN0YXRlU2F2ZXIsIGxvY2FsUGFpbnRpbmdJbmZvLCBwYWludEJlaGF2aW9yLCBmcmFnbWVudC5i
YWNrZ3JvdW5kUmVjdCwgRG9Ob3RJbmNsdWRlU2VsZkZvckJvcmRlclJhZGl1cyk7IC8vIEJhY2tn
cm91bmQgcGFpbnRpbmcgd2lsbCBoYW5kbGUgY2xpcHBpbmcgdG8gc2VsZi4KKyAgICAgICAgICAg
IGNsaXBUb1JlY3QoY29udGV4dCwgc3RhdGVTYXZlciwgcGFpbnRDb250ZXh0U3RhdGVTYXZlciwg
bG9jYWxQYWludGluZ0luZm8sIHBhaW50QmVoYXZpb3IsIGZyYWdtZW50LmJhY2tncm91bmRSZWN0
LCBEb05vdEluY2x1ZGVTZWxmRm9yQm9yZGVyUmFkaXVzKTsgLy8gQmFja2dyb3VuZCBwYWludGlu
ZyB3aWxsIGhhbmRsZSBjbGlwcGluZyB0byBzZWxmLgogICAgICAgICB9CiAgICAgICAgIAogICAg
ICAgICAvLyBQYWludCB0aGUgYmFja2dyb3VuZC4KQEAgLTM2OTcsMTIgKzM3MDIsMTIgQEAgdm9p
ZCBSZW5kZXJMYXllcjo6cGFpbnRGb3JlZ3JvdW5kRm9yRnJhZ21lbnRzKGNvbnN0IExheWVyRnJh
Z21lbnRzJiBsYXllckZyYWdtZW4KICAgICAgICAgbG9jYWxQYWludEJlaGF2aW9yLmFkZChQYWlu
dEJlaGF2aW9yOjpDb21wb3NpdGVkT3ZlcmZsb3dTY3JvbGxDb250ZW50KTsKIAogICAgIEdyYXBo
aWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcihjb250ZXh0LCBmYWxzZSk7Ci0gICAgRXZl
bnRSZWdpb25Db250ZXh0U3RhdGVTYXZlciBldmVudFJlZ2lvblN0YXRlU2F2ZXIobG9jYWxQYWlu
dGluZ0luZm8uZXZlbnRSZWdpb25Db250ZXh0KTsKKyAgICBQYWludENvbnRleHRTdGF0ZVNhdmVy
IHBhaW50Q29udGV4dFN0YXRlU2F2ZXIobG9jYWxQYWludGluZ0luZm8ucGFpbnRDb250ZXh0KTsK
IAogICAgIC8vIE9wdGltaXplIGNsaXBwaW5nIGZvciB0aGUgc2luZ2xlIGZyYWdtZW50IGNhc2Uu
CiAgICAgYm9vbCBzaG91bGRDbGlwID0gbG9jYWxQYWludGluZ0luZm8uY2xpcFRvRGlydHlSZWN0
ICYmIGxheWVyRnJhZ21lbnRzLnNpemUoKSA9PSAxICYmIGxheWVyRnJhZ21lbnRzWzBdLnNob3Vs
ZFBhaW50Q29udGVudCAmJiAhbGF5ZXJGcmFnbWVudHNbMF0uZm9yZWdyb3VuZFJlY3QuaXNFbXB0
eSgpOwogICAgIGlmIChzaG91bGRDbGlwKQotICAgICAgICBjbGlwVG9SZWN0KGNvbnRleHQsIHN0
YXRlU2F2ZXIsIGV2ZW50UmVnaW9uU3RhdGVTYXZlciwgbG9jYWxQYWludGluZ0luZm8sIGxvY2Fs
UGFpbnRCZWhhdmlvciwgbGF5ZXJGcmFnbWVudHNbMF0uZm9yZWdyb3VuZFJlY3QpOworICAgICAg
ICBjbGlwVG9SZWN0KGNvbnRleHQsIHN0YXRlU2F2ZXIsIHBhaW50Q29udGV4dFN0YXRlU2F2ZXIs
IGxvY2FsUGFpbnRpbmdJbmZvLCBsb2NhbFBhaW50QmVoYXZpb3IsIGxheWVyRnJhZ21lbnRzWzBd
LmZvcmVncm91bmRSZWN0KTsKICAgICAKICAgICAvLyBXZSBoYXZlIHRvIGxvb3AgdGhyb3VnaCBl
dmVyeSBmcmFnbWVudCBtdWx0aXBsZSB0aW1lcywgc2luY2Ugd2UgaGF2ZSB0byByZXBhaW50IGlu
IGVhY2ggc3BlY2lmaWMgcGhhc2UgaW4gb3JkZXIgZm9yCiAgICAgLy8gaW50ZXJsZWF2aW5nIG9m
IHRoZSBmcmFnbWVudHMgdG8gd29yayBwcm9wZXJseS4KQEAgLTM3NDQsMTAgKzM3NDksMTAgQEAg
dm9pZCBSZW5kZXJMYXllcjo6cGFpbnRGb3JlZ3JvdW5kRm9yRnJhZ21lbnRzV2l0aFBoYXNlKFBh
aW50UGhhc2UgcGhhc2UsIGNvbnN0IEwKICAgICAgICAgICAgIGNvbnRpbnVlOwogCiAgICAgICAg
IEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcihjb250ZXh0LCBmYWxzZSk7Ci0g
ICAgICAgIEV2ZW50UmVnaW9uQ29udGV4dFN0YXRlU2F2ZXIgZXZlbnRSZWdpb25TdGF0ZVNhdmVy
KGxvY2FsUGFpbnRpbmdJbmZvLmV2ZW50UmVnaW9uQ29udGV4dCk7CisgICAgICAgIFBhaW50Q29u
dGV4dFN0YXRlU2F2ZXIgcGFpbnRDb250ZXh0U3RhdGVTYXZlcihsb2NhbFBhaW50aW5nSW5mby5w
YWludENvbnRleHQpOwogCiAgICAgICAgIGlmIChzaG91bGRDbGlwKQotICAgICAgICAgICAgY2xp
cFRvUmVjdChjb250ZXh0LCBzdGF0ZVNhdmVyLCBldmVudFJlZ2lvblN0YXRlU2F2ZXIsIGxvY2Fs
UGFpbnRpbmdJbmZvLCBwYWludEJlaGF2aW9yLCBmcmFnbWVudC5mb3JlZ3JvdW5kUmVjdCk7Cisg
ICAgICAgICAgICBjbGlwVG9SZWN0KGNvbnRleHQsIHN0YXRlU2F2ZXIsIHBhaW50Q29udGV4dFN0
YXRlU2F2ZXIsIGxvY2FsUGFpbnRpbmdJbmZvLCBwYWludEJlaGF2aW9yLCBmcmFnbWVudC5mb3Jl
Z3JvdW5kUmVjdCk7CiAgICAgCiAgICAgICAgIFBhaW50SW5mbyBwYWludEluZm8oY29udGV4dCwg
ZnJhZ21lbnQuZm9yZWdyb3VuZFJlY3QucmVjdCgpLCBwaGFzZSwgcGFpbnRCZWhhdmlvciwgc3Vi
dHJlZVBhaW50Um9vdEZvclJlbmRlcmVyLCBudWxscHRyLCBudWxscHRyLCAmbG9jYWxQYWludGlu
Z0luZm8ucm9vdExheWVyLT5yZW5kZXJlcigpLCB0aGlzLCBsb2NhbFBhaW50aW5nSW5mby5yZXF1
aXJlU2VjdXJpdHlPcmlnaW5BY2Nlc3NGb3JXaWRnZXRzKTsKICAgICAgICAgaWYgKHBoYXNlID09
IFBhaW50UGhhc2U6OkZvcmVncm91bmQpCkBAIC0zNzY3LDkgKzM3NzIsOSBAQCB2b2lkIFJlbmRl
ckxheWVyOjpwYWludE91dGxpbmVGb3JGcmFnbWVudHMoY29uc3QgTGF5ZXJGcmFnbWVudHMmIGxh
eWVyRnJhZ21lbnRzLAogICAgICAgICBQYWludEluZm8gcGFpbnRJbmZvKGNvbnRleHQsIGZyYWdt
ZW50LmJhY2tncm91bmRSZWN0LnJlY3QoKSwgUGFpbnRQaGFzZTo6U2VsZk91dGxpbmUsIHBhaW50
QmVoYXZpb3IsIHN1YnRyZWVQYWludFJvb3RGb3JSZW5kZXJlciwgbnVsbHB0ciwgbnVsbHB0ciwg
JmxvY2FsUGFpbnRpbmdJbmZvLnJvb3RMYXllci0+cmVuZGVyZXIoKSwgdGhpcyk7CiAKICAgICAg
ICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKGNvbnRleHQsIGZhbHNlKTsK
LSAgICAgICAgRXZlbnRSZWdpb25Db250ZXh0U3RhdGVTYXZlciBldmVudFJlZ2lvblN0YXRlU2F2
ZXIobG9jYWxQYWludGluZ0luZm8uZXZlbnRSZWdpb25Db250ZXh0KTsKKyAgICAgICAgUGFpbnRD
b250ZXh0U3RhdGVTYXZlciBwYWludENvbnRleHRTdGF0ZVNhdmVyKGxvY2FsUGFpbnRpbmdJbmZv
LnBhaW50Q29udGV4dCk7CiAKLSAgICAgICAgY2xpcFRvUmVjdChjb250ZXh0LCBzdGF0ZVNhdmVy
LCBldmVudFJlZ2lvblN0YXRlU2F2ZXIsIGxvY2FsUGFpbnRpbmdJbmZvLCBwYWludEJlaGF2aW9y
LCBmcmFnbWVudC5iYWNrZ3JvdW5kUmVjdCwgRG9Ob3RJbmNsdWRlU2VsZkZvckJvcmRlclJhZGl1
cyk7CisgICAgICAgIGNsaXBUb1JlY3QoY29udGV4dCwgc3RhdGVTYXZlciwgcGFpbnRDb250ZXh0
U3RhdGVTYXZlciwgbG9jYWxQYWludGluZ0luZm8sIHBhaW50QmVoYXZpb3IsIGZyYWdtZW50LmJh
Y2tncm91bmRSZWN0LCBEb05vdEluY2x1ZGVTZWxmRm9yQm9yZGVyUmFkaXVzKTsKICAgICAgICAg
cmVuZGVyZXIoKS5wYWludChwYWludEluZm8sIHBhaW50T2Zmc2V0Rm9yUmVuZGVyZXIoZnJhZ21l
bnQsIGxvY2FsUGFpbnRpbmdJbmZvKSk7CiAgICAgfQogfQpAQCAtMzc4MiwxMCArMzc4NywxMCBA
QCB2b2lkIFJlbmRlckxheWVyOjpwYWludE1hc2tGb3JGcmFnbWVudHMoY29uc3QgTGF5ZXJGcmFn
bWVudHMmIGxheWVyRnJhZ21lbnRzLCBHcgogICAgICAgICAgICAgY29udGludWU7CiAKICAgICAg
ICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKGNvbnRleHQsIGZhbHNlKTsK
LSAgICAgICAgRXZlbnRSZWdpb25Db250ZXh0U3RhdGVTYXZlciBldmVudFJlZ2lvblN0YXRlU2F2
ZXIobG9jYWxQYWludGluZ0luZm8uZXZlbnRSZWdpb25Db250ZXh0KTsKKyAgICAgICAgUGFpbnRD
b250ZXh0U3RhdGVTYXZlciBwYWludENvbnRleHRTdGF0ZVNhdmVyKGxvY2FsUGFpbnRpbmdJbmZv
LnBhaW50Q29udGV4dCk7CiAKICAgICAgICAgaWYgKGxvY2FsUGFpbnRpbmdJbmZvLmNsaXBUb0Rp
cnR5UmVjdCkKLSAgICAgICAgICAgIGNsaXBUb1JlY3QoY29udGV4dCwgc3RhdGVTYXZlciwgZXZl
bnRSZWdpb25TdGF0ZVNhdmVyLCBsb2NhbFBhaW50aW5nSW5mbywgcGFpbnRCZWhhdmlvciwgZnJh
Z21lbnQuYmFja2dyb3VuZFJlY3QsIERvTm90SW5jbHVkZVNlbGZGb3JCb3JkZXJSYWRpdXMpOyAv
LyBNYXNrIHBhaW50aW5nIHdpbGwgaGFuZGxlIGNsaXBwaW5nIHRvIHNlbGYuCisgICAgICAgICAg
ICBjbGlwVG9SZWN0KGNvbnRleHQsIHN0YXRlU2F2ZXIsIHBhaW50Q29udGV4dFN0YXRlU2F2ZXIs
IGxvY2FsUGFpbnRpbmdJbmZvLCBwYWludEJlaGF2aW9yLCBmcmFnbWVudC5iYWNrZ3JvdW5kUmVj
dCwgRG9Ob3RJbmNsdWRlU2VsZkZvckJvcmRlclJhZGl1cyk7IC8vIE1hc2sgcGFpbnRpbmcgd2ls
bCBoYW5kbGUgY2xpcHBpbmcgdG8gc2VsZi4KICAgICAgICAgCiAgICAgICAgIC8vIFBhaW50IHRo
ZSBtYXNrLgogICAgICAgICAvLyBGSVhNRTogRXZlbnR1YWxseSB3ZSB3aWxsIGNvbGxlY3QgdGhl
IHJlZ2lvbiBmcm9tIHRoZSBmcmFnbWVudCBpdHNlbGYgaW5zdGVhZCBvZiBqdXN0IGZyb20gdGhl
IHBhaW50IGluZm8uCkBAIC0zODAxLDEwICszODA2LDEwIEBAIHZvaWQgUmVuZGVyTGF5ZXI6OnBh
aW50Q2hpbGRDbGlwcGluZ01hc2tGb3JGcmFnbWVudHMoY29uc3QgTGF5ZXJGcmFnbWVudHMmIGxh
eWVyCiAgICAgICAgICAgICBjb250aW51ZTsKIAogICAgICAgICBHcmFwaGljc0NvbnRleHRTdGF0
ZVNhdmVyIHN0YXRlU2F2ZXIoY29udGV4dCwgZmFsc2UpOwotICAgICAgICBFdmVudFJlZ2lvbkNv
bnRleHRTdGF0ZVNhdmVyIGV2ZW50UmVnaW9uU3RhdGVTYXZlcihsb2NhbFBhaW50aW5nSW5mby5l
dmVudFJlZ2lvbkNvbnRleHQpOworICAgICAgICBQYWludENvbnRleHRTdGF0ZVNhdmVyIHBhaW50
Q29udGV4dFN0YXRlU2F2ZXIobG9jYWxQYWludGluZ0luZm8ucGFpbnRDb250ZXh0KTsKIAogICAg
ICAgICBpZiAobG9jYWxQYWludGluZ0luZm8uY2xpcFRvRGlydHlSZWN0KQotICAgICAgICAgICAg
Y2xpcFRvUmVjdChjb250ZXh0LCBzdGF0ZVNhdmVyLCBldmVudFJlZ2lvblN0YXRlU2F2ZXIsIGxv
Y2FsUGFpbnRpbmdJbmZvLCBwYWludEJlaGF2aW9yLCBmcmFnbWVudC5mb3JlZ3JvdW5kUmVjdCwg
SW5jbHVkZVNlbGZGb3JCb3JkZXJSYWRpdXMpOyAvLyBDaGlsZCBjbGlwcGluZyBtYXNrIHBhaW50
aW5nIHdpbGwgaGFuZGxlIGNsaXBwaW5nIHRvIHNlbGYuCisgICAgICAgICAgICBjbGlwVG9SZWN0
KGNvbnRleHQsIHN0YXRlU2F2ZXIsIHBhaW50Q29udGV4dFN0YXRlU2F2ZXIsIGxvY2FsUGFpbnRp
bmdJbmZvLCBwYWludEJlaGF2aW9yLCBmcmFnbWVudC5mb3JlZ3JvdW5kUmVjdCwgSW5jbHVkZVNl
bGZGb3JCb3JkZXJSYWRpdXMpOyAvLyBDaGlsZCBjbGlwcGluZyBtYXNrIHBhaW50aW5nIHdpbGwg
aGFuZGxlIGNsaXBwaW5nIHRvIHNlbGYuCiAKICAgICAgICAgLy8gUGFpbnQgdGhlIGNsaXBwZWQg
bWFzay4KICAgICAgICAgUGFpbnRJbmZvIHBhaW50SW5mbyhjb250ZXh0LCBmcmFnbWVudC5iYWNr
Z3JvdW5kUmVjdC5yZWN0KCksIFBhaW50UGhhc2U6OkNsaXBwaW5nTWFzaywgcGFpbnRCZWhhdmlv
ciwgc3VidHJlZVBhaW50Um9vdEZvclJlbmRlcmVyLCBudWxscHRyLCBudWxscHRyLCAmbG9jYWxQ
YWludGluZ0luZm8ucm9vdExheWVyLT5yZW5kZXJlcigpLCB0aGlzKTsKQEAgLTM4MjEsMjUgKzM4
MjYsMzYgQEAgdm9pZCBSZW5kZXJMYXllcjo6cGFpbnRPdmVyZmxvd0NvbnRyb2xzRm9yRnJhZ21l
bnRzKGNvbnN0IExheWVyRnJhZ21lbnRzJiBsYXllckYKICAgICAgICAgICAgIGNvbnRpbnVlOwog
CiAgICAgICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcihjb250ZXh0LCBm
YWxzZSk7Ci0gICAgICAgIEV2ZW50UmVnaW9uQ29udGV4dFN0YXRlU2F2ZXIgZXZlbnRSZWdpb25T
dGF0ZVNhdmVyKGxvY2FsUGFpbnRpbmdJbmZvLmV2ZW50UmVnaW9uQ29udGV4dCk7CisgICAgICAg
IFBhaW50Q29udGV4dFN0YXRlU2F2ZXIgcGFpbnRDb250ZXh0U3RhdGVTYXZlcihsb2NhbFBhaW50
aW5nSW5mby5wYWludENvbnRleHQpOwogCi0gICAgICAgIGNsaXBUb1JlY3QoY29udGV4dCwgc3Rh
dGVTYXZlciwgZXZlbnRSZWdpb25TdGF0ZVNhdmVyLCBsb2NhbFBhaW50aW5nSW5mbywgeyB9LCBm
cmFnbWVudC5iYWNrZ3JvdW5kUmVjdCk7CisgICAgICAgIGNsaXBUb1JlY3QoY29udGV4dCwgc3Rh
dGVTYXZlciwgcGFpbnRDb250ZXh0U3RhdGVTYXZlciwgbG9jYWxQYWludGluZ0luZm8sIHsgfSwg
ZnJhZ21lbnQuYmFja2dyb3VuZFJlY3QpOwogICAgICAgICBtX3Njcm9sbGFibGVBcmVhLT5wYWlu
dE92ZXJmbG93Q29udHJvbHMoY29udGV4dCwgcm91bmRlZEludFBvaW50KHBhaW50T2Zmc2V0Rm9y
UmVuZGVyZXIoZnJhZ21lbnQsIGxvY2FsUGFpbnRpbmdJbmZvKSksIHNuYXBwZWRJbnRSZWN0KGZy
YWdtZW50LmJhY2tncm91bmRSZWN0LnJlY3QoKSksIHRydWUpOwogICAgIH0KIH0KIAogdm9pZCBS
ZW5kZXJMYXllcjo6Y29sbGVjdEV2ZW50UmVnaW9uRm9yRnJhZ21lbnRzKGNvbnN0IExheWVyRnJh
Z21lbnRzJiBsYXllckZyYWdtZW50cywgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBM
YXllclBhaW50aW5nSW5mbyYgbG9jYWxQYWludGluZ0luZm8sIE9wdGlvblNldDxQYWludEJlaGF2
aW9yPiBwYWludEJlaGF2aW9yKQogewotICAgIEFTU0VSVChsb2NhbFBhaW50aW5nSW5mby5ldmVu
dFJlZ2lvbkNvbnRleHQpOworICAgIEFTU0VSVChpczxFdmVudFJlZ2lvbkNvbnRleHQ+KGxvY2Fs
UGFpbnRpbmdJbmZvLnBhaW50Q29udGV4dCkpOwogICAgIGZvciAoY29uc3QgYXV0byYgZnJhZ21l
bnQgOiBsYXllckZyYWdtZW50cykgewogICAgICAgICBQYWludEluZm8gcGFpbnRJbmZvKGNvbnRl
eHQsIGZyYWdtZW50LmZvcmVncm91bmRSZWN0LnJlY3QoKSwgUGFpbnRQaGFzZTo6RXZlbnRSZWdp
b24sIHBhaW50QmVoYXZpb3IpOwotICAgICAgICBwYWludEluZm8uZXZlbnRSZWdpb25Db250ZXh0
ID0gbG9jYWxQYWludGluZ0luZm8uZXZlbnRSZWdpb25Db250ZXh0OworICAgICAgICBwYWludElu
Zm8ucGFpbnRDb250ZXh0ID0gbG9jYWxQYWludGluZ0luZm8ucGFpbnRDb250ZXh0OwogICAgICAg
ICBpZiAobG9jYWxQYWludGluZ0luZm8uY2xpcFRvRGlydHlSZWN0KSAvLyBjbGlwLXBhdGg/Ci0g
ICAgICAgICAgICBwYWludEluZm8uZXZlbnRSZWdpb25Db250ZXh0LT5wdXNoQ2xpcChlbmNsb3Np
bmdJbnRSZWN0KGZyYWdtZW50LmJhY2tncm91bmRSZWN0LnJlY3QoKSkpOworICAgICAgICAgICAg
cGFpbnRJbmZvLnBhaW50Q29udGV4dC0+cHVzaENsaXAoZW5jbG9zaW5nSW50UmVjdChmcmFnbWVu
dC5iYWNrZ3JvdW5kUmVjdC5yZWN0KCkpKTsKIAogICAgICAgICByZW5kZXJlcigpLnBhaW50KHBh
aW50SW5mbywgcGFpbnRPZmZzZXRGb3JSZW5kZXJlcihmcmFnbWVudCwgbG9jYWxQYWludGluZ0lu
Zm8pKTsKICAgICAgICAgaWYgKGxvY2FsUGFpbnRpbmdJbmZvLmNsaXBUb0RpcnR5UmVjdCkKLSAg
ICAgICAgICAgIHBhaW50SW5mby5ldmVudFJlZ2lvbkNvbnRleHQtPnBvcENsaXAoKTsKKyAgICAg
ICAgICAgIHBhaW50SW5mby5wYWludENvbnRleHQtPnBvcENsaXAoKTsKKyAgICB9Cit9CisKK3Zv
aWQgUmVuZGVyTGF5ZXI6OmNvbGxlY3RBY2Nlc3NpYmlsaXR5UmVjdHNGb3JGcmFnbWVudHMoY29u
c3QgTGF5ZXJGcmFnbWVudHMmIGxheWVyRnJhZ21lbnRzLCBHcmFwaGljc0NvbnRleHQmIGNvbnRl
eHQsIGNvbnN0IExheWVyUGFpbnRpbmdJbmZvJiBsb2NhbFBhaW50aW5nSW5mbywgT3B0aW9uU2V0
PFBhaW50QmVoYXZpb3I+IHBhaW50QmVoYXZpb3IpCit7CisgICAgQVNTRVJUKGNvbnRleHQuaW52
YWxpZGF0aW5nQWNjZXNzaWJpbGl0eU9iamVjdFJlY3RzKCkpOworICAgIGZvciAoY29uc3QgYXV0
byYgZnJhZ21lbnQgOiBsYXllckZyYWdtZW50cykgeworICAgICAgICBQYWludEluZm8gcGFpbnRJ
bmZvKGNvbnRleHQsIGZyYWdtZW50LmZvcmVncm91bmRSZWN0LnJlY3QoKSwgUGFpbnRQaGFzZTo6
QWNjZXNzaWJpbGl0eSwgcGFpbnRCZWhhdmlvcik7CisgICAgICAgIHBhaW50SW5mby5wYWludENv
bnRleHQgPSBsb2NhbFBhaW50aW5nSW5mby5wYWludENvbnRleHQ7CisKKyAgICAgICAgcmVuZGVy
ZXIoKS5wYWludChwYWludEluZm8sIHBhaW50T2Zmc2V0Rm9yUmVuZGVyZXIoZnJhZ21lbnQsIGxv
Y2FsUGFpbnRpbmdJbmZvKSk7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJMYXllci5oCmluZGV4IDFhODRlNDlhNDAwYi4uODNkMjU3M2M2ZjJhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuaApAQCAtNjcsMTAgKzY3LDEwIEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIGNsYXNzIENTU0ZpbHRlcjsKIGNsYXNzIENsaXBSZWN0czsKIGNsYXNzIENsaXBS
ZWN0c0NhY2hlOwotY2xhc3MgRXZlbnRSZWdpb25Db250ZXh0OwogY2xhc3MgSGl0VGVzdFJlcXVl
c3Q7CiBjbGFzcyBIaXRUZXN0UmVzdWx0OwogY2xhc3MgSGl0VGVzdGluZ1RyYW5zZm9ybVN0YXRl
OworY2xhc3MgUGFpbnRDb250ZXh0OwogY2xhc3MgUmVnaW9uOwogY2xhc3MgUmVuZGVyRnJhZ21l
bnRlZEZsb3c7CiBjbGFzcyBSZW5kZXJHZW9tZXRyeU1hcDsKQEAgLTYzOSw3ICs2MzksNyBAQCBw
dWJsaWM6CiAgICAgLy8gZnJvbnQuICBUaGUgaGl0VGVzdCBtZXRob2QgbG9va3MgZm9yIG1vdXNl
IGV2ZW50cyBieSB3YWxraW5nCiAgICAgLy8gbGF5ZXJzIHRoYXQgaW50ZXJzZWN0IHRoZSBwb2lu
dCBmcm9tIGZyb250IHRvIGJhY2suCiAgICAgdm9pZCBwYWludChHcmFwaGljc0NvbnRleHQmLCBj
b25zdCBMYXlvdXRSZWN0JiBkYW1hZ2VSZWN0LCBjb25zdCBMYXlvdXRTaXplJiBzdWJwaXhlbE9m
ZnNldCA9IExheW91dFNpemUoKSwgT3B0aW9uU2V0PFBhaW50QmVoYXZpb3I+ID0gUGFpbnRCZWhh
dmlvcjo6Tm9ybWFsLAotICAgICAgICBSZW5kZXJPYmplY3QqIHN1YnRyZWVQYWludFJvb3QgPSBu
dWxscHRyLCBPcHRpb25TZXQ8UGFpbnRMYXllckZsYWc+ID0geyB9LCBTZWN1cml0eU9yaWdpblBh
aW50UG9saWN5ID0gU2VjdXJpdHlPcmlnaW5QYWludFBvbGljeTo6QW55T3JpZ2luLCBFdmVudFJl
Z2lvbkNvbnRleHQqID0gbnVsbHB0cik7CisgICAgICAgIFJlbmRlck9iamVjdCogc3VidHJlZVBh
aW50Um9vdCA9IG51bGxwdHIsIE9wdGlvblNldDxQYWludExheWVyRmxhZz4gPSB7IH0sIFNlY3Vy
aXR5T3JpZ2luUGFpbnRQb2xpY3kgPSBTZWN1cml0eU9yaWdpblBhaW50UG9saWN5OjpBbnlPcmln
aW4sIFBhaW50Q29udGV4dCogPSBudWxscHRyKTsKICAgICBXRUJDT1JFX0VYUE9SVCBib29sIGhp
dFRlc3QoY29uc3QgSGl0VGVzdFJlcXVlc3QmLCBIaXRUZXN0UmVzdWx0Jik7CiAgICAgYm9vbCBo
aXRUZXN0KGNvbnN0IEhpdFRlc3RSZXF1ZXN0JiwgY29uc3QgSGl0VGVzdExvY2F0aW9uJiwgSGl0
VGVzdFJlc3VsdCYpOwogCkBAIC05MzMsNyArOTMzLDcgQEAgcHJpdmF0ZToKICAgICAgICAgT3B0
aW9uU2V0PFBhaW50QmVoYXZpb3I+IHBhaW50QmVoYXZpb3I7CiAgICAgICAgIGJvb2wgcmVxdWly
ZVNlY3VyaXR5T3JpZ2luQWNjZXNzRm9yV2lkZ2V0czsKICAgICAgICAgYm9vbCBjbGlwVG9EaXJ0
eVJlY3QgeyB0cnVlIH07Ci0gICAgICAgIEV2ZW50UmVnaW9uQ29udGV4dCogZXZlbnRSZWdpb25D
b250ZXh0IHsgbnVsbHB0ciB9OworICAgICAgICBQYWludENvbnRleHQqIHBhaW50Q29udGV4dCB7
IG51bGxwdHIgfTsKICAgICB9OwogCiAgICAgTGF5b3V0UG9pbnQgcGFpbnRPZmZzZXRGb3JSZW5k
ZXJlcihjb25zdCBMYXllckZyYWdtZW50JiBmcmFnbWVudCwgY29uc3QgTGF5ZXJQYWludGluZ0lu
Zm8mIHBhaW50aW5nSW5mbykgY29uc3QKQEAgLTk1OSw3ICs5NTksNyBAQCBwcml2YXRlOgogCiAg
ICAgTGF5b3V0UmVjdCBjbGlwUmVjdFJlbGF0aXZlVG9BbmNlc3RvcihSZW5kZXJMYXllciogYW5j
ZXN0b3IsIExheW91dFNpemUgb2Zmc2V0RnJvbUFuY2VzdG9yLCBjb25zdCBMYXlvdXRSZWN0JiBj
b25zdHJhaW5pbmdSZWN0KSBjb25zdDsKIAotICAgIHZvaWQgY2xpcFRvUmVjdChHcmFwaGljc0Nv
bnRleHQmLCBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyJiwgRXZlbnRSZWdpb25Db250ZXh0U3Rh
dGVTYXZlciYsIGNvbnN0IExheWVyUGFpbnRpbmdJbmZvJiwgT3B0aW9uU2V0PFBhaW50QmVoYXZp
b3I+LCBjb25zdCBDbGlwUmVjdCYsIEJvcmRlclJhZGl1c0NsaXBwaW5nUnVsZSA9IEluY2x1ZGVT
ZWxmRm9yQm9yZGVyUmFkaXVzKTsKKyAgICB2b2lkIGNsaXBUb1JlY3QoR3JhcGhpY3NDb250ZXh0
JiwgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciYsIFBhaW50Q29udGV4dFN0YXRlU2F2ZXImLCBj
b25zdCBMYXllclBhaW50aW5nSW5mbyYsIE9wdGlvblNldDxQYWludEJlaGF2aW9yPiwgY29uc3Qg
Q2xpcFJlY3QmLCBCb3JkZXJSYWRpdXNDbGlwcGluZ1J1bGUgPSBJbmNsdWRlU2VsZkZvckJvcmRl
clJhZGl1cyk7CiAKICAgICBib29sIHNob3VsZFJlcGFpbnRBZnRlckxheW91dCgpIGNvbnN0Owog
CkBAIC0xMDc2LDcgKzEwNzYsNyBAQCBwcml2YXRlOgogCiAgICAgc3RkOjpwYWlyPFBhdGgsIFdp
bmRSdWxlPiBjb21wdXRlQ2xpcFBhdGgoY29uc3QgTGF5b3V0U2l6ZSYgb2Zmc2V0RnJvbVJvb3Qs
IGNvbnN0IExheW91dFJlY3QmIHJvb3RSZWxhdGl2ZUJvdW5kc0Zvck5vbkJveGVzKSBjb25zdDsK
IAotICAgIHZvaWQgc2V0dXBDbGlwUGF0aChHcmFwaGljc0NvbnRleHQmLCBHcmFwaGljc0NvbnRl
eHRTdGF0ZVNhdmVyJiwgRXZlbnRSZWdpb25Db250ZXh0U3RhdGVTYXZlciYsIGNvbnN0IExheWVy
UGFpbnRpbmdJbmZvJiwgT3B0aW9uU2V0PFBhaW50TGF5ZXJGbGFnPiwgY29uc3QgTGF5b3V0U2l6
ZSYgb2Zmc2V0RnJvbVJvb3QpOworICAgIHZvaWQgc2V0dXBDbGlwUGF0aChHcmFwaGljc0NvbnRl
eHQmLCBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyJiwgUGFpbnRDb250ZXh0U3RhdGVTYXZlciYs
IGNvbnN0IExheWVyUGFpbnRpbmdJbmZvJiwgT3B0aW9uU2V0PFBhaW50TGF5ZXJGbGFnPiwgY29u
c3QgTGF5b3V0U2l6ZSYgb2Zmc2V0RnJvbVJvb3QpOwogCiAgICAgdm9pZCBlbnN1cmVMYXllckZp
bHRlcnMoKTsKICAgICB2b2lkIGNsZWFyTGF5ZXJGaWx0ZXJzKCk7CkBAIC0xMTA4LDYgKzExMDgs
NyBAQCBwcml2YXRlOgogICAgIHZvaWQgcGFpbnRDaGlsZENsaXBwaW5nTWFza0ZvckZyYWdtZW50
cyhjb25zdCBMYXllckZyYWdtZW50cyYsIEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IExheWVyUGFp
bnRpbmdJbmZvJiwgT3B0aW9uU2V0PFBhaW50QmVoYXZpb3I+LCBSZW5kZXJPYmplY3QqIHBhaW50
aW5nUm9vdEZvclJlbmRlcmVyKTsKICAgICB2b2lkIHBhaW50VHJhbnNmb3JtZWRMYXllckludG9G
cmFnbWVudHMoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgTGF5ZXJQYWludGluZ0luZm8mLCBPcHRp
b25TZXQ8UGFpbnRMYXllckZsYWc+KTsKICAgICB2b2lkIGNvbGxlY3RFdmVudFJlZ2lvbkZvckZy
YWdtZW50cyhjb25zdCBMYXllckZyYWdtZW50cyYsIEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IExh
eWVyUGFpbnRpbmdJbmZvJiwgT3B0aW9uU2V0PFBhaW50QmVoYXZpb3I+KTsKKyAgICB2b2lkIGNv
bGxlY3RBY2Nlc3NpYmlsaXR5UmVjdHNGb3JGcmFnbWVudHMoY29uc3QgTGF5ZXJGcmFnbWVudHMm
LCBHcmFwaGljc0NvbnRleHQmLCBjb25zdCBMYXllclBhaW50aW5nSW5mbyYsIE9wdGlvblNldDxQ
YWludEJlaGF2aW9yPik7CiAKICAgICBSZW5kZXJMYXllciogdHJhbnNwYXJlbnRQYWludGluZ0Fu
Y2VzdG9yKCk7CiAgICAgdm9pZCBiZWdpblRyYW5zcGFyZW5jeUxheWVycyhHcmFwaGljc0NvbnRl
eHQmLCBjb25zdCBMYXllclBhaW50aW5nSW5mbyYsIGNvbnN0IExheW91dFJlY3QmIGRpcnR5UmVj
dCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNr
aW5nLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3Bw
CmluZGV4IGJjMjIwMzk4ODZiYy4uNzMyZDkzNWZhNGNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcApAQCAtMzQwOCw3ICszNDA4LDcgQEAg
dm9pZCBSZW5kZXJMYXllckJhY2tpbmc6OnNldENvbnRlbnRzTmVlZERpc3BsYXlJblJlY3QoY29u
c3QgTGF5b3V0UmVjdCYgciwgR3JhcGgKIAogdm9pZCBSZW5kZXJMYXllckJhY2tpbmc6OnBhaW50
SW50b0xheWVyKGNvbnN0IEdyYXBoaWNzTGF5ZXIqIGdyYXBoaWNzTGF5ZXIsIEdyYXBoaWNzQ29u
dGV4dCYgY29udGV4dCwKICAgICBjb25zdCBJbnRSZWN0JiBwYWludERpcnR5UmVjdCwgLy8gSW4g
dGhlIGNvb3JkcyBvZiByb290TGF5ZXIuCi0gICAgT3B0aW9uU2V0PFBhaW50QmVoYXZpb3I+IHBh
aW50QmVoYXZpb3IsIEV2ZW50UmVnaW9uQ29udGV4dCogZXZlbnRSZWdpb25Db250ZXh0KQorICAg
IE9wdGlvblNldDxQYWludEJlaGF2aW9yPiBwYWludEJlaGF2aW9yLCBQYWludENvbnRleHQqIHBh
aW50Q29udGV4dCkKIHsKICNpZiBVU0UoT1dOSU5HX0xBWUVSX0JFQVJfVFJBUCkKICAgICBSRUxF
QVNFX0FTU0VSVF9XSVRIX01FU1NBR0UobV9vd25pbmdMYXllckJlYXJUcmFwID09IEJFQVJfVFJB
UF9WQUxVRSwgIlJlbmRlckxheWVyQmFja2luZzo6cGFpbnRJbnRvTGF5ZXIoKTogbV9vd25pbmdM
YXllckJlYXJUcmFwIGNhdWdodCB0aGUgYmVhciAoNTU2OTkyOTIpIik7CkBAIC0zNDI3LDE0ICsz
NDI3LDE0IEBAIHZvaWQgUmVuZGVyTGF5ZXJCYWNraW5nOjpwYWludEludG9MYXllcihjb25zdCBH
cmFwaGljc0xheWVyKiBncmFwaGljc0xheWVyLCBHcmFwCiAKICAgICBhdXRvIHBhaW50RmxhZ3Mg
PSBwYWludEZsYWdzRm9yTGF5ZXIoKmdyYXBoaWNzTGF5ZXIpOwogCi0gICAgaWYgKGV2ZW50UmVn
aW9uQ29udGV4dCkKKyAgICBpZiAoaXM8RXZlbnRSZWdpb25Db250ZXh0PihwYWludENvbnRleHQp
KQogICAgICAgICBwYWludEZsYWdzLmFkZChSZW5kZXJMYXllcjo6UGFpbnRMYXllckZsYWc6OkNv
bGxlY3RpbmdFdmVudFJlZ2lvbik7CiAKICAgICBSZW5kZXJPYmplY3Q6OlNldExheW91dE5lZWRl
ZEZvcmJpZGRlblNjb3BlIGZvcmJpZFNldE5lZWRzTGF5b3V0KHJlbmRlcmVyKCkpOwogCiAgICAg
YXV0byBwYWludE9uZUxheWVyID0gWyZdKFJlbmRlckxheWVyJiBsYXllciwgT3B0aW9uU2V0PFJl
bmRlckxheWVyOjpQYWludExheWVyRmxhZz4gcGFpbnRGbGFncykgewogICAgICAgICBMb2NhbEZy
YW1lVmlldzo6UGFpbnRpbmdTdGF0ZSBwYWludGluZ1N0YXRlOwotICAgICAgICBpZiAoIWV2ZW50
UmVnaW9uQ29udGV4dCkgeworICAgICAgICBpZiAoIXBhaW50Q29udGV4dCkgewogICAgICAgICAg
ICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsUGFpbnQobGF5ZXIucmVuZGVyZXIoKSk7
CiAKICAgICAgICAgICAgIGlmIChsYXllci5pc1JlbmRlclZpZXdMYXllcigpKQpAQCAtMzQ0Miwx
OCArMzQ0MiwxOCBAQCB2b2lkIFJlbmRlckxheWVyQmFja2luZzo6cGFpbnRJbnRvTGF5ZXIoY29u
c3QgR3JhcGhpY3NMYXllciogZ3JhcGhpY3NMYXllciwgR3JhcAogICAgICAgICB9CiAKICAgICAg
ICAgUmVuZGVyTGF5ZXI6OkxheWVyUGFpbnRpbmdJbmZvIHBhaW50aW5nSW5mbygmbV9vd25pbmdM
YXllciwgcGFpbnREaXJ0eVJlY3QsIHBhaW50QmVoYXZpb3IsIC1tX3N1YnBpeGVsT2Zmc2V0RnJv
bVJlbmRlcmVyKTsKLSAgICAgICAgcGFpbnRpbmdJbmZvLmV2ZW50UmVnaW9uQ29udGV4dCA9IGV2
ZW50UmVnaW9uQ29udGV4dDsKKyAgICAgICAgcGFpbnRpbmdJbmZvLnBhaW50Q29udGV4dCA9IHBh
aW50Q29udGV4dDsKIAogICAgICAgICBpZiAoJmxheWVyID09ICZtX293bmluZ0xheWVyKSB7CiAg
ICAgICAgICAgICBsYXllci5wYWludExheWVyQ29udGVudHMoY29udGV4dCwgcGFpbnRpbmdJbmZv
LCBwYWludEZsYWdzKTsKIAogICAgICAgICAgICAgYXV0byogc2Nyb2xsYWJsZUFyZWEgPSBsYXll
ci5zY3JvbGxhYmxlQXJlYSgpOwotICAgICAgICAgICAgaWYgKHNjcm9sbGFibGVBcmVhICYmIHNj
cm9sbGFibGVBcmVhLT5jb250YWluc0RpcnR5T3ZlcmxheVNjcm9sbGJhcnMoKSAmJiAhZXZlbnRS
ZWdpb25Db250ZXh0KQorICAgICAgICAgICAgaWYgKHNjcm9sbGFibGVBcmVhICYmIHNjcm9sbGFi
bGVBcmVhLT5jb250YWluc0RpcnR5T3ZlcmxheVNjcm9sbGJhcnMoKSAmJiAhcGFpbnRDb250ZXh0
KQogICAgICAgICAgICAgICAgIGxheWVyLnBhaW50TGF5ZXJDb250ZW50cyhjb250ZXh0LCBwYWlu
dGluZ0luZm8sIHBhaW50RmxhZ3MgfCBSZW5kZXJMYXllcjo6UGFpbnRMYXllckZsYWc6OlBhaW50
aW5nT3ZlcmxheVNjcm9sbGJhcnMpOwogICAgICAgICB9IGVsc2UKICAgICAgICAgICAgIGxheWVy
LnBhaW50TGF5ZXJXaXRoRWZmZWN0cyhjb250ZXh0LCBwYWludGluZ0luZm8sIHBhaW50RmxhZ3Mp
OwogCi0gICAgICAgIGlmICghZXZlbnRSZWdpb25Db250ZXh0KSB7CisgICAgICAgIGlmICghcGFp
bnRDb250ZXh0KSB7CiAgICAgICAgICAgICBpZiAobGF5ZXIuaXNSZW5kZXJWaWV3TGF5ZXIoKSkK
ICAgICAgICAgICAgICAgICByZW5kZXJlcigpLnZpZXcoKS5mcmFtZVZpZXcoKS5kaWRQYWludENv
bnRlbnRzKGNvbnRleHQsIHBhaW50RGlydHlSZWN0LCBwYWludGluZ1N0YXRlKTsKIApAQCAtMzQ3
NSwxNCArMzQ3NSwxNCBAQCB2b2lkIFJlbmRlckxheWVyQmFja2luZzo6cGFpbnRJbnRvTGF5ZXIo
Y29uc3QgR3JhcGhpY3NMYXllciogZ3JhcGhpY3NMYXllciwgR3JhcAogCiAgICAgICAgIGlmIChn
cmFwaGljc0xheWVyLT5wYWludGluZ1BoYXNlKCkuY29udGFpbnMoR3JhcGhpY3NMYXllclBhaW50
aW5nUGhhc2U6Ok92ZXJmbG93Q29udGVudHMpKQogICAgICAgICAgICAgc2hhcmluZ0xheWVyUGFp
bnRGbGFncy5hZGQoUmVuZGVyTGF5ZXI6OlBhaW50TGF5ZXJGbGFnOjpQYWludGluZ092ZXJmbG93
Q29udGVudHMpOwotICAgICAgICBpZiAoZXZlbnRSZWdpb25Db250ZXh0KQorICAgICAgICBpZiAo
aXM8RXZlbnRSZWdpb25Db250ZXh0PihwYWludENvbnRleHQpKQogICAgICAgICAgICAgc2hhcmlu
Z0xheWVyUGFpbnRGbGFncy5hZGQoUmVuZGVyTGF5ZXI6OlBhaW50TGF5ZXJGbGFnOjpDb2xsZWN0
aW5nRXZlbnRSZWdpb24pOwogCiAgICAgICAgIGZvciAoYXV0byYgbGF5ZXJXZWFrUHRyIDogbV9i
YWNraW5nU2hhcmluZ0xheWVycykKICAgICAgICAgICAgIHBhaW50T25lTGF5ZXIoKmxheWVyV2Vh
a1B0ciwgc2hhcmluZ0xheWVyUGFpbnRGbGFncyk7CiAgICAgfQogCi0gICAgaWYgKCFldmVudFJl
Z2lvbkNvbnRleHQpCisgICAgaWYgKCFwYWludENvbnRleHQpCiAgICAgICAgIGNvbXBvc2l0b3Io
KS5kaWRQYWludEJhY2tpbmcodGhpcyk7CiAKICNpZiBVU0UoT1dOSU5HX0xBWUVSX0JFQVJfVFJB
UCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tp
bmcuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuaAppbmRl
eCBjMDRiOTNkNmI1OGYuLmE5YjBmNGQ3MDM5YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJMYXllckJhY2tpbmcuaApAQCAtMzUsOSArMzUsOSBAQAogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKLWNsYXNzIEV2ZW50UmVnaW9uQ29udGV4dDsKIGNsYXNzIEtleWZyYW1lTGlz
dDsKIGNsYXNzIFBhaW50ZWRDb250ZW50c0luZm87CitjbGFzcyBQYWludENvbnRleHQ7CiBjbGFz
cyBSZW5kZXJMYXllckNvbXBvc2l0b3I7CiBjbGFzcyBUaWxlZEJhY2tpbmc7CiBjbGFzcyBUcmFu
c2Zvcm1hdGlvbk1hdHJpeDsKQEAgLTM5Niw3ICszOTYsNyBAQCBwcml2YXRlOgogICAgIGJvb2wg
aGFzVGlsZWRCYWNraW5nRmxhdHRlbmluZ0xheWVyKCkgY29uc3QgeyByZXR1cm4gKG1fY2hpbGRD
b250YWlubWVudExheWVyICYmIG1faXNGcmFtZUxheWVyV2l0aFRpbGVkQmFja2luZyk7IH0KICAg
ICBHcmFwaGljc0xheWVyKiB0aWxlQ2FjaGVGbGF0dGVuaW5nTGF5ZXIoKSBjb25zdCB7IHJldHVy
biBtX2lzRnJhbWVMYXllcldpdGhUaWxlZEJhY2tpbmcgPyBtX2NoaWxkQ29udGFpbm1lbnRMYXll
ci5nZXQoKSA6IG51bGxwdHI7IH0KIAotICAgIHZvaWQgcGFpbnRJbnRvTGF5ZXIoY29uc3QgR3Jh
cGhpY3NMYXllciosIEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEludFJlY3QmIHBhaW50RGlydHlS
ZWN0LCBPcHRpb25TZXQ8UGFpbnRCZWhhdmlvcj4sIEV2ZW50UmVnaW9uQ29udGV4dCogPSBudWxs
cHRyKTsKKyAgICB2b2lkIHBhaW50SW50b0xheWVyKGNvbnN0IEdyYXBoaWNzTGF5ZXIqLCBHcmFw
aGljc0NvbnRleHQmLCBjb25zdCBJbnRSZWN0JiBwYWludERpcnR5UmVjdCwgT3B0aW9uU2V0PFBh
aW50QmVoYXZpb3I+LCBQYWludENvbnRleHQqID0gbnVsbHB0cik7CiAgICAgT3B0aW9uU2V0PFJl
bmRlckxheWVyOjpQYWludExheWVyRmxhZz4gcGFpbnRGbGFnc0ZvckxheWVyKGNvbnN0IEdyYXBo
aWNzTGF5ZXImKSBjb25zdDsKICAgICAKICAgICB2b2lkIHBhaW50RGVidWdPdmVybGF5cyhjb25z
dCBHcmFwaGljc0xheWVyKiwgR3JhcGhpY3NDb250ZXh0Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdE1hcmtlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyTGlzdE1hcmtlci5jcHAKaW5kZXggMjQ2ZWNlMjczYTNlLi40YzAwMTI3
ODIwZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0TWFy
a2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdE1hcmtlci5j
cHAKQEAgLTE1ODQsNyArMTU4NCw3IEBAIGF1dG8gUmVuZGVyTGlzdE1hcmtlcjo6dGV4dFJ1bigp
IGNvbnN0IC0+IFRleHRSdW5XaXRoVW5kZXJseWluZ1N0cmluZwogCiB2b2lkIFJlbmRlckxpc3RN
YXJrZXI6OnBhaW50KFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2ludCYgcGFp
bnRPZmZzZXQpCiB7Ci0gICAgaWYgKHBhaW50SW5mby5waGFzZSAhPSBQYWludFBoYXNlOjpGb3Jl
Z3JvdW5kKQorICAgIGlmIChwYWludEluZm8ucGhhc2UgIT0gUGFpbnRQaGFzZTo6Rm9yZWdyb3Vu
ZCAmJiBwYWludEluZm8ucGhhc2UgIT0gUGFpbnRQaGFzZTo6QWNjZXNzaWJpbGl0eSkKICAgICAg
ICAgcmV0dXJuOwogICAgIAogICAgIGlmIChzdHlsZSgpLnZpc2liaWxpdHkoKSAhPSBWaXNpYmls
aXR5OjpWaXNpYmxlKQpAQCAtMTYwMCw2ICsxNjAwLDEyIEBAIHZvaWQgUmVuZGVyTGlzdE1hcmtl
cjo6cGFpbnQoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFBvaW50JiBwYWludE9m
ZnNlCiAgICAgCiAgICAgYXV0byBtYXJrZXJSZWN0ID0gcmVsYXRpdmVNYXJrZXJSZWN0KCk7CiAg
ICAgbWFya2VyUmVjdC5tb3ZlQnkoYm94T3JpZ2luKTsKKworICAgIGlmIChwYWludEluZm8ucGhh
c2UgPT0gUGFpbnRQaGFzZTo6QWNjZXNzaWJpbGl0eSkgeworICAgICAgICBwYWludEluZm8uYWNj
ZXNzaWJpbGl0eVBhaW50Q29udGV4dCgpLT50YWtlQm91bmRzKCp0aGlzLCBtYXJrZXJSZWN0KTsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KKwogICAgIGlmIChtYXJrZXJSZWN0LmlzRW1wdHkoKSkK
ICAgICAgICAgcmV0dXJuOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyUmVwbGFjZWQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJlcGxh
Y2VkLmNwcAppbmRleCAxMzQxNjFhMTZhNjUuLmU5ZWUyZjNiMGRiNCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJlcGxhY2VkLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyUmVwbGFjZWQuY3BwCkBAIC0yMTcsMTEgKzIxNywxNiBAQCB2
b2lkIFJlbmRlclJlcGxhY2VkOjpwYWludChQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5
b3V0UG9pbnQmIHBhaW50T2Zmc2V0KQogICAgICAgICBpZiAodmlzaWJsZVRvSGl0VGVzdGluZygp
KSB7CiAgICAgICAgICAgICBhdXRvIGJvcmRlclJlY3QgPSBMYXlvdXRSZWN0KGFkanVzdGVkUGFp
bnRPZmZzZXQsIHNpemUoKSk7CiAgICAgICAgICAgICBhdXRvIGJvcmRlclJlZ2lvbiA9IGFwcHJv
eGltYXRlQXNSZWdpb24oc3R5bGUoKS5nZXRSb3VuZGVkQm9yZGVyRm9yKGJvcmRlclJlY3QpKTsK
LSAgICAgICAgICAgIHBhaW50SW5mby5ldmVudFJlZ2lvbkNvbnRleHQtPnVuaXRlKGJvcmRlclJl
Z2lvbiwgKnRoaXMsIHN0eWxlKCkpOworICAgICAgICAgICAgcGFpbnRJbmZvLmV2ZW50UmVnaW9u
UGFpbnRDb250ZXh0KCktPnVuaXRlKGJvcmRlclJlZ2lvbiwgKnRoaXMsIHN0eWxlKCkpOwogICAg
ICAgICB9CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKKyAgICBpZiAocGFpbnRJbmZvLnBoYXNl
ID09IFBhaW50UGhhc2U6OkFjY2Vzc2liaWxpdHkpIHsKKyAgICAgICAgcGFpbnRJbmZvLmFjY2Vz
c2liaWxpdHlQYWludENvbnRleHQoKS0+dGFrZUJvdW5kcygqdGhpcywgRmxvYXRSZWN0KGFkanVz
dGVkUGFpbnRPZmZzZXQsIHNpemUoKSkpOworICAgICAgICByZXR1cm47CisgICAgfQorCiAgICAg
U2V0TGF5b3V0TmVlZGVkRm9yYmlkZGVuU2NvcGUgc2NvcGUoKnRoaXMpOwogCiAgICAgR3JhcGhp
Y3NDb250ZXh0U3RhdGVTYXZlciBzYXZlZEdyYXBoaWNzQ29udGV4dChwYWludEluZm8uY29udGV4
dCgpLCBmYWxzZSk7CkBAIC0zMTEsNyArMzE2LDggQEAgYm9vbCBSZW5kZXJSZXBsYWNlZDo6c2hv
dWxkUGFpbnQoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFBvaW50JiBwYWludE8K
ICAgICAgICAgJiYgcGFpbnRJbmZvLnBoYXNlICE9IFBhaW50UGhhc2U6OlNlbGZPdXRsaW5lCiAg
ICAgICAgICYmIHBhaW50SW5mby5waGFzZSAhPSBQYWludFBoYXNlOjpTZWxlY3Rpb24KICAgICAg
ICAgJiYgcGFpbnRJbmZvLnBoYXNlICE9IFBhaW50UGhhc2U6Ok1hc2sKLSAgICAgICAgJiYgcGFp
bnRJbmZvLnBoYXNlICE9IFBhaW50UGhhc2U6OkV2ZW50UmVnaW9uKQorICAgICAgICAmJiBwYWlu
dEluZm8ucGhhc2UgIT0gUGFpbnRQaGFzZTo6RXZlbnRSZWdpb24KKyAgICAgICAgJiYgcGFpbnRJ
bmZvLnBoYXNlICE9IFBhaW50UGhhc2U6OkFjY2Vzc2liaWxpdHkpCiAgICAgICAgIHJldHVybiBm
YWxzZTsKIAogICAgIGlmICghcGFpbnRJbmZvLnNob3VsZFBhaW50V2l0aGluUm9vdCgqdGhpcykp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU2Nyb2xsYmFyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTY3JvbGxiYXIuY3BwCmluZGV4IDAy
MGM4ZWMyOTU2Mi4uMDhjY2M1MWQwZTRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyU2Nyb2xsYmFyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyU2Nyb2xsYmFyLmNwcApAQCAtMTAwLDcgKzEwMCw3IEBAIHZvaWQgUmVuZGVyU2Nyb2xs
YmFyOjpzdHlsZUNoYW5nZWQoKQogICAgIHVwZGF0ZVNjcm9sbGJhclBhcnRzKCk7CiB9CiAKLXZv
aWQgUmVuZGVyU2Nyb2xsYmFyOjpwYWludChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0
IEludFJlY3QmIGRhbWFnZVJlY3QsIFdpZGdldDo6U2VjdXJpdHlPcmlnaW5QYWludFBvbGljeSwg
RXZlbnRSZWdpb25Db250ZXh0KikKK3ZvaWQgUmVuZGVyU2Nyb2xsYmFyOjpwYWludChHcmFwaGlj
c0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEludFJlY3QmIGRhbWFnZVJlY3QsIFdpZGdldDo6U2Vj
dXJpdHlPcmlnaW5QYWludFBvbGljeSwgUGFpbnRDb250ZXh0KikKIHsKICAgICBpZiAoY29udGV4
dC5pbnZhbGlkYXRpbmdDb250cm9sVGludHMoKSkgewogICAgICAgICB1cGRhdGVTY3JvbGxiYXJQ
YXJ0cygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNjcm9s
bGJhci5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNjcm9sbGJhci5oCmluZGV4
IGQ0NjU1Y2YxNzVkMy4uZDYxNDI5ODk1MWFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyU2Nyb2xsYmFyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclNjcm9sbGJhci5oCkBAIC02OCw3ICs2OCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBz
ZXRQYXJlbnQoU2Nyb2xsVmlldyopIG92ZXJyaWRlOwogICAgIHZvaWQgc2V0RW5hYmxlZChib29s
KSBvdmVycmlkZTsKIAotICAgIHZvaWQgcGFpbnQoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgSW50
UmVjdCYgZGFtYWdlUmVjdCwgV2lkZ2V0OjpTZWN1cml0eU9yaWdpblBhaW50UG9saWN5LCBFdmVu
dFJlZ2lvbkNvbnRleHQqKSBvdmVycmlkZTsKKyAgICB2b2lkIHBhaW50KEdyYXBoaWNzQ29udGV4
dCYsIGNvbnN0IEludFJlY3QmIGRhbWFnZVJlY3QsIFdpZGdldDo6U2VjdXJpdHlPcmlnaW5QYWlu
dFBvbGljeSwgUGFpbnRDb250ZXh0Kikgb3ZlcnJpZGU7CiAKICAgICB2b2lkIHNldEhvdmVyZWRQ
YXJ0KFNjcm9sbGJhclBhcnQpIG92ZXJyaWRlOwogICAgIHZvaWQgc2V0UHJlc3NlZFBhcnQoU2Ny
b2xsYmFyUGFydCkgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyV2lkZ2V0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJXaWRn
ZXQuY3BwCmluZGV4IDBkNGUwNzAxNjgyMy4uYjFkZTlmMTRhMmM4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyV2lkZ2V0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyV2lkZ2V0LmNwcApAQCAtMjYzLDE3ICsyNjMsMTcgQEAgdm9pZCBS
ZW5kZXJXaWRnZXQ6OnBhaW50Q29udGVudHMoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExh
eW91dFBvaW50JiBwYWludE8KICAgICAgICAgcGFpbnRSZWN0Lm1vdmUoLXdpZGdldFBhaW50T2Zm
c2V0KTsKICAgICB9CiAKLSAgICBpZiAocGFpbnRJbmZvLmV2ZW50UmVnaW9uQ29udGV4dCkgewor
ICAgIGlmIChwYWludEluZm8ucGFpbnRDb250ZXh0KSB7CiAgICAgICAgIEFmZmluZVRyYW5zZm9y
bSB0cmFuc2Zvcm07CiAgICAgICAgIHRyYW5zZm9ybS50cmFuc2xhdGUoY29udGVudFBhaW50T2Zm
c2V0KTsKLSAgICAgICAgcGFpbnRJbmZvLmV2ZW50UmVnaW9uQ29udGV4dC0+cHVzaFRyYW5zZm9y
bSh0cmFuc2Zvcm0pOworICAgICAgICBwYWludEluZm8ucGFpbnRDb250ZXh0LT5wdXNoVHJhbnNm
b3JtKHRyYW5zZm9ybSk7CiAgICAgfQogCiAgICAgLy8gRklYTUU6IFJlbW92ZSByZXBhaW50cmVj
dCBlbmNsb3NpbmcvaW50ZWdyYWwgc25hcHBpbmcgd2hlbiBSZW5kZXJXaWRnZXQgYmVjb21lcyBk
ZXZpY2UgcGl4ZWwgc25hcHBlZC4KLSAgICBtX3dpZGdldC0+cGFpbnQocGFpbnRJbmZvLmNvbnRl
eHQoKSwgc25hcHBlZEludFJlY3QocGFpbnRSZWN0KSwgcGFpbnRJbmZvLnJlcXVpcmVTZWN1cml0
eU9yaWdpbkFjY2Vzc0ZvcldpZGdldHMgPyBXaWRnZXQ6OlNlY3VyaXR5T3JpZ2luUGFpbnRQb2xp
Y3k6OkFjY2Vzc2libGVPcmlnaW5Pbmx5IDogV2lkZ2V0OjpTZWN1cml0eU9yaWdpblBhaW50UG9s
aWN5OjpBbnlPcmlnaW4sIHBhaW50SW5mby5ldmVudFJlZ2lvbkNvbnRleHQpOworICAgIG1fd2lk
Z2V0LT5wYWludChwYWludEluZm8uY29udGV4dCgpLCBzbmFwcGVkSW50UmVjdChwYWludFJlY3Qp
LCBwYWludEluZm8ucmVxdWlyZVNlY3VyaXR5T3JpZ2luQWNjZXNzRm9yV2lkZ2V0cyA/IFdpZGdl
dDo6U2VjdXJpdHlPcmlnaW5QYWludFBvbGljeTo6QWNjZXNzaWJsZU9yaWdpbk9ubHkgOiBXaWRn
ZXQ6OlNlY3VyaXR5T3JpZ2luUGFpbnRQb2xpY3k6OkFueU9yaWdpbiwgcGFpbnRJbmZvLnBhaW50
Q29udGV4dCk7CiAKLSAgICBpZiAocGFpbnRJbmZvLmV2ZW50UmVnaW9uQ29udGV4dCkKLSAgICAg
ICAgcGFpbnRJbmZvLmV2ZW50UmVnaW9uQ29udGV4dC0+cG9wVHJhbnNmb3JtKCk7CisgICAgaWYg
KHBhaW50SW5mby5wYWludENvbnRleHQpCisgICAgICAgIHBhaW50SW5mby5wYWludENvbnRleHQt
PnBvcFRyYW5zZm9ybSgpOwogCiAgICAgaWYgKCF3aWRnZXRQYWludE9mZnNldC5pc1plcm8oKSkK
ICAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQoKS50cmFuc2xhdGUoLXdpZGdldFBhaW50T2Zmc2V0
KTsKQEAgLTMzNyw3ICszMzcsNyBAQCB2b2lkIFJlbmRlcldpZGdldDo6cGFpbnQoUGFpbnRJbmZv
JiBwYWludEluZm8sIGNvbnN0IExheW91dFBvaW50JiBwYWludE9mZnNldCkKICAgICBpZiAoc3R5
bGUoKS5oYXNCb3JkZXJSYWRpdXMoKSkKICAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQoKS5yZXN0
b3JlKCk7CiAKLSAgICBpZiAocGFpbnRJbmZvLnBoYXNlID09IFBhaW50UGhhc2U6OkV2ZW50UmVn
aW9uKQorICAgIGlmIChwYWludEluZm8ucGhhc2UgPT0gUGFpbnRQaGFzZTo6RXZlbnRSZWdpb24g
fHwgcGFpbnRJbmZvLnBoYXNlID09IFBhaW50UGhhc2U6OkFjY2Vzc2liaWxpdHkpCiAgICAgICAg
IHJldHVybjsKIAogICAgIC8vIFBhaW50IGEgcGFydGlhbGx5IHRyYW5zcGFyZW50IHdhc2ggb3Zl
ciBzZWxlY3RlZCB3aWRnZXRzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1RleHRCb3hQYWludGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9UZXh0Qm94UGFp
bnRlci5jcHAKaW5kZXggMDg5YjhlNWRhZDJhLi5jNzc4MTBlMTJjNTQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9UZXh0Qm94UGFpbnRlci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1RleHRCb3hQYWludGVyLmNwcApAQCAtODEsNyArODEsNyBAQCBUZXh0
Qm94UGFpbnRlcjxUZXh0Qm94UGF0aD46OlRleHRCb3hQYWludGVyKFRleHRCb3hQYXRoJiYgdGV4
dEJveCwgUGFpbnRJbmZvJiBwYQogICAgICwgbV91c2VDdXN0b21VbmRlcmxpbmVzKG1fY29udGFp
bnNDb21wb3NpdGlvbiAmJiBtX3JlbmRlcmVyLmZyYW1lKCkuZWRpdG9yKCkuY29tcG9zaXRpb25V
c2VzQ3VzdG9tVW5kZXJsaW5lcygpKQogICAgICwgbV9lbXBoYXNpc01hcmtFeGlzdHNBbmRJc0Fi
b3ZlKFJlbmRlclRleHQ6OmVtcGhhc2lzTWFya0V4aXN0c0FuZElzQWJvdmUobV9yZW5kZXJlciwg
bV9zdHlsZSkpCiB7Ci0gICAgQVNTRVJUKHBhaW50SW5mby5waGFzZSA9PSBQYWludFBoYXNlOjpG
b3JlZ3JvdW5kIHx8IHBhaW50SW5mby5waGFzZSA9PSBQYWludFBoYXNlOjpTZWxlY3Rpb24gfHwg
cGFpbnRJbmZvLnBoYXNlID09IFBhaW50UGhhc2U6OlRleHRDbGlwIHx8IHBhaW50SW5mby5waGFz
ZSA9PSBQYWludFBoYXNlOjpFdmVudFJlZ2lvbik7CisgICAgQVNTRVJUKHBhaW50SW5mby5waGFz
ZSA9PSBQYWludFBoYXNlOjpGb3JlZ3JvdW5kIHx8IHBhaW50SW5mby5waGFzZSA9PSBQYWludFBo
YXNlOjpTZWxlY3Rpb24gfHwgcGFpbnRJbmZvLnBoYXNlID09IFBhaW50UGhhc2U6OlRleHRDbGlw
IHx8IHBhaW50SW5mby5waGFzZSA9PSBQYWludFBoYXNlOjpFdmVudFJlZ2lvbiB8fCBwYWludElu
Zm8ucGhhc2UgPT0gUGFpbnRQaGFzZTo6QWNjZXNzaWJpbGl0eSk7CiB9CiAKIHRlbXBsYXRlPHR5
cGVuYW1lIFRleHRCb3hQYXRoPgpAQCAtMTA1LDcgKzEwNSw3IEBAIHZvaWQgVGV4dEJveFBhaW50
ZXI8VGV4dEJveFBhdGg+OjpwYWludCgpCiAgICAgaWYgKG1fcGFpbnRJbmZvLnBoYXNlID09IFBh
aW50UGhhc2U6OkV2ZW50UmVnaW9uKSB7CiAgICAgICAgIGNvbnN0ZXhwciBPcHRpb25TZXQ8SGl0
VGVzdFJlcXVlc3Q6OlR5cGU+IGhpdFR5cGUgeyBIaXRUZXN0UmVxdWVzdDo6VHlwZTo6SWdub3Jl
Q1NTUG9pbnRlckV2ZW50c1Byb3BlcnR5IH07CiAgICAgICAgIGlmIChtX3JlbmRlcmVyLnBhcmVu
dCgpLT52aXNpYmxlVG9IaXRUZXN0aW5nKGhpdFR5cGUpKQotICAgICAgICAgICAgbV9wYWludElu
Zm8uZXZlbnRSZWdpb25Db250ZXh0LT51bml0ZShlbmNsb3NpbmdJbnRSZWN0KG1fcGFpbnRSZWN0
KSwgY29uc3RfY2FzdDxSZW5kZXJUZXh0Jj4obV9yZW5kZXJlciksIG1fc3R5bGUpOworICAgICAg
ICAgICAgbV9wYWludEluZm8uZXZlbnRSZWdpb25QYWludENvbnRleHQoKS0+dW5pdGUoZW5jbG9z
aW5nSW50UmVjdChtX3BhaW50UmVjdCksIGNvbnN0X2Nhc3Q8UmVuZGVyVGV4dCY+KG1fcmVuZGVy
ZXIpLCBtX3N0eWxlKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcAppbmRleCA5MjUzZTkwNWFmYzUu
LjQxYmZjY2M4MWQ3MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdp
bnMvUGx1Z2luVmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMv
UGx1Z2luVmlldy5jcHAKQEAgLTQxOCw3ICs0MTgsNyBAQCB2b2lkIFBsdWdpblZpZXc6OnNldEZy
YW1lUmVjdChjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiByZWN0KQogICAgIHZpZXdHZW9tZXRyeURp
ZENoYW5nZSgpOwogfQogCi12b2lkIFBsdWdpblZpZXc6OnBhaW50KEdyYXBoaWNzQ29udGV4dCYg
Y29udGV4dCwgY29uc3QgSW50UmVjdCYgLypkaXJ0eVJlY3QqLywgV2lkZ2V0OjpTZWN1cml0eU9y
aWdpblBhaW50UG9saWN5LCBFdmVudFJlZ2lvbkNvbnRleHQqKQordm9pZCBQbHVnaW5WaWV3Ojpw
YWludChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEludFJlY3QmIC8qZGlydHlSZWN0
Ki8sIFdpZGdldDo6U2VjdXJpdHlPcmlnaW5QYWludFBvbGljeSwgUGFpbnRDb250ZXh0KikKIHsK
ICAgICBpZiAoIW1faXNJbml0aWFsaXplZCkKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5oIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5oCmluZGV4IDcyMTIyY2I0NThkZS4u
YmU5YTU1OWYwZjdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lu
cy9QbHVnaW5WaWV3LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1
Z2luVmlldy5oCkBAIC0xMzEsNyArMTMxLDcgQEAgcHJpdmF0ZToKIAogICAgIC8vIFdlYkNvcmU6
OldpZGdldAogICAgIHZvaWQgc2V0RnJhbWVSZWN0KGNvbnN0IFdlYkNvcmU6OkludFJlY3QmKSBm
aW5hbDsKLSAgICB2b2lkIHBhaW50KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IFdl
YkNvcmU6OkludFJlY3QmLCBXZWJDb3JlOjpXaWRnZXQ6OlNlY3VyaXR5T3JpZ2luUGFpbnRQb2xp
Y3ksIFdlYkNvcmU6OkV2ZW50UmVnaW9uQ29udGV4dCopIGZpbmFsOworICAgIHZvaWQgcGFpbnQo
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0JiwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYsIFdlYkNv
cmU6OldpZGdldDo6U2VjdXJpdHlPcmlnaW5QYWludFBvbGljeSwgV2ViQ29yZTo6UGFpbnRDb250
ZXh0KikgZmluYWw7CiAgICAgdm9pZCBpbnZhbGlkYXRlUmVjdChjb25zdCBXZWJDb3JlOjpJbnRS
ZWN0JikgZmluYWw7CiAgICAgdm9pZCBmcmFtZVJlY3RzQ2hhbmdlZCgpIGZpbmFsOwogICAgIHZv
aWQgc2V0UGFyZW50KFdlYkNvcmU6OlNjcm9sbFZpZXcqKSBmaW5hbDsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>465945</attachid>
            <date>2023-04-17 01:00:11 -0700</date>
            <delta_ts>2023-04-27 00:32:44 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-255076-20230417010011.patch</filename>
            <type>text/plain</type>
            <size>106674</size>
            <attacher name="Tyler Wilcock">tyler_w</attacher>
            
              <data encoding="base64">RnJvbSBjNmE0YjY2NmE2ZjM2ODllZjQ2ZTNjZjY3OWIzYWY0YzAyODk3ODIyIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBUeWxlciBXaWxjb2NrIDx0eWxlcl93QGFwcGxlLmNvbT4KRGF0
ZTogV2VkLCA1IEFwciAyMDIzIDIxOjU1OjE4IC0wNzAwClN1YmplY3Q6IFtQQVRDSF0gQWRkIFBh
aW50UGhhc2U6OkFjY2Vzc2liaWxpdHkgYW5kCiBBY2Nlc3NpYmlsaXR5R2VvbWV0cnlUcmF2ZXJz
YWxDb250ZXh0IHRvIGVuYWJsZSBBWCBlbGVtZW50IGJvdW5kaW5nLWJveAogY2FjaGluZyBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjU1MDc2CiByZGFyOi8vcHJvYmxl
bS8xMDc2OTQ0OTIKClJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgoKQWNjZXNzaWJpbGl0eSBu
ZWVkcyB0byBjYWNoZSB0aGUgYm91bmRpbmcgYm94IG9mIG5vbi1hY2Nlc3NpYmlsaXR5LWlzLWln
bm9yZWQgZWxlbWVudHMgb24gdGhlIHNlY29uZGFyeSBBWCB0aHJlYWQuClRvIGdldCB0aGVzZSBi
b3VuZGluZy1ib3hlcywgdGhpcyBwYXRjaCBhZGRzIGEgbmV3IGFjY2Vzc2liaWxpdHkgcGFpbnQg
cGhhc2Ugd2l0aCB0aGUgaW50ZW50aW9uIG9mIHRyaWdnZXJpbmcgdGhpcwpwYWludCBwaGFzZSBp
biBgUGFnZTo6ZG9BZnRlclVwZGF0ZVJlbmRlcmluZ2AgKHdoaWNoIHdpbGwgYmUgZG9uZSBpbiBh
IGZ1dHVyZSBwYXRjaCkganVzdCBhcyBldmVudCByZWdpb25zIGRvLgoKVG8gYWNjb21wbGlzaCB0
aGlzLCB0aGlzIHBhdGNoIHJlZmFjdG9ycyBgRXZlbnRSZWdpb25Db250ZXh0YHMgY2xpcCBzdGFj
ayBhbmQgdHJhbnNmb3JtIHN0YWNrIG1haW50ZW5hbmNlIGludG8gYSBuZXcKYEdlb21ldHJ5VHJh
dmVyc2FsQ29udGV4dGAgYmFzZSBjbGFzcy4gYEV2ZW50UmVnaW9uQ29udGV4dGAgbm93IGRlcml2
ZXMgZnJvbSBgR2VvbWV0cnlUcmF2ZXJzYWxDb250ZXh0YCBhbG9uZyB3aXRoIGEgbmV3IGBBY2Nl
c3NpYmlsaXR5R2VvbWV0cnlUcmF2ZXJzYWxDb250ZXh0YApjbGFzcy4gYEFjY2Vzc2liaWxpdHlH
ZW9tZXRyeVRyYXZlcnNhbENvbnRleHRgIHdpbGwgdGFrZSB0aGUgYm91bmRzIGdlbmVyYXRlZCBi
eSBwYWludGluZywgYXBwbHkgdHJhbnNmb3JtcyBhbmQgY2xpcHMsIGFuZCB1c2hlcgp0aGlzIGlu
Zm9ybWF0aW9uIGVsc2V3aGVyZSB0byBiZSB1c2VkIHRvIHVwZGF0ZSBhY2Nlc3NpYmlsaXR5IGRh
dGEgc3RydWN0dXJlcyAod2l0aCB0aGF0IGxhc3Qgc3RlcCBjb21pbmcgaW4gYSBsYXRlciBwYXRj
aCkuCgoqIFNvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2U6CkFkZCBBY2Nlc3NpYmlsaXR5R2Vv
bWV0cnlUcmF2ZXJzYWxDb250ZXh0LmggYW5kIEdlb21ldHJ5VHJhdmVyc2FsQ29udGV4dC5oLgoq
IFNvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0OgpBZGQgQWNjZXNzaWJpbGl0eUdlb21ldHJ5VHJh
dmVyc2FsQ29udGV4dC5jcHAgYW5kIEdlb21ldHJ5VHJhdmVyc2FsQ29udGV4dC5jcHAuCgoqIFNv
dXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKQWRkIEFjY2Vz
c2liaWxpdHlHZW9tZXRyeVRyYXZlcnNhbENvbnRleHQue2gsIGNwcH0gYW5kIEdlb21ldHJ5VHJh
dmVyc2FsQ29udGV4dC57aCwgY3BwfQoKKiBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaDoK
KiBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwOgooV2ViQ29yZTo6RG9jdW1lbnQ6OnVw
ZGF0ZUFjY2Vzc2liaWxpdHlPYmplY3RSZWN0cyk6IEFkZGVkLgoKKiBTb3VyY2UvV2ViQ29yZS9s
YXlvdXQvaW50ZWdyYXRpb24vaW5saW5lL0xheW91dEludGVncmF0aW9uTGluZUxheW91dC5jcHA6
CihXZWJDb3JlOjpMYXlvdXRJbnRlZ3JhdGlvbjo6TGluZUxheW91dDo6cGFpbnQpOgpQYWludCBm
b3IgUGFpbnRQaGFzZTo6QWNjZXNzaWJpbGl0eS4KCiogU291cmNlL1dlYkNvcmUvcGFnZS9Mb2Nh
bEZyYW1lVmlldy5jcHA6CihXZWJDb3JlOjpMb2NhbEZyYW1lVmlldzo6dXBkYXRlQWNjZXNzaWJp
bGl0eU9iamVjdFJlY3RzKTogQWRkZWQuCihXZWJDb3JlOjpMb2NhbEZyYW1lVmlldzo6cGFpbnRD
b250ZW50cyk6CiogU291cmNlL1dlYkNvcmUvcGFnZS9Mb2NhbEZyYW1lVmlldy5oOgoqIFNvdXJj
ZS9XZWJDb3JlL3BhZ2UvUmVtb3RlRnJhbWVWaWV3LmNwcDoKKFdlYkNvcmU6OlJlbW90ZUZyYW1l
Vmlldzo6cGFpbnRDb250ZW50cyk6CiogU291cmNlL1dlYkNvcmUvcGFnZS9SZW1vdGVGcmFtZVZp
ZXcuaDoKKiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxWaWV3LmNwcDoKKFdlYkNvcmU6
OlNjcm9sbFZpZXc6OnBhaW50KToKKiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxWaWV3
Lmg6CiogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYmFyLmNwcDoKKFdlYkNvcmU6OlNj
cm9sbGJhcjo6cGFpbnQpOgoqIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGJhci5oOgoq
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1dpZGdldC5jcHA6CiogU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3RrL1dpZGdldEd0ay5jcHA6CiogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1dp
ZGdldFdpbi5jcHA6CihXZWJDb3JlOjpXaWRnZXQ6OnBhaW50KToKKiBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9XaWRnZXQuaDoKKiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2lkZ2V0SU9T
Lm1tOgooV2ViQ29yZTo6V2lkZ2V0OjpwYWludCk6CiogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWFjL1dpZGdldE1hYy5tbToKKFdlYkNvcmU6OldpZGdldDo6cGFpbnQpOgpBY2NlcHQgYSBgR2Vv
bWV0cnlUcmF2ZXJzYWxDb250ZXh0KmAgcGFyYW1ldGVyIGluc3RlYWQgb2YgYW4gYEV2ZW50UmVn
aW9uQ29udGV4dCpgLgoKKiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvQWNjZXNzaWJpbGl0eUdl
b21ldHJ5VHJhdmVyc2FsQ29udGV4dC5jcHA6IEFkZGVkLgooV2ViQ29yZTo6QWNjZXNzaWJpbGl0
eUdlb21ldHJ5VHJhdmVyc2FsQ29udGV4dDo6dGFrZUJvdW5kcyk6CiogU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL0FjY2Vzc2liaWxpdHlHZW9tZXRyeVRyYXZlcnNhbENvbnRleHQuaDogQWRkZWQu
CihXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5R2VvbWV0cnlUcmF2ZXJzYWxDb250ZXh0OjptYXBSZWN0
KToKCiogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0V2ZW50UmVnaW9uLmg6CiogU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL0V2ZW50UmVnaW9uLmNwcDoKKFdlYkNvcmU6OkV2ZW50UmVnaW9uQ29u
dGV4dDo6cHVzaFRyYW5zZm9ybSk6IERlbGV0ZWQuCihXZWJDb3JlOjpFdmVudFJlZ2lvbkNvbnRl
eHQ6OnBvcFRyYW5zZm9ybSk6IERlbGV0ZWQuCihXZWJDb3JlOjpFdmVudFJlZ2lvbkNvbnRleHQ6
OnB1c2hDbGlwKTogRGVsZXRlZC4KKFdlYkNvcmU6OkV2ZW50UmVnaW9uQ29udGV4dDo6cG9wQ2xp
cCk6IERlbGV0ZWQuClRoZXNlIGZ1bmN0aW9ucyBhbmQgdGhlaXIgYXNzb2NpYXRlZCBzdGF0ZSBh
cmUgbW92ZWQgdG8KdGhlIG5ld2x5IGFkZGVkIGJhc2UgY2xhc3MsIGBHZW9tZXRyeVRyYXZlcnNh
bENvbnRleHRgLgoKKFdlYkNvcmU6OkV2ZW50UmVnaW9uQ29udGV4dFN0YXRlU2F2ZXI6OkV2ZW50
UmVnaW9uQ29udGV4dFN0YXRlU2F2ZXIpOiBEZWxldGVkLgooV2ViQ29yZTo6RXZlbnRSZWdpb25D
b250ZXh0U3RhdGVTYXZlcjo6fkV2ZW50UmVnaW9uQ29udGV4dFN0YXRlU2F2ZXIpOiBEZWxldGVk
LgooV2ViQ29yZTo6RXZlbnRSZWdpb25Db250ZXh0U3RhdGVTYXZlcjo6cHVzaENsaXApOiBEZWxl
dGVkLgooV2ViQ29yZTo6RXZlbnRSZWdpb25Db250ZXh0U3RhdGVTYXZlcjo6Y29udGV4dCBjb25z
dCk6IERlbGV0ZWQuClJlcGxhY2VkIGJ5IHRoZSBlcXVpdmFsZW50IGFuZCBuZXctdG8tdGhpcy1w
YXRjaCBgR2VvbWV0cnlUcmF2ZXJzYWxDb250ZXh0U3RhdGVTYXZlcmAuCgoqIFNvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9MZWdhY3lJbmxpbmVFbGVtZW50Qm94LmNwcDoKKFdlYkNvcmU6OkxlZ2Fj
eUlubGluZUVsZW1lbnRCb3g6OnBhaW50KToKKiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvTGVn
YWN5SW5saW5lRmxvd0JveC5jcHA6CihXZWJDb3JlOjpMZWdhY3lJbmxpbmVGbG93Qm94OjpwYWlu
dCk6CkF2b2lkIGVhcmx5IHJldHVybiB3aGVuIHBhaW50aW5nIGZvciBQYWludFBoYXNlOjpBY2Nl
c3NpYmlsaXR5LgoKKiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvR2VvbWV0cnlUcmF2ZXJzYWxD
b250ZXh0Lmg6IEFkZGVkLgoqIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9HZW9tZXRyeVRyYXZl
cnNhbENvbnRleHQuY3BwOiBBZGRlZC4KKFdlYkNvcmU6Okdlb21ldHJ5VHJhdmVyc2FsQ29udGV4
dDo6cHVzaFRyYW5zZm9ybSk6CihXZWJDb3JlOjpHZW9tZXRyeVRyYXZlcnNhbENvbnRleHQ6OnBv
cFRyYW5zZm9ybSk6CihXZWJDb3JlOjpHZW9tZXRyeVRyYXZlcnNhbENvbnRleHQ6OnB1c2hDbGlw
KToKKFdlYkNvcmU6Okdlb21ldHJ5VHJhdmVyc2FsQ29udGV4dDo6cG9wQ2xpcCk6ClJlcGxhY2Vz
IGVxdWl2YWxlbnQgZnVuY3Rpb25hbGl0eSB0aGF0IHVzZWQgdG8gYmUgaW4gYEV2ZW50UmVnaW9u
Q29udGV4dGAuCihXZWJDb3JlOjpHZW9tZXRyeVRyYXZlcnNhbENvbnRleHQ6OmlzRXZlbnRSZWdp
b25Db250ZXh0IGNvbnN0KToKKFdlYkNvcmU6Okdlb21ldHJ5VHJhdmVyc2FsQ29udGV4dDo6aXNB
Y2Nlc3NpYmlsaXR5R2VvbWV0cnlUcmF2ZXJzYWxDb250ZXh0IGNvbnN0KToKCihXZWJDb3JlOjpH
ZW9tZXRyeVRyYXZlcnNhbENvbnRleHRTdGF0ZVNhdmVyOjpHZW9tZXRyeVRyYXZlcnNhbENvbnRl
eHRTdGF0ZVNhdmVyKToKKFdlYkNvcmU6Okdlb21ldHJ5VHJhdmVyc2FsQ29udGV4dFN0YXRlU2F2
ZXI6On5HZW9tZXRyeVRyYXZlcnNhbENvbnRleHRTdGF0ZVNhdmVyKToKKFdlYkNvcmU6Okdlb21l
dHJ5VHJhdmVyc2FsQ29udGV4dFN0YXRlU2F2ZXI6OnB1c2hDbGlwKToKKFdlYkNvcmU6Okdlb21l
dHJ5VHJhdmVyc2FsQ29udGV4dFN0YXRlU2F2ZXI6OmNvbnRleHQgY29uc3QpOgpSZXBsYWNlcyBl
cXVpdmFsZW50IGZ1bmN0aW9uYWxpdHkgdGhhdCB1c2VkIHRvIGJlIGluIGBFdmVudFJlZ2lvbkNv
bnRleHRTdGF0ZVNhdmVyYC4KCiogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1BhaW50SW5mby5o
OgpTdG9yZSBhIGBHZW9tZXRyeVRyYXZlcnNhbENvbnRleHQqYCByYXRoZXIgdGhhbiBhbiBgRXZl
bnRSZWdpb25Db250ZXh0KmAuCihXZWJDb3JlOjpQYWludEluZm86OmV2ZW50UmVnaW9uUGFpbnRD
b250ZXh0KTogQWRkZWQuCihXZWJDb3JlOjpQYWludEluZm86OmFjY2Vzc2liaWxpdHlQYWludENv
bnRleHQpOiBBZGRlZC4KCiogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1BhaW50UGhhc2UuaDoK
QWRkIG5ldyBQYWludFBoYXNlOjpBY2Nlc3NpYmlsaXR5LgoKKiBTb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyQmxvY2suY3BwOgooV2ViQ29yZTo6UmVuZGVyQmxvY2s6OnBhaW50Q29udGVu
dHMpOgpDaGVjayBmb3Igbm9uLW51bGwgZXZlbnQgcmVnaW9uIHBhaW50IGNvbnRleHQgdG8gbWFp
bnRhaW4gZXhpc3RpbmcKYmVoYXZpb3IuCgooV2ViQ29yZTo6UmVuZGVyQmxvY2s6OnBhaW50T2Jq
ZWN0KToKR2l2ZSB0aGUgcGFpbnQtcmVjdCBvZiB0aGlzIGBSZW5kZXJCbG9ja2AgdG8gdGhlIGBB
Y2Nlc3NpYmlsaXR5R2VvbWV0cnlUcmF2ZXJzYWxDb250ZXh0YCBpZiBwcmVzZW50LgpIYW5kbGUg
bmV3IGBQYWludFBoYXNlOjpBY2Nlc3NpYmlsaXR5YC4KCiogU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckJveC5jcHA6CihXZWJDb3JlOjpSZW5kZXJCb3g6OnB1c2hDb250ZW50c0NsaXAp
OgooV2ViQ29yZTo6UmVuZGVyQm94Ojpwb3BDb250ZW50c0NsaXApOgpQdXNoIGFuZCBwb3AgY2xp
cCBmb3IgYm90aCBgUGFpbnRQaGFzZTo6QWNjZXNzaWJpbGl0eWAgYW5kIGBQYWludFBoYXNlOjpF
dmVudFJlZ2lvbmAuCgoqIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbGVtZW50LmNw
cDoKKFdlYkNvcmU6OlJlbmRlckVsZW1lbnQ6OnBhaW50QXNJbmxpbmVCbG9jayk6CkFsbG93IHBh
aW50IGZvciBgUGFpbnRQaGFzZTo6QWNjZXNzaWJpbGl0eWAuCgoqIFNvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJMYXllci5jcHA6CihXZWJDb3JlOjpSZW5kZXJMYXllcjo6cGFpbnQpOgoo
V2ViQ29yZTo6UmVuZGVyTGF5ZXI6OmNsaXBUb1JlY3QpOgooV2ViQ29yZTo6UmVuZGVyTGF5ZXI6
OnBhaW50TGF5ZXJXaXRoRWZmZWN0cyk6CihXZWJDb3JlOjpSZW5kZXJMYXllcjo6c2V0dXBDbGlw
UGF0aCk6CihXZWJDb3JlOjpSZW5kZXJMYXllcjo6YXBwbHlGaWx0ZXJzKToKKFdlYkNvcmU6OlJl
bmRlckxheWVyOjpwYWludExheWVyQ29udGVudHMpOgooV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OnBh
aW50TGF5ZXJCeUFwcGx5aW5nVHJhbnNmb3JtKToKKFdlYkNvcmU6OlJlbmRlckxheWVyOjpwYWlu
dFRyYW5zZm9ybWVkTGF5ZXJJbnRvRnJhZ21lbnRzKToKKFdlYkNvcmU6OlJlbmRlckxheWVyOjpw
YWludEJhY2tncm91bmRGb3JGcmFnbWVudHMpOgooV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OnBhaW50
Rm9yZWdyb3VuZEZvckZyYWdtZW50cyk6CihXZWJDb3JlOjpSZW5kZXJMYXllcjo6cGFpbnRGb3Jl
Z3JvdW5kRm9yRnJhZ21lbnRzV2l0aFBoYXNlKToKKFdlYkNvcmU6OlJlbmRlckxheWVyOjpwYWlu
dE91dGxpbmVGb3JGcmFnbWVudHMpOgooV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OnBhaW50TWFza0Zv
ckZyYWdtZW50cyk6CihXZWJDb3JlOjpSZW5kZXJMYXllcjo6cGFpbnRDaGlsZENsaXBwaW5nTWFz
a0ZvckZyYWdtZW50cyk6CihXZWJDb3JlOjpSZW5kZXJMYXllcjo6cGFpbnRPdmVyZmxvd0NvbnRy
b2xzRm9yRnJhZ21lbnRzKToKKFdlYkNvcmU6OlJlbmRlckxheWVyOjpjb2xsZWN0RXZlbnRSZWdp
b25Gb3JGcmFnbWVudHMpOgooV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OmNvbGxlY3RBY2Nlc3NpYmls
aXR5UmVjdHNGb3JGcmFnbWVudHMpOiBBZGRlZC4KUmVwbGFjZSB1c2FnZSBvZiBgRXZlbnRSZWdp
b25Db250ZXh0U3RhdGVTYXZlcmAgd2l0aCBgR2VvbWV0cnlUcmF2ZXJzYWxDb250ZXh0U3RhdGVT
YXZlcmAuCkNoZWNrIGZvciB0aGUgcHJlc2VuY2Ugb2YgYEV2ZW50UmVnaW9uQ29udGV4dGAgd2hl
biBhcHByb3ByaWF0ZSB0byBtYWludGFpbiBleGlzdGluZyBiZWhhdmlvci4KCiogU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmg6CihXZWJDb3JlOjpSZW5kZXJMYXllcjo6cGFp
bnQpOgpBY2NlcHQgYSBgR2VvbWV0cnlUcmF2ZXJzYWxDb250ZXh0KmAgcGFyYW1ldGVyIGluc3Rl
YWQgb2YgYW4gYEV2ZW50UmVnaW9uQ29udGV4dCpgLgpTdG9yZSBhIGBHZW9tZXRyeVRyYXZlcnNh
bENvbnRleHQqYCByYXRoZXIgdGhhbiBhbiBgRXZlbnRSZWdpb25Db250ZXh0KmAgaW4gYHN0cnVj
dCBMYXllclBhaW50aW5nSW5mb2AuCgoqIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJM
YXllckJhY2tpbmcuY3BwOgooV2ViQ29yZTo6UmVuZGVyTGF5ZXJCYWNraW5nOjpwYWludEludG9M
YXllcik6CiogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5oOgpB
Y2NlcHQgYSBgR2VvbWV0cnlUcmF2ZXJzYWxDb250ZXh0KmAgcGFyYW1ldGVyIGluc3RlYWQgb2Yg
YW4gYEV2ZW50UmVnaW9uQ29udGV4dCpgLgpSZXBsYWNlIHVzYWdlIG9mIGBFdmVudFJlZ2lvbkNv
bnRleHRTdGF0ZVNhdmVyYCB3aXRoIGBHZW9tZXRyeVRyYXZlcnNhbENvbnRleHRTdGF0ZVNhdmVy
YC4KCiogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RNYXJrZXIuY3BwOgooV2Vi
Q29yZTo6UmVuZGVyTGlzdE1hcmtlcjo6cGFpbnQpOgpQYWludCBmb3IgYFBhaW50UGhhc2U6OkFj
Y2Vzc2liaWxpdHlgLgoKKiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUmVwbGFjZWQu
Y3BwOgooV2ViQ29yZTo6UmVuZGVyUmVwbGFjZWQ6OnBhaW50KToKKFdlYkNvcmU6OlJlbmRlclJl
cGxhY2VkOjpzaG91bGRQYWludCk6ClBhaW50IGZvciBgUGFpbnRQaGFzZTo6QWNjZXNzaWJpbGl0
eWAuCgoqIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTY3JvbGxiYXIuaDoKKiBTb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU2Nyb2xsYmFyLmNwcDoKKFdlYkNvcmU6OlJlbmRl
clNjcm9sbGJhcjo6cGFpbnQpOgpBY2NlcHQgYSBgR2VvbWV0cnlUcmF2ZXJzYWxDb250ZXh0KmAg
cGFyYW1ldGVyIGluc3RlYWQgb2YgYW4gYEV2ZW50UmVnaW9uQ29udGV4dCpgLgoKKiBTb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyV2lkZ2V0LmNwcDoKKFdlYkNvcmU6OlJlbmRlcldpZGdl
dDo6cGFpbnRDb250ZW50cyk6CihXZWJDb3JlOjpSZW5kZXJXaWRnZXQ6OnBhaW50KToKUmV0dXJu
IGVhcmx5IGJlZm9yZSBhY3R1YWwgcGFpbnQgZm9yIGBQYWludFBoYXNlOjpBY2Nlc3NpYmlsaXR5
YC4KCiogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1RleHRCb3hQYWludGVyLmNwcDoKKFdlYkNv
cmU6OlRleHRCb3hQYWludGVyPFRleHRCb3hQYXRoPjo6VGV4dEJveFBhaW50ZXIpOgooV2ViQ29y
ZTo6VGV4dEJveFBhaW50ZXI8VGV4dEJveFBhdGg+OjpwYWludCk6CkFsbG93IHBhaW50IGZvciBg
UGFpbnRQaGFzZTo6QWNjZXNzaWJpbGl0eWAgaW4gQVNTRVJUICh3ZSB3aWxsIG5lZWQgdG8KaGFu
ZGxlIHRoZXNlIHBhaW50cyBpbiBhIGZ1dHVyZSBwYXRjaCkuCgoqIFNvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuaDoKKiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
UGx1Z2lucy9QbHVnaW5WaWV3LmNwcDoKKFdlYktpdDo6UGx1Z2luVmlldzo6cGFpbnQpOgpBY2Nl
cHQgYSBgR2VvbWV0cnlUcmF2ZXJzYWxDb250ZXh0KmAgcGFyYW1ldGVyIGluc3RlYWQgb2YgYW4g
YEV2ZW50UmVnaW9uQ29udGV4dCpgLgotLS0KIFNvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2Ug
ICAgICAgICAgICAgICAgICB8ICAgMiArCiBTb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dCAgICAg
ICAgICAgICAgICAgICAgfCAgIDIgKwogLi4uL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qIHwgIDE0ICsrLQogU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcCAg
ICAgICAgICAgICAgIHwgICA4ICsrCiBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaCAgICAg
ICAgICAgICAgICAgfCAgIDEgKwogLi4uL2lubGluZS9MYXlvdXRJbnRlZ3JhdGlvbkxpbmVMYXlv
dXQuY3BwICAgIHwgICAxICsKIFNvdXJjZS9XZWJDb3JlL3BhZ2UvTG9jYWxGcmFtZVZpZXcuY3Bw
ICAgICAgICB8ICAyNSArKystCiBTb3VyY2UvV2ViQ29yZS9wYWdlL0xvY2FsRnJhbWVWaWV3Lmgg
ICAgICAgICAgfCAgIDcgKy0KIFNvdXJjZS9XZWJDb3JlL3BhZ2UvUmVtb3RlRnJhbWVWaWV3LmNw
cCAgICAgICB8ICAgMiArLQogU291cmNlL1dlYkNvcmUvcGFnZS9SZW1vdGVGcmFtZVZpZXcuaCAg
ICAgICAgIHwgICAyICstCiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxWaWV3LmNwcCAg
ICAgICAgfCAgIDYgKy0KIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbFZpZXcuaCAgICAg
ICAgICB8ICAgNiArLQogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYmFyLmNwcCAgICAg
ICAgIHwgICAyICstCiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxiYXIuaCAgICAgICAg
ICAgfCAgIDIgKy0KIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1dpZGdldC5jcHAgICAgICAgICAg
ICB8ICAgMiArLQogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vV2lkZ2V0LmggICAgICAgICAgICAg
IHwgICA0ICstCiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvV2lkZ2V0R3RrLmNwcCAgICAg
fCAgIDQgKy0KIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XaWRnZXRJT1MubW0gICAgICB8
ICAgMiArLQogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dpZGdldE1hYy5tbSAgICAgIHwg
ICAyICstCiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vV2lkZ2V0V2luLmNwcCAgICAgfCAg
IDQgKy0KIC4uLi9BY2Nlc3NpYmlsaXR5R2VvbWV0cnlUcmF2ZXJzYWxDb250ZXh0LmNwcCB8ICA0
MiArKysrKysrCiAuLi4vQWNjZXNzaWJpbGl0eUdlb21ldHJ5VHJhdmVyc2FsQ29udGV4dC5oICAg
fCAgNjkgKysrKysrKysrKysKIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9FdmVudFJlZ2lvbi5j
cHAgICAgICB8ICA0MyArLS0tLS0tCiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvRXZlbnRSZWdp
b24uaCAgICAgICAgfCAgNTggKystLS0tLS0tCiAuLi4vcmVuZGVyaW5nL0dlb21ldHJ5VHJhdmVy
c2FsQ29udGV4dC5jcHAgICAgfCAgNzQgKysrKysrKysrKysrCiAuLi4vcmVuZGVyaW5nL0dlb21l
dHJ5VHJhdmVyc2FsQ29udGV4dC5oICAgICAgfCAgOTkgKysrKysrKysrKysrKysrKwogLi4uL3Jl
bmRlcmluZy9MZWdhY3lJbmxpbmVFbGVtZW50Qm94LmNwcCAgICAgIHwgICAyICstCiAuLi4vV2Vi
Q29yZS9yZW5kZXJpbmcvTGVnYWN5SW5saW5lRmxvd0JveC5jcHAgfCAgIDIgKy0KIFNvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9QYWludEluZm8uaCAgICAgICAgICB8ICAgOSArLQogU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1BhaW50UGhhc2UuaCAgICAgICAgIHwgICAxICsKIFNvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAgICAgICB8ICAxNSArKy0KIFNvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3BwICAgICAgICB8ICAgOCArLQogU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckVsZW1lbnQuY3BwICAgIHwgICAyICstCiBTb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwICAgICAgfCAxMTAgKysrKysrKysrKy0tLS0tLS0t
CiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuaCAgICAgICAgfCAgMTEgKy0K
IC4uLi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwICB8ICAxOCArLS0K
IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuaCB8ICAgNCArLQog
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RNYXJrZXIuY3BwIHwgICA4ICstCiBT
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUmVwbGFjZWQuY3BwICAgfCAgMTAgKy0KIFNv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTY3JvbGxiYXIuY3BwICB8ICAgMiArLQogU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNjcm9sbGJhci5oICAgIHwgICAyICstCiBTb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyV2lkZ2V0LmNwcCAgICAgfCAgMTIgKy0KIFNvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9UZXh0Qm94UGFpbnRlci5jcHAgICB8ICAgNCArLQogLi4uL1dl
YktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAgIHwgICAyICstCiBTb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmggfCAgIDIgKy0KIDQ1IGZpbGVz
IGNoYW5nZWQsIDQ5NiBpbnNlcnRpb25zKCspLCAyMTEgZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9k
ZSAxMDA2NDQgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0FjY2Vzc2liaWxpdHlHZW9tZXRyeVRy
YXZlcnNhbENvbnRleHQuY3BwCiBjcmVhdGUgbW9kZSAxMDA2NDQgU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL0FjY2Vzc2liaWxpdHlHZW9tZXRyeVRyYXZlcnNhbENvbnRleHQuaAogY3JlYXRlIG1v
ZGUgMTAwNjQ0IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9HZW9tZXRyeVRyYXZlcnNhbENvbnRl
eHQuY3BwCiBjcmVhdGUgbW9kZSAxMDA2NDQgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0dlb21l
dHJ5VHJhdmVyc2FsQ29udGV4dC5oCgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvSGVhZGVy
cy5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKaW5kZXggNzRhYjU3ZjNmMTUz
Li40YTViN2Y0ZmJjMDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UK
KysrIGIvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQpAQCAtMjA1Nyw2ICsyMDU3LDcgQEAg
c2V0KFdlYkNvcmVfUFJJVkFURV9GUkFNRVdPUktfSEVBREVSUwogICAgIHBsdWdpbnMvUGx1Z2lu
SW5mb1Byb3ZpZGVyLmgKICAgICBwbHVnaW5zL1BsdWdpblZpZXdCYXNlLmgKIAorICAgIHJlbmRl
cmluZy9BY2Nlc3NpYmlsaXR5R2VvbWV0cnlUcmF2ZXJzYWxDb250ZXh0LmgKICAgICByZW5kZXJp
bmcvQnJlYWtMaW5lcy5oCiAgICAgcmVuZGVyaW5nL0NhcmV0UmVjdENvbXB1dGF0aW9uLmgKICAg
ICByZW5kZXJpbmcvQ1NTRmlsdGVyLmgKQEAgLTIwNjUsNiArMjA2Niw3IEBAIHNldChXZWJDb3Jl
X1BSSVZBVEVfRlJBTUVXT1JLX0hFQURFUlMKICAgICByZW5kZXJpbmcvRXZlbnRSZWdpb24uaAog
ICAgIHJlbmRlcmluZy9GbG9hdGluZ09iamVjdHMuaAogICAgIHJlbmRlcmluZy9HYXBSZWN0cy5o
CisgICAgcmVuZGVyaW5nL0dlb21ldHJ5VHJhdmVyc2FsQ29udGV4dC5oCiAgICAgcmVuZGVyaW5n
L0hpZ2hsaWdodERhdGEuaAogICAgIHJlbmRlcmluZy9IaXRUZXN0TG9jYXRpb24uaAogICAgIHJl
bmRlcmluZy9IaXRUZXN0UmVxdWVzdC5oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Tb3Vy
Y2VzLnR4dCBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CmluZGV4IDg2YjA0NTRiMDRjNi4u
YzJkM2QyMjEyMjM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dApAQCAtMjQzNyw2ICsyNDM3LDcgQEAgcGx1Z2lu
cy9ET01QbHVnaW4uY3BwCiBwbHVnaW5zL0RPTVBsdWdpbkFycmF5LmNwcAogcGx1Z2lucy9QbHVn
aW5EYXRhLmNwcAogcGx1Z2lucy9QbHVnaW5JbmZvUHJvdmlkZXIuY3BwCityZW5kZXJpbmcvQWNj
ZXNzaWJpbGl0eUdlb21ldHJ5VHJhdmVyc2FsQ29udGV4dC5jcHAKIHJlbmRlcmluZy9BdXRvVGFi
bGVMYXlvdXQuY3BwCiByZW5kZXJpbmcvQmFja2dyb3VuZFBhaW50ZXIuY3BwCiByZW5kZXJpbmcv
QmlkaVJ1bi5jcHAKQEAgLTI0NTMsNiArMjQ1NCw3IEBAIHJlbmRlcmluZy9FdmVudFJlZ2lvbi5j
cHAKIHJlbmRlcmluZy9GaXhlZFRhYmxlTGF5b3V0LmNwcAogcmVuZGVyaW5nL0ZsZXhpYmxlQm94
QWxnb3JpdGhtLmNwcAogcmVuZGVyaW5nL0Zsb2F0aW5nT2JqZWN0cy5jcHAKK3JlbmRlcmluZy9H
ZW9tZXRyeVRyYXZlcnNhbENvbnRleHQuY3BwCiByZW5kZXJpbmcvR3JpZC5jcHAKIHJlbmRlcmlu
Zy9HcmlkQmFzZWxpbmVBbGlnbm1lbnQuY3BwCiByZW5kZXJpbmcvR3JpZExheW91dEZ1bmN0aW9u
cy5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagppbmRleCBmYTU2ZDdiMWI1YzEuLjM2OWNhNjFjZGMyYyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMyw3ICszLDcgQEAK
IAlhcmNoaXZlVmVyc2lvbiA9IDE7CiAJY2xhc3NlcyA9IHsKIAl9OwotCW9iamVjdFZlcnNpb24g
PSA1MTsKKwlvYmplY3RWZXJzaW9uID0gNTQ7CiAJb2JqZWN0cyA9IHsKIAogLyogQmVnaW4gUEJY
QWdncmVnYXRlVGFyZ2V0IHNlY3Rpb24gKi8KQEAgLTE1NTcsNiArMTU1Nyw4IEBACiAJCTQ3QzRE
NTdEMjY1MDhCQ0IwMEM3QUIxRiAvKiBJbmxpbmVGb3JtYXR0aW5nR2VvbWV0cnkuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ3QzRENTdDMjY1MDhCQ0Ew
MEM3QUIxRiAvKiBJbmxpbmVGb3JtYXR0aW5nR2VvbWV0cnkuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0N0Y5NDdEQjI2NTAyRjJGMDA4Nzk2OEMg
LyogQmxvY2tGb3JtYXR0aW5nUXVpcmtzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA0N0Y5NDdEQTI2NTAyRjJGMDA4Nzk2OEMgLyogQmxvY2tGb3JtYXR0
aW5nUXVpcmtzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJNDdGQTk3MDAyNjUwOTgyQjAwODQxNDE2IC8qIFRhYmxlRm9ybWF0dGluZ0dlb21ldHJ5
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0N0ZBOTZG
RjI2NTA5ODJBMDA4NDE0MTYgLyogVGFibGVGb3JtYXR0aW5nR2VvbWV0cnkuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk0ODIyOTcwRTI5QzhFQkMw
MDAzM0ExMjYgLyogR2VvbWV0cnlUcmF2ZXJzYWxDb250ZXh0LmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0ODIyOTcwQzI5QzhFQkMwMDAzM0ExMjYgLyog
R2VvbWV0cnlUcmF2ZXJzYWxDb250ZXh0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKKwkJNDhCNUJGMzcyOUNBNjkxNzAwRkVCRTNCIC8qIEFjY2Vzc2li
aWxpdHlHZW9tZXRyeVRyYXZlcnNhbENvbnRleHQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ4QjVCRjM1MjlDQTY5MTcwMEZFQkUzQiAvKiBBY2Nlc3Np
YmlsaXR5R2VvbWV0cnlUcmF2ZXJzYWxDb250ZXh0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDkzRTVFMDkxMkQ2NDIwNTAwMDIwMDgxIC8qIFBs
YXRmb3JtQ0FMYXllckNsaWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNDkzRTVFMDgxMkQ2NDIwNTAwMDIwMDgxIC8qIFBsYXRmb3JtQ0FMYXllckNs
aWVudC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJ
CTQ5NDVCRkQ0MTNDRjgwOTAwMENDM0IzOCAvKiBUcmFuc2Zvcm1TdGF0ZS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDk0NUJGRDIxM0NGODA5MDAwQ0Mz
QjM4IC8qIFRyYW5zZm9ybVN0YXRlLmggKi87IH07CiAJCTQ5NDg0RkMyMTAyQ0YyM0MwMDE4N0RE
MyAvKiBDYW52YXNHcmFkaWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNDk0ODRGQjQxMDJDRjIzQzAwMTg3REQzIC8qIENhbnZhc0dyYWRpZW50Lmgg
Ki87IH07CkBAIC0xMDE1MSw2ICsxMDE1MywxMCBAQAogCQk0N0M0RDU3QzI2NTA4QkNBMDBDN0FC
MUYgLyogSW5saW5lRm9ybWF0dGluZ0dlb21ldHJ5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IElubGluZUZvcm1hdHRpbmdHZW9tZXRyeS5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk0N0Y5NDdEQTI2NTAyRjJGMDA4Nzk2OEMgLyogQmxvY2tGb3JtYXR0aW5nUXVp
cmtzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEJsb2NrRm9ybWF0dGluZ1F1
aXJrcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0N0ZBOTZGRjI2NTA5ODJBMDA4
NDE0MTYgLyogVGFibGVGb3JtYXR0aW5nR2VvbWV0cnkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gVGFibGVGb3JtYXR0aW5nR2VvbWV0cnkuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJNDgyMjk3MEIyOUM4RUJDMDAwMzNBMTI2IC8qIEdlb21ldHJ5VHJhdmVyc2Fs
Q29udGV4dC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBHZW9tZXRy
eVRyYXZlcnNhbENvbnRleHQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0ODIy
OTcwQzI5QzhFQkMwMDAzM0ExMjYgLyogR2VvbWV0cnlUcmF2ZXJzYWxDb250ZXh0LmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdlb21ldHJ5VHJhdmVyc2FsQ29udGV4dC5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0OEI1QkYzNTI5Q0E2OTE3MDBGRUJFM0IgLyog
QWNjZXNzaWJpbGl0eUdlb21ldHJ5VHJhdmVyc2FsQ29udGV4dC5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBBY2Nlc3NpYmlsaXR5R2VvbWV0cnlUcmF2ZXJzYWxDb250ZXh0Lmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQ4QjVCRjM2MjlDQTY5MTcwMEZFQkUzQiAv
KiBBY2Nlc3NpYmlsaXR5R2VvbWV0cnlUcmF2ZXJzYWxDb250ZXh0LmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IEFjY2Vzc2liaWxpdHlHZW9tZXRyeVRyYXZlcnNhbENvbnRleHQuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk0OTNFNUUwODEyRDY0MjA1MDAwMjAwODEgLyogUGxhdGZv
cm1DQUxheWVyQ2xpZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBsYXRm
b3JtQ0FMYXllckNsaWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0OTQ1QkZE
MTEzQ0Y4MDkwMDBDQzNCMzggLyogVHJhbnNmb3JtU3RhdGUuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gVHJhbnNmb3JtU3RhdGUuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk0OTQ1QkZEMjEzQ0Y4MDkwMDBDQzNCMzggLyogVHJhbnNmb3JtU3RhdGUu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVHJhbnNmb3JtU3RhdGUuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTM0MjY2LDYgKzM0MjcyLDggQEAKIAkJCQlCQzhD
OEZBQTBERENEMkYyMDBCNTkyRjQgLyogc3R5bGUgKi8sCiAJCQkJMDg4QzJGNzQxMjM5MDA4MDAw
M0Q2NUNFIC8qIHN2ZyAqLywKIAkJCQlFNDdDMzkxRTFGRTZFMDhDMDBCQkJDNkIgLyogdXBkYXRp
bmcgKi8sCisJCQkJNDhCNUJGMzYyOUNBNjkxNzAwRkVCRTNCIC8qIEFjY2Vzc2liaWxpdHlHZW9t
ZXRyeVRyYXZlcnNhbENvbnRleHQuY3BwICovLAorCQkJCTQ4QjVCRjM1MjlDQTY5MTcwMEZFQkUz
QiAvKiBBY2Nlc3NpYmlsaXR5R2VvbWV0cnlUcmF2ZXJzYWxDb250ZXh0LmggKi8sCiAJCQkJMUEz
M0FFM0YyOEY5RjI5MDAwOTgwNEI0IC8qIEF0dGFjaG1lbnRMYXlvdXQuaCAqLywKIAkJCQkxQTMz
QUU0MDI4RjlGNDc4MDA5ODA0QjQgLyogQXR0YWNobWVudExheW91dC5tbSAqLywKIAkJCQlBOENG
RjA0QjBBMTU0RjA5MDAwQTQyMzQgLyogQXV0b1RhYmxlTGF5b3V0LmNwcCAqLywKQEAgLTM0MzAz
LDYgKzM0MzExLDggQEAKIAkJCQk5QTUyOEU4MTE3RDdGNTJGMDBBQTk1MTggLyogRmxvYXRpbmdP
YmplY3RzLmNwcCAqLywKIAkJCQk5QTUyOEU4MjE3RDdGNTJGMDBBQTk1MTggLyogRmxvYXRpbmdP
YmplY3RzLmggKi8sCiAJCQkJOTM1QzQ3NzQwOUFDNEQ4RDAwQTZBQUI0IC8qIEdhcFJlY3RzLmgg
Ki8sCisJCQkJNDgyMjk3MEIyOUM4RUJDMDAwMzNBMTI2IC8qIEdlb21ldHJ5VHJhdmVyc2FsQ29u
dGV4dC5jcHAgKi8sCisJCQkJNDgyMjk3MEMyOUM4RUJDMDAwMzNBMTI2IC8qIEdlb21ldHJ5VHJh
dmVyc2FsQ29udGV4dC5oICovLAogCQkJCTMyQjBCMENGMjgzQzc0ODMwMDYyMTdDNiAvKiBHbHlw
aERpc3BsYXlMaXN0Q2FjaGUuY3BwICovLAogCQkJCTU1OTdGQ0NCMjA3NkMwNjgwMEQzNUJCMCAv
KiBHbHlwaERpc3BsYXlMaXN0Q2FjaGUuaCAqLywKIAkJCQlFMTEyRjQ3MDFFM0E4NUYyMDBENkNE
RkQgLyogR3JpZC5jcHAgKi8sCkBAIC0zNTc0OSw2ICszNTc1OSw3IEBACiAJCQkJMjlBODEyMkUw
RkJCOUMxRDAwNTEwMjkzIC8qIEFjY2Vzc2liaWxpdHlBUklBR3JpZENlbGwuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTI5QTgxMjMzMEZCQjlDMUQwMDUxMDI5MyAvKiBBY2Nlc3NpYmlsaXR5QVJJQUdy
aWRSb3cuaCBpbiBIZWFkZXJzICovLAogCQkJCTI5MTRFMzA4MUNBQjVBNDQwMDQ5OTY2RiAvKiBB
Y2Nlc3NpYmlsaXR5QXR0YWNobWVudC5oIGluIEhlYWRlcnMgKi8sCisJCQkJNDhCNUJGMzcyOUNB
NjkxNzAwRkVCRTNCIC8qIEFjY2Vzc2liaWxpdHlHZW9tZXRyeVRyYXZlcnNhbENvbnRleHQuaCBp
biBIZWFkZXJzICovLAogCQkJCTI5QTgxMjNCMEZCQjlDMUQwMDUxMDI5MyAvKiBBY2Nlc3NpYmls
aXR5SW1hZ2VNYXBMaW5rLmggaW4gSGVhZGVycyAqLywKIAkJCQkyOUE4MTIyQzBGQkI5QzFEMDA1
MTAyOTMgLyogQWNjZXNzaWJpbGl0eUxpc3QuaCBpbiBIZWFkZXJzICovLAogCQkJCTI5QTgxMjQz
MEZCQjlDMUQwMDUxMDI5MyAvKiBBY2Nlc3NpYmlsaXR5TGlzdEJveC5oIGluIEhlYWRlcnMgKi8s
CkBAIC0zNzE4OCw2ICszNzE5OSw3IEBACiAJCQkJOTc0NkFGMkExNEY0RERFNjAwM0U3QTcwIC8q
IEdlb2xvY2F0aW9uUG9zaXRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTk3NDZBRjI5MTRGNERE
RTYwMDNFN0E3MCAvKiBHZW9sb2NhdGlvblBvc2l0aW9uRGF0YS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJOTc0NkFGMkUxNEY0RERFNjAwM0U3QTcwIC8qIEdlb2xvY2F0aW9uUG9zaXRpb25FcnJvci5o
IGluIEhlYWRlcnMgKi8sCisJCQkJNDgyMjk3MEUyOUM4RUJDMDAwMzNBMTI2IC8qIEdlb21ldHJ5
VHJhdmVyc2FsQ29udGV4dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZCNjI1MkYxOERFMUIxNTAw
QTA3QzA1IC8qIEdlb21ldHJ5VXRpbGl0aWVzLmggaW4gSGVhZGVycyAqLywKIAkJCQk0NkM4M0VG
RTFBOUJCRTI5MDBBNzlBNDEgLyogR2VvTm90aWZpZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTcx
M0YxRDVBMjNERjFEOEQwMDNGNUVGQSAvKiBHZXRBbmltYXRpb25zT3B0aW9ucy5oIGluIEhlYWRl
cnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwIGIvU291
cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAppbmRleCA0M2IzMzQ1NGZhMTMuLjhiMTU5Zjhh
NDBiYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCkBAIC00NzY0LDYgKzQ3NjQsMTQgQEAgdm9p
ZCBEb2N1bWVudDo6dXBkYXRlRXZlbnRSZWdpb25zKCkKICAgICB9CiB9CiAKK3ZvaWQgRG9jdW1l
bnQ6OnVwZGF0ZUFjY2Vzc2liaWxpdHlPYmplY3RSZWN0cygpCit7CisjaWYgRU5BQkxFKEFDQ0VT
U0lCSUxJVFlfSVNPTEFURURfVFJFRSkKKyAgICBpZiAoYXV0byogdmlldyA9IHJlbmRlclZpZXco
KSkKKyAgICAgICAgdmlldy0+ZnJhbWVWaWV3KCkudXBkYXRlQWNjZXNzaWJpbGl0eU9iamVjdFJl
Y3RzKCk7CisjZW5kaWYKK30KKwogdm9pZCBEb2N1bWVudDo6aW52YWxpZGF0ZUV2ZW50UmVnaW9u
c0ZvckZyYW1lKEhUTUxGcmFtZU93bmVyRWxlbWVudCYgZWxlbWVudCkKIHsKICAgICBhdXRvKiBy
ZW5kZXJlciA9IGVsZW1lbnQucmVuZGVyZXIoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Eb2N1bWVudC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKaW5kZXggYTk5
ZDQyZDMxNDM1Li41YWVhODA4NGY2MzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9E
b2N1bWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCkBAIC0xMjI0LDYg
KzEyMjQsNyBAQCBwdWJsaWM6CiAKICAgICBXRUJDT1JFX0VYUE9SVCBTdHJpbmcgZGlzcGxheVN0
cmluZ01vZGlmaWVkQnlFbmNvZGluZyhjb25zdCBTdHJpbmcmKSBjb25zdDsKIAorICAgIHZvaWQg
dXBkYXRlQWNjZXNzaWJpbGl0eU9iamVjdFJlY3RzKCk7CiAgICAgdm9pZCB1cGRhdGVFdmVudFJl
Z2lvbnMoKTsKIAogICAgIHZvaWQgaW52YWxpZGF0ZVJlbmRlcmluZ0RlcGVuZGVudFJlZ2lvbnMo
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9pbmxpbmUv
TGF5b3V0SW50ZWdyYXRpb25MaW5lTGF5b3V0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9p
bnRlZ3JhdGlvbi9pbmxpbmUvTGF5b3V0SW50ZWdyYXRpb25MaW5lTGF5b3V0LmNwcAppbmRleCA1
NjIyZGViMzM0Y2QuLjgzNzc1NGIzZTk4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5
b3V0L2ludGVncmF0aW9uL2lubGluZS9MYXlvdXRJbnRlZ3JhdGlvbkxpbmVMYXlvdXQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9pbmxpbmUvTGF5b3V0SW50ZWdy
YXRpb25MaW5lTGF5b3V0LmNwcApAQCAtMTEzOCw2ICsxMTM4LDcgQEAgdm9pZCBMaW5lTGF5b3V0
OjpwYWludChQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50T2Zm
c2V0LCBjb24KIAogICAgIGF1dG8gc2hvdWxkUGFpbnRGb3JQaGFzZSA9IFsmXSB7CiAgICAgICAg
IHN3aXRjaCAocGFpbnRJbmZvLnBoYXNlKSB7CisgICAgICAgIGNhc2UgUGFpbnRQaGFzZTo6QWNj
ZXNzaWJpbGl0eToKICAgICAgICAgY2FzZSBQYWludFBoYXNlOjpGb3JlZ3JvdW5kOgogICAgICAg
ICBjYXNlIFBhaW50UGhhc2U6OkV2ZW50UmVnaW9uOgogICAgICAgICBjYXNlIFBhaW50UGhhc2U6
OlRleHRDbGlwOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9Mb2NhbEZyYW1lVmll
dy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0xvY2FsRnJhbWVWaWV3LmNwcAppbmRleCBlMzIw
Y2I5MDE3ZTIuLjJjODg1ZTE5OGY0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9M
b2NhbEZyYW1lVmlldy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Mb2NhbEZyYW1lVmll
dy5jcHAKQEAgLTQ2NzAsNiArNDY3MCwxOCBAQCB2b2lkIExvY2FsRnJhbWVWaWV3OjppbnZhbGlk
YXRlSW1hZ2VzV2l0aEFzeW5jRGVjb2RlcygpCiAgICAgdHJhdmVyc2VGb3JQYWludEludmFsaWRh
dGlvbihOdWxsR3JhcGhpY3NDb250ZXh0OjpQYWludEludmFsaWRhdGlvblJlYXNvbnM6OkludmFs
aWRhdGluZ0ltYWdlc1dpdGhBc3luY0RlY29kZXMpOwogfQogCit2b2lkIExvY2FsRnJhbWVWaWV3
Ojp1cGRhdGVBY2Nlc3NpYmlsaXR5T2JqZWN0UmVjdHMoKQoreworI2lmIEVOQUJMRShBQ0NFU1NJ
QklMSVRZX0lTT0xBVEVEX1RSRUUpCisgICAgaWYgKCFBWE9iamVjdENhY2hlOjphY2Nlc3NpYmls
aXR5RW5hYmxlZCgpIHx8ICFBWE9iamVjdENhY2hlOjppc0lzb2xhdGVkVHJlZUVuYWJsZWQoKSkK
KyAgICAgICAgcmV0dXJuOworCisgICAgTnVsbEdyYXBoaWNzQ29udGV4dCBncmFwaGljc0NvbnRl
eHQ7CisgICAgQWNjZXNzaWJpbGl0eUdlb21ldHJ5VHJhdmVyc2FsQ29udGV4dCBhY2Nlc3NpYmls
aXR5R2VvbWV0cnlUcmF2ZXJzYWxDb250ZXh0OworICAgIHBhaW50KGdyYXBoaWNzQ29udGV4dCwg
ZnJhbWVSZWN0KCksIFNlY3VyaXR5T3JpZ2luUGFpbnRQb2xpY3k6OkFueU9yaWdpbiwgJmFjY2Vz
c2liaWxpdHlHZW9tZXRyeVRyYXZlcnNhbENvbnRleHQpOworI2VuZGlmCit9CisKIHZvaWQgTG9j
YWxGcmFtZVZpZXc6OnRyYXZlcnNlRm9yUGFpbnRJbnZhbGlkYXRpb24oTnVsbEdyYXBoaWNzQ29u
dGV4dDo6UGFpbnRJbnZhbGlkYXRpb25SZWFzb25zIHBhaW50SW52YWxpZGF0aW9uUmVhc29ucykK
IHsKICAgICBpZiAobmVlZHNMYXlvdXQoKSkKQEAgLTQ3MDIsNyArNDcxNCw3IEBAIHZvaWQgTG9j
YWxGcmFtZVZpZXc6OnNldFdhc1Njcm9sbGVkQnlVc2VyKGJvb2wgd2FzU2Nyb2xsZWRCeVVzZXIp
CiAgICAgYWRqdXN0VGlsZWRCYWNraW5nQ292ZXJhZ2UoKTsKIH0KIAotdm9pZCBMb2NhbEZyYW1l
Vmlldzo6d2lsbFBhaW50Q29udGVudHMoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBJ
bnRSZWN0JiwgUGFpbnRpbmdTdGF0ZSYgcGFpbnRpbmdTdGF0ZSkKK3ZvaWQgTG9jYWxGcmFtZVZp
ZXc6OndpbGxQYWludENvbnRlbnRzKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgSW50
UmVjdCYsIFBhaW50aW5nU3RhdGUmIHBhaW50aW5nU3RhdGUsIEdlb21ldHJ5VHJhdmVyc2FsQ29u
dGV4dCogZ2VvbWV0cnlUcmF2ZXJzYWxDb250ZXh0KQogewogICAgIERvY3VtZW50KiBkb2N1bWVu
dCA9IG1fZnJhbWUtPmRvY3VtZW50KCk7CiAKQEAgLTQ3MzIsNiArNDc0NCw5IEBAIHZvaWQgTG9j
YWxGcmFtZVZpZXc6OndpbGxQYWludENvbnRlbnRzKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwg
Y29uc3QgSW50UmVjdCYsCiAgICAgICAgIG1fcGFpbnRCZWhhdmlvci5hZGQoUGFpbnRCZWhhdmlv
cjo6U25hcHNob3R0aW5nKTsKICAgICB9CiAKKyAgICBpZiAoaXM8QWNjZXNzaWJpbGl0eUdlb21l
dHJ5VHJhdmVyc2FsQ29udGV4dD4oZ2VvbWV0cnlUcmF2ZXJzYWxDb250ZXh0KSkKKyAgICAgICAg
bV9wYWludEJlaGF2aW9yLmFkZChQYWludEJlaGF2aW9yOjpGbGF0dGVuQ29tcG9zaXRpbmdMYXll
cnMpOworCiAgICAgcGFpbnRpbmdTdGF0ZS5pc0ZsYXR0ZW5pbmdQYWludE9mUm9vdEZyYW1lID0g
KG1fcGFpbnRCZWhhdmlvciAmIFBhaW50QmVoYXZpb3I6OkZsYXR0ZW5Db21wb3NpdGluZ0xheWVy
cykgJiYgIW1fZnJhbWUtPm93bmVyRWxlbWVudCgpICYmICFjb250ZXh0LmRldGVjdGluZ0NvbnRl
bnRmdWxQYWludCgpOwogICAgIGlmIChwYWludGluZ1N0YXRlLmlzRmxhdHRlbmluZ1BhaW50T2ZS
b290RnJhbWUpCiAgICAgICAgIG5vdGlmeVdpZGdldHNJbkFsbEZyYW1lcyhXaWxsUGFpbnRGbGF0
dGVuZWQpOwpAQCAtNDc2MCw3ICs0Nzc1LDcgQEAgdm9pZCBMb2NhbEZyYW1lVmlldzo6ZGlkUGFp
bnRDb250ZW50cyhHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEludFJlY3QmIGQKICAg
ICB9CiB9CiAKLXZvaWQgTG9jYWxGcmFtZVZpZXc6OnBhaW50Q29udGVudHMoR3JhcGhpY3NDb250
ZXh0JiBjb250ZXh0LCBjb25zdCBJbnRSZWN0JiBkaXJ0eVJlY3QsIFNlY3VyaXR5T3JpZ2luUGFp
bnRQb2xpY3kgc2VjdXJpdHlPcmlnaW5QYWludFBvbGljeSwgRXZlbnRSZWdpb25Db250ZXh0KiBl
dmVudFJlZ2lvbkNvbnRleHQpCit2b2lkIExvY2FsRnJhbWVWaWV3OjpwYWludENvbnRlbnRzKEdy
YXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgSW50UmVjdCYgZGlydHlSZWN0LCBTZWN1cml0
eU9yaWdpblBhaW50UG9saWN5IHNlY3VyaXR5T3JpZ2luUGFpbnRQb2xpY3ksIEdlb21ldHJ5VHJh
dmVyc2FsQ29udGV4dCogZ2VvbWV0cnlUcmF2ZXJzYWxDb250ZXh0KQogewogI2lmbmRlZiBOREVC
VUcKICAgICBib29sIGZpbGxXaXRoV2FybmluZ0NvbG9yOwpAQCAtNDgwMCw3ICs0ODE1LDcgQEAg
dm9pZCBMb2NhbEZyYW1lVmlldzo6cGFpbnRDb250ZW50cyhHcmFwaGljc0NvbnRleHQmIGNvbnRl
eHQsIGNvbnN0IEludFJlY3QmIGRpcnQKICAgICB9CiAKICAgICBQYWludGluZ1N0YXRlIHBhaW50
aW5nU3RhdGU7Ci0gICAgd2lsbFBhaW50Q29udGVudHMoY29udGV4dCwgZGlydHlSZWN0LCBwYWlu
dGluZ1N0YXRlKTsKKyAgICB3aWxsUGFpbnRDb250ZW50cyhjb250ZXh0LCBkaXJ0eVJlY3QsIHBh
aW50aW5nU3RhdGUsIGdlb21ldHJ5VHJhdmVyc2FsQ29udGV4dCk7CiAKICAgICAvLyBtX25vZGVU
b0RyYXcgaXMgdXNlZCB0byBkcmF3IG9ubHkgb25lIGVsZW1lbnQgKGFuZCBpdHMgZGVzY2VuZGFu
dHMpCiAgICAgUmVuZGVyT2JqZWN0KiByZW5kZXJlciA9IG1fbm9kZVRvRHJhdyA/IG1fbm9kZVRv
RHJhdy0+cmVuZGVyZXIoKSA6IG51bGxwdHI7CkBAIC00ODA4LDkgKzQ4MjMsOSBAQCB2b2lkIExv
Y2FsRnJhbWVWaWV3OjpwYWludENvbnRlbnRzKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29u
c3QgSW50UmVjdCYgZGlydAogCiAgICAgUmVuZGVyT2JqZWN0OjpTZXRMYXlvdXROZWVkZWRGb3Ji
aWRkZW5TY29wZSBmb3JiaWRTZXROZWVkc0xheW91dChyb290TGF5ZXItPnJlbmRlcmVyKCkpOwog
Ci0gICAgcm9vdExheWVyLT5wYWludChjb250ZXh0LCBkaXJ0eVJlY3QsIExheW91dFNpemUoKSwg
bV9wYWludEJlaGF2aW9yLCByZW5kZXJlciwgeyB9LCBzZWN1cml0eU9yaWdpblBhaW50UG9saWN5
ID09IFNlY3VyaXR5T3JpZ2luUGFpbnRQb2xpY3k6OkFueU9yaWdpbiA/IFJlbmRlckxheWVyOjpT
ZWN1cml0eU9yaWdpblBhaW50UG9saWN5OjpBbnlPcmlnaW4gOiBSZW5kZXJMYXllcjo6U2VjdXJp
dHlPcmlnaW5QYWludFBvbGljeTo6QWNjZXNzaWJsZU9yaWdpbk9ubHksIGV2ZW50UmVnaW9uQ29u
dGV4dCk7CisgICAgcm9vdExheWVyLT5wYWludChjb250ZXh0LCBkaXJ0eVJlY3QsIExheW91dFNp
emUoKSwgbV9wYWludEJlaGF2aW9yLCByZW5kZXJlciwgeyB9LCBzZWN1cml0eU9yaWdpblBhaW50
UG9saWN5ID09IFNlY3VyaXR5T3JpZ2luUGFpbnRQb2xpY3k6OkFueU9yaWdpbiA/IFJlbmRlckxh
eWVyOjpTZWN1cml0eU9yaWdpblBhaW50UG9saWN5OjpBbnlPcmlnaW4gOiBSZW5kZXJMYXllcjo6
U2VjdXJpdHlPcmlnaW5QYWludFBvbGljeTo6QWNjZXNzaWJsZU9yaWdpbk9ubHksIGdlb21ldHJ5
VHJhdmVyc2FsQ29udGV4dCk7CiAgICAgaWYgKGF1dG8qIHNjcm9sbGFibGVSb290TGF5ZXIgPSBy
b290TGF5ZXItPnNjcm9sbGFibGVBcmVhKCkpIHsKLSAgICAgICAgaWYgKHNjcm9sbGFibGVSb290
TGF5ZXItPmNvbnRhaW5zRGlydHlPdmVybGF5U2Nyb2xsYmFycygpICYmICFldmVudFJlZ2lvbkNv
bnRleHQpCisgICAgICAgIGlmIChzY3JvbGxhYmxlUm9vdExheWVyLT5jb250YWluc0RpcnR5T3Zl
cmxheVNjcm9sbGJhcnMoKSAmJiAhZ2VvbWV0cnlUcmF2ZXJzYWxDb250ZXh0KQogICAgICAgICAg
ICAgc2Nyb2xsYWJsZVJvb3RMYXllci0+cGFpbnRPdmVybGF5U2Nyb2xsYmFycyhjb250ZXh0LCBk
aXJ0eVJlY3QsIG1fcGFpbnRCZWhhdmlvciwgcmVuZGVyZXIpOwogICAgIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9Mb2NhbEZyYW1lVmlldy5oIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9Mb2NhbEZyYW1lVmlldy5oCmluZGV4IGI4OWM4MDc2OTliMC4uYmUzN2UxY2ExZmMxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0xvY2FsRnJhbWVWaWV3LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9Mb2NhbEZyYW1lVmlldy5oCkBAIC01Myw5ICs1Myw5IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIGNsYXNzIEFYT2JqZWN0Q2FjaGU7CiBjbGFzcyBDb250YWluZXJOb2Rl
OwogY2xhc3MgRWxlbWVudDsKLWNsYXNzIEV2ZW50UmVnaW9uQ29udGV4dDsKIGNsYXNzIEZsb2F0
U2l6ZTsKIGNsYXNzIEZyYW1lOworY2xhc3MgR2VvbWV0cnlUcmF2ZXJzYWxDb250ZXh0OwogY2xh
c3MgR3JhcGhpY3NDb250ZXh0OwogY2xhc3MgSFRNTEZyYW1lT3duZXJFbGVtZW50OwogY2xhc3Mg
TG9jYWxGcmFtZTsKQEAgLTQwNiw3ICs0MDYsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBhZGRFbWJl
ZGRlZE9iamVjdFRvVXBkYXRlKFJlbmRlckVtYmVkZGVkT2JqZWN0Jik7CiAgICAgdm9pZCByZW1v
dmVFbWJlZGRlZE9iamVjdFRvVXBkYXRlKFJlbmRlckVtYmVkZGVkT2JqZWN0Jik7CiAKLSAgICBX
RUJDT1JFX0VYUE9SVCB2b2lkIHBhaW50Q29udGVudHMoR3JhcGhpY3NDb250ZXh0JiwgY29uc3Qg
SW50UmVjdCYgZGlydHlSZWN0LCBTZWN1cml0eU9yaWdpblBhaW50UG9saWN5ID0gU2VjdXJpdHlP
cmlnaW5QYWludFBvbGljeTo6QW55T3JpZ2luLCBFdmVudFJlZ2lvbkNvbnRleHQqID0gbnVsbHB0
cikgZmluYWw7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBwYWludENvbnRlbnRzKEdyYXBoaWNz
Q29udGV4dCYsIGNvbnN0IEludFJlY3QmIGRpcnR5UmVjdCwgU2VjdXJpdHlPcmlnaW5QYWludFBv
bGljeSA9IFNlY3VyaXR5T3JpZ2luUGFpbnRQb2xpY3k6OkFueU9yaWdpbiwgR2VvbWV0cnlUcmF2
ZXJzYWxDb250ZXh0KiA9IG51bGxwdHIpIGZpbmFsOwogCiAgICAgc3RydWN0IFBhaW50aW5nU3Rh
dGUgewogICAgICAgICBPcHRpb25TZXQ8UGFpbnRCZWhhdmlvcj4gcGFpbnRCZWhhdmlvcjsKQEAg
LTQyMCw3ICs0MjAsNyBAQCBwdWJsaWM6CiAgICAgICAgIH0KICAgICB9OwogCi0gICAgdm9pZCB3
aWxsUGFpbnRDb250ZW50cyhHcmFwaGljc0NvbnRleHQmLCBjb25zdCBJbnRSZWN0JiBkaXJ0eVJl
Y3QsIFBhaW50aW5nU3RhdGUmKTsKKyAgICB2b2lkIHdpbGxQYWludENvbnRlbnRzKEdyYXBoaWNz
Q29udGV4dCYsIGNvbnN0IEludFJlY3QmIGRpcnR5UmVjdCwgUGFpbnRpbmdTdGF0ZSYsIEdlb21l
dHJ5VHJhdmVyc2FsQ29udGV4dCogPSBudWxscHRyKTsKICAgICB2b2lkIGRpZFBhaW50Q29udGVu
dHMoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgSW50UmVjdCYgZGlydHlSZWN0LCBQYWludGluZ1N0
YXRlJik7CiAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQpAQCAtNzEyLDYgKzcxMiw3IEBAIHB1
YmxpYzoKIAogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgaW52YWxpZGF0ZUNvbnRyb2xUaW50cygp
OwogICAgIHZvaWQgaW52YWxpZGF0ZUltYWdlc1dpdGhBc3luY0RlY29kZXMoKTsKKyAgICB2b2lk
IHVwZGF0ZUFjY2Vzc2liaWxpdHlPYmplY3RSZWN0cygpOwogCiAgICAgdm9pZCBpbnZhbGlkYXRl
U2Nyb2xsYmFyc0ZvckFsbFNjcm9sbGFibGVBcmVhcygpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL1JlbW90ZUZyYW1lVmlldy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Jl
bW90ZUZyYW1lVmlldy5jcHAKaW5kZXggZTBhNjE0YWYxZWIwLi4wYjNhYjFkNGU2NTYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUmVtb3RlRnJhbWVWaWV3LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL1JlbW90ZUZyYW1lVmlldy5jcHAKQEAgLTk5LDcgKzk5LDcgQEAgSW50
UmVjdCBSZW1vdGVGcmFtZVZpZXc6OndpbmRvd0NsaXBSZWN0KCkgY29uc3QKICAgICByZXR1cm4g
eyB9OwogfQogCi12b2lkIFJlbW90ZUZyYW1lVmlldzo6cGFpbnRDb250ZW50cyhHcmFwaGljc0Nv
bnRleHQmLCBjb25zdCBJbnRSZWN0JiwgU2VjdXJpdHlPcmlnaW5QYWludFBvbGljeSwgRXZlbnRS
ZWdpb25Db250ZXh0KikKK3ZvaWQgUmVtb3RlRnJhbWVWaWV3OjpwYWludENvbnRlbnRzKEdyYXBo
aWNzQ29udGV4dCYsIGNvbnN0IEludFJlY3QmLCBTZWN1cml0eU9yaWdpblBhaW50UG9saWN5LCBH
ZW9tZXRyeVRyYXZlcnNhbENvbnRleHQqKQogewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL1JlbW90ZUZyYW1lVmlldy5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9SZW1vdGVG
cmFtZVZpZXcuaAppbmRleCAzZjJmZTlmMTZmMDQuLjYwNGI1ZWM1Y2E1NCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGFnZS9SZW1vdGVGcmFtZVZpZXcuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL1JlbW90ZUZyYW1lVmlldy5oCkBAIC01Miw3ICs1Miw3IEBAIHByaXZhdGU6CiAgICAg
dm9pZCBpbnZhbGlkYXRlU2Nyb2xsYmFyUmVjdChTY3JvbGxiYXImLCBjb25zdCBJbnRSZWN0Jikg
ZmluYWw7CiAgICAgSG9zdFdpbmRvdyogaG9zdFdpbmRvdygpIGNvbnN0IGZpbmFsOwogICAgIElu
dFJlY3Qgd2luZG93Q2xpcFJlY3QoKSBjb25zdCBmaW5hbDsKLSAgICB2b2lkIHBhaW50Q29udGVu
dHMoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgSW50UmVjdCYgZGFtYWdlUmVjdCwgU2VjdXJpdHlP
cmlnaW5QYWludFBvbGljeSwgRXZlbnRSZWdpb25Db250ZXh0KikgZmluYWw7CisgICAgdm9pZCBw
YWludENvbnRlbnRzKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEludFJlY3QmIGRhbWFnZVJlY3Qs
IFNlY3VyaXR5T3JpZ2luUGFpbnRQb2xpY3ksIEdlb21ldHJ5VHJhdmVyc2FsQ29udGV4dCopIGZp
bmFsOwogICAgIHZvaWQgYWRkZWRPclJlbW92ZWRTY3JvbGxiYXIoKSBmaW5hbDsKICAgICB2b2lk
IGRlbGVnYXRlZFNjcm9sbGluZ01vZGVEaWRDaGFuZ2UoKSBmaW5hbDsKICAgICB2b2lkIHVwZGF0
ZVNjcm9sbENvcm5lcigpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vU2Nyb2xsVmlldy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxWaWV3LmNw
cAppbmRleCAzYWYyZjFiZjdiNzQuLjE2MzU5YmQ4OTM0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vU2Nyb2xsVmlldy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vU2Nyb2xsVmlldy5jcHAKQEAgLTEyNzYsMTQgKzEyNzYsMTQgQEAgdm9pZCBTY3JvbGxWaWV3
OjpwYWludFBhblNjcm9sbEljb24oR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KQogICAgIGNvbnRl
eHQuZHJhd0ltYWdlKHBhblNjcm9sbEljb24sIGljb25HQ1BvaW50KTsKIH0KIAotdm9pZCBTY3Jv
bGxWaWV3OjpwYWludChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEludFJlY3QmIHJl
Y3QsIFNlY3VyaXR5T3JpZ2luUGFpbnRQb2xpY3kgc2VjdXJpdHlPcmlnaW5QYWludFBvbGljeSwg
RXZlbnRSZWdpb25Db250ZXh0KiBldmVudFJlZ2lvbkNvbnRleHQpCit2b2lkIFNjcm9sbFZpZXc6
OnBhaW50KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgSW50UmVjdCYgcmVjdCwgU2Vj
dXJpdHlPcmlnaW5QYWludFBvbGljeSBzZWN1cml0eU9yaWdpblBhaW50UG9saWN5LCBHZW9tZXRy
eVRyYXZlcnNhbENvbnRleHQqIGdlb21ldHJ5VHJhdmVyc2FsQ29udGV4dCkKIHsKICAgICBpZiAo
cGxhdGZvcm1XaWRnZXQoKSkgewogICAgICAgICBXaWRnZXQ6OnBhaW50KGNvbnRleHQsIHJlY3Qp
OwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgaWYgKGNvbnRleHQucGFpbnRpbmdEaXNh
YmxlZCgpICYmICFjb250ZXh0LnBlcmZvcm1pbmdQYWludEludmFsaWRhdGlvbigpICYmICFldmVu
dFJlZ2lvbkNvbnRleHQpCisgICAgaWYgKGNvbnRleHQucGFpbnRpbmdEaXNhYmxlZCgpICYmICFj
b250ZXh0LnBlcmZvcm1pbmdQYWludEludmFsaWRhdGlvbigpICYmICFnZW9tZXRyeVRyYXZlcnNh
bENvbnRleHQpCiAgICAgICAgIHJldHVybjsKIAogICAgIEludFJlY3QgZG9jdW1lbnREaXJ0eVJl
Y3QgPSByZWN0OwpAQCAtMTMwNiw3ICsxMzA2LDcgQEAgdm9pZCBTY3JvbGxWaWV3OjpwYWludChH
cmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEludFJlY3QmIHJlY3QsIFNlY3VyaXR5T3IK
ICAgICAgICAgICAgIGNvbnRleHQuY2xpcCh2aXNpYmxlQ29udGVudFJlY3QoTGVnYWN5SU9TRG9j
dW1lbnRWaXNpYmxlUmVjdCkpOwogICAgICAgICB9CiAKLSAgICAgICAgcGFpbnRDb250ZW50cyhj
b250ZXh0LCBkb2N1bWVudERpcnR5UmVjdCwgc2VjdXJpdHlPcmlnaW5QYWludFBvbGljeSwgZXZl
bnRSZWdpb25Db250ZXh0KTsKKyAgICAgICAgcGFpbnRDb250ZW50cyhjb250ZXh0LCBkb2N1bWVu
dERpcnR5UmVjdCwgc2VjdXJpdHlPcmlnaW5QYWludFBvbGljeSwgZ2VvbWV0cnlUcmF2ZXJzYWxD
b250ZXh0KTsKICAgICB9CiAKICNpZiBIQVZFKFJVQkJFUl9CQU5ESU5HKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsVmlldy5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vU2Nyb2xsVmlldy5oCmluZGV4IGZhMTA3Y2Y5MTFjMy4uODNhYWRjNTRhNDI4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxWaWV3LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsVmlldy5oCkBAIC01Nyw4ICs1Nyw4IEBAIE9CSkNfQ0xB
U1MgV0FLVmlldzsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBFdmVudFJlZ2lvbkNv
bnRleHQ7CiBjbGFzcyBGbG9hdFF1YWQ7CitjbGFzcyBHZW9tZXRyeVRyYXZlcnNhbENvbnRleHQ7
CiBjbGFzcyBIb3N0V2luZG93OwogY2xhc3MgTGVnYWN5VGlsZUNhY2hlOwogY2xhc3MgU2Nyb2xs
YmFyOwpAQCAtMzgxLDcgKzM4MSw3IEBAIHB1YmxpYzoKICAgICB9CiAKICAgICAvLyBXaWRnZXQg
b3ZlcnJpZGUuIEhhbmRsZXMgcGFpbnRpbmcgb2YgdGhlIGNvbnRlbnRzIG9mIHRoZSB2aWV3IGFz
IHdlbGwgYXMgdGhlIHNjcm9sbGJhcnMuCi0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBwYWludChH
cmFwaGljc0NvbnRleHQmLCBjb25zdCBJbnRSZWN0JiwgV2lkZ2V0OjpTZWN1cml0eU9yaWdpblBh
aW50UG9saWN5ID0gU2VjdXJpdHlPcmlnaW5QYWludFBvbGljeTo6QW55T3JpZ2luLCBFdmVudFJl
Z2lvbkNvbnRleHQqID0gbnVsbHB0cikgZmluYWw7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBw
YWludChHcmFwaGljc0NvbnRleHQmLCBjb25zdCBJbnRSZWN0JiwgV2lkZ2V0OjpTZWN1cml0eU9y
aWdpblBhaW50UG9saWN5ID0gU2VjdXJpdHlPcmlnaW5QYWludFBvbGljeTo6QW55T3JpZ2luLCBH
ZW9tZXRyeVRyYXZlcnNhbENvbnRleHQqID0gbnVsbHB0cikgZmluYWw7CiAgICAgdm9pZCBwYWlu
dFNjcm9sbGJhcnMoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgSW50UmVjdCYpOwogCiAgICAgLy8g
V2lkZ2V0IG92ZXJyaWRlcyB0byBlbnN1cmUgdGhhdCBvdXIgY2hpbGRyZW4ncyB2aXNpYmlsaXR5
IHN0YXR1cyBpcyBrZXB0IHVwIHRvIGRhdGUgd2hlbiB3ZSBnZXQgc2hvd24gYW5kIGhpZGRlbi4K
QEAgLTQyMyw3ICs0MjMsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgU2Nyb2xsVmlldygpOwogCiAgICAg
dmlydHVhbCB2b2lkIHJlcGFpbnRDb250ZW50UmVjdGFuZ2xlKGNvbnN0IEludFJlY3QmKTsKLSAg
ICB2aXJ0dWFsIHZvaWQgcGFpbnRDb250ZW50cyhHcmFwaGljc0NvbnRleHQmLCBjb25zdCBJbnRS
ZWN0JiBkYW1hZ2VSZWN0LCBTZWN1cml0eU9yaWdpblBhaW50UG9saWN5ID0gU2VjdXJpdHlPcmln
aW5QYWludFBvbGljeTo6QW55T3JpZ2luLCBFdmVudFJlZ2lvbkNvbnRleHQqID0gbnVsbHB0cikg
PSAwOworICAgIHZpcnR1YWwgdm9pZCBwYWludENvbnRlbnRzKEdyYXBoaWNzQ29udGV4dCYsIGNv
bnN0IEludFJlY3QmIGRhbWFnZVJlY3QsIFNlY3VyaXR5T3JpZ2luUGFpbnRQb2xpY3kgPSBTZWN1
cml0eU9yaWdpblBhaW50UG9saWN5OjpBbnlPcmlnaW4sIEdlb21ldHJ5VHJhdmVyc2FsQ29udGV4
dCogPSBudWxscHRyKSA9IDA7CiAKICAgICB2aXJ0dWFsIHZvaWQgcGFpbnRPdmVyaGFuZ0FyZWFz
KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEludFJlY3QmIGhvcml6b250YWxPdmVyaGFuZ0FyZWEs
IGNvbnN0IEludFJlY3QmIHZlcnRpY2FsT3ZlcmhhbmdBcmVhLCBjb25zdCBJbnRSZWN0JiBkaXJ0
eVJlY3QpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxiYXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYmFyLmNwcAppbmRleCA2ZTNlZGMx
OWY3ZjguLjgwNDZkMTk2NjM2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
U2Nyb2xsYmFyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxiYXIuY3Bw
CkBAIC0xNjEsNyArMTYxLDcgQEAgdm9pZCBTY3JvbGxiYXI6OnVwZGF0ZVRodW1iUHJvcG9ydGlv
bigpCiAgICAgdXBkYXRlVGh1bWIoKTsKIH0KIAotdm9pZCBTY3JvbGxiYXI6OnBhaW50KEdyYXBo
aWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgSW50UmVjdCYgZGFtYWdlUmVjdCwgV2lkZ2V0OjpT
ZWN1cml0eU9yaWdpblBhaW50UG9saWN5LCBFdmVudFJlZ2lvbkNvbnRleHQqKQordm9pZCBTY3Jv
bGxiYXI6OnBhaW50KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgSW50UmVjdCYgZGFt
YWdlUmVjdCwgV2lkZ2V0OjpTZWN1cml0eU9yaWdpblBhaW50UG9saWN5LCBHZW9tZXRyeVRyYXZl
cnNhbENvbnRleHQqKQogewogICAgIGlmIChjb250ZXh0LmludmFsaWRhdGluZ0NvbnRyb2xUaW50
cygpICYmIHRoZW1lKCkuc3VwcG9ydHNDb250cm9sVGludHMoKSkgewogICAgICAgICBpbnZhbGlk
YXRlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxiYXIuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGJhci5oCmluZGV4IGU3NGFkMzZhNWJkNi4u
NGFkZmM1NjA5NDU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxi
YXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxiYXIuaApAQCAtODUsNyAr
ODUsNyBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRQcm9wb3J0aW9uKGlu
dCB2aXNpYmxlU2l6ZSwgaW50IHRvdGFsU2l6ZSk7CiAgICAgdm9pZCBzZXRQcmVzc2VkUG9zKGlu
dCBwKSB7IG1fcHJlc3NlZFBvcyA9IHA7IH0KIAotICAgIHZvaWQgcGFpbnQoR3JhcGhpY3NDb250
ZXh0JiwgY29uc3QgSW50UmVjdCYgZGFtYWdlUmVjdCwgV2lkZ2V0OjpTZWN1cml0eU9yaWdpblBh
aW50UG9saWN5ID0gU2VjdXJpdHlPcmlnaW5QYWludFBvbGljeTo6QW55T3JpZ2luLCBFdmVudFJl
Z2lvbkNvbnRleHQqID0gbnVsbHB0cikgb3ZlcnJpZGU7CisgICAgdm9pZCBwYWludChHcmFwaGlj
c0NvbnRleHQmLCBjb25zdCBJbnRSZWN0JiBkYW1hZ2VSZWN0LCBXaWRnZXQ6OlNlY3VyaXR5T3Jp
Z2luUGFpbnRQb2xpY3kgPSBTZWN1cml0eU9yaWdpblBhaW50UG9saWN5OjpBbnlPcmlnaW4sIEdl
b21ldHJ5VHJhdmVyc2FsQ29udGV4dCogPSBudWxscHRyKSBvdmVycmlkZTsKIAogICAgIGJvb2wg
ZW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1fZW5hYmxlZDsgfQogICAgIHZpcnR1YWwgdm9pZCBz
ZXRFbmFibGVkKGJvb2wpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vV2lk
Z2V0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1dpZGdldC5jcHAKaW5kZXggZDlkOGJh
NWQ3NjY4Li42Njk0MTZjZTg3ZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1dpZGdldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vV2lkZ2V0LmNwcApAQCAt
Mjg4LDcgKzI4OCw3IEBAIHZvaWQgV2lkZ2V0OjpzZXRGcmFtZVJlY3QoY29uc3QgSW50UmVjdCYg
cmVjdCkKICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQogCi12b2lkIFdpZGdldDo6cGFpbnQoR3Jh
cGhpY3NDb250ZXh0JiwgY29uc3QgSW50UmVjdCYsIFNlY3VyaXR5T3JpZ2luUGFpbnRQb2xpY3ks
IEV2ZW50UmVnaW9uQ29udGV4dCopCit2b2lkIFdpZGdldDo6cGFpbnQoR3JhcGhpY3NDb250ZXh0
JiwgY29uc3QgSW50UmVjdCYsIFNlY3VyaXR5T3JpZ2luUGFpbnRQb2xpY3ksIEdlb21ldHJ5VHJh
dmVyc2FsQ29udGV4dCopCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1dpZGdldC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vV2lkZ2V0LmgKaW5kZXggODgzZjJjNzljNDFiLi4zOTY5ODJmNzBmNTAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1dpZGdldC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1dpZGdldC5oCkBAIC02MCw4ICs2MCw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
Y2xhc3MgQ3Vyc29yOwogY2xhc3MgRXZlbnQ7Ci1jbGFzcyBFdmVudFJlZ2lvbkNvbnRleHQ7CiBj
bGFzcyBGb250Q2FzY2FkZTsKK2NsYXNzIEdlb21ldHJ5VHJhdmVyc2FsQ29udGV4dDsKIGNsYXNz
IEdyYXBoaWNzQ29udGV4dDsKIGNsYXNzIExvY2FsRnJhbWVWaWV3OwogY2xhc3MgUGxhdGZvcm1N
b3VzZUV2ZW50OwpAQCAtMTEwLDcgKzExMCw3IEBAIHB1YmxpYzoKIAogICAgIGVudW0gY2xhc3Mg
U2VjdXJpdHlPcmlnaW5QYWludFBvbGljeSB7IEFueU9yaWdpbiwgQWNjZXNzaWJsZU9yaWdpbk9u
bHkgfTsKIAotICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgdm9pZCBwYWludChHcmFwaGljc0Nv
bnRleHQmLCBjb25zdCBJbnRSZWN0JiwgU2VjdXJpdHlPcmlnaW5QYWludFBvbGljeSA9IFNlY3Vy
aXR5T3JpZ2luUGFpbnRQb2xpY3k6OkFueU9yaWdpbiwgRXZlbnRSZWdpb25Db250ZXh0KiA9IG51
bGxwdHIpOworICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgdm9pZCBwYWludChHcmFwaGljc0Nv
bnRleHQmLCBjb25zdCBJbnRSZWN0JiwgU2VjdXJpdHlPcmlnaW5QYWludFBvbGljeSA9IFNlY3Vy
aXR5T3JpZ2luUGFpbnRQb2xpY3k6OkFueU9yaWdpbiwgR2VvbWV0cnlUcmF2ZXJzYWxDb250ZXh0
KiA9IG51bGxwdHIpOwogICAgIHZvaWQgaW52YWxpZGF0ZSgpIHsgaW52YWxpZGF0ZVJlY3QoYm91
bmRzUmVjdCgpKTsgfQogICAgIHZpcnR1YWwgdm9pZCBpbnZhbGlkYXRlUmVjdChjb25zdCBJbnRS
ZWN0JikgPSAwOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvV2lk
Z2V0R3RrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9XaWRnZXRHdGsuY3BwCmlu
ZGV4IGJjNmM5NDQ5ZmM5ZC4uNDBhZTkyYmRlZmRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ndGsvV2lkZ2V0R3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ndGsvV2lkZ2V0R3RrLmNwcApAQCAtMzUsNiArMzUsOCBAQAogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKK2NsYXNzIEdlb21ldHJ5VHJhdmVyc2FsQ29udGV4dDsKKwogV2lkZ2V0Ojp+V2lkZ2V0
KCkKIHsKICAgICBBU1NFUlQoIXBhcmVudCgpKTsKQEAgLTYwLDcgKzYyLDcgQEAgdm9pZCBXaWRn
ZXQ6OmhpZGUoKQogICAgIHNldFNlbGZWaXNpYmxlKGZhbHNlKTsKIH0KIAotdm9pZCBXaWRnZXQ6
OnBhaW50KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEludFJlY3QmLCBTZWN1cml0eU9yaWdpblBh
aW50UG9saWN5LCBFdmVudFJlZ2lvbkNvbnRleHQqKQordm9pZCBXaWRnZXQ6OnBhaW50KEdyYXBo
aWNzQ29udGV4dCYsIGNvbnN0IEludFJlY3QmLCBTZWN1cml0eU9yaWdpblBhaW50UG9saWN5LCBH
ZW9tZXRyeVRyYXZlcnNhbENvbnRleHQqKQogewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9pb3MvV2lkZ2V0SU9TLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
aW9zL1dpZGdldElPUy5tbQppbmRleCBlOTY0OTRiYzkxODkuLjg4YzViNzYwOGFjZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dpZGdldElPUy5tbQorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2lkZ2V0SU9TLm1tCkBAIC0xNDYsNyArMTQ2LDcgQEAg
TlNWaWV3KiBXaWRnZXQ6OmdldE91dGVyVmlldygpIGNvbnN0CiAgICAgcmV0dXJuIHZpZXc7CiB9
CiAKLXZvaWQgV2lkZ2V0OjpwYWludChHcmFwaGljc0NvbnRleHQmIHAsIGNvbnN0IEludFJlY3Qm
IHIsIFNlY3VyaXR5T3JpZ2luUGFpbnRQb2xpY3ksIEV2ZW50UmVnaW9uQ29udGV4dCopCit2b2lk
IFdpZGdldDo6cGFpbnQoR3JhcGhpY3NDb250ZXh0JiBwLCBjb25zdCBJbnRSZWN0JiByLCBTZWN1
cml0eU9yaWdpblBhaW50UG9saWN5LCBHZW9tZXRyeVRyYXZlcnNhbENvbnRleHQqKQogewogICAg
IGlmIChwLnBhaW50aW5nRGlzYWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dpZGdldE1hYy5tbSBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21hYy9XaWRnZXRNYWMubW0KaW5kZXggMjU4NzQ5OTE2OTJkLi5kYzY5NmZlMGUx
NjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XaWRnZXRNYWMubW0K
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dpZGdldE1hYy5tbQpAQCAtMTg2LDcg
KzE4Niw3IEBAIE5TVmlldyAqV2lkZ2V0OjpnZXRPdXRlclZpZXcoKSBjb25zdAogICAgIHJldHVy
biB2aWV3OwogfQogCi12b2lkIFdpZGdldDo6cGFpbnQoR3JhcGhpY3NDb250ZXh0JiBwLCBjb25z
dCBJbnRSZWN0JiByLCBTZWN1cml0eU9yaWdpblBhaW50UG9saWN5LCBFdmVudFJlZ2lvbkNvbnRl
eHQqKQordm9pZCBXaWRnZXQ6OnBhaW50KEdyYXBoaWNzQ29udGV4dCYgcCwgY29uc3QgSW50UmVj
dCYgciwgU2VjdXJpdHlPcmlnaW5QYWludFBvbGljeSwgR2VvbWV0cnlUcmF2ZXJzYWxDb250ZXh0
KikKIHsKICAgICBpZiAocC5wYWludGluZ0Rpc2FibGVkKCkpCiAgICAgICAgIHJldHVybjsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9XaWRnZXRXaW4uY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1dpZGdldFdpbi5jcHAKaW5kZXggY2I1MmIxNzE3YmU3
Li40OTVhNGI0YjU2NWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9X
aWRnZXRXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9XaWRnZXRXaW4u
Y3BwCkBAIC0zOSw2ICszOSw4IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgR2Vv
bWV0cnlUcmF2ZXJzYWxDb250ZXh0OworCiBXaWRnZXQ6On5XaWRnZXQoKSAKIHsKICAgICBBU1NF
UlQoIXBhcmVudCgpKTsKQEAgLTY3LDcgKzY5LDcgQEAgdm9pZCBXaWRnZXQ6OnNldEN1cnNvcihj
b25zdCBDdXJzb3ImIGN1cnNvcikKICAgICAgICAgdmlldy0+aG9zdFdpbmRvdygpLT5zZXRDdXJz
b3IoY3Vyc29yKTsKIH0KIAotdm9pZCBXaWRnZXQ6OnBhaW50KEdyYXBoaWNzQ29udGV4dCYsIGNv
bnN0IEludFJlY3QmLCBTZWN1cml0eU9yaWdpblBhaW50UG9saWN5LCBFdmVudFJlZ2lvbkNvbnRl
eHQqKQordm9pZCBXaWRnZXQ6OnBhaW50KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEludFJlY3Qm
LCBTZWN1cml0eU9yaWdpblBhaW50UG9saWN5LCBHZW9tZXRyeVRyYXZlcnNhbENvbnRleHQqKQog
ewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvQWNjZXNzaWJpbGl0
eUdlb21ldHJ5VHJhdmVyc2FsQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
QWNjZXNzaWJpbGl0eUdlb21ldHJ5VHJhdmVyc2FsQ29udGV4dC5jcHAKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5kNDY4Yzk2NjJjYWYKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvQWNjZXNzaWJpbGl0eUdlb21ldHJ5VHJhdmVyc2Fs
Q29udGV4dC5jcHAKQEAgLTAsMCArMSw0MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMyBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
KyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgor
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25m
aWcuaCIKKyNpbmNsdWRlICJBY2Nlc3NpYmlsaXR5R2VvbWV0cnlUcmF2ZXJzYWxDb250ZXh0Lmgi
CisKKyNpbmNsdWRlICJSZW5kZXJCb3guaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitBY2Nl
c3NpYmlsaXR5R2VvbWV0cnlUcmF2ZXJzYWxDb250ZXh0Ojp+QWNjZXNzaWJpbGl0eUdlb21ldHJ5
VHJhdmVyc2FsQ29udGV4dCgpID0gZGVmYXVsdDsKKwordm9pZCBBY2Nlc3NpYmlsaXR5R2VvbWV0
cnlUcmF2ZXJzYWxDb250ZXh0Ojp0YWtlQm91bmRzKGNvbnN0IFJlbmRlckJveCYgcmVuZGVyQm94
LCBGbG9hdFJlY3QgcGFpbnRSZWN0KQoreworICAgIC8vIEZJWE1FOiBVc2UgYHBhaW50UmVjdGAg
dG8gcXVldWUgYSBmcmFtZSB1cGRhdGUgZm9yIHRoZSBBWCBvYmplY3QgYXNzb2NpYXRlZCB3aXRo
IGByZW5kZXJCb3hgLgorICAgIFVOVVNFRF9QQVJBTShyZW5kZXJCb3gpOworICAgIFVOVVNFRF9Q
QVJBTShwYWludFJlY3QpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvQWNjZXNzaWJpbGl0eUdlb21ldHJ5VHJhdmVyc2Fs
Q29udGV4dC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0FjY2Vzc2liaWxpdHlHZW9tZXRy
eVRyYXZlcnNhbENvbnRleHQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAuLmEyZTM3YTlmZGE0NAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9BY2Nlc3NpYmlsaXR5R2VvbWV0cnlUcmF2ZXJzYWxDb250ZXh0LmgKQEAgLTAsMCArMSw2
OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiRmxvYXRSZWN0Lmgi
CisjaW5jbHVkZSAiR2VvbWV0cnlUcmF2ZXJzYWxDb250ZXh0LmgiCisKK25hbWVzcGFjZSBXZWJD
b3JlIHsKKworY2xhc3MgUmVuZGVyQm94OworCitjbGFzcyBBY2Nlc3NpYmlsaXR5R2VvbWV0cnlU
cmF2ZXJzYWxDb250ZXh0IDogcHVibGljIEdlb21ldHJ5VHJhdmVyc2FsQ29udGV4dCB7CitwdWJs
aWM6CisgICAgQWNjZXNzaWJpbGl0eUdlb21ldHJ5VHJhdmVyc2FsQ29udGV4dCgpID0gZGVmYXVs
dDsKKyAgICB2aXJ0dWFsIH5BY2Nlc3NpYmlsaXR5R2VvbWV0cnlUcmF2ZXJzYWxDb250ZXh0KCk7
CisKKyAgICBib29sIGlzQWNjZXNzaWJpbGl0eUdlb21ldHJ5VHJhdmVyc2FsQ29udGV4dCgpIGNv
bnN0IGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KKworICAgIHZvaWQgdGFrZUJvdW5kcyhjb25zdCBS
ZW5kZXJCb3gmLCBGbG9hdFJlY3QgLyogcGFpbnRSZWN0ICovKTsKKworcHJpdmF0ZToKKyAgICAv
LyBNYXBzIHRoZSBnaXZlbiByZWN0IHVzaW5nIHRoZSBjdXJyZW50IHRyYW5zZm9ybSBhbmQgY2xp
cCBzdGFjay4KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBSZWN0VD4KKyAgICBGbG9hdFJlY3QgbWFw
UmVjdChSZWN0VCYmIHJlY3QpCisgICAgeworICAgICAgICBib29sIGhhc1RyYW5zZm9ybSA9IG1f
dHJhbnNmb3JtU3RhY2suc2l6ZSgpOworICAgICAgICBib29sIGhhc0NsaXAgPSBtX2NsaXBTdGFj
ay5zaXplKCk7CisgICAgICAgIGlmICghaGFzVHJhbnNmb3JtICYmICFoYXNDbGlwKQorICAgICAg
ICAgICAgcmV0dXJuIHJlY3Q7CisKKyAgICAgICAgRmxvYXRSZWN0IG1hcHBlZFJlY3QgPSByZWN0
OworICAgICAgICBpZiAoaGFzVHJhbnNmb3JtKQorICAgICAgICAgICAgbWFwcGVkUmVjdCA9IG1f
dHJhbnNmb3JtU3RhY2subGFzdCgpLm1hcFJlY3QobWFwcGVkUmVjdCk7CisgICAgICAgIGlmICho
YXNDbGlwKQorICAgICAgICAgICAgbWFwcGVkUmVjdC5pbnRlcnNlY3QobV9jbGlwU3RhY2subGFz
dCgpKTsKKworICAgICAgICByZXR1cm4gbWFwcGVkUmVjdDsKKyAgICB9CisKK307IC8vIGNsYXNz
IEFjY2Vzc2liaWxpdHlHZW9tZXRyeVRyYXZlcnNhbENvbnRleHQKKworfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQorCitTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0JFR0lOKFdlYkNvcmU6OkFjY2Vzc2li
aWxpdHlHZW9tZXRyeVRyYXZlcnNhbENvbnRleHQpCisgICAgc3RhdGljIGJvb2wgaXNUeXBlKGNv
bnN0IFdlYkNvcmU6Okdlb21ldHJ5VHJhdmVyc2FsQ29udGV4dCYgZ2VvbWV0cnlUcmF2ZXJzYWxD
b250ZXh0KSB7IHJldHVybiBnZW9tZXRyeVRyYXZlcnNhbENvbnRleHQuaXNBY2Nlc3NpYmlsaXR5
R2VvbWV0cnlUcmF2ZXJzYWxDb250ZXh0KCk7IH0KK1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNfRU5E
KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9FdmVudFJlZ2lvbi5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvRXZlbnRSZWdpb24uY3BwCmluZGV4IDk3Nzc5OGQw
MzljZS4uZDg3MjA3ZjRmNzExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
RXZlbnRSZWdpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9FdmVudFJlZ2lv
bi5jcHAKQEAgLTQzLDQ4ICs0Myw3IEBAIEV2ZW50UmVnaW9uQ29udGV4dDo6RXZlbnRSZWdpb25D
b250ZXh0KEV2ZW50UmVnaW9uJiBldmVudFJlZ2lvbikKIHsKIH0KIAotdm9pZCBFdmVudFJlZ2lv
bkNvbnRleHQ6OnB1c2hUcmFuc2Zvcm0oY29uc3QgQWZmaW5lVHJhbnNmb3JtJiB0cmFuc2Zvcm0p
Ci17Ci0gICAgaWYgKG1fdHJhbnNmb3JtU3RhY2suaXNFbXB0eSgpKQotICAgICAgICBtX3RyYW5z
Zm9ybVN0YWNrLmFwcGVuZCh0cmFuc2Zvcm0pOwotICAgIGVsc2UKLSAgICAgICAgbV90cmFuc2Zv
cm1TdGFjay5hcHBlbmQobV90cmFuc2Zvcm1TdGFjay5sYXN0KCkgKiB0cmFuc2Zvcm0pOwotfQot
Ci12b2lkIEV2ZW50UmVnaW9uQ29udGV4dDo6cG9wVHJhbnNmb3JtKCkKLXsKLSAgICBpZiAobV90
cmFuc2Zvcm1TdGFjay5pc0VtcHR5KCkpIHsKLSAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgbV90cmFuc2Zvcm1TdGFjay5yZW1vdmVMYXN0
KCk7Ci19Ci0KLXZvaWQgRXZlbnRSZWdpb25Db250ZXh0OjpwdXNoQ2xpcChjb25zdCBJbnRSZWN0
JiBjbGlwUmVjdCkKLXsKLSAgICBhdXRvIHRyYW5zZm9ybWVkQ2xpcCA9IG1fdHJhbnNmb3JtU3Rh
Y2suaXNFbXB0eSgpID8gY2xpcFJlY3QgOiBtX3RyYW5zZm9ybVN0YWNrLmxhc3QoKS5tYXBSZWN0
KGNsaXBSZWN0KTsKLQotICAgIGlmIChtX2NsaXBTdGFjay5pc0VtcHR5KCkpCi0gICAgICAgIG1f
Y2xpcFN0YWNrLmFwcGVuZCh0cmFuc2Zvcm1lZENsaXApOwotICAgIGVsc2UKLSAgICAgICAgbV9j
bGlwU3RhY2suYXBwZW5kKGludGVyc2VjdGlvbihtX2NsaXBTdGFjay5sYXN0KCksIHRyYW5zZm9y
bWVkQ2xpcCkpOwotfQotCi12b2lkIEV2ZW50UmVnaW9uQ29udGV4dDo6cHVzaENsaXAoY29uc3Qg
UGF0aCYgcGF0aCwgV2luZFJ1bGUpCi17Ci0gICAgLy8gRklYTUU6IEFwcHJveGltYXRlIHBhdGhz
IGJldHRlci4KLSAgICBhdXRvIHBhdGhCb3VuZHMgPSBlbmNsb3NpbmdJbnRSZWN0KHBhdGguYm91
bmRpbmdSZWN0KCkpOwotICAgIHB1c2hDbGlwKHBhdGhCb3VuZHMpOwotfQotCi12b2lkIEV2ZW50
UmVnaW9uQ29udGV4dDo6cG9wQ2xpcCgpCi17Ci0gICAgaWYgKG1fY2xpcFN0YWNrLmlzRW1wdHko
KSkgewotICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgcmV0dXJuOwotICAg
IH0KLSAgICBtX2NsaXBTdGFjay5yZW1vdmVMYXN0KCk7Ci19CitFdmVudFJlZ2lvbkNvbnRleHQ6
On5FdmVudFJlZ2lvbkNvbnRleHQoKSA9IGRlZmF1bHQ7CiAKIHZvaWQgRXZlbnRSZWdpb25Db250
ZXh0Ojp1bml0ZShjb25zdCBSZWdpb24mIHJlZ2lvbiwgUmVuZGVyT2JqZWN0JiByZW5kZXJlciwg
Y29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlLCBib29sIG92ZXJyaWRlVXNlck1vZGlmeUlzRWRpdGFi
bGUpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvRXZlbnRSZWdpb24u
aCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9FdmVudFJlZ2lvbi5oCmluZGV4IDRmZDRiMWVh
NWJiYS4uN2E1NzRiNDFmNDNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
RXZlbnRSZWdpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvRXZlbnRSZWdpb24u
aApAQCAtMjYsNiArMjYsNyBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJBZmZpbmVUcmFu
c2Zvcm0uaCIKKyNpbmNsdWRlICJHZW9tZXRyeVRyYXZlcnNhbENvbnRleHQuaCIKICNpbmNsdWRl
ICJJbnRSZWN0SGFzaC5oIgogI2luY2x1ZGUgIkludGVyYWN0aW9uUmVnaW9uLmgiCiAjaW5jbHVk
ZSAiTm9kZS5oIgpAQCAtNDQsMTggKzQ1LDEyIEBAIGNsYXNzIFBhdGg7CiBjbGFzcyBSZW5kZXJP
YmplY3Q7CiBjbGFzcyBSZW5kZXJTdHlsZTsKIAotZW51bSBjbGFzcyBXaW5kUnVsZSA6IGJvb2w7
Ci0KLWNsYXNzIEV2ZW50UmVnaW9uQ29udGV4dCB7CitjbGFzcyBFdmVudFJlZ2lvbkNvbnRleHQg
OiBwdWJsaWMgR2VvbWV0cnlUcmF2ZXJzYWxDb250ZXh0IHsKIHB1YmxpYzoKICAgICBleHBsaWNp
dCBFdmVudFJlZ2lvbkNvbnRleHQoRXZlbnRSZWdpb24mKTsKKyAgICB2aXJ0dWFsIH5FdmVudFJl
Z2lvbkNvbnRleHQoKTsKIAotICAgIHZvaWQgcHVzaFRyYW5zZm9ybShjb25zdCBBZmZpbmVUcmFu
c2Zvcm0mKTsKLSAgICB2b2lkIHBvcFRyYW5zZm9ybSgpOwotCi0gICAgdm9pZCBwdXNoQ2xpcChj
b25zdCBJbnRSZWN0Jik7Ci0gICAgdm9pZCBwdXNoQ2xpcChjb25zdCBQYXRoJiwgV2luZFJ1bGUp
OwotICAgIHZvaWQgcG9wQ2xpcCgpOworICAgIGJvb2wgaXNFdmVudFJlZ2lvbkNvbnRleHQoKSBj
b25zdCBmaW5hbCB7IHJldHVybiB0cnVlOyB9CiAKICAgICB2b2lkIHVuaXRlKGNvbnN0IFJlZ2lv
biYsIFJlbmRlck9iamVjdCYsIGNvbnN0IFJlbmRlclN0eWxlJiwgYm9vbCBvdmVycmlkZVVzZXJN
b2RpZnlJc0VkaXRhYmxlID0gZmFsc2UpOwogICAgIGJvb2wgY29udGFpbnMoY29uc3QgSW50UmVj
dCYpIGNvbnN0OwpAQCAtNjgsOCArNjMsNiBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAgICAgRXZl
bnRSZWdpb24mIG1fZXZlbnRSZWdpb247Ci0gICAgVmVjdG9yPEFmZmluZVRyYW5zZm9ybT4gbV90
cmFuc2Zvcm1TdGFjazsKLSAgICBWZWN0b3I8SW50UmVjdD4gbV9jbGlwU3RhY2s7CiAKICNpZiBF
TkFCTEUoSU5URVJBQ1RJT05fUkVHSU9OU19JTl9FVkVOVF9SRUdJT04pCiAgICAgVmVjdG9yPElu
dGVyYWN0aW9uUmVnaW9uPiBtX2ludGVyYWN0aW9uUmVnaW9uczsKQEAgLTc5LDQ1ICs3Miw2IEBA
IHByaXZhdGU6CiAjZW5kaWYKIH07CiAKLWNsYXNzIEV2ZW50UmVnaW9uQ29udGV4dFN0YXRlU2F2
ZXIgewotcHVibGljOgotICAgIEV2ZW50UmVnaW9uQ29udGV4dFN0YXRlU2F2ZXIoRXZlbnRSZWdp
b25Db250ZXh0KiBjb250ZXh0KQotICAgICAgICA6IG1fY29udGV4dChjb250ZXh0KQotICAgIHsK
LSAgICB9Ci0gICAgCi0gICAgfkV2ZW50UmVnaW9uQ29udGV4dFN0YXRlU2F2ZXIoKQotICAgIHsK
LSAgICAgICAgaWYgKCFtX2NvbnRleHQpCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAg
aWYgKG1fcHVzaGVkQ2xpcCkKLSAgICAgICAgICAgIG1fY29udGV4dC0+cG9wQ2xpcCgpOwotICAg
IH0KLSAgICAKLSAgICB2b2lkIHB1c2hDbGlwKGNvbnN0IEludFJlY3QmIGNsaXBSZWN0KQotICAg
IHsKLSAgICAgICAgQVNTRVJUKCFtX3B1c2hlZENsaXApOwotICAgICAgICBpZiAobV9jb250ZXh0
KQotICAgICAgICAgICAgbV9jb250ZXh0LT5wdXNoQ2xpcChjbGlwUmVjdCk7Ci0gICAgICAgIG1f
cHVzaGVkQ2xpcCA9IHRydWU7Ci0gICAgfQotCi0gICAgdm9pZCBwdXNoQ2xpcChjb25zdCBQYXRo
JiBwYXRoLCBXaW5kUnVsZSB3aW5kUnVsZSkKLSAgICB7Ci0gICAgICAgIEFTU0VSVCghbV9wdXNo
ZWRDbGlwKTsKLSAgICAgICAgaWYgKG1fY29udGV4dCkKLSAgICAgICAgICAgIG1fY29udGV4dC0+
cHVzaENsaXAocGF0aCwgd2luZFJ1bGUpOwotICAgICAgICBtX3B1c2hlZENsaXAgPSB0cnVlOwot
ICAgIH0KLQotICAgIEV2ZW50UmVnaW9uQ29udGV4dCogY29udGV4dCgpIGNvbnN0IHsgcmV0dXJu
IG1fY29udGV4dDsgfQotCi1wcml2YXRlOgotICAgIEV2ZW50UmVnaW9uQ29udGV4dCogbV9jb250
ZXh0OwotICAgIGJvb2wgbV9wdXNoZWRDbGlwIHsgZmFsc2UgfTsKLX07Ci0KIGNsYXNzIEV2ZW50
UmVnaW9uIHsKIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCBFdmVudFJlZ2lvbigpOwpAQCAt
MjEzLDMgKzE2Nyw3IEBAIGlubGluZSB2b2lkIEV2ZW50UmVnaW9uOjplbnN1cmVFZGl0YWJsZVJl
Z2lvbigpCiAjZW5kaWYKIAogfQorCitTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0JFR0lOKFdlYkNv
cmU6OkV2ZW50UmVnaW9uQ29udGV4dCkKKyAgICBzdGF0aWMgYm9vbCBpc1R5cGUoY29uc3QgV2Vi
Q29yZTo6R2VvbWV0cnlUcmF2ZXJzYWxDb250ZXh0JiBnZW9tZXRyeVRyYXZlcnNhbENvbnRleHQp
IHsgcmV0dXJuIGdlb21ldHJ5VHJhdmVyc2FsQ29udGV4dC5pc0V2ZW50UmVnaW9uQ29udGV4dCgp
OyB9CitTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0VORCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvR2VvbWV0cnlUcmF2ZXJzYWxDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9HZW9tZXRyeVRyYXZlcnNhbENvbnRleHQuY3BwCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uODVmMTNjMzYzODc3Ci0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0dlb21ldHJ5VHJhdmVyc2FsQ29udGV4dC5jcHAK
QEAgLTAsMCArMSw3NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMyBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNs
dWRlICJHZW9tZXRyeVRyYXZlcnNhbENvbnRleHQuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgewor
Cit2b2lkIEdlb21ldHJ5VHJhdmVyc2FsQ29udGV4dDo6cHVzaFRyYW5zZm9ybShjb25zdCBBZmZp
bmVUcmFuc2Zvcm0mIHRyYW5zZm9ybSkKK3sKKyAgICBpZiAobV90cmFuc2Zvcm1TdGFjay5pc0Vt
cHR5KCkpCisgICAgICAgIG1fdHJhbnNmb3JtU3RhY2suYXBwZW5kKHRyYW5zZm9ybSk7CisgICAg
ZWxzZQorICAgICAgICBtX3RyYW5zZm9ybVN0YWNrLmFwcGVuZChtX3RyYW5zZm9ybVN0YWNrLmxh
c3QoKSAqIHRyYW5zZm9ybSk7Cit9CisKK3ZvaWQgR2VvbWV0cnlUcmF2ZXJzYWxDb250ZXh0Ojpw
b3BUcmFuc2Zvcm0oKQoreworICAgIGlmIChtX3RyYW5zZm9ybVN0YWNrLmlzRW1wdHkoKSkgewor
ICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAg
ICBtX3RyYW5zZm9ybVN0YWNrLnJlbW92ZUxhc3QoKTsKK30KKwordm9pZCBHZW9tZXRyeVRyYXZl
cnNhbENvbnRleHQ6OnB1c2hDbGlwKGNvbnN0IEludFJlY3QmIGNsaXBSZWN0KQoreworICAgIGF1
dG8gdHJhbnNmb3JtZWRDbGlwID0gbV90cmFuc2Zvcm1TdGFjay5pc0VtcHR5KCkgPyBjbGlwUmVj
dCA6IG1fdHJhbnNmb3JtU3RhY2subGFzdCgpLm1hcFJlY3QoY2xpcFJlY3QpOworCisgICAgaWYg
KG1fY2xpcFN0YWNrLmlzRW1wdHkoKSkKKyAgICAgICAgbV9jbGlwU3RhY2suYXBwZW5kKHRyYW5z
Zm9ybWVkQ2xpcCk7CisgICAgZWxzZQorICAgICAgICBtX2NsaXBTdGFjay5hcHBlbmQoaW50ZXJz
ZWN0aW9uKG1fY2xpcFN0YWNrLmxhc3QoKSwgdHJhbnNmb3JtZWRDbGlwKSk7Cit9CisKK3ZvaWQg
R2VvbWV0cnlUcmF2ZXJzYWxDb250ZXh0OjpwdXNoQ2xpcChjb25zdCBQYXRoJiBwYXRoKQorewor
ICAgIC8vIEZJWE1FOiBBcHByb3hpbWF0ZSBwYXRocyBiZXR0ZXIuCisgICAgYXV0byBwYXRoQm91
bmRzID0gZW5jbG9zaW5nSW50UmVjdChwYXRoLmJvdW5kaW5nUmVjdCgpKTsKKyAgICBwdXNoQ2xp
cChwYXRoQm91bmRzKTsKK30KKwordm9pZCBHZW9tZXRyeVRyYXZlcnNhbENvbnRleHQ6OnBvcENs
aXAoKQoreworICAgIGlmIChtX2NsaXBTdGFjay5pc0VtcHR5KCkpIHsKKyAgICAgICAgQVNTRVJU
X05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgbV9jbGlwU3RhY2su
cmVtb3ZlTGFzdCgpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvR2VvbWV0cnlUcmF2ZXJzYWxDb250ZXh0LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvR2VvbWV0cnlUcmF2ZXJzYWxDb250ZXh0LmgKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi4xZTNhMWNjNjNhODkKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvR2VvbWV0cnlUcmF2ZXJzYWxDb250ZXh0
LmgKQEAgLTAsMCArMSw5OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMyBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVk
ZSAiQWZmaW5lVHJhbnNmb3JtLmgiCisjaW5jbHVkZSAiSW50UmVjdC5oIgorI2luY2x1ZGUgPHd0
Zi9DaGVja2VkUHRyLmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorCituYW1lc3BhY2UgV2Vi
Q29yZSB7CisKK2NsYXNzIFBhdGg7CisKKy8vIENvbnRleHQgZm9yICJnZW9tZXRyeSB0cmF2ZXJz
YWwiIHBhaW50cywgd2hpY2ggYXJlIHBhaW50IHBhc3NlcyB0aGF0IHRyYXZlcnNlCisvLyB0byBn
ZXQgYW5kIHVzZSB0aGUgZmluYWwgcGFpbnQtdGltZSBnZW9tZXRyeSBmb3IgdXRpbGl0eSBwdXJw
b3Nlcy4KKworY2xhc3MgR2VvbWV0cnlUcmF2ZXJzYWxDb250ZXh0IDogcHVibGljIENhbk1ha2VD
aGVja2VkUHRyIHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5HZW9tZXRyeVRyYXZlcnNhbENvbnRl
eHQoKSA9IGRlZmF1bHQ7CisKKyAgICB2b2lkIHB1c2hUcmFuc2Zvcm0oY29uc3QgQWZmaW5lVHJh
bnNmb3JtJik7CisgICAgdm9pZCBwb3BUcmFuc2Zvcm0oKTsKKworICAgIHZvaWQgcHVzaENsaXAo
Y29uc3QgSW50UmVjdCYpOworICAgIHZvaWQgcHVzaENsaXAoY29uc3QgUGF0aCYpOworICAgIHZv
aWQgcG9wQ2xpcCgpOworCisgICAgdmlydHVhbCBib29sIGlzRXZlbnRSZWdpb25Db250ZXh0KCkg
Y29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIGJvb2wgaXNBY2Nlc3NpYmlsaXR5
R2VvbWV0cnlUcmF2ZXJzYWxDb250ZXh0KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKworcHJv
dGVjdGVkOgorICAgIFZlY3RvcjxBZmZpbmVUcmFuc2Zvcm0+IG1fdHJhbnNmb3JtU3RhY2s7Cisg
ICAgVmVjdG9yPEludFJlY3Q+IG1fY2xpcFN0YWNrOworCit9OyAvLyBjbGFzcyBHZW9tZXRyeVRy
YXZlcnNhbENvbnRleHQKKworY2xhc3MgR2VvbWV0cnlUcmF2ZXJzYWxDb250ZXh0U3RhdGVTYXZl
ciB7CitwdWJsaWM6CisgICAgR2VvbWV0cnlUcmF2ZXJzYWxDb250ZXh0U3RhdGVTYXZlcihHZW9t
ZXRyeVRyYXZlcnNhbENvbnRleHQqIGNvbnRleHQpCisgICAgICAgIDogbV9jb250ZXh0KGNvbnRl
eHQpCisgICAgeworICAgIH0KKworICAgIH5HZW9tZXRyeVRyYXZlcnNhbENvbnRleHRTdGF0ZVNh
dmVyKCkKKyAgICB7CisgICAgICAgIGlmICghbV9jb250ZXh0KQorICAgICAgICAgICAgcmV0dXJu
OworCisgICAgICAgIGlmIChtX3B1c2hlZENsaXApCisgICAgICAgICAgICBtX2NvbnRleHQtPnBv
cENsaXAoKTsKKyAgICB9CisKKyAgICB2b2lkIHB1c2hDbGlwKGNvbnN0IEludFJlY3QmIGNsaXBS
ZWN0KQorICAgIHsKKyAgICAgICAgQVNTRVJUKCFtX3B1c2hlZENsaXApOworICAgICAgICBpZiAo
bV9jb250ZXh0KQorICAgICAgICAgICAgbV9jb250ZXh0LT5wdXNoQ2xpcChjbGlwUmVjdCk7Cisg
ICAgICAgIG1fcHVzaGVkQ2xpcCA9IHRydWU7CisgICAgfQorCisgICAgdm9pZCBwdXNoQ2xpcChj
b25zdCBQYXRoJiBwYXRoKQorICAgIHsKKyAgICAgICAgQVNTRVJUKCFtX3B1c2hlZENsaXApOwor
ICAgICAgICBpZiAobV9jb250ZXh0KQorICAgICAgICAgICAgbV9jb250ZXh0LT5wdXNoQ2xpcChw
YXRoKTsKKyAgICAgICAgbV9wdXNoZWRDbGlwID0gdHJ1ZTsKKyAgICB9CisKKyAgICBHZW9tZXRy
eVRyYXZlcnNhbENvbnRleHQqIGNvbnRleHQoKSBjb25zdCB7IHJldHVybiBjb25zdF9jYXN0PEdl
b21ldHJ5VHJhdmVyc2FsQ29udGV4dCo+KG1fY29udGV4dC5nZXQoKSk7IH0KKworcHJpdmF0ZToK
KyAgICBDaGVja2VkUHRyPEdlb21ldHJ5VHJhdmVyc2FsQ29udGV4dD4gbV9jb250ZXh0OworICAg
IGJvb2wgbV9wdXNoZWRDbGlwIHsgZmFsc2UgfTsKK307IC8vIGNsYXNzIEdlb21ldHJ5VHJhdmVy
c2FsQ29udGV4dFN0YXRlU2F2ZXIKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0xlZ2FjeUlubGluZUVsZW1lbnRCb3guY3BwIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0xlZ2FjeUlubGluZUVsZW1lbnRCb3guY3BwCmluZGV4
IGI2NjEzNmQ2ZTgwZS4uMzAzMmI0NzBkYWVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvTGVnYWN5SW5saW5lRWxlbWVudEJveC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL0xlZ2FjeUlubGluZUVsZW1lbnRCb3guY3BwCkBAIC03MSw3ICs3MSw3IEBAIHZv
aWQgTGVnYWN5SW5saW5lRWxlbWVudEJveDo6cGFpbnQoUGFpbnRJbmZvJiBwYWludEluZm8sIGNv
bnN0IExheW91dFBvaW50JiBwYWluCiAgICAgaWYgKCFwYWludEluZm8uc2hvdWxkUGFpbnRXaXRo
aW5Sb290KHJlbmRlcmVyKCkpKQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAocGFpbnRJbmZv
LnBoYXNlICE9IFBhaW50UGhhc2U6OkZvcmVncm91bmQgJiYgcGFpbnRJbmZvLnBoYXNlICE9IFBh
aW50UGhhc2U6OlNlbGVjdGlvbiAmJiBwYWludEluZm8ucGhhc2UgIT0gUGFpbnRQaGFzZTo6RXZl
bnRSZWdpb24pCisgICAgaWYgKHBhaW50SW5mby5waGFzZSAhPSBQYWludFBoYXNlOjpGb3JlZ3Jv
dW5kICYmIHBhaW50SW5mby5waGFzZSAhPSBQYWludFBoYXNlOjpTZWxlY3Rpb24gJiYgcGFpbnRJ
bmZvLnBoYXNlICE9IFBhaW50UGhhc2U6OkV2ZW50UmVnaW9uICYmIHBhaW50SW5mby5waGFzZSAh
PSBQYWludFBoYXNlOjpBY2Nlc3NpYmlsaXR5KQogICAgICAgICByZXR1cm47CiAKICAgICBMYXlv
dXRQb2ludCBjaGlsZFBvaW50ID0gcGFpbnRPZmZzZXQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvTGVnYWN5SW5saW5lRmxvd0JveC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvTGVnYWN5SW5saW5lRmxvd0JveC5jcHAKaW5kZXggOWM0ODJkN2U5MGIzLi41NjY1
NzNhZDViNGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9MZWdhY3lJbmxp
bmVGbG93Qm94LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvTGVnYWN5SW5saW5l
Rmxvd0JveC5jcHAKQEAgLTExMDQsNyArMTEwNCw3IEBAIGJvb2wgTGVnYWN5SW5saW5lRmxvd0Jv
eDo6bm9kZUF0UG9pbnQoY29uc3QgSGl0VGVzdFJlcXVlc3QmIHJlcXVlc3QsIEhpdFRlc3RSZXN1
CiAKIHZvaWQgTGVnYWN5SW5saW5lRmxvd0JveDo6cGFpbnQoUGFpbnRJbmZvJiBwYWludEluZm8s
IGNvbnN0IExheW91dFBvaW50JiBwYWludE9mZnNldCwgTGF5b3V0VW5pdCBsaW5lVG9wLCBMYXlv
dXRVbml0IGxpbmVCb3R0b20pCiB7Ci0gICAgaWYgKHBhaW50SW5mby5waGFzZSAhPSBQYWludFBo
YXNlOjpGb3JlZ3JvdW5kICYmIHBhaW50SW5mby5waGFzZSAhPSBQYWludFBoYXNlOjpTZWxlY3Rp
b24gJiYgcGFpbnRJbmZvLnBoYXNlICE9IFBhaW50UGhhc2U6Ok91dGxpbmUgJiYgcGFpbnRJbmZv
LnBoYXNlICE9IFBhaW50UGhhc2U6OlNlbGZPdXRsaW5lICYmIHBhaW50SW5mby5waGFzZSAhPSBQ
YWludFBoYXNlOjpDaGlsZE91dGxpbmVzICYmIHBhaW50SW5mby5waGFzZSAhPSBQYWludFBoYXNl
OjpUZXh0Q2xpcCAmJiBwYWludEluZm8ucGhhc2UgIT0gUGFpbnRQaGFzZTo6TWFzayAmJiBwYWlu
dEluZm8ucGhhc2UgIT0gUGFpbnRQaGFzZTo6RXZlbnRSZWdpb24pCisgICAgaWYgKHBhaW50SW5m
by5waGFzZSAhPSBQYWludFBoYXNlOjpGb3JlZ3JvdW5kICYmIHBhaW50SW5mby5waGFzZSAhPSBQ
YWludFBoYXNlOjpTZWxlY3Rpb24gJiYgcGFpbnRJbmZvLnBoYXNlICE9IFBhaW50UGhhc2U6Ok91
dGxpbmUgJiYgcGFpbnRJbmZvLnBoYXNlICE9IFBhaW50UGhhc2U6OlNlbGZPdXRsaW5lICYmIHBh
aW50SW5mby5waGFzZSAhPSBQYWludFBoYXNlOjpDaGlsZE91dGxpbmVzICYmIHBhaW50SW5mby5w
aGFzZSAhPSBQYWludFBoYXNlOjpUZXh0Q2xpcCAmJiBwYWludEluZm8ucGhhc2UgIT0gUGFpbnRQ
aGFzZTo6TWFzayAmJiBwYWludEluZm8ucGhhc2UgIT0gUGFpbnRQaGFzZTo6RXZlbnRSZWdpb24g
JiYgcGFpbnRJbmZvLnBoYXNlICE9IFBhaW50UGhhc2U6OkFjY2Vzc2liaWxpdHkpCiAgICAgICAg
IHJldHVybjsKIAogICAgIExheW91dFJlY3Qgb3ZlcmZsb3dSZWN0KHZpc3VhbE92ZXJmbG93UmVj
dChsaW5lVG9wLCBsaW5lQm90dG9tKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUGFpbnRJbmZvLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUGFpbnRJbmZvLmgK
aW5kZXggMDUwZDVjYWY2YjJmLi5jZWY1MTExYTE3ZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9QYWludEluZm8uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UGFpbnRJbmZvLmgKQEAgLTI1LDcgKzI1LDkgQEAKIAogI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRl
ICJBY2Nlc3NpYmlsaXR5R2VvbWV0cnlUcmF2ZXJzYWxDb250ZXh0LmgiCiAjaW5jbHVkZSAiQWZm
aW5lVHJhbnNmb3JtLmgiCisjaW5jbHVkZSAiRXZlbnRSZWdpb24uaCIKICNpbmNsdWRlICJHcmFw
aGljc0NvbnRleHQuaCIKICNpbmNsdWRlICJJbnRSZWN0LmgiCiAjaW5jbHVkZSAiTGF5b3V0UmVj
dC5oIgpAQCAtMzcsNyArMzksNiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIEV2
ZW50UmVnaW9uQ29udGV4dDsKIGNsYXNzIE92ZXJsYXBUZXN0UmVxdWVzdENsaWVudDsKIGNsYXNz
IFJlbmRlcklubGluZTsKIGNsYXNzIFJlbmRlckxheWVyOwpAQCAtMTIxLDYgKzEyMiw5IEBAIHN0
cnVjdCBQYWludEluZm8gewogICAgICAgICByZWN0LnNldFNpemUoTGF5b3V0U2l6ZSh0cmFuZm9y
bWVkUmVjdC5zaXplKCkpKTsKICAgICB9CiAKKyAgICBFdmVudFJlZ2lvbkNvbnRleHQqIGV2ZW50
UmVnaW9uQ29udGV4dCgpIHsgcmV0dXJuIGR5bmFtaWNEb3duY2FzdDxFdmVudFJlZ2lvbkNvbnRl
eHQ+KGdlb21ldHJ5VHJhdmVyc2FsQ29udGV4dCk7IH0KKyAgICBBY2Nlc3NpYmlsaXR5R2VvbWV0
cnlUcmF2ZXJzYWxDb250ZXh0KiBhY2Nlc3NpYmlsaXR5R2VvbWV0cnlUcmF2ZXJzYWxDb250ZXh0
KCkgeyByZXR1cm4gZHluYW1pY0Rvd25jYXN0PEFjY2Vzc2liaWxpdHlHZW9tZXRyeVRyYXZlcnNh
bENvbnRleHQ+KGdlb21ldHJ5VHJhdmVyc2FsQ29udGV4dCk7IH0KKwogICAgIExheW91dFJlY3Qg
cmVjdDsKICAgICBQYWludFBoYXNlIHBoYXNlOwogICAgIE9wdGlvblNldDxQYWludEJlaGF2aW9y
PiBwYWludEJlaGF2aW9yOwpAQCAtMTMwLDcgKzEzNCw4IEBAIHN0cnVjdCBQYWludEluZm8gewog
ICAgIGNvbnN0IFJlbmRlckxheWVyTW9kZWxPYmplY3QqIHBhaW50Q29udGFpbmVyOyAvLyB0aGUg
bGF5ZXIgb2JqZWN0IHRoYXQgb3JpZ2luYXRlcyB0aGUgY3VycmVudCBwYWludGluZwogICAgIGJv
b2wgcmVxdWlyZVNlY3VyaXR5T3JpZ2luQWNjZXNzRm9yV2lkZ2V0cyB7IGZhbHNlIH07CiAgICAg
Y29uc3QgUmVuZGVyTGF5ZXIqIG1fZW5jbG9zaW5nU2VsZlBhaW50aW5nTGF5ZXIgeyBudWxscHRy
IH07Ci0gICAgRXZlbnRSZWdpb25Db250ZXh0KiBldmVudFJlZ2lvbkNvbnRleHQgeyBudWxscHRy
IH07IC8vIEZvciBQYWludFBoYXNlOjpFdmVudFJlZ2lvbi4KKyAgICAvLyBDb250ZXh0IGZvciAi
Z2VvbWV0cnkgdHJhdmVyc2FsIiBwYWludHMgKGUuZy4gZm9yIFBhaW50UGhhc2U6OkV2ZW50UmVn
aW9uLCBQYWludFBoYXNlOjpBY2Nlc3NpYmlsaXR5KS4KKyAgICBHZW9tZXRyeVRyYXZlcnNhbENv
bnRleHQqIGdlb21ldHJ5VHJhdmVyc2FsQ29udGV4dCB7IG51bGxwdHIgfTsKIAogcHJpdmF0ZToK
ICAgICBHcmFwaGljc0NvbnRleHQqIG1fY29udGV4dDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9QYWludFBoYXNlLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUGFp
bnRQaGFzZS5oCmluZGV4IDRhNTZmNTMzMTQ1Zi4uZTZkZGRhNjRkNjZhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUGFpbnRQaGFzZS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9QYWludFBoYXNlLmgKQEAgLTUxLDYgKzUxLDcgQEAgZW51bSBjbGFzcyBQYWlu
dFBoYXNlIDogdWludDE2X3QgewogICAgIE1hc2sgICAgICAgICAgICAgICAgICAgICA9IDEgPDwg
MTAsCiAgICAgQ2xpcHBpbmdNYXNrICAgICAgICAgICAgID0gMSA8PCAxMSwKICAgICBFdmVudFJl
Z2lvbiAgICAgICAgICAgICAgPSAxIDw8IDEyLAorICAgIEFjY2Vzc2liaWxpdHkgICAgICAgICAg
ICA9IDEgPDwgMTMsCiB9OwogCiBlbnVtIGNsYXNzIFBhaW50QmVoYXZpb3IgOiB1aW50MTZfdCB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcAppbmRleCBhMGM3YTRkNTcx
MDkuLmVmYWIzMjEzYjg3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckJsb2NrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2su
Y3BwCkBAIC0xMTY0LDcgKzExNjQsNyBAQCB2b2lkIFJlbmRlckJsb2NrOjpwYWludENvbnRlbnRz
KFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbnRPZgogICAgICAg
ICBwYWludEluZm9Gb3JDaGlsZC5waGFzZSA9IG5ld1BoYXNlOwogICAgICAgICBwYWludEluZm9G
b3JDaGlsZC51cGRhdGVTdWJ0cmVlUGFpbnRSb290Rm9yQ2hpbGRyZW4odGhpcyk7CiAKLSAgICAg
ICAgaWYgKHBhaW50SW5mby5ldmVudFJlZ2lvbkNvbnRleHQpCisgICAgICAgIGlmIChwYWludElu
Zm8uZXZlbnRSZWdpb25Db250ZXh0KCkpCiAgICAgICAgICAgICBwYWludEluZm9Gb3JDaGlsZC5w
YWludEJlaGF2aW9yLmFkZChQYWludEJlaGF2aW9yOjpFdmVudFJlZ2lvbkluY2x1ZGVCYWNrZ3Jv
dW5kKTsKIAogICAgICAgICAvLyBGSVhNRTogUGFpbnQtdGltZSBwYWdpbmF0aW9uIGlzIG9ic29s
ZXRlIGFuZCBpcyBub3cgb25seSB1c2VkIGJ5IGVtYmVkZGVkIFdlYlZpZXdzIGluc2lkZSBBcHBL
aXQKQEAgLTEyNzcsMjEgKzEyNzcsMjQgQEAgdm9pZCBSZW5kZXJCbG9jazo6cGFpbnRPYmplY3Qo
UGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFBvaW50JiBwYWludE9mZnMKICAgICBp
ZiAocGFpbnRJbmZvLnBhaW50Um9vdEJhY2tncm91bmRPbmx5KCkpCiAgICAgICAgIHJldHVybjsK
IAorICAgIGlmIChwYWludFBoYXNlID09IFBhaW50UGhhc2U6OkFjY2Vzc2liaWxpdHkpCisgICAg
ICAgIHBhaW50SW5mby5hY2Nlc3NpYmlsaXR5R2VvbWV0cnlUcmF2ZXJzYWxDb250ZXh0KCktPnRh
a2VCb3VuZHMoKnRoaXMsIEZsb2F0UmVjdChwYWludE9mZnNldCwgc2l6ZSgpKSk7CisKICAgICBp
ZiAocGFpbnRQaGFzZSA9PSBQYWludFBoYXNlOjpFdmVudFJlZ2lvbikgewogICAgICAgICBhdXRv
IGJvcmRlclJlY3QgPSBMYXlvdXRSZWN0KHBhaW50T2Zmc2V0LCBzaXplKCkpOwogCiAgICAgICAg
IGlmIChwYWludEluZm8ucGFpbnRCZWhhdmlvci5jb250YWlucyhQYWludEJlaGF2aW9yOjpFdmVu
dFJlZ2lvbkluY2x1ZGVCYWNrZ3JvdW5kKSAmJiB2aXNpYmxlVG9IaXRUZXN0aW5nKCkpIHsKICAg
ICAgICAgICAgIGF1dG8gYm9yZGVyUmVnaW9uID0gYXBwcm94aW1hdGVBc1JlZ2lvbihzdHlsZSgp
LmdldFJvdW5kZWRCb3JkZXJGb3IoYm9yZGVyUmVjdCkpOwogICAgICAgICAgICAgTE9HX1dJVEhf
U1RSRUFNKEV2ZW50UmVnaW9ucywgc3RyZWFtIDw8ICJSZW5kZXJCbG9jayAiIDw8ICp0aGlzIDw8
ICIgdW5pdGluZyByZWdpb24gIiA8PCBib3JkZXJSZWdpb24gPDwgIiBldmVudCBsaXN0ZW5lciB0
eXBlcyAiIDw8IHN0eWxlKCkuZXZlbnRMaXN0ZW5lclJlZ2lvblR5cGVzKCkpOwotICAgICAgICAg
ICAgcGFpbnRJbmZvLmV2ZW50UmVnaW9uQ29udGV4dC0+dW5pdGUoYm9yZGVyUmVnaW9uLCAqdGhp
cywgc3R5bGUoKSwgaXNUZXh0Q29udHJvbCgpICYmIGRvd25jYXN0PFJlbmRlclRleHRDb250cm9s
PigqdGhpcykudGV4dEZvcm1Db250cm9sRWxlbWVudCgpLmlzSW5uZXJUZXh0RWxlbWVudEVkaXRh
YmxlKCkpOworICAgICAgICAgICAgcGFpbnRJbmZvLmV2ZW50UmVnaW9uQ29udGV4dCgpLT51bml0
ZShib3JkZXJSZWdpb24sICp0aGlzLCBzdHlsZSgpLCBpc1RleHRDb250cm9sKCkgJiYgZG93bmNh
c3Q8UmVuZGVyVGV4dENvbnRyb2w+KCp0aGlzKS50ZXh0Rm9ybUNvbnRyb2xFbGVtZW50KCkuaXNJ
bm5lclRleHRFbGVtZW50RWRpdGFibGUoKSk7CiAgICAgICAgIH0KIAogICAgICAgICBpZiAoIXBh
aW50SW5mby5wYWludEJlaGF2aW9yLmNvbnRhaW5zKFBhaW50QmVoYXZpb3I6OkV2ZW50UmVnaW9u
SW5jbHVkZUZvcmVncm91bmQpKQogICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIGJvb2wg
bmVlZHNUcmF2ZXJzZURlc2NlbmRhbnRzID0gaGFzVmlzdWFsT3ZlcmZsb3coKSB8fCBjb250YWlu
c0Zsb2F0cygpIHx8ICFwYWludEluZm8uZXZlbnRSZWdpb25Db250ZXh0LT5jb250YWlucyhlbmNs
b3NpbmdJbnRSZWN0KGJvcmRlclJlY3QpKSB8fCB2aWV3KCkubmVlZHNFdmVudFJlZ2lvblVwZGF0
ZUZvck5vbkNvbXBvc2l0ZWRGcmFtZSgpOworICAgICAgICBib29sIG5lZWRzVHJhdmVyc2VEZXNj
ZW5kYW50cyA9IGhhc1Zpc3VhbE92ZXJmbG93KCkgfHwgY29udGFpbnNGbG9hdHMoKSB8fCAhcGFp
bnRJbmZvLmV2ZW50UmVnaW9uQ29udGV4dCgpLT5jb250YWlucyhlbmNsb3NpbmdJbnRSZWN0KGJv
cmRlclJlY3QpKSB8fCB2aWV3KCkubmVlZHNFdmVudFJlZ2lvblVwZGF0ZUZvck5vbkNvbXBvc2l0
ZWRGcmFtZSgpOwogICAgICAgICBMT0dfV0lUSF9TVFJFQU0oRXZlbnRSZWdpb25zLCBzdHJlYW0g
PDwgIlJlbmRlckJsb2NrICIgPDwgKnRoaXMgPDwgIiBuZWVkc1RyYXZlcnNlRGVzY2VuZGFudHMg
Zm9yIGV2ZW50IHJlZ2lvbjogaGFzVmlzdWFsT3ZlcmZsb3c6ICIgPDwgaGFzVmlzdWFsT3ZlcmZs
b3coKSA8PCAiIGNvbnRhaW5zRmxvYXRzOiAiCi0gICAgICAgICAgICA8PCBjb250YWluc0Zsb2F0
cygpIDw8ICAiIGJvcmRlciBib3ggaXMgb3V0c2lkZSBjdXJyZW50IHJlZ2lvbjogIiA8PCAhcGFp
bnRJbmZvLmV2ZW50UmVnaW9uQ29udGV4dC0+Y29udGFpbnMoZW5jbG9zaW5nSW50UmVjdChib3Jk
ZXJSZWN0KSkgPDwgIiBuZWVkc0V2ZW50UmVnaW9uVXBkYXRlRm9yTm9uQ29tcG9zaXRlZEZyYW1l
OiIgPDwgdmlldygpLm5lZWRzRXZlbnRSZWdpb25VcGRhdGVGb3JOb25Db21wb3NpdGVkRnJhbWUo
KSk7CisgICAgICAgICAgICA8PCBjb250YWluc0Zsb2F0cygpIDw8ICAiIGJvcmRlciBib3ggaXMg
b3V0c2lkZSBjdXJyZW50IHJlZ2lvbjogIiA8PCAhcGFpbnRJbmZvLmV2ZW50UmVnaW9uQ29udGV4
dCgpLT5jb250YWlucyhlbmNsb3NpbmdJbnRSZWN0KGJvcmRlclJlY3QpKSA8PCAiIG5lZWRzRXZl
bnRSZWdpb25VcGRhdGVGb3JOb25Db21wb3NpdGVkRnJhbWU6IiA8PCB2aWV3KCkubmVlZHNFdmVu
dFJlZ2lvblVwZGF0ZUZvck5vbkNvbXBvc2l0ZWRGcmFtZSgpKTsKICNpZiBFTkFCTEUoVE9VQ0hf
QUNUSU9OX1JFR0lPTlMpCiAgICAgICAgIG5lZWRzVHJhdmVyc2VEZXNjZW5kYW50cyB8PSBkb2N1
bWVudCgpLm1heUhhdmVFbGVtZW50c1dpdGhOb25BdXRvVG91Y2hBY3Rpb24oKTsKICAgICAgICAg
TE9HX1dJVEhfU1RSRUFNKEV2ZW50UmVnaW9ucywgc3RyZWFtIDw8ICIgIG1heSBoYXZlIHRvdWNo
LWFjdGlvbiBlbGVtZW50czogIiA8PCBkb2N1bWVudCgpLm1heUhhdmVFbGVtZW50c1dpdGhOb25B
dXRvVG91Y2hBY3Rpb24oKSk7CkBAIC0xMzQzLDggKzEzNDYsOCBAQCB2b2lkIFJlbmRlckJsb2Nr
OjpwYWludE9iamVjdChQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQmIHBh
aW50T2ZmcwogICAgICAgICBwYWludFNlbGVjdGlvbihwYWludEluZm8sIHNjcm9sbGVkT2Zmc2V0
KTsgLy8gRmlsbCBpbiBnYXBzIGluIHNlbGVjdGlvbiBvbiBsaW5lcyBhbmQgYmV0d2VlbiBibG9j
a3MuCiAKICAgICAvLyA0LiBwYWludCBmbG9hdHMuCi0gICAgaWYgKHBhaW50UGhhc2UgPT0gUGFp
bnRQaGFzZTo6RmxvYXQgfHwgcGFpbnRQaGFzZSA9PSBQYWludFBoYXNlOjpTZWxlY3Rpb24gfHwg
cGFpbnRQaGFzZSA9PSBQYWludFBoYXNlOjpUZXh0Q2xpcCB8fCBwYWludFBoYXNlID09IFBhaW50
UGhhc2U6OkV2ZW50UmVnaW9uKQotICAgICAgICBwYWludEZsb2F0cyhwYWludEluZm8sIHNjcm9s
bGVkT2Zmc2V0LCBwYWludFBoYXNlID09IFBhaW50UGhhc2U6OlNlbGVjdGlvbiB8fCBwYWludFBo
YXNlID09IFBhaW50UGhhc2U6OlRleHRDbGlwIHx8IHBhaW50UGhhc2UgPT0gUGFpbnRQaGFzZTo6
RXZlbnRSZWdpb24pOworICAgIGlmIChwYWludFBoYXNlID09IFBhaW50UGhhc2U6OkZsb2F0IHx8
IHBhaW50UGhhc2UgPT0gUGFpbnRQaGFzZTo6U2VsZWN0aW9uIHx8IHBhaW50UGhhc2UgPT0gUGFp
bnRQaGFzZTo6VGV4dENsaXAgfHwgcGFpbnRQaGFzZSA9PSBQYWludFBoYXNlOjpFdmVudFJlZ2lv
biB8fCBwYWludFBoYXNlID09IFBhaW50UGhhc2U6OkFjY2Vzc2liaWxpdHkpCisgICAgICAgIHBh
aW50RmxvYXRzKHBhaW50SW5mbywgc2Nyb2xsZWRPZmZzZXQsIHBhaW50UGhhc2UgPT0gUGFpbnRQ
aGFzZTo6U2VsZWN0aW9uIHx8IHBhaW50UGhhc2UgPT0gUGFpbnRQaGFzZTo6VGV4dENsaXAgfHwg
cGFpbnRQaGFzZSA9PSBQYWludFBoYXNlOjpFdmVudFJlZ2lvbiB8fCBwYWludFBoYXNlID09IFBh
aW50UGhhc2U6OkFjY2Vzc2liaWxpdHkpOwogCiAgICAgLy8gNS4gcGFpbnQgb3V0bGluZS4KICAg
ICBpZiAoKHBhaW50UGhhc2UgPT0gUGFpbnRQaGFzZTo6T3V0bGluZSB8fCBwYWludFBoYXNlID09
IFBhaW50UGhhc2U6OlNlbGZPdXRsaW5lKSAmJiBoYXNPdXRsaW5lKCkgJiYgc3R5bGUoKS52aXNp
YmlsaXR5KCkgPT0gVmlzaWJpbGl0eTo6VmlzaWJsZSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyQm94LmNwcAppbmRleCBkMzA1NWU0NGU0NTEuLjlhZGE1Y2FkMjZkMyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHAKQEAgLTIxNzgsOCArMjE3OCw4IEBAIGJvb2wg
UmVuZGVyQm94OjpwdXNoQ29udGVudHNDbGlwKFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBM
YXlvdXRQb2ludCYgYWNjdW11CiAgICAgICAgIGNsaXBDb250ZW50Rm9yQm9yZGVyUmFkaXVzKHBh
aW50SW5mby5jb250ZXh0KCksIGFjY3VtdWxhdGVkT2Zmc2V0LCBkZXZpY2VTY2FsZUZhY3Rvcik7
CiAgICAgcGFpbnRJbmZvLmNvbnRleHQoKS5jbGlwKGNsaXBSZWN0KTsKIAotICAgIGlmIChwYWlu
dEluZm8ucGhhc2UgPT0gUGFpbnRQaGFzZTo6RXZlbnRSZWdpb24pCi0gICAgICAgIHBhaW50SW5m
by5ldmVudFJlZ2lvbkNvbnRleHQtPnB1c2hDbGlwKGVuY2xvc2luZ0ludFJlY3QoY2xpcFJlY3Qp
KTsKKyAgICBpZiAocGFpbnRJbmZvLnBoYXNlID09IFBhaW50UGhhc2U6OkV2ZW50UmVnaW9uIHx8
IHBhaW50SW5mby5waGFzZSA9PSBQYWludFBoYXNlOjpBY2Nlc3NpYmlsaXR5KQorICAgICAgICBw
YWludEluZm8uZ2VvbWV0cnlUcmF2ZXJzYWxDb250ZXh0LT5wdXNoQ2xpcChlbmNsb3NpbmdJbnRS
ZWN0KGNsaXBSZWN0KSk7CiAKICAgICByZXR1cm4gdHJ1ZTsKIH0KQEAgLTIxODgsOCArMjE4OCw4
IEBAIHZvaWQgUmVuZGVyQm94Ojpwb3BDb250ZW50c0NsaXAoUGFpbnRJbmZvJiBwYWludEluZm8s
IFBhaW50UGhhc2Ugb3JpZ2luYWxQaGFzZSwKIHsKICAgICBBU1NFUlQoaGFzQ29udHJvbENsaXAo
KSB8fCAoaGFzTm9uVmlzaWJsZU92ZXJmbG93KCkgJiYgIWxheWVyKCktPmlzU2VsZlBhaW50aW5n
TGF5ZXIoKSkpOwogCi0gICAgaWYgKHBhaW50SW5mby5waGFzZSA9PSBQYWludFBoYXNlOjpFdmVu
dFJlZ2lvbikKLSAgICAgICAgcGFpbnRJbmZvLmV2ZW50UmVnaW9uQ29udGV4dC0+cG9wQ2xpcCgp
OworICAgIGlmIChwYWludEluZm8ucGhhc2UgPT0gUGFpbnRQaGFzZTo6RXZlbnRSZWdpb24gfHwg
cGFpbnRJbmZvLnBoYXNlID09IFBhaW50UGhhc2U6OkFjY2Vzc2liaWxpdHkpCisgICAgICAgIHBh
aW50SW5mby5nZW9tZXRyeVRyYXZlcnNhbENvbnRleHQtPnBvcENsaXAoKTsKIAogICAgIHBhaW50
SW5mby5jb250ZXh0KCkucmVzdG9yZSgpOwogICAgIGlmIChvcmlnaW5hbFBoYXNlID09IFBhaW50
UGhhc2U6Ok91dGxpbmUpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbGVtZW50
LmNwcAppbmRleCA2YzA2ZGQ2YjQxZDcuLjNhNmQwNTQ2N2Y3MSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJFbGVtZW50LmNwcApAQCAtMTEyMiw3ICsxMTIyLDcgQEAgdm9pZCBS
ZW5kZXJFbGVtZW50OjpwYWludEFzSW5saW5lQmxvY2soUGFpbnRJbmZvJiBwYWludEluZm8sIGNv
bnN0IExheW91dFBvaW50JgogICAgIC8vIChTZWUgQXBwZW5kaXggRS4yLCBzZWN0aW9uIDYuNCBv
biBpbmxpbmUgYmxvY2svdGFibGUvcmVwbGFjZWQgZWxlbWVudHMgaW4gdGhlIENTUzIuMSBzcGVj
aWZpY2F0aW9uLikKICAgICAvLyBUaGlzIGlzIGFsc28gdXNlZCBieSBvdGhlciBlbGVtZW50cyAo
ZS5nLiBmbGV4IGl0ZW1zIGFuZCBncmlkIGl0ZW1zKS4KICAgICBQYWludFBoYXNlIHBhaW50UGhh
c2VUb1VzZSA9IGlzRXhjbHVkZWRBbmRQbGFjZWRJbkJvcmRlcigpID8gcGFpbnRJbmZvLnBoYXNl
IDogUGFpbnRQaGFzZTo6Rm9yZWdyb3VuZDsKLSAgICBpZiAocGFpbnRJbmZvLnBoYXNlID09IFBh
aW50UGhhc2U6OlNlbGVjdGlvbiB8fCBwYWludEluZm8ucGhhc2UgPT0gUGFpbnRQaGFzZTo6RXZl
bnRSZWdpb24gfHwgcGFpbnRJbmZvLnBoYXNlID09IFBhaW50UGhhc2U6OlRleHRDbGlwKQorICAg
IGlmIChwYWludEluZm8ucGhhc2UgPT0gUGFpbnRQaGFzZTo6U2VsZWN0aW9uIHx8IHBhaW50SW5m
by5waGFzZSA9PSBQYWludFBoYXNlOjpFdmVudFJlZ2lvbiB8fCBwYWludEluZm8ucGhhc2UgPT0g
UGFpbnRQaGFzZTo6VGV4dENsaXAgfHwgcGFpbnRJbmZvLnBoYXNlID09IFBhaW50UGhhc2U6OkFj
Y2Vzc2liaWxpdHkpCiAgICAgICAgIHBhaW50KHBhaW50SW5mbywgY2hpbGRQb2ludCk7CiAgICAg
ZWxzZSBpZiAocGFpbnRJbmZvLnBoYXNlID09IHBhaW50UGhhc2VUb1VzZSkgewogICAgICAgICBw
YWludFBoYXNlKCp0aGlzLCBQYWludFBoYXNlOjpCbG9ja0JhY2tncm91bmQsIHBhaW50SW5mbywg
Y2hpbGRQb2ludCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
TGF5ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcAppbmRl
eCA3MjE1MjA4MWExNTcuLjIyMjdjMTg3OWFjMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyTGF5ZXIuY3BwCkBAIC00Nyw2ICs0Nyw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAj
aW5jbHVkZSAiUmVuZGVyTGF5ZXIuaCIKIAorI2luY2x1ZGUgIkFjY2Vzc2liaWxpdHlHZW9tZXRy
eVRyYXZlcnNhbENvbnRleHQuaCIKICNpbmNsdWRlICJCb3hTaGFwZS5oIgogI2luY2x1ZGUgIkNT
U0ZpbHRlci5oIgogI2luY2x1ZGUgIkNTU1Byb3BlcnR5TmFtZXMuaCIKQEAgLTI3NzMsMTQgKzI3
NzQsMTUgQEAgYm9vbCBSZW5kZXJMYXllcjo6aXNQb2ludEluUmVzaXplQ29udHJvbChJbnRQb2lu
dCBsb2NhbFBvaW50KSBjb25zdAogICAgIHJldHVybiBvdmVyZmxvd0NvbnRyb2xzUmVjdHMoKS5y
ZXNpemVyLmNvbnRhaW5zKGxvY2FsUG9pbnQpOwogfQogCi12b2lkIFJlbmRlckxheWVyOjpwYWlu
dChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IExheW91dFJlY3QmIGRhbWFnZVJlY3Qs
IGNvbnN0IExheW91dFNpemUmIHN1YnBpeGVsT2Zmc2V0LCBPcHRpb25TZXQ8UGFpbnRCZWhhdmlv
cj4gcGFpbnRCZWhhdmlvciwgUmVuZGVyT2JqZWN0KiBzdWJ0cmVlUGFpbnRSb290LCBPcHRpb25T
ZXQ8UGFpbnRMYXllckZsYWc+IHBhaW50RmxhZ3MsIFNlY3VyaXR5T3JpZ2luUGFpbnRQb2xpY3kg
cGFpbnRQb2xpY3ksIEV2ZW50UmVnaW9uQ29udGV4dCogZXZlbnRSZWdpb25Db250ZXh0KQordm9p
ZCBSZW5kZXJMYXllcjo6cGFpbnQoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBMYXlv
dXRSZWN0JiBkYW1hZ2VSZWN0LCBjb25zdCBMYXlvdXRTaXplJiBzdWJwaXhlbE9mZnNldCwgT3B0
aW9uU2V0PFBhaW50QmVoYXZpb3I+IHBhaW50QmVoYXZpb3IsIFJlbmRlck9iamVjdCogc3VidHJl
ZVBhaW50Um9vdCwgT3B0aW9uU2V0PFBhaW50TGF5ZXJGbGFnPiBwYWludEZsYWdzLCBTZWN1cml0
eU9yaWdpblBhaW50UG9saWN5IHBhaW50UG9saWN5LCBHZW9tZXRyeVRyYXZlcnNhbENvbnRleHQq
IGdlb21ldHJ5VHJhdmVyc2FsQ29udGV4dCkKIHsKICAgICBPdmVybGFwVGVzdFJlcXVlc3RNYXAg
b3ZlcmxhcFRlc3RSZXF1ZXN0czsKIAogICAgIExheWVyUGFpbnRpbmdJbmZvIHBhaW50aW5nSW5m
byh0aGlzLCBlbmNsb3NpbmdJbnRSZWN0KGRhbWFnZVJlY3QpLCBwYWludEJlaGF2aW9yLCBzdWJw
aXhlbE9mZnNldCwgc3VidHJlZVBhaW50Um9vdCwgJm92ZXJsYXBUZXN0UmVxdWVzdHMsIHBhaW50
UG9saWN5ID09IFNlY3VyaXR5T3JpZ2luUGFpbnRQb2xpY3k6OkFjY2Vzc2libGVPcmlnaW5Pbmx5
KTsKLSAgICBpZiAoZXZlbnRSZWdpb25Db250ZXh0KSB7Ci0gICAgICAgIHBhaW50aW5nSW5mby5l
dmVudFJlZ2lvbkNvbnRleHQgPSBldmVudFJlZ2lvbkNvbnRleHQ7Ci0gICAgICAgIHBhaW50Rmxh
Z3MuYWRkKFJlbmRlckxheWVyOjpQYWludExheWVyRmxhZzo6Q29sbGVjdGluZ0V2ZW50UmVnaW9u
KTsKKyAgICBpZiAoZ2VvbWV0cnlUcmF2ZXJzYWxDb250ZXh0KSB7CisgICAgICAgIHBhaW50aW5n
SW5mby5nZW9tZXRyeVRyYXZlcnNhbENvbnRleHQgPSBnZW9tZXRyeVRyYXZlcnNhbENvbnRleHQ7
CisgICAgICAgIGlmIChpczxFdmVudFJlZ2lvbkNvbnRleHQ+KGdlb21ldHJ5VHJhdmVyc2FsQ29u
dGV4dCkpCisgICAgICAgICAgICBwYWludEZsYWdzLmFkZChSZW5kZXJMYXllcjo6UGFpbnRMYXll
ckZsYWc6OkNvbGxlY3RpbmdFdmVudFJlZ2lvbik7CiAgICAgfQogICAgIHBhaW50TGF5ZXIoY29u
dGV4dCwgcGFpbnRpbmdJbmZvLCBwYWludEZsYWdzKTsKIApAQCAtMjc4OCw3ICsyNzkwLDcgQEAg
dm9pZCBSZW5kZXJMYXllcjo6cGFpbnQoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBM
YXlvdXRSZWN0JiBkYW1hZ2VSZWN0LAogICAgICAgICB3aWRnZXQtPnNldE92ZXJsYXBUZXN0UmVz
dWx0KGZhbHNlKTsKIH0KIAotdm9pZCBSZW5kZXJMYXllcjo6Y2xpcFRvUmVjdChHcmFwaGljc0Nv
bnRleHQmIGNvbnRleHQsIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXImIHN0YXRlU2F2ZXIsIEV2
ZW50UmVnaW9uQ29udGV4dFN0YXRlU2F2ZXImIGV2ZW50UmVnaW9uU3RhdGVTYXZlciwgY29uc3Qg
TGF5ZXJQYWludGluZ0luZm8mIHBhaW50aW5nSW5mbywgT3B0aW9uU2V0PFBhaW50QmVoYXZpb3I+
IHBhaW50QmVoYXZpb3IsIGNvbnN0IENsaXBSZWN0JiBjbGlwUmVjdCwgQm9yZGVyUmFkaXVzQ2xp
cHBpbmdSdWxlIHJ1bGUpCit2b2lkIFJlbmRlckxheWVyOjpjbGlwVG9SZWN0KEdyYXBoaWNzQ29u
dGV4dCYgY29udGV4dCwgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciYgc3RhdGVTYXZlciwgR2Vv
bWV0cnlUcmF2ZXJzYWxDb250ZXh0U3RhdGVTYXZlciYgZ2VvbWV0cnlUcmF2ZXJzYWxDb250ZXh0
U3RhdGVTYXZlciwgY29uc3QgTGF5ZXJQYWludGluZ0luZm8mIHBhaW50aW5nSW5mbywgT3B0aW9u
U2V0PFBhaW50QmVoYXZpb3I+IHBhaW50QmVoYXZpb3IsIGNvbnN0IENsaXBSZWN0JiBjbGlwUmVj
dCwgQm9yZGVyUmFkaXVzQ2xpcHBpbmdSdWxlIHJ1bGUpCiB7CiAgICAgZmxvYXQgZGV2aWNlU2Nh
bGVGYWN0b3IgPSByZW5kZXJlcigpLmRvY3VtZW50KCkuZGV2aWNlU2NhbGVGYWN0b3IoKTsKICAg
ICBib29sIG5lZWRzQ2xpcHBpbmcgPSAhY2xpcFJlY3QuaXNJbmZpbml0ZSgpICYmIGNsaXBSZWN0
LnJlY3QoKSAhPSBwYWludGluZ0luZm8ucGFpbnREaXJ0eVJlY3Q7CkBAIC0yODAwLDcgKzI4MDIs
NyBAQCB2b2lkIFJlbmRlckxheWVyOjpjbGlwVG9SZWN0KEdyYXBoaWNzQ29udGV4dCYgY29udGV4
dCwgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlcgogICAgICAgICBhZGp1c3RlZENsaXBSZWN0Lm1v
dmUocGFpbnRpbmdJbmZvLnN1YnBpeGVsT2Zmc2V0KTsKICAgICAgICAgYXV0byBzbmFwcGVkQ2xp
cFJlY3QgPSBzbmFwUmVjdFRvRGV2aWNlUGl4ZWxzSWZOZWVkZWQoYWRqdXN0ZWRDbGlwUmVjdCwg
cmVuZGVyZXIoKSk7CiAgICAgICAgIGNvbnRleHQuY2xpcChzbmFwcGVkQ2xpcFJlY3QpOwotICAg
ICAgICBldmVudFJlZ2lvblN0YXRlU2F2ZXIucHVzaENsaXAoZW5jbG9zaW5nSW50UmVjdChzbmFw
cGVkQ2xpcFJlY3QpKTsKKyAgICAgICAgZ2VvbWV0cnlUcmF2ZXJzYWxDb250ZXh0U3RhdGVTYXZl
ci5wdXNoQ2xpcChlbmNsb3NpbmdJbnRSZWN0KHNuYXBwZWRDbGlwUmVjdCkpOwogICAgIH0KIAog
ICAgIGlmIChjbGlwUmVjdC5hZmZlY3RlZEJ5UmFkaXVzKCkpIHsKQEAgLTI5NDEsNyArMjk0Myw3
IEBAIHZvaWQgUmVuZGVyTGF5ZXI6OnBhaW50TGF5ZXJXaXRoRWZmZWN0cyhHcmFwaGljc0NvbnRl
eHQmIGNvbnRleHQsIGNvbnN0IExheWVyUGFpCiAgICAgICAgIC8vIE1ha2Ugc3VyZSB0aGUgcGFy
ZW50J3MgY2xpcCByZWN0cyBoYXZlIGJlZW4gY2FsY3VsYXRlZC4KICAgICAgICAgQ2xpcFJlY3Qg
Y2xpcFJlY3QgPSBwYWludGluZ0luZm8ucGFpbnREaXJ0eVJlY3Q7CiAgICAgICAgIEdyYXBoaWNz
Q29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcihjb250ZXh0LCBmYWxzZSk7Ci0gICAgICAgIEV2
ZW50UmVnaW9uQ29udGV4dFN0YXRlU2F2ZXIgZXZlbnRSZWdpb25TdGF0ZVNhdmVyKHBhaW50aW5n
SW5mby5ldmVudFJlZ2lvbkNvbnRleHQpOworICAgICAgICBHZW9tZXRyeVRyYXZlcnNhbENvbnRl
eHRTdGF0ZVNhdmVyIGdlb21ldHJ5VHJhdmVyc2FsQ29udGV4dFN0YXRlU2F2ZXIocGFpbnRpbmdJ
bmZvLmdlb21ldHJ5VHJhdmVyc2FsQ29udGV4dCk7CiAgICAgICAgIGlmIChwYXJlbnQoKSkgewog
ICAgICAgICAgICAgYXV0byBvcHRpb25zID0gcGFpbnRGbGFncy5jb250YWlucyhQYWludExheWVy
RmxhZzo6UGFpbnRpbmdPdmVyZmxvd0NvbnRlbnRzKSA/IGNsaXBSZWN0T3B0aW9uc0ZvclBhaW50
aW5nT3ZlcmZsb3dDb250cm9scyA6IGNsaXBSZWN0RGVmYXVsdE9wdGlvbnM7CiAgICAgICAgICAg
ICBhdXRvIGNsaXBSZWN0c0NvbnRleHQgPSBDbGlwUmVjdHNDb250ZXh0KHBhaW50aW5nSW5mby5y
b290TGF5ZXIsIChwYWludEZsYWdzICYgUGFpbnRMYXllckZsYWc6OlRlbXBvcmFyeUNsaXBSZWN0
cykgPyBUZW1wb3JhcnlDbGlwUmVjdHMgOiBQYWludGluZ0NsaXBSZWN0cywgb3B0aW9ucyk7CkBA
IC0yOTcwLDcgKzI5NzIsNyBAQCB2b2lkIFJlbmRlckxheWVyOjpwYWludExheWVyV2l0aEVmZmVj
dHMoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBMYXllclBhaQogI2VuZGlmCiAKICAg
ICAgICAgICAgIC8vIFB1c2ggdGhlIHBhcmVudCBjb29yZGluYXRlIHNwYWNlJ3MgY2xpcC4KLSAg
ICAgICAgICAgIHBhcmVudCgpLT5jbGlwVG9SZWN0KGNvbnRleHQsIHN0YXRlU2F2ZXIsIGV2ZW50
UmVnaW9uU3RhdGVTYXZlciwgcGFpbnRpbmdJbmZvLCBwYWludEJlaGF2aW9yLCBjbGlwUmVjdCk7
CisgICAgICAgICAgICBwYXJlbnQoKS0+Y2xpcFRvUmVjdChjb250ZXh0LCBzdGF0ZVNhdmVyLCBn
ZW9tZXRyeVRyYXZlcnNhbENvbnRleHRTdGF0ZVNhdmVyLCBwYWludGluZ0luZm8sIHBhaW50QmVo
YXZpb3IsIGNsaXBSZWN0KTsKICAgICAgICAgfQogCiAgICAgICAgIHBhaW50TGF5ZXJCeUFwcGx5
aW5nVHJhbnNmb3JtKGNvbnRleHQsIHBhaW50aW5nSW5mbywgcGFpbnRGbGFncyk7CkBAIC0zMDQ0
LDEwICszMDQ2LDEwIEBAIHN0ZDo6cGFpcjxQYXRoLCBXaW5kUnVsZT4gUmVuZGVyTGF5ZXI6OmNv
bXB1dGVDbGlwUGF0aChjb25zdCBMYXlvdXRTaXplJiBvZmZzZXRGCiAgICAgcmV0dXJuIHsgUGF0
aCgpLCBXaW5kUnVsZTo6Tm9uWmVybyB9OwogfQogCi12b2lkIFJlbmRlckxheWVyOjpzZXR1cENs
aXBQYXRoKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZl
ciYgc3RhdGVTYXZlciwgRXZlbnRSZWdpb25Db250ZXh0U3RhdGVTYXZlciYgZXZlbnRSZWdpb25T
dGF0ZVNhdmVyLCBjb25zdCBMYXllclBhaW50aW5nSW5mbyYgcGFpbnRpbmdJbmZvLCBPcHRpb25T
ZXQ8UGFpbnRMYXllckZsYWc+IHBhaW50RmxhZ3MsIGNvbnN0IExheW91dFNpemUmIG9mZnNldEZy
b21Sb290KQordm9pZCBSZW5kZXJMYXllcjo6c2V0dXBDbGlwUGF0aChHcmFwaGljc0NvbnRleHQm
IGNvbnRleHQsIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXImIHN0YXRlU2F2ZXIsIEdlb21ldHJ5
VHJhdmVyc2FsQ29udGV4dFN0YXRlU2F2ZXImIGdlb21ldHJ5VHJhdmVyc2FsQ29udGV4dFN0YXRl
U2F2ZXIsIGNvbnN0IExheWVyUGFpbnRpbmdJbmZvJiBwYWludGluZ0luZm8sIE9wdGlvblNldDxQ
YWludExheWVyRmxhZz4gcGFpbnRGbGFncywgY29uc3QgTGF5b3V0U2l6ZSYgb2Zmc2V0RnJvbVJv
b3QpCiB7Ci0gICAgYm9vbCBpc0NvbGxlY3RpbmdFdmVudFJlZ2lvbiA9IHBhaW50RmxhZ3MuY29u
dGFpbnMoUGFpbnRMYXllckZsYWc6OkNvbGxlY3RpbmdFdmVudFJlZ2lvbik7Ci0gICAgaWYgKCFy
ZW5kZXJlcigpLmhhc0NsaXBQYXRoKCkgfHwgKGNvbnRleHQucGFpbnRpbmdEaXNhYmxlZCgpICYm
ICFpc0NvbGxlY3RpbmdFdmVudFJlZ2lvbikgfHwgcGFpbnRpbmdJbmZvLnBhaW50RGlydHlSZWN0
LmlzRW1wdHkoKSkKKyAgICBib29sIGlzR2VvbWV0cnlUcmF2ZXJzYWxQYWludCA9IHBhaW50Rmxh
Z3MuY29udGFpbnMoUGFpbnRMYXllckZsYWc6OkNvbGxlY3RpbmdFdmVudFJlZ2lvbikgfHwgaXM8
QWNjZXNzaWJpbGl0eUdlb21ldHJ5VHJhdmVyc2FsQ29udGV4dD4ocGFpbnRpbmdJbmZvLmdlb21l
dHJ5VHJhdmVyc2FsQ29udGV4dCk7CisgICAgaWYgKCFyZW5kZXJlcigpLmhhc0NsaXBQYXRoKCkg
fHwgKGNvbnRleHQucGFpbnRpbmdEaXNhYmxlZCgpICYmICFpc0dlb21ldHJ5VHJhdmVyc2FsUGFp
bnQpIHx8IHBhaW50aW5nSW5mby5wYWludERpcnR5UmVjdC5pc0VtcHR5KCkpCiAgICAgICAgIHJl
dHVybjsKIAogICAgIC8vIFNWRyBlbGVtZW50cyBnZXQgY2xpcHBlZCBpbiBTVkcgY29kZS4KQEAg
LTMwNjMsOCArMzA2NSw4IEBAIHZvaWQgUmVuZGVyTGF5ZXI6OnNldHVwQ2xpcFBhdGgoR3JhcGhp
Y3NDb250ZXh0JiBjb250ZXh0LCBHcmFwaGljc0NvbnRleHRTdGF0ZVNhCiAgICAgICAgIC8vIGNs
aXBwZWRDb250ZW50Qm91bmRzIGlzIHVzZWQgYXMgdGhlIHJlZmVyZW5jZSBib3ggZm9yIGlubGlu
ZXMsIHdoaWNoIGlzIGFsc28gcG9vcmx5IHNwZWNpZmllZDogaHR0cHM6Ly9naXRodWIuY29tL3cz
Yy9jc3N3Zy1kcmFmdHMvaXNzdWVzLzYzODMuCiAgICAgICAgIGF1dG8gW3BhdGgsIHdpbmRSdWxl
XSA9IGNvbXB1dGVDbGlwUGF0aChwYWludGluZ09mZnNldEZyb21Sb290LCBjbGlwcGVkQ29udGVu
dEJvdW5kcyk7CiAKLSAgICAgICAgaWYgKGlzQ29sbGVjdGluZ0V2ZW50UmVnaW9uKSB7Ci0gICAg
ICAgICAgICBldmVudFJlZ2lvblN0YXRlU2F2ZXIucHVzaENsaXAocGF0aCwgd2luZFJ1bGUpOwor
ICAgICAgICBpZiAoaXNHZW9tZXRyeVRyYXZlcnNhbFBhaW50KSB7CisgICAgICAgICAgICBnZW9t
ZXRyeVRyYXZlcnNhbENvbnRleHRTdGF0ZVNhdmVyLnB1c2hDbGlwKHBhdGgpOwogICAgICAgICAg
ICAgcmV0dXJuOwogICAgICAgICB9CiAKQEAgLTMxNDcsOSArMzE0OSw5IEBAIHZvaWQgUmVuZGVy
TGF5ZXI6OmFwcGx5RmlsdGVycyhHcmFwaGljc0NvbnRleHQmIG9yaWdpbmFsQ29udGV4dCwgY29u
c3QgTGF5ZXJQYWluCiAgICAgQ2xpcFJlY3QgYmFja2dyb3VuZFJlY3QgPSBsYXllckZyYWdtZW50
cy5pc0VtcHR5KCkgPyBDbGlwUmVjdCgpIDogbGF5ZXJGcmFnbWVudHNbMF0uYmFja2dyb3VuZFJl
Y3Q7CiAKICAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIob3JpZ2luYWxD
b250ZXh0LCBmYWxzZSk7Ci0gICAgRXZlbnRSZWdpb25Db250ZXh0U3RhdGVTYXZlciBldmVudFJl
Z2lvblN0YXRlU2F2ZXIocGFpbnRpbmdJbmZvLmV2ZW50UmVnaW9uQ29udGV4dCk7CisgICAgR2Vv
bWV0cnlUcmF2ZXJzYWxDb250ZXh0U3RhdGVTYXZlciBnZW9tZXRyeVRyYXZlcnNhbENvbnRleHRT
dGF0ZVNhdmVyKHBhaW50aW5nSW5mby5nZW9tZXRyeVRyYXZlcnNhbENvbnRleHQpOwogCi0gICAg
Y2xpcFRvUmVjdChvcmlnaW5hbENvbnRleHQsIHN0YXRlU2F2ZXIsIGV2ZW50UmVnaW9uU3RhdGVT
YXZlciwgcGFpbnRpbmdJbmZvLCBiZWhhdmlvciwgYmFja2dyb3VuZFJlY3QpOworICAgIGNsaXBU
b1JlY3Qob3JpZ2luYWxDb250ZXh0LCBzdGF0ZVNhdmVyLCBnZW9tZXRyeVRyYXZlcnNhbENvbnRl
eHRTdGF0ZVNhdmVyLCBwYWludGluZ0luZm8sIGJlaGF2aW9yLCBiYWNrZ3JvdW5kUmVjdCk7CiAg
ICAgbV9maWx0ZXJzLT5hcHBseUZpbHRlckVmZmVjdChvcmlnaW5hbENvbnRleHQpOwogfQogCkBA
IC0zMTY5LDYgKzMxNzEsNyBAQCB2b2lkIFJlbmRlckxheWVyOjpwYWludExheWVyQ29udGVudHMo
R3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBMYXllclBhaW50aQogICAgIGJvb2wgaXNQ
YWludGluZ0NvbXBvc2l0ZWRCYWNrZ3JvdW5kID0gbG9jYWxQYWludEZsYWdzLmNvbnRhaW5zKFBh
aW50TGF5ZXJGbGFnOjpQYWludGluZ0NvbXBvc2l0aW5nQmFja2dyb3VuZFBoYXNlKTsKICAgICBi
b29sIGlzUGFpbnRpbmdPdmVyZmxvd0NvbnRlbnRzID0gbG9jYWxQYWludEZsYWdzLmNvbnRhaW5z
KFBhaW50TGF5ZXJGbGFnOjpQYWludGluZ092ZXJmbG93Q29udGVudHMpOwogICAgIGJvb2wgaXND
b2xsZWN0aW5nRXZlbnRSZWdpb24gPSBsb2NhbFBhaW50RmxhZ3MuY29udGFpbnMoUGFpbnRMYXll
ckZsYWc6OkNvbGxlY3RpbmdFdmVudFJlZ2lvbik7CisgICAgYm9vbCBpc0NvbGxlY3RpbmdBY2Nl
c3NpYmlsaXR5UmVjdHMgPSBpczxBY2Nlc3NpYmlsaXR5R2VvbWV0cnlUcmF2ZXJzYWxDb250ZXh0
PihwYWludGluZ0luZm8uZ2VvbWV0cnlUcmF2ZXJzYWxDb250ZXh0KTsKIAogICAgIGJvb2wgaXNT
ZWxmUGFpbnRpbmdMYXllciA9IHRoaXMtPmlzU2VsZlBhaW50aW5nTGF5ZXIoKTsKIApAQCAtMzE3
OCwxMSArMzE4MSwxMSBAQCB2b2lkIFJlbmRlckxheWVyOjpwYWludExheWVyQ29udGVudHMoR3Jh
cGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBMYXllclBhaW50aQogICAgIC8vIGNvbnRlbnQu
IFdoZW4gbm90IGNvbXBvc2l0ZWQgc2Nyb2xsaW5nLCB0aGUgb3V0bGluZSBpcyBwYWludGVkIGlu
IHRoZQogICAgIC8vIGZvcmVncm91bmQgcGhhc2UuIFNpbmNlIHNjcm9sbGVkIGNvbnRlbnRzIGFy
ZSBtb3ZlZCBieSByZXBhaW50aW5nIGluIHRoaXMKICAgICAvLyBjYXNlLCB0aGUgb3V0bGluZSB3
b24ndCBnZXQgJ2RyYWdnZWQgYWxvbmcnLgotICAgIGJvb2wgc2hvdWxkUGFpbnRPdXRsaW5lID0g
aXNTZWxmUGFpbnRpbmdMYXllciAmJiAhaXNQYWludGluZ092ZXJsYXlTY3JvbGxiYXJzICYmICFp
c0NvbGxlY3RpbmdFdmVudFJlZ2lvbgorICAgIGJvb2wgc2hvdWxkUGFpbnRPdXRsaW5lID0gaXNT
ZWxmUGFpbnRpbmdMYXllciAmJiAhaXNQYWludGluZ092ZXJsYXlTY3JvbGxiYXJzICYmICFpc0Nv
bGxlY3RpbmdFdmVudFJlZ2lvbiAmJiAhaXNDb2xsZWN0aW5nQWNjZXNzaWJpbGl0eVJlY3RzCiAg
ICAgICAgICYmIChyZW5kZXJlcigpLnZpZXcoKS5wcmludGluZygpIHx8IHJlbmRlcmVyKCkudmll
dygpLmhhc1JlbmRlcmVyc1dpdGhPdXRsaW5lKCkpCiAgICAgICAgICYmICgoaXNQYWludGluZ1Nj
cm9sbGluZ0NvbnRlbnQgJiYgaXNQYWludGluZ0NvbXBvc2l0ZWRCYWNrZ3JvdW5kKQogICAgICAg
ICB8fCAoIWlzUGFpbnRpbmdTY3JvbGxpbmdDb250ZW50ICYmIGlzUGFpbnRpbmdDb21wb3NpdGVk
Rm9yZWdyb3VuZCkpOwotICAgIGJvb2wgc2hvdWxkUGFpbnRDb250ZW50ID0gbV9oYXNWaXNpYmxl
Q29udGVudCAmJiBpc1NlbGZQYWludGluZ0xheWVyICYmICFpc1BhaW50aW5nT3ZlcmxheVNjcm9s
bGJhcnMgJiYgIWlzQ29sbGVjdGluZ0V2ZW50UmVnaW9uOworICAgIGJvb2wgc2hvdWxkUGFpbnRD
b250ZW50ID0gbV9oYXNWaXNpYmxlQ29udGVudCAmJiBpc1NlbGZQYWludGluZ0xheWVyICYmICFp
c1BhaW50aW5nT3ZlcmxheVNjcm9sbGJhcnMgJiYgIWlzQ29sbGVjdGluZ0V2ZW50UmVnaW9uICYm
ICFpc0NvbGxlY3RpbmdBY2Nlc3NpYmlsaXR5UmVjdHM7CiAKICAgICBpZiAobG9jYWxQYWludEZs
YWdzLmNvbnRhaW5zKFBhaW50TGF5ZXJGbGFnOjpQYWludGluZ1Jvb3RCYWNrZ3JvdW5kT25seSkg
JiYgIXJlbmRlcmVyKCkuaXNSZW5kZXJWaWV3KCkgJiYgIXJlbmRlcmVyKCkuaXNEb2N1bWVudEVs
ZW1lbnRSZW5kZXJlcigpKSB7CiAgICAgICAgIC8vIElmIGJlZ2luVHJhbnNwYXJlbmN5TGF5ZXJz
IHdhcyBjYWxsZWQgcHJpb3IgdG8gdGhpcywgZW5zdXJlIHRoZSB0cmFuc3BhcmVuY3kgc3RhdGUg
aXMgY2xlYW5lZCB1cCBiZWZvcmUgcmV0dXJuaW5nLgpAQCAtMzIxMCwxMCArMzIxMywxMCBAQCB2
b2lkIFJlbmRlckxheWVyOjpwYWludExheWVyQ29udGVudHMoR3JhcGhpY3NDb250ZXh0JiBjb250
ZXh0LCBjb25zdCBMYXllclBhaW50aQogICAgICAgICBjb2x1bW5Bd2FyZU9mZnNldEZyb21Sb290
ID0gdG9MYXlvdXRTaXplKGNvbnZlcnRUb0xheWVyQ29vcmRzKHBhaW50aW5nSW5mby5yb290TGF5
ZXIsIExheW91dFBvaW50KCksIEFkanVzdEZvckNvbHVtbnMpKTsKIAogICAgIEdyYXBoaWNzQ29u
dGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcihjb250ZXh0LCBmYWxzZSk7Ci0gICAgRXZlbnRSZWdp
b25Db250ZXh0U3RhdGVTYXZlciBldmVudFJlZ2lvblN0YXRlU2F2ZXIocGFpbnRpbmdJbmZvLmV2
ZW50UmVnaW9uQ29udGV4dCk7CisgICAgR2VvbWV0cnlUcmF2ZXJzYWxDb250ZXh0U3RhdGVTYXZl
ciBnZW9tZXRyeVRyYXZlcnNhbENvbnRleHRTdGF0ZVNhdmVyKHBhaW50aW5nSW5mby5nZW9tZXRy
eVRyYXZlcnNhbENvbnRleHQpOwogCiAgICAgaWYgKHNob3VsZEFwcGx5Q2xpcFBhdGgocGFpbnRp
bmdJbmZvLnBhaW50QmVoYXZpb3IsIGxvY2FsUGFpbnRGbGFncykpCi0gICAgICAgIHNldHVwQ2xp
cFBhdGgoY29udGV4dCwgc3RhdGVTYXZlciwgZXZlbnRSZWdpb25TdGF0ZVNhdmVyLCBwYWludGlu
Z0luZm8sIGxvY2FsUGFpbnRGbGFncywgY29sdW1uQXdhcmVPZmZzZXRGcm9tUm9vdCk7CisgICAg
ICAgIHNldHVwQ2xpcFBhdGgoY29udGV4dCwgc3RhdGVTYXZlciwgZ2VvbWV0cnlUcmF2ZXJzYWxD
b250ZXh0U3RhdGVTYXZlciwgcGFpbnRpbmdJbmZvLCBsb2NhbFBhaW50RmxhZ3MsIGNvbHVtbkF3
YXJlT2Zmc2V0RnJvbVJvb3QpOwogCiAgICAgYm9vbCBzZWxlY3Rpb25BbmRCYWNrZ3JvdW5kc09u
bHkgPSBwYWludGluZ0luZm8ucGFpbnRCZWhhdmlvci5jb250YWlucyhQYWludEJlaGF2aW9yOjpT
ZWxlY3Rpb25BbmRCYWNrZ3JvdW5kc09ubHkpOwogICAgIGJvb2wgc2VsZWN0aW9uT25seSA9IHBh
aW50aW5nSW5mby5wYWludEJlaGF2aW9yLmNvbnRhaW5zKFBhaW50QmVoYXZpb3I6OlNlbGVjdGlv
bk9ubHkpOwpAQCAtMzI3MCw3ICszMjczLDcgQEAgdm9pZCBSZW5kZXJMYXllcjo6cGFpbnRMYXll
ckNvbnRlbnRzKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgTGF5ZXJQYWludGkKICAg
ICAgICAgICAgIHBlcmZvcm1PdmVybGFwVGVzdHMoKmxvY2FsUGFpbnRpbmdJbmZvLm92ZXJsYXBU
ZXN0UmVxdWVzdHMsIGxvY2FsUGFpbnRpbmdJbmZvLnJvb3RMYXllciwgdGhpcyk7CiAKICAgICAg
ICAgTGF5b3V0UmVjdCBwYWludERpcnR5UmVjdCA9IGxvY2FsUGFpbnRpbmdJbmZvLnBhaW50RGly
dHlSZWN0OwotICAgICAgICBpZiAoc2hvdWxkUGFpbnRDb250ZW50IHx8IHNob3VsZFBhaW50T3V0
bGluZSB8fCBpc1BhaW50aW5nT3ZlcmxheVNjcm9sbGJhcnMgfHwgaXNDb2xsZWN0aW5nRXZlbnRS
ZWdpb24pIHsKKyAgICAgICAgaWYgKHNob3VsZFBhaW50Q29udGVudCB8fCBzaG91bGRQYWludE91
dGxpbmUgfHwgaXNQYWludGluZ092ZXJsYXlTY3JvbGxiYXJzIHx8IGlzQ29sbGVjdGluZ0V2ZW50
UmVnaW9uIHx8IGlzQ29sbGVjdGluZ0FjY2Vzc2liaWxpdHlSZWN0cykgewogICAgICAgICAgICAg
Ly8gQ29sbGVjdCB0aGUgZnJhZ21lbnRzLiBUaGlzIHdpbGwgY29tcHV0ZSB0aGUgY2xpcCByZWN0
YW5nbGVzIGFuZCBwYWludCBvZmZzZXRzIGZvciBlYWNoIGxheWVyIGZyYWdtZW50LCBhcyB3ZWxs
IGFzIHdoZXRoZXIgb3Igbm90IHRoZSBjb250ZW50IG9mIGVhY2gKICAgICAgICAgICAgIC8vIGZy
YWdtZW50IHNob3VsZCBwYWludC4gSWYgdGhlIHBhcmVudCdzIGZpbHRlciBkaWN0YXRlcyBmdWxs
IHJlcGFpbnQgdG8gZW5zdXJlIHByb3BlciBmaWx0ZXIgZWZmZWN0LAogICAgICAgICAgICAgLy8g
dXNlIHRoZSBvdmVyZmxvdyBjbGlwIGFzIGRpcnR5IHJlY3QsIGluc3RlYWQgb2Ygbm8gY2xpcHBp
bmcuIEl0IG1haW50YWlucyBwcm9wZXIgY2xpcHBpbmcgZm9yIG92ZXJmbG93OjpzY3JvbGwuCkBA
IC0zMzA4LDYgKzMzMTEsOSBAQCB2b2lkIFJlbmRlckxheWVyOjpwYWludExheWVyQ29udGVudHMo
R3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBMYXllclBhaW50aQogICAgICAgICBpZiAo
aXNDb2xsZWN0aW5nRXZlbnRSZWdpb24pCiAgICAgICAgICAgICBjb2xsZWN0RXZlbnRSZWdpb25G
b3JGcmFnbWVudHMobGF5ZXJGcmFnbWVudHMsIGN1cnJlbnRDb250ZXh0LCBsb2NhbFBhaW50aW5n
SW5mbywgcGFpbnRCZWhhdmlvcik7CiAKKyAgICAgICAgaWYgKGlzQ29sbGVjdGluZ0FjY2Vzc2li
aWxpdHlSZWN0cykKKyAgICAgICAgICAgIGNvbGxlY3RBY2Nlc3NpYmlsaXR5UmVjdHNGb3JGcmFn
bWVudHMobGF5ZXJGcmFnbWVudHMsIGN1cnJlbnRDb250ZXh0LCBsb2NhbFBhaW50aW5nSW5mbywg
cGFpbnRCZWhhdmlvcik7CisKICAgICAgICAgaWYgKHNob3VsZFBhaW50T3V0bGluZSkKICAgICAg
ICAgICAgIHBhaW50T3V0bGluZUZvckZyYWdtZW50cyhsYXllckZyYWdtZW50cywgY3VycmVudENv
bnRleHQsIGxvY2FsUGFpbnRpbmdJbmZvLCBwYWludEJlaGF2aW9yLCBzdWJ0cmVlUGFpbnRSb290
Rm9yUmVuZGVyZXIpOwogCkBAIC0zMzg4LDggKzMzOTQsOCBAQCB2b2lkIFJlbmRlckxheWVyOjpw
YWludExheWVyQnlBcHBseWluZ1RyYW5zZm9ybShHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNv
bnN0CiAgICAgYXV0byBhZmZpbmVUcmFuc2Zvcm0gPSB0cmFuc2Zvcm0udG9BZmZpbmVUcmFuc2Zv
cm0oKTsKICAgICBjb250ZXh0LmNvbmNhdENUTShhZmZpbmVUcmFuc2Zvcm0pOwogCi0gICAgaWYg
KHBhaW50aW5nSW5mby5ldmVudFJlZ2lvbkNvbnRleHQpCi0gICAgICAgIHBhaW50aW5nSW5mby5l
dmVudFJlZ2lvbkNvbnRleHQtPnB1c2hUcmFuc2Zvcm0oYWZmaW5lVHJhbnNmb3JtKTsKKyAgICBp
ZiAocGFpbnRpbmdJbmZvLmdlb21ldHJ5VHJhdmVyc2FsQ29udGV4dCkKKyAgICAgICAgcGFpbnRp
bmdJbmZvLmdlb21ldHJ5VHJhdmVyc2FsQ29udGV4dC0+cHVzaFRyYW5zZm9ybShhZmZpbmVUcmFu
c2Zvcm0pOwogCiAgICAgLy8gT25seSBwcm9wYWdhdGUgdGhlIHN1YnBpeGVsIG9mZnNldHMgdG8g
dGhlIGRlc2NlbmRhbnQgbGF5ZXJzLCBpZiB3ZSdyZSBub3QgdGhlIHJvb3QKICAgICAvLyBvZiBh
IFNWRyBzdWJ0cmVlLCB3aGVyZSBubyBwaXhlbCBzbmFwcGluZyBpcyBhcHBsaWVkIC0tIG9ubHkg
dGhlIG91dGVybW9zdCA8c3ZnPiBsYXllcgpAQCAtMzQwNSw4ICszNDExLDggQEAgdm9pZCBSZW5k
ZXJMYXllcjo6cGFpbnRMYXllckJ5QXBwbHlpbmdUcmFuc2Zvcm0oR3JhcGhpY3NDb250ZXh0JiBj
b250ZXh0LCBjb25zdAogICAgIHRyYW5zZm9ybWVkUGFpbnRpbmdJbmZvLnN1YnBpeGVsT2Zmc2V0
ID0gYWRqdXN0ZWRTdWJwaXhlbE9mZnNldDsKICAgICBwYWludExheWVyQ29udGVudHNBbmRSZWZs
ZWN0aW9uKGNvbnRleHQsIHRyYW5zZm9ybWVkUGFpbnRpbmdJbmZvLCBwYWludEZsYWdzKTsKIAot
ICAgIGlmIChwYWludGluZ0luZm8uZXZlbnRSZWdpb25Db250ZXh0KQotICAgICAgICBwYWludGlu
Z0luZm8uZXZlbnRSZWdpb25Db250ZXh0LT5wb3BUcmFuc2Zvcm0oKTsKKyAgICBpZiAocGFpbnRp
bmdJbmZvLmdlb21ldHJ5VHJhdmVyc2FsQ29udGV4dCkKKyAgICAgICAgcGFpbnRpbmdJbmZvLmdl
b21ldHJ5VHJhdmVyc2FsQ29udGV4dC0+cG9wVHJhbnNmb3JtKCk7CiAKICAgICBjb250ZXh0LnNl
dENUTShvbGRUcmFuc2Zvcm0pOwogfQpAQCAtMzYyMyw5ICszNjI5LDkgQEAgdm9pZCBSZW5kZXJM
YXllcjo6cGFpbnRUcmFuc2Zvcm1lZExheWVySW50b0ZyYWdtZW50cyhHcmFwaGljc0NvbnRleHQm
IGNvbnRleHQsIGMKICAgICAgICAgICAgIHBhaW50QmVoYXZpb3IuYWRkKFBhaW50QmVoYXZpb3I6
OkNvbXBvc2l0ZWRPdmVyZmxvd1Njcm9sbENvbnRlbnQpOwogCiAgICAgICAgIEdyYXBoaWNzQ29u
dGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcihjb250ZXh0LCBmYWxzZSk7Ci0gICAgICAgIEV2ZW50
UmVnaW9uQ29udGV4dFN0YXRlU2F2ZXIgZXZlbnRSZWdpb25TdGF0ZVNhdmVyKHBhaW50aW5nSW5m
by5ldmVudFJlZ2lvbkNvbnRleHQpOworICAgICAgICBHZW9tZXRyeVRyYXZlcnNhbENvbnRleHRT
dGF0ZVNhdmVyIGdlb21ldHJ5VHJhdmVyc2FsQ29udGV4dFN0YXRlU2F2ZXIocGFpbnRpbmdJbmZv
Lmdlb21ldHJ5VHJhdmVyc2FsQ29udGV4dCk7CiAKLSAgICAgICAgcGFyZW50KCktPmNsaXBUb1Jl
Y3QoY29udGV4dCwgc3RhdGVTYXZlciwgZXZlbnRSZWdpb25TdGF0ZVNhdmVyLCBwYWludGluZ0lu
Zm8sIHBhaW50QmVoYXZpb3IsIGNsaXBSZWN0KTsKKyAgICAgICAgcGFyZW50KCktPmNsaXBUb1Jl
Y3QoY29udGV4dCwgc3RhdGVTYXZlciwgZ2VvbWV0cnlUcmF2ZXJzYWxDb250ZXh0U3RhdGVTYXZl
ciwgcGFpbnRpbmdJbmZvLCBwYWludEJlaGF2aW9yLCBjbGlwUmVjdCk7CiAgICAgICAgIHBhaW50
TGF5ZXJCeUFwcGx5aW5nVHJhbnNmb3JtKGNvbnRleHQsIHBhaW50aW5nSW5mbywgcGFpbnRGbGFn
cywgZnJhZ21lbnQucGFnaW5hdGlvbk9mZnNldCk7CiAgICAgfQogfQpAQCAtMzY0MywxMiArMzY0
OSwxMiBAQCB2b2lkIFJlbmRlckxheWVyOjpwYWludEJhY2tncm91bmRGb3JGcmFnbWVudHMoY29u
c3QgTGF5ZXJGcmFnbWVudHMmIGxheWVyRnJhZ21lbgogICAgICAgICAgICAgYmVnaW5UcmFuc3Bh
cmVuY3lMYXllcnMoY29udGV4dEZvclRyYW5zcGFyZW5jeUxheWVyLCBsb2NhbFBhaW50aW5nSW5m
bywgdHJhbnNwYXJlbmN5UGFpbnREaXJ0eVJlY3QpOwogICAgIAogICAgICAgICBHcmFwaGljc0Nv
bnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoY29udGV4dCwgZmFsc2UpOwotICAgICAgICBFdmVu
dFJlZ2lvbkNvbnRleHRTdGF0ZVNhdmVyIGV2ZW50UmVnaW9uU3RhdGVTYXZlcihsb2NhbFBhaW50
aW5nSW5mby5ldmVudFJlZ2lvbkNvbnRleHQpOworICAgICAgICBHZW9tZXRyeVRyYXZlcnNhbENv
bnRleHRTdGF0ZVNhdmVyIGdlb21ldHJ5VHJhdmVyc2FsQ29udGV4dFN0YXRlU2F2ZXIobG9jYWxQ
YWludGluZ0luZm8uZ2VvbWV0cnlUcmF2ZXJzYWxDb250ZXh0KTsKIAogICAgICAgICBpZiAobG9j
YWxQYWludGluZ0luZm8uY2xpcFRvRGlydHlSZWN0KSB7CiAgICAgICAgICAgICAvLyBQYWludCBv
dXIgYmFja2dyb3VuZCBmaXJzdCwgYmVmb3JlIHBhaW50aW5nIGFueSBjaGlsZCBsYXllcnMuCiAg
ICAgICAgICAgICAvLyBFc3RhYmxpc2ggdGhlIGNsaXAgdXNlZCB0byBwYWludCBvdXIgYmFja2dy
b3VuZC4KLSAgICAgICAgICAgIGNsaXBUb1JlY3QoY29udGV4dCwgc3RhdGVTYXZlciwgZXZlbnRS
ZWdpb25TdGF0ZVNhdmVyLCBsb2NhbFBhaW50aW5nSW5mbywgcGFpbnRCZWhhdmlvciwgZnJhZ21l
bnQuYmFja2dyb3VuZFJlY3QsIERvTm90SW5jbHVkZVNlbGZGb3JCb3JkZXJSYWRpdXMpOyAvLyBC
YWNrZ3JvdW5kIHBhaW50aW5nIHdpbGwgaGFuZGxlIGNsaXBwaW5nIHRvIHNlbGYuCisgICAgICAg
ICAgICBjbGlwVG9SZWN0KGNvbnRleHQsIHN0YXRlU2F2ZXIsIGdlb21ldHJ5VHJhdmVyc2FsQ29u
dGV4dFN0YXRlU2F2ZXIsIGxvY2FsUGFpbnRpbmdJbmZvLCBwYWludEJlaGF2aW9yLCBmcmFnbWVu
dC5iYWNrZ3JvdW5kUmVjdCwgRG9Ob3RJbmNsdWRlU2VsZkZvckJvcmRlclJhZGl1cyk7IC8vIEJh
Y2tncm91bmQgcGFpbnRpbmcgd2lsbCBoYW5kbGUgY2xpcHBpbmcgdG8gc2VsZi4KICAgICAgICAg
fQogICAgICAgICAKICAgICAgICAgLy8gUGFpbnQgdGhlIGJhY2tncm91bmQuCkBAIC0zNjk0LDEz
ICszNzAwLDEzIEBAIHZvaWQgUmVuZGVyTGF5ZXI6OnBhaW50Rm9yZWdyb3VuZEZvckZyYWdtZW50
cyhjb25zdCBMYXllckZyYWdtZW50cyYgbGF5ZXJGcmFnbWVuCiAgICAgICAgIGxvY2FsUGFpbnRC
ZWhhdmlvci5hZGQoUGFpbnRCZWhhdmlvcjo6Q29tcG9zaXRlZE92ZXJmbG93U2Nyb2xsQ29udGVu
dCk7CiAKICAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoY29udGV4dCwg
ZmFsc2UpOwotICAgIEV2ZW50UmVnaW9uQ29udGV4dFN0YXRlU2F2ZXIgZXZlbnRSZWdpb25TdGF0
ZVNhdmVyKGxvY2FsUGFpbnRpbmdJbmZvLmV2ZW50UmVnaW9uQ29udGV4dCk7CisgICAgR2VvbWV0
cnlUcmF2ZXJzYWxDb250ZXh0U3RhdGVTYXZlciBnZW9tZXRyeVRyYXZlcnNhbENvbnRleHRTdGF0
ZVNhdmVyKGxvY2FsUGFpbnRpbmdJbmZvLmdlb21ldHJ5VHJhdmVyc2FsQ29udGV4dCk7CiAKICAg
ICAvLyBPcHRpbWl6ZSBjbGlwcGluZyBmb3IgdGhlIHNpbmdsZSBmcmFnbWVudCBjYXNlLgogICAg
IGJvb2wgc2hvdWxkQ2xpcCA9IGxvY2FsUGFpbnRpbmdJbmZvLmNsaXBUb0RpcnR5UmVjdCAmJiBs
YXllckZyYWdtZW50cy5zaXplKCkgPT0gMSAmJiBsYXllckZyYWdtZW50c1swXS5zaG91bGRQYWlu
dENvbnRlbnQgJiYgIWxheWVyRnJhZ21lbnRzWzBdLmZvcmVncm91bmRSZWN0LmlzRW1wdHkoKTsK
ICAgICBpZiAoc2hvdWxkQ2xpcCkKLSAgICAgICAgY2xpcFRvUmVjdChjb250ZXh0LCBzdGF0ZVNh
dmVyLCBldmVudFJlZ2lvblN0YXRlU2F2ZXIsIGxvY2FsUGFpbnRpbmdJbmZvLCBsb2NhbFBhaW50
QmVoYXZpb3IsIGxheWVyRnJhZ21lbnRzWzBdLmZvcmVncm91bmRSZWN0KTsKLSAgICAKKyAgICAg
ICAgY2xpcFRvUmVjdChjb250ZXh0LCBzdGF0ZVNhdmVyLCBnZW9tZXRyeVRyYXZlcnNhbENvbnRl
eHRTdGF0ZVNhdmVyLCBsb2NhbFBhaW50aW5nSW5mbywgbG9jYWxQYWludEJlaGF2aW9yLCBsYXll
ckZyYWdtZW50c1swXS5mb3JlZ3JvdW5kUmVjdCk7CisKICAgICAvLyBXZSBoYXZlIHRvIGxvb3Ag
dGhyb3VnaCBldmVyeSBmcmFnbWVudCBtdWx0aXBsZSB0aW1lcywgc2luY2Ugd2UgaGF2ZSB0byBy
ZXBhaW50IGluIGVhY2ggc3BlY2lmaWMgcGhhc2UgaW4gb3JkZXIgZm9yCiAgICAgLy8gaW50ZXJs
ZWF2aW5nIG9mIHRoZSBmcmFnbWVudHMgdG8gd29yayBwcm9wZXJseS4KICAgICBib29sIHNlbGVj
dGlvbk9ubHkgPSBsb2NhbFBhaW50aW5nSW5mby5wYWludEJlaGF2aW9yLmNvbnRhaW5zKFBhaW50
QmVoYXZpb3I6OlNlbGVjdGlvbk9ubHkpOwpAQCAtMzc0MSwxMSArMzc0NywxMSBAQCB2b2lkIFJl
bmRlckxheWVyOjpwYWludEZvcmVncm91bmRGb3JGcmFnbWVudHNXaXRoUGhhc2UoUGFpbnRQaGFz
ZSBwaGFzZSwgY29uc3QgTAogICAgICAgICAgICAgY29udGludWU7CiAKICAgICAgICAgR3JhcGhp
Y3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKGNvbnRleHQsIGZhbHNlKTsKLSAgICAgICAg
RXZlbnRSZWdpb25Db250ZXh0U3RhdGVTYXZlciBldmVudFJlZ2lvblN0YXRlU2F2ZXIobG9jYWxQ
YWludGluZ0luZm8uZXZlbnRSZWdpb25Db250ZXh0KTsKKyAgICAgICAgR2VvbWV0cnlUcmF2ZXJz
YWxDb250ZXh0U3RhdGVTYXZlciBnZW9tZXRyeVRyYXZlcnNhbENvbnRleHRTdGF0ZVNhdmVyKGxv
Y2FsUGFpbnRpbmdJbmZvLmdlb21ldHJ5VHJhdmVyc2FsQ29udGV4dCk7CiAKICAgICAgICAgaWYg
KHNob3VsZENsaXApCi0gICAgICAgICAgICBjbGlwVG9SZWN0KGNvbnRleHQsIHN0YXRlU2F2ZXIs
IGV2ZW50UmVnaW9uU3RhdGVTYXZlciwgbG9jYWxQYWludGluZ0luZm8sIHBhaW50QmVoYXZpb3Is
IGZyYWdtZW50LmZvcmVncm91bmRSZWN0KTsKLSAgICAKKyAgICAgICAgICAgIGNsaXBUb1JlY3Qo
Y29udGV4dCwgc3RhdGVTYXZlciwgZ2VvbWV0cnlUcmF2ZXJzYWxDb250ZXh0U3RhdGVTYXZlciwg
bG9jYWxQYWludGluZ0luZm8sIHBhaW50QmVoYXZpb3IsIGZyYWdtZW50LmZvcmVncm91bmRSZWN0
KTsKKwogICAgICAgICBQYWludEluZm8gcGFpbnRJbmZvKGNvbnRleHQsIGZyYWdtZW50LmZvcmVn
cm91bmRSZWN0LnJlY3QoKSwgcGhhc2UsIHBhaW50QmVoYXZpb3IsIHN1YnRyZWVQYWludFJvb3RG
b3JSZW5kZXJlciwgbnVsbHB0ciwgbnVsbHB0ciwgJmxvY2FsUGFpbnRpbmdJbmZvLnJvb3RMYXll
ci0+cmVuZGVyZXIoKSwgdGhpcywgbG9jYWxQYWludGluZ0luZm8ucmVxdWlyZVNlY3VyaXR5T3Jp
Z2luQWNjZXNzRm9yV2lkZ2V0cyk7CiAgICAgICAgIGlmIChwaGFzZSA9PSBQYWludFBoYXNlOjpG
b3JlZ3JvdW5kKQogICAgICAgICAgICAgcGFpbnRJbmZvLm92ZXJsYXBUZXN0UmVxdWVzdHMgPSBs
b2NhbFBhaW50aW5nSW5mby5vdmVybGFwVGVzdFJlcXVlc3RzOwpAQCAtMzc2NCw5ICszNzcwLDkg
QEAgdm9pZCBSZW5kZXJMYXllcjo6cGFpbnRPdXRsaW5lRm9yRnJhZ21lbnRzKGNvbnN0IExheWVy
RnJhZ21lbnRzJiBsYXllckZyYWdtZW50cywKICAgICAgICAgUGFpbnRJbmZvIHBhaW50SW5mbyhj
b250ZXh0LCBmcmFnbWVudC5iYWNrZ3JvdW5kUmVjdC5yZWN0KCksIFBhaW50UGhhc2U6OlNlbGZP
dXRsaW5lLCBwYWludEJlaGF2aW9yLCBzdWJ0cmVlUGFpbnRSb290Rm9yUmVuZGVyZXIsIG51bGxw
dHIsIG51bGxwdHIsICZsb2NhbFBhaW50aW5nSW5mby5yb290TGF5ZXItPnJlbmRlcmVyKCksIHRo
aXMpOwogCiAgICAgICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcihjb250
ZXh0LCBmYWxzZSk7Ci0gICAgICAgIEV2ZW50UmVnaW9uQ29udGV4dFN0YXRlU2F2ZXIgZXZlbnRS
ZWdpb25TdGF0ZVNhdmVyKGxvY2FsUGFpbnRpbmdJbmZvLmV2ZW50UmVnaW9uQ29udGV4dCk7Cisg
ICAgICAgIEdlb21ldHJ5VHJhdmVyc2FsQ29udGV4dFN0YXRlU2F2ZXIgZ2VvbWV0cnlUcmF2ZXJz
YWxDb250ZXh0U3RhdGVTYXZlcihsb2NhbFBhaW50aW5nSW5mby5nZW9tZXRyeVRyYXZlcnNhbENv
bnRleHQpOwogCi0gICAgICAgIGNsaXBUb1JlY3QoY29udGV4dCwgc3RhdGVTYXZlciwgZXZlbnRS
ZWdpb25TdGF0ZVNhdmVyLCBsb2NhbFBhaW50aW5nSW5mbywgcGFpbnRCZWhhdmlvciwgZnJhZ21l
bnQuYmFja2dyb3VuZFJlY3QsIERvTm90SW5jbHVkZVNlbGZGb3JCb3JkZXJSYWRpdXMpOworICAg
ICAgICBjbGlwVG9SZWN0KGNvbnRleHQsIHN0YXRlU2F2ZXIsIGdlb21ldHJ5VHJhdmVyc2FsQ29u
dGV4dFN0YXRlU2F2ZXIsIGxvY2FsUGFpbnRpbmdJbmZvLCBwYWludEJlaGF2aW9yLCBmcmFnbWVu
dC5iYWNrZ3JvdW5kUmVjdCwgRG9Ob3RJbmNsdWRlU2VsZkZvckJvcmRlclJhZGl1cyk7CiAgICAg
ICAgIHJlbmRlcmVyKCkucGFpbnQocGFpbnRJbmZvLCBwYWludE9mZnNldEZvclJlbmRlcmVyKGZy
YWdtZW50LCBsb2NhbFBhaW50aW5nSW5mbykpOwogICAgIH0KIH0KQEAgLTM3NzksMTEgKzM3ODUs
MTEgQEAgdm9pZCBSZW5kZXJMYXllcjo6cGFpbnRNYXNrRm9yRnJhZ21lbnRzKGNvbnN0IExheWVy
RnJhZ21lbnRzJiBsYXllckZyYWdtZW50cywgR3IKICAgICAgICAgICAgIGNvbnRpbnVlOwogCiAg
ICAgICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcihjb250ZXh0LCBmYWxz
ZSk7Ci0gICAgICAgIEV2ZW50UmVnaW9uQ29udGV4dFN0YXRlU2F2ZXIgZXZlbnRSZWdpb25TdGF0
ZVNhdmVyKGxvY2FsUGFpbnRpbmdJbmZvLmV2ZW50UmVnaW9uQ29udGV4dCk7CisgICAgICAgIEdl
b21ldHJ5VHJhdmVyc2FsQ29udGV4dFN0YXRlU2F2ZXIgZ2VvbWV0cnlUcmF2ZXJzYWxDb250ZXh0
U3RhdGVTYXZlcihsb2NhbFBhaW50aW5nSW5mby5nZW9tZXRyeVRyYXZlcnNhbENvbnRleHQpOwog
CiAgICAgICAgIGlmIChsb2NhbFBhaW50aW5nSW5mby5jbGlwVG9EaXJ0eVJlY3QpCi0gICAgICAg
ICAgICBjbGlwVG9SZWN0KGNvbnRleHQsIHN0YXRlU2F2ZXIsIGV2ZW50UmVnaW9uU3RhdGVTYXZl
ciwgbG9jYWxQYWludGluZ0luZm8sIHBhaW50QmVoYXZpb3IsIGZyYWdtZW50LmJhY2tncm91bmRS
ZWN0LCBEb05vdEluY2x1ZGVTZWxmRm9yQm9yZGVyUmFkaXVzKTsgLy8gTWFzayBwYWludGluZyB3
aWxsIGhhbmRsZSBjbGlwcGluZyB0byBzZWxmLgotICAgICAgICAKKyAgICAgICAgICAgIGNsaXBU
b1JlY3QoY29udGV4dCwgc3RhdGVTYXZlciwgZ2VvbWV0cnlUcmF2ZXJzYWxDb250ZXh0U3RhdGVT
YXZlciwgbG9jYWxQYWludGluZ0luZm8sIHBhaW50QmVoYXZpb3IsIGZyYWdtZW50LmJhY2tncm91
bmRSZWN0LCBEb05vdEluY2x1ZGVTZWxmRm9yQm9yZGVyUmFkaXVzKTsgLy8gTWFzayBwYWludGlu
ZyB3aWxsIGhhbmRsZSBjbGlwcGluZyB0byBzZWxmLgorCiAgICAgICAgIC8vIFBhaW50IHRoZSBt
YXNrLgogICAgICAgICAvLyBGSVhNRTogRXZlbnR1YWxseSB3ZSB3aWxsIGNvbGxlY3QgdGhlIHJl
Z2lvbiBmcm9tIHRoZSBmcmFnbWVudCBpdHNlbGYgaW5zdGVhZCBvZiBqdXN0IGZyb20gdGhlIHBh
aW50IGluZm8uCiAgICAgICAgIFBhaW50SW5mbyBwYWludEluZm8oY29udGV4dCwgZnJhZ21lbnQu
YmFja2dyb3VuZFJlY3QucmVjdCgpLCBQYWludFBoYXNlOjpNYXNrLCBwYWludEJlaGF2aW9yLCBz
dWJ0cmVlUGFpbnRSb290Rm9yUmVuZGVyZXIsIG51bGxwdHIsIG51bGxwdHIsICZsb2NhbFBhaW50
aW5nSW5mby5yb290TGF5ZXItPnJlbmRlcmVyKCksIHRoaXMpOwpAQCAtMzc5OCwxMCArMzgwNCwx
MCBAQCB2b2lkIFJlbmRlckxheWVyOjpwYWludENoaWxkQ2xpcHBpbmdNYXNrRm9yRnJhZ21lbnRz
KGNvbnN0IExheWVyRnJhZ21lbnRzJiBsYXllcgogICAgICAgICAgICAgY29udGludWU7CiAKICAg
ICAgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKGNvbnRleHQsIGZhbHNl
KTsKLSAgICAgICAgRXZlbnRSZWdpb25Db250ZXh0U3RhdGVTYXZlciBldmVudFJlZ2lvblN0YXRl
U2F2ZXIobG9jYWxQYWludGluZ0luZm8uZXZlbnRSZWdpb25Db250ZXh0KTsKKyAgICAgICAgR2Vv
bWV0cnlUcmF2ZXJzYWxDb250ZXh0U3RhdGVTYXZlciBnZW9tZXRyeVRyYXZlcnNhbENvbnRleHRT
dGF0ZVNhdmVyKGxvY2FsUGFpbnRpbmdJbmZvLmdlb21ldHJ5VHJhdmVyc2FsQ29udGV4dCk7CiAK
ICAgICAgICAgaWYgKGxvY2FsUGFpbnRpbmdJbmZvLmNsaXBUb0RpcnR5UmVjdCkKLSAgICAgICAg
ICAgIGNsaXBUb1JlY3QoY29udGV4dCwgc3RhdGVTYXZlciwgZXZlbnRSZWdpb25TdGF0ZVNhdmVy
LCBsb2NhbFBhaW50aW5nSW5mbywgcGFpbnRCZWhhdmlvciwgZnJhZ21lbnQuZm9yZWdyb3VuZFJl
Y3QsIEluY2x1ZGVTZWxmRm9yQm9yZGVyUmFkaXVzKTsgLy8gQ2hpbGQgY2xpcHBpbmcgbWFzayBw
YWludGluZyB3aWxsIGhhbmRsZSBjbGlwcGluZyB0byBzZWxmLgorICAgICAgICAgICAgY2xpcFRv
UmVjdChjb250ZXh0LCBzdGF0ZVNhdmVyLCBnZW9tZXRyeVRyYXZlcnNhbENvbnRleHRTdGF0ZVNh
dmVyLCBsb2NhbFBhaW50aW5nSW5mbywgcGFpbnRCZWhhdmlvciwgZnJhZ21lbnQuZm9yZWdyb3Vu
ZFJlY3QsIEluY2x1ZGVTZWxmRm9yQm9yZGVyUmFkaXVzKTsgLy8gQ2hpbGQgY2xpcHBpbmcgbWFz
ayBwYWludGluZyB3aWxsIGhhbmRsZSBjbGlwcGluZyB0byBzZWxmLgogCiAgICAgICAgIC8vIFBh
aW50IHRoZSBjbGlwcGVkIG1hc2suCiAgICAgICAgIFBhaW50SW5mbyBwYWludEluZm8oY29udGV4
dCwgZnJhZ21lbnQuYmFja2dyb3VuZFJlY3QucmVjdCgpLCBQYWludFBoYXNlOjpDbGlwcGluZ01h
c2ssIHBhaW50QmVoYXZpb3IsIHN1YnRyZWVQYWludFJvb3RGb3JSZW5kZXJlciwgbnVsbHB0ciwg
bnVsbHB0ciwgJmxvY2FsUGFpbnRpbmdJbmZvLnJvb3RMYXllci0+cmVuZGVyZXIoKSwgdGhpcyk7
CkBAIC0zODE4LDI1ICszODI0LDM1IEBAIHZvaWQgUmVuZGVyTGF5ZXI6OnBhaW50T3ZlcmZsb3dD
b250cm9sc0ZvckZyYWdtZW50cyhjb25zdCBMYXllckZyYWdtZW50cyYgbGF5ZXJGCiAgICAgICAg
ICAgICBjb250aW51ZTsKIAogICAgICAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRl
U2F2ZXIoY29udGV4dCwgZmFsc2UpOwotICAgICAgICBFdmVudFJlZ2lvbkNvbnRleHRTdGF0ZVNh
dmVyIGV2ZW50UmVnaW9uU3RhdGVTYXZlcihsb2NhbFBhaW50aW5nSW5mby5ldmVudFJlZ2lvbkNv
bnRleHQpOworICAgICAgICBHZW9tZXRyeVRyYXZlcnNhbENvbnRleHRTdGF0ZVNhdmVyIGdlb21l
dHJ5VHJhdmVyc2FsQ29udGV4dFN0YXRlU2F2ZXIobG9jYWxQYWludGluZ0luZm8uZ2VvbWV0cnlU
cmF2ZXJzYWxDb250ZXh0KTsKIAotICAgICAgICBjbGlwVG9SZWN0KGNvbnRleHQsIHN0YXRlU2F2
ZXIsIGV2ZW50UmVnaW9uU3RhdGVTYXZlciwgbG9jYWxQYWludGluZ0luZm8sIHsgfSwgZnJhZ21l
bnQuYmFja2dyb3VuZFJlY3QpOworICAgICAgICBjbGlwVG9SZWN0KGNvbnRleHQsIHN0YXRlU2F2
ZXIsIGdlb21ldHJ5VHJhdmVyc2FsQ29udGV4dFN0YXRlU2F2ZXIsIGxvY2FsUGFpbnRpbmdJbmZv
LCB7IH0sIGZyYWdtZW50LmJhY2tncm91bmRSZWN0KTsKICAgICAgICAgbV9zY3JvbGxhYmxlQXJl
YS0+cGFpbnRPdmVyZmxvd0NvbnRyb2xzKGNvbnRleHQsIHJvdW5kZWRJbnRQb2ludChwYWludE9m
ZnNldEZvclJlbmRlcmVyKGZyYWdtZW50LCBsb2NhbFBhaW50aW5nSW5mbykpLCBzbmFwcGVkSW50
UmVjdChmcmFnbWVudC5iYWNrZ3JvdW5kUmVjdC5yZWN0KCkpLCB0cnVlKTsKICAgICB9CiB9CiAK
IHZvaWQgUmVuZGVyTGF5ZXI6OmNvbGxlY3RFdmVudFJlZ2lvbkZvckZyYWdtZW50cyhjb25zdCBM
YXllckZyYWdtZW50cyYgbGF5ZXJGcmFnbWVudHMsIEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwg
Y29uc3QgTGF5ZXJQYWludGluZ0luZm8mIGxvY2FsUGFpbnRpbmdJbmZvLCBPcHRpb25TZXQ8UGFp
bnRCZWhhdmlvcj4gcGFpbnRCZWhhdmlvcikKIHsKLSAgICBBU1NFUlQobG9jYWxQYWludGluZ0lu
Zm8uZXZlbnRSZWdpb25Db250ZXh0KTsKKyAgICBBU1NFUlQoaXM8RXZlbnRSZWdpb25Db250ZXh0
Pihsb2NhbFBhaW50aW5nSW5mby5nZW9tZXRyeVRyYXZlcnNhbENvbnRleHQpKTsKICAgICBmb3Ig
KGNvbnN0IGF1dG8mIGZyYWdtZW50IDogbGF5ZXJGcmFnbWVudHMpIHsKICAgICAgICAgUGFpbnRJ
bmZvIHBhaW50SW5mbyhjb250ZXh0LCBmcmFnbWVudC5mb3JlZ3JvdW5kUmVjdC5yZWN0KCksIFBh
aW50UGhhc2U6OkV2ZW50UmVnaW9uLCBwYWludEJlaGF2aW9yKTsKLSAgICAgICAgcGFpbnRJbmZv
LmV2ZW50UmVnaW9uQ29udGV4dCA9IGxvY2FsUGFpbnRpbmdJbmZvLmV2ZW50UmVnaW9uQ29udGV4
dDsKKyAgICAgICAgcGFpbnRJbmZvLmdlb21ldHJ5VHJhdmVyc2FsQ29udGV4dCA9IGxvY2FsUGFp
bnRpbmdJbmZvLmdlb21ldHJ5VHJhdmVyc2FsQ29udGV4dDsKICAgICAgICAgaWYgKGxvY2FsUGFp
bnRpbmdJbmZvLmNsaXBUb0RpcnR5UmVjdCkgLy8gY2xpcC1wYXRoPwotICAgICAgICAgICAgcGFp
bnRJbmZvLmV2ZW50UmVnaW9uQ29udGV4dC0+cHVzaENsaXAoZW5jbG9zaW5nSW50UmVjdChmcmFn
bWVudC5iYWNrZ3JvdW5kUmVjdC5yZWN0KCkpKTsKKyAgICAgICAgICAgIHBhaW50SW5mby5nZW9t
ZXRyeVRyYXZlcnNhbENvbnRleHQtPnB1c2hDbGlwKGVuY2xvc2luZ0ludFJlY3QoZnJhZ21lbnQu
YmFja2dyb3VuZFJlY3QucmVjdCgpKSk7CiAKICAgICAgICAgcmVuZGVyZXIoKS5wYWludChwYWlu
dEluZm8sIHBhaW50T2Zmc2V0Rm9yUmVuZGVyZXIoZnJhZ21lbnQsIGxvY2FsUGFpbnRpbmdJbmZv
KSk7CiAgICAgICAgIGlmIChsb2NhbFBhaW50aW5nSW5mby5jbGlwVG9EaXJ0eVJlY3QpCi0gICAg
ICAgICAgICBwYWludEluZm8uZXZlbnRSZWdpb25Db250ZXh0LT5wb3BDbGlwKCk7CisgICAgICAg
ICAgICBwYWludEluZm8uZ2VvbWV0cnlUcmF2ZXJzYWxDb250ZXh0LT5wb3BDbGlwKCk7CisgICAg
fQorfQorCit2b2lkIFJlbmRlckxheWVyOjpjb2xsZWN0QWNjZXNzaWJpbGl0eVJlY3RzRm9yRnJh
Z21lbnRzKGNvbnN0IExheWVyRnJhZ21lbnRzJiBsYXllckZyYWdtZW50cywgR3JhcGhpY3NDb250
ZXh0JiBjb250ZXh0LCBjb25zdCBMYXllclBhaW50aW5nSW5mbyYgbG9jYWxQYWludGluZ0luZm8s
IE9wdGlvblNldDxQYWludEJlaGF2aW9yPiBwYWludEJlaGF2aW9yKQoreworICAgIEFTU0VSVChp
czxBY2Nlc3NpYmlsaXR5R2VvbWV0cnlUcmF2ZXJzYWxDb250ZXh0Pihsb2NhbFBhaW50aW5nSW5m
by5nZW9tZXRyeVRyYXZlcnNhbENvbnRleHQpKTsKKyAgICBmb3IgKGNvbnN0IGF1dG8mIGZyYWdt
ZW50IDogbGF5ZXJGcmFnbWVudHMpIHsKKyAgICAgICAgUGFpbnRJbmZvIHBhaW50SW5mbyhjb250
ZXh0LCBmcmFnbWVudC5mb3JlZ3JvdW5kUmVjdC5yZWN0KCksIFBhaW50UGhhc2U6OkFjY2Vzc2li
aWxpdHksIHBhaW50QmVoYXZpb3IpOworICAgICAgICBwYWludEluZm8uZ2VvbWV0cnlUcmF2ZXJz
YWxDb250ZXh0ID0gbG9jYWxQYWludGluZ0luZm8uZ2VvbWV0cnlUcmF2ZXJzYWxDb250ZXh0Owor
ICAgICAgICByZW5kZXJlcigpLnBhaW50KHBhaW50SW5mbywgcGFpbnRPZmZzZXRGb3JSZW5kZXJl
cihmcmFnbWVudCwgbG9jYWxQYWludGluZ0luZm8pKTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5oIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckxheWVyLmgKaW5kZXggMWE4NGU0OWE0MDBiLi5mMzQ2YWUxMTc3ZTQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5oCkBAIC02Nyw3ICs2Nyw3IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIENTU0ZpbHRlcjsKIGNsYXNzIENsaXBSZWN0czsK
IGNsYXNzIENsaXBSZWN0c0NhY2hlOwotY2xhc3MgRXZlbnRSZWdpb25Db250ZXh0OworY2xhc3Mg
R2VvbWV0cnlUcmF2ZXJzYWxDb250ZXh0OwogY2xhc3MgSGl0VGVzdFJlcXVlc3Q7CiBjbGFzcyBI
aXRUZXN0UmVzdWx0OwogY2xhc3MgSGl0VGVzdGluZ1RyYW5zZm9ybVN0YXRlOwpAQCAtNjM5LDcg
KzYzOSw3IEBAIHB1YmxpYzoKICAgICAvLyBmcm9udC4gIFRoZSBoaXRUZXN0IG1ldGhvZCBsb29r
cyBmb3IgbW91c2UgZXZlbnRzIGJ5IHdhbGtpbmcKICAgICAvLyBsYXllcnMgdGhhdCBpbnRlcnNl
Y3QgdGhlIHBvaW50IGZyb20gZnJvbnQgdG8gYmFjay4KICAgICB2b2lkIHBhaW50KEdyYXBoaWNz
Q29udGV4dCYsIGNvbnN0IExheW91dFJlY3QmIGRhbWFnZVJlY3QsIGNvbnN0IExheW91dFNpemUm
IHN1YnBpeGVsT2Zmc2V0ID0gTGF5b3V0U2l6ZSgpLCBPcHRpb25TZXQ8UGFpbnRCZWhhdmlvcj4g
PSBQYWludEJlaGF2aW9yOjpOb3JtYWwsCi0gICAgICAgIFJlbmRlck9iamVjdCogc3VidHJlZVBh
aW50Um9vdCA9IG51bGxwdHIsIE9wdGlvblNldDxQYWludExheWVyRmxhZz4gPSB7IH0sIFNlY3Vy
aXR5T3JpZ2luUGFpbnRQb2xpY3kgPSBTZWN1cml0eU9yaWdpblBhaW50UG9saWN5OjpBbnlPcmln
aW4sIEV2ZW50UmVnaW9uQ29udGV4dCogPSBudWxscHRyKTsKKyAgICAgICAgUmVuZGVyT2JqZWN0
KiBzdWJ0cmVlUGFpbnRSb290ID0gbnVsbHB0ciwgT3B0aW9uU2V0PFBhaW50TGF5ZXJGbGFnPiA9
IHsgfSwgU2VjdXJpdHlPcmlnaW5QYWludFBvbGljeSA9IFNlY3VyaXR5T3JpZ2luUGFpbnRQb2xp
Y3k6OkFueU9yaWdpbiwgR2VvbWV0cnlUcmF2ZXJzYWxDb250ZXh0KiA9IG51bGxwdHIpOwogICAg
IFdFQkNPUkVfRVhQT1JUIGJvb2wgaGl0VGVzdChjb25zdCBIaXRUZXN0UmVxdWVzdCYsIEhpdFRl
c3RSZXN1bHQmKTsKICAgICBib29sIGhpdFRlc3QoY29uc3QgSGl0VGVzdFJlcXVlc3QmLCBjb25z
dCBIaXRUZXN0TG9jYXRpb24mLCBIaXRUZXN0UmVzdWx0Jik7CiAKQEAgLTkzMyw3ICs5MzMsNyBA
QCBwcml2YXRlOgogICAgICAgICBPcHRpb25TZXQ8UGFpbnRCZWhhdmlvcj4gcGFpbnRCZWhhdmlv
cjsKICAgICAgICAgYm9vbCByZXF1aXJlU2VjdXJpdHlPcmlnaW5BY2Nlc3NGb3JXaWRnZXRzOwog
ICAgICAgICBib29sIGNsaXBUb0RpcnR5UmVjdCB7IHRydWUgfTsKLSAgICAgICAgRXZlbnRSZWdp
b25Db250ZXh0KiBldmVudFJlZ2lvbkNvbnRleHQgeyBudWxscHRyIH07CisgICAgICAgIEdlb21l
dHJ5VHJhdmVyc2FsQ29udGV4dCogZ2VvbWV0cnlUcmF2ZXJzYWxDb250ZXh0IHsgbnVsbHB0ciB9
OwogICAgIH07CiAKICAgICBMYXlvdXRQb2ludCBwYWludE9mZnNldEZvclJlbmRlcmVyKGNvbnN0
IExheWVyRnJhZ21lbnQmIGZyYWdtZW50LCBjb25zdCBMYXllclBhaW50aW5nSW5mbyYgcGFpbnRp
bmdJbmZvKSBjb25zdApAQCAtOTU5LDcgKzk1OSw3IEBAIHByaXZhdGU6CiAKICAgICBMYXlvdXRS
ZWN0IGNsaXBSZWN0UmVsYXRpdmVUb0FuY2VzdG9yKFJlbmRlckxheWVyKiBhbmNlc3RvciwgTGF5
b3V0U2l6ZSBvZmZzZXRGcm9tQW5jZXN0b3IsIGNvbnN0IExheW91dFJlY3QmIGNvbnN0cmFpbmlu
Z1JlY3QpIGNvbnN0OwogCi0gICAgdm9pZCBjbGlwVG9SZWN0KEdyYXBoaWNzQ29udGV4dCYsIEdy
YXBoaWNzQ29udGV4dFN0YXRlU2F2ZXImLCBFdmVudFJlZ2lvbkNvbnRleHRTdGF0ZVNhdmVyJiwg
Y29uc3QgTGF5ZXJQYWludGluZ0luZm8mLCBPcHRpb25TZXQ8UGFpbnRCZWhhdmlvcj4sIGNvbnN0
IENsaXBSZWN0JiwgQm9yZGVyUmFkaXVzQ2xpcHBpbmdSdWxlID0gSW5jbHVkZVNlbGZGb3JCb3Jk
ZXJSYWRpdXMpOworICAgIHZvaWQgY2xpcFRvUmVjdChHcmFwaGljc0NvbnRleHQmLCBHcmFwaGlj
c0NvbnRleHRTdGF0ZVNhdmVyJiwgR2VvbWV0cnlUcmF2ZXJzYWxDb250ZXh0U3RhdGVTYXZlciYs
IGNvbnN0IExheWVyUGFpbnRpbmdJbmZvJiwgT3B0aW9uU2V0PFBhaW50QmVoYXZpb3I+LCBjb25z
dCBDbGlwUmVjdCYsIEJvcmRlclJhZGl1c0NsaXBwaW5nUnVsZSA9IEluY2x1ZGVTZWxmRm9yQm9y
ZGVyUmFkaXVzKTsKIAogICAgIGJvb2wgc2hvdWxkUmVwYWludEFmdGVyTGF5b3V0KCkgY29uc3Q7
CiAKQEAgLTEwNzYsNyArMTA3Niw3IEBAIHByaXZhdGU6CiAKICAgICBzdGQ6OnBhaXI8UGF0aCwg
V2luZFJ1bGU+IGNvbXB1dGVDbGlwUGF0aChjb25zdCBMYXlvdXRTaXplJiBvZmZzZXRGcm9tUm9v
dCwgY29uc3QgTGF5b3V0UmVjdCYgcm9vdFJlbGF0aXZlQm91bmRzRm9yTm9uQm94ZXMpIGNvbnN0
OwogCi0gICAgdm9pZCBzZXR1cENsaXBQYXRoKEdyYXBoaWNzQ29udGV4dCYsIEdyYXBoaWNzQ29u
dGV4dFN0YXRlU2F2ZXImLCBFdmVudFJlZ2lvbkNvbnRleHRTdGF0ZVNhdmVyJiwgY29uc3QgTGF5
ZXJQYWludGluZ0luZm8mLCBPcHRpb25TZXQ8UGFpbnRMYXllckZsYWc+LCBjb25zdCBMYXlvdXRT
aXplJiBvZmZzZXRGcm9tUm9vdCk7CisgICAgdm9pZCBzZXR1cENsaXBQYXRoKEdyYXBoaWNzQ29u
dGV4dCYsIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXImLCBHZW9tZXRyeVRyYXZlcnNhbENvbnRl
eHRTdGF0ZVNhdmVyJiwgY29uc3QgTGF5ZXJQYWludGluZ0luZm8mLCBPcHRpb25TZXQ8UGFpbnRM
YXllckZsYWc+LCBjb25zdCBMYXlvdXRTaXplJiBvZmZzZXRGcm9tUm9vdCk7CiAKICAgICB2b2lk
IGVuc3VyZUxheWVyRmlsdGVycygpOwogICAgIHZvaWQgY2xlYXJMYXllckZpbHRlcnMoKTsKQEAg
LTExMDgsNiArMTEwOCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBwYWludENoaWxkQ2xpcHBpbmdN
YXNrRm9yRnJhZ21lbnRzKGNvbnN0IExheWVyRnJhZ21lbnRzJiwgR3JhcGhpY3NDb250ZXh0Jiwg
Y29uc3QgTGF5ZXJQYWludGluZ0luZm8mLCBPcHRpb25TZXQ8UGFpbnRCZWhhdmlvcj4sIFJlbmRl
ck9iamVjdCogcGFpbnRpbmdSb290Rm9yUmVuZGVyZXIpOwogICAgIHZvaWQgcGFpbnRUcmFuc2Zv
cm1lZExheWVySW50b0ZyYWdtZW50cyhHcmFwaGljc0NvbnRleHQmLCBjb25zdCBMYXllclBhaW50
aW5nSW5mbyYsIE9wdGlvblNldDxQYWludExheWVyRmxhZz4pOwogICAgIHZvaWQgY29sbGVjdEV2
ZW50UmVnaW9uRm9yRnJhZ21lbnRzKGNvbnN0IExheWVyRnJhZ21lbnRzJiwgR3JhcGhpY3NDb250
ZXh0JiwgY29uc3QgTGF5ZXJQYWludGluZ0luZm8mLCBPcHRpb25TZXQ8UGFpbnRCZWhhdmlvcj4p
OworICAgIHZvaWQgY29sbGVjdEFjY2Vzc2liaWxpdHlSZWN0c0ZvckZyYWdtZW50cyhjb25zdCBM
YXllckZyYWdtZW50cyYsIEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IExheWVyUGFpbnRpbmdJbmZv
JiwgT3B0aW9uU2V0PFBhaW50QmVoYXZpb3I+KTsKIAogICAgIFJlbmRlckxheWVyKiB0cmFuc3Bh
cmVudFBhaW50aW5nQW5jZXN0b3IoKTsKICAgICB2b2lkIGJlZ2luVHJhbnNwYXJlbmN5TGF5ZXJz
KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IExheWVyUGFpbnRpbmdJbmZvJiwgY29uc3QgTGF5b3V0
UmVjdCYgZGlydHlSZWN0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJMYXllckJhY2tpbmcuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxh
eWVyQmFja2luZy5jcHAKaW5kZXggZjExZjk3OWJmYmU0Li5mYWUxMWMyOWM5YTAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwCkBAIC0zNDA4
LDcgKzM0MDgsNyBAQCB2b2lkIFJlbmRlckxheWVyQmFja2luZzo6c2V0Q29udGVudHNOZWVkRGlz
cGxheUluUmVjdChjb25zdCBMYXlvdXRSZWN0JiByLCBHcmFwaAogCiB2b2lkIFJlbmRlckxheWVy
QmFja2luZzo6cGFpbnRJbnRvTGF5ZXIoY29uc3QgR3JhcGhpY3NMYXllciogZ3JhcGhpY3NMYXll
ciwgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LAogICAgIGNvbnN0IEludFJlY3QmIHBhaW50RGly
dHlSZWN0LCAvLyBJbiB0aGUgY29vcmRzIG9mIHJvb3RMYXllci4KLSAgICBPcHRpb25TZXQ8UGFp
bnRCZWhhdmlvcj4gcGFpbnRCZWhhdmlvciwgRXZlbnRSZWdpb25Db250ZXh0KiBldmVudFJlZ2lv
bkNvbnRleHQpCisgICAgT3B0aW9uU2V0PFBhaW50QmVoYXZpb3I+IHBhaW50QmVoYXZpb3IsIEdl
b21ldHJ5VHJhdmVyc2FsQ29udGV4dCogZ2VvbWV0cnlUcmF2ZXJzYWxDb250ZXh0KQogewogI2lm
IFVTRShPV05JTkdfTEFZRVJfQkVBUl9UUkFQKQogICAgIFJFTEVBU0VfQVNTRVJUX1dJVEhfTUVT
U0FHRShtX293bmluZ0xheWVyQmVhclRyYXAgPT0gQkVBUl9UUkFQX1ZBTFVFLCAiUmVuZGVyTGF5
ZXJCYWNraW5nOjpwYWludEludG9MYXllcigpOiBtX293bmluZ0xheWVyQmVhclRyYXAgY2F1Z2h0
IHRoZSBiZWFyICg1NTY5OTI5MikiKTsKQEAgLTM0MjcsMzMgKzM0MjcsMzMgQEAgdm9pZCBSZW5k
ZXJMYXllckJhY2tpbmc6OnBhaW50SW50b0xheWVyKGNvbnN0IEdyYXBoaWNzTGF5ZXIqIGdyYXBo
aWNzTGF5ZXIsIEdyYXAKIAogICAgIGF1dG8gcGFpbnRGbGFncyA9IHBhaW50RmxhZ3NGb3JMYXll
cigqZ3JhcGhpY3NMYXllcik7CiAKLSAgICBpZiAoZXZlbnRSZWdpb25Db250ZXh0KQorICAgIGlm
IChpczxFdmVudFJlZ2lvbkNvbnRleHQ+KGdlb21ldHJ5VHJhdmVyc2FsQ29udGV4dCkpCiAgICAg
ICAgIHBhaW50RmxhZ3MuYWRkKFJlbmRlckxheWVyOjpQYWludExheWVyRmxhZzo6Q29sbGVjdGlu
Z0V2ZW50UmVnaW9uKTsKIAogICAgIFJlbmRlck9iamVjdDo6U2V0TGF5b3V0TmVlZGVkRm9yYmlk
ZGVuU2NvcGUgZm9yYmlkU2V0TmVlZHNMYXlvdXQocmVuZGVyZXIoKSk7CiAKICAgICBhdXRvIHBh
aW50T25lTGF5ZXIgPSBbJl0oUmVuZGVyTGF5ZXImIGxheWVyLCBPcHRpb25TZXQ8UmVuZGVyTGF5
ZXI6OlBhaW50TGF5ZXJGbGFnPiBwYWludEZsYWdzKSB7CiAgICAgICAgIExvY2FsRnJhbWVWaWV3
OjpQYWludGluZ1N0YXRlIHBhaW50aW5nU3RhdGU7Ci0gICAgICAgIGlmICghZXZlbnRSZWdpb25D
b250ZXh0KSB7CisgICAgICAgIGlmICghZ2VvbWV0cnlUcmF2ZXJzYWxDb250ZXh0KSB7CiAgICAg
ICAgICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxQYWludChsYXllci5yZW5kZXJl
cigpKTsKIAogICAgICAgICAgICAgaWYgKGxheWVyLmlzUmVuZGVyVmlld0xheWVyKCkpCi0gICAg
ICAgICAgICAgICAgcmVuZGVyZXIoKS52aWV3KCkuZnJhbWVWaWV3KCkud2lsbFBhaW50Q29udGVu
dHMoY29udGV4dCwgcGFpbnREaXJ0eVJlY3QsIHBhaW50aW5nU3RhdGUpOworICAgICAgICAgICAg
ICAgIHJlbmRlcmVyKCkudmlldygpLmZyYW1lVmlldygpLndpbGxQYWludENvbnRlbnRzKGNvbnRl
eHQsIHBhaW50RGlydHlSZWN0LCBwYWludGluZ1N0YXRlLCBnZW9tZXRyeVRyYXZlcnNhbENvbnRl
eHQpOwogICAgICAgICB9CiAKICAgICAgICAgUmVuZGVyTGF5ZXI6OkxheWVyUGFpbnRpbmdJbmZv
IHBhaW50aW5nSW5mbygmbV9vd25pbmdMYXllciwgcGFpbnREaXJ0eVJlY3QsIHBhaW50QmVoYXZp
b3IsIC1tX3N1YnBpeGVsT2Zmc2V0RnJvbVJlbmRlcmVyKTsKLSAgICAgICAgcGFpbnRpbmdJbmZv
LmV2ZW50UmVnaW9uQ29udGV4dCA9IGV2ZW50UmVnaW9uQ29udGV4dDsKKyAgICAgICAgcGFpbnRp
bmdJbmZvLmdlb21ldHJ5VHJhdmVyc2FsQ29udGV4dCA9IGdlb21ldHJ5VHJhdmVyc2FsQ29udGV4
dDsKIAogICAgICAgICBpZiAoJmxheWVyID09ICZtX293bmluZ0xheWVyKSB7CiAgICAgICAgICAg
ICBsYXllci5wYWludExheWVyQ29udGVudHMoY29udGV4dCwgcGFpbnRpbmdJbmZvLCBwYWludEZs
YWdzKTsKIAogICAgICAgICAgICAgYXV0byogc2Nyb2xsYWJsZUFyZWEgPSBsYXllci5zY3JvbGxh
YmxlQXJlYSgpOwotICAgICAgICAgICAgaWYgKHNjcm9sbGFibGVBcmVhICYmIHNjcm9sbGFibGVB
cmVhLT5jb250YWluc0RpcnR5T3ZlcmxheVNjcm9sbGJhcnMoKSAmJiAhZXZlbnRSZWdpb25Db250
ZXh0KQorICAgICAgICAgICAgaWYgKHNjcm9sbGFibGVBcmVhICYmIHNjcm9sbGFibGVBcmVhLT5j
b250YWluc0RpcnR5T3ZlcmxheVNjcm9sbGJhcnMoKSAmJiAhZ2VvbWV0cnlUcmF2ZXJzYWxDb250
ZXh0KQogICAgICAgICAgICAgICAgIGxheWVyLnBhaW50TGF5ZXJDb250ZW50cyhjb250ZXh0LCBw
YWludGluZ0luZm8sIHBhaW50RmxhZ3MgfCBSZW5kZXJMYXllcjo6UGFpbnRMYXllckZsYWc6OlBh
aW50aW5nT3ZlcmxheVNjcm9sbGJhcnMpOwogICAgICAgICB9IGVsc2UKICAgICAgICAgICAgIGxh
eWVyLnBhaW50TGF5ZXJXaXRoRWZmZWN0cyhjb250ZXh0LCBwYWludGluZ0luZm8sIHBhaW50Rmxh
Z3MpOwogCi0gICAgICAgIGlmICghZXZlbnRSZWdpb25Db250ZXh0KSB7CisgICAgICAgIGlmICgh
Z2VvbWV0cnlUcmF2ZXJzYWxDb250ZXh0KSB7CiAgICAgICAgICAgICBpZiAobGF5ZXIuaXNSZW5k
ZXJWaWV3TGF5ZXIoKSkKICAgICAgICAgICAgICAgICByZW5kZXJlcigpLnZpZXcoKS5mcmFtZVZp
ZXcoKS5kaWRQYWludENvbnRlbnRzKGNvbnRleHQsIHBhaW50RGlydHlSZWN0LCBwYWludGluZ1N0
YXRlKTsKIApAQCAtMzQ3NSwxNCArMzQ3NSwxNCBAQCB2b2lkIFJlbmRlckxheWVyQmFja2luZzo6
cGFpbnRJbnRvTGF5ZXIoY29uc3QgR3JhcGhpY3NMYXllciogZ3JhcGhpY3NMYXllciwgR3JhcAog
CiAgICAgICAgIGlmIChncmFwaGljc0xheWVyLT5wYWludGluZ1BoYXNlKCkuY29udGFpbnMoR3Jh
cGhpY3NMYXllclBhaW50aW5nUGhhc2U6Ok92ZXJmbG93Q29udGVudHMpKQogICAgICAgICAgICAg
c2hhcmluZ0xheWVyUGFpbnRGbGFncy5hZGQoUmVuZGVyTGF5ZXI6OlBhaW50TGF5ZXJGbGFnOjpQ
YWludGluZ092ZXJmbG93Q29udGVudHMpOwotICAgICAgICBpZiAoZXZlbnRSZWdpb25Db250ZXh0
KQorICAgICAgICBpZiAoaXM8RXZlbnRSZWdpb25Db250ZXh0PihnZW9tZXRyeVRyYXZlcnNhbENv
bnRleHQpKQogICAgICAgICAgICAgc2hhcmluZ0xheWVyUGFpbnRGbGFncy5hZGQoUmVuZGVyTGF5
ZXI6OlBhaW50TGF5ZXJGbGFnOjpDb2xsZWN0aW5nRXZlbnRSZWdpb24pOwogCiAgICAgICAgIGZv
ciAoYXV0byYgbGF5ZXJXZWFrUHRyIDogbV9iYWNraW5nU2hhcmluZ0xheWVycykKICAgICAgICAg
ICAgIHBhaW50T25lTGF5ZXIoKmxheWVyV2Vha1B0ciwgc2hhcmluZ0xheWVyUGFpbnRGbGFncyk7
CiAgICAgfQogCi0gICAgaWYgKCFldmVudFJlZ2lvbkNvbnRleHQpCisgICAgaWYgKCFnZW9tZXRy
eVRyYXZlcnNhbENvbnRleHQpCiAgICAgICAgIGNvbXBvc2l0b3IoKS5kaWRQYWludEJhY2tpbmco
dGhpcyk7CiAKICNpZiBVU0UoT1dOSU5HX0xBWUVSX0JFQVJfVFJBUCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuaCBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuaAppbmRleCBjMDRiOTNkNmI1OGYuLjZm
NzdhZWUxODE1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxh
eWVyQmFja2luZy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJh
Y2tpbmcuaApAQCAtMzUsOCArMzUsOCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNz
IEV2ZW50UmVnaW9uQ29udGV4dDsKIGNsYXNzIEtleWZyYW1lTGlzdDsKK2NsYXNzIEdlb21ldHJ5
VHJhdmVyc2FsQ29udGV4dDsKIGNsYXNzIFBhaW50ZWRDb250ZW50c0luZm87CiBjbGFzcyBSZW5k
ZXJMYXllckNvbXBvc2l0b3I7CiBjbGFzcyBUaWxlZEJhY2tpbmc7CkBAIC0zOTYsNyArMzk2LDcg
QEAgcHJpdmF0ZToKICAgICBib29sIGhhc1RpbGVkQmFja2luZ0ZsYXR0ZW5pbmdMYXllcigpIGNv
bnN0IHsgcmV0dXJuIChtX2NoaWxkQ29udGFpbm1lbnRMYXllciAmJiBtX2lzRnJhbWVMYXllcldp
dGhUaWxlZEJhY2tpbmcpOyB9CiAgICAgR3JhcGhpY3NMYXllciogdGlsZUNhY2hlRmxhdHRlbmlu
Z0xheWVyKCkgY29uc3QgeyByZXR1cm4gbV9pc0ZyYW1lTGF5ZXJXaXRoVGlsZWRCYWNraW5nID8g
bV9jaGlsZENvbnRhaW5tZW50TGF5ZXIuZ2V0KCkgOiBudWxscHRyOyB9CiAKLSAgICB2b2lkIHBh
aW50SW50b0xheWVyKGNvbnN0IEdyYXBoaWNzTGF5ZXIqLCBHcmFwaGljc0NvbnRleHQmLCBjb25z
dCBJbnRSZWN0JiBwYWludERpcnR5UmVjdCwgT3B0aW9uU2V0PFBhaW50QmVoYXZpb3I+LCBFdmVu
dFJlZ2lvbkNvbnRleHQqID0gbnVsbHB0cik7CisgICAgdm9pZCBwYWludEludG9MYXllcihjb25z
dCBHcmFwaGljc0xheWVyKiwgR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgSW50UmVjdCYgcGFpbnRE
aXJ0eVJlY3QsIE9wdGlvblNldDxQYWludEJlaGF2aW9yPiwgR2VvbWV0cnlUcmF2ZXJzYWxDb250
ZXh0KiA9IG51bGxwdHIpOwogICAgIE9wdGlvblNldDxSZW5kZXJMYXllcjo6UGFpbnRMYXllckZs
YWc+IHBhaW50RmxhZ3NGb3JMYXllcihjb25zdCBHcmFwaGljc0xheWVyJikgY29uc3Q7CiAgICAg
CiAgICAgdm9pZCBwYWludERlYnVnT3ZlcmxheXMoY29uc3QgR3JhcGhpY3NMYXllciosIEdyYXBo
aWNzQ29udGV4dCYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckxpc3RNYXJrZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RNYXJr
ZXIuY3BwCmluZGV4IDI0NmVjZTI3M2EzZS4uNjM1NmNiZGMyMmNjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdE1hcmtlci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RNYXJrZXIuY3BwCkBAIC0xNTg0LDcgKzE1ODQsNyBA
QCBhdXRvIFJlbmRlckxpc3RNYXJrZXI6OnRleHRSdW4oKSBjb25zdCAtPiBUZXh0UnVuV2l0aFVu
ZGVybHlpbmdTdHJpbmcKIAogdm9pZCBSZW5kZXJMaXN0TWFya2VyOjpwYWludChQYWludEluZm8m
IHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50T2Zmc2V0KQogewotICAgIGlmIChw
YWludEluZm8ucGhhc2UgIT0gUGFpbnRQaGFzZTo6Rm9yZWdyb3VuZCkKKyAgICBpZiAocGFpbnRJ
bmZvLnBoYXNlICE9IFBhaW50UGhhc2U6OkZvcmVncm91bmQgJiYgcGFpbnRJbmZvLnBoYXNlICE9
IFBhaW50UGhhc2U6OkFjY2Vzc2liaWxpdHkpCiAgICAgICAgIHJldHVybjsKICAgICAKICAgICBp
ZiAoc3R5bGUoKS52aXNpYmlsaXR5KCkgIT0gVmlzaWJpbGl0eTo6VmlzaWJsZSkKQEAgLTE2MDAs
NiArMTYwMCwxMiBAQCB2b2lkIFJlbmRlckxpc3RNYXJrZXI6OnBhaW50KFBhaW50SW5mbyYgcGFp
bnRJbmZvLCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbnRPZmZzZQogICAgIAogICAgIGF1dG8gbWFy
a2VyUmVjdCA9IHJlbGF0aXZlTWFya2VyUmVjdCgpOwogICAgIG1hcmtlclJlY3QubW92ZUJ5KGJv
eE9yaWdpbik7CisKKyAgICBpZiAocGFpbnRJbmZvLnBoYXNlID09IFBhaW50UGhhc2U6OkFjY2Vz
c2liaWxpdHkpIHsKKyAgICAgICAgcGFpbnRJbmZvLmFjY2Vzc2liaWxpdHlHZW9tZXRyeVRyYXZl
cnNhbENvbnRleHQoKS0+dGFrZUJvdW5kcygqdGhpcywgbWFya2VyUmVjdCk7CisgICAgICAgIHJl
dHVybjsKKyAgICB9CisKICAgICBpZiAobWFya2VyUmVjdC5pc0VtcHR5KCkpCiAgICAgICAgIHJl
dHVybjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJlcGxh
Y2VkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSZXBsYWNlZC5jcHAKaW5k
ZXggMTM0MTYxYTE2YTY1Li4yOWNmYWI1MzYzNjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJSZXBsYWNlZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlclJlcGxhY2VkLmNwcApAQCAtMjE3LDExICsyMTcsMTYgQEAgdm9pZCBSZW5kZXJS
ZXBsYWNlZDo6cGFpbnQoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFBvaW50JiBw
YWludE9mZnNldCkKICAgICAgICAgaWYgKHZpc2libGVUb0hpdFRlc3RpbmcoKSkgewogICAgICAg
ICAgICAgYXV0byBib3JkZXJSZWN0ID0gTGF5b3V0UmVjdChhZGp1c3RlZFBhaW50T2Zmc2V0LCBz
aXplKCkpOwogICAgICAgICAgICAgYXV0byBib3JkZXJSZWdpb24gPSBhcHByb3hpbWF0ZUFzUmVn
aW9uKHN0eWxlKCkuZ2V0Um91bmRlZEJvcmRlckZvcihib3JkZXJSZWN0KSk7Ci0gICAgICAgICAg
ICBwYWludEluZm8uZXZlbnRSZWdpb25Db250ZXh0LT51bml0ZShib3JkZXJSZWdpb24sICp0aGlz
LCBzdHlsZSgpKTsKKyAgICAgICAgICAgIHBhaW50SW5mby5ldmVudFJlZ2lvbkNvbnRleHQoKS0+
dW5pdGUoYm9yZGVyUmVnaW9uLCAqdGhpcywgc3R5bGUoKSk7CiAgICAgICAgIH0KICAgICAgICAg
cmV0dXJuOwogICAgIH0KIAorICAgIGlmIChwYWludEluZm8ucGhhc2UgPT0gUGFpbnRQaGFzZTo6
QWNjZXNzaWJpbGl0eSkgeworICAgICAgICBwYWludEluZm8uYWNjZXNzaWJpbGl0eUdlb21ldHJ5
VHJhdmVyc2FsQ29udGV4dCgpLT50YWtlQm91bmRzKCp0aGlzLCBGbG9hdFJlY3QoYWRqdXN0ZWRQ
YWludE9mZnNldCwgc2l6ZSgpKSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKICAgICBTZXRM
YXlvdXROZWVkZWRGb3JiaWRkZW5TY29wZSBzY29wZSgqdGhpcyk7CiAKICAgICBHcmFwaGljc0Nv
bnRleHRTdGF0ZVNhdmVyIHNhdmVkR3JhcGhpY3NDb250ZXh0KHBhaW50SW5mby5jb250ZXh0KCks
IGZhbHNlKTsKQEAgLTMxMSw3ICszMTYsOCBAQCBib29sIFJlbmRlclJlcGxhY2VkOjpzaG91bGRQ
YWludChQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50TwogICAg
ICAgICAmJiBwYWludEluZm8ucGhhc2UgIT0gUGFpbnRQaGFzZTo6U2VsZk91dGxpbmUKICAgICAg
ICAgJiYgcGFpbnRJbmZvLnBoYXNlICE9IFBhaW50UGhhc2U6OlNlbGVjdGlvbgogICAgICAgICAm
JiBwYWludEluZm8ucGhhc2UgIT0gUGFpbnRQaGFzZTo6TWFzawotICAgICAgICAmJiBwYWludElu
Zm8ucGhhc2UgIT0gUGFpbnRQaGFzZTo6RXZlbnRSZWdpb24pCisgICAgICAgICYmIHBhaW50SW5m
by5waGFzZSAhPSBQYWludFBoYXNlOjpFdmVudFJlZ2lvbgorICAgICAgICAmJiBwYWludEluZm8u
cGhhc2UgIT0gUGFpbnRQaGFzZTo6QWNjZXNzaWJpbGl0eSkKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogCiAgICAgaWYgKCFwYWludEluZm8uc2hvdWxkUGFpbnRXaXRoaW5Sb290KCp0aGlzKSkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTY3JvbGxiYXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNjcm9sbGJhci5jcHAKaW5kZXggMDIwYzhl
YzI5NTYyLi4xZDFkMGI1NGQwNWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJTY3JvbGxiYXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJTY3JvbGxiYXIuY3BwCkBAIC0xMDAsNyArMTAwLDcgQEAgdm9pZCBSZW5kZXJTY3JvbGxiYXI6
OnN0eWxlQ2hhbmdlZCgpCiAgICAgdXBkYXRlU2Nyb2xsYmFyUGFydHMoKTsKIH0KIAotdm9pZCBS
ZW5kZXJTY3JvbGxiYXI6OnBhaW50KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgSW50
UmVjdCYgZGFtYWdlUmVjdCwgV2lkZ2V0OjpTZWN1cml0eU9yaWdpblBhaW50UG9saWN5LCBFdmVu
dFJlZ2lvbkNvbnRleHQqKQordm9pZCBSZW5kZXJTY3JvbGxiYXI6OnBhaW50KEdyYXBoaWNzQ29u
dGV4dCYgY29udGV4dCwgY29uc3QgSW50UmVjdCYgZGFtYWdlUmVjdCwgV2lkZ2V0OjpTZWN1cml0
eU9yaWdpblBhaW50UG9saWN5LCBHZW9tZXRyeVRyYXZlcnNhbENvbnRleHQqKQogewogICAgIGlm
IChjb250ZXh0LmludmFsaWRhdGluZ0NvbnRyb2xUaW50cygpKSB7CiAgICAgICAgIHVwZGF0ZVNj
cm9sbGJhclBhcnRzKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyU2Nyb2xsYmFyLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU2Nyb2xsYmFy
LmgKaW5kZXggZDQ2NTVjZjE3NWQzLi43YWM1MTBkYzViYTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTY3JvbGxiYXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyU2Nyb2xsYmFyLmgKQEAgLTY4LDcgKzY4LDcgQEAgcHJpdmF0ZToKICAg
ICB2b2lkIHNldFBhcmVudChTY3JvbGxWaWV3Kikgb3ZlcnJpZGU7CiAgICAgdm9pZCBzZXRFbmFi
bGVkKGJvb2wpIG92ZXJyaWRlOwogCi0gICAgdm9pZCBwYWludChHcmFwaGljc0NvbnRleHQmLCBj
b25zdCBJbnRSZWN0JiBkYW1hZ2VSZWN0LCBXaWRnZXQ6OlNlY3VyaXR5T3JpZ2luUGFpbnRQb2xp
Y3ksIEV2ZW50UmVnaW9uQ29udGV4dCopIG92ZXJyaWRlOworICAgIHZvaWQgcGFpbnQoR3JhcGhp
Y3NDb250ZXh0JiwgY29uc3QgSW50UmVjdCYgZGFtYWdlUmVjdCwgV2lkZ2V0OjpTZWN1cml0eU9y
aWdpblBhaW50UG9saWN5LCBHZW9tZXRyeVRyYXZlcnNhbENvbnRleHQqKSBvdmVycmlkZTsKIAog
ICAgIHZvaWQgc2V0SG92ZXJlZFBhcnQoU2Nyb2xsYmFyUGFydCkgb3ZlcnJpZGU7CiAgICAgdm9p
ZCBzZXRQcmVzc2VkUGFydChTY3JvbGxiYXJQYXJ0KSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJXaWRnZXQuY3BwIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlcldpZGdldC5jcHAKaW5kZXggMGQ0ZTA3MDE2ODIzLi5iMDc0MTM5NmIw
MDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJXaWRnZXQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJXaWRnZXQuY3BwCkBAIC0yNjMs
MTcgKzI2MywxNyBAQCB2b2lkIFJlbmRlcldpZGdldDo6cGFpbnRDb250ZW50cyhQYWludEluZm8m
IHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50TwogICAgICAgICBwYWludFJlY3Qu
bW92ZSgtd2lkZ2V0UGFpbnRPZmZzZXQpOwogICAgIH0KIAotICAgIGlmIChwYWludEluZm8uZXZl
bnRSZWdpb25Db250ZXh0KSB7CisgICAgaWYgKHBhaW50SW5mby5nZW9tZXRyeVRyYXZlcnNhbENv
bnRleHQpIHsKICAgICAgICAgQWZmaW5lVHJhbnNmb3JtIHRyYW5zZm9ybTsKICAgICAgICAgdHJh
bnNmb3JtLnRyYW5zbGF0ZShjb250ZW50UGFpbnRPZmZzZXQpOwotICAgICAgICBwYWludEluZm8u
ZXZlbnRSZWdpb25Db250ZXh0LT5wdXNoVHJhbnNmb3JtKHRyYW5zZm9ybSk7CisgICAgICAgIHBh
aW50SW5mby5nZW9tZXRyeVRyYXZlcnNhbENvbnRleHQtPnB1c2hUcmFuc2Zvcm0odHJhbnNmb3Jt
KTsKICAgICB9CiAKICAgICAvLyBGSVhNRTogUmVtb3ZlIHJlcGFpbnRyZWN0IGVuY2xvc2luZy9p
bnRlZ3JhbCBzbmFwcGluZyB3aGVuIFJlbmRlcldpZGdldCBiZWNvbWVzIGRldmljZSBwaXhlbCBz
bmFwcGVkLgotICAgIG1fd2lkZ2V0LT5wYWludChwYWludEluZm8uY29udGV4dCgpLCBzbmFwcGVk
SW50UmVjdChwYWludFJlY3QpLCBwYWludEluZm8ucmVxdWlyZVNlY3VyaXR5T3JpZ2luQWNjZXNz
Rm9yV2lkZ2V0cyA/IFdpZGdldDo6U2VjdXJpdHlPcmlnaW5QYWludFBvbGljeTo6QWNjZXNzaWJs
ZU9yaWdpbk9ubHkgOiBXaWRnZXQ6OlNlY3VyaXR5T3JpZ2luUGFpbnRQb2xpY3k6OkFueU9yaWdp
biwgcGFpbnRJbmZvLmV2ZW50UmVnaW9uQ29udGV4dCk7CisgICAgbV93aWRnZXQtPnBhaW50KHBh
aW50SW5mby5jb250ZXh0KCksIHNuYXBwZWRJbnRSZWN0KHBhaW50UmVjdCksIHBhaW50SW5mby5y
ZXF1aXJlU2VjdXJpdHlPcmlnaW5BY2Nlc3NGb3JXaWRnZXRzID8gV2lkZ2V0OjpTZWN1cml0eU9y
aWdpblBhaW50UG9saWN5OjpBY2Nlc3NpYmxlT3JpZ2luT25seSA6IFdpZGdldDo6U2VjdXJpdHlP
cmlnaW5QYWludFBvbGljeTo6QW55T3JpZ2luLCBwYWludEluZm8uZ2VvbWV0cnlUcmF2ZXJzYWxD
b250ZXh0KTsKIAotICAgIGlmIChwYWludEluZm8uZXZlbnRSZWdpb25Db250ZXh0KQotICAgICAg
ICBwYWludEluZm8uZXZlbnRSZWdpb25Db250ZXh0LT5wb3BUcmFuc2Zvcm0oKTsKKyAgICBpZiAo
cGFpbnRJbmZvLmdlb21ldHJ5VHJhdmVyc2FsQ29udGV4dCkKKyAgICAgICAgcGFpbnRJbmZvLmdl
b21ldHJ5VHJhdmVyc2FsQ29udGV4dC0+cG9wVHJhbnNmb3JtKCk7CiAKICAgICBpZiAoIXdpZGdl
dFBhaW50T2Zmc2V0LmlzWmVybygpKQogICAgICAgICBwYWludEluZm8uY29udGV4dCgpLnRyYW5z
bGF0ZSgtd2lkZ2V0UGFpbnRPZmZzZXQpOwpAQCAtMzM3LDcgKzMzNyw3IEBAIHZvaWQgUmVuZGVy
V2lkZ2V0OjpwYWludChQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQmIHBh
aW50T2Zmc2V0KQogICAgIGlmIChzdHlsZSgpLmhhc0JvcmRlclJhZGl1cygpKQogICAgICAgICBw
YWludEluZm8uY29udGV4dCgpLnJlc3RvcmUoKTsKIAotICAgIGlmIChwYWludEluZm8ucGhhc2Ug
PT0gUGFpbnRQaGFzZTo6RXZlbnRSZWdpb24pCisgICAgaWYgKHBhaW50SW5mby5waGFzZSA9PSBQ
YWludFBoYXNlOjpFdmVudFJlZ2lvbiB8fCBwYWludEluZm8ucGhhc2UgPT0gUGFpbnRQaGFzZTo6
QWNjZXNzaWJpbGl0eSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgLy8gUGFpbnQgYSBwYXJ0aWFs
bHkgdHJhbnNwYXJlbnQgd2FzaCBvdmVyIHNlbGVjdGVkIHdpZGdldHMuCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvVGV4dEJveFBhaW50ZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1RleHRCb3hQYWludGVyLmNwcAppbmRleCAwODliOGU1ZGFkMmEuLjk0ZWQ5
ZDdiMzc2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1RleHRCb3hQYWlu
dGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvVGV4dEJveFBhaW50ZXIuY3Bw
CkBAIC04MSw3ICs4MSw3IEBAIFRleHRCb3hQYWludGVyPFRleHRCb3hQYXRoPjo6VGV4dEJveFBh
aW50ZXIoVGV4dEJveFBhdGgmJiB0ZXh0Qm94LCBQYWludEluZm8mIHBhCiAgICAgLCBtX3VzZUN1
c3RvbVVuZGVybGluZXMobV9jb250YWluc0NvbXBvc2l0aW9uICYmIG1fcmVuZGVyZXIuZnJhbWUo
KS5lZGl0b3IoKS5jb21wb3NpdGlvblVzZXNDdXN0b21VbmRlcmxpbmVzKCkpCiAgICAgLCBtX2Vt
cGhhc2lzTWFya0V4aXN0c0FuZElzQWJvdmUoUmVuZGVyVGV4dDo6ZW1waGFzaXNNYXJrRXhpc3Rz
QW5kSXNBYm92ZShtX3JlbmRlcmVyLCBtX3N0eWxlKSkKIHsKLSAgICBBU1NFUlQocGFpbnRJbmZv
LnBoYXNlID09IFBhaW50UGhhc2U6OkZvcmVncm91bmQgfHwgcGFpbnRJbmZvLnBoYXNlID09IFBh
aW50UGhhc2U6OlNlbGVjdGlvbiB8fCBwYWludEluZm8ucGhhc2UgPT0gUGFpbnRQaGFzZTo6VGV4
dENsaXAgfHwgcGFpbnRJbmZvLnBoYXNlID09IFBhaW50UGhhc2U6OkV2ZW50UmVnaW9uKTsKKyAg
ICBBU1NFUlQocGFpbnRJbmZvLnBoYXNlID09IFBhaW50UGhhc2U6OkZvcmVncm91bmQgfHwgcGFp
bnRJbmZvLnBoYXNlID09IFBhaW50UGhhc2U6OlNlbGVjdGlvbiB8fCBwYWludEluZm8ucGhhc2Ug
PT0gUGFpbnRQaGFzZTo6VGV4dENsaXAgfHwgcGFpbnRJbmZvLnBoYXNlID09IFBhaW50UGhhc2U6
OkV2ZW50UmVnaW9uIHx8IHBhaW50SW5mby5waGFzZSA9PSBQYWludFBoYXNlOjpBY2Nlc3NpYmls
aXR5KTsKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgVGV4dEJveFBhdGg+CkBAIC0xMDUsNyArMTA1
LDcgQEAgdm9pZCBUZXh0Qm94UGFpbnRlcjxUZXh0Qm94UGF0aD46OnBhaW50KCkKICAgICBpZiAo
bV9wYWludEluZm8ucGhhc2UgPT0gUGFpbnRQaGFzZTo6RXZlbnRSZWdpb24pIHsKICAgICAgICAg
Y29uc3RleHByIE9wdGlvblNldDxIaXRUZXN0UmVxdWVzdDo6VHlwZT4gaGl0VHlwZSB7IEhpdFRl
c3RSZXF1ZXN0OjpUeXBlOjpJZ25vcmVDU1NQb2ludGVyRXZlbnRzUHJvcGVydHkgfTsKICAgICAg
ICAgaWYgKG1fcmVuZGVyZXIucGFyZW50KCktPnZpc2libGVUb0hpdFRlc3RpbmcoaGl0VHlwZSkp
Ci0gICAgICAgICAgICBtX3BhaW50SW5mby5ldmVudFJlZ2lvbkNvbnRleHQtPnVuaXRlKGVuY2xv
c2luZ0ludFJlY3QobV9wYWludFJlY3QpLCBjb25zdF9jYXN0PFJlbmRlclRleHQmPihtX3JlbmRl
cmVyKSwgbV9zdHlsZSk7CisgICAgICAgICAgICBtX3BhaW50SW5mby5ldmVudFJlZ2lvbkNvbnRl
eHQoKS0+dW5pdGUoZW5jbG9zaW5nSW50UmVjdChtX3BhaW50UmVjdCksIGNvbnN0X2Nhc3Q8UmVu
ZGVyVGV4dCY+KG1fcmVuZGVyZXIpLCBtX3N0eWxlKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmll
dy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcApp
bmRleCA5MjUzZTkwNWFmYzUuLjEwYzgwYWYxZDE2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAKQEAgLTQxOCw3ICs0MTgsNyBAQCB2b2lk
IFBsdWdpblZpZXc6OnNldEZyYW1lUmVjdChjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiByZWN0KQog
ICAgIHZpZXdHZW9tZXRyeURpZENoYW5nZSgpOwogfQogCi12b2lkIFBsdWdpblZpZXc6OnBhaW50
KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgSW50UmVjdCYgLypkaXJ0eVJlY3QqLywg
V2lkZ2V0OjpTZWN1cml0eU9yaWdpblBhaW50UG9saWN5LCBFdmVudFJlZ2lvbkNvbnRleHQqKQor
dm9pZCBQbHVnaW5WaWV3OjpwYWludChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IElu
dFJlY3QmIC8qZGlydHlSZWN0Ki8sIFdpZGdldDo6U2VjdXJpdHlPcmlnaW5QYWludFBvbGljeSwg
R2VvbWV0cnlUcmF2ZXJzYWxDb250ZXh0KikKIHsKICAgICBpZiAoIW1faXNJbml0aWFsaXplZCkK
ICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1Bs
dWdpbnMvUGx1Z2luVmlldy5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1
Z2luVmlldy5oCmluZGV4IDcyMTIyY2I0NThkZS4uNWM5NTBiYmQ0NjE3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmgKKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5oCkBAIC0xMzEsNyArMTMxLDcg
QEAgcHJpdmF0ZToKIAogICAgIC8vIFdlYkNvcmU6OldpZGdldAogICAgIHZvaWQgc2V0RnJhbWVS
ZWN0KGNvbnN0IFdlYkNvcmU6OkludFJlY3QmKSBmaW5hbDsKLSAgICB2b2lkIHBhaW50KFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmLCBXZWJDb3JlOjpX
aWRnZXQ6OlNlY3VyaXR5T3JpZ2luUGFpbnRQb2xpY3ksIFdlYkNvcmU6OkV2ZW50UmVnaW9uQ29u
dGV4dCopIGZpbmFsOworICAgIHZvaWQgcGFpbnQoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0Jiwg
Y29uc3QgV2ViQ29yZTo6SW50UmVjdCYsIFdlYkNvcmU6OldpZGdldDo6U2VjdXJpdHlPcmlnaW5Q
YWludFBvbGljeSwgV2ViQ29yZTo6R2VvbWV0cnlUcmF2ZXJzYWxDb250ZXh0KikgZmluYWw7CiAg
ICAgdm9pZCBpbnZhbGlkYXRlUmVjdChjb25zdCBXZWJDb3JlOjpJbnRSZWN0JikgZmluYWw7CiAg
ICAgdm9pZCBmcmFtZVJlY3RzQ2hhbmdlZCgpIGZpbmFsOwogICAgIHZvaWQgc2V0UGFyZW50KFdl
YkNvcmU6OlNjcm9sbFZpZXcqKSBmaW5hbDsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>466114</attachid>
            <date>2023-04-27 00:32:48 -0700</date>
            <delta_ts>2023-04-28 01:02:45 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-255076-20230427003247.patch</filename>
            <type>text/plain</type>
            <size>103790</size>
            <attacher name="Tyler Wilcock">tyler_w</attacher>
            
              <data encoding="base64">RnJvbSBiZDIxMmQyZTZhOTZkODk2YWY3YThmZTc1MDVhMzhiOTM3OWU1MzY4IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBUeWxlciBXaWxjb2NrIDx0eWxlcl93QGFwcGxlLmNvbT4KRGF0
ZTogV2VkLCA1IEFwciAyMDIzIDIxOjU1OjE4IC0wNzAwClN1YmplY3Q6IFtQQVRDSF0gQWRkIFBh
aW50UGhhc2U6OkFjY2Vzc2liaWxpdHkgYW5kIEFjY2Vzc2liaWxpdHlSZWdpb25Db250ZXh0CiB0
byBlbmFibGUgQVggZWxlbWVudCBib3VuZGluZy1ib3ggY2FjaGluZwogaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI1NTA3NiByZGFyOi8vcHJvYmxlbS8xMDc2OTQ0OTIK
ClJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgoKQWNjZXNzaWJpbGl0eSBuZWVkcyB0byBjYWNo
ZSB0aGUgYm91bmRpbmcgYm94IG9mIG5vbi1hY2Nlc3NpYmlsaXR5LWlzLWlnbm9yZWQgZWxlbWVu
dHMgb24gdGhlIHNlY29uZGFyeSBBWCB0aHJlYWQuClRvIGdldCB0aGVzZSBib3VuZGluZy1ib3hl
cywgdGhpcyBwYXRjaCBhZGRzIGEgbmV3IGFjY2Vzc2liaWxpdHkgcGFpbnQgcGhhc2Ugd2l0aCB0
aGUgaW50ZW50aW9uIG9mIHRyaWdnZXJpbmcgdGhpcwpwYWludCBwaGFzZSBpbiBgUGFnZTo6ZG9B
ZnRlclVwZGF0ZVJlbmRlcmluZ2AgKHdoaWNoIHdpbGwgYmUgZG9uZSBpbiBhIGZ1dHVyZSBwYXRj
aCkganVzdCBhcyBldmVudCByZWdpb25zIGRvLgoKVG8gYWNjb21wbGlzaCB0aGlzLCB0aGlzIHBh
dGNoIHJlZmFjdG9ycyBgRXZlbnRSZWdpb25Db250ZXh0YHMgY2xpcCBzdGFjayBhbmQgdHJhbnNm
b3JtIHN0YWNrIG1haW50ZW5hbmNlIGludG8gYSBuZXcKYFJlZ2lvbkNvbnRleHRgIGJhc2UgY2xh
c3MuIGBFdmVudFJlZ2lvbkNvbnRleHRgIG5vdyBkZXJpdmVzIGZyb20gYFJlZ2lvbkNvbnRleHRg
IGFsb25nIHdpdGggYSBuZXcgYEFjY2Vzc2liaWxpdHlSZWdpb25Db250ZXh0YApjbGFzcy4gYEFj
Y2Vzc2liaWxpdHlSZWdpb25Db250ZXh0YCB3aWxsIHRha2UgdGhlIGJvdW5kcyBnZW5lcmF0ZWQg
YnkgcGFpbnRpbmcsIGFwcGx5IHRyYW5zZm9ybXMgYW5kIGNsaXBzLCBhbmQgdXNoZXIKdGhpcyBp
bmZvcm1hdGlvbiBlbHNld2hlcmUgdG8gYmUgdXNlZCB0byB1cGRhdGUgYWNjZXNzaWJpbGl0eSBk
YXRhIHN0cnVjdHVyZXMgKHdpdGggdGhhdCBsYXN0IHN0ZXAgY29taW5nIGluIGEgbGF0ZXIgcGF0
Y2gpLgoKKiBTb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlOgpBZGQgQWNjZXNzaWJpbGl0eVJl
Z2lvbkNvbnRleHQuaCBhbmQgUmVnaW9uQ29udGV4dC5oLgoqIFNvdXJjZS9XZWJDb3JlL1NvdXJj
ZXMudHh0OgpBZGQgQWNjZXNzaWJpbGl0eVJlZ2lvbkNvbnRleHQuY3BwIGFuZCBSZWdpb25Db250
ZXh0LmNwcC4KCiogU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qOgpBZGQgQWNjZXNzaWJpbGl0eVJlZ2lvbkNvbnRleHQue2gsIGNwcH0gYW5kIFJlZ2lvbkNv
bnRleHQue2gsIGNwcH0KCiogU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50Lmg6CiogU291cmNl
L1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcDoKKFdlYkNvcmU6OkRvY3VtZW50Ojp1cGRhdGVBY2Nl
c3NpYmlsaXR5T2JqZWN0UmVnaW9ucyk6IEFkZGVkLgoKKiBTb3VyY2UvV2ViQ29yZS9sYXlvdXQv
aW50ZWdyYXRpb24vaW5saW5lL0xheW91dEludGVncmF0aW9uTGluZUxheW91dC5jcHA6CihXZWJD
b3JlOjpMYXlvdXRJbnRlZ3JhdGlvbjo6TGluZUxheW91dDo6cGFpbnQpOgpQYWludCBmb3IgUGFp
bnRQaGFzZTo6QWNjZXNzaWJpbGl0eS4KCiogU291cmNlL1dlYkNvcmUvcGFnZS9Mb2NhbEZyYW1l
Vmlldy5jcHA6CihXZWJDb3JlOjpMb2NhbEZyYW1lVmlldzo6dXBkYXRlQWNjZXNzaWJpbGl0eU9i
amVjdFJlZ2lvbnMpOiBBZGRlZC4KKFdlYkNvcmU6OkxvY2FsRnJhbWVWaWV3OjpwYWludENvbnRl
bnRzKToKKiBTb3VyY2UvV2ViQ29yZS9wYWdlL0xvY2FsRnJhbWVWaWV3Lmg6CiogU291cmNlL1dl
YkNvcmUvcGFnZS9SZW1vdGVGcmFtZVZpZXcuY3BwOgooV2ViQ29yZTo6UmVtb3RlRnJhbWVWaWV3
OjpwYWludENvbnRlbnRzKToKKiBTb3VyY2UvV2ViQ29yZS9wYWdlL1JlbW90ZUZyYW1lVmlldy5o
OgoqIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbFZpZXcuY3BwOgooV2ViQ29yZTo6U2Ny
b2xsVmlldzo6cGFpbnQpOgoqIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbFZpZXcuaDoK
KiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxiYXIuY3BwOgooV2ViQ29yZTo6U2Nyb2xs
YmFyOjpwYWludCk6CiogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYmFyLmg6CiogU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vV2lkZ2V0LmNwcDoKKiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ndGsvV2lkZ2V0R3RrLmNwcDoKKiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vV2lkZ2V0
V2luLmNwcDoKKFdlYkNvcmU6OldpZGdldDo6cGFpbnQpOgoqIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL1dpZGdldC5oOgoqIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XaWRnZXRJT1MubW06
CihXZWJDb3JlOjpXaWRnZXQ6OnBhaW50KToKKiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMv
V2lkZ2V0TWFjLm1tOgooV2ViQ29yZTo6V2lkZ2V0OjpwYWludCk6CkFjY2VwdCBhIGBSZWdpb25D
b250ZXh0KmAgcGFyYW1ldGVyIGluc3RlYWQgb2YgYW4gYEV2ZW50UmVnaW9uQ29udGV4dCpgLgoK
KiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvQWNjZXNzaWJpbGl0eVJlZ2lvbkNvbnRleHQuY3Bw
OiBBZGRlZC4KKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlSZWdpb25Db250ZXh0Ojp0YWtlQm91bmRz
KToKKiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvQWNjZXNzaWJpbGl0eVJlZ2lvbkNvbnRleHQu
aDogQWRkZWQuCihXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5UmVnaW9uQ29udGV4dDo6bWFwUmVjdCk6
CgoqIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9FdmVudFJlZ2lvbi5oOgoqIFNvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9FdmVudFJlZ2lvbi5jcHA6CihXZWJDb3JlOjpFdmVudFJlZ2lvbkNvbnRl
eHQ6OnB1c2hUcmFuc2Zvcm0pOiBEZWxldGVkLgooV2ViQ29yZTo6RXZlbnRSZWdpb25Db250ZXh0
Ojpwb3BUcmFuc2Zvcm0pOiBEZWxldGVkLgooV2ViQ29yZTo6RXZlbnRSZWdpb25Db250ZXh0Ojpw
dXNoQ2xpcCk6IERlbGV0ZWQuCihXZWJDb3JlOjpFdmVudFJlZ2lvbkNvbnRleHQ6OnBvcENsaXAp
OiBEZWxldGVkLgpUaGVzZSBmdW5jdGlvbnMgYW5kIHRoZWlyIGFzc29jaWF0ZWQgc3RhdGUgYXJl
IG1vdmVkIHRvCnRoZSBuZXdseSBhZGRlZCBiYXNlIGNsYXNzLCBgUmVnaW9uQ29udGV4dGAuCgoo
V2ViQ29yZTo6RXZlbnRSZWdpb25Db250ZXh0U3RhdGVTYXZlcjo6RXZlbnRSZWdpb25Db250ZXh0
U3RhdGVTYXZlcik6IERlbGV0ZWQuCihXZWJDb3JlOjpFdmVudFJlZ2lvbkNvbnRleHRTdGF0ZVNh
dmVyOjp+RXZlbnRSZWdpb25Db250ZXh0U3RhdGVTYXZlcik6IERlbGV0ZWQuCihXZWJDb3JlOjpF
dmVudFJlZ2lvbkNvbnRleHRTdGF0ZVNhdmVyOjpwdXNoQ2xpcCk6IERlbGV0ZWQuCihXZWJDb3Jl
OjpFdmVudFJlZ2lvbkNvbnRleHRTdGF0ZVNhdmVyOjpjb250ZXh0IGNvbnN0KTogRGVsZXRlZC4K
UmVwbGFjZWQgYnkgdGhlIGVxdWl2YWxlbnQgYW5kIG5ldy10by10aGlzLXBhdGNoIGBSZWdpb25D
b250ZXh0U3RhdGVTYXZlcmAuCgoqIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9MZWdhY3lJbmxp
bmVFbGVtZW50Qm94LmNwcDoKKFdlYkNvcmU6OkxlZ2FjeUlubGluZUVsZW1lbnRCb3g6OnBhaW50
KToKKiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvTGVnYWN5SW5saW5lRmxvd0JveC5jcHA6CihX
ZWJDb3JlOjpMZWdhY3lJbmxpbmVGbG93Qm94OjpwYWludCk6CkF2b2lkIGVhcmx5IHJldHVybiB3
aGVuIHBhaW50aW5nIGZvciBQYWludFBoYXNlOjpBY2Nlc3NpYmlsaXR5LgoKKiBTb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVnaW9uQ29udGV4dC5oOiBBZGRlZC4KKiBTb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVnaW9uQ29udGV4dC5jcHA6IEFkZGVkLgooV2ViQ29yZTo6UmVnaW9uQ29udGV4
dDo6cHVzaFRyYW5zZm9ybSk6CihXZWJDb3JlOjpSZWdpb25Db250ZXh0Ojpwb3BUcmFuc2Zvcm0p
OgooV2ViQ29yZTo6UmVnaW9uQ29udGV4dDo6cHVzaENsaXApOgooV2ViQ29yZTo6UmVnaW9uQ29u
dGV4dDo6cG9wQ2xpcCk6ClJlcGxhY2VzIGVxdWl2YWxlbnQgZnVuY3Rpb25hbGl0eSB0aGF0IHVz
ZWQgdG8gYmUgaW4gYEV2ZW50UmVnaW9uQ29udGV4dGAuCihXZWJDb3JlOjpSZWdpb25Db250ZXh0
Ojppc0V2ZW50UmVnaW9uQ29udGV4dCBjb25zdCk6CihXZWJDb3JlOjpSZWdpb25Db250ZXh0Ojpp
c0FjY2Vzc2liaWxpdHlSZWdpb25Db250ZXh0IGNvbnN0KToKCihXZWJDb3JlOjpSZWdpb25Db250
ZXh0U3RhdGVTYXZlcjo6UmVnaW9uQ29udGV4dFN0YXRlU2F2ZXIpOgooV2ViQ29yZTo6UmVnaW9u
Q29udGV4dFN0YXRlU2F2ZXI6On5SZWdpb25Db250ZXh0U3RhdGVTYXZlcik6CihXZWJDb3JlOjpS
ZWdpb25Db250ZXh0U3RhdGVTYXZlcjo6cHVzaENsaXApOgooV2ViQ29yZTo6UmVnaW9uQ29udGV4
dFN0YXRlU2F2ZXI6OmNvbnRleHQgY29uc3QpOgpSZXBsYWNlcyBlcXVpdmFsZW50IGZ1bmN0aW9u
YWxpdHkgdGhhdCB1c2VkIHRvIGJlIGluIGBFdmVudFJlZ2lvbkNvbnRleHRTdGF0ZVNhdmVyYC4K
CiogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1BhaW50SW5mby5oOgpTdG9yZSBhIGBSZWdpb25D
b250ZXh0KmAgcmF0aGVyIHRoYW4gYW4gYEV2ZW50UmVnaW9uQ29udGV4dCpgLgooV2ViQ29yZTo6
UGFpbnRJbmZvOjpldmVudFJlZ2lvblBhaW50Q29udGV4dCk6IEFkZGVkLgooV2ViQ29yZTo6UGFp
bnRJbmZvOjphY2Nlc3NpYmlsaXR5UGFpbnRDb250ZXh0KTogQWRkZWQuCgoqIFNvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9QYWludFBoYXNlLmg6CkFkZCBuZXcgUGFpbnRQaGFzZTo6QWNjZXNzaWJp
bGl0eS4KCiogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcDoKKFdlYkNv
cmU6OlJlbmRlckJsb2NrOjpwYWludENvbnRlbnRzKToKQ2hlY2sgZm9yIG5vbi1udWxsIGV2ZW50
IHJlZ2lvbiBwYWludCBjb250ZXh0IHRvIG1haW50YWluIGV4aXN0aW5nCmJlaGF2aW9yLgoKKFdl
YkNvcmU6OlJlbmRlckJsb2NrOjpwYWludE9iamVjdCk6CkdpdmUgdGhlIHBhaW50LXJlY3Qgb2Yg
dGhpcyBgUmVuZGVyQmxvY2tgIHRvIHRoZSBgQWNjZXNzaWJpbGl0eVJlZ2lvbkNvbnRleHRgIGlm
IHByZXNlbnQuCkhhbmRsZSBuZXcgYFBhaW50UGhhc2U6OkFjY2Vzc2liaWxpdHlgLgoKKiBTb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNwcDoKKFdlYkNvcmU6OlJlbmRlckJveDo6
cHVzaENvbnRlbnRzQ2xpcCk6CihXZWJDb3JlOjpSZW5kZXJCb3g6OnBvcENvbnRlbnRzQ2xpcCk6
ClB1c2ggYW5kIHBvcCBjbGlwIGZvciBib3RoIGBQYWludFBoYXNlOjpBY2Nlc3NpYmlsaXR5YCBh
bmQgYFBhaW50UGhhc2U6OkV2ZW50UmVnaW9uYC4KCiogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckVsZW1lbnQuY3BwOgooV2ViQ29yZTo6UmVuZGVyRWxlbWVudDo6cGFpbnRBc0lubGlu
ZUJsb2NrKToKQWxsb3cgcGFpbnQgZm9yIGBQYWludFBoYXNlOjpBY2Nlc3NpYmlsaXR5YC4KCiog
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcDoKKFdlYkNvcmU6OlJlbmRl
ckxheWVyOjpwYWludCk6CihXZWJDb3JlOjpSZW5kZXJMYXllcjo6Y2xpcFRvUmVjdCk6CihXZWJD
b3JlOjpSZW5kZXJMYXllcjo6cGFpbnRMYXllcldpdGhFZmZlY3RzKToKKFdlYkNvcmU6OlJlbmRl
ckxheWVyOjpzZXR1cENsaXBQYXRoKToKKFdlYkNvcmU6OlJlbmRlckxheWVyOjphcHBseUZpbHRl
cnMpOgooV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OnBhaW50TGF5ZXJDb250ZW50cyk6CihXZWJDb3Jl
OjpSZW5kZXJMYXllcjo6cGFpbnRMYXllckJ5QXBwbHlpbmdUcmFuc2Zvcm0pOgooV2ViQ29yZTo6
UmVuZGVyTGF5ZXI6OnBhaW50VHJhbnNmb3JtZWRMYXllckludG9GcmFnbWVudHMpOgooV2ViQ29y
ZTo6UmVuZGVyTGF5ZXI6OnBhaW50QmFja2dyb3VuZEZvckZyYWdtZW50cyk6CihXZWJDb3JlOjpS
ZW5kZXJMYXllcjo6cGFpbnRGb3JlZ3JvdW5kRm9yRnJhZ21lbnRzKToKKFdlYkNvcmU6OlJlbmRl
ckxheWVyOjpwYWludEZvcmVncm91bmRGb3JGcmFnbWVudHNXaXRoUGhhc2UpOgooV2ViQ29yZTo6
UmVuZGVyTGF5ZXI6OnBhaW50T3V0bGluZUZvckZyYWdtZW50cyk6CihXZWJDb3JlOjpSZW5kZXJM
YXllcjo6cGFpbnRNYXNrRm9yRnJhZ21lbnRzKToKKFdlYkNvcmU6OlJlbmRlckxheWVyOjpwYWlu
dENoaWxkQ2xpcHBpbmdNYXNrRm9yRnJhZ21lbnRzKToKKFdlYkNvcmU6OlJlbmRlckxheWVyOjpw
YWludE92ZXJmbG93Q29udHJvbHNGb3JGcmFnbWVudHMpOgooV2ViQ29yZTo6UmVuZGVyTGF5ZXI6
OmNvbGxlY3RFdmVudFJlZ2lvbkZvckZyYWdtZW50cyk6CihXZWJDb3JlOjpSZW5kZXJMYXllcjo6
Y29sbGVjdEFjY2Vzc2liaWxpdHlSZWdpb25zRm9yRnJhZ21lbnRzKTogQWRkZWQuClJlcGxhY2Ug
dXNhZ2Ugb2YgYEV2ZW50UmVnaW9uQ29udGV4dFN0YXRlU2F2ZXJgIHdpdGggYFJlZ2lvbkNvbnRl
eHRTdGF0ZVNhdmVyYC4KQ2hlY2sgZm9yIHRoZSBwcmVzZW5jZSBvZiBgRXZlbnRSZWdpb25Db250
ZXh0YCB3aGVuIGFwcHJvcHJpYXRlIHRvIG1haW50YWluIGV4aXN0aW5nIGJlaGF2aW9yLgoKKiBT
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuaDoKKFdlYkNvcmU6OlJlbmRlckxh
eWVyOjpwYWludCk6CkFjY2VwdCBhIGBSZWdpb25Db250ZXh0KmAgcGFyYW1ldGVyIGluc3RlYWQg
b2YgYW4gYEV2ZW50UmVnaW9uQ29udGV4dCpgLgpTdG9yZSBhIGBSZWdpb25Db250ZXh0KmAgcmF0
aGVyIHRoYW4gYW4gYEV2ZW50UmVnaW9uQ29udGV4dCpgIGluIGBzdHJ1Y3QgTGF5ZXJQYWludGlu
Z0luZm9gLgoKKiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNw
cDoKKFdlYkNvcmU6OlJlbmRlckxheWVyQmFja2luZzo6cGFpbnRJbnRvTGF5ZXIpOgoqIFNvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuaDoKQWNjZXB0IGEgYFJlZ2lv
bkNvbnRleHQqYCBwYXJhbWV0ZXIgaW5zdGVhZCBvZiBhbiBgRXZlbnRSZWdpb25Db250ZXh0KmAu
ClJlcGxhY2UgdXNhZ2Ugb2YgYEV2ZW50UmVnaW9uQ29udGV4dFN0YXRlU2F2ZXJgIHdpdGggYFJl
Z2lvbkNvbnRleHRTdGF0ZVNhdmVyYC4KCiogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckxpc3RNYXJrZXIuY3BwOgooV2ViQ29yZTo6UmVuZGVyTGlzdE1hcmtlcjo6cGFpbnQpOgpQYWlu
dCBmb3IgYFBhaW50UGhhc2U6OkFjY2Vzc2liaWxpdHlgLgoKKiBTb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyUmVwbGFjZWQuY3BwOgooV2ViQ29yZTo6UmVuZGVyUmVwbGFjZWQ6OnBhaW50
KToKKFdlYkNvcmU6OlJlbmRlclJlcGxhY2VkOjpzaG91bGRQYWludCk6ClBhaW50IGZvciBgUGFp
bnRQaGFzZTo6QWNjZXNzaWJpbGl0eWAuCgoqIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJTY3JvbGxiYXIuaDoKKiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU2Nyb2xsYmFy
LmNwcDoKKFdlYkNvcmU6OlJlbmRlclNjcm9sbGJhcjo6cGFpbnQpOgpBY2NlcHQgYSBgUmVnaW9u
Q29udGV4dCpgIHBhcmFtZXRlciBpbnN0ZWFkIG9mIGFuIGBFdmVudFJlZ2lvbkNvbnRleHQqYC4K
CiogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcldpZGdldC5jcHA6CihXZWJDb3JlOjpS
ZW5kZXJXaWRnZXQ6OnBhaW50Q29udGVudHMpOgooV2ViQ29yZTo6UmVuZGVyV2lkZ2V0OjpwYWlu
dCk6ClJldHVybiBlYXJseSBiZWZvcmUgYWN0dWFsIHBhaW50IGZvciBgUGFpbnRQaGFzZTo6QWNj
ZXNzaWJpbGl0eWAuCgoqIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9UZXh0Qm94UGFpbnRlci5j
cHA6CihXZWJDb3JlOjpUZXh0Qm94UGFpbnRlcjxUZXh0Qm94UGF0aD46OlRleHRCb3hQYWludGVy
KToKKFdlYkNvcmU6OlRleHRCb3hQYWludGVyPFRleHRCb3hQYXRoPjo6cGFpbnQpOgpBbGxvdyBw
YWludCBmb3IgYFBhaW50UGhhc2U6OkFjY2Vzc2liaWxpdHlgIGluIEFTU0VSVCAod2Ugd2lsbCBu
ZWVkIHRvCmhhbmRsZSB0aGVzZSBwYWludHMgaW4gYSBmdXR1cmUgcGF0Y2gpLgoKKiBTb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3Lmg6CiogU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHA6CihXZWJLaXQ6OlBsdWdpblZpZXc6OnBh
aW50KToKQWNjZXB0IGEgYFJlZ2lvbkNvbnRleHQqYCBwYXJhbWV0ZXIgaW5zdGVhZCBvZiBhbiBg
RXZlbnRSZWdpb25Db250ZXh0KmAuCi0tLQogU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZSAg
ICAgICAgICAgICAgICAgIHwgICAyICsKIFNvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0ICAgICAg
ICAgICAgICAgICAgICB8ICAgMiArCiAuLi4vV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2ogfCAgMTIgKysKIFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAgICAg
ICAgICAgICAgICB8ICAgOCArKwogU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmggICAgICAg
ICAgICAgICAgIHwgICAxICsKIC4uLi9pbmxpbmUvTGF5b3V0SW50ZWdyYXRpb25MaW5lTGF5b3V0
LmNwcCAgICB8ICAgMSArCiBTb3VyY2UvV2ViQ29yZS9wYWdlL0xvY2FsRnJhbWVWaWV3LmNwcCAg
ICAgICAgfCAgMjUgKysrLQogU291cmNlL1dlYkNvcmUvcGFnZS9Mb2NhbEZyYW1lVmlldy5oICAg
ICAgICAgIHwgICA3ICstCiBTb3VyY2UvV2ViQ29yZS9wYWdlL1JlbW90ZUZyYW1lVmlldy5jcHAg
ICAgICAgfCAgIDIgKy0KIFNvdXJjZS9XZWJDb3JlL3BhZ2UvUmVtb3RlRnJhbWVWaWV3LmggICAg
ICAgICB8ICAgMiArLQogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsVmlldy5jcHAgICAg
ICAgIHwgICA2ICstCiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxWaWV3LmggICAgICAg
ICAgfCAgIDYgKy0KIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGJhci5jcHAgICAgICAg
ICB8ICAgMiArLQogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYmFyLmggICAgICAgICAg
IHwgICAyICstCiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9XaWRnZXQuY3BwICAgICAgICAgICAg
fCAgIDIgKy0KIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1dpZGdldC5oICAgICAgICAgICAgICB8
ICAgNCArLQogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1dpZGdldEd0ay5jcHAgICAgIHwg
ICA0ICstCiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2lkZ2V0SU9TLm1tICAgICAgfCAg
IDIgKy0KIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XaWRnZXRNYWMubW0gICAgICB8ICAg
MiArLQogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1dpZGdldFdpbi5jcHAgICAgIHwgICA0
ICstCiAuLi4vcmVuZGVyaW5nL0FjY2Vzc2liaWxpdHlSZWdpb25Db250ZXh0LmNwcCAgfCAgNDIg
KysrKysrKwogLi4uL3JlbmRlcmluZy9BY2Nlc3NpYmlsaXR5UmVnaW9uQ29udGV4dC5oICAgIHwg
IDY5ICsrKysrKysrKysrCiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvRXZlbnRSZWdpb24uY3Bw
ICAgICAgfCAgNDMgKy0tLS0tLQogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0V2ZW50UmVnaW9u
LmggICAgICAgIHwgIDU4ICsrLS0tLS0tLQogLi4uL3JlbmRlcmluZy9MZWdhY3lJbmxpbmVFbGVt
ZW50Qm94LmNwcCAgICAgIHwgICAyICstCiAuLi4vV2ViQ29yZS9yZW5kZXJpbmcvTGVnYWN5SW5s
aW5lRmxvd0JveC5jcHAgfCAgIDIgKy0KIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9QYWludElu
Zm8uaCAgICAgICAgICB8ICAgOCArLQogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1BhaW50UGhh
c2UuaCAgICAgICAgIHwgICAxICsKIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZWdpb25Db250
ZXh0LmNwcCAgICB8ICA3NCArKysrKysrKysrKysKIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZWdpb25Db250ZXh0LmggICAgICB8ICA5NiArKysrKysrKysrKysrKysKIFNvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAgICAgICB8ICAxNSArKy0KIFNvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJCb3guY3BwICAgICAgICB8ICAgOCArLQogU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckVsZW1lbnQuY3BwICAgIHwgICAyICstCiBTb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwICAgICAgfCAxMTAgKysrKysrKysrKy0tLS0tLS0tCiBT
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuaCAgICAgICAgfCAgMTEgKy0KIC4u
Li9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwICB8ICAxOCArLS0KIFNv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuaCB8ICAgNCArLQogU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RNYXJrZXIuY3BwIHwgICA4ICstCiBTb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUmVwbGFjZWQuY3BwICAgfCAgMTAgKy0KIFNvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTY3JvbGxiYXIuY3BwICB8ICAgMiArLQogU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNjcm9sbGJhci5oICAgIHwgICAyICstCiBTb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyV2lkZ2V0LmNwcCAgICAgfCAgMTIgKy0KIFNvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9UZXh0Qm94UGFpbnRlci5jcHAgICB8ICAgNCArLQogLi4uL1dlYktp
dC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAgIHwgICAyICstCiBTb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmggfCAgIDIgKy0KIDQ1IGZpbGVzIGNo
YW5nZWQsIDQ5MSBpbnNlcnRpb25zKCspLCAyMTAgZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAx
MDA2NDQgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0FjY2Vzc2liaWxpdHlSZWdpb25Db250ZXh0
LmNwcAogY3JlYXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9BY2Nlc3Np
YmlsaXR5UmVnaW9uQ29udGV4dC5oCiBjcmVhdGUgbW9kZSAxMDA2NDQgU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlZ2lvbkNvbnRleHQuY3BwCiBjcmVhdGUgbW9kZSAxMDA2NDQgU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlZ2lvbkNvbnRleHQuaAoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL0hlYWRlcnMuY21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCmluZGV4IDdl
NGYwOWM1NmFkOS4uOTA4OGExMTg2NzVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9IZWFk
ZXJzLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKQEAgLTIwNzAsNiAr
MjA3MCw3IEBAIHNldChXZWJDb3JlX1BSSVZBVEVfRlJBTUVXT1JLX0hFQURFUlMKICAgICBwbHVn
aW5zL1BsdWdpbkluZm9Qcm92aWRlci5oCiAgICAgcGx1Z2lucy9QbHVnaW5WaWV3QmFzZS5oCiAK
KyAgICByZW5kZXJpbmcvQWNjZXNzaWJpbGl0eVJlZ2lvbkNvbnRleHQuaAogICAgIHJlbmRlcmlu
Zy9CcmVha0xpbmVzLmgKICAgICByZW5kZXJpbmcvQ2FyZXRSZWN0Q29tcHV0YXRpb24uaAogICAg
IHJlbmRlcmluZy9DU1NGaWx0ZXIuaApAQCAtMjA5OSw2ICsyMTAwLDcgQEAgc2V0KFdlYkNvcmVf
UFJJVkFURV9GUkFNRVdPUktfSEVBREVSUwogICAgIHJlbmRlcmluZy9QYWludEluZm8uaAogICAg
IHJlbmRlcmluZy9QYWludFBoYXNlLmgKICAgICByZW5kZXJpbmcvUGF0aE9wZXJhdGlvbi5oCisg
ICAgcmVuZGVyaW5nL1JlZ2lvbkNvbnRleHQuaAogICAgIHJlbmRlcmluZy9SZW5kZXJBdHRhY2ht
ZW50LmgKICAgICByZW5kZXJpbmcvUmVuZGVyQmxvY2suaAogICAgIHJlbmRlcmluZy9SZW5kZXJC
bG9ja0Zsb3cuaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQgYi9Tb3Vy
Y2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAppbmRleCAzMDkxYWNlZjBmNDguLjlmY2M3NzE3YzdkNyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKKysrIGIvU291cmNlL1dlYkNv
cmUvU291cmNlcy50eHQKQEAgLTI0MzcsNiArMjQzNyw3IEBAIHBsdWdpbnMvRE9NUGx1Z2luLmNw
cAogcGx1Z2lucy9ET01QbHVnaW5BcnJheS5jcHAKIHBsdWdpbnMvUGx1Z2luRGF0YS5jcHAKIHBs
dWdpbnMvUGx1Z2luSW5mb1Byb3ZpZGVyLmNwcAorcmVuZGVyaW5nL0FjY2Vzc2liaWxpdHlSZWdp
b25Db250ZXh0LmNwcAogcmVuZGVyaW5nL0F1dG9UYWJsZUxheW91dC5jcHAKIHJlbmRlcmluZy9C
YWNrZ3JvdW5kUGFpbnRlci5jcHAKIHJlbmRlcmluZy9CaWRpUnVuLmNwcApAQCAtMjQ4Miw2ICsy
NDgzLDcgQEAgcmVuZGVyaW5nL09yZGVySXRlcmF0b3IuY3BwCiByZW5kZXJpbmcvUGF0aE9wZXJh
dGlvbi5jcHAKIHJlbmRlcmluZy9Qb2ludGVyRXZlbnRzSGl0UnVsZXMuY3BwCiByZW5kZXJpbmcv
UmVmZXJlbmNlZFNWR1Jlc291cmNlcy5jcHAKK3JlbmRlcmluZy9SZWdpb25Db250ZXh0LmNwcAog
cmVuZGVyaW5nL1JlbmRlckF0dGFjaG1lbnQuY3BwCiByZW5kZXJpbmcvUmVuZGVyQmxvY2suY3Bw
CiByZW5kZXJpbmcvUmVuZGVyQmxvY2tGbG93LmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDM5MzgwNGZjNTUwZC4uMTFhMGY1
MGU2ZTUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCkBAIC0xNTcxLDYgKzE1NzEsOCBAQAogCQk0N0M0RDU3RDI2NTA4QkNCMDBDN0FC
MUYgLyogSW5saW5lRm9ybWF0dGluZ0dlb21ldHJ5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0N0M0RDU3QzI2NTA4QkNBMDBDN0FCMUYgLyogSW5saW5l
Rm9ybWF0dGluZ0dlb21ldHJ5LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKIAkJNDdGOTQ3REIyNjUwMkYyRjAwODc5NjhDIC8qIEJsb2NrRm9ybWF0dGlu
Z1F1aXJrcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NDdGOTQ3REEyNjUwMkYyRjAwODc5NjhDIC8qIEJsb2NrRm9ybWF0dGluZ1F1aXJrcy5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQ3RkE5NzAwMjY1
MDk4MkIwMDg0MTQxNiAvKiBUYWJsZUZvcm1hdHRpbmdHZW9tZXRyeS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDdGQTk2RkYyNjUwOTgyQTAwODQxNDE2
IC8qIFRhYmxlRm9ybWF0dGluZ0dlb21ldHJ5LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJNDgyMjk3MEUyOUM4RUJDMDAwMzNBMTI2IC8qIFJlZ2lv
bkNvbnRleHQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDQ4MjI5NzBDMjlDOEVCQzAwMDMzQTEyNiAvKiBSZWdpb25Db250ZXh0LmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJNDhCNUJGMzcyOUNBNjkxNzAw
RkVCRTNCIC8qIEFjY2Vzc2liaWxpdHlSZWdpb25Db250ZXh0LmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0OEI1QkYzNTI5Q0E2OTE3MDBGRUJFM0IgLyog
QWNjZXNzaWJpbGl0eVJlZ2lvbkNvbnRleHQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQk0OTNFNUUwOTEyRDY0MjA1MDAwMjAwODEgLyogUGxhdGZv
cm1DQUxheWVyQ2xpZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA0OTNFNUUwODEyRDY0MjA1MDAwMjAwODEgLyogUGxhdGZvcm1DQUxheWVyQ2xpZW50
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDk0
NUJGRDQxM0NGODA5MDAwQ0MzQjM4IC8qIFRyYW5zZm9ybVN0YXRlLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0OTQ1QkZEMjEzQ0Y4MDkwMDBDQzNCMzgg
LyogVHJhbnNmb3JtU3RhdGUuaCAqLzsgfTsKIAkJNDk0ODRGQzIxMDJDRjIzQzAwMTg3REQzIC8q
IENhbnZhc0dyYWRpZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA0OTQ4NEZCNDEwMkNGMjNDMDAxODdERDMgLyogQ2FudmFzR3JhZGllbnQuaCAqLzsg
fTsKQEAgLTEwMTY4LDYgKzEwMTcwLDEwIEBACiAJCTQ3QzRENTdDMjY1MDhCQ0EwMEM3QUIxRiAv
KiBJbmxpbmVGb3JtYXR0aW5nR2VvbWV0cnkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gSW5saW5lRm9ybWF0dGluZ0dlb21ldHJ5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTQ3Rjk0N0RBMjY1MDJGMkYwMDg3OTY4QyAvKiBCbG9ja0Zvcm1hdHRpbmdRdWlya3Mu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQmxvY2tGb3JtYXR0aW5nUXVpcmtz
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ3RkE5NkZGMjY1MDk4MkEwMDg0MTQx
NiAvKiBUYWJsZUZvcm1hdHRpbmdHZW9tZXRyeS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBUYWJsZUZvcm1hdHRpbmdHZW9tZXRyeS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQk0ODIyOTcwQjI5QzhFQkMwMDAzM0ExMjYgLyogUmVnaW9uQ29udGV4dC5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZWdpb25Db250ZXh0LmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDgyMjk3MEMyOUM4RUJDMDAwMzNBMTI2IC8qIFJl
Z2lvbkNvbnRleHQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVnaW9uQ29u
dGV4dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0OEI1QkYzNTI5Q0E2OTE3MDBG
RUJFM0IgLyogQWNjZXNzaWJpbGl0eVJlZ2lvbkNvbnRleHQuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gQWNjZXNzaWJpbGl0eVJlZ2lvbkNvbnRleHQuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJNDhCNUJGMzYyOUNBNjkxNzAwRkVCRTNCIC8qIEFjY2Vzc2liaWxp
dHlSZWdpb25Db250ZXh0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEFjY2Vzc2liaWxpdHlSZWdp
b25Db250ZXh0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDkzRTVFMDgxMkQ2
NDIwNTAwMDIwMDgxIC8qIFBsYXRmb3JtQ0FMYXllckNsaWVudC5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBQbGF0Zm9ybUNBTGF5ZXJDbGllbnQuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJNDk0NUJGRDExM0NGODA5MDAwQ0MzQjM4IC8qIFRyYW5zZm9ybVN0YXRl
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFRyYW5zZm9ybVN0YXRl
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDk0NUJGRDIxM0NGODA5MDAwQ0Mz
QjM4IC8qIFRyYW5zZm9ybVN0YXRlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFRyYW5zZm9ybVN0YXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0zNDI4NSw2
ICszNDI5MSw4IEBACiAJCQkJQkM4QzhGQUEwRERDRDJGMjAwQjU5MkY0IC8qIHN0eWxlICovLAog
CQkJCTA4OEMyRjc0MTIzOTAwODAwMDNENjVDRSAvKiBzdmcgKi8sCiAJCQkJRTQ3QzM5MUUxRkU2
RTA4QzAwQkJCQzZCIC8qIHVwZGF0aW5nICovLAorCQkJCTQ4QjVCRjM2MjlDQTY5MTcwMEZFQkUz
QiAvKiBBY2Nlc3NpYmlsaXR5UmVnaW9uQ29udGV4dC5jcHAgKi8sCisJCQkJNDhCNUJGMzUyOUNB
NjkxNzAwRkVCRTNCIC8qIEFjY2Vzc2liaWxpdHlSZWdpb25Db250ZXh0LmggKi8sCiAJCQkJMUEz
M0FFM0YyOEY5RjI5MDAwOTgwNEI0IC8qIEF0dGFjaG1lbnRMYXlvdXQuaCAqLywKIAkJCQkxQTMz
QUU0MDI4RjlGNDc4MDA5ODA0QjQgLyogQXR0YWNobWVudExheW91dC5tbSAqLywKIAkJCQlBOENG
RjA0QjBBMTU0RjA5MDAwQTQyMzQgLyogQXV0b1RhYmxlTGF5b3V0LmNwcCAqLywKQEAgLTM0Mzg5
LDYgKzM0Mzk3LDggQEAKIAkJCQlCMkIxRjcxNTBEMDBDQUE4MDA0QUVBNjQgLyogUG9pbnRlckV2
ZW50c0hpdFJ1bGVzLmggKi8sCiAJCQkJMEZDMjc2QkEyNkRBRjlFOTAwOTNFOEVEIC8qIFJlZmVy
ZW5jZWRTVkdSZXNvdXJjZXMuY3BwICovLAogCQkJCTBGQzI3NkI4MjZEQUY5QjcwMDkzRThFRCAv
KiBSZWZlcmVuY2VkU1ZHUmVzb3VyY2VzLmggKi8sCisJCQkJNDgyMjk3MEIyOUM4RUJDMDAwMzNB
MTI2IC8qIFJlZ2lvbkNvbnRleHQuY3BwICovLAorCQkJCTQ4MjI5NzBDMjlDOEVCQzAwMDMzQTEy
NiAvKiBSZWdpb25Db250ZXh0LmggKi8sCiAJCQkJQjU5RUQyM0ExODI3MjY3OTAwNkQ1NjRDIC8q
IFJlbmRlckFuY2VzdG9ySXRlcmF0b3IuaCAqLywKIAkJCQk3Q0Q0OTRDQTFBODZFQjFEMDAwQTg3
RUMgLyogUmVuZGVyQXR0YWNobWVudC5jcHAgKi8sCiAJCQkJN0NENDk0Q0IxQTg2RUIxRDAwMEE4
N0VDIC8qIFJlbmRlckF0dGFjaG1lbnQuaCAqLywKQEAgLTM1NzgxLDYgKzM1NzkxLDcgQEAKIAkJ
CQkyOUE4MTIzNjBGQkI5QzFEMDA1MTAyOTMgLyogQWNjZXNzaWJpbGl0eU9iamVjdC5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMjkzNkJGNUMyMUQ2OUU0QjAwNEE4RkM5IC8qIEFjY2Vzc2liaWxpdHlP
YmplY3RJbnRlcmZhY2UuaCBpbiBIZWFkZXJzICovLAogCQkJCUE0MDlDOTg1MTE2RDBEREQwMDcx
OTdCRCAvKiBBY2Nlc3NpYmlsaXR5UHJvZ3Jlc3NJbmRpY2F0b3IuaCBpbiBIZWFkZXJzICovLAor
CQkJCTQ4QjVCRjM3MjlDQTY5MTcwMEZFQkUzQiAvKiBBY2Nlc3NpYmlsaXR5UmVnaW9uQ29udGV4
dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMjlBODEyMzkwRkJCOUMxRDAwNTEwMjkzIC8qIEFjY2Vz
c2liaWxpdHlSZW5kZXJPYmplY3QuaCBpbiBIZWFkZXJzICovLAogCQkJCTkzQzRGNkVCMTEwOEY5
QTUwMDk5RDBEQiAvKiBBY2Nlc3NpYmlsaXR5U2Nyb2xsYmFyLmggaW4gSGVhZGVycyAqLywKIAkJ
CQkyOTQ4OUZDNzEyQzAwRjAzMDBEODNGMEYgLyogQWNjZXNzaWJpbGl0eVNjcm9sbFZpZXcuaCBp
biBIZWFkZXJzICovLApAQCAtMzkzOTMsNiArMzk0MDQsNyBAQAogCQkJCTU1ODQ3NjVBMjQ1M0Yz
MzQwMDlGNTUwQyAvKiBSZWR1Y2VkUmVzb2x1dGlvblNlY29uZHMuaCBpbiBIZWFkZXJzICovLAog
CQkJCTk4MzFBRTRBMTU0MjI1QzkwMEZFMjY0NCAvKiBSZWZlcnJlclBvbGljeS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJQkNBQjQxODIxM0UzNTZFODAwRDhBQUYzIC8qIFJlZ2lvbi5oIGluIEhlYWRl
cnMgKi8sCisJCQkJNDgyMjk3MEUyOUM4RUJDMDAwMzNBMTI2IC8qIFJlZ2lvbkNvbnRleHQuaCBp
biBIZWFkZXJzICovLAogCQkJCTI2Qjk5OThGMTgwM0FFNzIwMEQwMTEyMSAvKiBSZWdpc3RlckFs
bG9jYXRvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODUwMzFCNEMwQTQ0RUZDNzAwRjk5MkUwIC8q
IFJlZ2lzdGVyZWRFdmVudExpc3RlbmVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk2QjRFODYxMzIy
MUI3MTNGMDAyMkYzODkgLyogUmVnaXN0cmFibGVEb21haW4uaCBpbiBIZWFkZXJzICovLApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Eb2N1bWVudC5jcHAKaW5kZXggYjdjMzg2ZTcwMzVkLi5lMjUyNmJhMThkMzggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvZG9tL0RvY3VtZW50LmNwcApAQCAtNDc2OCw2ICs0NzY4LDE0IEBAIHZvaWQgRG9jdW1lbnQ6
OnVwZGF0ZUV2ZW50UmVnaW9ucygpCiAgICAgfQogfQogCit2b2lkIERvY3VtZW50Ojp1cGRhdGVB
Y2Nlc3NpYmlsaXR5T2JqZWN0UmVnaW9ucygpCit7CisjaWYgRU5BQkxFKEFDQ0VTU0lCSUxJVFlf
SVNPTEFURURfVFJFRSkKKyAgICBpZiAoYXV0byogdmlldyA9IHJlbmRlclZpZXcoKSkKKyAgICAg
ICAgdmlldy0+ZnJhbWVWaWV3KCkudXBkYXRlQWNjZXNzaWJpbGl0eU9iamVjdFJlZ2lvbnMoKTsK
KyNlbmRpZgorfQorCiB2b2lkIERvY3VtZW50OjppbnZhbGlkYXRlRXZlbnRSZWdpb25zRm9yRnJh
bWUoSFRNTEZyYW1lT3duZXJFbGVtZW50JiBlbGVtZW50KQogewogICAgIGF1dG8qIHJlbmRlcmVy
ID0gZWxlbWVudC5yZW5kZXJlcigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0Rv
Y3VtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAppbmRleCBhOTlkNDJkMzE0
MzUuLmViZjA5MjIyMTY3NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKQEAgLTEyMjQsNiArMTIyNCw3
IEBAIHB1YmxpYzoKIAogICAgIFdFQkNPUkVfRVhQT1JUIFN0cmluZyBkaXNwbGF5U3RyaW5nTW9k
aWZpZWRCeUVuY29kaW5nKGNvbnN0IFN0cmluZyYpIGNvbnN0OwogCisgICAgdm9pZCB1cGRhdGVB
Y2Nlc3NpYmlsaXR5T2JqZWN0UmVnaW9ucygpOwogICAgIHZvaWQgdXBkYXRlRXZlbnRSZWdpb25z
KCk7CiAKICAgICB2b2lkIGludmFsaWRhdGVSZW5kZXJpbmdEZXBlbmRlbnRSZWdpb25zKCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vaW5saW5lL0xheW91
dEludGVncmF0aW9uTGluZUxheW91dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdy
YXRpb24vaW5saW5lL0xheW91dEludGVncmF0aW9uTGluZUxheW91dC5jcHAKaW5kZXggOTY5ZDdi
ZTAzODdiLi45YWVjOGUwMGUxZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9p
bnRlZ3JhdGlvbi9pbmxpbmUvTGF5b3V0SW50ZWdyYXRpb25MaW5lTGF5b3V0LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vaW5saW5lL0xheW91dEludGVncmF0aW9u
TGluZUxheW91dC5jcHAKQEAgLTEwOTgsNiArMTA5OCw3IEBAIHZvaWQgTGluZUxheW91dDo6cGFp
bnQoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFBvaW50JiBwYWludE9mZnNldCwg
Y29uCiAKICAgICBhdXRvIHNob3VsZFBhaW50Rm9yUGhhc2UgPSBbJl0gewogICAgICAgICBzd2l0
Y2ggKHBhaW50SW5mby5waGFzZSkgeworICAgICAgICBjYXNlIFBhaW50UGhhc2U6OkFjY2Vzc2li
aWxpdHk6CiAgICAgICAgIGNhc2UgUGFpbnRQaGFzZTo6Rm9yZWdyb3VuZDoKICAgICAgICAgY2Fz
ZSBQYWludFBoYXNlOjpFdmVudFJlZ2lvbjoKICAgICAgICAgY2FzZSBQYWludFBoYXNlOjpUZXh0
Q2xpcDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTG9jYWxGcmFtZVZpZXcuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9Mb2NhbEZyYW1lVmlldy5jcHAKaW5kZXggNjNkYzBlNzEy
MmUyLi4zMjk3YWQxZjZiNjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTG9jYWxG
cmFtZVZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTG9jYWxGcmFtZVZpZXcuY3Bw
CkBAIC00Njc2LDYgKzQ2NzYsMTggQEAgdm9pZCBMb2NhbEZyYW1lVmlldzo6aW52YWxpZGF0ZUlt
YWdlc1dpdGhBc3luY0RlY29kZXMoKQogICAgIHRyYXZlcnNlRm9yUGFpbnRJbnZhbGlkYXRpb24o
TnVsbEdyYXBoaWNzQ29udGV4dDo6UGFpbnRJbnZhbGlkYXRpb25SZWFzb25zOjpJbnZhbGlkYXRp
bmdJbWFnZXNXaXRoQXN5bmNEZWNvZGVzKTsKIH0KIAordm9pZCBMb2NhbEZyYW1lVmlldzo6dXBk
YXRlQWNjZXNzaWJpbGl0eU9iamVjdFJlZ2lvbnMoKQoreworI2lmIEVOQUJMRShBQ0NFU1NJQklM
SVRZX0lTT0xBVEVEX1RSRUUpCisgICAgaWYgKCFBWE9iamVjdENhY2hlOjphY2Nlc3NpYmlsaXR5
RW5hYmxlZCgpIHx8ICFBWE9iamVjdENhY2hlOjppc0lzb2xhdGVkVHJlZUVuYWJsZWQoKSkKKyAg
ICAgICAgcmV0dXJuOworCisgICAgTnVsbEdyYXBoaWNzQ29udGV4dCBncmFwaGljc0NvbnRleHQ7
CisgICAgQWNjZXNzaWJpbGl0eVJlZ2lvbkNvbnRleHQgYWNjZXNzaWJpbGl0eVJlZ2lvbkNvbnRl
eHQ7CisgICAgcGFpbnQoZ3JhcGhpY3NDb250ZXh0LCBmcmFtZVJlY3QoKSwgU2VjdXJpdHlPcmln
aW5QYWludFBvbGljeTo6QW55T3JpZ2luLCAmYWNjZXNzaWJpbGl0eVJlZ2lvbkNvbnRleHQpOwor
I2VuZGlmCit9CisKIHZvaWQgTG9jYWxGcmFtZVZpZXc6OnRyYXZlcnNlRm9yUGFpbnRJbnZhbGlk
YXRpb24oTnVsbEdyYXBoaWNzQ29udGV4dDo6UGFpbnRJbnZhbGlkYXRpb25SZWFzb25zIHBhaW50
SW52YWxpZGF0aW9uUmVhc29ucykKIHsKICAgICBpZiAobmVlZHNMYXlvdXQoKSkKQEAgLTQ3MDgs
NyArNDcyMCw3IEBAIHZvaWQgTG9jYWxGcmFtZVZpZXc6OnNldFdhc1Njcm9sbGVkQnlVc2VyKGJv
b2wgd2FzU2Nyb2xsZWRCeVVzZXIpCiAgICAgYWRqdXN0VGlsZWRCYWNraW5nQ292ZXJhZ2UoKTsK
IH0KIAotdm9pZCBMb2NhbEZyYW1lVmlldzo6d2lsbFBhaW50Q29udGVudHMoR3JhcGhpY3NDb250
ZXh0JiBjb250ZXh0LCBjb25zdCBJbnRSZWN0JiwgUGFpbnRpbmdTdGF0ZSYgcGFpbnRpbmdTdGF0
ZSkKK3ZvaWQgTG9jYWxGcmFtZVZpZXc6OndpbGxQYWludENvbnRlbnRzKEdyYXBoaWNzQ29udGV4
dCYgY29udGV4dCwgY29uc3QgSW50UmVjdCYsIFBhaW50aW5nU3RhdGUmIHBhaW50aW5nU3RhdGUs
IFJlZ2lvbkNvbnRleHQqIHJlZ2lvbkNvbnRleHQpCiB7CiAgICAgRG9jdW1lbnQqIGRvY3VtZW50
ID0gbV9mcmFtZS0+ZG9jdW1lbnQoKTsKIApAQCAtNDczOCw2ICs0NzUwLDkgQEAgdm9pZCBMb2Nh
bEZyYW1lVmlldzo6d2lsbFBhaW50Q29udGVudHMoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBj
b25zdCBJbnRSZWN0JiwKICAgICAgICAgbV9wYWludEJlaGF2aW9yLmFkZChQYWludEJlaGF2aW9y
OjpTbmFwc2hvdHRpbmcpOwogICAgIH0KIAorICAgIGlmIChpczxBY2Nlc3NpYmlsaXR5UmVnaW9u
Q29udGV4dD4ocmVnaW9uQ29udGV4dCkpCisgICAgICAgIG1fcGFpbnRCZWhhdmlvci5hZGQoUGFp
bnRCZWhhdmlvcjo6RmxhdHRlbkNvbXBvc2l0aW5nTGF5ZXJzKTsKKwogICAgIHBhaW50aW5nU3Rh
dGUuaXNGbGF0dGVuaW5nUGFpbnRPZlJvb3RGcmFtZSA9IChtX3BhaW50QmVoYXZpb3IgJiBQYWlu
dEJlaGF2aW9yOjpGbGF0dGVuQ29tcG9zaXRpbmdMYXllcnMpICYmICFtX2ZyYW1lLT5vd25lckVs
ZW1lbnQoKSAmJiAhY29udGV4dC5kZXRlY3RpbmdDb250ZW50ZnVsUGFpbnQoKTsKICAgICBpZiAo
cGFpbnRpbmdTdGF0ZS5pc0ZsYXR0ZW5pbmdQYWludE9mUm9vdEZyYW1lKQogICAgICAgICBub3Rp
ZnlXaWRnZXRzSW5BbGxGcmFtZXMoV2lsbFBhaW50RmxhdHRlbmVkKTsKQEAgLTQ3NjYsNyArNDc4
MSw3IEBAIHZvaWQgTG9jYWxGcmFtZVZpZXc6OmRpZFBhaW50Q29udGVudHMoR3JhcGhpY3NDb250
ZXh0JiBjb250ZXh0LCBjb25zdCBJbnRSZWN0JiBkCiAgICAgfQogfQogCi12b2lkIExvY2FsRnJh
bWVWaWV3OjpwYWludENvbnRlbnRzKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgSW50
UmVjdCYgZGlydHlSZWN0LCBTZWN1cml0eU9yaWdpblBhaW50UG9saWN5IHNlY3VyaXR5T3JpZ2lu
UGFpbnRQb2xpY3ksIEV2ZW50UmVnaW9uQ29udGV4dCogZXZlbnRSZWdpb25Db250ZXh0KQordm9p
ZCBMb2NhbEZyYW1lVmlldzo6cGFpbnRDb250ZW50cyhHcmFwaGljc0NvbnRleHQmIGNvbnRleHQs
IGNvbnN0IEludFJlY3QmIGRpcnR5UmVjdCwgU2VjdXJpdHlPcmlnaW5QYWludFBvbGljeSBzZWN1
cml0eU9yaWdpblBhaW50UG9saWN5LCBSZWdpb25Db250ZXh0KiByZWdpb25Db250ZXh0KQogewog
I2lmbmRlZiBOREVCVUcKICAgICBib29sIGZpbGxXaXRoV2FybmluZ0NvbG9yOwpAQCAtNDgwNiw3
ICs0ODIxLDcgQEAgdm9pZCBMb2NhbEZyYW1lVmlldzo6cGFpbnRDb250ZW50cyhHcmFwaGljc0Nv
bnRleHQmIGNvbnRleHQsIGNvbnN0IEludFJlY3QmIGRpcnQKICAgICB9CiAKICAgICBQYWludGlu
Z1N0YXRlIHBhaW50aW5nU3RhdGU7Ci0gICAgd2lsbFBhaW50Q29udGVudHMoY29udGV4dCwgZGly
dHlSZWN0LCBwYWludGluZ1N0YXRlKTsKKyAgICB3aWxsUGFpbnRDb250ZW50cyhjb250ZXh0LCBk
aXJ0eVJlY3QsIHBhaW50aW5nU3RhdGUsIHJlZ2lvbkNvbnRleHQpOwogCiAgICAgLy8gbV9ub2Rl
VG9EcmF3IGlzIHVzZWQgdG8gZHJhdyBvbmx5IG9uZSBlbGVtZW50IChhbmQgaXRzIGRlc2NlbmRh
bnRzKQogICAgIFJlbmRlck9iamVjdCogcmVuZGVyZXIgPSBtX25vZGVUb0RyYXcgPyBtX25vZGVU
b0RyYXctPnJlbmRlcmVyKCkgOiBudWxscHRyOwpAQCAtNDgxNCw5ICs0ODI5LDkgQEAgdm9pZCBM
b2NhbEZyYW1lVmlldzo6cGFpbnRDb250ZW50cyhHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNv
bnN0IEludFJlY3QmIGRpcnQKIAogICAgIFJlbmRlck9iamVjdDo6U2V0TGF5b3V0TmVlZGVkRm9y
YmlkZGVuU2NvcGUgZm9yYmlkU2V0TmVlZHNMYXlvdXQocm9vdExheWVyLT5yZW5kZXJlcigpKTsK
IAotICAgIHJvb3RMYXllci0+cGFpbnQoY29udGV4dCwgZGlydHlSZWN0LCBMYXlvdXRTaXplKCks
IG1fcGFpbnRCZWhhdmlvciwgcmVuZGVyZXIsIHsgfSwgc2VjdXJpdHlPcmlnaW5QYWludFBvbGlj
eSA9PSBTZWN1cml0eU9yaWdpblBhaW50UG9saWN5OjpBbnlPcmlnaW4gPyBSZW5kZXJMYXllcjo6
U2VjdXJpdHlPcmlnaW5QYWludFBvbGljeTo6QW55T3JpZ2luIDogUmVuZGVyTGF5ZXI6OlNlY3Vy
aXR5T3JpZ2luUGFpbnRQb2xpY3k6OkFjY2Vzc2libGVPcmlnaW5Pbmx5LCBldmVudFJlZ2lvbkNv
bnRleHQpOworICAgIHJvb3RMYXllci0+cGFpbnQoY29udGV4dCwgZGlydHlSZWN0LCBMYXlvdXRT
aXplKCksIG1fcGFpbnRCZWhhdmlvciwgcmVuZGVyZXIsIHsgfSwgc2VjdXJpdHlPcmlnaW5QYWlu
dFBvbGljeSA9PSBTZWN1cml0eU9yaWdpblBhaW50UG9saWN5OjpBbnlPcmlnaW4gPyBSZW5kZXJM
YXllcjo6U2VjdXJpdHlPcmlnaW5QYWludFBvbGljeTo6QW55T3JpZ2luIDogUmVuZGVyTGF5ZXI6
OlNlY3VyaXR5T3JpZ2luUGFpbnRQb2xpY3k6OkFjY2Vzc2libGVPcmlnaW5Pbmx5LCByZWdpb25D
b250ZXh0KTsKICAgICBpZiAoYXV0byogc2Nyb2xsYWJsZVJvb3RMYXllciA9IHJvb3RMYXllci0+
c2Nyb2xsYWJsZUFyZWEoKSkgewotICAgICAgICBpZiAoc2Nyb2xsYWJsZVJvb3RMYXllci0+Y29u
dGFpbnNEaXJ0eU92ZXJsYXlTY3JvbGxiYXJzKCkgJiYgIWV2ZW50UmVnaW9uQ29udGV4dCkKKyAg
ICAgICAgaWYgKHNjcm9sbGFibGVSb290TGF5ZXItPmNvbnRhaW5zRGlydHlPdmVybGF5U2Nyb2xs
YmFycygpICYmICFyZWdpb25Db250ZXh0KQogICAgICAgICAgICAgc2Nyb2xsYWJsZVJvb3RMYXll
ci0+cGFpbnRPdmVybGF5U2Nyb2xsYmFycyhjb250ZXh0LCBkaXJ0eVJlY3QsIG1fcGFpbnRCZWhh
dmlvciwgcmVuZGVyZXIpOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9Mb2NhbEZyYW1lVmlldy5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Mb2NhbEZyYW1lVmlldy5o
CmluZGV4IGJkMjA0NGFlMjYwZS4uM2IzNzBjOTE4YjQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0xvY2FsRnJhbWVWaWV3LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Mb2Nh
bEZyYW1lVmlldy5oCkBAIC01MywxMyArNTMsMTMgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xh
c3MgQVhPYmplY3RDYWNoZTsKIGNsYXNzIENvbnRhaW5lck5vZGU7CiBjbGFzcyBFbGVtZW50Owot
Y2xhc3MgRXZlbnRSZWdpb25Db250ZXh0OwogY2xhc3MgRmxvYXRTaXplOwogY2xhc3MgRnJhbWU7
CiBjbGFzcyBHcmFwaGljc0NvbnRleHQ7CiBjbGFzcyBIVE1MRnJhbWVPd25lckVsZW1lbnQ7CiBj
bGFzcyBMb2NhbEZyYW1lOwogY2xhc3MgUGFnZTsKK2NsYXNzIFJlZ2lvbkNvbnRleHQ7CiBjbGFz
cyBSZW5kZXJCb3g7CiBjbGFzcyBSZW5kZXJFbGVtZW50OwogY2xhc3MgUmVuZGVyRW1iZWRkZWRP
YmplY3Q7CkBAIC00MDYsNyArNDA2LDcgQEAgcHVibGljOgogICAgIHZvaWQgYWRkRW1iZWRkZWRP
YmplY3RUb1VwZGF0ZShSZW5kZXJFbWJlZGRlZE9iamVjdCYpOwogICAgIHZvaWQgcmVtb3ZlRW1i
ZWRkZWRPYmplY3RUb1VwZGF0ZShSZW5kZXJFbWJlZGRlZE9iamVjdCYpOwogCi0gICAgV0VCQ09S
RV9FWFBPUlQgdm9pZCBwYWludENvbnRlbnRzKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEludFJl
Y3QmIGRpcnR5UmVjdCwgU2VjdXJpdHlPcmlnaW5QYWludFBvbGljeSA9IFNlY3VyaXR5T3JpZ2lu
UGFpbnRQb2xpY3k6OkFueU9yaWdpbiwgRXZlbnRSZWdpb25Db250ZXh0KiA9IG51bGxwdHIpIGZp
bmFsOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcGFpbnRDb250ZW50cyhHcmFwaGljc0NvbnRl
eHQmLCBjb25zdCBJbnRSZWN0JiBkaXJ0eVJlY3QsIFNlY3VyaXR5T3JpZ2luUGFpbnRQb2xpY3kg
PSBTZWN1cml0eU9yaWdpblBhaW50UG9saWN5OjpBbnlPcmlnaW4sIFJlZ2lvbkNvbnRleHQqID0g
bnVsbHB0cikgZmluYWw7CiAKICAgICBzdHJ1Y3QgUGFpbnRpbmdTdGF0ZSB7CiAgICAgICAgIE9w
dGlvblNldDxQYWludEJlaGF2aW9yPiBwYWludEJlaGF2aW9yOwpAQCAtNDIwLDcgKzQyMCw3IEBA
IHB1YmxpYzoKICAgICAgICAgfQogICAgIH07CiAKLSAgICB2b2lkIHdpbGxQYWludENvbnRlbnRz
KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEludFJlY3QmIGRpcnR5UmVjdCwgUGFpbnRpbmdTdGF0
ZSYpOworICAgIHZvaWQgd2lsbFBhaW50Q29udGVudHMoR3JhcGhpY3NDb250ZXh0JiwgY29uc3Qg
SW50UmVjdCYgZGlydHlSZWN0LCBQYWludGluZ1N0YXRlJiwgUmVnaW9uQ29udGV4dCogPSBudWxs
cHRyKTsKICAgICB2b2lkIGRpZFBhaW50Q29udGVudHMoR3JhcGhpY3NDb250ZXh0JiwgY29uc3Qg
SW50UmVjdCYgZGlydHlSZWN0LCBQYWludGluZ1N0YXRlJik7CiAKICNpZiBQTEFURk9STShJT1Nf
RkFNSUxZKQpAQCAtNzEyLDYgKzcxMiw3IEBAIHB1YmxpYzoKIAogICAgIFdFQkNPUkVfRVhQT1JU
IHZvaWQgaW52YWxpZGF0ZUNvbnRyb2xUaW50cygpOwogICAgIHZvaWQgaW52YWxpZGF0ZUltYWdl
c1dpdGhBc3luY0RlY29kZXMoKTsKKyAgICB2b2lkIHVwZGF0ZUFjY2Vzc2liaWxpdHlPYmplY3RS
ZWdpb25zKCk7CiAKICAgICB2b2lkIGludmFsaWRhdGVTY3JvbGxiYXJzRm9yQWxsU2Nyb2xsYWJs
ZUFyZWFzKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUmVtb3RlRnJhbWVW
aWV3LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUmVtb3RlRnJhbWVWaWV3LmNwcAppbmRleCBl
MGE2MTRhZjFlYjAuLjkzMjgxYjg1ZjVkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9SZW1vdGVGcmFtZVZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUmVtb3RlRnJh
bWVWaWV3LmNwcApAQCAtOTksNyArOTksNyBAQCBJbnRSZWN0IFJlbW90ZUZyYW1lVmlldzo6d2lu
ZG93Q2xpcFJlY3QoKSBjb25zdAogICAgIHJldHVybiB7IH07CiB9CiAKLXZvaWQgUmVtb3RlRnJh
bWVWaWV3OjpwYWludENvbnRlbnRzKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEludFJlY3QmLCBT
ZWN1cml0eU9yaWdpblBhaW50UG9saWN5LCBFdmVudFJlZ2lvbkNvbnRleHQqKQordm9pZCBSZW1v
dGVGcmFtZVZpZXc6OnBhaW50Q29udGVudHMoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgSW50UmVj
dCYsIFNlY3VyaXR5T3JpZ2luUGFpbnRQb2xpY3ksIFJlZ2lvbkNvbnRleHQqKQogewogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1JlbW90ZUZyYW1lVmlldy5oIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9SZW1vdGVGcmFtZVZpZXcuaAppbmRleCAzZjJmZTlmMTZmMDQuLjdiMjJk
Mjg4YzFmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9SZW1vdGVGcmFtZVZpZXcu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1JlbW90ZUZyYW1lVmlldy5oCkBAIC01Miw3ICs1
Miw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBpbnZhbGlkYXRlU2Nyb2xsYmFyUmVjdChTY3JvbGxi
YXImLCBjb25zdCBJbnRSZWN0JikgZmluYWw7CiAgICAgSG9zdFdpbmRvdyogaG9zdFdpbmRvdygp
IGNvbnN0IGZpbmFsOwogICAgIEludFJlY3Qgd2luZG93Q2xpcFJlY3QoKSBjb25zdCBmaW5hbDsK
LSAgICB2b2lkIHBhaW50Q29udGVudHMoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgSW50UmVjdCYg
ZGFtYWdlUmVjdCwgU2VjdXJpdHlPcmlnaW5QYWludFBvbGljeSwgRXZlbnRSZWdpb25Db250ZXh0
KikgZmluYWw7CisgICAgdm9pZCBwYWludENvbnRlbnRzKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0
IEludFJlY3QmIGRhbWFnZVJlY3QsIFNlY3VyaXR5T3JpZ2luUGFpbnRQb2xpY3ksIFJlZ2lvbkNv
bnRleHQqKSBmaW5hbDsKICAgICB2b2lkIGFkZGVkT3JSZW1vdmVkU2Nyb2xsYmFyKCkgZmluYWw7
CiAgICAgdm9pZCBkZWxlZ2F0ZWRTY3JvbGxpbmdNb2RlRGlkQ2hhbmdlKCkgZmluYWw7CiAgICAg
dm9pZCB1cGRhdGVTY3JvbGxDb3JuZXIoKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL1Njcm9sbFZpZXcuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Ny
b2xsVmlldy5jcHAKaW5kZXggM2FmMmYxYmY3Yjc0Li45NjM0MjE1NjVjM2UgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbFZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL1Njcm9sbFZpZXcuY3BwCkBAIC0xMjc2LDE0ICsxMjc2LDE0IEBAIHZvaWQg
U2Nyb2xsVmlldzo6cGFpbnRQYW5TY3JvbGxJY29uKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkK
ICAgICBjb250ZXh0LmRyYXdJbWFnZShwYW5TY3JvbGxJY29uLCBpY29uR0NQb2ludCk7CiB9CiAK
LXZvaWQgU2Nyb2xsVmlldzo6cGFpbnQoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBJ
bnRSZWN0JiByZWN0LCBTZWN1cml0eU9yaWdpblBhaW50UG9saWN5IHNlY3VyaXR5T3JpZ2luUGFp
bnRQb2xpY3ksIEV2ZW50UmVnaW9uQ29udGV4dCogZXZlbnRSZWdpb25Db250ZXh0KQordm9pZCBT
Y3JvbGxWaWV3OjpwYWludChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEludFJlY3Qm
IHJlY3QsIFNlY3VyaXR5T3JpZ2luUGFpbnRQb2xpY3kgc2VjdXJpdHlPcmlnaW5QYWludFBvbGlj
eSwgUmVnaW9uQ29udGV4dCogcmVnaW9uQ29udGV4dCkKIHsKICAgICBpZiAocGxhdGZvcm1XaWRn
ZXQoKSkgewogICAgICAgICBXaWRnZXQ6OnBhaW50KGNvbnRleHQsIHJlY3QpOwogICAgICAgICBy
ZXR1cm47CiAgICAgfQogCi0gICAgaWYgKGNvbnRleHQucGFpbnRpbmdEaXNhYmxlZCgpICYmICFj
b250ZXh0LnBlcmZvcm1pbmdQYWludEludmFsaWRhdGlvbigpICYmICFldmVudFJlZ2lvbkNvbnRl
eHQpCisgICAgaWYgKGNvbnRleHQucGFpbnRpbmdEaXNhYmxlZCgpICYmICFjb250ZXh0LnBlcmZv
cm1pbmdQYWludEludmFsaWRhdGlvbigpICYmICFyZWdpb25Db250ZXh0KQogICAgICAgICByZXR1
cm47CiAKICAgICBJbnRSZWN0IGRvY3VtZW50RGlydHlSZWN0ID0gcmVjdDsKQEAgLTEzMDYsNyAr
MTMwNiw3IEBAIHZvaWQgU2Nyb2xsVmlldzo6cGFpbnQoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0
LCBjb25zdCBJbnRSZWN0JiByZWN0LCBTZWN1cml0eU9yCiAgICAgICAgICAgICBjb250ZXh0LmNs
aXAodmlzaWJsZUNvbnRlbnRSZWN0KExlZ2FjeUlPU0RvY3VtZW50VmlzaWJsZVJlY3QpKTsKICAg
ICAgICAgfQogCi0gICAgICAgIHBhaW50Q29udGVudHMoY29udGV4dCwgZG9jdW1lbnREaXJ0eVJl
Y3QsIHNlY3VyaXR5T3JpZ2luUGFpbnRQb2xpY3ksIGV2ZW50UmVnaW9uQ29udGV4dCk7CisgICAg
ICAgIHBhaW50Q29udGVudHMoY29udGV4dCwgZG9jdW1lbnREaXJ0eVJlY3QsIHNlY3VyaXR5T3Jp
Z2luUGFpbnRQb2xpY3ksIHJlZ2lvbkNvbnRleHQpOwogICAgIH0KIAogI2lmIEhBVkUoUlVCQkVS
X0JBTkRJTkcpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxWaWV3
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxWaWV3LmgKaW5kZXggZmExMDdjZjkx
MWMzLi4zYmJlN2EyOGZhOTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Nj
cm9sbFZpZXcuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxWaWV3LmgKQEAg
LTU3LDEwICs1NywxMCBAQCBPQkpDX0NMQVNTIFdBS1ZpZXc7CiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAotY2xhc3MgRXZlbnRSZWdpb25Db250ZXh0OwogY2xhc3MgRmxvYXRRdWFkOwogY2xhc3Mg
SG9zdFdpbmRvdzsKIGNsYXNzIExlZ2FjeVRpbGVDYWNoZTsKK2NsYXNzIFJlZ2lvbkNvbnRleHQ7
CiBjbGFzcyBTY3JvbGxiYXI7CiAKIGVudW0gY2xhc3MgRGVsZWdhdGVkU2Nyb2xsaW5nTW9kZSA6
IHVpbnQ4X3QgewpAQCAtMzgxLDcgKzM4MSw3IEBAIHB1YmxpYzoKICAgICB9CiAKICAgICAvLyBX
aWRnZXQgb3ZlcnJpZGUuIEhhbmRsZXMgcGFpbnRpbmcgb2YgdGhlIGNvbnRlbnRzIG9mIHRoZSB2
aWV3IGFzIHdlbGwgYXMgdGhlIHNjcm9sbGJhcnMuCi0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBw
YWludChHcmFwaGljc0NvbnRleHQmLCBjb25zdCBJbnRSZWN0JiwgV2lkZ2V0OjpTZWN1cml0eU9y
aWdpblBhaW50UG9saWN5ID0gU2VjdXJpdHlPcmlnaW5QYWludFBvbGljeTo6QW55T3JpZ2luLCBF
dmVudFJlZ2lvbkNvbnRleHQqID0gbnVsbHB0cikgZmluYWw7CisgICAgV0VCQ09SRV9FWFBPUlQg
dm9pZCBwYWludChHcmFwaGljc0NvbnRleHQmLCBjb25zdCBJbnRSZWN0JiwgV2lkZ2V0OjpTZWN1
cml0eU9yaWdpblBhaW50UG9saWN5ID0gU2VjdXJpdHlPcmlnaW5QYWludFBvbGljeTo6QW55T3Jp
Z2luLCBSZWdpb25Db250ZXh0KiA9IG51bGxwdHIpIGZpbmFsOwogICAgIHZvaWQgcGFpbnRTY3Jv
bGxiYXJzKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEludFJlY3QmKTsKIAogICAgIC8vIFdpZGdl
dCBvdmVycmlkZXMgdG8gZW5zdXJlIHRoYXQgb3VyIGNoaWxkcmVuJ3MgdmlzaWJpbGl0eSBzdGF0
dXMgaXMga2VwdCB1cCB0byBkYXRlIHdoZW4gd2UgZ2V0IHNob3duIGFuZCBoaWRkZW4uCkBAIC00
MjMsNyArNDIzLDcgQEAgcHJvdGVjdGVkOgogICAgIFNjcm9sbFZpZXcoKTsKIAogICAgIHZpcnR1
YWwgdm9pZCByZXBhaW50Q29udGVudFJlY3RhbmdsZShjb25zdCBJbnRSZWN0Jik7Ci0gICAgdmly
dHVhbCB2b2lkIHBhaW50Q29udGVudHMoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgSW50UmVjdCYg
ZGFtYWdlUmVjdCwgU2VjdXJpdHlPcmlnaW5QYWludFBvbGljeSA9IFNlY3VyaXR5T3JpZ2luUGFp
bnRQb2xpY3k6OkFueU9yaWdpbiwgRXZlbnRSZWdpb25Db250ZXh0KiA9IG51bGxwdHIpID0gMDsK
KyAgICB2aXJ0dWFsIHZvaWQgcGFpbnRDb250ZW50cyhHcmFwaGljc0NvbnRleHQmLCBjb25zdCBJ
bnRSZWN0JiBkYW1hZ2VSZWN0LCBTZWN1cml0eU9yaWdpblBhaW50UG9saWN5ID0gU2VjdXJpdHlP
cmlnaW5QYWludFBvbGljeTo6QW55T3JpZ2luLCBSZWdpb25Db250ZXh0KiA9IG51bGxwdHIpID0g
MDsKIAogICAgIHZpcnR1YWwgdm9pZCBwYWludE92ZXJoYW5nQXJlYXMoR3JhcGhpY3NDb250ZXh0
JiwgY29uc3QgSW50UmVjdCYgaG9yaXpvbnRhbE92ZXJoYW5nQXJlYSwgY29uc3QgSW50UmVjdCYg
dmVydGljYWxPdmVyaGFuZ0FyZWEsIGNvbnN0IEludFJlY3QmIGRpcnR5UmVjdCk7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGJhci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9TY3JvbGxiYXIuY3BwCmluZGV4IDJkN2Y0YTVmYWI5Yi4uZTEzNjgwMjkw
NDViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxiYXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGJhci5jcHAKQEAgLTE2MCw3ICsxNjAs
NyBAQCB2b2lkIFNjcm9sbGJhcjo6dXBkYXRlVGh1bWJQcm9wb3J0aW9uKCkKICAgICB1cGRhdGVU
aHVtYigpOwogfQogCi12b2lkIFNjcm9sbGJhcjo6cGFpbnQoR3JhcGhpY3NDb250ZXh0JiBjb250
ZXh0LCBjb25zdCBJbnRSZWN0JiBkYW1hZ2VSZWN0LCBXaWRnZXQ6OlNlY3VyaXR5T3JpZ2luUGFp
bnRQb2xpY3ksIEV2ZW50UmVnaW9uQ29udGV4dCopCit2b2lkIFNjcm9sbGJhcjo6cGFpbnQoR3Jh
cGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBJbnRSZWN0JiBkYW1hZ2VSZWN0LCBXaWRnZXQ6
OlNlY3VyaXR5T3JpZ2luUGFpbnRQb2xpY3ksIFJlZ2lvbkNvbnRleHQqKQogewogICAgIGlmIChj
b250ZXh0LmludmFsaWRhdGluZ0NvbnRyb2xUaW50cygpICYmIHRoZW1lKCkuc3VwcG9ydHNDb250
cm9sVGludHMoKSkgewogICAgICAgICBpbnZhbGlkYXRlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxiYXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Nj
cm9sbGJhci5oCmluZGV4IGU3NGFkMzZhNWJkNi4uMjllOWIyZWMzMzcyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxiYXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9TY3JvbGxiYXIuaApAQCAtODUsNyArODUsNyBAQCBwdWJsaWM6CiAgICAgV0VCQ09S
RV9FWFBPUlQgdm9pZCBzZXRQcm9wb3J0aW9uKGludCB2aXNpYmxlU2l6ZSwgaW50IHRvdGFsU2l6
ZSk7CiAgICAgdm9pZCBzZXRQcmVzc2VkUG9zKGludCBwKSB7IG1fcHJlc3NlZFBvcyA9IHA7IH0K
IAotICAgIHZvaWQgcGFpbnQoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgSW50UmVjdCYgZGFtYWdl
UmVjdCwgV2lkZ2V0OjpTZWN1cml0eU9yaWdpblBhaW50UG9saWN5ID0gU2VjdXJpdHlPcmlnaW5Q
YWludFBvbGljeTo6QW55T3JpZ2luLCBFdmVudFJlZ2lvbkNvbnRleHQqID0gbnVsbHB0cikgb3Zl
cnJpZGU7CisgICAgdm9pZCBwYWludChHcmFwaGljc0NvbnRleHQmLCBjb25zdCBJbnRSZWN0JiBk
YW1hZ2VSZWN0LCBXaWRnZXQ6OlNlY3VyaXR5T3JpZ2luUGFpbnRQb2xpY3kgPSBTZWN1cml0eU9y
aWdpblBhaW50UG9saWN5OjpBbnlPcmlnaW4sIFJlZ2lvbkNvbnRleHQqID0gbnVsbHB0cikgb3Zl
cnJpZGU7CiAKICAgICBib29sIGVuYWJsZWQoKSBjb25zdCB7IHJldHVybiBtX2VuYWJsZWQ7IH0K
ICAgICB2aXJ0dWFsIHZvaWQgc2V0RW5hYmxlZChib29sKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1dpZGdldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9XaWRn
ZXQuY3BwCmluZGV4IGQ5ZDhiYTVkNzY2OC4uNGIyNGI0YjU5NWNiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9XaWRnZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL1dpZGdldC5jcHAKQEAgLTI4OCw3ICsyODgsNyBAQCB2b2lkIFdpZGdldDo6c2V0RnJhbWVS
ZWN0KGNvbnN0IEludFJlY3QmIHJlY3QpCiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KIAotdm9p
ZCBXaWRnZXQ6OnBhaW50KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEludFJlY3QmLCBTZWN1cml0
eU9yaWdpblBhaW50UG9saWN5LCBFdmVudFJlZ2lvbkNvbnRleHQqKQordm9pZCBXaWRnZXQ6OnBh
aW50KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEludFJlY3QmLCBTZWN1cml0eU9yaWdpblBhaW50
UG9saWN5LCBSZWdpb25Db250ZXh0KikKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vV2lkZ2V0LmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9XaWRnZXQuaAppbmRleCA4ODNmMmM3OWM0MWIuLmQwMDJlMDg2ZGZiOSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vV2lkZ2V0LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vV2lkZ2V0LmgKQEAgLTYwLDExICs2MCwxMSBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKIGNsYXNzIEN1cnNvcjsKIGNsYXNzIEV2ZW50OwotY2xhc3MgRXZlbnRSZWdpb25D
b250ZXh0OwogY2xhc3MgRm9udENhc2NhZGU7CiBjbGFzcyBHcmFwaGljc0NvbnRleHQ7CiBjbGFz
cyBMb2NhbEZyYW1lVmlldzsKIGNsYXNzIFBsYXRmb3JtTW91c2VFdmVudDsKK2NsYXNzIFJlZ2lv
bkNvbnRleHQ7CiBjbGFzcyBTY3JvbGxWaWV3OwogCiBlbnVtIFdpZGdldE5vdGlmaWNhdGlvbiB7
IFdpbGxQYWludEZsYXR0ZW5lZCwgRGlkUGFpbnRGbGF0dGVuZWQgfTsKQEAgLTExMCw3ICsxMTAs
NyBAQCBwdWJsaWM6CiAKICAgICBlbnVtIGNsYXNzIFNlY3VyaXR5T3JpZ2luUGFpbnRQb2xpY3kg
eyBBbnlPcmlnaW4sIEFjY2Vzc2libGVPcmlnaW5Pbmx5IH07CiAKLSAgICBXRUJDT1JFX0VYUE9S
VCB2aXJ0dWFsIHZvaWQgcGFpbnQoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgSW50UmVjdCYsIFNl
Y3VyaXR5T3JpZ2luUGFpbnRQb2xpY3kgPSBTZWN1cml0eU9yaWdpblBhaW50UG9saWN5OjpBbnlP
cmlnaW4sIEV2ZW50UmVnaW9uQ29udGV4dCogPSBudWxscHRyKTsKKyAgICBXRUJDT1JFX0VYUE9S
VCB2aXJ0dWFsIHZvaWQgcGFpbnQoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgSW50UmVjdCYsIFNl
Y3VyaXR5T3JpZ2luUGFpbnRQb2xpY3kgPSBTZWN1cml0eU9yaWdpblBhaW50UG9saWN5OjpBbnlP
cmlnaW4sIFJlZ2lvbkNvbnRleHQqID0gbnVsbHB0cik7CiAgICAgdm9pZCBpbnZhbGlkYXRlKCkg
eyBpbnZhbGlkYXRlUmVjdChib3VuZHNSZWN0KCkpOyB9CiAgICAgdmlydHVhbCB2b2lkIGludmFs
aWRhdGVSZWN0KGNvbnN0IEludFJlY3QmKSA9IDA7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2d0ay9XaWRnZXRHdGsuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3RrL1dpZGdldEd0ay5jcHAKaW5kZXggYmM2Yzk0NDlmYzlkLi5mNzU0MTY5MGIyMTAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9XaWRnZXRHdGsuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9XaWRnZXRHdGsuY3BwCkBAIC0zNSw2ICszNSw4IEBA
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgUmVnaW9uQ29udGV4dDsKKwogV2lkZ2V0
Ojp+V2lkZ2V0KCkKIHsKICAgICBBU1NFUlQoIXBhcmVudCgpKTsKQEAgLTYwLDcgKzYyLDcgQEAg
dm9pZCBXaWRnZXQ6OmhpZGUoKQogICAgIHNldFNlbGZWaXNpYmxlKGZhbHNlKTsKIH0KIAotdm9p
ZCBXaWRnZXQ6OnBhaW50KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEludFJlY3QmLCBTZWN1cml0
eU9yaWdpblBhaW50UG9saWN5LCBFdmVudFJlZ2lvbkNvbnRleHQqKQordm9pZCBXaWRnZXQ6OnBh
aW50KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEludFJlY3QmLCBTZWN1cml0eU9yaWdpblBhaW50
UG9saWN5LCBSZWdpb25Db250ZXh0KikKIHsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vaW9zL1dpZGdldElPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lv
cy9XaWRnZXRJT1MubW0KaW5kZXggZTk2NDk0YmM5MTg5Li4yNDNkNzZiMGZmOTMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XaWRnZXRJT1MubW0KKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dpZGdldElPUy5tbQpAQCAtMTQ2LDcgKzE0Niw3IEBAIE5T
VmlldyogV2lkZ2V0OjpnZXRPdXRlclZpZXcoKSBjb25zdAogICAgIHJldHVybiB2aWV3OwogfQog
Ci12b2lkIFdpZGdldDo6cGFpbnQoR3JhcGhpY3NDb250ZXh0JiBwLCBjb25zdCBJbnRSZWN0JiBy
LCBTZWN1cml0eU9yaWdpblBhaW50UG9saWN5LCBFdmVudFJlZ2lvbkNvbnRleHQqKQordm9pZCBX
aWRnZXQ6OnBhaW50KEdyYXBoaWNzQ29udGV4dCYgcCwgY29uc3QgSW50UmVjdCYgciwgU2VjdXJp
dHlPcmlnaW5QYWludFBvbGljeSwgUmVnaW9uQ29udGV4dCopCiB7CiAgICAgaWYgKHAucGFpbnRp
bmdEaXNhYmxlZCgpKQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tYWMvV2lkZ2V0TWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFj
L1dpZGdldE1hYy5tbQppbmRleCAyNTg3NDk5MTY5MmQuLjMwOWY5ZDBhNmY1YiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dpZGdldE1hYy5tbQorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2lkZ2V0TWFjLm1tCkBAIC0xODYsNyArMTg2LDcgQEAgTlNW
aWV3ICpXaWRnZXQ6OmdldE91dGVyVmlldygpIGNvbnN0CiAgICAgcmV0dXJuIHZpZXc7CiB9CiAK
LXZvaWQgV2lkZ2V0OjpwYWludChHcmFwaGljc0NvbnRleHQmIHAsIGNvbnN0IEludFJlY3QmIHIs
IFNlY3VyaXR5T3JpZ2luUGFpbnRQb2xpY3ksIEV2ZW50UmVnaW9uQ29udGV4dCopCit2b2lkIFdp
ZGdldDo6cGFpbnQoR3JhcGhpY3NDb250ZXh0JiBwLCBjb25zdCBJbnRSZWN0JiByLCBTZWN1cml0
eU9yaWdpblBhaW50UG9saWN5LCBSZWdpb25Db250ZXh0KikKIHsKICAgICBpZiAocC5wYWludGlu
Z0Rpc2FibGVkKCkpCiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL3dpbi9XaWRnZXRXaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2lu
L1dpZGdldFdpbi5jcHAKaW5kZXggY2I1MmIxNzE3YmU3Li4wNjZhYThjMWFlMjUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9XaWRnZXRXaW4uY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9XaWRnZXRXaW4uY3BwCkBAIC0zOSw2ICszOSw4IEBACiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgUmVnaW9uQ29udGV4dDsKKwogV2lkZ2V0Ojp+
V2lkZ2V0KCkgCiB7CiAgICAgQVNTRVJUKCFwYXJlbnQoKSk7CkBAIC02Nyw3ICs2OSw3IEBAIHZv
aWQgV2lkZ2V0OjpzZXRDdXJzb3IoY29uc3QgQ3Vyc29yJiBjdXJzb3IpCiAgICAgICAgIHZpZXct
Pmhvc3RXaW5kb3coKS0+c2V0Q3Vyc29yKGN1cnNvcik7CiB9CiAKLXZvaWQgV2lkZ2V0OjpwYWlu
dChHcmFwaGljc0NvbnRleHQmLCBjb25zdCBJbnRSZWN0JiwgU2VjdXJpdHlPcmlnaW5QYWludFBv
bGljeSwgRXZlbnRSZWdpb25Db250ZXh0KikKK3ZvaWQgV2lkZ2V0OjpwYWludChHcmFwaGljc0Nv
bnRleHQmLCBjb25zdCBJbnRSZWN0JiwgU2VjdXJpdHlPcmlnaW5QYWludFBvbGljeSwgUmVnaW9u
Q29udGV4dCopCiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9B
Y2Nlc3NpYmlsaXR5UmVnaW9uQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
QWNjZXNzaWJpbGl0eVJlZ2lvbkNvbnRleHQuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMC4uMTFlMzkzN2VmNTZmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL0FjY2Vzc2liaWxpdHlSZWdpb25Db250ZXh0LmNwcApAQCAtMCwwICsx
LDQyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgor
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkFjY2Vz
c2liaWxpdHlSZWdpb25Db250ZXh0LmgiCisKKyNpbmNsdWRlICJSZW5kZXJCb3guaCIKKworbmFt
ZXNwYWNlIFdlYkNvcmUgeworCitBY2Nlc3NpYmlsaXR5UmVnaW9uQ29udGV4dDo6fkFjY2Vzc2li
aWxpdHlSZWdpb25Db250ZXh0KCkgPSBkZWZhdWx0OworCit2b2lkIEFjY2Vzc2liaWxpdHlSZWdp
b25Db250ZXh0Ojp0YWtlQm91bmRzKGNvbnN0IFJlbmRlckJveCYgcmVuZGVyQm94LCBGbG9hdFJl
Y3QgcGFpbnRSZWN0KQoreworICAgIC8vIEZJWE1FOiBVc2UgYHBhaW50UmVjdGAgdG8gcXVldWUg
YSBmcmFtZSB1cGRhdGUgZm9yIHRoZSBBWCBvYmplY3QgYXNzb2NpYXRlZCB3aXRoIGByZW5kZXJC
b3hgLgorICAgIFVOVVNFRF9QQVJBTShyZW5kZXJCb3gpOworICAgIFVOVVNFRF9QQVJBTShwYWlu
dFJlY3QpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvQWNjZXNzaWJpbGl0eVJlZ2lvbkNvbnRleHQuaCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9BY2Nlc3NpYmlsaXR5UmVnaW9uQ29udGV4dC5oCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uNGJjYTI3OTE1OTlhCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0FjY2Vzc2liaWxpdHlSZWdpb25Db250ZXh0
LmgKQEAgLTAsMCArMSw2OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMyBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVk
ZSAiRmxvYXRSZWN0LmgiCisjaW5jbHVkZSAiUmVnaW9uQ29udGV4dC5oIgorCituYW1lc3BhY2Ug
V2ViQ29yZSB7CisKK2NsYXNzIFJlbmRlckJveDsKKworY2xhc3MgQWNjZXNzaWJpbGl0eVJlZ2lv
bkNvbnRleHQgOiBwdWJsaWMgUmVnaW9uQ29udGV4dCB7CitwdWJsaWM6CisgICAgQWNjZXNzaWJp
bGl0eVJlZ2lvbkNvbnRleHQoKSA9IGRlZmF1bHQ7CisgICAgdmlydHVhbCB+QWNjZXNzaWJpbGl0
eVJlZ2lvbkNvbnRleHQoKTsKKworICAgIGJvb2wgaXNBY2Nlc3NpYmlsaXR5UmVnaW9uQ29udGV4
dCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KKworICAgIHZvaWQgdGFrZUJvdW5kcyhj
b25zdCBSZW5kZXJCb3gmLCBGbG9hdFJlY3QgLyogcGFpbnRSZWN0ICovKTsKKworcHJpdmF0ZToK
KyAgICAvLyBNYXBzIHRoZSBnaXZlbiByZWN0IHVzaW5nIHRoZSBjdXJyZW50IHRyYW5zZm9ybSBh
bmQgY2xpcCBzdGFjay4KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBSZWN0VD4KKyAgICBGbG9hdFJl
Y3QgbWFwUmVjdChSZWN0VCYmIHJlY3QpCisgICAgeworICAgICAgICBib29sIGhhc1RyYW5zZm9y
bSA9IG1fdHJhbnNmb3JtU3RhY2suc2l6ZSgpOworICAgICAgICBib29sIGhhc0NsaXAgPSBtX2Ns
aXBTdGFjay5zaXplKCk7CisgICAgICAgIGlmICghaGFzVHJhbnNmb3JtICYmICFoYXNDbGlwKQor
ICAgICAgICAgICAgcmV0dXJuIHJlY3Q7CisKKyAgICAgICAgRmxvYXRSZWN0IG1hcHBlZFJlY3Qg
PSByZWN0OworICAgICAgICBpZiAoaGFzVHJhbnNmb3JtKQorICAgICAgICAgICAgbWFwcGVkUmVj
dCA9IG1fdHJhbnNmb3JtU3RhY2subGFzdCgpLm1hcFJlY3QobWFwcGVkUmVjdCk7CisgICAgICAg
IGlmIChoYXNDbGlwKQorICAgICAgICAgICAgbWFwcGVkUmVjdC5pbnRlcnNlY3QobV9jbGlwU3Rh
Y2subGFzdCgpKTsKKworICAgICAgICByZXR1cm4gbWFwcGVkUmVjdDsKKyAgICB9CisKK307IC8v
IGNsYXNzIEFjY2Vzc2liaWxpdHlSZWdpb25Db250ZXh0CisKK30gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKKworU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19CRUdJTihXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5
UmVnaW9uQ29udGV4dCkKKyAgICBzdGF0aWMgYm9vbCBpc1R5cGUoY29uc3QgV2ViQ29yZTo6UmVn
aW9uQ29udGV4dCYgcmVnaW9uQ29udGV4dCkgeyByZXR1cm4gcmVnaW9uQ29udGV4dC5pc0FjY2Vz
c2liaWxpdHlSZWdpb25Db250ZXh0KCk7IH0KK1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNfRU5EKCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9FdmVudFJlZ2lvbi5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvRXZlbnRSZWdpb24uY3BwCmluZGV4IGFhOTc2YmFlYzlj
YS4uOWM1NjE2Y2Y4MzI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvRXZl
bnRSZWdpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9FdmVudFJlZ2lvbi5j
cHAKQEAgLTQzLDQ4ICs0Myw3IEBAIEV2ZW50UmVnaW9uQ29udGV4dDo6RXZlbnRSZWdpb25Db250
ZXh0KEV2ZW50UmVnaW9uJiBldmVudFJlZ2lvbikKIHsKIH0KIAotdm9pZCBFdmVudFJlZ2lvbkNv
bnRleHQ6OnB1c2hUcmFuc2Zvcm0oY29uc3QgQWZmaW5lVHJhbnNmb3JtJiB0cmFuc2Zvcm0pCi17
Ci0gICAgaWYgKG1fdHJhbnNmb3JtU3RhY2suaXNFbXB0eSgpKQotICAgICAgICBtX3RyYW5zZm9y
bVN0YWNrLmFwcGVuZCh0cmFuc2Zvcm0pOwotICAgIGVsc2UKLSAgICAgICAgbV90cmFuc2Zvcm1T
dGFjay5hcHBlbmQobV90cmFuc2Zvcm1TdGFjay5sYXN0KCkgKiB0cmFuc2Zvcm0pOwotfQotCi12
b2lkIEV2ZW50UmVnaW9uQ29udGV4dDo6cG9wVHJhbnNmb3JtKCkKLXsKLSAgICBpZiAobV90cmFu
c2Zvcm1TdGFjay5pc0VtcHR5KCkpIHsKLSAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0g
ICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgbV90cmFuc2Zvcm1TdGFjay5yZW1vdmVMYXN0KCk7
Ci19Ci0KLXZvaWQgRXZlbnRSZWdpb25Db250ZXh0OjpwdXNoQ2xpcChjb25zdCBJbnRSZWN0JiBj
bGlwUmVjdCkKLXsKLSAgICBhdXRvIHRyYW5zZm9ybWVkQ2xpcCA9IG1fdHJhbnNmb3JtU3RhY2su
aXNFbXB0eSgpID8gY2xpcFJlY3QgOiBtX3RyYW5zZm9ybVN0YWNrLmxhc3QoKS5tYXBSZWN0KGNs
aXBSZWN0KTsKLQotICAgIGlmIChtX2NsaXBTdGFjay5pc0VtcHR5KCkpCi0gICAgICAgIG1fY2xp
cFN0YWNrLmFwcGVuZCh0cmFuc2Zvcm1lZENsaXApOwotICAgIGVsc2UKLSAgICAgICAgbV9jbGlw
U3RhY2suYXBwZW5kKGludGVyc2VjdGlvbihtX2NsaXBTdGFjay5sYXN0KCksIHRyYW5zZm9ybWVk
Q2xpcCkpOwotfQotCi12b2lkIEV2ZW50UmVnaW9uQ29udGV4dDo6cHVzaENsaXAoY29uc3QgUGF0
aCYgcGF0aCwgV2luZFJ1bGUpCi17Ci0gICAgLy8gRklYTUU6IEFwcHJveGltYXRlIHBhdGhzIGJl
dHRlci4KLSAgICBhdXRvIHBhdGhCb3VuZHMgPSBlbmNsb3NpbmdJbnRSZWN0KHBhdGguYm91bmRp
bmdSZWN0KCkpOwotICAgIHB1c2hDbGlwKHBhdGhCb3VuZHMpOwotfQotCi12b2lkIEV2ZW50UmVn
aW9uQ29udGV4dDo6cG9wQ2xpcCgpCi17Ci0gICAgaWYgKG1fY2xpcFN0YWNrLmlzRW1wdHkoKSkg
ewotICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0K
LSAgICBtX2NsaXBTdGFjay5yZW1vdmVMYXN0KCk7Ci19CitFdmVudFJlZ2lvbkNvbnRleHQ6On5F
dmVudFJlZ2lvbkNvbnRleHQoKSA9IGRlZmF1bHQ7CiAKIHZvaWQgRXZlbnRSZWdpb25Db250ZXh0
Ojp1bml0ZShjb25zdCBSZWdpb24mIHJlZ2lvbiwgUmVuZGVyT2JqZWN0JiByZW5kZXJlciwgY29u
c3QgUmVuZGVyU3R5bGUmIHN0eWxlLCBib29sIG92ZXJyaWRlVXNlck1vZGlmeUlzRWRpdGFibGUp
CiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvRXZlbnRSZWdpb24uaCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9FdmVudFJlZ2lvbi5oCmluZGV4IDMwMzlmOWZjNDNl
MS4uNTA0NjYxYWU4NGZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvRXZl
bnRSZWdpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvRXZlbnRSZWdpb24uaApA
QCAtMzAsNiArMzAsNyBAQAogI2luY2x1ZGUgIkludGVyYWN0aW9uUmVnaW9uLmgiCiAjaW5jbHVk
ZSAiTm9kZS5oIgogI2luY2x1ZGUgIlJlZ2lvbi5oIgorI2luY2x1ZGUgIlJlZ2lvbkNvbnRleHQu
aCIKICNpbmNsdWRlICJSZW5kZXJTdHlsZUNvbnN0YW50cy5oIgogI2luY2x1ZGUgIlRvdWNoQWN0
aW9uLmgiCiAjaW5jbHVkZSA8d3RmL0FyZ3VtZW50Q29kZXIuaD4KQEAgLTQ0LDE4ICs0NSwxMiBA
QCBjbGFzcyBQYXRoOwogY2xhc3MgUmVuZGVyT2JqZWN0OwogY2xhc3MgUmVuZGVyU3R5bGU7CiAK
LWVudW0gY2xhc3MgV2luZFJ1bGUgOiBib29sOwotCi1jbGFzcyBFdmVudFJlZ2lvbkNvbnRleHQg
eworY2xhc3MgRXZlbnRSZWdpb25Db250ZXh0IDogcHVibGljIFJlZ2lvbkNvbnRleHQgewogcHVi
bGljOgogICAgIGV4cGxpY2l0IEV2ZW50UmVnaW9uQ29udGV4dChFdmVudFJlZ2lvbiYpOworICAg
IHZpcnR1YWwgfkV2ZW50UmVnaW9uQ29udGV4dCgpOwogCi0gICAgdm9pZCBwdXNoVHJhbnNmb3Jt
KGNvbnN0IEFmZmluZVRyYW5zZm9ybSYpOwotICAgIHZvaWQgcG9wVHJhbnNmb3JtKCk7Ci0KLSAg
ICB2b2lkIHB1c2hDbGlwKGNvbnN0IEludFJlY3QmKTsKLSAgICB2b2lkIHB1c2hDbGlwKGNvbnN0
IFBhdGgmLCBXaW5kUnVsZSk7Ci0gICAgdm9pZCBwb3BDbGlwKCk7CisgICAgYm9vbCBpc0V2ZW50
UmVnaW9uQ29udGV4dCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KIAogICAgIHZvaWQg
dW5pdGUoY29uc3QgUmVnaW9uJiwgUmVuZGVyT2JqZWN0JiwgY29uc3QgUmVuZGVyU3R5bGUmLCBi
b29sIG92ZXJyaWRlVXNlck1vZGlmeUlzRWRpdGFibGUgPSBmYWxzZSk7CiAgICAgYm9vbCBjb250
YWlucyhjb25zdCBJbnRSZWN0JikgY29uc3Q7CkBAIC02OSw4ICs2NCw2IEBAIHB1YmxpYzoKIAog
cHJpdmF0ZToKICAgICBFdmVudFJlZ2lvbiYgbV9ldmVudFJlZ2lvbjsKLSAgICBWZWN0b3I8QWZm
aW5lVHJhbnNmb3JtPiBtX3RyYW5zZm9ybVN0YWNrOwotICAgIFZlY3RvcjxJbnRSZWN0PiBtX2Ns
aXBTdGFjazsKIAogI2lmIEVOQUJMRShJTlRFUkFDVElPTl9SRUdJT05TX0lOX0VWRU5UX1JFR0lP
TikKICAgICBWZWN0b3I8SW50ZXJhY3Rpb25SZWdpb24+IG1faW50ZXJhY3Rpb25SZWdpb25zOwpA
QCAtODAsNDUgKzczLDYgQEAgcHJpdmF0ZToKICNlbmRpZgogfTsKIAotY2xhc3MgRXZlbnRSZWdp
b25Db250ZXh0U3RhdGVTYXZlciB7Ci1wdWJsaWM6Ci0gICAgRXZlbnRSZWdpb25Db250ZXh0U3Rh
dGVTYXZlcihFdmVudFJlZ2lvbkNvbnRleHQqIGNvbnRleHQpCi0gICAgICAgIDogbV9jb250ZXh0
KGNvbnRleHQpCi0gICAgewotICAgIH0KLSAgICAKLSAgICB+RXZlbnRSZWdpb25Db250ZXh0U3Rh
dGVTYXZlcigpCi0gICAgewotICAgICAgICBpZiAoIW1fY29udGV4dCkKLSAgICAgICAgICAgIHJl
dHVybjsKLQotICAgICAgICBpZiAobV9wdXNoZWRDbGlwKQotICAgICAgICAgICAgbV9jb250ZXh0
LT5wb3BDbGlwKCk7Ci0gICAgfQotICAgIAotICAgIHZvaWQgcHVzaENsaXAoY29uc3QgSW50UmVj
dCYgY2xpcFJlY3QpCi0gICAgewotICAgICAgICBBU1NFUlQoIW1fcHVzaGVkQ2xpcCk7Ci0gICAg
ICAgIGlmIChtX2NvbnRleHQpCi0gICAgICAgICAgICBtX2NvbnRleHQtPnB1c2hDbGlwKGNsaXBS
ZWN0KTsKLSAgICAgICAgbV9wdXNoZWRDbGlwID0gdHJ1ZTsKLSAgICB9Ci0KLSAgICB2b2lkIHB1
c2hDbGlwKGNvbnN0IFBhdGgmIHBhdGgsIFdpbmRSdWxlIHdpbmRSdWxlKQotICAgIHsKLSAgICAg
ICAgQVNTRVJUKCFtX3B1c2hlZENsaXApOwotICAgICAgICBpZiAobV9jb250ZXh0KQotICAgICAg
ICAgICAgbV9jb250ZXh0LT5wdXNoQ2xpcChwYXRoLCB3aW5kUnVsZSk7Ci0gICAgICAgIG1fcHVz
aGVkQ2xpcCA9IHRydWU7Ci0gICAgfQotCi0gICAgRXZlbnRSZWdpb25Db250ZXh0KiBjb250ZXh0
KCkgY29uc3QgeyByZXR1cm4gbV9jb250ZXh0OyB9Ci0KLXByaXZhdGU6Ci0gICAgRXZlbnRSZWdp
b25Db250ZXh0KiBtX2NvbnRleHQ7Ci0gICAgYm9vbCBtX3B1c2hlZENsaXAgeyBmYWxzZSB9Owot
fTsKLQogY2xhc3MgRXZlbnRSZWdpb24gewogcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIEV2
ZW50UmVnaW9uKCk7CkBAIC0yMTQsMyArMTY4LDcgQEAgaW5saW5lIHZvaWQgRXZlbnRSZWdpb246
OmVuc3VyZUVkaXRhYmxlUmVnaW9uKCkKICNlbmRpZgogCiB9CisKK1NQRUNJQUxJWkVfVFlQRV9U
UkFJVFNfQkVHSU4oV2ViQ29yZTo6RXZlbnRSZWdpb25Db250ZXh0KQorICAgIHN0YXRpYyBib29s
IGlzVHlwZShjb25zdCBXZWJDb3JlOjpSZWdpb25Db250ZXh0JiByZWdpb25Db250ZXh0KSB7IHJl
dHVybiByZWdpb25Db250ZXh0LmlzRXZlbnRSZWdpb25Db250ZXh0KCk7IH0KK1NQRUNJQUxJWkVf
VFlQRV9UUkFJVFNfRU5EKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9M
ZWdhY3lJbmxpbmVFbGVtZW50Qm94LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9MZWdh
Y3lJbmxpbmVFbGVtZW50Qm94LmNwcAppbmRleCBiNjYxMzZkNmU4MGUuLjMwMzJiNDcwZGFlZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0xlZ2FjeUlubGluZUVsZW1lbnRC
b3guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9MZWdhY3lJbmxpbmVFbGVtZW50
Qm94LmNwcApAQCAtNzEsNyArNzEsNyBAQCB2b2lkIExlZ2FjeUlubGluZUVsZW1lbnRCb3g6OnBh
aW50KFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbgogICAgIGlm
ICghcGFpbnRJbmZvLnNob3VsZFBhaW50V2l0aGluUm9vdChyZW5kZXJlcigpKSkKICAgICAgICAg
cmV0dXJuOwogCi0gICAgaWYgKHBhaW50SW5mby5waGFzZSAhPSBQYWludFBoYXNlOjpGb3JlZ3Jv
dW5kICYmIHBhaW50SW5mby5waGFzZSAhPSBQYWludFBoYXNlOjpTZWxlY3Rpb24gJiYgcGFpbnRJ
bmZvLnBoYXNlICE9IFBhaW50UGhhc2U6OkV2ZW50UmVnaW9uKQorICAgIGlmIChwYWludEluZm8u
cGhhc2UgIT0gUGFpbnRQaGFzZTo6Rm9yZWdyb3VuZCAmJiBwYWludEluZm8ucGhhc2UgIT0gUGFp
bnRQaGFzZTo6U2VsZWN0aW9uICYmIHBhaW50SW5mby5waGFzZSAhPSBQYWludFBoYXNlOjpFdmVu
dFJlZ2lvbiAmJiBwYWludEluZm8ucGhhc2UgIT0gUGFpbnRQaGFzZTo6QWNjZXNzaWJpbGl0eSkK
ICAgICAgICAgcmV0dXJuOwogCiAgICAgTGF5b3V0UG9pbnQgY2hpbGRQb2ludCA9IHBhaW50T2Zm
c2V0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0xlZ2FjeUlubGluZUZs
b3dCb3guY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0xlZ2FjeUlubGluZUZsb3dCb3gu
Y3BwCmluZGV4IDljNDgyZDdlOTBiMy4uNTY2NTczYWQ1YjRhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvTGVnYWN5SW5saW5lRmxvd0JveC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL0xlZ2FjeUlubGluZUZsb3dCb3guY3BwCkBAIC0xMTA0LDcgKzExMDQs
NyBAQCBib29sIExlZ2FjeUlubGluZUZsb3dCb3g6Om5vZGVBdFBvaW50KGNvbnN0IEhpdFRlc3RS
ZXF1ZXN0JiByZXF1ZXN0LCBIaXRUZXN0UmVzdQogCiB2b2lkIExlZ2FjeUlubGluZUZsb3dCb3g6
OnBhaW50KFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbnRPZmZz
ZXQsIExheW91dFVuaXQgbGluZVRvcCwgTGF5b3V0VW5pdCBsaW5lQm90dG9tKQogewotICAgIGlm
IChwYWludEluZm8ucGhhc2UgIT0gUGFpbnRQaGFzZTo6Rm9yZWdyb3VuZCAmJiBwYWludEluZm8u
cGhhc2UgIT0gUGFpbnRQaGFzZTo6U2VsZWN0aW9uICYmIHBhaW50SW5mby5waGFzZSAhPSBQYWlu
dFBoYXNlOjpPdXRsaW5lICYmIHBhaW50SW5mby5waGFzZSAhPSBQYWludFBoYXNlOjpTZWxmT3V0
bGluZSAmJiBwYWludEluZm8ucGhhc2UgIT0gUGFpbnRQaGFzZTo6Q2hpbGRPdXRsaW5lcyAmJiBw
YWludEluZm8ucGhhc2UgIT0gUGFpbnRQaGFzZTo6VGV4dENsaXAgJiYgcGFpbnRJbmZvLnBoYXNl
ICE9IFBhaW50UGhhc2U6Ok1hc2sgJiYgcGFpbnRJbmZvLnBoYXNlICE9IFBhaW50UGhhc2U6OkV2
ZW50UmVnaW9uKQorICAgIGlmIChwYWludEluZm8ucGhhc2UgIT0gUGFpbnRQaGFzZTo6Rm9yZWdy
b3VuZCAmJiBwYWludEluZm8ucGhhc2UgIT0gUGFpbnRQaGFzZTo6U2VsZWN0aW9uICYmIHBhaW50
SW5mby5waGFzZSAhPSBQYWludFBoYXNlOjpPdXRsaW5lICYmIHBhaW50SW5mby5waGFzZSAhPSBQ
YWludFBoYXNlOjpTZWxmT3V0bGluZSAmJiBwYWludEluZm8ucGhhc2UgIT0gUGFpbnRQaGFzZTo6
Q2hpbGRPdXRsaW5lcyAmJiBwYWludEluZm8ucGhhc2UgIT0gUGFpbnRQaGFzZTo6VGV4dENsaXAg
JiYgcGFpbnRJbmZvLnBoYXNlICE9IFBhaW50UGhhc2U6Ok1hc2sgJiYgcGFpbnRJbmZvLnBoYXNl
ICE9IFBhaW50UGhhc2U6OkV2ZW50UmVnaW9uICYmIHBhaW50SW5mby5waGFzZSAhPSBQYWludFBo
YXNlOjpBY2Nlc3NpYmlsaXR5KQogICAgICAgICByZXR1cm47CiAKICAgICBMYXlvdXRSZWN0IG92
ZXJmbG93UmVjdCh2aXN1YWxPdmVyZmxvd1JlY3QobGluZVRvcCwgbGluZUJvdHRvbSkpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1BhaW50SW5mby5oIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1BhaW50SW5mby5oCmluZGV4IDA1MGQ1Y2FmNmIyZi4uOTM2ZjQ4YjFj
M2Q5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUGFpbnRJbmZvLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1BhaW50SW5mby5oCkBAIC0yNSw3ICsyNSw5IEBA
CiAKICNwcmFnbWEgb25jZQogCisjaW5jbHVkZSAiQWNjZXNzaWJpbGl0eVJlZ2lvbkNvbnRleHQu
aCIKICNpbmNsdWRlICJBZmZpbmVUcmFuc2Zvcm0uaCIKKyNpbmNsdWRlICJFdmVudFJlZ2lvbi5o
IgogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgogI2luY2x1ZGUgIkludFJlY3QuaCIKICNp
bmNsdWRlICJMYXlvdXRSZWN0LmgiCkBAIC0zNyw3ICszOSw2IEBACiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAotY2xhc3MgRXZlbnRSZWdpb25Db250ZXh0OwogY2xhc3MgT3ZlcmxhcFRlc3RSZXF1
ZXN0Q2xpZW50OwogY2xhc3MgUmVuZGVySW5saW5lOwogY2xhc3MgUmVuZGVyTGF5ZXI7CkBAIC0x
MjEsNiArMTIyLDkgQEAgc3RydWN0IFBhaW50SW5mbyB7CiAgICAgICAgIHJlY3Quc2V0U2l6ZShM
YXlvdXRTaXplKHRyYW5mb3JtZWRSZWN0LnNpemUoKSkpOwogICAgIH0KIAorICAgIEV2ZW50UmVn
aW9uQ29udGV4dCogZXZlbnRSZWdpb25Db250ZXh0KCkgeyByZXR1cm4gZHluYW1pY0Rvd25jYXN0
PEV2ZW50UmVnaW9uQ29udGV4dD4ocmVnaW9uQ29udGV4dCk7IH0KKyAgICBBY2Nlc3NpYmlsaXR5
UmVnaW9uQ29udGV4dCogYWNjZXNzaWJpbGl0eVJlZ2lvbkNvbnRleHQoKSB7IHJldHVybiBkeW5h
bWljRG93bmNhc3Q8QWNjZXNzaWJpbGl0eVJlZ2lvbkNvbnRleHQ+KHJlZ2lvbkNvbnRleHQpOyB9
CisKICAgICBMYXlvdXRSZWN0IHJlY3Q7CiAgICAgUGFpbnRQaGFzZSBwaGFzZTsKICAgICBPcHRp
b25TZXQ8UGFpbnRCZWhhdmlvcj4gcGFpbnRCZWhhdmlvcjsKQEAgLTEzMCw3ICsxMzQsNyBAQCBz
dHJ1Y3QgUGFpbnRJbmZvIHsKICAgICBjb25zdCBSZW5kZXJMYXllck1vZGVsT2JqZWN0KiBwYWlu
dENvbnRhaW5lcjsgLy8gdGhlIGxheWVyIG9iamVjdCB0aGF0IG9yaWdpbmF0ZXMgdGhlIGN1cnJl
bnQgcGFpbnRpbmcKICAgICBib29sIHJlcXVpcmVTZWN1cml0eU9yaWdpbkFjY2Vzc0ZvcldpZGdl
dHMgeyBmYWxzZSB9OwogICAgIGNvbnN0IFJlbmRlckxheWVyKiBtX2VuY2xvc2luZ1NlbGZQYWlu
dGluZ0xheWVyIHsgbnVsbHB0ciB9OwotICAgIEV2ZW50UmVnaW9uQ29udGV4dCogZXZlbnRSZWdp
b25Db250ZXh0IHsgbnVsbHB0ciB9OyAvLyBGb3IgUGFpbnRQaGFzZTo6RXZlbnRSZWdpb24uCisg
ICAgUmVnaW9uQ29udGV4dCogcmVnaW9uQ29udGV4dCB7IG51bGxwdHIgfTsgLy8gRm9yIFBhaW50
UGhhc2U6OkV2ZW50UmVnaW9uIGFuZCBQYWludFBoYXNlOjpBY2Nlc3NpYmlsaXR5LgogCiBwcml2
YXRlOgogICAgIEdyYXBoaWNzQ29udGV4dCogbV9jb250ZXh0OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1BhaW50UGhhc2UuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9QYWludFBoYXNlLmgKaW5kZXggNGE1NmY1MzMxNDVmLi5lNmRkZGE2NGQ2NmEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9QYWludFBoYXNlLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1BhaW50UGhhc2UuaApAQCAtNTEsNiArNTEsNyBAQCBlbnVtIGNsYXNz
IFBhaW50UGhhc2UgOiB1aW50MTZfdCB7CiAgICAgTWFzayAgICAgICAgICAgICAgICAgICAgID0g
MSA8PCAxMCwKICAgICBDbGlwcGluZ01hc2sgICAgICAgICAgICAgPSAxIDw8IDExLAogICAgIEV2
ZW50UmVnaW9uICAgICAgICAgICAgICA9IDEgPDwgMTIsCisgICAgQWNjZXNzaWJpbGl0eSAgICAg
ICAgICAgID0gMSA8PCAxMywKIH07CiAKIGVudW0gY2xhc3MgUGFpbnRCZWhhdmlvciA6IHVpbnQx
Nl90IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZWdpb25Db250ZXh0
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZWdpb25Db250ZXh0LmNwcApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjdjNGQ3Y2ZiYjVhZAotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZWdpb25Db250ZXh0LmNwcApAQCAt
MCwwICsxLDc0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIzIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUg
IlJlZ2lvbkNvbnRleHQuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCit2b2lkIFJlZ2lvbkNv
bnRleHQ6OnB1c2hUcmFuc2Zvcm0oY29uc3QgQWZmaW5lVHJhbnNmb3JtJiB0cmFuc2Zvcm0pCit7
CisgICAgaWYgKG1fdHJhbnNmb3JtU3RhY2suaXNFbXB0eSgpKQorICAgICAgICBtX3RyYW5zZm9y
bVN0YWNrLmFwcGVuZCh0cmFuc2Zvcm0pOworICAgIGVsc2UKKyAgICAgICAgbV90cmFuc2Zvcm1T
dGFjay5hcHBlbmQobV90cmFuc2Zvcm1TdGFjay5sYXN0KCkgKiB0cmFuc2Zvcm0pOworfQorCit2
b2lkIFJlZ2lvbkNvbnRleHQ6OnBvcFRyYW5zZm9ybSgpCit7CisgICAgaWYgKG1fdHJhbnNmb3Jt
U3RhY2suaXNFbXB0eSgpKSB7CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAg
ICByZXR1cm47CisgICAgfQorICAgIG1fdHJhbnNmb3JtU3RhY2sucmVtb3ZlTGFzdCgpOworfQor
Cit2b2lkIFJlZ2lvbkNvbnRleHQ6OnB1c2hDbGlwKGNvbnN0IEludFJlY3QmIGNsaXBSZWN0KQor
eworICAgIGF1dG8gdHJhbnNmb3JtZWRDbGlwID0gbV90cmFuc2Zvcm1TdGFjay5pc0VtcHR5KCkg
PyBjbGlwUmVjdCA6IG1fdHJhbnNmb3JtU3RhY2subGFzdCgpLm1hcFJlY3QoY2xpcFJlY3QpOwor
CisgICAgaWYgKG1fY2xpcFN0YWNrLmlzRW1wdHkoKSkKKyAgICAgICAgbV9jbGlwU3RhY2suYXBw
ZW5kKHRyYW5zZm9ybWVkQ2xpcCk7CisgICAgZWxzZQorICAgICAgICBtX2NsaXBTdGFjay5hcHBl
bmQoaW50ZXJzZWN0aW9uKG1fY2xpcFN0YWNrLmxhc3QoKSwgdHJhbnNmb3JtZWRDbGlwKSk7Cit9
CisKK3ZvaWQgUmVnaW9uQ29udGV4dDo6cHVzaENsaXAoY29uc3QgUGF0aCYgcGF0aCkKK3sKKyAg
ICAvLyBGSVhNRTogQXBwcm94aW1hdGUgcGF0aHMgYmV0dGVyLgorICAgIGF1dG8gcGF0aEJvdW5k
cyA9IGVuY2xvc2luZ0ludFJlY3QocGF0aC5ib3VuZGluZ1JlY3QoKSk7CisgICAgcHVzaENsaXAo
cGF0aEJvdW5kcyk7Cit9CisKK3ZvaWQgUmVnaW9uQ29udGV4dDo6cG9wQ2xpcCgpCit7CisgICAg
aWYgKG1fY2xpcFN0YWNrLmlzRW1wdHkoKSkgeworICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBtX2NsaXBTdGFjay5yZW1vdmVMYXN0KCk7
Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZWdpb25Db250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVn
aW9uQ29udGV4dC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uYTUz
ODZkMDYzMGVhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
Z2lvbkNvbnRleHQuaApAQCAtMCwwICsxLDk2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIz
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
CisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNl
CisKKyNpbmNsdWRlICJBZmZpbmVUcmFuc2Zvcm0uaCIKKyNpbmNsdWRlICJJbnRSZWN0LmgiCisj
aW5jbHVkZSA8d3RmL0NoZWNrZWRQdHIuaD4KKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisKK25h
bWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgUGF0aDsKKworY2xhc3MgUmVnaW9uQ29udGV4dCA6
IHB1YmxpYyBDYW5NYWtlQ2hlY2tlZFB0ciB7CitwdWJsaWM6CisgICAgdmlydHVhbCB+UmVnaW9u
Q29udGV4dCgpID0gZGVmYXVsdDsKKworICAgIHZvaWQgcHVzaFRyYW5zZm9ybShjb25zdCBBZmZp
bmVUcmFuc2Zvcm0mKTsKKyAgICB2b2lkIHBvcFRyYW5zZm9ybSgpOworCisgICAgdm9pZCBwdXNo
Q2xpcChjb25zdCBJbnRSZWN0Jik7CisgICAgdm9pZCBwdXNoQ2xpcChjb25zdCBQYXRoJik7Cisg
ICAgdm9pZCBwb3BDbGlwKCk7CisKKyAgICB2aXJ0dWFsIGJvb2wgaXNFdmVudFJlZ2lvbkNvbnRl
eHQoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwgYm9vbCBpc0FjY2Vzc2li
aWxpdHlSZWdpb25Db250ZXh0KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKworcHJvdGVjdGVk
OgorICAgIFZlY3RvcjxBZmZpbmVUcmFuc2Zvcm0+IG1fdHJhbnNmb3JtU3RhY2s7CisgICAgVmVj
dG9yPEludFJlY3Q+IG1fY2xpcFN0YWNrOworCit9OyAvLyBjbGFzcyBSZWdpb25Db250ZXh0CisK
K2NsYXNzIFJlZ2lvbkNvbnRleHRTdGF0ZVNhdmVyIHsKK3B1YmxpYzoKKyAgICBSZWdpb25Db250
ZXh0U3RhdGVTYXZlcihSZWdpb25Db250ZXh0KiBjb250ZXh0KQorICAgICAgICA6IG1fY29udGV4
dChjb250ZXh0KQorICAgIHsKKyAgICB9CisKKyAgICB+UmVnaW9uQ29udGV4dFN0YXRlU2F2ZXIo
KQorICAgIHsKKyAgICAgICAgaWYgKCFtX2NvbnRleHQpCisgICAgICAgICAgICByZXR1cm47CisK
KyAgICAgICAgaWYgKG1fcHVzaGVkQ2xpcCkKKyAgICAgICAgICAgIG1fY29udGV4dC0+cG9wQ2xp
cCgpOworICAgIH0KKworICAgIHZvaWQgcHVzaENsaXAoY29uc3QgSW50UmVjdCYgY2xpcFJlY3Qp
CisgICAgeworICAgICAgICBBU1NFUlQoIW1fcHVzaGVkQ2xpcCk7CisgICAgICAgIGlmIChtX2Nv
bnRleHQpCisgICAgICAgICAgICBtX2NvbnRleHQtPnB1c2hDbGlwKGNsaXBSZWN0KTsKKyAgICAg
ICAgbV9wdXNoZWRDbGlwID0gdHJ1ZTsKKyAgICB9CisKKyAgICB2b2lkIHB1c2hDbGlwKGNvbnN0
IFBhdGgmIHBhdGgpCisgICAgeworICAgICAgICBBU1NFUlQoIW1fcHVzaGVkQ2xpcCk7CisgICAg
ICAgIGlmIChtX2NvbnRleHQpCisgICAgICAgICAgICBtX2NvbnRleHQtPnB1c2hDbGlwKHBhdGgp
OworICAgICAgICBtX3B1c2hlZENsaXAgPSB0cnVlOworICAgIH0KKworICAgIFJlZ2lvbkNvbnRl
eHQqIGNvbnRleHQoKSBjb25zdCB7IHJldHVybiBjb25zdF9jYXN0PFJlZ2lvbkNvbnRleHQqPiht
X2NvbnRleHQuZ2V0KCkpOyB9CisKK3ByaXZhdGU6CisgICAgQ2hlY2tlZFB0cjxSZWdpb25Db250
ZXh0PiBtX2NvbnRleHQ7CisgICAgYm9vbCBtX3B1c2hlZENsaXAgeyBmYWxzZSB9OworfTsgLy8g
Y2xhc3MgUmVnaW9uQ29udGV4dFN0YXRlU2F2ZXIKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAKaW5kZXggNWNkNDdhNjEzMjJl
Li5iYzNmOGI2ZDJjNjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJCbG9jay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNw
cApAQCAtMTE1Miw3ICsxMTUyLDcgQEAgdm9pZCBSZW5kZXJCbG9jazo6cGFpbnRDb250ZW50cyhQ
YWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50T2YKICAgICAgICAg
cGFpbnRJbmZvRm9yQ2hpbGQucGhhc2UgPSBuZXdQaGFzZTsKICAgICAgICAgcGFpbnRJbmZvRm9y
Q2hpbGQudXBkYXRlU3VidHJlZVBhaW50Um9vdEZvckNoaWxkcmVuKHRoaXMpOwogCi0gICAgICAg
IGlmIChwYWludEluZm8uZXZlbnRSZWdpb25Db250ZXh0KQorICAgICAgICBpZiAocGFpbnRJbmZv
LmV2ZW50UmVnaW9uQ29udGV4dCgpKQogICAgICAgICAgICAgcGFpbnRJbmZvRm9yQ2hpbGQucGFp
bnRCZWhhdmlvci5hZGQoUGFpbnRCZWhhdmlvcjo6RXZlbnRSZWdpb25JbmNsdWRlQmFja2dyb3Vu
ZCk7CiAKICAgICAgICAgLy8gRklYTUU6IFBhaW50LXRpbWUgcGFnaW5hdGlvbiBpcyBvYnNvbGV0
ZSBhbmQgaXMgbm93IG9ubHkgdXNlZCBieSBlbWJlZGRlZCBXZWJWaWV3cyBpbnNpZGUgQXBwS2l0
CkBAIC0xMjY1LDIxICsxMjY1LDI0IEBAIHZvaWQgUmVuZGVyQmxvY2s6OnBhaW50T2JqZWN0KFBh
aW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbnRPZmZzCiAgICAgaWYg
KHBhaW50SW5mby5wYWludFJvb3RCYWNrZ3JvdW5kT25seSgpKQogICAgICAgICByZXR1cm47CiAK
KyAgICBpZiAocGFpbnRQaGFzZSA9PSBQYWludFBoYXNlOjpBY2Nlc3NpYmlsaXR5KQorICAgICAg
ICBwYWludEluZm8uYWNjZXNzaWJpbGl0eVJlZ2lvbkNvbnRleHQoKS0+dGFrZUJvdW5kcygqdGhp
cywgRmxvYXRSZWN0KHBhaW50T2Zmc2V0LCBzaXplKCkpKTsKKwogICAgIGlmIChwYWludFBoYXNl
ID09IFBhaW50UGhhc2U6OkV2ZW50UmVnaW9uKSB7CiAgICAgICAgIGF1dG8gYm9yZGVyUmVjdCA9
IExheW91dFJlY3QocGFpbnRPZmZzZXQsIHNpemUoKSk7CiAKICAgICAgICAgaWYgKHBhaW50SW5m
by5wYWludEJlaGF2aW9yLmNvbnRhaW5zKFBhaW50QmVoYXZpb3I6OkV2ZW50UmVnaW9uSW5jbHVk
ZUJhY2tncm91bmQpICYmIHZpc2libGVUb0hpdFRlc3RpbmcoKSkgewogICAgICAgICAgICAgYXV0
byBib3JkZXJSZWdpb24gPSBhcHByb3hpbWF0ZUFzUmVnaW9uKHN0eWxlKCkuZ2V0Um91bmRlZEJv
cmRlckZvcihib3JkZXJSZWN0KSk7CiAgICAgICAgICAgICBMT0dfV0lUSF9TVFJFQU0oRXZlbnRS
ZWdpb25zLCBzdHJlYW0gPDwgIlJlbmRlckJsb2NrICIgPDwgKnRoaXMgPDwgIiB1bml0aW5nIHJl
Z2lvbiAiIDw8IGJvcmRlclJlZ2lvbiA8PCAiIGV2ZW50IGxpc3RlbmVyIHR5cGVzICIgPDwgc3R5
bGUoKS5ldmVudExpc3RlbmVyUmVnaW9uVHlwZXMoKSk7Ci0gICAgICAgICAgICBwYWludEluZm8u
ZXZlbnRSZWdpb25Db250ZXh0LT51bml0ZShib3JkZXJSZWdpb24sICp0aGlzLCBzdHlsZSgpLCBp
c1RleHRDb250cm9sKCkgJiYgZG93bmNhc3Q8UmVuZGVyVGV4dENvbnRyb2w+KCp0aGlzKS50ZXh0
Rm9ybUNvbnRyb2xFbGVtZW50KCkuaXNJbm5lclRleHRFbGVtZW50RWRpdGFibGUoKSk7CisgICAg
ICAgICAgICBwYWludEluZm8uZXZlbnRSZWdpb25Db250ZXh0KCktPnVuaXRlKGJvcmRlclJlZ2lv
biwgKnRoaXMsIHN0eWxlKCksIGlzVGV4dENvbnRyb2woKSAmJiBkb3duY2FzdDxSZW5kZXJUZXh0
Q29udHJvbD4oKnRoaXMpLnRleHRGb3JtQ29udHJvbEVsZW1lbnQoKS5pc0lubmVyVGV4dEVsZW1l
bnRFZGl0YWJsZSgpKTsKICAgICAgICAgfQogCiAgICAgICAgIGlmICghcGFpbnRJbmZvLnBhaW50
QmVoYXZpb3IuY29udGFpbnMoUGFpbnRCZWhhdmlvcjo6RXZlbnRSZWdpb25JbmNsdWRlRm9yZWdy
b3VuZCkpCiAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgYm9vbCBuZWVkc1RyYXZlcnNl
RGVzY2VuZGFudHMgPSBoYXNWaXN1YWxPdmVyZmxvdygpIHx8IGNvbnRhaW5zRmxvYXRzKCkgfHwg
IXBhaW50SW5mby5ldmVudFJlZ2lvbkNvbnRleHQtPmNvbnRhaW5zKGVuY2xvc2luZ0ludFJlY3Qo
Ym9yZGVyUmVjdCkpIHx8IHZpZXcoKS5uZWVkc0V2ZW50UmVnaW9uVXBkYXRlRm9yTm9uQ29tcG9z
aXRlZEZyYW1lKCk7CisgICAgICAgIGJvb2wgbmVlZHNUcmF2ZXJzZURlc2NlbmRhbnRzID0gaGFz
VmlzdWFsT3ZlcmZsb3coKSB8fCBjb250YWluc0Zsb2F0cygpIHx8ICFwYWludEluZm8uZXZlbnRS
ZWdpb25Db250ZXh0KCktPmNvbnRhaW5zKGVuY2xvc2luZ0ludFJlY3QoYm9yZGVyUmVjdCkpIHx8
IHZpZXcoKS5uZWVkc0V2ZW50UmVnaW9uVXBkYXRlRm9yTm9uQ29tcG9zaXRlZEZyYW1lKCk7CiAg
ICAgICAgIExPR19XSVRIX1NUUkVBTShFdmVudFJlZ2lvbnMsIHN0cmVhbSA8PCAiUmVuZGVyQmxv
Y2sgIiA8PCAqdGhpcyA8PCAiIG5lZWRzVHJhdmVyc2VEZXNjZW5kYW50cyBmb3IgZXZlbnQgcmVn
aW9uOiBoYXNWaXN1YWxPdmVyZmxvdzogIiA8PCBoYXNWaXN1YWxPdmVyZmxvdygpIDw8ICIgY29u
dGFpbnNGbG9hdHM6ICIKLSAgICAgICAgICAgIDw8IGNvbnRhaW5zRmxvYXRzKCkgPDwgICIgYm9y
ZGVyIGJveCBpcyBvdXRzaWRlIGN1cnJlbnQgcmVnaW9uOiAiIDw8ICFwYWludEluZm8uZXZlbnRS
ZWdpb25Db250ZXh0LT5jb250YWlucyhlbmNsb3NpbmdJbnRSZWN0KGJvcmRlclJlY3QpKSA8PCAi
IG5lZWRzRXZlbnRSZWdpb25VcGRhdGVGb3JOb25Db21wb3NpdGVkRnJhbWU6IiA8PCB2aWV3KCku
bmVlZHNFdmVudFJlZ2lvblVwZGF0ZUZvck5vbkNvbXBvc2l0ZWRGcmFtZSgpKTsKKyAgICAgICAg
ICAgIDw8IGNvbnRhaW5zRmxvYXRzKCkgPDwgICIgYm9yZGVyIGJveCBpcyBvdXRzaWRlIGN1cnJl
bnQgcmVnaW9uOiAiIDw8ICFwYWludEluZm8uZXZlbnRSZWdpb25Db250ZXh0KCktPmNvbnRhaW5z
KGVuY2xvc2luZ0ludFJlY3QoYm9yZGVyUmVjdCkpIDw8ICIgbmVlZHNFdmVudFJlZ2lvblVwZGF0
ZUZvck5vbkNvbXBvc2l0ZWRGcmFtZToiIDw8IHZpZXcoKS5uZWVkc0V2ZW50UmVnaW9uVXBkYXRl
Rm9yTm9uQ29tcG9zaXRlZEZyYW1lKCkpOwogI2lmIEVOQUJMRShUT1VDSF9BQ1RJT05fUkVHSU9O
UykKICAgICAgICAgbmVlZHNUcmF2ZXJzZURlc2NlbmRhbnRzIHw9IGRvY3VtZW50KCkubWF5SGF2
ZUVsZW1lbnRzV2l0aE5vbkF1dG9Ub3VjaEFjdGlvbigpOwogICAgICAgICBMT0dfV0lUSF9TVFJF
QU0oRXZlbnRSZWdpb25zLCBzdHJlYW0gPDwgIiAgbWF5IGhhdmUgdG91Y2gtYWN0aW9uIGVsZW1l
bnRzOiAiIDw8IGRvY3VtZW50KCkubWF5SGF2ZUVsZW1lbnRzV2l0aE5vbkF1dG9Ub3VjaEFjdGlv
bigpKTsKQEAgLTEzMzEsOCArMTMzNCw4IEBAIHZvaWQgUmVuZGVyQmxvY2s6OnBhaW50T2JqZWN0
KFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbnRPZmZzCiAgICAg
ICAgIHBhaW50U2VsZWN0aW9uKHBhaW50SW5mbywgc2Nyb2xsZWRPZmZzZXQpOyAvLyBGaWxsIGlu
IGdhcHMgaW4gc2VsZWN0aW9uIG9uIGxpbmVzIGFuZCBiZXR3ZWVuIGJsb2Nrcy4KIAogICAgIC8v
IDQuIHBhaW50IGZsb2F0cy4KLSAgICBpZiAocGFpbnRQaGFzZSA9PSBQYWludFBoYXNlOjpGbG9h
dCB8fCBwYWludFBoYXNlID09IFBhaW50UGhhc2U6OlNlbGVjdGlvbiB8fCBwYWludFBoYXNlID09
IFBhaW50UGhhc2U6OlRleHRDbGlwIHx8IHBhaW50UGhhc2UgPT0gUGFpbnRQaGFzZTo6RXZlbnRS
ZWdpb24pCi0gICAgICAgIHBhaW50RmxvYXRzKHBhaW50SW5mbywgc2Nyb2xsZWRPZmZzZXQsIHBh
aW50UGhhc2UgPT0gUGFpbnRQaGFzZTo6U2VsZWN0aW9uIHx8IHBhaW50UGhhc2UgPT0gUGFpbnRQ
aGFzZTo6VGV4dENsaXAgfHwgcGFpbnRQaGFzZSA9PSBQYWludFBoYXNlOjpFdmVudFJlZ2lvbik7
CisgICAgaWYgKHBhaW50UGhhc2UgPT0gUGFpbnRQaGFzZTo6RmxvYXQgfHwgcGFpbnRQaGFzZSA9
PSBQYWludFBoYXNlOjpTZWxlY3Rpb24gfHwgcGFpbnRQaGFzZSA9PSBQYWludFBoYXNlOjpUZXh0
Q2xpcCB8fCBwYWludFBoYXNlID09IFBhaW50UGhhc2U6OkV2ZW50UmVnaW9uIHx8IHBhaW50UGhh
c2UgPT0gUGFpbnRQaGFzZTo6QWNjZXNzaWJpbGl0eSkKKyAgICAgICAgcGFpbnRGbG9hdHMocGFp
bnRJbmZvLCBzY3JvbGxlZE9mZnNldCwgcGFpbnRQaGFzZSA9PSBQYWludFBoYXNlOjpTZWxlY3Rp
b24gfHwgcGFpbnRQaGFzZSA9PSBQYWludFBoYXNlOjpUZXh0Q2xpcCB8fCBwYWludFBoYXNlID09
IFBhaW50UGhhc2U6OkV2ZW50UmVnaW9uIHx8IHBhaW50UGhhc2UgPT0gUGFpbnRQaGFzZTo6QWNj
ZXNzaWJpbGl0eSk7CiAKICAgICAvLyA1LiBwYWludCBvdXRsaW5lLgogICAgIGlmICgocGFpbnRQ
aGFzZSA9PSBQYWludFBoYXNlOjpPdXRsaW5lIHx8IHBhaW50UGhhc2UgPT0gUGFpbnRQaGFzZTo6
U2VsZk91dGxpbmUpICYmIGhhc091dGxpbmUoKSAmJiBzdHlsZSgpLnZpc2liaWxpdHkoKSA9PSBW
aXNpYmlsaXR5OjpWaXNpYmxlKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyQm94LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3Bw
CmluZGV4IDVhZTI0NmY0ODAwOC4uMDIxZWViZDkwMTNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyQm94LmNwcApAQCAtMjExNSw4ICsyMTE1LDggQEAgYm9vbCBSZW5kZXJCb3g6OnB1
c2hDb250ZW50c0NsaXAoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFBvaW50JiBh
Y2N1bXUKICAgICAgICAgY2xpcENvbnRlbnRGb3JCb3JkZXJSYWRpdXMocGFpbnRJbmZvLmNvbnRl
eHQoKSwgYWNjdW11bGF0ZWRPZmZzZXQsIGRldmljZVNjYWxlRmFjdG9yKTsKICAgICBwYWludElu
Zm8uY29udGV4dCgpLmNsaXAoY2xpcFJlY3QpOwogCi0gICAgaWYgKHBhaW50SW5mby5waGFzZSA9
PSBQYWludFBoYXNlOjpFdmVudFJlZ2lvbikKLSAgICAgICAgcGFpbnRJbmZvLmV2ZW50UmVnaW9u
Q29udGV4dC0+cHVzaENsaXAoZW5jbG9zaW5nSW50UmVjdChjbGlwUmVjdCkpOworICAgIGlmIChw
YWludEluZm8ucGhhc2UgPT0gUGFpbnRQaGFzZTo6RXZlbnRSZWdpb24gfHwgcGFpbnRJbmZvLnBo
YXNlID09IFBhaW50UGhhc2U6OkFjY2Vzc2liaWxpdHkpCisgICAgICAgIHBhaW50SW5mby5yZWdp
b25Db250ZXh0LT5wdXNoQ2xpcChlbmNsb3NpbmdJbnRSZWN0KGNsaXBSZWN0KSk7CiAKICAgICBy
ZXR1cm4gdHJ1ZTsKIH0KQEAgLTIxMjUsOCArMjEyNSw4IEBAIHZvaWQgUmVuZGVyQm94Ojpwb3BD
b250ZW50c0NsaXAoUGFpbnRJbmZvJiBwYWludEluZm8sIFBhaW50UGhhc2Ugb3JpZ2luYWxQaGFz
ZSwKIHsKICAgICBBU1NFUlQoaGFzQ29udHJvbENsaXAoKSB8fCAoaGFzTm9uVmlzaWJsZU92ZXJm
bG93KCkgJiYgIWxheWVyKCktPmlzU2VsZlBhaW50aW5nTGF5ZXIoKSkpOwogCi0gICAgaWYgKHBh
aW50SW5mby5waGFzZSA9PSBQYWludFBoYXNlOjpFdmVudFJlZ2lvbikKLSAgICAgICAgcGFpbnRJ
bmZvLmV2ZW50UmVnaW9uQ29udGV4dC0+cG9wQ2xpcCgpOworICAgIGlmIChwYWludEluZm8ucGhh
c2UgPT0gUGFpbnRQaGFzZTo6RXZlbnRSZWdpb24gfHwgcGFpbnRJbmZvLnBoYXNlID09IFBhaW50
UGhhc2U6OkFjY2Vzc2liaWxpdHkpCisgICAgICAgIHBhaW50SW5mby5yZWdpb25Db250ZXh0LT5w
b3BDbGlwKCk7CiAKICAgICBwYWludEluZm8uY29udGV4dCgpLnJlc3RvcmUoKTsKICAgICBpZiAo
b3JpZ2luYWxQaGFzZSA9PSBQYWludFBoYXNlOjpPdXRsaW5lKSB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5jcHAKaW5kZXggNmMwNmRkNmI0MWQ3Li4zYTZkMDU0Njdm
NzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbGVtZW50LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5jcHAKQEAgLTEx
MjIsNyArMTEyMiw3IEBAIHZvaWQgUmVuZGVyRWxlbWVudDo6cGFpbnRBc0lubGluZUJsb2NrKFBh
aW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2ludCYKICAgICAvLyAoU2VlIEFwcGVu
ZGl4IEUuMiwgc2VjdGlvbiA2LjQgb24gaW5saW5lIGJsb2NrL3RhYmxlL3JlcGxhY2VkIGVsZW1l
bnRzIGluIHRoZSBDU1MyLjEgc3BlY2lmaWNhdGlvbi4pCiAgICAgLy8gVGhpcyBpcyBhbHNvIHVz
ZWQgYnkgb3RoZXIgZWxlbWVudHMgKGUuZy4gZmxleCBpdGVtcyBhbmQgZ3JpZCBpdGVtcykuCiAg
ICAgUGFpbnRQaGFzZSBwYWludFBoYXNlVG9Vc2UgPSBpc0V4Y2x1ZGVkQW5kUGxhY2VkSW5Cb3Jk
ZXIoKSA/IHBhaW50SW5mby5waGFzZSA6IFBhaW50UGhhc2U6OkZvcmVncm91bmQ7Ci0gICAgaWYg
KHBhaW50SW5mby5waGFzZSA9PSBQYWludFBoYXNlOjpTZWxlY3Rpb24gfHwgcGFpbnRJbmZvLnBo
YXNlID09IFBhaW50UGhhc2U6OkV2ZW50UmVnaW9uIHx8IHBhaW50SW5mby5waGFzZSA9PSBQYWlu
dFBoYXNlOjpUZXh0Q2xpcCkKKyAgICBpZiAocGFpbnRJbmZvLnBoYXNlID09IFBhaW50UGhhc2U6
OlNlbGVjdGlvbiB8fCBwYWludEluZm8ucGhhc2UgPT0gUGFpbnRQaGFzZTo6RXZlbnRSZWdpb24g
fHwgcGFpbnRJbmZvLnBoYXNlID09IFBhaW50UGhhc2U6OlRleHRDbGlwIHx8IHBhaW50SW5mby5w
aGFzZSA9PSBQYWludFBoYXNlOjpBY2Nlc3NpYmlsaXR5KQogICAgICAgICBwYWludChwYWludElu
Zm8sIGNoaWxkUG9pbnQpOwogICAgIGVsc2UgaWYgKHBhaW50SW5mby5waGFzZSA9PSBwYWludFBo
YXNlVG9Vc2UpIHsKICAgICAgICAgcGFpbnRQaGFzZSgqdGhpcywgUGFpbnRQaGFzZTo6QmxvY2tC
YWNrZ3JvdW5kLCBwYWludEluZm8sIGNoaWxkUG9pbnQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJMYXllci5jcHAKaW5kZXggMzUxODhjMTA1YzcyLi40MzAxZTVlZTA3ODUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcApAQCAtNDcsNiArNDcsNyBAQAog
I2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlJlbmRlckxheWVyLmgiCiAKKyNpbmNsdWRl
ICJBY2Nlc3NpYmlsaXR5UmVnaW9uQ29udGV4dC5oIgogI2luY2x1ZGUgIkJpdG1hcEltYWdlLmgi
CiAjaW5jbHVkZSAiQm94U2hhcGUuaCIKICNpbmNsdWRlICJDU1NGaWx0ZXIuaCIKQEAgLTI3Nzks
MTQgKzI3ODAsMTUgQEAgYm9vbCBSZW5kZXJMYXllcjo6aXNQb2ludEluUmVzaXplQ29udHJvbChJ
bnRQb2ludCBsb2NhbFBvaW50KSBjb25zdAogICAgIHJldHVybiBvdmVyZmxvd0NvbnRyb2xzUmVj
dHMoKS5yZXNpemVyLmNvbnRhaW5zKGxvY2FsUG9pbnQpOwogfQogCi12b2lkIFJlbmRlckxheWVy
OjpwYWludChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IExheW91dFJlY3QmIGRhbWFn
ZVJlY3QsIGNvbnN0IExheW91dFNpemUmIHN1YnBpeGVsT2Zmc2V0LCBPcHRpb25TZXQ8UGFpbnRC
ZWhhdmlvcj4gcGFpbnRCZWhhdmlvciwgUmVuZGVyT2JqZWN0KiBzdWJ0cmVlUGFpbnRSb290LCBP
cHRpb25TZXQ8UGFpbnRMYXllckZsYWc+IHBhaW50RmxhZ3MsIFNlY3VyaXR5T3JpZ2luUGFpbnRQ
b2xpY3kgcGFpbnRQb2xpY3ksIEV2ZW50UmVnaW9uQ29udGV4dCogZXZlbnRSZWdpb25Db250ZXh0
KQordm9pZCBSZW5kZXJMYXllcjo6cGFpbnQoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25z
dCBMYXlvdXRSZWN0JiBkYW1hZ2VSZWN0LCBjb25zdCBMYXlvdXRTaXplJiBzdWJwaXhlbE9mZnNl
dCwgT3B0aW9uU2V0PFBhaW50QmVoYXZpb3I+IHBhaW50QmVoYXZpb3IsIFJlbmRlck9iamVjdCog
c3VidHJlZVBhaW50Um9vdCwgT3B0aW9uU2V0PFBhaW50TGF5ZXJGbGFnPiBwYWludEZsYWdzLCBT
ZWN1cml0eU9yaWdpblBhaW50UG9saWN5IHBhaW50UG9saWN5LCBSZWdpb25Db250ZXh0KiByZWdp
b25Db250ZXh0KQogewogICAgIE92ZXJsYXBUZXN0UmVxdWVzdE1hcCBvdmVybGFwVGVzdFJlcXVl
c3RzOwogCiAgICAgTGF5ZXJQYWludGluZ0luZm8gcGFpbnRpbmdJbmZvKHRoaXMsIGVuY2xvc2lu
Z0ludFJlY3QoZGFtYWdlUmVjdCksIHBhaW50QmVoYXZpb3IsIHN1YnBpeGVsT2Zmc2V0LCBzdWJ0
cmVlUGFpbnRSb290LCAmb3ZlcmxhcFRlc3RSZXF1ZXN0cywgcGFpbnRQb2xpY3kgPT0gU2VjdXJp
dHlPcmlnaW5QYWludFBvbGljeTo6QWNjZXNzaWJsZU9yaWdpbk9ubHkpOwotICAgIGlmIChldmVu
dFJlZ2lvbkNvbnRleHQpIHsKLSAgICAgICAgcGFpbnRpbmdJbmZvLmV2ZW50UmVnaW9uQ29udGV4
dCA9IGV2ZW50UmVnaW9uQ29udGV4dDsKLSAgICAgICAgcGFpbnRGbGFncy5hZGQoUmVuZGVyTGF5
ZXI6OlBhaW50TGF5ZXJGbGFnOjpDb2xsZWN0aW5nRXZlbnRSZWdpb24pOworICAgIGlmIChyZWdp
b25Db250ZXh0KSB7CisgICAgICAgIHBhaW50aW5nSW5mby5yZWdpb25Db250ZXh0ID0gcmVnaW9u
Q29udGV4dDsKKyAgICAgICAgaWYgKGlzPEV2ZW50UmVnaW9uQ29udGV4dD4ocmVnaW9uQ29udGV4
dCkpCisgICAgICAgICAgICBwYWludEZsYWdzLmFkZChSZW5kZXJMYXllcjo6UGFpbnRMYXllckZs
YWc6OkNvbGxlY3RpbmdFdmVudFJlZ2lvbik7CiAgICAgfQogICAgIHBhaW50TGF5ZXIoY29udGV4
dCwgcGFpbnRpbmdJbmZvLCBwYWludEZsYWdzKTsKIApAQCAtMjc5NCw3ICsyNzk2LDcgQEAgdm9p
ZCBSZW5kZXJMYXllcjo6cGFpbnQoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBMYXlv
dXRSZWN0JiBkYW1hZ2VSZWN0LAogICAgICAgICB3aWRnZXQtPnNldE92ZXJsYXBUZXN0UmVzdWx0
KGZhbHNlKTsKIH0KIAotdm9pZCBSZW5kZXJMYXllcjo6Y2xpcFRvUmVjdChHcmFwaGljc0NvbnRl
eHQmIGNvbnRleHQsIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXImIHN0YXRlU2F2ZXIsIEV2ZW50
UmVnaW9uQ29udGV4dFN0YXRlU2F2ZXImIGV2ZW50UmVnaW9uU3RhdGVTYXZlciwgY29uc3QgTGF5
ZXJQYWludGluZ0luZm8mIHBhaW50aW5nSW5mbywgT3B0aW9uU2V0PFBhaW50QmVoYXZpb3I+IHBh
aW50QmVoYXZpb3IsIGNvbnN0IENsaXBSZWN0JiBjbGlwUmVjdCwgQm9yZGVyUmFkaXVzQ2xpcHBp
bmdSdWxlIHJ1bGUpCit2b2lkIFJlbmRlckxheWVyOjpjbGlwVG9SZWN0KEdyYXBoaWNzQ29udGV4
dCYgY29udGV4dCwgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciYgc3RhdGVTYXZlciwgUmVnaW9u
Q29udGV4dFN0YXRlU2F2ZXImIHJlZ2lvbkNvbnRleHRTdGF0ZVNhdmVyLCBjb25zdCBMYXllclBh
aW50aW5nSW5mbyYgcGFpbnRpbmdJbmZvLCBPcHRpb25TZXQ8UGFpbnRCZWhhdmlvcj4gcGFpbnRC
ZWhhdmlvciwgY29uc3QgQ2xpcFJlY3QmIGNsaXBSZWN0LCBCb3JkZXJSYWRpdXNDbGlwcGluZ1J1
bGUgcnVsZSkKIHsKICAgICBmbG9hdCBkZXZpY2VTY2FsZUZhY3RvciA9IHJlbmRlcmVyKCkuZG9j
dW1lbnQoKS5kZXZpY2VTY2FsZUZhY3RvcigpOwogICAgIGJvb2wgbmVlZHNDbGlwcGluZyA9ICFj
bGlwUmVjdC5pc0luZmluaXRlKCkgJiYgY2xpcFJlY3QucmVjdCgpICE9IHBhaW50aW5nSW5mby5w
YWludERpcnR5UmVjdDsKQEAgLTI4MDYsNyArMjgwOCw3IEBAIHZvaWQgUmVuZGVyTGF5ZXI6OmNs
aXBUb1JlY3QoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBHcmFwaGljc0NvbnRleHRTdGF0ZVNh
dmVyCiAgICAgICAgIGFkanVzdGVkQ2xpcFJlY3QubW92ZShwYWludGluZ0luZm8uc3VicGl4ZWxP
ZmZzZXQpOwogICAgICAgICBhdXRvIHNuYXBwZWRDbGlwUmVjdCA9IHNuYXBSZWN0VG9EZXZpY2VQ
aXhlbHNJZk5lZWRlZChhZGp1c3RlZENsaXBSZWN0LCByZW5kZXJlcigpKTsKICAgICAgICAgY29u
dGV4dC5jbGlwKHNuYXBwZWRDbGlwUmVjdCk7Ci0gICAgICAgIGV2ZW50UmVnaW9uU3RhdGVTYXZl
ci5wdXNoQ2xpcChlbmNsb3NpbmdJbnRSZWN0KHNuYXBwZWRDbGlwUmVjdCkpOworICAgICAgICBy
ZWdpb25Db250ZXh0U3RhdGVTYXZlci5wdXNoQ2xpcChlbmNsb3NpbmdJbnRSZWN0KHNuYXBwZWRD
bGlwUmVjdCkpOwogICAgIH0KIAogICAgIGlmIChjbGlwUmVjdC5hZmZlY3RlZEJ5UmFkaXVzKCkp
IHsKQEAgLTI5NDcsNyArMjk0OSw3IEBAIHZvaWQgUmVuZGVyTGF5ZXI6OnBhaW50TGF5ZXJXaXRo
RWZmZWN0cyhHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IExheWVyUGFpCiAgICAgICAg
IC8vIE1ha2Ugc3VyZSB0aGUgcGFyZW50J3MgY2xpcCByZWN0cyBoYXZlIGJlZW4gY2FsY3VsYXRl
ZC4KICAgICAgICAgQ2xpcFJlY3QgY2xpcFJlY3QgPSBwYWludGluZ0luZm8ucGFpbnREaXJ0eVJl
Y3Q7CiAgICAgICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcihjb250ZXh0
LCBmYWxzZSk7Ci0gICAgICAgIEV2ZW50UmVnaW9uQ29udGV4dFN0YXRlU2F2ZXIgZXZlbnRSZWdp
b25TdGF0ZVNhdmVyKHBhaW50aW5nSW5mby5ldmVudFJlZ2lvbkNvbnRleHQpOworICAgICAgICBS
ZWdpb25Db250ZXh0U3RhdGVTYXZlciByZWdpb25Db250ZXh0U3RhdGVTYXZlcihwYWludGluZ0lu
Zm8ucmVnaW9uQ29udGV4dCk7CiAgICAgICAgIGlmIChwYXJlbnQoKSkgewogICAgICAgICAgICAg
YXV0byBvcHRpb25zID0gcGFpbnRGbGFncy5jb250YWlucyhQYWludExheWVyRmxhZzo6UGFpbnRp
bmdPdmVyZmxvd0NvbnRlbnRzKSA/IGNsaXBSZWN0T3B0aW9uc0ZvclBhaW50aW5nT3ZlcmZsb3dD
b250cm9scyA6IGNsaXBSZWN0RGVmYXVsdE9wdGlvbnM7CiAgICAgICAgICAgICBhdXRvIGNsaXBS
ZWN0c0NvbnRleHQgPSBDbGlwUmVjdHNDb250ZXh0KHBhaW50aW5nSW5mby5yb290TGF5ZXIsIChw
YWludEZsYWdzICYgUGFpbnRMYXllckZsYWc6OlRlbXBvcmFyeUNsaXBSZWN0cykgPyBUZW1wb3Jh
cnlDbGlwUmVjdHMgOiBQYWludGluZ0NsaXBSZWN0cywgb3B0aW9ucyk7CkBAIC0yOTc2LDcgKzI5
NzgsNyBAQCB2b2lkIFJlbmRlckxheWVyOjpwYWludExheWVyV2l0aEVmZmVjdHMoR3JhcGhpY3ND
b250ZXh0JiBjb250ZXh0LCBjb25zdCBMYXllclBhaQogI2VuZGlmCiAKICAgICAgICAgICAgIC8v
IFB1c2ggdGhlIHBhcmVudCBjb29yZGluYXRlIHNwYWNlJ3MgY2xpcC4KLSAgICAgICAgICAgIHBh
cmVudCgpLT5jbGlwVG9SZWN0KGNvbnRleHQsIHN0YXRlU2F2ZXIsIGV2ZW50UmVnaW9uU3RhdGVT
YXZlciwgcGFpbnRpbmdJbmZvLCBwYWludEJlaGF2aW9yLCBjbGlwUmVjdCk7CisgICAgICAgICAg
ICBwYXJlbnQoKS0+Y2xpcFRvUmVjdChjb250ZXh0LCBzdGF0ZVNhdmVyLCByZWdpb25Db250ZXh0
U3RhdGVTYXZlciwgcGFpbnRpbmdJbmZvLCBwYWludEJlaGF2aW9yLCBjbGlwUmVjdCk7CiAgICAg
ICAgIH0KIAogICAgICAgICBwYWludExheWVyQnlBcHBseWluZ1RyYW5zZm9ybShjb250ZXh0LCBw
YWludGluZ0luZm8sIHBhaW50RmxhZ3MpOwpAQCAtMzA1MCwxMCArMzA1MiwxMCBAQCBzdGQ6OnBh
aXI8UGF0aCwgV2luZFJ1bGU+IFJlbmRlckxheWVyOjpjb21wdXRlQ2xpcFBhdGgoY29uc3QgTGF5
b3V0U2l6ZSYgb2Zmc2V0RgogICAgIHJldHVybiB7IFBhdGgoKSwgV2luZFJ1bGU6Ok5vblplcm8g
fTsKIH0KIAotdm9pZCBSZW5kZXJMYXllcjo6c2V0dXBDbGlwUGF0aChHcmFwaGljc0NvbnRleHQm
IGNvbnRleHQsIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXImIHN0YXRlU2F2ZXIsIEV2ZW50UmVn
aW9uQ29udGV4dFN0YXRlU2F2ZXImIGV2ZW50UmVnaW9uU3RhdGVTYXZlciwgY29uc3QgTGF5ZXJQ
YWludGluZ0luZm8mIHBhaW50aW5nSW5mbywgT3B0aW9uU2V0PFBhaW50TGF5ZXJGbGFnPiBwYWlu
dEZsYWdzLCBjb25zdCBMYXlvdXRTaXplJiBvZmZzZXRGcm9tUm9vdCkKK3ZvaWQgUmVuZGVyTGF5
ZXI6OnNldHVwQ2xpcFBhdGgoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBHcmFwaGljc0NvbnRl
eHRTdGF0ZVNhdmVyJiBzdGF0ZVNhdmVyLCBSZWdpb25Db250ZXh0U3RhdGVTYXZlciYgcmVnaW9u
Q29udGV4dFN0YXRlU2F2ZXIsIGNvbnN0IExheWVyUGFpbnRpbmdJbmZvJiBwYWludGluZ0luZm8s
IE9wdGlvblNldDxQYWludExheWVyRmxhZz4gcGFpbnRGbGFncywgY29uc3QgTGF5b3V0U2l6ZSYg
b2Zmc2V0RnJvbVJvb3QpCiB7Ci0gICAgYm9vbCBpc0NvbGxlY3RpbmdFdmVudFJlZ2lvbiA9IHBh
aW50RmxhZ3MuY29udGFpbnMoUGFpbnRMYXllckZsYWc6OkNvbGxlY3RpbmdFdmVudFJlZ2lvbik7
Ci0gICAgaWYgKCFyZW5kZXJlcigpLmhhc0NsaXBQYXRoKCkgfHwgKGNvbnRleHQucGFpbnRpbmdE
aXNhYmxlZCgpICYmICFpc0NvbGxlY3RpbmdFdmVudFJlZ2lvbikgfHwgcGFpbnRpbmdJbmZvLnBh
aW50RGlydHlSZWN0LmlzRW1wdHkoKSkKKyAgICBib29sIGlzQ29sbGVjdGluZ1JlZ2lvbnMgPSBw
YWludEZsYWdzLmNvbnRhaW5zKFBhaW50TGF5ZXJGbGFnOjpDb2xsZWN0aW5nRXZlbnRSZWdpb24p
IHx8IGlzPEFjY2Vzc2liaWxpdHlSZWdpb25Db250ZXh0PihwYWludGluZ0luZm8ucmVnaW9uQ29u
dGV4dCk7CisgICAgaWYgKCFyZW5kZXJlcigpLmhhc0NsaXBQYXRoKCkgfHwgKGNvbnRleHQucGFp
bnRpbmdEaXNhYmxlZCgpICYmICFpc0NvbGxlY3RpbmdSZWdpb25zKSB8fCBwYWludGluZ0luZm8u
cGFpbnREaXJ0eVJlY3QuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm47CiAKICAgICAvLyBTVkcg
ZWxlbWVudHMgZ2V0IGNsaXBwZWQgaW4gU1ZHIGNvZGUuCkBAIC0zMDY5LDggKzMwNzEsOCBAQCB2
b2lkIFJlbmRlckxheWVyOjpzZXR1cENsaXBQYXRoKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwg
R3JhcGhpY3NDb250ZXh0U3RhdGVTYQogICAgICAgICAvLyBjbGlwcGVkQ29udGVudEJvdW5kcyBp
cyB1c2VkIGFzIHRoZSByZWZlcmVuY2UgYm94IGZvciBpbmxpbmVzLCB3aGljaCBpcyBhbHNvIHBv
b3JseSBzcGVjaWZpZWQ6IGh0dHBzOi8vZ2l0aHViLmNvbS93M2MvY3Nzd2ctZHJhZnRzL2lzc3Vl
cy82MzgzLgogICAgICAgICBhdXRvIFtwYXRoLCB3aW5kUnVsZV0gPSBjb21wdXRlQ2xpcFBhdGgo
cGFpbnRpbmdPZmZzZXRGcm9tUm9vdCwgY2xpcHBlZENvbnRlbnRCb3VuZHMpOwogCi0gICAgICAg
IGlmIChpc0NvbGxlY3RpbmdFdmVudFJlZ2lvbikgewotICAgICAgICAgICAgZXZlbnRSZWdpb25T
dGF0ZVNhdmVyLnB1c2hDbGlwKHBhdGgsIHdpbmRSdWxlKTsKKyAgICAgICAgaWYgKGlzQ29sbGVj
dGluZ1JlZ2lvbnMpIHsKKyAgICAgICAgICAgIHJlZ2lvbkNvbnRleHRTdGF0ZVNhdmVyLnB1c2hD
bGlwKHBhdGgpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKQEAgLTMxNTMsOSAr
MzE1NSw5IEBAIHZvaWQgUmVuZGVyTGF5ZXI6OmFwcGx5RmlsdGVycyhHcmFwaGljc0NvbnRleHQm
IG9yaWdpbmFsQ29udGV4dCwgY29uc3QgTGF5ZXJQYWluCiAgICAgQ2xpcFJlY3QgYmFja2dyb3Vu
ZFJlY3QgPSBsYXllckZyYWdtZW50cy5pc0VtcHR5KCkgPyBDbGlwUmVjdCgpIDogbGF5ZXJGcmFn
bWVudHNbMF0uYmFja2dyb3VuZFJlY3Q7CiAKICAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVy
IHN0YXRlU2F2ZXIob3JpZ2luYWxDb250ZXh0LCBmYWxzZSk7Ci0gICAgRXZlbnRSZWdpb25Db250
ZXh0U3RhdGVTYXZlciBldmVudFJlZ2lvblN0YXRlU2F2ZXIocGFpbnRpbmdJbmZvLmV2ZW50UmVn
aW9uQ29udGV4dCk7CisgICAgUmVnaW9uQ29udGV4dFN0YXRlU2F2ZXIgcmVnaW9uQ29udGV4dFN0
YXRlU2F2ZXIocGFpbnRpbmdJbmZvLnJlZ2lvbkNvbnRleHQpOwogCi0gICAgY2xpcFRvUmVjdChv
cmlnaW5hbENvbnRleHQsIHN0YXRlU2F2ZXIsIGV2ZW50UmVnaW9uU3RhdGVTYXZlciwgcGFpbnRp
bmdJbmZvLCBiZWhhdmlvciwgYmFja2dyb3VuZFJlY3QpOworICAgIGNsaXBUb1JlY3Qob3JpZ2lu
YWxDb250ZXh0LCBzdGF0ZVNhdmVyLCByZWdpb25Db250ZXh0U3RhdGVTYXZlciwgcGFpbnRpbmdJ
bmZvLCBiZWhhdmlvciwgYmFja2dyb3VuZFJlY3QpOwogICAgIG1fZmlsdGVycy0+YXBwbHlGaWx0
ZXJFZmZlY3Qob3JpZ2luYWxDb250ZXh0KTsKIH0KIApAQCAtMzE3NSw2ICszMTc3LDcgQEAgdm9p
ZCBSZW5kZXJMYXllcjo6cGFpbnRMYXllckNvbnRlbnRzKEdyYXBoaWNzQ29udGV4dCYgY29udGV4
dCwgY29uc3QgTGF5ZXJQYWludGkKICAgICBib29sIGlzUGFpbnRpbmdDb21wb3NpdGVkQmFja2dy
b3VuZCA9IGxvY2FsUGFpbnRGbGFncy5jb250YWlucyhQYWludExheWVyRmxhZzo6UGFpbnRpbmdD
b21wb3NpdGluZ0JhY2tncm91bmRQaGFzZSk7CiAgICAgYm9vbCBpc1BhaW50aW5nT3ZlcmZsb3dD
b250ZW50cyA9IGxvY2FsUGFpbnRGbGFncy5jb250YWlucyhQYWludExheWVyRmxhZzo6UGFpbnRp
bmdPdmVyZmxvd0NvbnRlbnRzKTsKICAgICBib29sIGlzQ29sbGVjdGluZ0V2ZW50UmVnaW9uID0g
bG9jYWxQYWludEZsYWdzLmNvbnRhaW5zKFBhaW50TGF5ZXJGbGFnOjpDb2xsZWN0aW5nRXZlbnRS
ZWdpb24pOworICAgIGJvb2wgaXNDb2xsZWN0aW5nQWNjZXNzaWJpbGl0eVJlZ2lvbiA9IGlzPEFj
Y2Vzc2liaWxpdHlSZWdpb25Db250ZXh0PihwYWludGluZ0luZm8ucmVnaW9uQ29udGV4dCk7CiAK
ICAgICBib29sIGlzU2VsZlBhaW50aW5nTGF5ZXIgPSB0aGlzLT5pc1NlbGZQYWludGluZ0xheWVy
KCk7CiAKQEAgLTMxODQsMTEgKzMxODcsMTEgQEAgdm9pZCBSZW5kZXJMYXllcjo6cGFpbnRMYXll
ckNvbnRlbnRzKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgTGF5ZXJQYWludGkKICAg
ICAvLyBjb250ZW50LiBXaGVuIG5vdCBjb21wb3NpdGVkIHNjcm9sbGluZywgdGhlIG91dGxpbmUg
aXMgcGFpbnRlZCBpbiB0aGUKICAgICAvLyBmb3JlZ3JvdW5kIHBoYXNlLiBTaW5jZSBzY3JvbGxl
ZCBjb250ZW50cyBhcmUgbW92ZWQgYnkgcmVwYWludGluZyBpbiB0aGlzCiAgICAgLy8gY2FzZSwg
dGhlIG91dGxpbmUgd29uJ3QgZ2V0ICdkcmFnZ2VkIGFsb25nJy4KLSAgICBib29sIHNob3VsZFBh
aW50T3V0bGluZSA9IGlzU2VsZlBhaW50aW5nTGF5ZXIgJiYgIWlzUGFpbnRpbmdPdmVybGF5U2Ny
b2xsYmFycyAmJiAhaXNDb2xsZWN0aW5nRXZlbnRSZWdpb24KKyAgICBib29sIHNob3VsZFBhaW50
T3V0bGluZSA9IGlzU2VsZlBhaW50aW5nTGF5ZXIgJiYgIWlzUGFpbnRpbmdPdmVybGF5U2Nyb2xs
YmFycyAmJiAhaXNDb2xsZWN0aW5nRXZlbnRSZWdpb24gJiYgIWlzQ29sbGVjdGluZ0FjY2Vzc2li
aWxpdHlSZWdpb24KICAgICAgICAgJiYgKHJlbmRlcmVyKCkudmlldygpLnByaW50aW5nKCkgfHwg
cmVuZGVyZXIoKS52aWV3KCkuaGFzUmVuZGVyZXJzV2l0aE91dGxpbmUoKSkKICAgICAgICAgJiYg
KChpc1BhaW50aW5nU2Nyb2xsaW5nQ29udGVudCAmJiBpc1BhaW50aW5nQ29tcG9zaXRlZEJhY2tn
cm91bmQpCiAgICAgICAgIHx8ICghaXNQYWludGluZ1Njcm9sbGluZ0NvbnRlbnQgJiYgaXNQYWlu
dGluZ0NvbXBvc2l0ZWRGb3JlZ3JvdW5kKSk7Ci0gICAgYm9vbCBzaG91bGRQYWludENvbnRlbnQg
PSBtX2hhc1Zpc2libGVDb250ZW50ICYmIGlzU2VsZlBhaW50aW5nTGF5ZXIgJiYgIWlzUGFpbnRp
bmdPdmVybGF5U2Nyb2xsYmFycyAmJiAhaXNDb2xsZWN0aW5nRXZlbnRSZWdpb247CisgICAgYm9v
bCBzaG91bGRQYWludENvbnRlbnQgPSBtX2hhc1Zpc2libGVDb250ZW50ICYmIGlzU2VsZlBhaW50
aW5nTGF5ZXIgJiYgIWlzUGFpbnRpbmdPdmVybGF5U2Nyb2xsYmFycyAmJiAhaXNDb2xsZWN0aW5n
RXZlbnRSZWdpb24gJiYgIWlzQ29sbGVjdGluZ0FjY2Vzc2liaWxpdHlSZWdpb247CiAKICAgICBp
ZiAobG9jYWxQYWludEZsYWdzLmNvbnRhaW5zKFBhaW50TGF5ZXJGbGFnOjpQYWludGluZ1Jvb3RC
YWNrZ3JvdW5kT25seSkgJiYgIXJlbmRlcmVyKCkuaXNSZW5kZXJWaWV3KCkgJiYgIXJlbmRlcmVy
KCkuaXNEb2N1bWVudEVsZW1lbnRSZW5kZXJlcigpKSB7CiAgICAgICAgIC8vIElmIGJlZ2luVHJh
bnNwYXJlbmN5TGF5ZXJzIHdhcyBjYWxsZWQgcHJpb3IgdG8gdGhpcywgZW5zdXJlIHRoZSB0cmFu
c3BhcmVuY3kgc3RhdGUgaXMgY2xlYW5lZCB1cCBiZWZvcmUgcmV0dXJuaW5nLgpAQCAtMzIyMSwx
MCArMzIyNCwxMCBAQCB2b2lkIFJlbmRlckxheWVyOjpwYWludExheWVyQ29udGVudHMoR3JhcGhp
Y3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBMYXllclBhaW50aQogICAgICAgICBjb2x1bW5Bd2Fy
ZU9mZnNldEZyb21Sb290ID0gdG9MYXlvdXRTaXplKGNvbnZlcnRUb0xheWVyQ29vcmRzKHBhaW50
aW5nSW5mby5yb290TGF5ZXIsIExheW91dFBvaW50KCksIEFkanVzdEZvckNvbHVtbnMpKTsKIAog
ICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcihjb250ZXh0LCBmYWxzZSk7
Ci0gICAgRXZlbnRSZWdpb25Db250ZXh0U3RhdGVTYXZlciBldmVudFJlZ2lvblN0YXRlU2F2ZXIo
cGFpbnRpbmdJbmZvLmV2ZW50UmVnaW9uQ29udGV4dCk7CisgICAgUmVnaW9uQ29udGV4dFN0YXRl
U2F2ZXIgcmVnaW9uQ29udGV4dFN0YXRlU2F2ZXIocGFpbnRpbmdJbmZvLnJlZ2lvbkNvbnRleHQp
OwogCiAgICAgaWYgKHNob3VsZEFwcGx5Q2xpcFBhdGgocGFpbnRpbmdJbmZvLnBhaW50QmVoYXZp
b3IsIGxvY2FsUGFpbnRGbGFncykpCi0gICAgICAgIHNldHVwQ2xpcFBhdGgoY29udGV4dCwgc3Rh
dGVTYXZlciwgZXZlbnRSZWdpb25TdGF0ZVNhdmVyLCBwYWludGluZ0luZm8sIGxvY2FsUGFpbnRG
bGFncywgY29sdW1uQXdhcmVPZmZzZXRGcm9tUm9vdCk7CisgICAgICAgIHNldHVwQ2xpcFBhdGgo
Y29udGV4dCwgc3RhdGVTYXZlciwgcmVnaW9uQ29udGV4dFN0YXRlU2F2ZXIsIHBhaW50aW5nSW5m
bywgbG9jYWxQYWludEZsYWdzLCBjb2x1bW5Bd2FyZU9mZnNldEZyb21Sb290KTsKIAogICAgIGJv
b2wgc2VsZWN0aW9uQW5kQmFja2dyb3VuZHNPbmx5ID0gcGFpbnRpbmdJbmZvLnBhaW50QmVoYXZp
b3IuY29udGFpbnMoUGFpbnRCZWhhdmlvcjo6U2VsZWN0aW9uQW5kQmFja2dyb3VuZHNPbmx5KTsK
ICAgICBib29sIHNlbGVjdGlvbk9ubHkgPSBwYWludGluZ0luZm8ucGFpbnRCZWhhdmlvci5jb250
YWlucyhQYWludEJlaGF2aW9yOjpTZWxlY3Rpb25Pbmx5KTsKQEAgLTMyODEsNyArMzI4NCw3IEBA
IHZvaWQgUmVuZGVyTGF5ZXI6OnBhaW50TGF5ZXJDb250ZW50cyhHcmFwaGljc0NvbnRleHQmIGNv
bnRleHQsIGNvbnN0IExheWVyUGFpbnRpCiAgICAgICAgICAgICBwZXJmb3JtT3ZlcmxhcFRlc3Rz
KCpsb2NhbFBhaW50aW5nSW5mby5vdmVybGFwVGVzdFJlcXVlc3RzLCBsb2NhbFBhaW50aW5nSW5m
by5yb290TGF5ZXIsIHRoaXMpOwogCiAgICAgICAgIExheW91dFJlY3QgcGFpbnREaXJ0eVJlY3Qg
PSBsb2NhbFBhaW50aW5nSW5mby5wYWludERpcnR5UmVjdDsKLSAgICAgICAgaWYgKHNob3VsZFBh
aW50Q29udGVudCB8fCBzaG91bGRQYWludE91dGxpbmUgfHwgaXNQYWludGluZ092ZXJsYXlTY3Jv
bGxiYXJzIHx8IGlzQ29sbGVjdGluZ0V2ZW50UmVnaW9uKSB7CisgICAgICAgIGlmIChzaG91bGRQ
YWludENvbnRlbnQgfHwgc2hvdWxkUGFpbnRPdXRsaW5lIHx8IGlzUGFpbnRpbmdPdmVybGF5U2Ny
b2xsYmFycyB8fCBpc0NvbGxlY3RpbmdFdmVudFJlZ2lvbiB8fCBpc0NvbGxlY3RpbmdBY2Nlc3Np
YmlsaXR5UmVnaW9uKSB7CiAgICAgICAgICAgICAvLyBDb2xsZWN0IHRoZSBmcmFnbWVudHMuIFRo
aXMgd2lsbCBjb21wdXRlIHRoZSBjbGlwIHJlY3RhbmdsZXMgYW5kIHBhaW50IG9mZnNldHMgZm9y
IGVhY2ggbGF5ZXIgZnJhZ21lbnQsIGFzIHdlbGwgYXMgd2hldGhlciBvciBub3QgdGhlIGNvbnRl
bnQgb2YgZWFjaAogICAgICAgICAgICAgLy8gZnJhZ21lbnQgc2hvdWxkIHBhaW50LiBJZiB0aGUg
cGFyZW50J3MgZmlsdGVyIGRpY3RhdGVzIGZ1bGwgcmVwYWludCB0byBlbnN1cmUgcHJvcGVyIGZp
bHRlciBlZmZlY3QsCiAgICAgICAgICAgICAvLyB1c2UgdGhlIG92ZXJmbG93IGNsaXAgYXMgZGly
dHkgcmVjdCwgaW5zdGVhZCBvZiBubyBjbGlwcGluZy4gSXQgbWFpbnRhaW5zIHByb3BlciBjbGlw
cGluZyBmb3Igb3ZlcmZsb3c6OnNjcm9sbC4KQEAgLTMzMTksNiArMzMyMiw5IEBAIHZvaWQgUmVu
ZGVyTGF5ZXI6OnBhaW50TGF5ZXJDb250ZW50cyhHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNv
bnN0IExheWVyUGFpbnRpCiAgICAgICAgIGlmIChpc0NvbGxlY3RpbmdFdmVudFJlZ2lvbikKICAg
ICAgICAgICAgIGNvbGxlY3RFdmVudFJlZ2lvbkZvckZyYWdtZW50cyhsYXllckZyYWdtZW50cywg
Y3VycmVudENvbnRleHQsIGxvY2FsUGFpbnRpbmdJbmZvLCBwYWludEJlaGF2aW9yKTsKIAorICAg
ICAgICBpZiAoaXNDb2xsZWN0aW5nQWNjZXNzaWJpbGl0eVJlZ2lvbikKKyAgICAgICAgICAgIGNv
bGxlY3RBY2Nlc3NpYmlsaXR5UmVnaW9uc0ZvckZyYWdtZW50cyhsYXllckZyYWdtZW50cywgY3Vy
cmVudENvbnRleHQsIGxvY2FsUGFpbnRpbmdJbmZvLCBwYWludEJlaGF2aW9yKTsKKwogICAgICAg
ICBpZiAoc2hvdWxkUGFpbnRPdXRsaW5lKQogICAgICAgICAgICAgcGFpbnRPdXRsaW5lRm9yRnJh
Z21lbnRzKGxheWVyRnJhZ21lbnRzLCBjdXJyZW50Q29udGV4dCwgbG9jYWxQYWludGluZ0luZm8s
IHBhaW50QmVoYXZpb3IsIHN1YnRyZWVQYWludFJvb3RGb3JSZW5kZXJlcik7CiAKQEAgLTM0MDQs
OCArMzQxMCw4IEBAIHZvaWQgUmVuZGVyTGF5ZXI6OnBhaW50TGF5ZXJCeUFwcGx5aW5nVHJhbnNm
b3JtKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QKICAgICBhdXRvIGFmZmluZVRyYW5z
Zm9ybSA9IHRyYW5zZm9ybS50b0FmZmluZVRyYW5zZm9ybSgpOwogICAgIGNvbnRleHQuY29uY2F0
Q1RNKGFmZmluZVRyYW5zZm9ybSk7CiAKLSAgICBpZiAocGFpbnRpbmdJbmZvLmV2ZW50UmVnaW9u
Q29udGV4dCkKLSAgICAgICAgcGFpbnRpbmdJbmZvLmV2ZW50UmVnaW9uQ29udGV4dC0+cHVzaFRy
YW5zZm9ybShhZmZpbmVUcmFuc2Zvcm0pOworICAgIGlmIChwYWludGluZ0luZm8ucmVnaW9uQ29u
dGV4dCkKKyAgICAgICAgcGFpbnRpbmdJbmZvLnJlZ2lvbkNvbnRleHQtPnB1c2hUcmFuc2Zvcm0o
YWZmaW5lVHJhbnNmb3JtKTsKIAogICAgIC8vIE9ubHkgcHJvcGFnYXRlIHRoZSBzdWJwaXhlbCBv
ZmZzZXRzIHRvIHRoZSBkZXNjZW5kYW50IGxheWVycywgaWYgd2UncmUgbm90IHRoZSByb290CiAg
ICAgLy8gb2YgYSBTVkcgc3VidHJlZSwgd2hlcmUgbm8gcGl4ZWwgc25hcHBpbmcgaXMgYXBwbGll
ZCAtLSBvbmx5IHRoZSBvdXRlcm1vc3QgPHN2Zz4gbGF5ZXIKQEAgLTM0MjEsOCArMzQyNyw4IEBA
IHZvaWQgUmVuZGVyTGF5ZXI6OnBhaW50TGF5ZXJCeUFwcGx5aW5nVHJhbnNmb3JtKEdyYXBoaWNz
Q29udGV4dCYgY29udGV4dCwgY29uc3QKICAgICB0cmFuc2Zvcm1lZFBhaW50aW5nSW5mby5zdWJw
aXhlbE9mZnNldCA9IGFkanVzdGVkU3VicGl4ZWxPZmZzZXQ7CiAgICAgcGFpbnRMYXllckNvbnRl
bnRzQW5kUmVmbGVjdGlvbihjb250ZXh0LCB0cmFuc2Zvcm1lZFBhaW50aW5nSW5mbywgcGFpbnRG
bGFncyk7CiAKLSAgICBpZiAocGFpbnRpbmdJbmZvLmV2ZW50UmVnaW9uQ29udGV4dCkKLSAgICAg
ICAgcGFpbnRpbmdJbmZvLmV2ZW50UmVnaW9uQ29udGV4dC0+cG9wVHJhbnNmb3JtKCk7CisgICAg
aWYgKHBhaW50aW5nSW5mby5yZWdpb25Db250ZXh0KQorICAgICAgICBwYWludGluZ0luZm8ucmVn
aW9uQ29udGV4dC0+cG9wVHJhbnNmb3JtKCk7CiAKICAgICBjb250ZXh0LnNldENUTShvbGRUcmFu
c2Zvcm0pOwogfQpAQCAtMzYzOSw5ICszNjQ1LDkgQEAgdm9pZCBSZW5kZXJMYXllcjo6cGFpbnRU
cmFuc2Zvcm1lZExheWVySW50b0ZyYWdtZW50cyhHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGMK
ICAgICAgICAgICAgIHBhaW50QmVoYXZpb3IuYWRkKFBhaW50QmVoYXZpb3I6OkNvbXBvc2l0ZWRP
dmVyZmxvd1Njcm9sbENvbnRlbnQpOwogCiAgICAgICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2
ZXIgc3RhdGVTYXZlcihjb250ZXh0LCBmYWxzZSk7Ci0gICAgICAgIEV2ZW50UmVnaW9uQ29udGV4
dFN0YXRlU2F2ZXIgZXZlbnRSZWdpb25TdGF0ZVNhdmVyKHBhaW50aW5nSW5mby5ldmVudFJlZ2lv
bkNvbnRleHQpOworICAgICAgICBSZWdpb25Db250ZXh0U3RhdGVTYXZlciByZWdpb25Db250ZXh0
U3RhdGVTYXZlcihwYWludGluZ0luZm8ucmVnaW9uQ29udGV4dCk7CiAKLSAgICAgICAgcGFyZW50
KCktPmNsaXBUb1JlY3QoY29udGV4dCwgc3RhdGVTYXZlciwgZXZlbnRSZWdpb25TdGF0ZVNhdmVy
LCBwYWludGluZ0luZm8sIHBhaW50QmVoYXZpb3IsIGNsaXBSZWN0KTsKKyAgICAgICAgcGFyZW50
KCktPmNsaXBUb1JlY3QoY29udGV4dCwgc3RhdGVTYXZlciwgcmVnaW9uQ29udGV4dFN0YXRlU2F2
ZXIsIHBhaW50aW5nSW5mbywgcGFpbnRCZWhhdmlvciwgY2xpcFJlY3QpOwogICAgICAgICBwYWlu
dExheWVyQnlBcHBseWluZ1RyYW5zZm9ybShjb250ZXh0LCBwYWludGluZ0luZm8sIHBhaW50Rmxh
Z3MsIGZyYWdtZW50LnBhZ2luYXRpb25PZmZzZXQpOwogICAgIH0KIH0KQEAgLTM2NTksMTIgKzM2
NjUsMTIgQEAgdm9pZCBSZW5kZXJMYXllcjo6cGFpbnRCYWNrZ3JvdW5kRm9yRnJhZ21lbnRzKGNv
bnN0IExheWVyRnJhZ21lbnRzJiBsYXllckZyYWdtZW4KICAgICAgICAgICAgIGJlZ2luVHJhbnNw
YXJlbmN5TGF5ZXJzKGNvbnRleHRGb3JUcmFuc3BhcmVuY3lMYXllciwgbG9jYWxQYWludGluZ0lu
Zm8sIHRyYW5zcGFyZW5jeVBhaW50RGlydHlSZWN0KTsKICAgICAKICAgICAgICAgR3JhcGhpY3ND
b250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKGNvbnRleHQsIGZhbHNlKTsKLSAgICAgICAgRXZl
bnRSZWdpb25Db250ZXh0U3RhdGVTYXZlciBldmVudFJlZ2lvblN0YXRlU2F2ZXIobG9jYWxQYWlu
dGluZ0luZm8uZXZlbnRSZWdpb25Db250ZXh0KTsKKyAgICAgICAgUmVnaW9uQ29udGV4dFN0YXRl
U2F2ZXIgcmVnaW9uQ29udGV4dFN0YXRlU2F2ZXIobG9jYWxQYWludGluZ0luZm8ucmVnaW9uQ29u
dGV4dCk7CiAKICAgICAgICAgaWYgKGxvY2FsUGFpbnRpbmdJbmZvLmNsaXBUb0RpcnR5UmVjdCkg
ewogICAgICAgICAgICAgLy8gUGFpbnQgb3VyIGJhY2tncm91bmQgZmlyc3QsIGJlZm9yZSBwYWlu
dGluZyBhbnkgY2hpbGQgbGF5ZXJzLgogICAgICAgICAgICAgLy8gRXN0YWJsaXNoIHRoZSBjbGlw
IHVzZWQgdG8gcGFpbnQgb3VyIGJhY2tncm91bmQuCi0gICAgICAgICAgICBjbGlwVG9SZWN0KGNv
bnRleHQsIHN0YXRlU2F2ZXIsIGV2ZW50UmVnaW9uU3RhdGVTYXZlciwgbG9jYWxQYWludGluZ0lu
Zm8sIHBhaW50QmVoYXZpb3IsIGZyYWdtZW50LmJhY2tncm91bmRSZWN0LCBEb05vdEluY2x1ZGVT
ZWxmRm9yQm9yZGVyUmFkaXVzKTsgLy8gQmFja2dyb3VuZCBwYWludGluZyB3aWxsIGhhbmRsZSBj
bGlwcGluZyB0byBzZWxmLgorICAgICAgICAgICAgY2xpcFRvUmVjdChjb250ZXh0LCBzdGF0ZVNh
dmVyLCByZWdpb25Db250ZXh0U3RhdGVTYXZlciwgbG9jYWxQYWludGluZ0luZm8sIHBhaW50QmVo
YXZpb3IsIGZyYWdtZW50LmJhY2tncm91bmRSZWN0LCBEb05vdEluY2x1ZGVTZWxmRm9yQm9yZGVy
UmFkaXVzKTsgLy8gQmFja2dyb3VuZCBwYWludGluZyB3aWxsIGhhbmRsZSBjbGlwcGluZyB0byBz
ZWxmLgogICAgICAgICB9CiAgICAgICAgIAogICAgICAgICAvLyBQYWludCB0aGUgYmFja2dyb3Vu
ZC4KQEAgLTM3MTAsMTMgKzM3MTYsMTMgQEAgdm9pZCBSZW5kZXJMYXllcjo6cGFpbnRGb3JlZ3Jv
dW5kRm9yRnJhZ21lbnRzKGNvbnN0IExheWVyRnJhZ21lbnRzJiBsYXllckZyYWdtZW4KICAgICAg
ICAgbG9jYWxQYWludEJlaGF2aW9yLmFkZChQYWludEJlaGF2aW9yOjpDb21wb3NpdGVkT3ZlcmZs
b3dTY3JvbGxDb250ZW50KTsKIAogICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVT
YXZlcihjb250ZXh0LCBmYWxzZSk7Ci0gICAgRXZlbnRSZWdpb25Db250ZXh0U3RhdGVTYXZlciBl
dmVudFJlZ2lvblN0YXRlU2F2ZXIobG9jYWxQYWludGluZ0luZm8uZXZlbnRSZWdpb25Db250ZXh0
KTsKKyAgICBSZWdpb25Db250ZXh0U3RhdGVTYXZlciByZWdpb25Db250ZXh0U3RhdGVTYXZlcihs
b2NhbFBhaW50aW5nSW5mby5yZWdpb25Db250ZXh0KTsKIAogICAgIC8vIE9wdGltaXplIGNsaXBw
aW5nIGZvciB0aGUgc2luZ2xlIGZyYWdtZW50IGNhc2UuCiAgICAgYm9vbCBzaG91bGRDbGlwID0g
bG9jYWxQYWludGluZ0luZm8uY2xpcFRvRGlydHlSZWN0ICYmIGxheWVyRnJhZ21lbnRzLnNpemUo
KSA9PSAxICYmIGxheWVyRnJhZ21lbnRzWzBdLnNob3VsZFBhaW50Q29udGVudCAmJiAhbGF5ZXJG
cmFnbWVudHNbMF0uZm9yZWdyb3VuZFJlY3QuaXNFbXB0eSgpOwogICAgIGlmIChzaG91bGRDbGlw
KQotICAgICAgICBjbGlwVG9SZWN0KGNvbnRleHQsIHN0YXRlU2F2ZXIsIGV2ZW50UmVnaW9uU3Rh
dGVTYXZlciwgbG9jYWxQYWludGluZ0luZm8sIGxvY2FsUGFpbnRCZWhhdmlvciwgbGF5ZXJGcmFn
bWVudHNbMF0uZm9yZWdyb3VuZFJlY3QpOwotICAgIAorICAgICAgICBjbGlwVG9SZWN0KGNvbnRl
eHQsIHN0YXRlU2F2ZXIsIHJlZ2lvbkNvbnRleHRTdGF0ZVNhdmVyLCBsb2NhbFBhaW50aW5nSW5m
bywgbG9jYWxQYWludEJlaGF2aW9yLCBsYXllckZyYWdtZW50c1swXS5mb3JlZ3JvdW5kUmVjdCk7
CisKICAgICAvLyBXZSBoYXZlIHRvIGxvb3AgdGhyb3VnaCBldmVyeSBmcmFnbWVudCBtdWx0aXBs
ZSB0aW1lcywgc2luY2Ugd2UgaGF2ZSB0byByZXBhaW50IGluIGVhY2ggc3BlY2lmaWMgcGhhc2Ug
aW4gb3JkZXIgZm9yCiAgICAgLy8gaW50ZXJsZWF2aW5nIG9mIHRoZSBmcmFnbWVudHMgdG8gd29y
ayBwcm9wZXJseS4KICAgICBib29sIHNlbGVjdGlvbk9ubHkgPSBsb2NhbFBhaW50aW5nSW5mby5w
YWludEJlaGF2aW9yLmNvbnRhaW5zKFBhaW50QmVoYXZpb3I6OlNlbGVjdGlvbk9ubHkpOwpAQCAt
Mzc1NywxMSArMzc2MywxMSBAQCB2b2lkIFJlbmRlckxheWVyOjpwYWludEZvcmVncm91bmRGb3JG
cmFnbWVudHNXaXRoUGhhc2UoUGFpbnRQaGFzZSBwaGFzZSwgY29uc3QgTAogICAgICAgICAgICAg
Y29udGludWU7CiAKICAgICAgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVy
KGNvbnRleHQsIGZhbHNlKTsKLSAgICAgICAgRXZlbnRSZWdpb25Db250ZXh0U3RhdGVTYXZlciBl
dmVudFJlZ2lvblN0YXRlU2F2ZXIobG9jYWxQYWludGluZ0luZm8uZXZlbnRSZWdpb25Db250ZXh0
KTsKKyAgICAgICAgUmVnaW9uQ29udGV4dFN0YXRlU2F2ZXIgcmVnaW9uQ29udGV4dFN0YXRlU2F2
ZXIobG9jYWxQYWludGluZ0luZm8ucmVnaW9uQ29udGV4dCk7CiAKICAgICAgICAgaWYgKHNob3Vs
ZENsaXApCi0gICAgICAgICAgICBjbGlwVG9SZWN0KGNvbnRleHQsIHN0YXRlU2F2ZXIsIGV2ZW50
UmVnaW9uU3RhdGVTYXZlciwgbG9jYWxQYWludGluZ0luZm8sIHBhaW50QmVoYXZpb3IsIGZyYWdt
ZW50LmZvcmVncm91bmRSZWN0KTsKLSAgICAKKyAgICAgICAgICAgIGNsaXBUb1JlY3QoY29udGV4
dCwgc3RhdGVTYXZlciwgcmVnaW9uQ29udGV4dFN0YXRlU2F2ZXIsIGxvY2FsUGFpbnRpbmdJbmZv
LCBwYWludEJlaGF2aW9yLCBmcmFnbWVudC5mb3JlZ3JvdW5kUmVjdCk7CisKICAgICAgICAgUGFp
bnRJbmZvIHBhaW50SW5mbyhjb250ZXh0LCBmcmFnbWVudC5mb3JlZ3JvdW5kUmVjdC5yZWN0KCks
IHBoYXNlLCBwYWludEJlaGF2aW9yLCBzdWJ0cmVlUGFpbnRSb290Rm9yUmVuZGVyZXIsIG51bGxw
dHIsIG51bGxwdHIsICZsb2NhbFBhaW50aW5nSW5mby5yb290TGF5ZXItPnJlbmRlcmVyKCksIHRo
aXMsIGxvY2FsUGFpbnRpbmdJbmZvLnJlcXVpcmVTZWN1cml0eU9yaWdpbkFjY2Vzc0ZvcldpZGdl
dHMpOwogICAgICAgICBpZiAocGhhc2UgPT0gUGFpbnRQaGFzZTo6Rm9yZWdyb3VuZCkKICAgICAg
ICAgICAgIHBhaW50SW5mby5vdmVybGFwVGVzdFJlcXVlc3RzID0gbG9jYWxQYWludGluZ0luZm8u
b3ZlcmxhcFRlc3RSZXF1ZXN0czsKQEAgLTM3ODAsOSArMzc4Niw5IEBAIHZvaWQgUmVuZGVyTGF5
ZXI6OnBhaW50T3V0bGluZUZvckZyYWdtZW50cyhjb25zdCBMYXllckZyYWdtZW50cyYgbGF5ZXJG
cmFnbWVudHMsCiAgICAgICAgIFBhaW50SW5mbyBwYWludEluZm8oY29udGV4dCwgZnJhZ21lbnQu
YmFja2dyb3VuZFJlY3QucmVjdCgpLCBQYWludFBoYXNlOjpTZWxmT3V0bGluZSwgcGFpbnRCZWhh
dmlvciwgc3VidHJlZVBhaW50Um9vdEZvclJlbmRlcmVyLCBudWxscHRyLCBudWxscHRyLCAmbG9j
YWxQYWludGluZ0luZm8ucm9vdExheWVyLT5yZW5kZXJlcigpLCB0aGlzKTsKIAogICAgICAgICBH
cmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoY29udGV4dCwgZmFsc2UpOwotICAg
ICAgICBFdmVudFJlZ2lvbkNvbnRleHRTdGF0ZVNhdmVyIGV2ZW50UmVnaW9uU3RhdGVTYXZlcihs
b2NhbFBhaW50aW5nSW5mby5ldmVudFJlZ2lvbkNvbnRleHQpOworICAgICAgICBSZWdpb25Db250
ZXh0U3RhdGVTYXZlciByZWdpb25Db250ZXh0U3RhdGVTYXZlcihsb2NhbFBhaW50aW5nSW5mby5y
ZWdpb25Db250ZXh0KTsKIAotICAgICAgICBjbGlwVG9SZWN0KGNvbnRleHQsIHN0YXRlU2F2ZXIs
IGV2ZW50UmVnaW9uU3RhdGVTYXZlciwgbG9jYWxQYWludGluZ0luZm8sIHBhaW50QmVoYXZpb3Is
IGZyYWdtZW50LmJhY2tncm91bmRSZWN0LCBEb05vdEluY2x1ZGVTZWxmRm9yQm9yZGVyUmFkaXVz
KTsKKyAgICAgICAgY2xpcFRvUmVjdChjb250ZXh0LCBzdGF0ZVNhdmVyLCByZWdpb25Db250ZXh0
U3RhdGVTYXZlciwgbG9jYWxQYWludGluZ0luZm8sIHBhaW50QmVoYXZpb3IsIGZyYWdtZW50LmJh
Y2tncm91bmRSZWN0LCBEb05vdEluY2x1ZGVTZWxmRm9yQm9yZGVyUmFkaXVzKTsKICAgICAgICAg
cmVuZGVyZXIoKS5wYWludChwYWludEluZm8sIHBhaW50T2Zmc2V0Rm9yUmVuZGVyZXIoZnJhZ21l
bnQsIGxvY2FsUGFpbnRpbmdJbmZvKSk7CiAgICAgfQogfQpAQCAtMzc5NSwxMSArMzgwMSwxMSBA
QCB2b2lkIFJlbmRlckxheWVyOjpwYWludE1hc2tGb3JGcmFnbWVudHMoY29uc3QgTGF5ZXJGcmFn
bWVudHMmIGxheWVyRnJhZ21lbnRzLCBHcgogICAgICAgICAgICAgY29udGludWU7CiAKICAgICAg
ICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKGNvbnRleHQsIGZhbHNlKTsK
LSAgICAgICAgRXZlbnRSZWdpb25Db250ZXh0U3RhdGVTYXZlciBldmVudFJlZ2lvblN0YXRlU2F2
ZXIobG9jYWxQYWludGluZ0luZm8uZXZlbnRSZWdpb25Db250ZXh0KTsKKyAgICAgICAgUmVnaW9u
Q29udGV4dFN0YXRlU2F2ZXIgcmVnaW9uQ29udGV4dFN0YXRlU2F2ZXIobG9jYWxQYWludGluZ0lu
Zm8ucmVnaW9uQ29udGV4dCk7CiAKICAgICAgICAgaWYgKGxvY2FsUGFpbnRpbmdJbmZvLmNsaXBU
b0RpcnR5UmVjdCkKLSAgICAgICAgICAgIGNsaXBUb1JlY3QoY29udGV4dCwgc3RhdGVTYXZlciwg
ZXZlbnRSZWdpb25TdGF0ZVNhdmVyLCBsb2NhbFBhaW50aW5nSW5mbywgcGFpbnRCZWhhdmlvciwg
ZnJhZ21lbnQuYmFja2dyb3VuZFJlY3QsIERvTm90SW5jbHVkZVNlbGZGb3JCb3JkZXJSYWRpdXMp
OyAvLyBNYXNrIHBhaW50aW5nIHdpbGwgaGFuZGxlIGNsaXBwaW5nIHRvIHNlbGYuCi0gICAgICAg
IAorICAgICAgICAgICAgY2xpcFRvUmVjdChjb250ZXh0LCBzdGF0ZVNhdmVyLCByZWdpb25Db250
ZXh0U3RhdGVTYXZlciwgbG9jYWxQYWludGluZ0luZm8sIHBhaW50QmVoYXZpb3IsIGZyYWdtZW50
LmJhY2tncm91bmRSZWN0LCBEb05vdEluY2x1ZGVTZWxmRm9yQm9yZGVyUmFkaXVzKTsgLy8gTWFz
ayBwYWludGluZyB3aWxsIGhhbmRsZSBjbGlwcGluZyB0byBzZWxmLgorCiAgICAgICAgIC8vIFBh
aW50IHRoZSBtYXNrLgogICAgICAgICAvLyBGSVhNRTogRXZlbnR1YWxseSB3ZSB3aWxsIGNvbGxl
Y3QgdGhlIHJlZ2lvbiBmcm9tIHRoZSBmcmFnbWVudCBpdHNlbGYgaW5zdGVhZCBvZiBqdXN0IGZy
b20gdGhlIHBhaW50IGluZm8uCiAgICAgICAgIFBhaW50SW5mbyBwYWludEluZm8oY29udGV4dCwg
ZnJhZ21lbnQuYmFja2dyb3VuZFJlY3QucmVjdCgpLCBQYWludFBoYXNlOjpNYXNrLCBwYWludEJl
aGF2aW9yLCBzdWJ0cmVlUGFpbnRSb290Rm9yUmVuZGVyZXIsIG51bGxwdHIsIG51bGxwdHIsICZs
b2NhbFBhaW50aW5nSW5mby5yb290TGF5ZXItPnJlbmRlcmVyKCksIHRoaXMpOwpAQCAtMzgxNCwx
MCArMzgyMCwxMCBAQCB2b2lkIFJlbmRlckxheWVyOjpwYWludENoaWxkQ2xpcHBpbmdNYXNrRm9y
RnJhZ21lbnRzKGNvbnN0IExheWVyRnJhZ21lbnRzJiBsYXllcgogICAgICAgICAgICAgY29udGlu
dWU7CiAKICAgICAgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKGNvbnRl
eHQsIGZhbHNlKTsKLSAgICAgICAgRXZlbnRSZWdpb25Db250ZXh0U3RhdGVTYXZlciBldmVudFJl
Z2lvblN0YXRlU2F2ZXIobG9jYWxQYWludGluZ0luZm8uZXZlbnRSZWdpb25Db250ZXh0KTsKKyAg
ICAgICAgUmVnaW9uQ29udGV4dFN0YXRlU2F2ZXIgcmVnaW9uQ29udGV4dFN0YXRlU2F2ZXIobG9j
YWxQYWludGluZ0luZm8ucmVnaW9uQ29udGV4dCk7CiAKICAgICAgICAgaWYgKGxvY2FsUGFpbnRp
bmdJbmZvLmNsaXBUb0RpcnR5UmVjdCkKLSAgICAgICAgICAgIGNsaXBUb1JlY3QoY29udGV4dCwg
c3RhdGVTYXZlciwgZXZlbnRSZWdpb25TdGF0ZVNhdmVyLCBsb2NhbFBhaW50aW5nSW5mbywgcGFp
bnRCZWhhdmlvciwgZnJhZ21lbnQuZm9yZWdyb3VuZFJlY3QsIEluY2x1ZGVTZWxmRm9yQm9yZGVy
UmFkaXVzKTsgLy8gQ2hpbGQgY2xpcHBpbmcgbWFzayBwYWludGluZyB3aWxsIGhhbmRsZSBjbGlw
cGluZyB0byBzZWxmLgorICAgICAgICAgICAgY2xpcFRvUmVjdChjb250ZXh0LCBzdGF0ZVNhdmVy
LCByZWdpb25Db250ZXh0U3RhdGVTYXZlciwgbG9jYWxQYWludGluZ0luZm8sIHBhaW50QmVoYXZp
b3IsIGZyYWdtZW50LmZvcmVncm91bmRSZWN0LCBJbmNsdWRlU2VsZkZvckJvcmRlclJhZGl1cyk7
IC8vIENoaWxkIGNsaXBwaW5nIG1hc2sgcGFpbnRpbmcgd2lsbCBoYW5kbGUgY2xpcHBpbmcgdG8g
c2VsZi4KIAogICAgICAgICAvLyBQYWludCB0aGUgY2xpcHBlZCBtYXNrLgogICAgICAgICBQYWlu
dEluZm8gcGFpbnRJbmZvKGNvbnRleHQsIGZyYWdtZW50LmJhY2tncm91bmRSZWN0LnJlY3QoKSwg
UGFpbnRQaGFzZTo6Q2xpcHBpbmdNYXNrLCBwYWludEJlaGF2aW9yLCBzdWJ0cmVlUGFpbnRSb290
Rm9yUmVuZGVyZXIsIG51bGxwdHIsIG51bGxwdHIsICZsb2NhbFBhaW50aW5nSW5mby5yb290TGF5
ZXItPnJlbmRlcmVyKCksIHRoaXMpOwpAQCAtMzgzNCwyNSArMzg0MCwzNSBAQCB2b2lkIFJlbmRl
ckxheWVyOjpwYWludE92ZXJmbG93Q29udHJvbHNGb3JGcmFnbWVudHMoY29uc3QgTGF5ZXJGcmFn
bWVudHMmIGxheWVyRgogICAgICAgICAgICAgY29udGludWU7CiAKICAgICAgICAgR3JhcGhpY3ND
b250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKGNvbnRleHQsIGZhbHNlKTsKLSAgICAgICAgRXZl
bnRSZWdpb25Db250ZXh0U3RhdGVTYXZlciBldmVudFJlZ2lvblN0YXRlU2F2ZXIobG9jYWxQYWlu
dGluZ0luZm8uZXZlbnRSZWdpb25Db250ZXh0KTsKKyAgICAgICAgUmVnaW9uQ29udGV4dFN0YXRl
U2F2ZXIgcmVnaW9uQ29udGV4dFN0YXRlU2F2ZXIobG9jYWxQYWludGluZ0luZm8ucmVnaW9uQ29u
dGV4dCk7CiAKLSAgICAgICAgY2xpcFRvUmVjdChjb250ZXh0LCBzdGF0ZVNhdmVyLCBldmVudFJl
Z2lvblN0YXRlU2F2ZXIsIGxvY2FsUGFpbnRpbmdJbmZvLCB7IH0sIGZyYWdtZW50LmJhY2tncm91
bmRSZWN0KTsKKyAgICAgICAgY2xpcFRvUmVjdChjb250ZXh0LCBzdGF0ZVNhdmVyLCByZWdpb25D
b250ZXh0U3RhdGVTYXZlciwgbG9jYWxQYWludGluZ0luZm8sIHsgfSwgZnJhZ21lbnQuYmFja2dy
b3VuZFJlY3QpOwogICAgICAgICBtX3Njcm9sbGFibGVBcmVhLT5wYWludE92ZXJmbG93Q29udHJv
bHMoY29udGV4dCwgcm91bmRlZEludFBvaW50KHBhaW50T2Zmc2V0Rm9yUmVuZGVyZXIoZnJhZ21l
bnQsIGxvY2FsUGFpbnRpbmdJbmZvKSksIHNuYXBwZWRJbnRSZWN0KGZyYWdtZW50LmJhY2tncm91
bmRSZWN0LnJlY3QoKSksIHRydWUpOwogICAgIH0KIH0KIAogdm9pZCBSZW5kZXJMYXllcjo6Y29s
bGVjdEV2ZW50UmVnaW9uRm9yRnJhZ21lbnRzKGNvbnN0IExheWVyRnJhZ21lbnRzJiBsYXllckZy
YWdtZW50cywgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBMYXllclBhaW50aW5nSW5m
byYgbG9jYWxQYWludGluZ0luZm8sIE9wdGlvblNldDxQYWludEJlaGF2aW9yPiBwYWludEJlaGF2
aW9yKQogewotICAgIEFTU0VSVChsb2NhbFBhaW50aW5nSW5mby5ldmVudFJlZ2lvbkNvbnRleHQp
OworICAgIEFTU0VSVChpczxFdmVudFJlZ2lvbkNvbnRleHQ+KGxvY2FsUGFpbnRpbmdJbmZvLnJl
Z2lvbkNvbnRleHQpKTsKICAgICBmb3IgKGNvbnN0IGF1dG8mIGZyYWdtZW50IDogbGF5ZXJGcmFn
bWVudHMpIHsKICAgICAgICAgUGFpbnRJbmZvIHBhaW50SW5mbyhjb250ZXh0LCBmcmFnbWVudC5m
b3JlZ3JvdW5kUmVjdC5yZWN0KCksIFBhaW50UGhhc2U6OkV2ZW50UmVnaW9uLCBwYWludEJlaGF2
aW9yKTsKLSAgICAgICAgcGFpbnRJbmZvLmV2ZW50UmVnaW9uQ29udGV4dCA9IGxvY2FsUGFpbnRp
bmdJbmZvLmV2ZW50UmVnaW9uQ29udGV4dDsKKyAgICAgICAgcGFpbnRJbmZvLnJlZ2lvbkNvbnRl
eHQgPSBsb2NhbFBhaW50aW5nSW5mby5yZWdpb25Db250ZXh0OwogICAgICAgICBpZiAobG9jYWxQ
YWludGluZ0luZm8uY2xpcFRvRGlydHlSZWN0KSAvLyBjbGlwLXBhdGg/Ci0gICAgICAgICAgICBw
YWludEluZm8uZXZlbnRSZWdpb25Db250ZXh0LT5wdXNoQ2xpcChlbmNsb3NpbmdJbnRSZWN0KGZy
YWdtZW50LmJhY2tncm91bmRSZWN0LnJlY3QoKSkpOworICAgICAgICAgICAgcGFpbnRJbmZvLnJl
Z2lvbkNvbnRleHQtPnB1c2hDbGlwKGVuY2xvc2luZ0ludFJlY3QoZnJhZ21lbnQuYmFja2dyb3Vu
ZFJlY3QucmVjdCgpKSk7CiAKICAgICAgICAgcmVuZGVyZXIoKS5wYWludChwYWludEluZm8sIHBh
aW50T2Zmc2V0Rm9yUmVuZGVyZXIoZnJhZ21lbnQsIGxvY2FsUGFpbnRpbmdJbmZvKSk7CiAgICAg
ICAgIGlmIChsb2NhbFBhaW50aW5nSW5mby5jbGlwVG9EaXJ0eVJlY3QpCi0gICAgICAgICAgICBw
YWludEluZm8uZXZlbnRSZWdpb25Db250ZXh0LT5wb3BDbGlwKCk7CisgICAgICAgICAgICBwYWlu
dEluZm8ucmVnaW9uQ29udGV4dC0+cG9wQ2xpcCgpOworICAgIH0KK30KKwordm9pZCBSZW5kZXJM
YXllcjo6Y29sbGVjdEFjY2Vzc2liaWxpdHlSZWdpb25zRm9yRnJhZ21lbnRzKGNvbnN0IExheWVy
RnJhZ21lbnRzJiBsYXllckZyYWdtZW50cywgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25z
dCBMYXllclBhaW50aW5nSW5mbyYgbG9jYWxQYWludGluZ0luZm8sIE9wdGlvblNldDxQYWludEJl
aGF2aW9yPiBwYWludEJlaGF2aW9yKQoreworICAgIEFTU0VSVChpczxBY2Nlc3NpYmlsaXR5UmVn
aW9uQ29udGV4dD4obG9jYWxQYWludGluZ0luZm8ucmVnaW9uQ29udGV4dCkpOworICAgIGZvciAo
Y29uc3QgYXV0byYgZnJhZ21lbnQgOiBsYXllckZyYWdtZW50cykgeworICAgICAgICBQYWludElu
Zm8gcGFpbnRJbmZvKGNvbnRleHQsIGZyYWdtZW50LmZvcmVncm91bmRSZWN0LnJlY3QoKSwgUGFp
bnRQaGFzZTo6QWNjZXNzaWJpbGl0eSwgcGFpbnRCZWhhdmlvcik7CisgICAgICAgIHBhaW50SW5m
by5yZWdpb25Db250ZXh0ID0gbG9jYWxQYWludGluZ0luZm8ucmVnaW9uQ29udGV4dDsKKyAgICAg
ICAgcmVuZGVyZXIoKS5wYWludChwYWludEluZm8sIHBhaW50T2Zmc2V0Rm9yUmVuZGVyZXIoZnJh
Z21lbnQsIGxvY2FsUGFpbnRpbmdJbmZvKSk7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJMYXllci5oCmluZGV4IDg5ZWZhZDEyOWVlZC4uZjZkY2Y2YmZhNzAzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuaApAQCAtNjcsMTEgKzY3LDExIEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIENTU0ZpbHRlcjsKIGNsYXNzIENsaXBSZWN0czsKIGNs
YXNzIENsaXBSZWN0c0NhY2hlOwotY2xhc3MgRXZlbnRSZWdpb25Db250ZXh0OwogY2xhc3MgSGl0
VGVzdFJlcXVlc3Q7CiBjbGFzcyBIaXRUZXN0UmVzdWx0OwogY2xhc3MgSGl0VGVzdGluZ1RyYW5z
Zm9ybVN0YXRlOwogY2xhc3MgUmVnaW9uOworY2xhc3MgUmVnaW9uQ29udGV4dDsKIGNsYXNzIFJl
bmRlckZyYWdtZW50ZWRGbG93OwogY2xhc3MgUmVuZGVyR2VvbWV0cnlNYXA7CiBjbGFzcyBSZW5k
ZXJMYXllckJhY2tpbmc7CkBAIC02MzksNyArNjM5LDcgQEAgcHVibGljOgogICAgIC8vIGZyb250
LiAgVGhlIGhpdFRlc3QgbWV0aG9kIGxvb2tzIGZvciBtb3VzZSBldmVudHMgYnkgd2Fsa2luZwog
ICAgIC8vIGxheWVycyB0aGF0IGludGVyc2VjdCB0aGUgcG9pbnQgZnJvbSBmcm9udCB0byBiYWNr
LgogICAgIHZvaWQgcGFpbnQoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgTGF5b3V0UmVjdCYgZGFt
YWdlUmVjdCwgY29uc3QgTGF5b3V0U2l6ZSYgc3VicGl4ZWxPZmZzZXQgPSBMYXlvdXRTaXplKCks
IE9wdGlvblNldDxQYWludEJlaGF2aW9yPiA9IFBhaW50QmVoYXZpb3I6Ok5vcm1hbCwKLSAgICAg
ICAgUmVuZGVyT2JqZWN0KiBzdWJ0cmVlUGFpbnRSb290ID0gbnVsbHB0ciwgT3B0aW9uU2V0PFBh
aW50TGF5ZXJGbGFnPiA9IHsgfSwgU2VjdXJpdHlPcmlnaW5QYWludFBvbGljeSA9IFNlY3VyaXR5
T3JpZ2luUGFpbnRQb2xpY3k6OkFueU9yaWdpbiwgRXZlbnRSZWdpb25Db250ZXh0KiA9IG51bGxw
dHIpOworICAgICAgICBSZW5kZXJPYmplY3QqIHN1YnRyZWVQYWludFJvb3QgPSBudWxscHRyLCBP
cHRpb25TZXQ8UGFpbnRMYXllckZsYWc+ID0geyB9LCBTZWN1cml0eU9yaWdpblBhaW50UG9saWN5
ID0gU2VjdXJpdHlPcmlnaW5QYWludFBvbGljeTo6QW55T3JpZ2luLCBSZWdpb25Db250ZXh0KiA9
IG51bGxwdHIpOwogICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgaGl0VGVzdChjb25zdCBIaXRUZXN0
UmVxdWVzdCYsIEhpdFRlc3RSZXN1bHQmKTsKICAgICBib29sIGhpdFRlc3QoY29uc3QgSGl0VGVz
dFJlcXVlc3QmLCBjb25zdCBIaXRUZXN0TG9jYXRpb24mLCBIaXRUZXN0UmVzdWx0Jik7CiAKQEAg
LTk0Niw3ICs5NDYsNyBAQCBwcml2YXRlOgogICAgICAgICBPcHRpb25TZXQ8UGFpbnRCZWhhdmlv
cj4gcGFpbnRCZWhhdmlvcjsKICAgICAgICAgYm9vbCByZXF1aXJlU2VjdXJpdHlPcmlnaW5BY2Nl
c3NGb3JXaWRnZXRzOwogICAgICAgICBib29sIGNsaXBUb0RpcnR5UmVjdCB7IHRydWUgfTsKLSAg
ICAgICAgRXZlbnRSZWdpb25Db250ZXh0KiBldmVudFJlZ2lvbkNvbnRleHQgeyBudWxscHRyIH07
CisgICAgICAgIFJlZ2lvbkNvbnRleHQqIHJlZ2lvbkNvbnRleHQgeyBudWxscHRyIH07CiAgICAg
fTsKIAogICAgIExheW91dFBvaW50IHBhaW50T2Zmc2V0Rm9yUmVuZGVyZXIoY29uc3QgTGF5ZXJG
cmFnbWVudCYgZnJhZ21lbnQsIGNvbnN0IExheWVyUGFpbnRpbmdJbmZvJiBwYWludGluZ0luZm8p
IGNvbnN0CkBAIC05NzIsNyArOTcyLDcgQEAgcHJpdmF0ZToKIAogICAgIExheW91dFJlY3QgY2xp
cFJlY3RSZWxhdGl2ZVRvQW5jZXN0b3IoUmVuZGVyTGF5ZXIqIGFuY2VzdG9yLCBMYXlvdXRTaXpl
IG9mZnNldEZyb21BbmNlc3RvciwgY29uc3QgTGF5b3V0UmVjdCYgY29uc3RyYWluaW5nUmVjdCkg
Y29uc3Q7CiAKLSAgICB2b2lkIGNsaXBUb1JlY3QoR3JhcGhpY3NDb250ZXh0JiwgR3JhcGhpY3ND
b250ZXh0U3RhdGVTYXZlciYsIEV2ZW50UmVnaW9uQ29udGV4dFN0YXRlU2F2ZXImLCBjb25zdCBM
YXllclBhaW50aW5nSW5mbyYsIE9wdGlvblNldDxQYWludEJlaGF2aW9yPiwgY29uc3QgQ2xpcFJl
Y3QmLCBCb3JkZXJSYWRpdXNDbGlwcGluZ1J1bGUgPSBJbmNsdWRlU2VsZkZvckJvcmRlclJhZGl1
cyk7CisgICAgdm9pZCBjbGlwVG9SZWN0KEdyYXBoaWNzQ29udGV4dCYsIEdyYXBoaWNzQ29udGV4
dFN0YXRlU2F2ZXImLCBSZWdpb25Db250ZXh0U3RhdGVTYXZlciYsIGNvbnN0IExheWVyUGFpbnRp
bmdJbmZvJiwgT3B0aW9uU2V0PFBhaW50QmVoYXZpb3I+LCBjb25zdCBDbGlwUmVjdCYsIEJvcmRl
clJhZGl1c0NsaXBwaW5nUnVsZSA9IEluY2x1ZGVTZWxmRm9yQm9yZGVyUmFkaXVzKTsKIAogICAg
IGJvb2wgc2hvdWxkUmVwYWludEFmdGVyTGF5b3V0KCkgY29uc3Q7CiAKQEAgLTEwODksNyArMTA4
OSw3IEBAIHByaXZhdGU6CiAKICAgICBzdGQ6OnBhaXI8UGF0aCwgV2luZFJ1bGU+IGNvbXB1dGVD
bGlwUGF0aChjb25zdCBMYXlvdXRTaXplJiBvZmZzZXRGcm9tUm9vdCwgY29uc3QgTGF5b3V0UmVj
dCYgcm9vdFJlbGF0aXZlQm91bmRzRm9yTm9uQm94ZXMpIGNvbnN0OwogCi0gICAgdm9pZCBzZXR1
cENsaXBQYXRoKEdyYXBoaWNzQ29udGV4dCYsIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXImLCBF
dmVudFJlZ2lvbkNvbnRleHRTdGF0ZVNhdmVyJiwgY29uc3QgTGF5ZXJQYWludGluZ0luZm8mLCBP
cHRpb25TZXQ8UGFpbnRMYXllckZsYWc+LCBjb25zdCBMYXlvdXRTaXplJiBvZmZzZXRGcm9tUm9v
dCk7CisgICAgdm9pZCBzZXR1cENsaXBQYXRoKEdyYXBoaWNzQ29udGV4dCYsIEdyYXBoaWNzQ29u
dGV4dFN0YXRlU2F2ZXImLCBSZWdpb25Db250ZXh0U3RhdGVTYXZlciYsIGNvbnN0IExheWVyUGFp
bnRpbmdJbmZvJiwgT3B0aW9uU2V0PFBhaW50TGF5ZXJGbGFnPiwgY29uc3QgTGF5b3V0U2l6ZSYg
b2Zmc2V0RnJvbVJvb3QpOwogCiAgICAgdm9pZCBlbnN1cmVMYXllckZpbHRlcnMoKTsKICAgICB2
b2lkIGNsZWFyTGF5ZXJGaWx0ZXJzKCk7CkBAIC0xMTIxLDYgKzExMjEsNyBAQCBwcml2YXRlOgog
ICAgIHZvaWQgcGFpbnRDaGlsZENsaXBwaW5nTWFza0ZvckZyYWdtZW50cyhjb25zdCBMYXllckZy
YWdtZW50cyYsIEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IExheWVyUGFpbnRpbmdJbmZvJiwgT3B0
aW9uU2V0PFBhaW50QmVoYXZpb3I+LCBSZW5kZXJPYmplY3QqIHBhaW50aW5nUm9vdEZvclJlbmRl
cmVyKTsKICAgICB2b2lkIHBhaW50VHJhbnNmb3JtZWRMYXllckludG9GcmFnbWVudHMoR3JhcGhp
Y3NDb250ZXh0JiwgY29uc3QgTGF5ZXJQYWludGluZ0luZm8mLCBPcHRpb25TZXQ8UGFpbnRMYXll
ckZsYWc+KTsKICAgICB2b2lkIGNvbGxlY3RFdmVudFJlZ2lvbkZvckZyYWdtZW50cyhjb25zdCBM
YXllckZyYWdtZW50cyYsIEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IExheWVyUGFpbnRpbmdJbmZv
JiwgT3B0aW9uU2V0PFBhaW50QmVoYXZpb3I+KTsKKyAgICB2b2lkIGNvbGxlY3RBY2Nlc3NpYmls
aXR5UmVnaW9uc0ZvckZyYWdtZW50cyhjb25zdCBMYXllckZyYWdtZW50cyYsIEdyYXBoaWNzQ29u
dGV4dCYsIGNvbnN0IExheWVyUGFpbnRpbmdJbmZvJiwgT3B0aW9uU2V0PFBhaW50QmVoYXZpb3I+
KTsKIAogICAgIFJlbmRlckxheWVyKiB0cmFuc3BhcmVudFBhaW50aW5nQW5jZXN0b3IoKTsKICAg
ICB2b2lkIGJlZ2luVHJhbnNwYXJlbmN5TGF5ZXJzKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IExh
eWVyUGFpbnRpbmdJbmZvJiwgY29uc3QgTGF5b3V0UmVjdCYgZGlydHlSZWN0KTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHAKaW5kZXggZDE4MmYw
MDhiZmRkLi5hMzRmOWJkNTBmYjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJMYXllckJhY2tpbmcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJMYXllckJhY2tpbmcuY3BwCkBAIC0zMzkyLDcgKzMzOTIsNyBAQCB2b2lkIFJlbmRlckxh
eWVyQmFja2luZzo6c2V0Q29udGVudHNOZWVkRGlzcGxheUluUmVjdChjb25zdCBMYXlvdXRSZWN0
JiByLCBHcmFwaAogCiB2b2lkIFJlbmRlckxheWVyQmFja2luZzo6cGFpbnRJbnRvTGF5ZXIoY29u
c3QgR3JhcGhpY3NMYXllciogZ3JhcGhpY3NMYXllciwgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0
LAogICAgIGNvbnN0IEludFJlY3QmIHBhaW50RGlydHlSZWN0LCAvLyBJbiB0aGUgY29vcmRzIG9m
IHJvb3RMYXllci4KLSAgICBPcHRpb25TZXQ8UGFpbnRCZWhhdmlvcj4gcGFpbnRCZWhhdmlvciwg
RXZlbnRSZWdpb25Db250ZXh0KiBldmVudFJlZ2lvbkNvbnRleHQpCisgICAgT3B0aW9uU2V0PFBh
aW50QmVoYXZpb3I+IHBhaW50QmVoYXZpb3IsIFJlZ2lvbkNvbnRleHQqIHJlZ2lvbkNvbnRleHQp
CiB7CiAjaWYgVVNFKE9XTklOR19MQVlFUl9CRUFSX1RSQVApCiAgICAgUkVMRUFTRV9BU1NFUlRf
V0lUSF9NRVNTQUdFKG1fb3duaW5nTGF5ZXJCZWFyVHJhcCA9PSBCRUFSX1RSQVBfVkFMVUUsICJS
ZW5kZXJMYXllckJhY2tpbmc6OnBhaW50SW50b0xheWVyKCk6IG1fb3duaW5nTGF5ZXJCZWFyVHJh
cCBjYXVnaHQgdGhlIGJlYXIgKDU1Njk5MjkyKSIpOwpAQCAtMzQxMSwzMyArMzQxMSwzMyBAQCB2
b2lkIFJlbmRlckxheWVyQmFja2luZzo6cGFpbnRJbnRvTGF5ZXIoY29uc3QgR3JhcGhpY3NMYXll
ciogZ3JhcGhpY3NMYXllciwgR3JhcAogCiAgICAgYXV0byBwYWludEZsYWdzID0gcGFpbnRGbGFn
c0ZvckxheWVyKCpncmFwaGljc0xheWVyKTsKIAotICAgIGlmIChldmVudFJlZ2lvbkNvbnRleHQp
CisgICAgaWYgKGlzPEV2ZW50UmVnaW9uQ29udGV4dD4ocmVnaW9uQ29udGV4dCkpCiAgICAgICAg
IHBhaW50RmxhZ3MuYWRkKFJlbmRlckxheWVyOjpQYWludExheWVyRmxhZzo6Q29sbGVjdGluZ0V2
ZW50UmVnaW9uKTsKIAogICAgIFJlbmRlck9iamVjdDo6U2V0TGF5b3V0TmVlZGVkRm9yYmlkZGVu
U2NvcGUgZm9yYmlkU2V0TmVlZHNMYXlvdXQocmVuZGVyZXIoKSk7CiAKICAgICBhdXRvIHBhaW50
T25lTGF5ZXIgPSBbJl0oUmVuZGVyTGF5ZXImIGxheWVyLCBPcHRpb25TZXQ8UmVuZGVyTGF5ZXI6
OlBhaW50TGF5ZXJGbGFnPiBwYWludEZsYWdzKSB7CiAgICAgICAgIExvY2FsRnJhbWVWaWV3OjpQ
YWludGluZ1N0YXRlIHBhaW50aW5nU3RhdGU7Ci0gICAgICAgIGlmICghZXZlbnRSZWdpb25Db250
ZXh0KSB7CisgICAgICAgIGlmICghcmVnaW9uQ29udGV4dCkgewogICAgICAgICAgICAgSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsUGFpbnQobGF5ZXIucmVuZGVyZXIoKSk7CiAKICAgICAg
ICAgICAgIGlmIChsYXllci5pc1JlbmRlclZpZXdMYXllcigpKQotICAgICAgICAgICAgICAgIHJl
bmRlcmVyKCkudmlldygpLmZyYW1lVmlldygpLndpbGxQYWludENvbnRlbnRzKGNvbnRleHQsIHBh
aW50RGlydHlSZWN0LCBwYWludGluZ1N0YXRlKTsKKyAgICAgICAgICAgICAgICByZW5kZXJlcigp
LnZpZXcoKS5mcmFtZVZpZXcoKS53aWxsUGFpbnRDb250ZW50cyhjb250ZXh0LCBwYWludERpcnR5
UmVjdCwgcGFpbnRpbmdTdGF0ZSwgcmVnaW9uQ29udGV4dCk7CiAgICAgICAgIH0KIAogICAgICAg
ICBSZW5kZXJMYXllcjo6TGF5ZXJQYWludGluZ0luZm8gcGFpbnRpbmdJbmZvKCZtX293bmluZ0xh
eWVyLCBwYWludERpcnR5UmVjdCwgcGFpbnRCZWhhdmlvciwgLW1fc3VicGl4ZWxPZmZzZXRGcm9t
UmVuZGVyZXIpOwotICAgICAgICBwYWludGluZ0luZm8uZXZlbnRSZWdpb25Db250ZXh0ID0gZXZl
bnRSZWdpb25Db250ZXh0OworICAgICAgICBwYWludGluZ0luZm8ucmVnaW9uQ29udGV4dCA9IHJl
Z2lvbkNvbnRleHQ7CiAKICAgICAgICAgaWYgKCZsYXllciA9PSAmbV9vd25pbmdMYXllcikgewog
ICAgICAgICAgICAgbGF5ZXIucGFpbnRMYXllckNvbnRlbnRzKGNvbnRleHQsIHBhaW50aW5nSW5m
bywgcGFpbnRGbGFncyk7CiAKICAgICAgICAgICAgIGF1dG8qIHNjcm9sbGFibGVBcmVhID0gbGF5
ZXIuc2Nyb2xsYWJsZUFyZWEoKTsKLSAgICAgICAgICAgIGlmIChzY3JvbGxhYmxlQXJlYSAmJiBz
Y3JvbGxhYmxlQXJlYS0+Y29udGFpbnNEaXJ0eU92ZXJsYXlTY3JvbGxiYXJzKCkgJiYgIWV2ZW50
UmVnaW9uQ29udGV4dCkKKyAgICAgICAgICAgIGlmIChzY3JvbGxhYmxlQXJlYSAmJiBzY3JvbGxh
YmxlQXJlYS0+Y29udGFpbnNEaXJ0eU92ZXJsYXlTY3JvbGxiYXJzKCkgJiYgIXJlZ2lvbkNvbnRl
eHQpCiAgICAgICAgICAgICAgICAgbGF5ZXIucGFpbnRMYXllckNvbnRlbnRzKGNvbnRleHQsIHBh
aW50aW5nSW5mbywgcGFpbnRGbGFncyB8IFJlbmRlckxheWVyOjpQYWludExheWVyRmxhZzo6UGFp
bnRpbmdPdmVybGF5U2Nyb2xsYmFycyk7CiAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgbGF5
ZXIucGFpbnRMYXllcldpdGhFZmZlY3RzKGNvbnRleHQsIHBhaW50aW5nSW5mbywgcGFpbnRGbGFn
cyk7CiAKLSAgICAgICAgaWYgKCFldmVudFJlZ2lvbkNvbnRleHQpIHsKKyAgICAgICAgaWYgKCFy
ZWdpb25Db250ZXh0KSB7CiAgICAgICAgICAgICBpZiAobGF5ZXIuaXNSZW5kZXJWaWV3TGF5ZXIo
KSkKICAgICAgICAgICAgICAgICByZW5kZXJlcigpLnZpZXcoKS5mcmFtZVZpZXcoKS5kaWRQYWlu
dENvbnRlbnRzKGNvbnRleHQsIHBhaW50RGlydHlSZWN0LCBwYWludGluZ1N0YXRlKTsKIApAQCAt
MzQ1OSwxNCArMzQ1OSwxNCBAQCB2b2lkIFJlbmRlckxheWVyQmFja2luZzo6cGFpbnRJbnRvTGF5
ZXIoY29uc3QgR3JhcGhpY3NMYXllciogZ3JhcGhpY3NMYXllciwgR3JhcAogCiAgICAgICAgIGlm
IChncmFwaGljc0xheWVyLT5wYWludGluZ1BoYXNlKCkuY29udGFpbnMoR3JhcGhpY3NMYXllclBh
aW50aW5nUGhhc2U6Ok92ZXJmbG93Q29udGVudHMpKQogICAgICAgICAgICAgc2hhcmluZ0xheWVy
UGFpbnRGbGFncy5hZGQoUmVuZGVyTGF5ZXI6OlBhaW50TGF5ZXJGbGFnOjpQYWludGluZ092ZXJm
bG93Q29udGVudHMpOwotICAgICAgICBpZiAoZXZlbnRSZWdpb25Db250ZXh0KQorICAgICAgICBp
ZiAoaXM8RXZlbnRSZWdpb25Db250ZXh0PihyZWdpb25Db250ZXh0KSkKICAgICAgICAgICAgIHNo
YXJpbmdMYXllclBhaW50RmxhZ3MuYWRkKFJlbmRlckxheWVyOjpQYWludExheWVyRmxhZzo6Q29s
bGVjdGluZ0V2ZW50UmVnaW9uKTsKIAogICAgICAgICBmb3IgKGF1dG8mIGxheWVyV2Vha1B0ciA6
IG1fYmFja2luZ1NoYXJpbmdMYXllcnMpCiAgICAgICAgICAgICBwYWludE9uZUxheWVyKCpsYXll
cldlYWtQdHIsIHNoYXJpbmdMYXllclBhaW50RmxhZ3MpOwogICAgIH0KIAotICAgIGlmICghZXZl
bnRSZWdpb25Db250ZXh0KQorICAgIGlmICghcmVnaW9uQ29udGV4dCkKICAgICAgICAgY29tcG9z
aXRvcigpLmRpZFBhaW50QmFja2luZyh0aGlzKTsKIAogI2lmIFVTRShPV05JTkdfTEFZRVJfQkVB
Ul9UUkFQKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVy
QmFja2luZy5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5o
CmluZGV4IGMwNGI5M2Q2YjU4Zi4uMmNmMjZmZjBiODUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5oCkBAIC0zNSw5ICszNSw5IEBACiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgRXZlbnRSZWdpb25Db250ZXh0OwogY2xhc3MgS2V5ZnJh
bWVMaXN0OwogY2xhc3MgUGFpbnRlZENvbnRlbnRzSW5mbzsKK2NsYXNzIFJlZ2lvbkNvbnRleHQ7
CiBjbGFzcyBSZW5kZXJMYXllckNvbXBvc2l0b3I7CiBjbGFzcyBUaWxlZEJhY2tpbmc7CiBjbGFz
cyBUcmFuc2Zvcm1hdGlvbk1hdHJpeDsKQEAgLTM5Niw3ICszOTYsNyBAQCBwcml2YXRlOgogICAg
IGJvb2wgaGFzVGlsZWRCYWNraW5nRmxhdHRlbmluZ0xheWVyKCkgY29uc3QgeyByZXR1cm4gKG1f
Y2hpbGRDb250YWlubWVudExheWVyICYmIG1faXNGcmFtZUxheWVyV2l0aFRpbGVkQmFja2luZyk7
IH0KICAgICBHcmFwaGljc0xheWVyKiB0aWxlQ2FjaGVGbGF0dGVuaW5nTGF5ZXIoKSBjb25zdCB7
IHJldHVybiBtX2lzRnJhbWVMYXllcldpdGhUaWxlZEJhY2tpbmcgPyBtX2NoaWxkQ29udGFpbm1l
bnRMYXllci5nZXQoKSA6IG51bGxwdHI7IH0KIAotICAgIHZvaWQgcGFpbnRJbnRvTGF5ZXIoY29u
c3QgR3JhcGhpY3NMYXllciosIEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEludFJlY3QmIHBhaW50
RGlydHlSZWN0LCBPcHRpb25TZXQ8UGFpbnRCZWhhdmlvcj4sIEV2ZW50UmVnaW9uQ29udGV4dCog
PSBudWxscHRyKTsKKyAgICB2b2lkIHBhaW50SW50b0xheWVyKGNvbnN0IEdyYXBoaWNzTGF5ZXIq
LCBHcmFwaGljc0NvbnRleHQmLCBjb25zdCBJbnRSZWN0JiBwYWludERpcnR5UmVjdCwgT3B0aW9u
U2V0PFBhaW50QmVoYXZpb3I+LCBSZWdpb25Db250ZXh0KiA9IG51bGxwdHIpOwogICAgIE9wdGlv
blNldDxSZW5kZXJMYXllcjo6UGFpbnRMYXllckZsYWc+IHBhaW50RmxhZ3NGb3JMYXllcihjb25z
dCBHcmFwaGljc0xheWVyJikgY29uc3Q7CiAgICAgCiAgICAgdm9pZCBwYWludERlYnVnT3Zlcmxh
eXMoY29uc3QgR3JhcGhpY3NMYXllciosIEdyYXBoaWNzQ29udGV4dCYpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RNYXJrZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RNYXJrZXIuY3BwCmluZGV4IDI0NmVjZTI3M2EzZS4u
ZTc5ZWQ3MmMzMWQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
TGlzdE1hcmtlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RN
YXJrZXIuY3BwCkBAIC0xNTg0LDcgKzE1ODQsNyBAQCBhdXRvIFJlbmRlckxpc3RNYXJrZXI6OnRl
eHRSdW4oKSBjb25zdCAtPiBUZXh0UnVuV2l0aFVuZGVybHlpbmdTdHJpbmcKIAogdm9pZCBSZW5k
ZXJMaXN0TWFya2VyOjpwYWludChQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9p
bnQmIHBhaW50T2Zmc2V0KQogewotICAgIGlmIChwYWludEluZm8ucGhhc2UgIT0gUGFpbnRQaGFz
ZTo6Rm9yZWdyb3VuZCkKKyAgICBpZiAocGFpbnRJbmZvLnBoYXNlICE9IFBhaW50UGhhc2U6OkZv
cmVncm91bmQgJiYgcGFpbnRJbmZvLnBoYXNlICE9IFBhaW50UGhhc2U6OkFjY2Vzc2liaWxpdHkp
CiAgICAgICAgIHJldHVybjsKICAgICAKICAgICBpZiAoc3R5bGUoKS52aXNpYmlsaXR5KCkgIT0g
VmlzaWJpbGl0eTo6VmlzaWJsZSkKQEAgLTE2MDAsNiArMTYwMCwxMiBAQCB2b2lkIFJlbmRlckxp
c3RNYXJrZXI6OnBhaW50KFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2ludCYg
cGFpbnRPZmZzZQogICAgIAogICAgIGF1dG8gbWFya2VyUmVjdCA9IHJlbGF0aXZlTWFya2VyUmVj
dCgpOwogICAgIG1hcmtlclJlY3QubW92ZUJ5KGJveE9yaWdpbik7CisKKyAgICBpZiAocGFpbnRJ
bmZvLnBoYXNlID09IFBhaW50UGhhc2U6OkFjY2Vzc2liaWxpdHkpIHsKKyAgICAgICAgcGFpbnRJ
bmZvLmFjY2Vzc2liaWxpdHlSZWdpb25Db250ZXh0KCktPnRha2VCb3VuZHMoKnRoaXMsIG1hcmtl
clJlY3QpOworICAgICAgICByZXR1cm47CisgICAgfQorCiAgICAgaWYgKG1hcmtlclJlY3QuaXNF
bXB0eSgpKQogICAgICAgICByZXR1cm47CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJSZXBsYWNlZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyUmVwbGFjZWQuY3BwCmluZGV4IDEzNDE2MWExNmE2NS4uYTJmYTNkMDlmZGQ0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUmVwbGFjZWQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSZXBsYWNlZC5jcHAKQEAgLTIxNywxMSArMjE3
LDE2IEBAIHZvaWQgUmVuZGVyUmVwbGFjZWQ6OnBhaW50KFBhaW50SW5mbyYgcGFpbnRJbmZvLCBj
b25zdCBMYXlvdXRQb2ludCYgcGFpbnRPZmZzZXQpCiAgICAgICAgIGlmICh2aXNpYmxlVG9IaXRU
ZXN0aW5nKCkpIHsKICAgICAgICAgICAgIGF1dG8gYm9yZGVyUmVjdCA9IExheW91dFJlY3QoYWRq
dXN0ZWRQYWludE9mZnNldCwgc2l6ZSgpKTsKICAgICAgICAgICAgIGF1dG8gYm9yZGVyUmVnaW9u
ID0gYXBwcm94aW1hdGVBc1JlZ2lvbihzdHlsZSgpLmdldFJvdW5kZWRCb3JkZXJGb3IoYm9yZGVy
UmVjdCkpOwotICAgICAgICAgICAgcGFpbnRJbmZvLmV2ZW50UmVnaW9uQ29udGV4dC0+dW5pdGUo
Ym9yZGVyUmVnaW9uLCAqdGhpcywgc3R5bGUoKSk7CisgICAgICAgICAgICBwYWludEluZm8uZXZl
bnRSZWdpb25Db250ZXh0KCktPnVuaXRlKGJvcmRlclJlZ2lvbiwgKnRoaXMsIHN0eWxlKCkpOwog
ICAgICAgICB9CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKKyAgICBpZiAocGFpbnRJbmZvLnBo
YXNlID09IFBhaW50UGhhc2U6OkFjY2Vzc2liaWxpdHkpIHsKKyAgICAgICAgcGFpbnRJbmZvLmFj
Y2Vzc2liaWxpdHlSZWdpb25Db250ZXh0KCktPnRha2VCb3VuZHMoKnRoaXMsIEZsb2F0UmVjdChh
ZGp1c3RlZFBhaW50T2Zmc2V0LCBzaXplKCkpKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwog
ICAgIFNldExheW91dE5lZWRlZEZvcmJpZGRlblNjb3BlIHNjb3BlKCp0aGlzKTsKIAogICAgIEdy
YXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc2F2ZWRHcmFwaGljc0NvbnRleHQocGFpbnRJbmZvLmNv
bnRleHQoKSwgZmFsc2UpOwpAQCAtMzExLDcgKzMxNiw4IEBAIGJvb2wgUmVuZGVyUmVwbGFjZWQ6
OnNob3VsZFBhaW50KFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2ludCYgcGFp
bnRPCiAgICAgICAgICYmIHBhaW50SW5mby5waGFzZSAhPSBQYWludFBoYXNlOjpTZWxmT3V0bGlu
ZQogICAgICAgICAmJiBwYWludEluZm8ucGhhc2UgIT0gUGFpbnRQaGFzZTo6U2VsZWN0aW9uCiAg
ICAgICAgICYmIHBhaW50SW5mby5waGFzZSAhPSBQYWludFBoYXNlOjpNYXNrCi0gICAgICAgICYm
IHBhaW50SW5mby5waGFzZSAhPSBQYWludFBoYXNlOjpFdmVudFJlZ2lvbikKKyAgICAgICAgJiYg
cGFpbnRJbmZvLnBoYXNlICE9IFBhaW50UGhhc2U6OkV2ZW50UmVnaW9uCisgICAgICAgICYmIHBh
aW50SW5mby5waGFzZSAhPSBQYWludFBoYXNlOjpBY2Nlc3NpYmlsaXR5KQogICAgICAgICByZXR1
cm4gZmFsc2U7CiAKICAgICBpZiAoIXBhaW50SW5mby5zaG91bGRQYWludFdpdGhpblJvb3QoKnRo
aXMpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNjcm9sbGJh
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU2Nyb2xsYmFyLmNwcAppbmRl
eCAwMjBjOGVjMjk1NjIuLjRmZTUxODkzMzQ4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlclNjcm9sbGJhci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlclNjcm9sbGJhci5jcHAKQEAgLTEwMCw3ICsxMDAsNyBAQCB2b2lkIFJlbmRlclNj
cm9sbGJhcjo6c3R5bGVDaGFuZ2VkKCkKICAgICB1cGRhdGVTY3JvbGxiYXJQYXJ0cygpOwogfQog
Ci12b2lkIFJlbmRlclNjcm9sbGJhcjo6cGFpbnQoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBj
b25zdCBJbnRSZWN0JiBkYW1hZ2VSZWN0LCBXaWRnZXQ6OlNlY3VyaXR5T3JpZ2luUGFpbnRQb2xp
Y3ksIEV2ZW50UmVnaW9uQ29udGV4dCopCit2b2lkIFJlbmRlclNjcm9sbGJhcjo6cGFpbnQoR3Jh
cGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBJbnRSZWN0JiBkYW1hZ2VSZWN0LCBXaWRnZXQ6
OlNlY3VyaXR5T3JpZ2luUGFpbnRQb2xpY3ksIFJlZ2lvbkNvbnRleHQqKQogewogICAgIGlmIChj
b250ZXh0LmludmFsaWRhdGluZ0NvbnRyb2xUaW50cygpKSB7CiAgICAgICAgIHVwZGF0ZVNjcm9s
bGJhclBhcnRzKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
U2Nyb2xsYmFyLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU2Nyb2xsYmFyLmgK
aW5kZXggZDQ2NTVjZjE3NWQzLi5iZTU4YmZkZTEyNWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJTY3JvbGxiYXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyU2Nyb2xsYmFyLmgKQEAgLTY4LDcgKzY4LDcgQEAgcHJpdmF0ZToKICAgICB2
b2lkIHNldFBhcmVudChTY3JvbGxWaWV3Kikgb3ZlcnJpZGU7CiAgICAgdm9pZCBzZXRFbmFibGVk
KGJvb2wpIG92ZXJyaWRlOwogCi0gICAgdm9pZCBwYWludChHcmFwaGljc0NvbnRleHQmLCBjb25z
dCBJbnRSZWN0JiBkYW1hZ2VSZWN0LCBXaWRnZXQ6OlNlY3VyaXR5T3JpZ2luUGFpbnRQb2xpY3ks
IEV2ZW50UmVnaW9uQ29udGV4dCopIG92ZXJyaWRlOworICAgIHZvaWQgcGFpbnQoR3JhcGhpY3ND
b250ZXh0JiwgY29uc3QgSW50UmVjdCYgZGFtYWdlUmVjdCwgV2lkZ2V0OjpTZWN1cml0eU9yaWdp
blBhaW50UG9saWN5LCBSZWdpb25Db250ZXh0Kikgb3ZlcnJpZGU7CiAKICAgICB2b2lkIHNldEhv
dmVyZWRQYXJ0KFNjcm9sbGJhclBhcnQpIG92ZXJyaWRlOwogICAgIHZvaWQgc2V0UHJlc3NlZFBh
cnQoU2Nyb2xsYmFyUGFydCkgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyV2lkZ2V0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJXaWRnZXQuY3BwCmluZGV4IDBkNGUwNzAxNjgyMy4uZDY4ZmY3MTcwODcyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyV2lkZ2V0LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyV2lkZ2V0LmNwcApAQCAtMjYzLDE3ICsyNjMsMTcgQEAg
dm9pZCBSZW5kZXJXaWRnZXQ6OnBhaW50Q29udGVudHMoUGFpbnRJbmZvJiBwYWludEluZm8sIGNv
bnN0IExheW91dFBvaW50JiBwYWludE8KICAgICAgICAgcGFpbnRSZWN0Lm1vdmUoLXdpZGdldFBh
aW50T2Zmc2V0KTsKICAgICB9CiAKLSAgICBpZiAocGFpbnRJbmZvLmV2ZW50UmVnaW9uQ29udGV4
dCkgeworICAgIGlmIChwYWludEluZm8ucmVnaW9uQ29udGV4dCkgewogICAgICAgICBBZmZpbmVU
cmFuc2Zvcm0gdHJhbnNmb3JtOwogICAgICAgICB0cmFuc2Zvcm0udHJhbnNsYXRlKGNvbnRlbnRQ
YWludE9mZnNldCk7Ci0gICAgICAgIHBhaW50SW5mby5ldmVudFJlZ2lvbkNvbnRleHQtPnB1c2hU
cmFuc2Zvcm0odHJhbnNmb3JtKTsKKyAgICAgICAgcGFpbnRJbmZvLnJlZ2lvbkNvbnRleHQtPnB1
c2hUcmFuc2Zvcm0odHJhbnNmb3JtKTsKICAgICB9CiAKICAgICAvLyBGSVhNRTogUmVtb3ZlIHJl
cGFpbnRyZWN0IGVuY2xvc2luZy9pbnRlZ3JhbCBzbmFwcGluZyB3aGVuIFJlbmRlcldpZGdldCBi
ZWNvbWVzIGRldmljZSBwaXhlbCBzbmFwcGVkLgotICAgIG1fd2lkZ2V0LT5wYWludChwYWludElu
Zm8uY29udGV4dCgpLCBzbmFwcGVkSW50UmVjdChwYWludFJlY3QpLCBwYWludEluZm8ucmVxdWly
ZVNlY3VyaXR5T3JpZ2luQWNjZXNzRm9yV2lkZ2V0cyA/IFdpZGdldDo6U2VjdXJpdHlPcmlnaW5Q
YWludFBvbGljeTo6QWNjZXNzaWJsZU9yaWdpbk9ubHkgOiBXaWRnZXQ6OlNlY3VyaXR5T3JpZ2lu
UGFpbnRQb2xpY3k6OkFueU9yaWdpbiwgcGFpbnRJbmZvLmV2ZW50UmVnaW9uQ29udGV4dCk7Cisg
ICAgbV93aWRnZXQtPnBhaW50KHBhaW50SW5mby5jb250ZXh0KCksIHNuYXBwZWRJbnRSZWN0KHBh
aW50UmVjdCksIHBhaW50SW5mby5yZXF1aXJlU2VjdXJpdHlPcmlnaW5BY2Nlc3NGb3JXaWRnZXRz
ID8gV2lkZ2V0OjpTZWN1cml0eU9yaWdpblBhaW50UG9saWN5OjpBY2Nlc3NpYmxlT3JpZ2luT25s
eSA6IFdpZGdldDo6U2VjdXJpdHlPcmlnaW5QYWludFBvbGljeTo6QW55T3JpZ2luLCBwYWludElu
Zm8ucmVnaW9uQ29udGV4dCk7CiAKLSAgICBpZiAocGFpbnRJbmZvLmV2ZW50UmVnaW9uQ29udGV4
dCkKLSAgICAgICAgcGFpbnRJbmZvLmV2ZW50UmVnaW9uQ29udGV4dC0+cG9wVHJhbnNmb3JtKCk7
CisgICAgaWYgKHBhaW50SW5mby5yZWdpb25Db250ZXh0KQorICAgICAgICBwYWludEluZm8ucmVn
aW9uQ29udGV4dC0+cG9wVHJhbnNmb3JtKCk7CiAKICAgICBpZiAoIXdpZGdldFBhaW50T2Zmc2V0
LmlzWmVybygpKQogICAgICAgICBwYWludEluZm8uY29udGV4dCgpLnRyYW5zbGF0ZSgtd2lkZ2V0
UGFpbnRPZmZzZXQpOwpAQCAtMzM3LDcgKzMzNyw3IEBAIHZvaWQgUmVuZGVyV2lkZ2V0OjpwYWlu
dChQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50T2Zmc2V0KQog
ICAgIGlmIChzdHlsZSgpLmhhc0JvcmRlclJhZGl1cygpKQogICAgICAgICBwYWludEluZm8uY29u
dGV4dCgpLnJlc3RvcmUoKTsKIAotICAgIGlmIChwYWludEluZm8ucGhhc2UgPT0gUGFpbnRQaGFz
ZTo6RXZlbnRSZWdpb24pCisgICAgaWYgKHBhaW50SW5mby5waGFzZSA9PSBQYWludFBoYXNlOjpF
dmVudFJlZ2lvbiB8fCBwYWludEluZm8ucGhhc2UgPT0gUGFpbnRQaGFzZTo6QWNjZXNzaWJpbGl0
eSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgLy8gUGFpbnQgYSBwYXJ0aWFsbHkgdHJhbnNwYXJl
bnQgd2FzaCBvdmVyIHNlbGVjdGVkIHdpZGdldHMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvVGV4dEJveFBhaW50ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1RleHRCb3hQYWludGVyLmNwcAppbmRleCAwODliOGU1ZGFkMmEuLjk0ZWQ5ZDdiMzc2YSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1RleHRCb3hQYWludGVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvVGV4dEJveFBhaW50ZXIuY3BwCkBAIC04MSw3ICs4
MSw3IEBAIFRleHRCb3hQYWludGVyPFRleHRCb3hQYXRoPjo6VGV4dEJveFBhaW50ZXIoVGV4dEJv
eFBhdGgmJiB0ZXh0Qm94LCBQYWludEluZm8mIHBhCiAgICAgLCBtX3VzZUN1c3RvbVVuZGVybGlu
ZXMobV9jb250YWluc0NvbXBvc2l0aW9uICYmIG1fcmVuZGVyZXIuZnJhbWUoKS5lZGl0b3IoKS5j
b21wb3NpdGlvblVzZXNDdXN0b21VbmRlcmxpbmVzKCkpCiAgICAgLCBtX2VtcGhhc2lzTWFya0V4
aXN0c0FuZElzQWJvdmUoUmVuZGVyVGV4dDo6ZW1waGFzaXNNYXJrRXhpc3RzQW5kSXNBYm92ZSht
X3JlbmRlcmVyLCBtX3N0eWxlKSkKIHsKLSAgICBBU1NFUlQocGFpbnRJbmZvLnBoYXNlID09IFBh
aW50UGhhc2U6OkZvcmVncm91bmQgfHwgcGFpbnRJbmZvLnBoYXNlID09IFBhaW50UGhhc2U6OlNl
bGVjdGlvbiB8fCBwYWludEluZm8ucGhhc2UgPT0gUGFpbnRQaGFzZTo6VGV4dENsaXAgfHwgcGFp
bnRJbmZvLnBoYXNlID09IFBhaW50UGhhc2U6OkV2ZW50UmVnaW9uKTsKKyAgICBBU1NFUlQocGFp
bnRJbmZvLnBoYXNlID09IFBhaW50UGhhc2U6OkZvcmVncm91bmQgfHwgcGFpbnRJbmZvLnBoYXNl
ID09IFBhaW50UGhhc2U6OlNlbGVjdGlvbiB8fCBwYWludEluZm8ucGhhc2UgPT0gUGFpbnRQaGFz
ZTo6VGV4dENsaXAgfHwgcGFpbnRJbmZvLnBoYXNlID09IFBhaW50UGhhc2U6OkV2ZW50UmVnaW9u
IHx8IHBhaW50SW5mby5waGFzZSA9PSBQYWludFBoYXNlOjpBY2Nlc3NpYmlsaXR5KTsKIH0KIAog
dGVtcGxhdGU8dHlwZW5hbWUgVGV4dEJveFBhdGg+CkBAIC0xMDUsNyArMTA1LDcgQEAgdm9pZCBU
ZXh0Qm94UGFpbnRlcjxUZXh0Qm94UGF0aD46OnBhaW50KCkKICAgICBpZiAobV9wYWludEluZm8u
cGhhc2UgPT0gUGFpbnRQaGFzZTo6RXZlbnRSZWdpb24pIHsKICAgICAgICAgY29uc3RleHByIE9w
dGlvblNldDxIaXRUZXN0UmVxdWVzdDo6VHlwZT4gaGl0VHlwZSB7IEhpdFRlc3RSZXF1ZXN0OjpU
eXBlOjpJZ25vcmVDU1NQb2ludGVyRXZlbnRzUHJvcGVydHkgfTsKICAgICAgICAgaWYgKG1fcmVu
ZGVyZXIucGFyZW50KCktPnZpc2libGVUb0hpdFRlc3RpbmcoaGl0VHlwZSkpCi0gICAgICAgICAg
ICBtX3BhaW50SW5mby5ldmVudFJlZ2lvbkNvbnRleHQtPnVuaXRlKGVuY2xvc2luZ0ludFJlY3Qo
bV9wYWludFJlY3QpLCBjb25zdF9jYXN0PFJlbmRlclRleHQmPihtX3JlbmRlcmVyKSwgbV9zdHls
ZSk7CisgICAgICAgICAgICBtX3BhaW50SW5mby5ldmVudFJlZ2lvbkNvbnRleHQoKS0+dW5pdGUo
ZW5jbG9zaW5nSW50UmVjdChtX3BhaW50UmVjdCksIGNvbnN0X2Nhc3Q8UmVuZGVyVGV4dCY+KG1f
cmVuZGVyZXIpLCBtX3N0eWxlKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcAppbmRleCA5MjUzZTkw
NWFmYzUuLmJjY2Y0ODkxN2M5YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1BsdWdpbnMvUGx1Z2luVmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1Bs
dWdpbnMvUGx1Z2luVmlldy5jcHAKQEAgLTQxOCw3ICs0MTgsNyBAQCB2b2lkIFBsdWdpblZpZXc6
OnNldEZyYW1lUmVjdChjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiByZWN0KQogICAgIHZpZXdHZW9t
ZXRyeURpZENoYW5nZSgpOwogfQogCi12b2lkIFBsdWdpblZpZXc6OnBhaW50KEdyYXBoaWNzQ29u
dGV4dCYgY29udGV4dCwgY29uc3QgSW50UmVjdCYgLypkaXJ0eVJlY3QqLywgV2lkZ2V0OjpTZWN1
cml0eU9yaWdpblBhaW50UG9saWN5LCBFdmVudFJlZ2lvbkNvbnRleHQqKQordm9pZCBQbHVnaW5W
aWV3OjpwYWludChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEludFJlY3QmIC8qZGly
dHlSZWN0Ki8sIFdpZGdldDo6U2VjdXJpdHlPcmlnaW5QYWludFBvbGljeSwgUmVnaW9uQ29udGV4
dCopCiB7CiAgICAgaWYgKCFtX2lzSW5pdGlhbGl6ZWQpCiAgICAgICAgIHJldHVybjsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuaCBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuaAppbmRleCA3MjEyMmNi
NDU4ZGUuLjZkY2RlZDg3MTRmYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1BsdWdpbnMvUGx1Z2luVmlldy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVn
aW5zL1BsdWdpblZpZXcuaApAQCAtMTMxLDcgKzEzMSw3IEBAIHByaXZhdGU6CiAKICAgICAvLyBX
ZWJDb3JlOjpXaWRnZXQKICAgICB2b2lkIHNldEZyYW1lUmVjdChjb25zdCBXZWJDb3JlOjpJbnRS
ZWN0JikgZmluYWw7Ci0gICAgdm9pZCBwYWludChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQmLCBj
b25zdCBXZWJDb3JlOjpJbnRSZWN0JiwgV2ViQ29yZTo6V2lkZ2V0OjpTZWN1cml0eU9yaWdpblBh
aW50UG9saWN5LCBXZWJDb3JlOjpFdmVudFJlZ2lvbkNvbnRleHQqKSBmaW5hbDsKKyAgICB2b2lk
IHBhaW50KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IFdlYkNvcmU6OkludFJlY3Qm
LCBXZWJDb3JlOjpXaWRnZXQ6OlNlY3VyaXR5T3JpZ2luUGFpbnRQb2xpY3ksIFdlYkNvcmU6OlJl
Z2lvbkNvbnRleHQqKSBmaW5hbDsKICAgICB2b2lkIGludmFsaWRhdGVSZWN0KGNvbnN0IFdlYkNv
cmU6OkludFJlY3QmKSBmaW5hbDsKICAgICB2b2lkIGZyYW1lUmVjdHNDaGFuZ2VkKCkgZmluYWw7
CiAgICAgdm9pZCBzZXRQYXJlbnQoV2ViQ29yZTo6U2Nyb2xsVmlldyopIGZpbmFsOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>