<?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>202489</bug_id>
          
          <creation_ts>2019-10-02 12:59:35 -0700</creation_ts>
          <short_desc>Box-shadow spread radius does not transition or animate correctly with CSS Transitions &amp; Animations</short_desc>
          <delta_ts>2020-05-06 14:36:16 -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>CSS</component>
          <version>Safari Technology Preview</version>
          <rep_platform>All</rep_platform>
          <op_sys>macOS 10.14</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=203966</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=204348</see_also>
          <bug_file_loc>https://codepen.io/kbav/pen/eYOqKBQ?editors=0100</bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>BrowserCompat, HasReduction, InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Kyle Bavender">kyle.bavender</reporter>
          <assigned_to name="Simon Fraser (smfr)">simon.fraser</assigned_to>
          <cc>dino</cc>
    
    <cc>dstockwell</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>glenn</cc>
    
    <cc>graouts</cc>
    
    <cc>graouts</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>khawkins98</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>kyle.bavender</cc>
    
    <cc>macpherson</cc>
    
    <cc>menard</cc>
    
    <cc>mmaxfield</cc>
    
    <cc>pdr</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>tsavell</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>zalan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1576121</commentid>
    <comment_count>0</comment_count>
    <who name="Kyle Bavender">kyle.bavender</who>
    <bug_when>2019-10-02 12:59:35 -0700</bug_when>
    <thetext>I am conducting browser tests on Safari and found that its behavior when rendering box-shadow spread-radius between two different values in a CSS (keyframes) animation does not match that of Chrome/Firefox/IE/Edge. It appears to also be an issue with CSS Transitions.

I am not familiar with this detail of the box-shadow or animation specifications, but the (would one call this sub-pixel rendering, or tweening?) behaviors exhibited by other browsers make for markedly cleaner animations.

My test case and examples can be found here: https://codepen.io/kbav/pen/eYOqKBQ?editors=0100#0

Tested in Safari Technology Preview, 13, 12, 11, &amp; 10. Other browsers are using the latest public versions as of this writing. Let me know if I can provide any further detail or assistance.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1577082</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-10-04 17:08:05 -0700</bug_when>
    <thetext>&lt;rdar://problem/55999988&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1585851</commentid>
    <comment_count>2</comment_count>
    <who name="Ken Hawkins">khawkins98</who>
    <bug_when>2019-10-31 04:23:24 -0700</bug_when>
    <thetext>We&apos;ve also noticed the issue with &quot;sub-pixel stutter&quot; on box-shadow animation in Safari. (So far confirmed in Mac OS 10.14 Safari Version 12.1.2 (14607.3.9) and Mac OS 10.15)

Our demo of the issue: https://codepen.io/khawkins98/pen/ZEEaBME

We&apos;ve tried the usual `transformZ` and `will-change` techniques and none have helped.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1585987</commentid>
    <comment_count>3</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2019-10-31 10:58:30 -0700</bug_when>
    <thetext>Could you file that stutter as a new bug please.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1587247</commentid>
    <comment_count>4</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2019-11-04 18:08:47 -0800</bug_when>
    <thetext>We store and animate the spread value as an int, and it should be floating point.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1587598</commentid>
    <comment_count>5</comment_count>
      <attachid>382864</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2019-11-05 16:57:59 -0800</bug_when>
    <thetext>Created attachment 382864
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1587833</commentid>
    <comment_count>6</comment_count>
      <attachid>382864</attachid>
    <who name="alan">zalan</who>
    <bug_when>2019-11-06 10:24:45 -0800</bug_when>
    <thetext>Comment on attachment 382864
Patch

v.nice</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1587992</commentid>
    <comment_count>7</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2019-11-06 16:41:49 -0800</bug_when>
    <thetext>https://trac.webkit.org/r252161</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1588270</commentid>
    <comment_count>8</comment_count>
    <who name="Truitt Savell">tsavell</who>
    <bug_when>2019-11-07 10:00:18 -0800</bug_when>
    <thetext>It looks like the changes in r252161 caused 3 tests to time out on Mac and iOS:

transitions/multiple-shadow-transitions.html 
transitions/cubic-bezier-overflow-shadow.html 
legacy-animation-engine/transitions/cubic-bezier-overflow-shadow.html

I was able to reproduce these timeouts using command:

run-webkit-tests transitions/multiple-shadow-transitions.html transitions/cubic-bezier-overflow-shadow.html legacy-animation-engine/transitions/cubic-bezier-overflow-shadow.html --iterations 20 -f

They reproduce on r252161 but not r252160.

Tracking in: https://bugs.webkit.org/show_bug.cgi?id=203966</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1588367</commentid>
    <comment_count>9</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2019-11-07 13:09:11 -0800</bug_when>
    <thetext>Fixed in https://trac.webkit.org/changeset/252203/webkit</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1588620</commentid>
    <comment_count>10</comment_count>
    <who name="Kyle Bavender">kyle.bavender</who>
    <bug_when>2019-11-08 06:44:29 -0800</bug_when>
    <thetext>I re-tested the attached test case URL/CodePen with Webkit r252161; while the spread animation isn’t quite as smooth as Chrome or Firefox’s (it appears they do something akin to anti-aliasing / allowing subpixel values to spread with partial opacity), it’s definitely a smoother animation overall.

Thank you Simon &amp; the WebKit team for addressing this!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1591483</commentid>
    <comment_count>11</comment_count>
    <who name="Antoine Quint">graouts</who>
    <bug_when>2019-11-19 03:33:28 -0800</bug_when>
    <thetext>This caused a regression, see https://bugs.webkit.org/show_bug.cgi?id=204348.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1649806</commentid>
    <comment_count>12</comment_count>
    <who name="Antoine Quint">graouts</who>
    <bug_when>2020-05-06 14:36:16 -0700</bug_when>
    <thetext>This caused another regression, see bug 211530.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>382864</attachid>
            <date>2019-11-05 16:57:59 -0800</date>
            <delta_ts>2019-11-06 10:24:45 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-202489-20191105165758.patch</filename>
            <type>text/plain</type>
            <size>43166</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUyMDAzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzI0N2JkZjNmNzk0MGYx
