<?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>233144</bug_id>
          
          <creation_ts>2021-11-15 13:42:45 -0800</creation_ts>
          <short_desc>Integrate motion path transforms in transformation pipeline</short_desc>
          <delta_ts>2021-11-19 16:49:32 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>CSS</component>
          <version>Safari Technology Preview</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>203847</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Kiet Ho">kiet.ho</reporter>
          <assigned_to name="Kiet Ho">kiet.ho</assigned_to>
          <cc>changseok</cc>
    
    <cc>dino</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>fred.wang</cc>
    
    <cc>glenn</cc>
    
    <cc>jonlee</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>pdr</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1815206</commentid>
    <comment_count>0</comment_count>
    <who name="Kiet Ho">kiet.ho</who>
    <bug_when>2021-11-15 13:42:45 -0800</bug_when>
    <thetext>Integrate motion path transforms in transformation pipeline</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1815422</commentid>
    <comment_count>1</comment_count>
      <attachid>444367</attachid>
    <who name="Kiet Ho">kiet.ho</who>
    <bug_when>2021-11-16 03:19:00 -0800</bug_when>
    <thetext>Created attachment 444367
WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1815595</commentid>
    <comment_count>2</comment_count>
      <attachid>444419</attachid>
    <who name="Kiet Ho">kiet.ho</who>
    <bug_when>2021-11-16 12:05:27 -0800</bug_when>
    <thetext>Created attachment 444419
WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1816141</commentid>
    <comment_count>3</comment_count>
      <attachid>444419</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2021-11-17 14:54:44 -0800</bug_when>
    <thetext>Comment on attachment 444419
WIP

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

&gt; Source/WebCore/platform/graphics/Path.cpp:567
&gt; +    apply([&amp;lastElementIsClosed](const WebCore::PathElement&amp; element) {
&gt; +        lastElementIsClosed = (element.type == PathElement::Type::CloseSubpath);
&gt; +    });

This is a bit subtle; I didn&apos;t understand at first reading. Maybe add a comment, or find a more efficient way to do this.

&gt; Source/WebCore/rendering/style/RenderStyle.cpp:1459
&gt; +static std::optional&lt;Path&gt; getPathFromPathOperation(const FloatRect&amp; box, const PathOperation* operation)

It looks like the only caller null-checks already, so it would be nicer if this took a const PathOperation&amp;.

&gt; Source/WebCore/rendering/style/RenderStyle.cpp:1474
&gt; +    auto distanceValue = floatValueForLength(distance, pathLength);

Do we have enough context here to resolve things like viewport units and calc() in the Length here? I think not. Maybe the caller needs to resolve the length first. If this is broken, it should gain some tests.

&gt; Source/WebCore/rendering/style/RenderStyle.cpp:1487
&gt; +    if (path.isClosed()) {
&gt; +        if (pathLength) {
&gt; +            resolvedLength = fmod(distanceValue, pathLength);
&gt; +            if (resolvedLength &lt; 0)
&gt; +                resolvedLength += pathLength;
&gt; +        }
&gt; +    } else
&gt; +        resolvedLength = clampTo&lt;float&gt;(distanceValue, 0, pathLength);
&gt; +
&gt; +    ASSERT(resolvedLength &gt;= 0);
&gt; +    return path.traversalStateAtLength(resolvedLength);

Maybe traversalStateAtLength() could do the &quot;isClosed&quot; check and the fmod(), so you don&apos;t even need the isClosed() implementation?

&gt; Source/WebCore/rendering/style/RenderStyle.cpp:1508
&gt; +    if (!offsetAnchor().x().isAuto())
&gt; +        anchor = floatPointForLengthPoint(offsetAnchor(), boundingBox.size()) + boundingBox.location();

Why is it OK to only check .x()?

&gt; Source/WebCore/rendering/style/RenderStyle.cpp:1514
&gt; +    FloatPoint shiftToOrigin {
&gt; +        anchor.x() - transformOrigin.x(),
&gt; +        anchor.y() - transformOrigin.y()
&gt; +    };

This could be:
auto shiftToOrigin = anchor - toFloatSize(transformOrigin);

I think it&apos;s slightly more logical for shiftToOrigin to be a FloatSize.

&gt; Source/WebCore/rendering/style/RenderStyle.cpp:1520
&gt; +        transform.rotate(traversalState.normalAngle() + rotation.angle());

Are these angles in the correct units (radians vs. degrees)?

&gt; Source/WebCore/rendering/style/RenderStyle.h:649
&gt; +    bool hasTransform() const { return !m_rareNonInheritedData-&gt;transform-&gt;operations.operations().isEmpty() || offsetPath(); }

This makes me think that we need to examine all callers of hasTransformRelatedProperty() to see if they need offsetPath handling.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1816668</commentid>
    <comment_count>4</comment_count>
      <attachid>444419</attachid>
    <who name="Kiet Ho">kiet.ho</who>
    <bug_when>2021-11-18 15:48:16 -0800</bug_when>
    <thetext>Comment on attachment 444419
WIP

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

&gt;&gt; Source/WebCore/platform/graphics/Path.cpp:567
&gt;&gt; +    });
&gt; 
&gt; This is a bit subtle; I didn&apos;t understand at first reading. Maybe add a comment, or find a more efficient way to do this.

I&apos;ll add a comment.

&gt;&gt; Source/WebCore/rendering/style/RenderStyle.cpp:1459
&gt;&gt; +static std::optional&lt;Path&gt; getPathFromPathOperation(const FloatRect&amp; box, const PathOperation* operation)
&gt; 
&gt; It looks like the only caller null-checks already, so it would be nicer if this took a const PathOperation&amp;.

Will fix.

&gt;&gt; Source/WebCore/rendering/style/RenderStyle.cpp:1474
&gt;&gt; +    auto distanceValue = floatValueForLength(distance, pathLength);
&gt; 
&gt; Do we have enough context here to resolve things like viewport units and calc() in the Length here? I think not. Maybe the caller needs to resolve the length first. If this is broken, it should gain some tests.

offset-distance is first parsed into a CSSPrimitiveValue, then it&apos;s converted to a Length using BuilderConverter::convertLength. I briefly went through the code, and it properly handles all CSS units and calc().

&gt;&gt; Source/WebCore/rendering/style/RenderStyle.cpp:1487
&gt;&gt; +    return path.traversalStateAtLength(resolvedLength);
&gt; 
&gt; Maybe traversalStateAtLength() could do the &quot;isClosed&quot; check and the fmod(), so you don&apos;t even need the isClosed() implementation?

My justification is that Path::isClose() might be useful to someone in the future, but if you want to, I can move the check into this function.

&gt;&gt; Source/WebCore/rendering/style/RenderStyle.cpp:1508
&gt;&gt; +        anchor = floatPointForLengthPoint(offsetAnchor(), boundingBox.size()) + boundingBox.location();
&gt; 
&gt; Why is it OK to only check .x()?

If offset-anchor is auto, then both x() and y() are auto. It&apos;s not possible to have an auto x() and non-auto y(), and vice versa.

&gt;&gt; Source/WebCore/rendering/style/RenderStyle.cpp:1514
&gt;&gt; +    };
&gt; 
&gt; This could be:
&gt; auto shiftToOrigin = anchor - toFloatSize(transformOrigin);
&gt; 
&gt; I think it&apos;s slightly more logical for shiftToOrigin to be a FloatSize.

Will fix.

&gt;&gt; Source/WebCore/rendering/style/RenderStyle.cpp:1520
&gt;&gt; +        transform.rotate(traversalState.normalAngle() + rotation.angle());
&gt; 
&gt; Are these angles in the correct units (radians vs. degrees)?

Both of them are in degrees.

&gt;&gt; Source/WebCore/rendering/style/RenderStyle.h:649
&gt;&gt; +    bool hasTransform() const { return !m_rareNonInheritedData-&gt;transform-&gt;operations.operations().isEmpty() || offsetPath(); }
&gt; 
&gt; This makes me think that we need to examine all callers of hasTransformRelatedProperty() to see if they need offsetPath handling.

Most certainly. I did try to go through every caller of hasTransform(), but I get overwhelmed rather quickly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1816679</commentid>
    <comment_count>5</comment_count>
      <attachid>444752</attachid>
    <who name="Kiet Ho">kiet.ho</who>
    <bug_when>2021-11-18 16:13:48 -0800</bug_when>
    <thetext>Created attachment 444752
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1816850</commentid>
    <comment_count>6</comment_count>
      <attachid>444816</attachid>
    <who name="Kiet Ho">kiet.ho</who>
    <bug_when>2021-11-19 06:59:56 -0800</bug_when>
    <thetext>Created attachment 444816
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1816933</commentid>
    <comment_count>7</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-11-19 11:06:48 -0800</bug_when>
    <thetext>&lt;rdar://problem/85611888&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1816981</commentid>
    <comment_count>8</comment_count>
      <attachid>444816</attachid>
    <who name="Dean Jackson">dino</who>
    <bug_when>2021-11-19 13:52:44 -0800</bug_when>
    <thetext>Comment on attachment 444816
Patch

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

&gt; Source/WebCore/rendering/style/RenderStyle.cpp:1468
&gt; +    // FIXME: support Reference and Box type.

Can you file a bugzilla for this and mention it here?

&gt; Source/WebCore/rendering/style/RenderStyle.cpp:1505
&gt; +    // Default value of offset-anchor is transform-origin

Nit: This comment should end with a period. However, I don&apos;t think you need the comment anyway :)

&gt; Source/WebCore/rendering/style/RenderStyle.cpp:1507
&gt; +    // Handle the case if offset-anchor is not auto

Same with this. The comment isn&apos;t necessary.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1816988</commentid>
    <comment_count>9</comment_count>
      <attachid>444851</attachid>
    <who name="Kiet Ho">kiet.ho</who>
    <bug_when>2021-11-19 14:03:10 -0800</bug_when>
    <thetext>Created attachment 444851
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1817046</commentid>
    <comment_count>10</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-11-19 16:49:28 -0800</bug_when>
    <thetext>Committed r286085 (244472@main): &lt;https://commits.webkit.org/244472@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 444851.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>444367</attachid>
            <date>2021-11-16 03:19:00 -0800</date>
            <delta_ts>2021-11-16 12:05:25 -0800</delta_ts>
            <desc>WIP</desc>
            <filename>bug-233144-20211116031859.patch</filename>
            <type>text/plain</type>
            <size>18763</size>
            <attacher name="Kiet Ho">kiet.ho</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg1ODM5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTFkMjgxM2FiYTVhOWUy
