<?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>135994</bug_id>
          
          <creation_ts>2014-08-15 15:17:45 -0700</creation_ts>
          <short_desc>Implement &quot;proximity&quot; scroll snapping</short_desc>
          <delta_ts>2017-05-19 01:04:53 -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>WebCore Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>iPhone / iPad</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>Enhancement</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>134283</blocked>
    
    <blocked>172349</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Wenson Hsieh">wenson_hsieh</reporter>
          <assigned_to name="Wenson Hsieh">wenson_hsieh</assigned_to>
          <cc>7raivis</cc>
    
    <cc>bdakin</cc>
    
    <cc>bfulgham</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dino</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>glenn</cc>
    
    <cc>jamesr</cc>
    
    <cc>jonlee</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>luiz</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>syoichi</cc>
    
    <cc>tonikitoo</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1029476</commentid>
    <comment_count>0</comment_count>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2014-08-15 15:17:45 -0700</bug_when>
    <thetext>Since it&apos;s not exactly clear what -scroll-snap-type: proximity entails, proximity snapping is not yet implemented. We&apos;ll need to clarify the behavior of proximity, as well as modify scroll snapping on iOS and Mac to support proximity scroll snapping.

To use proximity, just add the property -webkit-scroll-snap-type: proximity; to the scroll snapping container.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1032012</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2014-08-28 09:34:12 -0700</bug_when>
    <thetext>&lt;rdar://problem/18162418&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1262762</commentid>
    <comment_count>2</comment_count>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2016-12-26 11:02:53 -0800</bug_when>
    <thetext>On ToT, Firefox&apos;s proximity threshold (the minimum distance between the destination scroll offset and the potential snap offset before we choose that snap offset) is hard-coded to be 200px. I think we should make this a ratio of the size of the scroll port width/height, but it&apos;s worth playing around with this a bit to see what feels best.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1263082</commentid>
    <comment_count>3</comment_count>
      <attachid>297838</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2016-12-29 11:51:17 -0800</bug_when>
    <thetext>Created attachment 297838
First pass</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1263108</commentid>
    <comment_count>4</comment_count>
      <attachid>297842</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2016-12-29 14:13:43 -0800</bug_when>
    <thetext>Created attachment 297842
First pass (fix EFL build)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1265478</commentid>
    <comment_count>5</comment_count>
      <attachid>297842</attachid>
    <who name="Dean Jackson">dino</who>
    <bug_when>2017-01-10 12:00:44 -0800</bug_when>
    <thetext>Comment on attachment 297842
First pass (fix EFL build)

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

&gt; Source/WebCore/ChangeLog:28
&gt; +        position given a destination offset is now:
&gt; +
&gt; +        -   If the scroll destination lies within a snap offset range, return the scroll destination
&gt; +        -   Otherwise, compute the nearest lower/upper snap offsets and lower/upper snap offset ranges
&gt; +        -   If scrolling ended with no velocity, return the nearest snap offset
&gt; +        -   If scrolling ended with positive velocity, choose the upper snap offset only if there is no snap offset
&gt; +            range in between the scroll destination and the snap offset; else, choose the lower snap offset
&gt; +        -   If scrolling ended with negative velocity, choose the lower snap offset only if there is no snap offset
&gt; +            range in between the scroll destination and the snap offset; else, choose the upper snap offset
&gt; +
&gt; +        The extra rule accounting for scroll offset ranges in between the scroll destination and a potential snap offset
&gt; +        handles the corner case where the user scrolls with momentum very lightly away from a snap offset, such that the
&gt; +        predicted scroll destination is still within proximity of the snap offset. In this case, the regular (mandatory
&gt; +        scroll snapping) behavior would be to snap to the next offset in the direction of momentum scrolling, but
&gt; +        instead, it is more intuitive to return to the original snap position.

I wonder if some of this would be better suited to comments in the code. Otherwise we&apos;ll have to hope people come to the changelog from the code.

&gt; Source/WebCore/page/scrolling/AxisScrollSnapOffsets.cpp:94
&gt; +    return s.toString().utf8().data();

Why .utf8().data()? You&apos;re returning a String, so .toString() is fine.

&gt; Source/WebCore/page/scrolling/AxisScrollSnapOffsets.cpp:156
&gt; +        int middleIndex = (lowerIndex + upperIndex) / 2;
&gt; +        if (offset &lt; snapOffsets[middleIndex])
&gt; +            upperIndex = middleIndex;
&gt; +        else if (offset &gt; snapOffsets[middleIndex])
&gt; +            lowerIndex = middleIndex;
&gt; +        else {
&gt; +            upperIndex = middleIndex;
&gt; +            lowerIndex = middleIndex;
&gt; +            break;
&gt; +        }

Maybe you should have the logic in the same order you use within indicesOfNearestSnapOffsetRanges? There you check the exit clause first.

&gt; Source/WebCore/page/scrolling/AxisScrollSnapOffsets.cpp:174
&gt; +    static const float ratioOfScrollPortAxisLengthToBeConsideredForProximity = 0.3;

Maybe put a FIXME or comment here to indicate this is an arbitrary choice?

&gt; Source/WebCore/page/scrolling/AxisScrollSnapOffsets.cpp:304
&gt; +    // Nonzero velocity indicates a flick gesture. Even if another snap point is closer, we should choose the one in the direction of the flick gesture

Nit: Non-zero :)

&gt; Source/WebCore/page/scrolling/ScrollingMomentumCalculator.cpp:37
&gt; +    const static double inertialScrollPredictionFactor = 16.7;

Explain why this number?

&gt; Source/WebCore/page/scrolling/ScrollingMomentumCalculator.h:33
&gt; +#include &lt;wtf/Optional.h&gt;

Do you need wtf/Optional.h if you&apos;re using std::optional? (I don&apos;t know... I&apos;ve never tried)

&gt; LayoutTests/tiled-drawing/scrolling/scroll-snap/scroll-snap-mandatory-then-proximity.html:61
&gt; +                write(&quot;This test requires UIScriptController support.&quot;);

I think it&apos;s only eventSender, not UIScriptController.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1265515</commentid>
    <comment_count>6</comment_count>
      <attachid>297842</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2017-01-10 13:20:00 -0800</bug_when>
    <thetext>Comment on attachment 297842
First pass (fix EFL build)

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

&gt;&gt; Source/WebCore/ChangeLog:28
&gt;&gt; +        instead, it is more intuitive to return to the original snap position.
&gt; 
&gt; I wonder if some of this would be better suited to comments in the code. Otherwise we&apos;ll have to hope people come to the changelog from the code.

Good idea -- I&apos;ve included this as a comment.

&gt;&gt; Source/WebCore/page/scrolling/AxisScrollSnapOffsets.cpp:94
&gt;&gt; +    return s.toString().utf8().data();
&gt; 
&gt; Why .utf8().data()? You&apos;re returning a String, so .toString() is fine.

Good catch! Fixed. (I initially had this return a const char*, but then changed to String).

&gt;&gt; Source/WebCore/page/scrolling/AxisScrollSnapOffsets.cpp:156
&gt;&gt; +        }
&gt; 
&gt; Maybe you should have the logic in the same order you use within indicesOfNearestSnapOffsetRanges? There you check the exit clause first.

Yes -- that&apos;s reasonable. Fixed.

&gt;&gt; Source/WebCore/page/scrolling/AxisScrollSnapOffsets.cpp:174
&gt;&gt; +    static const float ratioOfScrollPortAxisLengthToBeConsideredForProximity = 0.3;
&gt; 
&gt; Maybe put a FIXME or comment here to indicate this is an arbitrary choice?

Ok -- I&apos;ll include the relevant comments from the ChangeLog here.

&gt;&gt; Source/WebCore/page/scrolling/AxisScrollSnapOffsets.cpp:304
&gt;&gt; +    // Nonzero velocity indicates a flick gesture. Even if another snap point is closer, we should choose the one in the direction of the flick gesture
&gt; 
&gt; Nit: Non-zero :)

Fixed.

&gt;&gt; Source/WebCore/page/scrolling/ScrollingMomentumCalculator.cpp:37
&gt;&gt; +    const static double inertialScrollPredictionFactor = 16.7;
&gt; 
&gt; Explain why this number?

On macOS 10.10 and earlier, we don&apos;t have a platform scrolling momentum calculator, so we instead approximate the scroll destination by multiplying the initial wheel delta by a constant factor. By running a few &quot;experiments&quot; (i.e. logging scroll destination and initial wheel delta for many scroll gestures) I determined that this is a reasonable way to approximate where scrolling will take us without using _NSScrollingMomentumCalculator. I&apos;ll add this information as a comment here.

&gt;&gt; Source/WebCore/page/scrolling/ScrollingMomentumCalculator.h:33
&gt;&gt; +#include &lt;wtf/Optional.h&gt;
&gt; 
&gt; Do you need wtf/Optional.h if you&apos;re using std::optional? (I don&apos;t know... I&apos;ve never tried)

It works if I remove it here, but perhaps that&apos;s because it might have been included by another header? (e.g. MathCommon.h includes it). Many files in WebCore and both WebKits still include &lt;wtf/Optional.h&gt; -- I&apos;ll look into whether we can remove most of these.

&gt;&gt; LayoutTests/tiled-drawing/scrolling/scroll-snap/scroll-snap-mandatory-then-proximity.html:61
&gt;&gt; +                write(&quot;This test requires UIScriptController support.&quot;);
&gt; 
&gt; I think it&apos;s only eventSender, not UIScriptController.

Ah, that&apos;s right -- fixed!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1265518</commentid>
    <comment_count>7</comment_count>
      <attachid>298508</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2017-01-10 13:25:46 -0800</bug_when>
    <thetext>Created attachment 298508
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1265522</commentid>
    <comment_count>8</comment_count>
      <attachid>298508</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2017-01-10 13:50:23 -0800</bug_when>
    <thetext>Comment on attachment 298508
Patch for landing

Never mind -- looks like I do need to #include &lt;wtf/Optional.h&gt; after all.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1265523</commentid>
    <comment_count>9</comment_count>
      <attachid>298509</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2017-01-10 13:50:47 -0800</bug_when>
    <thetext>Created attachment 298509
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1265540</commentid>
    <comment_count>10</comment_count>
      <attachid>298509</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-01-10 14:28:00 -0800</bug_when>
    <thetext>Comment on attachment 298509
Patch for landing

Clearing flags on attachment: 298509

Committed r210560: &lt;http://trac.webkit.org/changeset/210560&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>297838</attachid>
            <date>2016-12-29 11:51:17 -0800</date>
            <delta_ts>2016-12-29 14:13:39 -0800</delta_ts>
            <desc>First pass</desc>
            <filename>bug-135994-20161229115001.patch</filename>
            <type>text/plain</type>
            <size>135774</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjEwMTE5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzM2ODBkNzQyNzE2ZDg3
ZjU1ZjYxOTQ3MDk2NjM1ZmRjOTUyNDU2ZC4uMGY5ZmUxNzk1ZjA0NDcyYWM0Y2I0M2ZhZWYxYjkx
N2FjNmUwNzRiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4NyBAQAorMjAxNi0xMi0yOSAgV2Vu
c29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KKworICAgICAgICBJbXBsZW1lbnQg
InByb3hpbWl0eSIgc2Nyb2xsIHNuYXBwaW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xMzU5OTQKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzE4MTYy
NDE4PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFk
ZHMgc3VwcG9ydCBmb3IgcHJveGltaXR5IHNjcm9sbCBzbmFwcGluZy4gVG8gZG8gdGhpcywgd2Ug
aW50cm9kdWNlIHNjcm9sbCBvZmZzZXQgcmFuZ2VzLCBhIGxpc3Qgb2Ygc2Nyb2xsCisgICAgICAg
IG9mZnNldCByYW5nZXMgdGhhdCBhcmUgcGx1bWJlZCBhbG9uZ3NpZGUgdGhlIGxpc3Qgb2Ygc2Ny
b2xsIHNuYXAgb2Zmc2V0cy4gU2ltaWxhciB0byBhIHNuYXAgb2Zmc2V0LCBhIHNuYXAKKyAgICAg
ICAgb2Zmc2V0IHJhbmdlIGNvbnRhaW5zIHNjcm9sbCBvZmZzZXRzIG9uIHdoaWNoIHNjcm9sbGlu
ZyBpcyBhbGxvd2VkIHRvIGNvbWUgdG8gYSByZXN0IHdpdGhpbiBhIHNjcm9sbCBzbmFwcGluZwor
ICAgICAgICBjb250YWluZXIuIEhvd2V2ZXIsIHVubGlrZSBub3JtYWwgc25hcCBvZmZzZXRzLCBz
Y3JvbGxpbmcgbWF5IG9ubHkgY29tZSB0byByZXN0IHdpdGhpbiBhIHNuYXAgb2Zmc2V0IHJhbmdl
IGlmCisgICAgICAgIHRoZSBwcmVkaWN0ZWQgc2Nyb2xsIG9mZnNldCBhbHJlYWR5IGxpZXMgd2l0
aGluIHRoZSByYW5nZS4gVGhlIG5ldyBhbGdvcml0aG0gZm9yIHNlbGVjdGluZyBhIHRhcmdldCBz
Y3JvbGwgc25hcAorICAgICAgICBwb3NpdGlvbiBnaXZlbiBhIGRlc3RpbmF0aW9uIG9mZnNldCBp
cyBub3c6CisKKyAgICAgICAgLSAgIElmIHRoZSBzY3JvbGwgZGVzdGluYXRpb24gbGllcyB3aXRo
aW4gYSBzbmFwIG9mZnNldCByYW5nZSwgcmV0dXJuIHRoZSBzY3JvbGwgZGVzdGluYXRpb24KKyAg
ICAgICAgLSAgIE90aGVyd2lzZSwgY29tcHV0ZSB0aGUgbmVhcmVzdCBsb3dlci91cHBlciBzbmFw
IG9mZnNldHMgYW5kIGxvd2VyL3VwcGVyIHNuYXAgb2Zmc2V0IHJhbmdlcworICAgICAgICAtICAg
SWYgc2Nyb2xsaW5nIGVuZGVkIHdpdGggbm8gdmVsb2NpdHksIHJldHVybiB0aGUgbmVhcmVzdCBz
bmFwIG9mZnNldAorICAgICAgICAtICAgSWYgc2Nyb2xsaW5nIGVuZGVkIHdpdGggcG9zaXRpdmUg
dmVsb2NpdHksIGNob29zZSB0aGUgdXBwZXIgc25hcCBvZmZzZXQgb25seSBpZiB0aGVyZSBpcyBu
byBzbmFwIG9mZnNldAorICAgICAgICAgICAgcmFuZ2UgaW4gYmV0d2VlbiB0aGUgc2Nyb2xsIGRl
c3RpbmF0aW9uIGFuZCB0aGUgc25hcCBvZmZzZXQ7IGVsc2UsIGNob29zZSB0aGUgbG93ZXIgc25h
cCBvZmZzZXQKKyAgICAgICAgLSAgIElmIHNjcm9sbGluZyBlbmRlZCB3aXRoIG5lZ2F0aXZlIHZl
bG9jaXR5LCBjaG9vc2UgdGhlIGxvd2VyIHNuYXAgb2Zmc2V0IG9ubHkgaWYgdGhlcmUgaXMgbm8g
c25hcCBvZmZzZXQKKyAgICAgICAgICAgIHJhbmdlIGluIGJldHdlZW4gdGhlIHNjcm9sbCBkZXN0
aW5hdGlvbiBhbmQgdGhlIHNuYXAgb2Zmc2V0OyBlbHNlLCBjaG9vc2UgdGhlIHVwcGVyIHNuYXAg
b2Zmc2V0CisKKyAgICAgICAgVGhlIGV4dHJhIHJ1bGUgYWNjb3VudGluZyBmb3Igc2Nyb2xsIG9m
ZnNldCByYW5nZXMgaW4gYmV0d2VlbiB0aGUgc2Nyb2xsIGRlc3RpbmF0aW9uIGFuZCBhIHBvdGVu
dGlhbCBzbmFwIG9mZnNldAorICAgICAgICBoYW5kbGVzIHRoZSBjb3JuZXIgY2FzZSB3aGVyZSB0
aGUgdXNlciBzY3JvbGxzIHdpdGggbW9tZW50dW0gdmVyeSBsaWdodGx5IGF3YXkgZnJvbSBhIHNu
YXAgb2Zmc2V0LCBzdWNoIHRoYXQgdGhlCisgICAgICAgIHByZWRpY3RlZCBzY3JvbGwgZGVzdGlu
YXRpb24gaXMgc3RpbGwgd2l0aGluIHByb3hpbWl0eSBvZiB0aGUgc25hcCBvZmZzZXQuIEluIHRo
aXMgY2FzZSwgdGhlIHJlZ3VsYXIgKG1hbmRhdG9yeQorICAgICAgICBzY3JvbGwgc25hcHBpbmcp
IGJlaGF2aW9yIHdvdWxkIGJlIHRvIHNuYXAgdG8gdGhlIG5leHQgb2Zmc2V0IGluIHRoZSBkaXJl
Y3Rpb24gb2YgbW9tZW50dW0gc2Nyb2xsaW5nLCBidXQKKyAgICAgICAgaW5zdGVhZCwgaXQgaXMg
bW9yZSBpbnR1aXRpdmUgdG8gcmV0dXJuIHRvIHRoZSBvcmlnaW5hbCBzbmFwIHBvc2l0aW9uLgor
CisgICAgICAgIFdlIGFsc28gbW92ZSBzY3JvbGxpbmcgcHJlZGljdGlvbiBsb2dpYyBpbnRvIFNj
cm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvciBhbmQgYWRvcHQgdGhlIHBsYXRmb3JtCisgICAgICAg
IF9OU1Njcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvcidzIGRlc3RpbmF0aW9uT3JpZ2luIHByb3Bl
cnR5IHdoZW4gY29tcHV0aW5nIHRoZSBwcmVkaWN0ZWQgc2Nyb2xsIGRlc3RpbmF0aW9uLgorICAg
ICAgICBQcmV2aW91c2x5LCB3ZSB3ZXJlIHNpbXBseSBtdWx0aXBseWluZyBieSBhbiBlbXBpcmlj
YWxseS1kZXJpdmVkIGNvbnN0YW50IHRvIGFwcHJveGltYXRlIHRoZSBzY3JvbGwgZGVzdGluYXRp
b24sCisgICAgICAgIGJ1dCBub3cgdGhhdCB3ZSBhcmUgc3VwcG9ydGluZyBwcm94aW1pdHkgc2Ny
b2xsIHNuYXBwaW5nLCB3ZSBuZWVkIG1vcmUgZXhhY3Qgc2Nyb2xsIGRlc3RpbmF0b24gcHJlZGlj
dGlvbiBpbgorICAgICAgICBvcmRlciB0byBtYWtlIHN1cmUgdGhhdCBzY3JvbGxpbmcgdG8gYSBz
bmFwIG9mZnNldCByYW5nZSBmZWVscyBuYXR1cmFsLgorCisgICAgICAgIFRlc3RzOiB0aWxlZC1k
cmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1tYW5kYXRvcnktdGhlbi1w
cm94aW1pdHkuaHRtbAorICAgICAgICAgICAgICAgdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Ny
b2xsLXNuYXAvc2Nyb2xsLXNuYXAtcHJveGltaXR5LW1haW5mcmFtZS5odG1sCisgICAgICAgICAg
ICAgICB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1wcm94
aW1pdHktb3ZlcmZsb3cuaHRtbAorCisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qOgorICAgICAgICAqIHBhZ2Uvc2Nyb2xsaW5nL0FzeW5jU2Nyb2xsaW5nQ29vcmRp
bmF0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6c2V0U3RhdGVTY3JvbGxpbmdOb2RlU25hcE9m
ZnNldHNBc0Zsb2F0KToKKyAgICAgICAgKFdlYkNvcmU6OkFzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0
b3I6OnVwZGF0ZU92ZXJmbG93U2Nyb2xsaW5nTm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpBc3lu
Y1Njcm9sbGluZ0Nvb3JkaW5hdG9yOjp1cGRhdGVTY3JvbGxTbmFwUHJvcGVydGllc1dpdGhGcmFt
ZVZpZXcpOgorCisgICAgICAgIE1ha2UgYm9pbGVycGxhdGUgY2hhbmdlcyB0byBwbHVtYiBsaXN0
cyBvZiBob3Jpem9udGFsIGFuZCB2ZXJ0aWNhbCBzbmFwIG9mZnNldCByYW5nZXMgYWxvbmdzaWRl
IHRoZSBsaXN0cyBvCisgICAgICAgIGhvcml6b250YWwgYW5kIHZlcnRpY2FsIHNuYXAgb2Zmc2V0
cy4KKworICAgICAgICAqIHBhZ2Uvc2Nyb2xsaW5nL0F4aXNTY3JvbGxTbmFwT2Zmc2V0cy5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpzbmFwT2Zmc2V0UmFuZ2VzVG9TdHJpbmcpOgorICAgICAgICAo
V2ViQ29yZTo6aW5kaWNlc09mTmVhcmVzdFNuYXBPZmZzZXRSYW5nZXMpOgorICAgICAgICAoV2Vi
Q29yZTo6aW5kaWNlc09mTmVhcmVzdFNuYXBPZmZzZXRzKToKKyAgICAgICAgKFdlYkNvcmU6OmFk
anVzdEF4aXNTbmFwT2Zmc2V0c0ZvclNjcm9sbEV4dGVudCk6CisgICAgICAgIChXZWJDb3JlOjpj
b21wdXRlQXhpc1Byb3hpbWl0eVNuYXBPZmZzZXRSYW5nZXMpOgorICAgICAgICAoV2ViQ29yZTo6
dXBkYXRlU25hcE9mZnNldHNGb3JTY3JvbGxhYmxlQXJlYSk6CisgICAgICAgIChXZWJDb3JlOjpj
bG9zZXN0U25hcE9mZnNldCk6CisKKyAgICAgICAgQWRqdXN0IHRoZSBzbmFwIG9mZnNldCBzZWxl
Y3Rpb24gYWxnb3JpdGhtIHRvIHRha2Ugc25hcCBvZmZzZXQgcmFuZ2VzIGludG8gYWNjb3VudC4g
U2VlIGFib3ZlIGZvciBtb3JlIGRldGFpbHMuCisgICAgICAgIEFkZGl0aW9uYWxseSwgYXVnbWVu
dCBzbmFwIG9mZnNldCB1cGRhdGUgbG9naWMgdG8gZW1pdCBzbmFwIG9mZnNldCByYW5nZXMgZm9y
IHByb3hpbWl0eSBzY3JvbGwgc25hcHBpbmcuIFRvIGRvCisgICAgICAgIHRoaXMsIHdlIHJ1biB0
aGUgZm9sbG93aW5nIHN0ZXBzIG9uIHRoZSBmaW5hbCBsaXN0IG9mIHByb2Nlc3NlZCBzbmFwIG9m
ZnNldHM6CisgICAgICAgIC0gICBDb21wdXRlIHRoZSBwcm94aW1pdHkgZGlzdGFuY2UsIHdoaWNo
IChmb3Igbm93KSBpcyBhcmJpdHJhcmlseSAwLjMgKiB0aGUgbGVuZ3RoIG9yIHdpZHRoIG9mIHRo
ZSBzY3JvbGwgc25hcAorICAgICAgICAgICAgcG9ydCwgZGVwZW5kaW5nIG9uIHdoZXRoZXIgc2Ny
b2xsIHNuYXBwaW5nIGlzIHRha2luZyBwbGFjZSBpbiB0aGUgWCBvciBZIGF4aXMuCisgICAgICAg
IC0gICBGb3IgZWFjaCBwYWlyIG9mIGFkamFjZW50IHNuYXAgb2Zmc2V0cywgaWYgdGhleSBhcmUg
bW9yZSB0aGFuIDIgKiBwcm94aW1pdHkgZGlzdGFuY2UgYXdheSBmcm9tIGVhY2ggb3RoZXIsCisg
ICAgICAgICAgICBlbWl0IGEgc25hcCBvZmZzZXQgcmFuZ2Ugc3RhcnRpbmcgZnJvbSAobG93ZXIg
c25hcCBvZmZzZXQgKyBwcm94aW1pdHkgZGlzdGFuY2UpIGFuZCBlbmRpbmcgb24gKHVwcGVyIHNu
YXAKKyAgICAgICAgICAgIG9mZnNldCArIHByb3hpbWl0eSBkaXN0YW5jZSkuCisKKyAgICAgICAg
KiBwYWdlL3Njcm9sbGluZy9BeGlzU2Nyb2xsU25hcE9mZnNldHMuaDoKKyAgICAgICAgKFdlYkNv
cmU6OmNsb3Nlc3RTbmFwT2Zmc2V0KTogRGVsZXRlZC4KKyAgICAgICAgKiBwYWdlL3Njcm9sbGlu
Zy9TY3JvbGxTbmFwT2Zmc2V0c0luZm8uaDoKKworICAgICAgICBJbnRyb2R1Y2UgU2Nyb2xsU25h
cE9mZnNldHNJbmZvLCBhIHN0cnVjdCB3aGljaCBjb250YWlucyBkYXRhIHJlbGV2YW50IHRvIHNj
cm9sbCBzbmFwcGluZy4gVGhpcyBpbmNsdWRlcworICAgICAgICB2ZXJ0aWNhbCBhbmQgaG9yaXpv
bnRhbCBzbmFwIG9mZnNldHMsIGFzIHdlbGwgYXMgdmVydGljYWwgYW5kIGhvcml6b250YWwgc25h
cCBvZmZzZXQgcmFuZ2VzLiBTbmFwIG9mZnNldCByYW5nZXMKKyAgICAgICAgY29uc2lzdCBvZiBh
IHZlY3RvciBvZiByYW5nZXMgb2Ygc2Nyb2xsIG9mZnNldHMuCisKKyAgICAgICAgKiBwYWdlL3Nj
cm9sbGluZy9TY3JvbGxpbmdDb29yZGluYXRvci5oOgorICAgICAgICAqIHBhZ2Uvc2Nyb2xsaW5n
L1Njcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpwcm9q
ZWN0ZWRJbmVydGlhbFNjcm9sbERpc3RhbmNlKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGlu
Z01vbWVudHVtQ2FsY3VsYXRvcjo6U2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNjcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvcjo6c2V0UmV0YXJnZXRlZFNj
cm9sbE9mZnNldCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0
b3I6OnByZWRpY3RlZERlc3RpbmF0aW9uT2Zmc2V0KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9s
bGluZ01vbWVudHVtQ2FsY3VsYXRvcjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9s
bGluZ01vbWVudHVtQ2FsY3VsYXRvcjo6c2V0UGxhdGZvcm1Nb21lbnR1bVNjcm9sbGluZ1ByZWRp
Y3Rpb25FbmFibGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkJhc2ljU2Nyb2xsaW5nTW9tZW50dW1D
YWxjdWxhdG9yOjpCYXNpY1Njcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvcik6CisgICAgICAgIChX
ZWJDb3JlOjpCYXNpY1Njcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvcjo6bGluZWFybHlJbnRlcnBv
bGF0ZWRPZmZzZXRBdFByb2dyZXNzKToKKyAgICAgICAgKFdlYkNvcmU6OkJhc2ljU2Nyb2xsaW5n
TW9tZW50dW1DYWxjdWxhdG9yOjppbml0aWFsaXplSW50ZXJwb2xhdGlvbkNvZWZmaWNpZW50c0lm
TmVjZXNzYXJ5KToKKyAgICAgICAgKFdlYkNvcmU6OkJhc2ljU2Nyb2xsaW5nTW9tZW50dW1DYWxj
dWxhdG9yOjppbml0aWFsaXplU25hcFByb2dyZXNzQ3VydmUpOgorICAgICAgICAqIHBhZ2Uvc2Ny
b2xsaW5nL1Njcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvci5oOgorICAgICAgICAoV2ViQ29yZTo6
U2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yOjpyZXRhcmdldGVkU2Nyb2xsT2Zmc2V0KToKKyAg
ICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvcjo6cmV0YXJnZXRlZFNj
cm9sbE9mZnNldERpZENoYW5nZSk6CisKKyAgICAgICAgQ3VycmVudGx5LCB0aGUgU2Nyb2xsaW5n
TW9tZW50dW1DYWxjdWxhdG9yIGlzIHJlc3BvbnNpYmxlIGZvciB0YWtpbmcgYW4gaW5pdGlhbCBw
b3NpdGlvbiwgaW5pdGlhbCB2ZWxvY2l0eSwgYW5kCisgICAgICAgIHRhcmdldCBwb3NpdGlvbiBh
bmQgYW5pbWF0aW5nIHRoZSBzY3JvbGwgb2Zmc2V0IGZyb20gdGhlIGluaXRpYWwgdG8gdGFyZ2V0
IHBvc2l0aW9uLiBOb3csIHdlIHJlZmFjdG9yIHRoZQorICAgICAgICBTY3JvbGxpbmdNb21lbnR1
bUNhbGN1bGF0b3IgaW50ZXJmYWNlIHRvIG5vIGxvbmdlciB0YWtlIGEgdGFyZ2V0IG9mZnNldCB1
cG9uIGluaXRpYWxpemF0aW9uLCBhbmQgaW5zdGVhZCBjb21wdXRlCisgICAgICAgIHRoZSBwcmVk
aWN0ZWQgc2Nyb2xsIGRlc3RpbmF0aW9uIGdpdmVuIGluaXRpYWwgcG9zaXRpb24gYW5kIHZlbG9j
aXR5OyBjbGllbnRzIG9mIHRoZSBTY3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3IKKyAgICAgICAg
dGhlbiB1c2UgdGhpcyBwcmVkaWN0ZWQgc2Nyb2xsIGRlc3RpbmF0aW9uIHRvIGNvbXB1dGUgYSBy
ZXRhcmdldGVkIHNjcm9sbCBvZmZzZXQgYW5kIHRoZW4gY2FsbAorICAgICAgICBzZXRSZXRhcmdl
dGVkU2Nyb2xsT2Zmc2V0IG9uIHRoZSBjYWxjdWxhdG9yLCB3aGljaCBzZXRzIHVwIGFuIGFuaW1h
dGlvbiBjdXJ2ZSB0byB0aGUgbmV3IHJldGFyZ2V0ZWQgb2Zmc2V0LiBUaGlzCisgICAgICAgIGFs
bG93cyBib3RoIHRoZSBBcHBLaXQtYmFzZWQgc2Nyb2xsaW5nIG1vbWVudHVtIGNhbGN1bGF0b3Ig
YW5kIHBsYXRmb3JtLWludmFyaWFudCBtb21lbnR1bSBjYWxjdWxhdG9yIHRvIGJlIHVzZWQKKyAg
ICAgICAgaW50ZXJjaGFuZ2VhYmx5LCB3aGlsZSBzdGlsbCBhbGxvd2luZyB0aGVtIHRvIGNvbXB1
dGUgYSBkZXN0aW5hdGlvbiBvZmZzZXQgZnJvbSBpbml0aWFsIHBhcmFtZXRlcnMgb2YgdGhlCisg
ICAgICAgIHNjcm9sbC4KKworICAgICAgICAqIHBhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1N0YXRl
U2Nyb2xsaW5nTm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdTdGF0ZVNjcm9s
bGluZ05vZGU6OlNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZSk6CisgICAgICAgIChXZWJDb3Jl
OjpTY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGU6OnNldEhvcml6b250YWxTbmFwT2Zmc2V0cyk6
CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGU6OnNldFZlcnRp
Y2FsU25hcE9mZnNldHMpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nU3RhdGVTY3JvbGxp
bmdOb2RlOjpzZXRIb3Jpem9udGFsU25hcE9mZnNldFJhbmdlcyk6CisgICAgICAgIChXZWJDb3Jl
OjpTY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGU6OnNldFZlcnRpY2FsU25hcE9mZnNldFJhbmdl
cyk6CisgICAgICAgICogcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2Rl
Lmg6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGU6Omhvcml6
b250YWxTbmFwT2Zmc2V0cyk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdTdGF0ZVNjcm9s
bGluZ05vZGU6OnZlcnRpY2FsU25hcE9mZnNldHMpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xs
aW5nU3RhdGVTY3JvbGxpbmdOb2RlOjpob3Jpem9udGFsU25hcE9mZnNldFJhbmdlcyk6CisgICAg
ICAgIChXZWJDb3JlOjpTY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGU6OnZlcnRpY2FsU25hcE9m
ZnNldFJhbmdlcyk6CisgICAgICAgICogcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZVNjcm9s
bGluZ05vZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05v
ZGU6OmNvbW1pdFN0YXRlQmVmb3JlQ2hpbGRyZW4pOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xs
aW5nVHJlZVNjcm9sbGluZ05vZGU6OmR1bXBQcm9wZXJ0aWVzKToKKyAgICAgICAgKiBwYWdlL3Nj
cm9sbGluZy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZS5oOgorICAgICAgICAoV2ViQ29yZTo6
U2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGU6Omhvcml6b250YWxTbmFwT2Zmc2V0cyk6CisgICAg
ICAgIChXZWJDb3JlOjpTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZTo6dmVydGljYWxTbmFwT2Zm
c2V0cyk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZTo6aG9y
aXpvbnRhbFNuYXBPZmZzZXRSYW5nZXMpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nVHJl
ZVNjcm9sbGluZ05vZGU6OnZlcnRpY2FsU25hcE9mZnNldFJhbmdlcyk6CisKKyAgICAgICAgQWRk
IG1vcmUgYm9pbGVycGxhdGUgc3VwcG9ydCBmb3Igc25hcCBvZmZzZXQgcmFuZ2VzLgorCisgICAg
ICAgICogcGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvck1hYy5o
OgorICAgICAgICAqIHBhZ2Uvc2Nyb2xsaW5nL21hYy9TY3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0
b3JNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3I6
OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3I6
OnNldFBsYXRmb3JtTW9tZW50dW1TY3JvbGxpbmdQcmVkaWN0aW9uRW5hYmxlZCk6CisgICAgICAg
IChXZWJDb3JlOjpTY3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3JNYWM6OlNjcm9sbGluZ01vbWVu
dHVtQ2FsY3VsYXRvck1hYyk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdNb21lbnR1bUNh
bGN1bGF0b3JNYWM6OnNjcm9sbE9mZnNldEFmdGVyRWxhcHNlZFRpbWUpOgorICAgICAgICAoV2Vi
Q29yZTo6U2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yTWFjOjpwcmVkaWN0ZWREZXN0aW5hdGlv
bk9mZnNldCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3JN
YWM6OnJldGFyZ2V0ZWRTY3JvbGxPZmZzZXREaWRDaGFuZ2UpOgorICAgICAgICAoV2ViQ29yZTo6
U2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yTWFjOjphbmltYXRpb25EdXJhdGlvbik6CisgICAg
ICAgIChXZWJDb3JlOjpTY3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3JNYWM6OnJlcXVpcmVzTW9t
ZW50dW1TY3JvbGxpbmcpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nTW9tZW50dW1DYWxj
dWxhdG9yTWFjOjplbnN1cmVQbGF0Zm9ybU1vbWVudHVtQ2FsY3VsYXRvcik6CisKKyAgICAgICAg
SG9vayBpbnRvIEFwcEtpdCBtb21lbnR1bSBzY3JvbGwgb2Zmc2V0IHByZWRpY3Rpb24uCisKKyAg
ICAgICAgKiBwYWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9k
ZU1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OmNvbnZlcnRUb0xheW91dFVuaXRzKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNjcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVNYWM6OmNvbW1pdFN0
YXRlQmVmb3JlQ2hpbGRyZW4pOgorICAgICAgICAqIHBsYXRmb3JtL1Njcm9sbGFibGVBcmVhLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGFibGVBcmVhOjplbnN1cmVTbmFwT2Zmc2V0c0lu
Zm8pOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYWJsZUFyZWE6Omhvcml6b250YWxTbmFwT2Zm
c2V0cyk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxhYmxlQXJlYTo6aG9yaXpvbnRhbFNuYXBP
ZmZzZXRSYW5nZXMpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYWJsZUFyZWE6OnZlcnRpY2Fs
U25hcE9mZnNldFJhbmdlcyk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxhYmxlQXJlYTo6dmVy
dGljYWxTbmFwT2Zmc2V0cyk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxhYmxlQXJlYTo6c2V0
SG9yaXpvbnRhbFNuYXBPZmZzZXRzKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGFibGVBcmVh
OjpzZXRWZXJ0aWNhbFNuYXBPZmZzZXRzKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGFibGVB
cmVhOjpzZXRIb3Jpem9udGFsU25hcE9mZnNldFJhbmdlcyk6CisgICAgICAgIChXZWJDb3JlOjpT
Y3JvbGxhYmxlQXJlYTo6c2V0VmVydGljYWxTbmFwT2Zmc2V0UmFuZ2VzKToKKyAgICAgICAgKFdl
YkNvcmU6OlNjcm9sbGFibGVBcmVhOjpjbGVhckhvcml6b250YWxTbmFwT2Zmc2V0cyk6CisgICAg
ICAgIChXZWJDb3JlOjpTY3JvbGxhYmxlQXJlYTo6Y2xlYXJWZXJ0aWNhbFNuYXBPZmZzZXRzKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9TY3JvbGxhYmxlQXJlYS5oOgorICAgICAgICAoV2ViQ29yZTo6
U2Nyb2xsYWJsZUFyZWE6Omhvcml6b250YWxTbmFwT2Zmc2V0cyk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpTY3JvbGxhYmxlQXJlYTo6dmVydGljYWxTbmFwT2Zmc2V0cyk6IERlbGV0ZWQu
CisgICAgICAgICogcGxhdGZvcm0vY29jb2EvU2Nyb2xsQ29udHJvbGxlci5oOgorICAgICAgICAq
IHBsYXRmb3JtL2NvY29hL1Njcm9sbENvbnRyb2xsZXIubW06CisgICAgICAgIChXZWJDb3JlOjpT
Y3JvbGxDb250cm9sbGVyOjpwcm9jZXNzV2hlZWxFdmVudEZvclNjcm9sbFNuYXApOgorCisgICAg
ICAgIEZpeCBhbiBpc3N1ZSB3aGVyZSBpbml0aWFsIHNjcm9sbGluZyB2ZWxvY2l0eSB3b3VsZCBi
ZSBzZXQgdG8gemVybyBhdCB0aGUgZW5kIG9mIGEgZHJhZyBnZXN0dXJlLgorCisgICAgICAgIChX
ZWJDb3JlOjpTY3JvbGxDb250cm9sbGVyOjp1cGRhdGVTY3JvbGxTbmFwU3RhdGUpOgorICAgICAg
ICAoV2ViQ29yZTo6U2Nyb2xsQ29udHJvbGxlcjo6dXBkYXRlU2Nyb2xsU25hcFBvaW50cyk6Cisg
ICAgICAgIChXZWJDb3JlOjpTY3JvbGxDb250cm9sbGVyOjpzZXROZWFyZXN0U2Nyb2xsU25hcElu
ZGV4Rm9yQXhpc0FuZE9mZnNldCk6CisgICAgICAgICogcGxhdGZvcm0vY29jb2EvU2Nyb2xsU25h
cEFuaW1hdG9yU3RhdGUuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbFNuYXBBbmltYXRvclN0
YXRlOjpzbmFwT2Zmc2V0c0ZvckF4aXMpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsU25hcEFu
aW1hdG9yU3RhdGU6OnNuYXBPZmZzZXRSYW5nZXNGb3JBeGlzKToKKyAgICAgICAgKFdlYkNvcmU6
OlNjcm9sbFNuYXBBbmltYXRvclN0YXRlOjpzZXRTbmFwT2Zmc2V0c0FuZFBvc2l0aW9uUmFuZ2Vz
Rm9yQXhpcyk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxTbmFwQW5pbWF0b3JTdGF0ZTo6c2V0
U25hcE9mZnNldHNGb3JBeGlzKTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9jb2NvYS9T
Y3JvbGxTbmFwQW5pbWF0b3JTdGF0ZS5tbToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbFNuYXBB
bmltYXRvclN0YXRlOjpzZXR1cEFuaW1hdGlvbkZvclN0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6
OlNjcm9sbFNuYXBBbmltYXRvclN0YXRlOjp0YXJnZXRPZmZzZXRGb3JTdGFydE9mZnNldCk6Cisg
ICAgICAgIChXZWJDb3JlOjpwcm9qZWN0ZWRJbmVydGlhbFNjcm9sbERpc3RhbmNlKTogRGVsZXRl
ZC4KKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlckxheWVyQ29tcG9zaXRvcjo6dXBkYXRlU2Nyb2xsQ29vcmRpbmF0
ZWRMYXllcik6CisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbHMuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SW50ZXJuYWxzOjpzZXRQbGF0Zm9ybU1vbWVudHVtU2Nyb2xsaW5nUHJlZGljdGlvbkVu
YWJsZWQpOgorCisgICAgICAgIEFkZCBhIG5ldyBob29rIGZvciBsYXlvdXQgdGVzdHMgdG8gZm9y
Y2Ugc2Nyb2xsaW5nIG1vbWVudHVtIGNhbGN1bGF0b3JzIHRvIHVzZSB0aGUgcGxhdGZvcm0taW52
YXJpYW50IG1vbWVudHVtCisgICAgICAgIHNjcm9sbGluZyBwcmVkaWN0aW9uIGhldXJpc3RpYyBp
bnN0ZWFkIG9mIHRoZSBwbGF0Zm9ybS1kZXBlbmRlbnQgb25lLgorCisgICAgICAgIChXZWJDb3Jl
OjpJbnRlcm5hbHM6OnNjcm9sbFNuYXBPZmZzZXRzKToKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVy
bmFscy5oOgorICAgICAgICAqIHRlc3RpbmcvSW50ZXJuYWxzLmlkbDoKKwogMjAxNi0xMi0yMiAg
V2Vuc29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KIAogICAgICAgICBDU1MgU2Ny
b2xsIFNuYXAgZG9lcyBub3Qgd29yayBpZiBzY3JvbGxiYXIgaXMgaGlkZGVuCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5k
ZXggYzhiMjRmNWJlNjM0NWY5MzNmYmQzNWM1M2QyNGYyZGM1MzczZDUxYi4uMWYzMWQ0OGI4YmE4
NTk0MWZhNTZjMzhiNWI1ODAyZDI3OTZmYmJhOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
Q2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMzIEBA
CisyMDE2LTEyLTI5ICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisg
ICAgICAgIEltcGxlbWVudCAicHJveGltaXR5IiBzY3JvbGwgc25hcHBpbmcKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzNTk5NAorICAgICAgICA8cmRh
cjovL3Byb2JsZW0vMTgxNjI0MTg+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgQWRkcyBib2lsZXJwbGF0ZSBzdXBwb3J0IGZvciBwbHVtYmluZyBsaXN0
cyBvZiBzbmFwIG9mZnNldCByYW5nZXMgZnJvbSB0aGUgd2ViIHByb2Nlc3MgdG8gdGhlIFVJIHBy
b2Nlc3MKKyAgICAgICAgYWxvbmdzaWRlIHRoZSBsaXN0IG9mIHNuYXAgb2Zmc2V0cy4KKworICAg
ICAgICAqIFNoYXJlZC9TY3JvbGxpbmcvUmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3JUcmFuc2Fj
dGlvbi5jcHA6CisgICAgICAgIChBcmd1bWVudENvZGVyPFNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5n
Tm9kZT46OmVuY29kZSk6CisgICAgICAgIChBcmd1bWVudENvZGVyPFNjcm9sbGluZ1N0YXRlU2Ny
b2xsaW5nTm9kZT46OmRlY29kZSk6CisgICAgICAgICogU2hhcmVkL1dlYkNvcmVBcmd1bWVudENv
ZGVycy5jcHA6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8U2Nyb2xsT2Zmc2V0UmFuZ2U8
ZmxvYXQ+Pjo6ZW5jb2RlKToKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxTY3JvbGxPZmZz
ZXRSYW5nZTxmbG9hdD4+OjpkZWNvZGUpOgorICAgICAgICAqIFNoYXJlZC9XZWJDb3JlQXJndW1l
bnRDb2RlcnMuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvU2Nyb2xsaW5nL2lvcy9TY3JvbGxpbmdU
cmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlSU9TLm1tOgorICAgICAgICAoLVtXS092ZXJmbG93U2Ny
b2xsVmlld0RlbGVnYXRlIHNjcm9sbFZpZXdXaWxsRW5kRHJhZ2dpbmc6d2l0aFZlbG9jaXR5OnRh
cmdldENvbnRlbnRPZmZzZXQ6XSk6CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9SZW1vdGVTY3Jv
bGxpbmdDb29yZGluYXRvclByb3h5SU9TLm1tOgorCisgICAgICAgIEFkanVzdCBtYWluZnJhbWUg
cHJveGltaXR5IHNjcm9sbCBzbmFwcGluZyBsb2dpYyB0byBub3Qgc3VidHJhY3Qgb3V0IHRoZSB0
b3AgY29udGVudCBpbnNldCB3aGVuIHRoZXJlIGlzIG5vCisgICAgICAgIGFjdGl2ZSBzbmFwIG9m
ZnNldCAoaS5lLiB3aGVuIHNuYXBwaW5nIHJlc3RzIGluIGEgc25hcCBvZmZzZXQgcmFuZ2UpLiBB
dHRlbXB0aW5nIHRvIHN1YnRyYWN0IG91dCB0aGUgdG9wIGluc2V0CisgICAgICAgIGluIHRoaXMg
Y2FzZSBjYXVzZWQgdGhlIHNjcm9sbCBvZmZzZXQgdG8ganVtcCBhZnRlciBlbmRpbmcgYSBkcmFn
IHdpdGggbm8gbW9tZW50dW0gaW4gYSBzbmFwIG9mZnNldCByYW5nZS4KKworICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvclByb3h5OjphZGp1c3RUYXJnZXRDb250ZW50
T2Zmc2V0Rm9yU25hcHBpbmcpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVTY3JvbGxpbmdDb29y
ZGluYXRvclByb3h5OjpzaG91bGRTbmFwRm9yTWFpbkZyYW1lU2Nyb2xsaW5nKToKKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3JQcm94eTo6Y2xvc2VzdFNuYXBPZmZz
ZXRGb3JNYWluRnJhbWVTY3JvbGxpbmcpOgorCiAyMDE2LTEyLTIyICBUaW0gSG9ydG9uICA8dGlt
b3RoeV9ob3J0b25AYXBwbGUuY29tPgogCiAgICAgICAgIE51bGwgZGVyZWYgdW5kZXIgV2ViUGFn
ZVByb3h5OjphcHBsaWNhdGlvbkRpZEZpbmlzaFNuYXBzaG90dGluZ0FmdGVyRW50ZXJpbmdCYWNr
Z3JvdW5kCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKaW5kZXggM2I1Njk5ZjRiOGU1MGQ1MGZhMjE5NjQ4ZDBiYmJmZWQwNWFiYTc1Ni4uYzEx
MDFiY2IzYTQ0NTUxNDg1ZWFmMmRmY2U3ODY1NDMzMmMxNTg2MCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtNjQ4OCw2ICs2NDg4
LDcgQEAKIAkJRjQ0RUJCREIxREI1REQ5RDAwMjc3MzM0IC8qIFN0YXRpY1JhbmdlLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY0NEVCQkRBMURCNURE
OUQwMDI3NzMzNCAvKiBTdGF0aWNSYW5nZS5jcHAgKi87IH07CiAJCUY0NUMyMzFEMTk5NUI3M0Iw
MEE2RTJFMyAvKiBBeGlzU2Nyb2xsU25hcE9mZnNldHMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjQ1QzIzMUIxOTk1QjczQjAwQTZFMkUzIC8qIEF4
aXNTY3JvbGxTbmFwT2Zmc2V0cy5jcHAgKi87IH07CiAJCUY0NUMyMzFFMTk5NUI3M0IwMEE2RTJF
MyAvKiBBeGlzU2Nyb2xsU25hcE9mZnNldHMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEY0NUMyMzFDMTk5NUI3M0IwMEE2RTJFMyAvKiBBeGlzU2Nyb2xs
U25hcE9mZnNldHMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OworCQlGNDY3MjkyODFFMERFNjg1MDBBQ0MzRDggLyogU2Nyb2xsU25hcE9mZnNldHNJbmZv
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNDY3Mjky
NTFFMERFNUFCMDBBQ0MzRDggLyogU2Nyb2xsU25hcE9mZnNldHNJbmZvLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRjQ3ODc1NTQxOTk4M0FGRjAw
MjRBMjg3IC8qIFNjcm9sbFNuYXBBbmltYXRvclN0YXRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNDc4NzU1MjE5OTgzQUZGMDAyNEEyODcgLyogU2Ny
b2xsU25hcEFuaW1hdG9yU3RhdGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQlGNDc4NzU1NTE5OTgzQUZGMDAyNEEyODcgLyogU2Nyb2xsU25hcEFu
aW1hdG9yU3RhdGUubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBGNDc4NzU1MzE5OTgzQUZGMDAyNEEyODcgLyogU2Nyb2xsU25hcEFuaW1hdG9yU3RhdGUu
bW0gKi87IH07CiAJCUY0N0E1RTNFMTk1QjhDOEEwMDQ4MzEwMCAvKiBTdHlsZVNjcm9sbFNuYXBQ
b2ludHMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY0
N0E1RTNCMTk1QjhDOEEwMDQ4MzEwMCAvKiBTdHlsZVNjcm9sbFNuYXBQb2ludHMuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMTQ1MTcsNiArMTQ1
MTgsNyBAQAogCQlGNDRFQkJEQTFEQjVERDlEMDAyNzczMzQgLyogU3RhdGljUmFuZ2UuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU3RhdGljUmFuZ2UuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGNDVDMjMxQjE5OTVCNzNCMDBBNkUyRTMgLyogQXhp
c1Njcm9sbFNuYXBPZmZzZXRzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IEF4aXNTY3JvbGxTbmFwT2Zmc2V0cy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUY0NUMyMzFDMTk5NUI3M0IwMEE2RTJFMyAvKiBBeGlzU2Nyb2xsU25hcE9mZnNldHMuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQXhpc1Njcm9sbFNuYXBPZmZzZXRzLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUY0NjcyOTI1MUUwREU1QUIwMEFDQzNEOCAv
KiBTY3JvbGxTbmFwT2Zmc2V0c0luZm8uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gU2Nyb2xsU25hcE9mZnNldHNJbmZvLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUY0Nzg3NTUyMTk5ODNBRkYwMDI0QTI4NyAvKiBTY3JvbGxTbmFwQW5pbWF0b3JTdGF0ZS5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTY3JvbGxTbmFwQW5pbWF0b3JTdGF0ZS5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGNDc4NzU1MzE5OTgzQUZGMDAyNEEyODcg
LyogU2Nyb2xsU25hcEFuaW1hdG9yU3RhdGUubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5v
YmpjcHA7IHBhdGggPSBTY3JvbGxTbmFwQW5pbWF0b3JTdGF0ZS5tbTsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJRjQ3QTVFM0ExOTVCOEM4QTAwNDgzMTAwIC8qIFN0eWxlU2Nyb2xsU25h
cFBvaW50cy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTdHlsZVNj
cm9sbFNuYXBQb2ludHMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTYwNDIs
NiArMTYwNDQsNyBAQAogCQkJCTBGRUEzRTdFMTkxQjMxNjkwMDBGMUI1NSAvKiBTY3JvbGxpbmdU
cmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlLmggKi8sCiAJCQkJOTM5MUE5OUExNjI5RDZGRjAwMjk3
MzMwIC8qIFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlLmNwcCAqLywKIAkJCQk5MzkxQTk5QjE2
MjlENzAwMDAyOTczMzAgLyogU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGUuaCAqLywKKwkJCQlG
NDY3MjkyNTFFMERFNUFCMDBBQ0MzRDggLyogU2Nyb2xsU25hcE9mZnNldHNJbmZvLmggKi8sCiAJ
CQkJN0FBRkU4Q0QxOUNCODY3MjAwMEY1NkQ4IC8qIFNjcm9sbExhdGNoaW5nU3RhdGUuY3BwICov
LAogCQkJCTdBQUZFOENFMTlDQjg2NzIwMDBGNTZEOCAvKiBTY3JvbGxMYXRjaGluZ1N0YXRlLmgg
Ki8sCiAJCQkJMEY2MzgzREIxODYxNUIyOTAwM0U1REI1IC8qIFRocmVhZGVkU2Nyb2xsaW5nVHJl
ZS5jcHAgKi8sCkBAIC0yNjE2Niw2ICsyNjE2OSw3IEBACiAJCQkJMEY0NzEwQzAxREI1NkJFODAw
MkRDRUMzIC8qIEpTRE9NUmVjdFJlYWRPbmx5LmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzVBODZC
NjBDMzM2N0U4MDBFRUE2NDkgLyogSlNET01TZWxlY3Rpb24uaCBpbiBIZWFkZXJzICovLAogCQkJ
CUM1MTM3Q0YzMTFBNTgzNzgwMDRBREI5OSAvKiBKU0RPTVN0cmluZ0xpc3QuaCBpbiBIZWFkZXJz
ICovLAorCQkJCUY0NjcyOTI4MUUwREU2ODUwMEFDQzNEOCAvKiBTY3JvbGxTbmFwT2Zmc2V0c0lu
Zm8uaCBpbiBIZWFkZXJzICovLAogCQkJCUJDNjQ2NDk4MTFEODIzNDkwMDY0NTVCMCAvKiBKU0RP
TVN0cmluZ01hcC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNzY5NDU2M0QxMjE0RDk3QzAwMDdDQkFF
IC8qIEpTRE9NVG9rZW5MaXN0LmggaW4gSGVhZGVycyAqLywKIAkJCQkyRTM3RTAwNjEyREJDNUE0
MDBBNkIyMzMgLyogSlNET01VUkwuaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvQXN5bmNTY3JvbGxpbmdDb29yZGluYXRvci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9Bc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmNw
cAppbmRleCBmNmU1NDZiOTg3MWM5MDgwNGJiNTc4MTMwNWUxNDNjZWUyMWVjODk2Li43NGNmODNk
OTFiNmVkOTQ0MWE4MDhmODAyNjFlZjZhNTcwZTk2YjliIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL3Njcm9sbGluZy9Bc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9Bc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmNw
cApAQCAtNjUsNyArNjUsNyBAQCB2b2lkIEFzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3I6OnNjcm9s
bGluZ1N0YXRlVHJlZVByb3BlcnRpZXNDaGFuZ2VkKCkKICAgICBzY2hlZHVsZVRyZWVTdGF0ZUNv
bW1pdCgpOwogfQogCi1zdGF0aWMgaW5saW5lIHZvaWQgc2V0U3RhdGVTY3JvbGxpbmdOb2RlU25h
cE9mZnNldHNBc0Zsb2F0KFNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZSYgbm9kZSwgU2Nyb2xs
RXZlbnRBeGlzIGF4aXMsIGNvbnN0IFZlY3RvcjxMYXlvdXRVbml0Piogc25hcE9mZnNldHMsIGZs
b2F0IGRldmljZVNjYWxlRmFjdG9yKQorc3RhdGljIGlubGluZSB2b2lkIHNldFN0YXRlU2Nyb2xs
aW5nTm9kZVNuYXBPZmZzZXRzQXNGbG9hdChTY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGUmIG5v
ZGUsIFNjcm9sbEV2ZW50QXhpcyBheGlzLCBjb25zdCBWZWN0b3I8TGF5b3V0VW5pdD4qIHNuYXBP
ZmZzZXRzLCBjb25zdCBWZWN0b3I8U2Nyb2xsT2Zmc2V0UmFuZ2U8TGF5b3V0VW5pdD4+KiBzbmFw
T2Zmc2V0UmFuZ2VzLCBmbG9hdCBkZXZpY2VTY2FsZUZhY3RvcikKIHsKICAgICAvLyBGSVhNRTog
SW5jb3Jwb3JhdGUgY3VycmVudCBwYWdlIHNjYWxlIGZhY3RvciBpbiBzbmFwcGluZyB0byBkZXZp
Y2UgcGl4ZWwuIFBlcmhhcHMgd2Ugc2hvdWxkIGp1c3QgY29udmVydCB0byBmbG9hdCBoZXJlIGFu
ZCBsZXQgVUkgcHJvY2VzcyBkbyB0aGUgcGl4ZWwgc25hcHBpbmc/CiAgICAgVmVjdG9yPGZsb2F0
PiBzbmFwT2Zmc2V0c0FzRmxvYXQ7CkBAIC03NCwxMCArNzQsMjAgQEAgc3RhdGljIGlubGluZSB2
b2lkIHNldFN0YXRlU2Nyb2xsaW5nTm9kZVNuYXBPZmZzZXRzQXNGbG9hdChTY3JvbGxpbmdTdGF0
ZVNjcm9sbGkKICAgICAgICAgZm9yIChhdXRvJiBvZmZzZXQgOiAqc25hcE9mZnNldHMpCiAgICAg
ICAgICAgICBzbmFwT2Zmc2V0c0FzRmxvYXQudW5jaGVja2VkQXBwZW5kKHJvdW5kVG9EZXZpY2VQ
aXhlbChvZmZzZXQsIGRldmljZVNjYWxlRmFjdG9yLCBmYWxzZSkpOwogICAgIH0KLSAgICBpZiAo
YXhpcyA9PSBTY3JvbGxFdmVudEF4aXM6Okhvcml6b250YWwpCisKKyAgICBWZWN0b3I8U2Nyb2xs
T2Zmc2V0UmFuZ2U8ZmxvYXQ+PiBzbmFwT2Zmc2V0UmFuZ2VzQXNGbG9hdDsKKyAgICBpZiAoc25h
cE9mZnNldFJhbmdlcykgeworICAgICAgICBzbmFwT2Zmc2V0UmFuZ2VzQXNGbG9hdC5yZXNlcnZl
SW5pdGlhbENhcGFjaXR5KHNuYXBPZmZzZXRSYW5nZXMtPnNpemUoKSk7CisgICAgICAgIGZvciAo
YXV0byYgcmFuZ2UgOiAqc25hcE9mZnNldFJhbmdlcykKKyAgICAgICAgICAgIHNuYXBPZmZzZXRS
YW5nZXNBc0Zsb2F0LnVuY2hlY2tlZEFwcGVuZCh7IHJvdW5kVG9EZXZpY2VQaXhlbChyYW5nZS5z
dGFydCwgZGV2aWNlU2NhbGVGYWN0b3IsIGZhbHNlKSwgcm91bmRUb0RldmljZVBpeGVsKHJhbmdl
LmVuZCwgZGV2aWNlU2NhbGVGYWN0b3IsIGZhbHNlKSB9KTsKKyAgICB9CisgICAgaWYgKGF4aXMg
PT0gU2Nyb2xsRXZlbnRBeGlzOjpIb3Jpem9udGFsKSB7CiAgICAgICAgIG5vZGUuc2V0SG9yaXpv
bnRhbFNuYXBPZmZzZXRzKHNuYXBPZmZzZXRzQXNGbG9hdCk7Ci0gICAgZWxzZQorICAgICAgICBu
b2RlLnNldEhvcml6b250YWxTbmFwT2Zmc2V0UmFuZ2VzKHNuYXBPZmZzZXRSYW5nZXNBc0Zsb2F0
KTsKKyAgICB9IGVsc2UgewogICAgICAgICBub2RlLnNldFZlcnRpY2FsU25hcE9mZnNldHMoc25h
cE9mZnNldHNBc0Zsb2F0KTsKKyAgICAgICAgbm9kZS5zZXRWZXJ0aWNhbFNuYXBPZmZzZXRSYW5n
ZXMoc25hcE9mZnNldFJhbmdlc0FzRmxvYXQpOworICAgIH0KIH0KIAogdm9pZCBBc3luY1Njcm9s
bGluZ0Nvb3JkaW5hdG9yOjpzZXRFdmVudFRyYWNraW5nUmVnaW9uc0RpcnR5KCkKQEAgLTUzNyw4
ICs1NDcsOCBAQCB2b2lkIEFzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3I6OnVwZGF0ZU92ZXJmbG93
U2Nyb2xsaW5nTm9kZShTY3JvbGxpbmdOb2RlSUQgbm9kZQogICAgICAgICBub2RlLT5zZXRSZWFj
aGFibGVDb250ZW50c1NpemUoc2Nyb2xsaW5nR2VvbWV0cnktPnJlYWNoYWJsZUNvbnRlbnRTaXpl
KTsKICAgICAgICAgbm9kZS0+c2V0U2Nyb2xsYWJsZUFyZWFTaXplKHNjcm9sbGluZ0dlb21ldHJ5
LT5zY3JvbGxhYmxlQXJlYVNpemUpOwogI2lmIEVOQUJMRShDU1NfU0NST0xMX1NOQVApCi0gICAg
ICAgIHNldFN0YXRlU2Nyb2xsaW5nTm9kZVNuYXBPZmZzZXRzQXNGbG9hdCgqbm9kZSwgU2Nyb2xs
RXZlbnRBeGlzOjpIb3Jpem9udGFsLCAmc2Nyb2xsaW5nR2VvbWV0cnktPmhvcml6b250YWxTbmFw
T2Zmc2V0cywgbV9wYWdlLT5kZXZpY2VTY2FsZUZhY3RvcigpKTsKLSAgICAgICAgc2V0U3RhdGVT
Y3JvbGxpbmdOb2RlU25hcE9mZnNldHNBc0Zsb2F0KCpub2RlLCBTY3JvbGxFdmVudEF4aXM6OlZl
cnRpY2FsLCAmc2Nyb2xsaW5nR2VvbWV0cnktPnZlcnRpY2FsU25hcE9mZnNldHMsIG1fcGFnZS0+
ZGV2aWNlU2NhbGVGYWN0b3IoKSk7CisgICAgICAgIHNldFN0YXRlU2Nyb2xsaW5nTm9kZVNuYXBP
ZmZzZXRzQXNGbG9hdCgqbm9kZSwgU2Nyb2xsRXZlbnRBeGlzOjpIb3Jpem9udGFsLCAmc2Nyb2xs
aW5nR2VvbWV0cnktPmhvcml6b250YWxTbmFwT2Zmc2V0cywgJnNjcm9sbGluZ0dlb21ldHJ5LT5o
b3Jpem9udGFsU25hcE9mZnNldFJhbmdlcywgbV9wYWdlLT5kZXZpY2VTY2FsZUZhY3RvcigpKTsK
KyAgICAgICAgc2V0U3RhdGVTY3JvbGxpbmdOb2RlU25hcE9mZnNldHNBc0Zsb2F0KCpub2RlLCBT
Y3JvbGxFdmVudEF4aXM6OlZlcnRpY2FsLCAmc2Nyb2xsaW5nR2VvbWV0cnktPnZlcnRpY2FsU25h
cE9mZnNldHMsICZzY3JvbGxpbmdHZW9tZXRyeS0+dmVydGljYWxTbmFwT2Zmc2V0UmFuZ2VzLCBt
X3BhZ2UtPmRldmljZVNjYWxlRmFjdG9yKCkpOwogICAgICAgICBub2RlLT5zZXRDdXJyZW50SG9y
aXpvbnRhbFNuYXBQb2ludEluZGV4KHNjcm9sbGluZ0dlb21ldHJ5LT5jdXJyZW50SG9yaXpvbnRh
bFNuYXBQb2ludEluZGV4KTsKICAgICAgICAgbm9kZS0+c2V0Q3VycmVudFZlcnRpY2FsU25hcFBv
aW50SW5kZXgoc2Nyb2xsaW5nR2VvbWV0cnktPmN1cnJlbnRWZXJ0aWNhbFNuYXBQb2ludEluZGV4
KTsKICNlbmRpZgpAQCAtNjgyLDggKzY5Miw4IEBAIGJvb2wgQXN5bmNTY3JvbGxpbmdDb29yZGlu
YXRvcjo6aXNTY3JvbGxTbmFwSW5Qcm9ncmVzcygpIGNvbnN0CiB2b2lkIEFzeW5jU2Nyb2xsaW5n
Q29vcmRpbmF0b3I6OnVwZGF0ZVNjcm9sbFNuYXBQcm9wZXJ0aWVzV2l0aEZyYW1lVmlldyhjb25z
dCBGcmFtZVZpZXcmIGZyYW1lVmlldykKIHsKICAgICBpZiAoYXV0byBub2RlID0gZG93bmNhc3Q8
U2Nyb2xsaW5nU3RhdGVGcmFtZVNjcm9sbGluZ05vZGU+KG1fc2Nyb2xsaW5nU3RhdGVUcmVlLT5z
dGF0ZU5vZGVGb3JJRChmcmFtZVZpZXcuc2Nyb2xsTGF5ZXJJRCgpKSkpIHsKLSAgICAgICAgc2V0
U3RhdGVTY3JvbGxpbmdOb2RlU25hcE9mZnNldHNBc0Zsb2F0KCpub2RlLCBTY3JvbGxFdmVudEF4
aXM6Okhvcml6b250YWwsIGZyYW1lVmlldy5ob3Jpem9udGFsU25hcE9mZnNldHMoKSwgbV9wYWdl
LT5kZXZpY2VTY2FsZUZhY3RvcigpKTsKLSAgICAgICAgc2V0U3RhdGVTY3JvbGxpbmdOb2RlU25h
cE9mZnNldHNBc0Zsb2F0KCpub2RlLCBTY3JvbGxFdmVudEF4aXM6OlZlcnRpY2FsLCBmcmFtZVZp
ZXcudmVydGljYWxTbmFwT2Zmc2V0cygpLCBtX3BhZ2UtPmRldmljZVNjYWxlRmFjdG9yKCkpOwor
ICAgICAgICBzZXRTdGF0ZVNjcm9sbGluZ05vZGVTbmFwT2Zmc2V0c0FzRmxvYXQoKm5vZGUsIFNj
cm9sbEV2ZW50QXhpczo6SG9yaXpvbnRhbCwgZnJhbWVWaWV3Lmhvcml6b250YWxTbmFwT2Zmc2V0
cygpLCBmcmFtZVZpZXcuaG9yaXpvbnRhbFNuYXBPZmZzZXRSYW5nZXMoKSwgbV9wYWdlLT5kZXZp
Y2VTY2FsZUZhY3RvcigpKTsKKyAgICAgICAgc2V0U3RhdGVTY3JvbGxpbmdOb2RlU25hcE9mZnNl
dHNBc0Zsb2F0KCpub2RlLCBTY3JvbGxFdmVudEF4aXM6OlZlcnRpY2FsLCBmcmFtZVZpZXcudmVy
dGljYWxTbmFwT2Zmc2V0cygpLCBmcmFtZVZpZXcudmVydGljYWxTbmFwT2Zmc2V0UmFuZ2VzKCks
IG1fcGFnZS0+ZGV2aWNlU2NhbGVGYWN0b3IoKSk7CiAgICAgICAgIG5vZGUtPnNldEN1cnJlbnRI
b3Jpem9udGFsU25hcFBvaW50SW5kZXgoZnJhbWVWaWV3LmN1cnJlbnRIb3Jpem9udGFsU25hcFBv
aW50SW5kZXgoKSk7CiAgICAgICAgIG5vZGUtPnNldEN1cnJlbnRWZXJ0aWNhbFNuYXBQb2ludElu
ZGV4KGZyYW1lVmlldy5jdXJyZW50VmVydGljYWxTbmFwUG9pbnRJbmRleCgpKTsKICAgICB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9BeGlzU2Nyb2xsU25hcE9m
ZnNldHMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvQXhpc1Njcm9sbFNuYXBP
ZmZzZXRzLmNwcAppbmRleCA0NjljMDhmZGU0NjQ4ZWNhOWM1MzUzMjA3OWM5ZGRmOGZjYzY2YzM4
Li43NGZhNmFkMTJjOTdmNjIyZTJhNzg1OWM3YTk5YTZmZmMzZjFlMTlkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9BeGlzU2Nyb2xsU25hcE9mZnNldHMuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL0F4aXNTY3JvbGxTbmFwT2Zmc2V0cy5j
cHAKQEAgLTg0LDYgKzg0LDE2IEBAIHN0YXRpYyBTdHJpbmcgc25hcE9mZnNldHNUb1N0cmluZyhj
b25zdCBWZWN0b3I8TGF5b3V0VW5pdD4mIHNuYXBPZmZzZXRzKQogICAgIHJldHVybiBzLnRvU3Ry
aW5nKCk7CiB9CiAKK3N0YXRpYyBTdHJpbmcgc25hcE9mZnNldFJhbmdlc1RvU3RyaW5nKGNvbnN0
IFZlY3RvcjxTY3JvbGxPZmZzZXRSYW5nZTxMYXlvdXRVbml0Pj4mIHJhbmdlcykKK3sKKyAgICBT
dHJpbmdCdWlsZGVyIHM7CisgICAgcy5hcHBlbmQoIlsgIik7CisgICAgZm9yIChhdXRvIHJhbmdl
IDogcmFuZ2VzKQorICAgICAgICBzLmFwcGVuZChTdHJpbmc6OmZvcm1hdCgiKCUuMWYsICUuMWYp
ICIsIHJhbmdlLnN0YXJ0LnRvRmxvYXQoKSwgcmFuZ2UuZW5kLnRvRmxvYXQoKSkpOworICAgIHMu
YXBwZW5kKCJdIik7CisgICAgcmV0dXJuIHMudG9TdHJpbmcoKS51dGY4KCkuZGF0YSgpOworfQor
CiBzdGF0aWMgU3RyaW5nIHNuYXBQb3J0T3JBcmVhVG9TdHJpbmcoY29uc3QgTGF5b3V0UmVjdCYg
cmVjdCkKIHsKICAgICByZXR1cm4gU3RyaW5nOjpmb3JtYXQoInt7JS4xZiwgJS4xZn0geyUuMWYs
ICUuMWZ9fSIsIHJlY3QueCgpLnRvRmxvYXQoKSwgcmVjdC55KCkudG9GbG9hdCgpLCByZWN0Lndp
ZHRoKCkudG9GbG9hdCgpLCByZWN0LmhlaWdodCgpLnRvRmxvYXQoKSk7CkBAIC05MSw2ICsxMDEs
ODkgQEAgc3RhdGljIFN0cmluZyBzbmFwUG9ydE9yQXJlYVRvU3RyaW5nKGNvbnN0IExheW91dFJl
Y3QmIHJlY3QpCiAKICNlbmRpZgogCit0ZW1wbGF0ZSA8dHlwZW5hbWUgTGF5b3V0VHlwZT4KK3N0
YXRpYyB2b2lkIGluZGljZXNPZk5lYXJlc3RTbmFwT2Zmc2V0UmFuZ2VzKExheW91dFR5cGUgb2Zm
c2V0LCBjb25zdCBWZWN0b3I8U2Nyb2xsT2Zmc2V0UmFuZ2U8TGF5b3V0VHlwZT4+JiBzbmFwT2Zm
c2V0UmFuZ2VzLCB1bnNpZ25lZCYgbG93ZXJJbmRleCwgdW5zaWduZWQmIHVwcGVySW5kZXgpCit7
CisgICAgaWYgKHNuYXBPZmZzZXRSYW5nZXMuaXNFbXB0eSgpKSB7CisgICAgICAgIGxvd2VySW5k
ZXggPSBpbnZhbGlkU25hcE9mZnNldEluZGV4OworICAgICAgICB1cHBlckluZGV4ID0gaW52YWxp
ZFNuYXBPZmZzZXRJbmRleDsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGludCBsb3dl
ckluZGV4QXNJbnQgPSAtMTsKKyAgICBpbnQgdXBwZXJJbmRleEFzSW50ID0gc25hcE9mZnNldFJh
bmdlcy5zaXplKCk7CisgICAgZG8geworICAgICAgICBpbnQgbWlkZGxlSW5kZXggPSAobG93ZXJJ
bmRleEFzSW50ICsgdXBwZXJJbmRleEFzSW50KSAvIDI7CisgICAgICAgIGF1dG8mIHJhbmdlID0g
c25hcE9mZnNldFJhbmdlc1ttaWRkbGVJbmRleF07CisgICAgICAgIGlmIChyYW5nZS5zdGFydCA8
IG9mZnNldCAmJiBvZmZzZXQgPCByYW5nZS5lbmQpIHsKKyAgICAgICAgICAgIGxvd2VySW5kZXhB
c0ludCA9IG1pZGRsZUluZGV4OworICAgICAgICAgICAgdXBwZXJJbmRleEFzSW50ID0gbWlkZGxl
SW5kZXg7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChvZmZz
ZXQgPiByYW5nZS5lbmQpCisgICAgICAgICAgICBsb3dlckluZGV4QXNJbnQgPSBtaWRkbGVJbmRl
eDsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgdXBwZXJJbmRleEFzSW50ID0gbWlkZGxlSW5k
ZXg7CisgICAgfSB3aGlsZSAobG93ZXJJbmRleEFzSW50IDwgdXBwZXJJbmRleEFzSW50IC0gMSk7
CisKKyAgICBpZiAob2Zmc2V0IDw9IHNuYXBPZmZzZXRSYW5nZXMuZmlyc3QoKS5zdGFydCkKKyAg
ICAgICAgbG93ZXJJbmRleCA9IGludmFsaWRTbmFwT2Zmc2V0SW5kZXg7CisgICAgZWxzZQorICAg
ICAgICBsb3dlckluZGV4ID0gbG93ZXJJbmRleEFzSW50OworCisgICAgaWYgKG9mZnNldCA+PSBz
bmFwT2Zmc2V0UmFuZ2VzLmxhc3QoKS5lbmQpCisgICAgICAgIHVwcGVySW5kZXggPSBpbnZhbGlk
U25hcE9mZnNldEluZGV4OworICAgIGVsc2UKKyAgICAgICAgdXBwZXJJbmRleCA9IHVwcGVySW5k
ZXhBc0ludDsKK30KKwordGVtcGxhdGUgPHR5cGVuYW1lIExheW91dFR5cGU+CitzdGF0aWMgdm9p
ZCBpbmRpY2VzT2ZOZWFyZXN0U25hcE9mZnNldHMoTGF5b3V0VHlwZSBvZmZzZXQsIGNvbnN0IFZl
Y3RvcjxMYXlvdXRUeXBlPiYgc25hcE9mZnNldHMsIHVuc2lnbmVkJiBsb3dlckluZGV4LCB1bnNp
Z25lZCYgdXBwZXJJbmRleCkKK3sKKyAgICBsb3dlckluZGV4ID0gMDsKKyAgICB1cHBlckluZGV4
ID0gc25hcE9mZnNldHMuc2l6ZSgpIC0gMTsKKyAgICB3aGlsZSAobG93ZXJJbmRleCA8IHVwcGVy
SW5kZXggLSAxKSB7CisgICAgICAgIGludCBtaWRkbGVJbmRleCA9IChsb3dlckluZGV4ICsgdXBw
ZXJJbmRleCkgLyAyOworICAgICAgICBpZiAob2Zmc2V0IDwgc25hcE9mZnNldHNbbWlkZGxlSW5k
ZXhdKQorICAgICAgICAgICAgdXBwZXJJbmRleCA9IG1pZGRsZUluZGV4OworICAgICAgICBlbHNl
IGlmIChvZmZzZXQgPiBzbmFwT2Zmc2V0c1ttaWRkbGVJbmRleF0pCisgICAgICAgICAgICBsb3dl
ckluZGV4ID0gbWlkZGxlSW5kZXg7CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgdXBwZXJJ
bmRleCA9IG1pZGRsZUluZGV4OworICAgICAgICAgICAgbG93ZXJJbmRleCA9IG1pZGRsZUluZGV4
OworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICB9Cit9CisKK3N0YXRpYyB2b2lk
IGFkanVzdEF4aXNTbmFwT2Zmc2V0c0ZvclNjcm9sbEV4dGVudChWZWN0b3I8TGF5b3V0VW5pdD4m
IHNuYXBPZmZzZXRzLCBmbG9hdCBtYXhTY3JvbGxFeHRlbnQpCit7CisgICAgaWYgKHNuYXBPZmZz
ZXRzLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgc3RkOjpzb3J0KHNuYXBPZmZz
ZXRzLmJlZ2luKCksIHNuYXBPZmZzZXRzLmVuZCgpKTsKKyAgICBpZiAoc25hcE9mZnNldHMubGFz
dCgpICE9IG1heFNjcm9sbEV4dGVudCkKKyAgICAgICAgc25hcE9mZnNldHMuYXBwZW5kKG1heFNj
cm9sbEV4dGVudCk7CisgICAgaWYgKHNuYXBPZmZzZXRzLmZpcnN0KCkpCisgICAgICAgIHNuYXBP
ZmZzZXRzLmluc2VydCgwLCAwKTsKK30KKworc3RhdGljIHZvaWQgY29tcHV0ZUF4aXNQcm94aW1p
dHlTbmFwT2Zmc2V0UmFuZ2VzKGNvbnN0IFZlY3RvcjxMYXlvdXRVbml0PiYgc25hcE9mZnNldHMs
IFZlY3RvcjxTY3JvbGxPZmZzZXRSYW5nZTxMYXlvdXRVbml0Pj4mIG9mZnNldFJhbmdlcywgTGF5
b3V0VW5pdCBzY3JvbGxQb3J0QXhpc0xlbmd0aCkKK3sKKyAgICBzdGF0aWMgY29uc3QgZmxvYXQg
cmF0aW9PZlNjcm9sbFBvcnRBeGlzTGVuZ3RoVG9CZUNvbnNpZGVyZWRGb3JQcm94aW1pdHkgPSAw
LjM7CisgICAgaWYgKHNuYXBPZmZzZXRzLnNpemUoKSA8IDIpCisgICAgICAgIHJldHVybjsKKwor
ICAgIExheW91dFVuaXQgcHJveGltaXR5RGlzdGFuY2UgPSByYXRpb09mU2Nyb2xsUG9ydEF4aXNM
ZW5ndGhUb0JlQ29uc2lkZXJlZEZvclByb3hpbWl0eSAqIHNjcm9sbFBvcnRBeGlzTGVuZ3RoOwor
ICAgIGZvciAoc2l6ZV90IGluZGV4ID0gMTsgaW5kZXggPCBzbmFwT2Zmc2V0cy5zaXplKCk7ICsr
aW5kZXgpIHsKKyAgICAgICAgYXV0byBzdGFydE9mZnNldCA9IHNuYXBPZmZzZXRzW2luZGV4IC0g
MV0gKyBwcm94aW1pdHlEaXN0YW5jZTsKKyAgICAgICAgYXV0byBlbmRPZmZzZXQgPSBzbmFwT2Zm
c2V0c1tpbmRleF0gLSBwcm94aW1pdHlEaXN0YW5jZTsKKyAgICAgICAgaWYgKHN0YXJ0T2Zmc2V0
IDwgZW5kT2Zmc2V0KQorICAgICAgICAgICAgb2Zmc2V0UmFuZ2VzLmFwcGVuZCh7IHN0YXJ0T2Zm
c2V0LCBlbmRPZmZzZXQgfSk7CisgICAgfQorfQorCiB2b2lkIHVwZGF0ZVNuYXBPZmZzZXRzRm9y
U2Nyb2xsYWJsZUFyZWEoU2Nyb2xsYWJsZUFyZWEmIHNjcm9sbGFibGVBcmVhLCBIVE1MRWxlbWVu
dCYgc2Nyb2xsaW5nRWxlbWVudCwgY29uc3QgUmVuZGVyQm94JiBzY3JvbGxpbmdFbGVtZW50Qm94
LCBjb25zdCBSZW5kZXJTdHlsZSYgc2Nyb2xsaW5nRWxlbWVudFN0eWxlKQogewogICAgIGF1dG8q
IHNjcm9sbENvbnRhaW5lciA9IHNjcm9sbGluZ0VsZW1lbnQucmVuZGVyZXIoKTsKQEAgLTEwMSw4
ICsxOTQsMTAgQEAgdm9pZCB1cGRhdGVTbmFwT2Zmc2V0c0ZvclNjcm9sbGFibGVBcmVhKFNjcm9s
bGFibGVBcmVhJiBzY3JvbGxhYmxlQXJlYSwgSFRNTEVsZW0KICAgICAgICAgcmV0dXJuOwogICAg
IH0KIAotICAgIGF1dG8gdmVydGljYWxTbmFwT2Zmc2V0cyA9IHN0ZDo6bWFrZV91bmlxdWU8VmVj
dG9yPExheW91dFVuaXQ+PigpOwotICAgIGF1dG8gaG9yaXpvbnRhbFNuYXBPZmZzZXRzID0gc3Rk
OjptYWtlX3VuaXF1ZTxWZWN0b3I8TGF5b3V0VW5pdD4+KCk7CisgICAgVmVjdG9yPExheW91dFVu
aXQ+IHZlcnRpY2FsU25hcE9mZnNldHM7CisgICAgVmVjdG9yPExheW91dFVuaXQ+IGhvcml6b250
YWxTbmFwT2Zmc2V0czsKKyAgICBWZWN0b3I8U2Nyb2xsT2Zmc2V0UmFuZ2U8TGF5b3V0VW5pdD4+
IHZlcnRpY2FsU25hcE9mZnNldFJhbmdlczsKKyAgICBWZWN0b3I8U2Nyb2xsT2Zmc2V0UmFuZ2U8
TGF5b3V0VW5pdD4+IGhvcml6b250YWxTbmFwT2Zmc2V0UmFuZ2VzOwogICAgIEhhc2hTZXQ8Zmxv
YXQ+IHNlZW5WZXJ0aWNhbFNuYXBPZmZzZXRzOwogICAgIEhhc2hTZXQ8ZmxvYXQ+IHNlZW5Ib3Jp
em9udGFsU25hcE9mZnNldHM7CiAgICAgYm9vbCBoYXNIb3Jpem9udGFsU25hcE9mZnNldHMgPSBz
Y3JvbGxTbmFwVHlwZS5heGlzID09IFNjcm9sbFNuYXBBeGlzOjpCb3RoIHx8IHNjcm9sbFNuYXBU
eXBlLmF4aXMgPT0gU2Nyb2xsU25hcEF4aXM6OlhBeGlzIHx8IHNjcm9sbFNuYXBUeXBlLmF4aXMg
PT0gU2Nyb2xsU25hcEF4aXM6OklubGluZTsKQEAgLTEzMyw0NSArMjI4LDEwOCBAQCB2b2lkIHVw
ZGF0ZVNuYXBPZmZzZXRzRm9yU2Nyb2xsYWJsZUFyZWEoU2Nyb2xsYWJsZUFyZWEmIHNjcm9sbGFi
bGVBcmVhLCBIVE1MRWxlbQogICAgICAgICAgICAgYXV0byBhYnNvbHV0ZVNjcm9sbE9mZnNldCA9
IGNsYW1wVG88TGF5b3V0VW5pdD4oY29tcHV0ZVNjcm9sbFNuYXBBbGlnbk9mZnNldChzY3JvbGxT
bmFwQXJlYS54KCksIHNjcm9sbFNuYXBBcmVhLndpZHRoKCksIGFsaWdubWVudC54KSAtIGNvbXB1
dGVTY3JvbGxTbmFwQWxpZ25PZmZzZXQoc2Nyb2xsU25hcFBvcnQueCgpLCBzY3JvbGxTbmFwUG9y
dC53aWR0aCgpLCBhbGlnbm1lbnQueCksIDAsIG1heFNjcm9sbExlZnQpOwogICAgICAgICAgICAg
aWYgKCFzZWVuSG9yaXpvbnRhbFNuYXBPZmZzZXRzLmNvbnRhaW5zKGFic29sdXRlU2Nyb2xsT2Zm
c2V0KSkgewogICAgICAgICAgICAgICAgIHNlZW5Ib3Jpem9udGFsU25hcE9mZnNldHMuYWRkKGFi
c29sdXRlU2Nyb2xsT2Zmc2V0KTsKLSAgICAgICAgICAgICAgICBob3Jpem9udGFsU25hcE9mZnNl
dHMtPmFwcGVuZChhYnNvbHV0ZVNjcm9sbE9mZnNldCk7CisgICAgICAgICAgICAgICAgaG9yaXpv
bnRhbFNuYXBPZmZzZXRzLmFwcGVuZChhYnNvbHV0ZVNjcm9sbE9mZnNldCk7CiAgICAgICAgICAg
ICB9CiAgICAgICAgIH0KICAgICAgICAgaWYgKGhhc1ZlcnRpY2FsU25hcE9mZnNldHMgJiYgYWxp
Z25tZW50LnkgIT0gU2Nyb2xsU25hcEF4aXNBbGlnblR5cGU6Ok5vbmUpIHsKICAgICAgICAgICAg
IGF1dG8gYWJzb2x1dGVTY3JvbGxPZmZzZXQgPSBjbGFtcFRvPExheW91dFVuaXQ+KGNvbXB1dGVT
Y3JvbGxTbmFwQWxpZ25PZmZzZXQoc2Nyb2xsU25hcEFyZWEueSgpLCBzY3JvbGxTbmFwQXJlYS5o
ZWlnaHQoKSwgYWxpZ25tZW50LnkpIC0gY29tcHV0ZVNjcm9sbFNuYXBBbGlnbk9mZnNldChzY3Jv
bGxTbmFwUG9ydC55KCksIHNjcm9sbFNuYXBQb3J0LmhlaWdodCgpLCBhbGlnbm1lbnQueSksIDAs
IG1heFNjcm9sbFRvcCk7CiAgICAgICAgICAgICBpZiAoIXNlZW5WZXJ0aWNhbFNuYXBPZmZzZXRz
LmNvbnRhaW5zKGFic29sdXRlU2Nyb2xsT2Zmc2V0KSkgewogICAgICAgICAgICAgICAgIHNlZW5W
ZXJ0aWNhbFNuYXBPZmZzZXRzLmFkZChhYnNvbHV0ZVNjcm9sbE9mZnNldCk7Ci0gICAgICAgICAg
ICAgICAgdmVydGljYWxTbmFwT2Zmc2V0cy0+YXBwZW5kKGFic29sdXRlU2Nyb2xsT2Zmc2V0KTsK
KyAgICAgICAgICAgICAgICB2ZXJ0aWNhbFNuYXBPZmZzZXRzLmFwcGVuZChhYnNvbHV0ZVNjcm9s
bE9mZnNldCk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9CiAKLSAgICBzdGQ6OnNv
cnQoaG9yaXpvbnRhbFNuYXBPZmZzZXRzLT5iZWdpbigpLCBob3Jpem9udGFsU25hcE9mZnNldHMt
PmVuZCgpKTsKLSAgICBpZiAoaG9yaXpvbnRhbFNuYXBPZmZzZXRzLT5zaXplKCkpIHsKLSAgICAg
ICAgaWYgKGhvcml6b250YWxTbmFwT2Zmc2V0cy0+bGFzdCgpICE9IG1heFNjcm9sbExlZnQpCi0g
ICAgICAgICAgICBob3Jpem9udGFsU25hcE9mZnNldHMtPmFwcGVuZChtYXhTY3JvbGxMZWZ0KTsK
LSAgICAgICAgaWYgKGhvcml6b250YWxTbmFwT2Zmc2V0cy0+Zmlyc3QoKSkKLSAgICAgICAgICAg
IGhvcml6b250YWxTbmFwT2Zmc2V0cy0+aW5zZXJ0KDAsIDApOworICAgIGlmICghaG9yaXpvbnRh
bFNuYXBPZmZzZXRzLmlzRW1wdHkoKSkgeworICAgICAgICBhZGp1c3RBeGlzU25hcE9mZnNldHNG
b3JTY3JvbGxFeHRlbnQoaG9yaXpvbnRhbFNuYXBPZmZzZXRzLCBtYXhTY3JvbGxMZWZ0KTsKICNp
ZiAhTE9HX0RJU0FCTEVECi0gICAgICAgIExPRyhTY3JvbGxpbmcsICIgPT4gQ29tcHV0ZWQgaG9y
aXpvbnRhbCBzY3JvbGwgc25hcCBvZmZzZXRzOiAlcyIsIHNuYXBPZmZzZXRzVG9TdHJpbmcoKmhv
cml6b250YWxTbmFwT2Zmc2V0cykudXRmOCgpLmRhdGEoKSk7CisgICAgICAgIExPRyhTY3JvbGxp
bmcsICIgPT4gQ29tcHV0ZWQgaG9yaXpvbnRhbCBzY3JvbGwgc25hcCBvZmZzZXRzOiAlcyIsIHNu
YXBPZmZzZXRzVG9TdHJpbmcoaG9yaXpvbnRhbFNuYXBPZmZzZXRzKS51dGY4KCkuZGF0YSgpKTsK
KyAgICAgICAgTE9HKFNjcm9sbGluZywgIiA9PiBDb21wdXRlZCBob3Jpem9udGFsIHNjcm9sbCBz
bmFwIG9mZnNldCByYW5nZXM6ICVzIiwgc25hcE9mZnNldFJhbmdlc1RvU3RyaW5nKGhvcml6b250
YWxTbmFwT2Zmc2V0UmFuZ2VzKS51dGY4KCkuZGF0YSgpKTsKICNlbmRpZgotICAgICAgICBzY3Jv
bGxhYmxlQXJlYS5zZXRIb3Jpem9udGFsU25hcE9mZnNldHMoV1RGTW92ZShob3Jpem9udGFsU25h
cE9mZnNldHMpKTsKKyAgICAgICAgaWYgKHNjcm9sbFNuYXBUeXBlLnN0cmljdG5lc3MgPT0gU2Ny
b2xsU25hcFN0cmljdG5lc3M6OlByb3hpbWl0eSkKKyAgICAgICAgICAgIGNvbXB1dGVBeGlzUHJv
eGltaXR5U25hcE9mZnNldFJhbmdlcyhob3Jpem9udGFsU25hcE9mZnNldHMsIGhvcml6b250YWxT
bmFwT2Zmc2V0UmFuZ2VzLCBzY3JvbGxTbmFwUG9ydC53aWR0aCgpKTsKKworICAgICAgICBzY3Jv
bGxhYmxlQXJlYS5zZXRIb3Jpem9udGFsU25hcE9mZnNldHMoaG9yaXpvbnRhbFNuYXBPZmZzZXRz
KTsKKyAgICAgICAgc2Nyb2xsYWJsZUFyZWEuc2V0SG9yaXpvbnRhbFNuYXBPZmZzZXRSYW5nZXMo
aG9yaXpvbnRhbFNuYXBPZmZzZXRSYW5nZXMpOwogICAgIH0gZWxzZQogICAgICAgICBzY3JvbGxh
YmxlQXJlYS5jbGVhckhvcml6b250YWxTbmFwT2Zmc2V0cygpOwogCi0gICAgc3RkOjpzb3J0KHZl
cnRpY2FsU25hcE9mZnNldHMtPmJlZ2luKCksIHZlcnRpY2FsU25hcE9mZnNldHMtPmVuZCgpKTsK
LSAgICBpZiAodmVydGljYWxTbmFwT2Zmc2V0cy0+c2l6ZSgpKSB7Ci0gICAgICAgIGlmICh2ZXJ0
aWNhbFNuYXBPZmZzZXRzLT5sYXN0KCkgIT0gbWF4U2Nyb2xsVG9wKQotICAgICAgICAgICAgdmVy
dGljYWxTbmFwT2Zmc2V0cy0+YXBwZW5kKG1heFNjcm9sbFRvcCk7Ci0gICAgICAgIGlmICh2ZXJ0
aWNhbFNuYXBPZmZzZXRzLT5maXJzdCgpKQotICAgICAgICAgICAgdmVydGljYWxTbmFwT2Zmc2V0
cy0+aW5zZXJ0KDAsIDApOworICAgIGlmICghdmVydGljYWxTbmFwT2Zmc2V0cy5pc0VtcHR5KCkp
IHsKKyAgICAgICAgYWRqdXN0QXhpc1NuYXBPZmZzZXRzRm9yU2Nyb2xsRXh0ZW50KHZlcnRpY2Fs
U25hcE9mZnNldHMsIG1heFNjcm9sbFRvcCk7CiAjaWYgIUxPR19ESVNBQkxFRAotICAgICAgICBM
T0coU2Nyb2xsaW5nLCAiID0+IENvbXB1dGVkIHZlcnRpY2FsIHNjcm9sbCBzbmFwIG9mZnNldHM6
ICVzIiwgc25hcE9mZnNldHNUb1N0cmluZygqdmVydGljYWxTbmFwT2Zmc2V0cykudXRmOCgpLmRh
dGEoKSk7CisgICAgICAgIExPRyhTY3JvbGxpbmcsICIgPT4gQ29tcHV0ZWQgdmVydGljYWwgc2Ny
b2xsIHNuYXAgb2Zmc2V0czogJXMiLCBzbmFwT2Zmc2V0c1RvU3RyaW5nKHZlcnRpY2FsU25hcE9m
ZnNldHMpLnV0ZjgoKS5kYXRhKCkpOworICAgICAgICBMT0coU2Nyb2xsaW5nLCAiID0+IENvbXB1
dGVkIHZlcnRpY2FsIHNjcm9sbCBzbmFwIG9mZnNldCByYW5nZXM6ICVzIiwgc25hcE9mZnNldFJh
bmdlc1RvU3RyaW5nKHZlcnRpY2FsU25hcE9mZnNldFJhbmdlcykudXRmOCgpLmRhdGEoKSk7CiAj
ZW5kaWYKLSAgICAgICAgc2Nyb2xsYWJsZUFyZWEuc2V0VmVydGljYWxTbmFwT2Zmc2V0cyhXVEZN
b3ZlKHZlcnRpY2FsU25hcE9mZnNldHMpKTsKKyAgICAgICAgaWYgKHNjcm9sbFNuYXBUeXBlLnN0
cmljdG5lc3MgPT0gU2Nyb2xsU25hcFN0cmljdG5lc3M6OlByb3hpbWl0eSkKKyAgICAgICAgICAg
IGNvbXB1dGVBeGlzUHJveGltaXR5U25hcE9mZnNldFJhbmdlcyh2ZXJ0aWNhbFNuYXBPZmZzZXRz
LCB2ZXJ0aWNhbFNuYXBPZmZzZXRSYW5nZXMsIHNjcm9sbFNuYXBQb3J0LmhlaWdodCgpKTsKKwor
ICAgICAgICBzY3JvbGxhYmxlQXJlYS5zZXRWZXJ0aWNhbFNuYXBPZmZzZXRzKHZlcnRpY2FsU25h
cE9mZnNldHMpOworICAgICAgICBzY3JvbGxhYmxlQXJlYS5zZXRWZXJ0aWNhbFNuYXBPZmZzZXRS
YW5nZXModmVydGljYWxTbmFwT2Zmc2V0UmFuZ2VzKTsKICAgICB9IGVsc2UKICAgICAgICAgc2Ny
b2xsYWJsZUFyZWEuY2xlYXJWZXJ0aWNhbFNuYXBPZmZzZXRzKCk7CiB9CiAKK3RlbXBsYXRlIDx0
eXBlbmFtZSBMYXlvdXRUeXBlPgorTGF5b3V0VHlwZSBjbG9zZXN0U25hcE9mZnNldChjb25zdCBW
ZWN0b3I8TGF5b3V0VHlwZT4mIHNuYXBPZmZzZXRzLCBjb25zdCBWZWN0b3I8U2Nyb2xsT2Zmc2V0
UmFuZ2U8TGF5b3V0VHlwZT4+JiBzbmFwT2Zmc2V0UmFuZ2VzLCBMYXlvdXRUeXBlIHNjcm9sbERl
c3RpbmF0aW9uLCBmbG9hdCB2ZWxvY2l0eSwgdW5zaWduZWQmIGFjdGl2ZVNuYXBJbmRleCkKK3sK
KyAgICBBU1NFUlQoc25hcE9mZnNldHMuc2l6ZSgpKTsKKyAgICBhY3RpdmVTbmFwSW5kZXggPSAw
OworCisgICAgdW5zaWduZWQgbG93ZXJTbmFwT2Zmc2V0UmFuZ2VJbmRleDsKKyAgICB1bnNpZ25l
ZCB1cHBlclNuYXBPZmZzZXRSYW5nZUluZGV4OworICAgIGluZGljZXNPZk5lYXJlc3RTbmFwT2Zm
c2V0UmFuZ2VzPExheW91dFR5cGU+KHNjcm9sbERlc3RpbmF0aW9uLCBzbmFwT2Zmc2V0UmFuZ2Vz
LCBsb3dlclNuYXBPZmZzZXRSYW5nZUluZGV4LCB1cHBlclNuYXBPZmZzZXRSYW5nZUluZGV4KTsK
KyAgICBpZiAobG93ZXJTbmFwT2Zmc2V0UmFuZ2VJbmRleCA9PSB1cHBlclNuYXBPZmZzZXRSYW5n
ZUluZGV4ICYmIHVwcGVyU25hcE9mZnNldFJhbmdlSW5kZXggIT0gaW52YWxpZFNuYXBPZmZzZXRJ
bmRleCkgeworICAgICAgICBhY3RpdmVTbmFwSW5kZXggPSBpbnZhbGlkU25hcE9mZnNldEluZGV4
OworICAgICAgICByZXR1cm4gc2Nyb2xsRGVzdGluYXRpb247CisgICAgfQorCisgICAgaWYgKHNj
cm9sbERlc3RpbmF0aW9uIDw9IHNuYXBPZmZzZXRzLmZpcnN0KCkpCisgICAgICAgIHJldHVybiBz
bmFwT2Zmc2V0cy5maXJzdCgpOworCisgICAgYWN0aXZlU25hcEluZGV4ID0gc25hcE9mZnNldHMu
c2l6ZSgpIC0gMTsKKyAgICBpZiAoc2Nyb2xsRGVzdGluYXRpb24gPj0gc25hcE9mZnNldHMubGFz
dCgpKQorICAgICAgICByZXR1cm4gc25hcE9mZnNldHMubGFzdCgpOworCisgICAgdW5zaWduZWQg
bG93ZXJJbmRleDsKKyAgICB1bnNpZ25lZCB1cHBlckluZGV4OworICAgIGluZGljZXNPZk5lYXJl
c3RTbmFwT2Zmc2V0czxMYXlvdXRUeXBlPihzY3JvbGxEZXN0aW5hdGlvbiwgc25hcE9mZnNldHMs
IGxvd2VySW5kZXgsIHVwcGVySW5kZXgpOworICAgIExheW91dFR5cGUgbG93ZXJTbmFwUG9zaXRp
b24gPSBzbmFwT2Zmc2V0c1tsb3dlckluZGV4XTsKKyAgICBMYXlvdXRUeXBlIHVwcGVyU25hcFBv
c2l0aW9uID0gc25hcE9mZnNldHNbdXBwZXJJbmRleF07CisgICAgaWYgKCFzdGQ6OmFicyh2ZWxv
Y2l0eSkpIHsKKyAgICAgICAgYm9vbCBpc0Nsb3NlclRvTG93ZXJTbmFwUG9zaXRpb24gPSBzY3Jv
bGxEZXN0aW5hdGlvbiAtIGxvd2VyU25hcFBvc2l0aW9uIDw9IHVwcGVyU25hcFBvc2l0aW9uIC0g
c2Nyb2xsRGVzdGluYXRpb247CisgICAgICAgIGFjdGl2ZVNuYXBJbmRleCA9IGlzQ2xvc2VyVG9M
b3dlclNuYXBQb3NpdGlvbiA/IGxvd2VySW5kZXggOiB1cHBlckluZGV4OworICAgICAgICByZXR1
cm4gaXNDbG9zZXJUb0xvd2VyU25hcFBvc2l0aW9uID8gbG93ZXJTbmFwUG9zaXRpb24gOiB1cHBl
clNuYXBQb3NpdGlvbjsKKyAgICB9CisKKyAgICAvLyBOb256ZXJvIHZlbG9jaXR5IGluZGljYXRl
cyBhIGZsaWNrIGdlc3R1cmUuIEV2ZW4gaWYgYW5vdGhlciBzbmFwIHBvaW50IGlzIGNsb3Nlciwg
d2Ugc2hvdWxkIGNob29zZSB0aGUgb25lIGluIHRoZSBkaXJlY3Rpb24gb2YgdGhlIGZsaWNrIGdl
c3R1cmUKKyAgICAvLyBhcyBsb25nIGFzIGEgc2Nyb2xsIHNuYXAgb2Zmc2V0IHJhbmdlIGRvZXMg
bm90IGxpZSBiZXR3ZWVuIHRoZSBzY3JvbGwgZGVzdGluYXRpb24gYW5kIHRoZSB0YXJnZXRlZCBz
bmFwIG9mZnNldC4KKyAgICBpZiAodmVsb2NpdHkgPCAwKSB7CisgICAgICAgIGlmIChsb3dlclNu
YXBPZmZzZXRSYW5nZUluZGV4ICE9IGludmFsaWRTbmFwT2Zmc2V0SW5kZXggJiYgbG93ZXJTbmFw
UG9zaXRpb24gPCBzbmFwT2Zmc2V0UmFuZ2VzW2xvd2VyU25hcE9mZnNldFJhbmdlSW5kZXhdLmVu
ZCkgeworICAgICAgICAgICAgYWN0aXZlU25hcEluZGV4ID0gdXBwZXJJbmRleDsKKyAgICAgICAg
ICAgIHJldHVybiB1cHBlclNuYXBQb3NpdGlvbjsKKyAgICAgICAgfQorICAgICAgICBhY3RpdmVT
bmFwSW5kZXggPSBsb3dlckluZGV4OworICAgICAgICByZXR1cm4gbG93ZXJTbmFwUG9zaXRpb247
CisgICAgfQorCisgICAgaWYgKHVwcGVyU25hcE9mZnNldFJhbmdlSW5kZXggIT0gaW52YWxpZFNu
YXBPZmZzZXRJbmRleCAmJiBzbmFwT2Zmc2V0UmFuZ2VzW3VwcGVyU25hcE9mZnNldFJhbmdlSW5k
ZXhdLnN0YXJ0IDwgdXBwZXJTbmFwUG9zaXRpb24pIHsKKyAgICAgICAgYWN0aXZlU25hcEluZGV4
ID0gbG93ZXJJbmRleDsKKyAgICAgICAgcmV0dXJuIGxvd2VyU25hcFBvc2l0aW9uOworICAgIH0K
KyAgICBhY3RpdmVTbmFwSW5kZXggPSB1cHBlckluZGV4OworICAgIHJldHVybiB1cHBlclNuYXBQ
b3NpdGlvbjsKK30KKworTGF5b3V0VW5pdCBjbG9zZXN0U25hcE9mZnNldChjb25zdCBWZWN0b3I8
TGF5b3V0VW5pdD4mIHNuYXBPZmZzZXRzLCBjb25zdCBWZWN0b3I8U2Nyb2xsT2Zmc2V0UmFuZ2U8
TGF5b3V0VW5pdD4+JiBzbmFwT2Zmc2V0UmFuZ2VzLCBMYXlvdXRVbml0IHNjcm9sbERlc3RpbmF0
aW9uLCBmbG9hdCB2ZWxvY2l0eSwgdW5zaWduZWQmIGFjdGl2ZVNuYXBJbmRleCkKK3sKKyAgICBy
ZXR1cm4gY2xvc2VzdFNuYXBPZmZzZXQ8TGF5b3V0VW5pdD4oc25hcE9mZnNldHMsIHNuYXBPZmZz
ZXRSYW5nZXMsIHNjcm9sbERlc3RpbmF0aW9uLCB2ZWxvY2l0eSwgYWN0aXZlU25hcEluZGV4KTsK
K30KKworZmxvYXQgY2xvc2VzdFNuYXBPZmZzZXQoY29uc3QgVmVjdG9yPGZsb2F0PiYgc25hcE9m
ZnNldHMsIGNvbnN0IFZlY3RvcjxTY3JvbGxPZmZzZXRSYW5nZTxmbG9hdD4+JiBzbmFwT2Zmc2V0
UmFuZ2VzLCBmbG9hdCBzY3JvbGxEZXN0aW5hdGlvbiwgZmxvYXQgdmVsb2NpdHksIHVuc2lnbmVk
JiBhY3RpdmVTbmFwSW5kZXgpCit7CisgICAgcmV0dXJuIGNsb3Nlc3RTbmFwT2Zmc2V0PGZsb2F0
PihzbmFwT2Zmc2V0cywgc25hcE9mZnNldFJhbmdlcywgc2Nyb2xsRGVzdGluYXRpb24sIHZlbG9j
aXR5LCBhY3RpdmVTbmFwSW5kZXgpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNl
bmRpZiAvLyBDU1NfU0NST0xMX1NOQVAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
c2Nyb2xsaW5nL0F4aXNTY3JvbGxTbmFwT2Zmc2V0cy5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9z
Y3JvbGxpbmcvQXhpc1Njcm9sbFNuYXBPZmZzZXRzLmgKaW5kZXggYjAxY2I3ZDM4OWJjZmY1OWE5
NThkYjE0NzYxZmJiOTU2NDdlMzJkMi4uNmI2YjJiYzg1OTg4NDhiNjVjZmU0OTIwNDMyZjY0ZjU0
ZmExOGVkZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvQXhpc1Nj
cm9sbFNuYXBPZmZzZXRzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvQXhp
c1Njcm9sbFNuYXBPZmZzZXRzLmgKQEAgLTI3LDYgKzI3LDggQEAKIAogI2lmIEVOQUJMRShDU1Nf
U0NST0xMX1NOQVApCiAKKyNpbmNsdWRlICJMYXlvdXRVbml0LmgiCisjaW5jbHVkZSAiU2Nyb2xs
U25hcE9mZnNldHNJbmZvLmgiCiAjaW5jbHVkZSAiU2Nyb2xsVHlwZXMuaCIKICNpbmNsdWRlIDx3
dGYvVmVjdG9yLmg+CiAKQEAgLTM5LDQ3ICs0MSw5IEBAIGNsYXNzIFNjcm9sbGFibGVBcmVhOwog
CiB2b2lkIHVwZGF0ZVNuYXBPZmZzZXRzRm9yU2Nyb2xsYWJsZUFyZWEoU2Nyb2xsYWJsZUFyZWEm
LCBIVE1MRWxlbWVudCYgc2Nyb2xsaW5nRWxlbWVudCwgY29uc3QgUmVuZGVyQm94JiBzY3JvbGxp
bmdFbGVtZW50Qm94LCBjb25zdCBSZW5kZXJTdHlsZSYgc2Nyb2xsaW5nRWxlbWVudFN0eWxlKTsK
IAotLy8gY2xvc2VzdFNuYXBPZmZzZXQgaXMgYSB0ZW1wbGF0ZWQgZnVuY3Rpb24gdGhhdCB0YWtl
cyBpbiBhIFZlY3RvciByZXByZXNlbnRpbmcgc25hcCBvZmZzZXRzIGFzIExheW91dFR5cGVzIChl
LmcuIExheW91dFVuaXQgb3IgZmxvYXQpIGFuZAotLy8gYXMgd2VsbCBhcyBhIFZlbG9jaXR5VHlw
ZSBpbmRpY2F0aW5nIHRoZSB2ZWxvY2l0eSAoZS5nLiBmbG9hdCwgQ0dGbG9hdCwgZXRjLikgVGhp
cyBmdW5jdGlvbiBpcyB0ZW1wbGF0ZWQgYmVjYXVzZSB0aGUgVUkgcHJvY2VzcyB3aWxsIG5vdwot
Ly8gdXNlIHBpeGVsIHNuYXBwZWQgZmxvYXRzIHRvIHJlcHJlc2VudCBzbmFwIG9mZnNldHMgcmF0
aGVyIHRoYW4gTGF5b3V0VW5pdHMuCi10ZW1wbGF0ZSA8dHlwZW5hbWUgTGF5b3V0VHlwZSwgdHlw
ZW5hbWUgVmVsb2NpdHlUeXBlPgotTGF5b3V0VHlwZSBjbG9zZXN0U25hcE9mZnNldChjb25zdCBW
ZWN0b3I8TGF5b3V0VHlwZT4mIHNuYXBPZmZzZXRzLCBMYXlvdXRUeXBlIHNjcm9sbERlc3RpbmF0
aW9uLCBWZWxvY2l0eVR5cGUgdmVsb2NpdHksIHVuc2lnbmVkJiBhY3RpdmVTbmFwSW5kZXgpCi17
Ci0gICAgQVNTRVJUKHNuYXBPZmZzZXRzLnNpemUoKSk7Ci0gICAgYWN0aXZlU25hcEluZGV4ID0g
MDsKLSAgICBpZiAoc2Nyb2xsRGVzdGluYXRpb24gPD0gc25hcE9mZnNldHMuZmlyc3QoKSkKLSAg
ICAgICAgcmV0dXJuIHNuYXBPZmZzZXRzLmZpcnN0KCk7Ci0KLSAgICBhY3RpdmVTbmFwSW5kZXgg
PSBzbmFwT2Zmc2V0cy5zaXplKCkgLSAxOwotICAgIGlmIChzY3JvbGxEZXN0aW5hdGlvbiA+PSBz
bmFwT2Zmc2V0cy5sYXN0KCkpCi0gICAgICAgIHJldHVybiBzbmFwT2Zmc2V0cy5sYXN0KCk7Ci0K
LSAgICBzaXplX3QgbG93ZXJJbmRleCA9IDA7Ci0gICAgc2l6ZV90IHVwcGVySW5kZXggPSBzbmFw
T2Zmc2V0cy5zaXplKCkgLSAxOwotICAgIHdoaWxlIChsb3dlckluZGV4IDwgdXBwZXJJbmRleCAt
IDEpIHsKLSAgICAgICAgc2l6ZV90IG1pZGRsZUluZGV4ID0gKGxvd2VySW5kZXggKyB1cHBlcklu
ZGV4KSAvIDI7Ci0gICAgICAgIGlmIChzY3JvbGxEZXN0aW5hdGlvbiA8IHNuYXBPZmZzZXRzW21p
ZGRsZUluZGV4XSkKLSAgICAgICAgICAgIHVwcGVySW5kZXggPSBtaWRkbGVJbmRleDsKLSAgICAg
ICAgZWxzZSBpZiAoc2Nyb2xsRGVzdGluYXRpb24gPiBzbmFwT2Zmc2V0c1ttaWRkbGVJbmRleF0p
Ci0gICAgICAgICAgICBsb3dlckluZGV4ID0gbWlkZGxlSW5kZXg7Ci0gICAgICAgIGVsc2Ugewot
ICAgICAgICAgICAgdXBwZXJJbmRleCA9IG1pZGRsZUluZGV4OwotICAgICAgICAgICAgbG93ZXJJ
bmRleCA9IG1pZGRsZUluZGV4OwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICB9
Ci0gICAgTGF5b3V0VHlwZSBsb3dlclNuYXBQb3NpdGlvbiA9IHNuYXBPZmZzZXRzW2xvd2VySW5k
ZXhdOwotICAgIExheW91dFR5cGUgdXBwZXJTbmFwUG9zaXRpb24gPSBzbmFwT2Zmc2V0c1t1cHBl
ckluZGV4XTsKLSAgICAvLyBOb256ZXJvIHZlbG9jaXR5IGluZGljYXRlcyBhIGZsaWNrIGdlc3R1
cmUuIEV2ZW4gaWYgYW5vdGhlciBzbmFwIHBvaW50IGlzIGNsb3Nlciwgc25hcCB0byB0aGUgb25l
IGluIHRoZSBkaXJlY3Rpb24gb2YgdGhlIGZsaWNrIGdlc3R1cmUuCi0gICAgaWYgKHZlbG9jaXR5
KSB7Ci0gICAgICAgIGFjdGl2ZVNuYXBJbmRleCA9ICh2ZWxvY2l0eSA8IDApID8gbG93ZXJJbmRl
eCA6IHVwcGVySW5kZXg7Ci0gICAgICAgIHJldHVybiB2ZWxvY2l0eSA8IDAgPyBsb3dlclNuYXBQ
b3NpdGlvbiA6IHVwcGVyU25hcFBvc2l0aW9uOwotICAgIH0KLQotICAgIGJvb2wgaXNDbG9zZXJU
b0xvd2VyU25hcFBvc2l0aW9uID0gc2Nyb2xsRGVzdGluYXRpb24gLSBsb3dlclNuYXBQb3NpdGlv
biA8PSB1cHBlclNuYXBQb3NpdGlvbiAtIHNjcm9sbERlc3RpbmF0aW9uOwotICAgIGFjdGl2ZVNu
YXBJbmRleCA9IGlzQ2xvc2VyVG9Mb3dlclNuYXBQb3NpdGlvbiA/IGxvd2VySW5kZXggOiB1cHBl
ckluZGV4OwotICAgIHJldHVybiBpc0Nsb3NlclRvTG93ZXJTbmFwUG9zaXRpb24gPyBsb3dlclNu
YXBQb3NpdGlvbiA6IHVwcGVyU25hcFBvc2l0aW9uOwotfQorY29uc3QgdW5zaWduZWQgaW52YWxp
ZFNuYXBPZmZzZXRJbmRleCA9IFVJTlRfTUFYOworV0VCQ09SRV9FWFBPUlQgTGF5b3V0VW5pdCBj
bG9zZXN0U25hcE9mZnNldChjb25zdCBWZWN0b3I8TGF5b3V0VW5pdD4mIHNuYXBPZmZzZXRzLCBj
b25zdCBWZWN0b3I8U2Nyb2xsT2Zmc2V0UmFuZ2U8TGF5b3V0VW5pdD4+JiBzbmFwT2Zmc2V0UmFu
Z2VzLCBMYXlvdXRVbml0IHNjcm9sbERlc3RpbmF0aW9uLCBmbG9hdCB2ZWxvY2l0eSwgdW5zaWdu
ZWQmIGFjdGl2ZVNuYXBJbmRleCk7CitXRUJDT1JFX0VYUE9SVCBmbG9hdCBjbG9zZXN0U25hcE9m
ZnNldChjb25zdCBWZWN0b3I8ZmxvYXQ+JiBzbmFwT2Zmc2V0cywgY29uc3QgVmVjdG9yPFNjcm9s
bE9mZnNldFJhbmdlPGZsb2F0Pj4mIHNuYXBPZmZzZXRSYW5nZXMsIGZsb2F0IHNjcm9sbERlc3Rp
bmF0aW9uLCBmbG9hdCB2ZWxvY2l0eSwgdW5zaWduZWQmIGFjdGl2ZVNuYXBJbmRleCk7CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9z
Y3JvbGxpbmcvU2Nyb2xsU25hcE9mZnNldHNJbmZvLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Nj
cm9sbGluZy9TY3JvbGxTbmFwT2Zmc2V0c0luZm8uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lMTc0MzAzMzg3MjM4
MmMzZTIyMDU2MWQwODAxMmU4OTg3NGM0NzM0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsU25hcE9mZnNldHNJbmZvLmgKQEAgLTAsMCArMSw1
MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW1wb3J0IDx3dGYvVmVjdG9yLmg+
CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwordGVtcGxhdGUgPHR5cGVuYW1lIFQ+CitzdHJ1Y3Qg
U2Nyb2xsT2Zmc2V0UmFuZ2UgeworICAgIFQgc3RhcnQ7CisgICAgVCBlbmQ7Cit9OworCit0ZW1w
bGF0ZSA8dHlwZW5hbWUgVD4KK3N0cnVjdCBTY3JvbGxTbmFwT2Zmc2V0c0luZm8geworICAgIFZl
Y3RvcjxUPiBob3Jpem9udGFsU25hcE9mZnNldHM7CisgICAgVmVjdG9yPFQ+IHZlcnRpY2FsU25h
cE9mZnNldHM7CisKKyAgICAvLyBTbmFwIG9mZnNldCByYW5nZXMgcmVwcmVzZW50IG5vbi1lbXB0
eSByYW5nZXMgb2Ygc2Nyb2xsIG9mZnNldHMgaW4gd2hpY2ggc2Nyb2xsaW5nIG1heSByZXN0IGFm
dGVyIHNjcm9sbCBzbmFwcGluZy4KKyAgICAvLyBUaGVzZSBhcmUgdXNlZCBpbiB0d28gY2FzZXM6
ICgxKSBmb3IgcHJveGltaXR5IHNjcm9sbCBzbmFwcGluZywgd2hlcmUgcG9ydGlvbnMgb2YgYXJl
YXMgYmV0d2VlbiBhZGphY2VudCBzbmFwIG9mZnNldHMKKyAgICAvLyBtYXkgZW1pdCBzbmFwIG9m
ZnNldCByYW5nZXMsIGFuZCAoMikgaW4gdGhlIGNhc2Ugd2hlcmUgdGhlIHNuYXAgYXJlYSBpcyBs
YXJnZXIgdGhhbiB0aGUgc25hcCBwb3J0LCBpbiB3aGljaCBjYXNlIGFyZWFzCisgICAgLy8gd2hl
cmUgdGhlIHNuYXAgcG9ydCBmaXRzIHdpdGhpbiB0aGUgc25hcCBhcmVhIGFyZSBjb25zaWRlcmVk
IHRvIGJlIHZhbGlkIHNuYXAgcG9zaXRpb25zLgorICAgIFZlY3RvcjxTY3JvbGxPZmZzZXRSYW5n
ZTxUPj4gaG9yaXpvbnRhbFNuYXBPZmZzZXRSYW5nZXM7CisgICAgVmVjdG9yPFNjcm9sbE9mZnNl
dFJhbmdlPFQ+PiB2ZXJ0aWNhbFNuYXBPZmZzZXRSYW5nZXM7Cit9OworCit9OyAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Ny
b2xsaW5nQ29vcmRpbmF0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9s
bGluZ0Nvb3JkaW5hdG9yLmgKaW5kZXggN2E2YWYyMWYwNjhlOGE4MTA5NDUwOWFhZGFmNGRlYzNj
YmM0MWJlYi4uZWI2ZGFiZjk3OGRjYzRlZDJlMzAyYTI1MmI0NTBiMTY4YmY0YmI5MiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nQ29vcmRpbmF0b3Iu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdDb29yZGluYXRv
ci5oCkBAIC0yOSw2ICsyOSw3IEBACiAjaW5jbHVkZSAiSW50UmVjdC5oIgogI2luY2x1ZGUgIkxh
eW91dFJlY3QuaCIKICNpbmNsdWRlICJQbGF0Zm9ybVdoZWVsRXZlbnQuaCIKKyNpbmNsdWRlICJT
Y3JvbGxTbmFwT2Zmc2V0c0luZm8uaCIKICNpbmNsdWRlICJTY3JvbGxUeXBlcy5oIgogI2luY2x1
ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL1RocmVhZFNhZmVSZWZDb3VudGVkLmg+
CkBAIC0xNzAsNiArMTcxLDggQEAgcHVibGljOgogI2lmIEVOQUJMRShDU1NfU0NST0xMX1NOQVAp
CiAgICAgICAgIFZlY3RvcjxMYXlvdXRVbml0PiBob3Jpem9udGFsU25hcE9mZnNldHM7CiAgICAg
ICAgIFZlY3RvcjxMYXlvdXRVbml0PiB2ZXJ0aWNhbFNuYXBPZmZzZXRzOworICAgICAgICBWZWN0
b3I8U2Nyb2xsT2Zmc2V0UmFuZ2U8TGF5b3V0VW5pdD4+IGhvcml6b250YWxTbmFwT2Zmc2V0UmFu
Z2VzOworICAgICAgICBWZWN0b3I8U2Nyb2xsT2Zmc2V0UmFuZ2U8TGF5b3V0VW5pdD4+IHZlcnRp
Y2FsU25hcE9mZnNldFJhbmdlczsKICAgICAgICAgdW5zaWduZWQgY3VycmVudEhvcml6b250YWxT
bmFwUG9pbnRJbmRleDsKICAgICAgICAgdW5zaWduZWQgY3VycmVudFZlcnRpY2FsU25hcFBvaW50
SW5kZXg7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5n
L1Njcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Nj
cm9sbGluZy9TY3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3IuY3BwCmluZGV4IDhjNjlhZjJmNmRi
ZDIxYjg3ZjY4ODRhZDNjZmE5ZWVmZGMyN2NiYzkuLjk2NjRmNDMwZWYxNzk2YzkyODJkM2VhYWQy
N2E5NGFkMjZjN2U3NGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5n
L1Njcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9zY3JvbGxpbmcvU2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yLmNwcApAQCAtMzIsMzQgKzMy
LDU4IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0YXRpYyBjb25zdCBTZWNvbmRzIHNjcm9s
bFNuYXBBbmltYXRpb25EdXJhdGlvbiA9IDFfczsKK3N0YXRpYyBpbmxpbmUgZmxvYXQgcHJvamVj
dGVkSW5lcnRpYWxTY3JvbGxEaXN0YW5jZShmbG9hdCBpbml0aWFsV2hlZWxEZWx0YSkKK3sKKyAg
ICBjb25zdCBzdGF0aWMgZG91YmxlIGluZXJ0aWFsU2Nyb2xsUHJlZGljdGlvbkZhY3RvciA9IDE2
Ljc7CisgICAgcmV0dXJuIGluZXJ0aWFsU2Nyb2xsUHJlZGljdGlvbkZhY3RvciAqIGluaXRpYWxX
aGVlbERlbHRhOworfQogCi1TY3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3I6OlNjcm9sbGluZ01v
bWVudHVtQ2FsY3VsYXRvcihjb25zdCBGbG9hdFNpemUmIHZpZXdwb3J0U2l6ZSwgY29uc3QgRmxv
YXRTaXplJiBjb250ZW50U2l6ZSwgY29uc3QgRmxvYXRQb2ludCYgaW5pdGlhbE9mZnNldCwgY29u
c3QgRmxvYXRQb2ludCYgdGFyZ2V0T2Zmc2V0LCBjb25zdCBGbG9hdFNpemUmIGluaXRpYWxEZWx0
YSwgY29uc3QgRmxvYXRTaXplJiBpbml0aWFsVmVsb2NpdHkpCitTY3JvbGxpbmdNb21lbnR1bUNh
bGN1bGF0b3I6OlNjcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvcihjb25zdCBGbG9hdFNpemUmIHZp
ZXdwb3J0U2l6ZSwgY29uc3QgRmxvYXRTaXplJiBjb250ZW50U2l6ZSwgY29uc3QgRmxvYXRQb2lu
dCYgaW5pdGlhbE9mZnNldCwgY29uc3QgRmxvYXRTaXplJiBpbml0aWFsRGVsdGEsIGNvbnN0IEZs
b2F0U2l6ZSYgaW5pdGlhbFZlbG9jaXR5KQogICAgIDogbV9pbml0aWFsRGVsdGEoaW5pdGlhbERl
bHRhKQogICAgICwgbV9pbml0aWFsVmVsb2NpdHkoaW5pdGlhbFZlbG9jaXR5KQogICAgICwgbV9p
bml0aWFsU2Nyb2xsT2Zmc2V0KGluaXRpYWxPZmZzZXQueCgpLCBpbml0aWFsT2Zmc2V0LnkoKSkK
LSAgICAsIG1fdGFyZ2V0U2Nyb2xsT2Zmc2V0KHRhcmdldE9mZnNldC54KCksIHRhcmdldE9mZnNl
dC55KCkpCiAgICAgLCBtX3ZpZXdwb3J0U2l6ZSh2aWV3cG9ydFNpemUpCiAgICAgLCBtX2NvbnRl
bnRTaXplKGNvbnRlbnRTaXplKQogewogfQogCit2b2lkIFNjcm9sbGluZ01vbWVudHVtQ2FsY3Vs
YXRvcjo6c2V0UmV0YXJnZXRlZFNjcm9sbE9mZnNldChjb25zdCBGbG9hdFNpemUmIHRhcmdldCkK
K3sKKyAgICBpZiAobV9yZXRhcmdldGVkU2Nyb2xsT2Zmc2V0ICYmIG1fcmV0YXJnZXRlZFNjcm9s
bE9mZnNldCA9PSB0YXJnZXQpCisgICAgICAgIHJldHVybjsKKworICAgIG1fcmV0YXJnZXRlZFNj
cm9sbE9mZnNldCA9IHRhcmdldDsKKyAgICByZXRhcmdldGVkU2Nyb2xsT2Zmc2V0RGlkQ2hhbmdl
KCk7Cit9CisKK0Zsb2F0U2l6ZSBTY3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3I6OnByZWRpY3Rl
ZERlc3RpbmF0aW9uT2Zmc2V0KCkKK3sKKyAgICBmbG9hdCBpbml0aWFsT2Zmc2V0WCA9IGNsYW1w
VG88ZmxvYXQ+KG1faW5pdGlhbFNjcm9sbE9mZnNldC53aWR0aCgpICsgcHJvamVjdGVkSW5lcnRp
YWxTY3JvbGxEaXN0YW5jZShtX2luaXRpYWxEZWx0YS53aWR0aCgpKSwgMCwgbV9jb250ZW50U2l6
ZS53aWR0aCgpIC0gbV92aWV3cG9ydFNpemUud2lkdGgoKSk7CisgICAgZmxvYXQgaW5pdGlhbE9m
ZnNldFkgPSBjbGFtcFRvPGZsb2F0PihtX2luaXRpYWxTY3JvbGxPZmZzZXQuaGVpZ2h0KCkgKyBw
cm9qZWN0ZWRJbmVydGlhbFNjcm9sbERpc3RhbmNlKG1faW5pdGlhbERlbHRhLmhlaWdodCgpKSwg
MCwgbV9jb250ZW50U2l6ZS5oZWlnaHQoKSAtIG1fdmlld3BvcnRTaXplLmhlaWdodCgpKTsKKyAg
ICByZXR1cm4geyBpbml0aWFsT2Zmc2V0WCwgaW5pdGlhbE9mZnNldFkgfTsKK30KKwogI2lmICFI
QVZFKE5TU0NST0xMSU5HX0ZJTFRFUlMpCiAKLXN0ZDo6dW5pcXVlX3B0cjxTY3JvbGxpbmdNb21l
bnR1bUNhbGN1bGF0b3I+IFNjcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvcjo6Y3JlYXRlKGNvbnN0
IEZsb2F0U2l6ZSYgdmlld3BvcnRTaXplLCBjb25zdCBGbG9hdFNpemUmIGNvbnRlbnRTaXplLCBj
b25zdCBGbG9hdFBvaW50JiBpbml0aWFsT2Zmc2V0LCBjb25zdCBGbG9hdFBvaW50JiB0YXJnZXRP
ZmZzZXQsIGNvbnN0IEZsb2F0U2l6ZSYgaW5pdGlhbERlbHRhLCBjb25zdCBGbG9hdFNpemUmIGlu
aXRpYWxWZWxvY2l0eSkKK3N0ZDo6dW5pcXVlX3B0cjxTY3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0
b3I+IFNjcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvcjo6Y3JlYXRlKGNvbnN0IEZsb2F0U2l6ZSYg
dmlld3BvcnRTaXplLCBjb25zdCBGbG9hdFNpemUmIGNvbnRlbnRTaXplLCBjb25zdCBGbG9hdFBv
aW50JiBpbml0aWFsT2Zmc2V0LCBjb25zdCBGbG9hdFNpemUmIGluaXRpYWxEZWx0YSwgY29uc3Qg
RmxvYXRTaXplJiBpbml0aWFsVmVsb2NpdHkpCit7CisgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlx
dWU8QmFzaWNTY3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3I+KHZpZXdwb3J0U2l6ZSwgY29udGVu
dFNpemUsIGluaXRpYWxPZmZzZXQsIGluaXRpYWxEZWx0YSwgaW5pdGlhbFZlbG9jaXR5KTsKK30K
Kwordm9pZCBTY3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3I6OnNldFBsYXRmb3JtTW9tZW50dW1T
Y3JvbGxpbmdQcmVkaWN0aW9uRW5hYmxlZChib29sKQogewotICAgIHJldHVybiBzdGQ6Om1ha2Vf
dW5pcXVlPEJhc2ljU2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yPih2aWV3cG9ydFNpemUsIGNv
bnRlbnRTaXplLCBpbml0aWFsT2Zmc2V0LCB0YXJnZXRPZmZzZXQsIGluaXRpYWxEZWx0YSwgaW5p
dGlhbFZlbG9jaXR5KTsKIH0KIAogI2VuZGlmCiAKLUJhc2ljU2Nyb2xsaW5nTW9tZW50dW1DYWxj
dWxhdG9yOjpCYXNpY1Njcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvcihjb25zdCBGbG9hdFNpemUm
IHZpZXdwb3J0U2l6ZSwgY29uc3QgRmxvYXRTaXplJiBjb250ZW50U2l6ZSwgY29uc3QgRmxvYXRQ
b2ludCYgaW5pdGlhbE9mZnNldCwgY29uc3QgRmxvYXRQb2ludCYgdGFyZ2V0T2Zmc2V0LCBjb25z
dCBGbG9hdFNpemUmIGluaXRpYWxEZWx0YSwgY29uc3QgRmxvYXRTaXplJiBpbml0aWFsVmVsb2Np
dHkpCi0gICAgOiBTY3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3Iodmlld3BvcnRTaXplLCBjb250
ZW50U2l6ZSwgaW5pdGlhbE9mZnNldCwgdGFyZ2V0T2Zmc2V0LCBpbml0aWFsRGVsdGEsIGluaXRp
YWxWZWxvY2l0eSkKK0Jhc2ljU2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yOjpCYXNpY1Njcm9s
bGluZ01vbWVudHVtQ2FsY3VsYXRvcihjb25zdCBGbG9hdFNpemUmIHZpZXdwb3J0U2l6ZSwgY29u
c3QgRmxvYXRTaXplJiBjb250ZW50U2l6ZSwgY29uc3QgRmxvYXRQb2ludCYgaW5pdGlhbE9mZnNl
dCwgY29uc3QgRmxvYXRTaXplJiBpbml0aWFsRGVsdGEsIGNvbnN0IEZsb2F0U2l6ZSYgaW5pdGlh
bFZlbG9jaXR5KQorICAgIDogU2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yKHZpZXdwb3J0U2l6
ZSwgY29udGVudFNpemUsIGluaXRpYWxPZmZzZXQsIGluaXRpYWxEZWx0YSwgaW5pdGlhbFZlbG9j
aXR5KQogewogfQogCi1GbG9hdFNpemUgQmFzaWNTY3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3I6
OmxpbmVhcmx5SW50ZXJwb2xhdGVkT2Zmc2V0QXRQcm9ncmVzcyhmbG9hdCBwcm9ncmVzcykgY29u
c3QKK0Zsb2F0U2l6ZSBCYXNpY1Njcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvcjo6bGluZWFybHlJ
bnRlcnBvbGF0ZWRPZmZzZXRBdFByb2dyZXNzKGZsb2F0IHByb2dyZXNzKQogewotICAgIHJldHVy
biBtX2luaXRpYWxTY3JvbGxPZmZzZXQgKyBwcm9ncmVzcyAqIChtX3RhcmdldFNjcm9sbE9mZnNl
dCAtIG1faW5pdGlhbFNjcm9sbE9mZnNldCk7CisgICAgcmV0dXJuIG1faW5pdGlhbFNjcm9sbE9m
ZnNldCArIHByb2dyZXNzICogKHJldGFyZ2V0ZWRTY3JvbGxPZmZzZXQoKSAtIG1faW5pdGlhbFNj
cm9sbE9mZnNldCk7CiB9CiAKIEZsb2F0U2l6ZSBCYXNpY1Njcm9sbGluZ01vbWVudHVtQ2FsY3Vs
YXRvcjo6Y3ViaWNhbGx5SW50ZXJwb2xhdGVkT2Zmc2V0QXRQcm9ncmVzcyhmbG9hdCBwcm9ncmVz
cykgY29uc3QKQEAgLTEyMCw3ICsxNDQsNyBAQCB2b2lkIEJhc2ljU2Nyb2xsaW5nTW9tZW50dW1D
YWxjdWxhdG9yOjppbml0aWFsaXplSW50ZXJwb2xhdGlvbkNvZWZmaWNpZW50c0lmTmVjZQogICAg
ICAgICByZXR1cm47CiAgICAgfQogCi0gICAgRmxvYXRTaXplIHN0YXJ0VG9FbmRWZWN0b3IgPSBt
X3RhcmdldFNjcm9sbE9mZnNldCAtIG1faW5pdGlhbFNjcm9sbE9mZnNldDsKKyAgICBGbG9hdFNp
emUgc3RhcnRUb0VuZFZlY3RvciA9IHJldGFyZ2V0ZWRTY3JvbGxPZmZzZXQoKSAtIG1faW5pdGlh
bFNjcm9sbE9mZnNldDsKICAgICBmbG9hdCBzdGFydFRvRW5kRGlzdGFuY2UgPSBzdGFydFRvRW5k
VmVjdG9yLmRpYWdvbmFsTGVuZ3RoKCk7CiAgICAgaWYgKCFzdGFydFRvRW5kRGlzdGFuY2UpIHsK
ICAgICAgICAgLy8gVGhlIHN0YXJ0IGFuZCBlbmQgcG9zaXRpb25zIGFyZSB0aGUgc2FtZSwgc28g
d2Ugc2hvdWxkbid0IHRyeSB0byBpbnRlcnBvbGF0ZSBhIHBhdGguCkBAIC0xNDAsNyArMTY0LDcg
QEAgdm9pZCBCYXNpY1Njcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvcjo6aW5pdGlhbGl6ZUludGVy
cG9sYXRpb25Db2VmZmljaWVudHNJZk5lY2UKICAgICBtX3NuYXBBbmltYXRpb25DdXJ2ZUNvZWZm
aWNpZW50c1swXSA9IG1faW5pdGlhbFNjcm9sbE9mZnNldDsKICAgICBtX3NuYXBBbmltYXRpb25D
dXJ2ZUNvZWZmaWNpZW50c1sxXSA9IDMgKiAoY29udHJvbFZlY3RvcjEgLSBtX2luaXRpYWxTY3Jv
bGxPZmZzZXQpOwogICAgIG1fc25hcEFuaW1hdGlvbkN1cnZlQ29lZmZpY2llbnRzWzJdID0gMyAq
IChtX2luaXRpYWxTY3JvbGxPZmZzZXQgLSAyICogY29udHJvbFZlY3RvcjEgKyBjb250cm9sVmVj
dG9yMik7Ci0gICAgbV9zbmFwQW5pbWF0aW9uQ3VydmVDb2VmZmljaWVudHNbM10gPSAzICogKGNv
bnRyb2xWZWN0b3IxIC0gY29udHJvbFZlY3RvcjIpIC0gbV9pbml0aWFsU2Nyb2xsT2Zmc2V0ICsg
bV90YXJnZXRTY3JvbGxPZmZzZXQ7CisgICAgbV9zbmFwQW5pbWF0aW9uQ3VydmVDb2VmZmljaWVu
dHNbM10gPSAzICogKGNvbnRyb2xWZWN0b3IxIC0gY29udHJvbFZlY3RvcjIpIC0gbV9pbml0aWFs
U2Nyb2xsT2Zmc2V0ICsgcmV0YXJnZXRlZFNjcm9sbE9mZnNldCgpOwogICAgIG1fZm9yY2VMaW5l
YXJBbmltYXRpb25DdXJ2ZSA9IGZhbHNlOwogfQogCkBAIC0xNzksMTAgKzIwMywxMCBAQCB2b2lk
IEJhc2ljU2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yOjppbml0aWFsaXplU25hcFByb2dyZXNz
Q3VydmUoKQogICAgIHN0YXRpYyBjb25zdCBmbG9hdCBtaW5TY3JvbGxTbmFwSW5pdGlhbFByb2dy
ZXNzID0gMC4xOwogICAgIHN0YXRpYyBjb25zdCBmbG9hdCBtYXhTY3JvbGxTbmFwSW5pdGlhbFBy
b2dyZXNzID0gMC41OwogCi0gICAgRmxvYXRTaXplIGFsaWdubWVudFZlY3RvciA9IG1faW5pdGlh
bERlbHRhICogKG1fdGFyZ2V0U2Nyb2xsT2Zmc2V0IC0gbV9pbml0aWFsU2Nyb2xsT2Zmc2V0KTsK
KyAgICBGbG9hdFNpemUgYWxpZ25tZW50VmVjdG9yID0gbV9pbml0aWFsRGVsdGEgKiAocmV0YXJn
ZXRlZFNjcm9sbE9mZnNldCgpIC0gbV9pbml0aWFsU2Nyb2xsT2Zmc2V0KTsKICAgICBmbG9hdCBp
bml0aWFsUHJvZ3Jlc3M7CiAgICAgaWYgKGFsaWdubWVudFZlY3Rvci53aWR0aCgpICsgYWxpZ25t
ZW50VmVjdG9yLmhlaWdodCgpID4gMCkKLSAgICAgICAgaW5pdGlhbFByb2dyZXNzID0gY2xhbXBU
byhtX2luaXRpYWxEZWx0YS5kaWFnb25hbExlbmd0aCgpIC8gKG1fdGFyZ2V0U2Nyb2xsT2Zmc2V0
IC0gbV9pbml0aWFsU2Nyb2xsT2Zmc2V0KS5kaWFnb25hbExlbmd0aCgpLCBtaW5TY3JvbGxTbmFw
SW5pdGlhbFByb2dyZXNzLCBtYXhTY3JvbGxTbmFwSW5pdGlhbFByb2dyZXNzKTsKKyAgICAgICAg
aW5pdGlhbFByb2dyZXNzID0gY2xhbXBUbyhtX2luaXRpYWxEZWx0YS5kaWFnb25hbExlbmd0aCgp
IC8gKHJldGFyZ2V0ZWRTY3JvbGxPZmZzZXQoKSAtIG1faW5pdGlhbFNjcm9sbE9mZnNldCkuZGlh
Z29uYWxMZW5ndGgoKSwgbWluU2Nyb2xsU25hcEluaXRpYWxQcm9ncmVzcywgbWF4U2Nyb2xsU25h
cEluaXRpYWxQcm9ncmVzcyk7CiAgICAgZWxzZQogICAgICAgICBpbml0aWFsUHJvZ3Jlc3MgPSBt
aW5TY3JvbGxTbmFwSW5pdGlhbFByb2dyZXNzOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3IuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvci5oCmluZGV4
IGNlZDBmMmExZjc1OGQxOGFlOTZlZGZiN2Y2MGZlNTAyYjAxNmVkYmYuLmE4MmFmYWE2NjFmNzcx
ZGQ4ZDMyMzcwMGY4Y2E4YmRiOGQ1ZTJjMzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvci5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvci5oCkBAIC0z
MCw2ICszMCw3IEBACiAjaW5jbHVkZSAiQXhpc1Njcm9sbFNuYXBPZmZzZXRzLmgiCiAjaW5jbHVk
ZSAiUGxhdGZvcm1XaGVlbEV2ZW50LmgiCiAjaW5jbHVkZSAiU2Nyb2xsVHlwZXMuaCIKKyNpbmNs
dWRlIDx3dGYvT3B0aW9uYWwuaD4KICNpbmNsdWRlIDx3dGYvU2Vjb25kcy5oPgogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CkBAIC0zOSwyNSArNDAsMzMgQEAgY2xhc3MgRmxvYXRTaXplOwogCiBjbGFz
cyBTY3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3IgewogcHVibGljOgotICAgIFNjcm9sbGluZ01v
bWVudHVtQ2FsY3VsYXRvcihjb25zdCBGbG9hdFNpemUmIHZpZXdwb3J0U2l6ZSwgY29uc3QgRmxv
YXRTaXplJiBjb250ZW50U2l6ZSwgY29uc3QgRmxvYXRQb2ludCYgaW5pdGlhbE9mZnNldCwgY29u
c3QgRmxvYXRQb2ludCYgdGFyZ2V0T2Zmc2V0LCBjb25zdCBGbG9hdFNpemUmIGluaXRpYWxEZWx0
YSwgY29uc3QgRmxvYXRTaXplJiBpbml0aWFsVmVsb2NpdHkpOwotICAgIHN0YXRpYyBzdGQ6OnVu
aXF1ZV9wdHI8U2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yPiBjcmVhdGUoY29uc3QgRmxvYXRT
aXplJiB2aWV3cG9ydFNpemUsIGNvbnN0IEZsb2F0U2l6ZSYgY29udGVudFNpemUsIGNvbnN0IEZs
b2F0UG9pbnQmIGluaXRpYWxPZmZzZXQsIGNvbnN0IEZsb2F0UG9pbnQmIHRhcmdldE9mZnNldCwg
Y29uc3QgRmxvYXRTaXplJiBpbml0aWFsRGVsdGEsIGNvbnN0IEZsb2F0U2l6ZSYgaW5pdGlhbFZl
bG9jaXR5KTsKKyAgICBTY3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3IoY29uc3QgRmxvYXRTaXpl
JiB2aWV3cG9ydFNpemUsIGNvbnN0IEZsb2F0U2l6ZSYgY29udGVudFNpemUsIGNvbnN0IEZsb2F0
UG9pbnQmIGluaXRpYWxPZmZzZXQsIGNvbnN0IEZsb2F0U2l6ZSYgaW5pdGlhbERlbHRhLCBjb25z
dCBGbG9hdFNpemUmIGluaXRpYWxWZWxvY2l0eSk7CisgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0
cjxTY3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3I+IGNyZWF0ZShjb25zdCBGbG9hdFNpemUmIHZp
ZXdwb3J0U2l6ZSwgY29uc3QgRmxvYXRTaXplJiBjb250ZW50U2l6ZSwgY29uc3QgRmxvYXRQb2lu
dCYgaW5pdGlhbE9mZnNldCwgY29uc3QgRmxvYXRTaXplJiBpbml0aWFsRGVsdGEsIGNvbnN0IEZs
b2F0U2l6ZSYgaW5pdGlhbFZlbG9jaXR5KTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgdm9p
ZCBzZXRQbGF0Zm9ybU1vbWVudHVtU2Nyb2xsaW5nUHJlZGljdGlvbkVuYWJsZWQoYm9vbCk7CiAg
ICAgdmlydHVhbCB+U2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yKCkgeyB9CiAKICAgICB2aXJ0
dWFsIEZsb2F0UG9pbnQgc2Nyb2xsT2Zmc2V0QWZ0ZXJFbGFwc2VkVGltZShTZWNvbmRzKSA9IDA7
CiAgICAgdmlydHVhbCBTZWNvbmRzIGFuaW1hdGlvbkR1cmF0aW9uKCkgPSAwOworICAgIHZpcnR1
YWwgRmxvYXRTaXplIHByZWRpY3RlZERlc3RpbmF0aW9uT2Zmc2V0KCk7CisgICAgdm9pZCBzZXRS
ZXRhcmdldGVkU2Nyb2xsT2Zmc2V0KGNvbnN0IEZsb2F0U2l6ZSYpOwogCiBwcm90ZWN0ZWQ6Cisg
ICAgY29uc3QgRmxvYXRTaXplJiByZXRhcmdldGVkU2Nyb2xsT2Zmc2V0KCkgY29uc3QgeyByZXR1
cm4gbV9yZXRhcmdldGVkU2Nyb2xsT2Zmc2V0LnZhbHVlKCk7IH0KKyAgICB2aXJ0dWFsIHZvaWQg
cmV0YXJnZXRlZFNjcm9sbE9mZnNldERpZENoYW5nZSgpIHsgfQorCiAgICAgRmxvYXRTaXplIG1f
aW5pdGlhbERlbHRhOwogICAgIEZsb2F0U2l6ZSBtX2luaXRpYWxWZWxvY2l0eTsKICAgICBGbG9h
dFNpemUgbV9pbml0aWFsU2Nyb2xsT2Zmc2V0OwotICAgIEZsb2F0U2l6ZSBtX3RhcmdldFNjcm9s
bE9mZnNldDsKICAgICBGbG9hdFNpemUgbV92aWV3cG9ydFNpemU7CiAgICAgRmxvYXRTaXplIG1f
Y29udGVudFNpemU7CisKK3ByaXZhdGU6CisgICAgc3RkOjpvcHRpb25hbDxGbG9hdFNpemU+IG1f
cmV0YXJnZXRlZFNjcm9sbE9mZnNldDsKIH07CiAKIGNsYXNzIEJhc2ljU2Nyb2xsaW5nTW9tZW50
dW1DYWxjdWxhdG9yIGZpbmFsIDogcHVibGljIFNjcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvciB7
CiBwdWJsaWM6Ci0gICAgQmFzaWNTY3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3IoY29uc3QgRmxv
YXRTaXplJiB2aWV3cG9ydFNpemUsIGNvbnN0IEZsb2F0U2l6ZSYgY29udGVudFNpemUsIGNvbnN0
IEZsb2F0UG9pbnQmIGluaXRpYWxPZmZzZXQsIGNvbnN0IEZsb2F0UG9pbnQmIHRhcmdldE9mZnNl
dCwgY29uc3QgRmxvYXRTaXplJiBpbml0aWFsRGVsdGEsIGNvbnN0IEZsb2F0U2l6ZSYgaW5pdGlh
bFZlbG9jaXR5KTsKKyAgICBCYXNpY1Njcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvcihjb25zdCBG
bG9hdFNpemUmIHZpZXdwb3J0U2l6ZSwgY29uc3QgRmxvYXRTaXplJiBjb250ZW50U2l6ZSwgY29u
c3QgRmxvYXRQb2ludCYgaW5pdGlhbE9mZnNldCwgY29uc3QgRmxvYXRTaXplJiBpbml0aWFsRGVs
dGEsIGNvbnN0IEZsb2F0U2l6ZSYgaW5pdGlhbFZlbG9jaXR5KTsKIAogcHJpdmF0ZToKICAgICBG
bG9hdFBvaW50IHNjcm9sbE9mZnNldEFmdGVyRWxhcHNlZFRpbWUoU2Vjb25kcykgZmluYWw7CkBA
IC02NSw3ICs3NCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBpbml0aWFsaXplSW50ZXJwb2xhdGlv
bkNvZWZmaWNpZW50c0lmTmVjZXNzYXJ5KCk7CiAgICAgdm9pZCBpbml0aWFsaXplU25hcFByb2dy
ZXNzQ3VydmUoKTsKICAgICBmbG9hdCBhbmltYXRpb25Qcm9ncmVzc0FmdGVyRWxhcHNlZFRpbWUo
U2Vjb25kcykgY29uc3Q7Ci0gICAgRmxvYXRTaXplIGxpbmVhcmx5SW50ZXJwb2xhdGVkT2Zmc2V0
QXRQcm9ncmVzcyhmbG9hdCBwcm9ncmVzcykgY29uc3Q7CisgICAgRmxvYXRTaXplIGxpbmVhcmx5
SW50ZXJwb2xhdGVkT2Zmc2V0QXRQcm9ncmVzcyhmbG9hdCBwcm9ncmVzcyk7CiAgICAgRmxvYXRT
aXplIGN1YmljYWxseUludGVycG9sYXRlZE9mZnNldEF0UHJvZ3Jlc3MoZmxvYXQgcHJvZ3Jlc3Mp
IGNvbnN0OwogCiAgICAgZmxvYXQgbV9zbmFwQW5pbWF0aW9uQ3VydmVNYWduaXR1ZGUgeyAwIH07
CkBAIC03Myw2ICs4Miw3IEBAIHByaXZhdGU6CiAgICAgRmxvYXRTaXplIG1fc25hcEFuaW1hdGlv
bkN1cnZlQ29lZmZpY2llbnRzWzRdIHsgfTsKICAgICBib29sIG1fZm9yY2VMaW5lYXJBbmltYXRp
b25DdXJ2ZSB7IGZhbHNlIH07CiAgICAgYm9vbCBtX21vbWVudHVtQ2FsY3VsYXRvclJlcXVpcmVz
SW5pdGlhbGl6YXRpb24geyB0cnVlIH07CisgICAgc3RkOjpvcHRpb25hbDxGbG9hdFNpemU+IG1f
cHJlZGljdGVkRGVzdGluYXRpb25PZmZzZXQ7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdTdGF0
ZVNjcm9sbGluZ05vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xs
aW5nU3RhdGVTY3JvbGxpbmdOb2RlLmNwcAppbmRleCBhNWNmYTEyY2NlYzY4MmUzYjkyYjZkOWZm
ODFhMzA5YTAxNzJlZTU1Li5iM2RlMjYzMjQ0Y2E4YzIxODIwMDJiZDYyZDQxZjVjMzhkOGE4ODM4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdTdGF0
ZVNjcm9sbGluZ05vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Nj
cm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZS5jcHAKQEAgLTQ3LDggKzQ3LDcgQEAgU2Nyb2xsaW5n
U3RhdGVTY3JvbGxpbmdOb2RlOjpTY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGUoY29uc3QgU2Ny
b2xsaW5nU3RhdGVTY3IKICAgICAsIG1fcmVxdWVzdGVkU2Nyb2xsUG9zaXRpb24oc3RhdGVOb2Rl
LnJlcXVlc3RlZFNjcm9sbFBvc2l0aW9uKCkpCiAgICAgLCBtX3Njcm9sbE9yaWdpbihzdGF0ZU5v
ZGUuc2Nyb2xsT3JpZ2luKCkpCiAjaWYgRU5BQkxFKENTU19TQ1JPTExfU05BUCkKLSAgICAsIG1f
aG9yaXpvbnRhbFNuYXBPZmZzZXRzKHN0YXRlTm9kZS5ob3Jpem9udGFsU25hcE9mZnNldHMoKSkK
LSAgICAsIG1fdmVydGljYWxTbmFwT2Zmc2V0cyhzdGF0ZU5vZGUudmVydGljYWxTbmFwT2Zmc2V0
cygpKQorICAgICwgbV9zbmFwT2Zmc2V0c0luZm8oc3RhdGVOb2RlLm1fc25hcE9mZnNldHNJbmZv
KQogI2VuZGlmCiAgICAgLCBtX3Njcm9sbGFibGVBcmVhUGFyYW1ldGVycyhzdGF0ZU5vZGUuc2Ny
b2xsYWJsZUFyZWFQYXJhbWV0ZXJzKCkpCiAgICAgLCBtX3JlcXVlc3RlZFNjcm9sbFBvc2l0aW9u
UmVwcmVzZW50c1Byb2dyYW1tYXRpY1Njcm9sbChzdGF0ZU5vZGUucmVxdWVzdGVkU2Nyb2xsUG9z
aXRpb25SZXByZXNlbnRzUHJvZ3JhbW1hdGljU2Nyb2xsKCkpCkBAIC0xMDgsMjIgKzEwNyw0MCBA
QCB2b2lkIFNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZTo6c2V0U2Nyb2xsT3JpZ2luKGNvbnN0
IEludFBvaW50JiBzY3JvbGxPcmlnaW4pCiAjaWYgRU5BQkxFKENTU19TQ1JPTExfU05BUCkKIHZv
aWQgU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlOjpzZXRIb3Jpem9udGFsU25hcE9mZnNldHMo
Y29uc3QgVmVjdG9yPGZsb2F0PiYgc25hcE9mZnNldHMpCiB7Ci0gICAgaWYgKG1faG9yaXpvbnRh
bFNuYXBPZmZzZXRzID09IHNuYXBPZmZzZXRzKQorICAgIGlmIChtX3NuYXBPZmZzZXRzSW5mby5o
b3Jpem9udGFsU25hcE9mZnNldHMgPT0gc25hcE9mZnNldHMpCiAgICAgICAgIHJldHVybjsKIAot
ICAgIG1faG9yaXpvbnRhbFNuYXBPZmZzZXRzID0gc25hcE9mZnNldHM7CisgICAgbV9zbmFwT2Zm
c2V0c0luZm8uaG9yaXpvbnRhbFNuYXBPZmZzZXRzID0gc25hcE9mZnNldHM7CiAgICAgc2V0UHJv
cGVydHlDaGFuZ2VkKEhvcml6b250YWxTbmFwT2Zmc2V0cyk7CiB9CiAKIHZvaWQgU2Nyb2xsaW5n
U3RhdGVTY3JvbGxpbmdOb2RlOjpzZXRWZXJ0aWNhbFNuYXBPZmZzZXRzKGNvbnN0IFZlY3Rvcjxm
bG9hdD4mIHNuYXBPZmZzZXRzKQogewotICAgIGlmIChtX3ZlcnRpY2FsU25hcE9mZnNldHMgPT0g
c25hcE9mZnNldHMpCisgICAgaWYgKG1fc25hcE9mZnNldHNJbmZvLnZlcnRpY2FsU25hcE9mZnNl
dHMgPT0gc25hcE9mZnNldHMpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fdmVydGljYWxTbmFw
T2Zmc2V0cyA9IHNuYXBPZmZzZXRzOworICAgIG1fc25hcE9mZnNldHNJbmZvLnZlcnRpY2FsU25h
cE9mZnNldHMgPSBzbmFwT2Zmc2V0czsKICAgICBzZXRQcm9wZXJ0eUNoYW5nZWQoVmVydGljYWxT
bmFwT2Zmc2V0cyk7CiB9CiAKK3ZvaWQgU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlOjpzZXRI
b3Jpem9udGFsU25hcE9mZnNldFJhbmdlcyhjb25zdCBWZWN0b3I8U2Nyb2xsT2Zmc2V0UmFuZ2U8
ZmxvYXQ+PiYgc2Nyb2xsT2Zmc2V0UmFuZ2VzKQoreworICAgIGlmIChtX3NuYXBPZmZzZXRzSW5m
by5ob3Jpem9udGFsU25hcE9mZnNldFJhbmdlcyA9PSBzY3JvbGxPZmZzZXRSYW5nZXMpCisgICAg
ICAgIHJldHVybjsKKworICAgIG1fc25hcE9mZnNldHNJbmZvLmhvcml6b250YWxTbmFwT2Zmc2V0
UmFuZ2VzID0gc2Nyb2xsT2Zmc2V0UmFuZ2VzOworICAgIHNldFByb3BlcnR5Q2hhbmdlZChIb3Jp
em9udGFsU25hcE9mZnNldFJhbmdlcyk7Cit9CisKK3ZvaWQgU2Nyb2xsaW5nU3RhdGVTY3JvbGxp
bmdOb2RlOjpzZXRWZXJ0aWNhbFNuYXBPZmZzZXRSYW5nZXMoY29uc3QgVmVjdG9yPFNjcm9sbE9m
ZnNldFJhbmdlPGZsb2F0Pj4mIHNjcm9sbE9mZnNldFJhbmdlcykKK3sKKyAgICBpZiAobV9zbmFw
T2Zmc2V0c0luZm8udmVydGljYWxTbmFwT2Zmc2V0UmFuZ2VzID09IHNjcm9sbE9mZnNldFJhbmdl
cykKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9zbmFwT2Zmc2V0c0luZm8udmVydGljYWxTbmFw
T2Zmc2V0UmFuZ2VzID0gc2Nyb2xsT2Zmc2V0UmFuZ2VzOworICAgIHNldFByb3BlcnR5Q2hhbmdl
ZChWZXJ0aWNhbFNuYXBPZmZzZXRSYW5nZXMpOworfQorCiB2b2lkIFNjcm9sbGluZ1N0YXRlU2Ny
b2xsaW5nTm9kZTo6c2V0Q3VycmVudEhvcml6b250YWxTbmFwUG9pbnRJbmRleCh1bnNpZ25lZCBp
bmRleCkKIHsKICAgICBpZiAobV9jdXJyZW50SG9yaXpvbnRhbFNuYXBQb2ludEluZGV4ID09IGlu
ZGV4KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5n
U3RhdGVTY3JvbGxpbmdOb2RlLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3Jv
bGxpbmdTdGF0ZVNjcm9sbGluZ05vZGUuaAppbmRleCBlODIzMTE2MTc0NDE5YzRlOTE5ZmZkM2Uz
ZmIzZmQ5M2ZlMTU0NTJjLi42MjhjMzRmN2Y4ZjY1NWNkN2ZlZDAxOTQ2NTAwNGMyOGM0MjJiNDdi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdTdGF0
ZVNjcm9sbGluZ05vZGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3Jv
bGxpbmdTdGF0ZVNjcm9sbGluZ05vZGUuaApAQCAtMjcsNiArMjcsNyBAQAogCiAjaWYgRU5BQkxF
KEFTWU5DX1NDUk9MTElORykgfHwgVVNFKENPT1JESU5BVEVEX0dSQVBISUNTKQogCisjaW5jbHVk
ZSAiU2Nyb2xsU25hcE9mZnNldHNJbmZvLmgiCiAjaW5jbHVkZSAiU2Nyb2xsVHlwZXMuaCIKICNp
bmNsdWRlICJTY3JvbGxpbmdDb29yZGluYXRvci5oIgogI2luY2x1ZGUgIlNjcm9sbGluZ1N0YXRl
Tm9kZS5oIgpAQCAtNDksNiArNTAsOCBAQCBwdWJsaWM6CiAjaWYgRU5BQkxFKENTU19TQ1JPTExf
U05BUCkKICAgICAgICAgSG9yaXpvbnRhbFNuYXBPZmZzZXRzLAogICAgICAgICBWZXJ0aWNhbFNu
YXBPZmZzZXRzLAorICAgICAgICBIb3Jpem9udGFsU25hcE9mZnNldFJhbmdlcywKKyAgICAgICAg
VmVydGljYWxTbmFwT2Zmc2V0UmFuZ2VzLAogICAgICAgICBDdXJyZW50SG9yaXpvbnRhbFNuYXBP
ZmZzZXRJbmRleCwKICAgICAgICAgQ3VycmVudFZlcnRpY2FsU25hcE9mZnNldEluZGV4LAogI2Vu
ZGlmCkBAIC03MSwxMiArNzQsMTggQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQg
c2V0U2Nyb2xsT3JpZ2luKGNvbnN0IEludFBvaW50Jik7CiAKICNpZiBFTkFCTEUoQ1NTX1NDUk9M
TF9TTkFQKQotICAgIGNvbnN0IFZlY3RvcjxmbG9hdD4mIGhvcml6b250YWxTbmFwT2Zmc2V0cygp
IGNvbnN0IHsgcmV0dXJuIG1faG9yaXpvbnRhbFNuYXBPZmZzZXRzOyB9CisgICAgY29uc3QgVmVj
dG9yPGZsb2F0PiYgaG9yaXpvbnRhbFNuYXBPZmZzZXRzKCkgY29uc3QgeyByZXR1cm4gbV9zbmFw
T2Zmc2V0c0luZm8uaG9yaXpvbnRhbFNuYXBPZmZzZXRzOyB9CiAgICAgV0VCQ09SRV9FWFBPUlQg
dm9pZCBzZXRIb3Jpem9udGFsU25hcE9mZnNldHMoY29uc3QgVmVjdG9yPGZsb2F0PiYpOwogCi0g
ICAgY29uc3QgVmVjdG9yPGZsb2F0PiYgdmVydGljYWxTbmFwT2Zmc2V0cygpIGNvbnN0IHsgcmV0
dXJuIG1fdmVydGljYWxTbmFwT2Zmc2V0czsgfQorICAgIGNvbnN0IFZlY3RvcjxmbG9hdD4mIHZl
cnRpY2FsU25hcE9mZnNldHMoKSBjb25zdCB7IHJldHVybiBtX3NuYXBPZmZzZXRzSW5mby52ZXJ0
aWNhbFNuYXBPZmZzZXRzOyB9CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRWZXJ0aWNhbFNu
YXBPZmZzZXRzKGNvbnN0IFZlY3RvcjxmbG9hdD4mKTsKIAorICAgIGNvbnN0IFZlY3RvcjxTY3Jv
bGxPZmZzZXRSYW5nZTxmbG9hdD4+JiBob3Jpem9udGFsU25hcE9mZnNldFJhbmdlcygpIGNvbnN0
IHsgcmV0dXJuIG1fc25hcE9mZnNldHNJbmZvLmhvcml6b250YWxTbmFwT2Zmc2V0UmFuZ2VzOyB9
CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRIb3Jpem9udGFsU25hcE9mZnNldFJhbmdlcyhj
b25zdCBWZWN0b3I8U2Nyb2xsT2Zmc2V0UmFuZ2U8ZmxvYXQ+PiYpOworCisgICAgY29uc3QgVmVj
dG9yPFNjcm9sbE9mZnNldFJhbmdlPGZsb2F0Pj4mIHZlcnRpY2FsU25hcE9mZnNldFJhbmdlcygp
IGNvbnN0IHsgcmV0dXJuIG1fc25hcE9mZnNldHNJbmZvLnZlcnRpY2FsU25hcE9mZnNldFJhbmdl
czsgfQorICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0VmVydGljYWxTbmFwT2Zmc2V0UmFuZ2Vz
KGNvbnN0IFZlY3RvcjxTY3JvbGxPZmZzZXRSYW5nZTxmbG9hdD4+Jik7CisKICAgICB1bnNpZ25l
ZCBjdXJyZW50SG9yaXpvbnRhbFNuYXBQb2ludEluZGV4KCkgY29uc3QgeyByZXR1cm4gbV9jdXJy
ZW50SG9yaXpvbnRhbFNuYXBQb2ludEluZGV4OyB9CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBz
ZXRDdXJyZW50SG9yaXpvbnRhbFNuYXBQb2ludEluZGV4KHVuc2lnbmVkKTsKIApAQCAtMTA4LDgg
KzExNyw3IEBAIHByaXZhdGU6CiAgICAgRmxvYXRQb2ludCBtX3JlcXVlc3RlZFNjcm9sbFBvc2l0
aW9uOwogICAgIEludFBvaW50IG1fc2Nyb2xsT3JpZ2luOwogI2lmIEVOQUJMRShDU1NfU0NST0xM
X1NOQVApCi0gICAgVmVjdG9yPGZsb2F0PiBtX2hvcml6b250YWxTbmFwT2Zmc2V0czsKLSAgICBW
ZWN0b3I8ZmxvYXQ+IG1fdmVydGljYWxTbmFwT2Zmc2V0czsKKyAgICBTY3JvbGxTbmFwT2Zmc2V0
c0luZm88ZmxvYXQ+IG1fc25hcE9mZnNldHNJbmZvOwogICAgIHVuc2lnbmVkIG1fY3VycmVudEhv
cml6b250YWxTbmFwUG9pbnRJbmRleCB7IDAgfTsKICAgICB1bnNpZ25lZCBtX2N1cnJlbnRWZXJ0
aWNhbFNuYXBQb2ludEluZGV4IHsgMCB9OwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZS5jcHAK
aW5kZXggODQwMjlmYmRmODVmNjU4MWQwZmNkMTUzOGQ5YzdiZmVlY2NiODhkOC4uMTk3NTRmNWMy
NTMyYTgzZTExMmFkMjkxNjFhYzk0ZDBlNWRlMjUwZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlLmNw
cApAQCAtNzAsMTAgKzcwLDE2IEBAIHZvaWQgU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGU6OmNv
bW1pdFN0YXRlQmVmb3JlQ2hpbGRyZW4oY29uc3QgU2Nyb2xsaW5nU3RhdGVOCiAKICNpZiBFTkFC
TEUoQ1NTX1NDUk9MTF9TTkFQKQogICAgIGlmIChzdGF0ZS5oYXNDaGFuZ2VkUHJvcGVydHkoU2Ny
b2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlOjpIb3Jpem9udGFsU25hcE9mZnNldHMpKQotICAgICAg
ICBtX2hvcml6b250YWxTbmFwT2Zmc2V0cyA9IHN0YXRlLmhvcml6b250YWxTbmFwT2Zmc2V0cygp
OworICAgICAgICBtX3NuYXBPZmZzZXRzSW5mby5ob3Jpem9udGFsU25hcE9mZnNldHMgPSBzdGF0
ZS5ob3Jpem9udGFsU25hcE9mZnNldHMoKTsKIAogICAgIGlmIChzdGF0ZS5oYXNDaGFuZ2VkUHJv
cGVydHkoU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlOjpWZXJ0aWNhbFNuYXBPZmZzZXRzKSkK
LSAgICAgICAgbV92ZXJ0aWNhbFNuYXBPZmZzZXRzID0gc3RhdGUudmVydGljYWxTbmFwT2Zmc2V0
cygpOworICAgICAgICBtX3NuYXBPZmZzZXRzSW5mby52ZXJ0aWNhbFNuYXBPZmZzZXRzID0gc3Rh
dGUudmVydGljYWxTbmFwT2Zmc2V0cygpOworCisgICAgaWYgKHN0YXRlLmhhc0NoYW5nZWRQcm9w
ZXJ0eShTY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGU6Okhvcml6b250YWxTbmFwT2Zmc2V0UmFu
Z2VzKSkKKyAgICAgICAgbV9zbmFwT2Zmc2V0c0luZm8uaG9yaXpvbnRhbFNuYXBPZmZzZXRSYW5n
ZXMgPSBzdGF0ZS5ob3Jpem9udGFsU25hcE9mZnNldFJhbmdlcygpOworCisgICAgaWYgKHN0YXRl
Lmhhc0NoYW5nZWRQcm9wZXJ0eShTY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGU6OlZlcnRpY2Fs
U25hcE9mZnNldFJhbmdlcykpCisgICAgICAgIG1fc25hcE9mZnNldHNJbmZvLnZlcnRpY2FsU25h
cE9mZnNldFJhbmdlcyA9IHN0YXRlLnZlcnRpY2FsU25hcE9mZnNldFJhbmdlcygpOwogCiAgICAg
aWYgKHN0YXRlLmhhc0NoYW5nZWRQcm9wZXJ0eShTY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGU6
OkN1cnJlbnRIb3Jpem9udGFsU25hcE9mZnNldEluZGV4KSkKICAgICAgICAgbV9jdXJyZW50SG9y
aXpvbnRhbFNuYXBQb2ludEluZGV4ID0gc3RhdGUuY3VycmVudEhvcml6b250YWxTbmFwUG9pbnRJ
bmRleCgpOwpAQCAtMTM5LDE0ICsxNDUsMTQgQEAgdm9pZCBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5n
Tm9kZTo6ZHVtcFByb3BlcnRpZXMoVGV4dFN0cmVhbSYgdHMsIFNjcm9sbGluZ1N0YXRlVHIKICAg
ICAgICAgdHMuZHVtcFByb3BlcnR5KCJzY3JvbGxhYmxlIGFyZWEgc2l6ZSIsIG1fc2Nyb2xsT3Jp
Z2luKTsKIAogI2lmIEVOQUJMRShDU1NfU0NST0xMX1NOQVApCi0gICAgaWYgKG1faG9yaXpvbnRh
bFNuYXBPZmZzZXRzLnNpemUoKSkKLSAgICAgICAgdHMuZHVtcFByb3BlcnR5KCJob3Jpem9udGFs
IHNuYXAgb2Zmc2V0cyIsIG1faG9yaXpvbnRhbFNuYXBPZmZzZXRzKTsKKyAgICBpZiAobV9zbmFw
T2Zmc2V0c0luZm8uaG9yaXpvbnRhbFNuYXBPZmZzZXRzLnNpemUoKSkKKyAgICAgICAgdHMuZHVt
cFByb3BlcnR5KCJob3Jpem9udGFsIHNuYXAgb2Zmc2V0cyIsIG1fc25hcE9mZnNldHNJbmZvLmhv
cml6b250YWxTbmFwT2Zmc2V0cyk7CiAKLSAgICBpZiAobV92ZXJ0aWNhbFNuYXBPZmZzZXRzLnNp
emUoKSkKLSAgICAgICAgdHMuZHVtcFByb3BlcnR5KCJob3Jpem9udGFsIHNuYXAgb2Zmc2V0cyIs
IG1fdmVydGljYWxTbmFwT2Zmc2V0cyk7CisgICAgaWYgKG1fc25hcE9mZnNldHNJbmZvLnZlcnRp
Y2FsU25hcE9mZnNldHMuc2l6ZSgpKQorICAgICAgICB0cy5kdW1wUHJvcGVydHkoImhvcml6b250
YWwgc25hcCBvZmZzZXRzIiwgbV9zbmFwT2Zmc2V0c0luZm8udmVydGljYWxTbmFwT2Zmc2V0cyk7
CiAKICAgICBpZiAobV9jdXJyZW50SG9yaXpvbnRhbFNuYXBQb2ludEluZGV4KQotICAgICAgICB0
cy5kdW1wUHJvcGVydHkoImN1cnJlbnQgaG9yaXpvbnRhbCBzbmFwIHBvaW50IGluZGV4IiwgbV92
ZXJ0aWNhbFNuYXBPZmZzZXRzKTsKKyAgICAgICAgdHMuZHVtcFByb3BlcnR5KCJjdXJyZW50IGhv
cml6b250YWwgc25hcCBwb2ludCBpbmRleCIsIG1fY3VycmVudEhvcml6b250YWxTbmFwUG9pbnRJ
bmRleCk7CiAKICAgICBpZiAobV9jdXJyZW50VmVydGljYWxTbmFwUG9pbnRJbmRleCkKICAgICAg
ICAgdHMuZHVtcFByb3BlcnR5KCJjdXJyZW50IHZlcnRpY2FsIHNuYXAgcG9pbnQgaW5kZXgiLCBt
X2N1cnJlbnRWZXJ0aWNhbFNuYXBQb2ludEluZGV4KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZS5oCmluZGV4
IGZhODMwYjIxZWQ1MWE5MjQwYzYwZmMyNjExM2Q5M2ExMDI2MTZkZGMuLjM1OTRiMTA4NmVjYmEz
NzhiNTE2YmQyOGQ1N2FiYzRiMjMwZGQ3MjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGUuaApAQCAtMjgs
NiArMjgsNyBAQAogI2lmIEVOQUJMRShBU1lOQ19TQ1JPTExJTkcpCiAKICNpbmNsdWRlICJJbnRS
ZWN0LmgiCisjaW5jbHVkZSAiU2Nyb2xsU25hcE9mZnNldHNJbmZvLmgiCiAjaW5jbHVkZSAiU2Ny
b2xsVHlwZXMuaCIKICNpbmNsdWRlICJTY3JvbGxpbmdDb29yZGluYXRvci5oIgogI2luY2x1ZGUg
IlNjcm9sbGluZ1RyZWVOb2RlLmgiCkBAIC01Niw4ICs1NywxMCBAQCBwdWJsaWM6CiAgICAgdmly
dHVhbCBGbG9hdFBvaW50IHNjcm9sbFBvc2l0aW9uKCkgY29uc3QgPSAwOwogCiAjaWYgRU5BQkxF
KENTU19TQ1JPTExfU05BUCkKLSAgICBjb25zdCBWZWN0b3I8ZmxvYXQ+JiBob3Jpem9udGFsU25h
cE9mZnNldHMoKSBjb25zdCB7IHJldHVybiBtX2hvcml6b250YWxTbmFwT2Zmc2V0czsgfQotICAg
IGNvbnN0IFZlY3RvcjxmbG9hdD4mIHZlcnRpY2FsU25hcE9mZnNldHMoKSBjb25zdCB7IHJldHVy
biBtX3ZlcnRpY2FsU25hcE9mZnNldHM7IH0KKyAgICBjb25zdCBWZWN0b3I8ZmxvYXQ+JiBob3Jp
em9udGFsU25hcE9mZnNldHMoKSBjb25zdCB7IHJldHVybiBtX3NuYXBPZmZzZXRzSW5mby5ob3Jp
em9udGFsU25hcE9mZnNldHM7IH0KKyAgICBjb25zdCBWZWN0b3I8ZmxvYXQ+JiB2ZXJ0aWNhbFNu
YXBPZmZzZXRzKCkgY29uc3QgeyByZXR1cm4gbV9zbmFwT2Zmc2V0c0luZm8udmVydGljYWxTbmFw
T2Zmc2V0czsgfQorICAgIGNvbnN0IFZlY3RvcjxTY3JvbGxPZmZzZXRSYW5nZTxmbG9hdD4+JiBo
b3Jpem9udGFsU25hcE9mZnNldFJhbmdlcygpIGNvbnN0IHsgcmV0dXJuIG1fc25hcE9mZnNldHNJ
bmZvLmhvcml6b250YWxTbmFwT2Zmc2V0UmFuZ2VzOyB9CisgICAgY29uc3QgVmVjdG9yPFNjcm9s
bE9mZnNldFJhbmdlPGZsb2F0Pj4mIHZlcnRpY2FsU25hcE9mZnNldFJhbmdlcygpIGNvbnN0IHsg
cmV0dXJuIG1fc25hcE9mZnNldHNJbmZvLnZlcnRpY2FsU25hcE9mZnNldFJhbmdlczsgfQogICAg
IHVuc2lnbmVkIGN1cnJlbnRIb3Jpem9udGFsU25hcFBvaW50SW5kZXgoKSBjb25zdCB7IHJldHVy
biBtX2N1cnJlbnRIb3Jpem9udGFsU25hcFBvaW50SW5kZXg7IH0KICAgICB1bnNpZ25lZCBjdXJy
ZW50VmVydGljYWxTbmFwUG9pbnRJbmRleCgpIGNvbnN0IHsgcmV0dXJuIG1fY3VycmVudFZlcnRp
Y2FsU25hcFBvaW50SW5kZXg7IH0KICAgICB2b2lkIHNldEN1cnJlbnRIb3Jpem9udGFsU25hcFBv
aW50SW5kZXgodW5zaWduZWQgaW5kZXgpIHsgbV9jdXJyZW50SG9yaXpvbnRhbFNuYXBQb2ludElu
ZGV4ID0gaW5kZXg7IH0KQEAgLTEwMiw4ICsxMDUsNyBAQCBwcml2YXRlOgogICAgIEZsb2F0UG9p
bnQgbV9sYXN0Q29tbWl0dGVkU2Nyb2xsUG9zaXRpb247CiAgICAgSW50UG9pbnQgbV9zY3JvbGxP
cmlnaW47CiAjaWYgRU5BQkxFKENTU19TQ1JPTExfU05BUCkKLSAgICBWZWN0b3I8ZmxvYXQ+IG1f
aG9yaXpvbnRhbFNuYXBPZmZzZXRzOwotICAgIFZlY3RvcjxmbG9hdD4gbV92ZXJ0aWNhbFNuYXBP
ZmZzZXRzOworICAgIFNjcm9sbFNuYXBPZmZzZXRzSW5mbzxmbG9hdD4gbV9zbmFwT2Zmc2V0c0lu
Zm87CiAgICAgdW5zaWduZWQgbV9jdXJyZW50SG9yaXpvbnRhbFNuYXBQb2ludEluZGV4IHsgMCB9
OwogICAgIHVuc2lnbmVkIG1fY3VycmVudFZlcnRpY2FsU25hcFBvaW50SW5kZXggeyAwIH07CiAj
ZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL21hYy9TY3Jv
bGxpbmdNb21lbnR1bUNhbGN1bGF0b3JNYWMuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xs
aW5nL21hYy9TY3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3JNYWMuaAppbmRleCA0NTZhMTEzYmE4
MDM4YmZmMzU4MTA0Zjc2OTVkYjdjYWViNTQ1N2QxLi5jOTA1MDNjOWUzYjA5OGNhNDRmNTkwZmNi
ZTBjYTE0ZTU0MjcwMzg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGlu
Zy9tYWMvU2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yTWFjLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvck1hYy5oCkBA
IC0zNiwxNSArMzYsMTkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBTY3JvbGxpbmdN
b21lbnR1bUNhbGN1bGF0b3JNYWMgZmluYWwgOiBwdWJsaWMgU2Nyb2xsaW5nTW9tZW50dW1DYWxj
dWxhdG9yIHsKIHB1YmxpYzoKLSAgICBTY3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3JNYWMoY29u
c3QgRmxvYXRTaXplJiB2aWV3cG9ydFNpemUsIGNvbnN0IEZsb2F0U2l6ZSYgY29udGVudFNpemUs
IGNvbnN0IEZsb2F0UG9pbnQmIGluaXRpYWxPZmZzZXQsIGNvbnN0IEZsb2F0UG9pbnQmIHRhcmdl
dE9mZnNldCwgY29uc3QgRmxvYXRTaXplJiBpbml0aWFsRGVsdGEsIGNvbnN0IEZsb2F0U2l6ZSYg
aW5pdGlhbFZlbG9jaXR5KTsKKyAgICBTY3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3JNYWMoY29u
c3QgRmxvYXRTaXplJiB2aWV3cG9ydFNpemUsIGNvbnN0IEZsb2F0U2l6ZSYgY29udGVudFNpemUs
IGNvbnN0IEZsb2F0UG9pbnQmIGluaXRpYWxPZmZzZXQsIGNvbnN0IEZsb2F0U2l6ZSYgaW5pdGlh
bERlbHRhLCBjb25zdCBGbG9hdFNpemUmIGluaXRpYWxWZWxvY2l0eSk7CiAKIHByaXZhdGU6CiAg
ICAgRmxvYXRQb2ludCBzY3JvbGxPZmZzZXRBZnRlckVsYXBzZWRUaW1lKFNlY29uZHMpIGZpbmFs
OwogICAgIFNlY29uZHMgYW5pbWF0aW9uRHVyYXRpb24oKSBmaW5hbDsKKyAgICBGbG9hdFNpemUg
cHJlZGljdGVkRGVzdGluYXRpb25PZmZzZXQoKSBmaW5hbDsKKyAgICB2b2lkIHJldGFyZ2V0ZWRT
Y3JvbGxPZmZzZXREaWRDaGFuZ2UoKSBmaW5hbDsKICAgICBfTlNTY3JvbGxpbmdNb21lbnR1bUNh
bGN1bGF0b3IgKmVuc3VyZVBsYXRmb3JtTW9tZW50dW1DYWxjdWxhdG9yKCk7CisgICAgYm9vbCBy
ZXF1aXJlc01vbWVudHVtU2Nyb2xsaW5nKCk7CiAKICAgICBSZXRhaW5QdHI8X05TU2Nyb2xsaW5n
TW9tZW50dW1DYWxjdWxhdG9yPiBtX3BsYXRmb3JtTW9tZW50dW1DYWxjdWxhdG9yOwotICAgIGJv
b2wgbV9yZXF1aXJlc01vbWVudHVtU2Nyb2xsaW5nIHsgdHJ1ZSB9OworICAgIHN0ZDo6b3B0aW9u
YWw8Ym9vbD4gbV9yZXF1aXJlc01vbWVudHVtU2Nyb2xsaW5nOworICAgIEZsb2F0UG9pbnQgbV9p
bml0aWFsRGVzdGluYXRpb25PcmlnaW47CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nTW9t
ZW50dW1DYWxjdWxhdG9yTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbWFj
L1Njcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvck1hYy5tbQppbmRleCBmNzI0NTVlYWM3OTY3NmU5
YzhlNDMwMDIyOGMwMzk0YjVkNjFiMGUxLi4xZjg1MWRkZDc3ZWUyNjNkMjUzOTFkZDVjODU5OWVh
YzdmNDk3YjdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9tYWMv
U2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2Uvc2Nyb2xsaW5nL21hYy9TY3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3JNYWMubW0KQEAgLTMy
LDMzICszMiw2NCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXN0ZDo6dW5pcXVlX3B0cjxT
Y3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3I+IFNjcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvcjo6
Y3JlYXRlKGNvbnN0IEZsb2F0U2l6ZSYgdmlld3BvcnRTaXplLCBjb25zdCBGbG9hdFNpemUmIGNv
bnRlbnRTaXplLCBjb25zdCBGbG9hdFBvaW50JiBpbml0aWFsT2Zmc2V0LCBjb25zdCBGbG9hdFBv
aW50JiB0YXJnZXRPZmZzZXQsIGNvbnN0IEZsb2F0U2l6ZSYgaW5pdGlhbERlbHRhLCBjb25zdCBG
bG9hdFNpemUmIGluaXRpYWxWZWxvY2l0eSkKK3N0YXRpYyBib29sIGdFbmFibGVQbGF0Zm9ybU1v
bWVudHVtU2Nyb2xsaW5nUHJlZGljdGlvbiA9IHRydWU7CisKK3N0ZDo6dW5pcXVlX3B0cjxTY3Jv
bGxpbmdNb21lbnR1bUNhbGN1bGF0b3I+IFNjcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvcjo6Y3Jl
YXRlKGNvbnN0IEZsb2F0U2l6ZSYgdmlld3BvcnRTaXplLCBjb25zdCBGbG9hdFNpemUmIGNvbnRl
bnRTaXplLCBjb25zdCBGbG9hdFBvaW50JiBpbml0aWFsT2Zmc2V0LCBjb25zdCBGbG9hdFNpemUm
IGluaXRpYWxEZWx0YSwgY29uc3QgRmxvYXRTaXplJiBpbml0aWFsVmVsb2NpdHkpCiB7Ci0gICAg
cmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8U2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yTWFjPih2
aWV3cG9ydFNpemUsIGNvbnRlbnRTaXplLCBpbml0aWFsT2Zmc2V0LCB0YXJnZXRPZmZzZXQsIGlu
aXRpYWxEZWx0YSwgaW5pdGlhbFZlbG9jaXR5KTsKKyAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1
ZTxTY3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3JNYWM+KHZpZXdwb3J0U2l6ZSwgY29udGVudFNp
emUsIGluaXRpYWxPZmZzZXQsIGluaXRpYWxEZWx0YSwgaW5pdGlhbFZlbG9jaXR5KTsKIH0KIAot
U2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yTWFjOjpTY3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0
b3JNYWMoY29uc3QgRmxvYXRTaXplJiB2aWV3cG9ydFNpemUsIGNvbnN0IEZsb2F0U2l6ZSYgY29u
dGVudFNpemUsIGNvbnN0IEZsb2F0UG9pbnQmIGluaXRpYWxPZmZzZXQsIGNvbnN0IEZsb2F0UG9p
bnQmIHRhcmdldE9mZnNldCwgY29uc3QgRmxvYXRTaXplJiBpbml0aWFsRGVsdGEsIGNvbnN0IEZs
b2F0U2l6ZSYgaW5pdGlhbFZlbG9jaXR5KQotICAgIDogU2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxh
dG9yKHZpZXdwb3J0U2l6ZSwgY29udGVudFNpemUsIGluaXRpYWxPZmZzZXQsIHRhcmdldE9mZnNl
dCwgaW5pdGlhbERlbHRhLCBpbml0aWFsVmVsb2NpdHkpCi0gICAgLCBtX3JlcXVpcmVzTW9tZW50
dW1TY3JvbGxpbmcoaW5pdGlhbE9mZnNldCAhPSB0YXJnZXRPZmZzZXQgfHwgaW5pdGlhbFZlbG9j
aXR5LmFyZWEoKSkKK3ZvaWQgU2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yOjpzZXRQbGF0Zm9y
bU1vbWVudHVtU2Nyb2xsaW5nUHJlZGljdGlvbkVuYWJsZWQoYm9vbCBlbmFibGVkKQoreworICAg
IGdFbmFibGVQbGF0Zm9ybU1vbWVudHVtU2Nyb2xsaW5nUHJlZGljdGlvbiA9IGVuYWJsZWQ7Cit9
CisKK1Njcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvck1hYzo6U2Nyb2xsaW5nTW9tZW50dW1DYWxj
dWxhdG9yTWFjKGNvbnN0IEZsb2F0U2l6ZSYgdmlld3BvcnRTaXplLCBjb25zdCBGbG9hdFNpemUm
IGNvbnRlbnRTaXplLCBjb25zdCBGbG9hdFBvaW50JiBpbml0aWFsT2Zmc2V0LCBjb25zdCBGbG9h
dFNpemUmIGluaXRpYWxEZWx0YSwgY29uc3QgRmxvYXRTaXplJiBpbml0aWFsVmVsb2NpdHkpCisg
ICAgOiBTY3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3Iodmlld3BvcnRTaXplLCBjb250ZW50U2l6
ZSwgaW5pdGlhbE9mZnNldCwgaW5pdGlhbERlbHRhLCBpbml0aWFsVmVsb2NpdHkpCiB7CiB9CiAK
IEZsb2F0UG9pbnQgU2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yTWFjOjpzY3JvbGxPZmZzZXRB
ZnRlckVsYXBzZWRUaW1lKFNlY29uZHMgZWxhcHNlZFRpbWUpCiB7Ci0gICAgaWYgKCFtX3JlcXVp
cmVzTW9tZW50dW1TY3JvbGxpbmcpCi0gICAgICAgIHJldHVybiB7IG1fdGFyZ2V0U2Nyb2xsT2Zm
c2V0LndpZHRoKCksIG1fdGFyZ2V0U2Nyb2xsT2Zmc2V0LmhlaWdodCgpIH07CisgICAgaWYgKCFy
ZXF1aXJlc01vbWVudHVtU2Nyb2xsaW5nKCkpCisgICAgICAgIHJldHVybiB7IHJldGFyZ2V0ZWRT
Y3JvbGxPZmZzZXQoKS53aWR0aCgpLCByZXRhcmdldGVkU2Nyb2xsT2Zmc2V0KCkuaGVpZ2h0KCkg
fTsKIAogICAgIHJldHVybiBbZW5zdXJlUGxhdGZvcm1Nb21lbnR1bUNhbGN1bGF0b3IoKSBwb3Np
dGlvbkFmdGVyRHVyYXRpb246ZWxhcHNlZFRpbWUudmFsdWUoKV07CiB9CiAKK0Zsb2F0U2l6ZSBT
Y3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3JNYWM6OnByZWRpY3RlZERlc3RpbmF0aW9uT2Zmc2V0
KCkKK3sKKyAgICBpZiAoIWdFbmFibGVQbGF0Zm9ybU1vbWVudHVtU2Nyb2xsaW5nUHJlZGljdGlv
bikKKyAgICAgICAgcmV0dXJuIFNjcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvcjo6cHJlZGljdGVk
RGVzdGluYXRpb25PZmZzZXQoKTsKKworICAgIGVuc3VyZVBsYXRmb3JtTW9tZW50dW1DYWxjdWxh
dG9yKCk7CisgICAgcmV0dXJuIHsgbV9pbml0aWFsRGVzdGluYXRpb25PcmlnaW4ueCgpLCBtX2lu
aXRpYWxEZXN0aW5hdGlvbk9yaWdpbi55KCkgfTsKK30KKwordm9pZCBTY3JvbGxpbmdNb21lbnR1
bUNhbGN1bGF0b3JNYWM6OnJldGFyZ2V0ZWRTY3JvbGxPZmZzZXREaWRDaGFuZ2UoKQoreworICAg
IF9OU1Njcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvciAqY2FsY3VsYXRvciA9IGVuc3VyZVBsYXRm
b3JtTW9tZW50dW1DYWxjdWxhdG9yKCk7CisgICAgY2FsY3VsYXRvci5kZXN0aW5hdGlvbk9yaWdp
biA9IE5TTWFrZVBvaW50KHJldGFyZ2V0ZWRTY3JvbGxPZmZzZXQoKS53aWR0aCgpLCByZXRhcmdl
dGVkU2Nyb2xsT2Zmc2V0KCkuaGVpZ2h0KCkpOworI2lmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5f
UkVRVUlSRUQgPj0gMTAxMjAwCisgICAgW2NhbGN1bGF0b3IgY2FsY3VsYXRlVG9SZWFjaERlc3Rp
bmF0aW9uXTsKKyNlbmRpZgorfQorCiBTZWNvbmRzIFNjcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRv
ck1hYzo6YW5pbWF0aW9uRHVyYXRpb24oKQogewotICAgIGlmICghbV9yZXF1aXJlc01vbWVudHVt
U2Nyb2xsaW5nKQorICAgIGlmICghcmVxdWlyZXNNb21lbnR1bVNjcm9sbGluZygpKQogICAgICAg
ICByZXR1cm4gMF9zOwogCiAgICAgcmV0dXJuIFNlY29uZHMoW2Vuc3VyZVBsYXRmb3JtTW9tZW50
dW1DYWxjdWxhdG9yKCkgZHVyYXRpb25VbnRpbFN0b3BdKTsKIH0KIAorYm9vbCBTY3JvbGxpbmdN
b21lbnR1bUNhbGN1bGF0b3JNYWM6OnJlcXVpcmVzTW9tZW50dW1TY3JvbGxpbmcoKQoreworICAg
IGlmIChtX3JlcXVpcmVzTW9tZW50dW1TY3JvbGxpbmcgPT0gc3RkOjpudWxsb3B0KQorICAgICAg
ICBtX3JlcXVpcmVzTW9tZW50dW1TY3JvbGxpbmcgPSBtX2luaXRpYWxTY3JvbGxPZmZzZXQgIT0g
cmV0YXJnZXRlZFNjcm9sbE9mZnNldCgpIHx8IG1faW5pdGlhbFZlbG9jaXR5LmFyZWEoKTsKKyAg
ICByZXR1cm4gbV9yZXF1aXJlc01vbWVudHVtU2Nyb2xsaW5nLnZhbHVlKCk7Cit9CisKIF9OU1Nj
cm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvciAqU2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yTWFj
OjplbnN1cmVQbGF0Zm9ybU1vbWVudHVtQ2FsY3VsYXRvcigpCiB7CiAgICAgaWYgKG1fcGxhdGZv
cm1Nb21lbnR1bUNhbGN1bGF0b3IpCkBAIC02OCwxMCArOTksNyBAQCBfTlNTY3JvbGxpbmdNb21l
bnR1bUNhbGN1bGF0b3IgKlNjcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvck1hYzo6ZW5zdXJlUGxh
dGZvcm1NbwogICAgIE5TUmVjdCBjb250ZW50RnJhbWUgPSBOU01ha2VSZWN0KDAsIDAsIG1fY29u
dGVudFNpemUud2lkdGgoKSwgbV9jb250ZW50U2l6ZS5oZWlnaHQoKSk7CiAgICAgTlNQb2ludCB2
ZWxvY2l0eSA9IE5TTWFrZVBvaW50KG1faW5pdGlhbFZlbG9jaXR5LndpZHRoKCksIG1faW5pdGlh
bFZlbG9jaXR5LmhlaWdodCgpKTsKICAgICBtX3BsYXRmb3JtTW9tZW50dW1DYWxjdWxhdG9yID0g
YWRvcHROUyhbW19OU1Njcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvciBhbGxvY10gaW5pdFdpdGhJ
bml0aWFsT3JpZ2luOm9yaWdpbiB2ZWxvY2l0eTp2ZWxvY2l0eSBkb2N1bWVudEZyYW1lOmNvbnRl
bnRGcmFtZSBjb25zdHJhaW5lZENsaXBwaW5nT3JpZ2luOk5TWmVyb1BvaW50IGNsaXBwaW5nU2l6
ZTptX3ZpZXdwb3J0U2l6ZSB0b2xlcmFuY2U6TlNNYWtlU2l6ZSgxLCAxKV0pOwotICAgIFttX3Bs
YXRmb3JtTW9tZW50dW1DYWxjdWxhdG9yIHNldERlc3RpbmF0aW9uT3JpZ2luOk5TTWFrZVBvaW50
KG1fdGFyZ2V0U2Nyb2xsT2Zmc2V0LndpZHRoKCksIG1fdGFyZ2V0U2Nyb2xsT2Zmc2V0LmhlaWdo
dCgpKV07Ci0jaWYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDEyMDAKLSAg
ICBbbV9wbGF0Zm9ybU1vbWVudHVtQ2FsY3VsYXRvciBjYWxjdWxhdGVUb1JlYWNoRGVzdGluYXRp
b25dOwotI2VuZGlmCisgICAgbV9pbml0aWFsRGVzdGluYXRpb25PcmlnaW4gPSBbbV9wbGF0Zm9y
bU1vbWVudHVtQ2FsY3VsYXRvciBkZXN0aW5hdGlvbk9yaWdpbl07CiAgICAgcmV0dXJuIG1fcGxh
dGZvcm1Nb21lbnR1bUNhbGN1bGF0b3IuZ2V0KCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL21hYy9TY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2Rl
TWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGluZ1RyZWVG
cmFtZVNjcm9sbGluZ05vZGVNYWMubW0KaW5kZXggMTFlN2E3NGRlMzI2MmQ1MTRlZThhMzBlODgz
NTVkOWFkOWFmMTJlNy4uOWEwN2ZmYjg5YWU5YzMyZDI2ZTAzMWQ4MzdlZmM4ODcwYmVlOWU5NiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGluZ1Ry
ZWVGcmFtZVNjcm9sbGluZ05vZGVNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3Jv
bGxpbmcvbWFjL1Njcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVNYWMubW0KQEAgLTkwLDYg
KzkwLDE2IEBAIHN0YXRpYyBpbmxpbmUgVmVjdG9yPExheW91dFVuaXQ+IGNvbnZlcnRUb0xheW91
dFVuaXRzKGNvbnN0IFZlY3RvcjxmbG9hdD4mIHNuYXBPCiAKICAgICByZXR1cm4gc25hcE9mZnNl
dHM7CiB9CisKK3N0YXRpYyBpbmxpbmUgVmVjdG9yPFNjcm9sbE9mZnNldFJhbmdlPExheW91dFVu
aXQ+PiBjb252ZXJ0VG9MYXlvdXRVbml0cyhjb25zdCBWZWN0b3I8U2Nyb2xsT2Zmc2V0UmFuZ2U8
ZmxvYXQ+PiYgc25hcE9mZnNldFJhbmdlc0FzRmxvYXQpCit7CisgICAgVmVjdG9yPFNjcm9sbE9m
ZnNldFJhbmdlPExheW91dFVuaXQ+PiBzbmFwT2Zmc2V0UmFuZ2VzOworICAgIHNuYXBPZmZzZXRS
YW5nZXMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShzbmFwT2Zmc2V0UmFuZ2VzQXNGbG9hdC5zaXpl
KCkpOworICAgIGZvciAoYXV0byByYW5nZSA6IHNuYXBPZmZzZXRSYW5nZXNBc0Zsb2F0KQorICAg
ICAgICBzbmFwT2Zmc2V0UmFuZ2VzLnVuY2hlY2tlZEFwcGVuZCh7IHJhbmdlLnN0YXJ0LCByYW5n
ZS5lbmQgfSk7CisKKyAgICByZXR1cm4gc25hcE9mZnNldFJhbmdlczsKK30KICNlbmRpZgogCiB2
b2lkIFNjcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVNYWM6OmNvbW1pdFN0YXRlQmVmb3Jl
Q2hpbGRyZW4oY29uc3QgU2Nyb2xsaW5nU3RhdGVOb2RlJiBzdGF0ZU5vZGUpCkBAIC0xNDYsMTEg
KzE1NiwxMSBAQCB2b2lkIFNjcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVNYWM6OmNvbW1p
dFN0YXRlQmVmb3JlQ2hpbGRyZW4oY29uc3QgU2Nyb2xsaQogICAgIH0KIAogI2lmIEVOQUJMRShD
U1NfU0NST0xMX1NOQVApCi0gICAgaWYgKHNjcm9sbGluZ1N0YXRlTm9kZS5oYXNDaGFuZ2VkUHJv
cGVydHkoU2Nyb2xsaW5nU3RhdGVGcmFtZVNjcm9sbGluZ05vZGU6Okhvcml6b250YWxTbmFwT2Zm
c2V0cykpCi0gICAgICAgIG1fc2Nyb2xsQ29udHJvbGxlci51cGRhdGVTY3JvbGxTbmFwUG9pbnRz
KFNjcm9sbEV2ZW50QXhpczo6SG9yaXpvbnRhbCwgY29udmVydFRvTGF5b3V0VW5pdHMoc2Nyb2xs
aW5nU3RhdGVOb2RlLmhvcml6b250YWxTbmFwT2Zmc2V0cygpKSk7CisgICAgaWYgKHNjcm9sbGlu
Z1N0YXRlTm9kZS5oYXNDaGFuZ2VkUHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVGcmFtZVNjcm9sbGlu
Z05vZGU6Okhvcml6b250YWxTbmFwT2Zmc2V0cykgfHwgc2Nyb2xsaW5nU3RhdGVOb2RlLmhhc0No
YW5nZWRQcm9wZXJ0eShTY3JvbGxpbmdTdGF0ZUZyYW1lU2Nyb2xsaW5nTm9kZTo6SG9yaXpvbnRh
bFNuYXBPZmZzZXRSYW5nZXMpKQorICAgICAgICBtX3Njcm9sbENvbnRyb2xsZXIudXBkYXRlU2Ny
b2xsU25hcFBvaW50cyhTY3JvbGxFdmVudEF4aXM6Okhvcml6b250YWwsIGNvbnZlcnRUb0xheW91
dFVuaXRzKHNjcm9sbGluZ1N0YXRlTm9kZS5ob3Jpem9udGFsU25hcE9mZnNldHMoKSksIGNvbnZl
cnRUb0xheW91dFVuaXRzKHNjcm9sbGluZ1N0YXRlTm9kZS5ob3Jpem9udGFsU25hcE9mZnNldFJh
bmdlcygpKSk7CiAKLSAgICBpZiAoc2Nyb2xsaW5nU3RhdGVOb2RlLmhhc0NoYW5nZWRQcm9wZXJ0
eShTY3JvbGxpbmdTdGF0ZUZyYW1lU2Nyb2xsaW5nTm9kZTo6VmVydGljYWxTbmFwT2Zmc2V0cykp
Ci0gICAgICAgIG1fc2Nyb2xsQ29udHJvbGxlci51cGRhdGVTY3JvbGxTbmFwUG9pbnRzKFNjcm9s
bEV2ZW50QXhpczo6VmVydGljYWwsIGNvbnZlcnRUb0xheW91dFVuaXRzKHNjcm9sbGluZ1N0YXRl
Tm9kZS52ZXJ0aWNhbFNuYXBPZmZzZXRzKCkpKTsKKyAgICBpZiAoc2Nyb2xsaW5nU3RhdGVOb2Rl
Lmhhc0NoYW5nZWRQcm9wZXJ0eShTY3JvbGxpbmdTdGF0ZUZyYW1lU2Nyb2xsaW5nTm9kZTo6VmVy
dGljYWxTbmFwT2Zmc2V0cykgfHwgc2Nyb2xsaW5nU3RhdGVOb2RlLmhhc0NoYW5nZWRQcm9wZXJ0
eShTY3JvbGxpbmdTdGF0ZUZyYW1lU2Nyb2xsaW5nTm9kZTo6VmVydGljYWxTbmFwT2Zmc2V0UmFu
Z2VzKSkKKyAgICAgICAgbV9zY3JvbGxDb250cm9sbGVyLnVwZGF0ZVNjcm9sbFNuYXBQb2ludHMo
U2Nyb2xsRXZlbnRBeGlzOjpWZXJ0aWNhbCwgY29udmVydFRvTGF5b3V0VW5pdHMoc2Nyb2xsaW5n
U3RhdGVOb2RlLnZlcnRpY2FsU25hcE9mZnNldHMoKSksIGNvbnZlcnRUb0xheW91dFVuaXRzKHNj
cm9sbGluZ1N0YXRlTm9kZS52ZXJ0aWNhbFNuYXBPZmZzZXRSYW5nZXMoKSkpOwogCiAgICAgaWYg
KHNjcm9sbGluZ1N0YXRlTm9kZS5oYXNDaGFuZ2VkUHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVTY3Jv
bGxpbmdOb2RlOjpDdXJyZW50SG9yaXpvbnRhbFNuYXBPZmZzZXRJbmRleCkpCiAgICAgICAgIG1f
c2Nyb2xsQ29udHJvbGxlci5zZXRBY3RpdmVTY3JvbGxTbmFwSW5kZXhGb3JBeGlzKFNjcm9sbEV2
ZW50QXhpczo6SG9yaXpvbnRhbCwgc2Nyb2xsaW5nU3RhdGVOb2RlLmN1cnJlbnRIb3Jpem9udGFs
U25hcFBvaW50SW5kZXgoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9T
Y3JvbGxhYmxlQXJlYS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxhYmxlQXJl
YS5jcHAKaW5kZXggYTcxYjA3OTFhMDBkZTc4NWE1MTczMTc5ZmM4Y2JmMTJhMWQ1MTUzYi4uZGVh
ZDcyMTY5ODJmMjZkZGViYWU1MmEwMDE3MDAxYjhkYzdmZGRlZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYWJsZUFyZWEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1Njcm9sbGFibGVBcmVhLmNwcApAQCAtNDgsNyArNDgsNyBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiBzdHJ1Y3QgU2FtZVNpemVBc1Njcm9sbGFibGVBcmVhIHsKICAgICB2aXJ0dWFs
IH5TYW1lU2l6ZUFzU2Nyb2xsYWJsZUFyZWEoKTsKICNpZiBFTkFCTEUoQ1NTX1NDUk9MTF9TTkFQ
KQotICAgIHZvaWQqIHBvaW50ZXJzWzRdOworICAgIHZvaWQqIHBvaW50ZXJzWzNdOwogICAgIHVu
c2lnbmVkIGN1cnJlbnRJbmRpY2VzWzJdOwogI2Vsc2UKICAgICB2b2lkKiBwb2ludGVyWzJdOwpA
QCAtNDI1LDM1ICs0MjUsOTAgQEAgYm9vbCBTY3JvbGxhYmxlQXJlYTo6aGFzTGF5ZXJGb3JTY3Jv
bGxDb3JuZXIoKSBjb25zdAogfQogCiAjaWYgRU5BQkxFKENTU19TQ1JPTExfU05BUCkKLXZvaWQg
U2Nyb2xsYWJsZUFyZWE6OnNldEhvcml6b250YWxTbmFwT2Zmc2V0cyhzdGQ6OnVuaXF1ZV9wdHI8
VmVjdG9yPExheW91dFVuaXQ+PiBob3Jpem9udGFsU25hcE9mZnNldHMpCitTY3JvbGxTbmFwT2Zm
c2V0c0luZm88TGF5b3V0VW5pdD4mIFNjcm9sbGFibGVBcmVhOjplbnN1cmVTbmFwT2Zmc2V0c0lu
Zm8oKQoreworICAgIGlmICghbV9zbmFwT2Zmc2V0c0luZm8pCisgICAgICAgIG1fc25hcE9mZnNl
dHNJbmZvID0gc3RkOjptYWtlX3VuaXF1ZTxTY3JvbGxTbmFwT2Zmc2V0c0luZm88TGF5b3V0VW5p
dD4+KCk7CisgICAgcmV0dXJuICptX3NuYXBPZmZzZXRzSW5mbzsKK30KKworY29uc3QgVmVjdG9y
PExheW91dFVuaXQ+KiBTY3JvbGxhYmxlQXJlYTo6aG9yaXpvbnRhbFNuYXBPZmZzZXRzKCkgY29u
c3QKK3sKKyAgICBpZiAoIW1fc25hcE9mZnNldHNJbmZvKQorICAgICAgICByZXR1cm4gbnVsbHB0
cjsKKworICAgIHJldHVybiAmbV9zbmFwT2Zmc2V0c0luZm8tPmhvcml6b250YWxTbmFwT2Zmc2V0
czsKK30KKworY29uc3QgVmVjdG9yPFNjcm9sbE9mZnNldFJhbmdlPExheW91dFVuaXQ+PiogU2Ny
b2xsYWJsZUFyZWE6Omhvcml6b250YWxTbmFwT2Zmc2V0UmFuZ2VzKCkgY29uc3QKK3sKKyAgICBp
ZiAoIW1fc25hcE9mZnNldHNJbmZvKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIHJl
dHVybiAmbV9zbmFwT2Zmc2V0c0luZm8tPmhvcml6b250YWxTbmFwT2Zmc2V0UmFuZ2VzOworfQor
Citjb25zdCBWZWN0b3I8U2Nyb2xsT2Zmc2V0UmFuZ2U8TGF5b3V0VW5pdD4+KiBTY3JvbGxhYmxl
QXJlYTo6dmVydGljYWxTbmFwT2Zmc2V0UmFuZ2VzKCkgY29uc3QKK3sKKyAgICBpZiAoIW1fc25h
cE9mZnNldHNJbmZvKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIHJldHVybiAmbV9z
bmFwT2Zmc2V0c0luZm8tPnZlcnRpY2FsU25hcE9mZnNldFJhbmdlczsKK30KKworY29uc3QgVmVj
dG9yPExheW91dFVuaXQ+KiBTY3JvbGxhYmxlQXJlYTo6dmVydGljYWxTbmFwT2Zmc2V0cygpIGNv
bnN0Cit7CisgICAgaWYgKCFtX3NuYXBPZmZzZXRzSW5mbykKKyAgICAgICAgcmV0dXJuIG51bGxw
dHI7CisKKyAgICByZXR1cm4gJm1fc25hcE9mZnNldHNJbmZvLT52ZXJ0aWNhbFNuYXBPZmZzZXRz
OworfQorCit2b2lkIFNjcm9sbGFibGVBcmVhOjpzZXRIb3Jpem9udGFsU25hcE9mZnNldHMoY29u
c3QgVmVjdG9yPExheW91dFVuaXQ+JiBob3Jpem9udGFsU25hcE9mZnNldHMpCiB7Ci0gICAgQVNT
RVJUKGhvcml6b250YWxTbmFwT2Zmc2V0cyk7CiAgICAgLy8gQ29uc2lkZXIgaGF2aW5nIGEgbm9u
LWVtcHR5IHNldCBvZiBzbmFwIG9mZnNldHMgYXMgYSBjdWUgdG8gaW5pdGlhbGl6ZSB0aGUgU2Ny
b2xsQW5pbWF0b3IuCi0gICAgaWYgKGhvcml6b250YWxTbmFwT2Zmc2V0cy0+c2l6ZSgpKQorICAg
IGlmIChob3Jpem9udGFsU25hcE9mZnNldHMuc2l6ZSgpKQogICAgICAgICBzY3JvbGxBbmltYXRv
cigpOwogCi0gICAgbV9ob3Jpem9udGFsU25hcE9mZnNldHMgPSBXVEZNb3ZlKGhvcml6b250YWxT
bmFwT2Zmc2V0cyk7CisgICAgZW5zdXJlU25hcE9mZnNldHNJbmZvKCkuaG9yaXpvbnRhbFNuYXBP
ZmZzZXRzID0gaG9yaXpvbnRhbFNuYXBPZmZzZXRzOwogfQogCi12b2lkIFNjcm9sbGFibGVBcmVh
OjpzZXRWZXJ0aWNhbFNuYXBPZmZzZXRzKHN0ZDo6dW5pcXVlX3B0cjxWZWN0b3I8TGF5b3V0VW5p
dD4+IHZlcnRpY2FsU25hcE9mZnNldHMpCit2b2lkIFNjcm9sbGFibGVBcmVhOjpzZXRWZXJ0aWNh
bFNuYXBPZmZzZXRzKGNvbnN0IFZlY3RvcjxMYXlvdXRVbml0PiYgdmVydGljYWxTbmFwT2Zmc2V0
cykKIHsKLSAgICBBU1NFUlQodmVydGljYWxTbmFwT2Zmc2V0cyk7CiAgICAgLy8gQ29uc2lkZXIg
aGF2aW5nIGEgbm9uLWVtcHR5IHNldCBvZiBzbmFwIG9mZnNldHMgYXMgYSBjdWUgdG8gaW5pdGlh
bGl6ZSB0aGUgU2Nyb2xsQW5pbWF0b3IuCi0gICAgaWYgKHZlcnRpY2FsU25hcE9mZnNldHMtPnNp
emUoKSkKKyAgICBpZiAodmVydGljYWxTbmFwT2Zmc2V0cy5zaXplKCkpCiAgICAgICAgIHNjcm9s
bEFuaW1hdG9yKCk7CiAKLSAgICBtX3ZlcnRpY2FsU25hcE9mZnNldHMgPSBXVEZNb3ZlKHZlcnRp
Y2FsU25hcE9mZnNldHMpOworICAgIGVuc3VyZVNuYXBPZmZzZXRzSW5mbygpLnZlcnRpY2FsU25h
cE9mZnNldHMgPSB2ZXJ0aWNhbFNuYXBPZmZzZXRzOworfQorCit2b2lkIFNjcm9sbGFibGVBcmVh
OjpzZXRIb3Jpem9udGFsU25hcE9mZnNldFJhbmdlcyhjb25zdCBWZWN0b3I8U2Nyb2xsT2Zmc2V0
UmFuZ2U8TGF5b3V0VW5pdD4+JiBob3Jpem9udGFsUmFuZ2VzKQoreworICAgIGVuc3VyZVNuYXBP
ZmZzZXRzSW5mbygpLmhvcml6b250YWxTbmFwT2Zmc2V0UmFuZ2VzID0gaG9yaXpvbnRhbFJhbmdl
czsKK30KKwordm9pZCBTY3JvbGxhYmxlQXJlYTo6c2V0VmVydGljYWxTbmFwT2Zmc2V0UmFuZ2Vz
KGNvbnN0IFZlY3RvcjxTY3JvbGxPZmZzZXRSYW5nZTxMYXlvdXRVbml0Pj4mIHZlcnRpY2FsUmFu
Z2VzKQoreworICAgIGVuc3VyZVNuYXBPZmZzZXRzSW5mbygpLnZlcnRpY2FsU25hcE9mZnNldFJh
bmdlcyA9IHZlcnRpY2FsUmFuZ2VzOwogfQogCiB2b2lkIFNjcm9sbGFibGVBcmVhOjpjbGVhckhv
cml6b250YWxTbmFwT2Zmc2V0cygpCiB7Ci0gICAgbV9ob3Jpem9udGFsU25hcE9mZnNldHMgPSBu
dWxscHRyOworICAgIGlmICghbV9zbmFwT2Zmc2V0c0luZm8pCisgICAgICAgIHJldHVybjsKKwor
ICAgIG1fc25hcE9mZnNldHNJbmZvLT5ob3Jpem9udGFsU25hcE9mZnNldHMgPSB7IH07CisgICAg
bV9zbmFwT2Zmc2V0c0luZm8tPmhvcml6b250YWxTbmFwT2Zmc2V0UmFuZ2VzID0geyB9OwogICAg
IG1fY3VycmVudEhvcml6b250YWxTbmFwUG9pbnRJbmRleCA9IDA7CiB9CiAKIHZvaWQgU2Nyb2xs
YWJsZUFyZWE6OmNsZWFyVmVydGljYWxTbmFwT2Zmc2V0cygpCiB7Ci0gICAgbV92ZXJ0aWNhbFNu
YXBPZmZzZXRzID0gbnVsbHB0cjsKKyAgICBpZiAoIW1fc25hcE9mZnNldHNJbmZvKQorICAgICAg
ICByZXR1cm47CisKKyAgICBtX3NuYXBPZmZzZXRzSW5mby0+dmVydGljYWxTbmFwT2Zmc2V0cyA9
IHsgfTsKKyAgICBtX3NuYXBPZmZzZXRzSW5mby0+dmVydGljYWxTbmFwT2Zmc2V0UmFuZ2VzID0g
eyB9OwogICAgIG1fY3VycmVudFZlcnRpY2FsU25hcFBvaW50SW5kZXggPSAwOwogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxhYmxlQXJlYS5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYWJsZUFyZWEuaAppbmRleCA4OTA5NzE1YTdjZTIwN2Rj
YjJmZjA1NmMwNzBmZjUxMGFiYWU4ZDIyLi4yNGY4YjE2MGFjODM1MGFlZWVmOGU1NDhkYzJjYzA2
Y2Y4NDRhOTdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxhYmxl
QXJlYS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGFibGVBcmVhLmgKQEAg
LTI2LDYgKzI2LDcgQEAKICNpZm5kZWYgU2Nyb2xsYWJsZUFyZWFfaAogI2RlZmluZSBTY3JvbGxh
YmxlQXJlYV9oCiAKKyNpbmNsdWRlICJTY3JvbGxTbmFwT2Zmc2V0c0luZm8uaCIKICNpbmNsdWRl
ICJTY3JvbGxiYXIuaCIKICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAjaW5jbHVkZSA8d3RmL1dl
YWtQdHIuaD4KQEAgLTY3LDExICs2OCwxNSBAQCBwdWJsaWM6CiAgICAgV2Vha1B0cjxTY3JvbGxh
YmxlQXJlYT4gY3JlYXRlV2Vha1B0cigpIHsgcmV0dXJuIG1fd2Vha1B0ckZhY3RvcnkuY3JlYXRl
V2Vha1B0cigpOyB9CiAKICNpZiBFTkFCTEUoQ1NTX1NDUk9MTF9TTkFQKQotICAgIGNvbnN0IFZl
Y3RvcjxMYXlvdXRVbml0PiogaG9yaXpvbnRhbFNuYXBPZmZzZXRzKCkgY29uc3QgeyByZXR1cm4g
bV9ob3Jpem9udGFsU25hcE9mZnNldHMuZ2V0KCk7IH07Ci0gICAgY29uc3QgVmVjdG9yPExheW91
dFVuaXQ+KiB2ZXJ0aWNhbFNuYXBPZmZzZXRzKCkgY29uc3QgeyByZXR1cm4gbV92ZXJ0aWNhbFNu
YXBPZmZzZXRzLmdldCgpOyB9OworICAgIFdFQkNPUkVfRVhQT1JUIGNvbnN0IFZlY3RvcjxMYXlv
dXRVbml0PiogaG9yaXpvbnRhbFNuYXBPZmZzZXRzKCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBP
UlQgY29uc3QgVmVjdG9yPExheW91dFVuaXQ+KiB2ZXJ0aWNhbFNuYXBPZmZzZXRzKCkgY29uc3Q7
CisgICAgV0VCQ09SRV9FWFBPUlQgY29uc3QgVmVjdG9yPFNjcm9sbE9mZnNldFJhbmdlPExheW91
dFVuaXQ+PiogaG9yaXpvbnRhbFNuYXBPZmZzZXRSYW5nZXMoKSBjb25zdDsKKyAgICBXRUJDT1JF
X0VYUE9SVCBjb25zdCBWZWN0b3I8U2Nyb2xsT2Zmc2V0UmFuZ2U8TGF5b3V0VW5pdD4+KiB2ZXJ0
aWNhbFNuYXBPZmZzZXRSYW5nZXMoKSBjb25zdDsKICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlU25h
cE9mZnNldHMoKSB7IH07Ci0gICAgdm9pZCBzZXRIb3Jpem9udGFsU25hcE9mZnNldHMoc3RkOjp1
bmlxdWVfcHRyPFZlY3RvcjxMYXlvdXRVbml0Pj4pOwotICAgIHZvaWQgc2V0VmVydGljYWxTbmFw
T2Zmc2V0cyhzdGQ6OnVuaXF1ZV9wdHI8VmVjdG9yPExheW91dFVuaXQ+Pik7CisgICAgdm9pZCBz
ZXRIb3Jpem9udGFsU25hcE9mZnNldHMoY29uc3QgVmVjdG9yPExheW91dFVuaXQ+Jik7CisgICAg
dm9pZCBzZXRWZXJ0aWNhbFNuYXBPZmZzZXRzKGNvbnN0IFZlY3RvcjxMYXlvdXRVbml0PiYpOwor
ICAgIHZvaWQgc2V0SG9yaXpvbnRhbFNuYXBPZmZzZXRSYW5nZXMoY29uc3QgVmVjdG9yPFNjcm9s
bE9mZnNldFJhbmdlPExheW91dFVuaXQ+PiYpOworICAgIHZvaWQgc2V0VmVydGljYWxTbmFwT2Zm
c2V0UmFuZ2VzKGNvbnN0IFZlY3RvcjxTY3JvbGxPZmZzZXRSYW5nZTxMYXlvdXRVbml0Pj4mKTsK
ICAgICB2b2lkIGNsZWFySG9yaXpvbnRhbFNuYXBPZmZzZXRzKCk7CiAgICAgdm9pZCBjbGVhclZl
cnRpY2FsU25hcE9mZnNldHMoKTsKICAgICB1bnNpZ25lZCBjdXJyZW50SG9yaXpvbnRhbFNuYXBQ
b2ludEluZGV4KCkgY29uc3QgeyByZXR1cm4gbV9jdXJyZW50SG9yaXpvbnRhbFNuYXBQb2ludElu
ZGV4OyB9CkBAIC0zNDYsMTQgKzM1MSwxNCBAQCBwcml2YXRlOgogICAgIC8vIFRoaXMgZnVuY3Rp
b24gc2hvdWxkIGJlIG92ZXJyaWRlbiBieSBzdWJjbGFzc2VzIHRvIHBlcmZvcm0gdGhlIGFjdHVh
bAogICAgIC8vIHNjcm9sbCBvZiB0aGUgY29udGVudC4KICAgICB2aXJ0dWFsIHZvaWQgc2V0U2Ny
b2xsT2Zmc2V0KGNvbnN0IFNjcm9sbE9mZnNldCYpID0gMDsKKyAgICBTY3JvbGxTbmFwT2Zmc2V0
c0luZm88TGF5b3V0VW5pdD4mIGVuc3VyZVNuYXBPZmZzZXRzSW5mbygpOwogCiAgICAgbXV0YWJs
ZSBzdGQ6OnVuaXF1ZV9wdHI8U2Nyb2xsQW5pbWF0b3I+IG1fc2Nyb2xsQW5pbWF0b3I7CiAKICAg
ICBXZWFrUHRyRmFjdG9yeTxTY3JvbGxhYmxlQXJlYT4gbV93ZWFrUHRyRmFjdG9yeSB7IHRoaXMg
fTsKIAogI2lmIEVOQUJMRShDU1NfU0NST0xMX1NOQVApCi0gICAgc3RkOjp1bmlxdWVfcHRyPFZl
Y3RvcjxMYXlvdXRVbml0Pj4gbV9ob3Jpem9udGFsU25hcE9mZnNldHM7Ci0gICAgc3RkOjp1bmlx
dWVfcHRyPFZlY3RvcjxMYXlvdXRVbml0Pj4gbV92ZXJ0aWNhbFNuYXBPZmZzZXRzOworICAgIHN0
ZDo6dW5pcXVlX3B0cjxTY3JvbGxTbmFwT2Zmc2V0c0luZm88TGF5b3V0VW5pdD4+IG1fc25hcE9m
ZnNldHNJbmZvOwogICAgIHVuc2lnbmVkIG1fY3VycmVudEhvcml6b250YWxTbmFwUG9pbnRJbmRl
eCB7IDAgfTsKICAgICB1bnNpZ25lZCBtX2N1cnJlbnRWZXJ0aWNhbFNuYXBQb2ludEluZGV4IHsg
MCB9OwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9T
Y3JvbGxDb250cm9sbGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9TY3JvbGxD
b250cm9sbGVyLmgKaW5kZXggYjFjN2EwYzFjMDRkODYyYTEyODc1OTVhMjQ2YzI4ZWMyM2UyMmQ1
YS4uMGU0NDc4OWYwYTEyNmFlOGE0Mjc1NDYzMWNkZmY0MDZjOWI5NGI2MCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvU2Nyb2xsQ29udHJvbGxlci5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1Njcm9sbENvbnRyb2xsZXIuaApAQCAtMzcsNiAr
MzcsNyBAQAogCiAjaWYgRU5BQkxFKENTU19TQ1JPTExfU05BUCkKICNpbmNsdWRlICJTY3JvbGxT
bmFwQW5pbWF0b3JTdGF0ZS5oIgorI2luY2x1ZGUgIlNjcm9sbFNuYXBPZmZzZXRzSW5mby5oIgog
I2VuZGlmCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTEzMyw3ICsxMzQsNyBAQCBwdWJsaWM6
CiAgICAgYm9vbCBpc1Njcm9sbFNuYXBJblByb2dyZXNzKCkgY29uc3Q7CiAKICNpZiBFTkFCTEUo
Q1NTX1NDUk9MTF9TTkFQKQotICAgIHZvaWQgdXBkYXRlU2Nyb2xsU25hcFBvaW50cyhTY3JvbGxF
dmVudEF4aXMsIGNvbnN0IFZlY3RvcjxMYXlvdXRVbml0PiYpOworICAgIHZvaWQgdXBkYXRlU2Ny
b2xsU25hcFBvaW50cyhTY3JvbGxFdmVudEF4aXMsIGNvbnN0IFZlY3RvcjxMYXlvdXRVbml0PiYs
IGNvbnN0IFZlY3RvcjxTY3JvbGxPZmZzZXRSYW5nZTxMYXlvdXRVbml0Pj4mKTsKICAgICB2b2lk
IHNldEFjdGl2ZVNjcm9sbFNuYXBJbmRleEZvckF4aXMoU2Nyb2xsRXZlbnRBeGlzLCB1bnNpZ25l
ZCk7CiAgICAgdm9pZCBzZXRBY3RpdmVTY3JvbGxTbmFwSW5kaWNlc0Zvck9mZnNldChpbnQgeCwg
aW50IHkpOwogICAgIGJvb2wgYWN0aXZlU2Nyb2xsU25hcEluZGV4RGlkQ2hhbmdlKCkgY29uc3Qg
eyByZXR1cm4gbV9hY3RpdmVTY3JvbGxTbmFwSW5kZXhEaWRDaGFuZ2U7IH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1Njcm9sbENvbnRyb2xsZXIubW0gYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9TY3JvbGxDb250cm9sbGVyLm1tCmluZGV4IGU0NmVj
NTZhNzRlMjYyZGYxOGYwMjcyYTcyM2IzNWMyNDU2ODc2NTcuLmE4N2QzM2IzMzFlMzQ5ZDEwZjFm
MzAwMDIwOTY0NmE1Yjg0NWJkZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2NvY29hL1Njcm9sbENvbnRyb2xsZXIubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Y29jb2EvU2Nyb2xsQ29udHJvbGxlci5tbQpAQCAtNTUzLDE0ICs1NTMsMTUgQEAgYm9vbCBTY3Jv
bGxDb250cm9sbGVyOjpwcm9jZXNzV2hlZWxFdmVudEZvclNjcm9sbFNuYXAoY29uc3QgUGxhdGZv
cm1XaGVlbEV2ZW50JgogICAgIGNhc2UgV2hlZWxFdmVudFN0YXR1czo6VXNlclNjcm9sbGluZzoK
ICAgICAgICAgc3RvcFNjcm9sbFNuYXBUaW1lcigpOwogICAgICAgICBtX3Njcm9sbFNuYXBTdGF0
ZS0+dHJhbnNpdGlvblRvVXNlckludGVyYWN0aW9uU3RhdGUoKTsKKyAgICAgICAgbV9kcmFnRW5k
ZWRTY3JvbGxpbmdWZWxvY2l0eSA9IC13aGVlbEV2ZW50LnNjcm9sbGluZ1ZlbG9jaXR5KCk7CiAg
ICAgICAgIGJyZWFrOwogICAgIGNhc2UgV2hlZWxFdmVudFN0YXR1czo6VXNlclNjcm9sbEVuZDoK
LSAgICAgICAgbV9kcmFnRW5kZWRTY3JvbGxpbmdWZWxvY2l0eSA9IC13aGVlbEV2ZW50LnNjcm9s
bGluZ1ZlbG9jaXR5KCk7CiAgICAgICAgIG1fc2Nyb2xsU25hcFN0YXRlLT50cmFuc2l0aW9uVG9T
bmFwQW5pbWF0aW9uU3RhdGUobV9jbGllbnQuc2Nyb2xsRXh0ZW50KCksIG1fY2xpZW50LnZpZXdw
b3J0U2l6ZSgpLCBtX2NsaWVudC5wYWdlU2NhbGVGYWN0b3IoKSwgbV9jbGllbnQuc2Nyb2xsT2Zm
c2V0KCkpOwogICAgICAgICBzdGFydFNjcm9sbFNuYXBUaW1lcigpOwogICAgICAgICBicmVhazsK
ICAgICBjYXNlIFdoZWVsRXZlbnRTdGF0dXM6OkluZXJ0aWFsU2Nyb2xsQmVnaW46CiAgICAgICAg
IG1fc2Nyb2xsU25hcFN0YXRlLT50cmFuc2l0aW9uVG9HbGlkZUFuaW1hdGlvblN0YXRlKG1fY2xp
ZW50LnNjcm9sbEV4dGVudCgpLCBtX2NsaWVudC52aWV3cG9ydFNpemUoKSwgbV9jbGllbnQucGFn
ZVNjYWxlRmFjdG9yKCksIG1fY2xpZW50LnNjcm9sbE9mZnNldCgpLCBtX2RyYWdFbmRlZFNjcm9s
bGluZ1ZlbG9jaXR5LCBGbG9hdFNpemUoLXdoZWVsRXZlbnQuZGVsdGFYKCksIC13aGVlbEV2ZW50
LmRlbHRhWSgpKSk7CisgICAgICAgIG1fZHJhZ0VuZGVkU2Nyb2xsaW5nVmVsb2NpdHkgPSB7IH07
CiAgICAgICAgIGlzSW5lcnRpYWxTY3JvbGxpbmcgPSB0cnVlOwogICAgICAgICBicmVhazsKICAg
ICBjYXNlIFdoZWVsRXZlbnRTdGF0dXM6OkluZXJ0aWFsU2Nyb2xsaW5nOgpAQCAtNTgxLDE4ICs1
ODIsMjQgQEAgYm9vbCBTY3JvbGxDb250cm9sbGVyOjpwcm9jZXNzV2hlZWxFdmVudEZvclNjcm9s
bFNuYXAoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50JgogCiB2b2lkIFNjcm9sbENvbnRyb2xsZXI6
OnVwZGF0ZVNjcm9sbFNuYXBTdGF0ZShjb25zdCBTY3JvbGxhYmxlQXJlYSYgc2Nyb2xsYWJsZUFy
ZWEpCiB7Ci0gICAgaWYgKGF1dG8qIHNuYXBPZmZzZXRzID0gc2Nyb2xsYWJsZUFyZWEuaG9yaXpv
bnRhbFNuYXBPZmZzZXRzKCkpCi0gICAgICAgIHVwZGF0ZVNjcm9sbFNuYXBQb2ludHMoU2Nyb2xs
RXZlbnRBeGlzOjpIb3Jpem9udGFsLCAqc25hcE9mZnNldHMpOwotICAgIGVsc2UKLSAgICAgICAg
dXBkYXRlU2Nyb2xsU25hcFBvaW50cyhTY3JvbGxFdmVudEF4aXM6Okhvcml6b250YWwsIHsgfSk7
CisgICAgaWYgKGF1dG8qIHNuYXBPZmZzZXRzID0gc2Nyb2xsYWJsZUFyZWEuaG9yaXpvbnRhbFNu
YXBPZmZzZXRzKCkpIHsKKyAgICAgICAgaWYgKGF1dG8qIHNuYXBPZmZzZXRSYW5nZXMgPSBzY3Jv
bGxhYmxlQXJlYS5ob3Jpem9udGFsU25hcE9mZnNldFJhbmdlcygpKQorICAgICAgICAgICAgdXBk
YXRlU2Nyb2xsU25hcFBvaW50cyhTY3JvbGxFdmVudEF4aXM6Okhvcml6b250YWwsICpzbmFwT2Zm
c2V0cywgKnNuYXBPZmZzZXRSYW5nZXMpOworICAgICAgICBlbHNlCisgICAgICAgICAgICB1cGRh
dGVTY3JvbGxTbmFwUG9pbnRzKFNjcm9sbEV2ZW50QXhpczo6SG9yaXpvbnRhbCwgKnNuYXBPZmZz
ZXRzLCB7IH0pOworICAgIH0gZWxzZQorICAgICAgICB1cGRhdGVTY3JvbGxTbmFwUG9pbnRzKFNj
cm9sbEV2ZW50QXhpczo6SG9yaXpvbnRhbCwgeyB9LCB7IH0pOwogCi0gICAgaWYgKGF1dG8qIHNu
YXBPZmZzZXRzID0gc2Nyb2xsYWJsZUFyZWEudmVydGljYWxTbmFwT2Zmc2V0cygpKQotICAgICAg
ICB1cGRhdGVTY3JvbGxTbmFwUG9pbnRzKFNjcm9sbEV2ZW50QXhpczo6VmVydGljYWwsICpzbmFw
T2Zmc2V0cyk7Ci0gICAgZWxzZQotICAgICAgICB1cGRhdGVTY3JvbGxTbmFwUG9pbnRzKFNjcm9s
bEV2ZW50QXhpczo6VmVydGljYWwsIHsgfSk7CisgICAgaWYgKGF1dG8qIHNuYXBPZmZzZXRzID0g
c2Nyb2xsYWJsZUFyZWEudmVydGljYWxTbmFwT2Zmc2V0cygpKSB7CisgICAgICAgIGlmIChhdXRv
KiBzbmFwT2Zmc2V0UmFuZ2VzID0gc2Nyb2xsYWJsZUFyZWEudmVydGljYWxTbmFwT2Zmc2V0UmFu
Z2VzKCkpCisgICAgICAgICAgICB1cGRhdGVTY3JvbGxTbmFwUG9pbnRzKFNjcm9sbEV2ZW50QXhp
czo6VmVydGljYWwsICpzbmFwT2Zmc2V0cywgKnNuYXBPZmZzZXRSYW5nZXMpOworICAgICAgICBl
bHNlCisgICAgICAgICAgICB1cGRhdGVTY3JvbGxTbmFwUG9pbnRzKFNjcm9sbEV2ZW50QXhpczo6
VmVydGljYWwsICpzbmFwT2Zmc2V0cywgeyB9KTsKKyAgICB9IGVsc2UKKyAgICAgICAgdXBkYXRl
U2Nyb2xsU25hcFBvaW50cyhTY3JvbGxFdmVudEF4aXM6OlZlcnRpY2FsLCB7IH0sIHsgfSk7CiB9
CiAKLXZvaWQgU2Nyb2xsQ29udHJvbGxlcjo6dXBkYXRlU2Nyb2xsU25hcFBvaW50cyhTY3JvbGxF
dmVudEF4aXMgYXhpcywgY29uc3QgVmVjdG9yPExheW91dFVuaXQ+JiBzbmFwUG9pbnRzKQordm9p
ZCBTY3JvbGxDb250cm9sbGVyOjp1cGRhdGVTY3JvbGxTbmFwUG9pbnRzKFNjcm9sbEV2ZW50QXhp
cyBheGlzLCBjb25zdCBWZWN0b3I8TGF5b3V0VW5pdD4mIHNuYXBQb2ludHMsIGNvbnN0IFZlY3Rv
cjxTY3JvbGxPZmZzZXRSYW5nZTxMYXlvdXRVbml0Pj4mIHNuYXBSYW5nZXMpCiB7CiAgICAgaWYg
KCFtX3Njcm9sbFNuYXBTdGF0ZSkgewogICAgICAgICBpZiAoc25hcFBvaW50cy5pc0VtcHR5KCkp
CkBAIC02MDQsNyArNjExLDcgQEAgdm9pZCBTY3JvbGxDb250cm9sbGVyOjp1cGRhdGVTY3JvbGxT
bmFwUG9pbnRzKFNjcm9sbEV2ZW50QXhpcyBheGlzLCBjb25zdCBWZWN0b3IKICAgICBpZiAoc25h
cFBvaW50cy5pc0VtcHR5KCkgJiYgbV9zY3JvbGxTbmFwU3RhdGUtPnNuYXBPZmZzZXRzRm9yQXhp
cyhvdGhlclNjcm9sbEV2ZW50QXhpcyhheGlzKSkuaXNFbXB0eSgpKQogICAgICAgICBtX3Njcm9s
bFNuYXBTdGF0ZSA9IG51bGxwdHI7CiAgICAgZWxzZQotICAgICAgICBtX3Njcm9sbFNuYXBTdGF0
ZS0+c2V0U25hcE9mZnNldHNGb3JBeGlzKGF4aXMsIHNuYXBQb2ludHMpOworICAgICAgICBtX3Nj
cm9sbFNuYXBTdGF0ZS0+c2V0U25hcE9mZnNldHNBbmRQb3NpdGlvblJhbmdlc0ZvckF4aXMoYXhp
cywgc25hcFBvaW50cywgc25hcFJhbmdlcyk7CiB9CiAKIHZvaWQgU2Nyb2xsQ29udHJvbGxlcjo6
c3RhcnRTY3JvbGxTbmFwVGltZXIoKQpAQCAtNjgwLDcgKzY4Nyw3IEBAIHZvaWQgU2Nyb2xsQ29u
dHJvbGxlcjo6c2V0TmVhcmVzdFNjcm9sbFNuYXBJbmRleEZvckF4aXNBbmRPZmZzZXQoU2Nyb2xs
RXZlbnRBeGlzCiAgICAgTGF5b3V0VW5pdCBjbGFtcGVkT2Zmc2V0ID0gc3RkOjptaW4oc3RkOjpt
YXgoTGF5b3V0VW5pdChvZmZzZXQgLyBzY2FsZUZhY3RvciksIHNuYXBPZmZzZXRzLmZpcnN0KCkp
LCBzbmFwT2Zmc2V0cy5sYXN0KCkpOwogCiAgICAgdW5zaWduZWQgYWN0aXZlSW5kZXggPSAwOwot
ICAgIGNsb3Nlc3RTbmFwT2Zmc2V0PExheW91dFVuaXQsIGZsb2F0PihzbmFwU3RhdGUuc25hcE9m
ZnNldHNGb3JBeGlzKGF4aXMpLCBjbGFtcGVkT2Zmc2V0LCAwLCBhY3RpdmVJbmRleCk7CisgICAg
Y2xvc2VzdFNuYXBPZmZzZXQoc25hcFN0YXRlLnNuYXBPZmZzZXRzRm9yQXhpcyhheGlzKSwgc25h
cFN0YXRlLnNuYXBPZmZzZXRSYW5nZXNGb3JBeGlzKGF4aXMpLCBjbGFtcGVkT2Zmc2V0LCAwLCBh
Y3RpdmVJbmRleCk7CiAKICAgICBpZiAoYWN0aXZlSW5kZXggPT0gYWN0aXZlU2Nyb2xsU25hcElu
ZGV4Rm9yQXhpcyhheGlzKSkKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vY29jb2EvU2Nyb2xsU25hcEFuaW1hdG9yU3RhdGUuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2NvY29hL1Njcm9sbFNuYXBBbmltYXRvclN0YXRlLmgKaW5kZXggOGYy
NmU3MmQyNWI0ZGM4ODgxZmUwMDY2ZGZmNmM0NWE4OWMzZjdlOC4uMTUwZGIwYmJjMGQ5MWU5NDBj
MGE4YjJlMTY1OTFmYTNmYjY0NDJiYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vY29jb2EvU2Nyb2xsU25hcEFuaW1hdG9yU3RhdGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9jb2NvYS9TY3JvbGxTbmFwQW5pbWF0b3JTdGF0ZS5oCkBAIC0zMyw2ICszMyw3IEBA
CiAjaW5jbHVkZSAiRmxvYXRTaXplLmgiCiAjaW5jbHVkZSAiTGF5b3V0UG9pbnQuaCIKICNpbmNs
dWRlICJQbGF0Zm9ybVdoZWVsRXZlbnQuaCIKKyNpbmNsdWRlICJTY3JvbGxTbmFwT2Zmc2V0c0lu
Zm8uaCIKICNpbmNsdWRlICJTY3JvbGxUeXBlcy5oIgogI2luY2x1ZGUgIlNjcm9sbGluZ01vbWVu
dHVtQ2FsY3VsYXRvci5oIgogI2luY2x1ZGUgPHd0Zi9Nb25vdG9uaWNUaW1lLmg+CkBAIC00OCwx
NyArNDksMjUgQEAgZW51bSBjbGFzcyBTY3JvbGxTbmFwU3RhdGUgewogCiBjbGFzcyBTY3JvbGxT
bmFwQW5pbWF0b3JTdGF0ZSB7CiBwdWJsaWM6Ci0gICAgVmVjdG9yPExheW91dFVuaXQ+IHNuYXBP
ZmZzZXRzRm9yQXhpcyhTY3JvbGxFdmVudEF4aXMgYXhpcykgY29uc3QKKyAgICBjb25zdCBWZWN0
b3I8TGF5b3V0VW5pdD4mIHNuYXBPZmZzZXRzRm9yQXhpcyhTY3JvbGxFdmVudEF4aXMgYXhpcykg
Y29uc3QKICAgICB7CiAgICAgICAgIHJldHVybiBheGlzID09IFNjcm9sbEV2ZW50QXhpczo6SG9y
aXpvbnRhbCA/IG1fc25hcE9mZnNldHNYIDogbV9zbmFwT2Zmc2V0c1k7CiAgICAgfQogCi0gICAg
dm9pZCBzZXRTbmFwT2Zmc2V0c0ZvckF4aXMoU2Nyb2xsRXZlbnRBeGlzIGF4aXMsIGNvbnN0IFZl
Y3RvcjxMYXlvdXRVbml0PiYgc25hcE9mZnNldHMpCisgICAgY29uc3QgVmVjdG9yPFNjcm9sbE9m
ZnNldFJhbmdlPExheW91dFVuaXQ+PiYgc25hcE9mZnNldFJhbmdlc0ZvckF4aXMoU2Nyb2xsRXZl
bnRBeGlzIGF4aXMpIGNvbnN0CiAgICAgewotICAgICAgICBpZiAoYXhpcyA9PSBTY3JvbGxFdmVu
dEF4aXM6Okhvcml6b250YWwpCisgICAgICAgIHJldHVybiBheGlzID09IFNjcm9sbEV2ZW50QXhp
czo6SG9yaXpvbnRhbCA/IG1fc25hcE9mZnNldFJhbmdlc1ggOiBtX3NuYXBPZmZzZXRSYW5nZXNZ
OworICAgIH0KKworICAgIHZvaWQgc2V0U25hcE9mZnNldHNBbmRQb3NpdGlvblJhbmdlc0ZvckF4
aXMoU2Nyb2xsRXZlbnRBeGlzIGF4aXMsIGNvbnN0IFZlY3RvcjxMYXlvdXRVbml0PiYgc25hcE9m
ZnNldHMsIGNvbnN0IFZlY3RvcjxTY3JvbGxPZmZzZXRSYW5nZTxMYXlvdXRVbml0Pj4mIHNuYXBP
ZmZzZXRSYW5nZXMpCisgICAgeworICAgICAgICBpZiAoYXhpcyA9PSBTY3JvbGxFdmVudEF4aXM6
Okhvcml6b250YWwpIHsKICAgICAgICAgICAgIG1fc25hcE9mZnNldHNYID0gc25hcE9mZnNldHM7
Ci0gICAgICAgIGVsc2UKKyAgICAgICAgICAgIG1fc25hcE9mZnNldFJhbmdlc1ggPSBzbmFwT2Zm
c2V0UmFuZ2VzOworICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgbV9zbmFwT2Zmc2V0c1kg
PSBzbmFwT2Zmc2V0czsKKyAgICAgICAgICAgIG1fc25hcE9mZnNldFJhbmdlc1kgPSBzbmFwT2Zm
c2V0UmFuZ2VzOworICAgICAgICB9CiAgICAgfQogCiAgICAgU2Nyb2xsU25hcFN0YXRlIGN1cnJl
bnRTdGF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fY3VycmVudFN0YXRlOyB9CkBAIC04NSwxNSArOTQs
MTcgQEAgcHVibGljOgogICAgIHZvaWQgdHJhbnNpdGlvblRvRGVzdGluYXRpb25SZWFjaGVkU3Rh
dGUoKTsKIAogcHJpdmF0ZToKLSAgICBmbG9hdCB0YXJnZXRPZmZzZXRGb3JTdGFydE9mZnNldChT
Y3JvbGxFdmVudEF4aXMsIGZsb2F0IG1heFNjcm9sbE9mZnNldCwgZmxvYXQgc3RhcnRPZmZzZXQs
IGZsb2F0IHBhZ2VTY2FsZSwgZmxvYXQgZGVsdGEsIHVuc2lnbmVkJiBvdXRBY3RpdmVTbmFwSW5k
ZXgpIGNvbnN0OworICAgIGZsb2F0IHRhcmdldE9mZnNldEZvclN0YXJ0T2Zmc2V0KGNvbnN0IFZl
Y3RvcjxMYXlvdXRVbml0PiYgc25hcE9mZnNldHMsIGNvbnN0IFZlY3RvcjxTY3JvbGxPZmZzZXRS
YW5nZTxMYXlvdXRVbml0Pj4mIHNuYXBPZmZzZXRSYW5nZXMsIGZsb2F0IG1heFNjcm9sbE9mZnNl
dCwgZmxvYXQgc3RhcnRPZmZzZXQsIGZsb2F0IHByZWRpY3RlZE9mZnNldCwgZmxvYXQgcGFnZVNj
YWxlLCBmbG9hdCBkZWx0YSwgdW5zaWduZWQmIG91dEFjdGl2ZVNuYXBJbmRleCkgY29uc3Q7CiAg
ICAgdm9pZCB0ZWFyZG93bkFuaW1hdGlvbkZvclN0YXRlKFNjcm9sbFNuYXBTdGF0ZSk7CiAgICAg
dm9pZCBzZXR1cEFuaW1hdGlvbkZvclN0YXRlKFNjcm9sbFNuYXBTdGF0ZSwgY29uc3QgRmxvYXRT
aXplJiBjb250ZW50U2l6ZSwgY29uc3QgRmxvYXRTaXplJiB2aWV3cG9ydFNpemUsIGZsb2F0IHBh
Z2VTY2FsZSwgY29uc3QgRmxvYXRQb2ludCYgaW5pdGlhbE9mZnNldCwgY29uc3QgRmxvYXRTaXpl
JiBpbml0aWFsVmVsb2NpdHksIGNvbnN0IEZsb2F0U2l6ZSYgaW5pdGlhbERlbHRhKTsKIAogICAg
IFNjcm9sbFNuYXBTdGF0ZSBtX2N1cnJlbnRTdGF0ZSB7IFNjcm9sbFNuYXBTdGF0ZTo6VXNlcklu
dGVyYWN0aW9uIH07CiAKICAgICBWZWN0b3I8TGF5b3V0VW5pdD4gbV9zbmFwT2Zmc2V0c1g7Cisg
ICAgVmVjdG9yPFNjcm9sbE9mZnNldFJhbmdlPExheW91dFVuaXQ+PiBtX3NuYXBPZmZzZXRSYW5n
ZXNYOwogICAgIHVuc2lnbmVkIG1fYWN0aXZlU25hcEluZGV4WCB7IDAgfTsKICAgICBWZWN0b3I8
TGF5b3V0VW5pdD4gbV9zbmFwT2Zmc2V0c1k7CisgICAgVmVjdG9yPFNjcm9sbE9mZnNldFJhbmdl
PExheW91dFVuaXQ+PiBtX3NuYXBPZmZzZXRSYW5nZXNZOwogICAgIHVuc2lnbmVkIG1fYWN0aXZl
U25hcEluZGV4WSB7IDAgfTsKIAogICAgIE1vbm90b25pY1RpbWUgbV9zdGFydFRpbWU7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9TY3JvbGxTbmFwQW5pbWF0b3JT
dGF0ZS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1Njcm9sbFNuYXBBbmltYXRv
clN0YXRlLm1tCmluZGV4IDdlMjAxODE2NzVmMDYxOTRlMGI5MzEwYWFjODU1NzkyMjAwYWM2NjYu
LmU1NDk0MDkzYjFlNDIxNDYwNmM0NGNkNzM0NDVlMjE4ZTEyOWJhMDIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1Njcm9sbFNuYXBBbmltYXRvclN0YXRlLm1tCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1Njcm9sbFNuYXBBbmltYXRvclN0YXRl
Lm1tCkBAIC0zMSwxMiArMzEsNiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXN0YXRpYyBj
b25zdCBmbG9hdCBpbmVydGlhbFNjcm9sbFByZWRpY3Rpb25GYWN0b3IgPSAxMDsKLXN0YXRpYyBp
bmxpbmUgZmxvYXQgcHJvamVjdGVkSW5lcnRpYWxTY3JvbGxEaXN0YW5jZShmbG9hdCBpbml0aWFs
V2hlZWxEZWx0YSkKLXsKLSAgICByZXR1cm4gaW5lcnRpYWxTY3JvbGxQcmVkaWN0aW9uRmFjdG9y
ICogaW5pdGlhbFdoZWVsRGVsdGE7Ci19Ci0KIHZvaWQgU2Nyb2xsU25hcEFuaW1hdG9yU3RhdGU6
OnRyYW5zaXRpb25Ub1NuYXBBbmltYXRpb25TdGF0ZShjb25zdCBGbG9hdFNpemUmIGNvbnRlbnRT
aXplLCBjb25zdCBGbG9hdFNpemUmIHZpZXdwb3J0U2l6ZSwgZmxvYXQgcGFnZVNjYWxlLCBjb25z
dCBGbG9hdFBvaW50JiBpbml0aWFsT2Zmc2V0KQogewogICAgIHNldHVwQW5pbWF0aW9uRm9yU3Rh
dGUoU2Nyb2xsU25hcFN0YXRlOjpTbmFwcGluZywgY29udGVudFNpemUsIHZpZXdwb3J0U2l6ZSwg
cGFnZVNjYWxlLCBpbml0aWFsT2Zmc2V0LCB7IH0sIHsgfSk7CkBAIC01Myw5ICs0NywxMSBAQCB2
b2lkIFNjcm9sbFNuYXBBbmltYXRvclN0YXRlOjpzZXR1cEFuaW1hdGlvbkZvclN0YXRlKFNjcm9s
bFNuYXBTdGF0ZSBzdGF0ZSwgY29ucwogICAgIGlmIChtX2N1cnJlbnRTdGF0ZSA9PSBzdGF0ZSkK
ICAgICAgICAgcmV0dXJuOwogCi0gICAgZmxvYXQgdGFyZ2V0T2Zmc2V0WCA9IHRhcmdldE9mZnNl
dEZvclN0YXJ0T2Zmc2V0KFNjcm9sbEV2ZW50QXhpczo6SG9yaXpvbnRhbCwgY29udGVudFNpemUu
d2lkdGgoKSAtIHZpZXdwb3J0U2l6ZS53aWR0aCgpLCBpbml0aWFsT2Zmc2V0LngoKSwgcGFnZVNj
YWxlLCBpbml0aWFsRGVsdGEud2lkdGgoKSwgbV9hY3RpdmVTbmFwSW5kZXhYKTsKLSAgICBmbG9h
dCB0YXJnZXRPZmZzZXRZID0gdGFyZ2V0T2Zmc2V0Rm9yU3RhcnRPZmZzZXQoU2Nyb2xsRXZlbnRB
eGlzOjpWZXJ0aWNhbCwgY29udGVudFNpemUuaGVpZ2h0KCkgLSB2aWV3cG9ydFNpemUuaGVpZ2h0
KCksIGluaXRpYWxPZmZzZXQueSgpLCBwYWdlU2NhbGUsIGluaXRpYWxEZWx0YS5oZWlnaHQoKSwg
bV9hY3RpdmVTbmFwSW5kZXhZKTsKLSAgICBtX21vbWVudHVtQ2FsY3VsYXRvciA9IFNjcm9sbGlu
Z01vbWVudHVtQ2FsY3VsYXRvcjo6Y3JlYXRlKHZpZXdwb3J0U2l6ZSwgY29udGVudFNpemUsIGlu
aXRpYWxPZmZzZXQsIEZsb2F0UG9pbnQodGFyZ2V0T2Zmc2V0WCwgdGFyZ2V0T2Zmc2V0WSksIGlu
aXRpYWxEZWx0YSwgaW5pdGlhbFZlbG9jaXR5KTsKKyAgICBtX21vbWVudHVtQ2FsY3VsYXRvciA9
IFNjcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvcjo6Y3JlYXRlKHZpZXdwb3J0U2l6ZSwgY29udGVu
dFNpemUsIGluaXRpYWxPZmZzZXQsIGluaXRpYWxEZWx0YSwgaW5pdGlhbFZlbG9jaXR5KTsKKyAg
ICBhdXRvIHByZWRpY3RlZFNjcm9sbFRhcmdldCA9IG1fbW9tZW50dW1DYWxjdWxhdG9yLT5wcmVk
aWN0ZWREZXN0aW5hdGlvbk9mZnNldCgpOworICAgIGZsb2F0IHRhcmdldE9mZnNldFggPSB0YXJn
ZXRPZmZzZXRGb3JTdGFydE9mZnNldChtX3NuYXBPZmZzZXRzWCwgbV9zbmFwT2Zmc2V0UmFuZ2Vz
WCwgY29udGVudFNpemUud2lkdGgoKSAtIHZpZXdwb3J0U2l6ZS53aWR0aCgpLCBpbml0aWFsT2Zm
c2V0LngoKSwgcHJlZGljdGVkU2Nyb2xsVGFyZ2V0LndpZHRoKCksIHBhZ2VTY2FsZSwgaW5pdGlh
bERlbHRhLndpZHRoKCksIG1fYWN0aXZlU25hcEluZGV4WCk7CisgICAgZmxvYXQgdGFyZ2V0T2Zm
c2V0WSA9IHRhcmdldE9mZnNldEZvclN0YXJ0T2Zmc2V0KG1fc25hcE9mZnNldHNZLCBtX3NuYXBP
ZmZzZXRSYW5nZXNZLCBjb250ZW50U2l6ZS5oZWlnaHQoKSAtIHZpZXdwb3J0U2l6ZS5oZWlnaHQo
KSwgaW5pdGlhbE9mZnNldC55KCksIHByZWRpY3RlZFNjcm9sbFRhcmdldC5oZWlnaHQoKSwgcGFn
ZVNjYWxlLCBpbml0aWFsRGVsdGEuaGVpZ2h0KCksIG1fYWN0aXZlU25hcEluZGV4WSk7CisgICAg
bV9tb21lbnR1bUNhbGN1bGF0b3ItPnNldFJldGFyZ2V0ZWRTY3JvbGxPZmZzZXQoeyB0YXJnZXRP
ZmZzZXRYLCB0YXJnZXRPZmZzZXRZIH0pOwogICAgIG1fc3RhcnRUaW1lID0gTW9ub3RvbmljVGlt
ZTo6bm93KCk7CiAgICAgbV9jdXJyZW50U3RhdGUgPSBzdGF0ZTsKIH0KQEAgLTkzLDE4ICs4OSwx
NyBAQCBGbG9hdFBvaW50IFNjcm9sbFNuYXBBbmltYXRvclN0YXRlOjpjdXJyZW50QW5pbWF0ZWRT
Y3JvbGxPZmZzZXQoYm9vbCYgaXNBbmltYXRpbwogICAgIHJldHVybiBtX21vbWVudHVtQ2FsY3Vs
YXRvci0+c2Nyb2xsT2Zmc2V0QWZ0ZXJFbGFwc2VkVGltZShlbGFwc2VkVGltZSk7CiB9CiAKLWZs
b2F0IFNjcm9sbFNuYXBBbmltYXRvclN0YXRlOjp0YXJnZXRPZmZzZXRGb3JTdGFydE9mZnNldChT
Y3JvbGxFdmVudEF4aXMgYXhpcywgZmxvYXQgbWF4U2Nyb2xsT2Zmc2V0LCBmbG9hdCBzdGFydE9m
ZnNldCwgZmxvYXQgcGFnZVNjYWxlLCBmbG9hdCBpbml0aWFsRGVsdGEsIHVuc2lnbmVkJiBvdXRB
Y3RpdmVTbmFwSW5kZXgpIGNvbnN0CitmbG9hdCBTY3JvbGxTbmFwQW5pbWF0b3JTdGF0ZTo6dGFy
Z2V0T2Zmc2V0Rm9yU3RhcnRPZmZzZXQoY29uc3QgVmVjdG9yPExheW91dFVuaXQ+JiBzbmFwT2Zm
c2V0cywgY29uc3QgVmVjdG9yPFNjcm9sbE9mZnNldFJhbmdlPExheW91dFVuaXQ+PiYgc25hcE9m
ZnNldFJhbmdlcywgZmxvYXQgbWF4U2Nyb2xsT2Zmc2V0LCBmbG9hdCBzdGFydE9mZnNldCwgZmxv
YXQgcHJlZGljdGVkT2Zmc2V0LCBmbG9hdCBwYWdlU2NhbGUsIGZsb2F0IGluaXRpYWxEZWx0YSwg
dW5zaWduZWQmIG91dEFjdGl2ZVNuYXBJbmRleCkgY29uc3QKIHsKLSAgICBhdXRvIHNuYXBPZmZz
ZXRzID0gc25hcE9mZnNldHNGb3JBeGlzKGF4aXMpOwotICAgIGlmICghc25hcE9mZnNldHMuc2l6
ZSgpKSB7Ci0gICAgICAgIG91dEFjdGl2ZVNuYXBJbmRleCA9IDA7CisgICAgaWYgKHNuYXBPZmZz
ZXRzLmlzRW1wdHkoKSkgeworICAgICAgICBvdXRBY3RpdmVTbmFwSW5kZXggPSBpbnZhbGlkU25h
cE9mZnNldEluZGV4OwogICAgICAgICByZXR1cm4gY2xhbXBUbzxmbG9hdD4oc3RhcnRPZmZzZXQs
IDAsIG1heFNjcm9sbE9mZnNldCk7CiAgICAgfQogCi0gICAgZmxvYXQgcHJvamVjdGVkRGVzdGlu
YXRpb24gPSAoc3RhcnRPZmZzZXQgKyBwcm9qZWN0ZWRJbmVydGlhbFNjcm9sbERpc3RhbmNlKGlu
aXRpYWxEZWx0YSkpIC8gcGFnZVNjYWxlOwotICAgIGZsb2F0IHRhcmdldE9mZnNldCA9IGNsb3Nl
c3RTbmFwT2Zmc2V0PExheW91dFVuaXQsIGZsb2F0PihzbmFwT2Zmc2V0cywgcHJvamVjdGVkRGVz
dGluYXRpb24sIGluaXRpYWxEZWx0YSwgb3V0QWN0aXZlU25hcEluZGV4KTsKLSAgICB0YXJnZXRP
ZmZzZXQgPSBjbGFtcFRvPGZsb2F0Pih0YXJnZXRPZmZzZXQsIHNuYXBPZmZzZXRzLmZpcnN0KCks
IHNuYXBPZmZzZXRzLmxhc3QoKSk7Ci0gICAgdGFyZ2V0T2Zmc2V0ID0gY2xhbXBUbzxmbG9hdD4o
dGFyZ2V0T2Zmc2V0LCAwLCBtYXhTY3JvbGxPZmZzZXQpOworICAgIGZsb2F0IHRhcmdldE9mZnNl
dCA9IGNsb3Nlc3RTbmFwT2Zmc2V0KHNuYXBPZmZzZXRzLCBzbmFwT2Zmc2V0UmFuZ2VzLCBwcmVk
aWN0ZWRPZmZzZXQgLyBwYWdlU2NhbGUsIGluaXRpYWxEZWx0YSwgb3V0QWN0aXZlU25hcEluZGV4
KTsKKyAgICBmbG9hdCBtaW5pbXVtVGFyZ2V0T2Zmc2V0ID0gc3RkOjptYXg8ZmxvYXQ+KDAsIHNu
YXBPZmZzZXRzLmZpcnN0KCkpOworICAgIGZsb2F0IG1heGltdW1UYXJnZXRPZmZzZXQgPSBzdGQ6
Om1pbjxmbG9hdD4obWF4U2Nyb2xsT2Zmc2V0LCBzbmFwT2Zmc2V0cy5sYXN0KCkpOworICAgIHRh
cmdldE9mZnNldCA9IGNsYW1wVG88ZmxvYXQ+KHRhcmdldE9mZnNldCwgbWluaW11bVRhcmdldE9m
ZnNldCwgbWF4aW11bVRhcmdldE9mZnNldCk7CiAgICAgcmV0dXJuIHBhZ2VTY2FsZSAqIHRhcmdl
dE9mZnNldDsKIH0KICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJMYXllckNvbXBvc2l0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckxheWVyQ29tcG9zaXRvci5jcHAKaW5kZXggNjM0MjIxMzVjMWEzOWM1OWFjZjU5MjM5MTcxYzMx
Y2FlMzUwY2MyNC4uZWVkNWM1NmEzMTQxMjNmNjhkNGU3MTM0YzM5MzU2YTdmNzhiYzkzOSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5j
cHAKQEAgLTM5NTUsNiArMzk1NSwxMCBAQCB2b2lkIFJlbmRlckxheWVyQ29tcG9zaXRvcjo6dXBk
YXRlU2Nyb2xsQ29vcmRpbmF0ZWRMYXllcihSZW5kZXJMYXllciYgbGF5ZXIsIExheQogICAgICAg
ICAgICAgICAgIHNjcm9sbGluZ0dlb21ldHJ5Lmhvcml6b250YWxTbmFwT2Zmc2V0cyA9ICpvZmZz
ZXRzOwogICAgICAgICAgICAgaWYgKGNvbnN0IFZlY3RvcjxMYXlvdXRVbml0Piogb2Zmc2V0cyA9
IGxheWVyLnZlcnRpY2FsU25hcE9mZnNldHMoKSkKICAgICAgICAgICAgICAgICBzY3JvbGxpbmdH
ZW9tZXRyeS52ZXJ0aWNhbFNuYXBPZmZzZXRzID0gKm9mZnNldHM7CisgICAgICAgICAgICBpZiAo
Y29uc3QgVmVjdG9yPFNjcm9sbE9mZnNldFJhbmdlPExheW91dFVuaXQ+PiogcmFuZ2VzID0gbGF5
ZXIuaG9yaXpvbnRhbFNuYXBPZmZzZXRSYW5nZXMoKSkKKyAgICAgICAgICAgICAgICBzY3JvbGxp
bmdHZW9tZXRyeS5ob3Jpem9udGFsU25hcE9mZnNldFJhbmdlcyA9ICpyYW5nZXM7CisgICAgICAg
ICAgICBpZiAoY29uc3QgVmVjdG9yPFNjcm9sbE9mZnNldFJhbmdlPExheW91dFVuaXQ+PiogcmFu
Z2VzID0gbGF5ZXIudmVydGljYWxTbmFwT2Zmc2V0UmFuZ2VzKCkpCisgICAgICAgICAgICAgICAg
c2Nyb2xsaW5nR2VvbWV0cnkudmVydGljYWxTbmFwT2Zmc2V0UmFuZ2VzID0gKnJhbmdlczsKICAg
ICAgICAgICAgIHNjcm9sbGluZ0dlb21ldHJ5LmN1cnJlbnRIb3Jpem9udGFsU25hcFBvaW50SW5k
ZXggPSBsYXllci5jdXJyZW50SG9yaXpvbnRhbFNuYXBQb2ludEluZGV4KCk7CiAgICAgICAgICAg
ICBzY3JvbGxpbmdHZW9tZXRyeS5jdXJyZW50VmVydGljYWxTbmFwUG9pbnRJbmRleCA9IGxheWVy
LmN1cnJlbnRWZXJ0aWNhbFNuYXBQb2ludEluZGV4KCk7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3Rp
bmcvSW50ZXJuYWxzLmNwcAppbmRleCAzN2Y0NzM3ZDc2NWE2Y2VhNzJlMDhkYTViZGM3YWYzYjNl
MWQ3MTkzLi5kNzYyMWVkMWZlNTdjYjY0YWY3OWM2MjcwMWIwMjRjNTQ1N2VjNGQ2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCkBAIC0xMTcsNiArMTE3LDcgQEAKICNpbmNsdWRl
ICJTY2hlbWVSZWdpc3RyeS5oIgogI2luY2x1ZGUgIlNjcmlwdGVkQW5pbWF0aW9uQ29udHJvbGxl
ci5oIgogI2luY2x1ZGUgIlNjcm9sbGluZ0Nvb3JkaW5hdG9yLmgiCisjaW5jbHVkZSAiU2Nyb2xs
aW5nTW9tZW50dW1DYWxjdWxhdG9yLmgiCiAjaW5jbHVkZSAiU2VyaWFsaXplZFNjcmlwdFZhbHVl
LmgiCiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIKICNpbmNsdWRlICJTaGFkb3dSb290LmgiCkBAIC0z
Mjg2LDYgKzMyODcsMTEgQEAgc3RhdGljIHZvaWQgYXBwZW5kT2Zmc2V0cyhTdHJpbmdCdWlsZGVy
JiBidWlsZGVyLCBjb25zdCBWZWN0b3I8TGF5b3V0VW5pdD4mIHNuYXAKICAgICBidWlsZGVyLmFw
cGVuZExpdGVyYWwoIiB9Iik7CiB9CiAgICAgCit2b2lkIEludGVybmFsczo6c2V0UGxhdGZvcm1N
b21lbnR1bVNjcm9sbGluZ1ByZWRpY3Rpb25FbmFibGVkKGJvb2wgZW5hYmxlZCkKK3sKKyAgICBT
Y3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3I6OnNldFBsYXRmb3JtTW9tZW50dW1TY3JvbGxpbmdQ
cmVkaWN0aW9uRW5hYmxlZChlbmFibGVkKTsKK30KKwogRXhjZXB0aW9uT3I8U3RyaW5nPiBJbnRl
cm5hbHM6OnNjcm9sbFNuYXBPZmZzZXRzKEVsZW1lbnQmIGVsZW1lbnQpCiB7CiAgICAgaWYgKCFl
bGVtZW50LnJlbmRlckJveCgpKQpAQCAtMzMxMywxNyArMzMxOSwyMSBAQCBFeGNlcHRpb25PcjxT
dHJpbmc+IEludGVybmFsczo6c2Nyb2xsU25hcE9mZnNldHMoRWxlbWVudCYgZWxlbWVudCkKICAg
ICAKICAgICBTdHJpbmdCdWlsZGVyIHJlc3VsdDsKIAotICAgIGlmIChzY3JvbGxhYmxlQXJlYS0+
aG9yaXpvbnRhbFNuYXBPZmZzZXRzKCkpIHsKLSAgICAgICAgcmVzdWx0LmFwcGVuZExpdGVyYWwo
Imhvcml6b250YWwgPSAiKTsKLSAgICAgICAgYXBwZW5kT2Zmc2V0cyhyZXN1bHQsICpzY3JvbGxh
YmxlQXJlYS0+aG9yaXpvbnRhbFNuYXBPZmZzZXRzKCkpOworICAgIGlmIChhdXRvKiBvZmZzZXRz
ID0gc2Nyb2xsYWJsZUFyZWEtPmhvcml6b250YWxTbmFwT2Zmc2V0cygpKSB7CisgICAgICAgIGlm
IChvZmZzZXRzLT5zaXplKCkpIHsKKyAgICAgICAgICAgIHJlc3VsdC5hcHBlbmRMaXRlcmFsKCJo
b3Jpem9udGFsID0gIik7CisgICAgICAgICAgICBhcHBlbmRPZmZzZXRzKHJlc3VsdCwgKm9mZnNl
dHMpOworICAgICAgICB9CiAgICAgfQogCi0gICAgaWYgKHNjcm9sbGFibGVBcmVhLT52ZXJ0aWNh
bFNuYXBPZmZzZXRzKCkpIHsKLSAgICAgICAgaWYgKHJlc3VsdC5sZW5ndGgoKSkKLSAgICAgICAg
ICAgIHJlc3VsdC5hcHBlbmRMaXRlcmFsKCIsICIpOworICAgIGlmIChhdXRvKiBvZmZzZXRzID0g
c2Nyb2xsYWJsZUFyZWEtPnZlcnRpY2FsU25hcE9mZnNldHMoKSkgeworICAgICAgICBpZiAob2Zm
c2V0cy0+c2l6ZSgpKSB7CisgICAgICAgICAgICBpZiAocmVzdWx0Lmxlbmd0aCgpKQorICAgICAg
ICAgICAgICAgIHJlc3VsdC5hcHBlbmRMaXRlcmFsKCIsICIpOwogCi0gICAgICAgIHJlc3VsdC5h
cHBlbmRMaXRlcmFsKCJ2ZXJ0aWNhbCA9ICIpOwotICAgICAgICBhcHBlbmRPZmZzZXRzKHJlc3Vs
dCwgKnNjcm9sbGFibGVBcmVhLT52ZXJ0aWNhbFNuYXBPZmZzZXRzKCkpOworICAgICAgICAgICAg
cmVzdWx0LmFwcGVuZExpdGVyYWwoInZlcnRpY2FsID0gIik7CisgICAgICAgICAgICBhcHBlbmRP
ZmZzZXRzKHJlc3VsdCwgKm9mZnNldHMpOworICAgICAgICB9CiAgICAgfQogCiAgICAgcmV0dXJu
IHJlc3VsdC50b1N0cmluZygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9J
bnRlcm5hbHMuaCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgKaW5kZXggOGI5
NjUwYTE2OGJjMGEzM2E5NGRhYzMxZGFlMWI2ZWUwNDYyYzJmMS4uZDBkNDJkYWYyMGQxNmFiMTY1
MDgyN2E0OGJlNGNhNjlmZTMxYmVkMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGlu
Zy9JbnRlcm5hbHMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oCkBA
IC00NzgsNiArNDc4LDcgQEAgcHVibGljOgogCiAjaWYgRU5BQkxFKENTU19TQ1JPTExfU05BUCkK
ICAgICBFeGNlcHRpb25PcjxTdHJpbmc+IHNjcm9sbFNuYXBPZmZzZXRzKEVsZW1lbnQmKTsKKyAg
ICB2b2lkIHNldFBsYXRmb3JtTW9tZW50dW1TY3JvbGxpbmdQcmVkaWN0aW9uRW5hYmxlZChib29s
KTsKICNlbmRpZgogCiAgICAgRXhjZXB0aW9uT3I8U3RyaW5nPiBwYXRoU3RyaW5nV2l0aFNocmlu
a1dyYXBwZWRSZWN0cyhjb25zdCBWZWN0b3I8ZG91YmxlPiYgcmVjdENvbXBvbmVudHMsIGRvdWJs
ZSByYWRpdXMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMu
aWRsIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsCmluZGV4IGMwZTVmYmIx
MjE5M2I2YTQ0NGVhYmM4OWRlZTIwMTM0MWE1ZDM1ZmUuLjM0ZWQ0NmQwZWY5MjgzYjM1MmE4NWNh
ZGM1ZDg4MzQ5ZjI2MDE5NjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50
ZXJuYWxzLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwKQEAg
LTQ1NCw2ICs0NTQsNyBAQCBlbnVtIEV2ZW50VGhyb3R0bGluZ0JlaGF2aW9yIHsKIAogI2lmIGRl
ZmluZWQoRU5BQkxFX0NTU19TQ1JPTExfU05BUCkgJiYgRU5BQkxFX0NTU19TQ1JPTExfU05BUAog
ICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gRE9NU3RyaW5nIHNjcm9sbFNuYXBPZmZzZXRzKEVsZW1l
bnQgZWxlbWVudCk7CisgICAgdm9pZCBzZXRQbGF0Zm9ybU1vbWVudHVtU2Nyb2xsaW5nUHJlZGlj
dGlvbkVuYWJsZWQoYm9vbGVhbiBlbmFibGVkKTsKICNlbmRpZgogCiAgICAgW01heVRocm93RXhj
ZXB0aW9uXSBET01TdHJpbmcgcGF0aFN0cmluZ1dpdGhTaHJpbmtXcmFwcGVkUmVjdHMoc2VxdWVu
Y2U8ZG91YmxlPiByZWN0Q29tcG9uZW50cywgZG91YmxlIHJhZGl1cyk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9TaGFyZWQvU2Nyb2xsaW5nL1JlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9y
VHJhbnNhY3Rpb24uY3BwIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1Njcm9sbGluZy9SZW1vdGVT
Y3JvbGxpbmdDb29yZGluYXRvclRyYW5zYWN0aW9uLmNwcAppbmRleCBiYmRlNzRjZmMwZTg5ZjVm
YmJlODZhOTY1ZGE2OWNlZTdlNTBhZmVlLi5hMDU1NzAxYTQxNGMxMGM3MWIwZjRmNDk5MTk2MDQ0
ZjFjNzljNWNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvU2Nyb2xsaW5nL1Jl
bW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yVHJhbnNhY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1NoYXJlZC9TY3JvbGxpbmcvUmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3JUcmFuc2FjdGlv
bi5jcHAKQEAgLTEyNyw2ICsxMjcsOCBAQCB2b2lkIEFyZ3VtZW50Q29kZXI8U2Nyb2xsaW5nU3Rh
dGVTY3JvbGxpbmdOb2RlPjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0CiAjaWYgRU5B
QkxFKENTU19TQ1JPTExfU05BUCkKICAgICBTQ1JPTExJTkdfTk9ERV9FTkNPREUoU2Nyb2xsaW5n
U3RhdGVTY3JvbGxpbmdOb2RlOjpIb3Jpem9udGFsU25hcE9mZnNldHMsIGhvcml6b250YWxTbmFw
T2Zmc2V0cykKICAgICBTQ1JPTExJTkdfTk9ERV9FTkNPREUoU2Nyb2xsaW5nU3RhdGVTY3JvbGxp
bmdOb2RlOjpWZXJ0aWNhbFNuYXBPZmZzZXRzLCB2ZXJ0aWNhbFNuYXBPZmZzZXRzKQorICAgIFND
Uk9MTElOR19OT0RFX0VOQ09ERShTY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGU6Okhvcml6b250
YWxTbmFwT2Zmc2V0UmFuZ2VzLCBob3Jpem9udGFsU25hcE9mZnNldFJhbmdlcykKKyAgICBTQ1JP
TExJTkdfTk9ERV9FTkNPREUoU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlOjpWZXJ0aWNhbFNu
YXBPZmZzZXRSYW5nZXMsIHZlcnRpY2FsU25hcE9mZnNldFJhbmdlcykKICAgICBTQ1JPTExJTkdf
Tk9ERV9FTkNPREUoU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlOjpDdXJyZW50SG9yaXpvbnRh
bFNuYXBPZmZzZXRJbmRleCwgY3VycmVudEhvcml6b250YWxTbmFwUG9pbnRJbmRleCkKICAgICBT
Q1JPTExJTkdfTk9ERV9FTkNPREUoU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlOjpDdXJyZW50
VmVydGljYWxTbmFwT2Zmc2V0SW5kZXgsIGN1cnJlbnRWZXJ0aWNhbFNuYXBQb2ludEluZGV4KQog
I2VuZGlmCkBAIC0yMDIsNiArMjA0LDggQEAgYm9vbCBBcmd1bWVudENvZGVyPFNjcm9sbGluZ1N0
YXRlU2Nyb2xsaW5nTm9kZT46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyLCBTY3JvbGwKICNpZiBF
TkFCTEUoQ1NTX1NDUk9MTF9TTkFQKQogICAgIFNDUk9MTElOR19OT0RFX0RFQ09ERShTY3JvbGxp
bmdTdGF0ZVNjcm9sbGluZ05vZGU6Okhvcml6b250YWxTbmFwT2Zmc2V0cywgVmVjdG9yPGZsb2F0
Piwgc2V0SG9yaXpvbnRhbFNuYXBPZmZzZXRzKTsKICAgICBTQ1JPTExJTkdfTk9ERV9ERUNPREUo
U2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlOjpWZXJ0aWNhbFNuYXBPZmZzZXRzLCBWZWN0b3I8
ZmxvYXQ+LCBzZXRWZXJ0aWNhbFNuYXBPZmZzZXRzKTsKKyAgICBTQ1JPTExJTkdfTk9ERV9ERUNP
REUoU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlOjpIb3Jpem9udGFsU25hcE9mZnNldFJhbmdl
cywgVmVjdG9yPFNjcm9sbE9mZnNldFJhbmdlPGZsb2F0Pj4sIHNldEhvcml6b250YWxTbmFwT2Zm
c2V0UmFuZ2VzKQorICAgIFNDUk9MTElOR19OT0RFX0RFQ09ERShTY3JvbGxpbmdTdGF0ZVNjcm9s
bGluZ05vZGU6OlZlcnRpY2FsU25hcE9mZnNldFJhbmdlcywgVmVjdG9yPFNjcm9sbE9mZnNldFJh
bmdlPGZsb2F0Pj4sIHNldFZlcnRpY2FsU25hcE9mZnNldFJhbmdlcykKICAgICBTQ1JPTExJTkdf
Tk9ERV9ERUNPREUoU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlOjpDdXJyZW50SG9yaXpvbnRh
bFNuYXBPZmZzZXRJbmRleCwgdW5zaWduZWQsIHNldEN1cnJlbnRIb3Jpem9udGFsU25hcFBvaW50
SW5kZXgpOwogICAgIFNDUk9MTElOR19OT0RFX0RFQ09ERShTY3JvbGxpbmdTdGF0ZVNjcm9sbGlu
Z05vZGU6OkN1cnJlbnRWZXJ0aWNhbFNuYXBPZmZzZXRJbmRleCwgdW5zaWduZWQsIHNldEN1cnJl
bnRWZXJ0aWNhbFNuYXBQb2ludEluZGV4KTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9T
aGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcAppbmRleCBmMGZmYjc3MjZhNTNlZTRmODQy
M2Q0NmI3OWJiMGZkYWYwNWRlN2M0Li44OTExMTc5NWU3OGRkNjk5ODVhMDA0YTYyNjdmMDNiMmRl
ODNjMGVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50
Q29kZXJzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29k
ZXJzLmNwcApAQCAtMjQ2Nyw0ICsyNDY3LDI5IEBAIGJvb2wgQXJndW1lbnRDb2RlcjxJREJLZXlQ
YXRoPjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIsIElEQktleVBhdGgmIGtleVBhdGgpCiB9CiAj
ZW5kaWYKIAorI2lmIEVOQUJMRShDU1NfU0NST0xMX1NOQVApCisKK3ZvaWQgQXJndW1lbnRDb2Rl
cjxTY3JvbGxPZmZzZXRSYW5nZTxmbG9hdD4+OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29u
c3QgU2Nyb2xsT2Zmc2V0UmFuZ2U8ZmxvYXQ+JiByYW5nZSkKK3sKKyAgICBlbmNvZGVyIDw8IHJh
bmdlLnN0YXJ0OworICAgIGVuY29kZXIgPDwgcmFuZ2UuZW5kOworfQorCitib29sIEFyZ3VtZW50
Q29kZXI8U2Nyb2xsT2Zmc2V0UmFuZ2U8ZmxvYXQ+Pjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIs
IFNjcm9sbE9mZnNldFJhbmdlPGZsb2F0PiYgcmFuZ2UpCit7CisgICAgZmxvYXQgc3RhcnQ7Cisg
ICAgaWYgKCFkZWNvZGVyLmRlY29kZShzdGFydCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKwor
ICAgIGZsb2F0IGVuZDsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGVuZCkpCisgICAgICAgIHJl
dHVybiBmYWxzZTsKKworICAgIHJhbmdlLnN0YXJ0ID0gc3RhcnQ7CisgICAgcmFuZ2UuZW5kID0g
ZW5kOworICAgIHJldHVybiB0cnVlOworfQorCisjZW5kaWYKKwogfSAvLyBuYW1lc3BhY2UgSVBD
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJz
LmggYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgKaW5kZXgg
NDgxOWZjYmMwNGFjNzE2MjU2NzNhODQ0NjdmNzQ1NDJjY2I5Mjk5NS4uNDQzN2NhZDIyNTcxZGE5
MjhhOTkxYjhmN2ZlYjJhMjg2NWQxNWZlNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hh
cmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9X
ZWJDb3JlQXJndW1lbnRDb2RlcnMuaApAQCAtMzAsNiArMzAsNyBAQAogI2luY2x1ZGUgPFdlYkNv
cmUvRnJhbWVMb2FkZXJUeXBlcy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvSW5kZXhlZERCLmg+CiAj
aW5jbHVkZSA8V2ViQ29yZS9QYXltZW50SGVhZGVycy5oPgorI2luY2x1ZGUgPFdlYkNvcmUvU2Ny
b2xsU25hcE9mZnNldHNJbmZvLmg+CiAKIG5hbWVzcGFjZSBXVEYgewogY2xhc3MgTW9ub3Rvbmlj
VGltZTsKQEAgLTU5OSw2ICs2MDAsMTUgQEAgdGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2Rl
cjxXZWJDb3JlOjpJREJLZXlQYXRoPiB7CiAKICNlbmRpZgogCisjaWYgRU5BQkxFKENTU19TQ1JP
TExfU05BUCkKKwordGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpTY3Jv
bGxPZmZzZXRSYW5nZTxmbG9hdD4+IHsKKyAgICBzdGF0aWMgdm9pZCBlbmNvZGUoRW5jb2RlciYs
IGNvbnN0IFdlYkNvcmU6OlNjcm9sbE9mZnNldFJhbmdlPGZsb2F0PiYpOworICAgIHN0YXRpYyBi
b29sIGRlY29kZShEZWNvZGVyJiwgV2ViQ29yZTo6U2Nyb2xsT2Zmc2V0UmFuZ2U8ZmxvYXQ+Jik7
Cit9OworCisjZW5kaWYKKwogfSAvLyBuYW1lc3BhY2UgSVBDCiAKIG5hbWVzcGFjZSBXVEYgewpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1Njcm9sbGluZy9pb3MvU2Nyb2xs
aW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZUlPUy5tbSBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9TY3JvbGxpbmcvaW9zL1Njcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVJT1Mu
bW0KaW5kZXggYzU1MWNlODYzNmNlMjE0ZDhhYzI1NTg0Mjg5N2FhMmE3MWQ1YTNmNy4uODc5YTk4
ZDZhYjViNWE3ZjhjNTRmZjQzZTVhZDE0NGE4MDZkNjYzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL1Njcm9sbGluZy9pb3MvU2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xs
aW5nTm9kZUlPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvU2Nyb2xsaW5nL2lv
cy9TY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlSU9TLm1tCkBAIC0zOSw2ICszOSw3
IEBACiAKICNpZiBFTkFCTEUoQ1NTX1NDUk9MTF9TTkFQKQogI2ltcG9ydCA8V2ViQ29yZS9BeGlz
U2Nyb2xsU25hcE9mZnNldHMuaD4KKyNpbXBvcnQgPFdlYkNvcmUvU2Nyb2xsU25hcE9mZnNldHNJ
bmZvLmg+CiAjZW5kaWYKIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CkBAIC04OCw3ICs4OSw3
IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiAgICAgaWYgKCFfc2Nyb2xsaW5nVHJlZU5v
ZGUtPmhvcml6b250YWxTbmFwT2Zmc2V0cygpLmlzRW1wdHkoKSkgewogICAgICAgICB1bnNpZ25l
ZCBpbmRleDsKLSAgICAgICAgZmxvYXQgcG90ZW50aWFsU25hcFBvc2l0aW9uID0gY2xvc2VzdFNu
YXBPZmZzZXQ8ZmxvYXQsIENHRmxvYXQ+KF9zY3JvbGxpbmdUcmVlTm9kZS0+aG9yaXpvbnRhbFNu
YXBPZmZzZXRzKCksIGhvcml6b250YWxUYXJnZXQsIHZlbG9jaXR5LngsIGluZGV4KTsKKyAgICAg
ICAgZmxvYXQgcG90ZW50aWFsU25hcFBvc2l0aW9uID0gY2xvc2VzdFNuYXBPZmZzZXQoX3Njcm9s
bGluZ1RyZWVOb2RlLT5ob3Jpem9udGFsU25hcE9mZnNldHMoKSwgX3Njcm9sbGluZ1RyZWVOb2Rl
LT5ob3Jpem9udGFsU25hcE9mZnNldFJhbmdlcygpLCBob3Jpem9udGFsVGFyZ2V0LCB2ZWxvY2l0
eS54LCBpbmRleCk7CiAgICAgICAgIF9zY3JvbGxpbmdUcmVlTm9kZS0+c2V0Q3VycmVudEhvcml6
b250YWxTbmFwUG9pbnRJbmRleChpbmRleCk7CiAgICAgICAgIGlmIChob3Jpem9udGFsVGFyZ2V0
ID49IDAgJiYgaG9yaXpvbnRhbFRhcmdldCA8PSBzY3JvbGxWaWV3LmNvbnRlbnRTaXplLndpZHRo
KQogICAgICAgICAgICAgdGFyZ2V0Q29udGVudE9mZnNldC0+eCA9IHBvdGVudGlhbFNuYXBQb3Np
dGlvbjsKQEAgLTk2LDcgKzk3LDcgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKICAgICBp
ZiAoIV9zY3JvbGxpbmdUcmVlTm9kZS0+dmVydGljYWxTbmFwT2Zmc2V0cygpLmlzRW1wdHkoKSkg
ewogICAgICAgICB1bnNpZ25lZCBpbmRleDsKLSAgICAgICAgZmxvYXQgcG90ZW50aWFsU25hcFBv
c2l0aW9uID0gY2xvc2VzdFNuYXBPZmZzZXQ8ZmxvYXQsIENHRmxvYXQ+KF9zY3JvbGxpbmdUcmVl
Tm9kZS0+dmVydGljYWxTbmFwT2Zmc2V0cygpLCB2ZXJ0aWNhbFRhcmdldCwgdmVsb2NpdHkueSwg
aW5kZXgpOworICAgICAgICBmbG9hdCBwb3RlbnRpYWxTbmFwUG9zaXRpb24gPSBjbG9zZXN0U25h
cE9mZnNldChfc2Nyb2xsaW5nVHJlZU5vZGUtPnZlcnRpY2FsU25hcE9mZnNldHMoKSwgX3Njcm9s
bGluZ1RyZWVOb2RlLT52ZXJ0aWNhbFNuYXBPZmZzZXRSYW5nZXMoKSwgdmVydGljYWxUYXJnZXQs
IHZlbG9jaXR5LnksIGluZGV4KTsKICAgICAgICAgX3Njcm9sbGluZ1RyZWVOb2RlLT5zZXRDdXJy
ZW50VmVydGljYWxTbmFwUG9pbnRJbmRleChpbmRleCk7CiAgICAgICAgIGlmICh2ZXJ0aWNhbFRh
cmdldCA+PSAwICYmIHZlcnRpY2FsVGFyZ2V0IDw9IHNjcm9sbFZpZXcuY29udGVudFNpemUuaGVp
Z2h0KQogICAgICAgICAgICAgdGFyZ2V0Q29udGVudE9mZnNldC0+eSA9IHBvdGVudGlhbFNuYXBQ
b3NpdGlvbjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvUmVtb3Rl
U2Nyb2xsaW5nQ29vcmRpbmF0b3JQcm94eUlPUy5tbSBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9pb3MvUmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3JQcm94eUlPUy5tbQppbmRleCA2YzlhMWMw
MzllMDQyNGY5OTc1YjVhZmM1NTljMDY5ZDBiYzU4MmRmLi5kY2FhNDdlYzQwNTZkYjZkNzIxMmRl
ZTA5YTFlNjY3YmRhOWQ0NmM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
aW9zL1JlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yUHJveHlJT1MubW0KKysrIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL2lvcy9SZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvclByb3h5SU9TLm1t
CkBAIC0zOSw2ICszOSw3IEBACiAKICNpZiBFTkFCTEUoQ1NTX1NDUk9MTF9TTkFQKQogI2ltcG9y
dCA8V2ViQ29yZS9BeGlzU2Nyb2xsU25hcE9mZnNldHMuaD4KKyNpbXBvcnQgPFdlYkNvcmUvU2Ny
b2xsU25hcE9mZnNldHNJbmZvLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1Njcm9sbFR5cGVzLmg+CiAj
aW1wb3J0IDxXZWJDb3JlL1Njcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGUuaD4KICNlbmRp
ZgpAQCAtMTI0LDcgKzEyNSw5IEBAIHZvaWQgUmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3JQcm94
eTo6YWRqdXN0VGFyZ2V0Q29udGVudE9mZnNldEZvclNuYXBwaW5nKENHU2l6CiAKICAgICBpZiAo
c2hvdWxkU25hcEZvck1haW5GcmFtZVNjcm9sbGluZyhXZWJDb3JlOjpTY3JvbGxFdmVudEF4aXM6
OlZlcnRpY2FsKSkgewogICAgICAgICBmbG9hdCBwb3RlbnRpYWxTbmFwUG9zaXRpb24gPSBjbG9z
ZXN0U25hcE9mZnNldEZvck1haW5GcmFtZVNjcm9sbGluZyhXZWJDb3JlOjpTY3JvbGxFdmVudEF4
aXM6OlZlcnRpY2FsLCB0YXJnZXRDb250ZW50T2Zmc2V0LT55LCB2ZWxvY2l0eS55LCBtX2N1cnJl
bnRWZXJ0aWNhbFNuYXBQb2ludEluZGV4KTsKLSAgICAgICAgcG90ZW50aWFsU25hcFBvc2l0aW9u
IC09IHRvcEluc2V0OworICAgICAgICBpZiAobV9jdXJyZW50VmVydGljYWxTbmFwUG9pbnRJbmRl
eCAhPSBpbnZhbGlkU25hcE9mZnNldEluZGV4KQorICAgICAgICAgICAgcG90ZW50aWFsU25hcFBv
c2l0aW9uIC09IHRvcEluc2V0OworCiAgICAgICAgIGlmICh0YXJnZXRDb250ZW50T2Zmc2V0LT55
ID4gMCAmJiB0YXJnZXRDb250ZW50T2Zmc2V0LT55IDwgbWF4U2Nyb2xsT2Zmc2V0cy5oZWlnaHQp
CiAgICAgICAgICAgICB0YXJnZXRDb250ZW50T2Zmc2V0LT55ID0gc3RkOjptaW48ZmxvYXQ+KG1h
eFNjcm9sbE9mZnNldHMuaGVpZ2h0LCBwb3RlbnRpYWxTbmFwUG9zaXRpb24pOwogICAgIH0KQEAg
LTE0Miw3ICsxNDUsNyBAQCBib29sIFJlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yUHJveHk6OnNo
b3VsZFNuYXBGb3JNYWluRnJhbWVTY3JvbGxpbmcoU2Nyb2xsRXZlbgogICAgICAgICBTY3JvbGxp
bmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlKiByb290RnJhbWUgPSBzdGF0aWNfY2FzdDxTY3JvbGxp
bmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlKj4ocm9vdCk7CiAgICAgICAgIGNvbnN0IFZlY3Rvcjxm
bG9hdD4mIHNuYXBPZmZzZXRzID0gYXhpcyA9PSBTY3JvbGxFdmVudEF4aXM6Okhvcml6b250YWwg
PyByb290RnJhbWUtPmhvcml6b250YWxTbmFwT2Zmc2V0cygpIDogcm9vdEZyYW1lLT52ZXJ0aWNh
bFNuYXBPZmZzZXRzKCk7CiAgICAgICAgIHVuc2lnbmVkIGN1cnJlbnRJbmRleCA9IGF4aXMgPT0g
U2Nyb2xsRXZlbnRBeGlzOjpIb3Jpem9udGFsID8gbV9jdXJyZW50SG9yaXpvbnRhbFNuYXBQb2lu
dEluZGV4IDogbV9jdXJyZW50VmVydGljYWxTbmFwUG9pbnRJbmRleDsKLSAgICAgICAgcmV0dXJu
IChzbmFwT2Zmc2V0cy5zaXplKCkgPiAwKSAmJiAoY3VycmVudEluZGV4IDwgc25hcE9mZnNldHMu
c2l6ZSgpKTsKKyAgICAgICAgcmV0dXJuIHNuYXBPZmZzZXRzLnNpemUoKSAmJiAoY3VycmVudElu
ZGV4IDwgc25hcE9mZnNldHMuc2l6ZSgpIHx8IGN1cnJlbnRJbmRleCA9PSBpbnZhbGlkU25hcE9m
ZnNldEluZGV4KTsKICAgICB9CiAgICAgcmV0dXJuIGZhbHNlOwogfQpAQCAtMTUzLDkgKzE1Niwx
MCBAQCBmbG9hdCBSZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvclByb3h5OjpjbG9zZXN0U25hcE9m
ZnNldEZvck1haW5GcmFtZVNjcm9sbGluZyhTYwogICAgIEFTU0VSVChyb290ICYmIHJvb3QtPmlz
RnJhbWVTY3JvbGxpbmdOb2RlKCkpOwogICAgIFNjcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05v
ZGUqIHJvb3RGcmFtZSA9IHN0YXRpY19jYXN0PFNjcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05v
ZGUqPihyb290KTsKICAgICBjb25zdCBWZWN0b3I8ZmxvYXQ+JiBzbmFwT2Zmc2V0cyA9IGF4aXMg
PT0gU2Nyb2xsRXZlbnRBeGlzOjpIb3Jpem9udGFsID8gcm9vdEZyYW1lLT5ob3Jpem9udGFsU25h
cE9mZnNldHMoKSA6IHJvb3RGcmFtZS0+dmVydGljYWxTbmFwT2Zmc2V0cygpOworICAgIGNvbnN0
IFZlY3RvcjxTY3JvbGxPZmZzZXRSYW5nZTxmbG9hdD4+JiBzbmFwT2Zmc2V0UmFuZ2VzID0gYXhp
cyA9PSBTY3JvbGxFdmVudEF4aXM6Okhvcml6b250YWwgPyByb290RnJhbWUtPmhvcml6b250YWxT
bmFwT2Zmc2V0UmFuZ2VzKCkgOiByb290RnJhbWUtPnZlcnRpY2FsU25hcE9mZnNldFJhbmdlcygp
OwogCiAgICAgZmxvYXQgc2NhbGVkU2Nyb2xsRGVzdGluYXRpb24gPSBzY3JvbGxEZXN0aW5hdGlv
biAvIG1fd2ViUGFnZVByb3h5LmRpc3BsYXllZENvbnRlbnRTY2FsZSgpOwotICAgIGZsb2F0IHJh
d0Nsb3Nlc3RTbmFwT2Zmc2V0ID0gY2xvc2VzdFNuYXBPZmZzZXQ8ZmxvYXQsIGZsb2F0PihzbmFw
T2Zmc2V0cywgc2NhbGVkU2Nyb2xsRGVzdGluYXRpb24sIHZlbG9jaXR5LCBjdXJyZW50SW5kZXgp
OworICAgIGZsb2F0IHJhd0Nsb3Nlc3RTbmFwT2Zmc2V0ID0gY2xvc2VzdFNuYXBPZmZzZXQoc25h
cE9mZnNldHMsIHNuYXBPZmZzZXRSYW5nZXMsIHNjYWxlZFNjcm9sbERlc3RpbmF0aW9uLCB2ZWxv
Y2l0eSwgY3VycmVudEluZGV4KTsKICAgICByZXR1cm4gcmF3Q2xvc2VzdFNuYXBPZmZzZXQgKiBt
X3dlYlBhZ2VQcm94eS5kaXNwbGF5ZWRDb250ZW50U2NhbGUoKTsKIH0KIApkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDVhNGNh
YjMxYTQwMGZhNzUwMDY4MWQ5NjdjZjI5YWRjOTkyNTZlMTIuLmM2MWM5YzZhMTNlM2FhM2VlM2Fj
ZWQzODU1MGMxYzBmYjg2MDJlZDIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZwor
KysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSw1NCBAQAorMjAxNi0xMi0yOSAg
V2Vuc29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KKworICAgICAgICBJbXBsZW1l
bnQgInByb3hpbWl0eSIgc2Nyb2xsIHNuYXBwaW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzU5OTQKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzE4
MTYyNDE4PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IEFkZHMgMyBuZXcgbGF5b3V0IHRlc3RzIGZvciBwcm94aW1pdHkgc2Nyb2xsIHNuYXBwaW5nLiBB
bHNvIHR3ZWFrcyBzb21lIGV4aXN0aW5nIHRlc3RzIHRoYXQgdGVzdCBzY3JvbGwgc25hcHBpbmcK
KyAgICAgICAgYWZ0ZXIgc2Nyb2xsaW5nIHdpdGggbW9tZW50dW0gdG8gdXNlIHRoZSBjdXN0b20g
aGV1cmlzdGljIGZvciBwcmVkaWN0aW5nIHNjcm9sbCBkZXN0aW5hdGlvbiBpbnN0ZWFkIG9mIHBs
YXRmb3JtCisgICAgICAgIG1vbWVudHVtIHNjcm9sbGluZy4gVGhpcyBlbnN1cmVzIHRoYXQgdGhl
IHJlc3VsdHMgb2Ygb3VyIGxheW91dCB0ZXN0cyB0aGF0IGRlcGVuZCBvbiBwcmVkaWN0aW5nIG1v
bWVudHVtIHNjcm9sbAorICAgICAgICBkZXN0aW5hdGlvbiBhcmUgY29uc2lzdGVudCBhY3Jvc3Mg
cnVucy4KKworICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL2xhdGNoZWQtZGl2LXdp
dGgtc2Nyb2xsLXNuYXAuaHRtbDoKKyAgICAgICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9z
Y3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUuaHRtbDoKKyAgICAgICAgKiB0aWxlZC1kcmF3
aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1tYW5kYXRvcnktMmQtb3ZlcmZs
b3cuaHRtbDoKKyAgICAgICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9z
Y3JvbGwtc25hcC1tYW5kYXRvcnktYm9yZGVycy5odG1sOgorICAgICAgICAqIHRpbGVkLWRyYXdp
bmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLW1hbmRhdG9yeS1oaWRkZW4tc2Ny
b2xsYmFycy5odG1sOgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1z
bmFwL3Njcm9sbC1zbmFwLW1hbmRhdG9yeS1tYWluZnJhbWUtaG9yaXpvbnRhbC5odG1sOgorICAg
ICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLW1h
bmRhdG9yeS1tYWluZnJhbWUtc2xvdy1ob3Jpem9udGFsLmh0bWw6CisgICAgICAgICogdGlsZWQt
ZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtbWFuZGF0b3J5LW1haW5m
cmFtZS1zbG93LXZlcnRpY2FsLmh0bWw6CisgICAgICAgICogdGlsZWQtZHJhd2luZy9zY3JvbGxp
bmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtbWFuZGF0b3J5LW1haW5mcmFtZS12ZXJ0aWNhbC10
aGVuLWhvcml6b250YWwuaHRtbDoKKyAgICAgICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9z
Y3JvbGwtc25hcC9zY3JvbGwtc25hcC1tYW5kYXRvcnktbWFpbmZyYW1lLXZlcnRpY2FsLmh0bWw6
CisgICAgICAgICogdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNu
YXAtbWFuZGF0b3J5LW92ZXJmbG93LXN0YXRlbGVzcy5odG1sOgorICAgICAgICAqIHRpbGVkLWRy
YXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLW1hbmRhdG9yeS1vdmVyZmxv
dy5odG1sOgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Nj
cm9sbC1zbmFwLW1hbmRhdG9yeS1wYWRkaW5nLmh0bWw6CisgICAgICAgICogdGlsZWQtZHJhd2lu
Zy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtbWFuZGF0b3J5LXJvdGF0ZWQuaHRt
bDoKKworICAgICAgICBGb3JjZSB0aGVzZSB0ZXN0cyB0byB1c2UgcGxhdGZvcm0taW5kZXBlbmRl
bnQgc2Nyb2xsaW5nIG1vbWVudHVtIHByZWRpY3Rpb24sIGJ5IG11bHRpcGx5aW5nIHRoZSBsYXN0
IHNjcm9sbAorICAgICAgICBkZWx0YSB1cG9uIHJlbGVhc2UgYnkgYSBjb25zdGFudCBmYWN0b3Iu
CisKKyAgICAgICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwt
c25hcC1tYW5kYXRvcnktdGhlbi1wcm94aW1pdHktZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAg
ICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1tYW5k
YXRvcnktdGhlbi1wcm94aW1pdHkuaHRtbDogQWRkZWQuCisKKyAgICAgICAgVGVzdHMgdGhhdCBh
ZnRlciBjaGFuZ2luZyBzY3JvbGwtc25hcC10eXBlIGZyb20gbWFuZGF0b3J5IHRvIHByb3hpbWl0
eSwgc3dpcGluZyBkb3dud2FyZHMgbm8gbG9uZ2VyIHNuYXBzIHRoZQorICAgICAgICBzY3JvbGwg
b2Zmc2V0IHRvIHRoZSBzZWNvbmQgYm94LCBidXQgaW5zdGVhZCBsZWF2ZXMgdGhlIHNjcm9sbCBv
ZmZzZXQgc29tZXdoZXJlIGluIHRoZSBtaWRkbGUgb2YgdGhlIGZpcnN0IGJveC4KKworICAgICAg
ICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLXByb3hp
bWl0eS1tYWluZnJhbWUtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiB0aWxlZC1kcmF3
aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1wcm94aW1pdHktbWFpbmZyYW1l
Lmh0bWw6IEFkZGVkLgorCisgICAgICAgIFRlc3RzIHRoYXQgd2hlbiBzY3JvbGwtc25hcC10eXBl
IGlzIHByb3hpbWl0eSBpbiB0aGUgbWFpbmZyYW1lLCBzY3JvbGxpbmcgc2xpZ2h0bHkgZG93bndh
cmRzIHNuYXBzIHRoZSBzY3JvbGwKKyAgICAgICAgb2Zmc2V0IGJhY2sgdXAgdG8gdGhlIHRvcDsg
c2Nyb2xsaW5nIHNvbWV3aGVyZSBpbiB0aGUgbWlkZGxlIG9mIHRoZSBmaXJzdCBib3ggZG9lcyBu
b3Qgc25hcCB0aGUgc2Nyb2xsIG9mZnNldDsKKyAgICAgICAgYW5kIHNjcm9sbGluZyBuZWFyIHRo
ZSBlbmQgb2YgdGhlIGZpcnN0IGJveCBzbmFwcyB0aGUgc2Nyb2xsIG9mZnNldCB0byB0aGUgc2Vj
b25kIGJveC4KKworICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFw
L3Njcm9sbC1zbmFwLXByb3hpbWl0eS1vdmVyZmxvdy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAg
ICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLXBy
b3hpbWl0eS1vdmVyZmxvdy5odG1sOiBBZGRlZC4KKworICAgICAgICBTaW1pbGFyIHRvIHNjcm9s
bC1zbmFwLXByb3hpbWl0eS1tYWluZnJhbWUuaHRtbCwgZXhjZXB0IGZvciBvdmVyZmxvdyBzY3Jv
bGxpbmcgaW5zdGVhZCBvZiB0aGUgbWFpbmZyYW1lLgorCisgICAgICAgICogdGlsZWQtZHJhd2lu
Zy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtc2Nyb2xsaW5nLWp1bXBzLXRvLXRv
cC5odG1sOgorCiAyMDE2LTEyLTIyICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUu
Y29tPgogCiAgICAgICAgIENTUyBTY3JvbGwgU25hcCBkb2VzIG5vdCB3b3JrIGlmIHNjcm9sbGJh
ciBpcyBoaWRkZW4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xs
aW5nL2xhdGNoZWQtZGl2LXdpdGgtc2Nyb2xsLXNuYXAuaHRtbCBiL0xheW91dFRlc3RzL3RpbGVk
LWRyYXdpbmcvc2Nyb2xsaW5nL2xhdGNoZWQtZGl2LXdpdGgtc2Nyb2xsLXNuYXAuaHRtbAppbmRl
eCA0NzM1YWVhNmNhOTg1NDcwNmQ3ZjA2YjU3ZWYyOGFlMTM5ZWJlZjk5Li5kOWFmN2U1MmQ0MzI3
NTdhM2EyNjYzNTQwZGZhZDM3ZGNlMzBlMzA5IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy90aWxl
ZC1kcmF3aW5nL3Njcm9sbGluZy9sYXRjaGVkLWRpdi13aXRoLXNjcm9sbC1zbmFwLmh0bWwKKysr
IGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvbGF0Y2hlZC1kaXYtd2l0aC1z
Y3JvbGwtc25hcC5odG1sCkBAIC03NCw2ICs3NCw3IEBACiAgICAgICAgICAgICByZXR1cm4gbmV3
IFByb21pc2UocmVzb2x2ZSA9PiB7CiAgICAgICAgICAgICAgICAgd3JpdGUoYCogU3dpcGluZyAk
e21vbWVudHVtID8gIndpdGgiIDogIndpdGhvdXQifSBtb21lbnR1bSBpbiAke2VsZW1lbnQuaWR9
IHdpdGggc2Nyb2xsIG9mZnNldCAke2VsZW1lbnQuc2Nyb2xsTGVmdH1gKTsKICAgICAgICAgICAg
ICAgICBsZXQgbG9jYXRpb24gPSBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoZWxlbWVudCk7
CisgICAgICAgICAgICAgICAgaW50ZXJuYWxzLnNldFBsYXRmb3JtTW9tZW50dW1TY3JvbGxpbmdQ
cmVkaWN0aW9uRW5hYmxlZChmYWxzZSk7CiAgICAgICAgICAgICAgICAgZXZlbnRTZW5kZXIubW9u
aXRvcldoZWVsRXZlbnRzKCk7CiAgICAgICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3Zl
VG8obG9jYXRpb24ueCwgbG9jYXRpb24ueSk7CiAgICAgICAgICAgICAgICAgZXZlbnRTZW5kZXIu
bW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKC0xLCAwLCAiYmVnYW4iLCAi
bm9uZSIpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcv
c2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLmh0bWwgYi9MYXlvdXRUZXN0cy90aWxlZC1k
cmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUuaHRtbAppbmRl
eCAxODJlMTlmNTcxZDhmODgwODBjOTFhOGJjZDIzNDBhNGZlYTJmZTYwLi5kZjJlMWZmZTQ5ZmM4
MmRhYjI1NDIzYzhkNTE0MWU1YTc4OGFlMWUyIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy90aWxl
ZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUuaHRtbAor
KysgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3Jv
bGwtc25hcC1pZnJhbWUuaHRtbApAQCAtMTQ3LDYgKzE0Nyw3IEBACiAgICAgICAgIHsKICAgICAg
ICAgICAgIGlmICh3aW5kb3cuZXZlbnRTZW5kZXIpIHsKICAgICAgICAgICAgICAgICBldmVudFNl
bmRlci5tb25pdG9yV2hlZWxFdmVudHMoKTsKKyAgICAgICAgICAgICAgICBpbnRlcm5hbHMuc2V0
UGxhdGZvcm1Nb21lbnR1bVNjcm9sbGluZ1ByZWRpY3Rpb25FbmFibGVkKGZhbHNlKTsKICAgICAg
ICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3QoJ2hvcml6
b250YWxUYXJnZXQnKSB9LCAwKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xs
LXNuYXAtbWFuZGF0b3J5LTJkLW92ZXJmbG93Lmh0bWwgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3
aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1tYW5kYXRvcnktMmQtb3ZlcmZs
b3cuaHRtbAppbmRleCBhYzFhYjg4MmRjOGYzNTEwZGQyY2VlN2Y2NTM5MWI5NWYyZDBhM2UxLi43
YjBhZDNiMjYwNDk5ODU5Yzk1MmYyMjkyMTk5NDc5NmZmMzI2ZGU0IDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1t
YW5kYXRvcnktMmQtb3ZlcmZsb3cuaHRtbAorKysgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5n
L3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1tYW5kYXRvcnktMmQtb3ZlcmZsb3cu
aHRtbApAQCAtMTIzLDYgKzEyMyw3IEBACiAgICAgICAgIGZ1bmN0aW9uIG9uTG9hZCgpIHsKICAg
ICAgICAgICAgIGlmICh3aW5kb3cuZXZlbnRTZW5kZXIpIHsKICAgICAgICAgICAgICAgICBldmVu
dFNlbmRlci5tb25pdG9yV2hlZWxFdmVudHMoKTsKKyAgICAgICAgICAgICAgICBpbnRlcm5hbHMu
c2V0UGxhdGZvcm1Nb21lbnR1bVNjcm9sbGluZ1ByZWRpY3Rpb25FbmFibGVkKGZhbHNlKTsKICAg
ICAgICAgICAgICAgICBzZXRUaW1lb3V0KHNjcm9sbEdsaWRlVGVzdCwgMCk7CiAgICAgICAgICAg
ICB9IGVsc2UgewogICAgICAgICAgICAgICAgIHZhciBtZXNzYWdlTG9jYXRpb24gPSBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCgic25hcC1mcm9tIik7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90
aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1tYW5kYXRvcnkt
Ym9yZGVycy5odG1sIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xs
LXNuYXAvc2Nyb2xsLXNuYXAtbWFuZGF0b3J5LWJvcmRlcnMuaHRtbAppbmRleCA0MWRlZDA5NmFi
OTU2YzkwYWI4ODQxNWFlNDg0MmVjZWZmYzMwYzkwLi45Yzc1MjU4ZGZiMGRkYzdiOWM2ZWUxYTU1
Yjc1OGZmZWJjOTEyZWFhIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Nj
cm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1tYW5kYXRvcnktYm9yZGVycy5odG1sCisr
KyBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9s
bC1zbmFwLW1hbmRhdG9yeS1ib3JkZXJzLmh0bWwKQEAgLTE3Nyw2ICsxNzcsNyBAQAogICAgICAg
ICB7CiAgICAgICAgICAgICBpZiAod2luZG93LmV2ZW50U2VuZGVyKSB7CiAgICAgICAgICAgICAg
ICAgZXZlbnRTZW5kZXIubW9uaXRvcldoZWVsRXZlbnRzKCk7CisgICAgICAgICAgICAgICAgaW50
ZXJuYWxzLnNldFBsYXRmb3JtTW9tZW50dW1TY3JvbGxpbmdQcmVkaWN0aW9uRW5hYmxlZChmYWxz
ZSk7CiAgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVU
ZXN0KCdob3Jpem9udGFsVGFyZ2V0JykgfSwgMCk7CiAgICAgICAgICAgICB9IGVsc2UgewogICAg
ICAgICAgICAgICAgIHZhciBtZXNzYWdlTG9jYXRpb25IID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoJ2l0ZW1IMCcpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3Jv
bGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtbWFuZGF0b3J5LWhpZGRlbi1zY3JvbGxiYXJz
Lmh0bWwgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9z
Y3JvbGwtc25hcC1tYW5kYXRvcnktaGlkZGVuLXNjcm9sbGJhcnMuaHRtbAppbmRleCBiNGNmODk4
ZmEzMGM0MTIxOTRmMDI2YTEzYjc3ZTExYTVhM2RiZGY4Li5hMDQzNTkwNmQ5NjAzNTM0N2M1YzE2
ODdkY2YxNDg5Y2Q4MzU2MmEyIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5n
L3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1tYW5kYXRvcnktaGlkZGVuLXNjcm9s
bGJhcnMuaHRtbAorKysgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3Jv
bGwtc25hcC9zY3JvbGwtc25hcC1tYW5kYXRvcnktaGlkZGVuLXNjcm9sbGJhcnMuaHRtbApAQCAt
NDQsNiArNDQsNyBAQAogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0KIAor
ICAgICAgICAgICAgaW50ZXJuYWxzLnNldFBsYXRmb3JtTW9tZW50dW1TY3JvbGxpbmdQcmVkaWN0
aW9uRW5hYmxlZChmYWxzZSk7CiAgICAgICAgICAgICBldmVudFNlbmRlci5tb25pdG9yV2hlZWxF
dmVudHMoKTsKICAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKDI1MCwgMjUwKTsK
ICAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1
bVBoYXNlcygwLCAtMSwgImJlZ2FuIiwgIm5vbmUiKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLW1hbmRhdG9y
eS1tYWluZnJhbWUtaG9yaXpvbnRhbC5odG1sIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9z
Y3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtbWFuZGF0b3J5LW1haW5mcmFtZS1ob3Jp
em9udGFsLmh0bWwKaW5kZXggNjFlYTJlYzBiYjAzYWQwYTI2NjU5YmEzY2ZlM2JmMmM1ZjQ1NmI5
MC4uZjlkNzI3OGFhZTgzODkxMmM3OGEzYmQxMjIyNTFmYzU5Nzg4YWVmZCAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNu
YXAtbWFuZGF0b3J5LW1haW5mcmFtZS1ob3Jpem9udGFsLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMv
dGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtbWFuZGF0b3J5
LW1haW5mcmFtZS1ob3Jpem9udGFsLmh0bWwKQEAgLTkxLDYgKzkxLDcgQEAKIAogICAgICAgICAg
ICAgaWYgKHdpbmRvdy5ldmVudFNlbmRlcikgewogICAgICAgICAgICAgICAgIGV2ZW50U2VuZGVy
Lm1vbml0b3JXaGVlbEV2ZW50cygpOworICAgICAgICAgICAgICAgIGludGVybmFscy5zZXRQbGF0
Zm9ybU1vbWVudHVtU2Nyb2xsaW5nUHJlZGljdGlvbkVuYWJsZWQoZmFsc2UpOwogICAgICAgICAg
ICAgICAgIHNldFRpbWVvdXQoc2Nyb2xsR2xpZGVUZXN0LCAwKTsKICAgICAgICAgICAgIH0gZWxz
ZSB7CiAgICAgICAgICAgICAgICAgdmFyIG1lc3NhZ2VMb2NhdGlvbiA9IGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCdpdGVtMCcpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2lu
Zy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtbWFuZGF0b3J5LW1haW5mcmFtZS1z
bG93LWhvcml6b250YWwuaHRtbCBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5n
L3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLW1hbmRhdG9yeS1tYWluZnJhbWUtc2xvdy1ob3Jpem9u
dGFsLmh0bWwKaW5kZXggYzVjZDAzYzcyOTExNDg2MTdhMDQwMDFmNWI3ZDE2ZTZlNmZkMjU3ZS4u
ZGZkZGU4NTFlOWQ2MTEzOTlkMGJlNTk3YmYwODBkNDRlYzFiZGRkOCAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAt
bWFuZGF0b3J5LW1haW5mcmFtZS1zbG93LWhvcml6b250YWwuaHRtbAorKysgYi9MYXlvdXRUZXN0
cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1tYW5kYXRv
cnktbWFpbmZyYW1lLXNsb3ctaG9yaXpvbnRhbC5odG1sCkBAIC05MSw2ICs5MSw3IEBACiAKICAg
ICAgICAgICAgIGlmICh3aW5kb3cuZXZlbnRTZW5kZXIpIHsKICAgICAgICAgICAgICAgICBldmVu
dFNlbmRlci5tb25pdG9yV2hlZWxFdmVudHMoKTsKKyAgICAgICAgICAgICAgICBpbnRlcm5hbHMu
c2V0UGxhdGZvcm1Nb21lbnR1bVNjcm9sbGluZ1ByZWRpY3Rpb25FbmFibGVkKGZhbHNlKTsKICAg
ICAgICAgICAgICAgICBzZXRUaW1lb3V0KHNjcm9sbEdsaWRlVGVzdCwgMCk7CiAgICAgICAgICAg
ICB9IGVsc2UgewogICAgICAgICAgICAgICAgIHZhciBtZXNzYWdlTG9jYXRpb24gPSBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCgnaXRlbTAnKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RpbGVk
LWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLW1hbmRhdG9yeS1tYWlu
ZnJhbWUtc2xvdy12ZXJ0aWNhbC5odG1sIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3Jv
bGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtbWFuZGF0b3J5LW1haW5mcmFtZS1zbG93LXZl
cnRpY2FsLmh0bWwKaW5kZXggOGQ4NTE0NzQ1ZjBkMmJmZWNjMTZlYmRhMGNlMjU0ZDhiYzM4ZjM0
Ny4uNjI2ODI0NDU1YWZjZWY4ZGZhZmYwNmE4NTQ3ZjA0N2Q1ZmIyYjA1YiAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNu
YXAtbWFuZGF0b3J5LW1haW5mcmFtZS1zbG93LXZlcnRpY2FsLmh0bWwKKysrIGIvTGF5b3V0VGVz
dHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtbWFuZGF0
b3J5LW1haW5mcmFtZS1zbG93LXZlcnRpY2FsLmh0bWwKQEAgLTkwLDYgKzkwLDcgQEAKICAgICAg
ICAgZnVuY3Rpb24gb25Mb2FkKCkgewogICAgICAgICAgICAgaWYgKHdpbmRvdy5ldmVudFNlbmRl
cikgewogICAgICAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vbml0b3JXaGVlbEV2ZW50cygpOwor
ICAgICAgICAgICAgICAgIGludGVybmFscy5zZXRQbGF0Zm9ybU1vbWVudHVtU2Nyb2xsaW5nUHJl
ZGljdGlvbkVuYWJsZWQoZmFsc2UpOwogICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoc2Nyb2xs
R2xpZGVUZXN0LCAwKTsKICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgdmFy
IG1lc3NhZ2VMb2NhdGlvbiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdpdGVtMCcpOwpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAv
c2Nyb2xsLXNuYXAtbWFuZGF0b3J5LW1haW5mcmFtZS12ZXJ0aWNhbC10aGVuLWhvcml6b250YWwu
aHRtbCBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Nj
cm9sbC1zbmFwLW1hbmRhdG9yeS1tYWluZnJhbWUtdmVydGljYWwtdGhlbi1ob3Jpem9udGFsLmh0
bWwKaW5kZXggODlmNGUxODcxNDhiMmY2Y2I1MmNlZDliOWNhNmMzMTZkYjY4NGJhYi4uODUzODU4
MWFiZjlmNWZjMTdlYmE4ZmNiNDMyNWZhYzhkYTgyY2YzOSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtbWFuZGF0
b3J5LW1haW5mcmFtZS12ZXJ0aWNhbC10aGVuLWhvcml6b250YWwuaHRtbAorKysgYi9MYXlvdXRU
ZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1tYW5k
YXRvcnktbWFpbmZyYW1lLXZlcnRpY2FsLXRoZW4taG9yaXpvbnRhbC5odG1sCkBAIC01Miw2ICs1
Miw3IEBACiAgICAgICAgIGZ1bmN0aW9uIG9uTG9hZCgpIHsKICAgICAgICAgICAgIGlmICh3aW5k
b3cuZXZlbnRTZW5kZXIpIHsKICAgICAgICAgICAgICAgICBldmVudFNlbmRlci5tb25pdG9yV2hl
ZWxFdmVudHMoKTsKKyAgICAgICAgICAgICAgICBpbnRlcm5hbHMuc2V0UGxhdGZvcm1Nb21lbnR1
bVNjcm9sbGluZ1ByZWRpY3Rpb25FbmFibGVkKGZhbHNlKTsKICAgICAgICAgICAgICAgICBzZXRU
aW1lb3V0KHNjcm9sbFNuYXBUZXN0LCAwKTsKICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAg
ICAgICAgICAgdmFyIG1lc3NhZ2VMb2NhdGlvbiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdp
dGVtMCcpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcv
c2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtbWFuZGF0b3J5LW1haW5mcmFtZS12ZXJ0aWNhbC5odG1s
IGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xs
LXNuYXAtbWFuZGF0b3J5LW1haW5mcmFtZS12ZXJ0aWNhbC5odG1sCmluZGV4IDZlNzEwMTM0ZTFj
ZjlkMzg1OTA5YWJiNDM0NWNlZmI0ZWIzZTg1Y2UuLjlmZDI4OWNhMWY1NDY5ZDJhODQwZWM3MGI5
ODNmYTI4NDc0ZjU0NGYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Ny
b2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLW1hbmRhdG9yeS1tYWluZnJhbWUtdmVydGlj
YWwuaHRtbAorKysgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwt
c25hcC9zY3JvbGwtc25hcC1tYW5kYXRvcnktbWFpbmZyYW1lLXZlcnRpY2FsLmh0bWwKQEAgLTkx
LDYgKzkxLDcgQEAKIAogICAgICAgICAgICAgaWYgKHdpbmRvdy5ldmVudFNlbmRlcikgewogICAg
ICAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vbml0b3JXaGVlbEV2ZW50cygpOworICAgICAgICAg
ICAgICAgIGludGVybmFscy5zZXRQbGF0Zm9ybU1vbWVudHVtU2Nyb2xsaW5nUHJlZGljdGlvbkVu
YWJsZWQoZmFsc2UpOwogICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoc2Nyb2xsR2xpZGVUZXN0
LCAwKTsKICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgdmFyIG1lc3NhZ2VM
b2NhdGlvbiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdpdGVtMCcpOwpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNu
YXAtbWFuZGF0b3J5LW92ZXJmbG93LXN0YXRlbGVzcy5odG1sIGIvTGF5b3V0VGVzdHMvdGlsZWQt
ZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtbWFuZGF0b3J5LW92ZXJm
bG93LXN0YXRlbGVzcy5odG1sCmluZGV4IGNiOTRmNjk4OTc4MTlhMjJlZTkxZjNlNWM0NTBlNTE3
NjNiYTM2YjAuLmQyNWI1OWIwMWM3OGQ3ZWIyOWY4M2VlOTU0NDAyMmRjNmIxNDZjYzcgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Nj
cm9sbC1zbmFwLW1hbmRhdG9yeS1vdmVyZmxvdy1zdGF0ZWxlc3MuaHRtbAorKysgYi9MYXlvdXRU
ZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1tYW5k
YXRvcnktb3ZlcmZsb3ctc3RhdGVsZXNzLmh0bWwKQEAgLTY4LDYgKzY4LDcgQEAKICAgICAgICAg
ewogICAgICAgICAgICAgaWYgKHdpbmRvdy5ldmVudFNlbmRlcikgewogICAgICAgICAgICAgICAg
IGV2ZW50U2VuZGVyLm1vbml0b3JXaGVlbEV2ZW50cygpOworICAgICAgICAgICAgICAgIGludGVy
bmFscy5zZXRQbGF0Zm9ybU1vbWVudHVtU2Nyb2xsaW5nUHJlZGljdGlvbkVuYWJsZWQoZmFsc2Up
OwogICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoc2Nyb2xsU25hcFRlc3QsIDApOwogICAgICAg
ICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICB2YXIgbWVzc2FnZUxvY2F0aW9uSCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCJpdGVtMCIpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
dGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtbWFuZGF0b3J5
LW92ZXJmbG93Lmh0bWwgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3Jv
bGwtc25hcC9zY3JvbGwtc25hcC1tYW5kYXRvcnktb3ZlcmZsb3cuaHRtbAppbmRleCBiMzZmZGQ1
ODg3NzBkZjJmNmJlNDE3ZTllM2VlN2EwOTVhNDBkN2ZkLi5mNzMyZjNhOWQyZTkyMzE4NTdlZGVl
MDk1ZjU3NDFlMTQ5YjYzN2QzIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5n
L3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1tYW5kYXRvcnktb3ZlcmZsb3cuaHRt
bAorKysgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9z
Y3JvbGwtc25hcC1tYW5kYXRvcnktb3ZlcmZsb3cuaHRtbApAQCAtMTY3LDYgKzE2Nyw3IEBACiAg
ICAgICAgIHsKICAgICAgICAgICAgIGlmICh3aW5kb3cuZXZlbnRTZW5kZXIpIHsKICAgICAgICAg
ICAgICAgICBldmVudFNlbmRlci5tb25pdG9yV2hlZWxFdmVudHMoKTsKKyAgICAgICAgICAgICAg
ICBpbnRlcm5hbHMuc2V0UGxhdGZvcm1Nb21lbnR1bVNjcm9sbGluZ1ByZWRpY3Rpb25FbmFibGVk
KGZhbHNlKTsKICAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxH
bGlkZVRlc3QoJ2hvcml6b250YWxUYXJnZXQnKSB9LCAwKTsKICAgICAgICAgICAgIH0gZWxzZSB7
CiAgICAgICAgICAgICAgICAgdmFyIG1lc3NhZ2VMb2NhdGlvbkggPSBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCgnaXRlbUgwJyk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5n
L3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1tYW5kYXRvcnktcGFkZGluZy5odG1s
IGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xs
LXNuYXAtbWFuZGF0b3J5LXBhZGRpbmcuaHRtbAppbmRleCAwYTExN2RjZDY0Zjk1ZjYxNzU0OGY5
OGJjMDU1OTM0ZjlkYmMwZTBmLi41ZGJjMWNmMDBhNzE4NTRmNzJmZWQ5MTVkMWU0OGZjMDE0N2E4
NTM2IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3Jv
bGwtc25hcC9zY3JvbGwtc25hcC1tYW5kYXRvcnktcGFkZGluZy5odG1sCisrKyBiL0xheW91dFRl
c3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLW1hbmRh
dG9yeS1wYWRkaW5nLmh0bWwKQEAgLTE3Nyw2ICsxNzcsNyBAQAogICAgICAgICB7CiAgICAgICAg
ICAgICBpZiAod2luZG93LmV2ZW50U2VuZGVyKSB7CiAgICAgICAgICAgICAgICAgZXZlbnRTZW5k
ZXIubW9uaXRvcldoZWVsRXZlbnRzKCk7CisgICAgICAgICAgICAgICAgaW50ZXJuYWxzLnNldFBs
YXRmb3JtTW9tZW50dW1TY3JvbGxpbmdQcmVkaWN0aW9uRW5hYmxlZChmYWxzZSk7CiAgICAgICAg
ICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVUZXN0KCdob3Jpem9u
dGFsVGFyZ2V0JykgfSwgMCk7CiAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAg
IHZhciBtZXNzYWdlTG9jYXRpb25IID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2l0ZW1IMCcp
OwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xs
LXNuYXAvc2Nyb2xsLXNuYXAtbWFuZGF0b3J5LXJvdGF0ZWQuaHRtbCBiL0xheW91dFRlc3RzL3Rp
bGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLW1hbmRhdG9yeS1y
b3RhdGVkLmh0bWwKaW5kZXggYzkzMDFhZDkzOWVmMjA1NzAwNzMxZjY4MDY2YThlNzdkYjE1ZjI1
Zi4uYzRlZTk0NzM4YTgwMmFjZmRmMzJiMWY4MjQ3NzdlNTNlNzI3ZjdhYyAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNu
YXAtbWFuZGF0b3J5LXJvdGF0ZWQuaHRtbAorKysgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5n
L3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1tYW5kYXRvcnktcm90YXRlZC5odG1s
CkBAIC0xNjksNiArMTY5LDcgQEAKICAgICAgICAgewogICAgICAgICAgICAgaWYgKHdpbmRvdy5l
dmVudFNlbmRlcikgewogICAgICAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vbml0b3JXaGVlbEV2
ZW50cygpOworICAgICAgICAgICAgICAgIGludGVybmFscy5zZXRQbGF0Zm9ybU1vbWVudHVtU2Ny
b2xsaW5nUHJlZGljdGlvbkVuYWJsZWQoZmFsc2UpOwogICAgICAgICAgICAgICAgIHNldFRpbWVv
dXQoZnVuY3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVzdCgnaG9yaXpvbnRhbFRhcmdldCcpIH0sIDAp
OwogICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICB2YXIgbWVzc2FnZUxvY2F0
aW9uSCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdpdGVtSDAnKTsKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFw
LW1hbmRhdG9yeS10aGVuLXByb3hpbWl0eS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy90aWxl
ZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1tYW5kYXRvcnktdGhl
bi1wcm94aW1pdHktZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmFhMDNmMTNjMmVkM2JlMWE0MTE3
ZDg5YmYzOTg3MTQ4ZGE5MDhhMjAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy90aWxl
ZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1tYW5kYXRvcnktdGhl
bi1wcm94aW1pdHktZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNyBAQAorU2Nyb2xsaW5nIGluIGNv
bnRhaW5lciB3aXRoIHNjcm9sbC1zbmFwLXR5cGU6IHkgbWFuZGF0b3J5CistIERpZCB0aGUgc2Ny
b2xsaW5nIHNuYXAgdG8gdGhlIHRvcD8gTk8KKy0gRGlkIHNjcm9sbGluZyBzbmFwIHRvIHRoZSBz
ZWNvbmQgYm94PyBZRVMKK1Njcm9sbGluZyBpbiBjb250YWluZXIgd2l0aCBzY3JvbGwtc25hcC10
eXBlOiB5IHByb3hpbWl0eQorLSBEaWQgdGhlIHNjcm9sbGluZyBzbmFwIHRvIHRoZSB0b3A/IE5P
CistIERpZCBzY3JvbGxpbmcgc25hcCB0byB0aGUgc2Vjb25kIGJveD8gTk8KKwpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xs
LXNuYXAtbWFuZGF0b3J5LXRoZW4tcHJveGltaXR5Lmh0bWwgYi9MYXlvdXRUZXN0cy90aWxlZC1k
cmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1tYW5kYXRvcnktdGhlbi1w
cm94aW1pdHkuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41OWQ5YzQ2OWFmNWU3NWE1OTA3OWU4MDA4ODk2NTdk
NjQwODY0MTU5Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9z
Y3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtbWFuZGF0b3J5LXRoZW4tcHJveGltaXR5
Lmh0bWwKQEAgLTAsMCArMSw4MiBAQAorPCFET0NUWVBFIEhUTUw+Cis8aHRtbD4KKyAgICA8aGVh
ZD4KKyAgICAgICAgPHN0eWxlPgorICAgICAgICAgICAgYm9keSB7CisgICAgICAgICAgICAgICAg
bWFyZ2luOiAwOworICAgICAgICAgICAgICAgIG92ZXJmbG93OiBoaWRkZW47CisgICAgICAgICAg
ICB9CisKKyAgICAgICAgICAgICNjb250YWluZXIgeworICAgICAgICAgICAgICAgIHdpZHRoOiA2
MDBweDsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6IDYwMHB4OworICAgICAgICAgICAgICAgIHBv
c2l0aW9uOiBhYnNvbHV0ZTsKKyAgICAgICAgICAgICAgICB0b3A6IDA7CisgICAgICAgICAgICAg
ICAgbGVmdDogMDsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy14OiBub25lOworICAgICAgICAg
ICAgICAgIG92ZXJmbG93LXk6IHNjcm9sbDsKKyAgICAgICAgICAgICAgICBzY3JvbGwtc25hcC10
eXBlOiB5IG1hbmRhdG9yeTsKKyAgICAgICAgICAgICAgICBvcGFjaXR5OiAwLjU7CisgICAgICAg
ICAgICB9CisKKyAgICAgICAgICAgIC5hcmVhIHsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6IDYw
MHB4OworICAgICAgICAgICAgICAgIHdpZHRoOiA2MDBweDsKKyAgICAgICAgICAgICAgICBmbG9h
dDogbGVmdDsKKyAgICAgICAgICAgICAgICBzY3JvbGwtc25hcC1hbGlnbjogc3RhcnQ7CisgICAg
ICAgICAgICB9CisgICAgICAgIDwvc3R5bGU+CisgICAgICAgIDxzY3JpcHQ+CisgICAgICAgIGxl
dCB3cml0ZSA9IHMgPT4gb3V0cHV0LmlubmVySFRNTCArPSBzICsgIjxicj4iOworICAgICAgICBp
ZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICAgICAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4
dCgpOworICAgICAgICAgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CisgICAgICAgIH0K
KworICAgICAgICBmdW5jdGlvbiB2ZXJ0aWNhbFNjcm9sbEluQ29udGFpbmVyKGRyYWdEZWx0YXMs
IG1vbWVudHVtRGVsdGFzKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gbmV3IFByb21p
c2UocmVzb2x2ZSA9PiB7CisgICAgICAgICAgICAgICAgd3JpdGUoYFNjcm9sbGluZyBpbiAke2Nv
bnRhaW5lci5pZH0gd2l0aCBzY3JvbGwtc25hcC10eXBlOiAke2dldENvbXB1dGVkU3R5bGUoY29u
dGFpbmVyKS5zY3JvbGxTbmFwVHlwZX1gKTsKKyAgICAgICAgICAgICAgICBldmVudFNlbmRlci5t
b25pdG9yV2hlZWxFdmVudHMoKTsKKyAgICAgICAgICAgICAgICBpbnRlcm5hbHMuc2V0UGxhdGZv
cm1Nb21lbnR1bVNjcm9sbGluZ1ByZWRpY3Rpb25FbmFibGVkKGZhbHNlKTsKKyAgICAgICAgICAg
ICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbygzMDAsIDMwMCk7CisgICAgICAgICAgICAgICAg
ZHJhZ0RlbHRhcy5mb3JFYWNoKChkZWx0YSwgaSkgPT4gZXZlbnRTZW5kZXIubW91c2VTY3JvbGxC
eVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIGRlbHRhLCBpID09IDAgPyAiYmVnYW4iIDog
ImNoYW5nZWQiLCAibm9uZSIpKTsKKyAgICAgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNj
cm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgImVuZGVkIiwgIm5vbmUiKTsK
KyAgICAgICAgICAgICAgICBpZiAobW9tZW50dW1EZWx0YXMgJiYgbW9tZW50dW1EZWx0YXMubGVu
Z3RoKSB7CisgICAgICAgICAgICAgICAgICAgIG1vbWVudHVtRGVsdGFzLmZvckVhY2goKGRlbHRh
LCBpKSA9PiBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFz
ZXMoMCwgZGVsdGEsICJub25lIiwgaSA9PSAwID8gImJlZ2luIiA6ICJjb250aW51ZSIpKTsKKyAg
ICAgICAgICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1v
bWVudHVtUGhhc2VzKDAsIDAsICJub25lIiwgImVuZCIpOworICAgICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgICAgICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoKCkg
PT4geworICAgICAgICAgICAgICAgICAgICB3cml0ZShgLSBEaWQgdGhlIHNjcm9sbGluZyBzbmFw
IHRvIHRoZSB0b3A/ICR7Y29udGFpbmVyLnNjcm9sbFRvcCA9PSAwID8gIllFUyIgOiAiTk8ifWAp
OworICAgICAgICAgICAgICAgICAgICB3cml0ZShgLSBEaWQgc2Nyb2xsaW5nIHNuYXAgdG8gdGhl
IHNlY29uZCBib3g/ICR7Y29udGFpbmVyLnNjcm9sbFRvcCA9PSA2MDAgPyAiWUVTIiA6ICJOTyJ9
YCk7CisgICAgICAgICAgICAgICAgICAgIGNvbnRhaW5lci5zdHlsZS5zY3JvbGxTbmFwVHlwZSA9
ICJ5IHByb3hpbWl0eSIKKyAgICAgICAgICAgICAgICAgICAgY29udGFpbmVyLnNjcm9sbFRvcCA9
IDA7CisgICAgICAgICAgICAgICAgICAgIHNldFRpbWVvdXQocmVzb2x2ZSwgMCk7CisgICAgICAg
ICAgICAgICAgfSk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0
aW9uIHJ1bigpIHsKKyAgICAgICAgICAgIGlmICghd2luZG93LnRlc3RSdW5uZXIgfHwgIXdpbmRv
dy5ldmVudFNlbmRlcikgeworICAgICAgICAgICAgICAgIHdyaXRlKCJUaGlzIHRlc3QgcmVxdWly
ZXMgVUlTY3JpcHRDb250cm9sbGVyIHN1cHBvcnQuIik7CisgICAgICAgICAgICAgICAgcmV0dXJu
OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2ZXJ0aWNhbFNjcm9sbEluQ29udGFpbmVy
KG5ldyBBcnJheSgxNikuZmlsbCgtMSksIG5ldyBBcnJheSgzKS5maWxsKC0xKSkKKyAgICAgICAg
ICAgICAgICAudGhlbigoKSA9PiB2ZXJ0aWNhbFNjcm9sbEluQ29udGFpbmVyKG5ldyBBcnJheSgx
NikuZmlsbCgtMSksIG5ldyBBcnJheSgzKS5maWxsKC0xKSkpCisgICAgICAgICAgICAgICAgLnRo
ZW4oKCkgPT4gdGVzdFJ1bm5lci5ub3RpZnlEb25lKCkpOworICAgICAgICB9CisgICAgICAgIDwv
c2NyaXB0PgorICAgIDwvaGVhZD4KKyAgICA8Ym9keSBvbmxvYWQ9cnVuKCk+CisgICAgICAgIDxk
aXYgaWQ9ImNvbnRhaW5lciI+CisgICAgICAgICAgICA8ZGl2IGNsYXNzPSJhcmVhIiBzdHlsZT0i
YmFja2dyb3VuZC1jb2xvcjogcmVkOyI+PC9kaXY+CisgICAgICAgICAgICA8ZGl2IGNsYXNzPSJh
cmVhIiBzdHlsZT0iYmFja2dyb3VuZC1jb2xvcjogZ3JlZW47Ij48L2Rpdj4KKyAgICAgICAgICAg
IDxkaXYgY2xhc3M9ImFyZWEiIHN0eWxlPSJiYWNrZ3JvdW5kLWNvbG9yOiBibHVlOyI+PC9kaXY+
CisgICAgICAgICAgICA8ZGl2IGNsYXNzPSJhcmVhIiBzdHlsZT0iYmFja2dyb3VuZC1jb2xvcjog
YXF1YTsiPjwvZGl2PgorICAgICAgICAgICAgPGRpdiBjbGFzcz0iYXJlYSIgc3R5bGU9ImJhY2tn
cm91bmQtY29sb3I6IHllbGxvdzsiPjwvZGl2PgorICAgICAgICAgICAgPGRpdiBjbGFzcz0iYXJl
YSIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6IGZ1Y2hzaWE7Ij48L2Rpdj4KKyAgICAgICAgPC9k
aXY+CisgICAgICAgIDxkaXYgaWQ9Im91dHB1dCI+PC9kaXY+CisgICAgPC9ib2R5PgorPC9odG1s
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xs
LXNuYXAvc2Nyb2xsLXNuYXAtcHJveGltaXR5LW1haW5mcmFtZS1leHBlY3RlZC50eHQgYi9MYXlv
dXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1w
cm94aW1pdHktbWFpbmZyYW1lLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43ZDQxMGFmNjgxMzFi
M2NiMmIzYmY5ZjRmMDJhZDhjMTgzMzllZDdkCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtcHJveGlt
aXR5LW1haW5mcmFtZS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxMCBAQAorU2Nyb2xsaW5nIGJv
ZHkgd2l0aCAyIGRyYWcgdGlja3MKKy0gRGlkIHRoZSBzY3JvbGxpbmcgc25hcCB0byB0aGUgdG9w
PyBZRVMKKy0gRGlkIHNjcm9sbGluZyBzbmFwIHRvIHRoZSBzZWNvbmQgYm94PyBOTworU2Nyb2xs
aW5nIGJvZHkgd2l0aCAzMCBkcmFnIHRpY2tzCistIERpZCB0aGUgc2Nyb2xsaW5nIHNuYXAgdG8g
dGhlIHRvcD8gTk8KKy0gRGlkIHNjcm9sbGluZyBzbmFwIHRvIHRoZSBzZWNvbmQgYm94PyBOTwor
U2Nyb2xsaW5nIGJvZHkgd2l0aCA2MCBkcmFnIHRpY2tzCistIERpZCB0aGUgc2Nyb2xsaW5nIHNu
YXAgdG8gdGhlIHRvcD8gTk8KKy0gRGlkIHNjcm9sbGluZyBzbmFwIHRvIHRoZSBzZWNvbmQgYm94
PyBZRVMKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcv
c2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtcHJveGltaXR5LW1haW5mcmFtZS5odG1sIGIvTGF5b3V0
VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtcHJv
eGltaXR5LW1haW5mcmFtZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjY3OTk3MWIwYzY1OTNhMWUwYzEwZTIz
YTZlZTFiM2U2YWE4NDY4NzgKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy90aWxlZC1k
cmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1wcm94aW1pdHktbWFpbmZy
YW1lLmh0bWwKQEAgLTAsMCArMSw4MiBAQAorPCFET0NUWVBFIEhUTUw+Cis8aHRtbD4KKyAgICA8
aGVhZD4KKyAgICAgICAgPHN0eWxlPgorICAgICAgICAgICAgYm9keSB7CisgICAgICAgICAgICAg
ICAgbWFyZ2luOiAwOworICAgICAgICAgICAgICAgIHdpZHRoOiAxMDAlOworICAgICAgICAgICAg
ICAgIGhlaWdodDogMTAwJTsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy14OiBub25lOworICAg
ICAgICAgICAgICAgIG92ZXJmbG93LXk6IHNjcm9sbDsKKyAgICAgICAgICAgICAgICBwb3NpdGlv
bjogYWJzb2x1dGU7CisgICAgICAgICAgICAgICAgc2Nyb2xsLXNuYXAtdHlwZTogeSBwcm94aW1p
dHk7CisgICAgICAgICAgICAgICAgLXdlYmtpdC1zY3JvbGwtc25hcC10eXBlOiBwcm94aW1pdHk7
CisgICAgICAgICAgICAgICAgc2Nyb2xsLXNuYXAtdHlwZTogcHJveGltaXR5OworICAgICAgICAg
ICAgfQorCisgICAgICAgICAgICAuYXJlYSB7CisgICAgICAgICAgICAgICAgd2lkdGg6IDEwMCU7
CisgICAgICAgICAgICAgICAgaGVpZ2h0OiAxMDAlOworICAgICAgICAgICAgICAgIGZsb2F0OiBs
ZWZ0OworICAgICAgICAgICAgICAgIG9wYWNpdHk6IDAuNTsKKyAgICAgICAgICAgICAgICBzY3Jv
bGwtc25hcC1hbGlnbjogc3RhcnQ7CisgICAgICAgICAgICAgICAgLXdlYmtpdC1zY3JvbGwtc25h
cC1jb29yZGluYXRlOiAwIDA7CisgICAgICAgICAgICAgICAgc2Nyb2xsLXNuYXAtY29vcmRpbmF0
ZTogMCAwOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAjb3V0cHV0IHsKKyAgICAgICAg
ICAgICAgICBwb3NpdGlvbjogZml4ZWQ7CisgICAgICAgICAgICB9CisgICAgICAgIDwvc3R5bGU+
CisgICAgICAgIDxzY3JpcHQ+CisgICAgICAgIGxldCB3cml0ZSA9IHMgPT4gb3V0cHV0LmlubmVy
SFRNTCArPSBzICsgIjxicj4iOworICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAg
ICAgICAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOworICAgICAgICAgICAgdGVzdFJ1bm5l
ci53YWl0VW50aWxEb25lKCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiB2ZXJ0aWNh
bFNjcm9sbEluQm9keShkcmFnRGVsdGFzKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4g
bmV3IFByb21pc2UocmVzb2x2ZSA9PiB7CisgICAgICAgICAgICAgICAgd3JpdGUoYFNjcm9sbGlu
ZyBib2R5IHdpdGggJHtkcmFnRGVsdGFzLmxlbmd0aH0gZHJhZyB0aWNrc2ApOworICAgICAgICAg
ICAgICAgIGV2ZW50U2VuZGVyLm1vbml0b3JXaGVlbEV2ZW50cygpOworICAgICAgICAgICAgICAg
IGludGVybmFscy5zZXRQbGF0Zm9ybU1vbWVudHVtU2Nyb2xsaW5nUHJlZGljdGlvbkVuYWJsZWQo
ZmFsc2UpOworICAgICAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHdpbmRvdy5p
bm5lcldpZHRoIC8gMiwgd2luZG93LmlubmVySGVpZ2h0IC8gMik7CisgICAgICAgICAgICAgICAg
ZHJhZ0RlbHRhcy5mb3JFYWNoKChkZWx0YSwgaSkgPT4gZXZlbnRTZW5kZXIubW91c2VTY3JvbGxC
eVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIGRlbHRhLCBpID09IDAgPyAiYmVnYW4iIDog
ImNoYW5nZWQiLCAibm9uZSIpKTsKKyAgICAgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNj
cm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgImVuZGVkIiwgIm5vbmUiKTsK
KyAgICAgICAgICAgICAgICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMo
KCkgPT4geworICAgICAgICAgICAgICAgICAgICBsZXQgYXJlYUhlaWdodCA9IGRvY3VtZW50LnF1
ZXJ5U2VsZWN0b3IoIi5hcmVhIikuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgICAgICAgICB3
cml0ZShgLSBEaWQgdGhlIHNjcm9sbGluZyBzbmFwIHRvIHRoZSB0b3A/ICR7ZG9jdW1lbnQuYm9k
eS5zY3JvbGxUb3AgPT0gMCA/ICJZRVMiIDogIk5PIn1gKTsKKyAgICAgICAgICAgICAgICAgICAg
d3JpdGUoYC0gRGlkIHNjcm9sbGluZyBzbmFwIHRvIHRoZSBzZWNvbmQgYm94PyAke2RvY3VtZW50
LmJvZHkuc2Nyb2xsVG9wID09IGFyZWFIZWlnaHQgPyAiWUVTIiA6ICJOTyJ9YCk7CisgICAgICAg
ICAgICAgICAgICAgIGRvY3VtZW50LmJvZHkuc2Nyb2xsVG9wID0gMDsKKyAgICAgICAgICAgICAg
ICAgICAgc2V0VGltZW91dChyZXNvbHZlLCAwKTsKKyAgICAgICAgICAgICAgICB9KTsKKyAgICAg
ICAgICAgIH0pOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gcnVuKCkgeworICAgICAg
ICAgICAgaWYgKCF3aW5kb3cudGVzdFJ1bm5lciB8fCAhd2luZG93LmV2ZW50U2VuZGVyKSB7Cisg
ICAgICAgICAgICAgICAgd3JpdGUoIlRvIG1hbnVhbGx5IHRlc3QsIHZlcmlmeSB0aGF0IHNjcm9s
bGluZyBuZWFyIG9uZSBvZiB0aGUgYm91bmRhcmllcyBiZXR3ZWVuIHRoZSBjb2xvcmVkIGJveGVz
Iik7CisgICAgICAgICAgICAgICAgd3JpdGUoInNuYXBzIHRvIHRoZSBlZGdlIG9mIHRoZSBuZWFy
ZXN0IGNvbG9yZWQgYm94LCBidXQgc2Nyb2xsaW5nIHNvbWV3aGVyZSBuZWFyIHRoZSBtaWRkbGUg
b2YgdHdvIik7CisgICAgICAgICAgICAgICAgd3JpdGUoImJveGVzIGRvZXMgbm90IGNhdXNlIHRo
ZSBzY3JvbGwgb2Zmc2V0IHRvIHNuYXAuIik7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAg
ICAgICAgICAgfQorCisgICAgICAgICAgICBsZXQgYXJlYUhlaWdodCA9IGRvY3VtZW50LnF1ZXJ5
U2VsZWN0b3IoIi5hcmVhIikuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgdmVydGljYWxTY3Jv
bGxJbkJvZHkobmV3IEFycmF5KDIpLmZpbGwoLTEpKQorICAgICAgICAgICAgICAgIC50aGVuKCgp
ID0+IHZlcnRpY2FsU2Nyb2xsSW5Cb2R5KG5ldyBBcnJheShNYXRoLnJvdW5kKGFyZWFIZWlnaHQg
LyAyMCkpLmZpbGwoLTEpKSkKKyAgICAgICAgICAgICAgICAudGhlbigoKSA9PiB2ZXJ0aWNhbFNj
cm9sbEluQm9keShuZXcgQXJyYXkoTWF0aC5yb3VuZChhcmVhSGVpZ2h0IC8gMTApKS5maWxsKC0x
KSkpCisgICAgICAgICAgICAgICAgLnRoZW4oKCkgPT4gdGVzdFJ1bm5lci5ub3RpZnlEb25lKCkp
OworICAgICAgICB9CisgICAgICAgIDwvc2NyaXB0PgorICAgIDwvaGVhZD4KKyAgICA8Ym9keSBv
bmxvYWQ9cnVuKCk+CisgICAgICAgIDxkaXYgY2xhc3M9ImFyZWEiIHN0eWxlPSJiYWNrZ3JvdW5k
LWNvbG9yOiByZWQ7Ij48L2Rpdj4KKyAgICAgICAgPGRpdiBjbGFzcz0iYXJlYSIgc3R5bGU9ImJh
Y2tncm91bmQtY29sb3I6IGdyZWVuOyI+PC9kaXY+CisgICAgICAgIDxkaXYgY2xhc3M9ImFyZWEi
IHN0eWxlPSJiYWNrZ3JvdW5kLWNvbG9yOiBibHVlOyI+PC9kaXY+CisgICAgICAgIDxkaXYgY2xh
c3M9ImFyZWEiIHN0eWxlPSJiYWNrZ3JvdW5kLWNvbG9yOiBhcXVhOyI+PC9kaXY+CisgICAgICAg
IDxkaXYgY2xhc3M9ImFyZWEiIHN0eWxlPSJiYWNrZ3JvdW5kLWNvbG9yOiB5ZWxsb3c7Ij48L2Rp
dj4KKyAgICAgICAgPGRpdiBjbGFzcz0iYXJlYSIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6IGZ1
Y2hzaWE7Ij48L2Rpdj4KKyAgICA8L2JvZHk+CisgICAgPGRpdiBpZD0ib3V0cHV0Ij48L2Rpdj4K
KzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5n
L3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLXByb3hpbWl0eS1vdmVyZmxvdy1leHBlY3RlZC50eHQg
Yi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwt
c25hcC1wcm94aW1pdHktb3ZlcmZsb3ctZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmE1OWY3YTll
N2IxODBjMWQ3NDUxODVjM2ZjYTgzMTI4NDA3YTkyZTgKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1w
cm94aW1pdHktb3ZlcmZsb3ctZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTAgQEAKK1Njcm9sbGlu
ZyBpbiBjb250YWluZXIgd2l0aCAyIGRyYWcgdGlja3MKKy0gRGlkIHRoZSBzY3JvbGxpbmcgc25h
cCB0byB0aGUgdG9wPyBZRVMKKy0gRGlkIHNjcm9sbGluZyBzbmFwIHRvIHRoZSBzZWNvbmQgYm94
PyBOTworU2Nyb2xsaW5nIGluIGNvbnRhaW5lciB3aXRoIDMxIGRyYWcgdGlja3MKKy0gRGlkIHRo
ZSBzY3JvbGxpbmcgc25hcCB0byB0aGUgdG9wPyBOTworLSBEaWQgc2Nyb2xsaW5nIHNuYXAgdG8g
dGhlIHNlY29uZCBib3g/IE5PCitTY3JvbGxpbmcgaW4gY29udGFpbmVyIHdpdGggNTkgZHJhZyB0
aWNrcworLSBEaWQgdGhlIHNjcm9sbGluZyBzbmFwIHRvIHRoZSB0b3A/IE5PCistIERpZCBzY3Jv
bGxpbmcgc25hcCB0byB0aGUgc2Vjb25kIGJveD8gWUVTCisKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLXByb3hp
bWl0eS1vdmVyZmxvdy5odG1sIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcv
c2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtcHJveGltaXR5LW92ZXJmbG93Lmh0bWwKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNWIwNTJmZGJmOTRjODRhM2Q4ZTBkMWEyOGZjYjUyMjAyYWVmOWYyZgotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Nj
cm9sbC1zbmFwLXByb3hpbWl0eS1vdmVyZmxvdy5odG1sCkBAIC0wLDAgKzEsODQgQEAKKzwhRE9D
VFlQRSBIVE1MPgorPGh0bWw+CisgICAgPGhlYWQ+CisgICAgICAgIDxzdHlsZT4KKyAgICAgICAg
ICAgIGJvZHkgeworICAgICAgICAgICAgICAgIG1hcmdpbjogMDsKKyAgICAgICAgICAgICAgICBv
dmVyZmxvdzogaGlkZGVuOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAjY29udGFpbmVy
IHsKKyAgICAgICAgICAgICAgICB3aWR0aDogNjAwcHg7CisgICAgICAgICAgICAgICAgaGVpZ2h0
OiA2MDBweDsKKyAgICAgICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CisgICAgICAgICAg
ICAgICAgdG9wOiAwOworICAgICAgICAgICAgICAgIGxlZnQ6IDA7CisgICAgICAgICAgICAgICAg
b3ZlcmZsb3cteDogbm9uZTsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy15OiBzY3JvbGw7Cisg
ICAgICAgICAgICAgICAgc2Nyb2xsLXNuYXAtdHlwZTogeSBwcm94aW1pdHk7CisgICAgICAgICAg
ICAgICAgLXdlYmtpdC1zY3JvbGwtc25hcC10eXBlOiBwcm94aW1pdHk7CisgICAgICAgICAgICAg
ICAgc2Nyb2xsLXNuYXAtdHlwZTogcHJveGltaXR5OworICAgICAgICAgICAgICAgIG9wYWNpdHk6
IDAuNTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLmFyZWEgeworICAgICAgICAgICAg
ICAgIGhlaWdodDogNjAwcHg7CisgICAgICAgICAgICAgICAgd2lkdGg6IDYwMHB4OworICAgICAg
ICAgICAgICAgIGZsb2F0OiBsZWZ0OworICAgICAgICAgICAgICAgIHNjcm9sbC1zbmFwLWFsaWdu
OiBzdGFydDsKKyAgICAgICAgICAgICAgICAtd2Via2l0LXNjcm9sbC1zbmFwLWNvb3JkaW5hdGU6
IDAgMDsKKyAgICAgICAgICAgICAgICBzY3JvbGwtc25hcC1jb29yZGluYXRlOiAwIDA7CisgICAg
ICAgICAgICB9CisgICAgICAgIDwvc3R5bGU+CisgICAgICAgIDxzY3JpcHQ+CisgICAgICAgIGxl
dCB3cml0ZSA9IHMgPT4gb3V0cHV0LmlubmVySFRNTCArPSBzICsgIjxicj4iOworICAgICAgICBp
ZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICAgICAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4
dCgpOworICAgICAgICAgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CisgICAgICAgIH0K
KworICAgICAgICBmdW5jdGlvbiB2ZXJ0aWNhbFNjcm9sbEluQ29udGFpbmVyKGRyYWdEZWx0YXMp
CisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHsK
KyAgICAgICAgICAgICAgICB3cml0ZShgU2Nyb2xsaW5nIGluICR7Y29udGFpbmVyLmlkfSB3aXRo
ICR7ZHJhZ0RlbHRhcy5sZW5ndGh9IGRyYWcgdGlja3NgKTsKKyAgICAgICAgICAgICAgICBldmVu
dFNlbmRlci5tb25pdG9yV2hlZWxFdmVudHMoKTsKKyAgICAgICAgICAgICAgICBpbnRlcm5hbHMu
c2V0UGxhdGZvcm1Nb21lbnR1bVNjcm9sbGluZ1ByZWRpY3Rpb25FbmFibGVkKGZhbHNlKTsKKyAg
ICAgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbygzMDAsIDMwMCk7CisgICAgICAg
ICAgICAgICAgZHJhZ0RlbHRhcy5mb3JFYWNoKChkZWx0YSwgaSkgPT4gZXZlbnRTZW5kZXIubW91
c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIGRlbHRhLCBpID09IDAgPyAi
YmVnYW4iIDogImNoYW5nZWQiLCAibm9uZSIpKTsKKyAgICAgICAgICAgICAgICBldmVudFNlbmRl
ci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgImVuZGVkIiwg
Im5vbmUiKTsKKyAgICAgICAgICAgICAgICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdD
b21wbGV0ZXMoKCkgPT4geworICAgICAgICAgICAgICAgICAgICB3cml0ZShgLSBEaWQgdGhlIHNj
cm9sbGluZyBzbmFwIHRvIHRoZSB0b3A/ICR7Y29udGFpbmVyLnNjcm9sbFRvcCA9PSAwID8gIllF
UyIgOiAiTk8ifWApOworICAgICAgICAgICAgICAgICAgICB3cml0ZShgLSBEaWQgc2Nyb2xsaW5n
IHNuYXAgdG8gdGhlIHNlY29uZCBib3g/ICR7Y29udGFpbmVyLnNjcm9sbFRvcCA9PSA2MDAgPyAi
WUVTIiA6ICJOTyJ9YCk7CisgICAgICAgICAgICAgICAgICAgIGNvbnRhaW5lci5zY3JvbGxUb3Ag
PSAwOworICAgICAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KHJlc29sdmUsIDApOworICAgICAg
ICAgICAgICAgIH0pOworICAgICAgICAgICAgfSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5j
dGlvbiBydW4oKSB7CisgICAgICAgICAgICBpZiAoIXdpbmRvdy50ZXN0UnVubmVyIHx8ICF3aW5k
b3cuZXZlbnRTZW5kZXIpIHsKKyAgICAgICAgICAgICAgICB3cml0ZSgiVG8gbWFudWFsbHkgdGVz
dCwgdmVyaWZ5IHRoYXQgc2Nyb2xsaW5nIG5lYXIgb25lIG9mIHRoZSBib3VuZGFyaWVzIGJldHdl
ZW4gdGhlIGNvbG9yZWQgYm94ZXMiKTsKKyAgICAgICAgICAgICAgICB3cml0ZSgic25hcHMgdG8g
dGhlIGVkZ2Ugb2YgdGhlIG5lYXJlc3QgY29sb3JlZCBib3gsIGJ1dCBzY3JvbGxpbmcgc29tZXdo
ZXJlIG5lYXIgdGhlIG1pZGRsZSBvZiB0d28iKTsKKyAgICAgICAgICAgICAgICB3cml0ZSgiYm94
ZXMgZG9lcyBub3QgY2F1c2UgdGhlIHNjcm9sbCBvZmZzZXQgdG8gc25hcC4iKTsKKyAgICAgICAg
ICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZlcnRpY2FsU2Ny
b2xsSW5Db250YWluZXIobmV3IEFycmF5KDIpLmZpbGwoLTEpKQorICAgICAgICAgICAgICAgIC50
aGVuKCgpID0+IHZlcnRpY2FsU2Nyb2xsSW5Db250YWluZXIobmV3IEFycmF5KDMxKS5maWxsKC0x
KSkpCisgICAgICAgICAgICAgICAgLnRoZW4oKCkgPT4gdmVydGljYWxTY3JvbGxJbkNvbnRhaW5l
cihuZXcgQXJyYXkoNTkpLmZpbGwoLTEpKSkKKyAgICAgICAgICAgICAgICAudGhlbigoKSA9PiB0
ZXN0UnVubmVyLm5vdGlmeURvbmUoKSk7CisgICAgICAgIH0KKyAgICAgICAgPC9zY3JpcHQ+Cisg
ICAgPC9oZWFkPgorICAgIDxib2R5IG9ubG9hZD1ydW4oKT4KKyAgICAgICAgPGRpdiBpZD0iY29u
dGFpbmVyIj4KKyAgICAgICAgICAgIDxkaXYgY2xhc3M9ImFyZWEiIHN0eWxlPSJiYWNrZ3JvdW5k
LWNvbG9yOiByZWQ7Ij48L2Rpdj4KKyAgICAgICAgICAgIDxkaXYgY2xhc3M9ImFyZWEiIHN0eWxl
PSJiYWNrZ3JvdW5kLWNvbG9yOiBncmVlbjsiPjwvZGl2PgorICAgICAgICAgICAgPGRpdiBjbGFz
cz0iYXJlYSIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6IGJsdWU7Ij48L2Rpdj4KKyAgICAgICAg
ICAgIDxkaXYgY2xhc3M9ImFyZWEiIHN0eWxlPSJiYWNrZ3JvdW5kLWNvbG9yOiBhcXVhOyI+PC9k
aXY+CisgICAgICAgICAgICA8ZGl2IGNsYXNzPSJhcmVhIiBzdHlsZT0iYmFja2dyb3VuZC1jb2xv
cjogeWVsbG93OyI+PC9kaXY+CisgICAgICAgICAgICA8ZGl2IGNsYXNzPSJhcmVhIiBzdHlsZT0i
YmFja2dyb3VuZC1jb2xvcjogZnVjaHNpYTsiPjwvZGl2PgorICAgICAgICA8L2Rpdj4KKyAgICAg
ICAgPGRpdiBpZD0ib3V0cHV0Ij48L2Rpdj4KKyAgICA8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3Jv
bGwtc25hcC1zY3JvbGxpbmctanVtcHMtdG8tdG9wLmh0bWwgYi9MYXlvdXRUZXN0cy90aWxlZC1k
cmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1zY3JvbGxpbmctanVtcHMt
dG8tdG9wLmh0bWwKaW5kZXggYTZiYWQ0OWY5NzBkNTcyMDkyNzU2NDg5NmNhZjY1NzIwOGU1MDky
YS4uZmM5MTA3YjBmMjk2MDA3ODc4NDMxZDU3NGRmOGY3ZDVlODgxNzI4ZiAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNu
YXAtc2Nyb2xsaW5nLWp1bXBzLXRvLXRvcC5odG1sCisrKyBiL0xheW91dFRlc3RzL3RpbGVkLWRy
YXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLXNjcm9sbGluZy1qdW1wcy10
by10b3AuaHRtbApAQCAtMzQsNiArMzQsNyBAQAogICAgICAgICAgICAgdGVzdFJ1bm5lci5kdW1w
QXNUZXh0KCk7CiAgICAgICAgICAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKICAgICAg
ICAgICAgIGV2ZW50U2VuZGVyLm1vbml0b3JXaGVlbEV2ZW50cygpOworICAgICAgICAgICAgaW50
ZXJuYWxzLnNldFBsYXRmb3JtTW9tZW50dW1TY3JvbGxpbmdQcmVkaWN0aW9uRW5hYmxlZChmYWxz
ZSk7CiAgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhjb250YWluZXIub2Zmc2V0
TGVmdCArIGNvbnRhaW5lci5jbGllbnRXaWR0aCAvIDIsIGNvbnRhaW5lci5vZmZzZXRUb3AgKyBj
b250YWluZXIuY2xpZW50SGVpZ2h0IC8gMik7CiAKICAgICAgICAgICAgIHdyaXRlKCJTY3JvbGxp
bmcgd2l0aG91dCBtb21lbnR1bSB0byB0aGUgc2FtZSBwb3NpdGlvbiBzZXZlcmFsIHRpbWVzIikK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>297842</attachid>
            <date>2016-12-29 14:13:43 -0800</date>
            <delta_ts>2017-01-10 12:00:44 -0800</delta_ts>
            <desc>First pass (fix EFL build)</desc>
            <filename>bug-135994-20161229141226.patch</filename>
            <type>text/plain</type>
            <size>135776</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjEwMTE5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzM2ODBkNzQyNzE2ZDg3
ZjU1ZjYxOTQ3MDk2NjM1ZmRjOTUyNDU2ZC4uZGRkNDk2MmVkNjJmOTg3ZmVlYTMwNmYzODIwYjkz
MjQzMWY2OTkxYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4NyBAQAorMjAxNi0xMi0yOSAgV2Vu
c29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KKworICAgICAgICBJbXBsZW1lbnQg
InByb3hpbWl0eSIgc2Nyb2xsIHNuYXBwaW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xMzU5OTQKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzE4MTYy
NDE4PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFk
ZHMgc3VwcG9ydCBmb3IgcHJveGltaXR5IHNjcm9sbCBzbmFwcGluZy4gVG8gZG8gdGhpcywgd2Ug
aW50cm9kdWNlIHNjcm9sbCBvZmZzZXQgcmFuZ2VzLCBhIGxpc3Qgb2Ygc2Nyb2xsCisgICAgICAg
IG9mZnNldCByYW5nZXMgdGhhdCBhcmUgcGx1bWJlZCBhbG9uZ3NpZGUgdGhlIGxpc3Qgb2Ygc2Ny
b2xsIHNuYXAgb2Zmc2V0cy4gU2ltaWxhciB0byBhIHNuYXAgb2Zmc2V0LCBhIHNuYXAKKyAgICAg
ICAgb2Zmc2V0IHJhbmdlIGNvbnRhaW5zIHNjcm9sbCBvZmZzZXRzIG9uIHdoaWNoIHNjcm9sbGlu
ZyBpcyBhbGxvd2VkIHRvIGNvbWUgdG8gYSByZXN0IHdpdGhpbiBhIHNjcm9sbCBzbmFwcGluZwor
ICAgICAgICBjb250YWluZXIuIEhvd2V2ZXIsIHVubGlrZSBub3JtYWwgc25hcCBvZmZzZXRzLCBz
Y3JvbGxpbmcgbWF5IG9ubHkgY29tZSB0byByZXN0IHdpdGhpbiBhIHNuYXAgb2Zmc2V0IHJhbmdl
IGlmCisgICAgICAgIHRoZSBwcmVkaWN0ZWQgc2Nyb2xsIG9mZnNldCBhbHJlYWR5IGxpZXMgd2l0
aGluIHRoZSByYW5nZS4gVGhlIG5ldyBhbGdvcml0aG0gZm9yIHNlbGVjdGluZyBhIHRhcmdldCBz
Y3JvbGwgc25hcAorICAgICAgICBwb3NpdGlvbiBnaXZlbiBhIGRlc3RpbmF0aW9uIG9mZnNldCBp
cyBub3c6CisKKyAgICAgICAgLSAgIElmIHRoZSBzY3JvbGwgZGVzdGluYXRpb24gbGllcyB3aXRo
aW4gYSBzbmFwIG9mZnNldCByYW5nZSwgcmV0dXJuIHRoZSBzY3JvbGwgZGVzdGluYXRpb24KKyAg
ICAgICAgLSAgIE90aGVyd2lzZSwgY29tcHV0ZSB0aGUgbmVhcmVzdCBsb3dlci91cHBlciBzbmFw
IG9mZnNldHMgYW5kIGxvd2VyL3VwcGVyIHNuYXAgb2Zmc2V0IHJhbmdlcworICAgICAgICAtICAg
SWYgc2Nyb2xsaW5nIGVuZGVkIHdpdGggbm8gdmVsb2NpdHksIHJldHVybiB0aGUgbmVhcmVzdCBz
bmFwIG9mZnNldAorICAgICAgICAtICAgSWYgc2Nyb2xsaW5nIGVuZGVkIHdpdGggcG9zaXRpdmUg
dmVsb2NpdHksIGNob29zZSB0aGUgdXBwZXIgc25hcCBvZmZzZXQgb25seSBpZiB0aGVyZSBpcyBu
byBzbmFwIG9mZnNldAorICAgICAgICAgICAgcmFuZ2UgaW4gYmV0d2VlbiB0aGUgc2Nyb2xsIGRl
c3RpbmF0aW9uIGFuZCB0aGUgc25hcCBvZmZzZXQ7IGVsc2UsIGNob29zZSB0aGUgbG93ZXIgc25h
cCBvZmZzZXQKKyAgICAgICAgLSAgIElmIHNjcm9sbGluZyBlbmRlZCB3aXRoIG5lZ2F0aXZlIHZl
bG9jaXR5LCBjaG9vc2UgdGhlIGxvd2VyIHNuYXAgb2Zmc2V0IG9ubHkgaWYgdGhlcmUgaXMgbm8g
c25hcCBvZmZzZXQKKyAgICAgICAgICAgIHJhbmdlIGluIGJldHdlZW4gdGhlIHNjcm9sbCBkZXN0
aW5hdGlvbiBhbmQgdGhlIHNuYXAgb2Zmc2V0OyBlbHNlLCBjaG9vc2UgdGhlIHVwcGVyIHNuYXAg
b2Zmc2V0CisKKyAgICAgICAgVGhlIGV4dHJhIHJ1bGUgYWNjb3VudGluZyBmb3Igc2Nyb2xsIG9m
ZnNldCByYW5nZXMgaW4gYmV0d2VlbiB0aGUgc2Nyb2xsIGRlc3RpbmF0aW9uIGFuZCBhIHBvdGVu
dGlhbCBzbmFwIG9mZnNldAorICAgICAgICBoYW5kbGVzIHRoZSBjb3JuZXIgY2FzZSB3aGVyZSB0
aGUgdXNlciBzY3JvbGxzIHdpdGggbW9tZW50dW0gdmVyeSBsaWdodGx5IGF3YXkgZnJvbSBhIHNu
YXAgb2Zmc2V0LCBzdWNoIHRoYXQgdGhlCisgICAgICAgIHByZWRpY3RlZCBzY3JvbGwgZGVzdGlu
YXRpb24gaXMgc3RpbGwgd2l0aGluIHByb3hpbWl0eSBvZiB0aGUgc25hcCBvZmZzZXQuIEluIHRo
aXMgY2FzZSwgdGhlIHJlZ3VsYXIgKG1hbmRhdG9yeQorICAgICAgICBzY3JvbGwgc25hcHBpbmcp
IGJlaGF2aW9yIHdvdWxkIGJlIHRvIHNuYXAgdG8gdGhlIG5leHQgb2Zmc2V0IGluIHRoZSBkaXJl
Y3Rpb24gb2YgbW9tZW50dW0gc2Nyb2xsaW5nLCBidXQKKyAgICAgICAgaW5zdGVhZCwgaXQgaXMg
bW9yZSBpbnR1aXRpdmUgdG8gcmV0dXJuIHRvIHRoZSBvcmlnaW5hbCBzbmFwIHBvc2l0aW9uLgor
CisgICAgICAgIFdlIGFsc28gbW92ZSBzY3JvbGxpbmcgcHJlZGljdGlvbiBsb2dpYyBpbnRvIFNj
cm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvciBhbmQgYWRvcHQgdGhlIHBsYXRmb3JtCisgICAgICAg
IF9OU1Njcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvcidzIGRlc3RpbmF0aW9uT3JpZ2luIHByb3Bl
cnR5IHdoZW4gY29tcHV0aW5nIHRoZSBwcmVkaWN0ZWQgc2Nyb2xsIGRlc3RpbmF0aW9uLgorICAg
ICAgICBQcmV2aW91c2x5LCB3ZSB3ZXJlIHNpbXBseSBtdWx0aXBseWluZyBieSBhbiBlbXBpcmlj
YWxseS1kZXJpdmVkIGNvbnN0YW50IHRvIGFwcHJveGltYXRlIHRoZSBzY3JvbGwgZGVzdGluYXRp
b24sCisgICAgICAgIGJ1dCBub3cgdGhhdCB3ZSBhcmUgc3VwcG9ydGluZyBwcm94aW1pdHkgc2Ny
b2xsIHNuYXBwaW5nLCB3ZSBuZWVkIG1vcmUgZXhhY3Qgc2Nyb2xsIGRlc3RpbmF0b24gcHJlZGlj
dGlvbiBpbgorICAgICAgICBvcmRlciB0byBtYWtlIHN1cmUgdGhhdCBzY3JvbGxpbmcgdG8gYSBz
bmFwIG9mZnNldCByYW5nZSBmZWVscyBuYXR1cmFsLgorCisgICAgICAgIFRlc3RzOiB0aWxlZC1k
cmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1tYW5kYXRvcnktdGhlbi1w
cm94aW1pdHkuaHRtbAorICAgICAgICAgICAgICAgdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Ny
b2xsLXNuYXAvc2Nyb2xsLXNuYXAtcHJveGltaXR5LW1haW5mcmFtZS5odG1sCisgICAgICAgICAg
ICAgICB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1wcm94
aW1pdHktb3ZlcmZsb3cuaHRtbAorCisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qOgorICAgICAgICAqIHBhZ2Uvc2Nyb2xsaW5nL0FzeW5jU2Nyb2xsaW5nQ29vcmRp
bmF0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6c2V0U3RhdGVTY3JvbGxpbmdOb2RlU25hcE9m
ZnNldHNBc0Zsb2F0KToKKyAgICAgICAgKFdlYkNvcmU6OkFzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0
b3I6OnVwZGF0ZU92ZXJmbG93U2Nyb2xsaW5nTm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpBc3lu
Y1Njcm9sbGluZ0Nvb3JkaW5hdG9yOjp1cGRhdGVTY3JvbGxTbmFwUHJvcGVydGllc1dpdGhGcmFt
ZVZpZXcpOgorCisgICAgICAgIE1ha2UgYm9pbGVycGxhdGUgY2hhbmdlcyB0byBwbHVtYiBsaXN0
cyBvZiBob3Jpem9udGFsIGFuZCB2ZXJ0aWNhbCBzbmFwIG9mZnNldCByYW5nZXMgYWxvbmdzaWRl
IHRoZSBsaXN0cyBvZgorICAgICAgICBob3Jpem9udGFsIGFuZCB2ZXJ0aWNhbCBzbmFwIG9mZnNl
dHMuCisKKyAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9BeGlzU2Nyb2xsU25hcE9mZnNldHMuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6c25hcE9mZnNldFJhbmdlc1RvU3RyaW5nKToKKyAgICAgICAg
KFdlYkNvcmU6OmluZGljZXNPZk5lYXJlc3RTbmFwT2Zmc2V0UmFuZ2VzKToKKyAgICAgICAgKFdl
YkNvcmU6OmluZGljZXNPZk5lYXJlc3RTbmFwT2Zmc2V0cyk6CisgICAgICAgIChXZWJDb3JlOjph
ZGp1c3RBeGlzU25hcE9mZnNldHNGb3JTY3JvbGxFeHRlbnQpOgorICAgICAgICAoV2ViQ29yZTo6
Y29tcHV0ZUF4aXNQcm94aW1pdHlTbmFwT2Zmc2V0UmFuZ2VzKToKKyAgICAgICAgKFdlYkNvcmU6
OnVwZGF0ZVNuYXBPZmZzZXRzRm9yU2Nyb2xsYWJsZUFyZWEpOgorICAgICAgICAoV2ViQ29yZTo6
Y2xvc2VzdFNuYXBPZmZzZXQpOgorCisgICAgICAgIEFkanVzdCB0aGUgc25hcCBvZmZzZXQgc2Vs
ZWN0aW9uIGFsZ29yaXRobSB0byB0YWtlIHNuYXAgb2Zmc2V0IHJhbmdlcyBpbnRvIGFjY291bnQu
IFNlZSBhYm92ZSBmb3IgbW9yZSBkZXRhaWxzLgorICAgICAgICBBZGRpdGlvbmFsbHksIGF1Z21l
bnQgc25hcCBvZmZzZXQgdXBkYXRlIGxvZ2ljIHRvIGVtaXQgc25hcCBvZmZzZXQgcmFuZ2VzIGZv
ciBwcm94aW1pdHkgc2Nyb2xsIHNuYXBwaW5nLiBUbyBkbworICAgICAgICB0aGlzLCB3ZSBydW4g
dGhlIGZvbGxvd2luZyBzdGVwcyBvbiB0aGUgZmluYWwgbGlzdCBvZiBwcm9jZXNzZWQgc25hcCBv
ZmZzZXRzOgorICAgICAgICAtICAgQ29tcHV0ZSB0aGUgcHJveGltaXR5IGRpc3RhbmNlLCB3aGlj
aCAoZm9yIG5vdykgaXMgYXJiaXRyYXJpbHkgMC4zICogdGhlIGxlbmd0aCBvciB3aWR0aCBvZiB0
aGUgc2Nyb2xsIHNuYXAKKyAgICAgICAgICAgIHBvcnQsIGRlcGVuZGluZyBvbiB3aGV0aGVyIHNj
cm9sbCBzbmFwcGluZyBpcyB0YWtpbmcgcGxhY2UgaW4gdGhlIFggb3IgWSBheGlzLgorICAgICAg
ICAtICAgRm9yIGVhY2ggcGFpciBvZiBhZGphY2VudCBzbmFwIG9mZnNldHMsIGlmIHRoZXkgYXJl
IG1vcmUgdGhhbiAyICogcHJveGltaXR5IGRpc3RhbmNlIGF3YXkgZnJvbSBlYWNoIG90aGVyLAor
ICAgICAgICAgICAgZW1pdCBhIHNuYXAgb2Zmc2V0IHJhbmdlIHN0YXJ0aW5nIGZyb20gKGxvd2Vy
IHNuYXAgb2Zmc2V0ICsgcHJveGltaXR5IGRpc3RhbmNlKSBhbmQgZW5kaW5nIG9uICh1cHBlciBz
bmFwCisgICAgICAgICAgICBvZmZzZXQgKyBwcm94aW1pdHkgZGlzdGFuY2UpLgorCisgICAgICAg
ICogcGFnZS9zY3JvbGxpbmcvQXhpc1Njcm9sbFNuYXBPZmZzZXRzLmg6CisgICAgICAgIChXZWJD
b3JlOjpjbG9zZXN0U25hcE9mZnNldCk6IERlbGV0ZWQuCisgICAgICAgICogcGFnZS9zY3JvbGxp
bmcvU2Nyb2xsU25hcE9mZnNldHNJbmZvLmg6CisKKyAgICAgICAgSW50cm9kdWNlIFNjcm9sbFNu
YXBPZmZzZXRzSW5mbywgYSBzdHJ1Y3Qgd2hpY2ggY29udGFpbnMgZGF0YSByZWxldmFudCB0byBz
Y3JvbGwgc25hcHBpbmcuIFRoaXMgaW5jbHVkZXMKKyAgICAgICAgdmVydGljYWwgYW5kIGhvcml6
b250YWwgc25hcCBvZmZzZXRzLCBhcyB3ZWxsIGFzIHZlcnRpY2FsIGFuZCBob3Jpem9udGFsIHNu
YXAgb2Zmc2V0IHJhbmdlcy4gU25hcCBvZmZzZXQgcmFuZ2VzCisgICAgICAgIGNvbnNpc3Qgb2Yg
YSB2ZWN0b3Igb2YgcmFuZ2VzIG9mIHNjcm9sbCBvZmZzZXRzLgorCisgICAgICAgICogcGFnZS9z
Y3JvbGxpbmcvU2Nyb2xsaW5nQ29vcmRpbmF0b3IuaDoKKyAgICAgICAgKiBwYWdlL3Njcm9sbGlu
Zy9TY3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cHJv
amVjdGVkSW5lcnRpYWxTY3JvbGxEaXN0YW5jZSk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxp
bmdNb21lbnR1bUNhbGN1bGF0b3I6OlNjcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvcik6CisgICAg
ICAgIChXZWJDb3JlOjpTY3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3I6OnNldFJldGFyZ2V0ZWRT
Y3JvbGxPZmZzZXQpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxh
dG9yOjpwcmVkaWN0ZWREZXN0aW5hdGlvbk9mZnNldCk6CisgICAgICAgIChXZWJDb3JlOjpTY3Jv
bGxpbmdNb21lbnR1bUNhbGN1bGF0b3I6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpTY3Jv
bGxpbmdNb21lbnR1bUNhbGN1bGF0b3I6OnNldFBsYXRmb3JtTW9tZW50dW1TY3JvbGxpbmdQcmVk
aWN0aW9uRW5hYmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpCYXNpY1Njcm9sbGluZ01vbWVudHVt
Q2FsY3VsYXRvcjo6QmFzaWNTY3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3IpOgorICAgICAgICAo
V2ViQ29yZTo6QmFzaWNTY3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3I6OmxpbmVhcmx5SW50ZXJw
b2xhdGVkT2Zmc2V0QXRQcm9ncmVzcyk6CisgICAgICAgIChXZWJDb3JlOjpCYXNpY1Njcm9sbGlu
Z01vbWVudHVtQ2FsY3VsYXRvcjo6aW5pdGlhbGl6ZUludGVycG9sYXRpb25Db2VmZmljaWVudHNJ
Zk5lY2Vzc2FyeSk6CisgICAgICAgIChXZWJDb3JlOjpCYXNpY1Njcm9sbGluZ01vbWVudHVtQ2Fs
Y3VsYXRvcjo6aW5pdGlhbGl6ZVNuYXBQcm9ncmVzc0N1cnZlKToKKyAgICAgICAgKiBwYWdlL3Nj
cm9sbGluZy9TY3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3IuaDoKKyAgICAgICAgKFdlYkNvcmU6
OlNjcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvcjo6cmV0YXJnZXRlZFNjcm9sbE9mZnNldCk6Cisg
ICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3I6OnJldGFyZ2V0ZWRT
Y3JvbGxPZmZzZXREaWRDaGFuZ2UpOgorCisgICAgICAgIEN1cnJlbnRseSwgdGhlIFNjcm9sbGlu
Z01vbWVudHVtQ2FsY3VsYXRvciBpcyByZXNwb25zaWJsZSBmb3IgdGFraW5nIGFuIGluaXRpYWwg
cG9zaXRpb24sIGluaXRpYWwgdmVsb2NpdHksIGFuZAorICAgICAgICB0YXJnZXQgcG9zaXRpb24g
YW5kIGFuaW1hdGluZyB0aGUgc2Nyb2xsIG9mZnNldCBmcm9tIHRoZSBpbml0aWFsIHRvIHRhcmdl
dCBwb3NpdGlvbi4gTm93LCB3ZSByZWZhY3RvciB0aGUKKyAgICAgICAgU2Nyb2xsaW5nTW9tZW50
dW1DYWxjdWxhdG9yIGludGVyZmFjZSB0byBubyBsb25nZXIgdGFrZSBhIHRhcmdldCBvZmZzZXQg
dXBvbiBpbml0aWFsaXphdGlvbiwgYW5kIGluc3RlYWQgY29tcHV0ZQorICAgICAgICB0aGUgcHJl
ZGljdGVkIHNjcm9sbCBkZXN0aW5hdGlvbiBnaXZlbiBpbml0aWFsIHBvc2l0aW9uIGFuZCB2ZWxv
Y2l0eTsgY2xpZW50cyBvZiB0aGUgU2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yCisgICAgICAg
IHRoZW4gdXNlIHRoaXMgcHJlZGljdGVkIHNjcm9sbCBkZXN0aW5hdGlvbiB0byBjb21wdXRlIGEg
cmV0YXJnZXRlZCBzY3JvbGwgb2Zmc2V0IGFuZCB0aGVuIGNhbGwKKyAgICAgICAgc2V0UmV0YXJn
ZXRlZFNjcm9sbE9mZnNldCBvbiB0aGUgY2FsY3VsYXRvciwgd2hpY2ggc2V0cyB1cCBhbiBhbmlt
YXRpb24gY3VydmUgdG8gdGhlIG5ldyByZXRhcmdldGVkIG9mZnNldC4gVGhpcworICAgICAgICBh
bGxvd3MgYm90aCB0aGUgQXBwS2l0LWJhc2VkIHNjcm9sbGluZyBtb21lbnR1bSBjYWxjdWxhdG9y
IGFuZCBwbGF0Zm9ybS1pbnZhcmlhbnQgbW9tZW50dW0gY2FsY3VsYXRvciB0byBiZSB1c2VkCisg
ICAgICAgIGludGVyY2hhbmdlYWJseSwgd2hpbGUgc3RpbGwgYWxsb3dpbmcgdGhlbSB0byBjb21w
dXRlIGEgZGVzdGluYXRpb24gb2Zmc2V0IGZyb20gaW5pdGlhbCBwYXJhbWV0ZXJzIG9mIHRoZQor
ICAgICAgICBzY3JvbGwuCisKKyAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdTdGF0
ZVNjcm9sbGluZ05vZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nU3RhdGVTY3Jv
bGxpbmdOb2RlOjpTY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGUpOgorICAgICAgICAoV2ViQ29y
ZTo6U2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlOjpzZXRIb3Jpem9udGFsU25hcE9mZnNldHMp
OgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlOjpzZXRWZXJ0
aWNhbFNuYXBPZmZzZXRzKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1N0YXRlU2Nyb2xs
aW5nTm9kZTo6c2V0SG9yaXpvbnRhbFNuYXBPZmZzZXRSYW5nZXMpOgorICAgICAgICAoV2ViQ29y
ZTo6U2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlOjpzZXRWZXJ0aWNhbFNuYXBPZmZzZXRSYW5n
ZXMpOgorICAgICAgICAqIHBhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9k
ZS5oOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlOjpob3Jp
em9udGFsU25hcE9mZnNldHMpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nU3RhdGVTY3Jv
bGxpbmdOb2RlOjp2ZXJ0aWNhbFNuYXBPZmZzZXRzKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9s
bGluZ1N0YXRlU2Nyb2xsaW5nTm9kZTo6aG9yaXpvbnRhbFNuYXBPZmZzZXRSYW5nZXMpOgorICAg
ICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlOjp2ZXJ0aWNhbFNuYXBP
ZmZzZXRSYW5nZXMpOgorICAgICAgICAqIHBhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWVTY3Jv
bGxpbmdOb2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1RyZWVTY3JvbGxpbmdO
b2RlOjpjb21taXRTdGF0ZUJlZm9yZUNoaWxkcmVuKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9s
bGluZ1RyZWVTY3JvbGxpbmdOb2RlOjpkdW1wUHJvcGVydGllcyk6CisgICAgICAgICogcGFnZS9z
Y3JvbGxpbmcvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGUuaDoKKyAgICAgICAgKFdlYkNvcmU6
OlNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlOjpob3Jpem9udGFsU25hcE9mZnNldHMpOgorICAg
ICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGU6OnZlcnRpY2FsU25hcE9m
ZnNldHMpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGU6Omhv
cml6b250YWxTbmFwT2Zmc2V0UmFuZ2VzKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1Ry
ZWVTY3JvbGxpbmdOb2RlOjp2ZXJ0aWNhbFNuYXBPZmZzZXRSYW5nZXMpOgorCisgICAgICAgIEFk
ZCBtb3JlIGJvaWxlcnBsYXRlIHN1cHBvcnQgZm9yIHNuYXAgb2Zmc2V0IHJhbmdlcy4KKworICAg
ICAgICAqIHBhZ2Uvc2Nyb2xsaW5nL21hYy9TY3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3JNYWMu
aDoKKyAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxh
dG9yTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9y
OjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9y
OjpzZXRQbGF0Zm9ybU1vbWVudHVtU2Nyb2xsaW5nUHJlZGljdGlvbkVuYWJsZWQpOgorICAgICAg
ICAoV2ViQ29yZTo6U2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yTWFjOjpTY3JvbGxpbmdNb21l
bnR1bUNhbGN1bGF0b3JNYWMpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nTW9tZW50dW1D
YWxjdWxhdG9yTWFjOjpzY3JvbGxPZmZzZXRBZnRlckVsYXBzZWRUaW1lKToKKyAgICAgICAgKFdl
YkNvcmU6OlNjcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvck1hYzo6cHJlZGljdGVkRGVzdGluYXRp
b25PZmZzZXQpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9y
TWFjOjpyZXRhcmdldGVkU2Nyb2xsT2Zmc2V0RGlkQ2hhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6
OlNjcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvck1hYzo6YW5pbWF0aW9uRHVyYXRpb24pOgorICAg
ICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yTWFjOjpyZXF1aXJlc01v
bWVudHVtU2Nyb2xsaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ01vbWVudHVtQ2Fs
Y3VsYXRvck1hYzo6ZW5zdXJlUGxhdGZvcm1Nb21lbnR1bUNhbGN1bGF0b3IpOgorCisgICAgICAg
IEhvb2sgaW50byBBcHBLaXQgbW9tZW50dW0gc2Nyb2xsIG9mZnNldCBwcmVkaWN0aW9uLgorCisg
ICAgICAgICogcGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05v
ZGVNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpjb252ZXJ0VG9MYXlvdXRVbml0cyk6CisgICAg
ICAgIChXZWJDb3JlOjpTY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlTWFjOjpjb21taXRT
dGF0ZUJlZm9yZUNoaWxkcmVuKToKKyAgICAgICAgKiBwbGF0Zm9ybS9TY3JvbGxhYmxlQXJlYS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxhYmxlQXJlYTo6ZW5zdXJlU25hcE9mZnNldHNJ
bmZvKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGFibGVBcmVhOjpob3Jpem9udGFsU25hcE9m
ZnNldHMpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYWJsZUFyZWE6Omhvcml6b250YWxTbmFw
T2Zmc2V0UmFuZ2VzKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGFibGVBcmVhOjp2ZXJ0aWNh
bFNuYXBPZmZzZXRSYW5nZXMpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYWJsZUFyZWE6OnZl
cnRpY2FsU25hcE9mZnNldHMpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYWJsZUFyZWE6OnNl
dEhvcml6b250YWxTbmFwT2Zmc2V0cyk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxhYmxlQXJl
YTo6c2V0VmVydGljYWxTbmFwT2Zmc2V0cyk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxhYmxl
QXJlYTo6c2V0SG9yaXpvbnRhbFNuYXBPZmZzZXRSYW5nZXMpOgorICAgICAgICAoV2ViQ29yZTo6
U2Nyb2xsYWJsZUFyZWE6OnNldFZlcnRpY2FsU25hcE9mZnNldFJhbmdlcyk6CisgICAgICAgIChX
ZWJDb3JlOjpTY3JvbGxhYmxlQXJlYTo6Y2xlYXJIb3Jpem9udGFsU25hcE9mZnNldHMpOgorICAg
ICAgICAoV2ViQ29yZTo6U2Nyb2xsYWJsZUFyZWE6OmNsZWFyVmVydGljYWxTbmFwT2Zmc2V0cyk6
CisgICAgICAgICogcGxhdGZvcm0vU2Nyb2xsYWJsZUFyZWEuaDoKKyAgICAgICAgKFdlYkNvcmU6
OlNjcm9sbGFibGVBcmVhOjpob3Jpem9udGFsU25hcE9mZnNldHMpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6U2Nyb2xsYWJsZUFyZWE6OnZlcnRpY2FsU25hcE9mZnNldHMpOiBEZWxldGVk
LgorICAgICAgICAqIHBsYXRmb3JtL2NvY29hL1Njcm9sbENvbnRyb2xsZXIuaDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9jb2NvYS9TY3JvbGxDb250cm9sbGVyLm1tOgorICAgICAgICAoV2ViQ29yZTo6
U2Nyb2xsQ29udHJvbGxlcjo6cHJvY2Vzc1doZWVsRXZlbnRGb3JTY3JvbGxTbmFwKToKKworICAg
ICAgICBGaXggYW4gaXNzdWUgd2hlcmUgaW5pdGlhbCBzY3JvbGxpbmcgdmVsb2NpdHkgd291bGQg
YmUgc2V0IHRvIHplcm8gYXQgdGhlIGVuZCBvZiBhIGRyYWcgZ2VzdHVyZS4KKworICAgICAgICAo
V2ViQ29yZTo6U2Nyb2xsQ29udHJvbGxlcjo6dXBkYXRlU2Nyb2xsU25hcFN0YXRlKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNjcm9sbENvbnRyb2xsZXI6OnVwZGF0ZVNjcm9sbFNuYXBQb2ludHMpOgor
ICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsQ29udHJvbGxlcjo6c2V0TmVhcmVzdFNjcm9sbFNuYXBJ
bmRleEZvckF4aXNBbmRPZmZzZXQpOgorICAgICAgICAqIHBsYXRmb3JtL2NvY29hL1Njcm9sbFNu
YXBBbmltYXRvclN0YXRlLmg6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxTbmFwQW5pbWF0b3JT
dGF0ZTo6c25hcE9mZnNldHNGb3JBeGlzKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbFNuYXBB
bmltYXRvclN0YXRlOjpzbmFwT2Zmc2V0UmFuZ2VzRm9yQXhpcyk6CisgICAgICAgIChXZWJDb3Jl
OjpTY3JvbGxTbmFwQW5pbWF0b3JTdGF0ZTo6c2V0U25hcE9mZnNldHNBbmRQb3NpdGlvblJhbmdl
c0ZvckF4aXMpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsU25hcEFuaW1hdG9yU3RhdGU6OnNl
dFNuYXBPZmZzZXRzRm9yQXhpcyk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vY29jb2Ev
U2Nyb2xsU25hcEFuaW1hdG9yU3RhdGUubW06CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxTbmFw
QW5pbWF0b3JTdGF0ZTo6c2V0dXBBbmltYXRpb25Gb3JTdGF0ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpTY3JvbGxTbmFwQW5pbWF0b3JTdGF0ZTo6dGFyZ2V0T2Zmc2V0Rm9yU3RhcnRPZmZzZXQpOgor
ICAgICAgICAoV2ViQ29yZTo6cHJvamVjdGVkSW5lcnRpYWxTY3JvbGxEaXN0YW5jZSk6IERlbGV0
ZWQuCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJMYXllckNvbXBvc2l0b3I6OnVwZGF0ZVNjcm9sbENvb3JkaW5h
dGVkTGF5ZXIpOgorICAgICAgICAqIHRlc3RpbmcvSW50ZXJuYWxzLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkludGVybmFsczo6c2V0UGxhdGZvcm1Nb21lbnR1bVNjcm9sbGluZ1ByZWRpY3Rpb25F
bmFibGVkKToKKworICAgICAgICBBZGQgYSBuZXcgaG9vayBmb3IgbGF5b3V0IHRlc3RzIHRvIGZv
cmNlIHNjcm9sbGluZyBtb21lbnR1bSBjYWxjdWxhdG9ycyB0byB1c2UgdGhlIHBsYXRmb3JtLWlu
dmFyaWFudCBtb21lbnR1bQorICAgICAgICBzY3JvbGxpbmcgcHJlZGljdGlvbiBoZXVyaXN0aWMg
aW5zdGVhZCBvZiB0aGUgcGxhdGZvcm0tZGVwZW5kZW50IG9uZS4KKworICAgICAgICAoV2ViQ29y
ZTo6SW50ZXJuYWxzOjpzY3JvbGxTbmFwT2Zmc2V0cyk6CisgICAgICAgICogdGVzdGluZy9JbnRl
cm5hbHMuaDoKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5pZGw6CisKIDIwMTYtMTItMjIg
IFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CiAKICAgICAgICAgQ1NTIFNj
cm9sbCBTbmFwIGRvZXMgbm90IHdvcmsgaWYgc2Nyb2xsYmFyIGlzIGhpZGRlbgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmlu
ZGV4IGM4YjI0ZjViZTYzNDVmOTMzZmJkMzVjNTNkMjRmMmRjNTM3M2Q1MWIuLjFmMzFkNDhiOGJh
ODU5NDFmYTU2YzM4YjViNTgwMmQyNzk2ZmJiYTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMyBA
QAorMjAxNi0xMi0yOSAgV2Vuc29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KKwor
ICAgICAgICBJbXBsZW1lbnQgInByb3hpbWl0eSIgc2Nyb2xsIHNuYXBwaW5nCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzU5OTQKKyAgICAgICAgPHJk
YXI6Ly9wcm9ibGVtLzE4MTYyNDE4PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIEFkZHMgYm9pbGVycGxhdGUgc3VwcG9ydCBmb3IgcGx1bWJpbmcgbGlz
dHMgb2Ygc25hcCBvZmZzZXQgcmFuZ2VzIGZyb20gdGhlIHdlYiBwcm9jZXNzIHRvIHRoZSBVSSBw
cm9jZXNzCisgICAgICAgIGFsb25nc2lkZSB0aGUgbGlzdCBvZiBzbmFwIG9mZnNldHMuCisKKyAg
ICAgICAgKiBTaGFyZWQvU2Nyb2xsaW5nL1JlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yVHJhbnNh
Y3Rpb24uY3BwOgorICAgICAgICAoQXJndW1lbnRDb2RlcjxTY3JvbGxpbmdTdGF0ZVNjcm9sbGlu
Z05vZGU+OjplbmNvZGUpOgorICAgICAgICAoQXJndW1lbnRDb2RlcjxTY3JvbGxpbmdTdGF0ZVNj
cm9sbGluZ05vZGU+OjpkZWNvZGUpOgorICAgICAgICAqIFNoYXJlZC9XZWJDb3JlQXJndW1lbnRD
b2RlcnMuY3BwOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFNjcm9sbE9mZnNldFJhbmdl
PGZsb2F0Pj46OmVuY29kZSk6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8U2Nyb2xsT2Zm
c2V0UmFuZ2U8ZmxvYXQ+Pjo6ZGVjb2RlKToKKyAgICAgICAgKiBTaGFyZWQvV2ViQ29yZUFyZ3Vt
ZW50Q29kZXJzLmg6CisgICAgICAgICogVUlQcm9jZXNzL1Njcm9sbGluZy9pb3MvU2Nyb2xsaW5n
VHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZUlPUy5tbToKKyAgICAgICAgKC1bV0tPdmVyZmxvd1Nj
cm9sbFZpZXdEZWxlZ2F0ZSBzY3JvbGxWaWV3V2lsbEVuZERyYWdnaW5nOndpdGhWZWxvY2l0eTp0
YXJnZXRDb250ZW50T2Zmc2V0Ol0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvUmVtb3RlU2Ny
b2xsaW5nQ29vcmRpbmF0b3JQcm94eUlPUy5tbToKKworICAgICAgICBBZGp1c3QgbWFpbmZyYW1l
IHByb3hpbWl0eSBzY3JvbGwgc25hcHBpbmcgbG9naWMgdG8gbm90IHN1YnRyYWN0IG91dCB0aGUg
dG9wIGNvbnRlbnQgaW5zZXQgd2hlbiB0aGVyZSBpcyBubworICAgICAgICBhY3RpdmUgc25hcCBv
ZmZzZXQgKGkuZS4gd2hlbiBzbmFwcGluZyByZXN0cyBpbiBhIHNuYXAgb2Zmc2V0IHJhbmdlKS4g
QXR0ZW1wdGluZyB0byBzdWJ0cmFjdCBvdXQgdGhlIHRvcCBpbnNldAorICAgICAgICBpbiB0aGlz
IGNhc2UgY2F1c2VkIHRoZSBzY3JvbGwgb2Zmc2V0IHRvIGp1bXAgYWZ0ZXIgZW5kaW5nIGEgZHJh
ZyB3aXRoIG5vIG1vbWVudHVtIGluIGEgc25hcCBvZmZzZXQgcmFuZ2UuCisKKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3JQcm94eTo6YWRqdXN0VGFyZ2V0Q29udGVu
dE9mZnNldEZvclNuYXBwaW5nKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlU2Nyb2xsaW5nQ29v
cmRpbmF0b3JQcm94eTo6c2hvdWxkU25hcEZvck1haW5GcmFtZVNjcm9sbGluZyk6CisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yUHJveHk6OmNsb3Nlc3RTbmFwT2Zm
c2V0Rm9yTWFpbkZyYW1lU2Nyb2xsaW5nKToKKwogMjAxNi0xMi0yMiAgVGltIEhvcnRvbiAgPHRp
bW90aHlfaG9ydG9uQGFwcGxlLmNvbT4KIAogICAgICAgICBOdWxsIGRlcmVmIHVuZGVyIFdlYlBh
Z2VQcm94eTo6YXBwbGljYXRpb25EaWRGaW5pc2hTbmFwc2hvdHRpbmdBZnRlckVudGVyaW5nQmFj
a2dyb3VuZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCmluZGV4IDNiNTY5OWY0YjhlNTBkNTBmYTIxOTY0OGQwYmJiZmVkMDVhYmE3NTYuLmMx
MTAxYmNiM2E0NDU1MTQ4NWVhZjJkZmNlNzg2NTQzMzJjMTU4NjAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTY0ODgsNiArNjQ4
OCw3IEBACiAJCUY0NEVCQkRCMURCNUREOUQwMDI3NzMzNCAvKiBTdGF0aWNSYW5nZS5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNDRFQkJEQTFEQjVE
RDlEMDAyNzczMzQgLyogU3RhdGljUmFuZ2UuY3BwICovOyB9OwogCQlGNDVDMjMxRDE5OTVCNzNC
MDBBNkUyRTMgLyogQXhpc1Njcm9sbFNuYXBPZmZzZXRzLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY0NUMyMzFCMTk5NUI3M0IwMEE2RTJFMyAvKiBB
eGlzU2Nyb2xsU25hcE9mZnNldHMuY3BwICovOyB9OwogCQlGNDVDMjMxRTE5OTVCNzNCMDBBNkUy
RTMgLyogQXhpc1Njcm9sbFNuYXBPZmZzZXRzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBGNDVDMjMxQzE5OTVCNzNCMDBBNkUyRTMgLyogQXhpc1Njcm9s
bFNuYXBPZmZzZXRzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKKwkJRjQ2NzI5MjgxRTBERTY4NTAwQUNDM0Q4IC8qIFNjcm9sbFNuYXBPZmZzZXRzSW5m
by5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjQ2NzI5
MjUxRTBERTVBQjAwQUNDM0Q4IC8qIFNjcm9sbFNuYXBPZmZzZXRzSW5mby5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUY0Nzg3NTU0MTk5ODNBRkYw
MDI0QTI4NyAvKiBTY3JvbGxTbmFwQW5pbWF0b3JTdGF0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjQ3ODc1NTIxOTk4M0FGRjAwMjRBMjg3IC8qIFNj
cm9sbFNuYXBBbmltYXRvclN0YXRlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKIAkJRjQ3ODc1NTUxOTk4M0FGRjAwMjRBMjg3IC8qIFNjcm9sbFNuYXBB
bmltYXRvclN0YXRlLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gRjQ3ODc1NTMxOTk4M0FGRjAwMjRBMjg3IC8qIFNjcm9sbFNuYXBBbmltYXRvclN0YXRl
Lm1tICovOyB9OwogCQlGNDdBNUUzRTE5NUI4QzhBMDA0ODMxMDAgLyogU3R5bGVTY3JvbGxTbmFw
UG9pbnRzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBG
NDdBNUUzQjE5NUI4QzhBMDA0ODMxMDAgLyogU3R5bGVTY3JvbGxTbmFwUG9pbnRzLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTE0NTE3LDYgKzE0
NTE4LDcgQEAKIAkJRjQ0RUJCREExREI1REQ5RDAwMjc3MzM0IC8qIFN0YXRpY1JhbmdlLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFN0YXRpY1JhbmdlLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjQ1QzIzMUIxOTk1QjczQjAwQTZFMkUzIC8qIEF4
aXNTY3JvbGxTbmFwT2Zmc2V0cy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBBeGlzU2Nyb2xsU25hcE9mZnNldHMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlGNDVDMjMxQzE5OTVCNzNCMDBBNkUyRTMgLyogQXhpc1Njcm9sbFNuYXBPZmZzZXRzLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEF4aXNTY3JvbGxTbmFwT2Zmc2V0cy5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGNDY3MjkyNTFFMERFNUFCMDBBQ0MzRDgg
LyogU2Nyb2xsU25hcE9mZnNldHNJbmZvLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFNjcm9sbFNuYXBPZmZzZXRzSW5mby5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlGNDc4NzU1MjE5OTgzQUZGMDAyNEEyODcgLyogU2Nyb2xsU25hcEFuaW1hdG9yU3RhdGUuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2Nyb2xsU25hcEFuaW1hdG9yU3RhdGUu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjQ3ODc1NTMxOTk4M0FGRjAwMjRBMjg3
IC8qIFNjcm9sbFNuYXBBbmltYXRvclN0YXRlLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
b2JqY3BwOyBwYXRoID0gU2Nyb2xsU25hcEFuaW1hdG9yU3RhdGUubW07IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUY0N0E1RTNBMTk1QjhDOEEwMDQ4MzEwMCAvKiBTdHlsZVNjcm9sbFNu
YXBQb2ludHMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU3R5bGVT
Y3JvbGxTbmFwUG9pbnRzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE2MDQy
LDYgKzE2MDQ0LDcgQEAKIAkJCQkwRkVBM0U3RTE5MUIzMTY5MDAwRjFCNTUgLyogU2Nyb2xsaW5n
VHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZS5oICovLAogCQkJCTkzOTFBOTlBMTYyOUQ2RkYwMDI5
NzMzMCAvKiBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZS5jcHAgKi8sCiAJCQkJOTM5MUE5OUIx
NjI5RDcwMDAwMjk3MzMwIC8qIFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlLmggKi8sCisJCQkJ
RjQ2NzI5MjUxRTBERTVBQjAwQUNDM0Q4IC8qIFNjcm9sbFNuYXBPZmZzZXRzSW5mby5oICovLAog
CQkJCTdBQUZFOENEMTlDQjg2NzIwMDBGNTZEOCAvKiBTY3JvbGxMYXRjaGluZ1N0YXRlLmNwcCAq
LywKIAkJCQk3QUFGRThDRTE5Q0I4NjcyMDAwRjU2RDggLyogU2Nyb2xsTGF0Y2hpbmdTdGF0ZS5o
ICovLAogCQkJCTBGNjM4M0RCMTg2MTVCMjkwMDNFNURCNSAvKiBUaHJlYWRlZFNjcm9sbGluZ1Ry
ZWUuY3BwICovLApAQCAtMjYxNjYsNiArMjYxNjksNyBAQAogCQkJCTBGNDcxMEMwMURCNTZCRTgw
MDJEQ0VDMyAvKiBKU0RPTVJlY3RSZWFkT25seS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkM1QTg2
QjYwQzMzNjdFODAwRUVBNjQ5IC8qIEpTRE9NU2VsZWN0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJ
CQlDNTEzN0NGMzExQTU4Mzc4MDA0QURCOTkgLyogSlNET01TdHJpbmdMaXN0LmggaW4gSGVhZGVy
cyAqLywKKwkJCQlGNDY3MjkyODFFMERFNjg1MDBBQ0MzRDggLyogU2Nyb2xsU25hcE9mZnNldHNJ
bmZvLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzY0NjQ5ODExRDgyMzQ5MDA2NDU1QjAgLyogSlNE
T01TdHJpbmdNYXAuaCBpbiBIZWFkZXJzICovLAogCQkJCTc2OTQ1NjNEMTIxNEQ5N0MwMDA3Q0JB
RSAvKiBKU0RPTVRva2VuTGlzdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMkUzN0UwMDYxMkRCQzVB
NDAwQTZCMjMzIC8qIEpTRE9NVVJMLmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL0FzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3IuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvQXN5bmNTY3JvbGxpbmdDb29yZGluYXRvci5j
cHAKaW5kZXggZjZlNTQ2Yjk4NzFjOTA4MDRiYjU3ODEzMDVlMTQzY2VlMjFlYzg5Ni4uNzRjZjgz
ZDkxYjZlZDk0NDFhODA4ZjgwMjYxZWY2YTU3MGU5NmI5YiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGFnZS9zY3JvbGxpbmcvQXN5bmNTY3JvbGxpbmdDb29yZGluYXRvci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvQXN5bmNTY3JvbGxpbmdDb29yZGluYXRvci5j
cHAKQEAgLTY1LDcgKzY1LDcgQEAgdm9pZCBBc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yOjpzY3Jv
bGxpbmdTdGF0ZVRyZWVQcm9wZXJ0aWVzQ2hhbmdlZCgpCiAgICAgc2NoZWR1bGVUcmVlU3RhdGVD
b21taXQoKTsKIH0KIAotc3RhdGljIGlubGluZSB2b2lkIHNldFN0YXRlU2Nyb2xsaW5nTm9kZVNu
YXBPZmZzZXRzQXNGbG9hdChTY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGUmIG5vZGUsIFNjcm9s
bEV2ZW50QXhpcyBheGlzLCBjb25zdCBWZWN0b3I8TGF5b3V0VW5pdD4qIHNuYXBPZmZzZXRzLCBm
bG9hdCBkZXZpY2VTY2FsZUZhY3RvcikKK3N0YXRpYyBpbmxpbmUgdm9pZCBzZXRTdGF0ZVNjcm9s
bGluZ05vZGVTbmFwT2Zmc2V0c0FzRmxvYXQoU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlJiBu
b2RlLCBTY3JvbGxFdmVudEF4aXMgYXhpcywgY29uc3QgVmVjdG9yPExheW91dFVuaXQ+KiBzbmFw
T2Zmc2V0cywgY29uc3QgVmVjdG9yPFNjcm9sbE9mZnNldFJhbmdlPExheW91dFVuaXQ+Piogc25h
cE9mZnNldFJhbmdlcywgZmxvYXQgZGV2aWNlU2NhbGVGYWN0b3IpCiB7CiAgICAgLy8gRklYTUU6
IEluY29ycG9yYXRlIGN1cnJlbnQgcGFnZSBzY2FsZSBmYWN0b3IgaW4gc25hcHBpbmcgdG8gZGV2
aWNlIHBpeGVsLiBQZXJoYXBzIHdlIHNob3VsZCBqdXN0IGNvbnZlcnQgdG8gZmxvYXQgaGVyZSBh
bmQgbGV0IFVJIHByb2Nlc3MgZG8gdGhlIHBpeGVsIHNuYXBwaW5nPwogICAgIFZlY3RvcjxmbG9h
dD4gc25hcE9mZnNldHNBc0Zsb2F0OwpAQCAtNzQsMTAgKzc0LDIwIEBAIHN0YXRpYyBpbmxpbmUg
dm9pZCBzZXRTdGF0ZVNjcm9sbGluZ05vZGVTbmFwT2Zmc2V0c0FzRmxvYXQoU2Nyb2xsaW5nU3Rh
dGVTY3JvbGxpCiAgICAgICAgIGZvciAoYXV0byYgb2Zmc2V0IDogKnNuYXBPZmZzZXRzKQogICAg
ICAgICAgICAgc25hcE9mZnNldHNBc0Zsb2F0LnVuY2hlY2tlZEFwcGVuZChyb3VuZFRvRGV2aWNl
UGl4ZWwob2Zmc2V0LCBkZXZpY2VTY2FsZUZhY3RvciwgZmFsc2UpKTsKICAgICB9Ci0gICAgaWYg
KGF4aXMgPT0gU2Nyb2xsRXZlbnRBeGlzOjpIb3Jpem9udGFsKQorCisgICAgVmVjdG9yPFNjcm9s
bE9mZnNldFJhbmdlPGZsb2F0Pj4gc25hcE9mZnNldFJhbmdlc0FzRmxvYXQ7CisgICAgaWYgKHNu
YXBPZmZzZXRSYW5nZXMpIHsKKyAgICAgICAgc25hcE9mZnNldFJhbmdlc0FzRmxvYXQucmVzZXJ2
ZUluaXRpYWxDYXBhY2l0eShzbmFwT2Zmc2V0UmFuZ2VzLT5zaXplKCkpOworICAgICAgICBmb3Ig
KGF1dG8mIHJhbmdlIDogKnNuYXBPZmZzZXRSYW5nZXMpCisgICAgICAgICAgICBzbmFwT2Zmc2V0
UmFuZ2VzQXNGbG9hdC51bmNoZWNrZWRBcHBlbmQoeyByb3VuZFRvRGV2aWNlUGl4ZWwocmFuZ2Uu
c3RhcnQsIGRldmljZVNjYWxlRmFjdG9yLCBmYWxzZSksIHJvdW5kVG9EZXZpY2VQaXhlbChyYW5n
ZS5lbmQsIGRldmljZVNjYWxlRmFjdG9yLCBmYWxzZSkgfSk7CisgICAgfQorICAgIGlmIChheGlz
ID09IFNjcm9sbEV2ZW50QXhpczo6SG9yaXpvbnRhbCkgewogICAgICAgICBub2RlLnNldEhvcml6
b250YWxTbmFwT2Zmc2V0cyhzbmFwT2Zmc2V0c0FzRmxvYXQpOwotICAgIGVsc2UKKyAgICAgICAg
bm9kZS5zZXRIb3Jpem9udGFsU25hcE9mZnNldFJhbmdlcyhzbmFwT2Zmc2V0UmFuZ2VzQXNGbG9h
dCk7CisgICAgfSBlbHNlIHsKICAgICAgICAgbm9kZS5zZXRWZXJ0aWNhbFNuYXBPZmZzZXRzKHNu
YXBPZmZzZXRzQXNGbG9hdCk7CisgICAgICAgIG5vZGUuc2V0VmVydGljYWxTbmFwT2Zmc2V0UmFu
Z2VzKHNuYXBPZmZzZXRSYW5nZXNBc0Zsb2F0KTsKKyAgICB9CiB9CiAKIHZvaWQgQXN5bmNTY3Jv
bGxpbmdDb29yZGluYXRvcjo6c2V0RXZlbnRUcmFja2luZ1JlZ2lvbnNEaXJ0eSgpCkBAIC01Mzcs
OCArNTQ3LDggQEAgdm9pZCBBc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yOjp1cGRhdGVPdmVyZmxv
d1Njcm9sbGluZ05vZGUoU2Nyb2xsaW5nTm9kZUlEIG5vZGUKICAgICAgICAgbm9kZS0+c2V0UmVh
Y2hhYmxlQ29udGVudHNTaXplKHNjcm9sbGluZ0dlb21ldHJ5LT5yZWFjaGFibGVDb250ZW50U2l6
ZSk7CiAgICAgICAgIG5vZGUtPnNldFNjcm9sbGFibGVBcmVhU2l6ZShzY3JvbGxpbmdHZW9tZXRy
eS0+c2Nyb2xsYWJsZUFyZWFTaXplKTsKICNpZiBFTkFCTEUoQ1NTX1NDUk9MTF9TTkFQKQotICAg
ICAgICBzZXRTdGF0ZVNjcm9sbGluZ05vZGVTbmFwT2Zmc2V0c0FzRmxvYXQoKm5vZGUsIFNjcm9s
bEV2ZW50QXhpczo6SG9yaXpvbnRhbCwgJnNjcm9sbGluZ0dlb21ldHJ5LT5ob3Jpem9udGFsU25h
cE9mZnNldHMsIG1fcGFnZS0+ZGV2aWNlU2NhbGVGYWN0b3IoKSk7Ci0gICAgICAgIHNldFN0YXRl
U2Nyb2xsaW5nTm9kZVNuYXBPZmZzZXRzQXNGbG9hdCgqbm9kZSwgU2Nyb2xsRXZlbnRBeGlzOjpW
ZXJ0aWNhbCwgJnNjcm9sbGluZ0dlb21ldHJ5LT52ZXJ0aWNhbFNuYXBPZmZzZXRzLCBtX3BhZ2Ut
PmRldmljZVNjYWxlRmFjdG9yKCkpOworICAgICAgICBzZXRTdGF0ZVNjcm9sbGluZ05vZGVTbmFw
T2Zmc2V0c0FzRmxvYXQoKm5vZGUsIFNjcm9sbEV2ZW50QXhpczo6SG9yaXpvbnRhbCwgJnNjcm9s
bGluZ0dlb21ldHJ5LT5ob3Jpem9udGFsU25hcE9mZnNldHMsICZzY3JvbGxpbmdHZW9tZXRyeS0+
aG9yaXpvbnRhbFNuYXBPZmZzZXRSYW5nZXMsIG1fcGFnZS0+ZGV2aWNlU2NhbGVGYWN0b3IoKSk7
CisgICAgICAgIHNldFN0YXRlU2Nyb2xsaW5nTm9kZVNuYXBPZmZzZXRzQXNGbG9hdCgqbm9kZSwg
U2Nyb2xsRXZlbnRBeGlzOjpWZXJ0aWNhbCwgJnNjcm9sbGluZ0dlb21ldHJ5LT52ZXJ0aWNhbFNu
YXBPZmZzZXRzLCAmc2Nyb2xsaW5nR2VvbWV0cnktPnZlcnRpY2FsU25hcE9mZnNldFJhbmdlcywg
bV9wYWdlLT5kZXZpY2VTY2FsZUZhY3RvcigpKTsKICAgICAgICAgbm9kZS0+c2V0Q3VycmVudEhv
cml6b250YWxTbmFwUG9pbnRJbmRleChzY3JvbGxpbmdHZW9tZXRyeS0+Y3VycmVudEhvcml6b250
YWxTbmFwUG9pbnRJbmRleCk7CiAgICAgICAgIG5vZGUtPnNldEN1cnJlbnRWZXJ0aWNhbFNuYXBQ
b2ludEluZGV4KHNjcm9sbGluZ0dlb21ldHJ5LT5jdXJyZW50VmVydGljYWxTbmFwUG9pbnRJbmRl
eCk7CiAjZW5kaWYKQEAgLTY4Miw4ICs2OTIsOCBAQCBib29sIEFzeW5jU2Nyb2xsaW5nQ29vcmRp
bmF0b3I6OmlzU2Nyb2xsU25hcEluUHJvZ3Jlc3MoKSBjb25zdAogdm9pZCBBc3luY1Njcm9sbGlu
Z0Nvb3JkaW5hdG9yOjp1cGRhdGVTY3JvbGxTbmFwUHJvcGVydGllc1dpdGhGcmFtZVZpZXcoY29u
c3QgRnJhbWVWaWV3JiBmcmFtZVZpZXcpCiB7CiAgICAgaWYgKGF1dG8gbm9kZSA9IGRvd25jYXN0
PFNjcm9sbGluZ1N0YXRlRnJhbWVTY3JvbGxpbmdOb2RlPihtX3Njcm9sbGluZ1N0YXRlVHJlZS0+
c3RhdGVOb2RlRm9ySUQoZnJhbWVWaWV3LnNjcm9sbExheWVySUQoKSkpKSB7Ci0gICAgICAgIHNl
dFN0YXRlU2Nyb2xsaW5nTm9kZVNuYXBPZmZzZXRzQXNGbG9hdCgqbm9kZSwgU2Nyb2xsRXZlbnRB
eGlzOjpIb3Jpem9udGFsLCBmcmFtZVZpZXcuaG9yaXpvbnRhbFNuYXBPZmZzZXRzKCksIG1fcGFn
ZS0+ZGV2aWNlU2NhbGVGYWN0b3IoKSk7Ci0gICAgICAgIHNldFN0YXRlU2Nyb2xsaW5nTm9kZVNu
YXBPZmZzZXRzQXNGbG9hdCgqbm9kZSwgU2Nyb2xsRXZlbnRBeGlzOjpWZXJ0aWNhbCwgZnJhbWVW
aWV3LnZlcnRpY2FsU25hcE9mZnNldHMoKSwgbV9wYWdlLT5kZXZpY2VTY2FsZUZhY3RvcigpKTsK
KyAgICAgICAgc2V0U3RhdGVTY3JvbGxpbmdOb2RlU25hcE9mZnNldHNBc0Zsb2F0KCpub2RlLCBT
Y3JvbGxFdmVudEF4aXM6Okhvcml6b250YWwsIGZyYW1lVmlldy5ob3Jpem9udGFsU25hcE9mZnNl
dHMoKSwgZnJhbWVWaWV3Lmhvcml6b250YWxTbmFwT2Zmc2V0UmFuZ2VzKCksIG1fcGFnZS0+ZGV2
aWNlU2NhbGVGYWN0b3IoKSk7CisgICAgICAgIHNldFN0YXRlU2Nyb2xsaW5nTm9kZVNuYXBPZmZz
ZXRzQXNGbG9hdCgqbm9kZSwgU2Nyb2xsRXZlbnRBeGlzOjpWZXJ0aWNhbCwgZnJhbWVWaWV3LnZl
cnRpY2FsU25hcE9mZnNldHMoKSwgZnJhbWVWaWV3LnZlcnRpY2FsU25hcE9mZnNldFJhbmdlcygp
LCBtX3BhZ2UtPmRldmljZVNjYWxlRmFjdG9yKCkpOwogICAgICAgICBub2RlLT5zZXRDdXJyZW50
SG9yaXpvbnRhbFNuYXBQb2ludEluZGV4KGZyYW1lVmlldy5jdXJyZW50SG9yaXpvbnRhbFNuYXBQ
b2ludEluZGV4KCkpOwogICAgICAgICBub2RlLT5zZXRDdXJyZW50VmVydGljYWxTbmFwUG9pbnRJ
bmRleChmcmFtZVZpZXcuY3VycmVudFZlcnRpY2FsU25hcFBvaW50SW5kZXgoKSk7CiAgICAgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvQXhpc1Njcm9sbFNuYXBP
ZmZzZXRzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL0F4aXNTY3JvbGxTbmFw
T2Zmc2V0cy5jcHAKaW5kZXggNDY5YzA4ZmRlNDY0OGVjYTljNTM1MzIwNzljOWRkZjhmY2M2NmMz
OC4uNzRmYTZhZDEyYzk3ZjYyMmUyYTc4NTljN2E5OWE2ZmZjM2YxZTE5ZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvQXhpc1Njcm9sbFNuYXBPZmZzZXRzLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9BeGlzU2Nyb2xsU25hcE9mZnNldHMu
Y3BwCkBAIC04NCw2ICs4NCwxNiBAQCBzdGF0aWMgU3RyaW5nIHNuYXBPZmZzZXRzVG9TdHJpbmco
Y29uc3QgVmVjdG9yPExheW91dFVuaXQ+JiBzbmFwT2Zmc2V0cykKICAgICByZXR1cm4gcy50b1N0
cmluZygpOwogfQogCitzdGF0aWMgU3RyaW5nIHNuYXBPZmZzZXRSYW5nZXNUb1N0cmluZyhjb25z
dCBWZWN0b3I8U2Nyb2xsT2Zmc2V0UmFuZ2U8TGF5b3V0VW5pdD4+JiByYW5nZXMpCit7CisgICAg
U3RyaW5nQnVpbGRlciBzOworICAgIHMuYXBwZW5kKCJbICIpOworICAgIGZvciAoYXV0byByYW5n
ZSA6IHJhbmdlcykKKyAgICAgICAgcy5hcHBlbmQoU3RyaW5nOjpmb3JtYXQoIiglLjFmLCAlLjFm
KSAiLCByYW5nZS5zdGFydC50b0Zsb2F0KCksIHJhbmdlLmVuZC50b0Zsb2F0KCkpKTsKKyAgICBz
LmFwcGVuZCgiXSIpOworICAgIHJldHVybiBzLnRvU3RyaW5nKCkudXRmOCgpLmRhdGEoKTsKK30K
Kwogc3RhdGljIFN0cmluZyBzbmFwUG9ydE9yQXJlYVRvU3RyaW5nKGNvbnN0IExheW91dFJlY3Qm
IHJlY3QpCiB7CiAgICAgcmV0dXJuIFN0cmluZzo6Zm9ybWF0KCJ7eyUuMWYsICUuMWZ9IHslLjFm
LCAlLjFmfX0iLCByZWN0LngoKS50b0Zsb2F0KCksIHJlY3QueSgpLnRvRmxvYXQoKSwgcmVjdC53
aWR0aCgpLnRvRmxvYXQoKSwgcmVjdC5oZWlnaHQoKS50b0Zsb2F0KCkpOwpAQCAtOTEsNiArMTAx
LDg5IEBAIHN0YXRpYyBTdHJpbmcgc25hcFBvcnRPckFyZWFUb1N0cmluZyhjb25zdCBMYXlvdXRS
ZWN0JiByZWN0KQogCiAjZW5kaWYKIAordGVtcGxhdGUgPHR5cGVuYW1lIExheW91dFR5cGU+Citz
dGF0aWMgdm9pZCBpbmRpY2VzT2ZOZWFyZXN0U25hcE9mZnNldFJhbmdlcyhMYXlvdXRUeXBlIG9m
ZnNldCwgY29uc3QgVmVjdG9yPFNjcm9sbE9mZnNldFJhbmdlPExheW91dFR5cGU+PiYgc25hcE9m
ZnNldFJhbmdlcywgdW5zaWduZWQmIGxvd2VySW5kZXgsIHVuc2lnbmVkJiB1cHBlckluZGV4KQor
eworICAgIGlmIChzbmFwT2Zmc2V0UmFuZ2VzLmlzRW1wdHkoKSkgeworICAgICAgICBsb3dlcklu
ZGV4ID0gaW52YWxpZFNuYXBPZmZzZXRJbmRleDsKKyAgICAgICAgdXBwZXJJbmRleCA9IGludmFs
aWRTbmFwT2Zmc2V0SW5kZXg7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpbnQgbG93
ZXJJbmRleEFzSW50ID0gLTE7CisgICAgaW50IHVwcGVySW5kZXhBc0ludCA9IHNuYXBPZmZzZXRS
YW5nZXMuc2l6ZSgpOworICAgIGRvIHsKKyAgICAgICAgaW50IG1pZGRsZUluZGV4ID0gKGxvd2Vy
SW5kZXhBc0ludCArIHVwcGVySW5kZXhBc0ludCkgLyAyOworICAgICAgICBhdXRvJiByYW5nZSA9
IHNuYXBPZmZzZXRSYW5nZXNbbWlkZGxlSW5kZXhdOworICAgICAgICBpZiAocmFuZ2Uuc3RhcnQg
PCBvZmZzZXQgJiYgb2Zmc2V0IDwgcmFuZ2UuZW5kKSB7CisgICAgICAgICAgICBsb3dlckluZGV4
QXNJbnQgPSBtaWRkbGVJbmRleDsKKyAgICAgICAgICAgIHVwcGVySW5kZXhBc0ludCA9IG1pZGRs
ZUluZGV4OworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKworICAgICAgICBpZiAob2Zm
c2V0ID4gcmFuZ2UuZW5kKQorICAgICAgICAgICAgbG93ZXJJbmRleEFzSW50ID0gbWlkZGxlSW5k
ZXg7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHVwcGVySW5kZXhBc0ludCA9IG1pZGRsZUlu
ZGV4OworICAgIH0gd2hpbGUgKGxvd2VySW5kZXhBc0ludCA8IHVwcGVySW5kZXhBc0ludCAtIDEp
OworCisgICAgaWYgKG9mZnNldCA8PSBzbmFwT2Zmc2V0UmFuZ2VzLmZpcnN0KCkuc3RhcnQpCisg
ICAgICAgIGxvd2VySW5kZXggPSBpbnZhbGlkU25hcE9mZnNldEluZGV4OworICAgIGVsc2UKKyAg
ICAgICAgbG93ZXJJbmRleCA9IGxvd2VySW5kZXhBc0ludDsKKworICAgIGlmIChvZmZzZXQgPj0g
c25hcE9mZnNldFJhbmdlcy5sYXN0KCkuZW5kKQorICAgICAgICB1cHBlckluZGV4ID0gaW52YWxp
ZFNuYXBPZmZzZXRJbmRleDsKKyAgICBlbHNlCisgICAgICAgIHVwcGVySW5kZXggPSB1cHBlcklu
ZGV4QXNJbnQ7Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBMYXlvdXRUeXBlPgorc3RhdGljIHZv
aWQgaW5kaWNlc09mTmVhcmVzdFNuYXBPZmZzZXRzKExheW91dFR5cGUgb2Zmc2V0LCBjb25zdCBW
ZWN0b3I8TGF5b3V0VHlwZT4mIHNuYXBPZmZzZXRzLCB1bnNpZ25lZCYgbG93ZXJJbmRleCwgdW5z
aWduZWQmIHVwcGVySW5kZXgpCit7CisgICAgbG93ZXJJbmRleCA9IDA7CisgICAgdXBwZXJJbmRl
eCA9IHNuYXBPZmZzZXRzLnNpemUoKSAtIDE7CisgICAgd2hpbGUgKGxvd2VySW5kZXggPCB1cHBl
ckluZGV4IC0gMSkgeworICAgICAgICBpbnQgbWlkZGxlSW5kZXggPSAobG93ZXJJbmRleCArIHVw
cGVySW5kZXgpIC8gMjsKKyAgICAgICAgaWYgKG9mZnNldCA8IHNuYXBPZmZzZXRzW21pZGRsZUlu
ZGV4XSkKKyAgICAgICAgICAgIHVwcGVySW5kZXggPSBtaWRkbGVJbmRleDsKKyAgICAgICAgZWxz
ZSBpZiAob2Zmc2V0ID4gc25hcE9mZnNldHNbbWlkZGxlSW5kZXhdKQorICAgICAgICAgICAgbG93
ZXJJbmRleCA9IG1pZGRsZUluZGV4OworICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIHVwcGVy
SW5kZXggPSBtaWRkbGVJbmRleDsKKyAgICAgICAgICAgIGxvd2VySW5kZXggPSBtaWRkbGVJbmRl
eDsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgfQorfQorCitzdGF0aWMgdm9p
ZCBhZGp1c3RBeGlzU25hcE9mZnNldHNGb3JTY3JvbGxFeHRlbnQoVmVjdG9yPExheW91dFVuaXQ+
JiBzbmFwT2Zmc2V0cywgZmxvYXQgbWF4U2Nyb2xsRXh0ZW50KQoreworICAgIGlmIChzbmFwT2Zm
c2V0cy5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybjsKKworICAgIHN0ZDo6c29ydChzbmFwT2Zm
c2V0cy5iZWdpbigpLCBzbmFwT2Zmc2V0cy5lbmQoKSk7CisgICAgaWYgKHNuYXBPZmZzZXRzLmxh
c3QoKSAhPSBtYXhTY3JvbGxFeHRlbnQpCisgICAgICAgIHNuYXBPZmZzZXRzLmFwcGVuZChtYXhT
Y3JvbGxFeHRlbnQpOworICAgIGlmIChzbmFwT2Zmc2V0cy5maXJzdCgpKQorICAgICAgICBzbmFw
T2Zmc2V0cy5pbnNlcnQoMCwgMCk7Cit9CisKK3N0YXRpYyB2b2lkIGNvbXB1dGVBeGlzUHJveGlt
aXR5U25hcE9mZnNldFJhbmdlcyhjb25zdCBWZWN0b3I8TGF5b3V0VW5pdD4mIHNuYXBPZmZzZXRz
LCBWZWN0b3I8U2Nyb2xsT2Zmc2V0UmFuZ2U8TGF5b3V0VW5pdD4+JiBvZmZzZXRSYW5nZXMsIExh
eW91dFVuaXQgc2Nyb2xsUG9ydEF4aXNMZW5ndGgpCit7CisgICAgc3RhdGljIGNvbnN0IGZsb2F0
IHJhdGlvT2ZTY3JvbGxQb3J0QXhpc0xlbmd0aFRvQmVDb25zaWRlcmVkRm9yUHJveGltaXR5ID0g
MC4zOworICAgIGlmIChzbmFwT2Zmc2V0cy5zaXplKCkgPCAyKQorICAgICAgICByZXR1cm47CisK
KyAgICBMYXlvdXRVbml0IHByb3hpbWl0eURpc3RhbmNlID0gcmF0aW9PZlNjcm9sbFBvcnRBeGlz
TGVuZ3RoVG9CZUNvbnNpZGVyZWRGb3JQcm94aW1pdHkgKiBzY3JvbGxQb3J0QXhpc0xlbmd0aDsK
KyAgICBmb3IgKHNpemVfdCBpbmRleCA9IDE7IGluZGV4IDwgc25hcE9mZnNldHMuc2l6ZSgpOyAr
K2luZGV4KSB7CisgICAgICAgIGF1dG8gc3RhcnRPZmZzZXQgPSBzbmFwT2Zmc2V0c1tpbmRleCAt
IDFdICsgcHJveGltaXR5RGlzdGFuY2U7CisgICAgICAgIGF1dG8gZW5kT2Zmc2V0ID0gc25hcE9m
ZnNldHNbaW5kZXhdIC0gcHJveGltaXR5RGlzdGFuY2U7CisgICAgICAgIGlmIChzdGFydE9mZnNl
dCA8IGVuZE9mZnNldCkKKyAgICAgICAgICAgIG9mZnNldFJhbmdlcy5hcHBlbmQoeyBzdGFydE9m
ZnNldCwgZW5kT2Zmc2V0IH0pOworICAgIH0KK30KKwogdm9pZCB1cGRhdGVTbmFwT2Zmc2V0c0Zv
clNjcm9sbGFibGVBcmVhKFNjcm9sbGFibGVBcmVhJiBzY3JvbGxhYmxlQXJlYSwgSFRNTEVsZW1l
bnQmIHNjcm9sbGluZ0VsZW1lbnQsIGNvbnN0IFJlbmRlckJveCYgc2Nyb2xsaW5nRWxlbWVudEJv
eCwgY29uc3QgUmVuZGVyU3R5bGUmIHNjcm9sbGluZ0VsZW1lbnRTdHlsZSkKIHsKICAgICBhdXRv
KiBzY3JvbGxDb250YWluZXIgPSBzY3JvbGxpbmdFbGVtZW50LnJlbmRlcmVyKCk7CkBAIC0xMDEs
OCArMTk0LDEwIEBAIHZvaWQgdXBkYXRlU25hcE9mZnNldHNGb3JTY3JvbGxhYmxlQXJlYShTY3Jv
bGxhYmxlQXJlYSYgc2Nyb2xsYWJsZUFyZWEsIEhUTUxFbGVtCiAgICAgICAgIHJldHVybjsKICAg
ICB9CiAKLSAgICBhdXRvIHZlcnRpY2FsU25hcE9mZnNldHMgPSBzdGQ6Om1ha2VfdW5pcXVlPFZl
Y3RvcjxMYXlvdXRVbml0Pj4oKTsKLSAgICBhdXRvIGhvcml6b250YWxTbmFwT2Zmc2V0cyA9IHN0
ZDo6bWFrZV91bmlxdWU8VmVjdG9yPExheW91dFVuaXQ+PigpOworICAgIFZlY3RvcjxMYXlvdXRV
bml0PiB2ZXJ0aWNhbFNuYXBPZmZzZXRzOworICAgIFZlY3RvcjxMYXlvdXRVbml0PiBob3Jpem9u
dGFsU25hcE9mZnNldHM7CisgICAgVmVjdG9yPFNjcm9sbE9mZnNldFJhbmdlPExheW91dFVuaXQ+
PiB2ZXJ0aWNhbFNuYXBPZmZzZXRSYW5nZXM7CisgICAgVmVjdG9yPFNjcm9sbE9mZnNldFJhbmdl
PExheW91dFVuaXQ+PiBob3Jpem9udGFsU25hcE9mZnNldFJhbmdlczsKICAgICBIYXNoU2V0PGZs
b2F0PiBzZWVuVmVydGljYWxTbmFwT2Zmc2V0czsKICAgICBIYXNoU2V0PGZsb2F0PiBzZWVuSG9y
aXpvbnRhbFNuYXBPZmZzZXRzOwogICAgIGJvb2wgaGFzSG9yaXpvbnRhbFNuYXBPZmZzZXRzID0g
c2Nyb2xsU25hcFR5cGUuYXhpcyA9PSBTY3JvbGxTbmFwQXhpczo6Qm90aCB8fCBzY3JvbGxTbmFw
VHlwZS5heGlzID09IFNjcm9sbFNuYXBBeGlzOjpYQXhpcyB8fCBzY3JvbGxTbmFwVHlwZS5heGlz
ID09IFNjcm9sbFNuYXBBeGlzOjpJbmxpbmU7CkBAIC0xMzMsNDUgKzIyOCwxMDggQEAgdm9pZCB1
cGRhdGVTbmFwT2Zmc2V0c0ZvclNjcm9sbGFibGVBcmVhKFNjcm9sbGFibGVBcmVhJiBzY3JvbGxh
YmxlQXJlYSwgSFRNTEVsZW0KICAgICAgICAgICAgIGF1dG8gYWJzb2x1dGVTY3JvbGxPZmZzZXQg
PSBjbGFtcFRvPExheW91dFVuaXQ+KGNvbXB1dGVTY3JvbGxTbmFwQWxpZ25PZmZzZXQoc2Nyb2xs
U25hcEFyZWEueCgpLCBzY3JvbGxTbmFwQXJlYS53aWR0aCgpLCBhbGlnbm1lbnQueCkgLSBjb21w
dXRlU2Nyb2xsU25hcEFsaWduT2Zmc2V0KHNjcm9sbFNuYXBQb3J0LngoKSwgc2Nyb2xsU25hcFBv
cnQud2lkdGgoKSwgYWxpZ25tZW50LngpLCAwLCBtYXhTY3JvbGxMZWZ0KTsKICAgICAgICAgICAg
IGlmICghc2Vlbkhvcml6b250YWxTbmFwT2Zmc2V0cy5jb250YWlucyhhYnNvbHV0ZVNjcm9sbE9m
ZnNldCkpIHsKICAgICAgICAgICAgICAgICBzZWVuSG9yaXpvbnRhbFNuYXBPZmZzZXRzLmFkZChh
YnNvbHV0ZVNjcm9sbE9mZnNldCk7Ci0gICAgICAgICAgICAgICAgaG9yaXpvbnRhbFNuYXBPZmZz
ZXRzLT5hcHBlbmQoYWJzb2x1dGVTY3JvbGxPZmZzZXQpOworICAgICAgICAgICAgICAgIGhvcml6
b250YWxTbmFwT2Zmc2V0cy5hcHBlbmQoYWJzb2x1dGVTY3JvbGxPZmZzZXQpOwogICAgICAgICAg
ICAgfQogICAgICAgICB9CiAgICAgICAgIGlmIChoYXNWZXJ0aWNhbFNuYXBPZmZzZXRzICYmIGFs
aWdubWVudC55ICE9IFNjcm9sbFNuYXBBeGlzQWxpZ25UeXBlOjpOb25lKSB7CiAgICAgICAgICAg
ICBhdXRvIGFic29sdXRlU2Nyb2xsT2Zmc2V0ID0gY2xhbXBUbzxMYXlvdXRVbml0Pihjb21wdXRl
U2Nyb2xsU25hcEFsaWduT2Zmc2V0KHNjcm9sbFNuYXBBcmVhLnkoKSwgc2Nyb2xsU25hcEFyZWEu
aGVpZ2h0KCksIGFsaWdubWVudC55KSAtIGNvbXB1dGVTY3JvbGxTbmFwQWxpZ25PZmZzZXQoc2Ny
b2xsU25hcFBvcnQueSgpLCBzY3JvbGxTbmFwUG9ydC5oZWlnaHQoKSwgYWxpZ25tZW50LnkpLCAw
LCBtYXhTY3JvbGxUb3ApOwogICAgICAgICAgICAgaWYgKCFzZWVuVmVydGljYWxTbmFwT2Zmc2V0
cy5jb250YWlucyhhYnNvbHV0ZVNjcm9sbE9mZnNldCkpIHsKICAgICAgICAgICAgICAgICBzZWVu
VmVydGljYWxTbmFwT2Zmc2V0cy5hZGQoYWJzb2x1dGVTY3JvbGxPZmZzZXQpOwotICAgICAgICAg
ICAgICAgIHZlcnRpY2FsU25hcE9mZnNldHMtPmFwcGVuZChhYnNvbHV0ZVNjcm9sbE9mZnNldCk7
CisgICAgICAgICAgICAgICAgdmVydGljYWxTbmFwT2Zmc2V0cy5hcHBlbmQoYWJzb2x1dGVTY3Jv
bGxPZmZzZXQpOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQogCi0gICAgc3RkOjpz
b3J0KGhvcml6b250YWxTbmFwT2Zmc2V0cy0+YmVnaW4oKSwgaG9yaXpvbnRhbFNuYXBPZmZzZXRz
LT5lbmQoKSk7Ci0gICAgaWYgKGhvcml6b250YWxTbmFwT2Zmc2V0cy0+c2l6ZSgpKSB7Ci0gICAg
ICAgIGlmIChob3Jpem9udGFsU25hcE9mZnNldHMtPmxhc3QoKSAhPSBtYXhTY3JvbGxMZWZ0KQot
ICAgICAgICAgICAgaG9yaXpvbnRhbFNuYXBPZmZzZXRzLT5hcHBlbmQobWF4U2Nyb2xsTGVmdCk7
Ci0gICAgICAgIGlmIChob3Jpem9udGFsU25hcE9mZnNldHMtPmZpcnN0KCkpCi0gICAgICAgICAg
ICBob3Jpem9udGFsU25hcE9mZnNldHMtPmluc2VydCgwLCAwKTsKKyAgICBpZiAoIWhvcml6b250
YWxTbmFwT2Zmc2V0cy5pc0VtcHR5KCkpIHsKKyAgICAgICAgYWRqdXN0QXhpc1NuYXBPZmZzZXRz
Rm9yU2Nyb2xsRXh0ZW50KGhvcml6b250YWxTbmFwT2Zmc2V0cywgbWF4U2Nyb2xsTGVmdCk7CiAj
aWYgIUxPR19ESVNBQkxFRAotICAgICAgICBMT0coU2Nyb2xsaW5nLCAiID0+IENvbXB1dGVkIGhv
cml6b250YWwgc2Nyb2xsIHNuYXAgb2Zmc2V0czogJXMiLCBzbmFwT2Zmc2V0c1RvU3RyaW5nKCpo
b3Jpem9udGFsU25hcE9mZnNldHMpLnV0ZjgoKS5kYXRhKCkpOworICAgICAgICBMT0coU2Nyb2xs
aW5nLCAiID0+IENvbXB1dGVkIGhvcml6b250YWwgc2Nyb2xsIHNuYXAgb2Zmc2V0czogJXMiLCBz
bmFwT2Zmc2V0c1RvU3RyaW5nKGhvcml6b250YWxTbmFwT2Zmc2V0cykudXRmOCgpLmRhdGEoKSk7
CisgICAgICAgIExPRyhTY3JvbGxpbmcsICIgPT4gQ29tcHV0ZWQgaG9yaXpvbnRhbCBzY3JvbGwg
c25hcCBvZmZzZXQgcmFuZ2VzOiAlcyIsIHNuYXBPZmZzZXRSYW5nZXNUb1N0cmluZyhob3Jpem9u
dGFsU25hcE9mZnNldFJhbmdlcykudXRmOCgpLmRhdGEoKSk7CiAjZW5kaWYKLSAgICAgICAgc2Ny
b2xsYWJsZUFyZWEuc2V0SG9yaXpvbnRhbFNuYXBPZmZzZXRzKFdURk1vdmUoaG9yaXpvbnRhbFNu
YXBPZmZzZXRzKSk7CisgICAgICAgIGlmIChzY3JvbGxTbmFwVHlwZS5zdHJpY3RuZXNzID09IFNj
cm9sbFNuYXBTdHJpY3RuZXNzOjpQcm94aW1pdHkpCisgICAgICAgICAgICBjb21wdXRlQXhpc1By
b3hpbWl0eVNuYXBPZmZzZXRSYW5nZXMoaG9yaXpvbnRhbFNuYXBPZmZzZXRzLCBob3Jpem9udGFs
U25hcE9mZnNldFJhbmdlcywgc2Nyb2xsU25hcFBvcnQud2lkdGgoKSk7CisKKyAgICAgICAgc2Ny
b2xsYWJsZUFyZWEuc2V0SG9yaXpvbnRhbFNuYXBPZmZzZXRzKGhvcml6b250YWxTbmFwT2Zmc2V0
cyk7CisgICAgICAgIHNjcm9sbGFibGVBcmVhLnNldEhvcml6b250YWxTbmFwT2Zmc2V0UmFuZ2Vz
KGhvcml6b250YWxTbmFwT2Zmc2V0UmFuZ2VzKTsKICAgICB9IGVsc2UKICAgICAgICAgc2Nyb2xs
YWJsZUFyZWEuY2xlYXJIb3Jpem9udGFsU25hcE9mZnNldHMoKTsKIAotICAgIHN0ZDo6c29ydCh2
ZXJ0aWNhbFNuYXBPZmZzZXRzLT5iZWdpbigpLCB2ZXJ0aWNhbFNuYXBPZmZzZXRzLT5lbmQoKSk7
Ci0gICAgaWYgKHZlcnRpY2FsU25hcE9mZnNldHMtPnNpemUoKSkgewotICAgICAgICBpZiAodmVy
dGljYWxTbmFwT2Zmc2V0cy0+bGFzdCgpICE9IG1heFNjcm9sbFRvcCkKLSAgICAgICAgICAgIHZl
cnRpY2FsU25hcE9mZnNldHMtPmFwcGVuZChtYXhTY3JvbGxUb3ApOwotICAgICAgICBpZiAodmVy
dGljYWxTbmFwT2Zmc2V0cy0+Zmlyc3QoKSkKLSAgICAgICAgICAgIHZlcnRpY2FsU25hcE9mZnNl
dHMtPmluc2VydCgwLCAwKTsKKyAgICBpZiAoIXZlcnRpY2FsU25hcE9mZnNldHMuaXNFbXB0eSgp
KSB7CisgICAgICAgIGFkanVzdEF4aXNTbmFwT2Zmc2V0c0ZvclNjcm9sbEV4dGVudCh2ZXJ0aWNh
bFNuYXBPZmZzZXRzLCBtYXhTY3JvbGxUb3ApOwogI2lmICFMT0dfRElTQUJMRUQKLSAgICAgICAg
TE9HKFNjcm9sbGluZywgIiA9PiBDb21wdXRlZCB2ZXJ0aWNhbCBzY3JvbGwgc25hcCBvZmZzZXRz
OiAlcyIsIHNuYXBPZmZzZXRzVG9TdHJpbmcoKnZlcnRpY2FsU25hcE9mZnNldHMpLnV0ZjgoKS5k
YXRhKCkpOworICAgICAgICBMT0coU2Nyb2xsaW5nLCAiID0+IENvbXB1dGVkIHZlcnRpY2FsIHNj
cm9sbCBzbmFwIG9mZnNldHM6ICVzIiwgc25hcE9mZnNldHNUb1N0cmluZyh2ZXJ0aWNhbFNuYXBP
ZmZzZXRzKS51dGY4KCkuZGF0YSgpKTsKKyAgICAgICAgTE9HKFNjcm9sbGluZywgIiA9PiBDb21w
dXRlZCB2ZXJ0aWNhbCBzY3JvbGwgc25hcCBvZmZzZXQgcmFuZ2VzOiAlcyIsIHNuYXBPZmZzZXRS
YW5nZXNUb1N0cmluZyh2ZXJ0aWNhbFNuYXBPZmZzZXRSYW5nZXMpLnV0ZjgoKS5kYXRhKCkpOwog
I2VuZGlmCi0gICAgICAgIHNjcm9sbGFibGVBcmVhLnNldFZlcnRpY2FsU25hcE9mZnNldHMoV1RG
TW92ZSh2ZXJ0aWNhbFNuYXBPZmZzZXRzKSk7CisgICAgICAgIGlmIChzY3JvbGxTbmFwVHlwZS5z
dHJpY3RuZXNzID09IFNjcm9sbFNuYXBTdHJpY3RuZXNzOjpQcm94aW1pdHkpCisgICAgICAgICAg
ICBjb21wdXRlQXhpc1Byb3hpbWl0eVNuYXBPZmZzZXRSYW5nZXModmVydGljYWxTbmFwT2Zmc2V0
cywgdmVydGljYWxTbmFwT2Zmc2V0UmFuZ2VzLCBzY3JvbGxTbmFwUG9ydC5oZWlnaHQoKSk7CisK
KyAgICAgICAgc2Nyb2xsYWJsZUFyZWEuc2V0VmVydGljYWxTbmFwT2Zmc2V0cyh2ZXJ0aWNhbFNu
YXBPZmZzZXRzKTsKKyAgICAgICAgc2Nyb2xsYWJsZUFyZWEuc2V0VmVydGljYWxTbmFwT2Zmc2V0
UmFuZ2VzKHZlcnRpY2FsU25hcE9mZnNldFJhbmdlcyk7CiAgICAgfSBlbHNlCiAgICAgICAgIHNj
cm9sbGFibGVBcmVhLmNsZWFyVmVydGljYWxTbmFwT2Zmc2V0cygpOwogfQogCit0ZW1wbGF0ZSA8
dHlwZW5hbWUgTGF5b3V0VHlwZT4KK0xheW91dFR5cGUgY2xvc2VzdFNuYXBPZmZzZXQoY29uc3Qg
VmVjdG9yPExheW91dFR5cGU+JiBzbmFwT2Zmc2V0cywgY29uc3QgVmVjdG9yPFNjcm9sbE9mZnNl
dFJhbmdlPExheW91dFR5cGU+PiYgc25hcE9mZnNldFJhbmdlcywgTGF5b3V0VHlwZSBzY3JvbGxE
ZXN0aW5hdGlvbiwgZmxvYXQgdmVsb2NpdHksIHVuc2lnbmVkJiBhY3RpdmVTbmFwSW5kZXgpCit7
CisgICAgQVNTRVJUKHNuYXBPZmZzZXRzLnNpemUoKSk7CisgICAgYWN0aXZlU25hcEluZGV4ID0g
MDsKKworICAgIHVuc2lnbmVkIGxvd2VyU25hcE9mZnNldFJhbmdlSW5kZXg7CisgICAgdW5zaWdu
ZWQgdXBwZXJTbmFwT2Zmc2V0UmFuZ2VJbmRleDsKKyAgICBpbmRpY2VzT2ZOZWFyZXN0U25hcE9m
ZnNldFJhbmdlczxMYXlvdXRUeXBlPihzY3JvbGxEZXN0aW5hdGlvbiwgc25hcE9mZnNldFJhbmdl
cywgbG93ZXJTbmFwT2Zmc2V0UmFuZ2VJbmRleCwgdXBwZXJTbmFwT2Zmc2V0UmFuZ2VJbmRleCk7
CisgICAgaWYgKGxvd2VyU25hcE9mZnNldFJhbmdlSW5kZXggPT0gdXBwZXJTbmFwT2Zmc2V0UmFu
Z2VJbmRleCAmJiB1cHBlclNuYXBPZmZzZXRSYW5nZUluZGV4ICE9IGludmFsaWRTbmFwT2Zmc2V0
SW5kZXgpIHsKKyAgICAgICAgYWN0aXZlU25hcEluZGV4ID0gaW52YWxpZFNuYXBPZmZzZXRJbmRl
eDsKKyAgICAgICAgcmV0dXJuIHNjcm9sbERlc3RpbmF0aW9uOworICAgIH0KKworICAgIGlmIChz
Y3JvbGxEZXN0aW5hdGlvbiA8PSBzbmFwT2Zmc2V0cy5maXJzdCgpKQorICAgICAgICByZXR1cm4g
c25hcE9mZnNldHMuZmlyc3QoKTsKKworICAgIGFjdGl2ZVNuYXBJbmRleCA9IHNuYXBPZmZzZXRz
LnNpemUoKSAtIDE7CisgICAgaWYgKHNjcm9sbERlc3RpbmF0aW9uID49IHNuYXBPZmZzZXRzLmxh
c3QoKSkKKyAgICAgICAgcmV0dXJuIHNuYXBPZmZzZXRzLmxhc3QoKTsKKworICAgIHVuc2lnbmVk
IGxvd2VySW5kZXg7CisgICAgdW5zaWduZWQgdXBwZXJJbmRleDsKKyAgICBpbmRpY2VzT2ZOZWFy
ZXN0U25hcE9mZnNldHM8TGF5b3V0VHlwZT4oc2Nyb2xsRGVzdGluYXRpb24sIHNuYXBPZmZzZXRz
LCBsb3dlckluZGV4LCB1cHBlckluZGV4KTsKKyAgICBMYXlvdXRUeXBlIGxvd2VyU25hcFBvc2l0
aW9uID0gc25hcE9mZnNldHNbbG93ZXJJbmRleF07CisgICAgTGF5b3V0VHlwZSB1cHBlclNuYXBQ
b3NpdGlvbiA9IHNuYXBPZmZzZXRzW3VwcGVySW5kZXhdOworICAgIGlmICghc3RkOjphYnModmVs
b2NpdHkpKSB7CisgICAgICAgIGJvb2wgaXNDbG9zZXJUb0xvd2VyU25hcFBvc2l0aW9uID0gc2Ny
b2xsRGVzdGluYXRpb24gLSBsb3dlclNuYXBQb3NpdGlvbiA8PSB1cHBlclNuYXBQb3NpdGlvbiAt
IHNjcm9sbERlc3RpbmF0aW9uOworICAgICAgICBhY3RpdmVTbmFwSW5kZXggPSBpc0Nsb3NlclRv
TG93ZXJTbmFwUG9zaXRpb24gPyBsb3dlckluZGV4IDogdXBwZXJJbmRleDsKKyAgICAgICAgcmV0
dXJuIGlzQ2xvc2VyVG9Mb3dlclNuYXBQb3NpdGlvbiA/IGxvd2VyU25hcFBvc2l0aW9uIDogdXBw
ZXJTbmFwUG9zaXRpb247CisgICAgfQorCisgICAgLy8gTm9uemVybyB2ZWxvY2l0eSBpbmRpY2F0
ZXMgYSBmbGljayBnZXN0dXJlLiBFdmVuIGlmIGFub3RoZXIgc25hcCBwb2ludCBpcyBjbG9zZXIs
IHdlIHNob3VsZCBjaG9vc2UgdGhlIG9uZSBpbiB0aGUgZGlyZWN0aW9uIG9mIHRoZSBmbGljayBn
ZXN0dXJlCisgICAgLy8gYXMgbG9uZyBhcyBhIHNjcm9sbCBzbmFwIG9mZnNldCByYW5nZSBkb2Vz
IG5vdCBsaWUgYmV0d2VlbiB0aGUgc2Nyb2xsIGRlc3RpbmF0aW9uIGFuZCB0aGUgdGFyZ2V0ZWQg
c25hcCBvZmZzZXQuCisgICAgaWYgKHZlbG9jaXR5IDwgMCkgeworICAgICAgICBpZiAobG93ZXJT
bmFwT2Zmc2V0UmFuZ2VJbmRleCAhPSBpbnZhbGlkU25hcE9mZnNldEluZGV4ICYmIGxvd2VyU25h
cFBvc2l0aW9uIDwgc25hcE9mZnNldFJhbmdlc1tsb3dlclNuYXBPZmZzZXRSYW5nZUluZGV4XS5l
bmQpIHsKKyAgICAgICAgICAgIGFjdGl2ZVNuYXBJbmRleCA9IHVwcGVySW5kZXg7CisgICAgICAg
ICAgICByZXR1cm4gdXBwZXJTbmFwUG9zaXRpb247CisgICAgICAgIH0KKyAgICAgICAgYWN0aXZl
U25hcEluZGV4ID0gbG93ZXJJbmRleDsKKyAgICAgICAgcmV0dXJuIGxvd2VyU25hcFBvc2l0aW9u
OworICAgIH0KKworICAgIGlmICh1cHBlclNuYXBPZmZzZXRSYW5nZUluZGV4ICE9IGludmFsaWRT
bmFwT2Zmc2V0SW5kZXggJiYgc25hcE9mZnNldFJhbmdlc1t1cHBlclNuYXBPZmZzZXRSYW5nZUlu
ZGV4XS5zdGFydCA8IHVwcGVyU25hcFBvc2l0aW9uKSB7CisgICAgICAgIGFjdGl2ZVNuYXBJbmRl
eCA9IGxvd2VySW5kZXg7CisgICAgICAgIHJldHVybiBsb3dlclNuYXBQb3NpdGlvbjsKKyAgICB9
CisgICAgYWN0aXZlU25hcEluZGV4ID0gdXBwZXJJbmRleDsKKyAgICByZXR1cm4gdXBwZXJTbmFw
UG9zaXRpb247Cit9CisKK0xheW91dFVuaXQgY2xvc2VzdFNuYXBPZmZzZXQoY29uc3QgVmVjdG9y
PExheW91dFVuaXQ+JiBzbmFwT2Zmc2V0cywgY29uc3QgVmVjdG9yPFNjcm9sbE9mZnNldFJhbmdl
PExheW91dFVuaXQ+PiYgc25hcE9mZnNldFJhbmdlcywgTGF5b3V0VW5pdCBzY3JvbGxEZXN0aW5h
dGlvbiwgZmxvYXQgdmVsb2NpdHksIHVuc2lnbmVkJiBhY3RpdmVTbmFwSW5kZXgpCit7CisgICAg
cmV0dXJuIGNsb3Nlc3RTbmFwT2Zmc2V0PExheW91dFVuaXQ+KHNuYXBPZmZzZXRzLCBzbmFwT2Zm
c2V0UmFuZ2VzLCBzY3JvbGxEZXN0aW5hdGlvbiwgdmVsb2NpdHksIGFjdGl2ZVNuYXBJbmRleCk7
Cit9CisKK2Zsb2F0IGNsb3Nlc3RTbmFwT2Zmc2V0KGNvbnN0IFZlY3RvcjxmbG9hdD4mIHNuYXBP
ZmZzZXRzLCBjb25zdCBWZWN0b3I8U2Nyb2xsT2Zmc2V0UmFuZ2U8ZmxvYXQ+PiYgc25hcE9mZnNl
dFJhbmdlcywgZmxvYXQgc2Nyb2xsRGVzdGluYXRpb24sIGZsb2F0IHZlbG9jaXR5LCB1bnNpZ25l
ZCYgYWN0aXZlU25hcEluZGV4KQoreworICAgIHJldHVybiBjbG9zZXN0U25hcE9mZnNldDxmbG9h
dD4oc25hcE9mZnNldHMsIHNuYXBPZmZzZXRSYW5nZXMsIHNjcm9sbERlc3RpbmF0aW9uLCB2ZWxv
Y2l0eSwgYWN0aXZlU25hcEluZGV4KTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAj
ZW5kaWYgLy8gQ1NTX1NDUk9MTF9TTkFQCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L3Njcm9sbGluZy9BeGlzU2Nyb2xsU25hcE9mZnNldHMuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
c2Nyb2xsaW5nL0F4aXNTY3JvbGxTbmFwT2Zmc2V0cy5oCmluZGV4IGIwMWNiN2QzODliY2ZmNTlh
OTU4ZGIxNDc2MWZiYjk1NjQ3ZTMyZDIuLjZiNmIyYmM4NTk4ODQ4YjY1Y2ZlNDkyMDQzMmY2NGY1
NGZhMThlZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL0F4aXNT
Y3JvbGxTbmFwT2Zmc2V0cy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL0F4
aXNTY3JvbGxTbmFwT2Zmc2V0cy5oCkBAIC0yNyw2ICsyNyw4IEBACiAKICNpZiBFTkFCTEUoQ1NT
X1NDUk9MTF9TTkFQKQogCisjaW5jbHVkZSAiTGF5b3V0VW5pdC5oIgorI2luY2x1ZGUgIlNjcm9s
bFNuYXBPZmZzZXRzSW5mby5oIgogI2luY2x1ZGUgIlNjcm9sbFR5cGVzLmgiCiAjaW5jbHVkZSA8
d3RmL1ZlY3Rvci5oPgogCkBAIC0zOSw0NyArNDEsOSBAQCBjbGFzcyBTY3JvbGxhYmxlQXJlYTsK
IAogdm9pZCB1cGRhdGVTbmFwT2Zmc2V0c0ZvclNjcm9sbGFibGVBcmVhKFNjcm9sbGFibGVBcmVh
JiwgSFRNTEVsZW1lbnQmIHNjcm9sbGluZ0VsZW1lbnQsIGNvbnN0IFJlbmRlckJveCYgc2Nyb2xs
aW5nRWxlbWVudEJveCwgY29uc3QgUmVuZGVyU3R5bGUmIHNjcm9sbGluZ0VsZW1lbnRTdHlsZSk7
CiAKLS8vIGNsb3Nlc3RTbmFwT2Zmc2V0IGlzIGEgdGVtcGxhdGVkIGZ1bmN0aW9uIHRoYXQgdGFr
ZXMgaW4gYSBWZWN0b3IgcmVwcmVzZW50aW5nIHNuYXAgb2Zmc2V0cyBhcyBMYXlvdXRUeXBlcyAo
ZS5nLiBMYXlvdXRVbml0IG9yIGZsb2F0KSBhbmQKLS8vIGFzIHdlbGwgYXMgYSBWZWxvY2l0eVR5
cGUgaW5kaWNhdGluZyB0aGUgdmVsb2NpdHkgKGUuZy4gZmxvYXQsIENHRmxvYXQsIGV0Yy4pIFRo
aXMgZnVuY3Rpb24gaXMgdGVtcGxhdGVkIGJlY2F1c2UgdGhlIFVJIHByb2Nlc3Mgd2lsbCBub3cK
LS8vIHVzZSBwaXhlbCBzbmFwcGVkIGZsb2F0cyB0byByZXByZXNlbnQgc25hcCBvZmZzZXRzIHJh
dGhlciB0aGFuIExheW91dFVuaXRzLgotdGVtcGxhdGUgPHR5cGVuYW1lIExheW91dFR5cGUsIHR5
cGVuYW1lIFZlbG9jaXR5VHlwZT4KLUxheW91dFR5cGUgY2xvc2VzdFNuYXBPZmZzZXQoY29uc3Qg
VmVjdG9yPExheW91dFR5cGU+JiBzbmFwT2Zmc2V0cywgTGF5b3V0VHlwZSBzY3JvbGxEZXN0aW5h
dGlvbiwgVmVsb2NpdHlUeXBlIHZlbG9jaXR5LCB1bnNpZ25lZCYgYWN0aXZlU25hcEluZGV4KQot
ewotICAgIEFTU0VSVChzbmFwT2Zmc2V0cy5zaXplKCkpOwotICAgIGFjdGl2ZVNuYXBJbmRleCA9
IDA7Ci0gICAgaWYgKHNjcm9sbERlc3RpbmF0aW9uIDw9IHNuYXBPZmZzZXRzLmZpcnN0KCkpCi0g
ICAgICAgIHJldHVybiBzbmFwT2Zmc2V0cy5maXJzdCgpOwotCi0gICAgYWN0aXZlU25hcEluZGV4
ID0gc25hcE9mZnNldHMuc2l6ZSgpIC0gMTsKLSAgICBpZiAoc2Nyb2xsRGVzdGluYXRpb24gPj0g
c25hcE9mZnNldHMubGFzdCgpKQotICAgICAgICByZXR1cm4gc25hcE9mZnNldHMubGFzdCgpOwot
Ci0gICAgc2l6ZV90IGxvd2VySW5kZXggPSAwOwotICAgIHNpemVfdCB1cHBlckluZGV4ID0gc25h
cE9mZnNldHMuc2l6ZSgpIC0gMTsKLSAgICB3aGlsZSAobG93ZXJJbmRleCA8IHVwcGVySW5kZXgg
LSAxKSB7Ci0gICAgICAgIHNpemVfdCBtaWRkbGVJbmRleCA9IChsb3dlckluZGV4ICsgdXBwZXJJ
bmRleCkgLyAyOwotICAgICAgICBpZiAoc2Nyb2xsRGVzdGluYXRpb24gPCBzbmFwT2Zmc2V0c1tt
aWRkbGVJbmRleF0pCi0gICAgICAgICAgICB1cHBlckluZGV4ID0gbWlkZGxlSW5kZXg7Ci0gICAg
ICAgIGVsc2UgaWYgKHNjcm9sbERlc3RpbmF0aW9uID4gc25hcE9mZnNldHNbbWlkZGxlSW5kZXhd
KQotICAgICAgICAgICAgbG93ZXJJbmRleCA9IG1pZGRsZUluZGV4OwotICAgICAgICBlbHNlIHsK
LSAgICAgICAgICAgIHVwcGVySW5kZXggPSBtaWRkbGVJbmRleDsKLSAgICAgICAgICAgIGxvd2Vy
SW5kZXggPSBtaWRkbGVJbmRleDsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAg
fQotICAgIExheW91dFR5cGUgbG93ZXJTbmFwUG9zaXRpb24gPSBzbmFwT2Zmc2V0c1tsb3dlcklu
ZGV4XTsKLSAgICBMYXlvdXRUeXBlIHVwcGVyU25hcFBvc2l0aW9uID0gc25hcE9mZnNldHNbdXBw
ZXJJbmRleF07Ci0gICAgLy8gTm9uemVybyB2ZWxvY2l0eSBpbmRpY2F0ZXMgYSBmbGljayBnZXN0
dXJlLiBFdmVuIGlmIGFub3RoZXIgc25hcCBwb2ludCBpcyBjbG9zZXIsIHNuYXAgdG8gdGhlIG9u
ZSBpbiB0aGUgZGlyZWN0aW9uIG9mIHRoZSBmbGljayBnZXN0dXJlLgotICAgIGlmICh2ZWxvY2l0
eSkgewotICAgICAgICBhY3RpdmVTbmFwSW5kZXggPSAodmVsb2NpdHkgPCAwKSA/IGxvd2VySW5k
ZXggOiB1cHBlckluZGV4OwotICAgICAgICByZXR1cm4gdmVsb2NpdHkgPCAwID8gbG93ZXJTbmFw
UG9zaXRpb24gOiB1cHBlclNuYXBQb3NpdGlvbjsKLSAgICB9Ci0KLSAgICBib29sIGlzQ2xvc2Vy
VG9Mb3dlclNuYXBQb3NpdGlvbiA9IHNjcm9sbERlc3RpbmF0aW9uIC0gbG93ZXJTbmFwUG9zaXRp
b24gPD0gdXBwZXJTbmFwUG9zaXRpb24gLSBzY3JvbGxEZXN0aW5hdGlvbjsKLSAgICBhY3RpdmVT
bmFwSW5kZXggPSBpc0Nsb3NlclRvTG93ZXJTbmFwUG9zaXRpb24gPyBsb3dlckluZGV4IDogdXBw
ZXJJbmRleDsKLSAgICByZXR1cm4gaXNDbG9zZXJUb0xvd2VyU25hcFBvc2l0aW9uID8gbG93ZXJT
bmFwUG9zaXRpb24gOiB1cHBlclNuYXBQb3NpdGlvbjsKLX0KK2NvbnN0IHVuc2lnbmVkIGludmFs
aWRTbmFwT2Zmc2V0SW5kZXggPSBVSU5UX01BWDsKK1dFQkNPUkVfRVhQT1JUIExheW91dFVuaXQg
Y2xvc2VzdFNuYXBPZmZzZXQoY29uc3QgVmVjdG9yPExheW91dFVuaXQ+JiBzbmFwT2Zmc2V0cywg
Y29uc3QgVmVjdG9yPFNjcm9sbE9mZnNldFJhbmdlPExheW91dFVuaXQ+PiYgc25hcE9mZnNldFJh
bmdlcywgTGF5b3V0VW5pdCBzY3JvbGxEZXN0aW5hdGlvbiwgZmxvYXQgdmVsb2NpdHksIHVuc2ln
bmVkJiBhY3RpdmVTbmFwSW5kZXgpOworV0VCQ09SRV9FWFBPUlQgZmxvYXQgY2xvc2VzdFNuYXBP
ZmZzZXQoY29uc3QgVmVjdG9yPGZsb2F0PiYgc25hcE9mZnNldHMsIGNvbnN0IFZlY3RvcjxTY3Jv
bGxPZmZzZXRSYW5nZTxmbG9hdD4+JiBzbmFwT2Zmc2V0UmFuZ2VzLCBmbG9hdCBzY3JvbGxEZXN0
aW5hdGlvbiwgZmxvYXQgdmVsb2NpdHksIHVuc2lnbmVkJiBhY3RpdmVTbmFwSW5kZXgpOwogCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
c2Nyb2xsaW5nL1Njcm9sbFNuYXBPZmZzZXRzSW5mby5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9z
Y3JvbGxpbmcvU2Nyb2xsU25hcE9mZnNldHNJbmZvLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjNiZDk2MzhiNjNh
MWExMWNhNDBmMzY3MjEyOWY3MTQxMGM2ZmYyZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbFNuYXBPZmZzZXRzSW5mby5oCkBAIC0wLDAgKzEs
NTEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisg
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgPHd0Zi9WZWN0b3Iu
aD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK3N0cnVj
dCBTY3JvbGxPZmZzZXRSYW5nZSB7CisgICAgVCBzdGFydDsKKyAgICBUIGVuZDsKK307CisKK3Rl
bXBsYXRlIDx0eXBlbmFtZSBUPgorc3RydWN0IFNjcm9sbFNuYXBPZmZzZXRzSW5mbyB7CisgICAg
VmVjdG9yPFQ+IGhvcml6b250YWxTbmFwT2Zmc2V0czsKKyAgICBWZWN0b3I8VD4gdmVydGljYWxT
bmFwT2Zmc2V0czsKKworICAgIC8vIFNuYXAgb2Zmc2V0IHJhbmdlcyByZXByZXNlbnQgbm9uLWVt
cHR5IHJhbmdlcyBvZiBzY3JvbGwgb2Zmc2V0cyBpbiB3aGljaCBzY3JvbGxpbmcgbWF5IHJlc3Qg
YWZ0ZXIgc2Nyb2xsIHNuYXBwaW5nLgorICAgIC8vIFRoZXNlIGFyZSB1c2VkIGluIHR3byBjYXNl
czogKDEpIGZvciBwcm94aW1pdHkgc2Nyb2xsIHNuYXBwaW5nLCB3aGVyZSBwb3J0aW9ucyBvZiBh
cmVhcyBiZXR3ZWVuIGFkamFjZW50IHNuYXAgb2Zmc2V0cworICAgIC8vIG1heSBlbWl0IHNuYXAg
b2Zmc2V0IHJhbmdlcywgYW5kICgyKSBpbiB0aGUgY2FzZSB3aGVyZSB0aGUgc25hcCBhcmVhIGlz
IGxhcmdlciB0aGFuIHRoZSBzbmFwIHBvcnQsIGluIHdoaWNoIGNhc2UgYXJlYXMKKyAgICAvLyB3
aGVyZSB0aGUgc25hcCBwb3J0IGZpdHMgd2l0aGluIHRoZSBzbmFwIGFyZWEgYXJlIGNvbnNpZGVy
ZWQgdG8gYmUgdmFsaWQgc25hcCBwb3NpdGlvbnMuCisgICAgVmVjdG9yPFNjcm9sbE9mZnNldFJh
bmdlPFQ+PiBob3Jpem9udGFsU25hcE9mZnNldFJhbmdlczsKKyAgICBWZWN0b3I8U2Nyb2xsT2Zm
c2V0UmFuZ2U8VD4+IHZlcnRpY2FsU25hcE9mZnNldFJhbmdlczsKK307CisKK307IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9T
Y3JvbGxpbmdDb29yZGluYXRvci5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Ny
b2xsaW5nQ29vcmRpbmF0b3IuaAppbmRleCA3YTZhZjIxZjA2OGU4YTgxMDk0NTA5YWFkYWY0ZGVj
M2NiYzQxYmViLi5lYjZkYWJmOTc4ZGNjNGVkMmUzMDJhMjUyYjQ1MGIxNjhiZjRiYjkyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdDb29yZGluYXRv
ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ0Nvb3JkaW5h
dG9yLmgKQEAgLTI5LDYgKzI5LDcgQEAKICNpbmNsdWRlICJJbnRSZWN0LmgiCiAjaW5jbHVkZSAi
TGF5b3V0UmVjdC5oIgogI2luY2x1ZGUgIlBsYXRmb3JtV2hlZWxFdmVudC5oIgorI2luY2x1ZGUg
IlNjcm9sbFNuYXBPZmZzZXRzSW5mby5oIgogI2luY2x1ZGUgIlNjcm9sbFR5cGVzLmgiCiAjaW5j
bHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYvVGhyZWFkU2FmZVJlZkNvdW50ZWQu
aD4KQEAgLTE3MCw2ICsxNzEsOCBAQCBwdWJsaWM6CiAjaWYgRU5BQkxFKENTU19TQ1JPTExfU05B
UCkKICAgICAgICAgVmVjdG9yPExheW91dFVuaXQ+IGhvcml6b250YWxTbmFwT2Zmc2V0czsKICAg
ICAgICAgVmVjdG9yPExheW91dFVuaXQ+IHZlcnRpY2FsU25hcE9mZnNldHM7CisgICAgICAgIFZl
Y3RvcjxTY3JvbGxPZmZzZXRSYW5nZTxMYXlvdXRVbml0Pj4gaG9yaXpvbnRhbFNuYXBPZmZzZXRS
YW5nZXM7CisgICAgICAgIFZlY3RvcjxTY3JvbGxPZmZzZXRSYW5nZTxMYXlvdXRVbml0Pj4gdmVy
dGljYWxTbmFwT2Zmc2V0UmFuZ2VzOwogICAgICAgICB1bnNpZ25lZCBjdXJyZW50SG9yaXpvbnRh
bFNuYXBQb2ludEluZGV4OwogICAgICAgICB1bnNpZ25lZCBjdXJyZW50VmVydGljYWxTbmFwUG9p
bnRJbmRleDsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxp
bmcvU2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
c2Nyb2xsaW5nL1Njcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvci5jcHAKaW5kZXggOGM2OWFmMmY2
ZGJkMjFiODdmNjg4NGFkM2NmYTllZWZkYzI3Y2JjOS4uOTY2NGY0MzBlZjE3OTZjOTI4MmQzZWFh
ZDI3YTk0YWQyNmM3ZTc0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxp
bmcvU2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL3Njcm9sbGluZy9TY3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3IuY3BwCkBAIC0zMiwzNCAr
MzIsNTggQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3RhdGljIGNvbnN0IFNlY29uZHMgc2Ny
b2xsU25hcEFuaW1hdGlvbkR1cmF0aW9uID0gMV9zOworc3RhdGljIGlubGluZSBmbG9hdCBwcm9q
ZWN0ZWRJbmVydGlhbFNjcm9sbERpc3RhbmNlKGZsb2F0IGluaXRpYWxXaGVlbERlbHRhKQorewor
ICAgIGNvbnN0IHN0YXRpYyBkb3VibGUgaW5lcnRpYWxTY3JvbGxQcmVkaWN0aW9uRmFjdG9yID0g
MTYuNzsKKyAgICByZXR1cm4gaW5lcnRpYWxTY3JvbGxQcmVkaWN0aW9uRmFjdG9yICogaW5pdGlh
bFdoZWVsRGVsdGE7Cit9CiAKLVNjcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvcjo6U2Nyb2xsaW5n
TW9tZW50dW1DYWxjdWxhdG9yKGNvbnN0IEZsb2F0U2l6ZSYgdmlld3BvcnRTaXplLCBjb25zdCBG
bG9hdFNpemUmIGNvbnRlbnRTaXplLCBjb25zdCBGbG9hdFBvaW50JiBpbml0aWFsT2Zmc2V0LCBj
b25zdCBGbG9hdFBvaW50JiB0YXJnZXRPZmZzZXQsIGNvbnN0IEZsb2F0U2l6ZSYgaW5pdGlhbERl
bHRhLCBjb25zdCBGbG9hdFNpemUmIGluaXRpYWxWZWxvY2l0eSkKK1Njcm9sbGluZ01vbWVudHVt
Q2FsY3VsYXRvcjo6U2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yKGNvbnN0IEZsb2F0U2l6ZSYg
dmlld3BvcnRTaXplLCBjb25zdCBGbG9hdFNpemUmIGNvbnRlbnRTaXplLCBjb25zdCBGbG9hdFBv
aW50JiBpbml0aWFsT2Zmc2V0LCBjb25zdCBGbG9hdFNpemUmIGluaXRpYWxEZWx0YSwgY29uc3Qg
RmxvYXRTaXplJiBpbml0aWFsVmVsb2NpdHkpCiAgICAgOiBtX2luaXRpYWxEZWx0YShpbml0aWFs
RGVsdGEpCiAgICAgLCBtX2luaXRpYWxWZWxvY2l0eShpbml0aWFsVmVsb2NpdHkpCiAgICAgLCBt
X2luaXRpYWxTY3JvbGxPZmZzZXQoaW5pdGlhbE9mZnNldC54KCksIGluaXRpYWxPZmZzZXQueSgp
KQotICAgICwgbV90YXJnZXRTY3JvbGxPZmZzZXQodGFyZ2V0T2Zmc2V0LngoKSwgdGFyZ2V0T2Zm
c2V0LnkoKSkKICAgICAsIG1fdmlld3BvcnRTaXplKHZpZXdwb3J0U2l6ZSkKICAgICAsIG1fY29u
dGVudFNpemUoY29udGVudFNpemUpCiB7CiB9CiAKK3ZvaWQgU2Nyb2xsaW5nTW9tZW50dW1DYWxj
dWxhdG9yOjpzZXRSZXRhcmdldGVkU2Nyb2xsT2Zmc2V0KGNvbnN0IEZsb2F0U2l6ZSYgdGFyZ2V0
KQoreworICAgIGlmIChtX3JldGFyZ2V0ZWRTY3JvbGxPZmZzZXQgJiYgbV9yZXRhcmdldGVkU2Ny
b2xsT2Zmc2V0ID09IHRhcmdldCkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9yZXRhcmdldGVk
U2Nyb2xsT2Zmc2V0ID0gdGFyZ2V0OworICAgIHJldGFyZ2V0ZWRTY3JvbGxPZmZzZXREaWRDaGFu
Z2UoKTsKK30KKworRmxvYXRTaXplIFNjcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvcjo6cHJlZGlj
dGVkRGVzdGluYXRpb25PZmZzZXQoKQoreworICAgIGZsb2F0IGluaXRpYWxPZmZzZXRYID0gY2xh
bXBUbzxmbG9hdD4obV9pbml0aWFsU2Nyb2xsT2Zmc2V0LndpZHRoKCkgKyBwcm9qZWN0ZWRJbmVy
dGlhbFNjcm9sbERpc3RhbmNlKG1faW5pdGlhbERlbHRhLndpZHRoKCkpLCAwLCBtX2NvbnRlbnRT
aXplLndpZHRoKCkgLSBtX3ZpZXdwb3J0U2l6ZS53aWR0aCgpKTsKKyAgICBmbG9hdCBpbml0aWFs
T2Zmc2V0WSA9IGNsYW1wVG88ZmxvYXQ+KG1faW5pdGlhbFNjcm9sbE9mZnNldC5oZWlnaHQoKSAr
IHByb2plY3RlZEluZXJ0aWFsU2Nyb2xsRGlzdGFuY2UobV9pbml0aWFsRGVsdGEuaGVpZ2h0KCkp
LCAwLCBtX2NvbnRlbnRTaXplLmhlaWdodCgpIC0gbV92aWV3cG9ydFNpemUuaGVpZ2h0KCkpOwor
ICAgIHJldHVybiB7IGluaXRpYWxPZmZzZXRYLCBpbml0aWFsT2Zmc2V0WSB9OworfQorCiAjaWYg
IUhBVkUoTlNTQ1JPTExJTkdfRklMVEVSUykKIAotc3RkOjp1bmlxdWVfcHRyPFNjcm9sbGluZ01v
bWVudHVtQ2FsY3VsYXRvcj4gU2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yOjpjcmVhdGUoY29u
c3QgRmxvYXRTaXplJiB2aWV3cG9ydFNpemUsIGNvbnN0IEZsb2F0U2l6ZSYgY29udGVudFNpemUs
IGNvbnN0IEZsb2F0UG9pbnQmIGluaXRpYWxPZmZzZXQsIGNvbnN0IEZsb2F0UG9pbnQmIHRhcmdl
dE9mZnNldCwgY29uc3QgRmxvYXRTaXplJiBpbml0aWFsRGVsdGEsIGNvbnN0IEZsb2F0U2l6ZSYg
aW5pdGlhbFZlbG9jaXR5KQorc3RkOjp1bmlxdWVfcHRyPFNjcm9sbGluZ01vbWVudHVtQ2FsY3Vs
YXRvcj4gU2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yOjpjcmVhdGUoY29uc3QgRmxvYXRTaXpl
JiB2aWV3cG9ydFNpemUsIGNvbnN0IEZsb2F0U2l6ZSYgY29udGVudFNpemUsIGNvbnN0IEZsb2F0
UG9pbnQmIGluaXRpYWxPZmZzZXQsIGNvbnN0IEZsb2F0U2l6ZSYgaW5pdGlhbERlbHRhLCBjb25z
dCBGbG9hdFNpemUmIGluaXRpYWxWZWxvY2l0eSkKK3sKKyAgICByZXR1cm4gc3RkOjptYWtlX3Vu
aXF1ZTxCYXNpY1Njcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvcj4odmlld3BvcnRTaXplLCBjb250
ZW50U2l6ZSwgaW5pdGlhbE9mZnNldCwgaW5pdGlhbERlbHRhLCBpbml0aWFsVmVsb2NpdHkpOwor
fQorCit2b2lkIFNjcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvcjo6c2V0UGxhdGZvcm1Nb21lbnR1
bVNjcm9sbGluZ1ByZWRpY3Rpb25FbmFibGVkKGJvb2wpCiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFr
ZV91bmlxdWU8QmFzaWNTY3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3I+KHZpZXdwb3J0U2l6ZSwg
Y29udGVudFNpemUsIGluaXRpYWxPZmZzZXQsIHRhcmdldE9mZnNldCwgaW5pdGlhbERlbHRhLCBp
bml0aWFsVmVsb2NpdHkpOwogfQogCiAjZW5kaWYKIAotQmFzaWNTY3JvbGxpbmdNb21lbnR1bUNh
bGN1bGF0b3I6OkJhc2ljU2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yKGNvbnN0IEZsb2F0U2l6
ZSYgdmlld3BvcnRTaXplLCBjb25zdCBGbG9hdFNpemUmIGNvbnRlbnRTaXplLCBjb25zdCBGbG9h
dFBvaW50JiBpbml0aWFsT2Zmc2V0LCBjb25zdCBGbG9hdFBvaW50JiB0YXJnZXRPZmZzZXQsIGNv
bnN0IEZsb2F0U2l6ZSYgaW5pdGlhbERlbHRhLCBjb25zdCBGbG9hdFNpemUmIGluaXRpYWxWZWxv
Y2l0eSkKLSAgICA6IFNjcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvcih2aWV3cG9ydFNpemUsIGNv
bnRlbnRTaXplLCBpbml0aWFsT2Zmc2V0LCB0YXJnZXRPZmZzZXQsIGluaXRpYWxEZWx0YSwgaW5p
dGlhbFZlbG9jaXR5KQorQmFzaWNTY3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3I6OkJhc2ljU2Ny
b2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yKGNvbnN0IEZsb2F0U2l6ZSYgdmlld3BvcnRTaXplLCBj
b25zdCBGbG9hdFNpemUmIGNvbnRlbnRTaXplLCBjb25zdCBGbG9hdFBvaW50JiBpbml0aWFsT2Zm
c2V0LCBjb25zdCBGbG9hdFNpemUmIGluaXRpYWxEZWx0YSwgY29uc3QgRmxvYXRTaXplJiBpbml0
aWFsVmVsb2NpdHkpCisgICAgOiBTY3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3Iodmlld3BvcnRT
aXplLCBjb250ZW50U2l6ZSwgaW5pdGlhbE9mZnNldCwgaW5pdGlhbERlbHRhLCBpbml0aWFsVmVs
b2NpdHkpCiB7CiB9CiAKLUZsb2F0U2l6ZSBCYXNpY1Njcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRv
cjo6bGluZWFybHlJbnRlcnBvbGF0ZWRPZmZzZXRBdFByb2dyZXNzKGZsb2F0IHByb2dyZXNzKSBj
b25zdAorRmxvYXRTaXplIEJhc2ljU2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yOjpsaW5lYXJs
eUludGVycG9sYXRlZE9mZnNldEF0UHJvZ3Jlc3MoZmxvYXQgcHJvZ3Jlc3MpCiB7Ci0gICAgcmV0
dXJuIG1faW5pdGlhbFNjcm9sbE9mZnNldCArIHByb2dyZXNzICogKG1fdGFyZ2V0U2Nyb2xsT2Zm
c2V0IC0gbV9pbml0aWFsU2Nyb2xsT2Zmc2V0KTsKKyAgICByZXR1cm4gbV9pbml0aWFsU2Nyb2xs
T2Zmc2V0ICsgcHJvZ3Jlc3MgKiAocmV0YXJnZXRlZFNjcm9sbE9mZnNldCgpIC0gbV9pbml0aWFs
U2Nyb2xsT2Zmc2V0KTsKIH0KIAogRmxvYXRTaXplIEJhc2ljU2Nyb2xsaW5nTW9tZW50dW1DYWxj
dWxhdG9yOjpjdWJpY2FsbHlJbnRlcnBvbGF0ZWRPZmZzZXRBdFByb2dyZXNzKGZsb2F0IHByb2dy
ZXNzKSBjb25zdApAQCAtMTIwLDcgKzE0NCw3IEBAIHZvaWQgQmFzaWNTY3JvbGxpbmdNb21lbnR1
bUNhbGN1bGF0b3I6OmluaXRpYWxpemVJbnRlcnBvbGF0aW9uQ29lZmZpY2llbnRzSWZOZWNlCiAg
ICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBGbG9hdFNpemUgc3RhcnRUb0VuZFZlY3RvciA9
IG1fdGFyZ2V0U2Nyb2xsT2Zmc2V0IC0gbV9pbml0aWFsU2Nyb2xsT2Zmc2V0OworICAgIEZsb2F0
U2l6ZSBzdGFydFRvRW5kVmVjdG9yID0gcmV0YXJnZXRlZFNjcm9sbE9mZnNldCgpIC0gbV9pbml0
aWFsU2Nyb2xsT2Zmc2V0OwogICAgIGZsb2F0IHN0YXJ0VG9FbmREaXN0YW5jZSA9IHN0YXJ0VG9F
bmRWZWN0b3IuZGlhZ29uYWxMZW5ndGgoKTsKICAgICBpZiAoIXN0YXJ0VG9FbmREaXN0YW5jZSkg
ewogICAgICAgICAvLyBUaGUgc3RhcnQgYW5kIGVuZCBwb3NpdGlvbnMgYXJlIHRoZSBzYW1lLCBz
byB3ZSBzaG91bGRuJ3QgdHJ5IHRvIGludGVycG9sYXRlIGEgcGF0aC4KQEAgLTE0MCw3ICsxNjQs
NyBAQCB2b2lkIEJhc2ljU2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yOjppbml0aWFsaXplSW50
ZXJwb2xhdGlvbkNvZWZmaWNpZW50c0lmTmVjZQogICAgIG1fc25hcEFuaW1hdGlvbkN1cnZlQ29l
ZmZpY2llbnRzWzBdID0gbV9pbml0aWFsU2Nyb2xsT2Zmc2V0OwogICAgIG1fc25hcEFuaW1hdGlv
bkN1cnZlQ29lZmZpY2llbnRzWzFdID0gMyAqIChjb250cm9sVmVjdG9yMSAtIG1faW5pdGlhbFNj
cm9sbE9mZnNldCk7CiAgICAgbV9zbmFwQW5pbWF0aW9uQ3VydmVDb2VmZmljaWVudHNbMl0gPSAz
ICogKG1faW5pdGlhbFNjcm9sbE9mZnNldCAtIDIgKiBjb250cm9sVmVjdG9yMSArIGNvbnRyb2xW
ZWN0b3IyKTsKLSAgICBtX3NuYXBBbmltYXRpb25DdXJ2ZUNvZWZmaWNpZW50c1szXSA9IDMgKiAo
Y29udHJvbFZlY3RvcjEgLSBjb250cm9sVmVjdG9yMikgLSBtX2luaXRpYWxTY3JvbGxPZmZzZXQg
KyBtX3RhcmdldFNjcm9sbE9mZnNldDsKKyAgICBtX3NuYXBBbmltYXRpb25DdXJ2ZUNvZWZmaWNp
ZW50c1szXSA9IDMgKiAoY29udHJvbFZlY3RvcjEgLSBjb250cm9sVmVjdG9yMikgLSBtX2luaXRp
YWxTY3JvbGxPZmZzZXQgKyByZXRhcmdldGVkU2Nyb2xsT2Zmc2V0KCk7CiAgICAgbV9mb3JjZUxp
bmVhckFuaW1hdGlvbkN1cnZlID0gZmFsc2U7CiB9CiAKQEAgLTE3OSwxMCArMjAzLDEwIEBAIHZv
aWQgQmFzaWNTY3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3I6OmluaXRpYWxpemVTbmFwUHJvZ3Jl
c3NDdXJ2ZSgpCiAgICAgc3RhdGljIGNvbnN0IGZsb2F0IG1pblNjcm9sbFNuYXBJbml0aWFsUHJv
Z3Jlc3MgPSAwLjE7CiAgICAgc3RhdGljIGNvbnN0IGZsb2F0IG1heFNjcm9sbFNuYXBJbml0aWFs
UHJvZ3Jlc3MgPSAwLjU7CiAKLSAgICBGbG9hdFNpemUgYWxpZ25tZW50VmVjdG9yID0gbV9pbml0
aWFsRGVsdGEgKiAobV90YXJnZXRTY3JvbGxPZmZzZXQgLSBtX2luaXRpYWxTY3JvbGxPZmZzZXQp
OworICAgIEZsb2F0U2l6ZSBhbGlnbm1lbnRWZWN0b3IgPSBtX2luaXRpYWxEZWx0YSAqIChyZXRh
cmdldGVkU2Nyb2xsT2Zmc2V0KCkgLSBtX2luaXRpYWxTY3JvbGxPZmZzZXQpOwogICAgIGZsb2F0
IGluaXRpYWxQcm9ncmVzczsKICAgICBpZiAoYWxpZ25tZW50VmVjdG9yLndpZHRoKCkgKyBhbGln
bm1lbnRWZWN0b3IuaGVpZ2h0KCkgPiAwKQotICAgICAgICBpbml0aWFsUHJvZ3Jlc3MgPSBjbGFt
cFRvKG1faW5pdGlhbERlbHRhLmRpYWdvbmFsTGVuZ3RoKCkgLyAobV90YXJnZXRTY3JvbGxPZmZz
ZXQgLSBtX2luaXRpYWxTY3JvbGxPZmZzZXQpLmRpYWdvbmFsTGVuZ3RoKCksIG1pblNjcm9sbFNu
YXBJbml0aWFsUHJvZ3Jlc3MsIG1heFNjcm9sbFNuYXBJbml0aWFsUHJvZ3Jlc3MpOworICAgICAg
ICBpbml0aWFsUHJvZ3Jlc3MgPSBjbGFtcFRvKG1faW5pdGlhbERlbHRhLmRpYWdvbmFsTGVuZ3Ro
KCkgLyAocmV0YXJnZXRlZFNjcm9sbE9mZnNldCgpIC0gbV9pbml0aWFsU2Nyb2xsT2Zmc2V0KS5k
aWFnb25hbExlbmd0aCgpLCBtaW5TY3JvbGxTbmFwSW5pdGlhbFByb2dyZXNzLCBtYXhTY3JvbGxT
bmFwSW5pdGlhbFByb2dyZXNzKTsKICAgICBlbHNlCiAgICAgICAgIGluaXRpYWxQcm9ncmVzcyA9
IG1pblNjcm9sbFNuYXBJbml0aWFsUHJvZ3Jlc3M7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvci5oIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yLmgKaW5k
ZXggY2VkMGYyYTFmNzU4ZDE4YWU5NmVkZmI3ZjYwZmU1MDJiMDE2ZWRiZi4uYTgyYWZhYTY2MWY3
NzFkZDhkMzIzNzAwZjhjYThiZGI4ZDVlMmMzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yLmgKQEAg
LTMwLDYgKzMwLDcgQEAKICNpbmNsdWRlICJBeGlzU2Nyb2xsU25hcE9mZnNldHMuaCIKICNpbmNs
dWRlICJQbGF0Zm9ybVdoZWVsRXZlbnQuaCIKICNpbmNsdWRlICJTY3JvbGxUeXBlcy5oIgorI2lu
Y2x1ZGUgPHd0Zi9PcHRpb25hbC5oPgogI2luY2x1ZGUgPHd0Zi9TZWNvbmRzLmg+CiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKQEAgLTM5LDI1ICs0MCwzMyBAQCBjbGFzcyBGbG9hdFNpemU7CiAKIGNs
YXNzIFNjcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvciB7CiBwdWJsaWM6Ci0gICAgU2Nyb2xsaW5n
TW9tZW50dW1DYWxjdWxhdG9yKGNvbnN0IEZsb2F0U2l6ZSYgdmlld3BvcnRTaXplLCBjb25zdCBG
bG9hdFNpemUmIGNvbnRlbnRTaXplLCBjb25zdCBGbG9hdFBvaW50JiBpbml0aWFsT2Zmc2V0LCBj
b25zdCBGbG9hdFBvaW50JiB0YXJnZXRPZmZzZXQsIGNvbnN0IEZsb2F0U2l6ZSYgaW5pdGlhbERl
bHRhLCBjb25zdCBGbG9hdFNpemUmIGluaXRpYWxWZWxvY2l0eSk7Ci0gICAgc3RhdGljIHN0ZDo6
dW5pcXVlX3B0cjxTY3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3I+IGNyZWF0ZShjb25zdCBGbG9h
dFNpemUmIHZpZXdwb3J0U2l6ZSwgY29uc3QgRmxvYXRTaXplJiBjb250ZW50U2l6ZSwgY29uc3Qg
RmxvYXRQb2ludCYgaW5pdGlhbE9mZnNldCwgY29uc3QgRmxvYXRQb2ludCYgdGFyZ2V0T2Zmc2V0
LCBjb25zdCBGbG9hdFNpemUmIGluaXRpYWxEZWx0YSwgY29uc3QgRmxvYXRTaXplJiBpbml0aWFs
VmVsb2NpdHkpOworICAgIFNjcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvcihjb25zdCBGbG9hdFNp
emUmIHZpZXdwb3J0U2l6ZSwgY29uc3QgRmxvYXRTaXplJiBjb250ZW50U2l6ZSwgY29uc3QgRmxv
YXRQb2ludCYgaW5pdGlhbE9mZnNldCwgY29uc3QgRmxvYXRTaXplJiBpbml0aWFsRGVsdGEsIGNv
bnN0IEZsb2F0U2l6ZSYgaW5pdGlhbFZlbG9jaXR5KTsKKyAgICBzdGF0aWMgc3RkOjp1bmlxdWVf
cHRyPFNjcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvcj4gY3JlYXRlKGNvbnN0IEZsb2F0U2l6ZSYg
dmlld3BvcnRTaXplLCBjb25zdCBGbG9hdFNpemUmIGNvbnRlbnRTaXplLCBjb25zdCBGbG9hdFBv
aW50JiBpbml0aWFsT2Zmc2V0LCBjb25zdCBGbG9hdFNpemUmIGluaXRpYWxEZWx0YSwgY29uc3Qg
RmxvYXRTaXplJiBpbml0aWFsVmVsb2NpdHkpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyB2
b2lkIHNldFBsYXRmb3JtTW9tZW50dW1TY3JvbGxpbmdQcmVkaWN0aW9uRW5hYmxlZChib29sKTsK
ICAgICB2aXJ0dWFsIH5TY3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3IoKSB7IH0KIAogICAgIHZp
cnR1YWwgRmxvYXRQb2ludCBzY3JvbGxPZmZzZXRBZnRlckVsYXBzZWRUaW1lKFNlY29uZHMpID0g
MDsKICAgICB2aXJ0dWFsIFNlY29uZHMgYW5pbWF0aW9uRHVyYXRpb24oKSA9IDA7CisgICAgdmly
dHVhbCBGbG9hdFNpemUgcHJlZGljdGVkRGVzdGluYXRpb25PZmZzZXQoKTsKKyAgICB2b2lkIHNl
dFJldGFyZ2V0ZWRTY3JvbGxPZmZzZXQoY29uc3QgRmxvYXRTaXplJik7CiAKIHByb3RlY3RlZDoK
KyAgICBjb25zdCBGbG9hdFNpemUmIHJldGFyZ2V0ZWRTY3JvbGxPZmZzZXQoKSBjb25zdCB7IHJl
dHVybiBtX3JldGFyZ2V0ZWRTY3JvbGxPZmZzZXQudmFsdWUoKTsgfQorICAgIHZpcnR1YWwgdm9p
ZCByZXRhcmdldGVkU2Nyb2xsT2Zmc2V0RGlkQ2hhbmdlKCkgeyB9CisKICAgICBGbG9hdFNpemUg
bV9pbml0aWFsRGVsdGE7CiAgICAgRmxvYXRTaXplIG1faW5pdGlhbFZlbG9jaXR5OwogICAgIEZs
b2F0U2l6ZSBtX2luaXRpYWxTY3JvbGxPZmZzZXQ7Ci0gICAgRmxvYXRTaXplIG1fdGFyZ2V0U2Ny
b2xsT2Zmc2V0OwogICAgIEZsb2F0U2l6ZSBtX3ZpZXdwb3J0U2l6ZTsKICAgICBGbG9hdFNpemUg
bV9jb250ZW50U2l6ZTsKKworcHJpdmF0ZToKKyAgICBzdGQ6Om9wdGlvbmFsPEZsb2F0U2l6ZT4g
bV9yZXRhcmdldGVkU2Nyb2xsT2Zmc2V0OwogfTsKIAogY2xhc3MgQmFzaWNTY3JvbGxpbmdNb21l
bnR1bUNhbGN1bGF0b3IgZmluYWwgOiBwdWJsaWMgU2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9y
IHsKIHB1YmxpYzoKLSAgICBCYXNpY1Njcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvcihjb25zdCBG
bG9hdFNpemUmIHZpZXdwb3J0U2l6ZSwgY29uc3QgRmxvYXRTaXplJiBjb250ZW50U2l6ZSwgY29u
c3QgRmxvYXRQb2ludCYgaW5pdGlhbE9mZnNldCwgY29uc3QgRmxvYXRQb2ludCYgdGFyZ2V0T2Zm
c2V0LCBjb25zdCBGbG9hdFNpemUmIGluaXRpYWxEZWx0YSwgY29uc3QgRmxvYXRTaXplJiBpbml0
aWFsVmVsb2NpdHkpOworICAgIEJhc2ljU2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yKGNvbnN0
IEZsb2F0U2l6ZSYgdmlld3BvcnRTaXplLCBjb25zdCBGbG9hdFNpemUmIGNvbnRlbnRTaXplLCBj
b25zdCBGbG9hdFBvaW50JiBpbml0aWFsT2Zmc2V0LCBjb25zdCBGbG9hdFNpemUmIGluaXRpYWxE
ZWx0YSwgY29uc3QgRmxvYXRTaXplJiBpbml0aWFsVmVsb2NpdHkpOwogCiBwcml2YXRlOgogICAg
IEZsb2F0UG9pbnQgc2Nyb2xsT2Zmc2V0QWZ0ZXJFbGFwc2VkVGltZShTZWNvbmRzKSBmaW5hbDsK
QEAgLTY1LDcgKzc0LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGluaXRpYWxpemVJbnRlcnBvbGF0
aW9uQ29lZmZpY2llbnRzSWZOZWNlc3NhcnkoKTsKICAgICB2b2lkIGluaXRpYWxpemVTbmFwUHJv
Z3Jlc3NDdXJ2ZSgpOwogICAgIGZsb2F0IGFuaW1hdGlvblByb2dyZXNzQWZ0ZXJFbGFwc2VkVGlt
ZShTZWNvbmRzKSBjb25zdDsKLSAgICBGbG9hdFNpemUgbGluZWFybHlJbnRlcnBvbGF0ZWRPZmZz
ZXRBdFByb2dyZXNzKGZsb2F0IHByb2dyZXNzKSBjb25zdDsKKyAgICBGbG9hdFNpemUgbGluZWFy
bHlJbnRlcnBvbGF0ZWRPZmZzZXRBdFByb2dyZXNzKGZsb2F0IHByb2dyZXNzKTsKICAgICBGbG9h
dFNpemUgY3ViaWNhbGx5SW50ZXJwb2xhdGVkT2Zmc2V0QXRQcm9ncmVzcyhmbG9hdCBwcm9ncmVz
cykgY29uc3Q7CiAKICAgICBmbG9hdCBtX3NuYXBBbmltYXRpb25DdXJ2ZU1hZ25pdHVkZSB7IDAg
fTsKQEAgLTczLDYgKzgyLDcgQEAgcHJpdmF0ZToKICAgICBGbG9hdFNpemUgbV9zbmFwQW5pbWF0
aW9uQ3VydmVDb2VmZmljaWVudHNbNF0geyB9OwogICAgIGJvb2wgbV9mb3JjZUxpbmVhckFuaW1h
dGlvbkN1cnZlIHsgZmFsc2UgfTsKICAgICBib29sIG1fbW9tZW50dW1DYWxjdWxhdG9yUmVxdWly
ZXNJbml0aWFsaXphdGlvbiB7IHRydWUgfTsKKyAgICBzdGQ6Om9wdGlvbmFsPEZsb2F0U2l6ZT4g
bV9wcmVkaWN0ZWREZXN0aW5hdGlvbk9mZnNldDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1N0
YXRlU2Nyb2xsaW5nTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3Jv
bGxpbmdTdGF0ZVNjcm9sbGluZ05vZGUuY3BwCmluZGV4IGE1Y2ZhMTJjY2VjNjgyZTNiOTJiNmQ5
ZmY4MWEzMDlhMDE3MmVlNTUuLmIzZGUyNjMyNDRjYThjMjE4MjAwMmJkNjJkNDFmNWMzOGQ4YTg4
MzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1N0
YXRlU2Nyb2xsaW5nTm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcv
U2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlLmNwcApAQCAtNDcsOCArNDcsNyBAQCBTY3JvbGxp
bmdTdGF0ZVNjcm9sbGluZ05vZGU6OlNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZShjb25zdCBT
Y3JvbGxpbmdTdGF0ZVNjcgogICAgICwgbV9yZXF1ZXN0ZWRTY3JvbGxQb3NpdGlvbihzdGF0ZU5v
ZGUucmVxdWVzdGVkU2Nyb2xsUG9zaXRpb24oKSkKICAgICAsIG1fc2Nyb2xsT3JpZ2luKHN0YXRl
Tm9kZS5zY3JvbGxPcmlnaW4oKSkKICNpZiBFTkFCTEUoQ1NTX1NDUk9MTF9TTkFQKQotICAgICwg
bV9ob3Jpem9udGFsU25hcE9mZnNldHMoc3RhdGVOb2RlLmhvcml6b250YWxTbmFwT2Zmc2V0cygp
KQotICAgICwgbV92ZXJ0aWNhbFNuYXBPZmZzZXRzKHN0YXRlTm9kZS52ZXJ0aWNhbFNuYXBPZmZz
ZXRzKCkpCisgICAgLCBtX3NuYXBPZmZzZXRzSW5mbyhzdGF0ZU5vZGUubV9zbmFwT2Zmc2V0c0lu
Zm8pCiAjZW5kaWYKICAgICAsIG1fc2Nyb2xsYWJsZUFyZWFQYXJhbWV0ZXJzKHN0YXRlTm9kZS5z
Y3JvbGxhYmxlQXJlYVBhcmFtZXRlcnMoKSkKICAgICAsIG1fcmVxdWVzdGVkU2Nyb2xsUG9zaXRp
b25SZXByZXNlbnRzUHJvZ3JhbW1hdGljU2Nyb2xsKHN0YXRlTm9kZS5yZXF1ZXN0ZWRTY3JvbGxQ
b3NpdGlvblJlcHJlc2VudHNQcm9ncmFtbWF0aWNTY3JvbGwoKSkKQEAgLTEwOCwyMiArMTA3LDQw
IEBAIHZvaWQgU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlOjpzZXRTY3JvbGxPcmlnaW4oY29u
c3QgSW50UG9pbnQmIHNjcm9sbE9yaWdpbikKICNpZiBFTkFCTEUoQ1NTX1NDUk9MTF9TTkFQKQog
dm9pZCBTY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGU6OnNldEhvcml6b250YWxTbmFwT2Zmc2V0
cyhjb25zdCBWZWN0b3I8ZmxvYXQ+JiBzbmFwT2Zmc2V0cykKIHsKLSAgICBpZiAobV9ob3Jpem9u
dGFsU25hcE9mZnNldHMgPT0gc25hcE9mZnNldHMpCisgICAgaWYgKG1fc25hcE9mZnNldHNJbmZv
Lmhvcml6b250YWxTbmFwT2Zmc2V0cyA9PSBzbmFwT2Zmc2V0cykKICAgICAgICAgcmV0dXJuOwog
Ci0gICAgbV9ob3Jpem9udGFsU25hcE9mZnNldHMgPSBzbmFwT2Zmc2V0czsKKyAgICBtX3NuYXBP
ZmZzZXRzSW5mby5ob3Jpem9udGFsU25hcE9mZnNldHMgPSBzbmFwT2Zmc2V0czsKICAgICBzZXRQ
cm9wZXJ0eUNoYW5nZWQoSG9yaXpvbnRhbFNuYXBPZmZzZXRzKTsKIH0KIAogdm9pZCBTY3JvbGxp
bmdTdGF0ZVNjcm9sbGluZ05vZGU6OnNldFZlcnRpY2FsU25hcE9mZnNldHMoY29uc3QgVmVjdG9y
PGZsb2F0PiYgc25hcE9mZnNldHMpCiB7Ci0gICAgaWYgKG1fdmVydGljYWxTbmFwT2Zmc2V0cyA9
PSBzbmFwT2Zmc2V0cykKKyAgICBpZiAobV9zbmFwT2Zmc2V0c0luZm8udmVydGljYWxTbmFwT2Zm
c2V0cyA9PSBzbmFwT2Zmc2V0cykKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV92ZXJ0aWNhbFNu
YXBPZmZzZXRzID0gc25hcE9mZnNldHM7CisgICAgbV9zbmFwT2Zmc2V0c0luZm8udmVydGljYWxT
bmFwT2Zmc2V0cyA9IHNuYXBPZmZzZXRzOwogICAgIHNldFByb3BlcnR5Q2hhbmdlZChWZXJ0aWNh
bFNuYXBPZmZzZXRzKTsKIH0KIAordm9pZCBTY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGU6OnNl
dEhvcml6b250YWxTbmFwT2Zmc2V0UmFuZ2VzKGNvbnN0IFZlY3RvcjxTY3JvbGxPZmZzZXRSYW5n
ZTxmbG9hdD4+JiBzY3JvbGxPZmZzZXRSYW5nZXMpCit7CisgICAgaWYgKG1fc25hcE9mZnNldHNJ
bmZvLmhvcml6b250YWxTbmFwT2Zmc2V0UmFuZ2VzID09IHNjcm9sbE9mZnNldFJhbmdlcykKKyAg
ICAgICAgcmV0dXJuOworCisgICAgbV9zbmFwT2Zmc2V0c0luZm8uaG9yaXpvbnRhbFNuYXBPZmZz
ZXRSYW5nZXMgPSBzY3JvbGxPZmZzZXRSYW5nZXM7CisgICAgc2V0UHJvcGVydHlDaGFuZ2VkKEhv
cml6b250YWxTbmFwT2Zmc2V0UmFuZ2VzKTsKK30KKwordm9pZCBTY3JvbGxpbmdTdGF0ZVNjcm9s
bGluZ05vZGU6OnNldFZlcnRpY2FsU25hcE9mZnNldFJhbmdlcyhjb25zdCBWZWN0b3I8U2Nyb2xs
T2Zmc2V0UmFuZ2U8ZmxvYXQ+PiYgc2Nyb2xsT2Zmc2V0UmFuZ2VzKQoreworICAgIGlmIChtX3Nu
YXBPZmZzZXRzSW5mby52ZXJ0aWNhbFNuYXBPZmZzZXRSYW5nZXMgPT0gc2Nyb2xsT2Zmc2V0UmFu
Z2VzKQorICAgICAgICByZXR1cm47CisKKyAgICBtX3NuYXBPZmZzZXRzSW5mby52ZXJ0aWNhbFNu
YXBPZmZzZXRSYW5nZXMgPSBzY3JvbGxPZmZzZXRSYW5nZXM7CisgICAgc2V0UHJvcGVydHlDaGFu
Z2VkKFZlcnRpY2FsU25hcE9mZnNldFJhbmdlcyk7Cit9CisKIHZvaWQgU2Nyb2xsaW5nU3RhdGVT
Y3JvbGxpbmdOb2RlOjpzZXRDdXJyZW50SG9yaXpvbnRhbFNuYXBQb2ludEluZGV4KHVuc2lnbmVk
IGluZGV4KQogewogICAgIGlmIChtX2N1cnJlbnRIb3Jpem9udGFsU25hcFBvaW50SW5kZXggPT0g
aW5kZXgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxp
bmdTdGF0ZVNjcm9sbGluZ05vZGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Nj
cm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZS5oCmluZGV4IGU4MjMxMTYxNzQ0MTljNGU5MTlmZmQz
ZTNmYjNmZDkzZmUxNTQ1MmMuLjYyOGMzNGY3ZjhmNjU1Y2Q3ZmVkMDE5NDY1MDA0YzI4YzQyMmI0
N2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1N0
YXRlU2Nyb2xsaW5nTm9kZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Nj
cm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZS5oCkBAIC0yNyw2ICsyNyw3IEBACiAKICNpZiBFTkFC
TEUoQVNZTkNfU0NST0xMSU5HKSB8fCBVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1MpCiAKKyNpbmNs
dWRlICJTY3JvbGxTbmFwT2Zmc2V0c0luZm8uaCIKICNpbmNsdWRlICJTY3JvbGxUeXBlcy5oIgog
I2luY2x1ZGUgIlNjcm9sbGluZ0Nvb3JkaW5hdG9yLmgiCiAjaW5jbHVkZSAiU2Nyb2xsaW5nU3Rh
dGVOb2RlLmgiCkBAIC00OSw2ICs1MCw4IEBAIHB1YmxpYzoKICNpZiBFTkFCTEUoQ1NTX1NDUk9M
TF9TTkFQKQogICAgICAgICBIb3Jpem9udGFsU25hcE9mZnNldHMsCiAgICAgICAgIFZlcnRpY2Fs
U25hcE9mZnNldHMsCisgICAgICAgIEhvcml6b250YWxTbmFwT2Zmc2V0UmFuZ2VzLAorICAgICAg
ICBWZXJ0aWNhbFNuYXBPZmZzZXRSYW5nZXMsCiAgICAgICAgIEN1cnJlbnRIb3Jpem9udGFsU25h
cE9mZnNldEluZGV4LAogICAgICAgICBDdXJyZW50VmVydGljYWxTbmFwT2Zmc2V0SW5kZXgsCiAj
ZW5kaWYKQEAgLTcxLDEyICs3NCwxOCBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9p
ZCBzZXRTY3JvbGxPcmlnaW4oY29uc3QgSW50UG9pbnQmKTsKIAogI2lmIEVOQUJMRShDU1NfU0NS
T0xMX1NOQVApCi0gICAgY29uc3QgVmVjdG9yPGZsb2F0PiYgaG9yaXpvbnRhbFNuYXBPZmZzZXRz
KCkgY29uc3QgeyByZXR1cm4gbV9ob3Jpem9udGFsU25hcE9mZnNldHM7IH0KKyAgICBjb25zdCBW
ZWN0b3I8ZmxvYXQ+JiBob3Jpem9udGFsU25hcE9mZnNldHMoKSBjb25zdCB7IHJldHVybiBtX3Nu
YXBPZmZzZXRzSW5mby5ob3Jpem9udGFsU25hcE9mZnNldHM7IH0KICAgICBXRUJDT1JFX0VYUE9S
VCB2b2lkIHNldEhvcml6b250YWxTbmFwT2Zmc2V0cyhjb25zdCBWZWN0b3I8ZmxvYXQ+Jik7CiAK
LSAgICBjb25zdCBWZWN0b3I8ZmxvYXQ+JiB2ZXJ0aWNhbFNuYXBPZmZzZXRzKCkgY29uc3QgeyBy
ZXR1cm4gbV92ZXJ0aWNhbFNuYXBPZmZzZXRzOyB9CisgICAgY29uc3QgVmVjdG9yPGZsb2F0PiYg
dmVydGljYWxTbmFwT2Zmc2V0cygpIGNvbnN0IHsgcmV0dXJuIG1fc25hcE9mZnNldHNJbmZvLnZl
cnRpY2FsU25hcE9mZnNldHM7IH0KICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldFZlcnRpY2Fs
U25hcE9mZnNldHMoY29uc3QgVmVjdG9yPGZsb2F0PiYpOwogCisgICAgY29uc3QgVmVjdG9yPFNj
cm9sbE9mZnNldFJhbmdlPGZsb2F0Pj4mIGhvcml6b250YWxTbmFwT2Zmc2V0UmFuZ2VzKCkgY29u
c3QgeyByZXR1cm4gbV9zbmFwT2Zmc2V0c0luZm8uaG9yaXpvbnRhbFNuYXBPZmZzZXRSYW5nZXM7
IH0KKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldEhvcml6b250YWxTbmFwT2Zmc2V0UmFuZ2Vz
KGNvbnN0IFZlY3RvcjxTY3JvbGxPZmZzZXRSYW5nZTxmbG9hdD4+Jik7CisKKyAgICBjb25zdCBW
ZWN0b3I8U2Nyb2xsT2Zmc2V0UmFuZ2U8ZmxvYXQ+PiYgdmVydGljYWxTbmFwT2Zmc2V0UmFuZ2Vz
KCkgY29uc3QgeyByZXR1cm4gbV9zbmFwT2Zmc2V0c0luZm8udmVydGljYWxTbmFwT2Zmc2V0UmFu
Z2VzOyB9CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRWZXJ0aWNhbFNuYXBPZmZzZXRSYW5n
ZXMoY29uc3QgVmVjdG9yPFNjcm9sbE9mZnNldFJhbmdlPGZsb2F0Pj4mKTsKKwogICAgIHVuc2ln
bmVkIGN1cnJlbnRIb3Jpem9udGFsU25hcFBvaW50SW5kZXgoKSBjb25zdCB7IHJldHVybiBtX2N1
cnJlbnRIb3Jpem9udGFsU25hcFBvaW50SW5kZXg7IH0KICAgICBXRUJDT1JFX0VYUE9SVCB2b2lk
IHNldEN1cnJlbnRIb3Jpem9udGFsU25hcFBvaW50SW5kZXgodW5zaWduZWQpOwogCkBAIC0xMDgs
OCArMTE3LDcgQEAgcHJpdmF0ZToKICAgICBGbG9hdFBvaW50IG1fcmVxdWVzdGVkU2Nyb2xsUG9z
aXRpb247CiAgICAgSW50UG9pbnQgbV9zY3JvbGxPcmlnaW47CiAjaWYgRU5BQkxFKENTU19TQ1JP
TExfU05BUCkKLSAgICBWZWN0b3I8ZmxvYXQ+IG1faG9yaXpvbnRhbFNuYXBPZmZzZXRzOwotICAg
IFZlY3RvcjxmbG9hdD4gbV92ZXJ0aWNhbFNuYXBPZmZzZXRzOworICAgIFNjcm9sbFNuYXBPZmZz
ZXRzSW5mbzxmbG9hdD4gbV9zbmFwT2Zmc2V0c0luZm87CiAgICAgdW5zaWduZWQgbV9jdXJyZW50
SG9yaXpvbnRhbFNuYXBQb2ludEluZGV4IHsgMCB9OwogICAgIHVuc2lnbmVkIG1fY3VycmVudFZl
cnRpY2FsU25hcFBvaW50SW5kZXggeyAwIH07CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlLmNw
cAppbmRleCA4NDAyOWZiZGY4NWY2NTgxZDBmY2QxNTM4ZDljN2JmZWVjY2I4OGQ4Li4xOTc1NGY1
YzI1MzJhODNlMTEyYWQyOTE2MWFjOTRkMGU1ZGUyNTBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGUu
Y3BwCkBAIC03MCwxMCArNzAsMTYgQEAgdm9pZCBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZTo6
Y29tbWl0U3RhdGVCZWZvcmVDaGlsZHJlbihjb25zdCBTY3JvbGxpbmdTdGF0ZU4KIAogI2lmIEVO
QUJMRShDU1NfU0NST0xMX1NOQVApCiAgICAgaWYgKHN0YXRlLmhhc0NoYW5nZWRQcm9wZXJ0eShT
Y3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGU6Okhvcml6b250YWxTbmFwT2Zmc2V0cykpCi0gICAg
ICAgIG1faG9yaXpvbnRhbFNuYXBPZmZzZXRzID0gc3RhdGUuaG9yaXpvbnRhbFNuYXBPZmZzZXRz
KCk7CisgICAgICAgIG1fc25hcE9mZnNldHNJbmZvLmhvcml6b250YWxTbmFwT2Zmc2V0cyA9IHN0
YXRlLmhvcml6b250YWxTbmFwT2Zmc2V0cygpOwogCiAgICAgaWYgKHN0YXRlLmhhc0NoYW5nZWRQ
cm9wZXJ0eShTY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGU6OlZlcnRpY2FsU25hcE9mZnNldHMp
KQotICAgICAgICBtX3ZlcnRpY2FsU25hcE9mZnNldHMgPSBzdGF0ZS52ZXJ0aWNhbFNuYXBPZmZz
ZXRzKCk7CisgICAgICAgIG1fc25hcE9mZnNldHNJbmZvLnZlcnRpY2FsU25hcE9mZnNldHMgPSBz
dGF0ZS52ZXJ0aWNhbFNuYXBPZmZzZXRzKCk7CisKKyAgICBpZiAoc3RhdGUuaGFzQ2hhbmdlZFBy
b3BlcnR5KFNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZTo6SG9yaXpvbnRhbFNuYXBPZmZzZXRS
YW5nZXMpKQorICAgICAgICBtX3NuYXBPZmZzZXRzSW5mby5ob3Jpem9udGFsU25hcE9mZnNldFJh
bmdlcyA9IHN0YXRlLmhvcml6b250YWxTbmFwT2Zmc2V0UmFuZ2VzKCk7CisKKyAgICBpZiAoc3Rh
dGUuaGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZTo6VmVydGlj
YWxTbmFwT2Zmc2V0UmFuZ2VzKSkKKyAgICAgICAgbV9zbmFwT2Zmc2V0c0luZm8udmVydGljYWxT
bmFwT2Zmc2V0UmFuZ2VzID0gc3RhdGUudmVydGljYWxTbmFwT2Zmc2V0UmFuZ2VzKCk7CiAKICAg
ICBpZiAoc3RhdGUuaGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9k
ZTo6Q3VycmVudEhvcml6b250YWxTbmFwT2Zmc2V0SW5kZXgpKQogICAgICAgICBtX2N1cnJlbnRI
b3Jpem9udGFsU25hcFBvaW50SW5kZXggPSBzdGF0ZS5jdXJyZW50SG9yaXpvbnRhbFNuYXBQb2lu
dEluZGV4KCk7CkBAIC0xMzksMTQgKzE0NSwxNCBAQCB2b2lkIFNjcm9sbGluZ1RyZWVTY3JvbGxp
bmdOb2RlOjpkdW1wUHJvcGVydGllcyhUZXh0U3RyZWFtJiB0cywgU2Nyb2xsaW5nU3RhdGVUcgog
ICAgICAgICB0cy5kdW1wUHJvcGVydHkoInNjcm9sbGFibGUgYXJlYSBzaXplIiwgbV9zY3JvbGxP
cmlnaW4pOwogCiAjaWYgRU5BQkxFKENTU19TQ1JPTExfU05BUCkKLSAgICBpZiAobV9ob3Jpem9u
dGFsU25hcE9mZnNldHMuc2l6ZSgpKQotICAgICAgICB0cy5kdW1wUHJvcGVydHkoImhvcml6b250
YWwgc25hcCBvZmZzZXRzIiwgbV9ob3Jpem9udGFsU25hcE9mZnNldHMpOworICAgIGlmIChtX3Nu
YXBPZmZzZXRzSW5mby5ob3Jpem9udGFsU25hcE9mZnNldHMuc2l6ZSgpKQorICAgICAgICB0cy5k
dW1wUHJvcGVydHkoImhvcml6b250YWwgc25hcCBvZmZzZXRzIiwgbV9zbmFwT2Zmc2V0c0luZm8u
aG9yaXpvbnRhbFNuYXBPZmZzZXRzKTsKIAotICAgIGlmIChtX3ZlcnRpY2FsU25hcE9mZnNldHMu
c2l6ZSgpKQotICAgICAgICB0cy5kdW1wUHJvcGVydHkoImhvcml6b250YWwgc25hcCBvZmZzZXRz
IiwgbV92ZXJ0aWNhbFNuYXBPZmZzZXRzKTsKKyAgICBpZiAobV9zbmFwT2Zmc2V0c0luZm8udmVy
dGljYWxTbmFwT2Zmc2V0cy5zaXplKCkpCisgICAgICAgIHRzLmR1bXBQcm9wZXJ0eSgiaG9yaXpv
bnRhbCBzbmFwIG9mZnNldHMiLCBtX3NuYXBPZmZzZXRzSW5mby52ZXJ0aWNhbFNuYXBPZmZzZXRz
KTsKIAogICAgIGlmIChtX2N1cnJlbnRIb3Jpem9udGFsU25hcFBvaW50SW5kZXgpCi0gICAgICAg
IHRzLmR1bXBQcm9wZXJ0eSgiY3VycmVudCBob3Jpem9udGFsIHNuYXAgcG9pbnQgaW5kZXgiLCBt
X3ZlcnRpY2FsU25hcE9mZnNldHMpOworICAgICAgICB0cy5kdW1wUHJvcGVydHkoImN1cnJlbnQg
aG9yaXpvbnRhbCBzbmFwIHBvaW50IGluZGV4IiwgbV9jdXJyZW50SG9yaXpvbnRhbFNuYXBQb2lu
dEluZGV4KTsKIAogICAgIGlmIChtX2N1cnJlbnRWZXJ0aWNhbFNuYXBQb2ludEluZGV4KQogICAg
ICAgICB0cy5kdW1wUHJvcGVydHkoImN1cnJlbnQgdmVydGljYWwgc25hcCBwb2ludCBpbmRleCIs
IG1fY3VycmVudFZlcnRpY2FsU25hcFBvaW50SW5kZXgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGUuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlLmgKaW5k
ZXggZmE4MzBiMjFlZDUxYTkyNDBjNjBmYzI2MTEzZDkzYTEwMjYxNmRkYy4uMzU5NGIxMDg2ZWNi
YTM3OGI1MTZiZDI4ZDU3YWJjNGIyMzBkZDcyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGUuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZS5oCkBAIC0y
OCw2ICsyOCw3IEBACiAjaWYgRU5BQkxFKEFTWU5DX1NDUk9MTElORykKIAogI2luY2x1ZGUgIklu
dFJlY3QuaCIKKyNpbmNsdWRlICJTY3JvbGxTbmFwT2Zmc2V0c0luZm8uaCIKICNpbmNsdWRlICJT
Y3JvbGxUeXBlcy5oIgogI2luY2x1ZGUgIlNjcm9sbGluZ0Nvb3JkaW5hdG9yLmgiCiAjaW5jbHVk
ZSAiU2Nyb2xsaW5nVHJlZU5vZGUuaCIKQEAgLTU2LDggKzU3LDEwIEBAIHB1YmxpYzoKICAgICB2
aXJ0dWFsIEZsb2F0UG9pbnQgc2Nyb2xsUG9zaXRpb24oKSBjb25zdCA9IDA7CiAKICNpZiBFTkFC
TEUoQ1NTX1NDUk9MTF9TTkFQKQotICAgIGNvbnN0IFZlY3RvcjxmbG9hdD4mIGhvcml6b250YWxT
bmFwT2Zmc2V0cygpIGNvbnN0IHsgcmV0dXJuIG1faG9yaXpvbnRhbFNuYXBPZmZzZXRzOyB9Ci0g
ICAgY29uc3QgVmVjdG9yPGZsb2F0PiYgdmVydGljYWxTbmFwT2Zmc2V0cygpIGNvbnN0IHsgcmV0
dXJuIG1fdmVydGljYWxTbmFwT2Zmc2V0czsgfQorICAgIGNvbnN0IFZlY3RvcjxmbG9hdD4mIGhv
cml6b250YWxTbmFwT2Zmc2V0cygpIGNvbnN0IHsgcmV0dXJuIG1fc25hcE9mZnNldHNJbmZvLmhv
cml6b250YWxTbmFwT2Zmc2V0czsgfQorICAgIGNvbnN0IFZlY3RvcjxmbG9hdD4mIHZlcnRpY2Fs
U25hcE9mZnNldHMoKSBjb25zdCB7IHJldHVybiBtX3NuYXBPZmZzZXRzSW5mby52ZXJ0aWNhbFNu
YXBPZmZzZXRzOyB9CisgICAgY29uc3QgVmVjdG9yPFNjcm9sbE9mZnNldFJhbmdlPGZsb2F0Pj4m
IGhvcml6b250YWxTbmFwT2Zmc2V0UmFuZ2VzKCkgY29uc3QgeyByZXR1cm4gbV9zbmFwT2Zmc2V0
c0luZm8uaG9yaXpvbnRhbFNuYXBPZmZzZXRSYW5nZXM7IH0KKyAgICBjb25zdCBWZWN0b3I8U2Ny
b2xsT2Zmc2V0UmFuZ2U8ZmxvYXQ+PiYgdmVydGljYWxTbmFwT2Zmc2V0UmFuZ2VzKCkgY29uc3Qg
eyByZXR1cm4gbV9zbmFwT2Zmc2V0c0luZm8udmVydGljYWxTbmFwT2Zmc2V0UmFuZ2VzOyB9CiAg
ICAgdW5zaWduZWQgY3VycmVudEhvcml6b250YWxTbmFwUG9pbnRJbmRleCgpIGNvbnN0IHsgcmV0
dXJuIG1fY3VycmVudEhvcml6b250YWxTbmFwUG9pbnRJbmRleDsgfQogICAgIHVuc2lnbmVkIGN1
cnJlbnRWZXJ0aWNhbFNuYXBQb2ludEluZGV4KCkgY29uc3QgeyByZXR1cm4gbV9jdXJyZW50VmVy
dGljYWxTbmFwUG9pbnRJbmRleDsgfQogICAgIHZvaWQgc2V0Q3VycmVudEhvcml6b250YWxTbmFw
UG9pbnRJbmRleCh1bnNpZ25lZCBpbmRleCkgeyBtX2N1cnJlbnRIb3Jpem9udGFsU25hcFBvaW50
SW5kZXggPSBpbmRleDsgfQpAQCAtMTAyLDggKzEwNSw3IEBAIHByaXZhdGU6CiAgICAgRmxvYXRQ
b2ludCBtX2xhc3RDb21taXR0ZWRTY3JvbGxQb3NpdGlvbjsKICAgICBJbnRQb2ludCBtX3Njcm9s
bE9yaWdpbjsKICNpZiBFTkFCTEUoQ1NTX1NDUk9MTF9TTkFQKQotICAgIFZlY3RvcjxmbG9hdD4g
bV9ob3Jpem9udGFsU25hcE9mZnNldHM7Ci0gICAgVmVjdG9yPGZsb2F0PiBtX3ZlcnRpY2FsU25h
cE9mZnNldHM7CisgICAgU2Nyb2xsU25hcE9mZnNldHNJbmZvPGZsb2F0PiBtX3NuYXBPZmZzZXRz
SW5mbzsKICAgICB1bnNpZ25lZCBtX2N1cnJlbnRIb3Jpem9udGFsU25hcFBvaW50SW5kZXggeyAw
IH07CiAgICAgdW5zaWduZWQgbV9jdXJyZW50VmVydGljYWxTbmFwUG9pbnRJbmRleCB7IDAgfTsK
ICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbWFjL1Nj
cm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvck1hYy5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3Jv
bGxpbmcvbWFjL1Njcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvck1hYy5oCmluZGV4IDQ1NmExMTNi
YTgwMzhiZmYzNTgxMDRmNzY5NWRiN2NhZWI1NDU3ZDEuLmM5MDUwM2M5ZTNiMDk4Y2E0NGY1OTBm
Y2JlMGNhMTRlNTQyNzAzODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xs
aW5nL21hYy9TY3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3JNYWMuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yTWFjLmgK
QEAgLTM2LDE1ICszNiwxOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFNjcm9sbGlu
Z01vbWVudHVtQ2FsY3VsYXRvck1hYyBmaW5hbCA6IHB1YmxpYyBTY3JvbGxpbmdNb21lbnR1bUNh
bGN1bGF0b3IgewogcHVibGljOgotICAgIFNjcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvck1hYyhj
b25zdCBGbG9hdFNpemUmIHZpZXdwb3J0U2l6ZSwgY29uc3QgRmxvYXRTaXplJiBjb250ZW50U2l6
ZSwgY29uc3QgRmxvYXRQb2ludCYgaW5pdGlhbE9mZnNldCwgY29uc3QgRmxvYXRQb2ludCYgdGFy
Z2V0T2Zmc2V0LCBjb25zdCBGbG9hdFNpemUmIGluaXRpYWxEZWx0YSwgY29uc3QgRmxvYXRTaXpl
JiBpbml0aWFsVmVsb2NpdHkpOworICAgIFNjcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvck1hYyhj
b25zdCBGbG9hdFNpemUmIHZpZXdwb3J0U2l6ZSwgY29uc3QgRmxvYXRTaXplJiBjb250ZW50U2l6
ZSwgY29uc3QgRmxvYXRQb2ludCYgaW5pdGlhbE9mZnNldCwgY29uc3QgRmxvYXRTaXplJiBpbml0
aWFsRGVsdGEsIGNvbnN0IEZsb2F0U2l6ZSYgaW5pdGlhbFZlbG9jaXR5KTsKIAogcHJpdmF0ZToK
ICAgICBGbG9hdFBvaW50IHNjcm9sbE9mZnNldEFmdGVyRWxhcHNlZFRpbWUoU2Vjb25kcykgZmlu
YWw7CiAgICAgU2Vjb25kcyBhbmltYXRpb25EdXJhdGlvbigpIGZpbmFsOworICAgIEZsb2F0U2l6
ZSBwcmVkaWN0ZWREZXN0aW5hdGlvbk9mZnNldCgpIGZpbmFsOworICAgIHZvaWQgcmV0YXJnZXRl
ZFNjcm9sbE9mZnNldERpZENoYW5nZSgpIGZpbmFsOwogICAgIF9OU1Njcm9sbGluZ01vbWVudHVt
Q2FsY3VsYXRvciAqZW5zdXJlUGxhdGZvcm1Nb21lbnR1bUNhbGN1bGF0b3IoKTsKKyAgICBib29s
IHJlcXVpcmVzTW9tZW50dW1TY3JvbGxpbmcoKTsKIAogICAgIFJldGFpblB0cjxfTlNTY3JvbGxp
bmdNb21lbnR1bUNhbGN1bGF0b3I+IG1fcGxhdGZvcm1Nb21lbnR1bUNhbGN1bGF0b3I7Ci0gICAg
Ym9vbCBtX3JlcXVpcmVzTW9tZW50dW1TY3JvbGxpbmcgeyB0cnVlIH07CisgICAgc3RkOjpvcHRp
b25hbDxib29sPiBtX3JlcXVpcmVzTW9tZW50dW1TY3JvbGxpbmc7CisgICAgRmxvYXRQb2ludCBt
X2luaXRpYWxEZXN0aW5hdGlvbk9yaWdpbjsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL21hYy9TY3JvbGxpbmdN
b21lbnR1bUNhbGN1bGF0b3JNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9t
YWMvU2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yTWFjLm1tCmluZGV4IGY3MjQ1NWVhYzc5Njc2
ZTljOGU0MzAwMjI4YzAzOTRiNWQ2MWIwZTEuLjFmODUxZGRkNzdlZTI2M2QyNTM5MWRkNWM4NTk5
ZWFjN2Y0OTdiN2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL21h
Yy9TY3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3JNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvck1hYy5tbQpAQCAt
MzIsMzMgKzMyLDY0IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotc3RkOjp1bmlxdWVfcHRy
PFNjcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvcj4gU2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9y
OjpjcmVhdGUoY29uc3QgRmxvYXRTaXplJiB2aWV3cG9ydFNpemUsIGNvbnN0IEZsb2F0U2l6ZSYg
Y29udGVudFNpemUsIGNvbnN0IEZsb2F0UG9pbnQmIGluaXRpYWxPZmZzZXQsIGNvbnN0IEZsb2F0
UG9pbnQmIHRhcmdldE9mZnNldCwgY29uc3QgRmxvYXRTaXplJiBpbml0aWFsRGVsdGEsIGNvbnN0
IEZsb2F0U2l6ZSYgaW5pdGlhbFZlbG9jaXR5KQorc3RhdGljIGJvb2wgZ0VuYWJsZVBsYXRmb3Jt
TW9tZW50dW1TY3JvbGxpbmdQcmVkaWN0aW9uID0gdHJ1ZTsKKworc3RkOjp1bmlxdWVfcHRyPFNj
cm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvcj4gU2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yOjpj
cmVhdGUoY29uc3QgRmxvYXRTaXplJiB2aWV3cG9ydFNpemUsIGNvbnN0IEZsb2F0U2l6ZSYgY29u
dGVudFNpemUsIGNvbnN0IEZsb2F0UG9pbnQmIGluaXRpYWxPZmZzZXQsIGNvbnN0IEZsb2F0U2l6
ZSYgaW5pdGlhbERlbHRhLCBjb25zdCBGbG9hdFNpemUmIGluaXRpYWxWZWxvY2l0eSkKIHsKLSAg
ICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxTY3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3JNYWM+
KHZpZXdwb3J0U2l6ZSwgY29udGVudFNpemUsIGluaXRpYWxPZmZzZXQsIHRhcmdldE9mZnNldCwg
aW5pdGlhbERlbHRhLCBpbml0aWFsVmVsb2NpdHkpOworICAgIHJldHVybiBzdGQ6Om1ha2VfdW5p
cXVlPFNjcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvck1hYz4odmlld3BvcnRTaXplLCBjb250ZW50
U2l6ZSwgaW5pdGlhbE9mZnNldCwgaW5pdGlhbERlbHRhLCBpbml0aWFsVmVsb2NpdHkpOwogfQog
Ci1TY3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3JNYWM6OlNjcm9sbGluZ01vbWVudHVtQ2FsY3Vs
YXRvck1hYyhjb25zdCBGbG9hdFNpemUmIHZpZXdwb3J0U2l6ZSwgY29uc3QgRmxvYXRTaXplJiBj
b250ZW50U2l6ZSwgY29uc3QgRmxvYXRQb2ludCYgaW5pdGlhbE9mZnNldCwgY29uc3QgRmxvYXRQ
b2ludCYgdGFyZ2V0T2Zmc2V0LCBjb25zdCBGbG9hdFNpemUmIGluaXRpYWxEZWx0YSwgY29uc3Qg
RmxvYXRTaXplJiBpbml0aWFsVmVsb2NpdHkpCi0gICAgOiBTY3JvbGxpbmdNb21lbnR1bUNhbGN1
bGF0b3Iodmlld3BvcnRTaXplLCBjb250ZW50U2l6ZSwgaW5pdGlhbE9mZnNldCwgdGFyZ2V0T2Zm
c2V0LCBpbml0aWFsRGVsdGEsIGluaXRpYWxWZWxvY2l0eSkKLSAgICAsIG1fcmVxdWlyZXNNb21l
bnR1bVNjcm9sbGluZyhpbml0aWFsT2Zmc2V0ICE9IHRhcmdldE9mZnNldCB8fCBpbml0aWFsVmVs
b2NpdHkuYXJlYSgpKQordm9pZCBTY3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3I6OnNldFBsYXRm
b3JtTW9tZW50dW1TY3JvbGxpbmdQcmVkaWN0aW9uRW5hYmxlZChib29sIGVuYWJsZWQpCit7Cisg
ICAgZ0VuYWJsZVBsYXRmb3JtTW9tZW50dW1TY3JvbGxpbmdQcmVkaWN0aW9uID0gZW5hYmxlZDsK
K30KKworU2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yTWFjOjpTY3JvbGxpbmdNb21lbnR1bUNh
bGN1bGF0b3JNYWMoY29uc3QgRmxvYXRTaXplJiB2aWV3cG9ydFNpemUsIGNvbnN0IEZsb2F0U2l6
ZSYgY29udGVudFNpemUsIGNvbnN0IEZsb2F0UG9pbnQmIGluaXRpYWxPZmZzZXQsIGNvbnN0IEZs
b2F0U2l6ZSYgaW5pdGlhbERlbHRhLCBjb25zdCBGbG9hdFNpemUmIGluaXRpYWxWZWxvY2l0eSkK
KyAgICA6IFNjcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvcih2aWV3cG9ydFNpemUsIGNvbnRlbnRT
aXplLCBpbml0aWFsT2Zmc2V0LCBpbml0aWFsRGVsdGEsIGluaXRpYWxWZWxvY2l0eSkKIHsKIH0K
IAogRmxvYXRQb2ludCBTY3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3JNYWM6OnNjcm9sbE9mZnNl
dEFmdGVyRWxhcHNlZFRpbWUoU2Vjb25kcyBlbGFwc2VkVGltZSkKIHsKLSAgICBpZiAoIW1fcmVx
dWlyZXNNb21lbnR1bVNjcm9sbGluZykKLSAgICAgICAgcmV0dXJuIHsgbV90YXJnZXRTY3JvbGxP
ZmZzZXQud2lkdGgoKSwgbV90YXJnZXRTY3JvbGxPZmZzZXQuaGVpZ2h0KCkgfTsKKyAgICBpZiAo
IXJlcXVpcmVzTW9tZW50dW1TY3JvbGxpbmcoKSkKKyAgICAgICAgcmV0dXJuIHsgcmV0YXJnZXRl
ZFNjcm9sbE9mZnNldCgpLndpZHRoKCksIHJldGFyZ2V0ZWRTY3JvbGxPZmZzZXQoKS5oZWlnaHQo
KSB9OwogCiAgICAgcmV0dXJuIFtlbnN1cmVQbGF0Zm9ybU1vbWVudHVtQ2FsY3VsYXRvcigpIHBv
c2l0aW9uQWZ0ZXJEdXJhdGlvbjplbGFwc2VkVGltZS52YWx1ZSgpXTsKIH0KIAorRmxvYXRTaXpl
IFNjcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvck1hYzo6cHJlZGljdGVkRGVzdGluYXRpb25PZmZz
ZXQoKQoreworICAgIGlmICghZ0VuYWJsZVBsYXRmb3JtTW9tZW50dW1TY3JvbGxpbmdQcmVkaWN0
aW9uKQorICAgICAgICByZXR1cm4gU2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yOjpwcmVkaWN0
ZWREZXN0aW5hdGlvbk9mZnNldCgpOworCisgICAgZW5zdXJlUGxhdGZvcm1Nb21lbnR1bUNhbGN1
bGF0b3IoKTsKKyAgICByZXR1cm4geyBtX2luaXRpYWxEZXN0aW5hdGlvbk9yaWdpbi54KCksIG1f
aW5pdGlhbERlc3RpbmF0aW9uT3JpZ2luLnkoKSB9OworfQorCit2b2lkIFNjcm9sbGluZ01vbWVu
dHVtQ2FsY3VsYXRvck1hYzo6cmV0YXJnZXRlZFNjcm9sbE9mZnNldERpZENoYW5nZSgpCit7Cisg
ICAgX05TU2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yICpjYWxjdWxhdG9yID0gZW5zdXJlUGxh
dGZvcm1Nb21lbnR1bUNhbGN1bGF0b3IoKTsKKyAgICBjYWxjdWxhdG9yLmRlc3RpbmF0aW9uT3Jp
Z2luID0gTlNNYWtlUG9pbnQocmV0YXJnZXRlZFNjcm9sbE9mZnNldCgpLndpZHRoKCksIHJldGFy
Z2V0ZWRTY3JvbGxPZmZzZXQoKS5oZWlnaHQoKSk7CisjaWYgX19NQUNfT1NfWF9WRVJTSU9OX01J
Tl9SRVFVSVJFRCA+PSAxMDEyMDAKKyAgICBbY2FsY3VsYXRvciBjYWxjdWxhdGVUb1JlYWNoRGVz
dGluYXRpb25dOworI2VuZGlmCit9CisKIFNlY29uZHMgU2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxh
dG9yTWFjOjphbmltYXRpb25EdXJhdGlvbigpCiB7Ci0gICAgaWYgKCFtX3JlcXVpcmVzTW9tZW50
dW1TY3JvbGxpbmcpCisgICAgaWYgKCFyZXF1aXJlc01vbWVudHVtU2Nyb2xsaW5nKCkpCiAgICAg
ICAgIHJldHVybiAwX3M7CiAKICAgICByZXR1cm4gU2Vjb25kcyhbZW5zdXJlUGxhdGZvcm1Nb21l
bnR1bUNhbGN1bGF0b3IoKSBkdXJhdGlvblVudGlsU3RvcF0pOwogfQogCitib29sIFNjcm9sbGlu
Z01vbWVudHVtQ2FsY3VsYXRvck1hYzo6cmVxdWlyZXNNb21lbnR1bVNjcm9sbGluZygpCit7Cisg
ICAgaWYgKG1fcmVxdWlyZXNNb21lbnR1bVNjcm9sbGluZyA9PSBzdGQ6Om51bGxvcHQpCisgICAg
ICAgIG1fcmVxdWlyZXNNb21lbnR1bVNjcm9sbGluZyA9IG1faW5pdGlhbFNjcm9sbE9mZnNldCAh
PSByZXRhcmdldGVkU2Nyb2xsT2Zmc2V0KCkgfHwgbV9pbml0aWFsVmVsb2NpdHkuYXJlYSgpOwor
ICAgIHJldHVybiBtX3JlcXVpcmVzTW9tZW50dW1TY3JvbGxpbmcudmFsdWUoKTsKK30KKwogX05T
U2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yICpTY3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3JN
YWM6OmVuc3VyZVBsYXRmb3JtTW9tZW50dW1DYWxjdWxhdG9yKCkKIHsKICAgICBpZiAobV9wbGF0
Zm9ybU1vbWVudHVtQ2FsY3VsYXRvcikKQEAgLTY4LDEwICs5OSw3IEBAIF9OU1Njcm9sbGluZ01v
bWVudHVtQ2FsY3VsYXRvciAqU2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yTWFjOjplbnN1cmVQ
bGF0Zm9ybU1vCiAgICAgTlNSZWN0IGNvbnRlbnRGcmFtZSA9IE5TTWFrZVJlY3QoMCwgMCwgbV9j
b250ZW50U2l6ZS53aWR0aCgpLCBtX2NvbnRlbnRTaXplLmhlaWdodCgpKTsKICAgICBOU1BvaW50
IHZlbG9jaXR5ID0gTlNNYWtlUG9pbnQobV9pbml0aWFsVmVsb2NpdHkud2lkdGgoKSwgbV9pbml0
aWFsVmVsb2NpdHkuaGVpZ2h0KCkpOwogICAgIG1fcGxhdGZvcm1Nb21lbnR1bUNhbGN1bGF0b3Ig
PSBhZG9wdE5TKFtbX05TU2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yIGFsbG9jXSBpbml0V2l0
aEluaXRpYWxPcmlnaW46b3JpZ2luIHZlbG9jaXR5OnZlbG9jaXR5IGRvY3VtZW50RnJhbWU6Y29u
dGVudEZyYW1lIGNvbnN0cmFpbmVkQ2xpcHBpbmdPcmlnaW46TlNaZXJvUG9pbnQgY2xpcHBpbmdT
aXplOm1fdmlld3BvcnRTaXplIHRvbGVyYW5jZTpOU01ha2VTaXplKDEsIDEpXSk7Ci0gICAgW21f
cGxhdGZvcm1Nb21lbnR1bUNhbGN1bGF0b3Igc2V0RGVzdGluYXRpb25PcmlnaW46TlNNYWtlUG9p
bnQobV90YXJnZXRTY3JvbGxPZmZzZXQud2lkdGgoKSwgbV90YXJnZXRTY3JvbGxPZmZzZXQuaGVp
Z2h0KCkpXTsKLSNpZiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwMTIwMAot
ICAgIFttX3BsYXRmb3JtTW9tZW50dW1DYWxjdWxhdG9yIGNhbGN1bGF0ZVRvUmVhY2hEZXN0aW5h
dGlvbl07Ci0jZW5kaWYKKyAgICBtX2luaXRpYWxEZXN0aW5hdGlvbk9yaWdpbiA9IFttX3BsYXRm
b3JtTW9tZW50dW1DYWxjdWxhdG9yIGRlc3RpbmF0aW9uT3JpZ2luXTsKICAgICByZXR1cm4gbV9w
bGF0Zm9ybU1vbWVudHVtQ2FsY3VsYXRvci5nZXQoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05v
ZGVNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nVHJl
ZUZyYW1lU2Nyb2xsaW5nTm9kZU1hYy5tbQppbmRleCAxMWU3YTc0ZGUzMjYyZDUxNGVlOGEzMGU4
ODM1NWQ5YWQ5YWYxMmU3Li45YTA3ZmZiODlhZTljMzJkMjZlMDMxZDgzN2VmYzg4NzBiZWU5ZTk2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5n
VHJlZUZyYW1lU2Nyb2xsaW5nTm9kZU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Nj
cm9sbGluZy9tYWMvU2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZU1hYy5tbQpAQCAtOTAs
NiArOTAsMTYgQEAgc3RhdGljIGlubGluZSBWZWN0b3I8TGF5b3V0VW5pdD4gY29udmVydFRvTGF5
b3V0VW5pdHMoY29uc3QgVmVjdG9yPGZsb2F0PiYgc25hcE8KIAogICAgIHJldHVybiBzbmFwT2Zm
c2V0czsKIH0KKworc3RhdGljIGlubGluZSBWZWN0b3I8U2Nyb2xsT2Zmc2V0UmFuZ2U8TGF5b3V0
VW5pdD4+IGNvbnZlcnRUb0xheW91dFVuaXRzKGNvbnN0IFZlY3RvcjxTY3JvbGxPZmZzZXRSYW5n
ZTxmbG9hdD4+JiBzbmFwT2Zmc2V0UmFuZ2VzQXNGbG9hdCkKK3sKKyAgICBWZWN0b3I8U2Nyb2xs
T2Zmc2V0UmFuZ2U8TGF5b3V0VW5pdD4+IHNuYXBPZmZzZXRSYW5nZXM7CisgICAgc25hcE9mZnNl
dFJhbmdlcy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KHNuYXBPZmZzZXRSYW5nZXNBc0Zsb2F0LnNp
emUoKSk7CisgICAgZm9yIChhdXRvIHJhbmdlIDogc25hcE9mZnNldFJhbmdlc0FzRmxvYXQpCisg
ICAgICAgIHNuYXBPZmZzZXRSYW5nZXMudW5jaGVja2VkQXBwZW5kKHsgcmFuZ2Uuc3RhcnQsIHJh
bmdlLmVuZCB9KTsKKworICAgIHJldHVybiBzbmFwT2Zmc2V0UmFuZ2VzOworfQogI2VuZGlmCiAK
IHZvaWQgU2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZU1hYzo6Y29tbWl0U3RhdGVCZWZv
cmVDaGlsZHJlbihjb25zdCBTY3JvbGxpbmdTdGF0ZU5vZGUmIHN0YXRlTm9kZSkKQEAgLTE0Niwx
MSArMTU2LDExIEBAIHZvaWQgU2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZU1hYzo6Y29t
bWl0U3RhdGVCZWZvcmVDaGlsZHJlbihjb25zdCBTY3JvbGxpCiAgICAgfQogCiAjaWYgRU5BQkxF
KENTU19TQ1JPTExfU05BUCkKLSAgICBpZiAoc2Nyb2xsaW5nU3RhdGVOb2RlLmhhc0NoYW5nZWRQ
cm9wZXJ0eShTY3JvbGxpbmdTdGF0ZUZyYW1lU2Nyb2xsaW5nTm9kZTo6SG9yaXpvbnRhbFNuYXBP
ZmZzZXRzKSkKLSAgICAgICAgbV9zY3JvbGxDb250cm9sbGVyLnVwZGF0ZVNjcm9sbFNuYXBQb2lu
dHMoU2Nyb2xsRXZlbnRBeGlzOjpIb3Jpem9udGFsLCBjb252ZXJ0VG9MYXlvdXRVbml0cyhzY3Jv
bGxpbmdTdGF0ZU5vZGUuaG9yaXpvbnRhbFNuYXBPZmZzZXRzKCkpKTsKKyAgICBpZiAoc2Nyb2xs
aW5nU3RhdGVOb2RlLmhhc0NoYW5nZWRQcm9wZXJ0eShTY3JvbGxpbmdTdGF0ZUZyYW1lU2Nyb2xs
aW5nTm9kZTo6SG9yaXpvbnRhbFNuYXBPZmZzZXRzKSB8fCBzY3JvbGxpbmdTdGF0ZU5vZGUuaGFz
Q2hhbmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRlRnJhbWVTY3JvbGxpbmdOb2RlOjpIb3Jpem9u
dGFsU25hcE9mZnNldFJhbmdlcykpCisgICAgICAgIG1fc2Nyb2xsQ29udHJvbGxlci51cGRhdGVT
Y3JvbGxTbmFwUG9pbnRzKFNjcm9sbEV2ZW50QXhpczo6SG9yaXpvbnRhbCwgY29udmVydFRvTGF5
b3V0VW5pdHMoc2Nyb2xsaW5nU3RhdGVOb2RlLmhvcml6b250YWxTbmFwT2Zmc2V0cygpKSwgY29u
dmVydFRvTGF5b3V0VW5pdHMoc2Nyb2xsaW5nU3RhdGVOb2RlLmhvcml6b250YWxTbmFwT2Zmc2V0
UmFuZ2VzKCkpKTsKIAotICAgIGlmIChzY3JvbGxpbmdTdGF0ZU5vZGUuaGFzQ2hhbmdlZFByb3Bl
cnR5KFNjcm9sbGluZ1N0YXRlRnJhbWVTY3JvbGxpbmdOb2RlOjpWZXJ0aWNhbFNuYXBPZmZzZXRz
KSkKLSAgICAgICAgbV9zY3JvbGxDb250cm9sbGVyLnVwZGF0ZVNjcm9sbFNuYXBQb2ludHMoU2Ny
b2xsRXZlbnRBeGlzOjpWZXJ0aWNhbCwgY29udmVydFRvTGF5b3V0VW5pdHMoc2Nyb2xsaW5nU3Rh
dGVOb2RlLnZlcnRpY2FsU25hcE9mZnNldHMoKSkpOworICAgIGlmIChzY3JvbGxpbmdTdGF0ZU5v
ZGUuaGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRlRnJhbWVTY3JvbGxpbmdOb2RlOjpW
ZXJ0aWNhbFNuYXBPZmZzZXRzKSB8fCBzY3JvbGxpbmdTdGF0ZU5vZGUuaGFzQ2hhbmdlZFByb3Bl
cnR5KFNjcm9sbGluZ1N0YXRlRnJhbWVTY3JvbGxpbmdOb2RlOjpWZXJ0aWNhbFNuYXBPZmZzZXRS
YW5nZXMpKQorICAgICAgICBtX3Njcm9sbENvbnRyb2xsZXIudXBkYXRlU2Nyb2xsU25hcFBvaW50
cyhTY3JvbGxFdmVudEF4aXM6OlZlcnRpY2FsLCBjb252ZXJ0VG9MYXlvdXRVbml0cyhzY3JvbGxp
bmdTdGF0ZU5vZGUudmVydGljYWxTbmFwT2Zmc2V0cygpKSwgY29udmVydFRvTGF5b3V0VW5pdHMo
c2Nyb2xsaW5nU3RhdGVOb2RlLnZlcnRpY2FsU25hcE9mZnNldFJhbmdlcygpKSk7CiAKICAgICBp
ZiAoc2Nyb2xsaW5nU3RhdGVOb2RlLmhhc0NoYW5nZWRQcm9wZXJ0eShTY3JvbGxpbmdTdGF0ZVNj
cm9sbGluZ05vZGU6OkN1cnJlbnRIb3Jpem9udGFsU25hcE9mZnNldEluZGV4KSkKICAgICAgICAg
bV9zY3JvbGxDb250cm9sbGVyLnNldEFjdGl2ZVNjcm9sbFNuYXBJbmRleEZvckF4aXMoU2Nyb2xs
RXZlbnRBeGlzOjpIb3Jpem9udGFsLCBzY3JvbGxpbmdTdGF0ZU5vZGUuY3VycmVudEhvcml6b250
YWxTbmFwUG9pbnRJbmRleCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1Njcm9sbGFibGVBcmVhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGFibGVB
cmVhLmNwcAppbmRleCBhNzFiMDc5MWEwMGRlNzg1YTUxNzMxNzlmYzhjYmYxMmExZDUxNTNiLi5k
ZWFkNzIxNjk4MmYyNmRkZWJhZTUyYTAwMTcwMDFiOGRjN2ZkZGVkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxhYmxlQXJlYS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vU2Nyb2xsYWJsZUFyZWEuY3BwCkBAIC00OCw3ICs0OCw3IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIHN0cnVjdCBTYW1lU2l6ZUFzU2Nyb2xsYWJsZUFyZWEgewogICAgIHZpcnR1
YWwgflNhbWVTaXplQXNTY3JvbGxhYmxlQXJlYSgpOwogI2lmIEVOQUJMRShDU1NfU0NST0xMX1NO
QVApCi0gICAgdm9pZCogcG9pbnRlcnNbNF07CisgICAgdm9pZCogcG9pbnRlcnNbM107CiAgICAg
dW5zaWduZWQgY3VycmVudEluZGljZXNbMl07CiAjZWxzZQogICAgIHZvaWQqIHBvaW50ZXJbMl07
CkBAIC00MjUsMzUgKzQyNSw5MCBAQCBib29sIFNjcm9sbGFibGVBcmVhOjpoYXNMYXllckZvclNj
cm9sbENvcm5lcigpIGNvbnN0CiB9CiAKICNpZiBFTkFCTEUoQ1NTX1NDUk9MTF9TTkFQKQotdm9p
ZCBTY3JvbGxhYmxlQXJlYTo6c2V0SG9yaXpvbnRhbFNuYXBPZmZzZXRzKHN0ZDo6dW5pcXVlX3B0
cjxWZWN0b3I8TGF5b3V0VW5pdD4+IGhvcml6b250YWxTbmFwT2Zmc2V0cykKK1Njcm9sbFNuYXBP
ZmZzZXRzSW5mbzxMYXlvdXRVbml0PiYgU2Nyb2xsYWJsZUFyZWE6OmVuc3VyZVNuYXBPZmZzZXRz
SW5mbygpCit7CisgICAgaWYgKCFtX3NuYXBPZmZzZXRzSW5mbykKKyAgICAgICAgbV9zbmFwT2Zm
c2V0c0luZm8gPSBzdGQ6Om1ha2VfdW5pcXVlPFNjcm9sbFNuYXBPZmZzZXRzSW5mbzxMYXlvdXRV
bml0Pj4oKTsKKyAgICByZXR1cm4gKm1fc25hcE9mZnNldHNJbmZvOworfQorCitjb25zdCBWZWN0
b3I8TGF5b3V0VW5pdD4qIFNjcm9sbGFibGVBcmVhOjpob3Jpem9udGFsU25hcE9mZnNldHMoKSBj
b25zdAoreworICAgIGlmICghbV9zbmFwT2Zmc2V0c0luZm8pCisgICAgICAgIHJldHVybiBudWxs
cHRyOworCisgICAgcmV0dXJuICZtX3NuYXBPZmZzZXRzSW5mby0+aG9yaXpvbnRhbFNuYXBPZmZz
ZXRzOworfQorCitjb25zdCBWZWN0b3I8U2Nyb2xsT2Zmc2V0UmFuZ2U8TGF5b3V0VW5pdD4+KiBT
Y3JvbGxhYmxlQXJlYTo6aG9yaXpvbnRhbFNuYXBPZmZzZXRSYW5nZXMoKSBjb25zdAoreworICAg
IGlmICghbV9zbmFwT2Zmc2V0c0luZm8pCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAg
cmV0dXJuICZtX3NuYXBPZmZzZXRzSW5mby0+aG9yaXpvbnRhbFNuYXBPZmZzZXRSYW5nZXM7Cit9
CisKK2NvbnN0IFZlY3RvcjxTY3JvbGxPZmZzZXRSYW5nZTxMYXlvdXRVbml0Pj4qIFNjcm9sbGFi
bGVBcmVhOjp2ZXJ0aWNhbFNuYXBPZmZzZXRSYW5nZXMoKSBjb25zdAoreworICAgIGlmICghbV9z
bmFwT2Zmc2V0c0luZm8pCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgcmV0dXJuICZt
X3NuYXBPZmZzZXRzSW5mby0+dmVydGljYWxTbmFwT2Zmc2V0UmFuZ2VzOworfQorCitjb25zdCBW
ZWN0b3I8TGF5b3V0VW5pdD4qIFNjcm9sbGFibGVBcmVhOjp2ZXJ0aWNhbFNuYXBPZmZzZXRzKCkg
Y29uc3QKK3sKKyAgICBpZiAoIW1fc25hcE9mZnNldHNJbmZvKQorICAgICAgICByZXR1cm4gbnVs
bHB0cjsKKworICAgIHJldHVybiAmbV9zbmFwT2Zmc2V0c0luZm8tPnZlcnRpY2FsU25hcE9mZnNl
dHM7Cit9CisKK3ZvaWQgU2Nyb2xsYWJsZUFyZWE6OnNldEhvcml6b250YWxTbmFwT2Zmc2V0cyhj
b25zdCBWZWN0b3I8TGF5b3V0VW5pdD4mIGhvcml6b250YWxTbmFwT2Zmc2V0cykKIHsKLSAgICBB
U1NFUlQoaG9yaXpvbnRhbFNuYXBPZmZzZXRzKTsKICAgICAvLyBDb25zaWRlciBoYXZpbmcgYSBu
b24tZW1wdHkgc2V0IG9mIHNuYXAgb2Zmc2V0cyBhcyBhIGN1ZSB0byBpbml0aWFsaXplIHRoZSBT
Y3JvbGxBbmltYXRvci4KLSAgICBpZiAoaG9yaXpvbnRhbFNuYXBPZmZzZXRzLT5zaXplKCkpCisg
ICAgaWYgKGhvcml6b250YWxTbmFwT2Zmc2V0cy5zaXplKCkpCiAgICAgICAgIHNjcm9sbEFuaW1h
dG9yKCk7CiAKLSAgICBtX2hvcml6b250YWxTbmFwT2Zmc2V0cyA9IFdURk1vdmUoaG9yaXpvbnRh
bFNuYXBPZmZzZXRzKTsKKyAgICBlbnN1cmVTbmFwT2Zmc2V0c0luZm8oKS5ob3Jpem9udGFsU25h
cE9mZnNldHMgPSBob3Jpem9udGFsU25hcE9mZnNldHM7CiB9CiAKLXZvaWQgU2Nyb2xsYWJsZUFy
ZWE6OnNldFZlcnRpY2FsU25hcE9mZnNldHMoc3RkOjp1bmlxdWVfcHRyPFZlY3RvcjxMYXlvdXRV
bml0Pj4gdmVydGljYWxTbmFwT2Zmc2V0cykKK3ZvaWQgU2Nyb2xsYWJsZUFyZWE6OnNldFZlcnRp
Y2FsU25hcE9mZnNldHMoY29uc3QgVmVjdG9yPExheW91dFVuaXQ+JiB2ZXJ0aWNhbFNuYXBPZmZz
ZXRzKQogewotICAgIEFTU0VSVCh2ZXJ0aWNhbFNuYXBPZmZzZXRzKTsKICAgICAvLyBDb25zaWRl
ciBoYXZpbmcgYSBub24tZW1wdHkgc2V0IG9mIHNuYXAgb2Zmc2V0cyBhcyBhIGN1ZSB0byBpbml0
aWFsaXplIHRoZSBTY3JvbGxBbmltYXRvci4KLSAgICBpZiAodmVydGljYWxTbmFwT2Zmc2V0cy0+
c2l6ZSgpKQorICAgIGlmICh2ZXJ0aWNhbFNuYXBPZmZzZXRzLnNpemUoKSkKICAgICAgICAgc2Ny
b2xsQW5pbWF0b3IoKTsKIAotICAgIG1fdmVydGljYWxTbmFwT2Zmc2V0cyA9IFdURk1vdmUodmVy
dGljYWxTbmFwT2Zmc2V0cyk7CisgICAgZW5zdXJlU25hcE9mZnNldHNJbmZvKCkudmVydGljYWxT
bmFwT2Zmc2V0cyA9IHZlcnRpY2FsU25hcE9mZnNldHM7Cit9CisKK3ZvaWQgU2Nyb2xsYWJsZUFy
ZWE6OnNldEhvcml6b250YWxTbmFwT2Zmc2V0UmFuZ2VzKGNvbnN0IFZlY3RvcjxTY3JvbGxPZmZz
ZXRSYW5nZTxMYXlvdXRVbml0Pj4mIGhvcml6b250YWxSYW5nZXMpCit7CisgICAgZW5zdXJlU25h
cE9mZnNldHNJbmZvKCkuaG9yaXpvbnRhbFNuYXBPZmZzZXRSYW5nZXMgPSBob3Jpem9udGFsUmFu
Z2VzOworfQorCit2b2lkIFNjcm9sbGFibGVBcmVhOjpzZXRWZXJ0aWNhbFNuYXBPZmZzZXRSYW5n
ZXMoY29uc3QgVmVjdG9yPFNjcm9sbE9mZnNldFJhbmdlPExheW91dFVuaXQ+PiYgdmVydGljYWxS
YW5nZXMpCit7CisgICAgZW5zdXJlU25hcE9mZnNldHNJbmZvKCkudmVydGljYWxTbmFwT2Zmc2V0
UmFuZ2VzID0gdmVydGljYWxSYW5nZXM7CiB9CiAKIHZvaWQgU2Nyb2xsYWJsZUFyZWE6OmNsZWFy
SG9yaXpvbnRhbFNuYXBPZmZzZXRzKCkKIHsKLSAgICBtX2hvcml6b250YWxTbmFwT2Zmc2V0cyA9
IG51bGxwdHI7CisgICAgaWYgKCFtX3NuYXBPZmZzZXRzSW5mbykKKyAgICAgICAgcmV0dXJuOwor
CisgICAgbV9zbmFwT2Zmc2V0c0luZm8tPmhvcml6b250YWxTbmFwT2Zmc2V0cyA9IHsgfTsKKyAg
ICBtX3NuYXBPZmZzZXRzSW5mby0+aG9yaXpvbnRhbFNuYXBPZmZzZXRSYW5nZXMgPSB7IH07CiAg
ICAgbV9jdXJyZW50SG9yaXpvbnRhbFNuYXBQb2ludEluZGV4ID0gMDsKIH0KIAogdm9pZCBTY3Jv
bGxhYmxlQXJlYTo6Y2xlYXJWZXJ0aWNhbFNuYXBPZmZzZXRzKCkKIHsKLSAgICBtX3ZlcnRpY2Fs
U25hcE9mZnNldHMgPSBudWxscHRyOworICAgIGlmICghbV9zbmFwT2Zmc2V0c0luZm8pCisgICAg
ICAgIHJldHVybjsKKworICAgIG1fc25hcE9mZnNldHNJbmZvLT52ZXJ0aWNhbFNuYXBPZmZzZXRz
ID0geyB9OworICAgIG1fc25hcE9mZnNldHNJbmZvLT52ZXJ0aWNhbFNuYXBPZmZzZXRSYW5nZXMg
PSB7IH07CiAgICAgbV9jdXJyZW50VmVydGljYWxTbmFwUG9pbnRJbmRleCA9IDA7CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGFibGVBcmVhLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxhYmxlQXJlYS5oCmluZGV4IDg5MDk3MTVhN2NlMjA3
ZGNiMmZmMDU2YzA3MGZmNTEwYWJhZThkMjIuLjI0ZjhiMTYwYWM4MzUwYWVlZWY4ZTU0OGRjMmNj
MDZjZjg0NGE5N2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGFi
bGVBcmVhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYWJsZUFyZWEuaApA
QCAtMjYsNiArMjYsNyBAQAogI2lmbmRlZiBTY3JvbGxhYmxlQXJlYV9oCiAjZGVmaW5lIFNjcm9s
bGFibGVBcmVhX2gKIAorI2luY2x1ZGUgIlNjcm9sbFNuYXBPZmZzZXRzSW5mby5oIgogI2luY2x1
ZGUgIlNjcm9sbGJhci5oIgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KICNpbmNsdWRlIDx3dGYv
V2Vha1B0ci5oPgpAQCAtNjcsMTEgKzY4LDE1IEBAIHB1YmxpYzoKICAgICBXZWFrUHRyPFNjcm9s
bGFibGVBcmVhPiBjcmVhdGVXZWFrUHRyKCkgeyByZXR1cm4gbV93ZWFrUHRyRmFjdG9yeS5jcmVh
dGVXZWFrUHRyKCk7IH0KIAogI2lmIEVOQUJMRShDU1NfU0NST0xMX1NOQVApCi0gICAgY29uc3Qg
VmVjdG9yPExheW91dFVuaXQ+KiBob3Jpem9udGFsU25hcE9mZnNldHMoKSBjb25zdCB7IHJldHVy
biBtX2hvcml6b250YWxTbmFwT2Zmc2V0cy5nZXQoKTsgfTsKLSAgICBjb25zdCBWZWN0b3I8TGF5
b3V0VW5pdD4qIHZlcnRpY2FsU25hcE9mZnNldHMoKSBjb25zdCB7IHJldHVybiBtX3ZlcnRpY2Fs
U25hcE9mZnNldHMuZ2V0KCk7IH07CisgICAgV0VCQ09SRV9FWFBPUlQgY29uc3QgVmVjdG9yPExh
eW91dFVuaXQ+KiBob3Jpem9udGFsU25hcE9mZnNldHMoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VY
UE9SVCBjb25zdCBWZWN0b3I8TGF5b3V0VW5pdD4qIHZlcnRpY2FsU25hcE9mZnNldHMoKSBjb25z
dDsKKyAgICBXRUJDT1JFX0VYUE9SVCBjb25zdCBWZWN0b3I8U2Nyb2xsT2Zmc2V0UmFuZ2U8TGF5
b3V0VW5pdD4+KiBob3Jpem9udGFsU25hcE9mZnNldFJhbmdlcygpIGNvbnN0OworICAgIFdFQkNP
UkVfRVhQT1JUIGNvbnN0IFZlY3RvcjxTY3JvbGxPZmZzZXRSYW5nZTxMYXlvdXRVbml0Pj4qIHZl
cnRpY2FsU25hcE9mZnNldFJhbmdlcygpIGNvbnN0OwogICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVT
bmFwT2Zmc2V0cygpIHsgfTsKLSAgICB2b2lkIHNldEhvcml6b250YWxTbmFwT2Zmc2V0cyhzdGQ6
OnVuaXF1ZV9wdHI8VmVjdG9yPExheW91dFVuaXQ+Pik7Ci0gICAgdm9pZCBzZXRWZXJ0aWNhbFNu
YXBPZmZzZXRzKHN0ZDo6dW5pcXVlX3B0cjxWZWN0b3I8TGF5b3V0VW5pdD4+KTsKKyAgICB2b2lk
IHNldEhvcml6b250YWxTbmFwT2Zmc2V0cyhjb25zdCBWZWN0b3I8TGF5b3V0VW5pdD4mKTsKKyAg
ICB2b2lkIHNldFZlcnRpY2FsU25hcE9mZnNldHMoY29uc3QgVmVjdG9yPExheW91dFVuaXQ+Jik7
CisgICAgdm9pZCBzZXRIb3Jpem9udGFsU25hcE9mZnNldFJhbmdlcyhjb25zdCBWZWN0b3I8U2Ny
b2xsT2Zmc2V0UmFuZ2U8TGF5b3V0VW5pdD4+Jik7CisgICAgdm9pZCBzZXRWZXJ0aWNhbFNuYXBP
ZmZzZXRSYW5nZXMoY29uc3QgVmVjdG9yPFNjcm9sbE9mZnNldFJhbmdlPExheW91dFVuaXQ+PiYp
OwogICAgIHZvaWQgY2xlYXJIb3Jpem9udGFsU25hcE9mZnNldHMoKTsKICAgICB2b2lkIGNsZWFy
VmVydGljYWxTbmFwT2Zmc2V0cygpOwogICAgIHVuc2lnbmVkIGN1cnJlbnRIb3Jpem9udGFsU25h
cFBvaW50SW5kZXgoKSBjb25zdCB7IHJldHVybiBtX2N1cnJlbnRIb3Jpem9udGFsU25hcFBvaW50
SW5kZXg7IH0KQEAgLTM0NiwxNCArMzUxLDE0IEBAIHByaXZhdGU6CiAgICAgLy8gVGhpcyBmdW5j
dGlvbiBzaG91bGQgYmUgb3ZlcnJpZGVuIGJ5IHN1YmNsYXNzZXMgdG8gcGVyZm9ybSB0aGUgYWN0
dWFsCiAgICAgLy8gc2Nyb2xsIG9mIHRoZSBjb250ZW50LgogICAgIHZpcnR1YWwgdm9pZCBzZXRT
Y3JvbGxPZmZzZXQoY29uc3QgU2Nyb2xsT2Zmc2V0JikgPSAwOworICAgIFNjcm9sbFNuYXBPZmZz
ZXRzSW5mbzxMYXlvdXRVbml0PiYgZW5zdXJlU25hcE9mZnNldHNJbmZvKCk7CiAKICAgICBtdXRh
YmxlIHN0ZDo6dW5pcXVlX3B0cjxTY3JvbGxBbmltYXRvcj4gbV9zY3JvbGxBbmltYXRvcjsKIAog
ICAgIFdlYWtQdHJGYWN0b3J5PFNjcm9sbGFibGVBcmVhPiBtX3dlYWtQdHJGYWN0b3J5IHsgdGhp
cyB9OwogCiAjaWYgRU5BQkxFKENTU19TQ1JPTExfU05BUCkKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8
VmVjdG9yPExheW91dFVuaXQ+PiBtX2hvcml6b250YWxTbmFwT2Zmc2V0czsKLSAgICBzdGQ6OnVu
aXF1ZV9wdHI8VmVjdG9yPExheW91dFVuaXQ+PiBtX3ZlcnRpY2FsU25hcE9mZnNldHM7CisgICAg
c3RkOjp1bmlxdWVfcHRyPFNjcm9sbFNuYXBPZmZzZXRzSW5mbzxMYXlvdXRVbml0Pj4gbV9zbmFw
T2Zmc2V0c0luZm87CiAgICAgdW5zaWduZWQgbV9jdXJyZW50SG9yaXpvbnRhbFNuYXBQb2ludElu
ZGV4IHsgMCB9OwogICAgIHVuc2lnbmVkIG1fY3VycmVudFZlcnRpY2FsU25hcFBvaW50SW5kZXgg
eyAwIH07CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29h
L1Njcm9sbENvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1Njcm9s
bENvbnRyb2xsZXIuaAppbmRleCBiMWM3YTBjMWMwNGQ4NjJhMTI4NzU5NWEyNDZjMjhlYzIzZTIy
ZDVhLi4wZTQ0Nzg5ZjBhMTI2YWU4YTQyNzU0NjMxY2RmZjQwNmM5Yjk0YjYwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9TY3JvbGxDb250cm9sbGVyLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvU2Nyb2xsQ29udHJvbGxlci5oCkBAIC0zNyw2
ICszNyw3IEBACiAKICNpZiBFTkFCTEUoQ1NTX1NDUk9MTF9TTkFQKQogI2luY2x1ZGUgIlNjcm9s
bFNuYXBBbmltYXRvclN0YXRlLmgiCisjaW5jbHVkZSAiU2Nyb2xsU25hcE9mZnNldHNJbmZvLmgi
CiAjZW5kaWYKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMTMzLDcgKzEzNCw3IEBAIHB1Ymxp
YzoKICAgICBib29sIGlzU2Nyb2xsU25hcEluUHJvZ3Jlc3MoKSBjb25zdDsKIAogI2lmIEVOQUJM
RShDU1NfU0NST0xMX1NOQVApCi0gICAgdm9pZCB1cGRhdGVTY3JvbGxTbmFwUG9pbnRzKFNjcm9s
bEV2ZW50QXhpcywgY29uc3QgVmVjdG9yPExheW91dFVuaXQ+Jik7CisgICAgdm9pZCB1cGRhdGVT
Y3JvbGxTbmFwUG9pbnRzKFNjcm9sbEV2ZW50QXhpcywgY29uc3QgVmVjdG9yPExheW91dFVuaXQ+
JiwgY29uc3QgVmVjdG9yPFNjcm9sbE9mZnNldFJhbmdlPExheW91dFVuaXQ+PiYpOwogICAgIHZv
aWQgc2V0QWN0aXZlU2Nyb2xsU25hcEluZGV4Rm9yQXhpcyhTY3JvbGxFdmVudEF4aXMsIHVuc2ln
bmVkKTsKICAgICB2b2lkIHNldEFjdGl2ZVNjcm9sbFNuYXBJbmRpY2VzRm9yT2Zmc2V0KGludCB4
LCBpbnQgeSk7CiAgICAgYm9vbCBhY3RpdmVTY3JvbGxTbmFwSW5kZXhEaWRDaGFuZ2UoKSBjb25z
dCB7IHJldHVybiBtX2FjdGl2ZVNjcm9sbFNuYXBJbmRleERpZENoYW5nZTsgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvU2Nyb2xsQ29udHJvbGxlci5tbSBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1Njcm9sbENvbnRyb2xsZXIubW0KaW5kZXggZTQ2
ZWM1NmE3NGUyNjJkZjE4ZjAyNzJhNzIzYjM1YzI0NTY4NzY1Ny4uYTg3ZDMzYjMzMWUzNDlkMTBm
MWYzMDAwMjA5NjQ2YTViODQ1YmRkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vY29jb2EvU2Nyb2xsQ29udHJvbGxlci5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9jb2NvYS9TY3JvbGxDb250cm9sbGVyLm1tCkBAIC01NTMsMTQgKzU1MywxNSBAQCBib29sIFNj
cm9sbENvbnRyb2xsZXI6OnByb2Nlc3NXaGVlbEV2ZW50Rm9yU2Nyb2xsU25hcChjb25zdCBQbGF0
Zm9ybVdoZWVsRXZlbnQmCiAgICAgY2FzZSBXaGVlbEV2ZW50U3RhdHVzOjpVc2VyU2Nyb2xsaW5n
OgogICAgICAgICBzdG9wU2Nyb2xsU25hcFRpbWVyKCk7CiAgICAgICAgIG1fc2Nyb2xsU25hcFN0
YXRlLT50cmFuc2l0aW9uVG9Vc2VySW50ZXJhY3Rpb25TdGF0ZSgpOworICAgICAgICBtX2RyYWdF
bmRlZFNjcm9sbGluZ1ZlbG9jaXR5ID0gLXdoZWVsRXZlbnQuc2Nyb2xsaW5nVmVsb2NpdHkoKTsK
ICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBXaGVlbEV2ZW50U3RhdHVzOjpVc2VyU2Nyb2xsRW5k
OgotICAgICAgICBtX2RyYWdFbmRlZFNjcm9sbGluZ1ZlbG9jaXR5ID0gLXdoZWVsRXZlbnQuc2Ny
b2xsaW5nVmVsb2NpdHkoKTsKICAgICAgICAgbV9zY3JvbGxTbmFwU3RhdGUtPnRyYW5zaXRpb25U
b1NuYXBBbmltYXRpb25TdGF0ZShtX2NsaWVudC5zY3JvbGxFeHRlbnQoKSwgbV9jbGllbnQudmll
d3BvcnRTaXplKCksIG1fY2xpZW50LnBhZ2VTY2FsZUZhY3RvcigpLCBtX2NsaWVudC5zY3JvbGxP
ZmZzZXQoKSk7CiAgICAgICAgIHN0YXJ0U2Nyb2xsU25hcFRpbWVyKCk7CiAgICAgICAgIGJyZWFr
OwogICAgIGNhc2UgV2hlZWxFdmVudFN0YXR1czo6SW5lcnRpYWxTY3JvbGxCZWdpbjoKICAgICAg
ICAgbV9zY3JvbGxTbmFwU3RhdGUtPnRyYW5zaXRpb25Ub0dsaWRlQW5pbWF0aW9uU3RhdGUobV9j
bGllbnQuc2Nyb2xsRXh0ZW50KCksIG1fY2xpZW50LnZpZXdwb3J0U2l6ZSgpLCBtX2NsaWVudC5w
YWdlU2NhbGVGYWN0b3IoKSwgbV9jbGllbnQuc2Nyb2xsT2Zmc2V0KCksIG1fZHJhZ0VuZGVkU2Ny
b2xsaW5nVmVsb2NpdHksIEZsb2F0U2l6ZSgtd2hlZWxFdmVudC5kZWx0YVgoKSwgLXdoZWVsRXZl
bnQuZGVsdGFZKCkpKTsKKyAgICAgICAgbV9kcmFnRW5kZWRTY3JvbGxpbmdWZWxvY2l0eSA9IHsg
fTsKICAgICAgICAgaXNJbmVydGlhbFNjcm9sbGluZyA9IHRydWU7CiAgICAgICAgIGJyZWFrOwog
ICAgIGNhc2UgV2hlZWxFdmVudFN0YXR1czo6SW5lcnRpYWxTY3JvbGxpbmc6CkBAIC01ODEsMTgg
KzU4MiwyNCBAQCBib29sIFNjcm9sbENvbnRyb2xsZXI6OnByb2Nlc3NXaGVlbEV2ZW50Rm9yU2Ny
b2xsU25hcChjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmCiAKIHZvaWQgU2Nyb2xsQ29udHJvbGxl
cjo6dXBkYXRlU2Nyb2xsU25hcFN0YXRlKGNvbnN0IFNjcm9sbGFibGVBcmVhJiBzY3JvbGxhYmxl
QXJlYSkKIHsKLSAgICBpZiAoYXV0byogc25hcE9mZnNldHMgPSBzY3JvbGxhYmxlQXJlYS5ob3Jp
em9udGFsU25hcE9mZnNldHMoKSkKLSAgICAgICAgdXBkYXRlU2Nyb2xsU25hcFBvaW50cyhTY3Jv
bGxFdmVudEF4aXM6Okhvcml6b250YWwsICpzbmFwT2Zmc2V0cyk7Ci0gICAgZWxzZQotICAgICAg
ICB1cGRhdGVTY3JvbGxTbmFwUG9pbnRzKFNjcm9sbEV2ZW50QXhpczo6SG9yaXpvbnRhbCwgeyB9
KTsKKyAgICBpZiAoYXV0byogc25hcE9mZnNldHMgPSBzY3JvbGxhYmxlQXJlYS5ob3Jpem9udGFs
U25hcE9mZnNldHMoKSkgeworICAgICAgICBpZiAoYXV0byogc25hcE9mZnNldFJhbmdlcyA9IHNj
cm9sbGFibGVBcmVhLmhvcml6b250YWxTbmFwT2Zmc2V0UmFuZ2VzKCkpCisgICAgICAgICAgICB1
cGRhdGVTY3JvbGxTbmFwUG9pbnRzKFNjcm9sbEV2ZW50QXhpczo6SG9yaXpvbnRhbCwgKnNuYXBP
ZmZzZXRzLCAqc25hcE9mZnNldFJhbmdlcyk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHVw
ZGF0ZVNjcm9sbFNuYXBQb2ludHMoU2Nyb2xsRXZlbnRBeGlzOjpIb3Jpem9udGFsLCAqc25hcE9m
ZnNldHMsIHsgfSk7CisgICAgfSBlbHNlCisgICAgICAgIHVwZGF0ZVNjcm9sbFNuYXBQb2ludHMo
U2Nyb2xsRXZlbnRBeGlzOjpIb3Jpem9udGFsLCB7IH0sIHsgfSk7CiAKLSAgICBpZiAoYXV0byog
c25hcE9mZnNldHMgPSBzY3JvbGxhYmxlQXJlYS52ZXJ0aWNhbFNuYXBPZmZzZXRzKCkpCi0gICAg
ICAgIHVwZGF0ZVNjcm9sbFNuYXBQb2ludHMoU2Nyb2xsRXZlbnRBeGlzOjpWZXJ0aWNhbCwgKnNu
YXBPZmZzZXRzKTsKLSAgICBlbHNlCi0gICAgICAgIHVwZGF0ZVNjcm9sbFNuYXBQb2ludHMoU2Ny
b2xsRXZlbnRBeGlzOjpWZXJ0aWNhbCwgeyB9KTsKKyAgICBpZiAoYXV0byogc25hcE9mZnNldHMg
PSBzY3JvbGxhYmxlQXJlYS52ZXJ0aWNhbFNuYXBPZmZzZXRzKCkpIHsKKyAgICAgICAgaWYgKGF1
dG8qIHNuYXBPZmZzZXRSYW5nZXMgPSBzY3JvbGxhYmxlQXJlYS52ZXJ0aWNhbFNuYXBPZmZzZXRS
YW5nZXMoKSkKKyAgICAgICAgICAgIHVwZGF0ZVNjcm9sbFNuYXBQb2ludHMoU2Nyb2xsRXZlbnRB
eGlzOjpWZXJ0aWNhbCwgKnNuYXBPZmZzZXRzLCAqc25hcE9mZnNldFJhbmdlcyk7CisgICAgICAg
IGVsc2UKKyAgICAgICAgICAgIHVwZGF0ZVNjcm9sbFNuYXBQb2ludHMoU2Nyb2xsRXZlbnRBeGlz
OjpWZXJ0aWNhbCwgKnNuYXBPZmZzZXRzLCB7IH0pOworICAgIH0gZWxzZQorICAgICAgICB1cGRh
dGVTY3JvbGxTbmFwUG9pbnRzKFNjcm9sbEV2ZW50QXhpczo6VmVydGljYWwsIHsgfSwgeyB9KTsK
IH0KIAotdm9pZCBTY3JvbGxDb250cm9sbGVyOjp1cGRhdGVTY3JvbGxTbmFwUG9pbnRzKFNjcm9s
bEV2ZW50QXhpcyBheGlzLCBjb25zdCBWZWN0b3I8TGF5b3V0VW5pdD4mIHNuYXBQb2ludHMpCit2
b2lkIFNjcm9sbENvbnRyb2xsZXI6OnVwZGF0ZVNjcm9sbFNuYXBQb2ludHMoU2Nyb2xsRXZlbnRB
eGlzIGF4aXMsIGNvbnN0IFZlY3RvcjxMYXlvdXRVbml0PiYgc25hcFBvaW50cywgY29uc3QgVmVj
dG9yPFNjcm9sbE9mZnNldFJhbmdlPExheW91dFVuaXQ+PiYgc25hcFJhbmdlcykKIHsKICAgICBp
ZiAoIW1fc2Nyb2xsU25hcFN0YXRlKSB7CiAgICAgICAgIGlmIChzbmFwUG9pbnRzLmlzRW1wdHko
KSkKQEAgLTYwNCw3ICs2MTEsNyBAQCB2b2lkIFNjcm9sbENvbnRyb2xsZXI6OnVwZGF0ZVNjcm9s
bFNuYXBQb2ludHMoU2Nyb2xsRXZlbnRBeGlzIGF4aXMsIGNvbnN0IFZlY3RvcgogICAgIGlmIChz
bmFwUG9pbnRzLmlzRW1wdHkoKSAmJiBtX3Njcm9sbFNuYXBTdGF0ZS0+c25hcE9mZnNldHNGb3JB
eGlzKG90aGVyU2Nyb2xsRXZlbnRBeGlzKGF4aXMpKS5pc0VtcHR5KCkpCiAgICAgICAgIG1fc2Ny
b2xsU25hcFN0YXRlID0gbnVsbHB0cjsKICAgICBlbHNlCi0gICAgICAgIG1fc2Nyb2xsU25hcFN0
YXRlLT5zZXRTbmFwT2Zmc2V0c0ZvckF4aXMoYXhpcywgc25hcFBvaW50cyk7CisgICAgICAgIG1f
c2Nyb2xsU25hcFN0YXRlLT5zZXRTbmFwT2Zmc2V0c0FuZFBvc2l0aW9uUmFuZ2VzRm9yQXhpcyhh
eGlzLCBzbmFwUG9pbnRzLCBzbmFwUmFuZ2VzKTsKIH0KIAogdm9pZCBTY3JvbGxDb250cm9sbGVy
OjpzdGFydFNjcm9sbFNuYXBUaW1lcigpCkBAIC02ODAsNyArNjg3LDcgQEAgdm9pZCBTY3JvbGxD
b250cm9sbGVyOjpzZXROZWFyZXN0U2Nyb2xsU25hcEluZGV4Rm9yQXhpc0FuZE9mZnNldChTY3Jv
bGxFdmVudEF4aXMKICAgICBMYXlvdXRVbml0IGNsYW1wZWRPZmZzZXQgPSBzdGQ6Om1pbihzdGQ6
Om1heChMYXlvdXRVbml0KG9mZnNldCAvIHNjYWxlRmFjdG9yKSwgc25hcE9mZnNldHMuZmlyc3Qo
KSksIHNuYXBPZmZzZXRzLmxhc3QoKSk7CiAKICAgICB1bnNpZ25lZCBhY3RpdmVJbmRleCA9IDA7
Ci0gICAgY2xvc2VzdFNuYXBPZmZzZXQ8TGF5b3V0VW5pdCwgZmxvYXQ+KHNuYXBTdGF0ZS5zbmFw
T2Zmc2V0c0ZvckF4aXMoYXhpcyksIGNsYW1wZWRPZmZzZXQsIDAsIGFjdGl2ZUluZGV4KTsKKyAg
ICBjbG9zZXN0U25hcE9mZnNldChzbmFwU3RhdGUuc25hcE9mZnNldHNGb3JBeGlzKGF4aXMpLCBz
bmFwU3RhdGUuc25hcE9mZnNldFJhbmdlc0ZvckF4aXMoYXhpcyksIGNsYW1wZWRPZmZzZXQsIDAs
IGFjdGl2ZUluZGV4KTsKIAogICAgIGlmIChhY3RpdmVJbmRleCA9PSBhY3RpdmVTY3JvbGxTbmFw
SW5kZXhGb3JBeGlzKGF4aXMpKQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9TY3JvbGxTbmFwQW5pbWF0b3JTdGF0ZS5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvU2Nyb2xsU25hcEFuaW1hdG9yU3RhdGUuaAppbmRleCA4
ZjI2ZTcyZDI1YjRkYzg4ODFmZTAwNjZkZmY2YzQ1YTg5YzNmN2U4Li4xNTBkYjBiYmMwZDkxZTk0
MGMwYThiMmUxNjU5MWZhM2ZiNjQ0MmJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9jb2NvYS9TY3JvbGxTbmFwQW5pbWF0b3JTdGF0ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2NvY29hL1Njcm9sbFNuYXBBbmltYXRvclN0YXRlLmgKQEAgLTMzLDYgKzMzLDcg
QEAKICNpbmNsdWRlICJGbG9hdFNpemUuaCIKICNpbmNsdWRlICJMYXlvdXRQb2ludC5oIgogI2lu
Y2x1ZGUgIlBsYXRmb3JtV2hlZWxFdmVudC5oIgorI2luY2x1ZGUgIlNjcm9sbFNuYXBPZmZzZXRz
SW5mby5oIgogI2luY2x1ZGUgIlNjcm9sbFR5cGVzLmgiCiAjaW5jbHVkZSAiU2Nyb2xsaW5nTW9t
ZW50dW1DYWxjdWxhdG9yLmgiCiAjaW5jbHVkZSA8d3RmL01vbm90b25pY1RpbWUuaD4KQEAgLTQ4
LDE3ICs0OSwyNSBAQCBlbnVtIGNsYXNzIFNjcm9sbFNuYXBTdGF0ZSB7CiAKIGNsYXNzIFNjcm9s
bFNuYXBBbmltYXRvclN0YXRlIHsKIHB1YmxpYzoKLSAgICBWZWN0b3I8TGF5b3V0VW5pdD4gc25h
cE9mZnNldHNGb3JBeGlzKFNjcm9sbEV2ZW50QXhpcyBheGlzKSBjb25zdAorICAgIGNvbnN0IFZl
Y3RvcjxMYXlvdXRVbml0PiYgc25hcE9mZnNldHNGb3JBeGlzKFNjcm9sbEV2ZW50QXhpcyBheGlz
KSBjb25zdAogICAgIHsKICAgICAgICAgcmV0dXJuIGF4aXMgPT0gU2Nyb2xsRXZlbnRBeGlzOjpI
b3Jpem9udGFsID8gbV9zbmFwT2Zmc2V0c1ggOiBtX3NuYXBPZmZzZXRzWTsKICAgICB9CiAKLSAg
ICB2b2lkIHNldFNuYXBPZmZzZXRzRm9yQXhpcyhTY3JvbGxFdmVudEF4aXMgYXhpcywgY29uc3Qg
VmVjdG9yPExheW91dFVuaXQ+JiBzbmFwT2Zmc2V0cykKKyAgICBjb25zdCBWZWN0b3I8U2Nyb2xs
T2Zmc2V0UmFuZ2U8TGF5b3V0VW5pdD4+JiBzbmFwT2Zmc2V0UmFuZ2VzRm9yQXhpcyhTY3JvbGxF
dmVudEF4aXMgYXhpcykgY29uc3QKICAgICB7Ci0gICAgICAgIGlmIChheGlzID09IFNjcm9sbEV2
ZW50QXhpczo6SG9yaXpvbnRhbCkKKyAgICAgICAgcmV0dXJuIGF4aXMgPT0gU2Nyb2xsRXZlbnRB
eGlzOjpIb3Jpem9udGFsID8gbV9zbmFwT2Zmc2V0UmFuZ2VzWCA6IG1fc25hcE9mZnNldFJhbmdl
c1k7CisgICAgfQorCisgICAgdm9pZCBzZXRTbmFwT2Zmc2V0c0FuZFBvc2l0aW9uUmFuZ2VzRm9y
QXhpcyhTY3JvbGxFdmVudEF4aXMgYXhpcywgY29uc3QgVmVjdG9yPExheW91dFVuaXQ+JiBzbmFw
T2Zmc2V0cywgY29uc3QgVmVjdG9yPFNjcm9sbE9mZnNldFJhbmdlPExheW91dFVuaXQ+PiYgc25h
cE9mZnNldFJhbmdlcykKKyAgICB7CisgICAgICAgIGlmIChheGlzID09IFNjcm9sbEV2ZW50QXhp
czo6SG9yaXpvbnRhbCkgewogICAgICAgICAgICAgbV9zbmFwT2Zmc2V0c1ggPSBzbmFwT2Zmc2V0
czsKLSAgICAgICAgZWxzZQorICAgICAgICAgICAgbV9zbmFwT2Zmc2V0UmFuZ2VzWCA9IHNuYXBP
ZmZzZXRSYW5nZXM7CisgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBtX3NuYXBPZmZzZXRz
WSA9IHNuYXBPZmZzZXRzOworICAgICAgICAgICAgbV9zbmFwT2Zmc2V0UmFuZ2VzWSA9IHNuYXBP
ZmZzZXRSYW5nZXM7CisgICAgICAgIH0KICAgICB9CiAKICAgICBTY3JvbGxTbmFwU3RhdGUgY3Vy
cmVudFN0YXRlKCkgY29uc3QgeyByZXR1cm4gbV9jdXJyZW50U3RhdGU7IH0KQEAgLTg1LDE1ICs5
NCwxNyBAQCBwdWJsaWM6CiAgICAgdm9pZCB0cmFuc2l0aW9uVG9EZXN0aW5hdGlvblJlYWNoZWRT
dGF0ZSgpOwogCiBwcml2YXRlOgotICAgIGZsb2F0IHRhcmdldE9mZnNldEZvclN0YXJ0T2Zmc2V0
KFNjcm9sbEV2ZW50QXhpcywgZmxvYXQgbWF4U2Nyb2xsT2Zmc2V0LCBmbG9hdCBzdGFydE9mZnNl
dCwgZmxvYXQgcGFnZVNjYWxlLCBmbG9hdCBkZWx0YSwgdW5zaWduZWQmIG91dEFjdGl2ZVNuYXBJ
bmRleCkgY29uc3Q7CisgICAgZmxvYXQgdGFyZ2V0T2Zmc2V0Rm9yU3RhcnRPZmZzZXQoY29uc3Qg
VmVjdG9yPExheW91dFVuaXQ+JiBzbmFwT2Zmc2V0cywgY29uc3QgVmVjdG9yPFNjcm9sbE9mZnNl
dFJhbmdlPExheW91dFVuaXQ+PiYgc25hcE9mZnNldFJhbmdlcywgZmxvYXQgbWF4U2Nyb2xsT2Zm
c2V0LCBmbG9hdCBzdGFydE9mZnNldCwgZmxvYXQgcHJlZGljdGVkT2Zmc2V0LCBmbG9hdCBwYWdl
U2NhbGUsIGZsb2F0IGRlbHRhLCB1bnNpZ25lZCYgb3V0QWN0aXZlU25hcEluZGV4KSBjb25zdDsK
ICAgICB2b2lkIHRlYXJkb3duQW5pbWF0aW9uRm9yU3RhdGUoU2Nyb2xsU25hcFN0YXRlKTsKICAg
ICB2b2lkIHNldHVwQW5pbWF0aW9uRm9yU3RhdGUoU2Nyb2xsU25hcFN0YXRlLCBjb25zdCBGbG9h
dFNpemUmIGNvbnRlbnRTaXplLCBjb25zdCBGbG9hdFNpemUmIHZpZXdwb3J0U2l6ZSwgZmxvYXQg
cGFnZVNjYWxlLCBjb25zdCBGbG9hdFBvaW50JiBpbml0aWFsT2Zmc2V0LCBjb25zdCBGbG9hdFNp
emUmIGluaXRpYWxWZWxvY2l0eSwgY29uc3QgRmxvYXRTaXplJiBpbml0aWFsRGVsdGEpOwogCiAg
ICAgU2Nyb2xsU25hcFN0YXRlIG1fY3VycmVudFN0YXRlIHsgU2Nyb2xsU25hcFN0YXRlOjpVc2Vy
SW50ZXJhY3Rpb24gfTsKIAogICAgIFZlY3RvcjxMYXlvdXRVbml0PiBtX3NuYXBPZmZzZXRzWDsK
KyAgICBWZWN0b3I8U2Nyb2xsT2Zmc2V0UmFuZ2U8TGF5b3V0VW5pdD4+IG1fc25hcE9mZnNldFJh
bmdlc1g7CiAgICAgdW5zaWduZWQgbV9hY3RpdmVTbmFwSW5kZXhYIHsgMCB9OwogICAgIFZlY3Rv
cjxMYXlvdXRVbml0PiBtX3NuYXBPZmZzZXRzWTsKKyAgICBWZWN0b3I8U2Nyb2xsT2Zmc2V0UmFu
Z2U8TGF5b3V0VW5pdD4+IG1fc25hcE9mZnNldFJhbmdlc1k7CiAgICAgdW5zaWduZWQgbV9hY3Rp
dmVTbmFwSW5kZXhZIHsgMCB9OwogCiAgICAgTW9ub3RvbmljVGltZSBtX3N0YXJ0VGltZTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1Njcm9sbFNuYXBBbmltYXRv
clN0YXRlLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvU2Nyb2xsU25hcEFuaW1h
dG9yU3RhdGUubW0KaW5kZXggN2UyMDE4MTY3NWYwNjE5NGUwYjkzMTBhYWM4NTU3OTIyMDBhYzY2
Ni4uZTU0OTQwOTNiMWU0MjE0NjA2YzQ0Y2Q3MzQ0NWUyMThlMTI5YmEwMiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvU2Nyb2xsU25hcEFuaW1hdG9yU3RhdGUubW0K
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvU2Nyb2xsU25hcEFuaW1hdG9yU3Rh
dGUubW0KQEAgLTMxLDEyICszMSw2IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotc3RhdGlj
IGNvbnN0IGZsb2F0IGluZXJ0aWFsU2Nyb2xsUHJlZGljdGlvbkZhY3RvciA9IDEwOwotc3RhdGlj
IGlubGluZSBmbG9hdCBwcm9qZWN0ZWRJbmVydGlhbFNjcm9sbERpc3RhbmNlKGZsb2F0IGluaXRp
YWxXaGVlbERlbHRhKQotewotICAgIHJldHVybiBpbmVydGlhbFNjcm9sbFByZWRpY3Rpb25GYWN0
b3IgKiBpbml0aWFsV2hlZWxEZWx0YTsKLX0KLQogdm9pZCBTY3JvbGxTbmFwQW5pbWF0b3JTdGF0
ZTo6dHJhbnNpdGlvblRvU25hcEFuaW1hdGlvblN0YXRlKGNvbnN0IEZsb2F0U2l6ZSYgY29udGVu
dFNpemUsIGNvbnN0IEZsb2F0U2l6ZSYgdmlld3BvcnRTaXplLCBmbG9hdCBwYWdlU2NhbGUsIGNv
bnN0IEZsb2F0UG9pbnQmIGluaXRpYWxPZmZzZXQpCiB7CiAgICAgc2V0dXBBbmltYXRpb25Gb3JT
dGF0ZShTY3JvbGxTbmFwU3RhdGU6OlNuYXBwaW5nLCBjb250ZW50U2l6ZSwgdmlld3BvcnRTaXpl
LCBwYWdlU2NhbGUsIGluaXRpYWxPZmZzZXQsIHsgfSwgeyB9KTsKQEAgLTUzLDkgKzQ3LDExIEBA
IHZvaWQgU2Nyb2xsU25hcEFuaW1hdG9yU3RhdGU6OnNldHVwQW5pbWF0aW9uRm9yU3RhdGUoU2Ny
b2xsU25hcFN0YXRlIHN0YXRlLCBjb25zCiAgICAgaWYgKG1fY3VycmVudFN0YXRlID09IHN0YXRl
KQogICAgICAgICByZXR1cm47CiAKLSAgICBmbG9hdCB0YXJnZXRPZmZzZXRYID0gdGFyZ2V0T2Zm
c2V0Rm9yU3RhcnRPZmZzZXQoU2Nyb2xsRXZlbnRBeGlzOjpIb3Jpem9udGFsLCBjb250ZW50U2l6
ZS53aWR0aCgpIC0gdmlld3BvcnRTaXplLndpZHRoKCksIGluaXRpYWxPZmZzZXQueCgpLCBwYWdl
U2NhbGUsIGluaXRpYWxEZWx0YS53aWR0aCgpLCBtX2FjdGl2ZVNuYXBJbmRleFgpOwotICAgIGZs
b2F0IHRhcmdldE9mZnNldFkgPSB0YXJnZXRPZmZzZXRGb3JTdGFydE9mZnNldChTY3JvbGxFdmVu
dEF4aXM6OlZlcnRpY2FsLCBjb250ZW50U2l6ZS5oZWlnaHQoKSAtIHZpZXdwb3J0U2l6ZS5oZWln
aHQoKSwgaW5pdGlhbE9mZnNldC55KCksIHBhZ2VTY2FsZSwgaW5pdGlhbERlbHRhLmhlaWdodCgp
LCBtX2FjdGl2ZVNuYXBJbmRleFkpOwotICAgIG1fbW9tZW50dW1DYWxjdWxhdG9yID0gU2Nyb2xs
aW5nTW9tZW50dW1DYWxjdWxhdG9yOjpjcmVhdGUodmlld3BvcnRTaXplLCBjb250ZW50U2l6ZSwg
aW5pdGlhbE9mZnNldCwgRmxvYXRQb2ludCh0YXJnZXRPZmZzZXRYLCB0YXJnZXRPZmZzZXRZKSwg
aW5pdGlhbERlbHRhLCBpbml0aWFsVmVsb2NpdHkpOworICAgIG1fbW9tZW50dW1DYWxjdWxhdG9y
ID0gU2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yOjpjcmVhdGUodmlld3BvcnRTaXplLCBjb250
ZW50U2l6ZSwgaW5pdGlhbE9mZnNldCwgaW5pdGlhbERlbHRhLCBpbml0aWFsVmVsb2NpdHkpOwor
ICAgIGF1dG8gcHJlZGljdGVkU2Nyb2xsVGFyZ2V0ID0gbV9tb21lbnR1bUNhbGN1bGF0b3ItPnBy
ZWRpY3RlZERlc3RpbmF0aW9uT2Zmc2V0KCk7CisgICAgZmxvYXQgdGFyZ2V0T2Zmc2V0WCA9IHRh
cmdldE9mZnNldEZvclN0YXJ0T2Zmc2V0KG1fc25hcE9mZnNldHNYLCBtX3NuYXBPZmZzZXRSYW5n
ZXNYLCBjb250ZW50U2l6ZS53aWR0aCgpIC0gdmlld3BvcnRTaXplLndpZHRoKCksIGluaXRpYWxP
ZmZzZXQueCgpLCBwcmVkaWN0ZWRTY3JvbGxUYXJnZXQud2lkdGgoKSwgcGFnZVNjYWxlLCBpbml0
aWFsRGVsdGEud2lkdGgoKSwgbV9hY3RpdmVTbmFwSW5kZXhYKTsKKyAgICBmbG9hdCB0YXJnZXRP
ZmZzZXRZID0gdGFyZ2V0T2Zmc2V0Rm9yU3RhcnRPZmZzZXQobV9zbmFwT2Zmc2V0c1ksIG1fc25h
cE9mZnNldFJhbmdlc1ksIGNvbnRlbnRTaXplLmhlaWdodCgpIC0gdmlld3BvcnRTaXplLmhlaWdo
dCgpLCBpbml0aWFsT2Zmc2V0LnkoKSwgcHJlZGljdGVkU2Nyb2xsVGFyZ2V0LmhlaWdodCgpLCBw
YWdlU2NhbGUsIGluaXRpYWxEZWx0YS5oZWlnaHQoKSwgbV9hY3RpdmVTbmFwSW5kZXhZKTsKKyAg
ICBtX21vbWVudHVtQ2FsY3VsYXRvci0+c2V0UmV0YXJnZXRlZFNjcm9sbE9mZnNldCh7IHRhcmdl
dE9mZnNldFgsIHRhcmdldE9mZnNldFkgfSk7CiAgICAgbV9zdGFydFRpbWUgPSBNb25vdG9uaWNU
aW1lOjpub3coKTsKICAgICBtX2N1cnJlbnRTdGF0ZSA9IHN0YXRlOwogfQpAQCAtOTMsMTggKzg5
LDE3IEBAIEZsb2F0UG9pbnQgU2Nyb2xsU25hcEFuaW1hdG9yU3RhdGU6OmN1cnJlbnRBbmltYXRl
ZFNjcm9sbE9mZnNldChib29sJiBpc0FuaW1hdGlvCiAgICAgcmV0dXJuIG1fbW9tZW50dW1DYWxj
dWxhdG9yLT5zY3JvbGxPZmZzZXRBZnRlckVsYXBzZWRUaW1lKGVsYXBzZWRUaW1lKTsKIH0KIAot
ZmxvYXQgU2Nyb2xsU25hcEFuaW1hdG9yU3RhdGU6OnRhcmdldE9mZnNldEZvclN0YXJ0T2Zmc2V0
KFNjcm9sbEV2ZW50QXhpcyBheGlzLCBmbG9hdCBtYXhTY3JvbGxPZmZzZXQsIGZsb2F0IHN0YXJ0
T2Zmc2V0LCBmbG9hdCBwYWdlU2NhbGUsIGZsb2F0IGluaXRpYWxEZWx0YSwgdW5zaWduZWQmIG91
dEFjdGl2ZVNuYXBJbmRleCkgY29uc3QKK2Zsb2F0IFNjcm9sbFNuYXBBbmltYXRvclN0YXRlOjp0
YXJnZXRPZmZzZXRGb3JTdGFydE9mZnNldChjb25zdCBWZWN0b3I8TGF5b3V0VW5pdD4mIHNuYXBP
ZmZzZXRzLCBjb25zdCBWZWN0b3I8U2Nyb2xsT2Zmc2V0UmFuZ2U8TGF5b3V0VW5pdD4+JiBzbmFw
T2Zmc2V0UmFuZ2VzLCBmbG9hdCBtYXhTY3JvbGxPZmZzZXQsIGZsb2F0IHN0YXJ0T2Zmc2V0LCBm
bG9hdCBwcmVkaWN0ZWRPZmZzZXQsIGZsb2F0IHBhZ2VTY2FsZSwgZmxvYXQgaW5pdGlhbERlbHRh
LCB1bnNpZ25lZCYgb3V0QWN0aXZlU25hcEluZGV4KSBjb25zdAogewotICAgIGF1dG8gc25hcE9m
ZnNldHMgPSBzbmFwT2Zmc2V0c0ZvckF4aXMoYXhpcyk7Ci0gICAgaWYgKCFzbmFwT2Zmc2V0cy5z
aXplKCkpIHsKLSAgICAgICAgb3V0QWN0aXZlU25hcEluZGV4ID0gMDsKKyAgICBpZiAoc25hcE9m
ZnNldHMuaXNFbXB0eSgpKSB7CisgICAgICAgIG91dEFjdGl2ZVNuYXBJbmRleCA9IGludmFsaWRT
bmFwT2Zmc2V0SW5kZXg7CiAgICAgICAgIHJldHVybiBjbGFtcFRvPGZsb2F0PihzdGFydE9mZnNl
dCwgMCwgbWF4U2Nyb2xsT2Zmc2V0KTsKICAgICB9CiAKLSAgICBmbG9hdCBwcm9qZWN0ZWREZXN0
aW5hdGlvbiA9IChzdGFydE9mZnNldCArIHByb2plY3RlZEluZXJ0aWFsU2Nyb2xsRGlzdGFuY2Uo
aW5pdGlhbERlbHRhKSkgLyBwYWdlU2NhbGU7Ci0gICAgZmxvYXQgdGFyZ2V0T2Zmc2V0ID0gY2xv
c2VzdFNuYXBPZmZzZXQ8TGF5b3V0VW5pdCwgZmxvYXQ+KHNuYXBPZmZzZXRzLCBwcm9qZWN0ZWRE
ZXN0aW5hdGlvbiwgaW5pdGlhbERlbHRhLCBvdXRBY3RpdmVTbmFwSW5kZXgpOwotICAgIHRhcmdl
dE9mZnNldCA9IGNsYW1wVG88ZmxvYXQ+KHRhcmdldE9mZnNldCwgc25hcE9mZnNldHMuZmlyc3Qo
KSwgc25hcE9mZnNldHMubGFzdCgpKTsKLSAgICB0YXJnZXRPZmZzZXQgPSBjbGFtcFRvPGZsb2F0
Pih0YXJnZXRPZmZzZXQsIDAsIG1heFNjcm9sbE9mZnNldCk7CisgICAgZmxvYXQgdGFyZ2V0T2Zm
c2V0ID0gY2xvc2VzdFNuYXBPZmZzZXQoc25hcE9mZnNldHMsIHNuYXBPZmZzZXRSYW5nZXMsIHBy
ZWRpY3RlZE9mZnNldCAvIHBhZ2VTY2FsZSwgaW5pdGlhbERlbHRhLCBvdXRBY3RpdmVTbmFwSW5k
ZXgpOworICAgIGZsb2F0IG1pbmltdW1UYXJnZXRPZmZzZXQgPSBzdGQ6Om1heDxmbG9hdD4oMCwg
c25hcE9mZnNldHMuZmlyc3QoKSk7CisgICAgZmxvYXQgbWF4aW11bVRhcmdldE9mZnNldCA9IHN0
ZDo6bWluPGZsb2F0PihtYXhTY3JvbGxPZmZzZXQsIHNuYXBPZmZzZXRzLmxhc3QoKSk7CisgICAg
dGFyZ2V0T2Zmc2V0ID0gY2xhbXBUbzxmbG9hdD4odGFyZ2V0T2Zmc2V0LCBtaW5pbXVtVGFyZ2V0
T2Zmc2V0LCBtYXhpbXVtVGFyZ2V0T2Zmc2V0KTsKICAgICByZXR1cm4gcGFnZVNjYWxlICogdGFy
Z2V0T2Zmc2V0OwogfQogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckxheWVyQ29tcG9zaXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyTGF5ZXJDb21wb3NpdG9yLmNwcAppbmRleCA2MzQyMjEzNWMxYTM5YzU5YWNmNTkyMzkxNzFj
MzFjYWUzNTBjYzI0Li5lZWQ1YzU2YTMxNDEyM2Y2OGQ0ZTcxMzRjMzkzNTZhN2Y3OGJjOTM5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9y
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9y
LmNwcApAQCAtMzk1NSw2ICszOTU1LDEwIEBAIHZvaWQgUmVuZGVyTGF5ZXJDb21wb3NpdG9yOjp1
cGRhdGVTY3JvbGxDb29yZGluYXRlZExheWVyKFJlbmRlckxheWVyJiBsYXllciwgTGF5CiAgICAg
ICAgICAgICAgICAgc2Nyb2xsaW5nR2VvbWV0cnkuaG9yaXpvbnRhbFNuYXBPZmZzZXRzID0gKm9m
ZnNldHM7CiAgICAgICAgICAgICBpZiAoY29uc3QgVmVjdG9yPExheW91dFVuaXQ+KiBvZmZzZXRz
ID0gbGF5ZXIudmVydGljYWxTbmFwT2Zmc2V0cygpKQogICAgICAgICAgICAgICAgIHNjcm9sbGlu
Z0dlb21ldHJ5LnZlcnRpY2FsU25hcE9mZnNldHMgPSAqb2Zmc2V0czsKKyAgICAgICAgICAgIGlm
IChjb25zdCBWZWN0b3I8U2Nyb2xsT2Zmc2V0UmFuZ2U8TGF5b3V0VW5pdD4+KiByYW5nZXMgPSBs
YXllci5ob3Jpem9udGFsU25hcE9mZnNldFJhbmdlcygpKQorICAgICAgICAgICAgICAgIHNjcm9s
bGluZ0dlb21ldHJ5Lmhvcml6b250YWxTbmFwT2Zmc2V0UmFuZ2VzID0gKnJhbmdlczsKKyAgICAg
ICAgICAgIGlmIChjb25zdCBWZWN0b3I8U2Nyb2xsT2Zmc2V0UmFuZ2U8TGF5b3V0VW5pdD4+KiBy
YW5nZXMgPSBsYXllci52ZXJ0aWNhbFNuYXBPZmZzZXRSYW5nZXMoKSkKKyAgICAgICAgICAgICAg
ICBzY3JvbGxpbmdHZW9tZXRyeS52ZXJ0aWNhbFNuYXBPZmZzZXRSYW5nZXMgPSAqcmFuZ2VzOwog
ICAgICAgICAgICAgc2Nyb2xsaW5nR2VvbWV0cnkuY3VycmVudEhvcml6b250YWxTbmFwUG9pbnRJ
bmRleCA9IGxheWVyLmN1cnJlbnRIb3Jpem9udGFsU25hcFBvaW50SW5kZXgoKTsKICAgICAgICAg
ICAgIHNjcm9sbGluZ0dlb21ldHJ5LmN1cnJlbnRWZXJ0aWNhbFNuYXBQb2ludEluZGV4ID0gbGF5
ZXIuY3VycmVudFZlcnRpY2FsU25hcFBvaW50SW5kZXgoKTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwIGIvU291cmNlL1dlYkNvcmUvdGVz
dGluZy9JbnRlcm5hbHMuY3BwCmluZGV4IDM3ZjQ3MzdkNzY1YTZjZWE3MmUwOGRhNWJkYzdhZjNi
M2UxZDcxOTMuLmQ3NjIxZWQxZmU1N2NiNjRhZjc5YzYyNzAxYjAyNGM1NDU3ZWM0ZDYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKQEAgLTExNyw2ICsxMTcsNyBAQAogI2luY2x1
ZGUgIlNjaGVtZVJlZ2lzdHJ5LmgiCiAjaW5jbHVkZSAiU2NyaXB0ZWRBbmltYXRpb25Db250cm9s
bGVyLmgiCiAjaW5jbHVkZSAiU2Nyb2xsaW5nQ29vcmRpbmF0b3IuaCIKKyNpbmNsdWRlICJTY3Jv
bGxpbmdNb21lbnR1bUNhbGN1bGF0b3IuaCIKICNpbmNsdWRlICJTZXJpYWxpemVkU2NyaXB0VmFs
dWUuaCIKICNpbmNsdWRlICJTZXR0aW5ncy5oIgogI2luY2x1ZGUgIlNoYWRvd1Jvb3QuaCIKQEAg
LTMyODYsNiArMzI4NywxMSBAQCBzdGF0aWMgdm9pZCBhcHBlbmRPZmZzZXRzKFN0cmluZ0J1aWxk
ZXImIGJ1aWxkZXIsIGNvbnN0IFZlY3RvcjxMYXlvdXRVbml0PiYgc25hcAogICAgIGJ1aWxkZXIu
YXBwZW5kTGl0ZXJhbCgiIH0iKTsKIH0KICAgICAKK3ZvaWQgSW50ZXJuYWxzOjpzZXRQbGF0Zm9y
bU1vbWVudHVtU2Nyb2xsaW5nUHJlZGljdGlvbkVuYWJsZWQoYm9vbCBlbmFibGVkKQoreworICAg
IFNjcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvcjo6c2V0UGxhdGZvcm1Nb21lbnR1bVNjcm9sbGlu
Z1ByZWRpY3Rpb25FbmFibGVkKGVuYWJsZWQpOworfQorCiBFeGNlcHRpb25PcjxTdHJpbmc+IElu
dGVybmFsczo6c2Nyb2xsU25hcE9mZnNldHMoRWxlbWVudCYgZWxlbWVudCkKIHsKICAgICBpZiAo
IWVsZW1lbnQucmVuZGVyQm94KCkpCkBAIC0zMzEzLDE3ICszMzE5LDIxIEBAIEV4Y2VwdGlvbk9y
PFN0cmluZz4gSW50ZXJuYWxzOjpzY3JvbGxTbmFwT2Zmc2V0cyhFbGVtZW50JiBlbGVtZW50KQog
ICAgIAogICAgIFN0cmluZ0J1aWxkZXIgcmVzdWx0OwogCi0gICAgaWYgKHNjcm9sbGFibGVBcmVh
LT5ob3Jpem9udGFsU25hcE9mZnNldHMoKSkgewotICAgICAgICByZXN1bHQuYXBwZW5kTGl0ZXJh
bCgiaG9yaXpvbnRhbCA9ICIpOwotICAgICAgICBhcHBlbmRPZmZzZXRzKHJlc3VsdCwgKnNjcm9s
bGFibGVBcmVhLT5ob3Jpem9udGFsU25hcE9mZnNldHMoKSk7CisgICAgaWYgKGF1dG8qIG9mZnNl
dHMgPSBzY3JvbGxhYmxlQXJlYS0+aG9yaXpvbnRhbFNuYXBPZmZzZXRzKCkpIHsKKyAgICAgICAg
aWYgKG9mZnNldHMtPnNpemUoKSkgeworICAgICAgICAgICAgcmVzdWx0LmFwcGVuZExpdGVyYWwo
Imhvcml6b250YWwgPSAiKTsKKyAgICAgICAgICAgIGFwcGVuZE9mZnNldHMocmVzdWx0LCAqb2Zm
c2V0cyk7CisgICAgICAgIH0KICAgICB9CiAKLSAgICBpZiAoc2Nyb2xsYWJsZUFyZWEtPnZlcnRp
Y2FsU25hcE9mZnNldHMoKSkgewotICAgICAgICBpZiAocmVzdWx0Lmxlbmd0aCgpKQotICAgICAg
ICAgICAgcmVzdWx0LmFwcGVuZExpdGVyYWwoIiwgIik7CisgICAgaWYgKGF1dG8qIG9mZnNldHMg
PSBzY3JvbGxhYmxlQXJlYS0+dmVydGljYWxTbmFwT2Zmc2V0cygpKSB7CisgICAgICAgIGlmIChv
ZmZzZXRzLT5zaXplKCkpIHsKKyAgICAgICAgICAgIGlmIChyZXN1bHQubGVuZ3RoKCkpCisgICAg
ICAgICAgICAgICAgcmVzdWx0LmFwcGVuZExpdGVyYWwoIiwgIik7CiAKLSAgICAgICAgcmVzdWx0
LmFwcGVuZExpdGVyYWwoInZlcnRpY2FsID0gIik7Ci0gICAgICAgIGFwcGVuZE9mZnNldHMocmVz
dWx0LCAqc2Nyb2xsYWJsZUFyZWEtPnZlcnRpY2FsU25hcE9mZnNldHMoKSk7CisgICAgICAgICAg
ICByZXN1bHQuYXBwZW5kTGl0ZXJhbCgidmVydGljYWwgPSAiKTsKKyAgICAgICAgICAgIGFwcGVu
ZE9mZnNldHMocmVzdWx0LCAqb2Zmc2V0cyk7CisgICAgICAgIH0KICAgICB9CiAKICAgICByZXR1
cm4gcmVzdWx0LnRvU3RyaW5nKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5n
L0ludGVybmFscy5oIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaAppbmRleCA4
Yjk2NTBhMTY4YmMwYTMzYTk0ZGFjMzFkYWUxYjZlZTA0NjJjMmYxLi5kMGQ0MmRhZjIwZDE2YWIx
NjUwODI3YTQ4YmU0Y2E2OWZlMzFiZWQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0
aW5nL0ludGVybmFscy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgK
QEAgLTQ3OCw2ICs0NzgsNyBAQCBwdWJsaWM6CiAKICNpZiBFTkFCTEUoQ1NTX1NDUk9MTF9TTkFQ
KQogICAgIEV4Y2VwdGlvbk9yPFN0cmluZz4gc2Nyb2xsU25hcE9mZnNldHMoRWxlbWVudCYpOwor
ICAgIHZvaWQgc2V0UGxhdGZvcm1Nb21lbnR1bVNjcm9sbGluZ1ByZWRpY3Rpb25FbmFibGVkKGJv
b2wpOwogI2VuZGlmCiAKICAgICBFeGNlcHRpb25PcjxTdHJpbmc+IHBhdGhTdHJpbmdXaXRoU2hy
aW5rV3JhcHBlZFJlY3RzKGNvbnN0IFZlY3Rvcjxkb3VibGU+JiByZWN0Q29tcG9uZW50cywgZG91
YmxlIHJhZGl1cyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFs
cy5pZGwgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwKaW5kZXggYzBlNWZi
YjEyMTkzYjZhNDQ0ZWFiYzg5ZGVlMjAxMzQxYTVkMzVmZS4uMzRlZDQ2ZDBlZjkyODNiMzUyYTg1
Y2FkYzVkODgzNDlmMjYwMTk2OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9J
bnRlcm5hbHMuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbApA
QCAtNDU0LDYgKzQ1NCw3IEBAIGVudW0gRXZlbnRUaHJvdHRsaW5nQmVoYXZpb3IgewogCiAjaWYg
ZGVmaW5lZChFTkFCTEVfQ1NTX1NDUk9MTF9TTkFQKSAmJiBFTkFCTEVfQ1NTX1NDUk9MTF9TTkFQ
CiAgICAgW01heVRocm93RXhjZXB0aW9uXSBET01TdHJpbmcgc2Nyb2xsU25hcE9mZnNldHMoRWxl
bWVudCBlbGVtZW50KTsKKyAgICB2b2lkIHNldFBsYXRmb3JtTW9tZW50dW1TY3JvbGxpbmdQcmVk
aWN0aW9uRW5hYmxlZChib29sZWFuIGVuYWJsZWQpOwogI2VuZGlmCiAKICAgICBbTWF5VGhyb3dF
eGNlcHRpb25dIERPTVN0cmluZyBwYXRoU3RyaW5nV2l0aFNocmlua1dyYXBwZWRSZWN0cyhzZXF1
ZW5jZTxkb3VibGU+IHJlY3RDb21wb25lbnRzLCBkb3VibGUgcmFkaXVzKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9TY3JvbGxpbmcvUmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0
b3JUcmFuc2FjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvU2Nyb2xsaW5nL1JlbW90
ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yVHJhbnNhY3Rpb24uY3BwCmluZGV4IGJiZGU3NGNmYzBlODlm
NWZiYmU4NmE5NjVkYTY5Y2VlN2U1MGFmZWUuLmEwNTU3MDFhNDE0YzEwYzcxYjBmNGY0OTkxOTYw
NDRmMWM3OWM1Y2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9TY3JvbGxpbmcv
UmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3JUcmFuc2FjdGlvbi5jcHAKKysrIGIvU291cmNlL1dl
YktpdDIvU2hhcmVkL1Njcm9sbGluZy9SZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvclRyYW5zYWN0
aW9uLmNwcApAQCAtMTI3LDYgKzEyNyw4IEBAIHZvaWQgQXJndW1lbnRDb2RlcjxTY3JvbGxpbmdT
dGF0ZVNjcm9sbGluZ05vZGU+OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QKICNpZiBF
TkFCTEUoQ1NTX1NDUk9MTF9TTkFQKQogICAgIFNDUk9MTElOR19OT0RFX0VOQ09ERShTY3JvbGxp
bmdTdGF0ZVNjcm9sbGluZ05vZGU6Okhvcml6b250YWxTbmFwT2Zmc2V0cywgaG9yaXpvbnRhbFNu
YXBPZmZzZXRzKQogICAgIFNDUk9MTElOR19OT0RFX0VOQ09ERShTY3JvbGxpbmdTdGF0ZVNjcm9s
bGluZ05vZGU6OlZlcnRpY2FsU25hcE9mZnNldHMsIHZlcnRpY2FsU25hcE9mZnNldHMpCisgICAg
U0NST0xMSU5HX05PREVfRU5DT0RFKFNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZTo6SG9yaXpv
bnRhbFNuYXBPZmZzZXRSYW5nZXMsIGhvcml6b250YWxTbmFwT2Zmc2V0UmFuZ2VzKQorICAgIFND
Uk9MTElOR19OT0RFX0VOQ09ERShTY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGU6OlZlcnRpY2Fs
U25hcE9mZnNldFJhbmdlcywgdmVydGljYWxTbmFwT2Zmc2V0UmFuZ2VzKQogICAgIFNDUk9MTElO
R19OT0RFX0VOQ09ERShTY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGU6OkN1cnJlbnRIb3Jpem9u
dGFsU25hcE9mZnNldEluZGV4LCBjdXJyZW50SG9yaXpvbnRhbFNuYXBQb2ludEluZGV4KQogICAg
IFNDUk9MTElOR19OT0RFX0VOQ09ERShTY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGU6OkN1cnJl
bnRWZXJ0aWNhbFNuYXBPZmZzZXRJbmRleCwgY3VycmVudFZlcnRpY2FsU25hcFBvaW50SW5kZXgp
CiAjZW5kaWYKQEAgLTIwMiw2ICsyMDQsOCBAQCBib29sIEFyZ3VtZW50Q29kZXI8U2Nyb2xsaW5n
U3RhdGVTY3JvbGxpbmdOb2RlPjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIsIFNjcm9sbAogI2lm
IEVOQUJMRShDU1NfU0NST0xMX1NOQVApCiAgICAgU0NST0xMSU5HX05PREVfREVDT0RFKFNjcm9s
bGluZ1N0YXRlU2Nyb2xsaW5nTm9kZTo6SG9yaXpvbnRhbFNuYXBPZmZzZXRzLCBWZWN0b3I8Zmxv
YXQ+LCBzZXRIb3Jpem9udGFsU25hcE9mZnNldHMpOwogICAgIFNDUk9MTElOR19OT0RFX0RFQ09E
RShTY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGU6OlZlcnRpY2FsU25hcE9mZnNldHMsIFZlY3Rv
cjxmbG9hdD4sIHNldFZlcnRpY2FsU25hcE9mZnNldHMpOworICAgIFNDUk9MTElOR19OT0RFX0RF
Q09ERShTY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGU6Okhvcml6b250YWxTbmFwT2Zmc2V0UmFu
Z2VzLCBWZWN0b3I8U2Nyb2xsT2Zmc2V0UmFuZ2U8ZmxvYXQ+Piwgc2V0SG9yaXpvbnRhbFNuYXBP
ZmZzZXRSYW5nZXMpCisgICAgU0NST0xMSU5HX05PREVfREVDT0RFKFNjcm9sbGluZ1N0YXRlU2Ny
b2xsaW5nTm9kZTo6VmVydGljYWxTbmFwT2Zmc2V0UmFuZ2VzLCBWZWN0b3I8U2Nyb2xsT2Zmc2V0
UmFuZ2U8ZmxvYXQ+Piwgc2V0VmVydGljYWxTbmFwT2Zmc2V0UmFuZ2VzKQogICAgIFNDUk9MTElO
R19OT0RFX0RFQ09ERShTY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGU6OkN1cnJlbnRIb3Jpem9u
dGFsU25hcE9mZnNldEluZGV4LCB1bnNpZ25lZCwgc2V0Q3VycmVudEhvcml6b250YWxTbmFwUG9p
bnRJbmRleCk7CiAgICAgU0NST0xMSU5HX05PREVfREVDT0RFKFNjcm9sbGluZ1N0YXRlU2Nyb2xs
aW5nTm9kZTo6Q3VycmVudFZlcnRpY2FsU25hcE9mZnNldEluZGV4LCB1bnNpZ25lZCwgc2V0Q3Vy
cmVudFZlcnRpY2FsU25hcFBvaW50SW5kZXgpOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcCBiL1NvdXJjZS9XZWJLaXQy
L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwCmluZGV4IGYwZmZiNzcyNmE1M2VlNGY4
NDIzZDQ2Yjc5YmIwZmRhZjA1ZGU3YzQuLjg5MTExNzk1ZTc4ZGQ2OTk4NWEwMDRhNjI2N2YwM2Iy
ZGU4M2MwZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJDb3JlQXJndW1l
bnRDb2RlcnMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJDb3JlQXJndW1lbnRD
b2RlcnMuY3BwCkBAIC0yNDY3LDQgKzI0NjcsMjkgQEAgYm9vbCBBcmd1bWVudENvZGVyPElEQktl
eVBhdGg+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlciwgSURCS2V5UGF0aCYga2V5UGF0aCkKIH0K
ICNlbmRpZgogCisjaWYgRU5BQkxFKENTU19TQ1JPTExfU05BUCkKKwordm9pZCBBcmd1bWVudENv
ZGVyPFNjcm9sbE9mZnNldFJhbmdlPGZsb2F0Pj46OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBj
b25zdCBTY3JvbGxPZmZzZXRSYW5nZTxmbG9hdD4mIHJhbmdlKQoreworICAgIGVuY29kZXIgPDwg
cmFuZ2Uuc3RhcnQ7CisgICAgZW5jb2RlciA8PCByYW5nZS5lbmQ7Cit9CisKK2Jvb2wgQXJndW1l
bnRDb2RlcjxTY3JvbGxPZmZzZXRSYW5nZTxmbG9hdD4+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2Rl
ciwgU2Nyb2xsT2Zmc2V0UmFuZ2U8ZmxvYXQ+JiByYW5nZSkKK3sKKyAgICBmbG9hdCBzdGFydDsK
KyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHN0YXJ0KSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
CisgICAgZmxvYXQgZW5kOworICAgIGlmICghZGVjb2Rlci5kZWNvZGUoZW5kKSkKKyAgICAgICAg
cmV0dXJuIGZhbHNlOworCisgICAgcmFuZ2Uuc3RhcnQgPSBzdGFydDsKKyAgICByYW5nZS5lbmQg
PSBlbmQ7CisgICAgcmV0dXJuIHRydWU7Cit9CisKKyNlbmRpZgorCiB9IC8vIG5hbWVzcGFjZSBJ
UEMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2Rl
cnMuaCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaAppbmRl
eCA0ODE5ZmNiYzA0YWM3MTYyNTY3M2E4NDQ2N2Y3NDU0MmNjYjkyOTk1Li40NDM3Y2FkMjI1NzFk
YTkyOGE5OTFiOGY3ZmViMmEyODY1ZDE1ZmU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9T
aGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVk
L1dlYkNvcmVBcmd1bWVudENvZGVycy5oCkBAIC0zMCw2ICszMCw3IEBACiAjaW5jbHVkZSA8V2Vi
Q29yZS9GcmFtZUxvYWRlclR5cGVzLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9JbmRleGVkREIuaD4K
ICNpbmNsdWRlIDxXZWJDb3JlL1BheW1lbnRIZWFkZXJzLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9T
Y3JvbGxTbmFwT2Zmc2V0c0luZm8uaD4KIAogbmFtZXNwYWNlIFdURiB7CiBjbGFzcyBNb25vdG9u
aWNUaW1lOwpAQCAtNTk5LDYgKzYwMCwxNSBAQCB0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENv
ZGVyPFdlYkNvcmU6OklEQktleVBhdGg+IHsKIAogI2VuZGlmCiAKKyNpZiBFTkFCTEUoQ1NTX1ND
Uk9MTF9TTkFQKQorCit0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFdlYkNvcmU6OlNj
cm9sbE9mZnNldFJhbmdlPGZsb2F0Pj4geworICAgIHN0YXRpYyB2b2lkIGVuY29kZShFbmNvZGVy
JiwgY29uc3QgV2ViQ29yZTo6U2Nyb2xsT2Zmc2V0UmFuZ2U8ZmxvYXQ+Jik7CisgICAgc3RhdGlj
IGJvb2wgZGVjb2RlKERlY29kZXImLCBXZWJDb3JlOjpTY3JvbGxPZmZzZXRSYW5nZTxmbG9hdD4m
KTsKK307CisKKyNlbmRpZgorCiB9IC8vIG5hbWVzcGFjZSBJUEMKIAogbmFtZXNwYWNlIFdURiB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvU2Nyb2xsaW5nL2lvcy9TY3Jv
bGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlSU9TLm1tIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL1Njcm9sbGluZy9pb3MvU2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZUlP
Uy5tbQppbmRleCBjNTUxY2U4NjM2Y2UyMTRkOGFjMjU1ODQyODk3YWEyYTcxZDVhM2Y3Li44Nzlh
OThkNmFiNWI1YTdmOGM1NGZmNDNlNWFkMTQ0YTgwNmQ2NjNiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvU2Nyb2xsaW5nL2lvcy9TY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3Jv
bGxpbmdOb2RlSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9TY3JvbGxpbmcv
aW9zL1Njcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVJT1MubW0KQEAgLTM5LDYgKzM5
LDcgQEAKIAogI2lmIEVOQUJMRShDU1NfU0NST0xMX1NOQVApCiAjaW1wb3J0IDxXZWJDb3JlL0F4
aXNTY3JvbGxTbmFwT2Zmc2V0cy5oPgorI2ltcG9ydCA8V2ViQ29yZS9TY3JvbGxTbmFwT2Zmc2V0
c0luZm8uaD4KICNlbmRpZgogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKQEAgLTg4LDcgKzg5
LDcgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKICAgICBpZiAoIV9zY3JvbGxpbmdUcmVl
Tm9kZS0+aG9yaXpvbnRhbFNuYXBPZmZzZXRzKCkuaXNFbXB0eSgpKSB7CiAgICAgICAgIHVuc2ln
bmVkIGluZGV4OwotICAgICAgICBmbG9hdCBwb3RlbnRpYWxTbmFwUG9zaXRpb24gPSBjbG9zZXN0
U25hcE9mZnNldDxmbG9hdCwgQ0dGbG9hdD4oX3Njcm9sbGluZ1RyZWVOb2RlLT5ob3Jpem9udGFs
U25hcE9mZnNldHMoKSwgaG9yaXpvbnRhbFRhcmdldCwgdmVsb2NpdHkueCwgaW5kZXgpOworICAg
ICAgICBmbG9hdCBwb3RlbnRpYWxTbmFwUG9zaXRpb24gPSBjbG9zZXN0U25hcE9mZnNldChfc2Ny
b2xsaW5nVHJlZU5vZGUtPmhvcml6b250YWxTbmFwT2Zmc2V0cygpLCBfc2Nyb2xsaW5nVHJlZU5v
ZGUtPmhvcml6b250YWxTbmFwT2Zmc2V0UmFuZ2VzKCksIGhvcml6b250YWxUYXJnZXQsIHZlbG9j
aXR5LngsIGluZGV4KTsKICAgICAgICAgX3Njcm9sbGluZ1RyZWVOb2RlLT5zZXRDdXJyZW50SG9y
aXpvbnRhbFNuYXBQb2ludEluZGV4KGluZGV4KTsKICAgICAgICAgaWYgKGhvcml6b250YWxUYXJn
ZXQgPj0gMCAmJiBob3Jpem9udGFsVGFyZ2V0IDw9IHNjcm9sbFZpZXcuY29udGVudFNpemUud2lk
dGgpCiAgICAgICAgICAgICB0YXJnZXRDb250ZW50T2Zmc2V0LT54ID0gcG90ZW50aWFsU25hcFBv
c2l0aW9uOwpAQCAtOTYsNyArOTcsNyBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogICAg
IGlmICghX3Njcm9sbGluZ1RyZWVOb2RlLT52ZXJ0aWNhbFNuYXBPZmZzZXRzKCkuaXNFbXB0eSgp
KSB7CiAgICAgICAgIHVuc2lnbmVkIGluZGV4OwotICAgICAgICBmbG9hdCBwb3RlbnRpYWxTbmFw
UG9zaXRpb24gPSBjbG9zZXN0U25hcE9mZnNldDxmbG9hdCwgQ0dGbG9hdD4oX3Njcm9sbGluZ1Ry
ZWVOb2RlLT52ZXJ0aWNhbFNuYXBPZmZzZXRzKCksIHZlcnRpY2FsVGFyZ2V0LCB2ZWxvY2l0eS55
LCBpbmRleCk7CisgICAgICAgIGZsb2F0IHBvdGVudGlhbFNuYXBQb3NpdGlvbiA9IGNsb3Nlc3RT
bmFwT2Zmc2V0KF9zY3JvbGxpbmdUcmVlTm9kZS0+dmVydGljYWxTbmFwT2Zmc2V0cygpLCBfc2Ny
b2xsaW5nVHJlZU5vZGUtPnZlcnRpY2FsU25hcE9mZnNldFJhbmdlcygpLCB2ZXJ0aWNhbFRhcmdl
dCwgdmVsb2NpdHkueSwgaW5kZXgpOwogICAgICAgICBfc2Nyb2xsaW5nVHJlZU5vZGUtPnNldEN1
cnJlbnRWZXJ0aWNhbFNuYXBQb2ludEluZGV4KGluZGV4KTsKICAgICAgICAgaWYgKHZlcnRpY2Fs
VGFyZ2V0ID49IDAgJiYgdmVydGljYWxUYXJnZXQgPD0gc2Nyb2xsVmlldy5jb250ZW50U2l6ZS5o
ZWlnaHQpCiAgICAgICAgICAgICB0YXJnZXRDb250ZW50T2Zmc2V0LT55ID0gcG90ZW50aWFsU25h
cFBvc2l0aW9uOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9SZW1v
dGVTY3JvbGxpbmdDb29yZGluYXRvclByb3h5SU9TLm1tIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL2lvcy9SZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvclByb3h5SU9TLm1tCmluZGV4IDZjOWEx
YzAzOWUwNDI0Zjk5NzViNWFmYzU1OWMwNjlkMGJjNTgyZGYuLmRjYWE0N2VjNDA1NmRiNmQ3MjEy
ZGVlMDlhMWU2NjdiZGE5ZDQ2YzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9pb3MvUmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3JQcm94eUlPUy5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1JlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yUHJveHlJT1Mu
bW0KQEAgLTM5LDYgKzM5LDcgQEAKIAogI2lmIEVOQUJMRShDU1NfU0NST0xMX1NOQVApCiAjaW1w
b3J0IDxXZWJDb3JlL0F4aXNTY3JvbGxTbmFwT2Zmc2V0cy5oPgorI2ltcG9ydCA8V2ViQ29yZS9T
Y3JvbGxTbmFwT2Zmc2V0c0luZm8uaD4KICNpbXBvcnQgPFdlYkNvcmUvU2Nyb2xsVHlwZXMuaD4K
ICNpbXBvcnQgPFdlYkNvcmUvU2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZS5oPgogI2Vu
ZGlmCkBAIC0xMjQsNyArMTI1LDkgQEAgdm9pZCBSZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvclBy
b3h5OjphZGp1c3RUYXJnZXRDb250ZW50T2Zmc2V0Rm9yU25hcHBpbmcoQ0dTaXoKIAogICAgIGlm
IChzaG91bGRTbmFwRm9yTWFpbkZyYW1lU2Nyb2xsaW5nKFdlYkNvcmU6OlNjcm9sbEV2ZW50QXhp
czo6VmVydGljYWwpKSB7CiAgICAgICAgIGZsb2F0IHBvdGVudGlhbFNuYXBQb3NpdGlvbiA9IGNs
b3Nlc3RTbmFwT2Zmc2V0Rm9yTWFpbkZyYW1lU2Nyb2xsaW5nKFdlYkNvcmU6OlNjcm9sbEV2ZW50
QXhpczo6VmVydGljYWwsIHRhcmdldENvbnRlbnRPZmZzZXQtPnksIHZlbG9jaXR5LnksIG1fY3Vy
cmVudFZlcnRpY2FsU25hcFBvaW50SW5kZXgpOwotICAgICAgICBwb3RlbnRpYWxTbmFwUG9zaXRp
b24gLT0gdG9wSW5zZXQ7CisgICAgICAgIGlmIChtX2N1cnJlbnRWZXJ0aWNhbFNuYXBQb2ludElu
ZGV4ICE9IGludmFsaWRTbmFwT2Zmc2V0SW5kZXgpCisgICAgICAgICAgICBwb3RlbnRpYWxTbmFw
UG9zaXRpb24gLT0gdG9wSW5zZXQ7CisKICAgICAgICAgaWYgKHRhcmdldENvbnRlbnRPZmZzZXQt
PnkgPiAwICYmIHRhcmdldENvbnRlbnRPZmZzZXQtPnkgPCBtYXhTY3JvbGxPZmZzZXRzLmhlaWdo
dCkKICAgICAgICAgICAgIHRhcmdldENvbnRlbnRPZmZzZXQtPnkgPSBzdGQ6Om1pbjxmbG9hdD4o
bWF4U2Nyb2xsT2Zmc2V0cy5oZWlnaHQsIHBvdGVudGlhbFNuYXBQb3NpdGlvbik7CiAgICAgfQpA
QCAtMTQyLDcgKzE0NSw3IEBAIGJvb2wgUmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3JQcm94eTo6
c2hvdWxkU25hcEZvck1haW5GcmFtZVNjcm9sbGluZyhTY3JvbGxFdmVuCiAgICAgICAgIFNjcm9s
bGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGUqIHJvb3RGcmFtZSA9IHN0YXRpY19jYXN0PFNjcm9s
bGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGUqPihyb290KTsKICAgICAgICAgY29uc3QgVmVjdG9y
PGZsb2F0PiYgc25hcE9mZnNldHMgPSBheGlzID09IFNjcm9sbEV2ZW50QXhpczo6SG9yaXpvbnRh
bCA/IHJvb3RGcmFtZS0+aG9yaXpvbnRhbFNuYXBPZmZzZXRzKCkgOiByb290RnJhbWUtPnZlcnRp
Y2FsU25hcE9mZnNldHMoKTsKICAgICAgICAgdW5zaWduZWQgY3VycmVudEluZGV4ID0gYXhpcyA9
PSBTY3JvbGxFdmVudEF4aXM6Okhvcml6b250YWwgPyBtX2N1cnJlbnRIb3Jpem9udGFsU25hcFBv
aW50SW5kZXggOiBtX2N1cnJlbnRWZXJ0aWNhbFNuYXBQb2ludEluZGV4OwotICAgICAgICByZXR1
cm4gKHNuYXBPZmZzZXRzLnNpemUoKSA+IDApICYmIChjdXJyZW50SW5kZXggPCBzbmFwT2Zmc2V0
cy5zaXplKCkpOworICAgICAgICByZXR1cm4gc25hcE9mZnNldHMuc2l6ZSgpICYmIChjdXJyZW50
SW5kZXggPCBzbmFwT2Zmc2V0cy5zaXplKCkgfHwgY3VycmVudEluZGV4ID09IGludmFsaWRTbmFw
T2Zmc2V0SW5kZXgpOwogICAgIH0KICAgICByZXR1cm4gZmFsc2U7CiB9CkBAIC0xNTMsOSArMTU2
LDEwIEBAIGZsb2F0IFJlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yUHJveHk6OmNsb3Nlc3RTbmFw
T2Zmc2V0Rm9yTWFpbkZyYW1lU2Nyb2xsaW5nKFNjCiAgICAgQVNTRVJUKHJvb3QgJiYgcm9vdC0+
aXNGcmFtZVNjcm9sbGluZ05vZGUoKSk7CiAgICAgU2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5n
Tm9kZSogcm9vdEZyYW1lID0gc3RhdGljX2Nhc3Q8U2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5n
Tm9kZSo+KHJvb3QpOwogICAgIGNvbnN0IFZlY3RvcjxmbG9hdD4mIHNuYXBPZmZzZXRzID0gYXhp
cyA9PSBTY3JvbGxFdmVudEF4aXM6Okhvcml6b250YWwgPyByb290RnJhbWUtPmhvcml6b250YWxT
bmFwT2Zmc2V0cygpIDogcm9vdEZyYW1lLT52ZXJ0aWNhbFNuYXBPZmZzZXRzKCk7CisgICAgY29u
c3QgVmVjdG9yPFNjcm9sbE9mZnNldFJhbmdlPGZsb2F0Pj4mIHNuYXBPZmZzZXRSYW5nZXMgPSBh
eGlzID09IFNjcm9sbEV2ZW50QXhpczo6SG9yaXpvbnRhbCA/IHJvb3RGcmFtZS0+aG9yaXpvbnRh
bFNuYXBPZmZzZXRSYW5nZXMoKSA6IHJvb3RGcmFtZS0+dmVydGljYWxTbmFwT2Zmc2V0UmFuZ2Vz
KCk7CiAKICAgICBmbG9hdCBzY2FsZWRTY3JvbGxEZXN0aW5hdGlvbiA9IHNjcm9sbERlc3RpbmF0
aW9uIC8gbV93ZWJQYWdlUHJveHkuZGlzcGxheWVkQ29udGVudFNjYWxlKCk7Ci0gICAgZmxvYXQg
cmF3Q2xvc2VzdFNuYXBPZmZzZXQgPSBjbG9zZXN0U25hcE9mZnNldDxmbG9hdCwgZmxvYXQ+KHNu
YXBPZmZzZXRzLCBzY2FsZWRTY3JvbGxEZXN0aW5hdGlvbiwgdmVsb2NpdHksIGN1cnJlbnRJbmRl
eCk7CisgICAgZmxvYXQgcmF3Q2xvc2VzdFNuYXBPZmZzZXQgPSBjbG9zZXN0U25hcE9mZnNldChz
bmFwT2Zmc2V0cywgc25hcE9mZnNldFJhbmdlcywgc2NhbGVkU2Nyb2xsRGVzdGluYXRpb24sIHZl
bG9jaXR5LCBjdXJyZW50SW5kZXgpOwogICAgIHJldHVybiByYXdDbG9zZXN0U25hcE9mZnNldCAq
IG1fd2ViUGFnZVByb3h5LmRpc3BsYXllZENvbnRlbnRTY2FsZSgpOwogfQogCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggNWE0
Y2FiMzFhNDAwZmE3NTAwNjgxZDk2N2NmMjlhZGM5OTI1NmUxMi4uYzYxYzljNmExM2UzYWEzZWUz
YWNlZDM4NTUwYzFjMGZiODYwMmVkMiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
CisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU0IEBACisyMDE2LTEyLTI5
ICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIEltcGxl
bWVudCAicHJveGltaXR5IiBzY3JvbGwgc25hcHBpbmcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzNTk5NAorICAgICAgICA8cmRhcjovL3Byb2JsZW0v
MTgxNjI0MTg+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgQWRkcyAzIG5ldyBsYXlvdXQgdGVzdHMgZm9yIHByb3hpbWl0eSBzY3JvbGwgc25hcHBpbmcu
IEFsc28gdHdlYWtzIHNvbWUgZXhpc3RpbmcgdGVzdHMgdGhhdCB0ZXN0IHNjcm9sbCBzbmFwcGlu
ZworICAgICAgICBhZnRlciBzY3JvbGxpbmcgd2l0aCBtb21lbnR1bSB0byB1c2UgdGhlIGN1c3Rv
bSBoZXVyaXN0aWMgZm9yIHByZWRpY3Rpbmcgc2Nyb2xsIGRlc3RpbmF0aW9uIGluc3RlYWQgb2Yg
cGxhdGZvcm0KKyAgICAgICAgbW9tZW50dW0gc2Nyb2xsaW5nLiBUaGlzIGVuc3VyZXMgdGhhdCB0
aGUgcmVzdWx0cyBvZiBvdXIgbGF5b3V0IHRlc3RzIHRoYXQgZGVwZW5kIG9uIHByZWRpY3Rpbmcg
bW9tZW50dW0gc2Nyb2xsCisgICAgICAgIGRlc3RpbmF0aW9uIGFyZSBjb25zaXN0ZW50IGFjcm9z
cyBydW5zLgorCisgICAgICAgICogdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvbGF0Y2hlZC1kaXYt
d2l0aC1zY3JvbGwtc25hcC5odG1sOgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5n
L3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS5odG1sOgorICAgICAgICAqIHRpbGVkLWRy
YXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLW1hbmRhdG9yeS0yZC1vdmVy
Zmxvdy5odG1sOgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFw
L3Njcm9sbC1zbmFwLW1hbmRhdG9yeS1ib3JkZXJzLmh0bWw6CisgICAgICAgICogdGlsZWQtZHJh
d2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtbWFuZGF0b3J5LWhpZGRlbi1z
Y3JvbGxiYXJzLmh0bWw6CisgICAgICAgICogdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xs
LXNuYXAvc2Nyb2xsLXNuYXAtbWFuZGF0b3J5LW1haW5mcmFtZS1ob3Jpem9udGFsLmh0bWw6Cisg
ICAgICAgICogdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAt
bWFuZGF0b3J5LW1haW5mcmFtZS1zbG93LWhvcml6b250YWwuaHRtbDoKKyAgICAgICAgKiB0aWxl
ZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1tYW5kYXRvcnktbWFp
bmZyYW1lLXNsb3ctdmVydGljYWwuaHRtbDoKKyAgICAgICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9s
bGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1tYW5kYXRvcnktbWFpbmZyYW1lLXZlcnRpY2Fs
LXRoZW4taG9yaXpvbnRhbC5odG1sOgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5n
L3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLW1hbmRhdG9yeS1tYWluZnJhbWUtdmVydGljYWwuaHRt
bDoKKyAgICAgICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwt
c25hcC1tYW5kYXRvcnktb3ZlcmZsb3ctc3RhdGVsZXNzLmh0bWw6CisgICAgICAgICogdGlsZWQt
ZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtbWFuZGF0b3J5LW92ZXJm
bG93Lmh0bWw6CisgICAgICAgICogdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAv
c2Nyb2xsLXNuYXAtbWFuZGF0b3J5LXBhZGRpbmcuaHRtbDoKKyAgICAgICAgKiB0aWxlZC1kcmF3
aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1tYW5kYXRvcnktcm90YXRlZC5o
dG1sOgorCisgICAgICAgIEZvcmNlIHRoZXNlIHRlc3RzIHRvIHVzZSBwbGF0Zm9ybS1pbmRlcGVu
ZGVudCBzY3JvbGxpbmcgbW9tZW50dW0gcHJlZGljdGlvbiwgYnkgbXVsdGlwbHlpbmcgdGhlIGxh
c3Qgc2Nyb2xsCisgICAgICAgIGRlbHRhIHVwb24gcmVsZWFzZSBieSBhIGNvbnN0YW50IGZhY3Rv
ci4KKworICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9s
bC1zbmFwLW1hbmRhdG9yeS10aGVuLXByb3hpbWl0eS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAg
ICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLW1h
bmRhdG9yeS10aGVuLXByb3hpbWl0eS5odG1sOiBBZGRlZC4KKworICAgICAgICBUZXN0cyB0aGF0
IGFmdGVyIGNoYW5naW5nIHNjcm9sbC1zbmFwLXR5cGUgZnJvbSBtYW5kYXRvcnkgdG8gcHJveGlt
aXR5LCBzd2lwaW5nIGRvd253YXJkcyBubyBsb25nZXIgc25hcHMgdGhlCisgICAgICAgIHNjcm9s
bCBvZmZzZXQgdG8gdGhlIHNlY29uZCBib3gsIGJ1dCBpbnN0ZWFkIGxlYXZlcyB0aGUgc2Nyb2xs
IG9mZnNldCBzb21ld2hlcmUgaW4gdGhlIG1pZGRsZSBvZiB0aGUgZmlyc3QgYm94LgorCisgICAg
ICAgICogdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtcHJv
eGltaXR5LW1haW5mcmFtZS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHRpbGVkLWRy
YXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLXByb3hpbWl0eS1tYWluZnJh
bWUuaHRtbDogQWRkZWQuCisKKyAgICAgICAgVGVzdHMgdGhhdCB3aGVuIHNjcm9sbC1zbmFwLXR5
cGUgaXMgcHJveGltaXR5IGluIHRoZSBtYWluZnJhbWUsIHNjcm9sbGluZyBzbGlnaHRseSBkb3du
d2FyZHMgc25hcHMgdGhlIHNjcm9sbAorICAgICAgICBvZmZzZXQgYmFjayB1cCB0byB0aGUgdG9w
OyBzY3JvbGxpbmcgc29tZXdoZXJlIGluIHRoZSBtaWRkbGUgb2YgdGhlIGZpcnN0IGJveCBkb2Vz
IG5vdCBzbmFwIHRoZSBzY3JvbGwgb2Zmc2V0OworICAgICAgICBhbmQgc2Nyb2xsaW5nIG5lYXIg
dGhlIGVuZCBvZiB0aGUgZmlyc3QgYm94IHNuYXBzIHRoZSBzY3JvbGwgb2Zmc2V0IHRvIHRoZSBz
ZWNvbmQgYm94LgorCisgICAgICAgICogdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNu
YXAvc2Nyb2xsLXNuYXAtcHJveGltaXR5LW92ZXJmbG93LWV4cGVjdGVkLnR4dDogQWRkZWQuCisg
ICAgICAgICogdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAt
cHJveGltaXR5LW92ZXJmbG93Lmh0bWw6IEFkZGVkLgorCisgICAgICAgIFNpbWlsYXIgdG8gc2Ny
b2xsLXNuYXAtcHJveGltaXR5LW1haW5mcmFtZS5odG1sLCBleGNlcHQgZm9yIG92ZXJmbG93IHNj
cm9sbGluZyBpbnN0ZWFkIG9mIHRoZSBtYWluZnJhbWUuCisKKyAgICAgICAgKiB0aWxlZC1kcmF3
aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1zY3JvbGxpbmctanVtcHMtdG8t
dG9wLmh0bWw6CisKIDIwMTYtMTItMjIgIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBs
ZS5jb20+CiAKICAgICAgICAgQ1NTIFNjcm9sbCBTbmFwIGRvZXMgbm90IHdvcmsgaWYgc2Nyb2xs
YmFyIGlzIGhpZGRlbgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3Jv
bGxpbmcvbGF0Y2hlZC1kaXYtd2l0aC1zY3JvbGwtc25hcC5odG1sIGIvTGF5b3V0VGVzdHMvdGls
ZWQtZHJhd2luZy9zY3JvbGxpbmcvbGF0Y2hlZC1kaXYtd2l0aC1zY3JvbGwtc25hcC5odG1sCmlu
ZGV4IDQ3MzVhZWE2Y2E5ODU0NzA2ZDdmMDZiNTdlZjI4YWUxMzllYmVmOTkuLmQ5YWY3ZTUyZDQz
Mjc1N2EzYTI2NjM1NDBkZmFkMzdkY2UzMGUzMDkgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3Rp
bGVkLWRyYXdpbmcvc2Nyb2xsaW5nL2xhdGNoZWQtZGl2LXdpdGgtc2Nyb2xsLXNuYXAuaHRtbAor
KysgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9sYXRjaGVkLWRpdi13aXRo
LXNjcm9sbC1zbmFwLmh0bWwKQEAgLTc0LDYgKzc0LDcgQEAKICAgICAgICAgICAgIHJldHVybiBu
ZXcgUHJvbWlzZShyZXNvbHZlID0+IHsKICAgICAgICAgICAgICAgICB3cml0ZShgKiBTd2lwaW5n
ICR7bW9tZW50dW0gPyAid2l0aCIgOiAid2l0aG91dCJ9IG1vbWVudHVtIGluICR7ZWxlbWVudC5p
ZH0gd2l0aCBzY3JvbGwgb2Zmc2V0ICR7ZWxlbWVudC5zY3JvbGxMZWZ0fWApOwogICAgICAgICAg
ICAgICAgIGxldCBsb2NhdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhlbGVtZW50
KTsKKyAgICAgICAgICAgICAgICBpbnRlcm5hbHMuc2V0UGxhdGZvcm1Nb21lbnR1bVNjcm9sbGlu
Z1ByZWRpY3Rpb25FbmFibGVkKGZhbHNlKTsKICAgICAgICAgICAgICAgICBldmVudFNlbmRlci5t
b25pdG9yV2hlZWxFdmVudHMoKTsKICAgICAgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1v
dmVUbyhsb2NhdGlvbi54LCBsb2NhdGlvbi55KTsKICAgICAgICAgICAgICAgICBldmVudFNlbmRl
ci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoLTEsIDAsICJiZWdhbiIs
ICJub25lIik7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGlu
Zy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUuaHRtbCBiL0xheW91dFRlc3RzL3RpbGVk
LWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS5odG1sCmlu
ZGV4IDE4MmUxOWY1NzFkOGY4ODA4MGM5MWE4YmNkMjM0MGE0ZmVhMmZlNjAuLmRmMmUxZmZlNDlm
YzgyZGFiMjU0MjNjOGQ1MTQxZTVhNzg4YWUxZTIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3Rp
bGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS5odG1s
CisrKyBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Nj
cm9sbC1zbmFwLWlmcmFtZS5odG1sCkBAIC0xNDcsNiArMTQ3LDcgQEAKICAgICAgICAgewogICAg
ICAgICAgICAgaWYgKHdpbmRvdy5ldmVudFNlbmRlcikgewogICAgICAgICAgICAgICAgIGV2ZW50
U2VuZGVyLm1vbml0b3JXaGVlbEV2ZW50cygpOworICAgICAgICAgICAgICAgIGludGVybmFscy5z
ZXRQbGF0Zm9ybU1vbWVudHVtU2Nyb2xsaW5nUHJlZGljdGlvbkVuYWJsZWQoZmFsc2UpOwogICAg
ICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVzdCgnaG9y
aXpvbnRhbFRhcmdldCcpIH0sIDApOwogICAgICAgICAgICAgfQogICAgICAgICB9CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3Jv
bGwtc25hcC1tYW5kYXRvcnktMmQtb3ZlcmZsb3cuaHRtbCBiL0xheW91dFRlc3RzL3RpbGVkLWRy
YXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLW1hbmRhdG9yeS0yZC1vdmVy
Zmxvdy5odG1sCmluZGV4IGFjMWFiODgyZGM4ZjM1MTBkZDJjZWU3ZjY1MzkxYjk1ZjJkMGEzZTEu
LjdiMGFkM2IyNjA0OTk4NTljOTUyZjIyOTIxOTk0Nzk2ZmYzMjZkZTQgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFw
LW1hbmRhdG9yeS0yZC1vdmVyZmxvdy5odG1sCisrKyBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdp
bmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLW1hbmRhdG9yeS0yZC1vdmVyZmxv
dy5odG1sCkBAIC0xMjMsNiArMTIzLDcgQEAKICAgICAgICAgZnVuY3Rpb24gb25Mb2FkKCkgewog
ICAgICAgICAgICAgaWYgKHdpbmRvdy5ldmVudFNlbmRlcikgewogICAgICAgICAgICAgICAgIGV2
ZW50U2VuZGVyLm1vbml0b3JXaGVlbEV2ZW50cygpOworICAgICAgICAgICAgICAgIGludGVybmFs
cy5zZXRQbGF0Zm9ybU1vbWVudHVtU2Nyb2xsaW5nUHJlZGljdGlvbkVuYWJsZWQoZmFsc2UpOwog
ICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoc2Nyb2xsR2xpZGVUZXN0LCAwKTsKICAgICAgICAg
ICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgdmFyIG1lc3NhZ2VMb2NhdGlvbiA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKCJzbmFwLWZyb20iKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLW1hbmRhdG9y
eS1ib3JkZXJzLmh0bWwgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3Jv
bGwtc25hcC9zY3JvbGwtc25hcC1tYW5kYXRvcnktYm9yZGVycy5odG1sCmluZGV4IDQxZGVkMDk2
YWI5NTZjOTBhYjg4NDE1YWU0ODQyZWNlZmZjMzBjOTAuLjljNzUyNThkZmIwZGRjN2I5YzZlZTFh
NTViNzU4ZmZlYmM5MTJlYWEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcv
c2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLW1hbmRhdG9yeS1ib3JkZXJzLmh0bWwK
KysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Ny
b2xsLXNuYXAtbWFuZGF0b3J5LWJvcmRlcnMuaHRtbApAQCAtMTc3LDYgKzE3Nyw3IEBACiAgICAg
ICAgIHsKICAgICAgICAgICAgIGlmICh3aW5kb3cuZXZlbnRTZW5kZXIpIHsKICAgICAgICAgICAg
ICAgICBldmVudFNlbmRlci5tb25pdG9yV2hlZWxFdmVudHMoKTsKKyAgICAgICAgICAgICAgICBp
bnRlcm5hbHMuc2V0UGxhdGZvcm1Nb21lbnR1bVNjcm9sbGluZ1ByZWRpY3Rpb25FbmFibGVkKGZh
bHNlKTsKICAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlk
ZVRlc3QoJ2hvcml6b250YWxUYXJnZXQnKSB9LCAwKTsKICAgICAgICAgICAgIH0gZWxzZSB7CiAg
ICAgICAgICAgICAgICAgdmFyIG1lc3NhZ2VMb2NhdGlvbkggPSBkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCgnaXRlbUgwJyk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Nj
cm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1tYW5kYXRvcnktaGlkZGVuLXNjcm9sbGJh
cnMuaHRtbCBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFw
L3Njcm9sbC1zbmFwLW1hbmRhdG9yeS1oaWRkZW4tc2Nyb2xsYmFycy5odG1sCmluZGV4IGI0Y2Y4
OThmYTMwYzQxMjE5NGYwMjZhMTNiNzdlMTFhNWEzZGJkZjguLmEwNDM1OTA2ZDk2MDM1MzQ3YzVj
MTY4N2RjZjE0ODljZDgzNTYyYTIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdp
bmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLW1hbmRhdG9yeS1oaWRkZW4tc2Ny
b2xsYmFycy5odG1sCisrKyBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Nj
cm9sbC1zbmFwL3Njcm9sbC1zbmFwLW1hbmRhdG9yeS1oaWRkZW4tc2Nyb2xsYmFycy5odG1sCkBA
IC00NCw2ICs0NCw3IEBACiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgfQog
CisgICAgICAgICAgICBpbnRlcm5hbHMuc2V0UGxhdGZvcm1Nb21lbnR1bVNjcm9sbGluZ1ByZWRp
Y3Rpb25FbmFibGVkKGZhbHNlKTsKICAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vbml0b3JXaGVl
bEV2ZW50cygpOwogICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oMjUwLCAyNTAp
OwogICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVu
dHVtUGhhc2VzKDAsIC0xLCAiYmVnYW4iLCAibm9uZSIpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtbWFuZGF0
b3J5LW1haW5mcmFtZS1ob3Jpem9udGFsLmh0bWwgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5n
L3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1tYW5kYXRvcnktbWFpbmZyYW1lLWhv
cml6b250YWwuaHRtbAppbmRleCA2MWVhMmVjMGJiMDNhZDBhMjY2NTliYTNjZmUzYmYyYzVmNDU2
YjkwLi5mOWQ3Mjc4YWFlODM4OTEyYzc4YTNiZDEyMjI1MWZjNTk3ODhhZWZkIDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwt
c25hcC1tYW5kYXRvcnktbWFpbmZyYW1lLWhvcml6b250YWwuaHRtbAorKysgYi9MYXlvdXRUZXN0
cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1tYW5kYXRv
cnktbWFpbmZyYW1lLWhvcml6b250YWwuaHRtbApAQCAtOTEsNiArOTEsNyBAQAogCiAgICAgICAg
ICAgICBpZiAod2luZG93LmV2ZW50U2VuZGVyKSB7CiAgICAgICAgICAgICAgICAgZXZlbnRTZW5k
ZXIubW9uaXRvcldoZWVsRXZlbnRzKCk7CisgICAgICAgICAgICAgICAgaW50ZXJuYWxzLnNldFBs
YXRmb3JtTW9tZW50dW1TY3JvbGxpbmdQcmVkaWN0aW9uRW5hYmxlZChmYWxzZSk7CiAgICAgICAg
ICAgICAgICAgc2V0VGltZW91dChzY3JvbGxHbGlkZVRlc3QsIDApOwogICAgICAgICAgICAgfSBl
bHNlIHsKICAgICAgICAgICAgICAgICB2YXIgbWVzc2FnZUxvY2F0aW9uID0gZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoJ2l0ZW0wJyk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3
aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1tYW5kYXRvcnktbWFpbmZyYW1l
LXNsb3ctaG9yaXpvbnRhbC5odG1sIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxp
bmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtbWFuZGF0b3J5LW1haW5mcmFtZS1zbG93LWhvcml6
b250YWwuaHRtbAppbmRleCBjNWNkMDNjNzI5MTE0ODYxN2EwNDAwMWY1YjdkMTZlNmU2ZmQyNTdl
Li5kZmRkZTg1MWU5ZDYxMTM5OWQwYmU1OTdiZjA4MGQ0NGVjMWJkZGQ4IDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25h
cC1tYW5kYXRvcnktbWFpbmZyYW1lLXNsb3ctaG9yaXpvbnRhbC5odG1sCisrKyBiL0xheW91dFRl
c3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLW1hbmRh
dG9yeS1tYWluZnJhbWUtc2xvdy1ob3Jpem9udGFsLmh0bWwKQEAgLTkxLDYgKzkxLDcgQEAKIAog
ICAgICAgICAgICAgaWYgKHdpbmRvdy5ldmVudFNlbmRlcikgewogICAgICAgICAgICAgICAgIGV2
ZW50U2VuZGVyLm1vbml0b3JXaGVlbEV2ZW50cygpOworICAgICAgICAgICAgICAgIGludGVybmFs
cy5zZXRQbGF0Zm9ybU1vbWVudHVtU2Nyb2xsaW5nUHJlZGljdGlvbkVuYWJsZWQoZmFsc2UpOwog
ICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoc2Nyb2xsR2xpZGVUZXN0LCAwKTsKICAgICAgICAg
ICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgdmFyIG1lc3NhZ2VMb2NhdGlvbiA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKCdpdGVtMCcpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGls
ZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtbWFuZGF0b3J5LW1h
aW5mcmFtZS1zbG93LXZlcnRpY2FsLmh0bWwgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Nj
cm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1tYW5kYXRvcnktbWFpbmZyYW1lLXNsb3ct
dmVydGljYWwuaHRtbAppbmRleCA4ZDg1MTQ3NDVmMGQyYmZlY2MxNmViZGEwY2UyNTRkOGJjMzhm
MzQ3Li42MjY4MjQ0NTVhZmNlZjhkZmFmZjA2YTg1NDdmMDQ3ZDVmYjJiMDViIDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwt
c25hcC1tYW5kYXRvcnktbWFpbmZyYW1lLXNsb3ctdmVydGljYWwuaHRtbAorKysgYi9MYXlvdXRU
ZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1tYW5k
YXRvcnktbWFpbmZyYW1lLXNsb3ctdmVydGljYWwuaHRtbApAQCAtOTAsNiArOTAsNyBAQAogICAg
ICAgICBmdW5jdGlvbiBvbkxvYWQoKSB7CiAgICAgICAgICAgICBpZiAod2luZG93LmV2ZW50U2Vu
ZGVyKSB7CiAgICAgICAgICAgICAgICAgZXZlbnRTZW5kZXIubW9uaXRvcldoZWVsRXZlbnRzKCk7
CisgICAgICAgICAgICAgICAgaW50ZXJuYWxzLnNldFBsYXRmb3JtTW9tZW50dW1TY3JvbGxpbmdQ
cmVkaWN0aW9uRW5hYmxlZChmYWxzZSk7CiAgICAgICAgICAgICAgICAgc2V0VGltZW91dChzY3Jv
bGxHbGlkZVRlc3QsIDApOwogICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICB2
YXIgbWVzc2FnZUxvY2F0aW9uID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2l0ZW0wJyk7CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25h
cC9zY3JvbGwtc25hcC1tYW5kYXRvcnktbWFpbmZyYW1lLXZlcnRpY2FsLXRoZW4taG9yaXpvbnRh
bC5odG1sIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAv
c2Nyb2xsLXNuYXAtbWFuZGF0b3J5LW1haW5mcmFtZS12ZXJ0aWNhbC10aGVuLWhvcml6b250YWwu
aHRtbAppbmRleCA4OWY0ZTE4NzE0OGIyZjZjYjUyY2VkOWI5Y2E2YzMxNmRiNjg0YmFiLi44NTM4
NTgxYWJmOWY1ZmMxN2ViYThmY2I0MzI1ZmFjOGRhODJjZjM5IDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1tYW5k
YXRvcnktbWFpbmZyYW1lLXZlcnRpY2FsLXRoZW4taG9yaXpvbnRhbC5odG1sCisrKyBiL0xheW91
dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLW1h
bmRhdG9yeS1tYWluZnJhbWUtdmVydGljYWwtdGhlbi1ob3Jpem9udGFsLmh0bWwKQEAgLTUyLDYg
KzUyLDcgQEAKICAgICAgICAgZnVuY3Rpb24gb25Mb2FkKCkgewogICAgICAgICAgICAgaWYgKHdp
bmRvdy5ldmVudFNlbmRlcikgewogICAgICAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vbml0b3JX
aGVlbEV2ZW50cygpOworICAgICAgICAgICAgICAgIGludGVybmFscy5zZXRQbGF0Zm9ybU1vbWVu
dHVtU2Nyb2xsaW5nUHJlZGljdGlvbkVuYWJsZWQoZmFsc2UpOwogICAgICAgICAgICAgICAgIHNl
dFRpbWVvdXQoc2Nyb2xsU25hcFRlc3QsIDApOwogICAgICAgICAgICAgfSBlbHNlIHsKICAgICAg
ICAgICAgICAgICB2YXIgbWVzc2FnZUxvY2F0aW9uID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
J2l0ZW0wJyk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGlu
Zy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1tYW5kYXRvcnktbWFpbmZyYW1lLXZlcnRpY2FsLmh0
bWwgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3Jv
bGwtc25hcC1tYW5kYXRvcnktbWFpbmZyYW1lLXZlcnRpY2FsLmh0bWwKaW5kZXggNmU3MTAxMzRl
MWNmOWQzODU5MDlhYmI0MzQ1Y2VmYjRlYjNlODVjZS4uOWZkMjg5Y2ExZjU0NjlkMmE4NDBlYzcw
Yjk4M2ZhMjg0NzRmNTQ0ZiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9z
Y3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtbWFuZGF0b3J5LW1haW5mcmFtZS12ZXJ0
aWNhbC5odG1sCisrKyBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9s
bC1zbmFwL3Njcm9sbC1zbmFwLW1hbmRhdG9yeS1tYWluZnJhbWUtdmVydGljYWwuaHRtbApAQCAt
OTEsNiArOTEsNyBAQAogCiAgICAgICAgICAgICBpZiAod2luZG93LmV2ZW50U2VuZGVyKSB7CiAg
ICAgICAgICAgICAgICAgZXZlbnRTZW5kZXIubW9uaXRvcldoZWVsRXZlbnRzKCk7CisgICAgICAg
ICAgICAgICAgaW50ZXJuYWxzLnNldFBsYXRmb3JtTW9tZW50dW1TY3JvbGxpbmdQcmVkaWN0aW9u
RW5hYmxlZChmYWxzZSk7CiAgICAgICAgICAgICAgICAgc2V0VGltZW91dChzY3JvbGxHbGlkZVRl
c3QsIDApOwogICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICB2YXIgbWVzc2Fn
ZUxvY2F0aW9uID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2l0ZW0wJyk7CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwt
c25hcC1tYW5kYXRvcnktb3ZlcmZsb3ctc3RhdGVsZXNzLmh0bWwgYi9MYXlvdXRUZXN0cy90aWxl
ZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1tYW5kYXRvcnktb3Zl
cmZsb3ctc3RhdGVsZXNzLmh0bWwKaW5kZXggY2I5NGY2OTg5NzgxOWEyMmVlOTFmM2U1YzQ1MGU1
MTc2M2JhMzZiMC4uZDI1YjU5YjAxYzc4ZDdlYjI5ZjgzZWU5NTQ0MDIyZGM2YjE0NmNjNyAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAv
c2Nyb2xsLXNuYXAtbWFuZGF0b3J5LW92ZXJmbG93LXN0YXRlbGVzcy5odG1sCisrKyBiL0xheW91
dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLW1h
bmRhdG9yeS1vdmVyZmxvdy1zdGF0ZWxlc3MuaHRtbApAQCAtNjgsNiArNjgsNyBAQAogICAgICAg
ICB7CiAgICAgICAgICAgICBpZiAod2luZG93LmV2ZW50U2VuZGVyKSB7CiAgICAgICAgICAgICAg
ICAgZXZlbnRTZW5kZXIubW9uaXRvcldoZWVsRXZlbnRzKCk7CisgICAgICAgICAgICAgICAgaW50
ZXJuYWxzLnNldFBsYXRmb3JtTW9tZW50dW1TY3JvbGxpbmdQcmVkaWN0aW9uRW5hYmxlZChmYWxz
ZSk7CiAgICAgICAgICAgICAgICAgc2V0VGltZW91dChzY3JvbGxTbmFwVGVzdCwgMCk7CiAgICAg
ICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgIHZhciBtZXNzYWdlTG9jYXRpb25IID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIml0ZW0wIik7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1tYW5kYXRv
cnktb3ZlcmZsb3cuaHRtbCBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Nj
cm9sbC1zbmFwL3Njcm9sbC1zbmFwLW1hbmRhdG9yeS1vdmVyZmxvdy5odG1sCmluZGV4IGIzNmZk
ZDU4ODc3MGRmMmY2YmU0MTdlOWUzZWU3YTA5NWE0MGQ3ZmQuLmY3MzJmM2E5ZDJlOTIzMTg1N2Vk
ZWUwOTVmNTc0MWUxNDliNjM3ZDMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdp
bmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLW1hbmRhdG9yeS1vdmVyZmxvdy5o
dG1sCisrKyBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFw
L3Njcm9sbC1zbmFwLW1hbmRhdG9yeS1vdmVyZmxvdy5odG1sCkBAIC0xNjcsNiArMTY3LDcgQEAK
ICAgICAgICAgewogICAgICAgICAgICAgaWYgKHdpbmRvdy5ldmVudFNlbmRlcikgewogICAgICAg
ICAgICAgICAgIGV2ZW50U2VuZGVyLm1vbml0b3JXaGVlbEV2ZW50cygpOworICAgICAgICAgICAg
ICAgIGludGVybmFscy5zZXRQbGF0Zm9ybU1vbWVudHVtU2Nyb2xsaW5nUHJlZGljdGlvbkVuYWJs
ZWQoZmFsc2UpOwogICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9s
bEdsaWRlVGVzdCgnaG9yaXpvbnRhbFRhcmdldCcpIH0sIDApOwogICAgICAgICAgICAgfSBlbHNl
IHsKICAgICAgICAgICAgICAgICB2YXIgbWVzc2FnZUxvY2F0aW9uSCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCdpdGVtSDAnKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdp
bmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLW1hbmRhdG9yeS1wYWRkaW5nLmh0
bWwgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3Jv
bGwtc25hcC1tYW5kYXRvcnktcGFkZGluZy5odG1sCmluZGV4IDBhMTE3ZGNkNjRmOTVmNjE3NTQ4
Zjk4YmMwNTU5MzRmOWRiYzBlMGYuLjVkYmMxY2YwMGE3MTg1NGY3MmZlZDkxNWQxZTQ4ZmMwMTQ3
YTg1MzYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Nj
cm9sbC1zbmFwL3Njcm9sbC1zbmFwLW1hbmRhdG9yeS1wYWRkaW5nLmh0bWwKKysrIGIvTGF5b3V0
VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtbWFu
ZGF0b3J5LXBhZGRpbmcuaHRtbApAQCAtMTc3LDYgKzE3Nyw3IEBACiAgICAgICAgIHsKICAgICAg
ICAgICAgIGlmICh3aW5kb3cuZXZlbnRTZW5kZXIpIHsKICAgICAgICAgICAgICAgICBldmVudFNl
bmRlci5tb25pdG9yV2hlZWxFdmVudHMoKTsKKyAgICAgICAgICAgICAgICBpbnRlcm5hbHMuc2V0
UGxhdGZvcm1Nb21lbnR1bVNjcm9sbGluZ1ByZWRpY3Rpb25FbmFibGVkKGZhbHNlKTsKICAgICAg
ICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3QoJ2hvcml6
b250YWxUYXJnZXQnKSB9LCAwKTsKICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAg
ICAgdmFyIG1lc3NhZ2VMb2NhdGlvbkggPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnaXRlbUgw
Jyk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3Jv
bGwtc25hcC9zY3JvbGwtc25hcC1tYW5kYXRvcnktcm90YXRlZC5odG1sIGIvTGF5b3V0VGVzdHMv
dGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtbWFuZGF0b3J5
LXJvdGF0ZWQuaHRtbAppbmRleCBjOTMwMWFkOTM5ZWYyMDU3MDA3MzFmNjgwNjZhOGU3N2RiMTVm
MjVmLi5jNGVlOTQ3MzhhODAyYWNmZGYzMmIxZjgyNDc3N2U1M2U3MjdmN2FjIDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwt
c25hcC1tYW5kYXRvcnktcm90YXRlZC5odG1sCisrKyBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdp
bmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLW1hbmRhdG9yeS1yb3RhdGVkLmh0
bWwKQEAgLTE2OSw2ICsxNjksNyBAQAogICAgICAgICB7CiAgICAgICAgICAgICBpZiAod2luZG93
LmV2ZW50U2VuZGVyKSB7CiAgICAgICAgICAgICAgICAgZXZlbnRTZW5kZXIubW9uaXRvcldoZWVs
RXZlbnRzKCk7CisgICAgICAgICAgICAgICAgaW50ZXJuYWxzLnNldFBsYXRmb3JtTW9tZW50dW1T
Y3JvbGxpbmdQcmVkaWN0aW9uRW5hYmxlZChmYWxzZSk7CiAgICAgICAgICAgICAgICAgc2V0VGlt
ZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVUZXN0KCdob3Jpem9udGFsVGFyZ2V0JykgfSwg
MCk7CiAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgIHZhciBtZXNzYWdlTG9j
YXRpb25IID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2l0ZW1IMCcpOwpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNu
YXAtbWFuZGF0b3J5LXRoZW4tcHJveGltaXR5LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3Rp
bGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLW1hbmRhdG9yeS10
aGVuLXByb3hpbWl0eS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYWEwM2YxM2MyZWQzYmUxYTQx
MTdkODliZjM5ODcxNDhkYTkwOGEyMAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3Rp
bGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLW1hbmRhdG9yeS10
aGVuLXByb3hpbWl0eS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw3IEBACitTY3JvbGxpbmcgaW4g
Y29udGFpbmVyIHdpdGggc2Nyb2xsLXNuYXAtdHlwZTogeSBtYW5kYXRvcnkKKy0gRGlkIHRoZSBz
Y3JvbGxpbmcgc25hcCB0byB0aGUgdG9wPyBOTworLSBEaWQgc2Nyb2xsaW5nIHNuYXAgdG8gdGhl
IHNlY29uZCBib3g/IFlFUworU2Nyb2xsaW5nIGluIGNvbnRhaW5lciB3aXRoIHNjcm9sbC1zbmFw
LXR5cGU6IHkgcHJveGltaXR5CistIERpZCB0aGUgc2Nyb2xsaW5nIHNuYXAgdG8gdGhlIHRvcD8g
Tk8KKy0gRGlkIHNjcm9sbGluZyBzbmFwIHRvIHRoZSBzZWNvbmQgYm94PyBOTworCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3Jv
bGwtc25hcC1tYW5kYXRvcnktdGhlbi1wcm94aW1pdHkuaHRtbCBiL0xheW91dFRlc3RzL3RpbGVk
LWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLW1hbmRhdG9yeS10aGVu
LXByb3hpbWl0eS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjU5ZDljNDY5YWY1ZTc1YTU5MDc5ZTgwMDg4OTY1
N2Q2NDA4NjQxNTkKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5n
L3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1tYW5kYXRvcnktdGhlbi1wcm94aW1p
dHkuaHRtbApAQCAtMCwwICsxLDgyIEBACis8IURPQ1RZUEUgSFRNTD4KKzxodG1sPgorICAgIDxo
ZWFkPgorICAgICAgICA8c3R5bGU+CisgICAgICAgICAgICBib2R5IHsKKyAgICAgICAgICAgICAg
ICBtYXJnaW46IDA7CisgICAgICAgICAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjsKKyAgICAgICAg
ICAgIH0KKworICAgICAgICAgICAgI2NvbnRhaW5lciB7CisgICAgICAgICAgICAgICAgd2lkdGg6
IDYwMHB4OworICAgICAgICAgICAgICAgIGhlaWdodDogNjAwcHg7CisgICAgICAgICAgICAgICAg
cG9zaXRpb246IGFic29sdXRlOworICAgICAgICAgICAgICAgIHRvcDogMDsKKyAgICAgICAgICAg
ICAgICBsZWZ0OiAwOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXg6IG5vbmU7CisgICAgICAg
ICAgICAgICAgb3ZlcmZsb3cteTogc2Nyb2xsOworICAgICAgICAgICAgICAgIHNjcm9sbC1zbmFw
LXR5cGU6IHkgbWFuZGF0b3J5OworICAgICAgICAgICAgICAgIG9wYWNpdHk6IDAuNTsKKyAgICAg
ICAgICAgIH0KKworICAgICAgICAgICAgLmFyZWEgeworICAgICAgICAgICAgICAgIGhlaWdodDog
NjAwcHg7CisgICAgICAgICAgICAgICAgd2lkdGg6IDYwMHB4OworICAgICAgICAgICAgICAgIGZs
b2F0OiBsZWZ0OworICAgICAgICAgICAgICAgIHNjcm9sbC1zbmFwLWFsaWduOiBzdGFydDsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgPC9zdHlsZT4KKyAgICAgICAgPHNjcmlwdD4KKyAgICAgICAg
bGV0IHdyaXRlID0gcyA9PiBvdXRwdXQuaW5uZXJIVE1MICs9IHMgKyAiPGJyPiI7CisgICAgICAg
IGlmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgICAgICAgICAgdGVzdFJ1bm5lci5kdW1wQXNU
ZXh0KCk7CisgICAgICAgICAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKKyAgICAgICAg
fQorCisgICAgICAgIGZ1bmN0aW9uIHZlcnRpY2FsU2Nyb2xsSW5Db250YWluZXIoZHJhZ0RlbHRh
cywgbW9tZW50dW1EZWx0YXMpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBuZXcgUHJv
bWlzZShyZXNvbHZlID0+IHsKKyAgICAgICAgICAgICAgICB3cml0ZShgU2Nyb2xsaW5nIGluICR7
Y29udGFpbmVyLmlkfSB3aXRoIHNjcm9sbC1zbmFwLXR5cGU6ICR7Z2V0Q29tcHV0ZWRTdHlsZShj
b250YWluZXIpLnNjcm9sbFNuYXBUeXBlfWApOworICAgICAgICAgICAgICAgIGV2ZW50U2VuZGVy
Lm1vbml0b3JXaGVlbEV2ZW50cygpOworICAgICAgICAgICAgICAgIGludGVybmFscy5zZXRQbGF0
Zm9ybU1vbWVudHVtU2Nyb2xsaW5nUHJlZGljdGlvbkVuYWJsZWQoZmFsc2UpOworICAgICAgICAg
ICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKDMwMCwgMzAwKTsKKyAgICAgICAgICAgICAg
ICBkcmFnRGVsdGFzLmZvckVhY2goKGRlbHRhLCBpKSA9PiBldmVudFNlbmRlci5tb3VzZVNjcm9s
bEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgZGVsdGEsIGkgPT0gMCA/ICJiZWdhbiIg
OiAiY2hhbmdlZCIsICJub25lIikpOworICAgICAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNl
U2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAiZW5kZWQiLCAibm9uZSIp
OworICAgICAgICAgICAgICAgIGlmIChtb21lbnR1bURlbHRhcyAmJiBtb21lbnR1bURlbHRhcy5s
ZW5ndGgpIHsKKyAgICAgICAgICAgICAgICAgICAgbW9tZW50dW1EZWx0YXMuZm9yRWFjaCgoZGVs
dGEsIGkpID0+IGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBo
YXNlcygwLCBkZWx0YSwgIm5vbmUiLCBpID09IDAgPyAiYmVnaW4iIDogImNvbnRpbnVlIikpOwor
ICAgICAgICAgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5k
TW9tZW50dW1QaGFzZXMoMCwgMCwgIm5vbmUiLCAiZW5kIik7CisgICAgICAgICAgICAgICAgfQor
ICAgICAgICAgICAgICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcygo
KSA9PiB7CisgICAgICAgICAgICAgICAgICAgIHdyaXRlKGAtIERpZCB0aGUgc2Nyb2xsaW5nIHNu
YXAgdG8gdGhlIHRvcD8gJHtjb250YWluZXIuc2Nyb2xsVG9wID09IDAgPyAiWUVTIiA6ICJOTyJ9
YCk7CisgICAgICAgICAgICAgICAgICAgIHdyaXRlKGAtIERpZCBzY3JvbGxpbmcgc25hcCB0byB0
aGUgc2Vjb25kIGJveD8gJHtjb250YWluZXIuc2Nyb2xsVG9wID09IDYwMCA/ICJZRVMiIDogIk5P
In1gKTsKKyAgICAgICAgICAgICAgICAgICAgY29udGFpbmVyLnN0eWxlLnNjcm9sbFNuYXBUeXBl
ID0gInkgcHJveGltaXR5IgorICAgICAgICAgICAgICAgICAgICBjb250YWluZXIuc2Nyb2xsVG9w
ID0gMDsKKyAgICAgICAgICAgICAgICAgICAgc2V0VGltZW91dChyZXNvbHZlLCAwKTsKKyAgICAg
ICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIH0pOworICAgICAgICB9CisKKyAgICAgICAgZnVu
Y3Rpb24gcnVuKCkgeworICAgICAgICAgICAgaWYgKCF3aW5kb3cudGVzdFJ1bm5lciB8fCAhd2lu
ZG93LmV2ZW50U2VuZGVyKSB7CisgICAgICAgICAgICAgICAgd3JpdGUoIlRoaXMgdGVzdCByZXF1
aXJlcyBVSVNjcmlwdENvbnRyb2xsZXIgc3VwcG9ydC4iKTsKKyAgICAgICAgICAgICAgICByZXR1
cm47CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZlcnRpY2FsU2Nyb2xsSW5Db250YWlu
ZXIobmV3IEFycmF5KDE2KS5maWxsKC0xKSwgbmV3IEFycmF5KDMpLmZpbGwoLTEpKQorICAgICAg
ICAgICAgICAgIC50aGVuKCgpID0+IHZlcnRpY2FsU2Nyb2xsSW5Db250YWluZXIobmV3IEFycmF5
KDE2KS5maWxsKC0xKSwgbmV3IEFycmF5KDMpLmZpbGwoLTEpKSkKKyAgICAgICAgICAgICAgICAu
dGhlbigoKSA9PiB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKSk7CisgICAgICAgIH0KKyAgICAgICAg
PC9zY3JpcHQ+CisgICAgPC9oZWFkPgorICAgIDxib2R5IG9ubG9hZD1ydW4oKT4KKyAgICAgICAg
PGRpdiBpZD0iY29udGFpbmVyIj4KKyAgICAgICAgICAgIDxkaXYgY2xhc3M9ImFyZWEiIHN0eWxl
PSJiYWNrZ3JvdW5kLWNvbG9yOiByZWQ7Ij48L2Rpdj4KKyAgICAgICAgICAgIDxkaXYgY2xhc3M9
ImFyZWEiIHN0eWxlPSJiYWNrZ3JvdW5kLWNvbG9yOiBncmVlbjsiPjwvZGl2PgorICAgICAgICAg
ICAgPGRpdiBjbGFzcz0iYXJlYSIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6IGJsdWU7Ij48L2Rp
dj4KKyAgICAgICAgICAgIDxkaXYgY2xhc3M9ImFyZWEiIHN0eWxlPSJiYWNrZ3JvdW5kLWNvbG9y
OiBhcXVhOyI+PC9kaXY+CisgICAgICAgICAgICA8ZGl2IGNsYXNzPSJhcmVhIiBzdHlsZT0iYmFj
a2dyb3VuZC1jb2xvcjogeWVsbG93OyI+PC9kaXY+CisgICAgICAgICAgICA8ZGl2IGNsYXNzPSJh
cmVhIiBzdHlsZT0iYmFja2dyb3VuZC1jb2xvcjogZnVjaHNpYTsiPjwvZGl2PgorICAgICAgICA8
L2Rpdj4KKyAgICAgICAgPGRpdiBpZD0ib3V0cHV0Ij48L2Rpdj4KKyAgICA8L2JvZHk+Cis8L2h0
bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3Jv
bGwtc25hcC9zY3JvbGwtc25hcC1wcm94aW1pdHktbWFpbmZyYW1lLWV4cGVjdGVkLnR4dCBiL0xh
eW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFw
LXByb3hpbWl0eS1tYWluZnJhbWUtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjdkNDEwYWY2ODEz
MWIzY2IyYjNiZjlmNGYwMmFkOGMxODMzOWVkN2QKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1wcm94
aW1pdHktbWFpbmZyYW1lLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDEwIEBACitTY3JvbGxpbmcg
Ym9keSB3aXRoIDIgZHJhZyB0aWNrcworLSBEaWQgdGhlIHNjcm9sbGluZyBzbmFwIHRvIHRoZSB0
b3A/IFlFUworLSBEaWQgc2Nyb2xsaW5nIHNuYXAgdG8gdGhlIHNlY29uZCBib3g/IE5PCitTY3Jv
bGxpbmcgYm9keSB3aXRoIDMwIGRyYWcgdGlja3MKKy0gRGlkIHRoZSBzY3JvbGxpbmcgc25hcCB0
byB0aGUgdG9wPyBOTworLSBEaWQgc2Nyb2xsaW5nIHNuYXAgdG8gdGhlIHNlY29uZCBib3g/IE5P
CitTY3JvbGxpbmcgYm9keSB3aXRoIDYwIGRyYWcgdGlja3MKKy0gRGlkIHRoZSBzY3JvbGxpbmcg
c25hcCB0byB0aGUgdG9wPyBOTworLSBEaWQgc2Nyb2xsaW5nIHNuYXAgdG8gdGhlIHNlY29uZCBi
b3g/IFlFUworCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGlu
Zy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1wcm94aW1pdHktbWFpbmZyYW1lLmh0bWwgYi9MYXlv
dXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1w
cm94aW1pdHktbWFpbmZyYW1lLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjc5OTcxYjBjNjU5M2ExZTBjMTBl
MjNhNmVlMWIzZTZhYTg0Njg3OAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3RpbGVk
LWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLXByb3hpbWl0eS1tYWlu
ZnJhbWUuaHRtbApAQCAtMCwwICsxLDgyIEBACis8IURPQ1RZUEUgSFRNTD4KKzxodG1sPgorICAg
IDxoZWFkPgorICAgICAgICA8c3R5bGU+CisgICAgICAgICAgICBib2R5IHsKKyAgICAgICAgICAg
ICAgICBtYXJnaW46IDA7CisgICAgICAgICAgICAgICAgd2lkdGg6IDEwMCU7CisgICAgICAgICAg
ICAgICAgaGVpZ2h0OiAxMDAlOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXg6IG5vbmU7Cisg
ICAgICAgICAgICAgICAgb3ZlcmZsb3cteTogc2Nyb2xsOworICAgICAgICAgICAgICAgIHBvc2l0
aW9uOiBhYnNvbHV0ZTsKKyAgICAgICAgICAgICAgICBzY3JvbGwtc25hcC10eXBlOiB5IHByb3hp
bWl0eTsKKyAgICAgICAgICAgICAgICAtd2Via2l0LXNjcm9sbC1zbmFwLXR5cGU6IHByb3hpbWl0
eTsKKyAgICAgICAgICAgICAgICBzY3JvbGwtc25hcC10eXBlOiBwcm94aW1pdHk7CisgICAgICAg
ICAgICB9CisKKyAgICAgICAgICAgIC5hcmVhIHsKKyAgICAgICAgICAgICAgICB3aWR0aDogMTAw
JTsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6IDEwMCU7CisgICAgICAgICAgICAgICAgZmxvYXQ6
IGxlZnQ7CisgICAgICAgICAgICAgICAgb3BhY2l0eTogMC41OworICAgICAgICAgICAgICAgIHNj
cm9sbC1zbmFwLWFsaWduOiBzdGFydDsKKyAgICAgICAgICAgICAgICAtd2Via2l0LXNjcm9sbC1z
bmFwLWNvb3JkaW5hdGU6IDAgMDsKKyAgICAgICAgICAgICAgICBzY3JvbGwtc25hcC1jb29yZGlu
YXRlOiAwIDA7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICNvdXRwdXQgeworICAgICAg
ICAgICAgICAgIHBvc2l0aW9uOiBmaXhlZDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgPC9zdHls
ZT4KKyAgICAgICAgPHNjcmlwdD4KKyAgICAgICAgbGV0IHdyaXRlID0gcyA9PiBvdXRwdXQuaW5u
ZXJIVE1MICs9IHMgKyAiPGJyPiI7CisgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikgewor
ICAgICAgICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CisgICAgICAgICAgICB0ZXN0UnVu
bmVyLndhaXRVbnRpbERvbmUoKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHZlcnRp
Y2FsU2Nyb2xsSW5Cb2R5KGRyYWdEZWx0YXMpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVy
biBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHsKKyAgICAgICAgICAgICAgICB3cml0ZShgU2Nyb2xs
aW5nIGJvZHkgd2l0aCAke2RyYWdEZWx0YXMubGVuZ3RofSBkcmFnIHRpY2tzYCk7CisgICAgICAg
ICAgICAgICAgZXZlbnRTZW5kZXIubW9uaXRvcldoZWVsRXZlbnRzKCk7CisgICAgICAgICAgICAg
ICAgaW50ZXJuYWxzLnNldFBsYXRmb3JtTW9tZW50dW1TY3JvbGxpbmdQcmVkaWN0aW9uRW5hYmxl
ZChmYWxzZSk7CisgICAgICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8od2luZG93
LmlubmVyV2lkdGggLyAyLCB3aW5kb3cuaW5uZXJIZWlnaHQgLyAyKTsKKyAgICAgICAgICAgICAg
ICBkcmFnRGVsdGFzLmZvckVhY2goKGRlbHRhLCBpKSA9PiBldmVudFNlbmRlci5tb3VzZVNjcm9s
bEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgZGVsdGEsIGkgPT0gMCA/ICJiZWdhbiIg
OiAiY2hhbmdlZCIsICJub25lIikpOworICAgICAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNl
U2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAiZW5kZWQiLCAibm9uZSIp
OworICAgICAgICAgICAgICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRl
cygoKSA9PiB7CisgICAgICAgICAgICAgICAgICAgIGxldCBhcmVhSGVpZ2h0ID0gZG9jdW1lbnQu
cXVlcnlTZWxlY3RvcigiLmFyZWEiKS5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICAgICAgICAg
IHdyaXRlKGAtIERpZCB0aGUgc2Nyb2xsaW5nIHNuYXAgdG8gdGhlIHRvcD8gJHtkb2N1bWVudC5i
b2R5LnNjcm9sbFRvcCA9PSAwID8gIllFUyIgOiAiTk8ifWApOworICAgICAgICAgICAgICAgICAg
ICB3cml0ZShgLSBEaWQgc2Nyb2xsaW5nIHNuYXAgdG8gdGhlIHNlY29uZCBib3g/ICR7ZG9jdW1l
bnQuYm9keS5zY3JvbGxUb3AgPT0gYXJlYUhlaWdodCA/ICJZRVMiIDogIk5PIn1gKTsKKyAgICAg
ICAgICAgICAgICAgICAgZG9jdW1lbnQuYm9keS5zY3JvbGxUb3AgPSAwOworICAgICAgICAgICAg
ICAgICAgICBzZXRUaW1lb3V0KHJlc29sdmUsIDApOworICAgICAgICAgICAgICAgIH0pOworICAg
ICAgICAgICAgfSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBydW4oKSB7CisgICAg
ICAgICAgICBpZiAoIXdpbmRvdy50ZXN0UnVubmVyIHx8ICF3aW5kb3cuZXZlbnRTZW5kZXIpIHsK
KyAgICAgICAgICAgICAgICB3cml0ZSgiVG8gbWFudWFsbHkgdGVzdCwgdmVyaWZ5IHRoYXQgc2Ny
b2xsaW5nIG5lYXIgb25lIG9mIHRoZSBib3VuZGFyaWVzIGJldHdlZW4gdGhlIGNvbG9yZWQgYm94
ZXMiKTsKKyAgICAgICAgICAgICAgICB3cml0ZSgic25hcHMgdG8gdGhlIGVkZ2Ugb2YgdGhlIG5l
YXJlc3QgY29sb3JlZCBib3gsIGJ1dCBzY3JvbGxpbmcgc29tZXdoZXJlIG5lYXIgdGhlIG1pZGRs
ZSBvZiB0d28iKTsKKyAgICAgICAgICAgICAgICB3cml0ZSgiYm94ZXMgZG9lcyBub3QgY2F1c2Ug
dGhlIHNjcm9sbCBvZmZzZXQgdG8gc25hcC4iKTsKKyAgICAgICAgICAgICAgICByZXR1cm47Cisg
ICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGxldCBhcmVhSGVpZ2h0ID0gZG9jdW1lbnQucXVl
cnlTZWxlY3RvcigiLmFyZWEiKS5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICB2ZXJ0aWNhbFNj
cm9sbEluQm9keShuZXcgQXJyYXkoMikuZmlsbCgtMSkpCisgICAgICAgICAgICAgICAgLnRoZW4o
KCkgPT4gdmVydGljYWxTY3JvbGxJbkJvZHkobmV3IEFycmF5KE1hdGgucm91bmQoYXJlYUhlaWdo
dCAvIDIwKSkuZmlsbCgtMSkpKQorICAgICAgICAgICAgICAgIC50aGVuKCgpID0+IHZlcnRpY2Fs
U2Nyb2xsSW5Cb2R5KG5ldyBBcnJheShNYXRoLnJvdW5kKGFyZWFIZWlnaHQgLyAxMCkpLmZpbGwo
LTEpKSkKKyAgICAgICAgICAgICAgICAudGhlbigoKSA9PiB0ZXN0UnVubmVyLm5vdGlmeURvbmUo
KSk7CisgICAgICAgIH0KKyAgICAgICAgPC9zY3JpcHQ+CisgICAgPC9oZWFkPgorICAgIDxib2R5
IG9ubG9hZD1ydW4oKT4KKyAgICAgICAgPGRpdiBjbGFzcz0iYXJlYSIgc3R5bGU9ImJhY2tncm91
bmQtY29sb3I6IHJlZDsiPjwvZGl2PgorICAgICAgICA8ZGl2IGNsYXNzPSJhcmVhIiBzdHlsZT0i
YmFja2dyb3VuZC1jb2xvcjogZ3JlZW47Ij48L2Rpdj4KKyAgICAgICAgPGRpdiBjbGFzcz0iYXJl
YSIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6IGJsdWU7Ij48L2Rpdj4KKyAgICAgICAgPGRpdiBj
bGFzcz0iYXJlYSIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6IGFxdWE7Ij48L2Rpdj4KKyAgICAg
ICAgPGRpdiBjbGFzcz0iYXJlYSIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6IHllbGxvdzsiPjwv
ZGl2PgorICAgICAgICA8ZGl2IGNsYXNzPSJhcmVhIiBzdHlsZT0iYmFja2dyb3VuZC1jb2xvcjog
ZnVjaHNpYTsiPjwvZGl2PgorICAgIDwvYm9keT4KKyAgICA8ZGl2IGlkPSJvdXRwdXQiPjwvZGl2
PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxp
bmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtcHJveGltaXR5LW92ZXJmbG93LWV4cGVjdGVkLnR4
dCBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9s
bC1zbmFwLXByb3hpbWl0eS1vdmVyZmxvdy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYTU5Zjdh
OWU3YjE4MGMxZDc0NTE4NWMzZmNhODMxMjg0MDdhOTJlOAotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFw
LXByb3hpbWl0eS1vdmVyZmxvdy1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxMCBAQAorU2Nyb2xs
aW5nIGluIGNvbnRhaW5lciB3aXRoIDIgZHJhZyB0aWNrcworLSBEaWQgdGhlIHNjcm9sbGluZyBz
bmFwIHRvIHRoZSB0b3A/IFlFUworLSBEaWQgc2Nyb2xsaW5nIHNuYXAgdG8gdGhlIHNlY29uZCBi
b3g/IE5PCitTY3JvbGxpbmcgaW4gY29udGFpbmVyIHdpdGggMzEgZHJhZyB0aWNrcworLSBEaWQg
dGhlIHNjcm9sbGluZyBzbmFwIHRvIHRoZSB0b3A/IE5PCistIERpZCBzY3JvbGxpbmcgc25hcCB0
byB0aGUgc2Vjb25kIGJveD8gTk8KK1Njcm9sbGluZyBpbiBjb250YWluZXIgd2l0aCA1OSBkcmFn
IHRpY2tzCistIERpZCB0aGUgc2Nyb2xsaW5nIHNuYXAgdG8gdGhlIHRvcD8gTk8KKy0gRGlkIHNj
cm9sbGluZyBzbmFwIHRvIHRoZSBzZWNvbmQgYm94PyBZRVMKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtcHJv
eGltaXR5LW92ZXJmbG93Lmh0bWwgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGlu
Zy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1wcm94aW1pdHktb3ZlcmZsb3cuaHRtbApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi41YjA1MmZkYmY5NGM4NGEzZDhlMGQxYTI4ZmNiNTIyMDJhZWY5ZjJmCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAv
c2Nyb2xsLXNuYXAtcHJveGltaXR5LW92ZXJmbG93Lmh0bWwKQEAgLTAsMCArMSw4NCBAQAorPCFE
T0NUWVBFIEhUTUw+Cis8aHRtbD4KKyAgICA8aGVhZD4KKyAgICAgICAgPHN0eWxlPgorICAgICAg
ICAgICAgYm9keSB7CisgICAgICAgICAgICAgICAgbWFyZ2luOiAwOworICAgICAgICAgICAgICAg
IG92ZXJmbG93OiBoaWRkZW47CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICNjb250YWlu
ZXIgeworICAgICAgICAgICAgICAgIHdpZHRoOiA2MDBweDsKKyAgICAgICAgICAgICAgICBoZWln
aHQ6IDYwMHB4OworICAgICAgICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKKyAgICAgICAg
ICAgICAgICB0b3A6IDA7CisgICAgICAgICAgICAgICAgbGVmdDogMDsKKyAgICAgICAgICAgICAg
ICBvdmVyZmxvdy14OiBub25lOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXk6IHNjcm9sbDsK
KyAgICAgICAgICAgICAgICBzY3JvbGwtc25hcC10eXBlOiB5IHByb3hpbWl0eTsKKyAgICAgICAg
ICAgICAgICAtd2Via2l0LXNjcm9sbC1zbmFwLXR5cGU6IHByb3hpbWl0eTsKKyAgICAgICAgICAg
ICAgICBzY3JvbGwtc25hcC10eXBlOiBwcm94aW1pdHk7CisgICAgICAgICAgICAgICAgb3BhY2l0
eTogMC41OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAuYXJlYSB7CisgICAgICAgICAg
ICAgICAgaGVpZ2h0OiA2MDBweDsKKyAgICAgICAgICAgICAgICB3aWR0aDogNjAwcHg7CisgICAg
ICAgICAgICAgICAgZmxvYXQ6IGxlZnQ7CisgICAgICAgICAgICAgICAgc2Nyb2xsLXNuYXAtYWxp
Z246IHN0YXJ0OworICAgICAgICAgICAgICAgIC13ZWJraXQtc2Nyb2xsLXNuYXAtY29vcmRpbmF0
ZTogMCAwOworICAgICAgICAgICAgICAgIHNjcm9sbC1zbmFwLWNvb3JkaW5hdGU6IDAgMDsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgPC9zdHlsZT4KKyAgICAgICAgPHNjcmlwdD4KKyAgICAgICAg
bGV0IHdyaXRlID0gcyA9PiBvdXRwdXQuaW5uZXJIVE1MICs9IHMgKyAiPGJyPiI7CisgICAgICAg
IGlmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgICAgICAgICAgdGVzdFJ1bm5lci5kdW1wQXNU
ZXh0KCk7CisgICAgICAgICAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKKyAgICAgICAg
fQorCisgICAgICAgIGZ1bmN0aW9uIHZlcnRpY2FsU2Nyb2xsSW5Db250YWluZXIoZHJhZ0RlbHRh
cykKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKHJlc29sdmUgPT4g
eworICAgICAgICAgICAgICAgIHdyaXRlKGBTY3JvbGxpbmcgaW4gJHtjb250YWluZXIuaWR9IHdp
dGggJHtkcmFnRGVsdGFzLmxlbmd0aH0gZHJhZyB0aWNrc2ApOworICAgICAgICAgICAgICAgIGV2
ZW50U2VuZGVyLm1vbml0b3JXaGVlbEV2ZW50cygpOworICAgICAgICAgICAgICAgIGludGVybmFs
cy5zZXRQbGF0Zm9ybU1vbWVudHVtU2Nyb2xsaW5nUHJlZGljdGlvbkVuYWJsZWQoZmFsc2UpOwor
ICAgICAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKDMwMCwgMzAwKTsKKyAgICAg
ICAgICAgICAgICBkcmFnRGVsdGFzLmZvckVhY2goKGRlbHRhLCBpKSA9PiBldmVudFNlbmRlci5t
b3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgZGVsdGEsIGkgPT0gMCA/
ICJiZWdhbiIgOiAiY2hhbmdlZCIsICJub25lIikpOworICAgICAgICAgICAgICAgIGV2ZW50U2Vu
ZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAiZW5kZWQi
LCAibm9uZSIpOworICAgICAgICAgICAgICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9sbGlu
Z0NvbXBsZXRlcygoKSA9PiB7CisgICAgICAgICAgICAgICAgICAgIHdyaXRlKGAtIERpZCB0aGUg
c2Nyb2xsaW5nIHNuYXAgdG8gdGhlIHRvcD8gJHtjb250YWluZXIuc2Nyb2xsVG9wID09IDAgPyAi
WUVTIiA6ICJOTyJ9YCk7CisgICAgICAgICAgICAgICAgICAgIHdyaXRlKGAtIERpZCBzY3JvbGxp
bmcgc25hcCB0byB0aGUgc2Vjb25kIGJveD8gJHtjb250YWluZXIuc2Nyb2xsVG9wID09IDYwMCA/
ICJZRVMiIDogIk5PIn1gKTsKKyAgICAgICAgICAgICAgICAgICAgY29udGFpbmVyLnNjcm9sbFRv
cCA9IDA7CisgICAgICAgICAgICAgICAgICAgIHNldFRpbWVvdXQocmVzb2x2ZSwgMCk7CisgICAg
ICAgICAgICAgICAgfSk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1
bmN0aW9uIHJ1bigpIHsKKyAgICAgICAgICAgIGlmICghd2luZG93LnRlc3RSdW5uZXIgfHwgIXdp
bmRvdy5ldmVudFNlbmRlcikgeworICAgICAgICAgICAgICAgIHdyaXRlKCJUbyBtYW51YWxseSB0
ZXN0LCB2ZXJpZnkgdGhhdCBzY3JvbGxpbmcgbmVhciBvbmUgb2YgdGhlIGJvdW5kYXJpZXMgYmV0
d2VlbiB0aGUgY29sb3JlZCBib3hlcyIpOworICAgICAgICAgICAgICAgIHdyaXRlKCJzbmFwcyB0
byB0aGUgZWRnZSBvZiB0aGUgbmVhcmVzdCBjb2xvcmVkIGJveCwgYnV0IHNjcm9sbGluZyBzb21l
d2hlcmUgbmVhciB0aGUgbWlkZGxlIG9mIHR3byIpOworICAgICAgICAgICAgICAgIHdyaXRlKCJi
b3hlcyBkb2VzIG5vdCBjYXVzZSB0aGUgc2Nyb2xsIG9mZnNldCB0byBzbmFwLiIpOworICAgICAg
ICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmVydGljYWxT
Y3JvbGxJbkNvbnRhaW5lcihuZXcgQXJyYXkoMikuZmlsbCgtMSkpCisgICAgICAgICAgICAgICAg
LnRoZW4oKCkgPT4gdmVydGljYWxTY3JvbGxJbkNvbnRhaW5lcihuZXcgQXJyYXkoMzEpLmZpbGwo
LTEpKSkKKyAgICAgICAgICAgICAgICAudGhlbigoKSA9PiB2ZXJ0aWNhbFNjcm9sbEluQ29udGFp
bmVyKG5ldyBBcnJheSg1OSkuZmlsbCgtMSkpKQorICAgICAgICAgICAgICAgIC50aGVuKCgpID0+
IHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpKTsKKyAgICAgICAgfQorICAgICAgICA8L3NjcmlwdD4K
KyAgICA8L2hlYWQ+CisgICAgPGJvZHkgb25sb2FkPXJ1bigpPgorICAgICAgICA8ZGl2IGlkPSJj
b250YWluZXIiPgorICAgICAgICAgICAgPGRpdiBjbGFzcz0iYXJlYSIgc3R5bGU9ImJhY2tncm91
bmQtY29sb3I6IHJlZDsiPjwvZGl2PgorICAgICAgICAgICAgPGRpdiBjbGFzcz0iYXJlYSIgc3R5
bGU9ImJhY2tncm91bmQtY29sb3I6IGdyZWVuOyI+PC9kaXY+CisgICAgICAgICAgICA8ZGl2IGNs
YXNzPSJhcmVhIiBzdHlsZT0iYmFja2dyb3VuZC1jb2xvcjogYmx1ZTsiPjwvZGl2PgorICAgICAg
ICAgICAgPGRpdiBjbGFzcz0iYXJlYSIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6IGFxdWE7Ij48
L2Rpdj4KKyAgICAgICAgICAgIDxkaXYgY2xhc3M9ImFyZWEiIHN0eWxlPSJiYWNrZ3JvdW5kLWNv
bG9yOiB5ZWxsb3c7Ij48L2Rpdj4KKyAgICAgICAgICAgIDxkaXYgY2xhc3M9ImFyZWEiIHN0eWxl
PSJiYWNrZ3JvdW5kLWNvbG9yOiBmdWNoc2lhOyI+PC9kaXY+CisgICAgICAgIDwvZGl2PgorICAg
ICAgICA8ZGl2IGlkPSJvdXRwdXQiPjwvZGl2PgorICAgIDwvYm9keT4KKzwvaHRtbD4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Nj
cm9sbC1zbmFwLXNjcm9sbGluZy1qdW1wcy10by10b3AuaHRtbCBiL0xheW91dFRlc3RzL3RpbGVk
LWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLXNjcm9sbGluZy1qdW1w
cy10by10b3AuaHRtbAppbmRleCBhNmJhZDQ5Zjk3MGQ1NzIwOTI3NTY0ODk2Y2FmNjU3MjA4ZTUw
OTJhLi5mYzkxMDdiMGYyOTYwMDc4Nzg0MzFkNTc0ZGY4ZjdkNWU4ODE3MjhmIDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwt
c25hcC1zY3JvbGxpbmctanVtcHMtdG8tdG9wLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQt
ZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtc2Nyb2xsaW5nLWp1bXBz
LXRvLXRvcC5odG1sCkBAIC0zNCw2ICszNCw3IEBACiAgICAgICAgICAgICB0ZXN0UnVubmVyLmR1
bXBBc1RleHQoKTsKICAgICAgICAgICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOwogICAg
ICAgICAgICAgZXZlbnRTZW5kZXIubW9uaXRvcldoZWVsRXZlbnRzKCk7CisgICAgICAgICAgICBp
bnRlcm5hbHMuc2V0UGxhdGZvcm1Nb21lbnR1bVNjcm9sbGluZ1ByZWRpY3Rpb25FbmFibGVkKGZh
bHNlKTsKICAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKGNvbnRhaW5lci5vZmZz
ZXRMZWZ0ICsgY29udGFpbmVyLmNsaWVudFdpZHRoIC8gMiwgY29udGFpbmVyLm9mZnNldFRvcCAr
IGNvbnRhaW5lci5jbGllbnRIZWlnaHQgLyAyKTsKIAogICAgICAgICAgICAgd3JpdGUoIlNjcm9s
bGluZyB3aXRob3V0IG1vbWVudHVtIHRvIHRoZSBzYW1lIHBvc2l0aW9uIHNldmVyYWwgdGltZXMi
KQo=
</data>
<flag name="review"
          id="320121"
          type_id="1"
          status="+"
          setter="dino"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>298508</attachid>
            <date>2017-01-10 13:25:46 -0800</date>
            <delta_ts>2017-01-10 13:50:23 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-135994-20170110132409.patch</filename>
            <type>text/plain</type>
            <size>136941</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjEwNTU0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDQ0ZjU2ZDhkMGMyNjFj
MmRhNTc4MDUyZTUwZDQ3OWJkNTJhOWI0MC4uNTZlZTkxMWI4ZWZlNTUxOGFkNzkzNGQzMTYwZDY1
Y2FhMjE1ODJkMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4NyBAQAorMjAxNy0wMS0xMCAgV2Vu
c29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KKworICAgICAgICBJbXBsZW1lbnQg
InByb3hpbWl0eSIgc2Nyb2xsIHNuYXBwaW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xMzU5OTQKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzE4MTYy
NDE4PgorCisgICAgICAgIFJldmlld2VkIGJ5IERlYW4gSmFja3Nvbi4KKworICAgICAgICBBZGRz
IHN1cHBvcnQgZm9yIHByb3hpbWl0eSBzY3JvbGwgc25hcHBpbmcuIFRvIGRvIHRoaXMsIHdlIGlu
dHJvZHVjZSBzY3JvbGwgb2Zmc2V0IHJhbmdlcywgYSBsaXN0IG9mIHNjcm9sbAorICAgICAgICBv
ZmZzZXQgcmFuZ2VzIHRoYXQgYXJlIHBsdW1iZWQgYWxvbmdzaWRlIHRoZSBsaXN0IG9mIHNjcm9s
bCBzbmFwIG9mZnNldHMuIFNpbWlsYXIgdG8gYSBzbmFwIG9mZnNldCwgYSBzbmFwCisgICAgICAg
IG9mZnNldCByYW5nZSBjb250YWlucyBzY3JvbGwgb2Zmc2V0cyBvbiB3aGljaCBzY3JvbGxpbmcg
aXMgYWxsb3dlZCB0byBjb21lIHRvIGEgcmVzdCB3aXRoaW4gYSBzY3JvbGwgc25hcHBpbmcKKyAg
ICAgICAgY29udGFpbmVyLiBIb3dldmVyLCB1bmxpa2Ugbm9ybWFsIHNuYXAgb2Zmc2V0cywgc2Ny
b2xsaW5nIG1heSBvbmx5IGNvbWUgdG8gcmVzdCB3aXRoaW4gYSBzbmFwIG9mZnNldCByYW5nZSBp
ZgorICAgICAgICB0aGUgcHJlZGljdGVkIHNjcm9sbCBvZmZzZXQgYWxyZWFkeSBsaWVzIHdpdGhp
biB0aGUgcmFuZ2UuIFRoZSBuZXcgYWxnb3JpdGhtIGZvciBzZWxlY3RpbmcgYSB0YXJnZXQgc2Ny
b2xsIHNuYXAKKyAgICAgICAgcG9zaXRpb24gZ2l2ZW4gYSBkZXN0aW5hdGlvbiBvZmZzZXQgaXMg
bm93OgorCisgICAgICAgIC0gICBJZiB0aGUgc2Nyb2xsIGRlc3RpbmF0aW9uIGxpZXMgd2l0aGlu
IGEgc25hcCBvZmZzZXQgcmFuZ2UsIHJldHVybiB0aGUgc2Nyb2xsIGRlc3RpbmF0aW9uCisgICAg
ICAgIC0gICBPdGhlcndpc2UsIGNvbXB1dGUgdGhlIG5lYXJlc3QgbG93ZXIvdXBwZXIgc25hcCBv
ZmZzZXRzIGFuZCBsb3dlci91cHBlciBzbmFwIG9mZnNldCByYW5nZXMKKyAgICAgICAgLSAgIElm
IHNjcm9sbGluZyBlbmRlZCB3aXRoIG5vIHZlbG9jaXR5LCByZXR1cm4gdGhlIG5lYXJlc3Qgc25h
cCBvZmZzZXQKKyAgICAgICAgLSAgIElmIHNjcm9sbGluZyBlbmRlZCB3aXRoIHBvc2l0aXZlIHZl
bG9jaXR5LCBjaG9vc2UgdGhlIHVwcGVyIHNuYXAgb2Zmc2V0IG9ubHkgaWYgdGhlcmUgaXMgbm8g
c25hcCBvZmZzZXQKKyAgICAgICAgICAgIHJhbmdlIGluIGJldHdlZW4gdGhlIHNjcm9sbCBkZXN0
aW5hdGlvbiBhbmQgdGhlIHNuYXAgb2Zmc2V0OyBlbHNlLCBjaG9vc2UgdGhlIGxvd2VyIHNuYXAg
b2Zmc2V0CisgICAgICAgIC0gICBJZiBzY3JvbGxpbmcgZW5kZWQgd2l0aCBuZWdhdGl2ZSB2ZWxv
Y2l0eSwgY2hvb3NlIHRoZSBsb3dlciBzbmFwIG9mZnNldCBvbmx5IGlmIHRoZXJlIGlzIG5vIHNu
YXAgb2Zmc2V0CisgICAgICAgICAgICByYW5nZSBpbiBiZXR3ZWVuIHRoZSBzY3JvbGwgZGVzdGlu
YXRpb24gYW5kIHRoZSBzbmFwIG9mZnNldDsgZWxzZSwgY2hvb3NlIHRoZSB1cHBlciBzbmFwIG9m
ZnNldAorCisgICAgICAgIFRoZSBleHRyYSBydWxlIGFjY291bnRpbmcgZm9yIHNjcm9sbCBvZmZz
ZXQgcmFuZ2VzIGluIGJldHdlZW4gdGhlIHNjcm9sbCBkZXN0aW5hdGlvbiBhbmQgYSBwb3RlbnRp
YWwgc25hcCBvZmZzZXQKKyAgICAgICAgaGFuZGxlcyB0aGUgY29ybmVyIGNhc2Ugd2hlcmUgdGhl
IHVzZXIgc2Nyb2xscyB3aXRoIG1vbWVudHVtIHZlcnkgbGlnaHRseSBhd2F5IGZyb20gYSBzbmFw
IG9mZnNldCwgc3VjaCB0aGF0IHRoZQorICAgICAgICBwcmVkaWN0ZWQgc2Nyb2xsIGRlc3RpbmF0
aW9uIGlzIHN0aWxsIHdpdGhpbiBwcm94aW1pdHkgb2YgdGhlIHNuYXAgb2Zmc2V0LiBJbiB0aGlz
IGNhc2UsIHRoZSByZWd1bGFyIChtYW5kYXRvcnkKKyAgICAgICAgc2Nyb2xsIHNuYXBwaW5nKSBi
ZWhhdmlvciB3b3VsZCBiZSB0byBzbmFwIHRvIHRoZSBuZXh0IG9mZnNldCBpbiB0aGUgZGlyZWN0
aW9uIG9mIG1vbWVudHVtIHNjcm9sbGluZywgYnV0CisgICAgICAgIGluc3RlYWQsIGl0IGlzIG1v
cmUgaW50dWl0aXZlIHRvIHJldHVybiB0byB0aGUgb3JpZ2luYWwgc25hcCBwb3NpdGlvbi4KKwor
ICAgICAgICBXZSBhbHNvIG1vdmUgc2Nyb2xsaW5nIHByZWRpY3Rpb24gbG9naWMgaW50byBTY3Jv
bGxpbmdNb21lbnR1bUNhbGN1bGF0b3IgYW5kIGFkb3B0IHRoZSBwbGF0Zm9ybQorICAgICAgICBf
TlNTY3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3IncyBkZXN0aW5hdGlvbk9yaWdpbiBwcm9wZXJ0
eSB3aGVuIGNvbXB1dGluZyB0aGUgcHJlZGljdGVkIHNjcm9sbCBkZXN0aW5hdGlvbi4KKyAgICAg
ICAgUHJldmlvdXNseSwgd2Ugd2VyZSBzaW1wbHkgbXVsdGlwbHlpbmcgYnkgYW4gZW1waXJpY2Fs
bHktZGVyaXZlZCBjb25zdGFudCB0byBhcHByb3hpbWF0ZSB0aGUgc2Nyb2xsIGRlc3RpbmF0aW9u
LAorICAgICAgICBidXQgbm93IHRoYXQgd2UgYXJlIHN1cHBvcnRpbmcgcHJveGltaXR5IHNjcm9s
bCBzbmFwcGluZywgd2UgbmVlZCBtb3JlIGV4YWN0IHNjcm9sbCBkZXN0aW5hdG9uIHByZWRpY3Rp
b24gaW4KKyAgICAgICAgb3JkZXIgdG8gbWFrZSBzdXJlIHRoYXQgc2Nyb2xsaW5nIHRvIGEgc25h
cCBvZmZzZXQgcmFuZ2UgZmVlbHMgbmF0dXJhbC4KKworICAgICAgICBUZXN0czogdGlsZWQtZHJh
d2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtbWFuZGF0b3J5LXRoZW4tcHJv
eGltaXR5Lmh0bWwKKyAgICAgICAgICAgICAgIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9s
bC1zbmFwL3Njcm9sbC1zbmFwLXByb3hpbWl0eS1tYWluZnJhbWUuaHRtbAorICAgICAgICAgICAg
ICAgdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtcHJveGlt
aXR5LW92ZXJmbG93Lmh0bWwKKworICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvajoKKyAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9Bc3luY1Njcm9sbGluZ0Nvb3JkaW5h
dG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnNldFN0YXRlU2Nyb2xsaW5nTm9kZVNuYXBPZmZz
ZXRzQXNGbG9hdCk6CisgICAgICAgIChXZWJDb3JlOjpBc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9y
Ojp1cGRhdGVPdmVyZmxvd1Njcm9sbGluZ05vZGUpOgorICAgICAgICAoV2ViQ29yZTo6QXN5bmNT
Y3JvbGxpbmdDb29yZGluYXRvcjo6dXBkYXRlU2Nyb2xsU25hcFByb3BlcnRpZXNXaXRoRnJhbWVW
aWV3KToKKworICAgICAgICBNYWtlIGJvaWxlcnBsYXRlIGNoYW5nZXMgdG8gcGx1bWIgbGlzdHMg
b2YgaG9yaXpvbnRhbCBhbmQgdmVydGljYWwgc25hcCBvZmZzZXQgcmFuZ2VzIGFsb25nc2lkZSB0
aGUgbGlzdHMgb2YKKyAgICAgICAgaG9yaXpvbnRhbCBhbmQgdmVydGljYWwgc25hcCBvZmZzZXRz
LgorCisgICAgICAgICogcGFnZS9zY3JvbGxpbmcvQXhpc1Njcm9sbFNuYXBPZmZzZXRzLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OnNuYXBPZmZzZXRSYW5nZXNUb1N0cmluZyk6CisgICAgICAgIChX
ZWJDb3JlOjppbmRpY2VzT2ZOZWFyZXN0U25hcE9mZnNldFJhbmdlcyk6CisgICAgICAgIChXZWJD
b3JlOjppbmRpY2VzT2ZOZWFyZXN0U25hcE9mZnNldHMpOgorICAgICAgICAoV2ViQ29yZTo6YWRq
dXN0QXhpc1NuYXBPZmZzZXRzRm9yU2Nyb2xsRXh0ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OmNv
bXB1dGVBeGlzUHJveGltaXR5U25hcE9mZnNldFJhbmdlcyk6CisgICAgICAgIChXZWJDb3JlOjp1
cGRhdGVTbmFwT2Zmc2V0c0ZvclNjcm9sbGFibGVBcmVhKToKKyAgICAgICAgKFdlYkNvcmU6OmNs
b3Nlc3RTbmFwT2Zmc2V0KToKKworICAgICAgICBBZGp1c3QgdGhlIHNuYXAgb2Zmc2V0IHNlbGVj
dGlvbiBhbGdvcml0aG0gdG8gdGFrZSBzbmFwIG9mZnNldCByYW5nZXMgaW50byBhY2NvdW50LiBT
ZWUgYWJvdmUgZm9yIG1vcmUgZGV0YWlscy4KKyAgICAgICAgQWRkaXRpb25hbGx5LCBhdWdtZW50
IHNuYXAgb2Zmc2V0IHVwZGF0ZSBsb2dpYyB0byBlbWl0IHNuYXAgb2Zmc2V0IHJhbmdlcyBmb3Ig
cHJveGltaXR5IHNjcm9sbCBzbmFwcGluZy4gVG8gZG8KKyAgICAgICAgdGhpcywgd2UgcnVuIHRo
ZSBmb2xsb3dpbmcgc3RlcHMgb24gdGhlIGZpbmFsIGxpc3Qgb2YgcHJvY2Vzc2VkIHNuYXAgb2Zm
c2V0czoKKyAgICAgICAgLSAgIENvbXB1dGUgdGhlIHByb3hpbWl0eSBkaXN0YW5jZSwgd2hpY2gg
KGZvciBub3cpIGlzIGFyYml0cmFyaWx5IDAuMyAqIHRoZSBsZW5ndGggb3Igd2lkdGggb2YgdGhl
IHNjcm9sbCBzbmFwCisgICAgICAgICAgICBwb3J0LCBkZXBlbmRpbmcgb24gd2hldGhlciBzY3Jv
bGwgc25hcHBpbmcgaXMgdGFraW5nIHBsYWNlIGluIHRoZSBYIG9yIFkgYXhpcy4KKyAgICAgICAg
LSAgIEZvciBlYWNoIHBhaXIgb2YgYWRqYWNlbnQgc25hcCBvZmZzZXRzLCBpZiB0aGV5IGFyZSBt
b3JlIHRoYW4gMiAqIHByb3hpbWl0eSBkaXN0YW5jZSBhd2F5IGZyb20gZWFjaCBvdGhlciwKKyAg
ICAgICAgICAgIGVtaXQgYSBzbmFwIG9mZnNldCByYW5nZSBzdGFydGluZyBmcm9tIChsb3dlciBz
bmFwIG9mZnNldCArIHByb3hpbWl0eSBkaXN0YW5jZSkgYW5kIGVuZGluZyBvbiAodXBwZXIgc25h
cAorICAgICAgICAgICAgb2Zmc2V0ICsgcHJveGltaXR5IGRpc3RhbmNlKS4KKworICAgICAgICAq
IHBhZ2Uvc2Nyb2xsaW5nL0F4aXNTY3JvbGxTbmFwT2Zmc2V0cy5oOgorICAgICAgICAoV2ViQ29y
ZTo6Y2xvc2VzdFNuYXBPZmZzZXQpOiBEZWxldGVkLgorICAgICAgICAqIHBhZ2Uvc2Nyb2xsaW5n
L1Njcm9sbFNuYXBPZmZzZXRzSW5mby5oOgorCisgICAgICAgIEludHJvZHVjZSBTY3JvbGxTbmFw
T2Zmc2V0c0luZm8sIGEgc3RydWN0IHdoaWNoIGNvbnRhaW5zIGRhdGEgcmVsZXZhbnQgdG8gc2Ny
b2xsIHNuYXBwaW5nLiBUaGlzIGluY2x1ZGVzCisgICAgICAgIHZlcnRpY2FsIGFuZCBob3Jpem9u
dGFsIHNuYXAgb2Zmc2V0cywgYXMgd2VsbCBhcyB2ZXJ0aWNhbCBhbmQgaG9yaXpvbnRhbCBzbmFw
IG9mZnNldCByYW5nZXMuIFNuYXAgb2Zmc2V0IHJhbmdlcworICAgICAgICBjb25zaXN0IG9mIGEg
dmVjdG9yIG9mIHJhbmdlcyBvZiBzY3JvbGwgb2Zmc2V0cy4KKworICAgICAgICAqIHBhZ2Uvc2Ny
b2xsaW5nL1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmg6CisgICAgICAgICogcGFnZS9zY3JvbGxpbmcv
U2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnByb2pl
Y3RlZEluZXJ0aWFsU2Nyb2xsRGlzdGFuY2UpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5n
TW9tZW50dW1DYWxjdWxhdG9yOjpTY3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3IpOgorICAgICAg
ICAoV2ViQ29yZTo6U2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yOjpzZXRSZXRhcmdldGVkU2Ny
b2xsT2Zmc2V0KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRv
cjo6cHJlZGljdGVkRGVzdGluYXRpb25PZmZzZXQpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xs
aW5nTW9tZW50dW1DYWxjdWxhdG9yOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xs
aW5nTW9tZW50dW1DYWxjdWxhdG9yOjpzZXRQbGF0Zm9ybU1vbWVudHVtU2Nyb2xsaW5nUHJlZGlj
dGlvbkVuYWJsZWQpOgorICAgICAgICAoV2ViQ29yZTo6QmFzaWNTY3JvbGxpbmdNb21lbnR1bUNh
bGN1bGF0b3I6OkJhc2ljU2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yKToKKyAgICAgICAgKFdl
YkNvcmU6OkJhc2ljU2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yOjpsaW5lYXJseUludGVycG9s
YXRlZE9mZnNldEF0UHJvZ3Jlc3MpOgorICAgICAgICAoV2ViQ29yZTo6QmFzaWNTY3JvbGxpbmdN
b21lbnR1bUNhbGN1bGF0b3I6OmluaXRpYWxpemVJbnRlcnBvbGF0aW9uQ29lZmZpY2llbnRzSWZO
ZWNlc3NhcnkpOgorICAgICAgICAoV2ViQ29yZTo6QmFzaWNTY3JvbGxpbmdNb21lbnR1bUNhbGN1
bGF0b3I6OmluaXRpYWxpemVTbmFwUHJvZ3Jlc3NDdXJ2ZSk6CisgICAgICAgICogcGFnZS9zY3Jv
bGxpbmcvU2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yLmg6CisgICAgICAgIChXZWJDb3JlOjpT
Y3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3I6OnJldGFyZ2V0ZWRTY3JvbGxPZmZzZXQpOgorICAg
ICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yOjpyZXRhcmdldGVkU2Ny
b2xsT2Zmc2V0RGlkQ2hhbmdlKToKKworICAgICAgICBDdXJyZW50bHksIHRoZSBTY3JvbGxpbmdN
b21lbnR1bUNhbGN1bGF0b3IgaXMgcmVzcG9uc2libGUgZm9yIHRha2luZyBhbiBpbml0aWFsIHBv
c2l0aW9uLCBpbml0aWFsIHZlbG9jaXR5LCBhbmQKKyAgICAgICAgdGFyZ2V0IHBvc2l0aW9uIGFu
ZCBhbmltYXRpbmcgdGhlIHNjcm9sbCBvZmZzZXQgZnJvbSB0aGUgaW5pdGlhbCB0byB0YXJnZXQg
cG9zaXRpb24uIE5vdywgd2UgcmVmYWN0b3IgdGhlCisgICAgICAgIFNjcm9sbGluZ01vbWVudHVt
Q2FsY3VsYXRvciBpbnRlcmZhY2UgdG8gbm8gbG9uZ2VyIHRha2UgYSB0YXJnZXQgb2Zmc2V0IHVw
b24gaW5pdGlhbGl6YXRpb24sIGFuZCBpbnN0ZWFkIGNvbXB1dGUKKyAgICAgICAgdGhlIHByZWRp
Y3RlZCBzY3JvbGwgZGVzdGluYXRpb24gZ2l2ZW4gaW5pdGlhbCBwb3NpdGlvbiBhbmQgdmVsb2Np
dHk7IGNsaWVudHMgb2YgdGhlIFNjcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvcgorICAgICAgICB0
aGVuIHVzZSB0aGlzIHByZWRpY3RlZCBzY3JvbGwgZGVzdGluYXRpb24gdG8gY29tcHV0ZSBhIHJl
dGFyZ2V0ZWQgc2Nyb2xsIG9mZnNldCBhbmQgdGhlbiBjYWxsCisgICAgICAgIHNldFJldGFyZ2V0
ZWRTY3JvbGxPZmZzZXQgb24gdGhlIGNhbGN1bGF0b3IsIHdoaWNoIHNldHMgdXAgYW4gYW5pbWF0
aW9uIGN1cnZlIHRvIHRoZSBuZXcgcmV0YXJnZXRlZCBvZmZzZXQuIFRoaXMKKyAgICAgICAgYWxs
b3dzIGJvdGggdGhlIEFwcEtpdC1iYXNlZCBzY3JvbGxpbmcgbW9tZW50dW0gY2FsY3VsYXRvciBh
bmQgcGxhdGZvcm0taW52YXJpYW50IG1vbWVudHVtIGNhbGN1bGF0b3IgdG8gYmUgdXNlZAorICAg
ICAgICBpbnRlcmNoYW5nZWFibHksIHdoaWxlIHN0aWxsIGFsbG93aW5nIHRoZW0gdG8gY29tcHV0
ZSBhIGRlc3RpbmF0aW9uIG9mZnNldCBmcm9tIGluaXRpYWwgcGFyYW1ldGVycyBvZiB0aGUKKyAg
ICAgICAgc2Nyb2xsLgorCisgICAgICAgICogcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nU3RhdGVT
Y3JvbGxpbmdOb2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1N0YXRlU2Nyb2xs
aW5nTm9kZTo6U2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlKToKKyAgICAgICAgKFdlYkNvcmU6
OlNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZTo6c2V0SG9yaXpvbnRhbFNuYXBPZmZzZXRzKToK
KyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZTo6c2V0VmVydGlj
YWxTbmFwT2Zmc2V0cyk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdTdGF0ZVNjcm9sbGlu
Z05vZGU6OnNldEhvcml6b250YWxTbmFwT2Zmc2V0UmFuZ2VzKToKKyAgICAgICAgKFdlYkNvcmU6
OlNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZTo6c2V0VmVydGljYWxTbmFwT2Zmc2V0UmFuZ2Vz
KToKKyAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGUu
aDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZTo6aG9yaXpv
bnRhbFNuYXBPZmZzZXRzKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1N0YXRlU2Nyb2xs
aW5nTm9kZTo6dmVydGljYWxTbmFwT2Zmc2V0cyk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxp
bmdTdGF0ZVNjcm9sbGluZ05vZGU6Omhvcml6b250YWxTbmFwT2Zmc2V0UmFuZ2VzKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZTo6dmVydGljYWxTbmFwT2Zm
c2V0UmFuZ2VzKToKKyAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlU2Nyb2xs
aW5nTm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9k
ZTo6Y29tbWl0U3RhdGVCZWZvcmVDaGlsZHJlbik6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxp
bmdUcmVlU2Nyb2xsaW5nTm9kZTo6ZHVtcFByb3BlcnRpZXMpOgorICAgICAgICAqIHBhZ2Uvc2Ny
b2xsaW5nL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlLmg6CisgICAgICAgIChXZWJDb3JlOjpT
Y3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZTo6aG9yaXpvbnRhbFNuYXBPZmZzZXRzKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlOjp2ZXJ0aWNhbFNuYXBPZmZz
ZXRzKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlOjpob3Jp
em9udGFsU25hcE9mZnNldFJhbmdlcyk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdUcmVl
U2Nyb2xsaW5nTm9kZTo6dmVydGljYWxTbmFwT2Zmc2V0UmFuZ2VzKToKKworICAgICAgICBBZGQg
bW9yZSBib2lsZXJwbGF0ZSBzdXBwb3J0IGZvciBzbmFwIG9mZnNldCByYW5nZXMuCisKKyAgICAg
ICAgKiBwYWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yTWFjLmg6
CisgICAgICAgICogcGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRv
ck1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvcjo6
Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvcjo6
c2V0UGxhdGZvcm1Nb21lbnR1bVNjcm9sbGluZ1ByZWRpY3Rpb25FbmFibGVkKToKKyAgICAgICAg
KFdlYkNvcmU6OlNjcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvck1hYzo6U2Nyb2xsaW5nTW9tZW50
dW1DYWxjdWxhdG9yTWFjKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ01vbWVudHVtQ2Fs
Y3VsYXRvck1hYzo6c2Nyb2xsT2Zmc2V0QWZ0ZXJFbGFwc2VkVGltZSk6CisgICAgICAgIChXZWJD
b3JlOjpTY3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3JNYWM6OnByZWRpY3RlZERlc3RpbmF0aW9u
T2Zmc2V0KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvck1h
Yzo6cmV0YXJnZXRlZFNjcm9sbE9mZnNldERpZENoYW5nZSk6CisgICAgICAgIChXZWJDb3JlOjpT
Y3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3JNYWM6OmFuaW1hdGlvbkR1cmF0aW9uKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNjcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvck1hYzo6cmVxdWlyZXNNb21l
bnR1bVNjcm9sbGluZyk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdNb21lbnR1bUNhbGN1
bGF0b3JNYWM6OmVuc3VyZVBsYXRmb3JtTW9tZW50dW1DYWxjdWxhdG9yKToKKworICAgICAgICBI
b29rIGludG8gQXBwS2l0IG1vbWVudHVtIHNjcm9sbCBvZmZzZXQgcHJlZGljdGlvbi4KKworICAg
ICAgICAqIHBhZ2Uvc2Nyb2xsaW5nL21hYy9TY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2Rl
TWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6Y29udmVydFRvTGF5b3V0VW5pdHMpOgorICAgICAg
ICAoV2ViQ29yZTo6U2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZU1hYzo6Y29tbWl0U3Rh
dGVCZWZvcmVDaGlsZHJlbik6CisgICAgICAgICogcGxhdGZvcm0vU2Nyb2xsYWJsZUFyZWEuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYWJsZUFyZWE6OmVuc3VyZVNuYXBPZmZzZXRzSW5m
byk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxhYmxlQXJlYTo6aG9yaXpvbnRhbFNuYXBPZmZz
ZXRzKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGFibGVBcmVhOjpob3Jpem9udGFsU25hcE9m
ZnNldFJhbmdlcyk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxhYmxlQXJlYTo6dmVydGljYWxT
bmFwT2Zmc2V0UmFuZ2VzKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGFibGVBcmVhOjp2ZXJ0
aWNhbFNuYXBPZmZzZXRzKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGFibGVBcmVhOjpzZXRI
b3Jpem9udGFsU25hcE9mZnNldHMpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYWJsZUFyZWE6
OnNldFZlcnRpY2FsU25hcE9mZnNldHMpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYWJsZUFy
ZWE6OnNldEhvcml6b250YWxTbmFwT2Zmc2V0UmFuZ2VzKToKKyAgICAgICAgKFdlYkNvcmU6OlNj
cm9sbGFibGVBcmVhOjpzZXRWZXJ0aWNhbFNuYXBPZmZzZXRSYW5nZXMpOgorICAgICAgICAoV2Vi
Q29yZTo6U2Nyb2xsYWJsZUFyZWE6OmNsZWFySG9yaXpvbnRhbFNuYXBPZmZzZXRzKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNjcm9sbGFibGVBcmVhOjpjbGVhclZlcnRpY2FsU25hcE9mZnNldHMpOgor
ICAgICAgICAqIHBsYXRmb3JtL1Njcm9sbGFibGVBcmVhLmg6CisgICAgICAgIChXZWJDb3JlOjpT
Y3JvbGxhYmxlQXJlYTo6aG9yaXpvbnRhbFNuYXBPZmZzZXRzKTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OlNjcm9sbGFibGVBcmVhOjp2ZXJ0aWNhbFNuYXBPZmZzZXRzKTogRGVsZXRlZC4K
KyAgICAgICAgKiBwbGF0Zm9ybS9jb2NvYS9TY3JvbGxDb250cm9sbGVyLmg6CisgICAgICAgICog
cGxhdGZvcm0vY29jb2EvU2Nyb2xsQ29udHJvbGxlci5tbToKKyAgICAgICAgKFdlYkNvcmU6OlNj
cm9sbENvbnRyb2xsZXI6OnByb2Nlc3NXaGVlbEV2ZW50Rm9yU2Nyb2xsU25hcCk6CisKKyAgICAg
ICAgRml4IGFuIGlzc3VlIHdoZXJlIGluaXRpYWwgc2Nyb2xsaW5nIHZlbG9jaXR5IHdvdWxkIGJl
IHNldCB0byB6ZXJvIGF0IHRoZSBlbmQgb2YgYSBkcmFnIGdlc3R1cmUuCisKKyAgICAgICAgKFdl
YkNvcmU6OlNjcm9sbENvbnRyb2xsZXI6OnVwZGF0ZVNjcm9sbFNuYXBTdGF0ZSk6CisgICAgICAg
IChXZWJDb3JlOjpTY3JvbGxDb250cm9sbGVyOjp1cGRhdGVTY3JvbGxTbmFwUG9pbnRzKToKKyAg
ICAgICAgKFdlYkNvcmU6OlNjcm9sbENvbnRyb2xsZXI6OnNldE5lYXJlc3RTY3JvbGxTbmFwSW5k
ZXhGb3JBeGlzQW5kT2Zmc2V0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9jb2NvYS9TY3JvbGxTbmFw
QW5pbWF0b3JTdGF0ZS5oOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsU25hcEFuaW1hdG9yU3Rh
dGU6OnNuYXBPZmZzZXRzRm9yQXhpcyk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxTbmFwQW5p
bWF0b3JTdGF0ZTo6c25hcE9mZnNldFJhbmdlc0ZvckF4aXMpOgorICAgICAgICAoV2ViQ29yZTo6
U2Nyb2xsU25hcEFuaW1hdG9yU3RhdGU6OnNldFNuYXBPZmZzZXRzQW5kUG9zaXRpb25SYW5nZXNG
b3JBeGlzKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbFNuYXBBbmltYXRvclN0YXRlOjpzZXRT
bmFwT2Zmc2V0c0ZvckF4aXMpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2NvY29hL1Nj
cm9sbFNuYXBBbmltYXRvclN0YXRlLm1tOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsU25hcEFu
aW1hdG9yU3RhdGU6OnNldHVwQW5pbWF0aW9uRm9yU3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6
U2Nyb2xsU25hcEFuaW1hdG9yU3RhdGU6OnRhcmdldE9mZnNldEZvclN0YXJ0T2Zmc2V0KToKKyAg
ICAgICAgKFdlYkNvcmU6OnByb2plY3RlZEluZXJ0aWFsU2Nyb2xsRGlzdGFuY2UpOiBEZWxldGVk
LgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJDb21wb3NpdG9yOjp1cGRhdGVTY3JvbGxDb29yZGluYXRl
ZExheWVyKToKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpJbnRlcm5hbHM6OnNldFBsYXRmb3JtTW9tZW50dW1TY3JvbGxpbmdQcmVkaWN0aW9uRW5h
YmxlZCk6CisKKyAgICAgICAgQWRkIGEgbmV3IGhvb2sgZm9yIGxheW91dCB0ZXN0cyB0byBmb3Jj
ZSBzY3JvbGxpbmcgbW9tZW50dW0gY2FsY3VsYXRvcnMgdG8gdXNlIHRoZSBwbGF0Zm9ybS1pbnZh
cmlhbnQgbW9tZW50dW0KKyAgICAgICAgc2Nyb2xsaW5nIHByZWRpY3Rpb24gaGV1cmlzdGljIGlu
c3RlYWQgb2YgdGhlIHBsYXRmb3JtLWRlcGVuZGVudCBvbmUuCisKKyAgICAgICAgKFdlYkNvcmU6
OkludGVybmFsczo6c2Nyb2xsU25hcE9mZnNldHMpOgorICAgICAgICAqIHRlc3RpbmcvSW50ZXJu
YWxzLmg6CisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbHMuaWRsOgorCiAyMDE3LTAxLTEwICBK
ZXIgTm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgogCiAgICAgICAgIEFkZCBzdXBwb3J0IGZv
ciBNZWRpYUtleXMuY3JlYXRlU2Vzc2lvbigpLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
Q2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IGYyMjM3ODY5NGVlYjY4
YWM5NDk1NTA2MzRjNzdmMDgxN2RlNzMxYjMuLjIwZGZlMzI4ODAyMWExYjQwNWQyNDVlMTgwMDQ5
ZjE2M2JhMWU4MjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9T
b3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMyBAQAorMjAxNy0wMS0xMCAgV2Vu
c29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KKworICAgICAgICBJbXBsZW1lbnQg
InByb3hpbWl0eSIgc2Nyb2xsIHNuYXBwaW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xMzU5OTQKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzE4MTYy
NDE4PgorCisgICAgICAgIFJldmlld2VkIGJ5IERlYW4gSmFja3Nvbi4KKworICAgICAgICBBZGRz
IGJvaWxlcnBsYXRlIHN1cHBvcnQgZm9yIHBsdW1iaW5nIGxpc3RzIG9mIHNuYXAgb2Zmc2V0IHJh
bmdlcyBmcm9tIHRoZSB3ZWIgcHJvY2VzcyB0byB0aGUgVUkgcHJvY2VzcworICAgICAgICBhbG9u
Z3NpZGUgdGhlIGxpc3Qgb2Ygc25hcCBvZmZzZXRzLgorCisgICAgICAgICogU2hhcmVkL1Njcm9s
bGluZy9SZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvclRyYW5zYWN0aW9uLmNwcDoKKyAgICAgICAg
KEFyZ3VtZW50Q29kZXI8U2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlPjo6ZW5jb2RlKToKKyAg
ICAgICAgKEFyZ3VtZW50Q29kZXI8U2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlPjo6ZGVjb2Rl
KToKKyAgICAgICAgKiBTaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcDoKKyAgICAgICAg
KElQQzo6QXJndW1lbnRDb2RlcjxTY3JvbGxPZmZzZXRSYW5nZTxmbG9hdD4+OjplbmNvZGUpOgor
ICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFNjcm9sbE9mZnNldFJhbmdlPGZsb2F0Pj46OmRl
Y29kZSk6CisgICAgICAgICogU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9TY3JvbGxpbmcvaW9zL1Njcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGlu
Z05vZGVJT1MubW06CisgICAgICAgICgtW1dLT3ZlcmZsb3dTY3JvbGxWaWV3RGVsZWdhdGUgc2Ny
b2xsVmlld1dpbGxFbmREcmFnZ2luZzp3aXRoVmVsb2NpdHk6dGFyZ2V0Q29udGVudE9mZnNldDpd
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1JlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yUHJv
eHlJT1MubW06CisKKyAgICAgICAgQWRqdXN0IG1haW5mcmFtZSBwcm94aW1pdHkgc2Nyb2xsIHNu
YXBwaW5nIGxvZ2ljIHRvIG5vdCBzdWJ0cmFjdCBvdXQgdGhlIHRvcCBjb250ZW50IGluc2V0IHdo
ZW4gdGhlcmUgaXMgbm8KKyAgICAgICAgYWN0aXZlIHNuYXAgb2Zmc2V0IChpLmUuIHdoZW4gc25h
cHBpbmcgcmVzdHMgaW4gYSBzbmFwIG9mZnNldCByYW5nZSkuIEF0dGVtcHRpbmcgdG8gc3VidHJh
Y3Qgb3V0IHRoZSB0b3AgaW5zZXQKKyAgICAgICAgaW4gdGhpcyBjYXNlIGNhdXNlZCB0aGUgc2Ny
b2xsIG9mZnNldCB0byBqdW1wIGFmdGVyIGVuZGluZyBhIGRyYWcgd2l0aCBubyBtb21lbnR1bSBp
biBhIHNuYXAgb2Zmc2V0IHJhbmdlLgorCisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVNjcm9sbGlu
Z0Nvb3JkaW5hdG9yUHJveHk6OmFkanVzdFRhcmdldENvbnRlbnRPZmZzZXRGb3JTbmFwcGluZyk6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yUHJveHk6OnNob3Vs
ZFNuYXBGb3JNYWluRnJhbWVTY3JvbGxpbmcpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVTY3Jv
bGxpbmdDb29yZGluYXRvclByb3h5OjpjbG9zZXN0U25hcE9mZnNldEZvck1haW5GcmFtZVNjcm9s
bGluZyk6CisKIDIwMTctMDEtMTAgIFphbiBEb2JlcnNlayAgPHpkb2JlcnNla0BpZ2FsaWEuY29t
PgogCiAgICAgICAgIFRocmVhZGVkQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0OjpyZW5kZXJOZXh0
RnJhbWUoKSBzaG91bGQgc2hvcnQtY3V0IHRvIGxheWVyIGZsdXNoaW5nCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggMTMzNmZjZTNh
OGNjNDU2YzZhODE0YmYzMzEwZmNhY2NhMzBmNGQyOC4uNDQ5OGY1NmE2ODQxNDIyZjk3ODc0MTQ5
OThiYzk4MTgzY2FiNTJjYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagpAQCAtNjQ4NSw2ICs2NDg1LDcgQEAKIAkJRjQ0RUJCREIxREI1
REQ5RDAwMjc3MzM0IC8qIFN0YXRpY1JhbmdlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY0NEVCQkRBMURCNUREOUQwMDI3NzMzNCAvKiBTdGF0aWNS
YW5nZS5jcHAgKi87IH07CiAJCUY0NUMyMzFEMTk5NUI3M0IwMEE2RTJFMyAvKiBBeGlzU2Nyb2xs
U25hcE9mZnNldHMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gRjQ1QzIzMUIxOTk1QjczQjAwQTZFMkUzIC8qIEF4aXNTY3JvbGxTbmFwT2Zmc2V0cy5j
cHAgKi87IH07CiAJCUY0NUMyMzFFMTk5NUI3M0IwMEE2RTJFMyAvKiBBeGlzU2Nyb2xsU25hcE9m
ZnNldHMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY0
NUMyMzFDMTk5NUI3M0IwMEE2RTJFMyAvKiBBeGlzU2Nyb2xsU25hcE9mZnNldHMuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlGNDY3MjkyODFFMERF
Njg1MDBBQ0MzRDggLyogU2Nyb2xsU25hcE9mZnNldHNJbmZvLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNDY3MjkyNTFFMERFNUFCMDBBQ0MzRDggLyog
U2Nyb2xsU25hcE9mZnNldHNJbmZvLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKIAkJRjQ3ODc1NTQxOTk4M0FGRjAwMjRBMjg3IC8qIFNjcm9sbFNuYXBB
bmltYXRvclN0YXRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBGNDc4NzU1MjE5OTgzQUZGMDAyNEEyODcgLyogU2Nyb2xsU25hcEFuaW1hdG9yU3RhdGUu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlGNDc4
NzU1NTE5OTgzQUZGMDAyNEEyODcgLyogU2Nyb2xsU25hcEFuaW1hdG9yU3RhdGUubW0gaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNDc4NzU1MzE5OTgzQUZG
MDAyNEEyODcgLyogU2Nyb2xsU25hcEFuaW1hdG9yU3RhdGUubW0gKi87IH07CiAJCUY0N0E1RTNF
MTk1QjhDOEEwMDQ4MzEwMCAvKiBTdHlsZVNjcm9sbFNuYXBQb2ludHMuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY0N0E1RTNCMTk1QjhDOEEwMDQ4MzEw
MCAvKiBTdHlsZVNjcm9sbFNuYXBQb2ludHMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMTQ1MDUsNiArMTQ1MDYsNyBAQAogCQlGNDRFQkJEQTFE
QjVERDlEMDAyNzczMzQgLyogU3RhdGljUmFuZ2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gU3RhdGljUmFuZ2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlGNDVDMjMxQjE5OTVCNzNCMDBBNkUyRTMgLyogQXhpc1Njcm9sbFNuYXBPZmZzZXRzLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEF4aXNTY3JvbGxTbmFwT2Zm
c2V0cy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUY0NUMyMzFDMTk5NUI3M0Iw
MEE2RTJFMyAvKiBBeGlzU2Nyb2xsU25hcE9mZnNldHMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gQXhpc1Njcm9sbFNuYXBPZmZzZXRzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCUY0NjcyOTI1MUUwREU1QUIwMEFDQzNEOCAvKiBTY3JvbGxTbmFwT2Zmc2V0c0lu
Zm8uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2Nyb2xsU25hcE9mZnNldHNJ
bmZvLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUY0Nzg3NTUyMTk5ODNBRkYwMDI0
QTI4NyAvKiBTY3JvbGxTbmFwQW5pbWF0b3JTdGF0ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBTY3JvbGxTbmFwQW5pbWF0b3JTdGF0ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlGNDc4NzU1MzE5OTgzQUZGMDAyNEEyODcgLyogU2Nyb2xsU25hcEFuaW1hdG9y
U3RhdGUubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBTY3JvbGxT
bmFwQW5pbWF0b3JTdGF0ZS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjQ3QTVF
M0ExOTVCOEM4QTAwNDgzMTAwIC8qIFN0eWxlU2Nyb2xsU25hcFBvaW50cy5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTdHlsZVNjcm9sbFNuYXBQb2ludHMuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTYwMzUsNiArMTYwMzcsNyBAQAogCQkJCTBG
RUEzRTdFMTkxQjMxNjkwMDBGMUI1NSAvKiBTY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdO
b2RlLmggKi8sCiAJCQkJOTM5MUE5OUExNjI5RDZGRjAwMjk3MzMwIC8qIFNjcm9sbGluZ1RyZWVT
Y3JvbGxpbmdOb2RlLmNwcCAqLywKIAkJCQk5MzkxQTk5QjE2MjlENzAwMDAyOTczMzAgLyogU2Ny
b2xsaW5nVHJlZVNjcm9sbGluZ05vZGUuaCAqLywKKwkJCQlGNDY3MjkyNTFFMERFNUFCMDBBQ0Mz
RDggLyogU2Nyb2xsU25hcE9mZnNldHNJbmZvLmggKi8sCiAJCQkJN0FBRkU4Q0QxOUNCODY3MjAw
MEY1NkQ4IC8qIFNjcm9sbExhdGNoaW5nU3RhdGUuY3BwICovLAogCQkJCTdBQUZFOENFMTlDQjg2
NzIwMDBGNTZEOCAvKiBTY3JvbGxMYXRjaGluZ1N0YXRlLmggKi8sCiAJCQkJMEY2MzgzREIxODYx
NUIyOTAwM0U1REI1IC8qIFRocmVhZGVkU2Nyb2xsaW5nVHJlZS5jcHAgKi8sCkBAIC0yNjE3Nyw2
ICsyNjE4MCw3IEBACiAJCQkJMEY0NzEwQzAxREI1NkJFODAwMkRDRUMzIC8qIEpTRE9NUmVjdFJl
YWRPbmx5LmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzVBODZCNjBDMzM2N0U4MDBFRUE2NDkgLyog
SlNET01TZWxlY3Rpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCUM1MTM3Q0YzMTFBNTgzNzgwMDRB
REI5OSAvKiBKU0RPTVN0cmluZ0xpc3QuaCBpbiBIZWFkZXJzICovLAorCQkJCUY0NjcyOTI4MUUw
REU2ODUwMEFDQzNEOCAvKiBTY3JvbGxTbmFwT2Zmc2V0c0luZm8uaCBpbiBIZWFkZXJzICovLAog
CQkJCUJDNjQ2NDk4MTFEODIzNDkwMDY0NTVCMCAvKiBKU0RPTVN0cmluZ01hcC5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJNzY5NDU2M0QxMjE0RDk3QzAwMDdDQkFFIC8qIEpTRE9NVG9rZW5MaXN0Lmgg
aW4gSGVhZGVycyAqLywKIAkJCQkyRTM3RTAwNjEyREJDNUE0MDBBNkIyMzMgLyogSlNET01VUkwu
aCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxp
bmcvQXN5bmNTY3JvbGxpbmdDb29yZGluYXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Nj
cm9sbGluZy9Bc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmNwcAppbmRleCBmNmU1NDZiOTg3MWM5
MDgwNGJiNTc4MTMwNWUxNDNjZWUyMWVjODk2Li43NGNmODNkOTFiNmVkOTQ0MWE4MDhmODAyNjFl
ZjZhNTcwZTk2YjliIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9B
c3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Nj
cm9sbGluZy9Bc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmNwcApAQCAtNjUsNyArNjUsNyBAQCB2
b2lkIEFzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3I6OnNjcm9sbGluZ1N0YXRlVHJlZVByb3BlcnRp
ZXNDaGFuZ2VkKCkKICAgICBzY2hlZHVsZVRyZWVTdGF0ZUNvbW1pdCgpOwogfQogCi1zdGF0aWMg
aW5saW5lIHZvaWQgc2V0U3RhdGVTY3JvbGxpbmdOb2RlU25hcE9mZnNldHNBc0Zsb2F0KFNjcm9s
bGluZ1N0YXRlU2Nyb2xsaW5nTm9kZSYgbm9kZSwgU2Nyb2xsRXZlbnRBeGlzIGF4aXMsIGNvbnN0
IFZlY3RvcjxMYXlvdXRVbml0Piogc25hcE9mZnNldHMsIGZsb2F0IGRldmljZVNjYWxlRmFjdG9y
KQorc3RhdGljIGlubGluZSB2b2lkIHNldFN0YXRlU2Nyb2xsaW5nTm9kZVNuYXBPZmZzZXRzQXNG
bG9hdChTY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGUmIG5vZGUsIFNjcm9sbEV2ZW50QXhpcyBh
eGlzLCBjb25zdCBWZWN0b3I8TGF5b3V0VW5pdD4qIHNuYXBPZmZzZXRzLCBjb25zdCBWZWN0b3I8
U2Nyb2xsT2Zmc2V0UmFuZ2U8TGF5b3V0VW5pdD4+KiBzbmFwT2Zmc2V0UmFuZ2VzLCBmbG9hdCBk
ZXZpY2VTY2FsZUZhY3RvcikKIHsKICAgICAvLyBGSVhNRTogSW5jb3Jwb3JhdGUgY3VycmVudCBw
YWdlIHNjYWxlIGZhY3RvciBpbiBzbmFwcGluZyB0byBkZXZpY2UgcGl4ZWwuIFBlcmhhcHMgd2Ug
c2hvdWxkIGp1c3QgY29udmVydCB0byBmbG9hdCBoZXJlIGFuZCBsZXQgVUkgcHJvY2VzcyBkbyB0
aGUgcGl4ZWwgc25hcHBpbmc/CiAgICAgVmVjdG9yPGZsb2F0PiBzbmFwT2Zmc2V0c0FzRmxvYXQ7
CkBAIC03NCwxMCArNzQsMjAgQEAgc3RhdGljIGlubGluZSB2b2lkIHNldFN0YXRlU2Nyb2xsaW5n
Tm9kZVNuYXBPZmZzZXRzQXNGbG9hdChTY3JvbGxpbmdTdGF0ZVNjcm9sbGkKICAgICAgICAgZm9y
IChhdXRvJiBvZmZzZXQgOiAqc25hcE9mZnNldHMpCiAgICAgICAgICAgICBzbmFwT2Zmc2V0c0Fz
RmxvYXQudW5jaGVja2VkQXBwZW5kKHJvdW5kVG9EZXZpY2VQaXhlbChvZmZzZXQsIGRldmljZVNj
YWxlRmFjdG9yLCBmYWxzZSkpOwogICAgIH0KLSAgICBpZiAoYXhpcyA9PSBTY3JvbGxFdmVudEF4
aXM6Okhvcml6b250YWwpCisKKyAgICBWZWN0b3I8U2Nyb2xsT2Zmc2V0UmFuZ2U8ZmxvYXQ+PiBz
bmFwT2Zmc2V0UmFuZ2VzQXNGbG9hdDsKKyAgICBpZiAoc25hcE9mZnNldFJhbmdlcykgeworICAg
ICAgICBzbmFwT2Zmc2V0UmFuZ2VzQXNGbG9hdC5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KHNuYXBP
ZmZzZXRSYW5nZXMtPnNpemUoKSk7CisgICAgICAgIGZvciAoYXV0byYgcmFuZ2UgOiAqc25hcE9m
ZnNldFJhbmdlcykKKyAgICAgICAgICAgIHNuYXBPZmZzZXRSYW5nZXNBc0Zsb2F0LnVuY2hlY2tl
ZEFwcGVuZCh7IHJvdW5kVG9EZXZpY2VQaXhlbChyYW5nZS5zdGFydCwgZGV2aWNlU2NhbGVGYWN0
b3IsIGZhbHNlKSwgcm91bmRUb0RldmljZVBpeGVsKHJhbmdlLmVuZCwgZGV2aWNlU2NhbGVGYWN0
b3IsIGZhbHNlKSB9KTsKKyAgICB9CisgICAgaWYgKGF4aXMgPT0gU2Nyb2xsRXZlbnRBeGlzOjpI
b3Jpem9udGFsKSB7CiAgICAgICAgIG5vZGUuc2V0SG9yaXpvbnRhbFNuYXBPZmZzZXRzKHNuYXBP
ZmZzZXRzQXNGbG9hdCk7Ci0gICAgZWxzZQorICAgICAgICBub2RlLnNldEhvcml6b250YWxTbmFw
T2Zmc2V0UmFuZ2VzKHNuYXBPZmZzZXRSYW5nZXNBc0Zsb2F0KTsKKyAgICB9IGVsc2UgewogICAg
ICAgICBub2RlLnNldFZlcnRpY2FsU25hcE9mZnNldHMoc25hcE9mZnNldHNBc0Zsb2F0KTsKKyAg
ICAgICAgbm9kZS5zZXRWZXJ0aWNhbFNuYXBPZmZzZXRSYW5nZXMoc25hcE9mZnNldFJhbmdlc0Fz
RmxvYXQpOworICAgIH0KIH0KIAogdm9pZCBBc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yOjpzZXRF
dmVudFRyYWNraW5nUmVnaW9uc0RpcnR5KCkKQEAgLTUzNyw4ICs1NDcsOCBAQCB2b2lkIEFzeW5j
U2Nyb2xsaW5nQ29vcmRpbmF0b3I6OnVwZGF0ZU92ZXJmbG93U2Nyb2xsaW5nTm9kZShTY3JvbGxp
bmdOb2RlSUQgbm9kZQogICAgICAgICBub2RlLT5zZXRSZWFjaGFibGVDb250ZW50c1NpemUoc2Ny
b2xsaW5nR2VvbWV0cnktPnJlYWNoYWJsZUNvbnRlbnRTaXplKTsKICAgICAgICAgbm9kZS0+c2V0
U2Nyb2xsYWJsZUFyZWFTaXplKHNjcm9sbGluZ0dlb21ldHJ5LT5zY3JvbGxhYmxlQXJlYVNpemUp
OwogI2lmIEVOQUJMRShDU1NfU0NST0xMX1NOQVApCi0gICAgICAgIHNldFN0YXRlU2Nyb2xsaW5n
Tm9kZVNuYXBPZmZzZXRzQXNGbG9hdCgqbm9kZSwgU2Nyb2xsRXZlbnRBeGlzOjpIb3Jpem9udGFs
LCAmc2Nyb2xsaW5nR2VvbWV0cnktPmhvcml6b250YWxTbmFwT2Zmc2V0cywgbV9wYWdlLT5kZXZp
Y2VTY2FsZUZhY3RvcigpKTsKLSAgICAgICAgc2V0U3RhdGVTY3JvbGxpbmdOb2RlU25hcE9mZnNl
dHNBc0Zsb2F0KCpub2RlLCBTY3JvbGxFdmVudEF4aXM6OlZlcnRpY2FsLCAmc2Nyb2xsaW5nR2Vv
bWV0cnktPnZlcnRpY2FsU25hcE9mZnNldHMsIG1fcGFnZS0+ZGV2aWNlU2NhbGVGYWN0b3IoKSk7
CisgICAgICAgIHNldFN0YXRlU2Nyb2xsaW5nTm9kZVNuYXBPZmZzZXRzQXNGbG9hdCgqbm9kZSwg
U2Nyb2xsRXZlbnRBeGlzOjpIb3Jpem9udGFsLCAmc2Nyb2xsaW5nR2VvbWV0cnktPmhvcml6b250
YWxTbmFwT2Zmc2V0cywgJnNjcm9sbGluZ0dlb21ldHJ5LT5ob3Jpem9udGFsU25hcE9mZnNldFJh
bmdlcywgbV9wYWdlLT5kZXZpY2VTY2FsZUZhY3RvcigpKTsKKyAgICAgICAgc2V0U3RhdGVTY3Jv
bGxpbmdOb2RlU25hcE9mZnNldHNBc0Zsb2F0KCpub2RlLCBTY3JvbGxFdmVudEF4aXM6OlZlcnRp
Y2FsLCAmc2Nyb2xsaW5nR2VvbWV0cnktPnZlcnRpY2FsU25hcE9mZnNldHMsICZzY3JvbGxpbmdH
ZW9tZXRyeS0+dmVydGljYWxTbmFwT2Zmc2V0UmFuZ2VzLCBtX3BhZ2UtPmRldmljZVNjYWxlRmFj
dG9yKCkpOwogICAgICAgICBub2RlLT5zZXRDdXJyZW50SG9yaXpvbnRhbFNuYXBQb2ludEluZGV4
KHNjcm9sbGluZ0dlb21ldHJ5LT5jdXJyZW50SG9yaXpvbnRhbFNuYXBQb2ludEluZGV4KTsKICAg
ICAgICAgbm9kZS0+c2V0Q3VycmVudFZlcnRpY2FsU25hcFBvaW50SW5kZXgoc2Nyb2xsaW5nR2Vv
bWV0cnktPmN1cnJlbnRWZXJ0aWNhbFNuYXBQb2ludEluZGV4KTsKICNlbmRpZgpAQCAtNjgyLDgg
KzY5Miw4IEBAIGJvb2wgQXN5bmNTY3JvbGxpbmdDb29yZGluYXRvcjo6aXNTY3JvbGxTbmFwSW5Q
cm9ncmVzcygpIGNvbnN0CiB2b2lkIEFzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3I6OnVwZGF0ZVNj
cm9sbFNuYXBQcm9wZXJ0aWVzV2l0aEZyYW1lVmlldyhjb25zdCBGcmFtZVZpZXcmIGZyYW1lVmll
dykKIHsKICAgICBpZiAoYXV0byBub2RlID0gZG93bmNhc3Q8U2Nyb2xsaW5nU3RhdGVGcmFtZVNj
cm9sbGluZ05vZGU+KG1fc2Nyb2xsaW5nU3RhdGVUcmVlLT5zdGF0ZU5vZGVGb3JJRChmcmFtZVZp
ZXcuc2Nyb2xsTGF5ZXJJRCgpKSkpIHsKLSAgICAgICAgc2V0U3RhdGVTY3JvbGxpbmdOb2RlU25h
cE9mZnNldHNBc0Zsb2F0KCpub2RlLCBTY3JvbGxFdmVudEF4aXM6Okhvcml6b250YWwsIGZyYW1l
Vmlldy5ob3Jpem9udGFsU25hcE9mZnNldHMoKSwgbV9wYWdlLT5kZXZpY2VTY2FsZUZhY3Rvcigp
KTsKLSAgICAgICAgc2V0U3RhdGVTY3JvbGxpbmdOb2RlU25hcE9mZnNldHNBc0Zsb2F0KCpub2Rl
LCBTY3JvbGxFdmVudEF4aXM6OlZlcnRpY2FsLCBmcmFtZVZpZXcudmVydGljYWxTbmFwT2Zmc2V0
cygpLCBtX3BhZ2UtPmRldmljZVNjYWxlRmFjdG9yKCkpOworICAgICAgICBzZXRTdGF0ZVNjcm9s
bGluZ05vZGVTbmFwT2Zmc2V0c0FzRmxvYXQoKm5vZGUsIFNjcm9sbEV2ZW50QXhpczo6SG9yaXpv
bnRhbCwgZnJhbWVWaWV3Lmhvcml6b250YWxTbmFwT2Zmc2V0cygpLCBmcmFtZVZpZXcuaG9yaXpv
bnRhbFNuYXBPZmZzZXRSYW5nZXMoKSwgbV9wYWdlLT5kZXZpY2VTY2FsZUZhY3RvcigpKTsKKyAg
ICAgICAgc2V0U3RhdGVTY3JvbGxpbmdOb2RlU25hcE9mZnNldHNBc0Zsb2F0KCpub2RlLCBTY3Jv
bGxFdmVudEF4aXM6OlZlcnRpY2FsLCBmcmFtZVZpZXcudmVydGljYWxTbmFwT2Zmc2V0cygpLCBm
cmFtZVZpZXcudmVydGljYWxTbmFwT2Zmc2V0UmFuZ2VzKCksIG1fcGFnZS0+ZGV2aWNlU2NhbGVG
YWN0b3IoKSk7CiAgICAgICAgIG5vZGUtPnNldEN1cnJlbnRIb3Jpem9udGFsU25hcFBvaW50SW5k
ZXgoZnJhbWVWaWV3LmN1cnJlbnRIb3Jpem9udGFsU25hcFBvaW50SW5kZXgoKSk7CiAgICAgICAg
IG5vZGUtPnNldEN1cnJlbnRWZXJ0aWNhbFNuYXBQb2ludEluZGV4KGZyYW1lVmlldy5jdXJyZW50
VmVydGljYWxTbmFwUG9pbnRJbmRleCgpKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL3Njcm9sbGluZy9BeGlzU2Nyb2xsU25hcE9mZnNldHMuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9zY3JvbGxpbmcvQXhpc1Njcm9sbFNuYXBPZmZzZXRzLmNwcAppbmRleCA0Njlj
MDhmZGU0NjQ4ZWNhOWM1MzUzMjA3OWM5ZGRmOGZjYzY2YzM4Li4wMjA3NTM4NDdhMGQ4NDE3MTkz
MGUyZTZmM2U1ZTRkOWQ0OGM3YWYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Nj
cm9sbGluZy9BeGlzU2Nyb2xsU25hcE9mZnNldHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2Uvc2Nyb2xsaW5nL0F4aXNTY3JvbGxTbmFwT2Zmc2V0cy5jcHAKQEAgLTg0LDYgKzg0LDE2IEBA
IHN0YXRpYyBTdHJpbmcgc25hcE9mZnNldHNUb1N0cmluZyhjb25zdCBWZWN0b3I8TGF5b3V0VW5p
dD4mIHNuYXBPZmZzZXRzKQogICAgIHJldHVybiBzLnRvU3RyaW5nKCk7CiB9CiAKK3N0YXRpYyBT
dHJpbmcgc25hcE9mZnNldFJhbmdlc1RvU3RyaW5nKGNvbnN0IFZlY3RvcjxTY3JvbGxPZmZzZXRS
YW5nZTxMYXlvdXRVbml0Pj4mIHJhbmdlcykKK3sKKyAgICBTdHJpbmdCdWlsZGVyIHM7CisgICAg
cy5hcHBlbmQoIlsgIik7CisgICAgZm9yIChhdXRvIHJhbmdlIDogcmFuZ2VzKQorICAgICAgICBz
LmFwcGVuZChTdHJpbmc6OmZvcm1hdCgiKCUuMWYsICUuMWYpICIsIHJhbmdlLnN0YXJ0LnRvRmxv
YXQoKSwgcmFuZ2UuZW5kLnRvRmxvYXQoKSkpOworICAgIHMuYXBwZW5kKCJdIik7CisgICAgcmV0
dXJuIHMudG9TdHJpbmcoKTsKK30KKwogc3RhdGljIFN0cmluZyBzbmFwUG9ydE9yQXJlYVRvU3Ry
aW5nKGNvbnN0IExheW91dFJlY3QmIHJlY3QpCiB7CiAgICAgcmV0dXJuIFN0cmluZzo6Zm9ybWF0
KCJ7eyUuMWYsICUuMWZ9IHslLjFmLCAlLjFmfX0iLCByZWN0LngoKS50b0Zsb2F0KCksIHJlY3Qu
eSgpLnRvRmxvYXQoKSwgcmVjdC53aWR0aCgpLnRvRmxvYXQoKSwgcmVjdC5oZWlnaHQoKS50b0Zs
b2F0KCkpOwpAQCAtOTEsNiArMTAxLDEwMCBAQCBzdGF0aWMgU3RyaW5nIHNuYXBQb3J0T3JBcmVh
VG9TdHJpbmcoY29uc3QgTGF5b3V0UmVjdCYgcmVjdCkKIAogI2VuZGlmCiAKK3RlbXBsYXRlIDx0
eXBlbmFtZSBMYXlvdXRUeXBlPgorc3RhdGljIHZvaWQgaW5kaWNlc09mTmVhcmVzdFNuYXBPZmZz
ZXRSYW5nZXMoTGF5b3V0VHlwZSBvZmZzZXQsIGNvbnN0IFZlY3RvcjxTY3JvbGxPZmZzZXRSYW5n
ZTxMYXlvdXRUeXBlPj4mIHNuYXBPZmZzZXRSYW5nZXMsIHVuc2lnbmVkJiBsb3dlckluZGV4LCB1
bnNpZ25lZCYgdXBwZXJJbmRleCkKK3sKKyAgICBpZiAoc25hcE9mZnNldFJhbmdlcy5pc0VtcHR5
KCkpIHsKKyAgICAgICAgbG93ZXJJbmRleCA9IGludmFsaWRTbmFwT2Zmc2V0SW5kZXg7CisgICAg
ICAgIHVwcGVySW5kZXggPSBpbnZhbGlkU25hcE9mZnNldEluZGV4OworICAgICAgICByZXR1cm47
CisgICAgfQorCisgICAgaW50IGxvd2VySW5kZXhBc0ludCA9IC0xOworICAgIGludCB1cHBlcklu
ZGV4QXNJbnQgPSBzbmFwT2Zmc2V0UmFuZ2VzLnNpemUoKTsKKyAgICBkbyB7CisgICAgICAgIGlu
dCBtaWRkbGVJbmRleCA9IChsb3dlckluZGV4QXNJbnQgKyB1cHBlckluZGV4QXNJbnQpIC8gMjsK
KyAgICAgICAgYXV0byYgcmFuZ2UgPSBzbmFwT2Zmc2V0UmFuZ2VzW21pZGRsZUluZGV4XTsKKyAg
ICAgICAgaWYgKHJhbmdlLnN0YXJ0IDwgb2Zmc2V0ICYmIG9mZnNldCA8IHJhbmdlLmVuZCkgewor
ICAgICAgICAgICAgbG93ZXJJbmRleEFzSW50ID0gbWlkZGxlSW5kZXg7CisgICAgICAgICAgICB1
cHBlckluZGV4QXNJbnQgPSBtaWRkbGVJbmRleDsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICB9CisKKyAgICAgICAgaWYgKG9mZnNldCA+IHJhbmdlLmVuZCkKKyAgICAgICAgICAgIGxvd2Vy
SW5kZXhBc0ludCA9IG1pZGRsZUluZGV4OworICAgICAgICBlbHNlCisgICAgICAgICAgICB1cHBl
ckluZGV4QXNJbnQgPSBtaWRkbGVJbmRleDsKKyAgICB9IHdoaWxlIChsb3dlckluZGV4QXNJbnQg
PCB1cHBlckluZGV4QXNJbnQgLSAxKTsKKworICAgIGlmIChvZmZzZXQgPD0gc25hcE9mZnNldFJh
bmdlcy5maXJzdCgpLnN0YXJ0KQorICAgICAgICBsb3dlckluZGV4ID0gaW52YWxpZFNuYXBPZmZz
ZXRJbmRleDsKKyAgICBlbHNlCisgICAgICAgIGxvd2VySW5kZXggPSBsb3dlckluZGV4QXNJbnQ7
CisKKyAgICBpZiAob2Zmc2V0ID49IHNuYXBPZmZzZXRSYW5nZXMubGFzdCgpLmVuZCkKKyAgICAg
ICAgdXBwZXJJbmRleCA9IGludmFsaWRTbmFwT2Zmc2V0SW5kZXg7CisgICAgZWxzZQorICAgICAg
ICB1cHBlckluZGV4ID0gdXBwZXJJbmRleEFzSW50OworfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUg
TGF5b3V0VHlwZT4KK3N0YXRpYyB2b2lkIGluZGljZXNPZk5lYXJlc3RTbmFwT2Zmc2V0cyhMYXlv
dXRUeXBlIG9mZnNldCwgY29uc3QgVmVjdG9yPExheW91dFR5cGU+JiBzbmFwT2Zmc2V0cywgdW5z
aWduZWQmIGxvd2VySW5kZXgsIHVuc2lnbmVkJiB1cHBlckluZGV4KQoreworICAgIGxvd2VySW5k
ZXggPSAwOworICAgIHVwcGVySW5kZXggPSBzbmFwT2Zmc2V0cy5zaXplKCkgLSAxOworICAgIHdo
aWxlIChsb3dlckluZGV4IDwgdXBwZXJJbmRleCAtIDEpIHsKKyAgICAgICAgaW50IG1pZGRsZUlu
ZGV4ID0gKGxvd2VySW5kZXggKyB1cHBlckluZGV4KSAvIDI7CisgICAgICAgIGF1dG8gbWlkZGxl
T2Zmc2V0ID0gc25hcE9mZnNldHNbbWlkZGxlSW5kZXhdOworICAgICAgICBpZiAob2Zmc2V0ID09
IG1pZGRsZU9mZnNldCkgeworICAgICAgICAgICAgdXBwZXJJbmRleCA9IG1pZGRsZUluZGV4Owor
ICAgICAgICAgICAgbG93ZXJJbmRleCA9IG1pZGRsZUluZGV4OworICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgIH0KKworICAgICAgICBpZiAob2Zmc2V0ID4gbWlkZGxlT2Zmc2V0KQorICAgICAg
ICAgICAgbG93ZXJJbmRleCA9IG1pZGRsZUluZGV4OworICAgICAgICBlbHNlCisgICAgICAgICAg
ICB1cHBlckluZGV4ID0gbWlkZGxlSW5kZXg7CisgICAgfQorfQorCitzdGF0aWMgdm9pZCBhZGp1
c3RBeGlzU25hcE9mZnNldHNGb3JTY3JvbGxFeHRlbnQoVmVjdG9yPExheW91dFVuaXQ+JiBzbmFw
T2Zmc2V0cywgZmxvYXQgbWF4U2Nyb2xsRXh0ZW50KQoreworICAgIGlmIChzbmFwT2Zmc2V0cy5p
c0VtcHR5KCkpCisgICAgICAgIHJldHVybjsKKworICAgIHN0ZDo6c29ydChzbmFwT2Zmc2V0cy5i
ZWdpbigpLCBzbmFwT2Zmc2V0cy5lbmQoKSk7CisgICAgaWYgKHNuYXBPZmZzZXRzLmxhc3QoKSAh
PSBtYXhTY3JvbGxFeHRlbnQpCisgICAgICAgIHNuYXBPZmZzZXRzLmFwcGVuZChtYXhTY3JvbGxF
eHRlbnQpOworICAgIGlmIChzbmFwT2Zmc2V0cy5maXJzdCgpKQorICAgICAgICBzbmFwT2Zmc2V0
cy5pbnNlcnQoMCwgMCk7Cit9CisKK3N0YXRpYyB2b2lkIGNvbXB1dGVBeGlzUHJveGltaXR5U25h
cE9mZnNldFJhbmdlcyhjb25zdCBWZWN0b3I8TGF5b3V0VW5pdD4mIHNuYXBPZmZzZXRzLCBWZWN0
b3I8U2Nyb2xsT2Zmc2V0UmFuZ2U8TGF5b3V0VW5pdD4+JiBvZmZzZXRSYW5nZXMsIExheW91dFVu
aXQgc2Nyb2xsUG9ydEF4aXNMZW5ndGgpCit7CisgICAgLy8gVGhpcyBpcyBhbiBhcmJpdHJhcnkg
Y2hvaWNlIGZvciB3aGF0IGl0IG1lYW5zIHRvIGJlICJpbiBwcm94aW1pdHkiIG9mIGEgc25hcCBv
ZmZzZXQuIFdlIHNob3VsZCBwbGF5IGFyb3VuZCB3aXRoCisgICAgLy8gdGhpcyBhbmQgc2VlIHdo
YXQgZmVlbHMgYmVzdC4KKyAgICBzdGF0aWMgY29uc3QgZmxvYXQgcmF0aW9PZlNjcm9sbFBvcnRB
eGlzTGVuZ3RoVG9CZUNvbnNpZGVyZWRGb3JQcm94aW1pdHkgPSAwLjM7CisgICAgaWYgKHNuYXBP
ZmZzZXRzLnNpemUoKSA8IDIpCisgICAgICAgIHJldHVybjsKKworICAgIC8vIFRoZSBleHRyYSBy
dWxlIGFjY291bnRpbmcgZm9yIHNjcm9sbCBvZmZzZXQgcmFuZ2VzIGluIGJldHdlZW4gdGhlIHNj
cm9sbCBkZXN0aW5hdGlvbiBhbmQgYSBwb3RlbnRpYWwgc25hcCBvZmZzZXQKKyAgICAvLyBoYW5k
bGVzIHRoZSBjb3JuZXIgY2FzZSB3aGVyZSB0aGUgdXNlciBzY3JvbGxzIHdpdGggbW9tZW50dW0g
dmVyeSBsaWdodGx5IGF3YXkgZnJvbSBhIHNuYXAgb2Zmc2V0LCBzdWNoIHRoYXQgdGhlCisgICAg
Ly8gcHJlZGljdGVkIHNjcm9sbCBkZXN0aW5hdGlvbiBpcyBzdGlsbCB3aXRoaW4gcHJveGltaXR5
IG9mIHRoZSBzbmFwIG9mZnNldC4gSW4gdGhpcyBjYXNlLCB0aGUgcmVndWxhciAobWFuZGF0b3J5
CisgICAgLy8gc2Nyb2xsIHNuYXBwaW5nKSBiZWhhdmlvciB3b3VsZCBiZSB0byBzbmFwIHRvIHRo
ZSBuZXh0IG9mZnNldCBpbiB0aGUgZGlyZWN0aW9uIG9mIG1vbWVudHVtIHNjcm9sbGluZywgYnV0
CisgICAgLy8gaW5zdGVhZCwgaXQgaXMgbW9yZSBpbnR1aXRpdmUgdG8gZWl0aGVyIHJldHVybiB0
byB0aGUgb3JpZ2luYWwgc25hcCBwb3NpdGlvbiAod2hpY2ggd2UgYXJiaXRyYXJpbHkgY2hvb3Nl
IGhlcmUpCisgICAgLy8gb3Igc2Nyb2xsIGp1c3Qgb3V0c2lkZSBvZiB0aGUgc25hcCBvZmZzZXQg
cmFuZ2UuIFRoaXMgaXMgYW5vdGhlciBtaW5vciBiZWhhdmlvciB0d2VhayB0aGF0IHdlIHNob3Vs
ZCBwbGF5IGFyb3VuZAorICAgIC8vIHdpdGggdG8gc2VlIHdoYXQgZmVlbHMgYmVzdC4KKyAgICBM
YXlvdXRVbml0IHByb3hpbWl0eURpc3RhbmNlID0gcmF0aW9PZlNjcm9sbFBvcnRBeGlzTGVuZ3Ro
VG9CZUNvbnNpZGVyZWRGb3JQcm94aW1pdHkgKiBzY3JvbGxQb3J0QXhpc0xlbmd0aDsKKyAgICBm
b3IgKHNpemVfdCBpbmRleCA9IDE7IGluZGV4IDwgc25hcE9mZnNldHMuc2l6ZSgpOyArK2luZGV4
KSB7CisgICAgICAgIGF1dG8gc3RhcnRPZmZzZXQgPSBzbmFwT2Zmc2V0c1tpbmRleCAtIDFdICsg
cHJveGltaXR5RGlzdGFuY2U7CisgICAgICAgIGF1dG8gZW5kT2Zmc2V0ID0gc25hcE9mZnNldHNb
aW5kZXhdIC0gcHJveGltaXR5RGlzdGFuY2U7CisgICAgICAgIGlmIChzdGFydE9mZnNldCA8IGVu
ZE9mZnNldCkKKyAgICAgICAgICAgIG9mZnNldFJhbmdlcy5hcHBlbmQoeyBzdGFydE9mZnNldCwg
ZW5kT2Zmc2V0IH0pOworICAgIH0KK30KKwogdm9pZCB1cGRhdGVTbmFwT2Zmc2V0c0ZvclNjcm9s
bGFibGVBcmVhKFNjcm9sbGFibGVBcmVhJiBzY3JvbGxhYmxlQXJlYSwgSFRNTEVsZW1lbnQmIHNj
cm9sbGluZ0VsZW1lbnQsIGNvbnN0IFJlbmRlckJveCYgc2Nyb2xsaW5nRWxlbWVudEJveCwgY29u
c3QgUmVuZGVyU3R5bGUmIHNjcm9sbGluZ0VsZW1lbnRTdHlsZSkKIHsKICAgICBhdXRvKiBzY3Jv
bGxDb250YWluZXIgPSBzY3JvbGxpbmdFbGVtZW50LnJlbmRlcmVyKCk7CkBAIC0xMDEsOCArMjA1
LDEwIEBAIHZvaWQgdXBkYXRlU25hcE9mZnNldHNGb3JTY3JvbGxhYmxlQXJlYShTY3JvbGxhYmxl
QXJlYSYgc2Nyb2xsYWJsZUFyZWEsIEhUTUxFbGVtCiAgICAgICAgIHJldHVybjsKICAgICB9CiAK
LSAgICBhdXRvIHZlcnRpY2FsU25hcE9mZnNldHMgPSBzdGQ6Om1ha2VfdW5pcXVlPFZlY3RvcjxM
YXlvdXRVbml0Pj4oKTsKLSAgICBhdXRvIGhvcml6b250YWxTbmFwT2Zmc2V0cyA9IHN0ZDo6bWFr
ZV91bmlxdWU8VmVjdG9yPExheW91dFVuaXQ+PigpOworICAgIFZlY3RvcjxMYXlvdXRVbml0PiB2
ZXJ0aWNhbFNuYXBPZmZzZXRzOworICAgIFZlY3RvcjxMYXlvdXRVbml0PiBob3Jpem9udGFsU25h
cE9mZnNldHM7CisgICAgVmVjdG9yPFNjcm9sbE9mZnNldFJhbmdlPExheW91dFVuaXQ+PiB2ZXJ0
aWNhbFNuYXBPZmZzZXRSYW5nZXM7CisgICAgVmVjdG9yPFNjcm9sbE9mZnNldFJhbmdlPExheW91
dFVuaXQ+PiBob3Jpem9udGFsU25hcE9mZnNldFJhbmdlczsKICAgICBIYXNoU2V0PGZsb2F0PiBz
ZWVuVmVydGljYWxTbmFwT2Zmc2V0czsKICAgICBIYXNoU2V0PGZsb2F0PiBzZWVuSG9yaXpvbnRh
bFNuYXBPZmZzZXRzOwogICAgIGJvb2wgaGFzSG9yaXpvbnRhbFNuYXBPZmZzZXRzID0gc2Nyb2xs
U25hcFR5cGUuYXhpcyA9PSBTY3JvbGxTbmFwQXhpczo6Qm90aCB8fCBzY3JvbGxTbmFwVHlwZS5h
eGlzID09IFNjcm9sbFNuYXBBeGlzOjpYQXhpcyB8fCBzY3JvbGxTbmFwVHlwZS5heGlzID09IFNj
cm9sbFNuYXBBeGlzOjpJbmxpbmU7CkBAIC0xMzMsNDUgKzIzOSwxMDggQEAgdm9pZCB1cGRhdGVT
bmFwT2Zmc2V0c0ZvclNjcm9sbGFibGVBcmVhKFNjcm9sbGFibGVBcmVhJiBzY3JvbGxhYmxlQXJl
YSwgSFRNTEVsZW0KICAgICAgICAgICAgIGF1dG8gYWJzb2x1dGVTY3JvbGxPZmZzZXQgPSBjbGFt
cFRvPExheW91dFVuaXQ+KGNvbXB1dGVTY3JvbGxTbmFwQWxpZ25PZmZzZXQoc2Nyb2xsU25hcEFy
ZWEueCgpLCBzY3JvbGxTbmFwQXJlYS53aWR0aCgpLCBhbGlnbm1lbnQueCkgLSBjb21wdXRlU2Ny
b2xsU25hcEFsaWduT2Zmc2V0KHNjcm9sbFNuYXBQb3J0LngoKSwgc2Nyb2xsU25hcFBvcnQud2lk
dGgoKSwgYWxpZ25tZW50LngpLCAwLCBtYXhTY3JvbGxMZWZ0KTsKICAgICAgICAgICAgIGlmICgh
c2Vlbkhvcml6b250YWxTbmFwT2Zmc2V0cy5jb250YWlucyhhYnNvbHV0ZVNjcm9sbE9mZnNldCkp
IHsKICAgICAgICAgICAgICAgICBzZWVuSG9yaXpvbnRhbFNuYXBPZmZzZXRzLmFkZChhYnNvbHV0
ZVNjcm9sbE9mZnNldCk7Ci0gICAgICAgICAgICAgICAgaG9yaXpvbnRhbFNuYXBPZmZzZXRzLT5h
cHBlbmQoYWJzb2x1dGVTY3JvbGxPZmZzZXQpOworICAgICAgICAgICAgICAgIGhvcml6b250YWxT
bmFwT2Zmc2V0cy5hcHBlbmQoYWJzb2x1dGVTY3JvbGxPZmZzZXQpOwogICAgICAgICAgICAgfQog
ICAgICAgICB9CiAgICAgICAgIGlmIChoYXNWZXJ0aWNhbFNuYXBPZmZzZXRzICYmIGFsaWdubWVu
dC55ICE9IFNjcm9sbFNuYXBBeGlzQWxpZ25UeXBlOjpOb25lKSB7CiAgICAgICAgICAgICBhdXRv
IGFic29sdXRlU2Nyb2xsT2Zmc2V0ID0gY2xhbXBUbzxMYXlvdXRVbml0Pihjb21wdXRlU2Nyb2xs
U25hcEFsaWduT2Zmc2V0KHNjcm9sbFNuYXBBcmVhLnkoKSwgc2Nyb2xsU25hcEFyZWEuaGVpZ2h0
KCksIGFsaWdubWVudC55KSAtIGNvbXB1dGVTY3JvbGxTbmFwQWxpZ25PZmZzZXQoc2Nyb2xsU25h
cFBvcnQueSgpLCBzY3JvbGxTbmFwUG9ydC5oZWlnaHQoKSwgYWxpZ25tZW50LnkpLCAwLCBtYXhT
Y3JvbGxUb3ApOwogICAgICAgICAgICAgaWYgKCFzZWVuVmVydGljYWxTbmFwT2Zmc2V0cy5jb250
YWlucyhhYnNvbHV0ZVNjcm9sbE9mZnNldCkpIHsKICAgICAgICAgICAgICAgICBzZWVuVmVydGlj
YWxTbmFwT2Zmc2V0cy5hZGQoYWJzb2x1dGVTY3JvbGxPZmZzZXQpOwotICAgICAgICAgICAgICAg
IHZlcnRpY2FsU25hcE9mZnNldHMtPmFwcGVuZChhYnNvbHV0ZVNjcm9sbE9mZnNldCk7CisgICAg
ICAgICAgICAgICAgdmVydGljYWxTbmFwT2Zmc2V0cy5hcHBlbmQoYWJzb2x1dGVTY3JvbGxPZmZz
ZXQpOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQogCi0gICAgc3RkOjpzb3J0KGhv
cml6b250YWxTbmFwT2Zmc2V0cy0+YmVnaW4oKSwgaG9yaXpvbnRhbFNuYXBPZmZzZXRzLT5lbmQo
KSk7Ci0gICAgaWYgKGhvcml6b250YWxTbmFwT2Zmc2V0cy0+c2l6ZSgpKSB7Ci0gICAgICAgIGlm
IChob3Jpem9udGFsU25hcE9mZnNldHMtPmxhc3QoKSAhPSBtYXhTY3JvbGxMZWZ0KQotICAgICAg
ICAgICAgaG9yaXpvbnRhbFNuYXBPZmZzZXRzLT5hcHBlbmQobWF4U2Nyb2xsTGVmdCk7Ci0gICAg
ICAgIGlmIChob3Jpem9udGFsU25hcE9mZnNldHMtPmZpcnN0KCkpCi0gICAgICAgICAgICBob3Jp
em9udGFsU25hcE9mZnNldHMtPmluc2VydCgwLCAwKTsKKyAgICBpZiAoIWhvcml6b250YWxTbmFw
T2Zmc2V0cy5pc0VtcHR5KCkpIHsKKyAgICAgICAgYWRqdXN0QXhpc1NuYXBPZmZzZXRzRm9yU2Ny
b2xsRXh0ZW50KGhvcml6b250YWxTbmFwT2Zmc2V0cywgbWF4U2Nyb2xsTGVmdCk7CiAjaWYgIUxP
R19ESVNBQkxFRAotICAgICAgICBMT0coU2Nyb2xsaW5nLCAiID0+IENvbXB1dGVkIGhvcml6b250
YWwgc2Nyb2xsIHNuYXAgb2Zmc2V0czogJXMiLCBzbmFwT2Zmc2V0c1RvU3RyaW5nKCpob3Jpem9u
dGFsU25hcE9mZnNldHMpLnV0ZjgoKS5kYXRhKCkpOworICAgICAgICBMT0coU2Nyb2xsaW5nLCAi
ID0+IENvbXB1dGVkIGhvcml6b250YWwgc2Nyb2xsIHNuYXAgb2Zmc2V0czogJXMiLCBzbmFwT2Zm
c2V0c1RvU3RyaW5nKGhvcml6b250YWxTbmFwT2Zmc2V0cykudXRmOCgpLmRhdGEoKSk7CisgICAg
ICAgIExPRyhTY3JvbGxpbmcsICIgPT4gQ29tcHV0ZWQgaG9yaXpvbnRhbCBzY3JvbGwgc25hcCBv
ZmZzZXQgcmFuZ2VzOiAlcyIsIHNuYXBPZmZzZXRSYW5nZXNUb1N0cmluZyhob3Jpem9udGFsU25h
cE9mZnNldFJhbmdlcykudXRmOCgpLmRhdGEoKSk7CiAjZW5kaWYKLSAgICAgICAgc2Nyb2xsYWJs
ZUFyZWEuc2V0SG9yaXpvbnRhbFNuYXBPZmZzZXRzKFdURk1vdmUoaG9yaXpvbnRhbFNuYXBPZmZz
ZXRzKSk7CisgICAgICAgIGlmIChzY3JvbGxTbmFwVHlwZS5zdHJpY3RuZXNzID09IFNjcm9sbFNu
YXBTdHJpY3RuZXNzOjpQcm94aW1pdHkpCisgICAgICAgICAgICBjb21wdXRlQXhpc1Byb3hpbWl0
eVNuYXBPZmZzZXRSYW5nZXMoaG9yaXpvbnRhbFNuYXBPZmZzZXRzLCBob3Jpem9udGFsU25hcE9m
ZnNldFJhbmdlcywgc2Nyb2xsU25hcFBvcnQud2lkdGgoKSk7CisKKyAgICAgICAgc2Nyb2xsYWJs
ZUFyZWEuc2V0SG9yaXpvbnRhbFNuYXBPZmZzZXRzKGhvcml6b250YWxTbmFwT2Zmc2V0cyk7Cisg
ICAgICAgIHNjcm9sbGFibGVBcmVhLnNldEhvcml6b250YWxTbmFwT2Zmc2V0UmFuZ2VzKGhvcml6
b250YWxTbmFwT2Zmc2V0UmFuZ2VzKTsKICAgICB9IGVsc2UKICAgICAgICAgc2Nyb2xsYWJsZUFy
ZWEuY2xlYXJIb3Jpem9udGFsU25hcE9mZnNldHMoKTsKIAotICAgIHN0ZDo6c29ydCh2ZXJ0aWNh
bFNuYXBPZmZzZXRzLT5iZWdpbigpLCB2ZXJ0aWNhbFNuYXBPZmZzZXRzLT5lbmQoKSk7Ci0gICAg
aWYgKHZlcnRpY2FsU25hcE9mZnNldHMtPnNpemUoKSkgewotICAgICAgICBpZiAodmVydGljYWxT
bmFwT2Zmc2V0cy0+bGFzdCgpICE9IG1heFNjcm9sbFRvcCkKLSAgICAgICAgICAgIHZlcnRpY2Fs
U25hcE9mZnNldHMtPmFwcGVuZChtYXhTY3JvbGxUb3ApOwotICAgICAgICBpZiAodmVydGljYWxT
bmFwT2Zmc2V0cy0+Zmlyc3QoKSkKLSAgICAgICAgICAgIHZlcnRpY2FsU25hcE9mZnNldHMtPmlu
c2VydCgwLCAwKTsKKyAgICBpZiAoIXZlcnRpY2FsU25hcE9mZnNldHMuaXNFbXB0eSgpKSB7Cisg
ICAgICAgIGFkanVzdEF4aXNTbmFwT2Zmc2V0c0ZvclNjcm9sbEV4dGVudCh2ZXJ0aWNhbFNuYXBP
ZmZzZXRzLCBtYXhTY3JvbGxUb3ApOwogI2lmICFMT0dfRElTQUJMRUQKLSAgICAgICAgTE9HKFNj
cm9sbGluZywgIiA9PiBDb21wdXRlZCB2ZXJ0aWNhbCBzY3JvbGwgc25hcCBvZmZzZXRzOiAlcyIs
IHNuYXBPZmZzZXRzVG9TdHJpbmcoKnZlcnRpY2FsU25hcE9mZnNldHMpLnV0ZjgoKS5kYXRhKCkp
OworICAgICAgICBMT0coU2Nyb2xsaW5nLCAiID0+IENvbXB1dGVkIHZlcnRpY2FsIHNjcm9sbCBz
bmFwIG9mZnNldHM6ICVzIiwgc25hcE9mZnNldHNUb1N0cmluZyh2ZXJ0aWNhbFNuYXBPZmZzZXRz
KS51dGY4KCkuZGF0YSgpKTsKKyAgICAgICAgTE9HKFNjcm9sbGluZywgIiA9PiBDb21wdXRlZCB2
ZXJ0aWNhbCBzY3JvbGwgc25hcCBvZmZzZXQgcmFuZ2VzOiAlcyIsIHNuYXBPZmZzZXRSYW5nZXNU
b1N0cmluZyh2ZXJ0aWNhbFNuYXBPZmZzZXRSYW5nZXMpLnV0ZjgoKS5kYXRhKCkpOwogI2VuZGlm
Ci0gICAgICAgIHNjcm9sbGFibGVBcmVhLnNldFZlcnRpY2FsU25hcE9mZnNldHMoV1RGTW92ZSh2
ZXJ0aWNhbFNuYXBPZmZzZXRzKSk7CisgICAgICAgIGlmIChzY3JvbGxTbmFwVHlwZS5zdHJpY3Ru
ZXNzID09IFNjcm9sbFNuYXBTdHJpY3RuZXNzOjpQcm94aW1pdHkpCisgICAgICAgICAgICBjb21w
dXRlQXhpc1Byb3hpbWl0eVNuYXBPZmZzZXRSYW5nZXModmVydGljYWxTbmFwT2Zmc2V0cywgdmVy
dGljYWxTbmFwT2Zmc2V0UmFuZ2VzLCBzY3JvbGxTbmFwUG9ydC5oZWlnaHQoKSk7CisKKyAgICAg
ICAgc2Nyb2xsYWJsZUFyZWEuc2V0VmVydGljYWxTbmFwT2Zmc2V0cyh2ZXJ0aWNhbFNuYXBPZmZz
ZXRzKTsKKyAgICAgICAgc2Nyb2xsYWJsZUFyZWEuc2V0VmVydGljYWxTbmFwT2Zmc2V0UmFuZ2Vz
KHZlcnRpY2FsU25hcE9mZnNldFJhbmdlcyk7CiAgICAgfSBlbHNlCiAgICAgICAgIHNjcm9sbGFi
bGVBcmVhLmNsZWFyVmVydGljYWxTbmFwT2Zmc2V0cygpOwogfQogCit0ZW1wbGF0ZSA8dHlwZW5h
bWUgTGF5b3V0VHlwZT4KK0xheW91dFR5cGUgY2xvc2VzdFNuYXBPZmZzZXQoY29uc3QgVmVjdG9y
PExheW91dFR5cGU+JiBzbmFwT2Zmc2V0cywgY29uc3QgVmVjdG9yPFNjcm9sbE9mZnNldFJhbmdl
PExheW91dFR5cGU+PiYgc25hcE9mZnNldFJhbmdlcywgTGF5b3V0VHlwZSBzY3JvbGxEZXN0aW5h
dGlvbiwgZmxvYXQgdmVsb2NpdHksIHVuc2lnbmVkJiBhY3RpdmVTbmFwSW5kZXgpCit7CisgICAg
QVNTRVJUKHNuYXBPZmZzZXRzLnNpemUoKSk7CisgICAgYWN0aXZlU25hcEluZGV4ID0gMDsKKwor
ICAgIHVuc2lnbmVkIGxvd2VyU25hcE9mZnNldFJhbmdlSW5kZXg7CisgICAgdW5zaWduZWQgdXBw
ZXJTbmFwT2Zmc2V0UmFuZ2VJbmRleDsKKyAgICBpbmRpY2VzT2ZOZWFyZXN0U25hcE9mZnNldFJh
bmdlczxMYXlvdXRUeXBlPihzY3JvbGxEZXN0aW5hdGlvbiwgc25hcE9mZnNldFJhbmdlcywgbG93
ZXJTbmFwT2Zmc2V0UmFuZ2VJbmRleCwgdXBwZXJTbmFwT2Zmc2V0UmFuZ2VJbmRleCk7CisgICAg
aWYgKGxvd2VyU25hcE9mZnNldFJhbmdlSW5kZXggPT0gdXBwZXJTbmFwT2Zmc2V0UmFuZ2VJbmRl
eCAmJiB1cHBlclNuYXBPZmZzZXRSYW5nZUluZGV4ICE9IGludmFsaWRTbmFwT2Zmc2V0SW5kZXgp
IHsKKyAgICAgICAgYWN0aXZlU25hcEluZGV4ID0gaW52YWxpZFNuYXBPZmZzZXRJbmRleDsKKyAg
ICAgICAgcmV0dXJuIHNjcm9sbERlc3RpbmF0aW9uOworICAgIH0KKworICAgIGlmIChzY3JvbGxE
ZXN0aW5hdGlvbiA8PSBzbmFwT2Zmc2V0cy5maXJzdCgpKQorICAgICAgICByZXR1cm4gc25hcE9m
ZnNldHMuZmlyc3QoKTsKKworICAgIGFjdGl2ZVNuYXBJbmRleCA9IHNuYXBPZmZzZXRzLnNpemUo
KSAtIDE7CisgICAgaWYgKHNjcm9sbERlc3RpbmF0aW9uID49IHNuYXBPZmZzZXRzLmxhc3QoKSkK
KyAgICAgICAgcmV0dXJuIHNuYXBPZmZzZXRzLmxhc3QoKTsKKworICAgIHVuc2lnbmVkIGxvd2Vy
SW5kZXg7CisgICAgdW5zaWduZWQgdXBwZXJJbmRleDsKKyAgICBpbmRpY2VzT2ZOZWFyZXN0U25h
cE9mZnNldHM8TGF5b3V0VHlwZT4oc2Nyb2xsRGVzdGluYXRpb24sIHNuYXBPZmZzZXRzLCBsb3dl
ckluZGV4LCB1cHBlckluZGV4KTsKKyAgICBMYXlvdXRUeXBlIGxvd2VyU25hcFBvc2l0aW9uID0g
c25hcE9mZnNldHNbbG93ZXJJbmRleF07CisgICAgTGF5b3V0VHlwZSB1cHBlclNuYXBQb3NpdGlv
biA9IHNuYXBPZmZzZXRzW3VwcGVySW5kZXhdOworICAgIGlmICghc3RkOjphYnModmVsb2NpdHkp
KSB7CisgICAgICAgIGJvb2wgaXNDbG9zZXJUb0xvd2VyU25hcFBvc2l0aW9uID0gc2Nyb2xsRGVz
dGluYXRpb24gLSBsb3dlclNuYXBQb3NpdGlvbiA8PSB1cHBlclNuYXBQb3NpdGlvbiAtIHNjcm9s
bERlc3RpbmF0aW9uOworICAgICAgICBhY3RpdmVTbmFwSW5kZXggPSBpc0Nsb3NlclRvTG93ZXJT
bmFwUG9zaXRpb24gPyBsb3dlckluZGV4IDogdXBwZXJJbmRleDsKKyAgICAgICAgcmV0dXJuIGlz
Q2xvc2VyVG9Mb3dlclNuYXBQb3NpdGlvbiA/IGxvd2VyU25hcFBvc2l0aW9uIDogdXBwZXJTbmFw
UG9zaXRpb247CisgICAgfQorCisgICAgLy8gTm9uLXplcm8gdmVsb2NpdHkgaW5kaWNhdGVzIGEg
ZmxpY2sgZ2VzdHVyZS4gRXZlbiBpZiBhbm90aGVyIHNuYXAgcG9pbnQgaXMgY2xvc2VyLCB3ZSBz
aG91bGQgY2hvb3NlIHRoZSBvbmUgaW4gdGhlIGRpcmVjdGlvbiBvZiB0aGUgZmxpY2sgZ2VzdHVy
ZQorICAgIC8vIGFzIGxvbmcgYXMgYSBzY3JvbGwgc25hcCBvZmZzZXQgcmFuZ2UgZG9lcyBub3Qg
bGllIGJldHdlZW4gdGhlIHNjcm9sbCBkZXN0aW5hdGlvbiBhbmQgdGhlIHRhcmdldGVkIHNuYXAg
b2Zmc2V0LgorICAgIGlmICh2ZWxvY2l0eSA8IDApIHsKKyAgICAgICAgaWYgKGxvd2VyU25hcE9m
ZnNldFJhbmdlSW5kZXggIT0gaW52YWxpZFNuYXBPZmZzZXRJbmRleCAmJiBsb3dlclNuYXBQb3Np
dGlvbiA8IHNuYXBPZmZzZXRSYW5nZXNbbG93ZXJTbmFwT2Zmc2V0UmFuZ2VJbmRleF0uZW5kKSB7
CisgICAgICAgICAgICBhY3RpdmVTbmFwSW5kZXggPSB1cHBlckluZGV4OworICAgICAgICAgICAg
cmV0dXJuIHVwcGVyU25hcFBvc2l0aW9uOworICAgICAgICB9CisgICAgICAgIGFjdGl2ZVNuYXBJ
bmRleCA9IGxvd2VySW5kZXg7CisgICAgICAgIHJldHVybiBsb3dlclNuYXBQb3NpdGlvbjsKKyAg
ICB9CisKKyAgICBpZiAodXBwZXJTbmFwT2Zmc2V0UmFuZ2VJbmRleCAhPSBpbnZhbGlkU25hcE9m
ZnNldEluZGV4ICYmIHNuYXBPZmZzZXRSYW5nZXNbdXBwZXJTbmFwT2Zmc2V0UmFuZ2VJbmRleF0u
c3RhcnQgPCB1cHBlclNuYXBQb3NpdGlvbikgeworICAgICAgICBhY3RpdmVTbmFwSW5kZXggPSBs
b3dlckluZGV4OworICAgICAgICByZXR1cm4gbG93ZXJTbmFwUG9zaXRpb247CisgICAgfQorICAg
IGFjdGl2ZVNuYXBJbmRleCA9IHVwcGVySW5kZXg7CisgICAgcmV0dXJuIHVwcGVyU25hcFBvc2l0
aW9uOworfQorCitMYXlvdXRVbml0IGNsb3Nlc3RTbmFwT2Zmc2V0KGNvbnN0IFZlY3RvcjxMYXlv
dXRVbml0PiYgc25hcE9mZnNldHMsIGNvbnN0IFZlY3RvcjxTY3JvbGxPZmZzZXRSYW5nZTxMYXlv
dXRVbml0Pj4mIHNuYXBPZmZzZXRSYW5nZXMsIExheW91dFVuaXQgc2Nyb2xsRGVzdGluYXRpb24s
IGZsb2F0IHZlbG9jaXR5LCB1bnNpZ25lZCYgYWN0aXZlU25hcEluZGV4KQoreworICAgIHJldHVy
biBjbG9zZXN0U25hcE9mZnNldDxMYXlvdXRVbml0PihzbmFwT2Zmc2V0cywgc25hcE9mZnNldFJh
bmdlcywgc2Nyb2xsRGVzdGluYXRpb24sIHZlbG9jaXR5LCBhY3RpdmVTbmFwSW5kZXgpOworfQor
CitmbG9hdCBjbG9zZXN0U25hcE9mZnNldChjb25zdCBWZWN0b3I8ZmxvYXQ+JiBzbmFwT2Zmc2V0
cywgY29uc3QgVmVjdG9yPFNjcm9sbE9mZnNldFJhbmdlPGZsb2F0Pj4mIHNuYXBPZmZzZXRSYW5n
ZXMsIGZsb2F0IHNjcm9sbERlc3RpbmF0aW9uLCBmbG9hdCB2ZWxvY2l0eSwgdW5zaWduZWQmIGFj
dGl2ZVNuYXBJbmRleCkKK3sKKyAgICByZXR1cm4gY2xvc2VzdFNuYXBPZmZzZXQ8ZmxvYXQ+KHNu
YXBPZmZzZXRzLCBzbmFwT2Zmc2V0UmFuZ2VzLCBzY3JvbGxEZXN0aW5hdGlvbiwgdmVsb2NpdHks
IGFjdGl2ZVNuYXBJbmRleCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlm
IC8vIENTU19TQ1JPTExfU05BUApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3Jv
bGxpbmcvQXhpc1Njcm9sbFNuYXBPZmZzZXRzLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9s
bGluZy9BeGlzU2Nyb2xsU25hcE9mZnNldHMuaAppbmRleCBiMDFjYjdkMzg5YmNmZjU5YTk1OGRi
MTQ3NjFmYmI5NTY0N2UzMmQyLi42YjZiMmJjODU5ODg0OGI2NWNmZTQ5MjA0MzJmNjRmNTRmYTE4
ZWRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9BeGlzU2Nyb2xs
U25hcE9mZnNldHMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9BeGlzU2Ny
b2xsU25hcE9mZnNldHMuaApAQCAtMjcsNiArMjcsOCBAQAogCiAjaWYgRU5BQkxFKENTU19TQ1JP
TExfU05BUCkKIAorI2luY2x1ZGUgIkxheW91dFVuaXQuaCIKKyNpbmNsdWRlICJTY3JvbGxTbmFw
T2Zmc2V0c0luZm8uaCIKICNpbmNsdWRlICJTY3JvbGxUeXBlcy5oIgogI2luY2x1ZGUgPHd0Zi9W
ZWN0b3IuaD4KIApAQCAtMzksNDcgKzQxLDkgQEAgY2xhc3MgU2Nyb2xsYWJsZUFyZWE7CiAKIHZv
aWQgdXBkYXRlU25hcE9mZnNldHNGb3JTY3JvbGxhYmxlQXJlYShTY3JvbGxhYmxlQXJlYSYsIEhU
TUxFbGVtZW50JiBzY3JvbGxpbmdFbGVtZW50LCBjb25zdCBSZW5kZXJCb3gmIHNjcm9sbGluZ0Vs
ZW1lbnRCb3gsIGNvbnN0IFJlbmRlclN0eWxlJiBzY3JvbGxpbmdFbGVtZW50U3R5bGUpOwogCi0v
LyBjbG9zZXN0U25hcE9mZnNldCBpcyBhIHRlbXBsYXRlZCBmdW5jdGlvbiB0aGF0IHRha2VzIGlu
IGEgVmVjdG9yIHJlcHJlc2VudGluZyBzbmFwIG9mZnNldHMgYXMgTGF5b3V0VHlwZXMgKGUuZy4g
TGF5b3V0VW5pdCBvciBmbG9hdCkgYW5kCi0vLyBhcyB3ZWxsIGFzIGEgVmVsb2NpdHlUeXBlIGlu
ZGljYXRpbmcgdGhlIHZlbG9jaXR5IChlLmcuIGZsb2F0LCBDR0Zsb2F0LCBldGMuKSBUaGlzIGZ1
bmN0aW9uIGlzIHRlbXBsYXRlZCBiZWNhdXNlIHRoZSBVSSBwcm9jZXNzIHdpbGwgbm93Ci0vLyB1
c2UgcGl4ZWwgc25hcHBlZCBmbG9hdHMgdG8gcmVwcmVzZW50IHNuYXAgb2Zmc2V0cyByYXRoZXIg
dGhhbiBMYXlvdXRVbml0cy4KLXRlbXBsYXRlIDx0eXBlbmFtZSBMYXlvdXRUeXBlLCB0eXBlbmFt
ZSBWZWxvY2l0eVR5cGU+Ci1MYXlvdXRUeXBlIGNsb3Nlc3RTbmFwT2Zmc2V0KGNvbnN0IFZlY3Rv
cjxMYXlvdXRUeXBlPiYgc25hcE9mZnNldHMsIExheW91dFR5cGUgc2Nyb2xsRGVzdGluYXRpb24s
IFZlbG9jaXR5VHlwZSB2ZWxvY2l0eSwgdW5zaWduZWQmIGFjdGl2ZVNuYXBJbmRleCkKLXsKLSAg
ICBBU1NFUlQoc25hcE9mZnNldHMuc2l6ZSgpKTsKLSAgICBhY3RpdmVTbmFwSW5kZXggPSAwOwot
ICAgIGlmIChzY3JvbGxEZXN0aW5hdGlvbiA8PSBzbmFwT2Zmc2V0cy5maXJzdCgpKQotICAgICAg
ICByZXR1cm4gc25hcE9mZnNldHMuZmlyc3QoKTsKLQotICAgIGFjdGl2ZVNuYXBJbmRleCA9IHNu
YXBPZmZzZXRzLnNpemUoKSAtIDE7Ci0gICAgaWYgKHNjcm9sbERlc3RpbmF0aW9uID49IHNuYXBP
ZmZzZXRzLmxhc3QoKSkKLSAgICAgICAgcmV0dXJuIHNuYXBPZmZzZXRzLmxhc3QoKTsKLQotICAg
IHNpemVfdCBsb3dlckluZGV4ID0gMDsKLSAgICBzaXplX3QgdXBwZXJJbmRleCA9IHNuYXBPZmZz
ZXRzLnNpemUoKSAtIDE7Ci0gICAgd2hpbGUgKGxvd2VySW5kZXggPCB1cHBlckluZGV4IC0gMSkg
ewotICAgICAgICBzaXplX3QgbWlkZGxlSW5kZXggPSAobG93ZXJJbmRleCArIHVwcGVySW5kZXgp
IC8gMjsKLSAgICAgICAgaWYgKHNjcm9sbERlc3RpbmF0aW9uIDwgc25hcE9mZnNldHNbbWlkZGxl
SW5kZXhdKQotICAgICAgICAgICAgdXBwZXJJbmRleCA9IG1pZGRsZUluZGV4OwotICAgICAgICBl
bHNlIGlmIChzY3JvbGxEZXN0aW5hdGlvbiA+IHNuYXBPZmZzZXRzW21pZGRsZUluZGV4XSkKLSAg
ICAgICAgICAgIGxvd2VySW5kZXggPSBtaWRkbGVJbmRleDsKLSAgICAgICAgZWxzZSB7Ci0gICAg
ICAgICAgICB1cHBlckluZGV4ID0gbWlkZGxlSW5kZXg7Ci0gICAgICAgICAgICBsb3dlckluZGV4
ID0gbWlkZGxlSW5kZXg7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgIH0KLSAg
ICBMYXlvdXRUeXBlIGxvd2VyU25hcFBvc2l0aW9uID0gc25hcE9mZnNldHNbbG93ZXJJbmRleF07
Ci0gICAgTGF5b3V0VHlwZSB1cHBlclNuYXBQb3NpdGlvbiA9IHNuYXBPZmZzZXRzW3VwcGVySW5k
ZXhdOwotICAgIC8vIE5vbnplcm8gdmVsb2NpdHkgaW5kaWNhdGVzIGEgZmxpY2sgZ2VzdHVyZS4g
RXZlbiBpZiBhbm90aGVyIHNuYXAgcG9pbnQgaXMgY2xvc2VyLCBzbmFwIHRvIHRoZSBvbmUgaW4g
dGhlIGRpcmVjdGlvbiBvZiB0aGUgZmxpY2sgZ2VzdHVyZS4KLSAgICBpZiAodmVsb2NpdHkpIHsK
LSAgICAgICAgYWN0aXZlU25hcEluZGV4ID0gKHZlbG9jaXR5IDwgMCkgPyBsb3dlckluZGV4IDog
dXBwZXJJbmRleDsKLSAgICAgICAgcmV0dXJuIHZlbG9jaXR5IDwgMCA/IGxvd2VyU25hcFBvc2l0
aW9uIDogdXBwZXJTbmFwUG9zaXRpb247Ci0gICAgfQotCi0gICAgYm9vbCBpc0Nsb3NlclRvTG93
ZXJTbmFwUG9zaXRpb24gPSBzY3JvbGxEZXN0aW5hdGlvbiAtIGxvd2VyU25hcFBvc2l0aW9uIDw9
IHVwcGVyU25hcFBvc2l0aW9uIC0gc2Nyb2xsRGVzdGluYXRpb247Ci0gICAgYWN0aXZlU25hcElu
ZGV4ID0gaXNDbG9zZXJUb0xvd2VyU25hcFBvc2l0aW9uID8gbG93ZXJJbmRleCA6IHVwcGVySW5k
ZXg7Ci0gICAgcmV0dXJuIGlzQ2xvc2VyVG9Mb3dlclNuYXBQb3NpdGlvbiA/IGxvd2VyU25hcFBv
c2l0aW9uIDogdXBwZXJTbmFwUG9zaXRpb247Ci19Citjb25zdCB1bnNpZ25lZCBpbnZhbGlkU25h
cE9mZnNldEluZGV4ID0gVUlOVF9NQVg7CitXRUJDT1JFX0VYUE9SVCBMYXlvdXRVbml0IGNsb3Nl
c3RTbmFwT2Zmc2V0KGNvbnN0IFZlY3RvcjxMYXlvdXRVbml0PiYgc25hcE9mZnNldHMsIGNvbnN0
IFZlY3RvcjxTY3JvbGxPZmZzZXRSYW5nZTxMYXlvdXRVbml0Pj4mIHNuYXBPZmZzZXRSYW5nZXMs
IExheW91dFVuaXQgc2Nyb2xsRGVzdGluYXRpb24sIGZsb2F0IHZlbG9jaXR5LCB1bnNpZ25lZCYg
YWN0aXZlU25hcEluZGV4KTsKK1dFQkNPUkVfRVhQT1JUIGZsb2F0IGNsb3Nlc3RTbmFwT2Zmc2V0
KGNvbnN0IFZlY3RvcjxmbG9hdD4mIHNuYXBPZmZzZXRzLCBjb25zdCBWZWN0b3I8U2Nyb2xsT2Zm
c2V0UmFuZ2U8ZmxvYXQ+PiYgc25hcE9mZnNldFJhbmdlcywgZmxvYXQgc2Nyb2xsRGVzdGluYXRp
b24sIGZsb2F0IHZlbG9jaXR5LCB1bnNpZ25lZCYgYWN0aXZlU25hcEluZGV4KTsKIAogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9s
bGluZy9TY3JvbGxTbmFwT2Zmc2V0c0luZm8uaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xs
aW5nL1Njcm9sbFNuYXBPZmZzZXRzSW5mby5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjYzYmQ5NjM4YjYzYTFhMTFj
YTQwZjM2NzIxMjlmNzE0MTBjNmZmMmUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxTbmFwT2Zmc2V0c0luZm8uaApAQCAtMCwwICsxLDUxIEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisK
K25hbWVzcGFjZSBXZWJDb3JlIHsKKwordGVtcGxhdGUgPHR5cGVuYW1lIFQ+CitzdHJ1Y3QgU2Ny
b2xsT2Zmc2V0UmFuZ2UgeworICAgIFQgc3RhcnQ7CisgICAgVCBlbmQ7Cit9OworCit0ZW1wbGF0
ZSA8dHlwZW5hbWUgVD4KK3N0cnVjdCBTY3JvbGxTbmFwT2Zmc2V0c0luZm8geworICAgIFZlY3Rv
cjxUPiBob3Jpem9udGFsU25hcE9mZnNldHM7CisgICAgVmVjdG9yPFQ+IHZlcnRpY2FsU25hcE9m
ZnNldHM7CisKKyAgICAvLyBTbmFwIG9mZnNldCByYW5nZXMgcmVwcmVzZW50IG5vbi1lbXB0eSBy
YW5nZXMgb2Ygc2Nyb2xsIG9mZnNldHMgaW4gd2hpY2ggc2Nyb2xsaW5nIG1heSByZXN0IGFmdGVy
IHNjcm9sbCBzbmFwcGluZy4KKyAgICAvLyBUaGVzZSBhcmUgdXNlZCBpbiB0d28gY2FzZXM6ICgx
KSBmb3IgcHJveGltaXR5IHNjcm9sbCBzbmFwcGluZywgd2hlcmUgcG9ydGlvbnMgb2YgYXJlYXMg
YmV0d2VlbiBhZGphY2VudCBzbmFwIG9mZnNldHMKKyAgICAvLyBtYXkgZW1pdCBzbmFwIG9mZnNl
dCByYW5nZXMsIGFuZCAoMikgaW4gdGhlIGNhc2Ugd2hlcmUgdGhlIHNuYXAgYXJlYSBpcyBsYXJn
ZXIgdGhhbiB0aGUgc25hcCBwb3J0LCBpbiB3aGljaCBjYXNlIGFyZWFzCisgICAgLy8gd2hlcmUg
dGhlIHNuYXAgcG9ydCBmaXRzIHdpdGhpbiB0aGUgc25hcCBhcmVhIGFyZSBjb25zaWRlcmVkIHRv
IGJlIHZhbGlkIHNuYXAgcG9zaXRpb25zLgorICAgIFZlY3RvcjxTY3JvbGxPZmZzZXRSYW5nZTxU
Pj4gaG9yaXpvbnRhbFNuYXBPZmZzZXRSYW5nZXM7CisgICAgVmVjdG9yPFNjcm9sbE9mZnNldFJh
bmdlPFQ+PiB2ZXJ0aWNhbFNuYXBPZmZzZXRSYW5nZXM7Cit9OworCit9OyAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xs
aW5nQ29vcmRpbmF0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGlu
Z0Nvb3JkaW5hdG9yLmgKaW5kZXggN2E2YWYyMWYwNjhlOGE4MTA5NDUwOWFhZGFmNGRlYzNjYmM0
MWJlYi4uZWI2ZGFiZjk3OGRjYzRlZDJlMzAyYTI1MmI0NTBiMTY4YmY0YmI5MiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nQ29vcmRpbmF0b3IuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdDb29yZGluYXRvci5o
CkBAIC0yOSw2ICsyOSw3IEBACiAjaW5jbHVkZSAiSW50UmVjdC5oIgogI2luY2x1ZGUgIkxheW91
dFJlY3QuaCIKICNpbmNsdWRlICJQbGF0Zm9ybVdoZWVsRXZlbnQuaCIKKyNpbmNsdWRlICJTY3Jv
bGxTbmFwT2Zmc2V0c0luZm8uaCIKICNpbmNsdWRlICJTY3JvbGxUeXBlcy5oIgogI2luY2x1ZGUg
PHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL1RocmVhZFNhZmVSZWZDb3VudGVkLmg+CkBA
IC0xNzAsNiArMTcxLDggQEAgcHVibGljOgogI2lmIEVOQUJMRShDU1NfU0NST0xMX1NOQVApCiAg
ICAgICAgIFZlY3RvcjxMYXlvdXRVbml0PiBob3Jpem9udGFsU25hcE9mZnNldHM7CiAgICAgICAg
IFZlY3RvcjxMYXlvdXRVbml0PiB2ZXJ0aWNhbFNuYXBPZmZzZXRzOworICAgICAgICBWZWN0b3I8
U2Nyb2xsT2Zmc2V0UmFuZ2U8TGF5b3V0VW5pdD4+IGhvcml6b250YWxTbmFwT2Zmc2V0UmFuZ2Vz
OworICAgICAgICBWZWN0b3I8U2Nyb2xsT2Zmc2V0UmFuZ2U8TGF5b3V0VW5pdD4+IHZlcnRpY2Fs
U25hcE9mZnNldFJhbmdlczsKICAgICAgICAgdW5zaWduZWQgY3VycmVudEhvcml6b250YWxTbmFw
UG9pbnRJbmRleDsKICAgICAgICAgdW5zaWduZWQgY3VycmVudFZlcnRpY2FsU25hcFBvaW50SW5k
ZXg7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Nj
cm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9s
bGluZy9TY3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3IuY3BwCmluZGV4IDhjNjlhZjJmNmRiZDIx
Yjg3ZjY4ODRhZDNjZmE5ZWVmZGMyN2NiYzkuLjFmYTU2NzRhMmJiMWZlNjM1YzcyYWQxZTViN2E1
ZDc0OGFiZGRiNDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Nj
cm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9z
Y3JvbGxpbmcvU2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yLmNwcApAQCAtMzIsMzQgKzMyLDYy
IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0YXRpYyBjb25zdCBTZWNvbmRzIHNjcm9sbFNu
YXBBbmltYXRpb25EdXJhdGlvbiA9IDFfczsKK3N0YXRpYyBpbmxpbmUgZmxvYXQgcHJvamVjdGVk
SW5lcnRpYWxTY3JvbGxEaXN0YW5jZShmbG9hdCBpbml0aWFsV2hlZWxEZWx0YSkKK3sKKyAgICAv
LyBPbiBtYWNPUyAxMC4xMCBhbmQgZWFybGllciwgd2UgZG9uJ3QgaGF2ZSBhIHBsYXRmb3JtIHNj
cm9sbGluZyBtb21lbnR1bSBjYWxjdWxhdG9yLCBzbyB3ZSBpbnN0ZWFkIGFwcHJveGltYXRlIHRo
ZSBzY3JvbGwgZGVzdGluYXRpb24KKyAgICAvLyBieSBtdWx0aXBseWluZyB0aGUgaW5pdGlhbCB3
aGVlbCBkZWx0YSBieSBhIGNvbnN0YW50IGZhY3Rvci4gQnkgcnVubmluZyBhIGZldyBleHBlcmlt
ZW50cyAoaS5lLiBsb2dnaW5nIHNjcm9sbCBkZXN0aW5hdGlvbiBhbmQgaW5pdGlhbAorICAgIC8v
IHdoZWVsIGRlbHRhIGZvciBtYW55IHNjcm9sbCBnZXN0dXJlcykgd2UgZGV0ZXJtaW5lZCB0aGF0
IHRoaXMgaXMgYSByZWFzb25hYmxlIHdheSB0byBhcHByb3hpbWF0ZSB3aGVyZSBzY3JvbGxpbmcg
d2lsbCB0YWtlIHVzIHdpdGhvdXQKKyAgICAvLyB1c2luZyBfTlNTY3JvbGxpbmdNb21lbnR1bUNh
bGN1bGF0b3IuCisgICAgY29uc3Qgc3RhdGljIGRvdWJsZSBpbmVydGlhbFNjcm9sbFByZWRpY3Rp
b25GYWN0b3IgPSAxNi43OworICAgIHJldHVybiBpbmVydGlhbFNjcm9sbFByZWRpY3Rpb25GYWN0
b3IgKiBpbml0aWFsV2hlZWxEZWx0YTsKK30KIAotU2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9y
OjpTY3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3IoY29uc3QgRmxvYXRTaXplJiB2aWV3cG9ydFNp
emUsIGNvbnN0IEZsb2F0U2l6ZSYgY29udGVudFNpemUsIGNvbnN0IEZsb2F0UG9pbnQmIGluaXRp
YWxPZmZzZXQsIGNvbnN0IEZsb2F0UG9pbnQmIHRhcmdldE9mZnNldCwgY29uc3QgRmxvYXRTaXpl
JiBpbml0aWFsRGVsdGEsIGNvbnN0IEZsb2F0U2l6ZSYgaW5pdGlhbFZlbG9jaXR5KQorU2Nyb2xs
aW5nTW9tZW50dW1DYWxjdWxhdG9yOjpTY3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3IoY29uc3Qg
RmxvYXRTaXplJiB2aWV3cG9ydFNpemUsIGNvbnN0IEZsb2F0U2l6ZSYgY29udGVudFNpemUsIGNv
bnN0IEZsb2F0UG9pbnQmIGluaXRpYWxPZmZzZXQsIGNvbnN0IEZsb2F0U2l6ZSYgaW5pdGlhbERl
bHRhLCBjb25zdCBGbG9hdFNpemUmIGluaXRpYWxWZWxvY2l0eSkKICAgICA6IG1faW5pdGlhbERl
bHRhKGluaXRpYWxEZWx0YSkKICAgICAsIG1faW5pdGlhbFZlbG9jaXR5KGluaXRpYWxWZWxvY2l0
eSkKICAgICAsIG1faW5pdGlhbFNjcm9sbE9mZnNldChpbml0aWFsT2Zmc2V0LngoKSwgaW5pdGlh
bE9mZnNldC55KCkpCi0gICAgLCBtX3RhcmdldFNjcm9sbE9mZnNldCh0YXJnZXRPZmZzZXQueCgp
LCB0YXJnZXRPZmZzZXQueSgpKQogICAgICwgbV92aWV3cG9ydFNpemUodmlld3BvcnRTaXplKQog
ICAgICwgbV9jb250ZW50U2l6ZShjb250ZW50U2l6ZSkKIHsKIH0KIAordm9pZCBTY3JvbGxpbmdN
b21lbnR1bUNhbGN1bGF0b3I6OnNldFJldGFyZ2V0ZWRTY3JvbGxPZmZzZXQoY29uc3QgRmxvYXRT
aXplJiB0YXJnZXQpCit7CisgICAgaWYgKG1fcmV0YXJnZXRlZFNjcm9sbE9mZnNldCAmJiBtX3Jl
dGFyZ2V0ZWRTY3JvbGxPZmZzZXQgPT0gdGFyZ2V0KQorICAgICAgICByZXR1cm47CisKKyAgICBt
X3JldGFyZ2V0ZWRTY3JvbGxPZmZzZXQgPSB0YXJnZXQ7CisgICAgcmV0YXJnZXRlZFNjcm9sbE9m
ZnNldERpZENoYW5nZSgpOworfQorCitGbG9hdFNpemUgU2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxh
dG9yOjpwcmVkaWN0ZWREZXN0aW5hdGlvbk9mZnNldCgpCit7CisgICAgZmxvYXQgaW5pdGlhbE9m
ZnNldFggPSBjbGFtcFRvPGZsb2F0PihtX2luaXRpYWxTY3JvbGxPZmZzZXQud2lkdGgoKSArIHBy
b2plY3RlZEluZXJ0aWFsU2Nyb2xsRGlzdGFuY2UobV9pbml0aWFsRGVsdGEud2lkdGgoKSksIDAs
IG1fY29udGVudFNpemUud2lkdGgoKSAtIG1fdmlld3BvcnRTaXplLndpZHRoKCkpOworICAgIGZs
b2F0IGluaXRpYWxPZmZzZXRZID0gY2xhbXBUbzxmbG9hdD4obV9pbml0aWFsU2Nyb2xsT2Zmc2V0
LmhlaWdodCgpICsgcHJvamVjdGVkSW5lcnRpYWxTY3JvbGxEaXN0YW5jZShtX2luaXRpYWxEZWx0
YS5oZWlnaHQoKSksIDAsIG1fY29udGVudFNpemUuaGVpZ2h0KCkgLSBtX3ZpZXdwb3J0U2l6ZS5o
ZWlnaHQoKSk7CisgICAgcmV0dXJuIHsgaW5pdGlhbE9mZnNldFgsIGluaXRpYWxPZmZzZXRZIH07
Cit9CisKICNpZiAhSEFWRShOU1NDUk9MTElOR19GSUxURVJTKQogCi1zdGQ6OnVuaXF1ZV9wdHI8
U2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yPiBTY3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3I6
OmNyZWF0ZShjb25zdCBGbG9hdFNpemUmIHZpZXdwb3J0U2l6ZSwgY29uc3QgRmxvYXRTaXplJiBj
b250ZW50U2l6ZSwgY29uc3QgRmxvYXRQb2ludCYgaW5pdGlhbE9mZnNldCwgY29uc3QgRmxvYXRQ
b2ludCYgdGFyZ2V0T2Zmc2V0LCBjb25zdCBGbG9hdFNpemUmIGluaXRpYWxEZWx0YSwgY29uc3Qg
RmxvYXRTaXplJiBpbml0aWFsVmVsb2NpdHkpCitzdGQ6OnVuaXF1ZV9wdHI8U2Nyb2xsaW5nTW9t
ZW50dW1DYWxjdWxhdG9yPiBTY3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3I6OmNyZWF0ZShjb25z
dCBGbG9hdFNpemUmIHZpZXdwb3J0U2l6ZSwgY29uc3QgRmxvYXRTaXplJiBjb250ZW50U2l6ZSwg
Y29uc3QgRmxvYXRQb2ludCYgaW5pdGlhbE9mZnNldCwgY29uc3QgRmxvYXRTaXplJiBpbml0aWFs
RGVsdGEsIGNvbnN0IEZsb2F0U2l6ZSYgaW5pdGlhbFZlbG9jaXR5KQoreworICAgIHJldHVybiBz
dGQ6Om1ha2VfdW5pcXVlPEJhc2ljU2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yPih2aWV3cG9y
dFNpemUsIGNvbnRlbnRTaXplLCBpbml0aWFsT2Zmc2V0LCBpbml0aWFsRGVsdGEsIGluaXRpYWxW
ZWxvY2l0eSk7Cit9CisKK3ZvaWQgU2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yOjpzZXRQbGF0
Zm9ybU1vbWVudHVtU2Nyb2xsaW5nUHJlZGljdGlvbkVuYWJsZWQoYm9vbCkKIHsKLSAgICByZXR1
cm4gc3RkOjptYWtlX3VuaXF1ZTxCYXNpY1Njcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvcj4odmll
d3BvcnRTaXplLCBjb250ZW50U2l6ZSwgaW5pdGlhbE9mZnNldCwgdGFyZ2V0T2Zmc2V0LCBpbml0
aWFsRGVsdGEsIGluaXRpYWxWZWxvY2l0eSk7CiB9CiAKICNlbmRpZgogCi1CYXNpY1Njcm9sbGlu
Z01vbWVudHVtQ2FsY3VsYXRvcjo6QmFzaWNTY3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3IoY29u
c3QgRmxvYXRTaXplJiB2aWV3cG9ydFNpemUsIGNvbnN0IEZsb2F0U2l6ZSYgY29udGVudFNpemUs
IGNvbnN0IEZsb2F0UG9pbnQmIGluaXRpYWxPZmZzZXQsIGNvbnN0IEZsb2F0UG9pbnQmIHRhcmdl
dE9mZnNldCwgY29uc3QgRmxvYXRTaXplJiBpbml0aWFsRGVsdGEsIGNvbnN0IEZsb2F0U2l6ZSYg
aW5pdGlhbFZlbG9jaXR5KQotICAgIDogU2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yKHZpZXdw
b3J0U2l6ZSwgY29udGVudFNpemUsIGluaXRpYWxPZmZzZXQsIHRhcmdldE9mZnNldCwgaW5pdGlh
bERlbHRhLCBpbml0aWFsVmVsb2NpdHkpCitCYXNpY1Njcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRv
cjo6QmFzaWNTY3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3IoY29uc3QgRmxvYXRTaXplJiB2aWV3
cG9ydFNpemUsIGNvbnN0IEZsb2F0U2l6ZSYgY29udGVudFNpemUsIGNvbnN0IEZsb2F0UG9pbnQm
IGluaXRpYWxPZmZzZXQsIGNvbnN0IEZsb2F0U2l6ZSYgaW5pdGlhbERlbHRhLCBjb25zdCBGbG9h
dFNpemUmIGluaXRpYWxWZWxvY2l0eSkKKyAgICA6IFNjcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRv
cih2aWV3cG9ydFNpemUsIGNvbnRlbnRTaXplLCBpbml0aWFsT2Zmc2V0LCBpbml0aWFsRGVsdGEs
IGluaXRpYWxWZWxvY2l0eSkKIHsKIH0KIAotRmxvYXRTaXplIEJhc2ljU2Nyb2xsaW5nTW9tZW50
dW1DYWxjdWxhdG9yOjpsaW5lYXJseUludGVycG9sYXRlZE9mZnNldEF0UHJvZ3Jlc3MoZmxvYXQg
cHJvZ3Jlc3MpIGNvbnN0CitGbG9hdFNpemUgQmFzaWNTY3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0
b3I6OmxpbmVhcmx5SW50ZXJwb2xhdGVkT2Zmc2V0QXRQcm9ncmVzcyhmbG9hdCBwcm9ncmVzcykK
IHsKLSAgICByZXR1cm4gbV9pbml0aWFsU2Nyb2xsT2Zmc2V0ICsgcHJvZ3Jlc3MgKiAobV90YXJn
ZXRTY3JvbGxPZmZzZXQgLSBtX2luaXRpYWxTY3JvbGxPZmZzZXQpOworICAgIHJldHVybiBtX2lu
aXRpYWxTY3JvbGxPZmZzZXQgKyBwcm9ncmVzcyAqIChyZXRhcmdldGVkU2Nyb2xsT2Zmc2V0KCkg
LSBtX2luaXRpYWxTY3JvbGxPZmZzZXQpOwogfQogCiBGbG9hdFNpemUgQmFzaWNTY3JvbGxpbmdN
b21lbnR1bUNhbGN1bGF0b3I6OmN1YmljYWxseUludGVycG9sYXRlZE9mZnNldEF0UHJvZ3Jlc3Mo
ZmxvYXQgcHJvZ3Jlc3MpIGNvbnN0CkBAIC0xMjAsNyArMTQ4LDcgQEAgdm9pZCBCYXNpY1Njcm9s
bGluZ01vbWVudHVtQ2FsY3VsYXRvcjo6aW5pdGlhbGl6ZUludGVycG9sYXRpb25Db2VmZmljaWVu
dHNJZk5lY2UKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIEZsb2F0U2l6ZSBzdGFydFRv
RW5kVmVjdG9yID0gbV90YXJnZXRTY3JvbGxPZmZzZXQgLSBtX2luaXRpYWxTY3JvbGxPZmZzZXQ7
CisgICAgRmxvYXRTaXplIHN0YXJ0VG9FbmRWZWN0b3IgPSByZXRhcmdldGVkU2Nyb2xsT2Zmc2V0
KCkgLSBtX2luaXRpYWxTY3JvbGxPZmZzZXQ7CiAgICAgZmxvYXQgc3RhcnRUb0VuZERpc3RhbmNl
ID0gc3RhcnRUb0VuZFZlY3Rvci5kaWFnb25hbExlbmd0aCgpOwogICAgIGlmICghc3RhcnRUb0Vu
ZERpc3RhbmNlKSB7CiAgICAgICAgIC8vIFRoZSBzdGFydCBhbmQgZW5kIHBvc2l0aW9ucyBhcmUg
dGhlIHNhbWUsIHNvIHdlIHNob3VsZG4ndCB0cnkgdG8gaW50ZXJwb2xhdGUgYSBwYXRoLgpAQCAt
MTQwLDcgKzE2OCw3IEBAIHZvaWQgQmFzaWNTY3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3I6Omlu
aXRpYWxpemVJbnRlcnBvbGF0aW9uQ29lZmZpY2llbnRzSWZOZWNlCiAgICAgbV9zbmFwQW5pbWF0
aW9uQ3VydmVDb2VmZmljaWVudHNbMF0gPSBtX2luaXRpYWxTY3JvbGxPZmZzZXQ7CiAgICAgbV9z
bmFwQW5pbWF0aW9uQ3VydmVDb2VmZmljaWVudHNbMV0gPSAzICogKGNvbnRyb2xWZWN0b3IxIC0g
bV9pbml0aWFsU2Nyb2xsT2Zmc2V0KTsKICAgICBtX3NuYXBBbmltYXRpb25DdXJ2ZUNvZWZmaWNp
ZW50c1syXSA9IDMgKiAobV9pbml0aWFsU2Nyb2xsT2Zmc2V0IC0gMiAqIGNvbnRyb2xWZWN0b3Ix
ICsgY29udHJvbFZlY3RvcjIpOwotICAgIG1fc25hcEFuaW1hdGlvbkN1cnZlQ29lZmZpY2llbnRz
WzNdID0gMyAqIChjb250cm9sVmVjdG9yMSAtIGNvbnRyb2xWZWN0b3IyKSAtIG1faW5pdGlhbFNj
cm9sbE9mZnNldCArIG1fdGFyZ2V0U2Nyb2xsT2Zmc2V0OworICAgIG1fc25hcEFuaW1hdGlvbkN1
cnZlQ29lZmZpY2llbnRzWzNdID0gMyAqIChjb250cm9sVmVjdG9yMSAtIGNvbnRyb2xWZWN0b3Iy
KSAtIG1faW5pdGlhbFNjcm9sbE9mZnNldCArIHJldGFyZ2V0ZWRTY3JvbGxPZmZzZXQoKTsKICAg
ICBtX2ZvcmNlTGluZWFyQW5pbWF0aW9uQ3VydmUgPSBmYWxzZTsKIH0KIApAQCAtMTc5LDEwICsy
MDcsMTAgQEAgdm9pZCBCYXNpY1Njcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvcjo6aW5pdGlhbGl6
ZVNuYXBQcm9ncmVzc0N1cnZlKCkKICAgICBzdGF0aWMgY29uc3QgZmxvYXQgbWluU2Nyb2xsU25h
cEluaXRpYWxQcm9ncmVzcyA9IDAuMTsKICAgICBzdGF0aWMgY29uc3QgZmxvYXQgbWF4U2Nyb2xs
U25hcEluaXRpYWxQcm9ncmVzcyA9IDAuNTsKIAotICAgIEZsb2F0U2l6ZSBhbGlnbm1lbnRWZWN0
b3IgPSBtX2luaXRpYWxEZWx0YSAqIChtX3RhcmdldFNjcm9sbE9mZnNldCAtIG1faW5pdGlhbFNj
cm9sbE9mZnNldCk7CisgICAgRmxvYXRTaXplIGFsaWdubWVudFZlY3RvciA9IG1faW5pdGlhbERl
bHRhICogKHJldGFyZ2V0ZWRTY3JvbGxPZmZzZXQoKSAtIG1faW5pdGlhbFNjcm9sbE9mZnNldCk7
CiAgICAgZmxvYXQgaW5pdGlhbFByb2dyZXNzOwogICAgIGlmIChhbGlnbm1lbnRWZWN0b3Iud2lk
dGgoKSArIGFsaWdubWVudFZlY3Rvci5oZWlnaHQoKSA+IDApCi0gICAgICAgIGluaXRpYWxQcm9n
cmVzcyA9IGNsYW1wVG8obV9pbml0aWFsRGVsdGEuZGlhZ29uYWxMZW5ndGgoKSAvIChtX3Rhcmdl
dFNjcm9sbE9mZnNldCAtIG1faW5pdGlhbFNjcm9sbE9mZnNldCkuZGlhZ29uYWxMZW5ndGgoKSwg
bWluU2Nyb2xsU25hcEluaXRpYWxQcm9ncmVzcywgbWF4U2Nyb2xsU25hcEluaXRpYWxQcm9ncmVz
cyk7CisgICAgICAgIGluaXRpYWxQcm9ncmVzcyA9IGNsYW1wVG8obV9pbml0aWFsRGVsdGEuZGlh
Z29uYWxMZW5ndGgoKSAvIChyZXRhcmdldGVkU2Nyb2xsT2Zmc2V0KCkgLSBtX2luaXRpYWxTY3Jv
bGxPZmZzZXQpLmRpYWdvbmFsTGVuZ3RoKCksIG1pblNjcm9sbFNuYXBJbml0aWFsUHJvZ3Jlc3Ms
IG1heFNjcm9sbFNuYXBJbml0aWFsUHJvZ3Jlc3MpOwogICAgIGVsc2UKICAgICAgICAgaW5pdGlh
bFByb2dyZXNzID0gbWluU2Nyb2xsU25hcEluaXRpYWxQcm9ncmVzczsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9y
LmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdNb21lbnR1bUNhbGN1
bGF0b3IuaAppbmRleCBjZWQwZjJhMWY3NThkMThhZTk2ZWRmYjdmNjBmZTUwMmIwMTZlZGJmLi4z
YzdmYmE4YjA2YTViMTQ5NGRiOTQ2M2JjNTI1NWJmMjBlMmU5OTgwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3IuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdNb21lbnR1bUNhbGN1
bGF0b3IuaApAQCAtMzksMjUgKzM5LDMzIEBAIGNsYXNzIEZsb2F0U2l6ZTsKIAogY2xhc3MgU2Ny
b2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yIHsKIHB1YmxpYzoKLSAgICBTY3JvbGxpbmdNb21lbnR1
bUNhbGN1bGF0b3IoY29uc3QgRmxvYXRTaXplJiB2aWV3cG9ydFNpemUsIGNvbnN0IEZsb2F0U2l6
ZSYgY29udGVudFNpemUsIGNvbnN0IEZsb2F0UG9pbnQmIGluaXRpYWxPZmZzZXQsIGNvbnN0IEZs
b2F0UG9pbnQmIHRhcmdldE9mZnNldCwgY29uc3QgRmxvYXRTaXplJiBpbml0aWFsRGVsdGEsIGNv
bnN0IEZsb2F0U2l6ZSYgaW5pdGlhbFZlbG9jaXR5KTsKLSAgICBzdGF0aWMgc3RkOjp1bmlxdWVf
cHRyPFNjcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvcj4gY3JlYXRlKGNvbnN0IEZsb2F0U2l6ZSYg
dmlld3BvcnRTaXplLCBjb25zdCBGbG9hdFNpemUmIGNvbnRlbnRTaXplLCBjb25zdCBGbG9hdFBv
aW50JiBpbml0aWFsT2Zmc2V0LCBjb25zdCBGbG9hdFBvaW50JiB0YXJnZXRPZmZzZXQsIGNvbnN0
IEZsb2F0U2l6ZSYgaW5pdGlhbERlbHRhLCBjb25zdCBGbG9hdFNpemUmIGluaXRpYWxWZWxvY2l0
eSk7CisgICAgU2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yKGNvbnN0IEZsb2F0U2l6ZSYgdmll
d3BvcnRTaXplLCBjb25zdCBGbG9hdFNpemUmIGNvbnRlbnRTaXplLCBjb25zdCBGbG9hdFBvaW50
JiBpbml0aWFsT2Zmc2V0LCBjb25zdCBGbG9hdFNpemUmIGluaXRpYWxEZWx0YSwgY29uc3QgRmxv
YXRTaXplJiBpbml0aWFsVmVsb2NpdHkpOworICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8U2Ny
b2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yPiBjcmVhdGUoY29uc3QgRmxvYXRTaXplJiB2aWV3cG9y
dFNpemUsIGNvbnN0IEZsb2F0U2l6ZSYgY29udGVudFNpemUsIGNvbnN0IEZsb2F0UG9pbnQmIGlu
aXRpYWxPZmZzZXQsIGNvbnN0IEZsb2F0U2l6ZSYgaW5pdGlhbERlbHRhLCBjb25zdCBGbG9hdFNp
emUmIGluaXRpYWxWZWxvY2l0eSk7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIHZvaWQgc2V0
UGxhdGZvcm1Nb21lbnR1bVNjcm9sbGluZ1ByZWRpY3Rpb25FbmFibGVkKGJvb2wpOwogICAgIHZp
cnR1YWwgflNjcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvcigpIHsgfQogCiAgICAgdmlydHVhbCBG
bG9hdFBvaW50IHNjcm9sbE9mZnNldEFmdGVyRWxhcHNlZFRpbWUoU2Vjb25kcykgPSAwOwogICAg
IHZpcnR1YWwgU2Vjb25kcyBhbmltYXRpb25EdXJhdGlvbigpID0gMDsKKyAgICB2aXJ0dWFsIEZs
b2F0U2l6ZSBwcmVkaWN0ZWREZXN0aW5hdGlvbk9mZnNldCgpOworICAgIHZvaWQgc2V0UmV0YXJn
ZXRlZFNjcm9sbE9mZnNldChjb25zdCBGbG9hdFNpemUmKTsKIAogcHJvdGVjdGVkOgorICAgIGNv
bnN0IEZsb2F0U2l6ZSYgcmV0YXJnZXRlZFNjcm9sbE9mZnNldCgpIGNvbnN0IHsgcmV0dXJuIG1f
cmV0YXJnZXRlZFNjcm9sbE9mZnNldC52YWx1ZSgpOyB9CisgICAgdmlydHVhbCB2b2lkIHJldGFy
Z2V0ZWRTY3JvbGxPZmZzZXREaWRDaGFuZ2UoKSB7IH0KKwogICAgIEZsb2F0U2l6ZSBtX2luaXRp
YWxEZWx0YTsKICAgICBGbG9hdFNpemUgbV9pbml0aWFsVmVsb2NpdHk7CiAgICAgRmxvYXRTaXpl
IG1faW5pdGlhbFNjcm9sbE9mZnNldDsKLSAgICBGbG9hdFNpemUgbV90YXJnZXRTY3JvbGxPZmZz
ZXQ7CiAgICAgRmxvYXRTaXplIG1fdmlld3BvcnRTaXplOwogICAgIEZsb2F0U2l6ZSBtX2NvbnRl
bnRTaXplOworCitwcml2YXRlOgorICAgIHN0ZDo6b3B0aW9uYWw8RmxvYXRTaXplPiBtX3JldGFy
Z2V0ZWRTY3JvbGxPZmZzZXQ7CiB9OwogCiBjbGFzcyBCYXNpY1Njcm9sbGluZ01vbWVudHVtQ2Fs
Y3VsYXRvciBmaW5hbCA6IHB1YmxpYyBTY3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3IgewogcHVi
bGljOgotICAgIEJhc2ljU2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yKGNvbnN0IEZsb2F0U2l6
ZSYgdmlld3BvcnRTaXplLCBjb25zdCBGbG9hdFNpemUmIGNvbnRlbnRTaXplLCBjb25zdCBGbG9h
dFBvaW50JiBpbml0aWFsT2Zmc2V0LCBjb25zdCBGbG9hdFBvaW50JiB0YXJnZXRPZmZzZXQsIGNv
bnN0IEZsb2F0U2l6ZSYgaW5pdGlhbERlbHRhLCBjb25zdCBGbG9hdFNpemUmIGluaXRpYWxWZWxv
Y2l0eSk7CisgICAgQmFzaWNTY3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3IoY29uc3QgRmxvYXRT
aXplJiB2aWV3cG9ydFNpemUsIGNvbnN0IEZsb2F0U2l6ZSYgY29udGVudFNpemUsIGNvbnN0IEZs
b2F0UG9pbnQmIGluaXRpYWxPZmZzZXQsIGNvbnN0IEZsb2F0U2l6ZSYgaW5pdGlhbERlbHRhLCBj
b25zdCBGbG9hdFNpemUmIGluaXRpYWxWZWxvY2l0eSk7CiAKIHByaXZhdGU6CiAgICAgRmxvYXRQ
b2ludCBzY3JvbGxPZmZzZXRBZnRlckVsYXBzZWRUaW1lKFNlY29uZHMpIGZpbmFsOwpAQCAtNjUs
NyArNzMsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgaW5pdGlhbGl6ZUludGVycG9sYXRpb25Db2Vm
ZmljaWVudHNJZk5lY2Vzc2FyeSgpOwogICAgIHZvaWQgaW5pdGlhbGl6ZVNuYXBQcm9ncmVzc0N1
cnZlKCk7CiAgICAgZmxvYXQgYW5pbWF0aW9uUHJvZ3Jlc3NBZnRlckVsYXBzZWRUaW1lKFNlY29u
ZHMpIGNvbnN0OwotICAgIEZsb2F0U2l6ZSBsaW5lYXJseUludGVycG9sYXRlZE9mZnNldEF0UHJv
Z3Jlc3MoZmxvYXQgcHJvZ3Jlc3MpIGNvbnN0OworICAgIEZsb2F0U2l6ZSBsaW5lYXJseUludGVy
cG9sYXRlZE9mZnNldEF0UHJvZ3Jlc3MoZmxvYXQgcHJvZ3Jlc3MpOwogICAgIEZsb2F0U2l6ZSBj
dWJpY2FsbHlJbnRlcnBvbGF0ZWRPZmZzZXRBdFByb2dyZXNzKGZsb2F0IHByb2dyZXNzKSBjb25z
dDsKIAogICAgIGZsb2F0IG1fc25hcEFuaW1hdGlvbkN1cnZlTWFnbml0dWRlIHsgMCB9OwpAQCAt
NzMsNiArODEsNyBAQCBwcml2YXRlOgogICAgIEZsb2F0U2l6ZSBtX3NuYXBBbmltYXRpb25DdXJ2
ZUNvZWZmaWNpZW50c1s0XSB7IH07CiAgICAgYm9vbCBtX2ZvcmNlTGluZWFyQW5pbWF0aW9uQ3Vy
dmUgeyBmYWxzZSB9OwogICAgIGJvb2wgbV9tb21lbnR1bUNhbGN1bGF0b3JSZXF1aXJlc0luaXRp
YWxpemF0aW9uIHsgdHJ1ZSB9OworICAgIHN0ZDo6b3B0aW9uYWw8RmxvYXRTaXplPiBtX3ByZWRp
Y3RlZERlc3RpbmF0aW9uT2Zmc2V0OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nU3RhdGVTY3Jv
bGxpbmdOb2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1N0
YXRlU2Nyb2xsaW5nTm9kZS5jcHAKaW5kZXggYTVjZmExMmNjZWM2ODJlM2I5MmI2ZDlmZjgxYTMw
OWEwMTcyZWU1NS4uYjNkZTI2MzI0NGNhOGMyMTgyMDAyYmQ2MmQ0MWY1YzM4ZDhhODgzOCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nU3RhdGVTY3Jv
bGxpbmdOb2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxp
bmdTdGF0ZVNjcm9sbGluZ05vZGUuY3BwCkBAIC00Nyw4ICs0Nyw3IEBAIFNjcm9sbGluZ1N0YXRl
U2Nyb2xsaW5nTm9kZTo6U2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlKGNvbnN0IFNjcm9sbGlu
Z1N0YXRlU2NyCiAgICAgLCBtX3JlcXVlc3RlZFNjcm9sbFBvc2l0aW9uKHN0YXRlTm9kZS5yZXF1
ZXN0ZWRTY3JvbGxQb3NpdGlvbigpKQogICAgICwgbV9zY3JvbGxPcmlnaW4oc3RhdGVOb2RlLnNj
cm9sbE9yaWdpbigpKQogI2lmIEVOQUJMRShDU1NfU0NST0xMX1NOQVApCi0gICAgLCBtX2hvcml6
b250YWxTbmFwT2Zmc2V0cyhzdGF0ZU5vZGUuaG9yaXpvbnRhbFNuYXBPZmZzZXRzKCkpCi0gICAg
LCBtX3ZlcnRpY2FsU25hcE9mZnNldHMoc3RhdGVOb2RlLnZlcnRpY2FsU25hcE9mZnNldHMoKSkK
KyAgICAsIG1fc25hcE9mZnNldHNJbmZvKHN0YXRlTm9kZS5tX3NuYXBPZmZzZXRzSW5mbykKICNl
bmRpZgogICAgICwgbV9zY3JvbGxhYmxlQXJlYVBhcmFtZXRlcnMoc3RhdGVOb2RlLnNjcm9sbGFi
bGVBcmVhUGFyYW1ldGVycygpKQogICAgICwgbV9yZXF1ZXN0ZWRTY3JvbGxQb3NpdGlvblJlcHJl
c2VudHNQcm9ncmFtbWF0aWNTY3JvbGwoc3RhdGVOb2RlLnJlcXVlc3RlZFNjcm9sbFBvc2l0aW9u
UmVwcmVzZW50c1Byb2dyYW1tYXRpY1Njcm9sbCgpKQpAQCAtMTA4LDIyICsxMDcsNDAgQEAgdm9p
ZCBTY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGU6OnNldFNjcm9sbE9yaWdpbihjb25zdCBJbnRQ
b2ludCYgc2Nyb2xsT3JpZ2luKQogI2lmIEVOQUJMRShDU1NfU0NST0xMX1NOQVApCiB2b2lkIFNj
cm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZTo6c2V0SG9yaXpvbnRhbFNuYXBPZmZzZXRzKGNvbnN0
IFZlY3RvcjxmbG9hdD4mIHNuYXBPZmZzZXRzKQogewotICAgIGlmIChtX2hvcml6b250YWxTbmFw
T2Zmc2V0cyA9PSBzbmFwT2Zmc2V0cykKKyAgICBpZiAobV9zbmFwT2Zmc2V0c0luZm8uaG9yaXpv
bnRhbFNuYXBPZmZzZXRzID09IHNuYXBPZmZzZXRzKQogICAgICAgICByZXR1cm47CiAKLSAgICBt
X2hvcml6b250YWxTbmFwT2Zmc2V0cyA9IHNuYXBPZmZzZXRzOworICAgIG1fc25hcE9mZnNldHNJ
bmZvLmhvcml6b250YWxTbmFwT2Zmc2V0cyA9IHNuYXBPZmZzZXRzOwogICAgIHNldFByb3BlcnR5
Q2hhbmdlZChIb3Jpem9udGFsU25hcE9mZnNldHMpOwogfQogCiB2b2lkIFNjcm9sbGluZ1N0YXRl
U2Nyb2xsaW5nTm9kZTo6c2V0VmVydGljYWxTbmFwT2Zmc2V0cyhjb25zdCBWZWN0b3I8ZmxvYXQ+
JiBzbmFwT2Zmc2V0cykKIHsKLSAgICBpZiAobV92ZXJ0aWNhbFNuYXBPZmZzZXRzID09IHNuYXBP
ZmZzZXRzKQorICAgIGlmIChtX3NuYXBPZmZzZXRzSW5mby52ZXJ0aWNhbFNuYXBPZmZzZXRzID09
IHNuYXBPZmZzZXRzKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX3ZlcnRpY2FsU25hcE9mZnNl
dHMgPSBzbmFwT2Zmc2V0czsKKyAgICBtX3NuYXBPZmZzZXRzSW5mby52ZXJ0aWNhbFNuYXBPZmZz
ZXRzID0gc25hcE9mZnNldHM7CiAgICAgc2V0UHJvcGVydHlDaGFuZ2VkKFZlcnRpY2FsU25hcE9m
ZnNldHMpOwogfQogCit2b2lkIFNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZTo6c2V0SG9yaXpv
bnRhbFNuYXBPZmZzZXRSYW5nZXMoY29uc3QgVmVjdG9yPFNjcm9sbE9mZnNldFJhbmdlPGZsb2F0
Pj4mIHNjcm9sbE9mZnNldFJhbmdlcykKK3sKKyAgICBpZiAobV9zbmFwT2Zmc2V0c0luZm8uaG9y
aXpvbnRhbFNuYXBPZmZzZXRSYW5nZXMgPT0gc2Nyb2xsT2Zmc2V0UmFuZ2VzKQorICAgICAgICBy
ZXR1cm47CisKKyAgICBtX3NuYXBPZmZzZXRzSW5mby5ob3Jpem9udGFsU25hcE9mZnNldFJhbmdl
cyA9IHNjcm9sbE9mZnNldFJhbmdlczsKKyAgICBzZXRQcm9wZXJ0eUNoYW5nZWQoSG9yaXpvbnRh
bFNuYXBPZmZzZXRSYW5nZXMpOworfQorCit2b2lkIFNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9k
ZTo6c2V0VmVydGljYWxTbmFwT2Zmc2V0UmFuZ2VzKGNvbnN0IFZlY3RvcjxTY3JvbGxPZmZzZXRS
YW5nZTxmbG9hdD4+JiBzY3JvbGxPZmZzZXRSYW5nZXMpCit7CisgICAgaWYgKG1fc25hcE9mZnNl
dHNJbmZvLnZlcnRpY2FsU25hcE9mZnNldFJhbmdlcyA9PSBzY3JvbGxPZmZzZXRSYW5nZXMpCisg
ICAgICAgIHJldHVybjsKKworICAgIG1fc25hcE9mZnNldHNJbmZvLnZlcnRpY2FsU25hcE9mZnNl
dFJhbmdlcyA9IHNjcm9sbE9mZnNldFJhbmdlczsKKyAgICBzZXRQcm9wZXJ0eUNoYW5nZWQoVmVy
dGljYWxTbmFwT2Zmc2V0UmFuZ2VzKTsKK30KKwogdm9pZCBTY3JvbGxpbmdTdGF0ZVNjcm9sbGlu
Z05vZGU6OnNldEN1cnJlbnRIb3Jpem9udGFsU25hcFBvaW50SW5kZXgodW5zaWduZWQgaW5kZXgp
CiB7CiAgICAgaWYgKG1fY3VycmVudEhvcml6b250YWxTbmFwUG9pbnRJbmRleCA9PSBpbmRleCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1N0YXRl
U2Nyb2xsaW5nTm9kZS5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5n
U3RhdGVTY3JvbGxpbmdOb2RlLmgKaW5kZXggZTgyMzExNjE3NDQxOWM0ZTkxOWZmZDNlM2ZiM2Zk
OTNmZTE1NDUyYy4uNjI4YzM0ZjdmOGY2NTVjZDdmZWQwMTk0NjUwMDRjMjhjNDIyYjQ3YiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nU3RhdGVTY3Jv
bGxpbmdOb2RlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5n
U3RhdGVTY3JvbGxpbmdOb2RlLmgKQEAgLTI3LDYgKzI3LDcgQEAKIAogI2lmIEVOQUJMRShBU1lO
Q19TQ1JPTExJTkcpIHx8IFVTRShDT09SRElOQVRFRF9HUkFQSElDUykKIAorI2luY2x1ZGUgIlNj
cm9sbFNuYXBPZmZzZXRzSW5mby5oIgogI2luY2x1ZGUgIlNjcm9sbFR5cGVzLmgiCiAjaW5jbHVk
ZSAiU2Nyb2xsaW5nQ29vcmRpbmF0b3IuaCIKICNpbmNsdWRlICJTY3JvbGxpbmdTdGF0ZU5vZGUu
aCIKQEAgLTQ5LDYgKzUwLDggQEAgcHVibGljOgogI2lmIEVOQUJMRShDU1NfU0NST0xMX1NOQVAp
CiAgICAgICAgIEhvcml6b250YWxTbmFwT2Zmc2V0cywKICAgICAgICAgVmVydGljYWxTbmFwT2Zm
c2V0cywKKyAgICAgICAgSG9yaXpvbnRhbFNuYXBPZmZzZXRSYW5nZXMsCisgICAgICAgIFZlcnRp
Y2FsU25hcE9mZnNldFJhbmdlcywKICAgICAgICAgQ3VycmVudEhvcml6b250YWxTbmFwT2Zmc2V0
SW5kZXgsCiAgICAgICAgIEN1cnJlbnRWZXJ0aWNhbFNuYXBPZmZzZXRJbmRleCwKICNlbmRpZgpA
QCAtNzEsMTIgKzc0LDE4IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldFNj
cm9sbE9yaWdpbihjb25zdCBJbnRQb2ludCYpOwogCiAjaWYgRU5BQkxFKENTU19TQ1JPTExfU05B
UCkKLSAgICBjb25zdCBWZWN0b3I8ZmxvYXQ+JiBob3Jpem9udGFsU25hcE9mZnNldHMoKSBjb25z
dCB7IHJldHVybiBtX2hvcml6b250YWxTbmFwT2Zmc2V0czsgfQorICAgIGNvbnN0IFZlY3Rvcjxm
bG9hdD4mIGhvcml6b250YWxTbmFwT2Zmc2V0cygpIGNvbnN0IHsgcmV0dXJuIG1fc25hcE9mZnNl
dHNJbmZvLmhvcml6b250YWxTbmFwT2Zmc2V0czsgfQogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQg
c2V0SG9yaXpvbnRhbFNuYXBPZmZzZXRzKGNvbnN0IFZlY3RvcjxmbG9hdD4mKTsKIAotICAgIGNv
bnN0IFZlY3RvcjxmbG9hdD4mIHZlcnRpY2FsU25hcE9mZnNldHMoKSBjb25zdCB7IHJldHVybiBt
X3ZlcnRpY2FsU25hcE9mZnNldHM7IH0KKyAgICBjb25zdCBWZWN0b3I8ZmxvYXQ+JiB2ZXJ0aWNh
bFNuYXBPZmZzZXRzKCkgY29uc3QgeyByZXR1cm4gbV9zbmFwT2Zmc2V0c0luZm8udmVydGljYWxT
bmFwT2Zmc2V0czsgfQogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0VmVydGljYWxTbmFwT2Zm
c2V0cyhjb25zdCBWZWN0b3I8ZmxvYXQ+Jik7CiAKKyAgICBjb25zdCBWZWN0b3I8U2Nyb2xsT2Zm
c2V0UmFuZ2U8ZmxvYXQ+PiYgaG9yaXpvbnRhbFNuYXBPZmZzZXRSYW5nZXMoKSBjb25zdCB7IHJl
dHVybiBtX3NuYXBPZmZzZXRzSW5mby5ob3Jpem9udGFsU25hcE9mZnNldFJhbmdlczsgfQorICAg
IFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0SG9yaXpvbnRhbFNuYXBPZmZzZXRSYW5nZXMoY29uc3Qg
VmVjdG9yPFNjcm9sbE9mZnNldFJhbmdlPGZsb2F0Pj4mKTsKKworICAgIGNvbnN0IFZlY3RvcjxT
Y3JvbGxPZmZzZXRSYW5nZTxmbG9hdD4+JiB2ZXJ0aWNhbFNuYXBPZmZzZXRSYW5nZXMoKSBjb25z
dCB7IHJldHVybiBtX3NuYXBPZmZzZXRzSW5mby52ZXJ0aWNhbFNuYXBPZmZzZXRSYW5nZXM7IH0K
KyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldFZlcnRpY2FsU25hcE9mZnNldFJhbmdlcyhjb25z
dCBWZWN0b3I8U2Nyb2xsT2Zmc2V0UmFuZ2U8ZmxvYXQ+PiYpOworCiAgICAgdW5zaWduZWQgY3Vy
cmVudEhvcml6b250YWxTbmFwUG9pbnRJbmRleCgpIGNvbnN0IHsgcmV0dXJuIG1fY3VycmVudEhv
cml6b250YWxTbmFwUG9pbnRJbmRleDsgfQogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0Q3Vy
cmVudEhvcml6b250YWxTbmFwUG9pbnRJbmRleCh1bnNpZ25lZCk7CiAKQEAgLTEwOCw4ICsxMTcs
NyBAQCBwcml2YXRlOgogICAgIEZsb2F0UG9pbnQgbV9yZXF1ZXN0ZWRTY3JvbGxQb3NpdGlvbjsK
ICAgICBJbnRQb2ludCBtX3Njcm9sbE9yaWdpbjsKICNpZiBFTkFCTEUoQ1NTX1NDUk9MTF9TTkFQ
KQotICAgIFZlY3RvcjxmbG9hdD4gbV9ob3Jpem9udGFsU25hcE9mZnNldHM7Ci0gICAgVmVjdG9y
PGZsb2F0PiBtX3ZlcnRpY2FsU25hcE9mZnNldHM7CisgICAgU2Nyb2xsU25hcE9mZnNldHNJbmZv
PGZsb2F0PiBtX3NuYXBPZmZzZXRzSW5mbzsKICAgICB1bnNpZ25lZCBtX2N1cnJlbnRIb3Jpem9u
dGFsU25hcFBvaW50SW5kZXggeyAwIH07CiAgICAgdW5zaWduZWQgbV9jdXJyZW50VmVydGljYWxT
bmFwUG9pbnRJbmRleCB7IDAgfTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGUuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGUuY3BwCmluZGV4
IDg0MDI5ZmJkZjg1ZjY1ODFkMGZjZDE1MzhkOWM3YmZlZWNjYjg4ZDguLjE5NzU0ZjVjMjUzMmE4
M2UxMTJhZDI5MTYxYWM5NGQwZTVkZTI1MGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZS5jcHAKQEAg
LTcwLDEwICs3MCwxNiBAQCB2b2lkIFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlOjpjb21taXRT
dGF0ZUJlZm9yZUNoaWxkcmVuKGNvbnN0IFNjcm9sbGluZ1N0YXRlTgogCiAjaWYgRU5BQkxFKENT
U19TQ1JPTExfU05BUCkKICAgICBpZiAoc3RhdGUuaGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9sbGlu
Z1N0YXRlU2Nyb2xsaW5nTm9kZTo6SG9yaXpvbnRhbFNuYXBPZmZzZXRzKSkKLSAgICAgICAgbV9o
b3Jpem9udGFsU25hcE9mZnNldHMgPSBzdGF0ZS5ob3Jpem9udGFsU25hcE9mZnNldHMoKTsKKyAg
ICAgICAgbV9zbmFwT2Zmc2V0c0luZm8uaG9yaXpvbnRhbFNuYXBPZmZzZXRzID0gc3RhdGUuaG9y
aXpvbnRhbFNuYXBPZmZzZXRzKCk7CiAKICAgICBpZiAoc3RhdGUuaGFzQ2hhbmdlZFByb3BlcnR5
KFNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZTo6VmVydGljYWxTbmFwT2Zmc2V0cykpCi0gICAg
ICAgIG1fdmVydGljYWxTbmFwT2Zmc2V0cyA9IHN0YXRlLnZlcnRpY2FsU25hcE9mZnNldHMoKTsK
KyAgICAgICAgbV9zbmFwT2Zmc2V0c0luZm8udmVydGljYWxTbmFwT2Zmc2V0cyA9IHN0YXRlLnZl
cnRpY2FsU25hcE9mZnNldHMoKTsKKworICAgIGlmIChzdGF0ZS5oYXNDaGFuZ2VkUHJvcGVydHko
U2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlOjpIb3Jpem9udGFsU25hcE9mZnNldFJhbmdlcykp
CisgICAgICAgIG1fc25hcE9mZnNldHNJbmZvLmhvcml6b250YWxTbmFwT2Zmc2V0UmFuZ2VzID0g
c3RhdGUuaG9yaXpvbnRhbFNuYXBPZmZzZXRSYW5nZXMoKTsKKworICAgIGlmIChzdGF0ZS5oYXND
aGFuZ2VkUHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlOjpWZXJ0aWNhbFNuYXBP
ZmZzZXRSYW5nZXMpKQorICAgICAgICBtX3NuYXBPZmZzZXRzSW5mby52ZXJ0aWNhbFNuYXBPZmZz
ZXRSYW5nZXMgPSBzdGF0ZS52ZXJ0aWNhbFNuYXBPZmZzZXRSYW5nZXMoKTsKIAogICAgIGlmIChz
dGF0ZS5oYXNDaGFuZ2VkUHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlOjpDdXJy
ZW50SG9yaXpvbnRhbFNuYXBPZmZzZXRJbmRleCkpCiAgICAgICAgIG1fY3VycmVudEhvcml6b250
YWxTbmFwUG9pbnRJbmRleCA9IHN0YXRlLmN1cnJlbnRIb3Jpem9udGFsU25hcFBvaW50SW5kZXgo
KTsKQEAgLTEzOSwxNCArMTQ1LDE0IEBAIHZvaWQgU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGU6
OmR1bXBQcm9wZXJ0aWVzKFRleHRTdHJlYW0mIHRzLCBTY3JvbGxpbmdTdGF0ZVRyCiAgICAgICAg
IHRzLmR1bXBQcm9wZXJ0eSgic2Nyb2xsYWJsZSBhcmVhIHNpemUiLCBtX3Njcm9sbE9yaWdpbik7
CiAKICNpZiBFTkFCTEUoQ1NTX1NDUk9MTF9TTkFQKQotICAgIGlmIChtX2hvcml6b250YWxTbmFw
T2Zmc2V0cy5zaXplKCkpCi0gICAgICAgIHRzLmR1bXBQcm9wZXJ0eSgiaG9yaXpvbnRhbCBzbmFw
IG9mZnNldHMiLCBtX2hvcml6b250YWxTbmFwT2Zmc2V0cyk7CisgICAgaWYgKG1fc25hcE9mZnNl
dHNJbmZvLmhvcml6b250YWxTbmFwT2Zmc2V0cy5zaXplKCkpCisgICAgICAgIHRzLmR1bXBQcm9w
ZXJ0eSgiaG9yaXpvbnRhbCBzbmFwIG9mZnNldHMiLCBtX3NuYXBPZmZzZXRzSW5mby5ob3Jpem9u
dGFsU25hcE9mZnNldHMpOwogCi0gICAgaWYgKG1fdmVydGljYWxTbmFwT2Zmc2V0cy5zaXplKCkp
Ci0gICAgICAgIHRzLmR1bXBQcm9wZXJ0eSgiaG9yaXpvbnRhbCBzbmFwIG9mZnNldHMiLCBtX3Zl
cnRpY2FsU25hcE9mZnNldHMpOworICAgIGlmIChtX3NuYXBPZmZzZXRzSW5mby52ZXJ0aWNhbFNu
YXBPZmZzZXRzLnNpemUoKSkKKyAgICAgICAgdHMuZHVtcFByb3BlcnR5KCJob3Jpem9udGFsIHNu
YXAgb2Zmc2V0cyIsIG1fc25hcE9mZnNldHNJbmZvLnZlcnRpY2FsU25hcE9mZnNldHMpOwogCiAg
ICAgaWYgKG1fY3VycmVudEhvcml6b250YWxTbmFwUG9pbnRJbmRleCkKLSAgICAgICAgdHMuZHVt
cFByb3BlcnR5KCJjdXJyZW50IGhvcml6b250YWwgc25hcCBwb2ludCBpbmRleCIsIG1fdmVydGlj
YWxTbmFwT2Zmc2V0cyk7CisgICAgICAgIHRzLmR1bXBQcm9wZXJ0eSgiY3VycmVudCBob3Jpem9u
dGFsIHNuYXAgcG9pbnQgaW5kZXgiLCBtX2N1cnJlbnRIb3Jpem9udGFsU25hcFBvaW50SW5kZXgp
OwogCiAgICAgaWYgKG1fY3VycmVudFZlcnRpY2FsU25hcFBvaW50SW5kZXgpCiAgICAgICAgIHRz
LmR1bXBQcm9wZXJ0eSgiY3VycmVudCB2ZXJ0aWNhbCBzbmFwIHBvaW50IGluZGV4IiwgbV9jdXJy
ZW50VmVydGljYWxTbmFwUG9pbnRJbmRleCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZS5oIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGUuaAppbmRleCBmYTgz
MGIyMWVkNTFhOTI0MGM2MGZjMjYxMTNkOTNhMTAyNjE2ZGRjLi4zNTk0YjEwODZlY2JhMzc4YjUx
NmJkMjhkNTdhYmM0YjIzMGRkNzI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Nj
cm9sbGluZy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlLmgKQEAgLTI4LDYgKzI4
LDcgQEAKICNpZiBFTkFCTEUoQVNZTkNfU0NST0xMSU5HKQogCiAjaW5jbHVkZSAiSW50UmVjdC5o
IgorI2luY2x1ZGUgIlNjcm9sbFNuYXBPZmZzZXRzSW5mby5oIgogI2luY2x1ZGUgIlNjcm9sbFR5
cGVzLmgiCiAjaW5jbHVkZSAiU2Nyb2xsaW5nQ29vcmRpbmF0b3IuaCIKICNpbmNsdWRlICJTY3Jv
bGxpbmdUcmVlTm9kZS5oIgpAQCAtNTYsOCArNTcsMTAgQEAgcHVibGljOgogICAgIHZpcnR1YWwg
RmxvYXRQb2ludCBzY3JvbGxQb3NpdGlvbigpIGNvbnN0ID0gMDsKIAogI2lmIEVOQUJMRShDU1Nf
U0NST0xMX1NOQVApCi0gICAgY29uc3QgVmVjdG9yPGZsb2F0PiYgaG9yaXpvbnRhbFNuYXBPZmZz
ZXRzKCkgY29uc3QgeyByZXR1cm4gbV9ob3Jpem9udGFsU25hcE9mZnNldHM7IH0KLSAgICBjb25z
dCBWZWN0b3I8ZmxvYXQ+JiB2ZXJ0aWNhbFNuYXBPZmZzZXRzKCkgY29uc3QgeyByZXR1cm4gbV92
ZXJ0aWNhbFNuYXBPZmZzZXRzOyB9CisgICAgY29uc3QgVmVjdG9yPGZsb2F0PiYgaG9yaXpvbnRh
bFNuYXBPZmZzZXRzKCkgY29uc3QgeyByZXR1cm4gbV9zbmFwT2Zmc2V0c0luZm8uaG9yaXpvbnRh
bFNuYXBPZmZzZXRzOyB9CisgICAgY29uc3QgVmVjdG9yPGZsb2F0PiYgdmVydGljYWxTbmFwT2Zm
c2V0cygpIGNvbnN0IHsgcmV0dXJuIG1fc25hcE9mZnNldHNJbmZvLnZlcnRpY2FsU25hcE9mZnNl
dHM7IH0KKyAgICBjb25zdCBWZWN0b3I8U2Nyb2xsT2Zmc2V0UmFuZ2U8ZmxvYXQ+PiYgaG9yaXpv
bnRhbFNuYXBPZmZzZXRSYW5nZXMoKSBjb25zdCB7IHJldHVybiBtX3NuYXBPZmZzZXRzSW5mby5o
b3Jpem9udGFsU25hcE9mZnNldFJhbmdlczsgfQorICAgIGNvbnN0IFZlY3RvcjxTY3JvbGxPZmZz
ZXRSYW5nZTxmbG9hdD4+JiB2ZXJ0aWNhbFNuYXBPZmZzZXRSYW5nZXMoKSBjb25zdCB7IHJldHVy
biBtX3NuYXBPZmZzZXRzSW5mby52ZXJ0aWNhbFNuYXBPZmZzZXRSYW5nZXM7IH0KICAgICB1bnNp
Z25lZCBjdXJyZW50SG9yaXpvbnRhbFNuYXBQb2ludEluZGV4KCkgY29uc3QgeyByZXR1cm4gbV9j
dXJyZW50SG9yaXpvbnRhbFNuYXBQb2ludEluZGV4OyB9CiAgICAgdW5zaWduZWQgY3VycmVudFZl
cnRpY2FsU25hcFBvaW50SW5kZXgoKSBjb25zdCB7IHJldHVybiBtX2N1cnJlbnRWZXJ0aWNhbFNu
YXBQb2ludEluZGV4OyB9CiAgICAgdm9pZCBzZXRDdXJyZW50SG9yaXpvbnRhbFNuYXBQb2ludElu
ZGV4KHVuc2lnbmVkIGluZGV4KSB7IG1fY3VycmVudEhvcml6b250YWxTbmFwUG9pbnRJbmRleCA9
IGluZGV4OyB9CkBAIC0xMDIsOCArMTA1LDcgQEAgcHJpdmF0ZToKICAgICBGbG9hdFBvaW50IG1f
bGFzdENvbW1pdHRlZFNjcm9sbFBvc2l0aW9uOwogICAgIEludFBvaW50IG1fc2Nyb2xsT3JpZ2lu
OwogI2lmIEVOQUJMRShDU1NfU0NST0xMX1NOQVApCi0gICAgVmVjdG9yPGZsb2F0PiBtX2hvcml6
b250YWxTbmFwT2Zmc2V0czsKLSAgICBWZWN0b3I8ZmxvYXQ+IG1fdmVydGljYWxTbmFwT2Zmc2V0
czsKKyAgICBTY3JvbGxTbmFwT2Zmc2V0c0luZm88ZmxvYXQ+IG1fc25hcE9mZnNldHNJbmZvOwog
ICAgIHVuc2lnbmVkIG1fY3VycmVudEhvcml6b250YWxTbmFwUG9pbnRJbmRleCB7IDAgfTsKICAg
ICB1bnNpZ25lZCBtX2N1cnJlbnRWZXJ0aWNhbFNuYXBQb2ludEluZGV4IHsgMCB9OwogI2VuZGlm
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5n
TW9tZW50dW1DYWxjdWxhdG9yTWFjLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9t
YWMvU2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yTWFjLmgKaW5kZXggNDU2YTExM2JhODAzOGJm
ZjM1ODEwNGY3Njk1ZGI3Y2FlYjU0NTdkMS4uYzkwNTAzYzllM2IwOThjYTQ0ZjU5MGZjYmUwY2Ex
NGU1NDI3MDM4OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbWFj
L1Njcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvck1hYy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2Uvc2Nyb2xsaW5nL21hYy9TY3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3JNYWMuaApAQCAtMzYs
MTUgKzM2LDE5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgU2Nyb2xsaW5nTW9tZW50
dW1DYWxjdWxhdG9yTWFjIGZpbmFsIDogcHVibGljIFNjcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRv
ciB7CiBwdWJsaWM6Ci0gICAgU2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yTWFjKGNvbnN0IEZs
b2F0U2l6ZSYgdmlld3BvcnRTaXplLCBjb25zdCBGbG9hdFNpemUmIGNvbnRlbnRTaXplLCBjb25z
dCBGbG9hdFBvaW50JiBpbml0aWFsT2Zmc2V0LCBjb25zdCBGbG9hdFBvaW50JiB0YXJnZXRPZmZz
ZXQsIGNvbnN0IEZsb2F0U2l6ZSYgaW5pdGlhbERlbHRhLCBjb25zdCBGbG9hdFNpemUmIGluaXRp
YWxWZWxvY2l0eSk7CisgICAgU2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yTWFjKGNvbnN0IEZs
b2F0U2l6ZSYgdmlld3BvcnRTaXplLCBjb25zdCBGbG9hdFNpemUmIGNvbnRlbnRTaXplLCBjb25z
dCBGbG9hdFBvaW50JiBpbml0aWFsT2Zmc2V0LCBjb25zdCBGbG9hdFNpemUmIGluaXRpYWxEZWx0
YSwgY29uc3QgRmxvYXRTaXplJiBpbml0aWFsVmVsb2NpdHkpOwogCiBwcml2YXRlOgogICAgIEZs
b2F0UG9pbnQgc2Nyb2xsT2Zmc2V0QWZ0ZXJFbGFwc2VkVGltZShTZWNvbmRzKSBmaW5hbDsKICAg
ICBTZWNvbmRzIGFuaW1hdGlvbkR1cmF0aW9uKCkgZmluYWw7CisgICAgRmxvYXRTaXplIHByZWRp
Y3RlZERlc3RpbmF0aW9uT2Zmc2V0KCkgZmluYWw7CisgICAgdm9pZCByZXRhcmdldGVkU2Nyb2xs
T2Zmc2V0RGlkQ2hhbmdlKCkgZmluYWw7CiAgICAgX05TU2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxh
dG9yICplbnN1cmVQbGF0Zm9ybU1vbWVudHVtQ2FsY3VsYXRvcigpOworICAgIGJvb2wgcmVxdWly
ZXNNb21lbnR1bVNjcm9sbGluZygpOwogCiAgICAgUmV0YWluUHRyPF9OU1Njcm9sbGluZ01vbWVu
dHVtQ2FsY3VsYXRvcj4gbV9wbGF0Zm9ybU1vbWVudHVtQ2FsY3VsYXRvcjsKLSAgICBib29sIG1f
cmVxdWlyZXNNb21lbnR1bVNjcm9sbGluZyB7IHRydWUgfTsKKyAgICBzdGQ6Om9wdGlvbmFsPGJv
b2w+IG1fcmVxdWlyZXNNb21lbnR1bVNjcm9sbGluZzsKKyAgICBGbG9hdFBvaW50IG1faW5pdGlh
bERlc3RpbmF0aW9uT3JpZ2luOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGluZ01vbWVudHVt
Q2FsY3VsYXRvck1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL21hYy9TY3Jv
bGxpbmdNb21lbnR1bUNhbGN1bGF0b3JNYWMubW0KaW5kZXggZjcyNDU1ZWFjNzk2NzZlOWM4ZTQz
MDAyMjhjMDM5NGI1ZDYxYjBlMS4uMWY4NTFkZGQ3N2VlMjYzZDI1MzkxZGQ1Yzg1OTllYWM3ZjQ5
N2I3ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9s
bGluZ01vbWVudHVtQ2FsY3VsYXRvck1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Nj
cm9sbGluZy9tYWMvU2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yTWFjLm1tCkBAIC0zMiwzMyAr
MzIsNjQgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1zdGQ6OnVuaXF1ZV9wdHI8U2Nyb2xs
aW5nTW9tZW50dW1DYWxjdWxhdG9yPiBTY3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3I6OmNyZWF0
ZShjb25zdCBGbG9hdFNpemUmIHZpZXdwb3J0U2l6ZSwgY29uc3QgRmxvYXRTaXplJiBjb250ZW50
U2l6ZSwgY29uc3QgRmxvYXRQb2ludCYgaW5pdGlhbE9mZnNldCwgY29uc3QgRmxvYXRQb2ludCYg
dGFyZ2V0T2Zmc2V0LCBjb25zdCBGbG9hdFNpemUmIGluaXRpYWxEZWx0YSwgY29uc3QgRmxvYXRT
aXplJiBpbml0aWFsVmVsb2NpdHkpCitzdGF0aWMgYm9vbCBnRW5hYmxlUGxhdGZvcm1Nb21lbnR1
bVNjcm9sbGluZ1ByZWRpY3Rpb24gPSB0cnVlOworCitzdGQ6OnVuaXF1ZV9wdHI8U2Nyb2xsaW5n
TW9tZW50dW1DYWxjdWxhdG9yPiBTY3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3I6OmNyZWF0ZShj
b25zdCBGbG9hdFNpemUmIHZpZXdwb3J0U2l6ZSwgY29uc3QgRmxvYXRTaXplJiBjb250ZW50U2l6
ZSwgY29uc3QgRmxvYXRQb2ludCYgaW5pdGlhbE9mZnNldCwgY29uc3QgRmxvYXRTaXplJiBpbml0
aWFsRGVsdGEsIGNvbnN0IEZsb2F0U2l6ZSYgaW5pdGlhbFZlbG9jaXR5KQogewotICAgIHJldHVy
biBzdGQ6Om1ha2VfdW5pcXVlPFNjcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvck1hYz4odmlld3Bv
cnRTaXplLCBjb250ZW50U2l6ZSwgaW5pdGlhbE9mZnNldCwgdGFyZ2V0T2Zmc2V0LCBpbml0aWFs
RGVsdGEsIGluaXRpYWxWZWxvY2l0eSk7CisgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8U2Ny
b2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yTWFjPih2aWV3cG9ydFNpemUsIGNvbnRlbnRTaXplLCBp
bml0aWFsT2Zmc2V0LCBpbml0aWFsRGVsdGEsIGluaXRpYWxWZWxvY2l0eSk7CiB9CiAKLVNjcm9s
bGluZ01vbWVudHVtQ2FsY3VsYXRvck1hYzo6U2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yTWFj
KGNvbnN0IEZsb2F0U2l6ZSYgdmlld3BvcnRTaXplLCBjb25zdCBGbG9hdFNpemUmIGNvbnRlbnRT
aXplLCBjb25zdCBGbG9hdFBvaW50JiBpbml0aWFsT2Zmc2V0LCBjb25zdCBGbG9hdFBvaW50JiB0
YXJnZXRPZmZzZXQsIGNvbnN0IEZsb2F0U2l6ZSYgaW5pdGlhbERlbHRhLCBjb25zdCBGbG9hdFNp
emUmIGluaXRpYWxWZWxvY2l0eSkKLSAgICA6IFNjcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvcih2
aWV3cG9ydFNpemUsIGNvbnRlbnRTaXplLCBpbml0aWFsT2Zmc2V0LCB0YXJnZXRPZmZzZXQsIGlu
aXRpYWxEZWx0YSwgaW5pdGlhbFZlbG9jaXR5KQotICAgICwgbV9yZXF1aXJlc01vbWVudHVtU2Ny
b2xsaW5nKGluaXRpYWxPZmZzZXQgIT0gdGFyZ2V0T2Zmc2V0IHx8IGluaXRpYWxWZWxvY2l0eS5h
cmVhKCkpCit2b2lkIFNjcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvcjo6c2V0UGxhdGZvcm1Nb21l
bnR1bVNjcm9sbGluZ1ByZWRpY3Rpb25FbmFibGVkKGJvb2wgZW5hYmxlZCkKK3sKKyAgICBnRW5h
YmxlUGxhdGZvcm1Nb21lbnR1bVNjcm9sbGluZ1ByZWRpY3Rpb24gPSBlbmFibGVkOworfQorCitT
Y3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3JNYWM6OlNjcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRv
ck1hYyhjb25zdCBGbG9hdFNpemUmIHZpZXdwb3J0U2l6ZSwgY29uc3QgRmxvYXRTaXplJiBjb250
ZW50U2l6ZSwgY29uc3QgRmxvYXRQb2ludCYgaW5pdGlhbE9mZnNldCwgY29uc3QgRmxvYXRTaXpl
JiBpbml0aWFsRGVsdGEsIGNvbnN0IEZsb2F0U2l6ZSYgaW5pdGlhbFZlbG9jaXR5KQorICAgIDog
U2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yKHZpZXdwb3J0U2l6ZSwgY29udGVudFNpemUsIGlu
aXRpYWxPZmZzZXQsIGluaXRpYWxEZWx0YSwgaW5pdGlhbFZlbG9jaXR5KQogewogfQogCiBGbG9h
dFBvaW50IFNjcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvck1hYzo6c2Nyb2xsT2Zmc2V0QWZ0ZXJF
bGFwc2VkVGltZShTZWNvbmRzIGVsYXBzZWRUaW1lKQogewotICAgIGlmICghbV9yZXF1aXJlc01v
bWVudHVtU2Nyb2xsaW5nKQotICAgICAgICByZXR1cm4geyBtX3RhcmdldFNjcm9sbE9mZnNldC53
aWR0aCgpLCBtX3RhcmdldFNjcm9sbE9mZnNldC5oZWlnaHQoKSB9OworICAgIGlmICghcmVxdWly
ZXNNb21lbnR1bVNjcm9sbGluZygpKQorICAgICAgICByZXR1cm4geyByZXRhcmdldGVkU2Nyb2xs
T2Zmc2V0KCkud2lkdGgoKSwgcmV0YXJnZXRlZFNjcm9sbE9mZnNldCgpLmhlaWdodCgpIH07CiAK
ICAgICByZXR1cm4gW2Vuc3VyZVBsYXRmb3JtTW9tZW50dW1DYWxjdWxhdG9yKCkgcG9zaXRpb25B
ZnRlckR1cmF0aW9uOmVsYXBzZWRUaW1lLnZhbHVlKCldOwogfQogCitGbG9hdFNpemUgU2Nyb2xs
aW5nTW9tZW50dW1DYWxjdWxhdG9yTWFjOjpwcmVkaWN0ZWREZXN0aW5hdGlvbk9mZnNldCgpCit7
CisgICAgaWYgKCFnRW5hYmxlUGxhdGZvcm1Nb21lbnR1bVNjcm9sbGluZ1ByZWRpY3Rpb24pCisg
ICAgICAgIHJldHVybiBTY3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3I6OnByZWRpY3RlZERlc3Rp
bmF0aW9uT2Zmc2V0KCk7CisKKyAgICBlbnN1cmVQbGF0Zm9ybU1vbWVudHVtQ2FsY3VsYXRvcigp
OworICAgIHJldHVybiB7IG1faW5pdGlhbERlc3RpbmF0aW9uT3JpZ2luLngoKSwgbV9pbml0aWFs
RGVzdGluYXRpb25PcmlnaW4ueSgpIH07Cit9CisKK3ZvaWQgU2Nyb2xsaW5nTW9tZW50dW1DYWxj
dWxhdG9yTWFjOjpyZXRhcmdldGVkU2Nyb2xsT2Zmc2V0RGlkQ2hhbmdlKCkKK3sKKyAgICBfTlNT
Y3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3IgKmNhbGN1bGF0b3IgPSBlbnN1cmVQbGF0Zm9ybU1v
bWVudHVtQ2FsY3VsYXRvcigpOworICAgIGNhbGN1bGF0b3IuZGVzdGluYXRpb25PcmlnaW4gPSBO
U01ha2VQb2ludChyZXRhcmdldGVkU2Nyb2xsT2Zmc2V0KCkud2lkdGgoKSwgcmV0YXJnZXRlZFNj
cm9sbE9mZnNldCgpLmhlaWdodCgpKTsKKyNpZiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJ
UkVEID49IDEwMTIwMAorICAgIFtjYWxjdWxhdG9yIGNhbGN1bGF0ZVRvUmVhY2hEZXN0aW5hdGlv
bl07CisjZW5kaWYKK30KKwogU2Vjb25kcyBTY3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3JNYWM6
OmFuaW1hdGlvbkR1cmF0aW9uKCkKIHsKLSAgICBpZiAoIW1fcmVxdWlyZXNNb21lbnR1bVNjcm9s
bGluZykKKyAgICBpZiAoIXJlcXVpcmVzTW9tZW50dW1TY3JvbGxpbmcoKSkKICAgICAgICAgcmV0
dXJuIDBfczsKIAogICAgIHJldHVybiBTZWNvbmRzKFtlbnN1cmVQbGF0Zm9ybU1vbWVudHVtQ2Fs
Y3VsYXRvcigpIGR1cmF0aW9uVW50aWxTdG9wXSk7CiB9CiAKK2Jvb2wgU2Nyb2xsaW5nTW9tZW50
dW1DYWxjdWxhdG9yTWFjOjpyZXF1aXJlc01vbWVudHVtU2Nyb2xsaW5nKCkKK3sKKyAgICBpZiAo
bV9yZXF1aXJlc01vbWVudHVtU2Nyb2xsaW5nID09IHN0ZDo6bnVsbG9wdCkKKyAgICAgICAgbV9y
ZXF1aXJlc01vbWVudHVtU2Nyb2xsaW5nID0gbV9pbml0aWFsU2Nyb2xsT2Zmc2V0ICE9IHJldGFy
Z2V0ZWRTY3JvbGxPZmZzZXQoKSB8fCBtX2luaXRpYWxWZWxvY2l0eS5hcmVhKCk7CisgICAgcmV0
dXJuIG1fcmVxdWlyZXNNb21lbnR1bVNjcm9sbGluZy52YWx1ZSgpOworfQorCiBfTlNTY3JvbGxp
bmdNb21lbnR1bUNhbGN1bGF0b3IgKlNjcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvck1hYzo6ZW5z
dXJlUGxhdGZvcm1Nb21lbnR1bUNhbGN1bGF0b3IoKQogewogICAgIGlmIChtX3BsYXRmb3JtTW9t
ZW50dW1DYWxjdWxhdG9yKQpAQCAtNjgsMTAgKzk5LDcgQEAgX05TU2Nyb2xsaW5nTW9tZW50dW1D
YWxjdWxhdG9yICpTY3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3JNYWM6OmVuc3VyZVBsYXRmb3Jt
TW8KICAgICBOU1JlY3QgY29udGVudEZyYW1lID0gTlNNYWtlUmVjdCgwLCAwLCBtX2NvbnRlbnRT
aXplLndpZHRoKCksIG1fY29udGVudFNpemUuaGVpZ2h0KCkpOwogICAgIE5TUG9pbnQgdmVsb2Np
dHkgPSBOU01ha2VQb2ludChtX2luaXRpYWxWZWxvY2l0eS53aWR0aCgpLCBtX2luaXRpYWxWZWxv
Y2l0eS5oZWlnaHQoKSk7CiAgICAgbV9wbGF0Zm9ybU1vbWVudHVtQ2FsY3VsYXRvciA9IGFkb3B0
TlMoW1tfTlNTY3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3IgYWxsb2NdIGluaXRXaXRoSW5pdGlh
bE9yaWdpbjpvcmlnaW4gdmVsb2NpdHk6dmVsb2NpdHkgZG9jdW1lbnRGcmFtZTpjb250ZW50RnJh
bWUgY29uc3RyYWluZWRDbGlwcGluZ09yaWdpbjpOU1plcm9Qb2ludCBjbGlwcGluZ1NpemU6bV92
aWV3cG9ydFNpemUgdG9sZXJhbmNlOk5TTWFrZVNpemUoMSwgMSldKTsKLSAgICBbbV9wbGF0Zm9y
bU1vbWVudHVtQ2FsY3VsYXRvciBzZXREZXN0aW5hdGlvbk9yaWdpbjpOU01ha2VQb2ludChtX3Rh
cmdldFNjcm9sbE9mZnNldC53aWR0aCgpLCBtX3RhcmdldFNjcm9sbE9mZnNldC5oZWlnaHQoKSld
OwotI2lmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAxMjAwCi0gICAgW21f
cGxhdGZvcm1Nb21lbnR1bUNhbGN1bGF0b3IgY2FsY3VsYXRlVG9SZWFjaERlc3RpbmF0aW9uXTsK
LSNlbmRpZgorICAgIG1faW5pdGlhbERlc3RpbmF0aW9uT3JpZ2luID0gW21fcGxhdGZvcm1Nb21l
bnR1bUNhbGN1bGF0b3IgZGVzdGluYXRpb25PcmlnaW5dOwogICAgIHJldHVybiBtX3BsYXRmb3Jt
TW9tZW50dW1DYWxjdWxhdG9yLmdldCgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZU1hYy5t
bSBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL21hYy9TY3JvbGxpbmdUcmVlRnJhbWVT
Y3JvbGxpbmdOb2RlTWFjLm1tCmluZGV4IDExZTdhNzRkZTMyNjJkNTE0ZWU4YTMwZTg4MzU1ZDlh
ZDlhZjEyZTcuLjlhMDdmZmI4OWFlOWMzMmQyNmUwMzFkODM3ZWZjODg3MGJlZTllOTYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL21hYy9TY3JvbGxpbmdUcmVlRnJh
bWVTY3JvbGxpbmdOb2RlTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5n
L21hYy9TY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlTWFjLm1tCkBAIC05MCw2ICs5MCwx
NiBAQCBzdGF0aWMgaW5saW5lIFZlY3RvcjxMYXlvdXRVbml0PiBjb252ZXJ0VG9MYXlvdXRVbml0
cyhjb25zdCBWZWN0b3I8ZmxvYXQ+JiBzbmFwTwogCiAgICAgcmV0dXJuIHNuYXBPZmZzZXRzOwog
fQorCitzdGF0aWMgaW5saW5lIFZlY3RvcjxTY3JvbGxPZmZzZXRSYW5nZTxMYXlvdXRVbml0Pj4g
Y29udmVydFRvTGF5b3V0VW5pdHMoY29uc3QgVmVjdG9yPFNjcm9sbE9mZnNldFJhbmdlPGZsb2F0
Pj4mIHNuYXBPZmZzZXRSYW5nZXNBc0Zsb2F0KQoreworICAgIFZlY3RvcjxTY3JvbGxPZmZzZXRS
YW5nZTxMYXlvdXRVbml0Pj4gc25hcE9mZnNldFJhbmdlczsKKyAgICBzbmFwT2Zmc2V0UmFuZ2Vz
LnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoc25hcE9mZnNldFJhbmdlc0FzRmxvYXQuc2l6ZSgpKTsK
KyAgICBmb3IgKGF1dG8gcmFuZ2UgOiBzbmFwT2Zmc2V0UmFuZ2VzQXNGbG9hdCkKKyAgICAgICAg
c25hcE9mZnNldFJhbmdlcy51bmNoZWNrZWRBcHBlbmQoeyByYW5nZS5zdGFydCwgcmFuZ2UuZW5k
IH0pOworCisgICAgcmV0dXJuIHNuYXBPZmZzZXRSYW5nZXM7Cit9CiAjZW5kaWYKIAogdm9pZCBT
Y3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlTWFjOjpjb21taXRTdGF0ZUJlZm9yZUNoaWxk
cmVuKGNvbnN0IFNjcm9sbGluZ1N0YXRlTm9kZSYgc3RhdGVOb2RlKQpAQCAtMTQ2LDExICsxNTYs
MTEgQEAgdm9pZCBTY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlTWFjOjpjb21taXRTdGF0
ZUJlZm9yZUNoaWxkcmVuKGNvbnN0IFNjcm9sbGkKICAgICB9CiAKICNpZiBFTkFCTEUoQ1NTX1ND
Uk9MTF9TTkFQKQotICAgIGlmIChzY3JvbGxpbmdTdGF0ZU5vZGUuaGFzQ2hhbmdlZFByb3BlcnR5
KFNjcm9sbGluZ1N0YXRlRnJhbWVTY3JvbGxpbmdOb2RlOjpIb3Jpem9udGFsU25hcE9mZnNldHMp
KQotICAgICAgICBtX3Njcm9sbENvbnRyb2xsZXIudXBkYXRlU2Nyb2xsU25hcFBvaW50cyhTY3Jv
bGxFdmVudEF4aXM6Okhvcml6b250YWwsIGNvbnZlcnRUb0xheW91dFVuaXRzKHNjcm9sbGluZ1N0
YXRlTm9kZS5ob3Jpem9udGFsU25hcE9mZnNldHMoKSkpOworICAgIGlmIChzY3JvbGxpbmdTdGF0
ZU5vZGUuaGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRlRnJhbWVTY3JvbGxpbmdOb2Rl
OjpIb3Jpem9udGFsU25hcE9mZnNldHMpIHx8IHNjcm9sbGluZ1N0YXRlTm9kZS5oYXNDaGFuZ2Vk
UHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVGcmFtZVNjcm9sbGluZ05vZGU6Okhvcml6b250YWxTbmFw
T2Zmc2V0UmFuZ2VzKSkKKyAgICAgICAgbV9zY3JvbGxDb250cm9sbGVyLnVwZGF0ZVNjcm9sbFNu
YXBQb2ludHMoU2Nyb2xsRXZlbnRBeGlzOjpIb3Jpem9udGFsLCBjb252ZXJ0VG9MYXlvdXRVbml0
cyhzY3JvbGxpbmdTdGF0ZU5vZGUuaG9yaXpvbnRhbFNuYXBPZmZzZXRzKCkpLCBjb252ZXJ0VG9M
YXlvdXRVbml0cyhzY3JvbGxpbmdTdGF0ZU5vZGUuaG9yaXpvbnRhbFNuYXBPZmZzZXRSYW5nZXMo
KSkpOwogCi0gICAgaWYgKHNjcm9sbGluZ1N0YXRlTm9kZS5oYXNDaGFuZ2VkUHJvcGVydHkoU2Ny
b2xsaW5nU3RhdGVGcmFtZVNjcm9sbGluZ05vZGU6OlZlcnRpY2FsU25hcE9mZnNldHMpKQotICAg
ICAgICBtX3Njcm9sbENvbnRyb2xsZXIudXBkYXRlU2Nyb2xsU25hcFBvaW50cyhTY3JvbGxFdmVu
dEF4aXM6OlZlcnRpY2FsLCBjb252ZXJ0VG9MYXlvdXRVbml0cyhzY3JvbGxpbmdTdGF0ZU5vZGUu
dmVydGljYWxTbmFwT2Zmc2V0cygpKSk7CisgICAgaWYgKHNjcm9sbGluZ1N0YXRlTm9kZS5oYXND
aGFuZ2VkUHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVGcmFtZVNjcm9sbGluZ05vZGU6OlZlcnRpY2Fs
U25hcE9mZnNldHMpIHx8IHNjcm9sbGluZ1N0YXRlTm9kZS5oYXNDaGFuZ2VkUHJvcGVydHkoU2Ny
b2xsaW5nU3RhdGVGcmFtZVNjcm9sbGluZ05vZGU6OlZlcnRpY2FsU25hcE9mZnNldFJhbmdlcykp
CisgICAgICAgIG1fc2Nyb2xsQ29udHJvbGxlci51cGRhdGVTY3JvbGxTbmFwUG9pbnRzKFNjcm9s
bEV2ZW50QXhpczo6VmVydGljYWwsIGNvbnZlcnRUb0xheW91dFVuaXRzKHNjcm9sbGluZ1N0YXRl
Tm9kZS52ZXJ0aWNhbFNuYXBPZmZzZXRzKCkpLCBjb252ZXJ0VG9MYXlvdXRVbml0cyhzY3JvbGxp
bmdTdGF0ZU5vZGUudmVydGljYWxTbmFwT2Zmc2V0UmFuZ2VzKCkpKTsKIAogICAgIGlmIChzY3Jv
bGxpbmdTdGF0ZU5vZGUuaGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5n
Tm9kZTo6Q3VycmVudEhvcml6b250YWxTbmFwT2Zmc2V0SW5kZXgpKQogICAgICAgICBtX3Njcm9s
bENvbnRyb2xsZXIuc2V0QWN0aXZlU2Nyb2xsU25hcEluZGV4Rm9yQXhpcyhTY3JvbGxFdmVudEF4
aXM6Okhvcml6b250YWwsIHNjcm9sbGluZ1N0YXRlTm9kZS5jdXJyZW50SG9yaXpvbnRhbFNuYXBQ
b2ludEluZGV4KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xs
YWJsZUFyZWEuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYWJsZUFyZWEuY3Bw
CmluZGV4IGE3MWIwNzkxYTAwZGU3ODVhNTE3MzE3OWZjOGNiZjEyYTFkNTE1M2IuLmRlYWQ3MjE2
OTgyZjI2ZGRlYmFlNTJhMDAxNzAwMWI4ZGM3ZmRkZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL1Njcm9sbGFibGVBcmVhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9TY3JvbGxhYmxlQXJlYS5jcHAKQEAgLTQ4LDcgKzQ4LDcgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogc3RydWN0IFNhbWVTaXplQXNTY3JvbGxhYmxlQXJlYSB7CiAgICAgdmlydHVhbCB+U2Ft
ZVNpemVBc1Njcm9sbGFibGVBcmVhKCk7CiAjaWYgRU5BQkxFKENTU19TQ1JPTExfU05BUCkKLSAg
ICB2b2lkKiBwb2ludGVyc1s0XTsKKyAgICB2b2lkKiBwb2ludGVyc1szXTsKICAgICB1bnNpZ25l
ZCBjdXJyZW50SW5kaWNlc1syXTsKICNlbHNlCiAgICAgdm9pZCogcG9pbnRlclsyXTsKQEAgLTQy
NSwzNSArNDI1LDkwIEBAIGJvb2wgU2Nyb2xsYWJsZUFyZWE6Omhhc0xheWVyRm9yU2Nyb2xsQ29y
bmVyKCkgY29uc3QKIH0KIAogI2lmIEVOQUJMRShDU1NfU0NST0xMX1NOQVApCi12b2lkIFNjcm9s
bGFibGVBcmVhOjpzZXRIb3Jpem9udGFsU25hcE9mZnNldHMoc3RkOjp1bmlxdWVfcHRyPFZlY3Rv
cjxMYXlvdXRVbml0Pj4gaG9yaXpvbnRhbFNuYXBPZmZzZXRzKQorU2Nyb2xsU25hcE9mZnNldHNJ
bmZvPExheW91dFVuaXQ+JiBTY3JvbGxhYmxlQXJlYTo6ZW5zdXJlU25hcE9mZnNldHNJbmZvKCkK
K3sKKyAgICBpZiAoIW1fc25hcE9mZnNldHNJbmZvKQorICAgICAgICBtX3NuYXBPZmZzZXRzSW5m
byA9IHN0ZDo6bWFrZV91bmlxdWU8U2Nyb2xsU25hcE9mZnNldHNJbmZvPExheW91dFVuaXQ+Pigp
OworICAgIHJldHVybiAqbV9zbmFwT2Zmc2V0c0luZm87Cit9CisKK2NvbnN0IFZlY3RvcjxMYXlv
dXRVbml0PiogU2Nyb2xsYWJsZUFyZWE6Omhvcml6b250YWxTbmFwT2Zmc2V0cygpIGNvbnN0Cit7
CisgICAgaWYgKCFtX3NuYXBPZmZzZXRzSW5mbykKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisK
KyAgICByZXR1cm4gJm1fc25hcE9mZnNldHNJbmZvLT5ob3Jpem9udGFsU25hcE9mZnNldHM7Cit9
CisKK2NvbnN0IFZlY3RvcjxTY3JvbGxPZmZzZXRSYW5nZTxMYXlvdXRVbml0Pj4qIFNjcm9sbGFi
bGVBcmVhOjpob3Jpem9udGFsU25hcE9mZnNldFJhbmdlcygpIGNvbnN0Cit7CisgICAgaWYgKCFt
X3NuYXBPZmZzZXRzSW5mbykKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICByZXR1cm4g
Jm1fc25hcE9mZnNldHNJbmZvLT5ob3Jpem9udGFsU25hcE9mZnNldFJhbmdlczsKK30KKworY29u
c3QgVmVjdG9yPFNjcm9sbE9mZnNldFJhbmdlPExheW91dFVuaXQ+PiogU2Nyb2xsYWJsZUFyZWE6
OnZlcnRpY2FsU25hcE9mZnNldFJhbmdlcygpIGNvbnN0Cit7CisgICAgaWYgKCFtX3NuYXBPZmZz
ZXRzSW5mbykKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICByZXR1cm4gJm1fc25hcE9m
ZnNldHNJbmZvLT52ZXJ0aWNhbFNuYXBPZmZzZXRSYW5nZXM7Cit9CisKK2NvbnN0IFZlY3RvcjxM
YXlvdXRVbml0PiogU2Nyb2xsYWJsZUFyZWE6OnZlcnRpY2FsU25hcE9mZnNldHMoKSBjb25zdAor
eworICAgIGlmICghbV9zbmFwT2Zmc2V0c0luZm8pCisgICAgICAgIHJldHVybiBudWxscHRyOwor
CisgICAgcmV0dXJuICZtX3NuYXBPZmZzZXRzSW5mby0+dmVydGljYWxTbmFwT2Zmc2V0czsKK30K
Kwordm9pZCBTY3JvbGxhYmxlQXJlYTo6c2V0SG9yaXpvbnRhbFNuYXBPZmZzZXRzKGNvbnN0IFZl
Y3RvcjxMYXlvdXRVbml0PiYgaG9yaXpvbnRhbFNuYXBPZmZzZXRzKQogewotICAgIEFTU0VSVCho
b3Jpem9udGFsU25hcE9mZnNldHMpOwogICAgIC8vIENvbnNpZGVyIGhhdmluZyBhIG5vbi1lbXB0
eSBzZXQgb2Ygc25hcCBvZmZzZXRzIGFzIGEgY3VlIHRvIGluaXRpYWxpemUgdGhlIFNjcm9sbEFu
aW1hdG9yLgotICAgIGlmIChob3Jpem9udGFsU25hcE9mZnNldHMtPnNpemUoKSkKKyAgICBpZiAo
aG9yaXpvbnRhbFNuYXBPZmZzZXRzLnNpemUoKSkKICAgICAgICAgc2Nyb2xsQW5pbWF0b3IoKTsK
IAotICAgIG1faG9yaXpvbnRhbFNuYXBPZmZzZXRzID0gV1RGTW92ZShob3Jpem9udGFsU25hcE9m
ZnNldHMpOworICAgIGVuc3VyZVNuYXBPZmZzZXRzSW5mbygpLmhvcml6b250YWxTbmFwT2Zmc2V0
cyA9IGhvcml6b250YWxTbmFwT2Zmc2V0czsKIH0KIAotdm9pZCBTY3JvbGxhYmxlQXJlYTo6c2V0
VmVydGljYWxTbmFwT2Zmc2V0cyhzdGQ6OnVuaXF1ZV9wdHI8VmVjdG9yPExheW91dFVuaXQ+PiB2
ZXJ0aWNhbFNuYXBPZmZzZXRzKQordm9pZCBTY3JvbGxhYmxlQXJlYTo6c2V0VmVydGljYWxTbmFw
T2Zmc2V0cyhjb25zdCBWZWN0b3I8TGF5b3V0VW5pdD4mIHZlcnRpY2FsU25hcE9mZnNldHMpCiB7
Ci0gICAgQVNTRVJUKHZlcnRpY2FsU25hcE9mZnNldHMpOwogICAgIC8vIENvbnNpZGVyIGhhdmlu
ZyBhIG5vbi1lbXB0eSBzZXQgb2Ygc25hcCBvZmZzZXRzIGFzIGEgY3VlIHRvIGluaXRpYWxpemUg
dGhlIFNjcm9sbEFuaW1hdG9yLgotICAgIGlmICh2ZXJ0aWNhbFNuYXBPZmZzZXRzLT5zaXplKCkp
CisgICAgaWYgKHZlcnRpY2FsU25hcE9mZnNldHMuc2l6ZSgpKQogICAgICAgICBzY3JvbGxBbmlt
YXRvcigpOwogCi0gICAgbV92ZXJ0aWNhbFNuYXBPZmZzZXRzID0gV1RGTW92ZSh2ZXJ0aWNhbFNu
YXBPZmZzZXRzKTsKKyAgICBlbnN1cmVTbmFwT2Zmc2V0c0luZm8oKS52ZXJ0aWNhbFNuYXBPZmZz
ZXRzID0gdmVydGljYWxTbmFwT2Zmc2V0czsKK30KKwordm9pZCBTY3JvbGxhYmxlQXJlYTo6c2V0
SG9yaXpvbnRhbFNuYXBPZmZzZXRSYW5nZXMoY29uc3QgVmVjdG9yPFNjcm9sbE9mZnNldFJhbmdl
PExheW91dFVuaXQ+PiYgaG9yaXpvbnRhbFJhbmdlcykKK3sKKyAgICBlbnN1cmVTbmFwT2Zmc2V0
c0luZm8oKS5ob3Jpem9udGFsU25hcE9mZnNldFJhbmdlcyA9IGhvcml6b250YWxSYW5nZXM7Cit9
CisKK3ZvaWQgU2Nyb2xsYWJsZUFyZWE6OnNldFZlcnRpY2FsU25hcE9mZnNldFJhbmdlcyhjb25z
dCBWZWN0b3I8U2Nyb2xsT2Zmc2V0UmFuZ2U8TGF5b3V0VW5pdD4+JiB2ZXJ0aWNhbFJhbmdlcykK
K3sKKyAgICBlbnN1cmVTbmFwT2Zmc2V0c0luZm8oKS52ZXJ0aWNhbFNuYXBPZmZzZXRSYW5nZXMg
PSB2ZXJ0aWNhbFJhbmdlczsKIH0KIAogdm9pZCBTY3JvbGxhYmxlQXJlYTo6Y2xlYXJIb3Jpem9u
dGFsU25hcE9mZnNldHMoKQogewotICAgIG1faG9yaXpvbnRhbFNuYXBPZmZzZXRzID0gbnVsbHB0
cjsKKyAgICBpZiAoIW1fc25hcE9mZnNldHNJbmZvKQorICAgICAgICByZXR1cm47CisKKyAgICBt
X3NuYXBPZmZzZXRzSW5mby0+aG9yaXpvbnRhbFNuYXBPZmZzZXRzID0geyB9OworICAgIG1fc25h
cE9mZnNldHNJbmZvLT5ob3Jpem9udGFsU25hcE9mZnNldFJhbmdlcyA9IHsgfTsKICAgICBtX2N1
cnJlbnRIb3Jpem9udGFsU25hcFBvaW50SW5kZXggPSAwOwogfQogCiB2b2lkIFNjcm9sbGFibGVB
cmVhOjpjbGVhclZlcnRpY2FsU25hcE9mZnNldHMoKQogewotICAgIG1fdmVydGljYWxTbmFwT2Zm
c2V0cyA9IG51bGxwdHI7CisgICAgaWYgKCFtX3NuYXBPZmZzZXRzSW5mbykKKyAgICAgICAgcmV0
dXJuOworCisgICAgbV9zbmFwT2Zmc2V0c0luZm8tPnZlcnRpY2FsU25hcE9mZnNldHMgPSB7IH07
CisgICAgbV9zbmFwT2Zmc2V0c0luZm8tPnZlcnRpY2FsU25hcE9mZnNldFJhbmdlcyA9IHsgfTsK
ICAgICBtX2N1cnJlbnRWZXJ0aWNhbFNuYXBQb2ludEluZGV4ID0gMDsKIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYWJsZUFyZWEuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL1Njcm9sbGFibGVBcmVhLmgKaW5kZXggODkwOTcxNWE3Y2UyMDdkY2IyZmYw
NTZjMDcwZmY1MTBhYmFlOGQyMi4uMjRmOGIxNjBhYzgzNTBhZWVlZjhlNTQ4ZGMyY2MwNmNmODQ0
YTk3ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYWJsZUFyZWEu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxhYmxlQXJlYS5oCkBAIC0yNiw2
ICsyNiw3IEBACiAjaWZuZGVmIFNjcm9sbGFibGVBcmVhX2gKICNkZWZpbmUgU2Nyb2xsYWJsZUFy
ZWFfaAogCisjaW5jbHVkZSAiU2Nyb2xsU25hcE9mZnNldHNJbmZvLmgiCiAjaW5jbHVkZSAiU2Ny
b2xsYmFyLmgiCiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogI2luY2x1ZGUgPHd0Zi9XZWFrUHRy
Lmg+CkBAIC02NywxMSArNjgsMTUgQEAgcHVibGljOgogICAgIFdlYWtQdHI8U2Nyb2xsYWJsZUFy
ZWE+IGNyZWF0ZVdlYWtQdHIoKSB7IHJldHVybiBtX3dlYWtQdHJGYWN0b3J5LmNyZWF0ZVdlYWtQ
dHIoKTsgfQogCiAjaWYgRU5BQkxFKENTU19TQ1JPTExfU05BUCkKLSAgICBjb25zdCBWZWN0b3I8
TGF5b3V0VW5pdD4qIGhvcml6b250YWxTbmFwT2Zmc2V0cygpIGNvbnN0IHsgcmV0dXJuIG1faG9y
aXpvbnRhbFNuYXBPZmZzZXRzLmdldCgpOyB9OwotICAgIGNvbnN0IFZlY3RvcjxMYXlvdXRVbml0
PiogdmVydGljYWxTbmFwT2Zmc2V0cygpIGNvbnN0IHsgcmV0dXJuIG1fdmVydGljYWxTbmFwT2Zm
c2V0cy5nZXQoKTsgfTsKKyAgICBXRUJDT1JFX0VYUE9SVCBjb25zdCBWZWN0b3I8TGF5b3V0VW5p
dD4qIGhvcml6b250YWxTbmFwT2Zmc2V0cygpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIGNv
bnN0IFZlY3RvcjxMYXlvdXRVbml0PiogdmVydGljYWxTbmFwT2Zmc2V0cygpIGNvbnN0OworICAg
IFdFQkNPUkVfRVhQT1JUIGNvbnN0IFZlY3RvcjxTY3JvbGxPZmZzZXRSYW5nZTxMYXlvdXRVbml0
Pj4qIGhvcml6b250YWxTbmFwT2Zmc2V0UmFuZ2VzKCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBP
UlQgY29uc3QgVmVjdG9yPFNjcm9sbE9mZnNldFJhbmdlPExheW91dFVuaXQ+PiogdmVydGljYWxT
bmFwT2Zmc2V0UmFuZ2VzKCkgY29uc3Q7CiAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZVNuYXBPZmZz
ZXRzKCkgeyB9OwotICAgIHZvaWQgc2V0SG9yaXpvbnRhbFNuYXBPZmZzZXRzKHN0ZDo6dW5pcXVl
X3B0cjxWZWN0b3I8TGF5b3V0VW5pdD4+KTsKLSAgICB2b2lkIHNldFZlcnRpY2FsU25hcE9mZnNl
dHMoc3RkOjp1bmlxdWVfcHRyPFZlY3RvcjxMYXlvdXRVbml0Pj4pOworICAgIHZvaWQgc2V0SG9y
aXpvbnRhbFNuYXBPZmZzZXRzKGNvbnN0IFZlY3RvcjxMYXlvdXRVbml0PiYpOworICAgIHZvaWQg
c2V0VmVydGljYWxTbmFwT2Zmc2V0cyhjb25zdCBWZWN0b3I8TGF5b3V0VW5pdD4mKTsKKyAgICB2
b2lkIHNldEhvcml6b250YWxTbmFwT2Zmc2V0UmFuZ2VzKGNvbnN0IFZlY3RvcjxTY3JvbGxPZmZz
ZXRSYW5nZTxMYXlvdXRVbml0Pj4mKTsKKyAgICB2b2lkIHNldFZlcnRpY2FsU25hcE9mZnNldFJh
bmdlcyhjb25zdCBWZWN0b3I8U2Nyb2xsT2Zmc2V0UmFuZ2U8TGF5b3V0VW5pdD4+Jik7CiAgICAg
dm9pZCBjbGVhckhvcml6b250YWxTbmFwT2Zmc2V0cygpOwogICAgIHZvaWQgY2xlYXJWZXJ0aWNh
bFNuYXBPZmZzZXRzKCk7CiAgICAgdW5zaWduZWQgY3VycmVudEhvcml6b250YWxTbmFwUG9pbnRJ
bmRleCgpIGNvbnN0IHsgcmV0dXJuIG1fY3VycmVudEhvcml6b250YWxTbmFwUG9pbnRJbmRleDsg
fQpAQCAtMzQ2LDE0ICszNTEsMTQgQEAgcHJpdmF0ZToKICAgICAvLyBUaGlzIGZ1bmN0aW9uIHNo
b3VsZCBiZSBvdmVycmlkZW4gYnkgc3ViY2xhc3NlcyB0byBwZXJmb3JtIHRoZSBhY3R1YWwKICAg
ICAvLyBzY3JvbGwgb2YgdGhlIGNvbnRlbnQuCiAgICAgdmlydHVhbCB2b2lkIHNldFNjcm9sbE9m
ZnNldChjb25zdCBTY3JvbGxPZmZzZXQmKSA9IDA7CisgICAgU2Nyb2xsU25hcE9mZnNldHNJbmZv
PExheW91dFVuaXQ+JiBlbnN1cmVTbmFwT2Zmc2V0c0luZm8oKTsKIAogICAgIG11dGFibGUgc3Rk
Ojp1bmlxdWVfcHRyPFNjcm9sbEFuaW1hdG9yPiBtX3Njcm9sbEFuaW1hdG9yOwogCiAgICAgV2Vh
a1B0ckZhY3Rvcnk8U2Nyb2xsYWJsZUFyZWE+IG1fd2Vha1B0ckZhY3RvcnkgeyB0aGlzIH07CiAK
ICNpZiBFTkFCTEUoQ1NTX1NDUk9MTF9TTkFQKQotICAgIHN0ZDo6dW5pcXVlX3B0cjxWZWN0b3I8
TGF5b3V0VW5pdD4+IG1faG9yaXpvbnRhbFNuYXBPZmZzZXRzOwotICAgIHN0ZDo6dW5pcXVlX3B0
cjxWZWN0b3I8TGF5b3V0VW5pdD4+IG1fdmVydGljYWxTbmFwT2Zmc2V0czsKKyAgICBzdGQ6OnVu
aXF1ZV9wdHI8U2Nyb2xsU25hcE9mZnNldHNJbmZvPExheW91dFVuaXQ+PiBtX3NuYXBPZmZzZXRz
SW5mbzsKICAgICB1bnNpZ25lZCBtX2N1cnJlbnRIb3Jpem9udGFsU25hcFBvaW50SW5kZXggeyAw
IH07CiAgICAgdW5zaWduZWQgbV9jdXJyZW50VmVydGljYWxTbmFwUG9pbnRJbmRleCB7IDAgfTsK
ICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvU2Nyb2xs
Q29udHJvbGxlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvU2Nyb2xsQ29udHJv
bGxlci5oCmluZGV4IGIxYzdhMGMxYzA0ZDg2MmExMjg3NTk1YTI0NmMyOGVjMjNlMjJkNWEuLjBl
NDQ3ODlmMGExMjZhZThhNDI3NTQ2MzFjZGZmNDA2YzliOTRiNjAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1Njcm9sbENvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9TY3JvbGxDb250cm9sbGVyLmgKQEAgLTM3LDYgKzM3LDcg
QEAKIAogI2lmIEVOQUJMRShDU1NfU0NST0xMX1NOQVApCiAjaW5jbHVkZSAiU2Nyb2xsU25hcEFu
aW1hdG9yU3RhdGUuaCIKKyNpbmNsdWRlICJTY3JvbGxTbmFwT2Zmc2V0c0luZm8uaCIKICNlbmRp
ZgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0xMzMsNyArMTM0LDcgQEAgcHVibGljOgogICAg
IGJvb2wgaXNTY3JvbGxTbmFwSW5Qcm9ncmVzcygpIGNvbnN0OwogCiAjaWYgRU5BQkxFKENTU19T
Q1JPTExfU05BUCkKLSAgICB2b2lkIHVwZGF0ZVNjcm9sbFNuYXBQb2ludHMoU2Nyb2xsRXZlbnRB
eGlzLCBjb25zdCBWZWN0b3I8TGF5b3V0VW5pdD4mKTsKKyAgICB2b2lkIHVwZGF0ZVNjcm9sbFNu
YXBQb2ludHMoU2Nyb2xsRXZlbnRBeGlzLCBjb25zdCBWZWN0b3I8TGF5b3V0VW5pdD4mLCBjb25z
dCBWZWN0b3I8U2Nyb2xsT2Zmc2V0UmFuZ2U8TGF5b3V0VW5pdD4+Jik7CiAgICAgdm9pZCBzZXRB
Y3RpdmVTY3JvbGxTbmFwSW5kZXhGb3JBeGlzKFNjcm9sbEV2ZW50QXhpcywgdW5zaWduZWQpOwog
ICAgIHZvaWQgc2V0QWN0aXZlU2Nyb2xsU25hcEluZGljZXNGb3JPZmZzZXQoaW50IHgsIGludCB5
KTsKICAgICBib29sIGFjdGl2ZVNjcm9sbFNuYXBJbmRleERpZENoYW5nZSgpIGNvbnN0IHsgcmV0
dXJuIG1fYWN0aXZlU2Nyb2xsU25hcEluZGV4RGlkQ2hhbmdlOyB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9TY3JvbGxDb250cm9sbGVyLm1tIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vY29jb2EvU2Nyb2xsQ29udHJvbGxlci5tbQppbmRleCBlNDZlYzU2YTc0
ZTI2MmRmMThmMDI3MmE3MjNiMzVjMjQ1Njg3NjU3Li5hODdkMzNiMzMxZTM0OWQxMGYxZjMwMDAy
MDk2NDZhNWI4NDViZGRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2Nv
YS9TY3JvbGxDb250cm9sbGVyLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29h
L1Njcm9sbENvbnRyb2xsZXIubW0KQEAgLTU1MywxNCArNTUzLDE1IEBAIGJvb2wgU2Nyb2xsQ29u
dHJvbGxlcjo6cHJvY2Vzc1doZWVsRXZlbnRGb3JTY3JvbGxTbmFwKGNvbnN0IFBsYXRmb3JtV2hl
ZWxFdmVudCYKICAgICBjYXNlIFdoZWVsRXZlbnRTdGF0dXM6OlVzZXJTY3JvbGxpbmc6CiAgICAg
ICAgIHN0b3BTY3JvbGxTbmFwVGltZXIoKTsKICAgICAgICAgbV9zY3JvbGxTbmFwU3RhdGUtPnRy
YW5zaXRpb25Ub1VzZXJJbnRlcmFjdGlvblN0YXRlKCk7CisgICAgICAgIG1fZHJhZ0VuZGVkU2Ny
b2xsaW5nVmVsb2NpdHkgPSAtd2hlZWxFdmVudC5zY3JvbGxpbmdWZWxvY2l0eSgpOwogICAgICAg
ICBicmVhazsKICAgICBjYXNlIFdoZWVsRXZlbnRTdGF0dXM6OlVzZXJTY3JvbGxFbmQ6Ci0gICAg
ICAgIG1fZHJhZ0VuZGVkU2Nyb2xsaW5nVmVsb2NpdHkgPSAtd2hlZWxFdmVudC5zY3JvbGxpbmdW
ZWxvY2l0eSgpOwogICAgICAgICBtX3Njcm9sbFNuYXBTdGF0ZS0+dHJhbnNpdGlvblRvU25hcEFu
aW1hdGlvblN0YXRlKG1fY2xpZW50LnNjcm9sbEV4dGVudCgpLCBtX2NsaWVudC52aWV3cG9ydFNp
emUoKSwgbV9jbGllbnQucGFnZVNjYWxlRmFjdG9yKCksIG1fY2xpZW50LnNjcm9sbE9mZnNldCgp
KTsKICAgICAgICAgc3RhcnRTY3JvbGxTbmFwVGltZXIoKTsKICAgICAgICAgYnJlYWs7CiAgICAg
Y2FzZSBXaGVlbEV2ZW50U3RhdHVzOjpJbmVydGlhbFNjcm9sbEJlZ2luOgogICAgICAgICBtX3Nj
cm9sbFNuYXBTdGF0ZS0+dHJhbnNpdGlvblRvR2xpZGVBbmltYXRpb25TdGF0ZShtX2NsaWVudC5z
Y3JvbGxFeHRlbnQoKSwgbV9jbGllbnQudmlld3BvcnRTaXplKCksIG1fY2xpZW50LnBhZ2VTY2Fs
ZUZhY3RvcigpLCBtX2NsaWVudC5zY3JvbGxPZmZzZXQoKSwgbV9kcmFnRW5kZWRTY3JvbGxpbmdW
ZWxvY2l0eSwgRmxvYXRTaXplKC13aGVlbEV2ZW50LmRlbHRhWCgpLCAtd2hlZWxFdmVudC5kZWx0
YVkoKSkpOworICAgICAgICBtX2RyYWdFbmRlZFNjcm9sbGluZ1ZlbG9jaXR5ID0geyB9OwogICAg
ICAgICBpc0luZXJ0aWFsU2Nyb2xsaW5nID0gdHJ1ZTsKICAgICAgICAgYnJlYWs7CiAgICAgY2Fz
ZSBXaGVlbEV2ZW50U3RhdHVzOjpJbmVydGlhbFNjcm9sbGluZzoKQEAgLTU4MSwxOCArNTgyLDI0
IEBAIGJvb2wgU2Nyb2xsQ29udHJvbGxlcjo6cHJvY2Vzc1doZWVsRXZlbnRGb3JTY3JvbGxTbmFw
KGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYKIAogdm9pZCBTY3JvbGxDb250cm9sbGVyOjp1cGRh
dGVTY3JvbGxTbmFwU3RhdGUoY29uc3QgU2Nyb2xsYWJsZUFyZWEmIHNjcm9sbGFibGVBcmVhKQog
ewotICAgIGlmIChhdXRvKiBzbmFwT2Zmc2V0cyA9IHNjcm9sbGFibGVBcmVhLmhvcml6b250YWxT
bmFwT2Zmc2V0cygpKQotICAgICAgICB1cGRhdGVTY3JvbGxTbmFwUG9pbnRzKFNjcm9sbEV2ZW50
QXhpczo6SG9yaXpvbnRhbCwgKnNuYXBPZmZzZXRzKTsKLSAgICBlbHNlCi0gICAgICAgIHVwZGF0
ZVNjcm9sbFNuYXBQb2ludHMoU2Nyb2xsRXZlbnRBeGlzOjpIb3Jpem9udGFsLCB7IH0pOworICAg
IGlmIChhdXRvKiBzbmFwT2Zmc2V0cyA9IHNjcm9sbGFibGVBcmVhLmhvcml6b250YWxTbmFwT2Zm
c2V0cygpKSB7CisgICAgICAgIGlmIChhdXRvKiBzbmFwT2Zmc2V0UmFuZ2VzID0gc2Nyb2xsYWJs
ZUFyZWEuaG9yaXpvbnRhbFNuYXBPZmZzZXRSYW5nZXMoKSkKKyAgICAgICAgICAgIHVwZGF0ZVNj
cm9sbFNuYXBQb2ludHMoU2Nyb2xsRXZlbnRBeGlzOjpIb3Jpem9udGFsLCAqc25hcE9mZnNldHMs
ICpzbmFwT2Zmc2V0UmFuZ2VzKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgdXBkYXRlU2Ny
b2xsU25hcFBvaW50cyhTY3JvbGxFdmVudEF4aXM6Okhvcml6b250YWwsICpzbmFwT2Zmc2V0cywg
eyB9KTsKKyAgICB9IGVsc2UKKyAgICAgICAgdXBkYXRlU2Nyb2xsU25hcFBvaW50cyhTY3JvbGxF
dmVudEF4aXM6Okhvcml6b250YWwsIHsgfSwgeyB9KTsKIAotICAgIGlmIChhdXRvKiBzbmFwT2Zm
c2V0cyA9IHNjcm9sbGFibGVBcmVhLnZlcnRpY2FsU25hcE9mZnNldHMoKSkKLSAgICAgICAgdXBk
YXRlU2Nyb2xsU25hcFBvaW50cyhTY3JvbGxFdmVudEF4aXM6OlZlcnRpY2FsLCAqc25hcE9mZnNl
dHMpOwotICAgIGVsc2UKLSAgICAgICAgdXBkYXRlU2Nyb2xsU25hcFBvaW50cyhTY3JvbGxFdmVu
dEF4aXM6OlZlcnRpY2FsLCB7IH0pOworICAgIGlmIChhdXRvKiBzbmFwT2Zmc2V0cyA9IHNjcm9s
bGFibGVBcmVhLnZlcnRpY2FsU25hcE9mZnNldHMoKSkgeworICAgICAgICBpZiAoYXV0byogc25h
cE9mZnNldFJhbmdlcyA9IHNjcm9sbGFibGVBcmVhLnZlcnRpY2FsU25hcE9mZnNldFJhbmdlcygp
KQorICAgICAgICAgICAgdXBkYXRlU2Nyb2xsU25hcFBvaW50cyhTY3JvbGxFdmVudEF4aXM6OlZl
cnRpY2FsLCAqc25hcE9mZnNldHMsICpzbmFwT2Zmc2V0UmFuZ2VzKTsKKyAgICAgICAgZWxzZQor
ICAgICAgICAgICAgdXBkYXRlU2Nyb2xsU25hcFBvaW50cyhTY3JvbGxFdmVudEF4aXM6OlZlcnRp
Y2FsLCAqc25hcE9mZnNldHMsIHsgfSk7CisgICAgfSBlbHNlCisgICAgICAgIHVwZGF0ZVNjcm9s
bFNuYXBQb2ludHMoU2Nyb2xsRXZlbnRBeGlzOjpWZXJ0aWNhbCwgeyB9LCB7IH0pOwogfQogCi12
b2lkIFNjcm9sbENvbnRyb2xsZXI6OnVwZGF0ZVNjcm9sbFNuYXBQb2ludHMoU2Nyb2xsRXZlbnRB
eGlzIGF4aXMsIGNvbnN0IFZlY3RvcjxMYXlvdXRVbml0PiYgc25hcFBvaW50cykKK3ZvaWQgU2Ny
b2xsQ29udHJvbGxlcjo6dXBkYXRlU2Nyb2xsU25hcFBvaW50cyhTY3JvbGxFdmVudEF4aXMgYXhp
cywgY29uc3QgVmVjdG9yPExheW91dFVuaXQ+JiBzbmFwUG9pbnRzLCBjb25zdCBWZWN0b3I8U2Ny
b2xsT2Zmc2V0UmFuZ2U8TGF5b3V0VW5pdD4+JiBzbmFwUmFuZ2VzKQogewogICAgIGlmICghbV9z
Y3JvbGxTbmFwU3RhdGUpIHsKICAgICAgICAgaWYgKHNuYXBQb2ludHMuaXNFbXB0eSgpKQpAQCAt
NjA0LDcgKzYxMSw3IEBAIHZvaWQgU2Nyb2xsQ29udHJvbGxlcjo6dXBkYXRlU2Nyb2xsU25hcFBv
aW50cyhTY3JvbGxFdmVudEF4aXMgYXhpcywgY29uc3QgVmVjdG9yCiAgICAgaWYgKHNuYXBQb2lu
dHMuaXNFbXB0eSgpICYmIG1fc2Nyb2xsU25hcFN0YXRlLT5zbmFwT2Zmc2V0c0ZvckF4aXMob3Ro
ZXJTY3JvbGxFdmVudEF4aXMoYXhpcykpLmlzRW1wdHkoKSkKICAgICAgICAgbV9zY3JvbGxTbmFw
U3RhdGUgPSBudWxscHRyOwogICAgIGVsc2UKLSAgICAgICAgbV9zY3JvbGxTbmFwU3RhdGUtPnNl
dFNuYXBPZmZzZXRzRm9yQXhpcyhheGlzLCBzbmFwUG9pbnRzKTsKKyAgICAgICAgbV9zY3JvbGxT
bmFwU3RhdGUtPnNldFNuYXBPZmZzZXRzQW5kUG9zaXRpb25SYW5nZXNGb3JBeGlzKGF4aXMsIHNu
YXBQb2ludHMsIHNuYXBSYW5nZXMpOwogfQogCiB2b2lkIFNjcm9sbENvbnRyb2xsZXI6OnN0YXJ0
U2Nyb2xsU25hcFRpbWVyKCkKQEAgLTY4MCw3ICs2ODcsNyBAQCB2b2lkIFNjcm9sbENvbnRyb2xs
ZXI6OnNldE5lYXJlc3RTY3JvbGxTbmFwSW5kZXhGb3JBeGlzQW5kT2Zmc2V0KFNjcm9sbEV2ZW50
QXhpcwogICAgIExheW91dFVuaXQgY2xhbXBlZE9mZnNldCA9IHN0ZDo6bWluKHN0ZDo6bWF4KExh
eW91dFVuaXQob2Zmc2V0IC8gc2NhbGVGYWN0b3IpLCBzbmFwT2Zmc2V0cy5maXJzdCgpKSwgc25h
cE9mZnNldHMubGFzdCgpKTsKIAogICAgIHVuc2lnbmVkIGFjdGl2ZUluZGV4ID0gMDsKLSAgICBj
bG9zZXN0U25hcE9mZnNldDxMYXlvdXRVbml0LCBmbG9hdD4oc25hcFN0YXRlLnNuYXBPZmZzZXRz
Rm9yQXhpcyhheGlzKSwgY2xhbXBlZE9mZnNldCwgMCwgYWN0aXZlSW5kZXgpOworICAgIGNsb3Nl
c3RTbmFwT2Zmc2V0KHNuYXBTdGF0ZS5zbmFwT2Zmc2V0c0ZvckF4aXMoYXhpcyksIHNuYXBTdGF0
ZS5zbmFwT2Zmc2V0UmFuZ2VzRm9yQXhpcyhheGlzKSwgY2xhbXBlZE9mZnNldCwgMCwgYWN0aXZl
SW5kZXgpOwogCiAgICAgaWYgKGFjdGl2ZUluZGV4ID09IGFjdGl2ZVNjcm9sbFNuYXBJbmRleEZv
ckF4aXMoYXhpcykpCiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2NvY29hL1Njcm9sbFNuYXBBbmltYXRvclN0YXRlLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9jb2NvYS9TY3JvbGxTbmFwQW5pbWF0b3JTdGF0ZS5oCmluZGV4IDhmMjZlNzJk
MjViNGRjODg4MWZlMDA2NmRmZjZjNDVhODljM2Y3ZTguLjE1MGRiMGJiYzBkOTFlOTQwYzBhOGIy
ZTE2NTkxZmEzZmI2NDQyYmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nv
Y29hL1Njcm9sbFNuYXBBbmltYXRvclN0YXRlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vY29jb2EvU2Nyb2xsU25hcEFuaW1hdG9yU3RhdGUuaApAQCAtMzMsNiArMzMsNyBAQAogI2lu
Y2x1ZGUgIkZsb2F0U2l6ZS5oIgogI2luY2x1ZGUgIkxheW91dFBvaW50LmgiCiAjaW5jbHVkZSAi
UGxhdGZvcm1XaGVlbEV2ZW50LmgiCisjaW5jbHVkZSAiU2Nyb2xsU25hcE9mZnNldHNJbmZvLmgi
CiAjaW5jbHVkZSAiU2Nyb2xsVHlwZXMuaCIKICNpbmNsdWRlICJTY3JvbGxpbmdNb21lbnR1bUNh
bGN1bGF0b3IuaCIKICNpbmNsdWRlIDx3dGYvTW9ub3RvbmljVGltZS5oPgpAQCAtNDgsMTcgKzQ5
LDI1IEBAIGVudW0gY2xhc3MgU2Nyb2xsU25hcFN0YXRlIHsKIAogY2xhc3MgU2Nyb2xsU25hcEFu
aW1hdG9yU3RhdGUgewogcHVibGljOgotICAgIFZlY3RvcjxMYXlvdXRVbml0PiBzbmFwT2Zmc2V0
c0ZvckF4aXMoU2Nyb2xsRXZlbnRBeGlzIGF4aXMpIGNvbnN0CisgICAgY29uc3QgVmVjdG9yPExh
eW91dFVuaXQ+JiBzbmFwT2Zmc2V0c0ZvckF4aXMoU2Nyb2xsRXZlbnRBeGlzIGF4aXMpIGNvbnN0
CiAgICAgewogICAgICAgICByZXR1cm4gYXhpcyA9PSBTY3JvbGxFdmVudEF4aXM6Okhvcml6b250
YWwgPyBtX3NuYXBPZmZzZXRzWCA6IG1fc25hcE9mZnNldHNZOwogICAgIH0KIAotICAgIHZvaWQg
c2V0U25hcE9mZnNldHNGb3JBeGlzKFNjcm9sbEV2ZW50QXhpcyBheGlzLCBjb25zdCBWZWN0b3I8
TGF5b3V0VW5pdD4mIHNuYXBPZmZzZXRzKQorICAgIGNvbnN0IFZlY3RvcjxTY3JvbGxPZmZzZXRS
YW5nZTxMYXlvdXRVbml0Pj4mIHNuYXBPZmZzZXRSYW5nZXNGb3JBeGlzKFNjcm9sbEV2ZW50QXhp
cyBheGlzKSBjb25zdAogICAgIHsKLSAgICAgICAgaWYgKGF4aXMgPT0gU2Nyb2xsRXZlbnRBeGlz
OjpIb3Jpem9udGFsKQorICAgICAgICByZXR1cm4gYXhpcyA9PSBTY3JvbGxFdmVudEF4aXM6Okhv
cml6b250YWwgPyBtX3NuYXBPZmZzZXRSYW5nZXNYIDogbV9zbmFwT2Zmc2V0UmFuZ2VzWTsKKyAg
ICB9CisKKyAgICB2b2lkIHNldFNuYXBPZmZzZXRzQW5kUG9zaXRpb25SYW5nZXNGb3JBeGlzKFNj
cm9sbEV2ZW50QXhpcyBheGlzLCBjb25zdCBWZWN0b3I8TGF5b3V0VW5pdD4mIHNuYXBPZmZzZXRz
LCBjb25zdCBWZWN0b3I8U2Nyb2xsT2Zmc2V0UmFuZ2U8TGF5b3V0VW5pdD4+JiBzbmFwT2Zmc2V0
UmFuZ2VzKQorICAgIHsKKyAgICAgICAgaWYgKGF4aXMgPT0gU2Nyb2xsRXZlbnRBeGlzOjpIb3Jp
em9udGFsKSB7CiAgICAgICAgICAgICBtX3NuYXBPZmZzZXRzWCA9IHNuYXBPZmZzZXRzOwotICAg
ICAgICBlbHNlCisgICAgICAgICAgICBtX3NuYXBPZmZzZXRSYW5nZXNYID0gc25hcE9mZnNldFJh
bmdlczsKKyAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIG1fc25hcE9mZnNldHNZID0gc25h
cE9mZnNldHM7CisgICAgICAgICAgICBtX3NuYXBPZmZzZXRSYW5nZXNZID0gc25hcE9mZnNldFJh
bmdlczsKKyAgICAgICAgfQogICAgIH0KIAogICAgIFNjcm9sbFNuYXBTdGF0ZSBjdXJyZW50U3Rh
dGUoKSBjb25zdCB7IHJldHVybiBtX2N1cnJlbnRTdGF0ZTsgfQpAQCAtODUsMTUgKzk0LDE3IEBA
IHB1YmxpYzoKICAgICB2b2lkIHRyYW5zaXRpb25Ub0Rlc3RpbmF0aW9uUmVhY2hlZFN0YXRlKCk7
CiAKIHByaXZhdGU6Ci0gICAgZmxvYXQgdGFyZ2V0T2Zmc2V0Rm9yU3RhcnRPZmZzZXQoU2Nyb2xs
RXZlbnRBeGlzLCBmbG9hdCBtYXhTY3JvbGxPZmZzZXQsIGZsb2F0IHN0YXJ0T2Zmc2V0LCBmbG9h
dCBwYWdlU2NhbGUsIGZsb2F0IGRlbHRhLCB1bnNpZ25lZCYgb3V0QWN0aXZlU25hcEluZGV4KSBj
b25zdDsKKyAgICBmbG9hdCB0YXJnZXRPZmZzZXRGb3JTdGFydE9mZnNldChjb25zdCBWZWN0b3I8
TGF5b3V0VW5pdD4mIHNuYXBPZmZzZXRzLCBjb25zdCBWZWN0b3I8U2Nyb2xsT2Zmc2V0UmFuZ2U8
TGF5b3V0VW5pdD4+JiBzbmFwT2Zmc2V0UmFuZ2VzLCBmbG9hdCBtYXhTY3JvbGxPZmZzZXQsIGZs
b2F0IHN0YXJ0T2Zmc2V0LCBmbG9hdCBwcmVkaWN0ZWRPZmZzZXQsIGZsb2F0IHBhZ2VTY2FsZSwg
ZmxvYXQgZGVsdGEsIHVuc2lnbmVkJiBvdXRBY3RpdmVTbmFwSW5kZXgpIGNvbnN0OwogICAgIHZv
aWQgdGVhcmRvd25BbmltYXRpb25Gb3JTdGF0ZShTY3JvbGxTbmFwU3RhdGUpOwogICAgIHZvaWQg
c2V0dXBBbmltYXRpb25Gb3JTdGF0ZShTY3JvbGxTbmFwU3RhdGUsIGNvbnN0IEZsb2F0U2l6ZSYg
Y29udGVudFNpemUsIGNvbnN0IEZsb2F0U2l6ZSYgdmlld3BvcnRTaXplLCBmbG9hdCBwYWdlU2Nh
bGUsIGNvbnN0IEZsb2F0UG9pbnQmIGluaXRpYWxPZmZzZXQsIGNvbnN0IEZsb2F0U2l6ZSYgaW5p
dGlhbFZlbG9jaXR5LCBjb25zdCBGbG9hdFNpemUmIGluaXRpYWxEZWx0YSk7CiAKICAgICBTY3Jv
bGxTbmFwU3RhdGUgbV9jdXJyZW50U3RhdGUgeyBTY3JvbGxTbmFwU3RhdGU6OlVzZXJJbnRlcmFj
dGlvbiB9OwogCiAgICAgVmVjdG9yPExheW91dFVuaXQ+IG1fc25hcE9mZnNldHNYOworICAgIFZl
Y3RvcjxTY3JvbGxPZmZzZXRSYW5nZTxMYXlvdXRVbml0Pj4gbV9zbmFwT2Zmc2V0UmFuZ2VzWDsK
ICAgICB1bnNpZ25lZCBtX2FjdGl2ZVNuYXBJbmRleFggeyAwIH07CiAgICAgVmVjdG9yPExheW91
dFVuaXQ+IG1fc25hcE9mZnNldHNZOworICAgIFZlY3RvcjxTY3JvbGxPZmZzZXRSYW5nZTxMYXlv
dXRVbml0Pj4gbV9zbmFwT2Zmc2V0UmFuZ2VzWTsKICAgICB1bnNpZ25lZCBtX2FjdGl2ZVNuYXBJ
bmRleFkgeyAwIH07CiAKICAgICBNb25vdG9uaWNUaW1lIG1fc3RhcnRUaW1lOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvU2Nyb2xsU25hcEFuaW1hdG9yU3RhdGUu
bW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9TY3JvbGxTbmFwQW5pbWF0b3JTdGF0
ZS5tbQppbmRleCA3ZTIwMTgxNjc1ZjA2MTk0ZTBiOTMxMGFhYzg1NTc5MjIwMGFjNjY2Li5lNTQ5
NDA5M2IxZTQyMTQ2MDZjNDRjZDczNDQ1ZTIxOGUxMjliYTAyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9TY3JvbGxTbmFwQW5pbWF0b3JTdGF0ZS5tbQorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9TY3JvbGxTbmFwQW5pbWF0b3JTdGF0ZS5tbQpA
QCAtMzEsMTIgKzMxLDYgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1zdGF0aWMgY29uc3Qg
ZmxvYXQgaW5lcnRpYWxTY3JvbGxQcmVkaWN0aW9uRmFjdG9yID0gMTA7Ci1zdGF0aWMgaW5saW5l
IGZsb2F0IHByb2plY3RlZEluZXJ0aWFsU2Nyb2xsRGlzdGFuY2UoZmxvYXQgaW5pdGlhbFdoZWVs
RGVsdGEpCi17Ci0gICAgcmV0dXJuIGluZXJ0aWFsU2Nyb2xsUHJlZGljdGlvbkZhY3RvciAqIGlu
aXRpYWxXaGVlbERlbHRhOwotfQotCiB2b2lkIFNjcm9sbFNuYXBBbmltYXRvclN0YXRlOjp0cmFu
c2l0aW9uVG9TbmFwQW5pbWF0aW9uU3RhdGUoY29uc3QgRmxvYXRTaXplJiBjb250ZW50U2l6ZSwg
Y29uc3QgRmxvYXRTaXplJiB2aWV3cG9ydFNpemUsIGZsb2F0IHBhZ2VTY2FsZSwgY29uc3QgRmxv
YXRQb2ludCYgaW5pdGlhbE9mZnNldCkKIHsKICAgICBzZXR1cEFuaW1hdGlvbkZvclN0YXRlKFNj
cm9sbFNuYXBTdGF0ZTo6U25hcHBpbmcsIGNvbnRlbnRTaXplLCB2aWV3cG9ydFNpemUsIHBhZ2VT
Y2FsZSwgaW5pdGlhbE9mZnNldCwgeyB9LCB7IH0pOwpAQCAtNTMsOSArNDcsMTEgQEAgdm9pZCBT
Y3JvbGxTbmFwQW5pbWF0b3JTdGF0ZTo6c2V0dXBBbmltYXRpb25Gb3JTdGF0ZShTY3JvbGxTbmFw
U3RhdGUgc3RhdGUsIGNvbnMKICAgICBpZiAobV9jdXJyZW50U3RhdGUgPT0gc3RhdGUpCiAgICAg
ICAgIHJldHVybjsKIAotICAgIGZsb2F0IHRhcmdldE9mZnNldFggPSB0YXJnZXRPZmZzZXRGb3JT
dGFydE9mZnNldChTY3JvbGxFdmVudEF4aXM6Okhvcml6b250YWwsIGNvbnRlbnRTaXplLndpZHRo
KCkgLSB2aWV3cG9ydFNpemUud2lkdGgoKSwgaW5pdGlhbE9mZnNldC54KCksIHBhZ2VTY2FsZSwg
aW5pdGlhbERlbHRhLndpZHRoKCksIG1fYWN0aXZlU25hcEluZGV4WCk7Ci0gICAgZmxvYXQgdGFy
Z2V0T2Zmc2V0WSA9IHRhcmdldE9mZnNldEZvclN0YXJ0T2Zmc2V0KFNjcm9sbEV2ZW50QXhpczo6
VmVydGljYWwsIGNvbnRlbnRTaXplLmhlaWdodCgpIC0gdmlld3BvcnRTaXplLmhlaWdodCgpLCBp
bml0aWFsT2Zmc2V0LnkoKSwgcGFnZVNjYWxlLCBpbml0aWFsRGVsdGEuaGVpZ2h0KCksIG1fYWN0
aXZlU25hcEluZGV4WSk7Ci0gICAgbV9tb21lbnR1bUNhbGN1bGF0b3IgPSBTY3JvbGxpbmdNb21l
bnR1bUNhbGN1bGF0b3I6OmNyZWF0ZSh2aWV3cG9ydFNpemUsIGNvbnRlbnRTaXplLCBpbml0aWFs
T2Zmc2V0LCBGbG9hdFBvaW50KHRhcmdldE9mZnNldFgsIHRhcmdldE9mZnNldFkpLCBpbml0aWFs
RGVsdGEsIGluaXRpYWxWZWxvY2l0eSk7CisgICAgbV9tb21lbnR1bUNhbGN1bGF0b3IgPSBTY3Jv
bGxpbmdNb21lbnR1bUNhbGN1bGF0b3I6OmNyZWF0ZSh2aWV3cG9ydFNpemUsIGNvbnRlbnRTaXpl
LCBpbml0aWFsT2Zmc2V0LCBpbml0aWFsRGVsdGEsIGluaXRpYWxWZWxvY2l0eSk7CisgICAgYXV0
byBwcmVkaWN0ZWRTY3JvbGxUYXJnZXQgPSBtX21vbWVudHVtQ2FsY3VsYXRvci0+cHJlZGljdGVk
RGVzdGluYXRpb25PZmZzZXQoKTsKKyAgICBmbG9hdCB0YXJnZXRPZmZzZXRYID0gdGFyZ2V0T2Zm
c2V0Rm9yU3RhcnRPZmZzZXQobV9zbmFwT2Zmc2V0c1gsIG1fc25hcE9mZnNldFJhbmdlc1gsIGNv
bnRlbnRTaXplLndpZHRoKCkgLSB2aWV3cG9ydFNpemUud2lkdGgoKSwgaW5pdGlhbE9mZnNldC54
KCksIHByZWRpY3RlZFNjcm9sbFRhcmdldC53aWR0aCgpLCBwYWdlU2NhbGUsIGluaXRpYWxEZWx0
YS53aWR0aCgpLCBtX2FjdGl2ZVNuYXBJbmRleFgpOworICAgIGZsb2F0IHRhcmdldE9mZnNldFkg
PSB0YXJnZXRPZmZzZXRGb3JTdGFydE9mZnNldChtX3NuYXBPZmZzZXRzWSwgbV9zbmFwT2Zmc2V0
UmFuZ2VzWSwgY29udGVudFNpemUuaGVpZ2h0KCkgLSB2aWV3cG9ydFNpemUuaGVpZ2h0KCksIGlu
aXRpYWxPZmZzZXQueSgpLCBwcmVkaWN0ZWRTY3JvbGxUYXJnZXQuaGVpZ2h0KCksIHBhZ2VTY2Fs
ZSwgaW5pdGlhbERlbHRhLmhlaWdodCgpLCBtX2FjdGl2ZVNuYXBJbmRleFkpOworICAgIG1fbW9t
ZW50dW1DYWxjdWxhdG9yLT5zZXRSZXRhcmdldGVkU2Nyb2xsT2Zmc2V0KHsgdGFyZ2V0T2Zmc2V0
WCwgdGFyZ2V0T2Zmc2V0WSB9KTsKICAgICBtX3N0YXJ0VGltZSA9IE1vbm90b25pY1RpbWU6Om5v
dygpOwogICAgIG1fY3VycmVudFN0YXRlID0gc3RhdGU7CiB9CkBAIC05MywxOCArODksMTcgQEAg
RmxvYXRQb2ludCBTY3JvbGxTbmFwQW5pbWF0b3JTdGF0ZTo6Y3VycmVudEFuaW1hdGVkU2Nyb2xs
T2Zmc2V0KGJvb2wmIGlzQW5pbWF0aW8KICAgICByZXR1cm4gbV9tb21lbnR1bUNhbGN1bGF0b3It
PnNjcm9sbE9mZnNldEFmdGVyRWxhcHNlZFRpbWUoZWxhcHNlZFRpbWUpOwogfQogCi1mbG9hdCBT
Y3JvbGxTbmFwQW5pbWF0b3JTdGF0ZTo6dGFyZ2V0T2Zmc2V0Rm9yU3RhcnRPZmZzZXQoU2Nyb2xs
RXZlbnRBeGlzIGF4aXMsIGZsb2F0IG1heFNjcm9sbE9mZnNldCwgZmxvYXQgc3RhcnRPZmZzZXQs
IGZsb2F0IHBhZ2VTY2FsZSwgZmxvYXQgaW5pdGlhbERlbHRhLCB1bnNpZ25lZCYgb3V0QWN0aXZl
U25hcEluZGV4KSBjb25zdAorZmxvYXQgU2Nyb2xsU25hcEFuaW1hdG9yU3RhdGU6OnRhcmdldE9m
ZnNldEZvclN0YXJ0T2Zmc2V0KGNvbnN0IFZlY3RvcjxMYXlvdXRVbml0PiYgc25hcE9mZnNldHMs
IGNvbnN0IFZlY3RvcjxTY3JvbGxPZmZzZXRSYW5nZTxMYXlvdXRVbml0Pj4mIHNuYXBPZmZzZXRS
YW5nZXMsIGZsb2F0IG1heFNjcm9sbE9mZnNldCwgZmxvYXQgc3RhcnRPZmZzZXQsIGZsb2F0IHBy
ZWRpY3RlZE9mZnNldCwgZmxvYXQgcGFnZVNjYWxlLCBmbG9hdCBpbml0aWFsRGVsdGEsIHVuc2ln
bmVkJiBvdXRBY3RpdmVTbmFwSW5kZXgpIGNvbnN0CiB7Ci0gICAgYXV0byBzbmFwT2Zmc2V0cyA9
IHNuYXBPZmZzZXRzRm9yQXhpcyhheGlzKTsKLSAgICBpZiAoIXNuYXBPZmZzZXRzLnNpemUoKSkg
ewotICAgICAgICBvdXRBY3RpdmVTbmFwSW5kZXggPSAwOworICAgIGlmIChzbmFwT2Zmc2V0cy5p
c0VtcHR5KCkpIHsKKyAgICAgICAgb3V0QWN0aXZlU25hcEluZGV4ID0gaW52YWxpZFNuYXBPZmZz
ZXRJbmRleDsKICAgICAgICAgcmV0dXJuIGNsYW1wVG88ZmxvYXQ+KHN0YXJ0T2Zmc2V0LCAwLCBt
YXhTY3JvbGxPZmZzZXQpOwogICAgIH0KIAotICAgIGZsb2F0IHByb2plY3RlZERlc3RpbmF0aW9u
ID0gKHN0YXJ0T2Zmc2V0ICsgcHJvamVjdGVkSW5lcnRpYWxTY3JvbGxEaXN0YW5jZShpbml0aWFs
RGVsdGEpKSAvIHBhZ2VTY2FsZTsKLSAgICBmbG9hdCB0YXJnZXRPZmZzZXQgPSBjbG9zZXN0U25h
cE9mZnNldDxMYXlvdXRVbml0LCBmbG9hdD4oc25hcE9mZnNldHMsIHByb2plY3RlZERlc3RpbmF0
aW9uLCBpbml0aWFsRGVsdGEsIG91dEFjdGl2ZVNuYXBJbmRleCk7Ci0gICAgdGFyZ2V0T2Zmc2V0
ID0gY2xhbXBUbzxmbG9hdD4odGFyZ2V0T2Zmc2V0LCBzbmFwT2Zmc2V0cy5maXJzdCgpLCBzbmFw
T2Zmc2V0cy5sYXN0KCkpOwotICAgIHRhcmdldE9mZnNldCA9IGNsYW1wVG88ZmxvYXQ+KHRhcmdl
dE9mZnNldCwgMCwgbWF4U2Nyb2xsT2Zmc2V0KTsKKyAgICBmbG9hdCB0YXJnZXRPZmZzZXQgPSBj
bG9zZXN0U25hcE9mZnNldChzbmFwT2Zmc2V0cywgc25hcE9mZnNldFJhbmdlcywgcHJlZGljdGVk
T2Zmc2V0IC8gcGFnZVNjYWxlLCBpbml0aWFsRGVsdGEsIG91dEFjdGl2ZVNuYXBJbmRleCk7Cisg
ICAgZmxvYXQgbWluaW11bVRhcmdldE9mZnNldCA9IHN0ZDo6bWF4PGZsb2F0PigwLCBzbmFwT2Zm
c2V0cy5maXJzdCgpKTsKKyAgICBmbG9hdCBtYXhpbXVtVGFyZ2V0T2Zmc2V0ID0gc3RkOjptaW48
ZmxvYXQ+KG1heFNjcm9sbE9mZnNldCwgc25hcE9mZnNldHMubGFzdCgpKTsKKyAgICB0YXJnZXRP
ZmZzZXQgPSBjbGFtcFRvPGZsb2F0Pih0YXJnZXRPZmZzZXQsIG1pbmltdW1UYXJnZXRPZmZzZXQs
IG1heGltdW1UYXJnZXRPZmZzZXQpOwogICAgIHJldHVybiBwYWdlU2NhbGUgKiB0YXJnZXRPZmZz
ZXQ7CiB9CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
TGF5ZXJDb21wb3NpdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXll
ckNvbXBvc2l0b3IuY3BwCmluZGV4IDIxODYzOTBhNzM2MTBhNTgyZDczOWU0ODJlYjcyMmFkYzYz
YTNhYjMuLmU3ZTE4Y2E5ZGFkYjgzOWQ5YjYyNzYzZDRmNGZmYzZlM2JmNDBmMjAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuY3BwCkBA
IC0zOTA3LDYgKzM5MDcsMTAgQEAgdm9pZCBSZW5kZXJMYXllckNvbXBvc2l0b3I6OnVwZGF0ZVNj
cm9sbENvb3JkaW5hdGVkTGF5ZXIoUmVuZGVyTGF5ZXImIGxheWVyLCBMYXkKICAgICAgICAgICAg
ICAgICBzY3JvbGxpbmdHZW9tZXRyeS5ob3Jpem9udGFsU25hcE9mZnNldHMgPSAqb2Zmc2V0czsK
ICAgICAgICAgICAgIGlmIChjb25zdCBWZWN0b3I8TGF5b3V0VW5pdD4qIG9mZnNldHMgPSBsYXll
ci52ZXJ0aWNhbFNuYXBPZmZzZXRzKCkpCiAgICAgICAgICAgICAgICAgc2Nyb2xsaW5nR2VvbWV0
cnkudmVydGljYWxTbmFwT2Zmc2V0cyA9ICpvZmZzZXRzOworICAgICAgICAgICAgaWYgKGNvbnN0
IFZlY3RvcjxTY3JvbGxPZmZzZXRSYW5nZTxMYXlvdXRVbml0Pj4qIHJhbmdlcyA9IGxheWVyLmhv
cml6b250YWxTbmFwT2Zmc2V0UmFuZ2VzKCkpCisgICAgICAgICAgICAgICAgc2Nyb2xsaW5nR2Vv
bWV0cnkuaG9yaXpvbnRhbFNuYXBPZmZzZXRSYW5nZXMgPSAqcmFuZ2VzOworICAgICAgICAgICAg
aWYgKGNvbnN0IFZlY3RvcjxTY3JvbGxPZmZzZXRSYW5nZTxMYXlvdXRVbml0Pj4qIHJhbmdlcyA9
IGxheWVyLnZlcnRpY2FsU25hcE9mZnNldFJhbmdlcygpKQorICAgICAgICAgICAgICAgIHNjcm9s
bGluZ0dlb21ldHJ5LnZlcnRpY2FsU25hcE9mZnNldFJhbmdlcyA9ICpyYW5nZXM7CiAgICAgICAg
ICAgICBzY3JvbGxpbmdHZW9tZXRyeS5jdXJyZW50SG9yaXpvbnRhbFNuYXBQb2ludEluZGV4ID0g
bGF5ZXIuY3VycmVudEhvcml6b250YWxTbmFwUG9pbnRJbmRleCgpOwogICAgICAgICAgICAgc2Ny
b2xsaW5nR2VvbWV0cnkuY3VycmVudFZlcnRpY2FsU25hcFBvaW50SW5kZXggPSBsYXllci5jdXJy
ZW50VmVydGljYWxTbmFwUG9pbnRJbmRleCgpOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0lu
dGVybmFscy5jcHAKaW5kZXggMDNkY2JmMjA0M2ZkMjlhN2I5OWRlODMxOTY1N2UyNTUzMjEzM2Ey
YS4uOGU4MDIyZjMxMGM4ZDg0ZDA0NmU1NmUyMTBhMzU1ODFhNGZjMWY2MiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3Rlc3RpbmcvSW50ZXJuYWxzLmNwcApAQCAtMTE3LDYgKzExNyw3IEBACiAjaW5jbHVkZSAiU2No
ZW1lUmVnaXN0cnkuaCIKICNpbmNsdWRlICJTY3JpcHRlZEFuaW1hdGlvbkNvbnRyb2xsZXIuaCIK
ICNpbmNsdWRlICJTY3JvbGxpbmdDb29yZGluYXRvci5oIgorI2luY2x1ZGUgIlNjcm9sbGluZ01v
bWVudHVtQ2FsY3VsYXRvci5oIgogI2luY2x1ZGUgIlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oIgog
I2luY2x1ZGUgIlNldHRpbmdzLmgiCiAjaW5jbHVkZSAiU2hhZG93Um9vdC5oIgpAQCAtMzM0MCw2
ICszMzQxLDExIEBAIHN0YXRpYyB2b2lkIGFwcGVuZE9mZnNldHMoU3RyaW5nQnVpbGRlciYgYnVp
bGRlciwgY29uc3QgVmVjdG9yPExheW91dFVuaXQ+JiBzbmFwCiAgICAgYnVpbGRlci5hcHBlbmRM
aXRlcmFsKCIgfSIpOwogfQogICAgIAordm9pZCBJbnRlcm5hbHM6OnNldFBsYXRmb3JtTW9tZW50
dW1TY3JvbGxpbmdQcmVkaWN0aW9uRW5hYmxlZChib29sIGVuYWJsZWQpCit7CisgICAgU2Nyb2xs
aW5nTW9tZW50dW1DYWxjdWxhdG9yOjpzZXRQbGF0Zm9ybU1vbWVudHVtU2Nyb2xsaW5nUHJlZGlj
dGlvbkVuYWJsZWQoZW5hYmxlZCk7Cit9CisKIEV4Y2VwdGlvbk9yPFN0cmluZz4gSW50ZXJuYWxz
OjpzY3JvbGxTbmFwT2Zmc2V0cyhFbGVtZW50JiBlbGVtZW50KQogewogICAgIGlmICghZWxlbWVu
dC5yZW5kZXJCb3goKSkKQEAgLTMzNjcsMTcgKzMzNzMsMjEgQEAgRXhjZXB0aW9uT3I8U3RyaW5n
PiBJbnRlcm5hbHM6OnNjcm9sbFNuYXBPZmZzZXRzKEVsZW1lbnQmIGVsZW1lbnQpCiAgICAgCiAg
ICAgU3RyaW5nQnVpbGRlciByZXN1bHQ7CiAKLSAgICBpZiAoc2Nyb2xsYWJsZUFyZWEtPmhvcml6
b250YWxTbmFwT2Zmc2V0cygpKSB7Ci0gICAgICAgIHJlc3VsdC5hcHBlbmRMaXRlcmFsKCJob3Jp
em9udGFsID0gIik7Ci0gICAgICAgIGFwcGVuZE9mZnNldHMocmVzdWx0LCAqc2Nyb2xsYWJsZUFy
ZWEtPmhvcml6b250YWxTbmFwT2Zmc2V0cygpKTsKKyAgICBpZiAoYXV0byogb2Zmc2V0cyA9IHNj
cm9sbGFibGVBcmVhLT5ob3Jpem9udGFsU25hcE9mZnNldHMoKSkgeworICAgICAgICBpZiAob2Zm
c2V0cy0+c2l6ZSgpKSB7CisgICAgICAgICAgICByZXN1bHQuYXBwZW5kTGl0ZXJhbCgiaG9yaXpv
bnRhbCA9ICIpOworICAgICAgICAgICAgYXBwZW5kT2Zmc2V0cyhyZXN1bHQsICpvZmZzZXRzKTsK
KyAgICAgICAgfQogICAgIH0KIAotICAgIGlmIChzY3JvbGxhYmxlQXJlYS0+dmVydGljYWxTbmFw
T2Zmc2V0cygpKSB7Ci0gICAgICAgIGlmIChyZXN1bHQubGVuZ3RoKCkpCi0gICAgICAgICAgICBy
ZXN1bHQuYXBwZW5kTGl0ZXJhbCgiLCAiKTsKKyAgICBpZiAoYXV0byogb2Zmc2V0cyA9IHNjcm9s
bGFibGVBcmVhLT52ZXJ0aWNhbFNuYXBPZmZzZXRzKCkpIHsKKyAgICAgICAgaWYgKG9mZnNldHMt
PnNpemUoKSkgeworICAgICAgICAgICAgaWYgKHJlc3VsdC5sZW5ndGgoKSkKKyAgICAgICAgICAg
ICAgICByZXN1bHQuYXBwZW5kTGl0ZXJhbCgiLCAiKTsKIAotICAgICAgICByZXN1bHQuYXBwZW5k
TGl0ZXJhbCgidmVydGljYWwgPSAiKTsKLSAgICAgICAgYXBwZW5kT2Zmc2V0cyhyZXN1bHQsICpz
Y3JvbGxhYmxlQXJlYS0+dmVydGljYWxTbmFwT2Zmc2V0cygpKTsKKyAgICAgICAgICAgIHJlc3Vs
dC5hcHBlbmRMaXRlcmFsKCJ2ZXJ0aWNhbCA9ICIpOworICAgICAgICAgICAgYXBwZW5kT2Zmc2V0
cyhyZXN1bHQsICpvZmZzZXRzKTsKKyAgICAgICAgfQogICAgIH0KIAogICAgIHJldHVybiByZXN1
bHQudG9TdHJpbmcoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJu
YWxzLmggYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oCmluZGV4IGIzYWZlMDU3
MjBhNjM5YTMwYmI5M2E3MGEzNTE2MGQ1Y2Y4ZGI1YTYuLjgzNjFmNzNkYjc0YTQzYmMxOTc0ZjM3
YmNiNDc4N2RmY2FlNGRlNGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50
ZXJuYWxzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaApAQCAtNDc5
LDYgKzQ3OSw3IEBAIHB1YmxpYzoKIAogI2lmIEVOQUJMRShDU1NfU0NST0xMX1NOQVApCiAgICAg
RXhjZXB0aW9uT3I8U3RyaW5nPiBzY3JvbGxTbmFwT2Zmc2V0cyhFbGVtZW50Jik7CisgICAgdm9p
ZCBzZXRQbGF0Zm9ybU1vbWVudHVtU2Nyb2xsaW5nUHJlZGljdGlvbkVuYWJsZWQoYm9vbCk7CiAj
ZW5kaWYKIAogICAgIEV4Y2VwdGlvbk9yPFN0cmluZz4gcGF0aFN0cmluZ1dpdGhTaHJpbmtXcmFw
cGVkUmVjdHMoY29uc3QgVmVjdG9yPGRvdWJsZT4mIHJlY3RDb21wb25lbnRzLCBkb3VibGUgcmFk
aXVzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbCBi
L1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbAppbmRleCA4NDFhODdjNzAyZTc4
NzIyODRkMmViNDhhZmRkNjEwYjcwMmVlODg3Li4wZDcxYjhkMjgwNjRmMDdjZmJkODg2Njc1MzYz
MjUzNTVkOTQwN2IzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFs
cy5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsCkBAIC00NTYs
NiArNDU2LDcgQEAgZW51bSBFdmVudFRocm90dGxpbmdCZWhhdmlvciB7CiAKICNpZiBkZWZpbmVk
KEVOQUJMRV9DU1NfU0NST0xMX1NOQVApICYmIEVOQUJMRV9DU1NfU0NST0xMX1NOQVAKICAgICBb
TWF5VGhyb3dFeGNlcHRpb25dIERPTVN0cmluZyBzY3JvbGxTbmFwT2Zmc2V0cyhFbGVtZW50IGVs
ZW1lbnQpOworICAgIHZvaWQgc2V0UGxhdGZvcm1Nb21lbnR1bVNjcm9sbGluZ1ByZWRpY3Rpb25F
bmFibGVkKGJvb2xlYW4gZW5hYmxlZCk7CiAjZW5kaWYKIAogICAgIFtNYXlUaHJvd0V4Y2VwdGlv
bl0gRE9NU3RyaW5nIHBhdGhTdHJpbmdXaXRoU2hyaW5rV3JhcHBlZFJlY3RzKHNlcXVlbmNlPGRv
dWJsZT4gcmVjdENvbXBvbmVudHMsIGRvdWJsZSByYWRpdXMpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvU2hhcmVkL1Njcm9sbGluZy9SZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvclRyYW5z
YWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9TY3JvbGxpbmcvUmVtb3RlU2Nyb2xs
aW5nQ29vcmRpbmF0b3JUcmFuc2FjdGlvbi5jcHAKaW5kZXggYmJkZTc0Y2ZjMGU4OWY1ZmJiZTg2
YTk2NWRhNjljZWU3ZTUwYWZlZS4uYTA1NTcwMWE0MTRjMTBjNzFiMGY0ZjQ5OTE5NjA0NGYxYzc5
YzVjYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1Njcm9sbGluZy9SZW1vdGVT
Y3JvbGxpbmdDb29yZGluYXRvclRyYW5zYWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9T
aGFyZWQvU2Nyb2xsaW5nL1JlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yVHJhbnNhY3Rpb24uY3Bw
CkBAIC0xMjcsNiArMTI3LDggQEAgdm9pZCBBcmd1bWVudENvZGVyPFNjcm9sbGluZ1N0YXRlU2Ny
b2xsaW5nTm9kZT46OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdAogI2lmIEVOQUJMRShD
U1NfU0NST0xMX1NOQVApCiAgICAgU0NST0xMSU5HX05PREVfRU5DT0RFKFNjcm9sbGluZ1N0YXRl
U2Nyb2xsaW5nTm9kZTo6SG9yaXpvbnRhbFNuYXBPZmZzZXRzLCBob3Jpem9udGFsU25hcE9mZnNl
dHMpCiAgICAgU0NST0xMSU5HX05PREVfRU5DT0RFKFNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9k
ZTo6VmVydGljYWxTbmFwT2Zmc2V0cywgdmVydGljYWxTbmFwT2Zmc2V0cykKKyAgICBTQ1JPTExJ
TkdfTk9ERV9FTkNPREUoU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlOjpIb3Jpem9udGFsU25h
cE9mZnNldFJhbmdlcywgaG9yaXpvbnRhbFNuYXBPZmZzZXRSYW5nZXMpCisgICAgU0NST0xMSU5H
X05PREVfRU5DT0RFKFNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZTo6VmVydGljYWxTbmFwT2Zm
c2V0UmFuZ2VzLCB2ZXJ0aWNhbFNuYXBPZmZzZXRSYW5nZXMpCiAgICAgU0NST0xMSU5HX05PREVf
RU5DT0RFKFNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZTo6Q3VycmVudEhvcml6b250YWxTbmFw
T2Zmc2V0SW5kZXgsIGN1cnJlbnRIb3Jpem9udGFsU25hcFBvaW50SW5kZXgpCiAgICAgU0NST0xM
SU5HX05PREVfRU5DT0RFKFNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZTo6Q3VycmVudFZlcnRp
Y2FsU25hcE9mZnNldEluZGV4LCBjdXJyZW50VmVydGljYWxTbmFwUG9pbnRJbmRleCkKICNlbmRp
ZgpAQCAtMjAyLDYgKzIwNCw4IEBAIGJvb2wgQXJndW1lbnRDb2RlcjxTY3JvbGxpbmdTdGF0ZVNj
cm9sbGluZ05vZGU+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlciwgU2Nyb2xsCiAjaWYgRU5BQkxF
KENTU19TQ1JPTExfU05BUCkKICAgICBTQ1JPTExJTkdfTk9ERV9ERUNPREUoU2Nyb2xsaW5nU3Rh
dGVTY3JvbGxpbmdOb2RlOjpIb3Jpem9udGFsU25hcE9mZnNldHMsIFZlY3RvcjxmbG9hdD4sIHNl
dEhvcml6b250YWxTbmFwT2Zmc2V0cyk7CiAgICAgU0NST0xMSU5HX05PREVfREVDT0RFKFNjcm9s
bGluZ1N0YXRlU2Nyb2xsaW5nTm9kZTo6VmVydGljYWxTbmFwT2Zmc2V0cywgVmVjdG9yPGZsb2F0
Piwgc2V0VmVydGljYWxTbmFwT2Zmc2V0cyk7CisgICAgU0NST0xMSU5HX05PREVfREVDT0RFKFNj
cm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZTo6SG9yaXpvbnRhbFNuYXBPZmZzZXRSYW5nZXMsIFZl
Y3RvcjxTY3JvbGxPZmZzZXRSYW5nZTxmbG9hdD4+LCBzZXRIb3Jpem9udGFsU25hcE9mZnNldFJh
bmdlcykKKyAgICBTQ1JPTExJTkdfTk9ERV9ERUNPREUoU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdO
b2RlOjpWZXJ0aWNhbFNuYXBPZmZzZXRSYW5nZXMsIFZlY3RvcjxTY3JvbGxPZmZzZXRSYW5nZTxm
bG9hdD4+LCBzZXRWZXJ0aWNhbFNuYXBPZmZzZXRSYW5nZXMpCiAgICAgU0NST0xMSU5HX05PREVf
REVDT0RFKFNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZTo6Q3VycmVudEhvcml6b250YWxTbmFw
T2Zmc2V0SW5kZXgsIHVuc2lnbmVkLCBzZXRDdXJyZW50SG9yaXpvbnRhbFNuYXBQb2ludEluZGV4
KTsKICAgICBTQ1JPTExJTkdfTk9ERV9ERUNPREUoU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2Rl
OjpDdXJyZW50VmVydGljYWxTbmFwT2Zmc2V0SW5kZXgsIHVuc2lnbmVkLCBzZXRDdXJyZW50VmVy
dGljYWxTbmFwUG9pbnRJbmRleCk7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwIGIvU291cmNlL1dlYktpdDIvU2hhcmVk
L1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAKaW5kZXggMTQ3MDk5N2EwNzJlMGE3YTI5Mzg1ZDE0
ZTI2MmI3OTBlZTkxZjZkZi4uYzZhODU3MTk3ZDVlMWEyZWFjMDY3MDkwNjg1NWIzMDg4OGJjNzQ5
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVy
cy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5j
cHAKQEAgLTI0NzIsNCArMjQ3MiwyOSBAQCBib29sIEFyZ3VtZW50Q29kZXI8SURCS2V5UGF0aD46
OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyLCBJREJLZXlQYXRoJiBrZXlQYXRoKQogfQogI2VuZGlm
CiAKKyNpZiBFTkFCTEUoQ1NTX1NDUk9MTF9TTkFQKQorCit2b2lkIEFyZ3VtZW50Q29kZXI8U2Ny
b2xsT2Zmc2V0UmFuZ2U8ZmxvYXQ+Pjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFNj
cm9sbE9mZnNldFJhbmdlPGZsb2F0PiYgcmFuZ2UpCit7CisgICAgZW5jb2RlciA8PCByYW5nZS5z
dGFydDsKKyAgICBlbmNvZGVyIDw8IHJhbmdlLmVuZDsKK30KKworYm9vbCBBcmd1bWVudENvZGVy
PFNjcm9sbE9mZnNldFJhbmdlPGZsb2F0Pj46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyLCBTY3Jv
bGxPZmZzZXRSYW5nZTxmbG9hdD4mIHJhbmdlKQoreworICAgIGZsb2F0IHN0YXJ0OworICAgIGlm
ICghZGVjb2Rlci5kZWNvZGUoc3RhcnQpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBm
bG9hdCBlbmQ7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShlbmQpKQorICAgICAgICByZXR1cm4g
ZmFsc2U7CisKKyAgICByYW5nZS5zdGFydCA9IHN0YXJ0OworICAgIHJhbmdlLmVuZCA9IGVuZDsK
KyAgICByZXR1cm4gdHJ1ZTsKK30KKworI2VuZGlmCisKIH0gLy8gbmFtZXNwYWNlIElQQwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oIGIv
U291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oCmluZGV4IDQ4MTlm
Y2JjMDRhYzcxNjI1NjczYTg0NDY3Zjc0NTQyY2NiOTI5OTUuLjQ0MzdjYWQyMjU3MWRhOTI4YTk5
MWI4ZjdmZWIyYTI4NjVkMTVmZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9X
ZWJDb3JlQXJndW1lbnRDb2RlcnMuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViQ29y
ZUFyZ3VtZW50Q29kZXJzLmgKQEAgLTMwLDYgKzMwLDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL0Zy
YW1lTG9hZGVyVHlwZXMuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0luZGV4ZWREQi5oPgogI2luY2x1
ZGUgPFdlYkNvcmUvUGF5bWVudEhlYWRlcnMuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1Njcm9sbFNu
YXBPZmZzZXRzSW5mby5oPgogCiBuYW1lc3BhY2UgV1RGIHsKIGNsYXNzIE1vbm90b25pY1RpbWU7
CkBAIC01OTksNiArNjAwLDE1IEBAIHRlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8V2Vi
Q29yZTo6SURCS2V5UGF0aD4gewogCiAjZW5kaWYKIAorI2lmIEVOQUJMRShDU1NfU0NST0xMX1NO
QVApCisKK3RlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6U2Nyb2xsT2Zm
c2V0UmFuZ2U8ZmxvYXQ+PiB7CisgICAgc3RhdGljIHZvaWQgZW5jb2RlKEVuY29kZXImLCBjb25z
dCBXZWJDb3JlOjpTY3JvbGxPZmZzZXRSYW5nZTxmbG9hdD4mKTsKKyAgICBzdGF0aWMgYm9vbCBk
ZWNvZGUoRGVjb2RlciYsIFdlYkNvcmU6OlNjcm9sbE9mZnNldFJhbmdlPGZsb2F0PiYpOworfTsK
KworI2VuZGlmCisKIH0gLy8gbmFtZXNwYWNlIElQQwogCiBuYW1lc3BhY2UgV1RGIHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9TY3JvbGxpbmcvaW9zL1Njcm9sbGluZ1Ry
ZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVJT1MubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
U2Nyb2xsaW5nL2lvcy9TY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlSU9TLm1tCmlu
ZGV4IGM1NTFjZTg2MzZjZTIxNGQ4YWMyNTU4NDI4OTdhYTJhNzFkNWEzZjcuLjg3OWE5OGQ2YWI1
YjVhN2Y4YzU0ZmY0M2U1YWQxNDRhODA2ZDY2M2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9TY3JvbGxpbmcvaW9zL1Njcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05v
ZGVJT1MubW0KKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1Njcm9sbGluZy9pb3MvU2Ny
b2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZUlPUy5tbQpAQCAtMzksNiArMzksNyBAQAog
CiAjaWYgRU5BQkxFKENTU19TQ1JPTExfU05BUCkKICNpbXBvcnQgPFdlYkNvcmUvQXhpc1Njcm9s
bFNuYXBPZmZzZXRzLmg+CisjaW1wb3J0IDxXZWJDb3JlL1Njcm9sbFNuYXBPZmZzZXRzSW5mby5o
PgogI2VuZGlmCiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwpAQCAtODgsNyArODksNyBAQCB1
c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogICAgIGlmICghX3Njcm9sbGluZ1RyZWVOb2RlLT5o
b3Jpem9udGFsU25hcE9mZnNldHMoKS5pc0VtcHR5KCkpIHsKICAgICAgICAgdW5zaWduZWQgaW5k
ZXg7Ci0gICAgICAgIGZsb2F0IHBvdGVudGlhbFNuYXBQb3NpdGlvbiA9IGNsb3Nlc3RTbmFwT2Zm
c2V0PGZsb2F0LCBDR0Zsb2F0Pihfc2Nyb2xsaW5nVHJlZU5vZGUtPmhvcml6b250YWxTbmFwT2Zm
c2V0cygpLCBob3Jpem9udGFsVGFyZ2V0LCB2ZWxvY2l0eS54LCBpbmRleCk7CisgICAgICAgIGZs
b2F0IHBvdGVudGlhbFNuYXBQb3NpdGlvbiA9IGNsb3Nlc3RTbmFwT2Zmc2V0KF9zY3JvbGxpbmdU
cmVlTm9kZS0+aG9yaXpvbnRhbFNuYXBPZmZzZXRzKCksIF9zY3JvbGxpbmdUcmVlTm9kZS0+aG9y
aXpvbnRhbFNuYXBPZmZzZXRSYW5nZXMoKSwgaG9yaXpvbnRhbFRhcmdldCwgdmVsb2NpdHkueCwg
aW5kZXgpOwogICAgICAgICBfc2Nyb2xsaW5nVHJlZU5vZGUtPnNldEN1cnJlbnRIb3Jpem9udGFs
U25hcFBvaW50SW5kZXgoaW5kZXgpOwogICAgICAgICBpZiAoaG9yaXpvbnRhbFRhcmdldCA+PSAw
ICYmIGhvcml6b250YWxUYXJnZXQgPD0gc2Nyb2xsVmlldy5jb250ZW50U2l6ZS53aWR0aCkKICAg
ICAgICAgICAgIHRhcmdldENvbnRlbnRPZmZzZXQtPnggPSBwb3RlbnRpYWxTbmFwUG9zaXRpb247
CkBAIC05Niw3ICs5Nyw3IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiAgICAgaWYgKCFf
c2Nyb2xsaW5nVHJlZU5vZGUtPnZlcnRpY2FsU25hcE9mZnNldHMoKS5pc0VtcHR5KCkpIHsKICAg
ICAgICAgdW5zaWduZWQgaW5kZXg7Ci0gICAgICAgIGZsb2F0IHBvdGVudGlhbFNuYXBQb3NpdGlv
biA9IGNsb3Nlc3RTbmFwT2Zmc2V0PGZsb2F0LCBDR0Zsb2F0Pihfc2Nyb2xsaW5nVHJlZU5vZGUt
PnZlcnRpY2FsU25hcE9mZnNldHMoKSwgdmVydGljYWxUYXJnZXQsIHZlbG9jaXR5LnksIGluZGV4
KTsKKyAgICAgICAgZmxvYXQgcG90ZW50aWFsU25hcFBvc2l0aW9uID0gY2xvc2VzdFNuYXBPZmZz
ZXQoX3Njcm9sbGluZ1RyZWVOb2RlLT52ZXJ0aWNhbFNuYXBPZmZzZXRzKCksIF9zY3JvbGxpbmdU
cmVlTm9kZS0+dmVydGljYWxTbmFwT2Zmc2V0UmFuZ2VzKCksIHZlcnRpY2FsVGFyZ2V0LCB2ZWxv
Y2l0eS55LCBpbmRleCk7CiAgICAgICAgIF9zY3JvbGxpbmdUcmVlTm9kZS0+c2V0Q3VycmVudFZl
cnRpY2FsU25hcFBvaW50SW5kZXgoaW5kZXgpOwogICAgICAgICBpZiAodmVydGljYWxUYXJnZXQg
Pj0gMCAmJiB2ZXJ0aWNhbFRhcmdldCA8PSBzY3JvbGxWaWV3LmNvbnRlbnRTaXplLmhlaWdodCkK
ICAgICAgICAgICAgIHRhcmdldENvbnRlbnRPZmZzZXQtPnkgPSBwb3RlbnRpYWxTbmFwUG9zaXRp
b247CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1JlbW90ZVNjcm9s
bGluZ0Nvb3JkaW5hdG9yUHJveHlJT1MubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9z
L1JlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yUHJveHlJT1MubW0KaW5kZXggNmM5YTFjMDM5ZTA0
MjRmOTk3NWI1YWZjNTU5YzA2OWQwYmM1ODJkZi4uZGNhYTQ3ZWM0MDU2ZGI2ZDcyMTJkZWUwOWEx
ZTY2N2JkYTlkNDZjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9S
ZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvclByb3h5SU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9pb3MvUmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3JQcm94eUlPUy5tbQpAQCAt
MzksNiArMzksNyBAQAogCiAjaWYgRU5BQkxFKENTU19TQ1JPTExfU05BUCkKICNpbXBvcnQgPFdl
YkNvcmUvQXhpc1Njcm9sbFNuYXBPZmZzZXRzLmg+CisjaW1wb3J0IDxXZWJDb3JlL1Njcm9sbFNu
YXBPZmZzZXRzSW5mby5oPgogI2ltcG9ydCA8V2ViQ29yZS9TY3JvbGxUeXBlcy5oPgogI2ltcG9y
dCA8V2ViQ29yZS9TY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlLmg+CiAjZW5kaWYKQEAg
LTEyNCw3ICsxMjUsOSBAQCB2b2lkIFJlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yUHJveHk6OmFk
anVzdFRhcmdldENvbnRlbnRPZmZzZXRGb3JTbmFwcGluZyhDR1NpegogCiAgICAgaWYgKHNob3Vs
ZFNuYXBGb3JNYWluRnJhbWVTY3JvbGxpbmcoV2ViQ29yZTo6U2Nyb2xsRXZlbnRBeGlzOjpWZXJ0
aWNhbCkpIHsKICAgICAgICAgZmxvYXQgcG90ZW50aWFsU25hcFBvc2l0aW9uID0gY2xvc2VzdFNu
YXBPZmZzZXRGb3JNYWluRnJhbWVTY3JvbGxpbmcoV2ViQ29yZTo6U2Nyb2xsRXZlbnRBeGlzOjpW
ZXJ0aWNhbCwgdGFyZ2V0Q29udGVudE9mZnNldC0+eSwgdmVsb2NpdHkueSwgbV9jdXJyZW50VmVy
dGljYWxTbmFwUG9pbnRJbmRleCk7Ci0gICAgICAgIHBvdGVudGlhbFNuYXBQb3NpdGlvbiAtPSB0
b3BJbnNldDsKKyAgICAgICAgaWYgKG1fY3VycmVudFZlcnRpY2FsU25hcFBvaW50SW5kZXggIT0g
aW52YWxpZFNuYXBPZmZzZXRJbmRleCkKKyAgICAgICAgICAgIHBvdGVudGlhbFNuYXBQb3NpdGlv
biAtPSB0b3BJbnNldDsKKwogICAgICAgICBpZiAodGFyZ2V0Q29udGVudE9mZnNldC0+eSA+IDAg
JiYgdGFyZ2V0Q29udGVudE9mZnNldC0+eSA8IG1heFNjcm9sbE9mZnNldHMuaGVpZ2h0KQogICAg
ICAgICAgICAgdGFyZ2V0Q29udGVudE9mZnNldC0+eSA9IHN0ZDo6bWluPGZsb2F0PihtYXhTY3Jv
bGxPZmZzZXRzLmhlaWdodCwgcG90ZW50aWFsU25hcFBvc2l0aW9uKTsKICAgICB9CkBAIC0xNDIs
NyArMTQ1LDcgQEAgYm9vbCBSZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvclByb3h5OjpzaG91bGRT
bmFwRm9yTWFpbkZyYW1lU2Nyb2xsaW5nKFNjcm9sbEV2ZW4KICAgICAgICAgU2Nyb2xsaW5nVHJl
ZUZyYW1lU2Nyb2xsaW5nTm9kZSogcm9vdEZyYW1lID0gc3RhdGljX2Nhc3Q8U2Nyb2xsaW5nVHJl
ZUZyYW1lU2Nyb2xsaW5nTm9kZSo+KHJvb3QpOwogICAgICAgICBjb25zdCBWZWN0b3I8ZmxvYXQ+
JiBzbmFwT2Zmc2V0cyA9IGF4aXMgPT0gU2Nyb2xsRXZlbnRBeGlzOjpIb3Jpem9udGFsID8gcm9v
dEZyYW1lLT5ob3Jpem9udGFsU25hcE9mZnNldHMoKSA6IHJvb3RGcmFtZS0+dmVydGljYWxTbmFw
T2Zmc2V0cygpOwogICAgICAgICB1bnNpZ25lZCBjdXJyZW50SW5kZXggPSBheGlzID09IFNjcm9s
bEV2ZW50QXhpczo6SG9yaXpvbnRhbCA/IG1fY3VycmVudEhvcml6b250YWxTbmFwUG9pbnRJbmRl
eCA6IG1fY3VycmVudFZlcnRpY2FsU25hcFBvaW50SW5kZXg7Ci0gICAgICAgIHJldHVybiAoc25h
cE9mZnNldHMuc2l6ZSgpID4gMCkgJiYgKGN1cnJlbnRJbmRleCA8IHNuYXBPZmZzZXRzLnNpemUo
KSk7CisgICAgICAgIHJldHVybiBzbmFwT2Zmc2V0cy5zaXplKCkgJiYgKGN1cnJlbnRJbmRleCA8
IHNuYXBPZmZzZXRzLnNpemUoKSB8fCBjdXJyZW50SW5kZXggPT0gaW52YWxpZFNuYXBPZmZzZXRJ
bmRleCk7CiAgICAgfQogICAgIHJldHVybiBmYWxzZTsKIH0KQEAgLTE1Myw5ICsxNTYsMTAgQEAg
ZmxvYXQgUmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3JQcm94eTo6Y2xvc2VzdFNuYXBPZmZzZXRG
b3JNYWluRnJhbWVTY3JvbGxpbmcoU2MKICAgICBBU1NFUlQocm9vdCAmJiByb290LT5pc0ZyYW1l
U2Nyb2xsaW5nTm9kZSgpKTsKICAgICBTY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlKiBy
b290RnJhbWUgPSBzdGF0aWNfY2FzdDxTY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlKj4o
cm9vdCk7CiAgICAgY29uc3QgVmVjdG9yPGZsb2F0PiYgc25hcE9mZnNldHMgPSBheGlzID09IFNj
cm9sbEV2ZW50QXhpczo6SG9yaXpvbnRhbCA/IHJvb3RGcmFtZS0+aG9yaXpvbnRhbFNuYXBPZmZz
ZXRzKCkgOiByb290RnJhbWUtPnZlcnRpY2FsU25hcE9mZnNldHMoKTsKKyAgICBjb25zdCBWZWN0
b3I8U2Nyb2xsT2Zmc2V0UmFuZ2U8ZmxvYXQ+PiYgc25hcE9mZnNldFJhbmdlcyA9IGF4aXMgPT0g
U2Nyb2xsRXZlbnRBeGlzOjpIb3Jpem9udGFsID8gcm9vdEZyYW1lLT5ob3Jpem9udGFsU25hcE9m
ZnNldFJhbmdlcygpIDogcm9vdEZyYW1lLT52ZXJ0aWNhbFNuYXBPZmZzZXRSYW5nZXMoKTsKIAog
ICAgIGZsb2F0IHNjYWxlZFNjcm9sbERlc3RpbmF0aW9uID0gc2Nyb2xsRGVzdGluYXRpb24gLyBt
X3dlYlBhZ2VQcm94eS5kaXNwbGF5ZWRDb250ZW50U2NhbGUoKTsKLSAgICBmbG9hdCByYXdDbG9z
ZXN0U25hcE9mZnNldCA9IGNsb3Nlc3RTbmFwT2Zmc2V0PGZsb2F0LCBmbG9hdD4oc25hcE9mZnNl
dHMsIHNjYWxlZFNjcm9sbERlc3RpbmF0aW9uLCB2ZWxvY2l0eSwgY3VycmVudEluZGV4KTsKKyAg
ICBmbG9hdCByYXdDbG9zZXN0U25hcE9mZnNldCA9IGNsb3Nlc3RTbmFwT2Zmc2V0KHNuYXBPZmZz
ZXRzLCBzbmFwT2Zmc2V0UmFuZ2VzLCBzY2FsZWRTY3JvbGxEZXN0aW5hdGlvbiwgdmVsb2NpdHks
IGN1cnJlbnRJbmRleCk7CiAgICAgcmV0dXJuIHJhd0Nsb3Nlc3RTbmFwT2Zmc2V0ICogbV93ZWJQ
YWdlUHJveHkuZGlzcGxheWVkQ29udGVudFNjYWxlKCk7CiB9CiAKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCAwODFhNmQ0YTg0
NTUwYjA2YmQ3MzVhYmMxYjIzNTU0OTdhOGEyZDIyLi4xOWYyZmEwMDk1NDBlYWEyZGUxMTYwY2Zm
NjQ2ZjU1ODI0MmVlZjFkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIv
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTQgQEAKKzIwMTctMDEtMTAgIFdlbnNv
biBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CisKKyAgICAgICAgSW1wbGVtZW50ICJw
cm94aW1pdHkiIHNjcm9sbCBzbmFwcGluZworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTM1OTk0CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8xODE2MjQx
OD4KKworICAgICAgICBSZXZpZXdlZCBieSBEZWFuIEphY2tzb24uCisKKyAgICAgICAgQWRkcyAz
IG5ldyBsYXlvdXQgdGVzdHMgZm9yIHByb3hpbWl0eSBzY3JvbGwgc25hcHBpbmcuIEFsc28gdHdl
YWtzIHNvbWUgZXhpc3RpbmcgdGVzdHMgdGhhdCB0ZXN0IHNjcm9sbCBzbmFwcGluZworICAgICAg
ICBhZnRlciBzY3JvbGxpbmcgd2l0aCBtb21lbnR1bSB0byB1c2UgdGhlIGN1c3RvbSBoZXVyaXN0
aWMgZm9yIHByZWRpY3Rpbmcgc2Nyb2xsIGRlc3RpbmF0aW9uIGluc3RlYWQgb2YgcGxhdGZvcm0K
KyAgICAgICAgbW9tZW50dW0gc2Nyb2xsaW5nLiBUaGlzIGVuc3VyZXMgdGhhdCB0aGUgcmVzdWx0
cyBvZiBvdXIgbGF5b3V0IHRlc3RzIHRoYXQgZGVwZW5kIG9uIHByZWRpY3RpbmcgbW9tZW50dW0g
c2Nyb2xsCisgICAgICAgIGRlc3RpbmF0aW9uIGFyZSBjb25zaXN0ZW50IGFjcm9zcyBydW5zLgor
CisgICAgICAgICogdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvbGF0Y2hlZC1kaXYtd2l0aC1zY3Jv
bGwtc25hcC5odG1sOgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1z
bmFwL3Njcm9sbC1zbmFwLWlmcmFtZS5odG1sOgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Ny
b2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLW1hbmRhdG9yeS0yZC1vdmVyZmxvdy5odG1s
OgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1z
bmFwLW1hbmRhdG9yeS1ib3JkZXJzLmh0bWw6CisgICAgICAgICogdGlsZWQtZHJhd2luZy9zY3Jv
bGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtbWFuZGF0b3J5LWhpZGRlbi1zY3JvbGxiYXJz
Lmh0bWw6CisgICAgICAgICogdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Ny
b2xsLXNuYXAtbWFuZGF0b3J5LW1haW5mcmFtZS1ob3Jpem9udGFsLmh0bWw6CisgICAgICAgICog
dGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtbWFuZGF0b3J5
LW1haW5mcmFtZS1zbG93LWhvcml6b250YWwuaHRtbDoKKyAgICAgICAgKiB0aWxlZC1kcmF3aW5n
L3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1tYW5kYXRvcnktbWFpbmZyYW1lLXNs
b3ctdmVydGljYWwuaHRtbDoKKyAgICAgICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3Jv
bGwtc25hcC9zY3JvbGwtc25hcC1tYW5kYXRvcnktbWFpbmZyYW1lLXZlcnRpY2FsLXRoZW4taG9y
aXpvbnRhbC5odG1sOgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1z
bmFwL3Njcm9sbC1zbmFwLW1hbmRhdG9yeS1tYWluZnJhbWUtdmVydGljYWwuaHRtbDoKKyAgICAg
ICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1tYW5k
YXRvcnktb3ZlcmZsb3ctc3RhdGVsZXNzLmh0bWw6CisgICAgICAgICogdGlsZWQtZHJhd2luZy9z
Y3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtbWFuZGF0b3J5LW92ZXJmbG93Lmh0bWw6
CisgICAgICAgICogdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNu
YXAtbWFuZGF0b3J5LXBhZGRpbmcuaHRtbDoKKyAgICAgICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9s
bGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1tYW5kYXRvcnktcm90YXRlZC5odG1sOgorCisg
ICAgICAgIEZvcmNlIHRoZXNlIHRlc3RzIHRvIHVzZSBwbGF0Zm9ybS1pbmRlcGVuZGVudCBzY3Jv
bGxpbmcgbW9tZW50dW0gcHJlZGljdGlvbiwgYnkgbXVsdGlwbHlpbmcgdGhlIGxhc3Qgc2Nyb2xs
CisgICAgICAgIGRlbHRhIHVwb24gcmVsZWFzZSBieSBhIGNvbnN0YW50IGZhY3Rvci4KKworICAg
ICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLW1h
bmRhdG9yeS10aGVuLXByb3hpbWl0eS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHRp
bGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLW1hbmRhdG9yeS10
aGVuLXByb3hpbWl0eS5odG1sOiBBZGRlZC4KKworICAgICAgICBUZXN0cyB0aGF0IGFmdGVyIGNo
YW5naW5nIHNjcm9sbC1zbmFwLXR5cGUgZnJvbSBtYW5kYXRvcnkgdG8gcHJveGltaXR5LCBzd2lw
aW5nIGRvd253YXJkcyBubyBsb25nZXIgc25hcHMgdGhlCisgICAgICAgIHNjcm9sbCBvZmZzZXQg
dG8gdGhlIHNlY29uZCBib3gsIGJ1dCBpbnN0ZWFkIGxlYXZlcyB0aGUgc2Nyb2xsIG9mZnNldCBz
b21ld2hlcmUgaW4gdGhlIG1pZGRsZSBvZiB0aGUgZmlyc3QgYm94LgorCisgICAgICAgICogdGls
ZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtcHJveGltaXR5LW1h
aW5mcmFtZS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Ny
b2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLXByb3hpbWl0eS1tYWluZnJhbWUuaHRtbDog
QWRkZWQuCisKKyAgICAgICAgVGVzdHMgdGhhdCB3aGVuIHNjcm9sbC1zbmFwLXR5cGUgaXMgcHJv
eGltaXR5IGluIHRoZSBtYWluZnJhbWUsIHNjcm9sbGluZyBzbGlnaHRseSBkb3dud2FyZHMgc25h
cHMgdGhlIHNjcm9sbAorICAgICAgICBvZmZzZXQgYmFjayB1cCB0byB0aGUgdG9wOyBzY3JvbGxp
bmcgc29tZXdoZXJlIGluIHRoZSBtaWRkbGUgb2YgdGhlIGZpcnN0IGJveCBkb2VzIG5vdCBzbmFw
IHRoZSBzY3JvbGwgb2Zmc2V0OworICAgICAgICBhbmQgc2Nyb2xsaW5nIG5lYXIgdGhlIGVuZCBv
ZiB0aGUgZmlyc3QgYm94IHNuYXBzIHRoZSBzY3JvbGwgb2Zmc2V0IHRvIHRoZSBzZWNvbmQgYm94
LgorCisgICAgICAgICogdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xs
LXNuYXAtcHJveGltaXR5LW92ZXJmbG93LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICog
dGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtcHJveGltaXR5
LW92ZXJmbG93Lmh0bWw6IEFkZGVkLgorCisgICAgICAgIFNpbWlsYXIgdG8gc2Nyb2xsLXNuYXAt
cHJveGltaXR5LW1haW5mcmFtZS5odG1sLCBleGNlcHQgZm9yIG92ZXJmbG93IHNjcm9sbGluZyBp
bnN0ZWFkIG9mIHRoZSBtYWluZnJhbWUuCisKKyAgICAgICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9s
bGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1zY3JvbGxpbmctanVtcHMtdG8tdG9wLmh0bWw6
CisKIDIwMTctMDEtMTAgIEplciBOb2JsZSAgPGplci5ub2JsZUBhcHBsZS5jb20+CiAKICAgICAg
ICAgQWRkIHN1cHBvcnQgZm9yIE1lZGlhS2V5cy5jcmVhdGVTZXNzaW9uKCkuCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9sYXRjaGVkLWRpdi13aXRoLXNj
cm9sbC1zbmFwLmh0bWwgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9sYXRj
aGVkLWRpdi13aXRoLXNjcm9sbC1zbmFwLmh0bWwKaW5kZXggNDczNWFlYTZjYTk4NTQ3MDZkN2Yw
NmI1N2VmMjhhZTEzOWViZWY5OS4uZDlhZjdlNTJkNDMyNzU3YTNhMjY2MzU0MGRmYWQzN2RjZTMw
ZTMwOSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvbGF0
Y2hlZC1kaXYtd2l0aC1zY3JvbGwtc25hcC5odG1sCisrKyBiL0xheW91dFRlc3RzL3RpbGVkLWRy
YXdpbmcvc2Nyb2xsaW5nL2xhdGNoZWQtZGl2LXdpdGgtc2Nyb2xsLXNuYXAuaHRtbApAQCAtNzQs
NiArNzQsNyBAQAogICAgICAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKHJlc29sdmUgPT4gewog
ICAgICAgICAgICAgICAgIHdyaXRlKGAqIFN3aXBpbmcgJHttb21lbnR1bSA/ICJ3aXRoIiA6ICJ3
aXRob3V0In0gbW9tZW50dW0gaW4gJHtlbGVtZW50LmlkfSB3aXRoIHNjcm9sbCBvZmZzZXQgJHtl
bGVtZW50LnNjcm9sbExlZnR9YCk7CiAgICAgICAgICAgICAgICAgbGV0IGxvY2F0aW9uID0gbG9j
YXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGVsZW1lbnQpOworICAgICAgICAgICAgICAgIGludGVy
bmFscy5zZXRQbGF0Zm9ybU1vbWVudHVtU2Nyb2xsaW5nUHJlZGljdGlvbkVuYWJsZWQoZmFsc2Up
OwogICAgICAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vbml0b3JXaGVlbEV2ZW50cygpOwogICAg
ICAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKGxvY2F0aW9uLngsIGxvY2F0aW9u
LnkpOwogICAgICAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxB
bmRNb21lbnR1bVBoYXNlcygtMSwgMCwgImJlZ2FuIiwgIm5vbmUiKTsKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFw
LWlmcmFtZS5odG1sIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xs
LXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLmh0bWwKaW5kZXggMTgyZTE5ZjU3MWQ4Zjg4MDgwYzkx
YThiY2QyMzQwYTRmZWEyZmU2MC4uZGYyZTFmZmU0OWZjODJkYWIyNTQyM2M4ZDUxNDFlNWE3ODhh
ZTFlMiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Ny
b2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQt
ZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLmh0bWwKQEAg
LTE0Nyw2ICsxNDcsNyBAQAogICAgICAgICB7CiAgICAgICAgICAgICBpZiAod2luZG93LmV2ZW50
U2VuZGVyKSB7CiAgICAgICAgICAgICAgICAgZXZlbnRTZW5kZXIubW9uaXRvcldoZWVsRXZlbnRz
KCk7CisgICAgICAgICAgICAgICAgaW50ZXJuYWxzLnNldFBsYXRmb3JtTW9tZW50dW1TY3JvbGxp
bmdQcmVkaWN0aW9uRW5hYmxlZChmYWxzZSk7CiAgICAgICAgICAgICAgICAgc2V0VGltZW91dChm
dW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVUZXN0KCdob3Jpem9udGFsVGFyZ2V0JykgfSwgMCk7CiAg
ICAgICAgICAgICB9CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RpbGVkLWRy
YXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLW1hbmRhdG9yeS0yZC1vdmVy
Zmxvdy5odG1sIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNu
YXAvc2Nyb2xsLXNuYXAtbWFuZGF0b3J5LTJkLW92ZXJmbG93Lmh0bWwKaW5kZXggYWMxYWI4ODJk
YzhmMzUxMGRkMmNlZTdmNjUzOTFiOTVmMmQwYTNlMS4uN2IwYWQzYjI2MDQ5OTg1OWM5NTJmMjI5
MjE5OTQ3OTZmZjMyNmRlNCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9z
Y3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtbWFuZGF0b3J5LTJkLW92ZXJmbG93Lmh0
bWwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAv
c2Nyb2xsLXNuYXAtbWFuZGF0b3J5LTJkLW92ZXJmbG93Lmh0bWwKQEAgLTEyMyw2ICsxMjMsNyBA
QAogICAgICAgICBmdW5jdGlvbiBvbkxvYWQoKSB7CiAgICAgICAgICAgICBpZiAod2luZG93LmV2
ZW50U2VuZGVyKSB7CiAgICAgICAgICAgICAgICAgZXZlbnRTZW5kZXIubW9uaXRvcldoZWVsRXZl
bnRzKCk7CisgICAgICAgICAgICAgICAgaW50ZXJuYWxzLnNldFBsYXRmb3JtTW9tZW50dW1TY3Jv
bGxpbmdQcmVkaWN0aW9uRW5hYmxlZChmYWxzZSk7CiAgICAgICAgICAgICAgICAgc2V0VGltZW91
dChzY3JvbGxHbGlkZVRlc3QsIDApOwogICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAg
ICAgICB2YXIgbWVzc2FnZUxvY2F0aW9uID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInNuYXAt
ZnJvbSIpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcv
c2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtbWFuZGF0b3J5LWJvcmRlcnMuaHRtbCBiL0xheW91dFRl
c3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLW1hbmRh
dG9yeS1ib3JkZXJzLmh0bWwKaW5kZXggNDFkZWQwOTZhYjk1NmM5MGFiODg0MTVhZTQ4NDJlY2Vm
ZmMzMGM5MC4uOWM3NTI1OGRmYjBkZGM3YjljNmVlMWE1NWI3NThmZmViYzkxMmVhYSAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Ny
b2xsLXNuYXAtbWFuZGF0b3J5LWJvcmRlcnMuaHRtbAorKysgYi9MYXlvdXRUZXN0cy90aWxlZC1k
cmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1tYW5kYXRvcnktYm9yZGVy
cy5odG1sCkBAIC0xNzcsNiArMTc3LDcgQEAKICAgICAgICAgewogICAgICAgICAgICAgaWYgKHdp
bmRvdy5ldmVudFNlbmRlcikgewogICAgICAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vbml0b3JX
aGVlbEV2ZW50cygpOworICAgICAgICAgICAgICAgIGludGVybmFscy5zZXRQbGF0Zm9ybU1vbWVu
dHVtU2Nyb2xsaW5nUHJlZGljdGlvbkVuYWJsZWQoZmFsc2UpOwogICAgICAgICAgICAgICAgIHNl
dFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVzdCgnaG9yaXpvbnRhbFRhcmdldCcp
IH0sIDApOwogICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICB2YXIgbWVzc2Fn
ZUxvY2F0aW9uSCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdpdGVtSDAnKTsKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9s
bC1zbmFwLW1hbmRhdG9yeS1oaWRkZW4tc2Nyb2xsYmFycy5odG1sIGIvTGF5b3V0VGVzdHMvdGls
ZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtbWFuZGF0b3J5LWhp
ZGRlbi1zY3JvbGxiYXJzLmh0bWwKaW5kZXggYjRjZjg5OGZhMzBjNDEyMTk0ZjAyNmExM2I3N2Ux
MWE1YTNkYmRmOC4uYTA0MzU5MDZkOTYwMzUzNDdjNWMxNjg3ZGNmMTQ4OWNkODM1NjJhMiAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAv
c2Nyb2xsLXNuYXAtbWFuZGF0b3J5LWhpZGRlbi1zY3JvbGxiYXJzLmh0bWwKKysrIGIvTGF5b3V0
VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtbWFu
ZGF0b3J5LWhpZGRlbi1zY3JvbGxiYXJzLmh0bWwKQEAgLTQ0LDYgKzQ0LDcgQEAKICAgICAgICAg
ICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9CiAKKyAgICAgICAgICAgIGludGVybmFscy5z
ZXRQbGF0Zm9ybU1vbWVudHVtU2Nyb2xsaW5nUHJlZGljdGlvbkVuYWJsZWQoZmFsc2UpOwogICAg
ICAgICAgICAgZXZlbnRTZW5kZXIubW9uaXRvcldoZWVsRXZlbnRzKCk7CiAgICAgICAgICAgICBl
dmVudFNlbmRlci5tb3VzZU1vdmVUbygyNTAsIDI1MCk7CiAgICAgICAgICAgICBldmVudFNlbmRl
ci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgLTEsICJiZWdhbiIs
ICJub25lIik7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGlu
Zy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1tYW5kYXRvcnktbWFpbmZyYW1lLWhvcml6b250YWwu
aHRtbCBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Nj
cm9sbC1zbmFwLW1hbmRhdG9yeS1tYWluZnJhbWUtaG9yaXpvbnRhbC5odG1sCmluZGV4IDYxZWEy
ZWMwYmIwM2FkMGEyNjY1OWJhM2NmZTNiZjJjNWY0NTZiOTAuLmY5ZDcyNzhhYWU4Mzg5MTJjNzhh
M2JkMTIyMjUxZmM1OTc4OGFlZmQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdp
bmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLW1hbmRhdG9yeS1tYWluZnJhbWUt
aG9yaXpvbnRhbC5odG1sCisrKyBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5n
L3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLW1hbmRhdG9yeS1tYWluZnJhbWUtaG9yaXpvbnRhbC5o
dG1sCkBAIC05MSw2ICs5MSw3IEBACiAKICAgICAgICAgICAgIGlmICh3aW5kb3cuZXZlbnRTZW5k
ZXIpIHsKICAgICAgICAgICAgICAgICBldmVudFNlbmRlci5tb25pdG9yV2hlZWxFdmVudHMoKTsK
KyAgICAgICAgICAgICAgICBpbnRlcm5hbHMuc2V0UGxhdGZvcm1Nb21lbnR1bVNjcm9sbGluZ1By
ZWRpY3Rpb25FbmFibGVkKGZhbHNlKTsKICAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KHNjcm9s
bEdsaWRlVGVzdCwgMCk7CiAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgIHZh
ciBtZXNzYWdlTG9jYXRpb24gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnaXRlbTAnKTsKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFw
L3Njcm9sbC1zbmFwLW1hbmRhdG9yeS1tYWluZnJhbWUtc2xvdy1ob3Jpem9udGFsLmh0bWwgYi9M
YXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25h
cC1tYW5kYXRvcnktbWFpbmZyYW1lLXNsb3ctaG9yaXpvbnRhbC5odG1sCmluZGV4IGM1Y2QwM2M3
MjkxMTQ4NjE3YTA0MDAxZjViN2QxNmU2ZTZmZDI1N2UuLmRmZGRlODUxZTlkNjExMzk5ZDBiZTU5
N2JmMDgwZDQ0ZWMxYmRkZDggMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcv
c2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLW1hbmRhdG9yeS1tYWluZnJhbWUtc2xv
dy1ob3Jpem9udGFsLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxp
bmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtbWFuZGF0b3J5LW1haW5mcmFtZS1zbG93LWhvcml6
b250YWwuaHRtbApAQCAtOTEsNiArOTEsNyBAQAogCiAgICAgICAgICAgICBpZiAod2luZG93LmV2
ZW50U2VuZGVyKSB7CiAgICAgICAgICAgICAgICAgZXZlbnRTZW5kZXIubW9uaXRvcldoZWVsRXZl
bnRzKCk7CisgICAgICAgICAgICAgICAgaW50ZXJuYWxzLnNldFBsYXRmb3JtTW9tZW50dW1TY3Jv
bGxpbmdQcmVkaWN0aW9uRW5hYmxlZChmYWxzZSk7CiAgICAgICAgICAgICAgICAgc2V0VGltZW91
dChzY3JvbGxHbGlkZVRlc3QsIDApOwogICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAg
ICAgICB2YXIgbWVzc2FnZUxvY2F0aW9uID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2l0ZW0w
Jyk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3Jv
bGwtc25hcC9zY3JvbGwtc25hcC1tYW5kYXRvcnktbWFpbmZyYW1lLXNsb3ctdmVydGljYWwuaHRt
bCBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9s
bC1zbmFwLW1hbmRhdG9yeS1tYWluZnJhbWUtc2xvdy12ZXJ0aWNhbC5odG1sCmluZGV4IDhkODUx
NDc0NWYwZDJiZmVjYzE2ZWJkYTBjZTI1NGQ4YmMzOGYzNDcuLjYyNjgyNDQ1NWFmY2VmOGRmYWZm
MDZhODU0N2YwNDdkNWZiMmIwNWIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdp
bmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLW1hbmRhdG9yeS1tYWluZnJhbWUt
c2xvdy12ZXJ0aWNhbC5odG1sCisrKyBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xs
aW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLW1hbmRhdG9yeS1tYWluZnJhbWUtc2xvdy12ZXJ0
aWNhbC5odG1sCkBAIC05MCw2ICs5MCw3IEBACiAgICAgICAgIGZ1bmN0aW9uIG9uTG9hZCgpIHsK
ICAgICAgICAgICAgIGlmICh3aW5kb3cuZXZlbnRTZW5kZXIpIHsKICAgICAgICAgICAgICAgICBl
dmVudFNlbmRlci5tb25pdG9yV2hlZWxFdmVudHMoKTsKKyAgICAgICAgICAgICAgICBpbnRlcm5h
bHMuc2V0UGxhdGZvcm1Nb21lbnR1bVNjcm9sbGluZ1ByZWRpY3Rpb25FbmFibGVkKGZhbHNlKTsK
ICAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KHNjcm9sbEdsaWRlVGVzdCwgMCk7CiAgICAgICAg
ICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgIHZhciBtZXNzYWdlTG9jYXRpb24gPSBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgnaXRlbTAnKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3Rp
bGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLW1hbmRhdG9yeS1t
YWluZnJhbWUtdmVydGljYWwtdGhlbi1ob3Jpem9udGFsLmh0bWwgYi9MYXlvdXRUZXN0cy90aWxl
ZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1tYW5kYXRvcnktbWFp
bmZyYW1lLXZlcnRpY2FsLXRoZW4taG9yaXpvbnRhbC5odG1sCmluZGV4IDg5ZjRlMTg3MTQ4YjJm
NmNiNTJjZWQ5YjljYTZjMzE2ZGI2ODRiYWIuLjg1Mzg1ODFhYmY5ZjVmYzE3ZWJhOGZjYjQzMjVm
YWM4ZGE4MmNmMzkgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xs
aW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLW1hbmRhdG9yeS1tYWluZnJhbWUtdmVydGljYWwt
dGhlbi1ob3Jpem9udGFsLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3Jv
bGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtbWFuZGF0b3J5LW1haW5mcmFtZS12ZXJ0aWNh
bC10aGVuLWhvcml6b250YWwuaHRtbApAQCAtNTIsNiArNTIsNyBAQAogICAgICAgICBmdW5jdGlv
biBvbkxvYWQoKSB7CiAgICAgICAgICAgICBpZiAod2luZG93LmV2ZW50U2VuZGVyKSB7CiAgICAg
ICAgICAgICAgICAgZXZlbnRTZW5kZXIubW9uaXRvcldoZWVsRXZlbnRzKCk7CisgICAgICAgICAg
ICAgICAgaW50ZXJuYWxzLnNldFBsYXRmb3JtTW9tZW50dW1TY3JvbGxpbmdQcmVkaWN0aW9uRW5h
YmxlZChmYWxzZSk7CiAgICAgICAgICAgICAgICAgc2V0VGltZW91dChzY3JvbGxTbmFwVGVzdCwg
MCk7CiAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgIHZhciBtZXNzYWdlTG9j
YXRpb24gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnaXRlbTAnKTsKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFw
LW1hbmRhdG9yeS1tYWluZnJhbWUtdmVydGljYWwuaHRtbCBiL0xheW91dFRlc3RzL3RpbGVkLWRy
YXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLW1hbmRhdG9yeS1tYWluZnJh
bWUtdmVydGljYWwuaHRtbAppbmRleCA2ZTcxMDEzNGUxY2Y5ZDM4NTkwOWFiYjQzNDVjZWZiNGVi
M2U4NWNlLi45ZmQyODljYTFmNTQ2OWQyYTg0MGVjNzBiOTgzZmEyODQ3NGY1NDRmIDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3Jv
bGwtc25hcC1tYW5kYXRvcnktbWFpbmZyYW1lLXZlcnRpY2FsLmh0bWwKKysrIGIvTGF5b3V0VGVz
dHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtbWFuZGF0
b3J5LW1haW5mcmFtZS12ZXJ0aWNhbC5odG1sCkBAIC05MSw2ICs5MSw3IEBACiAKICAgICAgICAg
ICAgIGlmICh3aW5kb3cuZXZlbnRTZW5kZXIpIHsKICAgICAgICAgICAgICAgICBldmVudFNlbmRl
ci5tb25pdG9yV2hlZWxFdmVudHMoKTsKKyAgICAgICAgICAgICAgICBpbnRlcm5hbHMuc2V0UGxh
dGZvcm1Nb21lbnR1bVNjcm9sbGluZ1ByZWRpY3Rpb25FbmFibGVkKGZhbHNlKTsKICAgICAgICAg
ICAgICAgICBzZXRUaW1lb3V0KHNjcm9sbEdsaWRlVGVzdCwgMCk7CiAgICAgICAgICAgICB9IGVs
c2UgewogICAgICAgICAgICAgICAgIHZhciBtZXNzYWdlTG9jYXRpb24gPSBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgnaXRlbTAnKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdp
bmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLW1hbmRhdG9yeS1vdmVyZmxvdy1z
dGF0ZWxlc3MuaHRtbCBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9s
bC1zbmFwL3Njcm9sbC1zbmFwLW1hbmRhdG9yeS1vdmVyZmxvdy1zdGF0ZWxlc3MuaHRtbAppbmRl
eCBjYjk0ZjY5ODk3ODE5YTIyZWU5MWYzZTVjNDUwZTUxNzYzYmEzNmIwLi5kMjViNTliMDFjNzhk
N2ViMjlmODNlZTk1NDQwMjJkYzZiMTQ2Y2M3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy90aWxl
ZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1tYW5kYXRvcnktb3Zl
cmZsb3ctc3RhdGVsZXNzLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3Jv
bGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtbWFuZGF0b3J5LW92ZXJmbG93LXN0YXRlbGVz
cy5odG1sCkBAIC02OCw2ICs2OCw3IEBACiAgICAgICAgIHsKICAgICAgICAgICAgIGlmICh3aW5k
b3cuZXZlbnRTZW5kZXIpIHsKICAgICAgICAgICAgICAgICBldmVudFNlbmRlci5tb25pdG9yV2hl
ZWxFdmVudHMoKTsKKyAgICAgICAgICAgICAgICBpbnRlcm5hbHMuc2V0UGxhdGZvcm1Nb21lbnR1
bVNjcm9sbGluZ1ByZWRpY3Rpb25FbmFibGVkKGZhbHNlKTsKICAgICAgICAgICAgICAgICBzZXRU
aW1lb3V0KHNjcm9sbFNuYXBUZXN0LCAwKTsKICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAg
ICAgICAgICAgdmFyIG1lc3NhZ2VMb2NhdGlvbkggPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgi
aXRlbTAiKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5n
L3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLW1hbmRhdG9yeS1vdmVyZmxvdy5odG1sIGIvTGF5b3V0
VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtbWFu
ZGF0b3J5LW92ZXJmbG93Lmh0bWwKaW5kZXggYjM2ZmRkNTg4NzcwZGYyZjZiZTQxN2U5ZTNlZTdh
MDk1YTQwZDdmZC4uZjczMmYzYTlkMmU5MjMxODU3ZWRlZTA5NWY1NzQxZTE0OWI2MzdkMyAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAv
c2Nyb2xsLXNuYXAtbWFuZGF0b3J5LW92ZXJmbG93Lmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvdGls
ZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtbWFuZGF0b3J5LW92
ZXJmbG93Lmh0bWwKQEAgLTE2Nyw2ICsxNjcsNyBAQAogICAgICAgICB7CiAgICAgICAgICAgICBp
ZiAod2luZG93LmV2ZW50U2VuZGVyKSB7CiAgICAgICAgICAgICAgICAgZXZlbnRTZW5kZXIubW9u
aXRvcldoZWVsRXZlbnRzKCk7CisgICAgICAgICAgICAgICAgaW50ZXJuYWxzLnNldFBsYXRmb3Jt
TW9tZW50dW1TY3JvbGxpbmdQcmVkaWN0aW9uRW5hYmxlZChmYWxzZSk7CiAgICAgICAgICAgICAg
ICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVUZXN0KCdob3Jpem9udGFsVGFy
Z2V0JykgfSwgMCk7CiAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgIHZhciBt
ZXNzYWdlTG9jYXRpb25IID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2l0ZW1IMCcpOwpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAv
c2Nyb2xsLXNuYXAtbWFuZGF0b3J5LXBhZGRpbmcuaHRtbCBiL0xheW91dFRlc3RzL3RpbGVkLWRy
YXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLW1hbmRhdG9yeS1wYWRkaW5n
Lmh0bWwKaW5kZXggMGExMTdkY2Q2NGY5NWY2MTc1NDhmOThiYzA1NTkzNGY5ZGJjMGUwZi4uNWRi
YzFjZjAwYTcxODU0ZjcyZmVkOTE1ZDFlNDhmYzAxNDdhODUzNiAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtbWFu
ZGF0b3J5LXBhZGRpbmcuaHRtbAorKysgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9s
bGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1tYW5kYXRvcnktcGFkZGluZy5odG1sCkBAIC0x
NzcsNiArMTc3LDcgQEAKICAgICAgICAgewogICAgICAgICAgICAgaWYgKHdpbmRvdy5ldmVudFNl
bmRlcikgewogICAgICAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vbml0b3JXaGVlbEV2ZW50cygp
OworICAgICAgICAgICAgICAgIGludGVybmFscy5zZXRQbGF0Zm9ybU1vbWVudHVtU2Nyb2xsaW5n
UHJlZGljdGlvbkVuYWJsZWQoZmFsc2UpOwogICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVu
Y3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVzdCgnaG9yaXpvbnRhbFRhcmdldCcpIH0sIDApOwogICAg
ICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICB2YXIgbWVzc2FnZUxvY2F0aW9uSCA9
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdpdGVtSDAnKTsKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLW1hbmRh
dG9yeS1yb3RhdGVkLmh0bWwgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9z
Y3JvbGwtc25hcC9zY3JvbGwtc25hcC1tYW5kYXRvcnktcm90YXRlZC5odG1sCmluZGV4IGM5MzAx
YWQ5MzllZjIwNTcwMDczMWY2ODA2NmE4ZTc3ZGIxNWYyNWYuLmM0ZWU5NDczOGE4MDJhY2ZkZjMy
YjFmODI0Nzc3ZTUzZTcyN2Y3YWMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdp
bmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLW1hbmRhdG9yeS1yb3RhdGVkLmh0
bWwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAv
c2Nyb2xsLXNuYXAtbWFuZGF0b3J5LXJvdGF0ZWQuaHRtbApAQCAtMTY5LDYgKzE2OSw3IEBACiAg
ICAgICAgIHsKICAgICAgICAgICAgIGlmICh3aW5kb3cuZXZlbnRTZW5kZXIpIHsKICAgICAgICAg
ICAgICAgICBldmVudFNlbmRlci5tb25pdG9yV2hlZWxFdmVudHMoKTsKKyAgICAgICAgICAgICAg
ICBpbnRlcm5hbHMuc2V0UGxhdGZvcm1Nb21lbnR1bVNjcm9sbGluZ1ByZWRpY3Rpb25FbmFibGVk
KGZhbHNlKTsKICAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxH
bGlkZVRlc3QoJ2hvcml6b250YWxUYXJnZXQnKSB9LCAwKTsKICAgICAgICAgICAgIH0gZWxzZSB7
CiAgICAgICAgICAgICAgICAgdmFyIG1lc3NhZ2VMb2NhdGlvbkggPSBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCgnaXRlbUgwJyk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5n
L3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1tYW5kYXRvcnktdGhlbi1wcm94aW1p
dHktZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Ny
b2xsLXNuYXAvc2Nyb2xsLXNuYXAtbWFuZGF0b3J5LXRoZW4tcHJveGltaXR5LWV4cGVjdGVkLnR4
dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi5hYTAzZjEzYzJlZDNiZTFhNDExN2Q4OWJmMzk4NzE0OGRhOTA4YTIwCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Ny
b2xsLXNuYXAvc2Nyb2xsLXNuYXAtbWFuZGF0b3J5LXRoZW4tcHJveGltaXR5LWV4cGVjdGVkLnR4
dApAQCAtMCwwICsxLDcgQEAKK1Njcm9sbGluZyBpbiBjb250YWluZXIgd2l0aCBzY3JvbGwtc25h
cC10eXBlOiB5IG1hbmRhdG9yeQorLSBEaWQgdGhlIHNjcm9sbGluZyBzbmFwIHRvIHRoZSB0b3A/
IE5PCistIERpZCBzY3JvbGxpbmcgc25hcCB0byB0aGUgc2Vjb25kIGJveD8gWUVTCitTY3JvbGxp
bmcgaW4gY29udGFpbmVyIHdpdGggc2Nyb2xsLXNuYXAtdHlwZTogeSBwcm94aW1pdHkKKy0gRGlk
IHRoZSBzY3JvbGxpbmcgc25hcCB0byB0aGUgdG9wPyBOTworLSBEaWQgc2Nyb2xsaW5nIHNuYXAg
dG8gdGhlIHNlY29uZCBib3g/IE5PCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RpbGVkLWRy
YXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLW1hbmRhdG9yeS10aGVuLXBy
b3hpbWl0eS5odG1sIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xs
LXNuYXAvc2Nyb2xsLXNuYXAtbWFuZGF0b3J5LXRoZW4tcHJveGltaXR5Lmh0bWwKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNDJmZWRlZDU2NDA1YTAxYzk1NmY2NjE3ZjA4NjcxYjU5MmE3ZjI1NgotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Nj
cm9sbC1zbmFwLW1hbmRhdG9yeS10aGVuLXByb3hpbWl0eS5odG1sCkBAIC0wLDAgKzEsODIgQEAK
KzwhRE9DVFlQRSBIVE1MPgorPGh0bWw+CisgICAgPGhlYWQ+CisgICAgICAgIDxzdHlsZT4KKyAg
ICAgICAgICAgIGJvZHkgeworICAgICAgICAgICAgICAgIG1hcmdpbjogMDsKKyAgICAgICAgICAg
ICAgICBvdmVyZmxvdzogaGlkZGVuOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAjY29u
dGFpbmVyIHsKKyAgICAgICAgICAgICAgICB3aWR0aDogNjAwcHg7CisgICAgICAgICAgICAgICAg
aGVpZ2h0OiA2MDBweDsKKyAgICAgICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CisgICAg
ICAgICAgICAgICAgdG9wOiAwOworICAgICAgICAgICAgICAgIGxlZnQ6IDA7CisgICAgICAgICAg
ICAgICAgb3ZlcmZsb3cteDogbm9uZTsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy15OiBzY3Jv
bGw7CisgICAgICAgICAgICAgICAgc2Nyb2xsLXNuYXAtdHlwZTogeSBtYW5kYXRvcnk7CisgICAg
ICAgICAgICAgICAgb3BhY2l0eTogMC41OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAu
YXJlYSB7CisgICAgICAgICAgICAgICAgaGVpZ2h0OiA2MDBweDsKKyAgICAgICAgICAgICAgICB3
aWR0aDogNjAwcHg7CisgICAgICAgICAgICAgICAgZmxvYXQ6IGxlZnQ7CisgICAgICAgICAgICAg
ICAgc2Nyb2xsLXNuYXAtYWxpZ246IHN0YXJ0OworICAgICAgICAgICAgfQorICAgICAgICA8L3N0
eWxlPgorICAgICAgICA8c2NyaXB0PgorICAgICAgICBsZXQgd3JpdGUgPSBzID0+IG91dHB1dC5p
bm5lckhUTUwgKz0gcyArICI8YnI+IjsKKyAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7
CisgICAgICAgICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKKyAgICAgICAgICAgIHRlc3RS
dW5uZXIud2FpdFVudGlsRG9uZSgpOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gdmVy
dGljYWxTY3JvbGxJbkNvbnRhaW5lcihkcmFnRGVsdGFzLCBtb21lbnR1bURlbHRhcykKKyAgICAg
ICAgeworICAgICAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKHJlc29sdmUgPT4geworICAgICAg
ICAgICAgICAgIHdyaXRlKGBTY3JvbGxpbmcgaW4gJHtjb250YWluZXIuaWR9IHdpdGggc2Nyb2xs
LXNuYXAtdHlwZTogJHtnZXRDb21wdXRlZFN0eWxlKGNvbnRhaW5lcikuc2Nyb2xsU25hcFR5cGV9
YCk7CisgICAgICAgICAgICAgICAgZXZlbnRTZW5kZXIubW9uaXRvcldoZWVsRXZlbnRzKCk7Cisg
ICAgICAgICAgICAgICAgaW50ZXJuYWxzLnNldFBsYXRmb3JtTW9tZW50dW1TY3JvbGxpbmdQcmVk
aWN0aW9uRW5hYmxlZChmYWxzZSk7CisgICAgICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VN
b3ZlVG8oMzAwLCAzMDApOworICAgICAgICAgICAgICAgIGRyYWdEZWx0YXMuZm9yRWFjaCgoZGVs
dGEsIGkpID0+IGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBo
YXNlcygwLCBkZWx0YSwgaSA9PSAwID8gImJlZ2FuIiA6ICJjaGFuZ2VkIiwgIm5vbmUiKSk7Cisg
ICAgICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVu
dHVtUGhhc2VzKDAsIDAsICJlbmRlZCIsICJub25lIik7CisgICAgICAgICAgICAgICAgaWYgKG1v
bWVudHVtRGVsdGFzICYmIG1vbWVudHVtRGVsdGFzLmxlbmd0aCkgeworICAgICAgICAgICAgICAg
ICAgICBtb21lbnR1bURlbHRhcy5mb3JFYWNoKChkZWx0YSwgaSkgPT4gZXZlbnRTZW5kZXIubW91
c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIGRlbHRhLCAibm9uZSIsIGkg
PT0gMCA/ICJiZWdpbiIgOiAiY29udGludWUiKSk7CisgICAgICAgICAgICAgICAgICAgIGV2ZW50
U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAibm9u
ZSIsICJlbmQiKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgZXZlbnRTZW5k
ZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKCgpID0+IHsKKyAgICAgICAgICAgICAgICAg
ICAgd3JpdGUoYC0gRGlkIHRoZSBzY3JvbGxpbmcgc25hcCB0byB0aGUgdG9wPyAke2NvbnRhaW5l
ci5zY3JvbGxUb3AgPT0gMCA/ICJZRVMiIDogIk5PIn1gKTsKKyAgICAgICAgICAgICAgICAgICAg
d3JpdGUoYC0gRGlkIHNjcm9sbGluZyBzbmFwIHRvIHRoZSBzZWNvbmQgYm94PyAke2NvbnRhaW5l
ci5zY3JvbGxUb3AgPT0gNjAwID8gIllFUyIgOiAiTk8ifWApOworICAgICAgICAgICAgICAgICAg
ICBjb250YWluZXIuc3R5bGUuc2Nyb2xsU25hcFR5cGUgPSAieSBwcm94aW1pdHkiCisgICAgICAg
ICAgICAgICAgICAgIGNvbnRhaW5lci5zY3JvbGxUb3AgPSAwOworICAgICAgICAgICAgICAgICAg
ICBzZXRUaW1lb3V0KHJlc29sdmUsIDApOworICAgICAgICAgICAgICAgIH0pOworICAgICAgICAg
ICAgfSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBydW4oKSB7CisgICAgICAgICAg
ICBpZiAoIXdpbmRvdy50ZXN0UnVubmVyIHx8ICF3aW5kb3cuZXZlbnRTZW5kZXIpIHsKKyAgICAg
ICAgICAgICAgICB3cml0ZSgiVGhpcyB0ZXN0IHJlcXVpcmVzIEV2ZW50U2VuZGVyIHN1cHBvcnQu
Iik7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorCisgICAgICAgICAg
ICB2ZXJ0aWNhbFNjcm9sbEluQ29udGFpbmVyKG5ldyBBcnJheSgxNikuZmlsbCgtMSksIG5ldyBB
cnJheSgzKS5maWxsKC0xKSkKKyAgICAgICAgICAgICAgICAudGhlbigoKSA9PiB2ZXJ0aWNhbFNj
cm9sbEluQ29udGFpbmVyKG5ldyBBcnJheSgxNikuZmlsbCgtMSksIG5ldyBBcnJheSgzKS5maWxs
KC0xKSkpCisgICAgICAgICAgICAgICAgLnRoZW4oKCkgPT4gdGVzdFJ1bm5lci5ub3RpZnlEb25l
KCkpOworICAgICAgICB9CisgICAgICAgIDwvc2NyaXB0PgorICAgIDwvaGVhZD4KKyAgICA8Ym9k
eSBvbmxvYWQ9cnVuKCk+CisgICAgICAgIDxkaXYgaWQ9ImNvbnRhaW5lciI+CisgICAgICAgICAg
ICA8ZGl2IGNsYXNzPSJhcmVhIiBzdHlsZT0iYmFja2dyb3VuZC1jb2xvcjogcmVkOyI+PC9kaXY+
CisgICAgICAgICAgICA8ZGl2IGNsYXNzPSJhcmVhIiBzdHlsZT0iYmFja2dyb3VuZC1jb2xvcjog
Z3JlZW47Ij48L2Rpdj4KKyAgICAgICAgICAgIDxkaXYgY2xhc3M9ImFyZWEiIHN0eWxlPSJiYWNr
Z3JvdW5kLWNvbG9yOiBibHVlOyI+PC9kaXY+CisgICAgICAgICAgICA8ZGl2IGNsYXNzPSJhcmVh
IiBzdHlsZT0iYmFja2dyb3VuZC1jb2xvcjogYXF1YTsiPjwvZGl2PgorICAgICAgICAgICAgPGRp
diBjbGFzcz0iYXJlYSIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6IHllbGxvdzsiPjwvZGl2Pgor
ICAgICAgICAgICAgPGRpdiBjbGFzcz0iYXJlYSIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6IGZ1
Y2hzaWE7Ij48L2Rpdj4KKyAgICAgICAgPC9kaXY+CisgICAgICAgIDxkaXYgaWQ9Im91dHB1dCI+
PC9kaXY+CisgICAgPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGls
ZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtcHJveGltaXR5LW1h
aW5mcmFtZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGlu
Zy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1wcm94aW1pdHktbWFpbmZyYW1lLWV4cGVjdGVkLnR4
dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi43ZDQxMGFmNjgxMzFiM2NiMmIzYmY5ZjRmMDJhZDhjMTgzMzllZDdkCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Ny
b2xsLXNuYXAvc2Nyb2xsLXNuYXAtcHJveGltaXR5LW1haW5mcmFtZS1leHBlY3RlZC50eHQKQEAg
LTAsMCArMSwxMCBAQAorU2Nyb2xsaW5nIGJvZHkgd2l0aCAyIGRyYWcgdGlja3MKKy0gRGlkIHRo
ZSBzY3JvbGxpbmcgc25hcCB0byB0aGUgdG9wPyBZRVMKKy0gRGlkIHNjcm9sbGluZyBzbmFwIHRv
IHRoZSBzZWNvbmQgYm94PyBOTworU2Nyb2xsaW5nIGJvZHkgd2l0aCAzMCBkcmFnIHRpY2tzCist
IERpZCB0aGUgc2Nyb2xsaW5nIHNuYXAgdG8gdGhlIHRvcD8gTk8KKy0gRGlkIHNjcm9sbGluZyBz
bmFwIHRvIHRoZSBzZWNvbmQgYm94PyBOTworU2Nyb2xsaW5nIGJvZHkgd2l0aCA2MCBkcmFnIHRp
Y2tzCistIERpZCB0aGUgc2Nyb2xsaW5nIHNuYXAgdG8gdGhlIHRvcD8gTk8KKy0gRGlkIHNjcm9s
bGluZyBzbmFwIHRvIHRoZSBzZWNvbmQgYm94PyBZRVMKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtcHJveGlt
aXR5LW1haW5mcmFtZS5odG1sIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcv
c2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtcHJveGltaXR5LW1haW5mcmFtZS5odG1sCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjY3OTk3MWIwYzY1OTNhMWUwYzEwZTIzYTZlZTFiM2U2YWE4NDY4NzgKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9z
Y3JvbGwtc25hcC1wcm94aW1pdHktbWFpbmZyYW1lLmh0bWwKQEAgLTAsMCArMSw4MiBAQAorPCFE
T0NUWVBFIEhUTUw+Cis8aHRtbD4KKyAgICA8aGVhZD4KKyAgICAgICAgPHN0eWxlPgorICAgICAg
ICAgICAgYm9keSB7CisgICAgICAgICAgICAgICAgbWFyZ2luOiAwOworICAgICAgICAgICAgICAg
IHdpZHRoOiAxMDAlOworICAgICAgICAgICAgICAgIGhlaWdodDogMTAwJTsKKyAgICAgICAgICAg
ICAgICBvdmVyZmxvdy14OiBub25lOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXk6IHNjcm9s
bDsKKyAgICAgICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CisgICAgICAgICAgICAgICAg
c2Nyb2xsLXNuYXAtdHlwZTogeSBwcm94aW1pdHk7CisgICAgICAgICAgICAgICAgLXdlYmtpdC1z
Y3JvbGwtc25hcC10eXBlOiBwcm94aW1pdHk7CisgICAgICAgICAgICAgICAgc2Nyb2xsLXNuYXAt
dHlwZTogcHJveGltaXR5OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAuYXJlYSB7Cisg
ICAgICAgICAgICAgICAgd2lkdGg6IDEwMCU7CisgICAgICAgICAgICAgICAgaGVpZ2h0OiAxMDAl
OworICAgICAgICAgICAgICAgIGZsb2F0OiBsZWZ0OworICAgICAgICAgICAgICAgIG9wYWNpdHk6
IDAuNTsKKyAgICAgICAgICAgICAgICBzY3JvbGwtc25hcC1hbGlnbjogc3RhcnQ7CisgICAgICAg
ICAgICAgICAgLXdlYmtpdC1zY3JvbGwtc25hcC1jb29yZGluYXRlOiAwIDA7CisgICAgICAgICAg
ICAgICAgc2Nyb2xsLXNuYXAtY29vcmRpbmF0ZTogMCAwOworICAgICAgICAgICAgfQorCisgICAg
ICAgICAgICAjb3V0cHV0IHsKKyAgICAgICAgICAgICAgICBwb3NpdGlvbjogZml4ZWQ7CisgICAg
ICAgICAgICB9CisgICAgICAgIDwvc3R5bGU+CisgICAgICAgIDxzY3JpcHQ+CisgICAgICAgIGxl
dCB3cml0ZSA9IHMgPT4gb3V0cHV0LmlubmVySFRNTCArPSBzICsgIjxicj4iOworICAgICAgICBp
ZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICAgICAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4
dCgpOworICAgICAgICAgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CisgICAgICAgIH0K
KworICAgICAgICBmdW5jdGlvbiB2ZXJ0aWNhbFNjcm9sbEluQm9keShkcmFnRGVsdGFzKQorICAg
ICAgICB7CisgICAgICAgICAgICByZXR1cm4gbmV3IFByb21pc2UocmVzb2x2ZSA9PiB7CisgICAg
ICAgICAgICAgICAgd3JpdGUoYFNjcm9sbGluZyBib2R5IHdpdGggJHtkcmFnRGVsdGFzLmxlbmd0
aH0gZHJhZyB0aWNrc2ApOworICAgICAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vbml0b3JXaGVl
bEV2ZW50cygpOworICAgICAgICAgICAgICAgIGludGVybmFscy5zZXRQbGF0Zm9ybU1vbWVudHVt
U2Nyb2xsaW5nUHJlZGljdGlvbkVuYWJsZWQoZmFsc2UpOworICAgICAgICAgICAgICAgIGV2ZW50
U2VuZGVyLm1vdXNlTW92ZVRvKHdpbmRvdy5pbm5lcldpZHRoIC8gMiwgd2luZG93LmlubmVySGVp
Z2h0IC8gMik7CisgICAgICAgICAgICAgICAgZHJhZ0RlbHRhcy5mb3JFYWNoKChkZWx0YSwgaSkg
PT4gZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAs
IGRlbHRhLCBpID09IDAgPyAiYmVnYW4iIDogImNoYW5nZWQiLCAibm9uZSIpKTsKKyAgICAgICAg
ICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFz
ZXMoMCwgMCwgImVuZGVkIiwgIm5vbmUiKTsKKyAgICAgICAgICAgICAgICBldmVudFNlbmRlci5j
YWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoKCkgPT4geworICAgICAgICAgICAgICAgICAgICBs
ZXQgYXJlYUhlaWdodCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoIi5hcmVhIikuY2xpZW50SGVp
Z2h0OworICAgICAgICAgICAgICAgICAgICB3cml0ZShgLSBEaWQgdGhlIHNjcm9sbGluZyBzbmFw
IHRvIHRoZSB0b3A/ICR7ZG9jdW1lbnQuYm9keS5zY3JvbGxUb3AgPT0gMCA/ICJZRVMiIDogIk5P
In1gKTsKKyAgICAgICAgICAgICAgICAgICAgd3JpdGUoYC0gRGlkIHNjcm9sbGluZyBzbmFwIHRv
IHRoZSBzZWNvbmQgYm94PyAke2RvY3VtZW50LmJvZHkuc2Nyb2xsVG9wID09IGFyZWFIZWlnaHQg
PyAiWUVTIiA6ICJOTyJ9YCk7CisgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmJvZHkuc2Ny
b2xsVG9wID0gMDsKKyAgICAgICAgICAgICAgICAgICAgc2V0VGltZW91dChyZXNvbHZlLCAwKTsK
KyAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIH0pOworICAgICAgICB9CisKKyAgICAg
ICAgZnVuY3Rpb24gcnVuKCkgeworICAgICAgICAgICAgaWYgKCF3aW5kb3cudGVzdFJ1bm5lciB8
fCAhd2luZG93LmV2ZW50U2VuZGVyKSB7CisgICAgICAgICAgICAgICAgd3JpdGUoIlRvIG1hbnVh
bGx5IHRlc3QsIHZlcmlmeSB0aGF0IHNjcm9sbGluZyBuZWFyIG9uZSBvZiB0aGUgYm91bmRhcmll
cyBiZXR3ZWVuIHRoZSBjb2xvcmVkIGJveGVzIik7CisgICAgICAgICAgICAgICAgd3JpdGUoInNu
YXBzIHRvIHRoZSBlZGdlIG9mIHRoZSBuZWFyZXN0IGNvbG9yZWQgYm94LCBidXQgc2Nyb2xsaW5n
IHNvbWV3aGVyZSBuZWFyIHRoZSBtaWRkbGUgb2YgdHdvIik7CisgICAgICAgICAgICAgICAgd3Jp
dGUoImJveGVzIGRvZXMgbm90IGNhdXNlIHRoZSBzY3JvbGwgb2Zmc2V0IHRvIHNuYXAuIik7Cisg
ICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBsZXQg
YXJlYUhlaWdodCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoIi5hcmVhIikuY2xpZW50SGVpZ2h0
OworICAgICAgICAgICAgdmVydGljYWxTY3JvbGxJbkJvZHkobmV3IEFycmF5KDIpLmZpbGwoLTEp
KQorICAgICAgICAgICAgICAgIC50aGVuKCgpID0+IHZlcnRpY2FsU2Nyb2xsSW5Cb2R5KG5ldyBB
cnJheShNYXRoLnJvdW5kKGFyZWFIZWlnaHQgLyAyMCkpLmZpbGwoLTEpKSkKKyAgICAgICAgICAg
ICAgICAudGhlbigoKSA9PiB2ZXJ0aWNhbFNjcm9sbEluQm9keShuZXcgQXJyYXkoTWF0aC5yb3Vu
ZChhcmVhSGVpZ2h0IC8gMTApKS5maWxsKC0xKSkpCisgICAgICAgICAgICAgICAgLnRoZW4oKCkg
PT4gdGVzdFJ1bm5lci5ub3RpZnlEb25lKCkpOworICAgICAgICB9CisgICAgICAgIDwvc2NyaXB0
PgorICAgIDwvaGVhZD4KKyAgICA8Ym9keSBvbmxvYWQ9cnVuKCk+CisgICAgICAgIDxkaXYgY2xh
c3M9ImFyZWEiIHN0eWxlPSJiYWNrZ3JvdW5kLWNvbG9yOiByZWQ7Ij48L2Rpdj4KKyAgICAgICAg
PGRpdiBjbGFzcz0iYXJlYSIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6IGdyZWVuOyI+PC9kaXY+
CisgICAgICAgIDxkaXYgY2xhc3M9ImFyZWEiIHN0eWxlPSJiYWNrZ3JvdW5kLWNvbG9yOiBibHVl
OyI+PC9kaXY+CisgICAgICAgIDxkaXYgY2xhc3M9ImFyZWEiIHN0eWxlPSJiYWNrZ3JvdW5kLWNv
bG9yOiBhcXVhOyI+PC9kaXY+CisgICAgICAgIDxkaXYgY2xhc3M9ImFyZWEiIHN0eWxlPSJiYWNr
Z3JvdW5kLWNvbG9yOiB5ZWxsb3c7Ij48L2Rpdj4KKyAgICAgICAgPGRpdiBjbGFzcz0iYXJlYSIg
c3R5bGU9ImJhY2tncm91bmQtY29sb3I6IGZ1Y2hzaWE7Ij48L2Rpdj4KKyAgICA8L2JvZHk+Cisg
ICAgPGRpdiBpZD0ib3V0cHV0Ij48L2Rpdj4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLXByb3hp
bWl0eS1vdmVyZmxvdy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Nj
cm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1wcm94aW1pdHktb3ZlcmZsb3ctZXhwZWN0
ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmE1OWY3YTllN2IxODBjMWQ3NDUxODVjM2ZjYTgzMTI4NDA3YTky
ZTgKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGlu
Zy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1wcm94aW1pdHktb3ZlcmZsb3ctZXhwZWN0ZWQudHh0
CkBAIC0wLDAgKzEsMTAgQEAKK1Njcm9sbGluZyBpbiBjb250YWluZXIgd2l0aCAyIGRyYWcgdGlj
a3MKKy0gRGlkIHRoZSBzY3JvbGxpbmcgc25hcCB0byB0aGUgdG9wPyBZRVMKKy0gRGlkIHNjcm9s
bGluZyBzbmFwIHRvIHRoZSBzZWNvbmQgYm94PyBOTworU2Nyb2xsaW5nIGluIGNvbnRhaW5lciB3
aXRoIDMxIGRyYWcgdGlja3MKKy0gRGlkIHRoZSBzY3JvbGxpbmcgc25hcCB0byB0aGUgdG9wPyBO
TworLSBEaWQgc2Nyb2xsaW5nIHNuYXAgdG8gdGhlIHNlY29uZCBib3g/IE5PCitTY3JvbGxpbmcg
aW4gY29udGFpbmVyIHdpdGggNTkgZHJhZyB0aWNrcworLSBEaWQgdGhlIHNjcm9sbGluZyBzbmFw
IHRvIHRoZSB0b3A/IE5PCistIERpZCBzY3JvbGxpbmcgc25hcCB0byB0aGUgc2Vjb25kIGJveD8g
WUVTCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Nj
cm9sbC1zbmFwL3Njcm9sbC1zbmFwLXByb3hpbWl0eS1vdmVyZmxvdy5odG1sIGIvTGF5b3V0VGVz
dHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtcHJveGlt
aXR5LW92ZXJmbG93Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNWIwNTJmZGJmOTRjODRhM2Q4ZTBkMWEyOGZj
YjUyMjAyYWVmOWYyZgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdp
bmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLXByb3hpbWl0eS1vdmVyZmxvdy5o
dG1sCkBAIC0wLDAgKzEsODQgQEAKKzwhRE9DVFlQRSBIVE1MPgorPGh0bWw+CisgICAgPGhlYWQ+
CisgICAgICAgIDxzdHlsZT4KKyAgICAgICAgICAgIGJvZHkgeworICAgICAgICAgICAgICAgIG1h
cmdpbjogMDsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdzogaGlkZGVuOworICAgICAgICAgICAg
fQorCisgICAgICAgICAgICAjY29udGFpbmVyIHsKKyAgICAgICAgICAgICAgICB3aWR0aDogNjAw
cHg7CisgICAgICAgICAgICAgICAgaGVpZ2h0OiA2MDBweDsKKyAgICAgICAgICAgICAgICBwb3Np
dGlvbjogYWJzb2x1dGU7CisgICAgICAgICAgICAgICAgdG9wOiAwOworICAgICAgICAgICAgICAg
IGxlZnQ6IDA7CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteDogbm9uZTsKKyAgICAgICAgICAg
ICAgICBvdmVyZmxvdy15OiBzY3JvbGw7CisgICAgICAgICAgICAgICAgc2Nyb2xsLXNuYXAtdHlw
ZTogeSBwcm94aW1pdHk7CisgICAgICAgICAgICAgICAgLXdlYmtpdC1zY3JvbGwtc25hcC10eXBl
OiBwcm94aW1pdHk7CisgICAgICAgICAgICAgICAgc2Nyb2xsLXNuYXAtdHlwZTogcHJveGltaXR5
OworICAgICAgICAgICAgICAgIG9wYWNpdHk6IDAuNTsKKyAgICAgICAgICAgIH0KKworICAgICAg
ICAgICAgLmFyZWEgeworICAgICAgICAgICAgICAgIGhlaWdodDogNjAwcHg7CisgICAgICAgICAg
ICAgICAgd2lkdGg6IDYwMHB4OworICAgICAgICAgICAgICAgIGZsb2F0OiBsZWZ0OworICAgICAg
ICAgICAgICAgIHNjcm9sbC1zbmFwLWFsaWduOiBzdGFydDsKKyAgICAgICAgICAgICAgICAtd2Vi
a2l0LXNjcm9sbC1zbmFwLWNvb3JkaW5hdGU6IDAgMDsKKyAgICAgICAgICAgICAgICBzY3JvbGwt
c25hcC1jb29yZGluYXRlOiAwIDA7CisgICAgICAgICAgICB9CisgICAgICAgIDwvc3R5bGU+Cisg
ICAgICAgIDxzY3JpcHQ+CisgICAgICAgIGxldCB3cml0ZSA9IHMgPT4gb3V0cHV0LmlubmVySFRN
TCArPSBzICsgIjxicj4iOworICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICAg
ICAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOworICAgICAgICAgICAgdGVzdFJ1bm5lci53
YWl0VW50aWxEb25lKCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiB2ZXJ0aWNhbFNj
cm9sbEluQ29udGFpbmVyKGRyYWdEZWx0YXMpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVy
biBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHsKKyAgICAgICAgICAgICAgICB3cml0ZShgU2Nyb2xs
aW5nIGluICR7Y29udGFpbmVyLmlkfSB3aXRoICR7ZHJhZ0RlbHRhcy5sZW5ndGh9IGRyYWcgdGlj
a3NgKTsKKyAgICAgICAgICAgICAgICBldmVudFNlbmRlci5tb25pdG9yV2hlZWxFdmVudHMoKTsK
KyAgICAgICAgICAgICAgICBpbnRlcm5hbHMuc2V0UGxhdGZvcm1Nb21lbnR1bVNjcm9sbGluZ1By
ZWRpY3Rpb25FbmFibGVkKGZhbHNlKTsKKyAgICAgICAgICAgICAgICBldmVudFNlbmRlci5tb3Vz
ZU1vdmVUbygzMDAsIDMwMCk7CisgICAgICAgICAgICAgICAgZHJhZ0RlbHRhcy5mb3JFYWNoKChk
ZWx0YSwgaSkgPT4gZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVt
UGhhc2VzKDAsIGRlbHRhLCBpID09IDAgPyAiYmVnYW4iIDogImNoYW5nZWQiLCAibm9uZSIpKTsK
KyAgICAgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9t
ZW50dW1QaGFzZXMoMCwgMCwgImVuZGVkIiwgIm5vbmUiKTsKKyAgICAgICAgICAgICAgICBldmVu
dFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoKCkgPT4geworICAgICAgICAgICAg
ICAgICAgICB3cml0ZShgLSBEaWQgdGhlIHNjcm9sbGluZyBzbmFwIHRvIHRoZSB0b3A/ICR7Y29u
dGFpbmVyLnNjcm9sbFRvcCA9PSAwID8gIllFUyIgOiAiTk8ifWApOworICAgICAgICAgICAgICAg
ICAgICB3cml0ZShgLSBEaWQgc2Nyb2xsaW5nIHNuYXAgdG8gdGhlIHNlY29uZCBib3g/ICR7Y29u
dGFpbmVyLnNjcm9sbFRvcCA9PSA2MDAgPyAiWUVTIiA6ICJOTyJ9YCk7CisgICAgICAgICAgICAg
ICAgICAgIGNvbnRhaW5lci5zY3JvbGxUb3AgPSAwOworICAgICAgICAgICAgICAgICAgICBzZXRU
aW1lb3V0KHJlc29sdmUsIDApOworICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgfSk7
CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBydW4oKSB7CisgICAgICAgICAgICBpZiAo
IXdpbmRvdy50ZXN0UnVubmVyIHx8ICF3aW5kb3cuZXZlbnRTZW5kZXIpIHsKKyAgICAgICAgICAg
ICAgICB3cml0ZSgiVG8gbWFudWFsbHkgdGVzdCwgdmVyaWZ5IHRoYXQgc2Nyb2xsaW5nIG5lYXIg
b25lIG9mIHRoZSBib3VuZGFyaWVzIGJldHdlZW4gdGhlIGNvbG9yZWQgYm94ZXMiKTsKKyAgICAg
ICAgICAgICAgICB3cml0ZSgic25hcHMgdG8gdGhlIGVkZ2Ugb2YgdGhlIG5lYXJlc3QgY29sb3Jl
ZCBib3gsIGJ1dCBzY3JvbGxpbmcgc29tZXdoZXJlIG5lYXIgdGhlIG1pZGRsZSBvZiB0d28iKTsK
KyAgICAgICAgICAgICAgICB3cml0ZSgiYm94ZXMgZG9lcyBub3QgY2F1c2UgdGhlIHNjcm9sbCBv
ZmZzZXQgdG8gc25hcC4iKTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9
CisKKyAgICAgICAgICAgIHZlcnRpY2FsU2Nyb2xsSW5Db250YWluZXIobmV3IEFycmF5KDIpLmZp
bGwoLTEpKQorICAgICAgICAgICAgICAgIC50aGVuKCgpID0+IHZlcnRpY2FsU2Nyb2xsSW5Db250
YWluZXIobmV3IEFycmF5KDMxKS5maWxsKC0xKSkpCisgICAgICAgICAgICAgICAgLnRoZW4oKCkg
PT4gdmVydGljYWxTY3JvbGxJbkNvbnRhaW5lcihuZXcgQXJyYXkoNTkpLmZpbGwoLTEpKSkKKyAg
ICAgICAgICAgICAgICAudGhlbigoKSA9PiB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKSk7CisgICAg
ICAgIH0KKyAgICAgICAgPC9zY3JpcHQ+CisgICAgPC9oZWFkPgorICAgIDxib2R5IG9ubG9hZD1y
dW4oKT4KKyAgICAgICAgPGRpdiBpZD0iY29udGFpbmVyIj4KKyAgICAgICAgICAgIDxkaXYgY2xh
c3M9ImFyZWEiIHN0eWxlPSJiYWNrZ3JvdW5kLWNvbG9yOiByZWQ7Ij48L2Rpdj4KKyAgICAgICAg
ICAgIDxkaXYgY2xhc3M9ImFyZWEiIHN0eWxlPSJiYWNrZ3JvdW5kLWNvbG9yOiBncmVlbjsiPjwv
ZGl2PgorICAgICAgICAgICAgPGRpdiBjbGFzcz0iYXJlYSIgc3R5bGU9ImJhY2tncm91bmQtY29s
b3I6IGJsdWU7Ij48L2Rpdj4KKyAgICAgICAgICAgIDxkaXYgY2xhc3M9ImFyZWEiIHN0eWxlPSJi
YWNrZ3JvdW5kLWNvbG9yOiBhcXVhOyI+PC9kaXY+CisgICAgICAgICAgICA8ZGl2IGNsYXNzPSJh
cmVhIiBzdHlsZT0iYmFja2dyb3VuZC1jb2xvcjogeWVsbG93OyI+PC9kaXY+CisgICAgICAgICAg
ICA8ZGl2IGNsYXNzPSJhcmVhIiBzdHlsZT0iYmFja2dyb3VuZC1jb2xvcjogZnVjaHNpYTsiPjwv
ZGl2PgorICAgICAgICA8L2Rpdj4KKyAgICAgICAgPGRpdiBpZD0ib3V0cHV0Ij48L2Rpdj4KKyAg
ICA8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5n
L3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1zY3JvbGxpbmctanVtcHMtdG8tdG9w
Lmh0bWwgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9z
Y3JvbGwtc25hcC1zY3JvbGxpbmctanVtcHMtdG8tdG9wLmh0bWwKaW5kZXggYTZiYWQ0OWY5NzBk
NTcyMDkyNzU2NDg5NmNhZjY1NzIwOGU1MDkyYS4uZmM5MTA3YjBmMjk2MDA3ODc4NDMxZDU3NGRm
OGY3ZDVlODgxNzI4ZiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3Jv
bGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtc2Nyb2xsaW5nLWp1bXBzLXRvLXRvcC5odG1s
CisrKyBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Nj
cm9sbC1zbmFwLXNjcm9sbGluZy1qdW1wcy10by10b3AuaHRtbApAQCAtMzQsNiArMzQsNyBAQAog
ICAgICAgICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CiAgICAgICAgICAgICB0ZXN0UnVu
bmVyLndhaXRVbnRpbERvbmUoKTsKICAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vbml0b3JXaGVl
bEV2ZW50cygpOworICAgICAgICAgICAgaW50ZXJuYWxzLnNldFBsYXRmb3JtTW9tZW50dW1TY3Jv
bGxpbmdQcmVkaWN0aW9uRW5hYmxlZChmYWxzZSk7CiAgICAgICAgICAgICBldmVudFNlbmRlci5t
b3VzZU1vdmVUbyhjb250YWluZXIub2Zmc2V0TGVmdCArIGNvbnRhaW5lci5jbGllbnRXaWR0aCAv
IDIsIGNvbnRhaW5lci5vZmZzZXRUb3AgKyBjb250YWluZXIuY2xpZW50SGVpZ2h0IC8gMik7CiAK
ICAgICAgICAgICAgIHdyaXRlKCJTY3JvbGxpbmcgd2l0aG91dCBtb21lbnR1bSB0byB0aGUgc2Ft
ZSBwb3NpdGlvbiBzZXZlcmFsIHRpbWVzIikK
</data>
<flag name="commit-queue"
          id="320649"
          type_id="3"
          status="+"
          setter="wenson_hsieh"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>298509</attachid>
            <date>2017-01-10 13:50:47 -0800</date>
            <delta_ts>2017-01-10 14:28:00 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-135994-20170110134911.patch</filename>
            <type>text/plain</type>
            <size>137130</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjEwNTU0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDQ0ZjU2ZDhkMGMyNjFj
MmRhNTc4MDUyZTUwZDQ3OWJkNTJhOWI0MC4uNTZlZTkxMWI4ZWZlNTUxOGFkNzkzNGQzMTYwZDY1
Y2FhMjE1ODJkMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4NyBAQAorMjAxNy0wMS0xMCAgV2Vu
c29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KKworICAgICAgICBJbXBsZW1lbnQg
InByb3hpbWl0eSIgc2Nyb2xsIHNuYXBwaW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xMzU5OTQKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzE4MTYy
NDE4PgorCisgICAgICAgIFJldmlld2VkIGJ5IERlYW4gSmFja3Nvbi4KKworICAgICAgICBBZGRz
IHN1cHBvcnQgZm9yIHByb3hpbWl0eSBzY3JvbGwgc25hcHBpbmcuIFRvIGRvIHRoaXMsIHdlIGlu
dHJvZHVjZSBzY3JvbGwgb2Zmc2V0IHJhbmdlcywgYSBsaXN0IG9mIHNjcm9sbAorICAgICAgICBv
ZmZzZXQgcmFuZ2VzIHRoYXQgYXJlIHBsdW1iZWQgYWxvbmdzaWRlIHRoZSBsaXN0IG9mIHNjcm9s
bCBzbmFwIG9mZnNldHMuIFNpbWlsYXIgdG8gYSBzbmFwIG9mZnNldCwgYSBzbmFwCisgICAgICAg
IG9mZnNldCByYW5nZSBjb250YWlucyBzY3JvbGwgb2Zmc2V0cyBvbiB3aGljaCBzY3JvbGxpbmcg
aXMgYWxsb3dlZCB0byBjb21lIHRvIGEgcmVzdCB3aXRoaW4gYSBzY3JvbGwgc25hcHBpbmcKKyAg
ICAgICAgY29udGFpbmVyLiBIb3dldmVyLCB1bmxpa2Ugbm9ybWFsIHNuYXAgb2Zmc2V0cywgc2Ny
b2xsaW5nIG1heSBvbmx5IGNvbWUgdG8gcmVzdCB3aXRoaW4gYSBzbmFwIG9mZnNldCByYW5nZSBp
ZgorICAgICAgICB0aGUgcHJlZGljdGVkIHNjcm9sbCBvZmZzZXQgYWxyZWFkeSBsaWVzIHdpdGhp
biB0aGUgcmFuZ2UuIFRoZSBuZXcgYWxnb3JpdGhtIGZvciBzZWxlY3RpbmcgYSB0YXJnZXQgc2Ny
b2xsIHNuYXAKKyAgICAgICAgcG9zaXRpb24gZ2l2ZW4gYSBkZXN0aW5hdGlvbiBvZmZzZXQgaXMg
bm93OgorCisgICAgICAgIC0gICBJZiB0aGUgc2Nyb2xsIGRlc3RpbmF0aW9uIGxpZXMgd2l0aGlu
IGEgc25hcCBvZmZzZXQgcmFuZ2UsIHJldHVybiB0aGUgc2Nyb2xsIGRlc3RpbmF0aW9uCisgICAg
ICAgIC0gICBPdGhlcndpc2UsIGNvbXB1dGUgdGhlIG5lYXJlc3QgbG93ZXIvdXBwZXIgc25hcCBv
ZmZzZXRzIGFuZCBsb3dlci91cHBlciBzbmFwIG9mZnNldCByYW5nZXMKKyAgICAgICAgLSAgIElm
IHNjcm9sbGluZyBlbmRlZCB3aXRoIG5vIHZlbG9jaXR5LCByZXR1cm4gdGhlIG5lYXJlc3Qgc25h
cCBvZmZzZXQKKyAgICAgICAgLSAgIElmIHNjcm9sbGluZyBlbmRlZCB3aXRoIHBvc2l0aXZlIHZl
bG9jaXR5LCBjaG9vc2UgdGhlIHVwcGVyIHNuYXAgb2Zmc2V0IG9ubHkgaWYgdGhlcmUgaXMgbm8g
c25hcCBvZmZzZXQKKyAgICAgICAgICAgIHJhbmdlIGluIGJldHdlZW4gdGhlIHNjcm9sbCBkZXN0
aW5hdGlvbiBhbmQgdGhlIHNuYXAgb2Zmc2V0OyBlbHNlLCBjaG9vc2UgdGhlIGxvd2VyIHNuYXAg
b2Zmc2V0CisgICAgICAgIC0gICBJZiBzY3JvbGxpbmcgZW5kZWQgd2l0aCBuZWdhdGl2ZSB2ZWxv
Y2l0eSwgY2hvb3NlIHRoZSBsb3dlciBzbmFwIG9mZnNldCBvbmx5IGlmIHRoZXJlIGlzIG5vIHNu
YXAgb2Zmc2V0CisgICAgICAgICAgICByYW5nZSBpbiBiZXR3ZWVuIHRoZSBzY3JvbGwgZGVzdGlu
YXRpb24gYW5kIHRoZSBzbmFwIG9mZnNldDsgZWxzZSwgY2hvb3NlIHRoZSB1cHBlciBzbmFwIG9m
ZnNldAorCisgICAgICAgIFRoZSBleHRyYSBydWxlIGFjY291bnRpbmcgZm9yIHNjcm9sbCBvZmZz
ZXQgcmFuZ2VzIGluIGJldHdlZW4gdGhlIHNjcm9sbCBkZXN0aW5hdGlvbiBhbmQgYSBwb3RlbnRp
YWwgc25hcCBvZmZzZXQKKyAgICAgICAgaGFuZGxlcyB0aGUgY29ybmVyIGNhc2Ugd2hlcmUgdGhl
IHVzZXIgc2Nyb2xscyB3aXRoIG1vbWVudHVtIHZlcnkgbGlnaHRseSBhd2F5IGZyb20gYSBzbmFw
IG9mZnNldCwgc3VjaCB0aGF0IHRoZQorICAgICAgICBwcmVkaWN0ZWQgc2Nyb2xsIGRlc3RpbmF0
aW9uIGlzIHN0aWxsIHdpdGhpbiBwcm94aW1pdHkgb2YgdGhlIHNuYXAgb2Zmc2V0LiBJbiB0aGlz
IGNhc2UsIHRoZSByZWd1bGFyIChtYW5kYXRvcnkKKyAgICAgICAgc2Nyb2xsIHNuYXBwaW5nKSBi
ZWhhdmlvciB3b3VsZCBiZSB0byBzbmFwIHRvIHRoZSBuZXh0IG9mZnNldCBpbiB0aGUgZGlyZWN0
aW9uIG9mIG1vbWVudHVtIHNjcm9sbGluZywgYnV0CisgICAgICAgIGluc3RlYWQsIGl0IGlzIG1v
cmUgaW50dWl0aXZlIHRvIHJldHVybiB0byB0aGUgb3JpZ2luYWwgc25hcCBwb3NpdGlvbi4KKwor
ICAgICAgICBXZSBhbHNvIG1vdmUgc2Nyb2xsaW5nIHByZWRpY3Rpb24gbG9naWMgaW50byBTY3Jv
bGxpbmdNb21lbnR1bUNhbGN1bGF0b3IgYW5kIGFkb3B0IHRoZSBwbGF0Zm9ybQorICAgICAgICBf
TlNTY3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3IncyBkZXN0aW5hdGlvbk9yaWdpbiBwcm9wZXJ0
eSB3aGVuIGNvbXB1dGluZyB0aGUgcHJlZGljdGVkIHNjcm9sbCBkZXN0aW5hdGlvbi4KKyAgICAg
ICAgUHJldmlvdXNseSwgd2Ugd2VyZSBzaW1wbHkgbXVsdGlwbHlpbmcgYnkgYW4gZW1waXJpY2Fs
bHktZGVyaXZlZCBjb25zdGFudCB0byBhcHByb3hpbWF0ZSB0aGUgc2Nyb2xsIGRlc3RpbmF0aW9u
LAorICAgICAgICBidXQgbm93IHRoYXQgd2UgYXJlIHN1cHBvcnRpbmcgcHJveGltaXR5IHNjcm9s
bCBzbmFwcGluZywgd2UgbmVlZCBtb3JlIGV4YWN0IHNjcm9sbCBkZXN0aW5hdG9uIHByZWRpY3Rp
b24gaW4KKyAgICAgICAgb3JkZXIgdG8gbWFrZSBzdXJlIHRoYXQgc2Nyb2xsaW5nIHRvIGEgc25h
cCBvZmZzZXQgcmFuZ2UgZmVlbHMgbmF0dXJhbC4KKworICAgICAgICBUZXN0czogdGlsZWQtZHJh
d2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtbWFuZGF0b3J5LXRoZW4tcHJv
eGltaXR5Lmh0bWwKKyAgICAgICAgICAgICAgIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9s
bC1zbmFwL3Njcm9sbC1zbmFwLXByb3hpbWl0eS1tYWluZnJhbWUuaHRtbAorICAgICAgICAgICAg
ICAgdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtcHJveGlt
aXR5LW92ZXJmbG93Lmh0bWwKKworICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvajoKKyAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9Bc3luY1Njcm9sbGluZ0Nvb3JkaW5h
dG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnNldFN0YXRlU2Nyb2xsaW5nTm9kZVNuYXBPZmZz
ZXRzQXNGbG9hdCk6CisgICAgICAgIChXZWJDb3JlOjpBc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9y
Ojp1cGRhdGVPdmVyZmxvd1Njcm9sbGluZ05vZGUpOgorICAgICAgICAoV2ViQ29yZTo6QXN5bmNT
Y3JvbGxpbmdDb29yZGluYXRvcjo6dXBkYXRlU2Nyb2xsU25hcFByb3BlcnRpZXNXaXRoRnJhbWVW
aWV3KToKKworICAgICAgICBNYWtlIGJvaWxlcnBsYXRlIGNoYW5nZXMgdG8gcGx1bWIgbGlzdHMg
b2YgaG9yaXpvbnRhbCBhbmQgdmVydGljYWwgc25hcCBvZmZzZXQgcmFuZ2VzIGFsb25nc2lkZSB0
aGUgbGlzdHMgb2YKKyAgICAgICAgaG9yaXpvbnRhbCBhbmQgdmVydGljYWwgc25hcCBvZmZzZXRz
LgorCisgICAgICAgICogcGFnZS9zY3JvbGxpbmcvQXhpc1Njcm9sbFNuYXBPZmZzZXRzLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OnNuYXBPZmZzZXRSYW5nZXNUb1N0cmluZyk6CisgICAgICAgIChX
ZWJDb3JlOjppbmRpY2VzT2ZOZWFyZXN0U25hcE9mZnNldFJhbmdlcyk6CisgICAgICAgIChXZWJD
b3JlOjppbmRpY2VzT2ZOZWFyZXN0U25hcE9mZnNldHMpOgorICAgICAgICAoV2ViQ29yZTo6YWRq
dXN0QXhpc1NuYXBPZmZzZXRzRm9yU2Nyb2xsRXh0ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OmNv
bXB1dGVBeGlzUHJveGltaXR5U25hcE9mZnNldFJhbmdlcyk6CisgICAgICAgIChXZWJDb3JlOjp1
cGRhdGVTbmFwT2Zmc2V0c0ZvclNjcm9sbGFibGVBcmVhKToKKyAgICAgICAgKFdlYkNvcmU6OmNs
b3Nlc3RTbmFwT2Zmc2V0KToKKworICAgICAgICBBZGp1c3QgdGhlIHNuYXAgb2Zmc2V0IHNlbGVj
dGlvbiBhbGdvcml0aG0gdG8gdGFrZSBzbmFwIG9mZnNldCByYW5nZXMgaW50byBhY2NvdW50LiBT
ZWUgYWJvdmUgZm9yIG1vcmUgZGV0YWlscy4KKyAgICAgICAgQWRkaXRpb25hbGx5LCBhdWdtZW50
IHNuYXAgb2Zmc2V0IHVwZGF0ZSBsb2dpYyB0byBlbWl0IHNuYXAgb2Zmc2V0IHJhbmdlcyBmb3Ig
cHJveGltaXR5IHNjcm9sbCBzbmFwcGluZy4gVG8gZG8KKyAgICAgICAgdGhpcywgd2UgcnVuIHRo
ZSBmb2xsb3dpbmcgc3RlcHMgb24gdGhlIGZpbmFsIGxpc3Qgb2YgcHJvY2Vzc2VkIHNuYXAgb2Zm
c2V0czoKKyAgICAgICAgLSAgIENvbXB1dGUgdGhlIHByb3hpbWl0eSBkaXN0YW5jZSwgd2hpY2gg
KGZvciBub3cpIGlzIGFyYml0cmFyaWx5IDAuMyAqIHRoZSBsZW5ndGggb3Igd2lkdGggb2YgdGhl
IHNjcm9sbCBzbmFwCisgICAgICAgICAgICBwb3J0LCBkZXBlbmRpbmcgb24gd2hldGhlciBzY3Jv
bGwgc25hcHBpbmcgaXMgdGFraW5nIHBsYWNlIGluIHRoZSBYIG9yIFkgYXhpcy4KKyAgICAgICAg
LSAgIEZvciBlYWNoIHBhaXIgb2YgYWRqYWNlbnQgc25hcCBvZmZzZXRzLCBpZiB0aGV5IGFyZSBt
b3JlIHRoYW4gMiAqIHByb3hpbWl0eSBkaXN0YW5jZSBhd2F5IGZyb20gZWFjaCBvdGhlciwKKyAg
ICAgICAgICAgIGVtaXQgYSBzbmFwIG9mZnNldCByYW5nZSBzdGFydGluZyBmcm9tIChsb3dlciBz
bmFwIG9mZnNldCArIHByb3hpbWl0eSBkaXN0YW5jZSkgYW5kIGVuZGluZyBvbiAodXBwZXIgc25h
cAorICAgICAgICAgICAgb2Zmc2V0ICsgcHJveGltaXR5IGRpc3RhbmNlKS4KKworICAgICAgICAq
IHBhZ2Uvc2Nyb2xsaW5nL0F4aXNTY3JvbGxTbmFwT2Zmc2V0cy5oOgorICAgICAgICAoV2ViQ29y
ZTo6Y2xvc2VzdFNuYXBPZmZzZXQpOiBEZWxldGVkLgorICAgICAgICAqIHBhZ2Uvc2Nyb2xsaW5n
L1Njcm9sbFNuYXBPZmZzZXRzSW5mby5oOgorCisgICAgICAgIEludHJvZHVjZSBTY3JvbGxTbmFw
T2Zmc2V0c0luZm8sIGEgc3RydWN0IHdoaWNoIGNvbnRhaW5zIGRhdGEgcmVsZXZhbnQgdG8gc2Ny
b2xsIHNuYXBwaW5nLiBUaGlzIGluY2x1ZGVzCisgICAgICAgIHZlcnRpY2FsIGFuZCBob3Jpem9u
dGFsIHNuYXAgb2Zmc2V0cywgYXMgd2VsbCBhcyB2ZXJ0aWNhbCBhbmQgaG9yaXpvbnRhbCBzbmFw
IG9mZnNldCByYW5nZXMuIFNuYXAgb2Zmc2V0IHJhbmdlcworICAgICAgICBjb25zaXN0IG9mIGEg
dmVjdG9yIG9mIHJhbmdlcyBvZiBzY3JvbGwgb2Zmc2V0cy4KKworICAgICAgICAqIHBhZ2Uvc2Ny
b2xsaW5nL1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmg6CisgICAgICAgICogcGFnZS9zY3JvbGxpbmcv
U2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnByb2pl
Y3RlZEluZXJ0aWFsU2Nyb2xsRGlzdGFuY2UpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5n
TW9tZW50dW1DYWxjdWxhdG9yOjpTY3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3IpOgorICAgICAg
ICAoV2ViQ29yZTo6U2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yOjpzZXRSZXRhcmdldGVkU2Ny
b2xsT2Zmc2V0KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRv
cjo6cHJlZGljdGVkRGVzdGluYXRpb25PZmZzZXQpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xs
aW5nTW9tZW50dW1DYWxjdWxhdG9yOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xs
aW5nTW9tZW50dW1DYWxjdWxhdG9yOjpzZXRQbGF0Zm9ybU1vbWVudHVtU2Nyb2xsaW5nUHJlZGlj
dGlvbkVuYWJsZWQpOgorICAgICAgICAoV2ViQ29yZTo6QmFzaWNTY3JvbGxpbmdNb21lbnR1bUNh
bGN1bGF0b3I6OkJhc2ljU2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yKToKKyAgICAgICAgKFdl
YkNvcmU6OkJhc2ljU2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yOjpsaW5lYXJseUludGVycG9s
YXRlZE9mZnNldEF0UHJvZ3Jlc3MpOgorICAgICAgICAoV2ViQ29yZTo6QmFzaWNTY3JvbGxpbmdN
b21lbnR1bUNhbGN1bGF0b3I6OmluaXRpYWxpemVJbnRlcnBvbGF0aW9uQ29lZmZpY2llbnRzSWZO
ZWNlc3NhcnkpOgorICAgICAgICAoV2ViQ29yZTo6QmFzaWNTY3JvbGxpbmdNb21lbnR1bUNhbGN1
bGF0b3I6OmluaXRpYWxpemVTbmFwUHJvZ3Jlc3NDdXJ2ZSk6CisgICAgICAgICogcGFnZS9zY3Jv
bGxpbmcvU2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yLmg6CisgICAgICAgIChXZWJDb3JlOjpT
Y3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3I6OnJldGFyZ2V0ZWRTY3JvbGxPZmZzZXQpOgorICAg
ICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yOjpyZXRhcmdldGVkU2Ny
b2xsT2Zmc2V0RGlkQ2hhbmdlKToKKworICAgICAgICBDdXJyZW50bHksIHRoZSBTY3JvbGxpbmdN
b21lbnR1bUNhbGN1bGF0b3IgaXMgcmVzcG9uc2libGUgZm9yIHRha2luZyBhbiBpbml0aWFsIHBv
c2l0aW9uLCBpbml0aWFsIHZlbG9jaXR5LCBhbmQKKyAgICAgICAgdGFyZ2V0IHBvc2l0aW9uIGFu
ZCBhbmltYXRpbmcgdGhlIHNjcm9sbCBvZmZzZXQgZnJvbSB0aGUgaW5pdGlhbCB0byB0YXJnZXQg
cG9zaXRpb24uIE5vdywgd2UgcmVmYWN0b3IgdGhlCisgICAgICAgIFNjcm9sbGluZ01vbWVudHVt
Q2FsY3VsYXRvciBpbnRlcmZhY2UgdG8gbm8gbG9uZ2VyIHRha2UgYSB0YXJnZXQgb2Zmc2V0IHVw
b24gaW5pdGlhbGl6YXRpb24sIGFuZCBpbnN0ZWFkIGNvbXB1dGUKKyAgICAgICAgdGhlIHByZWRp
Y3RlZCBzY3JvbGwgZGVzdGluYXRpb24gZ2l2ZW4gaW5pdGlhbCBwb3NpdGlvbiBhbmQgdmVsb2Np
dHk7IGNsaWVudHMgb2YgdGhlIFNjcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvcgorICAgICAgICB0
aGVuIHVzZSB0aGlzIHByZWRpY3RlZCBzY3JvbGwgZGVzdGluYXRpb24gdG8gY29tcHV0ZSBhIHJl
dGFyZ2V0ZWQgc2Nyb2xsIG9mZnNldCBhbmQgdGhlbiBjYWxsCisgICAgICAgIHNldFJldGFyZ2V0
ZWRTY3JvbGxPZmZzZXQgb24gdGhlIGNhbGN1bGF0b3IsIHdoaWNoIHNldHMgdXAgYW4gYW5pbWF0
aW9uIGN1cnZlIHRvIHRoZSBuZXcgcmV0YXJnZXRlZCBvZmZzZXQuIFRoaXMKKyAgICAgICAgYWxs
b3dzIGJvdGggdGhlIEFwcEtpdC1iYXNlZCBzY3JvbGxpbmcgbW9tZW50dW0gY2FsY3VsYXRvciBh
bmQgcGxhdGZvcm0taW52YXJpYW50IG1vbWVudHVtIGNhbGN1bGF0b3IgdG8gYmUgdXNlZAorICAg
ICAgICBpbnRlcmNoYW5nZWFibHksIHdoaWxlIHN0aWxsIGFsbG93aW5nIHRoZW0gdG8gY29tcHV0
ZSBhIGRlc3RpbmF0aW9uIG9mZnNldCBmcm9tIGluaXRpYWwgcGFyYW1ldGVycyBvZiB0aGUKKyAg
ICAgICAgc2Nyb2xsLgorCisgICAgICAgICogcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nU3RhdGVT
Y3JvbGxpbmdOb2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1N0YXRlU2Nyb2xs
aW5nTm9kZTo6U2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlKToKKyAgICAgICAgKFdlYkNvcmU6
OlNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZTo6c2V0SG9yaXpvbnRhbFNuYXBPZmZzZXRzKToK
KyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZTo6c2V0VmVydGlj
YWxTbmFwT2Zmc2V0cyk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdTdGF0ZVNjcm9sbGlu
Z05vZGU6OnNldEhvcml6b250YWxTbmFwT2Zmc2V0UmFuZ2VzKToKKyAgICAgICAgKFdlYkNvcmU6
OlNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZTo6c2V0VmVydGljYWxTbmFwT2Zmc2V0UmFuZ2Vz
KToKKyAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGUu
aDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZTo6aG9yaXpv
bnRhbFNuYXBPZmZzZXRzKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1N0YXRlU2Nyb2xs
aW5nTm9kZTo6dmVydGljYWxTbmFwT2Zmc2V0cyk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxp
bmdTdGF0ZVNjcm9sbGluZ05vZGU6Omhvcml6b250YWxTbmFwT2Zmc2V0UmFuZ2VzKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZTo6dmVydGljYWxTbmFwT2Zm
c2V0UmFuZ2VzKToKKyAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlU2Nyb2xs
aW5nTm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9k
ZTo6Y29tbWl0U3RhdGVCZWZvcmVDaGlsZHJlbik6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxp
bmdUcmVlU2Nyb2xsaW5nTm9kZTo6ZHVtcFByb3BlcnRpZXMpOgorICAgICAgICAqIHBhZ2Uvc2Ny
b2xsaW5nL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlLmg6CisgICAgICAgIChXZWJDb3JlOjpT
Y3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZTo6aG9yaXpvbnRhbFNuYXBPZmZzZXRzKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlOjp2ZXJ0aWNhbFNuYXBPZmZz
ZXRzKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlOjpob3Jp
em9udGFsU25hcE9mZnNldFJhbmdlcyk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdUcmVl
U2Nyb2xsaW5nTm9kZTo6dmVydGljYWxTbmFwT2Zmc2V0UmFuZ2VzKToKKworICAgICAgICBBZGQg
bW9yZSBib2lsZXJwbGF0ZSBzdXBwb3J0IGZvciBzbmFwIG9mZnNldCByYW5nZXMuCisKKyAgICAg
ICAgKiBwYWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yTWFjLmg6
CisgICAgICAgICogcGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRv
ck1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvcjo6
Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvcjo6
c2V0UGxhdGZvcm1Nb21lbnR1bVNjcm9sbGluZ1ByZWRpY3Rpb25FbmFibGVkKToKKyAgICAgICAg
KFdlYkNvcmU6OlNjcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvck1hYzo6U2Nyb2xsaW5nTW9tZW50
dW1DYWxjdWxhdG9yTWFjKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ01vbWVudHVtQ2Fs
Y3VsYXRvck1hYzo6c2Nyb2xsT2Zmc2V0QWZ0ZXJFbGFwc2VkVGltZSk6CisgICAgICAgIChXZWJD
b3JlOjpTY3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3JNYWM6OnByZWRpY3RlZERlc3RpbmF0aW9u
T2Zmc2V0KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvck1h
Yzo6cmV0YXJnZXRlZFNjcm9sbE9mZnNldERpZENoYW5nZSk6CisgICAgICAgIChXZWJDb3JlOjpT
Y3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3JNYWM6OmFuaW1hdGlvbkR1cmF0aW9uKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNjcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvck1hYzo6cmVxdWlyZXNNb21l
bnR1bVNjcm9sbGluZyk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdNb21lbnR1bUNhbGN1
bGF0b3JNYWM6OmVuc3VyZVBsYXRmb3JtTW9tZW50dW1DYWxjdWxhdG9yKToKKworICAgICAgICBI
b29rIGludG8gQXBwS2l0IG1vbWVudHVtIHNjcm9sbCBvZmZzZXQgcHJlZGljdGlvbi4KKworICAg
ICAgICAqIHBhZ2Uvc2Nyb2xsaW5nL21hYy9TY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2Rl
TWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6Y29udmVydFRvTGF5b3V0VW5pdHMpOgorICAgICAg
ICAoV2ViQ29yZTo6U2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZU1hYzo6Y29tbWl0U3Rh
dGVCZWZvcmVDaGlsZHJlbik6CisgICAgICAgICogcGxhdGZvcm0vU2Nyb2xsYWJsZUFyZWEuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYWJsZUFyZWE6OmVuc3VyZVNuYXBPZmZzZXRzSW5m
byk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxhYmxlQXJlYTo6aG9yaXpvbnRhbFNuYXBPZmZz
ZXRzKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGFibGVBcmVhOjpob3Jpem9udGFsU25hcE9m
ZnNldFJhbmdlcyk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxhYmxlQXJlYTo6dmVydGljYWxT
bmFwT2Zmc2V0UmFuZ2VzKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGFibGVBcmVhOjp2ZXJ0
aWNhbFNuYXBPZmZzZXRzKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGFibGVBcmVhOjpzZXRI
b3Jpem9udGFsU25hcE9mZnNldHMpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYWJsZUFyZWE6
OnNldFZlcnRpY2FsU25hcE9mZnNldHMpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYWJsZUFy
ZWE6OnNldEhvcml6b250YWxTbmFwT2Zmc2V0UmFuZ2VzKToKKyAgICAgICAgKFdlYkNvcmU6OlNj
cm9sbGFibGVBcmVhOjpzZXRWZXJ0aWNhbFNuYXBPZmZzZXRSYW5nZXMpOgorICAgICAgICAoV2Vi
Q29yZTo6U2Nyb2xsYWJsZUFyZWE6OmNsZWFySG9yaXpvbnRhbFNuYXBPZmZzZXRzKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNjcm9sbGFibGVBcmVhOjpjbGVhclZlcnRpY2FsU25hcE9mZnNldHMpOgor
ICAgICAgICAqIHBsYXRmb3JtL1Njcm9sbGFibGVBcmVhLmg6CisgICAgICAgIChXZWJDb3JlOjpT
Y3JvbGxhYmxlQXJlYTo6aG9yaXpvbnRhbFNuYXBPZmZzZXRzKTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OlNjcm9sbGFibGVBcmVhOjp2ZXJ0aWNhbFNuYXBPZmZzZXRzKTogRGVsZXRlZC4K
KyAgICAgICAgKiBwbGF0Zm9ybS9jb2NvYS9TY3JvbGxDb250cm9sbGVyLmg6CisgICAgICAgICog
cGxhdGZvcm0vY29jb2EvU2Nyb2xsQ29udHJvbGxlci5tbToKKyAgICAgICAgKFdlYkNvcmU6OlNj
cm9sbENvbnRyb2xsZXI6OnByb2Nlc3NXaGVlbEV2ZW50Rm9yU2Nyb2xsU25hcCk6CisKKyAgICAg
ICAgRml4IGFuIGlzc3VlIHdoZXJlIGluaXRpYWwgc2Nyb2xsaW5nIHZlbG9jaXR5IHdvdWxkIGJl
IHNldCB0byB6ZXJvIGF0IHRoZSBlbmQgb2YgYSBkcmFnIGdlc3R1cmUuCisKKyAgICAgICAgKFdl
YkNvcmU6OlNjcm9sbENvbnRyb2xsZXI6OnVwZGF0ZVNjcm9sbFNuYXBTdGF0ZSk6CisgICAgICAg
IChXZWJDb3JlOjpTY3JvbGxDb250cm9sbGVyOjp1cGRhdGVTY3JvbGxTbmFwUG9pbnRzKToKKyAg
ICAgICAgKFdlYkNvcmU6OlNjcm9sbENvbnRyb2xsZXI6OnNldE5lYXJlc3RTY3JvbGxTbmFwSW5k
ZXhGb3JBeGlzQW5kT2Zmc2V0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9jb2NvYS9TY3JvbGxTbmFw
QW5pbWF0b3JTdGF0ZS5oOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsU25hcEFuaW1hdG9yU3Rh
dGU6OnNuYXBPZmZzZXRzRm9yQXhpcyk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxTbmFwQW5p
bWF0b3JTdGF0ZTo6c25hcE9mZnNldFJhbmdlc0ZvckF4aXMpOgorICAgICAgICAoV2ViQ29yZTo6
U2Nyb2xsU25hcEFuaW1hdG9yU3RhdGU6OnNldFNuYXBPZmZzZXRzQW5kUG9zaXRpb25SYW5nZXNG
b3JBeGlzKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbFNuYXBBbmltYXRvclN0YXRlOjpzZXRT
bmFwT2Zmc2V0c0ZvckF4aXMpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2NvY29hL1Nj
cm9sbFNuYXBBbmltYXRvclN0YXRlLm1tOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsU25hcEFu
aW1hdG9yU3RhdGU6OnNldHVwQW5pbWF0aW9uRm9yU3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6
U2Nyb2xsU25hcEFuaW1hdG9yU3RhdGU6OnRhcmdldE9mZnNldEZvclN0YXJ0T2Zmc2V0KToKKyAg
ICAgICAgKFdlYkNvcmU6OnByb2plY3RlZEluZXJ0aWFsU2Nyb2xsRGlzdGFuY2UpOiBEZWxldGVk
LgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJDb21wb3NpdG9yOjp1cGRhdGVTY3JvbGxDb29yZGluYXRl
ZExheWVyKToKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpJbnRlcm5hbHM6OnNldFBsYXRmb3JtTW9tZW50dW1TY3JvbGxpbmdQcmVkaWN0aW9uRW5h
YmxlZCk6CisKKyAgICAgICAgQWRkIGEgbmV3IGhvb2sgZm9yIGxheW91dCB0ZXN0cyB0byBmb3Jj
ZSBzY3JvbGxpbmcgbW9tZW50dW0gY2FsY3VsYXRvcnMgdG8gdXNlIHRoZSBwbGF0Zm9ybS1pbnZh
cmlhbnQgbW9tZW50dW0KKyAgICAgICAgc2Nyb2xsaW5nIHByZWRpY3Rpb24gaGV1cmlzdGljIGlu
c3RlYWQgb2YgdGhlIHBsYXRmb3JtLWRlcGVuZGVudCBvbmUuCisKKyAgICAgICAgKFdlYkNvcmU6
OkludGVybmFsczo6c2Nyb2xsU25hcE9mZnNldHMpOgorICAgICAgICAqIHRlc3RpbmcvSW50ZXJu
YWxzLmg6CisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbHMuaWRsOgorCiAyMDE3LTAxLTEwICBK
ZXIgTm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgogCiAgICAgICAgIEFkZCBzdXBwb3J0IGZv
ciBNZWRpYUtleXMuY3JlYXRlU2Vzc2lvbigpLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
Q2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IGYyMjM3ODY5NGVlYjY4
YWM5NDk1NTA2MzRjNzdmMDgxN2RlNzMxYjMuLjIwZGZlMzI4ODAyMWExYjQwNWQyNDVlMTgwMDQ5
ZjE2M2JhMWU4MjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9T
b3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMyBAQAorMjAxNy0wMS0xMCAgV2Vu
c29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KKworICAgICAgICBJbXBsZW1lbnQg
InByb3hpbWl0eSIgc2Nyb2xsIHNuYXBwaW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xMzU5OTQKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzE4MTYy
NDE4PgorCisgICAgICAgIFJldmlld2VkIGJ5IERlYW4gSmFja3Nvbi4KKworICAgICAgICBBZGRz
IGJvaWxlcnBsYXRlIHN1cHBvcnQgZm9yIHBsdW1iaW5nIGxpc3RzIG9mIHNuYXAgb2Zmc2V0IHJh
bmdlcyBmcm9tIHRoZSB3ZWIgcHJvY2VzcyB0byB0aGUgVUkgcHJvY2VzcworICAgICAgICBhbG9u
Z3NpZGUgdGhlIGxpc3Qgb2Ygc25hcCBvZmZzZXRzLgorCisgICAgICAgICogU2hhcmVkL1Njcm9s
bGluZy9SZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvclRyYW5zYWN0aW9uLmNwcDoKKyAgICAgICAg
KEFyZ3VtZW50Q29kZXI8U2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlPjo6ZW5jb2RlKToKKyAg
ICAgICAgKEFyZ3VtZW50Q29kZXI8U2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlPjo6ZGVjb2Rl
KToKKyAgICAgICAgKiBTaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcDoKKyAgICAgICAg
KElQQzo6QXJndW1lbnRDb2RlcjxTY3JvbGxPZmZzZXRSYW5nZTxmbG9hdD4+OjplbmNvZGUpOgor
ICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFNjcm9sbE9mZnNldFJhbmdlPGZsb2F0Pj46OmRl
Y29kZSk6CisgICAgICAgICogU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9TY3JvbGxpbmcvaW9zL1Njcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGlu
Z05vZGVJT1MubW06CisgICAgICAgICgtW1dLT3ZlcmZsb3dTY3JvbGxWaWV3RGVsZWdhdGUgc2Ny
b2xsVmlld1dpbGxFbmREcmFnZ2luZzp3aXRoVmVsb2NpdHk6dGFyZ2V0Q29udGVudE9mZnNldDpd
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1JlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yUHJv
eHlJT1MubW06CisKKyAgICAgICAgQWRqdXN0IG1haW5mcmFtZSBwcm94aW1pdHkgc2Nyb2xsIHNu
YXBwaW5nIGxvZ2ljIHRvIG5vdCBzdWJ0cmFjdCBvdXQgdGhlIHRvcCBjb250ZW50IGluc2V0IHdo
ZW4gdGhlcmUgaXMgbm8KKyAgICAgICAgYWN0aXZlIHNuYXAgb2Zmc2V0IChpLmUuIHdoZW4gc25h
cHBpbmcgcmVzdHMgaW4gYSBzbmFwIG9mZnNldCByYW5nZSkuIEF0dGVtcHRpbmcgdG8gc3VidHJh
Y3Qgb3V0IHRoZSB0b3AgaW5zZXQKKyAgICAgICAgaW4gdGhpcyBjYXNlIGNhdXNlZCB0aGUgc2Ny
b2xsIG9mZnNldCB0byBqdW1wIGFmdGVyIGVuZGluZyBhIGRyYWcgd2l0aCBubyBtb21lbnR1bSBp
biBhIHNuYXAgb2Zmc2V0IHJhbmdlLgorCisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVNjcm9sbGlu
Z0Nvb3JkaW5hdG9yUHJveHk6OmFkanVzdFRhcmdldENvbnRlbnRPZmZzZXRGb3JTbmFwcGluZyk6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yUHJveHk6OnNob3Vs
ZFNuYXBGb3JNYWluRnJhbWVTY3JvbGxpbmcpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVTY3Jv
bGxpbmdDb29yZGluYXRvclByb3h5OjpjbG9zZXN0U25hcE9mZnNldEZvck1haW5GcmFtZVNjcm9s
bGluZyk6CisKIDIwMTctMDEtMTAgIFphbiBEb2JlcnNlayAgPHpkb2JlcnNla0BpZ2FsaWEuY29t
PgogCiAgICAgICAgIFRocmVhZGVkQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0OjpyZW5kZXJOZXh0
RnJhbWUoKSBzaG91bGQgc2hvcnQtY3V0IHRvIGxheWVyIGZsdXNoaW5nCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggMTMzNmZjZTNh
OGNjNDU2YzZhODE0YmYzMzEwZmNhY2NhMzBmNGQyOC4uNDQ5OGY1NmE2ODQxNDIyZjk3ODc0MTQ5
OThiYzk4MTgzY2FiNTJjYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagpAQCAtNjQ4NSw2ICs2NDg1LDcgQEAKIAkJRjQ0RUJCREIxREI1
REQ5RDAwMjc3MzM0IC8qIFN0YXRpY1JhbmdlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY0NEVCQkRBMURCNUREOUQwMDI3NzMzNCAvKiBTdGF0aWNS
YW5nZS5jcHAgKi87IH07CiAJCUY0NUMyMzFEMTk5NUI3M0IwMEE2RTJFMyAvKiBBeGlzU2Nyb2xs
U25hcE9mZnNldHMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gRjQ1QzIzMUIxOTk1QjczQjAwQTZFMkUzIC8qIEF4aXNTY3JvbGxTbmFwT2Zmc2V0cy5j
cHAgKi87IH07CiAJCUY0NUMyMzFFMTk5NUI3M0IwMEE2RTJFMyAvKiBBeGlzU2Nyb2xsU25hcE9m
ZnNldHMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY0
NUMyMzFDMTk5NUI3M0IwMEE2RTJFMyAvKiBBeGlzU2Nyb2xsU25hcE9mZnNldHMuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlGNDY3MjkyODFFMERF
Njg1MDBBQ0MzRDggLyogU2Nyb2xsU25hcE9mZnNldHNJbmZvLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNDY3MjkyNTFFMERFNUFCMDBBQ0MzRDggLyog
U2Nyb2xsU25hcE9mZnNldHNJbmZvLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKIAkJRjQ3ODc1NTQxOTk4M0FGRjAwMjRBMjg3IC8qIFNjcm9sbFNuYXBB
bmltYXRvclN0YXRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBGNDc4NzU1MjE5OTgzQUZGMDAyNEEyODcgLyogU2Nyb2xsU25hcEFuaW1hdG9yU3RhdGUu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlGNDc4
NzU1NTE5OTgzQUZGMDAyNEEyODcgLyogU2Nyb2xsU25hcEFuaW1hdG9yU3RhdGUubW0gaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNDc4NzU1MzE5OTgzQUZG
MDAyNEEyODcgLyogU2Nyb2xsU25hcEFuaW1hdG9yU3RhdGUubW0gKi87IH07CiAJCUY0N0E1RTNF
MTk1QjhDOEEwMDQ4MzEwMCAvKiBTdHlsZVNjcm9sbFNuYXBQb2ludHMuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY0N0E1RTNCMTk1QjhDOEEwMDQ4MzEw
MCAvKiBTdHlsZVNjcm9sbFNuYXBQb2ludHMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMTQ1MDUsNiArMTQ1MDYsNyBAQAogCQlGNDRFQkJEQTFE
QjVERDlEMDAyNzczMzQgLyogU3RhdGljUmFuZ2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gU3RhdGljUmFuZ2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlGNDVDMjMxQjE5OTVCNzNCMDBBNkUyRTMgLyogQXhpc1Njcm9sbFNuYXBPZmZzZXRzLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEF4aXNTY3JvbGxTbmFwT2Zm
c2V0cy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUY0NUMyMzFDMTk5NUI3M0Iw
MEE2RTJFMyAvKiBBeGlzU2Nyb2xsU25hcE9mZnNldHMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gQXhpc1Njcm9sbFNuYXBPZmZzZXRzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCUY0NjcyOTI1MUUwREU1QUIwMEFDQzNEOCAvKiBTY3JvbGxTbmFwT2Zmc2V0c0lu
Zm8uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2Nyb2xsU25hcE9mZnNldHNJ
bmZvLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUY0Nzg3NTUyMTk5ODNBRkYwMDI0
QTI4NyAvKiBTY3JvbGxTbmFwQW5pbWF0b3JTdGF0ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBTY3JvbGxTbmFwQW5pbWF0b3JTdGF0ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlGNDc4NzU1MzE5OTgzQUZGMDAyNEEyODcgLyogU2Nyb2xsU25hcEFuaW1hdG9y
U3RhdGUubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBTY3JvbGxT
bmFwQW5pbWF0b3JTdGF0ZS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjQ3QTVF
M0ExOTVCOEM4QTAwNDgzMTAwIC8qIFN0eWxlU2Nyb2xsU25hcFBvaW50cy5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTdHlsZVNjcm9sbFNuYXBQb2ludHMuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTYwMzUsNiArMTYwMzcsNyBAQAogCQkJCTBG
RUEzRTdFMTkxQjMxNjkwMDBGMUI1NSAvKiBTY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdO
b2RlLmggKi8sCiAJCQkJOTM5MUE5OUExNjI5RDZGRjAwMjk3MzMwIC8qIFNjcm9sbGluZ1RyZWVT
Y3JvbGxpbmdOb2RlLmNwcCAqLywKIAkJCQk5MzkxQTk5QjE2MjlENzAwMDAyOTczMzAgLyogU2Ny
b2xsaW5nVHJlZVNjcm9sbGluZ05vZGUuaCAqLywKKwkJCQlGNDY3MjkyNTFFMERFNUFCMDBBQ0Mz
RDggLyogU2Nyb2xsU25hcE9mZnNldHNJbmZvLmggKi8sCiAJCQkJN0FBRkU4Q0QxOUNCODY3MjAw
MEY1NkQ4IC8qIFNjcm9sbExhdGNoaW5nU3RhdGUuY3BwICovLAogCQkJCTdBQUZFOENFMTlDQjg2
NzIwMDBGNTZEOCAvKiBTY3JvbGxMYXRjaGluZ1N0YXRlLmggKi8sCiAJCQkJMEY2MzgzREIxODYx
NUIyOTAwM0U1REI1IC8qIFRocmVhZGVkU2Nyb2xsaW5nVHJlZS5jcHAgKi8sCkBAIC0yNjE3Nyw2
ICsyNjE4MCw3IEBACiAJCQkJMEY0NzEwQzAxREI1NkJFODAwMkRDRUMzIC8qIEpTRE9NUmVjdFJl
YWRPbmx5LmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzVBODZCNjBDMzM2N0U4MDBFRUE2NDkgLyog
SlNET01TZWxlY3Rpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCUM1MTM3Q0YzMTFBNTgzNzgwMDRB
REI5OSAvKiBKU0RPTVN0cmluZ0xpc3QuaCBpbiBIZWFkZXJzICovLAorCQkJCUY0NjcyOTI4MUUw
REU2ODUwMEFDQzNEOCAvKiBTY3JvbGxTbmFwT2Zmc2V0c0luZm8uaCBpbiBIZWFkZXJzICovLAog
CQkJCUJDNjQ2NDk4MTFEODIzNDkwMDY0NTVCMCAvKiBKU0RPTVN0cmluZ01hcC5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJNzY5NDU2M0QxMjE0RDk3QzAwMDdDQkFFIC8qIEpTRE9NVG9rZW5MaXN0Lmgg
aW4gSGVhZGVycyAqLywKIAkJCQkyRTM3RTAwNjEyREJDNUE0MDBBNkIyMzMgLyogSlNET01VUkwu
aCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxp
bmcvQXN5bmNTY3JvbGxpbmdDb29yZGluYXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Nj
cm9sbGluZy9Bc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmNwcAppbmRleCBmNmU1NDZiOTg3MWM5
MDgwNGJiNTc4MTMwNWUxNDNjZWUyMWVjODk2Li43NGNmODNkOTFiNmVkOTQ0MWE4MDhmODAyNjFl
ZjZhNTcwZTk2YjliIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9B
c3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Nj
cm9sbGluZy9Bc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmNwcApAQCAtNjUsNyArNjUsNyBAQCB2
b2lkIEFzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3I6OnNjcm9sbGluZ1N0YXRlVHJlZVByb3BlcnRp
ZXNDaGFuZ2VkKCkKICAgICBzY2hlZHVsZVRyZWVTdGF0ZUNvbW1pdCgpOwogfQogCi1zdGF0aWMg
aW5saW5lIHZvaWQgc2V0U3RhdGVTY3JvbGxpbmdOb2RlU25hcE9mZnNldHNBc0Zsb2F0KFNjcm9s
bGluZ1N0YXRlU2Nyb2xsaW5nTm9kZSYgbm9kZSwgU2Nyb2xsRXZlbnRBeGlzIGF4aXMsIGNvbnN0
IFZlY3RvcjxMYXlvdXRVbml0Piogc25hcE9mZnNldHMsIGZsb2F0IGRldmljZVNjYWxlRmFjdG9y
KQorc3RhdGljIGlubGluZSB2b2lkIHNldFN0YXRlU2Nyb2xsaW5nTm9kZVNuYXBPZmZzZXRzQXNG
bG9hdChTY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGUmIG5vZGUsIFNjcm9sbEV2ZW50QXhpcyBh
eGlzLCBjb25zdCBWZWN0b3I8TGF5b3V0VW5pdD4qIHNuYXBPZmZzZXRzLCBjb25zdCBWZWN0b3I8
U2Nyb2xsT2Zmc2V0UmFuZ2U8TGF5b3V0VW5pdD4+KiBzbmFwT2Zmc2V0UmFuZ2VzLCBmbG9hdCBk
ZXZpY2VTY2FsZUZhY3RvcikKIHsKICAgICAvLyBGSVhNRTogSW5jb3Jwb3JhdGUgY3VycmVudCBw
YWdlIHNjYWxlIGZhY3RvciBpbiBzbmFwcGluZyB0byBkZXZpY2UgcGl4ZWwuIFBlcmhhcHMgd2Ug
c2hvdWxkIGp1c3QgY29udmVydCB0byBmbG9hdCBoZXJlIGFuZCBsZXQgVUkgcHJvY2VzcyBkbyB0
aGUgcGl4ZWwgc25hcHBpbmc/CiAgICAgVmVjdG9yPGZsb2F0PiBzbmFwT2Zmc2V0c0FzRmxvYXQ7
CkBAIC03NCwxMCArNzQsMjAgQEAgc3RhdGljIGlubGluZSB2b2lkIHNldFN0YXRlU2Nyb2xsaW5n
Tm9kZVNuYXBPZmZzZXRzQXNGbG9hdChTY3JvbGxpbmdTdGF0ZVNjcm9sbGkKICAgICAgICAgZm9y
IChhdXRvJiBvZmZzZXQgOiAqc25hcE9mZnNldHMpCiAgICAgICAgICAgICBzbmFwT2Zmc2V0c0Fz
RmxvYXQudW5jaGVja2VkQXBwZW5kKHJvdW5kVG9EZXZpY2VQaXhlbChvZmZzZXQsIGRldmljZVNj
YWxlRmFjdG9yLCBmYWxzZSkpOwogICAgIH0KLSAgICBpZiAoYXhpcyA9PSBTY3JvbGxFdmVudEF4
aXM6Okhvcml6b250YWwpCisKKyAgICBWZWN0b3I8U2Nyb2xsT2Zmc2V0UmFuZ2U8ZmxvYXQ+PiBz
bmFwT2Zmc2V0UmFuZ2VzQXNGbG9hdDsKKyAgICBpZiAoc25hcE9mZnNldFJhbmdlcykgeworICAg
ICAgICBzbmFwT2Zmc2V0UmFuZ2VzQXNGbG9hdC5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KHNuYXBP
ZmZzZXRSYW5nZXMtPnNpemUoKSk7CisgICAgICAgIGZvciAoYXV0byYgcmFuZ2UgOiAqc25hcE9m
ZnNldFJhbmdlcykKKyAgICAgICAgICAgIHNuYXBPZmZzZXRSYW5nZXNBc0Zsb2F0LnVuY2hlY2tl
ZEFwcGVuZCh7IHJvdW5kVG9EZXZpY2VQaXhlbChyYW5nZS5zdGFydCwgZGV2aWNlU2NhbGVGYWN0
b3IsIGZhbHNlKSwgcm91bmRUb0RldmljZVBpeGVsKHJhbmdlLmVuZCwgZGV2aWNlU2NhbGVGYWN0
b3IsIGZhbHNlKSB9KTsKKyAgICB9CisgICAgaWYgKGF4aXMgPT0gU2Nyb2xsRXZlbnRBeGlzOjpI
b3Jpem9udGFsKSB7CiAgICAgICAgIG5vZGUuc2V0SG9yaXpvbnRhbFNuYXBPZmZzZXRzKHNuYXBP
ZmZzZXRzQXNGbG9hdCk7Ci0gICAgZWxzZQorICAgICAgICBub2RlLnNldEhvcml6b250YWxTbmFw
T2Zmc2V0UmFuZ2VzKHNuYXBPZmZzZXRSYW5nZXNBc0Zsb2F0KTsKKyAgICB9IGVsc2UgewogICAg
ICAgICBub2RlLnNldFZlcnRpY2FsU25hcE9mZnNldHMoc25hcE9mZnNldHNBc0Zsb2F0KTsKKyAg
ICAgICAgbm9kZS5zZXRWZXJ0aWNhbFNuYXBPZmZzZXRSYW5nZXMoc25hcE9mZnNldFJhbmdlc0Fz
RmxvYXQpOworICAgIH0KIH0KIAogdm9pZCBBc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yOjpzZXRF
dmVudFRyYWNraW5nUmVnaW9uc0RpcnR5KCkKQEAgLTUzNyw4ICs1NDcsOCBAQCB2b2lkIEFzeW5j
U2Nyb2xsaW5nQ29vcmRpbmF0b3I6OnVwZGF0ZU92ZXJmbG93U2Nyb2xsaW5nTm9kZShTY3JvbGxp
bmdOb2RlSUQgbm9kZQogICAgICAgICBub2RlLT5zZXRSZWFjaGFibGVDb250ZW50c1NpemUoc2Ny
b2xsaW5nR2VvbWV0cnktPnJlYWNoYWJsZUNvbnRlbnRTaXplKTsKICAgICAgICAgbm9kZS0+c2V0
U2Nyb2xsYWJsZUFyZWFTaXplKHNjcm9sbGluZ0dlb21ldHJ5LT5zY3JvbGxhYmxlQXJlYVNpemUp
OwogI2lmIEVOQUJMRShDU1NfU0NST0xMX1NOQVApCi0gICAgICAgIHNldFN0YXRlU2Nyb2xsaW5n
Tm9kZVNuYXBPZmZzZXRzQXNGbG9hdCgqbm9kZSwgU2Nyb2xsRXZlbnRBeGlzOjpIb3Jpem9udGFs
LCAmc2Nyb2xsaW5nR2VvbWV0cnktPmhvcml6b250YWxTbmFwT2Zmc2V0cywgbV9wYWdlLT5kZXZp
Y2VTY2FsZUZhY3RvcigpKTsKLSAgICAgICAgc2V0U3RhdGVTY3JvbGxpbmdOb2RlU25hcE9mZnNl
dHNBc0Zsb2F0KCpub2RlLCBTY3JvbGxFdmVudEF4aXM6OlZlcnRpY2FsLCAmc2Nyb2xsaW5nR2Vv
bWV0cnktPnZlcnRpY2FsU25hcE9mZnNldHMsIG1fcGFnZS0+ZGV2aWNlU2NhbGVGYWN0b3IoKSk7
CisgICAgICAgIHNldFN0YXRlU2Nyb2xsaW5nTm9kZVNuYXBPZmZzZXRzQXNGbG9hdCgqbm9kZSwg
U2Nyb2xsRXZlbnRBeGlzOjpIb3Jpem9udGFsLCAmc2Nyb2xsaW5nR2VvbWV0cnktPmhvcml6b250
YWxTbmFwT2Zmc2V0cywgJnNjcm9sbGluZ0dlb21ldHJ5LT5ob3Jpem9udGFsU25hcE9mZnNldFJh
bmdlcywgbV9wYWdlLT5kZXZpY2VTY2FsZUZhY3RvcigpKTsKKyAgICAgICAgc2V0U3RhdGVTY3Jv
bGxpbmdOb2RlU25hcE9mZnNldHNBc0Zsb2F0KCpub2RlLCBTY3JvbGxFdmVudEF4aXM6OlZlcnRp
Y2FsLCAmc2Nyb2xsaW5nR2VvbWV0cnktPnZlcnRpY2FsU25hcE9mZnNldHMsICZzY3JvbGxpbmdH
ZW9tZXRyeS0+dmVydGljYWxTbmFwT2Zmc2V0UmFuZ2VzLCBtX3BhZ2UtPmRldmljZVNjYWxlRmFj
dG9yKCkpOwogICAgICAgICBub2RlLT5zZXRDdXJyZW50SG9yaXpvbnRhbFNuYXBQb2ludEluZGV4
KHNjcm9sbGluZ0dlb21ldHJ5LT5jdXJyZW50SG9yaXpvbnRhbFNuYXBQb2ludEluZGV4KTsKICAg
ICAgICAgbm9kZS0+c2V0Q3VycmVudFZlcnRpY2FsU25hcFBvaW50SW5kZXgoc2Nyb2xsaW5nR2Vv
bWV0cnktPmN1cnJlbnRWZXJ0aWNhbFNuYXBQb2ludEluZGV4KTsKICNlbmRpZgpAQCAtNjgyLDgg
KzY5Miw4IEBAIGJvb2wgQXN5bmNTY3JvbGxpbmdDb29yZGluYXRvcjo6aXNTY3JvbGxTbmFwSW5Q
cm9ncmVzcygpIGNvbnN0CiB2b2lkIEFzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3I6OnVwZGF0ZVNj
cm9sbFNuYXBQcm9wZXJ0aWVzV2l0aEZyYW1lVmlldyhjb25zdCBGcmFtZVZpZXcmIGZyYW1lVmll
dykKIHsKICAgICBpZiAoYXV0byBub2RlID0gZG93bmNhc3Q8U2Nyb2xsaW5nU3RhdGVGcmFtZVNj
cm9sbGluZ05vZGU+KG1fc2Nyb2xsaW5nU3RhdGVUcmVlLT5zdGF0ZU5vZGVGb3JJRChmcmFtZVZp
ZXcuc2Nyb2xsTGF5ZXJJRCgpKSkpIHsKLSAgICAgICAgc2V0U3RhdGVTY3JvbGxpbmdOb2RlU25h
cE9mZnNldHNBc0Zsb2F0KCpub2RlLCBTY3JvbGxFdmVudEF4aXM6Okhvcml6b250YWwsIGZyYW1l
Vmlldy5ob3Jpem9udGFsU25hcE9mZnNldHMoKSwgbV9wYWdlLT5kZXZpY2VTY2FsZUZhY3Rvcigp
KTsKLSAgICAgICAgc2V0U3RhdGVTY3JvbGxpbmdOb2RlU25hcE9mZnNldHNBc0Zsb2F0KCpub2Rl
LCBTY3JvbGxFdmVudEF4aXM6OlZlcnRpY2FsLCBmcmFtZVZpZXcudmVydGljYWxTbmFwT2Zmc2V0
cygpLCBtX3BhZ2UtPmRldmljZVNjYWxlRmFjdG9yKCkpOworICAgICAgICBzZXRTdGF0ZVNjcm9s
bGluZ05vZGVTbmFwT2Zmc2V0c0FzRmxvYXQoKm5vZGUsIFNjcm9sbEV2ZW50QXhpczo6SG9yaXpv
bnRhbCwgZnJhbWVWaWV3Lmhvcml6b250YWxTbmFwT2Zmc2V0cygpLCBmcmFtZVZpZXcuaG9yaXpv
bnRhbFNuYXBPZmZzZXRSYW5nZXMoKSwgbV9wYWdlLT5kZXZpY2VTY2FsZUZhY3RvcigpKTsKKyAg
ICAgICAgc2V0U3RhdGVTY3JvbGxpbmdOb2RlU25hcE9mZnNldHNBc0Zsb2F0KCpub2RlLCBTY3Jv
bGxFdmVudEF4aXM6OlZlcnRpY2FsLCBmcmFtZVZpZXcudmVydGljYWxTbmFwT2Zmc2V0cygpLCBm
cmFtZVZpZXcudmVydGljYWxTbmFwT2Zmc2V0UmFuZ2VzKCksIG1fcGFnZS0+ZGV2aWNlU2NhbGVG
YWN0b3IoKSk7CiAgICAgICAgIG5vZGUtPnNldEN1cnJlbnRIb3Jpem9udGFsU25hcFBvaW50SW5k
ZXgoZnJhbWVWaWV3LmN1cnJlbnRIb3Jpem9udGFsU25hcFBvaW50SW5kZXgoKSk7CiAgICAgICAg
IG5vZGUtPnNldEN1cnJlbnRWZXJ0aWNhbFNuYXBQb2ludEluZGV4KGZyYW1lVmlldy5jdXJyZW50
VmVydGljYWxTbmFwUG9pbnRJbmRleCgpKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL3Njcm9sbGluZy9BeGlzU2Nyb2xsU25hcE9mZnNldHMuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9zY3JvbGxpbmcvQXhpc1Njcm9sbFNuYXBPZmZzZXRzLmNwcAppbmRleCA0Njlj
MDhmZGU0NjQ4ZWNhOWM1MzUzMjA3OWM5ZGRmOGZjYzY2YzM4Li4wMjA3NTM4NDdhMGQ4NDE3MTkz
MGUyZTZmM2U1ZTRkOWQ0OGM3YWYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Nj
cm9sbGluZy9BeGlzU2Nyb2xsU25hcE9mZnNldHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2Uvc2Nyb2xsaW5nL0F4aXNTY3JvbGxTbmFwT2Zmc2V0cy5jcHAKQEAgLTg0LDYgKzg0LDE2IEBA
IHN0YXRpYyBTdHJpbmcgc25hcE9mZnNldHNUb1N0cmluZyhjb25zdCBWZWN0b3I8TGF5b3V0VW5p
dD4mIHNuYXBPZmZzZXRzKQogICAgIHJldHVybiBzLnRvU3RyaW5nKCk7CiB9CiAKK3N0YXRpYyBT
dHJpbmcgc25hcE9mZnNldFJhbmdlc1RvU3RyaW5nKGNvbnN0IFZlY3RvcjxTY3JvbGxPZmZzZXRS
YW5nZTxMYXlvdXRVbml0Pj4mIHJhbmdlcykKK3sKKyAgICBTdHJpbmdCdWlsZGVyIHM7CisgICAg
cy5hcHBlbmQoIlsgIik7CisgICAgZm9yIChhdXRvIHJhbmdlIDogcmFuZ2VzKQorICAgICAgICBz
LmFwcGVuZChTdHJpbmc6OmZvcm1hdCgiKCUuMWYsICUuMWYpICIsIHJhbmdlLnN0YXJ0LnRvRmxv
YXQoKSwgcmFuZ2UuZW5kLnRvRmxvYXQoKSkpOworICAgIHMuYXBwZW5kKCJdIik7CisgICAgcmV0
dXJuIHMudG9TdHJpbmcoKTsKK30KKwogc3RhdGljIFN0cmluZyBzbmFwUG9ydE9yQXJlYVRvU3Ry
aW5nKGNvbnN0IExheW91dFJlY3QmIHJlY3QpCiB7CiAgICAgcmV0dXJuIFN0cmluZzo6Zm9ybWF0
KCJ7eyUuMWYsICUuMWZ9IHslLjFmLCAlLjFmfX0iLCByZWN0LngoKS50b0Zsb2F0KCksIHJlY3Qu
eSgpLnRvRmxvYXQoKSwgcmVjdC53aWR0aCgpLnRvRmxvYXQoKSwgcmVjdC5oZWlnaHQoKS50b0Zs
b2F0KCkpOwpAQCAtOTEsNiArMTAxLDEwMCBAQCBzdGF0aWMgU3RyaW5nIHNuYXBQb3J0T3JBcmVh
VG9TdHJpbmcoY29uc3QgTGF5b3V0UmVjdCYgcmVjdCkKIAogI2VuZGlmCiAKK3RlbXBsYXRlIDx0
eXBlbmFtZSBMYXlvdXRUeXBlPgorc3RhdGljIHZvaWQgaW5kaWNlc09mTmVhcmVzdFNuYXBPZmZz
ZXRSYW5nZXMoTGF5b3V0VHlwZSBvZmZzZXQsIGNvbnN0IFZlY3RvcjxTY3JvbGxPZmZzZXRSYW5n
ZTxMYXlvdXRUeXBlPj4mIHNuYXBPZmZzZXRSYW5nZXMsIHVuc2lnbmVkJiBsb3dlckluZGV4LCB1
bnNpZ25lZCYgdXBwZXJJbmRleCkKK3sKKyAgICBpZiAoc25hcE9mZnNldFJhbmdlcy5pc0VtcHR5
KCkpIHsKKyAgICAgICAgbG93ZXJJbmRleCA9IGludmFsaWRTbmFwT2Zmc2V0SW5kZXg7CisgICAg
ICAgIHVwcGVySW5kZXggPSBpbnZhbGlkU25hcE9mZnNldEluZGV4OworICAgICAgICByZXR1cm47
CisgICAgfQorCisgICAgaW50IGxvd2VySW5kZXhBc0ludCA9IC0xOworICAgIGludCB1cHBlcklu
ZGV4QXNJbnQgPSBzbmFwT2Zmc2V0UmFuZ2VzLnNpemUoKTsKKyAgICBkbyB7CisgICAgICAgIGlu
dCBtaWRkbGVJbmRleCA9IChsb3dlckluZGV4QXNJbnQgKyB1cHBlckluZGV4QXNJbnQpIC8gMjsK
KyAgICAgICAgYXV0byYgcmFuZ2UgPSBzbmFwT2Zmc2V0UmFuZ2VzW21pZGRsZUluZGV4XTsKKyAg
ICAgICAgaWYgKHJhbmdlLnN0YXJ0IDwgb2Zmc2V0ICYmIG9mZnNldCA8IHJhbmdlLmVuZCkgewor
ICAgICAgICAgICAgbG93ZXJJbmRleEFzSW50ID0gbWlkZGxlSW5kZXg7CisgICAgICAgICAgICB1
cHBlckluZGV4QXNJbnQgPSBtaWRkbGVJbmRleDsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICB9CisKKyAgICAgICAgaWYgKG9mZnNldCA+IHJhbmdlLmVuZCkKKyAgICAgICAgICAgIGxvd2Vy
SW5kZXhBc0ludCA9IG1pZGRsZUluZGV4OworICAgICAgICBlbHNlCisgICAgICAgICAgICB1cHBl
ckluZGV4QXNJbnQgPSBtaWRkbGVJbmRleDsKKyAgICB9IHdoaWxlIChsb3dlckluZGV4QXNJbnQg
PCB1cHBlckluZGV4QXNJbnQgLSAxKTsKKworICAgIGlmIChvZmZzZXQgPD0gc25hcE9mZnNldFJh
bmdlcy5maXJzdCgpLnN0YXJ0KQorICAgICAgICBsb3dlckluZGV4ID0gaW52YWxpZFNuYXBPZmZz
ZXRJbmRleDsKKyAgICBlbHNlCisgICAgICAgIGxvd2VySW5kZXggPSBsb3dlckluZGV4QXNJbnQ7
CisKKyAgICBpZiAob2Zmc2V0ID49IHNuYXBPZmZzZXRSYW5nZXMubGFzdCgpLmVuZCkKKyAgICAg
ICAgdXBwZXJJbmRleCA9IGludmFsaWRTbmFwT2Zmc2V0SW5kZXg7CisgICAgZWxzZQorICAgICAg
ICB1cHBlckluZGV4ID0gdXBwZXJJbmRleEFzSW50OworfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUg
TGF5b3V0VHlwZT4KK3N0YXRpYyB2b2lkIGluZGljZXNPZk5lYXJlc3RTbmFwT2Zmc2V0cyhMYXlv
dXRUeXBlIG9mZnNldCwgY29uc3QgVmVjdG9yPExheW91dFR5cGU+JiBzbmFwT2Zmc2V0cywgdW5z
aWduZWQmIGxvd2VySW5kZXgsIHVuc2lnbmVkJiB1cHBlckluZGV4KQoreworICAgIGxvd2VySW5k
ZXggPSAwOworICAgIHVwcGVySW5kZXggPSBzbmFwT2Zmc2V0cy5zaXplKCkgLSAxOworICAgIHdo
aWxlIChsb3dlckluZGV4IDwgdXBwZXJJbmRleCAtIDEpIHsKKyAgICAgICAgaW50IG1pZGRsZUlu
ZGV4ID0gKGxvd2VySW5kZXggKyB1cHBlckluZGV4KSAvIDI7CisgICAgICAgIGF1dG8gbWlkZGxl
T2Zmc2V0ID0gc25hcE9mZnNldHNbbWlkZGxlSW5kZXhdOworICAgICAgICBpZiAob2Zmc2V0ID09
IG1pZGRsZU9mZnNldCkgeworICAgICAgICAgICAgdXBwZXJJbmRleCA9IG1pZGRsZUluZGV4Owor
ICAgICAgICAgICAgbG93ZXJJbmRleCA9IG1pZGRsZUluZGV4OworICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgIH0KKworICAgICAgICBpZiAob2Zmc2V0ID4gbWlkZGxlT2Zmc2V0KQorICAgICAg
ICAgICAgbG93ZXJJbmRleCA9IG1pZGRsZUluZGV4OworICAgICAgICBlbHNlCisgICAgICAgICAg
ICB1cHBlckluZGV4ID0gbWlkZGxlSW5kZXg7CisgICAgfQorfQorCitzdGF0aWMgdm9pZCBhZGp1
c3RBeGlzU25hcE9mZnNldHNGb3JTY3JvbGxFeHRlbnQoVmVjdG9yPExheW91dFVuaXQ+JiBzbmFw
T2Zmc2V0cywgZmxvYXQgbWF4U2Nyb2xsRXh0ZW50KQoreworICAgIGlmIChzbmFwT2Zmc2V0cy5p
c0VtcHR5KCkpCisgICAgICAgIHJldHVybjsKKworICAgIHN0ZDo6c29ydChzbmFwT2Zmc2V0cy5i
ZWdpbigpLCBzbmFwT2Zmc2V0cy5lbmQoKSk7CisgICAgaWYgKHNuYXBPZmZzZXRzLmxhc3QoKSAh
PSBtYXhTY3JvbGxFeHRlbnQpCisgICAgICAgIHNuYXBPZmZzZXRzLmFwcGVuZChtYXhTY3JvbGxF
eHRlbnQpOworICAgIGlmIChzbmFwT2Zmc2V0cy5maXJzdCgpKQorICAgICAgICBzbmFwT2Zmc2V0
cy5pbnNlcnQoMCwgMCk7Cit9CisKK3N0YXRpYyB2b2lkIGNvbXB1dGVBeGlzUHJveGltaXR5U25h
cE9mZnNldFJhbmdlcyhjb25zdCBWZWN0b3I8TGF5b3V0VW5pdD4mIHNuYXBPZmZzZXRzLCBWZWN0
b3I8U2Nyb2xsT2Zmc2V0UmFuZ2U8TGF5b3V0VW5pdD4+JiBvZmZzZXRSYW5nZXMsIExheW91dFVu
aXQgc2Nyb2xsUG9ydEF4aXNMZW5ndGgpCit7CisgICAgLy8gVGhpcyBpcyBhbiBhcmJpdHJhcnkg
Y2hvaWNlIGZvciB3aGF0IGl0IG1lYW5zIHRvIGJlICJpbiBwcm94aW1pdHkiIG9mIGEgc25hcCBv
ZmZzZXQuIFdlIHNob3VsZCBwbGF5IGFyb3VuZCB3aXRoCisgICAgLy8gdGhpcyBhbmQgc2VlIHdo
YXQgZmVlbHMgYmVzdC4KKyAgICBzdGF0aWMgY29uc3QgZmxvYXQgcmF0aW9PZlNjcm9sbFBvcnRB
eGlzTGVuZ3RoVG9CZUNvbnNpZGVyZWRGb3JQcm94aW1pdHkgPSAwLjM7CisgICAgaWYgKHNuYXBP
ZmZzZXRzLnNpemUoKSA8IDIpCisgICAgICAgIHJldHVybjsKKworICAgIC8vIFRoZSBleHRyYSBy
dWxlIGFjY291bnRpbmcgZm9yIHNjcm9sbCBvZmZzZXQgcmFuZ2VzIGluIGJldHdlZW4gdGhlIHNj
cm9sbCBkZXN0aW5hdGlvbiBhbmQgYSBwb3RlbnRpYWwgc25hcCBvZmZzZXQKKyAgICAvLyBoYW5k
bGVzIHRoZSBjb3JuZXIgY2FzZSB3aGVyZSB0aGUgdXNlciBzY3JvbGxzIHdpdGggbW9tZW50dW0g
dmVyeSBsaWdodGx5IGF3YXkgZnJvbSBhIHNuYXAgb2Zmc2V0LCBzdWNoIHRoYXQgdGhlCisgICAg
Ly8gcHJlZGljdGVkIHNjcm9sbCBkZXN0aW5hdGlvbiBpcyBzdGlsbCB3aXRoaW4gcHJveGltaXR5
IG9mIHRoZSBzbmFwIG9mZnNldC4gSW4gdGhpcyBjYXNlLCB0aGUgcmVndWxhciAobWFuZGF0b3J5
CisgICAgLy8gc2Nyb2xsIHNuYXBwaW5nKSBiZWhhdmlvciB3b3VsZCBiZSB0byBzbmFwIHRvIHRo
ZSBuZXh0IG9mZnNldCBpbiB0aGUgZGlyZWN0aW9uIG9mIG1vbWVudHVtIHNjcm9sbGluZywgYnV0
CisgICAgLy8gaW5zdGVhZCwgaXQgaXMgbW9yZSBpbnR1aXRpdmUgdG8gZWl0aGVyIHJldHVybiB0
byB0aGUgb3JpZ2luYWwgc25hcCBwb3NpdGlvbiAod2hpY2ggd2UgYXJiaXRyYXJpbHkgY2hvb3Nl
IGhlcmUpCisgICAgLy8gb3Igc2Nyb2xsIGp1c3Qgb3V0c2lkZSBvZiB0aGUgc25hcCBvZmZzZXQg
cmFuZ2UuIFRoaXMgaXMgYW5vdGhlciBtaW5vciBiZWhhdmlvciB0d2VhayB0aGF0IHdlIHNob3Vs
ZCBwbGF5IGFyb3VuZAorICAgIC8vIHdpdGggdG8gc2VlIHdoYXQgZmVlbHMgYmVzdC4KKyAgICBM
YXlvdXRVbml0IHByb3hpbWl0eURpc3RhbmNlID0gcmF0aW9PZlNjcm9sbFBvcnRBeGlzTGVuZ3Ro
VG9CZUNvbnNpZGVyZWRGb3JQcm94aW1pdHkgKiBzY3JvbGxQb3J0QXhpc0xlbmd0aDsKKyAgICBm
b3IgKHNpemVfdCBpbmRleCA9IDE7IGluZGV4IDwgc25hcE9mZnNldHMuc2l6ZSgpOyArK2luZGV4
KSB7CisgICAgICAgIGF1dG8gc3RhcnRPZmZzZXQgPSBzbmFwT2Zmc2V0c1tpbmRleCAtIDFdICsg
cHJveGltaXR5RGlzdGFuY2U7CisgICAgICAgIGF1dG8gZW5kT2Zmc2V0ID0gc25hcE9mZnNldHNb
aW5kZXhdIC0gcHJveGltaXR5RGlzdGFuY2U7CisgICAgICAgIGlmIChzdGFydE9mZnNldCA8IGVu
ZE9mZnNldCkKKyAgICAgICAgICAgIG9mZnNldFJhbmdlcy5hcHBlbmQoeyBzdGFydE9mZnNldCwg
ZW5kT2Zmc2V0IH0pOworICAgIH0KK30KKwogdm9pZCB1cGRhdGVTbmFwT2Zmc2V0c0ZvclNjcm9s
bGFibGVBcmVhKFNjcm9sbGFibGVBcmVhJiBzY3JvbGxhYmxlQXJlYSwgSFRNTEVsZW1lbnQmIHNj
cm9sbGluZ0VsZW1lbnQsIGNvbnN0IFJlbmRlckJveCYgc2Nyb2xsaW5nRWxlbWVudEJveCwgY29u
c3QgUmVuZGVyU3R5bGUmIHNjcm9sbGluZ0VsZW1lbnRTdHlsZSkKIHsKICAgICBhdXRvKiBzY3Jv
bGxDb250YWluZXIgPSBzY3JvbGxpbmdFbGVtZW50LnJlbmRlcmVyKCk7CkBAIC0xMDEsOCArMjA1
LDEwIEBAIHZvaWQgdXBkYXRlU25hcE9mZnNldHNGb3JTY3JvbGxhYmxlQXJlYShTY3JvbGxhYmxl
QXJlYSYgc2Nyb2xsYWJsZUFyZWEsIEhUTUxFbGVtCiAgICAgICAgIHJldHVybjsKICAgICB9CiAK
LSAgICBhdXRvIHZlcnRpY2FsU25hcE9mZnNldHMgPSBzdGQ6Om1ha2VfdW5pcXVlPFZlY3RvcjxM
YXlvdXRVbml0Pj4oKTsKLSAgICBhdXRvIGhvcml6b250YWxTbmFwT2Zmc2V0cyA9IHN0ZDo6bWFr
ZV91bmlxdWU8VmVjdG9yPExheW91dFVuaXQ+PigpOworICAgIFZlY3RvcjxMYXlvdXRVbml0PiB2
ZXJ0aWNhbFNuYXBPZmZzZXRzOworICAgIFZlY3RvcjxMYXlvdXRVbml0PiBob3Jpem9udGFsU25h
cE9mZnNldHM7CisgICAgVmVjdG9yPFNjcm9sbE9mZnNldFJhbmdlPExheW91dFVuaXQ+PiB2ZXJ0
aWNhbFNuYXBPZmZzZXRSYW5nZXM7CisgICAgVmVjdG9yPFNjcm9sbE9mZnNldFJhbmdlPExheW91
dFVuaXQ+PiBob3Jpem9udGFsU25hcE9mZnNldFJhbmdlczsKICAgICBIYXNoU2V0PGZsb2F0PiBz
ZWVuVmVydGljYWxTbmFwT2Zmc2V0czsKICAgICBIYXNoU2V0PGZsb2F0PiBzZWVuSG9yaXpvbnRh
bFNuYXBPZmZzZXRzOwogICAgIGJvb2wgaGFzSG9yaXpvbnRhbFNuYXBPZmZzZXRzID0gc2Nyb2xs
U25hcFR5cGUuYXhpcyA9PSBTY3JvbGxTbmFwQXhpczo6Qm90aCB8fCBzY3JvbGxTbmFwVHlwZS5h
eGlzID09IFNjcm9sbFNuYXBBeGlzOjpYQXhpcyB8fCBzY3JvbGxTbmFwVHlwZS5heGlzID09IFNj
cm9sbFNuYXBBeGlzOjpJbmxpbmU7CkBAIC0xMzMsNDUgKzIzOSwxMDggQEAgdm9pZCB1cGRhdGVT
bmFwT2Zmc2V0c0ZvclNjcm9sbGFibGVBcmVhKFNjcm9sbGFibGVBcmVhJiBzY3JvbGxhYmxlQXJl
YSwgSFRNTEVsZW0KICAgICAgICAgICAgIGF1dG8gYWJzb2x1dGVTY3JvbGxPZmZzZXQgPSBjbGFt
cFRvPExheW91dFVuaXQ+KGNvbXB1dGVTY3JvbGxTbmFwQWxpZ25PZmZzZXQoc2Nyb2xsU25hcEFy
ZWEueCgpLCBzY3JvbGxTbmFwQXJlYS53aWR0aCgpLCBhbGlnbm1lbnQueCkgLSBjb21wdXRlU2Ny
b2xsU25hcEFsaWduT2Zmc2V0KHNjcm9sbFNuYXBQb3J0LngoKSwgc2Nyb2xsU25hcFBvcnQud2lk
dGgoKSwgYWxpZ25tZW50LngpLCAwLCBtYXhTY3JvbGxMZWZ0KTsKICAgICAgICAgICAgIGlmICgh
c2Vlbkhvcml6b250YWxTbmFwT2Zmc2V0cy5jb250YWlucyhhYnNvbHV0ZVNjcm9sbE9mZnNldCkp
IHsKICAgICAgICAgICAgICAgICBzZWVuSG9yaXpvbnRhbFNuYXBPZmZzZXRzLmFkZChhYnNvbHV0
ZVNjcm9sbE9mZnNldCk7Ci0gICAgICAgICAgICAgICAgaG9yaXpvbnRhbFNuYXBPZmZzZXRzLT5h
cHBlbmQoYWJzb2x1dGVTY3JvbGxPZmZzZXQpOworICAgICAgICAgICAgICAgIGhvcml6b250YWxT
bmFwT2Zmc2V0cy5hcHBlbmQoYWJzb2x1dGVTY3JvbGxPZmZzZXQpOwogICAgICAgICAgICAgfQog
ICAgICAgICB9CiAgICAgICAgIGlmIChoYXNWZXJ0aWNhbFNuYXBPZmZzZXRzICYmIGFsaWdubWVu
dC55ICE9IFNjcm9sbFNuYXBBeGlzQWxpZ25UeXBlOjpOb25lKSB7CiAgICAgICAgICAgICBhdXRv
IGFic29sdXRlU2Nyb2xsT2Zmc2V0ID0gY2xhbXBUbzxMYXlvdXRVbml0Pihjb21wdXRlU2Nyb2xs
U25hcEFsaWduT2Zmc2V0KHNjcm9sbFNuYXBBcmVhLnkoKSwgc2Nyb2xsU25hcEFyZWEuaGVpZ2h0
KCksIGFsaWdubWVudC55KSAtIGNvbXB1dGVTY3JvbGxTbmFwQWxpZ25PZmZzZXQoc2Nyb2xsU25h
cFBvcnQueSgpLCBzY3JvbGxTbmFwUG9ydC5oZWlnaHQoKSwgYWxpZ25tZW50LnkpLCAwLCBtYXhT
Y3JvbGxUb3ApOwogICAgICAgICAgICAgaWYgKCFzZWVuVmVydGljYWxTbmFwT2Zmc2V0cy5jb250
YWlucyhhYnNvbHV0ZVNjcm9sbE9mZnNldCkpIHsKICAgICAgICAgICAgICAgICBzZWVuVmVydGlj
YWxTbmFwT2Zmc2V0cy5hZGQoYWJzb2x1dGVTY3JvbGxPZmZzZXQpOwotICAgICAgICAgICAgICAg
IHZlcnRpY2FsU25hcE9mZnNldHMtPmFwcGVuZChhYnNvbHV0ZVNjcm9sbE9mZnNldCk7CisgICAg
ICAgICAgICAgICAgdmVydGljYWxTbmFwT2Zmc2V0cy5hcHBlbmQoYWJzb2x1dGVTY3JvbGxPZmZz
ZXQpOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQogCi0gICAgc3RkOjpzb3J0KGhv
cml6b250YWxTbmFwT2Zmc2V0cy0+YmVnaW4oKSwgaG9yaXpvbnRhbFNuYXBPZmZzZXRzLT5lbmQo
KSk7Ci0gICAgaWYgKGhvcml6b250YWxTbmFwT2Zmc2V0cy0+c2l6ZSgpKSB7Ci0gICAgICAgIGlm
IChob3Jpem9udGFsU25hcE9mZnNldHMtPmxhc3QoKSAhPSBtYXhTY3JvbGxMZWZ0KQotICAgICAg
ICAgICAgaG9yaXpvbnRhbFNuYXBPZmZzZXRzLT5hcHBlbmQobWF4U2Nyb2xsTGVmdCk7Ci0gICAg
ICAgIGlmIChob3Jpem9udGFsU25hcE9mZnNldHMtPmZpcnN0KCkpCi0gICAgICAgICAgICBob3Jp
em9udGFsU25hcE9mZnNldHMtPmluc2VydCgwLCAwKTsKKyAgICBpZiAoIWhvcml6b250YWxTbmFw
T2Zmc2V0cy5pc0VtcHR5KCkpIHsKKyAgICAgICAgYWRqdXN0QXhpc1NuYXBPZmZzZXRzRm9yU2Ny
b2xsRXh0ZW50KGhvcml6b250YWxTbmFwT2Zmc2V0cywgbWF4U2Nyb2xsTGVmdCk7CiAjaWYgIUxP
R19ESVNBQkxFRAotICAgICAgICBMT0coU2Nyb2xsaW5nLCAiID0+IENvbXB1dGVkIGhvcml6b250
YWwgc2Nyb2xsIHNuYXAgb2Zmc2V0czogJXMiLCBzbmFwT2Zmc2V0c1RvU3RyaW5nKCpob3Jpem9u
dGFsU25hcE9mZnNldHMpLnV0ZjgoKS5kYXRhKCkpOworICAgICAgICBMT0coU2Nyb2xsaW5nLCAi
ID0+IENvbXB1dGVkIGhvcml6b250YWwgc2Nyb2xsIHNuYXAgb2Zmc2V0czogJXMiLCBzbmFwT2Zm
c2V0c1RvU3RyaW5nKGhvcml6b250YWxTbmFwT2Zmc2V0cykudXRmOCgpLmRhdGEoKSk7CisgICAg
ICAgIExPRyhTY3JvbGxpbmcsICIgPT4gQ29tcHV0ZWQgaG9yaXpvbnRhbCBzY3JvbGwgc25hcCBv
ZmZzZXQgcmFuZ2VzOiAlcyIsIHNuYXBPZmZzZXRSYW5nZXNUb1N0cmluZyhob3Jpem9udGFsU25h
cE9mZnNldFJhbmdlcykudXRmOCgpLmRhdGEoKSk7CiAjZW5kaWYKLSAgICAgICAgc2Nyb2xsYWJs
ZUFyZWEuc2V0SG9yaXpvbnRhbFNuYXBPZmZzZXRzKFdURk1vdmUoaG9yaXpvbnRhbFNuYXBPZmZz
ZXRzKSk7CisgICAgICAgIGlmIChzY3JvbGxTbmFwVHlwZS5zdHJpY3RuZXNzID09IFNjcm9sbFNu
YXBTdHJpY3RuZXNzOjpQcm94aW1pdHkpCisgICAgICAgICAgICBjb21wdXRlQXhpc1Byb3hpbWl0
eVNuYXBPZmZzZXRSYW5nZXMoaG9yaXpvbnRhbFNuYXBPZmZzZXRzLCBob3Jpem9udGFsU25hcE9m
ZnNldFJhbmdlcywgc2Nyb2xsU25hcFBvcnQud2lkdGgoKSk7CisKKyAgICAgICAgc2Nyb2xsYWJs
ZUFyZWEuc2V0SG9yaXpvbnRhbFNuYXBPZmZzZXRzKGhvcml6b250YWxTbmFwT2Zmc2V0cyk7Cisg
ICAgICAgIHNjcm9sbGFibGVBcmVhLnNldEhvcml6b250YWxTbmFwT2Zmc2V0UmFuZ2VzKGhvcml6
b250YWxTbmFwT2Zmc2V0UmFuZ2VzKTsKICAgICB9IGVsc2UKICAgICAgICAgc2Nyb2xsYWJsZUFy
ZWEuY2xlYXJIb3Jpem9udGFsU25hcE9mZnNldHMoKTsKIAotICAgIHN0ZDo6c29ydCh2ZXJ0aWNh
bFNuYXBPZmZzZXRzLT5iZWdpbigpLCB2ZXJ0aWNhbFNuYXBPZmZzZXRzLT5lbmQoKSk7Ci0gICAg
aWYgKHZlcnRpY2FsU25hcE9mZnNldHMtPnNpemUoKSkgewotICAgICAgICBpZiAodmVydGljYWxT
bmFwT2Zmc2V0cy0+bGFzdCgpICE9IG1heFNjcm9sbFRvcCkKLSAgICAgICAgICAgIHZlcnRpY2Fs
U25hcE9mZnNldHMtPmFwcGVuZChtYXhTY3JvbGxUb3ApOwotICAgICAgICBpZiAodmVydGljYWxT
bmFwT2Zmc2V0cy0+Zmlyc3QoKSkKLSAgICAgICAgICAgIHZlcnRpY2FsU25hcE9mZnNldHMtPmlu
c2VydCgwLCAwKTsKKyAgICBpZiAoIXZlcnRpY2FsU25hcE9mZnNldHMuaXNFbXB0eSgpKSB7Cisg
ICAgICAgIGFkanVzdEF4aXNTbmFwT2Zmc2V0c0ZvclNjcm9sbEV4dGVudCh2ZXJ0aWNhbFNuYXBP
ZmZzZXRzLCBtYXhTY3JvbGxUb3ApOwogI2lmICFMT0dfRElTQUJMRUQKLSAgICAgICAgTE9HKFNj
cm9sbGluZywgIiA9PiBDb21wdXRlZCB2ZXJ0aWNhbCBzY3JvbGwgc25hcCBvZmZzZXRzOiAlcyIs
IHNuYXBPZmZzZXRzVG9TdHJpbmcoKnZlcnRpY2FsU25hcE9mZnNldHMpLnV0ZjgoKS5kYXRhKCkp
OworICAgICAgICBMT0coU2Nyb2xsaW5nLCAiID0+IENvbXB1dGVkIHZlcnRpY2FsIHNjcm9sbCBz
bmFwIG9mZnNldHM6ICVzIiwgc25hcE9mZnNldHNUb1N0cmluZyh2ZXJ0aWNhbFNuYXBPZmZzZXRz
KS51dGY4KCkuZGF0YSgpKTsKKyAgICAgICAgTE9HKFNjcm9sbGluZywgIiA9PiBDb21wdXRlZCB2
ZXJ0aWNhbCBzY3JvbGwgc25hcCBvZmZzZXQgcmFuZ2VzOiAlcyIsIHNuYXBPZmZzZXRSYW5nZXNU
b1N0cmluZyh2ZXJ0aWNhbFNuYXBPZmZzZXRSYW5nZXMpLnV0ZjgoKS5kYXRhKCkpOwogI2VuZGlm
Ci0gICAgICAgIHNjcm9sbGFibGVBcmVhLnNldFZlcnRpY2FsU25hcE9mZnNldHMoV1RGTW92ZSh2
ZXJ0aWNhbFNuYXBPZmZzZXRzKSk7CisgICAgICAgIGlmIChzY3JvbGxTbmFwVHlwZS5zdHJpY3Ru
ZXNzID09IFNjcm9sbFNuYXBTdHJpY3RuZXNzOjpQcm94aW1pdHkpCisgICAgICAgICAgICBjb21w
dXRlQXhpc1Byb3hpbWl0eVNuYXBPZmZzZXRSYW5nZXModmVydGljYWxTbmFwT2Zmc2V0cywgdmVy
dGljYWxTbmFwT2Zmc2V0UmFuZ2VzLCBzY3JvbGxTbmFwUG9ydC5oZWlnaHQoKSk7CisKKyAgICAg
ICAgc2Nyb2xsYWJsZUFyZWEuc2V0VmVydGljYWxTbmFwT2Zmc2V0cyh2ZXJ0aWNhbFNuYXBPZmZz
ZXRzKTsKKyAgICAgICAgc2Nyb2xsYWJsZUFyZWEuc2V0VmVydGljYWxTbmFwT2Zmc2V0UmFuZ2Vz
KHZlcnRpY2FsU25hcE9mZnNldFJhbmdlcyk7CiAgICAgfSBlbHNlCiAgICAgICAgIHNjcm9sbGFi
bGVBcmVhLmNsZWFyVmVydGljYWxTbmFwT2Zmc2V0cygpOwogfQogCit0ZW1wbGF0ZSA8dHlwZW5h
bWUgTGF5b3V0VHlwZT4KK0xheW91dFR5cGUgY2xvc2VzdFNuYXBPZmZzZXQoY29uc3QgVmVjdG9y
PExheW91dFR5cGU+JiBzbmFwT2Zmc2V0cywgY29uc3QgVmVjdG9yPFNjcm9sbE9mZnNldFJhbmdl
PExheW91dFR5cGU+PiYgc25hcE9mZnNldFJhbmdlcywgTGF5b3V0VHlwZSBzY3JvbGxEZXN0aW5h
dGlvbiwgZmxvYXQgdmVsb2NpdHksIHVuc2lnbmVkJiBhY3RpdmVTbmFwSW5kZXgpCit7CisgICAg
QVNTRVJUKHNuYXBPZmZzZXRzLnNpemUoKSk7CisgICAgYWN0aXZlU25hcEluZGV4ID0gMDsKKwor
ICAgIHVuc2lnbmVkIGxvd2VyU25hcE9mZnNldFJhbmdlSW5kZXg7CisgICAgdW5zaWduZWQgdXBw
ZXJTbmFwT2Zmc2V0UmFuZ2VJbmRleDsKKyAgICBpbmRpY2VzT2ZOZWFyZXN0U25hcE9mZnNldFJh
bmdlczxMYXlvdXRUeXBlPihzY3JvbGxEZXN0aW5hdGlvbiwgc25hcE9mZnNldFJhbmdlcywgbG93
ZXJTbmFwT2Zmc2V0UmFuZ2VJbmRleCwgdXBwZXJTbmFwT2Zmc2V0UmFuZ2VJbmRleCk7CisgICAg
aWYgKGxvd2VyU25hcE9mZnNldFJhbmdlSW5kZXggPT0gdXBwZXJTbmFwT2Zmc2V0UmFuZ2VJbmRl
eCAmJiB1cHBlclNuYXBPZmZzZXRSYW5nZUluZGV4ICE9IGludmFsaWRTbmFwT2Zmc2V0SW5kZXgp
IHsKKyAgICAgICAgYWN0aXZlU25hcEluZGV4ID0gaW52YWxpZFNuYXBPZmZzZXRJbmRleDsKKyAg
ICAgICAgcmV0dXJuIHNjcm9sbERlc3RpbmF0aW9uOworICAgIH0KKworICAgIGlmIChzY3JvbGxE
ZXN0aW5hdGlvbiA8PSBzbmFwT2Zmc2V0cy5maXJzdCgpKQorICAgICAgICByZXR1cm4gc25hcE9m
ZnNldHMuZmlyc3QoKTsKKworICAgIGFjdGl2ZVNuYXBJbmRleCA9IHNuYXBPZmZzZXRzLnNpemUo
KSAtIDE7CisgICAgaWYgKHNjcm9sbERlc3RpbmF0aW9uID49IHNuYXBPZmZzZXRzLmxhc3QoKSkK
KyAgICAgICAgcmV0dXJuIHNuYXBPZmZzZXRzLmxhc3QoKTsKKworICAgIHVuc2lnbmVkIGxvd2Vy
SW5kZXg7CisgICAgdW5zaWduZWQgdXBwZXJJbmRleDsKKyAgICBpbmRpY2VzT2ZOZWFyZXN0U25h
cE9mZnNldHM8TGF5b3V0VHlwZT4oc2Nyb2xsRGVzdGluYXRpb24sIHNuYXBPZmZzZXRzLCBsb3dl
ckluZGV4LCB1cHBlckluZGV4KTsKKyAgICBMYXlvdXRUeXBlIGxvd2VyU25hcFBvc2l0aW9uID0g
c25hcE9mZnNldHNbbG93ZXJJbmRleF07CisgICAgTGF5b3V0VHlwZSB1cHBlclNuYXBQb3NpdGlv
biA9IHNuYXBPZmZzZXRzW3VwcGVySW5kZXhdOworICAgIGlmICghc3RkOjphYnModmVsb2NpdHkp
KSB7CisgICAgICAgIGJvb2wgaXNDbG9zZXJUb0xvd2VyU25hcFBvc2l0aW9uID0gc2Nyb2xsRGVz
dGluYXRpb24gLSBsb3dlclNuYXBQb3NpdGlvbiA8PSB1cHBlclNuYXBQb3NpdGlvbiAtIHNjcm9s
bERlc3RpbmF0aW9uOworICAgICAgICBhY3RpdmVTbmFwSW5kZXggPSBpc0Nsb3NlclRvTG93ZXJT
bmFwUG9zaXRpb24gPyBsb3dlckluZGV4IDogdXBwZXJJbmRleDsKKyAgICAgICAgcmV0dXJuIGlz
Q2xvc2VyVG9Mb3dlclNuYXBQb3NpdGlvbiA/IGxvd2VyU25hcFBvc2l0aW9uIDogdXBwZXJTbmFw
UG9zaXRpb247CisgICAgfQorCisgICAgLy8gTm9uLXplcm8gdmVsb2NpdHkgaW5kaWNhdGVzIGEg
ZmxpY2sgZ2VzdHVyZS4gRXZlbiBpZiBhbm90aGVyIHNuYXAgcG9pbnQgaXMgY2xvc2VyLCB3ZSBz
aG91bGQgY2hvb3NlIHRoZSBvbmUgaW4gdGhlIGRpcmVjdGlvbiBvZiB0aGUgZmxpY2sgZ2VzdHVy
ZQorICAgIC8vIGFzIGxvbmcgYXMgYSBzY3JvbGwgc25hcCBvZmZzZXQgcmFuZ2UgZG9lcyBub3Qg
bGllIGJldHdlZW4gdGhlIHNjcm9sbCBkZXN0aW5hdGlvbiBhbmQgdGhlIHRhcmdldGVkIHNuYXAg
b2Zmc2V0LgorICAgIGlmICh2ZWxvY2l0eSA8IDApIHsKKyAgICAgICAgaWYgKGxvd2VyU25hcE9m
ZnNldFJhbmdlSW5kZXggIT0gaW52YWxpZFNuYXBPZmZzZXRJbmRleCAmJiBsb3dlclNuYXBQb3Np
dGlvbiA8IHNuYXBPZmZzZXRSYW5nZXNbbG93ZXJTbmFwT2Zmc2V0UmFuZ2VJbmRleF0uZW5kKSB7
CisgICAgICAgICAgICBhY3RpdmVTbmFwSW5kZXggPSB1cHBlckluZGV4OworICAgICAgICAgICAg
cmV0dXJuIHVwcGVyU25hcFBvc2l0aW9uOworICAgICAgICB9CisgICAgICAgIGFjdGl2ZVNuYXBJ
bmRleCA9IGxvd2VySW5kZXg7CisgICAgICAgIHJldHVybiBsb3dlclNuYXBQb3NpdGlvbjsKKyAg
ICB9CisKKyAgICBpZiAodXBwZXJTbmFwT2Zmc2V0UmFuZ2VJbmRleCAhPSBpbnZhbGlkU25hcE9m
ZnNldEluZGV4ICYmIHNuYXBPZmZzZXRSYW5nZXNbdXBwZXJTbmFwT2Zmc2V0UmFuZ2VJbmRleF0u
c3RhcnQgPCB1cHBlclNuYXBQb3NpdGlvbikgeworICAgICAgICBhY3RpdmVTbmFwSW5kZXggPSBs
b3dlckluZGV4OworICAgICAgICByZXR1cm4gbG93ZXJTbmFwUG9zaXRpb247CisgICAgfQorICAg
IGFjdGl2ZVNuYXBJbmRleCA9IHVwcGVySW5kZXg7CisgICAgcmV0dXJuIHVwcGVyU25hcFBvc2l0
aW9uOworfQorCitMYXlvdXRVbml0IGNsb3Nlc3RTbmFwT2Zmc2V0KGNvbnN0IFZlY3RvcjxMYXlv
dXRVbml0PiYgc25hcE9mZnNldHMsIGNvbnN0IFZlY3RvcjxTY3JvbGxPZmZzZXRSYW5nZTxMYXlv
dXRVbml0Pj4mIHNuYXBPZmZzZXRSYW5nZXMsIExheW91dFVuaXQgc2Nyb2xsRGVzdGluYXRpb24s
IGZsb2F0IHZlbG9jaXR5LCB1bnNpZ25lZCYgYWN0aXZlU25hcEluZGV4KQoreworICAgIHJldHVy
biBjbG9zZXN0U25hcE9mZnNldDxMYXlvdXRVbml0PihzbmFwT2Zmc2V0cywgc25hcE9mZnNldFJh
bmdlcywgc2Nyb2xsRGVzdGluYXRpb24sIHZlbG9jaXR5LCBhY3RpdmVTbmFwSW5kZXgpOworfQor
CitmbG9hdCBjbG9zZXN0U25hcE9mZnNldChjb25zdCBWZWN0b3I8ZmxvYXQ+JiBzbmFwT2Zmc2V0
cywgY29uc3QgVmVjdG9yPFNjcm9sbE9mZnNldFJhbmdlPGZsb2F0Pj4mIHNuYXBPZmZzZXRSYW5n
ZXMsIGZsb2F0IHNjcm9sbERlc3RpbmF0aW9uLCBmbG9hdCB2ZWxvY2l0eSwgdW5zaWduZWQmIGFj
dGl2ZVNuYXBJbmRleCkKK3sKKyAgICByZXR1cm4gY2xvc2VzdFNuYXBPZmZzZXQ8ZmxvYXQ+KHNu
YXBPZmZzZXRzLCBzbmFwT2Zmc2V0UmFuZ2VzLCBzY3JvbGxEZXN0aW5hdGlvbiwgdmVsb2NpdHks
IGFjdGl2ZVNuYXBJbmRleCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlm
IC8vIENTU19TQ1JPTExfU05BUApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3Jv
bGxpbmcvQXhpc1Njcm9sbFNuYXBPZmZzZXRzLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9s
bGluZy9BeGlzU2Nyb2xsU25hcE9mZnNldHMuaAppbmRleCBiMDFjYjdkMzg5YmNmZjU5YTk1OGRi
MTQ3NjFmYmI5NTY0N2UzMmQyLi42YjZiMmJjODU5ODg0OGI2NWNmZTQ5MjA0MzJmNjRmNTRmYTE4
ZWRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9BeGlzU2Nyb2xs
U25hcE9mZnNldHMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9BeGlzU2Ny
b2xsU25hcE9mZnNldHMuaApAQCAtMjcsNiArMjcsOCBAQAogCiAjaWYgRU5BQkxFKENTU19TQ1JP
TExfU05BUCkKIAorI2luY2x1ZGUgIkxheW91dFVuaXQuaCIKKyNpbmNsdWRlICJTY3JvbGxTbmFw
T2Zmc2V0c0luZm8uaCIKICNpbmNsdWRlICJTY3JvbGxUeXBlcy5oIgogI2luY2x1ZGUgPHd0Zi9W
ZWN0b3IuaD4KIApAQCAtMzksNDcgKzQxLDkgQEAgY2xhc3MgU2Nyb2xsYWJsZUFyZWE7CiAKIHZv
aWQgdXBkYXRlU25hcE9mZnNldHNGb3JTY3JvbGxhYmxlQXJlYShTY3JvbGxhYmxlQXJlYSYsIEhU
TUxFbGVtZW50JiBzY3JvbGxpbmdFbGVtZW50LCBjb25zdCBSZW5kZXJCb3gmIHNjcm9sbGluZ0Vs
ZW1lbnRCb3gsIGNvbnN0IFJlbmRlclN0eWxlJiBzY3JvbGxpbmdFbGVtZW50U3R5bGUpOwogCi0v
LyBjbG9zZXN0U25hcE9mZnNldCBpcyBhIHRlbXBsYXRlZCBmdW5jdGlvbiB0aGF0IHRha2VzIGlu
IGEgVmVjdG9yIHJlcHJlc2VudGluZyBzbmFwIG9mZnNldHMgYXMgTGF5b3V0VHlwZXMgKGUuZy4g
TGF5b3V0VW5pdCBvciBmbG9hdCkgYW5kCi0vLyBhcyB3ZWxsIGFzIGEgVmVsb2NpdHlUeXBlIGlu
ZGljYXRpbmcgdGhlIHZlbG9jaXR5IChlLmcuIGZsb2F0LCBDR0Zsb2F0LCBldGMuKSBUaGlzIGZ1
bmN0aW9uIGlzIHRlbXBsYXRlZCBiZWNhdXNlIHRoZSBVSSBwcm9jZXNzIHdpbGwgbm93Ci0vLyB1
c2UgcGl4ZWwgc25hcHBlZCBmbG9hdHMgdG8gcmVwcmVzZW50IHNuYXAgb2Zmc2V0cyByYXRoZXIg
dGhhbiBMYXlvdXRVbml0cy4KLXRlbXBsYXRlIDx0eXBlbmFtZSBMYXlvdXRUeXBlLCB0eXBlbmFt
ZSBWZWxvY2l0eVR5cGU+Ci1MYXlvdXRUeXBlIGNsb3Nlc3RTbmFwT2Zmc2V0KGNvbnN0IFZlY3Rv
cjxMYXlvdXRUeXBlPiYgc25hcE9mZnNldHMsIExheW91dFR5cGUgc2Nyb2xsRGVzdGluYXRpb24s
IFZlbG9jaXR5VHlwZSB2ZWxvY2l0eSwgdW5zaWduZWQmIGFjdGl2ZVNuYXBJbmRleCkKLXsKLSAg
ICBBU1NFUlQoc25hcE9mZnNldHMuc2l6ZSgpKTsKLSAgICBhY3RpdmVTbmFwSW5kZXggPSAwOwot
ICAgIGlmIChzY3JvbGxEZXN0aW5hdGlvbiA8PSBzbmFwT2Zmc2V0cy5maXJzdCgpKQotICAgICAg
ICByZXR1cm4gc25hcE9mZnNldHMuZmlyc3QoKTsKLQotICAgIGFjdGl2ZVNuYXBJbmRleCA9IHNu
YXBPZmZzZXRzLnNpemUoKSAtIDE7Ci0gICAgaWYgKHNjcm9sbERlc3RpbmF0aW9uID49IHNuYXBP
ZmZzZXRzLmxhc3QoKSkKLSAgICAgICAgcmV0dXJuIHNuYXBPZmZzZXRzLmxhc3QoKTsKLQotICAg
IHNpemVfdCBsb3dlckluZGV4ID0gMDsKLSAgICBzaXplX3QgdXBwZXJJbmRleCA9IHNuYXBPZmZz
ZXRzLnNpemUoKSAtIDE7Ci0gICAgd2hpbGUgKGxvd2VySW5kZXggPCB1cHBlckluZGV4IC0gMSkg
ewotICAgICAgICBzaXplX3QgbWlkZGxlSW5kZXggPSAobG93ZXJJbmRleCArIHVwcGVySW5kZXgp
IC8gMjsKLSAgICAgICAgaWYgKHNjcm9sbERlc3RpbmF0aW9uIDwgc25hcE9mZnNldHNbbWlkZGxl
SW5kZXhdKQotICAgICAgICAgICAgdXBwZXJJbmRleCA9IG1pZGRsZUluZGV4OwotICAgICAgICBl
bHNlIGlmIChzY3JvbGxEZXN0aW5hdGlvbiA+IHNuYXBPZmZzZXRzW21pZGRsZUluZGV4XSkKLSAg
ICAgICAgICAgIGxvd2VySW5kZXggPSBtaWRkbGVJbmRleDsKLSAgICAgICAgZWxzZSB7Ci0gICAg
ICAgICAgICB1cHBlckluZGV4ID0gbWlkZGxlSW5kZXg7Ci0gICAgICAgICAgICBsb3dlckluZGV4
ID0gbWlkZGxlSW5kZXg7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgIH0KLSAg
ICBMYXlvdXRUeXBlIGxvd2VyU25hcFBvc2l0aW9uID0gc25hcE9mZnNldHNbbG93ZXJJbmRleF07
Ci0gICAgTGF5b3V0VHlwZSB1cHBlclNuYXBQb3NpdGlvbiA9IHNuYXBPZmZzZXRzW3VwcGVySW5k
ZXhdOwotICAgIC8vIE5vbnplcm8gdmVsb2NpdHkgaW5kaWNhdGVzIGEgZmxpY2sgZ2VzdHVyZS4g
RXZlbiBpZiBhbm90aGVyIHNuYXAgcG9pbnQgaXMgY2xvc2VyLCBzbmFwIHRvIHRoZSBvbmUgaW4g
dGhlIGRpcmVjdGlvbiBvZiB0aGUgZmxpY2sgZ2VzdHVyZS4KLSAgICBpZiAodmVsb2NpdHkpIHsK
LSAgICAgICAgYWN0aXZlU25hcEluZGV4ID0gKHZlbG9jaXR5IDwgMCkgPyBsb3dlckluZGV4IDog
dXBwZXJJbmRleDsKLSAgICAgICAgcmV0dXJuIHZlbG9jaXR5IDwgMCA/IGxvd2VyU25hcFBvc2l0
aW9uIDogdXBwZXJTbmFwUG9zaXRpb247Ci0gICAgfQotCi0gICAgYm9vbCBpc0Nsb3NlclRvTG93
ZXJTbmFwUG9zaXRpb24gPSBzY3JvbGxEZXN0aW5hdGlvbiAtIGxvd2VyU25hcFBvc2l0aW9uIDw9
IHVwcGVyU25hcFBvc2l0aW9uIC0gc2Nyb2xsRGVzdGluYXRpb247Ci0gICAgYWN0aXZlU25hcElu
ZGV4ID0gaXNDbG9zZXJUb0xvd2VyU25hcFBvc2l0aW9uID8gbG93ZXJJbmRleCA6IHVwcGVySW5k
ZXg7Ci0gICAgcmV0dXJuIGlzQ2xvc2VyVG9Mb3dlclNuYXBQb3NpdGlvbiA/IGxvd2VyU25hcFBv
c2l0aW9uIDogdXBwZXJTbmFwUG9zaXRpb247Ci19Citjb25zdCB1bnNpZ25lZCBpbnZhbGlkU25h
cE9mZnNldEluZGV4ID0gVUlOVF9NQVg7CitXRUJDT1JFX0VYUE9SVCBMYXlvdXRVbml0IGNsb3Nl
c3RTbmFwT2Zmc2V0KGNvbnN0IFZlY3RvcjxMYXlvdXRVbml0PiYgc25hcE9mZnNldHMsIGNvbnN0
IFZlY3RvcjxTY3JvbGxPZmZzZXRSYW5nZTxMYXlvdXRVbml0Pj4mIHNuYXBPZmZzZXRSYW5nZXMs
IExheW91dFVuaXQgc2Nyb2xsRGVzdGluYXRpb24sIGZsb2F0IHZlbG9jaXR5LCB1bnNpZ25lZCYg
YWN0aXZlU25hcEluZGV4KTsKK1dFQkNPUkVfRVhQT1JUIGZsb2F0IGNsb3Nlc3RTbmFwT2Zmc2V0
KGNvbnN0IFZlY3RvcjxmbG9hdD4mIHNuYXBPZmZzZXRzLCBjb25zdCBWZWN0b3I8U2Nyb2xsT2Zm
c2V0UmFuZ2U8ZmxvYXQ+PiYgc25hcE9mZnNldFJhbmdlcywgZmxvYXQgc2Nyb2xsRGVzdGluYXRp
b24sIGZsb2F0IHZlbG9jaXR5LCB1bnNpZ25lZCYgYWN0aXZlU25hcEluZGV4KTsKIAogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9s
bGluZy9TY3JvbGxTbmFwT2Zmc2V0c0luZm8uaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xs
aW5nL1Njcm9sbFNuYXBPZmZzZXRzSW5mby5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjYzYmQ5NjM4YjYzYTFhMTFj
YTQwZjM2NzIxMjlmNzE0MTBjNmZmMmUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxTbmFwT2Zmc2V0c0luZm8uaApAQCAtMCwwICsxLDUxIEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisK
K25hbWVzcGFjZSBXZWJDb3JlIHsKKwordGVtcGxhdGUgPHR5cGVuYW1lIFQ+CitzdHJ1Y3QgU2Ny
b2xsT2Zmc2V0UmFuZ2UgeworICAgIFQgc3RhcnQ7CisgICAgVCBlbmQ7Cit9OworCit0ZW1wbGF0
ZSA8dHlwZW5hbWUgVD4KK3N0cnVjdCBTY3JvbGxTbmFwT2Zmc2V0c0luZm8geworICAgIFZlY3Rv
cjxUPiBob3Jpem9udGFsU25hcE9mZnNldHM7CisgICAgVmVjdG9yPFQ+IHZlcnRpY2FsU25hcE9m
ZnNldHM7CisKKyAgICAvLyBTbmFwIG9mZnNldCByYW5nZXMgcmVwcmVzZW50IG5vbi1lbXB0eSBy
YW5nZXMgb2Ygc2Nyb2xsIG9mZnNldHMgaW4gd2hpY2ggc2Nyb2xsaW5nIG1heSByZXN0IGFmdGVy
IHNjcm9sbCBzbmFwcGluZy4KKyAgICAvLyBUaGVzZSBhcmUgdXNlZCBpbiB0d28gY2FzZXM6ICgx
KSBmb3IgcHJveGltaXR5IHNjcm9sbCBzbmFwcGluZywgd2hlcmUgcG9ydGlvbnMgb2YgYXJlYXMg
YmV0d2VlbiBhZGphY2VudCBzbmFwIG9mZnNldHMKKyAgICAvLyBtYXkgZW1pdCBzbmFwIG9mZnNl
dCByYW5nZXMsIGFuZCAoMikgaW4gdGhlIGNhc2Ugd2hlcmUgdGhlIHNuYXAgYXJlYSBpcyBsYXJn
ZXIgdGhhbiB0aGUgc25hcCBwb3J0LCBpbiB3aGljaCBjYXNlIGFyZWFzCisgICAgLy8gd2hlcmUg
dGhlIHNuYXAgcG9ydCBmaXRzIHdpdGhpbiB0aGUgc25hcCBhcmVhIGFyZSBjb25zaWRlcmVkIHRv
IGJlIHZhbGlkIHNuYXAgcG9zaXRpb25zLgorICAgIFZlY3RvcjxTY3JvbGxPZmZzZXRSYW5nZTxU
Pj4gaG9yaXpvbnRhbFNuYXBPZmZzZXRSYW5nZXM7CisgICAgVmVjdG9yPFNjcm9sbE9mZnNldFJh
bmdlPFQ+PiB2ZXJ0aWNhbFNuYXBPZmZzZXRSYW5nZXM7Cit9OworCit9OyAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xs
aW5nQ29vcmRpbmF0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGlu
Z0Nvb3JkaW5hdG9yLmgKaW5kZXggN2E2YWYyMWYwNjhlOGE4MTA5NDUwOWFhZGFmNGRlYzNjYmM0
MWJlYi4uZWI2ZGFiZjk3OGRjYzRlZDJlMzAyYTI1MmI0NTBiMTY4YmY0YmI5MiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nQ29vcmRpbmF0b3IuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdDb29yZGluYXRvci5o
CkBAIC0yOSw2ICsyOSw3IEBACiAjaW5jbHVkZSAiSW50UmVjdC5oIgogI2luY2x1ZGUgIkxheW91
dFJlY3QuaCIKICNpbmNsdWRlICJQbGF0Zm9ybVdoZWVsRXZlbnQuaCIKKyNpbmNsdWRlICJTY3Jv
bGxTbmFwT2Zmc2V0c0luZm8uaCIKICNpbmNsdWRlICJTY3JvbGxUeXBlcy5oIgogI2luY2x1ZGUg
PHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL1RocmVhZFNhZmVSZWZDb3VudGVkLmg+CkBA
IC0xNzAsNiArMTcxLDggQEAgcHVibGljOgogI2lmIEVOQUJMRShDU1NfU0NST0xMX1NOQVApCiAg
ICAgICAgIFZlY3RvcjxMYXlvdXRVbml0PiBob3Jpem9udGFsU25hcE9mZnNldHM7CiAgICAgICAg
IFZlY3RvcjxMYXlvdXRVbml0PiB2ZXJ0aWNhbFNuYXBPZmZzZXRzOworICAgICAgICBWZWN0b3I8
U2Nyb2xsT2Zmc2V0UmFuZ2U8TGF5b3V0VW5pdD4+IGhvcml6b250YWxTbmFwT2Zmc2V0UmFuZ2Vz
OworICAgICAgICBWZWN0b3I8U2Nyb2xsT2Zmc2V0UmFuZ2U8TGF5b3V0VW5pdD4+IHZlcnRpY2Fs
U25hcE9mZnNldFJhbmdlczsKICAgICAgICAgdW5zaWduZWQgY3VycmVudEhvcml6b250YWxTbmFw
UG9pbnRJbmRleDsKICAgICAgICAgdW5zaWduZWQgY3VycmVudFZlcnRpY2FsU25hcFBvaW50SW5k
ZXg7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Nj
cm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9s
bGluZy9TY3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3IuY3BwCmluZGV4IDhjNjlhZjJmNmRiZDIx
Yjg3ZjY4ODRhZDNjZmE5ZWVmZGMyN2NiYzkuLjFmYTU2NzRhMmJiMWZlNjM1YzcyYWQxZTViN2E1
ZDc0OGFiZGRiNDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Nj
cm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9z
Y3JvbGxpbmcvU2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yLmNwcApAQCAtMzIsMzQgKzMyLDYy
IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0YXRpYyBjb25zdCBTZWNvbmRzIHNjcm9sbFNu
YXBBbmltYXRpb25EdXJhdGlvbiA9IDFfczsKK3N0YXRpYyBpbmxpbmUgZmxvYXQgcHJvamVjdGVk
SW5lcnRpYWxTY3JvbGxEaXN0YW5jZShmbG9hdCBpbml0aWFsV2hlZWxEZWx0YSkKK3sKKyAgICAv
LyBPbiBtYWNPUyAxMC4xMCBhbmQgZWFybGllciwgd2UgZG9uJ3QgaGF2ZSBhIHBsYXRmb3JtIHNj
cm9sbGluZyBtb21lbnR1bSBjYWxjdWxhdG9yLCBzbyB3ZSBpbnN0ZWFkIGFwcHJveGltYXRlIHRo
ZSBzY3JvbGwgZGVzdGluYXRpb24KKyAgICAvLyBieSBtdWx0aXBseWluZyB0aGUgaW5pdGlhbCB3
aGVlbCBkZWx0YSBieSBhIGNvbnN0YW50IGZhY3Rvci4gQnkgcnVubmluZyBhIGZldyBleHBlcmlt
ZW50cyAoaS5lLiBsb2dnaW5nIHNjcm9sbCBkZXN0aW5hdGlvbiBhbmQgaW5pdGlhbAorICAgIC8v
IHdoZWVsIGRlbHRhIGZvciBtYW55IHNjcm9sbCBnZXN0dXJlcykgd2UgZGV0ZXJtaW5lZCB0aGF0
IHRoaXMgaXMgYSByZWFzb25hYmxlIHdheSB0byBhcHByb3hpbWF0ZSB3aGVyZSBzY3JvbGxpbmcg
d2lsbCB0YWtlIHVzIHdpdGhvdXQKKyAgICAvLyB1c2luZyBfTlNTY3JvbGxpbmdNb21lbnR1bUNh
bGN1bGF0b3IuCisgICAgY29uc3Qgc3RhdGljIGRvdWJsZSBpbmVydGlhbFNjcm9sbFByZWRpY3Rp
b25GYWN0b3IgPSAxNi43OworICAgIHJldHVybiBpbmVydGlhbFNjcm9sbFByZWRpY3Rpb25GYWN0
b3IgKiBpbml0aWFsV2hlZWxEZWx0YTsKK30KIAotU2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9y
OjpTY3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3IoY29uc3QgRmxvYXRTaXplJiB2aWV3cG9ydFNp
emUsIGNvbnN0IEZsb2F0U2l6ZSYgY29udGVudFNpemUsIGNvbnN0IEZsb2F0UG9pbnQmIGluaXRp
YWxPZmZzZXQsIGNvbnN0IEZsb2F0UG9pbnQmIHRhcmdldE9mZnNldCwgY29uc3QgRmxvYXRTaXpl
JiBpbml0aWFsRGVsdGEsIGNvbnN0IEZsb2F0U2l6ZSYgaW5pdGlhbFZlbG9jaXR5KQorU2Nyb2xs
aW5nTW9tZW50dW1DYWxjdWxhdG9yOjpTY3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3IoY29uc3Qg
RmxvYXRTaXplJiB2aWV3cG9ydFNpemUsIGNvbnN0IEZsb2F0U2l6ZSYgY29udGVudFNpemUsIGNv
bnN0IEZsb2F0UG9pbnQmIGluaXRpYWxPZmZzZXQsIGNvbnN0IEZsb2F0U2l6ZSYgaW5pdGlhbERl
bHRhLCBjb25zdCBGbG9hdFNpemUmIGluaXRpYWxWZWxvY2l0eSkKICAgICA6IG1faW5pdGlhbERl
bHRhKGluaXRpYWxEZWx0YSkKICAgICAsIG1faW5pdGlhbFZlbG9jaXR5KGluaXRpYWxWZWxvY2l0
eSkKICAgICAsIG1faW5pdGlhbFNjcm9sbE9mZnNldChpbml0aWFsT2Zmc2V0LngoKSwgaW5pdGlh
bE9mZnNldC55KCkpCi0gICAgLCBtX3RhcmdldFNjcm9sbE9mZnNldCh0YXJnZXRPZmZzZXQueCgp
LCB0YXJnZXRPZmZzZXQueSgpKQogICAgICwgbV92aWV3cG9ydFNpemUodmlld3BvcnRTaXplKQog
ICAgICwgbV9jb250ZW50U2l6ZShjb250ZW50U2l6ZSkKIHsKIH0KIAordm9pZCBTY3JvbGxpbmdN
b21lbnR1bUNhbGN1bGF0b3I6OnNldFJldGFyZ2V0ZWRTY3JvbGxPZmZzZXQoY29uc3QgRmxvYXRT
aXplJiB0YXJnZXQpCit7CisgICAgaWYgKG1fcmV0YXJnZXRlZFNjcm9sbE9mZnNldCAmJiBtX3Jl
dGFyZ2V0ZWRTY3JvbGxPZmZzZXQgPT0gdGFyZ2V0KQorICAgICAgICByZXR1cm47CisKKyAgICBt
X3JldGFyZ2V0ZWRTY3JvbGxPZmZzZXQgPSB0YXJnZXQ7CisgICAgcmV0YXJnZXRlZFNjcm9sbE9m
ZnNldERpZENoYW5nZSgpOworfQorCitGbG9hdFNpemUgU2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxh
dG9yOjpwcmVkaWN0ZWREZXN0aW5hdGlvbk9mZnNldCgpCit7CisgICAgZmxvYXQgaW5pdGlhbE9m
ZnNldFggPSBjbGFtcFRvPGZsb2F0PihtX2luaXRpYWxTY3JvbGxPZmZzZXQud2lkdGgoKSArIHBy
b2plY3RlZEluZXJ0aWFsU2Nyb2xsRGlzdGFuY2UobV9pbml0aWFsRGVsdGEud2lkdGgoKSksIDAs
IG1fY29udGVudFNpemUud2lkdGgoKSAtIG1fdmlld3BvcnRTaXplLndpZHRoKCkpOworICAgIGZs
b2F0IGluaXRpYWxPZmZzZXRZID0gY2xhbXBUbzxmbG9hdD4obV9pbml0aWFsU2Nyb2xsT2Zmc2V0
LmhlaWdodCgpICsgcHJvamVjdGVkSW5lcnRpYWxTY3JvbGxEaXN0YW5jZShtX2luaXRpYWxEZWx0
YS5oZWlnaHQoKSksIDAsIG1fY29udGVudFNpemUuaGVpZ2h0KCkgLSBtX3ZpZXdwb3J0U2l6ZS5o
ZWlnaHQoKSk7CisgICAgcmV0dXJuIHsgaW5pdGlhbE9mZnNldFgsIGluaXRpYWxPZmZzZXRZIH07
Cit9CisKICNpZiAhSEFWRShOU1NDUk9MTElOR19GSUxURVJTKQogCi1zdGQ6OnVuaXF1ZV9wdHI8
U2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yPiBTY3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3I6
OmNyZWF0ZShjb25zdCBGbG9hdFNpemUmIHZpZXdwb3J0U2l6ZSwgY29uc3QgRmxvYXRTaXplJiBj
b250ZW50U2l6ZSwgY29uc3QgRmxvYXRQb2ludCYgaW5pdGlhbE9mZnNldCwgY29uc3QgRmxvYXRQ
b2ludCYgdGFyZ2V0T2Zmc2V0LCBjb25zdCBGbG9hdFNpemUmIGluaXRpYWxEZWx0YSwgY29uc3Qg
RmxvYXRTaXplJiBpbml0aWFsVmVsb2NpdHkpCitzdGQ6OnVuaXF1ZV9wdHI8U2Nyb2xsaW5nTW9t
ZW50dW1DYWxjdWxhdG9yPiBTY3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3I6OmNyZWF0ZShjb25z
dCBGbG9hdFNpemUmIHZpZXdwb3J0U2l6ZSwgY29uc3QgRmxvYXRTaXplJiBjb250ZW50U2l6ZSwg
Y29uc3QgRmxvYXRQb2ludCYgaW5pdGlhbE9mZnNldCwgY29uc3QgRmxvYXRTaXplJiBpbml0aWFs
RGVsdGEsIGNvbnN0IEZsb2F0U2l6ZSYgaW5pdGlhbFZlbG9jaXR5KQoreworICAgIHJldHVybiBz
dGQ6Om1ha2VfdW5pcXVlPEJhc2ljU2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yPih2aWV3cG9y
dFNpemUsIGNvbnRlbnRTaXplLCBpbml0aWFsT2Zmc2V0LCBpbml0aWFsRGVsdGEsIGluaXRpYWxW
ZWxvY2l0eSk7Cit9CisKK3ZvaWQgU2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yOjpzZXRQbGF0
Zm9ybU1vbWVudHVtU2Nyb2xsaW5nUHJlZGljdGlvbkVuYWJsZWQoYm9vbCkKIHsKLSAgICByZXR1
cm4gc3RkOjptYWtlX3VuaXF1ZTxCYXNpY1Njcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvcj4odmll
d3BvcnRTaXplLCBjb250ZW50U2l6ZSwgaW5pdGlhbE9mZnNldCwgdGFyZ2V0T2Zmc2V0LCBpbml0
aWFsRGVsdGEsIGluaXRpYWxWZWxvY2l0eSk7CiB9CiAKICNlbmRpZgogCi1CYXNpY1Njcm9sbGlu
Z01vbWVudHVtQ2FsY3VsYXRvcjo6QmFzaWNTY3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3IoY29u
c3QgRmxvYXRTaXplJiB2aWV3cG9ydFNpemUsIGNvbnN0IEZsb2F0U2l6ZSYgY29udGVudFNpemUs
IGNvbnN0IEZsb2F0UG9pbnQmIGluaXRpYWxPZmZzZXQsIGNvbnN0IEZsb2F0UG9pbnQmIHRhcmdl
dE9mZnNldCwgY29uc3QgRmxvYXRTaXplJiBpbml0aWFsRGVsdGEsIGNvbnN0IEZsb2F0U2l6ZSYg
aW5pdGlhbFZlbG9jaXR5KQotICAgIDogU2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yKHZpZXdw
b3J0U2l6ZSwgY29udGVudFNpemUsIGluaXRpYWxPZmZzZXQsIHRhcmdldE9mZnNldCwgaW5pdGlh
bERlbHRhLCBpbml0aWFsVmVsb2NpdHkpCitCYXNpY1Njcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRv
cjo6QmFzaWNTY3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3IoY29uc3QgRmxvYXRTaXplJiB2aWV3
cG9ydFNpemUsIGNvbnN0IEZsb2F0U2l6ZSYgY29udGVudFNpemUsIGNvbnN0IEZsb2F0UG9pbnQm
IGluaXRpYWxPZmZzZXQsIGNvbnN0IEZsb2F0U2l6ZSYgaW5pdGlhbERlbHRhLCBjb25zdCBGbG9h
dFNpemUmIGluaXRpYWxWZWxvY2l0eSkKKyAgICA6IFNjcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRv
cih2aWV3cG9ydFNpemUsIGNvbnRlbnRTaXplLCBpbml0aWFsT2Zmc2V0LCBpbml0aWFsRGVsdGEs
IGluaXRpYWxWZWxvY2l0eSkKIHsKIH0KIAotRmxvYXRTaXplIEJhc2ljU2Nyb2xsaW5nTW9tZW50
dW1DYWxjdWxhdG9yOjpsaW5lYXJseUludGVycG9sYXRlZE9mZnNldEF0UHJvZ3Jlc3MoZmxvYXQg
cHJvZ3Jlc3MpIGNvbnN0CitGbG9hdFNpemUgQmFzaWNTY3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0
b3I6OmxpbmVhcmx5SW50ZXJwb2xhdGVkT2Zmc2V0QXRQcm9ncmVzcyhmbG9hdCBwcm9ncmVzcykK
IHsKLSAgICByZXR1cm4gbV9pbml0aWFsU2Nyb2xsT2Zmc2V0ICsgcHJvZ3Jlc3MgKiAobV90YXJn
ZXRTY3JvbGxPZmZzZXQgLSBtX2luaXRpYWxTY3JvbGxPZmZzZXQpOworICAgIHJldHVybiBtX2lu
aXRpYWxTY3JvbGxPZmZzZXQgKyBwcm9ncmVzcyAqIChyZXRhcmdldGVkU2Nyb2xsT2Zmc2V0KCkg
LSBtX2luaXRpYWxTY3JvbGxPZmZzZXQpOwogfQogCiBGbG9hdFNpemUgQmFzaWNTY3JvbGxpbmdN
b21lbnR1bUNhbGN1bGF0b3I6OmN1YmljYWxseUludGVycG9sYXRlZE9mZnNldEF0UHJvZ3Jlc3Mo
ZmxvYXQgcHJvZ3Jlc3MpIGNvbnN0CkBAIC0xMjAsNyArMTQ4LDcgQEAgdm9pZCBCYXNpY1Njcm9s
bGluZ01vbWVudHVtQ2FsY3VsYXRvcjo6aW5pdGlhbGl6ZUludGVycG9sYXRpb25Db2VmZmljaWVu
dHNJZk5lY2UKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIEZsb2F0U2l6ZSBzdGFydFRv
RW5kVmVjdG9yID0gbV90YXJnZXRTY3JvbGxPZmZzZXQgLSBtX2luaXRpYWxTY3JvbGxPZmZzZXQ7
CisgICAgRmxvYXRTaXplIHN0YXJ0VG9FbmRWZWN0b3IgPSByZXRhcmdldGVkU2Nyb2xsT2Zmc2V0
KCkgLSBtX2luaXRpYWxTY3JvbGxPZmZzZXQ7CiAgICAgZmxvYXQgc3RhcnRUb0VuZERpc3RhbmNl
ID0gc3RhcnRUb0VuZFZlY3Rvci5kaWFnb25hbExlbmd0aCgpOwogICAgIGlmICghc3RhcnRUb0Vu
ZERpc3RhbmNlKSB7CiAgICAgICAgIC8vIFRoZSBzdGFydCBhbmQgZW5kIHBvc2l0aW9ucyBhcmUg
dGhlIHNhbWUsIHNvIHdlIHNob3VsZG4ndCB0cnkgdG8gaW50ZXJwb2xhdGUgYSBwYXRoLgpAQCAt
MTQwLDcgKzE2OCw3IEBAIHZvaWQgQmFzaWNTY3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3I6Omlu
aXRpYWxpemVJbnRlcnBvbGF0aW9uQ29lZmZpY2llbnRzSWZOZWNlCiAgICAgbV9zbmFwQW5pbWF0
aW9uQ3VydmVDb2VmZmljaWVudHNbMF0gPSBtX2luaXRpYWxTY3JvbGxPZmZzZXQ7CiAgICAgbV9z
bmFwQW5pbWF0aW9uQ3VydmVDb2VmZmljaWVudHNbMV0gPSAzICogKGNvbnRyb2xWZWN0b3IxIC0g
bV9pbml0aWFsU2Nyb2xsT2Zmc2V0KTsKICAgICBtX3NuYXBBbmltYXRpb25DdXJ2ZUNvZWZmaWNp
ZW50c1syXSA9IDMgKiAobV9pbml0aWFsU2Nyb2xsT2Zmc2V0IC0gMiAqIGNvbnRyb2xWZWN0b3Ix
ICsgY29udHJvbFZlY3RvcjIpOwotICAgIG1fc25hcEFuaW1hdGlvbkN1cnZlQ29lZmZpY2llbnRz
WzNdID0gMyAqIChjb250cm9sVmVjdG9yMSAtIGNvbnRyb2xWZWN0b3IyKSAtIG1faW5pdGlhbFNj
cm9sbE9mZnNldCArIG1fdGFyZ2V0U2Nyb2xsT2Zmc2V0OworICAgIG1fc25hcEFuaW1hdGlvbkN1
cnZlQ29lZmZpY2llbnRzWzNdID0gMyAqIChjb250cm9sVmVjdG9yMSAtIGNvbnRyb2xWZWN0b3Iy
KSAtIG1faW5pdGlhbFNjcm9sbE9mZnNldCArIHJldGFyZ2V0ZWRTY3JvbGxPZmZzZXQoKTsKICAg
ICBtX2ZvcmNlTGluZWFyQW5pbWF0aW9uQ3VydmUgPSBmYWxzZTsKIH0KIApAQCAtMTc5LDEwICsy
MDcsMTAgQEAgdm9pZCBCYXNpY1Njcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvcjo6aW5pdGlhbGl6
ZVNuYXBQcm9ncmVzc0N1cnZlKCkKICAgICBzdGF0aWMgY29uc3QgZmxvYXQgbWluU2Nyb2xsU25h
cEluaXRpYWxQcm9ncmVzcyA9IDAuMTsKICAgICBzdGF0aWMgY29uc3QgZmxvYXQgbWF4U2Nyb2xs
U25hcEluaXRpYWxQcm9ncmVzcyA9IDAuNTsKIAotICAgIEZsb2F0U2l6ZSBhbGlnbm1lbnRWZWN0
b3IgPSBtX2luaXRpYWxEZWx0YSAqIChtX3RhcmdldFNjcm9sbE9mZnNldCAtIG1faW5pdGlhbFNj
cm9sbE9mZnNldCk7CisgICAgRmxvYXRTaXplIGFsaWdubWVudFZlY3RvciA9IG1faW5pdGlhbERl
bHRhICogKHJldGFyZ2V0ZWRTY3JvbGxPZmZzZXQoKSAtIG1faW5pdGlhbFNjcm9sbE9mZnNldCk7
CiAgICAgZmxvYXQgaW5pdGlhbFByb2dyZXNzOwogICAgIGlmIChhbGlnbm1lbnRWZWN0b3Iud2lk
dGgoKSArIGFsaWdubWVudFZlY3Rvci5oZWlnaHQoKSA+IDApCi0gICAgICAgIGluaXRpYWxQcm9n
cmVzcyA9IGNsYW1wVG8obV9pbml0aWFsRGVsdGEuZGlhZ29uYWxMZW5ndGgoKSAvIChtX3Rhcmdl
dFNjcm9sbE9mZnNldCAtIG1faW5pdGlhbFNjcm9sbE9mZnNldCkuZGlhZ29uYWxMZW5ndGgoKSwg
bWluU2Nyb2xsU25hcEluaXRpYWxQcm9ncmVzcywgbWF4U2Nyb2xsU25hcEluaXRpYWxQcm9ncmVz
cyk7CisgICAgICAgIGluaXRpYWxQcm9ncmVzcyA9IGNsYW1wVG8obV9pbml0aWFsRGVsdGEuZGlh
Z29uYWxMZW5ndGgoKSAvIChyZXRhcmdldGVkU2Nyb2xsT2Zmc2V0KCkgLSBtX2luaXRpYWxTY3Jv
bGxPZmZzZXQpLmRpYWdvbmFsTGVuZ3RoKCksIG1pblNjcm9sbFNuYXBJbml0aWFsUHJvZ3Jlc3Ms
IG1heFNjcm9sbFNuYXBJbml0aWFsUHJvZ3Jlc3MpOwogICAgIGVsc2UKICAgICAgICAgaW5pdGlh
bFByb2dyZXNzID0gbWluU2Nyb2xsU25hcEluaXRpYWxQcm9ncmVzczsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9y
LmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdNb21lbnR1bUNhbGN1
bGF0b3IuaAppbmRleCBjZWQwZjJhMWY3NThkMThhZTk2ZWRmYjdmNjBmZTUwMmIwMTZlZGJmLi5h
ODJhZmFhNjYxZjc3MWRkOGQzMjM3MDBmOGNhOGJkYjhkNWUyYzM4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3IuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdNb21lbnR1bUNhbGN1
bGF0b3IuaApAQCAtMzAsNiArMzAsNyBAQAogI2luY2x1ZGUgIkF4aXNTY3JvbGxTbmFwT2Zmc2V0
cy5oIgogI2luY2x1ZGUgIlBsYXRmb3JtV2hlZWxFdmVudC5oIgogI2luY2x1ZGUgIlNjcm9sbFR5
cGVzLmgiCisjaW5jbHVkZSA8d3RmL09wdGlvbmFsLmg+CiAjaW5jbHVkZSA8d3RmL1NlY29uZHMu
aD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMzksMjUgKzQwLDMzIEBAIGNsYXNzIEZsb2F0
U2l6ZTsKIAogY2xhc3MgU2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yIHsKIHB1YmxpYzoKLSAg
ICBTY3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3IoY29uc3QgRmxvYXRTaXplJiB2aWV3cG9ydFNp
emUsIGNvbnN0IEZsb2F0U2l6ZSYgY29udGVudFNpemUsIGNvbnN0IEZsb2F0UG9pbnQmIGluaXRp
YWxPZmZzZXQsIGNvbnN0IEZsb2F0UG9pbnQmIHRhcmdldE9mZnNldCwgY29uc3QgRmxvYXRTaXpl
JiBpbml0aWFsRGVsdGEsIGNvbnN0IEZsb2F0U2l6ZSYgaW5pdGlhbFZlbG9jaXR5KTsKLSAgICBz
dGF0aWMgc3RkOjp1bmlxdWVfcHRyPFNjcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvcj4gY3JlYXRl
KGNvbnN0IEZsb2F0U2l6ZSYgdmlld3BvcnRTaXplLCBjb25zdCBGbG9hdFNpemUmIGNvbnRlbnRT
aXplLCBjb25zdCBGbG9hdFBvaW50JiBpbml0aWFsT2Zmc2V0LCBjb25zdCBGbG9hdFBvaW50JiB0
YXJnZXRPZmZzZXQsIGNvbnN0IEZsb2F0U2l6ZSYgaW5pdGlhbERlbHRhLCBjb25zdCBGbG9hdFNp
emUmIGluaXRpYWxWZWxvY2l0eSk7CisgICAgU2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yKGNv
bnN0IEZsb2F0U2l6ZSYgdmlld3BvcnRTaXplLCBjb25zdCBGbG9hdFNpemUmIGNvbnRlbnRTaXpl
LCBjb25zdCBGbG9hdFBvaW50JiBpbml0aWFsT2Zmc2V0LCBjb25zdCBGbG9hdFNpemUmIGluaXRp
YWxEZWx0YSwgY29uc3QgRmxvYXRTaXplJiBpbml0aWFsVmVsb2NpdHkpOworICAgIHN0YXRpYyBz
dGQ6OnVuaXF1ZV9wdHI8U2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yPiBjcmVhdGUoY29uc3Qg
RmxvYXRTaXplJiB2aWV3cG9ydFNpemUsIGNvbnN0IEZsb2F0U2l6ZSYgY29udGVudFNpemUsIGNv
bnN0IEZsb2F0UG9pbnQmIGluaXRpYWxPZmZzZXQsIGNvbnN0IEZsb2F0U2l6ZSYgaW5pdGlhbERl
bHRhLCBjb25zdCBGbG9hdFNpemUmIGluaXRpYWxWZWxvY2l0eSk7CisgICAgV0VCQ09SRV9FWFBP
UlQgc3RhdGljIHZvaWQgc2V0UGxhdGZvcm1Nb21lbnR1bVNjcm9sbGluZ1ByZWRpY3Rpb25FbmFi
bGVkKGJvb2wpOwogICAgIHZpcnR1YWwgflNjcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvcigpIHsg
fQogCiAgICAgdmlydHVhbCBGbG9hdFBvaW50IHNjcm9sbE9mZnNldEFmdGVyRWxhcHNlZFRpbWUo
U2Vjb25kcykgPSAwOwogICAgIHZpcnR1YWwgU2Vjb25kcyBhbmltYXRpb25EdXJhdGlvbigpID0g
MDsKKyAgICB2aXJ0dWFsIEZsb2F0U2l6ZSBwcmVkaWN0ZWREZXN0aW5hdGlvbk9mZnNldCgpOwor
ICAgIHZvaWQgc2V0UmV0YXJnZXRlZFNjcm9sbE9mZnNldChjb25zdCBGbG9hdFNpemUmKTsKIAog
cHJvdGVjdGVkOgorICAgIGNvbnN0IEZsb2F0U2l6ZSYgcmV0YXJnZXRlZFNjcm9sbE9mZnNldCgp
IGNvbnN0IHsgcmV0dXJuIG1fcmV0YXJnZXRlZFNjcm9sbE9mZnNldC52YWx1ZSgpOyB9CisgICAg
dmlydHVhbCB2b2lkIHJldGFyZ2V0ZWRTY3JvbGxPZmZzZXREaWRDaGFuZ2UoKSB7IH0KKwogICAg
IEZsb2F0U2l6ZSBtX2luaXRpYWxEZWx0YTsKICAgICBGbG9hdFNpemUgbV9pbml0aWFsVmVsb2Np
dHk7CiAgICAgRmxvYXRTaXplIG1faW5pdGlhbFNjcm9sbE9mZnNldDsKLSAgICBGbG9hdFNpemUg
bV90YXJnZXRTY3JvbGxPZmZzZXQ7CiAgICAgRmxvYXRTaXplIG1fdmlld3BvcnRTaXplOwogICAg
IEZsb2F0U2l6ZSBtX2NvbnRlbnRTaXplOworCitwcml2YXRlOgorICAgIHN0ZDo6b3B0aW9uYWw8
RmxvYXRTaXplPiBtX3JldGFyZ2V0ZWRTY3JvbGxPZmZzZXQ7CiB9OwogCiBjbGFzcyBCYXNpY1Nj
cm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvciBmaW5hbCA6IHB1YmxpYyBTY3JvbGxpbmdNb21lbnR1
bUNhbGN1bGF0b3IgewogcHVibGljOgotICAgIEJhc2ljU2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxh
dG9yKGNvbnN0IEZsb2F0U2l6ZSYgdmlld3BvcnRTaXplLCBjb25zdCBGbG9hdFNpemUmIGNvbnRl
bnRTaXplLCBjb25zdCBGbG9hdFBvaW50JiBpbml0aWFsT2Zmc2V0LCBjb25zdCBGbG9hdFBvaW50
JiB0YXJnZXRPZmZzZXQsIGNvbnN0IEZsb2F0U2l6ZSYgaW5pdGlhbERlbHRhLCBjb25zdCBGbG9h
dFNpemUmIGluaXRpYWxWZWxvY2l0eSk7CisgICAgQmFzaWNTY3JvbGxpbmdNb21lbnR1bUNhbGN1
bGF0b3IoY29uc3QgRmxvYXRTaXplJiB2aWV3cG9ydFNpemUsIGNvbnN0IEZsb2F0U2l6ZSYgY29u
dGVudFNpemUsIGNvbnN0IEZsb2F0UG9pbnQmIGluaXRpYWxPZmZzZXQsIGNvbnN0IEZsb2F0U2l6
ZSYgaW5pdGlhbERlbHRhLCBjb25zdCBGbG9hdFNpemUmIGluaXRpYWxWZWxvY2l0eSk7CiAKIHBy
aXZhdGU6CiAgICAgRmxvYXRQb2ludCBzY3JvbGxPZmZzZXRBZnRlckVsYXBzZWRUaW1lKFNlY29u
ZHMpIGZpbmFsOwpAQCAtNjUsNyArNzQsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgaW5pdGlhbGl6
ZUludGVycG9sYXRpb25Db2VmZmljaWVudHNJZk5lY2Vzc2FyeSgpOwogICAgIHZvaWQgaW5pdGlh
bGl6ZVNuYXBQcm9ncmVzc0N1cnZlKCk7CiAgICAgZmxvYXQgYW5pbWF0aW9uUHJvZ3Jlc3NBZnRl
ckVsYXBzZWRUaW1lKFNlY29uZHMpIGNvbnN0OwotICAgIEZsb2F0U2l6ZSBsaW5lYXJseUludGVy
cG9sYXRlZE9mZnNldEF0UHJvZ3Jlc3MoZmxvYXQgcHJvZ3Jlc3MpIGNvbnN0OworICAgIEZsb2F0
U2l6ZSBsaW5lYXJseUludGVycG9sYXRlZE9mZnNldEF0UHJvZ3Jlc3MoZmxvYXQgcHJvZ3Jlc3Mp
OwogICAgIEZsb2F0U2l6ZSBjdWJpY2FsbHlJbnRlcnBvbGF0ZWRPZmZzZXRBdFByb2dyZXNzKGZs
b2F0IHByb2dyZXNzKSBjb25zdDsKIAogICAgIGZsb2F0IG1fc25hcEFuaW1hdGlvbkN1cnZlTWFn
bml0dWRlIHsgMCB9OwpAQCAtNzMsNiArODIsNyBAQCBwcml2YXRlOgogICAgIEZsb2F0U2l6ZSBt
X3NuYXBBbmltYXRpb25DdXJ2ZUNvZWZmaWNpZW50c1s0XSB7IH07CiAgICAgYm9vbCBtX2ZvcmNl
TGluZWFyQW5pbWF0aW9uQ3VydmUgeyBmYWxzZSB9OwogICAgIGJvb2wgbV9tb21lbnR1bUNhbGN1
bGF0b3JSZXF1aXJlc0luaXRpYWxpemF0aW9uIHsgdHJ1ZSB9OworICAgIHN0ZDo6b3B0aW9uYWw8
RmxvYXRTaXplPiBtX3ByZWRpY3RlZERlc3RpbmF0aW9uT2Zmc2V0OwogfTsKIAogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcv
U2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Ny
b2xsaW5nL1Njcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZS5jcHAKaW5kZXggYTVjZmExMmNjZWM2
ODJlM2I5MmI2ZDlmZjgxYTMwOWEwMTcyZWU1NS4uYjNkZTI2MzI0NGNhOGMyMTgyMDAyYmQ2MmQ0
MWY1YzM4ZDhhODgzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcv
U2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L3Njcm9sbGluZy9TY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGUuY3BwCkBAIC00Nyw4ICs0Nyw3
IEBAIFNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZTo6U2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdO
b2RlKGNvbnN0IFNjcm9sbGluZ1N0YXRlU2NyCiAgICAgLCBtX3JlcXVlc3RlZFNjcm9sbFBvc2l0
aW9uKHN0YXRlTm9kZS5yZXF1ZXN0ZWRTY3JvbGxQb3NpdGlvbigpKQogICAgICwgbV9zY3JvbGxP
cmlnaW4oc3RhdGVOb2RlLnNjcm9sbE9yaWdpbigpKQogI2lmIEVOQUJMRShDU1NfU0NST0xMX1NO
QVApCi0gICAgLCBtX2hvcml6b250YWxTbmFwT2Zmc2V0cyhzdGF0ZU5vZGUuaG9yaXpvbnRhbFNu
YXBPZmZzZXRzKCkpCi0gICAgLCBtX3ZlcnRpY2FsU25hcE9mZnNldHMoc3RhdGVOb2RlLnZlcnRp
Y2FsU25hcE9mZnNldHMoKSkKKyAgICAsIG1fc25hcE9mZnNldHNJbmZvKHN0YXRlTm9kZS5tX3Nu
YXBPZmZzZXRzSW5mbykKICNlbmRpZgogICAgICwgbV9zY3JvbGxhYmxlQXJlYVBhcmFtZXRlcnMo
c3RhdGVOb2RlLnNjcm9sbGFibGVBcmVhUGFyYW1ldGVycygpKQogICAgICwgbV9yZXF1ZXN0ZWRT
Y3JvbGxQb3NpdGlvblJlcHJlc2VudHNQcm9ncmFtbWF0aWNTY3JvbGwoc3RhdGVOb2RlLnJlcXVl
c3RlZFNjcm9sbFBvc2l0aW9uUmVwcmVzZW50c1Byb2dyYW1tYXRpY1Njcm9sbCgpKQpAQCAtMTA4
LDIyICsxMDcsNDAgQEAgdm9pZCBTY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGU6OnNldFNjcm9s
bE9yaWdpbihjb25zdCBJbnRQb2ludCYgc2Nyb2xsT3JpZ2luKQogI2lmIEVOQUJMRShDU1NfU0NS
T0xMX1NOQVApCiB2b2lkIFNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZTo6c2V0SG9yaXpvbnRh
bFNuYXBPZmZzZXRzKGNvbnN0IFZlY3RvcjxmbG9hdD4mIHNuYXBPZmZzZXRzKQogewotICAgIGlm
IChtX2hvcml6b250YWxTbmFwT2Zmc2V0cyA9PSBzbmFwT2Zmc2V0cykKKyAgICBpZiAobV9zbmFw
T2Zmc2V0c0luZm8uaG9yaXpvbnRhbFNuYXBPZmZzZXRzID09IHNuYXBPZmZzZXRzKQogICAgICAg
ICByZXR1cm47CiAKLSAgICBtX2hvcml6b250YWxTbmFwT2Zmc2V0cyA9IHNuYXBPZmZzZXRzOwor
ICAgIG1fc25hcE9mZnNldHNJbmZvLmhvcml6b250YWxTbmFwT2Zmc2V0cyA9IHNuYXBPZmZzZXRz
OwogICAgIHNldFByb3BlcnR5Q2hhbmdlZChIb3Jpem9udGFsU25hcE9mZnNldHMpOwogfQogCiB2
b2lkIFNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZTo6c2V0VmVydGljYWxTbmFwT2Zmc2V0cyhj
b25zdCBWZWN0b3I8ZmxvYXQ+JiBzbmFwT2Zmc2V0cykKIHsKLSAgICBpZiAobV92ZXJ0aWNhbFNu
YXBPZmZzZXRzID09IHNuYXBPZmZzZXRzKQorICAgIGlmIChtX3NuYXBPZmZzZXRzSW5mby52ZXJ0
aWNhbFNuYXBPZmZzZXRzID09IHNuYXBPZmZzZXRzKQogICAgICAgICByZXR1cm47CiAKLSAgICBt
X3ZlcnRpY2FsU25hcE9mZnNldHMgPSBzbmFwT2Zmc2V0czsKKyAgICBtX3NuYXBPZmZzZXRzSW5m
by52ZXJ0aWNhbFNuYXBPZmZzZXRzID0gc25hcE9mZnNldHM7CiAgICAgc2V0UHJvcGVydHlDaGFu
Z2VkKFZlcnRpY2FsU25hcE9mZnNldHMpOwogfQogCit2b2lkIFNjcm9sbGluZ1N0YXRlU2Nyb2xs
aW5nTm9kZTo6c2V0SG9yaXpvbnRhbFNuYXBPZmZzZXRSYW5nZXMoY29uc3QgVmVjdG9yPFNjcm9s
bE9mZnNldFJhbmdlPGZsb2F0Pj4mIHNjcm9sbE9mZnNldFJhbmdlcykKK3sKKyAgICBpZiAobV9z
bmFwT2Zmc2V0c0luZm8uaG9yaXpvbnRhbFNuYXBPZmZzZXRSYW5nZXMgPT0gc2Nyb2xsT2Zmc2V0
UmFuZ2VzKQorICAgICAgICByZXR1cm47CisKKyAgICBtX3NuYXBPZmZzZXRzSW5mby5ob3Jpem9u
dGFsU25hcE9mZnNldFJhbmdlcyA9IHNjcm9sbE9mZnNldFJhbmdlczsKKyAgICBzZXRQcm9wZXJ0
eUNoYW5nZWQoSG9yaXpvbnRhbFNuYXBPZmZzZXRSYW5nZXMpOworfQorCit2b2lkIFNjcm9sbGlu
Z1N0YXRlU2Nyb2xsaW5nTm9kZTo6c2V0VmVydGljYWxTbmFwT2Zmc2V0UmFuZ2VzKGNvbnN0IFZl
Y3RvcjxTY3JvbGxPZmZzZXRSYW5nZTxmbG9hdD4+JiBzY3JvbGxPZmZzZXRSYW5nZXMpCit7Cisg
ICAgaWYgKG1fc25hcE9mZnNldHNJbmZvLnZlcnRpY2FsU25hcE9mZnNldFJhbmdlcyA9PSBzY3Jv
bGxPZmZzZXRSYW5nZXMpCisgICAgICAgIHJldHVybjsKKworICAgIG1fc25hcE9mZnNldHNJbmZv
LnZlcnRpY2FsU25hcE9mZnNldFJhbmdlcyA9IHNjcm9sbE9mZnNldFJhbmdlczsKKyAgICBzZXRQ
cm9wZXJ0eUNoYW5nZWQoVmVydGljYWxTbmFwT2Zmc2V0UmFuZ2VzKTsKK30KKwogdm9pZCBTY3Jv
bGxpbmdTdGF0ZVNjcm9sbGluZ05vZGU6OnNldEN1cnJlbnRIb3Jpem9udGFsU25hcFBvaW50SW5k
ZXgodW5zaWduZWQgaW5kZXgpCiB7CiAgICAgaWYgKG1fY3VycmVudEhvcml6b250YWxTbmFwUG9p
bnRJbmRleCA9PSBpbmRleCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xs
aW5nL1Njcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZS5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9z
Y3JvbGxpbmcvU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlLmgKaW5kZXggZTgyMzExNjE3NDQx
OWM0ZTkxOWZmZDNlM2ZiM2ZkOTNmZTE1NDUyYy4uNjI4YzM0ZjdmOGY2NTVjZDdmZWQwMTk0NjUw
MDRjMjhjNDIyYjQ3YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcv
U2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9z
Y3JvbGxpbmcvU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlLmgKQEAgLTI3LDYgKzI3LDcgQEAK
IAogI2lmIEVOQUJMRShBU1lOQ19TQ1JPTExJTkcpIHx8IFVTRShDT09SRElOQVRFRF9HUkFQSElD
UykKIAorI2luY2x1ZGUgIlNjcm9sbFNuYXBPZmZzZXRzSW5mby5oIgogI2luY2x1ZGUgIlNjcm9s
bFR5cGVzLmgiCiAjaW5jbHVkZSAiU2Nyb2xsaW5nQ29vcmRpbmF0b3IuaCIKICNpbmNsdWRlICJT
Y3JvbGxpbmdTdGF0ZU5vZGUuaCIKQEAgLTQ5LDYgKzUwLDggQEAgcHVibGljOgogI2lmIEVOQUJM
RShDU1NfU0NST0xMX1NOQVApCiAgICAgICAgIEhvcml6b250YWxTbmFwT2Zmc2V0cywKICAgICAg
ICAgVmVydGljYWxTbmFwT2Zmc2V0cywKKyAgICAgICAgSG9yaXpvbnRhbFNuYXBPZmZzZXRSYW5n
ZXMsCisgICAgICAgIFZlcnRpY2FsU25hcE9mZnNldFJhbmdlcywKICAgICAgICAgQ3VycmVudEhv
cml6b250YWxTbmFwT2Zmc2V0SW5kZXgsCiAgICAgICAgIEN1cnJlbnRWZXJ0aWNhbFNuYXBPZmZz
ZXRJbmRleCwKICNlbmRpZgpAQCAtNzEsMTIgKzc0LDE4IEBAIHB1YmxpYzoKICAgICBXRUJDT1JF
X0VYUE9SVCB2b2lkIHNldFNjcm9sbE9yaWdpbihjb25zdCBJbnRQb2ludCYpOwogCiAjaWYgRU5B
QkxFKENTU19TQ1JPTExfU05BUCkKLSAgICBjb25zdCBWZWN0b3I8ZmxvYXQ+JiBob3Jpem9udGFs
U25hcE9mZnNldHMoKSBjb25zdCB7IHJldHVybiBtX2hvcml6b250YWxTbmFwT2Zmc2V0czsgfQor
ICAgIGNvbnN0IFZlY3RvcjxmbG9hdD4mIGhvcml6b250YWxTbmFwT2Zmc2V0cygpIGNvbnN0IHsg
cmV0dXJuIG1fc25hcE9mZnNldHNJbmZvLmhvcml6b250YWxTbmFwT2Zmc2V0czsgfQogICAgIFdF
QkNPUkVfRVhQT1JUIHZvaWQgc2V0SG9yaXpvbnRhbFNuYXBPZmZzZXRzKGNvbnN0IFZlY3Rvcjxm
bG9hdD4mKTsKIAotICAgIGNvbnN0IFZlY3RvcjxmbG9hdD4mIHZlcnRpY2FsU25hcE9mZnNldHMo
KSBjb25zdCB7IHJldHVybiBtX3ZlcnRpY2FsU25hcE9mZnNldHM7IH0KKyAgICBjb25zdCBWZWN0
b3I8ZmxvYXQ+JiB2ZXJ0aWNhbFNuYXBPZmZzZXRzKCkgY29uc3QgeyByZXR1cm4gbV9zbmFwT2Zm
c2V0c0luZm8udmVydGljYWxTbmFwT2Zmc2V0czsgfQogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQg
c2V0VmVydGljYWxTbmFwT2Zmc2V0cyhjb25zdCBWZWN0b3I8ZmxvYXQ+Jik7CiAKKyAgICBjb25z
dCBWZWN0b3I8U2Nyb2xsT2Zmc2V0UmFuZ2U8ZmxvYXQ+PiYgaG9yaXpvbnRhbFNuYXBPZmZzZXRS
YW5nZXMoKSBjb25zdCB7IHJldHVybiBtX3NuYXBPZmZzZXRzSW5mby5ob3Jpem9udGFsU25hcE9m
ZnNldFJhbmdlczsgfQorICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0SG9yaXpvbnRhbFNuYXBP
ZmZzZXRSYW5nZXMoY29uc3QgVmVjdG9yPFNjcm9sbE9mZnNldFJhbmdlPGZsb2F0Pj4mKTsKKwor
ICAgIGNvbnN0IFZlY3RvcjxTY3JvbGxPZmZzZXRSYW5nZTxmbG9hdD4+JiB2ZXJ0aWNhbFNuYXBP
ZmZzZXRSYW5nZXMoKSBjb25zdCB7IHJldHVybiBtX3NuYXBPZmZzZXRzSW5mby52ZXJ0aWNhbFNu
YXBPZmZzZXRSYW5nZXM7IH0KKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldFZlcnRpY2FsU25h
cE9mZnNldFJhbmdlcyhjb25zdCBWZWN0b3I8U2Nyb2xsT2Zmc2V0UmFuZ2U8ZmxvYXQ+PiYpOwor
CiAgICAgdW5zaWduZWQgY3VycmVudEhvcml6b250YWxTbmFwUG9pbnRJbmRleCgpIGNvbnN0IHsg
cmV0dXJuIG1fY3VycmVudEhvcml6b250YWxTbmFwUG9pbnRJbmRleDsgfQogICAgIFdFQkNPUkVf
RVhQT1JUIHZvaWQgc2V0Q3VycmVudEhvcml6b250YWxTbmFwUG9pbnRJbmRleCh1bnNpZ25lZCk7
CiAKQEAgLTEwOCw4ICsxMTcsNyBAQCBwcml2YXRlOgogICAgIEZsb2F0UG9pbnQgbV9yZXF1ZXN0
ZWRTY3JvbGxQb3NpdGlvbjsKICAgICBJbnRQb2ludCBtX3Njcm9sbE9yaWdpbjsKICNpZiBFTkFC
TEUoQ1NTX1NDUk9MTF9TTkFQKQotICAgIFZlY3RvcjxmbG9hdD4gbV9ob3Jpem9udGFsU25hcE9m
ZnNldHM7Ci0gICAgVmVjdG9yPGZsb2F0PiBtX3ZlcnRpY2FsU25hcE9mZnNldHM7CisgICAgU2Ny
b2xsU25hcE9mZnNldHNJbmZvPGZsb2F0PiBtX3NuYXBPZmZzZXRzSW5mbzsKICAgICB1bnNpZ25l
ZCBtX2N1cnJlbnRIb3Jpem9udGFsU25hcFBvaW50SW5kZXggeyAwIH07CiAgICAgdW5zaWduZWQg
bV9jdXJyZW50VmVydGljYWxTbmFwUG9pbnRJbmRleCB7IDAgfTsKICNlbmRpZgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05v
ZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZVNjcm9s
bGluZ05vZGUuY3BwCmluZGV4IDg0MDI5ZmJkZjg1ZjY1ODFkMGZjZDE1MzhkOWM3YmZlZWNjYjg4
ZDguLjE5NzU0ZjVjMjUzMmE4M2UxMTJhZDI5MTYxYWM5NGQwZTVkZTI1MGQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2Rl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlU2Ny
b2xsaW5nTm9kZS5jcHAKQEAgLTcwLDEwICs3MCwxNiBAQCB2b2lkIFNjcm9sbGluZ1RyZWVTY3Jv
bGxpbmdOb2RlOjpjb21taXRTdGF0ZUJlZm9yZUNoaWxkcmVuKGNvbnN0IFNjcm9sbGluZ1N0YXRl
TgogCiAjaWYgRU5BQkxFKENTU19TQ1JPTExfU05BUCkKICAgICBpZiAoc3RhdGUuaGFzQ2hhbmdl
ZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZTo6SG9yaXpvbnRhbFNuYXBPZmZz
ZXRzKSkKLSAgICAgICAgbV9ob3Jpem9udGFsU25hcE9mZnNldHMgPSBzdGF0ZS5ob3Jpem9udGFs
U25hcE9mZnNldHMoKTsKKyAgICAgICAgbV9zbmFwT2Zmc2V0c0luZm8uaG9yaXpvbnRhbFNuYXBP
ZmZzZXRzID0gc3RhdGUuaG9yaXpvbnRhbFNuYXBPZmZzZXRzKCk7CiAKICAgICBpZiAoc3RhdGUu
aGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZTo6VmVydGljYWxT
bmFwT2Zmc2V0cykpCi0gICAgICAgIG1fdmVydGljYWxTbmFwT2Zmc2V0cyA9IHN0YXRlLnZlcnRp
Y2FsU25hcE9mZnNldHMoKTsKKyAgICAgICAgbV9zbmFwT2Zmc2V0c0luZm8udmVydGljYWxTbmFw
T2Zmc2V0cyA9IHN0YXRlLnZlcnRpY2FsU25hcE9mZnNldHMoKTsKKworICAgIGlmIChzdGF0ZS5o
YXNDaGFuZ2VkUHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlOjpIb3Jpem9udGFs
U25hcE9mZnNldFJhbmdlcykpCisgICAgICAgIG1fc25hcE9mZnNldHNJbmZvLmhvcml6b250YWxT
bmFwT2Zmc2V0UmFuZ2VzID0gc3RhdGUuaG9yaXpvbnRhbFNuYXBPZmZzZXRSYW5nZXMoKTsKKwor
ICAgIGlmIChzdGF0ZS5oYXNDaGFuZ2VkUHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdO
b2RlOjpWZXJ0aWNhbFNuYXBPZmZzZXRSYW5nZXMpKQorICAgICAgICBtX3NuYXBPZmZzZXRzSW5m
by52ZXJ0aWNhbFNuYXBPZmZzZXRSYW5nZXMgPSBzdGF0ZS52ZXJ0aWNhbFNuYXBPZmZzZXRSYW5n
ZXMoKTsKIAogICAgIGlmIChzdGF0ZS5oYXNDaGFuZ2VkUHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVT
Y3JvbGxpbmdOb2RlOjpDdXJyZW50SG9yaXpvbnRhbFNuYXBPZmZzZXRJbmRleCkpCiAgICAgICAg
IG1fY3VycmVudEhvcml6b250YWxTbmFwUG9pbnRJbmRleCA9IHN0YXRlLmN1cnJlbnRIb3Jpem9u
dGFsU25hcFBvaW50SW5kZXgoKTsKQEAgLTEzOSwxNCArMTQ1LDE0IEBAIHZvaWQgU2Nyb2xsaW5n
VHJlZVNjcm9sbGluZ05vZGU6OmR1bXBQcm9wZXJ0aWVzKFRleHRTdHJlYW0mIHRzLCBTY3JvbGxp
bmdTdGF0ZVRyCiAgICAgICAgIHRzLmR1bXBQcm9wZXJ0eSgic2Nyb2xsYWJsZSBhcmVhIHNpemUi
LCBtX3Njcm9sbE9yaWdpbik7CiAKICNpZiBFTkFCTEUoQ1NTX1NDUk9MTF9TTkFQKQotICAgIGlm
IChtX2hvcml6b250YWxTbmFwT2Zmc2V0cy5zaXplKCkpCi0gICAgICAgIHRzLmR1bXBQcm9wZXJ0
eSgiaG9yaXpvbnRhbCBzbmFwIG9mZnNldHMiLCBtX2hvcml6b250YWxTbmFwT2Zmc2V0cyk7Cisg
ICAgaWYgKG1fc25hcE9mZnNldHNJbmZvLmhvcml6b250YWxTbmFwT2Zmc2V0cy5zaXplKCkpCisg
ICAgICAgIHRzLmR1bXBQcm9wZXJ0eSgiaG9yaXpvbnRhbCBzbmFwIG9mZnNldHMiLCBtX3NuYXBP
ZmZzZXRzSW5mby5ob3Jpem9udGFsU25hcE9mZnNldHMpOwogCi0gICAgaWYgKG1fdmVydGljYWxT
bmFwT2Zmc2V0cy5zaXplKCkpCi0gICAgICAgIHRzLmR1bXBQcm9wZXJ0eSgiaG9yaXpvbnRhbCBz
bmFwIG9mZnNldHMiLCBtX3ZlcnRpY2FsU25hcE9mZnNldHMpOworICAgIGlmIChtX3NuYXBPZmZz
ZXRzSW5mby52ZXJ0aWNhbFNuYXBPZmZzZXRzLnNpemUoKSkKKyAgICAgICAgdHMuZHVtcFByb3Bl
cnR5KCJob3Jpem9udGFsIHNuYXAgb2Zmc2V0cyIsIG1fc25hcE9mZnNldHNJbmZvLnZlcnRpY2Fs
U25hcE9mZnNldHMpOwogCiAgICAgaWYgKG1fY3VycmVudEhvcml6b250YWxTbmFwUG9pbnRJbmRl
eCkKLSAgICAgICAgdHMuZHVtcFByb3BlcnR5KCJjdXJyZW50IGhvcml6b250YWwgc25hcCBwb2lu
dCBpbmRleCIsIG1fdmVydGljYWxTbmFwT2Zmc2V0cyk7CisgICAgICAgIHRzLmR1bXBQcm9wZXJ0
eSgiY3VycmVudCBob3Jpem9udGFsIHNuYXAgcG9pbnQgaW5kZXgiLCBtX2N1cnJlbnRIb3Jpem9u
dGFsU25hcFBvaW50SW5kZXgpOwogCiAgICAgaWYgKG1fY3VycmVudFZlcnRpY2FsU25hcFBvaW50
SW5kZXgpCiAgICAgICAgIHRzLmR1bXBQcm9wZXJ0eSgiY3VycmVudCB2ZXJ0aWNhbCBzbmFwIHBv
aW50IGluZGV4IiwgbV9jdXJyZW50VmVydGljYWxTbmFwUG9pbnRJbmRleCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9k
ZS5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZVNjcm9sbGlu
Z05vZGUuaAppbmRleCBmYTgzMGIyMWVkNTFhOTI0MGM2MGZjMjYxMTNkOTNhMTAyNjE2ZGRjLi4z
NTk0YjEwODZlY2JhMzc4YjUxNmJkMjhkNTdhYmM0YjIzMGRkNzI5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdO
b2RlLmgKQEAgLTI4LDYgKzI4LDcgQEAKICNpZiBFTkFCTEUoQVNZTkNfU0NST0xMSU5HKQogCiAj
aW5jbHVkZSAiSW50UmVjdC5oIgorI2luY2x1ZGUgIlNjcm9sbFNuYXBPZmZzZXRzSW5mby5oIgog
I2luY2x1ZGUgIlNjcm9sbFR5cGVzLmgiCiAjaW5jbHVkZSAiU2Nyb2xsaW5nQ29vcmRpbmF0b3Iu
aCIKICNpbmNsdWRlICJTY3JvbGxpbmdUcmVlTm9kZS5oIgpAQCAtNTYsOCArNTcsMTAgQEAgcHVi
bGljOgogICAgIHZpcnR1YWwgRmxvYXRQb2ludCBzY3JvbGxQb3NpdGlvbigpIGNvbnN0ID0gMDsK
IAogI2lmIEVOQUJMRShDU1NfU0NST0xMX1NOQVApCi0gICAgY29uc3QgVmVjdG9yPGZsb2F0PiYg
aG9yaXpvbnRhbFNuYXBPZmZzZXRzKCkgY29uc3QgeyByZXR1cm4gbV9ob3Jpem9udGFsU25hcE9m
ZnNldHM7IH0KLSAgICBjb25zdCBWZWN0b3I8ZmxvYXQ+JiB2ZXJ0aWNhbFNuYXBPZmZzZXRzKCkg
Y29uc3QgeyByZXR1cm4gbV92ZXJ0aWNhbFNuYXBPZmZzZXRzOyB9CisgICAgY29uc3QgVmVjdG9y
PGZsb2F0PiYgaG9yaXpvbnRhbFNuYXBPZmZzZXRzKCkgY29uc3QgeyByZXR1cm4gbV9zbmFwT2Zm
c2V0c0luZm8uaG9yaXpvbnRhbFNuYXBPZmZzZXRzOyB9CisgICAgY29uc3QgVmVjdG9yPGZsb2F0
PiYgdmVydGljYWxTbmFwT2Zmc2V0cygpIGNvbnN0IHsgcmV0dXJuIG1fc25hcE9mZnNldHNJbmZv
LnZlcnRpY2FsU25hcE9mZnNldHM7IH0KKyAgICBjb25zdCBWZWN0b3I8U2Nyb2xsT2Zmc2V0UmFu
Z2U8ZmxvYXQ+PiYgaG9yaXpvbnRhbFNuYXBPZmZzZXRSYW5nZXMoKSBjb25zdCB7IHJldHVybiBt
X3NuYXBPZmZzZXRzSW5mby5ob3Jpem9udGFsU25hcE9mZnNldFJhbmdlczsgfQorICAgIGNvbnN0
IFZlY3RvcjxTY3JvbGxPZmZzZXRSYW5nZTxmbG9hdD4+JiB2ZXJ0aWNhbFNuYXBPZmZzZXRSYW5n
ZXMoKSBjb25zdCB7IHJldHVybiBtX3NuYXBPZmZzZXRzSW5mby52ZXJ0aWNhbFNuYXBPZmZzZXRS
YW5nZXM7IH0KICAgICB1bnNpZ25lZCBjdXJyZW50SG9yaXpvbnRhbFNuYXBQb2ludEluZGV4KCkg
Y29uc3QgeyByZXR1cm4gbV9jdXJyZW50SG9yaXpvbnRhbFNuYXBQb2ludEluZGV4OyB9CiAgICAg
dW5zaWduZWQgY3VycmVudFZlcnRpY2FsU25hcFBvaW50SW5kZXgoKSBjb25zdCB7IHJldHVybiBt
X2N1cnJlbnRWZXJ0aWNhbFNuYXBQb2ludEluZGV4OyB9CiAgICAgdm9pZCBzZXRDdXJyZW50SG9y
aXpvbnRhbFNuYXBQb2ludEluZGV4KHVuc2lnbmVkIGluZGV4KSB7IG1fY3VycmVudEhvcml6b250
YWxTbmFwUG9pbnRJbmRleCA9IGluZGV4OyB9CkBAIC0xMDIsOCArMTA1LDcgQEAgcHJpdmF0ZToK
ICAgICBGbG9hdFBvaW50IG1fbGFzdENvbW1pdHRlZFNjcm9sbFBvc2l0aW9uOwogICAgIEludFBv
aW50IG1fc2Nyb2xsT3JpZ2luOwogI2lmIEVOQUJMRShDU1NfU0NST0xMX1NOQVApCi0gICAgVmVj
dG9yPGZsb2F0PiBtX2hvcml6b250YWxTbmFwT2Zmc2V0czsKLSAgICBWZWN0b3I8ZmxvYXQ+IG1f
dmVydGljYWxTbmFwT2Zmc2V0czsKKyAgICBTY3JvbGxTbmFwT2Zmc2V0c0luZm88ZmxvYXQ+IG1f
c25hcE9mZnNldHNJbmZvOwogICAgIHVuc2lnbmVkIG1fY3VycmVudEhvcml6b250YWxTbmFwUG9p
bnRJbmRleCB7IDAgfTsKICAgICB1bnNpZ25lZCBtX2N1cnJlbnRWZXJ0aWNhbFNuYXBQb2ludElu
ZGV4IHsgMCB9OwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9s
bGluZy9tYWMvU2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yTWFjLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yTWFjLmgKaW5k
ZXggNDU2YTExM2JhODAzOGJmZjM1ODEwNGY3Njk1ZGI3Y2FlYjU0NTdkMS4uYzkwNTAzYzllM2Iw
OThjYTQ0ZjU5MGZjYmUwY2ExNGU1NDI3MDM4OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvck1hYy5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL21hYy9TY3JvbGxpbmdNb21lbnR1bUNhbGN1
bGF0b3JNYWMuaApAQCAtMzYsMTUgKzM2LDE5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xh
c3MgU2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yTWFjIGZpbmFsIDogcHVibGljIFNjcm9sbGlu
Z01vbWVudHVtQ2FsY3VsYXRvciB7CiBwdWJsaWM6Ci0gICAgU2Nyb2xsaW5nTW9tZW50dW1DYWxj
dWxhdG9yTWFjKGNvbnN0IEZsb2F0U2l6ZSYgdmlld3BvcnRTaXplLCBjb25zdCBGbG9hdFNpemUm
IGNvbnRlbnRTaXplLCBjb25zdCBGbG9hdFBvaW50JiBpbml0aWFsT2Zmc2V0LCBjb25zdCBGbG9h
dFBvaW50JiB0YXJnZXRPZmZzZXQsIGNvbnN0IEZsb2F0U2l6ZSYgaW5pdGlhbERlbHRhLCBjb25z
dCBGbG9hdFNpemUmIGluaXRpYWxWZWxvY2l0eSk7CisgICAgU2Nyb2xsaW5nTW9tZW50dW1DYWxj
dWxhdG9yTWFjKGNvbnN0IEZsb2F0U2l6ZSYgdmlld3BvcnRTaXplLCBjb25zdCBGbG9hdFNpemUm
IGNvbnRlbnRTaXplLCBjb25zdCBGbG9hdFBvaW50JiBpbml0aWFsT2Zmc2V0LCBjb25zdCBGbG9h
dFNpemUmIGluaXRpYWxEZWx0YSwgY29uc3QgRmxvYXRTaXplJiBpbml0aWFsVmVsb2NpdHkpOwog
CiBwcml2YXRlOgogICAgIEZsb2F0UG9pbnQgc2Nyb2xsT2Zmc2V0QWZ0ZXJFbGFwc2VkVGltZShT
ZWNvbmRzKSBmaW5hbDsKICAgICBTZWNvbmRzIGFuaW1hdGlvbkR1cmF0aW9uKCkgZmluYWw7Cisg
ICAgRmxvYXRTaXplIHByZWRpY3RlZERlc3RpbmF0aW9uT2Zmc2V0KCkgZmluYWw7CisgICAgdm9p
ZCByZXRhcmdldGVkU2Nyb2xsT2Zmc2V0RGlkQ2hhbmdlKCkgZmluYWw7CiAgICAgX05TU2Nyb2xs
aW5nTW9tZW50dW1DYWxjdWxhdG9yICplbnN1cmVQbGF0Zm9ybU1vbWVudHVtQ2FsY3VsYXRvcigp
OworICAgIGJvb2wgcmVxdWlyZXNNb21lbnR1bVNjcm9sbGluZygpOwogCiAgICAgUmV0YWluUHRy
PF9OU1Njcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvcj4gbV9wbGF0Zm9ybU1vbWVudHVtQ2FsY3Vs
YXRvcjsKLSAgICBib29sIG1fcmVxdWlyZXNNb21lbnR1bVNjcm9sbGluZyB7IHRydWUgfTsKKyAg
ICBzdGQ6Om9wdGlvbmFsPGJvb2w+IG1fcmVxdWlyZXNNb21lbnR1bVNjcm9sbGluZzsKKyAgICBG
bG9hdFBvaW50IG1faW5pdGlhbERlc3RpbmF0aW9uT3JpZ2luOwogfTsKIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbWFj
L1Njcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvck1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
c2Nyb2xsaW5nL21hYy9TY3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3JNYWMubW0KaW5kZXggZjcy
NDU1ZWFjNzk2NzZlOWM4ZTQzMDAyMjhjMDM5NGI1ZDYxYjBlMS4uMWY4NTFkZGQ3N2VlMjYzZDI1
MzkxZGQ1Yzg1OTllYWM3ZjQ5N2I3ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9z
Y3JvbGxpbmcvbWFjL1Njcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvck1hYy5tbQorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9y
TWFjLm1tCkBAIC0zMiwzMyArMzIsNjQgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1zdGQ6
OnVuaXF1ZV9wdHI8U2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yPiBTY3JvbGxpbmdNb21lbnR1
bUNhbGN1bGF0b3I6OmNyZWF0ZShjb25zdCBGbG9hdFNpemUmIHZpZXdwb3J0U2l6ZSwgY29uc3Qg
RmxvYXRTaXplJiBjb250ZW50U2l6ZSwgY29uc3QgRmxvYXRQb2ludCYgaW5pdGlhbE9mZnNldCwg
Y29uc3QgRmxvYXRQb2ludCYgdGFyZ2V0T2Zmc2V0LCBjb25zdCBGbG9hdFNpemUmIGluaXRpYWxE
ZWx0YSwgY29uc3QgRmxvYXRTaXplJiBpbml0aWFsVmVsb2NpdHkpCitzdGF0aWMgYm9vbCBnRW5h
YmxlUGxhdGZvcm1Nb21lbnR1bVNjcm9sbGluZ1ByZWRpY3Rpb24gPSB0cnVlOworCitzdGQ6OnVu
aXF1ZV9wdHI8U2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yPiBTY3JvbGxpbmdNb21lbnR1bUNh
bGN1bGF0b3I6OmNyZWF0ZShjb25zdCBGbG9hdFNpemUmIHZpZXdwb3J0U2l6ZSwgY29uc3QgRmxv
YXRTaXplJiBjb250ZW50U2l6ZSwgY29uc3QgRmxvYXRQb2ludCYgaW5pdGlhbE9mZnNldCwgY29u
c3QgRmxvYXRTaXplJiBpbml0aWFsRGVsdGEsIGNvbnN0IEZsb2F0U2l6ZSYgaW5pdGlhbFZlbG9j
aXR5KQogewotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFNjcm9sbGluZ01vbWVudHVtQ2Fs
Y3VsYXRvck1hYz4odmlld3BvcnRTaXplLCBjb250ZW50U2l6ZSwgaW5pdGlhbE9mZnNldCwgdGFy
Z2V0T2Zmc2V0LCBpbml0aWFsRGVsdGEsIGluaXRpYWxWZWxvY2l0eSk7CisgICAgcmV0dXJuIHN0
ZDo6bWFrZV91bmlxdWU8U2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yTWFjPih2aWV3cG9ydFNp
emUsIGNvbnRlbnRTaXplLCBpbml0aWFsT2Zmc2V0LCBpbml0aWFsRGVsdGEsIGluaXRpYWxWZWxv
Y2l0eSk7CiB9CiAKLVNjcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvck1hYzo6U2Nyb2xsaW5nTW9t
ZW50dW1DYWxjdWxhdG9yTWFjKGNvbnN0IEZsb2F0U2l6ZSYgdmlld3BvcnRTaXplLCBjb25zdCBG
bG9hdFNpemUmIGNvbnRlbnRTaXplLCBjb25zdCBGbG9hdFBvaW50JiBpbml0aWFsT2Zmc2V0LCBj
b25zdCBGbG9hdFBvaW50JiB0YXJnZXRPZmZzZXQsIGNvbnN0IEZsb2F0U2l6ZSYgaW5pdGlhbERl
bHRhLCBjb25zdCBGbG9hdFNpemUmIGluaXRpYWxWZWxvY2l0eSkKLSAgICA6IFNjcm9sbGluZ01v
bWVudHVtQ2FsY3VsYXRvcih2aWV3cG9ydFNpemUsIGNvbnRlbnRTaXplLCBpbml0aWFsT2Zmc2V0
LCB0YXJnZXRPZmZzZXQsIGluaXRpYWxEZWx0YSwgaW5pdGlhbFZlbG9jaXR5KQotICAgICwgbV9y
ZXF1aXJlc01vbWVudHVtU2Nyb2xsaW5nKGluaXRpYWxPZmZzZXQgIT0gdGFyZ2V0T2Zmc2V0IHx8
IGluaXRpYWxWZWxvY2l0eS5hcmVhKCkpCit2b2lkIFNjcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRv
cjo6c2V0UGxhdGZvcm1Nb21lbnR1bVNjcm9sbGluZ1ByZWRpY3Rpb25FbmFibGVkKGJvb2wgZW5h
YmxlZCkKK3sKKyAgICBnRW5hYmxlUGxhdGZvcm1Nb21lbnR1bVNjcm9sbGluZ1ByZWRpY3Rpb24g
PSBlbmFibGVkOworfQorCitTY3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3JNYWM6OlNjcm9sbGlu
Z01vbWVudHVtQ2FsY3VsYXRvck1hYyhjb25zdCBGbG9hdFNpemUmIHZpZXdwb3J0U2l6ZSwgY29u
c3QgRmxvYXRTaXplJiBjb250ZW50U2l6ZSwgY29uc3QgRmxvYXRQb2ludCYgaW5pdGlhbE9mZnNl
dCwgY29uc3QgRmxvYXRTaXplJiBpbml0aWFsRGVsdGEsIGNvbnN0IEZsb2F0U2l6ZSYgaW5pdGlh
bFZlbG9jaXR5KQorICAgIDogU2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yKHZpZXdwb3J0U2l6
ZSwgY29udGVudFNpemUsIGluaXRpYWxPZmZzZXQsIGluaXRpYWxEZWx0YSwgaW5pdGlhbFZlbG9j
aXR5KQogewogfQogCiBGbG9hdFBvaW50IFNjcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvck1hYzo6
c2Nyb2xsT2Zmc2V0QWZ0ZXJFbGFwc2VkVGltZShTZWNvbmRzIGVsYXBzZWRUaW1lKQogewotICAg
IGlmICghbV9yZXF1aXJlc01vbWVudHVtU2Nyb2xsaW5nKQotICAgICAgICByZXR1cm4geyBtX3Rh
cmdldFNjcm9sbE9mZnNldC53aWR0aCgpLCBtX3RhcmdldFNjcm9sbE9mZnNldC5oZWlnaHQoKSB9
OworICAgIGlmICghcmVxdWlyZXNNb21lbnR1bVNjcm9sbGluZygpKQorICAgICAgICByZXR1cm4g
eyByZXRhcmdldGVkU2Nyb2xsT2Zmc2V0KCkud2lkdGgoKSwgcmV0YXJnZXRlZFNjcm9sbE9mZnNl
dCgpLmhlaWdodCgpIH07CiAKICAgICByZXR1cm4gW2Vuc3VyZVBsYXRmb3JtTW9tZW50dW1DYWxj
dWxhdG9yKCkgcG9zaXRpb25BZnRlckR1cmF0aW9uOmVsYXBzZWRUaW1lLnZhbHVlKCldOwogfQog
CitGbG9hdFNpemUgU2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yTWFjOjpwcmVkaWN0ZWREZXN0
aW5hdGlvbk9mZnNldCgpCit7CisgICAgaWYgKCFnRW5hYmxlUGxhdGZvcm1Nb21lbnR1bVNjcm9s
bGluZ1ByZWRpY3Rpb24pCisgICAgICAgIHJldHVybiBTY3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0
b3I6OnByZWRpY3RlZERlc3RpbmF0aW9uT2Zmc2V0KCk7CisKKyAgICBlbnN1cmVQbGF0Zm9ybU1v
bWVudHVtQ2FsY3VsYXRvcigpOworICAgIHJldHVybiB7IG1faW5pdGlhbERlc3RpbmF0aW9uT3Jp
Z2luLngoKSwgbV9pbml0aWFsRGVzdGluYXRpb25PcmlnaW4ueSgpIH07Cit9CisKK3ZvaWQgU2Ny
b2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yTWFjOjpyZXRhcmdldGVkU2Nyb2xsT2Zmc2V0RGlkQ2hh
bmdlKCkKK3sKKyAgICBfTlNTY3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3IgKmNhbGN1bGF0b3Ig
PSBlbnN1cmVQbGF0Zm9ybU1vbWVudHVtQ2FsY3VsYXRvcigpOworICAgIGNhbGN1bGF0b3IuZGVz
dGluYXRpb25PcmlnaW4gPSBOU01ha2VQb2ludChyZXRhcmdldGVkU2Nyb2xsT2Zmc2V0KCkud2lk
dGgoKSwgcmV0YXJnZXRlZFNjcm9sbE9mZnNldCgpLmhlaWdodCgpKTsKKyNpZiBfX01BQ19PU19Y
X1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwMTIwMAorICAgIFtjYWxjdWxhdG9yIGNhbGN1bGF0
ZVRvUmVhY2hEZXN0aW5hdGlvbl07CisjZW5kaWYKK30KKwogU2Vjb25kcyBTY3JvbGxpbmdNb21l
bnR1bUNhbGN1bGF0b3JNYWM6OmFuaW1hdGlvbkR1cmF0aW9uKCkKIHsKLSAgICBpZiAoIW1fcmVx
dWlyZXNNb21lbnR1bVNjcm9sbGluZykKKyAgICBpZiAoIXJlcXVpcmVzTW9tZW50dW1TY3JvbGxp
bmcoKSkKICAgICAgICAgcmV0dXJuIDBfczsKIAogICAgIHJldHVybiBTZWNvbmRzKFtlbnN1cmVQ
bGF0Zm9ybU1vbWVudHVtQ2FsY3VsYXRvcigpIGR1cmF0aW9uVW50aWxTdG9wXSk7CiB9CiAKK2Jv
b2wgU2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yTWFjOjpyZXF1aXJlc01vbWVudHVtU2Nyb2xs
aW5nKCkKK3sKKyAgICBpZiAobV9yZXF1aXJlc01vbWVudHVtU2Nyb2xsaW5nID09IHN0ZDo6bnVs
bG9wdCkKKyAgICAgICAgbV9yZXF1aXJlc01vbWVudHVtU2Nyb2xsaW5nID0gbV9pbml0aWFsU2Ny
b2xsT2Zmc2V0ICE9IHJldGFyZ2V0ZWRTY3JvbGxPZmZzZXQoKSB8fCBtX2luaXRpYWxWZWxvY2l0
eS5hcmVhKCk7CisgICAgcmV0dXJuIG1fcmVxdWlyZXNNb21lbnR1bVNjcm9sbGluZy52YWx1ZSgp
OworfQorCiBfTlNTY3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3IgKlNjcm9sbGluZ01vbWVudHVt
Q2FsY3VsYXRvck1hYzo6ZW5zdXJlUGxhdGZvcm1Nb21lbnR1bUNhbGN1bGF0b3IoKQogewogICAg
IGlmIChtX3BsYXRmb3JtTW9tZW50dW1DYWxjdWxhdG9yKQpAQCAtNjgsMTAgKzk5LDcgQEAgX05T
U2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yICpTY3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3JN
YWM6OmVuc3VyZVBsYXRmb3JtTW8KICAgICBOU1JlY3QgY29udGVudEZyYW1lID0gTlNNYWtlUmVj
dCgwLCAwLCBtX2NvbnRlbnRTaXplLndpZHRoKCksIG1fY29udGVudFNpemUuaGVpZ2h0KCkpOwog
ICAgIE5TUG9pbnQgdmVsb2NpdHkgPSBOU01ha2VQb2ludChtX2luaXRpYWxWZWxvY2l0eS53aWR0
aCgpLCBtX2luaXRpYWxWZWxvY2l0eS5oZWlnaHQoKSk7CiAgICAgbV9wbGF0Zm9ybU1vbWVudHVt
Q2FsY3VsYXRvciA9IGFkb3B0TlMoW1tfTlNTY3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3IgYWxs
b2NdIGluaXRXaXRoSW5pdGlhbE9yaWdpbjpvcmlnaW4gdmVsb2NpdHk6dmVsb2NpdHkgZG9jdW1l
bnRGcmFtZTpjb250ZW50RnJhbWUgY29uc3RyYWluZWRDbGlwcGluZ09yaWdpbjpOU1plcm9Qb2lu
dCBjbGlwcGluZ1NpemU6bV92aWV3cG9ydFNpemUgdG9sZXJhbmNlOk5TTWFrZVNpemUoMSwgMSld
KTsKLSAgICBbbV9wbGF0Zm9ybU1vbWVudHVtQ2FsY3VsYXRvciBzZXREZXN0aW5hdGlvbk9yaWdp
bjpOU01ha2VQb2ludChtX3RhcmdldFNjcm9sbE9mZnNldC53aWR0aCgpLCBtX3RhcmdldFNjcm9s
bE9mZnNldC5oZWlnaHQoKSldOwotI2lmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQg
Pj0gMTAxMjAwCi0gICAgW21fcGxhdGZvcm1Nb21lbnR1bUNhbGN1bGF0b3IgY2FsY3VsYXRlVG9S
ZWFjaERlc3RpbmF0aW9uXTsKLSNlbmRpZgorICAgIG1faW5pdGlhbERlc3RpbmF0aW9uT3JpZ2lu
ID0gW21fcGxhdGZvcm1Nb21lbnR1bUNhbGN1bGF0b3IgZGVzdGluYXRpb25PcmlnaW5dOwogICAg
IHJldHVybiBtX3BsYXRmb3JtTW9tZW50dW1DYWxjdWxhdG9yLmdldCgpOwogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nVHJlZUZyYW1l
U2Nyb2xsaW5nTm9kZU1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL21hYy9T
Y3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlTWFjLm1tCmluZGV4IDExZTdhNzRkZTMyNjJk
NTE0ZWU4YTMwZTg4MzU1ZDlhZDlhZjEyZTcuLjlhMDdmZmI4OWFlOWMzMmQyNmUwMzFkODM3ZWZj
ODg3MGJlZTllOTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL21h
Yy9TY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2Uvc2Nyb2xsaW5nL21hYy9TY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlTWFj
Lm1tCkBAIC05MCw2ICs5MCwxNiBAQCBzdGF0aWMgaW5saW5lIFZlY3RvcjxMYXlvdXRVbml0PiBj
b252ZXJ0VG9MYXlvdXRVbml0cyhjb25zdCBWZWN0b3I8ZmxvYXQ+JiBzbmFwTwogCiAgICAgcmV0
dXJuIHNuYXBPZmZzZXRzOwogfQorCitzdGF0aWMgaW5saW5lIFZlY3RvcjxTY3JvbGxPZmZzZXRS
YW5nZTxMYXlvdXRVbml0Pj4gY29udmVydFRvTGF5b3V0VW5pdHMoY29uc3QgVmVjdG9yPFNjcm9s
bE9mZnNldFJhbmdlPGZsb2F0Pj4mIHNuYXBPZmZzZXRSYW5nZXNBc0Zsb2F0KQoreworICAgIFZl
Y3RvcjxTY3JvbGxPZmZzZXRSYW5nZTxMYXlvdXRVbml0Pj4gc25hcE9mZnNldFJhbmdlczsKKyAg
ICBzbmFwT2Zmc2V0UmFuZ2VzLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoc25hcE9mZnNldFJhbmdl
c0FzRmxvYXQuc2l6ZSgpKTsKKyAgICBmb3IgKGF1dG8gcmFuZ2UgOiBzbmFwT2Zmc2V0UmFuZ2Vz
QXNGbG9hdCkKKyAgICAgICAgc25hcE9mZnNldFJhbmdlcy51bmNoZWNrZWRBcHBlbmQoeyByYW5n
ZS5zdGFydCwgcmFuZ2UuZW5kIH0pOworCisgICAgcmV0dXJuIHNuYXBPZmZzZXRSYW5nZXM7Cit9
CiAjZW5kaWYKIAogdm9pZCBTY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlTWFjOjpjb21t
aXRTdGF0ZUJlZm9yZUNoaWxkcmVuKGNvbnN0IFNjcm9sbGluZ1N0YXRlTm9kZSYgc3RhdGVOb2Rl
KQpAQCAtMTQ2LDExICsxNTYsMTEgQEAgdm9pZCBTY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdO
b2RlTWFjOjpjb21taXRTdGF0ZUJlZm9yZUNoaWxkcmVuKGNvbnN0IFNjcm9sbGkKICAgICB9CiAK
ICNpZiBFTkFCTEUoQ1NTX1NDUk9MTF9TTkFQKQotICAgIGlmIChzY3JvbGxpbmdTdGF0ZU5vZGUu
aGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRlRnJhbWVTY3JvbGxpbmdOb2RlOjpIb3Jp
em9udGFsU25hcE9mZnNldHMpKQotICAgICAgICBtX3Njcm9sbENvbnRyb2xsZXIudXBkYXRlU2Ny
b2xsU25hcFBvaW50cyhTY3JvbGxFdmVudEF4aXM6Okhvcml6b250YWwsIGNvbnZlcnRUb0xheW91
dFVuaXRzKHNjcm9sbGluZ1N0YXRlTm9kZS5ob3Jpem9udGFsU25hcE9mZnNldHMoKSkpOworICAg
IGlmIChzY3JvbGxpbmdTdGF0ZU5vZGUuaGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRl
RnJhbWVTY3JvbGxpbmdOb2RlOjpIb3Jpem9udGFsU25hcE9mZnNldHMpIHx8IHNjcm9sbGluZ1N0
YXRlTm9kZS5oYXNDaGFuZ2VkUHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVGcmFtZVNjcm9sbGluZ05v
ZGU6Okhvcml6b250YWxTbmFwT2Zmc2V0UmFuZ2VzKSkKKyAgICAgICAgbV9zY3JvbGxDb250cm9s
bGVyLnVwZGF0ZVNjcm9sbFNuYXBQb2ludHMoU2Nyb2xsRXZlbnRBeGlzOjpIb3Jpem9udGFsLCBj
b252ZXJ0VG9MYXlvdXRVbml0cyhzY3JvbGxpbmdTdGF0ZU5vZGUuaG9yaXpvbnRhbFNuYXBPZmZz
ZXRzKCkpLCBjb252ZXJ0VG9MYXlvdXRVbml0cyhzY3JvbGxpbmdTdGF0ZU5vZGUuaG9yaXpvbnRh
bFNuYXBPZmZzZXRSYW5nZXMoKSkpOwogCi0gICAgaWYgKHNjcm9sbGluZ1N0YXRlTm9kZS5oYXND
aGFuZ2VkUHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVGcmFtZVNjcm9sbGluZ05vZGU6OlZlcnRpY2Fs
U25hcE9mZnNldHMpKQotICAgICAgICBtX3Njcm9sbENvbnRyb2xsZXIudXBkYXRlU2Nyb2xsU25h
cFBvaW50cyhTY3JvbGxFdmVudEF4aXM6OlZlcnRpY2FsLCBjb252ZXJ0VG9MYXlvdXRVbml0cyhz
Y3JvbGxpbmdTdGF0ZU5vZGUudmVydGljYWxTbmFwT2Zmc2V0cygpKSk7CisgICAgaWYgKHNjcm9s
bGluZ1N0YXRlTm9kZS5oYXNDaGFuZ2VkUHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVGcmFtZVNjcm9s
bGluZ05vZGU6OlZlcnRpY2FsU25hcE9mZnNldHMpIHx8IHNjcm9sbGluZ1N0YXRlTm9kZS5oYXND
aGFuZ2VkUHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVGcmFtZVNjcm9sbGluZ05vZGU6OlZlcnRpY2Fs
U25hcE9mZnNldFJhbmdlcykpCisgICAgICAgIG1fc2Nyb2xsQ29udHJvbGxlci51cGRhdGVTY3Jv
bGxTbmFwUG9pbnRzKFNjcm9sbEV2ZW50QXhpczo6VmVydGljYWwsIGNvbnZlcnRUb0xheW91dFVu
aXRzKHNjcm9sbGluZ1N0YXRlTm9kZS52ZXJ0aWNhbFNuYXBPZmZzZXRzKCkpLCBjb252ZXJ0VG9M
YXlvdXRVbml0cyhzY3JvbGxpbmdTdGF0ZU5vZGUudmVydGljYWxTbmFwT2Zmc2V0UmFuZ2VzKCkp
KTsKIAogICAgIGlmIChzY3JvbGxpbmdTdGF0ZU5vZGUuaGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9s
bGluZ1N0YXRlU2Nyb2xsaW5nTm9kZTo6Q3VycmVudEhvcml6b250YWxTbmFwT2Zmc2V0SW5kZXgp
KQogICAgICAgICBtX3Njcm9sbENvbnRyb2xsZXIuc2V0QWN0aXZlU2Nyb2xsU25hcEluZGV4Rm9y
QXhpcyhTY3JvbGxFdmVudEF4aXM6Okhvcml6b250YWwsIHNjcm9sbGluZ1N0YXRlTm9kZS5jdXJy
ZW50SG9yaXpvbnRhbFNuYXBQb2ludEluZGV4KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vU2Nyb2xsYWJsZUFyZWEuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
U2Nyb2xsYWJsZUFyZWEuY3BwCmluZGV4IGE3MWIwNzkxYTAwZGU3ODVhNTE3MzE3OWZjOGNiZjEy
YTFkNTE1M2IuLmRlYWQ3MjE2OTgyZjI2ZGRlYmFlNTJhMDAxNzAwMWI4ZGM3ZmRkZWQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGFibGVBcmVhLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxhYmxlQXJlYS5jcHAKQEAgLTQ4LDcgKzQ4LDcg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogc3RydWN0IFNhbWVTaXplQXNTY3JvbGxhYmxlQXJlYSB7
CiAgICAgdmlydHVhbCB+U2FtZVNpemVBc1Njcm9sbGFibGVBcmVhKCk7CiAjaWYgRU5BQkxFKENT
U19TQ1JPTExfU05BUCkKLSAgICB2b2lkKiBwb2ludGVyc1s0XTsKKyAgICB2b2lkKiBwb2ludGVy
c1szXTsKICAgICB1bnNpZ25lZCBjdXJyZW50SW5kaWNlc1syXTsKICNlbHNlCiAgICAgdm9pZCog
cG9pbnRlclsyXTsKQEAgLTQyNSwzNSArNDI1LDkwIEBAIGJvb2wgU2Nyb2xsYWJsZUFyZWE6Omhh
c0xheWVyRm9yU2Nyb2xsQ29ybmVyKCkgY29uc3QKIH0KIAogI2lmIEVOQUJMRShDU1NfU0NST0xM
X1NOQVApCi12b2lkIFNjcm9sbGFibGVBcmVhOjpzZXRIb3Jpem9udGFsU25hcE9mZnNldHMoc3Rk
Ojp1bmlxdWVfcHRyPFZlY3RvcjxMYXlvdXRVbml0Pj4gaG9yaXpvbnRhbFNuYXBPZmZzZXRzKQor
U2Nyb2xsU25hcE9mZnNldHNJbmZvPExheW91dFVuaXQ+JiBTY3JvbGxhYmxlQXJlYTo6ZW5zdXJl
U25hcE9mZnNldHNJbmZvKCkKK3sKKyAgICBpZiAoIW1fc25hcE9mZnNldHNJbmZvKQorICAgICAg
ICBtX3NuYXBPZmZzZXRzSW5mbyA9IHN0ZDo6bWFrZV91bmlxdWU8U2Nyb2xsU25hcE9mZnNldHNJ
bmZvPExheW91dFVuaXQ+PigpOworICAgIHJldHVybiAqbV9zbmFwT2Zmc2V0c0luZm87Cit9CisK
K2NvbnN0IFZlY3RvcjxMYXlvdXRVbml0PiogU2Nyb2xsYWJsZUFyZWE6Omhvcml6b250YWxTbmFw
T2Zmc2V0cygpIGNvbnN0Cit7CisgICAgaWYgKCFtX3NuYXBPZmZzZXRzSW5mbykKKyAgICAgICAg
cmV0dXJuIG51bGxwdHI7CisKKyAgICByZXR1cm4gJm1fc25hcE9mZnNldHNJbmZvLT5ob3Jpem9u
dGFsU25hcE9mZnNldHM7Cit9CisKK2NvbnN0IFZlY3RvcjxTY3JvbGxPZmZzZXRSYW5nZTxMYXlv
dXRVbml0Pj4qIFNjcm9sbGFibGVBcmVhOjpob3Jpem9udGFsU25hcE9mZnNldFJhbmdlcygpIGNv
bnN0Cit7CisgICAgaWYgKCFtX3NuYXBPZmZzZXRzSW5mbykKKyAgICAgICAgcmV0dXJuIG51bGxw
dHI7CisKKyAgICByZXR1cm4gJm1fc25hcE9mZnNldHNJbmZvLT5ob3Jpem9udGFsU25hcE9mZnNl
dFJhbmdlczsKK30KKworY29uc3QgVmVjdG9yPFNjcm9sbE9mZnNldFJhbmdlPExheW91dFVuaXQ+
PiogU2Nyb2xsYWJsZUFyZWE6OnZlcnRpY2FsU25hcE9mZnNldFJhbmdlcygpIGNvbnN0Cit7Cisg
ICAgaWYgKCFtX3NuYXBPZmZzZXRzSW5mbykKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAg
ICByZXR1cm4gJm1fc25hcE9mZnNldHNJbmZvLT52ZXJ0aWNhbFNuYXBPZmZzZXRSYW5nZXM7Cit9
CisKK2NvbnN0IFZlY3RvcjxMYXlvdXRVbml0PiogU2Nyb2xsYWJsZUFyZWE6OnZlcnRpY2FsU25h
cE9mZnNldHMoKSBjb25zdAoreworICAgIGlmICghbV9zbmFwT2Zmc2V0c0luZm8pCisgICAgICAg
IHJldHVybiBudWxscHRyOworCisgICAgcmV0dXJuICZtX3NuYXBPZmZzZXRzSW5mby0+dmVydGlj
YWxTbmFwT2Zmc2V0czsKK30KKwordm9pZCBTY3JvbGxhYmxlQXJlYTo6c2V0SG9yaXpvbnRhbFNu
YXBPZmZzZXRzKGNvbnN0IFZlY3RvcjxMYXlvdXRVbml0PiYgaG9yaXpvbnRhbFNuYXBPZmZzZXRz
KQogewotICAgIEFTU0VSVChob3Jpem9udGFsU25hcE9mZnNldHMpOwogICAgIC8vIENvbnNpZGVy
IGhhdmluZyBhIG5vbi1lbXB0eSBzZXQgb2Ygc25hcCBvZmZzZXRzIGFzIGEgY3VlIHRvIGluaXRp
YWxpemUgdGhlIFNjcm9sbEFuaW1hdG9yLgotICAgIGlmIChob3Jpem9udGFsU25hcE9mZnNldHMt
PnNpemUoKSkKKyAgICBpZiAoaG9yaXpvbnRhbFNuYXBPZmZzZXRzLnNpemUoKSkKICAgICAgICAg
c2Nyb2xsQW5pbWF0b3IoKTsKIAotICAgIG1faG9yaXpvbnRhbFNuYXBPZmZzZXRzID0gV1RGTW92
ZShob3Jpem9udGFsU25hcE9mZnNldHMpOworICAgIGVuc3VyZVNuYXBPZmZzZXRzSW5mbygpLmhv
cml6b250YWxTbmFwT2Zmc2V0cyA9IGhvcml6b250YWxTbmFwT2Zmc2V0czsKIH0KIAotdm9pZCBT
Y3JvbGxhYmxlQXJlYTo6c2V0VmVydGljYWxTbmFwT2Zmc2V0cyhzdGQ6OnVuaXF1ZV9wdHI8VmVj
dG9yPExheW91dFVuaXQ+PiB2ZXJ0aWNhbFNuYXBPZmZzZXRzKQordm9pZCBTY3JvbGxhYmxlQXJl
YTo6c2V0VmVydGljYWxTbmFwT2Zmc2V0cyhjb25zdCBWZWN0b3I8TGF5b3V0VW5pdD4mIHZlcnRp
Y2FsU25hcE9mZnNldHMpCiB7Ci0gICAgQVNTRVJUKHZlcnRpY2FsU25hcE9mZnNldHMpOwogICAg
IC8vIENvbnNpZGVyIGhhdmluZyBhIG5vbi1lbXB0eSBzZXQgb2Ygc25hcCBvZmZzZXRzIGFzIGEg
Y3VlIHRvIGluaXRpYWxpemUgdGhlIFNjcm9sbEFuaW1hdG9yLgotICAgIGlmICh2ZXJ0aWNhbFNu
YXBPZmZzZXRzLT5zaXplKCkpCisgICAgaWYgKHZlcnRpY2FsU25hcE9mZnNldHMuc2l6ZSgpKQog
ICAgICAgICBzY3JvbGxBbmltYXRvcigpOwogCi0gICAgbV92ZXJ0aWNhbFNuYXBPZmZzZXRzID0g
V1RGTW92ZSh2ZXJ0aWNhbFNuYXBPZmZzZXRzKTsKKyAgICBlbnN1cmVTbmFwT2Zmc2V0c0luZm8o
KS52ZXJ0aWNhbFNuYXBPZmZzZXRzID0gdmVydGljYWxTbmFwT2Zmc2V0czsKK30KKwordm9pZCBT
Y3JvbGxhYmxlQXJlYTo6c2V0SG9yaXpvbnRhbFNuYXBPZmZzZXRSYW5nZXMoY29uc3QgVmVjdG9y
PFNjcm9sbE9mZnNldFJhbmdlPExheW91dFVuaXQ+PiYgaG9yaXpvbnRhbFJhbmdlcykKK3sKKyAg
ICBlbnN1cmVTbmFwT2Zmc2V0c0luZm8oKS5ob3Jpem9udGFsU25hcE9mZnNldFJhbmdlcyA9IGhv
cml6b250YWxSYW5nZXM7Cit9CisKK3ZvaWQgU2Nyb2xsYWJsZUFyZWE6OnNldFZlcnRpY2FsU25h
cE9mZnNldFJhbmdlcyhjb25zdCBWZWN0b3I8U2Nyb2xsT2Zmc2V0UmFuZ2U8TGF5b3V0VW5pdD4+
JiB2ZXJ0aWNhbFJhbmdlcykKK3sKKyAgICBlbnN1cmVTbmFwT2Zmc2V0c0luZm8oKS52ZXJ0aWNh
bFNuYXBPZmZzZXRSYW5nZXMgPSB2ZXJ0aWNhbFJhbmdlczsKIH0KIAogdm9pZCBTY3JvbGxhYmxl
QXJlYTo6Y2xlYXJIb3Jpem9udGFsU25hcE9mZnNldHMoKQogewotICAgIG1faG9yaXpvbnRhbFNu
YXBPZmZzZXRzID0gbnVsbHB0cjsKKyAgICBpZiAoIW1fc25hcE9mZnNldHNJbmZvKQorICAgICAg
ICByZXR1cm47CisKKyAgICBtX3NuYXBPZmZzZXRzSW5mby0+aG9yaXpvbnRhbFNuYXBPZmZzZXRz
ID0geyB9OworICAgIG1fc25hcE9mZnNldHNJbmZvLT5ob3Jpem9udGFsU25hcE9mZnNldFJhbmdl
cyA9IHsgfTsKICAgICBtX2N1cnJlbnRIb3Jpem9udGFsU25hcFBvaW50SW5kZXggPSAwOwogfQog
CiB2b2lkIFNjcm9sbGFibGVBcmVhOjpjbGVhclZlcnRpY2FsU25hcE9mZnNldHMoKQogewotICAg
IG1fdmVydGljYWxTbmFwT2Zmc2V0cyA9IG51bGxwdHI7CisgICAgaWYgKCFtX3NuYXBPZmZzZXRz
SW5mbykKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9zbmFwT2Zmc2V0c0luZm8tPnZlcnRpY2Fs
U25hcE9mZnNldHMgPSB7IH07CisgICAgbV9zbmFwT2Zmc2V0c0luZm8tPnZlcnRpY2FsU25hcE9m
ZnNldFJhbmdlcyA9IHsgfTsKICAgICBtX2N1cnJlbnRWZXJ0aWNhbFNuYXBQb2ludEluZGV4ID0g
MDsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYWJsZUFy
ZWEuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGFibGVBcmVhLmgKaW5kZXggODkw
OTcxNWE3Y2UyMDdkY2IyZmYwNTZjMDcwZmY1MTBhYmFlOGQyMi4uMjRmOGIxNjBhYzgzNTBhZWVl
ZjhlNTQ4ZGMyY2MwNmNmODQ0YTk3ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vU2Nyb2xsYWJsZUFyZWEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxh
YmxlQXJlYS5oCkBAIC0yNiw2ICsyNiw3IEBACiAjaWZuZGVmIFNjcm9sbGFibGVBcmVhX2gKICNk
ZWZpbmUgU2Nyb2xsYWJsZUFyZWFfaAogCisjaW5jbHVkZSAiU2Nyb2xsU25hcE9mZnNldHNJbmZv
LmgiCiAjaW5jbHVkZSAiU2Nyb2xsYmFyLmgiCiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogI2lu
Y2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CkBAIC02NywxMSArNjgsMTUgQEAgcHVibGljOgogICAgIFdl
YWtQdHI8U2Nyb2xsYWJsZUFyZWE+IGNyZWF0ZVdlYWtQdHIoKSB7IHJldHVybiBtX3dlYWtQdHJG
YWN0b3J5LmNyZWF0ZVdlYWtQdHIoKTsgfQogCiAjaWYgRU5BQkxFKENTU19TQ1JPTExfU05BUCkK
LSAgICBjb25zdCBWZWN0b3I8TGF5b3V0VW5pdD4qIGhvcml6b250YWxTbmFwT2Zmc2V0cygpIGNv
bnN0IHsgcmV0dXJuIG1faG9yaXpvbnRhbFNuYXBPZmZzZXRzLmdldCgpOyB9OwotICAgIGNvbnN0
IFZlY3RvcjxMYXlvdXRVbml0PiogdmVydGljYWxTbmFwT2Zmc2V0cygpIGNvbnN0IHsgcmV0dXJu
IG1fdmVydGljYWxTbmFwT2Zmc2V0cy5nZXQoKTsgfTsKKyAgICBXRUJDT1JFX0VYUE9SVCBjb25z
dCBWZWN0b3I8TGF5b3V0VW5pdD4qIGhvcml6b250YWxTbmFwT2Zmc2V0cygpIGNvbnN0OworICAg
IFdFQkNPUkVfRVhQT1JUIGNvbnN0IFZlY3RvcjxMYXlvdXRVbml0PiogdmVydGljYWxTbmFwT2Zm
c2V0cygpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIGNvbnN0IFZlY3RvcjxTY3JvbGxPZmZz
ZXRSYW5nZTxMYXlvdXRVbml0Pj4qIGhvcml6b250YWxTbmFwT2Zmc2V0UmFuZ2VzKCkgY29uc3Q7
CisgICAgV0VCQ09SRV9FWFBPUlQgY29uc3QgVmVjdG9yPFNjcm9sbE9mZnNldFJhbmdlPExheW91
dFVuaXQ+PiogdmVydGljYWxTbmFwT2Zmc2V0UmFuZ2VzKCkgY29uc3Q7CiAgICAgdmlydHVhbCB2
b2lkIHVwZGF0ZVNuYXBPZmZzZXRzKCkgeyB9OwotICAgIHZvaWQgc2V0SG9yaXpvbnRhbFNuYXBP
ZmZzZXRzKHN0ZDo6dW5pcXVlX3B0cjxWZWN0b3I8TGF5b3V0VW5pdD4+KTsKLSAgICB2b2lkIHNl
dFZlcnRpY2FsU25hcE9mZnNldHMoc3RkOjp1bmlxdWVfcHRyPFZlY3RvcjxMYXlvdXRVbml0Pj4p
OworICAgIHZvaWQgc2V0SG9yaXpvbnRhbFNuYXBPZmZzZXRzKGNvbnN0IFZlY3RvcjxMYXlvdXRV
bml0PiYpOworICAgIHZvaWQgc2V0VmVydGljYWxTbmFwT2Zmc2V0cyhjb25zdCBWZWN0b3I8TGF5
b3V0VW5pdD4mKTsKKyAgICB2b2lkIHNldEhvcml6b250YWxTbmFwT2Zmc2V0UmFuZ2VzKGNvbnN0
IFZlY3RvcjxTY3JvbGxPZmZzZXRSYW5nZTxMYXlvdXRVbml0Pj4mKTsKKyAgICB2b2lkIHNldFZl
cnRpY2FsU25hcE9mZnNldFJhbmdlcyhjb25zdCBWZWN0b3I8U2Nyb2xsT2Zmc2V0UmFuZ2U8TGF5
b3V0VW5pdD4+Jik7CiAgICAgdm9pZCBjbGVhckhvcml6b250YWxTbmFwT2Zmc2V0cygpOwogICAg
IHZvaWQgY2xlYXJWZXJ0aWNhbFNuYXBPZmZzZXRzKCk7CiAgICAgdW5zaWduZWQgY3VycmVudEhv
cml6b250YWxTbmFwUG9pbnRJbmRleCgpIGNvbnN0IHsgcmV0dXJuIG1fY3VycmVudEhvcml6b250
YWxTbmFwUG9pbnRJbmRleDsgfQpAQCAtMzQ2LDE0ICszNTEsMTQgQEAgcHJpdmF0ZToKICAgICAv
LyBUaGlzIGZ1bmN0aW9uIHNob3VsZCBiZSBvdmVycmlkZW4gYnkgc3ViY2xhc3NlcyB0byBwZXJm
b3JtIHRoZSBhY3R1YWwKICAgICAvLyBzY3JvbGwgb2YgdGhlIGNvbnRlbnQuCiAgICAgdmlydHVh
bCB2b2lkIHNldFNjcm9sbE9mZnNldChjb25zdCBTY3JvbGxPZmZzZXQmKSA9IDA7CisgICAgU2Ny
b2xsU25hcE9mZnNldHNJbmZvPExheW91dFVuaXQ+JiBlbnN1cmVTbmFwT2Zmc2V0c0luZm8oKTsK
IAogICAgIG11dGFibGUgc3RkOjp1bmlxdWVfcHRyPFNjcm9sbEFuaW1hdG9yPiBtX3Njcm9sbEFu
aW1hdG9yOwogCiAgICAgV2Vha1B0ckZhY3Rvcnk8U2Nyb2xsYWJsZUFyZWE+IG1fd2Vha1B0ckZh
Y3RvcnkgeyB0aGlzIH07CiAKICNpZiBFTkFCTEUoQ1NTX1NDUk9MTF9TTkFQKQotICAgIHN0ZDo6
dW5pcXVlX3B0cjxWZWN0b3I8TGF5b3V0VW5pdD4+IG1faG9yaXpvbnRhbFNuYXBPZmZzZXRzOwot
ICAgIHN0ZDo6dW5pcXVlX3B0cjxWZWN0b3I8TGF5b3V0VW5pdD4+IG1fdmVydGljYWxTbmFwT2Zm
c2V0czsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8U2Nyb2xsU25hcE9mZnNldHNJbmZvPExheW91dFVu
aXQ+PiBtX3NuYXBPZmZzZXRzSW5mbzsKICAgICB1bnNpZ25lZCBtX2N1cnJlbnRIb3Jpem9udGFs
U25hcFBvaW50SW5kZXggeyAwIH07CiAgICAgdW5zaWduZWQgbV9jdXJyZW50VmVydGljYWxTbmFw
UG9pbnRJbmRleCB7IDAgfTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vY29jb2EvU2Nyb2xsQ29udHJvbGxlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Y29jb2EvU2Nyb2xsQ29udHJvbGxlci5oCmluZGV4IGIxYzdhMGMxYzA0ZDg2MmExMjg3NTk1YTI0
NmMyOGVjMjNlMjJkNWEuLjBlNDQ3ODlmMGExMjZhZThhNDI3NTQ2MzFjZGZmNDA2YzliOTRiNjAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1Njcm9sbENvbnRyb2xs
ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9TY3JvbGxDb250cm9sbGVy
LmgKQEAgLTM3LDYgKzM3LDcgQEAKIAogI2lmIEVOQUJMRShDU1NfU0NST0xMX1NOQVApCiAjaW5j
bHVkZSAiU2Nyb2xsU25hcEFuaW1hdG9yU3RhdGUuaCIKKyNpbmNsdWRlICJTY3JvbGxTbmFwT2Zm
c2V0c0luZm8uaCIKICNlbmRpZgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0xMzMsNyArMTM0
LDcgQEAgcHVibGljOgogICAgIGJvb2wgaXNTY3JvbGxTbmFwSW5Qcm9ncmVzcygpIGNvbnN0Owog
CiAjaWYgRU5BQkxFKENTU19TQ1JPTExfU05BUCkKLSAgICB2b2lkIHVwZGF0ZVNjcm9sbFNuYXBQ
b2ludHMoU2Nyb2xsRXZlbnRBeGlzLCBjb25zdCBWZWN0b3I8TGF5b3V0VW5pdD4mKTsKKyAgICB2
b2lkIHVwZGF0ZVNjcm9sbFNuYXBQb2ludHMoU2Nyb2xsRXZlbnRBeGlzLCBjb25zdCBWZWN0b3I8
TGF5b3V0VW5pdD4mLCBjb25zdCBWZWN0b3I8U2Nyb2xsT2Zmc2V0UmFuZ2U8TGF5b3V0VW5pdD4+
Jik7CiAgICAgdm9pZCBzZXRBY3RpdmVTY3JvbGxTbmFwSW5kZXhGb3JBeGlzKFNjcm9sbEV2ZW50
QXhpcywgdW5zaWduZWQpOwogICAgIHZvaWQgc2V0QWN0aXZlU2Nyb2xsU25hcEluZGljZXNGb3JP
ZmZzZXQoaW50IHgsIGludCB5KTsKICAgICBib29sIGFjdGl2ZVNjcm9sbFNuYXBJbmRleERpZENo
YW5nZSgpIGNvbnN0IHsgcmV0dXJuIG1fYWN0aXZlU2Nyb2xsU25hcEluZGV4RGlkQ2hhbmdlOyB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9TY3JvbGxDb250cm9s
bGVyLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvU2Nyb2xsQ29udHJvbGxlci5t
bQppbmRleCBlNDZlYzU2YTc0ZTI2MmRmMThmMDI3MmE3MjNiMzVjMjQ1Njg3NjU3Li5hODdkMzNi
MzMxZTM0OWQxMGYxZjMwMDAyMDk2NDZhNWI4NDViZGRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9jb2NvYS9TY3JvbGxDb250cm9sbGVyLm1tCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2NvY29hL1Njcm9sbENvbnRyb2xsZXIubW0KQEAgLTU1MywxNCArNTUzLDE1
IEBAIGJvb2wgU2Nyb2xsQ29udHJvbGxlcjo6cHJvY2Vzc1doZWVsRXZlbnRGb3JTY3JvbGxTbmFw
KGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYKICAgICBjYXNlIFdoZWVsRXZlbnRTdGF0dXM6OlVz
ZXJTY3JvbGxpbmc6CiAgICAgICAgIHN0b3BTY3JvbGxTbmFwVGltZXIoKTsKICAgICAgICAgbV9z
Y3JvbGxTbmFwU3RhdGUtPnRyYW5zaXRpb25Ub1VzZXJJbnRlcmFjdGlvblN0YXRlKCk7CisgICAg
ICAgIG1fZHJhZ0VuZGVkU2Nyb2xsaW5nVmVsb2NpdHkgPSAtd2hlZWxFdmVudC5zY3JvbGxpbmdW
ZWxvY2l0eSgpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIFdoZWVsRXZlbnRTdGF0dXM6OlVz
ZXJTY3JvbGxFbmQ6Ci0gICAgICAgIG1fZHJhZ0VuZGVkU2Nyb2xsaW5nVmVsb2NpdHkgPSAtd2hl
ZWxFdmVudC5zY3JvbGxpbmdWZWxvY2l0eSgpOwogICAgICAgICBtX3Njcm9sbFNuYXBTdGF0ZS0+
dHJhbnNpdGlvblRvU25hcEFuaW1hdGlvblN0YXRlKG1fY2xpZW50LnNjcm9sbEV4dGVudCgpLCBt
X2NsaWVudC52aWV3cG9ydFNpemUoKSwgbV9jbGllbnQucGFnZVNjYWxlRmFjdG9yKCksIG1fY2xp
ZW50LnNjcm9sbE9mZnNldCgpKTsKICAgICAgICAgc3RhcnRTY3JvbGxTbmFwVGltZXIoKTsKICAg
ICAgICAgYnJlYWs7CiAgICAgY2FzZSBXaGVlbEV2ZW50U3RhdHVzOjpJbmVydGlhbFNjcm9sbEJl
Z2luOgogICAgICAgICBtX3Njcm9sbFNuYXBTdGF0ZS0+dHJhbnNpdGlvblRvR2xpZGVBbmltYXRp
b25TdGF0ZShtX2NsaWVudC5zY3JvbGxFeHRlbnQoKSwgbV9jbGllbnQudmlld3BvcnRTaXplKCks
IG1fY2xpZW50LnBhZ2VTY2FsZUZhY3RvcigpLCBtX2NsaWVudC5zY3JvbGxPZmZzZXQoKSwgbV9k
cmFnRW5kZWRTY3JvbGxpbmdWZWxvY2l0eSwgRmxvYXRTaXplKC13aGVlbEV2ZW50LmRlbHRhWCgp
LCAtd2hlZWxFdmVudC5kZWx0YVkoKSkpOworICAgICAgICBtX2RyYWdFbmRlZFNjcm9sbGluZ1Zl
bG9jaXR5ID0geyB9OwogICAgICAgICBpc0luZXJ0aWFsU2Nyb2xsaW5nID0gdHJ1ZTsKICAgICAg
ICAgYnJlYWs7CiAgICAgY2FzZSBXaGVlbEV2ZW50U3RhdHVzOjpJbmVydGlhbFNjcm9sbGluZzoK
QEAgLTU4MSwxOCArNTgyLDI0IEBAIGJvb2wgU2Nyb2xsQ29udHJvbGxlcjo6cHJvY2Vzc1doZWVs
RXZlbnRGb3JTY3JvbGxTbmFwKGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYKIAogdm9pZCBTY3Jv
bGxDb250cm9sbGVyOjp1cGRhdGVTY3JvbGxTbmFwU3RhdGUoY29uc3QgU2Nyb2xsYWJsZUFyZWEm
IHNjcm9sbGFibGVBcmVhKQogewotICAgIGlmIChhdXRvKiBzbmFwT2Zmc2V0cyA9IHNjcm9sbGFi
bGVBcmVhLmhvcml6b250YWxTbmFwT2Zmc2V0cygpKQotICAgICAgICB1cGRhdGVTY3JvbGxTbmFw
UG9pbnRzKFNjcm9sbEV2ZW50QXhpczo6SG9yaXpvbnRhbCwgKnNuYXBPZmZzZXRzKTsKLSAgICBl
bHNlCi0gICAgICAgIHVwZGF0ZVNjcm9sbFNuYXBQb2ludHMoU2Nyb2xsRXZlbnRBeGlzOjpIb3Jp
em9udGFsLCB7IH0pOworICAgIGlmIChhdXRvKiBzbmFwT2Zmc2V0cyA9IHNjcm9sbGFibGVBcmVh
Lmhvcml6b250YWxTbmFwT2Zmc2V0cygpKSB7CisgICAgICAgIGlmIChhdXRvKiBzbmFwT2Zmc2V0
UmFuZ2VzID0gc2Nyb2xsYWJsZUFyZWEuaG9yaXpvbnRhbFNuYXBPZmZzZXRSYW5nZXMoKSkKKyAg
ICAgICAgICAgIHVwZGF0ZVNjcm9sbFNuYXBQb2ludHMoU2Nyb2xsRXZlbnRBeGlzOjpIb3Jpem9u
dGFsLCAqc25hcE9mZnNldHMsICpzbmFwT2Zmc2V0UmFuZ2VzKTsKKyAgICAgICAgZWxzZQorICAg
ICAgICAgICAgdXBkYXRlU2Nyb2xsU25hcFBvaW50cyhTY3JvbGxFdmVudEF4aXM6Okhvcml6b250
YWwsICpzbmFwT2Zmc2V0cywgeyB9KTsKKyAgICB9IGVsc2UKKyAgICAgICAgdXBkYXRlU2Nyb2xs
U25hcFBvaW50cyhTY3JvbGxFdmVudEF4aXM6Okhvcml6b250YWwsIHsgfSwgeyB9KTsKIAotICAg
IGlmIChhdXRvKiBzbmFwT2Zmc2V0cyA9IHNjcm9sbGFibGVBcmVhLnZlcnRpY2FsU25hcE9mZnNl
dHMoKSkKLSAgICAgICAgdXBkYXRlU2Nyb2xsU25hcFBvaW50cyhTY3JvbGxFdmVudEF4aXM6OlZl
cnRpY2FsLCAqc25hcE9mZnNldHMpOwotICAgIGVsc2UKLSAgICAgICAgdXBkYXRlU2Nyb2xsU25h
cFBvaW50cyhTY3JvbGxFdmVudEF4aXM6OlZlcnRpY2FsLCB7IH0pOworICAgIGlmIChhdXRvKiBz
bmFwT2Zmc2V0cyA9IHNjcm9sbGFibGVBcmVhLnZlcnRpY2FsU25hcE9mZnNldHMoKSkgeworICAg
ICAgICBpZiAoYXV0byogc25hcE9mZnNldFJhbmdlcyA9IHNjcm9sbGFibGVBcmVhLnZlcnRpY2Fs
U25hcE9mZnNldFJhbmdlcygpKQorICAgICAgICAgICAgdXBkYXRlU2Nyb2xsU25hcFBvaW50cyhT
Y3JvbGxFdmVudEF4aXM6OlZlcnRpY2FsLCAqc25hcE9mZnNldHMsICpzbmFwT2Zmc2V0UmFuZ2Vz
KTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgdXBkYXRlU2Nyb2xsU25hcFBvaW50cyhTY3Jv
bGxFdmVudEF4aXM6OlZlcnRpY2FsLCAqc25hcE9mZnNldHMsIHsgfSk7CisgICAgfSBlbHNlCisg
ICAgICAgIHVwZGF0ZVNjcm9sbFNuYXBQb2ludHMoU2Nyb2xsRXZlbnRBeGlzOjpWZXJ0aWNhbCwg
eyB9LCB7IH0pOwogfQogCi12b2lkIFNjcm9sbENvbnRyb2xsZXI6OnVwZGF0ZVNjcm9sbFNuYXBQ
b2ludHMoU2Nyb2xsRXZlbnRBeGlzIGF4aXMsIGNvbnN0IFZlY3RvcjxMYXlvdXRVbml0PiYgc25h
cFBvaW50cykKK3ZvaWQgU2Nyb2xsQ29udHJvbGxlcjo6dXBkYXRlU2Nyb2xsU25hcFBvaW50cyhT
Y3JvbGxFdmVudEF4aXMgYXhpcywgY29uc3QgVmVjdG9yPExheW91dFVuaXQ+JiBzbmFwUG9pbnRz
LCBjb25zdCBWZWN0b3I8U2Nyb2xsT2Zmc2V0UmFuZ2U8TGF5b3V0VW5pdD4+JiBzbmFwUmFuZ2Vz
KQogewogICAgIGlmICghbV9zY3JvbGxTbmFwU3RhdGUpIHsKICAgICAgICAgaWYgKHNuYXBQb2lu
dHMuaXNFbXB0eSgpKQpAQCAtNjA0LDcgKzYxMSw3IEBAIHZvaWQgU2Nyb2xsQ29udHJvbGxlcjo6
dXBkYXRlU2Nyb2xsU25hcFBvaW50cyhTY3JvbGxFdmVudEF4aXMgYXhpcywgY29uc3QgVmVjdG9y
CiAgICAgaWYgKHNuYXBQb2ludHMuaXNFbXB0eSgpICYmIG1fc2Nyb2xsU25hcFN0YXRlLT5zbmFw
T2Zmc2V0c0ZvckF4aXMob3RoZXJTY3JvbGxFdmVudEF4aXMoYXhpcykpLmlzRW1wdHkoKSkKICAg
ICAgICAgbV9zY3JvbGxTbmFwU3RhdGUgPSBudWxscHRyOwogICAgIGVsc2UKLSAgICAgICAgbV9z
Y3JvbGxTbmFwU3RhdGUtPnNldFNuYXBPZmZzZXRzRm9yQXhpcyhheGlzLCBzbmFwUG9pbnRzKTsK
KyAgICAgICAgbV9zY3JvbGxTbmFwU3RhdGUtPnNldFNuYXBPZmZzZXRzQW5kUG9zaXRpb25SYW5n
ZXNGb3JBeGlzKGF4aXMsIHNuYXBQb2ludHMsIHNuYXBSYW5nZXMpOwogfQogCiB2b2lkIFNjcm9s
bENvbnRyb2xsZXI6OnN0YXJ0U2Nyb2xsU25hcFRpbWVyKCkKQEAgLTY4MCw3ICs2ODcsNyBAQCB2
b2lkIFNjcm9sbENvbnRyb2xsZXI6OnNldE5lYXJlc3RTY3JvbGxTbmFwSW5kZXhGb3JBeGlzQW5k
T2Zmc2V0KFNjcm9sbEV2ZW50QXhpcwogICAgIExheW91dFVuaXQgY2xhbXBlZE9mZnNldCA9IHN0
ZDo6bWluKHN0ZDo6bWF4KExheW91dFVuaXQob2Zmc2V0IC8gc2NhbGVGYWN0b3IpLCBzbmFwT2Zm
c2V0cy5maXJzdCgpKSwgc25hcE9mZnNldHMubGFzdCgpKTsKIAogICAgIHVuc2lnbmVkIGFjdGl2
ZUluZGV4ID0gMDsKLSAgICBjbG9zZXN0U25hcE9mZnNldDxMYXlvdXRVbml0LCBmbG9hdD4oc25h
cFN0YXRlLnNuYXBPZmZzZXRzRm9yQXhpcyhheGlzKSwgY2xhbXBlZE9mZnNldCwgMCwgYWN0aXZl
SW5kZXgpOworICAgIGNsb3Nlc3RTbmFwT2Zmc2V0KHNuYXBTdGF0ZS5zbmFwT2Zmc2V0c0ZvckF4
aXMoYXhpcyksIHNuYXBTdGF0ZS5zbmFwT2Zmc2V0UmFuZ2VzRm9yQXhpcyhheGlzKSwgY2xhbXBl
ZE9mZnNldCwgMCwgYWN0aXZlSW5kZXgpOwogCiAgICAgaWYgKGFjdGl2ZUluZGV4ID09IGFjdGl2
ZVNjcm9sbFNuYXBJbmRleEZvckF4aXMoYXhpcykpCiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1Njcm9sbFNuYXBBbmltYXRvclN0YXRl
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9TY3JvbGxTbmFwQW5pbWF0b3JTdGF0
ZS5oCmluZGV4IDhmMjZlNzJkMjViNGRjODg4MWZlMDA2NmRmZjZjNDVhODljM2Y3ZTguLjE1MGRi
MGJiYzBkOTFlOTQwYzBhOGIyZTE2NTkxZmEzZmI2NDQyYmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2NvY29hL1Njcm9sbFNuYXBBbmltYXRvclN0YXRlLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvU2Nyb2xsU25hcEFuaW1hdG9yU3RhdGUuaApAQCAt
MzMsNiArMzMsNyBAQAogI2luY2x1ZGUgIkZsb2F0U2l6ZS5oIgogI2luY2x1ZGUgIkxheW91dFBv
aW50LmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1XaGVlbEV2ZW50LmgiCisjaW5jbHVkZSAiU2Nyb2xs
U25hcE9mZnNldHNJbmZvLmgiCiAjaW5jbHVkZSAiU2Nyb2xsVHlwZXMuaCIKICNpbmNsdWRlICJT
Y3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3IuaCIKICNpbmNsdWRlIDx3dGYvTW9ub3RvbmljVGlt
ZS5oPgpAQCAtNDgsMTcgKzQ5LDI1IEBAIGVudW0gY2xhc3MgU2Nyb2xsU25hcFN0YXRlIHsKIAog
Y2xhc3MgU2Nyb2xsU25hcEFuaW1hdG9yU3RhdGUgewogcHVibGljOgotICAgIFZlY3RvcjxMYXlv
dXRVbml0PiBzbmFwT2Zmc2V0c0ZvckF4aXMoU2Nyb2xsRXZlbnRBeGlzIGF4aXMpIGNvbnN0Cisg
ICAgY29uc3QgVmVjdG9yPExheW91dFVuaXQ+JiBzbmFwT2Zmc2V0c0ZvckF4aXMoU2Nyb2xsRXZl
bnRBeGlzIGF4aXMpIGNvbnN0CiAgICAgewogICAgICAgICByZXR1cm4gYXhpcyA9PSBTY3JvbGxF
dmVudEF4aXM6Okhvcml6b250YWwgPyBtX3NuYXBPZmZzZXRzWCA6IG1fc25hcE9mZnNldHNZOwog
ICAgIH0KIAotICAgIHZvaWQgc2V0U25hcE9mZnNldHNGb3JBeGlzKFNjcm9sbEV2ZW50QXhpcyBh
eGlzLCBjb25zdCBWZWN0b3I8TGF5b3V0VW5pdD4mIHNuYXBPZmZzZXRzKQorICAgIGNvbnN0IFZl
Y3RvcjxTY3JvbGxPZmZzZXRSYW5nZTxMYXlvdXRVbml0Pj4mIHNuYXBPZmZzZXRSYW5nZXNGb3JB
eGlzKFNjcm9sbEV2ZW50QXhpcyBheGlzKSBjb25zdAogICAgIHsKLSAgICAgICAgaWYgKGF4aXMg
PT0gU2Nyb2xsRXZlbnRBeGlzOjpIb3Jpem9udGFsKQorICAgICAgICByZXR1cm4gYXhpcyA9PSBT
Y3JvbGxFdmVudEF4aXM6Okhvcml6b250YWwgPyBtX3NuYXBPZmZzZXRSYW5nZXNYIDogbV9zbmFw
T2Zmc2V0UmFuZ2VzWTsKKyAgICB9CisKKyAgICB2b2lkIHNldFNuYXBPZmZzZXRzQW5kUG9zaXRp
b25SYW5nZXNGb3JBeGlzKFNjcm9sbEV2ZW50QXhpcyBheGlzLCBjb25zdCBWZWN0b3I8TGF5b3V0
VW5pdD4mIHNuYXBPZmZzZXRzLCBjb25zdCBWZWN0b3I8U2Nyb2xsT2Zmc2V0UmFuZ2U8TGF5b3V0
VW5pdD4+JiBzbmFwT2Zmc2V0UmFuZ2VzKQorICAgIHsKKyAgICAgICAgaWYgKGF4aXMgPT0gU2Ny
b2xsRXZlbnRBeGlzOjpIb3Jpem9udGFsKSB7CiAgICAgICAgICAgICBtX3NuYXBPZmZzZXRzWCA9
IHNuYXBPZmZzZXRzOwotICAgICAgICBlbHNlCisgICAgICAgICAgICBtX3NuYXBPZmZzZXRSYW5n
ZXNYID0gc25hcE9mZnNldFJhbmdlczsKKyAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIG1f
c25hcE9mZnNldHNZID0gc25hcE9mZnNldHM7CisgICAgICAgICAgICBtX3NuYXBPZmZzZXRSYW5n
ZXNZID0gc25hcE9mZnNldFJhbmdlczsKKyAgICAgICAgfQogICAgIH0KIAogICAgIFNjcm9sbFNu
YXBTdGF0ZSBjdXJyZW50U3RhdGUoKSBjb25zdCB7IHJldHVybiBtX2N1cnJlbnRTdGF0ZTsgfQpA
QCAtODUsMTUgKzk0LDE3IEBAIHB1YmxpYzoKICAgICB2b2lkIHRyYW5zaXRpb25Ub0Rlc3RpbmF0
aW9uUmVhY2hlZFN0YXRlKCk7CiAKIHByaXZhdGU6Ci0gICAgZmxvYXQgdGFyZ2V0T2Zmc2V0Rm9y
U3RhcnRPZmZzZXQoU2Nyb2xsRXZlbnRBeGlzLCBmbG9hdCBtYXhTY3JvbGxPZmZzZXQsIGZsb2F0
IHN0YXJ0T2Zmc2V0LCBmbG9hdCBwYWdlU2NhbGUsIGZsb2F0IGRlbHRhLCB1bnNpZ25lZCYgb3V0
QWN0aXZlU25hcEluZGV4KSBjb25zdDsKKyAgICBmbG9hdCB0YXJnZXRPZmZzZXRGb3JTdGFydE9m
ZnNldChjb25zdCBWZWN0b3I8TGF5b3V0VW5pdD4mIHNuYXBPZmZzZXRzLCBjb25zdCBWZWN0b3I8
U2Nyb2xsT2Zmc2V0UmFuZ2U8TGF5b3V0VW5pdD4+JiBzbmFwT2Zmc2V0UmFuZ2VzLCBmbG9hdCBt
YXhTY3JvbGxPZmZzZXQsIGZsb2F0IHN0YXJ0T2Zmc2V0LCBmbG9hdCBwcmVkaWN0ZWRPZmZzZXQs
IGZsb2F0IHBhZ2VTY2FsZSwgZmxvYXQgZGVsdGEsIHVuc2lnbmVkJiBvdXRBY3RpdmVTbmFwSW5k
ZXgpIGNvbnN0OwogICAgIHZvaWQgdGVhcmRvd25BbmltYXRpb25Gb3JTdGF0ZShTY3JvbGxTbmFw
U3RhdGUpOwogICAgIHZvaWQgc2V0dXBBbmltYXRpb25Gb3JTdGF0ZShTY3JvbGxTbmFwU3RhdGUs
IGNvbnN0IEZsb2F0U2l6ZSYgY29udGVudFNpemUsIGNvbnN0IEZsb2F0U2l6ZSYgdmlld3BvcnRT
aXplLCBmbG9hdCBwYWdlU2NhbGUsIGNvbnN0IEZsb2F0UG9pbnQmIGluaXRpYWxPZmZzZXQsIGNv
bnN0IEZsb2F0U2l6ZSYgaW5pdGlhbFZlbG9jaXR5LCBjb25zdCBGbG9hdFNpemUmIGluaXRpYWxE
ZWx0YSk7CiAKICAgICBTY3JvbGxTbmFwU3RhdGUgbV9jdXJyZW50U3RhdGUgeyBTY3JvbGxTbmFw
U3RhdGU6OlVzZXJJbnRlcmFjdGlvbiB9OwogCiAgICAgVmVjdG9yPExheW91dFVuaXQ+IG1fc25h
cE9mZnNldHNYOworICAgIFZlY3RvcjxTY3JvbGxPZmZzZXRSYW5nZTxMYXlvdXRVbml0Pj4gbV9z
bmFwT2Zmc2V0UmFuZ2VzWDsKICAgICB1bnNpZ25lZCBtX2FjdGl2ZVNuYXBJbmRleFggeyAwIH07
CiAgICAgVmVjdG9yPExheW91dFVuaXQ+IG1fc25hcE9mZnNldHNZOworICAgIFZlY3RvcjxTY3Jv
bGxPZmZzZXRSYW5nZTxMYXlvdXRVbml0Pj4gbV9zbmFwT2Zmc2V0UmFuZ2VzWTsKICAgICB1bnNp
Z25lZCBtX2FjdGl2ZVNuYXBJbmRleFkgeyAwIH07CiAKICAgICBNb25vdG9uaWNUaW1lIG1fc3Rh
cnRUaW1lOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvU2Nyb2xs
U25hcEFuaW1hdG9yU3RhdGUubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9TY3Jv
bGxTbmFwQW5pbWF0b3JTdGF0ZS5tbQppbmRleCA3ZTIwMTgxNjc1ZjA2MTk0ZTBiOTMxMGFhYzg1
NTc5MjIwMGFjNjY2Li5lNTQ5NDA5M2IxZTQyMTQ2MDZjNDRjZDczNDQ1ZTIxOGUxMjliYTAyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9TY3JvbGxTbmFwQW5pbWF0
b3JTdGF0ZS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9TY3JvbGxTbmFw
QW5pbWF0b3JTdGF0ZS5tbQpAQCAtMzEsMTIgKzMxLDYgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCi1zdGF0aWMgY29uc3QgZmxvYXQgaW5lcnRpYWxTY3JvbGxQcmVkaWN0aW9uRmFjdG9yID0g
MTA7Ci1zdGF0aWMgaW5saW5lIGZsb2F0IHByb2plY3RlZEluZXJ0aWFsU2Nyb2xsRGlzdGFuY2Uo
ZmxvYXQgaW5pdGlhbFdoZWVsRGVsdGEpCi17Ci0gICAgcmV0dXJuIGluZXJ0aWFsU2Nyb2xsUHJl
ZGljdGlvbkZhY3RvciAqIGluaXRpYWxXaGVlbERlbHRhOwotfQotCiB2b2lkIFNjcm9sbFNuYXBB
bmltYXRvclN0YXRlOjp0cmFuc2l0aW9uVG9TbmFwQW5pbWF0aW9uU3RhdGUoY29uc3QgRmxvYXRT
aXplJiBjb250ZW50U2l6ZSwgY29uc3QgRmxvYXRTaXplJiB2aWV3cG9ydFNpemUsIGZsb2F0IHBh
Z2VTY2FsZSwgY29uc3QgRmxvYXRQb2ludCYgaW5pdGlhbE9mZnNldCkKIHsKICAgICBzZXR1cEFu
aW1hdGlvbkZvclN0YXRlKFNjcm9sbFNuYXBTdGF0ZTo6U25hcHBpbmcsIGNvbnRlbnRTaXplLCB2
aWV3cG9ydFNpemUsIHBhZ2VTY2FsZSwgaW5pdGlhbE9mZnNldCwgeyB9LCB7IH0pOwpAQCAtNTMs
OSArNDcsMTEgQEAgdm9pZCBTY3JvbGxTbmFwQW5pbWF0b3JTdGF0ZTo6c2V0dXBBbmltYXRpb25G
b3JTdGF0ZShTY3JvbGxTbmFwU3RhdGUgc3RhdGUsIGNvbnMKICAgICBpZiAobV9jdXJyZW50U3Rh
dGUgPT0gc3RhdGUpCiAgICAgICAgIHJldHVybjsKIAotICAgIGZsb2F0IHRhcmdldE9mZnNldFgg
PSB0YXJnZXRPZmZzZXRGb3JTdGFydE9mZnNldChTY3JvbGxFdmVudEF4aXM6Okhvcml6b250YWws
IGNvbnRlbnRTaXplLndpZHRoKCkgLSB2aWV3cG9ydFNpemUud2lkdGgoKSwgaW5pdGlhbE9mZnNl
dC54KCksIHBhZ2VTY2FsZSwgaW5pdGlhbERlbHRhLndpZHRoKCksIG1fYWN0aXZlU25hcEluZGV4
WCk7Ci0gICAgZmxvYXQgdGFyZ2V0T2Zmc2V0WSA9IHRhcmdldE9mZnNldEZvclN0YXJ0T2Zmc2V0
KFNjcm9sbEV2ZW50QXhpczo6VmVydGljYWwsIGNvbnRlbnRTaXplLmhlaWdodCgpIC0gdmlld3Bv
cnRTaXplLmhlaWdodCgpLCBpbml0aWFsT2Zmc2V0LnkoKSwgcGFnZVNjYWxlLCBpbml0aWFsRGVs
dGEuaGVpZ2h0KCksIG1fYWN0aXZlU25hcEluZGV4WSk7Ci0gICAgbV9tb21lbnR1bUNhbGN1bGF0
b3IgPSBTY3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3I6OmNyZWF0ZSh2aWV3cG9ydFNpemUsIGNv
bnRlbnRTaXplLCBpbml0aWFsT2Zmc2V0LCBGbG9hdFBvaW50KHRhcmdldE9mZnNldFgsIHRhcmdl
dE9mZnNldFkpLCBpbml0aWFsRGVsdGEsIGluaXRpYWxWZWxvY2l0eSk7CisgICAgbV9tb21lbnR1
bUNhbGN1bGF0b3IgPSBTY3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3I6OmNyZWF0ZSh2aWV3cG9y
dFNpemUsIGNvbnRlbnRTaXplLCBpbml0aWFsT2Zmc2V0LCBpbml0aWFsRGVsdGEsIGluaXRpYWxW
ZWxvY2l0eSk7CisgICAgYXV0byBwcmVkaWN0ZWRTY3JvbGxUYXJnZXQgPSBtX21vbWVudHVtQ2Fs
Y3VsYXRvci0+cHJlZGljdGVkRGVzdGluYXRpb25PZmZzZXQoKTsKKyAgICBmbG9hdCB0YXJnZXRP
ZmZzZXRYID0gdGFyZ2V0T2Zmc2V0Rm9yU3RhcnRPZmZzZXQobV9zbmFwT2Zmc2V0c1gsIG1fc25h
cE9mZnNldFJhbmdlc1gsIGNvbnRlbnRTaXplLndpZHRoKCkgLSB2aWV3cG9ydFNpemUud2lkdGgo
KSwgaW5pdGlhbE9mZnNldC54KCksIHByZWRpY3RlZFNjcm9sbFRhcmdldC53aWR0aCgpLCBwYWdl
U2NhbGUsIGluaXRpYWxEZWx0YS53aWR0aCgpLCBtX2FjdGl2ZVNuYXBJbmRleFgpOworICAgIGZs
b2F0IHRhcmdldE9mZnNldFkgPSB0YXJnZXRPZmZzZXRGb3JTdGFydE9mZnNldChtX3NuYXBPZmZz
ZXRzWSwgbV9zbmFwT2Zmc2V0UmFuZ2VzWSwgY29udGVudFNpemUuaGVpZ2h0KCkgLSB2aWV3cG9y
dFNpemUuaGVpZ2h0KCksIGluaXRpYWxPZmZzZXQueSgpLCBwcmVkaWN0ZWRTY3JvbGxUYXJnZXQu
aGVpZ2h0KCksIHBhZ2VTY2FsZSwgaW5pdGlhbERlbHRhLmhlaWdodCgpLCBtX2FjdGl2ZVNuYXBJ
bmRleFkpOworICAgIG1fbW9tZW50dW1DYWxjdWxhdG9yLT5zZXRSZXRhcmdldGVkU2Nyb2xsT2Zm
c2V0KHsgdGFyZ2V0T2Zmc2V0WCwgdGFyZ2V0T2Zmc2V0WSB9KTsKICAgICBtX3N0YXJ0VGltZSA9
IE1vbm90b25pY1RpbWU6Om5vdygpOwogICAgIG1fY3VycmVudFN0YXRlID0gc3RhdGU7CiB9CkBA
IC05MywxOCArODksMTcgQEAgRmxvYXRQb2ludCBTY3JvbGxTbmFwQW5pbWF0b3JTdGF0ZTo6Y3Vy
cmVudEFuaW1hdGVkU2Nyb2xsT2Zmc2V0KGJvb2wmIGlzQW5pbWF0aW8KICAgICByZXR1cm4gbV9t
b21lbnR1bUNhbGN1bGF0b3ItPnNjcm9sbE9mZnNldEFmdGVyRWxhcHNlZFRpbWUoZWxhcHNlZFRp
bWUpOwogfQogCi1mbG9hdCBTY3JvbGxTbmFwQW5pbWF0b3JTdGF0ZTo6dGFyZ2V0T2Zmc2V0Rm9y
U3RhcnRPZmZzZXQoU2Nyb2xsRXZlbnRBeGlzIGF4aXMsIGZsb2F0IG1heFNjcm9sbE9mZnNldCwg
ZmxvYXQgc3RhcnRPZmZzZXQsIGZsb2F0IHBhZ2VTY2FsZSwgZmxvYXQgaW5pdGlhbERlbHRhLCB1
bnNpZ25lZCYgb3V0QWN0aXZlU25hcEluZGV4KSBjb25zdAorZmxvYXQgU2Nyb2xsU25hcEFuaW1h
dG9yU3RhdGU6OnRhcmdldE9mZnNldEZvclN0YXJ0T2Zmc2V0KGNvbnN0IFZlY3RvcjxMYXlvdXRV
bml0PiYgc25hcE9mZnNldHMsIGNvbnN0IFZlY3RvcjxTY3JvbGxPZmZzZXRSYW5nZTxMYXlvdXRV
bml0Pj4mIHNuYXBPZmZzZXRSYW5nZXMsIGZsb2F0IG1heFNjcm9sbE9mZnNldCwgZmxvYXQgc3Rh
cnRPZmZzZXQsIGZsb2F0IHByZWRpY3RlZE9mZnNldCwgZmxvYXQgcGFnZVNjYWxlLCBmbG9hdCBp
bml0aWFsRGVsdGEsIHVuc2lnbmVkJiBvdXRBY3RpdmVTbmFwSW5kZXgpIGNvbnN0CiB7Ci0gICAg
YXV0byBzbmFwT2Zmc2V0cyA9IHNuYXBPZmZzZXRzRm9yQXhpcyhheGlzKTsKLSAgICBpZiAoIXNu
YXBPZmZzZXRzLnNpemUoKSkgewotICAgICAgICBvdXRBY3RpdmVTbmFwSW5kZXggPSAwOworICAg
IGlmIChzbmFwT2Zmc2V0cy5pc0VtcHR5KCkpIHsKKyAgICAgICAgb3V0QWN0aXZlU25hcEluZGV4
ID0gaW52YWxpZFNuYXBPZmZzZXRJbmRleDsKICAgICAgICAgcmV0dXJuIGNsYW1wVG88ZmxvYXQ+
KHN0YXJ0T2Zmc2V0LCAwLCBtYXhTY3JvbGxPZmZzZXQpOwogICAgIH0KIAotICAgIGZsb2F0IHBy
b2plY3RlZERlc3RpbmF0aW9uID0gKHN0YXJ0T2Zmc2V0ICsgcHJvamVjdGVkSW5lcnRpYWxTY3Jv
bGxEaXN0YW5jZShpbml0aWFsRGVsdGEpKSAvIHBhZ2VTY2FsZTsKLSAgICBmbG9hdCB0YXJnZXRP
ZmZzZXQgPSBjbG9zZXN0U25hcE9mZnNldDxMYXlvdXRVbml0LCBmbG9hdD4oc25hcE9mZnNldHMs
IHByb2plY3RlZERlc3RpbmF0aW9uLCBpbml0aWFsRGVsdGEsIG91dEFjdGl2ZVNuYXBJbmRleCk7
Ci0gICAgdGFyZ2V0T2Zmc2V0ID0gY2xhbXBUbzxmbG9hdD4odGFyZ2V0T2Zmc2V0LCBzbmFwT2Zm
c2V0cy5maXJzdCgpLCBzbmFwT2Zmc2V0cy5sYXN0KCkpOwotICAgIHRhcmdldE9mZnNldCA9IGNs
YW1wVG88ZmxvYXQ+KHRhcmdldE9mZnNldCwgMCwgbWF4U2Nyb2xsT2Zmc2V0KTsKKyAgICBmbG9h
dCB0YXJnZXRPZmZzZXQgPSBjbG9zZXN0U25hcE9mZnNldChzbmFwT2Zmc2V0cywgc25hcE9mZnNl
dFJhbmdlcywgcHJlZGljdGVkT2Zmc2V0IC8gcGFnZVNjYWxlLCBpbml0aWFsRGVsdGEsIG91dEFj
dGl2ZVNuYXBJbmRleCk7CisgICAgZmxvYXQgbWluaW11bVRhcmdldE9mZnNldCA9IHN0ZDo6bWF4
PGZsb2F0PigwLCBzbmFwT2Zmc2V0cy5maXJzdCgpKTsKKyAgICBmbG9hdCBtYXhpbXVtVGFyZ2V0
T2Zmc2V0ID0gc3RkOjptaW48ZmxvYXQ+KG1heFNjcm9sbE9mZnNldCwgc25hcE9mZnNldHMubGFz
dCgpKTsKKyAgICB0YXJnZXRPZmZzZXQgPSBjbGFtcFRvPGZsb2F0Pih0YXJnZXRPZmZzZXQsIG1p
bmltdW1UYXJnZXRPZmZzZXQsIG1heGltdW1UYXJnZXRPZmZzZXQpOwogICAgIHJldHVybiBwYWdl
U2NhbGUgKiB0YXJnZXRPZmZzZXQ7CiB9CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuY3BwCmluZGV4IDIxODYzOTBhNzM2MTBhNTgy
ZDczOWU0ODJlYjcyMmFkYzYzYTNhYjMuLmU3ZTE4Y2E5ZGFkYjgzOWQ5YjYyNzYzZDRmNGZmYzZl
M2JmNDBmMjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXll
ckNvbXBvc2l0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXll
ckNvbXBvc2l0b3IuY3BwCkBAIC0zOTA3LDYgKzM5MDcsMTAgQEAgdm9pZCBSZW5kZXJMYXllckNv
bXBvc2l0b3I6OnVwZGF0ZVNjcm9sbENvb3JkaW5hdGVkTGF5ZXIoUmVuZGVyTGF5ZXImIGxheWVy
LCBMYXkKICAgICAgICAgICAgICAgICBzY3JvbGxpbmdHZW9tZXRyeS5ob3Jpem9udGFsU25hcE9m
ZnNldHMgPSAqb2Zmc2V0czsKICAgICAgICAgICAgIGlmIChjb25zdCBWZWN0b3I8TGF5b3V0VW5p
dD4qIG9mZnNldHMgPSBsYXllci52ZXJ0aWNhbFNuYXBPZmZzZXRzKCkpCiAgICAgICAgICAgICAg
ICAgc2Nyb2xsaW5nR2VvbWV0cnkudmVydGljYWxTbmFwT2Zmc2V0cyA9ICpvZmZzZXRzOworICAg
ICAgICAgICAgaWYgKGNvbnN0IFZlY3RvcjxTY3JvbGxPZmZzZXRSYW5nZTxMYXlvdXRVbml0Pj4q
IHJhbmdlcyA9IGxheWVyLmhvcml6b250YWxTbmFwT2Zmc2V0UmFuZ2VzKCkpCisgICAgICAgICAg
ICAgICAgc2Nyb2xsaW5nR2VvbWV0cnkuaG9yaXpvbnRhbFNuYXBPZmZzZXRSYW5nZXMgPSAqcmFu
Z2VzOworICAgICAgICAgICAgaWYgKGNvbnN0IFZlY3RvcjxTY3JvbGxPZmZzZXRSYW5nZTxMYXlv
dXRVbml0Pj4qIHJhbmdlcyA9IGxheWVyLnZlcnRpY2FsU25hcE9mZnNldFJhbmdlcygpKQorICAg
ICAgICAgICAgICAgIHNjcm9sbGluZ0dlb21ldHJ5LnZlcnRpY2FsU25hcE9mZnNldFJhbmdlcyA9
ICpyYW5nZXM7CiAgICAgICAgICAgICBzY3JvbGxpbmdHZW9tZXRyeS5jdXJyZW50SG9yaXpvbnRh
bFNuYXBQb2ludEluZGV4ID0gbGF5ZXIuY3VycmVudEhvcml6b250YWxTbmFwUG9pbnRJbmRleCgp
OwogICAgICAgICAgICAgc2Nyb2xsaW5nR2VvbWV0cnkuY3VycmVudFZlcnRpY2FsU25hcFBvaW50
SW5kZXggPSBsYXllci5jdXJyZW50VmVydGljYWxTbmFwUG9pbnRJbmRleCgpOwogI2VuZGlmCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKaW5kZXggMDNkY2JmMjA0M2ZkMjlhN2I5OWRl
ODMxOTY1N2UyNTUzMjEzM2EyYS4uOGU4MDIyZjMxMGM4ZDg0ZDA0NmU1NmUyMTBhMzU1ODFhNGZj
MWY2MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcApAQCAtMTE3LDYgKzExNyw3
IEBACiAjaW5jbHVkZSAiU2NoZW1lUmVnaXN0cnkuaCIKICNpbmNsdWRlICJTY3JpcHRlZEFuaW1h
dGlvbkNvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJTY3JvbGxpbmdDb29yZGluYXRvci5oIgorI2lu
Y2x1ZGUgIlNjcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvci5oIgogI2luY2x1ZGUgIlNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZS5oIgogI2luY2x1ZGUgIlNldHRpbmdzLmgiCiAjaW5jbHVkZSAiU2hhZG93
Um9vdC5oIgpAQCAtMzM0MCw2ICszMzQxLDExIEBAIHN0YXRpYyB2b2lkIGFwcGVuZE9mZnNldHMo
U3RyaW5nQnVpbGRlciYgYnVpbGRlciwgY29uc3QgVmVjdG9yPExheW91dFVuaXQ+JiBzbmFwCiAg
ICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCIgfSIpOwogfQogICAgIAordm9pZCBJbnRlcm5hbHM6
OnNldFBsYXRmb3JtTW9tZW50dW1TY3JvbGxpbmdQcmVkaWN0aW9uRW5hYmxlZChib29sIGVuYWJs
ZWQpCit7CisgICAgU2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yOjpzZXRQbGF0Zm9ybU1vbWVu
dHVtU2Nyb2xsaW5nUHJlZGljdGlvbkVuYWJsZWQoZW5hYmxlZCk7Cit9CisKIEV4Y2VwdGlvbk9y
PFN0cmluZz4gSW50ZXJuYWxzOjpzY3JvbGxTbmFwT2Zmc2V0cyhFbGVtZW50JiBlbGVtZW50KQog
ewogICAgIGlmICghZWxlbWVudC5yZW5kZXJCb3goKSkKQEAgLTMzNjcsMTcgKzMzNzMsMjEgQEAg
RXhjZXB0aW9uT3I8U3RyaW5nPiBJbnRlcm5hbHM6OnNjcm9sbFNuYXBPZmZzZXRzKEVsZW1lbnQm
IGVsZW1lbnQpCiAgICAgCiAgICAgU3RyaW5nQnVpbGRlciByZXN1bHQ7CiAKLSAgICBpZiAoc2Ny
b2xsYWJsZUFyZWEtPmhvcml6b250YWxTbmFwT2Zmc2V0cygpKSB7Ci0gICAgICAgIHJlc3VsdC5h
cHBlbmRMaXRlcmFsKCJob3Jpem9udGFsID0gIik7Ci0gICAgICAgIGFwcGVuZE9mZnNldHMocmVz
dWx0LCAqc2Nyb2xsYWJsZUFyZWEtPmhvcml6b250YWxTbmFwT2Zmc2V0cygpKTsKKyAgICBpZiAo
YXV0byogb2Zmc2V0cyA9IHNjcm9sbGFibGVBcmVhLT5ob3Jpem9udGFsU25hcE9mZnNldHMoKSkg
eworICAgICAgICBpZiAob2Zmc2V0cy0+c2l6ZSgpKSB7CisgICAgICAgICAgICByZXN1bHQuYXBw
ZW5kTGl0ZXJhbCgiaG9yaXpvbnRhbCA9ICIpOworICAgICAgICAgICAgYXBwZW5kT2Zmc2V0cyhy
ZXN1bHQsICpvZmZzZXRzKTsKKyAgICAgICAgfQogICAgIH0KIAotICAgIGlmIChzY3JvbGxhYmxl
QXJlYS0+dmVydGljYWxTbmFwT2Zmc2V0cygpKSB7Ci0gICAgICAgIGlmIChyZXN1bHQubGVuZ3Ro
KCkpCi0gICAgICAgICAgICByZXN1bHQuYXBwZW5kTGl0ZXJhbCgiLCAiKTsKKyAgICBpZiAoYXV0
byogb2Zmc2V0cyA9IHNjcm9sbGFibGVBcmVhLT52ZXJ0aWNhbFNuYXBPZmZzZXRzKCkpIHsKKyAg
ICAgICAgaWYgKG9mZnNldHMtPnNpemUoKSkgeworICAgICAgICAgICAgaWYgKHJlc3VsdC5sZW5n
dGgoKSkKKyAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kTGl0ZXJhbCgiLCAiKTsKIAotICAg
ICAgICByZXN1bHQuYXBwZW5kTGl0ZXJhbCgidmVydGljYWwgPSAiKTsKLSAgICAgICAgYXBwZW5k
T2Zmc2V0cyhyZXN1bHQsICpzY3JvbGxhYmxlQXJlYS0+dmVydGljYWxTbmFwT2Zmc2V0cygpKTsK
KyAgICAgICAgICAgIHJlc3VsdC5hcHBlbmRMaXRlcmFsKCJ2ZXJ0aWNhbCA9ICIpOworICAgICAg
ICAgICAgYXBwZW5kT2Zmc2V0cyhyZXN1bHQsICpvZmZzZXRzKTsKKyAgICAgICAgfQogICAgIH0K
IAogICAgIHJldHVybiByZXN1bHQudG9TdHJpbmcoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmggYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFs
cy5oCmluZGV4IGIzYWZlMDU3MjBhNjM5YTMwYmI5M2E3MGEzNTE2MGQ1Y2Y4ZGI1YTYuLjgzNjFm
NzNkYjc0YTQzYmMxOTc0ZjM3YmNiNDc4N2RmY2FlNGRlNGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9J
bnRlcm5hbHMuaApAQCAtNDc5LDYgKzQ3OSw3IEBAIHB1YmxpYzoKIAogI2lmIEVOQUJMRShDU1Nf
U0NST0xMX1NOQVApCiAgICAgRXhjZXB0aW9uT3I8U3RyaW5nPiBzY3JvbGxTbmFwT2Zmc2V0cyhF
bGVtZW50Jik7CisgICAgdm9pZCBzZXRQbGF0Zm9ybU1vbWVudHVtU2Nyb2xsaW5nUHJlZGljdGlv
bkVuYWJsZWQoYm9vbCk7CiAjZW5kaWYKIAogICAgIEV4Y2VwdGlvbk9yPFN0cmluZz4gcGF0aFN0
cmluZ1dpdGhTaHJpbmtXcmFwcGVkUmVjdHMoY29uc3QgVmVjdG9yPGRvdWJsZT4mIHJlY3RDb21w
b25lbnRzLCBkb3VibGUgcmFkaXVzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3Rp
bmcvSW50ZXJuYWxzLmlkbCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbApp
bmRleCA4NDFhODdjNzAyZTc4NzIyODRkMmViNDhhZmRkNjEwYjcwMmVlODg3Li4wZDcxYjhkMjgw
NjRmMDdjZmJkODg2Njc1MzYzMjUzNTVkOTQwN2IzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS90ZXN0aW5nL0ludGVybmFscy5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRl
cm5hbHMuaWRsCkBAIC00NTYsNiArNDU2LDcgQEAgZW51bSBFdmVudFRocm90dGxpbmdCZWhhdmlv
ciB7CiAKICNpZiBkZWZpbmVkKEVOQUJMRV9DU1NfU0NST0xMX1NOQVApICYmIEVOQUJMRV9DU1Nf
U0NST0xMX1NOQVAKICAgICBbTWF5VGhyb3dFeGNlcHRpb25dIERPTVN0cmluZyBzY3JvbGxTbmFw
T2Zmc2V0cyhFbGVtZW50IGVsZW1lbnQpOworICAgIHZvaWQgc2V0UGxhdGZvcm1Nb21lbnR1bVNj
cm9sbGluZ1ByZWRpY3Rpb25FbmFibGVkKGJvb2xlYW4gZW5hYmxlZCk7CiAjZW5kaWYKIAogICAg
IFtNYXlUaHJvd0V4Y2VwdGlvbl0gRE9NU3RyaW5nIHBhdGhTdHJpbmdXaXRoU2hyaW5rV3JhcHBl
ZFJlY3RzKHNlcXVlbmNlPGRvdWJsZT4gcmVjdENvbXBvbmVudHMsIGRvdWJsZSByYWRpdXMpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1Njcm9sbGluZy9SZW1vdGVTY3JvbGxp
bmdDb29yZGluYXRvclRyYW5zYWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9TY3Jv
bGxpbmcvUmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3JUcmFuc2FjdGlvbi5jcHAKaW5kZXggYmJk
ZTc0Y2ZjMGU4OWY1ZmJiZTg2YTk2NWRhNjljZWU3ZTUwYWZlZS4uYTA1NTcwMWE0MTRjMTBjNzFi
MGY0ZjQ5OTE5NjA0NGYxYzc5YzVjYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVk
L1Njcm9sbGluZy9SZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvclRyYW5zYWN0aW9uLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvU2Nyb2xsaW5nL1JlbW90ZVNjcm9sbGluZ0Nvb3JkaW5h
dG9yVHJhbnNhY3Rpb24uY3BwCkBAIC0xMjcsNiArMTI3LDggQEAgdm9pZCBBcmd1bWVudENvZGVy
PFNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZT46OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBj
b25zdAogI2lmIEVOQUJMRShDU1NfU0NST0xMX1NOQVApCiAgICAgU0NST0xMSU5HX05PREVfRU5D
T0RFKFNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZTo6SG9yaXpvbnRhbFNuYXBPZmZzZXRzLCBo
b3Jpem9udGFsU25hcE9mZnNldHMpCiAgICAgU0NST0xMSU5HX05PREVfRU5DT0RFKFNjcm9sbGlu
Z1N0YXRlU2Nyb2xsaW5nTm9kZTo6VmVydGljYWxTbmFwT2Zmc2V0cywgdmVydGljYWxTbmFwT2Zm
c2V0cykKKyAgICBTQ1JPTExJTkdfTk9ERV9FTkNPREUoU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdO
b2RlOjpIb3Jpem9udGFsU25hcE9mZnNldFJhbmdlcywgaG9yaXpvbnRhbFNuYXBPZmZzZXRSYW5n
ZXMpCisgICAgU0NST0xMSU5HX05PREVfRU5DT0RFKFNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9k
ZTo6VmVydGljYWxTbmFwT2Zmc2V0UmFuZ2VzLCB2ZXJ0aWNhbFNuYXBPZmZzZXRSYW5nZXMpCiAg
ICAgU0NST0xMSU5HX05PREVfRU5DT0RFKFNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZTo6Q3Vy
cmVudEhvcml6b250YWxTbmFwT2Zmc2V0SW5kZXgsIGN1cnJlbnRIb3Jpem9udGFsU25hcFBvaW50
SW5kZXgpCiAgICAgU0NST0xMSU5HX05PREVfRU5DT0RFKFNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5n
Tm9kZTo6Q3VycmVudFZlcnRpY2FsU25hcE9mZnNldEluZGV4LCBjdXJyZW50VmVydGljYWxTbmFw
UG9pbnRJbmRleCkKICNlbmRpZgpAQCAtMjAyLDYgKzIwNCw4IEBAIGJvb2wgQXJndW1lbnRDb2Rl
cjxTY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGU+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2Rlciwg
U2Nyb2xsCiAjaWYgRU5BQkxFKENTU19TQ1JPTExfU05BUCkKICAgICBTQ1JPTExJTkdfTk9ERV9E
RUNPREUoU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlOjpIb3Jpem9udGFsU25hcE9mZnNldHMs
IFZlY3RvcjxmbG9hdD4sIHNldEhvcml6b250YWxTbmFwT2Zmc2V0cyk7CiAgICAgU0NST0xMSU5H
X05PREVfREVDT0RFKFNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZTo6VmVydGljYWxTbmFwT2Zm
c2V0cywgVmVjdG9yPGZsb2F0Piwgc2V0VmVydGljYWxTbmFwT2Zmc2V0cyk7CisgICAgU0NST0xM
SU5HX05PREVfREVDT0RFKFNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZTo6SG9yaXpvbnRhbFNu
YXBPZmZzZXRSYW5nZXMsIFZlY3RvcjxTY3JvbGxPZmZzZXRSYW5nZTxmbG9hdD4+LCBzZXRIb3Jp
em9udGFsU25hcE9mZnNldFJhbmdlcykKKyAgICBTQ1JPTExJTkdfTk9ERV9ERUNPREUoU2Nyb2xs
aW5nU3RhdGVTY3JvbGxpbmdOb2RlOjpWZXJ0aWNhbFNuYXBPZmZzZXRSYW5nZXMsIFZlY3RvcjxT
Y3JvbGxPZmZzZXRSYW5nZTxmbG9hdD4+LCBzZXRWZXJ0aWNhbFNuYXBPZmZzZXRSYW5nZXMpCiAg
ICAgU0NST0xMSU5HX05PREVfREVDT0RFKFNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZTo6Q3Vy
cmVudEhvcml6b250YWxTbmFwT2Zmc2V0SW5kZXgsIHVuc2lnbmVkLCBzZXRDdXJyZW50SG9yaXpv
bnRhbFNuYXBQb2ludEluZGV4KTsKICAgICBTQ1JPTExJTkdfTk9ERV9ERUNPREUoU2Nyb2xsaW5n
U3RhdGVTY3JvbGxpbmdOb2RlOjpDdXJyZW50VmVydGljYWxTbmFwT2Zmc2V0SW5kZXgsIHVuc2ln
bmVkLCBzZXRDdXJyZW50VmVydGljYWxTbmFwUG9pbnRJbmRleCk7CiAjZW5kaWYKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwIGIvU291
cmNlL1dlYktpdDIvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAKaW5kZXggMTQ3MDk5
N2EwNzJlMGE3YTI5Mzg1ZDE0ZTI2MmI3OTBlZTkxZjZkZi4uYzZhODU3MTk3ZDVlMWEyZWFjMDY3
MDkwNjg1NWIzMDg4OGJjNzQ5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1dl
YkNvcmVBcmd1bWVudENvZGVycy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkNv
cmVBcmd1bWVudENvZGVycy5jcHAKQEAgLTI0NzIsNCArMjQ3MiwyOSBAQCBib29sIEFyZ3VtZW50
Q29kZXI8SURCS2V5UGF0aD46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyLCBJREJLZXlQYXRoJiBr
ZXlQYXRoKQogfQogI2VuZGlmCiAKKyNpZiBFTkFCTEUoQ1NTX1NDUk9MTF9TTkFQKQorCit2b2lk
IEFyZ3VtZW50Q29kZXI8U2Nyb2xsT2Zmc2V0UmFuZ2U8ZmxvYXQ+Pjo6ZW5jb2RlKEVuY29kZXIm
IGVuY29kZXIsIGNvbnN0IFNjcm9sbE9mZnNldFJhbmdlPGZsb2F0PiYgcmFuZ2UpCit7CisgICAg
ZW5jb2RlciA8PCByYW5nZS5zdGFydDsKKyAgICBlbmNvZGVyIDw8IHJhbmdlLmVuZDsKK30KKwor
Ym9vbCBBcmd1bWVudENvZGVyPFNjcm9sbE9mZnNldFJhbmdlPGZsb2F0Pj46OmRlY29kZShEZWNv
ZGVyJiBkZWNvZGVyLCBTY3JvbGxPZmZzZXRSYW5nZTxmbG9hdD4mIHJhbmdlKQoreworICAgIGZs
b2F0IHN0YXJ0OworICAgIGlmICghZGVjb2Rlci5kZWNvZGUoc3RhcnQpKQorICAgICAgICByZXR1
cm4gZmFsc2U7CisKKyAgICBmbG9hdCBlbmQ7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShlbmQp
KQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICByYW5nZS5zdGFydCA9IHN0YXJ0OworICAg
IHJhbmdlLmVuZCA9IGVuZDsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworI2VuZGlmCisKIH0gLy8g
bmFtZXNwYWNlIElQQwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkNvcmVB
cmd1bWVudENvZGVycy5oIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENv
ZGVycy5oCmluZGV4IDQ4MTlmY2JjMDRhYzcxNjI1NjczYTg0NDY3Zjc0NTQyY2NiOTI5OTUuLjQ0
MzdjYWQyMjU3MWRhOTI4YTk5MWI4ZjdmZWIyYTI4NjVkMTVmZTYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgKQEAgLTMwLDYgKzMwLDcgQEAKICNp
bmNsdWRlIDxXZWJDb3JlL0ZyYW1lTG9hZGVyVHlwZXMuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0lu
ZGV4ZWREQi5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUGF5bWVudEhlYWRlcnMuaD4KKyNpbmNsdWRl
IDxXZWJDb3JlL1Njcm9sbFNuYXBPZmZzZXRzSW5mby5oPgogCiBuYW1lc3BhY2UgV1RGIHsKIGNs
YXNzIE1vbm90b25pY1RpbWU7CkBAIC01OTksNiArNjAwLDE1IEBAIHRlbXBsYXRlPD4gc3RydWN0
IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6SURCS2V5UGF0aD4gewogCiAjZW5kaWYKIAorI2lmIEVO
QUJMRShDU1NfU0NST0xMX1NOQVApCisKK3RlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8
V2ViQ29yZTo6U2Nyb2xsT2Zmc2V0UmFuZ2U8ZmxvYXQ+PiB7CisgICAgc3RhdGljIHZvaWQgZW5j
b2RlKEVuY29kZXImLCBjb25zdCBXZWJDb3JlOjpTY3JvbGxPZmZzZXRSYW5nZTxmbG9hdD4mKTsK
KyAgICBzdGF0aWMgYm9vbCBkZWNvZGUoRGVjb2RlciYsIFdlYkNvcmU6OlNjcm9sbE9mZnNldFJh
bmdlPGZsb2F0PiYpOworfTsKKworI2VuZGlmCisKIH0gLy8gbmFtZXNwYWNlIElQQwogCiBuYW1l
c3BhY2UgV1RGIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9TY3JvbGxp
bmcvaW9zL1Njcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVJT1MubW0gYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvU2Nyb2xsaW5nL2lvcy9TY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3Jv
bGxpbmdOb2RlSU9TLm1tCmluZGV4IGM1NTFjZTg2MzZjZTIxNGQ4YWMyNTU4NDI4OTdhYTJhNzFk
NWEzZjcuLjg3OWE5OGQ2YWI1YjVhN2Y4YzU0ZmY0M2U1YWQxNDRhODA2ZDY2M2IgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9TY3JvbGxpbmcvaW9zL1Njcm9sbGluZ1RyZWVP
dmVyZmxvd1Njcm9sbGluZ05vZGVJT1MubW0KKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L1Njcm9sbGluZy9pb3MvU2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZUlPUy5tbQpA
QCAtMzksNiArMzksNyBAQAogCiAjaWYgRU5BQkxFKENTU19TQ1JPTExfU05BUCkKICNpbXBvcnQg
PFdlYkNvcmUvQXhpc1Njcm9sbFNuYXBPZmZzZXRzLmg+CisjaW1wb3J0IDxXZWJDb3JlL1Njcm9s
bFNuYXBPZmZzZXRzSW5mby5oPgogI2VuZGlmCiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwpA
QCAtODgsNyArODksNyBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogICAgIGlmICghX3Nj
cm9sbGluZ1RyZWVOb2RlLT5ob3Jpem9udGFsU25hcE9mZnNldHMoKS5pc0VtcHR5KCkpIHsKICAg
ICAgICAgdW5zaWduZWQgaW5kZXg7Ci0gICAgICAgIGZsb2F0IHBvdGVudGlhbFNuYXBQb3NpdGlv
biA9IGNsb3Nlc3RTbmFwT2Zmc2V0PGZsb2F0LCBDR0Zsb2F0Pihfc2Nyb2xsaW5nVHJlZU5vZGUt
Pmhvcml6b250YWxTbmFwT2Zmc2V0cygpLCBob3Jpem9udGFsVGFyZ2V0LCB2ZWxvY2l0eS54LCBp
bmRleCk7CisgICAgICAgIGZsb2F0IHBvdGVudGlhbFNuYXBQb3NpdGlvbiA9IGNsb3Nlc3RTbmFw
T2Zmc2V0KF9zY3JvbGxpbmdUcmVlTm9kZS0+aG9yaXpvbnRhbFNuYXBPZmZzZXRzKCksIF9zY3Jv
bGxpbmdUcmVlTm9kZS0+aG9yaXpvbnRhbFNuYXBPZmZzZXRSYW5nZXMoKSwgaG9yaXpvbnRhbFRh
cmdldCwgdmVsb2NpdHkueCwgaW5kZXgpOwogICAgICAgICBfc2Nyb2xsaW5nVHJlZU5vZGUtPnNl
dEN1cnJlbnRIb3Jpem9udGFsU25hcFBvaW50SW5kZXgoaW5kZXgpOwogICAgICAgICBpZiAoaG9y
aXpvbnRhbFRhcmdldCA+PSAwICYmIGhvcml6b250YWxUYXJnZXQgPD0gc2Nyb2xsVmlldy5jb250
ZW50U2l6ZS53aWR0aCkKICAgICAgICAgICAgIHRhcmdldENvbnRlbnRPZmZzZXQtPnggPSBwb3Rl
bnRpYWxTbmFwUG9zaXRpb247CkBAIC05Niw3ICs5Nyw3IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJD
b3JlOwogCiAgICAgaWYgKCFfc2Nyb2xsaW5nVHJlZU5vZGUtPnZlcnRpY2FsU25hcE9mZnNldHMo
KS5pc0VtcHR5KCkpIHsKICAgICAgICAgdW5zaWduZWQgaW5kZXg7Ci0gICAgICAgIGZsb2F0IHBv
dGVudGlhbFNuYXBQb3NpdGlvbiA9IGNsb3Nlc3RTbmFwT2Zmc2V0PGZsb2F0LCBDR0Zsb2F0Pihf
c2Nyb2xsaW5nVHJlZU5vZGUtPnZlcnRpY2FsU25hcE9mZnNldHMoKSwgdmVydGljYWxUYXJnZXQs
IHZlbG9jaXR5LnksIGluZGV4KTsKKyAgICAgICAgZmxvYXQgcG90ZW50aWFsU25hcFBvc2l0aW9u
ID0gY2xvc2VzdFNuYXBPZmZzZXQoX3Njcm9sbGluZ1RyZWVOb2RlLT52ZXJ0aWNhbFNuYXBPZmZz
ZXRzKCksIF9zY3JvbGxpbmdUcmVlTm9kZS0+dmVydGljYWxTbmFwT2Zmc2V0UmFuZ2VzKCksIHZl
cnRpY2FsVGFyZ2V0LCB2ZWxvY2l0eS55LCBpbmRleCk7CiAgICAgICAgIF9zY3JvbGxpbmdUcmVl
Tm9kZS0+c2V0Q3VycmVudFZlcnRpY2FsU25hcFBvaW50SW5kZXgoaW5kZXgpOwogICAgICAgICBp
ZiAodmVydGljYWxUYXJnZXQgPj0gMCAmJiB2ZXJ0aWNhbFRhcmdldCA8PSBzY3JvbGxWaWV3LmNv
bnRlbnRTaXplLmhlaWdodCkKICAgICAgICAgICAgIHRhcmdldENvbnRlbnRPZmZzZXQtPnkgPSBw
b3RlbnRpYWxTbmFwUG9zaXRpb247CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvaW9zL1JlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yUHJveHlJT1MubW0gYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvaW9zL1JlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yUHJveHlJT1MubW0K
aW5kZXggNmM5YTFjMDM5ZTA0MjRmOTk3NWI1YWZjNTU5YzA2OWQwYmM1ODJkZi4uZGNhYTQ3ZWM0
MDU2ZGI2ZDcyMTJkZWUwOWExZTY2N2JkYTlkNDZjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL2lvcy9SZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvclByb3h5SU9TLm1tCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvUmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0
b3JQcm94eUlPUy5tbQpAQCAtMzksNiArMzksNyBAQAogCiAjaWYgRU5BQkxFKENTU19TQ1JPTExf
U05BUCkKICNpbXBvcnQgPFdlYkNvcmUvQXhpc1Njcm9sbFNuYXBPZmZzZXRzLmg+CisjaW1wb3J0
IDxXZWJDb3JlL1Njcm9sbFNuYXBPZmZzZXRzSW5mby5oPgogI2ltcG9ydCA8V2ViQ29yZS9TY3Jv
bGxUeXBlcy5oPgogI2ltcG9ydCA8V2ViQ29yZS9TY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdO
b2RlLmg+CiAjZW5kaWYKQEAgLTEyNCw3ICsxMjUsOSBAQCB2b2lkIFJlbW90ZVNjcm9sbGluZ0Nv
b3JkaW5hdG9yUHJveHk6OmFkanVzdFRhcmdldENvbnRlbnRPZmZzZXRGb3JTbmFwcGluZyhDR1Np
egogCiAgICAgaWYgKHNob3VsZFNuYXBGb3JNYWluRnJhbWVTY3JvbGxpbmcoV2ViQ29yZTo6U2Ny
b2xsRXZlbnRBeGlzOjpWZXJ0aWNhbCkpIHsKICAgICAgICAgZmxvYXQgcG90ZW50aWFsU25hcFBv
c2l0aW9uID0gY2xvc2VzdFNuYXBPZmZzZXRGb3JNYWluRnJhbWVTY3JvbGxpbmcoV2ViQ29yZTo6
U2Nyb2xsRXZlbnRBeGlzOjpWZXJ0aWNhbCwgdGFyZ2V0Q29udGVudE9mZnNldC0+eSwgdmVsb2Np
dHkueSwgbV9jdXJyZW50VmVydGljYWxTbmFwUG9pbnRJbmRleCk7Ci0gICAgICAgIHBvdGVudGlh
bFNuYXBQb3NpdGlvbiAtPSB0b3BJbnNldDsKKyAgICAgICAgaWYgKG1fY3VycmVudFZlcnRpY2Fs
U25hcFBvaW50SW5kZXggIT0gaW52YWxpZFNuYXBPZmZzZXRJbmRleCkKKyAgICAgICAgICAgIHBv
dGVudGlhbFNuYXBQb3NpdGlvbiAtPSB0b3BJbnNldDsKKwogICAgICAgICBpZiAodGFyZ2V0Q29u
dGVudE9mZnNldC0+eSA+IDAgJiYgdGFyZ2V0Q29udGVudE9mZnNldC0+eSA8IG1heFNjcm9sbE9m
ZnNldHMuaGVpZ2h0KQogICAgICAgICAgICAgdGFyZ2V0Q29udGVudE9mZnNldC0+eSA9IHN0ZDo6
bWluPGZsb2F0PihtYXhTY3JvbGxPZmZzZXRzLmhlaWdodCwgcG90ZW50aWFsU25hcFBvc2l0aW9u
KTsKICAgICB9CkBAIC0xNDIsNyArMTQ1LDcgQEAgYm9vbCBSZW1vdGVTY3JvbGxpbmdDb29yZGlu
YXRvclByb3h5OjpzaG91bGRTbmFwRm9yTWFpbkZyYW1lU2Nyb2xsaW5nKFNjcm9sbEV2ZW4KICAg
ICAgICAgU2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZSogcm9vdEZyYW1lID0gc3RhdGlj
X2Nhc3Q8U2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZSo+KHJvb3QpOwogICAgICAgICBj
b25zdCBWZWN0b3I8ZmxvYXQ+JiBzbmFwT2Zmc2V0cyA9IGF4aXMgPT0gU2Nyb2xsRXZlbnRBeGlz
OjpIb3Jpem9udGFsID8gcm9vdEZyYW1lLT5ob3Jpem9udGFsU25hcE9mZnNldHMoKSA6IHJvb3RG
cmFtZS0+dmVydGljYWxTbmFwT2Zmc2V0cygpOwogICAgICAgICB1bnNpZ25lZCBjdXJyZW50SW5k
ZXggPSBheGlzID09IFNjcm9sbEV2ZW50QXhpczo6SG9yaXpvbnRhbCA/IG1fY3VycmVudEhvcml6
b250YWxTbmFwUG9pbnRJbmRleCA6IG1fY3VycmVudFZlcnRpY2FsU25hcFBvaW50SW5kZXg7Ci0g
ICAgICAgIHJldHVybiAoc25hcE9mZnNldHMuc2l6ZSgpID4gMCkgJiYgKGN1cnJlbnRJbmRleCA8
IHNuYXBPZmZzZXRzLnNpemUoKSk7CisgICAgICAgIHJldHVybiBzbmFwT2Zmc2V0cy5zaXplKCkg
JiYgKGN1cnJlbnRJbmRleCA8IHNuYXBPZmZzZXRzLnNpemUoKSB8fCBjdXJyZW50SW5kZXggPT0g
aW52YWxpZFNuYXBPZmZzZXRJbmRleCk7CiAgICAgfQogICAgIHJldHVybiBmYWxzZTsKIH0KQEAg
LTE1Myw5ICsxNTYsMTAgQEAgZmxvYXQgUmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3JQcm94eTo6
Y2xvc2VzdFNuYXBPZmZzZXRGb3JNYWluRnJhbWVTY3JvbGxpbmcoU2MKICAgICBBU1NFUlQocm9v
dCAmJiByb290LT5pc0ZyYW1lU2Nyb2xsaW5nTm9kZSgpKTsKICAgICBTY3JvbGxpbmdUcmVlRnJh
bWVTY3JvbGxpbmdOb2RlKiByb290RnJhbWUgPSBzdGF0aWNfY2FzdDxTY3JvbGxpbmdUcmVlRnJh
bWVTY3JvbGxpbmdOb2RlKj4ocm9vdCk7CiAgICAgY29uc3QgVmVjdG9yPGZsb2F0PiYgc25hcE9m
ZnNldHMgPSBheGlzID09IFNjcm9sbEV2ZW50QXhpczo6SG9yaXpvbnRhbCA/IHJvb3RGcmFtZS0+
aG9yaXpvbnRhbFNuYXBPZmZzZXRzKCkgOiByb290RnJhbWUtPnZlcnRpY2FsU25hcE9mZnNldHMo
KTsKKyAgICBjb25zdCBWZWN0b3I8U2Nyb2xsT2Zmc2V0UmFuZ2U8ZmxvYXQ+PiYgc25hcE9mZnNl
dFJhbmdlcyA9IGF4aXMgPT0gU2Nyb2xsRXZlbnRBeGlzOjpIb3Jpem9udGFsID8gcm9vdEZyYW1l
LT5ob3Jpem9udGFsU25hcE9mZnNldFJhbmdlcygpIDogcm9vdEZyYW1lLT52ZXJ0aWNhbFNuYXBP
ZmZzZXRSYW5nZXMoKTsKIAogICAgIGZsb2F0IHNjYWxlZFNjcm9sbERlc3RpbmF0aW9uID0gc2Ny
b2xsRGVzdGluYXRpb24gLyBtX3dlYlBhZ2VQcm94eS5kaXNwbGF5ZWRDb250ZW50U2NhbGUoKTsK
LSAgICBmbG9hdCByYXdDbG9zZXN0U25hcE9mZnNldCA9IGNsb3Nlc3RTbmFwT2Zmc2V0PGZsb2F0
LCBmbG9hdD4oc25hcE9mZnNldHMsIHNjYWxlZFNjcm9sbERlc3RpbmF0aW9uLCB2ZWxvY2l0eSwg
Y3VycmVudEluZGV4KTsKKyAgICBmbG9hdCByYXdDbG9zZXN0U25hcE9mZnNldCA9IGNsb3Nlc3RT
bmFwT2Zmc2V0KHNuYXBPZmZzZXRzLCBzbmFwT2Zmc2V0UmFuZ2VzLCBzY2FsZWRTY3JvbGxEZXN0
aW5hdGlvbiwgdmVsb2NpdHksIGN1cnJlbnRJbmRleCk7CiAgICAgcmV0dXJuIHJhd0Nsb3Nlc3RT
bmFwT2Zmc2V0ICogbV93ZWJQYWdlUHJveHkuZGlzcGxheWVkQ29udGVudFNjYWxlKCk7CiB9CiAK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCAwODFhNmQ0YTg0NTUwYjA2YmQ3MzVhYmMxYjIzNTU0OTdhOGEyZDIyLi4xOWYyZmEw
MDk1NDBlYWEyZGUxMTYwY2ZmNjQ2ZjU1ODI0MmVlZjFkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTQgQEAK
KzIwMTctMDEtMTAgIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CisKKyAg
ICAgICAgSW1wbGVtZW50ICJwcm94aW1pdHkiIHNjcm9sbCBzbmFwcGluZworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTM1OTk0CisgICAgICAgIDxyZGFy
Oi8vcHJvYmxlbS8xODE2MjQxOD4KKworICAgICAgICBSZXZpZXdlZCBieSBEZWFuIEphY2tzb24u
CisKKyAgICAgICAgQWRkcyAzIG5ldyBsYXlvdXQgdGVzdHMgZm9yIHByb3hpbWl0eSBzY3JvbGwg
c25hcHBpbmcuIEFsc28gdHdlYWtzIHNvbWUgZXhpc3RpbmcgdGVzdHMgdGhhdCB0ZXN0IHNjcm9s
bCBzbmFwcGluZworICAgICAgICBhZnRlciBzY3JvbGxpbmcgd2l0aCBtb21lbnR1bSB0byB1c2Ug
dGhlIGN1c3RvbSBoZXVyaXN0aWMgZm9yIHByZWRpY3Rpbmcgc2Nyb2xsIGRlc3RpbmF0aW9uIGlu
c3RlYWQgb2YgcGxhdGZvcm0KKyAgICAgICAgbW9tZW50dW0gc2Nyb2xsaW5nLiBUaGlzIGVuc3Vy
ZXMgdGhhdCB0aGUgcmVzdWx0cyBvZiBvdXIgbGF5b3V0IHRlc3RzIHRoYXQgZGVwZW5kIG9uIHBy
ZWRpY3RpbmcgbW9tZW50dW0gc2Nyb2xsCisgICAgICAgIGRlc3RpbmF0aW9uIGFyZSBjb25zaXN0
ZW50IGFjcm9zcyBydW5zLgorCisgICAgICAgICogdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvbGF0
Y2hlZC1kaXYtd2l0aC1zY3JvbGwtc25hcC5odG1sOgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcv
c2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS5odG1sOgorICAgICAgICAq
IHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLW1hbmRhdG9y
eS0yZC1vdmVyZmxvdy5odG1sOgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Nj
cm9sbC1zbmFwL3Njcm9sbC1zbmFwLW1hbmRhdG9yeS1ib3JkZXJzLmh0bWw6CisgICAgICAgICog
dGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtbWFuZGF0b3J5
LWhpZGRlbi1zY3JvbGxiYXJzLmh0bWw6CisgICAgICAgICogdGlsZWQtZHJhd2luZy9zY3JvbGxp
bmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtbWFuZGF0b3J5LW1haW5mcmFtZS1ob3Jpem9udGFs
Lmh0bWw6CisgICAgICAgICogdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Ny
b2xsLXNuYXAtbWFuZGF0b3J5LW1haW5mcmFtZS1zbG93LWhvcml6b250YWwuaHRtbDoKKyAgICAg
ICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1tYW5k
YXRvcnktbWFpbmZyYW1lLXNsb3ctdmVydGljYWwuaHRtbDoKKyAgICAgICAgKiB0aWxlZC1kcmF3
aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1tYW5kYXRvcnktbWFpbmZyYW1l
LXZlcnRpY2FsLXRoZW4taG9yaXpvbnRhbC5odG1sOgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcv
c2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLW1hbmRhdG9yeS1tYWluZnJhbWUtdmVy
dGljYWwuaHRtbDoKKyAgICAgICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25h
cC9zY3JvbGwtc25hcC1tYW5kYXRvcnktb3ZlcmZsb3ctc3RhdGVsZXNzLmh0bWw6CisgICAgICAg
ICogdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtbWFuZGF0
b3J5LW92ZXJmbG93Lmh0bWw6CisgICAgICAgICogdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Ny
b2xsLXNuYXAvc2Nyb2xsLXNuYXAtbWFuZGF0b3J5LXBhZGRpbmcuaHRtbDoKKyAgICAgICAgKiB0
aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1tYW5kYXRvcnkt
cm90YXRlZC5odG1sOgorCisgICAgICAgIEZvcmNlIHRoZXNlIHRlc3RzIHRvIHVzZSBwbGF0Zm9y
bS1pbmRlcGVuZGVudCBzY3JvbGxpbmcgbW9tZW50dW0gcHJlZGljdGlvbiwgYnkgbXVsdGlwbHlp
bmcgdGhlIGxhc3Qgc2Nyb2xsCisgICAgICAgIGRlbHRhIHVwb24gcmVsZWFzZSBieSBhIGNvbnN0
YW50IGZhY3Rvci4KKworICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1z
bmFwL3Njcm9sbC1zbmFwLW1hbmRhdG9yeS10aGVuLXByb3hpbWl0eS1leHBlY3RlZC50eHQ6IEFk
ZGVkLgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9s
bC1zbmFwLW1hbmRhdG9yeS10aGVuLXByb3hpbWl0eS5odG1sOiBBZGRlZC4KKworICAgICAgICBU
ZXN0cyB0aGF0IGFmdGVyIGNoYW5naW5nIHNjcm9sbC1zbmFwLXR5cGUgZnJvbSBtYW5kYXRvcnkg
dG8gcHJveGltaXR5LCBzd2lwaW5nIGRvd253YXJkcyBubyBsb25nZXIgc25hcHMgdGhlCisgICAg
ICAgIHNjcm9sbCBvZmZzZXQgdG8gdGhlIHNlY29uZCBib3gsIGJ1dCBpbnN0ZWFkIGxlYXZlcyB0
aGUgc2Nyb2xsIG9mZnNldCBzb21ld2hlcmUgaW4gdGhlIG1pZGRsZSBvZiB0aGUgZmlyc3QgYm94
LgorCisgICAgICAgICogdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xs
LXNuYXAtcHJveGltaXR5LW1haW5mcmFtZS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAq
IHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLXByb3hpbWl0
eS1tYWluZnJhbWUuaHRtbDogQWRkZWQuCisKKyAgICAgICAgVGVzdHMgdGhhdCB3aGVuIHNjcm9s
bC1zbmFwLXR5cGUgaXMgcHJveGltaXR5IGluIHRoZSBtYWluZnJhbWUsIHNjcm9sbGluZyBzbGln
aHRseSBkb3dud2FyZHMgc25hcHMgdGhlIHNjcm9sbAorICAgICAgICBvZmZzZXQgYmFjayB1cCB0
byB0aGUgdG9wOyBzY3JvbGxpbmcgc29tZXdoZXJlIGluIHRoZSBtaWRkbGUgb2YgdGhlIGZpcnN0
IGJveCBkb2VzIG5vdCBzbmFwIHRoZSBzY3JvbGwgb2Zmc2V0OworICAgICAgICBhbmQgc2Nyb2xs
aW5nIG5lYXIgdGhlIGVuZCBvZiB0aGUgZmlyc3QgYm94IHNuYXBzIHRoZSBzY3JvbGwgb2Zmc2V0
IHRvIHRoZSBzZWNvbmQgYm94LgorCisgICAgICAgICogdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcv
c2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtcHJveGltaXR5LW92ZXJmbG93LWV4cGVjdGVkLnR4dDog
QWRkZWQuCisgICAgICAgICogdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Ny
b2xsLXNuYXAtcHJveGltaXR5LW92ZXJmbG93Lmh0bWw6IEFkZGVkLgorCisgICAgICAgIFNpbWls
YXIgdG8gc2Nyb2xsLXNuYXAtcHJveGltaXR5LW1haW5mcmFtZS5odG1sLCBleGNlcHQgZm9yIG92
ZXJmbG93IHNjcm9sbGluZyBpbnN0ZWFkIG9mIHRoZSBtYWluZnJhbWUuCisKKyAgICAgICAgKiB0
aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1zY3JvbGxpbmct
anVtcHMtdG8tdG9wLmh0bWw6CisKIDIwMTctMDEtMTAgIEplciBOb2JsZSAgPGplci5ub2JsZUBh
cHBsZS5jb20+CiAKICAgICAgICAgQWRkIHN1cHBvcnQgZm9yIE1lZGlhS2V5cy5jcmVhdGVTZXNz
aW9uKCkuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9s
YXRjaGVkLWRpdi13aXRoLXNjcm9sbC1zbmFwLmh0bWwgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3
aW5nL3Njcm9sbGluZy9sYXRjaGVkLWRpdi13aXRoLXNjcm9sbC1zbmFwLmh0bWwKaW5kZXggNDcz
NWFlYTZjYTk4NTQ3MDZkN2YwNmI1N2VmMjhhZTEzOWViZWY5OS4uZDlhZjdlNTJkNDMyNzU3YTNh
MjY2MzU0MGRmYWQzN2RjZTMwZTMwOSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJh
d2luZy9zY3JvbGxpbmcvbGF0Y2hlZC1kaXYtd2l0aC1zY3JvbGwtc25hcC5odG1sCisrKyBiL0xh
eW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL2xhdGNoZWQtZGl2LXdpdGgtc2Nyb2xs
LXNuYXAuaHRtbApAQCAtNzQsNiArNzQsNyBAQAogICAgICAgICAgICAgcmV0dXJuIG5ldyBQcm9t
aXNlKHJlc29sdmUgPT4gewogICAgICAgICAgICAgICAgIHdyaXRlKGAqIFN3aXBpbmcgJHttb21l
bnR1bSA/ICJ3aXRoIiA6ICJ3aXRob3V0In0gbW9tZW50dW0gaW4gJHtlbGVtZW50LmlkfSB3aXRo
IHNjcm9sbCBvZmZzZXQgJHtlbGVtZW50LnNjcm9sbExlZnR9YCk7CiAgICAgICAgICAgICAgICAg
bGV0IGxvY2F0aW9uID0gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGVsZW1lbnQpOworICAg
ICAgICAgICAgICAgIGludGVybmFscy5zZXRQbGF0Zm9ybU1vbWVudHVtU2Nyb2xsaW5nUHJlZGlj
dGlvbkVuYWJsZWQoZmFsc2UpOwogICAgICAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vbml0b3JX
aGVlbEV2ZW50cygpOwogICAgICAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKGxv
Y2F0aW9uLngsIGxvY2F0aW9uLnkpOwogICAgICAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNl
U2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygtMSwgMCwgImJlZ2FuIiwgIm5vbmUi
KTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9s
bC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS5odG1sIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2lu
Zy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLmh0bWwKaW5kZXggMTgy
ZTE5ZjU3MWQ4Zjg4MDgwYzkxYThiY2QyMzQwYTRmZWEyZmU2MC4uZGYyZTFmZmU0OWZjODJkYWIy
NTQyM2M4ZDUxNDFlNWE3ODhhZTFlMiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJh
d2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLmh0bWwKKysrIGIv
TGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNu
YXAtaWZyYW1lLmh0bWwKQEAgLTE0Nyw2ICsxNDcsNyBAQAogICAgICAgICB7CiAgICAgICAgICAg
ICBpZiAod2luZG93LmV2ZW50U2VuZGVyKSB7CiAgICAgICAgICAgICAgICAgZXZlbnRTZW5kZXIu
bW9uaXRvcldoZWVsRXZlbnRzKCk7CisgICAgICAgICAgICAgICAgaW50ZXJuYWxzLnNldFBsYXRm
b3JtTW9tZW50dW1TY3JvbGxpbmdQcmVkaWN0aW9uRW5hYmxlZChmYWxzZSk7CiAgICAgICAgICAg
ICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVUZXN0KCdob3Jpem9udGFs
VGFyZ2V0JykgfSwgMCk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFw
LW1hbmRhdG9yeS0yZC1vdmVyZmxvdy5odG1sIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9z
Y3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtbWFuZGF0b3J5LTJkLW92ZXJmbG93Lmh0
bWwKaW5kZXggYWMxYWI4ODJkYzhmMzUxMGRkMmNlZTdmNjUzOTFiOTVmMmQwYTNlMS4uN2IwYWQz
YjI2MDQ5OTg1OWM5NTJmMjI5MjE5OTQ3OTZmZjMyNmRlNCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtbWFuZGF0
b3J5LTJkLW92ZXJmbG93Lmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3Jv
bGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtbWFuZGF0b3J5LTJkLW92ZXJmbG93Lmh0bWwK
QEAgLTEyMyw2ICsxMjMsNyBAQAogICAgICAgICBmdW5jdGlvbiBvbkxvYWQoKSB7CiAgICAgICAg
ICAgICBpZiAod2luZG93LmV2ZW50U2VuZGVyKSB7CiAgICAgICAgICAgICAgICAgZXZlbnRTZW5k
ZXIubW9uaXRvcldoZWVsRXZlbnRzKCk7CisgICAgICAgICAgICAgICAgaW50ZXJuYWxzLnNldFBs
YXRmb3JtTW9tZW50dW1TY3JvbGxpbmdQcmVkaWN0aW9uRW5hYmxlZChmYWxzZSk7CiAgICAgICAg
ICAgICAgICAgc2V0VGltZW91dChzY3JvbGxHbGlkZVRlc3QsIDApOwogICAgICAgICAgICAgfSBl
bHNlIHsKICAgICAgICAgICAgICAgICB2YXIgbWVzc2FnZUxvY2F0aW9uID0gZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoInNuYXAtZnJvbSIpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQt
ZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtbWFuZGF0b3J5LWJvcmRl
cnMuaHRtbCBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFw
L3Njcm9sbC1zbmFwLW1hbmRhdG9yeS1ib3JkZXJzLmh0bWwKaW5kZXggNDFkZWQwOTZhYjk1NmM5
MGFiODg0MTVhZTQ4NDJlY2VmZmMzMGM5MC4uOWM3NTI1OGRmYjBkZGM3YjljNmVlMWE1NWI3NThm
ZmViYzkxMmVhYSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxp
bmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtbWFuZGF0b3J5LWJvcmRlcnMuaHRtbAorKysgYi9M
YXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25h
cC1tYW5kYXRvcnktYm9yZGVycy5odG1sCkBAIC0xNzcsNiArMTc3LDcgQEAKICAgICAgICAgewog
ICAgICAgICAgICAgaWYgKHdpbmRvdy5ldmVudFNlbmRlcikgewogICAgICAgICAgICAgICAgIGV2
ZW50U2VuZGVyLm1vbml0b3JXaGVlbEV2ZW50cygpOworICAgICAgICAgICAgICAgIGludGVybmFs
cy5zZXRQbGF0Zm9ybU1vbWVudHVtU2Nyb2xsaW5nUHJlZGljdGlvbkVuYWJsZWQoZmFsc2UpOwog
ICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVzdCgn
aG9yaXpvbnRhbFRhcmdldCcpIH0sIDApOwogICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAg
ICAgICAgICB2YXIgbWVzc2FnZUxvY2F0aW9uSCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdp
dGVtSDAnKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5n
L3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLW1hbmRhdG9yeS1oaWRkZW4tc2Nyb2xsYmFycy5odG1s
IGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xs
LXNuYXAtbWFuZGF0b3J5LWhpZGRlbi1zY3JvbGxiYXJzLmh0bWwKaW5kZXggYjRjZjg5OGZhMzBj
NDEyMTk0ZjAyNmExM2I3N2UxMWE1YTNkYmRmOC4uYTA0MzU5MDZkOTYwMzUzNDdjNWMxNjg3ZGNm
MTQ4OWNkODM1NjJhMiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3Jv
bGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtbWFuZGF0b3J5LWhpZGRlbi1zY3JvbGxiYXJz
Lmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNu
YXAvc2Nyb2xsLXNuYXAtbWFuZGF0b3J5LWhpZGRlbi1zY3JvbGxiYXJzLmh0bWwKQEAgLTQ0LDYg
KzQ0LDcgQEAKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9CiAKKyAgICAg
ICAgICAgIGludGVybmFscy5zZXRQbGF0Zm9ybU1vbWVudHVtU2Nyb2xsaW5nUHJlZGljdGlvbkVu
YWJsZWQoZmFsc2UpOwogICAgICAgICAgICAgZXZlbnRTZW5kZXIubW9uaXRvcldoZWVsRXZlbnRz
KCk7CiAgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbygyNTAsIDI1MCk7CiAgICAg
ICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFz
ZXMoMCwgLTEsICJiZWdhbiIsICJub25lIik7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90aWxl
ZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1tYW5kYXRvcnktbWFp
bmZyYW1lLWhvcml6b250YWwuaHRtbCBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xs
aW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLW1hbmRhdG9yeS1tYWluZnJhbWUtaG9yaXpvbnRh
bC5odG1sCmluZGV4IDYxZWEyZWMwYmIwM2FkMGEyNjY1OWJhM2NmZTNiZjJjNWY0NTZiOTAuLmY5
ZDcyNzhhYWU4Mzg5MTJjNzhhM2JkMTIyMjUxZmM1OTc4OGFlZmQgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLW1h
bmRhdG9yeS1tYWluZnJhbWUtaG9yaXpvbnRhbC5odG1sCisrKyBiL0xheW91dFRlc3RzL3RpbGVk
LWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLW1hbmRhdG9yeS1tYWlu
ZnJhbWUtaG9yaXpvbnRhbC5odG1sCkBAIC05MSw2ICs5MSw3IEBACiAKICAgICAgICAgICAgIGlm
ICh3aW5kb3cuZXZlbnRTZW5kZXIpIHsKICAgICAgICAgICAgICAgICBldmVudFNlbmRlci5tb25p
dG9yV2hlZWxFdmVudHMoKTsKKyAgICAgICAgICAgICAgICBpbnRlcm5hbHMuc2V0UGxhdGZvcm1N
b21lbnR1bVNjcm9sbGluZ1ByZWRpY3Rpb25FbmFibGVkKGZhbHNlKTsKICAgICAgICAgICAgICAg
ICBzZXRUaW1lb3V0KHNjcm9sbEdsaWRlVGVzdCwgMCk7CiAgICAgICAgICAgICB9IGVsc2Ugewog
ICAgICAgICAgICAgICAgIHZhciBtZXNzYWdlTG9jYXRpb24gPSBkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCgnaXRlbTAnKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Ny
b2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLW1hbmRhdG9yeS1tYWluZnJhbWUtc2xvdy1o
b3Jpem9udGFsLmh0bWwgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3Jv
bGwtc25hcC9zY3JvbGwtc25hcC1tYW5kYXRvcnktbWFpbmZyYW1lLXNsb3ctaG9yaXpvbnRhbC5o
dG1sCmluZGV4IGM1Y2QwM2M3MjkxMTQ4NjE3YTA0MDAxZjViN2QxNmU2ZTZmZDI1N2UuLmRmZGRl
ODUxZTlkNjExMzk5ZDBiZTU5N2JmMDgwZDQ0ZWMxYmRkZDggMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLW1hbmRh
dG9yeS1tYWluZnJhbWUtc2xvdy1ob3Jpem9udGFsLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvdGls
ZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtbWFuZGF0b3J5LW1h
aW5mcmFtZS1zbG93LWhvcml6b250YWwuaHRtbApAQCAtOTEsNiArOTEsNyBAQAogCiAgICAgICAg
ICAgICBpZiAod2luZG93LmV2ZW50U2VuZGVyKSB7CiAgICAgICAgICAgICAgICAgZXZlbnRTZW5k
ZXIubW9uaXRvcldoZWVsRXZlbnRzKCk7CisgICAgICAgICAgICAgICAgaW50ZXJuYWxzLnNldFBs
YXRmb3JtTW9tZW50dW1TY3JvbGxpbmdQcmVkaWN0aW9uRW5hYmxlZChmYWxzZSk7CiAgICAgICAg
ICAgICAgICAgc2V0VGltZW91dChzY3JvbGxHbGlkZVRlc3QsIDApOwogICAgICAgICAgICAgfSBl
bHNlIHsKICAgICAgICAgICAgICAgICB2YXIgbWVzc2FnZUxvY2F0aW9uID0gZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoJ2l0ZW0wJyk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3
aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1tYW5kYXRvcnktbWFpbmZyYW1l
LXNsb3ctdmVydGljYWwuaHRtbCBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5n
L3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLW1hbmRhdG9yeS1tYWluZnJhbWUtc2xvdy12ZXJ0aWNh
bC5odG1sCmluZGV4IDhkODUxNDc0NWYwZDJiZmVjYzE2ZWJkYTBjZTI1NGQ4YmMzOGYzNDcuLjYy
NjgyNDQ1NWFmY2VmOGRmYWZmMDZhODU0N2YwNDdkNWZiMmIwNWIgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLW1h
bmRhdG9yeS1tYWluZnJhbWUtc2xvdy12ZXJ0aWNhbC5odG1sCisrKyBiL0xheW91dFRlc3RzL3Rp
bGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLW1hbmRhdG9yeS1t
YWluZnJhbWUtc2xvdy12ZXJ0aWNhbC5odG1sCkBAIC05MCw2ICs5MCw3IEBACiAgICAgICAgIGZ1
bmN0aW9uIG9uTG9hZCgpIHsKICAgICAgICAgICAgIGlmICh3aW5kb3cuZXZlbnRTZW5kZXIpIHsK
ICAgICAgICAgICAgICAgICBldmVudFNlbmRlci5tb25pdG9yV2hlZWxFdmVudHMoKTsKKyAgICAg
ICAgICAgICAgICBpbnRlcm5hbHMuc2V0UGxhdGZvcm1Nb21lbnR1bVNjcm9sbGluZ1ByZWRpY3Rp
b25FbmFibGVkKGZhbHNlKTsKICAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KHNjcm9sbEdsaWRl
VGVzdCwgMCk7CiAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgIHZhciBtZXNz
YWdlTG9jYXRpb24gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnaXRlbTAnKTsKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9s
bC1zbmFwLW1hbmRhdG9yeS1tYWluZnJhbWUtdmVydGljYWwtdGhlbi1ob3Jpem9udGFsLmh0bWwg
Yi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwt
c25hcC1tYW5kYXRvcnktbWFpbmZyYW1lLXZlcnRpY2FsLXRoZW4taG9yaXpvbnRhbC5odG1sCmlu
ZGV4IDg5ZjRlMTg3MTQ4YjJmNmNiNTJjZWQ5YjljYTZjMzE2ZGI2ODRiYWIuLjg1Mzg1ODFhYmY5
ZjVmYzE3ZWJhOGZjYjQzMjVmYWM4ZGE4MmNmMzkgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3Rp
bGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLW1hbmRhdG9yeS1t
YWluZnJhbWUtdmVydGljYWwtdGhlbi1ob3Jpem9udGFsLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMv
dGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtbWFuZGF0b3J5
LW1haW5mcmFtZS12ZXJ0aWNhbC10aGVuLWhvcml6b250YWwuaHRtbApAQCAtNTIsNiArNTIsNyBA
QAogICAgICAgICBmdW5jdGlvbiBvbkxvYWQoKSB7CiAgICAgICAgICAgICBpZiAod2luZG93LmV2
ZW50U2VuZGVyKSB7CiAgICAgICAgICAgICAgICAgZXZlbnRTZW5kZXIubW9uaXRvcldoZWVsRXZl
bnRzKCk7CisgICAgICAgICAgICAgICAgaW50ZXJuYWxzLnNldFBsYXRmb3JtTW9tZW50dW1TY3Jv
bGxpbmdQcmVkaWN0aW9uRW5hYmxlZChmYWxzZSk7CiAgICAgICAgICAgICAgICAgc2V0VGltZW91
dChzY3JvbGxTbmFwVGVzdCwgMCk7CiAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAg
ICAgIHZhciBtZXNzYWdlTG9jYXRpb24gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnaXRlbTAn
KTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9s
bC1zbmFwL3Njcm9sbC1zbmFwLW1hbmRhdG9yeS1tYWluZnJhbWUtdmVydGljYWwuaHRtbCBiL0xh
eW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFw
LW1hbmRhdG9yeS1tYWluZnJhbWUtdmVydGljYWwuaHRtbAppbmRleCA2ZTcxMDEzNGUxY2Y5ZDM4
NTkwOWFiYjQzNDVjZWZiNGViM2U4NWNlLi45ZmQyODljYTFmNTQ2OWQyYTg0MGVjNzBiOTgzZmEy
ODQ3NGY1NDRmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGlu
Zy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1tYW5kYXRvcnktbWFpbmZyYW1lLXZlcnRpY2FsLmh0
bWwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAv
c2Nyb2xsLXNuYXAtbWFuZGF0b3J5LW1haW5mcmFtZS12ZXJ0aWNhbC5odG1sCkBAIC05MSw2ICs5
MSw3IEBACiAKICAgICAgICAgICAgIGlmICh3aW5kb3cuZXZlbnRTZW5kZXIpIHsKICAgICAgICAg
ICAgICAgICBldmVudFNlbmRlci5tb25pdG9yV2hlZWxFdmVudHMoKTsKKyAgICAgICAgICAgICAg
ICBpbnRlcm5hbHMuc2V0UGxhdGZvcm1Nb21lbnR1bVNjcm9sbGluZ1ByZWRpY3Rpb25FbmFibGVk
KGZhbHNlKTsKICAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KHNjcm9sbEdsaWRlVGVzdCwgMCk7
CiAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgIHZhciBtZXNzYWdlTG9jYXRp
b24gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnaXRlbTAnKTsKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLW1h
bmRhdG9yeS1vdmVyZmxvdy1zdGF0ZWxlc3MuaHRtbCBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdp
bmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLW1hbmRhdG9yeS1vdmVyZmxvdy1z
dGF0ZWxlc3MuaHRtbAppbmRleCBjYjk0ZjY5ODk3ODE5YTIyZWU5MWYzZTVjNDUwZTUxNzYzYmEz
NmIwLi5kMjViNTliMDFjNzhkN2ViMjlmODNlZTk1NDQwMjJkYzZiMTQ2Y2M3IDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwt
c25hcC1tYW5kYXRvcnktb3ZlcmZsb3ctc3RhdGVsZXNzLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMv
dGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtbWFuZGF0b3J5
LW92ZXJmbG93LXN0YXRlbGVzcy5odG1sCkBAIC02OCw2ICs2OCw3IEBACiAgICAgICAgIHsKICAg
ICAgICAgICAgIGlmICh3aW5kb3cuZXZlbnRTZW5kZXIpIHsKICAgICAgICAgICAgICAgICBldmVu
dFNlbmRlci5tb25pdG9yV2hlZWxFdmVudHMoKTsKKyAgICAgICAgICAgICAgICBpbnRlcm5hbHMu
c2V0UGxhdGZvcm1Nb21lbnR1bVNjcm9sbGluZ1ByZWRpY3Rpb25FbmFibGVkKGZhbHNlKTsKICAg
ICAgICAgICAgICAgICBzZXRUaW1lb3V0KHNjcm9sbFNuYXBUZXN0LCAwKTsKICAgICAgICAgICAg
IH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgdmFyIG1lc3NhZ2VMb2NhdGlvbkggPSBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCgiaXRlbTAiKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RpbGVk
LWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLW1hbmRhdG9yeS1vdmVy
Zmxvdy5odG1sIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNu
YXAvc2Nyb2xsLXNuYXAtbWFuZGF0b3J5LW92ZXJmbG93Lmh0bWwKaW5kZXggYjM2ZmRkNTg4Nzcw
ZGYyZjZiZTQxN2U5ZTNlZTdhMDk1YTQwZDdmZC4uZjczMmYzYTlkMmU5MjMxODU3ZWRlZTA5NWY1
NzQxZTE0OWI2MzdkMyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3Jv
bGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtbWFuZGF0b3J5LW92ZXJmbG93Lmh0bWwKKysr
IGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xs
LXNuYXAtbWFuZGF0b3J5LW92ZXJmbG93Lmh0bWwKQEAgLTE2Nyw2ICsxNjcsNyBAQAogICAgICAg
ICB7CiAgICAgICAgICAgICBpZiAod2luZG93LmV2ZW50U2VuZGVyKSB7CiAgICAgICAgICAgICAg
ICAgZXZlbnRTZW5kZXIubW9uaXRvcldoZWVsRXZlbnRzKCk7CisgICAgICAgICAgICAgICAgaW50
ZXJuYWxzLnNldFBsYXRmb3JtTW9tZW50dW1TY3JvbGxpbmdQcmVkaWN0aW9uRW5hYmxlZChmYWxz
ZSk7CiAgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVU
ZXN0KCdob3Jpem9udGFsVGFyZ2V0JykgfSwgMCk7CiAgICAgICAgICAgICB9IGVsc2UgewogICAg
ICAgICAgICAgICAgIHZhciBtZXNzYWdlTG9jYXRpb25IID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoJ2l0ZW1IMCcpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3Jv
bGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtbWFuZGF0b3J5LXBhZGRpbmcuaHRtbCBiL0xh
eW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFw
LW1hbmRhdG9yeS1wYWRkaW5nLmh0bWwKaW5kZXggMGExMTdkY2Q2NGY5NWY2MTc1NDhmOThiYzA1
NTkzNGY5ZGJjMGUwZi4uNWRiYzFjZjAwYTcxODU0ZjcyZmVkOTE1ZDFlNDhmYzAxNDdhODUzNiAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNu
YXAvc2Nyb2xsLXNuYXAtbWFuZGF0b3J5LXBhZGRpbmcuaHRtbAorKysgYi9MYXlvdXRUZXN0cy90
aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1tYW5kYXRvcnkt
cGFkZGluZy5odG1sCkBAIC0xNzcsNiArMTc3LDcgQEAKICAgICAgICAgewogICAgICAgICAgICAg
aWYgKHdpbmRvdy5ldmVudFNlbmRlcikgewogICAgICAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1v
bml0b3JXaGVlbEV2ZW50cygpOworICAgICAgICAgICAgICAgIGludGVybmFscy5zZXRQbGF0Zm9y
bU1vbWVudHVtU2Nyb2xsaW5nUHJlZGljdGlvbkVuYWJsZWQoZmFsc2UpOwogICAgICAgICAgICAg
ICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVzdCgnaG9yaXpvbnRhbFRh
cmdldCcpIH0sIDApOwogICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICB2YXIg
bWVzc2FnZUxvY2F0aW9uSCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdpdGVtSDAnKTsKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFw
L3Njcm9sbC1zbmFwLW1hbmRhdG9yeS1yb3RhdGVkLmh0bWwgYi9MYXlvdXRUZXN0cy90aWxlZC1k
cmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1tYW5kYXRvcnktcm90YXRl
ZC5odG1sCmluZGV4IGM5MzAxYWQ5MzllZjIwNTcwMDczMWY2ODA2NmE4ZTc3ZGIxNWYyNWYuLmM0
ZWU5NDczOGE4MDJhY2ZkZjMyYjFmODI0Nzc3ZTUzZTcyN2Y3YWMgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLW1h
bmRhdG9yeS1yb3RhdGVkLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3Jv
bGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtbWFuZGF0b3J5LXJvdGF0ZWQuaHRtbApAQCAt
MTY5LDYgKzE2OSw3IEBACiAgICAgICAgIHsKICAgICAgICAgICAgIGlmICh3aW5kb3cuZXZlbnRT
ZW5kZXIpIHsKICAgICAgICAgICAgICAgICBldmVudFNlbmRlci5tb25pdG9yV2hlZWxFdmVudHMo
KTsKKyAgICAgICAgICAgICAgICBpbnRlcm5hbHMuc2V0UGxhdGZvcm1Nb21lbnR1bVNjcm9sbGlu
Z1ByZWRpY3Rpb25FbmFibGVkKGZhbHNlKTsKICAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1
bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3QoJ2hvcml6b250YWxUYXJnZXQnKSB9LCAwKTsKICAg
ICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgdmFyIG1lc3NhZ2VMb2NhdGlvbkgg
PSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnaXRlbUgwJyk7CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1tYW5k
YXRvcnktdGhlbi1wcm94aW1pdHktZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJh
d2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtbWFuZGF0b3J5LXRoZW4tcHJv
eGltaXR5LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hYTAzZjEzYzJlZDNiZTFhNDExN2Q4OWJm
Mzk4NzE0OGRhOTA4YTIwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJh
d2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtbWFuZGF0b3J5LXRoZW4tcHJv
eGltaXR5LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDcgQEAKK1Njcm9sbGluZyBpbiBjb250YWlu
ZXIgd2l0aCBzY3JvbGwtc25hcC10eXBlOiB5IG1hbmRhdG9yeQorLSBEaWQgdGhlIHNjcm9sbGlu
ZyBzbmFwIHRvIHRoZSB0b3A/IE5PCistIERpZCBzY3JvbGxpbmcgc25hcCB0byB0aGUgc2Vjb25k
IGJveD8gWUVTCitTY3JvbGxpbmcgaW4gY29udGFpbmVyIHdpdGggc2Nyb2xsLXNuYXAtdHlwZTog
eSBwcm94aW1pdHkKKy0gRGlkIHRoZSBzY3JvbGxpbmcgc25hcCB0byB0aGUgdG9wPyBOTworLSBE
aWQgc2Nyb2xsaW5nIHNuYXAgdG8gdGhlIHNlY29uZCBib3g/IE5PCisKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFw
LW1hbmRhdG9yeS10aGVuLXByb3hpbWl0eS5odG1sIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2lu
Zy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtbWFuZGF0b3J5LXRoZW4tcHJveGlt
aXR5Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNDJmZWRlZDU2NDA1YTAxYzk1NmY2NjE3ZjA4NjcxYjU5MmE3
ZjI1NgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xs
aW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLW1hbmRhdG9yeS10aGVuLXByb3hpbWl0eS5odG1s
CkBAIC0wLDAgKzEsODIgQEAKKzwhRE9DVFlQRSBIVE1MPgorPGh0bWw+CisgICAgPGhlYWQ+Cisg
ICAgICAgIDxzdHlsZT4KKyAgICAgICAgICAgIGJvZHkgeworICAgICAgICAgICAgICAgIG1hcmdp
bjogMDsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdzogaGlkZGVuOworICAgICAgICAgICAgfQor
CisgICAgICAgICAgICAjY29udGFpbmVyIHsKKyAgICAgICAgICAgICAgICB3aWR0aDogNjAwcHg7
CisgICAgICAgICAgICAgICAgaGVpZ2h0OiA2MDBweDsKKyAgICAgICAgICAgICAgICBwb3NpdGlv
bjogYWJzb2x1dGU7CisgICAgICAgICAgICAgICAgdG9wOiAwOworICAgICAgICAgICAgICAgIGxl
ZnQ6IDA7CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteDogbm9uZTsKKyAgICAgICAgICAgICAg
ICBvdmVyZmxvdy15OiBzY3JvbGw7CisgICAgICAgICAgICAgICAgc2Nyb2xsLXNuYXAtdHlwZTog
eSBtYW5kYXRvcnk7CisgICAgICAgICAgICAgICAgb3BhY2l0eTogMC41OworICAgICAgICAgICAg
fQorCisgICAgICAgICAgICAuYXJlYSB7CisgICAgICAgICAgICAgICAgaGVpZ2h0OiA2MDBweDsK
KyAgICAgICAgICAgICAgICB3aWR0aDogNjAwcHg7CisgICAgICAgICAgICAgICAgZmxvYXQ6IGxl
ZnQ7CisgICAgICAgICAgICAgICAgc2Nyb2xsLXNuYXAtYWxpZ246IHN0YXJ0OworICAgICAgICAg
ICAgfQorICAgICAgICA8L3N0eWxlPgorICAgICAgICA8c2NyaXB0PgorICAgICAgICBsZXQgd3Jp
dGUgPSBzID0+IG91dHB1dC5pbm5lckhUTUwgKz0gcyArICI8YnI+IjsKKyAgICAgICAgaWYgKHdp
bmRvdy50ZXN0UnVubmVyKSB7CisgICAgICAgICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsK
KyAgICAgICAgICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOworICAgICAgICB9CisKKyAg
ICAgICAgZnVuY3Rpb24gdmVydGljYWxTY3JvbGxJbkNvbnRhaW5lcihkcmFnRGVsdGFzLCBtb21l
bnR1bURlbHRhcykKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKHJl
c29sdmUgPT4geworICAgICAgICAgICAgICAgIHdyaXRlKGBTY3JvbGxpbmcgaW4gJHtjb250YWlu
ZXIuaWR9IHdpdGggc2Nyb2xsLXNuYXAtdHlwZTogJHtnZXRDb21wdXRlZFN0eWxlKGNvbnRhaW5l
cikuc2Nyb2xsU25hcFR5cGV9YCk7CisgICAgICAgICAgICAgICAgZXZlbnRTZW5kZXIubW9uaXRv
cldoZWVsRXZlbnRzKCk7CisgICAgICAgICAgICAgICAgaW50ZXJuYWxzLnNldFBsYXRmb3JtTW9t
ZW50dW1TY3JvbGxpbmdQcmVkaWN0aW9uRW5hYmxlZChmYWxzZSk7CisgICAgICAgICAgICAgICAg
ZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oMzAwLCAzMDApOworICAgICAgICAgICAgICAgIGRyYWdE
ZWx0YXMuZm9yRWFjaCgoZGVsdGEsIGkpID0+IGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRo
V2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCBkZWx0YSwgaSA9PSAwID8gImJlZ2FuIiA6ICJjaGFu
Z2VkIiwgIm5vbmUiKSk7CisgICAgICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxC
eVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICJlbmRlZCIsICJub25lIik7CisgICAg
ICAgICAgICAgICAgaWYgKG1vbWVudHVtRGVsdGFzICYmIG1vbWVudHVtRGVsdGFzLmxlbmd0aCkg
eworICAgICAgICAgICAgICAgICAgICBtb21lbnR1bURlbHRhcy5mb3JFYWNoKChkZWx0YSwgaSkg
PT4gZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAs
IGRlbHRhLCAibm9uZSIsIGkgPT0gMCA/ICJiZWdpbiIgOiAiY29udGludWUiKSk7CisgICAgICAg
ICAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1
bVBoYXNlcygwLCAwLCAibm9uZSIsICJlbmQiKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAg
ICAgICAgICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKCgpID0+IHsK
KyAgICAgICAgICAgICAgICAgICAgd3JpdGUoYC0gRGlkIHRoZSBzY3JvbGxpbmcgc25hcCB0byB0
aGUgdG9wPyAke2NvbnRhaW5lci5zY3JvbGxUb3AgPT0gMCA/ICJZRVMiIDogIk5PIn1gKTsKKyAg
ICAgICAgICAgICAgICAgICAgd3JpdGUoYC0gRGlkIHNjcm9sbGluZyBzbmFwIHRvIHRoZSBzZWNv
bmQgYm94PyAke2NvbnRhaW5lci5zY3JvbGxUb3AgPT0gNjAwID8gIllFUyIgOiAiTk8ifWApOwor
ICAgICAgICAgICAgICAgICAgICBjb250YWluZXIuc3R5bGUuc2Nyb2xsU25hcFR5cGUgPSAieSBw
cm94aW1pdHkiCisgICAgICAgICAgICAgICAgICAgIGNvbnRhaW5lci5zY3JvbGxUb3AgPSAwOwor
ICAgICAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KHJlc29sdmUsIDApOworICAgICAgICAgICAg
ICAgIH0pOworICAgICAgICAgICAgfSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBy
dW4oKSB7CisgICAgICAgICAgICBpZiAoIXdpbmRvdy50ZXN0UnVubmVyIHx8ICF3aW5kb3cuZXZl
bnRTZW5kZXIpIHsKKyAgICAgICAgICAgICAgICB3cml0ZSgiVGhpcyB0ZXN0IHJlcXVpcmVzIEV2
ZW50U2VuZGVyIHN1cHBvcnQuIik7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAg
ICAgfQorCisgICAgICAgICAgICB2ZXJ0aWNhbFNjcm9sbEluQ29udGFpbmVyKG5ldyBBcnJheSgx
NikuZmlsbCgtMSksIG5ldyBBcnJheSgzKS5maWxsKC0xKSkKKyAgICAgICAgICAgICAgICAudGhl
bigoKSA9PiB2ZXJ0aWNhbFNjcm9sbEluQ29udGFpbmVyKG5ldyBBcnJheSgxNikuZmlsbCgtMSks
IG5ldyBBcnJheSgzKS5maWxsKC0xKSkpCisgICAgICAgICAgICAgICAgLnRoZW4oKCkgPT4gdGVz
dFJ1bm5lci5ub3RpZnlEb25lKCkpOworICAgICAgICB9CisgICAgICAgIDwvc2NyaXB0PgorICAg
IDwvaGVhZD4KKyAgICA8Ym9keSBvbmxvYWQ9cnVuKCk+CisgICAgICAgIDxkaXYgaWQ9ImNvbnRh
aW5lciI+CisgICAgICAgICAgICA8ZGl2IGNsYXNzPSJhcmVhIiBzdHlsZT0iYmFja2dyb3VuZC1j
b2xvcjogcmVkOyI+PC9kaXY+CisgICAgICAgICAgICA8ZGl2IGNsYXNzPSJhcmVhIiBzdHlsZT0i
YmFja2dyb3VuZC1jb2xvcjogZ3JlZW47Ij48L2Rpdj4KKyAgICAgICAgICAgIDxkaXYgY2xhc3M9
ImFyZWEiIHN0eWxlPSJiYWNrZ3JvdW5kLWNvbG9yOiBibHVlOyI+PC9kaXY+CisgICAgICAgICAg
ICA8ZGl2IGNsYXNzPSJhcmVhIiBzdHlsZT0iYmFja2dyb3VuZC1jb2xvcjogYXF1YTsiPjwvZGl2
PgorICAgICAgICAgICAgPGRpdiBjbGFzcz0iYXJlYSIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6
IHllbGxvdzsiPjwvZGl2PgorICAgICAgICAgICAgPGRpdiBjbGFzcz0iYXJlYSIgc3R5bGU9ImJh
Y2tncm91bmQtY29sb3I6IGZ1Y2hzaWE7Ij48L2Rpdj4KKyAgICAgICAgPC9kaXY+CisgICAgICAg
IDxkaXYgaWQ9Im91dHB1dCI+PC9kaXY+CisgICAgPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xs
LXNuYXAtcHJveGltaXR5LW1haW5mcmFtZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy90aWxl
ZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1wcm94aW1pdHktbWFp
bmZyYW1lLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43ZDQxMGFmNjgxMzFiM2NiMmIzYmY5ZjRm
MDJhZDhjMTgzMzllZDdkCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJh
d2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtcHJveGltaXR5LW1haW5mcmFt
ZS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxMCBAQAorU2Nyb2xsaW5nIGJvZHkgd2l0aCAyIGRy
YWcgdGlja3MKKy0gRGlkIHRoZSBzY3JvbGxpbmcgc25hcCB0byB0aGUgdG9wPyBZRVMKKy0gRGlk
IHNjcm9sbGluZyBzbmFwIHRvIHRoZSBzZWNvbmQgYm94PyBOTworU2Nyb2xsaW5nIGJvZHkgd2l0
aCAzMCBkcmFnIHRpY2tzCistIERpZCB0aGUgc2Nyb2xsaW5nIHNuYXAgdG8gdGhlIHRvcD8gTk8K
Ky0gRGlkIHNjcm9sbGluZyBzbmFwIHRvIHRoZSBzZWNvbmQgYm94PyBOTworU2Nyb2xsaW5nIGJv
ZHkgd2l0aCA2MCBkcmFnIHRpY2tzCistIERpZCB0aGUgc2Nyb2xsaW5nIHNuYXAgdG8gdGhlIHRv
cD8gTk8KKy0gRGlkIHNjcm9sbGluZyBzbmFwIHRvIHRoZSBzZWNvbmQgYm94PyBZRVMKKwpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAv
c2Nyb2xsLXNuYXAtcHJveGltaXR5LW1haW5mcmFtZS5odG1sIGIvTGF5b3V0VGVzdHMvdGlsZWQt
ZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtcHJveGltaXR5LW1haW5m
cmFtZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjY3OTk3MWIwYzY1OTNhMWUwYzEwZTIzYTZlZTFiM2U2YWE4
NDY4NzgKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9s
bGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1wcm94aW1pdHktbWFpbmZyYW1lLmh0bWwKQEAg
LTAsMCArMSw4MiBAQAorPCFET0NUWVBFIEhUTUw+Cis8aHRtbD4KKyAgICA8aGVhZD4KKyAgICAg
ICAgPHN0eWxlPgorICAgICAgICAgICAgYm9keSB7CisgICAgICAgICAgICAgICAgbWFyZ2luOiAw
OworICAgICAgICAgICAgICAgIHdpZHRoOiAxMDAlOworICAgICAgICAgICAgICAgIGhlaWdodDog
MTAwJTsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy14OiBub25lOworICAgICAgICAgICAgICAg
IG92ZXJmbG93LXk6IHNjcm9sbDsKKyAgICAgICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7
CisgICAgICAgICAgICAgICAgc2Nyb2xsLXNuYXAtdHlwZTogeSBwcm94aW1pdHk7CisgICAgICAg
ICAgICAgICAgLXdlYmtpdC1zY3JvbGwtc25hcC10eXBlOiBwcm94aW1pdHk7CisgICAgICAgICAg
ICAgICAgc2Nyb2xsLXNuYXAtdHlwZTogcHJveGltaXR5OworICAgICAgICAgICAgfQorCisgICAg
ICAgICAgICAuYXJlYSB7CisgICAgICAgICAgICAgICAgd2lkdGg6IDEwMCU7CisgICAgICAgICAg
ICAgICAgaGVpZ2h0OiAxMDAlOworICAgICAgICAgICAgICAgIGZsb2F0OiBsZWZ0OworICAgICAg
ICAgICAgICAgIG9wYWNpdHk6IDAuNTsKKyAgICAgICAgICAgICAgICBzY3JvbGwtc25hcC1hbGln
bjogc3RhcnQ7CisgICAgICAgICAgICAgICAgLXdlYmtpdC1zY3JvbGwtc25hcC1jb29yZGluYXRl
OiAwIDA7CisgICAgICAgICAgICAgICAgc2Nyb2xsLXNuYXAtY29vcmRpbmF0ZTogMCAwOworICAg
ICAgICAgICAgfQorCisgICAgICAgICAgICAjb3V0cHV0IHsKKyAgICAgICAgICAgICAgICBwb3Np
dGlvbjogZml4ZWQ7CisgICAgICAgICAgICB9CisgICAgICAgIDwvc3R5bGU+CisgICAgICAgIDxz
Y3JpcHQ+CisgICAgICAgIGxldCB3cml0ZSA9IHMgPT4gb3V0cHV0LmlubmVySFRNTCArPSBzICsg
Ijxicj4iOworICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICAgICAgICAgIHRl
c3RSdW5uZXIuZHVtcEFzVGV4dCgpOworICAgICAgICAgICAgdGVzdFJ1bm5lci53YWl0VW50aWxE
b25lKCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiB2ZXJ0aWNhbFNjcm9sbEluQm9k
eShkcmFnRGVsdGFzKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gbmV3IFByb21pc2Uo
cmVzb2x2ZSA9PiB7CisgICAgICAgICAgICAgICAgd3JpdGUoYFNjcm9sbGluZyBib2R5IHdpdGgg
JHtkcmFnRGVsdGFzLmxlbmd0aH0gZHJhZyB0aWNrc2ApOworICAgICAgICAgICAgICAgIGV2ZW50
U2VuZGVyLm1vbml0b3JXaGVlbEV2ZW50cygpOworICAgICAgICAgICAgICAgIGludGVybmFscy5z
ZXRQbGF0Zm9ybU1vbWVudHVtU2Nyb2xsaW5nUHJlZGljdGlvbkVuYWJsZWQoZmFsc2UpOworICAg
ICAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHdpbmRvdy5pbm5lcldpZHRoIC8g
Miwgd2luZG93LmlubmVySGVpZ2h0IC8gMik7CisgICAgICAgICAgICAgICAgZHJhZ0RlbHRhcy5m
b3JFYWNoKChkZWx0YSwgaSkgPT4gZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFu
ZE1vbWVudHVtUGhhc2VzKDAsIGRlbHRhLCBpID09IDAgPyAiYmVnYW4iIDogImNoYW5nZWQiLCAi
bm9uZSIpKTsKKyAgICAgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdo
ZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgImVuZGVkIiwgIm5vbmUiKTsKKyAgICAgICAgICAg
ICAgICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoKCkgPT4geworICAg
ICAgICAgICAgICAgICAgICBsZXQgYXJlYUhlaWdodCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3Io
Ii5hcmVhIikuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgICAgICAgICB3cml0ZShgLSBEaWQg
dGhlIHNjcm9sbGluZyBzbmFwIHRvIHRoZSB0b3A/ICR7ZG9jdW1lbnQuYm9keS5zY3JvbGxUb3Ag
PT0gMCA/ICJZRVMiIDogIk5PIn1gKTsKKyAgICAgICAgICAgICAgICAgICAgd3JpdGUoYC0gRGlk
IHNjcm9sbGluZyBzbmFwIHRvIHRoZSBzZWNvbmQgYm94PyAke2RvY3VtZW50LmJvZHkuc2Nyb2xs
VG9wID09IGFyZWFIZWlnaHQgPyAiWUVTIiA6ICJOTyJ9YCk7CisgICAgICAgICAgICAgICAgICAg
IGRvY3VtZW50LmJvZHkuc2Nyb2xsVG9wID0gMDsKKyAgICAgICAgICAgICAgICAgICAgc2V0VGlt
ZW91dChyZXNvbHZlLCAwKTsKKyAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIH0pOwor
ICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gcnVuKCkgeworICAgICAgICAgICAgaWYgKCF3
aW5kb3cudGVzdFJ1bm5lciB8fCAhd2luZG93LmV2ZW50U2VuZGVyKSB7CisgICAgICAgICAgICAg
ICAgd3JpdGUoIlRvIG1hbnVhbGx5IHRlc3QsIHZlcmlmeSB0aGF0IHNjcm9sbGluZyBuZWFyIG9u
ZSBvZiB0aGUgYm91bmRhcmllcyBiZXR3ZWVuIHRoZSBjb2xvcmVkIGJveGVzIik7CisgICAgICAg
ICAgICAgICAgd3JpdGUoInNuYXBzIHRvIHRoZSBlZGdlIG9mIHRoZSBuZWFyZXN0IGNvbG9yZWQg
Ym94LCBidXQgc2Nyb2xsaW5nIHNvbWV3aGVyZSBuZWFyIHRoZSBtaWRkbGUgb2YgdHdvIik7Cisg
ICAgICAgICAgICAgICAgd3JpdGUoImJveGVzIGRvZXMgbm90IGNhdXNlIHRoZSBzY3JvbGwgb2Zm
c2V0IHRvIHNuYXAuIik7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQor
CisgICAgICAgICAgICBsZXQgYXJlYUhlaWdodCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoIi5h
cmVhIikuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgdmVydGljYWxTY3JvbGxJbkJvZHkobmV3
IEFycmF5KDIpLmZpbGwoLTEpKQorICAgICAgICAgICAgICAgIC50aGVuKCgpID0+IHZlcnRpY2Fs
U2Nyb2xsSW5Cb2R5KG5ldyBBcnJheShNYXRoLnJvdW5kKGFyZWFIZWlnaHQgLyAyMCkpLmZpbGwo
LTEpKSkKKyAgICAgICAgICAgICAgICAudGhlbigoKSA9PiB2ZXJ0aWNhbFNjcm9sbEluQm9keShu
ZXcgQXJyYXkoTWF0aC5yb3VuZChhcmVhSGVpZ2h0IC8gMTApKS5maWxsKC0xKSkpCisgICAgICAg
ICAgICAgICAgLnRoZW4oKCkgPT4gdGVzdFJ1bm5lci5ub3RpZnlEb25lKCkpOworICAgICAgICB9
CisgICAgICAgIDwvc2NyaXB0PgorICAgIDwvaGVhZD4KKyAgICA8Ym9keSBvbmxvYWQ9cnVuKCk+
CisgICAgICAgIDxkaXYgY2xhc3M9ImFyZWEiIHN0eWxlPSJiYWNrZ3JvdW5kLWNvbG9yOiByZWQ7
Ij48L2Rpdj4KKyAgICAgICAgPGRpdiBjbGFzcz0iYXJlYSIgc3R5bGU9ImJhY2tncm91bmQtY29s
b3I6IGdyZWVuOyI+PC9kaXY+CisgICAgICAgIDxkaXYgY2xhc3M9ImFyZWEiIHN0eWxlPSJiYWNr
Z3JvdW5kLWNvbG9yOiBibHVlOyI+PC9kaXY+CisgICAgICAgIDxkaXYgY2xhc3M9ImFyZWEiIHN0
eWxlPSJiYWNrZ3JvdW5kLWNvbG9yOiBhcXVhOyI+PC9kaXY+CisgICAgICAgIDxkaXYgY2xhc3M9
ImFyZWEiIHN0eWxlPSJiYWNrZ3JvdW5kLWNvbG9yOiB5ZWxsb3c7Ij48L2Rpdj4KKyAgICAgICAg
PGRpdiBjbGFzcz0iYXJlYSIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6IGZ1Y2hzaWE7Ij48L2Rp
dj4KKyAgICA8L2JvZHk+CisgICAgPGRpdiBpZD0ib3V0cHV0Ij48L2Rpdj4KKzwvaHRtbD4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFw
L3Njcm9sbC1zbmFwLXByb3hpbWl0eS1vdmVyZmxvdy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0
cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1wcm94aW1p
dHktb3ZlcmZsb3ctZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmE1OWY3YTllN2IxODBjMWQ3NDUx
ODVjM2ZjYTgzMTI4NDA3YTkyZTgKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy90aWxl
ZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1wcm94aW1pdHktb3Zl
cmZsb3ctZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTAgQEAKK1Njcm9sbGluZyBpbiBjb250YWlu
ZXIgd2l0aCAyIGRyYWcgdGlja3MKKy0gRGlkIHRoZSBzY3JvbGxpbmcgc25hcCB0byB0aGUgdG9w
PyBZRVMKKy0gRGlkIHNjcm9sbGluZyBzbmFwIHRvIHRoZSBzZWNvbmQgYm94PyBOTworU2Nyb2xs
aW5nIGluIGNvbnRhaW5lciB3aXRoIDMxIGRyYWcgdGlja3MKKy0gRGlkIHRoZSBzY3JvbGxpbmcg
c25hcCB0byB0aGUgdG9wPyBOTworLSBEaWQgc2Nyb2xsaW5nIHNuYXAgdG8gdGhlIHNlY29uZCBi
b3g/IE5PCitTY3JvbGxpbmcgaW4gY29udGFpbmVyIHdpdGggNTkgZHJhZyB0aWNrcworLSBEaWQg
dGhlIHNjcm9sbGluZyBzbmFwIHRvIHRoZSB0b3A/IE5PCistIERpZCBzY3JvbGxpbmcgc25hcCB0
byB0aGUgc2Vjb25kIGJveD8gWUVTCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RpbGVkLWRy
YXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLXByb3hpbWl0eS1vdmVyZmxv
dy5odG1sIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAv
c2Nyb2xsLXNuYXAtcHJveGltaXR5LW92ZXJmbG93Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNWIwNTJmZGJm
OTRjODRhM2Q4ZTBkMWEyOGZjYjUyMjAyYWVmOWYyZgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLXBy
b3hpbWl0eS1vdmVyZmxvdy5odG1sCkBAIC0wLDAgKzEsODQgQEAKKzwhRE9DVFlQRSBIVE1MPgor
PGh0bWw+CisgICAgPGhlYWQ+CisgICAgICAgIDxzdHlsZT4KKyAgICAgICAgICAgIGJvZHkgewor
ICAgICAgICAgICAgICAgIG1hcmdpbjogMDsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdzogaGlk
ZGVuOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAjY29udGFpbmVyIHsKKyAgICAgICAg
ICAgICAgICB3aWR0aDogNjAwcHg7CisgICAgICAgICAgICAgICAgaGVpZ2h0OiA2MDBweDsKKyAg
ICAgICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CisgICAgICAgICAgICAgICAgdG9wOiAw
OworICAgICAgICAgICAgICAgIGxlZnQ6IDA7CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteDog
bm9uZTsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy15OiBzY3JvbGw7CisgICAgICAgICAgICAg
ICAgc2Nyb2xsLXNuYXAtdHlwZTogeSBwcm94aW1pdHk7CisgICAgICAgICAgICAgICAgLXdlYmtp
dC1zY3JvbGwtc25hcC10eXBlOiBwcm94aW1pdHk7CisgICAgICAgICAgICAgICAgc2Nyb2xsLXNu
YXAtdHlwZTogcHJveGltaXR5OworICAgICAgICAgICAgICAgIG9wYWNpdHk6IDAuNTsKKyAgICAg
ICAgICAgIH0KKworICAgICAgICAgICAgLmFyZWEgeworICAgICAgICAgICAgICAgIGhlaWdodDog
NjAwcHg7CisgICAgICAgICAgICAgICAgd2lkdGg6IDYwMHB4OworICAgICAgICAgICAgICAgIGZs
b2F0OiBsZWZ0OworICAgICAgICAgICAgICAgIHNjcm9sbC1zbmFwLWFsaWduOiBzdGFydDsKKyAg
ICAgICAgICAgICAgICAtd2Via2l0LXNjcm9sbC1zbmFwLWNvb3JkaW5hdGU6IDAgMDsKKyAgICAg
ICAgICAgICAgICBzY3JvbGwtc25hcC1jb29yZGluYXRlOiAwIDA7CisgICAgICAgICAgICB9Cisg
ICAgICAgIDwvc3R5bGU+CisgICAgICAgIDxzY3JpcHQ+CisgICAgICAgIGxldCB3cml0ZSA9IHMg
PT4gb3V0cHV0LmlubmVySFRNTCArPSBzICsgIjxicj4iOworICAgICAgICBpZiAod2luZG93LnRl
c3RSdW5uZXIpIHsKKyAgICAgICAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOworICAgICAg
ICAgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CisgICAgICAgIH0KKworICAgICAgICBm
dW5jdGlvbiB2ZXJ0aWNhbFNjcm9sbEluQ29udGFpbmVyKGRyYWdEZWx0YXMpCisgICAgICAgIHsK
KyAgICAgICAgICAgIHJldHVybiBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHsKKyAgICAgICAgICAg
ICAgICB3cml0ZShgU2Nyb2xsaW5nIGluICR7Y29udGFpbmVyLmlkfSB3aXRoICR7ZHJhZ0RlbHRh
cy5sZW5ndGh9IGRyYWcgdGlja3NgKTsKKyAgICAgICAgICAgICAgICBldmVudFNlbmRlci5tb25p
dG9yV2hlZWxFdmVudHMoKTsKKyAgICAgICAgICAgICAgICBpbnRlcm5hbHMuc2V0UGxhdGZvcm1N
b21lbnR1bVNjcm9sbGluZ1ByZWRpY3Rpb25FbmFibGVkKGZhbHNlKTsKKyAgICAgICAgICAgICAg
ICBldmVudFNlbmRlci5tb3VzZU1vdmVUbygzMDAsIDMwMCk7CisgICAgICAgICAgICAgICAgZHJh
Z0RlbHRhcy5mb3JFYWNoKChkZWx0YSwgaSkgPT4gZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdp
dGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIGRlbHRhLCBpID09IDAgPyAiYmVnYW4iIDogImNo
YW5nZWQiLCAibm9uZSIpKTsKKyAgICAgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9s
bEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgImVuZGVkIiwgIm5vbmUiKTsKKyAg
ICAgICAgICAgICAgICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoKCkg
PT4geworICAgICAgICAgICAgICAgICAgICB3cml0ZShgLSBEaWQgdGhlIHNjcm9sbGluZyBzbmFw
IHRvIHRoZSB0b3A/ICR7Y29udGFpbmVyLnNjcm9sbFRvcCA9PSAwID8gIllFUyIgOiAiTk8ifWAp
OworICAgICAgICAgICAgICAgICAgICB3cml0ZShgLSBEaWQgc2Nyb2xsaW5nIHNuYXAgdG8gdGhl
IHNlY29uZCBib3g/ICR7Y29udGFpbmVyLnNjcm9sbFRvcCA9PSA2MDAgPyAiWUVTIiA6ICJOTyJ9
YCk7CisgICAgICAgICAgICAgICAgICAgIGNvbnRhaW5lci5zY3JvbGxUb3AgPSAwOworICAgICAg
ICAgICAgICAgICAgICBzZXRUaW1lb3V0KHJlc29sdmUsIDApOworICAgICAgICAgICAgICAgIH0p
OworICAgICAgICAgICAgfSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBydW4oKSB7
CisgICAgICAgICAgICBpZiAoIXdpbmRvdy50ZXN0UnVubmVyIHx8ICF3aW5kb3cuZXZlbnRTZW5k
ZXIpIHsKKyAgICAgICAgICAgICAgICB3cml0ZSgiVG8gbWFudWFsbHkgdGVzdCwgdmVyaWZ5IHRo
YXQgc2Nyb2xsaW5nIG5lYXIgb25lIG9mIHRoZSBib3VuZGFyaWVzIGJldHdlZW4gdGhlIGNvbG9y
ZWQgYm94ZXMiKTsKKyAgICAgICAgICAgICAgICB3cml0ZSgic25hcHMgdG8gdGhlIGVkZ2Ugb2Yg
dGhlIG5lYXJlc3QgY29sb3JlZCBib3gsIGJ1dCBzY3JvbGxpbmcgc29tZXdoZXJlIG5lYXIgdGhl
IG1pZGRsZSBvZiB0d28iKTsKKyAgICAgICAgICAgICAgICB3cml0ZSgiYm94ZXMgZG9lcyBub3Qg
Y2F1c2UgdGhlIHNjcm9sbCBvZmZzZXQgdG8gc25hcC4iKTsKKyAgICAgICAgICAgICAgICByZXR1
cm47CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZlcnRpY2FsU2Nyb2xsSW5Db250YWlu
ZXIobmV3IEFycmF5KDIpLmZpbGwoLTEpKQorICAgICAgICAgICAgICAgIC50aGVuKCgpID0+IHZl
cnRpY2FsU2Nyb2xsSW5Db250YWluZXIobmV3IEFycmF5KDMxKS5maWxsKC0xKSkpCisgICAgICAg
ICAgICAgICAgLnRoZW4oKCkgPT4gdmVydGljYWxTY3JvbGxJbkNvbnRhaW5lcihuZXcgQXJyYXko
NTkpLmZpbGwoLTEpKSkKKyAgICAgICAgICAgICAgICAudGhlbigoKSA9PiB0ZXN0UnVubmVyLm5v
dGlmeURvbmUoKSk7CisgICAgICAgIH0KKyAgICAgICAgPC9zY3JpcHQ+CisgICAgPC9oZWFkPgor
ICAgIDxib2R5IG9ubG9hZD1ydW4oKT4KKyAgICAgICAgPGRpdiBpZD0iY29udGFpbmVyIj4KKyAg
ICAgICAgICAgIDxkaXYgY2xhc3M9ImFyZWEiIHN0eWxlPSJiYWNrZ3JvdW5kLWNvbG9yOiByZWQ7
Ij48L2Rpdj4KKyAgICAgICAgICAgIDxkaXYgY2xhc3M9ImFyZWEiIHN0eWxlPSJiYWNrZ3JvdW5k
LWNvbG9yOiBncmVlbjsiPjwvZGl2PgorICAgICAgICAgICAgPGRpdiBjbGFzcz0iYXJlYSIgc3R5
bGU9ImJhY2tncm91bmQtY29sb3I6IGJsdWU7Ij48L2Rpdj4KKyAgICAgICAgICAgIDxkaXYgY2xh
c3M9ImFyZWEiIHN0eWxlPSJiYWNrZ3JvdW5kLWNvbG9yOiBhcXVhOyI+PC9kaXY+CisgICAgICAg
ICAgICA8ZGl2IGNsYXNzPSJhcmVhIiBzdHlsZT0iYmFja2dyb3VuZC1jb2xvcjogeWVsbG93OyI+
PC9kaXY+CisgICAgICAgICAgICA8ZGl2IGNsYXNzPSJhcmVhIiBzdHlsZT0iYmFja2dyb3VuZC1j
b2xvcjogZnVjaHNpYTsiPjwvZGl2PgorICAgICAgICA8L2Rpdj4KKyAgICAgICAgPGRpdiBpZD0i
b3V0cHV0Ij48L2Rpdj4KKyAgICA8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1zY3Jv
bGxpbmctanVtcHMtdG8tdG9wLmh0bWwgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9s
bGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1zY3JvbGxpbmctanVtcHMtdG8tdG9wLmh0bWwK
aW5kZXggYTZiYWQ0OWY5NzBkNTcyMDkyNzU2NDg5NmNhZjY1NzIwOGU1MDkyYS4uZmM5MTA3YjBm
Mjk2MDA3ODc4NDMxZDU3NGRmOGY3ZDVlODgxNzI4ZiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
dGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtc2Nyb2xsaW5n
LWp1bXBzLXRvLXRvcC5odG1sCisrKyBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xs
aW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLXNjcm9sbGluZy1qdW1wcy10by10b3AuaHRtbApA
QCAtMzQsNiArMzQsNyBAQAogICAgICAgICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CiAg
ICAgICAgICAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKICAgICAgICAgICAgIGV2ZW50
U2VuZGVyLm1vbml0b3JXaGVlbEV2ZW50cygpOworICAgICAgICAgICAgaW50ZXJuYWxzLnNldFBs
YXRmb3JtTW9tZW50dW1TY3JvbGxpbmdQcmVkaWN0aW9uRW5hYmxlZChmYWxzZSk7CiAgICAgICAg
ICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhjb250YWluZXIub2Zmc2V0TGVmdCArIGNvbnRh
aW5lci5jbGllbnRXaWR0aCAvIDIsIGNvbnRhaW5lci5vZmZzZXRUb3AgKyBjb250YWluZXIuY2xp
ZW50SGVpZ2h0IC8gMik7CiAKICAgICAgICAgICAgIHdyaXRlKCJTY3JvbGxpbmcgd2l0aG91dCBt
b21lbnR1bSB0byB0aGUgc2FtZSBwb3NpdGlvbiBzZXZlcmFsIHRpbWVzIikK
</data>

          </attachment>
      

    </bug>

</bugzilla>