NDE2N2Q1MWRlZmQ0MGEwOGExOTQzNmYzZi4uNzViZDY1MzAzZDQxOTY2MTMyZjI3MjJmMDZjYzE3
ODk4NTg4YzBmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY0IEBACisyMDE5LTExLTA1ICBTaW1v
biBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgorCisgICAgICAgIEJveC1zaGFkb3cg
c3ByZWFkIHJhZGl1cyBkb2VzIG5vdCB0cmFuc2l0aW9uIG9yIGFuaW1hdGUgY29ycmVjdGx5IHdp
dGggQ1NTIFRyYW5zaXRpb25zICYgQW5pbWF0aW9ucworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAyNDg5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisgICAgICAgIAorICAgICAgICBGaXggYm94LXNoYWRvdyBvZmZzZXQgYW5k
IHNwcmVhZCB0byBzdXBwb3J0IHN1YnBpeGVsIHZhbHVlcywgYW5kIG1ha2UgdGhlIHJlbmRlcmlu
ZyBzdWJwaXhlbC1hd2FyZS4KKyAgICAgICAgVGhpcyBhbHNvIG1ha2VzIGFuaW1hdGlvbiBvZiBz
aGFkb3cgc3ByZWFkIGFuZCBvZmZzZXQgYmUgc21vb3RoZXIgb24gUmV0aW5hIGRpc3BsYXlzLgor
CisgICAgICAgIEFsc28gbWFrZSBTaGFkb3dTdHlsZSBhbiBlbnVtIGNsYXNzLgorCisgICAgICAg
IFRlc3Q6IGZhc3QvYm94LXNoYWRvdy9oaWRwaS1ib3gtc2hhZG93Lmh0bWwKKworICAgICAgICAq
IGNzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Q29tcHV0ZWRTdHlsZUV4dHJhY3Rvcjo6dmFsdWVGb3JTaGFkb3cpOgorICAgICAgICAoV2ViQ29y
ZTo6Q29tcHV0ZWRTdHlsZUV4dHJhY3Rvcjo6dmFsdWVGb3JGaWx0ZXIpOgorICAgICAgICAqIGNz
cy9DU1NQcmltaXRpdmVWYWx1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NQcmltaXRpdmVW
YWx1ZTo6Y29tcHV0ZUxlbmd0aCBjb25zdCk6CisgICAgICAgICogcGFnZS9hbmltYXRpb24vQ1NT
UHJvcGVydHlBbmltYXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6YmxlbmRGdW5jKToKKyAg
ICAgICAgKFdlYkNvcmU6OnNoYWRvd0ZvckJsZW5kaW5nKToKKyAgICAgICAgKiBwbGF0Zm9ybS9h
bmltYXRpb24vQW5pbWF0aW9uVXRpbGl0aWVzLmg6CisgICAgICAgIChXZWJDb3JlOjpibGVuZCk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvUm91bmRlZFJlY3QuaDoKKyAgICAgICAgKiBy
ZW5kZXJpbmcvSW5saW5lRmxvd0JveC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVGbG93
Qm94OjpwYWludEJveERlY29yYXRpb25zKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQm94
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveDo6cGFpbnRCb3hEZWNvcmF0aW9ucyk6
CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OmFwcGx5Qm94U2hhZG93Rm9yQmFja2dyb3VuZCk6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJCb3hNb2RlbE9iamVjdDo6Ym94U2hhZG93U2hvdWxkQmVBcHBsaWVkVG9CYWNrZ3Jv
dW5kIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OmFyZWFDYXN0aW5nU2hhZG93SW5Ib2xlKToK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveE1vZGVsT2JqZWN0OjpwYWludEJveFNoYWRvdyk6
CisgICAgICAgIE1vdmUgdGhlIHNuYXBwaW5nIHVudGlsIGFmdGVyIHdlJ3ZlIGFkanVzdGVkIHJl
Y3RzIGZvciBvZmZzZXQgYW5kIHNwcmVhZC4gVGhlICJleHRyYU9mZnNldCIKKyAgICAgICAgY29t
cHV0YXRpb24gbWFrZXMgdGhlIHNuYXBwaW5nIGEgbGl0dGxlIG1vcmUgY29tcGxleDsgd2UgaGF2
ZSB0byBzbmFwIGJlZm9yZSBhbmQgYWZ0ZXIgYXBwbHlpbmcKKyAgICAgICAgc2hhZG93T2Zmc2V0
LCBhbmQgZ2l2ZSB0byBHcmFwaGljc0NvbnRleHQgdGhlIGRlbHRhIGJldHdlZW4gdGhlIHNuYXBw
ZWQgdmFsdWVzLgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUYWJsZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJUYWJsZTo6cGFpbnRCb3hEZWNvcmF0aW9ucyk6CisgICAgICAgICog
cmVuZGVyaW5nL1JlbmRlclRhYmxlQ2VsbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJU
YWJsZUNlbGw6OnBhaW50Qm94RGVjb3JhdGlvbnMpOgorICAgICAgICAqIHJlbmRlcmluZy9zdHls
ZS9SZW5kZXJTdHlsZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6c2V0VGV4
dFNoYWRvdyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6Z2V0U2hhZG93RXh0ZW50
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjpnZXRTaGFkb3dJbnNldEV4
dGVudCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6Z2V0U2hhZG93SG9y
aXpvbnRhbEV4dGVudCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6Z2V0
U2hhZG93VmVydGljYWxFeHRlbnQgY29uc3QpOgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9T
aGFkb3dEYXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNoYWRvd0RhdGE6OlNoYWRvd0RhdGEp
OgorICAgICAgICAoV2ViQ29yZTo6Y2FsY3VsYXRlU2hhZG93RXh0ZW50KToKKyAgICAgICAgKFdl
YkNvcmU6OlNoYWRvd0RhdGE6OmFkanVzdFJlY3RGb3JTaGFkb3cgY29uc3QpOgorICAgICAgICAq
IHJlbmRlcmluZy9zdHlsZS9TaGFkb3dEYXRhLmg6CisgICAgICAgIChXZWJDb3JlOjpTaGFkb3dE
YXRhOjpTaGFkb3dEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OlNoYWRvd0RhdGE6OnggY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6U2hhZG93RGF0YTo6eSBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpTaGFkb3dEYXRhOjpsb2NhdGlvbiBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFk
b3dEYXRhOjpwYWludGluZ0V4dGVudCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFkb3dE
YXRhOjpzcHJlYWQgY29uc3QpOgorICAgICAgICAqIHN0eWxlL1N0eWxlQnVpbGRlckN1c3RvbS5o
OgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OkJ1aWxkZXJDdXN0b206OmFwcGx5VGV4dE9yQm94
U2hhZG93VmFsdWUpOgorCiAyMDE5LTExLTA0ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5j
b20+CiAKICAgICAgICAgTWVkaWFSZWNvcmRlciBzaG91bGQgbm90IHByZXZlbnQgZW50ZXJpbmcg
dGhlIGJhY2svZm9yd2FyZCBjYWNoZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NT
U0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ29t
cHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcAppbmRleCA0YmMyMWFlMGM2ZDEwMzI1M2I4YjhjODc0
ZGIwNDYyMjYxNzgwYjYxLi4wZjZiZDgyYTNlZDEwODI4YTA0ZTljMWY1ZGZiNWJjZjVkOTU4NTRm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0
aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0
aW9uLmNwcApAQCAtNjEzLDcgKzYxMyw3IEBAIFJlZjxDU1NWYWx1ZT4gQ29tcHV0ZWRTdHlsZUV4
dHJhY3Rvcjo6dmFsdWVGb3JTaGFkb3coY29uc3QgU2hhZG93RGF0YSogc2hhZG93LCBDCiAgICAg
ICAgIGF1dG8geSA9IGFkanVzdExlbmd0aEZvclpvb20oY3VyclNoYWRvd0RhdGEtPnkoKSwgc3R5
bGUsIGFkanVzdCk7CiAgICAgICAgIGF1dG8gYmx1ciA9IGFkanVzdExlbmd0aEZvclpvb20oY3Vy
clNoYWRvd0RhdGEtPnJhZGl1cygpLCBzdHlsZSwgYWRqdXN0KTsKICAgICAgICAgYXV0byBzcHJl
YWQgPSBwcm9wZXJ0eUlEID09IENTU1Byb3BlcnR5VGV4dFNoYWRvdyA/IFJlZlB0cjxDU1NQcmlt
aXRpdmVWYWx1ZT4oKSA6IGFkanVzdExlbmd0aEZvclpvb20oY3VyclNoYWRvd0RhdGEtPnNwcmVh
ZCgpLCBzdHlsZSwgYWRqdXN0KTsKLSAgICAgICAgYXV0byBzdHlsZSA9IHByb3BlcnR5SUQgPT0g
Q1NTUHJvcGVydHlUZXh0U2hhZG93IHx8IGN1cnJTaGFkb3dEYXRhLT5zdHlsZSgpID09IE5vcm1h
bCA/IFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4oKSA6IGNzc1ZhbHVlUG9vbC5jcmVhdGVJZGVu
dGlmaWVyVmFsdWUoQ1NTVmFsdWVJbnNldCk7CisgICAgICAgIGF1dG8gc3R5bGUgPSBwcm9wZXJ0
eUlEID09IENTU1Byb3BlcnR5VGV4dFNoYWRvdyB8fCBjdXJyU2hhZG93RGF0YS0+c3R5bGUoKSA9
PSBTaGFkb3dTdHlsZTo6Tm9ybWFsID8gUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPigpIDogY3Nz
VmFsdWVQb29sLmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1ZUluc2V0KTsKICAgICAgICAg
YXV0byBjb2xvciA9IGNzc1ZhbHVlUG9vbC5jcmVhdGVDb2xvclZhbHVlKGN1cnJTaGFkb3dEYXRh
LT5jb2xvcigpKTsKICAgICAgICAgbGlzdC0+cHJlcGVuZChDU1NTaGFkb3dWYWx1ZTo6Y3JlYXRl
KFdURk1vdmUoeCksIFdURk1vdmUoeSksIFdURk1vdmUoYmx1ciksIFdURk1vdmUoc3ByZWFkKSwg
V1RGTW92ZShzdHlsZSksIFdURk1vdmUoY29sb3IpKSk7CiAgICAgfQpAQCAtNjkxLDcgKzY5MSw3
IEBAIFJlZjxDU1NWYWx1ZT4gQ29tcHV0ZWRTdHlsZUV4dHJhY3Rvcjo6dmFsdWVGb3JGaWx0ZXIo
Y29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlLCBjCiAgICAgICAgICAgICAgICAgRHJvcFNoYWRvd0Zp
bHRlck9wZXJhdGlvbiYgZHJvcFNoYWRvd09wZXJhdGlvbiA9IGRvd25jYXN0PERyb3BTaGFkb3dG
aWx0ZXJPcGVyYXRpb24+KGZpbHRlck9wZXJhdGlvbik7CiAgICAgICAgICAgICAgICAgZmlsdGVy
VmFsdWUgPSBDU1NGdW5jdGlvblZhbHVlOjpjcmVhdGUoQ1NTVmFsdWVEcm9wU2hhZG93KTsKICAg
ICAgICAgICAgICAgICAvLyBXZSB3YW50IG91ciBjb21wdXRlZCBzdHlsZSB0byBsb29rIGxpa2Ug
dGhhdCBvZiBhIHRleHQgc2hhZG93IChoYXMgbmVpdGhlciBzcHJlYWQgbm9yIGluc2V0IHN0eWxl
KS4KLSAgICAgICAgICAgICAgICBTaGFkb3dEYXRhIHNoYWRvd0RhdGEgPSBTaGFkb3dEYXRhKGRy
b3BTaGFkb3dPcGVyYXRpb24ubG9jYXRpb24oKSwgZHJvcFNoYWRvd09wZXJhdGlvbi5zdGREZXZp
YXRpb24oKSwgMCwgTm9ybWFsLCBmYWxzZSwgZHJvcFNoYWRvd09wZXJhdGlvbi5jb2xvcigpKTsK
KyAgICAgICAgICAgICAgICBTaGFkb3dEYXRhIHNoYWRvd0RhdGEgPSBTaGFkb3dEYXRhKGRyb3BT
aGFkb3dPcGVyYXRpb24ubG9jYXRpb24oKSwgZHJvcFNoYWRvd09wZXJhdGlvbi5zdGREZXZpYXRp
b24oKSwgMCwgU2hhZG93U3R5bGU6Ok5vcm1hbCwgZmFsc2UsIGRyb3BTaGFkb3dPcGVyYXRpb24u
Y29sb3IoKSk7CiAgICAgICAgICAgICAgICAgZmlsdGVyVmFsdWUtPmFwcGVuZCh2YWx1ZUZvclNo
YWRvdygmc2hhZG93RGF0YSwgQ1NTUHJvcGVydHlUZXh0U2hhZG93LCBzdHlsZSwgYWRqdXN0KSk7
CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTUHJpbWl0aXZlVmFsdWUuY3BwIGIvU291cmNlL1dlYkNvcmUvY3Nz
L0NTU1ByaW1pdGl2ZVZhbHVlLmNwcAppbmRleCA3ZmFmYTcyODdlZjY0OGJmZWI3MTdmMTliYTY3
MDg5MmUzZTkxYWZjLi4zOGZkNmRhMDhmODFlNWU5NDdlMTM0ZDRhNDMyNzVlNDFmNTEyYjEyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJpbWl0aXZlVmFsdWUuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcmltaXRpdmVWYWx1ZS5jcHAKQEAgLTU5Niw2ICs1OTYs
MTEgQEAgdGVtcGxhdGU8PiBkb3VibGUgQ1NTUHJpbWl0aXZlVmFsdWU6OmNvbXB1dGVMZW5ndGgo
Y29uc3QgQ1NTVG9MZW5ndGhDb252ZXJzaW9uRGEKICAgICByZXR1cm4gY29tcHV0ZUxlbmd0aERv
dWJsZShjb252ZXJzaW9uRGF0YSk7CiB9CiAKK3RlbXBsYXRlPD4gTGF5b3V0VW5pdCBDU1NQcmlt
aXRpdmVWYWx1ZTo6Y29tcHV0ZUxlbmd0aChjb25zdCBDU1NUb0xlbmd0aENvbnZlcnNpb25EYXRh
JiBjb252ZXJzaW9uRGF0YSkgY29uc3QKK3sKKyAgICByZXR1cm4gTGF5b3V0VW5pdChjb21wdXRl
TGVuZ3RoRG91YmxlKGNvbnZlcnNpb25EYXRhKSk7Cit9CisKIGRvdWJsZSBDU1NQcmltaXRpdmVW
YWx1ZTo6Y29tcHV0ZUxlbmd0aERvdWJsZShjb25zdCBDU1NUb0xlbmd0aENvbnZlcnNpb25EYXRh
JiBjb252ZXJzaW9uRGF0YSkgY29uc3QKIHsKICAgICBpZiAobV9wcmltaXRpdmVVbml0VHlwZSA9
PSBDU1NfQ0FMQykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0NT
U1Byb3BlcnR5QW5pbWF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0NT
U1Byb3BlcnR5QW5pbWF0aW9uLmNwcAppbmRleCA1OTkxYmY3Yjk2ZjczMDc0ODM1YTVhYmM5NjY5
NGQxYzc2YTI4ZWJhLi5hNDQyMWNjNDJhZDA1MzI0OWNjYzI3MDczMjg3NmU5MjJkNzI0ZWY3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9DU1NQcm9wZXJ0eUFuaW1h
dGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9hbmltYXRpb24vQ1NTUHJvcGVydHlB
bmltYXRpb24uY3BwCkBAIC0xMDcsMTAgKzEwNywxMCBAQCBzdGF0aWMgaW5saW5lIFNoYWRvd1N0
eWxlIGJsZW5kRnVuYyhjb25zdCBDU1NQcm9wZXJ0eUJsZW5kaW5nQ2xpZW50KiBhbmltLCBTaGFk
bwogICAgIGlmIChmcm9tID09IHRvKQogICAgICAgICByZXR1cm4gdG87CiAKLSAgICBkb3VibGUg
ZnJvbVZhbCA9IGZyb20gPT0gTm9ybWFsID8gMSA6IDA7Ci0gICAgZG91YmxlIHRvVmFsID0gdG8g
PT0gTm9ybWFsID8gMSA6IDA7CisgICAgZG91YmxlIGZyb21WYWwgPSBmcm9tID09IFNoYWRvd1N0
eWxlOjpOb3JtYWwgPyAxIDogMDsKKyAgICBkb3VibGUgdG9WYWwgPSB0byA9PSBTaGFkb3dTdHls
ZTo6Tm9ybWFsID8gMSA6IDA7CiAgICAgZG91YmxlIHJlc3VsdCA9IGJsZW5kRnVuYyhhbmltLCBm
cm9tVmFsLCB0b1ZhbCwgcHJvZ3Jlc3MpOwotICAgIHJldHVybiByZXN1bHQgPiAwID8gTm9ybWFs
IDogSW5zZXQ7CisgICAgcmV0dXJuIHJlc3VsdCA+IDAgPyBTaGFkb3dTdHlsZTo6Tm9ybWFsIDog
U2hhZG93U3R5bGU6Okluc2V0OwogfQogCiBzdGF0aWMgaW5saW5lIHN0ZDo6dW5pcXVlX3B0cjxT
aGFkb3dEYXRhPiBibGVuZEZ1bmMoY29uc3QgQ1NTUHJvcGVydHlCbGVuZGluZ0NsaWVudCogYW5p
bSwgY29uc3QgU2hhZG93RGF0YSogZnJvbSwgY29uc3QgU2hhZG93RGF0YSogdG8sIGRvdWJsZSBw
cm9ncmVzcykKQEAgLTc1OSwxNSArNzU5LDE1IEBAIHN0YXRpYyBpbmxpbmUgc2l6ZV90IHNoYWRv
d0xpc3RMZW5ndGgoY29uc3QgU2hhZG93RGF0YSogc2hhZG93KQogCiBzdGF0aWMgaW5saW5lIGNv
bnN0IFNoYWRvd0RhdGEqIHNoYWRvd0ZvckJsZW5kaW5nKGNvbnN0IFNoYWRvd0RhdGEqIHNyY1No
YWRvdywgY29uc3QgU2hhZG93RGF0YSogb3RoZXJTaGFkb3cpCiB7Ci0gICAgc3RhdGljIE5ldmVy
RGVzdHJveWVkPFNoYWRvd0RhdGE+IGRlZmF1bHRTaGFkb3dEYXRhKEludFBvaW50KCksIDAsIDAs
IE5vcm1hbCwgZmFsc2UsIENvbG9yOjp0cmFuc3BhcmVudCk7Ci0gICAgc3RhdGljIE5ldmVyRGVz
dHJveWVkPFNoYWRvd0RhdGE+IGRlZmF1bHRJbnNldFNoYWRvd0RhdGEoSW50UG9pbnQoKSwgMCwg
MCwgSW5zZXQsIGZhbHNlLCBDb2xvcjo6dHJhbnNwYXJlbnQpOwotICAgIHN0YXRpYyBOZXZlckRl
c3Ryb3llZDxTaGFkb3dEYXRhPiBkZWZhdWx0V2ViS2l0Qm94U2hhZG93RGF0YShJbnRQb2ludCgp
LCAwLCAwLCBOb3JtYWwsIHRydWUsIENvbG9yOjp0cmFuc3BhcmVudCk7Ci0gICAgc3RhdGljIE5l
dmVyRGVzdHJveWVkPFNoYWRvd0RhdGE+IGRlZmF1bHRJbnNldFdlYktpdEJveFNoYWRvd0RhdGEo
SW50UG9pbnQoKSwgMCwgMCwgSW5zZXQsIHRydWUsIENvbG9yOjp0cmFuc3BhcmVudCk7CisgICAg
c3RhdGljIE5ldmVyRGVzdHJveWVkPFNoYWRvd0RhdGE+IGRlZmF1bHRTaGFkb3dEYXRhKExheW91
dFBvaW50KCksIDAsIDAsIFNoYWRvd1N0eWxlOjpOb3JtYWwsIGZhbHNlLCBDb2xvcjo6dHJhbnNw
YXJlbnQpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxTaGFkb3dEYXRhPiBkZWZhdWx0SW5z
ZXRTaGFkb3dEYXRhKExheW91dFBvaW50KCksIDAsIDAsIFNoYWRvd1N0eWxlOjpJbnNldCwgZmFs
c2UsIENvbG9yOjp0cmFuc3BhcmVudCk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFNoYWRv
d0RhdGE+IGRlZmF1bHRXZWJLaXRCb3hTaGFkb3dEYXRhKExheW91dFBvaW50KCksIDAsIDAsIFNo
YWRvd1N0eWxlOjpOb3JtYWwsIHRydWUsIENvbG9yOjp0cmFuc3BhcmVudCk7CisgICAgc3RhdGlj
IE5ldmVyRGVzdHJveWVkPFNoYWRvd0RhdGE+IGRlZmF1bHRJbnNldFdlYktpdEJveFNoYWRvd0Rh
dGEoTGF5b3V0UG9pbnQoKSwgMCwgMCwgU2hhZG93U3R5bGU6Okluc2V0LCB0cnVlLCBDb2xvcjo6
dHJhbnNwYXJlbnQpOwogCiAgICAgaWYgKHNyY1NoYWRvdykKICAgICAgICAgcmV0dXJuIHNyY1No
YWRvdzsKIAotICAgIGlmIChvdGhlclNoYWRvdy0+c3R5bGUoKSA9PSBJbnNldCkKKyAgICBpZiAo
b3RoZXJTaGFkb3ctPnN0eWxlKCkgPT0gU2hhZG93U3R5bGU6Okluc2V0KQogICAgICAgICByZXR1
cm4gb3RoZXJTaGFkb3ctPmlzV2Via2l0Qm94U2hhZG93KCkgPyAmZGVmYXVsdEluc2V0V2ViS2l0
Qm94U2hhZG93RGF0YS5nZXQoKSA6ICZkZWZhdWx0SW5zZXRTaGFkb3dEYXRhLmdldCgpOwogCiAg
ICAgcmV0dXJuIG90aGVyU2hhZG93LT5pc1dlYmtpdEJveFNoYWRvdygpID8gJmRlZmF1bHRXZWJL
aXRCb3hTaGFkb3dEYXRhLmdldCgpIDogJmRlZmF1bHRTaGFkb3dEYXRhLmdldCgpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYW5pbWF0aW9uL0FuaW1hdGlvblV0aWxpdGll
cy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYW5pbWF0aW9uL0FuaW1hdGlvblV0aWxpdGll
cy5oCmluZGV4IGViMDhlMDFhODhmZDNkNjY5MDg1YTJkOWUyM2IxOGQ5YmU2YzFiMWYuLmZjZWFl
ZGFmMDFkNjk3ZTQ0OTFhMjA0M2VlZjY2Njc0ZTBjYzk5MDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2FuaW1hdGlvbi9BbmltYXRpb25VdGlsaXRpZXMuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9hbmltYXRpb24vQW5pbWF0aW9uVXRpbGl0aWVzLmgKQEAgLTEs
NSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEtMjAxOSBBcHBsZSBJbmMuICBBbGwg
cmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yMywx
MSArMjMsMTAgQEAKICAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAogICovCiAKLSNpZm5kZWYgQW5pbWF0aW9uVXRp
bGl0aWVzX2gKLSNkZWZpbmUgQW5pbWF0aW9uVXRpbGl0aWVzX2gKKyNwcmFnbWEgb25jZQogCiAj
aW5jbHVkZSAiSW50UG9pbnQuaCIKLSNpbmNsdWRlICJMYXlvdXRVbml0LmgiCisjaW5jbHVkZSAi
TGF5b3V0UG9pbnQuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC01OSw5ICs1OCwxMyBA
QCBpbmxpbmUgTGF5b3V0VW5pdCBibGVuZChMYXlvdXRVbml0IGZyb20sIExheW91dFVuaXQgdG8s
IGRvdWJsZSBwcm9ncmVzcykKIGlubGluZSBJbnRQb2ludCBibGVuZChjb25zdCBJbnRQb2ludCYg
ZnJvbSwgY29uc3QgSW50UG9pbnQmIHRvLCBkb3VibGUgcHJvZ3Jlc3MpCiB7CiAgICAgcmV0dXJu
IEludFBvaW50KGJsZW5kKGZyb20ueCgpLCB0by54KCksIHByb2dyZXNzKSwKLSAgICAgICAgICAg
ICAgICAgICAgYmxlbmQoZnJvbS55KCksIHRvLnkoKSwgcHJvZ3Jlc3MpKTsKKyAgICAgICAgYmxl
bmQoZnJvbS55KCksIHRvLnkoKSwgcHJvZ3Jlc3MpKTsKIH0KIAotfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQoraW5saW5lIExheW91dFBvaW50IGJsZW5kKGNvbnN0IExheW91dFBvaW50JiBmcm9tLCBj
b25zdCBMYXlvdXRQb2ludCYgdG8sIGRvdWJsZSBwcm9ncmVzcykKK3sKKyAgICByZXR1cm4gTGF5
b3V0UG9pbnQoYmxlbmQoZnJvbS54KCksIHRvLngoKSwgcHJvZ3Jlc3MpLAorICAgICAgICBibGVu
ZChmcm9tLnkoKSwgdG8ueSgpLCBwcm9ncmVzcykpOworfQogCi0jZW5kaWYgLy8gQW5pbWF0aW9u
VXRpbGl0aWVzX2gKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1JvdW5kZWRSZWN0LmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9Sb3VuZGVkUmVjdC5oCmluZGV4IGFkODIwN2M4YmE0OTFjZDIzYjUz
ZDBlMDk4MGI2OGVmZjE0MTg4MDYuLjExN2JlZWY3YTMzYzJmZWIwMTg3NTIzMDY1ZGZlNTkyNDM0
ZTA1OTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1JvdW5k
ZWRSZWN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUm91bmRlZFJl
Y3QuaApAQCAtMjQsOCArMjQsNyBAQAogICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0jaWZuZGVmIFJvdW5k
ZWRSZWN0X2gKLSNkZWZpbmUgUm91bmRlZFJlY3RfaAorI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRl
ICJGbG9hdFF1YWQuaCIKICNpbmNsdWRlICJMYXlvdXRSZWN0LmgiCkBAIC0xMzIsNSArMTMxLDMg
QEAgaW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBSb3VuZGVkUmVjdCYgYSwgY29uc3QgUm91
bmRlZFJlY3QmIGIpCiBXRUJDT1JFX0VYUE9SVCBSZWdpb24gYXBwcm94aW1hdGVBc1JlZ2lvbihj
b25zdCBSb3VuZGVkUmVjdCYsIHVuc2lnbmVkIHN0ZXBMZW5ndGggPSAyMCk7CiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIFJvdW5kZWRSZWN0X2gKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVGbG93Qm94LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9JbmxpbmVGbG93Qm94LmNwcAppbmRleCA5OTcxZWExODNlZmNmYTg2NmViNjQ4
ZTAzM2E0YmEwZWNiNDU5YmJjLi45MDc1Nzc0NzllMGRkNzk2Y2Q5MGNjZjNiMjQ1NTg2M2NlN2Fk
ZTQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lRmxvd0JveC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZUZsb3dCb3guY3BwCkBAIC0x
MzY3LDcgKzEzNjcsNyBAQCB2b2lkIElubGluZUZsb3dCb3g6OnBhaW50Qm94RGVjb3JhdGlvbnMo
UGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFBvaW50JgogICAgIExheW91dFJlY3Qg
cGFpbnRSZWN0ID0gTGF5b3V0UmVjdChhZGp1c3RlZFBhaW50b2Zmc2V0LCBmcmFtZVJlY3Quc2l6
ZSgpKTsKICAgICAvLyBTaGFkb3cgY29tZXMgZmlyc3QgYW5kIGlzIGJlaGluZCB0aGUgYmFja2dy
b3VuZCBhbmQgYm9yZGVyLgogICAgIGlmICghcmVuZGVyZXIoKS5ib3hTaGFkb3dTaG91bGRCZUFw
cGxpZWRUb0JhY2tncm91bmQoYWRqdXN0ZWRQYWludG9mZnNldCwgQmFja2dyb3VuZEJsZWVkTm9u
ZSwgdGhpcykpCi0gICAgICAgIHBhaW50Qm94U2hhZG93KHBhaW50SW5mbywgbGluZVN0eWxlLCBO
b3JtYWwsIHBhaW50UmVjdCk7CisgICAgICAgIHBhaW50Qm94U2hhZG93KHBhaW50SW5mbywgbGlu
ZVN0eWxlLCBTaGFkb3dTdHlsZTo6Tm9ybWFsLCBwYWludFJlY3QpOwogCiAgICAgYXV0byBjb2xv
ciA9IGxpbmVTdHlsZS52aXNpdGVkRGVwZW5kZW50Q29sb3IoQ1NTUHJvcGVydHlCYWNrZ3JvdW5k
Q29sb3IpOwogICAgIGF1dG8gY29tcG9zaXRlT3AgPSByZW5kZXJlcigpLmRvY3VtZW50KCkuY29t
cG9zaXRlT3BlcmF0b3JGb3JCYWNrZ3JvdW5kQ29sb3IoY29sb3IsIHJlbmRlcmVyKCkpOwpAQCAt
MTM3NSw3ICsxMzc1LDcgQEAgdm9pZCBJbmxpbmVGbG93Qm94OjpwYWludEJveERlY29yYXRpb25z
KFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2ludCYKICAgICBjb2xvciA9IGxp
bmVTdHlsZS5jb2xvckJ5QXBwbHlpbmdDb2xvckZpbHRlcihjb2xvcik7CiAKICAgICBwYWludEZp
bGxMYXllcnMocGFpbnRJbmZvLCBjb2xvciwgbGluZVN0eWxlLmJhY2tncm91bmRMYXllcnMoKSwg
cGFpbnRSZWN0LCBjb21wb3NpdGVPcCk7Ci0gICAgcGFpbnRCb3hTaGFkb3cocGFpbnRJbmZvLCBs
aW5lU3R5bGUsIEluc2V0LCBwYWludFJlY3QpOworICAgIHBhaW50Qm94U2hhZG93KHBhaW50SW5m
bywgbGluZVN0eWxlLCBTaGFkb3dTdHlsZTo6SW5zZXQsIHBhaW50UmVjdCk7CiAKICAgICAvLyA6
Zmlyc3QtbGluZSBjYW5ub3QgYmUgdXNlZCB0byBwdXQgYm9yZGVycyBvbiBhIGxpbmUuIEFsd2F5
cyBwYWludCBib3JkZXJzIHdpdGggb3VyCiAgICAgLy8gbm9uLWZpcnN0LWxpbmUgc3R5bGUuCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3BwCmluZGV4IDNiYzBjNjJmYzZkYzM0NTMz
NWU0NjI0MzAzYTAxNWVkNDAxOGIxODEuLmUwNGYwOTMxMGNmMTc3NmQyZDc2MTQ2NTAxMTBiOTQ2
NjMwMjYzNTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3gu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3BwCkBAIC0xMzIx
LDcgKzEzMjEsNyBAQCB2b2lkIFJlbmRlckJveDo6cGFpbnRCb3hEZWNvcmF0aW9ucyhQYWludElu
Zm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQmIHBhaQogICAgIC8vIEZJWE1FOiBTaG91
bGQgZXZlbnR1YWxseSBnaXZlIHRoZSB0aGVtZSBjb250cm9sIG92ZXIgd2hldGhlciB0aGUgYm94
IHNoYWRvdyBzaG91bGQgcGFpbnQsIHNpbmNlIGNvbnRyb2xzIGNvdWxkIGhhdmUKICAgICAvLyBj
dXN0b20gc2hhZG93cyBvZiB0aGVpciBvd24uCiAgICAgaWYgKCFib3hTaGFkb3dTaG91bGRCZUFw
cGxpZWRUb0JhY2tncm91bmQocGFpbnRSZWN0LmxvY2F0aW9uKCksIGJsZWVkQXZvaWRhbmNlKSkK
LSAgICAgICAgcGFpbnRCb3hTaGFkb3cocGFpbnRJbmZvLCBwYWludFJlY3QsIHN0eWxlKCksIE5v
cm1hbCk7CisgICAgICAgIHBhaW50Qm94U2hhZG93KHBhaW50SW5mbywgcGFpbnRSZWN0LCBzdHls
ZSgpLCBTaGFkb3dTdHlsZTo6Tm9ybWFsKTsKIAogICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2
ZXIgc3RhdGVTYXZlcihwYWludEluZm8uY29udGV4dCgpLCBmYWxzZSk7CiAgICAgaWYgKGJsZWVk
QXZvaWRhbmNlID09IEJhY2tncm91bmRCbGVlZFVzZVRyYW5zcGFyZW5jeUxheWVyKSB7CkBAIC0x
MzUyLDcgKzEzNTIsNyBAQCB2b2lkIFJlbmRlckJveDo6cGFpbnRCb3hEZWNvcmF0aW9ucyhQYWlu
dEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQmIHBhaQogICAgICAgICBpZiAoc3R5
bGUoKS5oYXNBcHBlYXJhbmNlKCkpCiAgICAgICAgICAgICB0aGVtZSgpLnBhaW50RGVjb3JhdGlv
bnMoKnRoaXMsIHBhaW50SW5mbywgcGFpbnRSZWN0KTsKICAgICB9Ci0gICAgcGFpbnRCb3hTaGFk
b3cocGFpbnRJbmZvLCBwYWludFJlY3QsIHN0eWxlKCksIEluc2V0KTsKKyAgICBwYWludEJveFNo
YWRvdyhwYWludEluZm8sIHBhaW50UmVjdCwgc3R5bGUoKSwgU2hhZG93U3R5bGU6Okluc2V0KTsK
IAogICAgIC8vIFRoZSB0aGVtZSB3aWxsIHRlbGwgdXMgd2hldGhlciBvciBub3Qgd2Ugc2hvdWxk
IGFsc28gcGFpbnQgdGhlIENTUyBib3JkZXIuCiAgICAgaWYgKGJsZWVkQXZvaWRhbmNlICE9IEJh
Y2tncm91bmRCbGVlZEJhY2tncm91bmRPdmVyQm9yZGVyICYmICghc3R5bGUoKS5oYXNBcHBlYXJh
bmNlKCkgfHwgKGJvcmRlck9yQmFja2dyb3VuZFBhaW50aW5nSXNOZWVkZWQgJiYgdGhlbWUoKS5w
YWludEJvcmRlck9ubHkoKnRoaXMsIHBhaW50SW5mbywgcGFpbnRSZWN0KSkpICYmIHN0eWxlKCku
aGFzVmlzaWJsZUJvcmRlckRlY29yYXRpb24oKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuY3BwCmluZGV4IDIyMGFmZDczNTE4NjM5MGViNGM0
MDFiYTA0OTQwNzgzYjE2NzI3OWMuLjk4NjllYmQ3ZWQwNTFjMjMyYWViYzg5MjZiNGU4ZjM5MGU4
MWRjZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3hNb2Rl
bE9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveE1vZGVs
T2JqZWN0LmNwcApAQCAtNjgwLDcgKzY4MCw3IEBAIFJvdW5kZWRSZWN0IFJlbmRlckJveE1vZGVs
T2JqZWN0OjpiYWNrZ3JvdW5kUm91bmRlZFJlY3RBZGp1c3RlZEZvckJsZWVkQXZvaWRhbmNlCiBz
dGF0aWMgdm9pZCBhcHBseUJveFNoYWRvd0ZvckJhY2tncm91bmQoR3JhcGhpY3NDb250ZXh0JiBj
b250ZXh0LCBjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUpCiB7CiAgICAgY29uc3QgU2hhZG93RGF0
YSogYm94U2hhZG93ID0gc3R5bGUuYm94U2hhZG93KCk7Ci0gICAgd2hpbGUgKGJveFNoYWRvdy0+
c3R5bGUoKSAhPSBOb3JtYWwpCisgICAgd2hpbGUgKGJveFNoYWRvdy0+c3R5bGUoKSAhPSBTaGFk
b3dTdHlsZTo6Tm9ybWFsKQogICAgICAgICBib3hTaGFkb3cgPSBib3hTaGFkb3ctPm5leHQoKTsK
IAogICAgIEZsb2F0U2l6ZSBzaGFkb3dPZmZzZXQoYm94U2hhZG93LT54KCksIGJveFNoYWRvdy0+
eSgpKTsKQEAgLTIyODUsNyArMjI4NSw3IEBAIGJvb2wgUmVuZGVyQm94TW9kZWxPYmplY3Q6OmJv
eFNoYWRvd1Nob3VsZEJlQXBwbGllZFRvQmFja2dyb3VuZChjb25zdCBMYXlvdXRQb2luCiAKICAg
ICBib29sIGhhc09uZU5vcm1hbEJveFNoYWRvdyA9IGZhbHNlOwogICAgIGZvciAoY29uc3QgU2hh
ZG93RGF0YSogY3VycmVudFNoYWRvdyA9IHN0eWxlKCkuYm94U2hhZG93KCk7IGN1cnJlbnRTaGFk
b3c7IGN1cnJlbnRTaGFkb3cgPSBjdXJyZW50U2hhZG93LT5uZXh0KCkpIHsKLSAgICAgICAgaWYg
KGN1cnJlbnRTaGFkb3ctPnN0eWxlKCkgIT0gTm9ybWFsKQorICAgICAgICBpZiAoY3VycmVudFNo
YWRvdy0+c3R5bGUoKSAhPSBTaGFkb3dTdHlsZTo6Tm9ybWFsKQogICAgICAgICAgICAgY29udGlu
dWU7CiAKICAgICAgICAgaWYgKGhhc09uZU5vcm1hbEJveFNoYWRvdykKQEAgLTIzMjIsNyArMjMy
Miw3IEBAIGJvb2wgUmVuZGVyQm94TW9kZWxPYmplY3Q6OmJveFNoYWRvd1Nob3VsZEJlQXBwbGll
ZFRvQmFja2dyb3VuZChjb25zdCBMYXlvdXRQb2luCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXN0
YXRpYyBpbmxpbmUgTGF5b3V0UmVjdCBhcmVhQ2FzdGluZ1NoYWRvd0luSG9sZShjb25zdCBMYXlv
dXRSZWN0JiBob2xlUmVjdCwgaW50IHNoYWRvd0V4dGVudCwgaW50IHNoYWRvd1NwcmVhZCwgY29u
c3QgSW50U2l6ZSYgc2hhZG93T2Zmc2V0KQorc3RhdGljIGlubGluZSBMYXlvdXRSZWN0IGFyZWFD
YXN0aW5nU2hhZG93SW5Ib2xlKGNvbnN0IExheW91dFJlY3QmIGhvbGVSZWN0LCBMYXlvdXRVbml0
IHNoYWRvd0V4dGVudCwgTGF5b3V0VW5pdCBzaGFkb3dTcHJlYWQsIGNvbnN0IExheW91dFNpemUm
IHNoYWRvd09mZnNldCkKIHsKICAgICBMYXlvdXRSZWN0IGJvdW5kcyhob2xlUmVjdCk7CiAgICAg
CkBAIC0yMzQzLDcgKzIzNDMsNyBAQCB2b2lkIFJlbmRlckJveE1vZGVsT2JqZWN0OjpwYWludEJv
eFNoYWRvdyhjb25zdCBQYWludEluZm8mIGluZm8sIGNvbnN0IExheW91dFJlYwogICAgIGlmIChj
b250ZXh0LnBhaW50aW5nRGlzYWJsZWQoKSB8fCAhc3R5bGUuYm94U2hhZG93KCkpCiAgICAgICAg
IHJldHVybjsKIAotICAgIFJvdW5kZWRSZWN0IGJvcmRlciA9IChzaGFkb3dTdHlsZSA9PSBJbnNl
dCkgPyBzdHlsZS5nZXRSb3VuZGVkSW5uZXJCb3JkZXJGb3IocGFpbnRSZWN0LCBpbmNsdWRlTG9n
aWNhbExlZnRFZGdlLCBpbmNsdWRlTG9naWNhbFJpZ2h0RWRnZSkKKyAgICBSb3VuZGVkUmVjdCBi
b3JkZXIgPSAoc2hhZG93U3R5bGUgPT0gU2hhZG93U3R5bGU6Okluc2V0KSA/IHN0eWxlLmdldFJv
dW5kZWRJbm5lckJvcmRlckZvcihwYWludFJlY3QsIGluY2x1ZGVMb2dpY2FsTGVmdEVkZ2UsIGlu
Y2x1ZGVMb2dpY2FsUmlnaHRFZGdlKQogICAgICAgICA6IHN0eWxlLmdldFJvdW5kZWRCb3JkZXJG
b3IocGFpbnRSZWN0LCBpbmNsdWRlTG9naWNhbExlZnRFZGdlLCBpbmNsdWRlTG9naWNhbFJpZ2h0
RWRnZSk7CiAKICAgICBib29sIGhhc0JvcmRlclJhZGl1cyA9IHN0eWxlLmhhc0JvcmRlclJhZGl1
cygpOwpAQCAtMjM1NSw1MyArMjM1NSw1OCBAQCB2b2lkIFJlbmRlckJveE1vZGVsT2JqZWN0Ojpw
YWludEJveFNoYWRvdyhjb25zdCBQYWludEluZm8mIGluZm8sIGNvbnN0IExheW91dFJlYwogICAg
ICAgICBpZiAoc2hhZG93LT5zdHlsZSgpICE9IHNoYWRvd1N0eWxlKQogICAgICAgICAgICAgY29u
dGludWU7CiAKLSAgICAgICAgLy8gRklYTUU6IEFkZCBzdWJwaXhlbCBzdXBwb3J0IGZvciB0aGUg
c2hhZG93IHZhbHVlcy4gU29vbiBhZnRlciB0aGUgc2hhZG93IG9mZnNldCBiZWNvbWVzIGZyYWN0
aW9uYWwsCi0gICAgICAgIC8vIGFsbCB0aGUgZWFybHkgc25hcHBpbmdzIGhlcmUgbmVlZCB0byBi
ZSBwdXNoZWQgdG8gdGhlIGFjdHVhbCBwYWludGluZyBvcGVyYXRpb25zLgotICAgICAgICBJbnRT
aXplIHNoYWRvd09mZnNldChzaGFkb3ctPngoKSwgc2hhZG93LT55KCkpOworICAgICAgICBMYXlv
dXRTaXplIHNoYWRvd09mZnNldChzaGFkb3ctPngoKSwgc2hhZG93LT55KCkpOworICAgICAgICBM
YXlvdXRVbml0IHNoYWRvd1BhaW50aW5nRXh0ZW50ID0gc2hhZG93LT5wYWludGluZ0V4dGVudCgp
OworICAgICAgICBMYXlvdXRVbml0IHNoYWRvd1NwcmVhZCA9IHNoYWRvdy0+c3ByZWFkKCk7CiAg
ICAgICAgIGludCBzaGFkb3dSYWRpdXMgPSBzaGFkb3ctPnJhZGl1cygpOwotICAgICAgICBpbnQg
c2hhZG93UGFpbnRpbmdFeHRlbnQgPSBzaGFkb3ctPnBhaW50aW5nRXh0ZW50KCk7Ci0gICAgICAg
IGludCBzaGFkb3dTcHJlYWQgPSBzaGFkb3ctPnNwcmVhZCgpOwotICAgICAgICAKKwogICAgICAg
ICBpZiAoc2hhZG93T2Zmc2V0LmlzWmVybygpICYmICFzaGFkb3dSYWRpdXMgJiYgIXNoYWRvd1Nw
cmVhZCkKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAKICAgICAgICAgQ29sb3Igc2hh
ZG93Q29sb3IgPSBzdHlsZS5jb2xvckJ5QXBwbHlpbmdDb2xvckZpbHRlcihzaGFkb3ctPmNvbG9y
KCkpOwogCi0gICAgICAgIGlmIChzaGFkb3ctPnN0eWxlKCkgPT0gTm9ybWFsKSB7CisgICAgICAg
IGlmIChzaGFkb3ctPnN0eWxlKCkgPT0gU2hhZG93U3R5bGU6Ok5vcm1hbCkgewogICAgICAgICAg
ICAgUm91bmRlZFJlY3QgZmlsbFJlY3QgPSBib3JkZXI7CiAgICAgICAgICAgICBmaWxsUmVjdC5p
bmZsYXRlKHNoYWRvd1NwcmVhZCk7CiAgICAgICAgICAgICBpZiAoZmlsbFJlY3QuaXNFbXB0eSgp
KQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgICAgICBGbG9hdFJlY3QgcGl4
ZWxTbmFwcGVkU2hhZG93UmVjdCA9IHNuYXBSZWN0VG9EZXZpY2VQaXhlbHMoYm9yZGVyLnJlY3Qo
KSwgZGV2aWNlU2NhbGVGYWN0b3IpOwotICAgICAgICAgICAgcGl4ZWxTbmFwcGVkU2hhZG93UmVj
dC5pbmZsYXRlKHNoYWRvd1BhaW50aW5nRXh0ZW50ICsgc2hhZG93U3ByZWFkKTsKLSAgICAgICAg
ICAgIHBpeGVsU25hcHBlZFNoYWRvd1JlY3QubW92ZShzaGFkb3dPZmZzZXQpOworICAgICAgICAg
ICAgTGF5b3V0UmVjdCBzaGFkb3dSZWN0ID0gYm9yZGVyLnJlY3QoKTsKKyAgICAgICAgICAgIHNo
YWRvd1JlY3QuaW5mbGF0ZShzaGFkb3dQYWludGluZ0V4dGVudCArIHNoYWRvd1NwcmVhZCk7Cisg
ICAgICAgICAgICBzaGFkb3dSZWN0Lm1vdmUoc2hhZG93T2Zmc2V0KTsKKyAgICAgICAgICAgIEZs
b2F0UmVjdCBwaXhlbFNuYXBwZWRTaGFkb3dSZWN0ID0gc25hcFJlY3RUb0RldmljZVBpeGVscyhz
aGFkb3dSZWN0LCBkZXZpY2VTY2FsZUZhY3Rvcik7CiAKICAgICAgICAgICAgIEdyYXBoaWNzQ29u
dGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcihjb250ZXh0KTsKICAgICAgICAgICAgIGNvbnRleHQu
Y2xpcChwaXhlbFNuYXBwZWRTaGFkb3dSZWN0KTsKIAotICAgICAgICAgICAgLy8gTW92ZSB0aGUg
ZmlsbCBqdXN0IG91dHNpZGUgdGhlIGNsaXAsIGFkZGluZyAxIHBpeGVsIHNlcGFyYXRpb24gc28g
dGhhdCB0aGUgZmlsbCBkb2VzIG5vdAorICAgICAgICAgICAgLy8gTW92ZSB0aGUgZmlsbCBqdXN0
IG91dHNpZGUgdGhlIGNsaXAsIGFkZGluZyBhdCBsZWFzdCAxIHBpeGVsIG9mIHNlcGFyYXRpb24g
c28gdGhhdCB0aGUgZmlsbCBkb2VzIG5vdAogICAgICAgICAgICAgLy8gYmxlZWQgaW4gKGR1ZSB0
byBhbnRpYWxpYXNpbmcpIGlmIHRoZSBjb250ZXh0IGlzIHRyYW5zZm9ybWVkLgotICAgICAgICAg
ICAgSW50U2l6ZSBleHRyYU9mZnNldChyb3VuZFRvSW50KHBhaW50UmVjdC53aWR0aCgpKSArIHN0
ZDo6bWF4KDAsIHNoYWRvd09mZnNldC53aWR0aCgpKSArIHNoYWRvd1BhaW50aW5nRXh0ZW50ICsg
MiAqIHNoYWRvd1NwcmVhZCArIDEsIDApOworICAgICAgICAgICAgTGF5b3V0VW5pdCB4T2Zmc2V0
ID0gcGFpbnRSZWN0LndpZHRoKCkgKyBzdGQ6Om1heDxMYXlvdXRVbml0PigwLCBzaGFkb3dPZmZz
ZXQud2lkdGgoKSkgKyBzaGFkb3dQYWludGluZ0V4dGVudCArIDIgKiBzaGFkb3dTcHJlYWQgKyBM
YXlvdXRVbml0KDEpOworICAgICAgICAgICAgTGF5b3V0U2l6ZSBleHRyYU9mZnNldCh4T2Zmc2V0
LmNlaWwoKSwgMCk7CiAgICAgICAgICAgICBzaGFkb3dPZmZzZXQgLT0gZXh0cmFPZmZzZXQ7CiAg
ICAgICAgICAgICBmaWxsUmVjdC5tb3ZlKGV4dHJhT2Zmc2V0KTsKIAorICAgICAgICAgICAgYXV0
byBwaXhlbFNuYXBwZWRSZWN0VG9DbGlwT3V0ID0gYm9yZGVyLnBpeGVsU25hcHBlZFJvdW5kZWRS
ZWN0Rm9yUGFpbnRpbmcoZGV2aWNlU2NhbGVGYWN0b3IpOworICAgICAgICAgICAgRmxvYXRSb3Vu
ZGVkUmVjdCBwaXhlbFNuYXBwZWRGaWxsUmVjdCA9IGZpbGxSZWN0LnBpeGVsU25hcHBlZFJvdW5k
ZWRSZWN0Rm9yUGFpbnRpbmcoZGV2aWNlU2NhbGVGYWN0b3IpOworICAgICAgICAgICAgCisgICAg
ICAgICAgICBMYXlvdXRQb2ludCBzaGFkb3dSZWN0T3JpZ2luID0gZmlsbFJlY3QucmVjdCgpLmxv
Y2F0aW9uKCkgKyBzaGFkb3dPZmZzZXQ7CisgICAgICAgICAgICBGbG9hdFBvaW50IHNuYXBwZWRT
aGFkb3dPcmlnaW4gPSBGbG9hdFBvaW50KHJvdW5kVG9EZXZpY2VQaXhlbChzaGFkb3dSZWN0T3Jp
Z2luLngoKSwgZGV2aWNlU2NhbGVGYWN0b3IpLCByb3VuZFRvRGV2aWNlUGl4ZWwoc2hhZG93UmVj
dE9yaWdpbi55KCksIGRldmljZVNjYWxlRmFjdG9yKSk7CisgICAgICAgICAgICBGbG9hdFNpemUg
c25hcHBlZFNoYWRvd09mZnNldCA9IHNuYXBwZWRTaGFkb3dPcmlnaW4gLSBwaXhlbFNuYXBwZWRG
aWxsUmVjdC5yZWN0KCkubG9jYXRpb24oKTsKKwogICAgICAgICAgICAgaWYgKHNoYWRvdy0+aXNX
ZWJraXRCb3hTaGFkb3coKSkKLSAgICAgICAgICAgICAgICBjb250ZXh0LnNldExlZ2FjeVNoYWRv
dyhzaGFkb3dPZmZzZXQsIHNoYWRvd1JhZGl1cywgc2hhZG93Q29sb3IpOworICAgICAgICAgICAg
ICAgIGNvbnRleHQuc2V0TGVnYWN5U2hhZG93KHNuYXBwZWRTaGFkb3dPZmZzZXQsIHNoYWRvd1Jh
ZGl1cywgc2hhZG93Q29sb3IpOwogICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIGNv
bnRleHQuc2V0U2hhZG93KHNoYWRvd09mZnNldCwgc2hhZG93UmFkaXVzLCBzaGFkb3dDb2xvcik7
CisgICAgICAgICAgICAgICAgY29udGV4dC5zZXRTaGFkb3coc25hcHBlZFNoYWRvd09mZnNldCwg
c2hhZG93UmFkaXVzLCBzaGFkb3dDb2xvcik7CiAKLSAgICAgICAgICAgIEZsb2F0Um91bmRlZFJl
Y3QgcmVjdFRvQ2xpcE91dCA9IGJvcmRlci5waXhlbFNuYXBwZWRSb3VuZGVkUmVjdEZvclBhaW50
aW5nKGRldmljZVNjYWxlRmFjdG9yKTsKLSAgICAgICAgICAgIEZsb2F0Um91bmRlZFJlY3QgcGl4
ZWxTbmFwcGVkRmlsbFJlY3QgPSBmaWxsUmVjdC5waXhlbFNuYXBwZWRSb3VuZGVkUmVjdEZvclBh
aW50aW5nKGRldmljZVNjYWxlRmFjdG9yKTsKICAgICAgICAgICAgIGlmIChoYXNCb3JkZXJSYWRp
dXMpIHsKICAgICAgICAgICAgICAgICAvLyBJZiB0aGUgYm94IGlzIG9wYXF1ZSwgaXQgaXMgdW5u
ZWNlc3NhcnkgdG8gY2xpcCBpdCBvdXQuIEhvd2V2ZXIsIGRvaW5nIHNvIHNhdmVzIHRpbWUKICAg
ICAgICAgICAgICAgICAvLyB3aGVuIHBhaW50aW5nIHRoZSBzaGFkb3cuIE9uIHRoZSBvdGhlciBo
YW5kLCBpdCBpbnRyb2R1Y2VzIHN1YnBpeGVsIGdhcHMgYWxvbmcgdGhlCiAgICAgICAgICAgICAg
ICAgLy8gY29ybmVycy4gVGhvc2UgYXJlIGF2b2lkZWQgYnkgaW5zZXR0aW5nIHRoZSBjbGlwcGlu
ZyBwYXRoIGJ5IG9uZSBwaXhlbC4KICAgICAgICAgICAgICAgICBpZiAoaGFzT3BhcXVlQmFja2dy
b3VuZCkKLSAgICAgICAgICAgICAgICAgICAgcmVjdFRvQ2xpcE91dC5pbmZsYXRlV2l0aFJhZGlp
KC0xLjBmKTsKKyAgICAgICAgICAgICAgICAgICAgcGl4ZWxTbmFwcGVkUmVjdFRvQ2xpcE91dC5p
bmZsYXRlV2l0aFJhZGlpKC0xLjBmKTsKIAotICAgICAgICAgICAgICAgIGlmICghcmVjdFRvQ2xp
cE91dC5pc0VtcHR5KCkpCi0gICAgICAgICAgICAgICAgICAgIGNvbnRleHQuY2xpcE91dFJvdW5k
ZWRSZWN0KHJlY3RUb0NsaXBPdXQpOworICAgICAgICAgICAgICAgIGlmICghcGl4ZWxTbmFwcGVk
UmVjdFRvQ2xpcE91dC5pc0VtcHR5KCkpCisgICAgICAgICAgICAgICAgICAgIGNvbnRleHQuY2xp
cE91dFJvdW5kZWRSZWN0KHBpeGVsU25hcHBlZFJlY3RUb0NsaXBPdXQpOwogCiAgICAgICAgICAg
ICAgICAgUm91bmRlZFJlY3QgaW5mbHVlbmNlUmVjdChMYXlvdXRSZWN0KHBpeGVsU25hcHBlZFNo
YWRvd1JlY3QpLCBib3JkZXIucmFkaWkoKSk7CiAgICAgICAgICAgICAgICAgaW5mbHVlbmNlUmVj
dC5leHBhbmRSYWRpaSgyICogc2hhZG93UGFpbnRpbmdFeHRlbnQgKyBzaGFkb3dTcHJlYWQpOwpA
QCAtMjQyNCwxOCArMjQyOSwyMCBAQCB2b2lkIFJlbmRlckJveE1vZGVsT2JqZWN0OjpwYWludEJv
eFNoYWRvdyhjb25zdCBQYWludEluZm8mIGluZm8sIGNvbnN0IExheW91dFJlYwogICAgICAgICAg
ICAgICAgICAgICAvLyBGSVhNRTogSXQncyBub3QgY2xlYXIgaWYgdGhpcyBjaGVjayBpcyByaWdo
dC4gV2hhdCBhYm91dCBpbnRlZ3JhbCBzY2FsZSBmYWN0b3JzPwogICAgICAgICAgICAgICAgICAg
ICBBZmZpbmVUcmFuc2Zvcm0gdHJhbnNmb3JtID0gY29udGV4dC5nZXRDVE0oKTsKICAgICAgICAg
ICAgICAgICAgICAgaWYgKHRyYW5zZm9ybS5hKCkgIT0gMSB8fCAodHJhbnNmb3JtLmQoKSAhPSAx
ICYmIHRyYW5zZm9ybS5kKCkgIT0gLTEpIHx8IHRyYW5zZm9ybS5iKCkgfHwgdHJhbnNmb3JtLmMo
KSkKLSAgICAgICAgICAgICAgICAgICAgICAgIHJlY3RUb0NsaXBPdXQuaW5mbGF0ZSgtMS4wZik7
CisgICAgICAgICAgICAgICAgICAgICAgICBwaXhlbFNuYXBwZWRSZWN0VG9DbGlwT3V0LmluZmxh
dGUoLTEuMGYpOwogICAgICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgICAgIGlmICghcmVj
dFRvQ2xpcE91dC5pc0VtcHR5KCkpCi0gICAgICAgICAgICAgICAgICAgIGNvbnRleHQuY2xpcE91
dChyZWN0VG9DbGlwT3V0LnJlY3QoKSk7CisgICAgICAgICAgICAgICAgaWYgKCFwaXhlbFNuYXBw
ZWRSZWN0VG9DbGlwT3V0LmlzRW1wdHkoKSkKKyAgICAgICAgICAgICAgICAgICAgY29udGV4dC5j
bGlwT3V0KHBpeGVsU25hcHBlZFJlY3RUb0NsaXBPdXQucmVjdCgpKTsKKwogICAgICAgICAgICAg
ICAgIGNvbnRleHQuZmlsbFJlY3QocGl4ZWxTbmFwcGVkRmlsbFJlY3QucmVjdCgpLCBDb2xvcjo6
YmxhY2spOwogICAgICAgICAgICAgfQogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgLy8g
SW5zZXQgc2hhZG93LgorICAgICAgICAgICAgTGF5b3V0UmVjdCBob2xlUmVjdCA9IGJvcmRlci5y
ZWN0KCk7CisgICAgICAgICAgICBob2xlUmVjdC5pbmZsYXRlKC1zaGFkb3dTcHJlYWQpOworICAg
ICAgICAgICAgRmxvYXRSZWN0IHBpeGVsU25hcHBlZEhvbGVSZWN0ID0gc25hcFJlY3RUb0Rldmlj
ZVBpeGVscyhob2xlUmVjdCwgZGV2aWNlU2NhbGVGYWN0b3IpOwogICAgICAgICAgICAgRmxvYXRS
b3VuZGVkUmVjdCBwaXhlbFNuYXBwZWRCb3JkZXJSZWN0ID0gYm9yZGVyLnBpeGVsU25hcHBlZFJv
dW5kZWRSZWN0Rm9yUGFpbnRpbmcoZGV2aWNlU2NhbGVGYWN0b3IpOwotICAgICAgICAgICAgRmxv
YXRSZWN0IHBpeGVsU25hcHBlZEhvbGVSZWN0ID0gcGl4ZWxTbmFwcGVkQm9yZGVyUmVjdC5yZWN0
KCk7Ci0gICAgICAgICAgICBwaXhlbFNuYXBwZWRIb2xlUmVjdC5pbmZsYXRlKC1zaGFkb3dTcHJl
YWQpOwogCiAgICAgICAgICAgICBpZiAocGl4ZWxTbmFwcGVkSG9sZVJlY3QuaXNFbXB0eSgpKSB7
CiAgICAgICAgICAgICAgICAgaWYgKGhhc0JvcmRlclJhZGl1cykKQEAgLTI0NDcsMjQgKzI0NTQs
MjkgQEAgdm9pZCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6cGFpbnRCb3hTaGFkb3coY29uc3QgUGFp
bnRJbmZvJiBpbmZvLCBjb25zdCBMYXlvdXRSZWMKIAogICAgICAgICAgICAgaWYgKCFpbmNsdWRl
TG9naWNhbExlZnRFZGdlKSB7CiAgICAgICAgICAgICAgICAgaWYgKGlzSG9yaXpvbnRhbCkgewot
ICAgICAgICAgICAgICAgICAgICBwaXhlbFNuYXBwZWRIb2xlUmVjdC5tb3ZlKC1zdGQ6Om1heChz
aGFkb3dPZmZzZXQud2lkdGgoKSwgMCkgLSBzaGFkb3dQYWludGluZ0V4dGVudCwgMCk7Ci0gICAg
ICAgICAgICAgICAgICAgIHBpeGVsU25hcHBlZEhvbGVSZWN0LnNldFdpZHRoKHBpeGVsU25hcHBl
ZEhvbGVSZWN0LndpZHRoKCkgKyBzdGQ6Om1heChzaGFkb3dPZmZzZXQud2lkdGgoKSwgMCkgKyBz
aGFkb3dQYWludGluZ0V4dGVudCk7CisgICAgICAgICAgICAgICAgICAgIGhvbGVSZWN0Lm1vdmUo
LXN0ZDo6bWF4PExheW91dFVuaXQ+KHNoYWRvd09mZnNldC53aWR0aCgpLCAwKSAtIHNoYWRvd1Bh
aW50aW5nRXh0ZW50LCAwKTsKKyAgICAgICAgICAgICAgICAgICAgaG9sZVJlY3Quc2V0V2lkdGgo
aG9sZVJlY3Qud2lkdGgoKSArIHN0ZDo6bWF4PExheW91dFVuaXQ+KHNoYWRvd09mZnNldC53aWR0
aCgpLCAwKSArIHNoYWRvd1BhaW50aW5nRXh0ZW50KTsKICAgICAgICAgICAgICAgICB9IGVsc2Ug
ewotICAgICAgICAgICAgICAgICAgICBwaXhlbFNuYXBwZWRIb2xlUmVjdC5tb3ZlKDAsIC1zdGQ6
Om1heChzaGFkb3dPZmZzZXQuaGVpZ2h0KCksIDApIC0gc2hhZG93UGFpbnRpbmdFeHRlbnQpOwot
ICAgICAgICAgICAgICAgICAgICBwaXhlbFNuYXBwZWRIb2xlUmVjdC5zZXRIZWlnaHQocGl4ZWxT
bmFwcGVkSG9sZVJlY3QuaGVpZ2h0KCkgKyBzdGQ6Om1heChzaGFkb3dPZmZzZXQuaGVpZ2h0KCks
IDApICsgc2hhZG93UGFpbnRpbmdFeHRlbnQpOworICAgICAgICAgICAgICAgICAgICBob2xlUmVj
dC5tb3ZlKDAsIC1zdGQ6Om1heDxMYXlvdXRVbml0PihzaGFkb3dPZmZzZXQuaGVpZ2h0KCksIDAp
IC0gc2hhZG93UGFpbnRpbmdFeHRlbnQpOworICAgICAgICAgICAgICAgICAgICBob2xlUmVjdC5z
ZXRIZWlnaHQoaG9sZVJlY3QuaGVpZ2h0KCkgKyBzdGQ6Om1heDxMYXlvdXRVbml0PihzaGFkb3dP
ZmZzZXQuaGVpZ2h0KCksIDApICsgc2hhZG93UGFpbnRpbmdFeHRlbnQpOwogICAgICAgICAgICAg
ICAgIH0KICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAogICAgICAgICAgICAgaWYgKCFpbmNs
dWRlTG9naWNhbFJpZ2h0RWRnZSkgewogICAgICAgICAgICAgICAgIGlmIChpc0hvcml6b250YWwp
Ci0gICAgICAgICAgICAgICAgICAgIHBpeGVsU25hcHBlZEhvbGVSZWN0LnNldFdpZHRoKHBpeGVs
U25hcHBlZEhvbGVSZWN0LndpZHRoKCkgLSBzdGQ6Om1pbihzaGFkb3dPZmZzZXQud2lkdGgoKSwg
MCkgKyBzaGFkb3dQYWludGluZ0V4dGVudCk7CisgICAgICAgICAgICAgICAgICAgIGhvbGVSZWN0
LnNldFdpZHRoKGhvbGVSZWN0LndpZHRoKCkgLSBzdGQ6Om1pbjxMYXlvdXRVbml0PihzaGFkb3dP
ZmZzZXQud2lkdGgoKSwgMCkgKyBzaGFkb3dQYWludGluZ0V4dGVudCk7CiAgICAgICAgICAgICAg
ICAgZWxzZQotICAgICAgICAgICAgICAgICAgICBwaXhlbFNuYXBwZWRIb2xlUmVjdC5zZXRIZWln
aHQocGl4ZWxTbmFwcGVkSG9sZVJlY3QuaGVpZ2h0KCkgLSBzdGQ6Om1pbihzaGFkb3dPZmZzZXQu
aGVpZ2h0KCksIDApICsgc2hhZG93UGFpbnRpbmdFeHRlbnQpOworICAgICAgICAgICAgICAgICAg
ICBob2xlUmVjdC5zZXRIZWlnaHQoaG9sZVJlY3QuaGVpZ2h0KCkgLSBzdGQ6Om1pbjxMYXlvdXRV
bml0PihzaGFkb3dPZmZzZXQuaGVpZ2h0KCksIDApICsgc2hhZG93UGFpbnRpbmdFeHRlbnQpOwog
ICAgICAgICAgICAgfQogCisgICAgICAgICAgICBpZiAoIWluY2x1ZGVMb2dpY2FsTGVmdEVkZ2Ug
fHwgIWluY2x1ZGVMb2dpY2FsUmlnaHRFZGdlKQorICAgICAgICAgICAgICAgIHBpeGVsU25hcHBl
ZEhvbGVSZWN0ID0gc25hcFJlY3RUb0RldmljZVBpeGVscyhob2xlUmVjdCwgZGV2aWNlU2NhbGVG
YWN0b3IpOworCiAgICAgICAgICAgICBDb2xvciBmaWxsQ29sb3Ioc2hhZG93Q29sb3IucmVkKCks
IHNoYWRvd0NvbG9yLmdyZWVuKCksIHNoYWRvd0NvbG9yLmJsdWUoKSwgMjU1KTsKIAotICAgICAg
ICAgICAgRmxvYXRSZWN0IHBpeGVsU25hcHBlZE91dGVyUmVjdCA9IHNuYXBSZWN0VG9EZXZpY2VQ
aXhlbHMoYXJlYUNhc3RpbmdTaGFkb3dJbkhvbGUoTGF5b3V0UmVjdChwaXhlbFNuYXBwZWRCb3Jk
ZXJSZWN0LnJlY3QoKSksIHNoYWRvd1BhaW50aW5nRXh0ZW50LCBzaGFkb3dTcHJlYWQsIHNoYWRv
d09mZnNldCksIGRldmljZVNjYWxlRmFjdG9yKTsKLSAgICAgICAgICAgIEZsb2F0Um91bmRlZFJl
Y3QgcGl4ZWxTbmFwcGVkUm91bmRlZEhvbGUgPSBGbG9hdFJvdW5kZWRSZWN0KHBpeGVsU25hcHBl
ZEhvbGVSZWN0LCBwaXhlbFNuYXBwZWRCb3JkZXJSZWN0LnJhZGlpKCkpOworICAgICAgICAgICAg
RmxvYXRSZWN0IHBpeGVsU25hcHBlZE91dGVyUmVjdCA9IHNuYXBSZWN0VG9EZXZpY2VQaXhlbHMo
YXJlYUNhc3RpbmdTaGFkb3dJbkhvbGUoaG9sZVJlY3QsIHNoYWRvd1BhaW50aW5nRXh0ZW50LCBz
aGFkb3dTcHJlYWQsIHNoYWRvd09mZnNldCksIGRldmljZVNjYWxlRmFjdG9yKTsKKyAgICAgICAg
ICAgIFJvdW5kZWRSZWN0IHJvdW5kZWRIb2xlUmVjdChob2xlUmVjdCwgYm9yZGVyLnJhZGlpKCkp
OworICAgICAgICAgICAgRmxvYXRSb3VuZGVkUmVjdCBwaXhlbFNuYXBwZWRSb3VuZGVkSG9sZSA9
IHJvdW5kZWRIb2xlUmVjdC5waXhlbFNuYXBwZWRSb3VuZGVkUmVjdEZvclBhaW50aW5nKGRldmlj
ZVNjYWxlRmFjdG9yKTsKIAogICAgICAgICAgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBz
dGF0ZVNhdmVyKGNvbnRleHQpOwogICAgICAgICAgICAgaWYgKGhhc0JvcmRlclJhZGl1cykgewpA
QCAtMjQ3Myw3ICsyNDg1LDcgQEAgdm9pZCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6cGFpbnRCb3hT
aGFkb3coY29uc3QgUGFpbnRJbmZvJiBpbmZvLCBjb25zdCBMYXlvdXRSZWMKICAgICAgICAgICAg
IH0gZWxzZQogICAgICAgICAgICAgICAgIGNvbnRleHQuY2xpcChwaXhlbFNuYXBwZWRCb3JkZXJS
ZWN0LnJlY3QoKSk7CiAKLSAgICAgICAgICAgIEludFNpemUgZXh0cmFPZmZzZXQoMiAqIHJvdW5k
VG9JbnQocGFpbnRSZWN0LndpZHRoKCkpICsgc3RkOjptYXgoMCwgc2hhZG93T2Zmc2V0LndpZHRo
KCkpICsgc2hhZG93UGFpbnRpbmdFeHRlbnQgLSAyICogc2hhZG93U3ByZWFkICsgMSwgMCk7Cisg
ICAgICAgICAgICBJbnRTaXplIGV4dHJhT2Zmc2V0KDIgKiByb3VuZFRvSW50KHBhaW50UmVjdC53
aWR0aCgpKSArIHN0ZDo6bWF4PExheW91dFVuaXQ+KDAsIHNoYWRvd09mZnNldC53aWR0aCgpKSAr
IHNoYWRvd1BhaW50aW5nRXh0ZW50IC0gMiAqIHNoYWRvd1NwcmVhZCArIDEsIDApOwogICAgICAg
ICAgICAgY29udGV4dC50cmFuc2xhdGUoZXh0cmFPZmZzZXQpOwogICAgICAgICAgICAgc2hhZG93
T2Zmc2V0IC09IGV4dHJhT2Zmc2V0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyVGFibGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRh
YmxlLmNwcAppbmRleCBlOTFhMTMzNzE5OTEyZDE4ZmE1NWUzNmQ4MzU1ODg1N2MyZDE4YjM1Li4y
YjE2Mjk5Yjc5Y2I1NDE4MjVmNGNiNmMwNzc4ZDM4MDYwNjA3OTBhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJUYWJsZS5jcHAKQEAgLTc3MCw5ICs3NzAsOSBAQCB2b2lkIFJlbmRl
clRhYmxlOjpwYWludEJveERlY29yYXRpb25zKFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBM
YXlvdXRQb2ludCYgcAogICAgIAogICAgIEJhY2tncm91bmRCbGVlZEF2b2lkYW5jZSBibGVlZEF2
b2lkYW5jZSA9IGRldGVybWluZUJhY2tncm91bmRCbGVlZEF2b2lkYW5jZShwYWludEluZm8uY29u
dGV4dCgpKTsKICAgICBpZiAoIWJveFNoYWRvd1Nob3VsZEJlQXBwbGllZFRvQmFja2dyb3VuZChy
ZWN0LmxvY2F0aW9uKCksIGJsZWVkQXZvaWRhbmNlKSkKLSAgICAgICAgcGFpbnRCb3hTaGFkb3co
cGFpbnRJbmZvLCByZWN0LCBzdHlsZSgpLCBOb3JtYWwpOworICAgICAgICBwYWludEJveFNoYWRv
dyhwYWludEluZm8sIHJlY3QsIHN0eWxlKCksIFNoYWRvd1N0eWxlOjpOb3JtYWwpOwogICAgIHBh
aW50QmFja2dyb3VuZChwYWludEluZm8sIHJlY3QsIGJsZWVkQXZvaWRhbmNlKTsKLSAgICBwYWlu
dEJveFNoYWRvdyhwYWludEluZm8sIHJlY3QsIHN0eWxlKCksIEluc2V0KTsKKyAgICBwYWludEJv
eFNoYWRvdyhwYWludEluZm8sIHJlY3QsIHN0eWxlKCksIFNoYWRvd1N0eWxlOjpJbnNldCk7CiAK
ICAgICBpZiAoc3R5bGUoKS5oYXNWaXNpYmxlQm9yZGVyRGVjb3JhdGlvbigpICYmICFjb2xsYXBz
ZUJvcmRlcnMoKSkKICAgICAgICAgcGFpbnRCb3JkZXIocGFpbnRJbmZvLCByZWN0LCBzdHlsZSgp
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZUNlbGwu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlQ2VsbC5jcHAKaW5kZXgg
NTFhMTEwM2ZlMjJiYmU1ODdlNDhhYWQ0OWJmZDUwOTZmODY3M2FjOS4uYzczOTA4Mjc4Njc3ZTYy
OTQ2Zjg2NDFkZjk4NmU4NDU5Y2Y0M2ZmMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlclRhYmxlQ2VsbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclRhYmxlQ2VsbC5jcHAKQEAgLTEzMTgsMTIgKzEzMTgsMTIgQEAgdm9pZCBSZW5kZXJU
YWJsZUNlbGw6OnBhaW50Qm94RGVjb3JhdGlvbnMoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0
IExheW91dFBvaW4KICAgICBMYXlvdXRSZWN0IHBhaW50UmVjdCA9IExheW91dFJlY3QocGFpbnRP
ZmZzZXQsIGZyYW1lUmVjdCgpLnNpemUoKSk7CiAgICAgYWRqdXN0Qm9yZGVyQm94UmVjdEZvclBh
aW50aW5nKHBhaW50UmVjdCk7CiAKLSAgICBwYWludEJveFNoYWRvdyhwYWludEluZm8sIHBhaW50
UmVjdCwgc3R5bGUoKSwgTm9ybWFsKTsKKyAgICBwYWludEJveFNoYWRvdyhwYWludEluZm8sIHBh
aW50UmVjdCwgc3R5bGUoKSwgU2hhZG93U3R5bGU6Ok5vcm1hbCk7CiAgICAgCiAgICAgLy8gUGFp
bnQgb3VyIGNlbGwgYmFja2dyb3VuZC4KICAgICBwYWludEJhY2tncm91bmRzQmVoaW5kQ2VsbChw
YWludEluZm8sIHBhaW50T2Zmc2V0LCB0aGlzKTsKIAotICAgIHBhaW50Qm94U2hhZG93KHBhaW50
SW5mbywgcGFpbnRSZWN0LCBzdHlsZSgpLCBJbnNldCk7CisgICAgcGFpbnRCb3hTaGFkb3cocGFp
bnRJbmZvLCBwYWludFJlY3QsIHN0eWxlKCksIFNoYWRvd1N0eWxlOjpJbnNldCk7CiAKICAgICBp
ZiAoIXN0eWxlKCkuaGFzQm9yZGVyKCkgfHwgdGFibGUtPmNvbGxhcHNlQm9yZGVycygpKQogICAg
ICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUv
UmVuZGVyU3R5bGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0
eWxlLmNwcAppbmRleCBlZWViYjU4NzQ4MzAyNmZjMTRmM2NkNWI5MzA0NzgwMzA1YmY0NmQwLi41
ZDM4NzI2N2Q3MTZhZGJkMmViYWI2ZmM1YWM1YWFkZDJjYzQ5ODE3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5jcHAKQEAgLTE0MDgsNyArMTQwOCw3
IEBAIHZvaWQgUmVuZGVyU3R5bGU6OnNldFBhZ2VTY2FsZVRyYW5zZm9ybShmbG9hdCBzY2FsZSkK
IAogdm9pZCBSZW5kZXJTdHlsZTo6c2V0VGV4dFNoYWRvdyhzdGQ6OnVuaXF1ZV9wdHI8U2hhZG93
RGF0YT4gc2hhZG93RGF0YSwgYm9vbCBhZGQpCiB7Ci0gICAgQVNTRVJUKCFzaGFkb3dEYXRhIHx8
ICghc2hhZG93RGF0YS0+c3ByZWFkKCkgJiYgc2hhZG93RGF0YS0+c3R5bGUoKSA9PSBOb3JtYWwp
KTsKKyAgICBBU1NFUlQoIXNoYWRvd0RhdGEgfHwgKCFzaGFkb3dEYXRhLT5zcHJlYWQoKSAmJiBz
aGFkb3dEYXRhLT5zdHlsZSgpID09IFNoYWRvd1N0eWxlOjpOb3JtYWwpKTsKIAogICAgIGF1dG8m
IHJhcmVEYXRhID0gbV9yYXJlSW5oZXJpdGVkRGF0YS5hY2Nlc3MoKTsKICAgICBpZiAoIWFkZCkg
ewpAQCAtMTg4MiwxMCArMTg4MiwxMCBAQCB2b2lkIFJlbmRlclN0eWxlOjpnZXRTaGFkb3dFeHRl
bnQoY29uc3QgU2hhZG93RGF0YSogc2hhZG93LCBMYXlvdXRVbml0JiB0b3AsIExheQogICAgIGxl
ZnQgPSAwOwogCiAgICAgZm9yICggOyBzaGFkb3c7IHNoYWRvdyA9IHNoYWRvdy0+bmV4dCgpKSB7
Ci0gICAgICAgIGlmIChzaGFkb3ctPnN0eWxlKCkgPT0gSW5zZXQpCisgICAgICAgIGlmIChzaGFk
b3ctPnN0eWxlKCkgPT0gU2hhZG93U3R5bGU6Okluc2V0KQogICAgICAgICAgICAgY29udGludWU7
CiAKLSAgICAgICAgaW50IGV4dGVudEFuZFNwcmVhZCA9IHNoYWRvdy0+cGFpbnRpbmdFeHRlbnQo
KSArIHNoYWRvdy0+c3ByZWFkKCk7CisgICAgICAgIGF1dG8gZXh0ZW50QW5kU3ByZWFkID0gc2hh
ZG93LT5wYWludGluZ0V4dGVudCgpICsgc2hhZG93LT5zcHJlYWQoKTsKICAgICAgICAgdG9wID0g
c3RkOjptaW48TGF5b3V0VW5pdD4odG9wLCBzaGFkb3ctPnkoKSAtIGV4dGVudEFuZFNwcmVhZCk7
CiAgICAgICAgIHJpZ2h0ID0gc3RkOjptYXg8TGF5b3V0VW5pdD4ocmlnaHQsIHNoYWRvdy0+eCgp
ICsgZXh0ZW50QW5kU3ByZWFkKTsKICAgICAgICAgYm90dG9tID0gc3RkOjptYXg8TGF5b3V0VW5p
dD4oYm90dG9tLCBzaGFkb3ctPnkoKSArIGV4dGVudEFuZFNwcmVhZCk7CkBAIC0xOTAxLDEwICsx
OTAxLDEwIEBAIExheW91dEJveEV4dGVudCBSZW5kZXJTdHlsZTo6Z2V0U2hhZG93SW5zZXRFeHRl
bnQoY29uc3QgU2hhZG93RGF0YSogc2hhZG93KSBjb25zCiAgICAgTGF5b3V0VW5pdCBsZWZ0Owog
CiAgICAgZm9yICggOyBzaGFkb3c7IHNoYWRvdyA9IHNoYWRvdy0+bmV4dCgpKSB7Ci0gICAgICAg
IGlmIChzaGFkb3ctPnN0eWxlKCkgPT0gTm9ybWFsKQorICAgICAgICBpZiAoc2hhZG93LT5zdHls
ZSgpID09IFNoYWRvd1N0eWxlOjpOb3JtYWwpCiAgICAgICAgICAgICBjb250aW51ZTsKIAotICAg
ICAgICBpbnQgZXh0ZW50QW5kU3ByZWFkID0gc2hhZG93LT5wYWludGluZ0V4dGVudCgpICsgc2hh
ZG93LT5zcHJlYWQoKTsKKyAgICAgICAgYXV0byBleHRlbnRBbmRTcHJlYWQgPSBzaGFkb3ctPnBh
aW50aW5nRXh0ZW50KCkgKyBzaGFkb3ctPnNwcmVhZCgpOwogICAgICAgICB0b3AgPSBzdGQ6Om1h
eDxMYXlvdXRVbml0Pih0b3AsIHNoYWRvdy0+eSgpICsgZXh0ZW50QW5kU3ByZWFkKTsKICAgICAg
ICAgcmlnaHQgPSBzdGQ6Om1pbjxMYXlvdXRVbml0PihyaWdodCwgc2hhZG93LT54KCkgLSBleHRl
bnRBbmRTcHJlYWQpOwogICAgICAgICBib3R0b20gPSBzdGQ6Om1pbjxMYXlvdXRVbml0Pihib3R0
b20sIHNoYWRvdy0+eSgpIC0gZXh0ZW50QW5kU3ByZWFkKTsKQEAgLTE5MjAsMTAgKzE5MjAsMTAg
QEAgdm9pZCBSZW5kZXJTdHlsZTo6Z2V0U2hhZG93SG9yaXpvbnRhbEV4dGVudChjb25zdCBTaGFk
b3dEYXRhKiBzaGFkb3csIExheW91dFVuaXQKICAgICByaWdodCA9IDA7CiAKICAgICBmb3IgKCA7
IHNoYWRvdzsgc2hhZG93ID0gc2hhZG93LT5uZXh0KCkpIHsKLSAgICAgICAgaWYgKHNoYWRvdy0+
c3R5bGUoKSA9PSBJbnNldCkKKyAgICAgICAgaWYgKHNoYWRvdy0+c3R5bGUoKSA9PSBTaGFkb3dT
dHlsZTo6SW5zZXQpCiAgICAgICAgICAgICBjb250aW51ZTsKIAotICAgICAgICBpbnQgZXh0ZW50
QW5kU3ByZWFkID0gc2hhZG93LT5wYWludGluZ0V4dGVudCgpICsgc2hhZG93LT5zcHJlYWQoKTsK
KyAgICAgICAgYXV0byBleHRlbnRBbmRTcHJlYWQgPSBzaGFkb3ctPnBhaW50aW5nRXh0ZW50KCkg
KyBzaGFkb3ctPnNwcmVhZCgpOwogICAgICAgICBsZWZ0ID0gc3RkOjptaW48TGF5b3V0VW5pdD4o
bGVmdCwgc2hhZG93LT54KCkgLSBleHRlbnRBbmRTcHJlYWQpOwogICAgICAgICByaWdodCA9IHN0
ZDo6bWF4PExheW91dFVuaXQ+KHJpZ2h0LCBzaGFkb3ctPngoKSArIGV4dGVudEFuZFNwcmVhZCk7
CiAgICAgfQpAQCAtMTkzNSwxMCArMTkzNSwxMCBAQCB2b2lkIFJlbmRlclN0eWxlOjpnZXRTaGFk
b3dWZXJ0aWNhbEV4dGVudChjb25zdCBTaGFkb3dEYXRhKiBzaGFkb3csIExheW91dFVuaXQgJgog
ICAgIGJvdHRvbSA9IDA7CiAKICAgICBmb3IgKCA7IHNoYWRvdzsgc2hhZG93ID0gc2hhZG93LT5u
ZXh0KCkpIHsKLSAgICAgICAgaWYgKHNoYWRvdy0+c3R5bGUoKSA9PSBJbnNldCkKKyAgICAgICAg
aWYgKHNoYWRvdy0+c3R5bGUoKSA9PSBTaGFkb3dTdHlsZTo6SW5zZXQpCiAgICAgICAgICAgICBj
b250aW51ZTsKIAotICAgICAgICBpbnQgZXh0ZW50QW5kU3ByZWFkID0gc2hhZG93LT5wYWludGlu
Z0V4dGVudCgpICsgc2hhZG93LT5zcHJlYWQoKTsKKyAgICAgICAgYXV0byBleHRlbnRBbmRTcHJl
YWQgPSBzaGFkb3ctPnBhaW50aW5nRXh0ZW50KCkgKyBzaGFkb3ctPnNwcmVhZCgpOwogICAgICAg
ICB0b3AgPSBzdGQ6Om1pbjxMYXlvdXRVbml0Pih0b3AsIHNoYWRvdy0+eSgpIC0gZXh0ZW50QW5k
U3ByZWFkKTsKICAgICAgICAgYm90dG9tID0gc3RkOjptYXg8TGF5b3V0VW5pdD4oYm90dG9tLCBz
aGFkb3ctPnkoKSArIGV4dGVudEFuZFNwcmVhZCk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1NoYWRvd0RhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N0eWxlL1NoYWRvd0RhdGEuY3BwCmluZGV4IDNiNmRlZmM5YzI0Zjg4OTQyYmZm
MDAyOTAwZjg3OGUyNWY2MzAwNTguLjdiZjQzOTZkNzdkMmMwYTcxYzI5MTQzNGE2NjgxMTM2ZDY3
YjY5M2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TaGFkb3dE
YXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU2hhZG93RGF0YS5j
cHAKQEAgLTI5LDggKzI5LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBTaGFkb3dEYXRhOjpT
aGFkb3dEYXRhKGNvbnN0IFNoYWRvd0RhdGEmIG8pCiAgICAgOiBtX2xvY2F0aW9uKG8ubV9sb2Nh
dGlvbikKLSAgICAsIG1fcmFkaXVzKG8ubV9yYWRpdXMpCiAgICAgLCBtX3NwcmVhZChvLm1fc3By
ZWFkKQorICAgICwgbV9yYWRpdXMoby5tX3JhZGl1cykKICAgICAsIG1fY29sb3Ioby5tX2NvbG9y
KQogICAgICwgbV9zdHlsZShvLm1fc3R5bGUpCiAgICAgLCBtX2lzV2Via2l0Qm94U2hhZG93KG8u
bV9pc1dlYmtpdEJveFNoYWRvdykKQEAgLTU4LDExICs1OCwxMSBAQCBib29sIFNoYWRvd0RhdGE6
Om9wZXJhdG9yPT0oY29uc3QgU2hhZG93RGF0YSYgbykgY29uc3QKICAgICAgICAgJiYgbV9pc1dl
YmtpdEJveFNoYWRvdyA9PSBvLm1faXNXZWJraXRCb3hTaGFkb3c7CiB9CiAKLXN0YXRpYyBpbmxp
bmUgdm9pZCBjYWxjdWxhdGVTaGFkb3dFeHRlbnQoY29uc3QgU2hhZG93RGF0YSogc2hhZG93LCBp
bnQgYWRkaXRpb25hbE91dGxpbmVTaXplLCBpbnQmIHNoYWRvd0xlZnQsIGludCYgc2hhZG93Umln
aHQsIGludCYgc2hhZG93VG9wLCBpbnQmIHNoYWRvd0JvdHRvbSkKK3N0YXRpYyBpbmxpbmUgdm9p
ZCBjYWxjdWxhdGVTaGFkb3dFeHRlbnQoY29uc3QgU2hhZG93RGF0YSogc2hhZG93LCBMYXlvdXRV
bml0IGFkZGl0aW9uYWxPdXRsaW5lU2l6ZSwgTGF5b3V0VW5pdCYgc2hhZG93TGVmdCwgTGF5b3V0
VW5pdCYgc2hhZG93UmlnaHQsIExheW91dFVuaXQmIHNoYWRvd1RvcCwgTGF5b3V0VW5pdCYgc2hh
ZG93Qm90dG9tKQogewogICAgIGRvIHsKLSAgICAgICAgaW50IGV4dGVudEFuZFNwcmVhZCA9IHNo
YWRvdy0+cGFpbnRpbmdFeHRlbnQoKSArIHNoYWRvdy0+c3ByZWFkKCkgKyBhZGRpdGlvbmFsT3V0
bGluZVNpemU7Ci0gICAgICAgIGlmIChzaGFkb3ctPnN0eWxlKCkgPT0gTm9ybWFsKSB7CisgICAg
ICAgIExheW91dFVuaXQgZXh0ZW50QW5kU3ByZWFkID0gc2hhZG93LT5wYWludGluZ0V4dGVudCgp
ICsgc2hhZG93LT5zcHJlYWQoKSArIGFkZGl0aW9uYWxPdXRsaW5lU2l6ZTsKKyAgICAgICAgaWYg
KHNoYWRvdy0+c3R5bGUoKSA9PSBTaGFkb3dTdHlsZTo6Tm9ybWFsKSB7CiAgICAgICAgICAgICBz
aGFkb3dMZWZ0ID0gc3RkOjptaW4oc2hhZG93LT54KCkgLSBleHRlbnRBbmRTcHJlYWQsIHNoYWRv
d0xlZnQpOwogICAgICAgICAgICAgc2hhZG93UmlnaHQgPSBzdGQ6Om1heChzaGFkb3ctPngoKSAr
IGV4dGVudEFuZFNwcmVhZCwgc2hhZG93UmlnaHQpOwogICAgICAgICAgICAgc2hhZG93VG9wID0g
c3RkOjptaW4oc2hhZG93LT55KCkgLSBleHRlbnRBbmRTcHJlYWQsIHNoYWRvd1RvcCk7CkBAIC03
NSwxMCArNzUsMTAgQEAgc3RhdGljIGlubGluZSB2b2lkIGNhbGN1bGF0ZVNoYWRvd0V4dGVudChj
b25zdCBTaGFkb3dEYXRhKiBzaGFkb3csIGludCBhZGRpdGlvbmEKIAogdm9pZCBTaGFkb3dEYXRh
OjphZGp1c3RSZWN0Rm9yU2hhZG93KExheW91dFJlY3QmIHJlY3QsIGludCBhZGRpdGlvbmFsT3V0
bGluZVNpemUpIGNvbnN0CiB7Ci0gICAgaW50IHNoYWRvd0xlZnQgPSAwOwotICAgIGludCBzaGFk
b3dSaWdodCA9IDA7Ci0gICAgaW50IHNoYWRvd1RvcCA9IDA7Ci0gICAgaW50IHNoYWRvd0JvdHRv
bSA9IDA7CisgICAgTGF5b3V0VW5pdCBzaGFkb3dMZWZ0OworICAgIExheW91dFVuaXQgc2hhZG93
UmlnaHQ7CisgICAgTGF5b3V0VW5pdCBzaGFkb3dUb3A7CisgICAgTGF5b3V0VW5pdCBzaGFkb3dC
b3R0b207CiAgICAgY2FsY3VsYXRlU2hhZG93RXh0ZW50KHRoaXMsIGFkZGl0aW9uYWxPdXRsaW5l
U2l6ZSwgc2hhZG93TGVmdCwgc2hhZG93UmlnaHQsIHNoYWRvd1RvcCwgc2hhZG93Qm90dG9tKTsK
IAogICAgIHJlY3QubW92ZShzaGFkb3dMZWZ0LCBzaGFkb3dUb3ApOwpAQCAtODgsMTAgKzg4LDEw
IEBAIHZvaWQgU2hhZG93RGF0YTo6YWRqdXN0UmVjdEZvclNoYWRvdyhMYXlvdXRSZWN0JiByZWN0
LCBpbnQgYWRkaXRpb25hbE91dGxpbmVTaXplCiAKIHZvaWQgU2hhZG93RGF0YTo6YWRqdXN0UmVj
dEZvclNoYWRvdyhGbG9hdFJlY3QmIHJlY3QsIGludCBhZGRpdGlvbmFsT3V0bGluZVNpemUpIGNv
bnN0CiB7Ci0gICAgaW50IHNoYWRvd0xlZnQgPSAwOwotICAgIGludCBzaGFkb3dSaWdodCA9IDA7
Ci0gICAgaW50IHNoYWRvd1RvcCA9IDA7Ci0gICAgaW50IHNoYWRvd0JvdHRvbSA9IDA7CisgICAg
TGF5b3V0VW5pdCBzaGFkb3dMZWZ0ID0gMDsKKyAgICBMYXlvdXRVbml0IHNoYWRvd1JpZ2h0ID0g
MDsKKyAgICBMYXlvdXRVbml0IHNoYWRvd1RvcCA9IDA7CisgICAgTGF5b3V0VW5pdCBzaGFkb3dC
b3R0b20gPSAwOwogICAgIGNhbGN1bGF0ZVNoYWRvd0V4dGVudCh0aGlzLCBhZGRpdGlvbmFsT3V0
bGluZVNpemUsIHNoYWRvd0xlZnQsIHNoYWRvd1JpZ2h0LCBzaGFkb3dUb3AsIHNoYWRvd0JvdHRv
bSk7CiAKICAgICByZWN0Lm1vdmUoc2hhZG93TGVmdCwgc2hhZG93VG9wKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TaGFkb3dEYXRhLmggYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3R5bGUvU2hhZG93RGF0YS5oCmluZGV4IDBlMGNkYjdkYzNmYzM3YTRm
YWRjMTFkMTMxMGZmMjE1ODQ4NzZkNDcuLjM1M2FmNGZkNDA3ZGI5NWJlYTllMzAxZDQ5ZWMzZmZk
YzBhYWYzMDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TaGFk
b3dEYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1NoYWRvd0RhdGEu
aApAQCAtMzAsMjUgKzMwLDE5IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotZW51bSBTaGFk
b3dTdHlsZSB7IE5vcm1hbCwgSW5zZXQgfTsKK2VudW0gY2xhc3MgU2hhZG93U3R5bGUgOiB1aW50
OF90IHsgTm9ybWFsLCBJbnNldCB9OwogCiAvLyBUaGlzIGNsYXNzIGhvbGRzIGluZm9ybWF0aW9u
IGFib3V0IHNoYWRvd3MgZm9yIHRoZSB0ZXh0LXNoYWRvdyBhbmQgYm94LXNoYWRvdyBwcm9wZXJ0
aWVzLgogCiBjbGFzcyBTaGFkb3dEYXRhIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsK
IHB1YmxpYzoKLSAgICBTaGFkb3dEYXRhKCkKLSAgICAgICAgOiBtX3JhZGl1cygwKQotICAgICAg
ICAsIG1fc3ByZWFkKDApCi0gICAgICAgICwgbV9zdHlsZShOb3JtYWwpCi0gICAgICAgICwgbV9p
c1dlYmtpdEJveFNoYWRvdyhmYWxzZSkKLSAgICB7Ci0gICAgfQorICAgIFNoYWRvd0RhdGEoKSA9
IGRlZmF1bHQ7CiAKLSAgICBTaGFkb3dEYXRhKGNvbnN0IEludFBvaW50JiBsb2NhdGlvbiwgaW50
IHJhZGl1cywgaW50IHNwcmVhZCwgU2hhZG93U3R5bGUgc3R5bGUsIGJvb2wgaXNXZWJraXRCb3hT
aGFkb3csIGNvbnN0IENvbG9yJiBjb2xvcikKKyAgICBTaGFkb3dEYXRhKGNvbnN0IExheW91dFBv
aW50JiBsb2NhdGlvbiwgaW50IHJhZGl1cywgTGF5b3V0VW5pdCBzcHJlYWQsIFNoYWRvd1N0eWxl
IHN0eWxlLCBib29sIGlzV2Via2l0Qm94U2hhZG93LCBjb25zdCBDb2xvciYgY29sb3IpCiAgICAg
ICAgIDogbV9sb2NhdGlvbihsb2NhdGlvbikKLSAgICAgICAgLCBtX3JhZGl1cyhyYWRpdXMpCiAg
ICAgICAgICwgbV9zcHJlYWQoc3ByZWFkKQorICAgICAgICAsIG1fcmFkaXVzKHJhZGl1cykKICAg
ICAgICAgLCBtX2NvbG9yKGNvbG9yKQogICAgICAgICAsIG1fc3R5bGUoc3R5bGUpCiAgICAgICAg
ICwgbV9pc1dlYmtpdEJveFNoYWRvdyhpc1dlYmtpdEJveFNoYWRvdykKQEAgLTY2LDE5ICs2MCwx
OSBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiAhKCp0aGlzID09IG8pOwogICAgIH0KICAgICAK
LSAgICBpbnQgeCgpIGNvbnN0IHsgcmV0dXJuIG1fbG9jYXRpb24ueCgpOyB9Ci0gICAgaW50IHko
KSBjb25zdCB7IHJldHVybiBtX2xvY2F0aW9uLnkoKTsgfQotICAgIEludFBvaW50IGxvY2F0aW9u
KCkgY29uc3QgeyByZXR1cm4gbV9sb2NhdGlvbjsgfQorICAgIExheW91dFVuaXQgeCgpIGNvbnN0
IHsgcmV0dXJuIG1fbG9jYXRpb24ueCgpOyB9CisgICAgTGF5b3V0VW5pdCB5KCkgY29uc3QgeyBy
ZXR1cm4gbV9sb2NhdGlvbi55KCk7IH0KKyAgICBMYXlvdXRQb2ludCBsb2NhdGlvbigpIGNvbnN0
IHsgcmV0dXJuIG1fbG9jYXRpb247IH0KICAgICBpbnQgcmFkaXVzKCkgY29uc3QgeyByZXR1cm4g
bV9yYWRpdXM7IH0KLSAgICBpbnQgcGFpbnRpbmdFeHRlbnQoKSBjb25zdAorICAgIExheW91dFVu
aXQgcGFpbnRpbmdFeHRlbnQoKSBjb25zdAogICAgIHsKICAgICAgICAgLy8gQmx1cnJpbmcgdXNl
cyBhIEdhdXNzaWFuIGZ1bmN0aW9uIHdob3NlIHN0ZC4gZGV2aWF0aW9uIGlzIG1fcmFkaXVzLzIs
IGFuZCB3aGljaCBpbiB0aGVvcnkKICAgICAgICAgLy8gZXh0ZW5kcyB0byBpbmZpbml0eS4gSW4g
OC1iaXQgY29udGV4dHMsIGhvd2V2ZXIsIHJvdW5kaW5nIGNhdXNlcyB0aGUgZWZmZWN0IHRvIGJl
Y29tZQogICAgICAgICAvLyB1bmRldGVjdGFibGUgYXQgYXJvdW5kIDEuNHggdGhlIHJhZGl1cy4K
ICAgICAgICAgY29uc3QgZmxvYXQgcmFkaXVzRXh0ZW50TXVsdGlwbGllciA9IDEuNDsKLSAgICAg
ICAgcmV0dXJuIGNlaWxmKG1fcmFkaXVzICogcmFkaXVzRXh0ZW50TXVsdGlwbGllcik7CisgICAg
ICAgIHJldHVybiBMYXlvdXRVbml0KGNlaWxmKG1fcmFkaXVzICogcmFkaXVzRXh0ZW50TXVsdGlw
bGllcikpOwogICAgIH0KLSAgICBpbnQgc3ByZWFkKCkgY29uc3QgeyByZXR1cm4gbV9zcHJlYWQ7
IH0KKyAgICBMYXlvdXRVbml0IHNwcmVhZCgpIGNvbnN0IHsgcmV0dXJuIG1fc3ByZWFkOyB9CiAg
ICAgU2hhZG93U3R5bGUgc3R5bGUoKSBjb25zdCB7IHJldHVybiBtX3N0eWxlOyB9CiAgICAgY29u
c3QgQ29sb3ImIGNvbG9yKCkgY29uc3QgeyByZXR1cm4gbV9jb2xvcjsgfQogICAgIGJvb2wgaXNX
ZWJraXRCb3hTaGFkb3coKSBjb25zdCB7IHJldHVybiBtX2lzV2Via2l0Qm94U2hhZG93OyB9CkBA
IC05MCwxMiArODQsMTIgQEAgcHVibGljOgogICAgIHZvaWQgYWRqdXN0UmVjdEZvclNoYWRvdyhG
bG9hdFJlY3QmLCBpbnQgYWRkaXRpb25hbE91dGxpbmVTaXplID0gMCkgY29uc3Q7CiAKIHByaXZh
dGU6Ci0gICAgSW50UG9pbnQgbV9sb2NhdGlvbjsKLSAgICBpbnQgbV9yYWRpdXM7IC8vIFRoaXMg
aXMgdGhlICJibHVyIHJhZGl1cyIsIG9yIHR3aWNlIHRoZSBzdGFuZGFyZCBkZXZpYXRpb24gb2Yg
dGhlIEdhdXNzaWFuIGJsdXIuCi0gICAgaW50IG1fc3ByZWFkOworICAgIExheW91dFBvaW50IG1f
bG9jYXRpb247CisgICAgTGF5b3V0VW5pdCBtX3NwcmVhZDsKKyAgICBpbnQgbV9yYWRpdXMgeyAw
IH07IC8vIFRoaXMgaXMgdGhlICJibHVyIHJhZGl1cyIsIG9yIHR3aWNlIHRoZSBzdGFuZGFyZCBk
ZXZpYXRpb24gb2YgdGhlIEdhdXNzaWFuIGJsdXIuCiAgICAgQ29sb3IgbV9jb2xvcjsKLSAgICBT
aGFkb3dTdHlsZSBtX3N0eWxlOwotICAgIGJvb2wgbV9pc1dlYmtpdEJveFNoYWRvdzsKKyAgICBT
aGFkb3dTdHlsZSBtX3N0eWxlIHsgU2hhZG93U3R5bGU6Ok5vcm1hbCB9OworICAgIGJvb2wgbV9p
c1dlYmtpdEJveFNoYWRvdyB7IGZhbHNlIH07CiAgICAgc3RkOjp1bmlxdWVfcHRyPFNoYWRvd0Rh
dGE+IG1fbmV4dDsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxl
QnVpbGRlckN1c3RvbS5oIGIvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVCdWlsZGVyQ3VzdG9t
LmgKaW5kZXggMjRlOTc1MTVhMTE1ZmFmZGY4NzNiZjBjODljZjRkNDkxNjVmZWM5ZS4uMjZkMjM0
MjkzZjI2YzBjZjQ1MzgxMmE0MWE5OGQyMzMwY2UxZWQxNiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvc3R5bGUvU3R5bGVCdWlsZGVyQ3VzdG9tLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3R5
bGUvU3R5bGVCdWlsZGVyQ3VzdG9tLmgKQEAgLTgwNCwxNyArODA0LDE3IEBAIGlubGluZSB2b2lk
IEJ1aWxkZXJDdXN0b206OmFwcGx5VGV4dE9yQm94U2hhZG93VmFsdWUoQnVpbGRlclN0YXRlJiBi
dWlsZGVyU3RhdGUsCiAgICAgZm9yIChhdXRvJiBpdGVtIDogZG93bmNhc3Q8Q1NTVmFsdWVMaXN0
Pih2YWx1ZSkpIHsKICAgICAgICAgYXV0byYgc2hhZG93VmFsdWUgPSBkb3duY2FzdDxDU1NTaGFk
b3dWYWx1ZT4oaXRlbS5nZXQoKSk7CiAgICAgICAgIGF1dG8gY29udmVyc2lvbkRhdGEgPSBidWls
ZGVyU3RhdGUuY3NzVG9MZW5ndGhDb252ZXJzaW9uRGF0YSgpOwotICAgICAgICBpbnQgeCA9IHNo
YWRvd1ZhbHVlLngtPmNvbXB1dGVMZW5ndGg8aW50Pihjb252ZXJzaW9uRGF0YSk7Ci0gICAgICAg
IGludCB5ID0gc2hhZG93VmFsdWUueS0+Y29tcHV0ZUxlbmd0aDxpbnQ+KGNvbnZlcnNpb25EYXRh
KTsKKyAgICAgICAgYXV0byB4ID0gc2hhZG93VmFsdWUueC0+Y29tcHV0ZUxlbmd0aDxMYXlvdXRV
bml0Pihjb252ZXJzaW9uRGF0YSk7CisgICAgICAgIGF1dG8geSA9IHNoYWRvd1ZhbHVlLnktPmNv
bXB1dGVMZW5ndGg8TGF5b3V0VW5pdD4oY29udmVyc2lvbkRhdGEpOwogICAgICAgICBpbnQgYmx1
ciA9IHNoYWRvd1ZhbHVlLmJsdXIgPyBzaGFkb3dWYWx1ZS5ibHVyLT5jb21wdXRlTGVuZ3RoPGlu
dD4oY29udmVyc2lvbkRhdGEpIDogMDsKLSAgICAgICAgaW50IHNwcmVhZCA9IHNoYWRvd1ZhbHVl
LnNwcmVhZCA/IHNoYWRvd1ZhbHVlLnNwcmVhZC0+Y29tcHV0ZUxlbmd0aDxpbnQ+KGNvbnZlcnNp
b25EYXRhKSA6IDA7Ci0gICAgICAgIFNoYWRvd1N0eWxlIHNoYWRvd1N0eWxlID0gc2hhZG93VmFs
dWUuc3R5bGUgJiYgc2hhZG93VmFsdWUuc3R5bGUtPnZhbHVlSUQoKSA9PSBDU1NWYWx1ZUluc2V0
ID8gSW5zZXQgOiBOb3JtYWw7CisgICAgICAgIGF1dG8gc3ByZWFkID0gc2hhZG93VmFsdWUuc3By
ZWFkID8gc2hhZG93VmFsdWUuc3ByZWFkLT5jb21wdXRlTGVuZ3RoPExheW91dFVuaXQ+KGNvbnZl
cnNpb25EYXRhKSA6IExheW91dFVuaXQoMCk7CisgICAgICAgIFNoYWRvd1N0eWxlIHNoYWRvd1N0
eWxlID0gc2hhZG93VmFsdWUuc3R5bGUgJiYgc2hhZG93VmFsdWUuc3R5bGUtPnZhbHVlSUQoKSA9
PSBDU1NWYWx1ZUluc2V0ID8gU2hhZG93U3R5bGU6Okluc2V0IDogU2hhZG93U3R5bGU6Ok5vcm1h
bDsKICAgICAgICAgQ29sb3IgY29sb3I7CiAgICAgICAgIGlmIChzaGFkb3dWYWx1ZS5jb2xvcikK
ICAgICAgICAgICAgIGNvbG9yID0gYnVpbGRlclN0YXRlLmNvbG9yRnJvbVByaW1pdGl2ZVZhbHVl
KCpzaGFkb3dWYWx1ZS5jb2xvcik7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIGNvbG9yID0g
YnVpbGRlclN0YXRlLnN0eWxlKCkuY29sb3IoKTsKLSAgICAgICAgYXV0byBzaGFkb3dEYXRhID0g
bWFrZVVuaXF1ZTxTaGFkb3dEYXRhPihJbnRQb2ludCh4LCB5KSwgYmx1ciwgc3ByZWFkLCBzaGFk
b3dTdHlsZSwgcHJvcGVydHkgPT0gQ1NTUHJvcGVydHlXZWJraXRCb3hTaGFkb3csIGNvbG9yLmlz
VmFsaWQoKSA/IGNvbG9yIDogQ29sb3I6OnRyYW5zcGFyZW50KTsKKyAgICAgICAgYXV0byBzaGFk
b3dEYXRhID0gbWFrZVVuaXF1ZTxTaGFkb3dEYXRhPihMYXlvdXRQb2ludCh4LCB5KSwgYmx1ciwg
c3ByZWFkLCBzaGFkb3dTdHlsZSwgcHJvcGVydHkgPT0gQ1NTUHJvcGVydHlXZWJraXRCb3hTaGFk
b3csIGNvbG9yLmlzVmFsaWQoKSA/IGNvbG9yIDogQ29sb3I6OnRyYW5zcGFyZW50KTsKICAgICAg
ICAgaWYgKHByb3BlcnR5ID09IENTU1Byb3BlcnR5VGV4dFNoYWRvdykKICAgICAgICAgICAgIGJ1
aWxkZXJTdGF0ZS5zdHlsZSgpLnNldFRleHRTaGFkb3coV1RGTW92ZShzaGFkb3dEYXRhKSwgIWlz
Rmlyc3RFbnRyeSk7IC8vIGFkZCB0byB0aGUgbGlzdCBpZiB0aGlzIGlzIG5vdCB0aGUgZmlyc3Qg
ZW50cnkKICAgICAgICAgZWxzZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIv
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IGM4ODgwMmU3ZGRkYzA3MWJhZGUwMGMyYzMzMDhm
YzY4NGM4MmY2YTQuLjU5MjRjMmMxMmM2YTUwMmRjOTBlNjk5YjE3MWFmNTRkNzc2ZGVhY2MgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwxMyBAQAorMjAxOS0xMS0wNSAgU2ltb24gRnJhc2VyICA8c2ltb24uZnJh
c2VyQGFwcGxlLmNvbT4KKworICAgICAgICBCb3gtc2hhZG93IHNwcmVhZCByYWRpdXMgZG9lcyBu
b3QgdHJhbnNpdGlvbiBvciBhbmltYXRlIGNvcnJlY3RseSB3aXRoIENTUyBUcmFuc2l0aW9ucyAm
IEFuaW1hdGlvbnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIwMjQ4OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgICogZmFzdC9ib3gtc2hhZG93L2hpZHBpLWJveC1zaGFkb3ctZXhwZWN0ZWQuaHRtbDogQWRk
ZWQuCisgICAgICAgICogZmFzdC9ib3gtc2hhZG93L2hpZHBpLWJveC1zaGFkb3cuaHRtbDogQWRk
ZWQuCisKIDIwMTktMTEtMDQgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAg
ICAgICBNZWRpYVJlY29yZGVyIHNob3VsZCBub3QgcHJldmVudCBlbnRlcmluZyB0aGUgYmFjay9m
b3J3YXJkIGNhY2hlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2JveC1zaGFkb3cvaGlk
cGktYm94LXNoYWRvdy1leHBlY3RlZC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9ib3gtc2hhZG93
L2hpZHBpLWJveC1zaGFkb3ctZXhwZWN0ZWQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43ZGUwNTllZTExMTk0
YjI2ZjI1NDk2Y2JjZGQ2YzYyYWUzZTYyNGY5Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvZmFzdC9ib3gtc2hhZG93L2hpZHBpLWJveC1zaGFkb3ctZXhwZWN0ZWQuaHRtbApAQCAtMCww
ICsxLDQxIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c3R5bGU+CisgICAg
LmNvbnRhaW5lciB7CisgICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKKyAgICAgICAgd2lkdGg6
IDMwcHg7CisgICAgICAgIGhlaWdodDogMzBweDsKKyAgICAgICAgbWFyZ2luOiAyMHB4OworICAg
ICAgICBib3JkZXI6IDFweCBzb2xpZCBzaWx2ZXI7CisgICAgfQorCisgICAgLmJveCB7CisgICAg
ICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKKyAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogZ3JheTsK
KyAgICB9CisKKyAgICAuc2hhZG93IHsKKyAgICAgICAgcG9zaXRpb246IGFic29sdXRlOworICAg
ICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBibHVlOworICAgIH0KKyAgICA8L3N0eWxlPgorPC9oZWFk
PgorPGJvZHk+CisgICAgPGRpdiBjbGFzcz0iY29udGFpbmVyIj4KKyAgICAgICAgPGRpdiBjbGFz
cz0ic2hhZG93IiBzdHlsZT0ibGVmdDogMDsgdG9wOiAwOyB3aWR0aDogMTJweDsgaGVpZ2h0OiAx
MnB4OyI+PC9kaXY+CisgICAgICAgIDxkaXYgY2xhc3M9ImJveCIgc3R5bGU9ImxlZnQ6IDFweDsg
dG9wOiAxcHg7IHdpZHRoOiAxMHB4OyBoZWlnaHQ6IDEwcHg7Ij48L2Rpdj4KKyAgICA8L2Rpdj4K
KworICAgIDxkaXYgY2xhc3M9ImNvbnRhaW5lciI+CisgICAgICAgIDxkaXYgY2xhc3M9InNoYWRv
dyIgc3R5bGU9ImxlZnQ6IDAuNXB4OyB0b3A6IDAuNXB4OyB3aWR0aDogMTFweDsgaGVpZ2h0OiAx
MXB4OyI+PC9kaXY+CisgICAgICAgIDxkaXYgY2xhc3M9ImJveCIgc3R5bGU9ImxlZnQ6IDFweDsg
dG9wOiAxcHg7IHdpZHRoOiAxMHB4OyBoZWlnaHQ6IDEwcHg7Ij48L2Rpdj4KKyAgICA8L2Rpdj4K
KworICAgIDxkaXYgY2xhc3M9ImNvbnRhaW5lciI+CisgICAgICAgIDxkaXYgY2xhc3M9InNoYWRv
dyIgc3R5bGU9ImxlZnQ6IDAuNXB4OyB0b3A6IDAuNXB4OyB3aWR0aDogMTEuNXB4OyBoZWlnaHQ6
IDExLjVweDsiPjwvZGl2PgorICAgICAgICA8ZGl2IGNsYXNzPSJib3giIHN0eWxlPSJsZWZ0OiAx
cHg7IHRvcDogMXB4OyB3aWR0aDogMTAuNXB4OyBoZWlnaHQ6IDEwLjVweDsiPjwvZGl2PgorICAg
IDwvZGl2PgorCis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0
L2JveC1zaGFkb3cvaGlkcGktYm94LXNoYWRvdy5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9ib3gt
c2hhZG93L2hpZHBpLWJveC1zaGFkb3cuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xZjZmOTM1NWE1ZTdlZjUx
ODIwNDlmZGM1ZWVlODdmYWE1NWYzMzNmCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
ZmFzdC9ib3gtc2hhZG93L2hpZHBpLWJveC1zaGFkb3cuaHRtbApAQCAtMCwwICsxLDMzIEBACis8
IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c3R5bGU+CisgICAgLmNvbnRhaW5lciB7
CisgICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKKyAgICAgICAgd2lkdGg6IDMwcHg7CisgICAg
ICAgIGhlaWdodDogMzBweDsKKyAgICAgICAgbWFyZ2luOiAyMHB4OworICAgICAgICBib3JkZXI6
IDFweCBzb2xpZCBzaWx2ZXI7CisgICAgfQorCisgICAgLmJveCB7CisgICAgICAgIHBvc2l0aW9u
OiBhYnNvbHV0ZTsKKyAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogZ3JheTsKKyAgICB9CisgICAg
PC9zdHlsZT4KKzwvaGVhZD4KKzxib2R5PgorICAgIDxkaXYgY2xhc3M9ImNvbnRhaW5lciI+Cisg
ICAgICAgIDxkaXYgY2xhc3M9ImJveCIgc3R5bGU9ImxlZnQ6IDFweDsgdG9wOiAxcHg7IHdpZHRo
OiAxMHB4OyBoZWlnaHQ6IDEwcHg7IGJveC1zaGFkb3c6IDAgMCAwIDFweCBibHVlOyI+PC9kaXY+
CisgICAgPC9kaXY+CisKKyAgICA8ZGl2IGNsYXNzPSJjb250YWluZXIiPgorICAgICAgICA8ZGl2
IGNsYXNzPSJib3giIHN0eWxlPSJsZWZ0OiAxcHg7IHRvcDogMXB4OyB3aWR0aDogMTBweDsgaGVp
Z2h0OiAxMHB4OyBib3gtc2hhZG93OiAwIDAgMCAwLjVweCBibHVlIj48L2Rpdj4KKyAgICA8L2Rp
dj4KKworICAgIDxkaXYgY2xhc3M9ImNvbnRhaW5lciI+CisgICAgICAgIDxkaXYgY2xhc3M9ImJv
eCIgc3R5bGU9ImxlZnQ6IDFweDsgdG9wOiAxcHg7IHdpZHRoOiAxMC41cHg7IGhlaWdodDogMTAu
NXB4OyBib3gtc2hhZG93OiAwIDAgMCAwLjVweCBibHVlIj48L2Rpdj4KKyAgICA8L2Rpdj4KKwor
PC9ib2R5PgorPC9odG1sPgo=
</data>
<flag name="review"
          id="398638"
          type_id="1"
          status="+"
          setter="zalan"
    />
          </attachment>
      

    </bug>

</bugzilla>