ZWFlNjQzZjkzMGMxNjgzYzU0MWJjOTMwNC4uYzQxYWUxZTI2MzQ2YzIyY2ExZDViNWNjMDk2NTdi
YzVkYzQwMzMwMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU0IEBACisyMDIxLTExLTE2ICBLaWV0
IEhvICA8dGhvMjJAYXBwbGUuY29tPgorCisgICAgICAgIEludGVncmF0ZSBtb3Rpb24gcGF0aCB0
cmFuc2Zvcm1zIGluIHRyYW5zZm9ybWF0aW9uIHBpcGVsaW5lCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzMxNDQKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHBhdGNoIHRpZXMgZXZlcnl0aGluZyB0
b2dldGhlciBhbmQgcmVuZGVycyBDU1MgTW90aW9uIFBhdGggb3V0IG9udG8gdGhlIHNjcmVlbi4K
KyAgICAgICAgTW90aW9uIHBhdGggcHJvcGVydGllcyBhcmUgZGVzdWdhcmVkIGludG8gdHdvIHRy
YW5zZm9ybWF0aW9uczogb25lIHRyYW5zbGF0ZSB0byBtb3ZlCisgICAgICAgIHRoZSBlbGVtZW50
IHRvIHRoZSBzcGVjaWZpZWQgbG9jYXRpb24gb24gdGhlIHBhdGgsIGFuZCBvbmUgcm90YXRlIHRv
IHJvdGF0ZSB0aGUgb2JqZWN0CisgICAgICAgIHRvIHRoZSBjb3JyZWN0IG9yaWVudGF0aW9uIHNw
ZWNpZmllZCBieSBvZmZzZXQtcm90YXRlLiBXaGVuIHRoZSB0cmFuc2Zvcm1hdGlvbiBtYXRyaXgK
KyAgICAgICAgaXMgY29tcHV0ZWQsIHRoZSB0d28gdHJhbnNmb3JtYXRpb25zIGFyZSBhcHBsaWVk
IGJldHdlZW4gc2NhbGUoKSBhbmQgdGhlIGluZGl2aWR1YWwKKyAgICAgICAgdHJhbnNmb3JtIGZ1
bmN0aW9ucywgYXMgc3BlY2lmaWVkIGluIHRoZSBDU1MgVHJhbnNmb3JtcyBzcGVjLgorCisgICAg
ICAgIFRlc3RzOiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9tb3Rpb24vYW5p
bWF0aW9uL3JlZnRlc3RzL29mZnNldC1wYXRoLXdpdGgtdHJhbnNmb3Jtcy0wMDEuaHRtbAorICAg
ICAgICAgICAgICAgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvbW90aW9uL29m
ZnNldC1hbmNob3ItdHJhbnNmb3JtLWJveC1maWxsLWJveC0wMDEuaHRtbAorICAgICAgICAgICAg
ICAgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvbW90aW9uL29mZnNldC1hbmNo
b3ItdHJhbnNmb3JtLWJveC1maWxsLWJveC0wMDIuaHRtbAorICAgICAgICAgICAgICAgaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvbW90aW9uL29mZnNldC1hbmNob3ItdHJhbnNm
b3JtLWJveC1maWxsLWJveC0wMDMuaHRtbAorICAgICAgICAgICAgICAgaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy9jc3MvbW90aW9uL29mZnNldC1kaXN0YW5jZS0wMDEuaHRtbAorICAg
ICAgICAgICAgICAgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvbW90aW9uL29m
ZnNldC1kaXN0YW5jZS0wMDIuaHRtbAorICAgICAgICAgICAgICAgaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy9jc3MvbW90aW9uL29mZnNldC1kaXN0YW5jZS0wMDMuaHRtbAorICAgICAg
ICAgICAgICAgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvbW90aW9uL29mZnNl
dC1kaXN0YW5jZS0wMDQuaHRtbAorICAgICAgICAgICAgICAgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9jc3MvbW90aW9uL29mZnNldC1kaXN0YW5jZS0wMDUuaHRtbAorICAgICAgICAg
ICAgICAgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvbW90aW9uL29mZnNldC1k
aXN0YW5jZS0wMDYuaHRtbAorICAgICAgICAgICAgICAgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9jc3MvbW90aW9uL29mZnNldC1kaXN0YW5jZS0wMDcuaHRtbAorICAgICAgICAgICAg
ICAgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvbW90aW9uL29mZnNldC1kaXN0
YW5jZS0wMDguaHRtbAorICAgICAgICAgICAgICAgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy9jc3MvbW90aW9uL29mZnNldC1kaXN0YW5jZS0wMDkuaHRtbAorICAgICAgICAgICAgICAg
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvbW90aW9uL29mZnNldC1wYXRoLXN0
cmluZy0wMDEuaHRtbAorICAgICAgICAgICAgICAgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy9jc3MvbW90aW9uL29mZnNldC1wYXRoLXN0cmluZy0wMDIuaHRtbAorICAgICAgICAgICAg
ICAgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvbW90aW9uL29mZnNldC1yb3Rh
dGUtMDAzLmh0bWwKKyAgICAgICAgICAgICAgIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvY3NzL21vdGlvbi9vZmZzZXQtcm90YXRlLTAwNC5odG1sCisgICAgICAgICAgICAgICBpbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9tb3Rpb24vb2Zmc2V0LXJvdGF0ZS0wMDUu
aHRtbAorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvUGF0aC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpQYXRoOjppc0Nsb3NlZCBjb25zdCk6IEFkZGVkIG1ldGhvZCB0byBkZXRlcm1pbmUg
aWYgYSBQYXRoIGlzIGNsb3NlZCAoaS5lLAorICAgICAgICB0aGUgbGFzdCBkcmF3IGNvbW1hbmQg
aXMgQ2xvc2VTdWJwYXRoKS4gVGhpcyBpcyByZXF1aXJlZCBiZWNhdXNlIG9mZnNldC1kaXN0YW5j
ZSBpcworICAgICAgICBoYW5kbGVkIGRpZmZlcmVudGx5IGRlcGVuZGluZyBvbiBpZiB0aGUgUGF0
aCBpcyBjbG9zZWQgb3Igbm90LgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL1BhdGguaDoK
KyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OnJlY29tcG9zaXRlQ2hhbmdlUmVxdWlyZXNHZW9tZXRyeVVwZGF0ZSk6IEFjY291
bnQgaW4gY2hhbmdlcyBpbiBtb3Rpb24gcGF0aCBwcm9wZXJ0aWVzLgorICAgICAgICAqIHJlbmRl
cmluZy9SZW5kZXJPYmplY3QuaDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck9iamVjdDo6aGFz
VHJhbnNmb3JtIGNvbnN0KTogQWNjb3VudCBpbiBtb3Rpb24gcGF0aCBwcm9wZXJ0aWVzLgorICAg
ICAgICAqIHJlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpyYXJlTm9uSW5oZXJpdGVkRGF0YUNoYW5nZVJlcXVpcmVzTGF5b3V0KToKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlclN0eWxlOjphcHBseVRyYW5zZm9ybSBjb25zdCk6IEFkZCBhbiBhZGRpdGlv
bmFsIHN0ZXAgdG8gYXBwbHkgbW90aW9uIHBhdGggdHJhbnNmb3Jtcy4KKyAgICAgICAgKFdlYkNv
cmU6OmdldFBhdGhGcm9tUGF0aE9wZXJhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpnZXRUcmF2
ZXJzYWxTdGF0ZUF0RGlzdGFuY2UpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OmFw
cGx5TW90aW9uUGF0aFRyYW5zZm9ybSBjb25zdCk6IEFkZGVkIG1ldGhvZCB0byBhcHBseSBtb3Rp
b24gcGF0aCB0cmFuc2Zvcm1zLgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHls
ZS5oOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6Omhhc1RyYW5zZm9ybSBjb25zdCk6
IEFjY291bnQgaW4gbW90aW9uIHBhdGggcHJvcGVydGllcy4KKwogMjAyMS0xMS0xNSAgVGFrYXNo
aSBLb21vcmkgIDxUYWthc2hpLktvbW9yaUBzb255LmNvbT4KIAogICAgICAgICBbQ3VybF0gU2Vj
dXJpdHkgaW5mb3JtYXRpb24gc29tZXRpbWVzIGRvIG5vdCBhcHBlYXIgaW4gaW5zcGVjdG9yIG5l
dHdvcmsgdGFiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Q
YXRoLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BhdGguY3BwCmluZGV4
IDQ5Nzc3YmI4N2FiNWEzOGMyNmNiNTE3ODE2MzVmMTQ0NjlkM2RhNWIuLjIwMzJmMmFkYmE2ZjNk
OGM5Y2M2MGNkNWQ4NmJjZDU5OTljYWE2MWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL1BhdGguY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL1BhdGguY3BwCkBAIC01NTgsNCArNTU4LDE1IEBAIFRleHRTdHJlYW0mIG9wZXJhdG9y
PDwoVGV4dFN0cmVhbSYgc3RyZWFtLCBjb25zdCBQYXRoJiBwYXRoKQogICAgIHJldHVybiBzdHJl
YW07CiB9CiAKK2Jvb2wgUGF0aDo6aXNDbG9zZWQoKSBjb25zdAoreworICAgIGJvb2wgbGFzdEVs
ZW1lbnRJc0Nsb3NlZCA9IGZhbHNlOworCisgICAgYXBwbHkoWyZsYXN0RWxlbWVudElzQ2xvc2Vk
XShjb25zdCBXZWJDb3JlOjpQYXRoRWxlbWVudCYgZWxlbWVudCkgeworICAgICAgICBsYXN0RWxl
bWVudElzQ2xvc2VkID0gKGVsZW1lbnQudHlwZSA9PSBQYXRoRWxlbWVudDo6VHlwZTo6Q2xvc2VT
dWJwYXRoKTsKKyAgICB9KTsKKworICAgIHJldHVybiBsYXN0RWxlbWVudElzQ2xvc2VkOworfQor
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QYXRoLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QYXRoLmgKaW5kZXggN2I5ODc2YWIx
Yzc4NThiNTRiODBkOTA4ZTZhODBlNTk2MjNmYmUyZi4uMzVkOWFhNTM4OTUxODY3YWY2ZDZiZmNj
MGFjOTg5MWY5MTc0OTE2NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvUGF0aC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BhdGgu
aApAQCAtMTYwLDYgKzE2MCw4IEBAIHB1YmxpYzoKICAgICBib29sIGhhc0N1cnJlbnRQb2ludCgp
IGNvbnN0OwogICAgIEZsb2F0UG9pbnQgY3VycmVudFBvaW50KCkgY29uc3Q7CiAKKyAgICBib29s
IGlzQ2xvc2VkKCkgY29uc3Q7CisKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIG1vdmVUbyhjb25z
dCBGbG9hdFBvaW50Jik7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhZGRMaW5lVG8oY29uc3Qg
RmxvYXRQb2ludCYpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYWRkUXVhZEN1cnZlVG8oY29u
c3QgRmxvYXRQb2ludCYgY29udHJvbFBvaW50LCBjb25zdCBGbG9hdFBvaW50JiBlbmRQb2ludCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3Np
dG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3Iu
Y3BwCmluZGV4IDJlNzBiYmU3Zjk2YjkzMTk0NDgxY2VhOTRjZTU0NDFmMzAzYmQwZWYuLmJmMGJm
ZGUwYzU5NjhmMWJhM2MwMTQyNmQ5YjNkZDc3MzExMmRhNGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuY3BwCkBAIC0xNjQ3LDYgKzE2
NDcsMTEgQEAgc3RhdGljIGJvb2wgcmVjb21wb3NpdGVDaGFuZ2VSZXF1aXJlc0dlb21ldHJ5VXBk
YXRlKGNvbnN0IFJlbmRlclN0eWxlJiBvbGRTdHlsZSwKICAgICAgICAgfHwgb2xkU3R5bGUucGVy
c3BlY3RpdmVPcmlnaW5YKCkgIT0gbmV3U3R5bGUucGVyc3BlY3RpdmVPcmlnaW5YKCkKICAgICAg
ICAgfHwgb2xkU3R5bGUucGVyc3BlY3RpdmVPcmlnaW5ZKCkgIT0gbmV3U3R5bGUucGVyc3BlY3Rp
dmVPcmlnaW5ZKCkKICAgICAgICAgfHwgb2xkU3R5bGUuYmFja2ZhY2VWaXNpYmlsaXR5KCkgIT0g
bmV3U3R5bGUuYmFja2ZhY2VWaXNpYmlsaXR5KCkKKyAgICAgICAgfHwgIWFyZVBvaW50aW5nVG9F
cXVhbERhdGEob2xkU3R5bGUub2Zmc2V0UGF0aCgpLCBuZXdTdHlsZS5vZmZzZXRQYXRoKCkpCisg
ICAgICAgIHx8IG9sZFN0eWxlLm9mZnNldEFuY2hvcigpICE9IG5ld1N0eWxlLm9mZnNldEFuY2hv
cigpCisgICAgICAgIHx8IG9sZFN0eWxlLm9mZnNldFBvc2l0aW9uKCkgIT0gbmV3U3R5bGUub2Zm
c2V0UG9zaXRpb24oKQorICAgICAgICB8fCBvbGRTdHlsZS5vZmZzZXREaXN0YW5jZSgpICE9IG5l
d1N0eWxlLm9mZnNldERpc3RhbmNlKCkKKyAgICAgICAgfHwgb2xkU3R5bGUub2Zmc2V0Um90YXRl
KCkgIT0gbmV3U3R5bGUub2Zmc2V0Um90YXRlKCkKICAgICAgICAgfHwgIWFyZVBvaW50aW5nVG9F
cXVhbERhdGEob2xkU3R5bGUuY2xpcFBhdGgoKSwgbmV3U3R5bGUuY2xpcFBhdGgoKSk7CiB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuaCBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuaAppbmRleCA3ZDBiZWJkYmEyNGEz
NWViMDg5Y2Y4ZGUzMzViMDUxZDk0NDI0N2QzLi5kODEyNjI4OWI2NGU1MTc4NzljZjljMzg2M2Iy
M2E0YTVjNWI1Y2MzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
T2JqZWN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5oCkBA
IC00NDMsNyArNDQzLDcgQEAgcHVibGljOgogICAgIGJvb2wgaGFzUG90ZW50aWFsbHlTY3JvbGxh
YmxlT3ZlcmZsb3coKSBjb25zdDsKIAogICAgIGJvb2wgaGFzVHJhbnNmb3JtUmVsYXRlZFByb3Bl
cnR5KCkgY29uc3QgeyByZXR1cm4gbV9iaXRmaWVsZHMuaGFzVHJhbnNmb3JtUmVsYXRlZFByb3Bl
cnR5KCk7IH0gLy8gVHJhbnNmb3JtLCBwZXJzcGVjdGl2ZSBvciB0cmFuc2Zvcm0tc3R5bGU6IHBy
ZXNlcnZlLTNkLgotICAgIGJvb2wgaGFzVHJhbnNmb3JtKCkgY29uc3QgeyByZXR1cm4gaGFzVHJh
bnNmb3JtUmVsYXRlZFByb3BlcnR5KCkgJiYgKHN0eWxlKCkuaGFzVHJhbnNmb3JtKCkgfHwgc3R5
bGUoKS50cmFuc2xhdGUoKSB8fCBzdHlsZSgpLnNjYWxlKCkgfHwgc3R5bGUoKS5yb3RhdGUoKSk7
IH0KKyAgICBib29sIGhhc1RyYW5zZm9ybSgpIGNvbnN0IHsgcmV0dXJuIGhhc1RyYW5zZm9ybVJl
bGF0ZWRQcm9wZXJ0eSgpICYmIChzdHlsZSgpLmhhc1RyYW5zZm9ybSgpIHx8IHN0eWxlKCkudHJh
bnNsYXRlKCkgfHwgc3R5bGUoKS5zY2FsZSgpIHx8IHN0eWxlKCkucm90YXRlKCkgfHwgc3R5bGUo
KS5vZmZzZXRQYXRoKCkpOyB9CiAKICAgICBpbmxpbmUgYm9vbCBwcmVzZXJ2ZXNOZXdsaW5lKCkg
Y29uc3Q7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5k
ZXJTdHlsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUu
Y3BwCmluZGV4IDNhZjllMTUwZWUwYjBhMzVhZTU5ZWZkZTVlZDI3ODAzYmVkZjY0NmUuLmE2ZTBm
ZDRmOGNlOGFlYjJjZjhmYTQ1MjM3YjU3YzEwMDk5MmQ5NjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmNwcApAQCAtMzYsNiArMzYsNyBAQAogI2lu
Y2x1ZGUgIklubGluZUl0ZXJhdG9yVGV4dEJveC5oIgogI2luY2x1ZGUgIklubGluZVRleHRCb3hT
dHlsZS5oIgogI2luY2x1ZGUgIlBhZ2luYXRpb24uaCIKKyNpbmNsdWRlICJQYXRoVHJhdmVyc2Fs
U3RhdGUuaCIKICNpbmNsdWRlICJRdW90ZXNEYXRhLmgiCiAjaW5jbHVkZSAiUmVuZGVyQmxvY2su
aCIKICNpbmNsdWRlICJSZW5kZXJPYmplY3QuaCIKQEAgLTY5OCw2ICs2OTksMTMgQEAgc3RhdGlj
IGJvb2wgcmFyZU5vbkluaGVyaXRlZERhdGFDaGFuZ2VSZXF1aXJlc0xheW91dChjb25zdCBTdHls
ZVJhcmVOb25Jbmhlcml0ZWQKICAgICAgICAgfHwgIWFyZVBvaW50aW5nVG9FcXVhbERhdGEoZmly
c3QudHJhbnNsYXRlLCBzZWNvbmQudHJhbnNsYXRlKSkKICAgICAgICAgY2hhbmdlZENvbnRleHRT
ZW5zaXRpdmVQcm9wZXJ0aWVzLmFkZChTdHlsZURpZmZlcmVuY2VDb250ZXh0U2Vuc2l0aXZlUHJv
cGVydHk6OlRyYW5zZm9ybSk7CiAKKyAgICBpZiAoIWFyZVBvaW50aW5nVG9FcXVhbERhdGEoZmly
c3Qub2Zmc2V0UGF0aCwgc2Vjb25kLm9mZnNldFBhdGgpCisgICAgICAgIHx8IGZpcnN0Lm9mZnNl
dFBvc2l0aW9uICE9IHNlY29uZC5vZmZzZXRQb3NpdGlvbgorICAgICAgICB8fCBmaXJzdC5vZmZz
ZXREaXN0YW5jZSAhPSBzZWNvbmQub2Zmc2V0RGlzdGFuY2UKKyAgICAgICAgfHwgZmlyc3Qub2Zm
c2V0QW5jaG9yICE9IHNlY29uZC5vZmZzZXRBbmNob3IKKyAgICAgICAgfHwgZmlyc3Qub2Zmc2V0
Um90YXRlICE9IHNlY29uZC5vZmZzZXRSb3RhdGUpCisgICAgICAgIGNoYW5nZWRDb250ZXh0U2Vu
c2l0aXZlUHJvcGVydGllcy5hZGQoU3R5bGVEaWZmZXJlbmNlQ29udGV4dFNlbnNpdGl2ZVByb3Bl
cnR5OjpUcmFuc2Zvcm0pOworCiAgICAgaWYgKGZpcnN0LmdyaWQgIT0gc2Vjb25kLmdyaWQKICAg
ICAgICAgfHwgZmlyc3QuZ3JpZEl0ZW0gIT0gc2Vjb25kLmdyaWRJdGVtKQogICAgICAgICByZXR1
cm4gdHJ1ZTsKQEAgLTE0MzUsNyArMTQ0Myw5IEBAIHZvaWQgUmVuZGVyU3R5bGU6OmFwcGx5VHJh
bnNmb3JtKFRyYW5zZm9ybWF0aW9uTWF0cml4JiB0cmFuc2Zvcm0sIGNvbnN0IEZsb2F0UmVjCiAg
ICAgICAgICAgICBzY2FsZS0+YXBwbHkodHJhbnNmb3JtLCBib3VuZGluZ0JveC5zaXplKCkpOwog
ICAgIH0KIAotICAgIC8vIDYuIFRyYW5zbGF0ZSBhbmQgcm90YXRlIGJ5IHRoZSB0cmFuc2Zvcm0g
c3BlY2lmaWVkIGJ5IG9mZnNldC4gKEZJWE1FOiB3ZSBkb24ndCBzdXBwb3J0IHRoZSBvZmZzZXQg
cHJvcGVydHkpCisgICAgLy8gNi4gVHJhbnNsYXRlIGFuZCByb3RhdGUgYnkgdGhlIHRyYW5zZm9y
bSBzcGVjaWZpZWQgYnkgb2Zmc2V0LgorICAgIGlmIChvcHRpb25zLmNvbnRhaW5zKFJlbmRlclN0
eWxlOjpUcmFuc2Zvcm1PcGVyYXRpb25PcHRpb246Ok9mZnNldCkpCisgICAgICAgIGFwcGx5TW90
aW9uUGF0aFRyYW5zZm9ybSh0cmFuc2Zvcm0sIGJvdW5kaW5nQm94KTsKIAogICAgIC8vIDcuIE11
bHRpcGx5IGJ5IGVhY2ggb2YgdGhlIHRyYW5zZm9ybSBmdW5jdGlvbnMgaW4gdHJhbnNmb3JtIGZy
b20gbGVmdCB0byByaWdodC4KICAgICBmb3IgKGF1dG8mIG9wZXJhdGlvbiA6IHRyYW5zZm9ybU9w
ZXJhdGlvbnMub3BlcmF0aW9ucygpKQpAQCAtMTQ0Niw2ICsxNDU2LDc0IEBAIHZvaWQgUmVuZGVy
U3R5bGU6OmFwcGx5VHJhbnNmb3JtKFRyYW5zZm9ybWF0aW9uTWF0cml4JiB0cmFuc2Zvcm0sIGNv
bnN0IEZsb2F0UmVjCiAgICAgICAgIHRyYW5zZm9ybS50cmFuc2xhdGUzZCgtb3JpZ2luVHJhbnNs
YXRlLngoKSwgLW9yaWdpblRyYW5zbGF0ZS55KCksIC1vcmlnaW5UcmFuc2xhdGUueigpKTsKIH0K
IAorc3RhdGljIHN0ZDo6b3B0aW9uYWw8UGF0aD4gZ2V0UGF0aEZyb21QYXRoT3BlcmF0aW9uKGNv
bnN0IEZsb2F0UmVjdCYgYm94LCBjb25zdCBQYXRoT3BlcmF0aW9uKiBvcGVyYXRpb24pCit7Cisg
ICAgaWYgKCFvcGVyYXRpb24pCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICBp
ZiAob3BlcmF0aW9uLT50eXBlKCkgPT0gUGF0aE9wZXJhdGlvbjo6U2hhcGUpCisgICAgICAgIHJl
dHVybiBkb3duY2FzdDxTaGFwZVBhdGhPcGVyYXRpb24+KCpvcGVyYXRpb24pLnBhdGhGb3JSZWZl
cmVuY2VSZWN0KGJveCk7CisKKyAgICAvLyBGSVhNRTogc3VwcG9ydCBSZWZlcmVuY2UgYW5kIEJv
eCB0eXBlLgorICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Cit9CisKK3N0YXRpYyBQYXRoVHJhdmVy
c2FsU3RhdGUgZ2V0VHJhdmVyc2FsU3RhdGVBdERpc3RhbmNlKGNvbnN0IFBhdGgmIHBhdGgsIGNv
bnN0IExlbmd0aCYgZGlzdGFuY2UpCit7CisgICAgYXV0byBwYXRoTGVuZ3RoID0gcGF0aC5sZW5n
dGgoKTsKKyAgICBhdXRvIGRpc3RhbmNlVmFsdWUgPSBmbG9hdFZhbHVlRm9yTGVuZ3RoKGRpc3Rh
bmNlLCBwYXRoTGVuZ3RoKTsKKworICAgIGZsb2F0IHJlc29sdmVkTGVuZ3RoID0gMDsKKyAgICBp
ZiAocGF0aC5pc0Nsb3NlZCgpKSB7CisgICAgICAgIGlmIChwYXRoTGVuZ3RoKSB7CisgICAgICAg
ICAgICByZXNvbHZlZExlbmd0aCA9IGZtb2QoZGlzdGFuY2VWYWx1ZSwgcGF0aExlbmd0aCk7Cisg
ICAgICAgICAgICBpZiAocmVzb2x2ZWRMZW5ndGggPCAwKQorICAgICAgICAgICAgICAgIHJlc29s
dmVkTGVuZ3RoICs9IHBhdGhMZW5ndGg7CisgICAgICAgIH0KKyAgICB9IGVsc2UKKyAgICAgICAg
cmVzb2x2ZWRMZW5ndGggPSBjbGFtcFRvPGZsb2F0PihkaXN0YW5jZVZhbHVlLCAwLCBwYXRoTGVu
Z3RoKTsKKworICAgIEFTU0VSVChyZXNvbHZlZExlbmd0aCA+PSAwKTsKKyAgICByZXR1cm4gcGF0
aC50cmF2ZXJzYWxTdGF0ZUF0TGVuZ3RoKHJlc29sdmVkTGVuZ3RoKTsKK30KKwordm9pZCBSZW5k
ZXJTdHlsZTo6YXBwbHlNb3Rpb25QYXRoVHJhbnNmb3JtKFRyYW5zZm9ybWF0aW9uTWF0cml4JiB0
cmFuc2Zvcm0sIGNvbnN0IEZsb2F0UmVjdCYgYm91bmRpbmdCb3gpIGNvbnN0Cit7CisgICAgaWYg
KCFvZmZzZXRQYXRoKCkpCisgICAgICAgIHJldHVybjsKKworICAgIC8vIFNoaWZ0IGVsZW1lbnQg
dG8gdGhlIHBvaW50IG9uIHBhdGggc3BlY2lmaWVkIGJ5IG9mZnNldC1wYXRoIGFuZCBvZmZzZXQt
ZGlzdGFuY2UuCisgICAgYXV0byBwYXRoID0gZ2V0UGF0aEZyb21QYXRoT3BlcmF0aW9uKGJvdW5k
aW5nQm94LCBvZmZzZXRQYXRoKCkpOworICAgIGlmICghcGF0aCkKKyAgICAgICAgcmV0dXJuOwor
ICAgIGF1dG8gdHJhdmVyc2FsU3RhdGUgPSBnZXRUcmF2ZXJzYWxTdGF0ZUF0RGlzdGFuY2UoKnBh
dGgsIG9mZnNldERpc3RhbmNlKCkpOworICAgIHRyYW5zZm9ybS50cmFuc2xhdGUodHJhdmVyc2Fs
U3RhdGUuY3VycmVudCgpLngoKSwgdHJhdmVyc2FsU3RhdGUuY3VycmVudCgpLnkoKSk7CisKKyAg
ICAvLyBTaGlmdCBlbGVtZW50IHRvIHRoZSBhbmNob3Igc3BlY2lmaWVkIGJ5IG9mZnNldC1hbmNo
b3IuCisgICAgYXV0byB0cmFuc2Zvcm1PcmlnaW4gPSBib3VuZGluZ0JveC5sb2NhdGlvbigpICsg
ZmxvYXRQb2ludEZvckxlbmd0aFBvaW50KHRyYW5zZm9ybU9yaWdpblhZKCksIGJvdW5kaW5nQm94
LnNpemUoKSk7CisgICAgLy8gRGVmYXVsdCB2YWx1ZSBvZiBvZmZzZXQtYW5jaG9yIGlzIHRyYW5z
Zm9ybS1vcmlnaW4KKyAgICBhdXRvIGFuY2hvciA9IHRyYW5zZm9ybU9yaWdpbjsKKyAgICAvLyBI
YW5kbGUgdGhlIGNhc2UgaWYgb2Zmc2V0LWFuY2hvciBpcyBub3QgYXV0bworICAgIGlmICghb2Zm
c2V0UG9zaXRpb24oKS54KCkuaXNBdXRvKCkgfHwgIW9mZnNldEFuY2hvcigpLngoKS5pc0F1dG8o
KSkKKyAgICAgICAgYW5jaG9yID0gZmxvYXRQb2ludEZvckxlbmd0aFBvaW50KG9mZnNldEFuY2hv
cigpLCBib3VuZGluZ0JveC5zaXplKCkpICsgYm91bmRpbmdCb3gubG9jYXRpb24oKTsKKyAgICB0
cmFuc2Zvcm0udHJhbnNsYXRlKC1hbmNob3IueCgpLCAtYW5jaG9yLnkoKSk7CisKKyAgICBGbG9h
dFBvaW50IHNoaWZ0VG9PcmlnaW4geworICAgICAgICBhbmNob3IueCgpIC0gdHJhbnNmb3JtT3Jp
Z2luLngoKSwKKyAgICAgICAgYW5jaG9yLnkoKSAtIHRyYW5zZm9ybU9yaWdpbi55KCkKKyAgICB9
OworICAgIHRyYW5zZm9ybS50cmFuc2xhdGUoc2hpZnRUb09yaWdpbi54KCksIHNoaWZ0VG9Pcmln
aW4ueSgpKTsKKworICAgIC8vIEFwcGx5IHJvdGF0aW9uLgorICAgIGF1dG8gcm90YXRpb24gPSBv
ZmZzZXRSb3RhdGUoKTsKKyAgICBpZiAocm90YXRpb24uaGFzQXV0bygpKQorICAgICAgICB0cmFu
c2Zvcm0ucm90YXRlKHRyYXZlcnNhbFN0YXRlLm5vcm1hbEFuZ2xlKCkgKyByb3RhdGlvbi5hbmds
ZSgpKTsKKyAgICBlbHNlCisgICAgICAgIHRyYW5zZm9ybS5yb3RhdGUocm90YXRpb24uYW5nbGUo
KSk7CisKKyAgICB0cmFuc2Zvcm0udHJhbnNsYXRlKC1zaGlmdFRvT3JpZ2luLngoKSwgLXNoaWZ0
VG9PcmlnaW4ueSgpKTsKK30KKwogdm9pZCBSZW5kZXJTdHlsZTo6c2V0UGFnZVNjYWxlVHJhbnNm
b3JtKGZsb2F0IHNjYWxlKQogewogICAgIGlmIChzY2FsZSA9PSAxKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmggYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuaAppbmRleCA4YmVmYWU0ZjY3ZDUwNTc0ZjJm
ZDZkMmQxYTNhNzYzZGMyN2JmNTRjLi43NzFjMjcxZWZiNzc5NDkyNzE1NjliZTMxNjc4OGFjYWE5
NTZhMmIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVy
U3R5bGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUu
aApAQCAtNjQ2LDcgKzY0Niw3IEBAIHB1YmxpYzoKICAgICBDb2x1bW5TcGFuIGNvbHVtblNwYW4o
KSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxDb2x1bW5TcGFuPihtX3JhcmVOb25Jbmhlcml0
ZWREYXRhLT5tdWx0aUNvbC0+Y29sdW1uU3Bhbik7IH0KIAogICAgIGNvbnN0IFRyYW5zZm9ybU9w
ZXJhdGlvbnMmIHRyYW5zZm9ybSgpIGNvbnN0IHsgcmV0dXJuIG1fcmFyZU5vbkluaGVyaXRlZERh
dGEtPnRyYW5zZm9ybS0+b3BlcmF0aW9uczsgfQotICAgIGJvb2wgaGFzVHJhbnNmb3JtKCkgY29u
c3QgeyByZXR1cm4gIW1fcmFyZU5vbkluaGVyaXRlZERhdGEtPnRyYW5zZm9ybS0+b3BlcmF0aW9u
cy5vcGVyYXRpb25zKCkuaXNFbXB0eSgpOyB9CisgICAgYm9vbCBoYXNUcmFuc2Zvcm0oKSBjb25z
dCB7IHJldHVybiAhbV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+dHJhbnNmb3JtLT5vcGVyYXRpb25z
Lm9wZXJhdGlvbnMoKS5pc0VtcHR5KCkgfHwgb2Zmc2V0UGF0aCgpOyB9CiAgICAgY29uc3QgTGVu
Z3RoJiB0cmFuc2Zvcm1PcmlnaW5YKCkgY29uc3QgeyByZXR1cm4gbV9yYXJlTm9uSW5oZXJpdGVk
RGF0YS0+dHJhbnNmb3JtLT54OyB9CiAgICAgY29uc3QgTGVuZ3RoJiB0cmFuc2Zvcm1PcmlnaW5Z
KCkgY29uc3QgeyByZXR1cm4gbV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+dHJhbnNmb3JtLT55OyB9
CiAgICAgZmxvYXQgdHJhbnNmb3JtT3JpZ2luWigpIGNvbnN0IHsgcmV0dXJuIG1fcmFyZU5vbklu
aGVyaXRlZERhdGEtPnRyYW5zZm9ybS0+ejsgfQpAQCAtNjg1LDEyICs2ODUsMTQgQEAgcHVibGlj
OgogICAgICAgICBUcmFuc2Zvcm1PcmlnaW4gPSAxIDw8IDAsCiAgICAgICAgIFRyYW5zbGF0ZSAg
ICAgICA9IDEgPDwgMSwKICAgICAgICAgUm90YXRlICAgICAgICAgID0gMSA8PCAyLAotICAgICAg
ICBTY2FsZSAgICAgICAgICAgPSAxIDw8IDMKKyAgICAgICAgU2NhbGUgICAgICAgICAgID0gMSA8
PCAzLAorICAgICAgICBPZmZzZXQgICAgICAgICAgPSAxIDw8IDQKICAgICB9OwogCi0gICAgc3Rh
dGljIGNvbnN0ZXhwciBPcHRpb25TZXQ8VHJhbnNmb3JtT3BlcmF0aW9uT3B0aW9uPiBhbGxUcmFu
c2Zvcm1PcGVyYXRpb25zID0geyBUcmFuc2Zvcm1PcGVyYXRpb25PcHRpb246OlRyYW5zZm9ybU9y
aWdpbiwgVHJhbnNmb3JtT3BlcmF0aW9uT3B0aW9uOjpUcmFuc2xhdGUsIFRyYW5zZm9ybU9wZXJh
dGlvbk9wdGlvbjo6Um90YXRlLCBUcmFuc2Zvcm1PcGVyYXRpb25PcHRpb246OlNjYWxlIH07Ci0g
ICAgc3RhdGljIGNvbnN0ZXhwciBPcHRpb25TZXQ8VHJhbnNmb3JtT3BlcmF0aW9uT3B0aW9uPiBp
bmRpdmlkdWFsVHJhbnNmb3JtT3BlcmF0aW9ucyA9IHsgVHJhbnNmb3JtT3BlcmF0aW9uT3B0aW9u
OjpUcmFuc2xhdGUsIFRyYW5zZm9ybU9wZXJhdGlvbk9wdGlvbjo6Um90YXRlLCBUcmFuc2Zvcm1P
cGVyYXRpb25PcHRpb246OlNjYWxlIH07CisgICAgc3RhdGljIGNvbnN0ZXhwciBPcHRpb25TZXQ8
VHJhbnNmb3JtT3BlcmF0aW9uT3B0aW9uPiBhbGxUcmFuc2Zvcm1PcGVyYXRpb25zID0geyBUcmFu
c2Zvcm1PcGVyYXRpb25PcHRpb246OlRyYW5zZm9ybU9yaWdpbiwgVHJhbnNmb3JtT3BlcmF0aW9u
T3B0aW9uOjpUcmFuc2xhdGUsIFRyYW5zZm9ybU9wZXJhdGlvbk9wdGlvbjo6Um90YXRlLCBUcmFu
c2Zvcm1PcGVyYXRpb25PcHRpb246OlNjYWxlICwgVHJhbnNmb3JtT3BlcmF0aW9uT3B0aW9uOjpP
ZmZzZXQgfTsKKyAgICBzdGF0aWMgY29uc3RleHByIE9wdGlvblNldDxUcmFuc2Zvcm1PcGVyYXRp
b25PcHRpb24+IGluZGl2aWR1YWxUcmFuc2Zvcm1PcGVyYXRpb25zID0geyBUcmFuc2Zvcm1PcGVy
YXRpb25PcHRpb246OlRyYW5zbGF0ZSwgVHJhbnNmb3JtT3BlcmF0aW9uT3B0aW9uOjpSb3RhdGUs
IFRyYW5zZm9ybU9wZXJhdGlvbk9wdGlvbjo6U2NhbGUsIFRyYW5zZm9ybU9wZXJhdGlvbk9wdGlv
bjo6T2Zmc2V0IH07CiAgICAgdm9pZCBhcHBseVRyYW5zZm9ybShUcmFuc2Zvcm1hdGlvbk1hdHJp
eCYsIGNvbnN0IEZsb2F0UmVjdCYgYm91bmRpbmdCb3gsIE9wdGlvblNldDxUcmFuc2Zvcm1PcGVy
YXRpb25PcHRpb24+ID0gYWxsVHJhbnNmb3JtT3BlcmF0aW9ucykgY29uc3Q7CisgICAgdm9pZCBh
cHBseU1vdGlvblBhdGhUcmFuc2Zvcm0oVHJhbnNmb3JtYXRpb25NYXRyaXgmLCBjb25zdCBGbG9h
dFJlY3QmIGJvdW5kaW5nQm94KSBjb25zdDsKICAgICB2b2lkIHNldFBhZ2VTY2FsZVRyYW5zZm9y
bShmbG9hdCk7CiAKICAgICBib29sIGhhc01hc2soKSBjb25zdCB7IHJldHVybiBtX3JhcmVOb25J
bmhlcml0ZWREYXRhLT5tYXNrLT5oYXNJbWFnZSgpIHx8IG1fcmFyZU5vbkluaGVyaXRlZERhdGEt
Pm1hc2tCb3hJbWFnZS5oYXNJbWFnZSgpOyB9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggNjcwMDUzOTM2NTEyNGIxODM4MjQx
Y2M5OGNhZDE2ZGE2ZWYzOGU4Ni4uZDViMmE4NjFjNTFiOTZlZGRiMDI3ZWQxZGRjNDUxMTZjZDRm
MTIzOCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3Rz
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDIxLTExLTE2ICBLaWV0IEhvICA8dGhvMjJA
YXBwbGUuY29tPgorCisgICAgICAgIEludGVncmF0ZSBtb3Rpb24gcGF0aCB0cmFuc2Zvcm1zIGlu
IHRyYW5zZm9ybWF0aW9uIHBpcGVsaW5lCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMzMxNDQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBSZW1vdmVkIEltYWdlT25seUZhaWx1cmUgZXhwZWN0YXRpb25zIGZv
ciB0ZXN0cyB0aGF0IHNob3VsZCBub3cgcGFzcy4KKworICAgICAgICAqIFRlc3RFeHBlY3RhdGlv
bnM6CisKIDIwMjEtMTEtMTUgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAg
ICAgICBgQ3Jvc3MtT3JpZ2luLUVtYmVkZGVyLVBvbGljeTogcmVxdWlyZS1jb3JwYCBwcmV2ZW50
cyBsb2FkaW5nIG9mIGRhdGEgVVJMIGltYWdlcwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvVGVz
dEV4cGVjdGF0aW9ucyBiL0xheW91dFRlc3RzL1Rlc3RFeHBlY3RhdGlvbnMKaW5kZXggM2IxNGM5
MTViNzUzZDYyM2RkZDlhZGM1NmVmNzljZmE4MDcyNThiYS4uNWQxNjYzZGQzM2NkMDQ3ZTlkMzM5
MGZlYzA4ZDk3OGQ2ODAzNmU0MCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvVGVzdEV4cGVjdGF0
aW9ucworKysgYi9MYXlvdXRUZXN0cy9UZXN0RXhwZWN0YXRpb25zCkBAIC01MTEzLDIwICs1MTEz
LDcgQEAgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jb250ZW50LXNlY3VyaXR5LXBv
bGljeS9zY3JpcHQtc3JjLyBbIER1bXBKU0NvbnMKICMgaW1wb3J0LXczYy10ZXN0cyBjb3BpZXMg
LW5vdHJlZi5odG1sIHRvIC1leHBlY3RlZC5odG1sLCBzbyBleHBlY3RlZCBpbWFnZSBmYWlsdXJl
IGhlcmUuCiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvc2VtYW50aWNzL2Zv
cm1zL3RoZS10ZXh0YXJlYS1lbGVtZW50L3BsYWNlaG9sZGVyLXdoaXRlLXNwYWNlLnRlbnRhdGl2
ZS5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCiAKLSMgQ1NTIG1vdGlvbiBwYXRoIHRlc3RzLCBj
dXJyZW50bHkgZmFpbGluZy4KLWltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL21v
dGlvbi9hbmltYXRpb24vcmVmdGVzdHMvb2Zmc2V0LXBhdGgtd2l0aC10cmFuc2Zvcm1zLTAwMS5o
dG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi1pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L2Nzcy9tb3Rpb24vb2Zmc2V0LWFuY2hvci10cmFuc2Zvcm0tYm94LWZpbGwtYm94LTAwMS5odG1s
IFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi1pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nz
cy9tb3Rpb24vb2Zmc2V0LWFuY2hvci10cmFuc2Zvcm0tYm94LWZpbGwtYm94LTAwMi5odG1sIFsg
SW1hZ2VPbmx5RmFpbHVyZSBdCi1pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9t
b3Rpb24vb2Zmc2V0LWFuY2hvci10cmFuc2Zvcm0tYm94LWZpbGwtYm94LTAwMy5odG1sIFsgSW1h
Z2VPbmx5RmFpbHVyZSBdCi1pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9tb3Rp
b24vb2Zmc2V0LWRpc3RhbmNlLTAwMS5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi1pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9tb3Rpb24vb2Zmc2V0LWRpc3RhbmNlLTAwMi5o
dG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi1pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L2Nzcy9tb3Rpb24vb2Zmc2V0LWRpc3RhbmNlLTAwMy5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBd
Ci1pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9tb3Rpb24vb2Zmc2V0LWRpc3Rh
bmNlLTAwNC5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi1pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL2Nzcy9tb3Rpb24vb2Zmc2V0LWRpc3RhbmNlLTAwNS5odG1sIFsgSW1hZ2VPbmx5
RmFpbHVyZSBdCi1pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9tb3Rpb24vb2Zm
c2V0LWRpc3RhbmNlLTAwNi5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi1pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9tb3Rpb24vb2Zmc2V0LWRpc3RhbmNlLTAwNy5odG1sIFsg
SW1hZ2VPbmx5RmFpbHVyZSBdCi1pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9t
b3Rpb24vb2Zmc2V0LWRpc3RhbmNlLTAwOC5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi1pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9tb3Rpb24vb2Zmc2V0LWRpc3RhbmNlLTAw
OS5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCisjIENTUyBtb3Rpb24gcGF0aCB0aGF0IGRlcGVu
ZHMgb24gcmF5KCksIGN1cnJlbnRseSBub3QgaW1wbGVtZW50ZWQuCiBpbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL2Nzcy9tb3Rpb24vb2Zmc2V0LXBhdGgtcmF5LTAwMS5odG1sIFsgSW1h
Z2VPbmx5RmFpbHVyZSBdCiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9tb3Rp
b24vb2Zmc2V0LXBhdGgtcmF5LTAwMi5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCiBpbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9tb3Rpb24vb2Zmc2V0LXBhdGgtcmF5LTAwMy5o
dG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCkBAIC01MTQxLDEzICs1MTI4LDggQEAgaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvbW90aW9uL29mZnNldC1wYXRoLXJheS1jb250YWlu
LTAwMi5odG1sIFsgSW0KIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL21vdGlv
bi9vZmZzZXQtcGF0aC1yYXktY29udGFpbi0wMDMuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQog
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvbW90aW9uL29mZnNldC1wYXRoLXJh
eS1jb250YWluLTAwNC5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCiBpbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL2Nzcy9tb3Rpb24vb2Zmc2V0LXBhdGgtcmF5LWNvbnRhaW4tMDA1Lmh0
bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KLWltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
Y3NzL21vdGlvbi9vZmZzZXQtcGF0aC1zdHJpbmctMDAxLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJl
IF0KLWltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL21vdGlvbi9vZmZzZXQtcGF0
aC1zdHJpbmctMDAyLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KIGltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvY3NzL21vdGlvbi9vZmZzZXQtcm90YXRlLTAwMS5odG1sIFsgSW1hZ2VP
bmx5RmFpbHVyZSBdCiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9tb3Rpb24v
b2Zmc2V0LXJvdGF0ZS0wMDIuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQotaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvbW90aW9uL29mZnNldC1yb3RhdGUtMDAzLmh0bWwgWyBJ
bWFnZU9ubHlGYWlsdXJlIF0KLWltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL21v
dGlvbi9vZmZzZXQtcm90YXRlLTAwNC5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi1pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9tb3Rpb24vb2Zmc2V0LXJvdGF0ZS0wMDUuaHRt
bCBbIEltYWdlT25seUZhaWx1cmUgXQogCiAjIElQQyB0ZXN0IGZhaWxpbmcgaW4gRGVidWcgbW9k
ZSBkdWUgdG8gYXNzZXJ0LgogWyBEZWJ1ZyBdIGlwYy9zZW5kLWludmFsaWQtbWVzc2FnZS5odG1s
IFsgU2tpcCBdCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>444419</attachid>
            <date>2021-11-16 12:05:27 -0800</date>
            <delta_ts>2021-11-18 16:13:46 -0800</delta_ts>
            <desc>WIP</desc>
            <filename>bug-233144-20211116120526.patch</filename>
            <type>text/plain</type>
            <size>18729</size>
            <attacher name="Kiet Ho">kiet.ho</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg1ODM5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTFkMjgxM2FiYTVhOWUy
