<?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>228814</bug_id>
          
          <creation_ts>2021-08-05 01:12:26 -0700</creation_ts>
          <short_desc>TextDecorationPainter should not depend on LegacyInlineTextBox</short_desc>
          <delta_ts>2021-08-19 09:09:05 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Layout and Rendering</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=228956</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Antti Koivisto">koivisto</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>bfulgham</cc>
    
    <cc>changseok</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>glenn</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>mmaxfield</cc>
    
    <cc>pdr</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>zalan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1782153</commentid>
    <comment_count>0</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2021-08-05 01:12:26 -0700</bug_when>
    <thetext>less legacy</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1782154</commentid>
    <comment_count>1</comment_count>
      <attachid>434971</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2021-08-05 01:17:10 -0700</bug_when>
    <thetext>Created attachment 434971
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1782158</commentid>
    <comment_count>2</comment_count>
      <attachid>434973</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2021-08-05 02:30:45 -0700</bug_when>
    <thetext>Created attachment 434973
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1785449</commentid>
    <comment_count>3</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-08-19 08:36:53 -0700</bug_when>
    <thetext>&lt;rdar://problem/82126731&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1785469</commentid>
    <comment_count>4</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-08-19 09:09:01 -0700</bug_when>
    <thetext>Committed r281241 (240678@main): &lt;https://commits.webkit.org/240678@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 434973.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>434971</attachid>
            <date>2021-08-05 01:17:10 -0700</date>
            <delta_ts>2021-08-05 02:30:45 -0700</delta_ts>
            <desc>patch</desc>
            <filename>textdecoration-iterator.patch</filename>
            <type>text/plain</type>
            <size>31829</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBkM2M2NTk5MzUyOGQuLjExMzJjNzRmMzYwNSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBA
