<?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>150108</bug_id>
          
          <creation_ts>2015-10-13 16:59:16 -0700</creation_ts>
          <short_desc>Change GraphicsContext image-drawing functions to take references</short_desc>
          <delta_ts>2015-10-14 11:11:27 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Simon Fraser (smfr)">simon.fraser</reporter>
          <assigned_to name="Simon Fraser (smfr)">simon.fraser</assigned_to>
          <cc>simon.fraser</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1132974</commentid>
    <comment_count>0</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2015-10-13 16:59:16 -0700</bug_when>
    <thetext>Change GraphicsContext image-drawing functions to take references</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1132975</commentid>
    <comment_count>1</comment_count>
      <attachid>263038</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2015-10-13 17:00:54 -0700</bug_when>
    <thetext>Created attachment 263038
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1132980</commentid>
    <comment_count>2</comment_count>
      <attachid>263038</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2015-10-13 17:09:19 -0700</bug_when>
    <thetext>Comment on attachment 263038
Patch

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

&gt; Source/WebCore/platform/graphics/filters/FEBlend.cpp:76
&gt; +    if (!imageBuffer || !imageBuffer2)
&gt; +        return;

Please make sure this doesn&apos;t cause us to end up with uninitialized data in a filter buffer.

&gt; Source/WebCore/platform/graphics/filters/FEColorMatrix.cpp:151
&gt; +    if (inBuffer)

As above. I really think crashing might be better in some of these cases.

&gt; Source/WebCore/platform/graphics/filters/FEMerge.cpp:54
&gt; +        if (ImageBuffer* inBuffer = in-&gt;asImageBuffer())

Ditto.

&gt; Source/WebCore/platform/graphics/filters/FEOffset.cpp:83
&gt; +    if (!resultImage || !inBuffer)

Ditto.

&gt; Source/WebCore/platform/graphics/filters/FETile.cpp:51
&gt; +    if (!resultImage || !inBuffer)

Ditto.

&gt; Source/WebCore/platform/graphics/filters/SourceAlpha.cpp:57
&gt; +    if (!imageBuffer)

Ditto.

&gt; Source/WebCore/platform/graphics/filters/SourceGraphic.cpp:56
&gt; +    if (!resultImage || !sourceImage)

Ditto maybe?

&gt; Source/WebCore/rendering/FilterEffectRenderer.cpp:432
&gt; +    if (ImageBuffer* outputBuffer = filter-&gt;output()) {

I&apos;m going to stop dittoing now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1132995</commentid>
    <comment_count>3</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2015-10-13 17:48:49 -0700</bug_when>
    <thetext>I simulated failure in some of the FE* cases and got blank, not garbage pixels.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1133005</commentid>
    <comment_count>4</comment_count>
      <attachid>263046</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2015-10-13 18:11:47 -0700</bug_when>
    <thetext>Created attachment 263046
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1133008</commentid>
    <comment_count>5</comment_count>
      <attachid>263046</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2015-10-13 18:38:57 -0700</bug_when>
    <thetext>Comment on attachment 263046
Patch

EWS is still not happy.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1133014</commentid>
    <comment_count>6</comment_count>
      <attachid>263050</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2015-10-13 18:43:58 -0700</bug_when>
    <thetext>Created attachment 263050
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1133019</commentid>
    <comment_count>7</comment_count>
      <attachid>263051</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2015-10-13 20:07:57 -0700</bug_when>
    <thetext>Created attachment 263051
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1133024</commentid>
    <comment_count>8</comment_count>
      <attachid>263053</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2015-10-13 20:48:29 -0700</bug_when>
    <thetext>Created attachment 263053
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1133126</commentid>
    <comment_count>9</comment_count>
      <attachid>263078</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2015-10-14 08:43:12 -0700</bug_when>
    <thetext>Created attachment 263078
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1133186</commentid>
    <comment_count>10</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2015-10-14 11:11:27 -0700</bug_when>
    <thetext>https://trac.webkit.org/r191049</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>263038</attachid>
            <date>2015-10-13 17:00:54 -0700</date>
            <delta_ts>2015-10-13 18:11:44 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-150108-20151013170017.patch</filename>
            <type>text/plain</type>
            <size>95166</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTkxMDAzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjgyOGQ3ZDAwMzgyNWJk
NjE4YTEyYTY0ZjRiNzgwMTM5ZGYwYjUzZS4uNTMzZjg0NDdmNzBmYWQ5MjU1YmNmZjAyMmZkYTJh
NzljZTU2YjU3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyOSBAQAorMjAxNS0xMC0xMyAgU2lt
b24gRnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KKworICAgICAgICBDaGFuZ2UgR3Jh
cGhpY3NDb250ZXh0IGltYWdlLWRyYXdpbmcgZnVuY3Rpb25zIHRvIHRha2UgcmVmZXJlbmNlcwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUwMTA4CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQ2hhbmdlIEdy
YXBoaWNzQ29udGV4dDo6ZHJhd0ltYWdlKCksIGRyYXdUaWxlZEltYWdlKCksIGRyYXdJbWFnZUJ1
ZmZlcigpLCBjbGlwVG9JbWFnZUJ1ZmZlcigpCisgICAgICAgIGFuZCBpc0NvbXBhdGlibGVXaXRo
QnVmZmVyKCkgdG8gdGFrZSByZWZlcmVuY2VzLCBhbmQgYWRqdXN0IGNhbGxpbmcgY29kZSwgYWRk
aW5nCisgICAgICAgIG51bGwtY2hlY2tzIHdoZXJlIG5lY2Vzc2FyeS4KKyAgICAgICAgCisgICAg
ICAgIE5vIGJlaGF2aW9yIGNoYW5nZS4KKworICAgICAgICAqIGNzcy9DU1NDcm9zc2ZhZGVWYWx1
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NDcm9zc2ZhZGVWYWx1ZTo6aW1hZ2UpOgorICAg
ICAgICAqIGNzcy9DU1NGaWx0ZXJJbWFnZVZhbHVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNT
U0ZpbHRlckltYWdlVmFsdWU6OmltYWdlKToKKyAgICAgICAgKiBodG1sL0hUTUxDYW52YXNFbGVt
ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxDYW52YXNFbGVtZW50OjpwYWludCk6Cisg
ICAgICAgICogaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkNhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6ZHJhd0ltYWdlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6Y29tcG9zaXRlQnVmZmVyKToK
KyAgICAgICAgKFdlYkNvcmU6OmRyYXdJbWFnZVRvQ29udGV4dCk6CisgICAgICAgIChXZWJDb3Jl
OjpDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmZ1bGxDYW52YXNDb21wb3NpdGVkRHJhd0ltYWdl
KToKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6ZHJhd1RleHRJ
bnRlcm5hbCk6CisgICAgICAgICogaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJE
Lmg6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0wyUmVuZGVyaW5nQ29udGV4dC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojp0ZXhTdWJJbWFnZTJEKToK
KyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0Ojp0ZXhTdWJJbWFnZTJEKToKKyAgICAg
ICAgKiBodG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmRyYXdJbWFnZUludG9CdWZmZXIp
OgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dGV4SW1hZ2Uy
RCk6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5oOgor
ICAgICAgICAqIHBsYXRmb3JtL1Njcm9sbFZpZXcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2Ny
b2xsVmlldzo6cGFpbnRQYW5TY3JvbGxJY29uKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9Dcm9zc2ZhZGVHZW5lcmF0ZWRJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDcm9zc2Zh
ZGVHZW5lcmF0ZWRJbWFnZTo6Q3Jvc3NmYWRlR2VuZXJhdGVkSW1hZ2UpOgorICAgICAgICAoV2Vi
Q29yZTo6ZHJhd0Nyb3NzZmFkZVN1YmltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkNyb3NzZmFk
ZUdlbmVyYXRlZEltYWdlOjpkcmF3Q3Jvc3NmYWRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9Dcm9zc2ZhZGVHZW5lcmF0ZWRJbWFnZS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL0dyYWRpZW50SW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhZGllbnRJbWFnZTo6
ZHJhd1BhdHRlcm4pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmRyYXdJbWFnZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmRyYXdUaWxlZEltYWdlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6ZHJhd0ltYWdlQnVmZmVyKToKKyAgICAgICAg
KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6Y2xpcFRvSW1hZ2VCdWZmZXIpOgorICAgICAgICAo
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0Ojppc0NvbXBhdGlibGVXaXRoQnVmZmVyKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9TaGFkb3dCbHVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNoYWRvd0Js
dXI6OmRyYXdTaGFkb3dCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6U2hhZG93Qmx1cjo6ZHJh
d1JlY3RTaGFkb3dXaXRob3V0VGlsaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlNoYWRvd0JsdXI6
OmRyYXdJbnNldFNoYWRvd1dpdGhvdXRUaWxpbmcpOgorICAgICAgICAoV2ViQ29yZTo6U2hhZG93
Qmx1cjo6ZHJhd0luc2V0U2hhZG93V2l0aFRpbGluZyk6CisgICAgICAgIChXZWJDb3JlOjpTaGFk
b3dCbHVyOjpkcmF3UmVjdFNoYWRvd1dpdGhUaWxpbmcpOgorICAgICAgICAoV2ViQ29yZTo6U2hh
ZG93Qmx1cjo6ZHJhd0xheWVyUGllY2VzKToKKyAgICAgICAgKFdlYkNvcmU6OlNoYWRvd0JsdXI6
OmVuZFNoYWRvd0xheWVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFn
ZUJ1ZmZlckNhaXJvLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyOjpkcmF3KToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9QREZEb2N1bWVudEltYWdlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlBERkRvY3VtZW50SW1hZ2U6OmRyYXcpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVCbGVuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGRUJs
ZW5kOjpwbGF0Zm9ybUFwcGx5U29mdHdhcmUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2ZpbHRlcnMvRkVDb2xvck1hdHJpeC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGRUNvbG9yTWF0
cml4OjpwbGF0Zm9ybUFwcGx5U29mdHdhcmUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2ZpbHRlcnMvRkVDb21wb3NpdGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RkVDb21wb3NpdGU6
OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmls
dGVycy9GRURyb3BTaGFkb3cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RkVEcm9wU2hhZG93Ojpw
bGF0Zm9ybUFwcGx5U29mdHdhcmUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRl
cnMvRkVNZXJnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGRU1lcmdlOjpwbGF0Zm9ybUFwcGx5
U29mdHdhcmUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVPZmZzZXQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6RkVPZmZzZXQ6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZSk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRVRpbGUuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6RkVUaWxlOjpwbGF0Zm9ybUFwcGx5U29mdHdhcmUpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvU291cmNlQWxwaGEuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6U291cmNlQWxwaGE6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZSk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvZmlsdGVycy9Tb3VyY2VHcmFwaGljLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlNvdXJjZUdyYXBoaWM6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZSk6CisgICAgICAgICogcGxhdGZv
cm0vbWFjL1RoZW1lTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6VGhlbWVNYWM6OmRyYXdDZWxs
T3JGb2N1c1JpbmdXaXRoVmlld0ludG9Db250ZXh0KToKKyAgICAgICAgKiByZW5kZXJpbmcvRmls
dGVyRWZmZWN0UmVuZGVyZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RmlsdGVyRWZmZWN0UmVu
ZGVyZXJIZWxwZXI6OmFwcGx5RmlsdGVyRWZmZWN0KToKKyAgICAgICAgKiByZW5kZXJpbmcvSW1h
Z2VRdWFsaXR5Q29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZVF1YWxpdHlD
b250cm9sbGVyOjpzaG91bGRQYWludEF0TG93UXVhbGl0eSk6CisgICAgICAgICogcmVuZGVyaW5n
L0ltYWdlUXVhbGl0eUNvbnRyb2xsZXIuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQm94
TW9kZWxPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94TW9kZWxPYmplY3Q6
OnNob3VsZFBhaW50QXRMb3dRdWFsaXR5KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveE1v
ZGVsT2JqZWN0OjpwYWludEZpbGxMYXllckV4dGVuZGVkKToKKyAgICAgICAgKiByZW5kZXJpbmcv
UmVuZGVyQm94TW9kZWxPYmplY3QuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyRW1iZWRk
ZWRPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRW1iZWRkZWRPYmplY3Q6OnBh
aW50U25hcHNob3RJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJFbWJlZGRlZE9iamVj
dDo6cGFpbnRDb250ZW50cyk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckVtYmVkZGVkT2Jq
ZWN0Lmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckltYWdlLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlckltYWdlOjpwYWludFJlcGxhY2VkKToKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlckltYWdlOjpwYWludEludG9SZWN0KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVySW1h
Z2VSZXNvdXJjZVN0eWxlSW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVySW1hZ2VS
ZXNvdXJjZVN0eWxlSW1hZ2U6OnNodXRkb3duKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlcklt
YWdlUmVzb3VyY2VTdHlsZUltYWdlOjppbWFnZSk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRl
ckxheWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjpkcmF3UGxhdGZvcm1S
ZXNpemVySW1hZ2UpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMaXN0TWFya2VyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxpc3RNYXJrZXI6OnBhaW50KToKKyAgICAgICAgKiBy
ZW5kZXJpbmcvUmVuZGVyU25hcHNob3R0ZWRQbHVnSW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyU25hcHNob3R0ZWRQbHVnSW46OnBhaW50U25hcHNob3QpOgorICAgICAgICAqIHJlbmRl
cmluZy9SZW5kZXJUaGVtZU1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lTWFj
OjpwYWludFByb2dyZXNzQmFyKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lTWFjOjpw
YWludFNuYXBzaG90dGVkUGx1Z2luT3ZlcmxheSk6CisgICAgICAgICogcmVuZGVyaW5nL3NoYXBl
cy9TaGFwZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTaGFwZTo6Y3JlYXRlUmFzdGVyU2hhcGUp
OgorICAgICAgICAqIHJlbmRlcmluZy9zaGFwZXMvU2hhcGVPdXRzaWRlSW5mby5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpTaGFwZU91dHNpZGVJbmZvOjpjcmVhdGVTaGFwZUZvckltYWdlKTogRGVs
ZXRlZC4KKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvTmluZVBpZWNlSW1hZ2UuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6TmluZVBpZWNlSW1hZ2U6OnBhaW50KToKKyAgICAgICAgKiByZW5kZXJp
bmcvc3ZnL1JlbmRlclNWR0ltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR0lt
YWdlOjpwYWludEZvcmVncm91bmQpOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZH
UmVzb3VyY2VGaWx0ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHUmVzb3VyY2VG
aWx0ZXI6OnBvc3RBcHBseVJlc291cmNlKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1NWR1Jl
bmRlcmluZ0NvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUmVuZGVyaW5nQ29udGV4
dDo6Y2xpcFRvSW1hZ2VCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUmVuZGVyaW5nQ29u
dGV4dDo6YnVmZmVyRm9yZWdyb3VuZCk6CisgICAgICAgICogc3ZnL2dyYXBoaWNzL2ZpbHRlcnMv
U1ZHRkVJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGRUltYWdlOjpwbGF0Zm9ybUFwcGx5
U29mdHdhcmUpOgorCiAyMDE1LTEwLTEzICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+
CiAKICAgICAgICAgQXZvaWQgdXNlbGVzcyBjb3BpZXMgaW4gcmFuZ2UtbG9vcHMgdGhhdCBhcmUg
dXNpbmcgJ2F1dG8nCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3Vy
Y2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggNDZlNjQ3MDAzN2FhMGZhNTlhYTNmNDJmYTBmZjA0
ZDAxYmY5YWFhZS4uNjMyNDNiMWNmYTI4Y2Y3NDg5NWJjZmNhMGEyYWRhOTgxODM5YzQyYSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwpAQCAtMSwzICsxLDIzIEBACisyMDE1LTEwLTEzICBTaW1vbiBGcmFzZXIgIDxzaW1v
bi5mcmFzZXJAYXBwbGUuY29tPgorCisgICAgICAgIENoYW5nZSBHcmFwaGljc0NvbnRleHQgaW1h
Z2UtZHJhd2luZyBmdW5jdGlvbnMgdG8gdGFrZSByZWZlcmVuY2VzCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTAxMDgKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDaGFuZ2UgR3JhcGhpY3NDb250ZXh0Ojpk
cmF3SW1hZ2UoKSwgZHJhd1RpbGVkSW1hZ2UoKSwgZHJhd0ltYWdlQnVmZmVyKCksIGNsaXBUb0lt
YWdlQnVmZmVyKCkKKyAgICAgICAgYW5kIGlzQ29tcGF0aWJsZVdpdGhCdWZmZXIoKSB0byB0YWtl
IHJlZmVyZW5jZXMsIGFuZCBhZGp1c3QgY2FsbGluZyBjb2RlLCBhZGRpbmcKKyAgICAgICAgbnVs
bC1jaGVja3Mgd2hlcmUgbmVjZXNzYXJ5LgorCisgICAgICAgICogU2hhcmVkL0NvbnRleHRNZW51
Q29udGV4dERhdGEuY3BwOgorICAgICAgICAoV2ViS2l0OjpDb250ZXh0TWVudUNvbnRleHREYXRh
OjpDb250ZXh0TWVudUNvbnRleHREYXRhKToKKyAgICAgICAgKiBTaGFyZWQvV2ViQ29yZUFyZ3Vt
ZW50Q29kZXJzLmNwcDoKKyAgICAgICAgKElQQzo6ZW5jb2RlSW1hZ2UpOgorICAgICAgICAoSVBD
OjplbmNvZGVPcHRpb25hbEltYWdlKToKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxDdXJz
b3I+OjplbmNvZGUpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHA6
CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lOjpjcmVhdGVTZWxlY3Rpb25TbmFwc2hvdCk6CisK
IDIwMTUtMTAtMTMgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBB
dm9pZCB1c2VsZXNzIGNvcGllcyBpbiByYW5nZS1sb29wcyB0aGF0IGFyZSB1c2luZyAnYXV0bycK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDcm9zc2ZhZGVWYWx1ZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ3Jvc3NmYWRlVmFsdWUuY3BwCmluZGV4IDNjNzE3Y2IxNWM4
OThhM2M1MDRlZDY0NjI3NzM1NzQ5MjVkNzc5OTguLjA3MzUwOGIwYTY3ZDlmNTQ4ZjgwNGYzZjQz
YTU2YTVhYmUxYmE4NzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDcm9zc2Zh
ZGVWYWx1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0Nyb3NzZmFkZVZhbHVlLmNw
cApAQCAtMTY1LDcgKzE2NSw3IEBAIFJlZlB0cjxJbWFnZT4gQ1NTQ3Jvc3NmYWRlVmFsdWU6Omlt
YWdlKFJlbmRlckVsZW1lbnQqIHJlbmRlcmVyLCBjb25zdCBGbG9hdFNpemUmCiAgICAgaWYgKCFm
cm9tSW1hZ2UgfHwgIXRvSW1hZ2UpCiAgICAgICAgIHJldHVybiBJbWFnZTo6bnVsbEltYWdlKCk7
CiAKLSAgICBtX2dlbmVyYXRlZEltYWdlID0gQ3Jvc3NmYWRlR2VuZXJhdGVkSW1hZ2U6OmNyZWF0
ZShmcm9tSW1hZ2UsIHRvSW1hZ2UsIG1fcGVyY2VudGFnZVZhbHVlLT5nZXRGbG9hdFZhbHVlKCks
IGZpeGVkU2l6ZShyZW5kZXJlciksIHNpemUpOworICAgIG1fZ2VuZXJhdGVkSW1hZ2UgPSBDcm9z
c2ZhZGVHZW5lcmF0ZWRJbWFnZTo6Y3JlYXRlKCpmcm9tSW1hZ2UsICp0b0ltYWdlLCBtX3BlcmNl
bnRhZ2VWYWx1ZS0+Z2V0RmxvYXRWYWx1ZSgpLCBmaXhlZFNpemUocmVuZGVyZXIpLCBzaXplKTsK
IAogICAgIHJldHVybiBtX2dlbmVyYXRlZEltYWdlOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvY3NzL0NTU0ZpbHRlckltYWdlVmFsdWUuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NT
U0ZpbHRlckltYWdlVmFsdWUuY3BwCmluZGV4IDdmZmY0YzQ5ODk0ZWQyZTQ0NWQ0MTA0MWRkN2Q0
N2QyYTVmNGRlODIuLmJlNzVkYzZlZjY2ZjEwYTQ4OWJkMjg0NmM2OTI0Yzc3MjYwNjAyM2IgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGaWx0ZXJJbWFnZVZhbHVlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRmlsdGVySW1hZ2VWYWx1ZS5jcHAKQEAgLTEyNCw4ICsx
MjQsOSBAQCBSZWZQdHI8SW1hZ2U+IENTU0ZpbHRlckltYWdlVmFsdWU6OmltYWdlKFJlbmRlckVs
ZW1lbnQqIHJlbmRlcmVyLCBjb25zdCBGbG9hdFNpegogICAgIHN0ZDo6dW5pcXVlX3B0cjxJbWFn
ZUJ1ZmZlcj4gdGV4dHVyZSA9IEltYWdlQnVmZmVyOjpjcmVhdGUoc2l6ZSwgVW5hY2NlbGVyYXRl
ZCk7CiAgICAgaWYgKCF0ZXh0dXJlKQogICAgICAgICByZXR1cm4gSW1hZ2U6Om51bGxJbWFnZSgp
OworCiAgICAgRmxvYXRSZWN0IGltYWdlUmVjdCA9IEZsb2F0UmVjdChGbG9hdFBvaW50KCksIHNp
emUpOwotICAgIHRleHR1cmUtPmNvbnRleHQoKS5kcmF3SW1hZ2UoaW1hZ2UsIENvbG9yU3BhY2VE
ZXZpY2VSR0IsIGltYWdlUmVjdCk7CisgICAgdGV4dHVyZS0+Y29udGV4dCgpLmRyYXdJbWFnZSgq
aW1hZ2UsIENvbG9yU3BhY2VEZXZpY2VSR0IsIGltYWdlUmVjdCk7CiAKICAgICBSZWZQdHI8Rmls
dGVyRWZmZWN0UmVuZGVyZXI+IGZpbHRlclJlbmRlcmVyID0gRmlsdGVyRWZmZWN0UmVuZGVyZXI6
OmNyZWF0ZSgpOwogICAgIGZpbHRlclJlbmRlcmVyLT5zZXRTb3VyY2VJbWFnZShXVEY6Om1vdmUo
dGV4dHVyZSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ2FudmFzRWxl
bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxDYW52YXNFbGVtZW50LmNwcAppbmRl
eCAwM2VjN2RmOTg5MzFhMzQyMWRlYmViYzRkYzBkMTU0YWE5NzJhODRjLi41NzI0YzFhYTJhN2Zk
YWJjYmEwNDYwNmMyNWEzMzQ5ZTI0MWIzMWExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxDYW52YXNFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxD
YW52YXNFbGVtZW50LmNwcApAQCAtMzg4LDkgKzM4OCw5IEBAIHZvaWQgSFRNTENhbnZhc0VsZW1l
bnQ6OnBhaW50KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgTGF5b3V0UmVjdCYgciwg
Ym9vCiAjaWYgRU5BQkxFKENTU19JTUFHRV9PUklFTlRBVElPTikKICAgICAgICAgICAgICAgICBv
cmllbnRhdGlvbkRlc2NyaXB0aW9uLnNldEltYWdlT3JpZW50YXRpb25FbnVtKHJlbmRlcmVyKCkt
PnN0eWxlKCkuaW1hZ2VPcmllbnRhdGlvbigpKTsKICNlbmRpZiAKLSAgICAgICAgICAgICAgICBj
b250ZXh0LmRyYXdJbWFnZShtX3ByZXNlbnRlZEltYWdlLmdldCgpLCBDb2xvclNwYWNlRGV2aWNl
UkdCLCBzbmFwcGVkSW50UmVjdChyKSwgSW1hZ2VQYWludGluZ09wdGlvbnMob3JpZW50YXRpb25E
ZXNjcmlwdGlvbiwgdXNlTG93UXVhbGl0eVNjYWxlKSk7CisgICAgICAgICAgICAgICAgY29udGV4
dC5kcmF3SW1hZ2UoKm1fcHJlc2VudGVkSW1hZ2UsIENvbG9yU3BhY2VEZXZpY2VSR0IsIHNuYXBw
ZWRJbnRSZWN0KHIpLCBJbWFnZVBhaW50aW5nT3B0aW9ucyhvcmllbnRhdGlvbkRlc2NyaXB0aW9u
LCB1c2VMb3dRdWFsaXR5U2NhbGUpKTsKICAgICAgICAgICAgIH0gZWxzZQotICAgICAgICAgICAg
ICAgIGNvbnRleHQuZHJhd0ltYWdlQnVmZmVyKGltYWdlQnVmZmVyLCBDb2xvclNwYWNlRGV2aWNl
UkdCLCBzbmFwcGVkSW50UmVjdChyKSwgdXNlTG93UXVhbGl0eVNjYWxlKTsKKyAgICAgICAgICAg
ICAgICBjb250ZXh0LmRyYXdJbWFnZUJ1ZmZlcigqaW1hZ2VCdWZmZXIsIENvbG9yU3BhY2VEZXZp
Y2VSR0IsIHNuYXBwZWRJbnRSZWN0KHIpLCB1c2VMb3dRdWFsaXR5U2NhbGUpOwogICAgICAgICB9
CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNS
ZW5kZXJpbmdDb250ZXh0MkQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFz
UmVuZGVyaW5nQ29udGV4dDJELmNwcAppbmRleCBiNDAxNWVmZjQ3MmU4NGU5MjliNTM5MTU1Mzk1
ZDRiNWNjZTVmYjUxLi5iMTlkOWUwZGM3MDNkNTU1M2Y3MzI2MjEzM2MyMGM5NGY2MjhjNzlmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250
ZXh0MkQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmlu
Z0NvbnRleHQyRC5jcHAKQEAgLTE0NDgsMTcgKzE0NDgsMTcgQEAgdm9pZCBDYW52YXNSZW5kZXJp
bmdDb250ZXh0MkQ6OmRyYXdJbWFnZShIVE1MSW1hZ2VFbGVtZW50KiBpbWFnZUVsZW1lbnQsIGNv
bnN0IEYKICAgICB9CiAKICAgICBpZiAocmVjdENvbnRhaW5zQ2FudmFzKG5vcm1hbGl6ZWREc3RS
ZWN0KSkgewotICAgICAgICBjLT5kcmF3SW1hZ2UoaW1hZ2UsIENvbG9yU3BhY2VEZXZpY2VSR0Is
IG5vcm1hbGl6ZWREc3RSZWN0LCBub3JtYWxpemVkU3JjUmVjdCwgSW1hZ2VQYWludGluZ09wdGlv
bnMob3AsIGJsZW5kTW9kZSkpOworICAgICAgICBjLT5kcmF3SW1hZ2UoKmltYWdlLCBDb2xvclNw
YWNlRGV2aWNlUkdCLCBub3JtYWxpemVkRHN0UmVjdCwgbm9ybWFsaXplZFNyY1JlY3QsIEltYWdl
UGFpbnRpbmdPcHRpb25zKG9wLCBibGVuZE1vZGUpKTsKICAgICAgICAgZGlkRHJhd0VudGlyZUNh
bnZhcygpOwogICAgIH0gZWxzZSBpZiAoaXNGdWxsQ2FudmFzQ29tcG9zaXRlTW9kZShvcCkpIHsK
LSAgICAgICAgZnVsbENhbnZhc0NvbXBvc2l0ZWREcmF3SW1hZ2UoaW1hZ2UsIENvbG9yU3BhY2VE
ZXZpY2VSR0IsIG5vcm1hbGl6ZWREc3RSZWN0LCBub3JtYWxpemVkU3JjUmVjdCwgb3ApOworICAg
ICAgICBmdWxsQ2FudmFzQ29tcG9zaXRlZERyYXdJbWFnZSgqaW1hZ2UsIENvbG9yU3BhY2VEZXZp
Y2VSR0IsIG5vcm1hbGl6ZWREc3RSZWN0LCBub3JtYWxpemVkU3JjUmVjdCwgb3ApOwogICAgICAg
ICBkaWREcmF3RW50aXJlQ2FudmFzKCk7CiAgICAgfSBlbHNlIGlmIChvcCA9PSBDb21wb3NpdGVD
b3B5KSB7CiAgICAgICAgIGNsZWFyQ2FudmFzKCk7Ci0gICAgICAgIGMtPmRyYXdJbWFnZShpbWFn
ZSwgQ29sb3JTcGFjZURldmljZVJHQiwgbm9ybWFsaXplZERzdFJlY3QsIG5vcm1hbGl6ZWRTcmNS
ZWN0LCBJbWFnZVBhaW50aW5nT3B0aW9ucyhvcCwgYmxlbmRNb2RlKSk7CisgICAgICAgIGMtPmRy
YXdJbWFnZSgqaW1hZ2UsIENvbG9yU3BhY2VEZXZpY2VSR0IsIG5vcm1hbGl6ZWREc3RSZWN0LCBu
b3JtYWxpemVkU3JjUmVjdCwgSW1hZ2VQYWludGluZ09wdGlvbnMob3AsIGJsZW5kTW9kZSkpOwog
ICAgICAgICBkaWREcmF3RW50aXJlQ2FudmFzKCk7CiAgICAgfSBlbHNlIHsKLSAgICAgICAgYy0+
ZHJhd0ltYWdlKGltYWdlLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBub3JtYWxpemVkRHN0UmVjdCwg
bm9ybWFsaXplZFNyY1JlY3QsIEltYWdlUGFpbnRpbmdPcHRpb25zKG9wLCBibGVuZE1vZGUpKTsK
KyAgICAgICAgYy0+ZHJhd0ltYWdlKCppbWFnZSwgQ29sb3JTcGFjZURldmljZVJHQiwgbm9ybWFs
aXplZERzdFJlY3QsIG5vcm1hbGl6ZWRTcmNSZWN0LCBJbWFnZVBhaW50aW5nT3B0aW9ucyhvcCwg
YmxlbmRNb2RlKSk7CiAgICAgICAgIGRpZERyYXcobm9ybWFsaXplZERzdFJlY3QpOwogICAgIH0K
ICAgICAKQEAgLTE1MzYsMTcgKzE1MzYsMTcgQEAgdm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0
MkQ6OmRyYXdJbWFnZShIVE1MQ2FudmFzRWxlbWVudCogc291cmNlQ2FudmFzLCBjb25zdAogI2Vu
ZGlmCiAKICAgICBpZiAocmVjdENvbnRhaW5zQ2FudmFzKGRzdFJlY3QpKSB7Ci0gICAgICAgIGMt
PmRyYXdJbWFnZUJ1ZmZlcihidWZmZXIsIENvbG9yU3BhY2VEZXZpY2VSR0IsIGRzdFJlY3QsIHNy
Y1JlY3QsIEltYWdlUGFpbnRpbmdPcHRpb25zKHN0YXRlKCkuZ2xvYmFsQ29tcG9zaXRlLCBzdGF0
ZSgpLmdsb2JhbEJsZW5kKSk7CisgICAgICAgIGMtPmRyYXdJbWFnZUJ1ZmZlcigqYnVmZmVyLCBD
b2xvclNwYWNlRGV2aWNlUkdCLCBkc3RSZWN0LCBzcmNSZWN0LCBJbWFnZVBhaW50aW5nT3B0aW9u
cyhzdGF0ZSgpLmdsb2JhbENvbXBvc2l0ZSwgc3RhdGUoKS5nbG9iYWxCbGVuZCkpOwogICAgICAg
ICBkaWREcmF3RW50aXJlQ2FudmFzKCk7CiAgICAgfSBlbHNlIGlmIChpc0Z1bGxDYW52YXNDb21w
b3NpdGVNb2RlKHN0YXRlKCkuZ2xvYmFsQ29tcG9zaXRlKSkgewotICAgICAgICBmdWxsQ2FudmFz
Q29tcG9zaXRlZERyYXdJbWFnZShidWZmZXIsIENvbG9yU3BhY2VEZXZpY2VSR0IsIGRzdFJlY3Qs
IHNyY1JlY3QsIHN0YXRlKCkuZ2xvYmFsQ29tcG9zaXRlKTsKKyAgICAgICAgZnVsbENhbnZhc0Nv
bXBvc2l0ZWREcmF3SW1hZ2UoKmJ1ZmZlciwgQ29sb3JTcGFjZURldmljZVJHQiwgZHN0UmVjdCwg
c3JjUmVjdCwgc3RhdGUoKS5nbG9iYWxDb21wb3NpdGUpOwogICAgICAgICBkaWREcmF3RW50aXJl
Q2FudmFzKCk7CiAgICAgfSBlbHNlIGlmIChzdGF0ZSgpLmdsb2JhbENvbXBvc2l0ZSA9PSBDb21w
b3NpdGVDb3B5KSB7CiAgICAgICAgIGNsZWFyQ2FudmFzKCk7Ci0gICAgICAgIGMtPmRyYXdJbWFn
ZUJ1ZmZlcihidWZmZXIsIENvbG9yU3BhY2VEZXZpY2VSR0IsIGRzdFJlY3QsIHNyY1JlY3QsIElt
YWdlUGFpbnRpbmdPcHRpb25zKHN0YXRlKCkuZ2xvYmFsQ29tcG9zaXRlLCBzdGF0ZSgpLmdsb2Jh
bEJsZW5kKSk7CisgICAgICAgIGMtPmRyYXdJbWFnZUJ1ZmZlcigqYnVmZmVyLCBDb2xvclNwYWNl
RGV2aWNlUkdCLCBkc3RSZWN0LCBzcmNSZWN0LCBJbWFnZVBhaW50aW5nT3B0aW9ucyhzdGF0ZSgp
Lmdsb2JhbENvbXBvc2l0ZSwgc3RhdGUoKS5nbG9iYWxCbGVuZCkpOwogICAgICAgICBkaWREcmF3
RW50aXJlQ2FudmFzKCk7CiAgICAgfSBlbHNlIHsKLSAgICAgICAgYy0+ZHJhd0ltYWdlQnVmZmVy
KGJ1ZmZlciwgQ29sb3JTcGFjZURldmljZVJHQiwgZHN0UmVjdCwgc3JjUmVjdCwgSW1hZ2VQYWlu
dGluZ09wdGlvbnMoc3RhdGUoKS5nbG9iYWxDb21wb3NpdGUsIHN0YXRlKCkuZ2xvYmFsQmxlbmQp
KTsKKyAgICAgICAgYy0+ZHJhd0ltYWdlQnVmZmVyKCpidWZmZXIsIENvbG9yU3BhY2VEZXZpY2VS
R0IsIGRzdFJlY3QsIHNyY1JlY3QsIEltYWdlUGFpbnRpbmdPcHRpb25zKHN0YXRlKCkuZ2xvYmFs
Q29tcG9zaXRlLCBzdGF0ZSgpLmdsb2JhbEJsZW5kKSk7CiAgICAgICAgIGRpZERyYXcoZHN0UmVj
dCk7CiAgICAgfQogfQpAQCAtMTcwOSw3ICsxNzA5LDcgQEAgc3RkOjp1bmlxdWVfcHRyPEltYWdl
QnVmZmVyPiBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmNyZWF0ZUNvbXBvc2l0aW5nQnVmZmVy
KGMKICAgICByZXR1cm4gSW1hZ2VCdWZmZXI6OmNyZWF0ZShidWZmZXJSZWN0LnNpemUoKSwgaXNB
Y2NlbGVyYXRlZCgpID8gQWNjZWxlcmF0ZWQgOiBVbmFjY2VsZXJhdGVkKTsKIH0KIAotdm9pZCBD
YW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmNvbXBvc2l0ZUJ1ZmZlcihJbWFnZUJ1ZmZlciogYnVm
ZmVyLCBjb25zdCBJbnRSZWN0JiBidWZmZXJSZWN0LCBDb21wb3NpdGVPcGVyYXRvciBvcCkKK3Zv
aWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpjb21wb3NpdGVCdWZmZXIoSW1hZ2VCdWZmZXIm
IGJ1ZmZlciwgY29uc3QgSW50UmVjdCYgYnVmZmVyUmVjdCwgQ29tcG9zaXRlT3BlcmF0b3Igb3Ap
CiB7CiAgICAgSW50UmVjdCBjYW52YXNSZWN0KDAsIDAsIGNhbnZhcygpLT53aWR0aCgpLCBjYW52
YXMoKS0+aGVpZ2h0KCkpOwogICAgIGNhbnZhc1JlY3QgPSBjYW52YXMoKS0+YmFzZVRyYW5zZm9y
bSgpLm1hcFJlY3QoY2FudmFzUmVjdCk7CkBAIC0xNzMwLDE3ICsxNzMwLDE3IEBAIHZvaWQgQ2Fu
dmFzUmVuZGVyaW5nQ29udGV4dDJEOjpjb21wb3NpdGVCdWZmZXIoSW1hZ2VCdWZmZXIqIGJ1ZmZl
ciwgY29uc3QgSW50UmVjCiAgICAgYy0+cmVzdG9yZSgpOwogfQogCi1zdGF0aWMgdm9pZCBkcmF3
SW1hZ2VUb0NvbnRleHQoSW1hZ2UqIGltYWdlLCBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIENv
bG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBjb25zdCBGbG9hdFJlY3QmIGRlc3QsIGNvbnN0IEZs
b2F0UmVjdCYgc3JjLCBDb21wb3NpdGVPcGVyYXRvciBvcCkKK3N0YXRpYyB2b2lkIGRyYXdJbWFn
ZVRvQ29udGV4dChJbWFnZSYgaW1hZ2UsIEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgQ29sb3JT
cGFjZSBzdHlsZUNvbG9yU3BhY2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdCwgY29uc3QgRmxvYXRS
ZWN0JiBzcmMsIENvbXBvc2l0ZU9wZXJhdG9yIG9wKQogewogICAgIGNvbnRleHQuZHJhd0ltYWdl
KGltYWdlLCBzdHlsZUNvbG9yU3BhY2UsIGRlc3QsIHNyYywgb3ApOwogfQogCi1zdGF0aWMgdm9p
ZCBkcmF3SW1hZ2VUb0NvbnRleHQoSW1hZ2VCdWZmZXIqIGltYWdlQnVmZmVyLCBHcmFwaGljc0Nv
bnRleHQmIGNvbnRleHQsIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBjb25zdCBGbG9hdFJl
Y3QmIGRlc3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjLCBDb21wb3NpdGVPcGVyYXRvciBvcCkKK3N0
YXRpYyB2b2lkIGRyYXdJbWFnZVRvQ29udGV4dChJbWFnZUJ1ZmZlciYgaW1hZ2VCdWZmZXIsIEdy
YXBoaWNzQ29udGV4dCYgY29udGV4dCwgQ29sb3JTcGFjZSBzdHlsZUNvbG9yU3BhY2UsIGNvbnN0
IEZsb2F0UmVjdCYgZGVzdCwgY29uc3QgRmxvYXRSZWN0JiBzcmMsIENvbXBvc2l0ZU9wZXJhdG9y
IG9wKQogewogICAgIGNvbnRleHQuZHJhd0ltYWdlQnVmZmVyKGltYWdlQnVmZmVyLCBzdHlsZUNv
bG9yU3BhY2UsIGRlc3QsIHNyYywgb3ApOwogfQogCi10ZW1wbGF0ZTxjbGFzcyBUPiB2b2lkICBD
YW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmZ1bGxDYW52YXNDb21wb3NpdGVkRHJhd0ltYWdlKFQq
IGltYWdlLCBDb2xvclNwYWNlIHN0eWxlQ29sb3JTcGFjZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0
LCBjb25zdCBGbG9hdFJlY3QmIHNyYywgQ29tcG9zaXRlT3BlcmF0b3Igb3ApCit0ZW1wbGF0ZTxj
bGFzcyBUPiB2b2lkICBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmZ1bGxDYW52YXNDb21wb3Np
dGVkRHJhd0ltYWdlKFQmIGltYWdlLCBDb2xvclNwYWNlIHN0eWxlQ29sb3JTcGFjZSwgY29uc3Qg
RmxvYXRSZWN0JiBkZXN0LCBjb25zdCBGbG9hdFJlY3QmIHNyYywgQ29tcG9zaXRlT3BlcmF0b3Ig
b3ApCiB7CiAgICAgQVNTRVJUKGlzRnVsbENhbnZhc0NvbXBvc2l0ZU1vZGUob3ApKTsKIApAQCAt
MTc2OCw3ICsxNzY4LDcgQEAgdGVtcGxhdGU8Y2xhc3MgVD4gdm9pZCAgQ2FudmFzUmVuZGVyaW5n
Q29udGV4dDJEOjpmdWxsQ2FudmFzQ29tcG9zaXRlZERyYXdJbWFnZSgKICAgICBidWZmZXItPmNv
bnRleHQoKS5jb25jYXRDVE0oZWZmZWN0aXZlVHJhbnNmb3JtKTsKICAgICBkcmF3SW1hZ2VUb0Nv
bnRleHQoaW1hZ2UsIGJ1ZmZlci0+Y29udGV4dCgpLCBzdHlsZUNvbG9yU3BhY2UsIGFkanVzdGVk
RGVzdCwgc3JjLCBDb21wb3NpdGVTb3VyY2VPdmVyKTsKIAotICAgIGNvbXBvc2l0ZUJ1ZmZlcihi
dWZmZXIuZ2V0KCksIGJ1ZmZlclJlY3QsIG9wKTsKKyAgICBjb21wb3NpdGVCdWZmZXIoKmJ1ZmZl
ciwgYnVmZmVyUmVjdCwgb3ApOwogfQogCiB2b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6
cHJlcGFyZUdyYWRpZW50Rm9yRGFzaGJvYXJkKENhbnZhc0dyYWRpZW50JiBncmFkaWVudCkgY29u
c3QKQEAgLTI0MTksNyArMjQxOSw3IEBAIHZvaWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpk
cmF3VGV4dEludGVybmFsKGNvbnN0IFN0cmluZyYgdGV4dCwgZmxvYXQgeCwgZmxvCiAKICAgICAv
LyBUaGUgc2xvcCBidWlsdCBpbiB0byB0aGlzIG1hc2sgcmVjdCBtYXRjaGVzIHRoZSBoZXVyaXN0
aWMgdXNlZCBpbiBGb250Q0dXaW4uY3BwIGZvciBHREkgdGV4dC4KICAgICBGbG9hdFJlY3QgdGV4
dFJlY3QgPSBGbG9hdFJlY3QobG9jYXRpb24ueCgpIC0gZm9udE1ldHJpY3MuaGVpZ2h0KCkgLyAy
LCBsb2NhdGlvbi55KCkgLSBmb250TWV0cmljcy5hc2NlbnQoKSAtIGZvbnRNZXRyaWNzLmxpbmVH
YXAoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGggKyBmb250TWV0
cmljcy5oZWlnaHQoKSwgZm9udE1ldHJpY3MubGluZVNwYWNpbmcoKSk7CisgICAgICAgIHdpZHRo
ICsgZm9udE1ldHJpY3MuaGVpZ2h0KCksIGZvbnRNZXRyaWNzLmxpbmVTcGFjaW5nKCkpOwogICAg
IGlmICghZmlsbCkKICAgICAgICAgaW5mbGF0ZVN0cm9rZVJlY3QodGV4dFJlY3QpOwogCkBAIC0y
NDYxLDYgKzI0NjEsOCBAQCB2b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6ZHJhd1RleHRJ
bnRlcm5hbChjb25zdCBTdHJpbmcmIHRleHQsIGZsb2F0IHgsIGZsbwogICAgICAgICB9CiAKICAg
ICAgICAgc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPiBtYXNrSW1hZ2UgPSBjLT5jcmVhdGVD
b21wYXRpYmxlQnVmZmVyKG1hc2tSZWN0LnNpemUoKSk7CisgICAgICAgIGlmICghbWFza0ltYWdl
KQorICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgIEdyYXBoaWNzQ29udGV4dCYgbWFza0lt
YWdlQ29udGV4dCA9IG1hc2tJbWFnZS0+Y29udGV4dCgpOwogCkBAIC0yNDg0LDcgKzI0ODYsNyBA
QCB2b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6ZHJhd1RleHRJbnRlcm5hbChjb25zdCBT
dHJpbmcmIHRleHQsIGZsb2F0IHgsIGZsbwogICAgICAgICB9CiAKICAgICAgICAgR3JhcGhpY3ND
b250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKCpjKTsKLSAgICAgICAgYy0+Y2xpcFRvSW1hZ2VC
dWZmZXIobWFza0ltYWdlLmdldCgpLCBtYXNrUmVjdCk7CisgICAgICAgIGMtPmNsaXBUb0ltYWdl
QnVmZmVyKCptYXNrSW1hZ2UsIG1hc2tSZWN0KTsKICAgICAgICAgZHJhd1N0eWxlLmFwcGx5Rmls
bENvbG9yKGMpOwogICAgICAgICBjLT5maWxsUmVjdChtYXNrUmVjdCk7CiAgICAgICAgIHJldHVy
bjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmlu
Z0NvbnRleHQyRC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5n
Q29udGV4dDJELmgKaW5kZXggYTQ0ZTZiOTMwZGM2NWNlNDE0MDhlMDNiMjU0NTFmNzAwY2JhMmEx
OS4uODczZjY0M2VlODcxOTliZjZjNDhhNjM4NDAyYjkyODQxNTk0NTNkOSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmgKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmgK
QEAgLTM2MywxMSArMzYzLDExIEBAIHByaXZhdGU6CiAKICAgICB0ZW1wbGF0ZTxjbGFzcyBUPiBJ
bnRSZWN0IGNhbGN1bGF0ZUNvbXBvc2l0aW5nQnVmZmVyUmVjdChjb25zdCBUJiwgSW50U2l6ZSop
OwogICAgIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4gY3JlYXRlQ29tcG9zaXRpbmdCdWZm
ZXIoY29uc3QgSW50UmVjdCYpOwotICAgIHZvaWQgY29tcG9zaXRlQnVmZmVyKEltYWdlQnVmZmVy
KiwgY29uc3QgSW50UmVjdCYsIENvbXBvc2l0ZU9wZXJhdG9yKTsKKyAgICB2b2lkIGNvbXBvc2l0
ZUJ1ZmZlcihJbWFnZUJ1ZmZlciYsIGNvbnN0IEludFJlY3QmLCBDb21wb3NpdGVPcGVyYXRvcik7
CiAKICAgICB2b2lkIGluZmxhdGVTdHJva2VSZWN0KEZsb2F0UmVjdCYpIGNvbnN0OwogCi0gICAg
dGVtcGxhdGU8Y2xhc3MgVD4gdm9pZCBmdWxsQ2FudmFzQ29tcG9zaXRlZERyYXdJbWFnZShUKiwg
Q29sb3JTcGFjZSwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRSZWN0JiwgQ29tcG9zaXRl
T3BlcmF0b3IpOworICAgIHRlbXBsYXRlPGNsYXNzIFQ+IHZvaWQgZnVsbENhbnZhc0NvbXBvc2l0
ZWREcmF3SW1hZ2UoVCYsIENvbG9yU3BhY2UsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEZsb2F0
UmVjdCYsIENvbXBvc2l0ZU9wZXJhdG9yKTsKIAogICAgIHZvaWQgcHJlcGFyZUdyYWRpZW50Rm9y
RGFzaGJvYXJkKENhbnZhc0dyYWRpZW50JiBncmFkaWVudCkgY29uc3Q7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMMlJlbmRlcmluZ0NvbnRleHQuY3BwIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0wyUmVuZGVyaW5nQ29udGV4dC5jcHAKaW5k
ZXggNTNiMjc4ZGJkYWNmZGY3ODFlOGFiMTMyMjE1YmE0MzllYTUyMDMxZC4uYWNjNjdkOGQzNGVl
ZmVkMDdmMmYyNjU5YTliNjQ5NDI4Mjc3Y2I3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aHRtbC9jYW52YXMvV2ViR0wyUmVuZGVyaW5nQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9jYW52YXMvV2ViR0wyUmVuZGVyaW5nQ29udGV4dC5jcHAKQEAgLTE0MTksOCArMTQx
OSwxMSBAQCB2b2lkIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OnRleFN1YkltYWdlMkQoR0MzRGVu
dW0gdGFyZ2V0LCBHQzNEaW50IGxldmVsLCBHQzNEaQogICAgICAgICByZXR1cm47CiAgICAgCiAg
ICAgUmVmUHRyPEltYWdlPiBpbWFnZUZvclJlbmRlciA9IGltYWdlLT5jYWNoZWRJbWFnZSgpLT5p
bWFnZUZvclJlbmRlcmVyKGltYWdlLT5yZW5kZXJlcigpKTsKKyAgICBpZiAoIWltYWdlRm9yUmVu
ZGVyKQorICAgICAgICByZXR1cm47CisKICAgICBpZiAoaW1hZ2VGb3JSZW5kZXItPmlzU1ZHSW1h
Z2UoKSkKLSAgICAgICAgaW1hZ2VGb3JSZW5kZXIgPSBkcmF3SW1hZ2VJbnRvQnVmZmVyKGltYWdl
Rm9yUmVuZGVyLmdldCgpLCBpbWFnZS0+d2lkdGgoKSwgaW1hZ2UtPmhlaWdodCgpLCAxKTsKKyAg
ICAgICAgaW1hZ2VGb3JSZW5kZXIgPSBkcmF3SW1hZ2VJbnRvQnVmZmVyKCppbWFnZUZvclJlbmRl
ciwgaW1hZ2UtPndpZHRoKCksIGltYWdlLT5oZWlnaHQoKSwgMSk7CiAgICAgCiAgICAgaWYgKCFp
bWFnZUZvclJlbmRlciB8fCAhdmFsaWRhdGVUZXhGdW5jKCJ0ZXhTdWJJbWFnZTJEIiwgVGV4U3Vi
SW1hZ2UsIFNvdXJjZUhUTUxJbWFnZUVsZW1lbnQsIHRhcmdldCwgbGV2ZWwsIEdyYXBoaWNzQ29u
dGV4dDNEOjpOT05FLCBpbWFnZUZvclJlbmRlci0+d2lkdGgoKSwgaW1hZ2VGb3JSZW5kZXItPmhl
aWdodCgpLCAwLCBmb3JtYXQsIHR5cGUsIHhvZmZzZXQsIHlvZmZzZXQpKQogICAgICAgICByZXR1
cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmlu
Z0NvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdD
b250ZXh0LmNwcAppbmRleCBiNmY3YzM1NjcyNGU5M2QyMjI1MmQ1YWNiMmVjMzE4NTg1NDMxYmY3
Li5lYzExNTJhMzQ4MjFjYjAyODM3YzMyYmI2NmM2ZmUxYzZlYjE5MjM1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5jcHAKQEAg
LTYyMyw4ICs2MjMsMTEgQEAgdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnRleFN1YkltYWdl
MkQoR0MzRGVudW0gdGFyZ2V0LCBHQzNEaW50IGxldmVsLCBHQzNEaW4KICAgICAgICAgcmV0dXJu
OwogICAgIAogICAgIFJlZlB0cjxJbWFnZT4gaW1hZ2VGb3JSZW5kZXIgPSBpbWFnZS0+Y2FjaGVk
SW1hZ2UoKS0+aW1hZ2VGb3JSZW5kZXJlcihpbWFnZS0+cmVuZGVyZXIoKSk7CisgICAgaWYgKCFp
bWFnZUZvclJlbmRlcikKKyAgICAgICAgcmV0dXJuOworCiAgICAgaWYgKGltYWdlRm9yUmVuZGVy
LT5pc1NWR0ltYWdlKCkpCi0gICAgICAgIGltYWdlRm9yUmVuZGVyID0gZHJhd0ltYWdlSW50b0J1
ZmZlcihpbWFnZUZvclJlbmRlci5nZXQoKSwgaW1hZ2UtPndpZHRoKCksIGltYWdlLT5oZWlnaHQo
KSwgMSk7CisgICAgICAgIGltYWdlRm9yUmVuZGVyID0gZHJhd0ltYWdlSW50b0J1ZmZlcigqaW1h
Z2VGb3JSZW5kZXIsIGltYWdlLT53aWR0aCgpLCBpbWFnZS0+aGVpZ2h0KCksIDEpOwogICAgIAog
ICAgIGlmICghaW1hZ2VGb3JSZW5kZXIgfHwgIXZhbGlkYXRlVGV4RnVuYygidGV4U3ViSW1hZ2Uy
RCIsIFRleFN1YkltYWdlLCBTb3VyY2VIVE1MSW1hZ2VFbGVtZW50LCB0YXJnZXQsIGxldmVsLCBm
b3JtYXQsIGltYWdlRm9yUmVuZGVyLT53aWR0aCgpLCBpbWFnZUZvclJlbmRlci0+aGVpZ2h0KCks
IDAsIGZvcm1hdCwgdHlwZSwgeG9mZnNldCwgeW9mZnNldCkpCiAgICAgICAgIHJldHVybjsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4
dEJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250
ZXh0QmFzZS5jcHAKaW5kZXggYTRhYTdhN2IzOWE4Mjk4OWVhMzE4YjRjMDc1OGM3YjI0OWRiOGI5
Ni4uNjZiZmM5MDVlMmFjYmMwYzIzODg1ODcyNmQ4NGIzY2ZmMDdlNWJjYyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFz
ZS5jcHAKQEAgLTMxNjQsNyArMzE2NCw3IEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFz
ZTo6dGV4SW1hZ2UyRChHQzNEZW51bSB0YXJnZXQsIEdDM0RpbnQgbGV2ZWwsIEdDM0RlCiAgICAg
ICAgIG1fY29udGV4dC0+cGl4ZWxTdG9yZWkoR3JhcGhpY3NDb250ZXh0M0Q6OlVOUEFDS19BTElH
Tk1FTlQsIG1fdW5wYWNrQWxpZ25tZW50KTsKIH0KIAotUGFzc1JlZlB0cjxJbWFnZT4gV2ViR0xS
ZW5kZXJpbmdDb250ZXh0QmFzZTo6ZHJhd0ltYWdlSW50b0J1ZmZlcihJbWFnZSogaW1hZ2UsIGlu
dCB3aWR0aCwgaW50IGhlaWdodCwgaW50IGRldmljZVNjYWxlRmFjdG9yKQorUGFzc1JlZlB0cjxJ
bWFnZT4gV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6ZHJhd0ltYWdlSW50b0J1ZmZlcihJbWFn
ZSYgaW1hZ2UsIGludCB3aWR0aCwgaW50IGhlaWdodCwgaW50IGRldmljZVNjYWxlRmFjdG9yKQog
ewogICAgIEludFNpemUgc2l6ZSh3aWR0aCwgaGVpZ2h0KTsKICAgICBzaXplLnNjYWxlKGRldmlj
ZVNjYWxlRmFjdG9yKTsKQEAgLTMxNzQsNyArMzE3NCw3IEBAIFBhc3NSZWZQdHI8SW1hZ2U+IFdl
YkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmRyYXdJbWFnZUludG9CdWZmZXIoSW1hZ2UqIGltYWdl
LCBpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIAotICAgIEZsb2F0UmVjdCBzcmNS
ZWN0KEZsb2F0UG9pbnQoKSwgaW1hZ2UtPnNpemUoKSk7CisgICAgRmxvYXRSZWN0IHNyY1JlY3Qo
RmxvYXRQb2ludCgpLCBpbWFnZS5zaXplKCkpOwogICAgIEZsb2F0UmVjdCBkZXN0UmVjdChGbG9h
dFBvaW50KCksIHNpemUpOwogICAgIGJ1Zi0+Y29udGV4dCgpLmRyYXdJbWFnZShpbWFnZSwgQ29s
b3JTcGFjZURldmljZVJHQiwgZGVzdFJlY3QsIHNyY1JlY3QpOwogICAgIHJldHVybiBidWYtPmNv
cHlJbWFnZShJbWFnZUJ1ZmZlcjo6ZmFzdENvcHlJbWFnZU1vZGUoKSk7CkBAIC0zMTg4LDggKzMx
ODgsMTEgQEAgdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp0ZXhJbWFnZTJEKEdDM0Rl
bnVtIHRhcmdldCwgR0MzRGludCBsZXZlbCwgR0MzRGUKICAgICAgICAgcmV0dXJuOwogCiAgICAg
UmVmUHRyPEltYWdlPiBpbWFnZUZvclJlbmRlciA9IGltYWdlLT5jYWNoZWRJbWFnZSgpLT5pbWFn
ZUZvclJlbmRlcmVyKGltYWdlLT5yZW5kZXJlcigpKTsKKyAgICBpZiAoIWltYWdlRm9yUmVuZGVy
KQorICAgICAgICByZXR1cm47CisKICAgICBpZiAoaW1hZ2VGb3JSZW5kZXItPmlzU1ZHSW1hZ2Uo
KSkKLSAgICAgICAgaW1hZ2VGb3JSZW5kZXIgPSBkcmF3SW1hZ2VJbnRvQnVmZmVyKGltYWdlRm9y
UmVuZGVyLmdldCgpLCBpbWFnZS0+d2lkdGgoKSwgaW1hZ2UtPmhlaWdodCgpLCAxKTsKKyAgICAg
ICAgaW1hZ2VGb3JSZW5kZXIgPSBkcmF3SW1hZ2VJbnRvQnVmZmVyKCppbWFnZUZvclJlbmRlciwg
aW1hZ2UtPndpZHRoKCksIGltYWdlLT5oZWlnaHQoKSwgMSk7CiAKICAgICBpZiAoIWltYWdlRm9y
UmVuZGVyIHx8ICF2YWxpZGF0ZVRleEZ1bmMoInRleEltYWdlMkQiLCBUZXhJbWFnZSwgU291cmNl
SFRNTEltYWdlRWxlbWVudCwgdGFyZ2V0LCBsZXZlbCwgaW50ZXJuYWxmb3JtYXQsIGltYWdlRm9y
UmVuZGVyLT53aWR0aCgpLCBpbWFnZUZvclJlbmRlci0+aGVpZ2h0KCksIDAsIGZvcm1hdCwgdHlw
ZSwgMCwgMCkpCiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuaCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuaAppbmRleCBlMDljMmE0MzQ2YzVh
YTFiNDliMzE4OTUzNDI2MDAyNzJlNjNmOWVkLi5jYTA1OGIxYmUwZTk0ZGRkNGVmYjE5MWQ5MmUx
ZjY2OTJhMzZlZTY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJH
TFJlbmRlcmluZ0NvbnRleHRCYXNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMv
V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5oCkBAIC00MjYsNyArNDI2LDcgQEAgcHJvdGVjdGVk
OgogICAgIC8vIEFkZHMgYSBjb21wcmVzc2VkIHRleHR1cmUgZm9ybWF0LgogICAgIHZvaWQgYWRk
Q29tcHJlc3NlZFRleHR1cmVGb3JtYXQoR0MzRGVudW0pOwogCi0gICAgUGFzc1JlZlB0cjxJbWFn
ZT4gZHJhd0ltYWdlSW50b0J1ZmZlcihJbWFnZSosIGludCB3aWR0aCwgaW50IGhlaWdodCwgaW50
IGRldmljZVNjYWxlRmFjdG9yKTsKKyAgICBQYXNzUmVmUHRyPEltYWdlPiBkcmF3SW1hZ2VJbnRv
QnVmZmVyKEltYWdlJiwgaW50IHdpZHRoLCBpbnQgaGVpZ2h0LCBpbnQgZGV2aWNlU2NhbGVGYWN0
b3IpOwogCiAjaWYgRU5BQkxFKFZJREVPKQogICAgIFBhc3NSZWZQdHI8SW1hZ2U+IHZpZGVvRnJh
bWVUb0ltYWdlKEhUTUxWaWRlb0VsZW1lbnQqLCBCYWNraW5nU3RvcmVDb3B5LCBFeGNlcHRpb25D
b2RlJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxWaWV3LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbFZpZXcuY3BwCmluZGV4IDA5Nzg4YjBm
YzMzOTNiMGU5MWUwMmJmMzIzOTdmYjBkYTQ3NWE2OTkuLjE1YTBiYjFkMGMyNGRkMzFlY2MyOTNk
NDc4MTZkMjViNGJjYWM4MzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Nj
cm9sbFZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbFZpZXcuY3Bw
CkBAIC0xMTc4LDEwICsxMTc4LDEyIEBAIHZvaWQgU2Nyb2xsVmlldzo6cGFpbnRTY3JvbGxiYXJz
KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgSW50UmVjdCYgcmVjdCkKIHZvaWQgU2Ny
b2xsVmlldzo6cGFpbnRQYW5TY3JvbGxJY29uKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkKIHsK
ICAgICBzdGF0aWMgSW1hZ2UqIHBhblNjcm9sbEljb24gPSBJbWFnZTo6bG9hZFBsYXRmb3JtUmVz
b3VyY2UoInBhbkljb24iKS5sZWFrUmVmKCk7CisgICAgaWYgKCFwYW5TY3JvbGxJY29uKQorICAg
ICAgICByZXR1cm47CiAgICAgSW50UG9pbnQgaWNvbkdDUG9pbnQgPSBtX3BhblNjcm9sbEljb25Q
b2ludDsKICAgICBpZiAocGFyZW50KCkpCiAgICAgICAgIGljb25HQ1BvaW50ID0gcGFyZW50KCkt
PndpbmRvd1RvQ29udGVudHMoaWNvbkdDUG9pbnQpOwotICAgIGNvbnRleHQuZHJhd0ltYWdlKHBh
blNjcm9sbEljb24sIENvbG9yU3BhY2VEZXZpY2VSR0IsIGljb25HQ1BvaW50KTsKKyAgICBjb250
ZXh0LmRyYXdJbWFnZSgqcGFuU2Nyb2xsSWNvbiwgQ29sb3JTcGFjZURldmljZVJHQiwgaWNvbkdD
UG9pbnQpOwogfQogCiB2b2lkIFNjcm9sbFZpZXc6OnBhaW50KEdyYXBoaWNzQ29udGV4dCYgY29u
dGV4dCwgY29uc3QgSW50UmVjdCYgcmVjdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0Nyb3NzZmFkZUdlbmVyYXRlZEltYWdlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Nyb3NzZmFkZUdlbmVyYXRlZEltYWdlLmNwcAppbmRleCA0
YWYyZTQ3MTE1NTI3MGQ1MGM4YWU4N2QxYmY5NDI4M2UxYmY2ZmJlLi42ODMyYjg5OTdmNzVhZTQ5
MmY1MjBmNTBjOTc2ZTZkNDIxNTQ5MWJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9Dcm9zc2ZhZGVHZW5lcmF0ZWRJbWFnZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ3Jvc3NmYWRlR2VuZXJhdGVkSW1hZ2UuY3BwCkBAIC0z
Miw3ICszMiw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotQ3Jvc3NmYWRlR2VuZXJhdGVk
SW1hZ2U6OkNyb3NzZmFkZUdlbmVyYXRlZEltYWdlKEltYWdlKiBmcm9tSW1hZ2UsIEltYWdlKiB0
b0ltYWdlLCBmbG9hdCBwZXJjZW50YWdlLCBjb25zdCBGbG9hdFNpemUmIGNyb3NzZmFkZVNpemUs
IGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSkKK0Nyb3NzZmFkZUdlbmVyYXRlZEltYWdlOjpDcm9zc2Zh
ZGVHZW5lcmF0ZWRJbWFnZShJbWFnZSYgZnJvbUltYWdlLCBJbWFnZSYgdG9JbWFnZSwgZmxvYXQg
cGVyY2VudGFnZSwgY29uc3QgRmxvYXRTaXplJiBjcm9zc2ZhZGVTaXplLCBjb25zdCBGbG9hdFNp
emUmIHNpemUpCiAgICAgOiBtX2Zyb21JbWFnZShmcm9tSW1hZ2UpCiAgICAgLCBtX3RvSW1hZ2Uo
dG9JbWFnZSkKICAgICAsIG1fcGVyY2VudGFnZShwZXJjZW50YWdlKQpAQCAtNDEsMTIgKzQxLDEy
IEBAIENyb3NzZmFkZUdlbmVyYXRlZEltYWdlOjpDcm9zc2ZhZGVHZW5lcmF0ZWRJbWFnZShJbWFn
ZSogZnJvbUltYWdlLCBJbWFnZSogdG9JbWFnCiAgICAgc2V0Q29udGFpbmVyU2l6ZShzaXplKTsK
IH0KIAotc3RhdGljIHZvaWQgZHJhd0Nyb3NzZmFkZVN1YmltYWdlKEdyYXBoaWNzQ29udGV4dCYg
Y29udGV4dCwgSW1hZ2UqIGltYWdlLCBDb21wb3NpdGVPcGVyYXRvciBvcGVyYXRpb24sIGZsb2F0
IG9wYWNpdHksIGNvbnN0IEZsb2F0U2l6ZSYgdGFyZ2V0U2l6ZSkKK3N0YXRpYyB2b2lkIGRyYXdD
cm9zc2ZhZGVTdWJpbWFnZShHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIEltYWdlJiBpbWFnZSwg
Q29tcG9zaXRlT3BlcmF0b3Igb3BlcmF0aW9uLCBmbG9hdCBvcGFjaXR5LCBjb25zdCBGbG9hdFNp
emUmIHRhcmdldFNpemUpCiB7Ci0gICAgRmxvYXRTaXplIGltYWdlU2l6ZSA9IGltYWdlLT5zaXpl
KCk7CisgICAgRmxvYXRTaXplIGltYWdlU2l6ZSA9IGltYWdlLnNpemUoKTsKIAogICAgIC8vIFNW
R0ltYWdlIHJlc2V0cyB0aGUgb3BhY2l0eSB3aGVuIHBhaW50aW5nLCBzbyB3ZSBoYXZlIHRvIHVz
ZSB0cmFuc3BhcmVuY3kgbGF5ZXJzIHRvIGFjY3VyYXRlbHkgcGFpbnQgb25lIGF0IGEgZ2l2ZW4g
b3BhY2l0eS4KLSAgICBib29sIHVzZVRyYW5zcGFyZW5jeUxheWVyID0gaW1hZ2UtPmlzU1ZHSW1h
Z2UoKTsKKyAgICBib29sIHVzZVRyYW5zcGFyZW5jeUxheWVyID0gaW1hZ2UuaXNTVkdJbWFnZSgp
OwogCiAgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKGNvbnRleHQpOwog
CkBAIC02OCw3ICs2OCw3IEBAIHN0YXRpYyB2b2lkIGRyYXdDcm9zc2ZhZGVTdWJpbWFnZShHcmFw
aGljc0NvbnRleHQmIGNvbnRleHQsIEltYWdlKiBpbWFnZSwgQ29tcG9zCiB2b2lkIENyb3NzZmFk
ZUdlbmVyYXRlZEltYWdlOjpkcmF3Q3Jvc3NmYWRlKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkK
IHsKICAgICAvLyBEcmF3IG5vdGhpbmcgaWYgZWl0aGVyIG9mIHRoZSBpbWFnZXMgaGFzbid0IGxv
YWRlZCB5ZXQuCi0gICAgaWYgKG1fZnJvbUltYWdlID09IEltYWdlOjpudWxsSW1hZ2UoKSB8fCBt
X3RvSW1hZ2UgPT0gSW1hZ2U6Om51bGxJbWFnZSgpKQorICAgIGlmIChtX2Zyb21JbWFnZS5wdHIo
KSA9PSBJbWFnZTo6bnVsbEltYWdlKCkgfHwgbV90b0ltYWdlLnB0cigpID09IEltYWdlOjpudWxs
SW1hZ2UoKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZl
ciBzdGF0ZVNhdmVyKGNvbnRleHQpOwpAQCAtNzYsOCArNzYsOCBAQCB2b2lkIENyb3NzZmFkZUdl
bmVyYXRlZEltYWdlOjpkcmF3Q3Jvc3NmYWRlKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkKICAg
ICBjb250ZXh0LmNsaXAoRmxvYXRSZWN0KEZsb2F0UG9pbnQoKSwgbV9jcm9zc2ZhZGVTaXplKSk7
CiAgICAgY29udGV4dC5iZWdpblRyYW5zcGFyZW5jeUxheWVyKDEpOwogCi0gICAgZHJhd0Nyb3Nz
ZmFkZVN1YmltYWdlKGNvbnRleHQsIG1fZnJvbUltYWdlLCBDb21wb3NpdGVTb3VyY2VPdmVyLCAx
IC0gbV9wZXJjZW50YWdlLCBtX2Nyb3NzZmFkZVNpemUpOwotICAgIGRyYXdDcm9zc2ZhZGVTdWJp
bWFnZShjb250ZXh0LCBtX3RvSW1hZ2UsIENvbXBvc2l0ZVBsdXNMaWdodGVyLCBtX3BlcmNlbnRh
Z2UsIG1fY3Jvc3NmYWRlU2l6ZSk7CisgICAgZHJhd0Nyb3NzZmFkZVN1YmltYWdlKGNvbnRleHQs
IG1fZnJvbUltYWdlLmdldCgpLCBDb21wb3NpdGVTb3VyY2VPdmVyLCAxIC0gbV9wZXJjZW50YWdl
LCBtX2Nyb3NzZmFkZVNpemUpOworICAgIGRyYXdDcm9zc2ZhZGVTdWJpbWFnZShjb250ZXh0LCBt
X3RvSW1hZ2UuZ2V0KCksIENvbXBvc2l0ZVBsdXNMaWdodGVyLCBtX3BlcmNlbnRhZ2UsIG1fY3Jv
c3NmYWRlU2l6ZSk7CiAKICAgICBjb250ZXh0LmVuZFRyYW5zcGFyZW5jeUxheWVyKCk7CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Dcm9zc2ZhZGVHZW5l
cmF0ZWRJbWFnZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ3Jvc3NmYWRl
R2VuZXJhdGVkSW1hZ2UuaAppbmRleCAzNTlkMjlhYjUxMDM0ZDBhOTNjNGU3ZTQ0NDZiNWE5MTk5
OGRiOTMxLi44NDZmMjk2ZDM5OGU5YTI5MmJhZWI2YzMyZWMxMDFiZWI4NjM3ZTM4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Dcm9zc2ZhZGVHZW5lcmF0ZWRJ
bWFnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Nyb3NzZmFkZUdl
bmVyYXRlZEltYWdlLmgKQEAgLTM2LDcgKzM2LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBj
bGFzcyBDcm9zc2ZhZGVHZW5lcmF0ZWRJbWFnZSBmaW5hbCA6IHB1YmxpYyBHZW5lcmF0ZWRJbWFn
ZSB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxDcm9zc2ZhZGVHZW5lcmF0ZWRJbWFnZT4gY3Jl
YXRlKEltYWdlKiBmcm9tSW1hZ2UsIEltYWdlKiB0b0ltYWdlLCBmbG9hdCBwZXJjZW50YWdlLCBj
b25zdCBGbG9hdFNpemUmIGNyb3NzZmFkZVNpemUsIGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSkKKyAg
ICBzdGF0aWMgUmVmPENyb3NzZmFkZUdlbmVyYXRlZEltYWdlPiBjcmVhdGUoSW1hZ2UmIGZyb21J
bWFnZSwgSW1hZ2UmIHRvSW1hZ2UsIGZsb2F0IHBlcmNlbnRhZ2UsIGNvbnN0IEZsb2F0U2l6ZSYg
Y3Jvc3NmYWRlU2l6ZSwgY29uc3QgRmxvYXRTaXplJiBzaXplKQogICAgIHsKICAgICAgICAgcmV0
dXJuIGFkb3B0UmVmKCpuZXcgQ3Jvc3NmYWRlR2VuZXJhdGVkSW1hZ2UoZnJvbUltYWdlLCB0b0lt
YWdlLCBwZXJjZW50YWdlLCBjcm9zc2ZhZGVTaXplLCBzaXplKSk7CiAgICAgfQpAQCAtNTIsMTMg
KzUyLDEzIEBAIHByb3RlY3RlZDoKICAgICB2aXJ0dWFsIHZvaWQgZHJhdyhHcmFwaGljc0NvbnRl
eHQmLCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwg
Q29sb3JTcGFjZSBzdHlsZUNvbG9yU3BhY2UsIENvbXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGUs
IEltYWdlT3JpZW50YXRpb25EZXNjcmlwdGlvbikgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lk
IGRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwg
Y29uc3QgQWZmaW5lVHJhbnNmb3JtJiBwYXR0ZXJuVHJhbnNmb3JtLCBjb25zdCBGbG9hdFBvaW50
JiBwaGFzZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5nLCBDb2xvclNwYWNlIHN0eWxlQ29sb3JT
cGFjZSwgQ29tcG9zaXRlT3BlcmF0b3IsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgQmxlbmRN
b2RlKSBvdmVycmlkZTsKIAotICAgIENyb3NzZmFkZUdlbmVyYXRlZEltYWdlKEltYWdlKiBmcm9t
SW1hZ2UsIEltYWdlKiB0b0ltYWdlLCBmbG9hdCBwZXJjZW50YWdlLCBjb25zdCBGbG9hdFNpemUm
IGNyb3NzZmFkZVNpemUsIGNvbnN0IEZsb2F0U2l6ZSYpOworICAgIENyb3NzZmFkZUdlbmVyYXRl
ZEltYWdlKEltYWdlJiBmcm9tSW1hZ2UsIEltYWdlJiB0b0ltYWdlLCBmbG9hdCBwZXJjZW50YWdl
LCBjb25zdCBGbG9hdFNpemUmIGNyb3NzZmFkZVNpemUsIGNvbnN0IEZsb2F0U2l6ZSYpOwogCiBw
cml2YXRlOgogICAgIHZvaWQgZHJhd0Nyb3NzZmFkZShHcmFwaGljc0NvbnRleHQmKTsKIAotICAg
IEltYWdlKiBtX2Zyb21JbWFnZTsKLSAgICBJbWFnZSogbV90b0ltYWdlOworICAgIFJlZjxJbWFn
ZT4gbV9mcm9tSW1hZ2U7CisgICAgUmVmPEltYWdlPiBtX3RvSW1hZ2U7CiAKICAgICBmbG9hdCBt
X3BlcmNlbnRhZ2U7CiAgICAgRmxvYXRTaXplIG1fY3Jvc3NmYWRlU2l6ZTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYWRpZW50SW1hZ2UuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhZGllbnRJbWFnZS5jcHAKaW5kZXggZjQw
NTMwZDA1YjA2YzViOTNlZGM1YWRjODEzZTU3MjZkYTUxMjgwOS4uMjI5OWY1MWZmM2QxOWVhYzlm
MmFlMGQzN2ZlMTcxNDMyMDBiOGQyYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvR3JhZGllbnRJbWFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvR3JhZGllbnRJbWFnZS5jcHAKQEAgLTczLDcgKzczLDcgQEAgdm9pZCBHcmFk
aWVudEltYWdlOjpkcmF3UGF0dGVybihHcmFwaGljc0NvbnRleHQmIGRlc3RDb250ZXh0LCBjb25z
dCBGbG9hdFJlY3QmIHMKIAogICAgIHVuc2lnbmVkIGdlbmVyYXRvckhhc2ggPSBtX2dyYWRpZW50
LT5oYXNoKCk7CiAKLSAgICBpZiAoIW1fY2FjaGVkSW1hZ2VCdWZmZXIgfHwgbV9jYWNoZWRHZW5l
cmF0b3JIYXNoICE9IGdlbmVyYXRvckhhc2ggfHwgbV9jYWNoZWRBZGp1c3RlZFNpemUgIT0gYWRq
dXN0ZWRTaXplIHx8ICFkZXN0Q29udGV4dC5pc0NvbXBhdGlibGVXaXRoQnVmZmVyKG1fY2FjaGVk
SW1hZ2VCdWZmZXIuZ2V0KCkpKSB7CisgICAgaWYgKCFtX2NhY2hlZEltYWdlQnVmZmVyIHx8IG1f
Y2FjaGVkR2VuZXJhdG9ySGFzaCAhPSBnZW5lcmF0b3JIYXNoIHx8IG1fY2FjaGVkQWRqdXN0ZWRT
aXplICE9IGFkanVzdGVkU2l6ZSB8fCAhZGVzdENvbnRleHQuaXNDb21wYXRpYmxlV2l0aEJ1ZmZl
cigqbV9jYWNoZWRJbWFnZUJ1ZmZlcikpIHsKICAgICAgICAgbV9jYWNoZWRJbWFnZUJ1ZmZlciA9
IGRlc3RDb250ZXh0LmNyZWF0ZUNvbXBhdGlibGVCdWZmZXIoYWRqdXN0ZWRTaXplLCBtX2dyYWRp
ZW50LT5oYXNBbHBoYSgpKTsKICAgICAgICAgaWYgKCFtX2NhY2hlZEltYWdlQnVmZmVyKQogICAg
ICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0dyYXBoaWNzQ29udGV4dC5jcHAKaW5kZXggNDI2YzdhNzZiZmIzODY2YTM5YjU2MWZiYWRj
NzYzOTk4OTZjNjI5My4uMmI0YTJmNzk5ZjlmNTA1MjVkOWU5OGI1NjEwYzFjNDVkNTRhYWEzZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250
ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0Nv
bnRleHQuY3BwCkBAIC0zNjgsNTAgKzM2OCw0NSBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJh
d0JpZGlUZXh0KGNvbnN0IEZvbnRDYXNjYWRlJiBmb250LCBjb25zdCBUZXh0UnVuJiBydW4sCiAg
ICAgYmlkaVJ1bnMuZGVsZXRlUnVucygpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJh
d0ltYWdlKEltYWdlKiBpbWFnZSwgQ29sb3JTcGFjZSBjb2xvclNwYWNlLCBjb25zdCBGbG9hdFBv
aW50JiBkZXN0aW5hdGlvbiwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIGltYWdlUGFpbnRp
bmdPcHRpb25zKQordm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdJbWFnZShJbWFnZSYgaW1hZ2Us
IENvbG9yU3BhY2UgY29sb3JTcGFjZSwgY29uc3QgRmxvYXRQb2ludCYgZGVzdGluYXRpb24sIGNv
bnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBpbWFnZVBhaW50aW5nT3B0aW9ucykKIHsKLSAgICBp
ZiAoIWltYWdlKQotICAgICAgICByZXR1cm47Ci0gICAgZHJhd0ltYWdlKGltYWdlLCBjb2xvclNw
YWNlLCBGbG9hdFJlY3QoZGVzdGluYXRpb24sIGltYWdlLT5zaXplKCkpLCBGbG9hdFJlY3QoRmxv
YXRQb2ludCgpLCBpbWFnZS0+c2l6ZSgpKSwgaW1hZ2VQYWludGluZ09wdGlvbnMpOworICAgIGRy
YXdJbWFnZShpbWFnZSwgY29sb3JTcGFjZSwgRmxvYXRSZWN0KGRlc3RpbmF0aW9uLCBpbWFnZS5z
aXplKCkpLCBGbG9hdFJlY3QoRmxvYXRQb2ludCgpLCBpbWFnZS5zaXplKCkpLCBpbWFnZVBhaW50
aW5nT3B0aW9ucyk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3SW1hZ2UoSW1hZ2Uq
IGltYWdlLCBDb2xvclNwYWNlIGNvbG9yU3BhY2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRp
b24sIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBpbWFnZVBhaW50aW5nT3B0aW9ucykKK3Zv
aWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3SW1hZ2UoSW1hZ2UmIGltYWdlLCBDb2xvclNwYWNlIGNv
bG9yU3BhY2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24sIGNvbnN0IEltYWdlUGFpbnRp
bmdPcHRpb25zJiBpbWFnZVBhaW50aW5nT3B0aW9ucykKIHsKLSAgICBpZiAoIWltYWdlKQotICAg
ICAgICByZXR1cm47Ci0gICAgCiAjaWYgUExBVEZPUk0oSU9TKQotICAgIEZsb2F0UmVjdCBzcmNS
ZWN0KEZsb2F0UG9pbnQoKSwgaW1hZ2UtPm9yaWdpbmFsU2l6ZSgpKTsKKyAgICBGbG9hdFJlY3Qg
c3JjUmVjdChGbG9hdFBvaW50KCksIGltYWdlLm9yaWdpbmFsU2l6ZSgpKTsKICNlbHNlCi0gICAg
RmxvYXRSZWN0IHNyY1JlY3QoRmxvYXRQb2ludCgpLCBpbWFnZS0+c2l6ZSgpKTsKKyAgICBGbG9h
dFJlY3Qgc3JjUmVjdChGbG9hdFBvaW50KCksIGltYWdlLnNpemUoKSk7CiAjZW5kaWYKICAgICAg
ICAgCiAgICAgZHJhd0ltYWdlKGltYWdlLCBjb2xvclNwYWNlLCBkZXN0aW5hdGlvbiwgc3JjUmVj
dCwgaW1hZ2VQYWludGluZ09wdGlvbnMpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJh
d0ltYWdlKEltYWdlKiBpbWFnZSwgQ29sb3JTcGFjZSBjb2xvclNwYWNlLCBjb25zdCBGbG9hdFJl
Y3QmIGRlc3RpbmF0aW9uLCBjb25zdCBGbG9hdFJlY3QmIHNvdXJjZSwgY29uc3QgSW1hZ2VQYWlu
dGluZ09wdGlvbnMmIGltYWdlUGFpbnRpbmdPcHRpb25zKQordm9pZCBHcmFwaGljc0NvbnRleHQ6
OmRyYXdJbWFnZShJbWFnZSYgaW1hZ2UsIENvbG9yU3BhY2UgY29sb3JTcGFjZSwgY29uc3QgRmxv
YXRSZWN0JiBkZXN0aW5hdGlvbiwgY29uc3QgRmxvYXRSZWN0JiBzb3VyY2UsIGNvbnN0IEltYWdl
UGFpbnRpbmdPcHRpb25zJiBpbWFnZVBhaW50aW5nT3B0aW9ucykKIHsKLSAgICBpZiAocGFpbnRp
bmdEaXNhYmxlZCgpIHx8ICFpbWFnZSkKKyAgICBpZiAocGFpbnRpbmdEaXNhYmxlZCgpKQogICAg
ICAgICByZXR1cm47CiAKICAgICAvLyBGSVhNRSAoNDkwMDIpOiBTaG91bGQgYmUgSW50ZXJwb2xh
dGlvbkxvdwogICAgIEludGVycG9sYXRpb25RdWFsaXR5TWFpbnRhaW5lciBpbnRlcnBvbGF0aW9u
UXVhbGl0eUZvclRoaXNTY29wZSgqdGhpcywgaW1hZ2VQYWludGluZ09wdGlvbnMubV91c2VMb3dR
dWFsaXR5U2NhbGUgPyBJbnRlcnBvbGF0aW9uTm9uZSA6IGltYWdlSW50ZXJwb2xhdGlvblF1YWxp
dHkoKSk7Ci0gICAgaW1hZ2UtPmRyYXcoKnRoaXMsIGRlc3RpbmF0aW9uLCBzb3VyY2UsIGNvbG9y
U3BhY2UsIGltYWdlUGFpbnRpbmdPcHRpb25zLm1fY29tcG9zaXRlT3BlcmF0b3IsIGltYWdlUGFp
bnRpbmdPcHRpb25zLm1fYmxlbmRNb2RlLCBpbWFnZVBhaW50aW5nT3B0aW9ucy5tX29yaWVudGF0
aW9uRGVzY3JpcHRpb24pOworICAgIGltYWdlLmRyYXcoKnRoaXMsIGRlc3RpbmF0aW9uLCBzb3Vy
Y2UsIGNvbG9yU3BhY2UsIGltYWdlUGFpbnRpbmdPcHRpb25zLm1fY29tcG9zaXRlT3BlcmF0b3Is
IGltYWdlUGFpbnRpbmdPcHRpb25zLm1fYmxlbmRNb2RlLCBpbWFnZVBhaW50aW5nT3B0aW9ucy5t
X29yaWVudGF0aW9uRGVzY3JpcHRpb24pOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJh
d1RpbGVkSW1hZ2UoSW1hZ2UqIGltYWdlLCBDb2xvclNwYWNlIGNvbG9yU3BhY2UsIGNvbnN0IEZs
b2F0UmVjdCYgZGVzdGluYXRpb24sIGNvbnN0IEZsb2F0UG9pbnQmIHNvdXJjZSwgY29uc3QgRmxv
YXRTaXplJiB0aWxlU2l6ZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5nLCBjb25zdCBJbWFnZVBh
aW50aW5nT3B0aW9ucyYgaW1hZ2VQYWludGluZ09wdGlvbnMpCit2b2lkIEdyYXBoaWNzQ29udGV4
dDo6ZHJhd1RpbGVkSW1hZ2UoSW1hZ2UmIGltYWdlLCBDb2xvclNwYWNlIGNvbG9yU3BhY2UsIGNv
bnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24sIGNvbnN0IEZsb2F0UG9pbnQmIHNvdXJjZSwgY29u
c3QgRmxvYXRTaXplJiB0aWxlU2l6ZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5nLCBjb25zdCBJ
bWFnZVBhaW50aW5nT3B0aW9ucyYgaW1hZ2VQYWludGluZ09wdGlvbnMpCiB7Ci0gICAgaWYgKHBh
aW50aW5nRGlzYWJsZWQoKSB8fCAhaW1hZ2UpCisgICAgaWYgKHBhaW50aW5nRGlzYWJsZWQoKSkK
ICAgICAgICAgcmV0dXJuOwogCiAgICAgSW50ZXJwb2xhdGlvblF1YWxpdHlNYWludGFpbmVyIGlu
dGVycG9sYXRpb25RdWFsaXR5Rm9yVGhpc1Njb3BlKCp0aGlzLCBpbWFnZVBhaW50aW5nT3B0aW9u
cy5tX3VzZUxvd1F1YWxpdHlTY2FsZSA/IEludGVycG9sYXRpb25Mb3cgOiBpbWFnZUludGVycG9s
YXRpb25RdWFsaXR5KCkpOwotICAgIGltYWdlLT5kcmF3VGlsZWQoKnRoaXMsIGRlc3RpbmF0aW9u
LCBzb3VyY2UsIHRpbGVTaXplLCBzcGFjaW5nLCBjb2xvclNwYWNlLCBpbWFnZVBhaW50aW5nT3B0
aW9ucy5tX2NvbXBvc2l0ZU9wZXJhdG9yLCBpbWFnZVBhaW50aW5nT3B0aW9ucy5tX2JsZW5kTW9k
ZSk7CisgICAgaW1hZ2UuZHJhd1RpbGVkKCp0aGlzLCBkZXN0aW5hdGlvbiwgc291cmNlLCB0aWxl
U2l6ZSwgc3BhY2luZywgY29sb3JTcGFjZSwgaW1hZ2VQYWludGluZ09wdGlvbnMubV9jb21wb3Np
dGVPcGVyYXRvciwgaW1hZ2VQYWludGluZ09wdGlvbnMubV9ibGVuZE1vZGUpOwogfQogCi12b2lk
IEdyYXBoaWNzQ29udGV4dDo6ZHJhd1RpbGVkSW1hZ2UoSW1hZ2UqIGltYWdlLCBDb2xvclNwYWNl
IGNvbG9yU3BhY2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24sIGNvbnN0IEZsb2F0UmVj
dCYgc291cmNlLCBjb25zdCBGbG9hdFNpemUmIHRpbGVTY2FsZUZhY3RvciwKK3ZvaWQgR3JhcGhp
Y3NDb250ZXh0OjpkcmF3VGlsZWRJbWFnZShJbWFnZSYgaW1hZ2UsIENvbG9yU3BhY2UgY29sb3JT
cGFjZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwgY29uc3QgRmxvYXRSZWN0JiBzb3Vy
Y2UsIGNvbnN0IEZsb2F0U2l6ZSYgdGlsZVNjYWxlRmFjdG9yLAogICAgIEltYWdlOjpUaWxlUnVs
ZSBoUnVsZSwgSW1hZ2U6OlRpbGVSdWxlIHZSdWxlLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9u
cyYgaW1hZ2VQYWludGluZ09wdGlvbnMpCiB7Ci0gICAgaWYgKHBhaW50aW5nRGlzYWJsZWQoKSB8
fCAhaW1hZ2UpCisgICAgaWYgKHBhaW50aW5nRGlzYWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwog
CiAgICAgaWYgKGhSdWxlID09IEltYWdlOjpTdHJldGNoVGlsZSAmJiB2UnVsZSA9PSBJbWFnZTo6
U3RyZXRjaFRpbGUpIHsKQEAgLTQyMSwzMSArNDE2LDI3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0
OjpkcmF3VGlsZWRJbWFnZShJbWFnZSogaW1hZ2UsIENvbG9yU3BhY2UgY29sb3JTcGFjZSwgY29u
c3QKICAgICB9CiAKICAgICBJbnRlcnBvbGF0aW9uUXVhbGl0eU1haW50YWluZXIgaW50ZXJwb2xh
dGlvblF1YWxpdHlGb3JUaGlzU2NvcGUoKnRoaXMsIGltYWdlUGFpbnRpbmdPcHRpb25zLm1fdXNl
TG93UXVhbGl0eVNjYWxlID8gSW50ZXJwb2xhdGlvbkxvdyA6IGltYWdlSW50ZXJwb2xhdGlvblF1
YWxpdHkoKSk7Ci0gICAgaW1hZ2UtPmRyYXdUaWxlZCgqdGhpcywgZGVzdGluYXRpb24sIHNvdXJj
ZSwgdGlsZVNjYWxlRmFjdG9yLCBoUnVsZSwgdlJ1bGUsIGNvbG9yU3BhY2UsIGltYWdlUGFpbnRp
bmdPcHRpb25zLm1fY29tcG9zaXRlT3BlcmF0b3IpOworICAgIGltYWdlLmRyYXdUaWxlZCgqdGhp
cywgZGVzdGluYXRpb24sIHNvdXJjZSwgdGlsZVNjYWxlRmFjdG9yLCBoUnVsZSwgdlJ1bGUsIGNv
bG9yU3BhY2UsIGltYWdlUGFpbnRpbmdPcHRpb25zLm1fY29tcG9zaXRlT3BlcmF0b3IpOwogfQog
Ci12b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd0ltYWdlQnVmZmVyKEltYWdlQnVmZmVyKiBpbWFn
ZSwgQ29sb3JTcGFjZSBjb2xvclNwYWNlLCBjb25zdCBGbG9hdFBvaW50JiBkZXN0aW5hdGlvbiwg
Y29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIGltYWdlUGFpbnRpbmdPcHRpb25zKQordm9pZCBH
cmFwaGljc0NvbnRleHQ6OmRyYXdJbWFnZUJ1ZmZlcihJbWFnZUJ1ZmZlciYgaW1hZ2UsIENvbG9y
U3BhY2UgY29sb3JTcGFjZSwgY29uc3QgRmxvYXRQb2ludCYgZGVzdGluYXRpb24sIGNvbnN0IElt
YWdlUGFpbnRpbmdPcHRpb25zJiBpbWFnZVBhaW50aW5nT3B0aW9ucykKIHsKLSAgICBpZiAoIWlt
YWdlKQotICAgICAgICByZXR1cm47Ci0gICAgZHJhd0ltYWdlQnVmZmVyKGltYWdlLCBjb2xvclNw
YWNlLCBGbG9hdFJlY3QoZGVzdGluYXRpb24sIGltYWdlLT5sb2dpY2FsU2l6ZSgpKSwgRmxvYXRS
ZWN0KEZsb2F0UG9pbnQoKSwgaW1hZ2UtPmxvZ2ljYWxTaXplKCkpLCBpbWFnZVBhaW50aW5nT3B0
aW9ucyk7CisgICAgZHJhd0ltYWdlQnVmZmVyKGltYWdlLCBjb2xvclNwYWNlLCBGbG9hdFJlY3Qo
ZGVzdGluYXRpb24sIGltYWdlLmxvZ2ljYWxTaXplKCkpLCBGbG9hdFJlY3QoRmxvYXRQb2ludCgp
LCBpbWFnZS5sb2dpY2FsU2l6ZSgpKSwgaW1hZ2VQYWludGluZ09wdGlvbnMpOwogfQogCi12b2lk
IEdyYXBoaWNzQ29udGV4dDo6ZHJhd0ltYWdlQnVmZmVyKEltYWdlQnVmZmVyKiBpbWFnZSwgQ29s
b3JTcGFjZSBjb2xvclNwYWNlLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBjb25zdCBJ
bWFnZVBhaW50aW5nT3B0aW9ucyYgaW1hZ2VQYWludGluZ09wdGlvbnMpCit2b2lkIEdyYXBoaWNz
Q29udGV4dDo6ZHJhd0ltYWdlQnVmZmVyKEltYWdlQnVmZmVyJiBpbWFnZSwgQ29sb3JTcGFjZSBj
b2xvclNwYWNlLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBjb25zdCBJbWFnZVBhaW50
aW5nT3B0aW9ucyYgaW1hZ2VQYWludGluZ09wdGlvbnMpCiB7Ci0gICAgaWYgKCFpbWFnZSkKLSAg
ICAgICAgcmV0dXJuOwotICAgIGRyYXdJbWFnZUJ1ZmZlcihpbWFnZSwgY29sb3JTcGFjZSwgZGVz
dGluYXRpb24sIEZsb2F0UmVjdChGbG9hdFBvaW50KCksIEZsb2F0U2l6ZShpbWFnZS0+bG9naWNh
bFNpemUoKSkpLCBpbWFnZVBhaW50aW5nT3B0aW9ucyk7CisgICAgZHJhd0ltYWdlQnVmZmVyKGlt
YWdlLCBjb2xvclNwYWNlLCBkZXN0aW5hdGlvbiwgRmxvYXRSZWN0KEZsb2F0UG9pbnQoKSwgRmxv
YXRTaXplKGltYWdlLmxvZ2ljYWxTaXplKCkpKSwgaW1hZ2VQYWludGluZ09wdGlvbnMpOwogfQog
Ci12b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd0ltYWdlQnVmZmVyKEltYWdlQnVmZmVyKiBpbWFn
ZSwgQ29sb3JTcGFjZSBjb2xvclNwYWNlLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBj
b25zdCBGbG9hdFJlY3QmIHNvdXJjZSwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIGltYWdl
UGFpbnRpbmdPcHRpb25zKQordm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdJbWFnZUJ1ZmZlcihJ
bWFnZUJ1ZmZlciYgaW1hZ2UsIENvbG9yU3BhY2UgY29sb3JTcGFjZSwgY29uc3QgRmxvYXRSZWN0
JiBkZXN0aW5hdGlvbiwgY29uc3QgRmxvYXRSZWN0JiBzb3VyY2UsIGNvbnN0IEltYWdlUGFpbnRp
bmdPcHRpb25zJiBpbWFnZVBhaW50aW5nT3B0aW9ucykKIHsKLSAgICBpZiAocGFpbnRpbmdEaXNh
YmxlZCgpIHx8ICFpbWFnZSkKKyAgICBpZiAocGFpbnRpbmdEaXNhYmxlZCgpKQogICAgICAgICBy
ZXR1cm47CiAKICAgICAvLyBGSVhNRSAoNDkwMDIpOiBTaG91bGQgYmUgSW50ZXJwb2xhdGlvbkxv
dwogICAgIEludGVycG9sYXRpb25RdWFsaXR5TWFpbnRhaW5lciBpbnRlcnBvbGF0aW9uUXVhbGl0
eUZvclRoaXNTY29wZSgqdGhpcywgaW1hZ2VQYWludGluZ09wdGlvbnMubV91c2VMb3dRdWFsaXR5
U2NhbGUgPyBJbnRlcnBvbGF0aW9uTm9uZSA6IGltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHkoKSk7
Ci0gICAgaW1hZ2UtPmRyYXcoKnRoaXMsIGNvbG9yU3BhY2UsIGRlc3RpbmF0aW9uLCBzb3VyY2Us
IGltYWdlUGFpbnRpbmdPcHRpb25zLm1fY29tcG9zaXRlT3BlcmF0b3IsIGltYWdlUGFpbnRpbmdP
cHRpb25zLm1fYmxlbmRNb2RlLCBpbWFnZVBhaW50aW5nT3B0aW9ucy5tX3VzZUxvd1F1YWxpdHlT
Y2FsZSk7CisgICAgaW1hZ2UuZHJhdygqdGhpcywgY29sb3JTcGFjZSwgZGVzdGluYXRpb24sIHNv
dXJjZSwgaW1hZ2VQYWludGluZ09wdGlvbnMubV9jb21wb3NpdGVPcGVyYXRvciwgaW1hZ2VQYWlu
dGluZ09wdGlvbnMubV9ibGVuZE1vZGUsIGltYWdlUGFpbnRpbmdPcHRpb25zLm1fdXNlTG93UXVh
bGl0eVNjYWxlKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQ6OmNsaXAoY29uc3QgSW50UmVj
dCYgcmVjdCkKQEAgLTQ3OCwxMSArNDY5LDExIEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpjbGlw
T3V0Um91bmRlZFJlY3QoY29uc3QgRmxvYXRSb3VuZGVkUmVjdCYgcmVjdCkKICAgICBjbGlwT3V0
KHBhdGgpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dDo6Y2xpcFRvSW1hZ2VCdWZmZXIoSW1h
Z2VCdWZmZXIqIGJ1ZmZlciwgY29uc3QgRmxvYXRSZWN0JiByZWN0KQordm9pZCBHcmFwaGljc0Nv
bnRleHQ6OmNsaXBUb0ltYWdlQnVmZmVyKEltYWdlQnVmZmVyJiBidWZmZXIsIGNvbnN0IEZsb2F0
UmVjdCYgcmVjdCkKIHsKICAgICBpZiAocGFpbnRpbmdEaXNhYmxlZCgpKQogICAgICAgICByZXR1
cm47Ci0gICAgYnVmZmVyLT5jbGlwKCp0aGlzLCByZWN0KTsKKyAgICBidWZmZXIuY2xpcCgqdGhp
cywgcmVjdCk7CiB9CiAKICNpZiAhVVNFKENHKSAmJiAhVVNFKENBSVJPKQpAQCAtNjQ4LDkgKzYz
OSw5IEBAIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4gR3JhcGhpY3NDb250ZXh0OjpjcmVh
dGVDb21wYXRpYmxlQnVmZmVyKGNvbnN0IEZsb2F0CiAgICAgcmV0dXJuIGJ1ZmZlcjsKIH0KIAot
Ym9vbCBHcmFwaGljc0NvbnRleHQ6OmlzQ29tcGF0aWJsZVdpdGhCdWZmZXIoSW1hZ2VCdWZmZXIq
IGJ1ZmZlcikgY29uc3QKK2Jvb2wgR3JhcGhpY3NDb250ZXh0Ojppc0NvbXBhdGlibGVXaXRoQnVm
ZmVyKEltYWdlQnVmZmVyJiBidWZmZXIpIGNvbnN0CiB7Ci0gICAgR3JhcGhpY3NDb250ZXh0JiBi
dWZmZXJDb250ZXh0ID0gYnVmZmVyLT5jb250ZXh0KCk7CisgICAgR3JhcGhpY3NDb250ZXh0JiBi
dWZmZXJDb250ZXh0ID0gYnVmZmVyLmNvbnRleHQoKTsKIAogICAgIHJldHVybiBzY2FsZXNNYXRj
aChnZXRDVE0oKSwgYnVmZmVyQ29udGV4dC5nZXRDVE0oKSkgJiYgaXNBY2NlbGVyYXRlZENvbnRl
eHQoKSA9PSBidWZmZXJDb250ZXh0LmlzQWNjZWxlcmF0ZWRDb250ZXh0KCk7CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oCmluZGV4
IGQ4MDNhYzc1MjVhN2UwMzE4OGFiMWJiM2E4MjQ5MmI5MWVkYzI5NDguLmNhOWZhYjU5OGIxOWNl
ODVlNWIzM2QyMjk5MDk4MmU2NTA2MTk4MTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oCkBAIC0zMDgsMTcgKzMwOCwxNyBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzdHJva2VS
ZWN0KGNvbnN0IEZsb2F0UmVjdCYsIGZsb2F0IGxpbmVXaWR0aCk7CiAKLSAgICAgICAgV0VCQ09S
RV9FWFBPUlQgdm9pZCBkcmF3SW1hZ2UoSW1hZ2UqLCBDb2xvclNwYWNlLCBjb25zdCBGbG9hdFBv
aW50JiBkZXN0aW5hdGlvbiwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmID0gSW1hZ2VQYWlu
dGluZ09wdGlvbnMoKSk7Ci0gICAgICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZHJhd0ltYWdlKElt
YWdlKiwgQ29sb3JTcGFjZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwgY29uc3QgSW1h
Z2VQYWludGluZ09wdGlvbnMmID0gSW1hZ2VQYWludGluZ09wdGlvbnMoKSk7Ci0gICAgICAgIHZv
aWQgZHJhd0ltYWdlKEltYWdlKiwgQ29sb3JTcGFjZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5h
dGlvbiwgY29uc3QgRmxvYXRSZWN0JiBzb3VyY2UsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25z
JiA9IEltYWdlUGFpbnRpbmdPcHRpb25zKCkpOworICAgICAgICBXRUJDT1JFX0VYUE9SVCB2b2lk
IGRyYXdJbWFnZShJbWFnZSYsIENvbG9yU3BhY2UsIGNvbnN0IEZsb2F0UG9pbnQmIGRlc3RpbmF0
aW9uLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgPSBJbWFnZVBhaW50aW5nT3B0aW9ucygp
KTsKKyAgICAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkcmF3SW1hZ2UoSW1hZ2UmLCBDb2xvclNw
YWNlLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0
aW9ucyYgPSBJbWFnZVBhaW50aW5nT3B0aW9ucygpKTsKKyAgICAgICAgdm9pZCBkcmF3SW1hZ2Uo
SW1hZ2UmLCBDb2xvclNwYWNlLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBjb25zdCBG
bG9hdFJlY3QmIHNvdXJjZSwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmID0gSW1hZ2VQYWlu
dGluZ09wdGlvbnMoKSk7CiAKLSAgICAgICAgdm9pZCBkcmF3VGlsZWRJbWFnZShJbWFnZSosIENv
bG9yU3BhY2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24sIGNvbnN0IEZsb2F0UG9pbnQm
IHNvdXJjZSwgY29uc3QgRmxvYXRTaXplJiB0aWxlU2l6ZSwgY29uc3QgRmxvYXRTaXplJiBzcGFj
aW5nLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgPSBJbWFnZVBhaW50aW5nT3B0aW9ucygp
KTsKLSAgICAgICAgdm9pZCBkcmF3VGlsZWRJbWFnZShJbWFnZSosIENvbG9yU3BhY2UsIGNvbnN0
IEZsb2F0UmVjdCYgZGVzdGluYXRpb24sIGNvbnN0IEZsb2F0UmVjdCYgc291cmNlLCBjb25zdCBG
bG9hdFNpemUmIHRpbGVTY2FsZUZhY3RvciwKKyAgICAgICAgdm9pZCBkcmF3VGlsZWRJbWFnZShJ
bWFnZSYsIENvbG9yU3BhY2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24sIGNvbnN0IEZs
b2F0UG9pbnQmIHNvdXJjZSwgY29uc3QgRmxvYXRTaXplJiB0aWxlU2l6ZSwgY29uc3QgRmxvYXRT
aXplJiBzcGFjaW5nLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgPSBJbWFnZVBhaW50aW5n
T3B0aW9ucygpKTsKKyAgICAgICAgdm9pZCBkcmF3VGlsZWRJbWFnZShJbWFnZSYsIENvbG9yU3Bh
Y2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24sIGNvbnN0IEZsb2F0UmVjdCYgc291cmNl
LCBjb25zdCBGbG9hdFNpemUmIHRpbGVTY2FsZUZhY3RvciwKICAgICAgICAgICAgIEltYWdlOjpU
aWxlUnVsZSwgSW1hZ2U6OlRpbGVSdWxlLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgPSBJ
bWFnZVBhaW50aW5nT3B0aW9ucygpKTsKIAotICAgICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRy
YXdJbWFnZUJ1ZmZlcihJbWFnZUJ1ZmZlciosIENvbG9yU3BhY2UsIGNvbnN0IEZsb2F0UG9pbnQm
IGRlc3RpbmF0aW9uLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgPSBJbWFnZVBhaW50aW5n
T3B0aW9ucygpKTsKLSAgICAgICAgdm9pZCBkcmF3SW1hZ2VCdWZmZXIoSW1hZ2VCdWZmZXIqLCBD
b2xvclNwYWNlLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBjb25zdCBJbWFnZVBhaW50
aW5nT3B0aW9ucyYgPSBJbWFnZVBhaW50aW5nT3B0aW9ucygpKTsKLSAgICAgICAgdm9pZCBkcmF3
SW1hZ2VCdWZmZXIoSW1hZ2VCdWZmZXIqLCBDb2xvclNwYWNlLCBjb25zdCBGbG9hdFJlY3QmIGRl
c3RpbmF0aW9uLCBjb25zdCBGbG9hdFJlY3QmIHNvdXJjZSwgY29uc3QgSW1hZ2VQYWludGluZ09w
dGlvbnMmID0gSW1hZ2VQYWludGluZ09wdGlvbnMoKSk7CisgICAgICAgIFdFQkNPUkVfRVhQT1JU
IHZvaWQgZHJhd0ltYWdlQnVmZmVyKEltYWdlQnVmZmVyJiwgQ29sb3JTcGFjZSwgY29uc3QgRmxv
YXRQb2ludCYgZGVzdGluYXRpb24sIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiA9IEltYWdl
UGFpbnRpbmdPcHRpb25zKCkpOworICAgICAgICB2b2lkIGRyYXdJbWFnZUJ1ZmZlcihJbWFnZUJ1
ZmZlciYsIENvbG9yU3BhY2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24sIGNvbnN0IElt
YWdlUGFpbnRpbmdPcHRpb25zJiA9IEltYWdlUGFpbnRpbmdPcHRpb25zKCkpOworICAgICAgICB2
b2lkIGRyYXdJbWFnZUJ1ZmZlcihJbWFnZUJ1ZmZlciYsIENvbG9yU3BhY2UsIGNvbnN0IEZsb2F0
UmVjdCYgZGVzdGluYXRpb24sIGNvbnN0IEZsb2F0UmVjdCYgc291cmNlLCBjb25zdCBJbWFnZVBh
aW50aW5nT3B0aW9ucyYgPSBJbWFnZVBhaW50aW5nT3B0aW9ucygpKTsKIAogICAgICAgICB2b2lk
IGRyYXdQYXR0ZXJuKEltYWdlJiwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBBZmZp
bmVUcmFuc2Zvcm0mLCBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgY29uc3QgRmxvYXRTaXplJiBz
cGFjaW5nLCBDb2xvclNwYWNlLCBDb21wb3NpdGVPcGVyYXRvciwgY29uc3QgRmxvYXRSZWN0JiBk
ZXN0UmVjdCwgQmxlbmRNb2RlID0gQmxlbmRNb2RlTm9ybWFsKTsKIApAQCAtMzMzLDcgKzMzMyw3
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdm9pZCBjbGlwT3V0Um91bmRlZFJlY3Qo
Y29uc3QgRmxvYXRSb3VuZGVkUmVjdCYpOwogICAgICAgICB2b2lkIGNsaXBQYXRoKGNvbnN0IFBh
dGgmLCBXaW5kUnVsZSk7CiAgICAgICAgIHZvaWQgY2xpcENvbnZleFBvbHlnb24oc2l6ZV90IG51
bVBvaW50cywgY29uc3QgRmxvYXRQb2ludCosIGJvb2wgYW50aWFsaWFzID0gdHJ1ZSk7Ci0gICAg
ICAgIHZvaWQgY2xpcFRvSW1hZ2VCdWZmZXIoSW1hZ2VCdWZmZXIqLCBjb25zdCBGbG9hdFJlY3Qm
KTsKKyAgICAgICAgdm9pZCBjbGlwVG9JbWFnZUJ1ZmZlcihJbWFnZUJ1ZmZlciYsIGNvbnN0IEZs
b2F0UmVjdCYpOwogICAgICAgICAKICAgICAgICAgSW50UmVjdCBjbGlwQm91bmRzKCkgY29uc3Q7
CiAKQEAgLTQ0Myw3ICs0NDMsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIC8vIENy
ZWF0ZSBhbiBpbWFnZSBidWZmZXIgY29tcGF0aWJsZSB3aXRoIHRoaXMgY29udGV4dCwgd2l0aCBz
dWl0YWJsZSByZXNvbHV0aW9uCiAgICAgICAgIC8vIGZvciBkcmF3aW5nIGludG8gdGhlIGJ1ZmZl
ciBhbmQgdGhlbiBpbnRvIHRoaXMgY29udGV4dC4KICAgICAgICAgc3RkOjp1bmlxdWVfcHRyPElt
YWdlQnVmZmVyPiBjcmVhdGVDb21wYXRpYmxlQnVmZmVyKGNvbnN0IEZsb2F0U2l6ZSYsIGJvb2wg
aGFzQWxwaGEgPSB0cnVlKSBjb25zdDsKLSAgICAgICAgYm9vbCBpc0NvbXBhdGlibGVXaXRoQnVm
ZmVyKEltYWdlQnVmZmVyKikgY29uc3Q7CisgICAgICAgIGJvb2wgaXNDb21wYXRpYmxlV2l0aEJ1
ZmZlcihJbWFnZUJ1ZmZlciYpIGNvbnN0OwogCiAgICAgICAgIC8vIFRoaXMgZnVuY3Rpb24gYXBw
bGllcyB0aGUgZGV2aWNlIHNjYWxlIGZhY3RvciB0byB0aGUgY29udGV4dCwgbWFraW5nIHRoZSBj
b250ZXh0IGNhcGFibGUgb2YKICAgICAgICAgLy8gYWN0aW5nIGFzIGEgYmFzZS1sZXZlbCBjb250
ZXh0IGZvciBhIEhpRFBJIGVudmlyb25tZW50LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvU2hhZG93Qmx1ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9TaGFkb3dCbHVyLmNwcAppbmRleCBkNjYyMGM3OTAwODBhNmZkMGE3YzNkYjEz
OWQ4OWUwMmZhMjk0ZWM3Li44NWFlZWVmZjcyZWUyNzBlNzYwMDgwZGM2MGVlYjJiMDVjODE3NGEz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9TaGFkb3dCbHVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9TaGFkb3dCbHVyLmNw
cApAQCAtNDcyLDcgKzQ3Miw3IEBAIHZvaWQgU2hhZG93Qmx1cjo6ZHJhd1NoYWRvd0J1ZmZlcihH
cmFwaGljc0NvbnRleHQmIGdyYXBoaWNzQ29udGV4dCkKICAgICAgICAgLy8gYnV0IHdlIG1heSBu
b3QgaGF2ZSBjbGVhcmVkIGl0IGFsbCwgc28gY2xpcCB0byB0aGUgZmlsbGVkIHBhcnQgZmlyc3Qu
CiAgICAgICAgIGdyYXBoaWNzQ29udGV4dC5jbGlwKEZsb2F0UmVjdChtX2xheWVyT3JpZ2luLCBt
X2xheWVyU2l6ZSkpOwogICAgIH0KLSAgICBncmFwaGljc0NvbnRleHQuY2xpcFRvSW1hZ2VCdWZm
ZXIobV9sYXllckltYWdlLCBGbG9hdFJlY3QobV9sYXllck9yaWdpbiwgYnVmZmVyU2l6ZSkpOwor
ICAgIGdyYXBoaWNzQ29udGV4dC5jbGlwVG9JbWFnZUJ1ZmZlcigqbV9sYXllckltYWdlLCBGbG9h
dFJlY3QobV9sYXllck9yaWdpbiwgYnVmZmVyU2l6ZSkpOwogICAgIGdyYXBoaWNzQ29udGV4dC5z
ZXRGaWxsQ29sb3IobV9jb2xvciwgbV9jb2xvclNwYWNlKTsKIAogICAgIGdyYXBoaWNzQ29udGV4
dC5jbGVhclNoYWRvdygpOwpAQCAtNTkzLDcgKzU5Myw3IEBAIHZvaWQgU2hhZG93Qmx1cjo6ZHJh
d1JlY3RTaGFkb3dXaXRob3V0VGlsaW5nKEdyYXBoaWNzQ29udGV4dCYgZ3JhcGhpY3NDb250ZXh0
LCBjCiAgICAgfQogICAgIAogICAgIGRyYXdTaGFkb3dCdWZmZXIoZ3JhcGhpY3NDb250ZXh0KTsK
LSAgICBtX2xheWVySW1hZ2UgPSAwOworICAgIG1fbGF5ZXJJbWFnZSA9IG51bGxwdHI7CiAgICAg
U2NyYXRjaEJ1ZmZlcjo6c2luZ2xldG9uKCkuc2NoZWR1bGVTY3JhdGNoQnVmZmVyUHVyZ2UoKTsK
IH0KIApAQCAtNjM0LDcgKzYzNCw3IEBAIHZvaWQgU2hhZG93Qmx1cjo6ZHJhd0luc2V0U2hhZG93
V2l0aG91dFRpbGluZyhHcmFwaGljc0NvbnRleHQmIGdyYXBoaWNzQ29udGV4dCwKICAgICB9CiAg
ICAgCiAgICAgZHJhd1NoYWRvd0J1ZmZlcihncmFwaGljc0NvbnRleHQpOwotICAgIG1fbGF5ZXJJ
bWFnZSA9IDA7CisgICAgbV9sYXllckltYWdlID0gbnVsbHB0cjsKICAgICBTY3JhdGNoQnVmZmVy
OjpzaW5nbGV0b24oKS5zY2hlZHVsZVNjcmF0Y2hCdWZmZXJQdXJnZSgpOwogfQogCkBAIC03MzEs
NyArNzMxLDcgQEAgdm9pZCBTaGFkb3dCbHVyOjpkcmF3SW5zZXRTaGFkb3dXaXRoVGlsaW5nKEdy
YXBoaWNzQ29udGV4dCYgZ3JhcGhpY3NDb250ZXh0LCBjb24KICAgICAKICAgICBkcmF3TGF5ZXJQ
aWVjZXMoZ3JhcGhpY3NDb250ZXh0LCBkZXN0SG9sZUJvdW5kcywgaG9sZVJlY3QucmFkaWkoKSwg
ZWRnZVNpemUsIHRlbXBsYXRlU2l6ZSwgSW5uZXJTaGFkb3cpOwogCi0gICAgbV9sYXllckltYWdl
ID0gMDsKKyAgICBtX2xheWVySW1hZ2UgPSBudWxscHRyOwogICAgIFNjcmF0Y2hCdWZmZXI6OnNp
bmdsZXRvbigpLnNjaGVkdWxlU2NyYXRjaEJ1ZmZlclB1cmdlKCk7CiB9CiAKQEAgLTc3Nyw3ICs3
NzcsNyBAQCB2b2lkIFNoYWRvd0JsdXI6OmRyYXdSZWN0U2hhZG93V2l0aFRpbGluZyhHcmFwaGlj
c0NvbnRleHQmIGdyYXBoaWNzQ29udGV4dCwgY29ucwogCiAgICAgZHJhd0xheWVyUGllY2VzKGdy
YXBoaWNzQ29udGV4dCwgc2hhZG93Qm91bmRzLCBzaGFkb3dlZFJlY3QucmFkaWkoKSwgZWRnZVNp
emUsIHRlbXBsYXRlU2l6ZSwgT3V0ZXJTaGFkb3cpOwogCi0gICAgbV9sYXllckltYWdlID0gMDsK
KyAgICBtX2xheWVySW1hZ2UgPSBudWxscHRyOwogICAgIFNjcmF0Y2hCdWZmZXI6OnNpbmdsZXRv
bigpLnNjaGVkdWxlU2NyYXRjaEJ1ZmZlclB1cmdlKCk7CiB9CiAKQEAgLTgxNiw0NiArODE2LDQ2
IEBAIHZvaWQgU2hhZG93Qmx1cjo6ZHJhd0xheWVyUGllY2VzKEdyYXBoaWNzQ29udGV4dCYgZ3Jh
cGhpY3NDb250ZXh0LCBjb25zdCBGbG9hdFJlCiAgICAgLy8gVG9wIHNpZGUuCiAgICAgRmxvYXRS
ZWN0IHRpbGVSZWN0ID0gRmxvYXRSZWN0KGxlZnRTbGljZSwgMCwgdGVtcGxhdGVTaWRlTGVuZ3Ro
LCB0b3BTbGljZSk7CiAgICAgRmxvYXRSZWN0IGRlc3RSZWN0ID0gRmxvYXRSZWN0KGNlbnRlclJl
Y3QueCgpLCBjZW50ZXJSZWN0LnkoKSAtIHRvcFNsaWNlLCBjZW50ZXJSZWN0LndpZHRoKCksIHRv
cFNsaWNlKTsKLSAgICBncmFwaGljc0NvbnRleHQuZHJhd0ltYWdlQnVmZmVyKG1fbGF5ZXJJbWFn
ZSwgQ29sb3JTcGFjZURldmljZVJHQiwgZGVzdFJlY3QsIHRpbGVSZWN0KTsKKyAgICBncmFwaGlj
c0NvbnRleHQuZHJhd0ltYWdlQnVmZmVyKCptX2xheWVySW1hZ2UsIENvbG9yU3BhY2VEZXZpY2VS
R0IsIGRlc3RSZWN0LCB0aWxlUmVjdCk7CiAKICAgICAvLyBEcmF3IHRoZSBib3R0b20gc2lkZS4K
ICAgICB0aWxlUmVjdC5zZXRZKHRlbXBsYXRlU2l6ZS5oZWlnaHQoKSAtIGJvdHRvbVNsaWNlKTsK
ICAgICB0aWxlUmVjdC5zZXRIZWlnaHQoYm90dG9tU2xpY2UpOwogICAgIGRlc3RSZWN0LnNldFko
Y2VudGVyUmVjdC5tYXhZKCkpOwogICAgIGRlc3RSZWN0LnNldEhlaWdodChib3R0b21TbGljZSk7
Ci0gICAgZ3JhcGhpY3NDb250ZXh0LmRyYXdJbWFnZUJ1ZmZlcihtX2xheWVySW1hZ2UsIENvbG9y
U3BhY2VEZXZpY2VSR0IsIGRlc3RSZWN0LCB0aWxlUmVjdCk7CisgICAgZ3JhcGhpY3NDb250ZXh0
LmRyYXdJbWFnZUJ1ZmZlcigqbV9sYXllckltYWdlLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBkZXN0
UmVjdCwgdGlsZVJlY3QpOwogCiAgICAgLy8gTGVmdCBzaWRlLgogICAgIHRpbGVSZWN0ID0gRmxv
YXRSZWN0KDAsIHRvcFNsaWNlLCBsZWZ0U2xpY2UsIHRlbXBsYXRlU2lkZUxlbmd0aCk7CiAgICAg
ZGVzdFJlY3QgPSBGbG9hdFJlY3QoY2VudGVyUmVjdC54KCkgLSBsZWZ0U2xpY2UsIGNlbnRlclJl
Y3QueSgpLCBsZWZ0U2xpY2UsIGNlbnRlclJlY3QuaGVpZ2h0KCkpOwotICAgIGdyYXBoaWNzQ29u
dGV4dC5kcmF3SW1hZ2VCdWZmZXIobV9sYXllckltYWdlLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBk
ZXN0UmVjdCwgdGlsZVJlY3QpOworICAgIGdyYXBoaWNzQ29udGV4dC5kcmF3SW1hZ2VCdWZmZXIo
Km1fbGF5ZXJJbWFnZSwgQ29sb3JTcGFjZURldmljZVJHQiwgZGVzdFJlY3QsIHRpbGVSZWN0KTsK
IAogICAgIC8vIFJpZ2h0IHNpZGUuCiAgICAgdGlsZVJlY3Quc2V0WCh0ZW1wbGF0ZVNpemUud2lk
dGgoKSAtIHJpZ2h0U2xpY2UpOwogICAgIHRpbGVSZWN0LnNldFdpZHRoKHJpZ2h0U2xpY2UpOwog
ICAgIGRlc3RSZWN0LnNldFgoY2VudGVyUmVjdC5tYXhYKCkpOwogICAgIGRlc3RSZWN0LnNldFdp
ZHRoKHJpZ2h0U2xpY2UpOwotICAgIGdyYXBoaWNzQ29udGV4dC5kcmF3SW1hZ2VCdWZmZXIobV9s
YXllckltYWdlLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBkZXN0UmVjdCwgdGlsZVJlY3QpOworICAg
IGdyYXBoaWNzQ29udGV4dC5kcmF3SW1hZ2VCdWZmZXIoKm1fbGF5ZXJJbWFnZSwgQ29sb3JTcGFj
ZURldmljZVJHQiwgZGVzdFJlY3QsIHRpbGVSZWN0KTsKIAogICAgIC8vIFRvcCBsZWZ0IGNvcm5l
ci4KICAgICB0aWxlUmVjdCA9IEZsb2F0UmVjdCgwLCAwLCBsZWZ0U2xpY2UsIHRvcFNsaWNlKTsK
ICAgICBkZXN0UmVjdCA9IEZsb2F0UmVjdChjZW50ZXJSZWN0LngoKSAtIGxlZnRTbGljZSwgY2Vu
dGVyUmVjdC55KCkgLSB0b3BTbGljZSwgbGVmdFNsaWNlLCB0b3BTbGljZSk7Ci0gICAgZ3JhcGhp
Y3NDb250ZXh0LmRyYXdJbWFnZUJ1ZmZlcihtX2xheWVySW1hZ2UsIENvbG9yU3BhY2VEZXZpY2VS
R0IsIGRlc3RSZWN0LCB0aWxlUmVjdCk7CisgICAgZ3JhcGhpY3NDb250ZXh0LmRyYXdJbWFnZUJ1
ZmZlcigqbV9sYXllckltYWdlLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBkZXN0UmVjdCwgdGlsZVJl
Y3QpOwogCiAgICAgLy8gVG9wIHJpZ2h0IGNvcm5lci4KICAgICB0aWxlUmVjdCA9IEZsb2F0UmVj
dCh0ZW1wbGF0ZVNpemUud2lkdGgoKSAtIHJpZ2h0U2xpY2UsIDAsIHJpZ2h0U2xpY2UsIHRvcFNs
aWNlKTsKICAgICBkZXN0UmVjdCA9IEZsb2F0UmVjdChjZW50ZXJSZWN0Lm1heFgoKSwgY2VudGVy
UmVjdC55KCkgLSB0b3BTbGljZSwgcmlnaHRTbGljZSwgdG9wU2xpY2UpOwotICAgIGdyYXBoaWNz
Q29udGV4dC5kcmF3SW1hZ2VCdWZmZXIobV9sYXllckltYWdlLCBDb2xvclNwYWNlRGV2aWNlUkdC
LCBkZXN0UmVjdCwgdGlsZVJlY3QpOworICAgIGdyYXBoaWNzQ29udGV4dC5kcmF3SW1hZ2VCdWZm
ZXIoKm1fbGF5ZXJJbWFnZSwgQ29sb3JTcGFjZURldmljZVJHQiwgZGVzdFJlY3QsIHRpbGVSZWN0
KTsKIAogICAgIC8vIEJvdHRvbSByaWdodCBjb3JuZXIuCiAgICAgdGlsZVJlY3QgPSBGbG9hdFJl
Y3QodGVtcGxhdGVTaXplLndpZHRoKCkgLSByaWdodFNsaWNlLCB0ZW1wbGF0ZVNpemUuaGVpZ2h0
KCkgLSBib3R0b21TbGljZSwgcmlnaHRTbGljZSwgYm90dG9tU2xpY2UpOwogICAgIGRlc3RSZWN0
ID0gRmxvYXRSZWN0KGNlbnRlclJlY3QubWF4WCgpLCBjZW50ZXJSZWN0Lm1heFkoKSwgcmlnaHRT
bGljZSwgYm90dG9tU2xpY2UpOwotICAgIGdyYXBoaWNzQ29udGV4dC5kcmF3SW1hZ2VCdWZmZXIo
bV9sYXllckltYWdlLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBkZXN0UmVjdCwgdGlsZVJlY3QpOwor
ICAgIGdyYXBoaWNzQ29udGV4dC5kcmF3SW1hZ2VCdWZmZXIoKm1fbGF5ZXJJbWFnZSwgQ29sb3JT
cGFjZURldmljZVJHQiwgZGVzdFJlY3QsIHRpbGVSZWN0KTsKIAogICAgIC8vIEJvdHRvbSBsZWZ0
IGNvcm5lci4KICAgICB0aWxlUmVjdCA9IEZsb2F0UmVjdCgwLCB0ZW1wbGF0ZVNpemUuaGVpZ2h0
KCkgLSBib3R0b21TbGljZSwgbGVmdFNsaWNlLCBib3R0b21TbGljZSk7CiAgICAgZGVzdFJlY3Qg
PSBGbG9hdFJlY3QoY2VudGVyUmVjdC54KCkgLSBsZWZ0U2xpY2UsIGNlbnRlclJlY3QubWF4WSgp
LCBsZWZ0U2xpY2UsIGJvdHRvbVNsaWNlKTsKLSAgICBncmFwaGljc0NvbnRleHQuZHJhd0ltYWdl
QnVmZmVyKG1fbGF5ZXJJbWFnZSwgQ29sb3JTcGFjZURldmljZVJHQiwgZGVzdFJlY3QsIHRpbGVS
ZWN0KTsKKyAgICBncmFwaGljc0NvbnRleHQuZHJhd0ltYWdlQnVmZmVyKCptX2xheWVySW1hZ2Us
IENvbG9yU3BhY2VEZXZpY2VSR0IsIGRlc3RSZWN0LCB0aWxlUmVjdCk7CiB9CiAKIApAQCAtOTE1
LDkgKzkxNSw5IEBAIHZvaWQgU2hhZG93Qmx1cjo6ZW5kU2hhZG93TGF5ZXIoR3JhcGhpY3NDb250
ZXh0JiBjb250ZXh0KQogICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlKGNv
bnRleHQpOwogCiAgICAgY29udGV4dC5jbGVhclNoYWRvdygpOwotICAgIGNvbnRleHQuZHJhd0lt
YWdlQnVmZmVyKG1fbGF5ZXJJbWFnZSwgQ29sb3JTcGFjZURldmljZVJHQiwgRmxvYXRSZWN0KHJv
dW5kZWRJbnRQb2ludChtX2xheWVyT3JpZ2luKSwgbV9sYXllclNpemUpLCBGbG9hdFJlY3QoRmxv
YXRQb2ludCgpLCBtX2xheWVyU2l6ZSksIGNvbnRleHQuY29tcG9zaXRlT3BlcmF0aW9uKCkpOwor
ICAgIGNvbnRleHQuZHJhd0ltYWdlQnVmZmVyKCptX2xheWVySW1hZ2UsIENvbG9yU3BhY2VEZXZp
Y2VSR0IsIEZsb2F0UmVjdChyb3VuZGVkSW50UG9pbnQobV9sYXllck9yaWdpbiksIG1fbGF5ZXJT
aXplKSwgRmxvYXRSZWN0KEZsb2F0UG9pbnQoKSwgbV9sYXllclNpemUpLCBjb250ZXh0LmNvbXBv
c2l0ZU9wZXJhdGlvbigpKTsKIAotICAgIG1fbGF5ZXJJbWFnZSA9IDA7CisgICAgbV9sYXllcklt
YWdlID0gbnVsbHB0cjsKICAgICBTY3JhdGNoQnVmZmVyOjpzaW5nbGV0b24oKS5zY2hlZHVsZVNj
cmF0Y2hCdWZmZXJQdXJnZSgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm8uY3BwCmluZGV4IGE5N2M1
OGQyMWQwNWViMDg0Y2QwMzNkYjg5NTM3OGJmNTIwMjU3MTkuLjNlNTIxM2Y4NmRhNjUxMmRlNjFk
ZmE1YmY5ZjY1YWU3MWM4MmUzZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm8uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm8uY3BwCkBAIC0xNzAsNyAr
MTcwLDcgQEAgdm9pZCBJbWFnZUJ1ZmZlcjo6ZHJhdyhHcmFwaGljc0NvbnRleHQmIGRlc3RpbmF0
aW9uQ29udGV4dCwgQ29sb3JTcGFjZSBzdHlsZUNvbG8KIHsKICAgICBCYWNraW5nU3RvcmVDb3B5
IGNvcHlNb2RlID0gJmRlc3RpbmF0aW9uQ29udGV4dCA9PSAmY29udGV4dCgpID8gQ29weUJhY2tp
bmdTdG9yZSA6IERvbnRDb3B5QmFja2luZ1N0b3JlOwogICAgIFJlZlB0cjxJbWFnZT4gaW1hZ2Ug
PSBjb3B5SW1hZ2UoY29weU1vZGUpOwotICAgIGRlc3RpbmF0aW9uQ29udGV4dC5kcmF3SW1hZ2Uo
aW1hZ2UuZ2V0KCksIHN0eWxlQ29sb3JTcGFjZSwgZGVzdFJlY3QsIHNyY1JlY3QsIEltYWdlUGFp
bnRpbmdPcHRpb25zKG9wLCBibGVuZE1vZGUsIEltYWdlT3JpZW50YXRpb25EZXNjcmlwdGlvbigp
LCB1c2VMb3dRdWFsaXR5U2NhbGUpKTsKKyAgICBkZXN0aW5hdGlvbkNvbnRleHQuZHJhd0ltYWdl
KCppbWFnZSwgc3R5bGVDb2xvclNwYWNlLCBkZXN0UmVjdCwgc3JjUmVjdCwgSW1hZ2VQYWludGlu
Z09wdGlvbnMob3AsIGJsZW5kTW9kZSwgSW1hZ2VPcmllbnRhdGlvbkRlc2NyaXB0aW9uKCksIHVz
ZUxvd1F1YWxpdHlTY2FsZSkpOwogfQogCiB2b2lkIEltYWdlQnVmZmVyOjpkcmF3UGF0dGVybihH
cmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3Qg
QWZmaW5lVHJhbnNmb3JtJiBwYXR0ZXJuVHJhbnNmb3JtLApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUERGRG9jdW1lbnRJbWFnZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9QREZEb2N1bWVudEltYWdlLmNwcAppbmRleCBm
NGIwNDg1NzFlYzk4Mzk2MTNjNDRkMjQ5ZDJiNDJhNzk1NGNkZmU5Li44ZWUyYjgyNGM1OTJhMzFl
OGZmMmFmNzE1ZjM3NDcyNmMwZWQyZTJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jZy9QREZEb2N1bWVudEltYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9QREZEb2N1bWVudEltYWdlLmNwcApAQCAtMTkwLDcgKzE5
MCw3IEBAIHZvaWQgUERGRG9jdW1lbnRJbWFnZTo6ZHJhdyhHcmFwaGljc0NvbnRleHQmIGNvbnRl
eHQsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwKICAgICAgICAgY29udGV4dC5zZXRDb21wb3Np
dGVPcGVyYXRpb24ob3ApOwogCiAgICAgICAgIGlmIChtX2NhY2hlZEltYWdlQnVmZmVyKQotICAg
ICAgICAgICAgY29udGV4dC5kcmF3SW1hZ2VCdWZmZXIobV9jYWNoZWRJbWFnZUJ1ZmZlci5nZXQo
KSwgQ29sb3JTcGFjZURldmljZVJHQiwgZHN0UmVjdCk7CisgICAgICAgICAgICBjb250ZXh0LmRy
YXdJbWFnZUJ1ZmZlcigqbV9jYWNoZWRJbWFnZUJ1ZmZlciwgQ29sb3JTcGFjZURldmljZVJHQiwg
ZHN0UmVjdCk7CiAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgdHJhbnNmb3JtQ29udGV4dEZv
clBhaW50aW5nKGNvbnRleHQsIGRzdFJlY3QsIHNyY1JlY3QpOwogICAgICAgICAgICAgZHJhd1BE
RlBhZ2UoY29udGV4dCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9maWx0ZXJzL0ZFQmxlbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZmlsdGVycy9GRUJsZW5kLmNwcAppbmRleCAwODlmNDUwNTIzMzlhZTBiMmJmMjk2YTBmYTc0
ZTU2YzExYzg3ZmI1Li5lZGVmNTc4MDE4MmZjYzgwZmU1Nzk1MzkxMmQ0YWQ5NWEzNzZhMDNjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQmxl
bmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVC
bGVuZC5jcHAKQEAgLTcyLDExICs3MiwxMSBAQCB2b2lkIEZFQmxlbmQ6OnBsYXRmb3JtQXBwbHlT
b2Z0d2FyZSgpCiAKICAgICBJbWFnZUJ1ZmZlciogaW1hZ2VCdWZmZXIgPSBpbi0+YXNJbWFnZUJ1
ZmZlcigpOwogICAgIEltYWdlQnVmZmVyKiBpbWFnZUJ1ZmZlcjIgPSBpbjItPmFzSW1hZ2VCdWZm
ZXIoKTsKLSAgICBBU1NFUlQoaW1hZ2VCdWZmZXIpOwotICAgIEFTU0VSVChpbWFnZUJ1ZmZlcjIp
OworICAgIGlmICghaW1hZ2VCdWZmZXIgfHwgIWltYWdlQnVmZmVyMikKKyAgICAgICAgcmV0dXJu
OwogCi0gICAgZmlsdGVyQ29udGV4dC5kcmF3SW1hZ2VCdWZmZXIoaW1hZ2VCdWZmZXIyLCBDb2xv
clNwYWNlRGV2aWNlUkdCLCBkcmF3aW5nUmVnaW9uT2ZJbnB1dEltYWdlKGluMi0+YWJzb2x1dGVQ
YWludFJlY3QoKSkpOwotICAgIGZpbHRlckNvbnRleHQuZHJhd0ltYWdlQnVmZmVyKGltYWdlQnVm
ZmVyLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBkcmF3aW5nUmVnaW9uT2ZJbnB1dEltYWdlKGluLT5h
YnNvbHV0ZVBhaW50UmVjdCgpKSwgSW50UmVjdChJbnRQb2ludCgpLCBpbWFnZUJ1ZmZlci0+bG9n
aWNhbFNpemUoKSksIEltYWdlUGFpbnRpbmdPcHRpb25zKENvbXBvc2l0ZVNvdXJjZU92ZXIsIG1f
bW9kZSkpOworICAgIGZpbHRlckNvbnRleHQuZHJhd0ltYWdlQnVmZmVyKCppbWFnZUJ1ZmZlcjIs
IENvbG9yU3BhY2VEZXZpY2VSR0IsIGRyYXdpbmdSZWdpb25PZklucHV0SW1hZ2UoaW4yLT5hYnNv
bHV0ZVBhaW50UmVjdCgpKSk7CisgICAgZmlsdGVyQ29udGV4dC5kcmF3SW1hZ2VCdWZmZXIoKmlt
YWdlQnVmZmVyLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBkcmF3aW5nUmVnaW9uT2ZJbnB1dEltYWdl
KGluLT5hYnNvbHV0ZVBhaW50UmVjdCgpKSwgSW50UmVjdChJbnRQb2ludCgpLCBpbWFnZUJ1ZmZl
ci0+bG9naWNhbFNpemUoKSksIEltYWdlUGFpbnRpbmdPcHRpb25zKENvbXBvc2l0ZVNvdXJjZU92
ZXIsIG1fbW9kZSkpOwogfQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb2xvck1hdHJpeC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29sb3JNYXRyaXguY3BwCmluZGV4IDg3NjZh
ZWNiMjIzM2M5YWE5M2IzZjU5OGZmMmU2MzEzOGYyNTY4ZmYuLjc4ZmZkY2U0ZDU5MWFkNmE4MTIy
ZmU2Mzg4MjM5M2ZmNTUxYWU3NzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2ZpbHRlcnMvRkVDb2xvck1hdHJpeC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNvbG9yTWF0cml4LmNwcApAQCAtMTQ3LDcgKzE0
Nyw5IEBAIHZvaWQgRkVDb2xvck1hdHJpeDo6cGxhdGZvcm1BcHBseVNvZnR3YXJlKCkKICAgICBp
ZiAoIXJlc3VsdEltYWdlKQogICAgICAgICByZXR1cm47CiAKLSAgICByZXN1bHRJbWFnZS0+Y29u
dGV4dCgpLmRyYXdJbWFnZUJ1ZmZlcihpbi0+YXNJbWFnZUJ1ZmZlcigpLCBDb2xvclNwYWNlRGV2
aWNlUkdCLCBkcmF3aW5nUmVnaW9uT2ZJbnB1dEltYWdlKGluLT5hYnNvbHV0ZVBhaW50UmVjdCgp
KSk7CisgICAgSW1hZ2VCdWZmZXIqIGluQnVmZmVyID0gaW4tPmFzSW1hZ2VCdWZmZXIoKTsKKyAg
ICBpZiAoaW5CdWZmZXIpCisgICAgICAgIHJlc3VsdEltYWdlLT5jb250ZXh0KCkuZHJhd0ltYWdl
QnVmZmVyKCppbkJ1ZmZlciwgQ29sb3JTcGFjZURldmljZVJHQiwgZHJhd2luZ1JlZ2lvbk9mSW5w
dXRJbWFnZShpbi0+YWJzb2x1dGVQYWludFJlY3QoKSkpOwogCiAgICAgSW50UmVjdCBpbWFnZVJl
Y3QoSW50UG9pbnQoKSwgcmVzdWx0SW1hZ2UtPmxvZ2ljYWxTaXplKCkpOwogICAgIFJlZlB0cjxV
aW50OENsYW1wZWRBcnJheT4gcGl4ZWxBcnJheSA9IHJlc3VsdEltYWdlLT5nZXRVbm11bHRpcGxp
ZWRJbWFnZURhdGEoaW1hZ2VSZWN0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb21wb3NpdGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNvbXBvc2l0ZS5jcHAKaW5kZXggZmNjODFlODcxMzhm
YmRmM2VjMTA3NzA5Njk3YjQxYTM3OWExOTc5YS4uOWExNTZmODk0ZGYxNDNlZThlMzg1ODY4Nzhk
MDcwOTIyOGUxYmZlOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZmlsdGVycy9GRUNvbXBvc2l0ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZmlsdGVycy9GRUNvbXBvc2l0ZS5jcHAKQEAgLTI3NiwxMyArMjc2LDEzIEBAIHZv
aWQgRkVDb21wb3NpdGU6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZSgpCiAKICAgICBJbWFnZUJ1ZmZl
ciogaW1hZ2VCdWZmZXIgPSBpbi0+YXNJbWFnZUJ1ZmZlcigpOwogICAgIEltYWdlQnVmZmVyKiBp
bWFnZUJ1ZmZlcjIgPSBpbjItPmFzSW1hZ2VCdWZmZXIoKTsKLSAgICBBU1NFUlQoaW1hZ2VCdWZm
ZXIpOwotICAgIEFTU0VSVChpbWFnZUJ1ZmZlcjIpOworICAgIGlmICghaW1hZ2VCdWZmZXIgfHwg
IWltYWdlQnVmZmVyMikKKyAgICAgICAgcmV0dXJuOwogCiAgICAgc3dpdGNoIChtX3R5cGUpIHsK
ICAgICBjYXNlIEZFQ09NUE9TSVRFX09QRVJBVE9SX09WRVI6Ci0gICAgICAgIGZpbHRlckNvbnRl
eHQuZHJhd0ltYWdlQnVmZmVyKGltYWdlQnVmZmVyMiwgQ29sb3JTcGFjZURldmljZVJHQiwgZHJh
d2luZ1JlZ2lvbk9mSW5wdXRJbWFnZShpbjItPmFic29sdXRlUGFpbnRSZWN0KCkpKTsKLSAgICAg
ICAgZmlsdGVyQ29udGV4dC5kcmF3SW1hZ2VCdWZmZXIoaW1hZ2VCdWZmZXIsIENvbG9yU3BhY2VE
ZXZpY2VSR0IsIGRyYXdpbmdSZWdpb25PZklucHV0SW1hZ2UoaW4tPmFic29sdXRlUGFpbnRSZWN0
KCkpKTsKKyAgICAgICAgZmlsdGVyQ29udGV4dC5kcmF3SW1hZ2VCdWZmZXIoKmltYWdlQnVmZmVy
MiwgQ29sb3JTcGFjZURldmljZVJHQiwgZHJhd2luZ1JlZ2lvbk9mSW5wdXRJbWFnZShpbjItPmFi
c29sdXRlUGFpbnRSZWN0KCkpKTsKKyAgICAgICAgZmlsdGVyQ29udGV4dC5kcmF3SW1hZ2VCdWZm
ZXIoKmltYWdlQnVmZmVyLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBkcmF3aW5nUmVnaW9uT2ZJbnB1
dEltYWdlKGluLT5hYnNvbHV0ZVBhaW50UmVjdCgpKSk7CiAgICAgICAgIGJyZWFrOwogICAgIGNh
c2UgRkVDT01QT1NJVEVfT1BFUkFUT1JfSU46IHsKICAgICAgICAgLy8gQXBwbGllcyBvbmx5IHRv
IHRoZSBpbnRlcnNlY3RlZCByZWdpb24uCkBAIC0yOTQsMjEgKzI5NCwyMSBAQCB2b2lkIEZFQ29t
cG9zaXRlOjpwbGF0Zm9ybUFwcGx5U29mdHdhcmUoKQogICAgICAgICBJbnRSZWN0IGFkanVzdGVk
RGVzdGluYXRpb25SZWN0ID0gZGVzdGluYXRpb25SZWN0IC0gYWJzb2x1dGVQYWludFJlY3QoKS5s
b2NhdGlvbigpOwogICAgICAgICBJbnRSZWN0IHNvdXJjZVJlY3QgPSBkZXN0aW5hdGlvblJlY3Qg
LSBpbi0+YWJzb2x1dGVQYWludFJlY3QoKS5sb2NhdGlvbigpOwogICAgICAgICBJbnRSZWN0IHNv
dXJjZTJSZWN0ID0gZGVzdGluYXRpb25SZWN0IC0gaW4yLT5hYnNvbHV0ZVBhaW50UmVjdCgpLmxv
Y2F0aW9uKCk7Ci0gICAgICAgIGZpbHRlckNvbnRleHQuZHJhd0ltYWdlQnVmZmVyKGltYWdlQnVm
ZmVyMiwgQ29sb3JTcGFjZURldmljZVJHQiwgYWRqdXN0ZWREZXN0aW5hdGlvblJlY3QsIHNvdXJj
ZTJSZWN0KTsKLSAgICAgICAgZmlsdGVyQ29udGV4dC5kcmF3SW1hZ2VCdWZmZXIoaW1hZ2VCdWZm
ZXIsIENvbG9yU3BhY2VEZXZpY2VSR0IsIGFkanVzdGVkRGVzdGluYXRpb25SZWN0LCBzb3VyY2VS
ZWN0LCBDb21wb3NpdGVTb3VyY2VJbik7CisgICAgICAgIGZpbHRlckNvbnRleHQuZHJhd0ltYWdl
QnVmZmVyKCppbWFnZUJ1ZmZlcjIsIENvbG9yU3BhY2VEZXZpY2VSR0IsIGFkanVzdGVkRGVzdGlu
YXRpb25SZWN0LCBzb3VyY2UyUmVjdCk7CisgICAgICAgIGZpbHRlckNvbnRleHQuZHJhd0ltYWdl
QnVmZmVyKCppbWFnZUJ1ZmZlciwgQ29sb3JTcGFjZURldmljZVJHQiwgYWRqdXN0ZWREZXN0aW5h
dGlvblJlY3QsIHNvdXJjZVJlY3QsIENvbXBvc2l0ZVNvdXJjZUluKTsKICAgICAgICAgYnJlYWs7
CiAgICAgfQogICAgIGNhc2UgRkVDT01QT1NJVEVfT1BFUkFUT1JfT1VUOgotICAgICAgICBmaWx0
ZXJDb250ZXh0LmRyYXdJbWFnZUJ1ZmZlcihpbWFnZUJ1ZmZlciwgQ29sb3JTcGFjZURldmljZVJH
QiwgZHJhd2luZ1JlZ2lvbk9mSW5wdXRJbWFnZShpbi0+YWJzb2x1dGVQYWludFJlY3QoKSkpOwot
ICAgICAgICBmaWx0ZXJDb250ZXh0LmRyYXdJbWFnZUJ1ZmZlcihpbWFnZUJ1ZmZlcjIsIENvbG9y
U3BhY2VEZXZpY2VSR0IsIGRyYXdpbmdSZWdpb25PZklucHV0SW1hZ2UoaW4yLT5hYnNvbHV0ZVBh
aW50UmVjdCgpKSwgSW50UmVjdChJbnRQb2ludCgpLCBpbWFnZUJ1ZmZlcjItPmxvZ2ljYWxTaXpl
KCkpLCBDb21wb3NpdGVEZXN0aW5hdGlvbk91dCk7CisgICAgICAgIGZpbHRlckNvbnRleHQuZHJh
d0ltYWdlQnVmZmVyKCppbWFnZUJ1ZmZlciwgQ29sb3JTcGFjZURldmljZVJHQiwgZHJhd2luZ1Jl
Z2lvbk9mSW5wdXRJbWFnZShpbi0+YWJzb2x1dGVQYWludFJlY3QoKSkpOworICAgICAgICBmaWx0
ZXJDb250ZXh0LmRyYXdJbWFnZUJ1ZmZlcigqaW1hZ2VCdWZmZXIyLCBDb2xvclNwYWNlRGV2aWNl
UkdCLCBkcmF3aW5nUmVnaW9uT2ZJbnB1dEltYWdlKGluMi0+YWJzb2x1dGVQYWludFJlY3QoKSks
IEludFJlY3QoSW50UG9pbnQoKSwgaW1hZ2VCdWZmZXIyLT5sb2dpY2FsU2l6ZSgpKSwgQ29tcG9z
aXRlRGVzdGluYXRpb25PdXQpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIEZFQ09NUE9TSVRF
X09QRVJBVE9SX0FUT1A6Ci0gICAgICAgIGZpbHRlckNvbnRleHQuZHJhd0ltYWdlQnVmZmVyKGlt
YWdlQnVmZmVyMiwgQ29sb3JTcGFjZURldmljZVJHQiwgZHJhd2luZ1JlZ2lvbk9mSW5wdXRJbWFn
ZShpbjItPmFic29sdXRlUGFpbnRSZWN0KCkpKTsKLSAgICAgICAgZmlsdGVyQ29udGV4dC5kcmF3
SW1hZ2VCdWZmZXIoaW1hZ2VCdWZmZXIsIENvbG9yU3BhY2VEZXZpY2VSR0IsIGRyYXdpbmdSZWdp
b25PZklucHV0SW1hZ2UoaW4tPmFic29sdXRlUGFpbnRSZWN0KCkpLCBJbnRSZWN0KEludFBvaW50
KCksIGltYWdlQnVmZmVyLT5sb2dpY2FsU2l6ZSgpKSwgQ29tcG9zaXRlU291cmNlQXRvcCk7Cisg
ICAgICAgIGZpbHRlckNvbnRleHQuZHJhd0ltYWdlQnVmZmVyKCppbWFnZUJ1ZmZlcjIsIENvbG9y
U3BhY2VEZXZpY2VSR0IsIGRyYXdpbmdSZWdpb25PZklucHV0SW1hZ2UoaW4yLT5hYnNvbHV0ZVBh
aW50UmVjdCgpKSk7CisgICAgICAgIGZpbHRlckNvbnRleHQuZHJhd0ltYWdlQnVmZmVyKCppbWFn
ZUJ1ZmZlciwgQ29sb3JTcGFjZURldmljZVJHQiwgZHJhd2luZ1JlZ2lvbk9mSW5wdXRJbWFnZShp
bi0+YWJzb2x1dGVQYWludFJlY3QoKSksIEludFJlY3QoSW50UG9pbnQoKSwgaW1hZ2VCdWZmZXIt
PmxvZ2ljYWxTaXplKCkpLCBDb21wb3NpdGVTb3VyY2VBdG9wKTsKICAgICAgICAgYnJlYWs7CiAg
ICAgY2FzZSBGRUNPTVBPU0lURV9PUEVSQVRPUl9YT1I6Ci0gICAgICAgIGZpbHRlckNvbnRleHQu
ZHJhd0ltYWdlQnVmZmVyKGltYWdlQnVmZmVyMiwgQ29sb3JTcGFjZURldmljZVJHQiwgZHJhd2lu
Z1JlZ2lvbk9mSW5wdXRJbWFnZShpbjItPmFic29sdXRlUGFpbnRSZWN0KCkpKTsKLSAgICAgICAg
ZmlsdGVyQ29udGV4dC5kcmF3SW1hZ2VCdWZmZXIoaW1hZ2VCdWZmZXIsIENvbG9yU3BhY2VEZXZp
Y2VSR0IsIGRyYXdpbmdSZWdpb25PZklucHV0SW1hZ2UoaW4tPmFic29sdXRlUGFpbnRSZWN0KCkp
LCBJbnRSZWN0KEludFBvaW50KCksIGltYWdlQnVmZmVyLT5sb2dpY2FsU2l6ZSgpKSwgQ29tcG9z
aXRlWE9SKTsKKyAgICAgICAgZmlsdGVyQ29udGV4dC5kcmF3SW1hZ2VCdWZmZXIoKmltYWdlQnVm
ZmVyMiwgQ29sb3JTcGFjZURldmljZVJHQiwgZHJhd2luZ1JlZ2lvbk9mSW5wdXRJbWFnZShpbjIt
PmFic29sdXRlUGFpbnRSZWN0KCkpKTsKKyAgICAgICAgZmlsdGVyQ29udGV4dC5kcmF3SW1hZ2VC
dWZmZXIoKmltYWdlQnVmZmVyLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBkcmF3aW5nUmVnaW9uT2ZJ
bnB1dEltYWdlKGluLT5hYnNvbHV0ZVBhaW50UmVjdCgpKSwgSW50UmVjdChJbnRQb2ludCgpLCBp
bWFnZUJ1ZmZlci0+bG9naWNhbFNpemUoKSksIENvbXBvc2l0ZVhPUik7CiAgICAgICAgIGJyZWFr
OwogICAgIGRlZmF1bHQ6CiAgICAgICAgIGJyZWFrOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRURyb3BTaGFkb3cuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRURyb3BTaGFkb3cuY3BwCmluZGV4IDYz
M2ViYzY2MGIxZDc2Y2I0YmQ5ODg2ZTAxMWUwYjgzNzViOTVhYjkuLmRjZTVhYWUyNWYyOTdhYTg4
YjZmOGE4M2NiYzJkYTg0YjAwY2U5NmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVEcm9wU2hhZG93LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFRHJvcFNoYWRvdy5jcHAKQEAgLTg4LDEwICs4
OCwxMiBAQCB2b2lkIEZFRHJvcFNoYWRvdzo6cGxhdGZvcm1BcHBseVNvZnR3YXJlKCkKICAgICBk
cmF3aW5nUmVnaW9uV2l0aE9mZnNldC5tb3ZlKG9mZnNldCk7CiAKICAgICBJbWFnZUJ1ZmZlciog
c291cmNlSW1hZ2UgPSBpbi0+YXNJbWFnZUJ1ZmZlcigpOwotICAgIEFTU0VSVChzb3VyY2VJbWFn
ZSk7CisgICAgaWYgKCFzb3VyY2VJbWFnZSkKKyAgICAgICAgcmV0dXJuOworCiAgICAgR3JhcGhp
Y3NDb250ZXh0JiByZXN1bHRDb250ZXh0ID0gcmVzdWx0SW1hZ2UtPmNvbnRleHQoKTsKICAgICBy
ZXN1bHRDb250ZXh0LnNldEFscGhhKG1fc2hhZG93T3BhY2l0eSk7Ci0gICAgcmVzdWx0Q29udGV4
dC5kcmF3SW1hZ2VCdWZmZXIoc291cmNlSW1hZ2UsIENvbG9yU3BhY2VEZXZpY2VSR0IsIGRyYXdp
bmdSZWdpb25XaXRoT2Zmc2V0KTsKKyAgICByZXN1bHRDb250ZXh0LmRyYXdJbWFnZUJ1ZmZlcigq
c291cmNlSW1hZ2UsIENvbG9yU3BhY2VEZXZpY2VSR0IsIGRyYXdpbmdSZWdpb25XaXRoT2Zmc2V0
KTsKICAgICByZXN1bHRDb250ZXh0LnNldEFscGhhKDEpOwogCiAgICAgU2hhZG93Qmx1ciBjb250
ZXh0U2hhZG93KGJsdXJSYWRpdXMsIG9mZnNldCwgbV9zaGFkb3dDb2xvciwgQ29sb3JTcGFjZURl
dmljZVJHQik7CkBAIC0xMDgsNyArMTEwLDcgQEAgdm9pZCBGRURyb3BTaGFkb3c6OnBsYXRmb3Jt
QXBwbHlTb2Z0d2FyZSgpCiAgICAgcmVzdWx0Q29udGV4dC5maWxsUmVjdChGbG9hdFJlY3QoRmxv
YXRQb2ludCgpLCBhYnNvbHV0ZVBhaW50UmVjdCgpLnNpemUoKSksIG1fc2hhZG93Q29sb3IsIENv
bG9yU3BhY2VEZXZpY2VSR0IpOwogICAgIHJlc3VsdENvbnRleHQuc2V0Q29tcG9zaXRlT3BlcmF0
aW9uKENvbXBvc2l0ZURlc3RpbmF0aW9uT3Zlcik7CiAKLSAgICByZXN1bHRJbWFnZS0+Y29udGV4
dCgpLmRyYXdJbWFnZUJ1ZmZlcihzb3VyY2VJbWFnZSwgQ29sb3JTcGFjZURldmljZVJHQiwgZHJh
d2luZ1JlZ2lvbik7CisgICAgcmVzdWx0SW1hZ2UtPmNvbnRleHQoKS5kcmF3SW1hZ2VCdWZmZXIo
KnNvdXJjZUltYWdlLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBkcmF3aW5nUmVnaW9uKTsKIH0KIAog
dm9pZCBGRURyb3BTaGFkb3c6OmR1bXAoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRU1lcmdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVNZXJnZS5jcHAKaW5kZXggZmNjZGQ0NWUzODVhZTQyMzBi
YTNjOTE4ZDcwYTI5OTI3NGFiMzAwNS4uYTAyZDlmZGFlMjQ1YTVmZWRjNTE5YzgzMDBjMDMzMWQw
ZDcyMWJlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmls
dGVycy9GRU1lcmdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9m
aWx0ZXJzL0ZFTWVyZ2UuY3BwCkBAIC00NywxMCArNDcsMTIgQEAgdm9pZCBGRU1lcmdlOjpwbGF0
Zm9ybUFwcGx5U29mdHdhcmUoKQogICAgIGlmICghcmVzdWx0SW1hZ2UpCiAgICAgICAgIHJldHVy
bjsKIAorCiAgICAgR3JhcGhpY3NDb250ZXh0JiBmaWx0ZXJDb250ZXh0ID0gcmVzdWx0SW1hZ2Ut
PmNvbnRleHQoKTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgc2l6ZTsgKytpKSB7CiAg
ICAgICAgIEZpbHRlckVmZmVjdCogaW4gPSBpbnB1dEVmZmVjdChpKTsKLSAgICAgICAgZmlsdGVy
Q29udGV4dC5kcmF3SW1hZ2VCdWZmZXIoaW4tPmFzSW1hZ2VCdWZmZXIoKSwgQ29sb3JTcGFjZURl
dmljZVJHQiwgZHJhd2luZ1JlZ2lvbk9mSW5wdXRJbWFnZShpbi0+YWJzb2x1dGVQYWludFJlY3Qo
KSkpOworICAgICAgICBpZiAoSW1hZ2VCdWZmZXIqIGluQnVmZmVyID0gaW4tPmFzSW1hZ2VCdWZm
ZXIoKSkKKyAgICAgICAgICAgIGZpbHRlckNvbnRleHQuZHJhd0ltYWdlQnVmZmVyKCppbkJ1ZmZl
ciwgQ29sb3JTcGFjZURldmljZVJHQiwgZHJhd2luZ1JlZ2lvbk9mSW5wdXRJbWFnZShpbi0+YWJz
b2x1dGVQYWludFJlY3QoKSkpOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRU9mZnNldC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFT2Zmc2V0LmNwcAppbmRleCBmZmVhNjM4Njgx
YWE0YTk3ZTg0MDgwYTFiN2M4N2U4NDM5ZDQ5OWZjLi4xOGEyZTc5MWQ1ODNiYWNkY2QxYzdiZTZk
MDU3ZjUwYjliNTE5MWNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9maWx0ZXJzL0ZFT2Zmc2V0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9maWx0ZXJzL0ZFT2Zmc2V0LmNwcApAQCAtNzksNyArNzksOCBAQCB2b2lkIEZFT2Zm
c2V0OjpwbGF0Zm9ybUFwcGx5U29mdHdhcmUoKQogICAgIEZpbHRlckVmZmVjdCogaW4gPSBpbnB1
dEVmZmVjdCgwKTsKIAogICAgIEltYWdlQnVmZmVyKiByZXN1bHRJbWFnZSA9IGNyZWF0ZUltYWdl
QnVmZmVyUmVzdWx0KCk7Ci0gICAgaWYgKCFyZXN1bHRJbWFnZSkKKyAgICBJbWFnZUJ1ZmZlciog
aW5CdWZmZXIgPSBpbi0+YXNJbWFnZUJ1ZmZlcigpOworICAgIGlmICghcmVzdWx0SW1hZ2UgfHwg
IWluQnVmZmVyKQogICAgICAgICByZXR1cm47CiAKICAgICBzZXRJc0FscGhhSW1hZ2UoaW4tPmlz
QWxwaGFJbWFnZSgpKTsKQEAgLTg3LDcgKzg4LDcgQEAgdm9pZCBGRU9mZnNldDo6cGxhdGZvcm1B
cHBseVNvZnR3YXJlKCkKICAgICBGbG9hdFJlY3QgZHJhd2luZ1JlZ2lvbiA9IGRyYXdpbmdSZWdp
b25PZklucHV0SW1hZ2UoaW4tPmFic29sdXRlUGFpbnRSZWN0KCkpOwogICAgIEZpbHRlciYgZmls
dGVyID0gdGhpcy0+ZmlsdGVyKCk7CiAgICAgZHJhd2luZ1JlZ2lvbi5tb3ZlKGZpbHRlci5hcHBs
eUhvcml6b250YWxTY2FsZShtX2R4KSwgZmlsdGVyLmFwcGx5VmVydGljYWxTY2FsZShtX2R5KSk7
Ci0gICAgcmVzdWx0SW1hZ2UtPmNvbnRleHQoKS5kcmF3SW1hZ2VCdWZmZXIoaW4tPmFzSW1hZ2VC
dWZmZXIoKSwgQ29sb3JTcGFjZURldmljZVJHQiwgZHJhd2luZ1JlZ2lvbik7CisgICAgcmVzdWx0
SW1hZ2UtPmNvbnRleHQoKS5kcmF3SW1hZ2VCdWZmZXIoKmluQnVmZmVyLCBDb2xvclNwYWNlRGV2
aWNlUkdCLCBkcmF3aW5nUmVnaW9uKTsKIH0KIAogdm9pZCBGRU9mZnNldDo6ZHVtcCgpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFVGlsZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFVGlsZS5jcHAK
aW5kZXggNWRjNDdkZDZlY2Y5MzFhZWE1ZjgwOWRiYmQ3NTRkMDBhMzVjZWExYi4uYTE4N2I3NGZm
ZmZkZDVhOTc0NGRjNjk3Y2NjNWVlYWMyMGVkZjMwMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRVRpbGUuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVUaWxlLmNwcApAQCAtNDcsNyArNDcsOCBA
QCB2b2lkIEZFVGlsZTo6cGxhdGZvcm1BcHBseVNvZnR3YXJlKCkKICAgICBGaWx0ZXJFZmZlY3Qq
IGluID0gaW5wdXRFZmZlY3QoMCk7CiAKICAgICBJbWFnZUJ1ZmZlciogcmVzdWx0SW1hZ2UgPSBj
cmVhdGVJbWFnZUJ1ZmZlclJlc3VsdCgpOwotICAgIGlmICghcmVzdWx0SW1hZ2UpCisgICAgSW1h
Z2VCdWZmZXIqIGluQnVmZmVyID0gaW4tPmFzSW1hZ2VCdWZmZXIoKTsKKyAgICBpZiAoIXJlc3Vs
dEltYWdlIHx8ICFpbkJ1ZmZlcikKICAgICAgICAgcmV0dXJuOwogCiAgICAgc2V0SXNBbHBoYUlt
YWdlKGluLT5pc0FscGhhSW1hZ2UoKSk7CkBAIC02OSw3ICs3MCw3IEBAIHZvaWQgRkVUaWxlOjpw
bGF0Zm9ybUFwcGx5U29mdHdhcmUoKQogCiAgICAgR3JhcGhpY3NDb250ZXh0JiB0aWxlSW1hZ2VD
b250ZXh0ID0gdGlsZUltYWdlLT5jb250ZXh0KCk7CiAgICAgdGlsZUltYWdlQ29udGV4dC50cmFu
c2xhdGUoLWluTWF4RWZmZWN0TG9jYXRpb24ueCgpLCAtaW5NYXhFZmZlY3RMb2NhdGlvbi55KCkp
OwotICAgIHRpbGVJbWFnZUNvbnRleHQuZHJhd0ltYWdlQnVmZmVyKGluLT5hc0ltYWdlQnVmZmVy
KCksIENvbG9yU3BhY2VEZXZpY2VSR0IsIGluLT5hYnNvbHV0ZVBhaW50UmVjdCgpLmxvY2F0aW9u
KCkpOworICAgIHRpbGVJbWFnZUNvbnRleHQuZHJhd0ltYWdlQnVmZmVyKCppbkJ1ZmZlciwgQ29s
b3JTcGFjZURldmljZVJHQiwgaW4tPmFic29sdXRlUGFpbnRSZWN0KCkubG9jYXRpb24oKSk7CiAK
ICAgICBhdXRvIHRpbGVJbWFnZUNvcHkgPSB0aWxlSW1hZ2UtPmNvcHlJbWFnZShDb3B5QmFja2lu
Z1N0b3JlKTsKICAgICBpZiAoIXRpbGVJbWFnZUNvcHkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL1NvdXJjZUFscGhhLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvU291cmNlQWxwaGEuY3BwCmluZGV4IDcw
YjFkNTU2NGY2ZjAzYjEzMzk4MGFiZDU5OWFjMzA2ODBiZTU2MDYuLjFlM2I5MWEyMjQ0OGYxOGNh
YTQxNmZiMTA2YTI4NDBhMDAyYTMxYmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2ZpbHRlcnMvU291cmNlQWxwaGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvU291cmNlQWxwaGEuY3BwCkBAIC01NCwxMSArNTQs
MTIgQEAgdm9pZCBTb3VyY2VBbHBoYTo6cGxhdGZvcm1BcHBseVNvZnR3YXJlKCkKICAgICBHcmFw
aGljc0NvbnRleHQmIGZpbHRlckNvbnRleHQgPSByZXN1bHRJbWFnZS0+Y29udGV4dCgpOwogCiAg
ICAgSW1hZ2VCdWZmZXIqIGltYWdlQnVmZmVyID0gaW5wdXRFZmZlY3QoMCktPmFzSW1hZ2VCdWZm
ZXIoKTsKLSAgICBBU1NFUlQoaW1hZ2VCdWZmZXIpOworICAgIGlmICghaW1hZ2VCdWZmZXIpCisg
ICAgICAgIHJldHVybjsKIAogICAgIEZsb2F0UmVjdCBpbWFnZVJlY3QoRmxvYXRQb2ludCgpLCBh
YnNvbHV0ZVBhaW50UmVjdCgpLnNpemUoKSk7CiAgICAgZmlsdGVyQ29udGV4dC5maWxsUmVjdChp
bWFnZVJlY3QsIENvbG9yOjpibGFjaywgQ29sb3JTcGFjZURldmljZVJHQik7Ci0gICAgZmlsdGVy
Q29udGV4dC5kcmF3SW1hZ2VCdWZmZXIoaW1hZ2VCdWZmZXIsIENvbG9yU3BhY2VEZXZpY2VSR0Is
IEludFBvaW50KCksIENvbXBvc2l0ZURlc3RpbmF0aW9uSW4pOworICAgIGZpbHRlckNvbnRleHQu
ZHJhd0ltYWdlQnVmZmVyKCppbWFnZUJ1ZmZlciwgQ29sb3JTcGFjZURldmljZVJHQiwgSW50UG9p
bnQoKSwgQ29tcG9zaXRlRGVzdGluYXRpb25Jbik7CiB9CiAKIHZvaWQgU291cmNlQWxwaGE6OmR1
bXAoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVy
cy9Tb3VyY2VHcmFwaGljLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Zp
bHRlcnMvU291cmNlR3JhcGhpYy5jcHAKaW5kZXggMzE5OGIwMzc4M2E1YzJiNDlhZWE5ZWViM2U5
Zjg5ODIyODNkYmM4My4uZGY0ZWU2ZjA3OWM1NDU3NTQ1OWU4NDM2OTI2NTlkNmNkMzMwMGViYiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9Tb3Vy
Y2VHcmFwaGljLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0
ZXJzL1NvdXJjZUdyYXBoaWMuY3BwCkBAIC00OSwxMiArNDksMTQgQEAgdm9pZCBTb3VyY2VHcmFw
aGljOjpkZXRlcm1pbmVBYnNvbHV0ZVBhaW50UmVjdCgpCiAKIHZvaWQgU291cmNlR3JhcGhpYzo6
cGxhdGZvcm1BcHBseVNvZnR3YXJlKCkKIHsKLSAgICBJbWFnZUJ1ZmZlciogcmVzdWx0SW1hZ2Ug
PSBjcmVhdGVJbWFnZUJ1ZmZlclJlc3VsdCgpOwogICAgIEZpbHRlciYgZmlsdGVyID0gdGhpcy0+
ZmlsdGVyKCk7Ci0gICAgaWYgKCFyZXN1bHRJbWFnZSB8fCAhZmlsdGVyLnNvdXJjZUltYWdlKCkp
CisKKyAgICBJbWFnZUJ1ZmZlciogcmVzdWx0SW1hZ2UgPSBjcmVhdGVJbWFnZUJ1ZmZlclJlc3Vs
dCgpOworICAgIEltYWdlQnVmZmVyKiBzb3VyY2VJbWFnZSA9IGZpbHRlci5zb3VyY2VJbWFnZSgp
OworICAgIGlmICghcmVzdWx0SW1hZ2UgfHwgIXNvdXJjZUltYWdlKQogICAgICAgICByZXR1cm47
CiAKLSAgICByZXN1bHRJbWFnZS0+Y29udGV4dCgpLmRyYXdJbWFnZUJ1ZmZlcihmaWx0ZXIuc291
cmNlSW1hZ2UoKSwgQ29sb3JTcGFjZURldmljZVJHQiwgSW50UG9pbnQoKSk7CisgICAgcmVzdWx0
SW1hZ2UtPmNvbnRleHQoKS5kcmF3SW1hZ2VCdWZmZXIoKnNvdXJjZUltYWdlLCBDb2xvclNwYWNl
RGV2aWNlUkdCLCBJbnRQb2ludCgpKTsKIH0KIAogdm9pZCBTb3VyY2VHcmFwaGljOjpkdW1wKCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9UaGVtZU1hYy5tbSBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9UaGVtZU1hYy5tbQppbmRleCBmZjI5YTFkZWNkOGI3
MjBkNDRiMTQyMzA5YWFjY2UzYmJlZWRhMThmLi5lNzU5MWJlZGJmNGQ1ZTBkNjllNzBkNzNlNzA0
MjllZGY4MWJhMTViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvVGhl
bWVNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1RoZW1lTWFjLm1tCkBA
IC02ODYsMTEgKzY4NiwxMyBAQCBib29sIFRoZW1lTWFjOjpkcmF3Q2VsbE9yRm9jdXNSaW5nV2l0
aFZpZXdJbnRvQ29udGV4dChOU0NlbGwgKmNlbGwsIEdyYXBoaWNzQ29udAogICAgIGlmICh1c2VJ
bWFnZUJ1ZmZlcikgewogICAgICAgICBOU1JlY3QgaW1hZ2VCdWZmZXJEcmF3UmVjdCA9IE5TUmVj
dChGbG9hdFJlY3QoYnV0dG9uRm9jdXNSZWN0T3V0bGluZVdpZHRoLCBidXR0b25Gb2N1c1JlY3RP
dXRsaW5lV2lkdGgsIHJlY3Qud2lkdGgoKSwgcmVjdC5oZWlnaHQoKSkpOwogICAgICAgICBhdXRv
IGltYWdlQnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZUNvbXBhdGlibGVCdWZmZXIocmVjdC5z
aXplKCkgKyAyICogRmxvYXRTaXplKGJ1dHRvbkZvY3VzUmVjdE91dGxpbmVXaWR0aCwgYnV0dG9u
Rm9jdXNSZWN0T3V0bGluZVdpZHRoKSwgZGV2aWNlU2NhbGVGYWN0b3IsIENvbG9yU3BhY2VTUkdC
LCBjb250ZXh0LCBmYWxzZSk7CisgICAgICAgIGlmICghaW1hZ2VCdWZmZXIpCisgICAgICAgICAg
ICByZXR1cm4gbmVlZHNSZXBhaW50OwogICAgICAgICB7CiAgICAgICAgICAgICBMb2NhbEN1cnJl
bnRHcmFwaGljc0NvbnRleHQgbG9jYWxDb250ZXh0KGltYWdlQnVmZmVyLT5jb250ZXh0KCkpOwog
ICAgICAgICAgICAgbmVlZHNSZXBhaW50ID0gZHJhd0NlbGxPckZvY3VzUmluZ0ludG9SZWN0V2l0
aFZpZXcoY2VsbCwgaW1hZ2VCdWZmZXJEcmF3UmVjdCwgdmlldywgZHJhd0J1dHRvbkNlbGwsIGRy
YXdGb2N1c1JpbmcpOwogICAgICAgICB9Ci0gICAgICAgIGNvbnRleHQuZHJhd0ltYWdlQnVmZmVy
KGltYWdlQnVmZmVyLmdldCgpLCBDb2xvclNwYWNlU1JHQiwgcmVjdC5sb2NhdGlvbigpIC0gRmxv
YXRTaXplKGJ1dHRvbkZvY3VzUmVjdE91dGxpbmVXaWR0aCwgYnV0dG9uRm9jdXNSZWN0T3V0bGlu
ZVdpZHRoKSk7CisgICAgICAgIGNvbnRleHQuZHJhd0ltYWdlQnVmZmVyKCppbWFnZUJ1ZmZlciwg
Q29sb3JTcGFjZVNSR0IsIHJlY3QubG9jYXRpb24oKSAtIEZsb2F0U2l6ZShidXR0b25Gb2N1c1Jl
Y3RPdXRsaW5lV2lkdGgsIGJ1dHRvbkZvY3VzUmVjdE91dGxpbmVXaWR0aCkpOwogICAgICAgICBy
ZXR1cm4gbmVlZHNSZXBhaW50OwogICAgIH0KICAgICBpZiAoZHJhd0J1dHRvbkNlbGwpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvRmlsdGVyRWZmZWN0UmVuZGVyZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0ZpbHRlckVmZmVjdFJlbmRlcmVyLmNwcAppbmRl
eCAyNWVkMWQ1NDE5N2EwY2ZhMmEzYWRmNzcxMmI3NDQ2NDFhZjkyM2Y5Li5mZDUwOWU4ZWFkNTk2
OTdkNDYwZDM4ZDMxM2UzZTA0MTZmYTY1ODc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvRmlsdGVyRWZmZWN0UmVuZGVyZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9GaWx0ZXJFZmZlY3RSZW5kZXJlci5jcHAKQEAgLTQyOSw4ICs0MjksMTAgQEAgdm9p
ZCBGaWx0ZXJFZmZlY3RSZW5kZXJlckhlbHBlcjo6YXBwbHlGaWx0ZXJFZmZlY3QoR3JhcGhpY3ND
b250ZXh0JiBkZXN0aW5hdGlvbkMKICAgICBMYXlvdXRSZWN0IGRlc3RSZWN0ID0gZmlsdGVyLT5v
dXRwdXRSZWN0KCk7CiAgICAgZGVzdFJlY3QubW92ZShtX3BhaW50T2Zmc2V0LngoKSwgbV9wYWlu
dE9mZnNldC55KCkpOwogCi0gICAgZGVzdGluYXRpb25Db250ZXh0LmRyYXdJbWFnZUJ1ZmZlcihm
aWx0ZXItPm91dHB1dCgpLCBtX3JlbmRlckxheWVyLT5yZW5kZXJlcigpLnN0eWxlKCkuY29sb3JT
cGFjZSgpLAotICAgICAgICBzbmFwUmVjdFRvRGV2aWNlUGl4ZWxzKGRlc3RSZWN0LCBtX3JlbmRl
ckxheWVyLT5yZW5kZXJlcigpLmRvY3VtZW50KCkuZGV2aWNlU2NhbGVGYWN0b3IoKSkpOworICAg
IGlmIChJbWFnZUJ1ZmZlciogb3V0cHV0QnVmZmVyID0gZmlsdGVyLT5vdXRwdXQoKSkgeworICAg
ICAgICBkZXN0aW5hdGlvbkNvbnRleHQuZHJhd0ltYWdlQnVmZmVyKCpvdXRwdXRCdWZmZXIsIG1f
cmVuZGVyTGF5ZXItPnJlbmRlcmVyKCkuc3R5bGUoKS5jb2xvclNwYWNlKCksCisgICAgICAgICAg
ICBzbmFwUmVjdFRvRGV2aWNlUGl4ZWxzKGRlc3RSZWN0LCBtX3JlbmRlckxheWVyLT5yZW5kZXJl
cigpLmRvY3VtZW50KCkuZGV2aWNlU2NhbGVGYWN0b3IoKSkpOworICAgIH0KIAogICAgIGZpbHRl
ci0+Y2xlYXJJbnRlcm1lZGlhdGVSZXN1bHRzKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvSW1hZ2VRdWFsaXR5Q29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvSW1hZ2VRdWFsaXR5Q29udHJvbGxlci5jcHAKaW5kZXggNmZiODM0MjQyNzQ3
OTQ0MThjYTgwMzNkN2I0ZGFkNzFiN2QxMzRhZS4uYTBjMjExNDViODQ1ODg5MzIyYTE0ZGI0N2Ji
Y2I4OTQ1MDI3MDAxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0ltYWdl
UXVhbGl0eUNvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbWFn
ZVF1YWxpdHlDb250cm9sbGVyLmNwcApAQCAtOTksMTEgKzk5LDExIEBAIHZvaWQgSW1hZ2VRdWFs
aXR5Q29udHJvbGxlcjo6cmVzdGFydFRpbWVyKCkKICAgICBtX3RpbWVyLnN0YXJ0T25lU2hvdChj
TG93UXVhbGl0eVRpbWVUaHJlc2hvbGQpOwogfQogCi1ib29sIEltYWdlUXVhbGl0eUNvbnRyb2xs
ZXI6OnNob3VsZFBhaW50QXRMb3dRdWFsaXR5KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgUmVu
ZGVyQm94TW9kZWxPYmplY3QqIG9iamVjdCwgSW1hZ2UqIGltYWdlLCBjb25zdCB2b2lkICpsYXll
ciwgY29uc3QgTGF5b3V0U2l6ZSYgc2l6ZSkKK2Jvb2wgSW1hZ2VRdWFsaXR5Q29udHJvbGxlcjo6
c2hvdWxkUGFpbnRBdExvd1F1YWxpdHkoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBSZW5kZXJC
b3hNb2RlbE9iamVjdCogb2JqZWN0LCBJbWFnZSYgaW1hZ2UsIGNvbnN0IHZvaWQgKmxheWVyLCBj
b25zdCBMYXlvdXRTaXplJiBzaXplKQogewogICAgIC8vIElmIHRoZSBpbWFnZSBpcyBub3QgYSBi
aXRtYXAgaW1hZ2UsIHRoZW4gbm9uZSBvZiB0aGlzIGlzIHJlbGV2YW50IGFuZCB3ZSBqdXN0IHBh
aW50IGF0IGhpZ2gKICAgICAvLyBxdWFsaXR5LgotICAgIGlmICghaW1hZ2UgfHwgIShpbWFnZS0+
aXNCaXRtYXBJbWFnZSgpIHx8IGltYWdlLT5pc1BERkRvY3VtZW50SW1hZ2UoKSkgfHwgY29udGV4
dC5wYWludGluZ0Rpc2FibGVkKCkpCisgICAgaWYgKCEoaW1hZ2UuaXNCaXRtYXBJbWFnZSgpIHx8
IGltYWdlLmlzUERGRG9jdW1lbnRJbWFnZSgpKSB8fCBjb250ZXh0LnBhaW50aW5nRGlzYWJsZWQo
KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgc3dpdGNoIChvYmplY3QtPnN0eWxlKCku
aW1hZ2VSZW5kZXJpbmcoKSkgewpAQCAtMTE4LDcgKzExOCw3IEBAIGJvb2wgSW1hZ2VRdWFsaXR5
Q29udHJvbGxlcjo6c2hvdWxkUGFpbnRBdExvd1F1YWxpdHkoR3JhcGhpY3NDb250ZXh0JiBjb250
ZXh0LCBSCiAKICAgICAvLyBNYWtlIHN1cmUgdG8gdXNlIHRoZSB1bnpvb21lZCBpbWFnZSBzaXpl
LCBzaW5jZSBpZiBhIGZ1bGwgcGFnZSB6b29tIGlzIGluIGVmZmVjdCwgdGhlIGltYWdlCiAgICAg
Ly8gaXMgYWN0dWFsbHkgYmVpbmcgc2NhbGVkLgotICAgIEludFNpemUgaW1hZ2VTaXplKGltYWdl
LT53aWR0aCgpLCBpbWFnZS0+aGVpZ2h0KCkpOworICAgIEludFNpemUgaW1hZ2VTaXplKGltYWdl
LndpZHRoKCksIGltYWdlLmhlaWdodCgpKTsKIAogICAgIC8vIExvb2sgb3Vyc2VsdmVzIHVwIGlu
IHRoZSBoYXNodGFibGVzLgogICAgIGF1dG8gaSA9IG1fb2JqZWN0TGF5ZXJTaXplTWFwLmZpbmQo
b2JqZWN0KTsKQEAgLTE1Niw3ICsxNTYsNyBAQCBib29sIEltYWdlUXVhbGl0eUNvbnRyb2xsZXI6
OnNob3VsZFBhaW50QXRMb3dRdWFsaXR5KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgUgogCiAg
ICAgLy8gVGhlcmUgaXMgbm8gbmVlZCB0byBoYXNoIHNjYWxlZCBpbWFnZXMgdGhhdCBhbHdheXMg
dXNlIGxvdyBxdWFsaXR5IG1vZGUgd2hlbiB0aGUgcGFnZSBkZW1hbmRzIGl0LiBUaGlzIGlzIHRo
ZSBpQ2hhdCBjYXNlLgogICAgIGlmIChtX3JlbmRlclZpZXcuZnJhbWUoKS5wYWdlKCktPmluTG93
UXVhbGl0eUltYWdlSW50ZXJwb2xhdGlvbk1vZGUoKSkgewotICAgICAgICBkb3VibGUgdG90YWxQ
aXhlbHMgPSBzdGF0aWNfY2FzdDxkb3VibGU+KGltYWdlLT53aWR0aCgpKSAqIHN0YXRpY19jYXN0
PGRvdWJsZT4oaW1hZ2UtPmhlaWdodCgpKTsKKyAgICAgICAgZG91YmxlIHRvdGFsUGl4ZWxzID0g
c3RhdGljX2Nhc3Q8ZG91YmxlPihpbWFnZS53aWR0aCgpKSAqIHN0YXRpY19jYXN0PGRvdWJsZT4o
aW1hZ2UuaGVpZ2h0KCkpOwogICAgICAgICBpZiAodG90YWxQaXhlbHMgPiBjSW50ZXJwb2xhdGlv
bkN1dG9mZikKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbWFnZVF1YWxpdHlDb250cm9sbGVyLmggYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvSW1hZ2VRdWFsaXR5Q29udHJvbGxlci5oCmluZGV4IGQxNGRjNDlh
YTc5YWYzMTVkYWM4ZTFkNTEyMWMzNDAyNjBlZjY1ZTMuLjVmNzExNjQ3NTEwY2QyMmI5NjI1OTI2
NzM1ODRmODZjMDgxZjU4OWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9J
bWFnZVF1YWxpdHlDb250cm9sbGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lt
YWdlUXVhbGl0eUNvbnRyb2xsZXIuaApAQCAtNDMsNyArNDMsNyBAQCBjbGFzcyBJbWFnZVF1YWxp
dHlDb250cm9sbGVyIHsKIHB1YmxpYzoKICAgICBleHBsaWNpdCBJbWFnZVF1YWxpdHlDb250cm9s
bGVyKGNvbnN0IFJlbmRlclZpZXcmKTsKIAotICAgIGJvb2wgc2hvdWxkUGFpbnRBdExvd1F1YWxp
dHkoR3JhcGhpY3NDb250ZXh0JiwgUmVuZGVyQm94TW9kZWxPYmplY3QqLCBJbWFnZSosIGNvbnN0
IHZvaWQqIGxheWVyLCBjb25zdCBMYXlvdXRTaXplJik7CisgICAgYm9vbCBzaG91bGRQYWludEF0
TG93UXVhbGl0eShHcmFwaGljc0NvbnRleHQmLCBSZW5kZXJCb3hNb2RlbE9iamVjdCosIEltYWdl
JiwgY29uc3Qgdm9pZCogbGF5ZXIsIGNvbnN0IExheW91dFNpemUmKTsKICAgICB2b2lkIHJlbmRl
cmVyV2lsbEJlRGVzdHJveWVkKFJlbmRlckJveE1vZGVsT2JqZWN0JiByZW5kZXJlcikgeyByZW1v
dmVPYmplY3QoJnJlbmRlcmVyKTsgfQogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5jcHAKaW5kZXggMWVkYzVhZmM5NGMxZDli
MzBhYWUwMTA5MTg1YzUxOGMzNTEyOTJlOC4uZDJhZGUwOTA4MGFkZTRhMWIyZTVjNDAzZmVmYTky
NWRjYWU5ZmVlZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJv
eE1vZGVsT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94
TW9kZWxPYmplY3QuY3BwCkBAIC0xNjEsNyArMTYxLDcgQEAgdm9pZCBSZW5kZXJCb3hNb2RlbE9i
amVjdDo6c3VzcGVuZEFuaW1hdGlvbnMoZG91YmxlIHRpbWUpCiAgICAgbGF5ZXIoKS0+YmFja2lu
ZygpLT5zdXNwZW5kQW5pbWF0aW9ucyh0aW1lKTsKIH0KIAotYm9vbCBSZW5kZXJCb3hNb2RlbE9i
amVjdDo6c2hvdWxkUGFpbnRBdExvd1F1YWxpdHkoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBJ
bWFnZSogaW1hZ2UsIGNvbnN0IHZvaWQqIGxheWVyLCBjb25zdCBMYXlvdXRTaXplJiBzaXplKQor
Ym9vbCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6c2hvdWxkUGFpbnRBdExvd1F1YWxpdHkoR3JhcGhp
Y3NDb250ZXh0JiBjb250ZXh0LCBJbWFnZSYgaW1hZ2UsIGNvbnN0IHZvaWQqIGxheWVyLCBjb25z
dCBMYXlvdXRTaXplJiBzaXplKQogewogICAgIHJldHVybiB2aWV3KCkuaW1hZ2VRdWFsaXR5Q29u
dHJvbGxlcigpLnNob3VsZFBhaW50QXRMb3dRdWFsaXR5KGNvbnRleHQsIHRoaXMsIGltYWdlLCBs
YXllciwgc2l6ZSk7CiB9CkBAIC04MzAsMTggKzgzMCwxNyBAQCB2b2lkIFJlbmRlckJveE1vZGVs
T2JqZWN0OjpwYWludEZpbGxMYXllckV4dGVuZGVkKGNvbnN0IFBhaW50SW5mbyYgcGFpbnRJbmZv
LCBjbwogICAgIGlmICghYmFzZUJnQ29sb3JPbmx5ICYmIHNob3VsZFBhaW50QmFja2dyb3VuZElt
YWdlKSB7CiAgICAgICAgIEJhY2tncm91bmRJbWFnZUdlb21ldHJ5IGdlb21ldHJ5ID0gY2FsY3Vs
YXRlQmFja2dyb3VuZEltYWdlR2VvbWV0cnkocGFpbnRJbmZvLnBhaW50Q29udGFpbmVyLCAqYmdM
YXllciwgcmVjdC5sb2NhdGlvbigpLCBzY3JvbGxlZFBhaW50UmVjdCwgYmFja2dyb3VuZE9iamVj
dCk7CiAgICAgICAgIGdlb21ldHJ5LmNsaXAoTGF5b3V0UmVjdChwaXhlbFNuYXBwZWRSZWN0KSk7
Ci0gICAgICAgIGlmICghZ2VvbWV0cnkuZGVzdFJlY3QoKS5pc0VtcHR5KCkpIHsKKyAgICAgICAg
UmVmUHRyPEltYWdlPiBpbWFnZTsKKyAgICAgICAgaWYgKCFnZW9tZXRyeS5kZXN0UmVjdCgpLmlz
RW1wdHkoKSAmJiAoaW1hZ2UgPSBiZ0ltYWdlLT5pbWFnZShiYWNrZ3JvdW5kT2JqZWN0ID8gYmFj
a2dyb3VuZE9iamVjdCA6IHRoaXMsIGdlb21ldHJ5LnRpbGVTaXplKCkpKSkgewogICAgICAgICAg
ICAgQ29tcG9zaXRlT3BlcmF0b3IgY29tcG9zaXRlT3AgPSBvcCA9PSBDb21wb3NpdGVTb3VyY2VP
dmVyID8gYmdMYXllci0+Y29tcG9zaXRlKCkgOiBvcDsKLSAgICAgICAgICAgIGF1dG8gY2xpZW50
Rm9yQmFja2dyb3VuZEltYWdlID0gYmFja2dyb3VuZE9iamVjdCA/IGJhY2tncm91bmRPYmplY3Qg
OiB0aGlzOwotICAgICAgICAgICAgUmVmUHRyPEltYWdlPiBpbWFnZSA9IGJnSW1hZ2UtPmltYWdl
KGNsaWVudEZvckJhY2tncm91bmRJbWFnZSwgZ2VvbWV0cnkudGlsZVNpemUoKSk7CiAgICAgICAg
ICAgICBjb250ZXh0LnNldERyYXdMdW1pbmFuY2VNYXNrKGJnTGF5ZXItPm1hc2tTb3VyY2VUeXBl
KCkgPT0gTWFza0x1bWluYW5jZSk7Ci0gICAgICAgICAgICBib29sIHVzZUxvd1F1YWxpdHlTY2Fs
aW5nID0gc2hvdWxkUGFpbnRBdExvd1F1YWxpdHkoY29udGV4dCwgaW1hZ2UuZ2V0KCksIGJnTGF5
ZXIsIGdlb21ldHJ5LnRpbGVTaXplKCkpOwotICAgICAgICAgICAgY29udGV4dC5kcmF3VGlsZWRJ
bWFnZShpbWFnZS5nZXQoKSwgc3R5bGUoKS5jb2xvclNwYWNlKCksIGdlb21ldHJ5LmRlc3RSZWN0
KCksIHRvTGF5b3V0UG9pbnQoZ2VvbWV0cnkucmVsYXRpdmVQaGFzZSgpKSwgZ2VvbWV0cnkudGls
ZVNpemUoKSwgZ2VvbWV0cnkuc3BhY2VTaXplKCksIEltYWdlUGFpbnRpbmdPcHRpb25zKGNvbXBv
c2l0ZU9wLCBiZ0xheWVyLT5ibGVuZE1vZGUoKSwgSW1hZ2VPcmllbnRhdGlvbkRlc2NyaXB0aW9u
KCksIHVzZUxvd1F1YWxpdHlTY2FsaW5nKSk7CisgICAgICAgICAgICBib29sIHVzZUxvd1F1YWxp
dHlTY2FsaW5nID0gc2hvdWxkUGFpbnRBdExvd1F1YWxpdHkoY29udGV4dCwgKmltYWdlLCBiZ0xh
eWVyLCBnZW9tZXRyeS50aWxlU2l6ZSgpKTsKKyAgICAgICAgICAgIGNvbnRleHQuZHJhd1RpbGVk
SW1hZ2UoKmltYWdlLCBzdHlsZSgpLmNvbG9yU3BhY2UoKSwgZ2VvbWV0cnkuZGVzdFJlY3QoKSwg
dG9MYXlvdXRQb2ludChnZW9tZXRyeS5yZWxhdGl2ZVBoYXNlKCkpLCBnZW9tZXRyeS50aWxlU2l6
ZSgpLCBnZW9tZXRyeS5zcGFjZVNpemUoKSwgSW1hZ2VQYWludGluZ09wdGlvbnMoY29tcG9zaXRl
T3AsIGJnTGF5ZXItPmJsZW5kTW9kZSgpLCBJbWFnZU9yaWVudGF0aW9uRGVzY3JpcHRpb24oKSwg
dXNlTG93UXVhbGl0eVNjYWxpbmcpKTsKICAgICAgICAgfQogICAgIH0KIAotICAgIGlmIChiZ0xh
eWVyLT5jbGlwKCkgPT0gVGV4dEZpbGxCb3gpIHsKLSAgICAgICAgY29udGV4dC5kcmF3SW1hZ2VC
dWZmZXIobWFza0ltYWdlLmdldCgpLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBtYXNrUmVjdCwgQ29t
cG9zaXRlRGVzdGluYXRpb25Jbik7CisgICAgaWYgKG1hc2tJbWFnZSAmJiBiZ0xheWVyLT5jbGlw
KCkgPT0gVGV4dEZpbGxCb3gpIHsKKyAgICAgICAgY29udGV4dC5kcmF3SW1hZ2VCdWZmZXIoKm1h
c2tJbWFnZSwgQ29sb3JTcGFjZURldmljZVJHQiwgbWFza1JlY3QsIENvbXBvc2l0ZURlc3RpbmF0
aW9uSW4pOwogICAgICAgICBjb250ZXh0LmVuZFRyYW5zcGFyZW5jeUxheWVyKCk7CiAgICAgfQog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2Jq
ZWN0LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuaApp
bmRleCA1YjEwODllZDYwZTQzZjJjNjQwMzhlZTlkZjY3M2JjNzdhMjQ3YjRjLi5iNmY2ZDYzNGZh
NGY3NTk1MDAxNmYwMDI3MmI0ZmMwNTk0OWE0NTgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuaApAQCAtMjUxLDcgKzI1MSw3IEBAIHByb3Rl
Y3RlZDoKICAgICBSb3VuZGVkUmVjdCBiYWNrZ3JvdW5kUm91bmRlZFJlY3RBZGp1c3RlZEZvckJs
ZWVkQXZvaWRhbmNlKGNvbnN0IEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IExheW91dFJlY3QmLCBC
YWNrZ3JvdW5kQmxlZWRBdm9pZGFuY2UsIElubGluZUZsb3dCb3gqLCBjb25zdCBMYXlvdXRTaXpl
JiwgYm9vbCBpbmNsdWRlTG9naWNhbExlZnRFZGdlLCBib29sIGluY2x1ZGVMb2dpY2FsUmlnaHRF
ZGdlKSBjb25zdDsKICAgICBMYXlvdXRSZWN0IGJvcmRlcklubmVyUmVjdEFkanVzdGVkRm9yQmxl
ZWRBdm9pZGFuY2UoY29uc3QgR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgTGF5b3V0UmVjdCYsIEJh
Y2tncm91bmRCbGVlZEF2b2lkYW5jZSkgY29uc3Q7CiAKLSAgICBib29sIHNob3VsZFBhaW50QXRM
b3dRdWFsaXR5KEdyYXBoaWNzQ29udGV4dCYsIEltYWdlKiwgY29uc3Qgdm9pZCosIGNvbnN0IExh
eW91dFNpemUmKTsKKyAgICBib29sIHNob3VsZFBhaW50QXRMb3dRdWFsaXR5KEdyYXBoaWNzQ29u
dGV4dCYsIEltYWdlJiwgY29uc3Qgdm9pZCosIGNvbnN0IExheW91dFNpemUmKTsKIAogICAgIFJl
bmRlckJveE1vZGVsT2JqZWN0KiBjb250aW51YXRpb24oKSBjb25zdDsKICAgICB2b2lkIHNldENv
bnRpbnVhdGlvbihSZW5kZXJCb3hNb2RlbE9iamVjdCopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckVtYmVkZGVkT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJFbWJlZGRlZE9iamVjdC5jcHAKaW5kZXggODhiNDU2NGQzM2FlZjdl
NDZhMzkyMzcwZDA2NzUwYzNkNjBkNDkxNC4uYTNmODg5MWZkOTk3ZThjMmNhODZmNTBjYjVmZmY2
YzFiMDA1N2VkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVt
YmVkZGVkT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRW1i
ZWRkZWRPYmplY3QuY3BwCkBAIC0xOTcsNyArMTk3LDcgQEAgdm9pZCBSZW5kZXJFbWJlZGRlZE9i
amVjdDo6c2V0VW5hdmFpbGFibGVQbHVnaW5JbmRpY2F0b3JJc1ByZXNzZWQoYm9vbCBwcmVzc2Vk
KQogICAgIHJlcGFpbnQoKTsKIH0KIAotdm9pZCBSZW5kZXJFbWJlZGRlZE9iamVjdDo6cGFpbnRT
bmFwc2hvdEltYWdlKFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2ludCYgcGFp
bnRPZmZzZXQsIEltYWdlKiBpbWFnZSkKK3ZvaWQgUmVuZGVyRW1iZWRkZWRPYmplY3Q6OnBhaW50
U25hcHNob3RJbWFnZShQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQmIHBh
aW50T2Zmc2V0LCBJbWFnZSYgaW1hZ2UpCiB7CiAgICAgTGF5b3V0VW5pdCBjV2lkdGggPSBjb250
ZW50V2lkdGgoKTsKICAgICBMYXlvdXRVbml0IGNIZWlnaHQgPSBjb250ZW50SGVpZ2h0KCk7CkBA
IC0yMTQsNyArMjE0LDcgQEAgdm9pZCBSZW5kZXJFbWJlZGRlZE9iamVjdDo6cGFpbnRTbmFwc2hv
dEltYWdlKFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXQKICAgICBpZiAoYWxpZ25l
ZFJlY3Qud2lkdGgoKSA8PSAwIHx8IGFsaWduZWRSZWN0LmhlaWdodCgpIDw9IDApCiAgICAgICAg
IHJldHVybjsKIAotICAgIGJvb2wgdXNlTG93UXVhbGl0eVNjYWxpbmcgPSBzaG91bGRQYWludEF0
TG93UXVhbGl0eShjb250ZXh0LCBpbWFnZSwgaW1hZ2UsIGFsaWduZWRSZWN0LnNpemUoKSk7Cisg
ICAgYm9vbCB1c2VMb3dRdWFsaXR5U2NhbGluZyA9IHNob3VsZFBhaW50QXRMb3dRdWFsaXR5KGNv
bnRleHQsIGltYWdlLCAmaW1hZ2UsIGFsaWduZWRSZWN0LnNpemUoKSk7CiAgICAgSW1hZ2VPcmll
bnRhdGlvbkRlc2NyaXB0aW9uIG9yaWVudGF0aW9uRGVzY3JpcHRpb24oc2hvdWxkUmVzcGVjdElt
YWdlT3JpZW50YXRpb24oKSk7CiAjaWYgRU5BQkxFKENTU19JTUFHRV9PUklFTlRBVElPTikKICAg
ICBvcmllbnRhdGlvbkRlc2NyaXB0aW9uLnNldEltYWdlT3JpZW50YXRpb25FbnVtKHN0eWxlKCku
aW1hZ2VPcmllbnRhdGlvbigpKTsKQEAgLTIzOSw3ICsyMzksNyBAQCB2b2lkIFJlbmRlckVtYmVk
ZGVkT2JqZWN0OjpwYWludENvbnRlbnRzKFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlv
dXRQb2ludAogICAgICAgICByZXR1cm47CiAKICAgICBpZiAoSW1hZ2UqIHNuYXBzaG90ID0gZG93
bmNhc3Q8SFRNTFBsdWdJbkltYWdlRWxlbWVudD4ocGx1Z0luRWxlbWVudCkuc25hcHNob3RJbWFn
ZSgpKQotICAgICAgICBwYWludFNuYXBzaG90SW1hZ2UocGFpbnRJbmZvLCBwYWludE9mZnNldCwg
c25hcHNob3QpOworICAgICAgICBwYWludFNuYXBzaG90SW1hZ2UocGFpbnRJbmZvLCBwYWludE9m
ZnNldCwgKnNuYXBzaG90KTsKIH0KIAogdm9pZCBSZW5kZXJFbWJlZGRlZE9iamVjdDo6cGFpbnQo
UGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFBvaW50JiBwYWludE9mZnNldCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbWJlZGRlZE9iamVjdC5o
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVtYmVkZGVkT2JqZWN0LmgKaW5kZXgg
YmQ2NjY4ZDM0OGZjNzBiMTAyYTkyMWJlMDk1ZDE5NDVhOGRhZTNkOC4uODk1OWUxZjVhZmFlY2Qy
NzAyNjAzMTY4YmY3MTM5YmQ1YzYwNDZkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckVtYmVkZGVkT2JqZWN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckVtYmVkZGVkT2JqZWN0LmgKQEAgLTczLDcgKzczLDcgQEAgcHJpdmF0ZToKICAg
ICB2aXJ0dWFsIGNvbnN0IGNoYXIqIHJlbmRlck5hbWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVy
biAiUmVuZGVyRW1iZWRkZWRPYmplY3QiOyB9CiAgICAgdmlydHVhbCBib29sIGlzRW1iZWRkZWRP
YmplY3QoKSBjb25zdCBvdmVycmlkZSBmaW5hbCB7IHJldHVybiB0cnVlOyB9CiAKLSAgICB2b2lk
IHBhaW50U25hcHNob3RJbWFnZShQYWludEluZm8mLCBjb25zdCBMYXlvdXRQb2ludCYsIEltYWdl
Kik7CisgICAgdm9pZCBwYWludFNuYXBzaG90SW1hZ2UoUGFpbnRJbmZvJiwgY29uc3QgTGF5b3V0
UG9pbnQmLCBJbWFnZSYpOwogICAgIHZpcnR1YWwgdm9pZCBwYWludENvbnRlbnRzKFBhaW50SW5m
byYsIGNvbnN0IExheW91dFBvaW50Jikgb3ZlcnJpZGUgZmluYWw7CiAKICAgICB2aXJ0dWFsIGJv
b2wgcmVxdWlyZXNMYXllcigpIGNvbnN0IG92ZXJyaWRlIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJJbWFnZS5jcHAKaW5kZXggNjlhZDIxNDhmYTc5ZGVhYzZhMjkyZDI3OGMx
MzU2ZmJmYTg1ZDI1Mi4uMWQ0NzhiZjZmZmM4N2ZlZmY0NzU1NzQxNTI1MjRmYjFkYzg3MmRiNyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2UuY3BwCkBAIC00MjQsNyArNDI0
LDcgQEAgdm9pZCBSZW5kZXJJbWFnZTo6cGFpbnRSZXBsYWNlZChQYWludEluZm8mIHBhaW50SW5m
bywgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50T2YKICNpZiBFTkFCTEUoQ1NTX0lNQUdFX09SSUVO
VEFUSU9OKQogICAgICAgICAgICAgICAgIG9yaWVudGF0aW9uRGVzY3JpcHRpb24uc2V0SW1hZ2VP
cmllbnRhdGlvbkVudW0oc3R5bGUoKS5pbWFnZU9yaWVudGF0aW9uKCkpOwogI2VuZGlmCi0gICAg
ICAgICAgICAgICAgY29udGV4dC5kcmF3SW1hZ2UoaW1hZ2UuZ2V0KCksIHN0eWxlKCkuY29sb3JT
cGFjZSgpLCBzbmFwUmVjdFRvRGV2aWNlUGl4ZWxzKExheW91dFJlY3QocGFpbnRPZmZzZXQgKyBp
bWFnZU9mZnNldCwgaW1hZ2VTaXplKSwgZGV2aWNlU2NhbGVGYWN0b3IpLCBvcmllbnRhdGlvbkRl
c2NyaXB0aW9uKTsKKyAgICAgICAgICAgICAgICBjb250ZXh0LmRyYXdJbWFnZSgqaW1hZ2UsIHN0
eWxlKCkuY29sb3JTcGFjZSgpLCBzbmFwUmVjdFRvRGV2aWNlUGl4ZWxzKExheW91dFJlY3QocGFp
bnRPZmZzZXQgKyBpbWFnZU9mZnNldCwgaW1hZ2VTaXplKSwgZGV2aWNlU2NhbGVGYWN0b3IpLCBv
cmllbnRhdGlvbkRlc2NyaXB0aW9uKTsKICAgICAgICAgICAgICAgICBlcnJvclBpY3R1cmVEcmF3
biA9IHRydWU7CiAgICAgICAgICAgICB9CiAKQEAgLTU0OCwxMiArNTQ4LDEyIEBAIHZvaWQgUmVu
ZGVySW1hZ2U6OnBhaW50SW50b1JlY3QoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBG
bG9hdFJlY3QmIHJlY3QpCiAgICAgSFRNTEltYWdlRWxlbWVudCogaW1hZ2VFbGVtZW50ID0gaXM8
SFRNTEltYWdlRWxlbWVudD4oZWxlbWVudCgpKSA/IGRvd25jYXN0PEhUTUxJbWFnZUVsZW1lbnQ+
KGVsZW1lbnQoKSkgOiBudWxscHRyOwogICAgIENvbXBvc2l0ZU9wZXJhdG9yIGNvbXBvc2l0ZU9w
ZXJhdG9yID0gaW1hZ2VFbGVtZW50ID8gaW1hZ2VFbGVtZW50LT5jb21wb3NpdGVPcGVyYXRvcigp
IDogQ29tcG9zaXRlU291cmNlT3ZlcjsKICAgICBJbWFnZSogaW1hZ2UgPSBpbWFnZVJlc291cmNl
KCkuaW1hZ2UoKS5nZXQoKTsKLSAgICBib29sIHVzZUxvd1F1YWxpdHlTY2FsaW5nID0gc2hvdWxk
UGFpbnRBdExvd1F1YWxpdHkoY29udGV4dCwgaW1hZ2UsIGltYWdlLCBMYXlvdXRTaXplKHJlY3Qu
c2l6ZSgpKSk7CisgICAgYm9vbCB1c2VMb3dRdWFsaXR5U2NhbGluZyA9IGltYWdlICYmIHNob3Vs
ZFBhaW50QXRMb3dRdWFsaXR5KGNvbnRleHQsICppbWFnZSwgaW1hZ2UsIExheW91dFNpemUocmVj
dC5zaXplKCkpKTsKICAgICBJbWFnZU9yaWVudGF0aW9uRGVzY3JpcHRpb24gb3JpZW50YXRpb25E
ZXNjcmlwdGlvbihzaG91bGRSZXNwZWN0SW1hZ2VPcmllbnRhdGlvbigpKTsKICNpZiBFTkFCTEUo
Q1NTX0lNQUdFX09SSUVOVEFUSU9OKQogICAgIG9yaWVudGF0aW9uRGVzY3JpcHRpb24uc2V0SW1h
Z2VPcmllbnRhdGlvbkVudW0oc3R5bGUoKS5pbWFnZU9yaWVudGF0aW9uKCkpOwogI2VuZGlmCi0g
ICAgY29udGV4dC5kcmF3SW1hZ2UoaW1hZ2VSZXNvdXJjZSgpLmltYWdlKHJlY3Qud2lkdGgoKSwg
cmVjdC5oZWlnaHQoKSkuZ2V0KCksIHN0eWxlKCkuY29sb3JTcGFjZSgpLCByZWN0LAorICAgIGNv
bnRleHQuZHJhd0ltYWdlKCppbWcsIHN0eWxlKCkuY29sb3JTcGFjZSgpLCByZWN0LAogICAgICAg
ICBJbWFnZVBhaW50aW5nT3B0aW9ucyhjb21wb3NpdGVPcGVyYXRvciwgQmxlbmRNb2RlTm9ybWFs
LCBvcmllbnRhdGlvbkRlc2NyaXB0aW9uLCB1c2VMb3dRdWFsaXR5U2NhbGluZykpOwogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2VSZXNvdXJjZVN0
eWxlSW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlUmVzb3Vy
Y2VTdHlsZUltYWdlLmNwcAppbmRleCA0MmIzN2RkZDY3ZjFkMTdmNTFjMTMwODhkMjE2ZDY0OGNh
NjQ2ZGQwLi41MWE4NmE2ZjgyYzA3ZTEyNjA5NWFkMDhjNzNmMGZhZTBlZWYyYmQ0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2VSZXNvdXJjZVN0eWxlSW1h
Z2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZVJlc291cmNl
U3R5bGVJbWFnZS5jcHAKQEAgLTU3LDE0ICs1NywxNCBAQCB2b2lkIFJlbmRlckltYWdlUmVzb3Vy
Y2VTdHlsZUltYWdlOjpzaHV0ZG93bigpCiB7CiAgICAgQVNTRVJUKG1fcmVuZGVyZXIpOwogICAg
IG1fc3R5bGVJbWFnZS0+cmVtb3ZlQ2xpZW50KG1fcmVuZGVyZXIpOwotICAgIG1fY2FjaGVkSW1h
Z2UgPSAwOworICAgIG1fY2FjaGVkSW1hZ2UgPSBudWxscHRyOwogfQogCiBQYXNzUmVmUHRyPElt
YWdlPiBSZW5kZXJJbWFnZVJlc291cmNlU3R5bGVJbWFnZTo6aW1hZ2UoaW50IHdpZHRoLCBpbnQg
aGVpZ2h0KSBjb25zdAogewogICAgIC8vIEdlbmVyYXRlZCBjb250ZW50IG1heSB0cmlnZ2VyIGNh
bGxzIHRvIGltYWdlKCkgd2hpbGUgd2UncmUgc3RpbGwgcGVuZGluZywgZG9uJ3QgYXNzZXJ0IGJ1
dCBncmFjZWZ1bGx5IGV4aXQuCiAgICAgaWYgKG1fc3R5bGVJbWFnZS0+aXNQZW5kaW5nSW1hZ2Uo
KSkKLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIHJldHVy
biBtX3N0eWxlSW1hZ2UtPmltYWdlKG1fcmVuZGVyZXIsIEludFNpemUod2lkdGgsIGhlaWdodCkp
OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcAppbmRleCAzNDk4
YzdjYzg0NGEzNDQzZDlhNDQzZGM2NTQ0ZDUwZjEyM2FhMWJhLi4wN2E1YWY3NzU3ZDRmMjZhMjM2
NmIyNTNlNWZhZTdjZDhhNDg1Y2ExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyTGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJM
YXllci5jcHAKQEAgLTM2NTUsMTIgKzM2NTUsMTYgQEAgdm9pZCBSZW5kZXJMYXllcjo6ZHJhd1Bs
YXRmb3JtUmVzaXplckltYWdlKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgTGF5b3UK
ICAgICAgICAgY29udGV4dC5zYXZlKCk7CiAgICAgICAgIGNvbnRleHQudHJhbnNsYXRlKHJlc2l6
ZXJDb3JuZXJSZWN0LngoKSArIGNvcm5lclJlc2l6ZXJTaXplLndpZHRoKCksIHJlc2l6ZXJDb3Ju
ZXJSZWN0LnkoKSArIHJlc2l6ZXJDb3JuZXJSZWN0LmhlaWdodCgpIC0gY29ybmVyUmVzaXplclNp
emUuaGVpZ2h0KCkpOwogICAgICAgICBjb250ZXh0LnNjYWxlKEZsb2F0U2l6ZSgtMS4wLCAxLjAp
KTsKLSAgICAgICAgY29udGV4dC5kcmF3SW1hZ2UocmVzaXplQ29ybmVySW1hZ2UuZ2V0KCksIHJl
bmRlcmVyKCkuc3R5bGUoKS5jb2xvclNwYWNlKCksIEZsb2F0UmVjdChGbG9hdFBvaW50KCksIGNv
cm5lclJlc2l6ZXJTaXplKSk7CisgICAgICAgIGlmIChyZXNpemVDb3JuZXJJbWFnZSkKKyAgICAg
ICAgICAgIGNvbnRleHQuZHJhd0ltYWdlKCpyZXNpemVDb3JuZXJJbWFnZSwgcmVuZGVyZXIoKS5z
dHlsZSgpLmNvbG9yU3BhY2UoKSwgRmxvYXRSZWN0KEZsb2F0UG9pbnQoKSwgY29ybmVyUmVzaXpl
clNpemUpKTsKICAgICAgICAgY29udGV4dC5yZXN0b3JlKCk7CiAgICAgICAgIHJldHVybjsKICAg
ICB9CisgICAgCisgICAgaWYgKCFyZXNpemVDb3JuZXJJbWFnZSkKKyAgICAgICAgcmV0dXJuOwog
ICAgIEZsb2F0UmVjdCBpbWFnZVJlY3QgPSBzbmFwUmVjdFRvRGV2aWNlUGl4ZWxzKExheW91dFJl
Y3QocmVzaXplckNvcm5lclJlY3QubWF4WE1heFlDb3JuZXIoKSAtIGNvcm5lclJlc2l6ZXJTaXpl
LCBjb3JuZXJSZXNpemVyU2l6ZSksIHJlbmRlcmVyKCkuZG9jdW1lbnQoKS5kZXZpY2VTY2FsZUZh
Y3RvcigpKTsKLSAgICBjb250ZXh0LmRyYXdJbWFnZShyZXNpemVDb3JuZXJJbWFnZS5nZXQoKSwg
cmVuZGVyZXIoKS5zdHlsZSgpLmNvbG9yU3BhY2UoKSwgaW1hZ2VSZWN0KTsKKyAgICBjb250ZXh0
LmRyYXdJbWFnZSgqcmVzaXplQ29ybmVySW1hZ2UsIHJlbmRlcmVyKCkuc3R5bGUoKS5jb2xvclNw
YWNlKCksIGltYWdlUmVjdCk7CiB9CiAKIHZvaWQgUmVuZGVyTGF5ZXI6OnBhaW50UmVzaXplcihH
cmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IExheW91dFBvaW50JiBwYWludE9mZnNldCwg
Y29uc3QgTGF5b3V0UmVjdCYgZGFtYWdlUmVjdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJMaXN0TWFya2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJMaXN0TWFya2VyLmNwcAppbmRleCA0MDA3YWE3MGRjMTg0YWZlMjgyMzk1MTMyZmE4
ZDI0MDcyNTAzNDljLi5mNmUzNDZkMzdiMDViYTQ2YTlmNjYwODA2MjA1YjQyNTFjN2IzNTE5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdE1hcmtlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RNYXJrZXIuY3BwCkBAIC0x
MTk3LDcgKzExOTcsOCBAQCB2b2lkIFJlbmRlckxpc3RNYXJrZXI6OnBhaW50KFBhaW50SW5mbyYg
cGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbnRPZmZzZQogICAgIEdyYXBoaWNzQ29u
dGV4dCYgY29udGV4dCA9IHBhaW50SW5mby5jb250ZXh0KCk7CiAKICAgICBpZiAoaXNJbWFnZSgp
KSB7Ci0gICAgICAgIGNvbnRleHQuZHJhd0ltYWdlKG1faW1hZ2UtPmltYWdlKHRoaXMsIG1hcmtl
ci5zaXplKCkpLmdldCgpLCBzdHlsZSgpLmNvbG9yU3BhY2UoKSwgbWFya2VyKTsKKyAgICAgICAg
aWYgKFJlZlB0cjxJbWFnZT4gbWFya2VySW1hZ2UgPSBtX2ltYWdlLT5pbWFnZSh0aGlzLCBtYXJr
ZXIuc2l6ZSgpKSkKKyAgICAgICAgICAgIGNvbnRleHQuZHJhd0ltYWdlKCptYXJrZXJJbWFnZSwg
c3R5bGUoKS5jb2xvclNwYWNlKCksIG1hcmtlcik7CiAgICAgICAgIGlmIChzZWxlY3Rpb25TdGF0
ZSgpICE9IFNlbGVjdGlvbk5vbmUpIHsKICAgICAgICAgICAgIExheW91dFJlY3Qgc2VsUmVjdCA9
IGxvY2FsU2VsZWN0aW9uUmVjdCgpOwogICAgICAgICAgICAgc2VsUmVjdC5tb3ZlQnkoYm94T3Jp
Z2luKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTbmFwc2hv
dHRlZFBsdWdJbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU25hcHNob3R0
ZWRQbHVnSW4uY3BwCmluZGV4IGJkMWE5ZDUxZDI1YjNkODljNDFhMDkxMDI5YTg5MzRlMWRkNjQ1
MGUuLmVjNDJjNjJjODEyN2NlZDM4ZTU2MTY4NGQ4N2U4YjUwOWYxOWIzYzUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTbmFwc2hvdHRlZFBsdWdJbi5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNuYXBzaG90dGVkUGx1Z0luLmNwcApA
QCAtMTM1LDEzICsxMzUsMTMgQEAgdm9pZCBSZW5kZXJTbmFwc2hvdHRlZFBsdWdJbjo6cGFpbnRT
bmFwc2hvdChQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG8KICAgICBpZiAoYWxp
Z25lZFJlY3Qud2lkdGgoKSA8PSAwIHx8IGFsaWduZWRSZWN0LmhlaWdodCgpIDw9IDApCiAgICAg
ICAgIHJldHVybjsKIAotICAgIGJvb2wgdXNlTG93UXVhbGl0eVNjYWxpbmcgPSBzaG91bGRQYWlu
dEF0TG93UXVhbGl0eShjb250ZXh0LCBpbWFnZSwgaW1hZ2UsIGFsaWduZWRSZWN0LnNpemUoKSk7
CisgICAgYm9vbCB1c2VMb3dRdWFsaXR5U2NhbGluZyA9IHNob3VsZFBhaW50QXRMb3dRdWFsaXR5
KGNvbnRleHQsICppbWFnZSwgaW1hZ2UsIGFsaWduZWRSZWN0LnNpemUoKSk7CiAKICAgICBJbWFn
ZU9yaWVudGF0aW9uRGVzY3JpcHRpb24gb3JpZW50YXRpb25EZXNjcmlwdGlvbihzaG91bGRSZXNw
ZWN0SW1hZ2VPcmllbnRhdGlvbigpKTsKICNpZiBFTkFCTEUoQ1NTX0lNQUdFX09SSUVOVEFUSU9O
KQogICAgIG9yaWVudGF0aW9uRGVzY3JpcHRpb24uc2V0SW1hZ2VPcmllbnRhdGlvbkVudW0oc3R5
bGUoKS5pbWFnZU9yaWVudGF0aW9uKCkpOwogI2VuZGlmCi0gICAgY29udGV4dC5kcmF3SW1hZ2Uo
aW1hZ2UsIHN0eWxlKCkuY29sb3JTcGFjZSgpLCBhbGlnbmVkUmVjdCwgSW1hZ2VQYWludGluZ09w
dGlvbnMob3JpZW50YXRpb25EZXNjcmlwdGlvbiwgdXNlTG93UXVhbGl0eVNjYWxpbmcpKTsKKyAg
ICBjb250ZXh0LmRyYXdJbWFnZSgqaW1hZ2UsIHN0eWxlKCkuY29sb3JTcGFjZSgpLCBhbGlnbmVk
UmVjdCwgSW1hZ2VQYWludGluZ09wdGlvbnMob3JpZW50YXRpb25EZXNjcmlwdGlvbiwgdXNlTG93
UXVhbGl0eVNjYWxpbmcpKTsKIH0KIAogQ3Vyc29yRGlyZWN0aXZlIFJlbmRlclNuYXBzaG90dGVk
UGx1Z0luOjpnZXRDdXJzb3IoY29uc3QgTGF5b3V0UG9pbnQmIHBvaW50LCBDdXJzb3ImIG92ZXJy
aWRlQ3Vyc29yKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlclRoZW1lTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lTWFj
Lm1tCmluZGV4IGQ4YWYzZDIzZTc5OGQwMzVkNmRjMjU5YzRhMTY5MGNkNzM2Y2NmOTMuLmRhMmQ5
YTcyZTVjZjlhZGY3YTQxZjE3OTEzNzc5MGE2Y2IxYjIxNTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyVGhlbWVNYWMubW0KQEAgLTExNTgsNyArMTE1OCw3IEBAIGJvb2wgUmVu
ZGVyVGhlbWVNYWM6OnBhaW50UHJvZ3Jlc3NCYXIoY29uc3QgUmVuZGVyT2JqZWN0JiByZW5kZXJP
YmplY3QsIGNvbnN0IFBhCiAgICAgICAgIHBhaW50SW5mby5jb250ZXh0KCkuc2NhbGUoRmxvYXRT
aXplKC0xLCAxKSk7CiAgICAgfQogCi0gICAgcGFpbnRJbmZvLmNvbnRleHQoKS5kcmF3SW1hZ2VC
dWZmZXIoaW1hZ2VCdWZmZXIuZ2V0KCksIENvbG9yU3BhY2VEZXZpY2VSR0IsIGluZmxhdGVkUmVj
dC5sb2NhdGlvbigpKTsKKyAgICBwYWludEluZm8uY29udGV4dCgpLmRyYXdJbWFnZUJ1ZmZlcigq
aW1hZ2VCdWZmZXIsIENvbG9yU3BhY2VEZXZpY2VSR0IsIGluZmxhdGVkUmVjdC5sb2NhdGlvbigp
KTsKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKQEAgLTE5MTIsNyArMTkxMiw3IEBAIGJvb2wgUmVu
ZGVyVGhlbWVNYWM6OnBhaW50U25hcHNob3R0ZWRQbHVnaW5PdmVybGF5KGNvbnN0IFJlbmRlck9i
amVjdCYgcmVuZGVyZXIsCiAgICAgaWYgKGFsaWduZWRQbHVnaW5SZWN0LndpZHRoKCkgPD0gMCB8
fCBhbGlnbmVkUGx1Z2luUmVjdC5oZWlnaHQoKSA8PSAwKQogICAgICAgICByZXR1cm4gdHJ1ZTsK
IAotICAgIGNvbnRleHQuZHJhd0ltYWdlKHNuYXBzaG90LCBwbHVnSW5SZW5kZXJlci5zdHlsZSgp
LmNvbG9yU3BhY2UoKSwgYWxpZ25lZFBsdWdpblJlY3QsIENvbXBvc2l0ZVNvdXJjZU92ZXIpOwor
ICAgIGNvbnRleHQuZHJhd0ltYWdlKCpzbmFwc2hvdCwgcGx1Z0luUmVuZGVyZXIuc3R5bGUoKS5j
b2xvclNwYWNlKCksIGFsaWduZWRQbHVnaW5SZWN0LCBDb21wb3NpdGVTb3VyY2VPdmVyKTsKICAg
ICByZXR1cm4gZmFsc2U7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zaGFwZXMvU2hhcGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3NoYXBlcy9TaGFw
ZS5jcHAKaW5kZXggMmQ0NzU4MjFmZDJmYzczYTk0ZTY3NTM5NGFlOGE2MzBlYTU3ZjJmNS4uZTBj
YWVhYzljZDgwMWExYjhiNzMwYjhmNGI5ZDdhNmQ3MTdlYmFhZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3NoYXBlcy9TaGFwZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3NoYXBlcy9TaGFwZS5jcHAKQEAgLTE4NCw3ICsxODQsOCBAQCBzdGQ6OnVuaXF1
ZV9wdHI8U2hhcGU+IFNoYXBlOjpjcmVhdGVSYXN0ZXJTaGFwZShJbWFnZSogaW1hZ2UsIGZsb2F0
IHRocmVzaG9sZCwgYwogCiAgICAgaWYgKGltYWdlQnVmZmVyKSB7CiAgICAgICAgIEdyYXBoaWNz
Q29udGV4dCYgZ3JhcGhpY3NDb250ZXh0ID0gaW1hZ2VCdWZmZXItPmNvbnRleHQoKTsKLSAgICAg
ICAgZ3JhcGhpY3NDb250ZXh0LmRyYXdJbWFnZShpbWFnZSwgQ29sb3JTcGFjZURldmljZVJHQiwg
SW50UmVjdChJbnRQb2ludCgpLCBpbWFnZVJlY3Quc2l6ZSgpKSk7CisgICAgICAgIGlmIChpbWFn
ZSkKKyAgICAgICAgICAgIGdyYXBoaWNzQ29udGV4dC5kcmF3SW1hZ2UoKmltYWdlLCBDb2xvclNw
YWNlRGV2aWNlUkdCLCBJbnRSZWN0KEludFBvaW50KCksIGltYWdlUmVjdC5zaXplKCkpKTsKIAog
ICAgICAgICBSZWZQdHI8VWludDhDbGFtcGVkQXJyYXk+IHBpeGVsQXJyYXkgPSBpbWFnZUJ1ZmZl
ci0+Z2V0VW5tdWx0aXBsaWVkSW1hZ2VEYXRhKEludFJlY3QoSW50UG9pbnQoKSwgaW1hZ2VSZWN0
LnNpemUoKSkpOwogICAgICAgICB1bnNpZ25lZCBwaXhlbEFycmF5TGVuZ3RoID0gcGl4ZWxBcnJh
eS0+bGVuZ3RoKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVz
L1NoYXBlT3V0c2lkZUluZm8uY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3NoYXBlcy9T
aGFwZU91dHNpZGVJbmZvLmNwcAppbmRleCA2NmQzMTgzY2Y0MDhkNzQyZGIwMDg3NzMwMTFmOTMw
ZDhhZjUwZGQ1Li5kYzg0YjlhNTI2MTI1MDUxZDA0MWU4Y2NmMDIxYmEwNmJhYTQ3Mjk5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL1NoYXBlT3V0c2lkZUluZm8u
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMvU2hhcGVPdXRzaWRlSW5m
by5jcHAKQEAgLTE1OCw3ICsxNTgsNiBAQCBzdGQ6OnVuaXF1ZV9wdHI8U2hhcGU+IFNoYXBlT3V0
c2lkZUluZm86OmNyZWF0ZVNoYXBlRm9ySW1hZ2UoU3R5bGVJbWFnZSogc3R5bGVJbQogCiAgICAg
QVNTRVJUKCFzdHlsZUltYWdlLT5pc1BlbmRpbmdJbWFnZSgpKTsKICAgICBSZWZQdHI8SW1hZ2U+
IGltYWdlID0gc3R5bGVJbWFnZS0+aW1hZ2UoY29uc3RfY2FzdDxSZW5kZXJCb3gqPigmbV9yZW5k
ZXJlciksIGltYWdlU2l6ZSk7Ci0KICAgICByZXR1cm4gU2hhcGU6OmNyZWF0ZVJhc3RlclNoYXBl
KGltYWdlLmdldCgpLCBzaGFwZUltYWdlVGhyZXNob2xkLCBpbWFnZVJlY3QsIG1hcmdpblJlY3Qs
IHdyaXRpbmdNb2RlLCBtYXJnaW4pOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3R5bGUvTmluZVBpZWNlSW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N0eWxlL05pbmVQaWVjZUltYWdlLmNwcAppbmRleCAxNDM0YmY3YmU0MzViM2Q0YzZiYWFi
YjI0NzZmNjk5MWQ4YTU4Nzc5Li45MTQzMjE0ZmZhZTY3N2M2YzAzYWFmNTlmZmYxZmY3Y2M0OWY1
ZTc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvTmluZVBpZWNl
SW1hZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9OaW5lUGllY2VJ
bWFnZS5jcHAKQEAgLTIwNSw2ICsyMDUsOSBAQCB2b2lkIE5pbmVQaWVjZUltYWdlOjpwYWludChH
cmFwaGljc0NvbnRleHQmIGdyYXBoaWNzQ29udGV4dCwgUmVuZGVyRWxlbWVudCogcmVuZAogICAg
IFZlY3RvcjxGbG9hdFNpemU+IHRpbGVTY2FsZXMgPSBjb21wdXRlVGlsZVNjYWxlcyhkZXN0aW5h
dGlvblJlY3RzLCBzb3VyY2VSZWN0cywgaG9yaXpvbnRhbFJ1bGUoKSwgdmVydGljYWxSdWxlKCkp
OwogCiAgICAgUmVmUHRyPEltYWdlPiBpbWFnZSA9IHN0eWxlSW1hZ2UtPmltYWdlKHJlbmRlcmVy
LCBzb3VyY2UpOworICAgIGlmICghaW1hZ2UpCisgICAgICAgIHJldHVybjsKKwogICAgIENvbG9y
U3BhY2UgY29sb3JTcGFjZSA9IHN0eWxlLmNvbG9yU3BhY2UoKTsKIAogICAgIGZvciAoSW1hZ2VQ
aWVjZSBwaWVjZSA9IE1pblBpZWNlOyBwaWVjZSA8IE1heFBpZWNlOyArK3BpZWNlKSB7CkBAIC0y
MTIsMTMgKzIxNSwxMyBAQCB2b2lkIE5pbmVQaWVjZUltYWdlOjpwYWludChHcmFwaGljc0NvbnRl
eHQmIGdyYXBoaWNzQ29udGV4dCwgUmVuZGVyRWxlbWVudCogcmVuZAogICAgICAgICAgICAgY29u
dGludWU7CiAKICAgICAgICAgaWYgKGlzQ29ybmVyUGllY2UocGllY2UpKSB7Ci0gICAgICAgICAg
ICBncmFwaGljc0NvbnRleHQuZHJhd0ltYWdlKGltYWdlLmdldCgpLCBjb2xvclNwYWNlLCBkZXN0
aW5hdGlvblJlY3RzW3BpZWNlXSwgc291cmNlUmVjdHNbcGllY2VdLCBvcCk7CisgICAgICAgICAg
ICBncmFwaGljc0NvbnRleHQuZHJhd0ltYWdlKCppbWFnZSwgY29sb3JTcGFjZSwgZGVzdGluYXRp
b25SZWN0c1twaWVjZV0sIHNvdXJjZVJlY3RzW3BpZWNlXSwgb3ApOwogICAgICAgICAgICAgY29u
dGludWU7CiAgICAgICAgIH0KIAogICAgICAgICBJbWFnZTo6VGlsZVJ1bGUgaFJ1bGUgPSBpc0hv
cml6b250YWxQaWVjZShwaWVjZSkgPyBzdGF0aWNfY2FzdDxJbWFnZTo6VGlsZVJ1bGU+KGhvcml6
b250YWxSdWxlKCkpIDogSW1hZ2U6OlN0cmV0Y2hUaWxlOwogICAgICAgICBJbWFnZTo6VGlsZVJ1
bGUgdlJ1bGUgPSBpc1ZlcnRpY2FsUGllY2UocGllY2UpID8gc3RhdGljX2Nhc3Q8SW1hZ2U6OlRp
bGVSdWxlPih2ZXJ0aWNhbFJ1bGUoKSkgOiBJbWFnZTo6U3RyZXRjaFRpbGU7Ci0gICAgICAgIGdy
YXBoaWNzQ29udGV4dC5kcmF3VGlsZWRJbWFnZShpbWFnZS5nZXQoKSwgY29sb3JTcGFjZSwgZGVz
dGluYXRpb25SZWN0c1twaWVjZV0sIHNvdXJjZVJlY3RzW3BpZWNlXSwgdGlsZVNjYWxlc1twaWVj
ZV0sIGhSdWxlLCB2UnVsZSwgb3ApOworICAgICAgICBncmFwaGljc0NvbnRleHQuZHJhd1RpbGVk
SW1hZ2UoKmltYWdlLCBjb2xvclNwYWNlLCBkZXN0aW5hdGlvblJlY3RzW3BpZWNlXSwgc291cmNl
UmVjdHNbcGllY2VdLCB0aWxlU2NhbGVzW3BpZWNlXSwgaFJ1bGUsIHZSdWxlLCBvcCk7CiAgICAg
fQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNW
R0ltYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHSW1hZ2Uu
Y3BwCmluZGV4IGI4YTE5NmU5NTEzNzAxZDU2YWJlYTZiOTJjZmFkNGVkMzAzYWMzODQuLmVmNzU3
ZTczNjNmMzQ4ZGJkZmZhNTJmY2NkZThhZDJjYzAyYjczNTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHSW1hZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHSW1hZ2UuY3BwCkBAIC0xNjEsMTIgKzE2MSwxNSBA
QCB2b2lkIFJlbmRlclNWR0ltYWdlOjpwYWludChQYWludEluZm8mIHBhaW50SW5mbywgY29uc3Qg
TGF5b3V0UG9pbnQmKQogdm9pZCBSZW5kZXJTVkdJbWFnZTo6cGFpbnRGb3JlZ3JvdW5kKFBhaW50
SW5mbyYgcGFpbnRJbmZvKQogewogICAgIFJlZlB0cjxJbWFnZT4gaW1hZ2UgPSBpbWFnZVJlc291
cmNlKCkuaW1hZ2UoKTsKKyAgICBpZiAoIWltYWdlKQorICAgICAgICByZXR1cm47CisKICAgICBG
bG9hdFJlY3QgZGVzdFJlY3QgPSBtX29iamVjdEJvdW5kaW5nQm94OwogICAgIEZsb2F0UmVjdCBz
cmNSZWN0KDAsIDAsIGltYWdlLT53aWR0aCgpLCBpbWFnZS0+aGVpZ2h0KCkpOwogCiAgICAgaW1h
Z2VFbGVtZW50KCkucHJlc2VydmVBc3BlY3RSYXRpbygpLnRyYW5zZm9ybVJlY3QoZGVzdFJlY3Qs
IHNyY1JlY3QpOwogCi0gICAgcGFpbnRJbmZvLmNvbnRleHQoKS5kcmF3SW1hZ2UoaW1hZ2UuZ2V0
KCksIENvbG9yU3BhY2VEZXZpY2VSR0IsIGRlc3RSZWN0LCBzcmNSZWN0KTsKKyAgICBwYWludElu
Zm8uY29udGV4dCgpLmRyYXdJbWFnZSgqaW1hZ2UsIENvbG9yU3BhY2VEZXZpY2VSR0IsIGRlc3RS
ZWN0LCBzcmNSZWN0KTsKIH0KIAogdm9pZCBSZW5kZXJTVkdJbWFnZTo6aW52YWxpZGF0ZUJ1ZmZl
cmVkRm9yZWdyb3VuZCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3Zn
L1JlbmRlclNWR1Jlc291cmNlRmlsdGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dmcvUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXIuY3BwCmluZGV4IGMzZWRhMjk5ZGJlNWFhODQ5NWNk
M2U4N2NjZmU0Yzg4OWU2ODcyYjMuLjBmZDVkNjNlMjRmMjU3NTNkNmUyYzVlNGI3MzA0ZmMyMjQ5
YTFjNjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZH
UmVzb3VyY2VGaWx0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVu
ZGVyU1ZHUmVzb3VyY2VGaWx0ZXIuY3BwCkBAIC0yNzAsNyArMjcwLDcgQEAgdm9pZCBSZW5kZXJT
VkdSZXNvdXJjZUZpbHRlcjo6cG9zdEFwcGx5UmVzb3VyY2UoUmVuZGVyRWxlbWVudCYgcmVuZGVy
ZXIsIEdyYXBoaWMKICAgICAgICAgICAgIGNvbnRleHQtPmNvbmNhdENUTShmaWx0ZXJEYXRhLT5z
aGVhckZyZWVBYnNvbHV0ZVRyYW5zZm9ybS5pbnZlcnNlKCkpOwogCiAgICAgICAgICAgICBjb250
ZXh0LT5zY2FsZShGbG9hdFNpemUoMSAvIGZpbHRlckRhdGEtPmZpbHRlci0+ZmlsdGVyUmVzb2x1
dGlvbigpLndpZHRoKCksIDEgLyBmaWx0ZXJEYXRhLT5maWx0ZXItPmZpbHRlclJlc29sdXRpb24o
KS5oZWlnaHQoKSkpOwotICAgICAgICAgICAgY29udGV4dC0+ZHJhd0ltYWdlQnVmZmVyKHJlc3Vs
dEltYWdlLCByZW5kZXJlci5zdHlsZSgpLmNvbG9yU3BhY2UoKSwgbGFzdEVmZmVjdC0+YWJzb2x1
dGVQYWludFJlY3QoKSk7CisgICAgICAgICAgICBjb250ZXh0LT5kcmF3SW1hZ2VCdWZmZXIoKnJl
c3VsdEltYWdlLCByZW5kZXJlci5zdHlsZSgpLmNvbG9yU3BhY2UoKSwgbGFzdEVmZmVjdC0+YWJz
b2x1dGVQYWludFJlY3QoKSk7CiAgICAgICAgICAgICBjb250ZXh0LT5zY2FsZShmaWx0ZXJEYXRh
LT5maWx0ZXItPmZpbHRlclJlc29sdXRpb24oKSk7CiAKICAgICAgICAgICAgIGNvbnRleHQtPmNv
bmNhdENUTShmaWx0ZXJEYXRhLT5zaGVhckZyZWVBYnNvbHV0ZVRyYW5zZm9ybSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1JlbmRlcmluZ0NvbnRleHQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdSZW5kZXJpbmdDb250ZXh0LmNwcApp
bmRleCA4OWI4ZTM4ZWU4NTE1NWEyYjA4NzdkN2Q1ZmU3NDVjOGVmMWVjMThjLi5kMDJlZTUwYmQ2
Y2EzN2U2MGE1MmVkNGY2ODA0NmVmZjkwODFhOGJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3ZnL1NWR1JlbmRlcmluZ0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdmcvU1ZHUmVuZGVyaW5nQ29udGV4dC5jcHAKQEAgLTMwOSwxNCArMzA5
LDE1IEBAIHZvaWQgU1ZHUmVuZGVyaW5nQ29udGV4dDo6cmVuZGVyU3VidHJlZVRvSW1hZ2VCdWZm
ZXIoSW1hZ2VCdWZmZXIqIGltYWdlLCBSZW5kZXJFCiAKIHZvaWQgU1ZHUmVuZGVyaW5nQ29udGV4
dDo6Y2xpcFRvSW1hZ2VCdWZmZXIoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBBZmZp
bmVUcmFuc2Zvcm0mIGFic29sdXRlVHJhbnNmb3JtLCBjb25zdCBGbG9hdFJlY3QmIHRhcmdldFJl
Y3QsIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4mIGltYWdlQnVmZmVyLCBib29sIHNhZmVU
b0NsZWFyKQogewotICAgIEFTU0VSVChpbWFnZUJ1ZmZlcik7CisgICAgaWYgKCFpbWFnZUJ1ZmZl
cikKKyAgICAgICAgcmV0dXJuOwogCiAgICAgRmxvYXRSZWN0IGFic29sdXRlVGFyZ2V0UmVjdCA9
IGNhbGN1bGF0ZUltYWdlQnVmZmVyUmVjdCh0YXJnZXRSZWN0LCBhYnNvbHV0ZVRyYW5zZm9ybSk7
CiAKICAgICAvLyBUaGUgbWFzayBpbWFnZSBoYXMgYmVlbiBjcmVhdGVkIGluIHRoZSBhYnNvbHV0
ZSBjb29yZGluYXRlIHNwYWNlLCBhcyB0aGUgaW1hZ2Ugc2hvdWxkIG5vdCBiZSBzY2FsZWQuCiAg
ICAgLy8gU28gdGhlIGFjdHVhbCBtYXNraW5nIHByb2Nlc3MgaGFzIHRvIGJlIGRvbmUgaW4gdGhl
IGFic29sdXRlIGNvb3JkaW5hdGUgc3BhY2UgYXMgd2VsbC4KICAgICBjb250ZXh0LmNvbmNhdENU
TShhYnNvbHV0ZVRyYW5zZm9ybS5pbnZlcnNlKCkpOwotICAgIGNvbnRleHQuY2xpcFRvSW1hZ2VC
dWZmZXIoaW1hZ2VCdWZmZXIuZ2V0KCksIGFic29sdXRlVGFyZ2V0UmVjdCk7CisgICAgY29udGV4
dC5jbGlwVG9JbWFnZUJ1ZmZlcigqaW1hZ2VCdWZmZXIsIGFic29sdXRlVGFyZ2V0UmVjdCk7CiAg
ICAgY29udGV4dC5jb25jYXRDVE0oYWJzb2x1dGVUcmFuc2Zvcm0pOwogCiAgICAgLy8gV2hlbiBu
ZXN0aW5nIHJlc291cmNlcywgd2l0aCBvYmplY3RCb3VuZGluZ0JveCBhcyBjb250ZW50IHVuaXQg
dHlwZXMsIHRoZXJlJ3Mgbm8gdXNlIGluIGNhY2hpbmcgdGhlCkBAIC0zNjAsNyArMzYxLDcgQEAg
Ym9vbCBTVkdSZW5kZXJpbmdDb250ZXh0OjpidWZmZXJGb3JlZ3JvdW5kKHN0ZDo6dW5pcXVlX3B0
cjxJbWFnZUJ1ZmZlcj4mIGltYWdlQnUKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9
CiAKLSAgICBtX3BhaW50SW5mby0+Y29udGV4dCgpLmRyYXdJbWFnZUJ1ZmZlcihpbWFnZUJ1ZmZl
ci5nZXQoKSwgQ29sb3JTcGFjZURldmljZVJHQiwgYm91bmRpbmdCb3gpOworICAgIG1fcGFpbnRJ
bmZvLT5jb250ZXh0KCkuZHJhd0ltYWdlQnVmZmVyKCppbWFnZUJ1ZmZlciwgQ29sb3JTcGFjZURl
dmljZVJHQiwgYm91bmRpbmdCb3gpOwogICAgIHJldHVybiB0cnVlOwogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRUltYWdlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFSW1hZ2UuY3BwCmluZGV4IGYw
NzI1MThmNDQxNzUxMWM3OTEzOTBlOTk2MjdmNWI1ZDE3ZTQ4YjEuLjY2MThjZjU0ODRlNDllZTIx
Y2NjZjY3ODk0ZDAwMmY2MGUxN2U4MDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9n
cmFwaGljcy9maWx0ZXJzL1NWR0ZFSW1hZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9n
cmFwaGljcy9maWx0ZXJzL1NWR0ZFSW1hZ2UuY3BwCkBAIC0xMzUsNyArMTM1LDcgQEAgdm9pZCBG
RUltYWdlOjpwbGF0Zm9ybUFwcGx5U29mdHdhcmUoKQogICAgICAgICByZXR1cm47CiAgICAgfQog
Ci0gICAgcmVzdWx0SW1hZ2UtPmNvbnRleHQoKS5kcmF3SW1hZ2UobV9pbWFnZS5nZXQoKSwgQ29s
b3JTcGFjZURldmljZVJHQiwgZGVzdFJlY3QsIHNyY1JlY3QpOworICAgIHJlc3VsdEltYWdlLT5j
b250ZXh0KCkuZHJhd0ltYWdlKCptX2ltYWdlLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBkZXN0UmVj
dCwgc3JjUmVjdCk7CiB9CiAKIHZvaWQgRkVJbWFnZTo6ZHVtcCgpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9TaGFyZWQvQ29udGV4dE1lbnVDb250ZXh0RGF0YS5jcHAgYi9Tb3VyY2UvV2Vi
S2l0Mi9TaGFyZWQvQ29udGV4dE1lbnVDb250ZXh0RGF0YS5jcHAKaW5kZXggNTNmY2QyMzE4NTk5
NTM3MmU1ZjRmYjdiNjI0MWM4M2RmMDFlZDA0Yi4uNzMyMzRlNWY3OTNkYTM4NTk5NDFhOWRjNzc0
OWU3NDI3OGEwZTRkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0NvbnRleHRN
ZW51Q29udGV4dERhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Db250ZXh0TWVu
dUNvbnRleHREYXRhLmNwcApAQCAtNTgsNyArNTgsNyBAQCBDb250ZXh0TWVudUNvbnRleHREYXRh
OjpDb250ZXh0TWVudUNvbnRleHREYXRhKGNvbnN0IENvbnRleHRNZW51Q29udGV4dCYgY29udGV4
dAogCiAgICAgLy8gRklYTUU6IGZpZ3VyZSBvdXQgdGhlIHJvdW5kaW5nIHN0YXJ0ZWd5IGZvciBT
aGFyZWFibGVCaXRtYXAuCiAgICAgbV9jb250cm9sbGVkSW1hZ2UgPSBTaGFyZWFibGVCaXRtYXA6
OmNyZWF0ZVNoYXJlYWJsZShJbnRTaXplKGltYWdlLT5zaXplKCkpLCBTaGFyZWFibGVCaXRtYXA6
OlN1cHBvcnRzQWxwaGEpOwotICAgIG1fY29udHJvbGxlZEltYWdlLT5jcmVhdGVHcmFwaGljc0Nv
bnRleHQoKS0+ZHJhd0ltYWdlKGltYWdlLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBJbnRQb2ludCgp
KTsKKyAgICBtX2NvbnRyb2xsZWRJbWFnZS0+Y3JlYXRlR3JhcGhpY3NDb250ZXh0KCktPmRyYXdJ
bWFnZSgqaW1hZ2UsIENvbG9yU3BhY2VEZXZpY2VSR0IsIEludFBvaW50KCkpOwogI2VuZGlmCiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2Rl
cnMuY3BwIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAK
aW5kZXggNzFkYzNkNGU1MWYyYWRjNWFhZmEwZjIzMDUwMDFhYjhhNGU4ZDllZi4uODVhYWVkNWJh
NDkwOTM5ZTJkNmVlZGEzM2Y2YTgxYWI3N2QzZTNmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIv
U2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAKQEAgLTcyMSw5ICs3MjEsOSBAQCBib29s
IEFyZ3VtZW50Q29kZXI8Q3JlZGVudGlhbD46OmRlY29kZShBcmd1bWVudERlY29kZXImIGRlY29k
ZXIsIENyZWRlbnRpYWwmIGNyZQogICAgIHJldHVybiB0cnVlOwogfQogCi1zdGF0aWMgdm9pZCBl
bmNvZGVJbWFnZShBcmd1bWVudEVuY29kZXImIGVuY29kZXIsIEltYWdlKiBpbWFnZSkKK3N0YXRp
YyB2b2lkIGVuY29kZUltYWdlKEFyZ3VtZW50RW5jb2RlciYgZW5jb2RlciwgSW1hZ2UmIGltYWdl
KQogewotICAgIFJlZlB0cjxTaGFyZWFibGVCaXRtYXA+IGJpdG1hcCA9IFNoYXJlYWJsZUJpdG1h
cDo6Y3JlYXRlU2hhcmVhYmxlKEludFNpemUoaW1hZ2UtPnNpemUoKSksIFNoYXJlYWJsZUJpdG1h
cDo6U3VwcG9ydHNBbHBoYSk7CisgICAgUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4gYml0bWFwID0g
U2hhcmVhYmxlQml0bWFwOjpjcmVhdGVTaGFyZWFibGUoSW50U2l6ZShpbWFnZS5zaXplKCkpLCBT
aGFyZWFibGVCaXRtYXA6OlN1cHBvcnRzQWxwaGEpOwogICAgIGJpdG1hcC0+Y3JlYXRlR3JhcGhp
Y3NDb250ZXh0KCktPmRyYXdJbWFnZShpbWFnZSwgQ29sb3JTcGFjZURldmljZVJHQiwgSW50UG9p
bnQoKSk7CiAKICAgICBTaGFyZWFibGVCaXRtYXA6OkhhbmRsZSBoYW5kbGU7CkBAIC03NTMsNyAr
NzUzLDcgQEAgc3RhdGljIHZvaWQgZW5jb2RlT3B0aW9uYWxJbWFnZShBcmd1bWVudEVuY29kZXIm
IGVuY29kZXIsIEltYWdlKiBpbWFnZSkKICAgICBlbmNvZGVyIDw8IGhhc0ltYWdlOwogCiAgICAg
aWYgKGhhc0ltYWdlKQotICAgICAgICBlbmNvZGVJbWFnZShlbmNvZGVyLCBpbWFnZSk7CisgICAg
ICAgIGVuY29kZUltYWdlKGVuY29kZXIsICppbWFnZSk7CiB9CiAKIHN0YXRpYyBib29sIGRlY29k
ZU9wdGlvbmFsSW1hZ2UoQXJndW1lbnREZWNvZGVyJiBkZWNvZGVyLCBSZWZQdHI8SW1hZ2U+JiBp
bWFnZSkKQEAgLTc4NCw3ICs3ODQsNyBAQCB2b2lkIEFyZ3VtZW50Q29kZXI8Q3Vyc29yPjo6ZW5j
b2RlKEFyZ3VtZW50RW5jb2RlciYgZW5jb2RlciwgY29uc3QgQ3Vyc29yJiBjdXJzbwogICAgIH0K
IAogICAgIGVuY29kZXIgPDwgdHJ1ZTsKLSAgICBlbmNvZGVJbWFnZShlbmNvZGVyLCBjdXJzb3Iu
aW1hZ2UoKSk7CisgICAgZW5jb2RlSW1hZ2UoZW5jb2RlciwgKmN1cnNvci5pbWFnZSgpKTsKICAg
ICBlbmNvZGVyIDw8IGN1cnNvci5ob3RTcG90KCk7CiAjaWYgRU5BQkxFKE1PVVNFX0NVUlNPUl9T
Q0FMRSkKICAgICBlbmNvZGVyIDw8IGN1cnNvci5pbWFnZVNjYWxlRmFjdG9yKCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwIGIvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcAppbmRleCBjY2NiOGI2
YWRkNDY5OTczYmRlNDU2NmJlODY5MTQ3ZjhmMDg2OGE0Li5mODAwYzIyZmNmNTJjN2IzNjY2ODE0
ZGRhMjZiNzQ0MmExYzY0MGI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViRnJhbWUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJGcmFtZS5jcHAKQEAgLTgzOCw3ICs4MzgsNyBAQCBQYXNzUmVmUHRyPFNoYXJlYWJs
ZUJpdG1hcD4gV2ViRnJhbWU6OmNyZWF0ZVNlbGVjdGlvblNuYXBzaG90KCkgY29uc3QKICAgICBh
dXRvIGdyYXBoaWNzQ29udGV4dCA9IHNoYXJlZFNuYXBzaG90LT5jcmVhdGVHcmFwaGljc0NvbnRl
eHQoKTsKICAgICBmbG9hdCBkZXZpY2VTY2FsZUZhY3RvciA9IGNvcmVGcmFtZSgpLT5wYWdlKCkt
PmRldmljZVNjYWxlRmFjdG9yKCk7CiAgICAgZ3JhcGhpY3NDb250ZXh0LT5zY2FsZShGbG9hdFNp
emUoZGV2aWNlU2NhbGVGYWN0b3IsIGRldmljZVNjYWxlRmFjdG9yKSk7Ci0gICAgZ3JhcGhpY3ND
b250ZXh0LT5kcmF3SW1hZ2VCdWZmZXIoc25hcHNob3QuZ2V0KCksIENvbG9yU3BhY2VEZXZpY2VS
R0IsIEZsb2F0UG9pbnQoKSk7CisgICAgZ3JhcGhpY3NDb250ZXh0LT5kcmF3SW1hZ2VCdWZmZXIo
KnNuYXBzaG90LCBDb2xvclNwYWNlRGV2aWNlUkdCLCBGbG9hdFBvaW50KCkpOwogCiAgICAgcmV0
dXJuIHNoYXJlZFNuYXBzaG90LnJlbGVhc2UoKTsKIH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>263046</attachid>
            <date>2015-10-13 18:11:47 -0700</date>
            <delta_ts>2015-10-13 18:43:56 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-150108-20151013181110.patch</filename>
            <type>text/plain</type>
            <size>99154</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTkxMDE3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDc1YTMwZTUzMWQwNjcz
MTZmYjZiYjJmNDc3YzM5MWVmOTNmMDYwZC4uMzA0MmEwNmFiNmEwZDQzM2ZkYTFkYjlmMzY3MjEw
MWJkMWVkYzJiYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDEzMSBAQAogMjAxNS0xMC0xMyAgU2lt
b24gRnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KIAorICAgICAgICBDaGFuZ2UgR3Jh
cGhpY3NDb250ZXh0IGltYWdlLWRyYXdpbmcgZnVuY3Rpb25zIHRvIHRha2UgcmVmZXJlbmNlcwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUwMTA4CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQ2hhbmdlIEdy
YXBoaWNzQ29udGV4dDo6ZHJhd0ltYWdlKCksIGRyYXdUaWxlZEltYWdlKCksIGRyYXdJbWFnZUJ1
ZmZlcigpLCBjbGlwVG9JbWFnZUJ1ZmZlcigpCisgICAgICAgIGFuZCBpc0NvbXBhdGlibGVXaXRo
QnVmZmVyKCkgdG8gdGFrZSByZWZlcmVuY2VzLCBhbmQgYWRqdXN0IGNhbGxpbmcgY29kZSwgYWRk
aW5nCisgICAgICAgIG51bGwtY2hlY2tzIHdoZXJlIG5lY2Vzc2FyeS4KKyAgICAgICAgCisgICAg
ICAgIE5vIGJlaGF2aW9yIGNoYW5nZS4KKworICAgICAgICAqIGNzcy9DU1NDcm9zc2ZhZGVWYWx1
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NDcm9zc2ZhZGVWYWx1ZTo6aW1hZ2UpOgorICAg
ICAgICAqIGNzcy9DU1NGaWx0ZXJJbWFnZVZhbHVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNT
U0ZpbHRlckltYWdlVmFsdWU6OmltYWdlKToKKyAgICAgICAgKiBodG1sL0hUTUxDYW52YXNFbGVt
ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxDYW52YXNFbGVtZW50OjpwYWludCk6Cisg
ICAgICAgICogaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkNhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6ZHJhd0ltYWdlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6Y29tcG9zaXRlQnVmZmVyKToK
KyAgICAgICAgKFdlYkNvcmU6OmRyYXdJbWFnZVRvQ29udGV4dCk6CisgICAgICAgIChXZWJDb3Jl
OjpDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmZ1bGxDYW52YXNDb21wb3NpdGVkRHJhd0ltYWdl
KToKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6ZHJhd1RleHRJ
bnRlcm5hbCk6CisgICAgICAgICogaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJE
Lmg6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0wyUmVuZGVyaW5nQ29udGV4dC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojp0ZXhTdWJJbWFnZTJEKToK
KyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0Ojp0ZXhTdWJJbWFnZTJEKToKKyAgICAg
ICAgKiBodG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmRyYXdJbWFnZUludG9CdWZmZXIp
OgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dGV4SW1hZ2Uy
RCk6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5oOgor
ICAgICAgICAqIHBsYXRmb3JtL1Njcm9sbFZpZXcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2Ny
b2xsVmlldzo6cGFpbnRQYW5TY3JvbGxJY29uKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9Dcm9zc2ZhZGVHZW5lcmF0ZWRJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDcm9zc2Zh
ZGVHZW5lcmF0ZWRJbWFnZTo6Q3Jvc3NmYWRlR2VuZXJhdGVkSW1hZ2UpOgorICAgICAgICAoV2Vi
Q29yZTo6ZHJhd0Nyb3NzZmFkZVN1YmltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkNyb3NzZmFk
ZUdlbmVyYXRlZEltYWdlOjpkcmF3Q3Jvc3NmYWRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9Dcm9zc2ZhZGVHZW5lcmF0ZWRJbWFnZS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL0dyYWRpZW50SW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhZGllbnRJbWFnZTo6
ZHJhd1BhdHRlcm4pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmRyYXdJbWFnZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmRyYXdUaWxlZEltYWdlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6ZHJhd0ltYWdlQnVmZmVyKToKKyAgICAgICAg
KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6Y2xpcFRvSW1hZ2VCdWZmZXIpOgorICAgICAgICAo
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0Ojppc0NvbXBhdGlibGVXaXRoQnVmZmVyKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9TaGFkb3dCbHVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNoYWRvd0Js
dXI6OmRyYXdTaGFkb3dCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6U2hhZG93Qmx1cjo6ZHJh
d1JlY3RTaGFkb3dXaXRob3V0VGlsaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlNoYWRvd0JsdXI6
OmRyYXdJbnNldFNoYWRvd1dpdGhvdXRUaWxpbmcpOgorICAgICAgICAoV2ViQ29yZTo6U2hhZG93
Qmx1cjo6ZHJhd0luc2V0U2hhZG93V2l0aFRpbGluZyk6CisgICAgICAgIChXZWJDb3JlOjpTaGFk
b3dCbHVyOjpkcmF3UmVjdFNoYWRvd1dpdGhUaWxpbmcpOgorICAgICAgICAoV2ViQ29yZTo6U2hh
ZG93Qmx1cjo6ZHJhd0xheWVyUGllY2VzKToKKyAgICAgICAgKFdlYkNvcmU6OlNoYWRvd0JsdXI6
OmVuZFNoYWRvd0xheWVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFn
ZUJ1ZmZlckNhaXJvLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyOjpkcmF3KToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9QREZEb2N1bWVudEltYWdlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlBERkRvY3VtZW50SW1hZ2U6OmRyYXcpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVCbGVuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGRUJs
ZW5kOjpwbGF0Zm9ybUFwcGx5U29mdHdhcmUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2ZpbHRlcnMvRkVDb2xvck1hdHJpeC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGRUNvbG9yTWF0
cml4OjpwbGF0Zm9ybUFwcGx5U29mdHdhcmUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2ZpbHRlcnMvRkVDb21wb3NpdGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RkVDb21wb3NpdGU6
OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmls
dGVycy9GRURyb3BTaGFkb3cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RkVEcm9wU2hhZG93Ojpw
bGF0Zm9ybUFwcGx5U29mdHdhcmUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRl
cnMvRkVNZXJnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGRU1lcmdlOjpwbGF0Zm9ybUFwcGx5
U29mdHdhcmUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVPZmZzZXQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6RkVPZmZzZXQ6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZSk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRVRpbGUuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6RkVUaWxlOjpwbGF0Zm9ybUFwcGx5U29mdHdhcmUpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvU291cmNlQWxwaGEuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6U291cmNlQWxwaGE6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZSk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvZmlsdGVycy9Tb3VyY2VHcmFwaGljLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlNvdXJjZUdyYXBoaWM6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZSk6CisgICAgICAgICogcGxhdGZv
cm0vbWFjL1RoZW1lTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6VGhlbWVNYWM6OmRyYXdDZWxs
T3JGb2N1c1JpbmdXaXRoVmlld0ludG9Db250ZXh0KToKKyAgICAgICAgKiByZW5kZXJpbmcvRmls
dGVyRWZmZWN0UmVuZGVyZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RmlsdGVyRWZmZWN0UmVu
ZGVyZXJIZWxwZXI6OmFwcGx5RmlsdGVyRWZmZWN0KToKKyAgICAgICAgKiByZW5kZXJpbmcvSW1h
Z2VRdWFsaXR5Q29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZVF1YWxpdHlD
b250cm9sbGVyOjpzaG91bGRQYWludEF0TG93UXVhbGl0eSk6CisgICAgICAgICogcmVuZGVyaW5n
L0ltYWdlUXVhbGl0eUNvbnRyb2xsZXIuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQm94
TW9kZWxPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94TW9kZWxPYmplY3Q6
OnNob3VsZFBhaW50QXRMb3dRdWFsaXR5KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveE1v
ZGVsT2JqZWN0OjpwYWludEZpbGxMYXllckV4dGVuZGVkKToKKyAgICAgICAgKiByZW5kZXJpbmcv
UmVuZGVyQm94TW9kZWxPYmplY3QuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyRW1iZWRk
ZWRPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRW1iZWRkZWRPYmplY3Q6OnBh
aW50U25hcHNob3RJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJFbWJlZGRlZE9iamVj
dDo6cGFpbnRDb250ZW50cyk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckVtYmVkZGVkT2Jq
ZWN0Lmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckltYWdlLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlckltYWdlOjpwYWludFJlcGxhY2VkKToKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlckltYWdlOjpwYWludEludG9SZWN0KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVySW1h
Z2VSZXNvdXJjZVN0eWxlSW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVySW1hZ2VS
ZXNvdXJjZVN0eWxlSW1hZ2U6OnNodXRkb3duKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlcklt
YWdlUmVzb3VyY2VTdHlsZUltYWdlOjppbWFnZSk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRl
ckxheWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjpkcmF3UGxhdGZvcm1S
ZXNpemVySW1hZ2UpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMaXN0TWFya2VyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxpc3RNYXJrZXI6OnBhaW50KToKKyAgICAgICAgKiBy
ZW5kZXJpbmcvUmVuZGVyU25hcHNob3R0ZWRQbHVnSW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyU25hcHNob3R0ZWRQbHVnSW46OnBhaW50U25hcHNob3QpOgorICAgICAgICAqIHJlbmRl
cmluZy9SZW5kZXJUaGVtZU1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lTWFj
OjpwYWludFByb2dyZXNzQmFyKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lTWFjOjpw
YWludFNuYXBzaG90dGVkUGx1Z2luT3ZlcmxheSk6CisgICAgICAgICogcmVuZGVyaW5nL3NoYXBl
cy9TaGFwZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTaGFwZTo6Y3JlYXRlUmFzdGVyU2hhcGUp
OgorICAgICAgICAqIHJlbmRlcmluZy9zaGFwZXMvU2hhcGVPdXRzaWRlSW5mby5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpTaGFwZU91dHNpZGVJbmZvOjpjcmVhdGVTaGFwZUZvckltYWdlKTogRGVs
ZXRlZC4KKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvTmluZVBpZWNlSW1hZ2UuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6TmluZVBpZWNlSW1hZ2U6OnBhaW50KToKKyAgICAgICAgKiByZW5kZXJp
bmcvc3ZnL1JlbmRlclNWR0ltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR0lt
YWdlOjpwYWludEZvcmVncm91bmQpOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZH
UmVzb3VyY2VGaWx0ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHUmVzb3VyY2VG
aWx0ZXI6OnBvc3RBcHBseVJlc291cmNlKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1NWR1Jl
bmRlcmluZ0NvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUmVuZGVyaW5nQ29udGV4
dDo6Y2xpcFRvSW1hZ2VCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUmVuZGVyaW5nQ29u
dGV4dDo6YnVmZmVyRm9yZWdyb3VuZCk6CisgICAgICAgICogc3ZnL2dyYXBoaWNzL2ZpbHRlcnMv
U1ZHRkVJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGRUltYWdlOjpwbGF0Zm9ybUFwcGx5
U29mdHdhcmUpOgorCisyMDE1LTEwLTEzICBTaW1vbiBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBw
bGUuY29tPgorCiAgICAgICAgIEFkZCBoZWxwZXIgZnVudGlvbiBmb3IgY2hlY2tpbmcgcG9pbnRl
ciBlcXVpdmFsZW5jeSBhbmQgdXNlIGl0CiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xNTAwMjIKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hh
bmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IGMyZjlhMTRjZmQ4MjYyNzE4
Mjg4ZjhhMDhiZGE5M2VkMjgzMDMxYzUuLjE2MjUwZWI4MmI5OGVkMzU3NDA5NzAxNmQ2NTNkMTgy
YTZmNWZjOGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMyBAQAorMjAxNS0xMC0xMyAgU2ltb24g
RnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KKworICAgICAgICBDaGFuZ2UgR3JhcGhp
Y3NDb250ZXh0IGltYWdlLWRyYXdpbmcgZnVuY3Rpb25zIHRvIHRha2UgcmVmZXJlbmNlcworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUwMTA4CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQ2hhbmdlIEdyYXBo
aWNzQ29udGV4dDo6ZHJhd0ltYWdlKCksIGRyYXdUaWxlZEltYWdlKCksIGRyYXdJbWFnZUJ1ZmZl
cigpLCBjbGlwVG9JbWFnZUJ1ZmZlcigpCisgICAgICAgIGFuZCBpc0NvbXBhdGlibGVXaXRoQnVm
ZmVyKCkgdG8gdGFrZSByZWZlcmVuY2VzLCBhbmQgYWRqdXN0IGNhbGxpbmcgY29kZSwgYWRkaW5n
CisgICAgICAgIG51bGwtY2hlY2tzIHdoZXJlIG5lY2Vzc2FyeS4KKworICAgICAgICAqIFNoYXJl
ZC9Db250ZXh0TWVudUNvbnRleHREYXRhLmNwcDoKKyAgICAgICAgKFdlYktpdDo6Q29udGV4dE1l
bnVDb250ZXh0RGF0YTo6Q29udGV4dE1lbnVDb250ZXh0RGF0YSk6CisgICAgICAgICogU2hhcmVk
L1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHA6CisgICAgICAgIChJUEM6OmVuY29kZUltYWdlKToK
KyAgICAgICAgKElQQzo6ZW5jb2RlT3B0aW9uYWxJbWFnZSk6CisgICAgICAgIChJUEM6OkFyZ3Vt
ZW50Q29kZXI8Q3Vyc29yPjo6ZW5jb2RlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViRnJhbWUuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZTo6Y3JlYXRlU2VsZWN0aW9u
U25hcHNob3QpOgorCiAyMDE1LTEwLTEzICBNeWxlcyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBh
cHBsZS5jb20+CiAKICAgICAgICAgU3BsaXQgVHlwZXNldHRpbmdGZWF0dXJlcyBpbnRvIGtlcm5p
bmcgYW5kIGxpZ2F0dXJlcyBib29scwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NT
U0Nyb3NzZmFkZVZhbHVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDcm9zc2ZhZGVWYWx1
ZS5jcHAKaW5kZXggM2M3MTdjYjE1Yzg5OGEzYzUwNGVkNjQ2Mjc3MzU3NDkyNWQ3Nzk5OC4uMDcz
NTA4YjBhNjdkOWY1NDhmODA0ZjNmNDNhNTZhNWFiZTFiYTg3MCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvY3NzL0NTU0Nyb3NzZmFkZVZhbHVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTQ3Jvc3NmYWRlVmFsdWUuY3BwCkBAIC0xNjUsNyArMTY1LDcgQEAgUmVmUHRyPEltYWdl
PiBDU1NDcm9zc2ZhZGVWYWx1ZTo6aW1hZ2UoUmVuZGVyRWxlbWVudCogcmVuZGVyZXIsIGNvbnN0
IEZsb2F0U2l6ZSYKICAgICBpZiAoIWZyb21JbWFnZSB8fCAhdG9JbWFnZSkKICAgICAgICAgcmV0
dXJuIEltYWdlOjpudWxsSW1hZ2UoKTsKIAotICAgIG1fZ2VuZXJhdGVkSW1hZ2UgPSBDcm9zc2Zh
ZGVHZW5lcmF0ZWRJbWFnZTo6Y3JlYXRlKGZyb21JbWFnZSwgdG9JbWFnZSwgbV9wZXJjZW50YWdl
VmFsdWUtPmdldEZsb2F0VmFsdWUoKSwgZml4ZWRTaXplKHJlbmRlcmVyKSwgc2l6ZSk7CisgICAg
bV9nZW5lcmF0ZWRJbWFnZSA9IENyb3NzZmFkZUdlbmVyYXRlZEltYWdlOjpjcmVhdGUoKmZyb21J
bWFnZSwgKnRvSW1hZ2UsIG1fcGVyY2VudGFnZVZhbHVlLT5nZXRGbG9hdFZhbHVlKCksIGZpeGVk
U2l6ZShyZW5kZXJlciksIHNpemUpOwogCiAgICAgcmV0dXJuIG1fZ2VuZXJhdGVkSW1hZ2U7CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRmlsdGVySW1hZ2VWYWx1ZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRmlsdGVySW1hZ2VWYWx1ZS5jcHAKaW5kZXggN2ZmZjRj
NDk4OTRlZDJlNDQ1ZDQxMDQxZGQ3ZDQ3ZDJhNWY0ZGU4Mi4uYmU3NWRjNmVmNjZmMTBhNDg5YmQy
ODQ2YzY5MjRjNzcyNjA2MDIzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0Zp
bHRlckltYWdlVmFsdWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGaWx0ZXJJbWFn
ZVZhbHVlLmNwcApAQCAtMTI0LDggKzEyNCw5IEBAIFJlZlB0cjxJbWFnZT4gQ1NTRmlsdGVySW1h
Z2VWYWx1ZTo6aW1hZ2UoUmVuZGVyRWxlbWVudCogcmVuZGVyZXIsIGNvbnN0IEZsb2F0U2l6CiAg
ICAgc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPiB0ZXh0dXJlID0gSW1hZ2VCdWZmZXI6OmNy
ZWF0ZShzaXplLCBVbmFjY2VsZXJhdGVkKTsKICAgICBpZiAoIXRleHR1cmUpCiAgICAgICAgIHJl
dHVybiBJbWFnZTo6bnVsbEltYWdlKCk7CisKICAgICBGbG9hdFJlY3QgaW1hZ2VSZWN0ID0gRmxv
YXRSZWN0KEZsb2F0UG9pbnQoKSwgc2l6ZSk7Ci0gICAgdGV4dHVyZS0+Y29udGV4dCgpLmRyYXdJ
bWFnZShpbWFnZSwgQ29sb3JTcGFjZURldmljZVJHQiwgaW1hZ2VSZWN0KTsKKyAgICB0ZXh0dXJl
LT5jb250ZXh0KCkuZHJhd0ltYWdlKCppbWFnZSwgQ29sb3JTcGFjZURldmljZVJHQiwgaW1hZ2VS
ZWN0KTsKIAogICAgIFJlZlB0cjxGaWx0ZXJFZmZlY3RSZW5kZXJlcj4gZmlsdGVyUmVuZGVyZXIg
PSBGaWx0ZXJFZmZlY3RSZW5kZXJlcjo6Y3JlYXRlKCk7CiAgICAgZmlsdGVyUmVuZGVyZXItPnNl
dFNvdXJjZUltYWdlKFdURjo6bW92ZSh0ZXh0dXJlKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxDYW52YXNFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TENhbnZhc0VsZW1lbnQuY3BwCmluZGV4IDAzZWM3ZGY5ODkzMWEzNDIxZGViZWJjNGRjMGQxNTRh
YTk3MmE4NGMuLjU3MjRjMWFhMmE3ZmRhYmNiYTA0NjA2YzI1YTMzNDllMjQxYjMxYTEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENhbnZhc0VsZW1lbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTENhbnZhc0VsZW1lbnQuY3BwCkBAIC0zODgsOSArMzg4LDkg
QEAgdm9pZCBIVE1MQ2FudmFzRWxlbWVudDo6cGFpbnQoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0
LCBjb25zdCBMYXlvdXRSZWN0JiByLCBib28KICNpZiBFTkFCTEUoQ1NTX0lNQUdFX09SSUVOVEFU
SU9OKQogICAgICAgICAgICAgICAgIG9yaWVudGF0aW9uRGVzY3JpcHRpb24uc2V0SW1hZ2VPcmll
bnRhdGlvbkVudW0ocmVuZGVyZXIoKS0+c3R5bGUoKS5pbWFnZU9yaWVudGF0aW9uKCkpOwogI2Vu
ZGlmIAotICAgICAgICAgICAgICAgIGNvbnRleHQuZHJhd0ltYWdlKG1fcHJlc2VudGVkSW1hZ2Uu
Z2V0KCksIENvbG9yU3BhY2VEZXZpY2VSR0IsIHNuYXBwZWRJbnRSZWN0KHIpLCBJbWFnZVBhaW50
aW5nT3B0aW9ucyhvcmllbnRhdGlvbkRlc2NyaXB0aW9uLCB1c2VMb3dRdWFsaXR5U2NhbGUpKTsK
KyAgICAgICAgICAgICAgICBjb250ZXh0LmRyYXdJbWFnZSgqbV9wcmVzZW50ZWRJbWFnZSwgQ29s
b3JTcGFjZURldmljZVJHQiwgc25hcHBlZEludFJlY3QociksIEltYWdlUGFpbnRpbmdPcHRpb25z
KG9yaWVudGF0aW9uRGVzY3JpcHRpb24sIHVzZUxvd1F1YWxpdHlTY2FsZSkpOwogICAgICAgICAg
ICAgfSBlbHNlCi0gICAgICAgICAgICAgICAgY29udGV4dC5kcmF3SW1hZ2VCdWZmZXIoaW1hZ2VC
dWZmZXIsIENvbG9yU3BhY2VEZXZpY2VSR0IsIHNuYXBwZWRJbnRSZWN0KHIpLCB1c2VMb3dRdWFs
aXR5U2NhbGUpOworICAgICAgICAgICAgICAgIGNvbnRleHQuZHJhd0ltYWdlQnVmZmVyKCppbWFn
ZUJ1ZmZlciwgQ29sb3JTcGFjZURldmljZVJHQiwgc25hcHBlZEludFJlY3QociksIHVzZUxvd1F1
YWxpdHlTY2FsZSk7CiAgICAgICAgIH0KICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuY3BwCmluZGV4IGI0MDE1
ZWZmNDcyZTg0ZTkyOWI1MzkxNTUzOTVkNGI1Y2NlNWZiNTEuLmIxOWQ5ZTBkYzcwM2Q1NTUzZjcz
MjYyMTMzYzIwYzk0ZjYyOGM3OWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcApAQCAtMTQ0OCwxNyArMTQ0OCwx
NyBAQCB2b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6ZHJhd0ltYWdlKEhUTUxJbWFnZUVs
ZW1lbnQqIGltYWdlRWxlbWVudCwgY29uc3QgRgogICAgIH0KIAogICAgIGlmIChyZWN0Q29udGFp
bnNDYW52YXMobm9ybWFsaXplZERzdFJlY3QpKSB7Ci0gICAgICAgIGMtPmRyYXdJbWFnZShpbWFn
ZSwgQ29sb3JTcGFjZURldmljZVJHQiwgbm9ybWFsaXplZERzdFJlY3QsIG5vcm1hbGl6ZWRTcmNS
ZWN0LCBJbWFnZVBhaW50aW5nT3B0aW9ucyhvcCwgYmxlbmRNb2RlKSk7CisgICAgICAgIGMtPmRy
YXdJbWFnZSgqaW1hZ2UsIENvbG9yU3BhY2VEZXZpY2VSR0IsIG5vcm1hbGl6ZWREc3RSZWN0LCBu
b3JtYWxpemVkU3JjUmVjdCwgSW1hZ2VQYWludGluZ09wdGlvbnMob3AsIGJsZW5kTW9kZSkpOwog
ICAgICAgICBkaWREcmF3RW50aXJlQ2FudmFzKCk7CiAgICAgfSBlbHNlIGlmIChpc0Z1bGxDYW52
YXNDb21wb3NpdGVNb2RlKG9wKSkgewotICAgICAgICBmdWxsQ2FudmFzQ29tcG9zaXRlZERyYXdJ
bWFnZShpbWFnZSwgQ29sb3JTcGFjZURldmljZVJHQiwgbm9ybWFsaXplZERzdFJlY3QsIG5vcm1h
bGl6ZWRTcmNSZWN0LCBvcCk7CisgICAgICAgIGZ1bGxDYW52YXNDb21wb3NpdGVkRHJhd0ltYWdl
KCppbWFnZSwgQ29sb3JTcGFjZURldmljZVJHQiwgbm9ybWFsaXplZERzdFJlY3QsIG5vcm1hbGl6
ZWRTcmNSZWN0LCBvcCk7CiAgICAgICAgIGRpZERyYXdFbnRpcmVDYW52YXMoKTsKICAgICB9IGVs
c2UgaWYgKG9wID09IENvbXBvc2l0ZUNvcHkpIHsKICAgICAgICAgY2xlYXJDYW52YXMoKTsKLSAg
ICAgICAgYy0+ZHJhd0ltYWdlKGltYWdlLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBub3JtYWxpemVk
RHN0UmVjdCwgbm9ybWFsaXplZFNyY1JlY3QsIEltYWdlUGFpbnRpbmdPcHRpb25zKG9wLCBibGVu
ZE1vZGUpKTsKKyAgICAgICAgYy0+ZHJhd0ltYWdlKCppbWFnZSwgQ29sb3JTcGFjZURldmljZVJH
Qiwgbm9ybWFsaXplZERzdFJlY3QsIG5vcm1hbGl6ZWRTcmNSZWN0LCBJbWFnZVBhaW50aW5nT3B0
aW9ucyhvcCwgYmxlbmRNb2RlKSk7CiAgICAgICAgIGRpZERyYXdFbnRpcmVDYW52YXMoKTsKICAg
ICB9IGVsc2UgewotICAgICAgICBjLT5kcmF3SW1hZ2UoaW1hZ2UsIENvbG9yU3BhY2VEZXZpY2VS
R0IsIG5vcm1hbGl6ZWREc3RSZWN0LCBub3JtYWxpemVkU3JjUmVjdCwgSW1hZ2VQYWludGluZ09w
dGlvbnMob3AsIGJsZW5kTW9kZSkpOworICAgICAgICBjLT5kcmF3SW1hZ2UoKmltYWdlLCBDb2xv
clNwYWNlRGV2aWNlUkdCLCBub3JtYWxpemVkRHN0UmVjdCwgbm9ybWFsaXplZFNyY1JlY3QsIElt
YWdlUGFpbnRpbmdPcHRpb25zKG9wLCBibGVuZE1vZGUpKTsKICAgICAgICAgZGlkRHJhdyhub3Jt
YWxpemVkRHN0UmVjdCk7CiAgICAgfQogICAgIApAQCAtMTUzNiwxNyArMTUzNiwxNyBAQCB2b2lk
IENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6ZHJhd0ltYWdlKEhUTUxDYW52YXNFbGVtZW50KiBz
b3VyY2VDYW52YXMsIGNvbnN0CiAjZW5kaWYKIAogICAgIGlmIChyZWN0Q29udGFpbnNDYW52YXMo
ZHN0UmVjdCkpIHsKLSAgICAgICAgYy0+ZHJhd0ltYWdlQnVmZmVyKGJ1ZmZlciwgQ29sb3JTcGFj
ZURldmljZVJHQiwgZHN0UmVjdCwgc3JjUmVjdCwgSW1hZ2VQYWludGluZ09wdGlvbnMoc3RhdGUo
KS5nbG9iYWxDb21wb3NpdGUsIHN0YXRlKCkuZ2xvYmFsQmxlbmQpKTsKKyAgICAgICAgYy0+ZHJh
d0ltYWdlQnVmZmVyKCpidWZmZXIsIENvbG9yU3BhY2VEZXZpY2VSR0IsIGRzdFJlY3QsIHNyY1Jl
Y3QsIEltYWdlUGFpbnRpbmdPcHRpb25zKHN0YXRlKCkuZ2xvYmFsQ29tcG9zaXRlLCBzdGF0ZSgp
Lmdsb2JhbEJsZW5kKSk7CiAgICAgICAgIGRpZERyYXdFbnRpcmVDYW52YXMoKTsKICAgICB9IGVs
c2UgaWYgKGlzRnVsbENhbnZhc0NvbXBvc2l0ZU1vZGUoc3RhdGUoKS5nbG9iYWxDb21wb3NpdGUp
KSB7Ci0gICAgICAgIGZ1bGxDYW52YXNDb21wb3NpdGVkRHJhd0ltYWdlKGJ1ZmZlciwgQ29sb3JT
cGFjZURldmljZVJHQiwgZHN0UmVjdCwgc3JjUmVjdCwgc3RhdGUoKS5nbG9iYWxDb21wb3NpdGUp
OworICAgICAgICBmdWxsQ2FudmFzQ29tcG9zaXRlZERyYXdJbWFnZSgqYnVmZmVyLCBDb2xvclNw
YWNlRGV2aWNlUkdCLCBkc3RSZWN0LCBzcmNSZWN0LCBzdGF0ZSgpLmdsb2JhbENvbXBvc2l0ZSk7
CiAgICAgICAgIGRpZERyYXdFbnRpcmVDYW52YXMoKTsKICAgICB9IGVsc2UgaWYgKHN0YXRlKCku
Z2xvYmFsQ29tcG9zaXRlID09IENvbXBvc2l0ZUNvcHkpIHsKICAgICAgICAgY2xlYXJDYW52YXMo
KTsKLSAgICAgICAgYy0+ZHJhd0ltYWdlQnVmZmVyKGJ1ZmZlciwgQ29sb3JTcGFjZURldmljZVJH
QiwgZHN0UmVjdCwgc3JjUmVjdCwgSW1hZ2VQYWludGluZ09wdGlvbnMoc3RhdGUoKS5nbG9iYWxD
b21wb3NpdGUsIHN0YXRlKCkuZ2xvYmFsQmxlbmQpKTsKKyAgICAgICAgYy0+ZHJhd0ltYWdlQnVm
ZmVyKCpidWZmZXIsIENvbG9yU3BhY2VEZXZpY2VSR0IsIGRzdFJlY3QsIHNyY1JlY3QsIEltYWdl
UGFpbnRpbmdPcHRpb25zKHN0YXRlKCkuZ2xvYmFsQ29tcG9zaXRlLCBzdGF0ZSgpLmdsb2JhbEJs
ZW5kKSk7CiAgICAgICAgIGRpZERyYXdFbnRpcmVDYW52YXMoKTsKICAgICB9IGVsc2UgewotICAg
ICAgICBjLT5kcmF3SW1hZ2VCdWZmZXIoYnVmZmVyLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBkc3RS
ZWN0LCBzcmNSZWN0LCBJbWFnZVBhaW50aW5nT3B0aW9ucyhzdGF0ZSgpLmdsb2JhbENvbXBvc2l0
ZSwgc3RhdGUoKS5nbG9iYWxCbGVuZCkpOworICAgICAgICBjLT5kcmF3SW1hZ2VCdWZmZXIoKmJ1
ZmZlciwgQ29sb3JTcGFjZURldmljZVJHQiwgZHN0UmVjdCwgc3JjUmVjdCwgSW1hZ2VQYWludGlu
Z09wdGlvbnMoc3RhdGUoKS5nbG9iYWxDb21wb3NpdGUsIHN0YXRlKCkuZ2xvYmFsQmxlbmQpKTsK
ICAgICAgICAgZGlkRHJhdyhkc3RSZWN0KTsKICAgICB9CiB9CkBAIC0xNzA5LDcgKzE3MDksNyBA
QCBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+IENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6
Y3JlYXRlQ29tcG9zaXRpbmdCdWZmZXIoYwogICAgIHJldHVybiBJbWFnZUJ1ZmZlcjo6Y3JlYXRl
KGJ1ZmZlclJlY3Quc2l6ZSgpLCBpc0FjY2VsZXJhdGVkKCkgPyBBY2NlbGVyYXRlZCA6IFVuYWNj
ZWxlcmF0ZWQpOwogfQogCi12b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6Y29tcG9zaXRl
QnVmZmVyKEltYWdlQnVmZmVyKiBidWZmZXIsIGNvbnN0IEludFJlY3QmIGJ1ZmZlclJlY3QsIENv
bXBvc2l0ZU9wZXJhdG9yIG9wKQordm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmNvbXBv
c2l0ZUJ1ZmZlcihJbWFnZUJ1ZmZlciYgYnVmZmVyLCBjb25zdCBJbnRSZWN0JiBidWZmZXJSZWN0
LCBDb21wb3NpdGVPcGVyYXRvciBvcCkKIHsKICAgICBJbnRSZWN0IGNhbnZhc1JlY3QoMCwgMCwg
Y2FudmFzKCktPndpZHRoKCksIGNhbnZhcygpLT5oZWlnaHQoKSk7CiAgICAgY2FudmFzUmVjdCA9
IGNhbnZhcygpLT5iYXNlVHJhbnNmb3JtKCkubWFwUmVjdChjYW52YXNSZWN0KTsKQEAgLTE3MzAs
MTcgKzE3MzAsMTcgQEAgdm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmNvbXBvc2l0ZUJ1
ZmZlcihJbWFnZUJ1ZmZlciogYnVmZmVyLCBjb25zdCBJbnRSZWMKICAgICBjLT5yZXN0b3JlKCk7
CiB9CiAKLXN0YXRpYyB2b2lkIGRyYXdJbWFnZVRvQ29udGV4dChJbWFnZSogaW1hZ2UsIEdyYXBo
aWNzQ29udGV4dCYgY29udGV4dCwgQ29sb3JTcGFjZSBzdHlsZUNvbG9yU3BhY2UsIGNvbnN0IEZs
b2F0UmVjdCYgZGVzdCwgY29uc3QgRmxvYXRSZWN0JiBzcmMsIENvbXBvc2l0ZU9wZXJhdG9yIG9w
KQorc3RhdGljIHZvaWQgZHJhd0ltYWdlVG9Db250ZXh0KEltYWdlJiBpbWFnZSwgR3JhcGhpY3ND
b250ZXh0JiBjb250ZXh0LCBDb2xvclNwYWNlIHN0eWxlQ29sb3JTcGFjZSwgY29uc3QgRmxvYXRS
ZWN0JiBkZXN0LCBjb25zdCBGbG9hdFJlY3QmIHNyYywgQ29tcG9zaXRlT3BlcmF0b3Igb3ApCiB7
CiAgICAgY29udGV4dC5kcmF3SW1hZ2UoaW1hZ2UsIHN0eWxlQ29sb3JTcGFjZSwgZGVzdCwgc3Jj
LCBvcCk7CiB9CiAKLXN0YXRpYyB2b2lkIGRyYXdJbWFnZVRvQ29udGV4dChJbWFnZUJ1ZmZlciog
aW1hZ2VCdWZmZXIsIEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgQ29sb3JTcGFjZSBzdHlsZUNv
bG9yU3BhY2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdCwgY29uc3QgRmxvYXRSZWN0JiBzcmMsIENv
bXBvc2l0ZU9wZXJhdG9yIG9wKQorc3RhdGljIHZvaWQgZHJhd0ltYWdlVG9Db250ZXh0KEltYWdl
QnVmZmVyJiBpbWFnZUJ1ZmZlciwgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBDb2xvclNwYWNl
IHN0eWxlQ29sb3JTcGFjZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0LCBjb25zdCBGbG9hdFJlY3Qm
IHNyYywgQ29tcG9zaXRlT3BlcmF0b3Igb3ApCiB7CiAgICAgY29udGV4dC5kcmF3SW1hZ2VCdWZm
ZXIoaW1hZ2VCdWZmZXIsIHN0eWxlQ29sb3JTcGFjZSwgZGVzdCwgc3JjLCBvcCk7CiB9CiAKLXRl
bXBsYXRlPGNsYXNzIFQ+IHZvaWQgIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6ZnVsbENhbnZh
c0NvbXBvc2l0ZWREcmF3SW1hZ2UoVCogaW1hZ2UsIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNl
LCBjb25zdCBGbG9hdFJlY3QmIGRlc3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjLCBDb21wb3NpdGVP
cGVyYXRvciBvcCkKK3RlbXBsYXRlPGNsYXNzIFQ+IHZvaWQgIENhbnZhc1JlbmRlcmluZ0NvbnRl
eHQyRDo6ZnVsbENhbnZhc0NvbXBvc2l0ZWREcmF3SW1hZ2UoVCYgaW1hZ2UsIENvbG9yU3BhY2Ug
c3R5bGVDb2xvclNwYWNlLCBjb25zdCBGbG9hdFJlY3QmIGRlc3QsIGNvbnN0IEZsb2F0UmVjdCYg
c3JjLCBDb21wb3NpdGVPcGVyYXRvciBvcCkKIHsKICAgICBBU1NFUlQoaXNGdWxsQ2FudmFzQ29t
cG9zaXRlTW9kZShvcCkpOwogCkBAIC0xNzY4LDcgKzE3NjgsNyBAQCB0ZW1wbGF0ZTxjbGFzcyBU
PiB2b2lkICBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmZ1bGxDYW52YXNDb21wb3NpdGVkRHJh
d0ltYWdlKAogICAgIGJ1ZmZlci0+Y29udGV4dCgpLmNvbmNhdENUTShlZmZlY3RpdmVUcmFuc2Zv
cm0pOwogICAgIGRyYXdJbWFnZVRvQ29udGV4dChpbWFnZSwgYnVmZmVyLT5jb250ZXh0KCksIHN0
eWxlQ29sb3JTcGFjZSwgYWRqdXN0ZWREZXN0LCBzcmMsIENvbXBvc2l0ZVNvdXJjZU92ZXIpOwog
Ci0gICAgY29tcG9zaXRlQnVmZmVyKGJ1ZmZlci5nZXQoKSwgYnVmZmVyUmVjdCwgb3ApOworICAg
IGNvbXBvc2l0ZUJ1ZmZlcigqYnVmZmVyLCBidWZmZXJSZWN0LCBvcCk7CiB9CiAKIHZvaWQgQ2Fu
dmFzUmVuZGVyaW5nQ29udGV4dDJEOjpwcmVwYXJlR3JhZGllbnRGb3JEYXNoYm9hcmQoQ2FudmFz
R3JhZGllbnQmIGdyYWRpZW50KSBjb25zdApAQCAtMjQxOSw3ICsyNDE5LDcgQEAgdm9pZCBDYW52
YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmRyYXdUZXh0SW50ZXJuYWwoY29uc3QgU3RyaW5nJiB0ZXh0
LCBmbG9hdCB4LCBmbG8KIAogICAgIC8vIFRoZSBzbG9wIGJ1aWx0IGluIHRvIHRoaXMgbWFzayBy
ZWN0IG1hdGNoZXMgdGhlIGhldXJpc3RpYyB1c2VkIGluIEZvbnRDR1dpbi5jcHAgZm9yIEdESSB0
ZXh0LgogICAgIEZsb2F0UmVjdCB0ZXh0UmVjdCA9IEZsb2F0UmVjdChsb2NhdGlvbi54KCkgLSBm
b250TWV0cmljcy5oZWlnaHQoKSAvIDIsIGxvY2F0aW9uLnkoKSAtIGZvbnRNZXRyaWNzLmFzY2Vu
dCgpIC0gZm9udE1ldHJpY3MubGluZUdhcCgpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB3aWR0aCArIGZvbnRNZXRyaWNzLmhlaWdodCgpLCBmb250TWV0cmljcy5saW5lU3Bh
Y2luZygpKTsKKyAgICAgICAgd2lkdGggKyBmb250TWV0cmljcy5oZWlnaHQoKSwgZm9udE1ldHJp
Y3MubGluZVNwYWNpbmcoKSk7CiAgICAgaWYgKCFmaWxsKQogICAgICAgICBpbmZsYXRlU3Ryb2tl
UmVjdCh0ZXh0UmVjdCk7CiAKQEAgLTI0NjEsNiArMjQ2MSw4IEBAIHZvaWQgQ2FudmFzUmVuZGVy
aW5nQ29udGV4dDJEOjpkcmF3VGV4dEludGVybmFsKGNvbnN0IFN0cmluZyYgdGV4dCwgZmxvYXQg
eCwgZmxvCiAgICAgICAgIH0KIAogICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+
IG1hc2tJbWFnZSA9IGMtPmNyZWF0ZUNvbXBhdGlibGVCdWZmZXIobWFza1JlY3Quc2l6ZSgpKTsK
KyAgICAgICAgaWYgKCFtYXNrSW1hZ2UpCisgICAgICAgICAgICByZXR1cm47CiAKICAgICAgICAg
R3JhcGhpY3NDb250ZXh0JiBtYXNrSW1hZ2VDb250ZXh0ID0gbWFza0ltYWdlLT5jb250ZXh0KCk7
CiAKQEAgLTI0ODQsNyArMjQ4Niw3IEBAIHZvaWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpk
cmF3VGV4dEludGVybmFsKGNvbnN0IFN0cmluZyYgdGV4dCwgZmxvYXQgeCwgZmxvCiAgICAgICAg
IH0KIAogICAgICAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoKmMpOwot
ICAgICAgICBjLT5jbGlwVG9JbWFnZUJ1ZmZlcihtYXNrSW1hZ2UuZ2V0KCksIG1hc2tSZWN0KTsK
KyAgICAgICAgYy0+Y2xpcFRvSW1hZ2VCdWZmZXIoKm1hc2tJbWFnZSwgbWFza1JlY3QpOwogICAg
ICAgICBkcmF3U3R5bGUuYXBwbHlGaWxsQ29sb3IoYyk7CiAgICAgICAgIGMtPmZpbGxSZWN0KG1h
c2tSZWN0KTsKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmggYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuaAppbmRleCBhNDRlNmI5MzBkYzY1Y2U0
MTQwOGUwM2IyNTQ1MWY3MDBjYmEyYTE5Li44NzNmNjQzZWU4NzE5OWJmNmM0OGE2Mzg0MDJiOTI4
NDE1OTQ1M2Q5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNS
ZW5kZXJpbmdDb250ZXh0MkQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52
YXNSZW5kZXJpbmdDb250ZXh0MkQuaApAQCAtMzYzLDExICszNjMsMTEgQEAgcHJpdmF0ZToKIAog
ICAgIHRlbXBsYXRlPGNsYXNzIFQ+IEludFJlY3QgY2FsY3VsYXRlQ29tcG9zaXRpbmdCdWZmZXJS
ZWN0KGNvbnN0IFQmLCBJbnRTaXplKik7CiAgICAgc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVy
PiBjcmVhdGVDb21wb3NpdGluZ0J1ZmZlcihjb25zdCBJbnRSZWN0Jik7Ci0gICAgdm9pZCBjb21w
b3NpdGVCdWZmZXIoSW1hZ2VCdWZmZXIqLCBjb25zdCBJbnRSZWN0JiwgQ29tcG9zaXRlT3BlcmF0
b3IpOworICAgIHZvaWQgY29tcG9zaXRlQnVmZmVyKEltYWdlQnVmZmVyJiwgY29uc3QgSW50UmVj
dCYsIENvbXBvc2l0ZU9wZXJhdG9yKTsKIAogICAgIHZvaWQgaW5mbGF0ZVN0cm9rZVJlY3QoRmxv
YXRSZWN0JikgY29uc3Q7CiAKLSAgICB0ZW1wbGF0ZTxjbGFzcyBUPiB2b2lkIGZ1bGxDYW52YXND
b21wb3NpdGVkRHJhd0ltYWdlKFQqLCBDb2xvclNwYWNlLCBjb25zdCBGbG9hdFJlY3QmLCBjb25z
dCBGbG9hdFJlY3QmLCBDb21wb3NpdGVPcGVyYXRvcik7CisgICAgdGVtcGxhdGU8Y2xhc3MgVD4g
dm9pZCBmdWxsQ2FudmFzQ29tcG9zaXRlZERyYXdJbWFnZShUJiwgQ29sb3JTcGFjZSwgY29uc3Qg
RmxvYXRSZWN0JiwgY29uc3QgRmxvYXRSZWN0JiwgQ29tcG9zaXRlT3BlcmF0b3IpOwogCiAgICAg
dm9pZCBwcmVwYXJlR3JhZGllbnRGb3JEYXNoYm9hcmQoQ2FudmFzR3JhZGllbnQmIGdyYWRpZW50
KSBjb25zdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0wy
UmVuZGVyaW5nQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTDJS
ZW5kZXJpbmdDb250ZXh0LmNwcAppbmRleCA1M2IyNzhkYmRhY2ZkZjc4MWU4YWIxMzIyMTViYTQz
OWVhNTIwMzFkLi5hY2M2N2Q4ZDM0ZWVmZWQwN2YyZjI2NTlhOWI2NDk0MjgyNzdjYjc5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTDJSZW5kZXJpbmdDb250ZXh0
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTDJSZW5kZXJpbmdDb250
ZXh0LmNwcApAQCAtMTQxOSw4ICsxNDE5LDExIEBAIHZvaWQgV2ViR0wyUmVuZGVyaW5nQ29udGV4
dDo6dGV4U3ViSW1hZ2UyRChHQzNEZW51bSB0YXJnZXQsIEdDM0RpbnQgbGV2ZWwsIEdDM0RpCiAg
ICAgICAgIHJldHVybjsKICAgICAKICAgICBSZWZQdHI8SW1hZ2U+IGltYWdlRm9yUmVuZGVyID0g
aW1hZ2UtPmNhY2hlZEltYWdlKCktPmltYWdlRm9yUmVuZGVyZXIoaW1hZ2UtPnJlbmRlcmVyKCkp
OworICAgIGlmICghaW1hZ2VGb3JSZW5kZXIpCisgICAgICAgIHJldHVybjsKKwogICAgIGlmIChp
bWFnZUZvclJlbmRlci0+aXNTVkdJbWFnZSgpKQotICAgICAgICBpbWFnZUZvclJlbmRlciA9IGRy
YXdJbWFnZUludG9CdWZmZXIoaW1hZ2VGb3JSZW5kZXIuZ2V0KCksIGltYWdlLT53aWR0aCgpLCBp
bWFnZS0+aGVpZ2h0KCksIDEpOworICAgICAgICBpbWFnZUZvclJlbmRlciA9IGRyYXdJbWFnZUlu
dG9CdWZmZXIoKmltYWdlRm9yUmVuZGVyLCBpbWFnZS0+d2lkdGgoKSwgaW1hZ2UtPmhlaWdodCgp
LCAxKTsKICAgICAKICAgICBpZiAoIWltYWdlRm9yUmVuZGVyIHx8ICF2YWxpZGF0ZVRleEZ1bmMo
InRleFN1YkltYWdlMkQiLCBUZXhTdWJJbWFnZSwgU291cmNlSFRNTEltYWdlRWxlbWVudCwgdGFy
Z2V0LCBsZXZlbCwgR3JhcGhpY3NDb250ZXh0M0Q6Ok5PTkUsIGltYWdlRm9yUmVuZGVyLT53aWR0
aCgpLCBpbWFnZUZvclJlbmRlci0+aGVpZ2h0KCksIDAsIGZvcm1hdCwgdHlwZSwgeG9mZnNldCwg
eW9mZnNldCkpCiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuY3BwCmluZGV4IGI2ZjdjMzU2NzI0ZTkzZDIy
MjUyZDVhY2IyZWMzMTg1ODU0MzFiZjcuLmVjMTE1MmEzNDgyMWNiMDI4MzdjMzJiYjY2YzZmZTFj
NmViMTkyMzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVu
ZGVyaW5nQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xS
ZW5kZXJpbmdDb250ZXh0LmNwcApAQCAtNjIzLDggKzYyMywxMSBAQCB2b2lkIFdlYkdMUmVuZGVy
aW5nQ29udGV4dDo6dGV4U3ViSW1hZ2UyRChHQzNEZW51bSB0YXJnZXQsIEdDM0RpbnQgbGV2ZWws
IEdDM0RpbgogICAgICAgICByZXR1cm47CiAgICAgCiAgICAgUmVmUHRyPEltYWdlPiBpbWFnZUZv
clJlbmRlciA9IGltYWdlLT5jYWNoZWRJbWFnZSgpLT5pbWFnZUZvclJlbmRlcmVyKGltYWdlLT5y
ZW5kZXJlcigpKTsKKyAgICBpZiAoIWltYWdlRm9yUmVuZGVyKQorICAgICAgICByZXR1cm47CisK
ICAgICBpZiAoaW1hZ2VGb3JSZW5kZXItPmlzU1ZHSW1hZ2UoKSkKLSAgICAgICAgaW1hZ2VGb3JS
ZW5kZXIgPSBkcmF3SW1hZ2VJbnRvQnVmZmVyKGltYWdlRm9yUmVuZGVyLmdldCgpLCBpbWFnZS0+
d2lkdGgoKSwgaW1hZ2UtPmhlaWdodCgpLCAxKTsKKyAgICAgICAgaW1hZ2VGb3JSZW5kZXIgPSBk
cmF3SW1hZ2VJbnRvQnVmZmVyKCppbWFnZUZvclJlbmRlciwgaW1hZ2UtPndpZHRoKCksIGltYWdl
LT5oZWlnaHQoKSwgMSk7CiAgICAgCiAgICAgaWYgKCFpbWFnZUZvclJlbmRlciB8fCAhdmFsaWRh
dGVUZXhGdW5jKCJ0ZXhTdWJJbWFnZTJEIiwgVGV4U3ViSW1hZ2UsIFNvdXJjZUhUTUxJbWFnZUVs
ZW1lbnQsIHRhcmdldCwgbGV2ZWwsIGZvcm1hdCwgaW1hZ2VGb3JSZW5kZXItPndpZHRoKCksIGlt
YWdlRm9yUmVuZGVyLT5oZWlnaHQoKSwgMCwgZm9ybWF0LCB0eXBlLCB4b2Zmc2V0LCB5b2Zmc2V0
KSkKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2Nh
bnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmNwcAppbmRleCBhNGFhN2E3YjM5YTgyOTg5
ZWEzMThiNGMwNzU4YzdiMjQ5ZGI4Yjk2Li42NmJmYzkwNWUyYWNiYzBjMjM4ODU4NzI2ZDg0YjNj
ZmYwN2U1YmNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJl
bmRlcmluZ0NvbnRleHRCYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9X
ZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmNwcApAQCAtMzE2NCw3ICszMTY0LDcgQEAgdm9pZCBX
ZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp0ZXhJbWFnZTJEKEdDM0RlbnVtIHRhcmdldCwgR0Mz
RGludCBsZXZlbCwgR0MzRGUKICAgICAgICAgbV9jb250ZXh0LT5waXhlbFN0b3JlaShHcmFwaGlj
c0NvbnRleHQzRDo6VU5QQUNLX0FMSUdOTUVOVCwgbV91bnBhY2tBbGlnbm1lbnQpOwogfQogCi1Q
YXNzUmVmUHRyPEltYWdlPiBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpkcmF3SW1hZ2VJbnRv
QnVmZmVyKEltYWdlKiBpbWFnZSwgaW50IHdpZHRoLCBpbnQgaGVpZ2h0LCBpbnQgZGV2aWNlU2Nh
bGVGYWN0b3IpCitQYXNzUmVmUHRyPEltYWdlPiBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpk
cmF3SW1hZ2VJbnRvQnVmZmVyKEltYWdlJiBpbWFnZSwgaW50IHdpZHRoLCBpbnQgaGVpZ2h0LCBp
bnQgZGV2aWNlU2NhbGVGYWN0b3IpCiB7CiAgICAgSW50U2l6ZSBzaXplKHdpZHRoLCBoZWlnaHQp
OwogICAgIHNpemUuc2NhbGUoZGV2aWNlU2NhbGVGYWN0b3IpOwpAQCAtMzE3NCw3ICszMTc0LDcg
QEAgUGFzc1JlZlB0cjxJbWFnZT4gV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6ZHJhd0ltYWdl
SW50b0J1ZmZlcihJbWFnZSogaW1hZ2UsIGkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAg
fQogCi0gICAgRmxvYXRSZWN0IHNyY1JlY3QoRmxvYXRQb2ludCgpLCBpbWFnZS0+c2l6ZSgpKTsK
KyAgICBGbG9hdFJlY3Qgc3JjUmVjdChGbG9hdFBvaW50KCksIGltYWdlLnNpemUoKSk7CiAgICAg
RmxvYXRSZWN0IGRlc3RSZWN0KEZsb2F0UG9pbnQoKSwgc2l6ZSk7CiAgICAgYnVmLT5jb250ZXh0
KCkuZHJhd0ltYWdlKGltYWdlLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBkZXN0UmVjdCwgc3JjUmVj
dCk7CiAgICAgcmV0dXJuIGJ1Zi0+Y29weUltYWdlKEltYWdlQnVmZmVyOjpmYXN0Q29weUltYWdl
TW9kZSgpKTsKQEAgLTMxODgsOCArMzE4OCwxMSBAQCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4
dEJhc2U6OnRleEltYWdlMkQoR0MzRGVudW0gdGFyZ2V0LCBHQzNEaW50IGxldmVsLCBHQzNEZQog
ICAgICAgICByZXR1cm47CiAKICAgICBSZWZQdHI8SW1hZ2U+IGltYWdlRm9yUmVuZGVyID0gaW1h
Z2UtPmNhY2hlZEltYWdlKCktPmltYWdlRm9yUmVuZGVyZXIoaW1hZ2UtPnJlbmRlcmVyKCkpOwor
ICAgIGlmICghaW1hZ2VGb3JSZW5kZXIpCisgICAgICAgIHJldHVybjsKKwogICAgIGlmIChpbWFn
ZUZvclJlbmRlci0+aXNTVkdJbWFnZSgpKQotICAgICAgICBpbWFnZUZvclJlbmRlciA9IGRyYXdJ
bWFnZUludG9CdWZmZXIoaW1hZ2VGb3JSZW5kZXIuZ2V0KCksIGltYWdlLT53aWR0aCgpLCBpbWFn
ZS0+aGVpZ2h0KCksIDEpOworICAgICAgICBpbWFnZUZvclJlbmRlciA9IGRyYXdJbWFnZUludG9C
dWZmZXIoKmltYWdlRm9yUmVuZGVyLCBpbWFnZS0+d2lkdGgoKSwgaW1hZ2UtPmhlaWdodCgpLCAx
KTsKIAogICAgIGlmICghaW1hZ2VGb3JSZW5kZXIgfHwgIXZhbGlkYXRlVGV4RnVuYygidGV4SW1h
Z2UyRCIsIFRleEltYWdlLCBTb3VyY2VIVE1MSW1hZ2VFbGVtZW50LCB0YXJnZXQsIGxldmVsLCBp
bnRlcm5hbGZvcm1hdCwgaW1hZ2VGb3JSZW5kZXItPndpZHRoKCksIGltYWdlRm9yUmVuZGVyLT5o
ZWlnaHQoKSwgMCwgZm9ybWF0LCB0eXBlLCAwLCAwKSkKICAgICAgICAgcmV0dXJuOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFz
ZS5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFz
ZS5oCmluZGV4IGUwOWMyYTQzNDZjNWFhMWI0OWIzMTg5NTM0MjYwMDI3MmU2M2Y5ZWQuLmNhMDU4
YjFiZTBlOTRkZGQ0ZWZiMTkxZDkyZTFmNjY5MmEzNmVlNjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmgKQEAgLTQy
Niw3ICs0MjYsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgLy8gQWRkcyBhIGNvbXByZXNzZWQgdGV4dHVy
ZSBmb3JtYXQuCiAgICAgdm9pZCBhZGRDb21wcmVzc2VkVGV4dHVyZUZvcm1hdChHQzNEZW51bSk7
CiAKLSAgICBQYXNzUmVmUHRyPEltYWdlPiBkcmF3SW1hZ2VJbnRvQnVmZmVyKEltYWdlKiwgaW50
IHdpZHRoLCBpbnQgaGVpZ2h0LCBpbnQgZGV2aWNlU2NhbGVGYWN0b3IpOworICAgIFBhc3NSZWZQ
dHI8SW1hZ2U+IGRyYXdJbWFnZUludG9CdWZmZXIoSW1hZ2UmLCBpbnQgd2lkdGgsIGludCBoZWln
aHQsIGludCBkZXZpY2VTY2FsZUZhY3Rvcik7CiAKICNpZiBFTkFCTEUoVklERU8pCiAgICAgUGFz
c1JlZlB0cjxJbWFnZT4gdmlkZW9GcmFtZVRvSW1hZ2UoSFRNTFZpZGVvRWxlbWVudCosIEJhY2tp
bmdTdG9yZUNvcHksIEV4Y2VwdGlvbkNvZGUmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1Njcm9sbFZpZXcuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xs
Vmlldy5jcHAKaW5kZXggMDk3ODhiMGZjMzM5M2IwZTkxZTAyYmYzMjM5N2ZiMGRhNDc1YTY5OS4u
MTVhMGJiMWQwYzI0ZGQzMWVjYzI5M2Q0NzgxNmQyNWI0YmNhYzgzMiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsVmlldy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vU2Nyb2xsVmlldy5jcHAKQEAgLTExNzgsMTAgKzExNzgsMTIgQEAgdm9pZCBTY3Jv
bGxWaWV3OjpwYWludFNjcm9sbGJhcnMoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBJ
bnRSZWN0JiByZWN0KQogdm9pZCBTY3JvbGxWaWV3OjpwYWludFBhblNjcm9sbEljb24oR3JhcGhp
Y3NDb250ZXh0JiBjb250ZXh0KQogewogICAgIHN0YXRpYyBJbWFnZSogcGFuU2Nyb2xsSWNvbiA9
IEltYWdlOjpsb2FkUGxhdGZvcm1SZXNvdXJjZSgicGFuSWNvbiIpLmxlYWtSZWYoKTsKKyAgICBp
ZiAoIXBhblNjcm9sbEljb24pCisgICAgICAgIHJldHVybjsKICAgICBJbnRQb2ludCBpY29uR0NQ
b2ludCA9IG1fcGFuU2Nyb2xsSWNvblBvaW50OwogICAgIGlmIChwYXJlbnQoKSkKICAgICAgICAg
aWNvbkdDUG9pbnQgPSBwYXJlbnQoKS0+d2luZG93VG9Db250ZW50cyhpY29uR0NQb2ludCk7Ci0g
ICAgY29udGV4dC5kcmF3SW1hZ2UocGFuU2Nyb2xsSWNvbiwgQ29sb3JTcGFjZURldmljZVJHQiwg
aWNvbkdDUG9pbnQpOworICAgIGNvbnRleHQuZHJhd0ltYWdlKCpwYW5TY3JvbGxJY29uLCBDb2xv
clNwYWNlRGV2aWNlUkdCLCBpY29uR0NQb2ludCk7CiB9CiAKIHZvaWQgU2Nyb2xsVmlldzo6cGFp
bnQoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBJbnRSZWN0JiByZWN0KQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ3Jvc3NmYWRlR2VuZXJhdGVk
SW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ3Jvc3NmYWRlR2Vu
ZXJhdGVkSW1hZ2UuY3BwCmluZGV4IDRhZjJlNDcxMTU1MjcwZDUwYzhhZTg3ZDFiZjk0MjgzZTFi
ZjZmYmUuLjY4MzJiODk5N2Y3NWFlNDkyZjUyMGY1MGM5NzZlNmQ0MjE1NDkxYmIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Nyb3NzZmFkZUdlbmVyYXRlZElt
YWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Dcm9zc2ZhZGVH
ZW5lcmF0ZWRJbWFnZS5jcHAKQEAgLTMyLDcgKzMyLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCi1Dcm9zc2ZhZGVHZW5lcmF0ZWRJbWFnZTo6Q3Jvc3NmYWRlR2VuZXJhdGVkSW1hZ2UoSW1h
Z2UqIGZyb21JbWFnZSwgSW1hZ2UqIHRvSW1hZ2UsIGZsb2F0IHBlcmNlbnRhZ2UsIGNvbnN0IEZs
b2F0U2l6ZSYgY3Jvc3NmYWRlU2l6ZSwgY29uc3QgRmxvYXRTaXplJiBzaXplKQorQ3Jvc3NmYWRl
R2VuZXJhdGVkSW1hZ2U6OkNyb3NzZmFkZUdlbmVyYXRlZEltYWdlKEltYWdlJiBmcm9tSW1hZ2Us
IEltYWdlJiB0b0ltYWdlLCBmbG9hdCBwZXJjZW50YWdlLCBjb25zdCBGbG9hdFNpemUmIGNyb3Nz
ZmFkZVNpemUsIGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSkKICAgICA6IG1fZnJvbUltYWdlKGZyb21J
bWFnZSkKICAgICAsIG1fdG9JbWFnZSh0b0ltYWdlKQogICAgICwgbV9wZXJjZW50YWdlKHBlcmNl
bnRhZ2UpCkBAIC00MSwxMiArNDEsMTIgQEAgQ3Jvc3NmYWRlR2VuZXJhdGVkSW1hZ2U6OkNyb3Nz
ZmFkZUdlbmVyYXRlZEltYWdlKEltYWdlKiBmcm9tSW1hZ2UsIEltYWdlKiB0b0ltYWcKICAgICBz
ZXRDb250YWluZXJTaXplKHNpemUpOwogfQogCi1zdGF0aWMgdm9pZCBkcmF3Q3Jvc3NmYWRlU3Vi
aW1hZ2UoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBJbWFnZSogaW1hZ2UsIENvbXBvc2l0ZU9w
ZXJhdG9yIG9wZXJhdGlvbiwgZmxvYXQgb3BhY2l0eSwgY29uc3QgRmxvYXRTaXplJiB0YXJnZXRT
aXplKQorc3RhdGljIHZvaWQgZHJhd0Nyb3NzZmFkZVN1YmltYWdlKEdyYXBoaWNzQ29udGV4dCYg
Y29udGV4dCwgSW1hZ2UmIGltYWdlLCBDb21wb3NpdGVPcGVyYXRvciBvcGVyYXRpb24sIGZsb2F0
IG9wYWNpdHksIGNvbnN0IEZsb2F0U2l6ZSYgdGFyZ2V0U2l6ZSkKIHsKLSAgICBGbG9hdFNpemUg
aW1hZ2VTaXplID0gaW1hZ2UtPnNpemUoKTsKKyAgICBGbG9hdFNpemUgaW1hZ2VTaXplID0gaW1h
Z2Uuc2l6ZSgpOwogCiAgICAgLy8gU1ZHSW1hZ2UgcmVzZXRzIHRoZSBvcGFjaXR5IHdoZW4gcGFp
bnRpbmcsIHNvIHdlIGhhdmUgdG8gdXNlIHRyYW5zcGFyZW5jeSBsYXllcnMgdG8gYWNjdXJhdGVs
eSBwYWludCBvbmUgYXQgYSBnaXZlbiBvcGFjaXR5LgotICAgIGJvb2wgdXNlVHJhbnNwYXJlbmN5
TGF5ZXIgPSBpbWFnZS0+aXNTVkdJbWFnZSgpOworICAgIGJvb2wgdXNlVHJhbnNwYXJlbmN5TGF5
ZXIgPSBpbWFnZS5pc1NWR0ltYWdlKCk7CiAKICAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVy
IHN0YXRlU2F2ZXIoY29udGV4dCk7CiAKQEAgLTY4LDcgKzY4LDcgQEAgc3RhdGljIHZvaWQgZHJh
d0Nyb3NzZmFkZVN1YmltYWdlKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgSW1hZ2UqIGltYWdl
LCBDb21wb3MKIHZvaWQgQ3Jvc3NmYWRlR2VuZXJhdGVkSW1hZ2U6OmRyYXdDcm9zc2ZhZGUoR3Jh
cGhpY3NDb250ZXh0JiBjb250ZXh0KQogewogICAgIC8vIERyYXcgbm90aGluZyBpZiBlaXRoZXIg
b2YgdGhlIGltYWdlcyBoYXNuJ3QgbG9hZGVkIHlldC4KLSAgICBpZiAobV9mcm9tSW1hZ2UgPT0g
SW1hZ2U6Om51bGxJbWFnZSgpIHx8IG1fdG9JbWFnZSA9PSBJbWFnZTo6bnVsbEltYWdlKCkpCisg
ICAgaWYgKG1fZnJvbUltYWdlLnB0cigpID09IEltYWdlOjpudWxsSW1hZ2UoKSB8fCBtX3RvSW1h
Z2UucHRyKCkgPT0gSW1hZ2U6Om51bGxJbWFnZSgpKQogICAgICAgICByZXR1cm47CiAKICAgICBH
cmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoY29udGV4dCk7CkBAIC03Niw4ICs3
Niw4IEBAIHZvaWQgQ3Jvc3NmYWRlR2VuZXJhdGVkSW1hZ2U6OmRyYXdDcm9zc2ZhZGUoR3JhcGhp
Y3NDb250ZXh0JiBjb250ZXh0KQogICAgIGNvbnRleHQuY2xpcChGbG9hdFJlY3QoRmxvYXRQb2lu
dCgpLCBtX2Nyb3NzZmFkZVNpemUpKTsKICAgICBjb250ZXh0LmJlZ2luVHJhbnNwYXJlbmN5TGF5
ZXIoMSk7CiAKLSAgICBkcmF3Q3Jvc3NmYWRlU3ViaW1hZ2UoY29udGV4dCwgbV9mcm9tSW1hZ2Us
IENvbXBvc2l0ZVNvdXJjZU92ZXIsIDEgLSBtX3BlcmNlbnRhZ2UsIG1fY3Jvc3NmYWRlU2l6ZSk7
Ci0gICAgZHJhd0Nyb3NzZmFkZVN1YmltYWdlKGNvbnRleHQsIG1fdG9JbWFnZSwgQ29tcG9zaXRl
UGx1c0xpZ2h0ZXIsIG1fcGVyY2VudGFnZSwgbV9jcm9zc2ZhZGVTaXplKTsKKyAgICBkcmF3Q3Jv
c3NmYWRlU3ViaW1hZ2UoY29udGV4dCwgbV9mcm9tSW1hZ2UuZ2V0KCksIENvbXBvc2l0ZVNvdXJj
ZU92ZXIsIDEgLSBtX3BlcmNlbnRhZ2UsIG1fY3Jvc3NmYWRlU2l6ZSk7CisgICAgZHJhd0Nyb3Nz
ZmFkZVN1YmltYWdlKGNvbnRleHQsIG1fdG9JbWFnZS5nZXQoKSwgQ29tcG9zaXRlUGx1c0xpZ2h0
ZXIsIG1fcGVyY2VudGFnZSwgbV9jcm9zc2ZhZGVTaXplKTsKIAogICAgIGNvbnRleHQuZW5kVHJh
bnNwYXJlbmN5TGF5ZXIoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0Nyb3NzZmFkZUdlbmVyYXRlZEltYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9Dcm9zc2ZhZGVHZW5lcmF0ZWRJbWFnZS5oCmluZGV4IDM1OWQyOWFiNTEw
MzRkMGE5M2M0ZTdlNDQ0NmI1YTkxOTk4ZGI5MzEuLjg0NmYyOTZkMzk4ZTlhMjkyYmFlYjZjMzJl
YzEwMWJlYjg2MzdlMzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0Nyb3NzZmFkZUdlbmVyYXRlZEltYWdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvQ3Jvc3NmYWRlR2VuZXJhdGVkSW1hZ2UuaApAQCAtMzYsNyArMzYsNyBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIENyb3NzZmFkZUdlbmVyYXRlZEltYWdlIGZpbmFs
IDogcHVibGljIEdlbmVyYXRlZEltYWdlIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPENyb3Nz
ZmFkZUdlbmVyYXRlZEltYWdlPiBjcmVhdGUoSW1hZ2UqIGZyb21JbWFnZSwgSW1hZ2UqIHRvSW1h
Z2UsIGZsb2F0IHBlcmNlbnRhZ2UsIGNvbnN0IEZsb2F0U2l6ZSYgY3Jvc3NmYWRlU2l6ZSwgY29u
c3QgRmxvYXRTaXplJiBzaXplKQorICAgIHN0YXRpYyBSZWY8Q3Jvc3NmYWRlR2VuZXJhdGVkSW1h
Z2U+IGNyZWF0ZShJbWFnZSYgZnJvbUltYWdlLCBJbWFnZSYgdG9JbWFnZSwgZmxvYXQgcGVyY2Vu
dGFnZSwgY29uc3QgRmxvYXRTaXplJiBjcm9zc2ZhZGVTaXplLCBjb25zdCBGbG9hdFNpemUmIHNp
emUpCiAgICAgewogICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBDcm9zc2ZhZGVHZW5lcmF0
ZWRJbWFnZShmcm9tSW1hZ2UsIHRvSW1hZ2UsIHBlcmNlbnRhZ2UsIGNyb3NzZmFkZVNpemUsIHNp
emUpKTsKICAgICB9CkBAIC01MiwxMyArNTIsMTMgQEAgcHJvdGVjdGVkOgogICAgIHZpcnR1YWwg
dm9pZCBkcmF3KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29u
c3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb2xvclNwYWNlIHN0eWxlQ29sb3JTcGFjZSwgQ29tcG9z
aXRlT3BlcmF0b3IsIEJsZW5kTW9kZSwgSW1hZ2VPcmllbnRhdGlvbkRlc2NyaXB0aW9uKSBvdmVy
cmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgZHJhd1BhdHRlcm4oR3JhcGhpY3NDb250ZXh0JiwgY29u
c3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHBhdHRlcm5UcmFu
c2Zvcm0sIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBjb25zdCBGbG9hdFNpemUmIHNwYWNpbmcs
IENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBDb21wb3NpdGVPcGVyYXRvciwgY29uc3QgRmxv
YXRSZWN0JiBkc3RSZWN0LCBCbGVuZE1vZGUpIG92ZXJyaWRlOwogCi0gICAgQ3Jvc3NmYWRlR2Vu
ZXJhdGVkSW1hZ2UoSW1hZ2UqIGZyb21JbWFnZSwgSW1hZ2UqIHRvSW1hZ2UsIGZsb2F0IHBlcmNl
bnRhZ2UsIGNvbnN0IEZsb2F0U2l6ZSYgY3Jvc3NmYWRlU2l6ZSwgY29uc3QgRmxvYXRTaXplJik7
CisgICAgQ3Jvc3NmYWRlR2VuZXJhdGVkSW1hZ2UoSW1hZ2UmIGZyb21JbWFnZSwgSW1hZ2UmIHRv
SW1hZ2UsIGZsb2F0IHBlcmNlbnRhZ2UsIGNvbnN0IEZsb2F0U2l6ZSYgY3Jvc3NmYWRlU2l6ZSwg
Y29uc3QgRmxvYXRTaXplJik7CiAKIHByaXZhdGU6CiAgICAgdm9pZCBkcmF3Q3Jvc3NmYWRlKEdy
YXBoaWNzQ29udGV4dCYpOwogCi0gICAgSW1hZ2UqIG1fZnJvbUltYWdlOwotICAgIEltYWdlKiBt
X3RvSW1hZ2U7CisgICAgUmVmPEltYWdlPiBtX2Zyb21JbWFnZTsKKyAgICBSZWY8SW1hZ2U+IG1f
dG9JbWFnZTsKIAogICAgIGZsb2F0IG1fcGVyY2VudGFnZTsKICAgICBGbG9hdFNpemUgbV9jcm9z
c2ZhZGVTaXplOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
R3JhZGllbnRJbWFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFk
aWVudEltYWdlLmNwcAppbmRleCBmNDA1MzBkMDViMDZjNWI5M2VkYzVhZGM4MTNlNTcyNmRhNTEy
ODA5Li4yMjk5ZjUxZmYzZDE5ZWFjOWYyYWUwZDM3ZmUxNzE0MzIwMGI4ZDJiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFkaWVudEltYWdlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFkaWVudEltYWdlLmNwcApAQCAt
NzMsNyArNzMsNyBAQCB2b2lkIEdyYWRpZW50SW1hZ2U6OmRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29u
dGV4dCYgZGVzdENvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgcwogCiAgICAgdW5zaWduZWQgZ2Vu
ZXJhdG9ySGFzaCA9IG1fZ3JhZGllbnQtPmhhc2goKTsKIAotICAgIGlmICghbV9jYWNoZWRJbWFn
ZUJ1ZmZlciB8fCBtX2NhY2hlZEdlbmVyYXRvckhhc2ggIT0gZ2VuZXJhdG9ySGFzaCB8fCBtX2Nh
Y2hlZEFkanVzdGVkU2l6ZSAhPSBhZGp1c3RlZFNpemUgfHwgIWRlc3RDb250ZXh0LmlzQ29tcGF0
aWJsZVdpdGhCdWZmZXIobV9jYWNoZWRJbWFnZUJ1ZmZlci5nZXQoKSkpIHsKKyAgICBpZiAoIW1f
Y2FjaGVkSW1hZ2VCdWZmZXIgfHwgbV9jYWNoZWRHZW5lcmF0b3JIYXNoICE9IGdlbmVyYXRvckhh
c2ggfHwgbV9jYWNoZWRBZGp1c3RlZFNpemUgIT0gYWRqdXN0ZWRTaXplIHx8ICFkZXN0Q29udGV4
dC5pc0NvbXBhdGlibGVXaXRoQnVmZmVyKCptX2NhY2hlZEltYWdlQnVmZmVyKSkgewogICAgICAg
ICBtX2NhY2hlZEltYWdlQnVmZmVyID0gZGVzdENvbnRleHQuY3JlYXRlQ29tcGF0aWJsZUJ1ZmZl
cihhZGp1c3RlZFNpemUsIG1fZ3JhZGllbnQtPmhhc0FscGhhKCkpOwogICAgICAgICBpZiAoIW1f
Y2FjaGVkSW1hZ2VCdWZmZXIpCiAgICAgICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcAppbmRleCA0MjZj
N2E3NmJmYjM4NjZhMzliNTYxZmJhZGM3NjM5OTg5NmM2MjkzLi4yYjRhMmY3OTlmOWY1MDUyNWQ5
ZTk4YjU2MTBjMWM0NWQ1NGFhYTNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHAKQEAgLTM2OCw1MCArMzY4LDQ1IEBAIHZv
aWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3QmlkaVRleHQoY29uc3QgRm9udENhc2NhZGUmIGZvbnQs
IGNvbnN0IFRleHRSdW4mIHJ1biwKICAgICBiaWRpUnVucy5kZWxldGVSdW5zKCk7CiB9CiAKLXZv
aWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3SW1hZ2UoSW1hZ2UqIGltYWdlLCBDb2xvclNwYWNlIGNv
bG9yU3BhY2UsIGNvbnN0IEZsb2F0UG9pbnQmIGRlc3RpbmF0aW9uLCBjb25zdCBJbWFnZVBhaW50
aW5nT3B0aW9ucyYgaW1hZ2VQYWludGluZ09wdGlvbnMpCit2b2lkIEdyYXBoaWNzQ29udGV4dDo6
ZHJhd0ltYWdlKEltYWdlJiBpbWFnZSwgQ29sb3JTcGFjZSBjb2xvclNwYWNlLCBjb25zdCBGbG9h
dFBvaW50JiBkZXN0aW5hdGlvbiwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIGltYWdlUGFp
bnRpbmdPcHRpb25zKQogewotICAgIGlmICghaW1hZ2UpCi0gICAgICAgIHJldHVybjsKLSAgICBk
cmF3SW1hZ2UoaW1hZ2UsIGNvbG9yU3BhY2UsIEZsb2F0UmVjdChkZXN0aW5hdGlvbiwgaW1hZ2Ut
PnNpemUoKSksIEZsb2F0UmVjdChGbG9hdFBvaW50KCksIGltYWdlLT5zaXplKCkpLCBpbWFnZVBh
aW50aW5nT3B0aW9ucyk7CisgICAgZHJhd0ltYWdlKGltYWdlLCBjb2xvclNwYWNlLCBGbG9hdFJl
Y3QoZGVzdGluYXRpb24sIGltYWdlLnNpemUoKSksIEZsb2F0UmVjdChGbG9hdFBvaW50KCksIGlt
YWdlLnNpemUoKSksIGltYWdlUGFpbnRpbmdPcHRpb25zKTsKIH0KIAotdm9pZCBHcmFwaGljc0Nv
bnRleHQ6OmRyYXdJbWFnZShJbWFnZSogaW1hZ2UsIENvbG9yU3BhY2UgY29sb3JTcGFjZSwgY29u
c3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIGlt
YWdlUGFpbnRpbmdPcHRpb25zKQordm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdJbWFnZShJbWFn
ZSYgaW1hZ2UsIENvbG9yU3BhY2UgY29sb3JTcGFjZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5h
dGlvbiwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIGltYWdlUGFpbnRpbmdPcHRpb25zKQog
ewotICAgIGlmICghaW1hZ2UpCi0gICAgICAgIHJldHVybjsKLSAgICAKICNpZiBQTEFURk9STShJ
T1MpCi0gICAgRmxvYXRSZWN0IHNyY1JlY3QoRmxvYXRQb2ludCgpLCBpbWFnZS0+b3JpZ2luYWxT
aXplKCkpOworICAgIEZsb2F0UmVjdCBzcmNSZWN0KEZsb2F0UG9pbnQoKSwgaW1hZ2Uub3JpZ2lu
YWxTaXplKCkpOwogI2Vsc2UKLSAgICBGbG9hdFJlY3Qgc3JjUmVjdChGbG9hdFBvaW50KCksIGlt
YWdlLT5zaXplKCkpOworICAgIEZsb2F0UmVjdCBzcmNSZWN0KEZsb2F0UG9pbnQoKSwgaW1hZ2Uu
c2l6ZSgpKTsKICNlbmRpZgogICAgICAgICAKICAgICBkcmF3SW1hZ2UoaW1hZ2UsIGNvbG9yU3Bh
Y2UsIGRlc3RpbmF0aW9uLCBzcmNSZWN0LCBpbWFnZVBhaW50aW5nT3B0aW9ucyk7CiB9CiAKLXZv
aWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3SW1hZ2UoSW1hZ2UqIGltYWdlLCBDb2xvclNwYWNlIGNv
bG9yU3BhY2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24sIGNvbnN0IEZsb2F0UmVjdCYg
c291cmNlLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgaW1hZ2VQYWludGluZ09wdGlvbnMp
Cit2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd0ltYWdlKEltYWdlJiBpbWFnZSwgQ29sb3JTcGFj
ZSBjb2xvclNwYWNlLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBjb25zdCBGbG9hdFJl
Y3QmIHNvdXJjZSwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIGltYWdlUGFpbnRpbmdPcHRp
b25zKQogewotICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkgfHwgIWltYWdlKQorICAgIGlmIChw
YWludGluZ0Rpc2FibGVkKCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIC8vIEZJWE1FICg0OTAw
Mik6IFNob3VsZCBiZSBJbnRlcnBvbGF0aW9uTG93CiAgICAgSW50ZXJwb2xhdGlvblF1YWxpdHlN
YWludGFpbmVyIGludGVycG9sYXRpb25RdWFsaXR5Rm9yVGhpc1Njb3BlKCp0aGlzLCBpbWFnZVBh
aW50aW5nT3B0aW9ucy5tX3VzZUxvd1F1YWxpdHlTY2FsZSA/IEludGVycG9sYXRpb25Ob25lIDog
aW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eSgpKTsKLSAgICBpbWFnZS0+ZHJhdygqdGhpcywgZGVz
dGluYXRpb24sIHNvdXJjZSwgY29sb3JTcGFjZSwgaW1hZ2VQYWludGluZ09wdGlvbnMubV9jb21w
b3NpdGVPcGVyYXRvciwgaW1hZ2VQYWludGluZ09wdGlvbnMubV9ibGVuZE1vZGUsIGltYWdlUGFp
bnRpbmdPcHRpb25zLm1fb3JpZW50YXRpb25EZXNjcmlwdGlvbik7CisgICAgaW1hZ2UuZHJhdygq
dGhpcywgZGVzdGluYXRpb24sIHNvdXJjZSwgY29sb3JTcGFjZSwgaW1hZ2VQYWludGluZ09wdGlv
bnMubV9jb21wb3NpdGVPcGVyYXRvciwgaW1hZ2VQYWludGluZ09wdGlvbnMubV9ibGVuZE1vZGUs
IGltYWdlUGFpbnRpbmdPcHRpb25zLm1fb3JpZW50YXRpb25EZXNjcmlwdGlvbik7CiB9CiAKLXZv
aWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3VGlsZWRJbWFnZShJbWFnZSogaW1hZ2UsIENvbG9yU3Bh
Y2UgY29sb3JTcGFjZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwgY29uc3QgRmxvYXRQ
b2ludCYgc291cmNlLCBjb25zdCBGbG9hdFNpemUmIHRpbGVTaXplLCBjb25zdCBGbG9hdFNpemUm
IHNwYWNpbmcsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBpbWFnZVBhaW50aW5nT3B0aW9u
cykKK3ZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3VGlsZWRJbWFnZShJbWFnZSYgaW1hZ2UsIENv
bG9yU3BhY2UgY29sb3JTcGFjZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwgY29uc3Qg
RmxvYXRQb2ludCYgc291cmNlLCBjb25zdCBGbG9hdFNpemUmIHRpbGVTaXplLCBjb25zdCBGbG9h
dFNpemUmIHNwYWNpbmcsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBpbWFnZVBhaW50aW5n
T3B0aW9ucykKIHsKLSAgICBpZiAocGFpbnRpbmdEaXNhYmxlZCgpIHx8ICFpbWFnZSkKKyAgICBp
ZiAocGFpbnRpbmdEaXNhYmxlZCgpKQogICAgICAgICByZXR1cm47CiAKICAgICBJbnRlcnBvbGF0
aW9uUXVhbGl0eU1haW50YWluZXIgaW50ZXJwb2xhdGlvblF1YWxpdHlGb3JUaGlzU2NvcGUoKnRo
aXMsIGltYWdlUGFpbnRpbmdPcHRpb25zLm1fdXNlTG93UXVhbGl0eVNjYWxlID8gSW50ZXJwb2xh
dGlvbkxvdyA6IGltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHkoKSk7Ci0gICAgaW1hZ2UtPmRyYXdU
aWxlZCgqdGhpcywgZGVzdGluYXRpb24sIHNvdXJjZSwgdGlsZVNpemUsIHNwYWNpbmcsIGNvbG9y
U3BhY2UsIGltYWdlUGFpbnRpbmdPcHRpb25zLm1fY29tcG9zaXRlT3BlcmF0b3IsIGltYWdlUGFp
bnRpbmdPcHRpb25zLm1fYmxlbmRNb2RlKTsKKyAgICBpbWFnZS5kcmF3VGlsZWQoKnRoaXMsIGRl
c3RpbmF0aW9uLCBzb3VyY2UsIHRpbGVTaXplLCBzcGFjaW5nLCBjb2xvclNwYWNlLCBpbWFnZVBh
aW50aW5nT3B0aW9ucy5tX2NvbXBvc2l0ZU9wZXJhdG9yLCBpbWFnZVBhaW50aW5nT3B0aW9ucy5t
X2JsZW5kTW9kZSk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3VGlsZWRJbWFnZShJ
bWFnZSogaW1hZ2UsIENvbG9yU3BhY2UgY29sb3JTcGFjZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0
aW5hdGlvbiwgY29uc3QgRmxvYXRSZWN0JiBzb3VyY2UsIGNvbnN0IEZsb2F0U2l6ZSYgdGlsZVNj
YWxlRmFjdG9yLAordm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdUaWxlZEltYWdlKEltYWdlJiBp
bWFnZSwgQ29sb3JTcGFjZSBjb2xvclNwYWNlLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9u
LCBjb25zdCBGbG9hdFJlY3QmIHNvdXJjZSwgY29uc3QgRmxvYXRTaXplJiB0aWxlU2NhbGVGYWN0
b3IsCiAgICAgSW1hZ2U6OlRpbGVSdWxlIGhSdWxlLCBJbWFnZTo6VGlsZVJ1bGUgdlJ1bGUsIGNv
bnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBpbWFnZVBhaW50aW5nT3B0aW9ucykKIHsKLSAgICBp
ZiAocGFpbnRpbmdEaXNhYmxlZCgpIHx8ICFpbWFnZSkKKyAgICBpZiAocGFpbnRpbmdEaXNhYmxl
ZCgpKQogICAgICAgICByZXR1cm47CiAKICAgICBpZiAoaFJ1bGUgPT0gSW1hZ2U6OlN0cmV0Y2hU
aWxlICYmIHZSdWxlID09IEltYWdlOjpTdHJldGNoVGlsZSkgewpAQCAtNDIxLDMxICs0MTYsMjcg
QEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdUaWxlZEltYWdlKEltYWdlKiBpbWFnZSwgQ29s
b3JTcGFjZSBjb2xvclNwYWNlLCBjb25zdAogICAgIH0KIAogICAgIEludGVycG9sYXRpb25RdWFs
aXR5TWFpbnRhaW5lciBpbnRlcnBvbGF0aW9uUXVhbGl0eUZvclRoaXNTY29wZSgqdGhpcywgaW1h
Z2VQYWludGluZ09wdGlvbnMubV91c2VMb3dRdWFsaXR5U2NhbGUgPyBJbnRlcnBvbGF0aW9uTG93
IDogaW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eSgpKTsKLSAgICBpbWFnZS0+ZHJhd1RpbGVkKCp0
aGlzLCBkZXN0aW5hdGlvbiwgc291cmNlLCB0aWxlU2NhbGVGYWN0b3IsIGhSdWxlLCB2UnVsZSwg
Y29sb3JTcGFjZSwgaW1hZ2VQYWludGluZ09wdGlvbnMubV9jb21wb3NpdGVPcGVyYXRvcik7Cisg
ICAgaW1hZ2UuZHJhd1RpbGVkKCp0aGlzLCBkZXN0aW5hdGlvbiwgc291cmNlLCB0aWxlU2NhbGVG
YWN0b3IsIGhSdWxlLCB2UnVsZSwgY29sb3JTcGFjZSwgaW1hZ2VQYWludGluZ09wdGlvbnMubV9j
b21wb3NpdGVPcGVyYXRvcik7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3SW1hZ2VC
dWZmZXIoSW1hZ2VCdWZmZXIqIGltYWdlLCBDb2xvclNwYWNlIGNvbG9yU3BhY2UsIGNvbnN0IEZs
b2F0UG9pbnQmIGRlc3RpbmF0aW9uLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgaW1hZ2VQ
YWludGluZ09wdGlvbnMpCit2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd0ltYWdlQnVmZmVyKElt
YWdlQnVmZmVyJiBpbWFnZSwgQ29sb3JTcGFjZSBjb2xvclNwYWNlLCBjb25zdCBGbG9hdFBvaW50
JiBkZXN0aW5hdGlvbiwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIGltYWdlUGFpbnRpbmdP
cHRpb25zKQogewotICAgIGlmICghaW1hZ2UpCi0gICAgICAgIHJldHVybjsKLSAgICBkcmF3SW1h
Z2VCdWZmZXIoaW1hZ2UsIGNvbG9yU3BhY2UsIEZsb2F0UmVjdChkZXN0aW5hdGlvbiwgaW1hZ2Ut
PmxvZ2ljYWxTaXplKCkpLCBGbG9hdFJlY3QoRmxvYXRQb2ludCgpLCBpbWFnZS0+bG9naWNhbFNp
emUoKSksIGltYWdlUGFpbnRpbmdPcHRpb25zKTsKKyAgICBkcmF3SW1hZ2VCdWZmZXIoaW1hZ2Us
IGNvbG9yU3BhY2UsIEZsb2F0UmVjdChkZXN0aW5hdGlvbiwgaW1hZ2UubG9naWNhbFNpemUoKSks
IEZsb2F0UmVjdChGbG9hdFBvaW50KCksIGltYWdlLmxvZ2ljYWxTaXplKCkpLCBpbWFnZVBhaW50
aW5nT3B0aW9ucyk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3SW1hZ2VCdWZmZXIo
SW1hZ2VCdWZmZXIqIGltYWdlLCBDb2xvclNwYWNlIGNvbG9yU3BhY2UsIGNvbnN0IEZsb2F0UmVj
dCYgZGVzdGluYXRpb24sIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBpbWFnZVBhaW50aW5n
T3B0aW9ucykKK3ZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3SW1hZ2VCdWZmZXIoSW1hZ2VCdWZm
ZXImIGltYWdlLCBDb2xvclNwYWNlIGNvbG9yU3BhY2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGlu
YXRpb24sIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBpbWFnZVBhaW50aW5nT3B0aW9ucykK
IHsKLSAgICBpZiAoIWltYWdlKQotICAgICAgICByZXR1cm47Ci0gICAgZHJhd0ltYWdlQnVmZmVy
KGltYWdlLCBjb2xvclNwYWNlLCBkZXN0aW5hdGlvbiwgRmxvYXRSZWN0KEZsb2F0UG9pbnQoKSwg
RmxvYXRTaXplKGltYWdlLT5sb2dpY2FsU2l6ZSgpKSksIGltYWdlUGFpbnRpbmdPcHRpb25zKTsK
KyAgICBkcmF3SW1hZ2VCdWZmZXIoaW1hZ2UsIGNvbG9yU3BhY2UsIGRlc3RpbmF0aW9uLCBGbG9h
dFJlY3QoRmxvYXRQb2ludCgpLCBGbG9hdFNpemUoaW1hZ2UubG9naWNhbFNpemUoKSkpLCBpbWFn
ZVBhaW50aW5nT3B0aW9ucyk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3SW1hZ2VC
dWZmZXIoSW1hZ2VCdWZmZXIqIGltYWdlLCBDb2xvclNwYWNlIGNvbG9yU3BhY2UsIGNvbnN0IEZs
b2F0UmVjdCYgZGVzdGluYXRpb24sIGNvbnN0IEZsb2F0UmVjdCYgc291cmNlLCBjb25zdCBJbWFn
ZVBhaW50aW5nT3B0aW9ucyYgaW1hZ2VQYWludGluZ09wdGlvbnMpCit2b2lkIEdyYXBoaWNzQ29u
dGV4dDo6ZHJhd0ltYWdlQnVmZmVyKEltYWdlQnVmZmVyJiBpbWFnZSwgQ29sb3JTcGFjZSBjb2xv
clNwYWNlLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBjb25zdCBGbG9hdFJlY3QmIHNv
dXJjZSwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIGltYWdlUGFpbnRpbmdPcHRpb25zKQog
ewotICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkgfHwgIWltYWdlKQorICAgIGlmIChwYWludGlu
Z0Rpc2FibGVkKCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIC8vIEZJWE1FICg0OTAwMik6IFNo
b3VsZCBiZSBJbnRlcnBvbGF0aW9uTG93CiAgICAgSW50ZXJwb2xhdGlvblF1YWxpdHlNYWludGFp
bmVyIGludGVycG9sYXRpb25RdWFsaXR5Rm9yVGhpc1Njb3BlKCp0aGlzLCBpbWFnZVBhaW50aW5n
T3B0aW9ucy5tX3VzZUxvd1F1YWxpdHlTY2FsZSA/IEludGVycG9sYXRpb25Ob25lIDogaW1hZ2VJ
bnRlcnBvbGF0aW9uUXVhbGl0eSgpKTsKLSAgICBpbWFnZS0+ZHJhdygqdGhpcywgY29sb3JTcGFj
ZSwgZGVzdGluYXRpb24sIHNvdXJjZSwgaW1hZ2VQYWludGluZ09wdGlvbnMubV9jb21wb3NpdGVP
cGVyYXRvciwgaW1hZ2VQYWludGluZ09wdGlvbnMubV9ibGVuZE1vZGUsIGltYWdlUGFpbnRpbmdP
cHRpb25zLm1fdXNlTG93UXVhbGl0eVNjYWxlKTsKKyAgICBpbWFnZS5kcmF3KCp0aGlzLCBjb2xv
clNwYWNlLCBkZXN0aW5hdGlvbiwgc291cmNlLCBpbWFnZVBhaW50aW5nT3B0aW9ucy5tX2NvbXBv
c2l0ZU9wZXJhdG9yLCBpbWFnZVBhaW50aW5nT3B0aW9ucy5tX2JsZW5kTW9kZSwgaW1hZ2VQYWlu
dGluZ09wdGlvbnMubV91c2VMb3dRdWFsaXR5U2NhbGUpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29u
dGV4dDo6Y2xpcChjb25zdCBJbnRSZWN0JiByZWN0KQpAQCAtNDc4LDExICs0NjksMTEgQEAgdm9p
ZCBHcmFwaGljc0NvbnRleHQ6OmNsaXBPdXRSb3VuZGVkUmVjdChjb25zdCBGbG9hdFJvdW5kZWRS
ZWN0JiByZWN0KQogICAgIGNsaXBPdXQocGF0aCk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0
OjpjbGlwVG9JbWFnZUJ1ZmZlcihJbWFnZUJ1ZmZlciogYnVmZmVyLCBjb25zdCBGbG9hdFJlY3Qm
IHJlY3QpCit2b2lkIEdyYXBoaWNzQ29udGV4dDo6Y2xpcFRvSW1hZ2VCdWZmZXIoSW1hZ2VCdWZm
ZXImIGJ1ZmZlciwgY29uc3QgRmxvYXRSZWN0JiByZWN0KQogewogICAgIGlmIChwYWludGluZ0Rp
c2FibGVkKCkpCiAgICAgICAgIHJldHVybjsKLSAgICBidWZmZXItPmNsaXAoKnRoaXMsIHJlY3Qp
OworICAgIGJ1ZmZlci5jbGlwKCp0aGlzLCByZWN0KTsKIH0KIAogI2lmICFVU0UoQ0cpICYmICFV
U0UoQ0FJUk8pCkBAIC02NDgsOSArNjM5LDkgQEAgc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVy
PiBHcmFwaGljc0NvbnRleHQ6OmNyZWF0ZUNvbXBhdGlibGVCdWZmZXIoY29uc3QgRmxvYXQKICAg
ICByZXR1cm4gYnVmZmVyOwogfQogCi1ib29sIEdyYXBoaWNzQ29udGV4dDo6aXNDb21wYXRpYmxl
V2l0aEJ1ZmZlcihJbWFnZUJ1ZmZlciogYnVmZmVyKSBjb25zdAorYm9vbCBHcmFwaGljc0NvbnRl
eHQ6OmlzQ29tcGF0aWJsZVdpdGhCdWZmZXIoSW1hZ2VCdWZmZXImIGJ1ZmZlcikgY29uc3QKIHsK
LSAgICBHcmFwaGljc0NvbnRleHQmIGJ1ZmZlckNvbnRleHQgPSBidWZmZXItPmNvbnRleHQoKTsK
KyAgICBHcmFwaGljc0NvbnRleHQmIGJ1ZmZlckNvbnRleHQgPSBidWZmZXIuY29udGV4dCgpOwog
CiAgICAgcmV0dXJuIHNjYWxlc01hdGNoKGdldENUTSgpLCBidWZmZXJDb250ZXh0LmdldENUTSgp
KSAmJiBpc0FjY2VsZXJhdGVkQ29udGV4dCgpID09IGJ1ZmZlckNvbnRleHQuaXNBY2NlbGVyYXRl
ZENvbnRleHQoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0dyYXBoaWNzQ29udGV4dC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
R3JhcGhpY3NDb250ZXh0LmgKaW5kZXggZDgwM2FjNzUyNWE3ZTAzMTg4YWIxYmIzYTgyNDkyYjkx
ZWRjMjk0OC4uY2E5ZmFiNTk4YjE5Y2U4NWU1YjMzZDIyOTkwOTgyZTY1MDYxOTgxMSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmgK
QEAgLTMwOCwxNyArMzA4LDE3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgICAgICBXRUJD
T1JFX0VYUE9SVCB2b2lkIHN0cm9rZVJlY3QoY29uc3QgRmxvYXRSZWN0JiwgZmxvYXQgbGluZVdp
ZHRoKTsKIAotICAgICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRyYXdJbWFnZShJbWFnZSosIENv
bG9yU3BhY2UsIGNvbnN0IEZsb2F0UG9pbnQmIGRlc3RpbmF0aW9uLCBjb25zdCBJbWFnZVBhaW50
aW5nT3B0aW9ucyYgPSBJbWFnZVBhaW50aW5nT3B0aW9ucygpKTsKLSAgICAgICAgV0VCQ09SRV9F
WFBPUlQgdm9pZCBkcmF3SW1hZ2UoSW1hZ2UqLCBDb2xvclNwYWNlLCBjb25zdCBGbG9hdFJlY3Qm
IGRlc3RpbmF0aW9uLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgPSBJbWFnZVBhaW50aW5n
T3B0aW9ucygpKTsKLSAgICAgICAgdm9pZCBkcmF3SW1hZ2UoSW1hZ2UqLCBDb2xvclNwYWNlLCBj
b25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBjb25zdCBGbG9hdFJlY3QmIHNvdXJjZSwgY29u
c3QgSW1hZ2VQYWludGluZ09wdGlvbnMmID0gSW1hZ2VQYWludGluZ09wdGlvbnMoKSk7CisgICAg
ICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZHJhd0ltYWdlKEltYWdlJiwgQ29sb3JTcGFjZSwgY29u
c3QgRmxvYXRQb2ludCYgZGVzdGluYXRpb24sIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiA9
IEltYWdlUGFpbnRpbmdPcHRpb25zKCkpOworICAgICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRy
YXdJbWFnZShJbWFnZSYsIENvbG9yU3BhY2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24s
IGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiA9IEltYWdlUGFpbnRpbmdPcHRpb25zKCkpOwor
ICAgICAgICB2b2lkIGRyYXdJbWFnZShJbWFnZSYsIENvbG9yU3BhY2UsIGNvbnN0IEZsb2F0UmVj
dCYgZGVzdGluYXRpb24sIGNvbnN0IEZsb2F0UmVjdCYgc291cmNlLCBjb25zdCBJbWFnZVBhaW50
aW5nT3B0aW9ucyYgPSBJbWFnZVBhaW50aW5nT3B0aW9ucygpKTsKIAotICAgICAgICB2b2lkIGRy
YXdUaWxlZEltYWdlKEltYWdlKiwgQ29sb3JTcGFjZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5h
dGlvbiwgY29uc3QgRmxvYXRQb2ludCYgc291cmNlLCBjb25zdCBGbG9hdFNpemUmIHRpbGVTaXpl
LCBjb25zdCBGbG9hdFNpemUmIHNwYWNpbmcsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiA9
IEltYWdlUGFpbnRpbmdPcHRpb25zKCkpOwotICAgICAgICB2b2lkIGRyYXdUaWxlZEltYWdlKElt
YWdlKiwgQ29sb3JTcGFjZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwgY29uc3QgRmxv
YXRSZWN0JiBzb3VyY2UsIGNvbnN0IEZsb2F0U2l6ZSYgdGlsZVNjYWxlRmFjdG9yLAorICAgICAg
ICB2b2lkIGRyYXdUaWxlZEltYWdlKEltYWdlJiwgQ29sb3JTcGFjZSwgY29uc3QgRmxvYXRSZWN0
JiBkZXN0aW5hdGlvbiwgY29uc3QgRmxvYXRQb2ludCYgc291cmNlLCBjb25zdCBGbG9hdFNpemUm
IHRpbGVTaXplLCBjb25zdCBGbG9hdFNpemUmIHNwYWNpbmcsIGNvbnN0IEltYWdlUGFpbnRpbmdP
cHRpb25zJiA9IEltYWdlUGFpbnRpbmdPcHRpb25zKCkpOworICAgICAgICB2b2lkIGRyYXdUaWxl
ZEltYWdlKEltYWdlJiwgQ29sb3JTcGFjZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwg
Y29uc3QgRmxvYXRSZWN0JiBzb3VyY2UsIGNvbnN0IEZsb2F0U2l6ZSYgdGlsZVNjYWxlRmFjdG9y
LAogICAgICAgICAgICAgSW1hZ2U6OlRpbGVSdWxlLCBJbWFnZTo6VGlsZVJ1bGUsIGNvbnN0IElt
YWdlUGFpbnRpbmdPcHRpb25zJiA9IEltYWdlUGFpbnRpbmdPcHRpb25zKCkpOwogCi0gICAgICAg
IFdFQkNPUkVfRVhQT1JUIHZvaWQgZHJhd0ltYWdlQnVmZmVyKEltYWdlQnVmZmVyKiwgQ29sb3JT
cGFjZSwgY29uc3QgRmxvYXRQb2ludCYgZGVzdGluYXRpb24sIGNvbnN0IEltYWdlUGFpbnRpbmdP
cHRpb25zJiA9IEltYWdlUGFpbnRpbmdPcHRpb25zKCkpOwotICAgICAgICB2b2lkIGRyYXdJbWFn
ZUJ1ZmZlcihJbWFnZUJ1ZmZlciosIENvbG9yU3BhY2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGlu
YXRpb24sIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiA9IEltYWdlUGFpbnRpbmdPcHRpb25z
KCkpOwotICAgICAgICB2b2lkIGRyYXdJbWFnZUJ1ZmZlcihJbWFnZUJ1ZmZlciosIENvbG9yU3Bh
Y2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24sIGNvbnN0IEZsb2F0UmVjdCYgc291cmNl
LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgPSBJbWFnZVBhaW50aW5nT3B0aW9ucygpKTsK
KyAgICAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkcmF3SW1hZ2VCdWZmZXIoSW1hZ2VCdWZmZXIm
LCBDb2xvclNwYWNlLCBjb25zdCBGbG9hdFBvaW50JiBkZXN0aW5hdGlvbiwgY29uc3QgSW1hZ2VQ
YWludGluZ09wdGlvbnMmID0gSW1hZ2VQYWludGluZ09wdGlvbnMoKSk7CisgICAgICAgIHZvaWQg
ZHJhd0ltYWdlQnVmZmVyKEltYWdlQnVmZmVyJiwgQ29sb3JTcGFjZSwgY29uc3QgRmxvYXRSZWN0
JiBkZXN0aW5hdGlvbiwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmID0gSW1hZ2VQYWludGlu
Z09wdGlvbnMoKSk7CisgICAgICAgIHZvaWQgZHJhd0ltYWdlQnVmZmVyKEltYWdlQnVmZmVyJiwg
Q29sb3JTcGFjZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwgY29uc3QgRmxvYXRSZWN0
JiBzb3VyY2UsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiA9IEltYWdlUGFpbnRpbmdPcHRp
b25zKCkpOwogCiAgICAgICAgIHZvaWQgZHJhd1BhdHRlcm4oSW1hZ2UmLCBjb25zdCBGbG9hdFJl
Y3QmIHNyY1JlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYsIGNvbnN0IEZsb2F0UG9pbnQmIHBo
YXNlLCBjb25zdCBGbG9hdFNpemUmIHNwYWNpbmcsIENvbG9yU3BhY2UsIENvbXBvc2l0ZU9wZXJh
dG9yLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBCbGVuZE1vZGUgPSBCbGVuZE1vZGVOb3Jt
YWwpOwogCkBAIC0zMzMsNyArMzMzLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2
b2lkIGNsaXBPdXRSb3VuZGVkUmVjdChjb25zdCBGbG9hdFJvdW5kZWRSZWN0Jik7CiAgICAgICAg
IHZvaWQgY2xpcFBhdGgoY29uc3QgUGF0aCYsIFdpbmRSdWxlKTsKICAgICAgICAgdm9pZCBjbGlw
Q29udmV4UG9seWdvbihzaXplX3QgbnVtUG9pbnRzLCBjb25zdCBGbG9hdFBvaW50KiwgYm9vbCBh
bnRpYWxpYXMgPSB0cnVlKTsKLSAgICAgICAgdm9pZCBjbGlwVG9JbWFnZUJ1ZmZlcihJbWFnZUJ1
ZmZlciosIGNvbnN0IEZsb2F0UmVjdCYpOworICAgICAgICB2b2lkIGNsaXBUb0ltYWdlQnVmZmVy
KEltYWdlQnVmZmVyJiwgY29uc3QgRmxvYXRSZWN0Jik7CiAgICAgICAgIAogICAgICAgICBJbnRS
ZWN0IGNsaXBCb3VuZHMoKSBjb25zdDsKIApAQCAtNDQzLDcgKzQ0Myw3IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKICAgICAgICAgLy8gQ3JlYXRlIGFuIGltYWdlIGJ1ZmZlciBjb21wYXRpYmxlIHdp
dGggdGhpcyBjb250ZXh0LCB3aXRoIHN1aXRhYmxlIHJlc29sdXRpb24KICAgICAgICAgLy8gZm9y
IGRyYXdpbmcgaW50byB0aGUgYnVmZmVyIGFuZCB0aGVuIGludG8gdGhpcyBjb250ZXh0LgogICAg
ICAgICBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+IGNyZWF0ZUNvbXBhdGlibGVCdWZmZXIo
Y29uc3QgRmxvYXRTaXplJiwgYm9vbCBoYXNBbHBoYSA9IHRydWUpIGNvbnN0OwotICAgICAgICBi
b29sIGlzQ29tcGF0aWJsZVdpdGhCdWZmZXIoSW1hZ2VCdWZmZXIqKSBjb25zdDsKKyAgICAgICAg
Ym9vbCBpc0NvbXBhdGlibGVXaXRoQnVmZmVyKEltYWdlQnVmZmVyJikgY29uc3Q7CiAKICAgICAg
ICAgLy8gVGhpcyBmdW5jdGlvbiBhcHBsaWVzIHRoZSBkZXZpY2Ugc2NhbGUgZmFjdG9yIHRvIHRo
ZSBjb250ZXh0LCBtYWtpbmcgdGhlIGNvbnRleHQgY2FwYWJsZSBvZgogICAgICAgICAvLyBhY3Rp
bmcgYXMgYSBiYXNlLWxldmVsIGNvbnRleHQgZm9yIGEgSGlEUEkgZW52aXJvbm1lbnQuCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9TaGFkb3dCbHVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1NoYWRvd0JsdXIuY3BwCmluZGV4IGQ2
NjIwYzc5MDA4MGE2ZmQwYTdjM2RiMTM5ZDg5ZTAyZmEyOTRlYzcuLjg1YWVlZWZmNzJlZTI3MGU3
NjAwODBkYzYwZWViMmIwNWM4MTc0YTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL1NoYWRvd0JsdXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL1NoYWRvd0JsdXIuY3BwCkBAIC00NzIsNyArNDcyLDcgQEAgdm9pZCBTaGFkb3dC
bHVyOjpkcmF3U2hhZG93QnVmZmVyKEdyYXBoaWNzQ29udGV4dCYgZ3JhcGhpY3NDb250ZXh0KQog
ICAgICAgICAvLyBidXQgd2UgbWF5IG5vdCBoYXZlIGNsZWFyZWQgaXQgYWxsLCBzbyBjbGlwIHRv
IHRoZSBmaWxsZWQgcGFydCBmaXJzdC4KICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LmNsaXAoRmxv
YXRSZWN0KG1fbGF5ZXJPcmlnaW4sIG1fbGF5ZXJTaXplKSk7CiAgICAgfQotICAgIGdyYXBoaWNz
Q29udGV4dC5jbGlwVG9JbWFnZUJ1ZmZlcihtX2xheWVySW1hZ2UsIEZsb2F0UmVjdChtX2xheWVy
T3JpZ2luLCBidWZmZXJTaXplKSk7CisgICAgZ3JhcGhpY3NDb250ZXh0LmNsaXBUb0ltYWdlQnVm
ZmVyKCptX2xheWVySW1hZ2UsIEZsb2F0UmVjdChtX2xheWVyT3JpZ2luLCBidWZmZXJTaXplKSk7
CiAgICAgZ3JhcGhpY3NDb250ZXh0LnNldEZpbGxDb2xvcihtX2NvbG9yLCBtX2NvbG9yU3BhY2Up
OwogCiAgICAgZ3JhcGhpY3NDb250ZXh0LmNsZWFyU2hhZG93KCk7CkBAIC01OTMsNyArNTkzLDcg
QEAgdm9pZCBTaGFkb3dCbHVyOjpkcmF3UmVjdFNoYWRvd1dpdGhvdXRUaWxpbmcoR3JhcGhpY3ND
b250ZXh0JiBncmFwaGljc0NvbnRleHQsIGMKICAgICB9CiAgICAgCiAgICAgZHJhd1NoYWRvd0J1
ZmZlcihncmFwaGljc0NvbnRleHQpOwotICAgIG1fbGF5ZXJJbWFnZSA9IDA7CisgICAgbV9sYXll
ckltYWdlID0gbnVsbHB0cjsKICAgICBTY3JhdGNoQnVmZmVyOjpzaW5nbGV0b24oKS5zY2hlZHVs
ZVNjcmF0Y2hCdWZmZXJQdXJnZSgpOwogfQogCkBAIC02MzQsNyArNjM0LDcgQEAgdm9pZCBTaGFk
b3dCbHVyOjpkcmF3SW5zZXRTaGFkb3dXaXRob3V0VGlsaW5nKEdyYXBoaWNzQ29udGV4dCYgZ3Jh
cGhpY3NDb250ZXh0LAogICAgIH0KICAgICAKICAgICBkcmF3U2hhZG93QnVmZmVyKGdyYXBoaWNz
Q29udGV4dCk7Ci0gICAgbV9sYXllckltYWdlID0gMDsKKyAgICBtX2xheWVySW1hZ2UgPSBudWxs
cHRyOwogICAgIFNjcmF0Y2hCdWZmZXI6OnNpbmdsZXRvbigpLnNjaGVkdWxlU2NyYXRjaEJ1ZmZl
clB1cmdlKCk7CiB9CiAKQEAgLTczMSw3ICs3MzEsNyBAQCB2b2lkIFNoYWRvd0JsdXI6OmRyYXdJ
bnNldFNoYWRvd1dpdGhUaWxpbmcoR3JhcGhpY3NDb250ZXh0JiBncmFwaGljc0NvbnRleHQsIGNv
bgogICAgIAogICAgIGRyYXdMYXllclBpZWNlcyhncmFwaGljc0NvbnRleHQsIGRlc3RIb2xlQm91
bmRzLCBob2xlUmVjdC5yYWRpaSgpLCBlZGdlU2l6ZSwgdGVtcGxhdGVTaXplLCBJbm5lclNoYWRv
dyk7CiAKLSAgICBtX2xheWVySW1hZ2UgPSAwOworICAgIG1fbGF5ZXJJbWFnZSA9IG51bGxwdHI7
CiAgICAgU2NyYXRjaEJ1ZmZlcjo6c2luZ2xldG9uKCkuc2NoZWR1bGVTY3JhdGNoQnVmZmVyUHVy
Z2UoKTsKIH0KIApAQCAtNzc3LDcgKzc3Nyw3IEBAIHZvaWQgU2hhZG93Qmx1cjo6ZHJhd1JlY3RT
aGFkb3dXaXRoVGlsaW5nKEdyYXBoaWNzQ29udGV4dCYgZ3JhcGhpY3NDb250ZXh0LCBjb25zCiAK
ICAgICBkcmF3TGF5ZXJQaWVjZXMoZ3JhcGhpY3NDb250ZXh0LCBzaGFkb3dCb3VuZHMsIHNoYWRv
d2VkUmVjdC5yYWRpaSgpLCBlZGdlU2l6ZSwgdGVtcGxhdGVTaXplLCBPdXRlclNoYWRvdyk7CiAK
LSAgICBtX2xheWVySW1hZ2UgPSAwOworICAgIG1fbGF5ZXJJbWFnZSA9IG51bGxwdHI7CiAgICAg
U2NyYXRjaEJ1ZmZlcjo6c2luZ2xldG9uKCkuc2NoZWR1bGVTY3JhdGNoQnVmZmVyUHVyZ2UoKTsK
IH0KIApAQCAtODE2LDQ2ICs4MTYsNDYgQEAgdm9pZCBTaGFkb3dCbHVyOjpkcmF3TGF5ZXJQaWVj
ZXMoR3JhcGhpY3NDb250ZXh0JiBncmFwaGljc0NvbnRleHQsIGNvbnN0IEZsb2F0UmUKICAgICAv
LyBUb3Agc2lkZS4KICAgICBGbG9hdFJlY3QgdGlsZVJlY3QgPSBGbG9hdFJlY3QobGVmdFNsaWNl
LCAwLCB0ZW1wbGF0ZVNpZGVMZW5ndGgsIHRvcFNsaWNlKTsKICAgICBGbG9hdFJlY3QgZGVzdFJl
Y3QgPSBGbG9hdFJlY3QoY2VudGVyUmVjdC54KCksIGNlbnRlclJlY3QueSgpIC0gdG9wU2xpY2Us
IGNlbnRlclJlY3Qud2lkdGgoKSwgdG9wU2xpY2UpOwotICAgIGdyYXBoaWNzQ29udGV4dC5kcmF3
SW1hZ2VCdWZmZXIobV9sYXllckltYWdlLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBkZXN0UmVjdCwg
dGlsZVJlY3QpOworICAgIGdyYXBoaWNzQ29udGV4dC5kcmF3SW1hZ2VCdWZmZXIoKm1fbGF5ZXJJ
bWFnZSwgQ29sb3JTcGFjZURldmljZVJHQiwgZGVzdFJlY3QsIHRpbGVSZWN0KTsKIAogICAgIC8v
IERyYXcgdGhlIGJvdHRvbSBzaWRlLgogICAgIHRpbGVSZWN0LnNldFkodGVtcGxhdGVTaXplLmhl
aWdodCgpIC0gYm90dG9tU2xpY2UpOwogICAgIHRpbGVSZWN0LnNldEhlaWdodChib3R0b21TbGlj
ZSk7CiAgICAgZGVzdFJlY3Quc2V0WShjZW50ZXJSZWN0Lm1heFkoKSk7CiAgICAgZGVzdFJlY3Qu
c2V0SGVpZ2h0KGJvdHRvbVNsaWNlKTsKLSAgICBncmFwaGljc0NvbnRleHQuZHJhd0ltYWdlQnVm
ZmVyKG1fbGF5ZXJJbWFnZSwgQ29sb3JTcGFjZURldmljZVJHQiwgZGVzdFJlY3QsIHRpbGVSZWN0
KTsKKyAgICBncmFwaGljc0NvbnRleHQuZHJhd0ltYWdlQnVmZmVyKCptX2xheWVySW1hZ2UsIENv
bG9yU3BhY2VEZXZpY2VSR0IsIGRlc3RSZWN0LCB0aWxlUmVjdCk7CiAKICAgICAvLyBMZWZ0IHNp
ZGUuCiAgICAgdGlsZVJlY3QgPSBGbG9hdFJlY3QoMCwgdG9wU2xpY2UsIGxlZnRTbGljZSwgdGVt
cGxhdGVTaWRlTGVuZ3RoKTsKICAgICBkZXN0UmVjdCA9IEZsb2F0UmVjdChjZW50ZXJSZWN0Lngo
KSAtIGxlZnRTbGljZSwgY2VudGVyUmVjdC55KCksIGxlZnRTbGljZSwgY2VudGVyUmVjdC5oZWln
aHQoKSk7Ci0gICAgZ3JhcGhpY3NDb250ZXh0LmRyYXdJbWFnZUJ1ZmZlcihtX2xheWVySW1hZ2Us
IENvbG9yU3BhY2VEZXZpY2VSR0IsIGRlc3RSZWN0LCB0aWxlUmVjdCk7CisgICAgZ3JhcGhpY3ND
b250ZXh0LmRyYXdJbWFnZUJ1ZmZlcigqbV9sYXllckltYWdlLCBDb2xvclNwYWNlRGV2aWNlUkdC
LCBkZXN0UmVjdCwgdGlsZVJlY3QpOwogCiAgICAgLy8gUmlnaHQgc2lkZS4KICAgICB0aWxlUmVj
dC5zZXRYKHRlbXBsYXRlU2l6ZS53aWR0aCgpIC0gcmlnaHRTbGljZSk7CiAgICAgdGlsZVJlY3Qu
c2V0V2lkdGgocmlnaHRTbGljZSk7CiAgICAgZGVzdFJlY3Quc2V0WChjZW50ZXJSZWN0Lm1heFgo
KSk7CiAgICAgZGVzdFJlY3Quc2V0V2lkdGgocmlnaHRTbGljZSk7Ci0gICAgZ3JhcGhpY3NDb250
ZXh0LmRyYXdJbWFnZUJ1ZmZlcihtX2xheWVySW1hZ2UsIENvbG9yU3BhY2VEZXZpY2VSR0IsIGRl
c3RSZWN0LCB0aWxlUmVjdCk7CisgICAgZ3JhcGhpY3NDb250ZXh0LmRyYXdJbWFnZUJ1ZmZlcigq
bV9sYXllckltYWdlLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBkZXN0UmVjdCwgdGlsZVJlY3QpOwog
CiAgICAgLy8gVG9wIGxlZnQgY29ybmVyLgogICAgIHRpbGVSZWN0ID0gRmxvYXRSZWN0KDAsIDAs
IGxlZnRTbGljZSwgdG9wU2xpY2UpOwogICAgIGRlc3RSZWN0ID0gRmxvYXRSZWN0KGNlbnRlclJl
Y3QueCgpIC0gbGVmdFNsaWNlLCBjZW50ZXJSZWN0LnkoKSAtIHRvcFNsaWNlLCBsZWZ0U2xpY2Us
IHRvcFNsaWNlKTsKLSAgICBncmFwaGljc0NvbnRleHQuZHJhd0ltYWdlQnVmZmVyKG1fbGF5ZXJJ
bWFnZSwgQ29sb3JTcGFjZURldmljZVJHQiwgZGVzdFJlY3QsIHRpbGVSZWN0KTsKKyAgICBncmFw
aGljc0NvbnRleHQuZHJhd0ltYWdlQnVmZmVyKCptX2xheWVySW1hZ2UsIENvbG9yU3BhY2VEZXZp
Y2VSR0IsIGRlc3RSZWN0LCB0aWxlUmVjdCk7CiAKICAgICAvLyBUb3AgcmlnaHQgY29ybmVyLgog
ICAgIHRpbGVSZWN0ID0gRmxvYXRSZWN0KHRlbXBsYXRlU2l6ZS53aWR0aCgpIC0gcmlnaHRTbGlj
ZSwgMCwgcmlnaHRTbGljZSwgdG9wU2xpY2UpOwogICAgIGRlc3RSZWN0ID0gRmxvYXRSZWN0KGNl
bnRlclJlY3QubWF4WCgpLCBjZW50ZXJSZWN0LnkoKSAtIHRvcFNsaWNlLCByaWdodFNsaWNlLCB0
b3BTbGljZSk7Ci0gICAgZ3JhcGhpY3NDb250ZXh0LmRyYXdJbWFnZUJ1ZmZlcihtX2xheWVySW1h
Z2UsIENvbG9yU3BhY2VEZXZpY2VSR0IsIGRlc3RSZWN0LCB0aWxlUmVjdCk7CisgICAgZ3JhcGhp
Y3NDb250ZXh0LmRyYXdJbWFnZUJ1ZmZlcigqbV9sYXllckltYWdlLCBDb2xvclNwYWNlRGV2aWNl
UkdCLCBkZXN0UmVjdCwgdGlsZVJlY3QpOwogCiAgICAgLy8gQm90dG9tIHJpZ2h0IGNvcm5lci4K
ICAgICB0aWxlUmVjdCA9IEZsb2F0UmVjdCh0ZW1wbGF0ZVNpemUud2lkdGgoKSAtIHJpZ2h0U2xp
Y2UsIHRlbXBsYXRlU2l6ZS5oZWlnaHQoKSAtIGJvdHRvbVNsaWNlLCByaWdodFNsaWNlLCBib3R0
b21TbGljZSk7CiAgICAgZGVzdFJlY3QgPSBGbG9hdFJlY3QoY2VudGVyUmVjdC5tYXhYKCksIGNl
bnRlclJlY3QubWF4WSgpLCByaWdodFNsaWNlLCBib3R0b21TbGljZSk7Ci0gICAgZ3JhcGhpY3ND
b250ZXh0LmRyYXdJbWFnZUJ1ZmZlcihtX2xheWVySW1hZ2UsIENvbG9yU3BhY2VEZXZpY2VSR0Is
IGRlc3RSZWN0LCB0aWxlUmVjdCk7CisgICAgZ3JhcGhpY3NDb250ZXh0LmRyYXdJbWFnZUJ1ZmZl
cigqbV9sYXllckltYWdlLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBkZXN0UmVjdCwgdGlsZVJlY3Qp
OwogCiAgICAgLy8gQm90dG9tIGxlZnQgY29ybmVyLgogICAgIHRpbGVSZWN0ID0gRmxvYXRSZWN0
KDAsIHRlbXBsYXRlU2l6ZS5oZWlnaHQoKSAtIGJvdHRvbVNsaWNlLCBsZWZ0U2xpY2UsIGJvdHRv
bVNsaWNlKTsKICAgICBkZXN0UmVjdCA9IEZsb2F0UmVjdChjZW50ZXJSZWN0LngoKSAtIGxlZnRT
bGljZSwgY2VudGVyUmVjdC5tYXhZKCksIGxlZnRTbGljZSwgYm90dG9tU2xpY2UpOwotICAgIGdy
YXBoaWNzQ29udGV4dC5kcmF3SW1hZ2VCdWZmZXIobV9sYXllckltYWdlLCBDb2xvclNwYWNlRGV2
aWNlUkdCLCBkZXN0UmVjdCwgdGlsZVJlY3QpOworICAgIGdyYXBoaWNzQ29udGV4dC5kcmF3SW1h
Z2VCdWZmZXIoKm1fbGF5ZXJJbWFnZSwgQ29sb3JTcGFjZURldmljZVJHQiwgZGVzdFJlY3QsIHRp
bGVSZWN0KTsKIH0KIAogCkBAIC05MTUsOSArOTE1LDkgQEAgdm9pZCBTaGFkb3dCbHVyOjplbmRT
aGFkb3dMYXllcihHcmFwaGljc0NvbnRleHQmIGNvbnRleHQpCiAgICAgR3JhcGhpY3NDb250ZXh0
U3RhdGVTYXZlciBzdGF0ZVNhdmUoY29udGV4dCk7CiAKICAgICBjb250ZXh0LmNsZWFyU2hhZG93
KCk7Ci0gICAgY29udGV4dC5kcmF3SW1hZ2VCdWZmZXIobV9sYXllckltYWdlLCBDb2xvclNwYWNl
RGV2aWNlUkdCLCBGbG9hdFJlY3Qocm91bmRlZEludFBvaW50KG1fbGF5ZXJPcmlnaW4pLCBtX2xh
eWVyU2l6ZSksIEZsb2F0UmVjdChGbG9hdFBvaW50KCksIG1fbGF5ZXJTaXplKSwgY29udGV4dC5j
b21wb3NpdGVPcGVyYXRpb24oKSk7CisgICAgY29udGV4dC5kcmF3SW1hZ2VCdWZmZXIoKm1fbGF5
ZXJJbWFnZSwgQ29sb3JTcGFjZURldmljZVJHQiwgRmxvYXRSZWN0KHJvdW5kZWRJbnRQb2ludCht
X2xheWVyT3JpZ2luKSwgbV9sYXllclNpemUpLCBGbG9hdFJlY3QoRmxvYXRQb2ludCgpLCBtX2xh
eWVyU2l6ZSksIGNvbnRleHQuY29tcG9zaXRlT3BlcmF0aW9uKCkpOwogCi0gICAgbV9sYXllcklt
YWdlID0gMDsKKyAgICBtX2xheWVySW1hZ2UgPSBudWxscHRyOwogICAgIFNjcmF0Y2hCdWZmZXI6
OnNpbmdsZXRvbigpLnNjaGVkdWxlU2NyYXRjaEJ1ZmZlclB1cmdlKCk7CiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fp
cm8uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZm
ZXJDYWlyby5jcHAKaW5kZXggYTk3YzU4ZDIxZDA1ZWIwODRjZDAzM2RiODk1Mzc4YmY1MjAyNTcx
OS4uM2U1MjEzZjg2ZGE2NTEyZGU2MWRmYTViZjlmNjVhZTcxYzgyZTNkZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyby5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZm
ZXJDYWlyby5jcHAKQEAgLTE3MCw3ICsxNzAsNyBAQCB2b2lkIEltYWdlQnVmZmVyOjpkcmF3KEdy
YXBoaWNzQ29udGV4dCYgZGVzdGluYXRpb25Db250ZXh0LCBDb2xvclNwYWNlIHN0eWxlQ29sbwog
ewogICAgIEJhY2tpbmdTdG9yZUNvcHkgY29weU1vZGUgPSAmZGVzdGluYXRpb25Db250ZXh0ID09
ICZjb250ZXh0KCkgPyBDb3B5QmFja2luZ1N0b3JlIDogRG9udENvcHlCYWNraW5nU3RvcmU7CiAg
ICAgUmVmUHRyPEltYWdlPiBpbWFnZSA9IGNvcHlJbWFnZShjb3B5TW9kZSk7Ci0gICAgZGVzdGlu
YXRpb25Db250ZXh0LmRyYXdJbWFnZShpbWFnZS5nZXQoKSwgc3R5bGVDb2xvclNwYWNlLCBkZXN0
UmVjdCwgc3JjUmVjdCwgSW1hZ2VQYWludGluZ09wdGlvbnMob3AsIGJsZW5kTW9kZSwgSW1hZ2VP
cmllbnRhdGlvbkRlc2NyaXB0aW9uKCksIHVzZUxvd1F1YWxpdHlTY2FsZSkpOworICAgIGRlc3Rp
bmF0aW9uQ29udGV4dC5kcmF3SW1hZ2UoKmltYWdlLCBzdHlsZUNvbG9yU3BhY2UsIGRlc3RSZWN0
LCBzcmNSZWN0LCBJbWFnZVBhaW50aW5nT3B0aW9ucyhvcCwgYmxlbmRNb2RlLCBJbWFnZU9yaWVu
dGF0aW9uRGVzY3JpcHRpb24oKSwgdXNlTG93UXVhbGl0eVNjYWxlKSk7CiB9CiAKIHZvaWQgSW1h
Z2VCdWZmZXI6OmRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxv
YXRSZWN0JiBzcmNSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0s
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9QREZEb2N1
bWVudEltYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL1BERkRv
Y3VtZW50SW1hZ2UuY3BwCmluZGV4IGY0YjA0ODU3MWVjOTgzOTYxM2M0NGQyNDlkMmI0MmE3OTU0
Y2RmZTkuLjhlZTJiODI0YzU5MmEzMWU4ZmYyYWY3MTVmMzc0NzI2YzBlZDJlMmEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL1BERkRvY3VtZW50SW1hZ2Uu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL1BERkRvY3VtZW50
SW1hZ2UuY3BwCkBAIC0xOTAsNyArMTkwLDcgQEAgdm9pZCBQREZEb2N1bWVudEltYWdlOjpkcmF3
KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LAogICAg
ICAgICBjb250ZXh0LnNldENvbXBvc2l0ZU9wZXJhdGlvbihvcCk7CiAKICAgICAgICAgaWYgKG1f
Y2FjaGVkSW1hZ2VCdWZmZXIpCi0gICAgICAgICAgICBjb250ZXh0LmRyYXdJbWFnZUJ1ZmZlciht
X2NhY2hlZEltYWdlQnVmZmVyLmdldCgpLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBkc3RSZWN0KTsK
KyAgICAgICAgICAgIGNvbnRleHQuZHJhd0ltYWdlQnVmZmVyKCptX2NhY2hlZEltYWdlQnVmZmVy
LCBDb2xvclNwYWNlRGV2aWNlUkdCLCBkc3RSZWN0KTsKICAgICAgICAgZWxzZSB7CiAgICAgICAg
ICAgICB0cmFuc2Zvcm1Db250ZXh0Rm9yUGFpbnRpbmcoY29udGV4dCwgZHN0UmVjdCwgc3JjUmVj
dCk7CiAgICAgICAgICAgICBkcmF3UERGUGFnZShjb250ZXh0KTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVCbGVuZC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQmxlbmQuY3BwCmluZGV4IDA4OWY0
NTA1MjMzOWFlMGIyYmYyOTZhMGZhNzRlNTZjMTFjODdmYjUuLmVkZWY1NzgwMTgyZmNjODBmZTU3
OTUzOTEyZDRhZDk1YTM3NmEwM2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2ZpbHRlcnMvRkVCbGVuZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZmlsdGVycy9GRUJsZW5kLmNwcApAQCAtNzIsMTEgKzcyLDExIEBAIHZvaWQg
RkVCbGVuZDo6cGxhdGZvcm1BcHBseVNvZnR3YXJlKCkKIAogICAgIEltYWdlQnVmZmVyKiBpbWFn
ZUJ1ZmZlciA9IGluLT5hc0ltYWdlQnVmZmVyKCk7CiAgICAgSW1hZ2VCdWZmZXIqIGltYWdlQnVm
ZmVyMiA9IGluMi0+YXNJbWFnZUJ1ZmZlcigpOwotICAgIEFTU0VSVChpbWFnZUJ1ZmZlcik7Ci0g
ICAgQVNTRVJUKGltYWdlQnVmZmVyMik7CisgICAgaWYgKCFpbWFnZUJ1ZmZlciB8fCAhaW1hZ2VC
dWZmZXIyKQorICAgICAgICByZXR1cm47CiAKLSAgICBmaWx0ZXJDb250ZXh0LmRyYXdJbWFnZUJ1
ZmZlcihpbWFnZUJ1ZmZlcjIsIENvbG9yU3BhY2VEZXZpY2VSR0IsIGRyYXdpbmdSZWdpb25PZklu
cHV0SW1hZ2UoaW4yLT5hYnNvbHV0ZVBhaW50UmVjdCgpKSk7Ci0gICAgZmlsdGVyQ29udGV4dC5k
cmF3SW1hZ2VCdWZmZXIoaW1hZ2VCdWZmZXIsIENvbG9yU3BhY2VEZXZpY2VSR0IsIGRyYXdpbmdS
ZWdpb25PZklucHV0SW1hZ2UoaW4tPmFic29sdXRlUGFpbnRSZWN0KCkpLCBJbnRSZWN0KEludFBv
aW50KCksIGltYWdlQnVmZmVyLT5sb2dpY2FsU2l6ZSgpKSwgSW1hZ2VQYWludGluZ09wdGlvbnMo
Q29tcG9zaXRlU291cmNlT3ZlciwgbV9tb2RlKSk7CisgICAgZmlsdGVyQ29udGV4dC5kcmF3SW1h
Z2VCdWZmZXIoKmltYWdlQnVmZmVyMiwgQ29sb3JTcGFjZURldmljZVJHQiwgZHJhd2luZ1JlZ2lv
bk9mSW5wdXRJbWFnZShpbjItPmFic29sdXRlUGFpbnRSZWN0KCkpKTsKKyAgICBmaWx0ZXJDb250
ZXh0LmRyYXdJbWFnZUJ1ZmZlcigqaW1hZ2VCdWZmZXIsIENvbG9yU3BhY2VEZXZpY2VSR0IsIGRy
YXdpbmdSZWdpb25PZklucHV0SW1hZ2UoaW4tPmFic29sdXRlUGFpbnRSZWN0KCkpLCBJbnRSZWN0
KEludFBvaW50KCksIGltYWdlQnVmZmVyLT5sb2dpY2FsU2l6ZSgpKSwgSW1hZ2VQYWludGluZ09w
dGlvbnMoQ29tcG9zaXRlU291cmNlT3ZlciwgbV9tb2RlKSk7CiB9CiAjZW5kaWYKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNvbG9yTWF0
cml4LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb2xv
ck1hdHJpeC5jcHAKaW5kZXggODc2NmFlY2IyMjMzYzlhYTkzYjNmNTk4ZmYyZTYzMTM4ZjI1Njhm
Zi4uNzhmZmRjZTRkNTkxYWQ2YTgxMjJmZTYzODgyMzkzZmY1NTFhZTc3MiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNvbG9yTWF0cml4LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29sb3JN
YXRyaXguY3BwCkBAIC0xNDcsNyArMTQ3LDkgQEAgdm9pZCBGRUNvbG9yTWF0cml4OjpwbGF0Zm9y
bUFwcGx5U29mdHdhcmUoKQogICAgIGlmICghcmVzdWx0SW1hZ2UpCiAgICAgICAgIHJldHVybjsK
IAotICAgIHJlc3VsdEltYWdlLT5jb250ZXh0KCkuZHJhd0ltYWdlQnVmZmVyKGluLT5hc0ltYWdl
QnVmZmVyKCksIENvbG9yU3BhY2VEZXZpY2VSR0IsIGRyYXdpbmdSZWdpb25PZklucHV0SW1hZ2Uo
aW4tPmFic29sdXRlUGFpbnRSZWN0KCkpKTsKKyAgICBJbWFnZUJ1ZmZlciogaW5CdWZmZXIgPSBp
bi0+YXNJbWFnZUJ1ZmZlcigpOworICAgIGlmIChpbkJ1ZmZlcikKKyAgICAgICAgcmVzdWx0SW1h
Z2UtPmNvbnRleHQoKS5kcmF3SW1hZ2VCdWZmZXIoKmluQnVmZmVyLCBDb2xvclNwYWNlRGV2aWNl
UkdCLCBkcmF3aW5nUmVnaW9uT2ZJbnB1dEltYWdlKGluLT5hYnNvbHV0ZVBhaW50UmVjdCgpKSk7
CiAKICAgICBJbnRSZWN0IGltYWdlUmVjdChJbnRQb2ludCgpLCByZXN1bHRJbWFnZS0+bG9naWNh
bFNpemUoKSk7CiAgICAgUmVmUHRyPFVpbnQ4Q2xhbXBlZEFycmF5PiBwaXhlbEFycmF5ID0gcmVz
dWx0SW1hZ2UtPmdldFVubXVsdGlwbGllZEltYWdlRGF0YShpbWFnZVJlY3QpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNvbXBvc2l0ZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29tcG9zaXRl
LmNwcAppbmRleCBmY2M4MWU4NzEzOGZiZGYzZWMxMDc3MDk2OTdiNDFhMzc5YTE5NzlhLi45YTE1
NmY4OTRkZjE0M2VlOGUzODU4Njg3OGQwNzA5MjI4ZTFiZmU5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29tcG9zaXRlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29tcG9zaXRlLmNwcApA
QCAtMjc2LDEzICsyNzYsMTMgQEAgdm9pZCBGRUNvbXBvc2l0ZTo6cGxhdGZvcm1BcHBseVNvZnR3
YXJlKCkKIAogICAgIEltYWdlQnVmZmVyKiBpbWFnZUJ1ZmZlciA9IGluLT5hc0ltYWdlQnVmZmVy
KCk7CiAgICAgSW1hZ2VCdWZmZXIqIGltYWdlQnVmZmVyMiA9IGluMi0+YXNJbWFnZUJ1ZmZlcigp
OwotICAgIEFTU0VSVChpbWFnZUJ1ZmZlcik7Ci0gICAgQVNTRVJUKGltYWdlQnVmZmVyMik7Cisg
ICAgaWYgKCFpbWFnZUJ1ZmZlciB8fCAhaW1hZ2VCdWZmZXIyKQorICAgICAgICByZXR1cm47CiAK
ICAgICBzd2l0Y2ggKG1fdHlwZSkgewogICAgIGNhc2UgRkVDT01QT1NJVEVfT1BFUkFUT1JfT1ZF
UjoKLSAgICAgICAgZmlsdGVyQ29udGV4dC5kcmF3SW1hZ2VCdWZmZXIoaW1hZ2VCdWZmZXIyLCBD
b2xvclNwYWNlRGV2aWNlUkdCLCBkcmF3aW5nUmVnaW9uT2ZJbnB1dEltYWdlKGluMi0+YWJzb2x1
dGVQYWludFJlY3QoKSkpOwotICAgICAgICBmaWx0ZXJDb250ZXh0LmRyYXdJbWFnZUJ1ZmZlcihp
bWFnZUJ1ZmZlciwgQ29sb3JTcGFjZURldmljZVJHQiwgZHJhd2luZ1JlZ2lvbk9mSW5wdXRJbWFn
ZShpbi0+YWJzb2x1dGVQYWludFJlY3QoKSkpOworICAgICAgICBmaWx0ZXJDb250ZXh0LmRyYXdJ
bWFnZUJ1ZmZlcigqaW1hZ2VCdWZmZXIyLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBkcmF3aW5nUmVn
aW9uT2ZJbnB1dEltYWdlKGluMi0+YWJzb2x1dGVQYWludFJlY3QoKSkpOworICAgICAgICBmaWx0
ZXJDb250ZXh0LmRyYXdJbWFnZUJ1ZmZlcigqaW1hZ2VCdWZmZXIsIENvbG9yU3BhY2VEZXZpY2VS
R0IsIGRyYXdpbmdSZWdpb25PZklucHV0SW1hZ2UoaW4tPmFic29sdXRlUGFpbnRSZWN0KCkpKTsK
ICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBGRUNPTVBPU0lURV9PUEVSQVRPUl9JTjogewogICAg
ICAgICAvLyBBcHBsaWVzIG9ubHkgdG8gdGhlIGludGVyc2VjdGVkIHJlZ2lvbi4KQEAgLTI5NCwy
MSArMjk0LDIxIEBAIHZvaWQgRkVDb21wb3NpdGU6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZSgpCiAg
ICAgICAgIEludFJlY3QgYWRqdXN0ZWREZXN0aW5hdGlvblJlY3QgPSBkZXN0aW5hdGlvblJlY3Qg
LSBhYnNvbHV0ZVBhaW50UmVjdCgpLmxvY2F0aW9uKCk7CiAgICAgICAgIEludFJlY3Qgc291cmNl
UmVjdCA9IGRlc3RpbmF0aW9uUmVjdCAtIGluLT5hYnNvbHV0ZVBhaW50UmVjdCgpLmxvY2F0aW9u
KCk7CiAgICAgICAgIEludFJlY3Qgc291cmNlMlJlY3QgPSBkZXN0aW5hdGlvblJlY3QgLSBpbjIt
PmFic29sdXRlUGFpbnRSZWN0KCkubG9jYXRpb24oKTsKLSAgICAgICAgZmlsdGVyQ29udGV4dC5k
cmF3SW1hZ2VCdWZmZXIoaW1hZ2VCdWZmZXIyLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBhZGp1c3Rl
ZERlc3RpbmF0aW9uUmVjdCwgc291cmNlMlJlY3QpOwotICAgICAgICBmaWx0ZXJDb250ZXh0LmRy
YXdJbWFnZUJ1ZmZlcihpbWFnZUJ1ZmZlciwgQ29sb3JTcGFjZURldmljZVJHQiwgYWRqdXN0ZWRE
ZXN0aW5hdGlvblJlY3QsIHNvdXJjZVJlY3QsIENvbXBvc2l0ZVNvdXJjZUluKTsKKyAgICAgICAg
ZmlsdGVyQ29udGV4dC5kcmF3SW1hZ2VCdWZmZXIoKmltYWdlQnVmZmVyMiwgQ29sb3JTcGFjZURl
dmljZVJHQiwgYWRqdXN0ZWREZXN0aW5hdGlvblJlY3QsIHNvdXJjZTJSZWN0KTsKKyAgICAgICAg
ZmlsdGVyQ29udGV4dC5kcmF3SW1hZ2VCdWZmZXIoKmltYWdlQnVmZmVyLCBDb2xvclNwYWNlRGV2
aWNlUkdCLCBhZGp1c3RlZERlc3RpbmF0aW9uUmVjdCwgc291cmNlUmVjdCwgQ29tcG9zaXRlU291
cmNlSW4pOwogICAgICAgICBicmVhazsKICAgICB9CiAgICAgY2FzZSBGRUNPTVBPU0lURV9PUEVS
QVRPUl9PVVQ6Ci0gICAgICAgIGZpbHRlckNvbnRleHQuZHJhd0ltYWdlQnVmZmVyKGltYWdlQnVm
ZmVyLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBkcmF3aW5nUmVnaW9uT2ZJbnB1dEltYWdlKGluLT5h
YnNvbHV0ZVBhaW50UmVjdCgpKSk7Ci0gICAgICAgIGZpbHRlckNvbnRleHQuZHJhd0ltYWdlQnVm
ZmVyKGltYWdlQnVmZmVyMiwgQ29sb3JTcGFjZURldmljZVJHQiwgZHJhd2luZ1JlZ2lvbk9mSW5w
dXRJbWFnZShpbjItPmFic29sdXRlUGFpbnRSZWN0KCkpLCBJbnRSZWN0KEludFBvaW50KCksIGlt
YWdlQnVmZmVyMi0+bG9naWNhbFNpemUoKSksIENvbXBvc2l0ZURlc3RpbmF0aW9uT3V0KTsKKyAg
ICAgICAgZmlsdGVyQ29udGV4dC5kcmF3SW1hZ2VCdWZmZXIoKmltYWdlQnVmZmVyLCBDb2xvclNw
YWNlRGV2aWNlUkdCLCBkcmF3aW5nUmVnaW9uT2ZJbnB1dEltYWdlKGluLT5hYnNvbHV0ZVBhaW50
UmVjdCgpKSk7CisgICAgICAgIGZpbHRlckNvbnRleHQuZHJhd0ltYWdlQnVmZmVyKCppbWFnZUJ1
ZmZlcjIsIENvbG9yU3BhY2VEZXZpY2VSR0IsIGRyYXdpbmdSZWdpb25PZklucHV0SW1hZ2UoaW4y
LT5hYnNvbHV0ZVBhaW50UmVjdCgpKSwgSW50UmVjdChJbnRQb2ludCgpLCBpbWFnZUJ1ZmZlcjIt
PmxvZ2ljYWxTaXplKCkpLCBDb21wb3NpdGVEZXN0aW5hdGlvbk91dCk7CiAgICAgICAgIGJyZWFr
OwogICAgIGNhc2UgRkVDT01QT1NJVEVfT1BFUkFUT1JfQVRPUDoKLSAgICAgICAgZmlsdGVyQ29u
dGV4dC5kcmF3SW1hZ2VCdWZmZXIoaW1hZ2VCdWZmZXIyLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBk
cmF3aW5nUmVnaW9uT2ZJbnB1dEltYWdlKGluMi0+YWJzb2x1dGVQYWludFJlY3QoKSkpOwotICAg
ICAgICBmaWx0ZXJDb250ZXh0LmRyYXdJbWFnZUJ1ZmZlcihpbWFnZUJ1ZmZlciwgQ29sb3JTcGFj
ZURldmljZVJHQiwgZHJhd2luZ1JlZ2lvbk9mSW5wdXRJbWFnZShpbi0+YWJzb2x1dGVQYWludFJl
Y3QoKSksIEludFJlY3QoSW50UG9pbnQoKSwgaW1hZ2VCdWZmZXItPmxvZ2ljYWxTaXplKCkpLCBD
b21wb3NpdGVTb3VyY2VBdG9wKTsKKyAgICAgICAgZmlsdGVyQ29udGV4dC5kcmF3SW1hZ2VCdWZm
ZXIoKmltYWdlQnVmZmVyMiwgQ29sb3JTcGFjZURldmljZVJHQiwgZHJhd2luZ1JlZ2lvbk9mSW5w
dXRJbWFnZShpbjItPmFic29sdXRlUGFpbnRSZWN0KCkpKTsKKyAgICAgICAgZmlsdGVyQ29udGV4
dC5kcmF3SW1hZ2VCdWZmZXIoKmltYWdlQnVmZmVyLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBkcmF3
aW5nUmVnaW9uT2ZJbnB1dEltYWdlKGluLT5hYnNvbHV0ZVBhaW50UmVjdCgpKSwgSW50UmVjdChJ
bnRQb2ludCgpLCBpbWFnZUJ1ZmZlci0+bG9naWNhbFNpemUoKSksIENvbXBvc2l0ZVNvdXJjZUF0
b3ApOwogICAgICAgICBicmVhazsKICAgICBjYXNlIEZFQ09NUE9TSVRFX09QRVJBVE9SX1hPUjoK
LSAgICAgICAgZmlsdGVyQ29udGV4dC5kcmF3SW1hZ2VCdWZmZXIoaW1hZ2VCdWZmZXIyLCBDb2xv
clNwYWNlRGV2aWNlUkdCLCBkcmF3aW5nUmVnaW9uT2ZJbnB1dEltYWdlKGluMi0+YWJzb2x1dGVQ
YWludFJlY3QoKSkpOwotICAgICAgICBmaWx0ZXJDb250ZXh0LmRyYXdJbWFnZUJ1ZmZlcihpbWFn
ZUJ1ZmZlciwgQ29sb3JTcGFjZURldmljZVJHQiwgZHJhd2luZ1JlZ2lvbk9mSW5wdXRJbWFnZShp
bi0+YWJzb2x1dGVQYWludFJlY3QoKSksIEludFJlY3QoSW50UG9pbnQoKSwgaW1hZ2VCdWZmZXIt
PmxvZ2ljYWxTaXplKCkpLCBDb21wb3NpdGVYT1IpOworICAgICAgICBmaWx0ZXJDb250ZXh0LmRy
YXdJbWFnZUJ1ZmZlcigqaW1hZ2VCdWZmZXIyLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBkcmF3aW5n
UmVnaW9uT2ZJbnB1dEltYWdlKGluMi0+YWJzb2x1dGVQYWludFJlY3QoKSkpOworICAgICAgICBm
aWx0ZXJDb250ZXh0LmRyYXdJbWFnZUJ1ZmZlcigqaW1hZ2VCdWZmZXIsIENvbG9yU3BhY2VEZXZp
Y2VSR0IsIGRyYXdpbmdSZWdpb25PZklucHV0SW1hZ2UoaW4tPmFic29sdXRlUGFpbnRSZWN0KCkp
LCBJbnRSZWN0KEludFBvaW50KCksIGltYWdlQnVmZmVyLT5sb2dpY2FsU2l6ZSgpKSwgQ29tcG9z
aXRlWE9SKTsKICAgICAgICAgYnJlYWs7CiAgICAgZGVmYXVsdDoKICAgICAgICAgYnJlYWs7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFRHJv
cFNoYWRvdy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZF
RHJvcFNoYWRvdy5jcHAKaW5kZXggNjMzZWJjNjYwYjFkNzZjYjRiZDk4ODZlMDExZTBiODM3NWI5
NWFiOS4uZGNlNWFhZTI1ZjI5N2FhODhiNmY4YTgzY2JjMmRhODRiMDBjZTk2ZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRURyb3BTaGFkb3cu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVEcm9w
U2hhZG93LmNwcApAQCAtODgsMTAgKzg4LDEyIEBAIHZvaWQgRkVEcm9wU2hhZG93OjpwbGF0Zm9y
bUFwcGx5U29mdHdhcmUoKQogICAgIGRyYXdpbmdSZWdpb25XaXRoT2Zmc2V0Lm1vdmUob2Zmc2V0
KTsKIAogICAgIEltYWdlQnVmZmVyKiBzb3VyY2VJbWFnZSA9IGluLT5hc0ltYWdlQnVmZmVyKCk7
Ci0gICAgQVNTRVJUKHNvdXJjZUltYWdlKTsKKyAgICBpZiAoIXNvdXJjZUltYWdlKQorICAgICAg
ICByZXR1cm47CisKICAgICBHcmFwaGljc0NvbnRleHQmIHJlc3VsdENvbnRleHQgPSByZXN1bHRJ
bWFnZS0+Y29udGV4dCgpOwogICAgIHJlc3VsdENvbnRleHQuc2V0QWxwaGEobV9zaGFkb3dPcGFj
aXR5KTsKLSAgICByZXN1bHRDb250ZXh0LmRyYXdJbWFnZUJ1ZmZlcihzb3VyY2VJbWFnZSwgQ29s
b3JTcGFjZURldmljZVJHQiwgZHJhd2luZ1JlZ2lvbldpdGhPZmZzZXQpOworICAgIHJlc3VsdENv
bnRleHQuZHJhd0ltYWdlQnVmZmVyKCpzb3VyY2VJbWFnZSwgQ29sb3JTcGFjZURldmljZVJHQiwg
ZHJhd2luZ1JlZ2lvbldpdGhPZmZzZXQpOwogICAgIHJlc3VsdENvbnRleHQuc2V0QWxwaGEoMSk7
CiAKICAgICBTaGFkb3dCbHVyIGNvbnRleHRTaGFkb3coYmx1clJhZGl1cywgb2Zmc2V0LCBtX3No
YWRvd0NvbG9yLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKQEAgLTEwOCw3ICsxMTAsNyBAQCB2b2lk
IEZFRHJvcFNoYWRvdzo6cGxhdGZvcm1BcHBseVNvZnR3YXJlKCkKICAgICByZXN1bHRDb250ZXh0
LmZpbGxSZWN0KEZsb2F0UmVjdChGbG9hdFBvaW50KCksIGFic29sdXRlUGFpbnRSZWN0KCkuc2l6
ZSgpKSwgbV9zaGFkb3dDb2xvciwgQ29sb3JTcGFjZURldmljZVJHQik7CiAgICAgcmVzdWx0Q29u
dGV4dC5zZXRDb21wb3NpdGVPcGVyYXRpb24oQ29tcG9zaXRlRGVzdGluYXRpb25PdmVyKTsKIAot
ICAgIHJlc3VsdEltYWdlLT5jb250ZXh0KCkuZHJhd0ltYWdlQnVmZmVyKHNvdXJjZUltYWdlLCBD
b2xvclNwYWNlRGV2aWNlUkdCLCBkcmF3aW5nUmVnaW9uKTsKKyAgICByZXN1bHRJbWFnZS0+Y29u
dGV4dCgpLmRyYXdJbWFnZUJ1ZmZlcigqc291cmNlSW1hZ2UsIENvbG9yU3BhY2VEZXZpY2VSR0Is
IGRyYXdpbmdSZWdpb24pOwogfQogCiB2b2lkIEZFRHJvcFNoYWRvdzo6ZHVtcCgpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFTWVyZ2UuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRU1lcmdlLmNwcApp
bmRleCBmY2NkZDQ1ZTM4NWFlNDIzMGJhM2M5MThkNzBhMjk5Mjc0YWIzMDA1Li5hMDJkOWZkYWUy
NDVhNWZlZGM1MTljODMwMGMwMzMxZDBkNzIxYmU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFTWVyZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVNZXJnZS5jcHAKQEAgLTQ3LDEwICs0Nywx
MiBAQCB2b2lkIEZFTWVyZ2U6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZSgpCiAgICAgaWYgKCFyZXN1
bHRJbWFnZSkKICAgICAgICAgcmV0dXJuOwogCisKICAgICBHcmFwaGljc0NvbnRleHQmIGZpbHRl
ckNvbnRleHQgPSByZXN1bHRJbWFnZS0+Y29udGV4dCgpOwogICAgIGZvciAodW5zaWduZWQgaSA9
IDA7IGkgPCBzaXplOyArK2kpIHsKICAgICAgICAgRmlsdGVyRWZmZWN0KiBpbiA9IGlucHV0RWZm
ZWN0KGkpOwotICAgICAgICBmaWx0ZXJDb250ZXh0LmRyYXdJbWFnZUJ1ZmZlcihpbi0+YXNJbWFn
ZUJ1ZmZlcigpLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBkcmF3aW5nUmVnaW9uT2ZJbnB1dEltYWdl
KGluLT5hYnNvbHV0ZVBhaW50UmVjdCgpKSk7CisgICAgICAgIGlmIChJbWFnZUJ1ZmZlciogaW5C
dWZmZXIgPSBpbi0+YXNJbWFnZUJ1ZmZlcigpKQorICAgICAgICAgICAgZmlsdGVyQ29udGV4dC5k
cmF3SW1hZ2VCdWZmZXIoKmluQnVmZmVyLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBkcmF3aW5nUmVn
aW9uT2ZJbnB1dEltYWdlKGluLT5hYnNvbHV0ZVBhaW50UmVjdCgpKSk7CiAgICAgfQogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFT2Zm
c2V0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVPZmZz
ZXQuY3BwCmluZGV4IGZmZWE2Mzg2ODFhYTRhOTdlODQwODBhMWI3Yzg3ZTg0MzlkNDk5ZmMuLjE4
YTJlNzkxZDU4M2JhY2RjZDFjN2JlNmQwNTdmNTBiOWI1MTkxY2EgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVPZmZzZXQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVPZmZzZXQuY3BwCkBAIC03
OSw3ICs3OSw4IEBAIHZvaWQgRkVPZmZzZXQ6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZSgpCiAgICAg
RmlsdGVyRWZmZWN0KiBpbiA9IGlucHV0RWZmZWN0KDApOwogCiAgICAgSW1hZ2VCdWZmZXIqIHJl
c3VsdEltYWdlID0gY3JlYXRlSW1hZ2VCdWZmZXJSZXN1bHQoKTsKLSAgICBpZiAoIXJlc3VsdElt
YWdlKQorICAgIEltYWdlQnVmZmVyKiBpbkJ1ZmZlciA9IGluLT5hc0ltYWdlQnVmZmVyKCk7Cisg
ICAgaWYgKCFyZXN1bHRJbWFnZSB8fCAhaW5CdWZmZXIpCiAgICAgICAgIHJldHVybjsKIAogICAg
IHNldElzQWxwaGFJbWFnZShpbi0+aXNBbHBoYUltYWdlKCkpOwpAQCAtODcsNyArODgsNyBAQCB2
b2lkIEZFT2Zmc2V0OjpwbGF0Zm9ybUFwcGx5U29mdHdhcmUoKQogICAgIEZsb2F0UmVjdCBkcmF3
aW5nUmVnaW9uID0gZHJhd2luZ1JlZ2lvbk9mSW5wdXRJbWFnZShpbi0+YWJzb2x1dGVQYWludFJl
Y3QoKSk7CiAgICAgRmlsdGVyJiBmaWx0ZXIgPSB0aGlzLT5maWx0ZXIoKTsKICAgICBkcmF3aW5n
UmVnaW9uLm1vdmUoZmlsdGVyLmFwcGx5SG9yaXpvbnRhbFNjYWxlKG1fZHgpLCBmaWx0ZXIuYXBw
bHlWZXJ0aWNhbFNjYWxlKG1fZHkpKTsKLSAgICByZXN1bHRJbWFnZS0+Y29udGV4dCgpLmRyYXdJ
bWFnZUJ1ZmZlcihpbi0+YXNJbWFnZUJ1ZmZlcigpLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBkcmF3
aW5nUmVnaW9uKTsKKyAgICByZXN1bHRJbWFnZS0+Y29udGV4dCgpLmRyYXdJbWFnZUJ1ZmZlcigq
aW5CdWZmZXIsIENvbG9yU3BhY2VEZXZpY2VSR0IsIGRyYXdpbmdSZWdpb24pOwogfQogCiB2b2lk
IEZFT2Zmc2V0OjpkdW1wKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2ZpbHRlcnMvRkVUaWxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2ZpbHRlcnMvRkVUaWxlLmNwcAppbmRleCA1ZGM0N2RkNmVjZjkzMWFlYTVmODA5ZGJiZDc1
NGQwMGEzNWNlYTFiLi5hMTg3Yjc0ZmZmZmRkNWE5NzQ0ZGM2OTdjY2M1ZWVhYzIwZWRmMzAyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFVGls
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRVRp
bGUuY3BwCkBAIC00Nyw3ICs0Nyw4IEBAIHZvaWQgRkVUaWxlOjpwbGF0Zm9ybUFwcGx5U29mdHdh
cmUoKQogICAgIEZpbHRlckVmZmVjdCogaW4gPSBpbnB1dEVmZmVjdCgwKTsKIAogICAgIEltYWdl
QnVmZmVyKiByZXN1bHRJbWFnZSA9IGNyZWF0ZUltYWdlQnVmZmVyUmVzdWx0KCk7Ci0gICAgaWYg
KCFyZXN1bHRJbWFnZSkKKyAgICBJbWFnZUJ1ZmZlciogaW5CdWZmZXIgPSBpbi0+YXNJbWFnZUJ1
ZmZlcigpOworICAgIGlmICghcmVzdWx0SW1hZ2UgfHwgIWluQnVmZmVyKQogICAgICAgICByZXR1
cm47CiAKICAgICBzZXRJc0FscGhhSW1hZ2UoaW4tPmlzQWxwaGFJbWFnZSgpKTsKQEAgLTY5LDcg
KzcwLDcgQEAgdm9pZCBGRVRpbGU6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZSgpCiAKICAgICBHcmFw
aGljc0NvbnRleHQmIHRpbGVJbWFnZUNvbnRleHQgPSB0aWxlSW1hZ2UtPmNvbnRleHQoKTsKICAg
ICB0aWxlSW1hZ2VDb250ZXh0LnRyYW5zbGF0ZSgtaW5NYXhFZmZlY3RMb2NhdGlvbi54KCksIC1p
bk1heEVmZmVjdExvY2F0aW9uLnkoKSk7Ci0gICAgdGlsZUltYWdlQ29udGV4dC5kcmF3SW1hZ2VC
dWZmZXIoaW4tPmFzSW1hZ2VCdWZmZXIoKSwgQ29sb3JTcGFjZURldmljZVJHQiwgaW4tPmFic29s
dXRlUGFpbnRSZWN0KCkubG9jYXRpb24oKSk7CisgICAgdGlsZUltYWdlQ29udGV4dC5kcmF3SW1h
Z2VCdWZmZXIoKmluQnVmZmVyLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBpbi0+YWJzb2x1dGVQYWlu
dFJlY3QoKS5sb2NhdGlvbigpKTsKIAogICAgIGF1dG8gdGlsZUltYWdlQ29weSA9IHRpbGVJbWFn
ZS0+Y29weUltYWdlKENvcHlCYWNraW5nU3RvcmUpOwogICAgIGlmICghdGlsZUltYWdlQ29weSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvU291
cmNlQWxwaGEuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9T
b3VyY2VBbHBoYS5jcHAKaW5kZXggNzBiMWQ1NTY0ZjZmMDNiMTMzOTgwYWJkNTk5YWMzMDY4MGJl
NTYwNi4uMWUzYjkxYTIyNDQ4ZjE4Y2FhNDE2ZmIxMDZhMjg0MGEwMDJhMzFiYiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9Tb3VyY2VBbHBoYS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9Tb3VyY2VB
bHBoYS5jcHAKQEAgLTU0LDExICs1NCwxMiBAQCB2b2lkIFNvdXJjZUFscGhhOjpwbGF0Zm9ybUFw
cGx5U29mdHdhcmUoKQogICAgIEdyYXBoaWNzQ29udGV4dCYgZmlsdGVyQ29udGV4dCA9IHJlc3Vs
dEltYWdlLT5jb250ZXh0KCk7CiAKICAgICBJbWFnZUJ1ZmZlciogaW1hZ2VCdWZmZXIgPSBpbnB1
dEVmZmVjdCgwKS0+YXNJbWFnZUJ1ZmZlcigpOwotICAgIEFTU0VSVChpbWFnZUJ1ZmZlcik7Cisg
ICAgaWYgKCFpbWFnZUJ1ZmZlcikKKyAgICAgICAgcmV0dXJuOwogCiAgICAgRmxvYXRSZWN0IGlt
YWdlUmVjdChGbG9hdFBvaW50KCksIGFic29sdXRlUGFpbnRSZWN0KCkuc2l6ZSgpKTsKICAgICBm
aWx0ZXJDb250ZXh0LmZpbGxSZWN0KGltYWdlUmVjdCwgQ29sb3I6OmJsYWNrLCBDb2xvclNwYWNl
RGV2aWNlUkdCKTsKLSAgICBmaWx0ZXJDb250ZXh0LmRyYXdJbWFnZUJ1ZmZlcihpbWFnZUJ1ZmZl
ciwgQ29sb3JTcGFjZURldmljZVJHQiwgSW50UG9pbnQoKSwgQ29tcG9zaXRlRGVzdGluYXRpb25J
bik7CisgICAgZmlsdGVyQ29udGV4dC5kcmF3SW1hZ2VCdWZmZXIoKmltYWdlQnVmZmVyLCBDb2xv
clNwYWNlRGV2aWNlUkdCLCBJbnRQb2ludCgpLCBDb21wb3NpdGVEZXN0aW5hdGlvbkluKTsKIH0K
IAogdm9pZCBTb3VyY2VBbHBoYTo6ZHVtcCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL1NvdXJjZUdyYXBoaWMuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9Tb3VyY2VHcmFwaGljLmNwcAppbmRleCAzMTk4
YjAzNzgzYTVjMmI0OWFlYTllZWIzZTlmODk4MjI4M2RiYzgzLi5kZjRlZTZmMDc5YzU0NTc1NDU5
ZTg0MzY5MjY1OWQ2Y2QzMzAwZWJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9maWx0ZXJzL1NvdXJjZUdyYXBoaWMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvU291cmNlR3JhcGhpYy5jcHAKQEAgLTQ5LDEyICs0
OSwxNCBAQCB2b2lkIFNvdXJjZUdyYXBoaWM6OmRldGVybWluZUFic29sdXRlUGFpbnRSZWN0KCkK
IAogdm9pZCBTb3VyY2VHcmFwaGljOjpwbGF0Zm9ybUFwcGx5U29mdHdhcmUoKQogewotICAgIElt
YWdlQnVmZmVyKiByZXN1bHRJbWFnZSA9IGNyZWF0ZUltYWdlQnVmZmVyUmVzdWx0KCk7CiAgICAg
RmlsdGVyJiBmaWx0ZXIgPSB0aGlzLT5maWx0ZXIoKTsKLSAgICBpZiAoIXJlc3VsdEltYWdlIHx8
ICFmaWx0ZXIuc291cmNlSW1hZ2UoKSkKKworICAgIEltYWdlQnVmZmVyKiByZXN1bHRJbWFnZSA9
IGNyZWF0ZUltYWdlQnVmZmVyUmVzdWx0KCk7CisgICAgSW1hZ2VCdWZmZXIqIHNvdXJjZUltYWdl
ID0gZmlsdGVyLnNvdXJjZUltYWdlKCk7CisgICAgaWYgKCFyZXN1bHRJbWFnZSB8fCAhc291cmNl
SW1hZ2UpCiAgICAgICAgIHJldHVybjsKIAotICAgIHJlc3VsdEltYWdlLT5jb250ZXh0KCkuZHJh
d0ltYWdlQnVmZmVyKGZpbHRlci5zb3VyY2VJbWFnZSgpLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBJ
bnRQb2ludCgpKTsKKyAgICByZXN1bHRJbWFnZS0+Y29udGV4dCgpLmRyYXdJbWFnZUJ1ZmZlcigq
c291cmNlSW1hZ2UsIENvbG9yU3BhY2VEZXZpY2VSR0IsIEludFBvaW50KCkpOwogfQogCiB2b2lk
IFNvdXJjZUdyYXBoaWM6OmR1bXAoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2UuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVy
UHJpdmF0ZUdTdHJlYW1lckJhc2UuY3BwCmluZGV4IGM4NDJlNDIwODJkMTI1ZTA5NThjMjY4ZGY4
ODg0NzZhMDEyMzg2YWUuLmQzNzBiMWEyZTU2ZTBiMTJiYWZjY2FjM2Y3NjMxZTg2MjQ4OGQ2MmEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9N
ZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFz
ZS5jcHAKQEAgLTUyNSw4ICs1MjUsOCBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1l
ckJhc2U6OnBhaW50KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYQogICAgIGlm
ICghZ3N0SW1hZ2UpCiAgICAgICAgIHJldHVybjsKIAotICAgIGNvbnRleHQuZHJhd0ltYWdlKHJl
aW50ZXJwcmV0X2Nhc3Q8SW1hZ2UqPihnc3RJbWFnZS0+aW1hZ2UoKS5nZXQoKSksIENvbG9yU3Bh
Y2VTUkdCLAotICAgICAgICByZWN0LCBnc3RJbWFnZS0+cmVjdCgpLCBDb21wb3NpdGVDb3B5KTsK
KyAgICBpZiAoSW1hZ2UqIGltYWdlID0gcmVpbnRlcnByZXRfY2FzdDxJbWFnZSo+KGdzdEltYWdl
LT5pbWFnZSgpLmdldCgpKSkKKyAgICAgICAgY29udGV4dC5kcmF3SW1hZ2UoKmltYWdlLCBDb2xv
clNwYWNlU1JHQiwgcmVjdCwgZ3N0SW1hZ2UtPnJlY3QoKSwgQ29tcG9zaXRlQ29weSk7CiB9CiAK
ICNpZiBVU0UoVEVYVFVSRV9NQVBQRVJfR0wpICYmICFVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1Mp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvVGhlbWVNYWMubW0gYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvVGhlbWVNYWMubW0KaW5kZXggZmYyOWExZGVjZDhi
NzIwZDQ0YjE0MjMwOWFhY2NlM2JiZWVkYTE4Zi4uZTc1OTFiZWRiZjRkNWUwZDY5ZTcwZDczZTcw
NDI5ZWRmODFiYTE1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Ro
ZW1lTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9UaGVtZU1hYy5tbQpA
QCAtNjg2LDExICs2ODYsMTMgQEAgYm9vbCBUaGVtZU1hYzo6ZHJhd0NlbGxPckZvY3VzUmluZ1dp
dGhWaWV3SW50b0NvbnRleHQoTlNDZWxsICpjZWxsLCBHcmFwaGljc0NvbnQKICAgICBpZiAodXNl
SW1hZ2VCdWZmZXIpIHsKICAgICAgICAgTlNSZWN0IGltYWdlQnVmZmVyRHJhd1JlY3QgPSBOU1Jl
Y3QoRmxvYXRSZWN0KGJ1dHRvbkZvY3VzUmVjdE91dGxpbmVXaWR0aCwgYnV0dG9uRm9jdXNSZWN0
T3V0bGluZVdpZHRoLCByZWN0LndpZHRoKCksIHJlY3QuaGVpZ2h0KCkpKTsKICAgICAgICAgYXV0
byBpbWFnZUJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGVDb21wYXRpYmxlQnVmZmVyKHJlY3Qu
c2l6ZSgpICsgMiAqIEZsb2F0U2l6ZShidXR0b25Gb2N1c1JlY3RPdXRsaW5lV2lkdGgsIGJ1dHRv
bkZvY3VzUmVjdE91dGxpbmVXaWR0aCksIGRldmljZVNjYWxlRmFjdG9yLCBDb2xvclNwYWNlU1JH
QiwgY29udGV4dCwgZmFsc2UpOworICAgICAgICBpZiAoIWltYWdlQnVmZmVyKQorICAgICAgICAg
ICAgcmV0dXJuIG5lZWRzUmVwYWludDsKICAgICAgICAgewogICAgICAgICAgICAgTG9jYWxDdXJy
ZW50R3JhcGhpY3NDb250ZXh0IGxvY2FsQ29udGV4dChpbWFnZUJ1ZmZlci0+Y29udGV4dCgpKTsK
ICAgICAgICAgICAgIG5lZWRzUmVwYWludCA9IGRyYXdDZWxsT3JGb2N1c1JpbmdJbnRvUmVjdFdp
dGhWaWV3KGNlbGwsIGltYWdlQnVmZmVyRHJhd1JlY3QsIHZpZXcsIGRyYXdCdXR0b25DZWxsLCBk
cmF3Rm9jdXNSaW5nKTsKICAgICAgICAgfQotICAgICAgICBjb250ZXh0LmRyYXdJbWFnZUJ1ZmZl
cihpbWFnZUJ1ZmZlci5nZXQoKSwgQ29sb3JTcGFjZVNSR0IsIHJlY3QubG9jYXRpb24oKSAtIEZs
b2F0U2l6ZShidXR0b25Gb2N1c1JlY3RPdXRsaW5lV2lkdGgsIGJ1dHRvbkZvY3VzUmVjdE91dGxp
bmVXaWR0aCkpOworICAgICAgICBjb250ZXh0LmRyYXdJbWFnZUJ1ZmZlcigqaW1hZ2VCdWZmZXIs
IENvbG9yU3BhY2VTUkdCLCByZWN0LmxvY2F0aW9uKCkgLSBGbG9hdFNpemUoYnV0dG9uRm9jdXNS
ZWN0T3V0bGluZVdpZHRoLCBidXR0b25Gb2N1c1JlY3RPdXRsaW5lV2lkdGgpKTsKICAgICAgICAg
cmV0dXJuIG5lZWRzUmVwYWludDsKICAgICB9CiAgICAgaWYgKGRyYXdCdXR0b25DZWxsKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0ZpbHRlckVmZmVjdFJlbmRlcmVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9GaWx0ZXJFZmZlY3RSZW5kZXJlci5jcHAKaW5k
ZXggMjVlZDFkNTQxOTdhMGNmYTJhM2FkZjc3MTJiNzQ0NjQxYWY5MjNmOS4uZmQ1MDllOGVhZDU5
Njk3ZDQ2MGQzOGQzMTNlM2UwNDE2ZmE2NTg3NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL0ZpbHRlckVmZmVjdFJlbmRlcmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvRmlsdGVyRWZmZWN0UmVuZGVyZXIuY3BwCkBAIC00MjksOCArNDI5LDEwIEBAIHZv
aWQgRmlsdGVyRWZmZWN0UmVuZGVyZXJIZWxwZXI6OmFwcGx5RmlsdGVyRWZmZWN0KEdyYXBoaWNz
Q29udGV4dCYgZGVzdGluYXRpb25DCiAgICAgTGF5b3V0UmVjdCBkZXN0UmVjdCA9IGZpbHRlci0+
b3V0cHV0UmVjdCgpOwogICAgIGRlc3RSZWN0Lm1vdmUobV9wYWludE9mZnNldC54KCksIG1fcGFp
bnRPZmZzZXQueSgpKTsKIAotICAgIGRlc3RpbmF0aW9uQ29udGV4dC5kcmF3SW1hZ2VCdWZmZXIo
ZmlsdGVyLT5vdXRwdXQoKSwgbV9yZW5kZXJMYXllci0+cmVuZGVyZXIoKS5zdHlsZSgpLmNvbG9y
U3BhY2UoKSwKLSAgICAgICAgc25hcFJlY3RUb0RldmljZVBpeGVscyhkZXN0UmVjdCwgbV9yZW5k
ZXJMYXllci0+cmVuZGVyZXIoKS5kb2N1bWVudCgpLmRldmljZVNjYWxlRmFjdG9yKCkpKTsKKyAg
ICBpZiAoSW1hZ2VCdWZmZXIqIG91dHB1dEJ1ZmZlciA9IGZpbHRlci0+b3V0cHV0KCkpIHsKKyAg
ICAgICAgZGVzdGluYXRpb25Db250ZXh0LmRyYXdJbWFnZUJ1ZmZlcigqb3V0cHV0QnVmZmVyLCBt
X3JlbmRlckxheWVyLT5yZW5kZXJlcigpLnN0eWxlKCkuY29sb3JTcGFjZSgpLAorICAgICAgICAg
ICAgc25hcFJlY3RUb0RldmljZVBpeGVscyhkZXN0UmVjdCwgbV9yZW5kZXJMYXllci0+cmVuZGVy
ZXIoKS5kb2N1bWVudCgpLmRldmljZVNjYWxlRmFjdG9yKCkpKTsKKyAgICB9CiAKICAgICBmaWx0
ZXItPmNsZWFySW50ZXJtZWRpYXRlUmVzdWx0cygpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL0ltYWdlUXVhbGl0eUNvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL0ltYWdlUXVhbGl0eUNvbnRyb2xsZXIuY3BwCmluZGV4IDZmYjgzNDI0Mjc0
Nzk0NDE4Y2E4MDMzZDdiNGRhZDcxYjdkMTM0YWUuLmEwYzIxMTQ1Yjg0NTg4OTMyMmExNGRiNDdi
YmNiODk0NTAyNzAwMTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbWFn
ZVF1YWxpdHlDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW1h
Z2VRdWFsaXR5Q29udHJvbGxlci5jcHAKQEAgLTk5LDExICs5OSwxMSBAQCB2b2lkIEltYWdlUXVh
bGl0eUNvbnRyb2xsZXI6OnJlc3RhcnRUaW1lcigpCiAgICAgbV90aW1lci5zdGFydE9uZVNob3Qo
Y0xvd1F1YWxpdHlUaW1lVGhyZXNob2xkKTsKIH0KIAotYm9vbCBJbWFnZVF1YWxpdHlDb250cm9s
bGVyOjpzaG91bGRQYWludEF0TG93UXVhbGl0eShHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIFJl
bmRlckJveE1vZGVsT2JqZWN0KiBvYmplY3QsIEltYWdlKiBpbWFnZSwgY29uc3Qgdm9pZCAqbGF5
ZXIsIGNvbnN0IExheW91dFNpemUmIHNpemUpCitib29sIEltYWdlUXVhbGl0eUNvbnRyb2xsZXI6
OnNob3VsZFBhaW50QXRMb3dRdWFsaXR5KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgUmVuZGVy
Qm94TW9kZWxPYmplY3QqIG9iamVjdCwgSW1hZ2UmIGltYWdlLCBjb25zdCB2b2lkICpsYXllciwg
Y29uc3QgTGF5b3V0U2l6ZSYgc2l6ZSkKIHsKICAgICAvLyBJZiB0aGUgaW1hZ2UgaXMgbm90IGEg
Yml0bWFwIGltYWdlLCB0aGVuIG5vbmUgb2YgdGhpcyBpcyByZWxldmFudCBhbmQgd2UganVzdCBw
YWludCBhdCBoaWdoCiAgICAgLy8gcXVhbGl0eS4KLSAgICBpZiAoIWltYWdlIHx8ICEoaW1hZ2Ut
PmlzQml0bWFwSW1hZ2UoKSB8fCBpbWFnZS0+aXNQREZEb2N1bWVudEltYWdlKCkpIHx8IGNvbnRl
eHQucGFpbnRpbmdEaXNhYmxlZCgpKQorICAgIGlmICghKGltYWdlLmlzQml0bWFwSW1hZ2UoKSB8
fCBpbWFnZS5pc1BERkRvY3VtZW50SW1hZ2UoKSkgfHwgY29udGV4dC5wYWludGluZ0Rpc2FibGVk
KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIHN3aXRjaCAob2JqZWN0LT5zdHlsZSgp
LmltYWdlUmVuZGVyaW5nKCkpIHsKQEAgLTExOCw3ICsxMTgsNyBAQCBib29sIEltYWdlUXVhbGl0
eUNvbnRyb2xsZXI6OnNob3VsZFBhaW50QXRMb3dRdWFsaXR5KEdyYXBoaWNzQ29udGV4dCYgY29u
dGV4dCwgUgogCiAgICAgLy8gTWFrZSBzdXJlIHRvIHVzZSB0aGUgdW56b29tZWQgaW1hZ2Ugc2l6
ZSwgc2luY2UgaWYgYSBmdWxsIHBhZ2Ugem9vbSBpcyBpbiBlZmZlY3QsIHRoZSBpbWFnZQogICAg
IC8vIGlzIGFjdHVhbGx5IGJlaW5nIHNjYWxlZC4KLSAgICBJbnRTaXplIGltYWdlU2l6ZShpbWFn
ZS0+d2lkdGgoKSwgaW1hZ2UtPmhlaWdodCgpKTsKKyAgICBJbnRTaXplIGltYWdlU2l6ZShpbWFn
ZS53aWR0aCgpLCBpbWFnZS5oZWlnaHQoKSk7CiAKICAgICAvLyBMb29rIG91cnNlbHZlcyB1cCBp
biB0aGUgaGFzaHRhYmxlcy4KICAgICBhdXRvIGkgPSBtX29iamVjdExheWVyU2l6ZU1hcC5maW5k
KG9iamVjdCk7CkBAIC0xNTYsNyArMTU2LDcgQEAgYm9vbCBJbWFnZVF1YWxpdHlDb250cm9sbGVy
OjpzaG91bGRQYWludEF0TG93UXVhbGl0eShHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIFIKIAog
ICAgIC8vIFRoZXJlIGlzIG5vIG5lZWQgdG8gaGFzaCBzY2FsZWQgaW1hZ2VzIHRoYXQgYWx3YXlz
IHVzZSBsb3cgcXVhbGl0eSBtb2RlIHdoZW4gdGhlIHBhZ2UgZGVtYW5kcyBpdC4gVGhpcyBpcyB0
aGUgaUNoYXQgY2FzZS4KICAgICBpZiAobV9yZW5kZXJWaWV3LmZyYW1lKCkucGFnZSgpLT5pbkxv
d1F1YWxpdHlJbWFnZUludGVycG9sYXRpb25Nb2RlKCkpIHsKLSAgICAgICAgZG91YmxlIHRvdGFs
UGl4ZWxzID0gc3RhdGljX2Nhc3Q8ZG91YmxlPihpbWFnZS0+d2lkdGgoKSkgKiBzdGF0aWNfY2Fz
dDxkb3VibGU+KGltYWdlLT5oZWlnaHQoKSk7CisgICAgICAgIGRvdWJsZSB0b3RhbFBpeGVscyA9
IHN0YXRpY19jYXN0PGRvdWJsZT4oaW1hZ2Uud2lkdGgoKSkgKiBzdGF0aWNfY2FzdDxkb3VibGU+
KGltYWdlLmhlaWdodCgpKTsKICAgICAgICAgaWYgKHRvdGFsUGl4ZWxzID4gY0ludGVycG9sYXRp
b25DdXRvZmYpCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW1hZ2VRdWFsaXR5Q29udHJvbGxlci5oIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL0ltYWdlUXVhbGl0eUNvbnRyb2xsZXIuaAppbmRleCBkMTRkYzQ5
YWE3OWFmMzE1ZGFjOGUxZDUxMjFjMzQwMjYwZWY2NWUzLi41ZjcxMTY0NzUxMGNkMjJiOTYyNTky
NjczNTg0Zjg2YzA4MWY1ODljIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
SW1hZ2VRdWFsaXR5Q29udHJvbGxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9J
bWFnZVF1YWxpdHlDb250cm9sbGVyLmgKQEAgLTQzLDcgKzQzLDcgQEAgY2xhc3MgSW1hZ2VRdWFs
aXR5Q29udHJvbGxlciB7CiBwdWJsaWM6CiAgICAgZXhwbGljaXQgSW1hZ2VRdWFsaXR5Q29udHJv
bGxlcihjb25zdCBSZW5kZXJWaWV3Jik7CiAKLSAgICBib29sIHNob3VsZFBhaW50QXRMb3dRdWFs
aXR5KEdyYXBoaWNzQ29udGV4dCYsIFJlbmRlckJveE1vZGVsT2JqZWN0KiwgSW1hZ2UqLCBjb25z
dCB2b2lkKiBsYXllciwgY29uc3QgTGF5b3V0U2l6ZSYpOworICAgIGJvb2wgc2hvdWxkUGFpbnRB
dExvd1F1YWxpdHkoR3JhcGhpY3NDb250ZXh0JiwgUmVuZGVyQm94TW9kZWxPYmplY3QqLCBJbWFn
ZSYsIGNvbnN0IHZvaWQqIGxheWVyLCBjb25zdCBMYXlvdXRTaXplJik7CiAgICAgdm9pZCByZW5k
ZXJlcldpbGxCZURlc3Ryb3llZChSZW5kZXJCb3hNb2RlbE9iamVjdCYgcmVuZGVyZXIpIHsgcmVt
b3ZlT2JqZWN0KCZyZW5kZXJlcik7IH0KIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuY3BwCmluZGV4IDFlZGM1YWZjOTRjMWQ5
YjMwYWFlMDEwOTE4NWM1MThjMzUxMjkyZTguLmQyYWRlMDkwODBhZGU0YTFiMmU1YzQwM2ZlZmE5
MjVkY2FlOWZlZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJC
b3hNb2RlbE9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJv
eE1vZGVsT2JqZWN0LmNwcApAQCAtMTYxLDcgKzE2MSw3IEBAIHZvaWQgUmVuZGVyQm94TW9kZWxP
YmplY3Q6OnN1c3BlbmRBbmltYXRpb25zKGRvdWJsZSB0aW1lKQogICAgIGxheWVyKCktPmJhY2tp
bmcoKS0+c3VzcGVuZEFuaW1hdGlvbnModGltZSk7CiB9CiAKLWJvb2wgUmVuZGVyQm94TW9kZWxP
YmplY3Q6OnNob3VsZFBhaW50QXRMb3dRdWFsaXR5KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwg
SW1hZ2UqIGltYWdlLCBjb25zdCB2b2lkKiBsYXllciwgY29uc3QgTGF5b3V0U2l6ZSYgc2l6ZSkK
K2Jvb2wgUmVuZGVyQm94TW9kZWxPYmplY3Q6OnNob3VsZFBhaW50QXRMb3dRdWFsaXR5KEdyYXBo
aWNzQ29udGV4dCYgY29udGV4dCwgSW1hZ2UmIGltYWdlLCBjb25zdCB2b2lkKiBsYXllciwgY29u
c3QgTGF5b3V0U2l6ZSYgc2l6ZSkKIHsKICAgICByZXR1cm4gdmlldygpLmltYWdlUXVhbGl0eUNv
bnRyb2xsZXIoKS5zaG91bGRQYWludEF0TG93UXVhbGl0eShjb250ZXh0LCB0aGlzLCBpbWFnZSwg
bGF5ZXIsIHNpemUpOwogfQpAQCAtODMwLDE4ICs4MzAsMTcgQEAgdm9pZCBSZW5kZXJCb3hNb2Rl
bE9iamVjdDo6cGFpbnRGaWxsTGF5ZXJFeHRlbmRlZChjb25zdCBQYWludEluZm8mIHBhaW50SW5m
bywgY28KICAgICBpZiAoIWJhc2VCZ0NvbG9yT25seSAmJiBzaG91bGRQYWludEJhY2tncm91bmRJ
bWFnZSkgewogICAgICAgICBCYWNrZ3JvdW5kSW1hZ2VHZW9tZXRyeSBnZW9tZXRyeSA9IGNhbGN1
bGF0ZUJhY2tncm91bmRJbWFnZUdlb21ldHJ5KHBhaW50SW5mby5wYWludENvbnRhaW5lciwgKmJn
TGF5ZXIsIHJlY3QubG9jYXRpb24oKSwgc2Nyb2xsZWRQYWludFJlY3QsIGJhY2tncm91bmRPYmpl
Y3QpOwogICAgICAgICBnZW9tZXRyeS5jbGlwKExheW91dFJlY3QocGl4ZWxTbmFwcGVkUmVjdCkp
OwotICAgICAgICBpZiAoIWdlb21ldHJ5LmRlc3RSZWN0KCkuaXNFbXB0eSgpKSB7CisgICAgICAg
IFJlZlB0cjxJbWFnZT4gaW1hZ2U7CisgICAgICAgIGlmICghZ2VvbWV0cnkuZGVzdFJlY3QoKS5p
c0VtcHR5KCkgJiYgKGltYWdlID0gYmdJbWFnZS0+aW1hZ2UoYmFja2dyb3VuZE9iamVjdCA/IGJh
Y2tncm91bmRPYmplY3QgOiB0aGlzLCBnZW9tZXRyeS50aWxlU2l6ZSgpKSkpIHsKICAgICAgICAg
ICAgIENvbXBvc2l0ZU9wZXJhdG9yIGNvbXBvc2l0ZU9wID0gb3AgPT0gQ29tcG9zaXRlU291cmNl
T3ZlciA/IGJnTGF5ZXItPmNvbXBvc2l0ZSgpIDogb3A7Ci0gICAgICAgICAgICBhdXRvIGNsaWVu
dEZvckJhY2tncm91bmRJbWFnZSA9IGJhY2tncm91bmRPYmplY3QgPyBiYWNrZ3JvdW5kT2JqZWN0
IDogdGhpczsKLSAgICAgICAgICAgIFJlZlB0cjxJbWFnZT4gaW1hZ2UgPSBiZ0ltYWdlLT5pbWFn
ZShjbGllbnRGb3JCYWNrZ3JvdW5kSW1hZ2UsIGdlb21ldHJ5LnRpbGVTaXplKCkpOwogICAgICAg
ICAgICAgY29udGV4dC5zZXREcmF3THVtaW5hbmNlTWFzayhiZ0xheWVyLT5tYXNrU291cmNlVHlw
ZSgpID09IE1hc2tMdW1pbmFuY2UpOwotICAgICAgICAgICAgYm9vbCB1c2VMb3dRdWFsaXR5U2Nh
bGluZyA9IHNob3VsZFBhaW50QXRMb3dRdWFsaXR5KGNvbnRleHQsIGltYWdlLmdldCgpLCBiZ0xh
eWVyLCBnZW9tZXRyeS50aWxlU2l6ZSgpKTsKLSAgICAgICAgICAgIGNvbnRleHQuZHJhd1RpbGVk
SW1hZ2UoaW1hZ2UuZ2V0KCksIHN0eWxlKCkuY29sb3JTcGFjZSgpLCBnZW9tZXRyeS5kZXN0UmVj
dCgpLCB0b0xheW91dFBvaW50KGdlb21ldHJ5LnJlbGF0aXZlUGhhc2UoKSksIGdlb21ldHJ5LnRp
bGVTaXplKCksIGdlb21ldHJ5LnNwYWNlU2l6ZSgpLCBJbWFnZVBhaW50aW5nT3B0aW9ucyhjb21w
b3NpdGVPcCwgYmdMYXllci0+YmxlbmRNb2RlKCksIEltYWdlT3JpZW50YXRpb25EZXNjcmlwdGlv
bigpLCB1c2VMb3dRdWFsaXR5U2NhbGluZykpOworICAgICAgICAgICAgYm9vbCB1c2VMb3dRdWFs
aXR5U2NhbGluZyA9IHNob3VsZFBhaW50QXRMb3dRdWFsaXR5KGNvbnRleHQsICppbWFnZSwgYmdM
YXllciwgZ2VvbWV0cnkudGlsZVNpemUoKSk7CisgICAgICAgICAgICBjb250ZXh0LmRyYXdUaWxl
ZEltYWdlKCppbWFnZSwgc3R5bGUoKS5jb2xvclNwYWNlKCksIGdlb21ldHJ5LmRlc3RSZWN0KCks
IHRvTGF5b3V0UG9pbnQoZ2VvbWV0cnkucmVsYXRpdmVQaGFzZSgpKSwgZ2VvbWV0cnkudGlsZVNp
emUoKSwgZ2VvbWV0cnkuc3BhY2VTaXplKCksIEltYWdlUGFpbnRpbmdPcHRpb25zKGNvbXBvc2l0
ZU9wLCBiZ0xheWVyLT5ibGVuZE1vZGUoKSwgSW1hZ2VPcmllbnRhdGlvbkRlc2NyaXB0aW9uKCks
IHVzZUxvd1F1YWxpdHlTY2FsaW5nKSk7CiAgICAgICAgIH0KICAgICB9CiAKLSAgICBpZiAoYmdM
YXllci0+Y2xpcCgpID09IFRleHRGaWxsQm94KSB7Ci0gICAgICAgIGNvbnRleHQuZHJhd0ltYWdl
QnVmZmVyKG1hc2tJbWFnZS5nZXQoKSwgQ29sb3JTcGFjZURldmljZVJHQiwgbWFza1JlY3QsIENv
bXBvc2l0ZURlc3RpbmF0aW9uSW4pOworICAgIGlmIChtYXNrSW1hZ2UgJiYgYmdMYXllci0+Y2xp
cCgpID09IFRleHRGaWxsQm94KSB7CisgICAgICAgIGNvbnRleHQuZHJhd0ltYWdlQnVmZmVyKCpt
YXNrSW1hZ2UsIENvbG9yU3BhY2VEZXZpY2VSR0IsIG1hc2tSZWN0LCBDb21wb3NpdGVEZXN0aW5h
dGlvbkluKTsKICAgICAgICAgY29udGV4dC5lbmRUcmFuc3BhcmVuY3lMYXllcigpOwogICAgIH0K
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9i
amVjdC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmgK
aW5kZXggNWIxMDg5ZWQ2MGU0M2YyYzY0MDM4ZWU5ZGY2NzNiYzc3YTI0N2I0Yy4uYjZmNmQ2MzRm
YTRmNzU5NTAwMTZmMDAyNzJiNGZjMDU5NDlhNDU4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmgKQEAgLTI1MSw3ICsyNTEsNyBAQCBwcm90
ZWN0ZWQ6CiAgICAgUm91bmRlZFJlY3QgYmFja2dyb3VuZFJvdW5kZWRSZWN0QWRqdXN0ZWRGb3JC
bGVlZEF2b2lkYW5jZShjb25zdCBHcmFwaGljc0NvbnRleHQmLCBjb25zdCBMYXlvdXRSZWN0Jiwg
QmFja2dyb3VuZEJsZWVkQXZvaWRhbmNlLCBJbmxpbmVGbG93Qm94KiwgY29uc3QgTGF5b3V0U2l6
ZSYsIGJvb2wgaW5jbHVkZUxvZ2ljYWxMZWZ0RWRnZSwgYm9vbCBpbmNsdWRlTG9naWNhbFJpZ2h0
RWRnZSkgY29uc3Q7CiAgICAgTGF5b3V0UmVjdCBib3JkZXJJbm5lclJlY3RBZGp1c3RlZEZvckJs
ZWVkQXZvaWRhbmNlKGNvbnN0IEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IExheW91dFJlY3QmLCBC
YWNrZ3JvdW5kQmxlZWRBdm9pZGFuY2UpIGNvbnN0OwogCi0gICAgYm9vbCBzaG91bGRQYWludEF0
TG93UXVhbGl0eShHcmFwaGljc0NvbnRleHQmLCBJbWFnZSosIGNvbnN0IHZvaWQqLCBjb25zdCBM
YXlvdXRTaXplJik7CisgICAgYm9vbCBzaG91bGRQYWludEF0TG93UXVhbGl0eShHcmFwaGljc0Nv
bnRleHQmLCBJbWFnZSYsIGNvbnN0IHZvaWQqLCBjb25zdCBMYXlvdXRTaXplJik7CiAKICAgICBS
ZW5kZXJCb3hNb2RlbE9iamVjdCogY29udGludWF0aW9uKCkgY29uc3Q7CiAgICAgdm9pZCBzZXRD
b250aW51YXRpb24oUmVuZGVyQm94TW9kZWxPYmplY3QqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbWJlZGRlZE9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyRW1iZWRkZWRPYmplY3QuY3BwCmluZGV4IDg4YjQ1NjRkMzNhZWY3
ZTQ2YTM5MjM3MGQwNjc1MGMzZDYwZDQ5MTQuLmEzZjg4OTFmZDk5N2U4YzJjYTg2ZjUwY2I1ZmZm
NmMxYjAwNTdlZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJF
bWJlZGRlZE9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVt
YmVkZGVkT2JqZWN0LmNwcApAQCAtMTk3LDcgKzE5Nyw3IEBAIHZvaWQgUmVuZGVyRW1iZWRkZWRP
YmplY3Q6OnNldFVuYXZhaWxhYmxlUGx1Z2luSW5kaWNhdG9ySXNQcmVzc2VkKGJvb2wgcHJlc3Nl
ZCkKICAgICByZXBhaW50KCk7CiB9CiAKLXZvaWQgUmVuZGVyRW1iZWRkZWRPYmplY3Q6OnBhaW50
U25hcHNob3RJbWFnZShQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQmIHBh
aW50T2Zmc2V0LCBJbWFnZSogaW1hZ2UpCit2b2lkIFJlbmRlckVtYmVkZGVkT2JqZWN0OjpwYWlu
dFNuYXBzaG90SW1hZ2UoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFBvaW50JiBw
YWludE9mZnNldCwgSW1hZ2UmIGltYWdlKQogewogICAgIExheW91dFVuaXQgY1dpZHRoID0gY29u
dGVudFdpZHRoKCk7CiAgICAgTGF5b3V0VW5pdCBjSGVpZ2h0ID0gY29udGVudEhlaWdodCgpOwpA
QCAtMjE0LDcgKzIxNCw3IEBAIHZvaWQgUmVuZGVyRW1iZWRkZWRPYmplY3Q6OnBhaW50U25hcHNo
b3RJbWFnZShQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0CiAgICAgaWYgKGFsaWdu
ZWRSZWN0LndpZHRoKCkgPD0gMCB8fCBhbGlnbmVkUmVjdC5oZWlnaHQoKSA8PSAwKQogICAgICAg
ICByZXR1cm47CiAKLSAgICBib29sIHVzZUxvd1F1YWxpdHlTY2FsaW5nID0gc2hvdWxkUGFpbnRB
dExvd1F1YWxpdHkoY29udGV4dCwgaW1hZ2UsIGltYWdlLCBhbGlnbmVkUmVjdC5zaXplKCkpOwor
ICAgIGJvb2wgdXNlTG93UXVhbGl0eVNjYWxpbmcgPSBzaG91bGRQYWludEF0TG93UXVhbGl0eShj
b250ZXh0LCBpbWFnZSwgJmltYWdlLCBhbGlnbmVkUmVjdC5zaXplKCkpOwogICAgIEltYWdlT3Jp
ZW50YXRpb25EZXNjcmlwdGlvbiBvcmllbnRhdGlvbkRlc2NyaXB0aW9uKHNob3VsZFJlc3BlY3RJ
bWFnZU9yaWVudGF0aW9uKCkpOwogI2lmIEVOQUJMRShDU1NfSU1BR0VfT1JJRU5UQVRJT04pCiAg
ICAgb3JpZW50YXRpb25EZXNjcmlwdGlvbi5zZXRJbWFnZU9yaWVudGF0aW9uRW51bShzdHlsZSgp
LmltYWdlT3JpZW50YXRpb24oKSk7CkBAIC0yMzksNyArMjM5LDcgQEAgdm9pZCBSZW5kZXJFbWJl
ZGRlZE9iamVjdDo6cGFpbnRDb250ZW50cyhQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5
b3V0UG9pbnQKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKEltYWdlKiBzbmFwc2hvdCA9IGRv
d25jYXN0PEhUTUxQbHVnSW5JbWFnZUVsZW1lbnQ+KHBsdWdJbkVsZW1lbnQpLnNuYXBzaG90SW1h
Z2UoKSkKLSAgICAgICAgcGFpbnRTbmFwc2hvdEltYWdlKHBhaW50SW5mbywgcGFpbnRPZmZzZXQs
IHNuYXBzaG90KTsKKyAgICAgICAgcGFpbnRTbmFwc2hvdEltYWdlKHBhaW50SW5mbywgcGFpbnRP
ZmZzZXQsICpzbmFwc2hvdCk7CiB9CiAKIHZvaWQgUmVuZGVyRW1iZWRkZWRPYmplY3Q6OnBhaW50
KFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbnRPZmZzZXQpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRW1iZWRkZWRPYmplY3Qu
aCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbWJlZGRlZE9iamVjdC5oCmluZGV4
IGJkNjY2OGQzNDhmYzcwYjEwMmE5MjFiZTA5NWQxOTQ1YThkYWUzZDguLjg5NTllMWY1YWZhZWNk
MjcwMjYwMzE2OGJmNzEzOWJkNWM2MDQ2ZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJFbWJlZGRlZE9iamVjdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJFbWJlZGRlZE9iamVjdC5oCkBAIC03Myw3ICs3Myw3IEBAIHByaXZhdGU6CiAg
ICAgdmlydHVhbCBjb25zdCBjaGFyKiByZW5kZXJOYW1lKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1
cm4gIlJlbmRlckVtYmVkZGVkT2JqZWN0IjsgfQogICAgIHZpcnR1YWwgYm9vbCBpc0VtYmVkZGVk
T2JqZWN0KCkgY29uc3Qgb3ZlcnJpZGUgZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQogCi0gICAgdm9p
ZCBwYWludFNuYXBzaG90SW1hZ2UoUGFpbnRJbmZvJiwgY29uc3QgTGF5b3V0UG9pbnQmLCBJbWFn
ZSopOworICAgIHZvaWQgcGFpbnRTbmFwc2hvdEltYWdlKFBhaW50SW5mbyYsIGNvbnN0IExheW91
dFBvaW50JiwgSW1hZ2UmKTsKICAgICB2aXJ0dWFsIHZvaWQgcGFpbnRDb250ZW50cyhQYWludElu
Zm8mLCBjb25zdCBMYXlvdXRQb2ludCYpIG92ZXJyaWRlIGZpbmFsOwogCiAgICAgdmlydHVhbCBi
b29sIHJlcXVpcmVzTGF5ZXIoKSBjb25zdCBvdmVycmlkZSBmaW5hbDsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVySW1hZ2UuY3BwCmluZGV4IDY5YWQyMTQ4ZmE3OWRlYWM2YTI5MmQyNzhj
MTM1NmZiZmE4NWQyNTIuLjFkNDc4YmY2ZmZjODdmZWZmNDc1NTc0MTUyNTI0ZmIxZGM4NzJkYjcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlLmNwcApAQCAtNDI0LDcgKzQy
NCw3IEBAIHZvaWQgUmVuZGVySW1hZ2U6OnBhaW50UmVwbGFjZWQoUGFpbnRJbmZvJiBwYWludElu
Zm8sIGNvbnN0IExheW91dFBvaW50JiBwYWludE9mCiAjaWYgRU5BQkxFKENTU19JTUFHRV9PUklF
TlRBVElPTikKICAgICAgICAgICAgICAgICBvcmllbnRhdGlvbkRlc2NyaXB0aW9uLnNldEltYWdl
T3JpZW50YXRpb25FbnVtKHN0eWxlKCkuaW1hZ2VPcmllbnRhdGlvbigpKTsKICNlbmRpZgotICAg
ICAgICAgICAgICAgIGNvbnRleHQuZHJhd0ltYWdlKGltYWdlLmdldCgpLCBzdHlsZSgpLmNvbG9y
U3BhY2UoKSwgc25hcFJlY3RUb0RldmljZVBpeGVscyhMYXlvdXRSZWN0KHBhaW50T2Zmc2V0ICsg
aW1hZ2VPZmZzZXQsIGltYWdlU2l6ZSksIGRldmljZVNjYWxlRmFjdG9yKSwgb3JpZW50YXRpb25E
ZXNjcmlwdGlvbik7CisgICAgICAgICAgICAgICAgY29udGV4dC5kcmF3SW1hZ2UoKmltYWdlLCBz
dHlsZSgpLmNvbG9yU3BhY2UoKSwgc25hcFJlY3RUb0RldmljZVBpeGVscyhMYXlvdXRSZWN0KHBh
aW50T2Zmc2V0ICsgaW1hZ2VPZmZzZXQsIGltYWdlU2l6ZSksIGRldmljZVNjYWxlRmFjdG9yKSwg
b3JpZW50YXRpb25EZXNjcmlwdGlvbik7CiAgICAgICAgICAgICAgICAgZXJyb3JQaWN0dXJlRHJh
d24gPSB0cnVlOwogICAgICAgICAgICAgfQogCkBAIC01NDgsMTIgKzU0OCwxMiBAQCB2b2lkIFJl
bmRlckltYWdlOjpwYWludEludG9SZWN0KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3Qg
RmxvYXRSZWN0JiByZWN0KQogICAgIEhUTUxJbWFnZUVsZW1lbnQqIGltYWdlRWxlbWVudCA9IGlz
PEhUTUxJbWFnZUVsZW1lbnQ+KGVsZW1lbnQoKSkgPyBkb3duY2FzdDxIVE1MSW1hZ2VFbGVtZW50
PihlbGVtZW50KCkpIDogbnVsbHB0cjsKICAgICBDb21wb3NpdGVPcGVyYXRvciBjb21wb3NpdGVP
cGVyYXRvciA9IGltYWdlRWxlbWVudCA/IGltYWdlRWxlbWVudC0+Y29tcG9zaXRlT3BlcmF0b3Io
KSA6IENvbXBvc2l0ZVNvdXJjZU92ZXI7CiAgICAgSW1hZ2UqIGltYWdlID0gaW1hZ2VSZXNvdXJj
ZSgpLmltYWdlKCkuZ2V0KCk7Ci0gICAgYm9vbCB1c2VMb3dRdWFsaXR5U2NhbGluZyA9IHNob3Vs
ZFBhaW50QXRMb3dRdWFsaXR5KGNvbnRleHQsIGltYWdlLCBpbWFnZSwgTGF5b3V0U2l6ZShyZWN0
LnNpemUoKSkpOworICAgIGJvb2wgdXNlTG93UXVhbGl0eVNjYWxpbmcgPSBpbWFnZSAmJiBzaG91
bGRQYWludEF0TG93UXVhbGl0eShjb250ZXh0LCAqaW1hZ2UsIGltYWdlLCBMYXlvdXRTaXplKHJl
Y3Quc2l6ZSgpKSk7CiAgICAgSW1hZ2VPcmllbnRhdGlvbkRlc2NyaXB0aW9uIG9yaWVudGF0aW9u
RGVzY3JpcHRpb24oc2hvdWxkUmVzcGVjdEltYWdlT3JpZW50YXRpb24oKSk7CiAjaWYgRU5BQkxF
KENTU19JTUFHRV9PUklFTlRBVElPTikKICAgICBvcmllbnRhdGlvbkRlc2NyaXB0aW9uLnNldElt
YWdlT3JpZW50YXRpb25FbnVtKHN0eWxlKCkuaW1hZ2VPcmllbnRhdGlvbigpKTsKICNlbmRpZgot
ICAgIGNvbnRleHQuZHJhd0ltYWdlKGltYWdlUmVzb3VyY2UoKS5pbWFnZShyZWN0LndpZHRoKCks
IHJlY3QuaGVpZ2h0KCkpLmdldCgpLCBzdHlsZSgpLmNvbG9yU3BhY2UoKSwgcmVjdCwKKyAgICBj
b250ZXh0LmRyYXdJbWFnZSgqaW1nLCBzdHlsZSgpLmNvbG9yU3BhY2UoKSwgcmVjdCwKICAgICAg
ICAgSW1hZ2VQYWludGluZ09wdGlvbnMoY29tcG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9kZU5vcm1h
bCwgb3JpZW50YXRpb25EZXNjcmlwdGlvbiwgdXNlTG93UXVhbGl0eVNjYWxpbmcpKTsKIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlUmVzb3VyY2VT
dHlsZUltYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZVJlc291
cmNlU3R5bGVJbWFnZS5jcHAKaW5kZXggNDJiMzdkZGQ2N2YxZDE3ZjUxYzEzMDg4ZDIxNmQ2NDhj
YTY0NmRkMC4uNTFhODZhNmY4MmMwN2UxMjYwOTVhZDA4YzczZjBmYWUwZWVmMmJkNCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlUmVzb3VyY2VTdHlsZUlt
YWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2VSZXNvdXJj
ZVN0eWxlSW1hZ2UuY3BwCkBAIC01NywxNCArNTcsMTQgQEAgdm9pZCBSZW5kZXJJbWFnZVJlc291
cmNlU3R5bGVJbWFnZTo6c2h1dGRvd24oKQogewogICAgIEFTU0VSVChtX3JlbmRlcmVyKTsKICAg
ICBtX3N0eWxlSW1hZ2UtPnJlbW92ZUNsaWVudChtX3JlbmRlcmVyKTsKLSAgICBtX2NhY2hlZElt
YWdlID0gMDsKKyAgICBtX2NhY2hlZEltYWdlID0gbnVsbHB0cjsKIH0KIAogUGFzc1JlZlB0cjxJ
bWFnZT4gUmVuZGVySW1hZ2VSZXNvdXJjZVN0eWxlSW1hZ2U6OmltYWdlKGludCB3aWR0aCwgaW50
IGhlaWdodCkgY29uc3QKIHsKICAgICAvLyBHZW5lcmF0ZWQgY29udGVudCBtYXkgdHJpZ2dlciBj
YWxscyB0byBpbWFnZSgpIHdoaWxlIHdlJ3JlIHN0aWxsIHBlbmRpbmcsIGRvbid0IGFzc2VydCBi
dXQgZ3JhY2VmdWxseSBleGl0LgogICAgIGlmIChtX3N0eWxlSW1hZ2UtPmlzUGVuZGluZ0ltYWdl
KCkpCi0gICAgICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICByZXR1
cm4gbV9zdHlsZUltYWdlLT5pbWFnZShtX3JlbmRlcmVyLCBJbnRTaXplKHdpZHRoLCBoZWlnaHQp
KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAKaW5kZXggMzQ5
OGM3Y2M4NDRhMzQ0M2Q5YTQ0M2RjNjU0NGQ1MGYxMjNhYTFiYS4uMDdhNWFmNzc1N2Q0ZjI2YTIz
NjZiMjUzZTVmYWU3Y2Q4YTQ4NWNhMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckxheWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
TGF5ZXIuY3BwCkBAIC0zNjU1LDEyICszNjU1LDE2IEBAIHZvaWQgUmVuZGVyTGF5ZXI6OmRyYXdQ
bGF0Zm9ybVJlc2l6ZXJJbWFnZShHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IExheW91
CiAgICAgICAgIGNvbnRleHQuc2F2ZSgpOwogICAgICAgICBjb250ZXh0LnRyYW5zbGF0ZShyZXNp
emVyQ29ybmVyUmVjdC54KCkgKyBjb3JuZXJSZXNpemVyU2l6ZS53aWR0aCgpLCByZXNpemVyQ29y
bmVyUmVjdC55KCkgKyByZXNpemVyQ29ybmVyUmVjdC5oZWlnaHQoKSAtIGNvcm5lclJlc2l6ZXJT
aXplLmhlaWdodCgpKTsKICAgICAgICAgY29udGV4dC5zY2FsZShGbG9hdFNpemUoLTEuMCwgMS4w
KSk7Ci0gICAgICAgIGNvbnRleHQuZHJhd0ltYWdlKHJlc2l6ZUNvcm5lckltYWdlLmdldCgpLCBy
ZW5kZXJlcigpLnN0eWxlKCkuY29sb3JTcGFjZSgpLCBGbG9hdFJlY3QoRmxvYXRQb2ludCgpLCBj
b3JuZXJSZXNpemVyU2l6ZSkpOworICAgICAgICBpZiAocmVzaXplQ29ybmVySW1hZ2UpCisgICAg
ICAgICAgICBjb250ZXh0LmRyYXdJbWFnZSgqcmVzaXplQ29ybmVySW1hZ2UsIHJlbmRlcmVyKCku
c3R5bGUoKS5jb2xvclNwYWNlKCksIEZsb2F0UmVjdChGbG9hdFBvaW50KCksIGNvcm5lclJlc2l6
ZXJTaXplKSk7CiAgICAgICAgIGNvbnRleHQucmVzdG9yZSgpOwogICAgICAgICByZXR1cm47CiAg
ICAgfQorICAgIAorICAgIGlmICghcmVzaXplQ29ybmVySW1hZ2UpCisgICAgICAgIHJldHVybjsK
ICAgICBGbG9hdFJlY3QgaW1hZ2VSZWN0ID0gc25hcFJlY3RUb0RldmljZVBpeGVscyhMYXlvdXRS
ZWN0KHJlc2l6ZXJDb3JuZXJSZWN0Lm1heFhNYXhZQ29ybmVyKCkgLSBjb3JuZXJSZXNpemVyU2l6
ZSwgY29ybmVyUmVzaXplclNpemUpLCByZW5kZXJlcigpLmRvY3VtZW50KCkuZGV2aWNlU2NhbGVG
YWN0b3IoKSk7Ci0gICAgY29udGV4dC5kcmF3SW1hZ2UocmVzaXplQ29ybmVySW1hZ2UuZ2V0KCks
IHJlbmRlcmVyKCkuc3R5bGUoKS5jb2xvclNwYWNlKCksIGltYWdlUmVjdCk7CisgICAgY29udGV4
dC5kcmF3SW1hZ2UoKnJlc2l6ZUNvcm5lckltYWdlLCByZW5kZXJlcigpLnN0eWxlKCkuY29sb3JT
cGFjZSgpLCBpbWFnZVJlY3QpOwogfQogCiB2b2lkIFJlbmRlckxheWVyOjpwYWludFJlc2l6ZXIo
R3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbnRPZmZzZXQs
IGNvbnN0IExheW91dFJlY3QmIGRhbWFnZVJlY3QpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyTGlzdE1hcmtlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyTGlzdE1hcmtlci5jcHAKaW5kZXggNDAwN2FhNzBkYzE4NGFmZTI4MjM5NTEzMmZh
OGQyNDA3MjUwMzQ5Yy4uZjZlMzQ2ZDM3YjA1YmE0NmE5ZjY2MDgwNjIwNWI0MjUxYzdiMzUxOSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RNYXJrZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0TWFya2VyLmNwcApAQCAt
MTE5Nyw3ICsxMTk3LDggQEAgdm9pZCBSZW5kZXJMaXN0TWFya2VyOjpwYWludChQYWludEluZm8m
IHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50T2Zmc2UKICAgICBHcmFwaGljc0Nv
bnRleHQmIGNvbnRleHQgPSBwYWludEluZm8uY29udGV4dCgpOwogCiAgICAgaWYgKGlzSW1hZ2Uo
KSkgewotICAgICAgICBjb250ZXh0LmRyYXdJbWFnZShtX2ltYWdlLT5pbWFnZSh0aGlzLCBtYXJr
ZXIuc2l6ZSgpKS5nZXQoKSwgc3R5bGUoKS5jb2xvclNwYWNlKCksIG1hcmtlcik7CisgICAgICAg
IGlmIChSZWZQdHI8SW1hZ2U+IG1hcmtlckltYWdlID0gbV9pbWFnZS0+aW1hZ2UodGhpcywgbWFy
a2VyLnNpemUoKSkpCisgICAgICAgICAgICBjb250ZXh0LmRyYXdJbWFnZSgqbWFya2VySW1hZ2Us
IHN0eWxlKCkuY29sb3JTcGFjZSgpLCBtYXJrZXIpOwogICAgICAgICBpZiAoc2VsZWN0aW9uU3Rh
dGUoKSAhPSBTZWxlY3Rpb25Ob25lKSB7CiAgICAgICAgICAgICBMYXlvdXRSZWN0IHNlbFJlY3Qg
PSBsb2NhbFNlbGVjdGlvblJlY3QoKTsKICAgICAgICAgICAgIHNlbFJlY3QubW92ZUJ5KGJveE9y
aWdpbik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU25hcHNo
b3R0ZWRQbHVnSW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNuYXBzaG90
dGVkUGx1Z0luLmNwcAppbmRleCBiZDFhOWQ1MWQyNWIzZDg5YzQxYTA5MTAyOWE4OTM0ZTFkZDY0
NTBlLi5lYzQyYzYyYzgxMjdjZWQzOGU1NjE2ODRkODdlOGI1MDlmMTliM2M1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU25hcHNob3R0ZWRQbHVnSW4uY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTbmFwc2hvdHRlZFBsdWdJbi5jcHAK
QEAgLTEzNSwxMyArMTM1LDEzIEBAIHZvaWQgUmVuZGVyU25hcHNob3R0ZWRQbHVnSW46OnBhaW50
U25hcHNob3QoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFBvCiAgICAgaWYgKGFs
aWduZWRSZWN0LndpZHRoKCkgPD0gMCB8fCBhbGlnbmVkUmVjdC5oZWlnaHQoKSA8PSAwKQogICAg
ICAgICByZXR1cm47CiAKLSAgICBib29sIHVzZUxvd1F1YWxpdHlTY2FsaW5nID0gc2hvdWxkUGFp
bnRBdExvd1F1YWxpdHkoY29udGV4dCwgaW1hZ2UsIGltYWdlLCBhbGlnbmVkUmVjdC5zaXplKCkp
OworICAgIGJvb2wgdXNlTG93UXVhbGl0eVNjYWxpbmcgPSBzaG91bGRQYWludEF0TG93UXVhbGl0
eShjb250ZXh0LCAqaW1hZ2UsIGltYWdlLCBhbGlnbmVkUmVjdC5zaXplKCkpOwogCiAgICAgSW1h
Z2VPcmllbnRhdGlvbkRlc2NyaXB0aW9uIG9yaWVudGF0aW9uRGVzY3JpcHRpb24oc2hvdWxkUmVz
cGVjdEltYWdlT3JpZW50YXRpb24oKSk7CiAjaWYgRU5BQkxFKENTU19JTUFHRV9PUklFTlRBVElP
TikKICAgICBvcmllbnRhdGlvbkRlc2NyaXB0aW9uLnNldEltYWdlT3JpZW50YXRpb25FbnVtKHN0
eWxlKCkuaW1hZ2VPcmllbnRhdGlvbigpKTsKICNlbmRpZgotICAgIGNvbnRleHQuZHJhd0ltYWdl
KGltYWdlLCBzdHlsZSgpLmNvbG9yU3BhY2UoKSwgYWxpZ25lZFJlY3QsIEltYWdlUGFpbnRpbmdP
cHRpb25zKG9yaWVudGF0aW9uRGVzY3JpcHRpb24sIHVzZUxvd1F1YWxpdHlTY2FsaW5nKSk7Cisg
ICAgY29udGV4dC5kcmF3SW1hZ2UoKmltYWdlLCBzdHlsZSgpLmNvbG9yU3BhY2UoKSwgYWxpZ25l
ZFJlY3QsIEltYWdlUGFpbnRpbmdPcHRpb25zKG9yaWVudGF0aW9uRGVzY3JpcHRpb24sIHVzZUxv
d1F1YWxpdHlTY2FsaW5nKSk7CiB9CiAKIEN1cnNvckRpcmVjdGl2ZSBSZW5kZXJTbmFwc2hvdHRl
ZFBsdWdJbjo6Z2V0Q3Vyc29yKGNvbnN0IExheW91dFBvaW50JiBwb2ludCwgQ3Vyc29yJiBvdmVy
cmlkZUN1cnNvcikgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJUaGVtZU1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZU1h
Yy5tbQppbmRleCBkOGFmM2QyM2U3OThkMDM1ZDZkYzI1OWM0YTE2OTBjZDczNmNjZjkzLi5kYTJk
OWE3MmU1Y2Y5YWRmN2E0MWYxNzkxMzc3OTBhNmNiMWIyMTU0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlclRoZW1lTWFjLm1tCkBAIC0xMTU4LDcgKzExNTgsNyBAQCBib29sIFJl
bmRlclRoZW1lTWFjOjpwYWludFByb2dyZXNzQmFyKGNvbnN0IFJlbmRlck9iamVjdCYgcmVuZGVy
T2JqZWN0LCBjb25zdCBQYQogICAgICAgICBwYWludEluZm8uY29udGV4dCgpLnNjYWxlKEZsb2F0
U2l6ZSgtMSwgMSkpOwogICAgIH0KIAotICAgIHBhaW50SW5mby5jb250ZXh0KCkuZHJhd0ltYWdl
QnVmZmVyKGltYWdlQnVmZmVyLmdldCgpLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBpbmZsYXRlZFJl
Y3QubG9jYXRpb24oKSk7CisgICAgcGFpbnRJbmZvLmNvbnRleHQoKS5kcmF3SW1hZ2VCdWZmZXIo
KmltYWdlQnVmZmVyLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBpbmZsYXRlZFJlY3QubG9jYXRpb24o
KSk7CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCkBAIC0xOTEyLDcgKzE5MTIsNyBAQCBib29sIFJl
bmRlclRoZW1lTWFjOjpwYWludFNuYXBzaG90dGVkUGx1Z2luT3ZlcmxheShjb25zdCBSZW5kZXJP
YmplY3QmIHJlbmRlcmVyLAogICAgIGlmIChhbGlnbmVkUGx1Z2luUmVjdC53aWR0aCgpIDw9IDAg
fHwgYWxpZ25lZFBsdWdpblJlY3QuaGVpZ2h0KCkgPD0gMCkKICAgICAgICAgcmV0dXJuIHRydWU7
CiAKLSAgICBjb250ZXh0LmRyYXdJbWFnZShzbmFwc2hvdCwgcGx1Z0luUmVuZGVyZXIuc3R5bGUo
KS5jb2xvclNwYWNlKCksIGFsaWduZWRQbHVnaW5SZWN0LCBDb21wb3NpdGVTb3VyY2VPdmVyKTsK
KyAgICBjb250ZXh0LmRyYXdJbWFnZSgqc25hcHNob3QsIHBsdWdJblJlbmRlcmVyLnN0eWxlKCku
Y29sb3JTcGFjZSgpLCBhbGlnbmVkUGx1Z2luUmVjdCwgQ29tcG9zaXRlU291cmNlT3Zlcik7CiAg
ICAgcmV0dXJuIGZhbHNlOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc2hhcGVzL1NoYXBlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMvU2hh
cGUuY3BwCmluZGV4IDJkNDc1ODIxZmQyZmM3M2E5NGU2NzUzOTRhZThhNjMwZWE1N2YyZjUuLmUw
Y2FlYWM5Y2Q4MDFhMWI4YjczMGI4ZjRiOWQ3YTZkNzE3ZWJhYWQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMvU2hhcGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zaGFwZXMvU2hhcGUuY3BwCkBAIC0xODQsNyArMTg0LDggQEAgc3RkOjp1bmlx
dWVfcHRyPFNoYXBlPiBTaGFwZTo6Y3JlYXRlUmFzdGVyU2hhcGUoSW1hZ2UqIGltYWdlLCBmbG9h
dCB0aHJlc2hvbGQsIGMKIAogICAgIGlmIChpbWFnZUJ1ZmZlcikgewogICAgICAgICBHcmFwaGlj
c0NvbnRleHQmIGdyYXBoaWNzQ29udGV4dCA9IGltYWdlQnVmZmVyLT5jb250ZXh0KCk7Ci0gICAg
ICAgIGdyYXBoaWNzQ29udGV4dC5kcmF3SW1hZ2UoaW1hZ2UsIENvbG9yU3BhY2VEZXZpY2VSR0Is
IEludFJlY3QoSW50UG9pbnQoKSwgaW1hZ2VSZWN0LnNpemUoKSkpOworICAgICAgICBpZiAoaW1h
Z2UpCisgICAgICAgICAgICBncmFwaGljc0NvbnRleHQuZHJhd0ltYWdlKCppbWFnZSwgQ29sb3JT
cGFjZURldmljZVJHQiwgSW50UmVjdChJbnRQb2ludCgpLCBpbWFnZVJlY3Quc2l6ZSgpKSk7CiAK
ICAgICAgICAgUmVmUHRyPFVpbnQ4Q2xhbXBlZEFycmF5PiBwaXhlbEFycmF5ID0gaW1hZ2VCdWZm
ZXItPmdldFVubXVsdGlwbGllZEltYWdlRGF0YShJbnRSZWN0KEludFBvaW50KCksIGltYWdlUmVj
dC5zaXplKCkpKTsKICAgICAgICAgdW5zaWduZWQgcGl4ZWxBcnJheUxlbmd0aCA9IHBpeGVsQXJy
YXktPmxlbmd0aCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3NoYXBl
cy9TaGFwZU91dHNpZGVJbmZvLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMv
U2hhcGVPdXRzaWRlSW5mby5jcHAKaW5kZXggNjZkMzE4M2NmNDA4ZDc0MmRiMDA4NzczMDExZjkz
MGQ4YWY1MGRkNS4uZGM4NGI5YTUyNjEyNTA1MWQwNDFlOGNjZjAyMWJhMDZiYWE0NzI5OSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3NoYXBlcy9TaGFwZU91dHNpZGVJbmZv
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL1NoYXBlT3V0c2lkZUlu
Zm8uY3BwCkBAIC0xNTgsNyArMTU4LDYgQEAgc3RkOjp1bmlxdWVfcHRyPFNoYXBlPiBTaGFwZU91
dHNpZGVJbmZvOjpjcmVhdGVTaGFwZUZvckltYWdlKFN0eWxlSW1hZ2UqIHN0eWxlSW0KIAogICAg
IEFTU0VSVCghc3R5bGVJbWFnZS0+aXNQZW5kaW5nSW1hZ2UoKSk7CiAgICAgUmVmUHRyPEltYWdl
PiBpbWFnZSA9IHN0eWxlSW1hZ2UtPmltYWdlKGNvbnN0X2Nhc3Q8UmVuZGVyQm94Kj4oJm1fcmVu
ZGVyZXIpLCBpbWFnZVNpemUpOwotCiAgICAgcmV0dXJuIFNoYXBlOjpjcmVhdGVSYXN0ZXJTaGFw
ZShpbWFnZS5nZXQoKSwgc2hhcGVJbWFnZVRocmVzaG9sZCwgaW1hZ2VSZWN0LCBtYXJnaW5SZWN0
LCB3cml0aW5nTW9kZSwgbWFyZ2luKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N0eWxlL05pbmVQaWVjZUltYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdHlsZS9OaW5lUGllY2VJbWFnZS5jcHAKaW5kZXggYWExMWNkZGM5NGJmZGU0NGNhZDdj
NWFmMDhjNDY1MWJmNTkzYmNmNS4uYzkzOWFlNzVkMWRmYmI5M2MyMDBkOTQwY2E2ZDRhMjlhNzZh
NmJkMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL05pbmVQaWVj
ZUltYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvTmluZVBpZWNl
SW1hZ2UuY3BwCkBAIC0yMDYsNiArMjA2LDkgQEAgdm9pZCBOaW5lUGllY2VJbWFnZTo6cGFpbnQo
R3JhcGhpY3NDb250ZXh0JiBncmFwaGljc0NvbnRleHQsIFJlbmRlckVsZW1lbnQqIHJlbmQKICAg
ICBWZWN0b3I8RmxvYXRTaXplPiB0aWxlU2NhbGVzID0gY29tcHV0ZVRpbGVTY2FsZXMoZGVzdGlu
YXRpb25SZWN0cywgc291cmNlUmVjdHMsIGhvcml6b250YWxSdWxlKCksIHZlcnRpY2FsUnVsZSgp
KTsKIAogICAgIFJlZlB0cjxJbWFnZT4gaW1hZ2UgPSBzdHlsZUltYWdlLT5pbWFnZShyZW5kZXJl
ciwgc291cmNlKTsKKyAgICBpZiAoIWltYWdlKQorICAgICAgICByZXR1cm47CisKICAgICBDb2xv
clNwYWNlIGNvbG9yU3BhY2UgPSBzdHlsZS5jb2xvclNwYWNlKCk7CiAKICAgICBmb3IgKEltYWdl
UGllY2UgcGllY2UgPSBNaW5QaWVjZTsgcGllY2UgPCBNYXhQaWVjZTsgKytwaWVjZSkgewpAQCAt
MjEzLDEzICsyMTYsMTMgQEAgdm9pZCBOaW5lUGllY2VJbWFnZTo6cGFpbnQoR3JhcGhpY3NDb250
ZXh0JiBncmFwaGljc0NvbnRleHQsIFJlbmRlckVsZW1lbnQqIHJlbmQKICAgICAgICAgICAgIGNv
bnRpbnVlOwogCiAgICAgICAgIGlmIChpc0Nvcm5lclBpZWNlKHBpZWNlKSkgewotICAgICAgICAg
ICAgZ3JhcGhpY3NDb250ZXh0LmRyYXdJbWFnZShpbWFnZS5nZXQoKSwgY29sb3JTcGFjZSwgZGVz
dGluYXRpb25SZWN0c1twaWVjZV0sIHNvdXJjZVJlY3RzW3BpZWNlXSwgb3ApOworICAgICAgICAg
ICAgZ3JhcGhpY3NDb250ZXh0LmRyYXdJbWFnZSgqaW1hZ2UsIGNvbG9yU3BhY2UsIGRlc3RpbmF0
aW9uUmVjdHNbcGllY2VdLCBzb3VyY2VSZWN0c1twaWVjZV0sIG9wKTsKICAgICAgICAgICAgIGNv
bnRpbnVlOwogICAgICAgICB9CiAKICAgICAgICAgSW1hZ2U6OlRpbGVSdWxlIGhSdWxlID0gaXNI
b3Jpem9udGFsUGllY2UocGllY2UpID8gc3RhdGljX2Nhc3Q8SW1hZ2U6OlRpbGVSdWxlPihob3Jp
em9udGFsUnVsZSgpKSA6IEltYWdlOjpTdHJldGNoVGlsZTsKICAgICAgICAgSW1hZ2U6OlRpbGVS
dWxlIHZSdWxlID0gaXNWZXJ0aWNhbFBpZWNlKHBpZWNlKSA/IHN0YXRpY19jYXN0PEltYWdlOjpU
aWxlUnVsZT4odmVydGljYWxSdWxlKCkpIDogSW1hZ2U6OlN0cmV0Y2hUaWxlOwotICAgICAgICBn
cmFwaGljc0NvbnRleHQuZHJhd1RpbGVkSW1hZ2UoaW1hZ2UuZ2V0KCksIGNvbG9yU3BhY2UsIGRl
c3RpbmF0aW9uUmVjdHNbcGllY2VdLCBzb3VyY2VSZWN0c1twaWVjZV0sIHRpbGVTY2FsZXNbcGll
Y2VdLCBoUnVsZSwgdlJ1bGUsIG9wKTsKKyAgICAgICAgZ3JhcGhpY3NDb250ZXh0LmRyYXdUaWxl
ZEltYWdlKCppbWFnZSwgY29sb3JTcGFjZSwgZGVzdGluYXRpb25SZWN0c1twaWVjZV0sIHNvdXJj
ZVJlY3RzW3BpZWNlXSwgdGlsZVNjYWxlc1twaWVjZV0sIGhSdWxlLCB2UnVsZSwgb3ApOwogICAg
IH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJT
VkdJbWFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0ltYWdl
LmNwcAppbmRleCBiOGExOTZlOTUxMzcwMWQ1NmFiZWE2YjkyY2ZhZDRlZDMwM2FjMzg0Li5lZjc1
N2U3MzYzZjM0OGRiZGZmYTUyZmNjZGU4YWQyY2MwMmI3MzU2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0ltYWdlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0ltYWdlLmNwcApAQCAtMTYxLDEyICsxNjEsMTUg
QEAgdm9pZCBSZW5kZXJTVkdJbWFnZTo6cGFpbnQoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0
IExheW91dFBvaW50JikKIHZvaWQgUmVuZGVyU1ZHSW1hZ2U6OnBhaW50Rm9yZWdyb3VuZChQYWlu
dEluZm8mIHBhaW50SW5mbykKIHsKICAgICBSZWZQdHI8SW1hZ2U+IGltYWdlID0gaW1hZ2VSZXNv
dXJjZSgpLmltYWdlKCk7CisgICAgaWYgKCFpbWFnZSkKKyAgICAgICAgcmV0dXJuOworCiAgICAg
RmxvYXRSZWN0IGRlc3RSZWN0ID0gbV9vYmplY3RCb3VuZGluZ0JveDsKICAgICBGbG9hdFJlY3Qg
c3JjUmVjdCgwLCAwLCBpbWFnZS0+d2lkdGgoKSwgaW1hZ2UtPmhlaWdodCgpKTsKIAogICAgIGlt
YWdlRWxlbWVudCgpLnByZXNlcnZlQXNwZWN0UmF0aW8oKS50cmFuc2Zvcm1SZWN0KGRlc3RSZWN0
LCBzcmNSZWN0KTsKIAotICAgIHBhaW50SW5mby5jb250ZXh0KCkuZHJhd0ltYWdlKGltYWdlLmdl
dCgpLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBkZXN0UmVjdCwgc3JjUmVjdCk7CisgICAgcGFpbnRJ
bmZvLmNvbnRleHQoKS5kcmF3SW1hZ2UoKmltYWdlLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBkZXN0
UmVjdCwgc3JjUmVjdCk7CiB9CiAKIHZvaWQgUmVuZGVyU1ZHSW1hZ2U6OmludmFsaWRhdGVCdWZm
ZXJlZEZvcmVncm91bmQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2
Zy9SZW5kZXJTVkdSZXNvdXJjZUZpbHRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3ZnL1JlbmRlclNWR1Jlc291cmNlRmlsdGVyLmNwcAppbmRleCBjM2VkYTI5OWRiZTVhYTg0OTVj
ZDNlODdjY2ZlNGM4ODllNjg3MmIzLi4wZmQ1ZDYzZTI0ZjI1NzUzZDZlMmM1ZTRiNzMwNGZjMjI0
OWExYzYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNW
R1Jlc291cmNlRmlsdGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1Jl
bmRlclNWR1Jlc291cmNlRmlsdGVyLmNwcApAQCAtMjcwLDcgKzI3MCw3IEBAIHZvaWQgUmVuZGVy
U1ZHUmVzb3VyY2VGaWx0ZXI6OnBvc3RBcHBseVJlc291cmNlKFJlbmRlckVsZW1lbnQmIHJlbmRl
cmVyLCBHcmFwaGljCiAgICAgICAgICAgICBjb250ZXh0LT5jb25jYXRDVE0oZmlsdGVyRGF0YS0+
c2hlYXJGcmVlQWJzb2x1dGVUcmFuc2Zvcm0uaW52ZXJzZSgpKTsKIAogICAgICAgICAgICAgY29u
dGV4dC0+c2NhbGUoRmxvYXRTaXplKDEgLyBmaWx0ZXJEYXRhLT5maWx0ZXItPmZpbHRlclJlc29s
dXRpb24oKS53aWR0aCgpLCAxIC8gZmlsdGVyRGF0YS0+ZmlsdGVyLT5maWx0ZXJSZXNvbHV0aW9u
KCkuaGVpZ2h0KCkpKTsKLSAgICAgICAgICAgIGNvbnRleHQtPmRyYXdJbWFnZUJ1ZmZlcihyZXN1
bHRJbWFnZSwgcmVuZGVyZXIuc3R5bGUoKS5jb2xvclNwYWNlKCksIGxhc3RFZmZlY3QtPmFic29s
dXRlUGFpbnRSZWN0KCkpOworICAgICAgICAgICAgY29udGV4dC0+ZHJhd0ltYWdlQnVmZmVyKCpy
ZXN1bHRJbWFnZSwgcmVuZGVyZXIuc3R5bGUoKS5jb2xvclNwYWNlKCksIGxhc3RFZmZlY3QtPmFi
c29sdXRlUGFpbnRSZWN0KCkpOwogICAgICAgICAgICAgY29udGV4dC0+c2NhbGUoZmlsdGVyRGF0
YS0+ZmlsdGVyLT5maWx0ZXJSZXNvbHV0aW9uKCkpOwogCiAgICAgICAgICAgICBjb250ZXh0LT5j
b25jYXRDVE0oZmlsdGVyRGF0YS0+c2hlYXJGcmVlQWJzb2x1dGVUcmFuc2Zvcm0pOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdSZW5kZXJpbmdDb250ZXh0LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHUmVuZGVyaW5nQ29udGV4dC5jcHAK
aW5kZXggODliOGUzOGVlODUxNTVhMmIwODc3ZDdkNWZlNzQ1YzhlZjFlYzE4Yy4uZDAyZWU1MGJk
NmNhMzdlNjBhNTJlZDRmNjgwNDZlZmY5MDgxYThiYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N2Zy9TVkdSZW5kZXJpbmdDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3ZnL1NWR1JlbmRlcmluZ0NvbnRleHQuY3BwCkBAIC0zMDksMTQgKzMw
OSwxNSBAQCB2b2lkIFNWR1JlbmRlcmluZ0NvbnRleHQ6OnJlbmRlclN1YnRyZWVUb0ltYWdlQnVm
ZmVyKEltYWdlQnVmZmVyKiBpbWFnZSwgUmVuZGVyRQogCiB2b2lkIFNWR1JlbmRlcmluZ0NvbnRl
eHQ6OmNsaXBUb0ltYWdlQnVmZmVyKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgQWZm
aW5lVHJhbnNmb3JtJiBhYnNvbHV0ZVRyYW5zZm9ybSwgY29uc3QgRmxvYXRSZWN0JiB0YXJnZXRS
ZWN0LCBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+JiBpbWFnZUJ1ZmZlciwgYm9vbCBzYWZl
VG9DbGVhcikKIHsKLSAgICBBU1NFUlQoaW1hZ2VCdWZmZXIpOworICAgIGlmICghaW1hZ2VCdWZm
ZXIpCisgICAgICAgIHJldHVybjsKIAogICAgIEZsb2F0UmVjdCBhYnNvbHV0ZVRhcmdldFJlY3Qg
PSBjYWxjdWxhdGVJbWFnZUJ1ZmZlclJlY3QodGFyZ2V0UmVjdCwgYWJzb2x1dGVUcmFuc2Zvcm0p
OwogCiAgICAgLy8gVGhlIG1hc2sgaW1hZ2UgaGFzIGJlZW4gY3JlYXRlZCBpbiB0aGUgYWJzb2x1
dGUgY29vcmRpbmF0ZSBzcGFjZSwgYXMgdGhlIGltYWdlIHNob3VsZCBub3QgYmUgc2NhbGVkLgog
ICAgIC8vIFNvIHRoZSBhY3R1YWwgbWFza2luZyBwcm9jZXNzIGhhcyB0byBiZSBkb25lIGluIHRo
ZSBhYnNvbHV0ZSBjb29yZGluYXRlIHNwYWNlIGFzIHdlbGwuCiAgICAgY29udGV4dC5jb25jYXRD
VE0oYWJzb2x1dGVUcmFuc2Zvcm0uaW52ZXJzZSgpKTsKLSAgICBjb250ZXh0LmNsaXBUb0ltYWdl
QnVmZmVyKGltYWdlQnVmZmVyLmdldCgpLCBhYnNvbHV0ZVRhcmdldFJlY3QpOworICAgIGNvbnRl
eHQuY2xpcFRvSW1hZ2VCdWZmZXIoKmltYWdlQnVmZmVyLCBhYnNvbHV0ZVRhcmdldFJlY3QpOwog
ICAgIGNvbnRleHQuY29uY2F0Q1RNKGFic29sdXRlVHJhbnNmb3JtKTsKIAogICAgIC8vIFdoZW4g
bmVzdGluZyByZXNvdXJjZXMsIHdpdGggb2JqZWN0Qm91bmRpbmdCb3ggYXMgY29udGVudCB1bml0
IHR5cGVzLCB0aGVyZSdzIG5vIHVzZSBpbiBjYWNoaW5nIHRoZQpAQCAtMzYwLDcgKzM2MSw3IEBA
IGJvb2wgU1ZHUmVuZGVyaW5nQ29udGV4dDo6YnVmZmVyRm9yZWdyb3VuZChzdGQ6OnVuaXF1ZV9w
dHI8SW1hZ2VCdWZmZXI+JiBpbWFnZUJ1CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAg
fQogCi0gICAgbV9wYWludEluZm8tPmNvbnRleHQoKS5kcmF3SW1hZ2VCdWZmZXIoaW1hZ2VCdWZm
ZXIuZ2V0KCksIENvbG9yU3BhY2VEZXZpY2VSR0IsIGJvdW5kaW5nQm94KTsKKyAgICBtX3BhaW50
SW5mby0+Y29udGV4dCgpLmRyYXdJbWFnZUJ1ZmZlcigqaW1hZ2VCdWZmZXIsIENvbG9yU3BhY2VE
ZXZpY2VSR0IsIGJvdW5kaW5nQm94KTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVJbWFnZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRUltYWdlLmNwcAppbmRleCBm
MDcyNTE4ZjQ0MTc1MTFjNzkxMzkwZTk5NjI3ZjViNWQxN2U0OGIxLi42NjE4Y2Y1NDg0ZTQ5ZWUy
MWNjY2Y2Nzg5NGQwMDJmNjBlMTdlODA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcv
Z3JhcGhpY3MvZmlsdGVycy9TVkdGRUltYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcv
Z3JhcGhpY3MvZmlsdGVycy9TVkdGRUltYWdlLmNwcApAQCAtMTM1LDcgKzEzNSw3IEBAIHZvaWQg
RkVJbWFnZTo6cGxhdGZvcm1BcHBseVNvZnR3YXJlKCkKICAgICAgICAgcmV0dXJuOwogICAgIH0K
IAotICAgIHJlc3VsdEltYWdlLT5jb250ZXh0KCkuZHJhd0ltYWdlKG1faW1hZ2UuZ2V0KCksIENv
bG9yU3BhY2VEZXZpY2VSR0IsIGRlc3RSZWN0LCBzcmNSZWN0KTsKKyAgICByZXN1bHRJbWFnZS0+
Y29udGV4dCgpLmRyYXdJbWFnZSgqbV9pbWFnZSwgQ29sb3JTcGFjZURldmljZVJHQiwgZGVzdFJl
Y3QsIHNyY1JlY3QpOwogfQogCiB2b2lkIEZFSW1hZ2U6OmR1bXAoKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvU2hhcmVkL0NvbnRleHRNZW51Q29udGV4dERhdGEuY3BwIGIvU291cmNlL1dl
YktpdDIvU2hhcmVkL0NvbnRleHRNZW51Q29udGV4dERhdGEuY3BwCmluZGV4IDUzZmNkMjMxODU5
OTUzNzJlNWY0ZmI3YjYyNDFjODNkZjAxZWQwNGIuLjczMjM0ZTVmNzkzZGEzODU5OTQxYTlkYzc3
NDllNzQyNzhhMGU0ZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Db250ZXh0
TWVudUNvbnRleHREYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ29udGV4dE1l
bnVDb250ZXh0RGF0YS5jcHAKQEAgLTU4LDcgKzU4LDcgQEAgQ29udGV4dE1lbnVDb250ZXh0RGF0
YTo6Q29udGV4dE1lbnVDb250ZXh0RGF0YShjb25zdCBDb250ZXh0TWVudUNvbnRleHQmIGNvbnRl
eHQKIAogICAgIC8vIEZJWE1FOiBmaWd1cmUgb3V0IHRoZSByb3VuZGluZyBzdGFydGVneSBmb3Ig
U2hhcmVhYmxlQml0bWFwLgogICAgIG1fY29udHJvbGxlZEltYWdlID0gU2hhcmVhYmxlQml0bWFw
OjpjcmVhdGVTaGFyZWFibGUoSW50U2l6ZShpbWFnZS0+c2l6ZSgpKSwgU2hhcmVhYmxlQml0bWFw
OjpTdXBwb3J0c0FscGhhKTsKLSAgICBtX2NvbnRyb2xsZWRJbWFnZS0+Y3JlYXRlR3JhcGhpY3ND
b250ZXh0KCktPmRyYXdJbWFnZShpbWFnZSwgQ29sb3JTcGFjZURldmljZVJHQiwgSW50UG9pbnQo
KSk7CisgICAgbV9jb250cm9sbGVkSW1hZ2UtPmNyZWF0ZUdyYXBoaWNzQ29udGV4dCgpLT5kcmF3
SW1hZ2UoKmltYWdlLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBJbnRQb2ludCgpKTsKICNlbmRpZgog
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29k
ZXJzLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3Bw
CmluZGV4IDcxZGMzZDRlNTFmMmFkYzVhYWZhMGYyMzA1MDAxYWI4YTRlOGQ5ZWYuLmRkNmU1Nzdl
MmNkNDVhMzk2ZWRjZjE0ZDZlNmU2N2M1Zjg5ZmZkYWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwCkBAIC03MjEsOSArNzIxLDkgQEAgYm9v
bCBBcmd1bWVudENvZGVyPENyZWRlbnRpYWw+OjpkZWNvZGUoQXJndW1lbnREZWNvZGVyJiBkZWNv
ZGVyLCBDcmVkZW50aWFsJiBjcmUKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotc3RhdGljIHZvaWQg
ZW5jb2RlSW1hZ2UoQXJndW1lbnRFbmNvZGVyJiBlbmNvZGVyLCBJbWFnZSogaW1hZ2UpCitzdGF0
aWMgdm9pZCBlbmNvZGVJbWFnZShBcmd1bWVudEVuY29kZXImIGVuY29kZXIsIEltYWdlJiBpbWFn
ZSkKIHsKLSAgICBSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBiaXRtYXAgPSBTaGFyZWFibGVCaXRt
YXA6OmNyZWF0ZVNoYXJlYWJsZShJbnRTaXplKGltYWdlLT5zaXplKCkpLCBTaGFyZWFibGVCaXRt
YXA6OlN1cHBvcnRzQWxwaGEpOworICAgIFJlZlB0cjxTaGFyZWFibGVCaXRtYXA+IGJpdG1hcCA9
IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlU2hhcmVhYmxlKEludFNpemUoaW1hZ2Uuc2l6ZSgpKSwg
U2hhcmVhYmxlQml0bWFwOjpTdXBwb3J0c0FscGhhKTsKICAgICBiaXRtYXAtPmNyZWF0ZUdyYXBo
aWNzQ29udGV4dCgpLT5kcmF3SW1hZ2UoaW1hZ2UsIENvbG9yU3BhY2VEZXZpY2VSR0IsIEludFBv
aW50KCkpOwogCiAgICAgU2hhcmVhYmxlQml0bWFwOjpIYW5kbGUgaGFuZGxlOwpAQCAtNzUzLDcg
Kzc1Myw3IEBAIHN0YXRpYyB2b2lkIGVuY29kZU9wdGlvbmFsSW1hZ2UoQXJndW1lbnRFbmNvZGVy
JiBlbmNvZGVyLCBJbWFnZSogaW1hZ2UpCiAgICAgZW5jb2RlciA8PCBoYXNJbWFnZTsKIAogICAg
IGlmIChoYXNJbWFnZSkKLSAgICAgICAgZW5jb2RlSW1hZ2UoZW5jb2RlciwgaW1hZ2UpOworICAg
ICAgICBlbmNvZGVJbWFnZShlbmNvZGVyLCAqaW1hZ2UpOwogfQogCiBzdGF0aWMgYm9vbCBkZWNv
ZGVPcHRpb25hbEltYWdlKEFyZ3VtZW50RGVjb2RlciYgZGVjb2RlciwgUmVmUHRyPEltYWdlPiYg
aW1hZ2UpCkBAIC03ODQsNyArNzg0LDcgQEAgdm9pZCBBcmd1bWVudENvZGVyPEN1cnNvcj46OmVu
Y29kZShBcmd1bWVudEVuY29kZXImIGVuY29kZXIsIGNvbnN0IEN1cnNvciYgY3Vyc28KICAgICB9
CiAKICAgICBlbmNvZGVyIDw8IHRydWU7Ci0gICAgZW5jb2RlSW1hZ2UoZW5jb2RlciwgY3Vyc29y
LmltYWdlKCkpOworICAgIGVuY29kZUltYWdlKGVuY29kZXIsICpjdXJzb3IuaW1hZ2UoKSk7CiAg
ICAgZW5jb2RlciA8PCBjdXJzb3IuaG90U3BvdCgpOwogI2lmIEVOQUJMRShNT1VTRV9DVVJTT1Jf
U0NBTEUpCiAgICAgZW5jb2RlciA8PCBjdXJzb3IuaW1hZ2VTY2FsZUZhY3RvcigpOwpAQCAtMTI1
Myw3ICsxMjUzLDcgQEAgYm9vbCBBcmd1bWVudENvZGVyPFBhc3RlYm9hcmRXZWJDb250ZW50Pjo6
ZGVjb2RlKEFyZ3VtZW50RGVjb2RlciYgZGVjb2RlciwgUGFzdGUKIAogdm9pZCBBcmd1bWVudENv
ZGVyPFBhc3RlYm9hcmRJbWFnZT46OmVuY29kZShBcmd1bWVudEVuY29kZXImIGVuY29kZXIsIGNv
bnN0IFBhc3RlYm9hcmRJbWFnZSYgcGFzdGVib2FyZEltYWdlKQogewotICAgIGVuY29kZUltYWdl
KGVuY29kZXIsIHBhc3RlYm9hcmRJbWFnZS5pbWFnZS5nZXQoKSk7CisgICAgZW5jb2RlT3B0aW9u
YWxJbWFnZShlbmNvZGVyLCBwYXN0ZWJvYXJkSW1hZ2UuaW1hZ2UuZ2V0KCkpOwogICAgIGVuY29k
ZXIgPDwgcGFzdGVib2FyZEltYWdlLnVybC51cmw7CiAgICAgZW5jb2RlciA8PCBwYXN0ZWJvYXJk
SW1hZ2UudXJsLnRpdGxlOwogICAgIGVuY29kZXIgPDwgcGFzdGVib2FyZEltYWdlLnJlc291cmNl
TUlNRVR5cGU7CkBAIC0xMjYzLDcgKzEyNjMsNyBAQCB2b2lkIEFyZ3VtZW50Q29kZXI8UGFzdGVi
b2FyZEltYWdlPjo6ZW5jb2RlKEFyZ3VtZW50RW5jb2RlciYgZW5jb2RlciwgY29uc3QgUGFzdAog
CiBib29sIEFyZ3VtZW50Q29kZXI8UGFzdGVib2FyZEltYWdlPjo6ZGVjb2RlKEFyZ3VtZW50RGVj
b2RlciYgZGVjb2RlciwgUGFzdGVib2FyZEltYWdlJiBwYXN0ZWJvYXJkSW1hZ2UpCiB7Ci0gICAg
aWYgKCFkZWNvZGVJbWFnZShkZWNvZGVyLCBwYXN0ZWJvYXJkSW1hZ2UuaW1hZ2UpKQorICAgIGlm
ICghZGVjb2RlT3B0aW9uYWxJbWFnZShkZWNvZGVyLCBwYXN0ZWJvYXJkSW1hZ2UuaW1hZ2UpKQog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShwYXN0ZWJvYXJk
SW1hZ2UudXJsLnVybCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHAgYi9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwCmluZGV4IGNjY2I4YjZhZGQ0Njk5NzNi
ZGU0NTY2YmU4NjkxNDdmOGYwODY4YTQuLmY4MDBjMjJmY2Y1MmM3YjM2NjY4MTRkZGEyNmI3NDQy
YTFjNjQwYjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJGcmFtZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZy
YW1lLmNwcApAQCAtODM4LDcgKzgzOCw3IEBAIFBhc3NSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBX
ZWJGcmFtZTo6Y3JlYXRlU2VsZWN0aW9uU25hcHNob3QoKSBjb25zdAogICAgIGF1dG8gZ3JhcGhp
Y3NDb250ZXh0ID0gc2hhcmVkU25hcHNob3QtPmNyZWF0ZUdyYXBoaWNzQ29udGV4dCgpOwogICAg
IGZsb2F0IGRldmljZVNjYWxlRmFjdG9yID0gY29yZUZyYW1lKCktPnBhZ2UoKS0+ZGV2aWNlU2Nh
bGVGYWN0b3IoKTsKICAgICBncmFwaGljc0NvbnRleHQtPnNjYWxlKEZsb2F0U2l6ZShkZXZpY2VT
Y2FsZUZhY3RvciwgZGV2aWNlU2NhbGVGYWN0b3IpKTsKLSAgICBncmFwaGljc0NvbnRleHQtPmRy
YXdJbWFnZUJ1ZmZlcihzbmFwc2hvdC5nZXQoKSwgQ29sb3JTcGFjZURldmljZVJHQiwgRmxvYXRQ
b2ludCgpKTsKKyAgICBncmFwaGljc0NvbnRleHQtPmRyYXdJbWFnZUJ1ZmZlcigqc25hcHNob3Qs
IENvbG9yU3BhY2VEZXZpY2VSR0IsIEZsb2F0UG9pbnQoKSk7CiAKICAgICByZXR1cm4gc2hhcmVk
U25hcHNob3QucmVsZWFzZSgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJQYWdlL2lvcy9GaW5kQ29udHJvbGxlcklPUy5tbSBiL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUGFnZS9pb3MvRmluZENvbnRyb2xsZXJJT1MubW0KaW5kZXggY2U1MjIyMTcy
MWY0NDJiNjY3MGQyZWEwZThlYjA1OWEzNTJiNTkyNS4uZGJhMmQwNThjYTU5MjVjMTA4ZDAzZjlm
NmVkNTk4MGJjMTBhNmQ0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJQYWdlL2lvcy9GaW5kQ29udHJvbGxlcklPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYlBhZ2UvaW9zL0ZpbmRDb250cm9sbGVySU9TLm1tCkBAIC04Myw3ICs4Myw3IEBA
IHZvaWQgRmluZEluZGljYXRvck92ZXJsYXlDbGllbnRJT1M6OmRyYXdSZWN0KFBhZ2VPdmVybGF5
JiBvdmVybGF5LCBHcmFwaGljc0NvbnRlCiAgICAgZm9yIChjb25zdCBhdXRvJiBwYXRoIDogcGF0
aHMpCiAgICAgICAgIGNvbnRleHQuZmlsbFBhdGgocGF0aCk7CiAKLSAgICBjb250ZXh0LmRyYXdJ
bWFnZShpbmRpY2F0b3JJbWFnZSwgQ29sb3JTcGFjZURldmljZVJHQiwgb3ZlcmxheS5ib3VuZHMo
KSk7CisgICAgY29udGV4dC5kcmF3SW1hZ2UoKmluZGljYXRvckltYWdlLCBDb2xvclNwYWNlRGV2
aWNlUkdCLCBvdmVybGF5LmJvdW5kcygpKTsKIH0KIAogYm9vbCBGaW5kQ29udHJvbGxlcjo6dXBk
YXRlRmluZEluZGljYXRvcihGcmFtZSYgc2VsZWN0ZWRGcmFtZSwgYm9vbCBpc1Nob3dpbmdPdmVy
bGF5LCBib29sIHNob3VsZEFuaW1hdGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0gYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0KaW5kZXggYjMwYjU0ZjUyMzhlMGY2MDNiNjRh
YWU2MDM2YzliZDk4Yzc2ZjZmMS4uMmRjYWZlMWQzYzAzNDVjZTRmNmM5OTZmMjBmN2Q0MDdiZTc4
ZTA1MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9X
ZWJQYWdlSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9pb3Mv
V2ViUGFnZUlPUy5tbQpAQCAtMjIxOCw3ICsyMjE4LDcgQEAgdm9pZCBXZWJQYWdlOjpnZXRQb3Np
dGlvbkluZm9ybWF0aW9uKGNvbnN0IEludFBvaW50JiBwb2ludCwgSW50ZXJhY3Rpb25JbmZvcm1h
dGkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRmxvYXRTaXplIGJpdG1hcFNpemUg
PSBzY2FsZWRTaXplLndpZHRoKCkgPCBpbWFnZS0+c2l6ZSgpLndpZHRoKCkgPyBzY2FsZWRTaXpl
IDogaW1hZ2UtPnNpemUoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKFJl
ZlB0cjxTaGFyZWFibGVCaXRtYXA+IHNoYXJlZEJpdG1hcCA9IFNoYXJlYWJsZUJpdG1hcDo6Y3Jl
YXRlU2hhcmVhYmxlKEludFNpemUoYml0bWFwU2l6ZSksIFNoYXJlYWJsZUJpdG1hcDo6U3VwcG9y
dHNBbHBoYSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF1dG8gZ3Jh
cGhpY3NDb250ZXh0ID0gc2hhcmVkQml0bWFwLT5jcmVhdGVHcmFwaGljc0NvbnRleHQoKTsKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdyYXBoaWNzQ29udGV4dC0+ZHJhd0lt
YWdlKGltYWdlLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBGbG9hdFJlY3QoMCwgMCwgYml0bWFwU2l6
ZS53aWR0aCgpLCBiaXRtYXBTaXplLmhlaWdodCgpKSk7CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBncmFwaGljc0NvbnRleHQtPmRyYXdJbWFnZSgqaW1hZ2UsIENvbG9yU3Bh
Y2VEZXZpY2VSR0IsIEZsb2F0UmVjdCgwLCAwLCBiaXRtYXBTaXplLndpZHRoKCksIGJpdG1hcFNp
emUuaGVpZ2h0KCkpKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZm8u
aW1hZ2UgPSBzaGFyZWRCaXRtYXA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0K
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>263050</attachid>
            <date>2015-10-13 18:43:58 -0700</date>
            <delta_ts>2015-10-13 20:07:52 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-150108-20151013184321.patch</filename>
            <type>text/plain</type>
            <size>100386</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTkxMDE3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDc1YTMwZTUzMWQwNjcz
MTZmYjZiYjJmNDc3YzM5MWVmOTNmMDYwZC4uMGZhZTc4N2UyNjJhM2RmYzYzZjk5YWE4NmE0ZWY3
ZmJlYzk3MDViZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDEzMSBAQAogMjAxNS0xMC0xMyAgU2lt
b24gRnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KIAorICAgICAgICBDaGFuZ2UgR3Jh
cGhpY3NDb250ZXh0IGltYWdlLWRyYXdpbmcgZnVuY3Rpb25zIHRvIHRha2UgcmVmZXJlbmNlcwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUwMTA4CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgVGltIEhvcnRvbi4KKworICAgICAgICBDaGFuZ2UgR3JhcGhp
Y3NDb250ZXh0OjpkcmF3SW1hZ2UoKSwgZHJhd1RpbGVkSW1hZ2UoKSwgZHJhd0ltYWdlQnVmZmVy
KCksIGNsaXBUb0ltYWdlQnVmZmVyKCkKKyAgICAgICAgYW5kIGlzQ29tcGF0aWJsZVdpdGhCdWZm
ZXIoKSB0byB0YWtlIHJlZmVyZW5jZXMsIGFuZCBhZGp1c3QgY2FsbGluZyBjb2RlLCBhZGRpbmcK
KyAgICAgICAgbnVsbC1jaGVja3Mgd2hlcmUgbmVjZXNzYXJ5LgorICAgICAgICAKKyAgICAgICAg
Tm8gYmVoYXZpb3IgY2hhbmdlLgorCisgICAgICAgICogY3NzL0NTU0Nyb3NzZmFkZVZhbHVlLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU0Nyb3NzZmFkZVZhbHVlOjppbWFnZSk6CisgICAgICAg
ICogY3NzL0NTU0ZpbHRlckltYWdlVmFsdWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTRmls
dGVySW1hZ2VWYWx1ZTo6aW1hZ2UpOgorICAgICAgICAqIGh0bWwvSFRNTENhbnZhc0VsZW1lbnQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTENhbnZhc0VsZW1lbnQ6OnBhaW50KToKKyAgICAg
ICAgKiBodG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpkcmF3SW1hZ2UpOgorICAgICAgICAo
V2ViQ29yZTo6Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpjb21wb3NpdGVCdWZmZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6ZHJhd0ltYWdlVG9Db250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkNh
bnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6ZnVsbENhbnZhc0NvbXBvc2l0ZWREcmF3SW1hZ2UpOgor
ICAgICAgICAoV2ViQ29yZTo6Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpkcmF3VGV4dEludGVy
bmFsKToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuaDoK
KyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTDJSZW5kZXJpbmdDb250ZXh0LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OldlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OnRleFN1YkltYWdlMkQpOgorICAg
ICAgICAqIGh0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnRleFN1YkltYWdlMkQpOgorICAgICAgICAq
IGh0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6ZHJhd0ltYWdlSW50b0J1ZmZlcik6Cisg
ICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp0ZXhJbWFnZTJEKToK
KyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmg6CisgICAg
ICAgICogcGxhdGZvcm0vU2Nyb2xsVmlldy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxW
aWV3OjpwYWludFBhblNjcm9sbEljb24pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0Ny
b3NzZmFkZUdlbmVyYXRlZEltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNyb3NzZmFkZUdl
bmVyYXRlZEltYWdlOjpDcm9zc2ZhZGVHZW5lcmF0ZWRJbWFnZSk6CisgICAgICAgIChXZWJDb3Jl
OjpkcmF3Q3Jvc3NmYWRlU3ViaW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6Q3Jvc3NmYWRlR2Vu
ZXJhdGVkSW1hZ2U6OmRyYXdDcm9zc2ZhZGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L0Nyb3NzZmFkZUdlbmVyYXRlZEltYWdlLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
R3JhZGllbnRJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFkaWVudEltYWdlOjpkcmF3
UGF0dGVybik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6ZHJhd0ltYWdlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6ZHJhd1RpbGVkSW1hZ2UpOgorICAgICAgICAo
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpkcmF3SW1hZ2VCdWZmZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6R3JhcGhpY3NDb250ZXh0OjpjbGlwVG9JbWFnZUJ1ZmZlcik6CisgICAgICAgIChXZWJD
b3JlOjpHcmFwaGljc0NvbnRleHQ6OmlzQ29tcGF0aWJsZVdpdGhCdWZmZXIpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL1NoYWRvd0JsdXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2hhZG93Qmx1cjo6
ZHJhd1NoYWRvd0J1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpTaGFkb3dCbHVyOjpkcmF3UmVj
dFNoYWRvd1dpdGhvdXRUaWxpbmcpOgorICAgICAgICAoV2ViQ29yZTo6U2hhZG93Qmx1cjo6ZHJh
d0luc2V0U2hhZG93V2l0aG91dFRpbGluZyk6CisgICAgICAgIChXZWJDb3JlOjpTaGFkb3dCbHVy
OjpkcmF3SW5zZXRTaGFkb3dXaXRoVGlsaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlNoYWRvd0Js
dXI6OmRyYXdSZWN0U2hhZG93V2l0aFRpbGluZyk6CisgICAgICAgIChXZWJDb3JlOjpTaGFkb3dC
bHVyOjpkcmF3TGF5ZXJQaWVjZXMpOgorICAgICAgICAoV2ViQ29yZTo6U2hhZG93Qmx1cjo6ZW5k
U2hhZG93TGF5ZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVm
ZmVyQ2Fpcm8uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXI6OmRyYXcpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL1BERkRvY3VtZW50SW1hZ2UuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6UERGRG9jdW1lbnRJbWFnZTo6ZHJhdyk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvZmlsdGVycy9GRUJsZW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZFQmxlbmQ6
OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmls
dGVycy9GRUNvbG9yTWF0cml4LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZFQ29sb3JNYXRyaXg6
OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmls
dGVycy9GRUNvbXBvc2l0ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGRUNvbXBvc2l0ZTo6cGxh
dGZvcm1BcHBseVNvZnR3YXJlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJz
L0ZFRHJvcFNoYWRvdy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGRURyb3BTaGFkb3c6OnBsYXRm
b3JtQXBwbHlTb2Z0d2FyZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9G
RU1lcmdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZFTWVyZ2U6OnBsYXRmb3JtQXBwbHlTb2Z0
d2FyZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRU9mZnNldC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpGRU9mZnNldDo6cGxhdGZvcm1BcHBseVNvZnR3YXJlKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFVGlsZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpGRVRpbGU6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZSk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvZmlsdGVycy9Tb3VyY2VBbHBoYS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpT
b3VyY2VBbHBoYTo6cGxhdGZvcm1BcHBseVNvZnR3YXJlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9maWx0ZXJzL1NvdXJjZUdyYXBoaWMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U291
cmNlR3JhcGhpYzo6cGxhdGZvcm1BcHBseVNvZnR3YXJlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9t
YWMvVGhlbWVNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpUaGVtZU1hYzo6ZHJhd0NlbGxPckZv
Y3VzUmluZ1dpdGhWaWV3SW50b0NvbnRleHQpOgorICAgICAgICAqIHJlbmRlcmluZy9GaWx0ZXJF
ZmZlY3RSZW5kZXJlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGaWx0ZXJFZmZlY3RSZW5kZXJl
ckhlbHBlcjo6YXBwbHlGaWx0ZXJFZmZlY3QpOgorICAgICAgICAqIHJlbmRlcmluZy9JbWFnZVF1
YWxpdHlDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlUXVhbGl0eUNvbnRy
b2xsZXI6OnNob3VsZFBhaW50QXRMb3dRdWFsaXR5KToKKyAgICAgICAgKiByZW5kZXJpbmcvSW1h
Z2VRdWFsaXR5Q29udHJvbGxlci5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJCb3hNb2Rl
bE9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3hNb2RlbE9iamVjdDo6c2hv
dWxkUGFpbnRBdExvd1F1YWxpdHkpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94TW9kZWxP
YmplY3Q6OnBhaW50RmlsbExheWVyRXh0ZW5kZWQpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5k
ZXJCb3hNb2RlbE9iamVjdC5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJFbWJlZGRlZE9i
amVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJFbWJlZGRlZE9iamVjdDo6cGFpbnRT
bmFwc2hvdEltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckVtYmVkZGVkT2JqZWN0Ojpw
YWludENvbnRlbnRzKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyRW1iZWRkZWRPYmplY3Qu
aDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVySW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVySW1hZ2U6OnBhaW50UmVwbGFjZWQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
SW1hZ2U6OnBhaW50SW50b1JlY3QpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJJbWFnZVJl
c291cmNlU3R5bGVJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJJbWFnZVJlc291
cmNlU3R5bGVJbWFnZTo6c2h1dGRvd24pOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVySW1hZ2VS
ZXNvdXJjZVN0eWxlSW1hZ2U6OmltYWdlKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OmRyYXdQbGF0Zm9ybVJlc2l6
ZXJJbWFnZSk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxpc3RNYXJrZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyTGlzdE1hcmtlcjo6cGFpbnQpOgorICAgICAgICAqIHJlbmRl
cmluZy9SZW5kZXJTbmFwc2hvdHRlZFBsdWdJbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJTbmFwc2hvdHRlZFBsdWdJbjo6cGFpbnRTbmFwc2hvdCk6CisgICAgICAgICogcmVuZGVyaW5n
L1JlbmRlclRoZW1lTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVNYWM6OnBh
aW50UHJvZ3Jlc3NCYXIpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVNYWM6OnBhaW50
U25hcHNob3R0ZWRQbHVnaW5PdmVybGF5KToKKyAgICAgICAgKiByZW5kZXJpbmcvc2hhcGVzL1No
YXBlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNoYXBlOjpjcmVhdGVSYXN0ZXJTaGFwZSk6Cisg
ICAgICAgICogcmVuZGVyaW5nL3NoYXBlcy9TaGFwZU91dHNpZGVJbmZvLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlNoYXBlT3V0c2lkZUluZm86OmNyZWF0ZVNoYXBlRm9ySW1hZ2UpOiBEZWxldGVk
LgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9OaW5lUGllY2VJbWFnZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpOaW5lUGllY2VJbWFnZTo6cGFpbnQpOgorICAgICAgICAqIHJlbmRlcmluZy9z
dmcvUmVuZGVyU1ZHSW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHSW1hZ2U6
OnBhaW50Rm9yZWdyb3VuZCk6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNv
dXJjZUZpbHRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdSZXNvdXJjZUZpbHRl
cjo6cG9zdEFwcGx5UmVzb3VyY2UpOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvU1ZHUmVuZGVy
aW5nQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdSZW5kZXJpbmdDb250ZXh0Ojpj
bGlwVG9JbWFnZUJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpTVkdSZW5kZXJpbmdDb250ZXh0
OjpidWZmZXJGb3JlZ3JvdW5kKToKKyAgICAgICAgKiBzdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdG
RUltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZFSW1hZ2U6OnBsYXRmb3JtQXBwbHlTb2Z0
d2FyZSk6CisKKzIwMTUtMTAtMTMgIFNpbW9uIEZyYXNlciAgPHNpbW9uLmZyYXNlckBhcHBsZS5j
b20+CisKICAgICAgICAgQWRkIGhlbHBlciBmdW50aW9uIGZvciBjaGVja2luZyBwb2ludGVyIGVx
dWl2YWxlbmN5IGFuZCB1c2UgaXQKICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE1MDAyMgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VM
b2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggYzJmOWExNGNmZDgyNjI3MTgyODhm
OGEwOGJkYTkzZWQyODMwMzFjNS4uZmFhMTE4ZGE4NGZjMjMxZmI1Mzk4OTg4MWE5ZTI3OTkxYjMw
YTQyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIzIEBACisyMDE1LTEwLTEzICBTaW1vbiBGcmFz
ZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgorCisgICAgICAgIENoYW5nZSBHcmFwaGljc0Nv
bnRleHQgaW1hZ2UtZHJhd2luZyBmdW5jdGlvbnMgdG8gdGFrZSByZWZlcmVuY2VzCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTAxMDgKKworICAgICAg
ICBSZXZpZXdlZCBieSBUaW0gSG9ydG9uLgorCisgICAgICAgIENoYW5nZSBHcmFwaGljc0NvbnRl
eHQ6OmRyYXdJbWFnZSgpLCBkcmF3VGlsZWRJbWFnZSgpLCBkcmF3SW1hZ2VCdWZmZXIoKSwgY2xp
cFRvSW1hZ2VCdWZmZXIoKQorICAgICAgICBhbmQgaXNDb21wYXRpYmxlV2l0aEJ1ZmZlcigpIHRv
IHRha2UgcmVmZXJlbmNlcywgYW5kIGFkanVzdCBjYWxsaW5nIGNvZGUsIGFkZGluZworICAgICAg
ICBudWxsLWNoZWNrcyB3aGVyZSBuZWNlc3NhcnkuCisKKyAgICAgICAgKiBTaGFyZWQvQ29udGV4
dE1lbnVDb250ZXh0RGF0YS5jcHA6CisgICAgICAgIChXZWJLaXQ6OkNvbnRleHRNZW51Q29udGV4
dERhdGE6OkNvbnRleHRNZW51Q29udGV4dERhdGEpOgorICAgICAgICAqIFNoYXJlZC9XZWJDb3Jl
QXJndW1lbnRDb2RlcnMuY3BwOgorICAgICAgICAoSVBDOjplbmNvZGVJbWFnZSk6CisgICAgICAg
IChJUEM6OmVuY29kZU9wdGlvbmFsSW1hZ2UpOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVy
PEN1cnNvcj46OmVuY29kZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1l
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWU6OmNyZWF0ZVNlbGVjdGlvblNuYXBzaG90
KToKKwogMjAxNS0xMC0xMyAgTXlsZXMgQy4gTWF4ZmllbGQgIDxtbWF4ZmllbGRAYXBwbGUuY29t
PgogCiAgICAgICAgIFNwbGl0IFR5cGVzZXR0aW5nRmVhdHVyZXMgaW50byBrZXJuaW5nIGFuZCBs
aWdhdHVyZXMgYm9vbHMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDcm9zc2Zh
ZGVWYWx1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ3Jvc3NmYWRlVmFsdWUuY3BwCmlu
ZGV4IDNjNzE3Y2IxNWM4OThhM2M1MDRlZDY0NjI3NzM1NzQ5MjVkNzc5OTguLjA3MzUwOGIwYTY3
ZDlmNTQ4ZjgwNGYzZjQzYTU2YTVhYmUxYmE4NzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NDcm9zc2ZhZGVWYWx1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0Ny
b3NzZmFkZVZhbHVlLmNwcApAQCAtMTY1LDcgKzE2NSw3IEBAIFJlZlB0cjxJbWFnZT4gQ1NTQ3Jv
c3NmYWRlVmFsdWU6OmltYWdlKFJlbmRlckVsZW1lbnQqIHJlbmRlcmVyLCBjb25zdCBGbG9hdFNp
emUmCiAgICAgaWYgKCFmcm9tSW1hZ2UgfHwgIXRvSW1hZ2UpCiAgICAgICAgIHJldHVybiBJbWFn
ZTo6bnVsbEltYWdlKCk7CiAKLSAgICBtX2dlbmVyYXRlZEltYWdlID0gQ3Jvc3NmYWRlR2VuZXJh
dGVkSW1hZ2U6OmNyZWF0ZShmcm9tSW1hZ2UsIHRvSW1hZ2UsIG1fcGVyY2VudGFnZVZhbHVlLT5n
ZXRGbG9hdFZhbHVlKCksIGZpeGVkU2l6ZShyZW5kZXJlciksIHNpemUpOworICAgIG1fZ2VuZXJh
dGVkSW1hZ2UgPSBDcm9zc2ZhZGVHZW5lcmF0ZWRJbWFnZTo6Y3JlYXRlKCpmcm9tSW1hZ2UsICp0
b0ltYWdlLCBtX3BlcmNlbnRhZ2VWYWx1ZS0+Z2V0RmxvYXRWYWx1ZSgpLCBmaXhlZFNpemUocmVu
ZGVyZXIpLCBzaXplKTsKIAogICAgIHJldHVybiBtX2dlbmVyYXRlZEltYWdlOwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZpbHRlckltYWdlVmFsdWUuY3BwIGIvU291cmNl
L1dlYkNvcmUvY3NzL0NTU0ZpbHRlckltYWdlVmFsdWUuY3BwCmluZGV4IDdmZmY0YzQ5ODk0ZWQy
ZTQ0NWQ0MTA0MWRkN2Q0N2QyYTVmNGRlODIuLmJlNzVkYzZlZjY2ZjEwYTQ4OWJkMjg0NmM2OTI0
Yzc3MjYwNjAyM2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGaWx0ZXJJbWFn
ZVZhbHVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRmlsdGVySW1hZ2VWYWx1ZS5j
cHAKQEAgLTEyNCw4ICsxMjQsOSBAQCBSZWZQdHI8SW1hZ2U+IENTU0ZpbHRlckltYWdlVmFsdWU6
OmltYWdlKFJlbmRlckVsZW1lbnQqIHJlbmRlcmVyLCBjb25zdCBGbG9hdFNpegogICAgIHN0ZDo6
dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4gdGV4dHVyZSA9IEltYWdlQnVmZmVyOjpjcmVhdGUoc2l6
ZSwgVW5hY2NlbGVyYXRlZCk7CiAgICAgaWYgKCF0ZXh0dXJlKQogICAgICAgICByZXR1cm4gSW1h
Z2U6Om51bGxJbWFnZSgpOworCiAgICAgRmxvYXRSZWN0IGltYWdlUmVjdCA9IEZsb2F0UmVjdChG
bG9hdFBvaW50KCksIHNpemUpOwotICAgIHRleHR1cmUtPmNvbnRleHQoKS5kcmF3SW1hZ2UoaW1h
Z2UsIENvbG9yU3BhY2VEZXZpY2VSR0IsIGltYWdlUmVjdCk7CisgICAgdGV4dHVyZS0+Y29udGV4
dCgpLmRyYXdJbWFnZSgqaW1hZ2UsIENvbG9yU3BhY2VEZXZpY2VSR0IsIGltYWdlUmVjdCk7CiAK
ICAgICBSZWZQdHI8RmlsdGVyRWZmZWN0UmVuZGVyZXI+IGZpbHRlclJlbmRlcmVyID0gRmlsdGVy
RWZmZWN0UmVuZGVyZXI6OmNyZWF0ZSgpOwogICAgIGZpbHRlclJlbmRlcmVyLT5zZXRTb3VyY2VJ
bWFnZShXVEY6Om1vdmUodGV4dHVyZSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MQ2FudmFzRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxDYW52YXNF
bGVtZW50LmNwcAppbmRleCAwM2VjN2RmOTg5MzFhMzQyMWRlYmViYzRkYzBkMTU0YWE5NzJhODRj
Li41NzI0YzFhYTJhN2ZkYWJjYmEwNDYwNmMyNWEzMzQ5ZTI0MWIzMWExIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxDYW52YXNFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxDYW52YXNFbGVtZW50LmNwcApAQCAtMzg4LDkgKzM4OCw5IEBAIHZvaWQg
SFRNTENhbnZhc0VsZW1lbnQ6OnBhaW50KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3Qg
TGF5b3V0UmVjdCYgciwgYm9vCiAjaWYgRU5BQkxFKENTU19JTUFHRV9PUklFTlRBVElPTikKICAg
ICAgICAgICAgICAgICBvcmllbnRhdGlvbkRlc2NyaXB0aW9uLnNldEltYWdlT3JpZW50YXRpb25F
bnVtKHJlbmRlcmVyKCktPnN0eWxlKCkuaW1hZ2VPcmllbnRhdGlvbigpKTsKICNlbmRpZiAKLSAg
ICAgICAgICAgICAgICBjb250ZXh0LmRyYXdJbWFnZShtX3ByZXNlbnRlZEltYWdlLmdldCgpLCBD
b2xvclNwYWNlRGV2aWNlUkdCLCBzbmFwcGVkSW50UmVjdChyKSwgSW1hZ2VQYWludGluZ09wdGlv
bnMob3JpZW50YXRpb25EZXNjcmlwdGlvbiwgdXNlTG93UXVhbGl0eVNjYWxlKSk7CisgICAgICAg
ICAgICAgICAgY29udGV4dC5kcmF3SW1hZ2UoKm1fcHJlc2VudGVkSW1hZ2UsIENvbG9yU3BhY2VE
ZXZpY2VSR0IsIHNuYXBwZWRJbnRSZWN0KHIpLCBJbWFnZVBhaW50aW5nT3B0aW9ucyhvcmllbnRh
dGlvbkRlc2NyaXB0aW9uLCB1c2VMb3dRdWFsaXR5U2NhbGUpKTsKICAgICAgICAgICAgIH0gZWxz
ZQotICAgICAgICAgICAgICAgIGNvbnRleHQuZHJhd0ltYWdlQnVmZmVyKGltYWdlQnVmZmVyLCBD
b2xvclNwYWNlRGV2aWNlUkdCLCBzbmFwcGVkSW50UmVjdChyKSwgdXNlTG93UXVhbGl0eVNjYWxl
KTsKKyAgICAgICAgICAgICAgICBjb250ZXh0LmRyYXdJbWFnZUJ1ZmZlcigqaW1hZ2VCdWZmZXIs
IENvbG9yU3BhY2VEZXZpY2VSR0IsIHNuYXBwZWRJbnRSZWN0KHIpLCB1c2VMb3dRdWFsaXR5U2Nh
bGUpOwogICAgICAgICB9CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcAppbmRleCBiNDAxNWVmZjQ3MmU4
NGU5MjliNTM5MTU1Mzk1ZDRiNWNjZTVmYjUxLi5iMTlkOWUwZGM3MDNkNTU1M2Y3MzI2MjEzM2My
MGM5NGY2MjhjNzlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52
YXNSZW5kZXJpbmdDb250ZXh0MkQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFz
L0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHAKQEAgLTE0NDgsMTcgKzE0NDgsMTcgQEAgdm9p
ZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmRyYXdJbWFnZShIVE1MSW1hZ2VFbGVtZW50KiBp
bWFnZUVsZW1lbnQsIGNvbnN0IEYKICAgICB9CiAKICAgICBpZiAocmVjdENvbnRhaW5zQ2FudmFz
KG5vcm1hbGl6ZWREc3RSZWN0KSkgewotICAgICAgICBjLT5kcmF3SW1hZ2UoaW1hZ2UsIENvbG9y
U3BhY2VEZXZpY2VSR0IsIG5vcm1hbGl6ZWREc3RSZWN0LCBub3JtYWxpemVkU3JjUmVjdCwgSW1h
Z2VQYWludGluZ09wdGlvbnMob3AsIGJsZW5kTW9kZSkpOworICAgICAgICBjLT5kcmF3SW1hZ2Uo
KmltYWdlLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBub3JtYWxpemVkRHN0UmVjdCwgbm9ybWFsaXpl
ZFNyY1JlY3QsIEltYWdlUGFpbnRpbmdPcHRpb25zKG9wLCBibGVuZE1vZGUpKTsKICAgICAgICAg
ZGlkRHJhd0VudGlyZUNhbnZhcygpOwogICAgIH0gZWxzZSBpZiAoaXNGdWxsQ2FudmFzQ29tcG9z
aXRlTW9kZShvcCkpIHsKLSAgICAgICAgZnVsbENhbnZhc0NvbXBvc2l0ZWREcmF3SW1hZ2UoaW1h
Z2UsIENvbG9yU3BhY2VEZXZpY2VSR0IsIG5vcm1hbGl6ZWREc3RSZWN0LCBub3JtYWxpemVkU3Jj
UmVjdCwgb3ApOworICAgICAgICBmdWxsQ2FudmFzQ29tcG9zaXRlZERyYXdJbWFnZSgqaW1hZ2Us
IENvbG9yU3BhY2VEZXZpY2VSR0IsIG5vcm1hbGl6ZWREc3RSZWN0LCBub3JtYWxpemVkU3JjUmVj
dCwgb3ApOwogICAgICAgICBkaWREcmF3RW50aXJlQ2FudmFzKCk7CiAgICAgfSBlbHNlIGlmIChv
cCA9PSBDb21wb3NpdGVDb3B5KSB7CiAgICAgICAgIGNsZWFyQ2FudmFzKCk7Ci0gICAgICAgIGMt
PmRyYXdJbWFnZShpbWFnZSwgQ29sb3JTcGFjZURldmljZVJHQiwgbm9ybWFsaXplZERzdFJlY3Qs
IG5vcm1hbGl6ZWRTcmNSZWN0LCBJbWFnZVBhaW50aW5nT3B0aW9ucyhvcCwgYmxlbmRNb2RlKSk7
CisgICAgICAgIGMtPmRyYXdJbWFnZSgqaW1hZ2UsIENvbG9yU3BhY2VEZXZpY2VSR0IsIG5vcm1h
bGl6ZWREc3RSZWN0LCBub3JtYWxpemVkU3JjUmVjdCwgSW1hZ2VQYWludGluZ09wdGlvbnMob3As
IGJsZW5kTW9kZSkpOwogICAgICAgICBkaWREcmF3RW50aXJlQ2FudmFzKCk7CiAgICAgfSBlbHNl
IHsKLSAgICAgICAgYy0+ZHJhd0ltYWdlKGltYWdlLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBub3Jt
YWxpemVkRHN0UmVjdCwgbm9ybWFsaXplZFNyY1JlY3QsIEltYWdlUGFpbnRpbmdPcHRpb25zKG9w
LCBibGVuZE1vZGUpKTsKKyAgICAgICAgYy0+ZHJhd0ltYWdlKCppbWFnZSwgQ29sb3JTcGFjZURl
dmljZVJHQiwgbm9ybWFsaXplZERzdFJlY3QsIG5vcm1hbGl6ZWRTcmNSZWN0LCBJbWFnZVBhaW50
aW5nT3B0aW9ucyhvcCwgYmxlbmRNb2RlKSk7CiAgICAgICAgIGRpZERyYXcobm9ybWFsaXplZERz
dFJlY3QpOwogICAgIH0KICAgICAKQEAgLTE1MzYsMTcgKzE1MzYsMTcgQEAgdm9pZCBDYW52YXNS
ZW5kZXJpbmdDb250ZXh0MkQ6OmRyYXdJbWFnZShIVE1MQ2FudmFzRWxlbWVudCogc291cmNlQ2Fu
dmFzLCBjb25zdAogI2VuZGlmCiAKICAgICBpZiAocmVjdENvbnRhaW5zQ2FudmFzKGRzdFJlY3Qp
KSB7Ci0gICAgICAgIGMtPmRyYXdJbWFnZUJ1ZmZlcihidWZmZXIsIENvbG9yU3BhY2VEZXZpY2VS
R0IsIGRzdFJlY3QsIHNyY1JlY3QsIEltYWdlUGFpbnRpbmdPcHRpb25zKHN0YXRlKCkuZ2xvYmFs
Q29tcG9zaXRlLCBzdGF0ZSgpLmdsb2JhbEJsZW5kKSk7CisgICAgICAgIGMtPmRyYXdJbWFnZUJ1
ZmZlcigqYnVmZmVyLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBkc3RSZWN0LCBzcmNSZWN0LCBJbWFn
ZVBhaW50aW5nT3B0aW9ucyhzdGF0ZSgpLmdsb2JhbENvbXBvc2l0ZSwgc3RhdGUoKS5nbG9iYWxC
bGVuZCkpOwogICAgICAgICBkaWREcmF3RW50aXJlQ2FudmFzKCk7CiAgICAgfSBlbHNlIGlmIChp
c0Z1bGxDYW52YXNDb21wb3NpdGVNb2RlKHN0YXRlKCkuZ2xvYmFsQ29tcG9zaXRlKSkgewotICAg
ICAgICBmdWxsQ2FudmFzQ29tcG9zaXRlZERyYXdJbWFnZShidWZmZXIsIENvbG9yU3BhY2VEZXZp
Y2VSR0IsIGRzdFJlY3QsIHNyY1JlY3QsIHN0YXRlKCkuZ2xvYmFsQ29tcG9zaXRlKTsKKyAgICAg
ICAgZnVsbENhbnZhc0NvbXBvc2l0ZWREcmF3SW1hZ2UoKmJ1ZmZlciwgQ29sb3JTcGFjZURldmlj
ZVJHQiwgZHN0UmVjdCwgc3JjUmVjdCwgc3RhdGUoKS5nbG9iYWxDb21wb3NpdGUpOwogICAgICAg
ICBkaWREcmF3RW50aXJlQ2FudmFzKCk7CiAgICAgfSBlbHNlIGlmIChzdGF0ZSgpLmdsb2JhbENv
bXBvc2l0ZSA9PSBDb21wb3NpdGVDb3B5KSB7CiAgICAgICAgIGNsZWFyQ2FudmFzKCk7Ci0gICAg
ICAgIGMtPmRyYXdJbWFnZUJ1ZmZlcihidWZmZXIsIENvbG9yU3BhY2VEZXZpY2VSR0IsIGRzdFJl
Y3QsIHNyY1JlY3QsIEltYWdlUGFpbnRpbmdPcHRpb25zKHN0YXRlKCkuZ2xvYmFsQ29tcG9zaXRl
LCBzdGF0ZSgpLmdsb2JhbEJsZW5kKSk7CisgICAgICAgIGMtPmRyYXdJbWFnZUJ1ZmZlcigqYnVm
ZmVyLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBkc3RSZWN0LCBzcmNSZWN0LCBJbWFnZVBhaW50aW5n
T3B0aW9ucyhzdGF0ZSgpLmdsb2JhbENvbXBvc2l0ZSwgc3RhdGUoKS5nbG9iYWxCbGVuZCkpOwog
ICAgICAgICBkaWREcmF3RW50aXJlQ2FudmFzKCk7CiAgICAgfSBlbHNlIHsKLSAgICAgICAgYy0+
ZHJhd0ltYWdlQnVmZmVyKGJ1ZmZlciwgQ29sb3JTcGFjZURldmljZVJHQiwgZHN0UmVjdCwgc3Jj
UmVjdCwgSW1hZ2VQYWludGluZ09wdGlvbnMoc3RhdGUoKS5nbG9iYWxDb21wb3NpdGUsIHN0YXRl
KCkuZ2xvYmFsQmxlbmQpKTsKKyAgICAgICAgYy0+ZHJhd0ltYWdlQnVmZmVyKCpidWZmZXIsIENv
bG9yU3BhY2VEZXZpY2VSR0IsIGRzdFJlY3QsIHNyY1JlY3QsIEltYWdlUGFpbnRpbmdPcHRpb25z
KHN0YXRlKCkuZ2xvYmFsQ29tcG9zaXRlLCBzdGF0ZSgpLmdsb2JhbEJsZW5kKSk7CiAgICAgICAg
IGRpZERyYXcoZHN0UmVjdCk7CiAgICAgfQogfQpAQCAtMTcwOSw3ICsxNzA5LDcgQEAgc3RkOjp1
bmlxdWVfcHRyPEltYWdlQnVmZmVyPiBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmNyZWF0ZUNv
bXBvc2l0aW5nQnVmZmVyKGMKICAgICByZXR1cm4gSW1hZ2VCdWZmZXI6OmNyZWF0ZShidWZmZXJS
ZWN0LnNpemUoKSwgaXNBY2NlbGVyYXRlZCgpID8gQWNjZWxlcmF0ZWQgOiBVbmFjY2VsZXJhdGVk
KTsKIH0KIAotdm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmNvbXBvc2l0ZUJ1ZmZlcihJ
bWFnZUJ1ZmZlciogYnVmZmVyLCBjb25zdCBJbnRSZWN0JiBidWZmZXJSZWN0LCBDb21wb3NpdGVP
cGVyYXRvciBvcCkKK3ZvaWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpjb21wb3NpdGVCdWZm
ZXIoSW1hZ2VCdWZmZXImIGJ1ZmZlciwgY29uc3QgSW50UmVjdCYgYnVmZmVyUmVjdCwgQ29tcG9z
aXRlT3BlcmF0b3Igb3ApCiB7CiAgICAgSW50UmVjdCBjYW52YXNSZWN0KDAsIDAsIGNhbnZhcygp
LT53aWR0aCgpLCBjYW52YXMoKS0+aGVpZ2h0KCkpOwogICAgIGNhbnZhc1JlY3QgPSBjYW52YXMo
KS0+YmFzZVRyYW5zZm9ybSgpLm1hcFJlY3QoY2FudmFzUmVjdCk7CkBAIC0xNzMwLDE3ICsxNzMw
LDE3IEBAIHZvaWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpjb21wb3NpdGVCdWZmZXIoSW1h
Z2VCdWZmZXIqIGJ1ZmZlciwgY29uc3QgSW50UmVjCiAgICAgYy0+cmVzdG9yZSgpOwogfQogCi1z
dGF0aWMgdm9pZCBkcmF3SW1hZ2VUb0NvbnRleHQoSW1hZ2UqIGltYWdlLCBHcmFwaGljc0NvbnRl
eHQmIGNvbnRleHQsIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBjb25zdCBGbG9hdFJlY3Qm
IGRlc3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjLCBDb21wb3NpdGVPcGVyYXRvciBvcCkKK3N0YXRp
YyB2b2lkIGRyYXdJbWFnZVRvQ29udGV4dChJbWFnZSYgaW1hZ2UsIEdyYXBoaWNzQ29udGV4dCYg
Y29udGV4dCwgQ29sb3JTcGFjZSBzdHlsZUNvbG9yU3BhY2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVz
dCwgY29uc3QgRmxvYXRSZWN0JiBzcmMsIENvbXBvc2l0ZU9wZXJhdG9yIG9wKQogewogICAgIGNv
bnRleHQuZHJhd0ltYWdlKGltYWdlLCBzdHlsZUNvbG9yU3BhY2UsIGRlc3QsIHNyYywgb3ApOwog
fQogCi1zdGF0aWMgdm9pZCBkcmF3SW1hZ2VUb0NvbnRleHQoSW1hZ2VCdWZmZXIqIGltYWdlQnVm
ZmVyLCBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNl
LCBjb25zdCBGbG9hdFJlY3QmIGRlc3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjLCBDb21wb3NpdGVP
cGVyYXRvciBvcCkKK3N0YXRpYyB2b2lkIGRyYXdJbWFnZVRvQ29udGV4dChJbWFnZUJ1ZmZlciYg
aW1hZ2VCdWZmZXIsIEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgQ29sb3JTcGFjZSBzdHlsZUNv
bG9yU3BhY2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdCwgY29uc3QgRmxvYXRSZWN0JiBzcmMsIENv
bXBvc2l0ZU9wZXJhdG9yIG9wKQogewogICAgIGNvbnRleHQuZHJhd0ltYWdlQnVmZmVyKGltYWdl
QnVmZmVyLCBzdHlsZUNvbG9yU3BhY2UsIGRlc3QsIHNyYywgb3ApOwogfQogCi10ZW1wbGF0ZTxj
bGFzcyBUPiB2b2lkICBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmZ1bGxDYW52YXNDb21wb3Np
dGVkRHJhd0ltYWdlKFQqIGltYWdlLCBDb2xvclNwYWNlIHN0eWxlQ29sb3JTcGFjZSwgY29uc3Qg
RmxvYXRSZWN0JiBkZXN0LCBjb25zdCBGbG9hdFJlY3QmIHNyYywgQ29tcG9zaXRlT3BlcmF0b3Ig
b3ApCit0ZW1wbGF0ZTxjbGFzcyBUPiB2b2lkICBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmZ1
bGxDYW52YXNDb21wb3NpdGVkRHJhd0ltYWdlKFQmIGltYWdlLCBDb2xvclNwYWNlIHN0eWxlQ29s
b3JTcGFjZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0LCBjb25zdCBGbG9hdFJlY3QmIHNyYywgQ29t
cG9zaXRlT3BlcmF0b3Igb3ApCiB7CiAgICAgQVNTRVJUKGlzRnVsbENhbnZhc0NvbXBvc2l0ZU1v
ZGUob3ApKTsKIApAQCAtMTc2OCw3ICsxNzY4LDcgQEAgdGVtcGxhdGU8Y2xhc3MgVD4gdm9pZCAg
Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpmdWxsQ2FudmFzQ29tcG9zaXRlZERyYXdJbWFnZSgK
ICAgICBidWZmZXItPmNvbnRleHQoKS5jb25jYXRDVE0oZWZmZWN0aXZlVHJhbnNmb3JtKTsKICAg
ICBkcmF3SW1hZ2VUb0NvbnRleHQoaW1hZ2UsIGJ1ZmZlci0+Y29udGV4dCgpLCBzdHlsZUNvbG9y
U3BhY2UsIGFkanVzdGVkRGVzdCwgc3JjLCBDb21wb3NpdGVTb3VyY2VPdmVyKTsKIAotICAgIGNv
bXBvc2l0ZUJ1ZmZlcihidWZmZXIuZ2V0KCksIGJ1ZmZlclJlY3QsIG9wKTsKKyAgICBjb21wb3Np
dGVCdWZmZXIoKmJ1ZmZlciwgYnVmZmVyUmVjdCwgb3ApOwogfQogCiB2b2lkIENhbnZhc1JlbmRl
cmluZ0NvbnRleHQyRDo6cHJlcGFyZUdyYWRpZW50Rm9yRGFzaGJvYXJkKENhbnZhc0dyYWRpZW50
JiBncmFkaWVudCkgY29uc3QKQEAgLTI0MTksNyArMjQxOSw3IEBAIHZvaWQgQ2FudmFzUmVuZGVy
aW5nQ29udGV4dDJEOjpkcmF3VGV4dEludGVybmFsKGNvbnN0IFN0cmluZyYgdGV4dCwgZmxvYXQg
eCwgZmxvCiAKICAgICAvLyBUaGUgc2xvcCBidWlsdCBpbiB0byB0aGlzIG1hc2sgcmVjdCBtYXRj
aGVzIHRoZSBoZXVyaXN0aWMgdXNlZCBpbiBGb250Q0dXaW4uY3BwIGZvciBHREkgdGV4dC4KICAg
ICBGbG9hdFJlY3QgdGV4dFJlY3QgPSBGbG9hdFJlY3QobG9jYXRpb24ueCgpIC0gZm9udE1ldHJp
Y3MuaGVpZ2h0KCkgLyAyLCBsb2NhdGlvbi55KCkgLSBmb250TWV0cmljcy5hc2NlbnQoKSAtIGZv
bnRNZXRyaWNzLmxpbmVHYXAoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
d2lkdGggKyBmb250TWV0cmljcy5oZWlnaHQoKSwgZm9udE1ldHJpY3MubGluZVNwYWNpbmcoKSk7
CisgICAgICAgIHdpZHRoICsgZm9udE1ldHJpY3MuaGVpZ2h0KCksIGZvbnRNZXRyaWNzLmxpbmVT
cGFjaW5nKCkpOwogICAgIGlmICghZmlsbCkKICAgICAgICAgaW5mbGF0ZVN0cm9rZVJlY3QodGV4
dFJlY3QpOwogCkBAIC0yNDYxLDYgKzI0NjEsOCBAQCB2b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRl
eHQyRDo6ZHJhd1RleHRJbnRlcm5hbChjb25zdCBTdHJpbmcmIHRleHQsIGZsb2F0IHgsIGZsbwog
ICAgICAgICB9CiAKICAgICAgICAgc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPiBtYXNrSW1h
Z2UgPSBjLT5jcmVhdGVDb21wYXRpYmxlQnVmZmVyKG1hc2tSZWN0LnNpemUoKSk7CisgICAgICAg
IGlmICghbWFza0ltYWdlKQorICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgIEdyYXBoaWNz
Q29udGV4dCYgbWFza0ltYWdlQ29udGV4dCA9IG1hc2tJbWFnZS0+Y29udGV4dCgpOwogCkBAIC0y
NDg0LDcgKzI0ODYsNyBAQCB2b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6ZHJhd1RleHRJ
bnRlcm5hbChjb25zdCBTdHJpbmcmIHRleHQsIGZsb2F0IHgsIGZsbwogICAgICAgICB9CiAKICAg
ICAgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKCpjKTsKLSAgICAgICAg
Yy0+Y2xpcFRvSW1hZ2VCdWZmZXIobWFza0ltYWdlLmdldCgpLCBtYXNrUmVjdCk7CisgICAgICAg
IGMtPmNsaXBUb0ltYWdlQnVmZmVyKCptYXNrSW1hZ2UsIG1hc2tSZWN0KTsKICAgICAgICAgZHJh
d1N0eWxlLmFwcGx5RmlsbENvbG9yKGMpOwogICAgICAgICBjLT5maWxsUmVjdChtYXNrUmVjdCk7
CiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFz
L0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMv
Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmgKaW5kZXggYTQ0ZTZiOTMwZGM2NWNlNDE0MDhlMDNi
MjU0NTFmNzAwY2JhMmExOS4uODczZjY0M2VlODcxOTliZjZjNDhhNjM4NDAyYjkyODQxNTk0NTNk
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5n
Q29udGV4dDJELmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVy
aW5nQ29udGV4dDJELmgKQEAgLTM2MywxMSArMzYzLDExIEBAIHByaXZhdGU6CiAKICAgICB0ZW1w
bGF0ZTxjbGFzcyBUPiBJbnRSZWN0IGNhbGN1bGF0ZUNvbXBvc2l0aW5nQnVmZmVyUmVjdChjb25z
dCBUJiwgSW50U2l6ZSopOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4gY3JlYXRl
Q29tcG9zaXRpbmdCdWZmZXIoY29uc3QgSW50UmVjdCYpOwotICAgIHZvaWQgY29tcG9zaXRlQnVm
ZmVyKEltYWdlQnVmZmVyKiwgY29uc3QgSW50UmVjdCYsIENvbXBvc2l0ZU9wZXJhdG9yKTsKKyAg
ICB2b2lkIGNvbXBvc2l0ZUJ1ZmZlcihJbWFnZUJ1ZmZlciYsIGNvbnN0IEludFJlY3QmLCBDb21w
b3NpdGVPcGVyYXRvcik7CiAKICAgICB2b2lkIGluZmxhdGVTdHJva2VSZWN0KEZsb2F0UmVjdCYp
IGNvbnN0OwogCi0gICAgdGVtcGxhdGU8Y2xhc3MgVD4gdm9pZCBmdWxsQ2FudmFzQ29tcG9zaXRl
ZERyYXdJbWFnZShUKiwgQ29sb3JTcGFjZSwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRS
ZWN0JiwgQ29tcG9zaXRlT3BlcmF0b3IpOworICAgIHRlbXBsYXRlPGNsYXNzIFQ+IHZvaWQgZnVs
bENhbnZhc0NvbXBvc2l0ZWREcmF3SW1hZ2UoVCYsIENvbG9yU3BhY2UsIGNvbnN0IEZsb2F0UmVj
dCYsIGNvbnN0IEZsb2F0UmVjdCYsIENvbXBvc2l0ZU9wZXJhdG9yKTsKIAogICAgIHZvaWQgcHJl
cGFyZUdyYWRpZW50Rm9yRGFzaGJvYXJkKENhbnZhc0dyYWRpZW50JiBncmFkaWVudCkgY29uc3Q7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMMlJlbmRlcmlu
Z0NvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0wyUmVuZGVyaW5n
Q29udGV4dC5jcHAKaW5kZXggNTNiMjc4ZGJkYWNmZGY3ODFlOGFiMTMyMjE1YmE0MzllYTUyMDMx
ZC4uYWNjNjdkOGQzNGVlZmVkMDdmMmYyNjU5YTliNjQ5NDI4Mjc3Y2I3OSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0wyUmVuZGVyaW5nQ29udGV4dC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0wyUmVuZGVyaW5nQ29udGV4dC5jcHAK
QEAgLTE0MTksOCArMTQxOSwxMSBAQCB2b2lkIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OnRleFN1
YkltYWdlMkQoR0MzRGVudW0gdGFyZ2V0LCBHQzNEaW50IGxldmVsLCBHQzNEaQogICAgICAgICBy
ZXR1cm47CiAgICAgCiAgICAgUmVmUHRyPEltYWdlPiBpbWFnZUZvclJlbmRlciA9IGltYWdlLT5j
YWNoZWRJbWFnZSgpLT5pbWFnZUZvclJlbmRlcmVyKGltYWdlLT5yZW5kZXJlcigpKTsKKyAgICBp
ZiAoIWltYWdlRm9yUmVuZGVyKQorICAgICAgICByZXR1cm47CisKICAgICBpZiAoaW1hZ2VGb3JS
ZW5kZXItPmlzU1ZHSW1hZ2UoKSkKLSAgICAgICAgaW1hZ2VGb3JSZW5kZXIgPSBkcmF3SW1hZ2VJ
bnRvQnVmZmVyKGltYWdlRm9yUmVuZGVyLmdldCgpLCBpbWFnZS0+d2lkdGgoKSwgaW1hZ2UtPmhl
aWdodCgpLCAxKTsKKyAgICAgICAgaW1hZ2VGb3JSZW5kZXIgPSBkcmF3SW1hZ2VJbnRvQnVmZmVy
KCppbWFnZUZvclJlbmRlciwgaW1hZ2UtPndpZHRoKCksIGltYWdlLT5oZWlnaHQoKSwgMSk7CiAg
ICAgCiAgICAgaWYgKCFpbWFnZUZvclJlbmRlciB8fCAhdmFsaWRhdGVUZXhGdW5jKCJ0ZXhTdWJJ
bWFnZTJEIiwgVGV4U3ViSW1hZ2UsIFNvdXJjZUhUTUxJbWFnZUVsZW1lbnQsIHRhcmdldCwgbGV2
ZWwsIEdyYXBoaWNzQ29udGV4dDNEOjpOT05FLCBpbWFnZUZvclJlbmRlci0+d2lkdGgoKSwgaW1h
Z2VGb3JSZW5kZXItPmhlaWdodCgpLCAwLCBmb3JtYXQsIHR5cGUsIHhvZmZzZXQsIHlvZmZzZXQp
KQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZh
cy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMv
V2ViR0xSZW5kZXJpbmdDb250ZXh0LmNwcAppbmRleCBiNmY3YzM1NjcyNGU5M2QyMjI1MmQ1YWNi
MmVjMzE4NTg1NDMxYmY3Li5lYzExNTJhMzQ4MjFjYjAyODM3YzMyYmI2NmM2ZmUxYzZlYjE5MjM1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0Nv
bnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5n
Q29udGV4dC5jcHAKQEAgLTYyMyw4ICs2MjMsMTEgQEAgdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRl
eHQ6OnRleFN1YkltYWdlMkQoR0MzRGVudW0gdGFyZ2V0LCBHQzNEaW50IGxldmVsLCBHQzNEaW4K
ICAgICAgICAgcmV0dXJuOwogICAgIAogICAgIFJlZlB0cjxJbWFnZT4gaW1hZ2VGb3JSZW5kZXIg
PSBpbWFnZS0+Y2FjaGVkSW1hZ2UoKS0+aW1hZ2VGb3JSZW5kZXJlcihpbWFnZS0+cmVuZGVyZXIo
KSk7CisgICAgaWYgKCFpbWFnZUZvclJlbmRlcikKKyAgICAgICAgcmV0dXJuOworCiAgICAgaWYg
KGltYWdlRm9yUmVuZGVyLT5pc1NWR0ltYWdlKCkpCi0gICAgICAgIGltYWdlRm9yUmVuZGVyID0g
ZHJhd0ltYWdlSW50b0J1ZmZlcihpbWFnZUZvclJlbmRlci5nZXQoKSwgaW1hZ2UtPndpZHRoKCks
IGltYWdlLT5oZWlnaHQoKSwgMSk7CisgICAgICAgIGltYWdlRm9yUmVuZGVyID0gZHJhd0ltYWdl
SW50b0J1ZmZlcigqaW1hZ2VGb3JSZW5kZXIsIGltYWdlLT53aWR0aCgpLCBpbWFnZS0+aGVpZ2h0
KCksIDEpOwogICAgIAogICAgIGlmICghaW1hZ2VGb3JSZW5kZXIgfHwgIXZhbGlkYXRlVGV4RnVu
YygidGV4U3ViSW1hZ2UyRCIsIFRleFN1YkltYWdlLCBTb3VyY2VIVE1MSW1hZ2VFbGVtZW50LCB0
YXJnZXQsIGxldmVsLCBmb3JtYXQsIGltYWdlRm9yUmVuZGVyLT53aWR0aCgpLCBpbWFnZUZvclJl
bmRlci0+aGVpZ2h0KCksIDAsIGZvcm1hdCwgdHlwZSwgeG9mZnNldCwgeW9mZnNldCkpCiAgICAg
ICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdM
UmVuZGVyaW5nQ29udGV4dEJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2Vi
R0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHAKaW5kZXggYTRhYTdhN2IzOWE4Mjk4OWVhMzE4YjRj
MDc1OGM3YjI0OWRiOGI5Ni4uNjZiZmM5MDVlMmFjYmMwYzIzODg1ODcyNmQ4NGIzY2ZmMDdlNWJj
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdD
b250ZXh0QmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5k
ZXJpbmdDb250ZXh0QmFzZS5jcHAKQEAgLTMxNjQsNyArMzE2NCw3IEBAIHZvaWQgV2ViR0xSZW5k
ZXJpbmdDb250ZXh0QmFzZTo6dGV4SW1hZ2UyRChHQzNEZW51bSB0YXJnZXQsIEdDM0RpbnQgbGV2
ZWwsIEdDM0RlCiAgICAgICAgIG1fY29udGV4dC0+cGl4ZWxTdG9yZWkoR3JhcGhpY3NDb250ZXh0
M0Q6OlVOUEFDS19BTElHTk1FTlQsIG1fdW5wYWNrQWxpZ25tZW50KTsKIH0KIAotUGFzc1JlZlB0
cjxJbWFnZT4gV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6ZHJhd0ltYWdlSW50b0J1ZmZlcihJ
bWFnZSogaW1hZ2UsIGludCB3aWR0aCwgaW50IGhlaWdodCwgaW50IGRldmljZVNjYWxlRmFjdG9y
KQorUGFzc1JlZlB0cjxJbWFnZT4gV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6ZHJhd0ltYWdl
SW50b0J1ZmZlcihJbWFnZSYgaW1hZ2UsIGludCB3aWR0aCwgaW50IGhlaWdodCwgaW50IGRldmlj
ZVNjYWxlRmFjdG9yKQogewogICAgIEludFNpemUgc2l6ZSh3aWR0aCwgaGVpZ2h0KTsKICAgICBz
aXplLnNjYWxlKGRldmljZVNjYWxlRmFjdG9yKTsKQEAgLTMxNzQsNyArMzE3NCw3IEBAIFBhc3NS
ZWZQdHI8SW1hZ2U+IFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmRyYXdJbWFnZUludG9CdWZm
ZXIoSW1hZ2UqIGltYWdlLCBpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIAotICAg
IEZsb2F0UmVjdCBzcmNSZWN0KEZsb2F0UG9pbnQoKSwgaW1hZ2UtPnNpemUoKSk7CisgICAgRmxv
YXRSZWN0IHNyY1JlY3QoRmxvYXRQb2ludCgpLCBpbWFnZS5zaXplKCkpOwogICAgIEZsb2F0UmVj
dCBkZXN0UmVjdChGbG9hdFBvaW50KCksIHNpemUpOwogICAgIGJ1Zi0+Y29udGV4dCgpLmRyYXdJ
bWFnZShpbWFnZSwgQ29sb3JTcGFjZURldmljZVJHQiwgZGVzdFJlY3QsIHNyY1JlY3QpOwogICAg
IHJldHVybiBidWYtPmNvcHlJbWFnZShJbWFnZUJ1ZmZlcjo6ZmFzdENvcHlJbWFnZU1vZGUoKSk7
CkBAIC0zMTg4LDggKzMxODgsMTEgQEAgdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp0
ZXhJbWFnZTJEKEdDM0RlbnVtIHRhcmdldCwgR0MzRGludCBsZXZlbCwgR0MzRGUKICAgICAgICAg
cmV0dXJuOwogCiAgICAgUmVmUHRyPEltYWdlPiBpbWFnZUZvclJlbmRlciA9IGltYWdlLT5jYWNo
ZWRJbWFnZSgpLT5pbWFnZUZvclJlbmRlcmVyKGltYWdlLT5yZW5kZXJlcigpKTsKKyAgICBpZiAo
IWltYWdlRm9yUmVuZGVyKQorICAgICAgICByZXR1cm47CisKICAgICBpZiAoaW1hZ2VGb3JSZW5k
ZXItPmlzU1ZHSW1hZ2UoKSkKLSAgICAgICAgaW1hZ2VGb3JSZW5kZXIgPSBkcmF3SW1hZ2VJbnRv
QnVmZmVyKGltYWdlRm9yUmVuZGVyLmdldCgpLCBpbWFnZS0+d2lkdGgoKSwgaW1hZ2UtPmhlaWdo
dCgpLCAxKTsKKyAgICAgICAgaW1hZ2VGb3JSZW5kZXIgPSBkcmF3SW1hZ2VJbnRvQnVmZmVyKCpp
bWFnZUZvclJlbmRlciwgaW1hZ2UtPndpZHRoKCksIGltYWdlLT5oZWlnaHQoKSwgMSk7CiAKICAg
ICBpZiAoIWltYWdlRm9yUmVuZGVyIHx8ICF2YWxpZGF0ZVRleEZ1bmMoInRleEltYWdlMkQiLCBU
ZXhJbWFnZSwgU291cmNlSFRNTEltYWdlRWxlbWVudCwgdGFyZ2V0LCBsZXZlbCwgaW50ZXJuYWxm
b3JtYXQsIGltYWdlRm9yUmVuZGVyLT53aWR0aCgpLCBpbWFnZUZvclJlbmRlci0+aGVpZ2h0KCks
IDAsIGZvcm1hdCwgdHlwZSwgMCwgMCkpCiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuaCBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuaAppbmRl
eCBlMDljMmE0MzQ2YzVhYTFiNDliMzE4OTUzNDI2MDAyNzJlNjNmOWVkLi5jYTA1OGIxYmUwZTk0
ZGRkNGVmYjE5MWQ5MmUxZjY2OTJhMzZlZTY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5oCkBAIC00MjYsNyArNDI2
LDcgQEAgcHJvdGVjdGVkOgogICAgIC8vIEFkZHMgYSBjb21wcmVzc2VkIHRleHR1cmUgZm9ybWF0
LgogICAgIHZvaWQgYWRkQ29tcHJlc3NlZFRleHR1cmVGb3JtYXQoR0MzRGVudW0pOwogCi0gICAg
UGFzc1JlZlB0cjxJbWFnZT4gZHJhd0ltYWdlSW50b0J1ZmZlcihJbWFnZSosIGludCB3aWR0aCwg
aW50IGhlaWdodCwgaW50IGRldmljZVNjYWxlRmFjdG9yKTsKKyAgICBQYXNzUmVmUHRyPEltYWdl
PiBkcmF3SW1hZ2VJbnRvQnVmZmVyKEltYWdlJiwgaW50IHdpZHRoLCBpbnQgaGVpZ2h0LCBpbnQg
ZGV2aWNlU2NhbGVGYWN0b3IpOwogCiAjaWYgRU5BQkxFKFZJREVPKQogICAgIFBhc3NSZWZQdHI8
SW1hZ2U+IHZpZGVvRnJhbWVUb0ltYWdlKEhUTUxWaWRlb0VsZW1lbnQqLCBCYWNraW5nU3RvcmVD
b3B5LCBFeGNlcHRpb25Db2RlJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9TY3JvbGxWaWV3LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbFZpZXcuY3Bw
CmluZGV4IDA5Nzg4YjBmYzMzOTNiMGU5MWUwMmJmMzIzOTdmYjBkYTQ3NWE2OTkuLjE1YTBiYjFk
MGMyNGRkMzFlY2MyOTNkNDc4MTZkMjViNGJjYWM4MzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL1Njcm9sbFZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1Njcm9sbFZpZXcuY3BwCkBAIC0xMTc4LDEwICsxMTc4LDEyIEBAIHZvaWQgU2Nyb2xsVmlldzo6
cGFpbnRTY3JvbGxiYXJzKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgSW50UmVjdCYg
cmVjdCkKIHZvaWQgU2Nyb2xsVmlldzo6cGFpbnRQYW5TY3JvbGxJY29uKEdyYXBoaWNzQ29udGV4
dCYgY29udGV4dCkKIHsKICAgICBzdGF0aWMgSW1hZ2UqIHBhblNjcm9sbEljb24gPSBJbWFnZTo6
bG9hZFBsYXRmb3JtUmVzb3VyY2UoInBhbkljb24iKS5sZWFrUmVmKCk7CisgICAgaWYgKCFwYW5T
Y3JvbGxJY29uKQorICAgICAgICByZXR1cm47CiAgICAgSW50UG9pbnQgaWNvbkdDUG9pbnQgPSBt
X3BhblNjcm9sbEljb25Qb2ludDsKICAgICBpZiAocGFyZW50KCkpCiAgICAgICAgIGljb25HQ1Bv
aW50ID0gcGFyZW50KCktPndpbmRvd1RvQ29udGVudHMoaWNvbkdDUG9pbnQpOwotICAgIGNvbnRl
eHQuZHJhd0ltYWdlKHBhblNjcm9sbEljb24sIENvbG9yU3BhY2VEZXZpY2VSR0IsIGljb25HQ1Bv
aW50KTsKKyAgICBjb250ZXh0LmRyYXdJbWFnZSgqcGFuU2Nyb2xsSWNvbiwgQ29sb3JTcGFjZURl
dmljZVJHQiwgaWNvbkdDUG9pbnQpOwogfQogCiB2b2lkIFNjcm9sbFZpZXc6OnBhaW50KEdyYXBo
aWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgSW50UmVjdCYgcmVjdCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Nyb3NzZmFkZUdlbmVyYXRlZEltYWdlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Nyb3NzZmFkZUdlbmVyYXRlZElt
YWdlLmNwcAppbmRleCA0YWYyZTQ3MTE1NTI3MGQ1MGM4YWU4N2QxYmY5NDI4M2UxYmY2ZmJlLi42
ODMyYjg5OTdmNzVhZTQ5MmY1MjBmNTBjOTc2ZTZkNDIxNTQ5MWJiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Dcm9zc2ZhZGVHZW5lcmF0ZWRJbWFnZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ3Jvc3NmYWRlR2VuZXJhdGVk
SW1hZ2UuY3BwCkBAIC0zMiw3ICszMiw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotQ3Jv
c3NmYWRlR2VuZXJhdGVkSW1hZ2U6OkNyb3NzZmFkZUdlbmVyYXRlZEltYWdlKEltYWdlKiBmcm9t
SW1hZ2UsIEltYWdlKiB0b0ltYWdlLCBmbG9hdCBwZXJjZW50YWdlLCBjb25zdCBGbG9hdFNpemUm
IGNyb3NzZmFkZVNpemUsIGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSkKK0Nyb3NzZmFkZUdlbmVyYXRl
ZEltYWdlOjpDcm9zc2ZhZGVHZW5lcmF0ZWRJbWFnZShJbWFnZSYgZnJvbUltYWdlLCBJbWFnZSYg
dG9JbWFnZSwgZmxvYXQgcGVyY2VudGFnZSwgY29uc3QgRmxvYXRTaXplJiBjcm9zc2ZhZGVTaXpl
LCBjb25zdCBGbG9hdFNpemUmIHNpemUpCiAgICAgOiBtX2Zyb21JbWFnZShmcm9tSW1hZ2UpCiAg
ICAgLCBtX3RvSW1hZ2UodG9JbWFnZSkKICAgICAsIG1fcGVyY2VudGFnZShwZXJjZW50YWdlKQpA
QCAtNDEsMTIgKzQxLDEyIEBAIENyb3NzZmFkZUdlbmVyYXRlZEltYWdlOjpDcm9zc2ZhZGVHZW5l
cmF0ZWRJbWFnZShJbWFnZSogZnJvbUltYWdlLCBJbWFnZSogdG9JbWFnCiAgICAgc2V0Q29udGFp
bmVyU2l6ZShzaXplKTsKIH0KIAotc3RhdGljIHZvaWQgZHJhd0Nyb3NzZmFkZVN1YmltYWdlKEdy
YXBoaWNzQ29udGV4dCYgY29udGV4dCwgSW1hZ2UqIGltYWdlLCBDb21wb3NpdGVPcGVyYXRvciBv
cGVyYXRpb24sIGZsb2F0IG9wYWNpdHksIGNvbnN0IEZsb2F0U2l6ZSYgdGFyZ2V0U2l6ZSkKK3N0
YXRpYyB2b2lkIGRyYXdDcm9zc2ZhZGVTdWJpbWFnZShHcmFwaGljc0NvbnRleHQmIGNvbnRleHQs
IEltYWdlJiBpbWFnZSwgQ29tcG9zaXRlT3BlcmF0b3Igb3BlcmF0aW9uLCBmbG9hdCBvcGFjaXR5
LCBjb25zdCBGbG9hdFNpemUmIHRhcmdldFNpemUpCiB7Ci0gICAgRmxvYXRTaXplIGltYWdlU2l6
ZSA9IGltYWdlLT5zaXplKCk7CisgICAgRmxvYXRTaXplIGltYWdlU2l6ZSA9IGltYWdlLnNpemUo
KTsKIAogICAgIC8vIFNWR0ltYWdlIHJlc2V0cyB0aGUgb3BhY2l0eSB3aGVuIHBhaW50aW5nLCBz
byB3ZSBoYXZlIHRvIHVzZSB0cmFuc3BhcmVuY3kgbGF5ZXJzIHRvIGFjY3VyYXRlbHkgcGFpbnQg
b25lIGF0IGEgZ2l2ZW4gb3BhY2l0eS4KLSAgICBib29sIHVzZVRyYW5zcGFyZW5jeUxheWVyID0g
aW1hZ2UtPmlzU1ZHSW1hZ2UoKTsKKyAgICBib29sIHVzZVRyYW5zcGFyZW5jeUxheWVyID0gaW1h
Z2UuaXNTVkdJbWFnZSgpOwogCiAgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNh
dmVyKGNvbnRleHQpOwogCkBAIC02OCw3ICs2OCw3IEBAIHN0YXRpYyB2b2lkIGRyYXdDcm9zc2Zh
ZGVTdWJpbWFnZShHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIEltYWdlKiBpbWFnZSwgQ29tcG9z
CiB2b2lkIENyb3NzZmFkZUdlbmVyYXRlZEltYWdlOjpkcmF3Q3Jvc3NmYWRlKEdyYXBoaWNzQ29u
dGV4dCYgY29udGV4dCkKIHsKICAgICAvLyBEcmF3IG5vdGhpbmcgaWYgZWl0aGVyIG9mIHRoZSBp
bWFnZXMgaGFzbid0IGxvYWRlZCB5ZXQuCi0gICAgaWYgKG1fZnJvbUltYWdlID09IEltYWdlOjpu
dWxsSW1hZ2UoKSB8fCBtX3RvSW1hZ2UgPT0gSW1hZ2U6Om51bGxJbWFnZSgpKQorICAgIGlmICht
X2Zyb21JbWFnZS5wdHIoKSA9PSBJbWFnZTo6bnVsbEltYWdlKCkgfHwgbV90b0ltYWdlLnB0cigp
ID09IEltYWdlOjpudWxsSW1hZ2UoKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgR3JhcGhpY3ND
b250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKGNvbnRleHQpOwpAQCAtNzYsOCArNzYsOCBAQCB2
b2lkIENyb3NzZmFkZUdlbmVyYXRlZEltYWdlOjpkcmF3Q3Jvc3NmYWRlKEdyYXBoaWNzQ29udGV4
dCYgY29udGV4dCkKICAgICBjb250ZXh0LmNsaXAoRmxvYXRSZWN0KEZsb2F0UG9pbnQoKSwgbV9j
cm9zc2ZhZGVTaXplKSk7CiAgICAgY29udGV4dC5iZWdpblRyYW5zcGFyZW5jeUxheWVyKDEpOwog
Ci0gICAgZHJhd0Nyb3NzZmFkZVN1YmltYWdlKGNvbnRleHQsIG1fZnJvbUltYWdlLCBDb21wb3Np
dGVTb3VyY2VPdmVyLCAxIC0gbV9wZXJjZW50YWdlLCBtX2Nyb3NzZmFkZVNpemUpOwotICAgIGRy
YXdDcm9zc2ZhZGVTdWJpbWFnZShjb250ZXh0LCBtX3RvSW1hZ2UsIENvbXBvc2l0ZVBsdXNMaWdo
dGVyLCBtX3BlcmNlbnRhZ2UsIG1fY3Jvc3NmYWRlU2l6ZSk7CisgICAgZHJhd0Nyb3NzZmFkZVN1
YmltYWdlKGNvbnRleHQsIG1fZnJvbUltYWdlLmdldCgpLCBDb21wb3NpdGVTb3VyY2VPdmVyLCAx
IC0gbV9wZXJjZW50YWdlLCBtX2Nyb3NzZmFkZVNpemUpOworICAgIGRyYXdDcm9zc2ZhZGVTdWJp
bWFnZShjb250ZXh0LCBtX3RvSW1hZ2UuZ2V0KCksIENvbXBvc2l0ZVBsdXNMaWdodGVyLCBtX3Bl
cmNlbnRhZ2UsIG1fY3Jvc3NmYWRlU2l6ZSk7CiAKICAgICBjb250ZXh0LmVuZFRyYW5zcGFyZW5j
eUxheWVyKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9Dcm9zc2ZhZGVHZW5lcmF0ZWRJbWFnZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvQ3Jvc3NmYWRlR2VuZXJhdGVkSW1hZ2UuaAppbmRleCAzNTlkMjlhYjUxMDM0ZDBhOTNj
NGU3ZTQ0NDZiNWE5MTk5OGRiOTMxLi44NDZmMjk2ZDM5OGU5YTI5MmJhZWI2YzMyZWMxMDFiZWI4
NjM3ZTM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Dcm9z
c2ZhZGVHZW5lcmF0ZWRJbWFnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0Nyb3NzZmFkZUdlbmVyYXRlZEltYWdlLmgKQEAgLTM2LDcgKzM2LDcgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogCiBjbGFzcyBDcm9zc2ZhZGVHZW5lcmF0ZWRJbWFnZSBmaW5hbCA6IHB1Ymxp
YyBHZW5lcmF0ZWRJbWFnZSB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxDcm9zc2ZhZGVHZW5l
cmF0ZWRJbWFnZT4gY3JlYXRlKEltYWdlKiBmcm9tSW1hZ2UsIEltYWdlKiB0b0ltYWdlLCBmbG9h
dCBwZXJjZW50YWdlLCBjb25zdCBGbG9hdFNpemUmIGNyb3NzZmFkZVNpemUsIGNvbnN0IEZsb2F0
U2l6ZSYgc2l6ZSkKKyAgICBzdGF0aWMgUmVmPENyb3NzZmFkZUdlbmVyYXRlZEltYWdlPiBjcmVh
dGUoSW1hZ2UmIGZyb21JbWFnZSwgSW1hZ2UmIHRvSW1hZ2UsIGZsb2F0IHBlcmNlbnRhZ2UsIGNv
bnN0IEZsb2F0U2l6ZSYgY3Jvc3NmYWRlU2l6ZSwgY29uc3QgRmxvYXRTaXplJiBzaXplKQogICAg
IHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQ3Jvc3NmYWRlR2VuZXJhdGVkSW1hZ2Uo
ZnJvbUltYWdlLCB0b0ltYWdlLCBwZXJjZW50YWdlLCBjcm9zc2ZhZGVTaXplLCBzaXplKSk7CiAg
ICAgfQpAQCAtNTIsMTMgKzUyLDEzIEBAIHByb3RlY3RlZDoKICAgICB2aXJ0dWFsIHZvaWQgZHJh
dyhHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZsb2F0
UmVjdCYgc3JjUmVjdCwgQ29sb3JTcGFjZSBzdHlsZUNvbG9yU3BhY2UsIENvbXBvc2l0ZU9wZXJh
dG9yLCBCbGVuZE1vZGUsIEltYWdlT3JpZW50YXRpb25EZXNjcmlwdGlvbikgb3ZlcnJpZGU7CiAg
ICAgdmlydHVhbCB2b2lkIGRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0
UmVjdCYgc3JjUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBwYXR0ZXJuVHJhbnNmb3JtLCBj
b25zdCBGbG9hdFBvaW50JiBwaGFzZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5nLCBDb2xvclNw
YWNlIHN0eWxlQ29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0b3IsIGNvbnN0IEZsb2F0UmVjdCYg
ZHN0UmVjdCwgQmxlbmRNb2RlKSBvdmVycmlkZTsKIAotICAgIENyb3NzZmFkZUdlbmVyYXRlZElt
YWdlKEltYWdlKiBmcm9tSW1hZ2UsIEltYWdlKiB0b0ltYWdlLCBmbG9hdCBwZXJjZW50YWdlLCBj
b25zdCBGbG9hdFNpemUmIGNyb3NzZmFkZVNpemUsIGNvbnN0IEZsb2F0U2l6ZSYpOworICAgIENy
b3NzZmFkZUdlbmVyYXRlZEltYWdlKEltYWdlJiBmcm9tSW1hZ2UsIEltYWdlJiB0b0ltYWdlLCBm
bG9hdCBwZXJjZW50YWdlLCBjb25zdCBGbG9hdFNpemUmIGNyb3NzZmFkZVNpemUsIGNvbnN0IEZs
b2F0U2l6ZSYpOwogCiBwcml2YXRlOgogICAgIHZvaWQgZHJhd0Nyb3NzZmFkZShHcmFwaGljc0Nv
bnRleHQmKTsKIAotICAgIEltYWdlKiBtX2Zyb21JbWFnZTsKLSAgICBJbWFnZSogbV90b0ltYWdl
OworICAgIFJlZjxJbWFnZT4gbV9mcm9tSW1hZ2U7CisgICAgUmVmPEltYWdlPiBtX3RvSW1hZ2U7
CiAKICAgICBmbG9hdCBtX3BlcmNlbnRhZ2U7CiAgICAgRmxvYXRTaXplIG1fY3Jvc3NmYWRlU2l6
ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYWRpZW50
SW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhZGllbnRJbWFn
ZS5jcHAKaW5kZXggZjQwNTMwZDA1YjA2YzViOTNlZGM1YWRjODEzZTU3MjZkYTUxMjgwOS4uMjI5
OWY1MWZmM2QxOWVhYzlmMmFlMGQzN2ZlMTcxNDMyMDBiOGQyYiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhZGllbnRJbWFnZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhZGllbnRJbWFnZS5jcHAKQEAgLTczLDcgKzcz
LDcgQEAgdm9pZCBHcmFkaWVudEltYWdlOjpkcmF3UGF0dGVybihHcmFwaGljc0NvbnRleHQmIGRl
c3RDb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIHMKIAogICAgIHVuc2lnbmVkIGdlbmVyYXRvckhh
c2ggPSBtX2dyYWRpZW50LT5oYXNoKCk7CiAKLSAgICBpZiAoIW1fY2FjaGVkSW1hZ2VCdWZmZXIg
fHwgbV9jYWNoZWRHZW5lcmF0b3JIYXNoICE9IGdlbmVyYXRvckhhc2ggfHwgbV9jYWNoZWRBZGp1
c3RlZFNpemUgIT0gYWRqdXN0ZWRTaXplIHx8ICFkZXN0Q29udGV4dC5pc0NvbXBhdGlibGVXaXRo
QnVmZmVyKG1fY2FjaGVkSW1hZ2VCdWZmZXIuZ2V0KCkpKSB7CisgICAgaWYgKCFtX2NhY2hlZElt
YWdlQnVmZmVyIHx8IG1fY2FjaGVkR2VuZXJhdG9ySGFzaCAhPSBnZW5lcmF0b3JIYXNoIHx8IG1f
Y2FjaGVkQWRqdXN0ZWRTaXplICE9IGFkanVzdGVkU2l6ZSB8fCAhZGVzdENvbnRleHQuaXNDb21w
YXRpYmxlV2l0aEJ1ZmZlcigqbV9jYWNoZWRJbWFnZUJ1ZmZlcikpIHsKICAgICAgICAgbV9jYWNo
ZWRJbWFnZUJ1ZmZlciA9IGRlc3RDb250ZXh0LmNyZWF0ZUNvbXBhdGlibGVCdWZmZXIoYWRqdXN0
ZWRTaXplLCBtX2dyYWRpZW50LT5oYXNBbHBoYSgpKTsKICAgICAgICAgaWYgKCFtX2NhY2hlZElt
YWdlQnVmZmVyKQogICAgICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHAKaW5kZXggNDI2YzdhNzZiZmIz
ODY2YTM5YjU2MWZiYWRjNzYzOTk4OTZjNjI5My4uMmI0YTJmNzk5ZjlmNTA1MjVkOWU5OGI1NjEw
YzFjNDVkNTRhYWEzZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvR3JhcGhpY3NDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9HcmFwaGljc0NvbnRleHQuY3BwCkBAIC0zNjgsNTAgKzM2OCw0NSBAQCB2b2lkIEdyYXBo
aWNzQ29udGV4dDo6ZHJhd0JpZGlUZXh0KGNvbnN0IEZvbnRDYXNjYWRlJiBmb250LCBjb25zdCBU
ZXh0UnVuJiBydW4sCiAgICAgYmlkaVJ1bnMuZGVsZXRlUnVucygpOwogfQogCi12b2lkIEdyYXBo
aWNzQ29udGV4dDo6ZHJhd0ltYWdlKEltYWdlKiBpbWFnZSwgQ29sb3JTcGFjZSBjb2xvclNwYWNl
LCBjb25zdCBGbG9hdFBvaW50JiBkZXN0aW5hdGlvbiwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlv
bnMmIGltYWdlUGFpbnRpbmdPcHRpb25zKQordm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdJbWFn
ZShJbWFnZSYgaW1hZ2UsIENvbG9yU3BhY2UgY29sb3JTcGFjZSwgY29uc3QgRmxvYXRQb2ludCYg
ZGVzdGluYXRpb24sIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBpbWFnZVBhaW50aW5nT3B0
aW9ucykKIHsKLSAgICBpZiAoIWltYWdlKQotICAgICAgICByZXR1cm47Ci0gICAgZHJhd0ltYWdl
KGltYWdlLCBjb2xvclNwYWNlLCBGbG9hdFJlY3QoZGVzdGluYXRpb24sIGltYWdlLT5zaXplKCkp
LCBGbG9hdFJlY3QoRmxvYXRQb2ludCgpLCBpbWFnZS0+c2l6ZSgpKSwgaW1hZ2VQYWludGluZ09w
dGlvbnMpOworICAgIGRyYXdJbWFnZShpbWFnZSwgY29sb3JTcGFjZSwgRmxvYXRSZWN0KGRlc3Rp
bmF0aW9uLCBpbWFnZS5zaXplKCkpLCBGbG9hdFJlY3QoRmxvYXRQb2ludCgpLCBpbWFnZS5zaXpl
KCkpLCBpbWFnZVBhaW50aW5nT3B0aW9ucyk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0Ojpk
cmF3SW1hZ2UoSW1hZ2UqIGltYWdlLCBDb2xvclNwYWNlIGNvbG9yU3BhY2UsIGNvbnN0IEZsb2F0
UmVjdCYgZGVzdGluYXRpb24sIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBpbWFnZVBhaW50
aW5nT3B0aW9ucykKK3ZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3SW1hZ2UoSW1hZ2UmIGltYWdl
LCBDb2xvclNwYWNlIGNvbG9yU3BhY2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24sIGNv
bnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBpbWFnZVBhaW50aW5nT3B0aW9ucykKIHsKLSAgICBp
ZiAoIWltYWdlKQotICAgICAgICByZXR1cm47Ci0gICAgCiAjaWYgUExBVEZPUk0oSU9TKQotICAg
IEZsb2F0UmVjdCBzcmNSZWN0KEZsb2F0UG9pbnQoKSwgaW1hZ2UtPm9yaWdpbmFsU2l6ZSgpKTsK
KyAgICBGbG9hdFJlY3Qgc3JjUmVjdChGbG9hdFBvaW50KCksIGltYWdlLm9yaWdpbmFsU2l6ZSgp
KTsKICNlbHNlCi0gICAgRmxvYXRSZWN0IHNyY1JlY3QoRmxvYXRQb2ludCgpLCBpbWFnZS0+c2l6
ZSgpKTsKKyAgICBGbG9hdFJlY3Qgc3JjUmVjdChGbG9hdFBvaW50KCksIGltYWdlLnNpemUoKSk7
CiAjZW5kaWYKICAgICAgICAgCiAgICAgZHJhd0ltYWdlKGltYWdlLCBjb2xvclNwYWNlLCBkZXN0
aW5hdGlvbiwgc3JjUmVjdCwgaW1hZ2VQYWludGluZ09wdGlvbnMpOwogfQogCi12b2lkIEdyYXBo
aWNzQ29udGV4dDo6ZHJhd0ltYWdlKEltYWdlKiBpbWFnZSwgQ29sb3JTcGFjZSBjb2xvclNwYWNl
LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBjb25zdCBGbG9hdFJlY3QmIHNvdXJjZSwg
Y29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIGltYWdlUGFpbnRpbmdPcHRpb25zKQordm9pZCBH
cmFwaGljc0NvbnRleHQ6OmRyYXdJbWFnZShJbWFnZSYgaW1hZ2UsIENvbG9yU3BhY2UgY29sb3JT
cGFjZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwgY29uc3QgRmxvYXRSZWN0JiBzb3Vy
Y2UsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBpbWFnZVBhaW50aW5nT3B0aW9ucykKIHsK
LSAgICBpZiAocGFpbnRpbmdEaXNhYmxlZCgpIHx8ICFpbWFnZSkKKyAgICBpZiAocGFpbnRpbmdE
aXNhYmxlZCgpKQogICAgICAgICByZXR1cm47CiAKICAgICAvLyBGSVhNRSAoNDkwMDIpOiBTaG91
bGQgYmUgSW50ZXJwb2xhdGlvbkxvdwogICAgIEludGVycG9sYXRpb25RdWFsaXR5TWFpbnRhaW5l
ciBpbnRlcnBvbGF0aW9uUXVhbGl0eUZvclRoaXNTY29wZSgqdGhpcywgaW1hZ2VQYWludGluZ09w
dGlvbnMubV91c2VMb3dRdWFsaXR5U2NhbGUgPyBJbnRlcnBvbGF0aW9uTm9uZSA6IGltYWdlSW50
ZXJwb2xhdGlvblF1YWxpdHkoKSk7Ci0gICAgaW1hZ2UtPmRyYXcoKnRoaXMsIGRlc3RpbmF0aW9u
LCBzb3VyY2UsIGNvbG9yU3BhY2UsIGltYWdlUGFpbnRpbmdPcHRpb25zLm1fY29tcG9zaXRlT3Bl
cmF0b3IsIGltYWdlUGFpbnRpbmdPcHRpb25zLm1fYmxlbmRNb2RlLCBpbWFnZVBhaW50aW5nT3B0
aW9ucy5tX29yaWVudGF0aW9uRGVzY3JpcHRpb24pOworICAgIGltYWdlLmRyYXcoKnRoaXMsIGRl
c3RpbmF0aW9uLCBzb3VyY2UsIGNvbG9yU3BhY2UsIGltYWdlUGFpbnRpbmdPcHRpb25zLm1fY29t
cG9zaXRlT3BlcmF0b3IsIGltYWdlUGFpbnRpbmdPcHRpb25zLm1fYmxlbmRNb2RlLCBpbWFnZVBh
aW50aW5nT3B0aW9ucy5tX29yaWVudGF0aW9uRGVzY3JpcHRpb24pOwogfQogCi12b2lkIEdyYXBo
aWNzQ29udGV4dDo6ZHJhd1RpbGVkSW1hZ2UoSW1hZ2UqIGltYWdlLCBDb2xvclNwYWNlIGNvbG9y
U3BhY2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24sIGNvbnN0IEZsb2F0UG9pbnQmIHNv
dXJjZSwgY29uc3QgRmxvYXRTaXplJiB0aWxlU2l6ZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5n
LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgaW1hZ2VQYWludGluZ09wdGlvbnMpCit2b2lk
IEdyYXBoaWNzQ29udGV4dDo6ZHJhd1RpbGVkSW1hZ2UoSW1hZ2UmIGltYWdlLCBDb2xvclNwYWNl
IGNvbG9yU3BhY2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24sIGNvbnN0IEZsb2F0UG9p
bnQmIHNvdXJjZSwgY29uc3QgRmxvYXRTaXplJiB0aWxlU2l6ZSwgY29uc3QgRmxvYXRTaXplJiBz
cGFjaW5nLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgaW1hZ2VQYWludGluZ09wdGlvbnMp
CiB7Ci0gICAgaWYgKHBhaW50aW5nRGlzYWJsZWQoKSB8fCAhaW1hZ2UpCisgICAgaWYgKHBhaW50
aW5nRGlzYWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgSW50ZXJwb2xhdGlvblF1YWxp
dHlNYWludGFpbmVyIGludGVycG9sYXRpb25RdWFsaXR5Rm9yVGhpc1Njb3BlKCp0aGlzLCBpbWFn
ZVBhaW50aW5nT3B0aW9ucy5tX3VzZUxvd1F1YWxpdHlTY2FsZSA/IEludGVycG9sYXRpb25Mb3cg
OiBpbWFnZUludGVycG9sYXRpb25RdWFsaXR5KCkpOwotICAgIGltYWdlLT5kcmF3VGlsZWQoKnRo
aXMsIGRlc3RpbmF0aW9uLCBzb3VyY2UsIHRpbGVTaXplLCBzcGFjaW5nLCBjb2xvclNwYWNlLCBp
bWFnZVBhaW50aW5nT3B0aW9ucy5tX2NvbXBvc2l0ZU9wZXJhdG9yLCBpbWFnZVBhaW50aW5nT3B0
aW9ucy5tX2JsZW5kTW9kZSk7CisgICAgaW1hZ2UuZHJhd1RpbGVkKCp0aGlzLCBkZXN0aW5hdGlv
biwgc291cmNlLCB0aWxlU2l6ZSwgc3BhY2luZywgY29sb3JTcGFjZSwgaW1hZ2VQYWludGluZ09w
dGlvbnMubV9jb21wb3NpdGVPcGVyYXRvciwgaW1hZ2VQYWludGluZ09wdGlvbnMubV9ibGVuZE1v
ZGUpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd1RpbGVkSW1hZ2UoSW1hZ2UqIGlt
YWdlLCBDb2xvclNwYWNlIGNvbG9yU3BhY2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24s
IGNvbnN0IEZsb2F0UmVjdCYgc291cmNlLCBjb25zdCBGbG9hdFNpemUmIHRpbGVTY2FsZUZhY3Rv
ciwKK3ZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3VGlsZWRJbWFnZShJbWFnZSYgaW1hZ2UsIENv
bG9yU3BhY2UgY29sb3JTcGFjZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwgY29uc3Qg
RmxvYXRSZWN0JiBzb3VyY2UsIGNvbnN0IEZsb2F0U2l6ZSYgdGlsZVNjYWxlRmFjdG9yLAogICAg
IEltYWdlOjpUaWxlUnVsZSBoUnVsZSwgSW1hZ2U6OlRpbGVSdWxlIHZSdWxlLCBjb25zdCBJbWFn
ZVBhaW50aW5nT3B0aW9ucyYgaW1hZ2VQYWludGluZ09wdGlvbnMpCiB7Ci0gICAgaWYgKHBhaW50
aW5nRGlzYWJsZWQoKSB8fCAhaW1hZ2UpCisgICAgaWYgKHBhaW50aW5nRGlzYWJsZWQoKSkKICAg
ICAgICAgcmV0dXJuOwogCiAgICAgaWYgKGhSdWxlID09IEltYWdlOjpTdHJldGNoVGlsZSAmJiB2
UnVsZSA9PSBJbWFnZTo6U3RyZXRjaFRpbGUpIHsKQEAgLTQyMSwzMSArNDE2LDI3IEBAIHZvaWQg
R3JhcGhpY3NDb250ZXh0OjpkcmF3VGlsZWRJbWFnZShJbWFnZSogaW1hZ2UsIENvbG9yU3BhY2Ug
Y29sb3JTcGFjZSwgY29uc3QKICAgICB9CiAKICAgICBJbnRlcnBvbGF0aW9uUXVhbGl0eU1haW50
YWluZXIgaW50ZXJwb2xhdGlvblF1YWxpdHlGb3JUaGlzU2NvcGUoKnRoaXMsIGltYWdlUGFpbnRp
bmdPcHRpb25zLm1fdXNlTG93UXVhbGl0eVNjYWxlID8gSW50ZXJwb2xhdGlvbkxvdyA6IGltYWdl
SW50ZXJwb2xhdGlvblF1YWxpdHkoKSk7Ci0gICAgaW1hZ2UtPmRyYXdUaWxlZCgqdGhpcywgZGVz
dGluYXRpb24sIHNvdXJjZSwgdGlsZVNjYWxlRmFjdG9yLCBoUnVsZSwgdlJ1bGUsIGNvbG9yU3Bh
Y2UsIGltYWdlUGFpbnRpbmdPcHRpb25zLm1fY29tcG9zaXRlT3BlcmF0b3IpOworICAgIGltYWdl
LmRyYXdUaWxlZCgqdGhpcywgZGVzdGluYXRpb24sIHNvdXJjZSwgdGlsZVNjYWxlRmFjdG9yLCBo
UnVsZSwgdlJ1bGUsIGNvbG9yU3BhY2UsIGltYWdlUGFpbnRpbmdPcHRpb25zLm1fY29tcG9zaXRl
T3BlcmF0b3IpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd0ltYWdlQnVmZmVyKElt
YWdlQnVmZmVyKiBpbWFnZSwgQ29sb3JTcGFjZSBjb2xvclNwYWNlLCBjb25zdCBGbG9hdFBvaW50
JiBkZXN0aW5hdGlvbiwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIGltYWdlUGFpbnRpbmdP
cHRpb25zKQordm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdJbWFnZUJ1ZmZlcihJbWFnZUJ1ZmZl
ciYgaW1hZ2UsIENvbG9yU3BhY2UgY29sb3JTcGFjZSwgY29uc3QgRmxvYXRQb2ludCYgZGVzdGlu
YXRpb24sIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBpbWFnZVBhaW50aW5nT3B0aW9ucykK
IHsKLSAgICBpZiAoIWltYWdlKQotICAgICAgICByZXR1cm47Ci0gICAgZHJhd0ltYWdlQnVmZmVy
KGltYWdlLCBjb2xvclNwYWNlLCBGbG9hdFJlY3QoZGVzdGluYXRpb24sIGltYWdlLT5sb2dpY2Fs
U2l6ZSgpKSwgRmxvYXRSZWN0KEZsb2F0UG9pbnQoKSwgaW1hZ2UtPmxvZ2ljYWxTaXplKCkpLCBp
bWFnZVBhaW50aW5nT3B0aW9ucyk7CisgICAgZHJhd0ltYWdlQnVmZmVyKGltYWdlLCBjb2xvclNw
YWNlLCBGbG9hdFJlY3QoZGVzdGluYXRpb24sIGltYWdlLmxvZ2ljYWxTaXplKCkpLCBGbG9hdFJl
Y3QoRmxvYXRQb2ludCgpLCBpbWFnZS5sb2dpY2FsU2l6ZSgpKSwgaW1hZ2VQYWludGluZ09wdGlv
bnMpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd0ltYWdlQnVmZmVyKEltYWdlQnVm
ZmVyKiBpbWFnZSwgQ29sb3JTcGFjZSBjb2xvclNwYWNlLCBjb25zdCBGbG9hdFJlY3QmIGRlc3Rp
bmF0aW9uLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgaW1hZ2VQYWludGluZ09wdGlvbnMp
Cit2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd0ltYWdlQnVmZmVyKEltYWdlQnVmZmVyJiBpbWFn
ZSwgQ29sb3JTcGFjZSBjb2xvclNwYWNlLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBj
b25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgaW1hZ2VQYWludGluZ09wdGlvbnMpCiB7Ci0gICAg
aWYgKCFpbWFnZSkKLSAgICAgICAgcmV0dXJuOwotICAgIGRyYXdJbWFnZUJ1ZmZlcihpbWFnZSwg
Y29sb3JTcGFjZSwgZGVzdGluYXRpb24sIEZsb2F0UmVjdChGbG9hdFBvaW50KCksIEZsb2F0U2l6
ZShpbWFnZS0+bG9naWNhbFNpemUoKSkpLCBpbWFnZVBhaW50aW5nT3B0aW9ucyk7CisgICAgZHJh
d0ltYWdlQnVmZmVyKGltYWdlLCBjb2xvclNwYWNlLCBkZXN0aW5hdGlvbiwgRmxvYXRSZWN0KEZs
b2F0UG9pbnQoKSwgRmxvYXRTaXplKGltYWdlLmxvZ2ljYWxTaXplKCkpKSwgaW1hZ2VQYWludGlu
Z09wdGlvbnMpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd0ltYWdlQnVmZmVyKElt
YWdlQnVmZmVyKiBpbWFnZSwgQ29sb3JTcGFjZSBjb2xvclNwYWNlLCBjb25zdCBGbG9hdFJlY3Qm
IGRlc3RpbmF0aW9uLCBjb25zdCBGbG9hdFJlY3QmIHNvdXJjZSwgY29uc3QgSW1hZ2VQYWludGlu
Z09wdGlvbnMmIGltYWdlUGFpbnRpbmdPcHRpb25zKQordm9pZCBHcmFwaGljc0NvbnRleHQ6OmRy
YXdJbWFnZUJ1ZmZlcihJbWFnZUJ1ZmZlciYgaW1hZ2UsIENvbG9yU3BhY2UgY29sb3JTcGFjZSwg
Y29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwgY29uc3QgRmxvYXRSZWN0JiBzb3VyY2UsIGNv
bnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBpbWFnZVBhaW50aW5nT3B0aW9ucykKIHsKLSAgICBp
ZiAocGFpbnRpbmdEaXNhYmxlZCgpIHx8ICFpbWFnZSkKKyAgICBpZiAocGFpbnRpbmdEaXNhYmxl
ZCgpKQogICAgICAgICByZXR1cm47CiAKICAgICAvLyBGSVhNRSAoNDkwMDIpOiBTaG91bGQgYmUg
SW50ZXJwb2xhdGlvbkxvdwogICAgIEludGVycG9sYXRpb25RdWFsaXR5TWFpbnRhaW5lciBpbnRl
cnBvbGF0aW9uUXVhbGl0eUZvclRoaXNTY29wZSgqdGhpcywgaW1hZ2VQYWludGluZ09wdGlvbnMu
bV91c2VMb3dRdWFsaXR5U2NhbGUgPyBJbnRlcnBvbGF0aW9uTm9uZSA6IGltYWdlSW50ZXJwb2xh
dGlvblF1YWxpdHkoKSk7Ci0gICAgaW1hZ2UtPmRyYXcoKnRoaXMsIGNvbG9yU3BhY2UsIGRlc3Rp
bmF0aW9uLCBzb3VyY2UsIGltYWdlUGFpbnRpbmdPcHRpb25zLm1fY29tcG9zaXRlT3BlcmF0b3Is
IGltYWdlUGFpbnRpbmdPcHRpb25zLm1fYmxlbmRNb2RlLCBpbWFnZVBhaW50aW5nT3B0aW9ucy5t
X3VzZUxvd1F1YWxpdHlTY2FsZSk7CisgICAgaW1hZ2UuZHJhdygqdGhpcywgY29sb3JTcGFjZSwg
ZGVzdGluYXRpb24sIHNvdXJjZSwgaW1hZ2VQYWludGluZ09wdGlvbnMubV9jb21wb3NpdGVPcGVy
YXRvciwgaW1hZ2VQYWludGluZ09wdGlvbnMubV9ibGVuZE1vZGUsIGltYWdlUGFpbnRpbmdPcHRp
b25zLm1fdXNlTG93UXVhbGl0eVNjYWxlKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQ6OmNs
aXAoY29uc3QgSW50UmVjdCYgcmVjdCkKQEAgLTQ3OCwxMSArNDY5LDExIEBAIHZvaWQgR3JhcGhp
Y3NDb250ZXh0OjpjbGlwT3V0Um91bmRlZFJlY3QoY29uc3QgRmxvYXRSb3VuZGVkUmVjdCYgcmVj
dCkKICAgICBjbGlwT3V0KHBhdGgpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dDo6Y2xpcFRv
SW1hZ2VCdWZmZXIoSW1hZ2VCdWZmZXIqIGJ1ZmZlciwgY29uc3QgRmxvYXRSZWN0JiByZWN0KQor
dm9pZCBHcmFwaGljc0NvbnRleHQ6OmNsaXBUb0ltYWdlQnVmZmVyKEltYWdlQnVmZmVyJiBidWZm
ZXIsIGNvbnN0IEZsb2F0UmVjdCYgcmVjdCkKIHsKICAgICBpZiAocGFpbnRpbmdEaXNhYmxlZCgp
KQogICAgICAgICByZXR1cm47Ci0gICAgYnVmZmVyLT5jbGlwKCp0aGlzLCByZWN0KTsKKyAgICBi
dWZmZXIuY2xpcCgqdGhpcywgcmVjdCk7CiB9CiAKICNpZiAhVVNFKENHKSAmJiAhVVNFKENBSVJP
KQpAQCAtNjQ4LDkgKzYzOSw5IEBAIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4gR3JhcGhp
Y3NDb250ZXh0OjpjcmVhdGVDb21wYXRpYmxlQnVmZmVyKGNvbnN0IEZsb2F0CiAgICAgcmV0dXJu
IGJ1ZmZlcjsKIH0KIAotYm9vbCBHcmFwaGljc0NvbnRleHQ6OmlzQ29tcGF0aWJsZVdpdGhCdWZm
ZXIoSW1hZ2VCdWZmZXIqIGJ1ZmZlcikgY29uc3QKK2Jvb2wgR3JhcGhpY3NDb250ZXh0Ojppc0Nv
bXBhdGlibGVXaXRoQnVmZmVyKEltYWdlQnVmZmVyJiBidWZmZXIpIGNvbnN0CiB7Ci0gICAgR3Jh
cGhpY3NDb250ZXh0JiBidWZmZXJDb250ZXh0ID0gYnVmZmVyLT5jb250ZXh0KCk7CisgICAgR3Jh
cGhpY3NDb250ZXh0JiBidWZmZXJDb250ZXh0ID0gYnVmZmVyLmNvbnRleHQoKTsKIAogICAgIHJl
dHVybiBzY2FsZXNNYXRjaChnZXRDVE0oKSwgYnVmZmVyQ29udGV4dC5nZXRDVE0oKSkgJiYgaXNB
Y2NlbGVyYXRlZENvbnRleHQoKSA9PSBidWZmZXJDb250ZXh0LmlzQWNjZWxlcmF0ZWRDb250ZXh0
KCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFw
aGljc0NvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNz
Q29udGV4dC5oCmluZGV4IGQ4MDNhYzc1MjVhN2UwMzE4OGFiMWJiM2E4MjQ5MmI5MWVkYzI5NDgu
LmNhOWZhYjU5OGIxOWNlODVlNWIzM2QyMjk5MDk4MmU2NTA2MTk4MTEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oCkBAIC0zMDgs
MTcgKzMwOCwxNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICAgICAgV0VCQ09SRV9FWFBP
UlQgdm9pZCBzdHJva2VSZWN0KGNvbnN0IEZsb2F0UmVjdCYsIGZsb2F0IGxpbmVXaWR0aCk7CiAK
LSAgICAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkcmF3SW1hZ2UoSW1hZ2UqLCBDb2xvclNwYWNl
LCBjb25zdCBGbG9hdFBvaW50JiBkZXN0aW5hdGlvbiwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlv
bnMmID0gSW1hZ2VQYWludGluZ09wdGlvbnMoKSk7Ci0gICAgICAgIFdFQkNPUkVfRVhQT1JUIHZv
aWQgZHJhd0ltYWdlKEltYWdlKiwgQ29sb3JTcGFjZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5h
dGlvbiwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmID0gSW1hZ2VQYWludGluZ09wdGlvbnMo
KSk7Ci0gICAgICAgIHZvaWQgZHJhd0ltYWdlKEltYWdlKiwgQ29sb3JTcGFjZSwgY29uc3QgRmxv
YXRSZWN0JiBkZXN0aW5hdGlvbiwgY29uc3QgRmxvYXRSZWN0JiBzb3VyY2UsIGNvbnN0IEltYWdl
UGFpbnRpbmdPcHRpb25zJiA9IEltYWdlUGFpbnRpbmdPcHRpb25zKCkpOworICAgICAgICBXRUJD
T1JFX0VYUE9SVCB2b2lkIGRyYXdJbWFnZShJbWFnZSYsIENvbG9yU3BhY2UsIGNvbnN0IEZsb2F0
UG9pbnQmIGRlc3RpbmF0aW9uLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgPSBJbWFnZVBh
aW50aW5nT3B0aW9ucygpKTsKKyAgICAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkcmF3SW1hZ2Uo
SW1hZ2UmLCBDb2xvclNwYWNlLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBjb25zdCBJ
bWFnZVBhaW50aW5nT3B0aW9ucyYgPSBJbWFnZVBhaW50aW5nT3B0aW9ucygpKTsKKyAgICAgICAg
dm9pZCBkcmF3SW1hZ2UoSW1hZ2UmLCBDb2xvclNwYWNlLCBjb25zdCBGbG9hdFJlY3QmIGRlc3Rp
bmF0aW9uLCBjb25zdCBGbG9hdFJlY3QmIHNvdXJjZSwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlv
bnMmID0gSW1hZ2VQYWludGluZ09wdGlvbnMoKSk7CiAKLSAgICAgICAgdm9pZCBkcmF3VGlsZWRJ
bWFnZShJbWFnZSosIENvbG9yU3BhY2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24sIGNv
bnN0IEZsb2F0UG9pbnQmIHNvdXJjZSwgY29uc3QgRmxvYXRTaXplJiB0aWxlU2l6ZSwgY29uc3Qg
RmxvYXRTaXplJiBzcGFjaW5nLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgPSBJbWFnZVBh
aW50aW5nT3B0aW9ucygpKTsKLSAgICAgICAgdm9pZCBkcmF3VGlsZWRJbWFnZShJbWFnZSosIENv
bG9yU3BhY2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24sIGNvbnN0IEZsb2F0UmVjdCYg
c291cmNlLCBjb25zdCBGbG9hdFNpemUmIHRpbGVTY2FsZUZhY3RvciwKKyAgICAgICAgdm9pZCBk
cmF3VGlsZWRJbWFnZShJbWFnZSYsIENvbG9yU3BhY2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGlu
YXRpb24sIGNvbnN0IEZsb2F0UG9pbnQmIHNvdXJjZSwgY29uc3QgRmxvYXRTaXplJiB0aWxlU2l6
ZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5nLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYg
PSBJbWFnZVBhaW50aW5nT3B0aW9ucygpKTsKKyAgICAgICAgdm9pZCBkcmF3VGlsZWRJbWFnZShJ
bWFnZSYsIENvbG9yU3BhY2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24sIGNvbnN0IEZs
b2F0UmVjdCYgc291cmNlLCBjb25zdCBGbG9hdFNpemUmIHRpbGVTY2FsZUZhY3RvciwKICAgICAg
ICAgICAgIEltYWdlOjpUaWxlUnVsZSwgSW1hZ2U6OlRpbGVSdWxlLCBjb25zdCBJbWFnZVBhaW50
aW5nT3B0aW9ucyYgPSBJbWFnZVBhaW50aW5nT3B0aW9ucygpKTsKIAotICAgICAgICBXRUJDT1JF
X0VYUE9SVCB2b2lkIGRyYXdJbWFnZUJ1ZmZlcihJbWFnZUJ1ZmZlciosIENvbG9yU3BhY2UsIGNv
bnN0IEZsb2F0UG9pbnQmIGRlc3RpbmF0aW9uLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYg
PSBJbWFnZVBhaW50aW5nT3B0aW9ucygpKTsKLSAgICAgICAgdm9pZCBkcmF3SW1hZ2VCdWZmZXIo
SW1hZ2VCdWZmZXIqLCBDb2xvclNwYWNlLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBj
b25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgPSBJbWFnZVBhaW50aW5nT3B0aW9ucygpKTsKLSAg
ICAgICAgdm9pZCBkcmF3SW1hZ2VCdWZmZXIoSW1hZ2VCdWZmZXIqLCBDb2xvclNwYWNlLCBjb25z
dCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBjb25zdCBGbG9hdFJlY3QmIHNvdXJjZSwgY29uc3Qg
SW1hZ2VQYWludGluZ09wdGlvbnMmID0gSW1hZ2VQYWludGluZ09wdGlvbnMoKSk7CisgICAgICAg
IFdFQkNPUkVfRVhQT1JUIHZvaWQgZHJhd0ltYWdlQnVmZmVyKEltYWdlQnVmZmVyJiwgQ29sb3JT
cGFjZSwgY29uc3QgRmxvYXRQb2ludCYgZGVzdGluYXRpb24sIGNvbnN0IEltYWdlUGFpbnRpbmdP
cHRpb25zJiA9IEltYWdlUGFpbnRpbmdPcHRpb25zKCkpOworICAgICAgICB2b2lkIGRyYXdJbWFn
ZUJ1ZmZlcihJbWFnZUJ1ZmZlciYsIENvbG9yU3BhY2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGlu
YXRpb24sIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiA9IEltYWdlUGFpbnRpbmdPcHRpb25z
KCkpOworICAgICAgICB2b2lkIGRyYXdJbWFnZUJ1ZmZlcihJbWFnZUJ1ZmZlciYsIENvbG9yU3Bh
Y2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24sIGNvbnN0IEZsb2F0UmVjdCYgc291cmNl
LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgPSBJbWFnZVBhaW50aW5nT3B0aW9ucygpKTsK
IAogICAgICAgICB2b2lkIGRyYXdQYXR0ZXJuKEltYWdlJiwgY29uc3QgRmxvYXRSZWN0JiBzcmNS
ZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mLCBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgY29u
c3QgRmxvYXRTaXplJiBzcGFjaW5nLCBDb2xvclNwYWNlLCBDb21wb3NpdGVPcGVyYXRvciwgY29u
c3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgQmxlbmRNb2RlID0gQmxlbmRNb2RlTm9ybWFsKTsKIApA
QCAtMzMzLDcgKzMzMyw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdm9pZCBjbGlw
T3V0Um91bmRlZFJlY3QoY29uc3QgRmxvYXRSb3VuZGVkUmVjdCYpOwogICAgICAgICB2b2lkIGNs
aXBQYXRoKGNvbnN0IFBhdGgmLCBXaW5kUnVsZSk7CiAgICAgICAgIHZvaWQgY2xpcENvbnZleFBv
bHlnb24oc2l6ZV90IG51bVBvaW50cywgY29uc3QgRmxvYXRQb2ludCosIGJvb2wgYW50aWFsaWFz
ID0gdHJ1ZSk7Ci0gICAgICAgIHZvaWQgY2xpcFRvSW1hZ2VCdWZmZXIoSW1hZ2VCdWZmZXIqLCBj
b25zdCBGbG9hdFJlY3QmKTsKKyAgICAgICAgdm9pZCBjbGlwVG9JbWFnZUJ1ZmZlcihJbWFnZUJ1
ZmZlciYsIGNvbnN0IEZsb2F0UmVjdCYpOwogICAgICAgICAKICAgICAgICAgSW50UmVjdCBjbGlw
Qm91bmRzKCkgY29uc3Q7CiAKQEAgLTQ0Myw3ICs0NDMsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAgICAgICAgIC8vIENyZWF0ZSBhbiBpbWFnZSBidWZmZXIgY29tcGF0aWJsZSB3aXRoIHRoaXMg
Y29udGV4dCwgd2l0aCBzdWl0YWJsZSByZXNvbHV0aW9uCiAgICAgICAgIC8vIGZvciBkcmF3aW5n
IGludG8gdGhlIGJ1ZmZlciBhbmQgdGhlbiBpbnRvIHRoaXMgY29udGV4dC4KICAgICAgICAgc3Rk
Ojp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPiBjcmVhdGVDb21wYXRpYmxlQnVmZmVyKGNvbnN0IEZs
b2F0U2l6ZSYsIGJvb2wgaGFzQWxwaGEgPSB0cnVlKSBjb25zdDsKLSAgICAgICAgYm9vbCBpc0Nv
bXBhdGlibGVXaXRoQnVmZmVyKEltYWdlQnVmZmVyKikgY29uc3Q7CisgICAgICAgIGJvb2wgaXND
b21wYXRpYmxlV2l0aEJ1ZmZlcihJbWFnZUJ1ZmZlciYpIGNvbnN0OwogCiAgICAgICAgIC8vIFRo
aXMgZnVuY3Rpb24gYXBwbGllcyB0aGUgZGV2aWNlIHNjYWxlIGZhY3RvciB0byB0aGUgY29udGV4
dCwgbWFraW5nIHRoZSBjb250ZXh0IGNhcGFibGUgb2YKICAgICAgICAgLy8gYWN0aW5nIGFzIGEg
YmFzZS1sZXZlbCBjb250ZXh0IGZvciBhIEhpRFBJIGVudmlyb25tZW50LgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU2hhZG93Qmx1ci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9TaGFkb3dCbHVyLmNwcAppbmRleCBkNjYyMGM3OTAw
ODBhNmZkMGE3YzNkYjEzOWQ4OWUwMmZhMjk0ZWM3Li44NWFlZWVmZjcyZWUyNzBlNzYwMDgwZGM2
MGVlYjJiMDVjODE3NGEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9TaGFkb3dCbHVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9TaGFkb3dCbHVyLmNwcApAQCAtNDcyLDcgKzQ3Miw3IEBAIHZvaWQgU2hhZG93Qmx1cjo6ZHJh
d1NoYWRvd0J1ZmZlcihHcmFwaGljc0NvbnRleHQmIGdyYXBoaWNzQ29udGV4dCkKICAgICAgICAg
Ly8gYnV0IHdlIG1heSBub3QgaGF2ZSBjbGVhcmVkIGl0IGFsbCwgc28gY2xpcCB0byB0aGUgZmls
bGVkIHBhcnQgZmlyc3QuCiAgICAgICAgIGdyYXBoaWNzQ29udGV4dC5jbGlwKEZsb2F0UmVjdCht
X2xheWVyT3JpZ2luLCBtX2xheWVyU2l6ZSkpOwogICAgIH0KLSAgICBncmFwaGljc0NvbnRleHQu
Y2xpcFRvSW1hZ2VCdWZmZXIobV9sYXllckltYWdlLCBGbG9hdFJlY3QobV9sYXllck9yaWdpbiwg
YnVmZmVyU2l6ZSkpOworICAgIGdyYXBoaWNzQ29udGV4dC5jbGlwVG9JbWFnZUJ1ZmZlcigqbV9s
YXllckltYWdlLCBGbG9hdFJlY3QobV9sYXllck9yaWdpbiwgYnVmZmVyU2l6ZSkpOwogICAgIGdy
YXBoaWNzQ29udGV4dC5zZXRGaWxsQ29sb3IobV9jb2xvciwgbV9jb2xvclNwYWNlKTsKIAogICAg
IGdyYXBoaWNzQ29udGV4dC5jbGVhclNoYWRvdygpOwpAQCAtNTkzLDcgKzU5Myw3IEBAIHZvaWQg
U2hhZG93Qmx1cjo6ZHJhd1JlY3RTaGFkb3dXaXRob3V0VGlsaW5nKEdyYXBoaWNzQ29udGV4dCYg
Z3JhcGhpY3NDb250ZXh0LCBjCiAgICAgfQogICAgIAogICAgIGRyYXdTaGFkb3dCdWZmZXIoZ3Jh
cGhpY3NDb250ZXh0KTsKLSAgICBtX2xheWVySW1hZ2UgPSAwOworICAgIG1fbGF5ZXJJbWFnZSA9
IG51bGxwdHI7CiAgICAgU2NyYXRjaEJ1ZmZlcjo6c2luZ2xldG9uKCkuc2NoZWR1bGVTY3JhdGNo
QnVmZmVyUHVyZ2UoKTsKIH0KIApAQCAtNjM0LDcgKzYzNCw3IEBAIHZvaWQgU2hhZG93Qmx1cjo6
ZHJhd0luc2V0U2hhZG93V2l0aG91dFRpbGluZyhHcmFwaGljc0NvbnRleHQmIGdyYXBoaWNzQ29u
dGV4dCwKICAgICB9CiAgICAgCiAgICAgZHJhd1NoYWRvd0J1ZmZlcihncmFwaGljc0NvbnRleHQp
OwotICAgIG1fbGF5ZXJJbWFnZSA9IDA7CisgICAgbV9sYXllckltYWdlID0gbnVsbHB0cjsKICAg
ICBTY3JhdGNoQnVmZmVyOjpzaW5nbGV0b24oKS5zY2hlZHVsZVNjcmF0Y2hCdWZmZXJQdXJnZSgp
OwogfQogCkBAIC03MzEsNyArNzMxLDcgQEAgdm9pZCBTaGFkb3dCbHVyOjpkcmF3SW5zZXRTaGFk
b3dXaXRoVGlsaW5nKEdyYXBoaWNzQ29udGV4dCYgZ3JhcGhpY3NDb250ZXh0LCBjb24KICAgICAK
ICAgICBkcmF3TGF5ZXJQaWVjZXMoZ3JhcGhpY3NDb250ZXh0LCBkZXN0SG9sZUJvdW5kcywgaG9s
ZVJlY3QucmFkaWkoKSwgZWRnZVNpemUsIHRlbXBsYXRlU2l6ZSwgSW5uZXJTaGFkb3cpOwogCi0g
ICAgbV9sYXllckltYWdlID0gMDsKKyAgICBtX2xheWVySW1hZ2UgPSBudWxscHRyOwogICAgIFNj
cmF0Y2hCdWZmZXI6OnNpbmdsZXRvbigpLnNjaGVkdWxlU2NyYXRjaEJ1ZmZlclB1cmdlKCk7CiB9
CiAKQEAgLTc3Nyw3ICs3NzcsNyBAQCB2b2lkIFNoYWRvd0JsdXI6OmRyYXdSZWN0U2hhZG93V2l0
aFRpbGluZyhHcmFwaGljc0NvbnRleHQmIGdyYXBoaWNzQ29udGV4dCwgY29ucwogCiAgICAgZHJh
d0xheWVyUGllY2VzKGdyYXBoaWNzQ29udGV4dCwgc2hhZG93Qm91bmRzLCBzaGFkb3dlZFJlY3Qu
cmFkaWkoKSwgZWRnZVNpemUsIHRlbXBsYXRlU2l6ZSwgT3V0ZXJTaGFkb3cpOwogCi0gICAgbV9s
YXllckltYWdlID0gMDsKKyAgICBtX2xheWVySW1hZ2UgPSBudWxscHRyOwogICAgIFNjcmF0Y2hC
dWZmZXI6OnNpbmdsZXRvbigpLnNjaGVkdWxlU2NyYXRjaEJ1ZmZlclB1cmdlKCk7CiB9CiAKQEAg
LTgxNiw0NiArODE2LDQ2IEBAIHZvaWQgU2hhZG93Qmx1cjo6ZHJhd0xheWVyUGllY2VzKEdyYXBo
aWNzQ29udGV4dCYgZ3JhcGhpY3NDb250ZXh0LCBjb25zdCBGbG9hdFJlCiAgICAgLy8gVG9wIHNp
ZGUuCiAgICAgRmxvYXRSZWN0IHRpbGVSZWN0ID0gRmxvYXRSZWN0KGxlZnRTbGljZSwgMCwgdGVt
cGxhdGVTaWRlTGVuZ3RoLCB0b3BTbGljZSk7CiAgICAgRmxvYXRSZWN0IGRlc3RSZWN0ID0gRmxv
YXRSZWN0KGNlbnRlclJlY3QueCgpLCBjZW50ZXJSZWN0LnkoKSAtIHRvcFNsaWNlLCBjZW50ZXJS
ZWN0LndpZHRoKCksIHRvcFNsaWNlKTsKLSAgICBncmFwaGljc0NvbnRleHQuZHJhd0ltYWdlQnVm
ZmVyKG1fbGF5ZXJJbWFnZSwgQ29sb3JTcGFjZURldmljZVJHQiwgZGVzdFJlY3QsIHRpbGVSZWN0
KTsKKyAgICBncmFwaGljc0NvbnRleHQuZHJhd0ltYWdlQnVmZmVyKCptX2xheWVySW1hZ2UsIENv
bG9yU3BhY2VEZXZpY2VSR0IsIGRlc3RSZWN0LCB0aWxlUmVjdCk7CiAKICAgICAvLyBEcmF3IHRo
ZSBib3R0b20gc2lkZS4KICAgICB0aWxlUmVjdC5zZXRZKHRlbXBsYXRlU2l6ZS5oZWlnaHQoKSAt
IGJvdHRvbVNsaWNlKTsKICAgICB0aWxlUmVjdC5zZXRIZWlnaHQoYm90dG9tU2xpY2UpOwogICAg
IGRlc3RSZWN0LnNldFkoY2VudGVyUmVjdC5tYXhZKCkpOwogICAgIGRlc3RSZWN0LnNldEhlaWdo
dChib3R0b21TbGljZSk7Ci0gICAgZ3JhcGhpY3NDb250ZXh0LmRyYXdJbWFnZUJ1ZmZlcihtX2xh
eWVySW1hZ2UsIENvbG9yU3BhY2VEZXZpY2VSR0IsIGRlc3RSZWN0LCB0aWxlUmVjdCk7CisgICAg
Z3JhcGhpY3NDb250ZXh0LmRyYXdJbWFnZUJ1ZmZlcigqbV9sYXllckltYWdlLCBDb2xvclNwYWNl
RGV2aWNlUkdCLCBkZXN0UmVjdCwgdGlsZVJlY3QpOwogCiAgICAgLy8gTGVmdCBzaWRlLgogICAg
IHRpbGVSZWN0ID0gRmxvYXRSZWN0KDAsIHRvcFNsaWNlLCBsZWZ0U2xpY2UsIHRlbXBsYXRlU2lk
ZUxlbmd0aCk7CiAgICAgZGVzdFJlY3QgPSBGbG9hdFJlY3QoY2VudGVyUmVjdC54KCkgLSBsZWZ0
U2xpY2UsIGNlbnRlclJlY3QueSgpLCBsZWZ0U2xpY2UsIGNlbnRlclJlY3QuaGVpZ2h0KCkpOwot
ICAgIGdyYXBoaWNzQ29udGV4dC5kcmF3SW1hZ2VCdWZmZXIobV9sYXllckltYWdlLCBDb2xvclNw
YWNlRGV2aWNlUkdCLCBkZXN0UmVjdCwgdGlsZVJlY3QpOworICAgIGdyYXBoaWNzQ29udGV4dC5k
cmF3SW1hZ2VCdWZmZXIoKm1fbGF5ZXJJbWFnZSwgQ29sb3JTcGFjZURldmljZVJHQiwgZGVzdFJl
Y3QsIHRpbGVSZWN0KTsKIAogICAgIC8vIFJpZ2h0IHNpZGUuCiAgICAgdGlsZVJlY3Quc2V0WCh0
ZW1wbGF0ZVNpemUud2lkdGgoKSAtIHJpZ2h0U2xpY2UpOwogICAgIHRpbGVSZWN0LnNldFdpZHRo
KHJpZ2h0U2xpY2UpOwogICAgIGRlc3RSZWN0LnNldFgoY2VudGVyUmVjdC5tYXhYKCkpOwogICAg
IGRlc3RSZWN0LnNldFdpZHRoKHJpZ2h0U2xpY2UpOwotICAgIGdyYXBoaWNzQ29udGV4dC5kcmF3
SW1hZ2VCdWZmZXIobV9sYXllckltYWdlLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBkZXN0UmVjdCwg
dGlsZVJlY3QpOworICAgIGdyYXBoaWNzQ29udGV4dC5kcmF3SW1hZ2VCdWZmZXIoKm1fbGF5ZXJJ
bWFnZSwgQ29sb3JTcGFjZURldmljZVJHQiwgZGVzdFJlY3QsIHRpbGVSZWN0KTsKIAogICAgIC8v
IFRvcCBsZWZ0IGNvcm5lci4KICAgICB0aWxlUmVjdCA9IEZsb2F0UmVjdCgwLCAwLCBsZWZ0U2xp
Y2UsIHRvcFNsaWNlKTsKICAgICBkZXN0UmVjdCA9IEZsb2F0UmVjdChjZW50ZXJSZWN0LngoKSAt
IGxlZnRTbGljZSwgY2VudGVyUmVjdC55KCkgLSB0b3BTbGljZSwgbGVmdFNsaWNlLCB0b3BTbGlj
ZSk7Ci0gICAgZ3JhcGhpY3NDb250ZXh0LmRyYXdJbWFnZUJ1ZmZlcihtX2xheWVySW1hZ2UsIENv
bG9yU3BhY2VEZXZpY2VSR0IsIGRlc3RSZWN0LCB0aWxlUmVjdCk7CisgICAgZ3JhcGhpY3NDb250
ZXh0LmRyYXdJbWFnZUJ1ZmZlcigqbV9sYXllckltYWdlLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBk
ZXN0UmVjdCwgdGlsZVJlY3QpOwogCiAgICAgLy8gVG9wIHJpZ2h0IGNvcm5lci4KICAgICB0aWxl
UmVjdCA9IEZsb2F0UmVjdCh0ZW1wbGF0ZVNpemUud2lkdGgoKSAtIHJpZ2h0U2xpY2UsIDAsIHJp
Z2h0U2xpY2UsIHRvcFNsaWNlKTsKICAgICBkZXN0UmVjdCA9IEZsb2F0UmVjdChjZW50ZXJSZWN0
Lm1heFgoKSwgY2VudGVyUmVjdC55KCkgLSB0b3BTbGljZSwgcmlnaHRTbGljZSwgdG9wU2xpY2Up
OwotICAgIGdyYXBoaWNzQ29udGV4dC5kcmF3SW1hZ2VCdWZmZXIobV9sYXllckltYWdlLCBDb2xv
clNwYWNlRGV2aWNlUkdCLCBkZXN0UmVjdCwgdGlsZVJlY3QpOworICAgIGdyYXBoaWNzQ29udGV4
dC5kcmF3SW1hZ2VCdWZmZXIoKm1fbGF5ZXJJbWFnZSwgQ29sb3JTcGFjZURldmljZVJHQiwgZGVz
dFJlY3QsIHRpbGVSZWN0KTsKIAogICAgIC8vIEJvdHRvbSByaWdodCBjb3JuZXIuCiAgICAgdGls
ZVJlY3QgPSBGbG9hdFJlY3QodGVtcGxhdGVTaXplLndpZHRoKCkgLSByaWdodFNsaWNlLCB0ZW1w
bGF0ZVNpemUuaGVpZ2h0KCkgLSBib3R0b21TbGljZSwgcmlnaHRTbGljZSwgYm90dG9tU2xpY2Up
OwogICAgIGRlc3RSZWN0ID0gRmxvYXRSZWN0KGNlbnRlclJlY3QubWF4WCgpLCBjZW50ZXJSZWN0
Lm1heFkoKSwgcmlnaHRTbGljZSwgYm90dG9tU2xpY2UpOwotICAgIGdyYXBoaWNzQ29udGV4dC5k
cmF3SW1hZ2VCdWZmZXIobV9sYXllckltYWdlLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBkZXN0UmVj
dCwgdGlsZVJlY3QpOworICAgIGdyYXBoaWNzQ29udGV4dC5kcmF3SW1hZ2VCdWZmZXIoKm1fbGF5
ZXJJbWFnZSwgQ29sb3JTcGFjZURldmljZVJHQiwgZGVzdFJlY3QsIHRpbGVSZWN0KTsKIAogICAg
IC8vIEJvdHRvbSBsZWZ0IGNvcm5lci4KICAgICB0aWxlUmVjdCA9IEZsb2F0UmVjdCgwLCB0ZW1w
bGF0ZVNpemUuaGVpZ2h0KCkgLSBib3R0b21TbGljZSwgbGVmdFNsaWNlLCBib3R0b21TbGljZSk7
CiAgICAgZGVzdFJlY3QgPSBGbG9hdFJlY3QoY2VudGVyUmVjdC54KCkgLSBsZWZ0U2xpY2UsIGNl
bnRlclJlY3QubWF4WSgpLCBsZWZ0U2xpY2UsIGJvdHRvbVNsaWNlKTsKLSAgICBncmFwaGljc0Nv
bnRleHQuZHJhd0ltYWdlQnVmZmVyKG1fbGF5ZXJJbWFnZSwgQ29sb3JTcGFjZURldmljZVJHQiwg
ZGVzdFJlY3QsIHRpbGVSZWN0KTsKKyAgICBncmFwaGljc0NvbnRleHQuZHJhd0ltYWdlQnVmZmVy
KCptX2xheWVySW1hZ2UsIENvbG9yU3BhY2VEZXZpY2VSR0IsIGRlc3RSZWN0LCB0aWxlUmVjdCk7
CiB9CiAKIApAQCAtOTE1LDkgKzkxNSw5IEBAIHZvaWQgU2hhZG93Qmx1cjo6ZW5kU2hhZG93TGF5
ZXIoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KQogICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2
ZXIgc3RhdGVTYXZlKGNvbnRleHQpOwogCiAgICAgY29udGV4dC5jbGVhclNoYWRvdygpOwotICAg
IGNvbnRleHQuZHJhd0ltYWdlQnVmZmVyKG1fbGF5ZXJJbWFnZSwgQ29sb3JTcGFjZURldmljZVJH
QiwgRmxvYXRSZWN0KHJvdW5kZWRJbnRQb2ludChtX2xheWVyT3JpZ2luKSwgbV9sYXllclNpemUp
LCBGbG9hdFJlY3QoRmxvYXRQb2ludCgpLCBtX2xheWVyU2l6ZSksIGNvbnRleHQuY29tcG9zaXRl
T3BlcmF0aW9uKCkpOworICAgIGNvbnRleHQuZHJhd0ltYWdlQnVmZmVyKCptX2xheWVySW1hZ2Us
IENvbG9yU3BhY2VEZXZpY2VSR0IsIEZsb2F0UmVjdChyb3VuZGVkSW50UG9pbnQobV9sYXllck9y
aWdpbiksIG1fbGF5ZXJTaXplKSwgRmxvYXRSZWN0KEZsb2F0UG9pbnQoKSwgbV9sYXllclNpemUp
LCBjb250ZXh0LmNvbXBvc2l0ZU9wZXJhdGlvbigpKTsKIAotICAgIG1fbGF5ZXJJbWFnZSA9IDA7
CisgICAgbV9sYXllckltYWdlID0gbnVsbHB0cjsKICAgICBTY3JhdGNoQnVmZmVyOjpzaW5nbGV0
b24oKS5zY2hlZHVsZVNjcmF0Y2hCdWZmZXJQdXJnZSgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm8u
Y3BwCmluZGV4IGE5N2M1OGQyMWQwNWViMDg0Y2QwMzNkYjg5NTM3OGJmNTIwMjU3MTkuLjNlNTIx
M2Y4NmRhNjUxMmRlNjFkZmE1YmY5ZjY1YWU3MWM4MmUzZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm8uY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm8u
Y3BwCkBAIC0xNzAsNyArMTcwLDcgQEAgdm9pZCBJbWFnZUJ1ZmZlcjo6ZHJhdyhHcmFwaGljc0Nv
bnRleHQmIGRlc3RpbmF0aW9uQ29udGV4dCwgQ29sb3JTcGFjZSBzdHlsZUNvbG8KIHsKICAgICBC
YWNraW5nU3RvcmVDb3B5IGNvcHlNb2RlID0gJmRlc3RpbmF0aW9uQ29udGV4dCA9PSAmY29udGV4
dCgpID8gQ29weUJhY2tpbmdTdG9yZSA6IERvbnRDb3B5QmFja2luZ1N0b3JlOwogICAgIFJlZlB0
cjxJbWFnZT4gaW1hZ2UgPSBjb3B5SW1hZ2UoY29weU1vZGUpOwotICAgIGRlc3RpbmF0aW9uQ29u
dGV4dC5kcmF3SW1hZ2UoaW1hZ2UuZ2V0KCksIHN0eWxlQ29sb3JTcGFjZSwgZGVzdFJlY3QsIHNy
Y1JlY3QsIEltYWdlUGFpbnRpbmdPcHRpb25zKG9wLCBibGVuZE1vZGUsIEltYWdlT3JpZW50YXRp
b25EZXNjcmlwdGlvbigpLCB1c2VMb3dRdWFsaXR5U2NhbGUpKTsKKyAgICBkZXN0aW5hdGlvbkNv
bnRleHQuZHJhd0ltYWdlKCppbWFnZSwgc3R5bGVDb2xvclNwYWNlLCBkZXN0UmVjdCwgc3JjUmVj
dCwgSW1hZ2VQYWludGluZ09wdGlvbnMob3AsIGJsZW5kTW9kZSwgSW1hZ2VPcmllbnRhdGlvbkRl
c2NyaXB0aW9uKCksIHVzZUxvd1F1YWxpdHlTY2FsZSkpOwogfQogCiB2b2lkIEltYWdlQnVmZmVy
OjpkcmF3UGF0dGVybihHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYg
c3JjUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBwYXR0ZXJuVHJhbnNmb3JtLApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUERGRG9jdW1lbnRJbWFn
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9QREZEb2N1bWVudElt
YWdlLmNwcAppbmRleCBmNGIwNDg1NzFlYzk4Mzk2MTNjNDRkMjQ5ZDJiNDJhNzk1NGNkZmU5Li44
ZWUyYjgyNGM1OTJhMzFlOGZmMmFmNzE1ZjM3NDcyNmMwZWQyZTJhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9QREZEb2N1bWVudEltYWdlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9QREZEb2N1bWVudEltYWdlLmNw
cApAQCAtMTkwLDcgKzE5MCw3IEBAIHZvaWQgUERGRG9jdW1lbnRJbWFnZTo6ZHJhdyhHcmFwaGlj
c0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwKICAgICAgICAgY29u
dGV4dC5zZXRDb21wb3NpdGVPcGVyYXRpb24ob3ApOwogCiAgICAgICAgIGlmIChtX2NhY2hlZElt
YWdlQnVmZmVyKQotICAgICAgICAgICAgY29udGV4dC5kcmF3SW1hZ2VCdWZmZXIobV9jYWNoZWRJ
bWFnZUJ1ZmZlci5nZXQoKSwgQ29sb3JTcGFjZURldmljZVJHQiwgZHN0UmVjdCk7CisgICAgICAg
ICAgICBjb250ZXh0LmRyYXdJbWFnZUJ1ZmZlcigqbV9jYWNoZWRJbWFnZUJ1ZmZlciwgQ29sb3JT
cGFjZURldmljZVJHQiwgZHN0UmVjdCk7CiAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgdHJh
bnNmb3JtQ29udGV4dEZvclBhaW50aW5nKGNvbnRleHQsIGRzdFJlY3QsIHNyY1JlY3QpOwogICAg
ICAgICAgICAgZHJhd1BERlBhZ2UoY29udGV4dCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQmxlbmQuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUJsZW5kLmNwcAppbmRleCAwODlmNDUwNTIzMzlh
ZTBiMmJmMjk2YTBmYTc0ZTU2YzExYzg3ZmI1Li5lZGVmNTc4MDE4MmZjYzgwZmU1Nzk1MzkxMmQ0
YWQ5NWEzNzZhMDNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9maWx0ZXJzL0ZFQmxlbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2ZpbHRlcnMvRkVCbGVuZC5jcHAKQEAgLTcyLDExICs3MiwxMSBAQCB2b2lkIEZFQmxlbmQ6
OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZSgpCiAKICAgICBJbWFnZUJ1ZmZlciogaW1hZ2VCdWZmZXIg
PSBpbi0+YXNJbWFnZUJ1ZmZlcigpOwogICAgIEltYWdlQnVmZmVyKiBpbWFnZUJ1ZmZlcjIgPSBp
bjItPmFzSW1hZ2VCdWZmZXIoKTsKLSAgICBBU1NFUlQoaW1hZ2VCdWZmZXIpOwotICAgIEFTU0VS
VChpbWFnZUJ1ZmZlcjIpOworICAgIGlmICghaW1hZ2VCdWZmZXIgfHwgIWltYWdlQnVmZmVyMikK
KyAgICAgICAgcmV0dXJuOwogCi0gICAgZmlsdGVyQ29udGV4dC5kcmF3SW1hZ2VCdWZmZXIoaW1h
Z2VCdWZmZXIyLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBkcmF3aW5nUmVnaW9uT2ZJbnB1dEltYWdl
KGluMi0+YWJzb2x1dGVQYWludFJlY3QoKSkpOwotICAgIGZpbHRlckNvbnRleHQuZHJhd0ltYWdl
QnVmZmVyKGltYWdlQnVmZmVyLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBkcmF3aW5nUmVnaW9uT2ZJ
bnB1dEltYWdlKGluLT5hYnNvbHV0ZVBhaW50UmVjdCgpKSwgSW50UmVjdChJbnRQb2ludCgpLCBp
bWFnZUJ1ZmZlci0+bG9naWNhbFNpemUoKSksIEltYWdlUGFpbnRpbmdPcHRpb25zKENvbXBvc2l0
ZVNvdXJjZU92ZXIsIG1fbW9kZSkpOworICAgIGZpbHRlckNvbnRleHQuZHJhd0ltYWdlQnVmZmVy
KCppbWFnZUJ1ZmZlcjIsIENvbG9yU3BhY2VEZXZpY2VSR0IsIGRyYXdpbmdSZWdpb25PZklucHV0
SW1hZ2UoaW4yLT5hYnNvbHV0ZVBhaW50UmVjdCgpKSk7CisgICAgZmlsdGVyQ29udGV4dC5kcmF3
SW1hZ2VCdWZmZXIoKmltYWdlQnVmZmVyLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBkcmF3aW5nUmVn
aW9uT2ZJbnB1dEltYWdlKGluLT5hYnNvbHV0ZVBhaW50UmVjdCgpKSwgSW50UmVjdChJbnRQb2lu
dCgpLCBpbWFnZUJ1ZmZlci0+bG9naWNhbFNpemUoKSksIEltYWdlUGFpbnRpbmdPcHRpb25zKENv
bXBvc2l0ZVNvdXJjZU92ZXIsIG1fbW9kZSkpOwogfQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb2xvck1hdHJpeC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29sb3JNYXRyaXgu
Y3BwCmluZGV4IDg3NjZhZWNiMjIzM2M5YWE5M2IzZjU5OGZmMmU2MzEzOGYyNTY4ZmYuLjc4ZmZk
Y2U0ZDU5MWFkNmE4MTIyZmU2Mzg4MjM5M2ZmNTUxYWU3NzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb2xvck1hdHJpeC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNvbG9yTWF0cml4LmNw
cApAQCAtMTQ3LDcgKzE0Nyw5IEBAIHZvaWQgRkVDb2xvck1hdHJpeDo6cGxhdGZvcm1BcHBseVNv
ZnR3YXJlKCkKICAgICBpZiAoIXJlc3VsdEltYWdlKQogICAgICAgICByZXR1cm47CiAKLSAgICBy
ZXN1bHRJbWFnZS0+Y29udGV4dCgpLmRyYXdJbWFnZUJ1ZmZlcihpbi0+YXNJbWFnZUJ1ZmZlcigp
LCBDb2xvclNwYWNlRGV2aWNlUkdCLCBkcmF3aW5nUmVnaW9uT2ZJbnB1dEltYWdlKGluLT5hYnNv
bHV0ZVBhaW50UmVjdCgpKSk7CisgICAgSW1hZ2VCdWZmZXIqIGluQnVmZmVyID0gaW4tPmFzSW1h
Z2VCdWZmZXIoKTsKKyAgICBpZiAoaW5CdWZmZXIpCisgICAgICAgIHJlc3VsdEltYWdlLT5jb250
ZXh0KCkuZHJhd0ltYWdlQnVmZmVyKCppbkJ1ZmZlciwgQ29sb3JTcGFjZURldmljZVJHQiwgZHJh
d2luZ1JlZ2lvbk9mSW5wdXRJbWFnZShpbi0+YWJzb2x1dGVQYWludFJlY3QoKSkpOwogCiAgICAg
SW50UmVjdCBpbWFnZVJlY3QoSW50UG9pbnQoKSwgcmVzdWx0SW1hZ2UtPmxvZ2ljYWxTaXplKCkp
OwogICAgIFJlZlB0cjxVaW50OENsYW1wZWRBcnJheT4gcGl4ZWxBcnJheSA9IHJlc3VsdEltYWdl
LT5nZXRVbm11bHRpcGxpZWRJbWFnZURhdGEoaW1hZ2VSZWN0KTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb21wb3NpdGUuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNvbXBvc2l0ZS5jcHAKaW5k
ZXggZmNjODFlODcxMzhmYmRmM2VjMTA3NzA5Njk3YjQxYTM3OWExOTc5YS4uOWExNTZmODk0ZGYx
NDNlZThlMzg1ODY4NzhkMDcwOTIyOGUxYmZlOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNvbXBvc2l0ZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNvbXBvc2l0ZS5jcHAKQEAgLTI3Niwx
MyArMjc2LDEzIEBAIHZvaWQgRkVDb21wb3NpdGU6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZSgpCiAK
ICAgICBJbWFnZUJ1ZmZlciogaW1hZ2VCdWZmZXIgPSBpbi0+YXNJbWFnZUJ1ZmZlcigpOwogICAg
IEltYWdlQnVmZmVyKiBpbWFnZUJ1ZmZlcjIgPSBpbjItPmFzSW1hZ2VCdWZmZXIoKTsKLSAgICBB
U1NFUlQoaW1hZ2VCdWZmZXIpOwotICAgIEFTU0VSVChpbWFnZUJ1ZmZlcjIpOworICAgIGlmICgh
aW1hZ2VCdWZmZXIgfHwgIWltYWdlQnVmZmVyMikKKyAgICAgICAgcmV0dXJuOwogCiAgICAgc3dp
dGNoIChtX3R5cGUpIHsKICAgICBjYXNlIEZFQ09NUE9TSVRFX09QRVJBVE9SX09WRVI6Ci0gICAg
ICAgIGZpbHRlckNvbnRleHQuZHJhd0ltYWdlQnVmZmVyKGltYWdlQnVmZmVyMiwgQ29sb3JTcGFj
ZURldmljZVJHQiwgZHJhd2luZ1JlZ2lvbk9mSW5wdXRJbWFnZShpbjItPmFic29sdXRlUGFpbnRS
ZWN0KCkpKTsKLSAgICAgICAgZmlsdGVyQ29udGV4dC5kcmF3SW1hZ2VCdWZmZXIoaW1hZ2VCdWZm
ZXIsIENvbG9yU3BhY2VEZXZpY2VSR0IsIGRyYXdpbmdSZWdpb25PZklucHV0SW1hZ2UoaW4tPmFi
c29sdXRlUGFpbnRSZWN0KCkpKTsKKyAgICAgICAgZmlsdGVyQ29udGV4dC5kcmF3SW1hZ2VCdWZm
ZXIoKmltYWdlQnVmZmVyMiwgQ29sb3JTcGFjZURldmljZVJHQiwgZHJhd2luZ1JlZ2lvbk9mSW5w
dXRJbWFnZShpbjItPmFic29sdXRlUGFpbnRSZWN0KCkpKTsKKyAgICAgICAgZmlsdGVyQ29udGV4
dC5kcmF3SW1hZ2VCdWZmZXIoKmltYWdlQnVmZmVyLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBkcmF3
aW5nUmVnaW9uT2ZJbnB1dEltYWdlKGluLT5hYnNvbHV0ZVBhaW50UmVjdCgpKSk7CiAgICAgICAg
IGJyZWFrOwogICAgIGNhc2UgRkVDT01QT1NJVEVfT1BFUkFUT1JfSU46IHsKICAgICAgICAgLy8g
QXBwbGllcyBvbmx5IHRvIHRoZSBpbnRlcnNlY3RlZCByZWdpb24uCkBAIC0yOTQsMjEgKzI5NCwy
MSBAQCB2b2lkIEZFQ29tcG9zaXRlOjpwbGF0Zm9ybUFwcGx5U29mdHdhcmUoKQogICAgICAgICBJ
bnRSZWN0IGFkanVzdGVkRGVzdGluYXRpb25SZWN0ID0gZGVzdGluYXRpb25SZWN0IC0gYWJzb2x1
dGVQYWludFJlY3QoKS5sb2NhdGlvbigpOwogICAgICAgICBJbnRSZWN0IHNvdXJjZVJlY3QgPSBk
ZXN0aW5hdGlvblJlY3QgLSBpbi0+YWJzb2x1dGVQYWludFJlY3QoKS5sb2NhdGlvbigpOwogICAg
ICAgICBJbnRSZWN0IHNvdXJjZTJSZWN0ID0gZGVzdGluYXRpb25SZWN0IC0gaW4yLT5hYnNvbHV0
ZVBhaW50UmVjdCgpLmxvY2F0aW9uKCk7Ci0gICAgICAgIGZpbHRlckNvbnRleHQuZHJhd0ltYWdl
QnVmZmVyKGltYWdlQnVmZmVyMiwgQ29sb3JTcGFjZURldmljZVJHQiwgYWRqdXN0ZWREZXN0aW5h
dGlvblJlY3QsIHNvdXJjZTJSZWN0KTsKLSAgICAgICAgZmlsdGVyQ29udGV4dC5kcmF3SW1hZ2VC
dWZmZXIoaW1hZ2VCdWZmZXIsIENvbG9yU3BhY2VEZXZpY2VSR0IsIGFkanVzdGVkRGVzdGluYXRp
b25SZWN0LCBzb3VyY2VSZWN0LCBDb21wb3NpdGVTb3VyY2VJbik7CisgICAgICAgIGZpbHRlckNv
bnRleHQuZHJhd0ltYWdlQnVmZmVyKCppbWFnZUJ1ZmZlcjIsIENvbG9yU3BhY2VEZXZpY2VSR0Is
IGFkanVzdGVkRGVzdGluYXRpb25SZWN0LCBzb3VyY2UyUmVjdCk7CisgICAgICAgIGZpbHRlckNv
bnRleHQuZHJhd0ltYWdlQnVmZmVyKCppbWFnZUJ1ZmZlciwgQ29sb3JTcGFjZURldmljZVJHQiwg
YWRqdXN0ZWREZXN0aW5hdGlvblJlY3QsIHNvdXJjZVJlY3QsIENvbXBvc2l0ZVNvdXJjZUluKTsK
ICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgIGNhc2UgRkVDT01QT1NJVEVfT1BFUkFUT1JfT1VU
OgotICAgICAgICBmaWx0ZXJDb250ZXh0LmRyYXdJbWFnZUJ1ZmZlcihpbWFnZUJ1ZmZlciwgQ29s
b3JTcGFjZURldmljZVJHQiwgZHJhd2luZ1JlZ2lvbk9mSW5wdXRJbWFnZShpbi0+YWJzb2x1dGVQ
YWludFJlY3QoKSkpOwotICAgICAgICBmaWx0ZXJDb250ZXh0LmRyYXdJbWFnZUJ1ZmZlcihpbWFn
ZUJ1ZmZlcjIsIENvbG9yU3BhY2VEZXZpY2VSR0IsIGRyYXdpbmdSZWdpb25PZklucHV0SW1hZ2Uo
aW4yLT5hYnNvbHV0ZVBhaW50UmVjdCgpKSwgSW50UmVjdChJbnRQb2ludCgpLCBpbWFnZUJ1ZmZl
cjItPmxvZ2ljYWxTaXplKCkpLCBDb21wb3NpdGVEZXN0aW5hdGlvbk91dCk7CisgICAgICAgIGZp
bHRlckNvbnRleHQuZHJhd0ltYWdlQnVmZmVyKCppbWFnZUJ1ZmZlciwgQ29sb3JTcGFjZURldmlj
ZVJHQiwgZHJhd2luZ1JlZ2lvbk9mSW5wdXRJbWFnZShpbi0+YWJzb2x1dGVQYWludFJlY3QoKSkp
OworICAgICAgICBmaWx0ZXJDb250ZXh0LmRyYXdJbWFnZUJ1ZmZlcigqaW1hZ2VCdWZmZXIyLCBD
b2xvclNwYWNlRGV2aWNlUkdCLCBkcmF3aW5nUmVnaW9uT2ZJbnB1dEltYWdlKGluMi0+YWJzb2x1
dGVQYWludFJlY3QoKSksIEludFJlY3QoSW50UG9pbnQoKSwgaW1hZ2VCdWZmZXIyLT5sb2dpY2Fs
U2l6ZSgpKSwgQ29tcG9zaXRlRGVzdGluYXRpb25PdXQpOwogICAgICAgICBicmVhazsKICAgICBj
YXNlIEZFQ09NUE9TSVRFX09QRVJBVE9SX0FUT1A6Ci0gICAgICAgIGZpbHRlckNvbnRleHQuZHJh
d0ltYWdlQnVmZmVyKGltYWdlQnVmZmVyMiwgQ29sb3JTcGFjZURldmljZVJHQiwgZHJhd2luZ1Jl
Z2lvbk9mSW5wdXRJbWFnZShpbjItPmFic29sdXRlUGFpbnRSZWN0KCkpKTsKLSAgICAgICAgZmls
dGVyQ29udGV4dC5kcmF3SW1hZ2VCdWZmZXIoaW1hZ2VCdWZmZXIsIENvbG9yU3BhY2VEZXZpY2VS
R0IsIGRyYXdpbmdSZWdpb25PZklucHV0SW1hZ2UoaW4tPmFic29sdXRlUGFpbnRSZWN0KCkpLCBJ
bnRSZWN0KEludFBvaW50KCksIGltYWdlQnVmZmVyLT5sb2dpY2FsU2l6ZSgpKSwgQ29tcG9zaXRl
U291cmNlQXRvcCk7CisgICAgICAgIGZpbHRlckNvbnRleHQuZHJhd0ltYWdlQnVmZmVyKCppbWFn
ZUJ1ZmZlcjIsIENvbG9yU3BhY2VEZXZpY2VSR0IsIGRyYXdpbmdSZWdpb25PZklucHV0SW1hZ2Uo
aW4yLT5hYnNvbHV0ZVBhaW50UmVjdCgpKSk7CisgICAgICAgIGZpbHRlckNvbnRleHQuZHJhd0lt
YWdlQnVmZmVyKCppbWFnZUJ1ZmZlciwgQ29sb3JTcGFjZURldmljZVJHQiwgZHJhd2luZ1JlZ2lv
bk9mSW5wdXRJbWFnZShpbi0+YWJzb2x1dGVQYWludFJlY3QoKSksIEludFJlY3QoSW50UG9pbnQo
KSwgaW1hZ2VCdWZmZXItPmxvZ2ljYWxTaXplKCkpLCBDb21wb3NpdGVTb3VyY2VBdG9wKTsKICAg
ICAgICAgYnJlYWs7CiAgICAgY2FzZSBGRUNPTVBPU0lURV9PUEVSQVRPUl9YT1I6Ci0gICAgICAg
IGZpbHRlckNvbnRleHQuZHJhd0ltYWdlQnVmZmVyKGltYWdlQnVmZmVyMiwgQ29sb3JTcGFjZURl
dmljZVJHQiwgZHJhd2luZ1JlZ2lvbk9mSW5wdXRJbWFnZShpbjItPmFic29sdXRlUGFpbnRSZWN0
KCkpKTsKLSAgICAgICAgZmlsdGVyQ29udGV4dC5kcmF3SW1hZ2VCdWZmZXIoaW1hZ2VCdWZmZXIs
IENvbG9yU3BhY2VEZXZpY2VSR0IsIGRyYXdpbmdSZWdpb25PZklucHV0SW1hZ2UoaW4tPmFic29s
dXRlUGFpbnRSZWN0KCkpLCBJbnRSZWN0KEludFBvaW50KCksIGltYWdlQnVmZmVyLT5sb2dpY2Fs
U2l6ZSgpKSwgQ29tcG9zaXRlWE9SKTsKKyAgICAgICAgZmlsdGVyQ29udGV4dC5kcmF3SW1hZ2VC
dWZmZXIoKmltYWdlQnVmZmVyMiwgQ29sb3JTcGFjZURldmljZVJHQiwgZHJhd2luZ1JlZ2lvbk9m
SW5wdXRJbWFnZShpbjItPmFic29sdXRlUGFpbnRSZWN0KCkpKTsKKyAgICAgICAgZmlsdGVyQ29u
dGV4dC5kcmF3SW1hZ2VCdWZmZXIoKmltYWdlQnVmZmVyLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBk
cmF3aW5nUmVnaW9uT2ZJbnB1dEltYWdlKGluLT5hYnNvbHV0ZVBhaW50UmVjdCgpKSwgSW50UmVj
dChJbnRQb2ludCgpLCBpbWFnZUJ1ZmZlci0+bG9naWNhbFNpemUoKSksIENvbXBvc2l0ZVhPUik7
CiAgICAgICAgIGJyZWFrOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIGJyZWFrOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRURyb3BTaGFkb3cu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRURyb3BTaGFk
b3cuY3BwCmluZGV4IDYzM2ViYzY2MGIxZDc2Y2I0YmQ5ODg2ZTAxMWUwYjgzNzViOTVhYjkuLmRj
ZTVhYWUyNWYyOTdhYTg4YjZmOGE4M2NiYzJkYTg0YjAwY2U5NmUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVEcm9wU2hhZG93LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFRHJvcFNoYWRvdy5j
cHAKQEAgLTg4LDEwICs4OCwxMiBAQCB2b2lkIEZFRHJvcFNoYWRvdzo6cGxhdGZvcm1BcHBseVNv
ZnR3YXJlKCkKICAgICBkcmF3aW5nUmVnaW9uV2l0aE9mZnNldC5tb3ZlKG9mZnNldCk7CiAKICAg
ICBJbWFnZUJ1ZmZlciogc291cmNlSW1hZ2UgPSBpbi0+YXNJbWFnZUJ1ZmZlcigpOwotICAgIEFT
U0VSVChzb3VyY2VJbWFnZSk7CisgICAgaWYgKCFzb3VyY2VJbWFnZSkKKyAgICAgICAgcmV0dXJu
OworCiAgICAgR3JhcGhpY3NDb250ZXh0JiByZXN1bHRDb250ZXh0ID0gcmVzdWx0SW1hZ2UtPmNv
bnRleHQoKTsKICAgICByZXN1bHRDb250ZXh0LnNldEFscGhhKG1fc2hhZG93T3BhY2l0eSk7Ci0g
ICAgcmVzdWx0Q29udGV4dC5kcmF3SW1hZ2VCdWZmZXIoc291cmNlSW1hZ2UsIENvbG9yU3BhY2VE
ZXZpY2VSR0IsIGRyYXdpbmdSZWdpb25XaXRoT2Zmc2V0KTsKKyAgICByZXN1bHRDb250ZXh0LmRy
YXdJbWFnZUJ1ZmZlcigqc291cmNlSW1hZ2UsIENvbG9yU3BhY2VEZXZpY2VSR0IsIGRyYXdpbmdS
ZWdpb25XaXRoT2Zmc2V0KTsKICAgICByZXN1bHRDb250ZXh0LnNldEFscGhhKDEpOwogCiAgICAg
U2hhZG93Qmx1ciBjb250ZXh0U2hhZG93KGJsdXJSYWRpdXMsIG9mZnNldCwgbV9zaGFkb3dDb2xv
ciwgQ29sb3JTcGFjZURldmljZVJHQik7CkBAIC0xMDgsNyArMTEwLDcgQEAgdm9pZCBGRURyb3BT
aGFkb3c6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZSgpCiAgICAgcmVzdWx0Q29udGV4dC5maWxsUmVj
dChGbG9hdFJlY3QoRmxvYXRQb2ludCgpLCBhYnNvbHV0ZVBhaW50UmVjdCgpLnNpemUoKSksIG1f
c2hhZG93Q29sb3IsIENvbG9yU3BhY2VEZXZpY2VSR0IpOwogICAgIHJlc3VsdENvbnRleHQuc2V0
Q29tcG9zaXRlT3BlcmF0aW9uKENvbXBvc2l0ZURlc3RpbmF0aW9uT3Zlcik7CiAKLSAgICByZXN1
bHRJbWFnZS0+Y29udGV4dCgpLmRyYXdJbWFnZUJ1ZmZlcihzb3VyY2VJbWFnZSwgQ29sb3JTcGFj
ZURldmljZVJHQiwgZHJhd2luZ1JlZ2lvbik7CisgICAgcmVzdWx0SW1hZ2UtPmNvbnRleHQoKS5k
cmF3SW1hZ2VCdWZmZXIoKnNvdXJjZUltYWdlLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBkcmF3aW5n
UmVnaW9uKTsKIH0KIAogdm9pZCBGRURyb3BTaGFkb3c6OmR1bXAoKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRU1lcmdlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVNZXJnZS5jcHAKaW5kZXggZmNj
ZGQ0NWUzODVhZTQyMzBiYTNjOTE4ZDcwYTI5OTI3NGFiMzAwNS4uYTAyZDlmZGFlMjQ1YTVmZWRj
NTE5YzgzMDBjMDMzMWQwZDcyMWJlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZmlsdGVycy9GRU1lcmdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFTWVyZ2UuY3BwCkBAIC00NywxMCArNDcsMTIgQEAgdm9p
ZCBGRU1lcmdlOjpwbGF0Zm9ybUFwcGx5U29mdHdhcmUoKQogICAgIGlmICghcmVzdWx0SW1hZ2Up
CiAgICAgICAgIHJldHVybjsKIAorCiAgICAgR3JhcGhpY3NDb250ZXh0JiBmaWx0ZXJDb250ZXh0
ID0gcmVzdWx0SW1hZ2UtPmNvbnRleHQoKTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwg
c2l6ZTsgKytpKSB7CiAgICAgICAgIEZpbHRlckVmZmVjdCogaW4gPSBpbnB1dEVmZmVjdChpKTsK
LSAgICAgICAgZmlsdGVyQ29udGV4dC5kcmF3SW1hZ2VCdWZmZXIoaW4tPmFzSW1hZ2VCdWZmZXIo
KSwgQ29sb3JTcGFjZURldmljZVJHQiwgZHJhd2luZ1JlZ2lvbk9mSW5wdXRJbWFnZShpbi0+YWJz
b2x1dGVQYWludFJlY3QoKSkpOworICAgICAgICBpZiAoSW1hZ2VCdWZmZXIqIGluQnVmZmVyID0g
aW4tPmFzSW1hZ2VCdWZmZXIoKSkKKyAgICAgICAgICAgIGZpbHRlckNvbnRleHQuZHJhd0ltYWdl
QnVmZmVyKCppbkJ1ZmZlciwgQ29sb3JTcGFjZURldmljZVJHQiwgZHJhd2luZ1JlZ2lvbk9mSW5w
dXRJbWFnZShpbi0+YWJzb2x1dGVQYWludFJlY3QoKSkpOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRU9mZnNldC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFT2Zmc2V0LmNwcApp
bmRleCBmZmVhNjM4NjgxYWE0YTk3ZTg0MDgwYTFiN2M4N2U4NDM5ZDQ5OWZjLi4xOGEyZTc5MWQ1
ODNiYWNkY2QxYzdiZTZkMDU3ZjUwYjliNTE5MWNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFT2Zmc2V0LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFT2Zmc2V0LmNwcApAQCAtNzksNyArNzks
OCBAQCB2b2lkIEZFT2Zmc2V0OjpwbGF0Zm9ybUFwcGx5U29mdHdhcmUoKQogICAgIEZpbHRlckVm
ZmVjdCogaW4gPSBpbnB1dEVmZmVjdCgwKTsKIAogICAgIEltYWdlQnVmZmVyKiByZXN1bHRJbWFn
ZSA9IGNyZWF0ZUltYWdlQnVmZmVyUmVzdWx0KCk7Ci0gICAgaWYgKCFyZXN1bHRJbWFnZSkKKyAg
ICBJbWFnZUJ1ZmZlciogaW5CdWZmZXIgPSBpbi0+YXNJbWFnZUJ1ZmZlcigpOworICAgIGlmICgh
cmVzdWx0SW1hZ2UgfHwgIWluQnVmZmVyKQogICAgICAgICByZXR1cm47CiAKICAgICBzZXRJc0Fs
cGhhSW1hZ2UoaW4tPmlzQWxwaGFJbWFnZSgpKTsKQEAgLTg3LDcgKzg4LDcgQEAgdm9pZCBGRU9m
ZnNldDo6cGxhdGZvcm1BcHBseVNvZnR3YXJlKCkKICAgICBGbG9hdFJlY3QgZHJhd2luZ1JlZ2lv
biA9IGRyYXdpbmdSZWdpb25PZklucHV0SW1hZ2UoaW4tPmFic29sdXRlUGFpbnRSZWN0KCkpOwog
ICAgIEZpbHRlciYgZmlsdGVyID0gdGhpcy0+ZmlsdGVyKCk7CiAgICAgZHJhd2luZ1JlZ2lvbi5t
b3ZlKGZpbHRlci5hcHBseUhvcml6b250YWxTY2FsZShtX2R4KSwgZmlsdGVyLmFwcGx5VmVydGlj
YWxTY2FsZShtX2R5KSk7Ci0gICAgcmVzdWx0SW1hZ2UtPmNvbnRleHQoKS5kcmF3SW1hZ2VCdWZm
ZXIoaW4tPmFzSW1hZ2VCdWZmZXIoKSwgQ29sb3JTcGFjZURldmljZVJHQiwgZHJhd2luZ1JlZ2lv
bik7CisgICAgcmVzdWx0SW1hZ2UtPmNvbnRleHQoKS5kcmF3SW1hZ2VCdWZmZXIoKmluQnVmZmVy
LCBDb2xvclNwYWNlRGV2aWNlUkdCLCBkcmF3aW5nUmVnaW9uKTsKIH0KIAogdm9pZCBGRU9mZnNl
dDo6ZHVtcCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9m
aWx0ZXJzL0ZFVGlsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0
ZXJzL0ZFVGlsZS5jcHAKaW5kZXggNWRjNDdkZDZlY2Y5MzFhZWE1ZjgwOWRiYmQ3NTRkMDBhMzVj
ZWExYi4uYTE4N2I3NGZmZmZkZDVhOTc0NGRjNjk3Y2NjNWVlYWMyMGVkZjMwMiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRVRpbGUuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVUaWxlLmNwcApA
QCAtNDcsNyArNDcsOCBAQCB2b2lkIEZFVGlsZTo6cGxhdGZvcm1BcHBseVNvZnR3YXJlKCkKICAg
ICBGaWx0ZXJFZmZlY3QqIGluID0gaW5wdXRFZmZlY3QoMCk7CiAKICAgICBJbWFnZUJ1ZmZlciog
cmVzdWx0SW1hZ2UgPSBjcmVhdGVJbWFnZUJ1ZmZlclJlc3VsdCgpOwotICAgIGlmICghcmVzdWx0
SW1hZ2UpCisgICAgSW1hZ2VCdWZmZXIqIGluQnVmZmVyID0gaW4tPmFzSW1hZ2VCdWZmZXIoKTsK
KyAgICBpZiAoIXJlc3VsdEltYWdlIHx8ICFpbkJ1ZmZlcikKICAgICAgICAgcmV0dXJuOwogCiAg
ICAgc2V0SXNBbHBoYUltYWdlKGluLT5pc0FscGhhSW1hZ2UoKSk7CkBAIC02OSw3ICs3MCw3IEBA
IHZvaWQgRkVUaWxlOjpwbGF0Zm9ybUFwcGx5U29mdHdhcmUoKQogCiAgICAgR3JhcGhpY3NDb250
ZXh0JiB0aWxlSW1hZ2VDb250ZXh0ID0gdGlsZUltYWdlLT5jb250ZXh0KCk7CiAgICAgdGlsZUlt
YWdlQ29udGV4dC50cmFuc2xhdGUoLWluTWF4RWZmZWN0TG9jYXRpb24ueCgpLCAtaW5NYXhFZmZl
Y3RMb2NhdGlvbi55KCkpOwotICAgIHRpbGVJbWFnZUNvbnRleHQuZHJhd0ltYWdlQnVmZmVyKGlu
LT5hc0ltYWdlQnVmZmVyKCksIENvbG9yU3BhY2VEZXZpY2VSR0IsIGluLT5hYnNvbHV0ZVBhaW50
UmVjdCgpLmxvY2F0aW9uKCkpOworICAgIHRpbGVJbWFnZUNvbnRleHQuZHJhd0ltYWdlQnVmZmVy
KCppbkJ1ZmZlciwgQ29sb3JTcGFjZURldmljZVJHQiwgaW4tPmFic29sdXRlUGFpbnRSZWN0KCku
bG9jYXRpb24oKSk7CiAKICAgICBhdXRvIHRpbGVJbWFnZUNvcHkgPSB0aWxlSW1hZ2UtPmNvcHlJ
bWFnZShDb3B5QmFja2luZ1N0b3JlKTsKICAgICBpZiAoIXRpbGVJbWFnZUNvcHkpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL1NvdXJjZUFscGhh
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvU291cmNlQWxw
aGEuY3BwCmluZGV4IDcwYjFkNTU2NGY2ZjAzYjEzMzk4MGFiZDU5OWFjMzA2ODBiZTU2MDYuLjFl
M2I5MWEyMjQ0OGYxOGNhYTQxNmZiMTA2YTI4NDBhMDAyYTMxYmIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvU291cmNlQWxwaGEuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvU291cmNlQWxwaGEuY3Bw
CkBAIC01NCwxMSArNTQsMTIgQEAgdm9pZCBTb3VyY2VBbHBoYTo6cGxhdGZvcm1BcHBseVNvZnR3
YXJlKCkKICAgICBHcmFwaGljc0NvbnRleHQmIGZpbHRlckNvbnRleHQgPSByZXN1bHRJbWFnZS0+
Y29udGV4dCgpOwogCiAgICAgSW1hZ2VCdWZmZXIqIGltYWdlQnVmZmVyID0gaW5wdXRFZmZlY3Qo
MCktPmFzSW1hZ2VCdWZmZXIoKTsKLSAgICBBU1NFUlQoaW1hZ2VCdWZmZXIpOworICAgIGlmICgh
aW1hZ2VCdWZmZXIpCisgICAgICAgIHJldHVybjsKIAogICAgIEZsb2F0UmVjdCBpbWFnZVJlY3Qo
RmxvYXRQb2ludCgpLCBhYnNvbHV0ZVBhaW50UmVjdCgpLnNpemUoKSk7CiAgICAgZmlsdGVyQ29u
dGV4dC5maWxsUmVjdChpbWFnZVJlY3QsIENvbG9yOjpibGFjaywgQ29sb3JTcGFjZURldmljZVJH
Qik7Ci0gICAgZmlsdGVyQ29udGV4dC5kcmF3SW1hZ2VCdWZmZXIoaW1hZ2VCdWZmZXIsIENvbG9y
U3BhY2VEZXZpY2VSR0IsIEludFBvaW50KCksIENvbXBvc2l0ZURlc3RpbmF0aW9uSW4pOworICAg
IGZpbHRlckNvbnRleHQuZHJhd0ltYWdlQnVmZmVyKCppbWFnZUJ1ZmZlciwgQ29sb3JTcGFjZURl
dmljZVJHQiwgSW50UG9pbnQoKSwgQ29tcG9zaXRlRGVzdGluYXRpb25Jbik7CiB9CiAKIHZvaWQg
U291cmNlQWxwaGE6OmR1bXAoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZmlsdGVycy9Tb3VyY2VHcmFwaGljLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2ZpbHRlcnMvU291cmNlR3JhcGhpYy5jcHAKaW5kZXggMzE5OGIwMzc4M2E1
YzJiNDlhZWE5ZWViM2U5Zjg5ODIyODNkYmM4My4uZGY0ZWU2ZjA3OWM1NDU3NTQ1OWU4NDM2OTI2
NTlkNmNkMzMwMGViYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZmlsdGVycy9Tb3VyY2VHcmFwaGljLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9maWx0ZXJzL1NvdXJjZUdyYXBoaWMuY3BwCkBAIC00OSwxMiArNDksMTQgQEAg
dm9pZCBTb3VyY2VHcmFwaGljOjpkZXRlcm1pbmVBYnNvbHV0ZVBhaW50UmVjdCgpCiAKIHZvaWQg
U291cmNlR3JhcGhpYzo6cGxhdGZvcm1BcHBseVNvZnR3YXJlKCkKIHsKLSAgICBJbWFnZUJ1ZmZl
ciogcmVzdWx0SW1hZ2UgPSBjcmVhdGVJbWFnZUJ1ZmZlclJlc3VsdCgpOwogICAgIEZpbHRlciYg
ZmlsdGVyID0gdGhpcy0+ZmlsdGVyKCk7Ci0gICAgaWYgKCFyZXN1bHRJbWFnZSB8fCAhZmlsdGVy
LnNvdXJjZUltYWdlKCkpCisKKyAgICBJbWFnZUJ1ZmZlciogcmVzdWx0SW1hZ2UgPSBjcmVhdGVJ
bWFnZUJ1ZmZlclJlc3VsdCgpOworICAgIEltYWdlQnVmZmVyKiBzb3VyY2VJbWFnZSA9IGZpbHRl
ci5zb3VyY2VJbWFnZSgpOworICAgIGlmICghcmVzdWx0SW1hZ2UgfHwgIXNvdXJjZUltYWdlKQog
ICAgICAgICByZXR1cm47CiAKLSAgICByZXN1bHRJbWFnZS0+Y29udGV4dCgpLmRyYXdJbWFnZUJ1
ZmZlcihmaWx0ZXIuc291cmNlSW1hZ2UoKSwgQ29sb3JTcGFjZURldmljZVJHQiwgSW50UG9pbnQo
KSk7CisgICAgcmVzdWx0SW1hZ2UtPmNvbnRleHQoKS5kcmF3SW1hZ2VCdWZmZXIoKnNvdXJjZUlt
YWdlLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBJbnRQb2ludCgpKTsKIH0KIAogdm9pZCBTb3VyY2VH
cmFwaGljOjpkdW1wKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVH
U3RyZWFtZXJCYXNlLmNwcAppbmRleCBjODQyZTQyMDgyZDEyNWUwOTU4YzI2OGRmODg4NDc2YTAx
MjM4NmFlLi5kMzcwYjFhMmU1NmUwYjEyYmFmY2NhYzNmNzYzMWU4NjI0ODhkNjJhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5
ZXJQcml2YXRlR1N0cmVhbWVyQmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2UuY3BwCkBA
IC01MjUsOCArNTI1LDggQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlOjpw
YWludChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2EKICAgICBpZiAoIWdzdElt
YWdlKQogICAgICAgICByZXR1cm47CiAKLSAgICBjb250ZXh0LmRyYXdJbWFnZShyZWludGVycHJl
dF9jYXN0PEltYWdlKj4oZ3N0SW1hZ2UtPmltYWdlKCkuZ2V0KCkpLCBDb2xvclNwYWNlU1JHQiwK
LSAgICAgICAgcmVjdCwgZ3N0SW1hZ2UtPnJlY3QoKSwgQ29tcG9zaXRlQ29weSk7CisgICAgaWYg
KEltYWdlKiBpbWFnZSA9IHJlaW50ZXJwcmV0X2Nhc3Q8SW1hZ2UqPihnc3RJbWFnZS0+aW1hZ2Uo
KS5nZXQoKSkpCisgICAgICAgIGNvbnRleHQuZHJhd0ltYWdlKCppbWFnZSwgQ29sb3JTcGFjZVNS
R0IsIHJlY3QsIGdzdEltYWdlLT5yZWN0KCksIENvbXBvc2l0ZUNvcHkpOwogfQogCiAjaWYgVVNF
KFRFWFRVUkVfTUFQUEVSX0dMKSAmJiAhVVNFKENPT1JESU5BVEVEX0dSQVBISUNTKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVk
L0Nvb3JkaW5hdGVkSW1hZ2VCYWNraW5nLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEltYWdlQmFja2luZy5jcHAKaW5k
ZXggMGQzNzdkMTlkZDllM2VjZWYwMTg5Y2I5MGNiOTE4NjExN2RiMmI1Zi4uNjk4Mjg1NDg2OTFh
MDU4ODE5ZWVjNzZmNDI5N2VmNTZjMjY4ZGM2NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkSW1hZ2VCYWNr
aW5nLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29v
cmRpbmF0ZWQvQ29vcmRpbmF0ZWRJbWFnZUJhY2tpbmcuY3BwCkBAIC0zNSw3ICszNSw3IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgSW1hZ2VCYWNraW5nU3VyZmFjZUNsaWVudCA6IHB1
YmxpYyBDb29yZGluYXRlZFN1cmZhY2U6OkNsaWVudCB7CiBwdWJsaWM6Ci0gICAgSW1hZ2VCYWNr
aW5nU3VyZmFjZUNsaWVudChJbWFnZSogaW1hZ2UsIGNvbnN0IEludFJlY3QmIHJlY3QpCisgICAg
SW1hZ2VCYWNraW5nU3VyZmFjZUNsaWVudChJbWFnZSYgaW1hZ2UsIGNvbnN0IEludFJlY3QmIHJl
Y3QpCiAgICAgICAgIDogbV9pbWFnZShpbWFnZSkKICAgICAgICAgLCBtX3JlY3QocmVjdCkKICAg
ICB7CkBAIC00Nyw3ICs0Nyw3IEBAIHB1YmxpYzoKICAgICB9CiAKIHByaXZhdGU6Ci0gICAgSW1h
Z2UqIG1faW1hZ2U7CisgICAgSW1hZ2UmIG1faW1hZ2U7CiAgICAgSW50UmVjdCBtX3JlY3Q7CiB9
OwogCkBAIC0xMjgsNyArMTI4LDcgQEAgdm9pZCBDb29yZGluYXRlZEltYWdlQmFja2luZzo6dXBk
YXRlKCkKIAogICAgIEludFJlY3QgcmVjdChJbnRQb2ludDo6emVybygpLCBJbnRTaXplKG1faW1h
Z2UtPnNpemUoKSkpOwogCi0gICAgSW1hZ2VCYWNraW5nU3VyZmFjZUNsaWVudCBzdXJmYWNlQ2xp
ZW50KG1faW1hZ2UuZ2V0KCksIHJlY3QpOworICAgIEltYWdlQmFja2luZ1N1cmZhY2VDbGllbnQg
c3VyZmFjZUNsaWVudCgqbV9pbWFnZSwgcmVjdCk7CiAgICAgbV9zdXJmYWNlLT5wYWludFRvU3Vy
ZmFjZShyZWN0LCAmc3VyZmFjZUNsaWVudCk7CiAKICAgICBtX25hdGl2ZUltYWdlUHRyID0gbV9p
bWFnZS0+bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21hYy9UaGVtZU1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21hYy9UaGVtZU1hYy5tbQppbmRleCBmZjI5YTFkZWNkOGI3MjBkNDRiMTQyMzA5YWFjY2UzYmJl
ZWRhMThmLi5lNzU5MWJlZGJmNGQ1ZTBkNjllNzBkNzNlNzA0MjllZGY4MWJhMTViIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvVGhlbWVNYWMubW0KKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWFjL1RoZW1lTWFjLm1tCkBAIC02ODYsMTEgKzY4NiwxMyBAQCBi
b29sIFRoZW1lTWFjOjpkcmF3Q2VsbE9yRm9jdXNSaW5nV2l0aFZpZXdJbnRvQ29udGV4dChOU0Nl
bGwgKmNlbGwsIEdyYXBoaWNzQ29udAogICAgIGlmICh1c2VJbWFnZUJ1ZmZlcikgewogICAgICAg
ICBOU1JlY3QgaW1hZ2VCdWZmZXJEcmF3UmVjdCA9IE5TUmVjdChGbG9hdFJlY3QoYnV0dG9uRm9j
dXNSZWN0T3V0bGluZVdpZHRoLCBidXR0b25Gb2N1c1JlY3RPdXRsaW5lV2lkdGgsIHJlY3Qud2lk
dGgoKSwgcmVjdC5oZWlnaHQoKSkpOwogICAgICAgICBhdXRvIGltYWdlQnVmZmVyID0gSW1hZ2VC
dWZmZXI6OmNyZWF0ZUNvbXBhdGlibGVCdWZmZXIocmVjdC5zaXplKCkgKyAyICogRmxvYXRTaXpl
KGJ1dHRvbkZvY3VzUmVjdE91dGxpbmVXaWR0aCwgYnV0dG9uRm9jdXNSZWN0T3V0bGluZVdpZHRo
KSwgZGV2aWNlU2NhbGVGYWN0b3IsIENvbG9yU3BhY2VTUkdCLCBjb250ZXh0LCBmYWxzZSk7Cisg
ICAgICAgIGlmICghaW1hZ2VCdWZmZXIpCisgICAgICAgICAgICByZXR1cm4gbmVlZHNSZXBhaW50
OwogICAgICAgICB7CiAgICAgICAgICAgICBMb2NhbEN1cnJlbnRHcmFwaGljc0NvbnRleHQgbG9j
YWxDb250ZXh0KGltYWdlQnVmZmVyLT5jb250ZXh0KCkpOwogICAgICAgICAgICAgbmVlZHNSZXBh
aW50ID0gZHJhd0NlbGxPckZvY3VzUmluZ0ludG9SZWN0V2l0aFZpZXcoY2VsbCwgaW1hZ2VCdWZm
ZXJEcmF3UmVjdCwgdmlldywgZHJhd0J1dHRvbkNlbGwsIGRyYXdGb2N1c1JpbmcpOwogICAgICAg
ICB9Ci0gICAgICAgIGNvbnRleHQuZHJhd0ltYWdlQnVmZmVyKGltYWdlQnVmZmVyLmdldCgpLCBD
b2xvclNwYWNlU1JHQiwgcmVjdC5sb2NhdGlvbigpIC0gRmxvYXRTaXplKGJ1dHRvbkZvY3VzUmVj
dE91dGxpbmVXaWR0aCwgYnV0dG9uRm9jdXNSZWN0T3V0bGluZVdpZHRoKSk7CisgICAgICAgIGNv
bnRleHQuZHJhd0ltYWdlQnVmZmVyKCppbWFnZUJ1ZmZlciwgQ29sb3JTcGFjZVNSR0IsIHJlY3Qu
bG9jYXRpb24oKSAtIEZsb2F0U2l6ZShidXR0b25Gb2N1c1JlY3RPdXRsaW5lV2lkdGgsIGJ1dHRv
bkZvY3VzUmVjdE91dGxpbmVXaWR0aCkpOwogICAgICAgICByZXR1cm4gbmVlZHNSZXBhaW50Owog
ICAgIH0KICAgICBpZiAoZHJhd0J1dHRvbkNlbGwpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvRmlsdGVyRWZmZWN0UmVuZGVyZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL0ZpbHRlckVmZmVjdFJlbmRlcmVyLmNwcAppbmRleCAyNWVkMWQ1NDE5N2EwY2ZhMmEz
YWRmNzcxMmI3NDQ2NDFhZjkyM2Y5Li5mZDUwOWU4ZWFkNTk2OTdkNDYwZDM4ZDMxM2UzZTA0MTZm
YTY1ODc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvRmlsdGVyRWZmZWN0
UmVuZGVyZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9GaWx0ZXJFZmZlY3RS
ZW5kZXJlci5jcHAKQEAgLTQyOSw4ICs0MjksMTAgQEAgdm9pZCBGaWx0ZXJFZmZlY3RSZW5kZXJl
ckhlbHBlcjo6YXBwbHlGaWx0ZXJFZmZlY3QoR3JhcGhpY3NDb250ZXh0JiBkZXN0aW5hdGlvbkMK
ICAgICBMYXlvdXRSZWN0IGRlc3RSZWN0ID0gZmlsdGVyLT5vdXRwdXRSZWN0KCk7CiAgICAgZGVz
dFJlY3QubW92ZShtX3BhaW50T2Zmc2V0LngoKSwgbV9wYWludE9mZnNldC55KCkpOwogCi0gICAg
ZGVzdGluYXRpb25Db250ZXh0LmRyYXdJbWFnZUJ1ZmZlcihmaWx0ZXItPm91dHB1dCgpLCBtX3Jl
bmRlckxheWVyLT5yZW5kZXJlcigpLnN0eWxlKCkuY29sb3JTcGFjZSgpLAotICAgICAgICBzbmFw
UmVjdFRvRGV2aWNlUGl4ZWxzKGRlc3RSZWN0LCBtX3JlbmRlckxheWVyLT5yZW5kZXJlcigpLmRv
Y3VtZW50KCkuZGV2aWNlU2NhbGVGYWN0b3IoKSkpOworICAgIGlmIChJbWFnZUJ1ZmZlciogb3V0
cHV0QnVmZmVyID0gZmlsdGVyLT5vdXRwdXQoKSkgeworICAgICAgICBkZXN0aW5hdGlvbkNvbnRl
eHQuZHJhd0ltYWdlQnVmZmVyKCpvdXRwdXRCdWZmZXIsIG1fcmVuZGVyTGF5ZXItPnJlbmRlcmVy
KCkuc3R5bGUoKS5jb2xvclNwYWNlKCksCisgICAgICAgICAgICBzbmFwUmVjdFRvRGV2aWNlUGl4
ZWxzKGRlc3RSZWN0LCBtX3JlbmRlckxheWVyLT5yZW5kZXJlcigpLmRvY3VtZW50KCkuZGV2aWNl
U2NhbGVGYWN0b3IoKSkpOworICAgIH0KIAogICAgIGZpbHRlci0+Y2xlYXJJbnRlcm1lZGlhdGVS
ZXN1bHRzKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW1hZ2VR
dWFsaXR5Q29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW1hZ2VRdWFs
aXR5Q29udHJvbGxlci5jcHAKaW5kZXggNmZiODM0MjQyNzQ3OTQ0MThjYTgwMzNkN2I0ZGFkNzFi
N2QxMzRhZS4uYTBjMjExNDViODQ1ODg5MzIyYTE0ZGI0N2JiY2I4OTQ1MDI3MDAxNCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0ltYWdlUXVhbGl0eUNvbnRyb2xsZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbWFnZVF1YWxpdHlDb250cm9sbGVyLmNw
cApAQCAtOTksMTEgKzk5LDExIEBAIHZvaWQgSW1hZ2VRdWFsaXR5Q29udHJvbGxlcjo6cmVzdGFy
dFRpbWVyKCkKICAgICBtX3RpbWVyLnN0YXJ0T25lU2hvdChjTG93UXVhbGl0eVRpbWVUaHJlc2hv
bGQpOwogfQogCi1ib29sIEltYWdlUXVhbGl0eUNvbnRyb2xsZXI6OnNob3VsZFBhaW50QXRMb3dR
dWFsaXR5KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgUmVuZGVyQm94TW9kZWxPYmplY3QqIG9i
amVjdCwgSW1hZ2UqIGltYWdlLCBjb25zdCB2b2lkICpsYXllciwgY29uc3QgTGF5b3V0U2l6ZSYg
c2l6ZSkKK2Jvb2wgSW1hZ2VRdWFsaXR5Q29udHJvbGxlcjo6c2hvdWxkUGFpbnRBdExvd1F1YWxp
dHkoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBSZW5kZXJCb3hNb2RlbE9iamVjdCogb2JqZWN0
LCBJbWFnZSYgaW1hZ2UsIGNvbnN0IHZvaWQgKmxheWVyLCBjb25zdCBMYXlvdXRTaXplJiBzaXpl
KQogewogICAgIC8vIElmIHRoZSBpbWFnZSBpcyBub3QgYSBiaXRtYXAgaW1hZ2UsIHRoZW4gbm9u
ZSBvZiB0aGlzIGlzIHJlbGV2YW50IGFuZCB3ZSBqdXN0IHBhaW50IGF0IGhpZ2gKICAgICAvLyBx
dWFsaXR5LgotICAgIGlmICghaW1hZ2UgfHwgIShpbWFnZS0+aXNCaXRtYXBJbWFnZSgpIHx8IGlt
YWdlLT5pc1BERkRvY3VtZW50SW1hZ2UoKSkgfHwgY29udGV4dC5wYWludGluZ0Rpc2FibGVkKCkp
CisgICAgaWYgKCEoaW1hZ2UuaXNCaXRtYXBJbWFnZSgpIHx8IGltYWdlLmlzUERGRG9jdW1lbnRJ
bWFnZSgpKSB8fCBjb250ZXh0LnBhaW50aW5nRGlzYWJsZWQoKSkKICAgICAgICAgcmV0dXJuIGZh
bHNlOwogCiAgICAgc3dpdGNoIChvYmplY3QtPnN0eWxlKCkuaW1hZ2VSZW5kZXJpbmcoKSkgewpA
QCAtMTE4LDcgKzExOCw3IEBAIGJvb2wgSW1hZ2VRdWFsaXR5Q29udHJvbGxlcjo6c2hvdWxkUGFp
bnRBdExvd1F1YWxpdHkoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBSCiAKICAgICAvLyBNYWtl
IHN1cmUgdG8gdXNlIHRoZSB1bnpvb21lZCBpbWFnZSBzaXplLCBzaW5jZSBpZiBhIGZ1bGwgcGFn
ZSB6b29tIGlzIGluIGVmZmVjdCwgdGhlIGltYWdlCiAgICAgLy8gaXMgYWN0dWFsbHkgYmVpbmcg
c2NhbGVkLgotICAgIEludFNpemUgaW1hZ2VTaXplKGltYWdlLT53aWR0aCgpLCBpbWFnZS0+aGVp
Z2h0KCkpOworICAgIEludFNpemUgaW1hZ2VTaXplKGltYWdlLndpZHRoKCksIGltYWdlLmhlaWdo
dCgpKTsKIAogICAgIC8vIExvb2sgb3Vyc2VsdmVzIHVwIGluIHRoZSBoYXNodGFibGVzLgogICAg
IGF1dG8gaSA9IG1fb2JqZWN0TGF5ZXJTaXplTWFwLmZpbmQob2JqZWN0KTsKQEAgLTE1Niw3ICsx
NTYsNyBAQCBib29sIEltYWdlUXVhbGl0eUNvbnRyb2xsZXI6OnNob3VsZFBhaW50QXRMb3dRdWFs
aXR5KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgUgogCiAgICAgLy8gVGhlcmUgaXMgbm8gbmVl
ZCB0byBoYXNoIHNjYWxlZCBpbWFnZXMgdGhhdCBhbHdheXMgdXNlIGxvdyBxdWFsaXR5IG1vZGUg
d2hlbiB0aGUgcGFnZSBkZW1hbmRzIGl0LiBUaGlzIGlzIHRoZSBpQ2hhdCBjYXNlLgogICAgIGlm
IChtX3JlbmRlclZpZXcuZnJhbWUoKS5wYWdlKCktPmluTG93UXVhbGl0eUltYWdlSW50ZXJwb2xh
dGlvbk1vZGUoKSkgewotICAgICAgICBkb3VibGUgdG90YWxQaXhlbHMgPSBzdGF0aWNfY2FzdDxk
b3VibGU+KGltYWdlLT53aWR0aCgpKSAqIHN0YXRpY19jYXN0PGRvdWJsZT4oaW1hZ2UtPmhlaWdo
dCgpKTsKKyAgICAgICAgZG91YmxlIHRvdGFsUGl4ZWxzID0gc3RhdGljX2Nhc3Q8ZG91YmxlPihp
bWFnZS53aWR0aCgpKSAqIHN0YXRpY19jYXN0PGRvdWJsZT4oaW1hZ2UuaGVpZ2h0KCkpOwogICAg
ICAgICBpZiAodG90YWxQaXhlbHMgPiBjSW50ZXJwb2xhdGlvbkN1dG9mZikKICAgICAgICAgICAg
IHJldHVybiB0cnVlOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9JbWFnZVF1YWxpdHlDb250cm9sbGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW1h
Z2VRdWFsaXR5Q29udHJvbGxlci5oCmluZGV4IGQxNGRjNDlhYTc5YWYzMTVkYWM4ZTFkNTEyMWMz
NDAyNjBlZjY1ZTMuLjVmNzExNjQ3NTEwY2QyMmI5NjI1OTI2NzM1ODRmODZjMDgxZjU4OWMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbWFnZVF1YWxpdHlDb250cm9sbGVy
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0ltYWdlUXVhbGl0eUNvbnRyb2xsZXIu
aApAQCAtNDMsNyArNDMsNyBAQCBjbGFzcyBJbWFnZVF1YWxpdHlDb250cm9sbGVyIHsKIHB1Ymxp
YzoKICAgICBleHBsaWNpdCBJbWFnZVF1YWxpdHlDb250cm9sbGVyKGNvbnN0IFJlbmRlclZpZXcm
KTsKIAotICAgIGJvb2wgc2hvdWxkUGFpbnRBdExvd1F1YWxpdHkoR3JhcGhpY3NDb250ZXh0Jiwg
UmVuZGVyQm94TW9kZWxPYmplY3QqLCBJbWFnZSosIGNvbnN0IHZvaWQqIGxheWVyLCBjb25zdCBM
YXlvdXRTaXplJik7CisgICAgYm9vbCBzaG91bGRQYWludEF0TG93UXVhbGl0eShHcmFwaGljc0Nv
bnRleHQmLCBSZW5kZXJCb3hNb2RlbE9iamVjdCosIEltYWdlJiwgY29uc3Qgdm9pZCogbGF5ZXIs
IGNvbnN0IExheW91dFNpemUmKTsKICAgICB2b2lkIHJlbmRlcmVyV2lsbEJlRGVzdHJveWVkKFJl
bmRlckJveE1vZGVsT2JqZWN0JiByZW5kZXJlcikgeyByZW1vdmVPYmplY3QoJnJlbmRlcmVyKTsg
fQogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckJveE1vZGVsT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3hN
b2RlbE9iamVjdC5jcHAKaW5kZXggMWVkYzVhZmM5NGMxZDliMzBhYWUwMTA5MTg1YzUxOGMzNTEy
OTJlOC4uZDJhZGUwOTA4MGFkZTRhMWIyZTVjNDAzZmVmYTkyNWRjYWU5ZmVlZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuY3BwCkBAIC0x
NjEsNyArMTYxLDcgQEAgdm9pZCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6c3VzcGVuZEFuaW1hdGlv
bnMoZG91YmxlIHRpbWUpCiAgICAgbGF5ZXIoKS0+YmFja2luZygpLT5zdXNwZW5kQW5pbWF0aW9u
cyh0aW1lKTsKIH0KIAotYm9vbCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6c2hvdWxkUGFpbnRBdExv
d1F1YWxpdHkoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBJbWFnZSogaW1hZ2UsIGNvbnN0IHZv
aWQqIGxheWVyLCBjb25zdCBMYXlvdXRTaXplJiBzaXplKQorYm9vbCBSZW5kZXJCb3hNb2RlbE9i
amVjdDo6c2hvdWxkUGFpbnRBdExvd1F1YWxpdHkoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBJ
bWFnZSYgaW1hZ2UsIGNvbnN0IHZvaWQqIGxheWVyLCBjb25zdCBMYXlvdXRTaXplJiBzaXplKQog
ewogICAgIHJldHVybiB2aWV3KCkuaW1hZ2VRdWFsaXR5Q29udHJvbGxlcigpLnNob3VsZFBhaW50
QXRMb3dRdWFsaXR5KGNvbnRleHQsIHRoaXMsIGltYWdlLCBsYXllciwgc2l6ZSk7CiB9CkBAIC04
MzAsMTggKzgzMCwxNyBAQCB2b2lkIFJlbmRlckJveE1vZGVsT2JqZWN0OjpwYWludEZpbGxMYXll
ckV4dGVuZGVkKGNvbnN0IFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjbwogICAgIGlmICghYmFzZUJn
Q29sb3JPbmx5ICYmIHNob3VsZFBhaW50QmFja2dyb3VuZEltYWdlKSB7CiAgICAgICAgIEJhY2tn
cm91bmRJbWFnZUdlb21ldHJ5IGdlb21ldHJ5ID0gY2FsY3VsYXRlQmFja2dyb3VuZEltYWdlR2Vv
bWV0cnkocGFpbnRJbmZvLnBhaW50Q29udGFpbmVyLCAqYmdMYXllciwgcmVjdC5sb2NhdGlvbigp
LCBzY3JvbGxlZFBhaW50UmVjdCwgYmFja2dyb3VuZE9iamVjdCk7CiAgICAgICAgIGdlb21ldHJ5
LmNsaXAoTGF5b3V0UmVjdChwaXhlbFNuYXBwZWRSZWN0KSk7Ci0gICAgICAgIGlmICghZ2VvbWV0
cnkuZGVzdFJlY3QoKS5pc0VtcHR5KCkpIHsKKyAgICAgICAgUmVmUHRyPEltYWdlPiBpbWFnZTsK
KyAgICAgICAgaWYgKCFnZW9tZXRyeS5kZXN0UmVjdCgpLmlzRW1wdHkoKSAmJiAoaW1hZ2UgPSBi
Z0ltYWdlLT5pbWFnZShiYWNrZ3JvdW5kT2JqZWN0ID8gYmFja2dyb3VuZE9iamVjdCA6IHRoaXMs
IGdlb21ldHJ5LnRpbGVTaXplKCkpKSkgewogICAgICAgICAgICAgQ29tcG9zaXRlT3BlcmF0b3Ig
Y29tcG9zaXRlT3AgPSBvcCA9PSBDb21wb3NpdGVTb3VyY2VPdmVyID8gYmdMYXllci0+Y29tcG9z
aXRlKCkgOiBvcDsKLSAgICAgICAgICAgIGF1dG8gY2xpZW50Rm9yQmFja2dyb3VuZEltYWdlID0g
YmFja2dyb3VuZE9iamVjdCA/IGJhY2tncm91bmRPYmplY3QgOiB0aGlzOwotICAgICAgICAgICAg
UmVmUHRyPEltYWdlPiBpbWFnZSA9IGJnSW1hZ2UtPmltYWdlKGNsaWVudEZvckJhY2tncm91bmRJ
bWFnZSwgZ2VvbWV0cnkudGlsZVNpemUoKSk7CiAgICAgICAgICAgICBjb250ZXh0LnNldERyYXdM
dW1pbmFuY2VNYXNrKGJnTGF5ZXItPm1hc2tTb3VyY2VUeXBlKCkgPT0gTWFza0x1bWluYW5jZSk7
Ci0gICAgICAgICAgICBib29sIHVzZUxvd1F1YWxpdHlTY2FsaW5nID0gc2hvdWxkUGFpbnRBdExv
d1F1YWxpdHkoY29udGV4dCwgaW1hZ2UuZ2V0KCksIGJnTGF5ZXIsIGdlb21ldHJ5LnRpbGVTaXpl
KCkpOwotICAgICAgICAgICAgY29udGV4dC5kcmF3VGlsZWRJbWFnZShpbWFnZS5nZXQoKSwgc3R5
bGUoKS5jb2xvclNwYWNlKCksIGdlb21ldHJ5LmRlc3RSZWN0KCksIHRvTGF5b3V0UG9pbnQoZ2Vv
bWV0cnkucmVsYXRpdmVQaGFzZSgpKSwgZ2VvbWV0cnkudGlsZVNpemUoKSwgZ2VvbWV0cnkuc3Bh
Y2VTaXplKCksIEltYWdlUGFpbnRpbmdPcHRpb25zKGNvbXBvc2l0ZU9wLCBiZ0xheWVyLT5ibGVu
ZE1vZGUoKSwgSW1hZ2VPcmllbnRhdGlvbkRlc2NyaXB0aW9uKCksIHVzZUxvd1F1YWxpdHlTY2Fs
aW5nKSk7CisgICAgICAgICAgICBib29sIHVzZUxvd1F1YWxpdHlTY2FsaW5nID0gc2hvdWxkUGFp
bnRBdExvd1F1YWxpdHkoY29udGV4dCwgKmltYWdlLCBiZ0xheWVyLCBnZW9tZXRyeS50aWxlU2l6
ZSgpKTsKKyAgICAgICAgICAgIGNvbnRleHQuZHJhd1RpbGVkSW1hZ2UoKmltYWdlLCBzdHlsZSgp
LmNvbG9yU3BhY2UoKSwgZ2VvbWV0cnkuZGVzdFJlY3QoKSwgdG9MYXlvdXRQb2ludChnZW9tZXRy
eS5yZWxhdGl2ZVBoYXNlKCkpLCBnZW9tZXRyeS50aWxlU2l6ZSgpLCBnZW9tZXRyeS5zcGFjZVNp
emUoKSwgSW1hZ2VQYWludGluZ09wdGlvbnMoY29tcG9zaXRlT3AsIGJnTGF5ZXItPmJsZW5kTW9k
ZSgpLCBJbWFnZU9yaWVudGF0aW9uRGVzY3JpcHRpb24oKSwgdXNlTG93UXVhbGl0eVNjYWxpbmcp
KTsKICAgICAgICAgfQogICAgIH0KIAotICAgIGlmIChiZ0xheWVyLT5jbGlwKCkgPT0gVGV4dEZp
bGxCb3gpIHsKLSAgICAgICAgY29udGV4dC5kcmF3SW1hZ2VCdWZmZXIobWFza0ltYWdlLmdldCgp
LCBDb2xvclNwYWNlRGV2aWNlUkdCLCBtYXNrUmVjdCwgQ29tcG9zaXRlRGVzdGluYXRpb25Jbik7
CisgICAgaWYgKG1hc2tJbWFnZSAmJiBiZ0xheWVyLT5jbGlwKCkgPT0gVGV4dEZpbGxCb3gpIHsK
KyAgICAgICAgY29udGV4dC5kcmF3SW1hZ2VCdWZmZXIoKm1hc2tJbWFnZSwgQ29sb3JTcGFjZURl
dmljZVJHQiwgbWFza1JlY3QsIENvbXBvc2l0ZURlc3RpbmF0aW9uSW4pOwogICAgICAgICBjb250
ZXh0LmVuZFRyYW5zcGFyZW5jeUxheWVyKCk7CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmggYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuaAppbmRleCA1YjEwODllZDYwZTQzZjJj
NjQwMzhlZTlkZjY3M2JjNzdhMjQ3YjRjLi5iNmY2ZDYzNGZhNGY3NTk1MDAxNmYwMDI3MmI0ZmMw
NTk0OWE0NTgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94
TW9kZWxPYmplY3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9k
ZWxPYmplY3QuaApAQCAtMjUxLDcgKzI1MSw3IEBAIHByb3RlY3RlZDoKICAgICBSb3VuZGVkUmVj
dCBiYWNrZ3JvdW5kUm91bmRlZFJlY3RBZGp1c3RlZEZvckJsZWVkQXZvaWRhbmNlKGNvbnN0IEdy
YXBoaWNzQ29udGV4dCYsIGNvbnN0IExheW91dFJlY3QmLCBCYWNrZ3JvdW5kQmxlZWRBdm9pZGFu
Y2UsIElubGluZUZsb3dCb3gqLCBjb25zdCBMYXlvdXRTaXplJiwgYm9vbCBpbmNsdWRlTG9naWNh
bExlZnRFZGdlLCBib29sIGluY2x1ZGVMb2dpY2FsUmlnaHRFZGdlKSBjb25zdDsKICAgICBMYXlv
dXRSZWN0IGJvcmRlcklubmVyUmVjdEFkanVzdGVkRm9yQmxlZWRBdm9pZGFuY2UoY29uc3QgR3Jh
cGhpY3NDb250ZXh0JiwgY29uc3QgTGF5b3V0UmVjdCYsIEJhY2tncm91bmRCbGVlZEF2b2lkYW5j
ZSkgY29uc3Q7CiAKLSAgICBib29sIHNob3VsZFBhaW50QXRMb3dRdWFsaXR5KEdyYXBoaWNzQ29u
dGV4dCYsIEltYWdlKiwgY29uc3Qgdm9pZCosIGNvbnN0IExheW91dFNpemUmKTsKKyAgICBib29s
IHNob3VsZFBhaW50QXRMb3dRdWFsaXR5KEdyYXBoaWNzQ29udGV4dCYsIEltYWdlJiwgY29uc3Qg
dm9pZCosIGNvbnN0IExheW91dFNpemUmKTsKIAogICAgIFJlbmRlckJveE1vZGVsT2JqZWN0KiBj
b250aW51YXRpb24oKSBjb25zdDsKICAgICB2b2lkIHNldENvbnRpbnVhdGlvbihSZW5kZXJCb3hN
b2RlbE9iamVjdCopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckVtYmVkZGVkT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbWJl
ZGRlZE9iamVjdC5jcHAKaW5kZXggODhiNDU2NGQzM2FlZjdlNDZhMzkyMzcwZDA2NzUwYzNkNjBk
NDkxNC4uYTNmODg5MWZkOTk3ZThjMmNhODZmNTBjYjVmZmY2YzFiMDA1N2VkOSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVtYmVkZGVkT2JqZWN0LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRW1iZWRkZWRPYmplY3QuY3BwCkBAIC0x
OTcsNyArMTk3LDcgQEAgdm9pZCBSZW5kZXJFbWJlZGRlZE9iamVjdDo6c2V0VW5hdmFpbGFibGVQ
bHVnaW5JbmRpY2F0b3JJc1ByZXNzZWQoYm9vbCBwcmVzc2VkKQogICAgIHJlcGFpbnQoKTsKIH0K
IAotdm9pZCBSZW5kZXJFbWJlZGRlZE9iamVjdDo6cGFpbnRTbmFwc2hvdEltYWdlKFBhaW50SW5m
byYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbnRPZmZzZXQsIEltYWdlKiBpbWFn
ZSkKK3ZvaWQgUmVuZGVyRW1iZWRkZWRPYmplY3Q6OnBhaW50U25hcHNob3RJbWFnZShQYWludElu
Zm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50T2Zmc2V0LCBJbWFnZSYgaW1h
Z2UpCiB7CiAgICAgTGF5b3V0VW5pdCBjV2lkdGggPSBjb250ZW50V2lkdGgoKTsKICAgICBMYXlv
dXRVbml0IGNIZWlnaHQgPSBjb250ZW50SGVpZ2h0KCk7CkBAIC0yMTQsNyArMjE0LDcgQEAgdm9p
ZCBSZW5kZXJFbWJlZGRlZE9iamVjdDo6cGFpbnRTbmFwc2hvdEltYWdlKFBhaW50SW5mbyYgcGFp
bnRJbmZvLCBjb25zdCBMYXlvdXQKICAgICBpZiAoYWxpZ25lZFJlY3Qud2lkdGgoKSA8PSAwIHx8
IGFsaWduZWRSZWN0LmhlaWdodCgpIDw9IDApCiAgICAgICAgIHJldHVybjsKIAotICAgIGJvb2wg
dXNlTG93UXVhbGl0eVNjYWxpbmcgPSBzaG91bGRQYWludEF0TG93UXVhbGl0eShjb250ZXh0LCBp
bWFnZSwgaW1hZ2UsIGFsaWduZWRSZWN0LnNpemUoKSk7CisgICAgYm9vbCB1c2VMb3dRdWFsaXR5
U2NhbGluZyA9IHNob3VsZFBhaW50QXRMb3dRdWFsaXR5KGNvbnRleHQsIGltYWdlLCAmaW1hZ2Us
IGFsaWduZWRSZWN0LnNpemUoKSk7CiAgICAgSW1hZ2VPcmllbnRhdGlvbkRlc2NyaXB0aW9uIG9y
aWVudGF0aW9uRGVzY3JpcHRpb24oc2hvdWxkUmVzcGVjdEltYWdlT3JpZW50YXRpb24oKSk7CiAj
aWYgRU5BQkxFKENTU19JTUFHRV9PUklFTlRBVElPTikKICAgICBvcmllbnRhdGlvbkRlc2NyaXB0
aW9uLnNldEltYWdlT3JpZW50YXRpb25FbnVtKHN0eWxlKCkuaW1hZ2VPcmllbnRhdGlvbigpKTsK
QEAgLTIzOSw3ICsyMzksNyBAQCB2b2lkIFJlbmRlckVtYmVkZGVkT2JqZWN0OjpwYWludENvbnRl
bnRzKFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2ludAogICAgICAgICByZXR1
cm47CiAKICAgICBpZiAoSW1hZ2UqIHNuYXBzaG90ID0gZG93bmNhc3Q8SFRNTFBsdWdJbkltYWdl
RWxlbWVudD4ocGx1Z0luRWxlbWVudCkuc25hcHNob3RJbWFnZSgpKQotICAgICAgICBwYWludFNu
YXBzaG90SW1hZ2UocGFpbnRJbmZvLCBwYWludE9mZnNldCwgc25hcHNob3QpOworICAgICAgICBw
YWludFNuYXBzaG90SW1hZ2UocGFpbnRJbmZvLCBwYWludE9mZnNldCwgKnNuYXBzaG90KTsKIH0K
IAogdm9pZCBSZW5kZXJFbWJlZGRlZE9iamVjdDo6cGFpbnQoUGFpbnRJbmZvJiBwYWludEluZm8s
IGNvbnN0IExheW91dFBvaW50JiBwYWludE9mZnNldCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJFbWJlZGRlZE9iamVjdC5oIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckVtYmVkZGVkT2JqZWN0LmgKaW5kZXggYmQ2NjY4ZDM0OGZjNzBiMTAyYTky
MWJlMDk1ZDE5NDVhOGRhZTNkOC4uODk1OWUxZjVhZmFlY2QyNzAyNjAzMTY4YmY3MTM5YmQ1YzYw
NDZkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVtYmVkZGVk
T2JqZWN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVtYmVkZGVkT2Jq
ZWN0LmgKQEAgLTczLDcgKzczLDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIGNvbnN0IGNoYXIq
IHJlbmRlck5hbWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAiUmVuZGVyRW1iZWRkZWRPYmpl
Y3QiOyB9CiAgICAgdmlydHVhbCBib29sIGlzRW1iZWRkZWRPYmplY3QoKSBjb25zdCBvdmVycmlk
ZSBmaW5hbCB7IHJldHVybiB0cnVlOyB9CiAKLSAgICB2b2lkIHBhaW50U25hcHNob3RJbWFnZShQ
YWludEluZm8mLCBjb25zdCBMYXlvdXRQb2ludCYsIEltYWdlKik7CisgICAgdm9pZCBwYWludFNu
YXBzaG90SW1hZ2UoUGFpbnRJbmZvJiwgY29uc3QgTGF5b3V0UG9pbnQmLCBJbWFnZSYpOwogICAg
IHZpcnR1YWwgdm9pZCBwYWludENvbnRlbnRzKFBhaW50SW5mbyYsIGNvbnN0IExheW91dFBvaW50
Jikgb3ZlcnJpZGUgZmluYWw7CiAKICAgICB2aXJ0dWFsIGJvb2wgcmVxdWlyZXNMYXllcigpIGNv
bnN0IG92ZXJyaWRlIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckltYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZS5j
cHAKaW5kZXggNjlhZDIxNDhmYTc5ZGVhYzZhMjkyZDI3OGMxMzU2ZmJmYTg1ZDI1Mi4uMWQ0Nzhi
ZjZmZmM4N2ZlZmY0NzU1NzQxNTI1MjRmYjFkYzg3MmRiNyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVySW1hZ2UuY3BwCkBAIC00MjQsNyArNDI0LDcgQEAgdm9pZCBSZW5kZXJJbWFn
ZTo6cGFpbnRSZXBsYWNlZChQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQm
IHBhaW50T2YKICNpZiBFTkFCTEUoQ1NTX0lNQUdFX09SSUVOVEFUSU9OKQogICAgICAgICAgICAg
ICAgIG9yaWVudGF0aW9uRGVzY3JpcHRpb24uc2V0SW1hZ2VPcmllbnRhdGlvbkVudW0oc3R5bGUo
KS5pbWFnZU9yaWVudGF0aW9uKCkpOwogI2VuZGlmCi0gICAgICAgICAgICAgICAgY29udGV4dC5k
cmF3SW1hZ2UoaW1hZ2UuZ2V0KCksIHN0eWxlKCkuY29sb3JTcGFjZSgpLCBzbmFwUmVjdFRvRGV2
aWNlUGl4ZWxzKExheW91dFJlY3QocGFpbnRPZmZzZXQgKyBpbWFnZU9mZnNldCwgaW1hZ2VTaXpl
KSwgZGV2aWNlU2NhbGVGYWN0b3IpLCBvcmllbnRhdGlvbkRlc2NyaXB0aW9uKTsKKyAgICAgICAg
ICAgICAgICBjb250ZXh0LmRyYXdJbWFnZSgqaW1hZ2UsIHN0eWxlKCkuY29sb3JTcGFjZSgpLCBz
bmFwUmVjdFRvRGV2aWNlUGl4ZWxzKExheW91dFJlY3QocGFpbnRPZmZzZXQgKyBpbWFnZU9mZnNl
dCwgaW1hZ2VTaXplKSwgZGV2aWNlU2NhbGVGYWN0b3IpLCBvcmllbnRhdGlvbkRlc2NyaXB0aW9u
KTsKICAgICAgICAgICAgICAgICBlcnJvclBpY3R1cmVEcmF3biA9IHRydWU7CiAgICAgICAgICAg
ICB9CiAKQEAgLTU0OCwxMiArNTQ4LDEyIEBAIHZvaWQgUmVuZGVySW1hZ2U6OnBhaW50SW50b1Jl
Y3QoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIHJlY3QpCiAgICAg
SFRNTEltYWdlRWxlbWVudCogaW1hZ2VFbGVtZW50ID0gaXM8SFRNTEltYWdlRWxlbWVudD4oZWxl
bWVudCgpKSA/IGRvd25jYXN0PEhUTUxJbWFnZUVsZW1lbnQ+KGVsZW1lbnQoKSkgOiBudWxscHRy
OwogICAgIENvbXBvc2l0ZU9wZXJhdG9yIGNvbXBvc2l0ZU9wZXJhdG9yID0gaW1hZ2VFbGVtZW50
ID8gaW1hZ2VFbGVtZW50LT5jb21wb3NpdGVPcGVyYXRvcigpIDogQ29tcG9zaXRlU291cmNlT3Zl
cjsKICAgICBJbWFnZSogaW1hZ2UgPSBpbWFnZVJlc291cmNlKCkuaW1hZ2UoKS5nZXQoKTsKLSAg
ICBib29sIHVzZUxvd1F1YWxpdHlTY2FsaW5nID0gc2hvdWxkUGFpbnRBdExvd1F1YWxpdHkoY29u
dGV4dCwgaW1hZ2UsIGltYWdlLCBMYXlvdXRTaXplKHJlY3Quc2l6ZSgpKSk7CisgICAgYm9vbCB1
c2VMb3dRdWFsaXR5U2NhbGluZyA9IGltYWdlICYmIHNob3VsZFBhaW50QXRMb3dRdWFsaXR5KGNv
bnRleHQsICppbWFnZSwgaW1hZ2UsIExheW91dFNpemUocmVjdC5zaXplKCkpKTsKICAgICBJbWFn
ZU9yaWVudGF0aW9uRGVzY3JpcHRpb24gb3JpZW50YXRpb25EZXNjcmlwdGlvbihzaG91bGRSZXNw
ZWN0SW1hZ2VPcmllbnRhdGlvbigpKTsKICNpZiBFTkFCTEUoQ1NTX0lNQUdFX09SSUVOVEFUSU9O
KQogICAgIG9yaWVudGF0aW9uRGVzY3JpcHRpb24uc2V0SW1hZ2VPcmllbnRhdGlvbkVudW0oc3R5
bGUoKS5pbWFnZU9yaWVudGF0aW9uKCkpOwogI2VuZGlmCi0gICAgY29udGV4dC5kcmF3SW1hZ2Uo
aW1hZ2VSZXNvdXJjZSgpLmltYWdlKHJlY3Qud2lkdGgoKSwgcmVjdC5oZWlnaHQoKSkuZ2V0KCks
IHN0eWxlKCkuY29sb3JTcGFjZSgpLCByZWN0LAorICAgIGNvbnRleHQuZHJhd0ltYWdlKCppbWcs
IHN0eWxlKCkuY29sb3JTcGFjZSgpLCByZWN0LAogICAgICAgICBJbWFnZVBhaW50aW5nT3B0aW9u
cyhjb21wb3NpdGVPcGVyYXRvciwgQmxlbmRNb2RlTm9ybWFsLCBvcmllbnRhdGlvbkRlc2NyaXB0
aW9uLCB1c2VMb3dRdWFsaXR5U2NhbGluZykpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2VSZXNvdXJjZVN0eWxlSW1hZ2UuY3BwIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlUmVzb3VyY2VTdHlsZUltYWdlLmNwcAppbmRl
eCA0MmIzN2RkZDY3ZjFkMTdmNTFjMTMwODhkMjE2ZDY0OGNhNjQ2ZGQwLi41MWE4NmE2ZjgyYzA3
ZTEyNjA5NWFkMDhjNzNmMGZhZTBlZWYyYmQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVySW1hZ2VSZXNvdXJjZVN0eWxlSW1hZ2UuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZVJlc291cmNlU3R5bGVJbWFnZS5jcHAKQEAgLTU3
LDE0ICs1NywxNCBAQCB2b2lkIFJlbmRlckltYWdlUmVzb3VyY2VTdHlsZUltYWdlOjpzaHV0ZG93
bigpCiB7CiAgICAgQVNTRVJUKG1fcmVuZGVyZXIpOwogICAgIG1fc3R5bGVJbWFnZS0+cmVtb3Zl
Q2xpZW50KG1fcmVuZGVyZXIpOwotICAgIG1fY2FjaGVkSW1hZ2UgPSAwOworICAgIG1fY2FjaGVk
SW1hZ2UgPSBudWxscHRyOwogfQogCiBQYXNzUmVmUHRyPEltYWdlPiBSZW5kZXJJbWFnZVJlc291
cmNlU3R5bGVJbWFnZTo6aW1hZ2UoaW50IHdpZHRoLCBpbnQgaGVpZ2h0KSBjb25zdAogewogICAg
IC8vIEdlbmVyYXRlZCBjb250ZW50IG1heSB0cmlnZ2VyIGNhbGxzIHRvIGltYWdlKCkgd2hpbGUg
d2UncmUgc3RpbGwgcGVuZGluZywgZG9uJ3QgYXNzZXJ0IGJ1dCBncmFjZWZ1bGx5IGV4aXQuCiAg
ICAgaWYgKG1fc3R5bGVJbWFnZS0+aXNQZW5kaW5nSW1hZ2UoKSkKLSAgICAgICAgcmV0dXJuIDA7
CisgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIHJldHVybiBtX3N0eWxlSW1hZ2UtPmltYWdl
KG1fcmVuZGVyZXIsIEludFNpemUod2lkdGgsIGhlaWdodCkpOwogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcAppbmRleCAzNDk4YzdjYzg0NGEzNDQzZDlhNDQzZGM2
NTQ0ZDUwZjEyM2FhMWJhLi4wN2E1YWY3NzU3ZDRmMjZhMjM2NmIyNTNlNWZhZTdjZDhhNDg1Y2Ex
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAKQEAgLTM2NTUsMTIg
KzM2NTUsMTYgQEAgdm9pZCBSZW5kZXJMYXllcjo6ZHJhd1BsYXRmb3JtUmVzaXplckltYWdlKEdy
YXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgTGF5b3UKICAgICAgICAgY29udGV4dC5zYXZl
KCk7CiAgICAgICAgIGNvbnRleHQudHJhbnNsYXRlKHJlc2l6ZXJDb3JuZXJSZWN0LngoKSArIGNv
cm5lclJlc2l6ZXJTaXplLndpZHRoKCksIHJlc2l6ZXJDb3JuZXJSZWN0LnkoKSArIHJlc2l6ZXJD
b3JuZXJSZWN0LmhlaWdodCgpIC0gY29ybmVyUmVzaXplclNpemUuaGVpZ2h0KCkpOwogICAgICAg
ICBjb250ZXh0LnNjYWxlKEZsb2F0U2l6ZSgtMS4wLCAxLjApKTsKLSAgICAgICAgY29udGV4dC5k
cmF3SW1hZ2UocmVzaXplQ29ybmVySW1hZ2UuZ2V0KCksIHJlbmRlcmVyKCkuc3R5bGUoKS5jb2xv
clNwYWNlKCksIEZsb2F0UmVjdChGbG9hdFBvaW50KCksIGNvcm5lclJlc2l6ZXJTaXplKSk7Cisg
ICAgICAgIGlmIChyZXNpemVDb3JuZXJJbWFnZSkKKyAgICAgICAgICAgIGNvbnRleHQuZHJhd0lt
YWdlKCpyZXNpemVDb3JuZXJJbWFnZSwgcmVuZGVyZXIoKS5zdHlsZSgpLmNvbG9yU3BhY2UoKSwg
RmxvYXRSZWN0KEZsb2F0UG9pbnQoKSwgY29ybmVyUmVzaXplclNpemUpKTsKICAgICAgICAgY29u
dGV4dC5yZXN0b3JlKCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CisgICAgCisgICAgaWYgKCFy
ZXNpemVDb3JuZXJJbWFnZSkKKyAgICAgICAgcmV0dXJuOwogICAgIEZsb2F0UmVjdCBpbWFnZVJl
Y3QgPSBzbmFwUmVjdFRvRGV2aWNlUGl4ZWxzKExheW91dFJlY3QocmVzaXplckNvcm5lclJlY3Qu
bWF4WE1heFlDb3JuZXIoKSAtIGNvcm5lclJlc2l6ZXJTaXplLCBjb3JuZXJSZXNpemVyU2l6ZSks
IHJlbmRlcmVyKCkuZG9jdW1lbnQoKS5kZXZpY2VTY2FsZUZhY3RvcigpKTsKLSAgICBjb250ZXh0
LmRyYXdJbWFnZShyZXNpemVDb3JuZXJJbWFnZS5nZXQoKSwgcmVuZGVyZXIoKS5zdHlsZSgpLmNv
bG9yU3BhY2UoKSwgaW1hZ2VSZWN0KTsKKyAgICBjb250ZXh0LmRyYXdJbWFnZSgqcmVzaXplQ29y
bmVySW1hZ2UsIHJlbmRlcmVyKCkuc3R5bGUoKS5jb2xvclNwYWNlKCksIGltYWdlUmVjdCk7CiB9
CiAKIHZvaWQgUmVuZGVyTGF5ZXI6OnBhaW50UmVzaXplcihHcmFwaGljc0NvbnRleHQmIGNvbnRl
eHQsIGNvbnN0IExheW91dFBvaW50JiBwYWludE9mZnNldCwgY29uc3QgTGF5b3V0UmVjdCYgZGFt
YWdlUmVjdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0
TWFya2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0TWFya2VyLmNw
cAppbmRleCA0MDA3YWE3MGRjMTg0YWZlMjgyMzk1MTMyZmE4ZDI0MDcyNTAzNDljLi5mNmUzNDZk
MzdiMDViYTQ2YTlmNjYwODA2MjA1YjQyNTFjN2IzNTE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdE1hcmtlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckxpc3RNYXJrZXIuY3BwCkBAIC0xMTk3LDcgKzExOTcsOCBAQCB2b2lk
IFJlbmRlckxpc3RNYXJrZXI6OnBhaW50KFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlv
dXRQb2ludCYgcGFpbnRPZmZzZQogICAgIEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCA9IHBhaW50
SW5mby5jb250ZXh0KCk7CiAKICAgICBpZiAoaXNJbWFnZSgpKSB7Ci0gICAgICAgIGNvbnRleHQu
ZHJhd0ltYWdlKG1faW1hZ2UtPmltYWdlKHRoaXMsIG1hcmtlci5zaXplKCkpLmdldCgpLCBzdHls
ZSgpLmNvbG9yU3BhY2UoKSwgbWFya2VyKTsKKyAgICAgICAgaWYgKFJlZlB0cjxJbWFnZT4gbWFy
a2VySW1hZ2UgPSBtX2ltYWdlLT5pbWFnZSh0aGlzLCBtYXJrZXIuc2l6ZSgpKSkKKyAgICAgICAg
ICAgIGNvbnRleHQuZHJhd0ltYWdlKCptYXJrZXJJbWFnZSwgc3R5bGUoKS5jb2xvclNwYWNlKCks
IG1hcmtlcik7CiAgICAgICAgIGlmIChzZWxlY3Rpb25TdGF0ZSgpICE9IFNlbGVjdGlvbk5vbmUp
IHsKICAgICAgICAgICAgIExheW91dFJlY3Qgc2VsUmVjdCA9IGxvY2FsU2VsZWN0aW9uUmVjdCgp
OwogICAgICAgICAgICAgc2VsUmVjdC5tb3ZlQnkoYm94T3JpZ2luKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTbmFwc2hvdHRlZFBsdWdJbi5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU25hcHNob3R0ZWRQbHVnSW4uY3BwCmluZGV4IGJk
MWE5ZDUxZDI1YjNkODljNDFhMDkxMDI5YTg5MzRlMWRkNjQ1MGUuLmVjNDJjNjJjODEyN2NlZDM4
ZTU2MTY4NGQ4N2U4YjUwOWYxOWIzYzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJTbmFwc2hvdHRlZFBsdWdJbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlclNuYXBzaG90dGVkUGx1Z0luLmNwcApAQCAtMTM1LDEzICsxMzUsMTMgQEAg
dm9pZCBSZW5kZXJTbmFwc2hvdHRlZFBsdWdJbjo6cGFpbnRTbmFwc2hvdChQYWludEluZm8mIHBh
aW50SW5mbywgY29uc3QgTGF5b3V0UG8KICAgICBpZiAoYWxpZ25lZFJlY3Qud2lkdGgoKSA8PSAw
IHx8IGFsaWduZWRSZWN0LmhlaWdodCgpIDw9IDApCiAgICAgICAgIHJldHVybjsKIAotICAgIGJv
b2wgdXNlTG93UXVhbGl0eVNjYWxpbmcgPSBzaG91bGRQYWludEF0TG93UXVhbGl0eShjb250ZXh0
LCBpbWFnZSwgaW1hZ2UsIGFsaWduZWRSZWN0LnNpemUoKSk7CisgICAgYm9vbCB1c2VMb3dRdWFs
aXR5U2NhbGluZyA9IHNob3VsZFBhaW50QXRMb3dRdWFsaXR5KGNvbnRleHQsICppbWFnZSwgaW1h
Z2UsIGFsaWduZWRSZWN0LnNpemUoKSk7CiAKICAgICBJbWFnZU9yaWVudGF0aW9uRGVzY3JpcHRp
b24gb3JpZW50YXRpb25EZXNjcmlwdGlvbihzaG91bGRSZXNwZWN0SW1hZ2VPcmllbnRhdGlvbigp
KTsKICNpZiBFTkFCTEUoQ1NTX0lNQUdFX09SSUVOVEFUSU9OKQogICAgIG9yaWVudGF0aW9uRGVz
Y3JpcHRpb24uc2V0SW1hZ2VPcmllbnRhdGlvbkVudW0oc3R5bGUoKS5pbWFnZU9yaWVudGF0aW9u
KCkpOwogI2VuZGlmCi0gICAgY29udGV4dC5kcmF3SW1hZ2UoaW1hZ2UsIHN0eWxlKCkuY29sb3JT
cGFjZSgpLCBhbGlnbmVkUmVjdCwgSW1hZ2VQYWludGluZ09wdGlvbnMob3JpZW50YXRpb25EZXNj
cmlwdGlvbiwgdXNlTG93UXVhbGl0eVNjYWxpbmcpKTsKKyAgICBjb250ZXh0LmRyYXdJbWFnZSgq
aW1hZ2UsIHN0eWxlKCkuY29sb3JTcGFjZSgpLCBhbGlnbmVkUmVjdCwgSW1hZ2VQYWludGluZ09w
dGlvbnMob3JpZW50YXRpb25EZXNjcmlwdGlvbiwgdXNlTG93UXVhbGl0eVNjYWxpbmcpKTsKIH0K
IAogQ3Vyc29yRGlyZWN0aXZlIFJlbmRlclNuYXBzaG90dGVkUGx1Z0luOjpnZXRDdXJzb3IoY29u
c3QgTGF5b3V0UG9pbnQmIHBvaW50LCBDdXJzb3ImIG92ZXJyaWRlQ3Vyc29yKSBjb25zdApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lTWFjLm1tIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lTWFjLm1tCmluZGV4IGQ4YWYzZDIzZTc5
OGQwMzVkNmRjMjU5YzRhMTY5MGNkNzM2Y2NmOTMuLmRhMmQ5YTcyZTVjZjlhZGY3YTQxZjE3OTEz
Nzc5MGE2Y2IxYjIxNTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJUaGVtZU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVN
YWMubW0KQEAgLTExNTgsNyArMTE1OCw3IEBAIGJvb2wgUmVuZGVyVGhlbWVNYWM6OnBhaW50UHJv
Z3Jlc3NCYXIoY29uc3QgUmVuZGVyT2JqZWN0JiByZW5kZXJPYmplY3QsIGNvbnN0IFBhCiAgICAg
ICAgIHBhaW50SW5mby5jb250ZXh0KCkuc2NhbGUoRmxvYXRTaXplKC0xLCAxKSk7CiAgICAgfQog
Ci0gICAgcGFpbnRJbmZvLmNvbnRleHQoKS5kcmF3SW1hZ2VCdWZmZXIoaW1hZ2VCdWZmZXIuZ2V0
KCksIENvbG9yU3BhY2VEZXZpY2VSR0IsIGluZmxhdGVkUmVjdC5sb2NhdGlvbigpKTsKKyAgICBw
YWludEluZm8uY29udGV4dCgpLmRyYXdJbWFnZUJ1ZmZlcigqaW1hZ2VCdWZmZXIsIENvbG9yU3Bh
Y2VEZXZpY2VSR0IsIGluZmxhdGVkUmVjdC5sb2NhdGlvbigpKTsKICAgICByZXR1cm4gZmFsc2U7
CiB9CiAKQEAgLTE5MTIsNyArMTkxMiw3IEBAIGJvb2wgUmVuZGVyVGhlbWVNYWM6OnBhaW50U25h
cHNob3R0ZWRQbHVnaW5PdmVybGF5KGNvbnN0IFJlbmRlck9iamVjdCYgcmVuZGVyZXIsCiAgICAg
aWYgKGFsaWduZWRQbHVnaW5SZWN0LndpZHRoKCkgPD0gMCB8fCBhbGlnbmVkUGx1Z2luUmVjdC5o
ZWlnaHQoKSA8PSAwKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAotICAgIGNvbnRleHQuZHJhd0lt
YWdlKHNuYXBzaG90LCBwbHVnSW5SZW5kZXJlci5zdHlsZSgpLmNvbG9yU3BhY2UoKSwgYWxpZ25l
ZFBsdWdpblJlY3QsIENvbXBvc2l0ZVNvdXJjZU92ZXIpOworICAgIGNvbnRleHQuZHJhd0ltYWdl
KCpzbmFwc2hvdCwgcGx1Z0luUmVuZGVyZXIuc3R5bGUoKS5jb2xvclNwYWNlKCksIGFsaWduZWRQ
bHVnaW5SZWN0LCBDb21wb3NpdGVTb3VyY2VPdmVyKTsKICAgICByZXR1cm4gZmFsc2U7CiB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMvU2hhcGUuY3BwIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3NoYXBlcy9TaGFwZS5jcHAKaW5kZXggMmQ0NzU4MjFm
ZDJmYzczYTk0ZTY3NTM5NGFlOGE2MzBlYTU3ZjJmNS4uZTBjYWVhYzljZDgwMWExYjhiNzMwYjhm
NGI5ZDdhNmQ3MTdlYmFhZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3No
YXBlcy9TaGFwZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3NoYXBlcy9TaGFw
ZS5jcHAKQEAgLTE4NCw3ICsxODQsOCBAQCBzdGQ6OnVuaXF1ZV9wdHI8U2hhcGU+IFNoYXBlOjpj
cmVhdGVSYXN0ZXJTaGFwZShJbWFnZSogaW1hZ2UsIGZsb2F0IHRocmVzaG9sZCwgYwogCiAgICAg
aWYgKGltYWdlQnVmZmVyKSB7CiAgICAgICAgIEdyYXBoaWNzQ29udGV4dCYgZ3JhcGhpY3NDb250
ZXh0ID0gaW1hZ2VCdWZmZXItPmNvbnRleHQoKTsKLSAgICAgICAgZ3JhcGhpY3NDb250ZXh0LmRy
YXdJbWFnZShpbWFnZSwgQ29sb3JTcGFjZURldmljZVJHQiwgSW50UmVjdChJbnRQb2ludCgpLCBp
bWFnZVJlY3Quc2l6ZSgpKSk7CisgICAgICAgIGlmIChpbWFnZSkKKyAgICAgICAgICAgIGdyYXBo
aWNzQ29udGV4dC5kcmF3SW1hZ2UoKmltYWdlLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBJbnRSZWN0
KEludFBvaW50KCksIGltYWdlUmVjdC5zaXplKCkpKTsKIAogICAgICAgICBSZWZQdHI8VWludDhD
bGFtcGVkQXJyYXk+IHBpeGVsQXJyYXkgPSBpbWFnZUJ1ZmZlci0+Z2V0VW5tdWx0aXBsaWVkSW1h
Z2VEYXRhKEludFJlY3QoSW50UG9pbnQoKSwgaW1hZ2VSZWN0LnNpemUoKSkpOwogICAgICAgICB1
bnNpZ25lZCBwaXhlbEFycmF5TGVuZ3RoID0gcGl4ZWxBcnJheS0+bGVuZ3RoKCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL1NoYXBlT3V0c2lkZUluZm8uY3Bw
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3NoYXBlcy9TaGFwZU91dHNpZGVJbmZvLmNwcApp
bmRleCA2NmQzMTgzY2Y0MDhkNzQyZGIwMDg3NzMwMTFmOTMwZDhhZjUwZGQ1Li5kYzg0YjlhNTI2
MTI1MDUxZDA0MWU4Y2NmMDIxYmEwNmJhYTQ3Mjk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc2hhcGVzL1NoYXBlT3V0c2lkZUluZm8uY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zaGFwZXMvU2hhcGVPdXRzaWRlSW5mby5jcHAKQEAgLTE1OCw3ICsxNTgs
NiBAQCBzdGQ6OnVuaXF1ZV9wdHI8U2hhcGU+IFNoYXBlT3V0c2lkZUluZm86OmNyZWF0ZVNoYXBl
Rm9ySW1hZ2UoU3R5bGVJbWFnZSogc3R5bGVJbQogCiAgICAgQVNTRVJUKCFzdHlsZUltYWdlLT5p
c1BlbmRpbmdJbWFnZSgpKTsKICAgICBSZWZQdHI8SW1hZ2U+IGltYWdlID0gc3R5bGVJbWFnZS0+
aW1hZ2UoY29uc3RfY2FzdDxSZW5kZXJCb3gqPigmbV9yZW5kZXJlciksIGltYWdlU2l6ZSk7Ci0K
ICAgICByZXR1cm4gU2hhcGU6OmNyZWF0ZVJhc3RlclNoYXBlKGltYWdlLmdldCgpLCBzaGFwZUlt
YWdlVGhyZXNob2xkLCBpbWFnZVJlY3QsIG1hcmdpblJlY3QsIHdyaXRpbmdNb2RlLCBtYXJnaW4p
OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvTmluZVBp
ZWNlSW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL05pbmVQaWVjZUlt
YWdlLmNwcAppbmRleCBhYTExY2RkYzk0YmZkZTQ0Y2FkN2M1YWYwOGM0NjUxYmY1OTNiY2Y1Li5j
OTM5YWU3NWQxZGZiYjkzYzIwMGQ5NDBjYTZkNGEyOWE3NmE2YmQwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvTmluZVBpZWNlSW1hZ2UuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9OaW5lUGllY2VJbWFnZS5jcHAKQEAgLTIwNiw2ICsy
MDYsOSBAQCB2b2lkIE5pbmVQaWVjZUltYWdlOjpwYWludChHcmFwaGljc0NvbnRleHQmIGdyYXBo
aWNzQ29udGV4dCwgUmVuZGVyRWxlbWVudCogcmVuZAogICAgIFZlY3RvcjxGbG9hdFNpemU+IHRp
bGVTY2FsZXMgPSBjb21wdXRlVGlsZVNjYWxlcyhkZXN0aW5hdGlvblJlY3RzLCBzb3VyY2VSZWN0
cywgaG9yaXpvbnRhbFJ1bGUoKSwgdmVydGljYWxSdWxlKCkpOwogCiAgICAgUmVmUHRyPEltYWdl
PiBpbWFnZSA9IHN0eWxlSW1hZ2UtPmltYWdlKHJlbmRlcmVyLCBzb3VyY2UpOworICAgIGlmICgh
aW1hZ2UpCisgICAgICAgIHJldHVybjsKKwogICAgIENvbG9yU3BhY2UgY29sb3JTcGFjZSA9IHN0
eWxlLmNvbG9yU3BhY2UoKTsKIAogICAgIGZvciAoSW1hZ2VQaWVjZSBwaWVjZSA9IE1pblBpZWNl
OyBwaWVjZSA8IE1heFBpZWNlOyArK3BpZWNlKSB7CkBAIC0yMTMsMTMgKzIxNiwxMyBAQCB2b2lk
IE5pbmVQaWVjZUltYWdlOjpwYWludChHcmFwaGljc0NvbnRleHQmIGdyYXBoaWNzQ29udGV4dCwg
UmVuZGVyRWxlbWVudCogcmVuZAogICAgICAgICAgICAgY29udGludWU7CiAKICAgICAgICAgaWYg
KGlzQ29ybmVyUGllY2UocGllY2UpKSB7Ci0gICAgICAgICAgICBncmFwaGljc0NvbnRleHQuZHJh
d0ltYWdlKGltYWdlLmdldCgpLCBjb2xvclNwYWNlLCBkZXN0aW5hdGlvblJlY3RzW3BpZWNlXSwg
c291cmNlUmVjdHNbcGllY2VdLCBvcCk7CisgICAgICAgICAgICBncmFwaGljc0NvbnRleHQuZHJh
d0ltYWdlKCppbWFnZSwgY29sb3JTcGFjZSwgZGVzdGluYXRpb25SZWN0c1twaWVjZV0sIHNvdXJj
ZVJlY3RzW3BpZWNlXSwgb3ApOwogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KIAog
ICAgICAgICBJbWFnZTo6VGlsZVJ1bGUgaFJ1bGUgPSBpc0hvcml6b250YWxQaWVjZShwaWVjZSkg
PyBzdGF0aWNfY2FzdDxJbWFnZTo6VGlsZVJ1bGU+KGhvcml6b250YWxSdWxlKCkpIDogSW1hZ2U6
OlN0cmV0Y2hUaWxlOwogICAgICAgICBJbWFnZTo6VGlsZVJ1bGUgdlJ1bGUgPSBpc1ZlcnRpY2Fs
UGllY2UocGllY2UpID8gc3RhdGljX2Nhc3Q8SW1hZ2U6OlRpbGVSdWxlPih2ZXJ0aWNhbFJ1bGUo
KSkgOiBJbWFnZTo6U3RyZXRjaFRpbGU7Ci0gICAgICAgIGdyYXBoaWNzQ29udGV4dC5kcmF3VGls
ZWRJbWFnZShpbWFnZS5nZXQoKSwgY29sb3JTcGFjZSwgZGVzdGluYXRpb25SZWN0c1twaWVjZV0s
IHNvdXJjZVJlY3RzW3BpZWNlXSwgdGlsZVNjYWxlc1twaWVjZV0sIGhSdWxlLCB2UnVsZSwgb3Ap
OworICAgICAgICBncmFwaGljc0NvbnRleHQuZHJhd1RpbGVkSW1hZ2UoKmltYWdlLCBjb2xvclNw
YWNlLCBkZXN0aW5hdGlvblJlY3RzW3BpZWNlXSwgc291cmNlUmVjdHNbcGllY2VdLCB0aWxlU2Nh
bGVzW3BpZWNlXSwgaFJ1bGUsIHZSdWxlLCBvcCk7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0ltYWdlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHSW1hZ2UuY3BwCmluZGV4IGI4YTE5NmU5NTEz
NzAxZDU2YWJlYTZiOTJjZmFkNGVkMzAzYWMzODQuLmVmNzU3ZTczNjNmMzQ4ZGJkZmZhNTJmY2Nk
ZThhZDJjYzAyYjczNTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcv
UmVuZGVyU1ZHSW1hZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVu
ZGVyU1ZHSW1hZ2UuY3BwCkBAIC0xNjEsMTIgKzE2MSwxNSBAQCB2b2lkIFJlbmRlclNWR0ltYWdl
OjpwYWludChQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQmKQogdm9pZCBS
ZW5kZXJTVkdJbWFnZTo6cGFpbnRGb3JlZ3JvdW5kKFBhaW50SW5mbyYgcGFpbnRJbmZvKQogewog
ICAgIFJlZlB0cjxJbWFnZT4gaW1hZ2UgPSBpbWFnZVJlc291cmNlKCkuaW1hZ2UoKTsKKyAgICBp
ZiAoIWltYWdlKQorICAgICAgICByZXR1cm47CisKICAgICBGbG9hdFJlY3QgZGVzdFJlY3QgPSBt
X29iamVjdEJvdW5kaW5nQm94OwogICAgIEZsb2F0UmVjdCBzcmNSZWN0KDAsIDAsIGltYWdlLT53
aWR0aCgpLCBpbWFnZS0+aGVpZ2h0KCkpOwogCiAgICAgaW1hZ2VFbGVtZW50KCkucHJlc2VydmVB
c3BlY3RSYXRpbygpLnRyYW5zZm9ybVJlY3QoZGVzdFJlY3QsIHNyY1JlY3QpOwogCi0gICAgcGFp
bnRJbmZvLmNvbnRleHQoKS5kcmF3SW1hZ2UoaW1hZ2UuZ2V0KCksIENvbG9yU3BhY2VEZXZpY2VS
R0IsIGRlc3RSZWN0LCBzcmNSZWN0KTsKKyAgICBwYWludEluZm8uY29udGV4dCgpLmRyYXdJbWFn
ZSgqaW1hZ2UsIENvbG9yU3BhY2VEZXZpY2VSR0IsIGRlc3RSZWN0LCBzcmNSZWN0KTsKIH0KIAog
dm9pZCBSZW5kZXJTVkdJbWFnZTo6aW52YWxpZGF0ZUJ1ZmZlcmVkRm9yZWdyb3VuZCgpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlRmls
dGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VG
aWx0ZXIuY3BwCmluZGV4IGMzZWRhMjk5ZGJlNWFhODQ5NWNkM2U4N2NjZmU0Yzg4OWU2ODcyYjMu
LjBmZDVkNjNlMjRmMjU3NTNkNmUyYzVlNGI3MzA0ZmMyMjQ5YTFjNjEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXIu
Y3BwCkBAIC0yNzAsNyArMjcwLDcgQEAgdm9pZCBSZW5kZXJTVkdSZXNvdXJjZUZpbHRlcjo6cG9z
dEFwcGx5UmVzb3VyY2UoUmVuZGVyRWxlbWVudCYgcmVuZGVyZXIsIEdyYXBoaWMKICAgICAgICAg
ICAgIGNvbnRleHQtPmNvbmNhdENUTShmaWx0ZXJEYXRhLT5zaGVhckZyZWVBYnNvbHV0ZVRyYW5z
Zm9ybS5pbnZlcnNlKCkpOwogCiAgICAgICAgICAgICBjb250ZXh0LT5zY2FsZShGbG9hdFNpemUo
MSAvIGZpbHRlckRhdGEtPmZpbHRlci0+ZmlsdGVyUmVzb2x1dGlvbigpLndpZHRoKCksIDEgLyBm
aWx0ZXJEYXRhLT5maWx0ZXItPmZpbHRlclJlc29sdXRpb24oKS5oZWlnaHQoKSkpOwotICAgICAg
ICAgICAgY29udGV4dC0+ZHJhd0ltYWdlQnVmZmVyKHJlc3VsdEltYWdlLCByZW5kZXJlci5zdHls
ZSgpLmNvbG9yU3BhY2UoKSwgbGFzdEVmZmVjdC0+YWJzb2x1dGVQYWludFJlY3QoKSk7CisgICAg
ICAgICAgICBjb250ZXh0LT5kcmF3SW1hZ2VCdWZmZXIoKnJlc3VsdEltYWdlLCByZW5kZXJlci5z
dHlsZSgpLmNvbG9yU3BhY2UoKSwgbGFzdEVmZmVjdC0+YWJzb2x1dGVQYWludFJlY3QoKSk7CiAg
ICAgICAgICAgICBjb250ZXh0LT5zY2FsZShmaWx0ZXJEYXRhLT5maWx0ZXItPmZpbHRlclJlc29s
dXRpb24oKSk7CiAKICAgICAgICAgICAgIGNvbnRleHQtPmNvbmNhdENUTShmaWx0ZXJEYXRhLT5z
aGVhckZyZWVBYnNvbHV0ZVRyYW5zZm9ybSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3ZnL1NWR1JlbmRlcmluZ0NvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N2Zy9TVkdSZW5kZXJpbmdDb250ZXh0LmNwcAppbmRleCA4OWI4ZTM4ZWU4NTE1NWEy
YjA4NzdkN2Q1ZmU3NDVjOGVmMWVjMThjLi5kMDJlZTUwYmQ2Y2EzN2U2MGE1MmVkNGY2ODA0NmVm
ZjkwODFhOGJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1Jl
bmRlcmluZ0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZH
UmVuZGVyaW5nQ29udGV4dC5jcHAKQEAgLTMwOSwxNCArMzA5LDE1IEBAIHZvaWQgU1ZHUmVuZGVy
aW5nQ29udGV4dDo6cmVuZGVyU3VidHJlZVRvSW1hZ2VCdWZmZXIoSW1hZ2VCdWZmZXIqIGltYWdl
LCBSZW5kZXJFCiAKIHZvaWQgU1ZHUmVuZGVyaW5nQ29udGV4dDo6Y2xpcFRvSW1hZ2VCdWZmZXIo
R3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIGFic29sdXRl
VHJhbnNmb3JtLCBjb25zdCBGbG9hdFJlY3QmIHRhcmdldFJlY3QsIHN0ZDo6dW5pcXVlX3B0cjxJ
bWFnZUJ1ZmZlcj4mIGltYWdlQnVmZmVyLCBib29sIHNhZmVUb0NsZWFyKQogewotICAgIEFTU0VS
VChpbWFnZUJ1ZmZlcik7CisgICAgaWYgKCFpbWFnZUJ1ZmZlcikKKyAgICAgICAgcmV0dXJuOwog
CiAgICAgRmxvYXRSZWN0IGFic29sdXRlVGFyZ2V0UmVjdCA9IGNhbGN1bGF0ZUltYWdlQnVmZmVy
UmVjdCh0YXJnZXRSZWN0LCBhYnNvbHV0ZVRyYW5zZm9ybSk7CiAKICAgICAvLyBUaGUgbWFzayBp
bWFnZSBoYXMgYmVlbiBjcmVhdGVkIGluIHRoZSBhYnNvbHV0ZSBjb29yZGluYXRlIHNwYWNlLCBh
cyB0aGUgaW1hZ2Ugc2hvdWxkIG5vdCBiZSBzY2FsZWQuCiAgICAgLy8gU28gdGhlIGFjdHVhbCBt
YXNraW5nIHByb2Nlc3MgaGFzIHRvIGJlIGRvbmUgaW4gdGhlIGFic29sdXRlIGNvb3JkaW5hdGUg
c3BhY2UgYXMgd2VsbC4KICAgICBjb250ZXh0LmNvbmNhdENUTShhYnNvbHV0ZVRyYW5zZm9ybS5p
bnZlcnNlKCkpOwotICAgIGNvbnRleHQuY2xpcFRvSW1hZ2VCdWZmZXIoaW1hZ2VCdWZmZXIuZ2V0
KCksIGFic29sdXRlVGFyZ2V0UmVjdCk7CisgICAgY29udGV4dC5jbGlwVG9JbWFnZUJ1ZmZlcigq
aW1hZ2VCdWZmZXIsIGFic29sdXRlVGFyZ2V0UmVjdCk7CiAgICAgY29udGV4dC5jb25jYXRDVE0o
YWJzb2x1dGVUcmFuc2Zvcm0pOwogCiAgICAgLy8gV2hlbiBuZXN0aW5nIHJlc291cmNlcywgd2l0
aCBvYmplY3RCb3VuZGluZ0JveCBhcyBjb250ZW50IHVuaXQgdHlwZXMsIHRoZXJlJ3Mgbm8gdXNl
IGluIGNhY2hpbmcgdGhlCkBAIC0zNjAsNyArMzYxLDcgQEAgYm9vbCBTVkdSZW5kZXJpbmdDb250
ZXh0OjpidWZmZXJGb3JlZ3JvdW5kKHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4mIGltYWdl
QnUKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKLSAgICBtX3BhaW50SW5mby0+
Y29udGV4dCgpLmRyYXdJbWFnZUJ1ZmZlcihpbWFnZUJ1ZmZlci5nZXQoKSwgQ29sb3JTcGFjZURl
dmljZVJHQiwgYm91bmRpbmdCb3gpOworICAgIG1fcGFpbnRJbmZvLT5jb250ZXh0KCkuZHJhd0lt
YWdlQnVmZmVyKCppbWFnZUJ1ZmZlciwgQ29sb3JTcGFjZURldmljZVJHQiwgYm91bmRpbmdCb3gp
OwogICAgIHJldHVybiB0cnVlOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcv
Z3JhcGhpY3MvZmlsdGVycy9TVkdGRUltYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFw
aGljcy9maWx0ZXJzL1NWR0ZFSW1hZ2UuY3BwCmluZGV4IGYwNzI1MThmNDQxNzUxMWM3OTEzOTBl
OTk2MjdmNWI1ZDE3ZTQ4YjEuLjY2MThjZjU0ODRlNDllZTIxY2NjZjY3ODk0ZDAwMmY2MGUxN2U4
MDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZF
SW1hZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZF
SW1hZ2UuY3BwCkBAIC0xMzUsNyArMTM1LDcgQEAgdm9pZCBGRUltYWdlOjpwbGF0Zm9ybUFwcGx5
U29mdHdhcmUoKQogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgcmVzdWx0SW1hZ2UtPmNv
bnRleHQoKS5kcmF3SW1hZ2UobV9pbWFnZS5nZXQoKSwgQ29sb3JTcGFjZURldmljZVJHQiwgZGVz
dFJlY3QsIHNyY1JlY3QpOworICAgIHJlc3VsdEltYWdlLT5jb250ZXh0KCkuZHJhd0ltYWdlKCpt
X2ltYWdlLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBkZXN0UmVjdCwgc3JjUmVjdCk7CiB9CiAKIHZv
aWQgRkVJbWFnZTo6ZHVtcCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ29u
dGV4dE1lbnVDb250ZXh0RGF0YS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ29udGV4dE1l
bnVDb250ZXh0RGF0YS5jcHAKaW5kZXggNTNmY2QyMzE4NTk5NTM3MmU1ZjRmYjdiNjI0MWM4M2Rm
MDFlZDA0Yi4uNzMyMzRlNWY3OTNkYTM4NTk5NDFhOWRjNzc0OWU3NDI3OGEwZTRkNSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0NvbnRleHRNZW51Q29udGV4dERhdGEuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Db250ZXh0TWVudUNvbnRleHREYXRhLmNwcApAQCAt
NTgsNyArNTgsNyBAQCBDb250ZXh0TWVudUNvbnRleHREYXRhOjpDb250ZXh0TWVudUNvbnRleHRE
YXRhKGNvbnN0IENvbnRleHRNZW51Q29udGV4dCYgY29udGV4dAogCiAgICAgLy8gRklYTUU6IGZp
Z3VyZSBvdXQgdGhlIHJvdW5kaW5nIHN0YXJ0ZWd5IGZvciBTaGFyZWFibGVCaXRtYXAuCiAgICAg
bV9jb250cm9sbGVkSW1hZ2UgPSBTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZVNoYXJlYWJsZShJbnRT
aXplKGltYWdlLT5zaXplKCkpLCBTaGFyZWFibGVCaXRtYXA6OlN1cHBvcnRzQWxwaGEpOwotICAg
IG1fY29udHJvbGxlZEltYWdlLT5jcmVhdGVHcmFwaGljc0NvbnRleHQoKS0+ZHJhd0ltYWdlKGlt
YWdlLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBJbnRQb2ludCgpKTsKKyAgICBtX2NvbnRyb2xsZWRJ
bWFnZS0+Y3JlYXRlR3JhcGhpY3NDb250ZXh0KCktPmRyYXdJbWFnZSgqaW1hZ2UsIENvbG9yU3Bh
Y2VEZXZpY2VSR0IsIEludFBvaW50KCkpOwogI2VuZGlmCiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwIGIvU291cmNlL1dlYktp
dDIvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAKaW5kZXggNzFkYzNkNGU1MWYyYWRj
NWFhZmEwZjIzMDUwMDFhYjhhNGU4ZDllZi4uZGQ2ZTU3N2UyY2Q0NWEzOTZlZGNmMTRkNmU2ZTY3
YzVmODlmZmRhZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkNvcmVBcmd1
bWVudENvZGVycy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkNvcmVBcmd1bWVu
dENvZGVycy5jcHAKQEAgLTcyMSw5ICs3MjEsOSBAQCBib29sIEFyZ3VtZW50Q29kZXI8Q3JlZGVu
dGlhbD46OmRlY29kZShBcmd1bWVudERlY29kZXImIGRlY29kZXIsIENyZWRlbnRpYWwmIGNyZQog
ICAgIHJldHVybiB0cnVlOwogfQogCi1zdGF0aWMgdm9pZCBlbmNvZGVJbWFnZShBcmd1bWVudEVu
Y29kZXImIGVuY29kZXIsIEltYWdlKiBpbWFnZSkKK3N0YXRpYyB2b2lkIGVuY29kZUltYWdlKEFy
Z3VtZW50RW5jb2RlciYgZW5jb2RlciwgSW1hZ2UmIGltYWdlKQogewotICAgIFJlZlB0cjxTaGFy
ZWFibGVCaXRtYXA+IGJpdG1hcCA9IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlU2hhcmVhYmxlKElu
dFNpemUoaW1hZ2UtPnNpemUoKSksIFNoYXJlYWJsZUJpdG1hcDo6U3VwcG9ydHNBbHBoYSk7Cisg
ICAgUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4gYml0bWFwID0gU2hhcmVhYmxlQml0bWFwOjpjcmVh
dGVTaGFyZWFibGUoSW50U2l6ZShpbWFnZS5zaXplKCkpLCBTaGFyZWFibGVCaXRtYXA6OlN1cHBv
cnRzQWxwaGEpOwogICAgIGJpdG1hcC0+Y3JlYXRlR3JhcGhpY3NDb250ZXh0KCktPmRyYXdJbWFn
ZShpbWFnZSwgQ29sb3JTcGFjZURldmljZVJHQiwgSW50UG9pbnQoKSk7CiAKICAgICBTaGFyZWFi
bGVCaXRtYXA6OkhhbmRsZSBoYW5kbGU7CkBAIC03NTMsNyArNzUzLDcgQEAgc3RhdGljIHZvaWQg
ZW5jb2RlT3B0aW9uYWxJbWFnZShBcmd1bWVudEVuY29kZXImIGVuY29kZXIsIEltYWdlKiBpbWFn
ZSkKICAgICBlbmNvZGVyIDw8IGhhc0ltYWdlOwogCiAgICAgaWYgKGhhc0ltYWdlKQotICAgICAg
ICBlbmNvZGVJbWFnZShlbmNvZGVyLCBpbWFnZSk7CisgICAgICAgIGVuY29kZUltYWdlKGVuY29k
ZXIsICppbWFnZSk7CiB9CiAKIHN0YXRpYyBib29sIGRlY29kZU9wdGlvbmFsSW1hZ2UoQXJndW1l
bnREZWNvZGVyJiBkZWNvZGVyLCBSZWZQdHI8SW1hZ2U+JiBpbWFnZSkKQEAgLTc4NCw3ICs3ODQs
NyBAQCB2b2lkIEFyZ3VtZW50Q29kZXI8Q3Vyc29yPjo6ZW5jb2RlKEFyZ3VtZW50RW5jb2RlciYg
ZW5jb2RlciwgY29uc3QgQ3Vyc29yJiBjdXJzbwogICAgIH0KIAogICAgIGVuY29kZXIgPDwgdHJ1
ZTsKLSAgICBlbmNvZGVJbWFnZShlbmNvZGVyLCBjdXJzb3IuaW1hZ2UoKSk7CisgICAgZW5jb2Rl
SW1hZ2UoZW5jb2RlciwgKmN1cnNvci5pbWFnZSgpKTsKICAgICBlbmNvZGVyIDw8IGN1cnNvci5o
b3RTcG90KCk7CiAjaWYgRU5BQkxFKE1PVVNFX0NVUlNPUl9TQ0FMRSkKICAgICBlbmNvZGVyIDw8
IGN1cnNvci5pbWFnZVNjYWxlRmFjdG9yKCk7CkBAIC0xMjUzLDcgKzEyNTMsNyBAQCBib29sIEFy
Z3VtZW50Q29kZXI8UGFzdGVib2FyZFdlYkNvbnRlbnQ+OjpkZWNvZGUoQXJndW1lbnREZWNvZGVy
JiBkZWNvZGVyLCBQYXN0ZQogCiB2b2lkIEFyZ3VtZW50Q29kZXI8UGFzdGVib2FyZEltYWdlPjo6
ZW5jb2RlKEFyZ3VtZW50RW5jb2RlciYgZW5jb2RlciwgY29uc3QgUGFzdGVib2FyZEltYWdlJiBw
YXN0ZWJvYXJkSW1hZ2UpCiB7Ci0gICAgZW5jb2RlSW1hZ2UoZW5jb2RlciwgcGFzdGVib2FyZElt
YWdlLmltYWdlLmdldCgpKTsKKyAgICBlbmNvZGVPcHRpb25hbEltYWdlKGVuY29kZXIsIHBhc3Rl
Ym9hcmRJbWFnZS5pbWFnZS5nZXQoKSk7CiAgICAgZW5jb2RlciA8PCBwYXN0ZWJvYXJkSW1hZ2Uu
dXJsLnVybDsKICAgICBlbmNvZGVyIDw8IHBhc3RlYm9hcmRJbWFnZS51cmwudGl0bGU7CiAgICAg
ZW5jb2RlciA8PCBwYXN0ZWJvYXJkSW1hZ2UucmVzb3VyY2VNSU1FVHlwZTsKQEAgLTEyNjMsNyAr
MTI2Myw3IEBAIHZvaWQgQXJndW1lbnRDb2RlcjxQYXN0ZWJvYXJkSW1hZ2U+OjplbmNvZGUoQXJn
dW1lbnRFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBQYXN0CiAKIGJvb2wgQXJndW1lbnRDb2RlcjxQ
YXN0ZWJvYXJkSW1hZ2U+OjpkZWNvZGUoQXJndW1lbnREZWNvZGVyJiBkZWNvZGVyLCBQYXN0ZWJv
YXJkSW1hZ2UmIHBhc3RlYm9hcmRJbWFnZSkKIHsKLSAgICBpZiAoIWRlY29kZUltYWdlKGRlY29k
ZXIsIHBhc3RlYm9hcmRJbWFnZS5pbWFnZSkpCisgICAgaWYgKCFkZWNvZGVPcHRpb25hbEltYWdl
KGRlY29kZXIsIHBhc3RlYm9hcmRJbWFnZS5pbWFnZSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHBhc3RlYm9hcmRJbWFnZS51cmwudXJsKSkKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYkZyYW1lLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJGcmFtZS5jcHAKaW5kZXggY2NjYjhiNmFkZDQ2OTk3M2JkZTQ1NjZiZTg2OTE0N2Y4ZjA4Njhh
NC4uZjgwMGMyMmZjZjUyYzdiMzY2NjgxNGRkYTI2Yjc0NDJhMWM2NDBiNyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwCkBAIC04MzgsNyArODM4
LDcgQEAgUGFzc1JlZlB0cjxTaGFyZWFibGVCaXRtYXA+IFdlYkZyYW1lOjpjcmVhdGVTZWxlY3Rp
b25TbmFwc2hvdCgpIGNvbnN0CiAgICAgYXV0byBncmFwaGljc0NvbnRleHQgPSBzaGFyZWRTbmFw
c2hvdC0+Y3JlYXRlR3JhcGhpY3NDb250ZXh0KCk7CiAgICAgZmxvYXQgZGV2aWNlU2NhbGVGYWN0
b3IgPSBjb3JlRnJhbWUoKS0+cGFnZSgpLT5kZXZpY2VTY2FsZUZhY3RvcigpOwogICAgIGdyYXBo
aWNzQ29udGV4dC0+c2NhbGUoRmxvYXRTaXplKGRldmljZVNjYWxlRmFjdG9yLCBkZXZpY2VTY2Fs
ZUZhY3RvcikpOwotICAgIGdyYXBoaWNzQ29udGV4dC0+ZHJhd0ltYWdlQnVmZmVyKHNuYXBzaG90
LmdldCgpLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBGbG9hdFBvaW50KCkpOworICAgIGdyYXBoaWNz
Q29udGV4dC0+ZHJhd0ltYWdlQnVmZmVyKCpzbmFwc2hvdCwgQ29sb3JTcGFjZURldmljZVJHQiwg
RmxvYXRQb2ludCgpKTsKIAogICAgIHJldHVybiBzaGFyZWRTbmFwc2hvdC5yZWxlYXNlKCk7CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL0ZpbmRD
b250cm9sbGVySU9TLm1tIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9G
aW5kQ29udHJvbGxlcklPUy5tbQppbmRleCBjZTUyMjIxNzIxZjQ0MmI2NjcwZDJlYTBlOGViMDU5
YTM1MmI1OTI1Li5kYmEyZDA1OGNhNTkyNWMxMDhkMDNmOWY2ZWQ1OTgwYmMxMGE2ZDQwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL0ZpbmRDb250cm9s
bGVySU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvRmlu
ZENvbnRyb2xsZXJJT1MubW0KQEAgLTgzLDcgKzgzLDcgQEAgdm9pZCBGaW5kSW5kaWNhdG9yT3Zl
cmxheUNsaWVudElPUzo6ZHJhd1JlY3QoUGFnZU92ZXJsYXkmIG92ZXJsYXksIEdyYXBoaWNzQ29u
dGUKICAgICBmb3IgKGNvbnN0IGF1dG8mIHBhdGggOiBwYXRocykKICAgICAgICAgY29udGV4dC5m
aWxsUGF0aChwYXRoKTsKIAotICAgIGNvbnRleHQuZHJhd0ltYWdlKGluZGljYXRvckltYWdlLCBD
b2xvclNwYWNlRGV2aWNlUkdCLCBvdmVybGF5LmJvdW5kcygpKTsKKyAgICBjb250ZXh0LmRyYXdJ
bWFnZSgqaW5kaWNhdG9ySW1hZ2UsIENvbG9yU3BhY2VEZXZpY2VSR0IsIG92ZXJsYXkuYm91bmRz
KCkpOwogfQogCiBib29sIEZpbmRDb250cm9sbGVyOjp1cGRhdGVGaW5kSW5kaWNhdG9yKEZyYW1l
JiBzZWxlY3RlZEZyYW1lLCBib29sIGlzU2hvd2luZ092ZXJsYXksIGJvb2wgc2hvdWxkQW5pbWF0
ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2Vi
UGFnZUlPUy5tbSBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFn
ZUlPUy5tbQppbmRleCBiMzBiNTRmNTIzOGUwZjYwM2I2NGFhZTYwMzZjOWJkOThjNzZmNmYxLi4y
ZGNhZmUxZDNjMDM0NWNlNGY2Yzk5NmYyMGY3ZDQwN2JlNzhlMDUxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0KKysrIGIvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCkBAIC0yMjE4
LDcgKzIyMTgsNyBAQCB2b2lkIFdlYlBhZ2U6OmdldFBvc2l0aW9uSW5mb3JtYXRpb24oY29uc3Qg
SW50UG9pbnQmIHBvaW50LCBJbnRlcmFjdGlvbkluZm9ybWF0aQogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBGbG9hdFNpemUgYml0bWFwU2l6ZSA9IHNjYWxlZFNpemUud2lkdGgoKSA8
IGltYWdlLT5zaXplKCkud2lkdGgoKSA/IHNjYWxlZFNpemUgOiBpbWFnZS0+c2l6ZSgpOwogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4g
c2hhcmVkQml0bWFwID0gU2hhcmVhYmxlQml0bWFwOjpjcmVhdGVTaGFyZWFibGUoSW50U2l6ZShi
aXRtYXBTaXplKSwgU2hhcmVhYmxlQml0bWFwOjpTdXBwb3J0c0FscGhhKSkgewogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgYXV0byBncmFwaGljc0NvbnRleHQgPSBzaGFyZWRC
aXRtYXAtPmNyZWF0ZUdyYXBoaWNzQ29udGV4dCgpOwotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LT5kcmF3SW1hZ2UoaW1hZ2UsIENvbG9yU3BhY2VE
ZXZpY2VSR0IsIEZsb2F0UmVjdCgwLCAwLCBiaXRtYXBTaXplLndpZHRoKCksIGJpdG1hcFNpemUu
aGVpZ2h0KCkpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdyYXBoaWNz
Q29udGV4dC0+ZHJhd0ltYWdlKCppbWFnZSwgQ29sb3JTcGFjZURldmljZVJHQiwgRmxvYXRSZWN0
KDAsIDAsIGJpdG1hcFNpemUud2lkdGgoKSwgYml0bWFwU2l6ZS5oZWlnaHQoKSkpOwogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5mby5pbWFnZSA9IHNoYXJlZEJpdG1hcDsK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>263051</attachid>
            <date>2015-10-13 20:07:57 -0700</date>
            <delta_ts>2015-10-13 20:48:27 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-150108-20151013200720.patch</filename>
            <type>text/plain</type>
            <size>97052</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTkxMDE3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDc1YTMwZTUzMWQwNjcz
MTZmYjZiYjJmNDc3YzM5MWVmOTNmMDYwZC4uMzA0MmEwNmFiNmEwZDQzM2ZkYTFkYjlmMzY3MjEw
MWJkMWVkYzJiYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDEzMSBAQAogMjAxNS0xMC0xMyAgU2lt
b24gRnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KIAorICAgICAgICBDaGFuZ2UgR3Jh
cGhpY3NDb250ZXh0IGltYWdlLWRyYXdpbmcgZnVuY3Rpb25zIHRvIHRha2UgcmVmZXJlbmNlcwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUwMTA4CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQ2hhbmdlIEdy
YXBoaWNzQ29udGV4dDo6ZHJhd0ltYWdlKCksIGRyYXdUaWxlZEltYWdlKCksIGRyYXdJbWFnZUJ1
ZmZlcigpLCBjbGlwVG9JbWFnZUJ1ZmZlcigpCisgICAgICAgIGFuZCBpc0NvbXBhdGlibGVXaXRo
QnVmZmVyKCkgdG8gdGFrZSByZWZlcmVuY2VzLCBhbmQgYWRqdXN0IGNhbGxpbmcgY29kZSwgYWRk
aW5nCisgICAgICAgIG51bGwtY2hlY2tzIHdoZXJlIG5lY2Vzc2FyeS4KKyAgICAgICAgCisgICAg
ICAgIE5vIGJlaGF2aW9yIGNoYW5nZS4KKworICAgICAgICAqIGNzcy9DU1NDcm9zc2ZhZGVWYWx1
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NDcm9zc2ZhZGVWYWx1ZTo6aW1hZ2UpOgorICAg
ICAgICAqIGNzcy9DU1NGaWx0ZXJJbWFnZVZhbHVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNT
U0ZpbHRlckltYWdlVmFsdWU6OmltYWdlKToKKyAgICAgICAgKiBodG1sL0hUTUxDYW52YXNFbGVt
ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxDYW52YXNFbGVtZW50OjpwYWludCk6Cisg
ICAgICAgICogaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkNhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6ZHJhd0ltYWdlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6Y29tcG9zaXRlQnVmZmVyKToK
KyAgICAgICAgKFdlYkNvcmU6OmRyYXdJbWFnZVRvQ29udGV4dCk6CisgICAgICAgIChXZWJDb3Jl
OjpDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmZ1bGxDYW52YXNDb21wb3NpdGVkRHJhd0ltYWdl
KToKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6ZHJhd1RleHRJ
bnRlcm5hbCk6CisgICAgICAgICogaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJE
Lmg6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0wyUmVuZGVyaW5nQ29udGV4dC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojp0ZXhTdWJJbWFnZTJEKToK
KyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0Ojp0ZXhTdWJJbWFnZTJEKToKKyAgICAg
ICAgKiBodG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmRyYXdJbWFnZUludG9CdWZmZXIp
OgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dGV4SW1hZ2Uy
RCk6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5oOgor
ICAgICAgICAqIHBsYXRmb3JtL1Njcm9sbFZpZXcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2Ny
b2xsVmlldzo6cGFpbnRQYW5TY3JvbGxJY29uKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9Dcm9zc2ZhZGVHZW5lcmF0ZWRJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDcm9zc2Zh
ZGVHZW5lcmF0ZWRJbWFnZTo6Q3Jvc3NmYWRlR2VuZXJhdGVkSW1hZ2UpOgorICAgICAgICAoV2Vi
Q29yZTo6ZHJhd0Nyb3NzZmFkZVN1YmltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkNyb3NzZmFk
ZUdlbmVyYXRlZEltYWdlOjpkcmF3Q3Jvc3NmYWRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9Dcm9zc2ZhZGVHZW5lcmF0ZWRJbWFnZS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL0dyYWRpZW50SW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhZGllbnRJbWFnZTo6
ZHJhd1BhdHRlcm4pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmRyYXdJbWFnZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmRyYXdUaWxlZEltYWdlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6ZHJhd0ltYWdlQnVmZmVyKToKKyAgICAgICAg
KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6Y2xpcFRvSW1hZ2VCdWZmZXIpOgorICAgICAgICAo
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0Ojppc0NvbXBhdGlibGVXaXRoQnVmZmVyKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9TaGFkb3dCbHVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNoYWRvd0Js
dXI6OmRyYXdTaGFkb3dCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6U2hhZG93Qmx1cjo6ZHJh
d1JlY3RTaGFkb3dXaXRob3V0VGlsaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlNoYWRvd0JsdXI6
OmRyYXdJbnNldFNoYWRvd1dpdGhvdXRUaWxpbmcpOgorICAgICAgICAoV2ViQ29yZTo6U2hhZG93
Qmx1cjo6ZHJhd0luc2V0U2hhZG93V2l0aFRpbGluZyk6CisgICAgICAgIChXZWJDb3JlOjpTaGFk
b3dCbHVyOjpkcmF3UmVjdFNoYWRvd1dpdGhUaWxpbmcpOgorICAgICAgICAoV2ViQ29yZTo6U2hh
ZG93Qmx1cjo6ZHJhd0xheWVyUGllY2VzKToKKyAgICAgICAgKFdlYkNvcmU6OlNoYWRvd0JsdXI6
OmVuZFNoYWRvd0xheWVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFn
ZUJ1ZmZlckNhaXJvLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyOjpkcmF3KToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9QREZEb2N1bWVudEltYWdlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlBERkRvY3VtZW50SW1hZ2U6OmRyYXcpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVCbGVuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGRUJs
ZW5kOjpwbGF0Zm9ybUFwcGx5U29mdHdhcmUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2ZpbHRlcnMvRkVDb2xvck1hdHJpeC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGRUNvbG9yTWF0
cml4OjpwbGF0Zm9ybUFwcGx5U29mdHdhcmUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2ZpbHRlcnMvRkVDb21wb3NpdGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RkVDb21wb3NpdGU6
OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmls
dGVycy9GRURyb3BTaGFkb3cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RkVEcm9wU2hhZG93Ojpw
bGF0Zm9ybUFwcGx5U29mdHdhcmUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRl
cnMvRkVNZXJnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGRU1lcmdlOjpwbGF0Zm9ybUFwcGx5
U29mdHdhcmUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVPZmZzZXQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6RkVPZmZzZXQ6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZSk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRVRpbGUuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6RkVUaWxlOjpwbGF0Zm9ybUFwcGx5U29mdHdhcmUpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvU291cmNlQWxwaGEuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6U291cmNlQWxwaGE6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZSk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvZmlsdGVycy9Tb3VyY2VHcmFwaGljLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlNvdXJjZUdyYXBoaWM6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZSk6CisgICAgICAgICogcGxhdGZv
cm0vbWFjL1RoZW1lTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6VGhlbWVNYWM6OmRyYXdDZWxs
T3JGb2N1c1JpbmdXaXRoVmlld0ludG9Db250ZXh0KToKKyAgICAgICAgKiByZW5kZXJpbmcvRmls
dGVyRWZmZWN0UmVuZGVyZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RmlsdGVyRWZmZWN0UmVu
ZGVyZXJIZWxwZXI6OmFwcGx5RmlsdGVyRWZmZWN0KToKKyAgICAgICAgKiByZW5kZXJpbmcvSW1h
Z2VRdWFsaXR5Q29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZVF1YWxpdHlD
b250cm9sbGVyOjpzaG91bGRQYWludEF0TG93UXVhbGl0eSk6CisgICAgICAgICogcmVuZGVyaW5n
L0ltYWdlUXVhbGl0eUNvbnRyb2xsZXIuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQm94
TW9kZWxPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94TW9kZWxPYmplY3Q6
OnNob3VsZFBhaW50QXRMb3dRdWFsaXR5KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveE1v
ZGVsT2JqZWN0OjpwYWludEZpbGxMYXllckV4dGVuZGVkKToKKyAgICAgICAgKiByZW5kZXJpbmcv
UmVuZGVyQm94TW9kZWxPYmplY3QuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyRW1iZWRk
ZWRPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRW1iZWRkZWRPYmplY3Q6OnBh
aW50U25hcHNob3RJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJFbWJlZGRlZE9iamVj
dDo6cGFpbnRDb250ZW50cyk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckVtYmVkZGVkT2Jq
ZWN0Lmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckltYWdlLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlckltYWdlOjpwYWludFJlcGxhY2VkKToKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlckltYWdlOjpwYWludEludG9SZWN0KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVySW1h
Z2VSZXNvdXJjZVN0eWxlSW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVySW1hZ2VS
ZXNvdXJjZVN0eWxlSW1hZ2U6OnNodXRkb3duKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlcklt
YWdlUmVzb3VyY2VTdHlsZUltYWdlOjppbWFnZSk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRl
ckxheWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjpkcmF3UGxhdGZvcm1S
ZXNpemVySW1hZ2UpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMaXN0TWFya2VyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxpc3RNYXJrZXI6OnBhaW50KToKKyAgICAgICAgKiBy
ZW5kZXJpbmcvUmVuZGVyU25hcHNob3R0ZWRQbHVnSW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyU25hcHNob3R0ZWRQbHVnSW46OnBhaW50U25hcHNob3QpOgorICAgICAgICAqIHJlbmRl
cmluZy9SZW5kZXJUaGVtZU1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lTWFj
OjpwYWludFByb2dyZXNzQmFyKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lTWFjOjpw
YWludFNuYXBzaG90dGVkUGx1Z2luT3ZlcmxheSk6CisgICAgICAgICogcmVuZGVyaW5nL3NoYXBl
cy9TaGFwZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTaGFwZTo6Y3JlYXRlUmFzdGVyU2hhcGUp
OgorICAgICAgICAqIHJlbmRlcmluZy9zaGFwZXMvU2hhcGVPdXRzaWRlSW5mby5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpTaGFwZU91dHNpZGVJbmZvOjpjcmVhdGVTaGFwZUZvckltYWdlKTogRGVs
ZXRlZC4KKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvTmluZVBpZWNlSW1hZ2UuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6TmluZVBpZWNlSW1hZ2U6OnBhaW50KToKKyAgICAgICAgKiByZW5kZXJp
bmcvc3ZnL1JlbmRlclNWR0ltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR0lt
YWdlOjpwYWludEZvcmVncm91bmQpOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZH
UmVzb3VyY2VGaWx0ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHUmVzb3VyY2VG
aWx0ZXI6OnBvc3RBcHBseVJlc291cmNlKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1NWR1Jl
bmRlcmluZ0NvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUmVuZGVyaW5nQ29udGV4
dDo6Y2xpcFRvSW1hZ2VCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUmVuZGVyaW5nQ29u
dGV4dDo6YnVmZmVyRm9yZWdyb3VuZCk6CisgICAgICAgICogc3ZnL2dyYXBoaWNzL2ZpbHRlcnMv
U1ZHRkVJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGRUltYWdlOjpwbGF0Zm9ybUFwcGx5
U29mdHdhcmUpOgorCisyMDE1LTEwLTEzICBTaW1vbiBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBw
bGUuY29tPgorCiAgICAgICAgIEFkZCBoZWxwZXIgZnVudGlvbiBmb3IgY2hlY2tpbmcgcG9pbnRl
ciBlcXVpdmFsZW5jeSBhbmQgdXNlIGl0CiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xNTAwMjIKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hh
bmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IGMyZjlhMTRjZmQ4MjYyNzE4
Mjg4ZjhhMDhiZGE5M2VkMjgzMDMxYzUuLjE2MjUwZWI4MmI5OGVkMzU3NDA5NzAxNmQ2NTNkMTgy
YTZmNWZjOGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMyBAQAorMjAxNS0xMC0xMyAgU2ltb24g
RnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KKworICAgICAgICBDaGFuZ2UgR3JhcGhp
Y3NDb250ZXh0IGltYWdlLWRyYXdpbmcgZnVuY3Rpb25zIHRvIHRha2UgcmVmZXJlbmNlcworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUwMTA4CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQ2hhbmdlIEdyYXBo
aWNzQ29udGV4dDo6ZHJhd0ltYWdlKCksIGRyYXdUaWxlZEltYWdlKCksIGRyYXdJbWFnZUJ1ZmZl
cigpLCBjbGlwVG9JbWFnZUJ1ZmZlcigpCisgICAgICAgIGFuZCBpc0NvbXBhdGlibGVXaXRoQnVm
ZmVyKCkgdG8gdGFrZSByZWZlcmVuY2VzLCBhbmQgYWRqdXN0IGNhbGxpbmcgY29kZSwgYWRkaW5n
CisgICAgICAgIG51bGwtY2hlY2tzIHdoZXJlIG5lY2Vzc2FyeS4KKworICAgICAgICAqIFNoYXJl
ZC9Db250ZXh0TWVudUNvbnRleHREYXRhLmNwcDoKKyAgICAgICAgKFdlYktpdDo6Q29udGV4dE1l
bnVDb250ZXh0RGF0YTo6Q29udGV4dE1lbnVDb250ZXh0RGF0YSk6CisgICAgICAgICogU2hhcmVk
L1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHA6CisgICAgICAgIChJUEM6OmVuY29kZUltYWdlKToK
KyAgICAgICAgKElQQzo6ZW5jb2RlT3B0aW9uYWxJbWFnZSk6CisgICAgICAgIChJUEM6OkFyZ3Vt
ZW50Q29kZXI8Q3Vyc29yPjo6ZW5jb2RlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViRnJhbWUuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZTo6Y3JlYXRlU2VsZWN0aW9u
U25hcHNob3QpOgorCiAyMDE1LTEwLTEzICBNeWxlcyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBh
cHBsZS5jb20+CiAKICAgICAgICAgU3BsaXQgVHlwZXNldHRpbmdGZWF0dXJlcyBpbnRvIGtlcm5p
bmcgYW5kIGxpZ2F0dXJlcyBib29scwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NT
U0Nyb3NzZmFkZVZhbHVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDcm9zc2ZhZGVWYWx1
ZS5jcHAKaW5kZXggM2M3MTdjYjE1Yzg5OGEzYzUwNGVkNjQ2Mjc3MzU3NDkyNWQ3Nzk5OC4uMDcz
NTA4YjBhNjdkOWY1NDhmODA0ZjNmNDNhNTZhNWFiZTFiYTg3MCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvY3NzL0NTU0Nyb3NzZmFkZVZhbHVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTQ3Jvc3NmYWRlVmFsdWUuY3BwCkBAIC0xNjUsNyArMTY1LDcgQEAgUmVmUHRyPEltYWdl
PiBDU1NDcm9zc2ZhZGVWYWx1ZTo6aW1hZ2UoUmVuZGVyRWxlbWVudCogcmVuZGVyZXIsIGNvbnN0
IEZsb2F0U2l6ZSYKICAgICBpZiAoIWZyb21JbWFnZSB8fCAhdG9JbWFnZSkKICAgICAgICAgcmV0
dXJuIEltYWdlOjpudWxsSW1hZ2UoKTsKIAotICAgIG1fZ2VuZXJhdGVkSW1hZ2UgPSBDcm9zc2Zh
ZGVHZW5lcmF0ZWRJbWFnZTo6Y3JlYXRlKGZyb21JbWFnZSwgdG9JbWFnZSwgbV9wZXJjZW50YWdl
VmFsdWUtPmdldEZsb2F0VmFsdWUoKSwgZml4ZWRTaXplKHJlbmRlcmVyKSwgc2l6ZSk7CisgICAg
bV9nZW5lcmF0ZWRJbWFnZSA9IENyb3NzZmFkZUdlbmVyYXRlZEltYWdlOjpjcmVhdGUoKmZyb21J
bWFnZSwgKnRvSW1hZ2UsIG1fcGVyY2VudGFnZVZhbHVlLT5nZXRGbG9hdFZhbHVlKCksIGZpeGVk
U2l6ZShyZW5kZXJlciksIHNpemUpOwogCiAgICAgcmV0dXJuIG1fZ2VuZXJhdGVkSW1hZ2U7CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRmlsdGVySW1hZ2VWYWx1ZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRmlsdGVySW1hZ2VWYWx1ZS5jcHAKaW5kZXggN2ZmZjRj
NDk4OTRlZDJlNDQ1ZDQxMDQxZGQ3ZDQ3ZDJhNWY0ZGU4Mi4uYmU3NWRjNmVmNjZmMTBhNDg5YmQy
ODQ2YzY5MjRjNzcyNjA2MDIzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0Zp
bHRlckltYWdlVmFsdWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGaWx0ZXJJbWFn
ZVZhbHVlLmNwcApAQCAtMTI0LDggKzEyNCw5IEBAIFJlZlB0cjxJbWFnZT4gQ1NTRmlsdGVySW1h
Z2VWYWx1ZTo6aW1hZ2UoUmVuZGVyRWxlbWVudCogcmVuZGVyZXIsIGNvbnN0IEZsb2F0U2l6CiAg
ICAgc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPiB0ZXh0dXJlID0gSW1hZ2VCdWZmZXI6OmNy
ZWF0ZShzaXplLCBVbmFjY2VsZXJhdGVkKTsKICAgICBpZiAoIXRleHR1cmUpCiAgICAgICAgIHJl
dHVybiBJbWFnZTo6bnVsbEltYWdlKCk7CisKICAgICBGbG9hdFJlY3QgaW1hZ2VSZWN0ID0gRmxv
YXRSZWN0KEZsb2F0UG9pbnQoKSwgc2l6ZSk7Ci0gICAgdGV4dHVyZS0+Y29udGV4dCgpLmRyYXdJ
bWFnZShpbWFnZSwgQ29sb3JTcGFjZURldmljZVJHQiwgaW1hZ2VSZWN0KTsKKyAgICB0ZXh0dXJl
LT5jb250ZXh0KCkuZHJhd0ltYWdlKCppbWFnZSwgQ29sb3JTcGFjZURldmljZVJHQiwgaW1hZ2VS
ZWN0KTsKIAogICAgIFJlZlB0cjxGaWx0ZXJFZmZlY3RSZW5kZXJlcj4gZmlsdGVyUmVuZGVyZXIg
PSBGaWx0ZXJFZmZlY3RSZW5kZXJlcjo6Y3JlYXRlKCk7CiAgICAgZmlsdGVyUmVuZGVyZXItPnNl
dFNvdXJjZUltYWdlKFdURjo6bW92ZSh0ZXh0dXJlKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxDYW52YXNFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TENhbnZhc0VsZW1lbnQuY3BwCmluZGV4IDAzZWM3ZGY5ODkzMWEzNDIxZGViZWJjNGRjMGQxNTRh
YTk3MmE4NGMuLjU3MjRjMWFhMmE3ZmRhYmNiYTA0NjA2YzI1YTMzNDllMjQxYjMxYTEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENhbnZhc0VsZW1lbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTENhbnZhc0VsZW1lbnQuY3BwCkBAIC0zODgsOSArMzg4LDkg
QEAgdm9pZCBIVE1MQ2FudmFzRWxlbWVudDo6cGFpbnQoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0
LCBjb25zdCBMYXlvdXRSZWN0JiByLCBib28KICNpZiBFTkFCTEUoQ1NTX0lNQUdFX09SSUVOVEFU
SU9OKQogICAgICAgICAgICAgICAgIG9yaWVudGF0aW9uRGVzY3JpcHRpb24uc2V0SW1hZ2VPcmll
bnRhdGlvbkVudW0ocmVuZGVyZXIoKS0+c3R5bGUoKS5pbWFnZU9yaWVudGF0aW9uKCkpOwogI2Vu
ZGlmIAotICAgICAgICAgICAgICAgIGNvbnRleHQuZHJhd0ltYWdlKG1fcHJlc2VudGVkSW1hZ2Uu
Z2V0KCksIENvbG9yU3BhY2VEZXZpY2VSR0IsIHNuYXBwZWRJbnRSZWN0KHIpLCBJbWFnZVBhaW50
aW5nT3B0aW9ucyhvcmllbnRhdGlvbkRlc2NyaXB0aW9uLCB1c2VMb3dRdWFsaXR5U2NhbGUpKTsK
KyAgICAgICAgICAgICAgICBjb250ZXh0LmRyYXdJbWFnZSgqbV9wcmVzZW50ZWRJbWFnZSwgQ29s
b3JTcGFjZURldmljZVJHQiwgc25hcHBlZEludFJlY3QociksIEltYWdlUGFpbnRpbmdPcHRpb25z
KG9yaWVudGF0aW9uRGVzY3JpcHRpb24sIHVzZUxvd1F1YWxpdHlTY2FsZSkpOwogICAgICAgICAg
ICAgfSBlbHNlCi0gICAgICAgICAgICAgICAgY29udGV4dC5kcmF3SW1hZ2VCdWZmZXIoaW1hZ2VC
dWZmZXIsIENvbG9yU3BhY2VEZXZpY2VSR0IsIHNuYXBwZWRJbnRSZWN0KHIpLCB1c2VMb3dRdWFs
aXR5U2NhbGUpOworICAgICAgICAgICAgICAgIGNvbnRleHQuZHJhd0ltYWdlQnVmZmVyKCppbWFn
ZUJ1ZmZlciwgQ29sb3JTcGFjZURldmljZVJHQiwgc25hcHBlZEludFJlY3QociksIHVzZUxvd1F1
YWxpdHlTY2FsZSk7CiAgICAgICAgIH0KICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuY3BwCmluZGV4IGI0MDE1
ZWZmNDcyZTg0ZTkyOWI1MzkxNTUzOTVkNGI1Y2NlNWZiNTEuLmIxOWQ5ZTBkYzcwM2Q1NTUzZjcz
MjYyMTMzYzIwYzk0ZjYyOGM3OWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcApAQCAtMTQ0OCwxNyArMTQ0OCwx
NyBAQCB2b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6ZHJhd0ltYWdlKEhUTUxJbWFnZUVs
ZW1lbnQqIGltYWdlRWxlbWVudCwgY29uc3QgRgogICAgIH0KIAogICAgIGlmIChyZWN0Q29udGFp
bnNDYW52YXMobm9ybWFsaXplZERzdFJlY3QpKSB7Ci0gICAgICAgIGMtPmRyYXdJbWFnZShpbWFn
ZSwgQ29sb3JTcGFjZURldmljZVJHQiwgbm9ybWFsaXplZERzdFJlY3QsIG5vcm1hbGl6ZWRTcmNS
ZWN0LCBJbWFnZVBhaW50aW5nT3B0aW9ucyhvcCwgYmxlbmRNb2RlKSk7CisgICAgICAgIGMtPmRy
YXdJbWFnZSgqaW1hZ2UsIENvbG9yU3BhY2VEZXZpY2VSR0IsIG5vcm1hbGl6ZWREc3RSZWN0LCBu
b3JtYWxpemVkU3JjUmVjdCwgSW1hZ2VQYWludGluZ09wdGlvbnMob3AsIGJsZW5kTW9kZSkpOwog
ICAgICAgICBkaWREcmF3RW50aXJlQ2FudmFzKCk7CiAgICAgfSBlbHNlIGlmIChpc0Z1bGxDYW52
YXNDb21wb3NpdGVNb2RlKG9wKSkgewotICAgICAgICBmdWxsQ2FudmFzQ29tcG9zaXRlZERyYXdJ
bWFnZShpbWFnZSwgQ29sb3JTcGFjZURldmljZVJHQiwgbm9ybWFsaXplZERzdFJlY3QsIG5vcm1h
bGl6ZWRTcmNSZWN0LCBvcCk7CisgICAgICAgIGZ1bGxDYW52YXNDb21wb3NpdGVkRHJhd0ltYWdl
KCppbWFnZSwgQ29sb3JTcGFjZURldmljZVJHQiwgbm9ybWFsaXplZERzdFJlY3QsIG5vcm1hbGl6
ZWRTcmNSZWN0LCBvcCk7CiAgICAgICAgIGRpZERyYXdFbnRpcmVDYW52YXMoKTsKICAgICB9IGVs
c2UgaWYgKG9wID09IENvbXBvc2l0ZUNvcHkpIHsKICAgICAgICAgY2xlYXJDYW52YXMoKTsKLSAg
ICAgICAgYy0+ZHJhd0ltYWdlKGltYWdlLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBub3JtYWxpemVk
RHN0UmVjdCwgbm9ybWFsaXplZFNyY1JlY3QsIEltYWdlUGFpbnRpbmdPcHRpb25zKG9wLCBibGVu
ZE1vZGUpKTsKKyAgICAgICAgYy0+ZHJhd0ltYWdlKCppbWFnZSwgQ29sb3JTcGFjZURldmljZVJH
Qiwgbm9ybWFsaXplZERzdFJlY3QsIG5vcm1hbGl6ZWRTcmNSZWN0LCBJbWFnZVBhaW50aW5nT3B0
aW9ucyhvcCwgYmxlbmRNb2RlKSk7CiAgICAgICAgIGRpZERyYXdFbnRpcmVDYW52YXMoKTsKICAg
ICB9IGVsc2UgewotICAgICAgICBjLT5kcmF3SW1hZ2UoaW1hZ2UsIENvbG9yU3BhY2VEZXZpY2VS
R0IsIG5vcm1hbGl6ZWREc3RSZWN0LCBub3JtYWxpemVkU3JjUmVjdCwgSW1hZ2VQYWludGluZ09w
dGlvbnMob3AsIGJsZW5kTW9kZSkpOworICAgICAgICBjLT5kcmF3SW1hZ2UoKmltYWdlLCBDb2xv
clNwYWNlRGV2aWNlUkdCLCBub3JtYWxpemVkRHN0UmVjdCwgbm9ybWFsaXplZFNyY1JlY3QsIElt
YWdlUGFpbnRpbmdPcHRpb25zKG9wLCBibGVuZE1vZGUpKTsKICAgICAgICAgZGlkRHJhdyhub3Jt
YWxpemVkRHN0UmVjdCk7CiAgICAgfQogICAgIApAQCAtMTUzNiwxNyArMTUzNiwxNyBAQCB2b2lk
IENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6ZHJhd0ltYWdlKEhUTUxDYW52YXNFbGVtZW50KiBz
b3VyY2VDYW52YXMsIGNvbnN0CiAjZW5kaWYKIAogICAgIGlmIChyZWN0Q29udGFpbnNDYW52YXMo
ZHN0UmVjdCkpIHsKLSAgICAgICAgYy0+ZHJhd0ltYWdlQnVmZmVyKGJ1ZmZlciwgQ29sb3JTcGFj
ZURldmljZVJHQiwgZHN0UmVjdCwgc3JjUmVjdCwgSW1hZ2VQYWludGluZ09wdGlvbnMoc3RhdGUo
KS5nbG9iYWxDb21wb3NpdGUsIHN0YXRlKCkuZ2xvYmFsQmxlbmQpKTsKKyAgICAgICAgYy0+ZHJh
d0ltYWdlQnVmZmVyKCpidWZmZXIsIENvbG9yU3BhY2VEZXZpY2VSR0IsIGRzdFJlY3QsIHNyY1Jl
Y3QsIEltYWdlUGFpbnRpbmdPcHRpb25zKHN0YXRlKCkuZ2xvYmFsQ29tcG9zaXRlLCBzdGF0ZSgp
Lmdsb2JhbEJsZW5kKSk7CiAgICAgICAgIGRpZERyYXdFbnRpcmVDYW52YXMoKTsKICAgICB9IGVs
c2UgaWYgKGlzRnVsbENhbnZhc0NvbXBvc2l0ZU1vZGUoc3RhdGUoKS5nbG9iYWxDb21wb3NpdGUp
KSB7Ci0gICAgICAgIGZ1bGxDYW52YXNDb21wb3NpdGVkRHJhd0ltYWdlKGJ1ZmZlciwgQ29sb3JT
cGFjZURldmljZVJHQiwgZHN0UmVjdCwgc3JjUmVjdCwgc3RhdGUoKS5nbG9iYWxDb21wb3NpdGUp
OworICAgICAgICBmdWxsQ2FudmFzQ29tcG9zaXRlZERyYXdJbWFnZSgqYnVmZmVyLCBDb2xvclNw
YWNlRGV2aWNlUkdCLCBkc3RSZWN0LCBzcmNSZWN0LCBzdGF0ZSgpLmdsb2JhbENvbXBvc2l0ZSk7
CiAgICAgICAgIGRpZERyYXdFbnRpcmVDYW52YXMoKTsKICAgICB9IGVsc2UgaWYgKHN0YXRlKCku
Z2xvYmFsQ29tcG9zaXRlID09IENvbXBvc2l0ZUNvcHkpIHsKICAgICAgICAgY2xlYXJDYW52YXMo
KTsKLSAgICAgICAgYy0+ZHJhd0ltYWdlQnVmZmVyKGJ1ZmZlciwgQ29sb3JTcGFjZURldmljZVJH
QiwgZHN0UmVjdCwgc3JjUmVjdCwgSW1hZ2VQYWludGluZ09wdGlvbnMoc3RhdGUoKS5nbG9iYWxD
b21wb3NpdGUsIHN0YXRlKCkuZ2xvYmFsQmxlbmQpKTsKKyAgICAgICAgYy0+ZHJhd0ltYWdlQnVm
ZmVyKCpidWZmZXIsIENvbG9yU3BhY2VEZXZpY2VSR0IsIGRzdFJlY3QsIHNyY1JlY3QsIEltYWdl
UGFpbnRpbmdPcHRpb25zKHN0YXRlKCkuZ2xvYmFsQ29tcG9zaXRlLCBzdGF0ZSgpLmdsb2JhbEJs
ZW5kKSk7CiAgICAgICAgIGRpZERyYXdFbnRpcmVDYW52YXMoKTsKICAgICB9IGVsc2UgewotICAg
ICAgICBjLT5kcmF3SW1hZ2VCdWZmZXIoYnVmZmVyLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBkc3RS
ZWN0LCBzcmNSZWN0LCBJbWFnZVBhaW50aW5nT3B0aW9ucyhzdGF0ZSgpLmdsb2JhbENvbXBvc2l0
ZSwgc3RhdGUoKS5nbG9iYWxCbGVuZCkpOworICAgICAgICBjLT5kcmF3SW1hZ2VCdWZmZXIoKmJ1
ZmZlciwgQ29sb3JTcGFjZURldmljZVJHQiwgZHN0UmVjdCwgc3JjUmVjdCwgSW1hZ2VQYWludGlu
Z09wdGlvbnMoc3RhdGUoKS5nbG9iYWxDb21wb3NpdGUsIHN0YXRlKCkuZ2xvYmFsQmxlbmQpKTsK
ICAgICAgICAgZGlkRHJhdyhkc3RSZWN0KTsKICAgICB9CiB9CkBAIC0xNzA5LDcgKzE3MDksNyBA
QCBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+IENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6
Y3JlYXRlQ29tcG9zaXRpbmdCdWZmZXIoYwogICAgIHJldHVybiBJbWFnZUJ1ZmZlcjo6Y3JlYXRl
KGJ1ZmZlclJlY3Quc2l6ZSgpLCBpc0FjY2VsZXJhdGVkKCkgPyBBY2NlbGVyYXRlZCA6IFVuYWNj
ZWxlcmF0ZWQpOwogfQogCi12b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6Y29tcG9zaXRl
QnVmZmVyKEltYWdlQnVmZmVyKiBidWZmZXIsIGNvbnN0IEludFJlY3QmIGJ1ZmZlclJlY3QsIENv
bXBvc2l0ZU9wZXJhdG9yIG9wKQordm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmNvbXBv
c2l0ZUJ1ZmZlcihJbWFnZUJ1ZmZlciYgYnVmZmVyLCBjb25zdCBJbnRSZWN0JiBidWZmZXJSZWN0
LCBDb21wb3NpdGVPcGVyYXRvciBvcCkKIHsKICAgICBJbnRSZWN0IGNhbnZhc1JlY3QoMCwgMCwg
Y2FudmFzKCktPndpZHRoKCksIGNhbnZhcygpLT5oZWlnaHQoKSk7CiAgICAgY2FudmFzUmVjdCA9
IGNhbnZhcygpLT5iYXNlVHJhbnNmb3JtKCkubWFwUmVjdChjYW52YXNSZWN0KTsKQEAgLTE3MzAs
MTcgKzE3MzAsMTcgQEAgdm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmNvbXBvc2l0ZUJ1
ZmZlcihJbWFnZUJ1ZmZlciogYnVmZmVyLCBjb25zdCBJbnRSZWMKICAgICBjLT5yZXN0b3JlKCk7
CiB9CiAKLXN0YXRpYyB2b2lkIGRyYXdJbWFnZVRvQ29udGV4dChJbWFnZSogaW1hZ2UsIEdyYXBo
aWNzQ29udGV4dCYgY29udGV4dCwgQ29sb3JTcGFjZSBzdHlsZUNvbG9yU3BhY2UsIGNvbnN0IEZs
b2F0UmVjdCYgZGVzdCwgY29uc3QgRmxvYXRSZWN0JiBzcmMsIENvbXBvc2l0ZU9wZXJhdG9yIG9w
KQorc3RhdGljIHZvaWQgZHJhd0ltYWdlVG9Db250ZXh0KEltYWdlJiBpbWFnZSwgR3JhcGhpY3ND
b250ZXh0JiBjb250ZXh0LCBDb2xvclNwYWNlIHN0eWxlQ29sb3JTcGFjZSwgY29uc3QgRmxvYXRS
ZWN0JiBkZXN0LCBjb25zdCBGbG9hdFJlY3QmIHNyYywgQ29tcG9zaXRlT3BlcmF0b3Igb3ApCiB7
CiAgICAgY29udGV4dC5kcmF3SW1hZ2UoaW1hZ2UsIHN0eWxlQ29sb3JTcGFjZSwgZGVzdCwgc3Jj
LCBvcCk7CiB9CiAKLXN0YXRpYyB2b2lkIGRyYXdJbWFnZVRvQ29udGV4dChJbWFnZUJ1ZmZlciog
aW1hZ2VCdWZmZXIsIEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgQ29sb3JTcGFjZSBzdHlsZUNv
bG9yU3BhY2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdCwgY29uc3QgRmxvYXRSZWN0JiBzcmMsIENv
bXBvc2l0ZU9wZXJhdG9yIG9wKQorc3RhdGljIHZvaWQgZHJhd0ltYWdlVG9Db250ZXh0KEltYWdl
QnVmZmVyJiBpbWFnZUJ1ZmZlciwgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBDb2xvclNwYWNl
IHN0eWxlQ29sb3JTcGFjZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0LCBjb25zdCBGbG9hdFJlY3Qm
IHNyYywgQ29tcG9zaXRlT3BlcmF0b3Igb3ApCiB7CiAgICAgY29udGV4dC5kcmF3SW1hZ2VCdWZm
ZXIoaW1hZ2VCdWZmZXIsIHN0eWxlQ29sb3JTcGFjZSwgZGVzdCwgc3JjLCBvcCk7CiB9CiAKLXRl
bXBsYXRlPGNsYXNzIFQ+IHZvaWQgIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6ZnVsbENhbnZh
c0NvbXBvc2l0ZWREcmF3SW1hZ2UoVCogaW1hZ2UsIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNl
LCBjb25zdCBGbG9hdFJlY3QmIGRlc3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjLCBDb21wb3NpdGVP
cGVyYXRvciBvcCkKK3RlbXBsYXRlPGNsYXNzIFQ+IHZvaWQgIENhbnZhc1JlbmRlcmluZ0NvbnRl
eHQyRDo6ZnVsbENhbnZhc0NvbXBvc2l0ZWREcmF3SW1hZ2UoVCYgaW1hZ2UsIENvbG9yU3BhY2Ug
c3R5bGVDb2xvclNwYWNlLCBjb25zdCBGbG9hdFJlY3QmIGRlc3QsIGNvbnN0IEZsb2F0UmVjdCYg
c3JjLCBDb21wb3NpdGVPcGVyYXRvciBvcCkKIHsKICAgICBBU1NFUlQoaXNGdWxsQ2FudmFzQ29t
cG9zaXRlTW9kZShvcCkpOwogCkBAIC0xNzY4LDcgKzE3NjgsNyBAQCB0ZW1wbGF0ZTxjbGFzcyBU
PiB2b2lkICBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmZ1bGxDYW52YXNDb21wb3NpdGVkRHJh
d0ltYWdlKAogICAgIGJ1ZmZlci0+Y29udGV4dCgpLmNvbmNhdENUTShlZmZlY3RpdmVUcmFuc2Zv
cm0pOwogICAgIGRyYXdJbWFnZVRvQ29udGV4dChpbWFnZSwgYnVmZmVyLT5jb250ZXh0KCksIHN0
eWxlQ29sb3JTcGFjZSwgYWRqdXN0ZWREZXN0LCBzcmMsIENvbXBvc2l0ZVNvdXJjZU92ZXIpOwog
Ci0gICAgY29tcG9zaXRlQnVmZmVyKGJ1ZmZlci5nZXQoKSwgYnVmZmVyUmVjdCwgb3ApOworICAg
IGNvbXBvc2l0ZUJ1ZmZlcigqYnVmZmVyLCBidWZmZXJSZWN0LCBvcCk7CiB9CiAKIHZvaWQgQ2Fu
dmFzUmVuZGVyaW5nQ29udGV4dDJEOjpwcmVwYXJlR3JhZGllbnRGb3JEYXNoYm9hcmQoQ2FudmFz
R3JhZGllbnQmIGdyYWRpZW50KSBjb25zdApAQCAtMjQxOSw3ICsyNDE5LDcgQEAgdm9pZCBDYW52
YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmRyYXdUZXh0SW50ZXJuYWwoY29uc3QgU3RyaW5nJiB0ZXh0
LCBmbG9hdCB4LCBmbG8KIAogICAgIC8vIFRoZSBzbG9wIGJ1aWx0IGluIHRvIHRoaXMgbWFzayBy
ZWN0IG1hdGNoZXMgdGhlIGhldXJpc3RpYyB1c2VkIGluIEZvbnRDR1dpbi5jcHAgZm9yIEdESSB0
ZXh0LgogICAgIEZsb2F0UmVjdCB0ZXh0UmVjdCA9IEZsb2F0UmVjdChsb2NhdGlvbi54KCkgLSBm
b250TWV0cmljcy5oZWlnaHQoKSAvIDIsIGxvY2F0aW9uLnkoKSAtIGZvbnRNZXRyaWNzLmFzY2Vu
dCgpIC0gZm9udE1ldHJpY3MubGluZUdhcCgpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB3aWR0aCArIGZvbnRNZXRyaWNzLmhlaWdodCgpLCBmb250TWV0cmljcy5saW5lU3Bh
Y2luZygpKTsKKyAgICAgICAgd2lkdGggKyBmb250TWV0cmljcy5oZWlnaHQoKSwgZm9udE1ldHJp
Y3MubGluZVNwYWNpbmcoKSk7CiAgICAgaWYgKCFmaWxsKQogICAgICAgICBpbmZsYXRlU3Ryb2tl
UmVjdCh0ZXh0UmVjdCk7CiAKQEAgLTI0NjEsNiArMjQ2MSw4IEBAIHZvaWQgQ2FudmFzUmVuZGVy
aW5nQ29udGV4dDJEOjpkcmF3VGV4dEludGVybmFsKGNvbnN0IFN0cmluZyYgdGV4dCwgZmxvYXQg
eCwgZmxvCiAgICAgICAgIH0KIAogICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+
IG1hc2tJbWFnZSA9IGMtPmNyZWF0ZUNvbXBhdGlibGVCdWZmZXIobWFza1JlY3Quc2l6ZSgpKTsK
KyAgICAgICAgaWYgKCFtYXNrSW1hZ2UpCisgICAgICAgICAgICByZXR1cm47CiAKICAgICAgICAg
R3JhcGhpY3NDb250ZXh0JiBtYXNrSW1hZ2VDb250ZXh0ID0gbWFza0ltYWdlLT5jb250ZXh0KCk7
CiAKQEAgLTI0ODQsNyArMjQ4Niw3IEBAIHZvaWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpk
cmF3VGV4dEludGVybmFsKGNvbnN0IFN0cmluZyYgdGV4dCwgZmxvYXQgeCwgZmxvCiAgICAgICAg
IH0KIAogICAgICAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoKmMpOwot
ICAgICAgICBjLT5jbGlwVG9JbWFnZUJ1ZmZlcihtYXNrSW1hZ2UuZ2V0KCksIG1hc2tSZWN0KTsK
KyAgICAgICAgYy0+Y2xpcFRvSW1hZ2VCdWZmZXIoKm1hc2tJbWFnZSwgbWFza1JlY3QpOwogICAg
ICAgICBkcmF3U3R5bGUuYXBwbHlGaWxsQ29sb3IoYyk7CiAgICAgICAgIGMtPmZpbGxSZWN0KG1h
c2tSZWN0KTsKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmggYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuaAppbmRleCBhNDRlNmI5MzBkYzY1Y2U0
MTQwOGUwM2IyNTQ1MWY3MDBjYmEyYTE5Li44NzNmNjQzZWU4NzE5OWJmNmM0OGE2Mzg0MDJiOTI4
NDE1OTQ1M2Q5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNS
ZW5kZXJpbmdDb250ZXh0MkQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52
YXNSZW5kZXJpbmdDb250ZXh0MkQuaApAQCAtMzYzLDExICszNjMsMTEgQEAgcHJpdmF0ZToKIAog
ICAgIHRlbXBsYXRlPGNsYXNzIFQ+IEludFJlY3QgY2FsY3VsYXRlQ29tcG9zaXRpbmdCdWZmZXJS
ZWN0KGNvbnN0IFQmLCBJbnRTaXplKik7CiAgICAgc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVy
PiBjcmVhdGVDb21wb3NpdGluZ0J1ZmZlcihjb25zdCBJbnRSZWN0Jik7Ci0gICAgdm9pZCBjb21w
b3NpdGVCdWZmZXIoSW1hZ2VCdWZmZXIqLCBjb25zdCBJbnRSZWN0JiwgQ29tcG9zaXRlT3BlcmF0
b3IpOworICAgIHZvaWQgY29tcG9zaXRlQnVmZmVyKEltYWdlQnVmZmVyJiwgY29uc3QgSW50UmVj
dCYsIENvbXBvc2l0ZU9wZXJhdG9yKTsKIAogICAgIHZvaWQgaW5mbGF0ZVN0cm9rZVJlY3QoRmxv
YXRSZWN0JikgY29uc3Q7CiAKLSAgICB0ZW1wbGF0ZTxjbGFzcyBUPiB2b2lkIGZ1bGxDYW52YXND
b21wb3NpdGVkRHJhd0ltYWdlKFQqLCBDb2xvclNwYWNlLCBjb25zdCBGbG9hdFJlY3QmLCBjb25z
dCBGbG9hdFJlY3QmLCBDb21wb3NpdGVPcGVyYXRvcik7CisgICAgdGVtcGxhdGU8Y2xhc3MgVD4g
dm9pZCBmdWxsQ2FudmFzQ29tcG9zaXRlZERyYXdJbWFnZShUJiwgQ29sb3JTcGFjZSwgY29uc3Qg
RmxvYXRSZWN0JiwgY29uc3QgRmxvYXRSZWN0JiwgQ29tcG9zaXRlT3BlcmF0b3IpOwogCiAgICAg
dm9pZCBwcmVwYXJlR3JhZGllbnRGb3JEYXNoYm9hcmQoQ2FudmFzR3JhZGllbnQmIGdyYWRpZW50
KSBjb25zdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0wy
UmVuZGVyaW5nQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTDJS
ZW5kZXJpbmdDb250ZXh0LmNwcAppbmRleCA1M2IyNzhkYmRhY2ZkZjc4MWU4YWIxMzIyMTViYTQz
OWVhNTIwMzFkLi5hY2M2N2Q4ZDM0ZWVmZWQwN2YyZjI2NTlhOWI2NDk0MjgyNzdjYjc5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTDJSZW5kZXJpbmdDb250ZXh0
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTDJSZW5kZXJpbmdDb250
ZXh0LmNwcApAQCAtMTQxOSw4ICsxNDE5LDExIEBAIHZvaWQgV2ViR0wyUmVuZGVyaW5nQ29udGV4
dDo6dGV4U3ViSW1hZ2UyRChHQzNEZW51bSB0YXJnZXQsIEdDM0RpbnQgbGV2ZWwsIEdDM0RpCiAg
ICAgICAgIHJldHVybjsKICAgICAKICAgICBSZWZQdHI8SW1hZ2U+IGltYWdlRm9yUmVuZGVyID0g
aW1hZ2UtPmNhY2hlZEltYWdlKCktPmltYWdlRm9yUmVuZGVyZXIoaW1hZ2UtPnJlbmRlcmVyKCkp
OworICAgIGlmICghaW1hZ2VGb3JSZW5kZXIpCisgICAgICAgIHJldHVybjsKKwogICAgIGlmIChp
bWFnZUZvclJlbmRlci0+aXNTVkdJbWFnZSgpKQotICAgICAgICBpbWFnZUZvclJlbmRlciA9IGRy
YXdJbWFnZUludG9CdWZmZXIoaW1hZ2VGb3JSZW5kZXIuZ2V0KCksIGltYWdlLT53aWR0aCgpLCBp
bWFnZS0+aGVpZ2h0KCksIDEpOworICAgICAgICBpbWFnZUZvclJlbmRlciA9IGRyYXdJbWFnZUlu
dG9CdWZmZXIoKmltYWdlRm9yUmVuZGVyLCBpbWFnZS0+d2lkdGgoKSwgaW1hZ2UtPmhlaWdodCgp
LCAxKTsKICAgICAKICAgICBpZiAoIWltYWdlRm9yUmVuZGVyIHx8ICF2YWxpZGF0ZVRleEZ1bmMo
InRleFN1YkltYWdlMkQiLCBUZXhTdWJJbWFnZSwgU291cmNlSFRNTEltYWdlRWxlbWVudCwgdGFy
Z2V0LCBsZXZlbCwgR3JhcGhpY3NDb250ZXh0M0Q6Ok5PTkUsIGltYWdlRm9yUmVuZGVyLT53aWR0
aCgpLCBpbWFnZUZvclJlbmRlci0+aGVpZ2h0KCksIDAsIGZvcm1hdCwgdHlwZSwgeG9mZnNldCwg
eW9mZnNldCkpCiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuY3BwCmluZGV4IGI2ZjdjMzU2NzI0ZTkzZDIy
MjUyZDVhY2IyZWMzMTg1ODU0MzFiZjcuLmVjMTE1MmEzNDgyMWNiMDI4MzdjMzJiYjY2YzZmZTFj
NmViMTkyMzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVu
ZGVyaW5nQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xS
ZW5kZXJpbmdDb250ZXh0LmNwcApAQCAtNjIzLDggKzYyMywxMSBAQCB2b2lkIFdlYkdMUmVuZGVy
aW5nQ29udGV4dDo6dGV4U3ViSW1hZ2UyRChHQzNEZW51bSB0YXJnZXQsIEdDM0RpbnQgbGV2ZWws
IEdDM0RpbgogICAgICAgICByZXR1cm47CiAgICAgCiAgICAgUmVmUHRyPEltYWdlPiBpbWFnZUZv
clJlbmRlciA9IGltYWdlLT5jYWNoZWRJbWFnZSgpLT5pbWFnZUZvclJlbmRlcmVyKGltYWdlLT5y
ZW5kZXJlcigpKTsKKyAgICBpZiAoIWltYWdlRm9yUmVuZGVyKQorICAgICAgICByZXR1cm47CisK
ICAgICBpZiAoaW1hZ2VGb3JSZW5kZXItPmlzU1ZHSW1hZ2UoKSkKLSAgICAgICAgaW1hZ2VGb3JS
ZW5kZXIgPSBkcmF3SW1hZ2VJbnRvQnVmZmVyKGltYWdlRm9yUmVuZGVyLmdldCgpLCBpbWFnZS0+
d2lkdGgoKSwgaW1hZ2UtPmhlaWdodCgpLCAxKTsKKyAgICAgICAgaW1hZ2VGb3JSZW5kZXIgPSBk
cmF3SW1hZ2VJbnRvQnVmZmVyKCppbWFnZUZvclJlbmRlciwgaW1hZ2UtPndpZHRoKCksIGltYWdl
LT5oZWlnaHQoKSwgMSk7CiAgICAgCiAgICAgaWYgKCFpbWFnZUZvclJlbmRlciB8fCAhdmFsaWRh
dGVUZXhGdW5jKCJ0ZXhTdWJJbWFnZTJEIiwgVGV4U3ViSW1hZ2UsIFNvdXJjZUhUTUxJbWFnZUVs
ZW1lbnQsIHRhcmdldCwgbGV2ZWwsIGZvcm1hdCwgaW1hZ2VGb3JSZW5kZXItPndpZHRoKCksIGlt
YWdlRm9yUmVuZGVyLT5oZWlnaHQoKSwgMCwgZm9ybWF0LCB0eXBlLCB4b2Zmc2V0LCB5b2Zmc2V0
KSkKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2Nh
bnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmNwcAppbmRleCBhNGFhN2E3YjM5YTgyOTg5
ZWEzMThiNGMwNzU4YzdiMjQ5ZGI4Yjk2Li42NmJmYzkwNWUyYWNiYzBjMjM4ODU4NzI2ZDg0YjNj
ZmYwN2U1YmNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJl
bmRlcmluZ0NvbnRleHRCYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9X
ZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmNwcApAQCAtMzE2NCw3ICszMTY0LDcgQEAgdm9pZCBX
ZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp0ZXhJbWFnZTJEKEdDM0RlbnVtIHRhcmdldCwgR0Mz
RGludCBsZXZlbCwgR0MzRGUKICAgICAgICAgbV9jb250ZXh0LT5waXhlbFN0b3JlaShHcmFwaGlj
c0NvbnRleHQzRDo6VU5QQUNLX0FMSUdOTUVOVCwgbV91bnBhY2tBbGlnbm1lbnQpOwogfQogCi1Q
YXNzUmVmUHRyPEltYWdlPiBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpkcmF3SW1hZ2VJbnRv
QnVmZmVyKEltYWdlKiBpbWFnZSwgaW50IHdpZHRoLCBpbnQgaGVpZ2h0LCBpbnQgZGV2aWNlU2Nh
bGVGYWN0b3IpCitQYXNzUmVmUHRyPEltYWdlPiBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpk
cmF3SW1hZ2VJbnRvQnVmZmVyKEltYWdlJiBpbWFnZSwgaW50IHdpZHRoLCBpbnQgaGVpZ2h0LCBp
bnQgZGV2aWNlU2NhbGVGYWN0b3IpCiB7CiAgICAgSW50U2l6ZSBzaXplKHdpZHRoLCBoZWlnaHQp
OwogICAgIHNpemUuc2NhbGUoZGV2aWNlU2NhbGVGYWN0b3IpOwpAQCAtMzE3NCw3ICszMTc0LDcg
QEAgUGFzc1JlZlB0cjxJbWFnZT4gV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6ZHJhd0ltYWdl
SW50b0J1ZmZlcihJbWFnZSogaW1hZ2UsIGkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAg
fQogCi0gICAgRmxvYXRSZWN0IHNyY1JlY3QoRmxvYXRQb2ludCgpLCBpbWFnZS0+c2l6ZSgpKTsK
KyAgICBGbG9hdFJlY3Qgc3JjUmVjdChGbG9hdFBvaW50KCksIGltYWdlLnNpemUoKSk7CiAgICAg
RmxvYXRSZWN0IGRlc3RSZWN0KEZsb2F0UG9pbnQoKSwgc2l6ZSk7CiAgICAgYnVmLT5jb250ZXh0
KCkuZHJhd0ltYWdlKGltYWdlLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBkZXN0UmVjdCwgc3JjUmVj
dCk7CiAgICAgcmV0dXJuIGJ1Zi0+Y29weUltYWdlKEltYWdlQnVmZmVyOjpmYXN0Q29weUltYWdl
TW9kZSgpKTsKQEAgLTMxODgsOCArMzE4OCwxMSBAQCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4
dEJhc2U6OnRleEltYWdlMkQoR0MzRGVudW0gdGFyZ2V0LCBHQzNEaW50IGxldmVsLCBHQzNEZQog
ICAgICAgICByZXR1cm47CiAKICAgICBSZWZQdHI8SW1hZ2U+IGltYWdlRm9yUmVuZGVyID0gaW1h
Z2UtPmNhY2hlZEltYWdlKCktPmltYWdlRm9yUmVuZGVyZXIoaW1hZ2UtPnJlbmRlcmVyKCkpOwor
ICAgIGlmICghaW1hZ2VGb3JSZW5kZXIpCisgICAgICAgIHJldHVybjsKKwogICAgIGlmIChpbWFn
ZUZvclJlbmRlci0+aXNTVkdJbWFnZSgpKQotICAgICAgICBpbWFnZUZvclJlbmRlciA9IGRyYXdJ
bWFnZUludG9CdWZmZXIoaW1hZ2VGb3JSZW5kZXIuZ2V0KCksIGltYWdlLT53aWR0aCgpLCBpbWFn
ZS0+aGVpZ2h0KCksIDEpOworICAgICAgICBpbWFnZUZvclJlbmRlciA9IGRyYXdJbWFnZUludG9C
dWZmZXIoKmltYWdlRm9yUmVuZGVyLCBpbWFnZS0+d2lkdGgoKSwgaW1hZ2UtPmhlaWdodCgpLCAx
KTsKIAogICAgIGlmICghaW1hZ2VGb3JSZW5kZXIgfHwgIXZhbGlkYXRlVGV4RnVuYygidGV4SW1h
Z2UyRCIsIFRleEltYWdlLCBTb3VyY2VIVE1MSW1hZ2VFbGVtZW50LCB0YXJnZXQsIGxldmVsLCBp
bnRlcm5hbGZvcm1hdCwgaW1hZ2VGb3JSZW5kZXItPndpZHRoKCksIGltYWdlRm9yUmVuZGVyLT5o
ZWlnaHQoKSwgMCwgZm9ybWF0LCB0eXBlLCAwLCAwKSkKICAgICAgICAgcmV0dXJuOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFz
ZS5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFz
ZS5oCmluZGV4IGUwOWMyYTQzNDZjNWFhMWI0OWIzMTg5NTM0MjYwMDI3MmU2M2Y5ZWQuLmNhMDU4
YjFiZTBlOTRkZGQ0ZWZiMTkxZDkyZTFmNjY5MmEzNmVlNjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmgKQEAgLTQy
Niw3ICs0MjYsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgLy8gQWRkcyBhIGNvbXByZXNzZWQgdGV4dHVy
ZSBmb3JtYXQuCiAgICAgdm9pZCBhZGRDb21wcmVzc2VkVGV4dHVyZUZvcm1hdChHQzNEZW51bSk7
CiAKLSAgICBQYXNzUmVmUHRyPEltYWdlPiBkcmF3SW1hZ2VJbnRvQnVmZmVyKEltYWdlKiwgaW50
IHdpZHRoLCBpbnQgaGVpZ2h0LCBpbnQgZGV2aWNlU2NhbGVGYWN0b3IpOworICAgIFBhc3NSZWZQ
dHI8SW1hZ2U+IGRyYXdJbWFnZUludG9CdWZmZXIoSW1hZ2UmLCBpbnQgd2lkdGgsIGludCBoZWln
aHQsIGludCBkZXZpY2VTY2FsZUZhY3Rvcik7CiAKICNpZiBFTkFCTEUoVklERU8pCiAgICAgUGFz
c1JlZlB0cjxJbWFnZT4gdmlkZW9GcmFtZVRvSW1hZ2UoSFRNTFZpZGVvRWxlbWVudCosIEJhY2tp
bmdTdG9yZUNvcHksIEV4Y2VwdGlvbkNvZGUmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1Njcm9sbFZpZXcuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xs
Vmlldy5jcHAKaW5kZXggMDk3ODhiMGZjMzM5M2IwZTkxZTAyYmYzMjM5N2ZiMGRhNDc1YTY5OS4u
MTVhMGJiMWQwYzI0ZGQzMWVjYzI5M2Q0NzgxNmQyNWI0YmNhYzgzMiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsVmlldy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vU2Nyb2xsVmlldy5jcHAKQEAgLTExNzgsMTAgKzExNzgsMTIgQEAgdm9pZCBTY3Jv
bGxWaWV3OjpwYWludFNjcm9sbGJhcnMoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBJ
bnRSZWN0JiByZWN0KQogdm9pZCBTY3JvbGxWaWV3OjpwYWludFBhblNjcm9sbEljb24oR3JhcGhp
Y3NDb250ZXh0JiBjb250ZXh0KQogewogICAgIHN0YXRpYyBJbWFnZSogcGFuU2Nyb2xsSWNvbiA9
IEltYWdlOjpsb2FkUGxhdGZvcm1SZXNvdXJjZSgicGFuSWNvbiIpLmxlYWtSZWYoKTsKKyAgICBp
ZiAoIXBhblNjcm9sbEljb24pCisgICAgICAgIHJldHVybjsKICAgICBJbnRQb2ludCBpY29uR0NQ
b2ludCA9IG1fcGFuU2Nyb2xsSWNvblBvaW50OwogICAgIGlmIChwYXJlbnQoKSkKICAgICAgICAg
aWNvbkdDUG9pbnQgPSBwYXJlbnQoKS0+d2luZG93VG9Db250ZW50cyhpY29uR0NQb2ludCk7Ci0g
ICAgY29udGV4dC5kcmF3SW1hZ2UocGFuU2Nyb2xsSWNvbiwgQ29sb3JTcGFjZURldmljZVJHQiwg
aWNvbkdDUG9pbnQpOworICAgIGNvbnRleHQuZHJhd0ltYWdlKCpwYW5TY3JvbGxJY29uLCBDb2xv
clNwYWNlRGV2aWNlUkdCLCBpY29uR0NQb2ludCk7CiB9CiAKIHZvaWQgU2Nyb2xsVmlldzo6cGFp
bnQoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBJbnRSZWN0JiByZWN0KQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ3Jvc3NmYWRlR2VuZXJhdGVk
SW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ3Jvc3NmYWRlR2Vu
ZXJhdGVkSW1hZ2UuY3BwCmluZGV4IDRhZjJlNDcxMTU1MjcwZDUwYzhhZTg3ZDFiZjk0MjgzZTFi
ZjZmYmUuLjY4MzJiODk5N2Y3NWFlNDkyZjUyMGY1MGM5NzZlNmQ0MjE1NDkxYmIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Nyb3NzZmFkZUdlbmVyYXRlZElt
YWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Dcm9zc2ZhZGVH
ZW5lcmF0ZWRJbWFnZS5jcHAKQEAgLTMyLDcgKzMyLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCi1Dcm9zc2ZhZGVHZW5lcmF0ZWRJbWFnZTo6Q3Jvc3NmYWRlR2VuZXJhdGVkSW1hZ2UoSW1h
Z2UqIGZyb21JbWFnZSwgSW1hZ2UqIHRvSW1hZ2UsIGZsb2F0IHBlcmNlbnRhZ2UsIGNvbnN0IEZs
b2F0U2l6ZSYgY3Jvc3NmYWRlU2l6ZSwgY29uc3QgRmxvYXRTaXplJiBzaXplKQorQ3Jvc3NmYWRl
R2VuZXJhdGVkSW1hZ2U6OkNyb3NzZmFkZUdlbmVyYXRlZEltYWdlKEltYWdlJiBmcm9tSW1hZ2Us
IEltYWdlJiB0b0ltYWdlLCBmbG9hdCBwZXJjZW50YWdlLCBjb25zdCBGbG9hdFNpemUmIGNyb3Nz
ZmFkZVNpemUsIGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSkKICAgICA6IG1fZnJvbUltYWdlKGZyb21J
bWFnZSkKICAgICAsIG1fdG9JbWFnZSh0b0ltYWdlKQogICAgICwgbV9wZXJjZW50YWdlKHBlcmNl
bnRhZ2UpCkBAIC00MSwxMiArNDEsMTIgQEAgQ3Jvc3NmYWRlR2VuZXJhdGVkSW1hZ2U6OkNyb3Nz
ZmFkZUdlbmVyYXRlZEltYWdlKEltYWdlKiBmcm9tSW1hZ2UsIEltYWdlKiB0b0ltYWcKICAgICBz
ZXRDb250YWluZXJTaXplKHNpemUpOwogfQogCi1zdGF0aWMgdm9pZCBkcmF3Q3Jvc3NmYWRlU3Vi
aW1hZ2UoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBJbWFnZSogaW1hZ2UsIENvbXBvc2l0ZU9w
ZXJhdG9yIG9wZXJhdGlvbiwgZmxvYXQgb3BhY2l0eSwgY29uc3QgRmxvYXRTaXplJiB0YXJnZXRT
aXplKQorc3RhdGljIHZvaWQgZHJhd0Nyb3NzZmFkZVN1YmltYWdlKEdyYXBoaWNzQ29udGV4dCYg
Y29udGV4dCwgSW1hZ2UmIGltYWdlLCBDb21wb3NpdGVPcGVyYXRvciBvcGVyYXRpb24sIGZsb2F0
IG9wYWNpdHksIGNvbnN0IEZsb2F0U2l6ZSYgdGFyZ2V0U2l6ZSkKIHsKLSAgICBGbG9hdFNpemUg
aW1hZ2VTaXplID0gaW1hZ2UtPnNpemUoKTsKKyAgICBGbG9hdFNpemUgaW1hZ2VTaXplID0gaW1h
Z2Uuc2l6ZSgpOwogCiAgICAgLy8gU1ZHSW1hZ2UgcmVzZXRzIHRoZSBvcGFjaXR5IHdoZW4gcGFp
bnRpbmcsIHNvIHdlIGhhdmUgdG8gdXNlIHRyYW5zcGFyZW5jeSBsYXllcnMgdG8gYWNjdXJhdGVs
eSBwYWludCBvbmUgYXQgYSBnaXZlbiBvcGFjaXR5LgotICAgIGJvb2wgdXNlVHJhbnNwYXJlbmN5
TGF5ZXIgPSBpbWFnZS0+aXNTVkdJbWFnZSgpOworICAgIGJvb2wgdXNlVHJhbnNwYXJlbmN5TGF5
ZXIgPSBpbWFnZS5pc1NWR0ltYWdlKCk7CiAKICAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVy
IHN0YXRlU2F2ZXIoY29udGV4dCk7CiAKQEAgLTY4LDcgKzY4LDcgQEAgc3RhdGljIHZvaWQgZHJh
d0Nyb3NzZmFkZVN1YmltYWdlKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgSW1hZ2UqIGltYWdl
LCBDb21wb3MKIHZvaWQgQ3Jvc3NmYWRlR2VuZXJhdGVkSW1hZ2U6OmRyYXdDcm9zc2ZhZGUoR3Jh
cGhpY3NDb250ZXh0JiBjb250ZXh0KQogewogICAgIC8vIERyYXcgbm90aGluZyBpZiBlaXRoZXIg
b2YgdGhlIGltYWdlcyBoYXNuJ3QgbG9hZGVkIHlldC4KLSAgICBpZiAobV9mcm9tSW1hZ2UgPT0g
SW1hZ2U6Om51bGxJbWFnZSgpIHx8IG1fdG9JbWFnZSA9PSBJbWFnZTo6bnVsbEltYWdlKCkpCisg
ICAgaWYgKG1fZnJvbUltYWdlLnB0cigpID09IEltYWdlOjpudWxsSW1hZ2UoKSB8fCBtX3RvSW1h
Z2UucHRyKCkgPT0gSW1hZ2U6Om51bGxJbWFnZSgpKQogICAgICAgICByZXR1cm47CiAKICAgICBH
cmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoY29udGV4dCk7CkBAIC03Niw4ICs3
Niw4IEBAIHZvaWQgQ3Jvc3NmYWRlR2VuZXJhdGVkSW1hZ2U6OmRyYXdDcm9zc2ZhZGUoR3JhcGhp
Y3NDb250ZXh0JiBjb250ZXh0KQogICAgIGNvbnRleHQuY2xpcChGbG9hdFJlY3QoRmxvYXRQb2lu
dCgpLCBtX2Nyb3NzZmFkZVNpemUpKTsKICAgICBjb250ZXh0LmJlZ2luVHJhbnNwYXJlbmN5TGF5
ZXIoMSk7CiAKLSAgICBkcmF3Q3Jvc3NmYWRlU3ViaW1hZ2UoY29udGV4dCwgbV9mcm9tSW1hZ2Us
IENvbXBvc2l0ZVNvdXJjZU92ZXIsIDEgLSBtX3BlcmNlbnRhZ2UsIG1fY3Jvc3NmYWRlU2l6ZSk7
Ci0gICAgZHJhd0Nyb3NzZmFkZVN1YmltYWdlKGNvbnRleHQsIG1fdG9JbWFnZSwgQ29tcG9zaXRl
UGx1c0xpZ2h0ZXIsIG1fcGVyY2VudGFnZSwgbV9jcm9zc2ZhZGVTaXplKTsKKyAgICBkcmF3Q3Jv
c3NmYWRlU3ViaW1hZ2UoY29udGV4dCwgbV9mcm9tSW1hZ2UuZ2V0KCksIENvbXBvc2l0ZVNvdXJj
ZU92ZXIsIDEgLSBtX3BlcmNlbnRhZ2UsIG1fY3Jvc3NmYWRlU2l6ZSk7CisgICAgZHJhd0Nyb3Nz
ZmFkZVN1YmltYWdlKGNvbnRleHQsIG1fdG9JbWFnZS5nZXQoKSwgQ29tcG9zaXRlUGx1c0xpZ2h0
ZXIsIG1fcGVyY2VudGFnZSwgbV9jcm9zc2ZhZGVTaXplKTsKIAogICAgIGNvbnRleHQuZW5kVHJh
bnNwYXJlbmN5TGF5ZXIoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0Nyb3NzZmFkZUdlbmVyYXRlZEltYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9Dcm9zc2ZhZGVHZW5lcmF0ZWRJbWFnZS5oCmluZGV4IDM1OWQyOWFiNTEw
MzRkMGE5M2M0ZTdlNDQ0NmI1YTkxOTk4ZGI5MzEuLjg0NmYyOTZkMzk4ZTlhMjkyYmFlYjZjMzJl
YzEwMWJlYjg2MzdlMzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0Nyb3NzZmFkZUdlbmVyYXRlZEltYWdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvQ3Jvc3NmYWRlR2VuZXJhdGVkSW1hZ2UuaApAQCAtMzYsNyArMzYsNyBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIENyb3NzZmFkZUdlbmVyYXRlZEltYWdlIGZpbmFs
IDogcHVibGljIEdlbmVyYXRlZEltYWdlIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPENyb3Nz
ZmFkZUdlbmVyYXRlZEltYWdlPiBjcmVhdGUoSW1hZ2UqIGZyb21JbWFnZSwgSW1hZ2UqIHRvSW1h
Z2UsIGZsb2F0IHBlcmNlbnRhZ2UsIGNvbnN0IEZsb2F0U2l6ZSYgY3Jvc3NmYWRlU2l6ZSwgY29u
c3QgRmxvYXRTaXplJiBzaXplKQorICAgIHN0YXRpYyBSZWY8Q3Jvc3NmYWRlR2VuZXJhdGVkSW1h
Z2U+IGNyZWF0ZShJbWFnZSYgZnJvbUltYWdlLCBJbWFnZSYgdG9JbWFnZSwgZmxvYXQgcGVyY2Vu
dGFnZSwgY29uc3QgRmxvYXRTaXplJiBjcm9zc2ZhZGVTaXplLCBjb25zdCBGbG9hdFNpemUmIHNp
emUpCiAgICAgewogICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBDcm9zc2ZhZGVHZW5lcmF0
ZWRJbWFnZShmcm9tSW1hZ2UsIHRvSW1hZ2UsIHBlcmNlbnRhZ2UsIGNyb3NzZmFkZVNpemUsIHNp
emUpKTsKICAgICB9CkBAIC01MiwxMyArNTIsMTMgQEAgcHJvdGVjdGVkOgogICAgIHZpcnR1YWwg
dm9pZCBkcmF3KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29u
c3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb2xvclNwYWNlIHN0eWxlQ29sb3JTcGFjZSwgQ29tcG9z
aXRlT3BlcmF0b3IsIEJsZW5kTW9kZSwgSW1hZ2VPcmllbnRhdGlvbkRlc2NyaXB0aW9uKSBvdmVy
cmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgZHJhd1BhdHRlcm4oR3JhcGhpY3NDb250ZXh0JiwgY29u
c3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHBhdHRlcm5UcmFu
c2Zvcm0sIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBjb25zdCBGbG9hdFNpemUmIHNwYWNpbmcs
IENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBDb21wb3NpdGVPcGVyYXRvciwgY29uc3QgRmxv
YXRSZWN0JiBkc3RSZWN0LCBCbGVuZE1vZGUpIG92ZXJyaWRlOwogCi0gICAgQ3Jvc3NmYWRlR2Vu
ZXJhdGVkSW1hZ2UoSW1hZ2UqIGZyb21JbWFnZSwgSW1hZ2UqIHRvSW1hZ2UsIGZsb2F0IHBlcmNl
bnRhZ2UsIGNvbnN0IEZsb2F0U2l6ZSYgY3Jvc3NmYWRlU2l6ZSwgY29uc3QgRmxvYXRTaXplJik7
CisgICAgQ3Jvc3NmYWRlR2VuZXJhdGVkSW1hZ2UoSW1hZ2UmIGZyb21JbWFnZSwgSW1hZ2UmIHRv
SW1hZ2UsIGZsb2F0IHBlcmNlbnRhZ2UsIGNvbnN0IEZsb2F0U2l6ZSYgY3Jvc3NmYWRlU2l6ZSwg
Y29uc3QgRmxvYXRTaXplJik7CiAKIHByaXZhdGU6CiAgICAgdm9pZCBkcmF3Q3Jvc3NmYWRlKEdy
YXBoaWNzQ29udGV4dCYpOwogCi0gICAgSW1hZ2UqIG1fZnJvbUltYWdlOwotICAgIEltYWdlKiBt
X3RvSW1hZ2U7CisgICAgUmVmPEltYWdlPiBtX2Zyb21JbWFnZTsKKyAgICBSZWY8SW1hZ2U+IG1f
dG9JbWFnZTsKIAogICAgIGZsb2F0IG1fcGVyY2VudGFnZTsKICAgICBGbG9hdFNpemUgbV9jcm9z
c2ZhZGVTaXplOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
R3JhZGllbnRJbWFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFk
aWVudEltYWdlLmNwcAppbmRleCBmNDA1MzBkMDViMDZjNWI5M2VkYzVhZGM4MTNlNTcyNmRhNTEy
ODA5Li4yMjk5ZjUxZmYzZDE5ZWFjOWYyYWUwZDM3ZmUxNzE0MzIwMGI4ZDJiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFkaWVudEltYWdlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFkaWVudEltYWdlLmNwcApAQCAt
NzMsNyArNzMsNyBAQCB2b2lkIEdyYWRpZW50SW1hZ2U6OmRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29u
dGV4dCYgZGVzdENvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgcwogCiAgICAgdW5zaWduZWQgZ2Vu
ZXJhdG9ySGFzaCA9IG1fZ3JhZGllbnQtPmhhc2goKTsKIAotICAgIGlmICghbV9jYWNoZWRJbWFn
ZUJ1ZmZlciB8fCBtX2NhY2hlZEdlbmVyYXRvckhhc2ggIT0gZ2VuZXJhdG9ySGFzaCB8fCBtX2Nh
Y2hlZEFkanVzdGVkU2l6ZSAhPSBhZGp1c3RlZFNpemUgfHwgIWRlc3RDb250ZXh0LmlzQ29tcGF0
aWJsZVdpdGhCdWZmZXIobV9jYWNoZWRJbWFnZUJ1ZmZlci5nZXQoKSkpIHsKKyAgICBpZiAoIW1f
Y2FjaGVkSW1hZ2VCdWZmZXIgfHwgbV9jYWNoZWRHZW5lcmF0b3JIYXNoICE9IGdlbmVyYXRvckhh
c2ggfHwgbV9jYWNoZWRBZGp1c3RlZFNpemUgIT0gYWRqdXN0ZWRTaXplIHx8ICFkZXN0Q29udGV4
dC5pc0NvbXBhdGlibGVXaXRoQnVmZmVyKCptX2NhY2hlZEltYWdlQnVmZmVyKSkgewogICAgICAg
ICBtX2NhY2hlZEltYWdlQnVmZmVyID0gZGVzdENvbnRleHQuY3JlYXRlQ29tcGF0aWJsZUJ1ZmZl
cihhZGp1c3RlZFNpemUsIG1fZ3JhZGllbnQtPmhhc0FscGhhKCkpOwogICAgICAgICBpZiAoIW1f
Y2FjaGVkSW1hZ2VCdWZmZXIpCiAgICAgICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcAppbmRleCA0MjZj
N2E3NmJmYjM4NjZhMzliNTYxZmJhZGM3NjM5OTg5NmM2MjkzLi4yYjRhMmY3OTlmOWY1MDUyNWQ5
ZTk4YjU2MTBjMWM0NWQ1NGFhYTNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHAKQEAgLTM2OCw1MCArMzY4LDQ1IEBAIHZv
aWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3QmlkaVRleHQoY29uc3QgRm9udENhc2NhZGUmIGZvbnQs
IGNvbnN0IFRleHRSdW4mIHJ1biwKICAgICBiaWRpUnVucy5kZWxldGVSdW5zKCk7CiB9CiAKLXZv
aWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3SW1hZ2UoSW1hZ2UqIGltYWdlLCBDb2xvclNwYWNlIGNv
bG9yU3BhY2UsIGNvbnN0IEZsb2F0UG9pbnQmIGRlc3RpbmF0aW9uLCBjb25zdCBJbWFnZVBhaW50
aW5nT3B0aW9ucyYgaW1hZ2VQYWludGluZ09wdGlvbnMpCit2b2lkIEdyYXBoaWNzQ29udGV4dDo6
ZHJhd0ltYWdlKEltYWdlJiBpbWFnZSwgQ29sb3JTcGFjZSBjb2xvclNwYWNlLCBjb25zdCBGbG9h
dFBvaW50JiBkZXN0aW5hdGlvbiwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIGltYWdlUGFp
bnRpbmdPcHRpb25zKQogewotICAgIGlmICghaW1hZ2UpCi0gICAgICAgIHJldHVybjsKLSAgICBk
cmF3SW1hZ2UoaW1hZ2UsIGNvbG9yU3BhY2UsIEZsb2F0UmVjdChkZXN0aW5hdGlvbiwgaW1hZ2Ut
PnNpemUoKSksIEZsb2F0UmVjdChGbG9hdFBvaW50KCksIGltYWdlLT5zaXplKCkpLCBpbWFnZVBh
aW50aW5nT3B0aW9ucyk7CisgICAgZHJhd0ltYWdlKGltYWdlLCBjb2xvclNwYWNlLCBGbG9hdFJl
Y3QoZGVzdGluYXRpb24sIGltYWdlLnNpemUoKSksIEZsb2F0UmVjdChGbG9hdFBvaW50KCksIGlt
YWdlLnNpemUoKSksIGltYWdlUGFpbnRpbmdPcHRpb25zKTsKIH0KIAotdm9pZCBHcmFwaGljc0Nv
bnRleHQ6OmRyYXdJbWFnZShJbWFnZSogaW1hZ2UsIENvbG9yU3BhY2UgY29sb3JTcGFjZSwgY29u
c3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIGlt
YWdlUGFpbnRpbmdPcHRpb25zKQordm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdJbWFnZShJbWFn
ZSYgaW1hZ2UsIENvbG9yU3BhY2UgY29sb3JTcGFjZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5h
dGlvbiwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIGltYWdlUGFpbnRpbmdPcHRpb25zKQog
ewotICAgIGlmICghaW1hZ2UpCi0gICAgICAgIHJldHVybjsKLSAgICAKICNpZiBQTEFURk9STShJ
T1MpCi0gICAgRmxvYXRSZWN0IHNyY1JlY3QoRmxvYXRQb2ludCgpLCBpbWFnZS0+b3JpZ2luYWxT
aXplKCkpOworICAgIEZsb2F0UmVjdCBzcmNSZWN0KEZsb2F0UG9pbnQoKSwgaW1hZ2Uub3JpZ2lu
YWxTaXplKCkpOwogI2Vsc2UKLSAgICBGbG9hdFJlY3Qgc3JjUmVjdChGbG9hdFBvaW50KCksIGlt
YWdlLT5zaXplKCkpOworICAgIEZsb2F0UmVjdCBzcmNSZWN0KEZsb2F0UG9pbnQoKSwgaW1hZ2Uu
c2l6ZSgpKTsKICNlbmRpZgogICAgICAgICAKICAgICBkcmF3SW1hZ2UoaW1hZ2UsIGNvbG9yU3Bh
Y2UsIGRlc3RpbmF0aW9uLCBzcmNSZWN0LCBpbWFnZVBhaW50aW5nT3B0aW9ucyk7CiB9CiAKLXZv
aWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3SW1hZ2UoSW1hZ2UqIGltYWdlLCBDb2xvclNwYWNlIGNv
bG9yU3BhY2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24sIGNvbnN0IEZsb2F0UmVjdCYg
c291cmNlLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgaW1hZ2VQYWludGluZ09wdGlvbnMp
Cit2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd0ltYWdlKEltYWdlJiBpbWFnZSwgQ29sb3JTcGFj
ZSBjb2xvclNwYWNlLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBjb25zdCBGbG9hdFJl
Y3QmIHNvdXJjZSwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIGltYWdlUGFpbnRpbmdPcHRp
b25zKQogewotICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkgfHwgIWltYWdlKQorICAgIGlmIChw
YWludGluZ0Rpc2FibGVkKCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIC8vIEZJWE1FICg0OTAw
Mik6IFNob3VsZCBiZSBJbnRlcnBvbGF0aW9uTG93CiAgICAgSW50ZXJwb2xhdGlvblF1YWxpdHlN
YWludGFpbmVyIGludGVycG9sYXRpb25RdWFsaXR5Rm9yVGhpc1Njb3BlKCp0aGlzLCBpbWFnZVBh
aW50aW5nT3B0aW9ucy5tX3VzZUxvd1F1YWxpdHlTY2FsZSA/IEludGVycG9sYXRpb25Ob25lIDog
aW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eSgpKTsKLSAgICBpbWFnZS0+ZHJhdygqdGhpcywgZGVz
dGluYXRpb24sIHNvdXJjZSwgY29sb3JTcGFjZSwgaW1hZ2VQYWludGluZ09wdGlvbnMubV9jb21w
b3NpdGVPcGVyYXRvciwgaW1hZ2VQYWludGluZ09wdGlvbnMubV9ibGVuZE1vZGUsIGltYWdlUGFp
bnRpbmdPcHRpb25zLm1fb3JpZW50YXRpb25EZXNjcmlwdGlvbik7CisgICAgaW1hZ2UuZHJhdygq
dGhpcywgZGVzdGluYXRpb24sIHNvdXJjZSwgY29sb3JTcGFjZSwgaW1hZ2VQYWludGluZ09wdGlv
bnMubV9jb21wb3NpdGVPcGVyYXRvciwgaW1hZ2VQYWludGluZ09wdGlvbnMubV9ibGVuZE1vZGUs
IGltYWdlUGFpbnRpbmdPcHRpb25zLm1fb3JpZW50YXRpb25EZXNjcmlwdGlvbik7CiB9CiAKLXZv
aWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3VGlsZWRJbWFnZShJbWFnZSogaW1hZ2UsIENvbG9yU3Bh
Y2UgY29sb3JTcGFjZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwgY29uc3QgRmxvYXRQ
b2ludCYgc291cmNlLCBjb25zdCBGbG9hdFNpemUmIHRpbGVTaXplLCBjb25zdCBGbG9hdFNpemUm
IHNwYWNpbmcsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBpbWFnZVBhaW50aW5nT3B0aW9u
cykKK3ZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3VGlsZWRJbWFnZShJbWFnZSYgaW1hZ2UsIENv
bG9yU3BhY2UgY29sb3JTcGFjZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwgY29uc3Qg
RmxvYXRQb2ludCYgc291cmNlLCBjb25zdCBGbG9hdFNpemUmIHRpbGVTaXplLCBjb25zdCBGbG9h
dFNpemUmIHNwYWNpbmcsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBpbWFnZVBhaW50aW5n
T3B0aW9ucykKIHsKLSAgICBpZiAocGFpbnRpbmdEaXNhYmxlZCgpIHx8ICFpbWFnZSkKKyAgICBp
ZiAocGFpbnRpbmdEaXNhYmxlZCgpKQogICAgICAgICByZXR1cm47CiAKICAgICBJbnRlcnBvbGF0
aW9uUXVhbGl0eU1haW50YWluZXIgaW50ZXJwb2xhdGlvblF1YWxpdHlGb3JUaGlzU2NvcGUoKnRo
aXMsIGltYWdlUGFpbnRpbmdPcHRpb25zLm1fdXNlTG93UXVhbGl0eVNjYWxlID8gSW50ZXJwb2xh
dGlvbkxvdyA6IGltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHkoKSk7Ci0gICAgaW1hZ2UtPmRyYXdU
aWxlZCgqdGhpcywgZGVzdGluYXRpb24sIHNvdXJjZSwgdGlsZVNpemUsIHNwYWNpbmcsIGNvbG9y
U3BhY2UsIGltYWdlUGFpbnRpbmdPcHRpb25zLm1fY29tcG9zaXRlT3BlcmF0b3IsIGltYWdlUGFp
bnRpbmdPcHRpb25zLm1fYmxlbmRNb2RlKTsKKyAgICBpbWFnZS5kcmF3VGlsZWQoKnRoaXMsIGRl
c3RpbmF0aW9uLCBzb3VyY2UsIHRpbGVTaXplLCBzcGFjaW5nLCBjb2xvclNwYWNlLCBpbWFnZVBh
aW50aW5nT3B0aW9ucy5tX2NvbXBvc2l0ZU9wZXJhdG9yLCBpbWFnZVBhaW50aW5nT3B0aW9ucy5t
X2JsZW5kTW9kZSk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3VGlsZWRJbWFnZShJ
bWFnZSogaW1hZ2UsIENvbG9yU3BhY2UgY29sb3JTcGFjZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0
aW5hdGlvbiwgY29uc3QgRmxvYXRSZWN0JiBzb3VyY2UsIGNvbnN0IEZsb2F0U2l6ZSYgdGlsZVNj
YWxlRmFjdG9yLAordm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdUaWxlZEltYWdlKEltYWdlJiBp
bWFnZSwgQ29sb3JTcGFjZSBjb2xvclNwYWNlLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9u
LCBjb25zdCBGbG9hdFJlY3QmIHNvdXJjZSwgY29uc3QgRmxvYXRTaXplJiB0aWxlU2NhbGVGYWN0
b3IsCiAgICAgSW1hZ2U6OlRpbGVSdWxlIGhSdWxlLCBJbWFnZTo6VGlsZVJ1bGUgdlJ1bGUsIGNv
bnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBpbWFnZVBhaW50aW5nT3B0aW9ucykKIHsKLSAgICBp
ZiAocGFpbnRpbmdEaXNhYmxlZCgpIHx8ICFpbWFnZSkKKyAgICBpZiAocGFpbnRpbmdEaXNhYmxl
ZCgpKQogICAgICAgICByZXR1cm47CiAKICAgICBpZiAoaFJ1bGUgPT0gSW1hZ2U6OlN0cmV0Y2hU
aWxlICYmIHZSdWxlID09IEltYWdlOjpTdHJldGNoVGlsZSkgewpAQCAtNDIxLDMxICs0MTYsMjcg
QEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdUaWxlZEltYWdlKEltYWdlKiBpbWFnZSwgQ29s
b3JTcGFjZSBjb2xvclNwYWNlLCBjb25zdAogICAgIH0KIAogICAgIEludGVycG9sYXRpb25RdWFs
aXR5TWFpbnRhaW5lciBpbnRlcnBvbGF0aW9uUXVhbGl0eUZvclRoaXNTY29wZSgqdGhpcywgaW1h
Z2VQYWludGluZ09wdGlvbnMubV91c2VMb3dRdWFsaXR5U2NhbGUgPyBJbnRlcnBvbGF0aW9uTG93
IDogaW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eSgpKTsKLSAgICBpbWFnZS0+ZHJhd1RpbGVkKCp0
aGlzLCBkZXN0aW5hdGlvbiwgc291cmNlLCB0aWxlU2NhbGVGYWN0b3IsIGhSdWxlLCB2UnVsZSwg
Y29sb3JTcGFjZSwgaW1hZ2VQYWludGluZ09wdGlvbnMubV9jb21wb3NpdGVPcGVyYXRvcik7Cisg
ICAgaW1hZ2UuZHJhd1RpbGVkKCp0aGlzLCBkZXN0aW5hdGlvbiwgc291cmNlLCB0aWxlU2NhbGVG
YWN0b3IsIGhSdWxlLCB2UnVsZSwgY29sb3JTcGFjZSwgaW1hZ2VQYWludGluZ09wdGlvbnMubV9j
b21wb3NpdGVPcGVyYXRvcik7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3SW1hZ2VC
dWZmZXIoSW1hZ2VCdWZmZXIqIGltYWdlLCBDb2xvclNwYWNlIGNvbG9yU3BhY2UsIGNvbnN0IEZs
b2F0UG9pbnQmIGRlc3RpbmF0aW9uLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgaW1hZ2VQ
YWludGluZ09wdGlvbnMpCit2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd0ltYWdlQnVmZmVyKElt
YWdlQnVmZmVyJiBpbWFnZSwgQ29sb3JTcGFjZSBjb2xvclNwYWNlLCBjb25zdCBGbG9hdFBvaW50
JiBkZXN0aW5hdGlvbiwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIGltYWdlUGFpbnRpbmdP
cHRpb25zKQogewotICAgIGlmICghaW1hZ2UpCi0gICAgICAgIHJldHVybjsKLSAgICBkcmF3SW1h
Z2VCdWZmZXIoaW1hZ2UsIGNvbG9yU3BhY2UsIEZsb2F0UmVjdChkZXN0aW5hdGlvbiwgaW1hZ2Ut
PmxvZ2ljYWxTaXplKCkpLCBGbG9hdFJlY3QoRmxvYXRQb2ludCgpLCBpbWFnZS0+bG9naWNhbFNp
emUoKSksIGltYWdlUGFpbnRpbmdPcHRpb25zKTsKKyAgICBkcmF3SW1hZ2VCdWZmZXIoaW1hZ2Us
IGNvbG9yU3BhY2UsIEZsb2F0UmVjdChkZXN0aW5hdGlvbiwgaW1hZ2UubG9naWNhbFNpemUoKSks
IEZsb2F0UmVjdChGbG9hdFBvaW50KCksIGltYWdlLmxvZ2ljYWxTaXplKCkpLCBpbWFnZVBhaW50
aW5nT3B0aW9ucyk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3SW1hZ2VCdWZmZXIo
SW1hZ2VCdWZmZXIqIGltYWdlLCBDb2xvclNwYWNlIGNvbG9yU3BhY2UsIGNvbnN0IEZsb2F0UmVj
dCYgZGVzdGluYXRpb24sIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBpbWFnZVBhaW50aW5n
T3B0aW9ucykKK3ZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3SW1hZ2VCdWZmZXIoSW1hZ2VCdWZm
ZXImIGltYWdlLCBDb2xvclNwYWNlIGNvbG9yU3BhY2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGlu
YXRpb24sIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBpbWFnZVBhaW50aW5nT3B0aW9ucykK
IHsKLSAgICBpZiAoIWltYWdlKQotICAgICAgICByZXR1cm47Ci0gICAgZHJhd0ltYWdlQnVmZmVy
KGltYWdlLCBjb2xvclNwYWNlLCBkZXN0aW5hdGlvbiwgRmxvYXRSZWN0KEZsb2F0UG9pbnQoKSwg
RmxvYXRTaXplKGltYWdlLT5sb2dpY2FsU2l6ZSgpKSksIGltYWdlUGFpbnRpbmdPcHRpb25zKTsK
KyAgICBkcmF3SW1hZ2VCdWZmZXIoaW1hZ2UsIGNvbG9yU3BhY2UsIGRlc3RpbmF0aW9uLCBGbG9h
dFJlY3QoRmxvYXRQb2ludCgpLCBGbG9hdFNpemUoaW1hZ2UubG9naWNhbFNpemUoKSkpLCBpbWFn
ZVBhaW50aW5nT3B0aW9ucyk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3SW1hZ2VC
dWZmZXIoSW1hZ2VCdWZmZXIqIGltYWdlLCBDb2xvclNwYWNlIGNvbG9yU3BhY2UsIGNvbnN0IEZs
b2F0UmVjdCYgZGVzdGluYXRpb24sIGNvbnN0IEZsb2F0UmVjdCYgc291cmNlLCBjb25zdCBJbWFn
ZVBhaW50aW5nT3B0aW9ucyYgaW1hZ2VQYWludGluZ09wdGlvbnMpCit2b2lkIEdyYXBoaWNzQ29u
dGV4dDo6ZHJhd0ltYWdlQnVmZmVyKEltYWdlQnVmZmVyJiBpbWFnZSwgQ29sb3JTcGFjZSBjb2xv
clNwYWNlLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBjb25zdCBGbG9hdFJlY3QmIHNv
dXJjZSwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIGltYWdlUGFpbnRpbmdPcHRpb25zKQog
ewotICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkgfHwgIWltYWdlKQorICAgIGlmIChwYWludGlu
Z0Rpc2FibGVkKCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIC8vIEZJWE1FICg0OTAwMik6IFNo
b3VsZCBiZSBJbnRlcnBvbGF0aW9uTG93CiAgICAgSW50ZXJwb2xhdGlvblF1YWxpdHlNYWludGFp
bmVyIGludGVycG9sYXRpb25RdWFsaXR5Rm9yVGhpc1Njb3BlKCp0aGlzLCBpbWFnZVBhaW50aW5n
T3B0aW9ucy5tX3VzZUxvd1F1YWxpdHlTY2FsZSA/IEludGVycG9sYXRpb25Ob25lIDogaW1hZ2VJ
bnRlcnBvbGF0aW9uUXVhbGl0eSgpKTsKLSAgICBpbWFnZS0+ZHJhdygqdGhpcywgY29sb3JTcGFj
ZSwgZGVzdGluYXRpb24sIHNvdXJjZSwgaW1hZ2VQYWludGluZ09wdGlvbnMubV9jb21wb3NpdGVP
cGVyYXRvciwgaW1hZ2VQYWludGluZ09wdGlvbnMubV9ibGVuZE1vZGUsIGltYWdlUGFpbnRpbmdP
cHRpb25zLm1fdXNlTG93UXVhbGl0eVNjYWxlKTsKKyAgICBpbWFnZS5kcmF3KCp0aGlzLCBjb2xv
clNwYWNlLCBkZXN0aW5hdGlvbiwgc291cmNlLCBpbWFnZVBhaW50aW5nT3B0aW9ucy5tX2NvbXBv
c2l0ZU9wZXJhdG9yLCBpbWFnZVBhaW50aW5nT3B0aW9ucy5tX2JsZW5kTW9kZSwgaW1hZ2VQYWlu
dGluZ09wdGlvbnMubV91c2VMb3dRdWFsaXR5U2NhbGUpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29u
dGV4dDo6Y2xpcChjb25zdCBJbnRSZWN0JiByZWN0KQpAQCAtNDc4LDExICs0NjksMTEgQEAgdm9p
ZCBHcmFwaGljc0NvbnRleHQ6OmNsaXBPdXRSb3VuZGVkUmVjdChjb25zdCBGbG9hdFJvdW5kZWRS
ZWN0JiByZWN0KQogICAgIGNsaXBPdXQocGF0aCk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0
OjpjbGlwVG9JbWFnZUJ1ZmZlcihJbWFnZUJ1ZmZlciogYnVmZmVyLCBjb25zdCBGbG9hdFJlY3Qm
IHJlY3QpCit2b2lkIEdyYXBoaWNzQ29udGV4dDo6Y2xpcFRvSW1hZ2VCdWZmZXIoSW1hZ2VCdWZm
ZXImIGJ1ZmZlciwgY29uc3QgRmxvYXRSZWN0JiByZWN0KQogewogICAgIGlmIChwYWludGluZ0Rp
c2FibGVkKCkpCiAgICAgICAgIHJldHVybjsKLSAgICBidWZmZXItPmNsaXAoKnRoaXMsIHJlY3Qp
OworICAgIGJ1ZmZlci5jbGlwKCp0aGlzLCByZWN0KTsKIH0KIAogI2lmICFVU0UoQ0cpICYmICFV
U0UoQ0FJUk8pCkBAIC02NDgsOSArNjM5LDkgQEAgc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVy
PiBHcmFwaGljc0NvbnRleHQ6OmNyZWF0ZUNvbXBhdGlibGVCdWZmZXIoY29uc3QgRmxvYXQKICAg
ICByZXR1cm4gYnVmZmVyOwogfQogCi1ib29sIEdyYXBoaWNzQ29udGV4dDo6aXNDb21wYXRpYmxl
V2l0aEJ1ZmZlcihJbWFnZUJ1ZmZlciogYnVmZmVyKSBjb25zdAorYm9vbCBHcmFwaGljc0NvbnRl
eHQ6OmlzQ29tcGF0aWJsZVdpdGhCdWZmZXIoSW1hZ2VCdWZmZXImIGJ1ZmZlcikgY29uc3QKIHsK
LSAgICBHcmFwaGljc0NvbnRleHQmIGJ1ZmZlckNvbnRleHQgPSBidWZmZXItPmNvbnRleHQoKTsK
KyAgICBHcmFwaGljc0NvbnRleHQmIGJ1ZmZlckNvbnRleHQgPSBidWZmZXIuY29udGV4dCgpOwog
CiAgICAgcmV0dXJuIHNjYWxlc01hdGNoKGdldENUTSgpLCBidWZmZXJDb250ZXh0LmdldENUTSgp
KSAmJiBpc0FjY2VsZXJhdGVkQ29udGV4dCgpID09IGJ1ZmZlckNvbnRleHQuaXNBY2NlbGVyYXRl
ZENvbnRleHQoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0dyYXBoaWNzQ29udGV4dC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
R3JhcGhpY3NDb250ZXh0LmgKaW5kZXggZDgwM2FjNzUyNWE3ZTAzMTg4YWIxYmIzYTgyNDkyYjkx
ZWRjMjk0OC4uY2E5ZmFiNTk4YjE5Y2U4NWU1YjMzZDIyOTkwOTgyZTY1MDYxOTgxMSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmgK
QEAgLTMwOCwxNyArMzA4LDE3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgICAgICBXRUJD
T1JFX0VYUE9SVCB2b2lkIHN0cm9rZVJlY3QoY29uc3QgRmxvYXRSZWN0JiwgZmxvYXQgbGluZVdp
ZHRoKTsKIAotICAgICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRyYXdJbWFnZShJbWFnZSosIENv
bG9yU3BhY2UsIGNvbnN0IEZsb2F0UG9pbnQmIGRlc3RpbmF0aW9uLCBjb25zdCBJbWFnZVBhaW50
aW5nT3B0aW9ucyYgPSBJbWFnZVBhaW50aW5nT3B0aW9ucygpKTsKLSAgICAgICAgV0VCQ09SRV9F
WFBPUlQgdm9pZCBkcmF3SW1hZ2UoSW1hZ2UqLCBDb2xvclNwYWNlLCBjb25zdCBGbG9hdFJlY3Qm
IGRlc3RpbmF0aW9uLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgPSBJbWFnZVBhaW50aW5n
T3B0aW9ucygpKTsKLSAgICAgICAgdm9pZCBkcmF3SW1hZ2UoSW1hZ2UqLCBDb2xvclNwYWNlLCBj
b25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBjb25zdCBGbG9hdFJlY3QmIHNvdXJjZSwgY29u
c3QgSW1hZ2VQYWludGluZ09wdGlvbnMmID0gSW1hZ2VQYWludGluZ09wdGlvbnMoKSk7CisgICAg
ICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZHJhd0ltYWdlKEltYWdlJiwgQ29sb3JTcGFjZSwgY29u
c3QgRmxvYXRQb2ludCYgZGVzdGluYXRpb24sIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiA9
IEltYWdlUGFpbnRpbmdPcHRpb25zKCkpOworICAgICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRy
YXdJbWFnZShJbWFnZSYsIENvbG9yU3BhY2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24s
IGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiA9IEltYWdlUGFpbnRpbmdPcHRpb25zKCkpOwor
ICAgICAgICB2b2lkIGRyYXdJbWFnZShJbWFnZSYsIENvbG9yU3BhY2UsIGNvbnN0IEZsb2F0UmVj
dCYgZGVzdGluYXRpb24sIGNvbnN0IEZsb2F0UmVjdCYgc291cmNlLCBjb25zdCBJbWFnZVBhaW50
aW5nT3B0aW9ucyYgPSBJbWFnZVBhaW50aW5nT3B0aW9ucygpKTsKIAotICAgICAgICB2b2lkIGRy
YXdUaWxlZEltYWdlKEltYWdlKiwgQ29sb3JTcGFjZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5h
dGlvbiwgY29uc3QgRmxvYXRQb2ludCYgc291cmNlLCBjb25zdCBGbG9hdFNpemUmIHRpbGVTaXpl
LCBjb25zdCBGbG9hdFNpemUmIHNwYWNpbmcsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiA9
IEltYWdlUGFpbnRpbmdPcHRpb25zKCkpOwotICAgICAgICB2b2lkIGRyYXdUaWxlZEltYWdlKElt
YWdlKiwgQ29sb3JTcGFjZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwgY29uc3QgRmxv
YXRSZWN0JiBzb3VyY2UsIGNvbnN0IEZsb2F0U2l6ZSYgdGlsZVNjYWxlRmFjdG9yLAorICAgICAg
ICB2b2lkIGRyYXdUaWxlZEltYWdlKEltYWdlJiwgQ29sb3JTcGFjZSwgY29uc3QgRmxvYXRSZWN0
JiBkZXN0aW5hdGlvbiwgY29uc3QgRmxvYXRQb2ludCYgc291cmNlLCBjb25zdCBGbG9hdFNpemUm
IHRpbGVTaXplLCBjb25zdCBGbG9hdFNpemUmIHNwYWNpbmcsIGNvbnN0IEltYWdlUGFpbnRpbmdP
cHRpb25zJiA9IEltYWdlUGFpbnRpbmdPcHRpb25zKCkpOworICAgICAgICB2b2lkIGRyYXdUaWxl
ZEltYWdlKEltYWdlJiwgQ29sb3JTcGFjZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwg
Y29uc3QgRmxvYXRSZWN0JiBzb3VyY2UsIGNvbnN0IEZsb2F0U2l6ZSYgdGlsZVNjYWxlRmFjdG9y
LAogICAgICAgICAgICAgSW1hZ2U6OlRpbGVSdWxlLCBJbWFnZTo6VGlsZVJ1bGUsIGNvbnN0IElt
YWdlUGFpbnRpbmdPcHRpb25zJiA9IEltYWdlUGFpbnRpbmdPcHRpb25zKCkpOwogCi0gICAgICAg
IFdFQkNPUkVfRVhQT1JUIHZvaWQgZHJhd0ltYWdlQnVmZmVyKEltYWdlQnVmZmVyKiwgQ29sb3JT
cGFjZSwgY29uc3QgRmxvYXRQb2ludCYgZGVzdGluYXRpb24sIGNvbnN0IEltYWdlUGFpbnRpbmdP
cHRpb25zJiA9IEltYWdlUGFpbnRpbmdPcHRpb25zKCkpOwotICAgICAgICB2b2lkIGRyYXdJbWFn
ZUJ1ZmZlcihJbWFnZUJ1ZmZlciosIENvbG9yU3BhY2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGlu
YXRpb24sIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiA9IEltYWdlUGFpbnRpbmdPcHRpb25z
KCkpOwotICAgICAgICB2b2lkIGRyYXdJbWFnZUJ1ZmZlcihJbWFnZUJ1ZmZlciosIENvbG9yU3Bh
Y2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24sIGNvbnN0IEZsb2F0UmVjdCYgc291cmNl
LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgPSBJbWFnZVBhaW50aW5nT3B0aW9ucygpKTsK
KyAgICAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkcmF3SW1hZ2VCdWZmZXIoSW1hZ2VCdWZmZXIm
LCBDb2xvclNwYWNlLCBjb25zdCBGbG9hdFBvaW50JiBkZXN0aW5hdGlvbiwgY29uc3QgSW1hZ2VQ
YWludGluZ09wdGlvbnMmID0gSW1hZ2VQYWludGluZ09wdGlvbnMoKSk7CisgICAgICAgIHZvaWQg
ZHJhd0ltYWdlQnVmZmVyKEltYWdlQnVmZmVyJiwgQ29sb3JTcGFjZSwgY29uc3QgRmxvYXRSZWN0
JiBkZXN0aW5hdGlvbiwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmID0gSW1hZ2VQYWludGlu
Z09wdGlvbnMoKSk7CisgICAgICAgIHZvaWQgZHJhd0ltYWdlQnVmZmVyKEltYWdlQnVmZmVyJiwg
Q29sb3JTcGFjZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwgY29uc3QgRmxvYXRSZWN0
JiBzb3VyY2UsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiA9IEltYWdlUGFpbnRpbmdPcHRp
b25zKCkpOwogCiAgICAgICAgIHZvaWQgZHJhd1BhdHRlcm4oSW1hZ2UmLCBjb25zdCBGbG9hdFJl
Y3QmIHNyY1JlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYsIGNvbnN0IEZsb2F0UG9pbnQmIHBo
YXNlLCBjb25zdCBGbG9hdFNpemUmIHNwYWNpbmcsIENvbG9yU3BhY2UsIENvbXBvc2l0ZU9wZXJh
dG9yLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBCbGVuZE1vZGUgPSBCbGVuZE1vZGVOb3Jt
YWwpOwogCkBAIC0zMzMsNyArMzMzLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2
b2lkIGNsaXBPdXRSb3VuZGVkUmVjdChjb25zdCBGbG9hdFJvdW5kZWRSZWN0Jik7CiAgICAgICAg
IHZvaWQgY2xpcFBhdGgoY29uc3QgUGF0aCYsIFdpbmRSdWxlKTsKICAgICAgICAgdm9pZCBjbGlw
Q29udmV4UG9seWdvbihzaXplX3QgbnVtUG9pbnRzLCBjb25zdCBGbG9hdFBvaW50KiwgYm9vbCBh
bnRpYWxpYXMgPSB0cnVlKTsKLSAgICAgICAgdm9pZCBjbGlwVG9JbWFnZUJ1ZmZlcihJbWFnZUJ1
ZmZlciosIGNvbnN0IEZsb2F0UmVjdCYpOworICAgICAgICB2b2lkIGNsaXBUb0ltYWdlQnVmZmVy
KEltYWdlQnVmZmVyJiwgY29uc3QgRmxvYXRSZWN0Jik7CiAgICAgICAgIAogICAgICAgICBJbnRS
ZWN0IGNsaXBCb3VuZHMoKSBjb25zdDsKIApAQCAtNDQzLDcgKzQ0Myw3IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKICAgICAgICAgLy8gQ3JlYXRlIGFuIGltYWdlIGJ1ZmZlciBjb21wYXRpYmxlIHdp
dGggdGhpcyBjb250ZXh0LCB3aXRoIHN1aXRhYmxlIHJlc29sdXRpb24KICAgICAgICAgLy8gZm9y
IGRyYXdpbmcgaW50byB0aGUgYnVmZmVyIGFuZCB0aGVuIGludG8gdGhpcyBjb250ZXh0LgogICAg
ICAgICBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+IGNyZWF0ZUNvbXBhdGlibGVCdWZmZXIo
Y29uc3QgRmxvYXRTaXplJiwgYm9vbCBoYXNBbHBoYSA9IHRydWUpIGNvbnN0OwotICAgICAgICBi
b29sIGlzQ29tcGF0aWJsZVdpdGhCdWZmZXIoSW1hZ2VCdWZmZXIqKSBjb25zdDsKKyAgICAgICAg
Ym9vbCBpc0NvbXBhdGlibGVXaXRoQnVmZmVyKEltYWdlQnVmZmVyJikgY29uc3Q7CiAKICAgICAg
ICAgLy8gVGhpcyBmdW5jdGlvbiBhcHBsaWVzIHRoZSBkZXZpY2Ugc2NhbGUgZmFjdG9yIHRvIHRo
ZSBjb250ZXh0LCBtYWtpbmcgdGhlIGNvbnRleHQgY2FwYWJsZSBvZgogICAgICAgICAvLyBhY3Rp
bmcgYXMgYSBiYXNlLWxldmVsIGNvbnRleHQgZm9yIGEgSGlEUEkgZW52aXJvbm1lbnQuCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9TaGFkb3dCbHVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1NoYWRvd0JsdXIuY3BwCmluZGV4IGQ2
NjIwYzc5MDA4MGE2ZmQwYTdjM2RiMTM5ZDg5ZTAyZmEyOTRlYzcuLjg1YWVlZWZmNzJlZTI3MGU3
NjAwODBkYzYwZWViMmIwNWM4MTc0YTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL1NoYWRvd0JsdXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL1NoYWRvd0JsdXIuY3BwCkBAIC00NzIsNyArNDcyLDcgQEAgdm9pZCBTaGFkb3dC
bHVyOjpkcmF3U2hhZG93QnVmZmVyKEdyYXBoaWNzQ29udGV4dCYgZ3JhcGhpY3NDb250ZXh0KQog
ICAgICAgICAvLyBidXQgd2UgbWF5IG5vdCBoYXZlIGNsZWFyZWQgaXQgYWxsLCBzbyBjbGlwIHRv
IHRoZSBmaWxsZWQgcGFydCBmaXJzdC4KICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LmNsaXAoRmxv
YXRSZWN0KG1fbGF5ZXJPcmlnaW4sIG1fbGF5ZXJTaXplKSk7CiAgICAgfQotICAgIGdyYXBoaWNz
Q29udGV4dC5jbGlwVG9JbWFnZUJ1ZmZlcihtX2xheWVySW1hZ2UsIEZsb2F0UmVjdChtX2xheWVy
T3JpZ2luLCBidWZmZXJTaXplKSk7CisgICAgZ3JhcGhpY3NDb250ZXh0LmNsaXBUb0ltYWdlQnVm
ZmVyKCptX2xheWVySW1hZ2UsIEZsb2F0UmVjdChtX2xheWVyT3JpZ2luLCBidWZmZXJTaXplKSk7
CiAgICAgZ3JhcGhpY3NDb250ZXh0LnNldEZpbGxDb2xvcihtX2NvbG9yLCBtX2NvbG9yU3BhY2Up
OwogCiAgICAgZ3JhcGhpY3NDb250ZXh0LmNsZWFyU2hhZG93KCk7CkBAIC01OTMsNyArNTkzLDcg
QEAgdm9pZCBTaGFkb3dCbHVyOjpkcmF3UmVjdFNoYWRvd1dpdGhvdXRUaWxpbmcoR3JhcGhpY3ND
b250ZXh0JiBncmFwaGljc0NvbnRleHQsIGMKICAgICB9CiAgICAgCiAgICAgZHJhd1NoYWRvd0J1
ZmZlcihncmFwaGljc0NvbnRleHQpOwotICAgIG1fbGF5ZXJJbWFnZSA9IDA7CisgICAgbV9sYXll
ckltYWdlID0gbnVsbHB0cjsKICAgICBTY3JhdGNoQnVmZmVyOjpzaW5nbGV0b24oKS5zY2hlZHVs
ZVNjcmF0Y2hCdWZmZXJQdXJnZSgpOwogfQogCkBAIC02MzQsNyArNjM0LDcgQEAgdm9pZCBTaGFk
b3dCbHVyOjpkcmF3SW5zZXRTaGFkb3dXaXRob3V0VGlsaW5nKEdyYXBoaWNzQ29udGV4dCYgZ3Jh
cGhpY3NDb250ZXh0LAogICAgIH0KICAgICAKICAgICBkcmF3U2hhZG93QnVmZmVyKGdyYXBoaWNz
Q29udGV4dCk7Ci0gICAgbV9sYXllckltYWdlID0gMDsKKyAgICBtX2xheWVySW1hZ2UgPSBudWxs
cHRyOwogICAgIFNjcmF0Y2hCdWZmZXI6OnNpbmdsZXRvbigpLnNjaGVkdWxlU2NyYXRjaEJ1ZmZl
clB1cmdlKCk7CiB9CiAKQEAgLTczMSw3ICs3MzEsNyBAQCB2b2lkIFNoYWRvd0JsdXI6OmRyYXdJ
bnNldFNoYWRvd1dpdGhUaWxpbmcoR3JhcGhpY3NDb250ZXh0JiBncmFwaGljc0NvbnRleHQsIGNv
bgogICAgIAogICAgIGRyYXdMYXllclBpZWNlcyhncmFwaGljc0NvbnRleHQsIGRlc3RIb2xlQm91
bmRzLCBob2xlUmVjdC5yYWRpaSgpLCBlZGdlU2l6ZSwgdGVtcGxhdGVTaXplLCBJbm5lclNoYWRv
dyk7CiAKLSAgICBtX2xheWVySW1hZ2UgPSAwOworICAgIG1fbGF5ZXJJbWFnZSA9IG51bGxwdHI7
CiAgICAgU2NyYXRjaEJ1ZmZlcjo6c2luZ2xldG9uKCkuc2NoZWR1bGVTY3JhdGNoQnVmZmVyUHVy
Z2UoKTsKIH0KIApAQCAtNzc3LDcgKzc3Nyw3IEBAIHZvaWQgU2hhZG93Qmx1cjo6ZHJhd1JlY3RT
aGFkb3dXaXRoVGlsaW5nKEdyYXBoaWNzQ29udGV4dCYgZ3JhcGhpY3NDb250ZXh0LCBjb25zCiAK
ICAgICBkcmF3TGF5ZXJQaWVjZXMoZ3JhcGhpY3NDb250ZXh0LCBzaGFkb3dCb3VuZHMsIHNoYWRv
d2VkUmVjdC5yYWRpaSgpLCBlZGdlU2l6ZSwgdGVtcGxhdGVTaXplLCBPdXRlclNoYWRvdyk7CiAK
LSAgICBtX2xheWVySW1hZ2UgPSAwOworICAgIG1fbGF5ZXJJbWFnZSA9IG51bGxwdHI7CiAgICAg
U2NyYXRjaEJ1ZmZlcjo6c2luZ2xldG9uKCkuc2NoZWR1bGVTY3JhdGNoQnVmZmVyUHVyZ2UoKTsK
IH0KIApAQCAtODE2LDQ2ICs4MTYsNDYgQEAgdm9pZCBTaGFkb3dCbHVyOjpkcmF3TGF5ZXJQaWVj
ZXMoR3JhcGhpY3NDb250ZXh0JiBncmFwaGljc0NvbnRleHQsIGNvbnN0IEZsb2F0UmUKICAgICAv
LyBUb3Agc2lkZS4KICAgICBGbG9hdFJlY3QgdGlsZVJlY3QgPSBGbG9hdFJlY3QobGVmdFNsaWNl
LCAwLCB0ZW1wbGF0ZVNpZGVMZW5ndGgsIHRvcFNsaWNlKTsKICAgICBGbG9hdFJlY3QgZGVzdFJl
Y3QgPSBGbG9hdFJlY3QoY2VudGVyUmVjdC54KCksIGNlbnRlclJlY3QueSgpIC0gdG9wU2xpY2Us
IGNlbnRlclJlY3Qud2lkdGgoKSwgdG9wU2xpY2UpOwotICAgIGdyYXBoaWNzQ29udGV4dC5kcmF3
SW1hZ2VCdWZmZXIobV9sYXllckltYWdlLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBkZXN0UmVjdCwg
dGlsZVJlY3QpOworICAgIGdyYXBoaWNzQ29udGV4dC5kcmF3SW1hZ2VCdWZmZXIoKm1fbGF5ZXJJ
bWFnZSwgQ29sb3JTcGFjZURldmljZVJHQiwgZGVzdFJlY3QsIHRpbGVSZWN0KTsKIAogICAgIC8v
IERyYXcgdGhlIGJvdHRvbSBzaWRlLgogICAgIHRpbGVSZWN0LnNldFkodGVtcGxhdGVTaXplLmhl
aWdodCgpIC0gYm90dG9tU2xpY2UpOwogICAgIHRpbGVSZWN0LnNldEhlaWdodChib3R0b21TbGlj
ZSk7CiAgICAgZGVzdFJlY3Quc2V0WShjZW50ZXJSZWN0Lm1heFkoKSk7CiAgICAgZGVzdFJlY3Qu
c2V0SGVpZ2h0KGJvdHRvbVNsaWNlKTsKLSAgICBncmFwaGljc0NvbnRleHQuZHJhd0ltYWdlQnVm
ZmVyKG1fbGF5ZXJJbWFnZSwgQ29sb3JTcGFjZURldmljZVJHQiwgZGVzdFJlY3QsIHRpbGVSZWN0
KTsKKyAgICBncmFwaGljc0NvbnRleHQuZHJhd0ltYWdlQnVmZmVyKCptX2xheWVySW1hZ2UsIENv
bG9yU3BhY2VEZXZpY2VSR0IsIGRlc3RSZWN0LCB0aWxlUmVjdCk7CiAKICAgICAvLyBMZWZ0IHNp
ZGUuCiAgICAgdGlsZVJlY3QgPSBGbG9hdFJlY3QoMCwgdG9wU2xpY2UsIGxlZnRTbGljZSwgdGVt
cGxhdGVTaWRlTGVuZ3RoKTsKICAgICBkZXN0UmVjdCA9IEZsb2F0UmVjdChjZW50ZXJSZWN0Lngo
KSAtIGxlZnRTbGljZSwgY2VudGVyUmVjdC55KCksIGxlZnRTbGljZSwgY2VudGVyUmVjdC5oZWln
aHQoKSk7Ci0gICAgZ3JhcGhpY3NDb250ZXh0LmRyYXdJbWFnZUJ1ZmZlcihtX2xheWVySW1hZ2Us
IENvbG9yU3BhY2VEZXZpY2VSR0IsIGRlc3RSZWN0LCB0aWxlUmVjdCk7CisgICAgZ3JhcGhpY3ND
b250ZXh0LmRyYXdJbWFnZUJ1ZmZlcigqbV9sYXllckltYWdlLCBDb2xvclNwYWNlRGV2aWNlUkdC
LCBkZXN0UmVjdCwgdGlsZVJlY3QpOwogCiAgICAgLy8gUmlnaHQgc2lkZS4KICAgICB0aWxlUmVj
dC5zZXRYKHRlbXBsYXRlU2l6ZS53aWR0aCgpIC0gcmlnaHRTbGljZSk7CiAgICAgdGlsZVJlY3Qu
c2V0V2lkdGgocmlnaHRTbGljZSk7CiAgICAgZGVzdFJlY3Quc2V0WChjZW50ZXJSZWN0Lm1heFgo
KSk7CiAgICAgZGVzdFJlY3Quc2V0V2lkdGgocmlnaHRTbGljZSk7Ci0gICAgZ3JhcGhpY3NDb250
ZXh0LmRyYXdJbWFnZUJ1ZmZlcihtX2xheWVySW1hZ2UsIENvbG9yU3BhY2VEZXZpY2VSR0IsIGRl
c3RSZWN0LCB0aWxlUmVjdCk7CisgICAgZ3JhcGhpY3NDb250ZXh0LmRyYXdJbWFnZUJ1ZmZlcigq
bV9sYXllckltYWdlLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBkZXN0UmVjdCwgdGlsZVJlY3QpOwog
CiAgICAgLy8gVG9wIGxlZnQgY29ybmVyLgogICAgIHRpbGVSZWN0ID0gRmxvYXRSZWN0KDAsIDAs
IGxlZnRTbGljZSwgdG9wU2xpY2UpOwogICAgIGRlc3RSZWN0ID0gRmxvYXRSZWN0KGNlbnRlclJl
Y3QueCgpIC0gbGVmdFNsaWNlLCBjZW50ZXJSZWN0LnkoKSAtIHRvcFNsaWNlLCBsZWZ0U2xpY2Us
IHRvcFNsaWNlKTsKLSAgICBncmFwaGljc0NvbnRleHQuZHJhd0ltYWdlQnVmZmVyKG1fbGF5ZXJJ
bWFnZSwgQ29sb3JTcGFjZURldmljZVJHQiwgZGVzdFJlY3QsIHRpbGVSZWN0KTsKKyAgICBncmFw
aGljc0NvbnRleHQuZHJhd0ltYWdlQnVmZmVyKCptX2xheWVySW1hZ2UsIENvbG9yU3BhY2VEZXZp
Y2VSR0IsIGRlc3RSZWN0LCB0aWxlUmVjdCk7CiAKICAgICAvLyBUb3AgcmlnaHQgY29ybmVyLgog
ICAgIHRpbGVSZWN0ID0gRmxvYXRSZWN0KHRlbXBsYXRlU2l6ZS53aWR0aCgpIC0gcmlnaHRTbGlj
ZSwgMCwgcmlnaHRTbGljZSwgdG9wU2xpY2UpOwogICAgIGRlc3RSZWN0ID0gRmxvYXRSZWN0KGNl
bnRlclJlY3QubWF4WCgpLCBjZW50ZXJSZWN0LnkoKSAtIHRvcFNsaWNlLCByaWdodFNsaWNlLCB0
b3BTbGljZSk7Ci0gICAgZ3JhcGhpY3NDb250ZXh0LmRyYXdJbWFnZUJ1ZmZlcihtX2xheWVySW1h
Z2UsIENvbG9yU3BhY2VEZXZpY2VSR0IsIGRlc3RSZWN0LCB0aWxlUmVjdCk7CisgICAgZ3JhcGhp
Y3NDb250ZXh0LmRyYXdJbWFnZUJ1ZmZlcigqbV9sYXllckltYWdlLCBDb2xvclNwYWNlRGV2aWNl
UkdCLCBkZXN0UmVjdCwgdGlsZVJlY3QpOwogCiAgICAgLy8gQm90dG9tIHJpZ2h0IGNvcm5lci4K
ICAgICB0aWxlUmVjdCA9IEZsb2F0UmVjdCh0ZW1wbGF0ZVNpemUud2lkdGgoKSAtIHJpZ2h0U2xp
Y2UsIHRlbXBsYXRlU2l6ZS5oZWlnaHQoKSAtIGJvdHRvbVNsaWNlLCByaWdodFNsaWNlLCBib3R0
b21TbGljZSk7CiAgICAgZGVzdFJlY3QgPSBGbG9hdFJlY3QoY2VudGVyUmVjdC5tYXhYKCksIGNl
bnRlclJlY3QubWF4WSgpLCByaWdodFNsaWNlLCBib3R0b21TbGljZSk7Ci0gICAgZ3JhcGhpY3ND
b250ZXh0LmRyYXdJbWFnZUJ1ZmZlcihtX2xheWVySW1hZ2UsIENvbG9yU3BhY2VEZXZpY2VSR0Is
IGRlc3RSZWN0LCB0aWxlUmVjdCk7CisgICAgZ3JhcGhpY3NDb250ZXh0LmRyYXdJbWFnZUJ1ZmZl
cigqbV9sYXllckltYWdlLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBkZXN0UmVjdCwgdGlsZVJlY3Qp
OwogCiAgICAgLy8gQm90dG9tIGxlZnQgY29ybmVyLgogICAgIHRpbGVSZWN0ID0gRmxvYXRSZWN0
KDAsIHRlbXBsYXRlU2l6ZS5oZWlnaHQoKSAtIGJvdHRvbVNsaWNlLCBsZWZ0U2xpY2UsIGJvdHRv
bVNsaWNlKTsKICAgICBkZXN0UmVjdCA9IEZsb2F0UmVjdChjZW50ZXJSZWN0LngoKSAtIGxlZnRT
bGljZSwgY2VudGVyUmVjdC5tYXhZKCksIGxlZnRTbGljZSwgYm90dG9tU2xpY2UpOwotICAgIGdy
YXBoaWNzQ29udGV4dC5kcmF3SW1hZ2VCdWZmZXIobV9sYXllckltYWdlLCBDb2xvclNwYWNlRGV2
aWNlUkdCLCBkZXN0UmVjdCwgdGlsZVJlY3QpOworICAgIGdyYXBoaWNzQ29udGV4dC5kcmF3SW1h
Z2VCdWZmZXIoKm1fbGF5ZXJJbWFnZSwgQ29sb3JTcGFjZURldmljZVJHQiwgZGVzdFJlY3QsIHRp
bGVSZWN0KTsKIH0KIAogCkBAIC05MTUsOSArOTE1LDkgQEAgdm9pZCBTaGFkb3dCbHVyOjplbmRT
aGFkb3dMYXllcihHcmFwaGljc0NvbnRleHQmIGNvbnRleHQpCiAgICAgR3JhcGhpY3NDb250ZXh0
U3RhdGVTYXZlciBzdGF0ZVNhdmUoY29udGV4dCk7CiAKICAgICBjb250ZXh0LmNsZWFyU2hhZG93
KCk7Ci0gICAgY29udGV4dC5kcmF3SW1hZ2VCdWZmZXIobV9sYXllckltYWdlLCBDb2xvclNwYWNl
RGV2aWNlUkdCLCBGbG9hdFJlY3Qocm91bmRlZEludFBvaW50KG1fbGF5ZXJPcmlnaW4pLCBtX2xh
eWVyU2l6ZSksIEZsb2F0UmVjdChGbG9hdFBvaW50KCksIG1fbGF5ZXJTaXplKSwgY29udGV4dC5j
b21wb3NpdGVPcGVyYXRpb24oKSk7CisgICAgY29udGV4dC5kcmF3SW1hZ2VCdWZmZXIoKm1fbGF5
ZXJJbWFnZSwgQ29sb3JTcGFjZURldmljZVJHQiwgRmxvYXRSZWN0KHJvdW5kZWRJbnRQb2ludCht
X2xheWVyT3JpZ2luKSwgbV9sYXllclNpemUpLCBGbG9hdFJlY3QoRmxvYXRQb2ludCgpLCBtX2xh
eWVyU2l6ZSksIGNvbnRleHQuY29tcG9zaXRlT3BlcmF0aW9uKCkpOwogCi0gICAgbV9sYXllcklt
YWdlID0gMDsKKyAgICBtX2xheWVySW1hZ2UgPSBudWxscHRyOwogICAgIFNjcmF0Y2hCdWZmZXI6
OnNpbmdsZXRvbigpLnNjaGVkdWxlU2NyYXRjaEJ1ZmZlclB1cmdlKCk7CiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fp
cm8uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZm
ZXJDYWlyby5jcHAKaW5kZXggYTk3YzU4ZDIxZDA1ZWIwODRjZDAzM2RiODk1Mzc4YmY1MjAyNTcx
OS4uM2U1MjEzZjg2ZGE2NTEyZGU2MWRmYTViZjlmNjVhZTcxYzgyZTNkZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyby5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZm
ZXJDYWlyby5jcHAKQEAgLTE3MCw3ICsxNzAsNyBAQCB2b2lkIEltYWdlQnVmZmVyOjpkcmF3KEdy
YXBoaWNzQ29udGV4dCYgZGVzdGluYXRpb25Db250ZXh0LCBDb2xvclNwYWNlIHN0eWxlQ29sbwog
ewogICAgIEJhY2tpbmdTdG9yZUNvcHkgY29weU1vZGUgPSAmZGVzdGluYXRpb25Db250ZXh0ID09
ICZjb250ZXh0KCkgPyBDb3B5QmFja2luZ1N0b3JlIDogRG9udENvcHlCYWNraW5nU3RvcmU7CiAg
ICAgUmVmUHRyPEltYWdlPiBpbWFnZSA9IGNvcHlJbWFnZShjb3B5TW9kZSk7Ci0gICAgZGVzdGlu
YXRpb25Db250ZXh0LmRyYXdJbWFnZShpbWFnZS5nZXQoKSwgc3R5bGVDb2xvclNwYWNlLCBkZXN0
UmVjdCwgc3JjUmVjdCwgSW1hZ2VQYWludGluZ09wdGlvbnMob3AsIGJsZW5kTW9kZSwgSW1hZ2VP
cmllbnRhdGlvbkRlc2NyaXB0aW9uKCksIHVzZUxvd1F1YWxpdHlTY2FsZSkpOworICAgIGRlc3Rp
bmF0aW9uQ29udGV4dC5kcmF3SW1hZ2UoKmltYWdlLCBzdHlsZUNvbG9yU3BhY2UsIGRlc3RSZWN0
LCBzcmNSZWN0LCBJbWFnZVBhaW50aW5nT3B0aW9ucyhvcCwgYmxlbmRNb2RlLCBJbWFnZU9yaWVu
dGF0aW9uRGVzY3JpcHRpb24oKSwgdXNlTG93UXVhbGl0eVNjYWxlKSk7CiB9CiAKIHZvaWQgSW1h
Z2VCdWZmZXI6OmRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxv
YXRSZWN0JiBzcmNSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0s
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9QREZEb2N1
bWVudEltYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL1BERkRv
Y3VtZW50SW1hZ2UuY3BwCmluZGV4IGY0YjA0ODU3MWVjOTgzOTYxM2M0NGQyNDlkMmI0MmE3OTU0
Y2RmZTkuLjhlZTJiODI0YzU5MmEzMWU4ZmYyYWY3MTVmMzc0NzI2YzBlZDJlMmEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL1BERkRvY3VtZW50SW1hZ2Uu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL1BERkRvY3VtZW50
SW1hZ2UuY3BwCkBAIC0xOTAsNyArMTkwLDcgQEAgdm9pZCBQREZEb2N1bWVudEltYWdlOjpkcmF3
KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LAogICAg
ICAgICBjb250ZXh0LnNldENvbXBvc2l0ZU9wZXJhdGlvbihvcCk7CiAKICAgICAgICAgaWYgKG1f
Y2FjaGVkSW1hZ2VCdWZmZXIpCi0gICAgICAgICAgICBjb250ZXh0LmRyYXdJbWFnZUJ1ZmZlciht
X2NhY2hlZEltYWdlQnVmZmVyLmdldCgpLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBkc3RSZWN0KTsK
KyAgICAgICAgICAgIGNvbnRleHQuZHJhd0ltYWdlQnVmZmVyKCptX2NhY2hlZEltYWdlQnVmZmVy
LCBDb2xvclNwYWNlRGV2aWNlUkdCLCBkc3RSZWN0KTsKICAgICAgICAgZWxzZSB7CiAgICAgICAg
ICAgICB0cmFuc2Zvcm1Db250ZXh0Rm9yUGFpbnRpbmcoY29udGV4dCwgZHN0UmVjdCwgc3JjUmVj
dCk7CiAgICAgICAgICAgICBkcmF3UERGUGFnZShjb250ZXh0KTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVCbGVuZC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQmxlbmQuY3BwCmluZGV4IDA4OWY0
NTA1MjMzOWFlMGIyYmYyOTZhMGZhNzRlNTZjMTFjODdmYjUuLmVkZWY1NzgwMTgyZmNjODBmZTU3
OTUzOTEyZDRhZDk1YTM3NmEwM2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2ZpbHRlcnMvRkVCbGVuZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZmlsdGVycy9GRUJsZW5kLmNwcApAQCAtNzIsMTEgKzcyLDExIEBAIHZvaWQg
RkVCbGVuZDo6cGxhdGZvcm1BcHBseVNvZnR3YXJlKCkKIAogICAgIEltYWdlQnVmZmVyKiBpbWFn
ZUJ1ZmZlciA9IGluLT5hc0ltYWdlQnVmZmVyKCk7CiAgICAgSW1hZ2VCdWZmZXIqIGltYWdlQnVm
ZmVyMiA9IGluMi0+YXNJbWFnZUJ1ZmZlcigpOwotICAgIEFTU0VSVChpbWFnZUJ1ZmZlcik7Ci0g
ICAgQVNTRVJUKGltYWdlQnVmZmVyMik7CisgICAgaWYgKCFpbWFnZUJ1ZmZlciB8fCAhaW1hZ2VC
dWZmZXIyKQorICAgICAgICByZXR1cm47CiAKLSAgICBmaWx0ZXJDb250ZXh0LmRyYXdJbWFnZUJ1
ZmZlcihpbWFnZUJ1ZmZlcjIsIENvbG9yU3BhY2VEZXZpY2VSR0IsIGRyYXdpbmdSZWdpb25PZklu
cHV0SW1hZ2UoaW4yLT5hYnNvbHV0ZVBhaW50UmVjdCgpKSk7Ci0gICAgZmlsdGVyQ29udGV4dC5k
cmF3SW1hZ2VCdWZmZXIoaW1hZ2VCdWZmZXIsIENvbG9yU3BhY2VEZXZpY2VSR0IsIGRyYXdpbmdS
ZWdpb25PZklucHV0SW1hZ2UoaW4tPmFic29sdXRlUGFpbnRSZWN0KCkpLCBJbnRSZWN0KEludFBv
aW50KCksIGltYWdlQnVmZmVyLT5sb2dpY2FsU2l6ZSgpKSwgSW1hZ2VQYWludGluZ09wdGlvbnMo
Q29tcG9zaXRlU291cmNlT3ZlciwgbV9tb2RlKSk7CisgICAgZmlsdGVyQ29udGV4dC5kcmF3SW1h
Z2VCdWZmZXIoKmltYWdlQnVmZmVyMiwgQ29sb3JTcGFjZURldmljZVJHQiwgZHJhd2luZ1JlZ2lv
bk9mSW5wdXRJbWFnZShpbjItPmFic29sdXRlUGFpbnRSZWN0KCkpKTsKKyAgICBmaWx0ZXJDb250
ZXh0LmRyYXdJbWFnZUJ1ZmZlcigqaW1hZ2VCdWZmZXIsIENvbG9yU3BhY2VEZXZpY2VSR0IsIGRy
YXdpbmdSZWdpb25PZklucHV0SW1hZ2UoaW4tPmFic29sdXRlUGFpbnRSZWN0KCkpLCBJbnRSZWN0
KEludFBvaW50KCksIGltYWdlQnVmZmVyLT5sb2dpY2FsU2l6ZSgpKSwgSW1hZ2VQYWludGluZ09w
dGlvbnMoQ29tcG9zaXRlU291cmNlT3ZlciwgbV9tb2RlKSk7CiB9CiAjZW5kaWYKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNvbG9yTWF0
cml4LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb2xv
ck1hdHJpeC5jcHAKaW5kZXggODc2NmFlY2IyMjMzYzlhYTkzYjNmNTk4ZmYyZTYzMTM4ZjI1Njhm
Zi4uNzhmZmRjZTRkNTkxYWQ2YTgxMjJmZTYzODgyMzkzZmY1NTFhZTc3MiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNvbG9yTWF0cml4LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29sb3JN
YXRyaXguY3BwCkBAIC0xNDcsNyArMTQ3LDkgQEAgdm9pZCBGRUNvbG9yTWF0cml4OjpwbGF0Zm9y
bUFwcGx5U29mdHdhcmUoKQogICAgIGlmICghcmVzdWx0SW1hZ2UpCiAgICAgICAgIHJldHVybjsK
IAotICAgIHJlc3VsdEltYWdlLT5jb250ZXh0KCkuZHJhd0ltYWdlQnVmZmVyKGluLT5hc0ltYWdl
QnVmZmVyKCksIENvbG9yU3BhY2VEZXZpY2VSR0IsIGRyYXdpbmdSZWdpb25PZklucHV0SW1hZ2Uo
aW4tPmFic29sdXRlUGFpbnRSZWN0KCkpKTsKKyAgICBJbWFnZUJ1ZmZlciogaW5CdWZmZXIgPSBp
bi0+YXNJbWFnZUJ1ZmZlcigpOworICAgIGlmIChpbkJ1ZmZlcikKKyAgICAgICAgcmVzdWx0SW1h
Z2UtPmNvbnRleHQoKS5kcmF3SW1hZ2VCdWZmZXIoKmluQnVmZmVyLCBDb2xvclNwYWNlRGV2aWNl
UkdCLCBkcmF3aW5nUmVnaW9uT2ZJbnB1dEltYWdlKGluLT5hYnNvbHV0ZVBhaW50UmVjdCgpKSk7
CiAKICAgICBJbnRSZWN0IGltYWdlUmVjdChJbnRQb2ludCgpLCByZXN1bHRJbWFnZS0+bG9naWNh
bFNpemUoKSk7CiAgICAgUmVmUHRyPFVpbnQ4Q2xhbXBlZEFycmF5PiBwaXhlbEFycmF5ID0gcmVz
dWx0SW1hZ2UtPmdldFVubXVsdGlwbGllZEltYWdlRGF0YShpbWFnZVJlY3QpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNvbXBvc2l0ZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29tcG9zaXRl
LmNwcAppbmRleCBmY2M4MWU4NzEzOGZiZGYzZWMxMDc3MDk2OTdiNDFhMzc5YTE5NzlhLi45YTE1
NmY4OTRkZjE0M2VlOGUzODU4Njg3OGQwNzA5MjI4ZTFiZmU5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29tcG9zaXRlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29tcG9zaXRlLmNwcApA
QCAtMjc2LDEzICsyNzYsMTMgQEAgdm9pZCBGRUNvbXBvc2l0ZTo6cGxhdGZvcm1BcHBseVNvZnR3
YXJlKCkKIAogICAgIEltYWdlQnVmZmVyKiBpbWFnZUJ1ZmZlciA9IGluLT5hc0ltYWdlQnVmZmVy
KCk7CiAgICAgSW1hZ2VCdWZmZXIqIGltYWdlQnVmZmVyMiA9IGluMi0+YXNJbWFnZUJ1ZmZlcigp
OwotICAgIEFTU0VSVChpbWFnZUJ1ZmZlcik7Ci0gICAgQVNTRVJUKGltYWdlQnVmZmVyMik7Cisg
ICAgaWYgKCFpbWFnZUJ1ZmZlciB8fCAhaW1hZ2VCdWZmZXIyKQorICAgICAgICByZXR1cm47CiAK
ICAgICBzd2l0Y2ggKG1fdHlwZSkgewogICAgIGNhc2UgRkVDT01QT1NJVEVfT1BFUkFUT1JfT1ZF
UjoKLSAgICAgICAgZmlsdGVyQ29udGV4dC5kcmF3SW1hZ2VCdWZmZXIoaW1hZ2VCdWZmZXIyLCBD
b2xvclNwYWNlRGV2aWNlUkdCLCBkcmF3aW5nUmVnaW9uT2ZJbnB1dEltYWdlKGluMi0+YWJzb2x1
dGVQYWludFJlY3QoKSkpOwotICAgICAgICBmaWx0ZXJDb250ZXh0LmRyYXdJbWFnZUJ1ZmZlcihp
bWFnZUJ1ZmZlciwgQ29sb3JTcGFjZURldmljZVJHQiwgZHJhd2luZ1JlZ2lvbk9mSW5wdXRJbWFn
ZShpbi0+YWJzb2x1dGVQYWludFJlY3QoKSkpOworICAgICAgICBmaWx0ZXJDb250ZXh0LmRyYXdJ
bWFnZUJ1ZmZlcigqaW1hZ2VCdWZmZXIyLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBkcmF3aW5nUmVn
aW9uT2ZJbnB1dEltYWdlKGluMi0+YWJzb2x1dGVQYWludFJlY3QoKSkpOworICAgICAgICBmaWx0
ZXJDb250ZXh0LmRyYXdJbWFnZUJ1ZmZlcigqaW1hZ2VCdWZmZXIsIENvbG9yU3BhY2VEZXZpY2VS
R0IsIGRyYXdpbmdSZWdpb25PZklucHV0SW1hZ2UoaW4tPmFic29sdXRlUGFpbnRSZWN0KCkpKTsK
ICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBGRUNPTVBPU0lURV9PUEVSQVRPUl9JTjogewogICAg
ICAgICAvLyBBcHBsaWVzIG9ubHkgdG8gdGhlIGludGVyc2VjdGVkIHJlZ2lvbi4KQEAgLTI5NCwy
MSArMjk0LDIxIEBAIHZvaWQgRkVDb21wb3NpdGU6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZSgpCiAg
ICAgICAgIEludFJlY3QgYWRqdXN0ZWREZXN0aW5hdGlvblJlY3QgPSBkZXN0aW5hdGlvblJlY3Qg
LSBhYnNvbHV0ZVBhaW50UmVjdCgpLmxvY2F0aW9uKCk7CiAgICAgICAgIEludFJlY3Qgc291cmNl
UmVjdCA9IGRlc3RpbmF0aW9uUmVjdCAtIGluLT5hYnNvbHV0ZVBhaW50UmVjdCgpLmxvY2F0aW9u
KCk7CiAgICAgICAgIEludFJlY3Qgc291cmNlMlJlY3QgPSBkZXN0aW5hdGlvblJlY3QgLSBpbjIt
PmFic29sdXRlUGFpbnRSZWN0KCkubG9jYXRpb24oKTsKLSAgICAgICAgZmlsdGVyQ29udGV4dC5k
cmF3SW1hZ2VCdWZmZXIoaW1hZ2VCdWZmZXIyLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBhZGp1c3Rl
ZERlc3RpbmF0aW9uUmVjdCwgc291cmNlMlJlY3QpOwotICAgICAgICBmaWx0ZXJDb250ZXh0LmRy
YXdJbWFnZUJ1ZmZlcihpbWFnZUJ1ZmZlciwgQ29sb3JTcGFjZURldmljZVJHQiwgYWRqdXN0ZWRE
ZXN0aW5hdGlvblJlY3QsIHNvdXJjZVJlY3QsIENvbXBvc2l0ZVNvdXJjZUluKTsKKyAgICAgICAg
ZmlsdGVyQ29udGV4dC5kcmF3SW1hZ2VCdWZmZXIoKmltYWdlQnVmZmVyMiwgQ29sb3JTcGFjZURl
dmljZVJHQiwgYWRqdXN0ZWREZXN0aW5hdGlvblJlY3QsIHNvdXJjZTJSZWN0KTsKKyAgICAgICAg
ZmlsdGVyQ29udGV4dC5kcmF3SW1hZ2VCdWZmZXIoKmltYWdlQnVmZmVyLCBDb2xvclNwYWNlRGV2
aWNlUkdCLCBhZGp1c3RlZERlc3RpbmF0aW9uUmVjdCwgc291cmNlUmVjdCwgQ29tcG9zaXRlU291
cmNlSW4pOwogICAgICAgICBicmVhazsKICAgICB9CiAgICAgY2FzZSBGRUNPTVBPU0lURV9PUEVS
QVRPUl9PVVQ6Ci0gICAgICAgIGZpbHRlckNvbnRleHQuZHJhd0ltYWdlQnVmZmVyKGltYWdlQnVm
ZmVyLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBkcmF3aW5nUmVnaW9uT2ZJbnB1dEltYWdlKGluLT5h
YnNvbHV0ZVBhaW50UmVjdCgpKSk7Ci0gICAgICAgIGZpbHRlckNvbnRleHQuZHJhd0ltYWdlQnVm
ZmVyKGltYWdlQnVmZmVyMiwgQ29sb3JTcGFjZURldmljZVJHQiwgZHJhd2luZ1JlZ2lvbk9mSW5w
dXRJbWFnZShpbjItPmFic29sdXRlUGFpbnRSZWN0KCkpLCBJbnRSZWN0KEludFBvaW50KCksIGlt
YWdlQnVmZmVyMi0+bG9naWNhbFNpemUoKSksIENvbXBvc2l0ZURlc3RpbmF0aW9uT3V0KTsKKyAg
ICAgICAgZmlsdGVyQ29udGV4dC5kcmF3SW1hZ2VCdWZmZXIoKmltYWdlQnVmZmVyLCBDb2xvclNw
YWNlRGV2aWNlUkdCLCBkcmF3aW5nUmVnaW9uT2ZJbnB1dEltYWdlKGluLT5hYnNvbHV0ZVBhaW50
UmVjdCgpKSk7CisgICAgICAgIGZpbHRlckNvbnRleHQuZHJhd0ltYWdlQnVmZmVyKCppbWFnZUJ1
ZmZlcjIsIENvbG9yU3BhY2VEZXZpY2VSR0IsIGRyYXdpbmdSZWdpb25PZklucHV0SW1hZ2UoaW4y
LT5hYnNvbHV0ZVBhaW50UmVjdCgpKSwgSW50UmVjdChJbnRQb2ludCgpLCBpbWFnZUJ1ZmZlcjIt
PmxvZ2ljYWxTaXplKCkpLCBDb21wb3NpdGVEZXN0aW5hdGlvbk91dCk7CiAgICAgICAgIGJyZWFr
OwogICAgIGNhc2UgRkVDT01QT1NJVEVfT1BFUkFUT1JfQVRPUDoKLSAgICAgICAgZmlsdGVyQ29u
dGV4dC5kcmF3SW1hZ2VCdWZmZXIoaW1hZ2VCdWZmZXIyLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBk
cmF3aW5nUmVnaW9uT2ZJbnB1dEltYWdlKGluMi0+YWJzb2x1dGVQYWludFJlY3QoKSkpOwotICAg
ICAgICBmaWx0ZXJDb250ZXh0LmRyYXdJbWFnZUJ1ZmZlcihpbWFnZUJ1ZmZlciwgQ29sb3JTcGFj
ZURldmljZVJHQiwgZHJhd2luZ1JlZ2lvbk9mSW5wdXRJbWFnZShpbi0+YWJzb2x1dGVQYWludFJl
Y3QoKSksIEludFJlY3QoSW50UG9pbnQoKSwgaW1hZ2VCdWZmZXItPmxvZ2ljYWxTaXplKCkpLCBD
b21wb3NpdGVTb3VyY2VBdG9wKTsKKyAgICAgICAgZmlsdGVyQ29udGV4dC5kcmF3SW1hZ2VCdWZm
ZXIoKmltYWdlQnVmZmVyMiwgQ29sb3JTcGFjZURldmljZVJHQiwgZHJhd2luZ1JlZ2lvbk9mSW5w
dXRJbWFnZShpbjItPmFic29sdXRlUGFpbnRSZWN0KCkpKTsKKyAgICAgICAgZmlsdGVyQ29udGV4
dC5kcmF3SW1hZ2VCdWZmZXIoKmltYWdlQnVmZmVyLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBkcmF3
aW5nUmVnaW9uT2ZJbnB1dEltYWdlKGluLT5hYnNvbHV0ZVBhaW50UmVjdCgpKSwgSW50UmVjdChJ
bnRQb2ludCgpLCBpbWFnZUJ1ZmZlci0+bG9naWNhbFNpemUoKSksIENvbXBvc2l0ZVNvdXJjZUF0
b3ApOwogICAgICAgICBicmVhazsKICAgICBjYXNlIEZFQ09NUE9TSVRFX09QRVJBVE9SX1hPUjoK
LSAgICAgICAgZmlsdGVyQ29udGV4dC5kcmF3SW1hZ2VCdWZmZXIoaW1hZ2VCdWZmZXIyLCBDb2xv
clNwYWNlRGV2aWNlUkdCLCBkcmF3aW5nUmVnaW9uT2ZJbnB1dEltYWdlKGluMi0+YWJzb2x1dGVQ
YWludFJlY3QoKSkpOwotICAgICAgICBmaWx0ZXJDb250ZXh0LmRyYXdJbWFnZUJ1ZmZlcihpbWFn
ZUJ1ZmZlciwgQ29sb3JTcGFjZURldmljZVJHQiwgZHJhd2luZ1JlZ2lvbk9mSW5wdXRJbWFnZShp
bi0+YWJzb2x1dGVQYWludFJlY3QoKSksIEludFJlY3QoSW50UG9pbnQoKSwgaW1hZ2VCdWZmZXIt
PmxvZ2ljYWxTaXplKCkpLCBDb21wb3NpdGVYT1IpOworICAgICAgICBmaWx0ZXJDb250ZXh0LmRy
YXdJbWFnZUJ1ZmZlcigqaW1hZ2VCdWZmZXIyLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBkcmF3aW5n
UmVnaW9uT2ZJbnB1dEltYWdlKGluMi0+YWJzb2x1dGVQYWludFJlY3QoKSkpOworICAgICAgICBm
aWx0ZXJDb250ZXh0LmRyYXdJbWFnZUJ1ZmZlcigqaW1hZ2VCdWZmZXIsIENvbG9yU3BhY2VEZXZp
Y2VSR0IsIGRyYXdpbmdSZWdpb25PZklucHV0SW1hZ2UoaW4tPmFic29sdXRlUGFpbnRSZWN0KCkp
LCBJbnRSZWN0KEludFBvaW50KCksIGltYWdlQnVmZmVyLT5sb2dpY2FsU2l6ZSgpKSwgQ29tcG9z
aXRlWE9SKTsKICAgICAgICAgYnJlYWs7CiAgICAgZGVmYXVsdDoKICAgICAgICAgYnJlYWs7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFRHJv
cFNoYWRvdy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZF
RHJvcFNoYWRvdy5jcHAKaW5kZXggNjMzZWJjNjYwYjFkNzZjYjRiZDk4ODZlMDExZTBiODM3NWI5
NWFiOS4uZGNlNWFhZTI1ZjI5N2FhODhiNmY4YTgzY2JjMmRhODRiMDBjZTk2ZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRURyb3BTaGFkb3cu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVEcm9w
U2hhZG93LmNwcApAQCAtODgsMTAgKzg4LDEyIEBAIHZvaWQgRkVEcm9wU2hhZG93OjpwbGF0Zm9y
bUFwcGx5U29mdHdhcmUoKQogICAgIGRyYXdpbmdSZWdpb25XaXRoT2Zmc2V0Lm1vdmUob2Zmc2V0
KTsKIAogICAgIEltYWdlQnVmZmVyKiBzb3VyY2VJbWFnZSA9IGluLT5hc0ltYWdlQnVmZmVyKCk7
Ci0gICAgQVNTRVJUKHNvdXJjZUltYWdlKTsKKyAgICBpZiAoIXNvdXJjZUltYWdlKQorICAgICAg
ICByZXR1cm47CisKICAgICBHcmFwaGljc0NvbnRleHQmIHJlc3VsdENvbnRleHQgPSByZXN1bHRJ
bWFnZS0+Y29udGV4dCgpOwogICAgIHJlc3VsdENvbnRleHQuc2V0QWxwaGEobV9zaGFkb3dPcGFj
aXR5KTsKLSAgICByZXN1bHRDb250ZXh0LmRyYXdJbWFnZUJ1ZmZlcihzb3VyY2VJbWFnZSwgQ29s
b3JTcGFjZURldmljZVJHQiwgZHJhd2luZ1JlZ2lvbldpdGhPZmZzZXQpOworICAgIHJlc3VsdENv
bnRleHQuZHJhd0ltYWdlQnVmZmVyKCpzb3VyY2VJbWFnZSwgQ29sb3JTcGFjZURldmljZVJHQiwg
ZHJhd2luZ1JlZ2lvbldpdGhPZmZzZXQpOwogICAgIHJlc3VsdENvbnRleHQuc2V0QWxwaGEoMSk7
CiAKICAgICBTaGFkb3dCbHVyIGNvbnRleHRTaGFkb3coYmx1clJhZGl1cywgb2Zmc2V0LCBtX3No
YWRvd0NvbG9yLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKQEAgLTEwOCw3ICsxMTAsNyBAQCB2b2lk
IEZFRHJvcFNoYWRvdzo6cGxhdGZvcm1BcHBseVNvZnR3YXJlKCkKICAgICByZXN1bHRDb250ZXh0
LmZpbGxSZWN0KEZsb2F0UmVjdChGbG9hdFBvaW50KCksIGFic29sdXRlUGFpbnRSZWN0KCkuc2l6
ZSgpKSwgbV9zaGFkb3dDb2xvciwgQ29sb3JTcGFjZURldmljZVJHQik7CiAgICAgcmVzdWx0Q29u
dGV4dC5zZXRDb21wb3NpdGVPcGVyYXRpb24oQ29tcG9zaXRlRGVzdGluYXRpb25PdmVyKTsKIAot
ICAgIHJlc3VsdEltYWdlLT5jb250ZXh0KCkuZHJhd0ltYWdlQnVmZmVyKHNvdXJjZUltYWdlLCBD
b2xvclNwYWNlRGV2aWNlUkdCLCBkcmF3aW5nUmVnaW9uKTsKKyAgICByZXN1bHRJbWFnZS0+Y29u
dGV4dCgpLmRyYXdJbWFnZUJ1ZmZlcigqc291cmNlSW1hZ2UsIENvbG9yU3BhY2VEZXZpY2VSR0Is
IGRyYXdpbmdSZWdpb24pOwogfQogCiB2b2lkIEZFRHJvcFNoYWRvdzo6ZHVtcCgpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFTWVyZ2UuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRU1lcmdlLmNwcApp
bmRleCBmY2NkZDQ1ZTM4NWFlNDIzMGJhM2M5MThkNzBhMjk5Mjc0YWIzMDA1Li5hMDJkOWZkYWUy
NDVhNWZlZGM1MTljODMwMGMwMzMxZDBkNzIxYmU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFTWVyZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVNZXJnZS5jcHAKQEAgLTQ3LDEwICs0Nywx
MiBAQCB2b2lkIEZFTWVyZ2U6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZSgpCiAgICAgaWYgKCFyZXN1
bHRJbWFnZSkKICAgICAgICAgcmV0dXJuOwogCisKICAgICBHcmFwaGljc0NvbnRleHQmIGZpbHRl
ckNvbnRleHQgPSByZXN1bHRJbWFnZS0+Y29udGV4dCgpOwogICAgIGZvciAodW5zaWduZWQgaSA9
IDA7IGkgPCBzaXplOyArK2kpIHsKICAgICAgICAgRmlsdGVyRWZmZWN0KiBpbiA9IGlucHV0RWZm
ZWN0KGkpOwotICAgICAgICBmaWx0ZXJDb250ZXh0LmRyYXdJbWFnZUJ1ZmZlcihpbi0+YXNJbWFn
ZUJ1ZmZlcigpLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBkcmF3aW5nUmVnaW9uT2ZJbnB1dEltYWdl
KGluLT5hYnNvbHV0ZVBhaW50UmVjdCgpKSk7CisgICAgICAgIGlmIChJbWFnZUJ1ZmZlciogaW5C
dWZmZXIgPSBpbi0+YXNJbWFnZUJ1ZmZlcigpKQorICAgICAgICAgICAgZmlsdGVyQ29udGV4dC5k
cmF3SW1hZ2VCdWZmZXIoKmluQnVmZmVyLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBkcmF3aW5nUmVn
aW9uT2ZJbnB1dEltYWdlKGluLT5hYnNvbHV0ZVBhaW50UmVjdCgpKSk7CiAgICAgfQogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFT2Zm
c2V0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVPZmZz
ZXQuY3BwCmluZGV4IGZmZWE2Mzg2ODFhYTRhOTdlODQwODBhMWI3Yzg3ZTg0MzlkNDk5ZmMuLjE4
YTJlNzkxZDU4M2JhY2RjZDFjN2JlNmQwNTdmNTBiOWI1MTkxY2EgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVPZmZzZXQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVPZmZzZXQuY3BwCkBAIC03
OSw3ICs3OSw4IEBAIHZvaWQgRkVPZmZzZXQ6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZSgpCiAgICAg
RmlsdGVyRWZmZWN0KiBpbiA9IGlucHV0RWZmZWN0KDApOwogCiAgICAgSW1hZ2VCdWZmZXIqIHJl
c3VsdEltYWdlID0gY3JlYXRlSW1hZ2VCdWZmZXJSZXN1bHQoKTsKLSAgICBpZiAoIXJlc3VsdElt
YWdlKQorICAgIEltYWdlQnVmZmVyKiBpbkJ1ZmZlciA9IGluLT5hc0ltYWdlQnVmZmVyKCk7Cisg
ICAgaWYgKCFyZXN1bHRJbWFnZSB8fCAhaW5CdWZmZXIpCiAgICAgICAgIHJldHVybjsKIAogICAg
IHNldElzQWxwaGFJbWFnZShpbi0+aXNBbHBoYUltYWdlKCkpOwpAQCAtODcsNyArODgsNyBAQCB2
b2lkIEZFT2Zmc2V0OjpwbGF0Zm9ybUFwcGx5U29mdHdhcmUoKQogICAgIEZsb2F0UmVjdCBkcmF3
aW5nUmVnaW9uID0gZHJhd2luZ1JlZ2lvbk9mSW5wdXRJbWFnZShpbi0+YWJzb2x1dGVQYWludFJl
Y3QoKSk7CiAgICAgRmlsdGVyJiBmaWx0ZXIgPSB0aGlzLT5maWx0ZXIoKTsKICAgICBkcmF3aW5n
UmVnaW9uLm1vdmUoZmlsdGVyLmFwcGx5SG9yaXpvbnRhbFNjYWxlKG1fZHgpLCBmaWx0ZXIuYXBw
bHlWZXJ0aWNhbFNjYWxlKG1fZHkpKTsKLSAgICByZXN1bHRJbWFnZS0+Y29udGV4dCgpLmRyYXdJ
bWFnZUJ1ZmZlcihpbi0+YXNJbWFnZUJ1ZmZlcigpLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBkcmF3
aW5nUmVnaW9uKTsKKyAgICByZXN1bHRJbWFnZS0+Y29udGV4dCgpLmRyYXdJbWFnZUJ1ZmZlcigq
aW5CdWZmZXIsIENvbG9yU3BhY2VEZXZpY2VSR0IsIGRyYXdpbmdSZWdpb24pOwogfQogCiB2b2lk
IEZFT2Zmc2V0OjpkdW1wKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2ZpbHRlcnMvRkVUaWxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2ZpbHRlcnMvRkVUaWxlLmNwcAppbmRleCA1ZGM0N2RkNmVjZjkzMWFlYTVmODA5ZGJiZDc1
NGQwMGEzNWNlYTFiLi5hMTg3Yjc0ZmZmZmRkNWE5NzQ0ZGM2OTdjY2M1ZWVhYzIwZWRmMzAyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFVGls
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRVRp
bGUuY3BwCkBAIC00Nyw3ICs0Nyw4IEBAIHZvaWQgRkVUaWxlOjpwbGF0Zm9ybUFwcGx5U29mdHdh
cmUoKQogICAgIEZpbHRlckVmZmVjdCogaW4gPSBpbnB1dEVmZmVjdCgwKTsKIAogICAgIEltYWdl
QnVmZmVyKiByZXN1bHRJbWFnZSA9IGNyZWF0ZUltYWdlQnVmZmVyUmVzdWx0KCk7Ci0gICAgaWYg
KCFyZXN1bHRJbWFnZSkKKyAgICBJbWFnZUJ1ZmZlciogaW5CdWZmZXIgPSBpbi0+YXNJbWFnZUJ1
ZmZlcigpOworICAgIGlmICghcmVzdWx0SW1hZ2UgfHwgIWluQnVmZmVyKQogICAgICAgICByZXR1
cm47CiAKICAgICBzZXRJc0FscGhhSW1hZ2UoaW4tPmlzQWxwaGFJbWFnZSgpKTsKQEAgLTY5LDcg
KzcwLDcgQEAgdm9pZCBGRVRpbGU6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZSgpCiAKICAgICBHcmFw
aGljc0NvbnRleHQmIHRpbGVJbWFnZUNvbnRleHQgPSB0aWxlSW1hZ2UtPmNvbnRleHQoKTsKICAg
ICB0aWxlSW1hZ2VDb250ZXh0LnRyYW5zbGF0ZSgtaW5NYXhFZmZlY3RMb2NhdGlvbi54KCksIC1p
bk1heEVmZmVjdExvY2F0aW9uLnkoKSk7Ci0gICAgdGlsZUltYWdlQ29udGV4dC5kcmF3SW1hZ2VC
dWZmZXIoaW4tPmFzSW1hZ2VCdWZmZXIoKSwgQ29sb3JTcGFjZURldmljZVJHQiwgaW4tPmFic29s
dXRlUGFpbnRSZWN0KCkubG9jYXRpb24oKSk7CisgICAgdGlsZUltYWdlQ29udGV4dC5kcmF3SW1h
Z2VCdWZmZXIoKmluQnVmZmVyLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBpbi0+YWJzb2x1dGVQYWlu
dFJlY3QoKS5sb2NhdGlvbigpKTsKIAogICAgIGF1dG8gdGlsZUltYWdlQ29weSA9IHRpbGVJbWFn
ZS0+Y29weUltYWdlKENvcHlCYWNraW5nU3RvcmUpOwogICAgIGlmICghdGlsZUltYWdlQ29weSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvU291
cmNlQWxwaGEuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9T
b3VyY2VBbHBoYS5jcHAKaW5kZXggNzBiMWQ1NTY0ZjZmMDNiMTMzOTgwYWJkNTk5YWMzMDY4MGJl
NTYwNi4uMWUzYjkxYTIyNDQ4ZjE4Y2FhNDE2ZmIxMDZhMjg0MGEwMDJhMzFiYiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9Tb3VyY2VBbHBoYS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9Tb3VyY2VB
bHBoYS5jcHAKQEAgLTU0LDExICs1NCwxMiBAQCB2b2lkIFNvdXJjZUFscGhhOjpwbGF0Zm9ybUFw
cGx5U29mdHdhcmUoKQogICAgIEdyYXBoaWNzQ29udGV4dCYgZmlsdGVyQ29udGV4dCA9IHJlc3Vs
dEltYWdlLT5jb250ZXh0KCk7CiAKICAgICBJbWFnZUJ1ZmZlciogaW1hZ2VCdWZmZXIgPSBpbnB1
dEVmZmVjdCgwKS0+YXNJbWFnZUJ1ZmZlcigpOwotICAgIEFTU0VSVChpbWFnZUJ1ZmZlcik7Cisg
ICAgaWYgKCFpbWFnZUJ1ZmZlcikKKyAgICAgICAgcmV0dXJuOwogCiAgICAgRmxvYXRSZWN0IGlt
YWdlUmVjdChGbG9hdFBvaW50KCksIGFic29sdXRlUGFpbnRSZWN0KCkuc2l6ZSgpKTsKICAgICBm
aWx0ZXJDb250ZXh0LmZpbGxSZWN0KGltYWdlUmVjdCwgQ29sb3I6OmJsYWNrLCBDb2xvclNwYWNl
RGV2aWNlUkdCKTsKLSAgICBmaWx0ZXJDb250ZXh0LmRyYXdJbWFnZUJ1ZmZlcihpbWFnZUJ1ZmZl
ciwgQ29sb3JTcGFjZURldmljZVJHQiwgSW50UG9pbnQoKSwgQ29tcG9zaXRlRGVzdGluYXRpb25J
bik7CisgICAgZmlsdGVyQ29udGV4dC5kcmF3SW1hZ2VCdWZmZXIoKmltYWdlQnVmZmVyLCBDb2xv
clNwYWNlRGV2aWNlUkdCLCBJbnRQb2ludCgpLCBDb21wb3NpdGVEZXN0aW5hdGlvbkluKTsKIH0K
IAogdm9pZCBTb3VyY2VBbHBoYTo6ZHVtcCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL1NvdXJjZUdyYXBoaWMuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9Tb3VyY2VHcmFwaGljLmNwcAppbmRleCAzMTk4
YjAzNzgzYTVjMmI0OWFlYTllZWIzZTlmODk4MjI4M2RiYzgzLi5kZjRlZTZmMDc5YzU0NTc1NDU5
ZTg0MzY5MjY1OWQ2Y2QzMzAwZWJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9maWx0ZXJzL1NvdXJjZUdyYXBoaWMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvU291cmNlR3JhcGhpYy5jcHAKQEAgLTQ5LDEyICs0
OSwxNCBAQCB2b2lkIFNvdXJjZUdyYXBoaWM6OmRldGVybWluZUFic29sdXRlUGFpbnRSZWN0KCkK
IAogdm9pZCBTb3VyY2VHcmFwaGljOjpwbGF0Zm9ybUFwcGx5U29mdHdhcmUoKQogewotICAgIElt
YWdlQnVmZmVyKiByZXN1bHRJbWFnZSA9IGNyZWF0ZUltYWdlQnVmZmVyUmVzdWx0KCk7CiAgICAg
RmlsdGVyJiBmaWx0ZXIgPSB0aGlzLT5maWx0ZXIoKTsKLSAgICBpZiAoIXJlc3VsdEltYWdlIHx8
ICFmaWx0ZXIuc291cmNlSW1hZ2UoKSkKKworICAgIEltYWdlQnVmZmVyKiByZXN1bHRJbWFnZSA9
IGNyZWF0ZUltYWdlQnVmZmVyUmVzdWx0KCk7CisgICAgSW1hZ2VCdWZmZXIqIHNvdXJjZUltYWdl
ID0gZmlsdGVyLnNvdXJjZUltYWdlKCk7CisgICAgaWYgKCFyZXN1bHRJbWFnZSB8fCAhc291cmNl
SW1hZ2UpCiAgICAgICAgIHJldHVybjsKIAotICAgIHJlc3VsdEltYWdlLT5jb250ZXh0KCkuZHJh
d0ltYWdlQnVmZmVyKGZpbHRlci5zb3VyY2VJbWFnZSgpLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBJ
bnRQb2ludCgpKTsKKyAgICByZXN1bHRJbWFnZS0+Y29udGV4dCgpLmRyYXdJbWFnZUJ1ZmZlcigq
c291cmNlSW1hZ2UsIENvbG9yU3BhY2VEZXZpY2VSR0IsIEludFBvaW50KCkpOwogfQogCiB2b2lk
IFNvdXJjZUdyYXBoaWM6OmR1bXAoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWFjL1RoZW1lTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1RoZW1lTWFj
Lm1tCmluZGV4IGZmMjlhMWRlY2Q4YjcyMGQ0NGIxNDIzMDlhYWNjZTNiYmVlZGExOGYuLmU3NTkx
YmVkYmY0ZDVlMGQ2OWU3MGQ3M2U3MDQyOWVkZjgxYmExNWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21hYy9UaGVtZU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tYWMvVGhlbWVNYWMubW0KQEAgLTY4NiwxMSArNjg2LDEzIEBAIGJvb2wgVGhlbWVNYWM6
OmRyYXdDZWxsT3JGb2N1c1JpbmdXaXRoVmlld0ludG9Db250ZXh0KE5TQ2VsbCAqY2VsbCwgR3Jh
cGhpY3NDb250CiAgICAgaWYgKHVzZUltYWdlQnVmZmVyKSB7CiAgICAgICAgIE5TUmVjdCBpbWFn
ZUJ1ZmZlckRyYXdSZWN0ID0gTlNSZWN0KEZsb2F0UmVjdChidXR0b25Gb2N1c1JlY3RPdXRsaW5l
V2lkdGgsIGJ1dHRvbkZvY3VzUmVjdE91dGxpbmVXaWR0aCwgcmVjdC53aWR0aCgpLCByZWN0Lmhl
aWdodCgpKSk7CiAgICAgICAgIGF1dG8gaW1hZ2VCdWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRl
Q29tcGF0aWJsZUJ1ZmZlcihyZWN0LnNpemUoKSArIDIgKiBGbG9hdFNpemUoYnV0dG9uRm9jdXNS
ZWN0T3V0bGluZVdpZHRoLCBidXR0b25Gb2N1c1JlY3RPdXRsaW5lV2lkdGgpLCBkZXZpY2VTY2Fs
ZUZhY3RvciwgQ29sb3JTcGFjZVNSR0IsIGNvbnRleHQsIGZhbHNlKTsKKyAgICAgICAgaWYgKCFp
bWFnZUJ1ZmZlcikKKyAgICAgICAgICAgIHJldHVybiBuZWVkc1JlcGFpbnQ7CiAgICAgICAgIHsK
ICAgICAgICAgICAgIExvY2FsQ3VycmVudEdyYXBoaWNzQ29udGV4dCBsb2NhbENvbnRleHQoaW1h
Z2VCdWZmZXItPmNvbnRleHQoKSk7CiAgICAgICAgICAgICBuZWVkc1JlcGFpbnQgPSBkcmF3Q2Vs
bE9yRm9jdXNSaW5nSW50b1JlY3RXaXRoVmlldyhjZWxsLCBpbWFnZUJ1ZmZlckRyYXdSZWN0LCB2
aWV3LCBkcmF3QnV0dG9uQ2VsbCwgZHJhd0ZvY3VzUmluZyk7CiAgICAgICAgIH0KLSAgICAgICAg
Y29udGV4dC5kcmF3SW1hZ2VCdWZmZXIoaW1hZ2VCdWZmZXIuZ2V0KCksIENvbG9yU3BhY2VTUkdC
LCByZWN0LmxvY2F0aW9uKCkgLSBGbG9hdFNpemUoYnV0dG9uRm9jdXNSZWN0T3V0bGluZVdpZHRo
LCBidXR0b25Gb2N1c1JlY3RPdXRsaW5lV2lkdGgpKTsKKyAgICAgICAgY29udGV4dC5kcmF3SW1h
Z2VCdWZmZXIoKmltYWdlQnVmZmVyLCBDb2xvclNwYWNlU1JHQiwgcmVjdC5sb2NhdGlvbigpIC0g
RmxvYXRTaXplKGJ1dHRvbkZvY3VzUmVjdE91dGxpbmVXaWR0aCwgYnV0dG9uRm9jdXNSZWN0T3V0
bGluZVdpZHRoKSk7CiAgICAgICAgIHJldHVybiBuZWVkc1JlcGFpbnQ7CiAgICAgfQogICAgIGlm
IChkcmF3QnV0dG9uQ2VsbCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9G
aWx0ZXJFZmZlY3RSZW5kZXJlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvRmlsdGVy
RWZmZWN0UmVuZGVyZXIuY3BwCmluZGV4IDI1ZWQxZDU0MTk3YTBjZmEyYTNhZGY3NzEyYjc0NDY0
MWFmOTIzZjkuLmZkNTA5ZThlYWQ1OTY5N2Q0NjBkMzhkMzEzZTNlMDQxNmZhNjU4NzcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9GaWx0ZXJFZmZlY3RSZW5kZXJlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0ZpbHRlckVmZmVjdFJlbmRlcmVyLmNwcApA
QCAtNDI5LDggKzQyOSwxMCBAQCB2b2lkIEZpbHRlckVmZmVjdFJlbmRlcmVySGVscGVyOjphcHBs
eUZpbHRlckVmZmVjdChHcmFwaGljc0NvbnRleHQmIGRlc3RpbmF0aW9uQwogICAgIExheW91dFJl
Y3QgZGVzdFJlY3QgPSBmaWx0ZXItPm91dHB1dFJlY3QoKTsKICAgICBkZXN0UmVjdC5tb3ZlKG1f
cGFpbnRPZmZzZXQueCgpLCBtX3BhaW50T2Zmc2V0LnkoKSk7CiAKLSAgICBkZXN0aW5hdGlvbkNv
bnRleHQuZHJhd0ltYWdlQnVmZmVyKGZpbHRlci0+b3V0cHV0KCksIG1fcmVuZGVyTGF5ZXItPnJl
bmRlcmVyKCkuc3R5bGUoKS5jb2xvclNwYWNlKCksCi0gICAgICAgIHNuYXBSZWN0VG9EZXZpY2VQ
aXhlbHMoZGVzdFJlY3QsIG1fcmVuZGVyTGF5ZXItPnJlbmRlcmVyKCkuZG9jdW1lbnQoKS5kZXZp
Y2VTY2FsZUZhY3RvcigpKSk7CisgICAgaWYgKEltYWdlQnVmZmVyKiBvdXRwdXRCdWZmZXIgPSBm
aWx0ZXItPm91dHB1dCgpKSB7CisgICAgICAgIGRlc3RpbmF0aW9uQ29udGV4dC5kcmF3SW1hZ2VC
dWZmZXIoKm91dHB1dEJ1ZmZlciwgbV9yZW5kZXJMYXllci0+cmVuZGVyZXIoKS5zdHlsZSgpLmNv
bG9yU3BhY2UoKSwKKyAgICAgICAgICAgIHNuYXBSZWN0VG9EZXZpY2VQaXhlbHMoZGVzdFJlY3Qs
IG1fcmVuZGVyTGF5ZXItPnJlbmRlcmVyKCkuZG9jdW1lbnQoKS5kZXZpY2VTY2FsZUZhY3Rvcigp
KSk7CisgICAgfQogCiAgICAgZmlsdGVyLT5jbGVhckludGVybWVkaWF0ZVJlc3VsdHMoKTsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbWFnZVF1YWxpdHlDb250cm9s
bGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbWFnZVF1YWxpdHlDb250cm9sbGVy
LmNwcAppbmRleCA2ZmI4MzQyNDI3NDc5NDQxOGNhODAzM2Q3YjRkYWQ3MWI3ZDEzNGFlLi5hMGMy
MTE0NWI4NDU4ODkzMjJhMTRkYjQ3YmJjYjg5NDUwMjcwMDE0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvSW1hZ2VRdWFsaXR5Q29udHJvbGxlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL0ltYWdlUXVhbGl0eUNvbnRyb2xsZXIuY3BwCkBAIC05OSwxMSAr
OTksMTEgQEAgdm9pZCBJbWFnZVF1YWxpdHlDb250cm9sbGVyOjpyZXN0YXJ0VGltZXIoKQogICAg
IG1fdGltZXIuc3RhcnRPbmVTaG90KGNMb3dRdWFsaXR5VGltZVRocmVzaG9sZCk7CiB9CiAKLWJv
b2wgSW1hZ2VRdWFsaXR5Q29udHJvbGxlcjo6c2hvdWxkUGFpbnRBdExvd1F1YWxpdHkoR3JhcGhp
Y3NDb250ZXh0JiBjb250ZXh0LCBSZW5kZXJCb3hNb2RlbE9iamVjdCogb2JqZWN0LCBJbWFnZSog
aW1hZ2UsIGNvbnN0IHZvaWQgKmxheWVyLCBjb25zdCBMYXlvdXRTaXplJiBzaXplKQorYm9vbCBJ
bWFnZVF1YWxpdHlDb250cm9sbGVyOjpzaG91bGRQYWludEF0TG93UXVhbGl0eShHcmFwaGljc0Nv
bnRleHQmIGNvbnRleHQsIFJlbmRlckJveE1vZGVsT2JqZWN0KiBvYmplY3QsIEltYWdlJiBpbWFn
ZSwgY29uc3Qgdm9pZCAqbGF5ZXIsIGNvbnN0IExheW91dFNpemUmIHNpemUpCiB7CiAgICAgLy8g
SWYgdGhlIGltYWdlIGlzIG5vdCBhIGJpdG1hcCBpbWFnZSwgdGhlbiBub25lIG9mIHRoaXMgaXMg
cmVsZXZhbnQgYW5kIHdlIGp1c3QgcGFpbnQgYXQgaGlnaAogICAgIC8vIHF1YWxpdHkuCi0gICAg
aWYgKCFpbWFnZSB8fCAhKGltYWdlLT5pc0JpdG1hcEltYWdlKCkgfHwgaW1hZ2UtPmlzUERGRG9j
dW1lbnRJbWFnZSgpKSB8fCBjb250ZXh0LnBhaW50aW5nRGlzYWJsZWQoKSkKKyAgICBpZiAoIShp
bWFnZS5pc0JpdG1hcEltYWdlKCkgfHwgaW1hZ2UuaXNQREZEb2N1bWVudEltYWdlKCkpIHx8IGNv
bnRleHQucGFpbnRpbmdEaXNhYmxlZCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBz
d2l0Y2ggKG9iamVjdC0+c3R5bGUoKS5pbWFnZVJlbmRlcmluZygpKSB7CkBAIC0xMTgsNyArMTE4
LDcgQEAgYm9vbCBJbWFnZVF1YWxpdHlDb250cm9sbGVyOjpzaG91bGRQYWludEF0TG93UXVhbGl0
eShHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIFIKIAogICAgIC8vIE1ha2Ugc3VyZSB0byB1c2Ug
dGhlIHVuem9vbWVkIGltYWdlIHNpemUsIHNpbmNlIGlmIGEgZnVsbCBwYWdlIHpvb20gaXMgaW4g
ZWZmZWN0LCB0aGUgaW1hZ2UKICAgICAvLyBpcyBhY3R1YWxseSBiZWluZyBzY2FsZWQuCi0gICAg
SW50U2l6ZSBpbWFnZVNpemUoaW1hZ2UtPndpZHRoKCksIGltYWdlLT5oZWlnaHQoKSk7CisgICAg
SW50U2l6ZSBpbWFnZVNpemUoaW1hZ2Uud2lkdGgoKSwgaW1hZ2UuaGVpZ2h0KCkpOwogCiAgICAg
Ly8gTG9vayBvdXJzZWx2ZXMgdXAgaW4gdGhlIGhhc2h0YWJsZXMuCiAgICAgYXV0byBpID0gbV9v
YmplY3RMYXllclNpemVNYXAuZmluZChvYmplY3QpOwpAQCAtMTU2LDcgKzE1Niw3IEBAIGJvb2wg
SW1hZ2VRdWFsaXR5Q29udHJvbGxlcjo6c2hvdWxkUGFpbnRBdExvd1F1YWxpdHkoR3JhcGhpY3ND
b250ZXh0JiBjb250ZXh0LCBSCiAKICAgICAvLyBUaGVyZSBpcyBubyBuZWVkIHRvIGhhc2ggc2Nh
bGVkIGltYWdlcyB0aGF0IGFsd2F5cyB1c2UgbG93IHF1YWxpdHkgbW9kZSB3aGVuIHRoZSBwYWdl
IGRlbWFuZHMgaXQuIFRoaXMgaXMgdGhlIGlDaGF0IGNhc2UuCiAgICAgaWYgKG1fcmVuZGVyVmll
dy5mcmFtZSgpLnBhZ2UoKS0+aW5Mb3dRdWFsaXR5SW1hZ2VJbnRlcnBvbGF0aW9uTW9kZSgpKSB7
Ci0gICAgICAgIGRvdWJsZSB0b3RhbFBpeGVscyA9IHN0YXRpY19jYXN0PGRvdWJsZT4oaW1hZ2Ut
PndpZHRoKCkpICogc3RhdGljX2Nhc3Q8ZG91YmxlPihpbWFnZS0+aGVpZ2h0KCkpOworICAgICAg
ICBkb3VibGUgdG90YWxQaXhlbHMgPSBzdGF0aWNfY2FzdDxkb3VibGU+KGltYWdlLndpZHRoKCkp
ICogc3RhdGljX2Nhc3Q8ZG91YmxlPihpbWFnZS5oZWlnaHQoKSk7CiAgICAgICAgIGlmICh0b3Rh
bFBpeGVscyA+IGNJbnRlcnBvbGF0aW9uQ3V0b2ZmKQogICAgICAgICAgICAgcmV0dXJuIHRydWU7
CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0ltYWdlUXVhbGl0
eUNvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbWFnZVF1YWxpdHlDb250
cm9sbGVyLmgKaW5kZXggZDE0ZGM0OWFhNzlhZjMxNWRhYzhlMWQ1MTIxYzM0MDI2MGVmNjVlMy4u
NWY3MTE2NDc1MTBjZDIyYjk2MjU5MjY3MzU4NGY4NmMwODFmNTg5YyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0ltYWdlUXVhbGl0eUNvbnRyb2xsZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvSW1hZ2VRdWFsaXR5Q29udHJvbGxlci5oCkBAIC00Myw3ICs0
Myw3IEBAIGNsYXNzIEltYWdlUXVhbGl0eUNvbnRyb2xsZXIgewogcHVibGljOgogICAgIGV4cGxp
Y2l0IEltYWdlUXVhbGl0eUNvbnRyb2xsZXIoY29uc3QgUmVuZGVyVmlldyYpOwogCi0gICAgYm9v
bCBzaG91bGRQYWludEF0TG93UXVhbGl0eShHcmFwaGljc0NvbnRleHQmLCBSZW5kZXJCb3hNb2Rl
bE9iamVjdCosIEltYWdlKiwgY29uc3Qgdm9pZCogbGF5ZXIsIGNvbnN0IExheW91dFNpemUmKTsK
KyAgICBib29sIHNob3VsZFBhaW50QXRMb3dRdWFsaXR5KEdyYXBoaWNzQ29udGV4dCYsIFJlbmRl
ckJveE1vZGVsT2JqZWN0KiwgSW1hZ2UmLCBjb25zdCB2b2lkKiBsYXllciwgY29uc3QgTGF5b3V0
U2l6ZSYpOwogICAgIHZvaWQgcmVuZGVyZXJXaWxsQmVEZXN0cm95ZWQoUmVuZGVyQm94TW9kZWxP
YmplY3QmIHJlbmRlcmVyKSB7IHJlbW92ZU9iamVjdCgmcmVuZGVyZXIpOyB9CiAKIHByaXZhdGU6
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmpl
Y3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmNw
cAppbmRleCAxZWRjNWFmYzk0YzFkOWIzMGFhZTAxMDkxODVjNTE4YzM1MTI5MmU4Li5kMmFkZTA5
MDgwYWRlNGExYjJlNWM0MDNmZWZhOTI1ZGNhZTlmZWVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5jcHAKQEAgLTE2MSw3ICsxNjEsNyBA
QCB2b2lkIFJlbmRlckJveE1vZGVsT2JqZWN0OjpzdXNwZW5kQW5pbWF0aW9ucyhkb3VibGUgdGlt
ZSkKICAgICBsYXllcigpLT5iYWNraW5nKCktPnN1c3BlbmRBbmltYXRpb25zKHRpbWUpOwogfQog
Ci1ib29sIFJlbmRlckJveE1vZGVsT2JqZWN0OjpzaG91bGRQYWludEF0TG93UXVhbGl0eShHcmFw
aGljc0NvbnRleHQmIGNvbnRleHQsIEltYWdlKiBpbWFnZSwgY29uc3Qgdm9pZCogbGF5ZXIsIGNv
bnN0IExheW91dFNpemUmIHNpemUpCitib29sIFJlbmRlckJveE1vZGVsT2JqZWN0OjpzaG91bGRQ
YWludEF0TG93UXVhbGl0eShHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIEltYWdlJiBpbWFnZSwg
Y29uc3Qgdm9pZCogbGF5ZXIsIGNvbnN0IExheW91dFNpemUmIHNpemUpCiB7CiAgICAgcmV0dXJu
IHZpZXcoKS5pbWFnZVF1YWxpdHlDb250cm9sbGVyKCkuc2hvdWxkUGFpbnRBdExvd1F1YWxpdHko
Y29udGV4dCwgdGhpcywgaW1hZ2UsIGxheWVyLCBzaXplKTsKIH0KQEAgLTgzMCwxOCArODMwLDE3
IEBAIHZvaWQgUmVuZGVyQm94TW9kZWxPYmplY3Q6OnBhaW50RmlsbExheWVyRXh0ZW5kZWQoY29u
c3QgUGFpbnRJbmZvJiBwYWludEluZm8sIGNvCiAgICAgaWYgKCFiYXNlQmdDb2xvck9ubHkgJiYg
c2hvdWxkUGFpbnRCYWNrZ3JvdW5kSW1hZ2UpIHsKICAgICAgICAgQmFja2dyb3VuZEltYWdlR2Vv
bWV0cnkgZ2VvbWV0cnkgPSBjYWxjdWxhdGVCYWNrZ3JvdW5kSW1hZ2VHZW9tZXRyeShwYWludElu
Zm8ucGFpbnRDb250YWluZXIsICpiZ0xheWVyLCByZWN0LmxvY2F0aW9uKCksIHNjcm9sbGVkUGFp
bnRSZWN0LCBiYWNrZ3JvdW5kT2JqZWN0KTsKICAgICAgICAgZ2VvbWV0cnkuY2xpcChMYXlvdXRS
ZWN0KHBpeGVsU25hcHBlZFJlY3QpKTsKLSAgICAgICAgaWYgKCFnZW9tZXRyeS5kZXN0UmVjdCgp
LmlzRW1wdHkoKSkgeworICAgICAgICBSZWZQdHI8SW1hZ2U+IGltYWdlOworICAgICAgICBpZiAo
IWdlb21ldHJ5LmRlc3RSZWN0KCkuaXNFbXB0eSgpICYmIChpbWFnZSA9IGJnSW1hZ2UtPmltYWdl
KGJhY2tncm91bmRPYmplY3QgPyBiYWNrZ3JvdW5kT2JqZWN0IDogdGhpcywgZ2VvbWV0cnkudGls
ZVNpemUoKSkpKSB7CiAgICAgICAgICAgICBDb21wb3NpdGVPcGVyYXRvciBjb21wb3NpdGVPcCA9
IG9wID09IENvbXBvc2l0ZVNvdXJjZU92ZXIgPyBiZ0xheWVyLT5jb21wb3NpdGUoKSA6IG9wOwot
ICAgICAgICAgICAgYXV0byBjbGllbnRGb3JCYWNrZ3JvdW5kSW1hZ2UgPSBiYWNrZ3JvdW5kT2Jq
ZWN0ID8gYmFja2dyb3VuZE9iamVjdCA6IHRoaXM7Ci0gICAgICAgICAgICBSZWZQdHI8SW1hZ2U+
IGltYWdlID0gYmdJbWFnZS0+aW1hZ2UoY2xpZW50Rm9yQmFja2dyb3VuZEltYWdlLCBnZW9tZXRy
eS50aWxlU2l6ZSgpKTsKICAgICAgICAgICAgIGNvbnRleHQuc2V0RHJhd0x1bWluYW5jZU1hc2so
YmdMYXllci0+bWFza1NvdXJjZVR5cGUoKSA9PSBNYXNrTHVtaW5hbmNlKTsKLSAgICAgICAgICAg
IGJvb2wgdXNlTG93UXVhbGl0eVNjYWxpbmcgPSBzaG91bGRQYWludEF0TG93UXVhbGl0eShjb250
ZXh0LCBpbWFnZS5nZXQoKSwgYmdMYXllciwgZ2VvbWV0cnkudGlsZVNpemUoKSk7Ci0gICAgICAg
ICAgICBjb250ZXh0LmRyYXdUaWxlZEltYWdlKGltYWdlLmdldCgpLCBzdHlsZSgpLmNvbG9yU3Bh
Y2UoKSwgZ2VvbWV0cnkuZGVzdFJlY3QoKSwgdG9MYXlvdXRQb2ludChnZW9tZXRyeS5yZWxhdGl2
ZVBoYXNlKCkpLCBnZW9tZXRyeS50aWxlU2l6ZSgpLCBnZW9tZXRyeS5zcGFjZVNpemUoKSwgSW1h
Z2VQYWludGluZ09wdGlvbnMoY29tcG9zaXRlT3AsIGJnTGF5ZXItPmJsZW5kTW9kZSgpLCBJbWFn
ZU9yaWVudGF0aW9uRGVzY3JpcHRpb24oKSwgdXNlTG93UXVhbGl0eVNjYWxpbmcpKTsKKyAgICAg
ICAgICAgIGJvb2wgdXNlTG93UXVhbGl0eVNjYWxpbmcgPSBzaG91bGRQYWludEF0TG93UXVhbGl0
eShjb250ZXh0LCAqaW1hZ2UsIGJnTGF5ZXIsIGdlb21ldHJ5LnRpbGVTaXplKCkpOworICAgICAg
ICAgICAgY29udGV4dC5kcmF3VGlsZWRJbWFnZSgqaW1hZ2UsIHN0eWxlKCkuY29sb3JTcGFjZSgp
LCBnZW9tZXRyeS5kZXN0UmVjdCgpLCB0b0xheW91dFBvaW50KGdlb21ldHJ5LnJlbGF0aXZlUGhh
c2UoKSksIGdlb21ldHJ5LnRpbGVTaXplKCksIGdlb21ldHJ5LnNwYWNlU2l6ZSgpLCBJbWFnZVBh
aW50aW5nT3B0aW9ucyhjb21wb3NpdGVPcCwgYmdMYXllci0+YmxlbmRNb2RlKCksIEltYWdlT3Jp
ZW50YXRpb25EZXNjcmlwdGlvbigpLCB1c2VMb3dRdWFsaXR5U2NhbGluZykpOwogICAgICAgICB9
CiAgICAgfQogCi0gICAgaWYgKGJnTGF5ZXItPmNsaXAoKSA9PSBUZXh0RmlsbEJveCkgewotICAg
ICAgICBjb250ZXh0LmRyYXdJbWFnZUJ1ZmZlcihtYXNrSW1hZ2UuZ2V0KCksIENvbG9yU3BhY2VE
ZXZpY2VSR0IsIG1hc2tSZWN0LCBDb21wb3NpdGVEZXN0aW5hdGlvbkluKTsKKyAgICBpZiAobWFz
a0ltYWdlICYmIGJnTGF5ZXItPmNsaXAoKSA9PSBUZXh0RmlsbEJveCkgeworICAgICAgICBjb250
ZXh0LmRyYXdJbWFnZUJ1ZmZlcigqbWFza0ltYWdlLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBtYXNr
UmVjdCwgQ29tcG9zaXRlRGVzdGluYXRpb25Jbik7CiAgICAgICAgIGNvbnRleHQuZW5kVHJhbnNw
YXJlbmN5TGF5ZXIoKTsKICAgICB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJCb3hNb2RlbE9iamVjdC5oCmluZGV4IDViMTA4OWVkNjBlNDNmMmM2NDAzOGVlOWRmNjcz
YmM3N2EyNDdiNGMuLmI2ZjZkNjM0ZmE0Zjc1OTUwMDE2ZjAwMjcyYjRmYzA1OTQ5YTQ1ODMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5oCkBA
IC0yNTEsNyArMjUxLDcgQEAgcHJvdGVjdGVkOgogICAgIFJvdW5kZWRSZWN0IGJhY2tncm91bmRS
b3VuZGVkUmVjdEFkanVzdGVkRm9yQmxlZWRBdm9pZGFuY2UoY29uc3QgR3JhcGhpY3NDb250ZXh0
JiwgY29uc3QgTGF5b3V0UmVjdCYsIEJhY2tncm91bmRCbGVlZEF2b2lkYW5jZSwgSW5saW5lRmxv
d0JveCosIGNvbnN0IExheW91dFNpemUmLCBib29sIGluY2x1ZGVMb2dpY2FsTGVmdEVkZ2UsIGJv
b2wgaW5jbHVkZUxvZ2ljYWxSaWdodEVkZ2UpIGNvbnN0OwogICAgIExheW91dFJlY3QgYm9yZGVy
SW5uZXJSZWN0QWRqdXN0ZWRGb3JCbGVlZEF2b2lkYW5jZShjb25zdCBHcmFwaGljc0NvbnRleHQm
LCBjb25zdCBMYXlvdXRSZWN0JiwgQmFja2dyb3VuZEJsZWVkQXZvaWRhbmNlKSBjb25zdDsKIAot
ICAgIGJvb2wgc2hvdWxkUGFpbnRBdExvd1F1YWxpdHkoR3JhcGhpY3NDb250ZXh0JiwgSW1hZ2Uq
LCBjb25zdCB2b2lkKiwgY29uc3QgTGF5b3V0U2l6ZSYpOworICAgIGJvb2wgc2hvdWxkUGFpbnRB
dExvd1F1YWxpdHkoR3JhcGhpY3NDb250ZXh0JiwgSW1hZ2UmLCBjb25zdCB2b2lkKiwgY29uc3Qg
TGF5b3V0U2l6ZSYpOwogCiAgICAgUmVuZGVyQm94TW9kZWxPYmplY3QqIGNvbnRpbnVhdGlvbigp
IGNvbnN0OwogICAgIHZvaWQgc2V0Q29udGludWF0aW9uKFJlbmRlckJveE1vZGVsT2JqZWN0Kik7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRW1iZWRkZWRPYmpl
Y3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVtYmVkZGVkT2JqZWN0LmNw
cAppbmRleCA4OGI0NTY0ZDMzYWVmN2U0NmEzOTIzNzBkMDY3NTBjM2Q2MGQ0OTE0Li5hM2Y4ODkx
ZmQ5OTdlOGMyY2E4NmY1MGNiNWZmZjZjMWIwMDU3ZWQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyRW1iZWRkZWRPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJFbWJlZGRlZE9iamVjdC5jcHAKQEAgLTE5Nyw3ICsxOTcsNyBA
QCB2b2lkIFJlbmRlckVtYmVkZGVkT2JqZWN0OjpzZXRVbmF2YWlsYWJsZVBsdWdpbkluZGljYXRv
cklzUHJlc3NlZChib29sIHByZXNzZWQpCiAgICAgcmVwYWludCgpOwogfQogCi12b2lkIFJlbmRl
ckVtYmVkZGVkT2JqZWN0OjpwYWludFNuYXBzaG90SW1hZ2UoUGFpbnRJbmZvJiBwYWludEluZm8s
IGNvbnN0IExheW91dFBvaW50JiBwYWludE9mZnNldCwgSW1hZ2UqIGltYWdlKQordm9pZCBSZW5k
ZXJFbWJlZGRlZE9iamVjdDo6cGFpbnRTbmFwc2hvdEltYWdlKFBhaW50SW5mbyYgcGFpbnRJbmZv
LCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbnRPZmZzZXQsIEltYWdlJiBpbWFnZSkKIHsKICAgICBM
YXlvdXRVbml0IGNXaWR0aCA9IGNvbnRlbnRXaWR0aCgpOwogICAgIExheW91dFVuaXQgY0hlaWdo
dCA9IGNvbnRlbnRIZWlnaHQoKTsKQEAgLTIxNCw3ICsyMTQsNyBAQCB2b2lkIFJlbmRlckVtYmVk
ZGVkT2JqZWN0OjpwYWludFNuYXBzaG90SW1hZ2UoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0
IExheW91dAogICAgIGlmIChhbGlnbmVkUmVjdC53aWR0aCgpIDw9IDAgfHwgYWxpZ25lZFJlY3Qu
aGVpZ2h0KCkgPD0gMCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgYm9vbCB1c2VMb3dRdWFsaXR5
U2NhbGluZyA9IHNob3VsZFBhaW50QXRMb3dRdWFsaXR5KGNvbnRleHQsIGltYWdlLCBpbWFnZSwg
YWxpZ25lZFJlY3Quc2l6ZSgpKTsKKyAgICBib29sIHVzZUxvd1F1YWxpdHlTY2FsaW5nID0gc2hv
dWxkUGFpbnRBdExvd1F1YWxpdHkoY29udGV4dCwgaW1hZ2UsICZpbWFnZSwgYWxpZ25lZFJlY3Qu
c2l6ZSgpKTsKICAgICBJbWFnZU9yaWVudGF0aW9uRGVzY3JpcHRpb24gb3JpZW50YXRpb25EZXNj
cmlwdGlvbihzaG91bGRSZXNwZWN0SW1hZ2VPcmllbnRhdGlvbigpKTsKICNpZiBFTkFCTEUoQ1NT
X0lNQUdFX09SSUVOVEFUSU9OKQogICAgIG9yaWVudGF0aW9uRGVzY3JpcHRpb24uc2V0SW1hZ2VP
cmllbnRhdGlvbkVudW0oc3R5bGUoKS5pbWFnZU9yaWVudGF0aW9uKCkpOwpAQCAtMjM5LDcgKzIz
OSw3IEBAIHZvaWQgUmVuZGVyRW1iZWRkZWRPYmplY3Q6OnBhaW50Q29udGVudHMoUGFpbnRJbmZv
JiBwYWludEluZm8sIGNvbnN0IExheW91dFBvaW50CiAgICAgICAgIHJldHVybjsKIAogICAgIGlm
IChJbWFnZSogc25hcHNob3QgPSBkb3duY2FzdDxIVE1MUGx1Z0luSW1hZ2VFbGVtZW50PihwbHVn
SW5FbGVtZW50KS5zbmFwc2hvdEltYWdlKCkpCi0gICAgICAgIHBhaW50U25hcHNob3RJbWFnZShw
YWludEluZm8sIHBhaW50T2Zmc2V0LCBzbmFwc2hvdCk7CisgICAgICAgIHBhaW50U25hcHNob3RJ
bWFnZShwYWludEluZm8sIHBhaW50T2Zmc2V0LCAqc25hcHNob3QpOwogfQogCiB2b2lkIFJlbmRl
ckVtYmVkZGVkT2JqZWN0OjpwYWludChQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0
UG9pbnQmIHBhaW50T2Zmc2V0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckVtYmVkZGVkT2JqZWN0LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
RW1iZWRkZWRPYmplY3QuaAppbmRleCBiZDY2NjhkMzQ4ZmM3MGIxMDJhOTIxYmUwOTVkMTk0NWE4
ZGFlM2Q4Li44OTU5ZTFmNWFmYWVjZDI3MDI2MDMxNjhiZjcxMzliZDVjNjA0NmQyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRW1iZWRkZWRPYmplY3QuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRW1iZWRkZWRPYmplY3QuaApAQCAtNzMs
NyArNzMsNyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgY29uc3QgY2hhciogcmVuZGVyTmFtZSgp
IGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuICJSZW5kZXJFbWJlZGRlZE9iamVjdCI7IH0KICAgICB2
aXJ0dWFsIGJvb2wgaXNFbWJlZGRlZE9iamVjdCgpIGNvbnN0IG92ZXJyaWRlIGZpbmFsIHsgcmV0
dXJuIHRydWU7IH0KIAotICAgIHZvaWQgcGFpbnRTbmFwc2hvdEltYWdlKFBhaW50SW5mbyYsIGNv
bnN0IExheW91dFBvaW50JiwgSW1hZ2UqKTsKKyAgICB2b2lkIHBhaW50U25hcHNob3RJbWFnZShQ
YWludEluZm8mLCBjb25zdCBMYXlvdXRQb2ludCYsIEltYWdlJik7CiAgICAgdmlydHVhbCB2b2lk
IHBhaW50Q29udGVudHMoUGFpbnRJbmZvJiwgY29uc3QgTGF5b3V0UG9pbnQmKSBvdmVycmlkZSBm
aW5hbDsKIAogICAgIHZpcnR1YWwgYm9vbCByZXF1aXJlc0xheWVyKCkgY29uc3Qgb3ZlcnJpZGUg
ZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2Uu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlLmNwcAppbmRleCA2OWFk
MjE0OGZhNzlkZWFjNmEyOTJkMjc4YzEzNTZmYmZhODVkMjUyLi4xZDQ3OGJmNmZmYzg3ZmVmZjQ3
NTU3NDE1MjUyNGZiMWRjODcyZGI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVySW1hZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJ
bWFnZS5jcHAKQEAgLTQyNCw3ICs0MjQsNyBAQCB2b2lkIFJlbmRlckltYWdlOjpwYWludFJlcGxh
Y2VkKFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbnRPZgogI2lm
IEVOQUJMRShDU1NfSU1BR0VfT1JJRU5UQVRJT04pCiAgICAgICAgICAgICAgICAgb3JpZW50YXRp
b25EZXNjcmlwdGlvbi5zZXRJbWFnZU9yaWVudGF0aW9uRW51bShzdHlsZSgpLmltYWdlT3JpZW50
YXRpb24oKSk7CiAjZW5kaWYKLSAgICAgICAgICAgICAgICBjb250ZXh0LmRyYXdJbWFnZShpbWFn
ZS5nZXQoKSwgc3R5bGUoKS5jb2xvclNwYWNlKCksIHNuYXBSZWN0VG9EZXZpY2VQaXhlbHMoTGF5
b3V0UmVjdChwYWludE9mZnNldCArIGltYWdlT2Zmc2V0LCBpbWFnZVNpemUpLCBkZXZpY2VTY2Fs
ZUZhY3RvciksIG9yaWVudGF0aW9uRGVzY3JpcHRpb24pOworICAgICAgICAgICAgICAgIGNvbnRl
eHQuZHJhd0ltYWdlKCppbWFnZSwgc3R5bGUoKS5jb2xvclNwYWNlKCksIHNuYXBSZWN0VG9EZXZp
Y2VQaXhlbHMoTGF5b3V0UmVjdChwYWludE9mZnNldCArIGltYWdlT2Zmc2V0LCBpbWFnZVNpemUp
LCBkZXZpY2VTY2FsZUZhY3RvciksIG9yaWVudGF0aW9uRGVzY3JpcHRpb24pOwogICAgICAgICAg
ICAgICAgIGVycm9yUGljdHVyZURyYXduID0gdHJ1ZTsKICAgICAgICAgICAgIH0KIApAQCAtNTQ4
LDEyICs1NDgsMTIgQEAgdm9pZCBSZW5kZXJJbWFnZTo6cGFpbnRJbnRvUmVjdChHcmFwaGljc0Nv
bnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgcmVjdCkKICAgICBIVE1MSW1hZ2VFbGVt
ZW50KiBpbWFnZUVsZW1lbnQgPSBpczxIVE1MSW1hZ2VFbGVtZW50PihlbGVtZW50KCkpID8gZG93
bmNhc3Q8SFRNTEltYWdlRWxlbWVudD4oZWxlbWVudCgpKSA6IG51bGxwdHI7CiAgICAgQ29tcG9z
aXRlT3BlcmF0b3IgY29tcG9zaXRlT3BlcmF0b3IgPSBpbWFnZUVsZW1lbnQgPyBpbWFnZUVsZW1l
bnQtPmNvbXBvc2l0ZU9wZXJhdG9yKCkgOiBDb21wb3NpdGVTb3VyY2VPdmVyOwogICAgIEltYWdl
KiBpbWFnZSA9IGltYWdlUmVzb3VyY2UoKS5pbWFnZSgpLmdldCgpOwotICAgIGJvb2wgdXNlTG93
UXVhbGl0eVNjYWxpbmcgPSBzaG91bGRQYWludEF0TG93UXVhbGl0eShjb250ZXh0LCBpbWFnZSwg
aW1hZ2UsIExheW91dFNpemUocmVjdC5zaXplKCkpKTsKKyAgICBib29sIHVzZUxvd1F1YWxpdHlT
Y2FsaW5nID0gaW1hZ2UgJiYgc2hvdWxkUGFpbnRBdExvd1F1YWxpdHkoY29udGV4dCwgKmltYWdl
LCBpbWFnZSwgTGF5b3V0U2l6ZShyZWN0LnNpemUoKSkpOwogICAgIEltYWdlT3JpZW50YXRpb25E
ZXNjcmlwdGlvbiBvcmllbnRhdGlvbkRlc2NyaXB0aW9uKHNob3VsZFJlc3BlY3RJbWFnZU9yaWVu
dGF0aW9uKCkpOwogI2lmIEVOQUJMRShDU1NfSU1BR0VfT1JJRU5UQVRJT04pCiAgICAgb3JpZW50
YXRpb25EZXNjcmlwdGlvbi5zZXRJbWFnZU9yaWVudGF0aW9uRW51bShzdHlsZSgpLmltYWdlT3Jp
ZW50YXRpb24oKSk7CiAjZW5kaWYKLSAgICBjb250ZXh0LmRyYXdJbWFnZShpbWFnZVJlc291cmNl
KCkuaW1hZ2UocmVjdC53aWR0aCgpLCByZWN0LmhlaWdodCgpKS5nZXQoKSwgc3R5bGUoKS5jb2xv
clNwYWNlKCksIHJlY3QsCisgICAgY29udGV4dC5kcmF3SW1hZ2UoKmltZywgc3R5bGUoKS5jb2xv
clNwYWNlKCksIHJlY3QsCiAgICAgICAgIEltYWdlUGFpbnRpbmdPcHRpb25zKGNvbXBvc2l0ZU9w
ZXJhdG9yLCBCbGVuZE1vZGVOb3JtYWwsIG9yaWVudGF0aW9uRGVzY3JpcHRpb24sIHVzZUxvd1F1
YWxpdHlTY2FsaW5nKSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJJbWFnZVJlc291cmNlU3R5bGVJbWFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVySW1hZ2VSZXNvdXJjZVN0eWxlSW1hZ2UuY3BwCmluZGV4IDQyYjM3ZGRkNjdm
MWQxN2Y1MWMxMzA4OGQyMTZkNjQ4Y2E2NDZkZDAuLjUxYTg2YTZmODJjMDdlMTI2MDk1YWQwOGM3
M2YwZmFlMGVlZjJiZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJJbWFnZVJlc291cmNlU3R5bGVJbWFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckltYWdlUmVzb3VyY2VTdHlsZUltYWdlLmNwcApAQCAtNTcsMTQgKzU3LDE0IEBA
IHZvaWQgUmVuZGVySW1hZ2VSZXNvdXJjZVN0eWxlSW1hZ2U6OnNodXRkb3duKCkKIHsKICAgICBB
U1NFUlQobV9yZW5kZXJlcik7CiAgICAgbV9zdHlsZUltYWdlLT5yZW1vdmVDbGllbnQobV9yZW5k
ZXJlcik7Ci0gICAgbV9jYWNoZWRJbWFnZSA9IDA7CisgICAgbV9jYWNoZWRJbWFnZSA9IG51bGxw
dHI7CiB9CiAKIFBhc3NSZWZQdHI8SW1hZ2U+IFJlbmRlckltYWdlUmVzb3VyY2VTdHlsZUltYWdl
OjppbWFnZShpbnQgd2lkdGgsIGludCBoZWlnaHQpIGNvbnN0CiB7CiAgICAgLy8gR2VuZXJhdGVk
IGNvbnRlbnQgbWF5IHRyaWdnZXIgY2FsbHMgdG8gaW1hZ2UoKSB3aGlsZSB3ZSdyZSBzdGlsbCBw
ZW5kaW5nLCBkb24ndCBhc3NlcnQgYnV0IGdyYWNlZnVsbHkgZXhpdC4KICAgICBpZiAobV9zdHls
ZUltYWdlLT5pc1BlbmRpbmdJbWFnZSgpKQotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0
dXJuIG51bGxwdHI7CiAgICAgcmV0dXJuIG1fc3R5bGVJbWFnZS0+aW1hZ2UobV9yZW5kZXJlciwg
SW50U2l6ZSh3aWR0aCwgaGVpZ2h0KSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyTGF5ZXIuY3BwCmluZGV4IDM0OThjN2NjODQ0YTM0NDNkOWE0NDNkYzY1NDRkNTBmMTIzYWEx
YmEuLjA3YTVhZjc3NTdkNGYyNmEyMzY2YjI1M2U1ZmFlN2NkOGE0ODVjYTEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcApAQCAtMzY1NSwxMiArMzY1NSwxNiBAQCB2
b2lkIFJlbmRlckxheWVyOjpkcmF3UGxhdGZvcm1SZXNpemVySW1hZ2UoR3JhcGhpY3NDb250ZXh0
JiBjb250ZXh0LCBjb25zdCBMYXlvdQogICAgICAgICBjb250ZXh0LnNhdmUoKTsKICAgICAgICAg
Y29udGV4dC50cmFuc2xhdGUocmVzaXplckNvcm5lclJlY3QueCgpICsgY29ybmVyUmVzaXplclNp
emUud2lkdGgoKSwgcmVzaXplckNvcm5lclJlY3QueSgpICsgcmVzaXplckNvcm5lclJlY3QuaGVp
Z2h0KCkgLSBjb3JuZXJSZXNpemVyU2l6ZS5oZWlnaHQoKSk7CiAgICAgICAgIGNvbnRleHQuc2Nh
bGUoRmxvYXRTaXplKC0xLjAsIDEuMCkpOwotICAgICAgICBjb250ZXh0LmRyYXdJbWFnZShyZXNp
emVDb3JuZXJJbWFnZS5nZXQoKSwgcmVuZGVyZXIoKS5zdHlsZSgpLmNvbG9yU3BhY2UoKSwgRmxv
YXRSZWN0KEZsb2F0UG9pbnQoKSwgY29ybmVyUmVzaXplclNpemUpKTsKKyAgICAgICAgaWYgKHJl
c2l6ZUNvcm5lckltYWdlKQorICAgICAgICAgICAgY29udGV4dC5kcmF3SW1hZ2UoKnJlc2l6ZUNv
cm5lckltYWdlLCByZW5kZXJlcigpLnN0eWxlKCkuY29sb3JTcGFjZSgpLCBGbG9hdFJlY3QoRmxv
YXRQb2ludCgpLCBjb3JuZXJSZXNpemVyU2l6ZSkpOwogICAgICAgICBjb250ZXh0LnJlc3RvcmUo
KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KKyAgICAKKyAgICBpZiAoIXJlc2l6ZUNvcm5lcklt
YWdlKQorICAgICAgICByZXR1cm47CiAgICAgRmxvYXRSZWN0IGltYWdlUmVjdCA9IHNuYXBSZWN0
VG9EZXZpY2VQaXhlbHMoTGF5b3V0UmVjdChyZXNpemVyQ29ybmVyUmVjdC5tYXhYTWF4WUNvcm5l
cigpIC0gY29ybmVyUmVzaXplclNpemUsIGNvcm5lclJlc2l6ZXJTaXplKSwgcmVuZGVyZXIoKS5k
b2N1bWVudCgpLmRldmljZVNjYWxlRmFjdG9yKCkpOwotICAgIGNvbnRleHQuZHJhd0ltYWdlKHJl
c2l6ZUNvcm5lckltYWdlLmdldCgpLCByZW5kZXJlcigpLnN0eWxlKCkuY29sb3JTcGFjZSgpLCBp
bWFnZVJlY3QpOworICAgIGNvbnRleHQuZHJhd0ltYWdlKCpyZXNpemVDb3JuZXJJbWFnZSwgcmVu
ZGVyZXIoKS5zdHlsZSgpLmNvbG9yU3BhY2UoKSwgaW1hZ2VSZWN0KTsKIH0KIAogdm9pZCBSZW5k
ZXJMYXllcjo6cGFpbnRSZXNpemVyKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgTGF5
b3V0UG9pbnQmIHBhaW50T2Zmc2V0LCBjb25zdCBMYXlvdXRSZWN0JiBkYW1hZ2VSZWN0KQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RNYXJrZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RNYXJrZXIuY3BwCmluZGV4IDQwMDdh
YTcwZGMxODRhZmUyODIzOTUxMzJmYThkMjQwNzI1MDM0OWMuLmY2ZTM0NmQzN2IwNWJhNDZhOWY2
NjA4MDYyMDViNDI1MWM3YjM1MTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJMaXN0TWFya2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyTGlzdE1hcmtlci5jcHAKQEAgLTExOTcsNyArMTE5Nyw4IEBAIHZvaWQgUmVuZGVyTGlzdE1h
cmtlcjo6cGFpbnQoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFBvaW50JiBwYWlu
dE9mZnNlCiAgICAgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0ID0gcGFpbnRJbmZvLmNvbnRleHQo
KTsKIAogICAgIGlmIChpc0ltYWdlKCkpIHsKLSAgICAgICAgY29udGV4dC5kcmF3SW1hZ2UobV9p
bWFnZS0+aW1hZ2UodGhpcywgbWFya2VyLnNpemUoKSkuZ2V0KCksIHN0eWxlKCkuY29sb3JTcGFj
ZSgpLCBtYXJrZXIpOworICAgICAgICBpZiAoUmVmUHRyPEltYWdlPiBtYXJrZXJJbWFnZSA9IG1f
aW1hZ2UtPmltYWdlKHRoaXMsIG1hcmtlci5zaXplKCkpKQorICAgICAgICAgICAgY29udGV4dC5k
cmF3SW1hZ2UoKm1hcmtlckltYWdlLCBzdHlsZSgpLmNvbG9yU3BhY2UoKSwgbWFya2VyKTsKICAg
ICAgICAgaWYgKHNlbGVjdGlvblN0YXRlKCkgIT0gU2VsZWN0aW9uTm9uZSkgewogICAgICAgICAg
ICAgTGF5b3V0UmVjdCBzZWxSZWN0ID0gbG9jYWxTZWxlY3Rpb25SZWN0KCk7CiAgICAgICAgICAg
ICBzZWxSZWN0Lm1vdmVCeShib3hPcmlnaW4pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlclNuYXBzaG90dGVkUGx1Z0luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJTbmFwc2hvdHRlZFBsdWdJbi5jcHAKaW5kZXggYmQxYTlkNTFkMjViM2Q4
OWM0MWEwOTEwMjlhODkzNGUxZGQ2NDUwZS4uZWM0MmM2MmM4MTI3Y2VkMzhlNTYxNjg0ZDg3ZThi
NTA5ZjE5YjNjNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNu
YXBzaG90dGVkUGx1Z0luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
U25hcHNob3R0ZWRQbHVnSW4uY3BwCkBAIC0xMzUsMTMgKzEzNSwxMyBAQCB2b2lkIFJlbmRlclNu
YXBzaG90dGVkUGx1Z0luOjpwYWludFNuYXBzaG90KFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25z
dCBMYXlvdXRQbwogICAgIGlmIChhbGlnbmVkUmVjdC53aWR0aCgpIDw9IDAgfHwgYWxpZ25lZFJl
Y3QuaGVpZ2h0KCkgPD0gMCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgYm9vbCB1c2VMb3dRdWFs
aXR5U2NhbGluZyA9IHNob3VsZFBhaW50QXRMb3dRdWFsaXR5KGNvbnRleHQsIGltYWdlLCBpbWFn
ZSwgYWxpZ25lZFJlY3Quc2l6ZSgpKTsKKyAgICBib29sIHVzZUxvd1F1YWxpdHlTY2FsaW5nID0g
c2hvdWxkUGFpbnRBdExvd1F1YWxpdHkoY29udGV4dCwgKmltYWdlLCBpbWFnZSwgYWxpZ25lZFJl
Y3Quc2l6ZSgpKTsKIAogICAgIEltYWdlT3JpZW50YXRpb25EZXNjcmlwdGlvbiBvcmllbnRhdGlv
bkRlc2NyaXB0aW9uKHNob3VsZFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uKCkpOwogI2lmIEVOQUJM
RShDU1NfSU1BR0VfT1JJRU5UQVRJT04pCiAgICAgb3JpZW50YXRpb25EZXNjcmlwdGlvbi5zZXRJ
bWFnZU9yaWVudGF0aW9uRW51bShzdHlsZSgpLmltYWdlT3JpZW50YXRpb24oKSk7CiAjZW5kaWYK
LSAgICBjb250ZXh0LmRyYXdJbWFnZShpbWFnZSwgc3R5bGUoKS5jb2xvclNwYWNlKCksIGFsaWdu
ZWRSZWN0LCBJbWFnZVBhaW50aW5nT3B0aW9ucyhvcmllbnRhdGlvbkRlc2NyaXB0aW9uLCB1c2VM
b3dRdWFsaXR5U2NhbGluZykpOworICAgIGNvbnRleHQuZHJhd0ltYWdlKCppbWFnZSwgc3R5bGUo
KS5jb2xvclNwYWNlKCksIGFsaWduZWRSZWN0LCBJbWFnZVBhaW50aW5nT3B0aW9ucyhvcmllbnRh
dGlvbkRlc2NyaXB0aW9uLCB1c2VMb3dRdWFsaXR5U2NhbGluZykpOwogfQogCiBDdXJzb3JEaXJl
Y3RpdmUgUmVuZGVyU25hcHNob3R0ZWRQbHVnSW46OmdldEN1cnNvcihjb25zdCBMYXlvdXRQb2lu
dCYgcG9pbnQsIEN1cnNvciYgb3ZlcnJpZGVDdXJzb3IpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyVGhlbWVNYWMubW0KaW5kZXggZDhhZjNkMjNlNzk4ZDAzNWQ2ZGMyNTlj
NGExNjkwY2Q3MzZjY2Y5My4uZGEyZDlhNzJlNWNmOWFkZjdhNDFmMTc5MTM3NzkwYTZjYjFiMjE1
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lTWFjLm1t
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZU1hYy5tbQpAQCAtMTE1
OCw3ICsxMTU4LDcgQEAgYm9vbCBSZW5kZXJUaGVtZU1hYzo6cGFpbnRQcm9ncmVzc0Jhcihjb25z
dCBSZW5kZXJPYmplY3QmIHJlbmRlck9iamVjdCwgY29uc3QgUGEKICAgICAgICAgcGFpbnRJbmZv
LmNvbnRleHQoKS5zY2FsZShGbG9hdFNpemUoLTEsIDEpKTsKICAgICB9CiAKLSAgICBwYWludElu
Zm8uY29udGV4dCgpLmRyYXdJbWFnZUJ1ZmZlcihpbWFnZUJ1ZmZlci5nZXQoKSwgQ29sb3JTcGFj
ZURldmljZVJHQiwgaW5mbGF0ZWRSZWN0LmxvY2F0aW9uKCkpOworICAgIHBhaW50SW5mby5jb250
ZXh0KCkuZHJhd0ltYWdlQnVmZmVyKCppbWFnZUJ1ZmZlciwgQ29sb3JTcGFjZURldmljZVJHQiwg
aW5mbGF0ZWRSZWN0LmxvY2F0aW9uKCkpOwogICAgIHJldHVybiBmYWxzZTsKIH0KIApAQCAtMTkx
Miw3ICsxOTEyLDcgQEAgYm9vbCBSZW5kZXJUaGVtZU1hYzo6cGFpbnRTbmFwc2hvdHRlZFBsdWdp
bk92ZXJsYXkoY29uc3QgUmVuZGVyT2JqZWN0JiByZW5kZXJlciwKICAgICBpZiAoYWxpZ25lZFBs
dWdpblJlY3Qud2lkdGgoKSA8PSAwIHx8IGFsaWduZWRQbHVnaW5SZWN0LmhlaWdodCgpIDw9IDAp
CiAgICAgICAgIHJldHVybiB0cnVlOwogCi0gICAgY29udGV4dC5kcmF3SW1hZ2Uoc25hcHNob3Qs
IHBsdWdJblJlbmRlcmVyLnN0eWxlKCkuY29sb3JTcGFjZSgpLCBhbGlnbmVkUGx1Z2luUmVjdCwg
Q29tcG9zaXRlU291cmNlT3Zlcik7CisgICAgY29udGV4dC5kcmF3SW1hZ2UoKnNuYXBzaG90LCBw
bHVnSW5SZW5kZXJlci5zdHlsZSgpLmNvbG9yU3BhY2UoKSwgYWxpZ25lZFBsdWdpblJlY3QsIENv
bXBvc2l0ZVNvdXJjZU92ZXIpOwogICAgIHJldHVybiBmYWxzZTsKIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lV2luLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZVdpbi5jcHAKaW5kZXggZmQzNDk1N2YwN2ZkNjY0ZmQw
YTU3OTFlZjliMWUyZDRlMjk2Y2VmMS4uNDY3OWNjYTI4YjFiMzZhZjFmYTE5MDFiZWE5OWFhOTdm
MTI0YjMzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1l
V2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVXaW4uY3Bw
CkBAIC04OTIsNyArODkyLDcgQEAgYm9vbCBSZW5kZXJUaGVtZVdpbjo6cGFpbnRTZWFyY2hGaWVs
ZENhbmNlbEJ1dHRvbihjb25zdCBSZW5kZXJPYmplY3QmIG8sIGNvbnN0IFAKIAogICAgIHN0YXRp
YyBJbWFnZSogY2FuY2VsSW1hZ2UgPSBJbWFnZTo6bG9hZFBsYXRmb3JtUmVzb3VyY2UoInNlYXJj
aENhbmNlbCIpLmxlYWtSZWYoKTsKICAgICBzdGF0aWMgSW1hZ2UqIGNhbmNlbFByZXNzZWRJbWFn
ZSA9IEltYWdlOjpsb2FkUGxhdGZvcm1SZXNvdXJjZSgic2VhcmNoQ2FuY2VsUHJlc3NlZCIpLmxl
YWtSZWYoKTsKLSAgICBwYWludEluZm8uY29udGV4dCgpLmRyYXdJbWFnZShpc1ByZXNzZWQobykg
PyBjYW5jZWxQcmVzc2VkSW1hZ2UgOiBjYW5jZWxJbWFnZSwgby5zdHlsZSgpLmNvbG9yU3BhY2Uo
KSwgYm91bmRzKTsKKyAgICBwYWludEluZm8uY29udGV4dCgpLmRyYXdJbWFnZShpc1ByZXNzZWQo
bykgPyAqY2FuY2VsUHJlc3NlZEltYWdlIDogKmNhbmNlbEltYWdlLCBvLnN0eWxlKCkuY29sb3JT
cGFjZSgpLCBib3VuZHMpOwogICAgIHJldHVybiBmYWxzZTsKIH0KIApAQCAtOTQwLDcgKzk0MCw3
IEBAIGJvb2wgUmVuZGVyVGhlbWVXaW46OnBhaW50U2VhcmNoRmllbGRSZXN1bHRzRGVjb3JhdGlv
blBhcnQoY29uc3QgUmVuZGVyT2JqZWN0JiBvCiAgICAgYm91bmRzLnNldFkocGFyZW50Qm94Lnko
KSArIChwYXJlbnRCb3guaGVpZ2h0KCkgLSBib3VuZHMuaGVpZ2h0KCkgKyAxKSAvIDIpOwogICAg
IAogICAgIHN0YXRpYyBJbWFnZSogbWFnbmlmaWVySW1hZ2UgPSBJbWFnZTo6bG9hZFBsYXRmb3Jt
UmVzb3VyY2UoInNlYXJjaE1hZ25pZmllciIpLmxlYWtSZWYoKTsKLSAgICBwYWludEluZm8uY29u
dGV4dCgpLmRyYXdJbWFnZShtYWduaWZpZXJJbWFnZSwgby5zdHlsZSgpLmNvbG9yU3BhY2UoKSwg
Ym91bmRzKTsKKyAgICBwYWludEluZm8uY29udGV4dCgpLmRyYXdJbWFnZSgqbWFnbmlmaWVySW1h
Z2UsIG8uc3R5bGUoKS5jb2xvclNwYWNlKCksIGJvdW5kcyk7CiAgICAgcmV0dXJuIGZhbHNlOwog
fQogCkBAIC05NzUsNyArOTc1LDcgQEAgYm9vbCBSZW5kZXJUaGVtZVdpbjo6cGFpbnRTZWFyY2hG
aWVsZFJlc3VsdHNCdXR0b24oY29uc3QgUmVuZGVyT2JqZWN0JiBvLCBjb25zdAogICAgIGJvdW5k
cy5zZXRZKHBhcmVudEJveC55KCkgKyAocGFyZW50Qm94LmhlaWdodCgpIC0gYm91bmRzLmhlaWdo
dCgpICsgMSkgLyAyKTsKIAogICAgIHN0YXRpYyBJbWFnZSogbWFnbmlmaWVySW1hZ2UgPSBJbWFn
ZTo6bG9hZFBsYXRmb3JtUmVzb3VyY2UoInNlYXJjaE1hZ25pZmllclJlc3VsdHMiKS5sZWFrUmVm
KCk7Ci0gICAgcGFpbnRJbmZvLmNvbnRleHQoKS5kcmF3SW1hZ2UobWFnbmlmaWVySW1hZ2UsIG8u
c3R5bGUoKS5jb2xvclNwYWNlKCksIGJvdW5kcyk7CisgICAgcGFpbnRJbmZvLmNvbnRleHQoKS5k
cmF3SW1hZ2UoKm1hZ25pZmllckltYWdlLCBvLnN0eWxlKCkuY29sb3JTcGFjZSgpLCBib3VuZHMp
OwogICAgIHJldHVybiBmYWxzZTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3NoYXBlcy9TaGFwZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVz
L1NoYXBlLmNwcAppbmRleCAyZDQ3NTgyMWZkMmZjNzNhOTRlNjc1Mzk0YWU4YTYzMGVhNTdmMmY1
Li5lMGNhZWFjOWNkODAxYTFiOGI3MzBiOGY0YjlkN2E2ZDcxN2ViYWFkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL1NoYXBlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc2hhcGVzL1NoYXBlLmNwcApAQCAtMTg0LDcgKzE4NCw4IEBAIHN0ZDo6
dW5pcXVlX3B0cjxTaGFwZT4gU2hhcGU6OmNyZWF0ZVJhc3RlclNoYXBlKEltYWdlKiBpbWFnZSwg
ZmxvYXQgdGhyZXNob2xkLCBjCiAKICAgICBpZiAoaW1hZ2VCdWZmZXIpIHsKICAgICAgICAgR3Jh
cGhpY3NDb250ZXh0JiBncmFwaGljc0NvbnRleHQgPSBpbWFnZUJ1ZmZlci0+Y29udGV4dCgpOwot
ICAgICAgICBncmFwaGljc0NvbnRleHQuZHJhd0ltYWdlKGltYWdlLCBDb2xvclNwYWNlRGV2aWNl
UkdCLCBJbnRSZWN0KEludFBvaW50KCksIGltYWdlUmVjdC5zaXplKCkpKTsKKyAgICAgICAgaWYg
KGltYWdlKQorICAgICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LmRyYXdJbWFnZSgqaW1hZ2UsIENv
bG9yU3BhY2VEZXZpY2VSR0IsIEludFJlY3QoSW50UG9pbnQoKSwgaW1hZ2VSZWN0LnNpemUoKSkp
OwogCiAgICAgICAgIFJlZlB0cjxVaW50OENsYW1wZWRBcnJheT4gcGl4ZWxBcnJheSA9IGltYWdl
QnVmZmVyLT5nZXRVbm11bHRpcGxpZWRJbWFnZURhdGEoSW50UmVjdChJbnRQb2ludCgpLCBpbWFn
ZVJlY3Quc2l6ZSgpKSk7CiAgICAgICAgIHVuc2lnbmVkIHBpeGVsQXJyYXlMZW5ndGggPSBwaXhl
bEFycmF5LT5sZW5ndGgoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
aGFwZXMvU2hhcGVPdXRzaWRlSW5mby5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hh
cGVzL1NoYXBlT3V0c2lkZUluZm8uY3BwCmluZGV4IDY2ZDMxODNjZjQwOGQ3NDJkYjAwODc3MzAx
MWY5MzBkOGFmNTBkZDUuLmRjODRiOWE1MjYxMjUwNTFkMDQxZThjY2YwMjFiYTA2YmFhNDcyOTkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMvU2hhcGVPdXRzaWRl
SW5mby5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3NoYXBlcy9TaGFwZU91dHNp
ZGVJbmZvLmNwcApAQCAtMTU4LDcgKzE1OCw2IEBAIHN0ZDo6dW5pcXVlX3B0cjxTaGFwZT4gU2hh
cGVPdXRzaWRlSW5mbzo6Y3JlYXRlU2hhcGVGb3JJbWFnZShTdHlsZUltYWdlKiBzdHlsZUltCiAK
ICAgICBBU1NFUlQoIXN0eWxlSW1hZ2UtPmlzUGVuZGluZ0ltYWdlKCkpOwogICAgIFJlZlB0cjxJ
bWFnZT4gaW1hZ2UgPSBzdHlsZUltYWdlLT5pbWFnZShjb25zdF9jYXN0PFJlbmRlckJveCo+KCZt
X3JlbmRlcmVyKSwgaW1hZ2VTaXplKTsKLQogICAgIHJldHVybiBTaGFwZTo6Y3JlYXRlUmFzdGVy
U2hhcGUoaW1hZ2UuZ2V0KCksIHNoYXBlSW1hZ2VUaHJlc2hvbGQsIGltYWdlUmVjdCwgbWFyZ2lu
UmVjdCwgd3JpdGluZ01vZGUsIG1hcmdpbik7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdHlsZS9OaW5lUGllY2VJbWFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3R5bGUvTmluZVBpZWNlSW1hZ2UuY3BwCmluZGV4IGFhMTFjZGRjOTRiZmRlNDRj
YWQ3YzVhZjA4YzQ2NTFiZjU5M2JjZjUuLmM5MzlhZTc1ZDFkZmJiOTNjMjAwZDk0MGNhNmQ0YTI5
YTc2YTZiZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9OaW5l
UGllY2VJbWFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL05pbmVQ
aWVjZUltYWdlLmNwcApAQCAtMjA2LDYgKzIwNiw5IEBAIHZvaWQgTmluZVBpZWNlSW1hZ2U6OnBh
aW50KEdyYXBoaWNzQ29udGV4dCYgZ3JhcGhpY3NDb250ZXh0LCBSZW5kZXJFbGVtZW50KiByZW5k
CiAgICAgVmVjdG9yPEZsb2F0U2l6ZT4gdGlsZVNjYWxlcyA9IGNvbXB1dGVUaWxlU2NhbGVzKGRl
c3RpbmF0aW9uUmVjdHMsIHNvdXJjZVJlY3RzLCBob3Jpem9udGFsUnVsZSgpLCB2ZXJ0aWNhbFJ1
bGUoKSk7CiAKICAgICBSZWZQdHI8SW1hZ2U+IGltYWdlID0gc3R5bGVJbWFnZS0+aW1hZ2UocmVu
ZGVyZXIsIHNvdXJjZSk7CisgICAgaWYgKCFpbWFnZSkKKyAgICAgICAgcmV0dXJuOworCiAgICAg
Q29sb3JTcGFjZSBjb2xvclNwYWNlID0gc3R5bGUuY29sb3JTcGFjZSgpOwogCiAgICAgZm9yIChJ
bWFnZVBpZWNlIHBpZWNlID0gTWluUGllY2U7IHBpZWNlIDwgTWF4UGllY2U7ICsrcGllY2UpIHsK
QEAgLTIxMywxMyArMjE2LDEzIEBAIHZvaWQgTmluZVBpZWNlSW1hZ2U6OnBhaW50KEdyYXBoaWNz
Q29udGV4dCYgZ3JhcGhpY3NDb250ZXh0LCBSZW5kZXJFbGVtZW50KiByZW5kCiAgICAgICAgICAg
ICBjb250aW51ZTsKIAogICAgICAgICBpZiAoaXNDb3JuZXJQaWVjZShwaWVjZSkpIHsKLSAgICAg
ICAgICAgIGdyYXBoaWNzQ29udGV4dC5kcmF3SW1hZ2UoaW1hZ2UuZ2V0KCksIGNvbG9yU3BhY2Us
IGRlc3RpbmF0aW9uUmVjdHNbcGllY2VdLCBzb3VyY2VSZWN0c1twaWVjZV0sIG9wKTsKKyAgICAg
ICAgICAgIGdyYXBoaWNzQ29udGV4dC5kcmF3SW1hZ2UoKmltYWdlLCBjb2xvclNwYWNlLCBkZXN0
aW5hdGlvblJlY3RzW3BpZWNlXSwgc291cmNlUmVjdHNbcGllY2VdLCBvcCk7CiAgICAgICAgICAg
ICBjb250aW51ZTsKICAgICAgICAgfQogCiAgICAgICAgIEltYWdlOjpUaWxlUnVsZSBoUnVsZSA9
IGlzSG9yaXpvbnRhbFBpZWNlKHBpZWNlKSA/IHN0YXRpY19jYXN0PEltYWdlOjpUaWxlUnVsZT4o
aG9yaXpvbnRhbFJ1bGUoKSkgOiBJbWFnZTo6U3RyZXRjaFRpbGU7CiAgICAgICAgIEltYWdlOjpU
aWxlUnVsZSB2UnVsZSA9IGlzVmVydGljYWxQaWVjZShwaWVjZSkgPyBzdGF0aWNfY2FzdDxJbWFn
ZTo6VGlsZVJ1bGU+KHZlcnRpY2FsUnVsZSgpKSA6IEltYWdlOjpTdHJldGNoVGlsZTsKLSAgICAg
ICAgZ3JhcGhpY3NDb250ZXh0LmRyYXdUaWxlZEltYWdlKGltYWdlLmdldCgpLCBjb2xvclNwYWNl
LCBkZXN0aW5hdGlvblJlY3RzW3BpZWNlXSwgc291cmNlUmVjdHNbcGllY2VdLCB0aWxlU2NhbGVz
W3BpZWNlXSwgaFJ1bGUsIHZSdWxlLCBvcCk7CisgICAgICAgIGdyYXBoaWNzQ29udGV4dC5kcmF3
VGlsZWRJbWFnZSgqaW1hZ2UsIGNvbG9yU3BhY2UsIGRlc3RpbmF0aW9uUmVjdHNbcGllY2VdLCBz
b3VyY2VSZWN0c1twaWVjZV0sIHRpbGVTY2FsZXNbcGllY2VdLCBoUnVsZSwgdlJ1bGUsIG9wKTsK
ICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVu
ZGVyU1ZHSW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdJ
bWFnZS5jcHAKaW5kZXggYjhhMTk2ZTk1MTM3MDFkNTZhYmVhNmI5MmNmYWQ0ZWQzMDNhYzM4NC4u
ZWY3NTdlNzM2M2YzNDhkYmRmZmE1MmZjY2RlOGFkMmNjMDJiNzM1NiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdJbWFnZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdJbWFnZS5jcHAKQEAgLTE2MSwxMiArMTYx
LDE1IEBAIHZvaWQgUmVuZGVyU1ZHSW1hZ2U6OnBhaW50KFBhaW50SW5mbyYgcGFpbnRJbmZvLCBj
b25zdCBMYXlvdXRQb2ludCYpCiB2b2lkIFJlbmRlclNWR0ltYWdlOjpwYWludEZvcmVncm91bmQo
UGFpbnRJbmZvJiBwYWludEluZm8pCiB7CiAgICAgUmVmUHRyPEltYWdlPiBpbWFnZSA9IGltYWdl
UmVzb3VyY2UoKS5pbWFnZSgpOworICAgIGlmICghaW1hZ2UpCisgICAgICAgIHJldHVybjsKKwog
ICAgIEZsb2F0UmVjdCBkZXN0UmVjdCA9IG1fb2JqZWN0Qm91bmRpbmdCb3g7CiAgICAgRmxvYXRS
ZWN0IHNyY1JlY3QoMCwgMCwgaW1hZ2UtPndpZHRoKCksIGltYWdlLT5oZWlnaHQoKSk7CiAKICAg
ICBpbWFnZUVsZW1lbnQoKS5wcmVzZXJ2ZUFzcGVjdFJhdGlvKCkudHJhbnNmb3JtUmVjdChkZXN0
UmVjdCwgc3JjUmVjdCk7CiAKLSAgICBwYWludEluZm8uY29udGV4dCgpLmRyYXdJbWFnZShpbWFn
ZS5nZXQoKSwgQ29sb3JTcGFjZURldmljZVJHQiwgZGVzdFJlY3QsIHNyY1JlY3QpOworICAgIHBh
aW50SW5mby5jb250ZXh0KCkuZHJhd0ltYWdlKCppbWFnZSwgQ29sb3JTcGFjZURldmljZVJHQiwg
ZGVzdFJlY3QsIHNyY1JlY3QpOwogfQogCiB2b2lkIFJlbmRlclNWR0ltYWdlOjppbnZhbGlkYXRl
QnVmZmVyZWRGb3JlZ3JvdW5kKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUZpbHRlci5jcHAKaW5kZXggYzNlZGEyOTlkYmU1YWE4
NDk1Y2QzZTg3Y2NmZTRjODg5ZTY4NzJiMy4uMGZkNWQ2M2UyNGYyNTc1M2Q2ZTJjNWU0YjczMDRm
YzIyNDlhMWM2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5k
ZXJTVkdSZXNvdXJjZUZpbHRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2
Zy9SZW5kZXJTVkdSZXNvdXJjZUZpbHRlci5jcHAKQEAgLTI3MCw3ICsyNzAsNyBAQCB2b2lkIFJl
bmRlclNWR1Jlc291cmNlRmlsdGVyOjpwb3N0QXBwbHlSZXNvdXJjZShSZW5kZXJFbGVtZW50JiBy
ZW5kZXJlciwgR3JhcGhpYwogICAgICAgICAgICAgY29udGV4dC0+Y29uY2F0Q1RNKGZpbHRlckRh
dGEtPnNoZWFyRnJlZUFic29sdXRlVHJhbnNmb3JtLmludmVyc2UoKSk7CiAKICAgICAgICAgICAg
IGNvbnRleHQtPnNjYWxlKEZsb2F0U2l6ZSgxIC8gZmlsdGVyRGF0YS0+ZmlsdGVyLT5maWx0ZXJS
ZXNvbHV0aW9uKCkud2lkdGgoKSwgMSAvIGZpbHRlckRhdGEtPmZpbHRlci0+ZmlsdGVyUmVzb2x1
dGlvbigpLmhlaWdodCgpKSk7Ci0gICAgICAgICAgICBjb250ZXh0LT5kcmF3SW1hZ2VCdWZmZXIo
cmVzdWx0SW1hZ2UsIHJlbmRlcmVyLnN0eWxlKCkuY29sb3JTcGFjZSgpLCBsYXN0RWZmZWN0LT5h
YnNvbHV0ZVBhaW50UmVjdCgpKTsKKyAgICAgICAgICAgIGNvbnRleHQtPmRyYXdJbWFnZUJ1ZmZl
cigqcmVzdWx0SW1hZ2UsIHJlbmRlcmVyLnN0eWxlKCkuY29sb3JTcGFjZSgpLCBsYXN0RWZmZWN0
LT5hYnNvbHV0ZVBhaW50UmVjdCgpKTsKICAgICAgICAgICAgIGNvbnRleHQtPnNjYWxlKGZpbHRl
ckRhdGEtPmZpbHRlci0+ZmlsdGVyUmVzb2x1dGlvbigpKTsKIAogICAgICAgICAgICAgY29udGV4
dC0+Y29uY2F0Q1RNKGZpbHRlckRhdGEtPnNoZWFyRnJlZUFic29sdXRlVHJhbnNmb3JtKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHUmVuZGVyaW5nQ29udGV4
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1JlbmRlcmluZ0NvbnRleHQu
Y3BwCmluZGV4IDg5YjhlMzhlZTg1MTU1YTJiMDg3N2Q3ZDVmZTc0NWM4ZWYxZWMxOGMuLmQwMmVl
NTBiZDZjYTM3ZTYwYTUyZWQ0ZjY4MDQ2ZWZmOTA4MWE4YmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHUmVuZGVyaW5nQ29udGV4dC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdSZW5kZXJpbmdDb250ZXh0LmNwcApAQCAtMzA5LDE0
ICszMDksMTUgQEAgdm9pZCBTVkdSZW5kZXJpbmdDb250ZXh0OjpyZW5kZXJTdWJ0cmVlVG9JbWFn
ZUJ1ZmZlcihJbWFnZUJ1ZmZlciogaW1hZ2UsIFJlbmRlckUKIAogdm9pZCBTVkdSZW5kZXJpbmdD
b250ZXh0OjpjbGlwVG9JbWFnZUJ1ZmZlcihHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0
IEFmZmluZVRyYW5zZm9ybSYgYWJzb2x1dGVUcmFuc2Zvcm0sIGNvbnN0IEZsb2F0UmVjdCYgdGFy
Z2V0UmVjdCwgc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPiYgaW1hZ2VCdWZmZXIsIGJvb2wg
c2FmZVRvQ2xlYXIpCiB7Ci0gICAgQVNTRVJUKGltYWdlQnVmZmVyKTsKKyAgICBpZiAoIWltYWdl
QnVmZmVyKQorICAgICAgICByZXR1cm47CiAKICAgICBGbG9hdFJlY3QgYWJzb2x1dGVUYXJnZXRS
ZWN0ID0gY2FsY3VsYXRlSW1hZ2VCdWZmZXJSZWN0KHRhcmdldFJlY3QsIGFic29sdXRlVHJhbnNm
b3JtKTsKIAogICAgIC8vIFRoZSBtYXNrIGltYWdlIGhhcyBiZWVuIGNyZWF0ZWQgaW4gdGhlIGFi
c29sdXRlIGNvb3JkaW5hdGUgc3BhY2UsIGFzIHRoZSBpbWFnZSBzaG91bGQgbm90IGJlIHNjYWxl
ZC4KICAgICAvLyBTbyB0aGUgYWN0dWFsIG1hc2tpbmcgcHJvY2VzcyBoYXMgdG8gYmUgZG9uZSBp
biB0aGUgYWJzb2x1dGUgY29vcmRpbmF0ZSBzcGFjZSBhcyB3ZWxsLgogICAgIGNvbnRleHQuY29u
Y2F0Q1RNKGFic29sdXRlVHJhbnNmb3JtLmludmVyc2UoKSk7Ci0gICAgY29udGV4dC5jbGlwVG9J
bWFnZUJ1ZmZlcihpbWFnZUJ1ZmZlci5nZXQoKSwgYWJzb2x1dGVUYXJnZXRSZWN0KTsKKyAgICBj
b250ZXh0LmNsaXBUb0ltYWdlQnVmZmVyKCppbWFnZUJ1ZmZlciwgYWJzb2x1dGVUYXJnZXRSZWN0
KTsKICAgICBjb250ZXh0LmNvbmNhdENUTShhYnNvbHV0ZVRyYW5zZm9ybSk7CiAKICAgICAvLyBX
aGVuIG5lc3RpbmcgcmVzb3VyY2VzLCB3aXRoIG9iamVjdEJvdW5kaW5nQm94IGFzIGNvbnRlbnQg
dW5pdCB0eXBlcywgdGhlcmUncyBubyB1c2UgaW4gY2FjaGluZyB0aGUKQEAgLTM2MCw3ICszNjEs
NyBAQCBib29sIFNWR1JlbmRlcmluZ0NvbnRleHQ6OmJ1ZmZlckZvcmVncm91bmQoc3RkOjp1bmlx
dWVfcHRyPEltYWdlQnVmZmVyPiYgaW1hZ2VCdQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgIH0KIAotICAgIG1fcGFpbnRJbmZvLT5jb250ZXh0KCkuZHJhd0ltYWdlQnVmZmVyKGltYWdl
QnVmZmVyLmdldCgpLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBib3VuZGluZ0JveCk7CisgICAgbV9w
YWludEluZm8tPmNvbnRleHQoKS5kcmF3SW1hZ2VCdWZmZXIoKmltYWdlQnVmZmVyLCBDb2xvclNw
YWNlRGV2aWNlUkdCLCBib3VuZGluZ0JveCk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFSW1hZ2UuY3Bw
IGIvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVJbWFnZS5jcHAKaW5k
ZXggZjA3MjUxOGY0NDE3NTExYzc5MTM5MGU5OTYyN2Y1YjVkMTdlNDhiMS4uNjYxOGNmNTQ4NGU0
OWVlMjFjY2NmNjc4OTRkMDAyZjYwZTE3ZTgwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
c3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVJbWFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
c3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVJbWFnZS5jcHAKQEAgLTEzNSw3ICsxMzUsNyBAQCB2
b2lkIEZFSW1hZ2U6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZSgpCiAgICAgICAgIHJldHVybjsKICAg
ICB9CiAKLSAgICByZXN1bHRJbWFnZS0+Y29udGV4dCgpLmRyYXdJbWFnZShtX2ltYWdlLmdldCgp
LCBDb2xvclNwYWNlRGV2aWNlUkdCLCBkZXN0UmVjdCwgc3JjUmVjdCk7CisgICAgcmVzdWx0SW1h
Z2UtPmNvbnRleHQoKS5kcmF3SW1hZ2UoKm1faW1hZ2UsIENvbG9yU3BhY2VEZXZpY2VSR0IsIGRl
c3RSZWN0LCBzcmNSZWN0KTsKIH0KIAogdm9pZCBGRUltYWdlOjpkdW1wKCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Db250ZXh0TWVudUNvbnRleHREYXRhLmNwcCBiL1NvdXJj
ZS9XZWJLaXQyL1NoYXJlZC9Db250ZXh0TWVudUNvbnRleHREYXRhLmNwcAppbmRleCA1M2ZjZDIz
MTg1OTk1MzcyZTVmNGZiN2I2MjQxYzgzZGYwMWVkMDRiLi43MzIzNGU1Zjc5M2RhMzg1OTk0MWE5
ZGM3NzQ5ZTc0Mjc4YTBlNGQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ29u
dGV4dE1lbnVDb250ZXh0RGF0YS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0NvbnRl
eHRNZW51Q29udGV4dERhdGEuY3BwCkBAIC01OCw3ICs1OCw3IEBAIENvbnRleHRNZW51Q29udGV4
dERhdGE6OkNvbnRleHRNZW51Q29udGV4dERhdGEoY29uc3QgQ29udGV4dE1lbnVDb250ZXh0JiBj
b250ZXh0CiAKICAgICAvLyBGSVhNRTogZmlndXJlIG91dCB0aGUgcm91bmRpbmcgc3RhcnRlZ3kg
Zm9yIFNoYXJlYWJsZUJpdG1hcC4KICAgICBtX2NvbnRyb2xsZWRJbWFnZSA9IFNoYXJlYWJsZUJp
dG1hcDo6Y3JlYXRlU2hhcmVhYmxlKEludFNpemUoaW1hZ2UtPnNpemUoKSksIFNoYXJlYWJsZUJp
dG1hcDo6U3VwcG9ydHNBbHBoYSk7Ci0gICAgbV9jb250cm9sbGVkSW1hZ2UtPmNyZWF0ZUdyYXBo
aWNzQ29udGV4dCgpLT5kcmF3SW1hZ2UoaW1hZ2UsIENvbG9yU3BhY2VEZXZpY2VSR0IsIEludFBv
aW50KCkpOworICAgIG1fY29udHJvbGxlZEltYWdlLT5jcmVhdGVHcmFwaGljc0NvbnRleHQoKS0+
ZHJhd0ltYWdlKCppbWFnZSwgQ29sb3JTcGFjZURldmljZVJHQiwgSW50UG9pbnQoKSk7CiAjZW5k
aWYKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkNvcmVBcmd1bWVu
dENvZGVycy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJz
LmNwcAppbmRleCA3MWRjM2Q0ZTUxZjJhZGM1YWFmYTBmMjMwNTAwMWFiOGE0ZThkOWVmLi44NWFh
ZWQ1YmE0OTA5MzllMmQ2ZWVkYTMzZjZhODFhYjc3ZDNlM2ZkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcApAQCAtNzIxLDkgKzcyMSw5IEBA
IGJvb2wgQXJndW1lbnRDb2RlcjxDcmVkZW50aWFsPjo6ZGVjb2RlKEFyZ3VtZW50RGVjb2RlciYg
ZGVjb2RlciwgQ3JlZGVudGlhbCYgY3JlCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXN0YXRpYyB2
b2lkIGVuY29kZUltYWdlKEFyZ3VtZW50RW5jb2RlciYgZW5jb2RlciwgSW1hZ2UqIGltYWdlKQor
c3RhdGljIHZvaWQgZW5jb2RlSW1hZ2UoQXJndW1lbnRFbmNvZGVyJiBlbmNvZGVyLCBJbWFnZSYg
aW1hZ2UpCiB7Ci0gICAgUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4gYml0bWFwID0gU2hhcmVhYmxl
Qml0bWFwOjpjcmVhdGVTaGFyZWFibGUoSW50U2l6ZShpbWFnZS0+c2l6ZSgpKSwgU2hhcmVhYmxl
Qml0bWFwOjpTdXBwb3J0c0FscGhhKTsKKyAgICBSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBiaXRt
YXAgPSBTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZVNoYXJlYWJsZShJbnRTaXplKGltYWdlLnNpemUo
KSksIFNoYXJlYWJsZUJpdG1hcDo6U3VwcG9ydHNBbHBoYSk7CiAgICAgYml0bWFwLT5jcmVhdGVH
cmFwaGljc0NvbnRleHQoKS0+ZHJhd0ltYWdlKGltYWdlLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBJ
bnRQb2ludCgpKTsKIAogICAgIFNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlIGhhbmRsZTsKQEAgLTc1
Myw3ICs3NTMsNyBAQCBzdGF0aWMgdm9pZCBlbmNvZGVPcHRpb25hbEltYWdlKEFyZ3VtZW50RW5j
b2RlciYgZW5jb2RlciwgSW1hZ2UqIGltYWdlKQogICAgIGVuY29kZXIgPDwgaGFzSW1hZ2U7CiAK
ICAgICBpZiAoaGFzSW1hZ2UpCi0gICAgICAgIGVuY29kZUltYWdlKGVuY29kZXIsIGltYWdlKTsK
KyAgICAgICAgZW5jb2RlSW1hZ2UoZW5jb2RlciwgKmltYWdlKTsKIH0KIAogc3RhdGljIGJvb2wg
ZGVjb2RlT3B0aW9uYWxJbWFnZShBcmd1bWVudERlY29kZXImIGRlY29kZXIsIFJlZlB0cjxJbWFn
ZT4mIGltYWdlKQpAQCAtNzg0LDcgKzc4NCw3IEBAIHZvaWQgQXJndW1lbnRDb2RlcjxDdXJzb3I+
OjplbmNvZGUoQXJndW1lbnRFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBDdXJzb3ImIGN1cnNvCiAg
ICAgfQogCiAgICAgZW5jb2RlciA8PCB0cnVlOwotICAgIGVuY29kZUltYWdlKGVuY29kZXIsIGN1
cnNvci5pbWFnZSgpKTsKKyAgICBlbmNvZGVJbWFnZShlbmNvZGVyLCAqY3Vyc29yLmltYWdlKCkp
OwogICAgIGVuY29kZXIgPDwgY3Vyc29yLmhvdFNwb3QoKTsKICNpZiBFTkFCTEUoTU9VU0VfQ1VS
U09SX1NDQUxFKQogICAgIGVuY29kZXIgPDwgY3Vyc29yLmltYWdlU2NhbGVGYWN0b3IoKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwCmluZGV4IGNj
Y2I4YjZhZGQ0Njk5NzNiZGU0NTY2YmU4NjkxNDdmOGYwODY4YTQuLmY4MDBjMjJmY2Y1MmM3YjM2
NjY4MTRkZGEyNmI3NDQyYTFjNjQwYjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYkZyYW1lLmNwcApAQCAtODM4LDcgKzgzOCw3IEBAIFBhc3NSZWZQdHI8U2hh
cmVhYmxlQml0bWFwPiBXZWJGcmFtZTo6Y3JlYXRlU2VsZWN0aW9uU25hcHNob3QoKSBjb25zdAog
ICAgIGF1dG8gZ3JhcGhpY3NDb250ZXh0ID0gc2hhcmVkU25hcHNob3QtPmNyZWF0ZUdyYXBoaWNz
Q29udGV4dCgpOwogICAgIGZsb2F0IGRldmljZVNjYWxlRmFjdG9yID0gY29yZUZyYW1lKCktPnBh
Z2UoKS0+ZGV2aWNlU2NhbGVGYWN0b3IoKTsKICAgICBncmFwaGljc0NvbnRleHQtPnNjYWxlKEZs
b2F0U2l6ZShkZXZpY2VTY2FsZUZhY3RvciwgZGV2aWNlU2NhbGVGYWN0b3IpKTsKLSAgICBncmFw
aGljc0NvbnRleHQtPmRyYXdJbWFnZUJ1ZmZlcihzbmFwc2hvdC5nZXQoKSwgQ29sb3JTcGFjZURl
dmljZVJHQiwgRmxvYXRQb2ludCgpKTsKKyAgICBncmFwaGljc0NvbnRleHQtPmRyYXdJbWFnZUJ1
ZmZlcigqc25hcHNob3QsIENvbG9yU3BhY2VEZXZpY2VSR0IsIEZsb2F0UG9pbnQoKSk7CiAKICAg
ICByZXR1cm4gc2hhcmVkU25hcHNob3QucmVsZWFzZSgpOwogfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>263053</attachid>
            <date>2015-10-13 20:48:29 -0700</date>
            <delta_ts>2015-10-14 08:43:10 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-150108-20151013204752.patch</filename>
            <type>text/plain</type>
            <size>102192</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTkxMDE3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDc1YTMwZTUzMWQwNjcz
MTZmYjZiYjJmNDc3YzM5MWVmOTNmMDYwZC4uMGZhZTc4N2UyNjJhM2RmYzYzZjk5YWE4NmE0ZWY3
ZmJlYzk3MDViZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDEzMSBAQAogMjAxNS0xMC0xMyAgU2lt
b24gRnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KIAorICAgICAgICBDaGFuZ2UgR3Jh
cGhpY3NDb250ZXh0IGltYWdlLWRyYXdpbmcgZnVuY3Rpb25zIHRvIHRha2UgcmVmZXJlbmNlcwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUwMTA4CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgVGltIEhvcnRvbi4KKworICAgICAgICBDaGFuZ2UgR3JhcGhp
Y3NDb250ZXh0OjpkcmF3SW1hZ2UoKSwgZHJhd1RpbGVkSW1hZ2UoKSwgZHJhd0ltYWdlQnVmZmVy
KCksIGNsaXBUb0ltYWdlQnVmZmVyKCkKKyAgICAgICAgYW5kIGlzQ29tcGF0aWJsZVdpdGhCdWZm
ZXIoKSB0byB0YWtlIHJlZmVyZW5jZXMsIGFuZCBhZGp1c3QgY2FsbGluZyBjb2RlLCBhZGRpbmcK
KyAgICAgICAgbnVsbC1jaGVja3Mgd2hlcmUgbmVjZXNzYXJ5LgorICAgICAgICAKKyAgICAgICAg
Tm8gYmVoYXZpb3IgY2hhbmdlLgorCisgICAgICAgICogY3NzL0NTU0Nyb3NzZmFkZVZhbHVlLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU0Nyb3NzZmFkZVZhbHVlOjppbWFnZSk6CisgICAgICAg
ICogY3NzL0NTU0ZpbHRlckltYWdlVmFsdWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTRmls
dGVySW1hZ2VWYWx1ZTo6aW1hZ2UpOgorICAgICAgICAqIGh0bWwvSFRNTENhbnZhc0VsZW1lbnQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTENhbnZhc0VsZW1lbnQ6OnBhaW50KToKKyAgICAg
ICAgKiBodG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpkcmF3SW1hZ2UpOgorICAgICAgICAo
V2ViQ29yZTo6Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpjb21wb3NpdGVCdWZmZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6ZHJhd0ltYWdlVG9Db250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkNh
bnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6ZnVsbENhbnZhc0NvbXBvc2l0ZWREcmF3SW1hZ2UpOgor
ICAgICAgICAoV2ViQ29yZTo6Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpkcmF3VGV4dEludGVy
bmFsKToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuaDoK
KyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTDJSZW5kZXJpbmdDb250ZXh0LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OldlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OnRleFN1YkltYWdlMkQpOgorICAg
ICAgICAqIGh0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnRleFN1YkltYWdlMkQpOgorICAgICAgICAq
IGh0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6ZHJhd0ltYWdlSW50b0J1ZmZlcik6Cisg
ICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp0ZXhJbWFnZTJEKToK
KyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmg6CisgICAg
ICAgICogcGxhdGZvcm0vU2Nyb2xsVmlldy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxW
aWV3OjpwYWludFBhblNjcm9sbEljb24pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0Ny
b3NzZmFkZUdlbmVyYXRlZEltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNyb3NzZmFkZUdl
bmVyYXRlZEltYWdlOjpDcm9zc2ZhZGVHZW5lcmF0ZWRJbWFnZSk6CisgICAgICAgIChXZWJDb3Jl
OjpkcmF3Q3Jvc3NmYWRlU3ViaW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6Q3Jvc3NmYWRlR2Vu
ZXJhdGVkSW1hZ2U6OmRyYXdDcm9zc2ZhZGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L0Nyb3NzZmFkZUdlbmVyYXRlZEltYWdlLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
R3JhZGllbnRJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFkaWVudEltYWdlOjpkcmF3
UGF0dGVybik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6ZHJhd0ltYWdlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6ZHJhd1RpbGVkSW1hZ2UpOgorICAgICAgICAo
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpkcmF3SW1hZ2VCdWZmZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6R3JhcGhpY3NDb250ZXh0OjpjbGlwVG9JbWFnZUJ1ZmZlcik6CisgICAgICAgIChXZWJD
b3JlOjpHcmFwaGljc0NvbnRleHQ6OmlzQ29tcGF0aWJsZVdpdGhCdWZmZXIpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL1NoYWRvd0JsdXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2hhZG93Qmx1cjo6
ZHJhd1NoYWRvd0J1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpTaGFkb3dCbHVyOjpkcmF3UmVj
dFNoYWRvd1dpdGhvdXRUaWxpbmcpOgorICAgICAgICAoV2ViQ29yZTo6U2hhZG93Qmx1cjo6ZHJh
d0luc2V0U2hhZG93V2l0aG91dFRpbGluZyk6CisgICAgICAgIChXZWJDb3JlOjpTaGFkb3dCbHVy
OjpkcmF3SW5zZXRTaGFkb3dXaXRoVGlsaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlNoYWRvd0Js
dXI6OmRyYXdSZWN0U2hhZG93V2l0aFRpbGluZyk6CisgICAgICAgIChXZWJDb3JlOjpTaGFkb3dC
bHVyOjpkcmF3TGF5ZXJQaWVjZXMpOgorICAgICAgICAoV2ViQ29yZTo6U2hhZG93Qmx1cjo6ZW5k
U2hhZG93TGF5ZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVm
ZmVyQ2Fpcm8uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXI6OmRyYXcpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL1BERkRvY3VtZW50SW1hZ2UuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6UERGRG9jdW1lbnRJbWFnZTo6ZHJhdyk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvZmlsdGVycy9GRUJsZW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZFQmxlbmQ6
OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmls
dGVycy9GRUNvbG9yTWF0cml4LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZFQ29sb3JNYXRyaXg6
OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmls
dGVycy9GRUNvbXBvc2l0ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGRUNvbXBvc2l0ZTo6cGxh
dGZvcm1BcHBseVNvZnR3YXJlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJz
L0ZFRHJvcFNoYWRvdy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGRURyb3BTaGFkb3c6OnBsYXRm
b3JtQXBwbHlTb2Z0d2FyZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9G
RU1lcmdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZFTWVyZ2U6OnBsYXRmb3JtQXBwbHlTb2Z0
d2FyZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRU9mZnNldC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpGRU9mZnNldDo6cGxhdGZvcm1BcHBseVNvZnR3YXJlKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFVGlsZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpGRVRpbGU6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZSk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvZmlsdGVycy9Tb3VyY2VBbHBoYS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpT
b3VyY2VBbHBoYTo6cGxhdGZvcm1BcHBseVNvZnR3YXJlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9maWx0ZXJzL1NvdXJjZUdyYXBoaWMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U291
cmNlR3JhcGhpYzo6cGxhdGZvcm1BcHBseVNvZnR3YXJlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9t
YWMvVGhlbWVNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpUaGVtZU1hYzo6ZHJhd0NlbGxPckZv
Y3VzUmluZ1dpdGhWaWV3SW50b0NvbnRleHQpOgorICAgICAgICAqIHJlbmRlcmluZy9GaWx0ZXJF
ZmZlY3RSZW5kZXJlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGaWx0ZXJFZmZlY3RSZW5kZXJl
ckhlbHBlcjo6YXBwbHlGaWx0ZXJFZmZlY3QpOgorICAgICAgICAqIHJlbmRlcmluZy9JbWFnZVF1
YWxpdHlDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlUXVhbGl0eUNvbnRy
b2xsZXI6OnNob3VsZFBhaW50QXRMb3dRdWFsaXR5KToKKyAgICAgICAgKiByZW5kZXJpbmcvSW1h
Z2VRdWFsaXR5Q29udHJvbGxlci5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJCb3hNb2Rl
bE9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3hNb2RlbE9iamVjdDo6c2hv
dWxkUGFpbnRBdExvd1F1YWxpdHkpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94TW9kZWxP
YmplY3Q6OnBhaW50RmlsbExheWVyRXh0ZW5kZWQpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5k
ZXJCb3hNb2RlbE9iamVjdC5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJFbWJlZGRlZE9i
amVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJFbWJlZGRlZE9iamVjdDo6cGFpbnRT
bmFwc2hvdEltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckVtYmVkZGVkT2JqZWN0Ojpw
YWludENvbnRlbnRzKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyRW1iZWRkZWRPYmplY3Qu
aDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVySW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVySW1hZ2U6OnBhaW50UmVwbGFjZWQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
SW1hZ2U6OnBhaW50SW50b1JlY3QpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJJbWFnZVJl
c291cmNlU3R5bGVJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJJbWFnZVJlc291
cmNlU3R5bGVJbWFnZTo6c2h1dGRvd24pOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVySW1hZ2VS
ZXNvdXJjZVN0eWxlSW1hZ2U6OmltYWdlKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OmRyYXdQbGF0Zm9ybVJlc2l6
ZXJJbWFnZSk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxpc3RNYXJrZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyTGlzdE1hcmtlcjo6cGFpbnQpOgorICAgICAgICAqIHJlbmRl
cmluZy9SZW5kZXJTbmFwc2hvdHRlZFBsdWdJbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJTbmFwc2hvdHRlZFBsdWdJbjo6cGFpbnRTbmFwc2hvdCk6CisgICAgICAgICogcmVuZGVyaW5n
L1JlbmRlclRoZW1lTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVNYWM6OnBh
aW50UHJvZ3Jlc3NCYXIpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVNYWM6OnBhaW50
U25hcHNob3R0ZWRQbHVnaW5PdmVybGF5KToKKyAgICAgICAgKiByZW5kZXJpbmcvc2hhcGVzL1No
YXBlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNoYXBlOjpjcmVhdGVSYXN0ZXJTaGFwZSk6Cisg
ICAgICAgICogcmVuZGVyaW5nL3NoYXBlcy9TaGFwZU91dHNpZGVJbmZvLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlNoYXBlT3V0c2lkZUluZm86OmNyZWF0ZVNoYXBlRm9ySW1hZ2UpOiBEZWxldGVk
LgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9OaW5lUGllY2VJbWFnZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpOaW5lUGllY2VJbWFnZTo6cGFpbnQpOgorICAgICAgICAqIHJlbmRlcmluZy9z
dmcvUmVuZGVyU1ZHSW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHSW1hZ2U6
OnBhaW50Rm9yZWdyb3VuZCk6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNv
dXJjZUZpbHRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdSZXNvdXJjZUZpbHRl
cjo6cG9zdEFwcGx5UmVzb3VyY2UpOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvU1ZHUmVuZGVy
aW5nQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdSZW5kZXJpbmdDb250ZXh0Ojpj
bGlwVG9JbWFnZUJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpTVkdSZW5kZXJpbmdDb250ZXh0
OjpidWZmZXJGb3JlZ3JvdW5kKToKKyAgICAgICAgKiBzdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdG
RUltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZFSW1hZ2U6OnBsYXRmb3JtQXBwbHlTb2Z0
d2FyZSk6CisKKzIwMTUtMTAtMTMgIFNpbW9uIEZyYXNlciAgPHNpbW9uLmZyYXNlckBhcHBsZS5j
b20+CisKICAgICAgICAgQWRkIGhlbHBlciBmdW50aW9uIGZvciBjaGVja2luZyBwb2ludGVyIGVx
dWl2YWxlbmN5IGFuZCB1c2UgaXQKICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE1MDAyMgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VM
b2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggYzJmOWExNGNmZDgyNjI3MTgyODhm
OGEwOGJkYTkzZWQyODMwMzFjNS4uZmFhMTE4ZGE4NGZjMjMxZmI1Mzk4OTg4MWE5ZTI3OTkxYjMw
YTQyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIzIEBACisyMDE1LTEwLTEzICBTaW1vbiBGcmFz
ZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgorCisgICAgICAgIENoYW5nZSBHcmFwaGljc0Nv
bnRleHQgaW1hZ2UtZHJhd2luZyBmdW5jdGlvbnMgdG8gdGFrZSByZWZlcmVuY2VzCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTAxMDgKKworICAgICAg
ICBSZXZpZXdlZCBieSBUaW0gSG9ydG9uLgorCisgICAgICAgIENoYW5nZSBHcmFwaGljc0NvbnRl
eHQ6OmRyYXdJbWFnZSgpLCBkcmF3VGlsZWRJbWFnZSgpLCBkcmF3SW1hZ2VCdWZmZXIoKSwgY2xp
cFRvSW1hZ2VCdWZmZXIoKQorICAgICAgICBhbmQgaXNDb21wYXRpYmxlV2l0aEJ1ZmZlcigpIHRv
IHRha2UgcmVmZXJlbmNlcywgYW5kIGFkanVzdCBjYWxsaW5nIGNvZGUsIGFkZGluZworICAgICAg
ICBudWxsLWNoZWNrcyB3aGVyZSBuZWNlc3NhcnkuCisKKyAgICAgICAgKiBTaGFyZWQvQ29udGV4
dE1lbnVDb250ZXh0RGF0YS5jcHA6CisgICAgICAgIChXZWJLaXQ6OkNvbnRleHRNZW51Q29udGV4
dERhdGE6OkNvbnRleHRNZW51Q29udGV4dERhdGEpOgorICAgICAgICAqIFNoYXJlZC9XZWJDb3Jl
QXJndW1lbnRDb2RlcnMuY3BwOgorICAgICAgICAoSVBDOjplbmNvZGVJbWFnZSk6CisgICAgICAg
IChJUEM6OmVuY29kZU9wdGlvbmFsSW1hZ2UpOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVy
PEN1cnNvcj46OmVuY29kZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1l
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWU6OmNyZWF0ZVNlbGVjdGlvblNuYXBzaG90
KToKKwogMjAxNS0xMC0xMyAgTXlsZXMgQy4gTWF4ZmllbGQgIDxtbWF4ZmllbGRAYXBwbGUuY29t
PgogCiAgICAgICAgIFNwbGl0IFR5cGVzZXR0aW5nRmVhdHVyZXMgaW50byBrZXJuaW5nIGFuZCBs
aWdhdHVyZXMgYm9vbHMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDcm9zc2Zh
ZGVWYWx1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ3Jvc3NmYWRlVmFsdWUuY3BwCmlu
ZGV4IDNjNzE3Y2IxNWM4OThhM2M1MDRlZDY0NjI3NzM1NzQ5MjVkNzc5OTguLjA3MzUwOGIwYTY3
ZDlmNTQ4ZjgwNGYzZjQzYTU2YTVhYmUxYmE4NzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NDcm9zc2ZhZGVWYWx1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0Ny
b3NzZmFkZVZhbHVlLmNwcApAQCAtMTY1LDcgKzE2NSw3IEBAIFJlZlB0cjxJbWFnZT4gQ1NTQ3Jv
c3NmYWRlVmFsdWU6OmltYWdlKFJlbmRlckVsZW1lbnQqIHJlbmRlcmVyLCBjb25zdCBGbG9hdFNp
emUmCiAgICAgaWYgKCFmcm9tSW1hZ2UgfHwgIXRvSW1hZ2UpCiAgICAgICAgIHJldHVybiBJbWFn
ZTo6bnVsbEltYWdlKCk7CiAKLSAgICBtX2dlbmVyYXRlZEltYWdlID0gQ3Jvc3NmYWRlR2VuZXJh
dGVkSW1hZ2U6OmNyZWF0ZShmcm9tSW1hZ2UsIHRvSW1hZ2UsIG1fcGVyY2VudGFnZVZhbHVlLT5n
ZXRGbG9hdFZhbHVlKCksIGZpeGVkU2l6ZShyZW5kZXJlciksIHNpemUpOworICAgIG1fZ2VuZXJh
dGVkSW1hZ2UgPSBDcm9zc2ZhZGVHZW5lcmF0ZWRJbWFnZTo6Y3JlYXRlKCpmcm9tSW1hZ2UsICp0
b0ltYWdlLCBtX3BlcmNlbnRhZ2VWYWx1ZS0+Z2V0RmxvYXRWYWx1ZSgpLCBmaXhlZFNpemUocmVu
ZGVyZXIpLCBzaXplKTsKIAogICAgIHJldHVybiBtX2dlbmVyYXRlZEltYWdlOwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZpbHRlckltYWdlVmFsdWUuY3BwIGIvU291cmNl
L1dlYkNvcmUvY3NzL0NTU0ZpbHRlckltYWdlVmFsdWUuY3BwCmluZGV4IDdmZmY0YzQ5ODk0ZWQy
ZTQ0NWQ0MTA0MWRkN2Q0N2QyYTVmNGRlODIuLmJlNzVkYzZlZjY2ZjEwYTQ4OWJkMjg0NmM2OTI0
Yzc3MjYwNjAyM2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGaWx0ZXJJbWFn
ZVZhbHVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRmlsdGVySW1hZ2VWYWx1ZS5j
cHAKQEAgLTEyNCw4ICsxMjQsOSBAQCBSZWZQdHI8SW1hZ2U+IENTU0ZpbHRlckltYWdlVmFsdWU6
OmltYWdlKFJlbmRlckVsZW1lbnQqIHJlbmRlcmVyLCBjb25zdCBGbG9hdFNpegogICAgIHN0ZDo6
dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4gdGV4dHVyZSA9IEltYWdlQnVmZmVyOjpjcmVhdGUoc2l6
ZSwgVW5hY2NlbGVyYXRlZCk7CiAgICAgaWYgKCF0ZXh0dXJlKQogICAgICAgICByZXR1cm4gSW1h
Z2U6Om51bGxJbWFnZSgpOworCiAgICAgRmxvYXRSZWN0IGltYWdlUmVjdCA9IEZsb2F0UmVjdChG
bG9hdFBvaW50KCksIHNpemUpOwotICAgIHRleHR1cmUtPmNvbnRleHQoKS5kcmF3SW1hZ2UoaW1h
Z2UsIENvbG9yU3BhY2VEZXZpY2VSR0IsIGltYWdlUmVjdCk7CisgICAgdGV4dHVyZS0+Y29udGV4
dCgpLmRyYXdJbWFnZSgqaW1hZ2UsIENvbG9yU3BhY2VEZXZpY2VSR0IsIGltYWdlUmVjdCk7CiAK
ICAgICBSZWZQdHI8RmlsdGVyRWZmZWN0UmVuZGVyZXI+IGZpbHRlclJlbmRlcmVyID0gRmlsdGVy
RWZmZWN0UmVuZGVyZXI6OmNyZWF0ZSgpOwogICAgIGZpbHRlclJlbmRlcmVyLT5zZXRTb3VyY2VJ
bWFnZShXVEY6Om1vdmUodGV4dHVyZSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MQ2FudmFzRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxDYW52YXNF
bGVtZW50LmNwcAppbmRleCAwM2VjN2RmOTg5MzFhMzQyMWRlYmViYzRkYzBkMTU0YWE5NzJhODRj
Li41NzI0YzFhYTJhN2ZkYWJjYmEwNDYwNmMyNWEzMzQ5ZTI0MWIzMWExIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxDYW52YXNFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxDYW52YXNFbGVtZW50LmNwcApAQCAtMzg4LDkgKzM4OCw5IEBAIHZvaWQg
SFRNTENhbnZhc0VsZW1lbnQ6OnBhaW50KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3Qg
TGF5b3V0UmVjdCYgciwgYm9vCiAjaWYgRU5BQkxFKENTU19JTUFHRV9PUklFTlRBVElPTikKICAg
ICAgICAgICAgICAgICBvcmllbnRhdGlvbkRlc2NyaXB0aW9uLnNldEltYWdlT3JpZW50YXRpb25F
bnVtKHJlbmRlcmVyKCktPnN0eWxlKCkuaW1hZ2VPcmllbnRhdGlvbigpKTsKICNlbmRpZiAKLSAg
ICAgICAgICAgICAgICBjb250ZXh0LmRyYXdJbWFnZShtX3ByZXNlbnRlZEltYWdlLmdldCgpLCBD
b2xvclNwYWNlRGV2aWNlUkdCLCBzbmFwcGVkSW50UmVjdChyKSwgSW1hZ2VQYWludGluZ09wdGlv
bnMob3JpZW50YXRpb25EZXNjcmlwdGlvbiwgdXNlTG93UXVhbGl0eVNjYWxlKSk7CisgICAgICAg
ICAgICAgICAgY29udGV4dC5kcmF3SW1hZ2UoKm1fcHJlc2VudGVkSW1hZ2UsIENvbG9yU3BhY2VE
ZXZpY2VSR0IsIHNuYXBwZWRJbnRSZWN0KHIpLCBJbWFnZVBhaW50aW5nT3B0aW9ucyhvcmllbnRh
dGlvbkRlc2NyaXB0aW9uLCB1c2VMb3dRdWFsaXR5U2NhbGUpKTsKICAgICAgICAgICAgIH0gZWxz
ZQotICAgICAgICAgICAgICAgIGNvbnRleHQuZHJhd0ltYWdlQnVmZmVyKGltYWdlQnVmZmVyLCBD
b2xvclNwYWNlRGV2aWNlUkdCLCBzbmFwcGVkSW50UmVjdChyKSwgdXNlTG93UXVhbGl0eVNjYWxl
KTsKKyAgICAgICAgICAgICAgICBjb250ZXh0LmRyYXdJbWFnZUJ1ZmZlcigqaW1hZ2VCdWZmZXIs
IENvbG9yU3BhY2VEZXZpY2VSR0IsIHNuYXBwZWRJbnRSZWN0KHIpLCB1c2VMb3dRdWFsaXR5U2Nh
bGUpOwogICAgICAgICB9CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcAppbmRleCBiNDAxNWVmZjQ3MmU4
NGU5MjliNTM5MTU1Mzk1ZDRiNWNjZTVmYjUxLi5iMTlkOWUwZGM3MDNkNTU1M2Y3MzI2MjEzM2My
MGM5NGY2MjhjNzlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52
YXNSZW5kZXJpbmdDb250ZXh0MkQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFz
L0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHAKQEAgLTE0NDgsMTcgKzE0NDgsMTcgQEAgdm9p
ZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmRyYXdJbWFnZShIVE1MSW1hZ2VFbGVtZW50KiBp
bWFnZUVsZW1lbnQsIGNvbnN0IEYKICAgICB9CiAKICAgICBpZiAocmVjdENvbnRhaW5zQ2FudmFz
KG5vcm1hbGl6ZWREc3RSZWN0KSkgewotICAgICAgICBjLT5kcmF3SW1hZ2UoaW1hZ2UsIENvbG9y
U3BhY2VEZXZpY2VSR0IsIG5vcm1hbGl6ZWREc3RSZWN0LCBub3JtYWxpemVkU3JjUmVjdCwgSW1h
Z2VQYWludGluZ09wdGlvbnMob3AsIGJsZW5kTW9kZSkpOworICAgICAgICBjLT5kcmF3SW1hZ2Uo
KmltYWdlLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBub3JtYWxpemVkRHN0UmVjdCwgbm9ybWFsaXpl
ZFNyY1JlY3QsIEltYWdlUGFpbnRpbmdPcHRpb25zKG9wLCBibGVuZE1vZGUpKTsKICAgICAgICAg
ZGlkRHJhd0VudGlyZUNhbnZhcygpOwogICAgIH0gZWxzZSBpZiAoaXNGdWxsQ2FudmFzQ29tcG9z
aXRlTW9kZShvcCkpIHsKLSAgICAgICAgZnVsbENhbnZhc0NvbXBvc2l0ZWREcmF3SW1hZ2UoaW1h
Z2UsIENvbG9yU3BhY2VEZXZpY2VSR0IsIG5vcm1hbGl6ZWREc3RSZWN0LCBub3JtYWxpemVkU3Jj
UmVjdCwgb3ApOworICAgICAgICBmdWxsQ2FudmFzQ29tcG9zaXRlZERyYXdJbWFnZSgqaW1hZ2Us
IENvbG9yU3BhY2VEZXZpY2VSR0IsIG5vcm1hbGl6ZWREc3RSZWN0LCBub3JtYWxpemVkU3JjUmVj
dCwgb3ApOwogICAgICAgICBkaWREcmF3RW50aXJlQ2FudmFzKCk7CiAgICAgfSBlbHNlIGlmIChv
cCA9PSBDb21wb3NpdGVDb3B5KSB7CiAgICAgICAgIGNsZWFyQ2FudmFzKCk7Ci0gICAgICAgIGMt
PmRyYXdJbWFnZShpbWFnZSwgQ29sb3JTcGFjZURldmljZVJHQiwgbm9ybWFsaXplZERzdFJlY3Qs
IG5vcm1hbGl6ZWRTcmNSZWN0LCBJbWFnZVBhaW50aW5nT3B0aW9ucyhvcCwgYmxlbmRNb2RlKSk7
CisgICAgICAgIGMtPmRyYXdJbWFnZSgqaW1hZ2UsIENvbG9yU3BhY2VEZXZpY2VSR0IsIG5vcm1h
bGl6ZWREc3RSZWN0LCBub3JtYWxpemVkU3JjUmVjdCwgSW1hZ2VQYWludGluZ09wdGlvbnMob3As
IGJsZW5kTW9kZSkpOwogICAgICAgICBkaWREcmF3RW50aXJlQ2FudmFzKCk7CiAgICAgfSBlbHNl
IHsKLSAgICAgICAgYy0+ZHJhd0ltYWdlKGltYWdlLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBub3Jt
YWxpemVkRHN0UmVjdCwgbm9ybWFsaXplZFNyY1JlY3QsIEltYWdlUGFpbnRpbmdPcHRpb25zKG9w
LCBibGVuZE1vZGUpKTsKKyAgICAgICAgYy0+ZHJhd0ltYWdlKCppbWFnZSwgQ29sb3JTcGFjZURl
dmljZVJHQiwgbm9ybWFsaXplZERzdFJlY3QsIG5vcm1hbGl6ZWRTcmNSZWN0LCBJbWFnZVBhaW50
aW5nT3B0aW9ucyhvcCwgYmxlbmRNb2RlKSk7CiAgICAgICAgIGRpZERyYXcobm9ybWFsaXplZERz
dFJlY3QpOwogICAgIH0KICAgICAKQEAgLTE1MzYsMTcgKzE1MzYsMTcgQEAgdm9pZCBDYW52YXNS
ZW5kZXJpbmdDb250ZXh0MkQ6OmRyYXdJbWFnZShIVE1MQ2FudmFzRWxlbWVudCogc291cmNlQ2Fu
dmFzLCBjb25zdAogI2VuZGlmCiAKICAgICBpZiAocmVjdENvbnRhaW5zQ2FudmFzKGRzdFJlY3Qp
KSB7Ci0gICAgICAgIGMtPmRyYXdJbWFnZUJ1ZmZlcihidWZmZXIsIENvbG9yU3BhY2VEZXZpY2VS
R0IsIGRzdFJlY3QsIHNyY1JlY3QsIEltYWdlUGFpbnRpbmdPcHRpb25zKHN0YXRlKCkuZ2xvYmFs
Q29tcG9zaXRlLCBzdGF0ZSgpLmdsb2JhbEJsZW5kKSk7CisgICAgICAgIGMtPmRyYXdJbWFnZUJ1
ZmZlcigqYnVmZmVyLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBkc3RSZWN0LCBzcmNSZWN0LCBJbWFn
ZVBhaW50aW5nT3B0aW9ucyhzdGF0ZSgpLmdsb2JhbENvbXBvc2l0ZSwgc3RhdGUoKS5nbG9iYWxC
bGVuZCkpOwogICAgICAgICBkaWREcmF3RW50aXJlQ2FudmFzKCk7CiAgICAgfSBlbHNlIGlmIChp
c0Z1bGxDYW52YXNDb21wb3NpdGVNb2RlKHN0YXRlKCkuZ2xvYmFsQ29tcG9zaXRlKSkgewotICAg
ICAgICBmdWxsQ2FudmFzQ29tcG9zaXRlZERyYXdJbWFnZShidWZmZXIsIENvbG9yU3BhY2VEZXZp
Y2VSR0IsIGRzdFJlY3QsIHNyY1JlY3QsIHN0YXRlKCkuZ2xvYmFsQ29tcG9zaXRlKTsKKyAgICAg
ICAgZnVsbENhbnZhc0NvbXBvc2l0ZWREcmF3SW1hZ2UoKmJ1ZmZlciwgQ29sb3JTcGFjZURldmlj
ZVJHQiwgZHN0UmVjdCwgc3JjUmVjdCwgc3RhdGUoKS5nbG9iYWxDb21wb3NpdGUpOwogICAgICAg
ICBkaWREcmF3RW50aXJlQ2FudmFzKCk7CiAgICAgfSBlbHNlIGlmIChzdGF0ZSgpLmdsb2JhbENv
bXBvc2l0ZSA9PSBDb21wb3NpdGVDb3B5KSB7CiAgICAgICAgIGNsZWFyQ2FudmFzKCk7Ci0gICAg
ICAgIGMtPmRyYXdJbWFnZUJ1ZmZlcihidWZmZXIsIENvbG9yU3BhY2VEZXZpY2VSR0IsIGRzdFJl
Y3QsIHNyY1JlY3QsIEltYWdlUGFpbnRpbmdPcHRpb25zKHN0YXRlKCkuZ2xvYmFsQ29tcG9zaXRl
LCBzdGF0ZSgpLmdsb2JhbEJsZW5kKSk7CisgICAgICAgIGMtPmRyYXdJbWFnZUJ1ZmZlcigqYnVm
ZmVyLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBkc3RSZWN0LCBzcmNSZWN0LCBJbWFnZVBhaW50aW5n
T3B0aW9ucyhzdGF0ZSgpLmdsb2JhbENvbXBvc2l0ZSwgc3RhdGUoKS5nbG9iYWxCbGVuZCkpOwog
ICAgICAgICBkaWREcmF3RW50aXJlQ2FudmFzKCk7CiAgICAgfSBlbHNlIHsKLSAgICAgICAgYy0+
ZHJhd0ltYWdlQnVmZmVyKGJ1ZmZlciwgQ29sb3JTcGFjZURldmljZVJHQiwgZHN0UmVjdCwgc3Jj
UmVjdCwgSW1hZ2VQYWludGluZ09wdGlvbnMoc3RhdGUoKS5nbG9iYWxDb21wb3NpdGUsIHN0YXRl
KCkuZ2xvYmFsQmxlbmQpKTsKKyAgICAgICAgYy0+ZHJhd0ltYWdlQnVmZmVyKCpidWZmZXIsIENv
bG9yU3BhY2VEZXZpY2VSR0IsIGRzdFJlY3QsIHNyY1JlY3QsIEltYWdlUGFpbnRpbmdPcHRpb25z
KHN0YXRlKCkuZ2xvYmFsQ29tcG9zaXRlLCBzdGF0ZSgpLmdsb2JhbEJsZW5kKSk7CiAgICAgICAg
IGRpZERyYXcoZHN0UmVjdCk7CiAgICAgfQogfQpAQCAtMTcwOSw3ICsxNzA5LDcgQEAgc3RkOjp1
bmlxdWVfcHRyPEltYWdlQnVmZmVyPiBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmNyZWF0ZUNv
bXBvc2l0aW5nQnVmZmVyKGMKICAgICByZXR1cm4gSW1hZ2VCdWZmZXI6OmNyZWF0ZShidWZmZXJS
ZWN0LnNpemUoKSwgaXNBY2NlbGVyYXRlZCgpID8gQWNjZWxlcmF0ZWQgOiBVbmFjY2VsZXJhdGVk
KTsKIH0KIAotdm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmNvbXBvc2l0ZUJ1ZmZlcihJ
bWFnZUJ1ZmZlciogYnVmZmVyLCBjb25zdCBJbnRSZWN0JiBidWZmZXJSZWN0LCBDb21wb3NpdGVP
cGVyYXRvciBvcCkKK3ZvaWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpjb21wb3NpdGVCdWZm
ZXIoSW1hZ2VCdWZmZXImIGJ1ZmZlciwgY29uc3QgSW50UmVjdCYgYnVmZmVyUmVjdCwgQ29tcG9z
aXRlT3BlcmF0b3Igb3ApCiB7CiAgICAgSW50UmVjdCBjYW52YXNSZWN0KDAsIDAsIGNhbnZhcygp
LT53aWR0aCgpLCBjYW52YXMoKS0+aGVpZ2h0KCkpOwogICAgIGNhbnZhc1JlY3QgPSBjYW52YXMo
KS0+YmFzZVRyYW5zZm9ybSgpLm1hcFJlY3QoY2FudmFzUmVjdCk7CkBAIC0xNzMwLDE3ICsxNzMw
LDE3IEBAIHZvaWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpjb21wb3NpdGVCdWZmZXIoSW1h
Z2VCdWZmZXIqIGJ1ZmZlciwgY29uc3QgSW50UmVjCiAgICAgYy0+cmVzdG9yZSgpOwogfQogCi1z
dGF0aWMgdm9pZCBkcmF3SW1hZ2VUb0NvbnRleHQoSW1hZ2UqIGltYWdlLCBHcmFwaGljc0NvbnRl
eHQmIGNvbnRleHQsIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBjb25zdCBGbG9hdFJlY3Qm
IGRlc3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjLCBDb21wb3NpdGVPcGVyYXRvciBvcCkKK3N0YXRp
YyB2b2lkIGRyYXdJbWFnZVRvQ29udGV4dChJbWFnZSYgaW1hZ2UsIEdyYXBoaWNzQ29udGV4dCYg
Y29udGV4dCwgQ29sb3JTcGFjZSBzdHlsZUNvbG9yU3BhY2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVz
dCwgY29uc3QgRmxvYXRSZWN0JiBzcmMsIENvbXBvc2l0ZU9wZXJhdG9yIG9wKQogewogICAgIGNv
bnRleHQuZHJhd0ltYWdlKGltYWdlLCBzdHlsZUNvbG9yU3BhY2UsIGRlc3QsIHNyYywgb3ApOwog
fQogCi1zdGF0aWMgdm9pZCBkcmF3SW1hZ2VUb0NvbnRleHQoSW1hZ2VCdWZmZXIqIGltYWdlQnVm
ZmVyLCBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNl
LCBjb25zdCBGbG9hdFJlY3QmIGRlc3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjLCBDb21wb3NpdGVP
cGVyYXRvciBvcCkKK3N0YXRpYyB2b2lkIGRyYXdJbWFnZVRvQ29udGV4dChJbWFnZUJ1ZmZlciYg
aW1hZ2VCdWZmZXIsIEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgQ29sb3JTcGFjZSBzdHlsZUNv
bG9yU3BhY2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdCwgY29uc3QgRmxvYXRSZWN0JiBzcmMsIENv
bXBvc2l0ZU9wZXJhdG9yIG9wKQogewogICAgIGNvbnRleHQuZHJhd0ltYWdlQnVmZmVyKGltYWdl
QnVmZmVyLCBzdHlsZUNvbG9yU3BhY2UsIGRlc3QsIHNyYywgb3ApOwogfQogCi10ZW1wbGF0ZTxj
bGFzcyBUPiB2b2lkICBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmZ1bGxDYW52YXNDb21wb3Np
dGVkRHJhd0ltYWdlKFQqIGltYWdlLCBDb2xvclNwYWNlIHN0eWxlQ29sb3JTcGFjZSwgY29uc3Qg
RmxvYXRSZWN0JiBkZXN0LCBjb25zdCBGbG9hdFJlY3QmIHNyYywgQ29tcG9zaXRlT3BlcmF0b3Ig
b3ApCit0ZW1wbGF0ZTxjbGFzcyBUPiB2b2lkICBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmZ1
bGxDYW52YXNDb21wb3NpdGVkRHJhd0ltYWdlKFQmIGltYWdlLCBDb2xvclNwYWNlIHN0eWxlQ29s
b3JTcGFjZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0LCBjb25zdCBGbG9hdFJlY3QmIHNyYywgQ29t
cG9zaXRlT3BlcmF0b3Igb3ApCiB7CiAgICAgQVNTRVJUKGlzRnVsbENhbnZhc0NvbXBvc2l0ZU1v
ZGUob3ApKTsKIApAQCAtMTc2OCw3ICsxNzY4LDcgQEAgdGVtcGxhdGU8Y2xhc3MgVD4gdm9pZCAg
Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpmdWxsQ2FudmFzQ29tcG9zaXRlZERyYXdJbWFnZSgK
ICAgICBidWZmZXItPmNvbnRleHQoKS5jb25jYXRDVE0oZWZmZWN0aXZlVHJhbnNmb3JtKTsKICAg
ICBkcmF3SW1hZ2VUb0NvbnRleHQoaW1hZ2UsIGJ1ZmZlci0+Y29udGV4dCgpLCBzdHlsZUNvbG9y
U3BhY2UsIGFkanVzdGVkRGVzdCwgc3JjLCBDb21wb3NpdGVTb3VyY2VPdmVyKTsKIAotICAgIGNv
bXBvc2l0ZUJ1ZmZlcihidWZmZXIuZ2V0KCksIGJ1ZmZlclJlY3QsIG9wKTsKKyAgICBjb21wb3Np
dGVCdWZmZXIoKmJ1ZmZlciwgYnVmZmVyUmVjdCwgb3ApOwogfQogCiB2b2lkIENhbnZhc1JlbmRl
cmluZ0NvbnRleHQyRDo6cHJlcGFyZUdyYWRpZW50Rm9yRGFzaGJvYXJkKENhbnZhc0dyYWRpZW50
JiBncmFkaWVudCkgY29uc3QKQEAgLTI0MTksNyArMjQxOSw3IEBAIHZvaWQgQ2FudmFzUmVuZGVy
aW5nQ29udGV4dDJEOjpkcmF3VGV4dEludGVybmFsKGNvbnN0IFN0cmluZyYgdGV4dCwgZmxvYXQg
eCwgZmxvCiAKICAgICAvLyBUaGUgc2xvcCBidWlsdCBpbiB0byB0aGlzIG1hc2sgcmVjdCBtYXRj
aGVzIHRoZSBoZXVyaXN0aWMgdXNlZCBpbiBGb250Q0dXaW4uY3BwIGZvciBHREkgdGV4dC4KICAg
ICBGbG9hdFJlY3QgdGV4dFJlY3QgPSBGbG9hdFJlY3QobG9jYXRpb24ueCgpIC0gZm9udE1ldHJp
Y3MuaGVpZ2h0KCkgLyAyLCBsb2NhdGlvbi55KCkgLSBmb250TWV0cmljcy5hc2NlbnQoKSAtIGZv
bnRNZXRyaWNzLmxpbmVHYXAoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
d2lkdGggKyBmb250TWV0cmljcy5oZWlnaHQoKSwgZm9udE1ldHJpY3MubGluZVNwYWNpbmcoKSk7
CisgICAgICAgIHdpZHRoICsgZm9udE1ldHJpY3MuaGVpZ2h0KCksIGZvbnRNZXRyaWNzLmxpbmVT
cGFjaW5nKCkpOwogICAgIGlmICghZmlsbCkKICAgICAgICAgaW5mbGF0ZVN0cm9rZVJlY3QodGV4
dFJlY3QpOwogCkBAIC0yNDYxLDYgKzI0NjEsOCBAQCB2b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRl
eHQyRDo6ZHJhd1RleHRJbnRlcm5hbChjb25zdCBTdHJpbmcmIHRleHQsIGZsb2F0IHgsIGZsbwog
ICAgICAgICB9CiAKICAgICAgICAgc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPiBtYXNrSW1h
Z2UgPSBjLT5jcmVhdGVDb21wYXRpYmxlQnVmZmVyKG1hc2tSZWN0LnNpemUoKSk7CisgICAgICAg
IGlmICghbWFza0ltYWdlKQorICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgIEdyYXBoaWNz
Q29udGV4dCYgbWFza0ltYWdlQ29udGV4dCA9IG1hc2tJbWFnZS0+Y29udGV4dCgpOwogCkBAIC0y
NDg0LDcgKzI0ODYsNyBAQCB2b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6ZHJhd1RleHRJ
bnRlcm5hbChjb25zdCBTdHJpbmcmIHRleHQsIGZsb2F0IHgsIGZsbwogICAgICAgICB9CiAKICAg
ICAgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKCpjKTsKLSAgICAgICAg
Yy0+Y2xpcFRvSW1hZ2VCdWZmZXIobWFza0ltYWdlLmdldCgpLCBtYXNrUmVjdCk7CisgICAgICAg
IGMtPmNsaXBUb0ltYWdlQnVmZmVyKCptYXNrSW1hZ2UsIG1hc2tSZWN0KTsKICAgICAgICAgZHJh
d1N0eWxlLmFwcGx5RmlsbENvbG9yKGMpOwogICAgICAgICBjLT5maWxsUmVjdChtYXNrUmVjdCk7
CiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFz
L0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMv
Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmgKaW5kZXggYTQ0ZTZiOTMwZGM2NWNlNDE0MDhlMDNi
MjU0NTFmNzAwY2JhMmExOS4uODczZjY0M2VlODcxOTliZjZjNDhhNjM4NDAyYjkyODQxNTk0NTNk
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5n
Q29udGV4dDJELmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVy
aW5nQ29udGV4dDJELmgKQEAgLTM2MywxMSArMzYzLDExIEBAIHByaXZhdGU6CiAKICAgICB0ZW1w
bGF0ZTxjbGFzcyBUPiBJbnRSZWN0IGNhbGN1bGF0ZUNvbXBvc2l0aW5nQnVmZmVyUmVjdChjb25z
dCBUJiwgSW50U2l6ZSopOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4gY3JlYXRl
Q29tcG9zaXRpbmdCdWZmZXIoY29uc3QgSW50UmVjdCYpOwotICAgIHZvaWQgY29tcG9zaXRlQnVm
ZmVyKEltYWdlQnVmZmVyKiwgY29uc3QgSW50UmVjdCYsIENvbXBvc2l0ZU9wZXJhdG9yKTsKKyAg
ICB2b2lkIGNvbXBvc2l0ZUJ1ZmZlcihJbWFnZUJ1ZmZlciYsIGNvbnN0IEludFJlY3QmLCBDb21w
b3NpdGVPcGVyYXRvcik7CiAKICAgICB2b2lkIGluZmxhdGVTdHJva2VSZWN0KEZsb2F0UmVjdCYp
IGNvbnN0OwogCi0gICAgdGVtcGxhdGU8Y2xhc3MgVD4gdm9pZCBmdWxsQ2FudmFzQ29tcG9zaXRl
ZERyYXdJbWFnZShUKiwgQ29sb3JTcGFjZSwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRS
ZWN0JiwgQ29tcG9zaXRlT3BlcmF0b3IpOworICAgIHRlbXBsYXRlPGNsYXNzIFQ+IHZvaWQgZnVs
bENhbnZhc0NvbXBvc2l0ZWREcmF3SW1hZ2UoVCYsIENvbG9yU3BhY2UsIGNvbnN0IEZsb2F0UmVj
dCYsIGNvbnN0IEZsb2F0UmVjdCYsIENvbXBvc2l0ZU9wZXJhdG9yKTsKIAogICAgIHZvaWQgcHJl
cGFyZUdyYWRpZW50Rm9yRGFzaGJvYXJkKENhbnZhc0dyYWRpZW50JiBncmFkaWVudCkgY29uc3Q7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMMlJlbmRlcmlu
Z0NvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0wyUmVuZGVyaW5n
Q29udGV4dC5jcHAKaW5kZXggNTNiMjc4ZGJkYWNmZGY3ODFlOGFiMTMyMjE1YmE0MzllYTUyMDMx
ZC4uYWNjNjdkOGQzNGVlZmVkMDdmMmYyNjU5YTliNjQ5NDI4Mjc3Y2I3OSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0wyUmVuZGVyaW5nQ29udGV4dC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0wyUmVuZGVyaW5nQ29udGV4dC5jcHAK
QEAgLTE0MTksOCArMTQxOSwxMSBAQCB2b2lkIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OnRleFN1
YkltYWdlMkQoR0MzRGVudW0gdGFyZ2V0LCBHQzNEaW50IGxldmVsLCBHQzNEaQogICAgICAgICBy
ZXR1cm47CiAgICAgCiAgICAgUmVmUHRyPEltYWdlPiBpbWFnZUZvclJlbmRlciA9IGltYWdlLT5j
YWNoZWRJbWFnZSgpLT5pbWFnZUZvclJlbmRlcmVyKGltYWdlLT5yZW5kZXJlcigpKTsKKyAgICBp
ZiAoIWltYWdlRm9yUmVuZGVyKQorICAgICAgICByZXR1cm47CisKICAgICBpZiAoaW1hZ2VGb3JS
ZW5kZXItPmlzU1ZHSW1hZ2UoKSkKLSAgICAgICAgaW1hZ2VGb3JSZW5kZXIgPSBkcmF3SW1hZ2VJ
bnRvQnVmZmVyKGltYWdlRm9yUmVuZGVyLmdldCgpLCBpbWFnZS0+d2lkdGgoKSwgaW1hZ2UtPmhl
aWdodCgpLCAxKTsKKyAgICAgICAgaW1hZ2VGb3JSZW5kZXIgPSBkcmF3SW1hZ2VJbnRvQnVmZmVy
KCppbWFnZUZvclJlbmRlciwgaW1hZ2UtPndpZHRoKCksIGltYWdlLT5oZWlnaHQoKSwgMSk7CiAg
ICAgCiAgICAgaWYgKCFpbWFnZUZvclJlbmRlciB8fCAhdmFsaWRhdGVUZXhGdW5jKCJ0ZXhTdWJJ
bWFnZTJEIiwgVGV4U3ViSW1hZ2UsIFNvdXJjZUhUTUxJbWFnZUVsZW1lbnQsIHRhcmdldCwgbGV2
ZWwsIEdyYXBoaWNzQ29udGV4dDNEOjpOT05FLCBpbWFnZUZvclJlbmRlci0+d2lkdGgoKSwgaW1h
Z2VGb3JSZW5kZXItPmhlaWdodCgpLCAwLCBmb3JtYXQsIHR5cGUsIHhvZmZzZXQsIHlvZmZzZXQp
KQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZh
cy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMv
V2ViR0xSZW5kZXJpbmdDb250ZXh0LmNwcAppbmRleCBiNmY3YzM1NjcyNGU5M2QyMjI1MmQ1YWNi
MmVjMzE4NTg1NDMxYmY3Li5lYzExNTJhMzQ4MjFjYjAyODM3YzMyYmI2NmM2ZmUxYzZlYjE5MjM1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0Nv
bnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5n
Q29udGV4dC5jcHAKQEAgLTYyMyw4ICs2MjMsMTEgQEAgdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRl
eHQ6OnRleFN1YkltYWdlMkQoR0MzRGVudW0gdGFyZ2V0LCBHQzNEaW50IGxldmVsLCBHQzNEaW4K
ICAgICAgICAgcmV0dXJuOwogICAgIAogICAgIFJlZlB0cjxJbWFnZT4gaW1hZ2VGb3JSZW5kZXIg
PSBpbWFnZS0+Y2FjaGVkSW1hZ2UoKS0+aW1hZ2VGb3JSZW5kZXJlcihpbWFnZS0+cmVuZGVyZXIo
KSk7CisgICAgaWYgKCFpbWFnZUZvclJlbmRlcikKKyAgICAgICAgcmV0dXJuOworCiAgICAgaWYg
KGltYWdlRm9yUmVuZGVyLT5pc1NWR0ltYWdlKCkpCi0gICAgICAgIGltYWdlRm9yUmVuZGVyID0g
ZHJhd0ltYWdlSW50b0J1ZmZlcihpbWFnZUZvclJlbmRlci5nZXQoKSwgaW1hZ2UtPndpZHRoKCks
IGltYWdlLT5oZWlnaHQoKSwgMSk7CisgICAgICAgIGltYWdlRm9yUmVuZGVyID0gZHJhd0ltYWdl
SW50b0J1ZmZlcigqaW1hZ2VGb3JSZW5kZXIsIGltYWdlLT53aWR0aCgpLCBpbWFnZS0+aGVpZ2h0
KCksIDEpOwogICAgIAogICAgIGlmICghaW1hZ2VGb3JSZW5kZXIgfHwgIXZhbGlkYXRlVGV4RnVu
YygidGV4U3ViSW1hZ2UyRCIsIFRleFN1YkltYWdlLCBTb3VyY2VIVE1MSW1hZ2VFbGVtZW50LCB0
YXJnZXQsIGxldmVsLCBmb3JtYXQsIGltYWdlRm9yUmVuZGVyLT53aWR0aCgpLCBpbWFnZUZvclJl
bmRlci0+aGVpZ2h0KCksIDAsIGZvcm1hdCwgdHlwZSwgeG9mZnNldCwgeW9mZnNldCkpCiAgICAg
ICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdM
UmVuZGVyaW5nQ29udGV4dEJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2Vi
R0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHAKaW5kZXggYTRhYTdhN2IzOWE4Mjk4OWVhMzE4YjRj
MDc1OGM3YjI0OWRiOGI5Ni4uNjZiZmM5MDVlMmFjYmMwYzIzODg1ODcyNmQ4NGIzY2ZmMDdlNWJj
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdD
b250ZXh0QmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5k
ZXJpbmdDb250ZXh0QmFzZS5jcHAKQEAgLTMxNjQsNyArMzE2NCw3IEBAIHZvaWQgV2ViR0xSZW5k
ZXJpbmdDb250ZXh0QmFzZTo6dGV4SW1hZ2UyRChHQzNEZW51bSB0YXJnZXQsIEdDM0RpbnQgbGV2
ZWwsIEdDM0RlCiAgICAgICAgIG1fY29udGV4dC0+cGl4ZWxTdG9yZWkoR3JhcGhpY3NDb250ZXh0
M0Q6OlVOUEFDS19BTElHTk1FTlQsIG1fdW5wYWNrQWxpZ25tZW50KTsKIH0KIAotUGFzc1JlZlB0
cjxJbWFnZT4gV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6ZHJhd0ltYWdlSW50b0J1ZmZlcihJ
bWFnZSogaW1hZ2UsIGludCB3aWR0aCwgaW50IGhlaWdodCwgaW50IGRldmljZVNjYWxlRmFjdG9y
KQorUGFzc1JlZlB0cjxJbWFnZT4gV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6ZHJhd0ltYWdl
SW50b0J1ZmZlcihJbWFnZSYgaW1hZ2UsIGludCB3aWR0aCwgaW50IGhlaWdodCwgaW50IGRldmlj
ZVNjYWxlRmFjdG9yKQogewogICAgIEludFNpemUgc2l6ZSh3aWR0aCwgaGVpZ2h0KTsKICAgICBz
aXplLnNjYWxlKGRldmljZVNjYWxlRmFjdG9yKTsKQEAgLTMxNzQsNyArMzE3NCw3IEBAIFBhc3NS
ZWZQdHI8SW1hZ2U+IFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmRyYXdJbWFnZUludG9CdWZm
ZXIoSW1hZ2UqIGltYWdlLCBpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIAotICAg
IEZsb2F0UmVjdCBzcmNSZWN0KEZsb2F0UG9pbnQoKSwgaW1hZ2UtPnNpemUoKSk7CisgICAgRmxv
YXRSZWN0IHNyY1JlY3QoRmxvYXRQb2ludCgpLCBpbWFnZS5zaXplKCkpOwogICAgIEZsb2F0UmVj
dCBkZXN0UmVjdChGbG9hdFBvaW50KCksIHNpemUpOwogICAgIGJ1Zi0+Y29udGV4dCgpLmRyYXdJ
bWFnZShpbWFnZSwgQ29sb3JTcGFjZURldmljZVJHQiwgZGVzdFJlY3QsIHNyY1JlY3QpOwogICAg
IHJldHVybiBidWYtPmNvcHlJbWFnZShJbWFnZUJ1ZmZlcjo6ZmFzdENvcHlJbWFnZU1vZGUoKSk7
CkBAIC0zMTg4LDggKzMxODgsMTEgQEAgdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp0
ZXhJbWFnZTJEKEdDM0RlbnVtIHRhcmdldCwgR0MzRGludCBsZXZlbCwgR0MzRGUKICAgICAgICAg
cmV0dXJuOwogCiAgICAgUmVmUHRyPEltYWdlPiBpbWFnZUZvclJlbmRlciA9IGltYWdlLT5jYWNo
ZWRJbWFnZSgpLT5pbWFnZUZvclJlbmRlcmVyKGltYWdlLT5yZW5kZXJlcigpKTsKKyAgICBpZiAo
IWltYWdlRm9yUmVuZGVyKQorICAgICAgICByZXR1cm47CisKICAgICBpZiAoaW1hZ2VGb3JSZW5k
ZXItPmlzU1ZHSW1hZ2UoKSkKLSAgICAgICAgaW1hZ2VGb3JSZW5kZXIgPSBkcmF3SW1hZ2VJbnRv
QnVmZmVyKGltYWdlRm9yUmVuZGVyLmdldCgpLCBpbWFnZS0+d2lkdGgoKSwgaW1hZ2UtPmhlaWdo
dCgpLCAxKTsKKyAgICAgICAgaW1hZ2VGb3JSZW5kZXIgPSBkcmF3SW1hZ2VJbnRvQnVmZmVyKCpp
bWFnZUZvclJlbmRlciwgaW1hZ2UtPndpZHRoKCksIGltYWdlLT5oZWlnaHQoKSwgMSk7CiAKICAg
ICBpZiAoIWltYWdlRm9yUmVuZGVyIHx8ICF2YWxpZGF0ZVRleEZ1bmMoInRleEltYWdlMkQiLCBU
ZXhJbWFnZSwgU291cmNlSFRNTEltYWdlRWxlbWVudCwgdGFyZ2V0LCBsZXZlbCwgaW50ZXJuYWxm
b3JtYXQsIGltYWdlRm9yUmVuZGVyLT53aWR0aCgpLCBpbWFnZUZvclJlbmRlci0+aGVpZ2h0KCks
IDAsIGZvcm1hdCwgdHlwZSwgMCwgMCkpCiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuaCBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuaAppbmRl
eCBlMDljMmE0MzQ2YzVhYTFiNDliMzE4OTUzNDI2MDAyNzJlNjNmOWVkLi5jYTA1OGIxYmUwZTk0
ZGRkNGVmYjE5MWQ5MmUxZjY2OTJhMzZlZTY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5oCkBAIC00MjYsNyArNDI2
LDcgQEAgcHJvdGVjdGVkOgogICAgIC8vIEFkZHMgYSBjb21wcmVzc2VkIHRleHR1cmUgZm9ybWF0
LgogICAgIHZvaWQgYWRkQ29tcHJlc3NlZFRleHR1cmVGb3JtYXQoR0MzRGVudW0pOwogCi0gICAg
UGFzc1JlZlB0cjxJbWFnZT4gZHJhd0ltYWdlSW50b0J1ZmZlcihJbWFnZSosIGludCB3aWR0aCwg
aW50IGhlaWdodCwgaW50IGRldmljZVNjYWxlRmFjdG9yKTsKKyAgICBQYXNzUmVmUHRyPEltYWdl
PiBkcmF3SW1hZ2VJbnRvQnVmZmVyKEltYWdlJiwgaW50IHdpZHRoLCBpbnQgaGVpZ2h0LCBpbnQg
ZGV2aWNlU2NhbGVGYWN0b3IpOwogCiAjaWYgRU5BQkxFKFZJREVPKQogICAgIFBhc3NSZWZQdHI8
SW1hZ2U+IHZpZGVvRnJhbWVUb0ltYWdlKEhUTUxWaWRlb0VsZW1lbnQqLCBCYWNraW5nU3RvcmVD
b3B5LCBFeGNlcHRpb25Db2RlJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9TY3JvbGxWaWV3LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbFZpZXcuY3Bw
CmluZGV4IDA5Nzg4YjBmYzMzOTNiMGU5MWUwMmJmMzIzOTdmYjBkYTQ3NWE2OTkuLjE1YTBiYjFk
MGMyNGRkMzFlY2MyOTNkNDc4MTZkMjViNGJjYWM4MzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL1Njcm9sbFZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1Njcm9sbFZpZXcuY3BwCkBAIC0xMTc4LDEwICsxMTc4LDEyIEBAIHZvaWQgU2Nyb2xsVmlldzo6
cGFpbnRTY3JvbGxiYXJzKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgSW50UmVjdCYg
cmVjdCkKIHZvaWQgU2Nyb2xsVmlldzo6cGFpbnRQYW5TY3JvbGxJY29uKEdyYXBoaWNzQ29udGV4
dCYgY29udGV4dCkKIHsKICAgICBzdGF0aWMgSW1hZ2UqIHBhblNjcm9sbEljb24gPSBJbWFnZTo6
bG9hZFBsYXRmb3JtUmVzb3VyY2UoInBhbkljb24iKS5sZWFrUmVmKCk7CisgICAgaWYgKCFwYW5T
Y3JvbGxJY29uKQorICAgICAgICByZXR1cm47CiAgICAgSW50UG9pbnQgaWNvbkdDUG9pbnQgPSBt
X3BhblNjcm9sbEljb25Qb2ludDsKICAgICBpZiAocGFyZW50KCkpCiAgICAgICAgIGljb25HQ1Bv
aW50ID0gcGFyZW50KCktPndpbmRvd1RvQ29udGVudHMoaWNvbkdDUG9pbnQpOwotICAgIGNvbnRl
eHQuZHJhd0ltYWdlKHBhblNjcm9sbEljb24sIENvbG9yU3BhY2VEZXZpY2VSR0IsIGljb25HQ1Bv
aW50KTsKKyAgICBjb250ZXh0LmRyYXdJbWFnZSgqcGFuU2Nyb2xsSWNvbiwgQ29sb3JTcGFjZURl
dmljZVJHQiwgaWNvbkdDUG9pbnQpOwogfQogCiB2b2lkIFNjcm9sbFZpZXc6OnBhaW50KEdyYXBo
aWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgSW50UmVjdCYgcmVjdCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Nyb3NzZmFkZUdlbmVyYXRlZEltYWdlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Nyb3NzZmFkZUdlbmVyYXRlZElt
YWdlLmNwcAppbmRleCA0YWYyZTQ3MTE1NTI3MGQ1MGM4YWU4N2QxYmY5NDI4M2UxYmY2ZmJlLi42
ODMyYjg5OTdmNzVhZTQ5MmY1MjBmNTBjOTc2ZTZkNDIxNTQ5MWJiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Dcm9zc2ZhZGVHZW5lcmF0ZWRJbWFnZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ3Jvc3NmYWRlR2VuZXJhdGVk
SW1hZ2UuY3BwCkBAIC0zMiw3ICszMiw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotQ3Jv
c3NmYWRlR2VuZXJhdGVkSW1hZ2U6OkNyb3NzZmFkZUdlbmVyYXRlZEltYWdlKEltYWdlKiBmcm9t
SW1hZ2UsIEltYWdlKiB0b0ltYWdlLCBmbG9hdCBwZXJjZW50YWdlLCBjb25zdCBGbG9hdFNpemUm
IGNyb3NzZmFkZVNpemUsIGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSkKK0Nyb3NzZmFkZUdlbmVyYXRl
ZEltYWdlOjpDcm9zc2ZhZGVHZW5lcmF0ZWRJbWFnZShJbWFnZSYgZnJvbUltYWdlLCBJbWFnZSYg
dG9JbWFnZSwgZmxvYXQgcGVyY2VudGFnZSwgY29uc3QgRmxvYXRTaXplJiBjcm9zc2ZhZGVTaXpl
LCBjb25zdCBGbG9hdFNpemUmIHNpemUpCiAgICAgOiBtX2Zyb21JbWFnZShmcm9tSW1hZ2UpCiAg
ICAgLCBtX3RvSW1hZ2UodG9JbWFnZSkKICAgICAsIG1fcGVyY2VudGFnZShwZXJjZW50YWdlKQpA
QCAtNDEsMTIgKzQxLDEyIEBAIENyb3NzZmFkZUdlbmVyYXRlZEltYWdlOjpDcm9zc2ZhZGVHZW5l
cmF0ZWRJbWFnZShJbWFnZSogZnJvbUltYWdlLCBJbWFnZSogdG9JbWFnCiAgICAgc2V0Q29udGFp
bmVyU2l6ZShzaXplKTsKIH0KIAotc3RhdGljIHZvaWQgZHJhd0Nyb3NzZmFkZVN1YmltYWdlKEdy
YXBoaWNzQ29udGV4dCYgY29udGV4dCwgSW1hZ2UqIGltYWdlLCBDb21wb3NpdGVPcGVyYXRvciBv
cGVyYXRpb24sIGZsb2F0IG9wYWNpdHksIGNvbnN0IEZsb2F0U2l6ZSYgdGFyZ2V0U2l6ZSkKK3N0
YXRpYyB2b2lkIGRyYXdDcm9zc2ZhZGVTdWJpbWFnZShHcmFwaGljc0NvbnRleHQmIGNvbnRleHQs
IEltYWdlJiBpbWFnZSwgQ29tcG9zaXRlT3BlcmF0b3Igb3BlcmF0aW9uLCBmbG9hdCBvcGFjaXR5
LCBjb25zdCBGbG9hdFNpemUmIHRhcmdldFNpemUpCiB7Ci0gICAgRmxvYXRTaXplIGltYWdlU2l6
ZSA9IGltYWdlLT5zaXplKCk7CisgICAgRmxvYXRTaXplIGltYWdlU2l6ZSA9IGltYWdlLnNpemUo
KTsKIAogICAgIC8vIFNWR0ltYWdlIHJlc2V0cyB0aGUgb3BhY2l0eSB3aGVuIHBhaW50aW5nLCBz
byB3ZSBoYXZlIHRvIHVzZSB0cmFuc3BhcmVuY3kgbGF5ZXJzIHRvIGFjY3VyYXRlbHkgcGFpbnQg
b25lIGF0IGEgZ2l2ZW4gb3BhY2l0eS4KLSAgICBib29sIHVzZVRyYW5zcGFyZW5jeUxheWVyID0g
aW1hZ2UtPmlzU1ZHSW1hZ2UoKTsKKyAgICBib29sIHVzZVRyYW5zcGFyZW5jeUxheWVyID0gaW1h
Z2UuaXNTVkdJbWFnZSgpOwogCiAgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNh
dmVyKGNvbnRleHQpOwogCkBAIC02OCw3ICs2OCw3IEBAIHN0YXRpYyB2b2lkIGRyYXdDcm9zc2Zh
ZGVTdWJpbWFnZShHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIEltYWdlKiBpbWFnZSwgQ29tcG9z
CiB2b2lkIENyb3NzZmFkZUdlbmVyYXRlZEltYWdlOjpkcmF3Q3Jvc3NmYWRlKEdyYXBoaWNzQ29u
dGV4dCYgY29udGV4dCkKIHsKICAgICAvLyBEcmF3IG5vdGhpbmcgaWYgZWl0aGVyIG9mIHRoZSBp
bWFnZXMgaGFzbid0IGxvYWRlZCB5ZXQuCi0gICAgaWYgKG1fZnJvbUltYWdlID09IEltYWdlOjpu
dWxsSW1hZ2UoKSB8fCBtX3RvSW1hZ2UgPT0gSW1hZ2U6Om51bGxJbWFnZSgpKQorICAgIGlmICht
X2Zyb21JbWFnZS5wdHIoKSA9PSBJbWFnZTo6bnVsbEltYWdlKCkgfHwgbV90b0ltYWdlLnB0cigp
ID09IEltYWdlOjpudWxsSW1hZ2UoKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgR3JhcGhpY3ND
b250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKGNvbnRleHQpOwpAQCAtNzYsOCArNzYsOCBAQCB2
b2lkIENyb3NzZmFkZUdlbmVyYXRlZEltYWdlOjpkcmF3Q3Jvc3NmYWRlKEdyYXBoaWNzQ29udGV4
dCYgY29udGV4dCkKICAgICBjb250ZXh0LmNsaXAoRmxvYXRSZWN0KEZsb2F0UG9pbnQoKSwgbV9j
cm9zc2ZhZGVTaXplKSk7CiAgICAgY29udGV4dC5iZWdpblRyYW5zcGFyZW5jeUxheWVyKDEpOwog
Ci0gICAgZHJhd0Nyb3NzZmFkZVN1YmltYWdlKGNvbnRleHQsIG1fZnJvbUltYWdlLCBDb21wb3Np
dGVTb3VyY2VPdmVyLCAxIC0gbV9wZXJjZW50YWdlLCBtX2Nyb3NzZmFkZVNpemUpOwotICAgIGRy
YXdDcm9zc2ZhZGVTdWJpbWFnZShjb250ZXh0LCBtX3RvSW1hZ2UsIENvbXBvc2l0ZVBsdXNMaWdo
dGVyLCBtX3BlcmNlbnRhZ2UsIG1fY3Jvc3NmYWRlU2l6ZSk7CisgICAgZHJhd0Nyb3NzZmFkZVN1
YmltYWdlKGNvbnRleHQsIG1fZnJvbUltYWdlLmdldCgpLCBDb21wb3NpdGVTb3VyY2VPdmVyLCAx
IC0gbV9wZXJjZW50YWdlLCBtX2Nyb3NzZmFkZVNpemUpOworICAgIGRyYXdDcm9zc2ZhZGVTdWJp
bWFnZShjb250ZXh0LCBtX3RvSW1hZ2UuZ2V0KCksIENvbXBvc2l0ZVBsdXNMaWdodGVyLCBtX3Bl
cmNlbnRhZ2UsIG1fY3Jvc3NmYWRlU2l6ZSk7CiAKICAgICBjb250ZXh0LmVuZFRyYW5zcGFyZW5j
eUxheWVyKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9Dcm9zc2ZhZGVHZW5lcmF0ZWRJbWFnZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvQ3Jvc3NmYWRlR2VuZXJhdGVkSW1hZ2UuaAppbmRleCAzNTlkMjlhYjUxMDM0ZDBhOTNj
NGU3ZTQ0NDZiNWE5MTk5OGRiOTMxLi44NDZmMjk2ZDM5OGU5YTI5MmJhZWI2YzMyZWMxMDFiZWI4
NjM3ZTM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Dcm9z
c2ZhZGVHZW5lcmF0ZWRJbWFnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0Nyb3NzZmFkZUdlbmVyYXRlZEltYWdlLmgKQEAgLTM2LDcgKzM2LDcgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogCiBjbGFzcyBDcm9zc2ZhZGVHZW5lcmF0ZWRJbWFnZSBmaW5hbCA6IHB1Ymxp
YyBHZW5lcmF0ZWRJbWFnZSB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxDcm9zc2ZhZGVHZW5l
cmF0ZWRJbWFnZT4gY3JlYXRlKEltYWdlKiBmcm9tSW1hZ2UsIEltYWdlKiB0b0ltYWdlLCBmbG9h
dCBwZXJjZW50YWdlLCBjb25zdCBGbG9hdFNpemUmIGNyb3NzZmFkZVNpemUsIGNvbnN0IEZsb2F0
U2l6ZSYgc2l6ZSkKKyAgICBzdGF0aWMgUmVmPENyb3NzZmFkZUdlbmVyYXRlZEltYWdlPiBjcmVh
dGUoSW1hZ2UmIGZyb21JbWFnZSwgSW1hZ2UmIHRvSW1hZ2UsIGZsb2F0IHBlcmNlbnRhZ2UsIGNv
bnN0IEZsb2F0U2l6ZSYgY3Jvc3NmYWRlU2l6ZSwgY29uc3QgRmxvYXRTaXplJiBzaXplKQogICAg
IHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQ3Jvc3NmYWRlR2VuZXJhdGVkSW1hZ2Uo
ZnJvbUltYWdlLCB0b0ltYWdlLCBwZXJjZW50YWdlLCBjcm9zc2ZhZGVTaXplLCBzaXplKSk7CiAg
ICAgfQpAQCAtNTIsMTMgKzUyLDEzIEBAIHByb3RlY3RlZDoKICAgICB2aXJ0dWFsIHZvaWQgZHJh
dyhHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZsb2F0
UmVjdCYgc3JjUmVjdCwgQ29sb3JTcGFjZSBzdHlsZUNvbG9yU3BhY2UsIENvbXBvc2l0ZU9wZXJh
dG9yLCBCbGVuZE1vZGUsIEltYWdlT3JpZW50YXRpb25EZXNjcmlwdGlvbikgb3ZlcnJpZGU7CiAg
ICAgdmlydHVhbCB2b2lkIGRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0
UmVjdCYgc3JjUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBwYXR0ZXJuVHJhbnNmb3JtLCBj
b25zdCBGbG9hdFBvaW50JiBwaGFzZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5nLCBDb2xvclNw
YWNlIHN0eWxlQ29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0b3IsIGNvbnN0IEZsb2F0UmVjdCYg
ZHN0UmVjdCwgQmxlbmRNb2RlKSBvdmVycmlkZTsKIAotICAgIENyb3NzZmFkZUdlbmVyYXRlZElt
YWdlKEltYWdlKiBmcm9tSW1hZ2UsIEltYWdlKiB0b0ltYWdlLCBmbG9hdCBwZXJjZW50YWdlLCBj
b25zdCBGbG9hdFNpemUmIGNyb3NzZmFkZVNpemUsIGNvbnN0IEZsb2F0U2l6ZSYpOworICAgIENy
b3NzZmFkZUdlbmVyYXRlZEltYWdlKEltYWdlJiBmcm9tSW1hZ2UsIEltYWdlJiB0b0ltYWdlLCBm
bG9hdCBwZXJjZW50YWdlLCBjb25zdCBGbG9hdFNpemUmIGNyb3NzZmFkZVNpemUsIGNvbnN0IEZs
b2F0U2l6ZSYpOwogCiBwcml2YXRlOgogICAgIHZvaWQgZHJhd0Nyb3NzZmFkZShHcmFwaGljc0Nv
bnRleHQmKTsKIAotICAgIEltYWdlKiBtX2Zyb21JbWFnZTsKLSAgICBJbWFnZSogbV90b0ltYWdl
OworICAgIFJlZjxJbWFnZT4gbV9mcm9tSW1hZ2U7CisgICAgUmVmPEltYWdlPiBtX3RvSW1hZ2U7
CiAKICAgICBmbG9hdCBtX3BlcmNlbnRhZ2U7CiAgICAgRmxvYXRTaXplIG1fY3Jvc3NmYWRlU2l6
ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYWRpZW50
SW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhZGllbnRJbWFn
ZS5jcHAKaW5kZXggZjQwNTMwZDA1YjA2YzViOTNlZGM1YWRjODEzZTU3MjZkYTUxMjgwOS4uMjI5
OWY1MWZmM2QxOWVhYzlmMmFlMGQzN2ZlMTcxNDMyMDBiOGQyYiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhZGllbnRJbWFnZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhZGllbnRJbWFnZS5jcHAKQEAgLTczLDcgKzcz
LDcgQEAgdm9pZCBHcmFkaWVudEltYWdlOjpkcmF3UGF0dGVybihHcmFwaGljc0NvbnRleHQmIGRl
c3RDb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIHMKIAogICAgIHVuc2lnbmVkIGdlbmVyYXRvckhh
c2ggPSBtX2dyYWRpZW50LT5oYXNoKCk7CiAKLSAgICBpZiAoIW1fY2FjaGVkSW1hZ2VCdWZmZXIg
fHwgbV9jYWNoZWRHZW5lcmF0b3JIYXNoICE9IGdlbmVyYXRvckhhc2ggfHwgbV9jYWNoZWRBZGp1
c3RlZFNpemUgIT0gYWRqdXN0ZWRTaXplIHx8ICFkZXN0Q29udGV4dC5pc0NvbXBhdGlibGVXaXRo
QnVmZmVyKG1fY2FjaGVkSW1hZ2VCdWZmZXIuZ2V0KCkpKSB7CisgICAgaWYgKCFtX2NhY2hlZElt
YWdlQnVmZmVyIHx8IG1fY2FjaGVkR2VuZXJhdG9ySGFzaCAhPSBnZW5lcmF0b3JIYXNoIHx8IG1f
Y2FjaGVkQWRqdXN0ZWRTaXplICE9IGFkanVzdGVkU2l6ZSB8fCAhZGVzdENvbnRleHQuaXNDb21w
YXRpYmxlV2l0aEJ1ZmZlcigqbV9jYWNoZWRJbWFnZUJ1ZmZlcikpIHsKICAgICAgICAgbV9jYWNo
ZWRJbWFnZUJ1ZmZlciA9IGRlc3RDb250ZXh0LmNyZWF0ZUNvbXBhdGlibGVCdWZmZXIoYWRqdXN0
ZWRTaXplLCBtX2dyYWRpZW50LT5oYXNBbHBoYSgpKTsKICAgICAgICAgaWYgKCFtX2NhY2hlZElt
YWdlQnVmZmVyKQogICAgICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHAKaW5kZXggNDI2YzdhNzZiZmIz
ODY2YTM5YjU2MWZiYWRjNzYzOTk4OTZjNjI5My4uMmI0YTJmNzk5ZjlmNTA1MjVkOWU5OGI1NjEw
YzFjNDVkNTRhYWEzZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvR3JhcGhpY3NDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9HcmFwaGljc0NvbnRleHQuY3BwCkBAIC0zNjgsNTAgKzM2OCw0NSBAQCB2b2lkIEdyYXBo
aWNzQ29udGV4dDo6ZHJhd0JpZGlUZXh0KGNvbnN0IEZvbnRDYXNjYWRlJiBmb250LCBjb25zdCBU
ZXh0UnVuJiBydW4sCiAgICAgYmlkaVJ1bnMuZGVsZXRlUnVucygpOwogfQogCi12b2lkIEdyYXBo
aWNzQ29udGV4dDo6ZHJhd0ltYWdlKEltYWdlKiBpbWFnZSwgQ29sb3JTcGFjZSBjb2xvclNwYWNl
LCBjb25zdCBGbG9hdFBvaW50JiBkZXN0aW5hdGlvbiwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlv
bnMmIGltYWdlUGFpbnRpbmdPcHRpb25zKQordm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdJbWFn
ZShJbWFnZSYgaW1hZ2UsIENvbG9yU3BhY2UgY29sb3JTcGFjZSwgY29uc3QgRmxvYXRQb2ludCYg
ZGVzdGluYXRpb24sIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBpbWFnZVBhaW50aW5nT3B0
aW9ucykKIHsKLSAgICBpZiAoIWltYWdlKQotICAgICAgICByZXR1cm47Ci0gICAgZHJhd0ltYWdl
KGltYWdlLCBjb2xvclNwYWNlLCBGbG9hdFJlY3QoZGVzdGluYXRpb24sIGltYWdlLT5zaXplKCkp
LCBGbG9hdFJlY3QoRmxvYXRQb2ludCgpLCBpbWFnZS0+c2l6ZSgpKSwgaW1hZ2VQYWludGluZ09w
dGlvbnMpOworICAgIGRyYXdJbWFnZShpbWFnZSwgY29sb3JTcGFjZSwgRmxvYXRSZWN0KGRlc3Rp
bmF0aW9uLCBpbWFnZS5zaXplKCkpLCBGbG9hdFJlY3QoRmxvYXRQb2ludCgpLCBpbWFnZS5zaXpl
KCkpLCBpbWFnZVBhaW50aW5nT3B0aW9ucyk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0Ojpk
cmF3SW1hZ2UoSW1hZ2UqIGltYWdlLCBDb2xvclNwYWNlIGNvbG9yU3BhY2UsIGNvbnN0IEZsb2F0
UmVjdCYgZGVzdGluYXRpb24sIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBpbWFnZVBhaW50
aW5nT3B0aW9ucykKK3ZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3SW1hZ2UoSW1hZ2UmIGltYWdl
LCBDb2xvclNwYWNlIGNvbG9yU3BhY2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24sIGNv
bnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBpbWFnZVBhaW50aW5nT3B0aW9ucykKIHsKLSAgICBp
ZiAoIWltYWdlKQotICAgICAgICByZXR1cm47Ci0gICAgCiAjaWYgUExBVEZPUk0oSU9TKQotICAg
IEZsb2F0UmVjdCBzcmNSZWN0KEZsb2F0UG9pbnQoKSwgaW1hZ2UtPm9yaWdpbmFsU2l6ZSgpKTsK
KyAgICBGbG9hdFJlY3Qgc3JjUmVjdChGbG9hdFBvaW50KCksIGltYWdlLm9yaWdpbmFsU2l6ZSgp
KTsKICNlbHNlCi0gICAgRmxvYXRSZWN0IHNyY1JlY3QoRmxvYXRQb2ludCgpLCBpbWFnZS0+c2l6
ZSgpKTsKKyAgICBGbG9hdFJlY3Qgc3JjUmVjdChGbG9hdFBvaW50KCksIGltYWdlLnNpemUoKSk7
CiAjZW5kaWYKICAgICAgICAgCiAgICAgZHJhd0ltYWdlKGltYWdlLCBjb2xvclNwYWNlLCBkZXN0
aW5hdGlvbiwgc3JjUmVjdCwgaW1hZ2VQYWludGluZ09wdGlvbnMpOwogfQogCi12b2lkIEdyYXBo
aWNzQ29udGV4dDo6ZHJhd0ltYWdlKEltYWdlKiBpbWFnZSwgQ29sb3JTcGFjZSBjb2xvclNwYWNl
LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBjb25zdCBGbG9hdFJlY3QmIHNvdXJjZSwg
Y29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIGltYWdlUGFpbnRpbmdPcHRpb25zKQordm9pZCBH
cmFwaGljc0NvbnRleHQ6OmRyYXdJbWFnZShJbWFnZSYgaW1hZ2UsIENvbG9yU3BhY2UgY29sb3JT
cGFjZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwgY29uc3QgRmxvYXRSZWN0JiBzb3Vy
Y2UsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBpbWFnZVBhaW50aW5nT3B0aW9ucykKIHsK
LSAgICBpZiAocGFpbnRpbmdEaXNhYmxlZCgpIHx8ICFpbWFnZSkKKyAgICBpZiAocGFpbnRpbmdE
aXNhYmxlZCgpKQogICAgICAgICByZXR1cm47CiAKICAgICAvLyBGSVhNRSAoNDkwMDIpOiBTaG91
bGQgYmUgSW50ZXJwb2xhdGlvbkxvdwogICAgIEludGVycG9sYXRpb25RdWFsaXR5TWFpbnRhaW5l
ciBpbnRlcnBvbGF0aW9uUXVhbGl0eUZvclRoaXNTY29wZSgqdGhpcywgaW1hZ2VQYWludGluZ09w
dGlvbnMubV91c2VMb3dRdWFsaXR5U2NhbGUgPyBJbnRlcnBvbGF0aW9uTm9uZSA6IGltYWdlSW50
ZXJwb2xhdGlvblF1YWxpdHkoKSk7Ci0gICAgaW1hZ2UtPmRyYXcoKnRoaXMsIGRlc3RpbmF0aW9u
LCBzb3VyY2UsIGNvbG9yU3BhY2UsIGltYWdlUGFpbnRpbmdPcHRpb25zLm1fY29tcG9zaXRlT3Bl
cmF0b3IsIGltYWdlUGFpbnRpbmdPcHRpb25zLm1fYmxlbmRNb2RlLCBpbWFnZVBhaW50aW5nT3B0
aW9ucy5tX29yaWVudGF0aW9uRGVzY3JpcHRpb24pOworICAgIGltYWdlLmRyYXcoKnRoaXMsIGRl
c3RpbmF0aW9uLCBzb3VyY2UsIGNvbG9yU3BhY2UsIGltYWdlUGFpbnRpbmdPcHRpb25zLm1fY29t
cG9zaXRlT3BlcmF0b3IsIGltYWdlUGFpbnRpbmdPcHRpb25zLm1fYmxlbmRNb2RlLCBpbWFnZVBh
aW50aW5nT3B0aW9ucy5tX29yaWVudGF0aW9uRGVzY3JpcHRpb24pOwogfQogCi12b2lkIEdyYXBo
aWNzQ29udGV4dDo6ZHJhd1RpbGVkSW1hZ2UoSW1hZ2UqIGltYWdlLCBDb2xvclNwYWNlIGNvbG9y
U3BhY2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24sIGNvbnN0IEZsb2F0UG9pbnQmIHNv
dXJjZSwgY29uc3QgRmxvYXRTaXplJiB0aWxlU2l6ZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5n
LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgaW1hZ2VQYWludGluZ09wdGlvbnMpCit2b2lk
IEdyYXBoaWNzQ29udGV4dDo6ZHJhd1RpbGVkSW1hZ2UoSW1hZ2UmIGltYWdlLCBDb2xvclNwYWNl
IGNvbG9yU3BhY2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24sIGNvbnN0IEZsb2F0UG9p
bnQmIHNvdXJjZSwgY29uc3QgRmxvYXRTaXplJiB0aWxlU2l6ZSwgY29uc3QgRmxvYXRTaXplJiBz
cGFjaW5nLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgaW1hZ2VQYWludGluZ09wdGlvbnMp
CiB7Ci0gICAgaWYgKHBhaW50aW5nRGlzYWJsZWQoKSB8fCAhaW1hZ2UpCisgICAgaWYgKHBhaW50
aW5nRGlzYWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgSW50ZXJwb2xhdGlvblF1YWxp
dHlNYWludGFpbmVyIGludGVycG9sYXRpb25RdWFsaXR5Rm9yVGhpc1Njb3BlKCp0aGlzLCBpbWFn
ZVBhaW50aW5nT3B0aW9ucy5tX3VzZUxvd1F1YWxpdHlTY2FsZSA/IEludGVycG9sYXRpb25Mb3cg
OiBpbWFnZUludGVycG9sYXRpb25RdWFsaXR5KCkpOwotICAgIGltYWdlLT5kcmF3VGlsZWQoKnRo
aXMsIGRlc3RpbmF0aW9uLCBzb3VyY2UsIHRpbGVTaXplLCBzcGFjaW5nLCBjb2xvclNwYWNlLCBp
bWFnZVBhaW50aW5nT3B0aW9ucy5tX2NvbXBvc2l0ZU9wZXJhdG9yLCBpbWFnZVBhaW50aW5nT3B0
aW9ucy5tX2JsZW5kTW9kZSk7CisgICAgaW1hZ2UuZHJhd1RpbGVkKCp0aGlzLCBkZXN0aW5hdGlv
biwgc291cmNlLCB0aWxlU2l6ZSwgc3BhY2luZywgY29sb3JTcGFjZSwgaW1hZ2VQYWludGluZ09w
dGlvbnMubV9jb21wb3NpdGVPcGVyYXRvciwgaW1hZ2VQYWludGluZ09wdGlvbnMubV9ibGVuZE1v
ZGUpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd1RpbGVkSW1hZ2UoSW1hZ2UqIGlt
YWdlLCBDb2xvclNwYWNlIGNvbG9yU3BhY2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24s
IGNvbnN0IEZsb2F0UmVjdCYgc291cmNlLCBjb25zdCBGbG9hdFNpemUmIHRpbGVTY2FsZUZhY3Rv
ciwKK3ZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3VGlsZWRJbWFnZShJbWFnZSYgaW1hZ2UsIENv
bG9yU3BhY2UgY29sb3JTcGFjZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwgY29uc3Qg
RmxvYXRSZWN0JiBzb3VyY2UsIGNvbnN0IEZsb2F0U2l6ZSYgdGlsZVNjYWxlRmFjdG9yLAogICAg
IEltYWdlOjpUaWxlUnVsZSBoUnVsZSwgSW1hZ2U6OlRpbGVSdWxlIHZSdWxlLCBjb25zdCBJbWFn
ZVBhaW50aW5nT3B0aW9ucyYgaW1hZ2VQYWludGluZ09wdGlvbnMpCiB7Ci0gICAgaWYgKHBhaW50
aW5nRGlzYWJsZWQoKSB8fCAhaW1hZ2UpCisgICAgaWYgKHBhaW50aW5nRGlzYWJsZWQoKSkKICAg
ICAgICAgcmV0dXJuOwogCiAgICAgaWYgKGhSdWxlID09IEltYWdlOjpTdHJldGNoVGlsZSAmJiB2
UnVsZSA9PSBJbWFnZTo6U3RyZXRjaFRpbGUpIHsKQEAgLTQyMSwzMSArNDE2LDI3IEBAIHZvaWQg
R3JhcGhpY3NDb250ZXh0OjpkcmF3VGlsZWRJbWFnZShJbWFnZSogaW1hZ2UsIENvbG9yU3BhY2Ug
Y29sb3JTcGFjZSwgY29uc3QKICAgICB9CiAKICAgICBJbnRlcnBvbGF0aW9uUXVhbGl0eU1haW50
YWluZXIgaW50ZXJwb2xhdGlvblF1YWxpdHlGb3JUaGlzU2NvcGUoKnRoaXMsIGltYWdlUGFpbnRp
bmdPcHRpb25zLm1fdXNlTG93UXVhbGl0eVNjYWxlID8gSW50ZXJwb2xhdGlvbkxvdyA6IGltYWdl
SW50ZXJwb2xhdGlvblF1YWxpdHkoKSk7Ci0gICAgaW1hZ2UtPmRyYXdUaWxlZCgqdGhpcywgZGVz
dGluYXRpb24sIHNvdXJjZSwgdGlsZVNjYWxlRmFjdG9yLCBoUnVsZSwgdlJ1bGUsIGNvbG9yU3Bh
Y2UsIGltYWdlUGFpbnRpbmdPcHRpb25zLm1fY29tcG9zaXRlT3BlcmF0b3IpOworICAgIGltYWdl
LmRyYXdUaWxlZCgqdGhpcywgZGVzdGluYXRpb24sIHNvdXJjZSwgdGlsZVNjYWxlRmFjdG9yLCBo
UnVsZSwgdlJ1bGUsIGNvbG9yU3BhY2UsIGltYWdlUGFpbnRpbmdPcHRpb25zLm1fY29tcG9zaXRl
T3BlcmF0b3IpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd0ltYWdlQnVmZmVyKElt
YWdlQnVmZmVyKiBpbWFnZSwgQ29sb3JTcGFjZSBjb2xvclNwYWNlLCBjb25zdCBGbG9hdFBvaW50
JiBkZXN0aW5hdGlvbiwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIGltYWdlUGFpbnRpbmdP
cHRpb25zKQordm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdJbWFnZUJ1ZmZlcihJbWFnZUJ1ZmZl
ciYgaW1hZ2UsIENvbG9yU3BhY2UgY29sb3JTcGFjZSwgY29uc3QgRmxvYXRQb2ludCYgZGVzdGlu
YXRpb24sIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBpbWFnZVBhaW50aW5nT3B0aW9ucykK
IHsKLSAgICBpZiAoIWltYWdlKQotICAgICAgICByZXR1cm47Ci0gICAgZHJhd0ltYWdlQnVmZmVy
KGltYWdlLCBjb2xvclNwYWNlLCBGbG9hdFJlY3QoZGVzdGluYXRpb24sIGltYWdlLT5sb2dpY2Fs
U2l6ZSgpKSwgRmxvYXRSZWN0KEZsb2F0UG9pbnQoKSwgaW1hZ2UtPmxvZ2ljYWxTaXplKCkpLCBp
bWFnZVBhaW50aW5nT3B0aW9ucyk7CisgICAgZHJhd0ltYWdlQnVmZmVyKGltYWdlLCBjb2xvclNw
YWNlLCBGbG9hdFJlY3QoZGVzdGluYXRpb24sIGltYWdlLmxvZ2ljYWxTaXplKCkpLCBGbG9hdFJl
Y3QoRmxvYXRQb2ludCgpLCBpbWFnZS5sb2dpY2FsU2l6ZSgpKSwgaW1hZ2VQYWludGluZ09wdGlv
bnMpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd0ltYWdlQnVmZmVyKEltYWdlQnVm
ZmVyKiBpbWFnZSwgQ29sb3JTcGFjZSBjb2xvclNwYWNlLCBjb25zdCBGbG9hdFJlY3QmIGRlc3Rp
bmF0aW9uLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgaW1hZ2VQYWludGluZ09wdGlvbnMp
Cit2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd0ltYWdlQnVmZmVyKEltYWdlQnVmZmVyJiBpbWFn
ZSwgQ29sb3JTcGFjZSBjb2xvclNwYWNlLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBj
b25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgaW1hZ2VQYWludGluZ09wdGlvbnMpCiB7Ci0gICAg
aWYgKCFpbWFnZSkKLSAgICAgICAgcmV0dXJuOwotICAgIGRyYXdJbWFnZUJ1ZmZlcihpbWFnZSwg
Y29sb3JTcGFjZSwgZGVzdGluYXRpb24sIEZsb2F0UmVjdChGbG9hdFBvaW50KCksIEZsb2F0U2l6
ZShpbWFnZS0+bG9naWNhbFNpemUoKSkpLCBpbWFnZVBhaW50aW5nT3B0aW9ucyk7CisgICAgZHJh
d0ltYWdlQnVmZmVyKGltYWdlLCBjb2xvclNwYWNlLCBkZXN0aW5hdGlvbiwgRmxvYXRSZWN0KEZs
b2F0UG9pbnQoKSwgRmxvYXRTaXplKGltYWdlLmxvZ2ljYWxTaXplKCkpKSwgaW1hZ2VQYWludGlu
Z09wdGlvbnMpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd0ltYWdlQnVmZmVyKElt
YWdlQnVmZmVyKiBpbWFnZSwgQ29sb3JTcGFjZSBjb2xvclNwYWNlLCBjb25zdCBGbG9hdFJlY3Qm
IGRlc3RpbmF0aW9uLCBjb25zdCBGbG9hdFJlY3QmIHNvdXJjZSwgY29uc3QgSW1hZ2VQYWludGlu
Z09wdGlvbnMmIGltYWdlUGFpbnRpbmdPcHRpb25zKQordm9pZCBHcmFwaGljc0NvbnRleHQ6OmRy
YXdJbWFnZUJ1ZmZlcihJbWFnZUJ1ZmZlciYgaW1hZ2UsIENvbG9yU3BhY2UgY29sb3JTcGFjZSwg
Y29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwgY29uc3QgRmxvYXRSZWN0JiBzb3VyY2UsIGNv
bnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBpbWFnZVBhaW50aW5nT3B0aW9ucykKIHsKLSAgICBp
ZiAocGFpbnRpbmdEaXNhYmxlZCgpIHx8ICFpbWFnZSkKKyAgICBpZiAocGFpbnRpbmdEaXNhYmxl
ZCgpKQogICAgICAgICByZXR1cm47CiAKICAgICAvLyBGSVhNRSAoNDkwMDIpOiBTaG91bGQgYmUg
SW50ZXJwb2xhdGlvbkxvdwogICAgIEludGVycG9sYXRpb25RdWFsaXR5TWFpbnRhaW5lciBpbnRl
cnBvbGF0aW9uUXVhbGl0eUZvclRoaXNTY29wZSgqdGhpcywgaW1hZ2VQYWludGluZ09wdGlvbnMu
bV91c2VMb3dRdWFsaXR5U2NhbGUgPyBJbnRlcnBvbGF0aW9uTm9uZSA6IGltYWdlSW50ZXJwb2xh
dGlvblF1YWxpdHkoKSk7Ci0gICAgaW1hZ2UtPmRyYXcoKnRoaXMsIGNvbG9yU3BhY2UsIGRlc3Rp
bmF0aW9uLCBzb3VyY2UsIGltYWdlUGFpbnRpbmdPcHRpb25zLm1fY29tcG9zaXRlT3BlcmF0b3Is
IGltYWdlUGFpbnRpbmdPcHRpb25zLm1fYmxlbmRNb2RlLCBpbWFnZVBhaW50aW5nT3B0aW9ucy5t
X3VzZUxvd1F1YWxpdHlTY2FsZSk7CisgICAgaW1hZ2UuZHJhdygqdGhpcywgY29sb3JTcGFjZSwg
ZGVzdGluYXRpb24sIHNvdXJjZSwgaW1hZ2VQYWludGluZ09wdGlvbnMubV9jb21wb3NpdGVPcGVy
YXRvciwgaW1hZ2VQYWludGluZ09wdGlvbnMubV9ibGVuZE1vZGUsIGltYWdlUGFpbnRpbmdPcHRp
b25zLm1fdXNlTG93UXVhbGl0eVNjYWxlKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQ6OmNs
aXAoY29uc3QgSW50UmVjdCYgcmVjdCkKQEAgLTQ3OCwxMSArNDY5LDExIEBAIHZvaWQgR3JhcGhp
Y3NDb250ZXh0OjpjbGlwT3V0Um91bmRlZFJlY3QoY29uc3QgRmxvYXRSb3VuZGVkUmVjdCYgcmVj
dCkKICAgICBjbGlwT3V0KHBhdGgpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dDo6Y2xpcFRv
SW1hZ2VCdWZmZXIoSW1hZ2VCdWZmZXIqIGJ1ZmZlciwgY29uc3QgRmxvYXRSZWN0JiByZWN0KQor
dm9pZCBHcmFwaGljc0NvbnRleHQ6OmNsaXBUb0ltYWdlQnVmZmVyKEltYWdlQnVmZmVyJiBidWZm
ZXIsIGNvbnN0IEZsb2F0UmVjdCYgcmVjdCkKIHsKICAgICBpZiAocGFpbnRpbmdEaXNhYmxlZCgp
KQogICAgICAgICByZXR1cm47Ci0gICAgYnVmZmVyLT5jbGlwKCp0aGlzLCByZWN0KTsKKyAgICBi
dWZmZXIuY2xpcCgqdGhpcywgcmVjdCk7CiB9CiAKICNpZiAhVVNFKENHKSAmJiAhVVNFKENBSVJP
KQpAQCAtNjQ4LDkgKzYzOSw5IEBAIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4gR3JhcGhp
Y3NDb250ZXh0OjpjcmVhdGVDb21wYXRpYmxlQnVmZmVyKGNvbnN0IEZsb2F0CiAgICAgcmV0dXJu
IGJ1ZmZlcjsKIH0KIAotYm9vbCBHcmFwaGljc0NvbnRleHQ6OmlzQ29tcGF0aWJsZVdpdGhCdWZm
ZXIoSW1hZ2VCdWZmZXIqIGJ1ZmZlcikgY29uc3QKK2Jvb2wgR3JhcGhpY3NDb250ZXh0Ojppc0Nv
bXBhdGlibGVXaXRoQnVmZmVyKEltYWdlQnVmZmVyJiBidWZmZXIpIGNvbnN0CiB7Ci0gICAgR3Jh
cGhpY3NDb250ZXh0JiBidWZmZXJDb250ZXh0ID0gYnVmZmVyLT5jb250ZXh0KCk7CisgICAgR3Jh
cGhpY3NDb250ZXh0JiBidWZmZXJDb250ZXh0ID0gYnVmZmVyLmNvbnRleHQoKTsKIAogICAgIHJl
dHVybiBzY2FsZXNNYXRjaChnZXRDVE0oKSwgYnVmZmVyQ29udGV4dC5nZXRDVE0oKSkgJiYgaXNB
Y2NlbGVyYXRlZENvbnRleHQoKSA9PSBidWZmZXJDb250ZXh0LmlzQWNjZWxlcmF0ZWRDb250ZXh0
KCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFw
aGljc0NvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNz
Q29udGV4dC5oCmluZGV4IGQ4MDNhYzc1MjVhN2UwMzE4OGFiMWJiM2E4MjQ5MmI5MWVkYzI5NDgu
LmNhOWZhYjU5OGIxOWNlODVlNWIzM2QyMjk5MDk4MmU2NTA2MTk4MTEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oCkBAIC0zMDgs
MTcgKzMwOCwxNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICAgICAgV0VCQ09SRV9FWFBP
UlQgdm9pZCBzdHJva2VSZWN0KGNvbnN0IEZsb2F0UmVjdCYsIGZsb2F0IGxpbmVXaWR0aCk7CiAK
LSAgICAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkcmF3SW1hZ2UoSW1hZ2UqLCBDb2xvclNwYWNl
LCBjb25zdCBGbG9hdFBvaW50JiBkZXN0aW5hdGlvbiwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlv
bnMmID0gSW1hZ2VQYWludGluZ09wdGlvbnMoKSk7Ci0gICAgICAgIFdFQkNPUkVfRVhQT1JUIHZv
aWQgZHJhd0ltYWdlKEltYWdlKiwgQ29sb3JTcGFjZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5h
dGlvbiwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmID0gSW1hZ2VQYWludGluZ09wdGlvbnMo
KSk7Ci0gICAgICAgIHZvaWQgZHJhd0ltYWdlKEltYWdlKiwgQ29sb3JTcGFjZSwgY29uc3QgRmxv
YXRSZWN0JiBkZXN0aW5hdGlvbiwgY29uc3QgRmxvYXRSZWN0JiBzb3VyY2UsIGNvbnN0IEltYWdl
UGFpbnRpbmdPcHRpb25zJiA9IEltYWdlUGFpbnRpbmdPcHRpb25zKCkpOworICAgICAgICBXRUJD
T1JFX0VYUE9SVCB2b2lkIGRyYXdJbWFnZShJbWFnZSYsIENvbG9yU3BhY2UsIGNvbnN0IEZsb2F0
UG9pbnQmIGRlc3RpbmF0aW9uLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgPSBJbWFnZVBh
aW50aW5nT3B0aW9ucygpKTsKKyAgICAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkcmF3SW1hZ2Uo
SW1hZ2UmLCBDb2xvclNwYWNlLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBjb25zdCBJ
bWFnZVBhaW50aW5nT3B0aW9ucyYgPSBJbWFnZVBhaW50aW5nT3B0aW9ucygpKTsKKyAgICAgICAg
dm9pZCBkcmF3SW1hZ2UoSW1hZ2UmLCBDb2xvclNwYWNlLCBjb25zdCBGbG9hdFJlY3QmIGRlc3Rp
bmF0aW9uLCBjb25zdCBGbG9hdFJlY3QmIHNvdXJjZSwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlv
bnMmID0gSW1hZ2VQYWludGluZ09wdGlvbnMoKSk7CiAKLSAgICAgICAgdm9pZCBkcmF3VGlsZWRJ
bWFnZShJbWFnZSosIENvbG9yU3BhY2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24sIGNv
bnN0IEZsb2F0UG9pbnQmIHNvdXJjZSwgY29uc3QgRmxvYXRTaXplJiB0aWxlU2l6ZSwgY29uc3Qg
RmxvYXRTaXplJiBzcGFjaW5nLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgPSBJbWFnZVBh
aW50aW5nT3B0aW9ucygpKTsKLSAgICAgICAgdm9pZCBkcmF3VGlsZWRJbWFnZShJbWFnZSosIENv
bG9yU3BhY2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24sIGNvbnN0IEZsb2F0UmVjdCYg
c291cmNlLCBjb25zdCBGbG9hdFNpemUmIHRpbGVTY2FsZUZhY3RvciwKKyAgICAgICAgdm9pZCBk
cmF3VGlsZWRJbWFnZShJbWFnZSYsIENvbG9yU3BhY2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGlu
YXRpb24sIGNvbnN0IEZsb2F0UG9pbnQmIHNvdXJjZSwgY29uc3QgRmxvYXRTaXplJiB0aWxlU2l6
ZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5nLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYg
PSBJbWFnZVBhaW50aW5nT3B0aW9ucygpKTsKKyAgICAgICAgdm9pZCBkcmF3VGlsZWRJbWFnZShJ
bWFnZSYsIENvbG9yU3BhY2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24sIGNvbnN0IEZs
b2F0UmVjdCYgc291cmNlLCBjb25zdCBGbG9hdFNpemUmIHRpbGVTY2FsZUZhY3RvciwKICAgICAg
ICAgICAgIEltYWdlOjpUaWxlUnVsZSwgSW1hZ2U6OlRpbGVSdWxlLCBjb25zdCBJbWFnZVBhaW50
aW5nT3B0aW9ucyYgPSBJbWFnZVBhaW50aW5nT3B0aW9ucygpKTsKIAotICAgICAgICBXRUJDT1JF
X0VYUE9SVCB2b2lkIGRyYXdJbWFnZUJ1ZmZlcihJbWFnZUJ1ZmZlciosIENvbG9yU3BhY2UsIGNv
bnN0IEZsb2F0UG9pbnQmIGRlc3RpbmF0aW9uLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYg
PSBJbWFnZVBhaW50aW5nT3B0aW9ucygpKTsKLSAgICAgICAgdm9pZCBkcmF3SW1hZ2VCdWZmZXIo
SW1hZ2VCdWZmZXIqLCBDb2xvclNwYWNlLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBj
b25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgPSBJbWFnZVBhaW50aW5nT3B0aW9ucygpKTsKLSAg
ICAgICAgdm9pZCBkcmF3SW1hZ2VCdWZmZXIoSW1hZ2VCdWZmZXIqLCBDb2xvclNwYWNlLCBjb25z
dCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBjb25zdCBGbG9hdFJlY3QmIHNvdXJjZSwgY29uc3Qg
SW1hZ2VQYWludGluZ09wdGlvbnMmID0gSW1hZ2VQYWludGluZ09wdGlvbnMoKSk7CisgICAgICAg
IFdFQkNPUkVfRVhQT1JUIHZvaWQgZHJhd0ltYWdlQnVmZmVyKEltYWdlQnVmZmVyJiwgQ29sb3JT
cGFjZSwgY29uc3QgRmxvYXRQb2ludCYgZGVzdGluYXRpb24sIGNvbnN0IEltYWdlUGFpbnRpbmdP
cHRpb25zJiA9IEltYWdlUGFpbnRpbmdPcHRpb25zKCkpOworICAgICAgICB2b2lkIGRyYXdJbWFn
ZUJ1ZmZlcihJbWFnZUJ1ZmZlciYsIENvbG9yU3BhY2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGlu
YXRpb24sIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiA9IEltYWdlUGFpbnRpbmdPcHRpb25z
KCkpOworICAgICAgICB2b2lkIGRyYXdJbWFnZUJ1ZmZlcihJbWFnZUJ1ZmZlciYsIENvbG9yU3Bh
Y2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24sIGNvbnN0IEZsb2F0UmVjdCYgc291cmNl
LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgPSBJbWFnZVBhaW50aW5nT3B0aW9ucygpKTsK
IAogICAgICAgICB2b2lkIGRyYXdQYXR0ZXJuKEltYWdlJiwgY29uc3QgRmxvYXRSZWN0JiBzcmNS
ZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mLCBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgY29u
c3QgRmxvYXRTaXplJiBzcGFjaW5nLCBDb2xvclNwYWNlLCBDb21wb3NpdGVPcGVyYXRvciwgY29u
c3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgQmxlbmRNb2RlID0gQmxlbmRNb2RlTm9ybWFsKTsKIApA
QCAtMzMzLDcgKzMzMyw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdm9pZCBjbGlw
T3V0Um91bmRlZFJlY3QoY29uc3QgRmxvYXRSb3VuZGVkUmVjdCYpOwogICAgICAgICB2b2lkIGNs
aXBQYXRoKGNvbnN0IFBhdGgmLCBXaW5kUnVsZSk7CiAgICAgICAgIHZvaWQgY2xpcENvbnZleFBv
bHlnb24oc2l6ZV90IG51bVBvaW50cywgY29uc3QgRmxvYXRQb2ludCosIGJvb2wgYW50aWFsaWFz
ID0gdHJ1ZSk7Ci0gICAgICAgIHZvaWQgY2xpcFRvSW1hZ2VCdWZmZXIoSW1hZ2VCdWZmZXIqLCBj
b25zdCBGbG9hdFJlY3QmKTsKKyAgICAgICAgdm9pZCBjbGlwVG9JbWFnZUJ1ZmZlcihJbWFnZUJ1
ZmZlciYsIGNvbnN0IEZsb2F0UmVjdCYpOwogICAgICAgICAKICAgICAgICAgSW50UmVjdCBjbGlw
Qm91bmRzKCkgY29uc3Q7CiAKQEAgLTQ0Myw3ICs0NDMsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAgICAgICAgIC8vIENyZWF0ZSBhbiBpbWFnZSBidWZmZXIgY29tcGF0aWJsZSB3aXRoIHRoaXMg
Y29udGV4dCwgd2l0aCBzdWl0YWJsZSByZXNvbHV0aW9uCiAgICAgICAgIC8vIGZvciBkcmF3aW5n
IGludG8gdGhlIGJ1ZmZlciBhbmQgdGhlbiBpbnRvIHRoaXMgY29udGV4dC4KICAgICAgICAgc3Rk
Ojp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPiBjcmVhdGVDb21wYXRpYmxlQnVmZmVyKGNvbnN0IEZs
b2F0U2l6ZSYsIGJvb2wgaGFzQWxwaGEgPSB0cnVlKSBjb25zdDsKLSAgICAgICAgYm9vbCBpc0Nv
bXBhdGlibGVXaXRoQnVmZmVyKEltYWdlQnVmZmVyKikgY29uc3Q7CisgICAgICAgIGJvb2wgaXND
b21wYXRpYmxlV2l0aEJ1ZmZlcihJbWFnZUJ1ZmZlciYpIGNvbnN0OwogCiAgICAgICAgIC8vIFRo
aXMgZnVuY3Rpb24gYXBwbGllcyB0aGUgZGV2aWNlIHNjYWxlIGZhY3RvciB0byB0aGUgY29udGV4
dCwgbWFraW5nIHRoZSBjb250ZXh0IGNhcGFibGUgb2YKICAgICAgICAgLy8gYWN0aW5nIGFzIGEg
YmFzZS1sZXZlbCBjb250ZXh0IGZvciBhIEhpRFBJIGVudmlyb25tZW50LgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU2hhZG93Qmx1ci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9TaGFkb3dCbHVyLmNwcAppbmRleCBkNjYyMGM3OTAw
ODBhNmZkMGE3YzNkYjEzOWQ4OWUwMmZhMjk0ZWM3Li44NWFlZWVmZjcyZWUyNzBlNzYwMDgwZGM2
MGVlYjJiMDVjODE3NGEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9TaGFkb3dCbHVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9TaGFkb3dCbHVyLmNwcApAQCAtNDcyLDcgKzQ3Miw3IEBAIHZvaWQgU2hhZG93Qmx1cjo6ZHJh
d1NoYWRvd0J1ZmZlcihHcmFwaGljc0NvbnRleHQmIGdyYXBoaWNzQ29udGV4dCkKICAgICAgICAg
Ly8gYnV0IHdlIG1heSBub3QgaGF2ZSBjbGVhcmVkIGl0IGFsbCwgc28gY2xpcCB0byB0aGUgZmls
bGVkIHBhcnQgZmlyc3QuCiAgICAgICAgIGdyYXBoaWNzQ29udGV4dC5jbGlwKEZsb2F0UmVjdCht
X2xheWVyT3JpZ2luLCBtX2xheWVyU2l6ZSkpOwogICAgIH0KLSAgICBncmFwaGljc0NvbnRleHQu
Y2xpcFRvSW1hZ2VCdWZmZXIobV9sYXllckltYWdlLCBGbG9hdFJlY3QobV9sYXllck9yaWdpbiwg
YnVmZmVyU2l6ZSkpOworICAgIGdyYXBoaWNzQ29udGV4dC5jbGlwVG9JbWFnZUJ1ZmZlcigqbV9s
YXllckltYWdlLCBGbG9hdFJlY3QobV9sYXllck9yaWdpbiwgYnVmZmVyU2l6ZSkpOwogICAgIGdy
YXBoaWNzQ29udGV4dC5zZXRGaWxsQ29sb3IobV9jb2xvciwgbV9jb2xvclNwYWNlKTsKIAogICAg
IGdyYXBoaWNzQ29udGV4dC5jbGVhclNoYWRvdygpOwpAQCAtNTkzLDcgKzU5Myw3IEBAIHZvaWQg
U2hhZG93Qmx1cjo6ZHJhd1JlY3RTaGFkb3dXaXRob3V0VGlsaW5nKEdyYXBoaWNzQ29udGV4dCYg
Z3JhcGhpY3NDb250ZXh0LCBjCiAgICAgfQogICAgIAogICAgIGRyYXdTaGFkb3dCdWZmZXIoZ3Jh
cGhpY3NDb250ZXh0KTsKLSAgICBtX2xheWVySW1hZ2UgPSAwOworICAgIG1fbGF5ZXJJbWFnZSA9
IG51bGxwdHI7CiAgICAgU2NyYXRjaEJ1ZmZlcjo6c2luZ2xldG9uKCkuc2NoZWR1bGVTY3JhdGNo
QnVmZmVyUHVyZ2UoKTsKIH0KIApAQCAtNjM0LDcgKzYzNCw3IEBAIHZvaWQgU2hhZG93Qmx1cjo6
ZHJhd0luc2V0U2hhZG93V2l0aG91dFRpbGluZyhHcmFwaGljc0NvbnRleHQmIGdyYXBoaWNzQ29u
dGV4dCwKICAgICB9CiAgICAgCiAgICAgZHJhd1NoYWRvd0J1ZmZlcihncmFwaGljc0NvbnRleHQp
OwotICAgIG1fbGF5ZXJJbWFnZSA9IDA7CisgICAgbV9sYXllckltYWdlID0gbnVsbHB0cjsKICAg
ICBTY3JhdGNoQnVmZmVyOjpzaW5nbGV0b24oKS5zY2hlZHVsZVNjcmF0Y2hCdWZmZXJQdXJnZSgp
OwogfQogCkBAIC03MzEsNyArNzMxLDcgQEAgdm9pZCBTaGFkb3dCbHVyOjpkcmF3SW5zZXRTaGFk
b3dXaXRoVGlsaW5nKEdyYXBoaWNzQ29udGV4dCYgZ3JhcGhpY3NDb250ZXh0LCBjb24KICAgICAK
ICAgICBkcmF3TGF5ZXJQaWVjZXMoZ3JhcGhpY3NDb250ZXh0LCBkZXN0SG9sZUJvdW5kcywgaG9s
ZVJlY3QucmFkaWkoKSwgZWRnZVNpemUsIHRlbXBsYXRlU2l6ZSwgSW5uZXJTaGFkb3cpOwogCi0g
ICAgbV9sYXllckltYWdlID0gMDsKKyAgICBtX2xheWVySW1hZ2UgPSBudWxscHRyOwogICAgIFNj
cmF0Y2hCdWZmZXI6OnNpbmdsZXRvbigpLnNjaGVkdWxlU2NyYXRjaEJ1ZmZlclB1cmdlKCk7CiB9
CiAKQEAgLTc3Nyw3ICs3NzcsNyBAQCB2b2lkIFNoYWRvd0JsdXI6OmRyYXdSZWN0U2hhZG93V2l0
aFRpbGluZyhHcmFwaGljc0NvbnRleHQmIGdyYXBoaWNzQ29udGV4dCwgY29ucwogCiAgICAgZHJh
d0xheWVyUGllY2VzKGdyYXBoaWNzQ29udGV4dCwgc2hhZG93Qm91bmRzLCBzaGFkb3dlZFJlY3Qu
cmFkaWkoKSwgZWRnZVNpemUsIHRlbXBsYXRlU2l6ZSwgT3V0ZXJTaGFkb3cpOwogCi0gICAgbV9s
YXllckltYWdlID0gMDsKKyAgICBtX2xheWVySW1hZ2UgPSBudWxscHRyOwogICAgIFNjcmF0Y2hC
dWZmZXI6OnNpbmdsZXRvbigpLnNjaGVkdWxlU2NyYXRjaEJ1ZmZlclB1cmdlKCk7CiB9CiAKQEAg
LTgxNiw0NiArODE2LDQ2IEBAIHZvaWQgU2hhZG93Qmx1cjo6ZHJhd0xheWVyUGllY2VzKEdyYXBo
aWNzQ29udGV4dCYgZ3JhcGhpY3NDb250ZXh0LCBjb25zdCBGbG9hdFJlCiAgICAgLy8gVG9wIHNp
ZGUuCiAgICAgRmxvYXRSZWN0IHRpbGVSZWN0ID0gRmxvYXRSZWN0KGxlZnRTbGljZSwgMCwgdGVt
cGxhdGVTaWRlTGVuZ3RoLCB0b3BTbGljZSk7CiAgICAgRmxvYXRSZWN0IGRlc3RSZWN0ID0gRmxv
YXRSZWN0KGNlbnRlclJlY3QueCgpLCBjZW50ZXJSZWN0LnkoKSAtIHRvcFNsaWNlLCBjZW50ZXJS
ZWN0LndpZHRoKCksIHRvcFNsaWNlKTsKLSAgICBncmFwaGljc0NvbnRleHQuZHJhd0ltYWdlQnVm
ZmVyKG1fbGF5ZXJJbWFnZSwgQ29sb3JTcGFjZURldmljZVJHQiwgZGVzdFJlY3QsIHRpbGVSZWN0
KTsKKyAgICBncmFwaGljc0NvbnRleHQuZHJhd0ltYWdlQnVmZmVyKCptX2xheWVySW1hZ2UsIENv
bG9yU3BhY2VEZXZpY2VSR0IsIGRlc3RSZWN0LCB0aWxlUmVjdCk7CiAKICAgICAvLyBEcmF3IHRo
ZSBib3R0b20gc2lkZS4KICAgICB0aWxlUmVjdC5zZXRZKHRlbXBsYXRlU2l6ZS5oZWlnaHQoKSAt
IGJvdHRvbVNsaWNlKTsKICAgICB0aWxlUmVjdC5zZXRIZWlnaHQoYm90dG9tU2xpY2UpOwogICAg
IGRlc3RSZWN0LnNldFkoY2VudGVyUmVjdC5tYXhZKCkpOwogICAgIGRlc3RSZWN0LnNldEhlaWdo
dChib3R0b21TbGljZSk7Ci0gICAgZ3JhcGhpY3NDb250ZXh0LmRyYXdJbWFnZUJ1ZmZlcihtX2xh
eWVySW1hZ2UsIENvbG9yU3BhY2VEZXZpY2VSR0IsIGRlc3RSZWN0LCB0aWxlUmVjdCk7CisgICAg
Z3JhcGhpY3NDb250ZXh0LmRyYXdJbWFnZUJ1ZmZlcigqbV9sYXllckltYWdlLCBDb2xvclNwYWNl
RGV2aWNlUkdCLCBkZXN0UmVjdCwgdGlsZVJlY3QpOwogCiAgICAgLy8gTGVmdCBzaWRlLgogICAg
IHRpbGVSZWN0ID0gRmxvYXRSZWN0KDAsIHRvcFNsaWNlLCBsZWZ0U2xpY2UsIHRlbXBsYXRlU2lk
ZUxlbmd0aCk7CiAgICAgZGVzdFJlY3QgPSBGbG9hdFJlY3QoY2VudGVyUmVjdC54KCkgLSBsZWZ0
U2xpY2UsIGNlbnRlclJlY3QueSgpLCBsZWZ0U2xpY2UsIGNlbnRlclJlY3QuaGVpZ2h0KCkpOwot
ICAgIGdyYXBoaWNzQ29udGV4dC5kcmF3SW1hZ2VCdWZmZXIobV9sYXllckltYWdlLCBDb2xvclNw
YWNlRGV2aWNlUkdCLCBkZXN0UmVjdCwgdGlsZVJlY3QpOworICAgIGdyYXBoaWNzQ29udGV4dC5k
cmF3SW1hZ2VCdWZmZXIoKm1fbGF5ZXJJbWFnZSwgQ29sb3JTcGFjZURldmljZVJHQiwgZGVzdFJl
Y3QsIHRpbGVSZWN0KTsKIAogICAgIC8vIFJpZ2h0IHNpZGUuCiAgICAgdGlsZVJlY3Quc2V0WCh0
ZW1wbGF0ZVNpemUud2lkdGgoKSAtIHJpZ2h0U2xpY2UpOwogICAgIHRpbGVSZWN0LnNldFdpZHRo
KHJpZ2h0U2xpY2UpOwogICAgIGRlc3RSZWN0LnNldFgoY2VudGVyUmVjdC5tYXhYKCkpOwogICAg
IGRlc3RSZWN0LnNldFdpZHRoKHJpZ2h0U2xpY2UpOwotICAgIGdyYXBoaWNzQ29udGV4dC5kcmF3
SW1hZ2VCdWZmZXIobV9sYXllckltYWdlLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBkZXN0UmVjdCwg
dGlsZVJlY3QpOworICAgIGdyYXBoaWNzQ29udGV4dC5kcmF3SW1hZ2VCdWZmZXIoKm1fbGF5ZXJJ
bWFnZSwgQ29sb3JTcGFjZURldmljZVJHQiwgZGVzdFJlY3QsIHRpbGVSZWN0KTsKIAogICAgIC8v
IFRvcCBsZWZ0IGNvcm5lci4KICAgICB0aWxlUmVjdCA9IEZsb2F0UmVjdCgwLCAwLCBsZWZ0U2xp
Y2UsIHRvcFNsaWNlKTsKICAgICBkZXN0UmVjdCA9IEZsb2F0UmVjdChjZW50ZXJSZWN0LngoKSAt
IGxlZnRTbGljZSwgY2VudGVyUmVjdC55KCkgLSB0b3BTbGljZSwgbGVmdFNsaWNlLCB0b3BTbGlj
ZSk7Ci0gICAgZ3JhcGhpY3NDb250ZXh0LmRyYXdJbWFnZUJ1ZmZlcihtX2xheWVySW1hZ2UsIENv
bG9yU3BhY2VEZXZpY2VSR0IsIGRlc3RSZWN0LCB0aWxlUmVjdCk7CisgICAgZ3JhcGhpY3NDb250
ZXh0LmRyYXdJbWFnZUJ1ZmZlcigqbV9sYXllckltYWdlLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBk
ZXN0UmVjdCwgdGlsZVJlY3QpOwogCiAgICAgLy8gVG9wIHJpZ2h0IGNvcm5lci4KICAgICB0aWxl
UmVjdCA9IEZsb2F0UmVjdCh0ZW1wbGF0ZVNpemUud2lkdGgoKSAtIHJpZ2h0U2xpY2UsIDAsIHJp
Z2h0U2xpY2UsIHRvcFNsaWNlKTsKICAgICBkZXN0UmVjdCA9IEZsb2F0UmVjdChjZW50ZXJSZWN0
Lm1heFgoKSwgY2VudGVyUmVjdC55KCkgLSB0b3BTbGljZSwgcmlnaHRTbGljZSwgdG9wU2xpY2Up
OwotICAgIGdyYXBoaWNzQ29udGV4dC5kcmF3SW1hZ2VCdWZmZXIobV9sYXllckltYWdlLCBDb2xv
clNwYWNlRGV2aWNlUkdCLCBkZXN0UmVjdCwgdGlsZVJlY3QpOworICAgIGdyYXBoaWNzQ29udGV4
dC5kcmF3SW1hZ2VCdWZmZXIoKm1fbGF5ZXJJbWFnZSwgQ29sb3JTcGFjZURldmljZVJHQiwgZGVz
dFJlY3QsIHRpbGVSZWN0KTsKIAogICAgIC8vIEJvdHRvbSByaWdodCBjb3JuZXIuCiAgICAgdGls
ZVJlY3QgPSBGbG9hdFJlY3QodGVtcGxhdGVTaXplLndpZHRoKCkgLSByaWdodFNsaWNlLCB0ZW1w
bGF0ZVNpemUuaGVpZ2h0KCkgLSBib3R0b21TbGljZSwgcmlnaHRTbGljZSwgYm90dG9tU2xpY2Up
OwogICAgIGRlc3RSZWN0ID0gRmxvYXRSZWN0KGNlbnRlclJlY3QubWF4WCgpLCBjZW50ZXJSZWN0
Lm1heFkoKSwgcmlnaHRTbGljZSwgYm90dG9tU2xpY2UpOwotICAgIGdyYXBoaWNzQ29udGV4dC5k
cmF3SW1hZ2VCdWZmZXIobV9sYXllckltYWdlLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBkZXN0UmVj
dCwgdGlsZVJlY3QpOworICAgIGdyYXBoaWNzQ29udGV4dC5kcmF3SW1hZ2VCdWZmZXIoKm1fbGF5
ZXJJbWFnZSwgQ29sb3JTcGFjZURldmljZVJHQiwgZGVzdFJlY3QsIHRpbGVSZWN0KTsKIAogICAg
IC8vIEJvdHRvbSBsZWZ0IGNvcm5lci4KICAgICB0aWxlUmVjdCA9IEZsb2F0UmVjdCgwLCB0ZW1w
bGF0ZVNpemUuaGVpZ2h0KCkgLSBib3R0b21TbGljZSwgbGVmdFNsaWNlLCBib3R0b21TbGljZSk7
CiAgICAgZGVzdFJlY3QgPSBGbG9hdFJlY3QoY2VudGVyUmVjdC54KCkgLSBsZWZ0U2xpY2UsIGNl
bnRlclJlY3QubWF4WSgpLCBsZWZ0U2xpY2UsIGJvdHRvbVNsaWNlKTsKLSAgICBncmFwaGljc0Nv
bnRleHQuZHJhd0ltYWdlQnVmZmVyKG1fbGF5ZXJJbWFnZSwgQ29sb3JTcGFjZURldmljZVJHQiwg
ZGVzdFJlY3QsIHRpbGVSZWN0KTsKKyAgICBncmFwaGljc0NvbnRleHQuZHJhd0ltYWdlQnVmZmVy
KCptX2xheWVySW1hZ2UsIENvbG9yU3BhY2VEZXZpY2VSR0IsIGRlc3RSZWN0LCB0aWxlUmVjdCk7
CiB9CiAKIApAQCAtOTE1LDkgKzkxNSw5IEBAIHZvaWQgU2hhZG93Qmx1cjo6ZW5kU2hhZG93TGF5
ZXIoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KQogICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2
ZXIgc3RhdGVTYXZlKGNvbnRleHQpOwogCiAgICAgY29udGV4dC5jbGVhclNoYWRvdygpOwotICAg
IGNvbnRleHQuZHJhd0ltYWdlQnVmZmVyKG1fbGF5ZXJJbWFnZSwgQ29sb3JTcGFjZURldmljZVJH
QiwgRmxvYXRSZWN0KHJvdW5kZWRJbnRQb2ludChtX2xheWVyT3JpZ2luKSwgbV9sYXllclNpemUp
LCBGbG9hdFJlY3QoRmxvYXRQb2ludCgpLCBtX2xheWVyU2l6ZSksIGNvbnRleHQuY29tcG9zaXRl
T3BlcmF0aW9uKCkpOworICAgIGNvbnRleHQuZHJhd0ltYWdlQnVmZmVyKCptX2xheWVySW1hZ2Us
IENvbG9yU3BhY2VEZXZpY2VSR0IsIEZsb2F0UmVjdChyb3VuZGVkSW50UG9pbnQobV9sYXllck9y
aWdpbiksIG1fbGF5ZXJTaXplKSwgRmxvYXRSZWN0KEZsb2F0UG9pbnQoKSwgbV9sYXllclNpemUp
LCBjb250ZXh0LmNvbXBvc2l0ZU9wZXJhdGlvbigpKTsKIAotICAgIG1fbGF5ZXJJbWFnZSA9IDA7
CisgICAgbV9sYXllckltYWdlID0gbnVsbHB0cjsKICAgICBTY3JhdGNoQnVmZmVyOjpzaW5nbGV0
b24oKS5zY2hlZHVsZVNjcmF0Y2hCdWZmZXJQdXJnZSgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm8u
Y3BwCmluZGV4IGE5N2M1OGQyMWQwNWViMDg0Y2QwMzNkYjg5NTM3OGJmNTIwMjU3MTkuLjNlNTIx
M2Y4NmRhNjUxMmRlNjFkZmE1YmY5ZjY1YWU3MWM4MmUzZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm8uY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm8u
Y3BwCkBAIC0xNzAsNyArMTcwLDcgQEAgdm9pZCBJbWFnZUJ1ZmZlcjo6ZHJhdyhHcmFwaGljc0Nv
bnRleHQmIGRlc3RpbmF0aW9uQ29udGV4dCwgQ29sb3JTcGFjZSBzdHlsZUNvbG8KIHsKICAgICBC
YWNraW5nU3RvcmVDb3B5IGNvcHlNb2RlID0gJmRlc3RpbmF0aW9uQ29udGV4dCA9PSAmY29udGV4
dCgpID8gQ29weUJhY2tpbmdTdG9yZSA6IERvbnRDb3B5QmFja2luZ1N0b3JlOwogICAgIFJlZlB0
cjxJbWFnZT4gaW1hZ2UgPSBjb3B5SW1hZ2UoY29weU1vZGUpOwotICAgIGRlc3RpbmF0aW9uQ29u
dGV4dC5kcmF3SW1hZ2UoaW1hZ2UuZ2V0KCksIHN0eWxlQ29sb3JTcGFjZSwgZGVzdFJlY3QsIHNy
Y1JlY3QsIEltYWdlUGFpbnRpbmdPcHRpb25zKG9wLCBibGVuZE1vZGUsIEltYWdlT3JpZW50YXRp
b25EZXNjcmlwdGlvbigpLCB1c2VMb3dRdWFsaXR5U2NhbGUpKTsKKyAgICBkZXN0aW5hdGlvbkNv
bnRleHQuZHJhd0ltYWdlKCppbWFnZSwgc3R5bGVDb2xvclNwYWNlLCBkZXN0UmVjdCwgc3JjUmVj
dCwgSW1hZ2VQYWludGluZ09wdGlvbnMob3AsIGJsZW5kTW9kZSwgSW1hZ2VPcmllbnRhdGlvbkRl
c2NyaXB0aW9uKCksIHVzZUxvd1F1YWxpdHlTY2FsZSkpOwogfQogCiB2b2lkIEltYWdlQnVmZmVy
OjpkcmF3UGF0dGVybihHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYg
c3JjUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBwYXR0ZXJuVHJhbnNmb3JtLApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUERGRG9jdW1lbnRJbWFn
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9QREZEb2N1bWVudElt
YWdlLmNwcAppbmRleCBmNGIwNDg1NzFlYzk4Mzk2MTNjNDRkMjQ5ZDJiNDJhNzk1NGNkZmU5Li44
ZWUyYjgyNGM1OTJhMzFlOGZmMmFmNzE1ZjM3NDcyNmMwZWQyZTJhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9QREZEb2N1bWVudEltYWdlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9QREZEb2N1bWVudEltYWdlLmNw
cApAQCAtMTkwLDcgKzE5MCw3IEBAIHZvaWQgUERGRG9jdW1lbnRJbWFnZTo6ZHJhdyhHcmFwaGlj
c0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwKICAgICAgICAgY29u
dGV4dC5zZXRDb21wb3NpdGVPcGVyYXRpb24ob3ApOwogCiAgICAgICAgIGlmIChtX2NhY2hlZElt
YWdlQnVmZmVyKQotICAgICAgICAgICAgY29udGV4dC5kcmF3SW1hZ2VCdWZmZXIobV9jYWNoZWRJ
bWFnZUJ1ZmZlci5nZXQoKSwgQ29sb3JTcGFjZURldmljZVJHQiwgZHN0UmVjdCk7CisgICAgICAg
ICAgICBjb250ZXh0LmRyYXdJbWFnZUJ1ZmZlcigqbV9jYWNoZWRJbWFnZUJ1ZmZlciwgQ29sb3JT
cGFjZURldmljZVJHQiwgZHN0UmVjdCk7CiAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgdHJh
bnNmb3JtQ29udGV4dEZvclBhaW50aW5nKGNvbnRleHQsIGRzdFJlY3QsIHNyY1JlY3QpOwogICAg
ICAgICAgICAgZHJhd1BERlBhZ2UoY29udGV4dCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQmxlbmQuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUJsZW5kLmNwcAppbmRleCAwODlmNDUwNTIzMzlh
ZTBiMmJmMjk2YTBmYTc0ZTU2YzExYzg3ZmI1Li5lZGVmNTc4MDE4MmZjYzgwZmU1Nzk1MzkxMmQ0
YWQ5NWEzNzZhMDNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9maWx0ZXJzL0ZFQmxlbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2ZpbHRlcnMvRkVCbGVuZC5jcHAKQEAgLTcyLDExICs3MiwxMSBAQCB2b2lkIEZFQmxlbmQ6
OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZSgpCiAKICAgICBJbWFnZUJ1ZmZlciogaW1hZ2VCdWZmZXIg
PSBpbi0+YXNJbWFnZUJ1ZmZlcigpOwogICAgIEltYWdlQnVmZmVyKiBpbWFnZUJ1ZmZlcjIgPSBp
bjItPmFzSW1hZ2VCdWZmZXIoKTsKLSAgICBBU1NFUlQoaW1hZ2VCdWZmZXIpOwotICAgIEFTU0VS
VChpbWFnZUJ1ZmZlcjIpOworICAgIGlmICghaW1hZ2VCdWZmZXIgfHwgIWltYWdlQnVmZmVyMikK
KyAgICAgICAgcmV0dXJuOwogCi0gICAgZmlsdGVyQ29udGV4dC5kcmF3SW1hZ2VCdWZmZXIoaW1h
Z2VCdWZmZXIyLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBkcmF3aW5nUmVnaW9uT2ZJbnB1dEltYWdl
KGluMi0+YWJzb2x1dGVQYWludFJlY3QoKSkpOwotICAgIGZpbHRlckNvbnRleHQuZHJhd0ltYWdl
QnVmZmVyKGltYWdlQnVmZmVyLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBkcmF3aW5nUmVnaW9uT2ZJ
bnB1dEltYWdlKGluLT5hYnNvbHV0ZVBhaW50UmVjdCgpKSwgSW50UmVjdChJbnRQb2ludCgpLCBp
bWFnZUJ1ZmZlci0+bG9naWNhbFNpemUoKSksIEltYWdlUGFpbnRpbmdPcHRpb25zKENvbXBvc2l0
ZVNvdXJjZU92ZXIsIG1fbW9kZSkpOworICAgIGZpbHRlckNvbnRleHQuZHJhd0ltYWdlQnVmZmVy
KCppbWFnZUJ1ZmZlcjIsIENvbG9yU3BhY2VEZXZpY2VSR0IsIGRyYXdpbmdSZWdpb25PZklucHV0
SW1hZ2UoaW4yLT5hYnNvbHV0ZVBhaW50UmVjdCgpKSk7CisgICAgZmlsdGVyQ29udGV4dC5kcmF3
SW1hZ2VCdWZmZXIoKmltYWdlQnVmZmVyLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBkcmF3aW5nUmVn
aW9uT2ZJbnB1dEltYWdlKGluLT5hYnNvbHV0ZVBhaW50UmVjdCgpKSwgSW50UmVjdChJbnRQb2lu
dCgpLCBpbWFnZUJ1ZmZlci0+bG9naWNhbFNpemUoKSksIEltYWdlUGFpbnRpbmdPcHRpb25zKENv
bXBvc2l0ZVNvdXJjZU92ZXIsIG1fbW9kZSkpOwogfQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb2xvck1hdHJpeC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29sb3JNYXRyaXgu
Y3BwCmluZGV4IDg3NjZhZWNiMjIzM2M5YWE5M2IzZjU5OGZmMmU2MzEzOGYyNTY4ZmYuLjc4ZmZk
Y2U0ZDU5MWFkNmE4MTIyZmU2Mzg4MjM5M2ZmNTUxYWU3NzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb2xvck1hdHJpeC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNvbG9yTWF0cml4LmNw
cApAQCAtMTQ3LDcgKzE0Nyw5IEBAIHZvaWQgRkVDb2xvck1hdHJpeDo6cGxhdGZvcm1BcHBseVNv
ZnR3YXJlKCkKICAgICBpZiAoIXJlc3VsdEltYWdlKQogICAgICAgICByZXR1cm47CiAKLSAgICBy
ZXN1bHRJbWFnZS0+Y29udGV4dCgpLmRyYXdJbWFnZUJ1ZmZlcihpbi0+YXNJbWFnZUJ1ZmZlcigp
LCBDb2xvclNwYWNlRGV2aWNlUkdCLCBkcmF3aW5nUmVnaW9uT2ZJbnB1dEltYWdlKGluLT5hYnNv
bHV0ZVBhaW50UmVjdCgpKSk7CisgICAgSW1hZ2VCdWZmZXIqIGluQnVmZmVyID0gaW4tPmFzSW1h
Z2VCdWZmZXIoKTsKKyAgICBpZiAoaW5CdWZmZXIpCisgICAgICAgIHJlc3VsdEltYWdlLT5jb250
ZXh0KCkuZHJhd0ltYWdlQnVmZmVyKCppbkJ1ZmZlciwgQ29sb3JTcGFjZURldmljZVJHQiwgZHJh
d2luZ1JlZ2lvbk9mSW5wdXRJbWFnZShpbi0+YWJzb2x1dGVQYWludFJlY3QoKSkpOwogCiAgICAg
SW50UmVjdCBpbWFnZVJlY3QoSW50UG9pbnQoKSwgcmVzdWx0SW1hZ2UtPmxvZ2ljYWxTaXplKCkp
OwogICAgIFJlZlB0cjxVaW50OENsYW1wZWRBcnJheT4gcGl4ZWxBcnJheSA9IHJlc3VsdEltYWdl
LT5nZXRVbm11bHRpcGxpZWRJbWFnZURhdGEoaW1hZ2VSZWN0KTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb21wb3NpdGUuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNvbXBvc2l0ZS5jcHAKaW5k
ZXggZmNjODFlODcxMzhmYmRmM2VjMTA3NzA5Njk3YjQxYTM3OWExOTc5YS4uOWExNTZmODk0ZGYx
NDNlZThlMzg1ODY4NzhkMDcwOTIyOGUxYmZlOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNvbXBvc2l0ZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNvbXBvc2l0ZS5jcHAKQEAgLTI3Niwx
MyArMjc2LDEzIEBAIHZvaWQgRkVDb21wb3NpdGU6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZSgpCiAK
ICAgICBJbWFnZUJ1ZmZlciogaW1hZ2VCdWZmZXIgPSBpbi0+YXNJbWFnZUJ1ZmZlcigpOwogICAg
IEltYWdlQnVmZmVyKiBpbWFnZUJ1ZmZlcjIgPSBpbjItPmFzSW1hZ2VCdWZmZXIoKTsKLSAgICBB
U1NFUlQoaW1hZ2VCdWZmZXIpOwotICAgIEFTU0VSVChpbWFnZUJ1ZmZlcjIpOworICAgIGlmICgh
aW1hZ2VCdWZmZXIgfHwgIWltYWdlQnVmZmVyMikKKyAgICAgICAgcmV0dXJuOwogCiAgICAgc3dp
dGNoIChtX3R5cGUpIHsKICAgICBjYXNlIEZFQ09NUE9TSVRFX09QRVJBVE9SX09WRVI6Ci0gICAg
ICAgIGZpbHRlckNvbnRleHQuZHJhd0ltYWdlQnVmZmVyKGltYWdlQnVmZmVyMiwgQ29sb3JTcGFj
ZURldmljZVJHQiwgZHJhd2luZ1JlZ2lvbk9mSW5wdXRJbWFnZShpbjItPmFic29sdXRlUGFpbnRS
ZWN0KCkpKTsKLSAgICAgICAgZmlsdGVyQ29udGV4dC5kcmF3SW1hZ2VCdWZmZXIoaW1hZ2VCdWZm
ZXIsIENvbG9yU3BhY2VEZXZpY2VSR0IsIGRyYXdpbmdSZWdpb25PZklucHV0SW1hZ2UoaW4tPmFi
c29sdXRlUGFpbnRSZWN0KCkpKTsKKyAgICAgICAgZmlsdGVyQ29udGV4dC5kcmF3SW1hZ2VCdWZm
ZXIoKmltYWdlQnVmZmVyMiwgQ29sb3JTcGFjZURldmljZVJHQiwgZHJhd2luZ1JlZ2lvbk9mSW5w
dXRJbWFnZShpbjItPmFic29sdXRlUGFpbnRSZWN0KCkpKTsKKyAgICAgICAgZmlsdGVyQ29udGV4
dC5kcmF3SW1hZ2VCdWZmZXIoKmltYWdlQnVmZmVyLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBkcmF3
aW5nUmVnaW9uT2ZJbnB1dEltYWdlKGluLT5hYnNvbHV0ZVBhaW50UmVjdCgpKSk7CiAgICAgICAg
IGJyZWFrOwogICAgIGNhc2UgRkVDT01QT1NJVEVfT1BFUkFUT1JfSU46IHsKICAgICAgICAgLy8g
QXBwbGllcyBvbmx5IHRvIHRoZSBpbnRlcnNlY3RlZCByZWdpb24uCkBAIC0yOTQsMjEgKzI5NCwy
MSBAQCB2b2lkIEZFQ29tcG9zaXRlOjpwbGF0Zm9ybUFwcGx5U29mdHdhcmUoKQogICAgICAgICBJ
bnRSZWN0IGFkanVzdGVkRGVzdGluYXRpb25SZWN0ID0gZGVzdGluYXRpb25SZWN0IC0gYWJzb2x1
dGVQYWludFJlY3QoKS5sb2NhdGlvbigpOwogICAgICAgICBJbnRSZWN0IHNvdXJjZVJlY3QgPSBk
ZXN0aW5hdGlvblJlY3QgLSBpbi0+YWJzb2x1dGVQYWludFJlY3QoKS5sb2NhdGlvbigpOwogICAg
ICAgICBJbnRSZWN0IHNvdXJjZTJSZWN0ID0gZGVzdGluYXRpb25SZWN0IC0gaW4yLT5hYnNvbHV0
ZVBhaW50UmVjdCgpLmxvY2F0aW9uKCk7Ci0gICAgICAgIGZpbHRlckNvbnRleHQuZHJhd0ltYWdl
QnVmZmVyKGltYWdlQnVmZmVyMiwgQ29sb3JTcGFjZURldmljZVJHQiwgYWRqdXN0ZWREZXN0aW5h
dGlvblJlY3QsIHNvdXJjZTJSZWN0KTsKLSAgICAgICAgZmlsdGVyQ29udGV4dC5kcmF3SW1hZ2VC
dWZmZXIoaW1hZ2VCdWZmZXIsIENvbG9yU3BhY2VEZXZpY2VSR0IsIGFkanVzdGVkRGVzdGluYXRp
b25SZWN0LCBzb3VyY2VSZWN0LCBDb21wb3NpdGVTb3VyY2VJbik7CisgICAgICAgIGZpbHRlckNv
bnRleHQuZHJhd0ltYWdlQnVmZmVyKCppbWFnZUJ1ZmZlcjIsIENvbG9yU3BhY2VEZXZpY2VSR0Is
IGFkanVzdGVkRGVzdGluYXRpb25SZWN0LCBzb3VyY2UyUmVjdCk7CisgICAgICAgIGZpbHRlckNv
bnRleHQuZHJhd0ltYWdlQnVmZmVyKCppbWFnZUJ1ZmZlciwgQ29sb3JTcGFjZURldmljZVJHQiwg
YWRqdXN0ZWREZXN0aW5hdGlvblJlY3QsIHNvdXJjZVJlY3QsIENvbXBvc2l0ZVNvdXJjZUluKTsK
ICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgIGNhc2UgRkVDT01QT1NJVEVfT1BFUkFUT1JfT1VU
OgotICAgICAgICBmaWx0ZXJDb250ZXh0LmRyYXdJbWFnZUJ1ZmZlcihpbWFnZUJ1ZmZlciwgQ29s
b3JTcGFjZURldmljZVJHQiwgZHJhd2luZ1JlZ2lvbk9mSW5wdXRJbWFnZShpbi0+YWJzb2x1dGVQ
YWludFJlY3QoKSkpOwotICAgICAgICBmaWx0ZXJDb250ZXh0LmRyYXdJbWFnZUJ1ZmZlcihpbWFn
ZUJ1ZmZlcjIsIENvbG9yU3BhY2VEZXZpY2VSR0IsIGRyYXdpbmdSZWdpb25PZklucHV0SW1hZ2Uo
aW4yLT5hYnNvbHV0ZVBhaW50UmVjdCgpKSwgSW50UmVjdChJbnRQb2ludCgpLCBpbWFnZUJ1ZmZl
cjItPmxvZ2ljYWxTaXplKCkpLCBDb21wb3NpdGVEZXN0aW5hdGlvbk91dCk7CisgICAgICAgIGZp
bHRlckNvbnRleHQuZHJhd0ltYWdlQnVmZmVyKCppbWFnZUJ1ZmZlciwgQ29sb3JTcGFjZURldmlj
ZVJHQiwgZHJhd2luZ1JlZ2lvbk9mSW5wdXRJbWFnZShpbi0+YWJzb2x1dGVQYWludFJlY3QoKSkp
OworICAgICAgICBmaWx0ZXJDb250ZXh0LmRyYXdJbWFnZUJ1ZmZlcigqaW1hZ2VCdWZmZXIyLCBD
b2xvclNwYWNlRGV2aWNlUkdCLCBkcmF3aW5nUmVnaW9uT2ZJbnB1dEltYWdlKGluMi0+YWJzb2x1
dGVQYWludFJlY3QoKSksIEludFJlY3QoSW50UG9pbnQoKSwgaW1hZ2VCdWZmZXIyLT5sb2dpY2Fs
U2l6ZSgpKSwgQ29tcG9zaXRlRGVzdGluYXRpb25PdXQpOwogICAgICAgICBicmVhazsKICAgICBj
YXNlIEZFQ09NUE9TSVRFX09QRVJBVE9SX0FUT1A6Ci0gICAgICAgIGZpbHRlckNvbnRleHQuZHJh
d0ltYWdlQnVmZmVyKGltYWdlQnVmZmVyMiwgQ29sb3JTcGFjZURldmljZVJHQiwgZHJhd2luZ1Jl
Z2lvbk9mSW5wdXRJbWFnZShpbjItPmFic29sdXRlUGFpbnRSZWN0KCkpKTsKLSAgICAgICAgZmls
dGVyQ29udGV4dC5kcmF3SW1hZ2VCdWZmZXIoaW1hZ2VCdWZmZXIsIENvbG9yU3BhY2VEZXZpY2VS
R0IsIGRyYXdpbmdSZWdpb25PZklucHV0SW1hZ2UoaW4tPmFic29sdXRlUGFpbnRSZWN0KCkpLCBJ
bnRSZWN0KEludFBvaW50KCksIGltYWdlQnVmZmVyLT5sb2dpY2FsU2l6ZSgpKSwgQ29tcG9zaXRl
U291cmNlQXRvcCk7CisgICAgICAgIGZpbHRlckNvbnRleHQuZHJhd0ltYWdlQnVmZmVyKCppbWFn
ZUJ1ZmZlcjIsIENvbG9yU3BhY2VEZXZpY2VSR0IsIGRyYXdpbmdSZWdpb25PZklucHV0SW1hZ2Uo
aW4yLT5hYnNvbHV0ZVBhaW50UmVjdCgpKSk7CisgICAgICAgIGZpbHRlckNvbnRleHQuZHJhd0lt
YWdlQnVmZmVyKCppbWFnZUJ1ZmZlciwgQ29sb3JTcGFjZURldmljZVJHQiwgZHJhd2luZ1JlZ2lv
bk9mSW5wdXRJbWFnZShpbi0+YWJzb2x1dGVQYWludFJlY3QoKSksIEludFJlY3QoSW50UG9pbnQo
KSwgaW1hZ2VCdWZmZXItPmxvZ2ljYWxTaXplKCkpLCBDb21wb3NpdGVTb3VyY2VBdG9wKTsKICAg
ICAgICAgYnJlYWs7CiAgICAgY2FzZSBGRUNPTVBPU0lURV9PUEVSQVRPUl9YT1I6Ci0gICAgICAg
IGZpbHRlckNvbnRleHQuZHJhd0ltYWdlQnVmZmVyKGltYWdlQnVmZmVyMiwgQ29sb3JTcGFjZURl
dmljZVJHQiwgZHJhd2luZ1JlZ2lvbk9mSW5wdXRJbWFnZShpbjItPmFic29sdXRlUGFpbnRSZWN0
KCkpKTsKLSAgICAgICAgZmlsdGVyQ29udGV4dC5kcmF3SW1hZ2VCdWZmZXIoaW1hZ2VCdWZmZXIs
IENvbG9yU3BhY2VEZXZpY2VSR0IsIGRyYXdpbmdSZWdpb25PZklucHV0SW1hZ2UoaW4tPmFic29s
dXRlUGFpbnRSZWN0KCkpLCBJbnRSZWN0KEludFBvaW50KCksIGltYWdlQnVmZmVyLT5sb2dpY2Fs
U2l6ZSgpKSwgQ29tcG9zaXRlWE9SKTsKKyAgICAgICAgZmlsdGVyQ29udGV4dC5kcmF3SW1hZ2VC
dWZmZXIoKmltYWdlQnVmZmVyMiwgQ29sb3JTcGFjZURldmljZVJHQiwgZHJhd2luZ1JlZ2lvbk9m
SW5wdXRJbWFnZShpbjItPmFic29sdXRlUGFpbnRSZWN0KCkpKTsKKyAgICAgICAgZmlsdGVyQ29u
dGV4dC5kcmF3SW1hZ2VCdWZmZXIoKmltYWdlQnVmZmVyLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBk
cmF3aW5nUmVnaW9uT2ZJbnB1dEltYWdlKGluLT5hYnNvbHV0ZVBhaW50UmVjdCgpKSwgSW50UmVj
dChJbnRQb2ludCgpLCBpbWFnZUJ1ZmZlci0+bG9naWNhbFNpemUoKSksIENvbXBvc2l0ZVhPUik7
CiAgICAgICAgIGJyZWFrOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIGJyZWFrOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRURyb3BTaGFkb3cu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRURyb3BTaGFk
b3cuY3BwCmluZGV4IDYzM2ViYzY2MGIxZDc2Y2I0YmQ5ODg2ZTAxMWUwYjgzNzViOTVhYjkuLmRj
ZTVhYWUyNWYyOTdhYTg4YjZmOGE4M2NiYzJkYTg0YjAwY2U5NmUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVEcm9wU2hhZG93LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFRHJvcFNoYWRvdy5j
cHAKQEAgLTg4LDEwICs4OCwxMiBAQCB2b2lkIEZFRHJvcFNoYWRvdzo6cGxhdGZvcm1BcHBseVNv
ZnR3YXJlKCkKICAgICBkcmF3aW5nUmVnaW9uV2l0aE9mZnNldC5tb3ZlKG9mZnNldCk7CiAKICAg
ICBJbWFnZUJ1ZmZlciogc291cmNlSW1hZ2UgPSBpbi0+YXNJbWFnZUJ1ZmZlcigpOwotICAgIEFT
U0VSVChzb3VyY2VJbWFnZSk7CisgICAgaWYgKCFzb3VyY2VJbWFnZSkKKyAgICAgICAgcmV0dXJu
OworCiAgICAgR3JhcGhpY3NDb250ZXh0JiByZXN1bHRDb250ZXh0ID0gcmVzdWx0SW1hZ2UtPmNv
bnRleHQoKTsKICAgICByZXN1bHRDb250ZXh0LnNldEFscGhhKG1fc2hhZG93T3BhY2l0eSk7Ci0g
ICAgcmVzdWx0Q29udGV4dC5kcmF3SW1hZ2VCdWZmZXIoc291cmNlSW1hZ2UsIENvbG9yU3BhY2VE
ZXZpY2VSR0IsIGRyYXdpbmdSZWdpb25XaXRoT2Zmc2V0KTsKKyAgICByZXN1bHRDb250ZXh0LmRy
YXdJbWFnZUJ1ZmZlcigqc291cmNlSW1hZ2UsIENvbG9yU3BhY2VEZXZpY2VSR0IsIGRyYXdpbmdS
ZWdpb25XaXRoT2Zmc2V0KTsKICAgICByZXN1bHRDb250ZXh0LnNldEFscGhhKDEpOwogCiAgICAg
U2hhZG93Qmx1ciBjb250ZXh0U2hhZG93KGJsdXJSYWRpdXMsIG9mZnNldCwgbV9zaGFkb3dDb2xv
ciwgQ29sb3JTcGFjZURldmljZVJHQik7CkBAIC0xMDgsNyArMTEwLDcgQEAgdm9pZCBGRURyb3BT
aGFkb3c6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZSgpCiAgICAgcmVzdWx0Q29udGV4dC5maWxsUmVj
dChGbG9hdFJlY3QoRmxvYXRQb2ludCgpLCBhYnNvbHV0ZVBhaW50UmVjdCgpLnNpemUoKSksIG1f
c2hhZG93Q29sb3IsIENvbG9yU3BhY2VEZXZpY2VSR0IpOwogICAgIHJlc3VsdENvbnRleHQuc2V0
Q29tcG9zaXRlT3BlcmF0aW9uKENvbXBvc2l0ZURlc3RpbmF0aW9uT3Zlcik7CiAKLSAgICByZXN1
bHRJbWFnZS0+Y29udGV4dCgpLmRyYXdJbWFnZUJ1ZmZlcihzb3VyY2VJbWFnZSwgQ29sb3JTcGFj
ZURldmljZVJHQiwgZHJhd2luZ1JlZ2lvbik7CisgICAgcmVzdWx0SW1hZ2UtPmNvbnRleHQoKS5k
cmF3SW1hZ2VCdWZmZXIoKnNvdXJjZUltYWdlLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBkcmF3aW5n
UmVnaW9uKTsKIH0KIAogdm9pZCBGRURyb3BTaGFkb3c6OmR1bXAoKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRU1lcmdlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVNZXJnZS5jcHAKaW5kZXggZmNj
ZGQ0NWUzODVhZTQyMzBiYTNjOTE4ZDcwYTI5OTI3NGFiMzAwNS4uYTAyZDlmZGFlMjQ1YTVmZWRj
NTE5YzgzMDBjMDMzMWQwZDcyMWJlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZmlsdGVycy9GRU1lcmdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFTWVyZ2UuY3BwCkBAIC00NywxMCArNDcsMTIgQEAgdm9p
ZCBGRU1lcmdlOjpwbGF0Zm9ybUFwcGx5U29mdHdhcmUoKQogICAgIGlmICghcmVzdWx0SW1hZ2Up
CiAgICAgICAgIHJldHVybjsKIAorCiAgICAgR3JhcGhpY3NDb250ZXh0JiBmaWx0ZXJDb250ZXh0
ID0gcmVzdWx0SW1hZ2UtPmNvbnRleHQoKTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwg
c2l6ZTsgKytpKSB7CiAgICAgICAgIEZpbHRlckVmZmVjdCogaW4gPSBpbnB1dEVmZmVjdChpKTsK
LSAgICAgICAgZmlsdGVyQ29udGV4dC5kcmF3SW1hZ2VCdWZmZXIoaW4tPmFzSW1hZ2VCdWZmZXIo
KSwgQ29sb3JTcGFjZURldmljZVJHQiwgZHJhd2luZ1JlZ2lvbk9mSW5wdXRJbWFnZShpbi0+YWJz
b2x1dGVQYWludFJlY3QoKSkpOworICAgICAgICBpZiAoSW1hZ2VCdWZmZXIqIGluQnVmZmVyID0g
aW4tPmFzSW1hZ2VCdWZmZXIoKSkKKyAgICAgICAgICAgIGZpbHRlckNvbnRleHQuZHJhd0ltYWdl
QnVmZmVyKCppbkJ1ZmZlciwgQ29sb3JTcGFjZURldmljZVJHQiwgZHJhd2luZ1JlZ2lvbk9mSW5w
dXRJbWFnZShpbi0+YWJzb2x1dGVQYWludFJlY3QoKSkpOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRU9mZnNldC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFT2Zmc2V0LmNwcApp
bmRleCBmZmVhNjM4NjgxYWE0YTk3ZTg0MDgwYTFiN2M4N2U4NDM5ZDQ5OWZjLi4xOGEyZTc5MWQ1
ODNiYWNkY2QxYzdiZTZkMDU3ZjUwYjliNTE5MWNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFT2Zmc2V0LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFT2Zmc2V0LmNwcApAQCAtNzksNyArNzks
OCBAQCB2b2lkIEZFT2Zmc2V0OjpwbGF0Zm9ybUFwcGx5U29mdHdhcmUoKQogICAgIEZpbHRlckVm
ZmVjdCogaW4gPSBpbnB1dEVmZmVjdCgwKTsKIAogICAgIEltYWdlQnVmZmVyKiByZXN1bHRJbWFn
ZSA9IGNyZWF0ZUltYWdlQnVmZmVyUmVzdWx0KCk7Ci0gICAgaWYgKCFyZXN1bHRJbWFnZSkKKyAg
ICBJbWFnZUJ1ZmZlciogaW5CdWZmZXIgPSBpbi0+YXNJbWFnZUJ1ZmZlcigpOworICAgIGlmICgh
cmVzdWx0SW1hZ2UgfHwgIWluQnVmZmVyKQogICAgICAgICByZXR1cm47CiAKICAgICBzZXRJc0Fs
cGhhSW1hZ2UoaW4tPmlzQWxwaGFJbWFnZSgpKTsKQEAgLTg3LDcgKzg4LDcgQEAgdm9pZCBGRU9m
ZnNldDo6cGxhdGZvcm1BcHBseVNvZnR3YXJlKCkKICAgICBGbG9hdFJlY3QgZHJhd2luZ1JlZ2lv
biA9IGRyYXdpbmdSZWdpb25PZklucHV0SW1hZ2UoaW4tPmFic29sdXRlUGFpbnRSZWN0KCkpOwog
ICAgIEZpbHRlciYgZmlsdGVyID0gdGhpcy0+ZmlsdGVyKCk7CiAgICAgZHJhd2luZ1JlZ2lvbi5t
b3ZlKGZpbHRlci5hcHBseUhvcml6b250YWxTY2FsZShtX2R4KSwgZmlsdGVyLmFwcGx5VmVydGlj
YWxTY2FsZShtX2R5KSk7Ci0gICAgcmVzdWx0SW1hZ2UtPmNvbnRleHQoKS5kcmF3SW1hZ2VCdWZm
ZXIoaW4tPmFzSW1hZ2VCdWZmZXIoKSwgQ29sb3JTcGFjZURldmljZVJHQiwgZHJhd2luZ1JlZ2lv
bik7CisgICAgcmVzdWx0SW1hZ2UtPmNvbnRleHQoKS5kcmF3SW1hZ2VCdWZmZXIoKmluQnVmZmVy
LCBDb2xvclNwYWNlRGV2aWNlUkdCLCBkcmF3aW5nUmVnaW9uKTsKIH0KIAogdm9pZCBGRU9mZnNl
dDo6ZHVtcCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9m
aWx0ZXJzL0ZFVGlsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0
ZXJzL0ZFVGlsZS5jcHAKaW5kZXggNWRjNDdkZDZlY2Y5MzFhZWE1ZjgwOWRiYmQ3NTRkMDBhMzVj
ZWExYi4uYTE4N2I3NGZmZmZkZDVhOTc0NGRjNjk3Y2NjNWVlYWMyMGVkZjMwMiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRVRpbGUuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVUaWxlLmNwcApA
QCAtNDcsNyArNDcsOCBAQCB2b2lkIEZFVGlsZTo6cGxhdGZvcm1BcHBseVNvZnR3YXJlKCkKICAg
ICBGaWx0ZXJFZmZlY3QqIGluID0gaW5wdXRFZmZlY3QoMCk7CiAKICAgICBJbWFnZUJ1ZmZlciog
cmVzdWx0SW1hZ2UgPSBjcmVhdGVJbWFnZUJ1ZmZlclJlc3VsdCgpOwotICAgIGlmICghcmVzdWx0
SW1hZ2UpCisgICAgSW1hZ2VCdWZmZXIqIGluQnVmZmVyID0gaW4tPmFzSW1hZ2VCdWZmZXIoKTsK
KyAgICBpZiAoIXJlc3VsdEltYWdlIHx8ICFpbkJ1ZmZlcikKICAgICAgICAgcmV0dXJuOwogCiAg
ICAgc2V0SXNBbHBoYUltYWdlKGluLT5pc0FscGhhSW1hZ2UoKSk7CkBAIC02OSw3ICs3MCw3IEBA
IHZvaWQgRkVUaWxlOjpwbGF0Zm9ybUFwcGx5U29mdHdhcmUoKQogCiAgICAgR3JhcGhpY3NDb250
ZXh0JiB0aWxlSW1hZ2VDb250ZXh0ID0gdGlsZUltYWdlLT5jb250ZXh0KCk7CiAgICAgdGlsZUlt
YWdlQ29udGV4dC50cmFuc2xhdGUoLWluTWF4RWZmZWN0TG9jYXRpb24ueCgpLCAtaW5NYXhFZmZl
Y3RMb2NhdGlvbi55KCkpOwotICAgIHRpbGVJbWFnZUNvbnRleHQuZHJhd0ltYWdlQnVmZmVyKGlu
LT5hc0ltYWdlQnVmZmVyKCksIENvbG9yU3BhY2VEZXZpY2VSR0IsIGluLT5hYnNvbHV0ZVBhaW50
UmVjdCgpLmxvY2F0aW9uKCkpOworICAgIHRpbGVJbWFnZUNvbnRleHQuZHJhd0ltYWdlQnVmZmVy
KCppbkJ1ZmZlciwgQ29sb3JTcGFjZURldmljZVJHQiwgaW4tPmFic29sdXRlUGFpbnRSZWN0KCku
bG9jYXRpb24oKSk7CiAKICAgICBhdXRvIHRpbGVJbWFnZUNvcHkgPSB0aWxlSW1hZ2UtPmNvcHlJ
bWFnZShDb3B5QmFja2luZ1N0b3JlKTsKICAgICBpZiAoIXRpbGVJbWFnZUNvcHkpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL1NvdXJjZUFscGhh
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvU291cmNlQWxw
aGEuY3BwCmluZGV4IDcwYjFkNTU2NGY2ZjAzYjEzMzk4MGFiZDU5OWFjMzA2ODBiZTU2MDYuLjFl
M2I5MWEyMjQ0OGYxOGNhYTQxNmZiMTA2YTI4NDBhMDAyYTMxYmIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvU291cmNlQWxwaGEuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvU291cmNlQWxwaGEuY3Bw
CkBAIC01NCwxMSArNTQsMTIgQEAgdm9pZCBTb3VyY2VBbHBoYTo6cGxhdGZvcm1BcHBseVNvZnR3
YXJlKCkKICAgICBHcmFwaGljc0NvbnRleHQmIGZpbHRlckNvbnRleHQgPSByZXN1bHRJbWFnZS0+
Y29udGV4dCgpOwogCiAgICAgSW1hZ2VCdWZmZXIqIGltYWdlQnVmZmVyID0gaW5wdXRFZmZlY3Qo
MCktPmFzSW1hZ2VCdWZmZXIoKTsKLSAgICBBU1NFUlQoaW1hZ2VCdWZmZXIpOworICAgIGlmICgh
aW1hZ2VCdWZmZXIpCisgICAgICAgIHJldHVybjsKIAogICAgIEZsb2F0UmVjdCBpbWFnZVJlY3Qo
RmxvYXRQb2ludCgpLCBhYnNvbHV0ZVBhaW50UmVjdCgpLnNpemUoKSk7CiAgICAgZmlsdGVyQ29u
dGV4dC5maWxsUmVjdChpbWFnZVJlY3QsIENvbG9yOjpibGFjaywgQ29sb3JTcGFjZURldmljZVJH
Qik7Ci0gICAgZmlsdGVyQ29udGV4dC5kcmF3SW1hZ2VCdWZmZXIoaW1hZ2VCdWZmZXIsIENvbG9y
U3BhY2VEZXZpY2VSR0IsIEludFBvaW50KCksIENvbXBvc2l0ZURlc3RpbmF0aW9uSW4pOworICAg
IGZpbHRlckNvbnRleHQuZHJhd0ltYWdlQnVmZmVyKCppbWFnZUJ1ZmZlciwgQ29sb3JTcGFjZURl
dmljZVJHQiwgSW50UG9pbnQoKSwgQ29tcG9zaXRlRGVzdGluYXRpb25Jbik7CiB9CiAKIHZvaWQg
U291cmNlQWxwaGE6OmR1bXAoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZmlsdGVycy9Tb3VyY2VHcmFwaGljLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2ZpbHRlcnMvU291cmNlR3JhcGhpYy5jcHAKaW5kZXggMzE5OGIwMzc4M2E1
YzJiNDlhZWE5ZWViM2U5Zjg5ODIyODNkYmM4My4uZGY0ZWU2ZjA3OWM1NDU3NTQ1OWU4NDM2OTI2
NTlkNmNkMzMwMGViYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZmlsdGVycy9Tb3VyY2VHcmFwaGljLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9maWx0ZXJzL1NvdXJjZUdyYXBoaWMuY3BwCkBAIC00OSwxMiArNDksMTQgQEAg
dm9pZCBTb3VyY2VHcmFwaGljOjpkZXRlcm1pbmVBYnNvbHV0ZVBhaW50UmVjdCgpCiAKIHZvaWQg
U291cmNlR3JhcGhpYzo6cGxhdGZvcm1BcHBseVNvZnR3YXJlKCkKIHsKLSAgICBJbWFnZUJ1ZmZl
ciogcmVzdWx0SW1hZ2UgPSBjcmVhdGVJbWFnZUJ1ZmZlclJlc3VsdCgpOwogICAgIEZpbHRlciYg
ZmlsdGVyID0gdGhpcy0+ZmlsdGVyKCk7Ci0gICAgaWYgKCFyZXN1bHRJbWFnZSB8fCAhZmlsdGVy
LnNvdXJjZUltYWdlKCkpCisKKyAgICBJbWFnZUJ1ZmZlciogcmVzdWx0SW1hZ2UgPSBjcmVhdGVJ
bWFnZUJ1ZmZlclJlc3VsdCgpOworICAgIEltYWdlQnVmZmVyKiBzb3VyY2VJbWFnZSA9IGZpbHRl
ci5zb3VyY2VJbWFnZSgpOworICAgIGlmICghcmVzdWx0SW1hZ2UgfHwgIXNvdXJjZUltYWdlKQog
ICAgICAgICByZXR1cm47CiAKLSAgICByZXN1bHRJbWFnZS0+Y29udGV4dCgpLmRyYXdJbWFnZUJ1
ZmZlcihmaWx0ZXIuc291cmNlSW1hZ2UoKSwgQ29sb3JTcGFjZURldmljZVJHQiwgSW50UG9pbnQo
KSk7CisgICAgcmVzdWx0SW1hZ2UtPmNvbnRleHQoKS5kcmF3SW1hZ2VCdWZmZXIoKnNvdXJjZUlt
YWdlLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBJbnRQb2ludCgpKTsKIH0KIAogdm9pZCBTb3VyY2VH
cmFwaGljOjpkdW1wKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVH
U3RyZWFtZXJCYXNlLmNwcAppbmRleCBjODQyZTQyMDgyZDEyNWUwOTU4YzI2OGRmODg4NDc2YTAx
MjM4NmFlLi5kMzcwYjFhMmU1NmUwYjEyYmFmY2NhYzNmNzYzMWU4NjI0ODhkNjJhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5
ZXJQcml2YXRlR1N0cmVhbWVyQmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2UuY3BwCkBA
IC01MjUsOCArNTI1LDggQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlOjpw
YWludChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2EKICAgICBpZiAoIWdzdElt
YWdlKQogICAgICAgICByZXR1cm47CiAKLSAgICBjb250ZXh0LmRyYXdJbWFnZShyZWludGVycHJl
dF9jYXN0PEltYWdlKj4oZ3N0SW1hZ2UtPmltYWdlKCkuZ2V0KCkpLCBDb2xvclNwYWNlU1JHQiwK
LSAgICAgICAgcmVjdCwgZ3N0SW1hZ2UtPnJlY3QoKSwgQ29tcG9zaXRlQ29weSk7CisgICAgaWYg
KEltYWdlKiBpbWFnZSA9IHJlaW50ZXJwcmV0X2Nhc3Q8SW1hZ2UqPihnc3RJbWFnZS0+aW1hZ2Uo
KS5nZXQoKSkpCisgICAgICAgIGNvbnRleHQuZHJhd0ltYWdlKCppbWFnZSwgQ29sb3JTcGFjZVNS
R0IsIHJlY3QsIGdzdEltYWdlLT5yZWN0KCksIENvbXBvc2l0ZUNvcHkpOwogfQogCiAjaWYgVVNF
KFRFWFRVUkVfTUFQUEVSX0dMKSAmJiAhVVNFKENPT1JESU5BVEVEX0dSQVBISUNTKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVk
L0Nvb3JkaW5hdGVkSW1hZ2VCYWNraW5nLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEltYWdlQmFja2luZy5jcHAKaW5k
ZXggMGQzNzdkMTlkZDllM2VjZWYwMTg5Y2I5MGNiOTE4NjExN2RiMmI1Zi4uNjk4Mjg1NDg2OTFh
MDU4ODE5ZWVjNzZmNDI5N2VmNTZjMjY4ZGM2NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkSW1hZ2VCYWNr
aW5nLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29v
cmRpbmF0ZWQvQ29vcmRpbmF0ZWRJbWFnZUJhY2tpbmcuY3BwCkBAIC0zNSw3ICszNSw3IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgSW1hZ2VCYWNraW5nU3VyZmFjZUNsaWVudCA6IHB1
YmxpYyBDb29yZGluYXRlZFN1cmZhY2U6OkNsaWVudCB7CiBwdWJsaWM6Ci0gICAgSW1hZ2VCYWNr
aW5nU3VyZmFjZUNsaWVudChJbWFnZSogaW1hZ2UsIGNvbnN0IEludFJlY3QmIHJlY3QpCisgICAg
SW1hZ2VCYWNraW5nU3VyZmFjZUNsaWVudChJbWFnZSYgaW1hZ2UsIGNvbnN0IEludFJlY3QmIHJl
Y3QpCiAgICAgICAgIDogbV9pbWFnZShpbWFnZSkKICAgICAgICAgLCBtX3JlY3QocmVjdCkKICAg
ICB7CkBAIC00Nyw3ICs0Nyw3IEBAIHB1YmxpYzoKICAgICB9CiAKIHByaXZhdGU6Ci0gICAgSW1h
Z2UqIG1faW1hZ2U7CisgICAgSW1hZ2UmIG1faW1hZ2U7CiAgICAgSW50UmVjdCBtX3JlY3Q7CiB9
OwogCkBAIC0xMjgsNyArMTI4LDcgQEAgdm9pZCBDb29yZGluYXRlZEltYWdlQmFja2luZzo6dXBk
YXRlKCkKIAogICAgIEludFJlY3QgcmVjdChJbnRQb2ludDo6emVybygpLCBJbnRTaXplKG1faW1h
Z2UtPnNpemUoKSkpOwogCi0gICAgSW1hZ2VCYWNraW5nU3VyZmFjZUNsaWVudCBzdXJmYWNlQ2xp
ZW50KG1faW1hZ2UuZ2V0KCksIHJlY3QpOworICAgIEltYWdlQmFja2luZ1N1cmZhY2VDbGllbnQg
c3VyZmFjZUNsaWVudCgqbV9pbWFnZSwgcmVjdCk7CiAgICAgbV9zdXJmYWNlLT5wYWludFRvU3Vy
ZmFjZShyZWN0LCAmc3VyZmFjZUNsaWVudCk7CiAKICAgICBtX25hdGl2ZUltYWdlUHRyID0gbV9p
bWFnZS0+bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21hYy9UaGVtZU1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21hYy9UaGVtZU1hYy5tbQppbmRleCBmZjI5YTFkZWNkOGI3MjBkNDRiMTQyMzA5YWFjY2UzYmJl
ZWRhMThmLi5lNzU5MWJlZGJmNGQ1ZTBkNjllNzBkNzNlNzA0MjllZGY4MWJhMTViIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvVGhlbWVNYWMubW0KKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWFjL1RoZW1lTWFjLm1tCkBAIC02ODYsMTEgKzY4NiwxMyBAQCBi
b29sIFRoZW1lTWFjOjpkcmF3Q2VsbE9yRm9jdXNSaW5nV2l0aFZpZXdJbnRvQ29udGV4dChOU0Nl
bGwgKmNlbGwsIEdyYXBoaWNzQ29udAogICAgIGlmICh1c2VJbWFnZUJ1ZmZlcikgewogICAgICAg
ICBOU1JlY3QgaW1hZ2VCdWZmZXJEcmF3UmVjdCA9IE5TUmVjdChGbG9hdFJlY3QoYnV0dG9uRm9j
dXNSZWN0T3V0bGluZVdpZHRoLCBidXR0b25Gb2N1c1JlY3RPdXRsaW5lV2lkdGgsIHJlY3Qud2lk
dGgoKSwgcmVjdC5oZWlnaHQoKSkpOwogICAgICAgICBhdXRvIGltYWdlQnVmZmVyID0gSW1hZ2VC
dWZmZXI6OmNyZWF0ZUNvbXBhdGlibGVCdWZmZXIocmVjdC5zaXplKCkgKyAyICogRmxvYXRTaXpl
KGJ1dHRvbkZvY3VzUmVjdE91dGxpbmVXaWR0aCwgYnV0dG9uRm9jdXNSZWN0T3V0bGluZVdpZHRo
KSwgZGV2aWNlU2NhbGVGYWN0b3IsIENvbG9yU3BhY2VTUkdCLCBjb250ZXh0LCBmYWxzZSk7Cisg
ICAgICAgIGlmICghaW1hZ2VCdWZmZXIpCisgICAgICAgICAgICByZXR1cm4gbmVlZHNSZXBhaW50
OwogICAgICAgICB7CiAgICAgICAgICAgICBMb2NhbEN1cnJlbnRHcmFwaGljc0NvbnRleHQgbG9j
YWxDb250ZXh0KGltYWdlQnVmZmVyLT5jb250ZXh0KCkpOwogICAgICAgICAgICAgbmVlZHNSZXBh
aW50ID0gZHJhd0NlbGxPckZvY3VzUmluZ0ludG9SZWN0V2l0aFZpZXcoY2VsbCwgaW1hZ2VCdWZm
ZXJEcmF3UmVjdCwgdmlldywgZHJhd0J1dHRvbkNlbGwsIGRyYXdGb2N1c1JpbmcpOwogICAgICAg
ICB9Ci0gICAgICAgIGNvbnRleHQuZHJhd0ltYWdlQnVmZmVyKGltYWdlQnVmZmVyLmdldCgpLCBD
b2xvclNwYWNlU1JHQiwgcmVjdC5sb2NhdGlvbigpIC0gRmxvYXRTaXplKGJ1dHRvbkZvY3VzUmVj
dE91dGxpbmVXaWR0aCwgYnV0dG9uRm9jdXNSZWN0T3V0bGluZVdpZHRoKSk7CisgICAgICAgIGNv
bnRleHQuZHJhd0ltYWdlQnVmZmVyKCppbWFnZUJ1ZmZlciwgQ29sb3JTcGFjZVNSR0IsIHJlY3Qu
bG9jYXRpb24oKSAtIEZsb2F0U2l6ZShidXR0b25Gb2N1c1JlY3RPdXRsaW5lV2lkdGgsIGJ1dHRv
bkZvY3VzUmVjdE91dGxpbmVXaWR0aCkpOwogICAgICAgICByZXR1cm4gbmVlZHNSZXBhaW50Owog
ICAgIH0KICAgICBpZiAoZHJhd0J1dHRvbkNlbGwpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvRmlsdGVyRWZmZWN0UmVuZGVyZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL0ZpbHRlckVmZmVjdFJlbmRlcmVyLmNwcAppbmRleCAyNWVkMWQ1NDE5N2EwY2ZhMmEz
YWRmNzcxMmI3NDQ2NDFhZjkyM2Y5Li5mZDUwOWU4ZWFkNTk2OTdkNDYwZDM4ZDMxM2UzZTA0MTZm
YTY1ODc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvRmlsdGVyRWZmZWN0
UmVuZGVyZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9GaWx0ZXJFZmZlY3RS
ZW5kZXJlci5jcHAKQEAgLTQyOSw4ICs0MjksMTAgQEAgdm9pZCBGaWx0ZXJFZmZlY3RSZW5kZXJl
ckhlbHBlcjo6YXBwbHlGaWx0ZXJFZmZlY3QoR3JhcGhpY3NDb250ZXh0JiBkZXN0aW5hdGlvbkMK
ICAgICBMYXlvdXRSZWN0IGRlc3RSZWN0ID0gZmlsdGVyLT5vdXRwdXRSZWN0KCk7CiAgICAgZGVz
dFJlY3QubW92ZShtX3BhaW50T2Zmc2V0LngoKSwgbV9wYWludE9mZnNldC55KCkpOwogCi0gICAg
ZGVzdGluYXRpb25Db250ZXh0LmRyYXdJbWFnZUJ1ZmZlcihmaWx0ZXItPm91dHB1dCgpLCBtX3Jl
bmRlckxheWVyLT5yZW5kZXJlcigpLnN0eWxlKCkuY29sb3JTcGFjZSgpLAotICAgICAgICBzbmFw
UmVjdFRvRGV2aWNlUGl4ZWxzKGRlc3RSZWN0LCBtX3JlbmRlckxheWVyLT5yZW5kZXJlcigpLmRv
Y3VtZW50KCkuZGV2aWNlU2NhbGVGYWN0b3IoKSkpOworICAgIGlmIChJbWFnZUJ1ZmZlciogb3V0
cHV0QnVmZmVyID0gZmlsdGVyLT5vdXRwdXQoKSkgeworICAgICAgICBkZXN0aW5hdGlvbkNvbnRl
eHQuZHJhd0ltYWdlQnVmZmVyKCpvdXRwdXRCdWZmZXIsIG1fcmVuZGVyTGF5ZXItPnJlbmRlcmVy
KCkuc3R5bGUoKS5jb2xvclNwYWNlKCksCisgICAgICAgICAgICBzbmFwUmVjdFRvRGV2aWNlUGl4
ZWxzKGRlc3RSZWN0LCBtX3JlbmRlckxheWVyLT5yZW5kZXJlcigpLmRvY3VtZW50KCkuZGV2aWNl
U2NhbGVGYWN0b3IoKSkpOworICAgIH0KIAogICAgIGZpbHRlci0+Y2xlYXJJbnRlcm1lZGlhdGVS
ZXN1bHRzKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW1hZ2VR
dWFsaXR5Q29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW1hZ2VRdWFs
aXR5Q29udHJvbGxlci5jcHAKaW5kZXggNmZiODM0MjQyNzQ3OTQ0MThjYTgwMzNkN2I0ZGFkNzFi
N2QxMzRhZS4uYTBjMjExNDViODQ1ODg5MzIyYTE0ZGI0N2JiY2I4OTQ1MDI3MDAxNCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0ltYWdlUXVhbGl0eUNvbnRyb2xsZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbWFnZVF1YWxpdHlDb250cm9sbGVyLmNw
cApAQCAtOTksMTEgKzk5LDExIEBAIHZvaWQgSW1hZ2VRdWFsaXR5Q29udHJvbGxlcjo6cmVzdGFy
dFRpbWVyKCkKICAgICBtX3RpbWVyLnN0YXJ0T25lU2hvdChjTG93UXVhbGl0eVRpbWVUaHJlc2hv
bGQpOwogfQogCi1ib29sIEltYWdlUXVhbGl0eUNvbnRyb2xsZXI6OnNob3VsZFBhaW50QXRMb3dR
dWFsaXR5KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgUmVuZGVyQm94TW9kZWxPYmplY3QqIG9i
amVjdCwgSW1hZ2UqIGltYWdlLCBjb25zdCB2b2lkICpsYXllciwgY29uc3QgTGF5b3V0U2l6ZSYg
c2l6ZSkKK2Jvb2wgSW1hZ2VRdWFsaXR5Q29udHJvbGxlcjo6c2hvdWxkUGFpbnRBdExvd1F1YWxp
dHkoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBSZW5kZXJCb3hNb2RlbE9iamVjdCogb2JqZWN0
LCBJbWFnZSYgaW1hZ2UsIGNvbnN0IHZvaWQgKmxheWVyLCBjb25zdCBMYXlvdXRTaXplJiBzaXpl
KQogewogICAgIC8vIElmIHRoZSBpbWFnZSBpcyBub3QgYSBiaXRtYXAgaW1hZ2UsIHRoZW4gbm9u
ZSBvZiB0aGlzIGlzIHJlbGV2YW50IGFuZCB3ZSBqdXN0IHBhaW50IGF0IGhpZ2gKICAgICAvLyBx
dWFsaXR5LgotICAgIGlmICghaW1hZ2UgfHwgIShpbWFnZS0+aXNCaXRtYXBJbWFnZSgpIHx8IGlt
YWdlLT5pc1BERkRvY3VtZW50SW1hZ2UoKSkgfHwgY29udGV4dC5wYWludGluZ0Rpc2FibGVkKCkp
CisgICAgaWYgKCEoaW1hZ2UuaXNCaXRtYXBJbWFnZSgpIHx8IGltYWdlLmlzUERGRG9jdW1lbnRJ
bWFnZSgpKSB8fCBjb250ZXh0LnBhaW50aW5nRGlzYWJsZWQoKSkKICAgICAgICAgcmV0dXJuIGZh
bHNlOwogCiAgICAgc3dpdGNoIChvYmplY3QtPnN0eWxlKCkuaW1hZ2VSZW5kZXJpbmcoKSkgewpA
QCAtMTE4LDcgKzExOCw3IEBAIGJvb2wgSW1hZ2VRdWFsaXR5Q29udHJvbGxlcjo6c2hvdWxkUGFp
bnRBdExvd1F1YWxpdHkoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBSCiAKICAgICAvLyBNYWtl
IHN1cmUgdG8gdXNlIHRoZSB1bnpvb21lZCBpbWFnZSBzaXplLCBzaW5jZSBpZiBhIGZ1bGwgcGFn
ZSB6b29tIGlzIGluIGVmZmVjdCwgdGhlIGltYWdlCiAgICAgLy8gaXMgYWN0dWFsbHkgYmVpbmcg
c2NhbGVkLgotICAgIEludFNpemUgaW1hZ2VTaXplKGltYWdlLT53aWR0aCgpLCBpbWFnZS0+aGVp
Z2h0KCkpOworICAgIEludFNpemUgaW1hZ2VTaXplKGltYWdlLndpZHRoKCksIGltYWdlLmhlaWdo
dCgpKTsKIAogICAgIC8vIExvb2sgb3Vyc2VsdmVzIHVwIGluIHRoZSBoYXNodGFibGVzLgogICAg
IGF1dG8gaSA9IG1fb2JqZWN0TGF5ZXJTaXplTWFwLmZpbmQob2JqZWN0KTsKQEAgLTE1Niw3ICsx
NTYsNyBAQCBib29sIEltYWdlUXVhbGl0eUNvbnRyb2xsZXI6OnNob3VsZFBhaW50QXRMb3dRdWFs
aXR5KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgUgogCiAgICAgLy8gVGhlcmUgaXMgbm8gbmVl
ZCB0byBoYXNoIHNjYWxlZCBpbWFnZXMgdGhhdCBhbHdheXMgdXNlIGxvdyBxdWFsaXR5IG1vZGUg
d2hlbiB0aGUgcGFnZSBkZW1hbmRzIGl0LiBUaGlzIGlzIHRoZSBpQ2hhdCBjYXNlLgogICAgIGlm
IChtX3JlbmRlclZpZXcuZnJhbWUoKS5wYWdlKCktPmluTG93UXVhbGl0eUltYWdlSW50ZXJwb2xh
dGlvbk1vZGUoKSkgewotICAgICAgICBkb3VibGUgdG90YWxQaXhlbHMgPSBzdGF0aWNfY2FzdDxk
b3VibGU+KGltYWdlLT53aWR0aCgpKSAqIHN0YXRpY19jYXN0PGRvdWJsZT4oaW1hZ2UtPmhlaWdo
dCgpKTsKKyAgICAgICAgZG91YmxlIHRvdGFsUGl4ZWxzID0gc3RhdGljX2Nhc3Q8ZG91YmxlPihp
bWFnZS53aWR0aCgpKSAqIHN0YXRpY19jYXN0PGRvdWJsZT4oaW1hZ2UuaGVpZ2h0KCkpOwogICAg
ICAgICBpZiAodG90YWxQaXhlbHMgPiBjSW50ZXJwb2xhdGlvbkN1dG9mZikKICAgICAgICAgICAg
IHJldHVybiB0cnVlOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9JbWFnZVF1YWxpdHlDb250cm9sbGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW1h
Z2VRdWFsaXR5Q29udHJvbGxlci5oCmluZGV4IGQxNGRjNDlhYTc5YWYzMTVkYWM4ZTFkNTEyMWMz
NDAyNjBlZjY1ZTMuLjVmNzExNjQ3NTEwY2QyMmI5NjI1OTI2NzM1ODRmODZjMDgxZjU4OWMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbWFnZVF1YWxpdHlDb250cm9sbGVy
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0ltYWdlUXVhbGl0eUNvbnRyb2xsZXIu
aApAQCAtNDMsNyArNDMsNyBAQCBjbGFzcyBJbWFnZVF1YWxpdHlDb250cm9sbGVyIHsKIHB1Ymxp
YzoKICAgICBleHBsaWNpdCBJbWFnZVF1YWxpdHlDb250cm9sbGVyKGNvbnN0IFJlbmRlclZpZXcm
KTsKIAotICAgIGJvb2wgc2hvdWxkUGFpbnRBdExvd1F1YWxpdHkoR3JhcGhpY3NDb250ZXh0Jiwg
UmVuZGVyQm94TW9kZWxPYmplY3QqLCBJbWFnZSosIGNvbnN0IHZvaWQqIGxheWVyLCBjb25zdCBM
YXlvdXRTaXplJik7CisgICAgYm9vbCBzaG91bGRQYWludEF0TG93UXVhbGl0eShHcmFwaGljc0Nv
bnRleHQmLCBSZW5kZXJCb3hNb2RlbE9iamVjdCosIEltYWdlJiwgY29uc3Qgdm9pZCogbGF5ZXIs
IGNvbnN0IExheW91dFNpemUmKTsKICAgICB2b2lkIHJlbmRlcmVyV2lsbEJlRGVzdHJveWVkKFJl
bmRlckJveE1vZGVsT2JqZWN0JiByZW5kZXJlcikgeyByZW1vdmVPYmplY3QoJnJlbmRlcmVyKTsg
fQogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckJveE1vZGVsT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3hN
b2RlbE9iamVjdC5jcHAKaW5kZXggMWVkYzVhZmM5NGMxZDliMzBhYWUwMTA5MTg1YzUxOGMzNTEy
OTJlOC4uZDJhZGUwOTA4MGFkZTRhMWIyZTVjNDAzZmVmYTkyNWRjYWU5ZmVlZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuY3BwCkBAIC0x
NjEsNyArMTYxLDcgQEAgdm9pZCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6c3VzcGVuZEFuaW1hdGlv
bnMoZG91YmxlIHRpbWUpCiAgICAgbGF5ZXIoKS0+YmFja2luZygpLT5zdXNwZW5kQW5pbWF0aW9u
cyh0aW1lKTsKIH0KIAotYm9vbCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6c2hvdWxkUGFpbnRBdExv
d1F1YWxpdHkoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBJbWFnZSogaW1hZ2UsIGNvbnN0IHZv
aWQqIGxheWVyLCBjb25zdCBMYXlvdXRTaXplJiBzaXplKQorYm9vbCBSZW5kZXJCb3hNb2RlbE9i
amVjdDo6c2hvdWxkUGFpbnRBdExvd1F1YWxpdHkoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBJ
bWFnZSYgaW1hZ2UsIGNvbnN0IHZvaWQqIGxheWVyLCBjb25zdCBMYXlvdXRTaXplJiBzaXplKQog
ewogICAgIHJldHVybiB2aWV3KCkuaW1hZ2VRdWFsaXR5Q29udHJvbGxlcigpLnNob3VsZFBhaW50
QXRMb3dRdWFsaXR5KGNvbnRleHQsIHRoaXMsIGltYWdlLCBsYXllciwgc2l6ZSk7CiB9CkBAIC04
MzAsMTggKzgzMCwxNyBAQCB2b2lkIFJlbmRlckJveE1vZGVsT2JqZWN0OjpwYWludEZpbGxMYXll
ckV4dGVuZGVkKGNvbnN0IFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjbwogICAgIGlmICghYmFzZUJn
Q29sb3JPbmx5ICYmIHNob3VsZFBhaW50QmFja2dyb3VuZEltYWdlKSB7CiAgICAgICAgIEJhY2tn
cm91bmRJbWFnZUdlb21ldHJ5IGdlb21ldHJ5ID0gY2FsY3VsYXRlQmFja2dyb3VuZEltYWdlR2Vv
bWV0cnkocGFpbnRJbmZvLnBhaW50Q29udGFpbmVyLCAqYmdMYXllciwgcmVjdC5sb2NhdGlvbigp
LCBzY3JvbGxlZFBhaW50UmVjdCwgYmFja2dyb3VuZE9iamVjdCk7CiAgICAgICAgIGdlb21ldHJ5
LmNsaXAoTGF5b3V0UmVjdChwaXhlbFNuYXBwZWRSZWN0KSk7Ci0gICAgICAgIGlmICghZ2VvbWV0
cnkuZGVzdFJlY3QoKS5pc0VtcHR5KCkpIHsKKyAgICAgICAgUmVmUHRyPEltYWdlPiBpbWFnZTsK
KyAgICAgICAgaWYgKCFnZW9tZXRyeS5kZXN0UmVjdCgpLmlzRW1wdHkoKSAmJiAoaW1hZ2UgPSBi
Z0ltYWdlLT5pbWFnZShiYWNrZ3JvdW5kT2JqZWN0ID8gYmFja2dyb3VuZE9iamVjdCA6IHRoaXMs
IGdlb21ldHJ5LnRpbGVTaXplKCkpKSkgewogICAgICAgICAgICAgQ29tcG9zaXRlT3BlcmF0b3Ig
Y29tcG9zaXRlT3AgPSBvcCA9PSBDb21wb3NpdGVTb3VyY2VPdmVyID8gYmdMYXllci0+Y29tcG9z
aXRlKCkgOiBvcDsKLSAgICAgICAgICAgIGF1dG8gY2xpZW50Rm9yQmFja2dyb3VuZEltYWdlID0g
YmFja2dyb3VuZE9iamVjdCA/IGJhY2tncm91bmRPYmplY3QgOiB0aGlzOwotICAgICAgICAgICAg
UmVmUHRyPEltYWdlPiBpbWFnZSA9IGJnSW1hZ2UtPmltYWdlKGNsaWVudEZvckJhY2tncm91bmRJ
bWFnZSwgZ2VvbWV0cnkudGlsZVNpemUoKSk7CiAgICAgICAgICAgICBjb250ZXh0LnNldERyYXdM
dW1pbmFuY2VNYXNrKGJnTGF5ZXItPm1hc2tTb3VyY2VUeXBlKCkgPT0gTWFza0x1bWluYW5jZSk7
Ci0gICAgICAgICAgICBib29sIHVzZUxvd1F1YWxpdHlTY2FsaW5nID0gc2hvdWxkUGFpbnRBdExv
d1F1YWxpdHkoY29udGV4dCwgaW1hZ2UuZ2V0KCksIGJnTGF5ZXIsIGdlb21ldHJ5LnRpbGVTaXpl
KCkpOwotICAgICAgICAgICAgY29udGV4dC5kcmF3VGlsZWRJbWFnZShpbWFnZS5nZXQoKSwgc3R5
bGUoKS5jb2xvclNwYWNlKCksIGdlb21ldHJ5LmRlc3RSZWN0KCksIHRvTGF5b3V0UG9pbnQoZ2Vv
bWV0cnkucmVsYXRpdmVQaGFzZSgpKSwgZ2VvbWV0cnkudGlsZVNpemUoKSwgZ2VvbWV0cnkuc3Bh
Y2VTaXplKCksIEltYWdlUGFpbnRpbmdPcHRpb25zKGNvbXBvc2l0ZU9wLCBiZ0xheWVyLT5ibGVu
ZE1vZGUoKSwgSW1hZ2VPcmllbnRhdGlvbkRlc2NyaXB0aW9uKCksIHVzZUxvd1F1YWxpdHlTY2Fs
aW5nKSk7CisgICAgICAgICAgICBib29sIHVzZUxvd1F1YWxpdHlTY2FsaW5nID0gc2hvdWxkUGFp
bnRBdExvd1F1YWxpdHkoY29udGV4dCwgKmltYWdlLCBiZ0xheWVyLCBnZW9tZXRyeS50aWxlU2l6
ZSgpKTsKKyAgICAgICAgICAgIGNvbnRleHQuZHJhd1RpbGVkSW1hZ2UoKmltYWdlLCBzdHlsZSgp
LmNvbG9yU3BhY2UoKSwgZ2VvbWV0cnkuZGVzdFJlY3QoKSwgdG9MYXlvdXRQb2ludChnZW9tZXRy
eS5yZWxhdGl2ZVBoYXNlKCkpLCBnZW9tZXRyeS50aWxlU2l6ZSgpLCBnZW9tZXRyeS5zcGFjZVNp
emUoKSwgSW1hZ2VQYWludGluZ09wdGlvbnMoY29tcG9zaXRlT3AsIGJnTGF5ZXItPmJsZW5kTW9k
ZSgpLCBJbWFnZU9yaWVudGF0aW9uRGVzY3JpcHRpb24oKSwgdXNlTG93UXVhbGl0eVNjYWxpbmcp
KTsKICAgICAgICAgfQogICAgIH0KIAotICAgIGlmIChiZ0xheWVyLT5jbGlwKCkgPT0gVGV4dEZp
bGxCb3gpIHsKLSAgICAgICAgY29udGV4dC5kcmF3SW1hZ2VCdWZmZXIobWFza0ltYWdlLmdldCgp
LCBDb2xvclNwYWNlRGV2aWNlUkdCLCBtYXNrUmVjdCwgQ29tcG9zaXRlRGVzdGluYXRpb25Jbik7
CisgICAgaWYgKG1hc2tJbWFnZSAmJiBiZ0xheWVyLT5jbGlwKCkgPT0gVGV4dEZpbGxCb3gpIHsK
KyAgICAgICAgY29udGV4dC5kcmF3SW1hZ2VCdWZmZXIoKm1hc2tJbWFnZSwgQ29sb3JTcGFjZURl
dmljZVJHQiwgbWFza1JlY3QsIENvbXBvc2l0ZURlc3RpbmF0aW9uSW4pOwogICAgICAgICBjb250
ZXh0LmVuZFRyYW5zcGFyZW5jeUxheWVyKCk7CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmggYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuaAppbmRleCA1YjEwODllZDYwZTQzZjJj
NjQwMzhlZTlkZjY3M2JjNzdhMjQ3YjRjLi5iNmY2ZDYzNGZhNGY3NTk1MDAxNmYwMDI3MmI0ZmMw
NTk0OWE0NTgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94
TW9kZWxPYmplY3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9k
ZWxPYmplY3QuaApAQCAtMjUxLDcgKzI1MSw3IEBAIHByb3RlY3RlZDoKICAgICBSb3VuZGVkUmVj
dCBiYWNrZ3JvdW5kUm91bmRlZFJlY3RBZGp1c3RlZEZvckJsZWVkQXZvaWRhbmNlKGNvbnN0IEdy
YXBoaWNzQ29udGV4dCYsIGNvbnN0IExheW91dFJlY3QmLCBCYWNrZ3JvdW5kQmxlZWRBdm9pZGFu
Y2UsIElubGluZUZsb3dCb3gqLCBjb25zdCBMYXlvdXRTaXplJiwgYm9vbCBpbmNsdWRlTG9naWNh
bExlZnRFZGdlLCBib29sIGluY2x1ZGVMb2dpY2FsUmlnaHRFZGdlKSBjb25zdDsKICAgICBMYXlv
dXRSZWN0IGJvcmRlcklubmVyUmVjdEFkanVzdGVkRm9yQmxlZWRBdm9pZGFuY2UoY29uc3QgR3Jh
cGhpY3NDb250ZXh0JiwgY29uc3QgTGF5b3V0UmVjdCYsIEJhY2tncm91bmRCbGVlZEF2b2lkYW5j
ZSkgY29uc3Q7CiAKLSAgICBib29sIHNob3VsZFBhaW50QXRMb3dRdWFsaXR5KEdyYXBoaWNzQ29u
dGV4dCYsIEltYWdlKiwgY29uc3Qgdm9pZCosIGNvbnN0IExheW91dFNpemUmKTsKKyAgICBib29s
IHNob3VsZFBhaW50QXRMb3dRdWFsaXR5KEdyYXBoaWNzQ29udGV4dCYsIEltYWdlJiwgY29uc3Qg
dm9pZCosIGNvbnN0IExheW91dFNpemUmKTsKIAogICAgIFJlbmRlckJveE1vZGVsT2JqZWN0KiBj
b250aW51YXRpb24oKSBjb25zdDsKICAgICB2b2lkIHNldENvbnRpbnVhdGlvbihSZW5kZXJCb3hN
b2RlbE9iamVjdCopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckVtYmVkZGVkT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbWJl
ZGRlZE9iamVjdC5jcHAKaW5kZXggODhiNDU2NGQzM2FlZjdlNDZhMzkyMzcwZDA2NzUwYzNkNjBk
NDkxNC4uYTNmODg5MWZkOTk3ZThjMmNhODZmNTBjYjVmZmY2YzFiMDA1N2VkOSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVtYmVkZGVkT2JqZWN0LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRW1iZWRkZWRPYmplY3QuY3BwCkBAIC0x
OTcsNyArMTk3LDcgQEAgdm9pZCBSZW5kZXJFbWJlZGRlZE9iamVjdDo6c2V0VW5hdmFpbGFibGVQ
bHVnaW5JbmRpY2F0b3JJc1ByZXNzZWQoYm9vbCBwcmVzc2VkKQogICAgIHJlcGFpbnQoKTsKIH0K
IAotdm9pZCBSZW5kZXJFbWJlZGRlZE9iamVjdDo6cGFpbnRTbmFwc2hvdEltYWdlKFBhaW50SW5m
byYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbnRPZmZzZXQsIEltYWdlKiBpbWFn
ZSkKK3ZvaWQgUmVuZGVyRW1iZWRkZWRPYmplY3Q6OnBhaW50U25hcHNob3RJbWFnZShQYWludElu
Zm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50T2Zmc2V0LCBJbWFnZSYgaW1h
Z2UpCiB7CiAgICAgTGF5b3V0VW5pdCBjV2lkdGggPSBjb250ZW50V2lkdGgoKTsKICAgICBMYXlv
dXRVbml0IGNIZWlnaHQgPSBjb250ZW50SGVpZ2h0KCk7CkBAIC0yMTQsNyArMjE0LDcgQEAgdm9p
ZCBSZW5kZXJFbWJlZGRlZE9iamVjdDo6cGFpbnRTbmFwc2hvdEltYWdlKFBhaW50SW5mbyYgcGFp
bnRJbmZvLCBjb25zdCBMYXlvdXQKICAgICBpZiAoYWxpZ25lZFJlY3Qud2lkdGgoKSA8PSAwIHx8
IGFsaWduZWRSZWN0LmhlaWdodCgpIDw9IDApCiAgICAgICAgIHJldHVybjsKIAotICAgIGJvb2wg
dXNlTG93UXVhbGl0eVNjYWxpbmcgPSBzaG91bGRQYWludEF0TG93UXVhbGl0eShjb250ZXh0LCBp
bWFnZSwgaW1hZ2UsIGFsaWduZWRSZWN0LnNpemUoKSk7CisgICAgYm9vbCB1c2VMb3dRdWFsaXR5
U2NhbGluZyA9IHNob3VsZFBhaW50QXRMb3dRdWFsaXR5KGNvbnRleHQsIGltYWdlLCAmaW1hZ2Us
IGFsaWduZWRSZWN0LnNpemUoKSk7CiAgICAgSW1hZ2VPcmllbnRhdGlvbkRlc2NyaXB0aW9uIG9y
aWVudGF0aW9uRGVzY3JpcHRpb24oc2hvdWxkUmVzcGVjdEltYWdlT3JpZW50YXRpb24oKSk7CiAj
aWYgRU5BQkxFKENTU19JTUFHRV9PUklFTlRBVElPTikKICAgICBvcmllbnRhdGlvbkRlc2NyaXB0
aW9uLnNldEltYWdlT3JpZW50YXRpb25FbnVtKHN0eWxlKCkuaW1hZ2VPcmllbnRhdGlvbigpKTsK
QEAgLTIzOSw3ICsyMzksNyBAQCB2b2lkIFJlbmRlckVtYmVkZGVkT2JqZWN0OjpwYWludENvbnRl
bnRzKFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2ludAogICAgICAgICByZXR1
cm47CiAKICAgICBpZiAoSW1hZ2UqIHNuYXBzaG90ID0gZG93bmNhc3Q8SFRNTFBsdWdJbkltYWdl
RWxlbWVudD4ocGx1Z0luRWxlbWVudCkuc25hcHNob3RJbWFnZSgpKQotICAgICAgICBwYWludFNu
YXBzaG90SW1hZ2UocGFpbnRJbmZvLCBwYWludE9mZnNldCwgc25hcHNob3QpOworICAgICAgICBw
YWludFNuYXBzaG90SW1hZ2UocGFpbnRJbmZvLCBwYWludE9mZnNldCwgKnNuYXBzaG90KTsKIH0K
IAogdm9pZCBSZW5kZXJFbWJlZGRlZE9iamVjdDo6cGFpbnQoUGFpbnRJbmZvJiBwYWludEluZm8s
IGNvbnN0IExheW91dFBvaW50JiBwYWludE9mZnNldCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJFbWJlZGRlZE9iamVjdC5oIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckVtYmVkZGVkT2JqZWN0LmgKaW5kZXggYmQ2NjY4ZDM0OGZjNzBiMTAyYTky
MWJlMDk1ZDE5NDVhOGRhZTNkOC4uODk1OWUxZjVhZmFlY2QyNzAyNjAzMTY4YmY3MTM5YmQ1YzYw
NDZkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVtYmVkZGVk
T2JqZWN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVtYmVkZGVkT2Jq
ZWN0LmgKQEAgLTczLDcgKzczLDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIGNvbnN0IGNoYXIq
IHJlbmRlck5hbWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAiUmVuZGVyRW1iZWRkZWRPYmpl
Y3QiOyB9CiAgICAgdmlydHVhbCBib29sIGlzRW1iZWRkZWRPYmplY3QoKSBjb25zdCBvdmVycmlk
ZSBmaW5hbCB7IHJldHVybiB0cnVlOyB9CiAKLSAgICB2b2lkIHBhaW50U25hcHNob3RJbWFnZShQ
YWludEluZm8mLCBjb25zdCBMYXlvdXRQb2ludCYsIEltYWdlKik7CisgICAgdm9pZCBwYWludFNu
YXBzaG90SW1hZ2UoUGFpbnRJbmZvJiwgY29uc3QgTGF5b3V0UG9pbnQmLCBJbWFnZSYpOwogICAg
IHZpcnR1YWwgdm9pZCBwYWludENvbnRlbnRzKFBhaW50SW5mbyYsIGNvbnN0IExheW91dFBvaW50
Jikgb3ZlcnJpZGUgZmluYWw7CiAKICAgICB2aXJ0dWFsIGJvb2wgcmVxdWlyZXNMYXllcigpIGNv
bnN0IG92ZXJyaWRlIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckltYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZS5j
cHAKaW5kZXggNjlhZDIxNDhmYTc5ZGVhYzZhMjkyZDI3OGMxMzU2ZmJmYTg1ZDI1Mi4uMWQ0Nzhi
ZjZmZmM4N2ZlZmY0NzU1NzQxNTI1MjRmYjFkYzg3MmRiNyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVySW1hZ2UuY3BwCkBAIC00MjQsNyArNDI0LDcgQEAgdm9pZCBSZW5kZXJJbWFn
ZTo6cGFpbnRSZXBsYWNlZChQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQm
IHBhaW50T2YKICNpZiBFTkFCTEUoQ1NTX0lNQUdFX09SSUVOVEFUSU9OKQogICAgICAgICAgICAg
ICAgIG9yaWVudGF0aW9uRGVzY3JpcHRpb24uc2V0SW1hZ2VPcmllbnRhdGlvbkVudW0oc3R5bGUo
KS5pbWFnZU9yaWVudGF0aW9uKCkpOwogI2VuZGlmCi0gICAgICAgICAgICAgICAgY29udGV4dC5k
cmF3SW1hZ2UoaW1hZ2UuZ2V0KCksIHN0eWxlKCkuY29sb3JTcGFjZSgpLCBzbmFwUmVjdFRvRGV2
aWNlUGl4ZWxzKExheW91dFJlY3QocGFpbnRPZmZzZXQgKyBpbWFnZU9mZnNldCwgaW1hZ2VTaXpl
KSwgZGV2aWNlU2NhbGVGYWN0b3IpLCBvcmllbnRhdGlvbkRlc2NyaXB0aW9uKTsKKyAgICAgICAg
ICAgICAgICBjb250ZXh0LmRyYXdJbWFnZSgqaW1hZ2UsIHN0eWxlKCkuY29sb3JTcGFjZSgpLCBz
bmFwUmVjdFRvRGV2aWNlUGl4ZWxzKExheW91dFJlY3QocGFpbnRPZmZzZXQgKyBpbWFnZU9mZnNl
dCwgaW1hZ2VTaXplKSwgZGV2aWNlU2NhbGVGYWN0b3IpLCBvcmllbnRhdGlvbkRlc2NyaXB0aW9u
KTsKICAgICAgICAgICAgICAgICBlcnJvclBpY3R1cmVEcmF3biA9IHRydWU7CiAgICAgICAgICAg
ICB9CiAKQEAgLTU0OCwxMiArNTQ4LDEyIEBAIHZvaWQgUmVuZGVySW1hZ2U6OnBhaW50SW50b1Jl
Y3QoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIHJlY3QpCiAgICAg
SFRNTEltYWdlRWxlbWVudCogaW1hZ2VFbGVtZW50ID0gaXM8SFRNTEltYWdlRWxlbWVudD4oZWxl
bWVudCgpKSA/IGRvd25jYXN0PEhUTUxJbWFnZUVsZW1lbnQ+KGVsZW1lbnQoKSkgOiBudWxscHRy
OwogICAgIENvbXBvc2l0ZU9wZXJhdG9yIGNvbXBvc2l0ZU9wZXJhdG9yID0gaW1hZ2VFbGVtZW50
ID8gaW1hZ2VFbGVtZW50LT5jb21wb3NpdGVPcGVyYXRvcigpIDogQ29tcG9zaXRlU291cmNlT3Zl
cjsKICAgICBJbWFnZSogaW1hZ2UgPSBpbWFnZVJlc291cmNlKCkuaW1hZ2UoKS5nZXQoKTsKLSAg
ICBib29sIHVzZUxvd1F1YWxpdHlTY2FsaW5nID0gc2hvdWxkUGFpbnRBdExvd1F1YWxpdHkoY29u
dGV4dCwgaW1hZ2UsIGltYWdlLCBMYXlvdXRTaXplKHJlY3Quc2l6ZSgpKSk7CisgICAgYm9vbCB1
c2VMb3dRdWFsaXR5U2NhbGluZyA9IGltYWdlICYmIHNob3VsZFBhaW50QXRMb3dRdWFsaXR5KGNv
bnRleHQsICppbWFnZSwgaW1hZ2UsIExheW91dFNpemUocmVjdC5zaXplKCkpKTsKICAgICBJbWFn
ZU9yaWVudGF0aW9uRGVzY3JpcHRpb24gb3JpZW50YXRpb25EZXNjcmlwdGlvbihzaG91bGRSZXNw
ZWN0SW1hZ2VPcmllbnRhdGlvbigpKTsKICNpZiBFTkFCTEUoQ1NTX0lNQUdFX09SSUVOVEFUSU9O
KQogICAgIG9yaWVudGF0aW9uRGVzY3JpcHRpb24uc2V0SW1hZ2VPcmllbnRhdGlvbkVudW0oc3R5
bGUoKS5pbWFnZU9yaWVudGF0aW9uKCkpOwogI2VuZGlmCi0gICAgY29udGV4dC5kcmF3SW1hZ2Uo
aW1hZ2VSZXNvdXJjZSgpLmltYWdlKHJlY3Qud2lkdGgoKSwgcmVjdC5oZWlnaHQoKSkuZ2V0KCks
IHN0eWxlKCkuY29sb3JTcGFjZSgpLCByZWN0LAorICAgIGNvbnRleHQuZHJhd0ltYWdlKCppbWcs
IHN0eWxlKCkuY29sb3JTcGFjZSgpLCByZWN0LAogICAgICAgICBJbWFnZVBhaW50aW5nT3B0aW9u
cyhjb21wb3NpdGVPcGVyYXRvciwgQmxlbmRNb2RlTm9ybWFsLCBvcmllbnRhdGlvbkRlc2NyaXB0
aW9uLCB1c2VMb3dRdWFsaXR5U2NhbGluZykpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2VSZXNvdXJjZVN0eWxlSW1hZ2UuY3BwIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlUmVzb3VyY2VTdHlsZUltYWdlLmNwcAppbmRl
eCA0MmIzN2RkZDY3ZjFkMTdmNTFjMTMwODhkMjE2ZDY0OGNhNjQ2ZGQwLi41MWE4NmE2ZjgyYzA3
ZTEyNjA5NWFkMDhjNzNmMGZhZTBlZWYyYmQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVySW1hZ2VSZXNvdXJjZVN0eWxlSW1hZ2UuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZVJlc291cmNlU3R5bGVJbWFnZS5jcHAKQEAgLTU3
LDE0ICs1NywxNCBAQCB2b2lkIFJlbmRlckltYWdlUmVzb3VyY2VTdHlsZUltYWdlOjpzaHV0ZG93
bigpCiB7CiAgICAgQVNTRVJUKG1fcmVuZGVyZXIpOwogICAgIG1fc3R5bGVJbWFnZS0+cmVtb3Zl
Q2xpZW50KG1fcmVuZGVyZXIpOwotICAgIG1fY2FjaGVkSW1hZ2UgPSAwOworICAgIG1fY2FjaGVk
SW1hZ2UgPSBudWxscHRyOwogfQogCiBQYXNzUmVmUHRyPEltYWdlPiBSZW5kZXJJbWFnZVJlc291
cmNlU3R5bGVJbWFnZTo6aW1hZ2UoaW50IHdpZHRoLCBpbnQgaGVpZ2h0KSBjb25zdAogewogICAg
IC8vIEdlbmVyYXRlZCBjb250ZW50IG1heSB0cmlnZ2VyIGNhbGxzIHRvIGltYWdlKCkgd2hpbGUg
d2UncmUgc3RpbGwgcGVuZGluZywgZG9uJ3QgYXNzZXJ0IGJ1dCBncmFjZWZ1bGx5IGV4aXQuCiAg
ICAgaWYgKG1fc3R5bGVJbWFnZS0+aXNQZW5kaW5nSW1hZ2UoKSkKLSAgICAgICAgcmV0dXJuIDA7
CisgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIHJldHVybiBtX3N0eWxlSW1hZ2UtPmltYWdl
KG1fcmVuZGVyZXIsIEludFNpemUod2lkdGgsIGhlaWdodCkpOwogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcAppbmRleCAzNDk4YzdjYzg0NGEzNDQzZDlhNDQzZGM2
NTQ0ZDUwZjEyM2FhMWJhLi4wN2E1YWY3NzU3ZDRmMjZhMjM2NmIyNTNlNWZhZTdjZDhhNDg1Y2Ex
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAKQEAgLTM2NTUsMTIg
KzM2NTUsMTYgQEAgdm9pZCBSZW5kZXJMYXllcjo6ZHJhd1BsYXRmb3JtUmVzaXplckltYWdlKEdy
YXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgTGF5b3UKICAgICAgICAgY29udGV4dC5zYXZl
KCk7CiAgICAgICAgIGNvbnRleHQudHJhbnNsYXRlKHJlc2l6ZXJDb3JuZXJSZWN0LngoKSArIGNv
cm5lclJlc2l6ZXJTaXplLndpZHRoKCksIHJlc2l6ZXJDb3JuZXJSZWN0LnkoKSArIHJlc2l6ZXJD
b3JuZXJSZWN0LmhlaWdodCgpIC0gY29ybmVyUmVzaXplclNpemUuaGVpZ2h0KCkpOwogICAgICAg
ICBjb250ZXh0LnNjYWxlKEZsb2F0U2l6ZSgtMS4wLCAxLjApKTsKLSAgICAgICAgY29udGV4dC5k
cmF3SW1hZ2UocmVzaXplQ29ybmVySW1hZ2UuZ2V0KCksIHJlbmRlcmVyKCkuc3R5bGUoKS5jb2xv
clNwYWNlKCksIEZsb2F0UmVjdChGbG9hdFBvaW50KCksIGNvcm5lclJlc2l6ZXJTaXplKSk7Cisg
ICAgICAgIGlmIChyZXNpemVDb3JuZXJJbWFnZSkKKyAgICAgICAgICAgIGNvbnRleHQuZHJhd0lt
YWdlKCpyZXNpemVDb3JuZXJJbWFnZSwgcmVuZGVyZXIoKS5zdHlsZSgpLmNvbG9yU3BhY2UoKSwg
RmxvYXRSZWN0KEZsb2F0UG9pbnQoKSwgY29ybmVyUmVzaXplclNpemUpKTsKICAgICAgICAgY29u
dGV4dC5yZXN0b3JlKCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CisgICAgCisgICAgaWYgKCFy
ZXNpemVDb3JuZXJJbWFnZSkKKyAgICAgICAgcmV0dXJuOwogICAgIEZsb2F0UmVjdCBpbWFnZVJl
Y3QgPSBzbmFwUmVjdFRvRGV2aWNlUGl4ZWxzKExheW91dFJlY3QocmVzaXplckNvcm5lclJlY3Qu
bWF4WE1heFlDb3JuZXIoKSAtIGNvcm5lclJlc2l6ZXJTaXplLCBjb3JuZXJSZXNpemVyU2l6ZSks
IHJlbmRlcmVyKCkuZG9jdW1lbnQoKS5kZXZpY2VTY2FsZUZhY3RvcigpKTsKLSAgICBjb250ZXh0
LmRyYXdJbWFnZShyZXNpemVDb3JuZXJJbWFnZS5nZXQoKSwgcmVuZGVyZXIoKS5zdHlsZSgpLmNv
bG9yU3BhY2UoKSwgaW1hZ2VSZWN0KTsKKyAgICBjb250ZXh0LmRyYXdJbWFnZSgqcmVzaXplQ29y
bmVySW1hZ2UsIHJlbmRlcmVyKCkuc3R5bGUoKS5jb2xvclNwYWNlKCksIGltYWdlUmVjdCk7CiB9
CiAKIHZvaWQgUmVuZGVyTGF5ZXI6OnBhaW50UmVzaXplcihHcmFwaGljc0NvbnRleHQmIGNvbnRl
eHQsIGNvbnN0IExheW91dFBvaW50JiBwYWludE9mZnNldCwgY29uc3QgTGF5b3V0UmVjdCYgZGFt
YWdlUmVjdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0
TWFya2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0TWFya2VyLmNw
cAppbmRleCA0MDA3YWE3MGRjMTg0YWZlMjgyMzk1MTMyZmE4ZDI0MDcyNTAzNDljLi5mNmUzNDZk
MzdiMDViYTQ2YTlmNjYwODA2MjA1YjQyNTFjN2IzNTE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdE1hcmtlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckxpc3RNYXJrZXIuY3BwCkBAIC0xMTk3LDcgKzExOTcsOCBAQCB2b2lk
IFJlbmRlckxpc3RNYXJrZXI6OnBhaW50KFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlv
dXRQb2ludCYgcGFpbnRPZmZzZQogICAgIEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCA9IHBhaW50
SW5mby5jb250ZXh0KCk7CiAKICAgICBpZiAoaXNJbWFnZSgpKSB7Ci0gICAgICAgIGNvbnRleHQu
ZHJhd0ltYWdlKG1faW1hZ2UtPmltYWdlKHRoaXMsIG1hcmtlci5zaXplKCkpLmdldCgpLCBzdHls
ZSgpLmNvbG9yU3BhY2UoKSwgbWFya2VyKTsKKyAgICAgICAgaWYgKFJlZlB0cjxJbWFnZT4gbWFy
a2VySW1hZ2UgPSBtX2ltYWdlLT5pbWFnZSh0aGlzLCBtYXJrZXIuc2l6ZSgpKSkKKyAgICAgICAg
ICAgIGNvbnRleHQuZHJhd0ltYWdlKCptYXJrZXJJbWFnZSwgc3R5bGUoKS5jb2xvclNwYWNlKCks
IG1hcmtlcik7CiAgICAgICAgIGlmIChzZWxlY3Rpb25TdGF0ZSgpICE9IFNlbGVjdGlvbk5vbmUp
IHsKICAgICAgICAgICAgIExheW91dFJlY3Qgc2VsUmVjdCA9IGxvY2FsU2VsZWN0aW9uUmVjdCgp
OwogICAgICAgICAgICAgc2VsUmVjdC5tb3ZlQnkoYm94T3JpZ2luKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTbmFwc2hvdHRlZFBsdWdJbi5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU25hcHNob3R0ZWRQbHVnSW4uY3BwCmluZGV4IGJk
MWE5ZDUxZDI1YjNkODljNDFhMDkxMDI5YTg5MzRlMWRkNjQ1MGUuLmVjNDJjNjJjODEyN2NlZDM4
ZTU2MTY4NGQ4N2U4YjUwOWYxOWIzYzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJTbmFwc2hvdHRlZFBsdWdJbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlclNuYXBzaG90dGVkUGx1Z0luLmNwcApAQCAtMTM1LDEzICsxMzUsMTMgQEAg
dm9pZCBSZW5kZXJTbmFwc2hvdHRlZFBsdWdJbjo6cGFpbnRTbmFwc2hvdChQYWludEluZm8mIHBh
aW50SW5mbywgY29uc3QgTGF5b3V0UG8KICAgICBpZiAoYWxpZ25lZFJlY3Qud2lkdGgoKSA8PSAw
IHx8IGFsaWduZWRSZWN0LmhlaWdodCgpIDw9IDApCiAgICAgICAgIHJldHVybjsKIAotICAgIGJv
b2wgdXNlTG93UXVhbGl0eVNjYWxpbmcgPSBzaG91bGRQYWludEF0TG93UXVhbGl0eShjb250ZXh0
LCBpbWFnZSwgaW1hZ2UsIGFsaWduZWRSZWN0LnNpemUoKSk7CisgICAgYm9vbCB1c2VMb3dRdWFs
aXR5U2NhbGluZyA9IHNob3VsZFBhaW50QXRMb3dRdWFsaXR5KGNvbnRleHQsICppbWFnZSwgaW1h
Z2UsIGFsaWduZWRSZWN0LnNpemUoKSk7CiAKICAgICBJbWFnZU9yaWVudGF0aW9uRGVzY3JpcHRp
b24gb3JpZW50YXRpb25EZXNjcmlwdGlvbihzaG91bGRSZXNwZWN0SW1hZ2VPcmllbnRhdGlvbigp
KTsKICNpZiBFTkFCTEUoQ1NTX0lNQUdFX09SSUVOVEFUSU9OKQogICAgIG9yaWVudGF0aW9uRGVz
Y3JpcHRpb24uc2V0SW1hZ2VPcmllbnRhdGlvbkVudW0oc3R5bGUoKS5pbWFnZU9yaWVudGF0aW9u
KCkpOwogI2VuZGlmCi0gICAgY29udGV4dC5kcmF3SW1hZ2UoaW1hZ2UsIHN0eWxlKCkuY29sb3JT
cGFjZSgpLCBhbGlnbmVkUmVjdCwgSW1hZ2VQYWludGluZ09wdGlvbnMob3JpZW50YXRpb25EZXNj
cmlwdGlvbiwgdXNlTG93UXVhbGl0eVNjYWxpbmcpKTsKKyAgICBjb250ZXh0LmRyYXdJbWFnZSgq
aW1hZ2UsIHN0eWxlKCkuY29sb3JTcGFjZSgpLCBhbGlnbmVkUmVjdCwgSW1hZ2VQYWludGluZ09w
dGlvbnMob3JpZW50YXRpb25EZXNjcmlwdGlvbiwgdXNlTG93UXVhbGl0eVNjYWxpbmcpKTsKIH0K
IAogQ3Vyc29yRGlyZWN0aXZlIFJlbmRlclNuYXBzaG90dGVkUGx1Z0luOjpnZXRDdXJzb3IoY29u
c3QgTGF5b3V0UG9pbnQmIHBvaW50LCBDdXJzb3ImIG92ZXJyaWRlQ3Vyc29yKSBjb25zdApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lTWFjLm1tIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lTWFjLm1tCmluZGV4IGQ4YWYzZDIzZTc5
OGQwMzVkNmRjMjU5YzRhMTY5MGNkNzM2Y2NmOTMuLmRhMmQ5YTcyZTVjZjlhZGY3YTQxZjE3OTEz
Nzc5MGE2Y2IxYjIxNTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJUaGVtZU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVN
YWMubW0KQEAgLTExNTgsNyArMTE1OCw3IEBAIGJvb2wgUmVuZGVyVGhlbWVNYWM6OnBhaW50UHJv
Z3Jlc3NCYXIoY29uc3QgUmVuZGVyT2JqZWN0JiByZW5kZXJPYmplY3QsIGNvbnN0IFBhCiAgICAg
ICAgIHBhaW50SW5mby5jb250ZXh0KCkuc2NhbGUoRmxvYXRTaXplKC0xLCAxKSk7CiAgICAgfQog
Ci0gICAgcGFpbnRJbmZvLmNvbnRleHQoKS5kcmF3SW1hZ2VCdWZmZXIoaW1hZ2VCdWZmZXIuZ2V0
KCksIENvbG9yU3BhY2VEZXZpY2VSR0IsIGluZmxhdGVkUmVjdC5sb2NhdGlvbigpKTsKKyAgICBw
YWludEluZm8uY29udGV4dCgpLmRyYXdJbWFnZUJ1ZmZlcigqaW1hZ2VCdWZmZXIsIENvbG9yU3Bh
Y2VEZXZpY2VSR0IsIGluZmxhdGVkUmVjdC5sb2NhdGlvbigpKTsKICAgICByZXR1cm4gZmFsc2U7
CiB9CiAKQEAgLTE5MTIsNyArMTkxMiw3IEBAIGJvb2wgUmVuZGVyVGhlbWVNYWM6OnBhaW50U25h
cHNob3R0ZWRQbHVnaW5PdmVybGF5KGNvbnN0IFJlbmRlck9iamVjdCYgcmVuZGVyZXIsCiAgICAg
aWYgKGFsaWduZWRQbHVnaW5SZWN0LndpZHRoKCkgPD0gMCB8fCBhbGlnbmVkUGx1Z2luUmVjdC5o
ZWlnaHQoKSA8PSAwKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAotICAgIGNvbnRleHQuZHJhd0lt
YWdlKHNuYXBzaG90LCBwbHVnSW5SZW5kZXJlci5zdHlsZSgpLmNvbG9yU3BhY2UoKSwgYWxpZ25l
ZFBsdWdpblJlY3QsIENvbXBvc2l0ZVNvdXJjZU92ZXIpOworICAgIGNvbnRleHQuZHJhd0ltYWdl
KCpzbmFwc2hvdCwgcGx1Z0luUmVuZGVyZXIuc3R5bGUoKS5jb2xvclNwYWNlKCksIGFsaWduZWRQ
bHVnaW5SZWN0LCBDb21wb3NpdGVTb3VyY2VPdmVyKTsKICAgICByZXR1cm4gZmFsc2U7CiB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZVdpbi5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVXaW4uY3BwCmluZGV4IGZkMzQ5
NTdmMDdmZDY2NGZkMGE1NzkxZWY5YjFlMmQ0ZTI5NmNlZjEuLjQ2NzljY2EyOGIxYjM2YWYxZmEx
OTAxYmVhOTlhYTk3ZjEyNGIzM2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJUaGVtZVdpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
clRoZW1lV2luLmNwcApAQCAtODkyLDcgKzg5Miw3IEBAIGJvb2wgUmVuZGVyVGhlbWVXaW46OnBh
aW50U2VhcmNoRmllbGRDYW5jZWxCdXR0b24oY29uc3QgUmVuZGVyT2JqZWN0JiBvLCBjb25zdCBQ
CiAKICAgICBzdGF0aWMgSW1hZ2UqIGNhbmNlbEltYWdlID0gSW1hZ2U6OmxvYWRQbGF0Zm9ybVJl
c291cmNlKCJzZWFyY2hDYW5jZWwiKS5sZWFrUmVmKCk7CiAgICAgc3RhdGljIEltYWdlKiBjYW5j
ZWxQcmVzc2VkSW1hZ2UgPSBJbWFnZTo6bG9hZFBsYXRmb3JtUmVzb3VyY2UoInNlYXJjaENhbmNl
bFByZXNzZWQiKS5sZWFrUmVmKCk7Ci0gICAgcGFpbnRJbmZvLmNvbnRleHQoKS5kcmF3SW1hZ2Uo
aXNQcmVzc2VkKG8pID8gY2FuY2VsUHJlc3NlZEltYWdlIDogY2FuY2VsSW1hZ2UsIG8uc3R5bGUo
KS5jb2xvclNwYWNlKCksIGJvdW5kcyk7CisgICAgcGFpbnRJbmZvLmNvbnRleHQoKS5kcmF3SW1h
Z2UoaXNQcmVzc2VkKG8pID8gKmNhbmNlbFByZXNzZWRJbWFnZSA6ICpjYW5jZWxJbWFnZSwgby5z
dHlsZSgpLmNvbG9yU3BhY2UoKSwgYm91bmRzKTsKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKQEAg
LTk0MCw3ICs5NDAsNyBAQCBib29sIFJlbmRlclRoZW1lV2luOjpwYWludFNlYXJjaEZpZWxkUmVz
dWx0c0RlY29yYXRpb25QYXJ0KGNvbnN0IFJlbmRlck9iamVjdCYgbwogICAgIGJvdW5kcy5zZXRZ
KHBhcmVudEJveC55KCkgKyAocGFyZW50Qm94LmhlaWdodCgpIC0gYm91bmRzLmhlaWdodCgpICsg
MSkgLyAyKTsKICAgICAKICAgICBzdGF0aWMgSW1hZ2UqIG1hZ25pZmllckltYWdlID0gSW1hZ2U6
OmxvYWRQbGF0Zm9ybVJlc291cmNlKCJzZWFyY2hNYWduaWZpZXIiKS5sZWFrUmVmKCk7Ci0gICAg
cGFpbnRJbmZvLmNvbnRleHQoKS5kcmF3SW1hZ2UobWFnbmlmaWVySW1hZ2UsIG8uc3R5bGUoKS5j
b2xvclNwYWNlKCksIGJvdW5kcyk7CisgICAgcGFpbnRJbmZvLmNvbnRleHQoKS5kcmF3SW1hZ2Uo
Km1hZ25pZmllckltYWdlLCBvLnN0eWxlKCkuY29sb3JTcGFjZSgpLCBib3VuZHMpOwogICAgIHJl
dHVybiBmYWxzZTsKIH0KIApAQCAtOTc1LDcgKzk3NSw3IEBAIGJvb2wgUmVuZGVyVGhlbWVXaW46
OnBhaW50U2VhcmNoRmllbGRSZXN1bHRzQnV0dG9uKGNvbnN0IFJlbmRlck9iamVjdCYgbywgY29u
c3QKICAgICBib3VuZHMuc2V0WShwYXJlbnRCb3gueSgpICsgKHBhcmVudEJveC5oZWlnaHQoKSAt
IGJvdW5kcy5oZWlnaHQoKSArIDEpIC8gMik7CiAKICAgICBzdGF0aWMgSW1hZ2UqIG1hZ25pZmll
ckltYWdlID0gSW1hZ2U6OmxvYWRQbGF0Zm9ybVJlc291cmNlKCJzZWFyY2hNYWduaWZpZXJSZXN1
bHRzIikubGVha1JlZigpOwotICAgIHBhaW50SW5mby5jb250ZXh0KCkuZHJhd0ltYWdlKG1hZ25p
ZmllckltYWdlLCBvLnN0eWxlKCkuY29sb3JTcGFjZSgpLCBib3VuZHMpOworICAgIHBhaW50SW5m
by5jb250ZXh0KCkuZHJhd0ltYWdlKCptYWduaWZpZXJJbWFnZSwgby5zdHlsZSgpLmNvbG9yU3Bh
Y2UoKSwgYm91bmRzKTsKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMvU2hhcGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3NoYXBlcy9TaGFwZS5jcHAKaW5kZXggMmQ0NzU4MjFmZDJmYzczYTk0ZTY3NTM5NGFl
OGE2MzBlYTU3ZjJmNS4uZTBjYWVhYzljZDgwMWExYjhiNzMwYjhmNGI5ZDdhNmQ3MTdlYmFhZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3NoYXBlcy9TaGFwZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3NoYXBlcy9TaGFwZS5jcHAKQEAgLTE4NCw3ICsx
ODQsOCBAQCBzdGQ6OnVuaXF1ZV9wdHI8U2hhcGU+IFNoYXBlOjpjcmVhdGVSYXN0ZXJTaGFwZShJ
bWFnZSogaW1hZ2UsIGZsb2F0IHRocmVzaG9sZCwgYwogCiAgICAgaWYgKGltYWdlQnVmZmVyKSB7
CiAgICAgICAgIEdyYXBoaWNzQ29udGV4dCYgZ3JhcGhpY3NDb250ZXh0ID0gaW1hZ2VCdWZmZXIt
PmNvbnRleHQoKTsKLSAgICAgICAgZ3JhcGhpY3NDb250ZXh0LmRyYXdJbWFnZShpbWFnZSwgQ29s
b3JTcGFjZURldmljZVJHQiwgSW50UmVjdChJbnRQb2ludCgpLCBpbWFnZVJlY3Quc2l6ZSgpKSk7
CisgICAgICAgIGlmIChpbWFnZSkKKyAgICAgICAgICAgIGdyYXBoaWNzQ29udGV4dC5kcmF3SW1h
Z2UoKmltYWdlLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBJbnRSZWN0KEludFBvaW50KCksIGltYWdl
UmVjdC5zaXplKCkpKTsKIAogICAgICAgICBSZWZQdHI8VWludDhDbGFtcGVkQXJyYXk+IHBpeGVs
QXJyYXkgPSBpbWFnZUJ1ZmZlci0+Z2V0VW5tdWx0aXBsaWVkSW1hZ2VEYXRhKEludFJlY3QoSW50
UG9pbnQoKSwgaW1hZ2VSZWN0LnNpemUoKSkpOwogICAgICAgICB1bnNpZ25lZCBwaXhlbEFycmF5
TGVuZ3RoID0gcGl4ZWxBcnJheS0+bGVuZ3RoKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc2hhcGVzL1NoYXBlT3V0c2lkZUluZm8uY3BwIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3NoYXBlcy9TaGFwZU91dHNpZGVJbmZvLmNwcAppbmRleCA2NmQzMTgzY2Y0MDhk
NzQyZGIwMDg3NzMwMTFmOTMwZDhhZjUwZGQ1Li5kYzg0YjlhNTI2MTI1MDUxZDA0MWU4Y2NmMDIx
YmEwNmJhYTQ3Mjk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVz
L1NoYXBlT3V0c2lkZUluZm8uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFw
ZXMvU2hhcGVPdXRzaWRlSW5mby5jcHAKQEAgLTE1OCw3ICsxNTgsNiBAQCBzdGQ6OnVuaXF1ZV9w
dHI8U2hhcGU+IFNoYXBlT3V0c2lkZUluZm86OmNyZWF0ZVNoYXBlRm9ySW1hZ2UoU3R5bGVJbWFn
ZSogc3R5bGVJbQogCiAgICAgQVNTRVJUKCFzdHlsZUltYWdlLT5pc1BlbmRpbmdJbWFnZSgpKTsK
ICAgICBSZWZQdHI8SW1hZ2U+IGltYWdlID0gc3R5bGVJbWFnZS0+aW1hZ2UoY29uc3RfY2FzdDxS
ZW5kZXJCb3gqPigmbV9yZW5kZXJlciksIGltYWdlU2l6ZSk7Ci0KICAgICByZXR1cm4gU2hhcGU6
OmNyZWF0ZVJhc3RlclNoYXBlKGltYWdlLmdldCgpLCBzaGFwZUltYWdlVGhyZXNob2xkLCBpbWFn
ZVJlY3QsIG1hcmdpblJlY3QsIHdyaXRpbmdNb2RlLCBtYXJnaW4pOwogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvTmluZVBpZWNlSW1hZ2UuY3BwIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL05pbmVQaWVjZUltYWdlLmNwcAppbmRleCBhYTEx
Y2RkYzk0YmZkZTQ0Y2FkN2M1YWYwOGM0NjUxYmY1OTNiY2Y1Li5jOTM5YWU3NWQxZGZiYjkzYzIw
MGQ5NDBjYTZkNGEyOWE3NmE2YmQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3R5bGUvTmluZVBpZWNlSW1hZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdHlsZS9OaW5lUGllY2VJbWFnZS5jcHAKQEAgLTIwNiw2ICsyMDYsOSBAQCB2b2lkIE5pbmVQ
aWVjZUltYWdlOjpwYWludChHcmFwaGljc0NvbnRleHQmIGdyYXBoaWNzQ29udGV4dCwgUmVuZGVy
RWxlbWVudCogcmVuZAogICAgIFZlY3RvcjxGbG9hdFNpemU+IHRpbGVTY2FsZXMgPSBjb21wdXRl
VGlsZVNjYWxlcyhkZXN0aW5hdGlvblJlY3RzLCBzb3VyY2VSZWN0cywgaG9yaXpvbnRhbFJ1bGUo
KSwgdmVydGljYWxSdWxlKCkpOwogCiAgICAgUmVmUHRyPEltYWdlPiBpbWFnZSA9IHN0eWxlSW1h
Z2UtPmltYWdlKHJlbmRlcmVyLCBzb3VyY2UpOworICAgIGlmICghaW1hZ2UpCisgICAgICAgIHJl
dHVybjsKKwogICAgIENvbG9yU3BhY2UgY29sb3JTcGFjZSA9IHN0eWxlLmNvbG9yU3BhY2UoKTsK
IAogICAgIGZvciAoSW1hZ2VQaWVjZSBwaWVjZSA9IE1pblBpZWNlOyBwaWVjZSA8IE1heFBpZWNl
OyArK3BpZWNlKSB7CkBAIC0yMTMsMTMgKzIxNiwxMyBAQCB2b2lkIE5pbmVQaWVjZUltYWdlOjpw
YWludChHcmFwaGljc0NvbnRleHQmIGdyYXBoaWNzQ29udGV4dCwgUmVuZGVyRWxlbWVudCogcmVu
ZAogICAgICAgICAgICAgY29udGludWU7CiAKICAgICAgICAgaWYgKGlzQ29ybmVyUGllY2UocGll
Y2UpKSB7Ci0gICAgICAgICAgICBncmFwaGljc0NvbnRleHQuZHJhd0ltYWdlKGltYWdlLmdldCgp
LCBjb2xvclNwYWNlLCBkZXN0aW5hdGlvblJlY3RzW3BpZWNlXSwgc291cmNlUmVjdHNbcGllY2Vd
LCBvcCk7CisgICAgICAgICAgICBncmFwaGljc0NvbnRleHQuZHJhd0ltYWdlKCppbWFnZSwgY29s
b3JTcGFjZSwgZGVzdGluYXRpb25SZWN0c1twaWVjZV0sIHNvdXJjZVJlY3RzW3BpZWNlXSwgb3Ap
OwogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KIAogICAgICAgICBJbWFnZTo6VGls
ZVJ1bGUgaFJ1bGUgPSBpc0hvcml6b250YWxQaWVjZShwaWVjZSkgPyBzdGF0aWNfY2FzdDxJbWFn
ZTo6VGlsZVJ1bGU+KGhvcml6b250YWxSdWxlKCkpIDogSW1hZ2U6OlN0cmV0Y2hUaWxlOwogICAg
ICAgICBJbWFnZTo6VGlsZVJ1bGUgdlJ1bGUgPSBpc1ZlcnRpY2FsUGllY2UocGllY2UpID8gc3Rh
dGljX2Nhc3Q8SW1hZ2U6OlRpbGVSdWxlPih2ZXJ0aWNhbFJ1bGUoKSkgOiBJbWFnZTo6U3RyZXRj
aFRpbGU7Ci0gICAgICAgIGdyYXBoaWNzQ29udGV4dC5kcmF3VGlsZWRJbWFnZShpbWFnZS5nZXQo
KSwgY29sb3JTcGFjZSwgZGVzdGluYXRpb25SZWN0c1twaWVjZV0sIHNvdXJjZVJlY3RzW3BpZWNl
XSwgdGlsZVNjYWxlc1twaWVjZV0sIGhSdWxlLCB2UnVsZSwgb3ApOworICAgICAgICBncmFwaGlj
c0NvbnRleHQuZHJhd1RpbGVkSW1hZ2UoKmltYWdlLCBjb2xvclNwYWNlLCBkZXN0aW5hdGlvblJl
Y3RzW3BpZWNlXSwgc291cmNlUmVjdHNbcGllY2VdLCB0aWxlU2NhbGVzW3BpZWNlXSwgaFJ1bGUs
IHZSdWxlLCBvcCk7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3ZnL1JlbmRlclNWR0ltYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dmcvUmVuZGVyU1ZHSW1hZ2UuY3BwCmluZGV4IGI4YTE5NmU5NTEzNzAxZDU2YWJlYTZiOTJjZmFk
NGVkMzAzYWMzODQuLmVmNzU3ZTczNjNmMzQ4ZGJkZmZhNTJmY2NkZThhZDJjYzAyYjczNTYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHSW1hZ2UuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHSW1hZ2UuY3BwCkBA
IC0xNjEsMTIgKzE2MSwxNSBAQCB2b2lkIFJlbmRlclNWR0ltYWdlOjpwYWludChQYWludEluZm8m
IHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQmKQogdm9pZCBSZW5kZXJTVkdJbWFnZTo6cGFp
bnRGb3JlZ3JvdW5kKFBhaW50SW5mbyYgcGFpbnRJbmZvKQogewogICAgIFJlZlB0cjxJbWFnZT4g
aW1hZ2UgPSBpbWFnZVJlc291cmNlKCkuaW1hZ2UoKTsKKyAgICBpZiAoIWltYWdlKQorICAgICAg
ICByZXR1cm47CisKICAgICBGbG9hdFJlY3QgZGVzdFJlY3QgPSBtX29iamVjdEJvdW5kaW5nQm94
OwogICAgIEZsb2F0UmVjdCBzcmNSZWN0KDAsIDAsIGltYWdlLT53aWR0aCgpLCBpbWFnZS0+aGVp
Z2h0KCkpOwogCiAgICAgaW1hZ2VFbGVtZW50KCkucHJlc2VydmVBc3BlY3RSYXRpbygpLnRyYW5z
Zm9ybVJlY3QoZGVzdFJlY3QsIHNyY1JlY3QpOwogCi0gICAgcGFpbnRJbmZvLmNvbnRleHQoKS5k
cmF3SW1hZ2UoaW1hZ2UuZ2V0KCksIENvbG9yU3BhY2VEZXZpY2VSR0IsIGRlc3RSZWN0LCBzcmNS
ZWN0KTsKKyAgICBwYWludEluZm8uY29udGV4dCgpLmRyYXdJbWFnZSgqaW1hZ2UsIENvbG9yU3Bh
Y2VEZXZpY2VSR0IsIGRlc3RSZWN0LCBzcmNSZWN0KTsKIH0KIAogdm9pZCBSZW5kZXJTVkdJbWFn
ZTo6aW52YWxpZGF0ZUJ1ZmZlcmVkRm9yZWdyb3VuZCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlRmlsdGVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXIuY3BwCmluZGV4IGMz
ZWRhMjk5ZGJlNWFhODQ5NWNkM2U4N2NjZmU0Yzg4OWU2ODcyYjMuLjBmZDVkNjNlMjRmMjU3NTNk
NmUyYzVlNGI3MzA0ZmMyMjQ5YTFjNjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXIuY3BwCkBAIC0yNzAsNyArMjcw
LDcgQEAgdm9pZCBSZW5kZXJTVkdSZXNvdXJjZUZpbHRlcjo6cG9zdEFwcGx5UmVzb3VyY2UoUmVu
ZGVyRWxlbWVudCYgcmVuZGVyZXIsIEdyYXBoaWMKICAgICAgICAgICAgIGNvbnRleHQtPmNvbmNh
dENUTShmaWx0ZXJEYXRhLT5zaGVhckZyZWVBYnNvbHV0ZVRyYW5zZm9ybS5pbnZlcnNlKCkpOwog
CiAgICAgICAgICAgICBjb250ZXh0LT5zY2FsZShGbG9hdFNpemUoMSAvIGZpbHRlckRhdGEtPmZp
bHRlci0+ZmlsdGVyUmVzb2x1dGlvbigpLndpZHRoKCksIDEgLyBmaWx0ZXJEYXRhLT5maWx0ZXIt
PmZpbHRlclJlc29sdXRpb24oKS5oZWlnaHQoKSkpOwotICAgICAgICAgICAgY29udGV4dC0+ZHJh
d0ltYWdlQnVmZmVyKHJlc3VsdEltYWdlLCByZW5kZXJlci5zdHlsZSgpLmNvbG9yU3BhY2UoKSwg
bGFzdEVmZmVjdC0+YWJzb2x1dGVQYWludFJlY3QoKSk7CisgICAgICAgICAgICBjb250ZXh0LT5k
cmF3SW1hZ2VCdWZmZXIoKnJlc3VsdEltYWdlLCByZW5kZXJlci5zdHlsZSgpLmNvbG9yU3BhY2Uo
KSwgbGFzdEVmZmVjdC0+YWJzb2x1dGVQYWludFJlY3QoKSk7CiAgICAgICAgICAgICBjb250ZXh0
LT5zY2FsZShmaWx0ZXJEYXRhLT5maWx0ZXItPmZpbHRlclJlc29sdXRpb24oKSk7CiAKICAgICAg
ICAgICAgIGNvbnRleHQtPmNvbmNhdENUTShmaWx0ZXJEYXRhLT5zaGVhckZyZWVBYnNvbHV0ZVRy
YW5zZm9ybSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1Jl
bmRlcmluZ0NvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdSZW5k
ZXJpbmdDb250ZXh0LmNwcAppbmRleCA4OWI4ZTM4ZWU4NTE1NWEyYjA4NzdkN2Q1ZmU3NDVjOGVm
MWVjMThjLi5kMDJlZTUwYmQ2Y2EzN2U2MGE1MmVkNGY2ODA0NmVmZjkwODFhOGJjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1JlbmRlcmluZ0NvbnRleHQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHUmVuZGVyaW5nQ29udGV4dC5j
cHAKQEAgLTMwOSwxNCArMzA5LDE1IEBAIHZvaWQgU1ZHUmVuZGVyaW5nQ29udGV4dDo6cmVuZGVy
U3VidHJlZVRvSW1hZ2VCdWZmZXIoSW1hZ2VCdWZmZXIqIGltYWdlLCBSZW5kZXJFCiAKIHZvaWQg
U1ZHUmVuZGVyaW5nQ29udGV4dDo6Y2xpcFRvSW1hZ2VCdWZmZXIoR3JhcGhpY3NDb250ZXh0JiBj
b250ZXh0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIGFic29sdXRlVHJhbnNmb3JtLCBjb25zdCBG
bG9hdFJlY3QmIHRhcmdldFJlY3QsIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4mIGltYWdl
QnVmZmVyLCBib29sIHNhZmVUb0NsZWFyKQogewotICAgIEFTU0VSVChpbWFnZUJ1ZmZlcik7Cisg
ICAgaWYgKCFpbWFnZUJ1ZmZlcikKKyAgICAgICAgcmV0dXJuOwogCiAgICAgRmxvYXRSZWN0IGFi
c29sdXRlVGFyZ2V0UmVjdCA9IGNhbGN1bGF0ZUltYWdlQnVmZmVyUmVjdCh0YXJnZXRSZWN0LCBh
YnNvbHV0ZVRyYW5zZm9ybSk7CiAKICAgICAvLyBUaGUgbWFzayBpbWFnZSBoYXMgYmVlbiBjcmVh
dGVkIGluIHRoZSBhYnNvbHV0ZSBjb29yZGluYXRlIHNwYWNlLCBhcyB0aGUgaW1hZ2Ugc2hvdWxk
IG5vdCBiZSBzY2FsZWQuCiAgICAgLy8gU28gdGhlIGFjdHVhbCBtYXNraW5nIHByb2Nlc3MgaGFz
IHRvIGJlIGRvbmUgaW4gdGhlIGFic29sdXRlIGNvb3JkaW5hdGUgc3BhY2UgYXMgd2VsbC4KICAg
ICBjb250ZXh0LmNvbmNhdENUTShhYnNvbHV0ZVRyYW5zZm9ybS5pbnZlcnNlKCkpOwotICAgIGNv
bnRleHQuY2xpcFRvSW1hZ2VCdWZmZXIoaW1hZ2VCdWZmZXIuZ2V0KCksIGFic29sdXRlVGFyZ2V0
UmVjdCk7CisgICAgY29udGV4dC5jbGlwVG9JbWFnZUJ1ZmZlcigqaW1hZ2VCdWZmZXIsIGFic29s
dXRlVGFyZ2V0UmVjdCk7CiAgICAgY29udGV4dC5jb25jYXRDVE0oYWJzb2x1dGVUcmFuc2Zvcm0p
OwogCiAgICAgLy8gV2hlbiBuZXN0aW5nIHJlc291cmNlcywgd2l0aCBvYmplY3RCb3VuZGluZ0Jv
eCBhcyBjb250ZW50IHVuaXQgdHlwZXMsIHRoZXJlJ3Mgbm8gdXNlIGluIGNhY2hpbmcgdGhlCkBA
IC0zNjAsNyArMzYxLDcgQEAgYm9vbCBTVkdSZW5kZXJpbmdDb250ZXh0OjpidWZmZXJGb3JlZ3Jv
dW5kKHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4mIGltYWdlQnUKICAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKICAgICB9CiAKLSAgICBtX3BhaW50SW5mby0+Y29udGV4dCgpLmRyYXdJbWFn
ZUJ1ZmZlcihpbWFnZUJ1ZmZlci5nZXQoKSwgQ29sb3JTcGFjZURldmljZVJHQiwgYm91bmRpbmdC
b3gpOworICAgIG1fcGFpbnRJbmZvLT5jb250ZXh0KCkuZHJhd0ltYWdlQnVmZmVyKCppbWFnZUJ1
ZmZlciwgQ29sb3JTcGFjZURldmljZVJHQiwgYm91bmRpbmdCb3gpOwogICAgIHJldHVybiB0cnVl
OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9T
VkdGRUltYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZF
SW1hZ2UuY3BwCmluZGV4IGYwNzI1MThmNDQxNzUxMWM3OTEzOTBlOTk2MjdmNWI1ZDE3ZTQ4YjEu
LjY2MThjZjU0ODRlNDllZTIxY2NjZjY3ODk0ZDAwMmY2MGUxN2U4MDYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFSW1hZ2UuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFSW1hZ2UuY3BwCkBAIC0xMzUs
NyArMTM1LDcgQEAgdm9pZCBGRUltYWdlOjpwbGF0Zm9ybUFwcGx5U29mdHdhcmUoKQogICAgICAg
ICByZXR1cm47CiAgICAgfQogCi0gICAgcmVzdWx0SW1hZ2UtPmNvbnRleHQoKS5kcmF3SW1hZ2Uo
bV9pbWFnZS5nZXQoKSwgQ29sb3JTcGFjZURldmljZVJHQiwgZGVzdFJlY3QsIHNyY1JlY3QpOwor
ICAgIHJlc3VsdEltYWdlLT5jb250ZXh0KCkuZHJhd0ltYWdlKCptX2ltYWdlLCBDb2xvclNwYWNl
RGV2aWNlUkdCLCBkZXN0UmVjdCwgc3JjUmVjdCk7CiB9CiAKIHZvaWQgRkVJbWFnZTo6ZHVtcCgp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ29udGV4dE1lbnVDb250ZXh0RGF0
YS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ29udGV4dE1lbnVDb250ZXh0RGF0YS5jcHAK
aW5kZXggNTNmY2QyMzE4NTk5NTM3MmU1ZjRmYjdiNjI0MWM4M2RmMDFlZDA0Yi4uNzMyMzRlNWY3
OTNkYTM4NTk5NDFhOWRjNzc0OWU3NDI3OGEwZTRkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvU2hhcmVkL0NvbnRleHRNZW51Q29udGV4dERhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1NoYXJlZC9Db250ZXh0TWVudUNvbnRleHREYXRhLmNwcApAQCAtNTgsNyArNTgsNyBAQCBDb250
ZXh0TWVudUNvbnRleHREYXRhOjpDb250ZXh0TWVudUNvbnRleHREYXRhKGNvbnN0IENvbnRleHRN
ZW51Q29udGV4dCYgY29udGV4dAogCiAgICAgLy8gRklYTUU6IGZpZ3VyZSBvdXQgdGhlIHJvdW5k
aW5nIHN0YXJ0ZWd5IGZvciBTaGFyZWFibGVCaXRtYXAuCiAgICAgbV9jb250cm9sbGVkSW1hZ2Ug
PSBTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZVNoYXJlYWJsZShJbnRTaXplKGltYWdlLT5zaXplKCkp
LCBTaGFyZWFibGVCaXRtYXA6OlN1cHBvcnRzQWxwaGEpOwotICAgIG1fY29udHJvbGxlZEltYWdl
LT5jcmVhdGVHcmFwaGljc0NvbnRleHQoKS0+ZHJhd0ltYWdlKGltYWdlLCBDb2xvclNwYWNlRGV2
aWNlUkdCLCBJbnRQb2ludCgpKTsKKyAgICBtX2NvbnRyb2xsZWRJbWFnZS0+Y3JlYXRlR3JhcGhp
Y3NDb250ZXh0KCktPmRyYXdJbWFnZSgqaW1hZ2UsIENvbG9yU3BhY2VEZXZpY2VSR0IsIEludFBv
aW50KCkpOwogI2VuZGlmCiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9X
ZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkNvcmVB
cmd1bWVudENvZGVycy5jcHAKaW5kZXggNzFkYzNkNGU1MWYyYWRjNWFhZmEwZjIzMDUwMDFhYjhh
NGU4ZDllZi4uZGQ2ZTU3N2UyY2Q0NWEzOTZlZGNmMTRkNmU2ZTY3YzVmODlmZmRhZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAKKysr
IGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAKQEAgLTcy
MSw5ICs3MjEsOSBAQCBib29sIEFyZ3VtZW50Q29kZXI8Q3JlZGVudGlhbD46OmRlY29kZShBcmd1
bWVudERlY29kZXImIGRlY29kZXIsIENyZWRlbnRpYWwmIGNyZQogICAgIHJldHVybiB0cnVlOwog
fQogCi1zdGF0aWMgdm9pZCBlbmNvZGVJbWFnZShBcmd1bWVudEVuY29kZXImIGVuY29kZXIsIElt
YWdlKiBpbWFnZSkKK3N0YXRpYyB2b2lkIGVuY29kZUltYWdlKEFyZ3VtZW50RW5jb2RlciYgZW5j
b2RlciwgSW1hZ2UmIGltYWdlKQogewotICAgIFJlZlB0cjxTaGFyZWFibGVCaXRtYXA+IGJpdG1h
cCA9IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlU2hhcmVhYmxlKEludFNpemUoaW1hZ2UtPnNpemUo
KSksIFNoYXJlYWJsZUJpdG1hcDo6U3VwcG9ydHNBbHBoYSk7CisgICAgUmVmUHRyPFNoYXJlYWJs
ZUJpdG1hcD4gYml0bWFwID0gU2hhcmVhYmxlQml0bWFwOjpjcmVhdGVTaGFyZWFibGUoSW50U2l6
ZShpbWFnZS5zaXplKCkpLCBTaGFyZWFibGVCaXRtYXA6OlN1cHBvcnRzQWxwaGEpOwogICAgIGJp
dG1hcC0+Y3JlYXRlR3JhcGhpY3NDb250ZXh0KCktPmRyYXdJbWFnZShpbWFnZSwgQ29sb3JTcGFj
ZURldmljZVJHQiwgSW50UG9pbnQoKSk7CiAKICAgICBTaGFyZWFibGVCaXRtYXA6OkhhbmRsZSBo
YW5kbGU7CkBAIC03NTMsNyArNzUzLDcgQEAgc3RhdGljIHZvaWQgZW5jb2RlT3B0aW9uYWxJbWFn
ZShBcmd1bWVudEVuY29kZXImIGVuY29kZXIsIEltYWdlKiBpbWFnZSkKICAgICBlbmNvZGVyIDw8
IGhhc0ltYWdlOwogCiAgICAgaWYgKGhhc0ltYWdlKQotICAgICAgICBlbmNvZGVJbWFnZShlbmNv
ZGVyLCBpbWFnZSk7CisgICAgICAgIGVuY29kZUltYWdlKGVuY29kZXIsICppbWFnZSk7CiB9CiAK
IHN0YXRpYyBib29sIGRlY29kZU9wdGlvbmFsSW1hZ2UoQXJndW1lbnREZWNvZGVyJiBkZWNvZGVy
LCBSZWZQdHI8SW1hZ2U+JiBpbWFnZSkKQEAgLTc4NCw3ICs3ODQsNyBAQCB2b2lkIEFyZ3VtZW50
Q29kZXI8Q3Vyc29yPjo6ZW5jb2RlKEFyZ3VtZW50RW5jb2RlciYgZW5jb2RlciwgY29uc3QgQ3Vy
c29yJiBjdXJzbwogICAgIH0KIAogICAgIGVuY29kZXIgPDwgdHJ1ZTsKLSAgICBlbmNvZGVJbWFn
ZShlbmNvZGVyLCBjdXJzb3IuaW1hZ2UoKSk7CisgICAgZW5jb2RlSW1hZ2UoZW5jb2RlciwgKmN1
cnNvci5pbWFnZSgpKTsKICAgICBlbmNvZGVyIDw8IGN1cnNvci5ob3RTcG90KCk7CiAjaWYgRU5B
QkxFKE1PVVNFX0NVUlNPUl9TQ0FMRSkKICAgICBlbmNvZGVyIDw8IGN1cnNvci5pbWFnZVNjYWxl
RmFjdG9yKCk7CkBAIC0xMjUzLDcgKzEyNTMsNyBAQCBib29sIEFyZ3VtZW50Q29kZXI8UGFzdGVi
b2FyZFdlYkNvbnRlbnQ+OjpkZWNvZGUoQXJndW1lbnREZWNvZGVyJiBkZWNvZGVyLCBQYXN0ZQog
CiB2b2lkIEFyZ3VtZW50Q29kZXI8UGFzdGVib2FyZEltYWdlPjo6ZW5jb2RlKEFyZ3VtZW50RW5j
b2RlciYgZW5jb2RlciwgY29uc3QgUGFzdGVib2FyZEltYWdlJiBwYXN0ZWJvYXJkSW1hZ2UpCiB7
Ci0gICAgZW5jb2RlSW1hZ2UoZW5jb2RlciwgcGFzdGVib2FyZEltYWdlLmltYWdlLmdldCgpKTsK
KyAgICBlbmNvZGVPcHRpb25hbEltYWdlKGVuY29kZXIsIHBhc3RlYm9hcmRJbWFnZS5pbWFnZS5n
ZXQoKSk7CiAgICAgZW5jb2RlciA8PCBwYXN0ZWJvYXJkSW1hZ2UudXJsLnVybDsKICAgICBlbmNv
ZGVyIDw8IHBhc3RlYm9hcmRJbWFnZS51cmwudGl0bGU7CiAgICAgZW5jb2RlciA8PCBwYXN0ZWJv
YXJkSW1hZ2UucmVzb3VyY2VNSU1FVHlwZTsKQEAgLTEyNjMsNyArMTI2Myw3IEBAIHZvaWQgQXJn
dW1lbnRDb2RlcjxQYXN0ZWJvYXJkSW1hZ2U+OjplbmNvZGUoQXJndW1lbnRFbmNvZGVyJiBlbmNv
ZGVyLCBjb25zdCBQYXN0CiAKIGJvb2wgQXJndW1lbnRDb2RlcjxQYXN0ZWJvYXJkSW1hZ2U+Ojpk
ZWNvZGUoQXJndW1lbnREZWNvZGVyJiBkZWNvZGVyLCBQYXN0ZWJvYXJkSW1hZ2UmIHBhc3RlYm9h
cmRJbWFnZSkKIHsKLSAgICBpZiAoIWRlY29kZUltYWdlKGRlY29kZXIsIHBhc3RlYm9hcmRJbWFn
ZS5pbWFnZSkpCisgICAgaWYgKCFkZWNvZGVPcHRpb25hbEltYWdlKGRlY29kZXIsIHBhc3RlYm9h
cmRJbWFnZS5pbWFnZSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBpZiAoIWRlY29kZXIu
ZGVjb2RlKHBhc3RlYm9hcmRJbWFnZS51cmwudXJsKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNw
cCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHAKaW5kZXgg
Y2NjYjhiNmFkZDQ2OTk3M2JkZTQ1NjZiZTg2OTE0N2Y4ZjA4NjhhNC4uZjgwMGMyMmZjZjUyYzdi
MzY2NjgxNGRkYTI2Yjc0NDJhMWM2NDBiNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwCkBAIC04MzgsNyArODM4LDcgQEAgUGFzc1JlZlB0cjxT
aGFyZWFibGVCaXRtYXA+IFdlYkZyYW1lOjpjcmVhdGVTZWxlY3Rpb25TbmFwc2hvdCgpIGNvbnN0
CiAgICAgYXV0byBncmFwaGljc0NvbnRleHQgPSBzaGFyZWRTbmFwc2hvdC0+Y3JlYXRlR3JhcGhp
Y3NDb250ZXh0KCk7CiAgICAgZmxvYXQgZGV2aWNlU2NhbGVGYWN0b3IgPSBjb3JlRnJhbWUoKS0+
cGFnZSgpLT5kZXZpY2VTY2FsZUZhY3RvcigpOwogICAgIGdyYXBoaWNzQ29udGV4dC0+c2NhbGUo
RmxvYXRTaXplKGRldmljZVNjYWxlRmFjdG9yLCBkZXZpY2VTY2FsZUZhY3RvcikpOwotICAgIGdy
YXBoaWNzQ29udGV4dC0+ZHJhd0ltYWdlQnVmZmVyKHNuYXBzaG90LmdldCgpLCBDb2xvclNwYWNl
RGV2aWNlUkdCLCBGbG9hdFBvaW50KCkpOworICAgIGdyYXBoaWNzQ29udGV4dC0+ZHJhd0ltYWdl
QnVmZmVyKCpzbmFwc2hvdCwgQ29sb3JTcGFjZURldmljZVJHQiwgRmxvYXRQb2ludCgpKTsKIAog
ICAgIHJldHVybiBzaGFyZWRTbmFwc2hvdC5yZWxlYXNlKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL0ZpbmRDb250cm9sbGVySU9TLm1tIGIv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9GaW5kQ29udHJvbGxlcklPUy5t
bQppbmRleCBjZTUyMjIxNzIxZjQ0MmI2NjcwZDJlYTBlOGViMDU5YTM1MmI1OTI1Li5kYmEyZDA1
OGNhNTkyNWMxMDhkMDNmOWY2ZWQ1OTgwYmMxMGE2ZDQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL0ZpbmRDb250cm9sbGVySU9TLm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvRmluZENvbnRyb2xsZXJJT1MubW0K
QEAgLTgzLDcgKzgzLDcgQEAgdm9pZCBGaW5kSW5kaWNhdG9yT3ZlcmxheUNsaWVudElPUzo6ZHJh
d1JlY3QoUGFnZU92ZXJsYXkmIG92ZXJsYXksIEdyYXBoaWNzQ29udGUKICAgICBmb3IgKGNvbnN0
IGF1dG8mIHBhdGggOiBwYXRocykKICAgICAgICAgY29udGV4dC5maWxsUGF0aChwYXRoKTsKIAot
ICAgIGNvbnRleHQuZHJhd0ltYWdlKGluZGljYXRvckltYWdlLCBDb2xvclNwYWNlRGV2aWNlUkdC
LCBvdmVybGF5LmJvdW5kcygpKTsKKyAgICBjb250ZXh0LmRyYXdJbWFnZSgqaW5kaWNhdG9ySW1h
Z2UsIENvbG9yU3BhY2VEZXZpY2VSR0IsIG92ZXJsYXkuYm91bmRzKCkpOwogfQogCiBib29sIEZp
bmRDb250cm9sbGVyOjp1cGRhdGVGaW5kSW5kaWNhdG9yKEZyYW1lJiBzZWxlY3RlZEZyYW1lLCBi
b29sIGlzU2hvd2luZ092ZXJsYXksIGJvb2wgc2hvdWxkQW5pbWF0ZSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbSBiL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbQppbmRleCBiMzBi
NTRmNTIzOGUwZjYwM2I2NGFhZTYwMzZjOWJkOThjNzZmNmYxLi4yZGNhZmUxZDNjMDM0NWNlNGY2
Yzk5NmYyMGY3ZDQwN2JlNzhlMDUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0KKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCkBAIC0yMjE4LDcgKzIyMTgsNyBAQCB2b2lk
IFdlYlBhZ2U6OmdldFBvc2l0aW9uSW5mb3JtYXRpb24oY29uc3QgSW50UG9pbnQmIHBvaW50LCBJ
bnRlcmFjdGlvbkluZm9ybWF0aQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGbG9h
dFNpemUgYml0bWFwU2l6ZSA9IHNjYWxlZFNpemUud2lkdGgoKSA8IGltYWdlLT5zaXplKCkud2lk
dGgoKSA/IHNjYWxlZFNpemUgOiBpbWFnZS0+c2l6ZSgpOwogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBpZiAoUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4gc2hhcmVkQml0bWFwID0gU2hh
cmVhYmxlQml0bWFwOjpjcmVhdGVTaGFyZWFibGUoSW50U2l6ZShiaXRtYXBTaXplKSwgU2hhcmVh
YmxlQml0bWFwOjpTdXBwb3J0c0FscGhhKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgYXV0byBncmFwaGljc0NvbnRleHQgPSBzaGFyZWRCaXRtYXAtPmNyZWF0ZUdyYXBo
aWNzQ29udGV4dCgpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JhcGhp
Y3NDb250ZXh0LT5kcmF3SW1hZ2UoaW1hZ2UsIENvbG9yU3BhY2VEZXZpY2VSR0IsIEZsb2F0UmVj
dCgwLCAwLCBiaXRtYXBTaXplLndpZHRoKCksIGJpdG1hcFNpemUuaGVpZ2h0KCkpKTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdyYXBoaWNzQ29udGV4dC0+ZHJhd0ltYWdl
KCppbWFnZSwgQ29sb3JTcGFjZURldmljZVJHQiwgRmxvYXRSZWN0KDAsIDAsIGJpdG1hcFNpemUu
d2lkdGgoKSwgYml0bWFwU2l6ZS5oZWlnaHQoKSkpOwogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgaW5mby5pbWFnZSA9IHNoYXJlZEJpdG1hcDsKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>263078</attachid>
            <date>2015-10-14 08:43:12 -0700</date>
            <delta_ts>2015-10-14 10:45:34 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-150108-20151014084235.patch</filename>
            <type>text/plain</type>
            <size>102986</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTkxMDE3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDc1YTMwZTUzMWQwNjcz
MTZmYjZiYjJmNDc3YzM5MWVmOTNmMDYwZC4uMGZhZTc4N2UyNjJhM2RmYzYzZjk5YWE4NmE0ZWY3
ZmJlYzk3MDViZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDEzMSBAQAogMjAxNS0xMC0xMyAgU2lt
b24gRnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KIAorICAgICAgICBDaGFuZ2UgR3Jh
cGhpY3NDb250ZXh0IGltYWdlLWRyYXdpbmcgZnVuY3Rpb25zIHRvIHRha2UgcmVmZXJlbmNlcwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUwMTA4CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgVGltIEhvcnRvbi4KKworICAgICAgICBDaGFuZ2UgR3JhcGhp
Y3NDb250ZXh0OjpkcmF3SW1hZ2UoKSwgZHJhd1RpbGVkSW1hZ2UoKSwgZHJhd0ltYWdlQnVmZmVy
KCksIGNsaXBUb0ltYWdlQnVmZmVyKCkKKyAgICAgICAgYW5kIGlzQ29tcGF0aWJsZVdpdGhCdWZm
ZXIoKSB0byB0YWtlIHJlZmVyZW5jZXMsIGFuZCBhZGp1c3QgY2FsbGluZyBjb2RlLCBhZGRpbmcK
KyAgICAgICAgbnVsbC1jaGVja3Mgd2hlcmUgbmVjZXNzYXJ5LgorICAgICAgICAKKyAgICAgICAg
Tm8gYmVoYXZpb3IgY2hhbmdlLgorCisgICAgICAgICogY3NzL0NTU0Nyb3NzZmFkZVZhbHVlLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU0Nyb3NzZmFkZVZhbHVlOjppbWFnZSk6CisgICAgICAg
ICogY3NzL0NTU0ZpbHRlckltYWdlVmFsdWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTRmls
dGVySW1hZ2VWYWx1ZTo6aW1hZ2UpOgorICAgICAgICAqIGh0bWwvSFRNTENhbnZhc0VsZW1lbnQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTENhbnZhc0VsZW1lbnQ6OnBhaW50KToKKyAgICAg
ICAgKiBodG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpkcmF3SW1hZ2UpOgorICAgICAgICAo
V2ViQ29yZTo6Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpjb21wb3NpdGVCdWZmZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6ZHJhd0ltYWdlVG9Db250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkNh
bnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6ZnVsbENhbnZhc0NvbXBvc2l0ZWREcmF3SW1hZ2UpOgor
ICAgICAgICAoV2ViQ29yZTo6Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpkcmF3VGV4dEludGVy
bmFsKToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuaDoK
KyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTDJSZW5kZXJpbmdDb250ZXh0LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OldlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OnRleFN1YkltYWdlMkQpOgorICAg
ICAgICAqIGh0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnRleFN1YkltYWdlMkQpOgorICAgICAgICAq
IGh0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6ZHJhd0ltYWdlSW50b0J1ZmZlcik6Cisg
ICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp0ZXhJbWFnZTJEKToK
KyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmg6CisgICAg
ICAgICogcGxhdGZvcm0vU2Nyb2xsVmlldy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxW
aWV3OjpwYWludFBhblNjcm9sbEljb24pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0Ny
b3NzZmFkZUdlbmVyYXRlZEltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNyb3NzZmFkZUdl
bmVyYXRlZEltYWdlOjpDcm9zc2ZhZGVHZW5lcmF0ZWRJbWFnZSk6CisgICAgICAgIChXZWJDb3Jl
OjpkcmF3Q3Jvc3NmYWRlU3ViaW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6Q3Jvc3NmYWRlR2Vu
ZXJhdGVkSW1hZ2U6OmRyYXdDcm9zc2ZhZGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L0Nyb3NzZmFkZUdlbmVyYXRlZEltYWdlLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
R3JhZGllbnRJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFkaWVudEltYWdlOjpkcmF3
UGF0dGVybik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6ZHJhd0ltYWdlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6ZHJhd1RpbGVkSW1hZ2UpOgorICAgICAgICAo
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpkcmF3SW1hZ2VCdWZmZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6R3JhcGhpY3NDb250ZXh0OjpjbGlwVG9JbWFnZUJ1ZmZlcik6CisgICAgICAgIChXZWJD
b3JlOjpHcmFwaGljc0NvbnRleHQ6OmlzQ29tcGF0aWJsZVdpdGhCdWZmZXIpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL1NoYWRvd0JsdXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2hhZG93Qmx1cjo6
ZHJhd1NoYWRvd0J1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpTaGFkb3dCbHVyOjpkcmF3UmVj
dFNoYWRvd1dpdGhvdXRUaWxpbmcpOgorICAgICAgICAoV2ViQ29yZTo6U2hhZG93Qmx1cjo6ZHJh
d0luc2V0U2hhZG93V2l0aG91dFRpbGluZyk6CisgICAgICAgIChXZWJDb3JlOjpTaGFkb3dCbHVy
OjpkcmF3SW5zZXRTaGFkb3dXaXRoVGlsaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlNoYWRvd0Js
dXI6OmRyYXdSZWN0U2hhZG93V2l0aFRpbGluZyk6CisgICAgICAgIChXZWJDb3JlOjpTaGFkb3dC
bHVyOjpkcmF3TGF5ZXJQaWVjZXMpOgorICAgICAgICAoV2ViQ29yZTo6U2hhZG93Qmx1cjo6ZW5k
U2hhZG93TGF5ZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVm
ZmVyQ2Fpcm8uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXI6OmRyYXcpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL1BERkRvY3VtZW50SW1hZ2UuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6UERGRG9jdW1lbnRJbWFnZTo6ZHJhdyk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvZmlsdGVycy9GRUJsZW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZFQmxlbmQ6
OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmls
dGVycy9GRUNvbG9yTWF0cml4LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZFQ29sb3JNYXRyaXg6
OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmls
dGVycy9GRUNvbXBvc2l0ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGRUNvbXBvc2l0ZTo6cGxh
dGZvcm1BcHBseVNvZnR3YXJlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJz
L0ZFRHJvcFNoYWRvdy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGRURyb3BTaGFkb3c6OnBsYXRm
b3JtQXBwbHlTb2Z0d2FyZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9G
RU1lcmdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZFTWVyZ2U6OnBsYXRmb3JtQXBwbHlTb2Z0
d2FyZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRU9mZnNldC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpGRU9mZnNldDo6cGxhdGZvcm1BcHBseVNvZnR3YXJlKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFVGlsZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpGRVRpbGU6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZSk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvZmlsdGVycy9Tb3VyY2VBbHBoYS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpT
b3VyY2VBbHBoYTo6cGxhdGZvcm1BcHBseVNvZnR3YXJlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9maWx0ZXJzL1NvdXJjZUdyYXBoaWMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U291
cmNlR3JhcGhpYzo6cGxhdGZvcm1BcHBseVNvZnR3YXJlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9t
YWMvVGhlbWVNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpUaGVtZU1hYzo6ZHJhd0NlbGxPckZv
Y3VzUmluZ1dpdGhWaWV3SW50b0NvbnRleHQpOgorICAgICAgICAqIHJlbmRlcmluZy9GaWx0ZXJF
ZmZlY3RSZW5kZXJlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGaWx0ZXJFZmZlY3RSZW5kZXJl
ckhlbHBlcjo6YXBwbHlGaWx0ZXJFZmZlY3QpOgorICAgICAgICAqIHJlbmRlcmluZy9JbWFnZVF1
YWxpdHlDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlUXVhbGl0eUNvbnRy
b2xsZXI6OnNob3VsZFBhaW50QXRMb3dRdWFsaXR5KToKKyAgICAgICAgKiByZW5kZXJpbmcvSW1h
Z2VRdWFsaXR5Q29udHJvbGxlci5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJCb3hNb2Rl
bE9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3hNb2RlbE9iamVjdDo6c2hv
dWxkUGFpbnRBdExvd1F1YWxpdHkpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94TW9kZWxP
YmplY3Q6OnBhaW50RmlsbExheWVyRXh0ZW5kZWQpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5k
ZXJCb3hNb2RlbE9iamVjdC5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJFbWJlZGRlZE9i
amVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJFbWJlZGRlZE9iamVjdDo6cGFpbnRT
bmFwc2hvdEltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckVtYmVkZGVkT2JqZWN0Ojpw
YWludENvbnRlbnRzKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyRW1iZWRkZWRPYmplY3Qu
aDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVySW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVySW1hZ2U6OnBhaW50UmVwbGFjZWQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
SW1hZ2U6OnBhaW50SW50b1JlY3QpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJJbWFnZVJl
c291cmNlU3R5bGVJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJJbWFnZVJlc291
cmNlU3R5bGVJbWFnZTo6c2h1dGRvd24pOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVySW1hZ2VS
ZXNvdXJjZVN0eWxlSW1hZ2U6OmltYWdlKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OmRyYXdQbGF0Zm9ybVJlc2l6
ZXJJbWFnZSk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxpc3RNYXJrZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyTGlzdE1hcmtlcjo6cGFpbnQpOgorICAgICAgICAqIHJlbmRl
cmluZy9SZW5kZXJTbmFwc2hvdHRlZFBsdWdJbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJTbmFwc2hvdHRlZFBsdWdJbjo6cGFpbnRTbmFwc2hvdCk6CisgICAgICAgICogcmVuZGVyaW5n
L1JlbmRlclRoZW1lTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVNYWM6OnBh
aW50UHJvZ3Jlc3NCYXIpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVNYWM6OnBhaW50
U25hcHNob3R0ZWRQbHVnaW5PdmVybGF5KToKKyAgICAgICAgKiByZW5kZXJpbmcvc2hhcGVzL1No
YXBlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNoYXBlOjpjcmVhdGVSYXN0ZXJTaGFwZSk6Cisg
ICAgICAgICogcmVuZGVyaW5nL3NoYXBlcy9TaGFwZU91dHNpZGVJbmZvLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlNoYXBlT3V0c2lkZUluZm86OmNyZWF0ZVNoYXBlRm9ySW1hZ2UpOiBEZWxldGVk
LgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9OaW5lUGllY2VJbWFnZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpOaW5lUGllY2VJbWFnZTo6cGFpbnQpOgorICAgICAgICAqIHJlbmRlcmluZy9z
dmcvUmVuZGVyU1ZHSW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHSW1hZ2U6
OnBhaW50Rm9yZWdyb3VuZCk6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNv
dXJjZUZpbHRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdSZXNvdXJjZUZpbHRl
cjo6cG9zdEFwcGx5UmVzb3VyY2UpOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvU1ZHUmVuZGVy
aW5nQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdSZW5kZXJpbmdDb250ZXh0Ojpj
bGlwVG9JbWFnZUJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpTVkdSZW5kZXJpbmdDb250ZXh0
OjpidWZmZXJGb3JlZ3JvdW5kKToKKyAgICAgICAgKiBzdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdG
RUltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZFSW1hZ2U6OnBsYXRmb3JtQXBwbHlTb2Z0
d2FyZSk6CisKKzIwMTUtMTAtMTMgIFNpbW9uIEZyYXNlciAgPHNpbW9uLmZyYXNlckBhcHBsZS5j
b20+CisKICAgICAgICAgQWRkIGhlbHBlciBmdW50aW9uIGZvciBjaGVja2luZyBwb2ludGVyIGVx
dWl2YWxlbmN5IGFuZCB1c2UgaXQKICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE1MDAyMgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VM
b2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggYzJmOWExNGNmZDgyNjI3MTgyODhm
OGEwOGJkYTkzZWQyODMwMzFjNS4uZmFhMTE4ZGE4NGZjMjMxZmI1Mzk4OTg4MWE5ZTI3OTkxYjMw
YTQyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIzIEBACisyMDE1LTEwLTEzICBTaW1vbiBGcmFz
ZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgorCisgICAgICAgIENoYW5nZSBHcmFwaGljc0Nv
bnRleHQgaW1hZ2UtZHJhd2luZyBmdW5jdGlvbnMgdG8gdGFrZSByZWZlcmVuY2VzCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTAxMDgKKworICAgICAg
ICBSZXZpZXdlZCBieSBUaW0gSG9ydG9uLgorCisgICAgICAgIENoYW5nZSBHcmFwaGljc0NvbnRl
eHQ6OmRyYXdJbWFnZSgpLCBkcmF3VGlsZWRJbWFnZSgpLCBkcmF3SW1hZ2VCdWZmZXIoKSwgY2xp
cFRvSW1hZ2VCdWZmZXIoKQorICAgICAgICBhbmQgaXNDb21wYXRpYmxlV2l0aEJ1ZmZlcigpIHRv
IHRha2UgcmVmZXJlbmNlcywgYW5kIGFkanVzdCBjYWxsaW5nIGNvZGUsIGFkZGluZworICAgICAg
ICBudWxsLWNoZWNrcyB3aGVyZSBuZWNlc3NhcnkuCisKKyAgICAgICAgKiBTaGFyZWQvQ29udGV4
dE1lbnVDb250ZXh0RGF0YS5jcHA6CisgICAgICAgIChXZWJLaXQ6OkNvbnRleHRNZW51Q29udGV4
dERhdGE6OkNvbnRleHRNZW51Q29udGV4dERhdGEpOgorICAgICAgICAqIFNoYXJlZC9XZWJDb3Jl
QXJndW1lbnRDb2RlcnMuY3BwOgorICAgICAgICAoSVBDOjplbmNvZGVJbWFnZSk6CisgICAgICAg
IChJUEM6OmVuY29kZU9wdGlvbmFsSW1hZ2UpOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVy
PEN1cnNvcj46OmVuY29kZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1l
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWU6OmNyZWF0ZVNlbGVjdGlvblNuYXBzaG90
KToKKwogMjAxNS0xMC0xMyAgTXlsZXMgQy4gTWF4ZmllbGQgIDxtbWF4ZmllbGRAYXBwbGUuY29t
PgogCiAgICAgICAgIFNwbGl0IFR5cGVzZXR0aW5nRmVhdHVyZXMgaW50byBrZXJuaW5nIGFuZCBs
aWdhdHVyZXMgYm9vbHMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDcm9zc2Zh
ZGVWYWx1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ3Jvc3NmYWRlVmFsdWUuY3BwCmlu
ZGV4IDNjNzE3Y2IxNWM4OThhM2M1MDRlZDY0NjI3NzM1NzQ5MjVkNzc5OTguLjA3MzUwOGIwYTY3
ZDlmNTQ4ZjgwNGYzZjQzYTU2YTVhYmUxYmE4NzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NDcm9zc2ZhZGVWYWx1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0Ny
b3NzZmFkZVZhbHVlLmNwcApAQCAtMTY1LDcgKzE2NSw3IEBAIFJlZlB0cjxJbWFnZT4gQ1NTQ3Jv
c3NmYWRlVmFsdWU6OmltYWdlKFJlbmRlckVsZW1lbnQqIHJlbmRlcmVyLCBjb25zdCBGbG9hdFNp
emUmCiAgICAgaWYgKCFmcm9tSW1hZ2UgfHwgIXRvSW1hZ2UpCiAgICAgICAgIHJldHVybiBJbWFn
ZTo6bnVsbEltYWdlKCk7CiAKLSAgICBtX2dlbmVyYXRlZEltYWdlID0gQ3Jvc3NmYWRlR2VuZXJh
dGVkSW1hZ2U6OmNyZWF0ZShmcm9tSW1hZ2UsIHRvSW1hZ2UsIG1fcGVyY2VudGFnZVZhbHVlLT5n
ZXRGbG9hdFZhbHVlKCksIGZpeGVkU2l6ZShyZW5kZXJlciksIHNpemUpOworICAgIG1fZ2VuZXJh
dGVkSW1hZ2UgPSBDcm9zc2ZhZGVHZW5lcmF0ZWRJbWFnZTo6Y3JlYXRlKCpmcm9tSW1hZ2UsICp0
b0ltYWdlLCBtX3BlcmNlbnRhZ2VWYWx1ZS0+Z2V0RmxvYXRWYWx1ZSgpLCBmaXhlZFNpemUocmVu
ZGVyZXIpLCBzaXplKTsKIAogICAgIHJldHVybiBtX2dlbmVyYXRlZEltYWdlOwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZpbHRlckltYWdlVmFsdWUuY3BwIGIvU291cmNl
L1dlYkNvcmUvY3NzL0NTU0ZpbHRlckltYWdlVmFsdWUuY3BwCmluZGV4IDdmZmY0YzQ5ODk0ZWQy
ZTQ0NWQ0MTA0MWRkN2Q0N2QyYTVmNGRlODIuLmJlNzVkYzZlZjY2ZjEwYTQ4OWJkMjg0NmM2OTI0
Yzc3MjYwNjAyM2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGaWx0ZXJJbWFn
ZVZhbHVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRmlsdGVySW1hZ2VWYWx1ZS5j
cHAKQEAgLTEyNCw4ICsxMjQsOSBAQCBSZWZQdHI8SW1hZ2U+IENTU0ZpbHRlckltYWdlVmFsdWU6
OmltYWdlKFJlbmRlckVsZW1lbnQqIHJlbmRlcmVyLCBjb25zdCBGbG9hdFNpegogICAgIHN0ZDo6
dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4gdGV4dHVyZSA9IEltYWdlQnVmZmVyOjpjcmVhdGUoc2l6
ZSwgVW5hY2NlbGVyYXRlZCk7CiAgICAgaWYgKCF0ZXh0dXJlKQogICAgICAgICByZXR1cm4gSW1h
Z2U6Om51bGxJbWFnZSgpOworCiAgICAgRmxvYXRSZWN0IGltYWdlUmVjdCA9IEZsb2F0UmVjdChG
bG9hdFBvaW50KCksIHNpemUpOwotICAgIHRleHR1cmUtPmNvbnRleHQoKS5kcmF3SW1hZ2UoaW1h
Z2UsIENvbG9yU3BhY2VEZXZpY2VSR0IsIGltYWdlUmVjdCk7CisgICAgdGV4dHVyZS0+Y29udGV4
dCgpLmRyYXdJbWFnZSgqaW1hZ2UsIENvbG9yU3BhY2VEZXZpY2VSR0IsIGltYWdlUmVjdCk7CiAK
ICAgICBSZWZQdHI8RmlsdGVyRWZmZWN0UmVuZGVyZXI+IGZpbHRlclJlbmRlcmVyID0gRmlsdGVy
RWZmZWN0UmVuZGVyZXI6OmNyZWF0ZSgpOwogICAgIGZpbHRlclJlbmRlcmVyLT5zZXRTb3VyY2VJ
bWFnZShXVEY6Om1vdmUodGV4dHVyZSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MQ2FudmFzRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxDYW52YXNF
bGVtZW50LmNwcAppbmRleCAwM2VjN2RmOTg5MzFhMzQyMWRlYmViYzRkYzBkMTU0YWE5NzJhODRj
Li41NzI0YzFhYTJhN2ZkYWJjYmEwNDYwNmMyNWEzMzQ5ZTI0MWIzMWExIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxDYW52YXNFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxDYW52YXNFbGVtZW50LmNwcApAQCAtMzg4LDkgKzM4OCw5IEBAIHZvaWQg
SFRNTENhbnZhc0VsZW1lbnQ6OnBhaW50KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3Qg
TGF5b3V0UmVjdCYgciwgYm9vCiAjaWYgRU5BQkxFKENTU19JTUFHRV9PUklFTlRBVElPTikKICAg
ICAgICAgICAgICAgICBvcmllbnRhdGlvbkRlc2NyaXB0aW9uLnNldEltYWdlT3JpZW50YXRpb25F
bnVtKHJlbmRlcmVyKCktPnN0eWxlKCkuaW1hZ2VPcmllbnRhdGlvbigpKTsKICNlbmRpZiAKLSAg
ICAgICAgICAgICAgICBjb250ZXh0LmRyYXdJbWFnZShtX3ByZXNlbnRlZEltYWdlLmdldCgpLCBD
b2xvclNwYWNlRGV2aWNlUkdCLCBzbmFwcGVkSW50UmVjdChyKSwgSW1hZ2VQYWludGluZ09wdGlv
bnMob3JpZW50YXRpb25EZXNjcmlwdGlvbiwgdXNlTG93UXVhbGl0eVNjYWxlKSk7CisgICAgICAg
ICAgICAgICAgY29udGV4dC5kcmF3SW1hZ2UoKm1fcHJlc2VudGVkSW1hZ2UsIENvbG9yU3BhY2VE
ZXZpY2VSR0IsIHNuYXBwZWRJbnRSZWN0KHIpLCBJbWFnZVBhaW50aW5nT3B0aW9ucyhvcmllbnRh
dGlvbkRlc2NyaXB0aW9uLCB1c2VMb3dRdWFsaXR5U2NhbGUpKTsKICAgICAgICAgICAgIH0gZWxz
ZQotICAgICAgICAgICAgICAgIGNvbnRleHQuZHJhd0ltYWdlQnVmZmVyKGltYWdlQnVmZmVyLCBD
b2xvclNwYWNlRGV2aWNlUkdCLCBzbmFwcGVkSW50UmVjdChyKSwgdXNlTG93UXVhbGl0eVNjYWxl
KTsKKyAgICAgICAgICAgICAgICBjb250ZXh0LmRyYXdJbWFnZUJ1ZmZlcigqaW1hZ2VCdWZmZXIs
IENvbG9yU3BhY2VEZXZpY2VSR0IsIHNuYXBwZWRJbnRSZWN0KHIpLCB1c2VMb3dRdWFsaXR5U2Nh
bGUpOwogICAgICAgICB9CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcAppbmRleCBiNDAxNWVmZjQ3MmU4
NGU5MjliNTM5MTU1Mzk1ZDRiNWNjZTVmYjUxLi5iMTlkOWUwZGM3MDNkNTU1M2Y3MzI2MjEzM2My
MGM5NGY2MjhjNzlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52
YXNSZW5kZXJpbmdDb250ZXh0MkQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFz
L0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHAKQEAgLTE0NDgsMTcgKzE0NDgsMTcgQEAgdm9p
ZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmRyYXdJbWFnZShIVE1MSW1hZ2VFbGVtZW50KiBp
bWFnZUVsZW1lbnQsIGNvbnN0IEYKICAgICB9CiAKICAgICBpZiAocmVjdENvbnRhaW5zQ2FudmFz
KG5vcm1hbGl6ZWREc3RSZWN0KSkgewotICAgICAgICBjLT5kcmF3SW1hZ2UoaW1hZ2UsIENvbG9y
U3BhY2VEZXZpY2VSR0IsIG5vcm1hbGl6ZWREc3RSZWN0LCBub3JtYWxpemVkU3JjUmVjdCwgSW1h
Z2VQYWludGluZ09wdGlvbnMob3AsIGJsZW5kTW9kZSkpOworICAgICAgICBjLT5kcmF3SW1hZ2Uo
KmltYWdlLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBub3JtYWxpemVkRHN0UmVjdCwgbm9ybWFsaXpl
ZFNyY1JlY3QsIEltYWdlUGFpbnRpbmdPcHRpb25zKG9wLCBibGVuZE1vZGUpKTsKICAgICAgICAg
ZGlkRHJhd0VudGlyZUNhbnZhcygpOwogICAgIH0gZWxzZSBpZiAoaXNGdWxsQ2FudmFzQ29tcG9z
aXRlTW9kZShvcCkpIHsKLSAgICAgICAgZnVsbENhbnZhc0NvbXBvc2l0ZWREcmF3SW1hZ2UoaW1h
Z2UsIENvbG9yU3BhY2VEZXZpY2VSR0IsIG5vcm1hbGl6ZWREc3RSZWN0LCBub3JtYWxpemVkU3Jj
UmVjdCwgb3ApOworICAgICAgICBmdWxsQ2FudmFzQ29tcG9zaXRlZERyYXdJbWFnZSgqaW1hZ2Us
IENvbG9yU3BhY2VEZXZpY2VSR0IsIG5vcm1hbGl6ZWREc3RSZWN0LCBub3JtYWxpemVkU3JjUmVj
dCwgb3ApOwogICAgICAgICBkaWREcmF3RW50aXJlQ2FudmFzKCk7CiAgICAgfSBlbHNlIGlmIChv
cCA9PSBDb21wb3NpdGVDb3B5KSB7CiAgICAgICAgIGNsZWFyQ2FudmFzKCk7Ci0gICAgICAgIGMt
PmRyYXdJbWFnZShpbWFnZSwgQ29sb3JTcGFjZURldmljZVJHQiwgbm9ybWFsaXplZERzdFJlY3Qs
IG5vcm1hbGl6ZWRTcmNSZWN0LCBJbWFnZVBhaW50aW5nT3B0aW9ucyhvcCwgYmxlbmRNb2RlKSk7
CisgICAgICAgIGMtPmRyYXdJbWFnZSgqaW1hZ2UsIENvbG9yU3BhY2VEZXZpY2VSR0IsIG5vcm1h
bGl6ZWREc3RSZWN0LCBub3JtYWxpemVkU3JjUmVjdCwgSW1hZ2VQYWludGluZ09wdGlvbnMob3As
IGJsZW5kTW9kZSkpOwogICAgICAgICBkaWREcmF3RW50aXJlQ2FudmFzKCk7CiAgICAgfSBlbHNl
IHsKLSAgICAgICAgYy0+ZHJhd0ltYWdlKGltYWdlLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBub3Jt
YWxpemVkRHN0UmVjdCwgbm9ybWFsaXplZFNyY1JlY3QsIEltYWdlUGFpbnRpbmdPcHRpb25zKG9w
LCBibGVuZE1vZGUpKTsKKyAgICAgICAgYy0+ZHJhd0ltYWdlKCppbWFnZSwgQ29sb3JTcGFjZURl
dmljZVJHQiwgbm9ybWFsaXplZERzdFJlY3QsIG5vcm1hbGl6ZWRTcmNSZWN0LCBJbWFnZVBhaW50
aW5nT3B0aW9ucyhvcCwgYmxlbmRNb2RlKSk7CiAgICAgICAgIGRpZERyYXcobm9ybWFsaXplZERz
dFJlY3QpOwogICAgIH0KICAgICAKQEAgLTE1MzYsMTcgKzE1MzYsMTcgQEAgdm9pZCBDYW52YXNS
ZW5kZXJpbmdDb250ZXh0MkQ6OmRyYXdJbWFnZShIVE1MQ2FudmFzRWxlbWVudCogc291cmNlQ2Fu
dmFzLCBjb25zdAogI2VuZGlmCiAKICAgICBpZiAocmVjdENvbnRhaW5zQ2FudmFzKGRzdFJlY3Qp
KSB7Ci0gICAgICAgIGMtPmRyYXdJbWFnZUJ1ZmZlcihidWZmZXIsIENvbG9yU3BhY2VEZXZpY2VS
R0IsIGRzdFJlY3QsIHNyY1JlY3QsIEltYWdlUGFpbnRpbmdPcHRpb25zKHN0YXRlKCkuZ2xvYmFs
Q29tcG9zaXRlLCBzdGF0ZSgpLmdsb2JhbEJsZW5kKSk7CisgICAgICAgIGMtPmRyYXdJbWFnZUJ1
ZmZlcigqYnVmZmVyLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBkc3RSZWN0LCBzcmNSZWN0LCBJbWFn
ZVBhaW50aW5nT3B0aW9ucyhzdGF0ZSgpLmdsb2JhbENvbXBvc2l0ZSwgc3RhdGUoKS5nbG9iYWxC
bGVuZCkpOwogICAgICAgICBkaWREcmF3RW50aXJlQ2FudmFzKCk7CiAgICAgfSBlbHNlIGlmIChp
c0Z1bGxDYW52YXNDb21wb3NpdGVNb2RlKHN0YXRlKCkuZ2xvYmFsQ29tcG9zaXRlKSkgewotICAg
ICAgICBmdWxsQ2FudmFzQ29tcG9zaXRlZERyYXdJbWFnZShidWZmZXIsIENvbG9yU3BhY2VEZXZp
Y2VSR0IsIGRzdFJlY3QsIHNyY1JlY3QsIHN0YXRlKCkuZ2xvYmFsQ29tcG9zaXRlKTsKKyAgICAg
ICAgZnVsbENhbnZhc0NvbXBvc2l0ZWREcmF3SW1hZ2UoKmJ1ZmZlciwgQ29sb3JTcGFjZURldmlj
ZVJHQiwgZHN0UmVjdCwgc3JjUmVjdCwgc3RhdGUoKS5nbG9iYWxDb21wb3NpdGUpOwogICAgICAg
ICBkaWREcmF3RW50aXJlQ2FudmFzKCk7CiAgICAgfSBlbHNlIGlmIChzdGF0ZSgpLmdsb2JhbENv
bXBvc2l0ZSA9PSBDb21wb3NpdGVDb3B5KSB7CiAgICAgICAgIGNsZWFyQ2FudmFzKCk7Ci0gICAg
ICAgIGMtPmRyYXdJbWFnZUJ1ZmZlcihidWZmZXIsIENvbG9yU3BhY2VEZXZpY2VSR0IsIGRzdFJl
Y3QsIHNyY1JlY3QsIEltYWdlUGFpbnRpbmdPcHRpb25zKHN0YXRlKCkuZ2xvYmFsQ29tcG9zaXRl
LCBzdGF0ZSgpLmdsb2JhbEJsZW5kKSk7CisgICAgICAgIGMtPmRyYXdJbWFnZUJ1ZmZlcigqYnVm
ZmVyLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBkc3RSZWN0LCBzcmNSZWN0LCBJbWFnZVBhaW50aW5n
T3B0aW9ucyhzdGF0ZSgpLmdsb2JhbENvbXBvc2l0ZSwgc3RhdGUoKS5nbG9iYWxCbGVuZCkpOwog
ICAgICAgICBkaWREcmF3RW50aXJlQ2FudmFzKCk7CiAgICAgfSBlbHNlIHsKLSAgICAgICAgYy0+
ZHJhd0ltYWdlQnVmZmVyKGJ1ZmZlciwgQ29sb3JTcGFjZURldmljZVJHQiwgZHN0UmVjdCwgc3Jj
UmVjdCwgSW1hZ2VQYWludGluZ09wdGlvbnMoc3RhdGUoKS5nbG9iYWxDb21wb3NpdGUsIHN0YXRl
KCkuZ2xvYmFsQmxlbmQpKTsKKyAgICAgICAgYy0+ZHJhd0ltYWdlQnVmZmVyKCpidWZmZXIsIENv
bG9yU3BhY2VEZXZpY2VSR0IsIGRzdFJlY3QsIHNyY1JlY3QsIEltYWdlUGFpbnRpbmdPcHRpb25z
KHN0YXRlKCkuZ2xvYmFsQ29tcG9zaXRlLCBzdGF0ZSgpLmdsb2JhbEJsZW5kKSk7CiAgICAgICAg
IGRpZERyYXcoZHN0UmVjdCk7CiAgICAgfQogfQpAQCAtMTcwOSw3ICsxNzA5LDcgQEAgc3RkOjp1
bmlxdWVfcHRyPEltYWdlQnVmZmVyPiBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmNyZWF0ZUNv
bXBvc2l0aW5nQnVmZmVyKGMKICAgICByZXR1cm4gSW1hZ2VCdWZmZXI6OmNyZWF0ZShidWZmZXJS
ZWN0LnNpemUoKSwgaXNBY2NlbGVyYXRlZCgpID8gQWNjZWxlcmF0ZWQgOiBVbmFjY2VsZXJhdGVk
KTsKIH0KIAotdm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmNvbXBvc2l0ZUJ1ZmZlcihJ
bWFnZUJ1ZmZlciogYnVmZmVyLCBjb25zdCBJbnRSZWN0JiBidWZmZXJSZWN0LCBDb21wb3NpdGVP
cGVyYXRvciBvcCkKK3ZvaWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpjb21wb3NpdGVCdWZm
ZXIoSW1hZ2VCdWZmZXImIGJ1ZmZlciwgY29uc3QgSW50UmVjdCYgYnVmZmVyUmVjdCwgQ29tcG9z
aXRlT3BlcmF0b3Igb3ApCiB7CiAgICAgSW50UmVjdCBjYW52YXNSZWN0KDAsIDAsIGNhbnZhcygp
LT53aWR0aCgpLCBjYW52YXMoKS0+aGVpZ2h0KCkpOwogICAgIGNhbnZhc1JlY3QgPSBjYW52YXMo
KS0+YmFzZVRyYW5zZm9ybSgpLm1hcFJlY3QoY2FudmFzUmVjdCk7CkBAIC0xNzMwLDE3ICsxNzMw
LDE3IEBAIHZvaWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpjb21wb3NpdGVCdWZmZXIoSW1h
Z2VCdWZmZXIqIGJ1ZmZlciwgY29uc3QgSW50UmVjCiAgICAgYy0+cmVzdG9yZSgpOwogfQogCi1z
dGF0aWMgdm9pZCBkcmF3SW1hZ2VUb0NvbnRleHQoSW1hZ2UqIGltYWdlLCBHcmFwaGljc0NvbnRl
eHQmIGNvbnRleHQsIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBjb25zdCBGbG9hdFJlY3Qm
IGRlc3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjLCBDb21wb3NpdGVPcGVyYXRvciBvcCkKK3N0YXRp
YyB2b2lkIGRyYXdJbWFnZVRvQ29udGV4dChJbWFnZSYgaW1hZ2UsIEdyYXBoaWNzQ29udGV4dCYg
Y29udGV4dCwgQ29sb3JTcGFjZSBzdHlsZUNvbG9yU3BhY2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVz
dCwgY29uc3QgRmxvYXRSZWN0JiBzcmMsIENvbXBvc2l0ZU9wZXJhdG9yIG9wKQogewogICAgIGNv
bnRleHQuZHJhd0ltYWdlKGltYWdlLCBzdHlsZUNvbG9yU3BhY2UsIGRlc3QsIHNyYywgb3ApOwog
fQogCi1zdGF0aWMgdm9pZCBkcmF3SW1hZ2VUb0NvbnRleHQoSW1hZ2VCdWZmZXIqIGltYWdlQnVm
ZmVyLCBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNl
LCBjb25zdCBGbG9hdFJlY3QmIGRlc3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjLCBDb21wb3NpdGVP
cGVyYXRvciBvcCkKK3N0YXRpYyB2b2lkIGRyYXdJbWFnZVRvQ29udGV4dChJbWFnZUJ1ZmZlciYg
aW1hZ2VCdWZmZXIsIEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgQ29sb3JTcGFjZSBzdHlsZUNv
bG9yU3BhY2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdCwgY29uc3QgRmxvYXRSZWN0JiBzcmMsIENv
bXBvc2l0ZU9wZXJhdG9yIG9wKQogewogICAgIGNvbnRleHQuZHJhd0ltYWdlQnVmZmVyKGltYWdl
QnVmZmVyLCBzdHlsZUNvbG9yU3BhY2UsIGRlc3QsIHNyYywgb3ApOwogfQogCi10ZW1wbGF0ZTxj
bGFzcyBUPiB2b2lkICBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmZ1bGxDYW52YXNDb21wb3Np
dGVkRHJhd0ltYWdlKFQqIGltYWdlLCBDb2xvclNwYWNlIHN0eWxlQ29sb3JTcGFjZSwgY29uc3Qg
RmxvYXRSZWN0JiBkZXN0LCBjb25zdCBGbG9hdFJlY3QmIHNyYywgQ29tcG9zaXRlT3BlcmF0b3Ig
b3ApCit0ZW1wbGF0ZTxjbGFzcyBUPiB2b2lkICBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmZ1
bGxDYW52YXNDb21wb3NpdGVkRHJhd0ltYWdlKFQmIGltYWdlLCBDb2xvclNwYWNlIHN0eWxlQ29s
b3JTcGFjZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0LCBjb25zdCBGbG9hdFJlY3QmIHNyYywgQ29t
cG9zaXRlT3BlcmF0b3Igb3ApCiB7CiAgICAgQVNTRVJUKGlzRnVsbENhbnZhc0NvbXBvc2l0ZU1v
ZGUob3ApKTsKIApAQCAtMTc2OCw3ICsxNzY4LDcgQEAgdGVtcGxhdGU8Y2xhc3MgVD4gdm9pZCAg
Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpmdWxsQ2FudmFzQ29tcG9zaXRlZERyYXdJbWFnZSgK
ICAgICBidWZmZXItPmNvbnRleHQoKS5jb25jYXRDVE0oZWZmZWN0aXZlVHJhbnNmb3JtKTsKICAg
ICBkcmF3SW1hZ2VUb0NvbnRleHQoaW1hZ2UsIGJ1ZmZlci0+Y29udGV4dCgpLCBzdHlsZUNvbG9y
U3BhY2UsIGFkanVzdGVkRGVzdCwgc3JjLCBDb21wb3NpdGVTb3VyY2VPdmVyKTsKIAotICAgIGNv
bXBvc2l0ZUJ1ZmZlcihidWZmZXIuZ2V0KCksIGJ1ZmZlclJlY3QsIG9wKTsKKyAgICBjb21wb3Np
dGVCdWZmZXIoKmJ1ZmZlciwgYnVmZmVyUmVjdCwgb3ApOwogfQogCiB2b2lkIENhbnZhc1JlbmRl
cmluZ0NvbnRleHQyRDo6cHJlcGFyZUdyYWRpZW50Rm9yRGFzaGJvYXJkKENhbnZhc0dyYWRpZW50
JiBncmFkaWVudCkgY29uc3QKQEAgLTI0MTksNyArMjQxOSw3IEBAIHZvaWQgQ2FudmFzUmVuZGVy
aW5nQ29udGV4dDJEOjpkcmF3VGV4dEludGVybmFsKGNvbnN0IFN0cmluZyYgdGV4dCwgZmxvYXQg
eCwgZmxvCiAKICAgICAvLyBUaGUgc2xvcCBidWlsdCBpbiB0byB0aGlzIG1hc2sgcmVjdCBtYXRj
aGVzIHRoZSBoZXVyaXN0aWMgdXNlZCBpbiBGb250Q0dXaW4uY3BwIGZvciBHREkgdGV4dC4KICAg
ICBGbG9hdFJlY3QgdGV4dFJlY3QgPSBGbG9hdFJlY3QobG9jYXRpb24ueCgpIC0gZm9udE1ldHJp
Y3MuaGVpZ2h0KCkgLyAyLCBsb2NhdGlvbi55KCkgLSBmb250TWV0cmljcy5hc2NlbnQoKSAtIGZv
bnRNZXRyaWNzLmxpbmVHYXAoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
d2lkdGggKyBmb250TWV0cmljcy5oZWlnaHQoKSwgZm9udE1ldHJpY3MubGluZVNwYWNpbmcoKSk7
CisgICAgICAgIHdpZHRoICsgZm9udE1ldHJpY3MuaGVpZ2h0KCksIGZvbnRNZXRyaWNzLmxpbmVT
cGFjaW5nKCkpOwogICAgIGlmICghZmlsbCkKICAgICAgICAgaW5mbGF0ZVN0cm9rZVJlY3QodGV4
dFJlY3QpOwogCkBAIC0yNDYxLDYgKzI0NjEsOCBAQCB2b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRl
eHQyRDo6ZHJhd1RleHRJbnRlcm5hbChjb25zdCBTdHJpbmcmIHRleHQsIGZsb2F0IHgsIGZsbwog
ICAgICAgICB9CiAKICAgICAgICAgc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPiBtYXNrSW1h
Z2UgPSBjLT5jcmVhdGVDb21wYXRpYmxlQnVmZmVyKG1hc2tSZWN0LnNpemUoKSk7CisgICAgICAg
IGlmICghbWFza0ltYWdlKQorICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgIEdyYXBoaWNz
Q29udGV4dCYgbWFza0ltYWdlQ29udGV4dCA9IG1hc2tJbWFnZS0+Y29udGV4dCgpOwogCkBAIC0y
NDg0LDcgKzI0ODYsNyBAQCB2b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6ZHJhd1RleHRJ
bnRlcm5hbChjb25zdCBTdHJpbmcmIHRleHQsIGZsb2F0IHgsIGZsbwogICAgICAgICB9CiAKICAg
ICAgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKCpjKTsKLSAgICAgICAg
Yy0+Y2xpcFRvSW1hZ2VCdWZmZXIobWFza0ltYWdlLmdldCgpLCBtYXNrUmVjdCk7CisgICAgICAg
IGMtPmNsaXBUb0ltYWdlQnVmZmVyKCptYXNrSW1hZ2UsIG1hc2tSZWN0KTsKICAgICAgICAgZHJh
d1N0eWxlLmFwcGx5RmlsbENvbG9yKGMpOwogICAgICAgICBjLT5maWxsUmVjdChtYXNrUmVjdCk7
CiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFz
L0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMv
Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmgKaW5kZXggYTQ0ZTZiOTMwZGM2NWNlNDE0MDhlMDNi
MjU0NTFmNzAwY2JhMmExOS4uODczZjY0M2VlODcxOTliZjZjNDhhNjM4NDAyYjkyODQxNTk0NTNk
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5n
Q29udGV4dDJELmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVy
aW5nQ29udGV4dDJELmgKQEAgLTM2MywxMSArMzYzLDExIEBAIHByaXZhdGU6CiAKICAgICB0ZW1w
bGF0ZTxjbGFzcyBUPiBJbnRSZWN0IGNhbGN1bGF0ZUNvbXBvc2l0aW5nQnVmZmVyUmVjdChjb25z
dCBUJiwgSW50U2l6ZSopOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4gY3JlYXRl
Q29tcG9zaXRpbmdCdWZmZXIoY29uc3QgSW50UmVjdCYpOwotICAgIHZvaWQgY29tcG9zaXRlQnVm
ZmVyKEltYWdlQnVmZmVyKiwgY29uc3QgSW50UmVjdCYsIENvbXBvc2l0ZU9wZXJhdG9yKTsKKyAg
ICB2b2lkIGNvbXBvc2l0ZUJ1ZmZlcihJbWFnZUJ1ZmZlciYsIGNvbnN0IEludFJlY3QmLCBDb21w
b3NpdGVPcGVyYXRvcik7CiAKICAgICB2b2lkIGluZmxhdGVTdHJva2VSZWN0KEZsb2F0UmVjdCYp
IGNvbnN0OwogCi0gICAgdGVtcGxhdGU8Y2xhc3MgVD4gdm9pZCBmdWxsQ2FudmFzQ29tcG9zaXRl
ZERyYXdJbWFnZShUKiwgQ29sb3JTcGFjZSwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRS
ZWN0JiwgQ29tcG9zaXRlT3BlcmF0b3IpOworICAgIHRlbXBsYXRlPGNsYXNzIFQ+IHZvaWQgZnVs
bENhbnZhc0NvbXBvc2l0ZWREcmF3SW1hZ2UoVCYsIENvbG9yU3BhY2UsIGNvbnN0IEZsb2F0UmVj
dCYsIGNvbnN0IEZsb2F0UmVjdCYsIENvbXBvc2l0ZU9wZXJhdG9yKTsKIAogICAgIHZvaWQgcHJl
cGFyZUdyYWRpZW50Rm9yRGFzaGJvYXJkKENhbnZhc0dyYWRpZW50JiBncmFkaWVudCkgY29uc3Q7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMMlJlbmRlcmlu
Z0NvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0wyUmVuZGVyaW5n
Q29udGV4dC5jcHAKaW5kZXggNTNiMjc4ZGJkYWNmZGY3ODFlOGFiMTMyMjE1YmE0MzllYTUyMDMx
ZC4uYWNjNjdkOGQzNGVlZmVkMDdmMmYyNjU5YTliNjQ5NDI4Mjc3Y2I3OSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0wyUmVuZGVyaW5nQ29udGV4dC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0wyUmVuZGVyaW5nQ29udGV4dC5jcHAK
QEAgLTE0MTksOCArMTQxOSwxMSBAQCB2b2lkIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OnRleFN1
YkltYWdlMkQoR0MzRGVudW0gdGFyZ2V0LCBHQzNEaW50IGxldmVsLCBHQzNEaQogICAgICAgICBy
ZXR1cm47CiAgICAgCiAgICAgUmVmUHRyPEltYWdlPiBpbWFnZUZvclJlbmRlciA9IGltYWdlLT5j
YWNoZWRJbWFnZSgpLT5pbWFnZUZvclJlbmRlcmVyKGltYWdlLT5yZW5kZXJlcigpKTsKKyAgICBp
ZiAoIWltYWdlRm9yUmVuZGVyKQorICAgICAgICByZXR1cm47CisKICAgICBpZiAoaW1hZ2VGb3JS
ZW5kZXItPmlzU1ZHSW1hZ2UoKSkKLSAgICAgICAgaW1hZ2VGb3JSZW5kZXIgPSBkcmF3SW1hZ2VJ
bnRvQnVmZmVyKGltYWdlRm9yUmVuZGVyLmdldCgpLCBpbWFnZS0+d2lkdGgoKSwgaW1hZ2UtPmhl
aWdodCgpLCAxKTsKKyAgICAgICAgaW1hZ2VGb3JSZW5kZXIgPSBkcmF3SW1hZ2VJbnRvQnVmZmVy
KCppbWFnZUZvclJlbmRlciwgaW1hZ2UtPndpZHRoKCksIGltYWdlLT5oZWlnaHQoKSwgMSk7CiAg
ICAgCiAgICAgaWYgKCFpbWFnZUZvclJlbmRlciB8fCAhdmFsaWRhdGVUZXhGdW5jKCJ0ZXhTdWJJ
bWFnZTJEIiwgVGV4U3ViSW1hZ2UsIFNvdXJjZUhUTUxJbWFnZUVsZW1lbnQsIHRhcmdldCwgbGV2
ZWwsIEdyYXBoaWNzQ29udGV4dDNEOjpOT05FLCBpbWFnZUZvclJlbmRlci0+d2lkdGgoKSwgaW1h
Z2VGb3JSZW5kZXItPmhlaWdodCgpLCAwLCBmb3JtYXQsIHR5cGUsIHhvZmZzZXQsIHlvZmZzZXQp
KQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZh
cy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMv
V2ViR0xSZW5kZXJpbmdDb250ZXh0LmNwcAppbmRleCBiNmY3YzM1NjcyNGU5M2QyMjI1MmQ1YWNi
MmVjMzE4NTg1NDMxYmY3Li5lYzExNTJhMzQ4MjFjYjAyODM3YzMyYmI2NmM2ZmUxYzZlYjE5MjM1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0Nv
bnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5n
Q29udGV4dC5jcHAKQEAgLTYyMyw4ICs2MjMsMTEgQEAgdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRl
eHQ6OnRleFN1YkltYWdlMkQoR0MzRGVudW0gdGFyZ2V0LCBHQzNEaW50IGxldmVsLCBHQzNEaW4K
ICAgICAgICAgcmV0dXJuOwogICAgIAogICAgIFJlZlB0cjxJbWFnZT4gaW1hZ2VGb3JSZW5kZXIg
PSBpbWFnZS0+Y2FjaGVkSW1hZ2UoKS0+aW1hZ2VGb3JSZW5kZXJlcihpbWFnZS0+cmVuZGVyZXIo
KSk7CisgICAgaWYgKCFpbWFnZUZvclJlbmRlcikKKyAgICAgICAgcmV0dXJuOworCiAgICAgaWYg
KGltYWdlRm9yUmVuZGVyLT5pc1NWR0ltYWdlKCkpCi0gICAgICAgIGltYWdlRm9yUmVuZGVyID0g
ZHJhd0ltYWdlSW50b0J1ZmZlcihpbWFnZUZvclJlbmRlci5nZXQoKSwgaW1hZ2UtPndpZHRoKCks
IGltYWdlLT5oZWlnaHQoKSwgMSk7CisgICAgICAgIGltYWdlRm9yUmVuZGVyID0gZHJhd0ltYWdl
SW50b0J1ZmZlcigqaW1hZ2VGb3JSZW5kZXIsIGltYWdlLT53aWR0aCgpLCBpbWFnZS0+aGVpZ2h0
KCksIDEpOwogICAgIAogICAgIGlmICghaW1hZ2VGb3JSZW5kZXIgfHwgIXZhbGlkYXRlVGV4RnVu
YygidGV4U3ViSW1hZ2UyRCIsIFRleFN1YkltYWdlLCBTb3VyY2VIVE1MSW1hZ2VFbGVtZW50LCB0
YXJnZXQsIGxldmVsLCBmb3JtYXQsIGltYWdlRm9yUmVuZGVyLT53aWR0aCgpLCBpbWFnZUZvclJl
bmRlci0+aGVpZ2h0KCksIDAsIGZvcm1hdCwgdHlwZSwgeG9mZnNldCwgeW9mZnNldCkpCiAgICAg
ICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdM
UmVuZGVyaW5nQ29udGV4dEJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2Vi
R0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHAKaW5kZXggYTRhYTdhN2IzOWE4Mjk4OWVhMzE4YjRj
MDc1OGM3YjI0OWRiOGI5Ni4uNjZiZmM5MDVlMmFjYmMwYzIzODg1ODcyNmQ4NGIzY2ZmMDdlNWJj
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdD
b250ZXh0QmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5k
ZXJpbmdDb250ZXh0QmFzZS5jcHAKQEAgLTMxNjQsNyArMzE2NCw3IEBAIHZvaWQgV2ViR0xSZW5k
ZXJpbmdDb250ZXh0QmFzZTo6dGV4SW1hZ2UyRChHQzNEZW51bSB0YXJnZXQsIEdDM0RpbnQgbGV2
ZWwsIEdDM0RlCiAgICAgICAgIG1fY29udGV4dC0+cGl4ZWxTdG9yZWkoR3JhcGhpY3NDb250ZXh0
M0Q6OlVOUEFDS19BTElHTk1FTlQsIG1fdW5wYWNrQWxpZ25tZW50KTsKIH0KIAotUGFzc1JlZlB0
cjxJbWFnZT4gV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6ZHJhd0ltYWdlSW50b0J1ZmZlcihJ
bWFnZSogaW1hZ2UsIGludCB3aWR0aCwgaW50IGhlaWdodCwgaW50IGRldmljZVNjYWxlRmFjdG9y
KQorUGFzc1JlZlB0cjxJbWFnZT4gV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6ZHJhd0ltYWdl
SW50b0J1ZmZlcihJbWFnZSYgaW1hZ2UsIGludCB3aWR0aCwgaW50IGhlaWdodCwgaW50IGRldmlj
ZVNjYWxlRmFjdG9yKQogewogICAgIEludFNpemUgc2l6ZSh3aWR0aCwgaGVpZ2h0KTsKICAgICBz
aXplLnNjYWxlKGRldmljZVNjYWxlRmFjdG9yKTsKQEAgLTMxNzQsNyArMzE3NCw3IEBAIFBhc3NS
ZWZQdHI8SW1hZ2U+IFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmRyYXdJbWFnZUludG9CdWZm
ZXIoSW1hZ2UqIGltYWdlLCBpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIAotICAg
IEZsb2F0UmVjdCBzcmNSZWN0KEZsb2F0UG9pbnQoKSwgaW1hZ2UtPnNpemUoKSk7CisgICAgRmxv
YXRSZWN0IHNyY1JlY3QoRmxvYXRQb2ludCgpLCBpbWFnZS5zaXplKCkpOwogICAgIEZsb2F0UmVj
dCBkZXN0UmVjdChGbG9hdFBvaW50KCksIHNpemUpOwogICAgIGJ1Zi0+Y29udGV4dCgpLmRyYXdJ
bWFnZShpbWFnZSwgQ29sb3JTcGFjZURldmljZVJHQiwgZGVzdFJlY3QsIHNyY1JlY3QpOwogICAg
IHJldHVybiBidWYtPmNvcHlJbWFnZShJbWFnZUJ1ZmZlcjo6ZmFzdENvcHlJbWFnZU1vZGUoKSk7
CkBAIC0zMTg4LDggKzMxODgsMTEgQEAgdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp0
ZXhJbWFnZTJEKEdDM0RlbnVtIHRhcmdldCwgR0MzRGludCBsZXZlbCwgR0MzRGUKICAgICAgICAg
cmV0dXJuOwogCiAgICAgUmVmUHRyPEltYWdlPiBpbWFnZUZvclJlbmRlciA9IGltYWdlLT5jYWNo
ZWRJbWFnZSgpLT5pbWFnZUZvclJlbmRlcmVyKGltYWdlLT5yZW5kZXJlcigpKTsKKyAgICBpZiAo
IWltYWdlRm9yUmVuZGVyKQorICAgICAgICByZXR1cm47CisKICAgICBpZiAoaW1hZ2VGb3JSZW5k
ZXItPmlzU1ZHSW1hZ2UoKSkKLSAgICAgICAgaW1hZ2VGb3JSZW5kZXIgPSBkcmF3SW1hZ2VJbnRv
QnVmZmVyKGltYWdlRm9yUmVuZGVyLmdldCgpLCBpbWFnZS0+d2lkdGgoKSwgaW1hZ2UtPmhlaWdo
dCgpLCAxKTsKKyAgICAgICAgaW1hZ2VGb3JSZW5kZXIgPSBkcmF3SW1hZ2VJbnRvQnVmZmVyKCpp
bWFnZUZvclJlbmRlciwgaW1hZ2UtPndpZHRoKCksIGltYWdlLT5oZWlnaHQoKSwgMSk7CiAKICAg
ICBpZiAoIWltYWdlRm9yUmVuZGVyIHx8ICF2YWxpZGF0ZVRleEZ1bmMoInRleEltYWdlMkQiLCBU
ZXhJbWFnZSwgU291cmNlSFRNTEltYWdlRWxlbWVudCwgdGFyZ2V0LCBsZXZlbCwgaW50ZXJuYWxm
b3JtYXQsIGltYWdlRm9yUmVuZGVyLT53aWR0aCgpLCBpbWFnZUZvclJlbmRlci0+aGVpZ2h0KCks
IDAsIGZvcm1hdCwgdHlwZSwgMCwgMCkpCiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuaCBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuaAppbmRl
eCBlMDljMmE0MzQ2YzVhYTFiNDliMzE4OTUzNDI2MDAyNzJlNjNmOWVkLi5jYTA1OGIxYmUwZTk0
ZGRkNGVmYjE5MWQ5MmUxZjY2OTJhMzZlZTY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5oCkBAIC00MjYsNyArNDI2
LDcgQEAgcHJvdGVjdGVkOgogICAgIC8vIEFkZHMgYSBjb21wcmVzc2VkIHRleHR1cmUgZm9ybWF0
LgogICAgIHZvaWQgYWRkQ29tcHJlc3NlZFRleHR1cmVGb3JtYXQoR0MzRGVudW0pOwogCi0gICAg
UGFzc1JlZlB0cjxJbWFnZT4gZHJhd0ltYWdlSW50b0J1ZmZlcihJbWFnZSosIGludCB3aWR0aCwg
aW50IGhlaWdodCwgaW50IGRldmljZVNjYWxlRmFjdG9yKTsKKyAgICBQYXNzUmVmUHRyPEltYWdl
PiBkcmF3SW1hZ2VJbnRvQnVmZmVyKEltYWdlJiwgaW50IHdpZHRoLCBpbnQgaGVpZ2h0LCBpbnQg
ZGV2aWNlU2NhbGVGYWN0b3IpOwogCiAjaWYgRU5BQkxFKFZJREVPKQogICAgIFBhc3NSZWZQdHI8
SW1hZ2U+IHZpZGVvRnJhbWVUb0ltYWdlKEhUTUxWaWRlb0VsZW1lbnQqLCBCYWNraW5nU3RvcmVD
b3B5LCBFeGNlcHRpb25Db2RlJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9TY3JvbGxWaWV3LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbFZpZXcuY3Bw
CmluZGV4IDA5Nzg4YjBmYzMzOTNiMGU5MWUwMmJmMzIzOTdmYjBkYTQ3NWE2OTkuLjE1YTBiYjFk
MGMyNGRkMzFlY2MyOTNkNDc4MTZkMjViNGJjYWM4MzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL1Njcm9sbFZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1Njcm9sbFZpZXcuY3BwCkBAIC0xMTc4LDEwICsxMTc4LDEyIEBAIHZvaWQgU2Nyb2xsVmlldzo6
cGFpbnRTY3JvbGxiYXJzKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgSW50UmVjdCYg
cmVjdCkKIHZvaWQgU2Nyb2xsVmlldzo6cGFpbnRQYW5TY3JvbGxJY29uKEdyYXBoaWNzQ29udGV4
dCYgY29udGV4dCkKIHsKICAgICBzdGF0aWMgSW1hZ2UqIHBhblNjcm9sbEljb24gPSBJbWFnZTo6
bG9hZFBsYXRmb3JtUmVzb3VyY2UoInBhbkljb24iKS5sZWFrUmVmKCk7CisgICAgaWYgKCFwYW5T
Y3JvbGxJY29uKQorICAgICAgICByZXR1cm47CiAgICAgSW50UG9pbnQgaWNvbkdDUG9pbnQgPSBt
X3BhblNjcm9sbEljb25Qb2ludDsKICAgICBpZiAocGFyZW50KCkpCiAgICAgICAgIGljb25HQ1Bv
aW50ID0gcGFyZW50KCktPndpbmRvd1RvQ29udGVudHMoaWNvbkdDUG9pbnQpOwotICAgIGNvbnRl
eHQuZHJhd0ltYWdlKHBhblNjcm9sbEljb24sIENvbG9yU3BhY2VEZXZpY2VSR0IsIGljb25HQ1Bv
aW50KTsKKyAgICBjb250ZXh0LmRyYXdJbWFnZSgqcGFuU2Nyb2xsSWNvbiwgQ29sb3JTcGFjZURl
dmljZVJHQiwgaWNvbkdDUG9pbnQpOwogfQogCiB2b2lkIFNjcm9sbFZpZXc6OnBhaW50KEdyYXBo
aWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgSW50UmVjdCYgcmVjdCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Nyb3NzZmFkZUdlbmVyYXRlZEltYWdlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Nyb3NzZmFkZUdlbmVyYXRlZElt
YWdlLmNwcAppbmRleCA0YWYyZTQ3MTE1NTI3MGQ1MGM4YWU4N2QxYmY5NDI4M2UxYmY2ZmJlLi42
ODMyYjg5OTdmNzVhZTQ5MmY1MjBmNTBjOTc2ZTZkNDIxNTQ5MWJiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Dcm9zc2ZhZGVHZW5lcmF0ZWRJbWFnZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ3Jvc3NmYWRlR2VuZXJhdGVk
SW1hZ2UuY3BwCkBAIC0zMiw3ICszMiw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotQ3Jv
c3NmYWRlR2VuZXJhdGVkSW1hZ2U6OkNyb3NzZmFkZUdlbmVyYXRlZEltYWdlKEltYWdlKiBmcm9t
SW1hZ2UsIEltYWdlKiB0b0ltYWdlLCBmbG9hdCBwZXJjZW50YWdlLCBjb25zdCBGbG9hdFNpemUm
IGNyb3NzZmFkZVNpemUsIGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSkKK0Nyb3NzZmFkZUdlbmVyYXRl
ZEltYWdlOjpDcm9zc2ZhZGVHZW5lcmF0ZWRJbWFnZShJbWFnZSYgZnJvbUltYWdlLCBJbWFnZSYg
dG9JbWFnZSwgZmxvYXQgcGVyY2VudGFnZSwgY29uc3QgRmxvYXRTaXplJiBjcm9zc2ZhZGVTaXpl
LCBjb25zdCBGbG9hdFNpemUmIHNpemUpCiAgICAgOiBtX2Zyb21JbWFnZShmcm9tSW1hZ2UpCiAg
ICAgLCBtX3RvSW1hZ2UodG9JbWFnZSkKICAgICAsIG1fcGVyY2VudGFnZShwZXJjZW50YWdlKQpA
QCAtNDEsMTIgKzQxLDEyIEBAIENyb3NzZmFkZUdlbmVyYXRlZEltYWdlOjpDcm9zc2ZhZGVHZW5l
cmF0ZWRJbWFnZShJbWFnZSogZnJvbUltYWdlLCBJbWFnZSogdG9JbWFnCiAgICAgc2V0Q29udGFp
bmVyU2l6ZShzaXplKTsKIH0KIAotc3RhdGljIHZvaWQgZHJhd0Nyb3NzZmFkZVN1YmltYWdlKEdy
YXBoaWNzQ29udGV4dCYgY29udGV4dCwgSW1hZ2UqIGltYWdlLCBDb21wb3NpdGVPcGVyYXRvciBv
cGVyYXRpb24sIGZsb2F0IG9wYWNpdHksIGNvbnN0IEZsb2F0U2l6ZSYgdGFyZ2V0U2l6ZSkKK3N0
YXRpYyB2b2lkIGRyYXdDcm9zc2ZhZGVTdWJpbWFnZShHcmFwaGljc0NvbnRleHQmIGNvbnRleHQs
IEltYWdlJiBpbWFnZSwgQ29tcG9zaXRlT3BlcmF0b3Igb3BlcmF0aW9uLCBmbG9hdCBvcGFjaXR5
LCBjb25zdCBGbG9hdFNpemUmIHRhcmdldFNpemUpCiB7Ci0gICAgRmxvYXRTaXplIGltYWdlU2l6
ZSA9IGltYWdlLT5zaXplKCk7CisgICAgRmxvYXRTaXplIGltYWdlU2l6ZSA9IGltYWdlLnNpemUo
KTsKIAogICAgIC8vIFNWR0ltYWdlIHJlc2V0cyB0aGUgb3BhY2l0eSB3aGVuIHBhaW50aW5nLCBz
byB3ZSBoYXZlIHRvIHVzZSB0cmFuc3BhcmVuY3kgbGF5ZXJzIHRvIGFjY3VyYXRlbHkgcGFpbnQg
b25lIGF0IGEgZ2l2ZW4gb3BhY2l0eS4KLSAgICBib29sIHVzZVRyYW5zcGFyZW5jeUxheWVyID0g
aW1hZ2UtPmlzU1ZHSW1hZ2UoKTsKKyAgICBib29sIHVzZVRyYW5zcGFyZW5jeUxheWVyID0gaW1h
Z2UuaXNTVkdJbWFnZSgpOwogCiAgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNh
dmVyKGNvbnRleHQpOwogCkBAIC02OCw3ICs2OCw3IEBAIHN0YXRpYyB2b2lkIGRyYXdDcm9zc2Zh
ZGVTdWJpbWFnZShHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIEltYWdlKiBpbWFnZSwgQ29tcG9z
CiB2b2lkIENyb3NzZmFkZUdlbmVyYXRlZEltYWdlOjpkcmF3Q3Jvc3NmYWRlKEdyYXBoaWNzQ29u
dGV4dCYgY29udGV4dCkKIHsKICAgICAvLyBEcmF3IG5vdGhpbmcgaWYgZWl0aGVyIG9mIHRoZSBp
bWFnZXMgaGFzbid0IGxvYWRlZCB5ZXQuCi0gICAgaWYgKG1fZnJvbUltYWdlID09IEltYWdlOjpu
dWxsSW1hZ2UoKSB8fCBtX3RvSW1hZ2UgPT0gSW1hZ2U6Om51bGxJbWFnZSgpKQorICAgIGlmICht
X2Zyb21JbWFnZS5wdHIoKSA9PSBJbWFnZTo6bnVsbEltYWdlKCkgfHwgbV90b0ltYWdlLnB0cigp
ID09IEltYWdlOjpudWxsSW1hZ2UoKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgR3JhcGhpY3ND
b250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKGNvbnRleHQpOwpAQCAtNzYsOCArNzYsOCBAQCB2
b2lkIENyb3NzZmFkZUdlbmVyYXRlZEltYWdlOjpkcmF3Q3Jvc3NmYWRlKEdyYXBoaWNzQ29udGV4
dCYgY29udGV4dCkKICAgICBjb250ZXh0LmNsaXAoRmxvYXRSZWN0KEZsb2F0UG9pbnQoKSwgbV9j
cm9zc2ZhZGVTaXplKSk7CiAgICAgY29udGV4dC5iZWdpblRyYW5zcGFyZW5jeUxheWVyKDEpOwog
Ci0gICAgZHJhd0Nyb3NzZmFkZVN1YmltYWdlKGNvbnRleHQsIG1fZnJvbUltYWdlLCBDb21wb3Np
dGVTb3VyY2VPdmVyLCAxIC0gbV9wZXJjZW50YWdlLCBtX2Nyb3NzZmFkZVNpemUpOwotICAgIGRy
YXdDcm9zc2ZhZGVTdWJpbWFnZShjb250ZXh0LCBtX3RvSW1hZ2UsIENvbXBvc2l0ZVBsdXNMaWdo
dGVyLCBtX3BlcmNlbnRhZ2UsIG1fY3Jvc3NmYWRlU2l6ZSk7CisgICAgZHJhd0Nyb3NzZmFkZVN1
YmltYWdlKGNvbnRleHQsIG1fZnJvbUltYWdlLmdldCgpLCBDb21wb3NpdGVTb3VyY2VPdmVyLCAx
IC0gbV9wZXJjZW50YWdlLCBtX2Nyb3NzZmFkZVNpemUpOworICAgIGRyYXdDcm9zc2ZhZGVTdWJp
bWFnZShjb250ZXh0LCBtX3RvSW1hZ2UuZ2V0KCksIENvbXBvc2l0ZVBsdXNMaWdodGVyLCBtX3Bl
cmNlbnRhZ2UsIG1fY3Jvc3NmYWRlU2l6ZSk7CiAKICAgICBjb250ZXh0LmVuZFRyYW5zcGFyZW5j
eUxheWVyKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9Dcm9zc2ZhZGVHZW5lcmF0ZWRJbWFnZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvQ3Jvc3NmYWRlR2VuZXJhdGVkSW1hZ2UuaAppbmRleCAzNTlkMjlhYjUxMDM0ZDBhOTNj
NGU3ZTQ0NDZiNWE5MTk5OGRiOTMxLi44NDZmMjk2ZDM5OGU5YTI5MmJhZWI2YzMyZWMxMDFiZWI4
NjM3ZTM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Dcm9z
c2ZhZGVHZW5lcmF0ZWRJbWFnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0Nyb3NzZmFkZUdlbmVyYXRlZEltYWdlLmgKQEAgLTM2LDcgKzM2LDcgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogCiBjbGFzcyBDcm9zc2ZhZGVHZW5lcmF0ZWRJbWFnZSBmaW5hbCA6IHB1Ymxp
YyBHZW5lcmF0ZWRJbWFnZSB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxDcm9zc2ZhZGVHZW5l
cmF0ZWRJbWFnZT4gY3JlYXRlKEltYWdlKiBmcm9tSW1hZ2UsIEltYWdlKiB0b0ltYWdlLCBmbG9h
dCBwZXJjZW50YWdlLCBjb25zdCBGbG9hdFNpemUmIGNyb3NzZmFkZVNpemUsIGNvbnN0IEZsb2F0
U2l6ZSYgc2l6ZSkKKyAgICBzdGF0aWMgUmVmPENyb3NzZmFkZUdlbmVyYXRlZEltYWdlPiBjcmVh
dGUoSW1hZ2UmIGZyb21JbWFnZSwgSW1hZ2UmIHRvSW1hZ2UsIGZsb2F0IHBlcmNlbnRhZ2UsIGNv
bnN0IEZsb2F0U2l6ZSYgY3Jvc3NmYWRlU2l6ZSwgY29uc3QgRmxvYXRTaXplJiBzaXplKQogICAg
IHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQ3Jvc3NmYWRlR2VuZXJhdGVkSW1hZ2Uo
ZnJvbUltYWdlLCB0b0ltYWdlLCBwZXJjZW50YWdlLCBjcm9zc2ZhZGVTaXplLCBzaXplKSk7CiAg
ICAgfQpAQCAtNTIsMTMgKzUyLDEzIEBAIHByb3RlY3RlZDoKICAgICB2aXJ0dWFsIHZvaWQgZHJh
dyhHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZsb2F0
UmVjdCYgc3JjUmVjdCwgQ29sb3JTcGFjZSBzdHlsZUNvbG9yU3BhY2UsIENvbXBvc2l0ZU9wZXJh
dG9yLCBCbGVuZE1vZGUsIEltYWdlT3JpZW50YXRpb25EZXNjcmlwdGlvbikgb3ZlcnJpZGU7CiAg
ICAgdmlydHVhbCB2b2lkIGRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0
UmVjdCYgc3JjUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBwYXR0ZXJuVHJhbnNmb3JtLCBj
b25zdCBGbG9hdFBvaW50JiBwaGFzZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5nLCBDb2xvclNw
YWNlIHN0eWxlQ29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0b3IsIGNvbnN0IEZsb2F0UmVjdCYg
ZHN0UmVjdCwgQmxlbmRNb2RlKSBvdmVycmlkZTsKIAotICAgIENyb3NzZmFkZUdlbmVyYXRlZElt
YWdlKEltYWdlKiBmcm9tSW1hZ2UsIEltYWdlKiB0b0ltYWdlLCBmbG9hdCBwZXJjZW50YWdlLCBj
b25zdCBGbG9hdFNpemUmIGNyb3NzZmFkZVNpemUsIGNvbnN0IEZsb2F0U2l6ZSYpOworICAgIENy
b3NzZmFkZUdlbmVyYXRlZEltYWdlKEltYWdlJiBmcm9tSW1hZ2UsIEltYWdlJiB0b0ltYWdlLCBm
bG9hdCBwZXJjZW50YWdlLCBjb25zdCBGbG9hdFNpemUmIGNyb3NzZmFkZVNpemUsIGNvbnN0IEZs
b2F0U2l6ZSYpOwogCiBwcml2YXRlOgogICAgIHZvaWQgZHJhd0Nyb3NzZmFkZShHcmFwaGljc0Nv
bnRleHQmKTsKIAotICAgIEltYWdlKiBtX2Zyb21JbWFnZTsKLSAgICBJbWFnZSogbV90b0ltYWdl
OworICAgIFJlZjxJbWFnZT4gbV9mcm9tSW1hZ2U7CisgICAgUmVmPEltYWdlPiBtX3RvSW1hZ2U7
CiAKICAgICBmbG9hdCBtX3BlcmNlbnRhZ2U7CiAgICAgRmxvYXRTaXplIG1fY3Jvc3NmYWRlU2l6
ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYWRpZW50
SW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhZGllbnRJbWFn
ZS5jcHAKaW5kZXggZjQwNTMwZDA1YjA2YzViOTNlZGM1YWRjODEzZTU3MjZkYTUxMjgwOS4uMjI5
OWY1MWZmM2QxOWVhYzlmMmFlMGQzN2ZlMTcxNDMyMDBiOGQyYiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhZGllbnRJbWFnZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhZGllbnRJbWFnZS5jcHAKQEAgLTczLDcgKzcz
LDcgQEAgdm9pZCBHcmFkaWVudEltYWdlOjpkcmF3UGF0dGVybihHcmFwaGljc0NvbnRleHQmIGRl
c3RDb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIHMKIAogICAgIHVuc2lnbmVkIGdlbmVyYXRvckhh
c2ggPSBtX2dyYWRpZW50LT5oYXNoKCk7CiAKLSAgICBpZiAoIW1fY2FjaGVkSW1hZ2VCdWZmZXIg
fHwgbV9jYWNoZWRHZW5lcmF0b3JIYXNoICE9IGdlbmVyYXRvckhhc2ggfHwgbV9jYWNoZWRBZGp1
c3RlZFNpemUgIT0gYWRqdXN0ZWRTaXplIHx8ICFkZXN0Q29udGV4dC5pc0NvbXBhdGlibGVXaXRo
QnVmZmVyKG1fY2FjaGVkSW1hZ2VCdWZmZXIuZ2V0KCkpKSB7CisgICAgaWYgKCFtX2NhY2hlZElt
YWdlQnVmZmVyIHx8IG1fY2FjaGVkR2VuZXJhdG9ySGFzaCAhPSBnZW5lcmF0b3JIYXNoIHx8IG1f
Y2FjaGVkQWRqdXN0ZWRTaXplICE9IGFkanVzdGVkU2l6ZSB8fCAhZGVzdENvbnRleHQuaXNDb21w
YXRpYmxlV2l0aEJ1ZmZlcigqbV9jYWNoZWRJbWFnZUJ1ZmZlcikpIHsKICAgICAgICAgbV9jYWNo
ZWRJbWFnZUJ1ZmZlciA9IGRlc3RDb250ZXh0LmNyZWF0ZUNvbXBhdGlibGVCdWZmZXIoYWRqdXN0
ZWRTaXplLCBtX2dyYWRpZW50LT5oYXNBbHBoYSgpKTsKICAgICAgICAgaWYgKCFtX2NhY2hlZElt
YWdlQnVmZmVyKQogICAgICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHAKaW5kZXggNDI2YzdhNzZiZmIz
ODY2YTM5YjU2MWZiYWRjNzYzOTk4OTZjNjI5My4uMmI0YTJmNzk5ZjlmNTA1MjVkOWU5OGI1NjEw
YzFjNDVkNTRhYWEzZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvR3JhcGhpY3NDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9HcmFwaGljc0NvbnRleHQuY3BwCkBAIC0zNjgsNTAgKzM2OCw0NSBAQCB2b2lkIEdyYXBo
aWNzQ29udGV4dDo6ZHJhd0JpZGlUZXh0KGNvbnN0IEZvbnRDYXNjYWRlJiBmb250LCBjb25zdCBU
ZXh0UnVuJiBydW4sCiAgICAgYmlkaVJ1bnMuZGVsZXRlUnVucygpOwogfQogCi12b2lkIEdyYXBo
aWNzQ29udGV4dDo6ZHJhd0ltYWdlKEltYWdlKiBpbWFnZSwgQ29sb3JTcGFjZSBjb2xvclNwYWNl
LCBjb25zdCBGbG9hdFBvaW50JiBkZXN0aW5hdGlvbiwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlv
bnMmIGltYWdlUGFpbnRpbmdPcHRpb25zKQordm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdJbWFn
ZShJbWFnZSYgaW1hZ2UsIENvbG9yU3BhY2UgY29sb3JTcGFjZSwgY29uc3QgRmxvYXRQb2ludCYg
ZGVzdGluYXRpb24sIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBpbWFnZVBhaW50aW5nT3B0
aW9ucykKIHsKLSAgICBpZiAoIWltYWdlKQotICAgICAgICByZXR1cm47Ci0gICAgZHJhd0ltYWdl
KGltYWdlLCBjb2xvclNwYWNlLCBGbG9hdFJlY3QoZGVzdGluYXRpb24sIGltYWdlLT5zaXplKCkp
LCBGbG9hdFJlY3QoRmxvYXRQb2ludCgpLCBpbWFnZS0+c2l6ZSgpKSwgaW1hZ2VQYWludGluZ09w
dGlvbnMpOworICAgIGRyYXdJbWFnZShpbWFnZSwgY29sb3JTcGFjZSwgRmxvYXRSZWN0KGRlc3Rp
bmF0aW9uLCBpbWFnZS5zaXplKCkpLCBGbG9hdFJlY3QoRmxvYXRQb2ludCgpLCBpbWFnZS5zaXpl
KCkpLCBpbWFnZVBhaW50aW5nT3B0aW9ucyk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0Ojpk
cmF3SW1hZ2UoSW1hZ2UqIGltYWdlLCBDb2xvclNwYWNlIGNvbG9yU3BhY2UsIGNvbnN0IEZsb2F0
UmVjdCYgZGVzdGluYXRpb24sIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBpbWFnZVBhaW50
aW5nT3B0aW9ucykKK3ZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3SW1hZ2UoSW1hZ2UmIGltYWdl
LCBDb2xvclNwYWNlIGNvbG9yU3BhY2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24sIGNv
bnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBpbWFnZVBhaW50aW5nT3B0aW9ucykKIHsKLSAgICBp
ZiAoIWltYWdlKQotICAgICAgICByZXR1cm47Ci0gICAgCiAjaWYgUExBVEZPUk0oSU9TKQotICAg
IEZsb2F0UmVjdCBzcmNSZWN0KEZsb2F0UG9pbnQoKSwgaW1hZ2UtPm9yaWdpbmFsU2l6ZSgpKTsK
KyAgICBGbG9hdFJlY3Qgc3JjUmVjdChGbG9hdFBvaW50KCksIGltYWdlLm9yaWdpbmFsU2l6ZSgp
KTsKICNlbHNlCi0gICAgRmxvYXRSZWN0IHNyY1JlY3QoRmxvYXRQb2ludCgpLCBpbWFnZS0+c2l6
ZSgpKTsKKyAgICBGbG9hdFJlY3Qgc3JjUmVjdChGbG9hdFBvaW50KCksIGltYWdlLnNpemUoKSk7
CiAjZW5kaWYKICAgICAgICAgCiAgICAgZHJhd0ltYWdlKGltYWdlLCBjb2xvclNwYWNlLCBkZXN0
aW5hdGlvbiwgc3JjUmVjdCwgaW1hZ2VQYWludGluZ09wdGlvbnMpOwogfQogCi12b2lkIEdyYXBo
aWNzQ29udGV4dDo6ZHJhd0ltYWdlKEltYWdlKiBpbWFnZSwgQ29sb3JTcGFjZSBjb2xvclNwYWNl
LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBjb25zdCBGbG9hdFJlY3QmIHNvdXJjZSwg
Y29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIGltYWdlUGFpbnRpbmdPcHRpb25zKQordm9pZCBH
cmFwaGljc0NvbnRleHQ6OmRyYXdJbWFnZShJbWFnZSYgaW1hZ2UsIENvbG9yU3BhY2UgY29sb3JT
cGFjZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwgY29uc3QgRmxvYXRSZWN0JiBzb3Vy
Y2UsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBpbWFnZVBhaW50aW5nT3B0aW9ucykKIHsK
LSAgICBpZiAocGFpbnRpbmdEaXNhYmxlZCgpIHx8ICFpbWFnZSkKKyAgICBpZiAocGFpbnRpbmdE
aXNhYmxlZCgpKQogICAgICAgICByZXR1cm47CiAKICAgICAvLyBGSVhNRSAoNDkwMDIpOiBTaG91
bGQgYmUgSW50ZXJwb2xhdGlvbkxvdwogICAgIEludGVycG9sYXRpb25RdWFsaXR5TWFpbnRhaW5l
ciBpbnRlcnBvbGF0aW9uUXVhbGl0eUZvclRoaXNTY29wZSgqdGhpcywgaW1hZ2VQYWludGluZ09w
dGlvbnMubV91c2VMb3dRdWFsaXR5U2NhbGUgPyBJbnRlcnBvbGF0aW9uTm9uZSA6IGltYWdlSW50
ZXJwb2xhdGlvblF1YWxpdHkoKSk7Ci0gICAgaW1hZ2UtPmRyYXcoKnRoaXMsIGRlc3RpbmF0aW9u
LCBzb3VyY2UsIGNvbG9yU3BhY2UsIGltYWdlUGFpbnRpbmdPcHRpb25zLm1fY29tcG9zaXRlT3Bl
cmF0b3IsIGltYWdlUGFpbnRpbmdPcHRpb25zLm1fYmxlbmRNb2RlLCBpbWFnZVBhaW50aW5nT3B0
aW9ucy5tX29yaWVudGF0aW9uRGVzY3JpcHRpb24pOworICAgIGltYWdlLmRyYXcoKnRoaXMsIGRl
c3RpbmF0aW9uLCBzb3VyY2UsIGNvbG9yU3BhY2UsIGltYWdlUGFpbnRpbmdPcHRpb25zLm1fY29t
cG9zaXRlT3BlcmF0b3IsIGltYWdlUGFpbnRpbmdPcHRpb25zLm1fYmxlbmRNb2RlLCBpbWFnZVBh
aW50aW5nT3B0aW9ucy5tX29yaWVudGF0aW9uRGVzY3JpcHRpb24pOwogfQogCi12b2lkIEdyYXBo
aWNzQ29udGV4dDo6ZHJhd1RpbGVkSW1hZ2UoSW1hZ2UqIGltYWdlLCBDb2xvclNwYWNlIGNvbG9y
U3BhY2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24sIGNvbnN0IEZsb2F0UG9pbnQmIHNv
dXJjZSwgY29uc3QgRmxvYXRTaXplJiB0aWxlU2l6ZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5n
LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgaW1hZ2VQYWludGluZ09wdGlvbnMpCit2b2lk
IEdyYXBoaWNzQ29udGV4dDo6ZHJhd1RpbGVkSW1hZ2UoSW1hZ2UmIGltYWdlLCBDb2xvclNwYWNl
IGNvbG9yU3BhY2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24sIGNvbnN0IEZsb2F0UG9p
bnQmIHNvdXJjZSwgY29uc3QgRmxvYXRTaXplJiB0aWxlU2l6ZSwgY29uc3QgRmxvYXRTaXplJiBz
cGFjaW5nLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgaW1hZ2VQYWludGluZ09wdGlvbnMp
CiB7Ci0gICAgaWYgKHBhaW50aW5nRGlzYWJsZWQoKSB8fCAhaW1hZ2UpCisgICAgaWYgKHBhaW50
aW5nRGlzYWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgSW50ZXJwb2xhdGlvblF1YWxp
dHlNYWludGFpbmVyIGludGVycG9sYXRpb25RdWFsaXR5Rm9yVGhpc1Njb3BlKCp0aGlzLCBpbWFn
ZVBhaW50aW5nT3B0aW9ucy5tX3VzZUxvd1F1YWxpdHlTY2FsZSA/IEludGVycG9sYXRpb25Mb3cg
OiBpbWFnZUludGVycG9sYXRpb25RdWFsaXR5KCkpOwotICAgIGltYWdlLT5kcmF3VGlsZWQoKnRo
aXMsIGRlc3RpbmF0aW9uLCBzb3VyY2UsIHRpbGVTaXplLCBzcGFjaW5nLCBjb2xvclNwYWNlLCBp
bWFnZVBhaW50aW5nT3B0aW9ucy5tX2NvbXBvc2l0ZU9wZXJhdG9yLCBpbWFnZVBhaW50aW5nT3B0
aW9ucy5tX2JsZW5kTW9kZSk7CisgICAgaW1hZ2UuZHJhd1RpbGVkKCp0aGlzLCBkZXN0aW5hdGlv
biwgc291cmNlLCB0aWxlU2l6ZSwgc3BhY2luZywgY29sb3JTcGFjZSwgaW1hZ2VQYWludGluZ09w
dGlvbnMubV9jb21wb3NpdGVPcGVyYXRvciwgaW1hZ2VQYWludGluZ09wdGlvbnMubV9ibGVuZE1v
ZGUpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd1RpbGVkSW1hZ2UoSW1hZ2UqIGlt
YWdlLCBDb2xvclNwYWNlIGNvbG9yU3BhY2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24s
IGNvbnN0IEZsb2F0UmVjdCYgc291cmNlLCBjb25zdCBGbG9hdFNpemUmIHRpbGVTY2FsZUZhY3Rv
ciwKK3ZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3VGlsZWRJbWFnZShJbWFnZSYgaW1hZ2UsIENv
bG9yU3BhY2UgY29sb3JTcGFjZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwgY29uc3Qg
RmxvYXRSZWN0JiBzb3VyY2UsIGNvbnN0IEZsb2F0U2l6ZSYgdGlsZVNjYWxlRmFjdG9yLAogICAg
IEltYWdlOjpUaWxlUnVsZSBoUnVsZSwgSW1hZ2U6OlRpbGVSdWxlIHZSdWxlLCBjb25zdCBJbWFn
ZVBhaW50aW5nT3B0aW9ucyYgaW1hZ2VQYWludGluZ09wdGlvbnMpCiB7Ci0gICAgaWYgKHBhaW50
aW5nRGlzYWJsZWQoKSB8fCAhaW1hZ2UpCisgICAgaWYgKHBhaW50aW5nRGlzYWJsZWQoKSkKICAg
ICAgICAgcmV0dXJuOwogCiAgICAgaWYgKGhSdWxlID09IEltYWdlOjpTdHJldGNoVGlsZSAmJiB2
UnVsZSA9PSBJbWFnZTo6U3RyZXRjaFRpbGUpIHsKQEAgLTQyMSwzMSArNDE2LDI3IEBAIHZvaWQg
R3JhcGhpY3NDb250ZXh0OjpkcmF3VGlsZWRJbWFnZShJbWFnZSogaW1hZ2UsIENvbG9yU3BhY2Ug
Y29sb3JTcGFjZSwgY29uc3QKICAgICB9CiAKICAgICBJbnRlcnBvbGF0aW9uUXVhbGl0eU1haW50
YWluZXIgaW50ZXJwb2xhdGlvblF1YWxpdHlGb3JUaGlzU2NvcGUoKnRoaXMsIGltYWdlUGFpbnRp
bmdPcHRpb25zLm1fdXNlTG93UXVhbGl0eVNjYWxlID8gSW50ZXJwb2xhdGlvbkxvdyA6IGltYWdl
SW50ZXJwb2xhdGlvblF1YWxpdHkoKSk7Ci0gICAgaW1hZ2UtPmRyYXdUaWxlZCgqdGhpcywgZGVz
dGluYXRpb24sIHNvdXJjZSwgdGlsZVNjYWxlRmFjdG9yLCBoUnVsZSwgdlJ1bGUsIGNvbG9yU3Bh
Y2UsIGltYWdlUGFpbnRpbmdPcHRpb25zLm1fY29tcG9zaXRlT3BlcmF0b3IpOworICAgIGltYWdl
LmRyYXdUaWxlZCgqdGhpcywgZGVzdGluYXRpb24sIHNvdXJjZSwgdGlsZVNjYWxlRmFjdG9yLCBo
UnVsZSwgdlJ1bGUsIGNvbG9yU3BhY2UsIGltYWdlUGFpbnRpbmdPcHRpb25zLm1fY29tcG9zaXRl
T3BlcmF0b3IpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd0ltYWdlQnVmZmVyKElt
YWdlQnVmZmVyKiBpbWFnZSwgQ29sb3JTcGFjZSBjb2xvclNwYWNlLCBjb25zdCBGbG9hdFBvaW50
JiBkZXN0aW5hdGlvbiwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIGltYWdlUGFpbnRpbmdP
cHRpb25zKQordm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdJbWFnZUJ1ZmZlcihJbWFnZUJ1ZmZl
ciYgaW1hZ2UsIENvbG9yU3BhY2UgY29sb3JTcGFjZSwgY29uc3QgRmxvYXRQb2ludCYgZGVzdGlu
YXRpb24sIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBpbWFnZVBhaW50aW5nT3B0aW9ucykK
IHsKLSAgICBpZiAoIWltYWdlKQotICAgICAgICByZXR1cm47Ci0gICAgZHJhd0ltYWdlQnVmZmVy
KGltYWdlLCBjb2xvclNwYWNlLCBGbG9hdFJlY3QoZGVzdGluYXRpb24sIGltYWdlLT5sb2dpY2Fs
U2l6ZSgpKSwgRmxvYXRSZWN0KEZsb2F0UG9pbnQoKSwgaW1hZ2UtPmxvZ2ljYWxTaXplKCkpLCBp
bWFnZVBhaW50aW5nT3B0aW9ucyk7CisgICAgZHJhd0ltYWdlQnVmZmVyKGltYWdlLCBjb2xvclNw
YWNlLCBGbG9hdFJlY3QoZGVzdGluYXRpb24sIGltYWdlLmxvZ2ljYWxTaXplKCkpLCBGbG9hdFJl
Y3QoRmxvYXRQb2ludCgpLCBpbWFnZS5sb2dpY2FsU2l6ZSgpKSwgaW1hZ2VQYWludGluZ09wdGlv
bnMpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd0ltYWdlQnVmZmVyKEltYWdlQnVm
ZmVyKiBpbWFnZSwgQ29sb3JTcGFjZSBjb2xvclNwYWNlLCBjb25zdCBGbG9hdFJlY3QmIGRlc3Rp
bmF0aW9uLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgaW1hZ2VQYWludGluZ09wdGlvbnMp
Cit2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd0ltYWdlQnVmZmVyKEltYWdlQnVmZmVyJiBpbWFn
ZSwgQ29sb3JTcGFjZSBjb2xvclNwYWNlLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBj
b25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgaW1hZ2VQYWludGluZ09wdGlvbnMpCiB7Ci0gICAg
aWYgKCFpbWFnZSkKLSAgICAgICAgcmV0dXJuOwotICAgIGRyYXdJbWFnZUJ1ZmZlcihpbWFnZSwg
Y29sb3JTcGFjZSwgZGVzdGluYXRpb24sIEZsb2F0UmVjdChGbG9hdFBvaW50KCksIEZsb2F0U2l6
ZShpbWFnZS0+bG9naWNhbFNpemUoKSkpLCBpbWFnZVBhaW50aW5nT3B0aW9ucyk7CisgICAgZHJh
d0ltYWdlQnVmZmVyKGltYWdlLCBjb2xvclNwYWNlLCBkZXN0aW5hdGlvbiwgRmxvYXRSZWN0KEZs
b2F0UG9pbnQoKSwgRmxvYXRTaXplKGltYWdlLmxvZ2ljYWxTaXplKCkpKSwgaW1hZ2VQYWludGlu
Z09wdGlvbnMpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd0ltYWdlQnVmZmVyKElt
YWdlQnVmZmVyKiBpbWFnZSwgQ29sb3JTcGFjZSBjb2xvclNwYWNlLCBjb25zdCBGbG9hdFJlY3Qm
IGRlc3RpbmF0aW9uLCBjb25zdCBGbG9hdFJlY3QmIHNvdXJjZSwgY29uc3QgSW1hZ2VQYWludGlu
Z09wdGlvbnMmIGltYWdlUGFpbnRpbmdPcHRpb25zKQordm9pZCBHcmFwaGljc0NvbnRleHQ6OmRy
YXdJbWFnZUJ1ZmZlcihJbWFnZUJ1ZmZlciYgaW1hZ2UsIENvbG9yU3BhY2UgY29sb3JTcGFjZSwg
Y29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwgY29uc3QgRmxvYXRSZWN0JiBzb3VyY2UsIGNv
bnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBpbWFnZVBhaW50aW5nT3B0aW9ucykKIHsKLSAgICBp
ZiAocGFpbnRpbmdEaXNhYmxlZCgpIHx8ICFpbWFnZSkKKyAgICBpZiAocGFpbnRpbmdEaXNhYmxl
ZCgpKQogICAgICAgICByZXR1cm47CiAKICAgICAvLyBGSVhNRSAoNDkwMDIpOiBTaG91bGQgYmUg
SW50ZXJwb2xhdGlvbkxvdwogICAgIEludGVycG9sYXRpb25RdWFsaXR5TWFpbnRhaW5lciBpbnRl
cnBvbGF0aW9uUXVhbGl0eUZvclRoaXNTY29wZSgqdGhpcywgaW1hZ2VQYWludGluZ09wdGlvbnMu
bV91c2VMb3dRdWFsaXR5U2NhbGUgPyBJbnRlcnBvbGF0aW9uTm9uZSA6IGltYWdlSW50ZXJwb2xh
dGlvblF1YWxpdHkoKSk7Ci0gICAgaW1hZ2UtPmRyYXcoKnRoaXMsIGNvbG9yU3BhY2UsIGRlc3Rp
bmF0aW9uLCBzb3VyY2UsIGltYWdlUGFpbnRpbmdPcHRpb25zLm1fY29tcG9zaXRlT3BlcmF0b3Is
IGltYWdlUGFpbnRpbmdPcHRpb25zLm1fYmxlbmRNb2RlLCBpbWFnZVBhaW50aW5nT3B0aW9ucy5t
X3VzZUxvd1F1YWxpdHlTY2FsZSk7CisgICAgaW1hZ2UuZHJhdygqdGhpcywgY29sb3JTcGFjZSwg
ZGVzdGluYXRpb24sIHNvdXJjZSwgaW1hZ2VQYWludGluZ09wdGlvbnMubV9jb21wb3NpdGVPcGVy
YXRvciwgaW1hZ2VQYWludGluZ09wdGlvbnMubV9ibGVuZE1vZGUsIGltYWdlUGFpbnRpbmdPcHRp
b25zLm1fdXNlTG93UXVhbGl0eVNjYWxlKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQ6OmNs
aXAoY29uc3QgSW50UmVjdCYgcmVjdCkKQEAgLTQ3OCwxMSArNDY5LDExIEBAIHZvaWQgR3JhcGhp
Y3NDb250ZXh0OjpjbGlwT3V0Um91bmRlZFJlY3QoY29uc3QgRmxvYXRSb3VuZGVkUmVjdCYgcmVj
dCkKICAgICBjbGlwT3V0KHBhdGgpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dDo6Y2xpcFRv
SW1hZ2VCdWZmZXIoSW1hZ2VCdWZmZXIqIGJ1ZmZlciwgY29uc3QgRmxvYXRSZWN0JiByZWN0KQor
dm9pZCBHcmFwaGljc0NvbnRleHQ6OmNsaXBUb0ltYWdlQnVmZmVyKEltYWdlQnVmZmVyJiBidWZm
ZXIsIGNvbnN0IEZsb2F0UmVjdCYgcmVjdCkKIHsKICAgICBpZiAocGFpbnRpbmdEaXNhYmxlZCgp
KQogICAgICAgICByZXR1cm47Ci0gICAgYnVmZmVyLT5jbGlwKCp0aGlzLCByZWN0KTsKKyAgICBi
dWZmZXIuY2xpcCgqdGhpcywgcmVjdCk7CiB9CiAKICNpZiAhVVNFKENHKSAmJiAhVVNFKENBSVJP
KQpAQCAtNjQ4LDkgKzYzOSw5IEBAIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4gR3JhcGhp
Y3NDb250ZXh0OjpjcmVhdGVDb21wYXRpYmxlQnVmZmVyKGNvbnN0IEZsb2F0CiAgICAgcmV0dXJu
IGJ1ZmZlcjsKIH0KIAotYm9vbCBHcmFwaGljc0NvbnRleHQ6OmlzQ29tcGF0aWJsZVdpdGhCdWZm
ZXIoSW1hZ2VCdWZmZXIqIGJ1ZmZlcikgY29uc3QKK2Jvb2wgR3JhcGhpY3NDb250ZXh0Ojppc0Nv
bXBhdGlibGVXaXRoQnVmZmVyKEltYWdlQnVmZmVyJiBidWZmZXIpIGNvbnN0CiB7Ci0gICAgR3Jh
cGhpY3NDb250ZXh0JiBidWZmZXJDb250ZXh0ID0gYnVmZmVyLT5jb250ZXh0KCk7CisgICAgR3Jh
cGhpY3NDb250ZXh0JiBidWZmZXJDb250ZXh0ID0gYnVmZmVyLmNvbnRleHQoKTsKIAogICAgIHJl
dHVybiBzY2FsZXNNYXRjaChnZXRDVE0oKSwgYnVmZmVyQ29udGV4dC5nZXRDVE0oKSkgJiYgaXNB
Y2NlbGVyYXRlZENvbnRleHQoKSA9PSBidWZmZXJDb250ZXh0LmlzQWNjZWxlcmF0ZWRDb250ZXh0
KCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFw
aGljc0NvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNz
Q29udGV4dC5oCmluZGV4IGQ4MDNhYzc1MjVhN2UwMzE4OGFiMWJiM2E4MjQ5MmI5MWVkYzI5NDgu
LmNhOWZhYjU5OGIxOWNlODVlNWIzM2QyMjk5MDk4MmU2NTA2MTk4MTEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oCkBAIC0zMDgs
MTcgKzMwOCwxNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICAgICAgV0VCQ09SRV9FWFBP
UlQgdm9pZCBzdHJva2VSZWN0KGNvbnN0IEZsb2F0UmVjdCYsIGZsb2F0IGxpbmVXaWR0aCk7CiAK
LSAgICAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkcmF3SW1hZ2UoSW1hZ2UqLCBDb2xvclNwYWNl
LCBjb25zdCBGbG9hdFBvaW50JiBkZXN0aW5hdGlvbiwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlv
bnMmID0gSW1hZ2VQYWludGluZ09wdGlvbnMoKSk7Ci0gICAgICAgIFdFQkNPUkVfRVhQT1JUIHZv
aWQgZHJhd0ltYWdlKEltYWdlKiwgQ29sb3JTcGFjZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5h
dGlvbiwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmID0gSW1hZ2VQYWludGluZ09wdGlvbnMo
KSk7Ci0gICAgICAgIHZvaWQgZHJhd0ltYWdlKEltYWdlKiwgQ29sb3JTcGFjZSwgY29uc3QgRmxv
YXRSZWN0JiBkZXN0aW5hdGlvbiwgY29uc3QgRmxvYXRSZWN0JiBzb3VyY2UsIGNvbnN0IEltYWdl
UGFpbnRpbmdPcHRpb25zJiA9IEltYWdlUGFpbnRpbmdPcHRpb25zKCkpOworICAgICAgICBXRUJD
T1JFX0VYUE9SVCB2b2lkIGRyYXdJbWFnZShJbWFnZSYsIENvbG9yU3BhY2UsIGNvbnN0IEZsb2F0
UG9pbnQmIGRlc3RpbmF0aW9uLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgPSBJbWFnZVBh
aW50aW5nT3B0aW9ucygpKTsKKyAgICAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkcmF3SW1hZ2Uo
SW1hZ2UmLCBDb2xvclNwYWNlLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBjb25zdCBJ
bWFnZVBhaW50aW5nT3B0aW9ucyYgPSBJbWFnZVBhaW50aW5nT3B0aW9ucygpKTsKKyAgICAgICAg
dm9pZCBkcmF3SW1hZ2UoSW1hZ2UmLCBDb2xvclNwYWNlLCBjb25zdCBGbG9hdFJlY3QmIGRlc3Rp
bmF0aW9uLCBjb25zdCBGbG9hdFJlY3QmIHNvdXJjZSwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlv
bnMmID0gSW1hZ2VQYWludGluZ09wdGlvbnMoKSk7CiAKLSAgICAgICAgdm9pZCBkcmF3VGlsZWRJ
bWFnZShJbWFnZSosIENvbG9yU3BhY2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24sIGNv
bnN0IEZsb2F0UG9pbnQmIHNvdXJjZSwgY29uc3QgRmxvYXRTaXplJiB0aWxlU2l6ZSwgY29uc3Qg
RmxvYXRTaXplJiBzcGFjaW5nLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgPSBJbWFnZVBh
aW50aW5nT3B0aW9ucygpKTsKLSAgICAgICAgdm9pZCBkcmF3VGlsZWRJbWFnZShJbWFnZSosIENv
bG9yU3BhY2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24sIGNvbnN0IEZsb2F0UmVjdCYg
c291cmNlLCBjb25zdCBGbG9hdFNpemUmIHRpbGVTY2FsZUZhY3RvciwKKyAgICAgICAgdm9pZCBk
cmF3VGlsZWRJbWFnZShJbWFnZSYsIENvbG9yU3BhY2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGlu
YXRpb24sIGNvbnN0IEZsb2F0UG9pbnQmIHNvdXJjZSwgY29uc3QgRmxvYXRTaXplJiB0aWxlU2l6
ZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5nLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYg
PSBJbWFnZVBhaW50aW5nT3B0aW9ucygpKTsKKyAgICAgICAgdm9pZCBkcmF3VGlsZWRJbWFnZShJ
bWFnZSYsIENvbG9yU3BhY2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24sIGNvbnN0IEZs
b2F0UmVjdCYgc291cmNlLCBjb25zdCBGbG9hdFNpemUmIHRpbGVTY2FsZUZhY3RvciwKICAgICAg
ICAgICAgIEltYWdlOjpUaWxlUnVsZSwgSW1hZ2U6OlRpbGVSdWxlLCBjb25zdCBJbWFnZVBhaW50
aW5nT3B0aW9ucyYgPSBJbWFnZVBhaW50aW5nT3B0aW9ucygpKTsKIAotICAgICAgICBXRUJDT1JF
X0VYUE9SVCB2b2lkIGRyYXdJbWFnZUJ1ZmZlcihJbWFnZUJ1ZmZlciosIENvbG9yU3BhY2UsIGNv
bnN0IEZsb2F0UG9pbnQmIGRlc3RpbmF0aW9uLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYg
PSBJbWFnZVBhaW50aW5nT3B0aW9ucygpKTsKLSAgICAgICAgdm9pZCBkcmF3SW1hZ2VCdWZmZXIo
SW1hZ2VCdWZmZXIqLCBDb2xvclNwYWNlLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBj
b25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgPSBJbWFnZVBhaW50aW5nT3B0aW9ucygpKTsKLSAg
ICAgICAgdm9pZCBkcmF3SW1hZ2VCdWZmZXIoSW1hZ2VCdWZmZXIqLCBDb2xvclNwYWNlLCBjb25z
dCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBjb25zdCBGbG9hdFJlY3QmIHNvdXJjZSwgY29uc3Qg
SW1hZ2VQYWludGluZ09wdGlvbnMmID0gSW1hZ2VQYWludGluZ09wdGlvbnMoKSk7CisgICAgICAg
IFdFQkNPUkVfRVhQT1JUIHZvaWQgZHJhd0ltYWdlQnVmZmVyKEltYWdlQnVmZmVyJiwgQ29sb3JT
cGFjZSwgY29uc3QgRmxvYXRQb2ludCYgZGVzdGluYXRpb24sIGNvbnN0IEltYWdlUGFpbnRpbmdP
cHRpb25zJiA9IEltYWdlUGFpbnRpbmdPcHRpb25zKCkpOworICAgICAgICB2b2lkIGRyYXdJbWFn
ZUJ1ZmZlcihJbWFnZUJ1ZmZlciYsIENvbG9yU3BhY2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGlu
YXRpb24sIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiA9IEltYWdlUGFpbnRpbmdPcHRpb25z
KCkpOworICAgICAgICB2b2lkIGRyYXdJbWFnZUJ1ZmZlcihJbWFnZUJ1ZmZlciYsIENvbG9yU3Bh
Y2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24sIGNvbnN0IEZsb2F0UmVjdCYgc291cmNl
LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgPSBJbWFnZVBhaW50aW5nT3B0aW9ucygpKTsK
IAogICAgICAgICB2b2lkIGRyYXdQYXR0ZXJuKEltYWdlJiwgY29uc3QgRmxvYXRSZWN0JiBzcmNS
ZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mLCBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgY29u
c3QgRmxvYXRTaXplJiBzcGFjaW5nLCBDb2xvclNwYWNlLCBDb21wb3NpdGVPcGVyYXRvciwgY29u
c3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgQmxlbmRNb2RlID0gQmxlbmRNb2RlTm9ybWFsKTsKIApA
QCAtMzMzLDcgKzMzMyw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdm9pZCBjbGlw
T3V0Um91bmRlZFJlY3QoY29uc3QgRmxvYXRSb3VuZGVkUmVjdCYpOwogICAgICAgICB2b2lkIGNs
aXBQYXRoKGNvbnN0IFBhdGgmLCBXaW5kUnVsZSk7CiAgICAgICAgIHZvaWQgY2xpcENvbnZleFBv
bHlnb24oc2l6ZV90IG51bVBvaW50cywgY29uc3QgRmxvYXRQb2ludCosIGJvb2wgYW50aWFsaWFz
ID0gdHJ1ZSk7Ci0gICAgICAgIHZvaWQgY2xpcFRvSW1hZ2VCdWZmZXIoSW1hZ2VCdWZmZXIqLCBj
b25zdCBGbG9hdFJlY3QmKTsKKyAgICAgICAgdm9pZCBjbGlwVG9JbWFnZUJ1ZmZlcihJbWFnZUJ1
ZmZlciYsIGNvbnN0IEZsb2F0UmVjdCYpOwogICAgICAgICAKICAgICAgICAgSW50UmVjdCBjbGlw
Qm91bmRzKCkgY29uc3Q7CiAKQEAgLTQ0Myw3ICs0NDMsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAgICAgICAgIC8vIENyZWF0ZSBhbiBpbWFnZSBidWZmZXIgY29tcGF0aWJsZSB3aXRoIHRoaXMg
Y29udGV4dCwgd2l0aCBzdWl0YWJsZSByZXNvbHV0aW9uCiAgICAgICAgIC8vIGZvciBkcmF3aW5n
IGludG8gdGhlIGJ1ZmZlciBhbmQgdGhlbiBpbnRvIHRoaXMgY29udGV4dC4KICAgICAgICAgc3Rk
Ojp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPiBjcmVhdGVDb21wYXRpYmxlQnVmZmVyKGNvbnN0IEZs
b2F0U2l6ZSYsIGJvb2wgaGFzQWxwaGEgPSB0cnVlKSBjb25zdDsKLSAgICAgICAgYm9vbCBpc0Nv
bXBhdGlibGVXaXRoQnVmZmVyKEltYWdlQnVmZmVyKikgY29uc3Q7CisgICAgICAgIGJvb2wgaXND
b21wYXRpYmxlV2l0aEJ1ZmZlcihJbWFnZUJ1ZmZlciYpIGNvbnN0OwogCiAgICAgICAgIC8vIFRo
aXMgZnVuY3Rpb24gYXBwbGllcyB0aGUgZGV2aWNlIHNjYWxlIGZhY3RvciB0byB0aGUgY29udGV4
dCwgbWFraW5nIHRoZSBjb250ZXh0IGNhcGFibGUgb2YKICAgICAgICAgLy8gYWN0aW5nIGFzIGEg
YmFzZS1sZXZlbCBjb250ZXh0IGZvciBhIEhpRFBJIGVudmlyb25tZW50LgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU2hhZG93Qmx1ci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9TaGFkb3dCbHVyLmNwcAppbmRleCBkNjYyMGM3OTAw
ODBhNmZkMGE3YzNkYjEzOWQ4OWUwMmZhMjk0ZWM3Li44NWFlZWVmZjcyZWUyNzBlNzYwMDgwZGM2
MGVlYjJiMDVjODE3NGEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9TaGFkb3dCbHVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9TaGFkb3dCbHVyLmNwcApAQCAtNDcyLDcgKzQ3Miw3IEBAIHZvaWQgU2hhZG93Qmx1cjo6ZHJh
d1NoYWRvd0J1ZmZlcihHcmFwaGljc0NvbnRleHQmIGdyYXBoaWNzQ29udGV4dCkKICAgICAgICAg
Ly8gYnV0IHdlIG1heSBub3QgaGF2ZSBjbGVhcmVkIGl0IGFsbCwgc28gY2xpcCB0byB0aGUgZmls
bGVkIHBhcnQgZmlyc3QuCiAgICAgICAgIGdyYXBoaWNzQ29udGV4dC5jbGlwKEZsb2F0UmVjdCht
X2xheWVyT3JpZ2luLCBtX2xheWVyU2l6ZSkpOwogICAgIH0KLSAgICBncmFwaGljc0NvbnRleHQu
Y2xpcFRvSW1hZ2VCdWZmZXIobV9sYXllckltYWdlLCBGbG9hdFJlY3QobV9sYXllck9yaWdpbiwg
YnVmZmVyU2l6ZSkpOworICAgIGdyYXBoaWNzQ29udGV4dC5jbGlwVG9JbWFnZUJ1ZmZlcigqbV9s
YXllckltYWdlLCBGbG9hdFJlY3QobV9sYXllck9yaWdpbiwgYnVmZmVyU2l6ZSkpOwogICAgIGdy
YXBoaWNzQ29udGV4dC5zZXRGaWxsQ29sb3IobV9jb2xvciwgbV9jb2xvclNwYWNlKTsKIAogICAg
IGdyYXBoaWNzQ29udGV4dC5jbGVhclNoYWRvdygpOwpAQCAtNTkzLDcgKzU5Myw3IEBAIHZvaWQg
U2hhZG93Qmx1cjo6ZHJhd1JlY3RTaGFkb3dXaXRob3V0VGlsaW5nKEdyYXBoaWNzQ29udGV4dCYg
Z3JhcGhpY3NDb250ZXh0LCBjCiAgICAgfQogICAgIAogICAgIGRyYXdTaGFkb3dCdWZmZXIoZ3Jh
cGhpY3NDb250ZXh0KTsKLSAgICBtX2xheWVySW1hZ2UgPSAwOworICAgIG1fbGF5ZXJJbWFnZSA9
IG51bGxwdHI7CiAgICAgU2NyYXRjaEJ1ZmZlcjo6c2luZ2xldG9uKCkuc2NoZWR1bGVTY3JhdGNo
QnVmZmVyUHVyZ2UoKTsKIH0KIApAQCAtNjM0LDcgKzYzNCw3IEBAIHZvaWQgU2hhZG93Qmx1cjo6
ZHJhd0luc2V0U2hhZG93V2l0aG91dFRpbGluZyhHcmFwaGljc0NvbnRleHQmIGdyYXBoaWNzQ29u
dGV4dCwKICAgICB9CiAgICAgCiAgICAgZHJhd1NoYWRvd0J1ZmZlcihncmFwaGljc0NvbnRleHQp
OwotICAgIG1fbGF5ZXJJbWFnZSA9IDA7CisgICAgbV9sYXllckltYWdlID0gbnVsbHB0cjsKICAg
ICBTY3JhdGNoQnVmZmVyOjpzaW5nbGV0b24oKS5zY2hlZHVsZVNjcmF0Y2hCdWZmZXJQdXJnZSgp
OwogfQogCkBAIC03MzEsNyArNzMxLDcgQEAgdm9pZCBTaGFkb3dCbHVyOjpkcmF3SW5zZXRTaGFk
b3dXaXRoVGlsaW5nKEdyYXBoaWNzQ29udGV4dCYgZ3JhcGhpY3NDb250ZXh0LCBjb24KICAgICAK
ICAgICBkcmF3TGF5ZXJQaWVjZXMoZ3JhcGhpY3NDb250ZXh0LCBkZXN0SG9sZUJvdW5kcywgaG9s
ZVJlY3QucmFkaWkoKSwgZWRnZVNpemUsIHRlbXBsYXRlU2l6ZSwgSW5uZXJTaGFkb3cpOwogCi0g
ICAgbV9sYXllckltYWdlID0gMDsKKyAgICBtX2xheWVySW1hZ2UgPSBudWxscHRyOwogICAgIFNj
cmF0Y2hCdWZmZXI6OnNpbmdsZXRvbigpLnNjaGVkdWxlU2NyYXRjaEJ1ZmZlclB1cmdlKCk7CiB9
CiAKQEAgLTc3Nyw3ICs3NzcsNyBAQCB2b2lkIFNoYWRvd0JsdXI6OmRyYXdSZWN0U2hhZG93V2l0
aFRpbGluZyhHcmFwaGljc0NvbnRleHQmIGdyYXBoaWNzQ29udGV4dCwgY29ucwogCiAgICAgZHJh
d0xheWVyUGllY2VzKGdyYXBoaWNzQ29udGV4dCwgc2hhZG93Qm91bmRzLCBzaGFkb3dlZFJlY3Qu
cmFkaWkoKSwgZWRnZVNpemUsIHRlbXBsYXRlU2l6ZSwgT3V0ZXJTaGFkb3cpOwogCi0gICAgbV9s
YXllckltYWdlID0gMDsKKyAgICBtX2xheWVySW1hZ2UgPSBudWxscHRyOwogICAgIFNjcmF0Y2hC
dWZmZXI6OnNpbmdsZXRvbigpLnNjaGVkdWxlU2NyYXRjaEJ1ZmZlclB1cmdlKCk7CiB9CiAKQEAg
LTgxNiw0NiArODE2LDQ2IEBAIHZvaWQgU2hhZG93Qmx1cjo6ZHJhd0xheWVyUGllY2VzKEdyYXBo
aWNzQ29udGV4dCYgZ3JhcGhpY3NDb250ZXh0LCBjb25zdCBGbG9hdFJlCiAgICAgLy8gVG9wIHNp
ZGUuCiAgICAgRmxvYXRSZWN0IHRpbGVSZWN0ID0gRmxvYXRSZWN0KGxlZnRTbGljZSwgMCwgdGVt
cGxhdGVTaWRlTGVuZ3RoLCB0b3BTbGljZSk7CiAgICAgRmxvYXRSZWN0IGRlc3RSZWN0ID0gRmxv
YXRSZWN0KGNlbnRlclJlY3QueCgpLCBjZW50ZXJSZWN0LnkoKSAtIHRvcFNsaWNlLCBjZW50ZXJS
ZWN0LndpZHRoKCksIHRvcFNsaWNlKTsKLSAgICBncmFwaGljc0NvbnRleHQuZHJhd0ltYWdlQnVm
ZmVyKG1fbGF5ZXJJbWFnZSwgQ29sb3JTcGFjZURldmljZVJHQiwgZGVzdFJlY3QsIHRpbGVSZWN0
KTsKKyAgICBncmFwaGljc0NvbnRleHQuZHJhd0ltYWdlQnVmZmVyKCptX2xheWVySW1hZ2UsIENv
bG9yU3BhY2VEZXZpY2VSR0IsIGRlc3RSZWN0LCB0aWxlUmVjdCk7CiAKICAgICAvLyBEcmF3IHRo
ZSBib3R0b20gc2lkZS4KICAgICB0aWxlUmVjdC5zZXRZKHRlbXBsYXRlU2l6ZS5oZWlnaHQoKSAt
IGJvdHRvbVNsaWNlKTsKICAgICB0aWxlUmVjdC5zZXRIZWlnaHQoYm90dG9tU2xpY2UpOwogICAg
IGRlc3RSZWN0LnNldFkoY2VudGVyUmVjdC5tYXhZKCkpOwogICAgIGRlc3RSZWN0LnNldEhlaWdo
dChib3R0b21TbGljZSk7Ci0gICAgZ3JhcGhpY3NDb250ZXh0LmRyYXdJbWFnZUJ1ZmZlcihtX2xh
eWVySW1hZ2UsIENvbG9yU3BhY2VEZXZpY2VSR0IsIGRlc3RSZWN0LCB0aWxlUmVjdCk7CisgICAg
Z3JhcGhpY3NDb250ZXh0LmRyYXdJbWFnZUJ1ZmZlcigqbV9sYXllckltYWdlLCBDb2xvclNwYWNl
RGV2aWNlUkdCLCBkZXN0UmVjdCwgdGlsZVJlY3QpOwogCiAgICAgLy8gTGVmdCBzaWRlLgogICAg
IHRpbGVSZWN0ID0gRmxvYXRSZWN0KDAsIHRvcFNsaWNlLCBsZWZ0U2xpY2UsIHRlbXBsYXRlU2lk
ZUxlbmd0aCk7CiAgICAgZGVzdFJlY3QgPSBGbG9hdFJlY3QoY2VudGVyUmVjdC54KCkgLSBsZWZ0
U2xpY2UsIGNlbnRlclJlY3QueSgpLCBsZWZ0U2xpY2UsIGNlbnRlclJlY3QuaGVpZ2h0KCkpOwot
ICAgIGdyYXBoaWNzQ29udGV4dC5kcmF3SW1hZ2VCdWZmZXIobV9sYXllckltYWdlLCBDb2xvclNw
YWNlRGV2aWNlUkdCLCBkZXN0UmVjdCwgdGlsZVJlY3QpOworICAgIGdyYXBoaWNzQ29udGV4dC5k
cmF3SW1hZ2VCdWZmZXIoKm1fbGF5ZXJJbWFnZSwgQ29sb3JTcGFjZURldmljZVJHQiwgZGVzdFJl
Y3QsIHRpbGVSZWN0KTsKIAogICAgIC8vIFJpZ2h0IHNpZGUuCiAgICAgdGlsZVJlY3Quc2V0WCh0
ZW1wbGF0ZVNpemUud2lkdGgoKSAtIHJpZ2h0U2xpY2UpOwogICAgIHRpbGVSZWN0LnNldFdpZHRo
KHJpZ2h0U2xpY2UpOwogICAgIGRlc3RSZWN0LnNldFgoY2VudGVyUmVjdC5tYXhYKCkpOwogICAg
IGRlc3RSZWN0LnNldFdpZHRoKHJpZ2h0U2xpY2UpOwotICAgIGdyYXBoaWNzQ29udGV4dC5kcmF3
SW1hZ2VCdWZmZXIobV9sYXllckltYWdlLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBkZXN0UmVjdCwg
dGlsZVJlY3QpOworICAgIGdyYXBoaWNzQ29udGV4dC5kcmF3SW1hZ2VCdWZmZXIoKm1fbGF5ZXJJ
bWFnZSwgQ29sb3JTcGFjZURldmljZVJHQiwgZGVzdFJlY3QsIHRpbGVSZWN0KTsKIAogICAgIC8v
IFRvcCBsZWZ0IGNvcm5lci4KICAgICB0aWxlUmVjdCA9IEZsb2F0UmVjdCgwLCAwLCBsZWZ0U2xp
Y2UsIHRvcFNsaWNlKTsKICAgICBkZXN0UmVjdCA9IEZsb2F0UmVjdChjZW50ZXJSZWN0LngoKSAt
IGxlZnRTbGljZSwgY2VudGVyUmVjdC55KCkgLSB0b3BTbGljZSwgbGVmdFNsaWNlLCB0b3BTbGlj
ZSk7Ci0gICAgZ3JhcGhpY3NDb250ZXh0LmRyYXdJbWFnZUJ1ZmZlcihtX2xheWVySW1hZ2UsIENv
bG9yU3BhY2VEZXZpY2VSR0IsIGRlc3RSZWN0LCB0aWxlUmVjdCk7CisgICAgZ3JhcGhpY3NDb250
ZXh0LmRyYXdJbWFnZUJ1ZmZlcigqbV9sYXllckltYWdlLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBk
ZXN0UmVjdCwgdGlsZVJlY3QpOwogCiAgICAgLy8gVG9wIHJpZ2h0IGNvcm5lci4KICAgICB0aWxl
UmVjdCA9IEZsb2F0UmVjdCh0ZW1wbGF0ZVNpemUud2lkdGgoKSAtIHJpZ2h0U2xpY2UsIDAsIHJp
Z2h0U2xpY2UsIHRvcFNsaWNlKTsKICAgICBkZXN0UmVjdCA9IEZsb2F0UmVjdChjZW50ZXJSZWN0
Lm1heFgoKSwgY2VudGVyUmVjdC55KCkgLSB0b3BTbGljZSwgcmlnaHRTbGljZSwgdG9wU2xpY2Up
OwotICAgIGdyYXBoaWNzQ29udGV4dC5kcmF3SW1hZ2VCdWZmZXIobV9sYXllckltYWdlLCBDb2xv
clNwYWNlRGV2aWNlUkdCLCBkZXN0UmVjdCwgdGlsZVJlY3QpOworICAgIGdyYXBoaWNzQ29udGV4
dC5kcmF3SW1hZ2VCdWZmZXIoKm1fbGF5ZXJJbWFnZSwgQ29sb3JTcGFjZURldmljZVJHQiwgZGVz
dFJlY3QsIHRpbGVSZWN0KTsKIAogICAgIC8vIEJvdHRvbSByaWdodCBjb3JuZXIuCiAgICAgdGls
ZVJlY3QgPSBGbG9hdFJlY3QodGVtcGxhdGVTaXplLndpZHRoKCkgLSByaWdodFNsaWNlLCB0ZW1w
bGF0ZVNpemUuaGVpZ2h0KCkgLSBib3R0b21TbGljZSwgcmlnaHRTbGljZSwgYm90dG9tU2xpY2Up
OwogICAgIGRlc3RSZWN0ID0gRmxvYXRSZWN0KGNlbnRlclJlY3QubWF4WCgpLCBjZW50ZXJSZWN0
Lm1heFkoKSwgcmlnaHRTbGljZSwgYm90dG9tU2xpY2UpOwotICAgIGdyYXBoaWNzQ29udGV4dC5k
cmF3SW1hZ2VCdWZmZXIobV9sYXllckltYWdlLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBkZXN0UmVj
dCwgdGlsZVJlY3QpOworICAgIGdyYXBoaWNzQ29udGV4dC5kcmF3SW1hZ2VCdWZmZXIoKm1fbGF5
ZXJJbWFnZSwgQ29sb3JTcGFjZURldmljZVJHQiwgZGVzdFJlY3QsIHRpbGVSZWN0KTsKIAogICAg
IC8vIEJvdHRvbSBsZWZ0IGNvcm5lci4KICAgICB0aWxlUmVjdCA9IEZsb2F0UmVjdCgwLCB0ZW1w
bGF0ZVNpemUuaGVpZ2h0KCkgLSBib3R0b21TbGljZSwgbGVmdFNsaWNlLCBib3R0b21TbGljZSk7
CiAgICAgZGVzdFJlY3QgPSBGbG9hdFJlY3QoY2VudGVyUmVjdC54KCkgLSBsZWZ0U2xpY2UsIGNl
bnRlclJlY3QubWF4WSgpLCBsZWZ0U2xpY2UsIGJvdHRvbVNsaWNlKTsKLSAgICBncmFwaGljc0Nv
bnRleHQuZHJhd0ltYWdlQnVmZmVyKG1fbGF5ZXJJbWFnZSwgQ29sb3JTcGFjZURldmljZVJHQiwg
ZGVzdFJlY3QsIHRpbGVSZWN0KTsKKyAgICBncmFwaGljc0NvbnRleHQuZHJhd0ltYWdlQnVmZmVy
KCptX2xheWVySW1hZ2UsIENvbG9yU3BhY2VEZXZpY2VSR0IsIGRlc3RSZWN0LCB0aWxlUmVjdCk7
CiB9CiAKIApAQCAtOTE1LDkgKzkxNSw5IEBAIHZvaWQgU2hhZG93Qmx1cjo6ZW5kU2hhZG93TGF5
ZXIoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KQogICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2
ZXIgc3RhdGVTYXZlKGNvbnRleHQpOwogCiAgICAgY29udGV4dC5jbGVhclNoYWRvdygpOwotICAg
IGNvbnRleHQuZHJhd0ltYWdlQnVmZmVyKG1fbGF5ZXJJbWFnZSwgQ29sb3JTcGFjZURldmljZVJH
QiwgRmxvYXRSZWN0KHJvdW5kZWRJbnRQb2ludChtX2xheWVyT3JpZ2luKSwgbV9sYXllclNpemUp
LCBGbG9hdFJlY3QoRmxvYXRQb2ludCgpLCBtX2xheWVyU2l6ZSksIGNvbnRleHQuY29tcG9zaXRl
T3BlcmF0aW9uKCkpOworICAgIGNvbnRleHQuZHJhd0ltYWdlQnVmZmVyKCptX2xheWVySW1hZ2Us
IENvbG9yU3BhY2VEZXZpY2VSR0IsIEZsb2F0UmVjdChyb3VuZGVkSW50UG9pbnQobV9sYXllck9y
aWdpbiksIG1fbGF5ZXJTaXplKSwgRmxvYXRSZWN0KEZsb2F0UG9pbnQoKSwgbV9sYXllclNpemUp
LCBjb250ZXh0LmNvbXBvc2l0ZU9wZXJhdGlvbigpKTsKIAotICAgIG1fbGF5ZXJJbWFnZSA9IDA7
CisgICAgbV9sYXllckltYWdlID0gbnVsbHB0cjsKICAgICBTY3JhdGNoQnVmZmVyOjpzaW5nbGV0
b24oKS5zY2hlZHVsZVNjcmF0Y2hCdWZmZXJQdXJnZSgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm8u
Y3BwCmluZGV4IGE5N2M1OGQyMWQwNWViMDg0Y2QwMzNkYjg5NTM3OGJmNTIwMjU3MTkuLjNlNTIx
M2Y4NmRhNjUxMmRlNjFkZmE1YmY5ZjY1YWU3MWM4MmUzZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm8uY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm8u
Y3BwCkBAIC0xNzAsNyArMTcwLDcgQEAgdm9pZCBJbWFnZUJ1ZmZlcjo6ZHJhdyhHcmFwaGljc0Nv
bnRleHQmIGRlc3RpbmF0aW9uQ29udGV4dCwgQ29sb3JTcGFjZSBzdHlsZUNvbG8KIHsKICAgICBC
YWNraW5nU3RvcmVDb3B5IGNvcHlNb2RlID0gJmRlc3RpbmF0aW9uQ29udGV4dCA9PSAmY29udGV4
dCgpID8gQ29weUJhY2tpbmdTdG9yZSA6IERvbnRDb3B5QmFja2luZ1N0b3JlOwogICAgIFJlZlB0
cjxJbWFnZT4gaW1hZ2UgPSBjb3B5SW1hZ2UoY29weU1vZGUpOwotICAgIGRlc3RpbmF0aW9uQ29u
dGV4dC5kcmF3SW1hZ2UoaW1hZ2UuZ2V0KCksIHN0eWxlQ29sb3JTcGFjZSwgZGVzdFJlY3QsIHNy
Y1JlY3QsIEltYWdlUGFpbnRpbmdPcHRpb25zKG9wLCBibGVuZE1vZGUsIEltYWdlT3JpZW50YXRp
b25EZXNjcmlwdGlvbigpLCB1c2VMb3dRdWFsaXR5U2NhbGUpKTsKKyAgICBkZXN0aW5hdGlvbkNv
bnRleHQuZHJhd0ltYWdlKCppbWFnZSwgc3R5bGVDb2xvclNwYWNlLCBkZXN0UmVjdCwgc3JjUmVj
dCwgSW1hZ2VQYWludGluZ09wdGlvbnMob3AsIGJsZW5kTW9kZSwgSW1hZ2VPcmllbnRhdGlvbkRl
c2NyaXB0aW9uKCksIHVzZUxvd1F1YWxpdHlTY2FsZSkpOwogfQogCiB2b2lkIEltYWdlQnVmZmVy
OjpkcmF3UGF0dGVybihHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYg
c3JjUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBwYXR0ZXJuVHJhbnNmb3JtLApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUERGRG9jdW1lbnRJbWFn
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9QREZEb2N1bWVudElt
YWdlLmNwcAppbmRleCBmNGIwNDg1NzFlYzk4Mzk2MTNjNDRkMjQ5ZDJiNDJhNzk1NGNkZmU5Li44
ZWUyYjgyNGM1OTJhMzFlOGZmMmFmNzE1ZjM3NDcyNmMwZWQyZTJhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9QREZEb2N1bWVudEltYWdlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9QREZEb2N1bWVudEltYWdlLmNw
cApAQCAtMTkwLDcgKzE5MCw3IEBAIHZvaWQgUERGRG9jdW1lbnRJbWFnZTo6ZHJhdyhHcmFwaGlj
c0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwKICAgICAgICAgY29u
dGV4dC5zZXRDb21wb3NpdGVPcGVyYXRpb24ob3ApOwogCiAgICAgICAgIGlmIChtX2NhY2hlZElt
YWdlQnVmZmVyKQotICAgICAgICAgICAgY29udGV4dC5kcmF3SW1hZ2VCdWZmZXIobV9jYWNoZWRJ
bWFnZUJ1ZmZlci5nZXQoKSwgQ29sb3JTcGFjZURldmljZVJHQiwgZHN0UmVjdCk7CisgICAgICAg
ICAgICBjb250ZXh0LmRyYXdJbWFnZUJ1ZmZlcigqbV9jYWNoZWRJbWFnZUJ1ZmZlciwgQ29sb3JT
cGFjZURldmljZVJHQiwgZHN0UmVjdCk7CiAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgdHJh
bnNmb3JtQ29udGV4dEZvclBhaW50aW5nKGNvbnRleHQsIGRzdFJlY3QsIHNyY1JlY3QpOwogICAg
ICAgICAgICAgZHJhd1BERlBhZ2UoY29udGV4dCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQmxlbmQuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUJsZW5kLmNwcAppbmRleCAwODlmNDUwNTIzMzlh
ZTBiMmJmMjk2YTBmYTc0ZTU2YzExYzg3ZmI1Li5lZGVmNTc4MDE4MmZjYzgwZmU1Nzk1MzkxMmQ0
YWQ5NWEzNzZhMDNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9maWx0ZXJzL0ZFQmxlbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2ZpbHRlcnMvRkVCbGVuZC5jcHAKQEAgLTcyLDExICs3MiwxMSBAQCB2b2lkIEZFQmxlbmQ6
OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZSgpCiAKICAgICBJbWFnZUJ1ZmZlciogaW1hZ2VCdWZmZXIg
PSBpbi0+YXNJbWFnZUJ1ZmZlcigpOwogICAgIEltYWdlQnVmZmVyKiBpbWFnZUJ1ZmZlcjIgPSBp
bjItPmFzSW1hZ2VCdWZmZXIoKTsKLSAgICBBU1NFUlQoaW1hZ2VCdWZmZXIpOwotICAgIEFTU0VS
VChpbWFnZUJ1ZmZlcjIpOworICAgIGlmICghaW1hZ2VCdWZmZXIgfHwgIWltYWdlQnVmZmVyMikK
KyAgICAgICAgcmV0dXJuOwogCi0gICAgZmlsdGVyQ29udGV4dC5kcmF3SW1hZ2VCdWZmZXIoaW1h
Z2VCdWZmZXIyLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBkcmF3aW5nUmVnaW9uT2ZJbnB1dEltYWdl
KGluMi0+YWJzb2x1dGVQYWludFJlY3QoKSkpOwotICAgIGZpbHRlckNvbnRleHQuZHJhd0ltYWdl
QnVmZmVyKGltYWdlQnVmZmVyLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBkcmF3aW5nUmVnaW9uT2ZJ
bnB1dEltYWdlKGluLT5hYnNvbHV0ZVBhaW50UmVjdCgpKSwgSW50UmVjdChJbnRQb2ludCgpLCBp
bWFnZUJ1ZmZlci0+bG9naWNhbFNpemUoKSksIEltYWdlUGFpbnRpbmdPcHRpb25zKENvbXBvc2l0
ZVNvdXJjZU92ZXIsIG1fbW9kZSkpOworICAgIGZpbHRlckNvbnRleHQuZHJhd0ltYWdlQnVmZmVy
KCppbWFnZUJ1ZmZlcjIsIENvbG9yU3BhY2VEZXZpY2VSR0IsIGRyYXdpbmdSZWdpb25PZklucHV0
SW1hZ2UoaW4yLT5hYnNvbHV0ZVBhaW50UmVjdCgpKSk7CisgICAgZmlsdGVyQ29udGV4dC5kcmF3
SW1hZ2VCdWZmZXIoKmltYWdlQnVmZmVyLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBkcmF3aW5nUmVn
aW9uT2ZJbnB1dEltYWdlKGluLT5hYnNvbHV0ZVBhaW50UmVjdCgpKSwgSW50UmVjdChJbnRQb2lu
dCgpLCBpbWFnZUJ1ZmZlci0+bG9naWNhbFNpemUoKSksIEltYWdlUGFpbnRpbmdPcHRpb25zKENv
bXBvc2l0ZVNvdXJjZU92ZXIsIG1fbW9kZSkpOwogfQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb2xvck1hdHJpeC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29sb3JNYXRyaXgu
Y3BwCmluZGV4IDg3NjZhZWNiMjIzM2M5YWE5M2IzZjU5OGZmMmU2MzEzOGYyNTY4ZmYuLjc4ZmZk
Y2U0ZDU5MWFkNmE4MTIyZmU2Mzg4MjM5M2ZmNTUxYWU3NzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb2xvck1hdHJpeC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNvbG9yTWF0cml4LmNw
cApAQCAtMTQ3LDcgKzE0Nyw5IEBAIHZvaWQgRkVDb2xvck1hdHJpeDo6cGxhdGZvcm1BcHBseVNv
ZnR3YXJlKCkKICAgICBpZiAoIXJlc3VsdEltYWdlKQogICAgICAgICByZXR1cm47CiAKLSAgICBy
ZXN1bHRJbWFnZS0+Y29udGV4dCgpLmRyYXdJbWFnZUJ1ZmZlcihpbi0+YXNJbWFnZUJ1ZmZlcigp
LCBDb2xvclNwYWNlRGV2aWNlUkdCLCBkcmF3aW5nUmVnaW9uT2ZJbnB1dEltYWdlKGluLT5hYnNv
bHV0ZVBhaW50UmVjdCgpKSk7CisgICAgSW1hZ2VCdWZmZXIqIGluQnVmZmVyID0gaW4tPmFzSW1h
Z2VCdWZmZXIoKTsKKyAgICBpZiAoaW5CdWZmZXIpCisgICAgICAgIHJlc3VsdEltYWdlLT5jb250
ZXh0KCkuZHJhd0ltYWdlQnVmZmVyKCppbkJ1ZmZlciwgQ29sb3JTcGFjZURldmljZVJHQiwgZHJh
d2luZ1JlZ2lvbk9mSW5wdXRJbWFnZShpbi0+YWJzb2x1dGVQYWludFJlY3QoKSkpOwogCiAgICAg
SW50UmVjdCBpbWFnZVJlY3QoSW50UG9pbnQoKSwgcmVzdWx0SW1hZ2UtPmxvZ2ljYWxTaXplKCkp
OwogICAgIFJlZlB0cjxVaW50OENsYW1wZWRBcnJheT4gcGl4ZWxBcnJheSA9IHJlc3VsdEltYWdl
LT5nZXRVbm11bHRpcGxpZWRJbWFnZURhdGEoaW1hZ2VSZWN0KTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb21wb3NpdGUuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNvbXBvc2l0ZS5jcHAKaW5k
ZXggZmNjODFlODcxMzhmYmRmM2VjMTA3NzA5Njk3YjQxYTM3OWExOTc5YS4uOWExNTZmODk0ZGYx
NDNlZThlMzg1ODY4NzhkMDcwOTIyOGUxYmZlOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNvbXBvc2l0ZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNvbXBvc2l0ZS5jcHAKQEAgLTI3Niwx
MyArMjc2LDEzIEBAIHZvaWQgRkVDb21wb3NpdGU6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZSgpCiAK
ICAgICBJbWFnZUJ1ZmZlciogaW1hZ2VCdWZmZXIgPSBpbi0+YXNJbWFnZUJ1ZmZlcigpOwogICAg
IEltYWdlQnVmZmVyKiBpbWFnZUJ1ZmZlcjIgPSBpbjItPmFzSW1hZ2VCdWZmZXIoKTsKLSAgICBB
U1NFUlQoaW1hZ2VCdWZmZXIpOwotICAgIEFTU0VSVChpbWFnZUJ1ZmZlcjIpOworICAgIGlmICgh
aW1hZ2VCdWZmZXIgfHwgIWltYWdlQnVmZmVyMikKKyAgICAgICAgcmV0dXJuOwogCiAgICAgc3dp
dGNoIChtX3R5cGUpIHsKICAgICBjYXNlIEZFQ09NUE9TSVRFX09QRVJBVE9SX09WRVI6Ci0gICAg
ICAgIGZpbHRlckNvbnRleHQuZHJhd0ltYWdlQnVmZmVyKGltYWdlQnVmZmVyMiwgQ29sb3JTcGFj
ZURldmljZVJHQiwgZHJhd2luZ1JlZ2lvbk9mSW5wdXRJbWFnZShpbjItPmFic29sdXRlUGFpbnRS
ZWN0KCkpKTsKLSAgICAgICAgZmlsdGVyQ29udGV4dC5kcmF3SW1hZ2VCdWZmZXIoaW1hZ2VCdWZm
ZXIsIENvbG9yU3BhY2VEZXZpY2VSR0IsIGRyYXdpbmdSZWdpb25PZklucHV0SW1hZ2UoaW4tPmFi
c29sdXRlUGFpbnRSZWN0KCkpKTsKKyAgICAgICAgZmlsdGVyQ29udGV4dC5kcmF3SW1hZ2VCdWZm
ZXIoKmltYWdlQnVmZmVyMiwgQ29sb3JTcGFjZURldmljZVJHQiwgZHJhd2luZ1JlZ2lvbk9mSW5w
dXRJbWFnZShpbjItPmFic29sdXRlUGFpbnRSZWN0KCkpKTsKKyAgICAgICAgZmlsdGVyQ29udGV4
dC5kcmF3SW1hZ2VCdWZmZXIoKmltYWdlQnVmZmVyLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBkcmF3
aW5nUmVnaW9uT2ZJbnB1dEltYWdlKGluLT5hYnNvbHV0ZVBhaW50UmVjdCgpKSk7CiAgICAgICAg
IGJyZWFrOwogICAgIGNhc2UgRkVDT01QT1NJVEVfT1BFUkFUT1JfSU46IHsKICAgICAgICAgLy8g
QXBwbGllcyBvbmx5IHRvIHRoZSBpbnRlcnNlY3RlZCByZWdpb24uCkBAIC0yOTQsMjEgKzI5NCwy
MSBAQCB2b2lkIEZFQ29tcG9zaXRlOjpwbGF0Zm9ybUFwcGx5U29mdHdhcmUoKQogICAgICAgICBJ
bnRSZWN0IGFkanVzdGVkRGVzdGluYXRpb25SZWN0ID0gZGVzdGluYXRpb25SZWN0IC0gYWJzb2x1
dGVQYWludFJlY3QoKS5sb2NhdGlvbigpOwogICAgICAgICBJbnRSZWN0IHNvdXJjZVJlY3QgPSBk
ZXN0aW5hdGlvblJlY3QgLSBpbi0+YWJzb2x1dGVQYWludFJlY3QoKS5sb2NhdGlvbigpOwogICAg
ICAgICBJbnRSZWN0IHNvdXJjZTJSZWN0ID0gZGVzdGluYXRpb25SZWN0IC0gaW4yLT5hYnNvbHV0
ZVBhaW50UmVjdCgpLmxvY2F0aW9uKCk7Ci0gICAgICAgIGZpbHRlckNvbnRleHQuZHJhd0ltYWdl
QnVmZmVyKGltYWdlQnVmZmVyMiwgQ29sb3JTcGFjZURldmljZVJHQiwgYWRqdXN0ZWREZXN0aW5h
dGlvblJlY3QsIHNvdXJjZTJSZWN0KTsKLSAgICAgICAgZmlsdGVyQ29udGV4dC5kcmF3SW1hZ2VC
dWZmZXIoaW1hZ2VCdWZmZXIsIENvbG9yU3BhY2VEZXZpY2VSR0IsIGFkanVzdGVkRGVzdGluYXRp
b25SZWN0LCBzb3VyY2VSZWN0LCBDb21wb3NpdGVTb3VyY2VJbik7CisgICAgICAgIGZpbHRlckNv
bnRleHQuZHJhd0ltYWdlQnVmZmVyKCppbWFnZUJ1ZmZlcjIsIENvbG9yU3BhY2VEZXZpY2VSR0Is
IGFkanVzdGVkRGVzdGluYXRpb25SZWN0LCBzb3VyY2UyUmVjdCk7CisgICAgICAgIGZpbHRlckNv
bnRleHQuZHJhd0ltYWdlQnVmZmVyKCppbWFnZUJ1ZmZlciwgQ29sb3JTcGFjZURldmljZVJHQiwg
YWRqdXN0ZWREZXN0aW5hdGlvblJlY3QsIHNvdXJjZVJlY3QsIENvbXBvc2l0ZVNvdXJjZUluKTsK
ICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgIGNhc2UgRkVDT01QT1NJVEVfT1BFUkFUT1JfT1VU
OgotICAgICAgICBmaWx0ZXJDb250ZXh0LmRyYXdJbWFnZUJ1ZmZlcihpbWFnZUJ1ZmZlciwgQ29s
b3JTcGFjZURldmljZVJHQiwgZHJhd2luZ1JlZ2lvbk9mSW5wdXRJbWFnZShpbi0+YWJzb2x1dGVQ
YWludFJlY3QoKSkpOwotICAgICAgICBmaWx0ZXJDb250ZXh0LmRyYXdJbWFnZUJ1ZmZlcihpbWFn
ZUJ1ZmZlcjIsIENvbG9yU3BhY2VEZXZpY2VSR0IsIGRyYXdpbmdSZWdpb25PZklucHV0SW1hZ2Uo
aW4yLT5hYnNvbHV0ZVBhaW50UmVjdCgpKSwgSW50UmVjdChJbnRQb2ludCgpLCBpbWFnZUJ1ZmZl
cjItPmxvZ2ljYWxTaXplKCkpLCBDb21wb3NpdGVEZXN0aW5hdGlvbk91dCk7CisgICAgICAgIGZp
bHRlckNvbnRleHQuZHJhd0ltYWdlQnVmZmVyKCppbWFnZUJ1ZmZlciwgQ29sb3JTcGFjZURldmlj
ZVJHQiwgZHJhd2luZ1JlZ2lvbk9mSW5wdXRJbWFnZShpbi0+YWJzb2x1dGVQYWludFJlY3QoKSkp
OworICAgICAgICBmaWx0ZXJDb250ZXh0LmRyYXdJbWFnZUJ1ZmZlcigqaW1hZ2VCdWZmZXIyLCBD
b2xvclNwYWNlRGV2aWNlUkdCLCBkcmF3aW5nUmVnaW9uT2ZJbnB1dEltYWdlKGluMi0+YWJzb2x1
dGVQYWludFJlY3QoKSksIEludFJlY3QoSW50UG9pbnQoKSwgaW1hZ2VCdWZmZXIyLT5sb2dpY2Fs
U2l6ZSgpKSwgQ29tcG9zaXRlRGVzdGluYXRpb25PdXQpOwogICAgICAgICBicmVhazsKICAgICBj
YXNlIEZFQ09NUE9TSVRFX09QRVJBVE9SX0FUT1A6Ci0gICAgICAgIGZpbHRlckNvbnRleHQuZHJh
d0ltYWdlQnVmZmVyKGltYWdlQnVmZmVyMiwgQ29sb3JTcGFjZURldmljZVJHQiwgZHJhd2luZ1Jl
Z2lvbk9mSW5wdXRJbWFnZShpbjItPmFic29sdXRlUGFpbnRSZWN0KCkpKTsKLSAgICAgICAgZmls
dGVyQ29udGV4dC5kcmF3SW1hZ2VCdWZmZXIoaW1hZ2VCdWZmZXIsIENvbG9yU3BhY2VEZXZpY2VS
R0IsIGRyYXdpbmdSZWdpb25PZklucHV0SW1hZ2UoaW4tPmFic29sdXRlUGFpbnRSZWN0KCkpLCBJ
bnRSZWN0KEludFBvaW50KCksIGltYWdlQnVmZmVyLT5sb2dpY2FsU2l6ZSgpKSwgQ29tcG9zaXRl
U291cmNlQXRvcCk7CisgICAgICAgIGZpbHRlckNvbnRleHQuZHJhd0ltYWdlQnVmZmVyKCppbWFn
ZUJ1ZmZlcjIsIENvbG9yU3BhY2VEZXZpY2VSR0IsIGRyYXdpbmdSZWdpb25PZklucHV0SW1hZ2Uo
aW4yLT5hYnNvbHV0ZVBhaW50UmVjdCgpKSk7CisgICAgICAgIGZpbHRlckNvbnRleHQuZHJhd0lt
YWdlQnVmZmVyKCppbWFnZUJ1ZmZlciwgQ29sb3JTcGFjZURldmljZVJHQiwgZHJhd2luZ1JlZ2lv
bk9mSW5wdXRJbWFnZShpbi0+YWJzb2x1dGVQYWludFJlY3QoKSksIEludFJlY3QoSW50UG9pbnQo
KSwgaW1hZ2VCdWZmZXItPmxvZ2ljYWxTaXplKCkpLCBDb21wb3NpdGVTb3VyY2VBdG9wKTsKICAg
ICAgICAgYnJlYWs7CiAgICAgY2FzZSBGRUNPTVBPU0lURV9PUEVSQVRPUl9YT1I6Ci0gICAgICAg
IGZpbHRlckNvbnRleHQuZHJhd0ltYWdlQnVmZmVyKGltYWdlQnVmZmVyMiwgQ29sb3JTcGFjZURl
dmljZVJHQiwgZHJhd2luZ1JlZ2lvbk9mSW5wdXRJbWFnZShpbjItPmFic29sdXRlUGFpbnRSZWN0
KCkpKTsKLSAgICAgICAgZmlsdGVyQ29udGV4dC5kcmF3SW1hZ2VCdWZmZXIoaW1hZ2VCdWZmZXIs
IENvbG9yU3BhY2VEZXZpY2VSR0IsIGRyYXdpbmdSZWdpb25PZklucHV0SW1hZ2UoaW4tPmFic29s
dXRlUGFpbnRSZWN0KCkpLCBJbnRSZWN0KEludFBvaW50KCksIGltYWdlQnVmZmVyLT5sb2dpY2Fs
U2l6ZSgpKSwgQ29tcG9zaXRlWE9SKTsKKyAgICAgICAgZmlsdGVyQ29udGV4dC5kcmF3SW1hZ2VC
dWZmZXIoKmltYWdlQnVmZmVyMiwgQ29sb3JTcGFjZURldmljZVJHQiwgZHJhd2luZ1JlZ2lvbk9m
SW5wdXRJbWFnZShpbjItPmFic29sdXRlUGFpbnRSZWN0KCkpKTsKKyAgICAgICAgZmlsdGVyQ29u
dGV4dC5kcmF3SW1hZ2VCdWZmZXIoKmltYWdlQnVmZmVyLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBk
cmF3aW5nUmVnaW9uT2ZJbnB1dEltYWdlKGluLT5hYnNvbHV0ZVBhaW50UmVjdCgpKSwgSW50UmVj
dChJbnRQb2ludCgpLCBpbWFnZUJ1ZmZlci0+bG9naWNhbFNpemUoKSksIENvbXBvc2l0ZVhPUik7
CiAgICAgICAgIGJyZWFrOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIGJyZWFrOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRURyb3BTaGFkb3cu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRURyb3BTaGFk
b3cuY3BwCmluZGV4IDYzM2ViYzY2MGIxZDc2Y2I0YmQ5ODg2ZTAxMWUwYjgzNzViOTVhYjkuLmRj
ZTVhYWUyNWYyOTdhYTg4YjZmOGE4M2NiYzJkYTg0YjAwY2U5NmUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVEcm9wU2hhZG93LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFRHJvcFNoYWRvdy5j
cHAKQEAgLTg4LDEwICs4OCwxMiBAQCB2b2lkIEZFRHJvcFNoYWRvdzo6cGxhdGZvcm1BcHBseVNv
ZnR3YXJlKCkKICAgICBkcmF3aW5nUmVnaW9uV2l0aE9mZnNldC5tb3ZlKG9mZnNldCk7CiAKICAg
ICBJbWFnZUJ1ZmZlciogc291cmNlSW1hZ2UgPSBpbi0+YXNJbWFnZUJ1ZmZlcigpOwotICAgIEFT
U0VSVChzb3VyY2VJbWFnZSk7CisgICAgaWYgKCFzb3VyY2VJbWFnZSkKKyAgICAgICAgcmV0dXJu
OworCiAgICAgR3JhcGhpY3NDb250ZXh0JiByZXN1bHRDb250ZXh0ID0gcmVzdWx0SW1hZ2UtPmNv
bnRleHQoKTsKICAgICByZXN1bHRDb250ZXh0LnNldEFscGhhKG1fc2hhZG93T3BhY2l0eSk7Ci0g
ICAgcmVzdWx0Q29udGV4dC5kcmF3SW1hZ2VCdWZmZXIoc291cmNlSW1hZ2UsIENvbG9yU3BhY2VE
ZXZpY2VSR0IsIGRyYXdpbmdSZWdpb25XaXRoT2Zmc2V0KTsKKyAgICByZXN1bHRDb250ZXh0LmRy
YXdJbWFnZUJ1ZmZlcigqc291cmNlSW1hZ2UsIENvbG9yU3BhY2VEZXZpY2VSR0IsIGRyYXdpbmdS
ZWdpb25XaXRoT2Zmc2V0KTsKICAgICByZXN1bHRDb250ZXh0LnNldEFscGhhKDEpOwogCiAgICAg
U2hhZG93Qmx1ciBjb250ZXh0U2hhZG93KGJsdXJSYWRpdXMsIG9mZnNldCwgbV9zaGFkb3dDb2xv
ciwgQ29sb3JTcGFjZURldmljZVJHQik7CkBAIC0xMDgsNyArMTEwLDcgQEAgdm9pZCBGRURyb3BT
aGFkb3c6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZSgpCiAgICAgcmVzdWx0Q29udGV4dC5maWxsUmVj
dChGbG9hdFJlY3QoRmxvYXRQb2ludCgpLCBhYnNvbHV0ZVBhaW50UmVjdCgpLnNpemUoKSksIG1f
c2hhZG93Q29sb3IsIENvbG9yU3BhY2VEZXZpY2VSR0IpOwogICAgIHJlc3VsdENvbnRleHQuc2V0
Q29tcG9zaXRlT3BlcmF0aW9uKENvbXBvc2l0ZURlc3RpbmF0aW9uT3Zlcik7CiAKLSAgICByZXN1
bHRJbWFnZS0+Y29udGV4dCgpLmRyYXdJbWFnZUJ1ZmZlcihzb3VyY2VJbWFnZSwgQ29sb3JTcGFj
ZURldmljZVJHQiwgZHJhd2luZ1JlZ2lvbik7CisgICAgcmVzdWx0SW1hZ2UtPmNvbnRleHQoKS5k
cmF3SW1hZ2VCdWZmZXIoKnNvdXJjZUltYWdlLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBkcmF3aW5n
UmVnaW9uKTsKIH0KIAogdm9pZCBGRURyb3BTaGFkb3c6OmR1bXAoKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRU1lcmdlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVNZXJnZS5jcHAKaW5kZXggZmNj
ZGQ0NWUzODVhZTQyMzBiYTNjOTE4ZDcwYTI5OTI3NGFiMzAwNS4uYTAyZDlmZGFlMjQ1YTVmZWRj
NTE5YzgzMDBjMDMzMWQwZDcyMWJlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZmlsdGVycy9GRU1lcmdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFTWVyZ2UuY3BwCkBAIC00NywxMCArNDcsMTIgQEAgdm9p
ZCBGRU1lcmdlOjpwbGF0Zm9ybUFwcGx5U29mdHdhcmUoKQogICAgIGlmICghcmVzdWx0SW1hZ2Up
CiAgICAgICAgIHJldHVybjsKIAorCiAgICAgR3JhcGhpY3NDb250ZXh0JiBmaWx0ZXJDb250ZXh0
ID0gcmVzdWx0SW1hZ2UtPmNvbnRleHQoKTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwg
c2l6ZTsgKytpKSB7CiAgICAgICAgIEZpbHRlckVmZmVjdCogaW4gPSBpbnB1dEVmZmVjdChpKTsK
LSAgICAgICAgZmlsdGVyQ29udGV4dC5kcmF3SW1hZ2VCdWZmZXIoaW4tPmFzSW1hZ2VCdWZmZXIo
KSwgQ29sb3JTcGFjZURldmljZVJHQiwgZHJhd2luZ1JlZ2lvbk9mSW5wdXRJbWFnZShpbi0+YWJz
b2x1dGVQYWludFJlY3QoKSkpOworICAgICAgICBpZiAoSW1hZ2VCdWZmZXIqIGluQnVmZmVyID0g
aW4tPmFzSW1hZ2VCdWZmZXIoKSkKKyAgICAgICAgICAgIGZpbHRlckNvbnRleHQuZHJhd0ltYWdl
QnVmZmVyKCppbkJ1ZmZlciwgQ29sb3JTcGFjZURldmljZVJHQiwgZHJhd2luZ1JlZ2lvbk9mSW5w
dXRJbWFnZShpbi0+YWJzb2x1dGVQYWludFJlY3QoKSkpOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRU9mZnNldC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFT2Zmc2V0LmNwcApp
bmRleCBmZmVhNjM4NjgxYWE0YTk3ZTg0MDgwYTFiN2M4N2U4NDM5ZDQ5OWZjLi4xOGEyZTc5MWQ1
ODNiYWNkY2QxYzdiZTZkMDU3ZjUwYjliNTE5MWNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFT2Zmc2V0LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFT2Zmc2V0LmNwcApAQCAtNzksNyArNzks
OCBAQCB2b2lkIEZFT2Zmc2V0OjpwbGF0Zm9ybUFwcGx5U29mdHdhcmUoKQogICAgIEZpbHRlckVm
ZmVjdCogaW4gPSBpbnB1dEVmZmVjdCgwKTsKIAogICAgIEltYWdlQnVmZmVyKiByZXN1bHRJbWFn
ZSA9IGNyZWF0ZUltYWdlQnVmZmVyUmVzdWx0KCk7Ci0gICAgaWYgKCFyZXN1bHRJbWFnZSkKKyAg
ICBJbWFnZUJ1ZmZlciogaW5CdWZmZXIgPSBpbi0+YXNJbWFnZUJ1ZmZlcigpOworICAgIGlmICgh
cmVzdWx0SW1hZ2UgfHwgIWluQnVmZmVyKQogICAgICAgICByZXR1cm47CiAKICAgICBzZXRJc0Fs
cGhhSW1hZ2UoaW4tPmlzQWxwaGFJbWFnZSgpKTsKQEAgLTg3LDcgKzg4LDcgQEAgdm9pZCBGRU9m
ZnNldDo6cGxhdGZvcm1BcHBseVNvZnR3YXJlKCkKICAgICBGbG9hdFJlY3QgZHJhd2luZ1JlZ2lv
biA9IGRyYXdpbmdSZWdpb25PZklucHV0SW1hZ2UoaW4tPmFic29sdXRlUGFpbnRSZWN0KCkpOwog
ICAgIEZpbHRlciYgZmlsdGVyID0gdGhpcy0+ZmlsdGVyKCk7CiAgICAgZHJhd2luZ1JlZ2lvbi5t
b3ZlKGZpbHRlci5hcHBseUhvcml6b250YWxTY2FsZShtX2R4KSwgZmlsdGVyLmFwcGx5VmVydGlj
YWxTY2FsZShtX2R5KSk7Ci0gICAgcmVzdWx0SW1hZ2UtPmNvbnRleHQoKS5kcmF3SW1hZ2VCdWZm
ZXIoaW4tPmFzSW1hZ2VCdWZmZXIoKSwgQ29sb3JTcGFjZURldmljZVJHQiwgZHJhd2luZ1JlZ2lv
bik7CisgICAgcmVzdWx0SW1hZ2UtPmNvbnRleHQoKS5kcmF3SW1hZ2VCdWZmZXIoKmluQnVmZmVy
LCBDb2xvclNwYWNlRGV2aWNlUkdCLCBkcmF3aW5nUmVnaW9uKTsKIH0KIAogdm9pZCBGRU9mZnNl
dDo6ZHVtcCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9m
aWx0ZXJzL0ZFVGlsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0
ZXJzL0ZFVGlsZS5jcHAKaW5kZXggNWRjNDdkZDZlY2Y5MzFhZWE1ZjgwOWRiYmQ3NTRkMDBhMzVj
ZWExYi4uYTE4N2I3NGZmZmZkZDVhOTc0NGRjNjk3Y2NjNWVlYWMyMGVkZjMwMiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRVRpbGUuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVUaWxlLmNwcApA
QCAtNDcsNyArNDcsOCBAQCB2b2lkIEZFVGlsZTo6cGxhdGZvcm1BcHBseVNvZnR3YXJlKCkKICAg
ICBGaWx0ZXJFZmZlY3QqIGluID0gaW5wdXRFZmZlY3QoMCk7CiAKICAgICBJbWFnZUJ1ZmZlciog
cmVzdWx0SW1hZ2UgPSBjcmVhdGVJbWFnZUJ1ZmZlclJlc3VsdCgpOwotICAgIGlmICghcmVzdWx0
SW1hZ2UpCisgICAgSW1hZ2VCdWZmZXIqIGluQnVmZmVyID0gaW4tPmFzSW1hZ2VCdWZmZXIoKTsK
KyAgICBpZiAoIXJlc3VsdEltYWdlIHx8ICFpbkJ1ZmZlcikKICAgICAgICAgcmV0dXJuOwogCiAg
ICAgc2V0SXNBbHBoYUltYWdlKGluLT5pc0FscGhhSW1hZ2UoKSk7CkBAIC02OSw3ICs3MCw3IEBA
IHZvaWQgRkVUaWxlOjpwbGF0Zm9ybUFwcGx5U29mdHdhcmUoKQogCiAgICAgR3JhcGhpY3NDb250
ZXh0JiB0aWxlSW1hZ2VDb250ZXh0ID0gdGlsZUltYWdlLT5jb250ZXh0KCk7CiAgICAgdGlsZUlt
YWdlQ29udGV4dC50cmFuc2xhdGUoLWluTWF4RWZmZWN0TG9jYXRpb24ueCgpLCAtaW5NYXhFZmZl
Y3RMb2NhdGlvbi55KCkpOwotICAgIHRpbGVJbWFnZUNvbnRleHQuZHJhd0ltYWdlQnVmZmVyKGlu
LT5hc0ltYWdlQnVmZmVyKCksIENvbG9yU3BhY2VEZXZpY2VSR0IsIGluLT5hYnNvbHV0ZVBhaW50
UmVjdCgpLmxvY2F0aW9uKCkpOworICAgIHRpbGVJbWFnZUNvbnRleHQuZHJhd0ltYWdlQnVmZmVy
KCppbkJ1ZmZlciwgQ29sb3JTcGFjZURldmljZVJHQiwgaW4tPmFic29sdXRlUGFpbnRSZWN0KCku
bG9jYXRpb24oKSk7CiAKICAgICBhdXRvIHRpbGVJbWFnZUNvcHkgPSB0aWxlSW1hZ2UtPmNvcHlJ
bWFnZShDb3B5QmFja2luZ1N0b3JlKTsKICAgICBpZiAoIXRpbGVJbWFnZUNvcHkpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL1NvdXJjZUFscGhh
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvU291cmNlQWxw
aGEuY3BwCmluZGV4IDcwYjFkNTU2NGY2ZjAzYjEzMzk4MGFiZDU5OWFjMzA2ODBiZTU2MDYuLjFl
M2I5MWEyMjQ0OGYxOGNhYTQxNmZiMTA2YTI4NDBhMDAyYTMxYmIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvU291cmNlQWxwaGEuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvU291cmNlQWxwaGEuY3Bw
CkBAIC01NCwxMSArNTQsMTIgQEAgdm9pZCBTb3VyY2VBbHBoYTo6cGxhdGZvcm1BcHBseVNvZnR3
YXJlKCkKICAgICBHcmFwaGljc0NvbnRleHQmIGZpbHRlckNvbnRleHQgPSByZXN1bHRJbWFnZS0+
Y29udGV4dCgpOwogCiAgICAgSW1hZ2VCdWZmZXIqIGltYWdlQnVmZmVyID0gaW5wdXRFZmZlY3Qo
MCktPmFzSW1hZ2VCdWZmZXIoKTsKLSAgICBBU1NFUlQoaW1hZ2VCdWZmZXIpOworICAgIGlmICgh
aW1hZ2VCdWZmZXIpCisgICAgICAgIHJldHVybjsKIAogICAgIEZsb2F0UmVjdCBpbWFnZVJlY3Qo
RmxvYXRQb2ludCgpLCBhYnNvbHV0ZVBhaW50UmVjdCgpLnNpemUoKSk7CiAgICAgZmlsdGVyQ29u
dGV4dC5maWxsUmVjdChpbWFnZVJlY3QsIENvbG9yOjpibGFjaywgQ29sb3JTcGFjZURldmljZVJH
Qik7Ci0gICAgZmlsdGVyQ29udGV4dC5kcmF3SW1hZ2VCdWZmZXIoaW1hZ2VCdWZmZXIsIENvbG9y
U3BhY2VEZXZpY2VSR0IsIEludFBvaW50KCksIENvbXBvc2l0ZURlc3RpbmF0aW9uSW4pOworICAg
IGZpbHRlckNvbnRleHQuZHJhd0ltYWdlQnVmZmVyKCppbWFnZUJ1ZmZlciwgQ29sb3JTcGFjZURl
dmljZVJHQiwgSW50UG9pbnQoKSwgQ29tcG9zaXRlRGVzdGluYXRpb25Jbik7CiB9CiAKIHZvaWQg
U291cmNlQWxwaGE6OmR1bXAoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZmlsdGVycy9Tb3VyY2VHcmFwaGljLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2ZpbHRlcnMvU291cmNlR3JhcGhpYy5jcHAKaW5kZXggMzE5OGIwMzc4M2E1
YzJiNDlhZWE5ZWViM2U5Zjg5ODIyODNkYmM4My4uZGY0ZWU2ZjA3OWM1NDU3NTQ1OWU4NDM2OTI2
NTlkNmNkMzMwMGViYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZmlsdGVycy9Tb3VyY2VHcmFwaGljLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9maWx0ZXJzL1NvdXJjZUdyYXBoaWMuY3BwCkBAIC00OSwxMiArNDksMTQgQEAg
dm9pZCBTb3VyY2VHcmFwaGljOjpkZXRlcm1pbmVBYnNvbHV0ZVBhaW50UmVjdCgpCiAKIHZvaWQg
U291cmNlR3JhcGhpYzo6cGxhdGZvcm1BcHBseVNvZnR3YXJlKCkKIHsKLSAgICBJbWFnZUJ1ZmZl
ciogcmVzdWx0SW1hZ2UgPSBjcmVhdGVJbWFnZUJ1ZmZlclJlc3VsdCgpOwogICAgIEZpbHRlciYg
ZmlsdGVyID0gdGhpcy0+ZmlsdGVyKCk7Ci0gICAgaWYgKCFyZXN1bHRJbWFnZSB8fCAhZmlsdGVy
LnNvdXJjZUltYWdlKCkpCisKKyAgICBJbWFnZUJ1ZmZlciogcmVzdWx0SW1hZ2UgPSBjcmVhdGVJ
bWFnZUJ1ZmZlclJlc3VsdCgpOworICAgIEltYWdlQnVmZmVyKiBzb3VyY2VJbWFnZSA9IGZpbHRl
ci5zb3VyY2VJbWFnZSgpOworICAgIGlmICghcmVzdWx0SW1hZ2UgfHwgIXNvdXJjZUltYWdlKQog
ICAgICAgICByZXR1cm47CiAKLSAgICByZXN1bHRJbWFnZS0+Y29udGV4dCgpLmRyYXdJbWFnZUJ1
ZmZlcihmaWx0ZXIuc291cmNlSW1hZ2UoKSwgQ29sb3JTcGFjZURldmljZVJHQiwgSW50UG9pbnQo
KSk7CisgICAgcmVzdWx0SW1hZ2UtPmNvbnRleHQoKS5kcmF3SW1hZ2VCdWZmZXIoKnNvdXJjZUlt
YWdlLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBJbnRQb2ludCgpKTsKIH0KIAogdm9pZCBTb3VyY2VH
cmFwaGljOjpkdW1wKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVH
U3RyZWFtZXJCYXNlLmNwcAppbmRleCBjODQyZTQyMDgyZDEyNWUwOTU4YzI2OGRmODg4NDc2YTAx
MjM4NmFlLi5kMzcwYjFhMmU1NmUwYjEyYmFmY2NhYzNmNzYzMWU4NjI0ODhkNjJhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5
ZXJQcml2YXRlR1N0cmVhbWVyQmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2UuY3BwCkBA
IC01MjUsOCArNTI1LDggQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlOjpw
YWludChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2EKICAgICBpZiAoIWdzdElt
YWdlKQogICAgICAgICByZXR1cm47CiAKLSAgICBjb250ZXh0LmRyYXdJbWFnZShyZWludGVycHJl
dF9jYXN0PEltYWdlKj4oZ3N0SW1hZ2UtPmltYWdlKCkuZ2V0KCkpLCBDb2xvclNwYWNlU1JHQiwK
LSAgICAgICAgcmVjdCwgZ3N0SW1hZ2UtPnJlY3QoKSwgQ29tcG9zaXRlQ29weSk7CisgICAgaWYg
KEltYWdlKiBpbWFnZSA9IHJlaW50ZXJwcmV0X2Nhc3Q8SW1hZ2UqPihnc3RJbWFnZS0+aW1hZ2Uo
KS5nZXQoKSkpCisgICAgICAgIGNvbnRleHQuZHJhd0ltYWdlKCppbWFnZSwgQ29sb3JTcGFjZVNS
R0IsIHJlY3QsIGdzdEltYWdlLT5yZWN0KCksIENvbXBvc2l0ZUNvcHkpOwogfQogCiAjaWYgVVNF
KFRFWFRVUkVfTUFQUEVSX0dMKSAmJiAhVVNFKENPT1JESU5BVEVEX0dSQVBISUNTKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVk
L0Nvb3JkaW5hdGVkSW1hZ2VCYWNraW5nLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEltYWdlQmFja2luZy5jcHAKaW5k
ZXggMGQzNzdkMTlkZDllM2VjZWYwMTg5Y2I5MGNiOTE4NjExN2RiMmI1Zi4uNjk4Mjg1NDg2OTFh
MDU4ODE5ZWVjNzZmNDI5N2VmNTZjMjY4ZGM2NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkSW1hZ2VCYWNr
aW5nLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29v
cmRpbmF0ZWQvQ29vcmRpbmF0ZWRJbWFnZUJhY2tpbmcuY3BwCkBAIC0zNSw3ICszNSw3IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgSW1hZ2VCYWNraW5nU3VyZmFjZUNsaWVudCA6IHB1
YmxpYyBDb29yZGluYXRlZFN1cmZhY2U6OkNsaWVudCB7CiBwdWJsaWM6Ci0gICAgSW1hZ2VCYWNr
aW5nU3VyZmFjZUNsaWVudChJbWFnZSogaW1hZ2UsIGNvbnN0IEludFJlY3QmIHJlY3QpCisgICAg
SW1hZ2VCYWNraW5nU3VyZmFjZUNsaWVudChJbWFnZSYgaW1hZ2UsIGNvbnN0IEludFJlY3QmIHJl
Y3QpCiAgICAgICAgIDogbV9pbWFnZShpbWFnZSkKICAgICAgICAgLCBtX3JlY3QocmVjdCkKICAg
ICB7CkBAIC00Nyw3ICs0Nyw3IEBAIHB1YmxpYzoKICAgICB9CiAKIHByaXZhdGU6Ci0gICAgSW1h
Z2UqIG1faW1hZ2U7CisgICAgSW1hZ2UmIG1faW1hZ2U7CiAgICAgSW50UmVjdCBtX3JlY3Q7CiB9
OwogCkBAIC0xMjgsNyArMTI4LDcgQEAgdm9pZCBDb29yZGluYXRlZEltYWdlQmFja2luZzo6dXBk
YXRlKCkKIAogICAgIEludFJlY3QgcmVjdChJbnRQb2ludDo6emVybygpLCBJbnRTaXplKG1faW1h
Z2UtPnNpemUoKSkpOwogCi0gICAgSW1hZ2VCYWNraW5nU3VyZmFjZUNsaWVudCBzdXJmYWNlQ2xp
ZW50KG1faW1hZ2UuZ2V0KCksIHJlY3QpOworICAgIEltYWdlQmFja2luZ1N1cmZhY2VDbGllbnQg
c3VyZmFjZUNsaWVudCgqbV9pbWFnZSwgcmVjdCk7CiAgICAgbV9zdXJmYWNlLT5wYWludFRvU3Vy
ZmFjZShyZWN0LCAmc3VyZmFjZUNsaWVudCk7CiAKICAgICBtX25hdGl2ZUltYWdlUHRyID0gbV9p
bWFnZS0+bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21hYy9UaGVtZU1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21hYy9UaGVtZU1hYy5tbQppbmRleCBmZjI5YTFkZWNkOGI3MjBkNDRiMTQyMzA5YWFjY2UzYmJl
ZWRhMThmLi5lNzU5MWJlZGJmNGQ1ZTBkNjllNzBkNzNlNzA0MjllZGY4MWJhMTViIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvVGhlbWVNYWMubW0KKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWFjL1RoZW1lTWFjLm1tCkBAIC02ODYsMTEgKzY4NiwxMyBAQCBi
b29sIFRoZW1lTWFjOjpkcmF3Q2VsbE9yRm9jdXNSaW5nV2l0aFZpZXdJbnRvQ29udGV4dChOU0Nl
bGwgKmNlbGwsIEdyYXBoaWNzQ29udAogICAgIGlmICh1c2VJbWFnZUJ1ZmZlcikgewogICAgICAg
ICBOU1JlY3QgaW1hZ2VCdWZmZXJEcmF3UmVjdCA9IE5TUmVjdChGbG9hdFJlY3QoYnV0dG9uRm9j
dXNSZWN0T3V0bGluZVdpZHRoLCBidXR0b25Gb2N1c1JlY3RPdXRsaW5lV2lkdGgsIHJlY3Qud2lk
dGgoKSwgcmVjdC5oZWlnaHQoKSkpOwogICAgICAgICBhdXRvIGltYWdlQnVmZmVyID0gSW1hZ2VC
dWZmZXI6OmNyZWF0ZUNvbXBhdGlibGVCdWZmZXIocmVjdC5zaXplKCkgKyAyICogRmxvYXRTaXpl
KGJ1dHRvbkZvY3VzUmVjdE91dGxpbmVXaWR0aCwgYnV0dG9uRm9jdXNSZWN0T3V0bGluZVdpZHRo
KSwgZGV2aWNlU2NhbGVGYWN0b3IsIENvbG9yU3BhY2VTUkdCLCBjb250ZXh0LCBmYWxzZSk7Cisg
ICAgICAgIGlmICghaW1hZ2VCdWZmZXIpCisgICAgICAgICAgICByZXR1cm4gbmVlZHNSZXBhaW50
OwogICAgICAgICB7CiAgICAgICAgICAgICBMb2NhbEN1cnJlbnRHcmFwaGljc0NvbnRleHQgbG9j
YWxDb250ZXh0KGltYWdlQnVmZmVyLT5jb250ZXh0KCkpOwogICAgICAgICAgICAgbmVlZHNSZXBh
aW50ID0gZHJhd0NlbGxPckZvY3VzUmluZ0ludG9SZWN0V2l0aFZpZXcoY2VsbCwgaW1hZ2VCdWZm
ZXJEcmF3UmVjdCwgdmlldywgZHJhd0J1dHRvbkNlbGwsIGRyYXdGb2N1c1JpbmcpOwogICAgICAg
ICB9Ci0gICAgICAgIGNvbnRleHQuZHJhd0ltYWdlQnVmZmVyKGltYWdlQnVmZmVyLmdldCgpLCBD
b2xvclNwYWNlU1JHQiwgcmVjdC5sb2NhdGlvbigpIC0gRmxvYXRTaXplKGJ1dHRvbkZvY3VzUmVj
dE91dGxpbmVXaWR0aCwgYnV0dG9uRm9jdXNSZWN0T3V0bGluZVdpZHRoKSk7CisgICAgICAgIGNv
bnRleHQuZHJhd0ltYWdlQnVmZmVyKCppbWFnZUJ1ZmZlciwgQ29sb3JTcGFjZVNSR0IsIHJlY3Qu
bG9jYXRpb24oKSAtIEZsb2F0U2l6ZShidXR0b25Gb2N1c1JlY3RPdXRsaW5lV2lkdGgsIGJ1dHRv
bkZvY3VzUmVjdE91dGxpbmVXaWR0aCkpOwogICAgICAgICByZXR1cm4gbmVlZHNSZXBhaW50Owog
ICAgIH0KICAgICBpZiAoZHJhd0J1dHRvbkNlbGwpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvRmlsdGVyRWZmZWN0UmVuZGVyZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL0ZpbHRlckVmZmVjdFJlbmRlcmVyLmNwcAppbmRleCAyNWVkMWQ1NDE5N2EwY2ZhMmEz
YWRmNzcxMmI3NDQ2NDFhZjkyM2Y5Li5mZDUwOWU4ZWFkNTk2OTdkNDYwZDM4ZDMxM2UzZTA0MTZm
YTY1ODc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvRmlsdGVyRWZmZWN0
UmVuZGVyZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9GaWx0ZXJFZmZlY3RS
ZW5kZXJlci5jcHAKQEAgLTQyOSw4ICs0MjksMTAgQEAgdm9pZCBGaWx0ZXJFZmZlY3RSZW5kZXJl
ckhlbHBlcjo6YXBwbHlGaWx0ZXJFZmZlY3QoR3JhcGhpY3NDb250ZXh0JiBkZXN0aW5hdGlvbkMK
ICAgICBMYXlvdXRSZWN0IGRlc3RSZWN0ID0gZmlsdGVyLT5vdXRwdXRSZWN0KCk7CiAgICAgZGVz
dFJlY3QubW92ZShtX3BhaW50T2Zmc2V0LngoKSwgbV9wYWludE9mZnNldC55KCkpOwogCi0gICAg
ZGVzdGluYXRpb25Db250ZXh0LmRyYXdJbWFnZUJ1ZmZlcihmaWx0ZXItPm91dHB1dCgpLCBtX3Jl
bmRlckxheWVyLT5yZW5kZXJlcigpLnN0eWxlKCkuY29sb3JTcGFjZSgpLAotICAgICAgICBzbmFw
UmVjdFRvRGV2aWNlUGl4ZWxzKGRlc3RSZWN0LCBtX3JlbmRlckxheWVyLT5yZW5kZXJlcigpLmRv
Y3VtZW50KCkuZGV2aWNlU2NhbGVGYWN0b3IoKSkpOworICAgIGlmIChJbWFnZUJ1ZmZlciogb3V0
cHV0QnVmZmVyID0gZmlsdGVyLT5vdXRwdXQoKSkgeworICAgICAgICBkZXN0aW5hdGlvbkNvbnRl
eHQuZHJhd0ltYWdlQnVmZmVyKCpvdXRwdXRCdWZmZXIsIG1fcmVuZGVyTGF5ZXItPnJlbmRlcmVy
KCkuc3R5bGUoKS5jb2xvclNwYWNlKCksCisgICAgICAgICAgICBzbmFwUmVjdFRvRGV2aWNlUGl4
ZWxzKGRlc3RSZWN0LCBtX3JlbmRlckxheWVyLT5yZW5kZXJlcigpLmRvY3VtZW50KCkuZGV2aWNl
U2NhbGVGYWN0b3IoKSkpOworICAgIH0KIAogICAgIGZpbHRlci0+Y2xlYXJJbnRlcm1lZGlhdGVS
ZXN1bHRzKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW1hZ2VR
dWFsaXR5Q29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW1hZ2VRdWFs
aXR5Q29udHJvbGxlci5jcHAKaW5kZXggNmZiODM0MjQyNzQ3OTQ0MThjYTgwMzNkN2I0ZGFkNzFi
N2QxMzRhZS4uYTBjMjExNDViODQ1ODg5MzIyYTE0ZGI0N2JiY2I4OTQ1MDI3MDAxNCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0ltYWdlUXVhbGl0eUNvbnRyb2xsZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbWFnZVF1YWxpdHlDb250cm9sbGVyLmNw
cApAQCAtOTksMTEgKzk5LDExIEBAIHZvaWQgSW1hZ2VRdWFsaXR5Q29udHJvbGxlcjo6cmVzdGFy
dFRpbWVyKCkKICAgICBtX3RpbWVyLnN0YXJ0T25lU2hvdChjTG93UXVhbGl0eVRpbWVUaHJlc2hv
bGQpOwogfQogCi1ib29sIEltYWdlUXVhbGl0eUNvbnRyb2xsZXI6OnNob3VsZFBhaW50QXRMb3dR
dWFsaXR5KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgUmVuZGVyQm94TW9kZWxPYmplY3QqIG9i
amVjdCwgSW1hZ2UqIGltYWdlLCBjb25zdCB2b2lkICpsYXllciwgY29uc3QgTGF5b3V0U2l6ZSYg
c2l6ZSkKK2Jvb2wgSW1hZ2VRdWFsaXR5Q29udHJvbGxlcjo6c2hvdWxkUGFpbnRBdExvd1F1YWxp
dHkoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBSZW5kZXJCb3hNb2RlbE9iamVjdCogb2JqZWN0
LCBJbWFnZSYgaW1hZ2UsIGNvbnN0IHZvaWQgKmxheWVyLCBjb25zdCBMYXlvdXRTaXplJiBzaXpl
KQogewogICAgIC8vIElmIHRoZSBpbWFnZSBpcyBub3QgYSBiaXRtYXAgaW1hZ2UsIHRoZW4gbm9u
ZSBvZiB0aGlzIGlzIHJlbGV2YW50IGFuZCB3ZSBqdXN0IHBhaW50IGF0IGhpZ2gKICAgICAvLyBx
dWFsaXR5LgotICAgIGlmICghaW1hZ2UgfHwgIShpbWFnZS0+aXNCaXRtYXBJbWFnZSgpIHx8IGlt
YWdlLT5pc1BERkRvY3VtZW50SW1hZ2UoKSkgfHwgY29udGV4dC5wYWludGluZ0Rpc2FibGVkKCkp
CisgICAgaWYgKCEoaW1hZ2UuaXNCaXRtYXBJbWFnZSgpIHx8IGltYWdlLmlzUERGRG9jdW1lbnRJ
bWFnZSgpKSB8fCBjb250ZXh0LnBhaW50aW5nRGlzYWJsZWQoKSkKICAgICAgICAgcmV0dXJuIGZh
bHNlOwogCiAgICAgc3dpdGNoIChvYmplY3QtPnN0eWxlKCkuaW1hZ2VSZW5kZXJpbmcoKSkgewpA
QCAtMTE4LDcgKzExOCw3IEBAIGJvb2wgSW1hZ2VRdWFsaXR5Q29udHJvbGxlcjo6c2hvdWxkUGFp
bnRBdExvd1F1YWxpdHkoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBSCiAKICAgICAvLyBNYWtl
IHN1cmUgdG8gdXNlIHRoZSB1bnpvb21lZCBpbWFnZSBzaXplLCBzaW5jZSBpZiBhIGZ1bGwgcGFn
ZSB6b29tIGlzIGluIGVmZmVjdCwgdGhlIGltYWdlCiAgICAgLy8gaXMgYWN0dWFsbHkgYmVpbmcg
c2NhbGVkLgotICAgIEludFNpemUgaW1hZ2VTaXplKGltYWdlLT53aWR0aCgpLCBpbWFnZS0+aGVp
Z2h0KCkpOworICAgIEludFNpemUgaW1hZ2VTaXplKGltYWdlLndpZHRoKCksIGltYWdlLmhlaWdo
dCgpKTsKIAogICAgIC8vIExvb2sgb3Vyc2VsdmVzIHVwIGluIHRoZSBoYXNodGFibGVzLgogICAg
IGF1dG8gaSA9IG1fb2JqZWN0TGF5ZXJTaXplTWFwLmZpbmQob2JqZWN0KTsKQEAgLTE1Niw3ICsx
NTYsNyBAQCBib29sIEltYWdlUXVhbGl0eUNvbnRyb2xsZXI6OnNob3VsZFBhaW50QXRMb3dRdWFs
aXR5KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgUgogCiAgICAgLy8gVGhlcmUgaXMgbm8gbmVl
ZCB0byBoYXNoIHNjYWxlZCBpbWFnZXMgdGhhdCBhbHdheXMgdXNlIGxvdyBxdWFsaXR5IG1vZGUg
d2hlbiB0aGUgcGFnZSBkZW1hbmRzIGl0LiBUaGlzIGlzIHRoZSBpQ2hhdCBjYXNlLgogICAgIGlm
IChtX3JlbmRlclZpZXcuZnJhbWUoKS5wYWdlKCktPmluTG93UXVhbGl0eUltYWdlSW50ZXJwb2xh
dGlvbk1vZGUoKSkgewotICAgICAgICBkb3VibGUgdG90YWxQaXhlbHMgPSBzdGF0aWNfY2FzdDxk
b3VibGU+KGltYWdlLT53aWR0aCgpKSAqIHN0YXRpY19jYXN0PGRvdWJsZT4oaW1hZ2UtPmhlaWdo
dCgpKTsKKyAgICAgICAgZG91YmxlIHRvdGFsUGl4ZWxzID0gc3RhdGljX2Nhc3Q8ZG91YmxlPihp
bWFnZS53aWR0aCgpKSAqIHN0YXRpY19jYXN0PGRvdWJsZT4oaW1hZ2UuaGVpZ2h0KCkpOwogICAg
ICAgICBpZiAodG90YWxQaXhlbHMgPiBjSW50ZXJwb2xhdGlvbkN1dG9mZikKICAgICAgICAgICAg
IHJldHVybiB0cnVlOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9JbWFnZVF1YWxpdHlDb250cm9sbGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW1h
Z2VRdWFsaXR5Q29udHJvbGxlci5oCmluZGV4IGQxNGRjNDlhYTc5YWYzMTVkYWM4ZTFkNTEyMWMz
NDAyNjBlZjY1ZTMuLjVmNzExNjQ3NTEwY2QyMmI5NjI1OTI2NzM1ODRmODZjMDgxZjU4OWMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbWFnZVF1YWxpdHlDb250cm9sbGVy
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0ltYWdlUXVhbGl0eUNvbnRyb2xsZXIu
aApAQCAtNDMsNyArNDMsNyBAQCBjbGFzcyBJbWFnZVF1YWxpdHlDb250cm9sbGVyIHsKIHB1Ymxp
YzoKICAgICBleHBsaWNpdCBJbWFnZVF1YWxpdHlDb250cm9sbGVyKGNvbnN0IFJlbmRlclZpZXcm
KTsKIAotICAgIGJvb2wgc2hvdWxkUGFpbnRBdExvd1F1YWxpdHkoR3JhcGhpY3NDb250ZXh0Jiwg
UmVuZGVyQm94TW9kZWxPYmplY3QqLCBJbWFnZSosIGNvbnN0IHZvaWQqIGxheWVyLCBjb25zdCBM
YXlvdXRTaXplJik7CisgICAgYm9vbCBzaG91bGRQYWludEF0TG93UXVhbGl0eShHcmFwaGljc0Nv
bnRleHQmLCBSZW5kZXJCb3hNb2RlbE9iamVjdCosIEltYWdlJiwgY29uc3Qgdm9pZCogbGF5ZXIs
IGNvbnN0IExheW91dFNpemUmKTsKICAgICB2b2lkIHJlbmRlcmVyV2lsbEJlRGVzdHJveWVkKFJl
bmRlckJveE1vZGVsT2JqZWN0JiByZW5kZXJlcikgeyByZW1vdmVPYmplY3QoJnJlbmRlcmVyKTsg
fQogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckJveE1vZGVsT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3hN
b2RlbE9iamVjdC5jcHAKaW5kZXggMWVkYzVhZmM5NGMxZDliMzBhYWUwMTA5MTg1YzUxOGMzNTEy
OTJlOC4uZDJhZGUwOTA4MGFkZTRhMWIyZTVjNDAzZmVmYTkyNWRjYWU5ZmVlZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuY3BwCkBAIC0x
NjEsNyArMTYxLDcgQEAgdm9pZCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6c3VzcGVuZEFuaW1hdGlv
bnMoZG91YmxlIHRpbWUpCiAgICAgbGF5ZXIoKS0+YmFja2luZygpLT5zdXNwZW5kQW5pbWF0aW9u
cyh0aW1lKTsKIH0KIAotYm9vbCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6c2hvdWxkUGFpbnRBdExv
d1F1YWxpdHkoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBJbWFnZSogaW1hZ2UsIGNvbnN0IHZv
aWQqIGxheWVyLCBjb25zdCBMYXlvdXRTaXplJiBzaXplKQorYm9vbCBSZW5kZXJCb3hNb2RlbE9i
amVjdDo6c2hvdWxkUGFpbnRBdExvd1F1YWxpdHkoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBJ
bWFnZSYgaW1hZ2UsIGNvbnN0IHZvaWQqIGxheWVyLCBjb25zdCBMYXlvdXRTaXplJiBzaXplKQog
ewogICAgIHJldHVybiB2aWV3KCkuaW1hZ2VRdWFsaXR5Q29udHJvbGxlcigpLnNob3VsZFBhaW50
QXRMb3dRdWFsaXR5KGNvbnRleHQsIHRoaXMsIGltYWdlLCBsYXllciwgc2l6ZSk7CiB9CkBAIC04
MzAsMTggKzgzMCwxNyBAQCB2b2lkIFJlbmRlckJveE1vZGVsT2JqZWN0OjpwYWludEZpbGxMYXll
ckV4dGVuZGVkKGNvbnN0IFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjbwogICAgIGlmICghYmFzZUJn
Q29sb3JPbmx5ICYmIHNob3VsZFBhaW50QmFja2dyb3VuZEltYWdlKSB7CiAgICAgICAgIEJhY2tn
cm91bmRJbWFnZUdlb21ldHJ5IGdlb21ldHJ5ID0gY2FsY3VsYXRlQmFja2dyb3VuZEltYWdlR2Vv
bWV0cnkocGFpbnRJbmZvLnBhaW50Q29udGFpbmVyLCAqYmdMYXllciwgcmVjdC5sb2NhdGlvbigp
LCBzY3JvbGxlZFBhaW50UmVjdCwgYmFja2dyb3VuZE9iamVjdCk7CiAgICAgICAgIGdlb21ldHJ5
LmNsaXAoTGF5b3V0UmVjdChwaXhlbFNuYXBwZWRSZWN0KSk7Ci0gICAgICAgIGlmICghZ2VvbWV0
cnkuZGVzdFJlY3QoKS5pc0VtcHR5KCkpIHsKKyAgICAgICAgUmVmUHRyPEltYWdlPiBpbWFnZTsK
KyAgICAgICAgaWYgKCFnZW9tZXRyeS5kZXN0UmVjdCgpLmlzRW1wdHkoKSAmJiAoaW1hZ2UgPSBi
Z0ltYWdlLT5pbWFnZShiYWNrZ3JvdW5kT2JqZWN0ID8gYmFja2dyb3VuZE9iamVjdCA6IHRoaXMs
IGdlb21ldHJ5LnRpbGVTaXplKCkpKSkgewogICAgICAgICAgICAgQ29tcG9zaXRlT3BlcmF0b3Ig
Y29tcG9zaXRlT3AgPSBvcCA9PSBDb21wb3NpdGVTb3VyY2VPdmVyID8gYmdMYXllci0+Y29tcG9z
aXRlKCkgOiBvcDsKLSAgICAgICAgICAgIGF1dG8gY2xpZW50Rm9yQmFja2dyb3VuZEltYWdlID0g
YmFja2dyb3VuZE9iamVjdCA/IGJhY2tncm91bmRPYmplY3QgOiB0aGlzOwotICAgICAgICAgICAg
UmVmUHRyPEltYWdlPiBpbWFnZSA9IGJnSW1hZ2UtPmltYWdlKGNsaWVudEZvckJhY2tncm91bmRJ
bWFnZSwgZ2VvbWV0cnkudGlsZVNpemUoKSk7CiAgICAgICAgICAgICBjb250ZXh0LnNldERyYXdM
dW1pbmFuY2VNYXNrKGJnTGF5ZXItPm1hc2tTb3VyY2VUeXBlKCkgPT0gTWFza0x1bWluYW5jZSk7
Ci0gICAgICAgICAgICBib29sIHVzZUxvd1F1YWxpdHlTY2FsaW5nID0gc2hvdWxkUGFpbnRBdExv
d1F1YWxpdHkoY29udGV4dCwgaW1hZ2UuZ2V0KCksIGJnTGF5ZXIsIGdlb21ldHJ5LnRpbGVTaXpl
KCkpOwotICAgICAgICAgICAgY29udGV4dC5kcmF3VGlsZWRJbWFnZShpbWFnZS5nZXQoKSwgc3R5
bGUoKS5jb2xvclNwYWNlKCksIGdlb21ldHJ5LmRlc3RSZWN0KCksIHRvTGF5b3V0UG9pbnQoZ2Vv
bWV0cnkucmVsYXRpdmVQaGFzZSgpKSwgZ2VvbWV0cnkudGlsZVNpemUoKSwgZ2VvbWV0cnkuc3Bh
Y2VTaXplKCksIEltYWdlUGFpbnRpbmdPcHRpb25zKGNvbXBvc2l0ZU9wLCBiZ0xheWVyLT5ibGVu
ZE1vZGUoKSwgSW1hZ2VPcmllbnRhdGlvbkRlc2NyaXB0aW9uKCksIHVzZUxvd1F1YWxpdHlTY2Fs
aW5nKSk7CisgICAgICAgICAgICBib29sIHVzZUxvd1F1YWxpdHlTY2FsaW5nID0gc2hvdWxkUGFp
bnRBdExvd1F1YWxpdHkoY29udGV4dCwgKmltYWdlLCBiZ0xheWVyLCBnZW9tZXRyeS50aWxlU2l6
ZSgpKTsKKyAgICAgICAgICAgIGNvbnRleHQuZHJhd1RpbGVkSW1hZ2UoKmltYWdlLCBzdHlsZSgp
LmNvbG9yU3BhY2UoKSwgZ2VvbWV0cnkuZGVzdFJlY3QoKSwgdG9MYXlvdXRQb2ludChnZW9tZXRy
eS5yZWxhdGl2ZVBoYXNlKCkpLCBnZW9tZXRyeS50aWxlU2l6ZSgpLCBnZW9tZXRyeS5zcGFjZVNp
emUoKSwgSW1hZ2VQYWludGluZ09wdGlvbnMoY29tcG9zaXRlT3AsIGJnTGF5ZXItPmJsZW5kTW9k
ZSgpLCBJbWFnZU9yaWVudGF0aW9uRGVzY3JpcHRpb24oKSwgdXNlTG93UXVhbGl0eVNjYWxpbmcp
KTsKICAgICAgICAgfQogICAgIH0KIAotICAgIGlmIChiZ0xheWVyLT5jbGlwKCkgPT0gVGV4dEZp
bGxCb3gpIHsKLSAgICAgICAgY29udGV4dC5kcmF3SW1hZ2VCdWZmZXIobWFza0ltYWdlLmdldCgp
LCBDb2xvclNwYWNlRGV2aWNlUkdCLCBtYXNrUmVjdCwgQ29tcG9zaXRlRGVzdGluYXRpb25Jbik7
CisgICAgaWYgKG1hc2tJbWFnZSAmJiBiZ0xheWVyLT5jbGlwKCkgPT0gVGV4dEZpbGxCb3gpIHsK
KyAgICAgICAgY29udGV4dC5kcmF3SW1hZ2VCdWZmZXIoKm1hc2tJbWFnZSwgQ29sb3JTcGFjZURl
dmljZVJHQiwgbWFza1JlY3QsIENvbXBvc2l0ZURlc3RpbmF0aW9uSW4pOwogICAgICAgICBjb250
ZXh0LmVuZFRyYW5zcGFyZW5jeUxheWVyKCk7CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmggYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuaAppbmRleCA1YjEwODllZDYwZTQzZjJj
NjQwMzhlZTlkZjY3M2JjNzdhMjQ3YjRjLi5iNmY2ZDYzNGZhNGY3NTk1MDAxNmYwMDI3MmI0ZmMw
NTk0OWE0NTgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94
TW9kZWxPYmplY3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9k
ZWxPYmplY3QuaApAQCAtMjUxLDcgKzI1MSw3IEBAIHByb3RlY3RlZDoKICAgICBSb3VuZGVkUmVj
dCBiYWNrZ3JvdW5kUm91bmRlZFJlY3RBZGp1c3RlZEZvckJsZWVkQXZvaWRhbmNlKGNvbnN0IEdy
YXBoaWNzQ29udGV4dCYsIGNvbnN0IExheW91dFJlY3QmLCBCYWNrZ3JvdW5kQmxlZWRBdm9pZGFu
Y2UsIElubGluZUZsb3dCb3gqLCBjb25zdCBMYXlvdXRTaXplJiwgYm9vbCBpbmNsdWRlTG9naWNh
bExlZnRFZGdlLCBib29sIGluY2x1ZGVMb2dpY2FsUmlnaHRFZGdlKSBjb25zdDsKICAgICBMYXlv
dXRSZWN0IGJvcmRlcklubmVyUmVjdEFkanVzdGVkRm9yQmxlZWRBdm9pZGFuY2UoY29uc3QgR3Jh
cGhpY3NDb250ZXh0JiwgY29uc3QgTGF5b3V0UmVjdCYsIEJhY2tncm91bmRCbGVlZEF2b2lkYW5j
ZSkgY29uc3Q7CiAKLSAgICBib29sIHNob3VsZFBhaW50QXRMb3dRdWFsaXR5KEdyYXBoaWNzQ29u
dGV4dCYsIEltYWdlKiwgY29uc3Qgdm9pZCosIGNvbnN0IExheW91dFNpemUmKTsKKyAgICBib29s
IHNob3VsZFBhaW50QXRMb3dRdWFsaXR5KEdyYXBoaWNzQ29udGV4dCYsIEltYWdlJiwgY29uc3Qg
dm9pZCosIGNvbnN0IExheW91dFNpemUmKTsKIAogICAgIFJlbmRlckJveE1vZGVsT2JqZWN0KiBj
b250aW51YXRpb24oKSBjb25zdDsKICAgICB2b2lkIHNldENvbnRpbnVhdGlvbihSZW5kZXJCb3hN
b2RlbE9iamVjdCopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckVtYmVkZGVkT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbWJl
ZGRlZE9iamVjdC5jcHAKaW5kZXggODhiNDU2NGQzM2FlZjdlNDZhMzkyMzcwZDA2NzUwYzNkNjBk
NDkxNC4uYTNmODg5MWZkOTk3ZThjMmNhODZmNTBjYjVmZmY2YzFiMDA1N2VkOSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVtYmVkZGVkT2JqZWN0LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRW1iZWRkZWRPYmplY3QuY3BwCkBAIC0x
OTcsNyArMTk3LDcgQEAgdm9pZCBSZW5kZXJFbWJlZGRlZE9iamVjdDo6c2V0VW5hdmFpbGFibGVQ
bHVnaW5JbmRpY2F0b3JJc1ByZXNzZWQoYm9vbCBwcmVzc2VkKQogICAgIHJlcGFpbnQoKTsKIH0K
IAotdm9pZCBSZW5kZXJFbWJlZGRlZE9iamVjdDo6cGFpbnRTbmFwc2hvdEltYWdlKFBhaW50SW5m
byYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbnRPZmZzZXQsIEltYWdlKiBpbWFn
ZSkKK3ZvaWQgUmVuZGVyRW1iZWRkZWRPYmplY3Q6OnBhaW50U25hcHNob3RJbWFnZShQYWludElu
Zm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50T2Zmc2V0LCBJbWFnZSYgaW1h
Z2UpCiB7CiAgICAgTGF5b3V0VW5pdCBjV2lkdGggPSBjb250ZW50V2lkdGgoKTsKICAgICBMYXlv
dXRVbml0IGNIZWlnaHQgPSBjb250ZW50SGVpZ2h0KCk7CkBAIC0yMTQsNyArMjE0LDcgQEAgdm9p
ZCBSZW5kZXJFbWJlZGRlZE9iamVjdDo6cGFpbnRTbmFwc2hvdEltYWdlKFBhaW50SW5mbyYgcGFp
bnRJbmZvLCBjb25zdCBMYXlvdXQKICAgICBpZiAoYWxpZ25lZFJlY3Qud2lkdGgoKSA8PSAwIHx8
IGFsaWduZWRSZWN0LmhlaWdodCgpIDw9IDApCiAgICAgICAgIHJldHVybjsKIAotICAgIGJvb2wg
dXNlTG93UXVhbGl0eVNjYWxpbmcgPSBzaG91bGRQYWludEF0TG93UXVhbGl0eShjb250ZXh0LCBp
bWFnZSwgaW1hZ2UsIGFsaWduZWRSZWN0LnNpemUoKSk7CisgICAgYm9vbCB1c2VMb3dRdWFsaXR5
U2NhbGluZyA9IHNob3VsZFBhaW50QXRMb3dRdWFsaXR5KGNvbnRleHQsIGltYWdlLCAmaW1hZ2Us
IGFsaWduZWRSZWN0LnNpemUoKSk7CiAgICAgSW1hZ2VPcmllbnRhdGlvbkRlc2NyaXB0aW9uIG9y
aWVudGF0aW9uRGVzY3JpcHRpb24oc2hvdWxkUmVzcGVjdEltYWdlT3JpZW50YXRpb24oKSk7CiAj
aWYgRU5BQkxFKENTU19JTUFHRV9PUklFTlRBVElPTikKICAgICBvcmllbnRhdGlvbkRlc2NyaXB0
aW9uLnNldEltYWdlT3JpZW50YXRpb25FbnVtKHN0eWxlKCkuaW1hZ2VPcmllbnRhdGlvbigpKTsK
QEAgLTIzOSw3ICsyMzksNyBAQCB2b2lkIFJlbmRlckVtYmVkZGVkT2JqZWN0OjpwYWludENvbnRl
bnRzKFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2ludAogICAgICAgICByZXR1
cm47CiAKICAgICBpZiAoSW1hZ2UqIHNuYXBzaG90ID0gZG93bmNhc3Q8SFRNTFBsdWdJbkltYWdl
RWxlbWVudD4ocGx1Z0luRWxlbWVudCkuc25hcHNob3RJbWFnZSgpKQotICAgICAgICBwYWludFNu
YXBzaG90SW1hZ2UocGFpbnRJbmZvLCBwYWludE9mZnNldCwgc25hcHNob3QpOworICAgICAgICBw
YWludFNuYXBzaG90SW1hZ2UocGFpbnRJbmZvLCBwYWludE9mZnNldCwgKnNuYXBzaG90KTsKIH0K
IAogdm9pZCBSZW5kZXJFbWJlZGRlZE9iamVjdDo6cGFpbnQoUGFpbnRJbmZvJiBwYWludEluZm8s
IGNvbnN0IExheW91dFBvaW50JiBwYWludE9mZnNldCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJFbWJlZGRlZE9iamVjdC5oIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckVtYmVkZGVkT2JqZWN0LmgKaW5kZXggYmQ2NjY4ZDM0OGZjNzBiMTAyYTky
MWJlMDk1ZDE5NDVhOGRhZTNkOC4uODk1OWUxZjVhZmFlY2QyNzAyNjAzMTY4YmY3MTM5YmQ1YzYw
NDZkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVtYmVkZGVk
T2JqZWN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVtYmVkZGVkT2Jq
ZWN0LmgKQEAgLTczLDcgKzczLDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIGNvbnN0IGNoYXIq
IHJlbmRlck5hbWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAiUmVuZGVyRW1iZWRkZWRPYmpl
Y3QiOyB9CiAgICAgdmlydHVhbCBib29sIGlzRW1iZWRkZWRPYmplY3QoKSBjb25zdCBvdmVycmlk
ZSBmaW5hbCB7IHJldHVybiB0cnVlOyB9CiAKLSAgICB2b2lkIHBhaW50U25hcHNob3RJbWFnZShQ
YWludEluZm8mLCBjb25zdCBMYXlvdXRQb2ludCYsIEltYWdlKik7CisgICAgdm9pZCBwYWludFNu
YXBzaG90SW1hZ2UoUGFpbnRJbmZvJiwgY29uc3QgTGF5b3V0UG9pbnQmLCBJbWFnZSYpOwogICAg
IHZpcnR1YWwgdm9pZCBwYWludENvbnRlbnRzKFBhaW50SW5mbyYsIGNvbnN0IExheW91dFBvaW50
Jikgb3ZlcnJpZGUgZmluYWw7CiAKICAgICB2aXJ0dWFsIGJvb2wgcmVxdWlyZXNMYXllcigpIGNv
bnN0IG92ZXJyaWRlIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckltYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZS5j
cHAKaW5kZXggNjlhZDIxNDhmYTc5ZGVhYzZhMjkyZDI3OGMxMzU2ZmJmYTg1ZDI1Mi4uMWQ0Nzhi
ZjZmZmM4N2ZlZmY0NzU1NzQxNTI1MjRmYjFkYzg3MmRiNyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVySW1hZ2UuY3BwCkBAIC00MjQsNyArNDI0LDcgQEAgdm9pZCBSZW5kZXJJbWFn
ZTo6cGFpbnRSZXBsYWNlZChQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQm
IHBhaW50T2YKICNpZiBFTkFCTEUoQ1NTX0lNQUdFX09SSUVOVEFUSU9OKQogICAgICAgICAgICAg
ICAgIG9yaWVudGF0aW9uRGVzY3JpcHRpb24uc2V0SW1hZ2VPcmllbnRhdGlvbkVudW0oc3R5bGUo
KS5pbWFnZU9yaWVudGF0aW9uKCkpOwogI2VuZGlmCi0gICAgICAgICAgICAgICAgY29udGV4dC5k
cmF3SW1hZ2UoaW1hZ2UuZ2V0KCksIHN0eWxlKCkuY29sb3JTcGFjZSgpLCBzbmFwUmVjdFRvRGV2
aWNlUGl4ZWxzKExheW91dFJlY3QocGFpbnRPZmZzZXQgKyBpbWFnZU9mZnNldCwgaW1hZ2VTaXpl
KSwgZGV2aWNlU2NhbGVGYWN0b3IpLCBvcmllbnRhdGlvbkRlc2NyaXB0aW9uKTsKKyAgICAgICAg
ICAgICAgICBjb250ZXh0LmRyYXdJbWFnZSgqaW1hZ2UsIHN0eWxlKCkuY29sb3JTcGFjZSgpLCBz
bmFwUmVjdFRvRGV2aWNlUGl4ZWxzKExheW91dFJlY3QocGFpbnRPZmZzZXQgKyBpbWFnZU9mZnNl
dCwgaW1hZ2VTaXplKSwgZGV2aWNlU2NhbGVGYWN0b3IpLCBvcmllbnRhdGlvbkRlc2NyaXB0aW9u
KTsKICAgICAgICAgICAgICAgICBlcnJvclBpY3R1cmVEcmF3biA9IHRydWU7CiAgICAgICAgICAg
ICB9CiAKQEAgLTU0OCwxMiArNTQ4LDEyIEBAIHZvaWQgUmVuZGVySW1hZ2U6OnBhaW50SW50b1Jl
Y3QoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIHJlY3QpCiAgICAg
SFRNTEltYWdlRWxlbWVudCogaW1hZ2VFbGVtZW50ID0gaXM8SFRNTEltYWdlRWxlbWVudD4oZWxl
bWVudCgpKSA/IGRvd25jYXN0PEhUTUxJbWFnZUVsZW1lbnQ+KGVsZW1lbnQoKSkgOiBudWxscHRy
OwogICAgIENvbXBvc2l0ZU9wZXJhdG9yIGNvbXBvc2l0ZU9wZXJhdG9yID0gaW1hZ2VFbGVtZW50
ID8gaW1hZ2VFbGVtZW50LT5jb21wb3NpdGVPcGVyYXRvcigpIDogQ29tcG9zaXRlU291cmNlT3Zl
cjsKICAgICBJbWFnZSogaW1hZ2UgPSBpbWFnZVJlc291cmNlKCkuaW1hZ2UoKS5nZXQoKTsKLSAg
ICBib29sIHVzZUxvd1F1YWxpdHlTY2FsaW5nID0gc2hvdWxkUGFpbnRBdExvd1F1YWxpdHkoY29u
dGV4dCwgaW1hZ2UsIGltYWdlLCBMYXlvdXRTaXplKHJlY3Quc2l6ZSgpKSk7CisgICAgYm9vbCB1
c2VMb3dRdWFsaXR5U2NhbGluZyA9IGltYWdlICYmIHNob3VsZFBhaW50QXRMb3dRdWFsaXR5KGNv
bnRleHQsICppbWFnZSwgaW1hZ2UsIExheW91dFNpemUocmVjdC5zaXplKCkpKTsKICAgICBJbWFn
ZU9yaWVudGF0aW9uRGVzY3JpcHRpb24gb3JpZW50YXRpb25EZXNjcmlwdGlvbihzaG91bGRSZXNw
ZWN0SW1hZ2VPcmllbnRhdGlvbigpKTsKICNpZiBFTkFCTEUoQ1NTX0lNQUdFX09SSUVOVEFUSU9O
KQogICAgIG9yaWVudGF0aW9uRGVzY3JpcHRpb24uc2V0SW1hZ2VPcmllbnRhdGlvbkVudW0oc3R5
bGUoKS5pbWFnZU9yaWVudGF0aW9uKCkpOwogI2VuZGlmCi0gICAgY29udGV4dC5kcmF3SW1hZ2Uo
aW1hZ2VSZXNvdXJjZSgpLmltYWdlKHJlY3Qud2lkdGgoKSwgcmVjdC5oZWlnaHQoKSkuZ2V0KCks
IHN0eWxlKCkuY29sb3JTcGFjZSgpLCByZWN0LAorICAgIGNvbnRleHQuZHJhd0ltYWdlKCppbWcs
IHN0eWxlKCkuY29sb3JTcGFjZSgpLCByZWN0LAogICAgICAgICBJbWFnZVBhaW50aW5nT3B0aW9u
cyhjb21wb3NpdGVPcGVyYXRvciwgQmxlbmRNb2RlTm9ybWFsLCBvcmllbnRhdGlvbkRlc2NyaXB0
aW9uLCB1c2VMb3dRdWFsaXR5U2NhbGluZykpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2VSZXNvdXJjZVN0eWxlSW1hZ2UuY3BwIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlUmVzb3VyY2VTdHlsZUltYWdlLmNwcAppbmRl
eCA0MmIzN2RkZDY3ZjFkMTdmNTFjMTMwODhkMjE2ZDY0OGNhNjQ2ZGQwLi41MWE4NmE2ZjgyYzA3
ZTEyNjA5NWFkMDhjNzNmMGZhZTBlZWYyYmQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVySW1hZ2VSZXNvdXJjZVN0eWxlSW1hZ2UuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZVJlc291cmNlU3R5bGVJbWFnZS5jcHAKQEAgLTU3
LDE0ICs1NywxNCBAQCB2b2lkIFJlbmRlckltYWdlUmVzb3VyY2VTdHlsZUltYWdlOjpzaHV0ZG93
bigpCiB7CiAgICAgQVNTRVJUKG1fcmVuZGVyZXIpOwogICAgIG1fc3R5bGVJbWFnZS0+cmVtb3Zl
Q2xpZW50KG1fcmVuZGVyZXIpOwotICAgIG1fY2FjaGVkSW1hZ2UgPSAwOworICAgIG1fY2FjaGVk
SW1hZ2UgPSBudWxscHRyOwogfQogCiBQYXNzUmVmUHRyPEltYWdlPiBSZW5kZXJJbWFnZVJlc291
cmNlU3R5bGVJbWFnZTo6aW1hZ2UoaW50IHdpZHRoLCBpbnQgaGVpZ2h0KSBjb25zdAogewogICAg
IC8vIEdlbmVyYXRlZCBjb250ZW50IG1heSB0cmlnZ2VyIGNhbGxzIHRvIGltYWdlKCkgd2hpbGUg
d2UncmUgc3RpbGwgcGVuZGluZywgZG9uJ3QgYXNzZXJ0IGJ1dCBncmFjZWZ1bGx5IGV4aXQuCiAg
ICAgaWYgKG1fc3R5bGVJbWFnZS0+aXNQZW5kaW5nSW1hZ2UoKSkKLSAgICAgICAgcmV0dXJuIDA7
CisgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIHJldHVybiBtX3N0eWxlSW1hZ2UtPmltYWdl
KG1fcmVuZGVyZXIsIEludFNpemUod2lkdGgsIGhlaWdodCkpOwogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcAppbmRleCAzNDk4YzdjYzg0NGEzNDQzZDlhNDQzZGM2
NTQ0ZDUwZjEyM2FhMWJhLi4wN2E1YWY3NzU3ZDRmMjZhMjM2NmIyNTNlNWZhZTdjZDhhNDg1Y2Ex
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAKQEAgLTM2NTUsMTIg
KzM2NTUsMTYgQEAgdm9pZCBSZW5kZXJMYXllcjo6ZHJhd1BsYXRmb3JtUmVzaXplckltYWdlKEdy
YXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgTGF5b3UKICAgICAgICAgY29udGV4dC5zYXZl
KCk7CiAgICAgICAgIGNvbnRleHQudHJhbnNsYXRlKHJlc2l6ZXJDb3JuZXJSZWN0LngoKSArIGNv
cm5lclJlc2l6ZXJTaXplLndpZHRoKCksIHJlc2l6ZXJDb3JuZXJSZWN0LnkoKSArIHJlc2l6ZXJD
b3JuZXJSZWN0LmhlaWdodCgpIC0gY29ybmVyUmVzaXplclNpemUuaGVpZ2h0KCkpOwogICAgICAg
ICBjb250ZXh0LnNjYWxlKEZsb2F0U2l6ZSgtMS4wLCAxLjApKTsKLSAgICAgICAgY29udGV4dC5k
cmF3SW1hZ2UocmVzaXplQ29ybmVySW1hZ2UuZ2V0KCksIHJlbmRlcmVyKCkuc3R5bGUoKS5jb2xv
clNwYWNlKCksIEZsb2F0UmVjdChGbG9hdFBvaW50KCksIGNvcm5lclJlc2l6ZXJTaXplKSk7Cisg
ICAgICAgIGlmIChyZXNpemVDb3JuZXJJbWFnZSkKKyAgICAgICAgICAgIGNvbnRleHQuZHJhd0lt
YWdlKCpyZXNpemVDb3JuZXJJbWFnZSwgcmVuZGVyZXIoKS5zdHlsZSgpLmNvbG9yU3BhY2UoKSwg
RmxvYXRSZWN0KEZsb2F0UG9pbnQoKSwgY29ybmVyUmVzaXplclNpemUpKTsKICAgICAgICAgY29u
dGV4dC5yZXN0b3JlKCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CisgICAgCisgICAgaWYgKCFy
ZXNpemVDb3JuZXJJbWFnZSkKKyAgICAgICAgcmV0dXJuOwogICAgIEZsb2F0UmVjdCBpbWFnZVJl
Y3QgPSBzbmFwUmVjdFRvRGV2aWNlUGl4ZWxzKExheW91dFJlY3QocmVzaXplckNvcm5lclJlY3Qu
bWF4WE1heFlDb3JuZXIoKSAtIGNvcm5lclJlc2l6ZXJTaXplLCBjb3JuZXJSZXNpemVyU2l6ZSks
IHJlbmRlcmVyKCkuZG9jdW1lbnQoKS5kZXZpY2VTY2FsZUZhY3RvcigpKTsKLSAgICBjb250ZXh0
LmRyYXdJbWFnZShyZXNpemVDb3JuZXJJbWFnZS5nZXQoKSwgcmVuZGVyZXIoKS5zdHlsZSgpLmNv
bG9yU3BhY2UoKSwgaW1hZ2VSZWN0KTsKKyAgICBjb250ZXh0LmRyYXdJbWFnZSgqcmVzaXplQ29y
bmVySW1hZ2UsIHJlbmRlcmVyKCkuc3R5bGUoKS5jb2xvclNwYWNlKCksIGltYWdlUmVjdCk7CiB9
CiAKIHZvaWQgUmVuZGVyTGF5ZXI6OnBhaW50UmVzaXplcihHcmFwaGljc0NvbnRleHQmIGNvbnRl
eHQsIGNvbnN0IExheW91dFBvaW50JiBwYWludE9mZnNldCwgY29uc3QgTGF5b3V0UmVjdCYgZGFt
YWdlUmVjdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0
TWFya2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0TWFya2VyLmNw
cAppbmRleCA0MDA3YWE3MGRjMTg0YWZlMjgyMzk1MTMyZmE4ZDI0MDcyNTAzNDljLi5mNmUzNDZk
MzdiMDViYTQ2YTlmNjYwODA2MjA1YjQyNTFjN2IzNTE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdE1hcmtlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckxpc3RNYXJrZXIuY3BwCkBAIC0xMTk3LDcgKzExOTcsOCBAQCB2b2lk
IFJlbmRlckxpc3RNYXJrZXI6OnBhaW50KFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlv
dXRQb2ludCYgcGFpbnRPZmZzZQogICAgIEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCA9IHBhaW50
SW5mby5jb250ZXh0KCk7CiAKICAgICBpZiAoaXNJbWFnZSgpKSB7Ci0gICAgICAgIGNvbnRleHQu
ZHJhd0ltYWdlKG1faW1hZ2UtPmltYWdlKHRoaXMsIG1hcmtlci5zaXplKCkpLmdldCgpLCBzdHls
ZSgpLmNvbG9yU3BhY2UoKSwgbWFya2VyKTsKKyAgICAgICAgaWYgKFJlZlB0cjxJbWFnZT4gbWFy
a2VySW1hZ2UgPSBtX2ltYWdlLT5pbWFnZSh0aGlzLCBtYXJrZXIuc2l6ZSgpKSkKKyAgICAgICAg
ICAgIGNvbnRleHQuZHJhd0ltYWdlKCptYXJrZXJJbWFnZSwgc3R5bGUoKS5jb2xvclNwYWNlKCks
IG1hcmtlcik7CiAgICAgICAgIGlmIChzZWxlY3Rpb25TdGF0ZSgpICE9IFNlbGVjdGlvbk5vbmUp
IHsKICAgICAgICAgICAgIExheW91dFJlY3Qgc2VsUmVjdCA9IGxvY2FsU2VsZWN0aW9uUmVjdCgp
OwogICAgICAgICAgICAgc2VsUmVjdC5tb3ZlQnkoYm94T3JpZ2luKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTbmFwc2hvdHRlZFBsdWdJbi5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU25hcHNob3R0ZWRQbHVnSW4uY3BwCmluZGV4IGJk
MWE5ZDUxZDI1YjNkODljNDFhMDkxMDI5YTg5MzRlMWRkNjQ1MGUuLmVjNDJjNjJjODEyN2NlZDM4
ZTU2MTY4NGQ4N2U4YjUwOWYxOWIzYzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJTbmFwc2hvdHRlZFBsdWdJbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlclNuYXBzaG90dGVkUGx1Z0luLmNwcApAQCAtMTM1LDEzICsxMzUsMTMgQEAg
dm9pZCBSZW5kZXJTbmFwc2hvdHRlZFBsdWdJbjo6cGFpbnRTbmFwc2hvdChQYWludEluZm8mIHBh
aW50SW5mbywgY29uc3QgTGF5b3V0UG8KICAgICBpZiAoYWxpZ25lZFJlY3Qud2lkdGgoKSA8PSAw
IHx8IGFsaWduZWRSZWN0LmhlaWdodCgpIDw9IDApCiAgICAgICAgIHJldHVybjsKIAotICAgIGJv
b2wgdXNlTG93UXVhbGl0eVNjYWxpbmcgPSBzaG91bGRQYWludEF0TG93UXVhbGl0eShjb250ZXh0
LCBpbWFnZSwgaW1hZ2UsIGFsaWduZWRSZWN0LnNpemUoKSk7CisgICAgYm9vbCB1c2VMb3dRdWFs
aXR5U2NhbGluZyA9IHNob3VsZFBhaW50QXRMb3dRdWFsaXR5KGNvbnRleHQsICppbWFnZSwgaW1h
Z2UsIGFsaWduZWRSZWN0LnNpemUoKSk7CiAKICAgICBJbWFnZU9yaWVudGF0aW9uRGVzY3JpcHRp
b24gb3JpZW50YXRpb25EZXNjcmlwdGlvbihzaG91bGRSZXNwZWN0SW1hZ2VPcmllbnRhdGlvbigp
KTsKICNpZiBFTkFCTEUoQ1NTX0lNQUdFX09SSUVOVEFUSU9OKQogICAgIG9yaWVudGF0aW9uRGVz
Y3JpcHRpb24uc2V0SW1hZ2VPcmllbnRhdGlvbkVudW0oc3R5bGUoKS5pbWFnZU9yaWVudGF0aW9u
KCkpOwogI2VuZGlmCi0gICAgY29udGV4dC5kcmF3SW1hZ2UoaW1hZ2UsIHN0eWxlKCkuY29sb3JT
cGFjZSgpLCBhbGlnbmVkUmVjdCwgSW1hZ2VQYWludGluZ09wdGlvbnMob3JpZW50YXRpb25EZXNj
cmlwdGlvbiwgdXNlTG93UXVhbGl0eVNjYWxpbmcpKTsKKyAgICBjb250ZXh0LmRyYXdJbWFnZSgq
aW1hZ2UsIHN0eWxlKCkuY29sb3JTcGFjZSgpLCBhbGlnbmVkUmVjdCwgSW1hZ2VQYWludGluZ09w
dGlvbnMob3JpZW50YXRpb25EZXNjcmlwdGlvbiwgdXNlTG93UXVhbGl0eVNjYWxpbmcpKTsKIH0K
IAogQ3Vyc29yRGlyZWN0aXZlIFJlbmRlclNuYXBzaG90dGVkUGx1Z0luOjpnZXRDdXJzb3IoY29u
c3QgTGF5b3V0UG9pbnQmIHBvaW50LCBDdXJzb3ImIG92ZXJyaWRlQ3Vyc29yKSBjb25zdApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lTWFjLm1tIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lTWFjLm1tCmluZGV4IGQ4YWYzZDIzZTc5
OGQwMzVkNmRjMjU5YzRhMTY5MGNkNzM2Y2NmOTMuLmRhMmQ5YTcyZTVjZjlhZGY3YTQxZjE3OTEz
Nzc5MGE2Y2IxYjIxNTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJUaGVtZU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVN
YWMubW0KQEAgLTExNTgsNyArMTE1OCw3IEBAIGJvb2wgUmVuZGVyVGhlbWVNYWM6OnBhaW50UHJv
Z3Jlc3NCYXIoY29uc3QgUmVuZGVyT2JqZWN0JiByZW5kZXJPYmplY3QsIGNvbnN0IFBhCiAgICAg
ICAgIHBhaW50SW5mby5jb250ZXh0KCkuc2NhbGUoRmxvYXRTaXplKC0xLCAxKSk7CiAgICAgfQog
Ci0gICAgcGFpbnRJbmZvLmNvbnRleHQoKS5kcmF3SW1hZ2VCdWZmZXIoaW1hZ2VCdWZmZXIuZ2V0
KCksIENvbG9yU3BhY2VEZXZpY2VSR0IsIGluZmxhdGVkUmVjdC5sb2NhdGlvbigpKTsKKyAgICBw
YWludEluZm8uY29udGV4dCgpLmRyYXdJbWFnZUJ1ZmZlcigqaW1hZ2VCdWZmZXIsIENvbG9yU3Bh
Y2VEZXZpY2VSR0IsIGluZmxhdGVkUmVjdC5sb2NhdGlvbigpKTsKICAgICByZXR1cm4gZmFsc2U7
CiB9CiAKQEAgLTE5MTIsNyArMTkxMiw3IEBAIGJvb2wgUmVuZGVyVGhlbWVNYWM6OnBhaW50U25h
cHNob3R0ZWRQbHVnaW5PdmVybGF5KGNvbnN0IFJlbmRlck9iamVjdCYgcmVuZGVyZXIsCiAgICAg
aWYgKGFsaWduZWRQbHVnaW5SZWN0LndpZHRoKCkgPD0gMCB8fCBhbGlnbmVkUGx1Z2luUmVjdC5o
ZWlnaHQoKSA8PSAwKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAotICAgIGNvbnRleHQuZHJhd0lt
YWdlKHNuYXBzaG90LCBwbHVnSW5SZW5kZXJlci5zdHlsZSgpLmNvbG9yU3BhY2UoKSwgYWxpZ25l
ZFBsdWdpblJlY3QsIENvbXBvc2l0ZVNvdXJjZU92ZXIpOworICAgIGNvbnRleHQuZHJhd0ltYWdl
KCpzbmFwc2hvdCwgcGx1Z0luUmVuZGVyZXIuc3R5bGUoKS5jb2xvclNwYWNlKCksIGFsaWduZWRQ
bHVnaW5SZWN0LCBDb21wb3NpdGVTb3VyY2VPdmVyKTsKICAgICByZXR1cm4gZmFsc2U7CiB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZVdpbi5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVXaW4uY3BwCmluZGV4IGZkMzQ5
NTdmMDdmZDY2NGZkMGE1NzkxZWY5YjFlMmQ0ZTI5NmNlZjEuLjQ2NzljY2EyOGIxYjM2YWYxZmEx
OTAxYmVhOTlhYTk3ZjEyNGIzM2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJUaGVtZVdpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
clRoZW1lV2luLmNwcApAQCAtODkyLDcgKzg5Miw3IEBAIGJvb2wgUmVuZGVyVGhlbWVXaW46OnBh
aW50U2VhcmNoRmllbGRDYW5jZWxCdXR0b24oY29uc3QgUmVuZGVyT2JqZWN0JiBvLCBjb25zdCBQ
CiAKICAgICBzdGF0aWMgSW1hZ2UqIGNhbmNlbEltYWdlID0gSW1hZ2U6OmxvYWRQbGF0Zm9ybVJl
c291cmNlKCJzZWFyY2hDYW5jZWwiKS5sZWFrUmVmKCk7CiAgICAgc3RhdGljIEltYWdlKiBjYW5j
ZWxQcmVzc2VkSW1hZ2UgPSBJbWFnZTo6bG9hZFBsYXRmb3JtUmVzb3VyY2UoInNlYXJjaENhbmNl
bFByZXNzZWQiKS5sZWFrUmVmKCk7Ci0gICAgcGFpbnRJbmZvLmNvbnRleHQoKS5kcmF3SW1hZ2Uo
aXNQcmVzc2VkKG8pID8gY2FuY2VsUHJlc3NlZEltYWdlIDogY2FuY2VsSW1hZ2UsIG8uc3R5bGUo
KS5jb2xvclNwYWNlKCksIGJvdW5kcyk7CisgICAgcGFpbnRJbmZvLmNvbnRleHQoKS5kcmF3SW1h
Z2UoaXNQcmVzc2VkKG8pID8gKmNhbmNlbFByZXNzZWRJbWFnZSA6ICpjYW5jZWxJbWFnZSwgby5z
dHlsZSgpLmNvbG9yU3BhY2UoKSwgYm91bmRzKTsKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKQEAg
LTk0MCw3ICs5NDAsNyBAQCBib29sIFJlbmRlclRoZW1lV2luOjpwYWludFNlYXJjaEZpZWxkUmVz
dWx0c0RlY29yYXRpb25QYXJ0KGNvbnN0IFJlbmRlck9iamVjdCYgbwogICAgIGJvdW5kcy5zZXRZ
KHBhcmVudEJveC55KCkgKyAocGFyZW50Qm94LmhlaWdodCgpIC0gYm91bmRzLmhlaWdodCgpICsg
MSkgLyAyKTsKICAgICAKICAgICBzdGF0aWMgSW1hZ2UqIG1hZ25pZmllckltYWdlID0gSW1hZ2U6
OmxvYWRQbGF0Zm9ybVJlc291cmNlKCJzZWFyY2hNYWduaWZpZXIiKS5sZWFrUmVmKCk7Ci0gICAg
cGFpbnRJbmZvLmNvbnRleHQoKS5kcmF3SW1hZ2UobWFnbmlmaWVySW1hZ2UsIG8uc3R5bGUoKS5j
b2xvclNwYWNlKCksIGJvdW5kcyk7CisgICAgcGFpbnRJbmZvLmNvbnRleHQoKS5kcmF3SW1hZ2Uo
Km1hZ25pZmllckltYWdlLCBvLnN0eWxlKCkuY29sb3JTcGFjZSgpLCBib3VuZHMpOwogICAgIHJl
dHVybiBmYWxzZTsKIH0KIApAQCAtOTc1LDcgKzk3NSw3IEBAIGJvb2wgUmVuZGVyVGhlbWVXaW46
OnBhaW50U2VhcmNoRmllbGRSZXN1bHRzQnV0dG9uKGNvbnN0IFJlbmRlck9iamVjdCYgbywgY29u
c3QKICAgICBib3VuZHMuc2V0WShwYXJlbnRCb3gueSgpICsgKHBhcmVudEJveC5oZWlnaHQoKSAt
IGJvdW5kcy5oZWlnaHQoKSArIDEpIC8gMik7CiAKICAgICBzdGF0aWMgSW1hZ2UqIG1hZ25pZmll
ckltYWdlID0gSW1hZ2U6OmxvYWRQbGF0Zm9ybVJlc291cmNlKCJzZWFyY2hNYWduaWZpZXJSZXN1
bHRzIikubGVha1JlZigpOwotICAgIHBhaW50SW5mby5jb250ZXh0KCkuZHJhd0ltYWdlKG1hZ25p
ZmllckltYWdlLCBvLnN0eWxlKCkuY29sb3JTcGFjZSgpLCBib3VuZHMpOworICAgIHBhaW50SW5m
by5jb250ZXh0KCkuZHJhd0ltYWdlKCptYWduaWZpZXJJbWFnZSwgby5zdHlsZSgpLmNvbG9yU3Bh
Y2UoKSwgYm91bmRzKTsKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMvU2hhcGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3NoYXBlcy9TaGFwZS5jcHAKaW5kZXggMmQ0NzU4MjFmZDJmYzczYTk0ZTY3NTM5NGFl
OGE2MzBlYTU3ZjJmNS4uZTBjYWVhYzljZDgwMWExYjhiNzMwYjhmNGI5ZDdhNmQ3MTdlYmFhZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3NoYXBlcy9TaGFwZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3NoYXBlcy9TaGFwZS5jcHAKQEAgLTE4NCw3ICsx
ODQsOCBAQCBzdGQ6OnVuaXF1ZV9wdHI8U2hhcGU+IFNoYXBlOjpjcmVhdGVSYXN0ZXJTaGFwZShJ
bWFnZSogaW1hZ2UsIGZsb2F0IHRocmVzaG9sZCwgYwogCiAgICAgaWYgKGltYWdlQnVmZmVyKSB7
CiAgICAgICAgIEdyYXBoaWNzQ29udGV4dCYgZ3JhcGhpY3NDb250ZXh0ID0gaW1hZ2VCdWZmZXIt
PmNvbnRleHQoKTsKLSAgICAgICAgZ3JhcGhpY3NDb250ZXh0LmRyYXdJbWFnZShpbWFnZSwgQ29s
b3JTcGFjZURldmljZVJHQiwgSW50UmVjdChJbnRQb2ludCgpLCBpbWFnZVJlY3Quc2l6ZSgpKSk7
CisgICAgICAgIGlmIChpbWFnZSkKKyAgICAgICAgICAgIGdyYXBoaWNzQ29udGV4dC5kcmF3SW1h
Z2UoKmltYWdlLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBJbnRSZWN0KEludFBvaW50KCksIGltYWdl
UmVjdC5zaXplKCkpKTsKIAogICAgICAgICBSZWZQdHI8VWludDhDbGFtcGVkQXJyYXk+IHBpeGVs
QXJyYXkgPSBpbWFnZUJ1ZmZlci0+Z2V0VW5tdWx0aXBsaWVkSW1hZ2VEYXRhKEludFJlY3QoSW50
UG9pbnQoKSwgaW1hZ2VSZWN0LnNpemUoKSkpOwogICAgICAgICB1bnNpZ25lZCBwaXhlbEFycmF5
TGVuZ3RoID0gcGl4ZWxBcnJheS0+bGVuZ3RoKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc2hhcGVzL1NoYXBlT3V0c2lkZUluZm8uY3BwIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3NoYXBlcy9TaGFwZU91dHNpZGVJbmZvLmNwcAppbmRleCA2NmQzMTgzY2Y0MDhk
NzQyZGIwMDg3NzMwMTFmOTMwZDhhZjUwZGQ1Li5kYzg0YjlhNTI2MTI1MDUxZDA0MWU4Y2NmMDIx
YmEwNmJhYTQ3Mjk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVz
L1NoYXBlT3V0c2lkZUluZm8uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFw
ZXMvU2hhcGVPdXRzaWRlSW5mby5jcHAKQEAgLTE1OCw3ICsxNTgsNiBAQCBzdGQ6OnVuaXF1ZV9w
dHI8U2hhcGU+IFNoYXBlT3V0c2lkZUluZm86OmNyZWF0ZVNoYXBlRm9ySW1hZ2UoU3R5bGVJbWFn
ZSogc3R5bGVJbQogCiAgICAgQVNTRVJUKCFzdHlsZUltYWdlLT5pc1BlbmRpbmdJbWFnZSgpKTsK
ICAgICBSZWZQdHI8SW1hZ2U+IGltYWdlID0gc3R5bGVJbWFnZS0+aW1hZ2UoY29uc3RfY2FzdDxS
ZW5kZXJCb3gqPigmbV9yZW5kZXJlciksIGltYWdlU2l6ZSk7Ci0KICAgICByZXR1cm4gU2hhcGU6
OmNyZWF0ZVJhc3RlclNoYXBlKGltYWdlLmdldCgpLCBzaGFwZUltYWdlVGhyZXNob2xkLCBpbWFn
ZVJlY3QsIG1hcmdpblJlY3QsIHdyaXRpbmdNb2RlLCBtYXJnaW4pOwogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvTmluZVBpZWNlSW1hZ2UuY3BwIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL05pbmVQaWVjZUltYWdlLmNwcAppbmRleCBhYTEx
Y2RkYzk0YmZkZTQ0Y2FkN2M1YWYwOGM0NjUxYmY1OTNiY2Y1Li5jOTM5YWU3NWQxZGZiYjkzYzIw
MGQ5NDBjYTZkNGEyOWE3NmE2YmQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3R5bGUvTmluZVBpZWNlSW1hZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdHlsZS9OaW5lUGllY2VJbWFnZS5jcHAKQEAgLTIwNiw2ICsyMDYsOSBAQCB2b2lkIE5pbmVQ
aWVjZUltYWdlOjpwYWludChHcmFwaGljc0NvbnRleHQmIGdyYXBoaWNzQ29udGV4dCwgUmVuZGVy
RWxlbWVudCogcmVuZAogICAgIFZlY3RvcjxGbG9hdFNpemU+IHRpbGVTY2FsZXMgPSBjb21wdXRl
VGlsZVNjYWxlcyhkZXN0aW5hdGlvblJlY3RzLCBzb3VyY2VSZWN0cywgaG9yaXpvbnRhbFJ1bGUo
KSwgdmVydGljYWxSdWxlKCkpOwogCiAgICAgUmVmUHRyPEltYWdlPiBpbWFnZSA9IHN0eWxlSW1h
Z2UtPmltYWdlKHJlbmRlcmVyLCBzb3VyY2UpOworICAgIGlmICghaW1hZ2UpCisgICAgICAgIHJl
dHVybjsKKwogICAgIENvbG9yU3BhY2UgY29sb3JTcGFjZSA9IHN0eWxlLmNvbG9yU3BhY2UoKTsK
IAogICAgIGZvciAoSW1hZ2VQaWVjZSBwaWVjZSA9IE1pblBpZWNlOyBwaWVjZSA8IE1heFBpZWNl
OyArK3BpZWNlKSB7CkBAIC0yMTMsMTMgKzIxNiwxMyBAQCB2b2lkIE5pbmVQaWVjZUltYWdlOjpw
YWludChHcmFwaGljc0NvbnRleHQmIGdyYXBoaWNzQ29udGV4dCwgUmVuZGVyRWxlbWVudCogcmVu
ZAogICAgICAgICAgICAgY29udGludWU7CiAKICAgICAgICAgaWYgKGlzQ29ybmVyUGllY2UocGll
Y2UpKSB7Ci0gICAgICAgICAgICBncmFwaGljc0NvbnRleHQuZHJhd0ltYWdlKGltYWdlLmdldCgp
LCBjb2xvclNwYWNlLCBkZXN0aW5hdGlvblJlY3RzW3BpZWNlXSwgc291cmNlUmVjdHNbcGllY2Vd
LCBvcCk7CisgICAgICAgICAgICBncmFwaGljc0NvbnRleHQuZHJhd0ltYWdlKCppbWFnZSwgY29s
b3JTcGFjZSwgZGVzdGluYXRpb25SZWN0c1twaWVjZV0sIHNvdXJjZVJlY3RzW3BpZWNlXSwgb3Ap
OwogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KIAogICAgICAgICBJbWFnZTo6VGls
ZVJ1bGUgaFJ1bGUgPSBpc0hvcml6b250YWxQaWVjZShwaWVjZSkgPyBzdGF0aWNfY2FzdDxJbWFn
ZTo6VGlsZVJ1bGU+KGhvcml6b250YWxSdWxlKCkpIDogSW1hZ2U6OlN0cmV0Y2hUaWxlOwogICAg
ICAgICBJbWFnZTo6VGlsZVJ1bGUgdlJ1bGUgPSBpc1ZlcnRpY2FsUGllY2UocGllY2UpID8gc3Rh
dGljX2Nhc3Q8SW1hZ2U6OlRpbGVSdWxlPih2ZXJ0aWNhbFJ1bGUoKSkgOiBJbWFnZTo6U3RyZXRj
aFRpbGU7Ci0gICAgICAgIGdyYXBoaWNzQ29udGV4dC5kcmF3VGlsZWRJbWFnZShpbWFnZS5nZXQo
KSwgY29sb3JTcGFjZSwgZGVzdGluYXRpb25SZWN0c1twaWVjZV0sIHNvdXJjZVJlY3RzW3BpZWNl
XSwgdGlsZVNjYWxlc1twaWVjZV0sIGhSdWxlLCB2UnVsZSwgb3ApOworICAgICAgICBncmFwaGlj
c0NvbnRleHQuZHJhd1RpbGVkSW1hZ2UoKmltYWdlLCBjb2xvclNwYWNlLCBkZXN0aW5hdGlvblJl
Y3RzW3BpZWNlXSwgc291cmNlUmVjdHNbcGllY2VdLCB0aWxlU2NhbGVzW3BpZWNlXSwgaFJ1bGUs
IHZSdWxlLCBvcCk7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3ZnL1JlbmRlclNWR0ltYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dmcvUmVuZGVyU1ZHSW1hZ2UuY3BwCmluZGV4IGI4YTE5NmU5NTEzNzAxZDU2YWJlYTZiOTJjZmFk
NGVkMzAzYWMzODQuLmVmNzU3ZTczNjNmMzQ4ZGJkZmZhNTJmY2NkZThhZDJjYzAyYjczNTYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHSW1hZ2UuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHSW1hZ2UuY3BwCkBA
IC0xNjEsMTIgKzE2MSwxNSBAQCB2b2lkIFJlbmRlclNWR0ltYWdlOjpwYWludChQYWludEluZm8m
IHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQmKQogdm9pZCBSZW5kZXJTVkdJbWFnZTo6cGFp
bnRGb3JlZ3JvdW5kKFBhaW50SW5mbyYgcGFpbnRJbmZvKQogewogICAgIFJlZlB0cjxJbWFnZT4g
aW1hZ2UgPSBpbWFnZVJlc291cmNlKCkuaW1hZ2UoKTsKKyAgICBpZiAoIWltYWdlKQorICAgICAg
ICByZXR1cm47CisKICAgICBGbG9hdFJlY3QgZGVzdFJlY3QgPSBtX29iamVjdEJvdW5kaW5nQm94
OwogICAgIEZsb2F0UmVjdCBzcmNSZWN0KDAsIDAsIGltYWdlLT53aWR0aCgpLCBpbWFnZS0+aGVp
Z2h0KCkpOwogCiAgICAgaW1hZ2VFbGVtZW50KCkucHJlc2VydmVBc3BlY3RSYXRpbygpLnRyYW5z
Zm9ybVJlY3QoZGVzdFJlY3QsIHNyY1JlY3QpOwogCi0gICAgcGFpbnRJbmZvLmNvbnRleHQoKS5k
cmF3SW1hZ2UoaW1hZ2UuZ2V0KCksIENvbG9yU3BhY2VEZXZpY2VSR0IsIGRlc3RSZWN0LCBzcmNS
ZWN0KTsKKyAgICBwYWludEluZm8uY29udGV4dCgpLmRyYXdJbWFnZSgqaW1hZ2UsIENvbG9yU3Bh
Y2VEZXZpY2VSR0IsIGRlc3RSZWN0LCBzcmNSZWN0KTsKIH0KIAogdm9pZCBSZW5kZXJTVkdJbWFn
ZTo6aW52YWxpZGF0ZUJ1ZmZlcmVkRm9yZWdyb3VuZCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlRmlsdGVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXIuY3BwCmluZGV4IGMz
ZWRhMjk5ZGJlNWFhODQ5NWNkM2U4N2NjZmU0Yzg4OWU2ODcyYjMuLjBmZDVkNjNlMjRmMjU3NTNk
NmUyYzVlNGI3MzA0ZmMyMjQ5YTFjNjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXIuY3BwCkBAIC0yNzAsNyArMjcw
LDcgQEAgdm9pZCBSZW5kZXJTVkdSZXNvdXJjZUZpbHRlcjo6cG9zdEFwcGx5UmVzb3VyY2UoUmVu
ZGVyRWxlbWVudCYgcmVuZGVyZXIsIEdyYXBoaWMKICAgICAgICAgICAgIGNvbnRleHQtPmNvbmNh
dENUTShmaWx0ZXJEYXRhLT5zaGVhckZyZWVBYnNvbHV0ZVRyYW5zZm9ybS5pbnZlcnNlKCkpOwog
CiAgICAgICAgICAgICBjb250ZXh0LT5zY2FsZShGbG9hdFNpemUoMSAvIGZpbHRlckRhdGEtPmZp
bHRlci0+ZmlsdGVyUmVzb2x1dGlvbigpLndpZHRoKCksIDEgLyBmaWx0ZXJEYXRhLT5maWx0ZXIt
PmZpbHRlclJlc29sdXRpb24oKS5oZWlnaHQoKSkpOwotICAgICAgICAgICAgY29udGV4dC0+ZHJh
d0ltYWdlQnVmZmVyKHJlc3VsdEltYWdlLCByZW5kZXJlci5zdHlsZSgpLmNvbG9yU3BhY2UoKSwg
bGFzdEVmZmVjdC0+YWJzb2x1dGVQYWludFJlY3QoKSk7CisgICAgICAgICAgICBjb250ZXh0LT5k
cmF3SW1hZ2VCdWZmZXIoKnJlc3VsdEltYWdlLCByZW5kZXJlci5zdHlsZSgpLmNvbG9yU3BhY2Uo
KSwgbGFzdEVmZmVjdC0+YWJzb2x1dGVQYWludFJlY3QoKSk7CiAgICAgICAgICAgICBjb250ZXh0
LT5zY2FsZShmaWx0ZXJEYXRhLT5maWx0ZXItPmZpbHRlclJlc29sdXRpb24oKSk7CiAKICAgICAg
ICAgICAgIGNvbnRleHQtPmNvbmNhdENUTShmaWx0ZXJEYXRhLT5zaGVhckZyZWVBYnNvbHV0ZVRy
YW5zZm9ybSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1Jl
bmRlcmluZ0NvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdSZW5k
ZXJpbmdDb250ZXh0LmNwcAppbmRleCA4OWI4ZTM4ZWU4NTE1NWEyYjA4NzdkN2Q1ZmU3NDVjOGVm
MWVjMThjLi5kMDJlZTUwYmQ2Y2EzN2U2MGE1MmVkNGY2ODA0NmVmZjkwODFhOGJjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1JlbmRlcmluZ0NvbnRleHQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHUmVuZGVyaW5nQ29udGV4dC5j
cHAKQEAgLTMwOSwxNCArMzA5LDE1IEBAIHZvaWQgU1ZHUmVuZGVyaW5nQ29udGV4dDo6cmVuZGVy
U3VidHJlZVRvSW1hZ2VCdWZmZXIoSW1hZ2VCdWZmZXIqIGltYWdlLCBSZW5kZXJFCiAKIHZvaWQg
U1ZHUmVuZGVyaW5nQ29udGV4dDo6Y2xpcFRvSW1hZ2VCdWZmZXIoR3JhcGhpY3NDb250ZXh0JiBj
b250ZXh0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIGFic29sdXRlVHJhbnNmb3JtLCBjb25zdCBG
bG9hdFJlY3QmIHRhcmdldFJlY3QsIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4mIGltYWdl
QnVmZmVyLCBib29sIHNhZmVUb0NsZWFyKQogewotICAgIEFTU0VSVChpbWFnZUJ1ZmZlcik7Cisg
ICAgaWYgKCFpbWFnZUJ1ZmZlcikKKyAgICAgICAgcmV0dXJuOwogCiAgICAgRmxvYXRSZWN0IGFi
c29sdXRlVGFyZ2V0UmVjdCA9IGNhbGN1bGF0ZUltYWdlQnVmZmVyUmVjdCh0YXJnZXRSZWN0LCBh
YnNvbHV0ZVRyYW5zZm9ybSk7CiAKICAgICAvLyBUaGUgbWFzayBpbWFnZSBoYXMgYmVlbiBjcmVh
dGVkIGluIHRoZSBhYnNvbHV0ZSBjb29yZGluYXRlIHNwYWNlLCBhcyB0aGUgaW1hZ2Ugc2hvdWxk
IG5vdCBiZSBzY2FsZWQuCiAgICAgLy8gU28gdGhlIGFjdHVhbCBtYXNraW5nIHByb2Nlc3MgaGFz
IHRvIGJlIGRvbmUgaW4gdGhlIGFic29sdXRlIGNvb3JkaW5hdGUgc3BhY2UgYXMgd2VsbC4KICAg
ICBjb250ZXh0LmNvbmNhdENUTShhYnNvbHV0ZVRyYW5zZm9ybS5pbnZlcnNlKCkpOwotICAgIGNv
bnRleHQuY2xpcFRvSW1hZ2VCdWZmZXIoaW1hZ2VCdWZmZXIuZ2V0KCksIGFic29sdXRlVGFyZ2V0
UmVjdCk7CisgICAgY29udGV4dC5jbGlwVG9JbWFnZUJ1ZmZlcigqaW1hZ2VCdWZmZXIsIGFic29s
dXRlVGFyZ2V0UmVjdCk7CiAgICAgY29udGV4dC5jb25jYXRDVE0oYWJzb2x1dGVUcmFuc2Zvcm0p
OwogCiAgICAgLy8gV2hlbiBuZXN0aW5nIHJlc291cmNlcywgd2l0aCBvYmplY3RCb3VuZGluZ0Jv
eCBhcyBjb250ZW50IHVuaXQgdHlwZXMsIHRoZXJlJ3Mgbm8gdXNlIGluIGNhY2hpbmcgdGhlCkBA
IC0zNjAsNyArMzYxLDcgQEAgYm9vbCBTVkdSZW5kZXJpbmdDb250ZXh0OjpidWZmZXJGb3JlZ3Jv
dW5kKHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4mIGltYWdlQnUKICAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKICAgICB9CiAKLSAgICBtX3BhaW50SW5mby0+Y29udGV4dCgpLmRyYXdJbWFn
ZUJ1ZmZlcihpbWFnZUJ1ZmZlci5nZXQoKSwgQ29sb3JTcGFjZURldmljZVJHQiwgYm91bmRpbmdC
b3gpOworICAgIG1fcGFpbnRJbmZvLT5jb250ZXh0KCkuZHJhd0ltYWdlQnVmZmVyKCppbWFnZUJ1
ZmZlciwgQ29sb3JTcGFjZURldmljZVJHQiwgYm91bmRpbmdCb3gpOwogICAgIHJldHVybiB0cnVl
OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9T
VkdGRUltYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZF
SW1hZ2UuY3BwCmluZGV4IGYwNzI1MThmNDQxNzUxMWM3OTEzOTBlOTk2MjdmNWI1ZDE3ZTQ4YjEu
LjY2MThjZjU0ODRlNDllZTIxY2NjZjY3ODk0ZDAwMmY2MGUxN2U4MDYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFSW1hZ2UuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFSW1hZ2UuY3BwCkBAIC0xMzUs
NyArMTM1LDcgQEAgdm9pZCBGRUltYWdlOjpwbGF0Zm9ybUFwcGx5U29mdHdhcmUoKQogICAgICAg
ICByZXR1cm47CiAgICAgfQogCi0gICAgcmVzdWx0SW1hZ2UtPmNvbnRleHQoKS5kcmF3SW1hZ2Uo
bV9pbWFnZS5nZXQoKSwgQ29sb3JTcGFjZURldmljZVJHQiwgZGVzdFJlY3QsIHNyY1JlY3QpOwor
ICAgIHJlc3VsdEltYWdlLT5jb250ZXh0KCkuZHJhd0ltYWdlKCptX2ltYWdlLCBDb2xvclNwYWNl
RGV2aWNlUkdCLCBkZXN0UmVjdCwgc3JjUmVjdCk7CiB9CiAKIHZvaWQgRkVJbWFnZTo6ZHVtcCgp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dpbi9GdWxsc2NyZWVuVmlkZW9Db250cm9sbGVy
LmNwcCBiL1NvdXJjZS9XZWJLaXQvd2luL0Z1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXIuY3BwCmlu
ZGV4IDUxMGI5NTdiZDE0ZjcyMTY1NjFjNTcyZjQyOGZkODk2OWFlZjNhMjEuLmE5NDIzODFjNTNh
ODFkMjVmNDQ1NzQxNWRkYmNlMDFlMmQwMzk4ZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
d2luL0Z1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvd2lu
L0Z1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXIuY3BwCkBAIC0xMTgsNyArMTE4LDcgQEAgSFVEQnV0
dG9uOjpIVURCdXR0b24oSFVEQnV0dG9uVHlwZSB0eXBlLCBjb25zdCBJbnRQb2ludCYgcG9zaXRp
b24pCiB2b2lkIEhVREJ1dHRvbjo6ZHJhdyhHcmFwaGljc0NvbnRleHQmIGNvbnRleHQpCiB7CiAg
ICAgSW1hZ2UqIGltYWdlID0gKG1fc2hvd0FsdEJ1dHRvbiAmJiBtX2J1dHRvbkltYWdlQWx0KSA/
IG1fYnV0dG9uSW1hZ2VBbHQuZ2V0KCkgOiBtX2J1dHRvbkltYWdlLmdldCgpOwotICAgIGNvbnRl
eHQuZHJhd0ltYWdlKGltYWdlLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBtX3JlY3QubG9jYXRpb24o
KSk7CisgICAgY29udGV4dC5kcmF3SW1hZ2UoKmltYWdlLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBt
X3JlY3QubG9jYXRpb24oKSk7CiB9CiAKIEhVRFNsaWRlcjo6SFVEU2xpZGVyKEhVRFNsaWRlckJ1
dHRvblNoYXBlIHNoYXBlLCBpbnQgYnV0dG9uU2l6ZSwgY29uc3QgSW50UmVjdCYgcmVjdCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Db250ZXh0TWVudUNvbnRleHREYXRhLmNw
cCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Db250ZXh0TWVudUNvbnRleHREYXRhLmNwcAppbmRl
eCA1M2ZjZDIzMTg1OTk1MzcyZTVmNGZiN2I2MjQxYzgzZGYwMWVkMDRiLi43MzIzNGU1Zjc5M2Rh
Mzg1OTk0MWE5ZGM3NzQ5ZTc0Mjc4YTBlNGQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9T
aGFyZWQvQ29udGV4dE1lbnVDb250ZXh0RGF0YS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvU2hh
cmVkL0NvbnRleHRNZW51Q29udGV4dERhdGEuY3BwCkBAIC01OCw3ICs1OCw3IEBAIENvbnRleHRN
ZW51Q29udGV4dERhdGE6OkNvbnRleHRNZW51Q29udGV4dERhdGEoY29uc3QgQ29udGV4dE1lbnVD
b250ZXh0JiBjb250ZXh0CiAKICAgICAvLyBGSVhNRTogZmlndXJlIG91dCB0aGUgcm91bmRpbmcg
c3RhcnRlZ3kgZm9yIFNoYXJlYWJsZUJpdG1hcC4KICAgICBtX2NvbnRyb2xsZWRJbWFnZSA9IFNo
YXJlYWJsZUJpdG1hcDo6Y3JlYXRlU2hhcmVhYmxlKEludFNpemUoaW1hZ2UtPnNpemUoKSksIFNo
YXJlYWJsZUJpdG1hcDo6U3VwcG9ydHNBbHBoYSk7Ci0gICAgbV9jb250cm9sbGVkSW1hZ2UtPmNy
ZWF0ZUdyYXBoaWNzQ29udGV4dCgpLT5kcmF3SW1hZ2UoaW1hZ2UsIENvbG9yU3BhY2VEZXZpY2VS
R0IsIEludFBvaW50KCkpOworICAgIG1fY29udHJvbGxlZEltYWdlLT5jcmVhdGVHcmFwaGljc0Nv
bnRleHQoKS0+ZHJhd0ltYWdlKCppbWFnZSwgQ29sb3JTcGFjZURldmljZVJHQiwgSW50UG9pbnQo
KSk7CiAjZW5kaWYKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkNv
cmVBcmd1bWVudENvZGVycy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViQ29yZUFyZ3Vt
ZW50Q29kZXJzLmNwcAppbmRleCA3MWRjM2Q0ZTUxZjJhZGM1YWFmYTBmMjMwNTAwMWFiOGE0ZThk
OWVmLi5kZDZlNTc3ZTJjZDQ1YTM5NmVkY2YxNGQ2ZTZlNjdjNWY4OWZmZGFkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcApAQCAtNzIxLDkg
KzcyMSw5IEBAIGJvb2wgQXJndW1lbnRDb2RlcjxDcmVkZW50aWFsPjo6ZGVjb2RlKEFyZ3VtZW50
RGVjb2RlciYgZGVjb2RlciwgQ3JlZGVudGlhbCYgY3JlCiAgICAgcmV0dXJuIHRydWU7CiB9CiAK
LXN0YXRpYyB2b2lkIGVuY29kZUltYWdlKEFyZ3VtZW50RW5jb2RlciYgZW5jb2RlciwgSW1hZ2Uq
IGltYWdlKQorc3RhdGljIHZvaWQgZW5jb2RlSW1hZ2UoQXJndW1lbnRFbmNvZGVyJiBlbmNvZGVy
LCBJbWFnZSYgaW1hZ2UpCiB7Ci0gICAgUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4gYml0bWFwID0g
U2hhcmVhYmxlQml0bWFwOjpjcmVhdGVTaGFyZWFibGUoSW50U2l6ZShpbWFnZS0+c2l6ZSgpKSwg
U2hhcmVhYmxlQml0bWFwOjpTdXBwb3J0c0FscGhhKTsKKyAgICBSZWZQdHI8U2hhcmVhYmxlQml0
bWFwPiBiaXRtYXAgPSBTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZVNoYXJlYWJsZShJbnRTaXplKGlt
YWdlLnNpemUoKSksIFNoYXJlYWJsZUJpdG1hcDo6U3VwcG9ydHNBbHBoYSk7CiAgICAgYml0bWFw
LT5jcmVhdGVHcmFwaGljc0NvbnRleHQoKS0+ZHJhd0ltYWdlKGltYWdlLCBDb2xvclNwYWNlRGV2
aWNlUkdCLCBJbnRQb2ludCgpKTsKIAogICAgIFNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlIGhhbmRs
ZTsKQEAgLTc1Myw3ICs3NTMsNyBAQCBzdGF0aWMgdm9pZCBlbmNvZGVPcHRpb25hbEltYWdlKEFy
Z3VtZW50RW5jb2RlciYgZW5jb2RlciwgSW1hZ2UqIGltYWdlKQogICAgIGVuY29kZXIgPDwgaGFz
SW1hZ2U7CiAKICAgICBpZiAoaGFzSW1hZ2UpCi0gICAgICAgIGVuY29kZUltYWdlKGVuY29kZXIs
IGltYWdlKTsKKyAgICAgICAgZW5jb2RlSW1hZ2UoZW5jb2RlciwgKmltYWdlKTsKIH0KIAogc3Rh
dGljIGJvb2wgZGVjb2RlT3B0aW9uYWxJbWFnZShBcmd1bWVudERlY29kZXImIGRlY29kZXIsIFJl
ZlB0cjxJbWFnZT4mIGltYWdlKQpAQCAtNzg0LDcgKzc4NCw3IEBAIHZvaWQgQXJndW1lbnRDb2Rl
cjxDdXJzb3I+OjplbmNvZGUoQXJndW1lbnRFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBDdXJzb3Im
IGN1cnNvCiAgICAgfQogCiAgICAgZW5jb2RlciA8PCB0cnVlOwotICAgIGVuY29kZUltYWdlKGVu
Y29kZXIsIGN1cnNvci5pbWFnZSgpKTsKKyAgICBlbmNvZGVJbWFnZShlbmNvZGVyLCAqY3Vyc29y
LmltYWdlKCkpOwogICAgIGVuY29kZXIgPDwgY3Vyc29yLmhvdFNwb3QoKTsKICNpZiBFTkFCTEUo
TU9VU0VfQ1VSU09SX1NDQUxFKQogICAgIGVuY29kZXIgPDwgY3Vyc29yLmltYWdlU2NhbGVGYWN0
b3IoKTsKQEAgLTEyNTMsNyArMTI1Myw3IEBAIGJvb2wgQXJndW1lbnRDb2RlcjxQYXN0ZWJvYXJk
V2ViQ29udGVudD46OmRlY29kZShBcmd1bWVudERlY29kZXImIGRlY29kZXIsIFBhc3RlCiAKIHZv
aWQgQXJndW1lbnRDb2RlcjxQYXN0ZWJvYXJkSW1hZ2U+OjplbmNvZGUoQXJndW1lbnRFbmNvZGVy
JiBlbmNvZGVyLCBjb25zdCBQYXN0ZWJvYXJkSW1hZ2UmIHBhc3RlYm9hcmRJbWFnZSkKIHsKLSAg
ICBlbmNvZGVJbWFnZShlbmNvZGVyLCBwYXN0ZWJvYXJkSW1hZ2UuaW1hZ2UuZ2V0KCkpOworICAg
IGVuY29kZU9wdGlvbmFsSW1hZ2UoZW5jb2RlciwgcGFzdGVib2FyZEltYWdlLmltYWdlLmdldCgp
KTsKICAgICBlbmNvZGVyIDw8IHBhc3RlYm9hcmRJbWFnZS51cmwudXJsOwogICAgIGVuY29kZXIg
PDwgcGFzdGVib2FyZEltYWdlLnVybC50aXRsZTsKICAgICBlbmNvZGVyIDw8IHBhc3RlYm9hcmRJ
bWFnZS5yZXNvdXJjZU1JTUVUeXBlOwpAQCAtMTI2Myw3ICsxMjYzLDcgQEAgdm9pZCBBcmd1bWVu
dENvZGVyPFBhc3RlYm9hcmRJbWFnZT46OmVuY29kZShBcmd1bWVudEVuY29kZXImIGVuY29kZXIs
IGNvbnN0IFBhc3QKIAogYm9vbCBBcmd1bWVudENvZGVyPFBhc3RlYm9hcmRJbWFnZT46OmRlY29k
ZShBcmd1bWVudERlY29kZXImIGRlY29kZXIsIFBhc3RlYm9hcmRJbWFnZSYgcGFzdGVib2FyZElt
YWdlKQogewotICAgIGlmICghZGVjb2RlSW1hZ2UoZGVjb2RlciwgcGFzdGVib2FyZEltYWdlLmlt
YWdlKSkKKyAgICBpZiAoIWRlY29kZU9wdGlvbmFsSW1hZ2UoZGVjb2RlciwgcGFzdGVib2FyZElt
YWdlLmltYWdlKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGlmICghZGVjb2Rlci5kZWNv
ZGUocGFzdGVib2FyZEltYWdlLnVybC51cmwpKQogICAgICAgICByZXR1cm4gZmFsc2U7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwIGIv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcAppbmRleCBjY2Ni
OGI2YWRkNDY5OTczYmRlNDU2NmJlODY5MTQ3ZjhmMDg2OGE0Li5mODAwYzIyZmNmNTJjN2IzNjY2
ODE0ZGRhMjZiNzQ0MmExYzY0MGI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJGcmFtZS5jcHAKQEAgLTgzOCw3ICs4MzgsNyBAQCBQYXNzUmVmUHRyPFNoYXJl
YWJsZUJpdG1hcD4gV2ViRnJhbWU6OmNyZWF0ZVNlbGVjdGlvblNuYXBzaG90KCkgY29uc3QKICAg
ICBhdXRvIGdyYXBoaWNzQ29udGV4dCA9IHNoYXJlZFNuYXBzaG90LT5jcmVhdGVHcmFwaGljc0Nv
bnRleHQoKTsKICAgICBmbG9hdCBkZXZpY2VTY2FsZUZhY3RvciA9IGNvcmVGcmFtZSgpLT5wYWdl
KCktPmRldmljZVNjYWxlRmFjdG9yKCk7CiAgICAgZ3JhcGhpY3NDb250ZXh0LT5zY2FsZShGbG9h
dFNpemUoZGV2aWNlU2NhbGVGYWN0b3IsIGRldmljZVNjYWxlRmFjdG9yKSk7Ci0gICAgZ3JhcGhp
Y3NDb250ZXh0LT5kcmF3SW1hZ2VCdWZmZXIoc25hcHNob3QuZ2V0KCksIENvbG9yU3BhY2VEZXZp
Y2VSR0IsIEZsb2F0UG9pbnQoKSk7CisgICAgZ3JhcGhpY3NDb250ZXh0LT5kcmF3SW1hZ2VCdWZm
ZXIoKnNuYXBzaG90LCBDb2xvclNwYWNlRGV2aWNlUkdCLCBGbG9hdFBvaW50KCkpOwogCiAgICAg
cmV0dXJuIHNoYXJlZFNuYXBzaG90LnJlbGVhc2UoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvRmluZENvbnRyb2xsZXJJT1MubW0gYi9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL0ZpbmRDb250cm9sbGVySU9TLm1tCmlu
ZGV4IGNlNTIyMjE3MjFmNDQyYjY2NzBkMmVhMGU4ZWIwNTlhMzUyYjU5MjUuLmRiYTJkMDU4Y2E1
OTI1YzEwOGQwM2Y5ZjZlZDU5ODBiYzEwYTZkNDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvRmluZENvbnRyb2xsZXJJT1MubW0KKysrIGIvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9GaW5kQ29udHJvbGxlcklPUy5tbQpAQCAt
ODMsNyArODMsNyBAQCB2b2lkIEZpbmRJbmRpY2F0b3JPdmVybGF5Q2xpZW50SU9TOjpkcmF3UmVj
dChQYWdlT3ZlcmxheSYgb3ZlcmxheSwgR3JhcGhpY3NDb250ZQogICAgIGZvciAoY29uc3QgYXV0
byYgcGF0aCA6IHBhdGhzKQogICAgICAgICBjb250ZXh0LmZpbGxQYXRoKHBhdGgpOwogCi0gICAg
Y29udGV4dC5kcmF3SW1hZ2UoaW5kaWNhdG9ySW1hZ2UsIENvbG9yU3BhY2VEZXZpY2VSR0IsIG92
ZXJsYXkuYm91bmRzKCkpOworICAgIGNvbnRleHQuZHJhd0ltYWdlKCppbmRpY2F0b3JJbWFnZSwg
Q29sb3JTcGFjZURldmljZVJHQiwgb3ZlcmxheS5ib3VuZHMoKSk7CiB9CiAKIGJvb2wgRmluZENv
bnRyb2xsZXI6OnVwZGF0ZUZpbmRJbmRpY2F0b3IoRnJhbWUmIHNlbGVjdGVkRnJhbWUsIGJvb2wg
aXNTaG93aW5nT3ZlcmxheSwgYm9vbCBzaG91bGRBbmltYXRlKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tIGIvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCmluZGV4IGIzMGI1NGY1
MjM4ZTBmNjAzYjY0YWFlNjAzNmM5YmQ5OGM3NmY2ZjEuLjJkY2FmZTFkM2MwMzQ1Y2U0ZjZjOTk2
ZjIwZjdkNDA3YmU3OGUwNTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0KQEAgLTIyMTgsNyArMjIxOCw3IEBAIHZvaWQgV2Vi
UGFnZTo6Z2V0UG9zaXRpb25JbmZvcm1hdGlvbihjb25zdCBJbnRQb2ludCYgcG9pbnQsIEludGVy
YWN0aW9uSW5mb3JtYXRpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZsb2F0U2l6
ZSBiaXRtYXBTaXplID0gc2NhbGVkU2l6ZS53aWR0aCgpIDwgaW1hZ2UtPnNpemUoKS53aWR0aCgp
ID8gc2NhbGVkU2l6ZSA6IGltYWdlLT5zaXplKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGlmIChSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBzaGFyZWRCaXRtYXAgPSBTaGFyZWFi
bGVCaXRtYXA6OmNyZWF0ZVNoYXJlYWJsZShJbnRTaXplKGJpdG1hcFNpemUpLCBTaGFyZWFibGVC
aXRtYXA6OlN1cHBvcnRzQWxwaGEpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBhdXRvIGdyYXBoaWNzQ29udGV4dCA9IHNoYXJlZEJpdG1hcC0+Y3JlYXRlR3JhcGhpY3ND
b250ZXh0KCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBncmFwaGljc0Nv
bnRleHQtPmRyYXdJbWFnZShpbWFnZSwgQ29sb3JTcGFjZURldmljZVJHQiwgRmxvYXRSZWN0KDAs
IDAsIGJpdG1hcFNpemUud2lkdGgoKSwgYml0bWFwU2l6ZS5oZWlnaHQoKSkpOworICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LT5kcmF3SW1hZ2UoKmlt
YWdlLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBGbG9hdFJlY3QoMCwgMCwgYml0bWFwU2l6ZS53aWR0
aCgpLCBiaXRtYXBTaXplLmhlaWdodCgpKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBpbmZvLmltYWdlID0gc2hhcmVkQml0bWFwOwogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQo=
</data>
<flag name="review"
          id="288270"
          type_id="1"
          status="+"
          setter="sam"
    />
          </attachment>
      

    </bug>

</bugzilla>