ZWFlNjQzZjkzMGMxNjgzYzU0MWJjOTMwNC4uYzQxYWUxZTI2MzQ2YzIyY2ExZDViNWNjMDk2NTdi
YzVkYzQwMzMwMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU0IEBACisyMDIxLTExLTE2ICBLaWV0
IEhvICA8dGhvMjJAYXBwbGUuY29tPgorCisgICAgICAgIEludGVncmF0ZSBtb3Rpb24gcGF0aCB0
cmFuc2Zvcm1zIGluIHRyYW5zZm9ybWF0aW9uIHBpcGVsaW5lCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzMxNDQKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHBhdGNoIHRpZXMgZXZlcnl0aGluZyB0
b2dldGhlciBhbmQgcmVuZGVycyBDU1MgTW90aW9uIFBhdGggb3V0IG9udG8gdGhlIHNjcmVlbi4K
KyAgICAgICAgTW90aW9uIHBhdGggcHJvcGVydGllcyBhcmUgZGVzdWdhcmVkIGludG8gdHdvIHRy
YW5zZm9ybWF0aW9uczogb25lIHRyYW5zbGF0ZSB0byBtb3ZlCisgICAgICAgIHRoZSBlbGVtZW50
IHRvIHRoZSBzcGVjaWZpZWQgbG9jYXRpb24gb24gdGhlIHBhdGgsIGFuZCBvbmUgcm90YXRlIHRv
IHJvdGF0ZSB0aGUgb2JqZWN0CisgICAgICAgIHRvIHRoZSBjb3JyZWN0IG9yaWVudGF0aW9uIHNw
ZWNpZmllZCBieSBvZmZzZXQtcm90YXRlLiBXaGVuIHRoZSB0cmFuc2Zvcm1hdGlvbiBtYXRyaXgK
KyAgICAgICAgaXMgY29tcHV0ZWQsIHRoZSB0d28gdHJhbnNmb3JtYXRpb25zIGFyZSBhcHBsaWVk
IGJldHdlZW4gc2NhbGUoKSBhbmQgdGhlIGluZGl2aWR1YWwKKyAgICAgICAgdHJhbnNmb3JtIGZ1
bmN0aW9ucywgYXMgc3BlY2lmaWVkIGluIHRoZSBDU1MgVHJhbnNmb3JtcyBzcGVjLgorCisgICAg
ICAgIFRlc3RzOiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9tb3Rpb24vYW5p
bWF0aW9uL3JlZnRlc3RzL29mZnNldC1wYXRoLXdpdGgtdHJhbnNmb3Jtcy0wMDEuaHRtbAorICAg
ICAgICAgICAgICAgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvbW90aW9uL29m
ZnNldC1hbmNob3ItdHJhbnNmb3JtLWJveC1maWxsLWJveC0wMDEuaHRtbAorICAgICAgICAgICAg
ICAgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvbW90aW9uL29mZnNldC1hbmNo
b3ItdHJhbnNmb3JtLWJveC1maWxsLWJveC0wMDIuaHRtbAorICAgICAgICAgICAgICAgaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvbW90aW9uL29mZnNldC1hbmNob3ItdHJhbnNm
b3JtLWJveC1maWxsLWJveC0wMDMuaHRtbAorICAgICAgICAgICAgICAgaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy9jc3MvbW90aW9uL29mZnNldC1kaXN0YW5jZS0wMDEuaHRtbAorICAg
ICAgICAgICAgICAgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvbW90aW9uL29m
ZnNldC1kaXN0YW5jZS0wMDIuaHRtbAorICAgICAgICAgICAgICAgaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy9jc3MvbW90aW9uL29mZnNldC1kaXN0YW5jZS0wMDMuaHRtbAorICAgICAg
ICAgICAgICAgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvbW90aW9uL29mZnNl
dC1kaXN0YW5jZS0wMDQuaHRtbAorICAgICAgICAgICAgICAgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9jc3MvbW90aW9uL29mZnNldC1kaXN0YW5jZS0wMDUuaHRtbAorICAgICAgICAg
ICAgICAgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvbW90aW9uL29mZnNldC1k
aXN0YW5jZS0wMDYuaHRtbAorICAgICAgICAgICAgICAgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9jc3MvbW90aW9uL29mZnNldC1kaXN0YW5jZS0wMDcuaHRtbAorICAgICAgICAgICAg
ICAgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvbW90aW9uL29mZnNldC1kaXN0
YW5jZS0wMDguaHRtbAorICAgICAgICAgICAgICAgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy9jc3MvbW90aW9uL29mZnNldC1kaXN0YW5jZS0wMDkuaHRtbAorICAgICAgICAgICAgICAg
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvbW90aW9uL29mZnNldC1wYXRoLXN0
cmluZy0wMDEuaHRtbAorICAgICAgICAgICAgICAgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy9jc3MvbW90aW9uL29mZnNldC1wYXRoLXN0cmluZy0wMDIuaHRtbAorICAgICAgICAgICAg
ICAgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvbW90aW9uL29mZnNldC1yb3Rh
dGUtMDAzLmh0bWwKKyAgICAgICAgICAgICAgIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvY3NzL21vdGlvbi9vZmZzZXQtcm90YXRlLTAwNC5odG1sCisgICAgICAgICAgICAgICBpbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9tb3Rpb24vb2Zmc2V0LXJvdGF0ZS0wMDUu
aHRtbAorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvUGF0aC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpQYXRoOjppc0Nsb3NlZCBjb25zdCk6IEFkZGVkIG1ldGhvZCB0byBkZXRlcm1pbmUg
aWYgYSBQYXRoIGlzIGNsb3NlZCAoaS5lLAorICAgICAgICB0aGUgbGFzdCBkcmF3IGNvbW1hbmQg
aXMgQ2xvc2VTdWJwYXRoKS4gVGhpcyBpcyByZXF1aXJlZCBiZWNhdXNlIG9mZnNldC1kaXN0YW5j
ZSBpcworICAgICAgICBoYW5kbGVkIGRpZmZlcmVudGx5IGRlcGVuZGluZyBvbiBpZiB0aGUgUGF0
aCBpcyBjbG9zZWQgb3Igbm90LgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL1BhdGguaDoK
KyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OnJlY29tcG9zaXRlQ2hhbmdlUmVxdWlyZXNHZW9tZXRyeVVwZGF0ZSk6IEFjY291
bnQgaW4gY2hhbmdlcyBpbiBtb3Rpb24gcGF0aCBwcm9wZXJ0aWVzLgorICAgICAgICAqIHJlbmRl
cmluZy9SZW5kZXJPYmplY3QuaDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck9iamVjdDo6aGFz
VHJhbnNmb3JtIGNvbnN0KTogQWNjb3VudCBpbiBtb3Rpb24gcGF0aCBwcm9wZXJ0aWVzLgorICAg
ICAgICAqIHJlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpyYXJlTm9uSW5oZXJpdGVkRGF0YUNoYW5nZVJlcXVpcmVzTGF5b3V0KToKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlclN0eWxlOjphcHBseVRyYW5zZm9ybSBjb25zdCk6IEFkZCBhbiBhZGRpdGlv
bmFsIHN0ZXAgdG8gYXBwbHkgbW90aW9uIHBhdGggdHJhbnNmb3Jtcy4KKyAgICAgICAgKFdlYkNv
cmU6OmdldFBhdGhGcm9tUGF0aE9wZXJhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpnZXRUcmF2
ZXJzYWxTdGF0ZUF0RGlzdGFuY2UpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OmFw
cGx5TW90aW9uUGF0aFRyYW5zZm9ybSBjb25zdCk6IEFkZGVkIG1ldGhvZCB0byBhcHBseSBtb3Rp
b24gcGF0aCB0cmFuc2Zvcm1zLgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHls
ZS5oOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6Omhhc1RyYW5zZm9ybSBjb25zdCk6
IEFjY291bnQgaW4gbW90aW9uIHBhdGggcHJvcGVydGllcy4KKwogMjAyMS0xMS0xNSAgVGFrYXNo
aSBLb21vcmkgIDxUYWthc2hpLktvbW9yaUBzb255LmNvbT4KIAogICAgICAgICBbQ3VybF0gU2Vj
dXJpdHkgaW5mb3JtYXRpb24gc29tZXRpbWVzIGRvIG5vdCBhcHBlYXIgaW4gaW5zcGVjdG9yIG5l
dHdvcmsgdGFiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Q
YXRoLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BhdGguY3BwCmluZGV4
IDQ5Nzc3YmI4N2FiNWEzOGMyNmNiNTE3ODE2MzVmMTQ0NjlkM2RhNWIuLjIwMzJmMmFkYmE2ZjNk
OGM5Y2M2MGNkNWQ4NmJjZDU5OTljYWE2MWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL1BhdGguY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL1BhdGguY3BwCkBAIC01NTgsNCArNTU4LDE1IEBAIFRleHRTdHJlYW0mIG9wZXJhdG9y
PDwoVGV4dFN0cmVhbSYgc3RyZWFtLCBjb25zdCBQYXRoJiBwYXRoKQogICAgIHJldHVybiBzdHJl
YW07CiB9CiAKK2Jvb2wgUGF0aDo6aXNDbG9zZWQoKSBjb25zdAoreworICAgIGJvb2wgbGFzdEVs
ZW1lbnRJc0Nsb3NlZCA9IGZhbHNlOworCisgICAgYXBwbHkoWyZsYXN0RWxlbWVudElzQ2xvc2Vk
XShjb25zdCBXZWJDb3JlOjpQYXRoRWxlbWVudCYgZWxlbWVudCkgeworICAgICAgICBsYXN0RWxl
bWVudElzQ2xvc2VkID0gKGVsZW1lbnQudHlwZSA9PSBQYXRoRWxlbWVudDo6VHlwZTo6Q2xvc2VT
dWJwYXRoKTsKKyAgICB9KTsKKworICAgIHJldHVybiBsYXN0RWxlbWVudElzQ2xvc2VkOworfQor
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QYXRoLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QYXRoLmgKaW5kZXggN2I5ODc2YWIx
Yzc4NThiNTRiODBkOTA4ZTZhODBlNTk2MjNmYmUyZi4uMzVkOWFhNTM4OTUxODY3YWY2ZDZiZmNj
MGFjOTg5MWY5MTc0OTE2NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvUGF0aC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BhdGgu
aApAQCAtMTYwLDYgKzE2MCw4IEBAIHB1YmxpYzoKICAgICBib29sIGhhc0N1cnJlbnRQb2ludCgp
IGNvbnN0OwogICAgIEZsb2F0UG9pbnQgY3VycmVudFBvaW50KCkgY29uc3Q7CiAKKyAgICBib29s
IGlzQ2xvc2VkKCkgY29uc3Q7CisKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIG1vdmVUbyhjb25z
dCBGbG9hdFBvaW50Jik7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhZGRMaW5lVG8oY29uc3Qg
RmxvYXRQb2ludCYpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYWRkUXVhZEN1cnZlVG8oY29u
c3QgRmxvYXRQb2ludCYgY29udHJvbFBvaW50LCBjb25zdCBGbG9hdFBvaW50JiBlbmRQb2ludCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3Np
dG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3Iu
Y3BwCmluZGV4IDJlNzBiYmU3Zjk2YjkzMTk0NDgxY2VhOTRjZTU0NDFmMzAzYmQwZWYuLmJmMGJm
ZGUwYzU5NjhmMWJhM2MwMTQyNmQ5YjNkZDc3MzExMmRhNGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuY3BwCkBAIC0xNjQ3LDYgKzE2
NDcsMTEgQEAgc3RhdGljIGJvb2wgcmVjb21wb3NpdGVDaGFuZ2VSZXF1aXJlc0dlb21ldHJ5VXBk
YXRlKGNvbnN0IFJlbmRlclN0eWxlJiBvbGRTdHlsZSwKICAgICAgICAgfHwgb2xkU3R5bGUucGVy
c3BlY3RpdmVPcmlnaW5YKCkgIT0gbmV3U3R5bGUucGVyc3BlY3RpdmVPcmlnaW5YKCkKICAgICAg
ICAgfHwgb2xkU3R5bGUucGVyc3BlY3RpdmVPcmlnaW5ZKCkgIT0gbmV3U3R5bGUucGVyc3BlY3Rp
dmVPcmlnaW5ZKCkKICAgICAgICAgfHwgb2xkU3R5bGUuYmFja2ZhY2VWaXNpYmlsaXR5KCkgIT0g
bmV3U3R5bGUuYmFja2ZhY2VWaXNpYmlsaXR5KCkKKyAgICAgICAgfHwgIWFyZVBvaW50aW5nVG9F
cXVhbERhdGEob2xkU3R5bGUub2Zmc2V0UGF0aCgpLCBuZXdTdHlsZS5vZmZzZXRQYXRoKCkpCisg
ICAgICAgIHx8IG9sZFN0eWxlLm9mZnNldEFuY2hvcigpICE9IG5ld1N0eWxlLm9mZnNldEFuY2hv
cigpCisgICAgICAgIHx8IG9sZFN0eWxlLm9mZnNldFBvc2l0aW9uKCkgIT0gbmV3U3R5bGUub2Zm
c2V0UG9zaXRpb24oKQorICAgICAgICB8fCBvbGRTdHlsZS5vZmZzZXREaXN0YW5jZSgpICE9IG5l
d1N0eWxlLm9mZnNldERpc3RhbmNlKCkKKyAgICAgICAgfHwgb2xkU3R5bGUub2Zmc2V0Um90YXRl
KCkgIT0gbmV3U3R5bGUub2Zmc2V0Um90YXRlKCkKICAgICAgICAgfHwgIWFyZVBvaW50aW5nVG9F
cXVhbERhdGEob2xkU3R5bGUuY2xpcFBhdGgoKSwgbmV3U3R5bGUuY2xpcFBhdGgoKSk7CiB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuaCBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuaAppbmRleCA3ZDBiZWJkYmEyNGEz
NWViMDg5Y2Y4ZGUzMzViMDUxZDk0NDI0N2QzLi5kODEyNjI4OWI2NGU1MTc4NzljZjljMzg2M2Iy
M2E0YTVjNWI1Y2MzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
T2JqZWN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5oCkBA
IC00NDMsNyArNDQzLDcgQEAgcHVibGljOgogICAgIGJvb2wgaGFzUG90ZW50aWFsbHlTY3JvbGxh
YmxlT3ZlcmZsb3coKSBjb25zdDsKIAogICAgIGJvb2wgaGFzVHJhbnNmb3JtUmVsYXRlZFByb3Bl
cnR5KCkgY29uc3QgeyByZXR1cm4gbV9iaXRmaWVsZHMuaGFzVHJhbnNmb3JtUmVsYXRlZFByb3Bl
cnR5KCk7IH0gLy8gVHJhbnNmb3JtLCBwZXJzcGVjdGl2ZSBvciB0cmFuc2Zvcm0tc3R5bGU6IHBy
ZXNlcnZlLTNkLgotICAgIGJvb2wgaGFzVHJhbnNmb3JtKCkgY29uc3QgeyByZXR1cm4gaGFzVHJh
bnNmb3JtUmVsYXRlZFByb3BlcnR5KCkgJiYgKHN0eWxlKCkuaGFzVHJhbnNmb3JtKCkgfHwgc3R5
bGUoKS50cmFuc2xhdGUoKSB8fCBzdHlsZSgpLnNjYWxlKCkgfHwgc3R5bGUoKS5yb3RhdGUoKSk7
IH0KKyAgICBib29sIGhhc1RyYW5zZm9ybSgpIGNvbnN0IHsgcmV0dXJuIGhhc1RyYW5zZm9ybVJl
bGF0ZWRQcm9wZXJ0eSgpICYmIChzdHlsZSgpLmhhc1RyYW5zZm9ybSgpIHx8IHN0eWxlKCkudHJh
bnNsYXRlKCkgfHwgc3R5bGUoKS5zY2FsZSgpIHx8IHN0eWxlKCkucm90YXRlKCkgfHwgc3R5bGUo
KS5vZmZzZXRQYXRoKCkpOyB9CiAKICAgICBpbmxpbmUgYm9vbCBwcmVzZXJ2ZXNOZXdsaW5lKCkg
Y29uc3Q7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5k
ZXJTdHlsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUu
Y3BwCmluZGV4IDNhZjllMTUwZWUwYjBhMzVhZTU5ZWZkZTVlZDI3ODAzYmVkZjY0NmUuLjcyYjdk
MTZiOTRmYjYxN2I0ZjViNzAwZTc4ZWY2YzA3MWEwZmU1OTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmNwcApAQCAtMzYsNiArMzYsNyBAQAogI2lu
Y2x1ZGUgIklubGluZUl0ZXJhdG9yVGV4dEJveC5oIgogI2luY2x1ZGUgIklubGluZVRleHRCb3hT
dHlsZS5oIgogI2luY2x1ZGUgIlBhZ2luYXRpb24uaCIKKyNpbmNsdWRlICJQYXRoVHJhdmVyc2Fs
U3RhdGUuaCIKICNpbmNsdWRlICJRdW90ZXNEYXRhLmgiCiAjaW5jbHVkZSAiUmVuZGVyQmxvY2su
aCIKICNpbmNsdWRlICJSZW5kZXJPYmplY3QuaCIKQEAgLTY5OCw2ICs2OTksMTMgQEAgc3RhdGlj
IGJvb2wgcmFyZU5vbkluaGVyaXRlZERhdGFDaGFuZ2VSZXF1aXJlc0xheW91dChjb25zdCBTdHls
ZVJhcmVOb25Jbmhlcml0ZWQKICAgICAgICAgfHwgIWFyZVBvaW50aW5nVG9FcXVhbERhdGEoZmly
c3QudHJhbnNsYXRlLCBzZWNvbmQudHJhbnNsYXRlKSkKICAgICAgICAgY2hhbmdlZENvbnRleHRT
ZW5zaXRpdmVQcm9wZXJ0aWVzLmFkZChTdHlsZURpZmZlcmVuY2VDb250ZXh0U2Vuc2l0aXZlUHJv
cGVydHk6OlRyYW5zZm9ybSk7CiAKKyAgICBpZiAoIWFyZVBvaW50aW5nVG9FcXVhbERhdGEoZmly
c3Qub2Zmc2V0UGF0aCwgc2Vjb25kLm9mZnNldFBhdGgpCisgICAgICAgIHx8IGZpcnN0Lm9mZnNl
dFBvc2l0aW9uICE9IHNlY29uZC5vZmZzZXRQb3NpdGlvbgorICAgICAgICB8fCBmaXJzdC5vZmZz
ZXREaXN0YW5jZSAhPSBzZWNvbmQub2Zmc2V0RGlzdGFuY2UKKyAgICAgICAgfHwgZmlyc3Qub2Zm
c2V0QW5jaG9yICE9IHNlY29uZC5vZmZzZXRBbmNob3IKKyAgICAgICAgfHwgZmlyc3Qub2Zmc2V0
Um90YXRlICE9IHNlY29uZC5vZmZzZXRSb3RhdGUpCisgICAgICAgIGNoYW5nZWRDb250ZXh0U2Vu
c2l0aXZlUHJvcGVydGllcy5hZGQoU3R5bGVEaWZmZXJlbmNlQ29udGV4dFNlbnNpdGl2ZVByb3Bl
cnR5OjpUcmFuc2Zvcm0pOworCiAgICAgaWYgKGZpcnN0LmdyaWQgIT0gc2Vjb25kLmdyaWQKICAg
ICAgICAgfHwgZmlyc3QuZ3JpZEl0ZW0gIT0gc2Vjb25kLmdyaWRJdGVtKQogICAgICAgICByZXR1
cm4gdHJ1ZTsKQEAgLTE0MzUsNyArMTQ0Myw5IEBAIHZvaWQgUmVuZGVyU3R5bGU6OmFwcGx5VHJh
bnNmb3JtKFRyYW5zZm9ybWF0aW9uTWF0cml4JiB0cmFuc2Zvcm0sIGNvbnN0IEZsb2F0UmVjCiAg
ICAgICAgICAgICBzY2FsZS0+YXBwbHkodHJhbnNmb3JtLCBib3VuZGluZ0JveC5zaXplKCkpOwog
ICAgIH0KIAotICAgIC8vIDYuIFRyYW5zbGF0ZSBhbmQgcm90YXRlIGJ5IHRoZSB0cmFuc2Zvcm0g
c3BlY2lmaWVkIGJ5IG9mZnNldC4gKEZJWE1FOiB3ZSBkb24ndCBzdXBwb3J0IHRoZSBvZmZzZXQg
cHJvcGVydHkpCisgICAgLy8gNi4gVHJhbnNsYXRlIGFuZCByb3RhdGUgYnkgdGhlIHRyYW5zZm9y
bSBzcGVjaWZpZWQgYnkgb2Zmc2V0LgorICAgIGlmIChvcHRpb25zLmNvbnRhaW5zKFJlbmRlclN0
eWxlOjpUcmFuc2Zvcm1PcGVyYXRpb25PcHRpb246Ok9mZnNldCkpCisgICAgICAgIGFwcGx5TW90
aW9uUGF0aFRyYW5zZm9ybSh0cmFuc2Zvcm0sIGJvdW5kaW5nQm94KTsKIAogICAgIC8vIDcuIE11
bHRpcGx5IGJ5IGVhY2ggb2YgdGhlIHRyYW5zZm9ybSBmdW5jdGlvbnMgaW4gdHJhbnNmb3JtIGZy
b20gbGVmdCB0byByaWdodC4KICAgICBmb3IgKGF1dG8mIG9wZXJhdGlvbiA6IHRyYW5zZm9ybU9w
ZXJhdGlvbnMub3BlcmF0aW9ucygpKQpAQCAtMTQ0Niw2ICsxNDU2LDc0IEBAIHZvaWQgUmVuZGVy
U3R5bGU6OmFwcGx5VHJhbnNmb3JtKFRyYW5zZm9ybWF0aW9uTWF0cml4JiB0cmFuc2Zvcm0sIGNv
bnN0IEZsb2F0UmVjCiAgICAgICAgIHRyYW5zZm9ybS50cmFuc2xhdGUzZCgtb3JpZ2luVHJhbnNs
YXRlLngoKSwgLW9yaWdpblRyYW5zbGF0ZS55KCksIC1vcmlnaW5UcmFuc2xhdGUueigpKTsKIH0K
IAorc3RhdGljIHN0ZDo6b3B0aW9uYWw8UGF0aD4gZ2V0UGF0aEZyb21QYXRoT3BlcmF0aW9uKGNv
bnN0IEZsb2F0UmVjdCYgYm94LCBjb25zdCBQYXRoT3BlcmF0aW9uKiBvcGVyYXRpb24pCit7Cisg
ICAgaWYgKCFvcGVyYXRpb24pCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICBp
ZiAob3BlcmF0aW9uLT50eXBlKCkgPT0gUGF0aE9wZXJhdGlvbjo6U2hhcGUpCisgICAgICAgIHJl
dHVybiBkb3duY2FzdDxTaGFwZVBhdGhPcGVyYXRpb24+KCpvcGVyYXRpb24pLnBhdGhGb3JSZWZl
cmVuY2VSZWN0KGJveCk7CisKKyAgICAvLyBGSVhNRTogc3VwcG9ydCBSZWZlcmVuY2UgYW5kIEJv
eCB0eXBlLgorICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Cit9CisKK3N0YXRpYyBQYXRoVHJhdmVy
c2FsU3RhdGUgZ2V0VHJhdmVyc2FsU3RhdGVBdERpc3RhbmNlKGNvbnN0IFBhdGgmIHBhdGgsIGNv
bnN0IExlbmd0aCYgZGlzdGFuY2UpCit7CisgICAgYXV0byBwYXRoTGVuZ3RoID0gcGF0aC5sZW5n
dGgoKTsKKyAgICBhdXRvIGRpc3RhbmNlVmFsdWUgPSBmbG9hdFZhbHVlRm9yTGVuZ3RoKGRpc3Rh
bmNlLCBwYXRoTGVuZ3RoKTsKKworICAgIGZsb2F0IHJlc29sdmVkTGVuZ3RoID0gMDsKKyAgICBp
ZiAocGF0aC5pc0Nsb3NlZCgpKSB7CisgICAgICAgIGlmIChwYXRoTGVuZ3RoKSB7CisgICAgICAg
ICAgICByZXNvbHZlZExlbmd0aCA9IGZtb2QoZGlzdGFuY2VWYWx1ZSwgcGF0aExlbmd0aCk7Cisg
ICAgICAgICAgICBpZiAocmVzb2x2ZWRMZW5ndGggPCAwKQorICAgICAgICAgICAgICAgIHJlc29s
dmVkTGVuZ3RoICs9IHBhdGhMZW5ndGg7CisgICAgICAgIH0KKyAgICB9IGVsc2UKKyAgICAgICAg
cmVzb2x2ZWRMZW5ndGggPSBjbGFtcFRvPGZsb2F0PihkaXN0YW5jZVZhbHVlLCAwLCBwYXRoTGVu
Z3RoKTsKKworICAgIEFTU0VSVChyZXNvbHZlZExlbmd0aCA+PSAwKTsKKyAgICByZXR1cm4gcGF0
aC50cmF2ZXJzYWxTdGF0ZUF0TGVuZ3RoKHJlc29sdmVkTGVuZ3RoKTsKK30KKwordm9pZCBSZW5k
ZXJTdHlsZTo6YXBwbHlNb3Rpb25QYXRoVHJhbnNmb3JtKFRyYW5zZm9ybWF0aW9uTWF0cml4JiB0
cmFuc2Zvcm0sIGNvbnN0IEZsb2F0UmVjdCYgYm91bmRpbmdCb3gpIGNvbnN0Cit7CisgICAgaWYg
KCFvZmZzZXRQYXRoKCkpCisgICAgICAgIHJldHVybjsKKworICAgIC8vIFNoaWZ0IGVsZW1lbnQg
dG8gdGhlIHBvaW50IG9uIHBhdGggc3BlY2lmaWVkIGJ5IG9mZnNldC1wYXRoIGFuZCBvZmZzZXQt
ZGlzdGFuY2UuCisgICAgYXV0byBwYXRoID0gZ2V0UGF0aEZyb21QYXRoT3BlcmF0aW9uKGJvdW5k
aW5nQm94LCBvZmZzZXRQYXRoKCkpOworICAgIGlmICghcGF0aCkKKyAgICAgICAgcmV0dXJuOwor
ICAgIGF1dG8gdHJhdmVyc2FsU3RhdGUgPSBnZXRUcmF2ZXJzYWxTdGF0ZUF0RGlzdGFuY2UoKnBh
dGgsIG9mZnNldERpc3RhbmNlKCkpOworICAgIHRyYW5zZm9ybS50cmFuc2xhdGUodHJhdmVyc2Fs
U3RhdGUuY3VycmVudCgpLngoKSwgdHJhdmVyc2FsU3RhdGUuY3VycmVudCgpLnkoKSk7CisKKyAg
ICAvLyBTaGlmdCBlbGVtZW50IHRvIHRoZSBhbmNob3Igc3BlY2lmaWVkIGJ5IG9mZnNldC1hbmNo
b3IuCisgICAgYXV0byB0cmFuc2Zvcm1PcmlnaW4gPSBib3VuZGluZ0JveC5sb2NhdGlvbigpICsg
ZmxvYXRQb2ludEZvckxlbmd0aFBvaW50KHRyYW5zZm9ybU9yaWdpblhZKCksIGJvdW5kaW5nQm94
LnNpemUoKSk7CisgICAgLy8gRGVmYXVsdCB2YWx1ZSBvZiBvZmZzZXQtYW5jaG9yIGlzIHRyYW5z
Zm9ybS1vcmlnaW4KKyAgICBhdXRvIGFuY2hvciA9IHRyYW5zZm9ybU9yaWdpbjsKKyAgICAvLyBI
YW5kbGUgdGhlIGNhc2UgaWYgb2Zmc2V0LWFuY2hvciBpcyBub3QgYXV0bworICAgIGlmICghb2Zm
c2V0QW5jaG9yKCkueCgpLmlzQXV0bygpKQorICAgICAgICBhbmNob3IgPSBmbG9hdFBvaW50Rm9y
TGVuZ3RoUG9pbnQob2Zmc2V0QW5jaG9yKCksIGJvdW5kaW5nQm94LnNpemUoKSkgKyBib3VuZGlu
Z0JveC5sb2NhdGlvbigpOworICAgIHRyYW5zZm9ybS50cmFuc2xhdGUoLWFuY2hvci54KCksIC1h
bmNob3IueSgpKTsKKworICAgIEZsb2F0UG9pbnQgc2hpZnRUb09yaWdpbiB7CisgICAgICAgIGFu
Y2hvci54KCkgLSB0cmFuc2Zvcm1PcmlnaW4ueCgpLAorICAgICAgICBhbmNob3IueSgpIC0gdHJh
bnNmb3JtT3JpZ2luLnkoKQorICAgIH07CisgICAgdHJhbnNmb3JtLnRyYW5zbGF0ZShzaGlmdFRv
T3JpZ2luLngoKSwgc2hpZnRUb09yaWdpbi55KCkpOworCisgICAgLy8gQXBwbHkgcm90YXRpb24u
CisgICAgYXV0byByb3RhdGlvbiA9IG9mZnNldFJvdGF0ZSgpOworICAgIGlmIChyb3RhdGlvbi5o
YXNBdXRvKCkpCisgICAgICAgIHRyYW5zZm9ybS5yb3RhdGUodHJhdmVyc2FsU3RhdGUubm9ybWFs
QW5nbGUoKSArIHJvdGF0aW9uLmFuZ2xlKCkpOworICAgIGVsc2UKKyAgICAgICAgdHJhbnNmb3Jt
LnJvdGF0ZShyb3RhdGlvbi5hbmdsZSgpKTsKKworICAgIHRyYW5zZm9ybS50cmFuc2xhdGUoLXNo
aWZ0VG9PcmlnaW4ueCgpLCAtc2hpZnRUb09yaWdpbi55KCkpOworfQorCiB2b2lkIFJlbmRlclN0
eWxlOjpzZXRQYWdlU2NhbGVUcmFuc2Zvcm0oZmxvYXQgc2NhbGUpCiB7CiAgICAgaWYgKHNjYWxl
ID09IDEpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVy
U3R5bGUuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5oCmlu
ZGV4IDhiZWZhZTRmNjdkNTA1NzRmMmZkNmQyZDFhM2E3NjNkYzI3YmY1NGMuLjc3MWMyNzFlZmI3
Nzk0OTI3MTU2OWJlMzE2Nzg4YWNhYTk1NmEyYjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdHlsZS9SZW5kZXJTdHlsZS5oCkBAIC02NDYsNyArNjQ2LDcgQEAgcHVibGljOgogICAg
IENvbHVtblNwYW4gY29sdW1uU3BhbigpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PENvbHVt
blNwYW4+KG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPm11bHRpQ29sLT5jb2x1bW5TcGFuKTsgfQog
CiAgICAgY29uc3QgVHJhbnNmb3JtT3BlcmF0aW9ucyYgdHJhbnNmb3JtKCkgY29uc3QgeyByZXR1
cm4gbV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+dHJhbnNmb3JtLT5vcGVyYXRpb25zOyB9Ci0gICAg
Ym9vbCBoYXNUcmFuc2Zvcm0oKSBjb25zdCB7IHJldHVybiAhbV9yYXJlTm9uSW5oZXJpdGVkRGF0
YS0+dHJhbnNmb3JtLT5vcGVyYXRpb25zLm9wZXJhdGlvbnMoKS5pc0VtcHR5KCk7IH0KKyAgICBi
b29sIGhhc1RyYW5zZm9ybSgpIGNvbnN0IHsgcmV0dXJuICFtX3JhcmVOb25Jbmhlcml0ZWREYXRh
LT50cmFuc2Zvcm0tPm9wZXJhdGlvbnMub3BlcmF0aW9ucygpLmlzRW1wdHkoKSB8fCBvZmZzZXRQ
YXRoKCk7IH0KICAgICBjb25zdCBMZW5ndGgmIHRyYW5zZm9ybU9yaWdpblgoKSBjb25zdCB7IHJl
dHVybiBtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT50cmFuc2Zvcm0tPng7IH0KICAgICBjb25zdCBM
ZW5ndGgmIHRyYW5zZm9ybU9yaWdpblkoKSBjb25zdCB7IHJldHVybiBtX3JhcmVOb25Jbmhlcml0
ZWREYXRhLT50cmFuc2Zvcm0tPnk7IH0KICAgICBmbG9hdCB0cmFuc2Zvcm1PcmlnaW5aKCkgY29u
c3QgeyByZXR1cm4gbV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+dHJhbnNmb3JtLT56OyB9CkBAIC02
ODUsMTIgKzY4NSwxNCBAQCBwdWJsaWM6CiAgICAgICAgIFRyYW5zZm9ybU9yaWdpbiA9IDEgPDwg
MCwKICAgICAgICAgVHJhbnNsYXRlICAgICAgID0gMSA8PCAxLAogICAgICAgICBSb3RhdGUgICAg
ICAgICAgPSAxIDw8IDIsCi0gICAgICAgIFNjYWxlICAgICAgICAgICA9IDEgPDwgMworICAgICAg
ICBTY2FsZSAgICAgICAgICAgPSAxIDw8IDMsCisgICAgICAgIE9mZnNldCAgICAgICAgICA9IDEg
PDwgNAogICAgIH07CiAKLSAgICBzdGF0aWMgY29uc3RleHByIE9wdGlvblNldDxUcmFuc2Zvcm1P
cGVyYXRpb25PcHRpb24+IGFsbFRyYW5zZm9ybU9wZXJhdGlvbnMgPSB7IFRyYW5zZm9ybU9wZXJh
dGlvbk9wdGlvbjo6VHJhbnNmb3JtT3JpZ2luLCBUcmFuc2Zvcm1PcGVyYXRpb25PcHRpb246OlRy
YW5zbGF0ZSwgVHJhbnNmb3JtT3BlcmF0aW9uT3B0aW9uOjpSb3RhdGUsIFRyYW5zZm9ybU9wZXJh
dGlvbk9wdGlvbjo6U2NhbGUgfTsKLSAgICBzdGF0aWMgY29uc3RleHByIE9wdGlvblNldDxUcmFu
c2Zvcm1PcGVyYXRpb25PcHRpb24+IGluZGl2aWR1YWxUcmFuc2Zvcm1PcGVyYXRpb25zID0geyBU
cmFuc2Zvcm1PcGVyYXRpb25PcHRpb246OlRyYW5zbGF0ZSwgVHJhbnNmb3JtT3BlcmF0aW9uT3B0
aW9uOjpSb3RhdGUsIFRyYW5zZm9ybU9wZXJhdGlvbk9wdGlvbjo6U2NhbGUgfTsKKyAgICBzdGF0
aWMgY29uc3RleHByIE9wdGlvblNldDxUcmFuc2Zvcm1PcGVyYXRpb25PcHRpb24+IGFsbFRyYW5z
Zm9ybU9wZXJhdGlvbnMgPSB7IFRyYW5zZm9ybU9wZXJhdGlvbk9wdGlvbjo6VHJhbnNmb3JtT3Jp
Z2luLCBUcmFuc2Zvcm1PcGVyYXRpb25PcHRpb246OlRyYW5zbGF0ZSwgVHJhbnNmb3JtT3BlcmF0
aW9uT3B0aW9uOjpSb3RhdGUsIFRyYW5zZm9ybU9wZXJhdGlvbk9wdGlvbjo6U2NhbGUgLCBUcmFu
c2Zvcm1PcGVyYXRpb25PcHRpb246Ok9mZnNldCB9OworICAgIHN0YXRpYyBjb25zdGV4cHIgT3B0
aW9uU2V0PFRyYW5zZm9ybU9wZXJhdGlvbk9wdGlvbj4gaW5kaXZpZHVhbFRyYW5zZm9ybU9wZXJh
dGlvbnMgPSB7IFRyYW5zZm9ybU9wZXJhdGlvbk9wdGlvbjo6VHJhbnNsYXRlLCBUcmFuc2Zvcm1P
cGVyYXRpb25PcHRpb246OlJvdGF0ZSwgVHJhbnNmb3JtT3BlcmF0aW9uT3B0aW9uOjpTY2FsZSwg
VHJhbnNmb3JtT3BlcmF0aW9uT3B0aW9uOjpPZmZzZXQgfTsKICAgICB2b2lkIGFwcGx5VHJhbnNm
b3JtKFRyYW5zZm9ybWF0aW9uTWF0cml4JiwgY29uc3QgRmxvYXRSZWN0JiBib3VuZGluZ0JveCwg
T3B0aW9uU2V0PFRyYW5zZm9ybU9wZXJhdGlvbk9wdGlvbj4gPSBhbGxUcmFuc2Zvcm1PcGVyYXRp
b25zKSBjb25zdDsKKyAgICB2b2lkIGFwcGx5TW90aW9uUGF0aFRyYW5zZm9ybShUcmFuc2Zvcm1h
dGlvbk1hdHJpeCYsIGNvbnN0IEZsb2F0UmVjdCYgYm91bmRpbmdCb3gpIGNvbnN0OwogICAgIHZv
aWQgc2V0UGFnZVNjYWxlVHJhbnNmb3JtKGZsb2F0KTsKIAogICAgIGJvb2wgaGFzTWFzaygpIGNv
bnN0IHsgcmV0dXJuIG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPm1hc2stPmhhc0ltYWdlKCkgfHwg
bV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+bWFza0JveEltYWdlLmhhc0ltYWdlKCk7IH0KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRl
eCA2NzAwNTM5MzY1MTI0YjE4MzgyNDFjYzk4Y2FkMTZkYTZlZjM4ZTg2Li5kNWIyYTg2MWM1MWI5
NmVkZGIwMjdlZDFkZGM0NTExNmNkNGYxMjM4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMjEt
MTEtMTYgIEtpZXQgSG8gIDx0aG8yMkBhcHBsZS5jb20+CisKKyAgICAgICAgSW50ZWdyYXRlIG1v
dGlvbiBwYXRoIHRyYW5zZm9ybXMgaW4gdHJhbnNmb3JtYXRpb24gcGlwZWxpbmUKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMzE0NAorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlbW92ZWQgSW1hZ2VPbmx5
RmFpbHVyZSBleHBlY3RhdGlvbnMgZm9yIHRlc3RzIHRoYXQgc2hvdWxkIG5vdyBwYXNzLgorCisg
ICAgICAgICogVGVzdEV4cGVjdGF0aW9uczoKKwogMjAyMS0xMS0xNSAgQ2hyaXMgRHVtZXogIDxj
ZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIGBDcm9zcy1PcmlnaW4tRW1iZWRkZXItUG9saWN5
OiByZXF1aXJlLWNvcnBgIHByZXZlbnRzIGxvYWRpbmcgb2YgZGF0YSBVUkwgaW1hZ2VzCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9UZXN0RXhwZWN0YXRpb25zIGIvTGF5b3V0VGVzdHMvVGVzdEV4
cGVjdGF0aW9ucwppbmRleCAzYjE0YzkxNWI3NTNkNjIzZGRkOWFkYzU2ZWY3OWNmYTgwNzI1OGJh
Li41ZDE2NjNkZDMzY2QwNDdlOWQzMzkwZmVjMDhkOTc4ZDY4MDM2ZTQwIDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3RzL1Rlc3RFeHBlY3Rh
dGlvbnMKQEAgLTUxMTMsMjAgKzUxMTMsNyBAQCBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL2NvbnRlbnQtc2VjdXJpdHktcG9saWN5L3NjcmlwdC1zcmMvIFsgRHVtcEpTQ29ucwogIyBp
bXBvcnQtdzNjLXRlc3RzIGNvcGllcyAtbm90cmVmLmh0bWwgdG8gLWV4cGVjdGVkLmh0bWwsIHNv
IGV4cGVjdGVkIGltYWdlIGZhaWx1cmUgaGVyZS4KIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvaHRtbC9zZW1hbnRpY3MvZm9ybXMvdGhlLXRleHRhcmVhLWVsZW1lbnQvcGxhY2Vob2xk
ZXItd2hpdGUtc3BhY2UudGVudGF0aXZlLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KIAotIyBD
U1MgbW90aW9uIHBhdGggdGVzdHMsIGN1cnJlbnRseSBmYWlsaW5nLgotaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy9jc3MvbW90aW9uL2FuaW1hdGlvbi9yZWZ0ZXN0cy9vZmZzZXQtcGF0
aC13aXRoLXRyYW5zZm9ybXMtMDAxLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KLWltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL21vdGlvbi9vZmZzZXQtYW5jaG9yLXRyYW5zZm9y
bS1ib3gtZmlsbC1ib3gtMDAxLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KLWltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL21vdGlvbi9vZmZzZXQtYW5jaG9yLXRyYW5zZm9ybS1i
b3gtZmlsbC1ib3gtMDAyLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KLWltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvY3NzL21vdGlvbi9vZmZzZXQtYW5jaG9yLXRyYW5zZm9ybS1ib3gt
ZmlsbC1ib3gtMDAzLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KLWltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvY3NzL21vdGlvbi9vZmZzZXQtZGlzdGFuY2UtMDAxLmh0bWwgWyBJbWFn
ZU9ubHlGYWlsdXJlIF0KLWltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL21vdGlv
bi9vZmZzZXQtZGlzdGFuY2UtMDAyLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KLWltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL21vdGlvbi9vZmZzZXQtZGlzdGFuY2UtMDAzLmh0
bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KLWltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
Y3NzL21vdGlvbi9vZmZzZXQtZGlzdGFuY2UtMDA0Lmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0K
LWltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL21vdGlvbi9vZmZzZXQtZGlzdGFu
Y2UtMDA1Lmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KLWltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvY3NzL21vdGlvbi9vZmZzZXQtZGlzdGFuY2UtMDA2Lmh0bWwgWyBJbWFnZU9ubHlG
YWlsdXJlIF0KLWltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL21vdGlvbi9vZmZz
ZXQtZGlzdGFuY2UtMDA3Lmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KLWltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvY3NzL21vdGlvbi9vZmZzZXQtZGlzdGFuY2UtMDA4Lmh0bWwgWyBJ
bWFnZU9ubHlGYWlsdXJlIF0KLWltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL21v
dGlvbi9vZmZzZXQtZGlzdGFuY2UtMDA5Lmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KKyMgQ1NT
IG1vdGlvbiBwYXRoIHRoYXQgZGVwZW5kcyBvbiByYXkoKSwgY3VycmVudGx5IG5vdCBpbXBsZW1l
bnRlZC4KIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL21vdGlvbi9vZmZzZXQt
cGF0aC1yYXktMDAxLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KIGltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvY3NzL21vdGlvbi9vZmZzZXQtcGF0aC1yYXktMDAyLmh0bWwgWyBJbWFn
ZU9ubHlGYWlsdXJlIF0KIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL21vdGlv
bi9vZmZzZXQtcGF0aC1yYXktMDAzLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KQEAgLTUxNDEs
MTMgKzUxMjgsOCBAQCBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9tb3Rpb24v
b2Zmc2V0LXBhdGgtcmF5LWNvbnRhaW4tMDAyLmh0bWwgWyBJbQogaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy9jc3MvbW90aW9uL29mZnNldC1wYXRoLXJheS1jb250YWluLTAwMy5odG1s
IFsgSW1hZ2VPbmx5RmFpbHVyZSBdCiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nz
cy9tb3Rpb24vb2Zmc2V0LXBhdGgtcmF5LWNvbnRhaW4tMDA0Lmh0bWwgWyBJbWFnZU9ubHlGYWls
dXJlIF0KIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL21vdGlvbi9vZmZzZXQt
cGF0aC1yYXktY29udGFpbi0wMDUuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQotaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvbW90aW9uL29mZnNldC1wYXRoLXN0cmluZy0wMDEu
aHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQotaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy9jc3MvbW90aW9uL29mZnNldC1wYXRoLXN0cmluZy0wMDIuaHRtbCBbIEltYWdlT25seUZhaWx1
cmUgXQogaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvbW90aW9uL29mZnNldC1y
b3RhdGUtMDAxLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KIGltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvY3NzL21vdGlvbi9vZmZzZXQtcm90YXRlLTAwMi5odG1sIFsgSW1hZ2VPbmx5
RmFpbHVyZSBdCi1pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9tb3Rpb24vb2Zm
c2V0LXJvdGF0ZS0wMDMuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQotaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy9jc3MvbW90aW9uL29mZnNldC1yb3RhdGUtMDA0Lmh0bWwgWyBJbWFn
ZU9ubHlGYWlsdXJlIF0KLWltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL21vdGlv
bi9vZmZzZXQtcm90YXRlLTAwNS5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCiAKICMgSVBDIHRl
c3QgZmFpbGluZyBpbiBEZWJ1ZyBtb2RlIGR1ZSB0byBhc3NlcnQuCiBbIERlYnVnIF0gaXBjL3Nl
bmQtaW52YWxpZC1tZXNzYWdlLmh0bWwgWyBTa2lwIF0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>444752</attachid>
            <date>2021-11-18 16:13:48 -0800</date>
            <delta_ts>2021-11-19 06:59:54 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-233144-20211118161347.patch</filename>
            <type>text/plain</type>
            <size>20486</size>
            <attacher name="Kiet Ho">kiet.ho</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg2MDA0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDhjYjcxOWU0ODdhYmVh