CisyMDIxLTA4LTA1ICBBbnR0aSBLb2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KKworICAgICAg
ICBUZXh0RGVjb3JhdGlvblBhaW50ZXIgc2hvdWxkIG5vdCBkZXBlbmQgb24gTGVnYWN5SW5saW5l
VGV4dEJveAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjI4ODE0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
Rml4IHRoZSBleHBlY3RlZCByZXN1bHRzIHRvIG5vdCBkZXBlbmQgb24gaW5saW5lIGN1bGxpbmcg
KHdoaWNoIHRoaXMgcGF0Y2ggaWdub3JlcykuCisKKyAgICAgICAgKiBmYXN0L3RleHQvdGV4dC11
bmRlcmxpbmUtZmlyc3QtbGluZS1kZWNvcmF0aW9uLWV4cGVjdGVkLmh0bWw6CisgICAgICAgICog
ZmFzdC90ZXh0L3RleHQtdW5kZXJsaW5lLXZlcnRpY2FsLWZpcnN0LWxpbmUtZGVjb3JhdGlvbi1l
eHBlY3RlZC5odG1sOgorCiAyMDIxLTA4LTAxICBGdWppaSBIaXJvbm9yaSAgPEhpcm9ub3JpLkZ1
amlpQHNvbnkuY29tPgogCiAgICAgICAgIFtXaW5DYWlyb10gVW5yZXZpZXdlZCB0ZXN0IGdhcmRl
bmluZwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC90ZXh0L3RleHQtdW5kZXJsaW5lLWZp
cnN0LWxpbmUtZGVjb3JhdGlvbi1leHBlY3RlZC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC90ZXh0
L3RleHQtdW5kZXJsaW5lLWZpcnN0LWxpbmUtZGVjb3JhdGlvbi1leHBlY3RlZC5odG1sCmluZGV4
IGI4Y2EzOTVhZTIxNS4uOWQxN2RmOGFhOWZhIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0
L3RleHQvdGV4dC11bmRlcmxpbmUtZmlyc3QtbGluZS1kZWNvcmF0aW9uLWV4cGVjdGVkLmh0bWwK
KysrIGIvTGF5b3V0VGVzdHMvZmFzdC90ZXh0L3RleHQtdW5kZXJsaW5lLWZpcnN0LWxpbmUtZGVj
b3JhdGlvbi1leHBlY3RlZC5odG1sCkBAIC04LDYgKzgsNiBAQAogPC9wPg0KIA0KIDxwIGNsYXNz
PSJkZWNvcmF0ZSIgc3R5bGU9ImZvbnQtc2l6ZToyNHB4OyBmbG9hdDpsZWZ0Oy13ZWJraXQtdGV4
dC11bmRlcmxpbmUtcG9zaXRpb246dW5kZXI7IGJvcmRlcjoxcHggZG90dGVkIG9yYW5nZSI+DQot
PHNwYW4gc3R5bGU9InRleHQtZGVjb3JhdGlvbjp1bmRlcmxpbmUiPlRoZSBmaXJzdCBsaW5lIDxz
cGFuIHN0eWxlPSJ2ZXJ0aWNhbC1hbGlnbjotMjBweCI+aGFzIGEgZGVjb3JhdGlvbiw8L3NwYW4+
IGJ1dCBub3QgPC9zcGFuPjxpbWcgc3R5bGU9InZlcnRpY2FsLWFsaWduOi0xMDBweDsgaGVpZ2h0
OjIwcHg7d2lkdGg6MjBweDtiYWNrZ3JvdW5kLWNvbG9yOmxpbWUiPjxzcGFuIHN0eWxlPSJ0ZXh0
LWRlY29yYXRpb246dW5kZXJsaW5lIj4gdW5kZXIgdGhlIGltYWdlLjwvc3Bhbj48YnI+DQorPHNw
YW4gc3R5bGU9InRleHQtZGVjb3JhdGlvbjp1bmRlcmxpbmUiPlRoZSBmaXJzdCBsaW5lIDxzcGFu
IHN0eWxlPSJ2ZXJ0aWNhbC1hbGlnbjotMjBweCI+aGFzIGEgZGVjb3JhdGlvbiw8L3NwYW4+IGJ1
dCBub3QgPC9zcGFuPjxpbWcgc3R5bGU9InZlcnRpY2FsLWFsaWduOi0xMDBweDsgaGVpZ2h0OjIw
cHg7d2lkdGg6MjBweDtiYWNrZ3JvdW5kLWNvbG9yOmxpbWUiPjxzcGFuIHN0eWxlPSJ0ZXh0LWRl
Y29yYXRpb246dW5kZXJsaW5lIj4gdW5kZXIgdGhlIGltYWdlLjxzcGFuIHN0eWxlPSJ2ZXJ0aWNh
bC1hbGlnbjotMjBweCI+Jlplcm9XaWR0aFNwYWNlOzwvc3Bhbj48L3NwYW4+PGJyPg0KIFRoZSBz
ZWNvbmQgbGluZSBzaG91bGQgbm90Lg0KIDwvcD4NCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9m
YXN0L3RleHQvdGV4dC11bmRlcmxpbmUtdmVydGljYWwtZmlyc3QtbGluZS1kZWNvcmF0aW9uLWV4
cGVjdGVkLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L3RleHQvdGV4dC11bmRlcmxpbmUtdmVydGlj
YWwtZmlyc3QtbGluZS1kZWNvcmF0aW9uLWV4cGVjdGVkLmh0bWwKaW5kZXggMDVlZWJlNDVjOTU1
Li5hOWJhYWI5ZGRhMzYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvdGV4dC90ZXh0LXVu
ZGVybGluZS12ZXJ0aWNhbC1maXJzdC1saW5lLWRlY29yYXRpb24tZXhwZWN0ZWQuaHRtbAorKysg
Yi9MYXlvdXRUZXN0cy9mYXN0L3RleHQvdGV4dC11bmRlcmxpbmUtdmVydGljYWwtZmlyc3QtbGlu
ZS1kZWNvcmF0aW9uLWV4cGVjdGVkLmh0bWwKQEAgLTgsMTEgKzgsMTEgQEAKIDwvcD4NCiANCiA8
cCBjbGFzcz0iZGVjb3JhdGUiIHN0eWxlPSItd2Via2l0LXdyaXRpbmctbW9kZTp2ZXJ0aWNhbC1s
cjsgbWFyZ2luLXJpZ2h0OjEwcHg7IGZvbnQtc2l6ZToyNHB4OyBmbG9hdDpsZWZ0Oy13ZWJraXQt
dGV4dC11bmRlcmxpbmUtcG9zaXRpb246dW5kZXI7IGJvcmRlcjoxcHggZG90dGVkIG9yYW5nZSI+
DQotPHNwYW4gc3R5bGU9InRleHQtZGVjb3JhdGlvbjp1bmRlcmxpbmUiPlRoZSBmaXJzdCBsaW5l
IDxzcGFuIHN0eWxlPSJ2ZXJ0aWNhbC1hbGlnbjotMjBweCI+aGFzIGEgZGVjb3JhdGlvbiw8L3Nw
YW4+IGJ1dCBub3QgPC9zcGFuPjxpbWcgc3R5bGU9InZlcnRpY2FsLWFsaWduOi0xMDBweDsgaGVp
Z2h0OjIwcHg7d2lkdGg6MjBweDtiYWNrZ3JvdW5kLWNvbG9yOmxpbWUiPjxzcGFuIHN0eWxlPSJ0
ZXh0LWRlY29yYXRpb246dW5kZXJsaW5lIj4gdW5kZXIgdGhlIGltYWdlLjwvc3Bhbj48YnI+DQor
PHNwYW4gc3R5bGU9InRleHQtZGVjb3JhdGlvbjp1bmRlcmxpbmUiPlRoZSBmaXJzdCBsaW5lIDxz
cGFuIHN0eWxlPSJ2ZXJ0aWNhbC1hbGlnbjotMjBweCI+aGFzIGEgZGVjb3JhdGlvbiw8L3NwYW4+
IGJ1dCBub3QgPC9zcGFuPjxpbWcgc3R5bGU9InZlcnRpY2FsLWFsaWduOi0xMDBweDsgaGVpZ2h0
OjIwcHg7d2lkdGg6MjBweDtiYWNrZ3JvdW5kLWNvbG9yOmxpbWUiPjxzcGFuIHN0eWxlPSJ0ZXh0
LWRlY29yYXRpb246dW5kZXJsaW5lIj4gdW5kZXIgdGhlIGltYWdlLjxzcGFuIHN0eWxlPSJ2ZXJ0
aWNhbC1hbGlnbjotMjBweCI+Jlplcm9XaWR0aFNwYWNlOzwvc3Bhbj48L3NwYW4+PGJyPg0KIFRo
ZSBzZWNvbmQgbGluZSBzaG91bGQgbm90Lg0KIDwvcD4NCiANCiA8cCBjbGFzcz0iZGVjb3JhdGUi
IHN0eWxlPSItd2Via2l0LXdyaXRpbmctbW9kZTp2ZXJ0aWNhbC1ybDsgbWFyZ2luLXJpZ2h0OjEw
cHg7IGZvbnQtc2l6ZToyNHB4OyBmbG9hdDpsZWZ0Oy13ZWJraXQtdGV4dC11bmRlcmxpbmUtcG9z
aXRpb246dW5kZXI7IGJvcmRlcjoxcHggZG90dGVkIG9yYW5nZSI+DQotPHNwYW4gc3R5bGU9InRl
eHQtZGVjb3JhdGlvbjp1bmRlcmxpbmUiPlRoZSBmaXJzdCBsaW5lIDxzcGFuIHN0eWxlPSJ2ZXJ0
aWNhbC1hbGlnbjotMjBweCI+aGFzIGEgZGVjb3JhdGlvbiw8L3NwYW4+IGJ1dCBub3QgPC9zcGFu
PjxpbWcgc3R5bGU9InZlcnRpY2FsLWFsaWduOi0xMDBweDsgaGVpZ2h0OjIwcHg7d2lkdGg6MjBw
eDtiYWNrZ3JvdW5kLWNvbG9yOmxpbWUiPjxzcGFuIHN0eWxlPSJ0ZXh0LWRlY29yYXRpb246dW5k
ZXJsaW5lIj4gdW5kZXIgdGhlIGltYWdlLjwvc3Bhbj48YnI+DQorPHNwYW4gc3R5bGU9InRleHQt
ZGVjb3JhdGlvbjp1bmRlcmxpbmUiPlRoZSBmaXJzdCBsaW5lIDxzcGFuIHN0eWxlPSJ2ZXJ0aWNh
bC1hbGlnbjotMjBweCI+aGFzIGEgZGVjb3JhdGlvbiw8L3NwYW4+IGJ1dCBub3QgPC9zcGFuPjxp
bWcgc3R5bGU9InZlcnRpY2FsLWFsaWduOi0xMDBweDsgaGVpZ2h0OjIwcHg7d2lkdGg6MjBweDti
YWNrZ3JvdW5kLWNvbG9yOmxpbWUiPjxzcGFuIHN0eWxlPSJ0ZXh0LWRlY29yYXRpb246dW5kZXJs
aW5lIj4gdW5kZXIgdGhlIGltYWdlLjxzcGFuIHN0eWxlPSJ2ZXJ0aWNhbC1hbGlnbjotMjBweCI+
Jlplcm9XaWR0aFNwYWNlOzwvc3Bhbj48L3NwYW4+PGJyPg0KIFRoZSBzZWNvbmQgbGluZSBzaG91
bGQgbm90Lg0KIDwvcD4NCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9T
b3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzI5ZTc2NzQ4NmVlLi4yMzgzNzMwZTEyMDYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw1MiBAQAorMjAyMS0wOC0wNSAgQW50dGkgS29pdmlzdG8g
IDxhbnR0aUBhcHBsZS5jb20+CisKKyAgICAgICAgVGV4dERlY29yYXRpb25QYWludGVyIHNob3Vs
ZCBub3QgZGVwZW5kIG9uIExlZ2FjeUlubGluZVRleHRCb3gKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyODgxNAorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVzZSB0aGUgaW5saW5lIGl0ZXJhdG9yIGluc3Rl
YWQuCisKKyAgICAgICAgKiBsYXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRpb25MaW5l
SXRlcmF0b3IuaDoKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dEludGVncmF0aW9uOjpMaW5lSXRl
cmF0b3I6OmlzRmlyc3QgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0SW50ZWdyYXRp
b246OlBhdGhMaW5lOjpiYXNlbGluZVR5cGUgY29uc3QpOgorICAgICAgICAqIGxheW91dC9pbnRl
Z3JhdGlvbi9MYXlvdXRJbnRlZ3JhdGlvbkxpbmVJdGVyYXRvckxlZ2FjeVBhdGguaDoKKyAgICAg
ICAgKFdlYkNvcmU6OkxheW91dEludGVncmF0aW9uOjpMaW5lSXRlcmF0b3JMZWdhY3lQYXRoOjpi
YXNlbGluZVR5cGUgY29uc3QpOgorICAgICAgICAqIGxheW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJ
bnRlZ3JhdGlvbkxpbmVJdGVyYXRvck1vZGVyblBhdGguaDoKKyAgICAgICAgKFdlYkNvcmU6Okxh
eW91dEludGVncmF0aW9uOjpMaW5lSXRlcmF0b3JNb2Rlcm5QYXRoOjpiYXNlbGluZVR5cGUgY29u
c3QpOgorICAgICAgICAqIGxheW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3JhdGlvblJ1bkl0
ZXJhdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dEludGVncmF0aW9uOjpSdW5JdGVy
YXRvcjo6bGluZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXRJbnRlZ3JhdGlvbjo6
UGF0aFJ1bjo6bGluZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXRJbnRlZ3JhdGlv
bjo6UGF0aFJ1bjo6c3R5bGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0SW50ZWdy
YXRpb246OnRleHRSdW5Gb3IpOgorICAgICAgICAqIGxheW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJ
bnRlZ3JhdGlvblJ1bkl0ZXJhdG9yLmg6CisgICAgICAgICogbGF5b3V0L2ludGVncmF0aW9uL0xh
eW91dEludGVncmF0aW9uUnVuSXRlcmF0b3JNb2Rlcm5QYXRoLmg6CisgICAgICAgICogcmVuZGVy
aW5nL0xlZ2FjeUlubGluZUZsb3dCb3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5SW5s
aW5lRmxvd0JveDo6bWF4TG9naWNhbEJvdHRvbUZvclRleHREZWNvcmF0aW9uTGluZSBjb25zdCk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lJbmxpbmVGbG93Qm94OjptaW5Mb2dp
Y2FsVG9wRm9yVGV4dERlY29yYXRpb25MaW5lIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBy
ZW5kZXJpbmcvTGVnYWN5SW5saW5lRmxvd0JveC5oOgorICAgICAgICAqIHJlbmRlcmluZy9MZWdh
Y3lJbmxpbmVUZXh0Qm94LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeUlubGluZVRleHRC
b3g6OnBhaW50TWFya2VkVGV4dERlY29yYXRpb24pOgorICAgICAgICAqIHJlbmRlcmluZy9MZWdh
Y3lMaW5lTGF5b3V0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnNldExvZ2ljYWxXaWR0aEZvclRl
eHRSdW4pOgorICAgICAgICAqIHJlbmRlcmluZy9UZXh0RGVjb3JhdGlvblBhaW50ZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6VGV4dERlY29yYXRpb25QYWludGVyOjpwYWludFRleHREZWNvcmF0
aW9uKToKKyAgICAgICAgKiByZW5kZXJpbmcvVGV4dERlY29yYXRpb25QYWludGVyLmg6CisgICAg
ICAgIChXZWJDb3JlOjpUZXh0RGVjb3JhdGlvblBhaW50ZXI6OnNldFRleHRSdW4pOgorICAgICAg
ICAoV2ViQ29yZTo6VGV4dERlY29yYXRpb25QYWludGVyOjpzZXRJbmxpbmVUZXh0Qm94KTogRGVs
ZXRlZC4KKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OmNoYW5nZUFmZmVjdHNWaXN1YWxPdmVyZmxvdyBjb25z
dCk6CisgICAgICAgICogc3R5bGUvSW5saW5lVGV4dEJveFN0eWxlLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OmlzQW5jZXN0b3JBbmRXaXRoaW5CbG9jayk6CisgICAgICAgIChXZWJDb3JlOjptaW5M
b2dpY2FsVG9wRm9yVGV4dERlY29yYXRpb25MaW5lKToKKyAgICAgICAgKFdlYkNvcmU6Om1heExv
Z2ljYWxCb3R0b21Gb3JUZXh0RGVjb3JhdGlvbkxpbmUpOgorCisgICAgICAgIE1vdmVkIGZyb20g
TGVnYWN5SW5saW5lRmxvd0JveC4KKworICAgICAgICAoV2ViQ29yZTo6Y29tcHV0ZVVuZGVybGlu
ZU9mZnNldCk6CisgICAgICAgIChXZWJDb3JlOjp2aXN1YWxPdmVyZmxvd0ZvckRlY29yYXRpb25z
KToKKyAgICAgICAgKiBzdHlsZS9JbmxpbmVUZXh0Qm94U3R5bGUuaDoKKwogMjAyMS0wOC0wMiAg
TWFydGluIFJvYmluc29uICA8bXJvYmluc29uQHdlYmtpdC5vcmc+CiAKICAgICAgICAgW2Nzcy1z
Y3JvbGwtc25hcF0gQ29uc2lkZXIgYWxsIHNuYXAgYXJlYXMgYXQgYSBnaXZlbiBzbmFwIG9mZnNl
dCB3aGVuIHNuYXBwaW5nCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdy
YXRpb24vTGF5b3V0SW50ZWdyYXRpb25MaW5lSXRlcmF0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL2xh
eW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3JhdGlvbkxpbmVJdGVyYXRvci5oCmluZGV4IDhl
YjQ0MTUyYjg5Yi4uOGJjMWEyYjYzNzU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlv
dXQvaW50ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRpb25MaW5lSXRlcmF0b3IuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRpb25MaW5lSXRlcmF0
b3IuaApAQCAtMjUsNiArMjUsNyBAQAogCiAjcHJhZ21hIG9uY2UKIAorI2luY2x1ZGUgIkZvbnRC
YXNlbGluZS5oIgogI2luY2x1ZGUgIkxheW91dEludGVncmF0aW9uTGluZUl0ZXJhdG9yTGVnYWN5
UGF0aC5oIgogI2luY2x1ZGUgIkxheW91dEludGVncmF0aW9uTGluZUl0ZXJhdG9yTW9kZXJuUGF0
aC5oIgogI2luY2x1ZGUgPHd0Zi9WYXJpYW50Lmg+CkBAIC03MCw2ICs3MSw4IEBAIHB1YmxpYzoK
IAogICAgIGJvb2wgaXNIb3Jpem9udGFsKCkgY29uc3Q7CiAKKyAgICBGb250QmFzZWxpbmUgYmFz
ZWxpbmVUeXBlKCkgY29uc3Q7CisKICAgICBjb25zdCBSZW5kZXJCbG9ja0Zsb3cmIGNvbnRhaW5p
bmdCbG9jaygpIGNvbnN0OwogICAgIGNvbnN0IExlZ2FjeVJvb3RJbmxpbmVCb3gqIGxlZ2FjeVJv
b3RJbmxpbmVCb3goKSBjb25zdDsKIApAQCAtOTIsNiArOTUsOCBAQCBwdWJsaWM6CiAgICAgTGlu
ZUl0ZXJhdG9yIG5leHQoKSBjb25zdDsKICAgICBMaW5lSXRlcmF0b3IgcHJldmlvdXMoKSBjb25z
dDsKIAorICAgIGJvb2wgaXNGaXJzdCgpIGNvbnN0IHsgcmV0dXJuICFwcmV2aW91cygpOyB9CisK
ICAgICBleHBsaWNpdCBvcGVyYXRvciBib29sKCkgY29uc3QgeyByZXR1cm4gIWF0RW5kKCk7IH0K
IAogICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBMaW5lSXRlcmF0b3ImKSBjb25zdDsKQEAgLTIy
NCw2ICsyMjksMTMgQEAgaW5saW5lIGJvb2wgUGF0aExpbmU6OmlzSG9yaXpvbnRhbCgpIGNvbnN0
CiAgICAgfSk7CiB9CiAKK2lubGluZSBGb250QmFzZWxpbmUgUGF0aExpbmU6OmJhc2VsaW5lVHlw
ZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIFdURjo6c3dpdGNoT24obV9wYXRoVmFyaWFudCwgW10o
Y29uc3QgYXV0byYgcGF0aCkgeworICAgICAgICByZXR1cm4gcGF0aC5iYXNlbGluZVR5cGUoKTsK
KyAgICB9KTsKK30KKwogaW5saW5lIGNvbnN0IFJlbmRlckJsb2NrRmxvdyYgUGF0aExpbmU6OmNv
bnRhaW5pbmdCbG9jaygpIGNvbnN0CiB7CiAgICAgcmV0dXJuIFdURjo6c3dpdGNoT24obV9wYXRo
VmFyaWFudCwgW10oY29uc3QgYXV0byYgcGF0aCkgLT4gY29uc3QgUmVuZGVyQmxvY2tGbG93JiB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0SW50
ZWdyYXRpb25MaW5lSXRlcmF0b3JMZWdhY3lQYXRoLmggYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQv
aW50ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRpb25MaW5lSXRlcmF0b3JMZWdhY3lQYXRoLmgKaW5k
ZXggY2UyMDFjYzQzZWVmLi4xZGY3YzBkMmVhZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2xheW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3JhdGlvbkxpbmVJdGVyYXRvckxlZ2FjeVBh
dGguaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0SW50ZWdy
YXRpb25MaW5lSXRlcmF0b3JMZWdhY3lQYXRoLmgKQEAgLTU3LDYgKzU3LDcgQEAgcHVibGljOgog
ICAgIGZsb2F0IGNvbnRlbnRMb2dpY2FsUmlnaHQoKSBjb25zdCB7IHJldHVybiBtX3Jvb3RJbmxp
bmVCb3gtPmxvZ2ljYWxSaWdodCgpOyB9CiAgICAgZmxvYXQgbG9naWNhbEhlaWdodCgpIGNvbnN0
IHsgcmV0dXJuIG1fcm9vdElubGluZUJveC0+bG9naWNhbEhlaWdodCgpOyB9CiAgICAgYm9vbCBp
c0hvcml6b250YWwoKSBjb25zdCB7IHJldHVybiBtX3Jvb3RJbmxpbmVCb3gtPmlzSG9yaXpvbnRh
bCgpOyB9CisgICAgRm9udEJhc2VsaW5lIGJhc2VsaW5lVHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1f
cm9vdElubGluZUJveC0+YmFzZWxpbmVUeXBlKCk7IH0KIAogICAgIGNvbnN0IFJlbmRlckJsb2Nr
RmxvdyYgY29udGFpbmluZ0Jsb2NrKCkgY29uc3QgeyByZXR1cm4gbV9yb290SW5saW5lQm94LT5i
bG9ja0Zsb3coKTsgfQogICAgIGNvbnN0IExlZ2FjeVJvb3RJbmxpbmVCb3gqIGxlZ2FjeVJvb3RJ
bmxpbmVCb3goKSBjb25zdCB7IHJldHVybiBtX3Jvb3RJbmxpbmVCb3g7IH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3JhdGlvbkxpbmVJ
dGVyYXRvck1vZGVyblBhdGguaCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9M
YXlvdXRJbnRlZ3JhdGlvbkxpbmVJdGVyYXRvck1vZGVyblBhdGguaAppbmRleCBmYTkzYTA3NjAy
NWUuLjlmNmMxYzc5OTQwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVn
cmF0aW9uL0xheW91dEludGVncmF0aW9uTGluZUl0ZXJhdG9yTW9kZXJuUGF0aC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3JhdGlvbkxpbmVJdGVy
YXRvck1vZGVyblBhdGguaApAQCAtNjcsNiArNjcsNyBAQCBwdWJsaWM6CiAgICAgZmxvYXQgeSgp
IGNvbnN0IHsgcmV0dXJuIGxpbmVCb3hUb3AoKTsgfQogICAgIGZsb2F0IGxvZ2ljYWxIZWlnaHQo
KSBjb25zdCB7IHJldHVybiBsaW5lQm94Qm90dG9tKCkgLSBsaW5lQm94VG9wKCk7IH0KICAgICBi
b29sIGlzSG9yaXpvbnRhbCgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KKyAgICBGb250QmFzZWxp
bmUgYmFzZWxpbmVUeXBlKCkgY29uc3QgeyByZXR1cm4gQWxwaGFiZXRpY0Jhc2VsaW5lOyB9CiAK
ICAgICBjb25zdCBSZW5kZXJCbG9ja0Zsb3cmIGNvbnRhaW5pbmdCbG9jaygpIGNvbnN0IHsgcmV0
dXJuIG1faW5saW5lQ29udGVudC0+Y29udGFpbmluZ0Jsb2NrKCk7IH0KICAgICBjb25zdCBMZWdh
Y3lSb290SW5saW5lQm94KiBsZWdhY3lSb290SW5saW5lQm94KCkgY29uc3QgeyByZXR1cm4gbnVs
bHB0cjsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0xh
eW91dEludGVncmF0aW9uUnVuSXRlcmF0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lu
dGVncmF0aW9uL0xheW91dEludGVncmF0aW9uUnVuSXRlcmF0b3IuY3BwCmluZGV4IGE4N2ZjZTky
MTRmYy4uNzZiMjI0ODE1OTNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50
ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRpb25SdW5JdGVyYXRvci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0xheW91dEludGVncmF0aW9uUnVuSXRlcmF0b3IuY3Bw
CkBAIC03NCw3ICs3NCwxMiBAQCBSdW5JdGVyYXRvciBSdW5JdGVyYXRvcjo6cHJldmlvdXNPbkxp
bmVJZ25vcmluZ0xpbmVCcmVhaygpIGNvbnN0CiAKIExpbmVJdGVyYXRvciBSdW5JdGVyYXRvcjo6
bGluZSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIFdURjo6c3dpdGNoT24obV9ydW4ubV9wYXRoVmFy
aWFudCwgW10oY29uc3QgUnVuSXRlcmF0b3JMZWdhY3lQYXRoJiBwYXRoKSB7CisgICAgcmV0dXJu
IG1fcnVuLmxpbmUoKTsKK30KKworTGluZUl0ZXJhdG9yIFBhdGhSdW46OmxpbmUoKSBjb25zdAor
eworICAgIHJldHVybiBXVEY6OnN3aXRjaE9uKG1fcGF0aFZhcmlhbnQsIFtdKGNvbnN0IFJ1bkl0
ZXJhdG9yTGVnYWN5UGF0aCYgcGF0aCkgewogICAgICAgICByZXR1cm4gTGluZUl0ZXJhdG9yKExp
bmVJdGVyYXRvckxlZ2FjeVBhdGgoJnBhdGgucm9vdElubGluZUJveCgpKSk7CiAgICAgfQogI2lm
IEVOQUJMRShMQVlPVVRfRk9STUFUVElOR19DT05URVhUKQpAQCAtODUsNiArOTAsMTEgQEAgTGlu
ZUl0ZXJhdG9yIFJ1bkl0ZXJhdG9yOjpsaW5lKCkgY29uc3QKICAgICApOwogfQogCitjb25zdCBS
ZW5kZXJTdHlsZSYgUGF0aFJ1bjo6c3R5bGUoKSBjb25zdAoreworICAgIHJldHVybiBsaW5lKCku
aXNGaXJzdCgpID8gcmVuZGVyZXIoKS5maXJzdExpbmVTdHlsZSgpIDogcmVuZGVyZXIoKS5zdHls
ZSgpOworfQorCiBUZXh0UnVuSXRlcmF0b3I6OlRleHRSdW5JdGVyYXRvcihQYXRoUnVuOjpQYXRo
VmFyaWFudCYmIHBhdGhWYXJpYW50KQogICAgIDogUnVuSXRlcmF0b3IoV1RGTW92ZShwYXRoVmFy
aWFudCkpCiB7CkBAIC0xODAsNiArMTkwLDExIEBAIFRleHRSdW5JdGVyYXRvciBmaXJzdFRleHRS
dW5JblRleHRPcmRlckZvcihjb25zdCBSZW5kZXJUZXh0JiB0ZXh0KQogICAgIHJldHVybiBmaXJz
dFRleHRSdW5Gb3IodGV4dCk7CiB9CiAKK1RleHRSdW5JdGVyYXRvciB0ZXh0UnVuRm9yKGNvbnN0
IExlZ2FjeUlubGluZVRleHRCb3gqIGxlZ2FjeUlubGluZVRleHRCb3gpCit7CisgICAgcmV0dXJu
IHsgUnVuSXRlcmF0b3JMZWdhY3lQYXRoIHsgbGVnYWN5SW5saW5lVGV4dEJveCB9IH07Cit9CisK
IFRleHRSdW5SYW5nZSB0ZXh0UnVuc0Zvcihjb25zdCBSZW5kZXJUZXh0JiB0ZXh0KQogewogICAg
IHJldHVybiB7IGZpcnN0VGV4dFJ1bkZvcih0ZXh0KSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0xheW91dEludGVncmF0aW9uUnVuSXRlcmF0b3IuaCBi
L1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3JhdGlvblJ1bkl0
ZXJhdG9yLmgKaW5kZXggYmFhZGU4OWQ4ZDEzLi4xNWQ0MzYwM2EzNDIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3JhdGlvblJ1bkl0ZXJh
dG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0xheW91dEludGVn
cmF0aW9uUnVuSXRlcmF0b3IuaApAQCAtMzQsNiArMzQsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKIGNsYXNzIFJlbmRlckxpbmVCcmVhazsKIGNsYXNzIFJlbmRlck9iamVjdDsKK2NsYXNzIFJl
bmRlclN0eWxlOwogY2xhc3MgUmVuZGVyVGV4dDsKIAogbmFtZXNwYWNlIExheW91dEludGVncmF0
aW9uIHsKQEAgLTc5LDYgKzgwLDcgQEAgcHVibGljOgogICAgIGJvb2wgaXNMZWZ0VG9SaWdodERp
cmVjdGlvbigpIGNvbnN0IHsgcmV0dXJuIGRpcmVjdGlvbigpID09IFRleHREaXJlY3Rpb246OkxU
UjsgfQogCiAgICAgY29uc3QgUmVuZGVyT2JqZWN0JiByZW5kZXJlcigpIGNvbnN0OworICAgIGNv
bnN0IFJlbmRlclN0eWxlJiBzdHlsZSgpIGNvbnN0OwogCiAgICAgLy8gRm9yIGludGVybWVkaWF0
ZSBwb3J0aW5nIHN0ZXBzIG9ubHkuCiAgICAgTGVnYWN5SW5saW5lQm94KiBsZWdhY3lJbmxpbmVC
b3goKSBjb25zdDsKQEAgLTg3LDYgKzg5LDggQEAgcHJvdGVjdGVkOgogICAgIGZyaWVuZCBjbGFz
cyBSdW5JdGVyYXRvcjsKICAgICBmcmllbmQgY2xhc3MgVGV4dFJ1bkl0ZXJhdG9yOwogCisgICAg
TGluZUl0ZXJhdG9yIGxpbmUoKSBjb25zdDsKKwogICAgIC8vIFRvIGhlbHAgd2l0aCBkZWJ1Z2dp
bmcuCiAjaWYgRU5BQkxFKExBWU9VVF9GT1JNQVRUSU5HX0NPTlRFWFQpCiAgICAgY29uc3QgUnVu
SXRlcmF0b3JNb2Rlcm5QYXRoJiBtb2Rlcm5QYXRoKCkgY29uc3Q7CkBAIC0xOTUsNiArMTk5LDcg
QEAgcHJpdmF0ZToKIAogVGV4dFJ1bkl0ZXJhdG9yIGZpcnN0VGV4dFJ1bkZvcihjb25zdCBSZW5k
ZXJUZXh0Jik7CiBUZXh0UnVuSXRlcmF0b3IgZmlyc3RUZXh0UnVuSW5UZXh0T3JkZXJGb3IoY29u
c3QgUmVuZGVyVGV4dCYpOworVGV4dFJ1bkl0ZXJhdG9yIHRleHRSdW5Gb3IoY29uc3QgTGVnYWN5
SW5saW5lVGV4dEJveCopOwogVGV4dFJ1blJhbmdlIHRleHRSdW5zRm9yKGNvbnN0IFJlbmRlclRl
eHQmKTsKIFJ1bkl0ZXJhdG9yIHJ1bkZvcihjb25zdCBSZW5kZXJMaW5lQnJlYWsmKTsKIFJ1bkl0
ZXJhdG9yIHJ1bkZvcihjb25zdCBSZW5kZXJCb3gmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2xheW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3JhdGlvblJ1bkl0ZXJhdG9yTW9kZXJu
UGF0aC5oIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0xheW91dEludGVncmF0
aW9uUnVuSXRlcmF0b3JNb2Rlcm5QYXRoLmgKaW5kZXggYTY4ZmFlNTg4NjgzLi43MTJiM2EyOTAz
ZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJ
bnRlZ3JhdGlvblJ1bkl0ZXJhdG9yTW9kZXJuUGF0aC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xh
eW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3JhdGlvblJ1bkl0ZXJhdG9yTW9kZXJuUGF0aC5o
CkBAIC0yMDIsNiArMjAyLDcgQEAgcHVibGljOgogICAgIH0KIAogcHJpdmF0ZToKKyAgICBmcmll
bmQgY2xhc3MgUGF0aFJ1bjsKICAgICBmcmllbmQgY2xhc3MgUnVuSXRlcmF0b3I7CiAKICAgICBU
ZXh0Qm94U2VsZWN0YWJsZVJhbmdlIHNlbGVjdGFibGVSYW5nZSgpIGNvbnN0CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvTGVnYWN5SW5saW5lRmxvd0JveC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvTGVnYWN5SW5saW5lRmxvd0JveC5jcHAKaW5kZXggMGQ3Zjhi
OTBjYTY4Li5lOGFkZmY3ZGYyMDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9MZWdhY3lJbmxpbmVGbG93Qm94LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
TGVnYWN5SW5saW5lRmxvd0JveC5jcHAKQEAgLTc5OCw0OCArNzk4LDYgQEAgdm9pZCBMZWdhY3lJ
bmxpbmVGbG93Qm94OjpwbGFjZUJveGVzSW5CbG9ja0RpcmVjdGlvbihMYXlvdXRVbml0IHRvcCwg
TGF5b3V0VW5pdAogICAgIH0KIH0KIAotdm9pZCBMZWdhY3lJbmxpbmVGbG93Qm94OjptYXhMb2dp
Y2FsQm90dG9tRm9yVGV4dERlY29yYXRpb25MaW5lKGZsb2F0JiBtYXhMb2dpY2FsQm90dG9tLCBj
b25zdCBSZW5kZXJFbGVtZW50KiBkZWNvcmF0aW9uUmVuZGVyZXIsIE9wdGlvblNldDxUZXh0RGVj
b3JhdGlvbj4gdGV4dERlY29yYXRpb24pIGNvbnN0Ci17Ci0gICAgZm9yIChhdXRvKiBjaGlsZCA9
IGZpcnN0Q2hpbGQoKTsgY2hpbGQ7IGNoaWxkID0gY2hpbGQtPm5leHRPbkxpbmUoKSkgewotICAg
ICAgICBpZiAoY2hpbGQtPnJlbmRlcmVyKCkuaXNPdXRPZkZsb3dQb3NpdGlvbmVkKCkpCi0gICAg
ICAgICAgICBjb250aW51ZTsgLy8gUG9zaXRpb25lZCBwbGFjZWhvbGRlcnMgZG9uJ3QgYWZmZWN0
IGNhbGN1bGF0aW9ucy4KLSAgICAgICAgCi0gICAgICAgIGlmICghKGNoaWxkLT5saW5lU3R5bGUo
KS50ZXh0RGVjb3JhdGlvbnNJbkVmZmVjdCgpICYgdGV4dERlY29yYXRpb24pKQotICAgICAgICAg
ICAgY29udGludWU7IC8vIElmIHRoZSB0ZXh0IGRlY29yYXRpb24gaXNuJ3QgaW4gZWZmZWN0IG9u
IHRoZSBjaGlsZCwgdGhlbiBpdCBtdXN0IGJlIG91dHNpZGUgb2YgfGRlY29yYXRpb25SZW5kZXJl
cnwncyBoaWVyYXJjaHkuCi0gICAgICAgIAotICAgICAgICBpZiAoZGVjb3JhdGlvblJlbmRlcmVy
ICYmIGRlY29yYXRpb25SZW5kZXJlci0+aXNSZW5kZXJJbmxpbmUoKSAmJiAhaXNBbmNlc3RvckFu
ZFdpdGhpbkJsb2NrKGRvd25jYXN0PFJlbmRlcklubGluZT4oKmRlY29yYXRpb25SZW5kZXJlciks
ICZjaGlsZC0+cmVuZGVyZXIoKSkpCi0gICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgCi0g
ICAgICAgIGlmIChpczxMZWdhY3lJbmxpbmVGbG93Qm94PigqY2hpbGQpKQotICAgICAgICAgICAg
ZG93bmNhc3Q8TGVnYWN5SW5saW5lRmxvd0JveD4oKmNoaWxkKS5tYXhMb2dpY2FsQm90dG9tRm9y
VGV4dERlY29yYXRpb25MaW5lKG1heExvZ2ljYWxCb3R0b20sIGRlY29yYXRpb25SZW5kZXJlciwg
dGV4dERlY29yYXRpb24pOwotICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIGlmIChjaGlsZC0+
aXNJbmxpbmVUZXh0Qm94KCkgfHwgY2hpbGQtPmxpbmVTdHlsZSgpLnRleHREZWNvcmF0aW9uU2tp
cCgpLmlzRW1wdHkoKSkKLSAgICAgICAgICAgICAgICBtYXhMb2dpY2FsQm90dG9tID0gc3RkOjpt
YXg8ZmxvYXQ+KG1heExvZ2ljYWxCb3R0b20sIGNoaWxkLT5sb2dpY2FsQm90dG9tKCkpOwotICAg
ICAgICB9Ci0gICAgfQotfQotCi12b2lkIExlZ2FjeUlubGluZUZsb3dCb3g6Om1pbkxvZ2ljYWxU
b3BGb3JUZXh0RGVjb3JhdGlvbkxpbmUoZmxvYXQmIG1pbkxvZ2ljYWxUb3AsIGNvbnN0IFJlbmRl
ckVsZW1lbnQqIGRlY29yYXRpb25SZW5kZXJlciwgT3B0aW9uU2V0PFRleHREZWNvcmF0aW9uPiB0
ZXh0RGVjb3JhdGlvbikgY29uc3QKLXsKLSAgICBmb3IgKGF1dG8qIGNoaWxkID0gZmlyc3RDaGls
ZCgpOyBjaGlsZDsgY2hpbGQgPSBjaGlsZC0+bmV4dE9uTGluZSgpKSB7Ci0gICAgICAgIGlmIChj
aGlsZC0+cmVuZGVyZXIoKS5pc091dE9mRmxvd1Bvc2l0aW9uZWQoKSkKLSAgICAgICAgICAgIGNv
bnRpbnVlOyAvLyBQb3NpdGlvbmVkIHBsYWNlaG9sZGVycyBkb24ndCBhZmZlY3QgY2FsY3VsYXRp
b25zLgotICAgICAgICAKLSAgICAgICAgaWYgKCEoY2hpbGQtPmxpbmVTdHlsZSgpLnRleHREZWNv
cmF0aW9uc0luRWZmZWN0KCkgJiB0ZXh0RGVjb3JhdGlvbikpCi0gICAgICAgICAgICBjb250aW51
ZTsgLy8gSWYgdGhlIHRleHQgZGVjb3JhdGlvbiBpc24ndCBpbiBlZmZlY3Qgb24gdGhlIGNoaWxk
LCB0aGVuIGl0IG11c3QgYmUgb3V0c2lkZSBvZiB8ZGVjb3JhdGlvblJlbmRlcmVyfCdzIGhpZXJh
cmNoeS4KLSAgICAgICAgCi0gICAgICAgIGlmIChkZWNvcmF0aW9uUmVuZGVyZXIgJiYgZGVjb3Jh
dGlvblJlbmRlcmVyLT5pc1JlbmRlcklubGluZSgpICYmICFpc0FuY2VzdG9yQW5kV2l0aGluQmxv
Y2soZG93bmNhc3Q8UmVuZGVySW5saW5lPigqZGVjb3JhdGlvblJlbmRlcmVyKSwgJmNoaWxkLT5y
ZW5kZXJlcigpKSkKLSAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAKLSAgICAgICAgaWYg
KGlzPExlZ2FjeUlubGluZUZsb3dCb3g+KCpjaGlsZCkpCi0gICAgICAgICAgICBkb3duY2FzdDxM
ZWdhY3lJbmxpbmVGbG93Qm94PigqY2hpbGQpLm1pbkxvZ2ljYWxUb3BGb3JUZXh0RGVjb3JhdGlv
bkxpbmUobWluTG9naWNhbFRvcCwgZGVjb3JhdGlvblJlbmRlcmVyLCB0ZXh0RGVjb3JhdGlvbik7
Ci0gICAgICAgIGVsc2UgewotICAgICAgICAgICAgaWYgKGNoaWxkLT5pc0lubGluZVRleHRCb3go
KSB8fCBjaGlsZC0+bGluZVN0eWxlKCkudGV4dERlY29yYXRpb25Ta2lwKCkuaXNFbXB0eSgpKQot
ICAgICAgICAgICAgICAgIG1pbkxvZ2ljYWxUb3AgPSBzdGQ6Om1pbjxmbG9hdD4obWluTG9naWNh
bFRvcCwgY2hpbGQtPmxvZ2ljYWxUb3AoKSk7Ci0gICAgICAgIH0KLSAgICB9Ci19Ci0KIHZvaWQg
TGVnYWN5SW5saW5lRmxvd0JveDo6ZmxpcExpbmVzSW5CbG9ja0RpcmVjdGlvbihMYXlvdXRVbml0
IGxpbmVUb3AsIExheW91dFVuaXQgbGluZUJvdHRvbSkKIHsKICAgICAvLyBGbGlwIHRoZSBib3gg
b24gdGhlIGxpbmUgc3VjaCB0aGF0IHRoZSB0b3AgaXMgbm93IHJlbGF0aXZlIHRvIHRoZSBsaW5l
Qm90dG9tIGluc3RlYWQgb2YgdGhlIGxpbmVUb3AuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvTGVnYWN5SW5saW5lRmxvd0JveC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL0xlZ2FjeUlubGluZUZsb3dCb3guaAppbmRleCAzODFjMjgyMjIyZjAuLjQ3Y2Y2ZTg3ODMz
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0xlZ2FjeUlubGluZUZsb3dC
b3guaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvTGVnYWN5SW5saW5lRmxvd0JveC5o
CkBAIC0yOTYsOSArMjk2LDYgQEAgcHVibGljOgogCiAgICAgdm9pZCBjb21wdXRlUmVwbGFjZWRB
bmRUZXh0TGluZVRvcEFuZEJvdHRvbShMYXlvdXRVbml0JiBsaW5lVG9wLCBMYXlvdXRVbml0JiBs
aW5lQm90dG9tKSBjb25zdDsKIAotICAgIHZvaWQgbWF4TG9naWNhbEJvdHRvbUZvclRleHREZWNv
cmF0aW9uTGluZShmbG9hdCYgbWF4TG9naWNhbEJvdHRvbSwgY29uc3QgUmVuZGVyRWxlbWVudCog
ZGVjb3JhdGlvblJlbmRlcmVyLCBPcHRpb25TZXQ8VGV4dERlY29yYXRpb24+KSBjb25zdDsKLSAg
ICB2b2lkIG1pbkxvZ2ljYWxUb3BGb3JUZXh0RGVjb3JhdGlvbkxpbmUoZmxvYXQmIG1pbkxvZ2lj
YWxUb3AsIGNvbnN0IFJlbmRlckVsZW1lbnQqIGRlY29yYXRpb25SZW5kZXJlciwgT3B0aW9uU2V0
PFRleHREZWNvcmF0aW9uPikgY29uc3Q7Ci0KIHByaXZhdGU6CiAgICAgYm9vbCBpc0lubGluZUZs
b3dCb3goKSBjb25zdCBmaW5hbCB7IHJldHVybiB0cnVlOyB9CiAgICAgdm9pZCBib3hNb2RlbE9i
amVjdCgpIGNvbnN0ID0gZGVsZXRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL0xlZ2FjeUlubGluZVRleHRCb3guY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0xl
Z2FjeUlubGluZVRleHRCb3guY3BwCmluZGV4IDUwNzAwM2EwMGZjZS4uZDk4MzYxY2ViMTg5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvTGVnYWN5SW5saW5lVGV4dEJveC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0xlZ2FjeUlubGluZVRleHRCb3guY3Bw
CkBAIC04NzIsNyArODcyLDcgQEAgdm9pZCBMZWdhY3lJbmxpbmVUZXh0Qm94OjpwYWludE1hcmtl
ZFRleHREZWNvcmF0aW9uKFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdAogICAgIGF1dG8gdGV4
dERlY29yYXRpb25zID0gbGluZVN0eWxlKCkudGV4dERlY29yYXRpb25zSW5FZmZlY3QoKTsKICAg
ICB0ZXh0RGVjb3JhdGlvbnMuYWRkKFRleHREZWNvcmF0aW9uUGFpbnRlcjo6dGV4dERlY29yYXRp
b25zSW5FZmZlY3RGb3JTdHlsZShtYXJrZWRUZXh0LnN0eWxlLnRleHREZWNvcmF0aW9uU3R5bGVz
KSk7CiAgICAgVGV4dERlY29yYXRpb25QYWludGVyIGRlY29yYXRpb25QYWludGVyIHsgY29udGV4
dCwgdGV4dERlY29yYXRpb25zLCByZW5kZXJlcigpLCBpc0ZpcnN0TGluZSgpLCBsaW5lRm9udCgp
LCBtYXJrZWRUZXh0LnN0eWxlLnRleHREZWNvcmF0aW9uU3R5bGVzIH07Ci0gICAgZGVjb3JhdGlv
blBhaW50ZXIuc2V0SW5saW5lVGV4dEJveCh0aGlzKTsKKyAgICBkZWNvcmF0aW9uUGFpbnRlci5z
ZXRUZXh0UnVuKExheW91dEludGVncmF0aW9uOjp0ZXh0UnVuRm9yKHRoaXMpKTsKICAgICBkZWNv
cmF0aW9uUGFpbnRlci5zZXRXaWR0aChzbmFwcGVkU2VsZWN0aW9uUmVjdC53aWR0aCgpKTsKICAg
ICBkZWNvcmF0aW9uUGFpbnRlci5zZXRJc0hvcml6b250YWwoaXNIb3Jpem9udGFsKCkpOwogICAg
IGlmIChtYXJrZWRUZXh0LnN0eWxlLnRleHRTaGFkb3cpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9MZWdhY3lMaW5lTGF5b3V0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9MZWdhY3lMaW5lTGF5b3V0LmNwcAppbmRleCBkMmE3ZDk5ZWI4ZWIuLjM3MjFjZDI5
NTFjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0xlZ2FjeUxpbmVMYXlv
dXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9MZWdhY3lMaW5lTGF5b3V0LmNw
cApAQCAtMzIsNiArMzIsNyBAQAogI2luY2x1ZGUgIkhUTUxQYXJzZXJJZGlvbXMuaCIKICNpbmNs
dWRlICJJbmxpbmVJdGVyYXRvci5oIgogI2luY2x1ZGUgIklubGluZVRleHRCb3hTdHlsZS5oIgor
I2luY2x1ZGUgIkxheW91dEludGVncmF0aW9uUnVuSXRlcmF0b3IuaCIKICNpbmNsdWRlICJMZWdh
Y3lJbmxpbmVFbGVtZW50Qm94LmgiCiAjaW5jbHVkZSAiTGVnYWN5SW5saW5lVGV4dEJveC5oIgog
I2luY2x1ZGUgIkxpbmVMYXlvdXRTdGF0ZS5oIgpAQCAtNTQ2LDcgKzU0Nyw3IEBAIHN0YXRpYyBp
bmxpbmUgdm9pZCBzZXRMb2dpY2FsV2lkdGhGb3JUZXh0UnVuKExlZ2FjeVJvb3RJbmxpbmVCb3gq
IGxpbmVCb3gsIEJpZGlSCiAKICAgICAvLyBJbmNsdWRlIHRleHQgZGVjb3JhdGlvbiB2aXN1YWwg
b3ZlcmZsb3cgYXMgcGFydCBvZiB0aGUgZ2x5cGggb3ZlcmZsb3cuCiAgICAgaWYgKCFyZW5kZXJl
ci5zdHlsZSgpLnRleHREZWNvcmF0aW9uc0luRWZmZWN0KCkuaXNFbXB0eSgpKQotICAgICAgICBn
bHlwaE92ZXJmbG93LmV4dGVuZFRvKHZpc3VhbE92ZXJmbG93Rm9yRGVjb3JhdGlvbnMocnVuLT5i
b3goKS0+bGluZVN0eWxlKCksIGRvd25jYXN0PExlZ2FjeUlubGluZVRleHRCb3g+KHJ1bi0+Ym94
KCkpKSk7CisgICAgICAgIGdseXBoT3ZlcmZsb3cuZXh0ZW5kVG8odmlzdWFsT3ZlcmZsb3dGb3JE
ZWNvcmF0aW9ucyhydW4tPmJveCgpLT5saW5lU3R5bGUoKSwgTGF5b3V0SW50ZWdyYXRpb246OnRl
eHRSdW5Gb3IoZG93bmNhc3Q8TGVnYWN5SW5saW5lVGV4dEJveD4ocnVuLT5ib3goKSkpKSk7CiAK
ICAgICBpZiAoIWdseXBoT3ZlcmZsb3cuaXNFbXB0eSgpKSB7CiAgICAgICAgIEFTU0VSVChydW4t
PmJveCgpLT5iZWhhdmVzTGlrZVRleHQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvVGV4dERlY29yYXRpb25QYWludGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9UZXh0RGVjb3JhdGlvblBhaW50ZXIuY3BwCmluZGV4IDVkOThhOTYxZWE1ZS4uOGM2Mzcy
ZDRlNmRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvVGV4dERlY29yYXRp
b25QYWludGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvVGV4dERlY29yYXRp
b25QYWludGVyLmNwcApAQCAtMjg4LDcgKzI4OCw3IEBAIHZvaWQgVGV4dERlY29yYXRpb25QYWlu
dGVyOjpwYWludFRleHREZWNvcmF0aW9uKGNvbnN0IFRleHRSdW4mIHRleHRSdW4sIGNvbnN0IEZs
CiAgICAgICAgIGlmIChtX2RlY29yYXRpb25zLmNvbnRhaW5zKFRleHREZWNvcmF0aW9uOjpVbmRl
cmxpbmUpKSB7CiAgICAgICAgICAgICBmbG9hdCB0ZXh0RGVjb3JhdGlvbkJhc2VGb250U2l6ZSA9
IDE2OwogICAgICAgICAgICAgYXV0byBkZWZhdWx0R2FwID0gbV9saW5lU3R5bGUuY29tcHV0ZWRG
b250U2l6ZSgpIC8gdGV4dERlY29yYXRpb25CYXNlRm9udFNpemU7Ci0gICAgICAgICAgICBmbG9h
dCBvZmZzZXQgPSBjb21wdXRlVW5kZXJsaW5lT2Zmc2V0KG1fbGluZVN0eWxlLnRleHRVbmRlcmxp
bmVQb3NpdGlvbigpLCBtX2xpbmVTdHlsZS50ZXh0VW5kZXJsaW5lT2Zmc2V0KCksIG1fbGluZVN0
eWxlLmZvbnRNZXRyaWNzKCksIG1faW5saW5lVGV4dEJveCwgZGVmYXVsdEdhcCk7CisgICAgICAg
ICAgICBmbG9hdCBvZmZzZXQgPSBjb21wdXRlVW5kZXJsaW5lT2Zmc2V0KG1fbGluZVN0eWxlLnRl
eHRVbmRlcmxpbmVQb3NpdGlvbigpLCBtX2xpbmVTdHlsZS50ZXh0VW5kZXJsaW5lT2Zmc2V0KCks
IG1fbGluZVN0eWxlLmZvbnRNZXRyaWNzKCksIG1fdGV4dFJ1biwgZGVmYXVsdEdhcCk7CiAgICAg
ICAgICAgICBmbG9hdCB3YXZ5T2Zmc2V0ID0gbV9zdHlsZXMudW5kZXJsaW5lU3R5bGUgPT0gVGV4
dERlY29yYXRpb25TdHlsZTo6V2F2eSA/IG1fd2F2eU9mZnNldCA6IDA7CiAgICAgICAgICAgICBG
bG9hdFJlY3QgcmVjdChsb2NhbE9yaWdpbiwgRmxvYXRTaXplKG1fd2lkdGgsIHRleHREZWNvcmF0
aW9uVGhpY2tuZXNzKSk7CiAgICAgICAgICAgICByZWN0Lm1vdmUoMCwgb2Zmc2V0ICsgd2F2eU9m
ZnNldCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvVGV4dERlY29yYXRp
b25QYWludGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvVGV4dERlY29yYXRpb25QYWlu
dGVyLmgKaW5kZXggODdlMjA2NmY4ODIzLi5kOTlmOWFiNzJkNzEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9UZXh0RGVjb3JhdGlvblBhaW50ZXIuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvVGV4dERlY29yYXRpb25QYWludGVyLmgKQEAgLTI0LDYgKzI0LDcg
QEAKIAogI2luY2x1ZGUgIkNvbG9yLmgiCiAjaW5jbHVkZSAiRmxvYXRQb2ludC5oIgorI2luY2x1
ZGUgIkxheW91dEludGVncmF0aW9uUnVuSXRlcmF0b3IuaCIKICNpbmNsdWRlICJSZW5kZXJTdHls
ZUNvbnN0YW50cy5oIgogI2luY2x1ZGUgPHd0Zi9PcHRpb25TZXQuaD4KIApAQCAtNDUsNyArNDYs
NyBAQCBwdWJsaWM6CiAgICAgc3RydWN0IFN0eWxlczsKICAgICBUZXh0RGVjb3JhdGlvblBhaW50
ZXIoR3JhcGhpY3NDb250ZXh0JiwgT3B0aW9uU2V0PFRleHREZWNvcmF0aW9uPiBkZWNvcmF0aW9u
cywgY29uc3QgUmVuZGVyVGV4dCYsIGJvb2wgaXNGaXJzdExpbmUsIGNvbnN0IEZvbnRDYXNjYWRl
Jiwgc3RkOjpvcHRpb25hbDxTdHlsZXM+ID0gc3RkOjpudWxsb3B0KTsKICAgICAKLSAgICB2b2lk
IHNldElubGluZVRleHRCb3goY29uc3QgTGVnYWN5SW5saW5lVGV4dEJveCogaW5saW5lVGV4dEJv
eCkgeyBtX2lubGluZVRleHRCb3ggPSBpbmxpbmVUZXh0Qm94OyB9CisgICAgdm9pZCBzZXRUZXh0
UnVuKExheW91dEludGVncmF0aW9uOjpUZXh0UnVuSXRlcmF0b3IgdGV4dFJ1bikgeyBtX3RleHRS
dW4gPSB0ZXh0UnVuOyB9CiAgICAgdm9pZCBzZXRJc0hvcml6b250YWwoYm9vbCBpc0hvcml6b250
YWwpIHsgbV9pc0hvcml6b250YWwgPSBpc0hvcml6b250YWw7IH0KICAgICB2b2lkIHNldFdpZHRo
KGZsb2F0IHdpZHRoKSB7IG1fd2lkdGggPSB3aWR0aDsgfQogICAgIHZvaWQgc2V0VGV4dFNoYWRv
dyhjb25zdCBTaGFkb3dEYXRhKiB0ZXh0U2hhZG93KSB7IG1fc2hhZG93ID0gdGV4dFNoYWRvdzsg
fQpAQCAtNzgsNyArNzksNyBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9pc0hvcml6b250YWwgeyB0
cnVlIH07CiAgICAgY29uc3QgU2hhZG93RGF0YSogbV9zaGFkb3cgeyBudWxscHRyIH07CiAgICAg
Y29uc3QgRmlsdGVyT3BlcmF0aW9ucyogbV9zaGFkb3dDb2xvckZpbHRlciB7IG51bGxwdHIgfTsK
LSAgICBjb25zdCBMZWdhY3lJbmxpbmVUZXh0Qm94KiBtX2lubGluZVRleHRCb3ggeyBudWxscHRy
IH07CisgICAgTGF5b3V0SW50ZWdyYXRpb246OlRleHRSdW5JdGVyYXRvciBtX3RleHRSdW47CiAg
ICAgY29uc3QgRm9udENhc2NhZGUmIG1fZm9udDsKIAogICAgIFN0eWxlcyBtX3N0eWxlczsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuY3BwCmluZGV4IGJh
ZjNkOTg4YmEwMS4uYWQ5ZDgyOTRhNzY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdHlsZS9SZW5kZXJTdHlsZS5jcHAKQEAgLTYzOCw3ICs2MzgsNyBAQCBpbmxpbmUgYm9vbCBS
ZW5kZXJTdHlsZTo6Y2hhbmdlQWZmZWN0c1Zpc3VhbE92ZXJmbG93KGNvbnN0IFJlbmRlclN0eWxl
JiBvdGhlcikgYwogICAgICAgICAvLyBpcyBzcGVjaWZpZWQuIFdlIGNhbiB0YWtlIGFuIGVhcmx5
IG91dCBoZXJlLgogICAgICAgICBpZiAodGV4dFVuZGVybGluZVBvc2l0aW9uKCkgPT0gVGV4dFVu
ZGVybGluZVBvc2l0aW9uOjpVbmRlciB8fCBvdGhlci50ZXh0VW5kZXJsaW5lUG9zaXRpb24oKSA9
PSBUZXh0VW5kZXJsaW5lUG9zaXRpb246OlVuZGVyKQogICAgICAgICAgICAgcmV0dXJuIHRydWU7
Ci0gICAgICAgIHJldHVybiB2aXN1YWxPdmVyZmxvd0ZvckRlY29yYXRpb25zKCp0aGlzLCBudWxs
cHRyKSAhPSB2aXN1YWxPdmVyZmxvd0ZvckRlY29yYXRpb25zKG90aGVyLCBudWxscHRyKTsKKyAg
ICAgICAgcmV0dXJuIHZpc3VhbE92ZXJmbG93Rm9yRGVjb3JhdGlvbnMoKnRoaXMsIHsgfSkgIT0g
dmlzdWFsT3ZlcmZsb3dGb3JEZWNvcmF0aW9ucyhvdGhlciwgeyB9KTsKICAgICB9CiAKICAgICBp
ZiAoaGFzT3V0bGluZUluVmlzdWFsT3ZlcmZsb3coKSAhPSBvdGhlci5oYXNPdXRsaW5lSW5WaXN1
YWxPdmVyZmxvdygpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3R5bGUvSW5saW5lVGV4
dEJveFN0eWxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL0lubGluZVRleHRCb3hTdHlsZS5j
cHAKaW5kZXggOGE5NmMzZjAzZjMyLi4xMGJmMzFhZjliN2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3N0eWxlL0lubGluZVRleHRCb3hTdHlsZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
c3R5bGUvSW5saW5lVGV4dEJveFN0eWxlLmNwcApAQCAtMjcsMTMgKzI3LDYxIEBACiAjaW5jbHVk
ZSAiSW5saW5lVGV4dEJveFN0eWxlLmgiCiAKICNpbmNsdWRlICJGb250Q2FzY2FkZS5oIgorI2lu
Y2x1ZGUgIkxheW91dEludGVncmF0aW9uTGluZUl0ZXJhdG9yLmgiCisjaW5jbHVkZSAiTGF5b3V0
SW50ZWdyYXRpb25SdW5JdGVyYXRvci5oIgogI2luY2x1ZGUgIkxlZ2FjeUlubGluZVRleHRCb3gu
aCIKICNpbmNsdWRlICJMZWdhY3lSb290SW5saW5lQm94LmgiCisjaW5jbHVkZSAiUmVuZGVySW5s
aW5lLmgiCiAjaW5jbHVkZSAiVGV4dFVuZGVybGluZU9mZnNldC5oIgogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CisKK3N0YXRpYyBib29sIGlzQW5jZXN0b3JBbmRXaXRoaW5CbG9jayhjb25zdCBSZW5k
ZXJJbmxpbmUmIGFuY2VzdG9yLCBjb25zdCBSZW5kZXJPYmplY3QqIGNoaWxkKQoreworICAgIGNv
bnN0IFJlbmRlck9iamVjdCogb2JqZWN0ID0gY2hpbGQ7CisgICAgd2hpbGUgKG9iamVjdCAmJiAo
IW9iamVjdC0+aXNSZW5kZXJCbG9jaygpIHx8IG9iamVjdC0+aXNJbmxpbmUoKSkpIHsKKyAgICAg
ICAgaWYgKG9iamVjdCA9PSAmYW5jZXN0b3IpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAg
ICAgICAgb2JqZWN0ID0gb2JqZWN0LT5wYXJlbnQoKTsKKyAgICB9CisgICAgcmV0dXJuIGZhbHNl
OworfQorCitzdGF0aWMgdm9pZCBtaW5Mb2dpY2FsVG9wRm9yVGV4dERlY29yYXRpb25MaW5lKGNv
bnN0IExheW91dEludGVncmF0aW9uOjpMaW5lSXRlcmF0b3ImIGxpbmUsIGZsb2F0JiBtaW5Mb2dp
Y2FsVG9wLCBjb25zdCBSZW5kZXJFbGVtZW50KiBkZWNvcmF0aW9uUmVuZGVyZXIsIE9wdGlvblNl
dDxUZXh0RGVjb3JhdGlvbj4gdGV4dERlY29yYXRpb24pCit7CisgICAgZm9yIChhdXRvIHJ1biA9
IGxpbmUuZmlyc3RSdW4oKTsgcnVuOyBydW4udHJhdmVyc2VOZXh0T25MaW5lKCkpIHsKKyAgICAg
ICAgaWYgKHJ1bi0+cmVuZGVyZXIoKS5pc091dE9mRmxvd1Bvc2l0aW9uZWQoKSkKKyAgICAgICAg
ICAgIGNvbnRpbnVlOyAvLyBQb3NpdGlvbmVkIHBsYWNlaG9sZGVycyBkb24ndCBhZmZlY3QgY2Fs
Y3VsYXRpb25zLgorCisgICAgICAgIGlmICghKHJ1bi0+c3R5bGUoKS50ZXh0RGVjb3JhdGlvbnNJ
bkVmZmVjdCgpICYgdGV4dERlY29yYXRpb24pKQorICAgICAgICAgICAgY29udGludWU7IC8vIElm
IHRoZSB0ZXh0IGRlY29yYXRpb24gaXNuJ3QgaW4gZWZmZWN0IG9uIHRoZSBjaGlsZCwgdGhlbiBp
dCBtdXN0IGJlIG91dHNpZGUgb2YgfGRlY29yYXRpb25SZW5kZXJlcnwncyBoaWVyYXJjaHkuCisK
KyAgICAgICAgaWYgKGRlY29yYXRpb25SZW5kZXJlciAmJiBkZWNvcmF0aW9uUmVuZGVyZXItPmlz
UmVuZGVySW5saW5lKCkgJiYgIWlzQW5jZXN0b3JBbmRXaXRoaW5CbG9jayhkb3duY2FzdDxSZW5k
ZXJJbmxpbmU+KCpkZWNvcmF0aW9uUmVuZGVyZXIpLCAmcnVuLT5yZW5kZXJlcigpKSkKKyAgICAg
ICAgICAgIGNvbnRpbnVlOworCisgICAgICAgIGlmIChydW4tPmlzVGV4dCgpIHx8IHJ1bi0+c3R5
bGUoKS50ZXh0RGVjb3JhdGlvblNraXAoKS5pc0VtcHR5KCkpCisgICAgICAgICAgICBtaW5Mb2dp
Y2FsVG9wID0gc3RkOjptaW48ZmxvYXQ+KG1pbkxvZ2ljYWxUb3AsIHJ1bi0+bG9naWNhbFRvcCgp
KTsKKyAgICB9Cit9CisKK3N0YXRpYyB2b2lkIG1heExvZ2ljYWxCb3R0b21Gb3JUZXh0RGVjb3Jh
dGlvbkxpbmUoY29uc3QgTGF5b3V0SW50ZWdyYXRpb246OkxpbmVJdGVyYXRvciYgbGluZSwgZmxv
YXQmIG1heExvZ2ljYWxCb3R0b20sIGNvbnN0IFJlbmRlckVsZW1lbnQqIGRlY29yYXRpb25SZW5k
ZXJlciwgT3B0aW9uU2V0PFRleHREZWNvcmF0aW9uPiB0ZXh0RGVjb3JhdGlvbikKK3sKKyAgICBm
b3IgKGF1dG8gcnVuID0gbGluZS5maXJzdFJ1bigpOyBydW47IHJ1bi50cmF2ZXJzZU5leHRPbkxp
bmUoKSkgeworICAgICAgICBpZiAocnVuLT5yZW5kZXJlcigpLmlzT3V0T2ZGbG93UG9zaXRpb25l
ZCgpKQorICAgICAgICAgICAgY29udGludWU7IC8vIFBvc2l0aW9uZWQgcGxhY2Vob2xkZXJzIGRv
bid0IGFmZmVjdCBjYWxjdWxhdGlvbnMuCisKKyAgICAgICAgaWYgKCEocnVuLT5zdHlsZSgpLnRl
eHREZWNvcmF0aW9uc0luRWZmZWN0KCkgJiB0ZXh0RGVjb3JhdGlvbikpCisgICAgICAgICAgICBj
b250aW51ZTsgLy8gSWYgdGhlIHRleHQgZGVjb3JhdGlvbiBpc24ndCBpbiBlZmZlY3Qgb24gdGhl
IGNoaWxkLCB0aGVuIGl0IG11c3QgYmUgb3V0c2lkZSBvZiB8ZGVjb3JhdGlvblJlbmRlcmVyfCdz
IGhpZXJhcmNoeS4KKworICAgICAgICBpZiAoZGVjb3JhdGlvblJlbmRlcmVyICYmIGRlY29yYXRp
b25SZW5kZXJlci0+aXNSZW5kZXJJbmxpbmUoKSAmJiAhaXNBbmNlc3RvckFuZFdpdGhpbkJsb2Nr
KGRvd25jYXN0PFJlbmRlcklubGluZT4oKmRlY29yYXRpb25SZW5kZXJlciksICZydW4tPnJlbmRl
cmVyKCkpKQorICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgaWYgKHJ1bi0+aXNUZXh0
KCkgfHwgcnVuLT5zdHlsZSgpLnRleHREZWNvcmF0aW9uU2tpcCgpLmlzRW1wdHkoKSkKKyAgICAg
ICAgICAgIG1heExvZ2ljYWxCb3R0b20gPSBzdGQ6Om1heDxmbG9hdD4obWF4TG9naWNhbEJvdHRv
bSwgcnVuLT5sb2dpY2FsQm90dG9tKCkpOworICAgIH0KK30KICAgICAKLWZsb2F0IGNvbXB1dGVV
bmRlcmxpbmVPZmZzZXQoVGV4dFVuZGVybGluZVBvc2l0aW9uIHVuZGVybGluZVBvc2l0aW9uLCBU
ZXh0VW5kZXJsaW5lT2Zmc2V0IHVuZGVybGluZU9mZnNldCwgY29uc3QgRm9udE1ldHJpY3MmIGZv
bnRNZXRyaWNzLCBjb25zdCBMZWdhY3lJbmxpbmVUZXh0Qm94KiBpbmxpbmVUZXh0Qm94LCBmbG9h
dCBkZWZhdWx0R2FwKQorZmxvYXQgY29tcHV0ZVVuZGVybGluZU9mZnNldChUZXh0VW5kZXJsaW5l
UG9zaXRpb24gdW5kZXJsaW5lUG9zaXRpb24sIFRleHRVbmRlcmxpbmVPZmZzZXQgdW5kZXJsaW5l
T2Zmc2V0LCBjb25zdCBGb250TWV0cmljcyYgZm9udE1ldHJpY3MsIGNvbnN0IExheW91dEludGVn
cmF0aW9uOjpUZXh0UnVuSXRlcmF0b3ImIHRleHRSdW4sIGZsb2F0IGRlZmF1bHRHYXApCiB7CiAg
ICAgLy8gVGhpcyByZXByZXNlbnRzIHRoZSBnYXAgYmV0d2VlbiB0aGUgYmFzZWxpbmUgYW5kIHRo
ZSBjbG9zZXN0IGVkZ2Ugb2YgdGhlIHVuZGVybGluZS4KICAgICBmbG9hdCBnYXAgPSBzdGQ6Om1h
eDxpbnQ+KDEsIHN0ZDo6Y2VpbChkZWZhdWx0R2FwIC8gMi4wZikpOwpAQCAtNTAsOCArOTgsOCBA
QCBmbG9hdCBjb21wdXRlVW5kZXJsaW5lT2Zmc2V0KFRleHRVbmRlcmxpbmVQb3NpdGlvbiB1bmRl
cmxpbmVQb3NpdGlvbiwgVGV4dFVuZGVybAogICAgIAogICAgIGF1dG8gcmVzb2x2ZWRVbmRlcmxp
bmVQb3NpdGlvbiA9IHVuZGVybGluZVBvc2l0aW9uOwogICAgIGlmIChyZXNvbHZlZFVuZGVybGlu
ZVBvc2l0aW9uID09IFRleHRVbmRlcmxpbmVQb3NpdGlvbjo6QXV0byAmJiB1bmRlcmxpbmVPZmZz
ZXQuaXNBdXRvKCkpIHsKLSAgICAgICAgaWYgKGlubGluZVRleHRCb3gpCi0gICAgICAgICAgICBy
ZXNvbHZlZFVuZGVybGluZVBvc2l0aW9uID0gaW5saW5lVGV4dEJveC0+cm9vdCgpLmJhc2VsaW5l
VHlwZSgpID09IElkZW9ncmFwaGljQmFzZWxpbmUgPyBUZXh0VW5kZXJsaW5lUG9zaXRpb246OlVu
ZGVyIDogVGV4dFVuZGVybGluZVBvc2l0aW9uOjpBdXRvOworICAgICAgICBpZiAodGV4dFJ1bikK
KyAgICAgICAgICAgIHJlc29sdmVkVW5kZXJsaW5lUG9zaXRpb24gPSB0ZXh0UnVuLmxpbmUoKS0+
YmFzZWxpbmVUeXBlKCkgPT0gSWRlb2dyYXBoaWNCYXNlbGluZSA/IFRleHRVbmRlcmxpbmVQb3Np
dGlvbjo6VW5kZXIgOiBUZXh0VW5kZXJsaW5lUG9zaXRpb246OkF1dG87CiAgICAgICAgIGVsc2UK
ICAgICAgICAgICAgIHJlc29sdmVkVW5kZXJsaW5lUG9zaXRpb24gPSBUZXh0VW5kZXJsaW5lUG9z
aXRpb246OkF1dG87CiAgICAgfQpAQCAtNjQsMjIgKzExMiwyMiBAQCBmbG9hdCBjb21wdXRlVW5k
ZXJsaW5lT2Zmc2V0KFRleHRVbmRlcmxpbmVQb3NpdGlvbiB1bmRlcmxpbmVQb3NpdGlvbiwgVGV4
dFVuZGVybAogICAgIGNhc2UgVGV4dFVuZGVybGluZVBvc2l0aW9uOjpGcm9tRm9udDoKICAgICAg
ICAgcmV0dXJuIGZvbnRNZXRyaWNzLmFzY2VudCgpICsgZm9udE1ldHJpY3MudW5kZXJsaW5lUG9z
aXRpb24oKSArIHVuZGVybGluZU9mZnNldC5sZW5ndGhPcigwKTsKICAgICBjYXNlIFRleHRVbmRl
cmxpbmVQb3NpdGlvbjo6VW5kZXI6IHsKLSAgICAgICAgQVNTRVJUKGlubGluZVRleHRCb3gpOwor
ICAgICAgICBBU1NFUlQodGV4dFJ1bik7CiAgICAgICAgIC8vIFBvc2l0aW9uIHVuZGVybGluZSBy
ZWxhdGl2ZSB0byB0aGUgYm90dG9tIGVkZ2Ugb2YgdGhlIGxvd2VzdCBlbGVtZW50J3MgY29udGVu
dCBib3guCi0gICAgICAgIGNvbnN0IExlZ2FjeVJvb3RJbmxpbmVCb3gmIHJvb3RCb3ggPSBpbmxp
bmVUZXh0Qm94LT5yb290KCk7Ci0gICAgICAgIGNvbnN0IFJlbmRlckVsZW1lbnQqIGRlY29yYXRp
b25SZW5kZXJlciA9IGlubGluZVRleHRCb3gtPnBhcmVudCgpLT5yZW5kZXJlcigpLmVuY2xvc2lu
Z1JlbmRlcmVyV2l0aFRleHREZWNvcmF0aW9uKFRleHREZWNvcmF0aW9uOjpVbmRlcmxpbmUsIGlu
bGluZVRleHRCb3gtPmlzRmlyc3RMaW5lKCkpOworICAgICAgICBhdXRvIGxpbmUgPSB0ZXh0UnVu
LmxpbmUoKTsKKyAgICAgICAgYXV0byogZGVjb3JhdGlvblJlbmRlcmVyID0gdGV4dFJ1bi0+cmVu
ZGVyZXIoKS5wYXJlbnQoKS0+ZW5jbG9zaW5nUmVuZGVyZXJXaXRoVGV4dERlY29yYXRpb24oVGV4
dERlY29yYXRpb246OlVuZGVybGluZSwgbGluZS5pc0ZpcnN0KCkpOwogICAgICAgICAKICAgICAg
ICAgZmxvYXQgb2Zmc2V0OwotICAgICAgICBpZiAoaW5saW5lVGV4dEJveC0+cmVuZGVyZXIoKS5z
dHlsZSgpLmlzRmxpcHBlZExpbmVzV3JpdGluZ01vZGUoKSkgewotICAgICAgICAgICAgb2Zmc2V0
ID0gaW5saW5lVGV4dEJveC0+bG9naWNhbFRvcCgpOwotICAgICAgICAgICAgcm9vdEJveC5taW5M
b2dpY2FsVG9wRm9yVGV4dERlY29yYXRpb25MaW5lKG9mZnNldCwgZGVjb3JhdGlvblJlbmRlcmVy
LCBUZXh0RGVjb3JhdGlvbjo6VW5kZXJsaW5lKTsKLSAgICAgICAgICAgIG9mZnNldCA9IGlubGlu
ZVRleHRCb3gtPmxvZ2ljYWxUb3AoKSAtIG9mZnNldDsKKyAgICAgICAgaWYgKHRleHRSdW4tPnJl
bmRlcmVyKCkuc3R5bGUoKS5pc0ZsaXBwZWRMaW5lc1dyaXRpbmdNb2RlKCkpIHsKKyAgICAgICAg
ICAgIG9mZnNldCA9IHRleHRSdW4tPmxvZ2ljYWxUb3AoKTsKKyAgICAgICAgICAgIG1pbkxvZ2lj
YWxUb3BGb3JUZXh0RGVjb3JhdGlvbkxpbmUobGluZSwgb2Zmc2V0LCBkZWNvcmF0aW9uUmVuZGVy
ZXIsIFRleHREZWNvcmF0aW9uOjpVbmRlcmxpbmUpOworICAgICAgICAgICAgb2Zmc2V0ID0gdGV4
dFJ1bi0+bG9naWNhbFRvcCgpIC0gb2Zmc2V0OwogICAgICAgICB9IGVsc2UgewotICAgICAgICAg
ICAgb2Zmc2V0ID0gaW5saW5lVGV4dEJveC0+bG9naWNhbEJvdHRvbSgpOwotICAgICAgICAgICAg
cm9vdEJveC5tYXhMb2dpY2FsQm90dG9tRm9yVGV4dERlY29yYXRpb25MaW5lKG9mZnNldCwgZGVj
b3JhdGlvblJlbmRlcmVyLCBUZXh0RGVjb3JhdGlvbjo6VW5kZXJsaW5lKTsKLSAgICAgICAgICAg
IG9mZnNldCAtPSBpbmxpbmVUZXh0Qm94LT5sb2dpY2FsQm90dG9tKCk7CisgICAgICAgICAgICBv
ZmZzZXQgPSB0ZXh0UnVuLT5sb2dpY2FsQm90dG9tKCk7CisgICAgICAgICAgICBtYXhMb2dpY2Fs
Qm90dG9tRm9yVGV4dERlY29yYXRpb25MaW5lKGxpbmUsIG9mZnNldCwgZGVjb3JhdGlvblJlbmRl
cmVyLCBUZXh0RGVjb3JhdGlvbjo6VW5kZXJsaW5lKTsKKyAgICAgICAgICAgIG9mZnNldCAtPSB0
ZXh0UnVuLT5sb2dpY2FsQm90dG9tKCk7CiAgICAgICAgIH0KLSAgICAgICAgYXV0byBkZXNpcmVk
T2Zmc2V0ID0gaW5saW5lVGV4dEJveC0+bG9naWNhbEhlaWdodCgpICsgZ2FwICsgc3RkOjptYXgo
b2Zmc2V0LCAwLjBmKSArIHVuZGVybGluZU9mZnNldC5sZW5ndGhPcigwKTsKKyAgICAgICAgYXV0
byBkZXNpcmVkT2Zmc2V0ID0gdGV4dFJ1bi0+bG9naWNhbEhlaWdodCgpICsgZ2FwICsgc3RkOjpt
YXgob2Zmc2V0LCAwLjBmKSArIHVuZGVybGluZU9mZnNldC5sZW5ndGhPcigwKTsKICAgICAgICAg
cmV0dXJuIHN0ZDo6bWF4PGZsb2F0PihkZXNpcmVkT2Zmc2V0LCBmb250TWV0cmljcy5hc2NlbnQo
KSk7CiAgICAgfQogICAgIH0KQEAgLTk3LDkgKzE0NSw5IEBAIFdhdnlTdHJva2VQYXJhbWV0ZXJz
IGdldFdhdnlTdHJva2VQYXJhbWV0ZXJzKGZsb2F0IGZvbnRTaXplKQogICAgIHJldHVybiByZXN1
bHQ7CiB9CiAKLUdseXBoT3ZlcmZsb3cgdmlzdWFsT3ZlcmZsb3dGb3JEZWNvcmF0aW9ucyhjb25z
dCBSZW5kZXJTdHlsZSYgbGluZVN0eWxlLCBjb25zdCBMZWdhY3lJbmxpbmVUZXh0Qm94KiBpbmxp
bmVUZXh0Qm94KQorR2x5cGhPdmVyZmxvdyB2aXN1YWxPdmVyZmxvd0ZvckRlY29yYXRpb25zKGNv
bnN0IFJlbmRlclN0eWxlJiBsaW5lU3R5bGUsIGNvbnN0IExheW91dEludGVncmF0aW9uOjpUZXh0
UnVuSXRlcmF0b3ImIHRleHRSdW4pCiB7Ci0gICAgQVNTRVJUKCFpbmxpbmVUZXh0Qm94IHx8IGlu
bGluZVRleHRCb3gtPmxpbmVTdHlsZSgpID09IGxpbmVTdHlsZSk7CisgICAgQVNTRVJUKCF0ZXh0
UnVuIHx8IHRleHRSdW4tPnN0eWxlKCkgPT0gbGluZVN0eWxlKTsKICAgICAKICAgICBhdXRvIGRl
Y29yYXRpb24gPSBsaW5lU3R5bGUudGV4dERlY29yYXRpb25zSW5FZmZlY3QoKTsKICAgICBpZiAo
ZGVjb3JhdGlvbi5pc0VtcHR5KCkpCkBAIC0xMjcsNyArMTc1LDcgQEAgR2x5cGhPdmVyZmxvdyB2
aXN1YWxPdmVyZmxvd0ZvckRlY29yYXRpb25zKGNvbnN0IFJlbmRlclN0eWxlJiBsaW5lU3R5bGUs
IGNvbnN0IEwKICAgICAgICAgaW50IHVuZGVybGluZU9mZnNldCA9IDE7CiAgICAgICAgIGZsb2F0
IHRleHREZWNvcmF0aW9uQmFzZUZvbnRTaXplID0gMTY7CiAgICAgICAgIGF1dG8gZGVmYXVsdEdh
cCA9IGxpbmVTdHlsZS5jb21wdXRlZEZvbnRTaXplKCkgLyB0ZXh0RGVjb3JhdGlvbkJhc2VGb250
U2l6ZTsKLSAgICAgICAgdW5kZXJsaW5lT2Zmc2V0ICs9IGNvbXB1dGVVbmRlcmxpbmVPZmZzZXQo
bGluZVN0eWxlLnRleHRVbmRlcmxpbmVQb3NpdGlvbigpLCBsaW5lU3R5bGUudGV4dFVuZGVybGlu
ZU9mZnNldCgpLCBsaW5lU3R5bGUuZm9udE1ldHJpY3MoKSwgaW5saW5lVGV4dEJveCwgZGVmYXVs
dEdhcCk7CisgICAgICAgIHVuZGVybGluZU9mZnNldCArPSBjb21wdXRlVW5kZXJsaW5lT2Zmc2V0
KGxpbmVTdHlsZS50ZXh0VW5kZXJsaW5lUG9zaXRpb24oKSwgbGluZVN0eWxlLnRleHRVbmRlcmxp
bmVPZmZzZXQoKSwgbGluZVN0eWxlLmZvbnRNZXRyaWNzKCksIHRleHRSdW4sIGRlZmF1bHRHYXAp
OwogICAgICAgICBpZiAoZGVjb3JhdGlvblN0eWxlID09IFRleHREZWNvcmF0aW9uU3R5bGU6Oldh
dnkpIHsKICAgICAgICAgICAgIG92ZXJmbG93UmVzdWx0LmV4dGVuZEJvdHRvbSh1bmRlcmxpbmVP
ZmZzZXQgKyB3YXZ5T2Zmc2V0ICsgd2F2eVN0cm9rZVBhcmFtZXRlcnMuY29udHJvbFBvaW50RGlz
dGFuY2UgKyBzdHJva2VUaGlja25lc3MgLSBoZWlnaHQpOwogICAgICAgICAgICAgb3ZlcmZsb3dS
ZXN1bHQuZXh0ZW5kVG9wKC0odW5kZXJsaW5lT2Zmc2V0ICsgd2F2eU9mZnNldCAtIHdhdnlTdHJv
a2VQYXJhbWV0ZXJzLmNvbnRyb2xQb2ludERpc3RhbmNlIC0gc3Ryb2tlVGhpY2tuZXNzKSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9JbmxpbmVUZXh0Qm94U3R5bGUuaCBiL1Nv
dXJjZS9XZWJDb3JlL3N0eWxlL0lubGluZVRleHRCb3hTdHlsZS5oCmluZGV4IGE5YjA0NGNkMmFl
NS4uMDM2ZGYxYzM2ODQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9JbmxpbmVU
ZXh0Qm94U3R5bGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9JbmxpbmVUZXh0Qm94U3R5
bGUuaApAQCAtMjYsNiArMjYsNyBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJGb250Q2Fz
Y2FkZS5oIgorI2luY2x1ZGUgIkxheW91dEludGVncmF0aW9uUnVuSXRlcmF0b3IuaCIKICNpbmNs
dWRlICJSZW5kZXJTdHlsZUNvbnN0YW50cy5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC01
MSw3ICs1Miw3IEBAIHN0cnVjdCBXYXZ5U3Ryb2tlUGFyYW1ldGVycyB7CiAgICAgZmxvYXQgc3Rl
cCB7IDAgfTsKIH07CiBXYXZ5U3Ryb2tlUGFyYW1ldGVycyBnZXRXYXZ5U3Ryb2tlUGFyYW1ldGVy
cyhmbG9hdCBmb250U2l6ZSk7Ci1HbHlwaE92ZXJmbG93IHZpc3VhbE92ZXJmbG93Rm9yRGVjb3Jh
dGlvbnMoY29uc3QgUmVuZGVyU3R5bGUmIGxpbmVTdHlsZSwgY29uc3QgTGVnYWN5SW5saW5lVGV4
dEJveCopOwotZmxvYXQgY29tcHV0ZVVuZGVybGluZU9mZnNldChUZXh0VW5kZXJsaW5lUG9zaXRp
b24sIFRleHRVbmRlcmxpbmVPZmZzZXQsIGNvbnN0IEZvbnRNZXRyaWNzJiwgY29uc3QgTGVnYWN5
SW5saW5lVGV4dEJveCosIGZsb2F0IHRleHREZWNvcmF0aW9uVGhpY2tuZXNzKTsKK0dseXBoT3Zl
cmZsb3cgdmlzdWFsT3ZlcmZsb3dGb3JEZWNvcmF0aW9ucyhjb25zdCBSZW5kZXJTdHlsZSYgbGlu
ZVN0eWxlLCBjb25zdCBMYXlvdXRJbnRlZ3JhdGlvbjo6VGV4dFJ1bkl0ZXJhdG9yJik7CitmbG9h
dCBjb21wdXRlVW5kZXJsaW5lT2Zmc2V0KFRleHRVbmRlcmxpbmVQb3NpdGlvbiwgVGV4dFVuZGVy
bGluZU9mZnNldCwgY29uc3QgRm9udE1ldHJpY3MmLCBjb25zdCBMYXlvdXRJbnRlZ3JhdGlvbjo6
VGV4dFJ1bkl0ZXJhdG9yJiwgZmxvYXQgdGV4dERlY29yYXRpb25UaGlja25lc3MpOwogICAgIAog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>434973</attachid>
            <date>2021-08-05 02:30:45 -0700</date>
            <delta_ts>2021-08-19 09:09:03 -0700</delta_ts>
            <desc>patch</desc>
            <filename>textdecoration-iterator-2.patch</filename>
            <type>text/plain</type>
            <size>36123</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBkM2M2NTk5MzUyOGQuLjExMzJjNzRmMzYwNSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBA
CisyMDIxLTA4LTA1ICBBbnR0aSBLb2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KKworICAgICAg
ICBUZXh0RGVjb3JhdGlvblBhaW50ZXIgc2hvdWxkIG5vdCBkZXBlbmQgb24gTGVnYWN5SW5saW5l
VGV4dEJveAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjI4ODE0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
Rml4IHRoZSBleHBlY3RlZCByZXN1bHRzIHRvIG5vdCBkZXBlbmQgb24gaW5saW5lIGN1bGxpbmcg
KHdoaWNoIHRoaXMgcGF0Y2ggaWdub3JlcykuCisKKyAgICAgICAgKiBmYXN0L3RleHQvdGV4dC11
bmRlcmxpbmUtZmlyc3QtbGluZS1kZWNvcmF0aW9uLWV4cGVjdGVkLmh0bWw6CisgICAgICAgICog
ZmFzdC90ZXh0L3RleHQtdW5kZXJsaW5lLXZlcnRpY2FsLWZpcnN0LWxpbmUtZGVjb3JhdGlvbi1l
eHBlY3RlZC5odG1sOgorCiAyMDIxLTA4LTAxICBGdWppaSBIaXJvbm9yaSAgPEhpcm9ub3JpLkZ1
amlpQHNvbnkuY29tPgogCiAgICAgICAgIFtXaW5DYWlyb10gVW5yZXZpZXdlZCB0ZXN0IGdhcmRl
bmluZwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC90ZXh0L3RleHQtdW5kZXJsaW5lLWZp
cnN0LWxpbmUtZGVjb3JhdGlvbi1leHBlY3RlZC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC90ZXh0
L3RleHQtdW5kZXJsaW5lLWZpcnN0LWxpbmUtZGVjb3JhdGlvbi1leHBlY3RlZC5odG1sCmluZGV4
IGI4Y2EzOTVhZTIxNS4uOWQxN2RmOGFhOWZhIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0
L3RleHQvdGV4dC11bmRlcmxpbmUtZmlyc3QtbGluZS1kZWNvcmF0aW9uLWV4cGVjdGVkLmh0bWwK
KysrIGIvTGF5b3V0VGVzdHMvZmFzdC90ZXh0L3RleHQtdW5kZXJsaW5lLWZpcnN0LWxpbmUtZGVj
b3JhdGlvbi1leHBlY3RlZC5odG1sCkBAIC04LDYgKzgsNiBAQAogPC9wPg0KIA0KIDxwIGNsYXNz
PSJkZWNvcmF0ZSIgc3R5bGU9ImZvbnQtc2l6ZToyNHB4OyBmbG9hdDpsZWZ0Oy13ZWJraXQtdGV4
dC11bmRlcmxpbmUtcG9zaXRpb246dW5kZXI7IGJvcmRlcjoxcHggZG90dGVkIG9yYW5nZSI+DQot
PHNwYW4gc3R5bGU9InRleHQtZGVjb3JhdGlvbjp1bmRlcmxpbmUiPlRoZSBmaXJzdCBsaW5lIDxz
cGFuIHN0eWxlPSJ2ZXJ0aWNhbC1hbGlnbjotMjBweCI+aGFzIGEgZGVjb3JhdGlvbiw8L3NwYW4+
IGJ1dCBub3QgPC9zcGFuPjxpbWcgc3R5bGU9InZlcnRpY2FsLWFsaWduOi0xMDBweDsgaGVpZ2h0
OjIwcHg7d2lkdGg6MjBweDtiYWNrZ3JvdW5kLWNvbG9yOmxpbWUiPjxzcGFuIHN0eWxlPSJ0ZXh0
LWRlY29yYXRpb246dW5kZXJsaW5lIj4gdW5kZXIgdGhlIGltYWdlLjwvc3Bhbj48YnI+DQorPHNw
YW4gc3R5bGU9InRleHQtZGVjb3JhdGlvbjp1bmRlcmxpbmUiPlRoZSBmaXJzdCBsaW5lIDxzcGFu
IHN0eWxlPSJ2ZXJ0aWNhbC1hbGlnbjotMjBweCI+aGFzIGEgZGVjb3JhdGlvbiw8L3NwYW4+IGJ1
dCBub3QgPC9zcGFuPjxpbWcgc3R5bGU9InZlcnRpY2FsLWFsaWduOi0xMDBweDsgaGVpZ2h0OjIw
cHg7d2lkdGg6MjBweDtiYWNrZ3JvdW5kLWNvbG9yOmxpbWUiPjxzcGFuIHN0eWxlPSJ0ZXh0LWRl
Y29yYXRpb246dW5kZXJsaW5lIj4gdW5kZXIgdGhlIGltYWdlLjxzcGFuIHN0eWxlPSJ2ZXJ0aWNh
bC1hbGlnbjotMjBweCI+Jlplcm9XaWR0aFNwYWNlOzwvc3Bhbj48L3NwYW4+PGJyPg0KIFRoZSBz
ZWNvbmQgbGluZSBzaG91bGQgbm90Lg0KIDwvcD4NCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9m
YXN0L3RleHQvdGV4dC11bmRlcmxpbmUtdmVydGljYWwtZmlyc3QtbGluZS1kZWNvcmF0aW9uLWV4
cGVjdGVkLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L3RleHQvdGV4dC11bmRlcmxpbmUtdmVydGlj
YWwtZmlyc3QtbGluZS1kZWNvcmF0aW9uLWV4cGVjdGVkLmh0bWwKaW5kZXggMDVlZWJlNDVjOTU1
Li5hOWJhYWI5ZGRhMzYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvdGV4dC90ZXh0LXVu
ZGVybGluZS12ZXJ0aWNhbC1maXJzdC1saW5lLWRlY29yYXRpb24tZXhwZWN0ZWQuaHRtbAorKysg
Yi9MYXlvdXRUZXN0cy9mYXN0L3RleHQvdGV4dC11bmRlcmxpbmUtdmVydGljYWwtZmlyc3QtbGlu
ZS1kZWNvcmF0aW9uLWV4cGVjdGVkLmh0bWwKQEAgLTgsMTEgKzgsMTEgQEAKIDwvcD4NCiANCiA8
cCBjbGFzcz0iZGVjb3JhdGUiIHN0eWxlPSItd2Via2l0LXdyaXRpbmctbW9kZTp2ZXJ0aWNhbC1s
cjsgbWFyZ2luLXJpZ2h0OjEwcHg7IGZvbnQtc2l6ZToyNHB4OyBmbG9hdDpsZWZ0Oy13ZWJraXQt
dGV4dC11bmRlcmxpbmUtcG9zaXRpb246dW5kZXI7IGJvcmRlcjoxcHggZG90dGVkIG9yYW5nZSI+
DQotPHNwYW4gc3R5bGU9InRleHQtZGVjb3JhdGlvbjp1bmRlcmxpbmUiPlRoZSBmaXJzdCBsaW5l
IDxzcGFuIHN0eWxlPSJ2ZXJ0aWNhbC1hbGlnbjotMjBweCI+aGFzIGEgZGVjb3JhdGlvbiw8L3Nw
YW4+IGJ1dCBub3QgPC9zcGFuPjxpbWcgc3R5bGU9InZlcnRpY2FsLWFsaWduOi0xMDBweDsgaGVp
Z2h0OjIwcHg7d2lkdGg6MjBweDtiYWNrZ3JvdW5kLWNvbG9yOmxpbWUiPjxzcGFuIHN0eWxlPSJ0
ZXh0LWRlY29yYXRpb246dW5kZXJsaW5lIj4gdW5kZXIgdGhlIGltYWdlLjwvc3Bhbj48YnI+DQor
PHNwYW4gc3R5bGU9InRleHQtZGVjb3JhdGlvbjp1bmRlcmxpbmUiPlRoZSBmaXJzdCBsaW5lIDxz
cGFuIHN0eWxlPSJ2ZXJ0aWNhbC1hbGlnbjotMjBweCI+aGFzIGEgZGVjb3JhdGlvbiw8L3NwYW4+
IGJ1dCBub3QgPC9zcGFuPjxpbWcgc3R5bGU9InZlcnRpY2FsLWFsaWduOi0xMDBweDsgaGVpZ2h0
OjIwcHg7d2lkdGg6MjBweDtiYWNrZ3JvdW5kLWNvbG9yOmxpbWUiPjxzcGFuIHN0eWxlPSJ0ZXh0
LWRlY29yYXRpb246dW5kZXJsaW5lIj4gdW5kZXIgdGhlIGltYWdlLjxzcGFuIHN0eWxlPSJ2ZXJ0
aWNhbC1hbGlnbjotMjBweCI+Jlplcm9XaWR0aFNwYWNlOzwvc3Bhbj48L3NwYW4+PGJyPg0KIFRo
ZSBzZWNvbmQgbGluZSBzaG91bGQgbm90Lg0KIDwvcD4NCiANCiA8cCBjbGFzcz0iZGVjb3JhdGUi
IHN0eWxlPSItd2Via2l0LXdyaXRpbmctbW9kZTp2ZXJ0aWNhbC1ybDsgbWFyZ2luLXJpZ2h0OjEw
cHg7IGZvbnQtc2l6ZToyNHB4OyBmbG9hdDpsZWZ0Oy13ZWJraXQtdGV4dC11bmRlcmxpbmUtcG9z
aXRpb246dW5kZXI7IGJvcmRlcjoxcHggZG90dGVkIG9yYW5nZSI+DQotPHNwYW4gc3R5bGU9InRl
eHQtZGVjb3JhdGlvbjp1bmRlcmxpbmUiPlRoZSBmaXJzdCBsaW5lIDxzcGFuIHN0eWxlPSJ2ZXJ0
aWNhbC1hbGlnbjotMjBweCI+aGFzIGEgZGVjb3JhdGlvbiw8L3NwYW4+IGJ1dCBub3QgPC9zcGFu
PjxpbWcgc3R5bGU9InZlcnRpY2FsLWFsaWduOi0xMDBweDsgaGVpZ2h0OjIwcHg7d2lkdGg6MjBw
eDtiYWNrZ3JvdW5kLWNvbG9yOmxpbWUiPjxzcGFuIHN0eWxlPSJ0ZXh0LWRlY29yYXRpb246dW5k
ZXJsaW5lIj4gdW5kZXIgdGhlIGltYWdlLjwvc3Bhbj48YnI+DQorPHNwYW4gc3R5bGU9InRleHQt
ZGVjb3JhdGlvbjp1bmRlcmxpbmUiPlRoZSBmaXJzdCBsaW5lIDxzcGFuIHN0eWxlPSJ2ZXJ0aWNh
bC1hbGlnbjotMjBweCI+aGFzIGEgZGVjb3JhdGlvbiw8L3NwYW4+IGJ1dCBub3QgPC9zcGFuPjxp
bWcgc3R5bGU9InZlcnRpY2FsLWFsaWduOi0xMDBweDsgaGVpZ2h0OjIwcHg7d2lkdGg6MjBweDti
YWNrZ3JvdW5kLWNvbG9yOmxpbWUiPjxzcGFuIHN0eWxlPSJ0ZXh0LWRlY29yYXRpb246dW5kZXJs
aW5lIj4gdW5kZXIgdGhlIGltYWdlLjxzcGFuIHN0eWxlPSJ2ZXJ0aWNhbC1hbGlnbjotMjBweCI+
Jlplcm9XaWR0aFNwYWNlOzwvc3Bhbj48L3NwYW4+PGJyPg0KIFRoZSBzZWNvbmQgbGluZSBzaG91
bGQgbm90Lg0KIDwvcD4NCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9T
b3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzI5ZTc2NzQ4NmVlLi5iZjRhNjg4MGQ2MTQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw2MCBAQAorMjAyMS0wOC0wNSAgQW50dGkgS29pdmlzdG8g
IDxhbnR0aUBhcHBsZS5jb20+CisKKyAgICAgICAgVGV4dERlY29yYXRpb25QYWludGVyIHNob3Vs
ZCBub3QgZGVwZW5kIG9uIExlZ2FjeUlubGluZVRleHRCb3gKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyODgxNAorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVzZSB0aGUgaW5saW5lIGl0ZXJhdG9yIGluc3Rl
YWQuCisKKyAgICAgICAgKiBsYXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRpb25MaW5l
SXRlcmF0b3IuaDoKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dEludGVncmF0aW9uOjpMaW5lSXRl
cmF0b3I6OmlzRmlyc3QgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0SW50ZWdyYXRp
b246OlBhdGhMaW5lOjpiYXNlbGluZVR5cGUgY29uc3QpOgorICAgICAgICAqIGxheW91dC9pbnRl
Z3JhdGlvbi9MYXlvdXRJbnRlZ3JhdGlvbkxpbmVJdGVyYXRvckxlZ2FjeVBhdGguaDoKKyAgICAg
ICAgKFdlYkNvcmU6OkxheW91dEludGVncmF0aW9uOjpMaW5lSXRlcmF0b3JMZWdhY3lQYXRoOjpi
YXNlbGluZVR5cGUgY29uc3QpOgorICAgICAgICAqIGxheW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJ
bnRlZ3JhdGlvbkxpbmVJdGVyYXRvck1vZGVyblBhdGguaDoKKyAgICAgICAgKFdlYkNvcmU6Okxh
eW91dEludGVncmF0aW9uOjpMaW5lSXRlcmF0b3JNb2Rlcm5QYXRoOjpiYXNlbGluZVR5cGUgY29u
c3QpOgorICAgICAgICAqIGxheW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3JhdGlvblJ1bkl0
ZXJhdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dEludGVncmF0aW9uOjpSdW5JdGVy
YXRvcjo6bGluZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXRJbnRlZ3JhdGlvbjo6
UGF0aFJ1bjo6bGluZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXRJbnRlZ3JhdGlv
bjo6UGF0aFJ1bjo6c3R5bGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0SW50ZWdy
YXRpb246OnRleHRSdW5Gb3IpOgorICAgICAgICAqIGxheW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJ
bnRlZ3JhdGlvblJ1bkl0ZXJhdG9yLmg6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXRJbnRlZ3Jh
dGlvbjo6UGF0aFRleHRSdW46OnJlbmRlcmVyIGNvbnN0KToKKyAgICAgICAgKiBsYXlvdXQvaW50
ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRpb25SdW5JdGVyYXRvck1vZGVyblBhdGguaDoKKyAgICAg
ICAgKiByZW5kZXJpbmcvTGVnYWN5SW5saW5lRmxvd0JveC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpMZWdhY3lJbmxpbmVGbG93Qm94OjptYXhMb2dpY2FsQm90dG9tRm9yVGV4dERlY29yYXRpb25M
aW5lIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeUlubGluZUZsb3dC
b3g6Om1pbkxvZ2ljYWxUb3BGb3JUZXh0RGVjb3JhdGlvbkxpbmUgY29uc3QpOiBEZWxldGVkLgor
ICAgICAgICAqIHJlbmRlcmluZy9MZWdhY3lJbmxpbmVGbG93Qm94Lmg6CisgICAgICAgICogcmVu
ZGVyaW5nL0xlZ2FjeUlubGluZVRleHRCb3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5
SW5saW5lVGV4dEJveDo6cGFpbnRNYXJrZWRUZXh0RGVjb3JhdGlvbik6CisgICAgICAgICogcmVu
ZGVyaW5nL0xlZ2FjeUxpbmVMYXlvdXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6c2V0TG9naWNh
bFdpZHRoRm9yVGV4dFJ1bik6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckVsZW1lbnQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRWxlbWVudDo6ZW5jbG9zaW5nUmVuZGVyZXJXaXRo
VGV4dERlY29yYXRpb24gY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIHJlbmRlcmluZy9SZW5k
ZXJFbGVtZW50Lmg6CisgICAgICAgICogcmVuZGVyaW5nL1RleHREZWNvcmF0aW9uUGFpbnRlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0RGVjb3JhdGlvblBhaW50ZXI6OnBhaW50VGV4dERl
Y29yYXRpb24pOgorICAgICAgICAqIHJlbmRlcmluZy9UZXh0RGVjb3JhdGlvblBhaW50ZXIuaDoK
KyAgICAgICAgKFdlYkNvcmU6OlRleHREZWNvcmF0aW9uUGFpbnRlcjo6c2V0VGV4dFJ1bkl0ZXJh
dG9yKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHREZWNvcmF0aW9uUGFpbnRlcjo6c2V0SW5saW5l
VGV4dEJveCk6IERlbGV0ZWQuCisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjpjaGFuZ2VBZmZlY3RzVmlzdWFs
T3ZlcmZsb3cgY29uc3QpOgorICAgICAgICAqIHN0eWxlL0lubGluZVRleHRCb3hTdHlsZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjppc0FuY2VzdG9yQW5kV2l0aGluQmxvY2spOgorICAgICAgICAo
V2ViQ29yZTo6bWluTG9naWNhbFRvcEZvclRleHREZWNvcmF0aW9uTGluZSk6CisgICAgICAgIChX
ZWJDb3JlOjptYXhMb2dpY2FsQm90dG9tRm9yVGV4dERlY29yYXRpb25MaW5lKToKKworICAgICAg
ICBNb3ZlZCBmcm9tIExlZ2FjeUlubGluZUZsb3dCb3guCisKKyAgICAgICAgKFdlYkNvcmU6OmVu
Y2xvc2luZ1JlbmRlcmVyV2l0aFRleHREZWNvcmF0aW9uKToKKworICAgICAgICBNb3ZlZCBmcm9t
IFJlbmRlckVsZW1lbnQuCisKKyAgICAgICAgKFdlYkNvcmU6OmNvbXB1dGVVbmRlcmxpbmVPZmZz
ZXQpOgorICAgICAgICAoV2ViQ29yZTo6dmlzdWFsT3ZlcmZsb3dGb3JEZWNvcmF0aW9ucyk6Cisg
ICAgICAgICogc3R5bGUvSW5saW5lVGV4dEJveFN0eWxlLmg6CisKIDIwMjEtMDgtMDIgIE1hcnRp
biBSb2JpbnNvbiAgPG1yb2JpbnNvbkB3ZWJraXQub3JnPgogCiAgICAgICAgIFtjc3Mtc2Nyb2xs
LXNuYXBdIENvbnNpZGVyIGFsbCBzbmFwIGFyZWFzIGF0IGEgZ2l2ZW4gc25hcCBvZmZzZXQgd2hl
biBzbmFwcGluZwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9u
L0xheW91dEludGVncmF0aW9uTGluZUl0ZXJhdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQv
aW50ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRpb25MaW5lSXRlcmF0b3IuaAppbmRleCA4ZWI0NDE1
MmI4OWIuLjhiYzFhMmI2Mzc1OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lu
dGVncmF0aW9uL0xheW91dEludGVncmF0aW9uTGluZUl0ZXJhdG9yLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0xheW91dEludGVncmF0aW9uTGluZUl0ZXJhdG9yLmgK
QEAgLTI1LDYgKzI1LDcgQEAKIAogI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRlICJGb250QmFzZWxp
bmUuaCIKICNpbmNsdWRlICJMYXlvdXRJbnRlZ3JhdGlvbkxpbmVJdGVyYXRvckxlZ2FjeVBhdGgu
aCIKICNpbmNsdWRlICJMYXlvdXRJbnRlZ3JhdGlvbkxpbmVJdGVyYXRvck1vZGVyblBhdGguaCIK
ICNpbmNsdWRlIDx3dGYvVmFyaWFudC5oPgpAQCAtNzAsNiArNzEsOCBAQCBwdWJsaWM6CiAKICAg
ICBib29sIGlzSG9yaXpvbnRhbCgpIGNvbnN0OwogCisgICAgRm9udEJhc2VsaW5lIGJhc2VsaW5l
VHlwZSgpIGNvbnN0OworCiAgICAgY29uc3QgUmVuZGVyQmxvY2tGbG93JiBjb250YWluaW5nQmxv
Y2soKSBjb25zdDsKICAgICBjb25zdCBMZWdhY3lSb290SW5saW5lQm94KiBsZWdhY3lSb290SW5s
aW5lQm94KCkgY29uc3Q7CiAKQEAgLTkyLDYgKzk1LDggQEAgcHVibGljOgogICAgIExpbmVJdGVy
YXRvciBuZXh0KCkgY29uc3Q7CiAgICAgTGluZUl0ZXJhdG9yIHByZXZpb3VzKCkgY29uc3Q7CiAK
KyAgICBib29sIGlzRmlyc3QoKSBjb25zdCB7IHJldHVybiAhcHJldmlvdXMoKTsgfQorCiAgICAg
ZXhwbGljaXQgb3BlcmF0b3IgYm9vbCgpIGNvbnN0IHsgcmV0dXJuICFhdEVuZCgpOyB9CiAKICAg
ICBib29sIG9wZXJhdG9yPT0oY29uc3QgTGluZUl0ZXJhdG9yJikgY29uc3Q7CkBAIC0yMjQsNiAr
MjI5LDEzIEBAIGlubGluZSBib29sIFBhdGhMaW5lOjppc0hvcml6b250YWwoKSBjb25zdAogICAg
IH0pOwogfQogCitpbmxpbmUgRm9udEJhc2VsaW5lIFBhdGhMaW5lOjpiYXNlbGluZVR5cGUoKSBj
b25zdAoreworICAgIHJldHVybiBXVEY6OnN3aXRjaE9uKG1fcGF0aFZhcmlhbnQsIFtdKGNvbnN0
IGF1dG8mIHBhdGgpIHsKKyAgICAgICAgcmV0dXJuIHBhdGguYmFzZWxpbmVUeXBlKCk7CisgICAg
fSk7Cit9CisKIGlubGluZSBjb25zdCBSZW5kZXJCbG9ja0Zsb3cmIFBhdGhMaW5lOjpjb250YWlu
aW5nQmxvY2soKSBjb25zdAogewogICAgIHJldHVybiBXVEY6OnN3aXRjaE9uKG1fcGF0aFZhcmlh
bnQsIFtdKGNvbnN0IGF1dG8mIHBhdGgpIC0+IGNvbnN0IFJlbmRlckJsb2NrRmxvdyYgewpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0xheW91dEludGVncmF0
aW9uTGluZUl0ZXJhdG9yTGVnYWN5UGF0aC5oIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVn
cmF0aW9uL0xheW91dEludGVncmF0aW9uTGluZUl0ZXJhdG9yTGVnYWN5UGF0aC5oCmluZGV4IGNl
MjAxY2M0M2VlZi4uMWRmN2MwZDJlYWYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlv
dXQvaW50ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRpb25MaW5lSXRlcmF0b3JMZWdhY3lQYXRoLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0xheW91dEludGVncmF0aW9u
TGluZUl0ZXJhdG9yTGVnYWN5UGF0aC5oCkBAIC01Nyw2ICs1Nyw3IEBAIHB1YmxpYzoKICAgICBm
bG9hdCBjb250ZW50TG9naWNhbFJpZ2h0KCkgY29uc3QgeyByZXR1cm4gbV9yb290SW5saW5lQm94
LT5sb2dpY2FsUmlnaHQoKTsgfQogICAgIGZsb2F0IGxvZ2ljYWxIZWlnaHQoKSBjb25zdCB7IHJl
dHVybiBtX3Jvb3RJbmxpbmVCb3gtPmxvZ2ljYWxIZWlnaHQoKTsgfQogICAgIGJvb2wgaXNIb3Jp
em9udGFsKCkgY29uc3QgeyByZXR1cm4gbV9yb290SW5saW5lQm94LT5pc0hvcml6b250YWwoKTsg
fQorICAgIEZvbnRCYXNlbGluZSBiYXNlbGluZVR5cGUoKSBjb25zdCB7IHJldHVybiBtX3Jvb3RJ
bmxpbmVCb3gtPmJhc2VsaW5lVHlwZSgpOyB9CiAKICAgICBjb25zdCBSZW5kZXJCbG9ja0Zsb3cm
IGNvbnRhaW5pbmdCbG9jaygpIGNvbnN0IHsgcmV0dXJuIG1fcm9vdElubGluZUJveC0+YmxvY2tG
bG93KCk7IH0KICAgICBjb25zdCBMZWdhY3lSb290SW5saW5lQm94KiBsZWdhY3lSb290SW5saW5l
Qm94KCkgY29uc3QgeyByZXR1cm4gbV9yb290SW5saW5lQm94OyB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRpb25MaW5lSXRlcmF0
b3JNb2Rlcm5QYXRoLmggYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0
SW50ZWdyYXRpb25MaW5lSXRlcmF0b3JNb2Rlcm5QYXRoLmgKaW5kZXggZmE5M2EwNzYwMjVlLi45
ZjZjMWM3OTk0MDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlv
bi9MYXlvdXRJbnRlZ3JhdGlvbkxpbmVJdGVyYXRvck1vZGVyblBhdGguaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRpb25MaW5lSXRlcmF0b3JN
b2Rlcm5QYXRoLmgKQEAgLTY3LDYgKzY3LDcgQEAgcHVibGljOgogICAgIGZsb2F0IHkoKSBjb25z
dCB7IHJldHVybiBsaW5lQm94VG9wKCk7IH0KICAgICBmbG9hdCBsb2dpY2FsSGVpZ2h0KCkgY29u
c3QgeyByZXR1cm4gbGluZUJveEJvdHRvbSgpIC0gbGluZUJveFRvcCgpOyB9CiAgICAgYm9vbCBp
c0hvcml6b250YWwoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CisgICAgRm9udEJhc2VsaW5lIGJh
c2VsaW5lVHlwZSgpIGNvbnN0IHsgcmV0dXJuIEFscGhhYmV0aWNCYXNlbGluZTsgfQogCiAgICAg
Y29uc3QgUmVuZGVyQmxvY2tGbG93JiBjb250YWluaW5nQmxvY2soKSBjb25zdCB7IHJldHVybiBt
X2lubGluZUNvbnRlbnQtPmNvbnRhaW5pbmdCbG9jaygpOyB9CiAgICAgY29uc3QgTGVnYWN5Um9v
dElubGluZUJveCogbGVnYWN5Um9vdElubGluZUJveCgpIGNvbnN0IHsgcmV0dXJuIG51bGxwdHI7
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJ
bnRlZ3JhdGlvblJ1bkl0ZXJhdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3Jh
dGlvbi9MYXlvdXRJbnRlZ3JhdGlvblJ1bkl0ZXJhdG9yLmNwcAppbmRleCBhODdmY2U5MjE0ZmMu
Ljc2YjIyNDgxNTkzZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0
aW9uL0xheW91dEludGVncmF0aW9uUnVuSXRlcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2xheW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3JhdGlvblJ1bkl0ZXJhdG9yLmNwcApAQCAt
NzQsNyArNzQsMTIgQEAgUnVuSXRlcmF0b3IgUnVuSXRlcmF0b3I6OnByZXZpb3VzT25MaW5lSWdu
b3JpbmdMaW5lQnJlYWsoKSBjb25zdAogCiBMaW5lSXRlcmF0b3IgUnVuSXRlcmF0b3I6OmxpbmUo
KSBjb25zdAogewotICAgIHJldHVybiBXVEY6OnN3aXRjaE9uKG1fcnVuLm1fcGF0aFZhcmlhbnQs
IFtdKGNvbnN0IFJ1bkl0ZXJhdG9yTGVnYWN5UGF0aCYgcGF0aCkgeworICAgIHJldHVybiBtX3J1
bi5saW5lKCk7Cit9CisKK0xpbmVJdGVyYXRvciBQYXRoUnVuOjpsaW5lKCkgY29uc3QKK3sKKyAg
ICByZXR1cm4gV1RGOjpzd2l0Y2hPbihtX3BhdGhWYXJpYW50LCBbXShjb25zdCBSdW5JdGVyYXRv
ckxlZ2FjeVBhdGgmIHBhdGgpIHsKICAgICAgICAgcmV0dXJuIExpbmVJdGVyYXRvcihMaW5lSXRl
cmF0b3JMZWdhY3lQYXRoKCZwYXRoLnJvb3RJbmxpbmVCb3goKSkpOwogICAgIH0KICNpZiBFTkFC
TEUoTEFZT1VUX0ZPUk1BVFRJTkdfQ09OVEVYVCkKQEAgLTg1LDYgKzkwLDExIEBAIExpbmVJdGVy
YXRvciBSdW5JdGVyYXRvcjo6bGluZSgpIGNvbnN0CiAgICAgKTsKIH0KIAorY29uc3QgUmVuZGVy
U3R5bGUmIFBhdGhSdW46OnN0eWxlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbGluZSgpLmlzRmly
c3QoKSA/IHJlbmRlcmVyKCkuZmlyc3RMaW5lU3R5bGUoKSA6IHJlbmRlcmVyKCkuc3R5bGUoKTsK
K30KKwogVGV4dFJ1bkl0ZXJhdG9yOjpUZXh0UnVuSXRlcmF0b3IoUGF0aFJ1bjo6UGF0aFZhcmlh
bnQmJiBwYXRoVmFyaWFudCkKICAgICA6IFJ1bkl0ZXJhdG9yKFdURk1vdmUocGF0aFZhcmlhbnQp
KQogewpAQCAtMTgwLDYgKzE5MCwxMSBAQCBUZXh0UnVuSXRlcmF0b3IgZmlyc3RUZXh0UnVuSW5U
ZXh0T3JkZXJGb3IoY29uc3QgUmVuZGVyVGV4dCYgdGV4dCkKICAgICByZXR1cm4gZmlyc3RUZXh0
UnVuRm9yKHRleHQpOwogfQogCitUZXh0UnVuSXRlcmF0b3IgdGV4dFJ1bkZvcihjb25zdCBMZWdh
Y3lJbmxpbmVUZXh0Qm94KiBsZWdhY3lJbmxpbmVUZXh0Qm94KQoreworICAgIHJldHVybiB7IFJ1
bkl0ZXJhdG9yTGVnYWN5UGF0aCB7IGxlZ2FjeUlubGluZVRleHRCb3ggfSB9OworfQorCiBUZXh0
UnVuUmFuZ2UgdGV4dFJ1bnNGb3IoY29uc3QgUmVuZGVyVGV4dCYgdGV4dCkKIHsKICAgICByZXR1
cm4geyBmaXJzdFRleHRSdW5Gb3IodGV4dCkgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2xheW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3JhdGlvblJ1bkl0ZXJhdG9yLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRpb25SdW5JdGVyYXRv
ci5oCmluZGV4IGJhYWRlODlkOGQxMy4uZjRhOTA0NDQ5MmJkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRpb25SdW5JdGVyYXRvci5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3JhdGlv
blJ1bkl0ZXJhdG9yLmgKQEAgLTM0LDYgKzM0LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBj
bGFzcyBSZW5kZXJMaW5lQnJlYWs7CiBjbGFzcyBSZW5kZXJPYmplY3Q7CitjbGFzcyBSZW5kZXJT
dHlsZTsKIGNsYXNzIFJlbmRlclRleHQ7CiAKIG5hbWVzcGFjZSBMYXlvdXRJbnRlZ3JhdGlvbiB7
CkBAIC03OSw2ICs4MCw3IEBAIHB1YmxpYzoKICAgICBib29sIGlzTGVmdFRvUmlnaHREaXJlY3Rp
b24oKSBjb25zdCB7IHJldHVybiBkaXJlY3Rpb24oKSA9PSBUZXh0RGlyZWN0aW9uOjpMVFI7IH0K
IAogICAgIGNvbnN0IFJlbmRlck9iamVjdCYgcmVuZGVyZXIoKSBjb25zdDsKKyAgICBjb25zdCBS
ZW5kZXJTdHlsZSYgc3R5bGUoKSBjb25zdDsKIAogICAgIC8vIEZvciBpbnRlcm1lZGlhdGUgcG9y
dGluZyBzdGVwcyBvbmx5LgogICAgIExlZ2FjeUlubGluZUJveCogbGVnYWN5SW5saW5lQm94KCkg
Y29uc3Q7CkBAIC04Nyw2ICs4OSw4IEBAIHByb3RlY3RlZDoKICAgICBmcmllbmQgY2xhc3MgUnVu
SXRlcmF0b3I7CiAgICAgZnJpZW5kIGNsYXNzIFRleHRSdW5JdGVyYXRvcjsKIAorICAgIExpbmVJ
dGVyYXRvciBsaW5lKCkgY29uc3Q7CisKICAgICAvLyBUbyBoZWxwIHdpdGggZGVidWdnaW5nLgog
I2lmIEVOQUJMRShMQVlPVVRfRk9STUFUVElOR19DT05URVhUKQogICAgIGNvbnN0IFJ1bkl0ZXJh
dG9yTW9kZXJuUGF0aCYgbW9kZXJuUGF0aCgpIGNvbnN0OwpAQCAtMTEzLDYgKzExNyw3IEBAIHB1
YmxpYzoKICAgICBib29sIGlzU2VsZWN0YWJsZSh1bnNpZ25lZCBzdGFydCwgdW5zaWduZWQgZW5k
KSBjb25zdDsKICAgICBMYXlvdXRSZWN0IHNlbGVjdGlvblJlY3QodW5zaWduZWQgc3RhcnQsIHVu
c2lnbmVkIGVuZCkgY29uc3Q7CiAKKyAgICBjb25zdCBSZW5kZXJUZXh0JiByZW5kZXJlcigpIGNv
bnN0IHsgcmV0dXJuIGRvd25jYXN0PFJlbmRlclRleHQ+KFBhdGhSdW46OnJlbmRlcmVyKCkpOyB9
CiAgICAgTGVnYWN5SW5saW5lVGV4dEJveCogbGVnYWN5SW5saW5lQm94KCkgY29uc3QgeyByZXR1
cm4gZG93bmNhc3Q8TGVnYWN5SW5saW5lVGV4dEJveD4oUGF0aFJ1bjo6bGVnYWN5SW5saW5lQm94
KCkpOyB9CiB9OwogCkBAIC0xOTUsNiArMjAwLDcgQEAgcHJpdmF0ZToKIAogVGV4dFJ1bkl0ZXJh
dG9yIGZpcnN0VGV4dFJ1bkZvcihjb25zdCBSZW5kZXJUZXh0Jik7CiBUZXh0UnVuSXRlcmF0b3Ig
Zmlyc3RUZXh0UnVuSW5UZXh0T3JkZXJGb3IoY29uc3QgUmVuZGVyVGV4dCYpOworVGV4dFJ1bkl0
ZXJhdG9yIHRleHRSdW5Gb3IoY29uc3QgTGVnYWN5SW5saW5lVGV4dEJveCopOwogVGV4dFJ1blJh
bmdlIHRleHRSdW5zRm9yKGNvbnN0IFJlbmRlclRleHQmKTsKIFJ1bkl0ZXJhdG9yIHJ1bkZvcihj
b25zdCBSZW5kZXJMaW5lQnJlYWsmKTsKIFJ1bkl0ZXJhdG9yIHJ1bkZvcihjb25zdCBSZW5kZXJC
b3gmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9MYXlv
dXRJbnRlZ3JhdGlvblJ1bkl0ZXJhdG9yTW9kZXJuUGF0aC5oIGIvU291cmNlL1dlYkNvcmUvbGF5
b3V0L2ludGVncmF0aW9uL0xheW91dEludGVncmF0aW9uUnVuSXRlcmF0b3JNb2Rlcm5QYXRoLmgK
aW5kZXggYTY4ZmFlNTg4NjgzLi43MTJiM2EyOTAzZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2xheW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3JhdGlvblJ1bkl0ZXJhdG9yTW9kZXJu
UGF0aC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRl
Z3JhdGlvblJ1bkl0ZXJhdG9yTW9kZXJuUGF0aC5oCkBAIC0yMDIsNiArMjAyLDcgQEAgcHVibGlj
OgogICAgIH0KIAogcHJpdmF0ZToKKyAgICBmcmllbmQgY2xhc3MgUGF0aFJ1bjsKICAgICBmcmll
bmQgY2xhc3MgUnVuSXRlcmF0b3I7CiAKICAgICBUZXh0Qm94U2VsZWN0YWJsZVJhbmdlIHNlbGVj
dGFibGVSYW5nZSgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
TGVnYWN5SW5saW5lRmxvd0JveC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvTGVnYWN5
SW5saW5lRmxvd0JveC5jcHAKaW5kZXggMGQ3ZjhiOTBjYTY4Li5lOGFkZmY3ZGYyMDIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9MZWdhY3lJbmxpbmVGbG93Qm94LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvTGVnYWN5SW5saW5lRmxvd0JveC5jcHAKQEAg
LTc5OCw0OCArNzk4LDYgQEAgdm9pZCBMZWdhY3lJbmxpbmVGbG93Qm94OjpwbGFjZUJveGVzSW5C
bG9ja0RpcmVjdGlvbihMYXlvdXRVbml0IHRvcCwgTGF5b3V0VW5pdAogICAgIH0KIH0KIAotdm9p
ZCBMZWdhY3lJbmxpbmVGbG93Qm94OjptYXhMb2dpY2FsQm90dG9tRm9yVGV4dERlY29yYXRpb25M
aW5lKGZsb2F0JiBtYXhMb2dpY2FsQm90dG9tLCBjb25zdCBSZW5kZXJFbGVtZW50KiBkZWNvcmF0
aW9uUmVuZGVyZXIsIE9wdGlvblNldDxUZXh0RGVjb3JhdGlvbj4gdGV4dERlY29yYXRpb24pIGNv
bnN0Ci17Ci0gICAgZm9yIChhdXRvKiBjaGlsZCA9IGZpcnN0Q2hpbGQoKTsgY2hpbGQ7IGNoaWxk
ID0gY2hpbGQtPm5leHRPbkxpbmUoKSkgewotICAgICAgICBpZiAoY2hpbGQtPnJlbmRlcmVyKCku
aXNPdXRPZkZsb3dQb3NpdGlvbmVkKCkpCi0gICAgICAgICAgICBjb250aW51ZTsgLy8gUG9zaXRp
b25lZCBwbGFjZWhvbGRlcnMgZG9uJ3QgYWZmZWN0IGNhbGN1bGF0aW9ucy4KLSAgICAgICAgCi0g
ICAgICAgIGlmICghKGNoaWxkLT5saW5lU3R5bGUoKS50ZXh0RGVjb3JhdGlvbnNJbkVmZmVjdCgp
ICYgdGV4dERlY29yYXRpb24pKQotICAgICAgICAgICAgY29udGludWU7IC8vIElmIHRoZSB0ZXh0
IGRlY29yYXRpb24gaXNuJ3QgaW4gZWZmZWN0IG9uIHRoZSBjaGlsZCwgdGhlbiBpdCBtdXN0IGJl
IG91dHNpZGUgb2YgfGRlY29yYXRpb25SZW5kZXJlcnwncyBoaWVyYXJjaHkuCi0gICAgICAgIAot
ICAgICAgICBpZiAoZGVjb3JhdGlvblJlbmRlcmVyICYmIGRlY29yYXRpb25SZW5kZXJlci0+aXNS
ZW5kZXJJbmxpbmUoKSAmJiAhaXNBbmNlc3RvckFuZFdpdGhpbkJsb2NrKGRvd25jYXN0PFJlbmRl
cklubGluZT4oKmRlY29yYXRpb25SZW5kZXJlciksICZjaGlsZC0+cmVuZGVyZXIoKSkpCi0gICAg
ICAgICAgICBjb250aW51ZTsKLSAgICAgICAgCi0gICAgICAgIGlmIChpczxMZWdhY3lJbmxpbmVG
bG93Qm94PigqY2hpbGQpKQotICAgICAgICAgICAgZG93bmNhc3Q8TGVnYWN5SW5saW5lRmxvd0Jv
eD4oKmNoaWxkKS5tYXhMb2dpY2FsQm90dG9tRm9yVGV4dERlY29yYXRpb25MaW5lKG1heExvZ2lj
YWxCb3R0b20sIGRlY29yYXRpb25SZW5kZXJlciwgdGV4dERlY29yYXRpb24pOwotICAgICAgICBl
bHNlIHsKLSAgICAgICAgICAgIGlmIChjaGlsZC0+aXNJbmxpbmVUZXh0Qm94KCkgfHwgY2hpbGQt
PmxpbmVTdHlsZSgpLnRleHREZWNvcmF0aW9uU2tpcCgpLmlzRW1wdHkoKSkKLSAgICAgICAgICAg
ICAgICBtYXhMb2dpY2FsQm90dG9tID0gc3RkOjptYXg8ZmxvYXQ+KG1heExvZ2ljYWxCb3R0b20s
IGNoaWxkLT5sb2dpY2FsQm90dG9tKCkpOwotICAgICAgICB9Ci0gICAgfQotfQotCi12b2lkIExl
Z2FjeUlubGluZUZsb3dCb3g6Om1pbkxvZ2ljYWxUb3BGb3JUZXh0RGVjb3JhdGlvbkxpbmUoZmxv
YXQmIG1pbkxvZ2ljYWxUb3AsIGNvbnN0IFJlbmRlckVsZW1lbnQqIGRlY29yYXRpb25SZW5kZXJl
ciwgT3B0aW9uU2V0PFRleHREZWNvcmF0aW9uPiB0ZXh0RGVjb3JhdGlvbikgY29uc3QKLXsKLSAg
ICBmb3IgKGF1dG8qIGNoaWxkID0gZmlyc3RDaGlsZCgpOyBjaGlsZDsgY2hpbGQgPSBjaGlsZC0+
bmV4dE9uTGluZSgpKSB7Ci0gICAgICAgIGlmIChjaGlsZC0+cmVuZGVyZXIoKS5pc091dE9mRmxv
d1Bvc2l0aW9uZWQoKSkKLSAgICAgICAgICAgIGNvbnRpbnVlOyAvLyBQb3NpdGlvbmVkIHBsYWNl
aG9sZGVycyBkb24ndCBhZmZlY3QgY2FsY3VsYXRpb25zLgotICAgICAgICAKLSAgICAgICAgaWYg
KCEoY2hpbGQtPmxpbmVTdHlsZSgpLnRleHREZWNvcmF0aW9uc0luRWZmZWN0KCkgJiB0ZXh0RGVj
b3JhdGlvbikpCi0gICAgICAgICAgICBjb250aW51ZTsgLy8gSWYgdGhlIHRleHQgZGVjb3JhdGlv
biBpc24ndCBpbiBlZmZlY3Qgb24gdGhlIGNoaWxkLCB0aGVuIGl0IG11c3QgYmUgb3V0c2lkZSBv
ZiB8ZGVjb3JhdGlvblJlbmRlcmVyfCdzIGhpZXJhcmNoeS4KLSAgICAgICAgCi0gICAgICAgIGlm
IChkZWNvcmF0aW9uUmVuZGVyZXIgJiYgZGVjb3JhdGlvblJlbmRlcmVyLT5pc1JlbmRlcklubGlu
ZSgpICYmICFpc0FuY2VzdG9yQW5kV2l0aGluQmxvY2soZG93bmNhc3Q8UmVuZGVySW5saW5lPigq
ZGVjb3JhdGlvblJlbmRlcmVyKSwgJmNoaWxkLT5yZW5kZXJlcigpKSkKLSAgICAgICAgICAgIGNv
bnRpbnVlOwotICAgICAgICAKLSAgICAgICAgaWYgKGlzPExlZ2FjeUlubGluZUZsb3dCb3g+KCpj
aGlsZCkpCi0gICAgICAgICAgICBkb3duY2FzdDxMZWdhY3lJbmxpbmVGbG93Qm94PigqY2hpbGQp
Lm1pbkxvZ2ljYWxUb3BGb3JUZXh0RGVjb3JhdGlvbkxpbmUobWluTG9naWNhbFRvcCwgZGVjb3Jh
dGlvblJlbmRlcmVyLCB0ZXh0RGVjb3JhdGlvbik7Ci0gICAgICAgIGVsc2UgewotICAgICAgICAg
ICAgaWYgKGNoaWxkLT5pc0lubGluZVRleHRCb3goKSB8fCBjaGlsZC0+bGluZVN0eWxlKCkudGV4
dERlY29yYXRpb25Ta2lwKCkuaXNFbXB0eSgpKQotICAgICAgICAgICAgICAgIG1pbkxvZ2ljYWxU
b3AgPSBzdGQ6Om1pbjxmbG9hdD4obWluTG9naWNhbFRvcCwgY2hpbGQtPmxvZ2ljYWxUb3AoKSk7
Ci0gICAgICAgIH0KLSAgICB9Ci19Ci0KIHZvaWQgTGVnYWN5SW5saW5lRmxvd0JveDo6ZmxpcExp
bmVzSW5CbG9ja0RpcmVjdGlvbihMYXlvdXRVbml0IGxpbmVUb3AsIExheW91dFVuaXQgbGluZUJv
dHRvbSkKIHsKICAgICAvLyBGbGlwIHRoZSBib3ggb24gdGhlIGxpbmUgc3VjaCB0aGF0IHRoZSB0
b3AgaXMgbm93IHJlbGF0aXZlIHRvIHRoZSBsaW5lQm90dG9tIGluc3RlYWQgb2YgdGhlIGxpbmVU
b3AuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvTGVnYWN5SW5saW5lRmxv
d0JveC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0xlZ2FjeUlubGluZUZsb3dCb3guaApp
bmRleCAzODFjMjgyMjIyZjAuLjQ3Y2Y2ZTg3ODMzYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL0xlZ2FjeUlubGluZUZsb3dCb3guaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvTGVnYWN5SW5saW5lRmxvd0JveC5oCkBAIC0yOTYsOSArMjk2LDYgQEAgcHVibGlj
OgogCiAgICAgdm9pZCBjb21wdXRlUmVwbGFjZWRBbmRUZXh0TGluZVRvcEFuZEJvdHRvbShMYXlv
dXRVbml0JiBsaW5lVG9wLCBMYXlvdXRVbml0JiBsaW5lQm90dG9tKSBjb25zdDsKIAotICAgIHZv
aWQgbWF4TG9naWNhbEJvdHRvbUZvclRleHREZWNvcmF0aW9uTGluZShmbG9hdCYgbWF4TG9naWNh
bEJvdHRvbSwgY29uc3QgUmVuZGVyRWxlbWVudCogZGVjb3JhdGlvblJlbmRlcmVyLCBPcHRpb25T
ZXQ8VGV4dERlY29yYXRpb24+KSBjb25zdDsKLSAgICB2b2lkIG1pbkxvZ2ljYWxUb3BGb3JUZXh0
RGVjb3JhdGlvbkxpbmUoZmxvYXQmIG1pbkxvZ2ljYWxUb3AsIGNvbnN0IFJlbmRlckVsZW1lbnQq
IGRlY29yYXRpb25SZW5kZXJlciwgT3B0aW9uU2V0PFRleHREZWNvcmF0aW9uPikgY29uc3Q7Ci0K
IHByaXZhdGU6CiAgICAgYm9vbCBpc0lubGluZUZsb3dCb3goKSBjb25zdCBmaW5hbCB7IHJldHVy
biB0cnVlOyB9CiAgICAgdm9pZCBib3hNb2RlbE9iamVjdCgpIGNvbnN0ID0gZGVsZXRlOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0xlZ2FjeUlubGluZVRleHRCb3guY3Bw
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0xlZ2FjeUlubGluZVRleHRCb3guY3BwCmluZGV4
IDUwNzAwM2EwMGZjZS4uZTYxN2E4ZjM1M2JkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvTGVnYWN5SW5saW5lVGV4dEJveC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL0xlZ2FjeUlubGluZVRleHRCb3guY3BwCkBAIC04NzIsNyArODcyLDcgQEAgdm9pZCBM
ZWdhY3lJbmxpbmVUZXh0Qm94OjpwYWludE1hcmtlZFRleHREZWNvcmF0aW9uKFBhaW50SW5mbyYg
cGFpbnRJbmZvLCBjb25zdAogICAgIGF1dG8gdGV4dERlY29yYXRpb25zID0gbGluZVN0eWxlKCku
dGV4dERlY29yYXRpb25zSW5FZmZlY3QoKTsKICAgICB0ZXh0RGVjb3JhdGlvbnMuYWRkKFRleHRE
ZWNvcmF0aW9uUGFpbnRlcjo6dGV4dERlY29yYXRpb25zSW5FZmZlY3RGb3JTdHlsZShtYXJrZWRU
ZXh0LnN0eWxlLnRleHREZWNvcmF0aW9uU3R5bGVzKSk7CiAgICAgVGV4dERlY29yYXRpb25QYWlu
dGVyIGRlY29yYXRpb25QYWludGVyIHsgY29udGV4dCwgdGV4dERlY29yYXRpb25zLCByZW5kZXJl
cigpLCBpc0ZpcnN0TGluZSgpLCBsaW5lRm9udCgpLCBtYXJrZWRUZXh0LnN0eWxlLnRleHREZWNv
cmF0aW9uU3R5bGVzIH07Ci0gICAgZGVjb3JhdGlvblBhaW50ZXIuc2V0SW5saW5lVGV4dEJveCh0
aGlzKTsKKyAgICBkZWNvcmF0aW9uUGFpbnRlci5zZXRUZXh0UnVuSXRlcmF0b3IoTGF5b3V0SW50
ZWdyYXRpb246OnRleHRSdW5Gb3IodGhpcykpOwogICAgIGRlY29yYXRpb25QYWludGVyLnNldFdp
ZHRoKHNuYXBwZWRTZWxlY3Rpb25SZWN0LndpZHRoKCkpOwogICAgIGRlY29yYXRpb25QYWludGVy
LnNldElzSG9yaXpvbnRhbChpc0hvcml6b250YWwoKSk7CiAgICAgaWYgKG1hcmtlZFRleHQuc3R5
bGUudGV4dFNoYWRvdykgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0xl
Z2FjeUxpbmVMYXlvdXQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0xlZ2FjeUxpbmVM
YXlvdXQuY3BwCmluZGV4IGQyYTdkOTllYjhlYi4uMzcyMWNkMjk1MWM5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvTGVnYWN5TGluZUxheW91dC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL0xlZ2FjeUxpbmVMYXlvdXQuY3BwCkBAIC0zMiw2ICszMiw3IEBA
CiAjaW5jbHVkZSAiSFRNTFBhcnNlcklkaW9tcy5oIgogI2luY2x1ZGUgIklubGluZUl0ZXJhdG9y
LmgiCiAjaW5jbHVkZSAiSW5saW5lVGV4dEJveFN0eWxlLmgiCisjaW5jbHVkZSAiTGF5b3V0SW50
ZWdyYXRpb25SdW5JdGVyYXRvci5oIgogI2luY2x1ZGUgIkxlZ2FjeUlubGluZUVsZW1lbnRCb3gu
aCIKICNpbmNsdWRlICJMZWdhY3lJbmxpbmVUZXh0Qm94LmgiCiAjaW5jbHVkZSAiTGluZUxheW91
dFN0YXRlLmgiCkBAIC01NDYsNyArNTQ3LDcgQEAgc3RhdGljIGlubGluZSB2b2lkIHNldExvZ2lj
YWxXaWR0aEZvclRleHRSdW4oTGVnYWN5Um9vdElubGluZUJveCogbGluZUJveCwgQmlkaVIKIAog
ICAgIC8vIEluY2x1ZGUgdGV4dCBkZWNvcmF0aW9uIHZpc3VhbCBvdmVyZmxvdyBhcyBwYXJ0IG9m
IHRoZSBnbHlwaCBvdmVyZmxvdy4KICAgICBpZiAoIXJlbmRlcmVyLnN0eWxlKCkudGV4dERlY29y
YXRpb25zSW5FZmZlY3QoKS5pc0VtcHR5KCkpCi0gICAgICAgIGdseXBoT3ZlcmZsb3cuZXh0ZW5k
VG8odmlzdWFsT3ZlcmZsb3dGb3JEZWNvcmF0aW9ucyhydW4tPmJveCgpLT5saW5lU3R5bGUoKSwg
ZG93bmNhc3Q8TGVnYWN5SW5saW5lVGV4dEJveD4ocnVuLT5ib3goKSkpKTsKKyAgICAgICAgZ2x5
cGhPdmVyZmxvdy5leHRlbmRUbyh2aXN1YWxPdmVyZmxvd0ZvckRlY29yYXRpb25zKHJ1bi0+Ym94
KCktPmxpbmVTdHlsZSgpLCBMYXlvdXRJbnRlZ3JhdGlvbjo6dGV4dFJ1bkZvcihkb3duY2FzdDxM
ZWdhY3lJbmxpbmVUZXh0Qm94PihydW4tPmJveCgpKSkpKTsKIAogICAgIGlmICghZ2x5cGhPdmVy
Zmxvdy5pc0VtcHR5KCkpIHsKICAgICAgICAgQVNTRVJUKHJ1bi0+Ym94KCktPmJlaGF2ZXNMaWtl
VGV4dCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbGVt
ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbGVtZW50LmNwcAppbmRl
eCBmODdkMDVmMzk5ZTguLmE5NWE1MjA3NDliMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJFbGVtZW50LmNwcApAQCAtMTczMywyNCArMTczMyw2IEBAIExheW91dFJlY3QgUmVu
ZGVyRWxlbWVudDo6YWJzb2x1dGVBbmNob3JSZWN0V2l0aFNjcm9sbE1hcmdpbihib29sKiBpbnNp
ZGVGaXhlZCkKICAgICByZXR1cm4gYWJzb2x1dGVBbmNob3JSZWN0KGluc2lkZUZpeGVkKTsKIH0K
IAotY29uc3QgUmVuZGVyRWxlbWVudCogUmVuZGVyRWxlbWVudDo6ZW5jbG9zaW5nUmVuZGVyZXJX
aXRoVGV4dERlY29yYXRpb24oT3B0aW9uU2V0PFRleHREZWNvcmF0aW9uPiB0ZXh0RGVjb3JhdGlv
biwgYm9vbCBmaXJzdExpbmUpIGNvbnN0Ci17Ci0gICAgY29uc3QgUmVuZGVyRWxlbWVudCogY3Vy
cmVudCA9IHRoaXM7Ci0gICAgZG8gewotICAgICAgICBpZiAoY3VycmVudC0+aXNSZW5kZXJCbG9j
aygpKQotICAgICAgICAgICAgcmV0dXJuIGN1cnJlbnQ7Ci0gICAgICAgIGlmICghY3VycmVudC0+
aXNSZW5kZXJJbmxpbmUoKSB8fCBjdXJyZW50LT5pc1J1YnlUZXh0KCkpCi0gICAgICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKLSAgICAgICAgCi0gICAgICAgIGNvbnN0IFJlbmRlclN0eWxlJiBzdHls
ZVRvVXNlID0gZmlyc3RMaW5lID8gY3VycmVudC0+Zmlyc3RMaW5lU3R5bGUoKSA6IGN1cnJlbnQt
PnN0eWxlKCk7Ci0gICAgICAgIGlmIChzdHlsZVRvVXNlLnRleHREZWNvcmF0aW9uKCkgJiB0ZXh0
RGVjb3JhdGlvbikKLSAgICAgICAgICAgIHJldHVybiBjdXJyZW50OwotICAgICAgICBjdXJyZW50
ID0gY3VycmVudC0+cGFyZW50KCk7Ci0gICAgfSB3aGlsZSAoY3VycmVudCAmJiAoIWN1cnJlbnQt
PmVsZW1lbnQoKSB8fCAoIWlzPEhUTUxBbmNob3JFbGVtZW50PigqY3VycmVudC0+ZWxlbWVudCgp
KSAmJiAhY3VycmVudC0+ZWxlbWVudCgpLT5oYXNUYWdOYW1lKEhUTUxOYW1lczo6Zm9udFRhZykp
KSk7Ci0KLSAgICByZXR1cm4gY3VycmVudDsKLX0KLQogdm9pZCBSZW5kZXJFbGVtZW50OjpkcmF3
TGluZUZvckJveFNpZGUoR3JhcGhpY3NDb250ZXh0JiBncmFwaGljc0NvbnRleHQsIGNvbnN0IEZs
b2F0UmVjdCYgcmVjdCwgQm94U2lkZSBzaWRlLCBDb2xvciBjb2xvciwgQm9yZGVyU3R5bGUgYm9y
ZGVyU3R5bGUsIGZsb2F0IGFkamFjZW50V2lkdGgxLCBmbG9hdCBhZGphY2VudFdpZHRoMiwgYm9v
bCBhbnRpYWxpYXMpIGNvbnN0CiB7CiAgICAgYXV0byBkcmF3Qm9yZGVyUmVjdCA9IFsmZ3JhcGhp
Y3NDb250ZXh0XSAoY29uc3QgRmxvYXRSZWN0JiByZWN0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJFbGVtZW50LmgKaW5kZXggMjM3N2JhOTcyYzRhLi4wMzAwZDZjOGI5MjIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbGVtZW50LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVsZW1lbnQuaApAQCAtMjIxLDcgKzIyMSw2IEBA
IHB1YmxpYzoKICAgICBib29sIGhhc0NvdW50ZXJOb2RlTWFwKCkgY29uc3QgeyByZXR1cm4gbV9o
YXNDb3VudGVyTm9kZU1hcDsgfQogICAgIHZvaWQgc2V0SGFzQ291bnRlck5vZGVNYXAoYm9vbCBm
KSB7IG1faGFzQ291bnRlck5vZGVNYXAgPSBmOyB9CiAKLSAgICBjb25zdCBSZW5kZXJFbGVtZW50
KiBlbmNsb3NpbmdSZW5kZXJlcldpdGhUZXh0RGVjb3JhdGlvbihPcHRpb25TZXQ8VGV4dERlY29y
YXRpb24+LCBib29sIGZpcnN0TGluZSkgY29uc3Q7CiAgICAgdm9pZCBkcmF3TGluZUZvckJveFNp
ZGUoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiwgQm94U2lkZSwgQ29sb3IsIEJv
cmRlclN0eWxlLCBmbG9hdCBhZGphY2VudFdpZHRoMSwgZmxvYXQgYWRqYWNlbnRXaWR0aDIsIGJv
b2wgYW50aWFsaWFzID0gZmFsc2UpIGNvbnN0OwogCiAjaWYgRU5BQkxFKFRFWFRfQVVUT1NJWklO
RykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9UZXh0RGVjb3JhdGlvblBh
aW50ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1RleHREZWNvcmF0aW9uUGFpbnRl
ci5jcHAKaW5kZXggNWQ5OGE5NjFlYTVlLi44YzYzNzJkNGU2ZGQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9UZXh0RGVjb3JhdGlvblBhaW50ZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9UZXh0RGVjb3JhdGlvblBhaW50ZXIuY3BwCkBAIC0yODgsNyAr
Mjg4LDcgQEAgdm9pZCBUZXh0RGVjb3JhdGlvblBhaW50ZXI6OnBhaW50VGV4dERlY29yYXRpb24o
Y29uc3QgVGV4dFJ1biYgdGV4dFJ1biwgY29uc3QgRmwKICAgICAgICAgaWYgKG1fZGVjb3JhdGlv
bnMuY29udGFpbnMoVGV4dERlY29yYXRpb246OlVuZGVybGluZSkpIHsKICAgICAgICAgICAgIGZs
b2F0IHRleHREZWNvcmF0aW9uQmFzZUZvbnRTaXplID0gMTY7CiAgICAgICAgICAgICBhdXRvIGRl
ZmF1bHRHYXAgPSBtX2xpbmVTdHlsZS5jb21wdXRlZEZvbnRTaXplKCkgLyB0ZXh0RGVjb3JhdGlv
bkJhc2VGb250U2l6ZTsKLSAgICAgICAgICAgIGZsb2F0IG9mZnNldCA9IGNvbXB1dGVVbmRlcmxp
bmVPZmZzZXQobV9saW5lU3R5bGUudGV4dFVuZGVybGluZVBvc2l0aW9uKCksIG1fbGluZVN0eWxl
LnRleHRVbmRlcmxpbmVPZmZzZXQoKSwgbV9saW5lU3R5bGUuZm9udE1ldHJpY3MoKSwgbV9pbmxp
bmVUZXh0Qm94LCBkZWZhdWx0R2FwKTsKKyAgICAgICAgICAgIGZsb2F0IG9mZnNldCA9IGNvbXB1
dGVVbmRlcmxpbmVPZmZzZXQobV9saW5lU3R5bGUudGV4dFVuZGVybGluZVBvc2l0aW9uKCksIG1f
bGluZVN0eWxlLnRleHRVbmRlcmxpbmVPZmZzZXQoKSwgbV9saW5lU3R5bGUuZm9udE1ldHJpY3Mo
KSwgbV90ZXh0UnVuLCBkZWZhdWx0R2FwKTsKICAgICAgICAgICAgIGZsb2F0IHdhdnlPZmZzZXQg
PSBtX3N0eWxlcy51bmRlcmxpbmVTdHlsZSA9PSBUZXh0RGVjb3JhdGlvblN0eWxlOjpXYXZ5ID8g
bV93YXZ5T2Zmc2V0IDogMDsKICAgICAgICAgICAgIEZsb2F0UmVjdCByZWN0KGxvY2FsT3JpZ2lu
LCBGbG9hdFNpemUobV93aWR0aCwgdGV4dERlY29yYXRpb25UaGlja25lc3MpKTsKICAgICAgICAg
ICAgIHJlY3QubW92ZSgwLCBvZmZzZXQgKyB3YXZ5T2Zmc2V0KTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9UZXh0RGVjb3JhdGlvblBhaW50ZXIuaCBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9UZXh0RGVjb3JhdGlvblBhaW50ZXIuaAppbmRleCA4N2UyMDY2Zjg4MjMu
LjliZjRiNGQ5ODY2OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1RleHRE
ZWNvcmF0aW9uUGFpbnRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9UZXh0RGVj
b3JhdGlvblBhaW50ZXIuaApAQCAtMjQsNiArMjQsNyBAQAogCiAjaW5jbHVkZSAiQ29sb3IuaCIK
ICNpbmNsdWRlICJGbG9hdFBvaW50LmgiCisjaW5jbHVkZSAiTGF5b3V0SW50ZWdyYXRpb25SdW5J
dGVyYXRvci5oIgogI2luY2x1ZGUgIlJlbmRlclN0eWxlQ29uc3RhbnRzLmgiCiAjaW5jbHVkZSA8
d3RmL09wdGlvblNldC5oPgogCkBAIC00NSw3ICs0Niw3IEBAIHB1YmxpYzoKICAgICBzdHJ1Y3Qg
U3R5bGVzOwogICAgIFRleHREZWNvcmF0aW9uUGFpbnRlcihHcmFwaGljc0NvbnRleHQmLCBPcHRp
b25TZXQ8VGV4dERlY29yYXRpb24+IGRlY29yYXRpb25zLCBjb25zdCBSZW5kZXJUZXh0JiwgYm9v
bCBpc0ZpcnN0TGluZSwgY29uc3QgRm9udENhc2NhZGUmLCBzdGQ6Om9wdGlvbmFsPFN0eWxlcz4g
PSBzdGQ6Om51bGxvcHQpOwogICAgIAotICAgIHZvaWQgc2V0SW5saW5lVGV4dEJveChjb25zdCBM
ZWdhY3lJbmxpbmVUZXh0Qm94KiBpbmxpbmVUZXh0Qm94KSB7IG1faW5saW5lVGV4dEJveCA9IGlu
bGluZVRleHRCb3g7IH0KKyAgICB2b2lkIHNldFRleHRSdW5JdGVyYXRvcihMYXlvdXRJbnRlZ3Jh
dGlvbjo6VGV4dFJ1bkl0ZXJhdG9yIHRleHRSdW4pIHsgbV90ZXh0UnVuID0gdGV4dFJ1bjsgfQog
ICAgIHZvaWQgc2V0SXNIb3Jpem9udGFsKGJvb2wgaXNIb3Jpem9udGFsKSB7IG1faXNIb3Jpem9u
dGFsID0gaXNIb3Jpem9udGFsOyB9CiAgICAgdm9pZCBzZXRXaWR0aChmbG9hdCB3aWR0aCkgeyBt
X3dpZHRoID0gd2lkdGg7IH0KICAgICB2b2lkIHNldFRleHRTaGFkb3coY29uc3QgU2hhZG93RGF0
YSogdGV4dFNoYWRvdykgeyBtX3NoYWRvdyA9IHRleHRTaGFkb3c7IH0KQEAgLTc4LDcgKzc5LDcg
QEAgcHJpdmF0ZToKICAgICBib29sIG1faXNIb3Jpem9udGFsIHsgdHJ1ZSB9OwogICAgIGNvbnN0
IFNoYWRvd0RhdGEqIG1fc2hhZG93IHsgbnVsbHB0ciB9OwogICAgIGNvbnN0IEZpbHRlck9wZXJh
dGlvbnMqIG1fc2hhZG93Q29sb3JGaWx0ZXIgeyBudWxscHRyIH07Ci0gICAgY29uc3QgTGVnYWN5
SW5saW5lVGV4dEJveCogbV9pbmxpbmVUZXh0Qm94IHsgbnVsbHB0ciB9OworICAgIExheW91dElu
dGVncmF0aW9uOjpUZXh0UnVuSXRlcmF0b3IgbV90ZXh0UnVuOwogICAgIGNvbnN0IEZvbnRDYXNj
YWRlJiBtX2ZvbnQ7CiAKICAgICBTdHlsZXMgbV9zdHlsZXM7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuY3BwIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmNwcAppbmRleCBiYWYzZDk4OGJhMDEuLmFkOWQ4
Mjk0YTc2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRl
clN0eWxlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5
bGUuY3BwCkBAIC02MzgsNyArNjM4LDcgQEAgaW5saW5lIGJvb2wgUmVuZGVyU3R5bGU6OmNoYW5n
ZUFmZmVjdHNWaXN1YWxPdmVyZmxvdyhjb25zdCBSZW5kZXJTdHlsZSYgb3RoZXIpIGMKICAgICAg
ICAgLy8gaXMgc3BlY2lmaWVkLiBXZSBjYW4gdGFrZSBhbiBlYXJseSBvdXQgaGVyZS4KICAgICAg
ICAgaWYgKHRleHRVbmRlcmxpbmVQb3NpdGlvbigpID09IFRleHRVbmRlcmxpbmVQb3NpdGlvbjo6
VW5kZXIgfHwgb3RoZXIudGV4dFVuZGVybGluZVBvc2l0aW9uKCkgPT0gVGV4dFVuZGVybGluZVBv
c2l0aW9uOjpVbmRlcikKICAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICByZXR1cm4g
dmlzdWFsT3ZlcmZsb3dGb3JEZWNvcmF0aW9ucygqdGhpcywgbnVsbHB0cikgIT0gdmlzdWFsT3Zl
cmZsb3dGb3JEZWNvcmF0aW9ucyhvdGhlciwgbnVsbHB0cik7CisgICAgICAgIHJldHVybiB2aXN1
YWxPdmVyZmxvd0ZvckRlY29yYXRpb25zKCp0aGlzLCB7IH0pICE9IHZpc3VhbE92ZXJmbG93Rm9y
RGVjb3JhdGlvbnMob3RoZXIsIHsgfSk7CiAgICAgfQogCiAgICAgaWYgKGhhc091dGxpbmVJblZp
c3VhbE92ZXJmbG93KCkgIT0gb3RoZXIuaGFzT3V0bGluZUluVmlzdWFsT3ZlcmZsb3coKSkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL0lubGluZVRleHRCb3hTdHlsZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9zdHlsZS9JbmxpbmVUZXh0Qm94U3R5bGUuY3BwCmluZGV4IDhhOTZjM2Yw
M2YzMi4uOWU4M2E2NDY3MjA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9Jbmxp
bmVUZXh0Qm94U3R5bGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL0lubGluZVRleHRC
b3hTdHlsZS5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE0IEFw
cGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQtMjAy
MSBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCkBAIC0yNywxMyArMjcsODEgQEAKICNpbmNsdWRlICJJbmxpbmVUZXh0Qm94U3R5
bGUuaCIKIAogI2luY2x1ZGUgIkZvbnRDYXNjYWRlLmgiCisjaW5jbHVkZSAiSFRNTEFuY2hvckVs
ZW1lbnQuaCIKKyNpbmNsdWRlICJIVE1MTmFtZXMuaCIKKyNpbmNsdWRlICJMYXlvdXRJbnRlZ3Jh
dGlvbkxpbmVJdGVyYXRvci5oIgorI2luY2x1ZGUgIkxheW91dEludGVncmF0aW9uUnVuSXRlcmF0
b3IuaCIKICNpbmNsdWRlICJMZWdhY3lJbmxpbmVUZXh0Qm94LmgiCiAjaW5jbHVkZSAiTGVnYWN5
Um9vdElubGluZUJveC5oIgorI2luY2x1ZGUgIlJlbmRlcklubGluZS5oIgogI2luY2x1ZGUgIlRl
eHRVbmRlcmxpbmVPZmZzZXQuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgeworCitzdGF0aWMgYm9v
bCBpc0FuY2VzdG9yQW5kV2l0aGluQmxvY2soY29uc3QgUmVuZGVySW5saW5lJiBhbmNlc3Rvciwg
Y29uc3QgUmVuZGVyT2JqZWN0KiBjaGlsZCkKK3sKKyAgICBjb25zdCBSZW5kZXJPYmplY3QqIG9i
amVjdCA9IGNoaWxkOworICAgIHdoaWxlIChvYmplY3QgJiYgKCFvYmplY3QtPmlzUmVuZGVyQmxv
Y2soKSB8fCBvYmplY3QtPmlzSW5saW5lKCkpKSB7CisgICAgICAgIGlmIChvYmplY3QgPT0gJmFu
Y2VzdG9yKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIG9iamVjdCA9IG9iamVj
dC0+cGFyZW50KCk7CisgICAgfQorICAgIHJldHVybiBmYWxzZTsKK30KKworc3RhdGljIHZvaWQg
bWluTG9naWNhbFRvcEZvclRleHREZWNvcmF0aW9uTGluZShjb25zdCBMYXlvdXRJbnRlZ3JhdGlv
bjo6TGluZUl0ZXJhdG9yJiBsaW5lLCBmbG9hdCYgbWluTG9naWNhbFRvcCwgY29uc3QgUmVuZGVy
RWxlbWVudCogZGVjb3JhdGlvblJlbmRlcmVyLCBPcHRpb25TZXQ8VGV4dERlY29yYXRpb24+IHRl
eHREZWNvcmF0aW9uKQoreworICAgIGZvciAoYXV0byBydW4gPSBsaW5lLmZpcnN0UnVuKCk7IHJ1
bjsgcnVuLnRyYXZlcnNlTmV4dE9uTGluZSgpKSB7CisgICAgICAgIGlmIChydW4tPnJlbmRlcmVy
KCkuaXNPdXRPZkZsb3dQb3NpdGlvbmVkKCkpCisgICAgICAgICAgICBjb250aW51ZTsgLy8gUG9z
aXRpb25lZCBwbGFjZWhvbGRlcnMgZG9uJ3QgYWZmZWN0IGNhbGN1bGF0aW9ucy4KKworICAgICAg
ICBpZiAoIShydW4tPnN0eWxlKCkudGV4dERlY29yYXRpb25zSW5FZmZlY3QoKSAmIHRleHREZWNv
cmF0aW9uKSkKKyAgICAgICAgICAgIGNvbnRpbnVlOyAvLyBJZiB0aGUgdGV4dCBkZWNvcmF0aW9u
IGlzbid0IGluIGVmZmVjdCBvbiB0aGUgY2hpbGQsIHRoZW4gaXQgbXVzdCBiZSBvdXRzaWRlIG9m
IHxkZWNvcmF0aW9uUmVuZGVyZXJ8J3MgaGllcmFyY2h5LgorCisgICAgICAgIGlmIChkZWNvcmF0
aW9uUmVuZGVyZXIgJiYgZGVjb3JhdGlvblJlbmRlcmVyLT5pc1JlbmRlcklubGluZSgpICYmICFp
c0FuY2VzdG9yQW5kV2l0aGluQmxvY2soZG93bmNhc3Q8UmVuZGVySW5saW5lPigqZGVjb3JhdGlv
blJlbmRlcmVyKSwgJnJ1bi0+cmVuZGVyZXIoKSkpCisgICAgICAgICAgICBjb250aW51ZTsKKwor
ICAgICAgICBpZiAocnVuLT5pc1RleHQoKSB8fCBydW4tPnN0eWxlKCkudGV4dERlY29yYXRpb25T
a2lwKCkuaXNFbXB0eSgpKQorICAgICAgICAgICAgbWluTG9naWNhbFRvcCA9IHN0ZDo6bWluPGZs
b2F0PihtaW5Mb2dpY2FsVG9wLCBydW4tPmxvZ2ljYWxUb3AoKSk7CisgICAgfQorfQorCitzdGF0
aWMgdm9pZCBtYXhMb2dpY2FsQm90dG9tRm9yVGV4dERlY29yYXRpb25MaW5lKGNvbnN0IExheW91
dEludGVncmF0aW9uOjpMaW5lSXRlcmF0b3ImIGxpbmUsIGZsb2F0JiBtYXhMb2dpY2FsQm90dG9t
LCBjb25zdCBSZW5kZXJFbGVtZW50KiBkZWNvcmF0aW9uUmVuZGVyZXIsIE9wdGlvblNldDxUZXh0
RGVjb3JhdGlvbj4gdGV4dERlY29yYXRpb24pCit7CisgICAgZm9yIChhdXRvIHJ1biA9IGxpbmUu
Zmlyc3RSdW4oKTsgcnVuOyBydW4udHJhdmVyc2VOZXh0T25MaW5lKCkpIHsKKyAgICAgICAgaWYg
KHJ1bi0+cmVuZGVyZXIoKS5pc091dE9mRmxvd1Bvc2l0aW9uZWQoKSkKKyAgICAgICAgICAgIGNv
bnRpbnVlOyAvLyBQb3NpdGlvbmVkIHBsYWNlaG9sZGVycyBkb24ndCBhZmZlY3QgY2FsY3VsYXRp
b25zLgorCisgICAgICAgIGlmICghKHJ1bi0+c3R5bGUoKS50ZXh0RGVjb3JhdGlvbnNJbkVmZmVj
dCgpICYgdGV4dERlY29yYXRpb24pKQorICAgICAgICAgICAgY29udGludWU7IC8vIElmIHRoZSB0
ZXh0IGRlY29yYXRpb24gaXNuJ3QgaW4gZWZmZWN0IG9uIHRoZSBjaGlsZCwgdGhlbiBpdCBtdXN0
IGJlIG91dHNpZGUgb2YgfGRlY29yYXRpb25SZW5kZXJlcnwncyBoaWVyYXJjaHkuCisKKyAgICAg
ICAgaWYgKGRlY29yYXRpb25SZW5kZXJlciAmJiBkZWNvcmF0aW9uUmVuZGVyZXItPmlzUmVuZGVy
SW5saW5lKCkgJiYgIWlzQW5jZXN0b3JBbmRXaXRoaW5CbG9jayhkb3duY2FzdDxSZW5kZXJJbmxp
bmU+KCpkZWNvcmF0aW9uUmVuZGVyZXIpLCAmcnVuLT5yZW5kZXJlcigpKSkKKyAgICAgICAgICAg
IGNvbnRpbnVlOworCisgICAgICAgIGlmIChydW4tPmlzVGV4dCgpIHx8IHJ1bi0+c3R5bGUoKS50
ZXh0RGVjb3JhdGlvblNraXAoKS5pc0VtcHR5KCkpCisgICAgICAgICAgICBtYXhMb2dpY2FsQm90
dG9tID0gc3RkOjptYXg8ZmxvYXQ+KG1heExvZ2ljYWxCb3R0b20sIHJ1bi0+bG9naWNhbEJvdHRv
bSgpKTsKKyAgICB9Cit9CisKK3N0YXRpYyBjb25zdCBSZW5kZXJFbGVtZW50KiBlbmNsb3NpbmdS
ZW5kZXJlcldpdGhUZXh0RGVjb3JhdGlvbihjb25zdCBSZW5kZXJUZXh0JiByZW5kZXJlciwgT3B0
aW9uU2V0PFRleHREZWNvcmF0aW9uPiB0ZXh0RGVjb3JhdGlvbiwgYm9vbCBmaXJzdExpbmUpCit7
CisgICAgY29uc3QgUmVuZGVyRWxlbWVudCogY3VycmVudCA9IHJlbmRlcmVyLnBhcmVudCgpOwor
ICAgIGRvIHsKKyAgICAgICAgaWYgKGN1cnJlbnQtPmlzUmVuZGVyQmxvY2soKSkKKyAgICAgICAg
ICAgIHJldHVybiBjdXJyZW50OworICAgICAgICBpZiAoIWN1cnJlbnQtPmlzUmVuZGVySW5saW5l
KCkgfHwgY3VycmVudC0+aXNSdWJ5VGV4dCgpKQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7
CisKKyAgICAgICAgY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlVG9Vc2UgPSBmaXJzdExpbmUgPyBj
dXJyZW50LT5maXJzdExpbmVTdHlsZSgpIDogY3VycmVudC0+c3R5bGUoKTsKKyAgICAgICAgaWYg
KHN0eWxlVG9Vc2UudGV4dERlY29yYXRpb24oKSAmIHRleHREZWNvcmF0aW9uKQorICAgICAgICAg
ICAgcmV0dXJuIGN1cnJlbnQ7CisgICAgICAgIGN1cnJlbnQgPSBjdXJyZW50LT5wYXJlbnQoKTsK
KyAgICB9IHdoaWxlIChjdXJyZW50ICYmICghY3VycmVudC0+ZWxlbWVudCgpIHx8ICghaXM8SFRN
TEFuY2hvckVsZW1lbnQ+KCpjdXJyZW50LT5lbGVtZW50KCkpICYmICFjdXJyZW50LT5lbGVtZW50
KCktPmhhc1RhZ05hbWUoSFRNTE5hbWVzOjpmb250VGFnKSkpKTsKKworICAgIHJldHVybiBjdXJy
ZW50OworfQogICAgIAotZmxvYXQgY29tcHV0ZVVuZGVybGluZU9mZnNldChUZXh0VW5kZXJsaW5l
UG9zaXRpb24gdW5kZXJsaW5lUG9zaXRpb24sIFRleHRVbmRlcmxpbmVPZmZzZXQgdW5kZXJsaW5l
T2Zmc2V0LCBjb25zdCBGb250TWV0cmljcyYgZm9udE1ldHJpY3MsIGNvbnN0IExlZ2FjeUlubGlu
ZVRleHRCb3gqIGlubGluZVRleHRCb3gsIGZsb2F0IGRlZmF1bHRHYXApCitmbG9hdCBjb21wdXRl
VW5kZXJsaW5lT2Zmc2V0KFRleHRVbmRlcmxpbmVQb3NpdGlvbiB1bmRlcmxpbmVQb3NpdGlvbiwg
VGV4dFVuZGVybGluZU9mZnNldCB1bmRlcmxpbmVPZmZzZXQsIGNvbnN0IEZvbnRNZXRyaWNzJiBm
b250TWV0cmljcywgY29uc3QgTGF5b3V0SW50ZWdyYXRpb246OlRleHRSdW5JdGVyYXRvciYgdGV4
dFJ1biwgZmxvYXQgZGVmYXVsdEdhcCkKIHsKICAgICAvLyBUaGlzIHJlcHJlc2VudHMgdGhlIGdh
cCBiZXR3ZWVuIHRoZSBiYXNlbGluZSBhbmQgdGhlIGNsb3Nlc3QgZWRnZSBvZiB0aGUgdW5kZXJs
aW5lLgogICAgIGZsb2F0IGdhcCA9IHN0ZDo6bWF4PGludD4oMSwgc3RkOjpjZWlsKGRlZmF1bHRH
YXAgLyAyLjBmKSk7CkBAIC01MCw4ICsxMTgsOCBAQCBmbG9hdCBjb21wdXRlVW5kZXJsaW5lT2Zm
c2V0KFRleHRVbmRlcmxpbmVQb3NpdGlvbiB1bmRlcmxpbmVQb3NpdGlvbiwgVGV4dFVuZGVybAog
ICAgIAogICAgIGF1dG8gcmVzb2x2ZWRVbmRlcmxpbmVQb3NpdGlvbiA9IHVuZGVybGluZVBvc2l0
aW9uOwogICAgIGlmIChyZXNvbHZlZFVuZGVybGluZVBvc2l0aW9uID09IFRleHRVbmRlcmxpbmVQ
b3NpdGlvbjo6QXV0byAmJiB1bmRlcmxpbmVPZmZzZXQuaXNBdXRvKCkpIHsKLSAgICAgICAgaWYg
KGlubGluZVRleHRCb3gpCi0gICAgICAgICAgICByZXNvbHZlZFVuZGVybGluZVBvc2l0aW9uID0g
aW5saW5lVGV4dEJveC0+cm9vdCgpLmJhc2VsaW5lVHlwZSgpID09IElkZW9ncmFwaGljQmFzZWxp
bmUgPyBUZXh0VW5kZXJsaW5lUG9zaXRpb246OlVuZGVyIDogVGV4dFVuZGVybGluZVBvc2l0aW9u
OjpBdXRvOworICAgICAgICBpZiAodGV4dFJ1bikKKyAgICAgICAgICAgIHJlc29sdmVkVW5kZXJs
aW5lUG9zaXRpb24gPSB0ZXh0UnVuLmxpbmUoKS0+YmFzZWxpbmVUeXBlKCkgPT0gSWRlb2dyYXBo
aWNCYXNlbGluZSA/IFRleHRVbmRlcmxpbmVQb3NpdGlvbjo6VW5kZXIgOiBUZXh0VW5kZXJsaW5l
UG9zaXRpb246OkF1dG87CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIHJlc29sdmVkVW5kZXJs
aW5lUG9zaXRpb24gPSBUZXh0VW5kZXJsaW5lUG9zaXRpb246OkF1dG87CiAgICAgfQpAQCAtNjQs
MjIgKzEzMiwyMiBAQCBmbG9hdCBjb21wdXRlVW5kZXJsaW5lT2Zmc2V0KFRleHRVbmRlcmxpbmVQ
b3NpdGlvbiB1bmRlcmxpbmVQb3NpdGlvbiwgVGV4dFVuZGVybAogICAgIGNhc2UgVGV4dFVuZGVy
bGluZVBvc2l0aW9uOjpGcm9tRm9udDoKICAgICAgICAgcmV0dXJuIGZvbnRNZXRyaWNzLmFzY2Vu
dCgpICsgZm9udE1ldHJpY3MudW5kZXJsaW5lUG9zaXRpb24oKSArIHVuZGVybGluZU9mZnNldC5s
ZW5ndGhPcigwKTsKICAgICBjYXNlIFRleHRVbmRlcmxpbmVQb3NpdGlvbjo6VW5kZXI6IHsKLSAg
ICAgICAgQVNTRVJUKGlubGluZVRleHRCb3gpOworICAgICAgICBBU1NFUlQodGV4dFJ1bik7CiAg
ICAgICAgIC8vIFBvc2l0aW9uIHVuZGVybGluZSByZWxhdGl2ZSB0byB0aGUgYm90dG9tIGVkZ2Ug
b2YgdGhlIGxvd2VzdCBlbGVtZW50J3MgY29udGVudCBib3guCi0gICAgICAgIGNvbnN0IExlZ2Fj
eVJvb3RJbmxpbmVCb3gmIHJvb3RCb3ggPSBpbmxpbmVUZXh0Qm94LT5yb290KCk7Ci0gICAgICAg
IGNvbnN0IFJlbmRlckVsZW1lbnQqIGRlY29yYXRpb25SZW5kZXJlciA9IGlubGluZVRleHRCb3gt
PnBhcmVudCgpLT5yZW5kZXJlcigpLmVuY2xvc2luZ1JlbmRlcmVyV2l0aFRleHREZWNvcmF0aW9u
KFRleHREZWNvcmF0aW9uOjpVbmRlcmxpbmUsIGlubGluZVRleHRCb3gtPmlzRmlyc3RMaW5lKCkp
OworICAgICAgICBhdXRvIGxpbmUgPSB0ZXh0UnVuLmxpbmUoKTsKKyAgICAgICAgYXV0byogZGVj
b3JhdGlvblJlbmRlcmVyID0gZW5jbG9zaW5nUmVuZGVyZXJXaXRoVGV4dERlY29yYXRpb24odGV4
dFJ1bi0+cmVuZGVyZXIoKSwgVGV4dERlY29yYXRpb246OlVuZGVybGluZSwgbGluZS5pc0ZpcnN0
KCkpOwogICAgICAgICAKICAgICAgICAgZmxvYXQgb2Zmc2V0OwotICAgICAgICBpZiAoaW5saW5l
VGV4dEJveC0+cmVuZGVyZXIoKS5zdHlsZSgpLmlzRmxpcHBlZExpbmVzV3JpdGluZ01vZGUoKSkg
ewotICAgICAgICAgICAgb2Zmc2V0ID0gaW5saW5lVGV4dEJveC0+bG9naWNhbFRvcCgpOwotICAg
ICAgICAgICAgcm9vdEJveC5taW5Mb2dpY2FsVG9wRm9yVGV4dERlY29yYXRpb25MaW5lKG9mZnNl
dCwgZGVjb3JhdGlvblJlbmRlcmVyLCBUZXh0RGVjb3JhdGlvbjo6VW5kZXJsaW5lKTsKLSAgICAg
ICAgICAgIG9mZnNldCA9IGlubGluZVRleHRCb3gtPmxvZ2ljYWxUb3AoKSAtIG9mZnNldDsKKyAg
ICAgICAgaWYgKHRleHRSdW4tPnJlbmRlcmVyKCkuc3R5bGUoKS5pc0ZsaXBwZWRMaW5lc1dyaXRp
bmdNb2RlKCkpIHsKKyAgICAgICAgICAgIG9mZnNldCA9IHRleHRSdW4tPmxvZ2ljYWxUb3AoKTsK
KyAgICAgICAgICAgIG1pbkxvZ2ljYWxUb3BGb3JUZXh0RGVjb3JhdGlvbkxpbmUobGluZSwgb2Zm
c2V0LCBkZWNvcmF0aW9uUmVuZGVyZXIsIFRleHREZWNvcmF0aW9uOjpVbmRlcmxpbmUpOworICAg
ICAgICAgICAgb2Zmc2V0ID0gdGV4dFJ1bi0+bG9naWNhbFRvcCgpIC0gb2Zmc2V0OwogICAgICAg
ICB9IGVsc2UgewotICAgICAgICAgICAgb2Zmc2V0ID0gaW5saW5lVGV4dEJveC0+bG9naWNhbEJv
dHRvbSgpOwotICAgICAgICAgICAgcm9vdEJveC5tYXhMb2dpY2FsQm90dG9tRm9yVGV4dERlY29y
YXRpb25MaW5lKG9mZnNldCwgZGVjb3JhdGlvblJlbmRlcmVyLCBUZXh0RGVjb3JhdGlvbjo6VW5k
ZXJsaW5lKTsKLSAgICAgICAgICAgIG9mZnNldCAtPSBpbmxpbmVUZXh0Qm94LT5sb2dpY2FsQm90
dG9tKCk7CisgICAgICAgICAgICBvZmZzZXQgPSB0ZXh0UnVuLT5sb2dpY2FsQm90dG9tKCk7Cisg
ICAgICAgICAgICBtYXhMb2dpY2FsQm90dG9tRm9yVGV4dERlY29yYXRpb25MaW5lKGxpbmUsIG9m
ZnNldCwgZGVjb3JhdGlvblJlbmRlcmVyLCBUZXh0RGVjb3JhdGlvbjo6VW5kZXJsaW5lKTsKKyAg
ICAgICAgICAgIG9mZnNldCAtPSB0ZXh0UnVuLT5sb2dpY2FsQm90dG9tKCk7CiAgICAgICAgIH0K
LSAgICAgICAgYXV0byBkZXNpcmVkT2Zmc2V0ID0gaW5saW5lVGV4dEJveC0+bG9naWNhbEhlaWdo
dCgpICsgZ2FwICsgc3RkOjptYXgob2Zmc2V0LCAwLjBmKSArIHVuZGVybGluZU9mZnNldC5sZW5n
dGhPcigwKTsKKyAgICAgICAgYXV0byBkZXNpcmVkT2Zmc2V0ID0gdGV4dFJ1bi0+bG9naWNhbEhl
aWdodCgpICsgZ2FwICsgc3RkOjptYXgob2Zmc2V0LCAwLjBmKSArIHVuZGVybGluZU9mZnNldC5s
ZW5ndGhPcigwKTsKICAgICAgICAgcmV0dXJuIHN0ZDo6bWF4PGZsb2F0PihkZXNpcmVkT2Zmc2V0
LCBmb250TWV0cmljcy5hc2NlbnQoKSk7CiAgICAgfQogICAgIH0KQEAgLTk3LDkgKzE2NSw5IEBA
IFdhdnlTdHJva2VQYXJhbWV0ZXJzIGdldFdhdnlTdHJva2VQYXJhbWV0ZXJzKGZsb2F0IGZvbnRT
aXplKQogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLUdseXBoT3ZlcmZsb3cgdmlzdWFsT3ZlcmZs
b3dGb3JEZWNvcmF0aW9ucyhjb25zdCBSZW5kZXJTdHlsZSYgbGluZVN0eWxlLCBjb25zdCBMZWdh
Y3lJbmxpbmVUZXh0Qm94KiBpbmxpbmVUZXh0Qm94KQorR2x5cGhPdmVyZmxvdyB2aXN1YWxPdmVy
Zmxvd0ZvckRlY29yYXRpb25zKGNvbnN0IFJlbmRlclN0eWxlJiBsaW5lU3R5bGUsIGNvbnN0IExh
eW91dEludGVncmF0aW9uOjpUZXh0UnVuSXRlcmF0b3ImIHRleHRSdW4pCiB7Ci0gICAgQVNTRVJU
KCFpbmxpbmVUZXh0Qm94IHx8IGlubGluZVRleHRCb3gtPmxpbmVTdHlsZSgpID09IGxpbmVTdHls
ZSk7CisgICAgQVNTRVJUKCF0ZXh0UnVuIHx8IHRleHRSdW4tPnN0eWxlKCkgPT0gbGluZVN0eWxl
KTsKICAgICAKICAgICBhdXRvIGRlY29yYXRpb24gPSBsaW5lU3R5bGUudGV4dERlY29yYXRpb25z
SW5FZmZlY3QoKTsKICAgICBpZiAoZGVjb3JhdGlvbi5pc0VtcHR5KCkpCkBAIC0xMjcsNyArMTk1
LDcgQEAgR2x5cGhPdmVyZmxvdyB2aXN1YWxPdmVyZmxvd0ZvckRlY29yYXRpb25zKGNvbnN0IFJl
bmRlclN0eWxlJiBsaW5lU3R5bGUsIGNvbnN0IEwKICAgICAgICAgaW50IHVuZGVybGluZU9mZnNl
dCA9IDE7CiAgICAgICAgIGZsb2F0IHRleHREZWNvcmF0aW9uQmFzZUZvbnRTaXplID0gMTY7CiAg
ICAgICAgIGF1dG8gZGVmYXVsdEdhcCA9IGxpbmVTdHlsZS5jb21wdXRlZEZvbnRTaXplKCkgLyB0
ZXh0RGVjb3JhdGlvbkJhc2VGb250U2l6ZTsKLSAgICAgICAgdW5kZXJsaW5lT2Zmc2V0ICs9IGNv
bXB1dGVVbmRlcmxpbmVPZmZzZXQobGluZVN0eWxlLnRleHRVbmRlcmxpbmVQb3NpdGlvbigpLCBs
aW5lU3R5bGUudGV4dFVuZGVybGluZU9mZnNldCgpLCBsaW5lU3R5bGUuZm9udE1ldHJpY3MoKSwg
aW5saW5lVGV4dEJveCwgZGVmYXVsdEdhcCk7CisgICAgICAgIHVuZGVybGluZU9mZnNldCArPSBj
b21wdXRlVW5kZXJsaW5lT2Zmc2V0KGxpbmVTdHlsZS50ZXh0VW5kZXJsaW5lUG9zaXRpb24oKSwg
bGluZVN0eWxlLnRleHRVbmRlcmxpbmVPZmZzZXQoKSwgbGluZVN0eWxlLmZvbnRNZXRyaWNzKCks
IHRleHRSdW4sIGRlZmF1bHRHYXApOwogICAgICAgICBpZiAoZGVjb3JhdGlvblN0eWxlID09IFRl
eHREZWNvcmF0aW9uU3R5bGU6OldhdnkpIHsKICAgICAgICAgICAgIG92ZXJmbG93UmVzdWx0LmV4
dGVuZEJvdHRvbSh1bmRlcmxpbmVPZmZzZXQgKyB3YXZ5T2Zmc2V0ICsgd2F2eVN0cm9rZVBhcmFt
ZXRlcnMuY29udHJvbFBvaW50RGlzdGFuY2UgKyBzdHJva2VUaGlja25lc3MgLSBoZWlnaHQpOwog
ICAgICAgICAgICAgb3ZlcmZsb3dSZXN1bHQuZXh0ZW5kVG9wKC0odW5kZXJsaW5lT2Zmc2V0ICsg
d2F2eU9mZnNldCAtIHdhdnlTdHJva2VQYXJhbWV0ZXJzLmNvbnRyb2xQb2ludERpc3RhbmNlIC0g
c3Ryb2tlVGhpY2tuZXNzKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9Jbmxp
bmVUZXh0Qm94U3R5bGUuaCBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL0lubGluZVRleHRCb3hTdHls
ZS5oCmluZGV4IGE5YjA0NGNkMmFlNS4uYjQyNTFhNjJkMzI2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9zdHlsZS9JbmxpbmVUZXh0Qm94U3R5bGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9z
dHlsZS9JbmxpbmVUZXh0Qm94U3R5bGUuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMTQgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdo
dCAoQykgMjAxNC0yMDIxIEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI2LDYgKzI2LDcgQEAKICNwcmFnbWEgb25jZQog
CiAjaW5jbHVkZSAiRm9udENhc2NhZGUuaCIKKyNpbmNsdWRlICJMYXlvdXRJbnRlZ3JhdGlvblJ1
bkl0ZXJhdG9yLmgiCiAjaW5jbHVkZSAiUmVuZGVyU3R5bGVDb25zdGFudHMuaCIKIAogbmFtZXNw
YWNlIFdlYkNvcmUgewpAQCAtNTEsNyArNTIsNyBAQCBzdHJ1Y3QgV2F2eVN0cm9rZVBhcmFtZXRl
cnMgewogICAgIGZsb2F0IHN0ZXAgeyAwIH07CiB9OwogV2F2eVN0cm9rZVBhcmFtZXRlcnMgZ2V0
V2F2eVN0cm9rZVBhcmFtZXRlcnMoZmxvYXQgZm9udFNpemUpOwotR2x5cGhPdmVyZmxvdyB2aXN1
YWxPdmVyZmxvd0ZvckRlY29yYXRpb25zKGNvbnN0IFJlbmRlclN0eWxlJiBsaW5lU3R5bGUsIGNv
bnN0IExlZ2FjeUlubGluZVRleHRCb3gqKTsKLWZsb2F0IGNvbXB1dGVVbmRlcmxpbmVPZmZzZXQo
VGV4dFVuZGVybGluZVBvc2l0aW9uLCBUZXh0VW5kZXJsaW5lT2Zmc2V0LCBjb25zdCBGb250TWV0
cmljcyYsIGNvbnN0IExlZ2FjeUlubGluZVRleHRCb3gqLCBmbG9hdCB0ZXh0RGVjb3JhdGlvblRo
aWNrbmVzcyk7CitHbHlwaE92ZXJmbG93IHZpc3VhbE92ZXJmbG93Rm9yRGVjb3JhdGlvbnMoY29u
c3QgUmVuZGVyU3R5bGUmIGxpbmVTdHlsZSwgY29uc3QgTGF5b3V0SW50ZWdyYXRpb246OlRleHRS
dW5JdGVyYXRvciYpOworZmxvYXQgY29tcHV0ZVVuZGVybGluZU9mZnNldChUZXh0VW5kZXJsaW5l
UG9zaXRpb24sIFRleHRVbmRlcmxpbmVPZmZzZXQsIGNvbnN0IEZvbnRNZXRyaWNzJiwgY29uc3Qg
TGF5b3V0SW50ZWdyYXRpb246OlRleHRSdW5JdGVyYXRvciYsIGZsb2F0IHRleHREZWNvcmF0aW9u
VGhpY2tuZXNzKTsKICAgICAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
</data>

          </attachment>
      

    </bug>

</bugzilla>