ZGZjODE5NTc0MTBkYTAyMTA1Y2Q3ZTU4MS4uNjYxNjIyZTgwMmFmZDliZjNmYWE4MjUzMmQ1Y2Nh
YzJmNzE4M2RkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUxIEBACisyMDIxLTExLTE4ICBLaWV0
IEhvICA8dGhvMjJAYXBwbGUuY29tPgorCisgICAgICAgIEludGVncmF0ZSBtb3Rpb24gcGF0aCB0
cmFuc2Zvcm1zIGluIHRyYW5zZm9ybWF0aW9uIHBpcGVsaW5lCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzMxNDQKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHBhdGNoIHRpZXMgZXZlcnl0aGluZyB0
b2dldGhlciBhbmQgcmVuZGVycyBDU1MgTW90aW9uIFBhdGggb3V0IG9udG8gdGhlIHNjcmVlbi4K
KyAgICAgICAgTW90aW9uIHBhdGggcHJvcGVydGllcyBhcmUgZGVzdWdhcmVkIGludG8gdHdvIHRy
YW5zZm9ybWF0aW9uczogb25lIHRyYW5zbGF0ZSB0byBtb3ZlCisgICAgICAgIHRoZSBlbGVtZW50
IHRvIHRoZSBzcGVjaWZpZWQgbG9jYXRpb24gb24gdGhlIHBhdGgsIGFuZCBvbmUgcm90YXRlIHRv
IHJvdGF0ZSB0aGUgZWxlbWVudAorICAgICAgICB0byB0aGUgY29ycmVjdCBvcmllbnRhdGlvbiBz
cGVjaWZpZWQgYnkgb2Zmc2V0LXJvdGF0ZS4gV2hlbiB0aGUgdHJhbnNmb3JtYXRpb24gbWF0cml4
CisgICAgICAgIGlzIGNvbXB1dGVkLCB0aGUgdHdvIHRyYW5zZm9ybWF0aW9ucyBhcmUgYXBwbGll
ZCBiZXR3ZWVuIHNjYWxlKCkgYW5kIHRoZSBpbmRpdmlkdWFsCisgICAgICAgIHRyYW5zZm9ybSBm
dW5jdGlvbnMsIGFzIHNwZWNpZmllZCBpbiB0aGUgQ1NTIFRyYW5zZm9ybXMgc3BlYy4KKworICAg
ICAgICBUZXN0czogaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvbW90aW9uL2Fu
aW1hdGlvbi9yZWZ0ZXN0cy9vZmZzZXQtcGF0aC13aXRoLXRyYW5zZm9ybXMtMDAxLmh0bWwKKyAg
ICAgICAgICAgICAgIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL21vdGlvbi9v
ZmZzZXQtZGlzdGFuY2UtMDAxLmh0bWwKKyAgICAgICAgICAgICAgIGltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvY3NzL21vdGlvbi9vZmZzZXQtZGlzdGFuY2UtMDAyLmh0bWwKKyAgICAg
ICAgICAgICAgIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL21vdGlvbi9vZmZz
ZXQtZGlzdGFuY2UtMDAzLmh0bWwKKyAgICAgICAgICAgICAgIGltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvY3NzL21vdGlvbi9vZmZzZXQtZGlzdGFuY2UtMDA0Lmh0bWwKKyAgICAgICAg
ICAgICAgIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL21vdGlvbi9vZmZzZXQt
ZGlzdGFuY2UtMDA1Lmh0bWwKKyAgICAgICAgICAgICAgIGltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvY3NzL21vdGlvbi9vZmZzZXQtZGlzdGFuY2UtMDA2Lmh0bWwKKyAgICAgICAgICAg
ICAgIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL21vdGlvbi9vZmZzZXQtZGlz
dGFuY2UtMDA3Lmh0bWwKKyAgICAgICAgICAgICAgIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvY3NzL21vdGlvbi9vZmZzZXQtZGlzdGFuY2UtMDA4Lmh0bWwKKyAgICAgICAgICAgICAg
IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL21vdGlvbi9vZmZzZXQtZGlzdGFu
Y2UtMDA5Lmh0bWwKKyAgICAgICAgICAgICAgIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvY3NzL21vdGlvbi9vZmZzZXQtcGF0aC1zdHJpbmctMDAxLmh0bWwKKyAgICAgICAgICAgICAg
IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL21vdGlvbi9vZmZzZXQtcGF0aC1z
dHJpbmctMDAyLmh0bWwKKyAgICAgICAgICAgICAgIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvY3NzL21vdGlvbi9vZmZzZXQtcm90YXRlLTAwMy5odG1sCisgICAgICAgICAgICAgICBp
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9tb3Rpb24vb2Zmc2V0LXJvdGF0ZS0w
MDQuaHRtbAorICAgICAgICAgICAgICAgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9j
c3MvbW90aW9uL29mZnNldC1yb3RhdGUtMDA1Lmh0bWwKKworICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL1BhdGguY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGF0aDo6aXNDbG9zZWQgY29uc3Qp
OiBBZGRlZCBtZXRob2QgdG8gZGV0ZXJtaW5lIGlmIGEgUGF0aCBpcyBjbG9zZWQgKGkuZSwKKyAg
ICAgICAgdGhlIGxhc3QgZHJhdyBjb21tYW5kIGlzIENsb3NlU3VicGF0aCkuIFRoaXMgaXMgcmVx
dWlyZWQgYmVjYXVzZSBvZmZzZXQtZGlzdGFuY2UgaXMKKyAgICAgICAgaGFuZGxlZCBkaWZmZXJl
bnRseSBkZXBlbmRpbmcgb24gaWYgdGhlIFBhdGggaXMgY2xvc2VkIG9yIG5vdC4KKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9QYXRoLmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxh
eWVyQ29tcG9zaXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpyZWNvbXBvc2l0ZUNoYW5nZVJl
cXVpcmVzR2VvbWV0cnlVcGRhdGUpOiBBY2NvdW50IGluIGNoYW5nZXMgaW4gbW90aW9uIHBhdGgg
cHJvcGVydGllcy4KKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyT2JqZWN0Lmg6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJPYmplY3Q6Omhhc1RyYW5zZm9ybSBjb25zdCk6IEFjY291bnQgaW4g
bW90aW9uIHBhdGggcHJvcGVydGllcy4KKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvUmVuZGVy
U3R5bGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cmFyZU5vbkluaGVyaXRlZERhdGFDaGFuZ2VS
ZXF1aXJlc0xheW91dCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6YXBwbHlUcmFu
c2Zvcm0gY29uc3QpOiBBZGQgYW4gYWRkaXRpb25hbCBzdGVwIHRvIGFwcGx5IG1vdGlvbiBwYXRo
IHRyYW5zZm9ybXMuCisgICAgICAgIChXZWJDb3JlOjpnZXRQYXRoRnJvbVBhdGhPcGVyYXRpb24p
OgorICAgICAgICAoV2ViQ29yZTo6Z2V0VHJhdmVyc2FsU3RhdGVBdERpc3RhbmNlKToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjphcHBseU1vdGlvblBhdGhUcmFuc2Zvcm0gY29uc3Qp
OiBBZGRlZCBtZXRob2QgdG8gYXBwbHkgbW90aW9uIHBhdGggdHJhbnNmb3Jtcy4KKyAgICAgICAg
KiByZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuaDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
clN0eWxlOjpoYXNUcmFuc2Zvcm0gY29uc3QpOiBBY2NvdW50IGZvciBtb3Rpb24gcGF0aCBwcm9w
ZXJ0aWVzLgorCiAyMDIxLTExLTE4ICBBbGFuIEJ1anRhcyAgPHphbGFuQGFwcGxlLmNvbT4KIAog
ICAgICAgICBbTEZDXVtJRkNdIFNob3VsZCBub3QgYWx3YXlzIGtlZXAgdGhlIGVudGlyZSBjb250
aW51b3VzIGNvbnRlbnQgd2hlbiB0aGUgbGluZSBpcyBlbXB0eQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGF0aC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9QYXRoLmNwcAppbmRleCA0OTc3N2JiODdhYjVhMzhjMjZjYjUxNzgxNjM1
ZjE0NDY5ZDNkYTViLi42YzhlZWU0N2YwYzlmZjM3YTJjOTU5ZGIyODQ4YTAzMDc3NGQ4MzQ4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QYXRoLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QYXRoLmNwcApAQCAtMjc1LDYgKzI3
NSwyNiBAQCBGbG9hdFBvaW50IFBhdGg6OmN1cnJlbnRQb2ludCgpIGNvbnN0CiAgICAgcmV0dXJu
IGN1cnJlbnRQb2ludFNsb3dDYXNlKCk7CiB9CiAKK2Jvb2wgUGF0aDo6aXNDbG9zZWQoKSBjb25z
dAoreworICAgIGJvb2wgbGFzdEVsZW1lbnRJc0Nsb3NlZCA9IGZhbHNlOworCisgICAgLy8gVGhl
IHBhdGggaXMgY2xvc2VkIGlmIHRoZSB0eXBlIG9mIHRoZSBsYXN0IFBhdGhFbGVtZW50IGlzIENs
b3NlU3VicGF0aC4gVW5mb3J0dW5hdGVseSwKKyAgICAvLyB0aGUgb25seSB3YXkgdG8gYWNjZXNz
IFBhdGhFbGVtZW50cyBpcyBzZXF1ZW50aWFsbHkgdGhyb3VnaCBhcHBseSgpLCB0aGVyZSdzIG5v
IHJhbmRvbQorICAgIC8vIGFjY2VzcyBhcyBpZiB0aGV5J3JlIGluIGEgdmVjdG9yLgorICAgIC8v
IFRoZSBsYW1iZGEgYmVsb3cgc2V0cyBsYXN0RWxlbWVudElzQ2xvc2VkIGlmIHRoZSBsYXN0IFBh
dGhFbGVtZW50IGlzIENsb3NlU3VicGF0aC4KKyAgICAvLyBCZWNhdXNlIGxhc3RFbGVtZW50SXND
bG9zZWQgaXMgb3ZlcnJpZGRlbiBpZiB0aGVyZSBhcmUgYW55IHJlbWFpbmluZyBQYXRoRWxlbWVu
dHMKKyAgICAvLyB0byBiZSBpdGVyYXRlZCwgaXRzIGZpbmFsIHZhbHVlIGlzIHRoZSB2YWx1ZSBv
ZiB0aGUgbGFzdCBpdGVyYXRpb24uCisgICAgLy8gKGkuZSB0aGUgbGFzdCBQYXRoRWxlbWVudCku
CisgICAgLy8gRklYTUU6IGZpbmQgYSBtb3JlIGVmZmljaWVudCB3YXkgdG8gaW1wbGVtZW50IHRo
aXMsIHRoYXQgZG9lcyBub3QgcmVxdWlyZSBpdGVyYXRpbmcKKyAgICAvLyB0aHJvdWdoIGFsbCBQ
YXRoRWxlbWVudHMuCisgICAgYXBwbHkoWyZsYXN0RWxlbWVudElzQ2xvc2VkXShjb25zdCBXZWJD
b3JlOjpQYXRoRWxlbWVudCYgZWxlbWVudCkgeworICAgICAgICBsYXN0RWxlbWVudElzQ2xvc2Vk
ID0gKGVsZW1lbnQudHlwZSA9PSBQYXRoRWxlbWVudDo6VHlwZTo6Q2xvc2VTdWJwYXRoKTsKKyAg
ICB9KTsKKworICAgIHJldHVybiBsYXN0RWxlbWVudElzQ2xvc2VkOworfQorCiBzaXplX3QgUGF0
aDo6ZWxlbWVudENvdW50KCkgY29uc3QKIHsKICNpZiBFTkFCTEUoSU5MSU5FX1BBVEhfREFUQSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BhdGguaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BhdGguaAppbmRleCA3Yjk4NzZhYjFjNzg1
OGI1NGI4MGQ5MDhlNmE4MGU1OTYyM2ZiZTJmLi4zNWQ5YWE1Mzg5NTE4NjdhZjZkNmJmY2MwYWM5
ODkxZjkxNzQ5MTY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9QYXRoLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGF0aC5oCkBA
IC0xNjAsNiArMTYwLDggQEAgcHVibGljOgogICAgIGJvb2wgaGFzQ3VycmVudFBvaW50KCkgY29u
c3Q7CiAgICAgRmxvYXRQb2ludCBjdXJyZW50UG9pbnQoKSBjb25zdDsKIAorICAgIGJvb2wgaXND
bG9zZWQoKSBjb25zdDsKKwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgbW92ZVRvKGNvbnN0IEZs
b2F0UG9pbnQmKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGFkZExpbmVUbyhjb25zdCBGbG9h
dFBvaW50Jik7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhZGRRdWFkQ3VydmVUbyhjb25zdCBG
bG9hdFBvaW50JiBjb250cm9sUG9pbnQsIGNvbnN0IEZsb2F0UG9pbnQmIGVuZFBvaW50KTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3Iu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5jcHAK
aW5kZXggMmU3MGJiZTdmOTZiOTMxOTQ0ODFjZWE5NGNlNTQ0MWYzMDNiZDBlZi4uYmYwYmZkZTBj
NTk2OGYxYmEzYzAxNDI2ZDliM2RkNzczMTEyZGE0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5jcHAKQEAgLTE2NDcsNiArMTY0Nywx
MSBAQCBzdGF0aWMgYm9vbCByZWNvbXBvc2l0ZUNoYW5nZVJlcXVpcmVzR2VvbWV0cnlVcGRhdGUo
Y29uc3QgUmVuZGVyU3R5bGUmIG9sZFN0eWxlLAogICAgICAgICB8fCBvbGRTdHlsZS5wZXJzcGVj
dGl2ZU9yaWdpblgoKSAhPSBuZXdTdHlsZS5wZXJzcGVjdGl2ZU9yaWdpblgoKQogICAgICAgICB8
fCBvbGRTdHlsZS5wZXJzcGVjdGl2ZU9yaWdpblkoKSAhPSBuZXdTdHlsZS5wZXJzcGVjdGl2ZU9y
aWdpblkoKQogICAgICAgICB8fCBvbGRTdHlsZS5iYWNrZmFjZVZpc2liaWxpdHkoKSAhPSBuZXdT
dHlsZS5iYWNrZmFjZVZpc2liaWxpdHkoKQorICAgICAgICB8fCAhYXJlUG9pbnRpbmdUb0VxdWFs
RGF0YShvbGRTdHlsZS5vZmZzZXRQYXRoKCksIG5ld1N0eWxlLm9mZnNldFBhdGgoKSkKKyAgICAg
ICAgfHwgb2xkU3R5bGUub2Zmc2V0QW5jaG9yKCkgIT0gbmV3U3R5bGUub2Zmc2V0QW5jaG9yKCkK
KyAgICAgICAgfHwgb2xkU3R5bGUub2Zmc2V0UG9zaXRpb24oKSAhPSBuZXdTdHlsZS5vZmZzZXRQ
b3NpdGlvbigpCisgICAgICAgIHx8IG9sZFN0eWxlLm9mZnNldERpc3RhbmNlKCkgIT0gbmV3U3R5
bGUub2Zmc2V0RGlzdGFuY2UoKQorICAgICAgICB8fCBvbGRTdHlsZS5vZmZzZXRSb3RhdGUoKSAh
PSBuZXdTdHlsZS5vZmZzZXRSb3RhdGUoKQogICAgICAgICB8fCAhYXJlUG9pbnRpbmdUb0VxdWFs
RGF0YShvbGRTdHlsZS5jbGlwUGF0aCgpLCBuZXdTdHlsZS5jbGlwUGF0aCgpKTsKIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5oIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5oCmluZGV4IDhiMDA5MzE4MjM4OWZiN2Rm
NjlmOGQ1N2RjOGYwMjk0N2Q1N2RlNTguLmQ0OTk4Nzg3MmVmMzQxMDNhYzBlODI0ZDcxZjM5NGM2
ZWJjZTk3ZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmpl
Y3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmgKQEAgLTQ0
NCw3ICs0NDQsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBoYXNQb3RlbnRpYWxseVNjcm9sbGFibGVP
dmVyZmxvdygpIGNvbnN0OwogCiAgICAgYm9vbCBoYXNUcmFuc2Zvcm1SZWxhdGVkUHJvcGVydHko
KSBjb25zdCB7IHJldHVybiBtX2JpdGZpZWxkcy5oYXNUcmFuc2Zvcm1SZWxhdGVkUHJvcGVydHko
KTsgfSAvLyBUcmFuc2Zvcm0sIHBlcnNwZWN0aXZlIG9yIHRyYW5zZm9ybS1zdHlsZTogcHJlc2Vy
dmUtM2QuCi0gICAgYm9vbCBoYXNUcmFuc2Zvcm0oKSBjb25zdCB7IHJldHVybiBoYXNUcmFuc2Zv
cm1SZWxhdGVkUHJvcGVydHkoKSAmJiAoc3R5bGUoKS5oYXNUcmFuc2Zvcm0oKSB8fCBzdHlsZSgp
LnRyYW5zbGF0ZSgpIHx8IHN0eWxlKCkuc2NhbGUoKSB8fCBzdHlsZSgpLnJvdGF0ZSgpKTsgfQor
ICAgIGJvb2wgaGFzVHJhbnNmb3JtKCkgY29uc3QgeyByZXR1cm4gaGFzVHJhbnNmb3JtUmVsYXRl
ZFByb3BlcnR5KCkgJiYgKHN0eWxlKCkuaGFzVHJhbnNmb3JtKCkgfHwgc3R5bGUoKS50cmFuc2xh
dGUoKSB8fCBzdHlsZSgpLnNjYWxlKCkgfHwgc3R5bGUoKS5yb3RhdGUoKSB8fCBzdHlsZSgpLm9m
ZnNldFBhdGgoKSk7IH0KIAogICAgIGlubGluZSBib29sIHByZXNlcnZlc05ld2xpbmUoKSBjb25z
dDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0
eWxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5jcHAK
aW5kZXggM2FmOWUxNTBlZTBiMGEzNWFlNTllZmRlNWVkMjc4MDNiZWRmNjQ2ZS4uNTljODA5MWIz
ZmEwMDExNjc5MjI1NjMwNmIwZWZiYmVjZTUyOTE2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuY3BwCkBAIC0zNiw2ICszNiw3IEBACiAjaW5jbHVk
ZSAiSW5saW5lSXRlcmF0b3JUZXh0Qm94LmgiCiAjaW5jbHVkZSAiSW5saW5lVGV4dEJveFN0eWxl
LmgiCiAjaW5jbHVkZSAiUGFnaW5hdGlvbi5oIgorI2luY2x1ZGUgIlBhdGhUcmF2ZXJzYWxTdGF0
ZS5oIgogI2luY2x1ZGUgIlF1b3Rlc0RhdGEuaCIKICNpbmNsdWRlICJSZW5kZXJCbG9jay5oIgog
I2luY2x1ZGUgIlJlbmRlck9iamVjdC5oIgpAQCAtNjk4LDYgKzY5OSwxMyBAQCBzdGF0aWMgYm9v
bCByYXJlTm9uSW5oZXJpdGVkRGF0YUNoYW5nZVJlcXVpcmVzTGF5b3V0KGNvbnN0IFN0eWxlUmFy
ZU5vbkluaGVyaXRlZAogICAgICAgICB8fCAhYXJlUG9pbnRpbmdUb0VxdWFsRGF0YShmaXJzdC50
cmFuc2xhdGUsIHNlY29uZC50cmFuc2xhdGUpKQogICAgICAgICBjaGFuZ2VkQ29udGV4dFNlbnNp
dGl2ZVByb3BlcnRpZXMuYWRkKFN0eWxlRGlmZmVyZW5jZUNvbnRleHRTZW5zaXRpdmVQcm9wZXJ0
eTo6VHJhbnNmb3JtKTsKIAorICAgIGlmICghYXJlUG9pbnRpbmdUb0VxdWFsRGF0YShmaXJzdC5v
ZmZzZXRQYXRoLCBzZWNvbmQub2Zmc2V0UGF0aCkKKyAgICAgICAgfHwgZmlyc3Qub2Zmc2V0UG9z
aXRpb24gIT0gc2Vjb25kLm9mZnNldFBvc2l0aW9uCisgICAgICAgIHx8IGZpcnN0Lm9mZnNldERp
c3RhbmNlICE9IHNlY29uZC5vZmZzZXREaXN0YW5jZQorICAgICAgICB8fCBmaXJzdC5vZmZzZXRB
bmNob3IgIT0gc2Vjb25kLm9mZnNldEFuY2hvcgorICAgICAgICB8fCBmaXJzdC5vZmZzZXRSb3Rh
dGUgIT0gc2Vjb25kLm9mZnNldFJvdGF0ZSkKKyAgICAgICAgY2hhbmdlZENvbnRleHRTZW5zaXRp
dmVQcm9wZXJ0aWVzLmFkZChTdHlsZURpZmZlcmVuY2VDb250ZXh0U2Vuc2l0aXZlUHJvcGVydHk6
OlRyYW5zZm9ybSk7CisKICAgICBpZiAoZmlyc3QuZ3JpZCAhPSBzZWNvbmQuZ3JpZAogICAgICAg
ICB8fCBmaXJzdC5ncmlkSXRlbSAhPSBzZWNvbmQuZ3JpZEl0ZW0pCiAgICAgICAgIHJldHVybiB0
cnVlOwpAQCAtMTQwNyw3ICsxNDE1LDExIEBAIHZvaWQgUmVuZGVyU3R5bGU6OmFwcGx5VHJhbnNm
b3JtKFRyYW5zZm9ybWF0aW9uTWF0cml4JiB0cmFuc2Zvcm0sIGNvbnN0IEZsb2F0UmVjCiAgICAg
Ly8gMS4gU3RhcnQgd2l0aCB0aGUgaWRlbnRpdHkgbWF0cml4LgogCiAgICAgYXV0byYgdHJhbnNm
b3JtT3BlcmF0aW9ucyA9IG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPnRyYW5zZm9ybS0+b3BlcmF0
aW9uczsKLSAgICBib29sIGFwcGx5VHJhbnNmb3JtT3JpZ2luID0gb3B0aW9ucy5jb250YWlucyhS
ZW5kZXJTdHlsZTo6VHJhbnNmb3JtT3BlcmF0aW9uT3B0aW9uOjpUcmFuc2Zvcm1PcmlnaW4pICYm
ICgobV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+cm90YXRlICYmICFtX3JhcmVOb25Jbmhlcml0ZWRE
YXRhLT5yb3RhdGUtPmlzSWRlbnRpdHkoKSkgfHwgKG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPnNj
YWxlICYmICFtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5zY2FsZS0+aXNJZGVudGl0eSgpKSB8fCB0
cmFuc2Zvcm1PcGVyYXRpb25zLmFmZmVjdGVkQnlUcmFuc2Zvcm1PcmlnaW4oKSk7CisgICAgYm9v
bCBhcHBseVRyYW5zZm9ybU9yaWdpbiA9IG9wdGlvbnMuY29udGFpbnMoUmVuZGVyU3R5bGU6OlRy
YW5zZm9ybU9wZXJhdGlvbk9wdGlvbjo6VHJhbnNmb3JtT3JpZ2luKQorICAgICAgICAmJiAoKG1f
cmFyZU5vbkluaGVyaXRlZERhdGEtPnJvdGF0ZSAmJiAhbV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+
cm90YXRlLT5pc0lkZW50aXR5KCkpCisgICAgICAgICAgICB8fCAobV9yYXJlTm9uSW5oZXJpdGVk
RGF0YS0+c2NhbGUgJiYgIW1fcmFyZU5vbkluaGVyaXRlZERhdGEtPnNjYWxlLT5pc0lkZW50aXR5
KCkpCisgICAgICAgICAgICB8fCB0cmFuc2Zvcm1PcGVyYXRpb25zLmFmZmVjdGVkQnlUcmFuc2Zv
cm1PcmlnaW4oKQorICAgICAgICAgICAgfHwgb2Zmc2V0UGF0aCgpKTsKIAogICAgIC8vIDIuIFRy
YW5zbGF0ZSBieSB0aGUgY29tcHV0ZWQgWCwgWSwgYW5kIFogdmFsdWVzIG9mIHRyYW5zZm9ybS1v
cmlnaW4uCiAgICAgRmxvYXRQb2ludDNEIG9yaWdpblRyYW5zbGF0ZTsKQEAgLTE0MzUsNyArMTQ0
Nyw5IEBAIHZvaWQgUmVuZGVyU3R5bGU6OmFwcGx5VHJhbnNmb3JtKFRyYW5zZm9ybWF0aW9uTWF0
cml4JiB0cmFuc2Zvcm0sIGNvbnN0IEZsb2F0UmVjCiAgICAgICAgICAgICBzY2FsZS0+YXBwbHko
dHJhbnNmb3JtLCBib3VuZGluZ0JveC5zaXplKCkpOwogICAgIH0KIAotICAgIC8vIDYuIFRyYW5z
bGF0ZSBhbmQgcm90YXRlIGJ5IHRoZSB0cmFuc2Zvcm0gc3BlY2lmaWVkIGJ5IG9mZnNldC4gKEZJ
WE1FOiB3ZSBkb24ndCBzdXBwb3J0IHRoZSBvZmZzZXQgcHJvcGVydHkpCisgICAgLy8gNi4gVHJh
bnNsYXRlIGFuZCByb3RhdGUgYnkgdGhlIHRyYW5zZm9ybSBzcGVjaWZpZWQgYnkgb2Zmc2V0Lgor
ICAgIGlmIChvcHRpb25zLmNvbnRhaW5zKFJlbmRlclN0eWxlOjpUcmFuc2Zvcm1PcGVyYXRpb25P
cHRpb246Ok9mZnNldCkpCisgICAgICAgIGFwcGx5TW90aW9uUGF0aFRyYW5zZm9ybSh0cmFuc2Zv
cm0sIGJvdW5kaW5nQm94KTsKIAogICAgIC8vIDcuIE11bHRpcGx5IGJ5IGVhY2ggb2YgdGhlIHRy
YW5zZm9ybSBmdW5jdGlvbnMgaW4gdHJhbnNmb3JtIGZyb20gbGVmdCB0byByaWdodC4KICAgICBm
b3IgKGF1dG8mIG9wZXJhdGlvbiA6IHRyYW5zZm9ybU9wZXJhdGlvbnMub3BlcmF0aW9ucygpKQpA
QCAtMTQ0Niw2ICsxNDYwLDY4IEBAIHZvaWQgUmVuZGVyU3R5bGU6OmFwcGx5VHJhbnNmb3JtKFRy
YW5zZm9ybWF0aW9uTWF0cml4JiB0cmFuc2Zvcm0sIGNvbnN0IEZsb2F0UmVjCiAgICAgICAgIHRy
YW5zZm9ybS50cmFuc2xhdGUzZCgtb3JpZ2luVHJhbnNsYXRlLngoKSwgLW9yaWdpblRyYW5zbGF0
ZS55KCksIC1vcmlnaW5UcmFuc2xhdGUueigpKTsKIH0KIAorc3RhdGljIHN0ZDo6b3B0aW9uYWw8
UGF0aD4gZ2V0UGF0aEZyb21QYXRoT3BlcmF0aW9uKGNvbnN0IEZsb2F0UmVjdCYgYm94LCBjb25z
dCBQYXRoT3BlcmF0aW9uJiBvcGVyYXRpb24pCit7CisgICAgaWYgKG9wZXJhdGlvbi50eXBlKCkg
PT0gUGF0aE9wZXJhdGlvbjo6U2hhcGUpCisgICAgICAgIHJldHVybiBkb3duY2FzdDxTaGFwZVBh
dGhPcGVyYXRpb24+KG9wZXJhdGlvbikucGF0aEZvclJlZmVyZW5jZVJlY3QoYm94KTsKKworICAg
IC8vIEZJWE1FOiBzdXBwb3J0IFJlZmVyZW5jZSBhbmQgQm94IHR5cGUuCisgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKK30KKworc3RhdGljIFBhdGhUcmF2ZXJzYWxTdGF0ZSBnZXRUcmF2ZXJzYWxT
dGF0ZUF0RGlzdGFuY2UoY29uc3QgUGF0aCYgcGF0aCwgY29uc3QgTGVuZ3RoJiBkaXN0YW5jZSkK
K3sKKyAgICBhdXRvIHBhdGhMZW5ndGggPSBwYXRoLmxlbmd0aCgpOworICAgIGF1dG8gZGlzdGFu
Y2VWYWx1ZSA9IGZsb2F0VmFsdWVGb3JMZW5ndGgoZGlzdGFuY2UsIHBhdGhMZW5ndGgpOworCisg
ICAgZmxvYXQgcmVzb2x2ZWRMZW5ndGggPSAwOworICAgIGlmIChwYXRoLmlzQ2xvc2VkKCkpIHsK
KyAgICAgICAgaWYgKHBhdGhMZW5ndGgpIHsKKyAgICAgICAgICAgIHJlc29sdmVkTGVuZ3RoID0g
Zm1vZChkaXN0YW5jZVZhbHVlLCBwYXRoTGVuZ3RoKTsKKyAgICAgICAgICAgIGlmIChyZXNvbHZl
ZExlbmd0aCA8IDApCisgICAgICAgICAgICAgICAgcmVzb2x2ZWRMZW5ndGggKz0gcGF0aExlbmd0
aDsKKyAgICAgICAgfQorICAgIH0gZWxzZQorICAgICAgICByZXNvbHZlZExlbmd0aCA9IGNsYW1w
VG88ZmxvYXQ+KGRpc3RhbmNlVmFsdWUsIDAsIHBhdGhMZW5ndGgpOworCisgICAgQVNTRVJUKHJl
c29sdmVkTGVuZ3RoID49IDApOworICAgIHJldHVybiBwYXRoLnRyYXZlcnNhbFN0YXRlQXRMZW5n
dGgocmVzb2x2ZWRMZW5ndGgpOworfQorCit2b2lkIFJlbmRlclN0eWxlOjphcHBseU1vdGlvblBh
dGhUcmFuc2Zvcm0oVHJhbnNmb3JtYXRpb25NYXRyaXgmIHRyYW5zZm9ybSwgY29uc3QgRmxvYXRS
ZWN0JiBib3VuZGluZ0JveCkgY29uc3QKK3sKKyAgICBpZiAoIW9mZnNldFBhdGgoKSkKKyAgICAg
ICAgcmV0dXJuOworCisgICAgLy8gU2hpZnQgZWxlbWVudCB0byB0aGUgcG9pbnQgb24gcGF0aCBz
cGVjaWZpZWQgYnkgb2Zmc2V0LXBhdGggYW5kIG9mZnNldC1kaXN0YW5jZS4KKyAgICBhdXRvIHBh
dGggPSBnZXRQYXRoRnJvbVBhdGhPcGVyYXRpb24oYm91bmRpbmdCb3gsICpvZmZzZXRQYXRoKCkp
OworICAgIGlmICghcGF0aCkKKyAgICAgICAgcmV0dXJuOworICAgIGF1dG8gdHJhdmVyc2FsU3Rh
dGUgPSBnZXRUcmF2ZXJzYWxTdGF0ZUF0RGlzdGFuY2UoKnBhdGgsIG9mZnNldERpc3RhbmNlKCkp
OworICAgIHRyYW5zZm9ybS50cmFuc2xhdGUodHJhdmVyc2FsU3RhdGUuY3VycmVudCgpLngoKSwg
dHJhdmVyc2FsU3RhdGUuY3VycmVudCgpLnkoKSk7CisKKyAgICAvLyBTaGlmdCBlbGVtZW50IHRv
IHRoZSBhbmNob3Igc3BlY2lmaWVkIGJ5IG9mZnNldC1hbmNob3IuCisgICAgYXV0byB0cmFuc2Zv
cm1PcmlnaW4gPSBib3VuZGluZ0JveC5sb2NhdGlvbigpICsgZmxvYXRQb2ludEZvckxlbmd0aFBv
aW50KHRyYW5zZm9ybU9yaWdpblhZKCksIGJvdW5kaW5nQm94LnNpemUoKSk7CisgICAgLy8gRGVm
YXVsdCB2YWx1ZSBvZiBvZmZzZXQtYW5jaG9yIGlzIHRyYW5zZm9ybS1vcmlnaW4KKyAgICBhdXRv
IGFuY2hvciA9IHRyYW5zZm9ybU9yaWdpbjsKKyAgICAvLyBIYW5kbGUgdGhlIGNhc2UgaWYgb2Zm
c2V0LWFuY2hvciBpcyBub3QgYXV0bworICAgIGlmICghb2Zmc2V0QW5jaG9yKCkueCgpLmlzQXV0
bygpKQorICAgICAgICBhbmNob3IgPSBmbG9hdFBvaW50Rm9yTGVuZ3RoUG9pbnQob2Zmc2V0QW5j
aG9yKCksIGJvdW5kaW5nQm94LnNpemUoKSkgKyBib3VuZGluZ0JveC5sb2NhdGlvbigpOworICAg
IHRyYW5zZm9ybS50cmFuc2xhdGUoLWFuY2hvci54KCksIC1hbmNob3IueSgpKTsKKworICAgIGF1
dG8gc2hpZnRUb09yaWdpbiA9IGFuY2hvciAtIHRyYW5zZm9ybU9yaWdpbjsKKyAgICB0cmFuc2Zv
cm0udHJhbnNsYXRlKHNoaWZ0VG9PcmlnaW4ud2lkdGgoKSwgc2hpZnRUb09yaWdpbi5oZWlnaHQo
KSk7CisKKyAgICAvLyBBcHBseSByb3RhdGlvbi4KKyAgICBhdXRvIHJvdGF0aW9uID0gb2Zmc2V0
Um90YXRlKCk7CisgICAgaWYgKHJvdGF0aW9uLmhhc0F1dG8oKSkKKyAgICAgICAgdHJhbnNmb3Jt
LnJvdGF0ZSh0cmF2ZXJzYWxTdGF0ZS5ub3JtYWxBbmdsZSgpICsgcm90YXRpb24uYW5nbGUoKSk7
CisgICAgZWxzZQorICAgICAgICB0cmFuc2Zvcm0ucm90YXRlKHJvdGF0aW9uLmFuZ2xlKCkpOwor
CisgICAgdHJhbnNmb3JtLnRyYW5zbGF0ZSgtc2hpZnRUb09yaWdpbi53aWR0aCgpLCAtc2hpZnRU
b09yaWdpbi5oZWlnaHQoKSk7Cit9CisKIHZvaWQgUmVuZGVyU3R5bGU6OnNldFBhZ2VTY2FsZVRy
YW5zZm9ybShmbG9hdCBzY2FsZSkKIHsKICAgICBpZiAoc2NhbGUgPT0gMSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5oIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmgKaW5kZXggYTBlMmMyYzJlYjc2NzAy
MzBhZDVmYWFiYWRiY2QzMmE1YmY4ZTY3My4uNGQxZTc4Yjk0OTMzMzQxNzVmODJiYzA2OWE5MmQ2
Yjc0YWQ2Y2E0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1Jl
bmRlclN0eWxlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0
eWxlLmgKQEAgLTY0NSw3ICs2NDUsNyBAQCBwdWJsaWM6CiAgICAgQ29sdW1uU3BhbiBjb2x1bW5T
cGFuKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8Q29sdW1uU3Bhbj4obV9yYXJlTm9uSW5o
ZXJpdGVkRGF0YS0+bXVsdGlDb2wtPmNvbHVtblNwYW4pOyB9CiAKICAgICBjb25zdCBUcmFuc2Zv
cm1PcGVyYXRpb25zJiB0cmFuc2Zvcm0oKSBjb25zdCB7IHJldHVybiBtX3JhcmVOb25Jbmhlcml0
ZWREYXRhLT50cmFuc2Zvcm0tPm9wZXJhdGlvbnM7IH0KLSAgICBib29sIGhhc1RyYW5zZm9ybSgp
IGNvbnN0IHsgcmV0dXJuICFtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT50cmFuc2Zvcm0tPm9wZXJh
dGlvbnMub3BlcmF0aW9ucygpLmlzRW1wdHkoKTsgfQorICAgIGJvb2wgaGFzVHJhbnNmb3JtKCkg
Y29uc3QgeyByZXR1cm4gIW1fcmFyZU5vbkluaGVyaXRlZERhdGEtPnRyYW5zZm9ybS0+b3BlcmF0
aW9ucy5vcGVyYXRpb25zKCkuaXNFbXB0eSgpIHx8IG9mZnNldFBhdGgoKTsgfQogICAgIGNvbnN0
IExlbmd0aCYgdHJhbnNmb3JtT3JpZ2luWCgpIGNvbnN0IHsgcmV0dXJuIG1fcmFyZU5vbkluaGVy
aXRlZERhdGEtPnRyYW5zZm9ybS0+eDsgfQogICAgIGNvbnN0IExlbmd0aCYgdHJhbnNmb3JtT3Jp
Z2luWSgpIGNvbnN0IHsgcmV0dXJuIG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPnRyYW5zZm9ybS0+
eTsgfQogICAgIGZsb2F0IHRyYW5zZm9ybU9yaWdpblooKSBjb25zdCB7IHJldHVybiBtX3JhcmVO
b25Jbmhlcml0ZWREYXRhLT50cmFuc2Zvcm0tPno7IH0KQEAgLTY4NCwxMiArNjg0LDE0IEBAIHB1
YmxpYzoKICAgICAgICAgVHJhbnNmb3JtT3JpZ2luID0gMSA8PCAwLAogICAgICAgICBUcmFuc2xh
dGUgICAgICAgPSAxIDw8IDEsCiAgICAgICAgIFJvdGF0ZSAgICAgICAgICA9IDEgPDwgMiwKLSAg
ICAgICAgU2NhbGUgICAgICAgICAgID0gMSA8PCAzCisgICAgICAgIFNjYWxlICAgICAgICAgICA9
IDEgPDwgMywKKyAgICAgICAgT2Zmc2V0ICAgICAgICAgID0gMSA8PCA0CiAgICAgfTsKIAotICAg
IHN0YXRpYyBjb25zdGV4cHIgT3B0aW9uU2V0PFRyYW5zZm9ybU9wZXJhdGlvbk9wdGlvbj4gYWxs
VHJhbnNmb3JtT3BlcmF0aW9ucyA9IHsgVHJhbnNmb3JtT3BlcmF0aW9uT3B0aW9uOjpUcmFuc2Zv
cm1PcmlnaW4sIFRyYW5zZm9ybU9wZXJhdGlvbk9wdGlvbjo6VHJhbnNsYXRlLCBUcmFuc2Zvcm1P
cGVyYXRpb25PcHRpb246OlJvdGF0ZSwgVHJhbnNmb3JtT3BlcmF0aW9uT3B0aW9uOjpTY2FsZSB9
OwotICAgIHN0YXRpYyBjb25zdGV4cHIgT3B0aW9uU2V0PFRyYW5zZm9ybU9wZXJhdGlvbk9wdGlv
bj4gaW5kaXZpZHVhbFRyYW5zZm9ybU9wZXJhdGlvbnMgPSB7IFRyYW5zZm9ybU9wZXJhdGlvbk9w
dGlvbjo6VHJhbnNsYXRlLCBUcmFuc2Zvcm1PcGVyYXRpb25PcHRpb246OlJvdGF0ZSwgVHJhbnNm
b3JtT3BlcmF0aW9uT3B0aW9uOjpTY2FsZSB9OworICAgIHN0YXRpYyBjb25zdGV4cHIgT3B0aW9u
U2V0PFRyYW5zZm9ybU9wZXJhdGlvbk9wdGlvbj4gYWxsVHJhbnNmb3JtT3BlcmF0aW9ucyA9IHsg
VHJhbnNmb3JtT3BlcmF0aW9uT3B0aW9uOjpUcmFuc2Zvcm1PcmlnaW4sIFRyYW5zZm9ybU9wZXJh
dGlvbk9wdGlvbjo6VHJhbnNsYXRlLCBUcmFuc2Zvcm1PcGVyYXRpb25PcHRpb246OlJvdGF0ZSwg
VHJhbnNmb3JtT3BlcmF0aW9uT3B0aW9uOjpTY2FsZSAsIFRyYW5zZm9ybU9wZXJhdGlvbk9wdGlv
bjo6T2Zmc2V0IH07CisgICAgc3RhdGljIGNvbnN0ZXhwciBPcHRpb25TZXQ8VHJhbnNmb3JtT3Bl
cmF0aW9uT3B0aW9uPiBpbmRpdmlkdWFsVHJhbnNmb3JtT3BlcmF0aW9ucyA9IHsgVHJhbnNmb3Jt
T3BlcmF0aW9uT3B0aW9uOjpUcmFuc2xhdGUsIFRyYW5zZm9ybU9wZXJhdGlvbk9wdGlvbjo6Um90
YXRlLCBUcmFuc2Zvcm1PcGVyYXRpb25PcHRpb246OlNjYWxlLCBUcmFuc2Zvcm1PcGVyYXRpb25P
cHRpb246Ok9mZnNldCB9OwogICAgIHZvaWQgYXBwbHlUcmFuc2Zvcm0oVHJhbnNmb3JtYXRpb25N
YXRyaXgmLCBjb25zdCBGbG9hdFJlY3QmIGJvdW5kaW5nQm94LCBPcHRpb25TZXQ8VHJhbnNmb3Jt
T3BlcmF0aW9uT3B0aW9uPiA9IGFsbFRyYW5zZm9ybU9wZXJhdGlvbnMpIGNvbnN0OworICAgIHZv
aWQgYXBwbHlNb3Rpb25QYXRoVHJhbnNmb3JtKFRyYW5zZm9ybWF0aW9uTWF0cml4JiwgY29uc3Qg
RmxvYXRSZWN0JiBib3VuZGluZ0JveCkgY29uc3Q7CiAgICAgdm9pZCBzZXRQYWdlU2NhbGVUcmFu
c2Zvcm0oZmxvYXQpOwogCiAgICAgYm9vbCBoYXNNYXNrKCkgY29uc3QgeyByZXR1cm4gbV9yYXJl
Tm9uSW5oZXJpdGVkRGF0YS0+bWFzay0+aGFzSW1hZ2UoKSB8fCBtX3JhcmVOb25Jbmhlcml0ZWRE
YXRhLT5tYXNrQm94SW1hZ2UuaGFzSW1hZ2UoKTsgfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDVmMjFkOTBlZWFkYjViMjY2
Y2YxOWMxOTliMGY4ZmZkMTFlNzI5MmQuLjg2NmNkYzk2YzdhZjAyMWVhZTA2NTBhNjA3YWQ1OTcy
NmE2NzU1ZmYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAyMS0xMS0xOCAgS2lldCBIbyAgPHRo
bzIyQGFwcGxlLmNvbT4KKworICAgICAgICBJbnRlZ3JhdGUgbW90aW9uIHBhdGggdHJhbnNmb3Jt
cyBpbiB0cmFuc2Zvcm1hdGlvbiBwaXBlbGluZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMzMTQ0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgUmVtb3ZlZCBJbWFnZU9ubHlGYWlsdXJlIGV4cGVjdGF0aW9u
cyBmb3IgdGVzdHMgdGhhdCBzaG91bGQgbm93IHBhc3MuCisKKyAgICAgICAgKiBUZXN0RXhwZWN0
YXRpb25zOgorCiAyMDIxLTExLTE4ICBNYXJ0aW4gUm9iaW5zb24gIDxtcm9iaW5zb25Ad2Via2l0
Lm9yZz4KIAogICAgICAgICBVcGRhdGUgY3NzLXRyYW5zZm9ybXMgV1BUIHRlc3RzCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9UZXN0RXhwZWN0YXRpb25zIGIvTGF5b3V0VGVzdHMvVGVzdEV4cGVj
dGF0aW9ucwppbmRleCA5MDI0ZjMxNmM3ZmM2NjRmYzhjYjA2ZDA3ZjdiMDk2NzZiMDk1YWJkLi44
NGFhMzRkMjliMzEzMTdkOGVkYTcxOGE3YTk1NzFiM2RhZTU0MDM1IDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3RzL1Rlc3RFeHBlY3RhdGlv
bnMKQEAgLTUwODUsMjAgKzUwODUsMTIgQEAgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy9jb250ZW50LXNlY3VyaXR5LXBvbGljeS9zY3JpcHQtc3JjLyBbIER1bXBKU0NvbnMKICMgaW1w
b3J0LXczYy10ZXN0cyBjb3BpZXMgLW5vdHJlZi5odG1sIHRvIC1leHBlY3RlZC5odG1sLCBzbyBl
eHBlY3RlZCBpbWFnZSBmYWlsdXJlIGhlcmUuCiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL2h0bWwvc2VtYW50aWNzL2Zvcm1zL3RoZS10ZXh0YXJlYS1lbGVtZW50L3BsYWNlaG9sZGVy
LXdoaXRlLXNwYWNlLnRlbnRhdGl2ZS5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCiAKLSMgQ1NT
IG1vdGlvbiBwYXRoIHRlc3RzLCBjdXJyZW50bHkgZmFpbGluZy4KLWltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvY3NzL21vdGlvbi9hbmltYXRpb24vcmVmdGVzdHMvb2Zmc2V0LXBhdGgt
d2l0aC10cmFuc2Zvcm1zLTAwMS5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi1pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9tb3Rpb24vb2Zmc2V0LWFuY2hvci10cmFuc2Zvcm0t
Ym94LWZpbGwtYm94LTAwMS5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi1pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9tb3Rpb24vb2Zmc2V0LWFuY2hvci10cmFuc2Zvcm0tYm94
LWZpbGwtYm94LTAwMi5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi1pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL2Nzcy9tb3Rpb24vb2Zmc2V0LWFuY2hvci10cmFuc2Zvcm0tYm94LWZp
bGwtYm94LTAwMy5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi1pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL2Nzcy9tb3Rpb24vb2Zmc2V0LWRpc3RhbmNlLTAwMS5odG1sIFsgSW1hZ2VP
bmx5RmFpbHVyZSBdCi1pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9tb3Rpb24v
b2Zmc2V0LWRpc3RhbmNlLTAwMi5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi1pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9tb3Rpb24vb2Zmc2V0LWRpc3RhbmNlLTAwMy5odG1s
IFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi1pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nz
cy9tb3Rpb24vb2Zmc2V0LWRpc3RhbmNlLTAwNC5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi1p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9tb3Rpb24vb2Zmc2V0LWRpc3RhbmNl
LTAwNS5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi1pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL2Nzcy9tb3Rpb24vb2Zmc2V0LWRpc3RhbmNlLTAwNi5odG1sIFsgSW1hZ2VPbmx5RmFp
bHVyZSBdCi1pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9tb3Rpb24vb2Zmc2V0
LWRpc3RhbmNlLTAwNy5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi1pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL2Nzcy9tb3Rpb24vb2Zmc2V0LWRpc3RhbmNlLTAwOC5odG1sIFsgSW1h
Z2VPbmx5RmFpbHVyZSBdCi1pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9tb3Rp
b24vb2Zmc2V0LWRpc3RhbmNlLTAwOS5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCisjIENTUyBt
b3Rpb24gcGF0aCB0ZXN0cyBmYWlsaW5nIGZvciB1bmtub3duIHJlYXNvbi4KK3dlYmtpdC5vcmcv
Yi8yMzMzNDAgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvbW90aW9uL29mZnNl
dC1hbmNob3ItdHJhbnNmb3JtLWJveC1maWxsLWJveC0wMDEuaHRtbCBbIEltYWdlT25seUZhaWx1
cmUgXQord2Via2l0Lm9yZy9iLzIzMzM0MCBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L2Nzcy9tb3Rpb24vb2Zmc2V0LWFuY2hvci10cmFuc2Zvcm0tYm94LWZpbGwtYm94LTAwMi5odG1s
IFsgSW1hZ2VPbmx5RmFpbHVyZSBdCit3ZWJraXQub3JnL2IvMjMzMzQwIGltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvY3NzL21vdGlvbi9vZmZzZXQtYW5jaG9yLXRyYW5zZm9ybS1ib3gt
ZmlsbC1ib3gtMDAzLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KKworIyBDU1MgbW90aW9uIHBh
dGggdGhhdCBkZXBlbmRzIG9uIHJheSgpLCBjdXJyZW50bHkgbm90IGltcGxlbWVudGVkLgogaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvbW90aW9uL29mZnNldC1wYXRoLXJheS0w
MDEuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQogaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy9jc3MvbW90aW9uL29mZnNldC1wYXRoLXJheS0wMDIuaHRtbCBbIEltYWdlT25seUZhaWx1
cmUgXQogaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvbW90aW9uL29mZnNldC1w
YXRoLXJheS0wMDMuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQpAQCAtNTExMywxMyArNTEwNSw4
IEBAIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL21vdGlvbi9vZmZzZXQtcGF0
aC1yYXktY29udGFpbi0wMDIuaHRtbCBbIEltCiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL2Nzcy9tb3Rpb24vb2Zmc2V0LXBhdGgtcmF5LWNvbnRhaW4tMDAzLmh0bWwgWyBJbWFnZU9u
bHlGYWlsdXJlIF0KIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL21vdGlvbi9v
ZmZzZXQtcGF0aC1yYXktY29udGFpbi0wMDQuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQogaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvbW90aW9uL29mZnNldC1wYXRoLXJheS1j
b250YWluLTAwNS5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi1pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL2Nzcy9tb3Rpb24vb2Zmc2V0LXBhdGgtc3RyaW5nLTAwMS5odG1sIFsgSW1h
Z2VPbmx5RmFpbHVyZSBdCi1pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9tb3Rp
b24vb2Zmc2V0LXBhdGgtc3RyaW5nLTAwMi5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCiBpbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9tb3Rpb24vb2Zmc2V0LXJvdGF0ZS0wMDEu
aHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQogaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy9jc3MvbW90aW9uL29mZnNldC1yb3RhdGUtMDAyLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0K
LWltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL21vdGlvbi9vZmZzZXQtcm90YXRl
LTAwMy5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi1pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL2Nzcy9tb3Rpb24vb2Zmc2V0LXJvdGF0ZS0wMDQuaHRtbCBbIEltYWdlT25seUZhaWx1
cmUgXQotaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvbW90aW9uL29mZnNldC1y
b3RhdGUtMDA1Lmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KIAogIyBJUEMgdGVzdCBmYWlsaW5n
IGluIERlYnVnIG1vZGUgZHVlIHRvIGFzc2VydC4KIFsgRGVidWcgXSBpcGMvc2VuZC1pbnZhbGlk
LW1lc3NhZ2UuaHRtbCBbIFNraXAgXQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>444816</attachid>
            <date>2021-11-19 06:59:56 -0800</date>
            <delta_ts>2021-11-19 14:03:08 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-233144-20211119065955.patch</filename>
            <type>text/plain</type>
            <size>22897</size>
            <attacher name="Kiet Ho">kiet.ho</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg2MDA0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDhjYjcxOWU0ODdhYmVh
ZGZjODE5NTc0MTBkYTAyMTA1Y2Q3ZTU4MS4uY2VjYjI1YWViMWQyZDQ5Njg2OWE0MGViZTgzYzY5
YjNiZDM4MzI5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUxIEBACisyMDIxLTExLTE5ICBLaWV0
IEhvICA8dGhvMjJAYXBwbGUuY29tPgorCisgICAgICAgIEludGVncmF0ZSBtb3Rpb24gcGF0aCB0
cmFuc2Zvcm1zIGluIHRyYW5zZm9ybWF0aW9uIHBpcGVsaW5lCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzMxNDQKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHBhdGNoIHRpZXMgZXZlcnl0aGluZyB0
b2dldGhlciBhbmQgcmVuZGVycyBDU1MgTW90aW9uIFBhdGggb3V0IG9udG8gdGhlIHNjcmVlbi4K
KyAgICAgICAgTW90aW9uIHBhdGggcHJvcGVydGllcyBhcmUgZGVzdWdhcmVkIGludG8gdHdvIHRy
YW5zZm9ybWF0aW9uczogb25lIHRyYW5zbGF0ZSB0byBtb3ZlCisgICAgICAgIHRoZSBlbGVtZW50
IHRvIHRoZSBzcGVjaWZpZWQgbG9jYXRpb24gb24gdGhlIHBhdGgsIGFuZCBvbmUgcm90YXRlIHRv
IHJvdGF0ZSB0aGUgZWxlbWVudAorICAgICAgICB0byB0aGUgY29ycmVjdCBvcmllbnRhdGlvbiBz
cGVjaWZpZWQgYnkgb2Zmc2V0LXJvdGF0ZS4gVGhlIHR3byB0cmFuc2Zvcm1hdGlvbnMgYXJlIGFw
cGxpZWQKKyAgICAgICAgYWZ0ZXIgc2NhbGUoKSBhbmQgYmVmb3JlIHRoZSBpbmRpdmlkdWFsIHRy
YW5zZm9ybSBmdW5jdGlvbnMsIGFzIHNwZWNpZmllZCBpbiB0aGUgQ1NTCisgICAgICAgIFRyYW5z
Zm9ybXMgc3BlYy4KKworICAgICAgICBUZXN0czogaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy9jc3MvbW90aW9uL2FuaW1hdGlvbi9yZWZ0ZXN0cy9vZmZzZXQtcGF0aC13aXRoLXRyYW5z
Zm9ybXMtMDAxLmh0bWwKKyAgICAgICAgICAgICAgIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvY3NzL21vdGlvbi9vZmZzZXQtZGlzdGFuY2UtMDAxLmh0bWwKKyAgICAgICAgICAgICAg
IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL21vdGlvbi9vZmZzZXQtZGlzdGFu
Y2UtMDAyLmh0bWwKKyAgICAgICAgICAgICAgIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvY3NzL21vdGlvbi9vZmZzZXQtZGlzdGFuY2UtMDAzLmh0bWwKKyAgICAgICAgICAgICAgIGlt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL21vdGlvbi9vZmZzZXQtZGlzdGFuY2Ut
MDA0Lmh0bWwKKyAgICAgICAgICAgICAgIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
Y3NzL21vdGlvbi9vZmZzZXQtZGlzdGFuY2UtMDA1Lmh0bWwKKyAgICAgICAgICAgICAgIGltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL21vdGlvbi9vZmZzZXQtZGlzdGFuY2UtMDA2
Lmh0bWwKKyAgICAgICAgICAgICAgIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3Nz
L21vdGlvbi9vZmZzZXQtZGlzdGFuY2UtMDA3Lmh0bWwKKyAgICAgICAgICAgICAgIGltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL21vdGlvbi9vZmZzZXQtZGlzdGFuY2UtMDA4Lmh0
bWwKKyAgICAgICAgICAgICAgIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL21v
dGlvbi9vZmZzZXQtZGlzdGFuY2UtMDA5Lmh0bWwKKyAgICAgICAgICAgICAgIGltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL21vdGlvbi9vZmZzZXQtcGF0aC1zdHJpbmctMDAxLmh0
bWwKKyAgICAgICAgICAgICAgIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL21v
dGlvbi9vZmZzZXQtcGF0aC1zdHJpbmctMDAyLmh0bWwKKyAgICAgICAgICAgICAgIGltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL21vdGlvbi9vZmZzZXQtcm90YXRlLTAwMy5odG1s
CisgICAgICAgICAgICAgICBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9tb3Rp
b24vb2Zmc2V0LXJvdGF0ZS0wMDQuaHRtbAorICAgICAgICAgICAgICAgaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy9jc3MvbW90aW9uL29mZnNldC1yb3RhdGUtMDA1Lmh0bWwKKworICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL1BhdGguY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGF0
aDo6aXNDbG9zZWQgY29uc3QpOiBBZGRlZCBtZXRob2QgdG8gZGV0ZXJtaW5lIGlmIGEgUGF0aCBp
cyBjbG9zZWQgKGkuZSwKKyAgICAgICAgdGhlIGxhc3QgZHJhdyBjb21tYW5kIGlzIENsb3NlU3Vi
cGF0aCkuIFRoaXMgaXMgcmVxdWlyZWQgYmVjYXVzZSBvZmZzZXQtZGlzdGFuY2UgaXMKKyAgICAg
ICAgaGFuZGxlZCBkaWZmZXJlbnRseSBkZXBlbmRpbmcgb24gaWYgdGhlIFBhdGggaXMgY2xvc2Vk
IG9yIG5vdC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9QYXRoLmg6CisgICAgICAgICog
cmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpy
ZWNvbXBvc2l0ZUNoYW5nZVJlcXVpcmVzR2VvbWV0cnlVcGRhdGUpOiBBY2NvdW50IGluIGNoYW5n
ZXMgaW4gbW90aW9uIHBhdGggcHJvcGVydGllcy4KKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVy
T2JqZWN0Lmg6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJPYmplY3Q6Omhhc1RyYW5zZm9ybSBj
b25zdCk6IEFjY291bnQgaW4gbW90aW9uIHBhdGggcHJvcGVydGllcy4KKyAgICAgICAgKiByZW5k
ZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cmFyZU5vbklu
aGVyaXRlZERhdGFDaGFuZ2VSZXF1aXJlc0xheW91dCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJTdHlsZTo6YXBwbHlUcmFuc2Zvcm0gY29uc3QpOiBBZGQgYW4gYWRkaXRpb25hbCBzdGVwIHRv
IGFwcGx5IG1vdGlvbiBwYXRoIHRyYW5zZm9ybXMuCisgICAgICAgIChXZWJDb3JlOjpnZXRQYXRo
RnJvbVBhdGhPcGVyYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6Z2V0VHJhdmVyc2FsU3RhdGVB
dERpc3RhbmNlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjphcHBseU1vdGlvblBh
dGhUcmFuc2Zvcm0gY29uc3QpOiBBZGRlZCBtZXRob2QgdG8gYXBwbHkgbW90aW9uIHBhdGggdHJh
bnNmb3Jtcy4KKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuaDoKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjpoYXNUcmFuc2Zvcm0gY29uc3QpOiBBY2NvdW50IGZv
ciBtb3Rpb24gcGF0aCBwcm9wZXJ0aWVzLgorCiAyMDIxLTExLTE4ICBBbGFuIEJ1anRhcyAgPHph
bGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBbTEZDXVtJRkNdIFNob3VsZCBub3QgYWx3YXlzIGtl
ZXAgdGhlIGVudGlyZSBjb250aW51b3VzIGNvbnRlbnQgd2hlbiB0aGUgbGluZSBpcyBlbXB0eQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGF0aC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QYXRoLmNwcAppbmRleCA0OTc3N2JiODdh
YjVhMzhjMjZjYjUxNzgxNjM1ZjE0NDY5ZDNkYTViLi42YzhlZWU0N2YwYzlmZjM3YTJjOTU5ZGIy
ODQ4YTAzMDc3NGQ4MzQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9QYXRoLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QYXRo
LmNwcApAQCAtMjc1LDYgKzI3NSwyNiBAQCBGbG9hdFBvaW50IFBhdGg6OmN1cnJlbnRQb2ludCgp
IGNvbnN0CiAgICAgcmV0dXJuIGN1cnJlbnRQb2ludFNsb3dDYXNlKCk7CiB9CiAKK2Jvb2wgUGF0
aDo6aXNDbG9zZWQoKSBjb25zdAoreworICAgIGJvb2wgbGFzdEVsZW1lbnRJc0Nsb3NlZCA9IGZh
bHNlOworCisgICAgLy8gVGhlIHBhdGggaXMgY2xvc2VkIGlmIHRoZSB0eXBlIG9mIHRoZSBsYXN0
IFBhdGhFbGVtZW50IGlzIENsb3NlU3VicGF0aC4gVW5mb3J0dW5hdGVseSwKKyAgICAvLyB0aGUg
b25seSB3YXkgdG8gYWNjZXNzIFBhdGhFbGVtZW50cyBpcyBzZXF1ZW50aWFsbHkgdGhyb3VnaCBh
cHBseSgpLCB0aGVyZSdzIG5vIHJhbmRvbQorICAgIC8vIGFjY2VzcyBhcyBpZiB0aGV5J3JlIGlu
IGEgdmVjdG9yLgorICAgIC8vIFRoZSBsYW1iZGEgYmVsb3cgc2V0cyBsYXN0RWxlbWVudElzQ2xv
c2VkIGlmIHRoZSBsYXN0IFBhdGhFbGVtZW50IGlzIENsb3NlU3VicGF0aC4KKyAgICAvLyBCZWNh
dXNlIGxhc3RFbGVtZW50SXNDbG9zZWQgaXMgb3ZlcnJpZGRlbiBpZiB0aGVyZSBhcmUgYW55IHJl
bWFpbmluZyBQYXRoRWxlbWVudHMKKyAgICAvLyB0byBiZSBpdGVyYXRlZCwgaXRzIGZpbmFsIHZh
bHVlIGlzIHRoZSB2YWx1ZSBvZiB0aGUgbGFzdCBpdGVyYXRpb24uCisgICAgLy8gKGkuZSB0aGUg
bGFzdCBQYXRoRWxlbWVudCkuCisgICAgLy8gRklYTUU6IGZpbmQgYSBtb3JlIGVmZmljaWVudCB3
YXkgdG8gaW1wbGVtZW50IHRoaXMsIHRoYXQgZG9lcyBub3QgcmVxdWlyZSBpdGVyYXRpbmcKKyAg
ICAvLyB0aHJvdWdoIGFsbCBQYXRoRWxlbWVudHMuCisgICAgYXBwbHkoWyZsYXN0RWxlbWVudElz
Q2xvc2VkXShjb25zdCBXZWJDb3JlOjpQYXRoRWxlbWVudCYgZWxlbWVudCkgeworICAgICAgICBs
YXN0RWxlbWVudElzQ2xvc2VkID0gKGVsZW1lbnQudHlwZSA9PSBQYXRoRWxlbWVudDo6VHlwZTo6
Q2xvc2VTdWJwYXRoKTsKKyAgICB9KTsKKworICAgIHJldHVybiBsYXN0RWxlbWVudElzQ2xvc2Vk
OworfQorCiBzaXplX3QgUGF0aDo6ZWxlbWVudENvdW50KCkgY29uc3QKIHsKICNpZiBFTkFCTEUo
SU5MSU5FX1BBVEhfREFUQSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL1BhdGguaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BhdGguaApp
bmRleCA3Yjk4NzZhYjFjNzg1OGI1NGI4MGQ5MDhlNmE4MGU1OTYyM2ZiZTJmLi4zNWQ5YWE1Mzg5
NTE4NjdhZjZkNmJmY2MwYWM5ODkxZjkxNzQ5MTY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9QYXRoLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvUGF0aC5oCkBAIC0xNjAsNiArMTYwLDggQEAgcHVibGljOgogICAgIGJvb2wgaGFz
Q3VycmVudFBvaW50KCkgY29uc3Q7CiAgICAgRmxvYXRQb2ludCBjdXJyZW50UG9pbnQoKSBjb25z
dDsKIAorICAgIGJvb2wgaXNDbG9zZWQoKSBjb25zdDsKKwogICAgIFdFQkNPUkVfRVhQT1JUIHZv
aWQgbW92ZVRvKGNvbnN0IEZsb2F0UG9pbnQmKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGFk
ZExpbmVUbyhjb25zdCBGbG9hdFBvaW50Jik7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhZGRR
dWFkQ3VydmVUbyhjb25zdCBGbG9hdFBvaW50JiBjb250cm9sUG9pbnQsIGNvbnN0IEZsb2F0UG9p
bnQmIGVuZFBvaW50KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJMYXllckNvbXBvc2l0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxh
eWVyQ29tcG9zaXRvci5jcHAKaW5kZXggMmU3MGJiZTdmOTZiOTMxOTQ0ODFjZWE5NGNlNTQ0MWYz
MDNiZDBlZi4uYmYwYmZkZTBjNTk2OGYxYmEzYzAxNDI2ZDliM2RkNzczMTEyZGE0YyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5jcHAK
QEAgLTE2NDcsNiArMTY0NywxMSBAQCBzdGF0aWMgYm9vbCByZWNvbXBvc2l0ZUNoYW5nZVJlcXVp
cmVzR2VvbWV0cnlVcGRhdGUoY29uc3QgUmVuZGVyU3R5bGUmIG9sZFN0eWxlLAogICAgICAgICB8
fCBvbGRTdHlsZS5wZXJzcGVjdGl2ZU9yaWdpblgoKSAhPSBuZXdTdHlsZS5wZXJzcGVjdGl2ZU9y
aWdpblgoKQogICAgICAgICB8fCBvbGRTdHlsZS5wZXJzcGVjdGl2ZU9yaWdpblkoKSAhPSBuZXdT
dHlsZS5wZXJzcGVjdGl2ZU9yaWdpblkoKQogICAgICAgICB8fCBvbGRTdHlsZS5iYWNrZmFjZVZp
c2liaWxpdHkoKSAhPSBuZXdTdHlsZS5iYWNrZmFjZVZpc2liaWxpdHkoKQorICAgICAgICB8fCAh
YXJlUG9pbnRpbmdUb0VxdWFsRGF0YShvbGRTdHlsZS5vZmZzZXRQYXRoKCksIG5ld1N0eWxlLm9m
ZnNldFBhdGgoKSkKKyAgICAgICAgfHwgb2xkU3R5bGUub2Zmc2V0QW5jaG9yKCkgIT0gbmV3U3R5
bGUub2Zmc2V0QW5jaG9yKCkKKyAgICAgICAgfHwgb2xkU3R5bGUub2Zmc2V0UG9zaXRpb24oKSAh
PSBuZXdTdHlsZS5vZmZzZXRQb3NpdGlvbigpCisgICAgICAgIHx8IG9sZFN0eWxlLm9mZnNldERp
c3RhbmNlKCkgIT0gbmV3U3R5bGUub2Zmc2V0RGlzdGFuY2UoKQorICAgICAgICB8fCBvbGRTdHls
ZS5vZmZzZXRSb3RhdGUoKSAhPSBuZXdTdHlsZS5vZmZzZXRSb3RhdGUoKQogICAgICAgICB8fCAh
YXJlUG9pbnRpbmdUb0VxdWFsRGF0YShvbGRTdHlsZS5jbGlwUGF0aCgpLCBuZXdTdHlsZS5jbGlw
UGF0aCgpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ck9iamVjdC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5oCmluZGV4
IDhiMDA5MzE4MjM4OWZiN2RmNjlmOGQ1N2RjOGYwMjk0N2Q1N2RlNTguLmQ0OTk4Nzg3MmVmMzQx
MDNhYzBlODI0ZDcxZjM5NGM2ZWJjZTk3ZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJPYmplY3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyT2JqZWN0LmgKQEAgLTQ0NCw3ICs0NDQsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBoYXNQb3Rl
bnRpYWxseVNjcm9sbGFibGVPdmVyZmxvdygpIGNvbnN0OwogCiAgICAgYm9vbCBoYXNUcmFuc2Zv
cm1SZWxhdGVkUHJvcGVydHkoKSBjb25zdCB7IHJldHVybiBtX2JpdGZpZWxkcy5oYXNUcmFuc2Zv
cm1SZWxhdGVkUHJvcGVydHkoKTsgfSAvLyBUcmFuc2Zvcm0sIHBlcnNwZWN0aXZlIG9yIHRyYW5z
Zm9ybS1zdHlsZTogcHJlc2VydmUtM2QuCi0gICAgYm9vbCBoYXNUcmFuc2Zvcm0oKSBjb25zdCB7
IHJldHVybiBoYXNUcmFuc2Zvcm1SZWxhdGVkUHJvcGVydHkoKSAmJiAoc3R5bGUoKS5oYXNUcmFu
c2Zvcm0oKSB8fCBzdHlsZSgpLnRyYW5zbGF0ZSgpIHx8IHN0eWxlKCkuc2NhbGUoKSB8fCBzdHls
ZSgpLnJvdGF0ZSgpKTsgfQorICAgIGJvb2wgaGFzVHJhbnNmb3JtKCkgY29uc3QgeyByZXR1cm4g
aGFzVHJhbnNmb3JtUmVsYXRlZFByb3BlcnR5KCkgJiYgKHN0eWxlKCkuaGFzVHJhbnNmb3JtKCkg
fHwgc3R5bGUoKS50cmFuc2xhdGUoKSB8fCBzdHlsZSgpLnNjYWxlKCkgfHwgc3R5bGUoKS5yb3Rh
dGUoKSB8fCBzdHlsZSgpLm9mZnNldFBhdGgoKSk7IH0KIAogICAgIGlubGluZSBib29sIHByZXNl
cnZlc05ld2xpbmUoKSBjb25zdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N0eWxlL1JlbmRlclN0eWxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHls
ZS9SZW5kZXJTdHlsZS5jcHAKaW5kZXggM2FmOWUxNTBlZTBiMGEzNWFlNTllZmRlNWVkMjc4MDNi
ZWRmNjQ2ZS4uNTljODA5MWIzZmEwMDExNjc5MjI1NjMwNmIwZWZiYmVjZTUyOTE2YyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuY3BwCkBAIC0zNiw2
ICszNiw3IEBACiAjaW5jbHVkZSAiSW5saW5lSXRlcmF0b3JUZXh0Qm94LmgiCiAjaW5jbHVkZSAi
SW5saW5lVGV4dEJveFN0eWxlLmgiCiAjaW5jbHVkZSAiUGFnaW5hdGlvbi5oIgorI2luY2x1ZGUg
IlBhdGhUcmF2ZXJzYWxTdGF0ZS5oIgogI2luY2x1ZGUgIlF1b3Rlc0RhdGEuaCIKICNpbmNsdWRl
ICJSZW5kZXJCbG9jay5oIgogI2luY2x1ZGUgIlJlbmRlck9iamVjdC5oIgpAQCAtNjk4LDYgKzY5
OSwxMyBAQCBzdGF0aWMgYm9vbCByYXJlTm9uSW5oZXJpdGVkRGF0YUNoYW5nZVJlcXVpcmVzTGF5
b3V0KGNvbnN0IFN0eWxlUmFyZU5vbkluaGVyaXRlZAogICAgICAgICB8fCAhYXJlUG9pbnRpbmdU
b0VxdWFsRGF0YShmaXJzdC50cmFuc2xhdGUsIHNlY29uZC50cmFuc2xhdGUpKQogICAgICAgICBj
aGFuZ2VkQ29udGV4dFNlbnNpdGl2ZVByb3BlcnRpZXMuYWRkKFN0eWxlRGlmZmVyZW5jZUNvbnRl
eHRTZW5zaXRpdmVQcm9wZXJ0eTo6VHJhbnNmb3JtKTsKIAorICAgIGlmICghYXJlUG9pbnRpbmdU
b0VxdWFsRGF0YShmaXJzdC5vZmZzZXRQYXRoLCBzZWNvbmQub2Zmc2V0UGF0aCkKKyAgICAgICAg
fHwgZmlyc3Qub2Zmc2V0UG9zaXRpb24gIT0gc2Vjb25kLm9mZnNldFBvc2l0aW9uCisgICAgICAg
IHx8IGZpcnN0Lm9mZnNldERpc3RhbmNlICE9IHNlY29uZC5vZmZzZXREaXN0YW5jZQorICAgICAg
ICB8fCBmaXJzdC5vZmZzZXRBbmNob3IgIT0gc2Vjb25kLm9mZnNldEFuY2hvcgorICAgICAgICB8
fCBmaXJzdC5vZmZzZXRSb3RhdGUgIT0gc2Vjb25kLm9mZnNldFJvdGF0ZSkKKyAgICAgICAgY2hh
bmdlZENvbnRleHRTZW5zaXRpdmVQcm9wZXJ0aWVzLmFkZChTdHlsZURpZmZlcmVuY2VDb250ZXh0
U2Vuc2l0aXZlUHJvcGVydHk6OlRyYW5zZm9ybSk7CisKICAgICBpZiAoZmlyc3QuZ3JpZCAhPSBz
ZWNvbmQuZ3JpZAogICAgICAgICB8fCBmaXJzdC5ncmlkSXRlbSAhPSBzZWNvbmQuZ3JpZEl0ZW0p
CiAgICAgICAgIHJldHVybiB0cnVlOwpAQCAtMTQwNyw3ICsxNDE1LDExIEBAIHZvaWQgUmVuZGVy
U3R5bGU6OmFwcGx5VHJhbnNmb3JtKFRyYW5zZm9ybWF0aW9uTWF0cml4JiB0cmFuc2Zvcm0sIGNv
bnN0IEZsb2F0UmVjCiAgICAgLy8gMS4gU3RhcnQgd2l0aCB0aGUgaWRlbnRpdHkgbWF0cml4Lgog
CiAgICAgYXV0byYgdHJhbnNmb3JtT3BlcmF0aW9ucyA9IG1fcmFyZU5vbkluaGVyaXRlZERhdGEt
PnRyYW5zZm9ybS0+b3BlcmF0aW9uczsKLSAgICBib29sIGFwcGx5VHJhbnNmb3JtT3JpZ2luID0g
b3B0aW9ucy5jb250YWlucyhSZW5kZXJTdHlsZTo6VHJhbnNmb3JtT3BlcmF0aW9uT3B0aW9uOjpU
cmFuc2Zvcm1PcmlnaW4pICYmICgobV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+cm90YXRlICYmICFt
X3JhcmVOb25Jbmhlcml0ZWREYXRhLT5yb3RhdGUtPmlzSWRlbnRpdHkoKSkgfHwgKG1fcmFyZU5v
bkluaGVyaXRlZERhdGEtPnNjYWxlICYmICFtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5zY2FsZS0+
aXNJZGVudGl0eSgpKSB8fCB0cmFuc2Zvcm1PcGVyYXRpb25zLmFmZmVjdGVkQnlUcmFuc2Zvcm1P
cmlnaW4oKSk7CisgICAgYm9vbCBhcHBseVRyYW5zZm9ybU9yaWdpbiA9IG9wdGlvbnMuY29udGFp
bnMoUmVuZGVyU3R5bGU6OlRyYW5zZm9ybU9wZXJhdGlvbk9wdGlvbjo6VHJhbnNmb3JtT3JpZ2lu
KQorICAgICAgICAmJiAoKG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPnJvdGF0ZSAmJiAhbV9yYXJl
Tm9uSW5oZXJpdGVkRGF0YS0+cm90YXRlLT5pc0lkZW50aXR5KCkpCisgICAgICAgICAgICB8fCAo
bV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+c2NhbGUgJiYgIW1fcmFyZU5vbkluaGVyaXRlZERhdGEt
PnNjYWxlLT5pc0lkZW50aXR5KCkpCisgICAgICAgICAgICB8fCB0cmFuc2Zvcm1PcGVyYXRpb25z
LmFmZmVjdGVkQnlUcmFuc2Zvcm1PcmlnaW4oKQorICAgICAgICAgICAgfHwgb2Zmc2V0UGF0aCgp
KTsKIAogICAgIC8vIDIuIFRyYW5zbGF0ZSBieSB0aGUgY29tcHV0ZWQgWCwgWSwgYW5kIFogdmFs
dWVzIG9mIHRyYW5zZm9ybS1vcmlnaW4uCiAgICAgRmxvYXRQb2ludDNEIG9yaWdpblRyYW5zbGF0
ZTsKQEAgLTE0MzUsNyArMTQ0Nyw5IEBAIHZvaWQgUmVuZGVyU3R5bGU6OmFwcGx5VHJhbnNmb3Jt
KFRyYW5zZm9ybWF0aW9uTWF0cml4JiB0cmFuc2Zvcm0sIGNvbnN0IEZsb2F0UmVjCiAgICAgICAg
ICAgICBzY2FsZS0+YXBwbHkodHJhbnNmb3JtLCBib3VuZGluZ0JveC5zaXplKCkpOwogICAgIH0K
IAotICAgIC8vIDYuIFRyYW5zbGF0ZSBhbmQgcm90YXRlIGJ5IHRoZSB0cmFuc2Zvcm0gc3BlY2lm
aWVkIGJ5IG9mZnNldC4gKEZJWE1FOiB3ZSBkb24ndCBzdXBwb3J0IHRoZSBvZmZzZXQgcHJvcGVy
dHkpCisgICAgLy8gNi4gVHJhbnNsYXRlIGFuZCByb3RhdGUgYnkgdGhlIHRyYW5zZm9ybSBzcGVj
aWZpZWQgYnkgb2Zmc2V0LgorICAgIGlmIChvcHRpb25zLmNvbnRhaW5zKFJlbmRlclN0eWxlOjpU
cmFuc2Zvcm1PcGVyYXRpb25PcHRpb246Ok9mZnNldCkpCisgICAgICAgIGFwcGx5TW90aW9uUGF0
aFRyYW5zZm9ybSh0cmFuc2Zvcm0sIGJvdW5kaW5nQm94KTsKIAogICAgIC8vIDcuIE11bHRpcGx5
IGJ5IGVhY2ggb2YgdGhlIHRyYW5zZm9ybSBmdW5jdGlvbnMgaW4gdHJhbnNmb3JtIGZyb20gbGVm
dCB0byByaWdodC4KICAgICBmb3IgKGF1dG8mIG9wZXJhdGlvbiA6IHRyYW5zZm9ybU9wZXJhdGlv
bnMub3BlcmF0aW9ucygpKQpAQCAtMTQ0Niw2ICsxNDYwLDY4IEBAIHZvaWQgUmVuZGVyU3R5bGU6
OmFwcGx5VHJhbnNmb3JtKFRyYW5zZm9ybWF0aW9uTWF0cml4JiB0cmFuc2Zvcm0sIGNvbnN0IEZs
b2F0UmVjCiAgICAgICAgIHRyYW5zZm9ybS50cmFuc2xhdGUzZCgtb3JpZ2luVHJhbnNsYXRlLngo
KSwgLW9yaWdpblRyYW5zbGF0ZS55KCksIC1vcmlnaW5UcmFuc2xhdGUueigpKTsKIH0KIAorc3Rh
dGljIHN0ZDo6b3B0aW9uYWw8UGF0aD4gZ2V0UGF0aEZyb21QYXRoT3BlcmF0aW9uKGNvbnN0IEZs
b2F0UmVjdCYgYm94LCBjb25zdCBQYXRoT3BlcmF0aW9uJiBvcGVyYXRpb24pCit7CisgICAgaWYg
KG9wZXJhdGlvbi50eXBlKCkgPT0gUGF0aE9wZXJhdGlvbjo6U2hhcGUpCisgICAgICAgIHJldHVy
biBkb3duY2FzdDxTaGFwZVBhdGhPcGVyYXRpb24+KG9wZXJhdGlvbikucGF0aEZvclJlZmVyZW5j
ZVJlY3QoYm94KTsKKworICAgIC8vIEZJWE1FOiBzdXBwb3J0IFJlZmVyZW5jZSBhbmQgQm94IHR5
cGUuCisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKK30KKworc3RhdGljIFBhdGhUcmF2ZXJzYWxT
dGF0ZSBnZXRUcmF2ZXJzYWxTdGF0ZUF0RGlzdGFuY2UoY29uc3QgUGF0aCYgcGF0aCwgY29uc3Qg
TGVuZ3RoJiBkaXN0YW5jZSkKK3sKKyAgICBhdXRvIHBhdGhMZW5ndGggPSBwYXRoLmxlbmd0aCgp
OworICAgIGF1dG8gZGlzdGFuY2VWYWx1ZSA9IGZsb2F0VmFsdWVGb3JMZW5ndGgoZGlzdGFuY2Us
IHBhdGhMZW5ndGgpOworCisgICAgZmxvYXQgcmVzb2x2ZWRMZW5ndGggPSAwOworICAgIGlmIChw
YXRoLmlzQ2xvc2VkKCkpIHsKKyAgICAgICAgaWYgKHBhdGhMZW5ndGgpIHsKKyAgICAgICAgICAg
IHJlc29sdmVkTGVuZ3RoID0gZm1vZChkaXN0YW5jZVZhbHVlLCBwYXRoTGVuZ3RoKTsKKyAgICAg
ICAgICAgIGlmIChyZXNvbHZlZExlbmd0aCA8IDApCisgICAgICAgICAgICAgICAgcmVzb2x2ZWRM
ZW5ndGggKz0gcGF0aExlbmd0aDsKKyAgICAgICAgfQorICAgIH0gZWxzZQorICAgICAgICByZXNv
bHZlZExlbmd0aCA9IGNsYW1wVG88ZmxvYXQ+KGRpc3RhbmNlVmFsdWUsIDAsIHBhdGhMZW5ndGgp
OworCisgICAgQVNTRVJUKHJlc29sdmVkTGVuZ3RoID49IDApOworICAgIHJldHVybiBwYXRoLnRy
YXZlcnNhbFN0YXRlQXRMZW5ndGgocmVzb2x2ZWRMZW5ndGgpOworfQorCit2b2lkIFJlbmRlclN0
eWxlOjphcHBseU1vdGlvblBhdGhUcmFuc2Zvcm0oVHJhbnNmb3JtYXRpb25NYXRyaXgmIHRyYW5z
Zm9ybSwgY29uc3QgRmxvYXRSZWN0JiBib3VuZGluZ0JveCkgY29uc3QKK3sKKyAgICBpZiAoIW9m
ZnNldFBhdGgoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgLy8gU2hpZnQgZWxlbWVudCB0byB0
aGUgcG9pbnQgb24gcGF0aCBzcGVjaWZpZWQgYnkgb2Zmc2V0LXBhdGggYW5kIG9mZnNldC1kaXN0
YW5jZS4KKyAgICBhdXRvIHBhdGggPSBnZXRQYXRoRnJvbVBhdGhPcGVyYXRpb24oYm91bmRpbmdC
b3gsICpvZmZzZXRQYXRoKCkpOworICAgIGlmICghcGF0aCkKKyAgICAgICAgcmV0dXJuOworICAg
IGF1dG8gdHJhdmVyc2FsU3RhdGUgPSBnZXRUcmF2ZXJzYWxTdGF0ZUF0RGlzdGFuY2UoKnBhdGgs
IG9mZnNldERpc3RhbmNlKCkpOworICAgIHRyYW5zZm9ybS50cmFuc2xhdGUodHJhdmVyc2FsU3Rh
dGUuY3VycmVudCgpLngoKSwgdHJhdmVyc2FsU3RhdGUuY3VycmVudCgpLnkoKSk7CisKKyAgICAv
LyBTaGlmdCBlbGVtZW50IHRvIHRoZSBhbmNob3Igc3BlY2lmaWVkIGJ5IG9mZnNldC1hbmNob3Iu
CisgICAgYXV0byB0cmFuc2Zvcm1PcmlnaW4gPSBib3VuZGluZ0JveC5sb2NhdGlvbigpICsgZmxv
YXRQb2ludEZvckxlbmd0aFBvaW50KHRyYW5zZm9ybU9yaWdpblhZKCksIGJvdW5kaW5nQm94LnNp
emUoKSk7CisgICAgLy8gRGVmYXVsdCB2YWx1ZSBvZiBvZmZzZXQtYW5jaG9yIGlzIHRyYW5zZm9y
bS1vcmlnaW4KKyAgICBhdXRvIGFuY2hvciA9IHRyYW5zZm9ybU9yaWdpbjsKKyAgICAvLyBIYW5k
bGUgdGhlIGNhc2UgaWYgb2Zmc2V0LWFuY2hvciBpcyBub3QgYXV0bworICAgIGlmICghb2Zmc2V0
QW5jaG9yKCkueCgpLmlzQXV0bygpKQorICAgICAgICBhbmNob3IgPSBmbG9hdFBvaW50Rm9yTGVu
Z3RoUG9pbnQob2Zmc2V0QW5jaG9yKCksIGJvdW5kaW5nQm94LnNpemUoKSkgKyBib3VuZGluZ0Jv
eC5sb2NhdGlvbigpOworICAgIHRyYW5zZm9ybS50cmFuc2xhdGUoLWFuY2hvci54KCksIC1hbmNo
b3IueSgpKTsKKworICAgIGF1dG8gc2hpZnRUb09yaWdpbiA9IGFuY2hvciAtIHRyYW5zZm9ybU9y
aWdpbjsKKyAgICB0cmFuc2Zvcm0udHJhbnNsYXRlKHNoaWZ0VG9PcmlnaW4ud2lkdGgoKSwgc2hp
ZnRUb09yaWdpbi5oZWlnaHQoKSk7CisKKyAgICAvLyBBcHBseSByb3RhdGlvbi4KKyAgICBhdXRv
IHJvdGF0aW9uID0gb2Zmc2V0Um90YXRlKCk7CisgICAgaWYgKHJvdGF0aW9uLmhhc0F1dG8oKSkK
KyAgICAgICAgdHJhbnNmb3JtLnJvdGF0ZSh0cmF2ZXJzYWxTdGF0ZS5ub3JtYWxBbmdsZSgpICsg
cm90YXRpb24uYW5nbGUoKSk7CisgICAgZWxzZQorICAgICAgICB0cmFuc2Zvcm0ucm90YXRlKHJv
dGF0aW9uLmFuZ2xlKCkpOworCisgICAgdHJhbnNmb3JtLnRyYW5zbGF0ZSgtc2hpZnRUb09yaWdp
bi53aWR0aCgpLCAtc2hpZnRUb09yaWdpbi5oZWlnaHQoKSk7Cit9CisKIHZvaWQgUmVuZGVyU3R5
bGU6OnNldFBhZ2VTY2FsZVRyYW5zZm9ybShmbG9hdCBzY2FsZSkKIHsKICAgICBpZiAoc2NhbGUg
PT0gMSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJT
dHlsZS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmgKaW5k
ZXggYTBlMmMyYzJlYjc2NzAyMzBhZDVmYWFiYWRiY2QzMmE1YmY4ZTY3My4uNGQxZTc4Yjk0OTMz
MzQxNzVmODJiYzA2OWE5MmQ2Yjc0YWQ2Y2E0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N0eWxlL1JlbmRlclN0eWxlLmgKQEAgLTY0NSw3ICs2NDUsNyBAQCBwdWJsaWM6CiAgICAg
Q29sdW1uU3BhbiBjb2x1bW5TcGFuKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8Q29sdW1u
U3Bhbj4obV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+bXVsdGlDb2wtPmNvbHVtblNwYW4pOyB9CiAK
ICAgICBjb25zdCBUcmFuc2Zvcm1PcGVyYXRpb25zJiB0cmFuc2Zvcm0oKSBjb25zdCB7IHJldHVy
biBtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT50cmFuc2Zvcm0tPm9wZXJhdGlvbnM7IH0KLSAgICBi
b29sIGhhc1RyYW5zZm9ybSgpIGNvbnN0IHsgcmV0dXJuICFtX3JhcmVOb25Jbmhlcml0ZWREYXRh
LT50cmFuc2Zvcm0tPm9wZXJhdGlvbnMub3BlcmF0aW9ucygpLmlzRW1wdHkoKTsgfQorICAgIGJv
b2wgaGFzVHJhbnNmb3JtKCkgY29uc3QgeyByZXR1cm4gIW1fcmFyZU5vbkluaGVyaXRlZERhdGEt
PnRyYW5zZm9ybS0+b3BlcmF0aW9ucy5vcGVyYXRpb25zKCkuaXNFbXB0eSgpIHx8IG9mZnNldFBh
dGgoKTsgfQogICAgIGNvbnN0IExlbmd0aCYgdHJhbnNmb3JtT3JpZ2luWCgpIGNvbnN0IHsgcmV0
dXJuIG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPnRyYW5zZm9ybS0+eDsgfQogICAgIGNvbnN0IExl
bmd0aCYgdHJhbnNmb3JtT3JpZ2luWSgpIGNvbnN0IHsgcmV0dXJuIG1fcmFyZU5vbkluaGVyaXRl
ZERhdGEtPnRyYW5zZm9ybS0+eTsgfQogICAgIGZsb2F0IHRyYW5zZm9ybU9yaWdpblooKSBjb25z
dCB7IHJldHVybiBtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT50cmFuc2Zvcm0tPno7IH0KQEAgLTY4
NCwxMiArNjg0LDE0IEBAIHB1YmxpYzoKICAgICAgICAgVHJhbnNmb3JtT3JpZ2luID0gMSA8PCAw
LAogICAgICAgICBUcmFuc2xhdGUgICAgICAgPSAxIDw8IDEsCiAgICAgICAgIFJvdGF0ZSAgICAg
ICAgICA9IDEgPDwgMiwKLSAgICAgICAgU2NhbGUgICAgICAgICAgID0gMSA8PCAzCisgICAgICAg
IFNjYWxlICAgICAgICAgICA9IDEgPDwgMywKKyAgICAgICAgT2Zmc2V0ICAgICAgICAgID0gMSA8
PCA0CiAgICAgfTsKIAotICAgIHN0YXRpYyBjb25zdGV4cHIgT3B0aW9uU2V0PFRyYW5zZm9ybU9w
ZXJhdGlvbk9wdGlvbj4gYWxsVHJhbnNmb3JtT3BlcmF0aW9ucyA9IHsgVHJhbnNmb3JtT3BlcmF0
aW9uT3B0aW9uOjpUcmFuc2Zvcm1PcmlnaW4sIFRyYW5zZm9ybU9wZXJhdGlvbk9wdGlvbjo6VHJh
bnNsYXRlLCBUcmFuc2Zvcm1PcGVyYXRpb25PcHRpb246OlJvdGF0ZSwgVHJhbnNmb3JtT3BlcmF0
aW9uT3B0aW9uOjpTY2FsZSB9OwotICAgIHN0YXRpYyBjb25zdGV4cHIgT3B0aW9uU2V0PFRyYW5z
Zm9ybU9wZXJhdGlvbk9wdGlvbj4gaW5kaXZpZHVhbFRyYW5zZm9ybU9wZXJhdGlvbnMgPSB7IFRy
YW5zZm9ybU9wZXJhdGlvbk9wdGlvbjo6VHJhbnNsYXRlLCBUcmFuc2Zvcm1PcGVyYXRpb25PcHRp
b246OlJvdGF0ZSwgVHJhbnNmb3JtT3BlcmF0aW9uT3B0aW9uOjpTY2FsZSB9OworICAgIHN0YXRp
YyBjb25zdGV4cHIgT3B0aW9uU2V0PFRyYW5zZm9ybU9wZXJhdGlvbk9wdGlvbj4gYWxsVHJhbnNm
b3JtT3BlcmF0aW9ucyA9IHsgVHJhbnNmb3JtT3BlcmF0aW9uT3B0aW9uOjpUcmFuc2Zvcm1Pcmln
aW4sIFRyYW5zZm9ybU9wZXJhdGlvbk9wdGlvbjo6VHJhbnNsYXRlLCBUcmFuc2Zvcm1PcGVyYXRp
b25PcHRpb246OlJvdGF0ZSwgVHJhbnNmb3JtT3BlcmF0aW9uT3B0aW9uOjpTY2FsZSAsIFRyYW5z
Zm9ybU9wZXJhdGlvbk9wdGlvbjo6T2Zmc2V0IH07CisgICAgc3RhdGljIGNvbnN0ZXhwciBPcHRp
b25TZXQ8VHJhbnNmb3JtT3BlcmF0aW9uT3B0aW9uPiBpbmRpdmlkdWFsVHJhbnNmb3JtT3BlcmF0
aW9ucyA9IHsgVHJhbnNmb3JtT3BlcmF0aW9uT3B0aW9uOjpUcmFuc2xhdGUsIFRyYW5zZm9ybU9w
ZXJhdGlvbk9wdGlvbjo6Um90YXRlLCBUcmFuc2Zvcm1PcGVyYXRpb25PcHRpb246OlNjYWxlLCBU
cmFuc2Zvcm1PcGVyYXRpb25PcHRpb246Ok9mZnNldCB9OwogICAgIHZvaWQgYXBwbHlUcmFuc2Zv
cm0oVHJhbnNmb3JtYXRpb25NYXRyaXgmLCBjb25zdCBGbG9hdFJlY3QmIGJvdW5kaW5nQm94LCBP
cHRpb25TZXQ8VHJhbnNmb3JtT3BlcmF0aW9uT3B0aW9uPiA9IGFsbFRyYW5zZm9ybU9wZXJhdGlv
bnMpIGNvbnN0OworICAgIHZvaWQgYXBwbHlNb3Rpb25QYXRoVHJhbnNmb3JtKFRyYW5zZm9ybWF0
aW9uTWF0cml4JiwgY29uc3QgRmxvYXRSZWN0JiBib3VuZGluZ0JveCkgY29uc3Q7CiAgICAgdm9p
ZCBzZXRQYWdlU2NhbGVUcmFuc2Zvcm0oZmxvYXQpOwogCiAgICAgYm9vbCBoYXNNYXNrKCkgY29u
c3QgeyByZXR1cm4gbV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+bWFzay0+aGFzSW1hZ2UoKSB8fCBt
X3JhcmVOb25Jbmhlcml0ZWREYXRhLT5tYXNrQm94SW1hZ2UuaGFzSW1hZ2UoKTsgfQpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4
IDVmMjFkOTBlZWFkYjViMjY2Y2YxOWMxOTliMGY4ZmZkMTFlNzI5MmQuLjRjNzAyYzU2YWI0ZTJh
NTc0NzExNDlhOTk2NjY0ZmI0YTdlNjUyYmIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAyMS0x
MS0xOSAgS2lldCBIbyAgPHRobzIyQGFwcGxlLmNvbT4KKworICAgICAgICBJbnRlZ3JhdGUgbW90
aW9uIHBhdGggdHJhbnNmb3JtcyBpbiB0cmFuc2Zvcm1hdGlvbiBwaXBlbGluZQorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMzMTQ0CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVtb3ZlZCBJbWFnZU9ubHlG
YWlsdXJlIGV4cGVjdGF0aW9ucyBmb3IgdGVzdHMgdGhhdCBzaG91bGQgbm93IHBhc3MuCisKKyAg
ICAgICAgKiBUZXN0RXhwZWN0YXRpb25zOgorCiAyMDIxLTExLTE4ICBNYXJ0aW4gUm9iaW5zb24g
IDxtcm9iaW5zb25Ad2Via2l0Lm9yZz4KIAogICAgICAgICBVcGRhdGUgY3NzLXRyYW5zZm9ybXMg
V1BUIHRlc3RzCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9UZXN0RXhwZWN0YXRpb25zIGIvTGF5
b3V0VGVzdHMvVGVzdEV4cGVjdGF0aW9ucwppbmRleCA5MDI0ZjMxNmM3ZmM2NjRmYzhjYjA2ZDA3
ZjdiMDk2NzZiMDk1YWJkLi41ZWU5YWQzYTQzZWYyOWQ2MjU2YTMxMDJjN2EyOTY4YTc2ZGFhYjBi
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRl
c3RzL1Rlc3RFeHBlY3RhdGlvbnMKQEAgLTUwODUsNDEgKzUwODUsMjggQEAgaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy9jb250ZW50LXNlY3VyaXR5LXBvbGljeS9zY3JpcHQtc3JjLyBb
IER1bXBKU0NvbnMKICMgaW1wb3J0LXczYy10ZXN0cyBjb3BpZXMgLW5vdHJlZi5odG1sIHRvIC1l
eHBlY3RlZC5odG1sLCBzbyBleHBlY3RlZCBpbWFnZSBmYWlsdXJlIGhlcmUuCiBpbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvc2VtYW50aWNzL2Zvcm1zL3RoZS10ZXh0YXJlYS1l
bGVtZW50L3BsYWNlaG9sZGVyLXdoaXRlLXNwYWNlLnRlbnRhdGl2ZS5odG1sIFsgSW1hZ2VPbmx5
RmFpbHVyZSBdCiAKLSMgQ1NTIG1vdGlvbiBwYXRoIHRlc3RzLCBjdXJyZW50bHkgZmFpbGluZy4K
LWltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL21vdGlvbi9hbmltYXRpb24vcmVm
dGVzdHMvb2Zmc2V0LXBhdGgtd2l0aC10cmFuc2Zvcm1zLTAwMS5odG1sIFsgSW1hZ2VPbmx5RmFp
bHVyZSBdCi1pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9tb3Rpb24vb2Zmc2V0
LWFuY2hvci10cmFuc2Zvcm0tYm94LWZpbGwtYm94LTAwMS5odG1sIFsgSW1hZ2VPbmx5RmFpbHVy
ZSBdCi1pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9tb3Rpb24vb2Zmc2V0LWFu
Y2hvci10cmFuc2Zvcm0tYm94LWZpbGwtYm94LTAwMi5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBd
Ci1pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9tb3Rpb24vb2Zmc2V0LWFuY2hv
ci10cmFuc2Zvcm0tYm94LWZpbGwtYm94LTAwMy5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi1p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9tb3Rpb24vb2Zmc2V0LWRpc3RhbmNl
LTAwMS5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi1pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL2Nzcy9tb3Rpb24vb2Zmc2V0LWRpc3RhbmNlLTAwMi5odG1sIFsgSW1hZ2VPbmx5RmFp
bHVyZSBdCi1pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9tb3Rpb24vb2Zmc2V0
LWRpc3RhbmNlLTAwMy5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi1pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL2Nzcy9tb3Rpb24vb2Zmc2V0LWRpc3RhbmNlLTAwNC5odG1sIFsgSW1h
Z2VPbmx5RmFpbHVyZSBdCi1pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9tb3Rp
b24vb2Zmc2V0LWRpc3RhbmNlLTAwNS5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi1pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9tb3Rpb24vb2Zmc2V0LWRpc3RhbmNlLTAwNi5o
dG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi1pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L2Nzcy9tb3Rpb24vb2Zmc2V0LWRpc3RhbmNlLTAwNy5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBd
Ci1pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9tb3Rpb24vb2Zmc2V0LWRpc3Rh
bmNlLTAwOC5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi1pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL2Nzcy9tb3Rpb24vb2Zmc2V0LWRpc3RhbmNlLTAwOS5odG1sIFsgSW1hZ2VPbmx5
RmFpbHVyZSBdCi1pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9tb3Rpb24vb2Zm
c2V0LXBhdGgtcmF5LTAwMS5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi1pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9tb3Rpb24vb2Zmc2V0LXBhdGgtcmF5LTAwMi5odG1sIFsg
SW1hZ2VPbmx5RmFpbHVyZSBdCi1pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9t
b3Rpb24vb2Zmc2V0LXBhdGgtcmF5LTAwMy5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi1pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9tb3Rpb24vb2Zmc2V0LXBhdGgtcmF5LTAw
NC5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi1pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL2Nzcy9tb3Rpb24vb2Zmc2V0LXBhdGgtcmF5LTAwNS5odG1sIFsgSW1hZ2VPbmx5RmFpbHVy
ZSBdCi1pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9tb3Rpb24vb2Zmc2V0LXBh
dGgtcmF5LTAwNi5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi1pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL2Nzcy9tb3Rpb24vb2Zmc2V0LXBhdGgtcmF5LTAwNy5odG1sIFsgSW1hZ2VP
bmx5RmFpbHVyZSBdCi1pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9tb3Rpb24v
b2Zmc2V0LXBhdGgtcmF5LTAwOC5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi1pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9tb3Rpb24vb2Zmc2V0LXBhdGgtcmF5LTAwOS5odG1s
IFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi1pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nz
cy9tb3Rpb24vb2Zmc2V0LXBhdGgtcmF5LWNvbnRhaW4tMDAxLmh0bWwgWyBJbWFnZU9ubHlGYWls
dXJlIF0KLWltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL21vdGlvbi9vZmZzZXQt
cGF0aC1yYXktY29udGFpbi0wMDIuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQotaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvbW90aW9uL29mZnNldC1wYXRoLXJheS1jb250YWlu
LTAwMy5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi1pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL2Nzcy9tb3Rpb24vb2Zmc2V0LXBhdGgtcmF5LWNvbnRhaW4tMDA0Lmh0bWwgWyBJbWFn
ZU9ubHlGYWlsdXJlIF0KLWltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL21vdGlv
bi9vZmZzZXQtcGF0aC1yYXktY29udGFpbi0wMDUuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQot
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvbW90aW9uL29mZnNldC1wYXRoLXN0
cmluZy0wMDEuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQotaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9jc3MvbW90aW9uL29mZnNldC1wYXRoLXN0cmluZy0wMDIuaHRtbCBbIEltYWdl
T25seUZhaWx1cmUgXQotaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvbW90aW9u
L29mZnNldC1yb3RhdGUtMDAxLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KLWltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL21vdGlvbi9vZmZzZXQtcm90YXRlLTAwMi5odG1sIFsg
SW1hZ2VPbmx5RmFpbHVyZSBdCi1pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9t
b3Rpb24vb2Zmc2V0LXJvdGF0ZS0wMDMuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQotaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvbW90aW9uL29mZnNldC1yb3RhdGUtMDA0Lmh0
bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KLWltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
Y3NzL21vdGlvbi9vZmZzZXQtcm90YXRlLTAwNS5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCisj
IENTUyBtb3Rpb24gcGF0aCB0ZXN0cyBmYWlsaW5nIGZvciB1bmtub3duIHJlYXNvbnMsIG5lZWRz
IGludmVzdGlnYXRpb24uCit3ZWJraXQub3JnL2IvMjMzMzQwIGltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvY3NzL21vdGlvbi9vZmZzZXQtYW5jaG9yLXRyYW5zZm9ybS1ib3gtZmlsbC1i
b3gtMDAxLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KK3dlYmtpdC5vcmcvYi8yMzMzNDAgaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvbW90aW9uL29mZnNldC1hbmNob3ItdHJh
bnNmb3JtLWJveC1maWxsLWJveC0wMDIuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQord2Via2l0
Lm9yZy9iLzIzMzM0MCBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9tb3Rpb24v
b2Zmc2V0LWFuY2hvci10cmFuc2Zvcm0tYm94LWZpbGwtYm94LTAwMy5odG1sIFsgSW1hZ2VPbmx5
RmFpbHVyZSBdCisKKyMgQ1NTIG1vdGlvbiBwYXRoIHRoYXQgZGVwZW5kcyBvbiByYXkoKSwgY3Vy
cmVudGx5IG5vdCBpbXBsZW1lbnRlZC4KK3dlYmtpdC5vcmcvYi8yMzMzNDQgaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvbW90aW9uL29mZnNldC1wYXRoLXJheS0wMDEuaHRtbCBb
IEltYWdlT25seUZhaWx1cmUgXQord2Via2l0Lm9yZy9iLzIzMzM0NCBpbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL2Nzcy9tb3Rpb24vb2Zmc2V0LXBhdGgtcmF5LTAwMi5odG1sIFsgSW1h
Z2VPbmx5RmFpbHVyZSBdCit3ZWJraXQub3JnL2IvMjMzMzQ0IGltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvY3NzL21vdGlvbi9vZmZzZXQtcGF0aC1yYXktMDAzLmh0bWwgWyBJbWFnZU9u
bHlGYWlsdXJlIF0KK3dlYmtpdC5vcmcvYi8yMzMzNDQgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9jc3MvbW90aW9uL29mZnNldC1wYXRoLXJheS0wMDQuaHRtbCBbIEltYWdlT25seUZh
aWx1cmUgXQord2Via2l0Lm9yZy9iLzIzMzM0NCBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL2Nzcy9tb3Rpb24vb2Zmc2V0LXBhdGgtcmF5LTAwNS5odG1sIFsgSW1hZ2VPbmx5RmFpbHVy
ZSBdCit3ZWJraXQub3JnL2IvMjMzMzQ0IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
Y3NzL21vdGlvbi9vZmZzZXQtcGF0aC1yYXktMDA2Lmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0K
K3dlYmtpdC5vcmcvYi8yMzMzNDQgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3Mv
bW90aW9uL29mZnNldC1wYXRoLXJheS0wMDcuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQord2Vi
a2l0Lm9yZy9iLzIzMzM0NCBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9tb3Rp
b24vb2Zmc2V0LXBhdGgtcmF5LTAwOC5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCit3ZWJraXQu
b3JnL2IvMjMzMzQ0IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL21vdGlvbi9v
ZmZzZXQtcGF0aC1yYXktMDA5Lmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KK3dlYmtpdC5vcmcv
Yi8yMzMzNDQgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvbW90aW9uL29mZnNl
dC1wYXRoLXJheS1jb250YWluLTAwMS5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCit3ZWJraXQu
b3JnL2IvMjMzMzQ0IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL21vdGlvbi9v
ZmZzZXQtcGF0aC1yYXktY29udGFpbi0wMDIuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQord2Vi
a2l0Lm9yZy9iLzIzMzM0NCBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9tb3Rp
b24vb2Zmc2V0LXBhdGgtcmF5LWNvbnRhaW4tMDAzLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0K
K3dlYmtpdC5vcmcvYi8yMzMzNDQgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3Mv
bW90aW9uL29mZnNldC1wYXRoLXJheS1jb250YWluLTAwNC5odG1sIFsgSW1hZ2VPbmx5RmFpbHVy
ZSBdCit3ZWJraXQub3JnL2IvMjMzMzQ0IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
Y3NzL21vdGlvbi9vZmZzZXQtcGF0aC1yYXktY29udGFpbi0wMDUuaHRtbCBbIEltYWdlT25seUZh
aWx1cmUgXQord2Via2l0Lm9yZy9iLzIzMzM0NCBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL2Nzcy9tb3Rpb24vb2Zmc2V0LXJvdGF0ZS0wMDEuaHRtbCBbIEltYWdlT25seUZhaWx1cmUg
XQord2Via2l0Lm9yZy9iLzIzMzM0NCBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nz
cy9tb3Rpb24vb2Zmc2V0LXJvdGF0ZS0wMDIuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQogCiAj
IElQQyB0ZXN0IGZhaWxpbmcgaW4gRGVidWcgbW9kZSBkdWUgdG8gYXNzZXJ0LgogWyBEZWJ1ZyBd
IGlwYy9zZW5kLWludmFsaWQtbWVzc2FnZS5odG1sIFsgU2tpcCBdCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>444851</attachid>
            <date>2021-11-19 14:03:10 -0800</date>
            <delta_ts>2021-11-19 16:49:30 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-233144-20211119140309.patch</filename>
            <type>text/plain</type>
            <size>22840</size>
            <attacher name="Kiet Ho">kiet.ho</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg2MDA0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDhjYjcxOWU0ODdhYmVh
ZGZjODE5NTc0MTBkYTAyMTA1Y2Q3ZTU4MS4uY2VjYjI1YWViMWQyZDQ5Njg2OWE0MGViZTgzYzY5
YjNiZDM4MzI5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUxIEBACisyMDIxLTExLTE5ICBLaWV0
IEhvICA8dGhvMjJAYXBwbGUuY29tPgorCisgICAgICAgIEludGVncmF0ZSBtb3Rpb24gcGF0aCB0
cmFuc2Zvcm1zIGluIHRyYW5zZm9ybWF0aW9uIHBpcGVsaW5lCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzMxNDQKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHBhdGNoIHRpZXMgZXZlcnl0aGluZyB0
b2dldGhlciBhbmQgcmVuZGVycyBDU1MgTW90aW9uIFBhdGggb3V0IG9udG8gdGhlIHNjcmVlbi4K
KyAgICAgICAgTW90aW9uIHBhdGggcHJvcGVydGllcyBhcmUgZGVzdWdhcmVkIGludG8gdHdvIHRy
YW5zZm9ybWF0aW9uczogb25lIHRyYW5zbGF0ZSB0byBtb3ZlCisgICAgICAgIHRoZSBlbGVtZW50
IHRvIHRoZSBzcGVjaWZpZWQgbG9jYXRpb24gb24gdGhlIHBhdGgsIGFuZCBvbmUgcm90YXRlIHRv
IHJvdGF0ZSB0aGUgZWxlbWVudAorICAgICAgICB0byB0aGUgY29ycmVjdCBvcmllbnRhdGlvbiBz
cGVjaWZpZWQgYnkgb2Zmc2V0LXJvdGF0ZS4gVGhlIHR3byB0cmFuc2Zvcm1hdGlvbnMgYXJlIGFw
cGxpZWQKKyAgICAgICAgYWZ0ZXIgc2NhbGUoKSBhbmQgYmVmb3JlIHRoZSBpbmRpdmlkdWFsIHRy
YW5zZm9ybSBmdW5jdGlvbnMsIGFzIHNwZWNpZmllZCBpbiB0aGUgQ1NTCisgICAgICAgIFRyYW5z
Zm9ybXMgc3BlYy4KKworICAgICAgICBUZXN0czogaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy9jc3MvbW90aW9uL2FuaW1hdGlvbi9yZWZ0ZXN0cy9vZmZzZXQtcGF0aC13aXRoLXRyYW5z
Zm9ybXMtMDAxLmh0bWwKKyAgICAgICAgICAgICAgIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvY3NzL21vdGlvbi9vZmZzZXQtZGlzdGFuY2UtMDAxLmh0bWwKKyAgICAgICAgICAgICAg
IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL21vdGlvbi9vZmZzZXQtZGlzdGFu
Y2UtMDAyLmh0bWwKKyAgICAgICAgICAgICAgIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvY3NzL21vdGlvbi9vZmZzZXQtZGlzdGFuY2UtMDAzLmh0bWwKKyAgICAgICAgICAgICAgIGlt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL21vdGlvbi9vZmZzZXQtZGlzdGFuY2Ut
MDA0Lmh0bWwKKyAgICAgICAgICAgICAgIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
Y3NzL21vdGlvbi9vZmZzZXQtZGlzdGFuY2UtMDA1Lmh0bWwKKyAgICAgICAgICAgICAgIGltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL21vdGlvbi9vZmZzZXQtZGlzdGFuY2UtMDA2
Lmh0bWwKKyAgICAgICAgICAgICAgIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3Nz
L21vdGlvbi9vZmZzZXQtZGlzdGFuY2UtMDA3Lmh0bWwKKyAgICAgICAgICAgICAgIGltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL21vdGlvbi9vZmZzZXQtZGlzdGFuY2UtMDA4Lmh0
bWwKKyAgICAgICAgICAgICAgIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL21v
dGlvbi9vZmZzZXQtZGlzdGFuY2UtMDA5Lmh0bWwKKyAgICAgICAgICAgICAgIGltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL21vdGlvbi9vZmZzZXQtcGF0aC1zdHJpbmctMDAxLmh0
bWwKKyAgICAgICAgICAgICAgIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL21v
dGlvbi9vZmZzZXQtcGF0aC1zdHJpbmctMDAyLmh0bWwKKyAgICAgICAgICAgICAgIGltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL21vdGlvbi9vZmZzZXQtcm90YXRlLTAwMy5odG1s
CisgICAgICAgICAgICAgICBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9tb3Rp
b24vb2Zmc2V0LXJvdGF0ZS0wMDQuaHRtbAorICAgICAgICAgICAgICAgaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy9jc3MvbW90aW9uL29mZnNldC1yb3RhdGUtMDA1Lmh0bWwKKworICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL1BhdGguY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGF0
aDo6aXNDbG9zZWQgY29uc3QpOiBBZGRlZCBtZXRob2QgdG8gZGV0ZXJtaW5lIGlmIGEgUGF0aCBp
cyBjbG9zZWQgKGkuZSwKKyAgICAgICAgdGhlIGxhc3QgZHJhdyBjb21tYW5kIGlzIENsb3NlU3Vi
cGF0aCkuIFRoaXMgaXMgcmVxdWlyZWQgYmVjYXVzZSBvZmZzZXQtZGlzdGFuY2UgaXMKKyAgICAg
ICAgaGFuZGxlZCBkaWZmZXJlbnRseSBkZXBlbmRpbmcgb24gaWYgdGhlIFBhdGggaXMgY2xvc2Vk
IG9yIG5vdC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9QYXRoLmg6CisgICAgICAgICog
cmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpy
ZWNvbXBvc2l0ZUNoYW5nZVJlcXVpcmVzR2VvbWV0cnlVcGRhdGUpOiBBY2NvdW50IGluIGNoYW5n
ZXMgaW4gbW90aW9uIHBhdGggcHJvcGVydGllcy4KKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVy
T2JqZWN0Lmg6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJPYmplY3Q6Omhhc1RyYW5zZm9ybSBj
b25zdCk6IEFjY291bnQgaW4gbW90aW9uIHBhdGggcHJvcGVydGllcy4KKyAgICAgICAgKiByZW5k
ZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cmFyZU5vbklu
aGVyaXRlZERhdGFDaGFuZ2VSZXF1aXJlc0xheW91dCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJTdHlsZTo6YXBwbHlUcmFuc2Zvcm0gY29uc3QpOiBBZGQgYW4gYWRkaXRpb25hbCBzdGVwIHRv
IGFwcGx5IG1vdGlvbiBwYXRoIHRyYW5zZm9ybXMuCisgICAgICAgIChXZWJDb3JlOjpnZXRQYXRo
RnJvbVBhdGhPcGVyYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6Z2V0VHJhdmVyc2FsU3RhdGVB
dERpc3RhbmNlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjphcHBseU1vdGlvblBh
dGhUcmFuc2Zvcm0gY29uc3QpOiBBZGRlZCBtZXRob2QgdG8gYXBwbHkgbW90aW9uIHBhdGggdHJh
bnNmb3Jtcy4KKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuaDoKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjpoYXNUcmFuc2Zvcm0gY29uc3QpOiBBY2NvdW50IGZv
ciBtb3Rpb24gcGF0aCBwcm9wZXJ0aWVzLgorCiAyMDIxLTExLTE4ICBBbGFuIEJ1anRhcyAgPHph
bGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBbTEZDXVtJRkNdIFNob3VsZCBub3QgYWx3YXlzIGtl
ZXAgdGhlIGVudGlyZSBjb250aW51b3VzIGNvbnRlbnQgd2hlbiB0aGUgbGluZSBpcyBlbXB0eQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGF0aC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QYXRoLmNwcAppbmRleCA0OTc3N2JiODdh
YjVhMzhjMjZjYjUxNzgxNjM1ZjE0NDY5ZDNkYTViLi42YzhlZWU0N2YwYzlmZjM3YTJjOTU5ZGIy
ODQ4YTAzMDc3NGQ4MzQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9QYXRoLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QYXRo
LmNwcApAQCAtMjc1LDYgKzI3NSwyNiBAQCBGbG9hdFBvaW50IFBhdGg6OmN1cnJlbnRQb2ludCgp
IGNvbnN0CiAgICAgcmV0dXJuIGN1cnJlbnRQb2ludFNsb3dDYXNlKCk7CiB9CiAKK2Jvb2wgUGF0
aDo6aXNDbG9zZWQoKSBjb25zdAoreworICAgIGJvb2wgbGFzdEVsZW1lbnRJc0Nsb3NlZCA9IGZh
bHNlOworCisgICAgLy8gVGhlIHBhdGggaXMgY2xvc2VkIGlmIHRoZSB0eXBlIG9mIHRoZSBsYXN0
IFBhdGhFbGVtZW50IGlzIENsb3NlU3VicGF0aC4gVW5mb3J0dW5hdGVseSwKKyAgICAvLyB0aGUg
b25seSB3YXkgdG8gYWNjZXNzIFBhdGhFbGVtZW50cyBpcyBzZXF1ZW50aWFsbHkgdGhyb3VnaCBh
cHBseSgpLCB0aGVyZSdzIG5vIHJhbmRvbQorICAgIC8vIGFjY2VzcyBhcyBpZiB0aGV5J3JlIGlu
IGEgdmVjdG9yLgorICAgIC8vIFRoZSBsYW1iZGEgYmVsb3cgc2V0cyBsYXN0RWxlbWVudElzQ2xv
c2VkIGlmIHRoZSBsYXN0IFBhdGhFbGVtZW50IGlzIENsb3NlU3VicGF0aC4KKyAgICAvLyBCZWNh
dXNlIGxhc3RFbGVtZW50SXNDbG9zZWQgaXMgb3ZlcnJpZGRlbiBpZiB0aGVyZSBhcmUgYW55IHJl
bWFpbmluZyBQYXRoRWxlbWVudHMKKyAgICAvLyB0byBiZSBpdGVyYXRlZCwgaXRzIGZpbmFsIHZh
bHVlIGlzIHRoZSB2YWx1ZSBvZiB0aGUgbGFzdCBpdGVyYXRpb24uCisgICAgLy8gKGkuZSB0aGUg
bGFzdCBQYXRoRWxlbWVudCkuCisgICAgLy8gRklYTUU6IGZpbmQgYSBtb3JlIGVmZmljaWVudCB3
YXkgdG8gaW1wbGVtZW50IHRoaXMsIHRoYXQgZG9lcyBub3QgcmVxdWlyZSBpdGVyYXRpbmcKKyAg
ICAvLyB0aHJvdWdoIGFsbCBQYXRoRWxlbWVudHMuCisgICAgYXBwbHkoWyZsYXN0RWxlbWVudElz
Q2xvc2VkXShjb25zdCBXZWJDb3JlOjpQYXRoRWxlbWVudCYgZWxlbWVudCkgeworICAgICAgICBs
YXN0RWxlbWVudElzQ2xvc2VkID0gKGVsZW1lbnQudHlwZSA9PSBQYXRoRWxlbWVudDo6VHlwZTo6
Q2xvc2VTdWJwYXRoKTsKKyAgICB9KTsKKworICAgIHJldHVybiBsYXN0RWxlbWVudElzQ2xvc2Vk
OworfQorCiBzaXplX3QgUGF0aDo6ZWxlbWVudENvdW50KCkgY29uc3QKIHsKICNpZiBFTkFCTEUo
SU5MSU5FX1BBVEhfREFUQSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL1BhdGguaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BhdGguaApp
bmRleCA3Yjk4NzZhYjFjNzg1OGI1NGI4MGQ5MDhlNmE4MGU1OTYyM2ZiZTJmLi4zNWQ5YWE1Mzg5
NTE4NjdhZjZkNmJmY2MwYWM5ODkxZjkxNzQ5MTY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9QYXRoLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvUGF0aC5oCkBAIC0xNjAsNiArMTYwLDggQEAgcHVibGljOgogICAgIGJvb2wgaGFz
Q3VycmVudFBvaW50KCkgY29uc3Q7CiAgICAgRmxvYXRQb2ludCBjdXJyZW50UG9pbnQoKSBjb25z
dDsKIAorICAgIGJvb2wgaXNDbG9zZWQoKSBjb25zdDsKKwogICAgIFdFQkNPUkVfRVhQT1JUIHZv
aWQgbW92ZVRvKGNvbnN0IEZsb2F0UG9pbnQmKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGFk
ZExpbmVUbyhjb25zdCBGbG9hdFBvaW50Jik7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhZGRR
dWFkQ3VydmVUbyhjb25zdCBGbG9hdFBvaW50JiBjb250cm9sUG9pbnQsIGNvbnN0IEZsb2F0UG9p
bnQmIGVuZFBvaW50KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJMYXllckNvbXBvc2l0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxh
eWVyQ29tcG9zaXRvci5jcHAKaW5kZXggMmU3MGJiZTdmOTZiOTMxOTQ0ODFjZWE5NGNlNTQ0MWYz
MDNiZDBlZi4uYmYwYmZkZTBjNTk2OGYxYmEzYzAxNDI2ZDliM2RkNzczMTEyZGE0YyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5jcHAK
QEAgLTE2NDcsNiArMTY0NywxMSBAQCBzdGF0aWMgYm9vbCByZWNvbXBvc2l0ZUNoYW5nZVJlcXVp
cmVzR2VvbWV0cnlVcGRhdGUoY29uc3QgUmVuZGVyU3R5bGUmIG9sZFN0eWxlLAogICAgICAgICB8
fCBvbGRTdHlsZS5wZXJzcGVjdGl2ZU9yaWdpblgoKSAhPSBuZXdTdHlsZS5wZXJzcGVjdGl2ZU9y
aWdpblgoKQogICAgICAgICB8fCBvbGRTdHlsZS5wZXJzcGVjdGl2ZU9yaWdpblkoKSAhPSBuZXdT
dHlsZS5wZXJzcGVjdGl2ZU9yaWdpblkoKQogICAgICAgICB8fCBvbGRTdHlsZS5iYWNrZmFjZVZp
c2liaWxpdHkoKSAhPSBuZXdTdHlsZS5iYWNrZmFjZVZpc2liaWxpdHkoKQorICAgICAgICB8fCAh
YXJlUG9pbnRpbmdUb0VxdWFsRGF0YShvbGRTdHlsZS5vZmZzZXRQYXRoKCksIG5ld1N0eWxlLm9m
ZnNldFBhdGgoKSkKKyAgICAgICAgfHwgb2xkU3R5bGUub2Zmc2V0QW5jaG9yKCkgIT0gbmV3U3R5
bGUub2Zmc2V0QW5jaG9yKCkKKyAgICAgICAgfHwgb2xkU3R5bGUub2Zmc2V0UG9zaXRpb24oKSAh
PSBuZXdTdHlsZS5vZmZzZXRQb3NpdGlvbigpCisgICAgICAgIHx8IG9sZFN0eWxlLm9mZnNldERp
c3RhbmNlKCkgIT0gbmV3U3R5bGUub2Zmc2V0RGlzdGFuY2UoKQorICAgICAgICB8fCBvbGRTdHls
ZS5vZmZzZXRSb3RhdGUoKSAhPSBuZXdTdHlsZS5vZmZzZXRSb3RhdGUoKQogICAgICAgICB8fCAh
YXJlUG9pbnRpbmdUb0VxdWFsRGF0YShvbGRTdHlsZS5jbGlwUGF0aCgpLCBuZXdTdHlsZS5jbGlw
UGF0aCgpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ck9iamVjdC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5oCmluZGV4
IDhiMDA5MzE4MjM4OWZiN2RmNjlmOGQ1N2RjOGYwMjk0N2Q1N2RlNTguLmQ0OTk4Nzg3MmVmMzQx
MDNhYzBlODI0ZDcxZjM5NGM2ZWJjZTk3ZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJPYmplY3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyT2JqZWN0LmgKQEAgLTQ0NCw3ICs0NDQsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBoYXNQb3Rl
bnRpYWxseVNjcm9sbGFibGVPdmVyZmxvdygpIGNvbnN0OwogCiAgICAgYm9vbCBoYXNUcmFuc2Zv
cm1SZWxhdGVkUHJvcGVydHkoKSBjb25zdCB7IHJldHVybiBtX2JpdGZpZWxkcy5oYXNUcmFuc2Zv
cm1SZWxhdGVkUHJvcGVydHkoKTsgfSAvLyBUcmFuc2Zvcm0sIHBlcnNwZWN0aXZlIG9yIHRyYW5z
Zm9ybS1zdHlsZTogcHJlc2VydmUtM2QuCi0gICAgYm9vbCBoYXNUcmFuc2Zvcm0oKSBjb25zdCB7
IHJldHVybiBoYXNUcmFuc2Zvcm1SZWxhdGVkUHJvcGVydHkoKSAmJiAoc3R5bGUoKS5oYXNUcmFu
c2Zvcm0oKSB8fCBzdHlsZSgpLnRyYW5zbGF0ZSgpIHx8IHN0eWxlKCkuc2NhbGUoKSB8fCBzdHls
ZSgpLnJvdGF0ZSgpKTsgfQorICAgIGJvb2wgaGFzVHJhbnNmb3JtKCkgY29uc3QgeyByZXR1cm4g
aGFzVHJhbnNmb3JtUmVsYXRlZFByb3BlcnR5KCkgJiYgKHN0eWxlKCkuaGFzVHJhbnNmb3JtKCkg
fHwgc3R5bGUoKS50cmFuc2xhdGUoKSB8fCBzdHlsZSgpLnNjYWxlKCkgfHwgc3R5bGUoKS5yb3Rh
dGUoKSB8fCBzdHlsZSgpLm9mZnNldFBhdGgoKSk7IH0KIAogICAgIGlubGluZSBib29sIHByZXNl
cnZlc05ld2xpbmUoKSBjb25zdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N0eWxlL1JlbmRlclN0eWxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHls
ZS9SZW5kZXJTdHlsZS5jcHAKaW5kZXggM2FmOWUxNTBlZTBiMGEzNWFlNTllZmRlNWVkMjc4MDNi
ZWRmNjQ2ZS4uNmIzNjM4ZDFhOGYwZTFlNjc0YTM1ZmU5Y2YyZTNjYjVlZjZiOGQwYSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuY3BwCkBAIC0zNiw2
ICszNiw3IEBACiAjaW5jbHVkZSAiSW5saW5lSXRlcmF0b3JUZXh0Qm94LmgiCiAjaW5jbHVkZSAi
SW5saW5lVGV4dEJveFN0eWxlLmgiCiAjaW5jbHVkZSAiUGFnaW5hdGlvbi5oIgorI2luY2x1ZGUg
IlBhdGhUcmF2ZXJzYWxTdGF0ZS5oIgogI2luY2x1ZGUgIlF1b3Rlc0RhdGEuaCIKICNpbmNsdWRl
ICJSZW5kZXJCbG9jay5oIgogI2luY2x1ZGUgIlJlbmRlck9iamVjdC5oIgpAQCAtNjk4LDYgKzY5
OSwxMyBAQCBzdGF0aWMgYm9vbCByYXJlTm9uSW5oZXJpdGVkRGF0YUNoYW5nZVJlcXVpcmVzTGF5
b3V0KGNvbnN0IFN0eWxlUmFyZU5vbkluaGVyaXRlZAogICAgICAgICB8fCAhYXJlUG9pbnRpbmdU
b0VxdWFsRGF0YShmaXJzdC50cmFuc2xhdGUsIHNlY29uZC50cmFuc2xhdGUpKQogICAgICAgICBj
aGFuZ2VkQ29udGV4dFNlbnNpdGl2ZVByb3BlcnRpZXMuYWRkKFN0eWxlRGlmZmVyZW5jZUNvbnRl
eHRTZW5zaXRpdmVQcm9wZXJ0eTo6VHJhbnNmb3JtKTsKIAorICAgIGlmICghYXJlUG9pbnRpbmdU
b0VxdWFsRGF0YShmaXJzdC5vZmZzZXRQYXRoLCBzZWNvbmQub2Zmc2V0UGF0aCkKKyAgICAgICAg
fHwgZmlyc3Qub2Zmc2V0UG9zaXRpb24gIT0gc2Vjb25kLm9mZnNldFBvc2l0aW9uCisgICAgICAg
IHx8IGZpcnN0Lm9mZnNldERpc3RhbmNlICE9IHNlY29uZC5vZmZzZXREaXN0YW5jZQorICAgICAg
ICB8fCBmaXJzdC5vZmZzZXRBbmNob3IgIT0gc2Vjb25kLm9mZnNldEFuY2hvcgorICAgICAgICB8
fCBmaXJzdC5vZmZzZXRSb3RhdGUgIT0gc2Vjb25kLm9mZnNldFJvdGF0ZSkKKyAgICAgICAgY2hh
bmdlZENvbnRleHRTZW5zaXRpdmVQcm9wZXJ0aWVzLmFkZChTdHlsZURpZmZlcmVuY2VDb250ZXh0
U2Vuc2l0aXZlUHJvcGVydHk6OlRyYW5zZm9ybSk7CisKICAgICBpZiAoZmlyc3QuZ3JpZCAhPSBz
ZWNvbmQuZ3JpZAogICAgICAgICB8fCBmaXJzdC5ncmlkSXRlbSAhPSBzZWNvbmQuZ3JpZEl0ZW0p
CiAgICAgICAgIHJldHVybiB0cnVlOwpAQCAtMTQwNyw3ICsxNDE1LDExIEBAIHZvaWQgUmVuZGVy
U3R5bGU6OmFwcGx5VHJhbnNmb3JtKFRyYW5zZm9ybWF0aW9uTWF0cml4JiB0cmFuc2Zvcm0sIGNv
bnN0IEZsb2F0UmVjCiAgICAgLy8gMS4gU3RhcnQgd2l0aCB0aGUgaWRlbnRpdHkgbWF0cml4Lgog
CiAgICAgYXV0byYgdHJhbnNmb3JtT3BlcmF0aW9ucyA9IG1fcmFyZU5vbkluaGVyaXRlZERhdGEt
PnRyYW5zZm9ybS0+b3BlcmF0aW9uczsKLSAgICBib29sIGFwcGx5VHJhbnNmb3JtT3JpZ2luID0g
b3B0aW9ucy5jb250YWlucyhSZW5kZXJTdHlsZTo6VHJhbnNmb3JtT3BlcmF0aW9uT3B0aW9uOjpU
cmFuc2Zvcm1PcmlnaW4pICYmICgobV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+cm90YXRlICYmICFt
X3JhcmVOb25Jbmhlcml0ZWREYXRhLT5yb3RhdGUtPmlzSWRlbnRpdHkoKSkgfHwgKG1fcmFyZU5v
bkluaGVyaXRlZERhdGEtPnNjYWxlICYmICFtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5zY2FsZS0+
aXNJZGVudGl0eSgpKSB8fCB0cmFuc2Zvcm1PcGVyYXRpb25zLmFmZmVjdGVkQnlUcmFuc2Zvcm1P
cmlnaW4oKSk7CisgICAgYm9vbCBhcHBseVRyYW5zZm9ybU9yaWdpbiA9IG9wdGlvbnMuY29udGFp
bnMoUmVuZGVyU3R5bGU6OlRyYW5zZm9ybU9wZXJhdGlvbk9wdGlvbjo6VHJhbnNmb3JtT3JpZ2lu
KQorICAgICAgICAmJiAoKG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPnJvdGF0ZSAmJiAhbV9yYXJl
Tm9uSW5oZXJpdGVkRGF0YS0+cm90YXRlLT5pc0lkZW50aXR5KCkpCisgICAgICAgICAgICB8fCAo
bV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+c2NhbGUgJiYgIW1fcmFyZU5vbkluaGVyaXRlZERhdGEt
PnNjYWxlLT5pc0lkZW50aXR5KCkpCisgICAgICAgICAgICB8fCB0cmFuc2Zvcm1PcGVyYXRpb25z
LmFmZmVjdGVkQnlUcmFuc2Zvcm1PcmlnaW4oKQorICAgICAgICAgICAgfHwgb2Zmc2V0UGF0aCgp
KTsKIAogICAgIC8vIDIuIFRyYW5zbGF0ZSBieSB0aGUgY29tcHV0ZWQgWCwgWSwgYW5kIFogdmFs
dWVzIG9mIHRyYW5zZm9ybS1vcmlnaW4uCiAgICAgRmxvYXRQb2ludDNEIG9yaWdpblRyYW5zbGF0
ZTsKQEAgLTE0MzUsNyArMTQ0Nyw5IEBAIHZvaWQgUmVuZGVyU3R5bGU6OmFwcGx5VHJhbnNmb3Jt
KFRyYW5zZm9ybWF0aW9uTWF0cml4JiB0cmFuc2Zvcm0sIGNvbnN0IEZsb2F0UmVjCiAgICAgICAg
ICAgICBzY2FsZS0+YXBwbHkodHJhbnNmb3JtLCBib3VuZGluZ0JveC5zaXplKCkpOwogICAgIH0K
IAotICAgIC8vIDYuIFRyYW5zbGF0ZSBhbmQgcm90YXRlIGJ5IHRoZSB0cmFuc2Zvcm0gc3BlY2lm
aWVkIGJ5IG9mZnNldC4gKEZJWE1FOiB3ZSBkb24ndCBzdXBwb3J0IHRoZSBvZmZzZXQgcHJvcGVy
dHkpCisgICAgLy8gNi4gVHJhbnNsYXRlIGFuZCByb3RhdGUgYnkgdGhlIHRyYW5zZm9ybSBzcGVj
aWZpZWQgYnkgb2Zmc2V0LgorICAgIGlmIChvcHRpb25zLmNvbnRhaW5zKFJlbmRlclN0eWxlOjpU
cmFuc2Zvcm1PcGVyYXRpb25PcHRpb246Ok9mZnNldCkpCisgICAgICAgIGFwcGx5TW90aW9uUGF0
aFRyYW5zZm9ybSh0cmFuc2Zvcm0sIGJvdW5kaW5nQm94KTsKIAogICAgIC8vIDcuIE11bHRpcGx5
IGJ5IGVhY2ggb2YgdGhlIHRyYW5zZm9ybSBmdW5jdGlvbnMgaW4gdHJhbnNmb3JtIGZyb20gbGVm
dCB0byByaWdodC4KICAgICBmb3IgKGF1dG8mIG9wZXJhdGlvbiA6IHRyYW5zZm9ybU9wZXJhdGlv
bnMub3BlcmF0aW9ucygpKQpAQCAtMTQ0Niw2ICsxNDYwLDY3IEBAIHZvaWQgUmVuZGVyU3R5bGU6
OmFwcGx5VHJhbnNmb3JtKFRyYW5zZm9ybWF0aW9uTWF0cml4JiB0cmFuc2Zvcm0sIGNvbnN0IEZs
b2F0UmVjCiAgICAgICAgIHRyYW5zZm9ybS50cmFuc2xhdGUzZCgtb3JpZ2luVHJhbnNsYXRlLngo
KSwgLW9yaWdpblRyYW5zbGF0ZS55KCksIC1vcmlnaW5UcmFuc2xhdGUueigpKTsKIH0KIAorc3Rh
dGljIHN0ZDo6b3B0aW9uYWw8UGF0aD4gZ2V0UGF0aEZyb21QYXRoT3BlcmF0aW9uKGNvbnN0IEZs
b2F0UmVjdCYgYm94LCBjb25zdCBQYXRoT3BlcmF0aW9uJiBvcGVyYXRpb24pCit7CisgICAgaWYg
KG9wZXJhdGlvbi50eXBlKCkgPT0gUGF0aE9wZXJhdGlvbjo6U2hhcGUpCisgICAgICAgIHJldHVy
biBkb3duY2FzdDxTaGFwZVBhdGhPcGVyYXRpb24+KG9wZXJhdGlvbikucGF0aEZvclJlZmVyZW5j
ZVJlY3QoYm94KTsKKworICAgIC8vIEZJWE1FOiBzdXBwb3J0IFJlZmVyZW5jZSBhbmQgQm94IHR5
cGUuCisgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMzM4
MgorICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Cit9CisKK3N0YXRpYyBQYXRoVHJhdmVyc2FsU3Rh
dGUgZ2V0VHJhdmVyc2FsU3RhdGVBdERpc3RhbmNlKGNvbnN0IFBhdGgmIHBhdGgsIGNvbnN0IExl
bmd0aCYgZGlzdGFuY2UpCit7CisgICAgYXV0byBwYXRoTGVuZ3RoID0gcGF0aC5sZW5ndGgoKTsK
KyAgICBhdXRvIGRpc3RhbmNlVmFsdWUgPSBmbG9hdFZhbHVlRm9yTGVuZ3RoKGRpc3RhbmNlLCBw
YXRoTGVuZ3RoKTsKKworICAgIGZsb2F0IHJlc29sdmVkTGVuZ3RoID0gMDsKKyAgICBpZiAocGF0
aC5pc0Nsb3NlZCgpKSB7CisgICAgICAgIGlmIChwYXRoTGVuZ3RoKSB7CisgICAgICAgICAgICBy
ZXNvbHZlZExlbmd0aCA9IGZtb2QoZGlzdGFuY2VWYWx1ZSwgcGF0aExlbmd0aCk7CisgICAgICAg
ICAgICBpZiAocmVzb2x2ZWRMZW5ndGggPCAwKQorICAgICAgICAgICAgICAgIHJlc29sdmVkTGVu
Z3RoICs9IHBhdGhMZW5ndGg7CisgICAgICAgIH0KKyAgICB9IGVsc2UKKyAgICAgICAgcmVzb2x2
ZWRMZW5ndGggPSBjbGFtcFRvPGZsb2F0PihkaXN0YW5jZVZhbHVlLCAwLCBwYXRoTGVuZ3RoKTsK
KworICAgIEFTU0VSVChyZXNvbHZlZExlbmd0aCA+PSAwKTsKKyAgICByZXR1cm4gcGF0aC50cmF2
ZXJzYWxTdGF0ZUF0TGVuZ3RoKHJlc29sdmVkTGVuZ3RoKTsKK30KKwordm9pZCBSZW5kZXJTdHls
ZTo6YXBwbHlNb3Rpb25QYXRoVHJhbnNmb3JtKFRyYW5zZm9ybWF0aW9uTWF0cml4JiB0cmFuc2Zv
cm0sIGNvbnN0IEZsb2F0UmVjdCYgYm91bmRpbmdCb3gpIGNvbnN0Cit7CisgICAgaWYgKCFvZmZz
ZXRQYXRoKCkpCisgICAgICAgIHJldHVybjsKKworICAgIC8vIFNoaWZ0IGVsZW1lbnQgdG8gdGhl
IHBvaW50IG9uIHBhdGggc3BlY2lmaWVkIGJ5IG9mZnNldC1wYXRoIGFuZCBvZmZzZXQtZGlzdGFu
Y2UuCisgICAgYXV0byBwYXRoID0gZ2V0UGF0aEZyb21QYXRoT3BlcmF0aW9uKGJvdW5kaW5nQm94
LCAqb2Zmc2V0UGF0aCgpKTsKKyAgICBpZiAoIXBhdGgpCisgICAgICAgIHJldHVybjsKKyAgICBh
dXRvIHRyYXZlcnNhbFN0YXRlID0gZ2V0VHJhdmVyc2FsU3RhdGVBdERpc3RhbmNlKCpwYXRoLCBv
ZmZzZXREaXN0YW5jZSgpKTsKKyAgICB0cmFuc2Zvcm0udHJhbnNsYXRlKHRyYXZlcnNhbFN0YXRl
LmN1cnJlbnQoKS54KCksIHRyYXZlcnNhbFN0YXRlLmN1cnJlbnQoKS55KCkpOworCisgICAgLy8g
U2hpZnQgZWxlbWVudCB0byB0aGUgYW5jaG9yIHNwZWNpZmllZCBieSBvZmZzZXQtYW5jaG9yLgor
ICAgIGF1dG8gdHJhbnNmb3JtT3JpZ2luID0gZmxvYXRQb2ludEZvckxlbmd0aFBvaW50KHRyYW5z
Zm9ybU9yaWdpblhZKCksIGJvdW5kaW5nQm94LnNpemUoKSkgKyBib3VuZGluZ0JveC5sb2NhdGlv
bigpOworICAgIGF1dG8gYW5jaG9yID0gdHJhbnNmb3JtT3JpZ2luOworICAgIGlmICghb2Zmc2V0
QW5jaG9yKCkueCgpLmlzQXV0bygpKQorICAgICAgICBhbmNob3IgPSBmbG9hdFBvaW50Rm9yTGVu
Z3RoUG9pbnQob2Zmc2V0QW5jaG9yKCksIGJvdW5kaW5nQm94LnNpemUoKSkgKyBib3VuZGluZ0Jv
eC5sb2NhdGlvbigpOworICAgIHRyYW5zZm9ybS50cmFuc2xhdGUoLWFuY2hvci54KCksIC1hbmNo
b3IueSgpKTsKKworICAgIGF1dG8gc2hpZnRUb09yaWdpbiA9IGFuY2hvciAtIHRyYW5zZm9ybU9y
aWdpbjsKKyAgICB0cmFuc2Zvcm0udHJhbnNsYXRlKHNoaWZ0VG9PcmlnaW4ud2lkdGgoKSwgc2hp
ZnRUb09yaWdpbi5oZWlnaHQoKSk7CisKKyAgICAvLyBBcHBseSByb3RhdGlvbi4KKyAgICBhdXRv
IHJvdGF0aW9uID0gb2Zmc2V0Um90YXRlKCk7CisgICAgaWYgKHJvdGF0aW9uLmhhc0F1dG8oKSkK
KyAgICAgICAgdHJhbnNmb3JtLnJvdGF0ZSh0cmF2ZXJzYWxTdGF0ZS5ub3JtYWxBbmdsZSgpICsg
cm90YXRpb24uYW5nbGUoKSk7CisgICAgZWxzZQorICAgICAgICB0cmFuc2Zvcm0ucm90YXRlKHJv
dGF0aW9uLmFuZ2xlKCkpOworCisgICAgdHJhbnNmb3JtLnRyYW5zbGF0ZSgtc2hpZnRUb09yaWdp
bi53aWR0aCgpLCAtc2hpZnRUb09yaWdpbi5oZWlnaHQoKSk7Cit9CisKIHZvaWQgUmVuZGVyU3R5
bGU6OnNldFBhZ2VTY2FsZVRyYW5zZm9ybShmbG9hdCBzY2FsZSkKIHsKICAgICBpZiAoc2NhbGUg
PT0gMSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJT
dHlsZS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmgKaW5k
ZXggYTBlMmMyYzJlYjc2NzAyMzBhZDVmYWFiYWRiY2QzMmE1YmY4ZTY3My4uNGQxZTc4Yjk0OTMz
MzQxNzVmODJiYzA2OWE5MmQ2Yjc0YWQ2Y2E0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N0eWxlL1JlbmRlclN0eWxlLmgKQEAgLTY0NSw3ICs2NDUsNyBAQCBwdWJsaWM6CiAgICAg
Q29sdW1uU3BhbiBjb2x1bW5TcGFuKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8Q29sdW1u
U3Bhbj4obV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+bXVsdGlDb2wtPmNvbHVtblNwYW4pOyB9CiAK
ICAgICBjb25zdCBUcmFuc2Zvcm1PcGVyYXRpb25zJiB0cmFuc2Zvcm0oKSBjb25zdCB7IHJldHVy
biBtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT50cmFuc2Zvcm0tPm9wZXJhdGlvbnM7IH0KLSAgICBi
b29sIGhhc1RyYW5zZm9ybSgpIGNvbnN0IHsgcmV0dXJuICFtX3JhcmVOb25Jbmhlcml0ZWREYXRh
LT50cmFuc2Zvcm0tPm9wZXJhdGlvbnMub3BlcmF0aW9ucygpLmlzRW1wdHkoKTsgfQorICAgIGJv
b2wgaGFzVHJhbnNmb3JtKCkgY29uc3QgeyByZXR1cm4gIW1fcmFyZU5vbkluaGVyaXRlZERhdGEt
PnRyYW5zZm9ybS0+b3BlcmF0aW9ucy5vcGVyYXRpb25zKCkuaXNFbXB0eSgpIHx8IG9mZnNldFBh
dGgoKTsgfQogICAgIGNvbnN0IExlbmd0aCYgdHJhbnNmb3JtT3JpZ2luWCgpIGNvbnN0IHsgcmV0
dXJuIG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPnRyYW5zZm9ybS0+eDsgfQogICAgIGNvbnN0IExl
bmd0aCYgdHJhbnNmb3JtT3JpZ2luWSgpIGNvbnN0IHsgcmV0dXJuIG1fcmFyZU5vbkluaGVyaXRl
ZERhdGEtPnRyYW5zZm9ybS0+eTsgfQogICAgIGZsb2F0IHRyYW5zZm9ybU9yaWdpblooKSBjb25z
dCB7IHJldHVybiBtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT50cmFuc2Zvcm0tPno7IH0KQEAgLTY4
NCwxMiArNjg0LDE0IEBAIHB1YmxpYzoKICAgICAgICAgVHJhbnNmb3JtT3JpZ2luID0gMSA8PCAw
LAogICAgICAgICBUcmFuc2xhdGUgICAgICAgPSAxIDw8IDEsCiAgICAgICAgIFJvdGF0ZSAgICAg
ICAgICA9IDEgPDwgMiwKLSAgICAgICAgU2NhbGUgICAgICAgICAgID0gMSA8PCAzCisgICAgICAg
IFNjYWxlICAgICAgICAgICA9IDEgPDwgMywKKyAgICAgICAgT2Zmc2V0ICAgICAgICAgID0gMSA8
PCA0CiAgICAgfTsKIAotICAgIHN0YXRpYyBjb25zdGV4cHIgT3B0aW9uU2V0PFRyYW5zZm9ybU9w
ZXJhdGlvbk9wdGlvbj4gYWxsVHJhbnNmb3JtT3BlcmF0aW9ucyA9IHsgVHJhbnNmb3JtT3BlcmF0
aW9uT3B0aW9uOjpUcmFuc2Zvcm1PcmlnaW4sIFRyYW5zZm9ybU9wZXJhdGlvbk9wdGlvbjo6VHJh
bnNsYXRlLCBUcmFuc2Zvcm1PcGVyYXRpb25PcHRpb246OlJvdGF0ZSwgVHJhbnNmb3JtT3BlcmF0
aW9uT3B0aW9uOjpTY2FsZSB9OwotICAgIHN0YXRpYyBjb25zdGV4cHIgT3B0aW9uU2V0PFRyYW5z
Zm9ybU9wZXJhdGlvbk9wdGlvbj4gaW5kaXZpZHVhbFRyYW5zZm9ybU9wZXJhdGlvbnMgPSB7IFRy
YW5zZm9ybU9wZXJhdGlvbk9wdGlvbjo6VHJhbnNsYXRlLCBUcmFuc2Zvcm1PcGVyYXRpb25PcHRp
b246OlJvdGF0ZSwgVHJhbnNmb3JtT3BlcmF0aW9uT3B0aW9uOjpTY2FsZSB9OworICAgIHN0YXRp
YyBjb25zdGV4cHIgT3B0aW9uU2V0PFRyYW5zZm9ybU9wZXJhdGlvbk9wdGlvbj4gYWxsVHJhbnNm
b3JtT3BlcmF0aW9ucyA9IHsgVHJhbnNmb3JtT3BlcmF0aW9uT3B0aW9uOjpUcmFuc2Zvcm1Pcmln
aW4sIFRyYW5zZm9ybU9wZXJhdGlvbk9wdGlvbjo6VHJhbnNsYXRlLCBUcmFuc2Zvcm1PcGVyYXRp
b25PcHRpb246OlJvdGF0ZSwgVHJhbnNmb3JtT3BlcmF0aW9uT3B0aW9uOjpTY2FsZSAsIFRyYW5z
Zm9ybU9wZXJhdGlvbk9wdGlvbjo6T2Zmc2V0IH07CisgICAgc3RhdGljIGNvbnN0ZXhwciBPcHRp
b25TZXQ8VHJhbnNmb3JtT3BlcmF0aW9uT3B0aW9uPiBpbmRpdmlkdWFsVHJhbnNmb3JtT3BlcmF0
aW9ucyA9IHsgVHJhbnNmb3JtT3BlcmF0aW9uT3B0aW9uOjpUcmFuc2xhdGUsIFRyYW5zZm9ybU9w
ZXJhdGlvbk9wdGlvbjo6Um90YXRlLCBUcmFuc2Zvcm1PcGVyYXRpb25PcHRpb246OlNjYWxlLCBU
cmFuc2Zvcm1PcGVyYXRpb25PcHRpb246Ok9mZnNldCB9OwogICAgIHZvaWQgYXBwbHlUcmFuc2Zv
cm0oVHJhbnNmb3JtYXRpb25NYXRyaXgmLCBjb25zdCBGbG9hdFJlY3QmIGJvdW5kaW5nQm94LCBP
cHRpb25TZXQ8VHJhbnNmb3JtT3BlcmF0aW9uT3B0aW9uPiA9IGFsbFRyYW5zZm9ybU9wZXJhdGlv
bnMpIGNvbnN0OworICAgIHZvaWQgYXBwbHlNb3Rpb25QYXRoVHJhbnNmb3JtKFRyYW5zZm9ybWF0
aW9uTWF0cml4JiwgY29uc3QgRmxvYXRSZWN0JiBib3VuZGluZ0JveCkgY29uc3Q7CiAgICAgdm9p
ZCBzZXRQYWdlU2NhbGVUcmFuc2Zvcm0oZmxvYXQpOwogCiAgICAgYm9vbCBoYXNNYXNrKCkgY29u
c3QgeyByZXR1cm4gbV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+bWFzay0+aGFzSW1hZ2UoKSB8fCBt
X3JhcmVOb25Jbmhlcml0ZWREYXRhLT5tYXNrQm94SW1hZ2UuaGFzSW1hZ2UoKTsgfQpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4
IDVmMjFkOTBlZWFkYjViMjY2Y2YxOWMxOTliMGY4ZmZkMTFlNzI5MmQuLjRjNzAyYzU2YWI0ZTJh
NTc0NzExNDlhOTk2NjY0ZmI0YTdlNjUyYmIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAyMS0x
MS0xOSAgS2lldCBIbyAgPHRobzIyQGFwcGxlLmNvbT4KKworICAgICAgICBJbnRlZ3JhdGUgbW90
aW9uIHBhdGggdHJhbnNmb3JtcyBpbiB0cmFuc2Zvcm1hdGlvbiBwaXBlbGluZQorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMzMTQ0CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVtb3ZlZCBJbWFnZU9ubHlG
YWlsdXJlIGV4cGVjdGF0aW9ucyBmb3IgdGVzdHMgdGhhdCBzaG91bGQgbm93IHBhc3MuCisKKyAg
ICAgICAgKiBUZXN0RXhwZWN0YXRpb25zOgorCiAyMDIxLTExLTE4ICBNYXJ0aW4gUm9iaW5zb24g
IDxtcm9iaW5zb25Ad2Via2l0Lm9yZz4KIAogICAgICAgICBVcGRhdGUgY3NzLXRyYW5zZm9ybXMg
V1BUIHRlc3RzCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9UZXN0RXhwZWN0YXRpb25zIGIvTGF5
b3V0VGVzdHMvVGVzdEV4cGVjdGF0aW9ucwppbmRleCA5MDI0ZjMxNmM3ZmM2NjRmYzhjYjA2ZDA3
ZjdiMDk2NzZiMDk1YWJkLi41ZWU5YWQzYTQzZWYyOWQ2MjU2YTMxMDJjN2EyOTY4YTc2ZGFhYjBi
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRl
c3RzL1Rlc3RFeHBlY3RhdGlvbnMKQEAgLTUwODUsNDEgKzUwODUsMjggQEAgaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy9jb250ZW50LXNlY3VyaXR5LXBvbGljeS9zY3JpcHQtc3JjLyBb
IER1bXBKU0NvbnMKICMgaW1wb3J0LXczYy10ZXN0cyBjb3BpZXMgLW5vdHJlZi5odG1sIHRvIC1l
eHBlY3RlZC5odG1sLCBzbyBleHBlY3RlZCBpbWFnZSBmYWlsdXJlIGhlcmUuCiBpbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvc2VtYW50aWNzL2Zvcm1zL3RoZS10ZXh0YXJlYS1l
bGVtZW50L3BsYWNlaG9sZGVyLXdoaXRlLXNwYWNlLnRlbnRhdGl2ZS5odG1sIFsgSW1hZ2VPbmx5
RmFpbHVyZSBdCiAKLSMgQ1NTIG1vdGlvbiBwYXRoIHRlc3RzLCBjdXJyZW50bHkgZmFpbGluZy4K
LWltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL21vdGlvbi9hbmltYXRpb24vcmVm
dGVzdHMvb2Zmc2V0LXBhdGgtd2l0aC10cmFuc2Zvcm1zLTAwMS5odG1sIFsgSW1hZ2VPbmx5RmFp
bHVyZSBdCi1pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9tb3Rpb24vb2Zmc2V0
LWFuY2hvci10cmFuc2Zvcm0tYm94LWZpbGwtYm94LTAwMS5odG1sIFsgSW1hZ2VPbmx5RmFpbHVy
ZSBdCi1pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9tb3Rpb24vb2Zmc2V0LWFu
Y2hvci10cmFuc2Zvcm0tYm94LWZpbGwtYm94LTAwMi5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBd
Ci1pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9tb3Rpb24vb2Zmc2V0LWFuY2hv
ci10cmFuc2Zvcm0tYm94LWZpbGwtYm94LTAwMy5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi1p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9tb3Rpb24vb2Zmc2V0LWRpc3RhbmNl
LTAwMS5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi1pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL2Nzcy9tb3Rpb24vb2Zmc2V0LWRpc3RhbmNlLTAwMi5odG1sIFsgSW1hZ2VPbmx5RmFp
bHVyZSBdCi1pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9tb3Rpb24vb2Zmc2V0
LWRpc3RhbmNlLTAwMy5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi1pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL2Nzcy9tb3Rpb24vb2Zmc2V0LWRpc3RhbmNlLTAwNC5odG1sIFsgSW1h
Z2VPbmx5RmFpbHVyZSBdCi1pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9tb3Rp
b24vb2Zmc2V0LWRpc3RhbmNlLTAwNS5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi1pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9tb3Rpb24vb2Zmc2V0LWRpc3RhbmNlLTAwNi5o
dG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi1pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L2Nzcy9tb3Rpb24vb2Zmc2V0LWRpc3RhbmNlLTAwNy5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBd
Ci1pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9tb3Rpb24vb2Zmc2V0LWRpc3Rh
bmNlLTAwOC5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi1pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL2Nzcy9tb3Rpb24vb2Zmc2V0LWRpc3RhbmNlLTAwOS5odG1sIFsgSW1hZ2VPbmx5
RmFpbHVyZSBdCi1pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9tb3Rpb24vb2Zm
c2V0LXBhdGgtcmF5LTAwMS5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi1pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9tb3Rpb24vb2Zmc2V0LXBhdGgtcmF5LTAwMi5odG1sIFsg
SW1hZ2VPbmx5RmFpbHVyZSBdCi1pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9t
b3Rpb24vb2Zmc2V0LXBhdGgtcmF5LTAwMy5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi1pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9tb3Rpb24vb2Zmc2V0LXBhdGgtcmF5LTAw
NC5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi1pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL2Nzcy9tb3Rpb24vb2Zmc2V0LXBhdGgtcmF5LTAwNS5odG1sIFsgSW1hZ2VPbmx5RmFpbHVy
ZSBdCi1pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9tb3Rpb24vb2Zmc2V0LXBh
dGgtcmF5LTAwNi5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi1pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL2Nzcy9tb3Rpb24vb2Zmc2V0LXBhdGgtcmF5LTAwNy5odG1sIFsgSW1hZ2VP
bmx5RmFpbHVyZSBdCi1pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9tb3Rpb24v
b2Zmc2V0LXBhdGgtcmF5LTAwOC5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi1pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9tb3Rpb24vb2Zmc2V0LXBhdGgtcmF5LTAwOS5odG1s
IFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi1pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nz
cy9tb3Rpb24vb2Zmc2V0LXBhdGgtcmF5LWNvbnRhaW4tMDAxLmh0bWwgWyBJbWFnZU9ubHlGYWls
dXJlIF0KLWltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL21vdGlvbi9vZmZzZXQt
cGF0aC1yYXktY29udGFpbi0wMDIuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQotaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvbW90aW9uL29mZnNldC1wYXRoLXJheS1jb250YWlu
LTAwMy5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi1pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL2Nzcy9tb3Rpb24vb2Zmc2V0LXBhdGgtcmF5LWNvbnRhaW4tMDA0Lmh0bWwgWyBJbWFn
ZU9ubHlGYWlsdXJlIF0KLWltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL21vdGlv
bi9vZmZzZXQtcGF0aC1yYXktY29udGFpbi0wMDUuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQot
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvbW90aW9uL29mZnNldC1wYXRoLXN0
cmluZy0wMDEuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQotaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9jc3MvbW90aW9uL29mZnNldC1wYXRoLXN0cmluZy0wMDIuaHRtbCBbIEltYWdl
T25seUZhaWx1cmUgXQotaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvbW90aW9u
L29mZnNldC1yb3RhdGUtMDAxLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KLWltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL21vdGlvbi9vZmZzZXQtcm90YXRlLTAwMi5odG1sIFsg
SW1hZ2VPbmx5RmFpbHVyZSBdCi1pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9t
b3Rpb24vb2Zmc2V0LXJvdGF0ZS0wMDMuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQotaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvbW90aW9uL29mZnNldC1yb3RhdGUtMDA0Lmh0
bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KLWltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
Y3NzL21vdGlvbi9vZmZzZXQtcm90YXRlLTAwNS5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCisj
IENTUyBtb3Rpb24gcGF0aCB0ZXN0cyBmYWlsaW5nIGZvciB1bmtub3duIHJlYXNvbnMsIG5lZWRz
IGludmVzdGlnYXRpb24uCit3ZWJraXQub3JnL2IvMjMzMzQwIGltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvY3NzL21vdGlvbi9vZmZzZXQtYW5jaG9yLXRyYW5zZm9ybS1ib3gtZmlsbC1i
b3gtMDAxLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KK3dlYmtpdC5vcmcvYi8yMzMzNDAgaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvbW90aW9uL29mZnNldC1hbmNob3ItdHJh
bnNmb3JtLWJveC1maWxsLWJveC0wMDIuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQord2Via2l0
Lm9yZy9iLzIzMzM0MCBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9tb3Rpb24v
b2Zmc2V0LWFuY2hvci10cmFuc2Zvcm0tYm94LWZpbGwtYm94LTAwMy5odG1sIFsgSW1hZ2VPbmx5
RmFpbHVyZSBdCisKKyMgQ1NTIG1vdGlvbiBwYXRoIHRoYXQgZGVwZW5kcyBvbiByYXkoKSwgY3Vy
cmVudGx5IG5vdCBpbXBsZW1lbnRlZC4KK3dlYmtpdC5vcmcvYi8yMzMzNDQgaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvbW90aW9uL29mZnNldC1wYXRoLXJheS0wMDEuaHRtbCBb
IEltYWdlT25seUZhaWx1cmUgXQord2Via2l0Lm9yZy9iLzIzMzM0NCBpbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL2Nzcy9tb3Rpb24vb2Zmc2V0LXBhdGgtcmF5LTAwMi5odG1sIFsgSW1h
Z2VPbmx5RmFpbHVyZSBdCit3ZWJraXQub3JnL2IvMjMzMzQ0IGltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvY3NzL21vdGlvbi9vZmZzZXQtcGF0aC1yYXktMDAzLmh0bWwgWyBJbWFnZU9u
bHlGYWlsdXJlIF0KK3dlYmtpdC5vcmcvYi8yMzMzNDQgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9jc3MvbW90aW9uL29mZnNldC1wYXRoLXJheS0wMDQuaHRtbCBbIEltYWdlT25seUZh
aWx1cmUgXQord2Via2l0Lm9yZy9iLzIzMzM0NCBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL2Nzcy9tb3Rpb24vb2Zmc2V0LXBhdGgtcmF5LTAwNS5odG1sIFsgSW1hZ2VPbmx5RmFpbHVy
ZSBdCit3ZWJraXQub3JnL2IvMjMzMzQ0IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
Y3NzL21vdGlvbi9vZmZzZXQtcGF0aC1yYXktMDA2Lmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0K
K3dlYmtpdC5vcmcvYi8yMzMzNDQgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3Mv
bW90aW9uL29mZnNldC1wYXRoLXJheS0wMDcuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQord2Vi
a2l0Lm9yZy9iLzIzMzM0NCBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9tb3Rp
b24vb2Zmc2V0LXBhdGgtcmF5LTAwOC5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCit3ZWJraXQu
b3JnL2IvMjMzMzQ0IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL21vdGlvbi9v
ZmZzZXQtcGF0aC1yYXktMDA5Lmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KK3dlYmtpdC5vcmcv
Yi8yMzMzNDQgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvbW90aW9uL29mZnNl
dC1wYXRoLXJheS1jb250YWluLTAwMS5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCit3ZWJraXQu
b3JnL2IvMjMzMzQ0IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL21vdGlvbi9v
ZmZzZXQtcGF0aC1yYXktY29udGFpbi0wMDIuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQord2Vi
a2l0Lm9yZy9iLzIzMzM0NCBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9tb3Rp
b24vb2Zmc2V0LXBhdGgtcmF5LWNvbnRhaW4tMDAzLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0K
K3dlYmtpdC5vcmcvYi8yMzMzNDQgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3Mv
bW90aW9uL29mZnNldC1wYXRoLXJheS1jb250YWluLTAwNC5odG1sIFsgSW1hZ2VPbmx5RmFpbHVy
ZSBdCit3ZWJraXQub3JnL2IvMjMzMzQ0IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
Y3NzL21vdGlvbi9vZmZzZXQtcGF0aC1yYXktY29udGFpbi0wMDUuaHRtbCBbIEltYWdlT25seUZh
aWx1cmUgXQord2Via2l0Lm9yZy9iLzIzMzM0NCBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL2Nzcy9tb3Rpb24vb2Zmc2V0LXJvdGF0ZS0wMDEuaHRtbCBbIEltYWdlT25seUZhaWx1cmUg
XQord2Via2l0Lm9yZy9iLzIzMzM0NCBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nz
cy9tb3Rpb24vb2Zmc2V0LXJvdGF0ZS0wMDIuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQogCiAj
IElQQyB0ZXN0IGZhaWxpbmcgaW4gRGVidWcgbW9kZSBkdWUgdG8gYXNzZXJ0LgogWyBEZWJ1ZyBd
IGlwYy9zZW5kLWludmFsaWQtbWVzc2FnZS5odG1sIFsgU2tpcCBdCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>