<?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>302757</bug_id>
          
          <creation_ts>2025-11-18 19:27:58 -0800</creation_ts>
          <short_desc>[cleanup] Add contentfulLineCount to InlineLayoutState</short_desc>
          <delta_ts>2025-11-19 11:41:14 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="alan">zalan</reporter>
          <assigned_to name="alan">zalan</assigned_to>
          <cc>koivisto</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>2159768</commentid>
    <comment_count>0</comment_count>
    <who name="alan">zalan</who>
    <bug_when>2025-11-18 19:27:58 -0800</bug_when>
    <thetext>ssia</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2159772</commentid>
    <comment_count>1</comment_count>
      <attachid>477428</attachid>
    <who name="alan">zalan</who>
    <bug_when>2025-11-18 19:37:56 -0800</bug_when>
    <thetext>Created attachment 477428
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2159883</commentid>
    <comment_count>2</comment_count>
      <attachid>477431</attachid>
    <who name="alan">zalan</who>
    <bug_when>2025-11-19 05:39:33 -0800</bug_when>
    <thetext>Created attachment 477431
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2159908</commentid>
    <comment_count>3</comment_count>
      <attachid>477435</attachid>
    <who name="alan">zalan</who>
    <bug_when>2025-11-19 07:52:38 -0800</bug_when>
    <thetext>Created attachment 477435
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2159931</commentid>
    <comment_count>4</comment_count>
      <attachid>477437</attachid>
    <who name="alan">zalan</who>
    <bug_when>2025-11-19 09:06:02 -0800</bug_when>
    <thetext>Created attachment 477437
[fast-cq]Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2160011</commentid>
    <comment_count>5</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2025-11-19 11:40:03 -0800</bug_when>
    <thetext>Committed 303272@main (5ee47e7815f2): &lt;https://commits.webkit.org/303272@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 477437.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2160013</commentid>
    <comment_count>6</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2025-11-19 11:41:14 -0800</bug_when>
    <thetext>&lt;rdar://problem/165066685&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>477428</attachid>
            <date>2025-11-18 19:37:56 -0800</date>
            <delta_ts>2025-11-19 05:39:31 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-302757-20251118193755.patch</filename>
            <type>text/plain</type>
            <size>17414</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">RnJvbSAwN2EwOGVkOWVjM2RlMTBhN2ZhMzgzNzI2N2M1MTRkZTg2YTYzMjcwIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBBbGFuIEJhcmFkbGF5IDx6YWxhbkBhcHBsZS5jb20+CkRhdGU6
IFR1ZSwgMTggTm92IDIwMjUgMTk6Mjg6MjYgLTA4MDAKU3ViamVjdDogW1BBVENIXSBbY2xlYW51
cF0gQWRkIGNvbnRlbnRmdWxMaW5lQ291bnQgdG8gSW5saW5lTGF5b3V0U3RhdGUKIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zMDI3NTcKClJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgoKSW5zdGVhZCBvZiByZWx5aW5nIG9uIGEgbG9jYWwgc3RhY2sgdmFyaWFibGUg
Zm9yIHRoZSBjb250ZW50ZnVsIGxpbmUgY291bnQsIHdlIHNob3VsZCB1c2UgSW5saW5lTGF5b3V0
U3RhdGUgdG8gbWFpbnRhaW4gaXQuIEl0IGhlbHBzIHdpdGggd2UgbmVlZCB0byBrZWVwIHRyYWNr
IG9mCmxpbmVzIGNvbWluZyBmcm9tIG5lc3RlZCBibG9jayBjb250ZW50IChpbmxpbmUtYmxvY2sg
b3IgYmxvY2staW4taW5saW5lKS4KCiogU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdD
b250ZXh0cy9pbmxpbmUvSW5saW5lRm9ybWF0dGluZ0NvbnRleHQuY3BwOgooV2ViQ29yZTo6TGF5
b3V0OjpJbmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6bGF5b3V0KToKKFdlYkNvcmU6OkxheW91dDo6
SW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6OmxpbmVMYXlvdXQpOgooV2ViQ29yZTo6TGF5b3V0OjpJ
bmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6Y3JlYXRlRGlzcGxheUNvbnRlbnRGb3JJbmxpbmVDb250
ZW50KToKKFdlYkNvcmU6OkxheW91dDo6SW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6OmNyZWF0ZURp
c3BsYXlDb250ZW50Rm9yTGluZUZyb21DYWNoZWRDb250ZW50KToKKFdlYkNvcmU6OkxheW91dDo6
SW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6OmNyZWF0ZURpc3BsYXlDb250ZW50Rm9yRW1wdHlJbmxp
bmVDb250ZW50KToKKiBTb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lu
bGluZS9JbmxpbmVGb3JtYXR0aW5nQ29udGV4dC5oOgoqIFNvdXJjZS9XZWJDb3JlL2xheW91dC9m
b3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUZvcm1hdHRpbmdVdGlscy5jcHA6CihXZWJD
b3JlOjpMYXlvdXQ6OklubGluZUZvcm1hdHRpbmdVdGlsczo6c2hvdWxkRGlzY2FyZFJlbWFpbmlu
Z0NvbnRlbnRJbkJsb2NrRGlyZWN0aW9uIGNvbnN0KToKKiBTb3VyY2UvV2ViQ29yZS9sYXlvdXQv
Zm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVGb3JtYXR0aW5nVXRpbHMuaDoKKiBTb3Vy
Y2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVMYXlvdXRT
dGF0ZS5oOgooV2ViQ29yZTo6TGF5b3V0OjpJbmxpbmVMYXlvdXRTdGF0ZTo6Y29udGVudGZ1bExp
bmVDb3VudCBjb25zdCk6CihXZWJDb3JlOjpMYXlvdXQ6OklubGluZUxheW91dFN0YXRlOjpzZXRD
b250ZW50ZnVsTGluZUNvdW50KToKKiBTb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24v
TGF5b3V0SW50ZWdyYXRpb25Cb3hUcmVlVXBkYXRlci5jcHA6CihXZWJDb3JlOjpMYXlvdXRJbnRl
Z3JhdGlvbjo6c2hvd0lubGluZUNvbnRlbnQpOgotLS0KIC4uLi9pbmxpbmUvSW5saW5lRm9ybWF0
dGluZ0NvbnRleHQuY3BwICAgICAgICB8IDM1ICsrKysrKysrKy0tLS0tLS0tLS0KIC4uLi9pbmxp
bmUvSW5saW5lRm9ybWF0dGluZ0NvbnRleHQuaCAgICAgICAgICB8ICAyICstCiAuLi4vaW5saW5l
L0lubGluZUZvcm1hdHRpbmdVdGlscy5jcHAgICAgICAgICAgfCAgNyArKy0tCiAuLi4vaW5saW5l
L0lubGluZUZvcm1hdHRpbmdVdGlscy5oICAgICAgICAgICAgfCAgMiArLQogLi4uL2lubGluZS9J
bmxpbmVMYXlvdXRTdGF0ZS5oICAgICAgICAgICAgICAgIHwgIDQgKysrCiAuLi4vTGF5b3V0SW50
ZWdyYXRpb25Cb3hUcmVlVXBkYXRlci5jcHAgICAgICAgfCAgNCArKy0KIDYgZmlsZXMgY2hhbmdl
ZCwgMzAgaW5zZXJ0aW9ucygrKSwgMjQgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lRm9ybWF0dGlu
Z0NvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9p
bmxpbmUvSW5saW5lRm9ybWF0dGluZ0NvbnRleHQuY3BwCmluZGV4IGJkZmU1NGVlM2MyZi4uY2M4
MmI5MjJmZGQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0Nv
bnRleHRzL2lubGluZS9JbmxpbmVGb3JtYXR0aW5nQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lRm9ybWF0dGluZ0Nv
bnRleHQuY3BwCkBAIC0xMTcsNyArMTE3LDcgQEAgSW5saW5lTGF5b3V0UmVzdWx0IElubGluZUZv
cm1hdHRpbmdDb250ZXh0OjpsYXlvdXQoY29uc3QgQ29uc3RyYWludHNGb3JJbmxpbmVDb24KIHsK
ICAgICByZWJ1aWxkSW5saW5lSXRlbUxpc3RJZk5lZWRlZChsaW5lRGFtYWdlKTsKIAotICAgIGlm
IChmb3JtYXR0aW5nVXRpbHMoKS5zaG91bGREaXNjYXJkUmVtYWluaW5nQ29udGVudEluQmxvY2tE
aXJlY3Rpb24oeyB9KSkgeworICAgIGlmIChmb3JtYXR0aW5nVXRpbHMoKS5zaG91bGREaXNjYXJk
UmVtYWluaW5nQ29udGVudEluQmxvY2tEaXJlY3Rpb24oKSkgewogICAgICAgICAvLyBUaGlzIGlu
bGluZSBjb250ZW50IG1heSBiZSBjb21wbGV0ZWx5IGNvbGxhcHNlZCAoaS5lLiBhZnRlciBjbGFt
cGVkIGJsb2NrIGNvbnRhaW5lcikKICAgICAgICAgcmVzZXRCb3hHZW9tZXRyaWVzRm9yRGlzY2Fy
ZGVkQ29udGVudCh7IHsgfSwgeyBpbmxpbmVDb250ZW50Q2FjaGUoKS5pbmxpbmVJdGVtcygpLmNv
bnRlbnQoKS5zaXplKCksIHsgfSB9IH0sIHsgfSk7CiAgICAgICAgIHJldHVybiB7IH07CkBAIC0x
NTgsNiArMTU4LDcgQEAgSW5saW5lTGF5b3V0UmVzdWx0IElubGluZUZvcm1hdHRpbmdDb250ZXh0
OjpsYXlvdXQoY29uc3QgQ29uc3RyYWludHNGb3JJbmxpbmVDb24KICAgICAgICAgfQogICAgICAg
ICBhdXRvIGxhc3RMaW5lSW5kZXggPSBsaW5lRGFtYWdlLT5sYXlvdXRTdGFydFBvc2l0aW9uKCkt
PmxpbmVJbmRleCAtIDE7CiAgICAgICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgYmUgYWJsZSB0byBl
eHRyYWN0IHRoZSBsYXN0IGxpbmUgaW5mb3JtYXRpb24gYW5kIHByb3ZpZGUgaXQgdG8gbGF5b3V0
IGFzICJwcmV2aW91cyBsaW5lIiAoZW5kcyBpbiBsaW5lIGJyZWFrIGFuZCBpbmxpbmUgZGlyZWN0
aW9uKS4KKyAgICAgICAgbGF5b3V0U3RhdGUoKS5zZXRDb250ZW50ZnVsTGluZUNvdW50KGxhc3RM
aW5lSW5kZXgpOwogICAgICAgICByZXR1cm4gUHJldmlvdXNMaW5lIHsgbGFzdExpbmVJbmRleCwg
eyB9LCB7IH0sIHsgfSwgeyB9IH07CiAgICAgfTsKIApAQCAtMzAxLDEzICszMDIsMTIgQEAgSW5s
aW5lTGF5b3V0UmVzdWx0IElubGluZUZvcm1hdHRpbmdDb250ZXh0OjpsaW5lTGF5b3V0KEFic3Ry
YWN0TGluZUJ1aWxkZXImIGxpbmUKICAgICBpZiAoIW5lZWRzTGF5b3V0UmFuZ2Uuc3RhcnQpCiAg
ICAgICAgIGxheW91dFJlc3VsdC5kaXNwbGF5Q29udGVudC5ib3hlcy5yZXNlcnZlSW5pdGlhbENh
cGFjaXR5KGVzdGltYXRlZERpc3BsYXlCb3hTaXplKGlubGluZUl0ZW1MaXN0LnNpemUoKSkpOwog
CisgICAgYXV0byYgaW5saW5lTGF5b3V0U3RhdGUgPSBsYXlvdXRTdGF0ZSgpOwogICAgIGF1dG8g
ZmxvYXRpbmdDb250ZXh0ID0gdGhpcy0+ZmxvYXRpbmdDb250ZXh0KCk7CiAgICAgYXV0byBsaW5l
TG9naWNhbFRvcCA9IElubGluZUxheW91dFVuaXQgeyBjb25zdHJhaW50cy5sb2dpY2FsVG9wKCkg
fTsKICAgICBhdXRvIHByZXZpb3VzTGluZUVuZCA9IHN0ZDo6b3B0aW9uYWw8SW5saW5lSXRlbVBv
c2l0aW9uPiB7IH07CiAgICAgYXV0byBsZWFkaW5nSW5saW5lSXRlbVBvc2l0aW9uID0gbmVlZHNM
YXlvdXRSYW5nZS5zdGFydDsKLSAgICBhdXRvIHBhcnRpYWxMYXlvdXRTdGFydEluZGV4ID0gcHJl
dmlvdXNMaW5lID8gc3RkOjptYWtlX29wdGlvbmFsKHByZXZpb3VzTGluZS0+bGluZUluZGV4KSA6
IHN0ZDo6bnVsbG9wdDsKICAgICBhdXRvIGlzRmlyc3RGb3JtYXR0ZWRMaW5lQ2FuZGlkYXRlID0g
dHJ1ZTsKLSAgICBzaXplX3QgbnVtYmVyT2ZDb250ZW50ZnVsTGluZXMgPSBwYXJ0aWFsTGF5b3V0
U3RhcnRJbmRleCA/ICpwYXJ0aWFsTGF5b3V0U3RhcnRJbmRleCArIDEgOiAwbHU7CiAgICAgd2hp
bGUgKHRydWUpIHsKIAogICAgICAgICBhdXRvIGxpbmVJbml0aWFsUmVjdCA9IElubGluZVJlY3Qg
eyBsaW5lTG9naWNhbFRvcCwgY29uc3RyYWludHMuaG9yaXpvbnRhbCgpLmxvZ2ljYWxMZWZ0LCBj
b25zdHJhaW50cy5ob3Jpem9udGFsKCkubG9naWNhbFdpZHRoLCBmb3JtYXR0aW5nVXRpbHMoKS5p
bml0aWFsTGluZUhlaWdodCghcHJldmlvdXNMaW5lLmhhc192YWx1ZSgpKSB9OwpAQCAtMzE2LDcg
KzMxNiw4IEBAIElubGluZUxheW91dFJlc3VsdCBJbmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6bGlu
ZUxheW91dChBYnN0cmFjdExpbmVCdWlsZGVyJiBsaW5lCiAKICAgICAgICAgYXV0byBsaW5lTGF5
b3V0UmVzdWx0ID0gbGluZUJ1aWxkZXIubGF5b3V0SW5saW5lQ29udGVudChsaW5lSW5wdXQsIHBy
ZXZpb3VzTGluZSwgaXNGaXJzdEZvcm1hdHRlZExpbmVDYW5kaWRhdGUpOwogICAgICAgICBhdXRv
IGxpbmVCb3ggPSBMaW5lQm94QnVpbGRlciB7ICp0aGlzLCBsaW5lTGF5b3V0UmVzdWx0IH0uYnVp
bGQobGluZUluZGV4KTsKLSAgICAgICAgYXV0byBsaW5lTG9naWNhbFJlY3QgPSBjcmVhdGVEaXNw
bGF5Q29udGVudEZvcklubGluZUNvbnRlbnQobGluZUJveCwgbGluZUxheW91dFJlc3VsdCwgY29u
c3RyYWludHMsIGxheW91dFJlc3VsdC5kaXNwbGF5Q29udGVudCwgbnVtYmVyT2ZDb250ZW50ZnVs
TGluZXMpOworICAgICAgICBpbmxpbmVMYXlvdXRTdGF0ZS5zZXRDb250ZW50ZnVsTGluZUNvdW50
KGlubGluZUxheW91dFN0YXRlLmNvbnRlbnRmdWxMaW5lQ291bnQoKSArIChsaW5lQm94Lmhhc0Nv
bnRlbnQoKSA/IDEgOiAwKSk7CisgICAgICAgIGF1dG8gbGluZUxvZ2ljYWxSZWN0ID0gY3JlYXRl
RGlzcGxheUNvbnRlbnRGb3JJbmxpbmVDb250ZW50KGxpbmVCb3gsIGxpbmVMYXlvdXRSZXN1bHQs
IGNvbnN0cmFpbnRzLCBsYXlvdXRSZXN1bHQuZGlzcGxheUNvbnRlbnQpOwogICAgICAgICB1cGRh
dGVCb3hHZW9tZXRyeUZvclBsYWNlZEZsb2F0cyhsaW5lTGF5b3V0UmVzdWx0LmZsb2F0Q29udGVu
dC5wbGFjZWRGbG9hdHMpOwogICAgICAgICB1cGRhdGVMYXlvdXRTdGF0ZVdpdGhMaW5lTGF5b3V0
UmVzdWx0KGxpbmVMYXlvdXRSZXN1bHQsIGxpbmVMb2dpY2FsUmVjdCwgZmxvYXRpbmdDb250ZXh0
KTsKIApAQCAtMzMzLDcgKzMzNCw3IEBAIElubGluZUxheW91dFJlc3VsdCBJbmxpbmVGb3JtYXR0
aW5nQ29udGV4dDo6bGluZUxheW91dChBYnN0cmFjdExpbmVCdWlsZGVyJiBsaW5lCiAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgfQogCi0gICAgICAgIGlmIChmb3JtYXR0aW5nVXRpbHMoKS5z
aG91bGREaXNjYXJkUmVtYWluaW5nQ29udGVudEluQmxvY2tEaXJlY3Rpb24obnVtYmVyT2ZDb250
ZW50ZnVsTGluZXMpKSB7CisgICAgICAgIGlmIChmb3JtYXR0aW5nVXRpbHMoKS5zaG91bGREaXNj
YXJkUmVtYWluaW5nQ29udGVudEluQmxvY2tEaXJlY3Rpb24oKSkgewogICAgICAgICAgICAgcmVz
ZXRCb3hHZW9tZXRyaWVzRm9yRGlzY2FyZGVkQ29udGVudCh7IGxlYWRpbmdJbmxpbmVJdGVtUG9z
aXRpb24sIG5lZWRzTGF5b3V0UmFuZ2UuZW5kIH0sIGxpbmVMYXlvdXRSZXN1bHQuZmxvYXRDb250
ZW50LnN1c3BlbmRlZEZsb2F0cyk7CiAgICAgICAgICAgICBsYXlvdXRSZXN1bHQucmFuZ2UgPSAh
aXNQYXJ0aWFsTGF5b3V0ID8gSW5saW5lTGF5b3V0UmVzdWx0OjpSYW5nZTo6RnVsbCA6IElubGlu
ZUxheW91dFJlc3VsdDo6UmFuZ2U6OkZ1bGxGcm9tRGFtYWdlOwogICAgICAgICAgICAgbGF5b3V0
UmVzdWx0LmRpZERpc2NhcmRDb250ZW50ID0gdHJ1ZTsKQEAgLTM0NSw3ICszNDYsNyBAQCBJbmxp
bmVMYXlvdXRSZXN1bHQgSW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6OmxpbmVMYXlvdXQoQWJzdHJh
Y3RMaW5lQnVpbGRlciYgbGluZQogICAgICAgICBpc0ZpcnN0Rm9ybWF0dGVkTGluZUNhbmRpZGF0
ZSAmPSAhbGluZUxheW91dFJlc3VsdC5oYXNJbmZsb3dDb250ZW50KCk7CiAgICAgICAgIGxpbmVM
b2dpY2FsVG9wID0gZm9ybWF0dGluZ1V0aWxzKCkubG9naWNhbFRvcEZvck5leHRMaW5lKGxpbmVM
YXlvdXRSZXN1bHQsIGxpbmVMb2dpY2FsUmVjdCwgZmxvYXRpbmdDb250ZXh0KTsKICAgICB9Ci0g
ICAgSW5saW5lRGlzcGxheUxpbmVCdWlsZGVyOjphZGRMZWdhY3lMaW5lQ2xhbXBUcmFpbGluZ0xp
bmtCb3hJZkFwcGxpY2FibGUoKnRoaXMsIGxheW91dFN0YXRlKCksIGxheW91dFJlc3VsdC5kaXNw
bGF5Q29udGVudCk7CisgICAgSW5saW5lRGlzcGxheUxpbmVCdWlsZGVyOjphZGRMZWdhY3lMaW5l
Q2xhbXBUcmFpbGluZ0xpbmtCb3hJZkFwcGxpY2FibGUoKnRoaXMsIGlubGluZUxheW91dFN0YXRl
LCBsYXlvdXRSZXN1bHQuZGlzcGxheUNvbnRlbnQpOwogICAgIHJldHVybiBsYXlvdXRSZXN1bHQ7
CiB9CiAKQEAgLTQxNywyNSArNDE4LDIzIEBAIHZvaWQgSW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6
OnVwZGF0ZUJveEdlb21ldHJ5Rm9yUGxhY2VkRmxvYXRzKGNvbnN0IExpbmVMYXlvdXRSCiAgICAg
fQogfQogCi1JbmxpbmVSZWN0IElubGluZUZvcm1hdHRpbmdDb250ZXh0OjpjcmVhdGVEaXNwbGF5
Q29udGVudEZvcklubGluZUNvbnRlbnQoY29uc3QgTGluZUJveCYgbGluZUJveCwgY29uc3QgTGlu
ZUxheW91dFJlc3VsdCYgbGluZUxheW91dFJlc3VsdCwgY29uc3QgQ29uc3RyYWludHNGb3JJbmxp
bmVDb250ZW50JiBjb25zdHJhaW50cywgSW5saW5lRGlzcGxheTo6Q29udGVudCYgZGlzcGxheUNv
bnRlbnQsIHNpemVfdCYgbnVtYmVyT2ZQcmV2aW91c0xDb250ZW50ZnVsTGluZXMpCitJbmxpbmVS
ZWN0IElubGluZUZvcm1hdHRpbmdDb250ZXh0OjpjcmVhdGVEaXNwbGF5Q29udGVudEZvcklubGlu
ZUNvbnRlbnQoY29uc3QgTGluZUJveCYgbGluZUJveCwgY29uc3QgTGluZUxheW91dFJlc3VsdCYg
bGluZUxheW91dFJlc3VsdCwgY29uc3QgQ29uc3RyYWludHNGb3JJbmxpbmVDb250ZW50JiBjb25z
dHJhaW50cywgSW5saW5lRGlzcGxheTo6Q29udGVudCYgZGlzcGxheUNvbnRlbnQpCiB7Ci0gICAg
YXV0byBsaW5lQ2xhbXAgPSBsYXlvdXRTdGF0ZSgpLnBhcmVudEJsb2NrTGF5b3V0U3RhdGUoKS5s
aW5lQ2xhbXAoKTsKKyAgICBhdXRvJiBpbmxpbmVMYXlvdXRTdGF0ZSA9IGxheW91dFN0YXRlKCk7
CisgICAgYXV0byBsaW5lQ2xhbXAgPSBpbmxpbmVMYXlvdXRTdGF0ZS5wYXJlbnRCbG9ja0xheW91
dFN0YXRlKCkubGluZUNsYW1wKCk7CiAgICAgYXV0byBpc0xlZ2FjeUxpbmVDbGFtcCA9IGxpbmVD
bGFtcCAmJiBsaW5lQ2xhbXAtPmlzTGVnYWN5OwogICAgIGF1dG8gbnVtYmVyT2ZWaXNpYmxlTGlu
ZXNBbGxvd2VkID0gbGluZUNsYW1wID8gc3RkOjptYWtlX29wdGlvbmFsKGxpbmVDbGFtcC0+bWF4
aW11bUxpbmVzKSA6IHN0ZDo6bnVsbG9wdDsKIAotICAgIGF1dG8gbnVtYmVyT2ZMaW5lc1dpdGhJ
bmxpbmVDb250ZW50ID0gbnVtYmVyT2ZQcmV2aW91c0xDb250ZW50ZnVsTGluZXMgKyAobGluZUxh
eW91dFJlc3VsdC5oYXNJbmxpbmVDb250ZW50KCkgPyAxIDogMCk7Ci0gICAgYXV0byBsaW5lSXNG
dWxseVRydW5jYXRlZEluQmxvY2tEaXJlY3Rpb24gPSBudW1iZXJPZkxpbmVzV2l0aElubGluZUNv
bnRlbnQgPiBudW1iZXJPZlZpc2libGVMaW5lc0FsbG93ZWQudmFsdWVfb3IobnVtYmVyT2ZMaW5l
c1dpdGhJbmxpbmVDb250ZW50KTsKKyAgICBhdXRvIGxpbmVJc0Z1bGx5VHJ1bmNhdGVkSW5CbG9j
a0RpcmVjdGlvbiA9IG51bWJlck9mVmlzaWJsZUxpbmVzQWxsb3dlZCA/IGlubGluZUxheW91dFN0
YXRlLmNvbnRlbnRmdWxMaW5lQ291bnQoKSA+ICpudW1iZXJPZlZpc2libGVMaW5lc0FsbG93ZWQg
OiBmYWxzZTsKICAgICBhdXRvIGRpc3BsYXlMaW5lID0gSW5saW5lRGlzcGxheUxpbmVCdWlsZGVy
IHsgKnRoaXMsIGNvbnN0cmFpbnRzIH0uYnVpbGQobGluZUxheW91dFJlc3VsdCwgbGluZUJveCwg
bGluZUlzRnVsbHlUcnVuY2F0ZWRJbkJsb2NrRGlyZWN0aW9uKTsKICAgICBhdXRvIGJveGVzID0g
SW5saW5lRGlzcGxheUNvbnRlbnRCdWlsZGVyIHsgKnRoaXMsIGNvbnN0cmFpbnRzLCBsaW5lQm94
LCBkaXNwbGF5TGluZSB9LmJ1aWxkKGxpbmVMYXlvdXRSZXN1bHQpOwogICAgIGRpc3BsYXlMaW5l
LnNldEJveENvdW50KGJveGVzLnNpemUoKSk7CiAKLSAgICAvLyBOb24tY29udGVudGZ1bCBsaW5l
cyBhcmUgcHJvZHVjZWQgYnkgY2VydGFpbiB0cmFpbGluZyBjb250ZW50IGxpa2UgPGRpdj5jb250
ZW50ZnVsIGxpbmU8YnI+PHNwYW4+PC9zcGFuPjwvZGl2PiB3aGVyZSA8c3Bhbj48L3NwYW4+IGNy
ZWF0ZXMgYSBkaXNwbGF5IGxpbmUgd2l0aCBub3RoaW5nIGJ1dCB0aGUgcm9vdCBpbmxpbmUgYm94
LgotICAgIG51bWJlck9mUHJldmlvdXNMQ29udGVudGZ1bExpbmVzICs9IChsaW5lQm94Lmhhc0Nv
bnRlbnQoKSA/IDEgOiAwKTsKLSAgICBhdXRvIHRydW5jYXRpb25Qb2xpY3kgPSBJbmxpbmVGb3Jt
YXR0aW5nVXRpbHM6OmxpbmVFbmRpbmdUcnVuY2F0aW9uUG9saWN5KHJvb3QoKS5zdHlsZSgpLCBu
dW1iZXJPZlByZXZpb3VzTENvbnRlbnRmdWxMaW5lcywgbnVtYmVyT2ZWaXNpYmxlTGluZXNBbGxv
d2VkLCBsaW5lQm94Lmhhc0NvbnRlbnQoKSk7CisgICAgYXV0byB0cnVuY2F0aW9uUG9saWN5ID0g
SW5saW5lRm9ybWF0dGluZ1V0aWxzOjpsaW5lRW5kaW5nVHJ1bmNhdGlvblBvbGljeShyb290KCku
c3R5bGUoKSwgaW5saW5lTGF5b3V0U3RhdGUuY29udGVudGZ1bExpbmVDb3VudCgpLCBudW1iZXJP
ZlZpc2libGVMaW5lc0FsbG93ZWQsIGxpbmVCb3guaGFzQ29udGVudCgpKTsKICAgICBJbmxpbmVE
aXNwbGF5TGluZUJ1aWxkZXI6OmFwcGx5RWxsaXBzaXNJZk5lZWRlZCh0cnVuY2F0aW9uUG9saWN5
LCBkaXNwbGF5TGluZSwgYm94ZXMsIGlzTGVnYWN5TGluZUNsYW1wKTsKICAgICBhdXRvIGxpbmVI
YXNMZWdhY3lMaW5lQ2xhbXAgPSBpc0xlZ2FjeUxpbmVDbGFtcCAmJiBkaXNwbGF5TGluZS5oYXNF
bGxpcHNpcygpICYmIHRydW5jYXRpb25Qb2xpY3kgPT0gTGluZUVuZGluZ1RydW5jYXRpb25Qb2xp
Y3k6OldoZW5Db250ZW50T3ZlcmZsb3dzSW5CbG9ja0RpcmVjdGlvbjsKICAgICBpZiAobGluZUhh
c0xlZ2FjeUxpbmVDbGFtcCkKLSAgICAgICAgbGF5b3V0U3RhdGUoKS5zZXRMZWdhY3lDbGFtcGVk
TGluZUluZGV4KGxpbmVCb3gubGluZUluZGV4KCkpOworICAgICAgICBpbmxpbmVMYXlvdXRTdGF0
ZS5zZXRMZWdhY3lDbGFtcGVkTGluZUluZGV4KGxpbmVCb3gubGluZUluZGV4KCkpOwogCiAgICAg
ZGlzcGxheUNvbnRlbnQuYm94ZXMuYXBwZW5kVmVjdG9yKFdURk1vdmUoYm94ZXMpKTsKICAgICBk
aXNwbGF5Q29udGVudC5saW5lcy5hcHBlbmQoZGlzcGxheUxpbmUpOwpAQCAtNTA0LDggKzUwMyw5
IEBAIGJvb2wgSW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6OmNyZWF0ZURpc3BsYXlDb250ZW50Rm9y
TGluZUZyb21DYWNoZWRDb250ZW50KGNvbnN0CiAgICAgbGluZUNvbnRlbnQubGluZUdlb21ldHJ5
LmxvZ2ljYWxXaWR0aCA9IGNvbnN0cmFpbnRzLmhvcml6b250YWwoKS5sb2dpY2FsV2lkdGg7CiAg
ICAgbGluZUNvbnRlbnQuY29udGVudEdlb21ldHJ5LmxvZ2ljYWxMZWZ0ID0gSW5saW5lRm9ybWF0
dGluZ1V0aWxzOjpob3Jpem9udGFsQWxpZ25tZW50T2Zmc2V0KHJvb3QoKS5zdHlsZSgpLCBsaW5l
Q29udGVudC5jb250ZW50R2VvbWV0cnkubG9naWNhbFdpZHRoLCBsaW5lQ29udGVudC5saW5lR2Vv
bWV0cnkubG9naWNhbFdpZHRoLCBsaW5lQ29udGVudC5oYW5naW5nQ29udGVudC5sb2dpY2FsV2lk
dGgsIGxpbmVDb250ZW50LnJ1bnMsIHRydWUpOwogICAgIGF1dG8gbGluZUJveCA9IExpbmVCb3hC
dWlsZGVyIHsgKnRoaXMsIGxpbmVDb250ZW50IH0uYnVpbGQoeyB9KTsKLSAgICBzaXplX3QgbnVt
YmVyT2ZDb250ZW50ZnVsTGluZXMgPSAwOwotICAgIGNyZWF0ZURpc3BsYXlDb250ZW50Rm9ySW5s
aW5lQ29udGVudChsaW5lQm94LCBsaW5lQ29udGVudCwgY29uc3RyYWludHMsIGxheW91dFJlc3Vs
dC5kaXNwbGF5Q29udGVudCwgbnVtYmVyT2ZDb250ZW50ZnVsTGluZXMpOworICAgIEFTU0VSVChs
aW5lQm94Lmhhc0NvbnRlbnQoKSk7CisgICAgbGF5b3V0U3RhdGUoKS5zZXRDb250ZW50ZnVsTGlu
ZUNvdW50KDEpOworICAgIGNyZWF0ZURpc3BsYXlDb250ZW50Rm9ySW5saW5lQ29udGVudChsaW5l
Qm94LCBsaW5lQ29udGVudCwgY29uc3RyYWludHMsIGxheW91dFJlc3VsdC5kaXNwbGF5Q29udGVu
dCk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKQEAgLTUxNCw4ICs1MTQsNyBAQCB2b2lkIElubGlu
ZUZvcm1hdHRpbmdDb250ZXh0OjpjcmVhdGVEaXNwbGF5Q29udGVudEZvckVtcHR5SW5saW5lQ29u
dGVudChjb25zdCBDbwogICAgIGF1dG8gZW1wdHlMaW5lQnJlYWtpbmdSZXN1bHQgPSAgTGluZUxh
eW91dFJlc3VsdCB7IH07CiAgICAgZW1wdHlMaW5lQnJlYWtpbmdSZXN1bHQubGluZUdlb21ldHJ5
ID0geyB7IGNvbnN0cmFpbnRzLmhvcml6b250YWwoKS5sb2dpY2FsTGVmdCwgY29uc3RyYWludHMu
bG9naWNhbFRvcCgpIH0sIHsgY29uc3RyYWludHMuaG9yaXpvbnRhbCgpLmxvZ2ljYWxXaWR0aCB9
IH07CiAgICAgYXV0byBsaW5lQm94ID0gTGluZUJveEJ1aWxkZXIgeyAqdGhpcywgZW1wdHlMaW5l
QnJlYWtpbmdSZXN1bHQgfS5idWlsZCh7IH0pOwotICAgIHNpemVfdCBudW1iZXJPZkNvbnRlbnRm
dWxMaW5lcyA9IDA7Ci0gICAgY3JlYXRlRGlzcGxheUNvbnRlbnRGb3JJbmxpbmVDb250ZW50KGxp
bmVCb3gsIGVtcHR5TGluZUJyZWFraW5nUmVzdWx0LCBjb25zdHJhaW50cywgbGF5b3V0UmVzdWx0
LmRpc3BsYXlDb250ZW50LCBudW1iZXJPZkNvbnRlbnRmdWxMaW5lcyk7CisgICAgY3JlYXRlRGlz
cGxheUNvbnRlbnRGb3JJbmxpbmVDb250ZW50KGxpbmVCb3gsIGVtcHR5TGluZUJyZWFraW5nUmVz
dWx0LCBjb25zdHJhaW50cywgbGF5b3V0UmVzdWx0LmRpc3BsYXlDb250ZW50KTsKIH0KIAogdm9p
ZCBJbmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6aW5pdGlhbGl6ZUlubGluZUxheW91dFN0YXRlKGNv
bnN0IExheW91dFN0YXRlJiBnbG9iYWxMYXlvdXRTdGF0ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUZvcm1hdHRpbmdD
b250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGlu
ZS9JbmxpbmVGb3JtYXR0aW5nQ29udGV4dC5oCmluZGV4IDYzYzEwN2YzZWRkOC4uYTNlYWQxN2I2
YjMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRz
L2lubGluZS9JbmxpbmVGb3JtYXR0aW5nQ29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xh
eW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUZvcm1hdHRpbmdDb250ZXh0LmgK
QEAgLTg2LDcgKzg2LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGxheW91dEZsb2F0Q29udGVudE9u
bHkoY29uc3QgQ29uc3RyYWludHNGb3JJbmxpbmVDb250ZW50Jik7CiAKICAgICB2b2lkIGNvbGxl
Y3RDb250ZW50SWZOZWVkZWQoKTsKLSAgICBJbmxpbmVSZWN0IGNyZWF0ZURpc3BsYXlDb250ZW50
Rm9ySW5saW5lQ29udGVudChjb25zdCBMaW5lQm94JiwgY29uc3QgTGluZUxheW91dFJlc3VsdCYs
IGNvbnN0IENvbnN0cmFpbnRzRm9ySW5saW5lQ29udGVudCYsIElubGluZURpc3BsYXk6OkNvbnRl
bnQmLCBzaXplX3QmIG51bWJlck9mUHJldmlvdXNMQ29udGVudGZ1bExpbmVzKTsKKyAgICBJbmxp
bmVSZWN0IGNyZWF0ZURpc3BsYXlDb250ZW50Rm9ySW5saW5lQ29udGVudChjb25zdCBMaW5lQm94
JiwgY29uc3QgTGluZUxheW91dFJlc3VsdCYsIGNvbnN0IENvbnN0cmFpbnRzRm9ySW5saW5lQ29u
dGVudCYsIElubGluZURpc3BsYXk6OkNvbnRlbnQmKTsKICAgICB2b2lkIHVwZGF0ZUxheW91dFN0
YXRlV2l0aExpbmVMYXlvdXRSZXN1bHQoY29uc3QgTGluZUxheW91dFJlc3VsdCYsIGNvbnN0IElu
bGluZVJlY3QmIGxpbmVMb2dpY2FsUmVjdCwgY29uc3QgRmxvYXRpbmdDb250ZXh0Jik7CiAgICAg
dm9pZCB1cGRhdGVCb3hHZW9tZXRyeUZvclBsYWNlZEZsb2F0cyhjb25zdCBMaW5lTGF5b3V0UmVz
dWx0OjpQbGFjZWRGbG9hdExpc3QmKTsKICAgICB2b2lkIHJlc2V0Qm94R2VvbWV0cmllc0ZvckRp
c2NhcmRlZENvbnRlbnQoY29uc3QgSW5saW5lSXRlbVJhbmdlJiBkaXNjYXJkZWRSYW5nZSwgY29u
c3QgTGluZUxheW91dFJlc3VsdDo6U3VzcGVuZGVkRmxvYXRMaXN0JiBzdXNwZW5kZWRGbG9hdHMp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9p
bmxpbmUvSW5saW5lRm9ybWF0dGluZ1V0aWxzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9m
b3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUZvcm1hdHRpbmdVdGlscy5jcHAKaW5kZXgg
Mzk0N2Y2OGQyMzIyLi45ZDUyYWQwMmI3NDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xh
eW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUZvcm1hdHRpbmdVdGlscy5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5s
aW5lRm9ybWF0dGluZ1V0aWxzLmNwcApAQCAtNjMwLDEzICs2MzAsMTQgQEAgc3RkOjpvcHRpb25h
bDxMaW5lTGF5b3V0UmVzdWx0OjpJbmxpbmVDb250ZW50RW5kaW5nPiBJbmxpbmVGb3JtYXR0aW5n
VXRpbHM6OmlubGkKICAgICByZXR1cm4geyB9OwogfQogCi1ib29sIElubGluZUZvcm1hdHRpbmdV
dGlsczo6c2hvdWxkRGlzY2FyZFJlbWFpbmluZ0NvbnRlbnRJbkJsb2NrRGlyZWN0aW9uKHNpemVf
dCBudW1iZXJPZkxpbmVzV2l0aElubGluZUNvbnRlbnQpIGNvbnN0Citib29sIElubGluZUZvcm1h
dHRpbmdVdGlsczo6c2hvdWxkRGlzY2FyZFJlbWFpbmluZ0NvbnRlbnRJbkJsb2NrRGlyZWN0aW9u
KCkgY29uc3QKIHsKLSAgICBhdXRvIGxpbmVDbGFtcCA9IGZvcm1hdHRpbmdDb250ZXh0KCkubGF5
b3V0U3RhdGUoKS5wYXJlbnRCbG9ja0xheW91dFN0YXRlKCkubGluZUNsYW1wKCk7CisgICAgYXV0
byYgaW5saW5lTGF5b3V0U3RhdGUgPSBmb3JtYXR0aW5nQ29udGV4dCgpLmxheW91dFN0YXRlKCk7
CisgICAgYXV0byBsaW5lQ2xhbXAgPSBpbmxpbmVMYXlvdXRTdGF0ZS5wYXJlbnRCbG9ja0xheW91
dFN0YXRlKCkubGluZUNsYW1wKCk7CiAgICAgaWYgKCFsaW5lQ2xhbXAgfHwgIWxpbmVDbGFtcC0+
c2hvdWxkRGlzY2FyZE92ZXJmbG93KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgQVNTRVJU
KCFsaW5lQ2xhbXAtPmlzTGVnYWN5KTsKLSAgICByZXR1cm4gbGluZUNsYW1wLT5tYXhpbXVtTGlu
ZXMgPT0gbnVtYmVyT2ZMaW5lc1dpdGhJbmxpbmVDb250ZW50OworICAgIHJldHVybiBsaW5lQ2xh
bXAtPm1heGltdW1MaW5lcyA9PSBpbmxpbmVMYXlvdXRTdGF0ZS5jb250ZW50ZnVsTGluZUNvdW50
KCk7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5n
Q29udGV4dHMvaW5saW5lL0lubGluZUZvcm1hdHRpbmdVdGlscy5oIGIvU291cmNlL1dlYkNvcmUv
bGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lRm9ybWF0dGluZ1V0aWxzLmgK
aW5kZXggMWVhMzc3NzU2MWRhLi5lM2U1NzgwMGU3NTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUZvcm1hdHRpbmdVdGls
cy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5l
L0lubGluZUZvcm1hdHRpbmdVdGlscy5oCkBAIC03Myw3ICs3Myw3IEBAIHB1YmxpYzoKIAogICAg
IHN0YXRpYyBzdGQ6Om9wdGlvbmFsPExpbmVMYXlvdXRSZXN1bHQ6OklubGluZUNvbnRlbnRFbmRp
bmc+IGlubGluZUNvbnRlbnRFbmRpbmcoY29uc3QgTGluZTo6UmVzdWx0Jik7CiAKLSAgICBib29s
IHNob3VsZERpc2NhcmRSZW1haW5pbmdDb250ZW50SW5CbG9ja0RpcmVjdGlvbihzaXplX3QgbnVt
YmVyT2ZMaW5lc1dpdGhJbmxpbmVDb250ZW50KSBjb25zdDsKKyAgICBib29sIHNob3VsZERpc2Nh
cmRSZW1haW5pbmdDb250ZW50SW5CbG9ja0RpcmVjdGlvbigpIGNvbnN0OwogCiBwcml2YXRlOgog
ICAgIElubGluZUxheW91dFVuaXQgY29udGVudExlZnRBZnRlckxhc3RMaW5lKGNvbnN0IENvbnN0
cmFpbnRzRm9ySW5GbG93Q29udGVudCYsIHN0ZDo6b3B0aW9uYWw8SW5saW5lTGF5b3V0VW5pdD4g
bGFzdExpbmVMb2dpY2FsQm90dG9tLCBjb25zdCBGbG9hdGluZ0NvbnRleHQmKSBjb25zdDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5l
L0lubGluZUxheW91dFN0YXRlLmggYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0Nv
bnRleHRzL2lubGluZS9JbmxpbmVMYXlvdXRTdGF0ZS5oCmluZGV4IDJjODI5ZTI1OWI2OC4uYzMw
MDMwNjFiMDE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0Nv
bnRleHRzL2lubGluZS9JbmxpbmVMYXlvdXRTdGF0ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xh
eW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUxheW91dFN0YXRlLmgKQEAgLTUz
LDYgKzUzLDkgQEAgcHVibGljOgogICAgIHZvaWQgc2V0TGVnYWN5Q2xhbXBlZExpbmVJbmRleChz
aXplX3QgbGluZUluZGV4KSB7IG1fbGVnYWN5Q2xhbXBlZExpbmVJbmRleCA9IGxpbmVJbmRleDsg
fQogICAgIHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBsZWdhY3lDbGFtcGVkTGluZUluZGV4KCkgY29u
c3QgeyByZXR1cm4gbV9sZWdhY3lDbGFtcGVkTGluZUluZGV4OyB9CiAKKyAgICBzaXplX3QgY29u
dGVudGZ1bExpbmVDb3VudCgpIGNvbnN0IHsgcmV0dXJuIG1fY29udGVudGZ1bExpbmVDb3VudDsg
fQorICAgIHZvaWQgc2V0Q29udGVudGZ1bExpbmVDb3VudChzaXplX3QgbGluZUNvdW50KSB7IG1f
Y29udGVudGZ1bExpbmVDb3VudCA9IGxpbmVDb3VudDsgfQorCiAgICAgdm9pZCBzZXRIeXBoZW5h
dGlvbkxpbWl0TGluZXMoc2l6ZV90IGh5cGhlbmF0ZUxpbWl0TGluZXMpIHsgbV9oeXBoZW5hdGVM
aW1pdExpbmVzID0gaHlwaGVuYXRlTGltaXRMaW5lczsgfQogICAgIHZvaWQgaW5jcmVtZW50U3Vj
Y2Vzc2l2ZUh5cGhlbmF0ZWRMaW5lQ291bnQoKSB7ICsrbV9zdWNjZXNzaXZlSHlwaGVuYXRlZExp
bmVDb3VudDsgfQogICAgIHZvaWQgcmVzZXRTdWNjZXNzaXZlSHlwaGVuYXRlZExpbmVDb3VudCgp
IHsgbV9zdWNjZXNzaXZlSHlwaGVuYXRlZExpbmVDb3VudCA9IDA7IH0KQEAgLTgxLDYgKzg0LDcg
QEAgcHJpdmF0ZToKICAgICBzdGQ6Om9wdGlvbmFsPHNpemVfdD4gbV9sZWdhY3lDbGFtcGVkTGlu
ZUluZGV4IHsgfTsKICAgICBzdGQ6Om9wdGlvbmFsPHNpemVfdD4gbV9oeXBoZW5hdGVMaW1pdExp
bmVzIHsgfTsKICAgICBzaXplX3QgbV9zdWNjZXNzaXZlSHlwaGVuYXRlZExpbmVDb3VudCB7IDAg
fTsKKyAgICBzaXplX3QgbV9jb250ZW50ZnVsTGluZUNvdW50IHsgMCB9OwogICAgIC8vIEZJWE1F
OiBUaGlzIGlzIHJlcXVpcmVkIGJ5IHRoZSBpbnRlZ2FyYXRpb24gY29kZXBhdGguCiAgICAgSGFz
aE1hcDxDaGVja2VkUmVmPGNvbnN0IEVsZW1lbnRCb3g+LCBMYXlvdXRVbml0PiBtX25lc3RlZExp
c3RNYXJrZXJPZmZzZXRzOwogICAgIEF2YWlsYWJsZUxpbmVXaWR0aE92ZXJyaWRlIG1fYXZhaWxh
YmxlTGluZVdpZHRoT3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQv
aW50ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRpb25Cb3hUcmVlVXBkYXRlci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRpb25Cb3hUcmVlVXBkYXRl
ci5jcHAKaW5kZXggY2Q5YTg3NThjZWQ4Li44ZjVhMjI2YmJhOWEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3JhdGlvbkJveFRyZWVVcGRh
dGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0SW50
ZWdyYXRpb25Cb3hUcmVlVXBkYXRlci5jcHAKQEAgLTQ5Niw3ICs0OTYsOSBAQCB2b2lkIHNob3dJ
bmxpbmVDb250ZW50KFRleHRTdHJlYW0mIHN0cmVhbSwgY29uc3QgSW5saW5lQ29udGVudCYgaW5s
aW5lQ29udGVudCwgcwogICAgICAgICB9OwogICAgICAgICBhZGRTcGFjaW5nKHN0cmVhbSk7CiAg
ICAgICAgIGF1dG8mIGxpbmUgPSBsaW5lc1tsaW5lSW5kZXhdOwotICAgICAgICBzdHJlYW0gPDwg
ImxpbmUgYXQgKCIgPDwgbGluZS5saW5lQm94TGVmdCgpIDw8ICIsIiA8PCBsaW5lLmxpbmVCb3hU
b3AoKSA8PCAiKSBzaXplICgiIDw8IGxpbmUubGluZUJveFJpZ2h0KCkgLSBsaW5lLmxpbmVCb3hM
ZWZ0KCkgPDwgIngiIDw8IGxpbmUubGluZUJveEJvdHRvbSgpIC0gbGluZS5saW5lQm94VG9wKCkg
PDwgIikgYmFzZWxpbmUgKCIgPDwgbGluZS5iYXNlbGluZSgpIDw8ICIpIGVuY2xvc2luZyB0b3Ag
KCIgPDwgbGluZS5lbmNsb3NpbmdDb250ZW50TG9naWNhbFRvcCgpIDw8ICIpIGJvdHRvbSAoIiA8
PCBsaW5lLmVuY2xvc2luZ0NvbnRlbnRMb2dpY2FsQm90dG9tKCkgPDwgIikiOworICAgICAgICBz
dHJlYW0gPDwgImxpbmUgYXQgKCIgPDwgbGluZS5saW5lQm94TGVmdCgpIDw8ICIsIiA8PCBsaW5l
LmxpbmVCb3hUb3AoKSA8PCAiKSBzaXplICgiIDw8IGxpbmUubGluZUJveFJpZ2h0KCkgLSBsaW5l
LmxpbmVCb3hMZWZ0KCkgPDwgIngiIDw8IGxpbmUubGluZUJveEJvdHRvbSgpIC0gbGluZS5saW5l
Qm94VG9wKCkgPDwgIikgYmFzZWxpbmUgKCIgPDwgbGluZS5iYXNlbGluZSgpIDw8ICIpIGVuY2xv
c2luZyB0b3AgKCIgPDwgbGluZS5lbmNsb3NpbmdDb250ZW50TG9naWNhbFRvcCgpIDw8ICIpIGJv
dHRvbSAoIiA8PCBsaW5lLmVuY2xvc2luZ0NvbnRlbnRMb2dpY2FsQm90dG9tKCkgPDwgIikgIjsK
KyAgICAgICAgaWYgKGxpbmUuaGFzRWxsaXBzaXMoKSkKKyAgICAgICAgICAgIHN0cmVhbSA8PCAi
dHJ1bmNhdGVkIHdpdGggZWxsaXBzaXMuIjsKICAgICAgICAgc3RyZWFtLm5leHRMaW5lKCk7CiAK
ICAgICAgICAgYWRkU3BhY2luZyhzdHJlYW0pOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>477431</attachid>
            <date>2025-11-19 05:39:33 -0800</date>
            <delta_ts>2025-11-19 07:52:37 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-302757-20251119053932.patch</filename>
            <type>text/plain</type>
            <size>20092</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">RnJvbSA2YWI3NWJkYWFjZDQ3MTBjMTI5NTc3ODI2OGVjZmE0ZjVhYjM1Y2M4IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBBbGFuIEJhcmFkbGF5IDx6YWxhbkBhcHBsZS5jb20+CkRhdGU6
IFR1ZSwgMTggTm92IDIwMjUgMTk6Mjg6MjYgLTA4MDAKU3ViamVjdDogW1BBVENIXSBbY2xlYW51
cF0gQWRkIGNvbnRlbnRmdWxMaW5lQ291bnQgdG8gSW5saW5lTGF5b3V0U3RhdGUKIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zMDI3NTcKClJldmlld2VkIGJ5IEFudHRp
IEtvaXZpc3RvLgoKSW5zdGVhZCBvZiByZWx5aW5nIG9uIGEgbG9jYWwgc3RhY2sgdmFyaWFibGUg
Zm9yIHRoZSBjb250ZW50ZnVsIGxpbmUgY291bnQsIHdlIHNob3VsZCB1c2UgSW5saW5lTGF5b3V0
U3RhdGUgdG8gbWFpbnRhaW4gaXQuIEl0IGhlbHBzIHdpdGggd2UgbmVlZCB0byBrZWVwIHRyYWNr
IG9mCmxpbmVzIGNvbWluZyBmcm9tIG5lc3RlZCBibG9jayBjb250ZW50IChpbmxpbmUtYmxvY2sg
b3IgYmxvY2staW4taW5saW5lKS4KCiogU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdD
b250ZXh0cy9pbmxpbmUvSW5saW5lRm9ybWF0dGluZ0NvbnRleHQuY3BwOgooV2ViQ29yZTo6TGF5
b3V0OjpJbmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6bGF5b3V0KToKKFdlYkNvcmU6OkxheW91dDo6
SW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6OmxpbmVMYXlvdXQpOgooV2ViQ29yZTo6TGF5b3V0OjpJ
bmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6Y3JlYXRlRGlzcGxheUNvbnRlbnRGb3JJbmxpbmVDb250
ZW50KToKKFdlYkNvcmU6OkxheW91dDo6SW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6OmNyZWF0ZURp
c3BsYXlDb250ZW50Rm9yTGluZUZyb21DYWNoZWRDb250ZW50KToKKFdlYkNvcmU6OkxheW91dDo6
SW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6OmNyZWF0ZURpc3BsYXlDb250ZW50Rm9yRW1wdHlJbmxp
bmVDb250ZW50KToKKiBTb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lu
bGluZS9JbmxpbmVGb3JtYXR0aW5nQ29udGV4dC5oOgoqIFNvdXJjZS9XZWJDb3JlL2xheW91dC9m
b3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUZvcm1hdHRpbmdVdGlscy5jcHA6CihXZWJD
b3JlOjpMYXlvdXQ6OklubGluZUZvcm1hdHRpbmdVdGlsczo6c2hvdWxkRGlzY2FyZFJlbWFpbmlu
Z0NvbnRlbnRJbkJsb2NrRGlyZWN0aW9uIGNvbnN0KToKKiBTb3VyY2UvV2ViQ29yZS9sYXlvdXQv
Zm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVGb3JtYXR0aW5nVXRpbHMuaDoKKiBTb3Vy
Y2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVMYXlvdXRT
dGF0ZS5oOgooV2ViQ29yZTo6TGF5b3V0OjpJbmxpbmVMYXlvdXRTdGF0ZTo6Y29udGVudGZ1bExp
bmVDb3VudCBjb25zdCk6CihXZWJDb3JlOjpMYXlvdXQ6OklubGluZUxheW91dFN0YXRlOjpzZXRD
b250ZW50ZnVsTGluZUNvdW50KToKKiBTb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24v
TGF5b3V0SW50ZWdyYXRpb25Cb3hUcmVlVXBkYXRlci5jcHA6CihXZWJDb3JlOjpMYXlvdXRJbnRl
Z3JhdGlvbjo6c2hvd0lubGluZUNvbnRlbnQpOgotLS0KIC4uLi9pbmxpbmUvSW5saW5lRm9ybWF0
dGluZ0NvbnRleHQuY3BwICAgICAgICB8IDUxICsrKysrKysrKystLS0tLS0tLS0KIC4uLi9pbmxp
bmUvSW5saW5lRm9ybWF0dGluZ0NvbnRleHQuaCAgICAgICAgICB8ICAyICstCiAuLi4vaW5saW5l
L0lubGluZUZvcm1hdHRpbmdVdGlscy5jcHAgICAgICAgICAgfCAgNyArLS0KIC4uLi9pbmxpbmUv
SW5saW5lRm9ybWF0dGluZ1V0aWxzLmggICAgICAgICAgICB8ICAyICstCiAuLi4vaW5saW5lL0lu
bGluZUxheW91dFN0YXRlLmggICAgICAgICAgICAgICAgfCAgNCArKwogLi4uL0xheW91dEludGVn
cmF0aW9uQm94VHJlZVVwZGF0ZXIuY3BwICAgICAgIHwgIDQgKy0KIDYgZmlsZXMgY2hhbmdlZCwg
MzkgaW5zZXJ0aW9ucygrKSwgMzEgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lRm9ybWF0dGluZ0Nv
bnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxp
bmUvSW5saW5lRm9ybWF0dGluZ0NvbnRleHQuY3BwCmluZGV4IGJkZmU1NGVlM2MyZi4uMmQ2ZGY4
ZjMyODA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRl
eHRzL2lubGluZS9JbmxpbmVGb3JtYXR0aW5nQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lRm9ybWF0dGluZ0NvbnRl
eHQuY3BwCkBAIC0xMTcsNyArMTE3LDcgQEAgSW5saW5lTGF5b3V0UmVzdWx0IElubGluZUZvcm1h
dHRpbmdDb250ZXh0OjpsYXlvdXQoY29uc3QgQ29uc3RyYWludHNGb3JJbmxpbmVDb24KIHsKICAg
ICByZWJ1aWxkSW5saW5lSXRlbUxpc3RJZk5lZWRlZChsaW5lRGFtYWdlKTsKIAotICAgIGlmIChm
b3JtYXR0aW5nVXRpbHMoKS5zaG91bGREaXNjYXJkUmVtYWluaW5nQ29udGVudEluQmxvY2tEaXJl
Y3Rpb24oeyB9KSkgeworICAgIGlmIChmb3JtYXR0aW5nVXRpbHMoKS5zaG91bGREaXNjYXJkUmVt
YWluaW5nQ29udGVudEluQmxvY2tEaXJlY3Rpb24oKSkgewogICAgICAgICAvLyBUaGlzIGlubGlu
ZSBjb250ZW50IG1heSBiZSBjb21wbGV0ZWx5IGNvbGxhcHNlZCAoaS5lLiBhZnRlciBjbGFtcGVk
IGJsb2NrIGNvbnRhaW5lcikKICAgICAgICAgcmVzZXRCb3hHZW9tZXRyaWVzRm9yRGlzY2FyZGVk
Q29udGVudCh7IHsgfSwgeyBpbmxpbmVDb250ZW50Q2FjaGUoKS5pbmxpbmVJdGVtcygpLmNvbnRl
bnQoKS5zaXplKCksIHsgfSB9IH0sIHsgfSk7CiAgICAgICAgIHJldHVybiB7IH07CkBAIC0xNTks
MjYgKzE1OSwyOSBAQCBJbmxpbmVMYXlvdXRSZXN1bHQgSW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6
OmxheW91dChjb25zdCBDb25zdHJhaW50c0ZvcklubGluZUNvbgogICAgICAgICBhdXRvIGxhc3RM
aW5lSW5kZXggPSBsaW5lRGFtYWdlLT5sYXlvdXRTdGFydFBvc2l0aW9uKCktPmxpbmVJbmRleCAt
IDE7CiAgICAgICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgYmUgYWJsZSB0byBleHRyYWN0IHRoZSBs
YXN0IGxpbmUgaW5mb3JtYXRpb24gYW5kIHByb3ZpZGUgaXQgdG8gbGF5b3V0IGFzICJwcmV2aW91
cyBsaW5lIiAoZW5kcyBpbiBsaW5lIGJyZWFrIGFuZCBpbmxpbmUgZGlyZWN0aW9uKS4KICAgICAg
ICAgcmV0dXJuIFByZXZpb3VzTGluZSB7IGxhc3RMaW5lSW5kZXgsIHsgfSwgeyB9LCB7IH0sIHsg
fSB9OwotICAgIH07CisgICAgfSgpOworCisgICAgYXV0byYgaW5saW5lTGF5b3V0U3RhdGUgPSBs
YXlvdXRTdGF0ZSgpOworICAgIGlubGluZUxheW91dFN0YXRlLnNldENvbnRlbnRmdWxMaW5lQ291
bnQocHJldmlvdXNMaW5lID8gcHJldmlvdXNMaW5lLT5saW5lSW5kZXggKyAxIDogMCk7CiAKICAg
ICBhdXRvIHRleHRXcmFwU3R5bGUgPSByb290KCkuc3R5bGUoKS50ZXh0V3JhcFN0eWxlKCk7CiAg
ICAgaWYgKHJvb3QoKS5zdHlsZSgpLnRleHRXcmFwTW9kZSgpID09IFRleHRXcmFwTW9kZTo6V3Jh
cCAmJiAodGV4dFdyYXBTdHlsZSA9PSBUZXh0V3JhcFN0eWxlOjpCYWxhbmNlIHx8IHRleHRXcmFw
U3R5bGUgPT0gVGV4dFdyYXBTdHlsZTo6UHJldHR5KSkgewogICAgICAgICBhdXRvIGNvbnN0cmFp
bmVyID0gSW5saW5lQ29udGVudENvbnN0cmFpbmVyIHsgKnRoaXMsIGlubGluZUl0ZW1MaXN0LCBj
b25zdHJhaW50cy5ob3Jpem9udGFsKCkgfTsKICAgICAgICAgYXV0byBjb25zdHJhaW5lZExpbmVX
aWR0aHMgPSBjb25zdHJhaW5lci5jb21wdXRlUGFyYWdyYXBoTGV2ZWxDb25zdHJhaW50cyh0ZXh0
V3JhcFN0eWxlKTsKICAgICAgICAgaWYgKGNvbnN0cmFpbmVkTGluZVdpZHRocykKLSAgICAgICAg
ICAgIGxheW91dFN0YXRlKCkuc2V0QXZhaWxhYmxlTGluZVdpZHRoT3ZlcnJpZGUoeyAqY29uc3Ry
YWluZWRMaW5lV2lkdGhzIH0pOworICAgICAgICAgICAgaW5saW5lTGF5b3V0U3RhdGUuc2V0QXZh
aWxhYmxlTGluZVdpZHRoT3ZlcnJpZGUoeyAqY29uc3RyYWluZWRMaW5lV2lkdGhzIH0pOwogICAg
IH0KIAotICAgIGlmIChUZXh0T25seVNpbXBsZUxpbmVCdWlsZGVyOjppc0VsaWdpYmxlRm9yU2lt
cGxpZmllZFRleHRPbmx5SW5saW5lTGF5b3V0QnlDb250ZW50KGlubGluZUl0ZW1zLCBsYXlvdXRT
dGF0ZSgpLnBsYWNlZEZsb2F0cygpKSAmJiBUZXh0T25seVNpbXBsZUxpbmVCdWlsZGVyOjppc0Vs
aWdpYmxlRm9yU2ltcGxpZmllZElubGluZUxheW91dEJ5U3R5bGUocm9vdCgpKSkgeworICAgIGlm
IChUZXh0T25seVNpbXBsZUxpbmVCdWlsZGVyOjppc0VsaWdpYmxlRm9yU2ltcGxpZmllZFRleHRP
bmx5SW5saW5lTGF5b3V0QnlDb250ZW50KGlubGluZUl0ZW1zLCBpbmxpbmVMYXlvdXRTdGF0ZS5w
bGFjZWRGbG9hdHMoKSkgJiYgVGV4dE9ubHlTaW1wbGVMaW5lQnVpbGRlcjo6aXNFbGlnaWJsZUZv
clNpbXBsaWZpZWRJbmxpbmVMYXlvdXRCeVN0eWxlKHJvb3QoKSkpIHsKICAgICAgICAgYXV0byBz
aW1wbGlmaWVkTGluZUJ1aWxkZXIgPSBtYWtlVW5pcXVlUmVmPFRleHRPbmx5U2ltcGxlTGluZUJ1
aWxkZXI+KCp0aGlzLCByb290KCksIGNvbnN0cmFpbnRzLmhvcml6b250YWwoKSwgaW5saW5lSXRl
bUxpc3QpOwotICAgICAgICByZXR1cm4gbGluZUxheW91dChzaW1wbGlmaWVkTGluZUJ1aWxkZXIs
IGlubGluZUl0ZW1MaXN0LCBuZWVkc0xheW91dFJhbmdlLCBwcmV2aW91c0xpbmUoKSwgY29uc3Ry
YWludHMsIGxpbmVEYW1hZ2UpOworICAgICAgICByZXR1cm4gbGluZUxheW91dChzaW1wbGlmaWVk
TGluZUJ1aWxkZXIsIGlubGluZUl0ZW1MaXN0LCBuZWVkc0xheW91dFJhbmdlLCBwcmV2aW91c0xp
bmUsIGNvbnN0cmFpbnRzLCBsaW5lRGFtYWdlKTsKICAgICB9Ci0gICAgaWYgKFJhbmdlQmFzZWRM
aW5lQnVpbGRlcjo6aXNFbGlnaWJsZUZvclJhbmdlSW5saW5lTGF5b3V0KCp0aGlzLCBuZWVkc0xh
eW91dFJhbmdlLCBpbmxpbmVJdGVtcywgbGF5b3V0U3RhdGUoKS5wbGFjZWRGbG9hdHMoKSkpIHsK
KyAgICBpZiAoUmFuZ2VCYXNlZExpbmVCdWlsZGVyOjppc0VsaWdpYmxlRm9yUmFuZ2VJbmxpbmVM
YXlvdXQoKnRoaXMsIG5lZWRzTGF5b3V0UmFuZ2UsIGlubGluZUl0ZW1zLCBpbmxpbmVMYXlvdXRT
dGF0ZS5wbGFjZWRGbG9hdHMoKSkpIHsKICAgICAgICAgYXV0byByYW5nZUJhc2VkTGluZUJ1aWxk
ZXIgPSBtYWtlVW5pcXVlUmVmPFJhbmdlQmFzZWRMaW5lQnVpbGRlcj4oKnRoaXMsIGNvbnN0cmFp
bnRzLmhvcml6b250YWwoKSwgaW5saW5lSXRlbXMpOwotICAgICAgICByZXR1cm4gbGluZUxheW91
dChyYW5nZUJhc2VkTGluZUJ1aWxkZXIsIGlubGluZUl0ZW1MaXN0LCBuZWVkc0xheW91dFJhbmdl
LCBwcmV2aW91c0xpbmUoKSwgY29uc3RyYWludHMsIGxpbmVEYW1hZ2UpOworICAgICAgICByZXR1
cm4gbGluZUxheW91dChyYW5nZUJhc2VkTGluZUJ1aWxkZXIsIGlubGluZUl0ZW1MaXN0LCBuZWVk
c0xheW91dFJhbmdlLCBwcmV2aW91c0xpbmUsIGNvbnN0cmFpbnRzLCBsaW5lRGFtYWdlKTsKICAg
ICB9CiAgICAgYXV0byBsaW5lQnVpbGRlciA9IG1ha2VVbmlxdWVSZWY8TGluZUJ1aWxkZXI+KCp0
aGlzLCBjb25zdHJhaW50cy5ob3Jpem9udGFsKCksIGlubGluZUl0ZW1MaXN0LCBpbmxpbmVDb250
ZW50Q2FjaGUoKS50ZXh0U3BhY2luZ0NvbnRleHQoKSk7Ci0gICAgcmV0dXJuIGxpbmVMYXlvdXQo
bGluZUJ1aWxkZXIsIGlubGluZUl0ZW1MaXN0LCBuZWVkc0xheW91dFJhbmdlLCBwcmV2aW91c0xp
bmUoKSwgY29uc3RyYWludHMsIGxpbmVEYW1hZ2UpOworICAgIHJldHVybiBsaW5lTGF5b3V0KGxp
bmVCdWlsZGVyLCBpbmxpbmVJdGVtTGlzdCwgbmVlZHNMYXlvdXRSYW5nZSwgcHJldmlvdXNMaW5l
LCBjb25zdHJhaW50cywgbGluZURhbWFnZSk7CiB9CiAKIHN0ZDo6cGFpcjxMYXlvdXRVbml0LCBM
YXlvdXRVbml0PiBJbmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6bWluaW11bU1heGltdW1Db250ZW50
U2l6ZShJbmxpbmVEYW1hZ2UqIGxpbmVEYW1hZ2UpCkBAIC0zMDEsMTMgKzMwNCwxMiBAQCBJbmxp
bmVMYXlvdXRSZXN1bHQgSW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6OmxpbmVMYXlvdXQoQWJzdHJh
Y3RMaW5lQnVpbGRlciYgbGluZQogICAgIGlmICghbmVlZHNMYXlvdXRSYW5nZS5zdGFydCkKICAg
ICAgICAgbGF5b3V0UmVzdWx0LmRpc3BsYXlDb250ZW50LmJveGVzLnJlc2VydmVJbml0aWFsQ2Fw
YWNpdHkoZXN0aW1hdGVkRGlzcGxheUJveFNpemUoaW5saW5lSXRlbUxpc3Quc2l6ZSgpKSk7CiAK
KyAgICBhdXRvJiBpbmxpbmVMYXlvdXRTdGF0ZSA9IGxheW91dFN0YXRlKCk7CiAgICAgYXV0byBm
bG9hdGluZ0NvbnRleHQgPSB0aGlzLT5mbG9hdGluZ0NvbnRleHQoKTsKICAgICBhdXRvIGxpbmVM
b2dpY2FsVG9wID0gSW5saW5lTGF5b3V0VW5pdCB7IGNvbnN0cmFpbnRzLmxvZ2ljYWxUb3AoKSB9
OwogICAgIGF1dG8gcHJldmlvdXNMaW5lRW5kID0gc3RkOjpvcHRpb25hbDxJbmxpbmVJdGVtUG9z
aXRpb24+IHsgfTsKICAgICBhdXRvIGxlYWRpbmdJbmxpbmVJdGVtUG9zaXRpb24gPSBuZWVkc0xh
eW91dFJhbmdlLnN0YXJ0OwotICAgIGF1dG8gcGFydGlhbExheW91dFN0YXJ0SW5kZXggPSBwcmV2
aW91c0xpbmUgPyBzdGQ6Om1ha2Vfb3B0aW9uYWwocHJldmlvdXNMaW5lLT5saW5lSW5kZXgpIDog
c3RkOjpudWxsb3B0OwogICAgIGF1dG8gaXNGaXJzdEZvcm1hdHRlZExpbmVDYW5kaWRhdGUgPSB0
cnVlOwotICAgIHNpemVfdCBudW1iZXJPZkNvbnRlbnRmdWxMaW5lcyA9IHBhcnRpYWxMYXlvdXRT
dGFydEluZGV4ID8gKnBhcnRpYWxMYXlvdXRTdGFydEluZGV4ICsgMSA6IDBsdTsKICAgICB3aGls
ZSAodHJ1ZSkgewogCiAgICAgICAgIGF1dG8gbGluZUluaXRpYWxSZWN0ID0gSW5saW5lUmVjdCB7
IGxpbmVMb2dpY2FsVG9wLCBjb25zdHJhaW50cy5ob3Jpem9udGFsKCkubG9naWNhbExlZnQsIGNv
bnN0cmFpbnRzLmhvcml6b250YWwoKS5sb2dpY2FsV2lkdGgsIGZvcm1hdHRpbmdVdGlscygpLmlu
aXRpYWxMaW5lSGVpZ2h0KCFwcmV2aW91c0xpbmUuaGFzX3ZhbHVlKCkpIH07CkBAIC0zMTYsNyAr
MzE4LDggQEAgSW5saW5lTGF5b3V0UmVzdWx0IElubGluZUZvcm1hdHRpbmdDb250ZXh0OjpsaW5l
TGF5b3V0KEFic3RyYWN0TGluZUJ1aWxkZXImIGxpbmUKIAogICAgICAgICBhdXRvIGxpbmVMYXlv
dXRSZXN1bHQgPSBsaW5lQnVpbGRlci5sYXlvdXRJbmxpbmVDb250ZW50KGxpbmVJbnB1dCwgcHJl
dmlvdXNMaW5lLCBpc0ZpcnN0Rm9ybWF0dGVkTGluZUNhbmRpZGF0ZSk7CiAgICAgICAgIGF1dG8g
bGluZUJveCA9IExpbmVCb3hCdWlsZGVyIHsgKnRoaXMsIGxpbmVMYXlvdXRSZXN1bHQgfS5idWls
ZChsaW5lSW5kZXgpOwotICAgICAgICBhdXRvIGxpbmVMb2dpY2FsUmVjdCA9IGNyZWF0ZURpc3Bs
YXlDb250ZW50Rm9ySW5saW5lQ29udGVudChsaW5lQm94LCBsaW5lTGF5b3V0UmVzdWx0LCBjb25z
dHJhaW50cywgbGF5b3V0UmVzdWx0LmRpc3BsYXlDb250ZW50LCBudW1iZXJPZkNvbnRlbnRmdWxM
aW5lcyk7CisgICAgICAgIGlubGluZUxheW91dFN0YXRlLnNldENvbnRlbnRmdWxMaW5lQ291bnQo
aW5saW5lTGF5b3V0U3RhdGUuY29udGVudGZ1bExpbmVDb3VudCgpICsgKGxpbmVCb3guaGFzQ29u
dGVudCgpID8gMSA6IDApKTsKKyAgICAgICAgYXV0byBsaW5lTG9naWNhbFJlY3QgPSBjcmVhdGVE
aXNwbGF5Q29udGVudEZvcklubGluZUNvbnRlbnQobGluZUJveCwgbGluZUxheW91dFJlc3VsdCwg
Y29uc3RyYWludHMsIGxheW91dFJlc3VsdC5kaXNwbGF5Q29udGVudCk7CiAgICAgICAgIHVwZGF0
ZUJveEdlb21ldHJ5Rm9yUGxhY2VkRmxvYXRzKGxpbmVMYXlvdXRSZXN1bHQuZmxvYXRDb250ZW50
LnBsYWNlZEZsb2F0cyk7CiAgICAgICAgIHVwZGF0ZUxheW91dFN0YXRlV2l0aExpbmVMYXlvdXRS
ZXN1bHQobGluZUxheW91dFJlc3VsdCwgbGluZUxvZ2ljYWxSZWN0LCBmbG9hdGluZ0NvbnRleHQp
OwogCkBAIC0zMzMsNyArMzM2LDcgQEAgSW5saW5lTGF5b3V0UmVzdWx0IElubGluZUZvcm1hdHRp
bmdDb250ZXh0OjpsaW5lTGF5b3V0KEFic3RyYWN0TGluZUJ1aWxkZXImIGxpbmUKICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICB9CiAKLSAgICAgICAgaWYgKGZvcm1hdHRpbmdVdGlscygpLnNo
b3VsZERpc2NhcmRSZW1haW5pbmdDb250ZW50SW5CbG9ja0RpcmVjdGlvbihudW1iZXJPZkNvbnRl
bnRmdWxMaW5lcykpIHsKKyAgICAgICAgaWYgKGZvcm1hdHRpbmdVdGlscygpLnNob3VsZERpc2Nh
cmRSZW1haW5pbmdDb250ZW50SW5CbG9ja0RpcmVjdGlvbigpKSB7CiAgICAgICAgICAgICByZXNl
dEJveEdlb21ldHJpZXNGb3JEaXNjYXJkZWRDb250ZW50KHsgbGVhZGluZ0lubGluZUl0ZW1Qb3Np
dGlvbiwgbmVlZHNMYXlvdXRSYW5nZS5lbmQgfSwgbGluZUxheW91dFJlc3VsdC5mbG9hdENvbnRl
bnQuc3VzcGVuZGVkRmxvYXRzKTsKICAgICAgICAgICAgIGxheW91dFJlc3VsdC5yYW5nZSA9ICFp
c1BhcnRpYWxMYXlvdXQgPyBJbmxpbmVMYXlvdXRSZXN1bHQ6OlJhbmdlOjpGdWxsIDogSW5saW5l
TGF5b3V0UmVzdWx0OjpSYW5nZTo6RnVsbEZyb21EYW1hZ2U7CiAgICAgICAgICAgICBsYXlvdXRS
ZXN1bHQuZGlkRGlzY2FyZENvbnRlbnQgPSB0cnVlOwpAQCAtMzQ1LDcgKzM0OCw3IEBAIElubGlu
ZUxheW91dFJlc3VsdCBJbmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6bGluZUxheW91dChBYnN0cmFj
dExpbmVCdWlsZGVyJiBsaW5lCiAgICAgICAgIGlzRmlyc3RGb3JtYXR0ZWRMaW5lQ2FuZGlkYXRl
ICY9ICFsaW5lTGF5b3V0UmVzdWx0Lmhhc0luZmxvd0NvbnRlbnQoKTsKICAgICAgICAgbGluZUxv
Z2ljYWxUb3AgPSBmb3JtYXR0aW5nVXRpbHMoKS5sb2dpY2FsVG9wRm9yTmV4dExpbmUobGluZUxh
eW91dFJlc3VsdCwgbGluZUxvZ2ljYWxSZWN0LCBmbG9hdGluZ0NvbnRleHQpOwogICAgIH0KLSAg
ICBJbmxpbmVEaXNwbGF5TGluZUJ1aWxkZXI6OmFkZExlZ2FjeUxpbmVDbGFtcFRyYWlsaW5nTGlu
a0JveElmQXBwbGljYWJsZSgqdGhpcywgbGF5b3V0U3RhdGUoKSwgbGF5b3V0UmVzdWx0LmRpc3Bs
YXlDb250ZW50KTsKKyAgICBJbmxpbmVEaXNwbGF5TGluZUJ1aWxkZXI6OmFkZExlZ2FjeUxpbmVD
bGFtcFRyYWlsaW5nTGlua0JveElmQXBwbGljYWJsZSgqdGhpcywgaW5saW5lTGF5b3V0U3RhdGUs
IGxheW91dFJlc3VsdC5kaXNwbGF5Q29udGVudCk7CiAgICAgcmV0dXJuIGxheW91dFJlc3VsdDsK
IH0KIApAQCAtNDE3LDI1ICs0MjAsMjMgQEAgdm9pZCBJbmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6
dXBkYXRlQm94R2VvbWV0cnlGb3JQbGFjZWRGbG9hdHMoY29uc3QgTGluZUxheW91dFIKICAgICB9
CiB9CiAKLUlubGluZVJlY3QgSW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6OmNyZWF0ZURpc3BsYXlD
b250ZW50Rm9ySW5saW5lQ29udGVudChjb25zdCBMaW5lQm94JiBsaW5lQm94LCBjb25zdCBMaW5l
TGF5b3V0UmVzdWx0JiBsaW5lTGF5b3V0UmVzdWx0LCBjb25zdCBDb25zdHJhaW50c0ZvcklubGlu
ZUNvbnRlbnQmIGNvbnN0cmFpbnRzLCBJbmxpbmVEaXNwbGF5OjpDb250ZW50JiBkaXNwbGF5Q29u
dGVudCwgc2l6ZV90JiBudW1iZXJPZlByZXZpb3VzTENvbnRlbnRmdWxMaW5lcykKK0lubGluZVJl
Y3QgSW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6OmNyZWF0ZURpc3BsYXlDb250ZW50Rm9ySW5saW5l
Q29udGVudChjb25zdCBMaW5lQm94JiBsaW5lQm94LCBjb25zdCBMaW5lTGF5b3V0UmVzdWx0JiBs
aW5lTGF5b3V0UmVzdWx0LCBjb25zdCBDb25zdHJhaW50c0ZvcklubGluZUNvbnRlbnQmIGNvbnN0
cmFpbnRzLCBJbmxpbmVEaXNwbGF5OjpDb250ZW50JiBkaXNwbGF5Q29udGVudCkKIHsKLSAgICBh
dXRvIGxpbmVDbGFtcCA9IGxheW91dFN0YXRlKCkucGFyZW50QmxvY2tMYXlvdXRTdGF0ZSgpLmxp
bmVDbGFtcCgpOworICAgIGF1dG8mIGlubGluZUxheW91dFN0YXRlID0gbGF5b3V0U3RhdGUoKTsK
KyAgICBhdXRvIGxpbmVDbGFtcCA9IGlubGluZUxheW91dFN0YXRlLnBhcmVudEJsb2NrTGF5b3V0
U3RhdGUoKS5saW5lQ2xhbXAoKTsKICAgICBhdXRvIGlzTGVnYWN5TGluZUNsYW1wID0gbGluZUNs
YW1wICYmIGxpbmVDbGFtcC0+aXNMZWdhY3k7CiAgICAgYXV0byBudW1iZXJPZlZpc2libGVMaW5l
c0FsbG93ZWQgPSBsaW5lQ2xhbXAgPyBzdGQ6Om1ha2Vfb3B0aW9uYWwobGluZUNsYW1wLT5tYXhp
bXVtTGluZXMpIDogc3RkOjpudWxsb3B0OwogCi0gICAgYXV0byBudW1iZXJPZkxpbmVzV2l0aElu
bGluZUNvbnRlbnQgPSBudW1iZXJPZlByZXZpb3VzTENvbnRlbnRmdWxMaW5lcyArIChsaW5lTGF5
b3V0UmVzdWx0Lmhhc0lubGluZUNvbnRlbnQoKSA/IDEgOiAwKTsKLSAgICBhdXRvIGxpbmVJc0Z1
bGx5VHJ1bmNhdGVkSW5CbG9ja0RpcmVjdGlvbiA9IG51bWJlck9mTGluZXNXaXRoSW5saW5lQ29u
dGVudCA+IG51bWJlck9mVmlzaWJsZUxpbmVzQWxsb3dlZC52YWx1ZV9vcihudW1iZXJPZkxpbmVz
V2l0aElubGluZUNvbnRlbnQpOworICAgIGF1dG8gbGluZUlzRnVsbHlUcnVuY2F0ZWRJbkJsb2Nr
RGlyZWN0aW9uID0gbnVtYmVyT2ZWaXNpYmxlTGluZXNBbGxvd2VkID8gaW5saW5lTGF5b3V0U3Rh
dGUuY29udGVudGZ1bExpbmVDb3VudCgpID4gKm51bWJlck9mVmlzaWJsZUxpbmVzQWxsb3dlZCA6
IGZhbHNlOwogICAgIGF1dG8gZGlzcGxheUxpbmUgPSBJbmxpbmVEaXNwbGF5TGluZUJ1aWxkZXIg
eyAqdGhpcywgY29uc3RyYWludHMgfS5idWlsZChsaW5lTGF5b3V0UmVzdWx0LCBsaW5lQm94LCBs
aW5lSXNGdWxseVRydW5jYXRlZEluQmxvY2tEaXJlY3Rpb24pOwogICAgIGF1dG8gYm94ZXMgPSBJ
bmxpbmVEaXNwbGF5Q29udGVudEJ1aWxkZXIgeyAqdGhpcywgY29uc3RyYWludHMsIGxpbmVCb3gs
IGRpc3BsYXlMaW5lIH0uYnVpbGQobGluZUxheW91dFJlc3VsdCk7CiAgICAgZGlzcGxheUxpbmUu
c2V0Qm94Q291bnQoYm94ZXMuc2l6ZSgpKTsKIAotICAgIC8vIE5vbi1jb250ZW50ZnVsIGxpbmVz
IGFyZSBwcm9kdWNlZCBieSBjZXJ0YWluIHRyYWlsaW5nIGNvbnRlbnQgbGlrZSA8ZGl2PmNvbnRl
bnRmdWwgbGluZTxicj48c3Bhbj48L3NwYW4+PC9kaXY+IHdoZXJlIDxzcGFuPjwvc3Bhbj4gY3Jl
YXRlcyBhIGRpc3BsYXkgbGluZSB3aXRoIG5vdGhpbmcgYnV0IHRoZSByb290IGlubGluZSBib3gu
Ci0gICAgbnVtYmVyT2ZQcmV2aW91c0xDb250ZW50ZnVsTGluZXMgKz0gKGxpbmVCb3guaGFzQ29u
dGVudCgpID8gMSA6IDApOwotICAgIGF1dG8gdHJ1bmNhdGlvblBvbGljeSA9IElubGluZUZvcm1h
dHRpbmdVdGlsczo6bGluZUVuZGluZ1RydW5jYXRpb25Qb2xpY3kocm9vdCgpLnN0eWxlKCksIG51
bWJlck9mUHJldmlvdXNMQ29udGVudGZ1bExpbmVzLCBudW1iZXJPZlZpc2libGVMaW5lc0FsbG93
ZWQsIGxpbmVCb3guaGFzQ29udGVudCgpKTsKKyAgICBhdXRvIHRydW5jYXRpb25Qb2xpY3kgPSBJ
bmxpbmVGb3JtYXR0aW5nVXRpbHM6OmxpbmVFbmRpbmdUcnVuY2F0aW9uUG9saWN5KHJvb3QoKS5z
dHlsZSgpLCBpbmxpbmVMYXlvdXRTdGF0ZS5jb250ZW50ZnVsTGluZUNvdW50KCksIG51bWJlck9m
VmlzaWJsZUxpbmVzQWxsb3dlZCwgbGluZUJveC5oYXNDb250ZW50KCkpOwogICAgIElubGluZURp
c3BsYXlMaW5lQnVpbGRlcjo6YXBwbHlFbGxpcHNpc0lmTmVlZGVkKHRydW5jYXRpb25Qb2xpY3ks
IGRpc3BsYXlMaW5lLCBib3hlcywgaXNMZWdhY3lMaW5lQ2xhbXApOwogICAgIGF1dG8gbGluZUhh
c0xlZ2FjeUxpbmVDbGFtcCA9IGlzTGVnYWN5TGluZUNsYW1wICYmIGRpc3BsYXlMaW5lLmhhc0Vs
bGlwc2lzKCkgJiYgdHJ1bmNhdGlvblBvbGljeSA9PSBMaW5lRW5kaW5nVHJ1bmNhdGlvblBvbGlj
eTo6V2hlbkNvbnRlbnRPdmVyZmxvd3NJbkJsb2NrRGlyZWN0aW9uOwogICAgIGlmIChsaW5lSGFz
TGVnYWN5TGluZUNsYW1wKQotICAgICAgICBsYXlvdXRTdGF0ZSgpLnNldExlZ2FjeUNsYW1wZWRM
aW5lSW5kZXgobGluZUJveC5saW5lSW5kZXgoKSk7CisgICAgICAgIGlubGluZUxheW91dFN0YXRl
LnNldExlZ2FjeUNsYW1wZWRMaW5lSW5kZXgobGluZUJveC5saW5lSW5kZXgoKSk7CiAKICAgICBk
aXNwbGF5Q29udGVudC5ib3hlcy5hcHBlbmRWZWN0b3IoV1RGTW92ZShib3hlcykpOwogICAgIGRp
c3BsYXlDb250ZW50LmxpbmVzLmFwcGVuZChkaXNwbGF5TGluZSk7CkBAIC01MDQsOCArNTA1LDkg
QEAgYm9vbCBJbmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6Y3JlYXRlRGlzcGxheUNvbnRlbnRGb3JM
aW5lRnJvbUNhY2hlZENvbnRlbnQoY29uc3QKICAgICBsaW5lQ29udGVudC5saW5lR2VvbWV0cnku
bG9naWNhbFdpZHRoID0gY29uc3RyYWludHMuaG9yaXpvbnRhbCgpLmxvZ2ljYWxXaWR0aDsKICAg
ICBsaW5lQ29udGVudC5jb250ZW50R2VvbWV0cnkubG9naWNhbExlZnQgPSBJbmxpbmVGb3JtYXR0
aW5nVXRpbHM6Omhvcml6b250YWxBbGlnbm1lbnRPZmZzZXQocm9vdCgpLnN0eWxlKCksIGxpbmVD
b250ZW50LmNvbnRlbnRHZW9tZXRyeS5sb2dpY2FsV2lkdGgsIGxpbmVDb250ZW50LmxpbmVHZW9t
ZXRyeS5sb2dpY2FsV2lkdGgsIGxpbmVDb250ZW50LmhhbmdpbmdDb250ZW50LmxvZ2ljYWxXaWR0
aCwgbGluZUNvbnRlbnQucnVucywgdHJ1ZSk7CiAgICAgYXV0byBsaW5lQm94ID0gTGluZUJveEJ1
aWxkZXIgeyAqdGhpcywgbGluZUNvbnRlbnQgfS5idWlsZCh7IH0pOwotICAgIHNpemVfdCBudW1i
ZXJPZkNvbnRlbnRmdWxMaW5lcyA9IDA7Ci0gICAgY3JlYXRlRGlzcGxheUNvbnRlbnRGb3JJbmxp
bmVDb250ZW50KGxpbmVCb3gsIGxpbmVDb250ZW50LCBjb25zdHJhaW50cywgbGF5b3V0UmVzdWx0
LmRpc3BsYXlDb250ZW50LCBudW1iZXJPZkNvbnRlbnRmdWxMaW5lcyk7CisgICAgQVNTRVJUKGxp
bmVCb3guaGFzQ29udGVudCgpKTsKKyAgICBsYXlvdXRTdGF0ZSgpLnNldENvbnRlbnRmdWxMaW5l
Q291bnQoMSk7CisgICAgY3JlYXRlRGlzcGxheUNvbnRlbnRGb3JJbmxpbmVDb250ZW50KGxpbmVC
b3gsIGxpbmVDb250ZW50LCBjb25zdHJhaW50cywgbGF5b3V0UmVzdWx0LmRpc3BsYXlDb250ZW50
KTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAtNTE0LDggKzUxNiw3IEBAIHZvaWQgSW5saW5l
Rm9ybWF0dGluZ0NvbnRleHQ6OmNyZWF0ZURpc3BsYXlDb250ZW50Rm9yRW1wdHlJbmxpbmVDb250
ZW50KGNvbnN0IENvCiAgICAgYXV0byBlbXB0eUxpbmVCcmVha2luZ1Jlc3VsdCA9ICBMaW5lTGF5
b3V0UmVzdWx0IHsgfTsKICAgICBlbXB0eUxpbmVCcmVha2luZ1Jlc3VsdC5saW5lR2VvbWV0cnkg
PSB7IHsgY29uc3RyYWludHMuaG9yaXpvbnRhbCgpLmxvZ2ljYWxMZWZ0LCBjb25zdHJhaW50cy5s
b2dpY2FsVG9wKCkgfSwgeyBjb25zdHJhaW50cy5ob3Jpem9udGFsKCkubG9naWNhbFdpZHRoIH0g
fTsKICAgICBhdXRvIGxpbmVCb3ggPSBMaW5lQm94QnVpbGRlciB7ICp0aGlzLCBlbXB0eUxpbmVC
cmVha2luZ1Jlc3VsdCB9LmJ1aWxkKHsgfSk7Ci0gICAgc2l6ZV90IG51bWJlck9mQ29udGVudGZ1
bExpbmVzID0gMDsKLSAgICBjcmVhdGVEaXNwbGF5Q29udGVudEZvcklubGluZUNvbnRlbnQobGlu
ZUJveCwgZW1wdHlMaW5lQnJlYWtpbmdSZXN1bHQsIGNvbnN0cmFpbnRzLCBsYXlvdXRSZXN1bHQu
ZGlzcGxheUNvbnRlbnQsIG51bWJlck9mQ29udGVudGZ1bExpbmVzKTsKKyAgICBjcmVhdGVEaXNw
bGF5Q29udGVudEZvcklubGluZUNvbnRlbnQobGluZUJveCwgZW1wdHlMaW5lQnJlYWtpbmdSZXN1
bHQsIGNvbnN0cmFpbnRzLCBsYXlvdXRSZXN1bHQuZGlzcGxheUNvbnRlbnQpOwogfQogCiB2b2lk
IElubGluZUZvcm1hdHRpbmdDb250ZXh0Ojppbml0aWFsaXplSW5saW5lTGF5b3V0U3RhdGUoY29u
c3QgTGF5b3V0U3RhdGUmIGdsb2JhbExheW91dFN0YXRlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lRm9ybWF0dGluZ0Nv
bnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5l
L0lubGluZUZvcm1hdHRpbmdDb250ZXh0LmgKaW5kZXggNjNjMTA3ZjNlZGQ4Li5hM2VhZDE3YjZi
MzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMv
aW5saW5lL0lubGluZUZvcm1hdHRpbmdDb250ZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5
b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lRm9ybWF0dGluZ0NvbnRleHQuaApA
QCAtODYsNyArODYsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgbGF5b3V0RmxvYXRDb250ZW50T25s
eShjb25zdCBDb25zdHJhaW50c0ZvcklubGluZUNvbnRlbnQmKTsKIAogICAgIHZvaWQgY29sbGVj
dENvbnRlbnRJZk5lZWRlZCgpOwotICAgIElubGluZVJlY3QgY3JlYXRlRGlzcGxheUNvbnRlbnRG
b3JJbmxpbmVDb250ZW50KGNvbnN0IExpbmVCb3gmLCBjb25zdCBMaW5lTGF5b3V0UmVzdWx0Jiwg
Y29uc3QgQ29uc3RyYWludHNGb3JJbmxpbmVDb250ZW50JiwgSW5saW5lRGlzcGxheTo6Q29udGVu
dCYsIHNpemVfdCYgbnVtYmVyT2ZQcmV2aW91c0xDb250ZW50ZnVsTGluZXMpOworICAgIElubGlu
ZVJlY3QgY3JlYXRlRGlzcGxheUNvbnRlbnRGb3JJbmxpbmVDb250ZW50KGNvbnN0IExpbmVCb3gm
LCBjb25zdCBMaW5lTGF5b3V0UmVzdWx0JiwgY29uc3QgQ29uc3RyYWludHNGb3JJbmxpbmVDb250
ZW50JiwgSW5saW5lRGlzcGxheTo6Q29udGVudCYpOwogICAgIHZvaWQgdXBkYXRlTGF5b3V0U3Rh
dGVXaXRoTGluZUxheW91dFJlc3VsdChjb25zdCBMaW5lTGF5b3V0UmVzdWx0JiwgY29uc3QgSW5s
aW5lUmVjdCYgbGluZUxvZ2ljYWxSZWN0LCBjb25zdCBGbG9hdGluZ0NvbnRleHQmKTsKICAgICB2
b2lkIHVwZGF0ZUJveEdlb21ldHJ5Rm9yUGxhY2VkRmxvYXRzKGNvbnN0IExpbmVMYXlvdXRSZXN1
bHQ6OlBsYWNlZEZsb2F0TGlzdCYpOwogICAgIHZvaWQgcmVzZXRCb3hHZW9tZXRyaWVzRm9yRGlz
Y2FyZGVkQ29udGVudChjb25zdCBJbmxpbmVJdGVtUmFuZ2UmIGRpc2NhcmRlZFJhbmdlLCBjb25z
dCBMaW5lTGF5b3V0UmVzdWx0OjpTdXNwZW5kZWRGbG9hdExpc3QmIHN1c3BlbmRlZEZsb2F0cyk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lu
bGluZS9JbmxpbmVGb3JtYXR0aW5nVXRpbHMuY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zv
cm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lRm9ybWF0dGluZ1V0aWxzLmNwcAppbmRleCAz
OTQ3ZjY4ZDIzMjIuLjlkNTJhZDAyYjc0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5
b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lRm9ybWF0dGluZ1V0aWxzLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9Jbmxp
bmVGb3JtYXR0aW5nVXRpbHMuY3BwCkBAIC02MzAsMTMgKzYzMCwxNCBAQCBzdGQ6Om9wdGlvbmFs
PExpbmVMYXlvdXRSZXN1bHQ6OklubGluZUNvbnRlbnRFbmRpbmc+IElubGluZUZvcm1hdHRpbmdV
dGlsczo6aW5saQogICAgIHJldHVybiB7IH07CiB9CiAKLWJvb2wgSW5saW5lRm9ybWF0dGluZ1V0
aWxzOjpzaG91bGREaXNjYXJkUmVtYWluaW5nQ29udGVudEluQmxvY2tEaXJlY3Rpb24oc2l6ZV90
IG51bWJlck9mTGluZXNXaXRoSW5saW5lQ29udGVudCkgY29uc3QKK2Jvb2wgSW5saW5lRm9ybWF0
dGluZ1V0aWxzOjpzaG91bGREaXNjYXJkUmVtYWluaW5nQ29udGVudEluQmxvY2tEaXJlY3Rpb24o
KSBjb25zdAogewotICAgIGF1dG8gbGluZUNsYW1wID0gZm9ybWF0dGluZ0NvbnRleHQoKS5sYXlv
dXRTdGF0ZSgpLnBhcmVudEJsb2NrTGF5b3V0U3RhdGUoKS5saW5lQ2xhbXAoKTsKKyAgICBhdXRv
JiBpbmxpbmVMYXlvdXRTdGF0ZSA9IGZvcm1hdHRpbmdDb250ZXh0KCkubGF5b3V0U3RhdGUoKTsK
KyAgICBhdXRvIGxpbmVDbGFtcCA9IGlubGluZUxheW91dFN0YXRlLnBhcmVudEJsb2NrTGF5b3V0
U3RhdGUoKS5saW5lQ2xhbXAoKTsKICAgICBpZiAoIWxpbmVDbGFtcCB8fCAhbGluZUNsYW1wLT5z
aG91bGREaXNjYXJkT3ZlcmZsb3cpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBBU1NFUlQo
IWxpbmVDbGFtcC0+aXNMZWdhY3kpOwotICAgIHJldHVybiBsaW5lQ2xhbXAtPm1heGltdW1MaW5l
cyA9PSBudW1iZXJPZkxpbmVzV2l0aElubGluZUNvbnRlbnQ7CisgICAgcmV0dXJuIGxpbmVDbGFt
cC0+bWF4aW11bUxpbmVzID09IGlubGluZUxheW91dFN0YXRlLmNvbnRlbnRmdWxMaW5lQ291bnQo
KTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdD
b250ZXh0cy9pbmxpbmUvSW5saW5lRm9ybWF0dGluZ1V0aWxzLmggYi9Tb3VyY2UvV2ViQ29yZS9s
YXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVGb3JtYXR0aW5nVXRpbHMuaApp
bmRleCAxZWEzNzc3NTYxZGEuLmUzZTU3ODAwZTc1NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lRm9ybWF0dGluZ1V0aWxz
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUv
SW5saW5lRm9ybWF0dGluZ1V0aWxzLmgKQEAgLTczLDcgKzczLDcgQEAgcHVibGljOgogCiAgICAg
c3RhdGljIHN0ZDo6b3B0aW9uYWw8TGluZUxheW91dFJlc3VsdDo6SW5saW5lQ29udGVudEVuZGlu
Zz4gaW5saW5lQ29udGVudEVuZGluZyhjb25zdCBMaW5lOjpSZXN1bHQmKTsKIAotICAgIGJvb2wg
c2hvdWxkRGlzY2FyZFJlbWFpbmluZ0NvbnRlbnRJbkJsb2NrRGlyZWN0aW9uKHNpemVfdCBudW1i
ZXJPZkxpbmVzV2l0aElubGluZUNvbnRlbnQpIGNvbnN0OworICAgIGJvb2wgc2hvdWxkRGlzY2Fy
ZFJlbWFpbmluZ0NvbnRlbnRJbkJsb2NrRGlyZWN0aW9uKCkgY29uc3Q7CiAKIHByaXZhdGU6CiAg
ICAgSW5saW5lTGF5b3V0VW5pdCBjb250ZW50TGVmdEFmdGVyTGFzdExpbmUoY29uc3QgQ29uc3Ry
YWludHNGb3JJbkZsb3dDb250ZW50Jiwgc3RkOjpvcHRpb25hbDxJbmxpbmVMYXlvdXRVbml0PiBs
YXN0TGluZUxvZ2ljYWxCb3R0b20sIGNvbnN0IEZsb2F0aW5nQ29udGV4dCYpIGNvbnN0OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUv
SW5saW5lTGF5b3V0U3RhdGUuaCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29u
dGV4dHMvaW5saW5lL0lubGluZUxheW91dFN0YXRlLmgKaW5kZXggMmM4MjllMjU5YjY4Li5jMzAw
MzA2MWIwMTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29u
dGV4dHMvaW5saW5lL0lubGluZUxheW91dFN0YXRlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5
b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lTGF5b3V0U3RhdGUuaApAQCAtNTMs
NiArNTMsOSBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRMZWdhY3lDbGFtcGVkTGluZUluZGV4KHNp
emVfdCBsaW5lSW5kZXgpIHsgbV9sZWdhY3lDbGFtcGVkTGluZUluZGV4ID0gbGluZUluZGV4OyB9
CiAgICAgc3RkOjpvcHRpb25hbDxzaXplX3Q+IGxlZ2FjeUNsYW1wZWRMaW5lSW5kZXgoKSBjb25z
dCB7IHJldHVybiBtX2xlZ2FjeUNsYW1wZWRMaW5lSW5kZXg7IH0KIAorICAgIHNpemVfdCBjb250
ZW50ZnVsTGluZUNvdW50KCkgY29uc3QgeyByZXR1cm4gbV9jb250ZW50ZnVsTGluZUNvdW50OyB9
CisgICAgdm9pZCBzZXRDb250ZW50ZnVsTGluZUNvdW50KHNpemVfdCBsaW5lQ291bnQpIHsgbV9j
b250ZW50ZnVsTGluZUNvdW50ID0gbGluZUNvdW50OyB9CisKICAgICB2b2lkIHNldEh5cGhlbmF0
aW9uTGltaXRMaW5lcyhzaXplX3QgaHlwaGVuYXRlTGltaXRMaW5lcykgeyBtX2h5cGhlbmF0ZUxp
bWl0TGluZXMgPSBoeXBoZW5hdGVMaW1pdExpbmVzOyB9CiAgICAgdm9pZCBpbmNyZW1lbnRTdWNj
ZXNzaXZlSHlwaGVuYXRlZExpbmVDb3VudCgpIHsgKyttX3N1Y2Nlc3NpdmVIeXBoZW5hdGVkTGlu
ZUNvdW50OyB9CiAgICAgdm9pZCByZXNldFN1Y2Nlc3NpdmVIeXBoZW5hdGVkTGluZUNvdW50KCkg
eyBtX3N1Y2Nlc3NpdmVIeXBoZW5hdGVkTGluZUNvdW50ID0gMDsgfQpAQCAtODEsNiArODQsNyBA
QCBwcml2YXRlOgogICAgIHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBtX2xlZ2FjeUNsYW1wZWRMaW5l
SW5kZXggeyB9OwogICAgIHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBtX2h5cGhlbmF0ZUxpbWl0TGlu
ZXMgeyB9OwogICAgIHNpemVfdCBtX3N1Y2Nlc3NpdmVIeXBoZW5hdGVkTGluZUNvdW50IHsgMCB9
OworICAgIHNpemVfdCBtX2NvbnRlbnRmdWxMaW5lQ291bnQgeyAwIH07CiAgICAgLy8gRklYTUU6
IFRoaXMgaXMgcmVxdWlyZWQgYnkgdGhlIGludGVnYXJhdGlvbiBjb2RlcGF0aC4KICAgICBIYXNo
TWFwPENoZWNrZWRSZWY8Y29uc3QgRWxlbWVudEJveD4sIExheW91dFVuaXQ+IG1fbmVzdGVkTGlz
dE1hcmtlck9mZnNldHM7CiAgICAgQXZhaWxhYmxlTGluZVdpZHRoT3ZlcnJpZGUgbV9hdmFpbGFi
bGVMaW5lV2lkdGhPdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9p
bnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3JhdGlvbkJveFRyZWVVcGRhdGVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3JhdGlvbkJveFRyZWVVcGRhdGVy
LmNwcAppbmRleCA3ZDc5OGE3MTUxZmMuLjUxOGE3ZmFkNGI5YiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0xheW91dEludGVncmF0aW9uQm94VHJlZVVwZGF0
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRl
Z3JhdGlvbkJveFRyZWVVcGRhdGVyLmNwcApAQCAtNTAxLDcgKzUwMSw5IEBAIHZvaWQgc2hvd0lu
bGluZUNvbnRlbnQoVGV4dFN0cmVhbSYgc3RyZWFtLCBjb25zdCBJbmxpbmVDb250ZW50JiBpbmxp
bmVDb250ZW50LCBzCiAgICAgICAgIH07CiAgICAgICAgIGFkZFNwYWNpbmcoc3RyZWFtKTsKICAg
ICAgICAgYXV0byYgbGluZSA9IGxpbmVzW2xpbmVJbmRleF07Ci0gICAgICAgIHN0cmVhbSA8PCAi
bGluZSBhdCAoIiA8PCBsaW5lLmxpbmVCb3hMZWZ0KCkgPDwgIiwiIDw8IGxpbmUubGluZUJveFRv
cCgpIDw8ICIpIHNpemUgKCIgPDwgbGluZS5saW5lQm94UmlnaHQoKSAtIGxpbmUubGluZUJveExl
ZnQoKSA8PCAieCIgPDwgbGluZS5saW5lQm94Qm90dG9tKCkgLSBsaW5lLmxpbmVCb3hUb3AoKSA8
PCAiKSBiYXNlbGluZSAoIiA8PCBsaW5lLmJhc2VsaW5lKCkgPDwgIikgZW5jbG9zaW5nIHRvcCAo
IiA8PCBsaW5lLmVuY2xvc2luZ0NvbnRlbnRMb2dpY2FsVG9wKCkgPDwgIikgYm90dG9tICgiIDw8
IGxpbmUuZW5jbG9zaW5nQ29udGVudExvZ2ljYWxCb3R0b20oKSA8PCAiKSI7CisgICAgICAgIHN0
cmVhbSA8PCAibGluZSBhdCAoIiA8PCBsaW5lLmxpbmVCb3hMZWZ0KCkgPDwgIiwiIDw8IGxpbmUu
bGluZUJveFRvcCgpIDw8ICIpIHNpemUgKCIgPDwgbGluZS5saW5lQm94UmlnaHQoKSAtIGxpbmUu
bGluZUJveExlZnQoKSA8PCAieCIgPDwgbGluZS5saW5lQm94Qm90dG9tKCkgLSBsaW5lLmxpbmVC
b3hUb3AoKSA8PCAiKSBiYXNlbGluZSAoIiA8PCBsaW5lLmJhc2VsaW5lKCkgPDwgIikgZW5jbG9z
aW5nIHRvcCAoIiA8PCBsaW5lLmVuY2xvc2luZ0NvbnRlbnRMb2dpY2FsVG9wKCkgPDwgIikgYm90
dG9tICgiIDw8IGxpbmUuZW5jbG9zaW5nQ29udGVudExvZ2ljYWxCb3R0b20oKSA8PCAiKSAiOwor
ICAgICAgICBpZiAobGluZS5oYXNFbGxpcHNpcygpKQorICAgICAgICAgICAgc3RyZWFtIDw8ICJ0
cnVuY2F0ZWQgd2l0aCBlbGxpcHNpcy4iOwogICAgICAgICBzdHJlYW0ubmV4dExpbmUoKTsKIAog
ICAgICAgICBhZGRTcGFjaW5nKHN0cmVhbSk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>477435</attachid>
            <date>2025-11-19 07:52:38 -0800</date>
            <delta_ts>2025-11-19 09:05:59 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-302757-20251119075238.patch</filename>
            <type>text/plain</type>
            <size>20084</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">RnJvbSBiYjRmNWFkZDNiODY2NjBhNDIxZWY2NmQwODBmN2U3NWU3NDY3NjA0IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBBbGFuIEJhcmFkbGF5IDx6YWxhbkBhcHBsZS5jb20+CkRhdGU6
IFR1ZSwgMTggTm92IDIwMjUgMTk6Mjg6MjYgLTA4MDAKU3ViamVjdDogW1BBVENIXSBbY2xlYW51
cF0gQWRkIGNvbnRlbnRmdWxMaW5lQ291bnQgdG8gSW5saW5lTGF5b3V0U3RhdGUKIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zMDI3NTcKClJldmlld2VkIGJ5IEFudHRp
IEtvaXZpc3RvLgoKSW5zdGVhZCBvZiByZWx5aW5nIG9uIGEgbG9jYWwgc3RhY2sgdmFyaWFibGUg
Zm9yIHRoZSBjb250ZW50ZnVsIGxpbmUgY291bnQsIHdlIHNob3VsZCB1c2UgSW5saW5lTGF5b3V0
U3RhdGUgdG8gbWFpbnRhaW4gaXQuIEl0IGhlbHBzIHdpdGggd2UgbmVlZCB0byBrZWVwIHRyYWNr
IG9mCmxpbmVzIGNvbWluZyBmcm9tIG5lc3RlZCBibG9jayBjb250ZW50IChpbmxpbmUtYmxvY2sg
b3IgYmxvY2staW4taW5saW5lKS4KCiogU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdD
b250ZXh0cy9pbmxpbmUvSW5saW5lRm9ybWF0dGluZ0NvbnRleHQuY3BwOgooV2ViQ29yZTo6TGF5
b3V0OjpJbmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6bGF5b3V0KToKKFdlYkNvcmU6OkxheW91dDo6
SW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6OmxpbmVMYXlvdXQpOgooV2ViQ29yZTo6TGF5b3V0OjpJ
bmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6Y3JlYXRlRGlzcGxheUNvbnRlbnRGb3JJbmxpbmVDb250
ZW50KToKKFdlYkNvcmU6OkxheW91dDo6SW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6OmNyZWF0ZURp
c3BsYXlDb250ZW50Rm9yTGluZUZyb21DYWNoZWRDb250ZW50KToKKFdlYkNvcmU6OkxheW91dDo6
SW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6OmNyZWF0ZURpc3BsYXlDb250ZW50Rm9yRW1wdHlJbmxp
bmVDb250ZW50KToKKiBTb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lu
bGluZS9JbmxpbmVGb3JtYXR0aW5nQ29udGV4dC5oOgoqIFNvdXJjZS9XZWJDb3JlL2xheW91dC9m
b3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUZvcm1hdHRpbmdVdGlscy5jcHA6CihXZWJD
b3JlOjpMYXlvdXQ6OklubGluZUZvcm1hdHRpbmdVdGlsczo6c2hvdWxkRGlzY2FyZFJlbWFpbmlu
Z0NvbnRlbnRJbkJsb2NrRGlyZWN0aW9uIGNvbnN0KToKKiBTb3VyY2UvV2ViQ29yZS9sYXlvdXQv
Zm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVGb3JtYXR0aW5nVXRpbHMuaDoKKiBTb3Vy
Y2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVMYXlvdXRT
dGF0ZS5oOgooV2ViQ29yZTo6TGF5b3V0OjpJbmxpbmVMYXlvdXRTdGF0ZTo6Y29udGVudGZ1bExp
bmVDb3VudCBjb25zdCk6CihXZWJDb3JlOjpMYXlvdXQ6OklubGluZUxheW91dFN0YXRlOjpzZXRD
b250ZW50ZnVsTGluZUNvdW50KToKKiBTb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24v
TGF5b3V0SW50ZWdyYXRpb25Cb3hUcmVlVXBkYXRlci5jcHA6CihXZWJDb3JlOjpMYXlvdXRJbnRl
Z3JhdGlvbjo6c2hvd0lubGluZUNvbnRlbnQpOgotLS0KIC4uLi9pbmxpbmUvSW5saW5lRm9ybWF0
dGluZ0NvbnRleHQuY3BwICAgICAgICB8IDUwICsrKysrKysrKy0tLS0tLS0tLS0KIC4uLi9pbmxp
bmUvSW5saW5lRm9ybWF0dGluZ0NvbnRleHQuaCAgICAgICAgICB8ICAyICstCiAuLi4vaW5saW5l
L0lubGluZUZvcm1hdHRpbmdVdGlscy5jcHAgICAgICAgICAgfCAgNyArLS0KIC4uLi9pbmxpbmUv
SW5saW5lRm9ybWF0dGluZ1V0aWxzLmggICAgICAgICAgICB8ICAyICstCiAuLi4vaW5saW5lL0lu
bGluZUxheW91dFN0YXRlLmggICAgICAgICAgICAgICAgfCAgNCArKwogLi4uL0xheW91dEludGVn
cmF0aW9uQm94VHJlZVVwZGF0ZXIuY3BwICAgICAgIHwgIDQgKy0KIDYgZmlsZXMgY2hhbmdlZCwg
MzggaW5zZXJ0aW9ucygrKSwgMzEgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lRm9ybWF0dGluZ0Nv
bnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxp
bmUvSW5saW5lRm9ybWF0dGluZ0NvbnRleHQuY3BwCmluZGV4IGJkZmU1NGVlM2MyZi4uMjMwZTQ3
NzQ3MzEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRl
eHRzL2lubGluZS9JbmxpbmVGb3JtYXR0aW5nQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lRm9ybWF0dGluZ0NvbnRl
eHQuY3BwCkBAIC0xMTcsNyArMTE3LDcgQEAgSW5saW5lTGF5b3V0UmVzdWx0IElubGluZUZvcm1h
dHRpbmdDb250ZXh0OjpsYXlvdXQoY29uc3QgQ29uc3RyYWludHNGb3JJbmxpbmVDb24KIHsKICAg
ICByZWJ1aWxkSW5saW5lSXRlbUxpc3RJZk5lZWRlZChsaW5lRGFtYWdlKTsKIAotICAgIGlmIChm
b3JtYXR0aW5nVXRpbHMoKS5zaG91bGREaXNjYXJkUmVtYWluaW5nQ29udGVudEluQmxvY2tEaXJl
Y3Rpb24oeyB9KSkgeworICAgIGlmIChmb3JtYXR0aW5nVXRpbHMoKS5zaG91bGREaXNjYXJkUmVt
YWluaW5nQ29udGVudEluQmxvY2tEaXJlY3Rpb24oKSkgewogICAgICAgICAvLyBUaGlzIGlubGlu
ZSBjb250ZW50IG1heSBiZSBjb21wbGV0ZWx5IGNvbGxhcHNlZCAoaS5lLiBhZnRlciBjbGFtcGVk
IGJsb2NrIGNvbnRhaW5lcikKICAgICAgICAgcmVzZXRCb3hHZW9tZXRyaWVzRm9yRGlzY2FyZGVk
Q29udGVudCh7IHsgfSwgeyBpbmxpbmVDb250ZW50Q2FjaGUoKS5pbmxpbmVJdGVtcygpLmNvbnRl
bnQoKS5zaXplKCksIHsgfSB9IH0sIHsgfSk7CiAgICAgICAgIHJldHVybiB7IH07CkBAIC0xNTks
MjYgKzE1OSwyOSBAQCBJbmxpbmVMYXlvdXRSZXN1bHQgSW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6
OmxheW91dChjb25zdCBDb25zdHJhaW50c0ZvcklubGluZUNvbgogICAgICAgICBhdXRvIGxhc3RM
aW5lSW5kZXggPSBsaW5lRGFtYWdlLT5sYXlvdXRTdGFydFBvc2l0aW9uKCktPmxpbmVJbmRleCAt
IDE7CiAgICAgICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgYmUgYWJsZSB0byBleHRyYWN0IHRoZSBs
YXN0IGxpbmUgaW5mb3JtYXRpb24gYW5kIHByb3ZpZGUgaXQgdG8gbGF5b3V0IGFzICJwcmV2aW91
cyBsaW5lIiAoZW5kcyBpbiBsaW5lIGJyZWFrIGFuZCBpbmxpbmUgZGlyZWN0aW9uKS4KICAgICAg
ICAgcmV0dXJuIFByZXZpb3VzTGluZSB7IGxhc3RMaW5lSW5kZXgsIHsgfSwgeyB9LCB7IH0sIHsg
fSB9OwotICAgIH07CisgICAgfSgpOworCisgICAgYXV0byYgaW5saW5lTGF5b3V0U3RhdGUgPSBs
YXlvdXRTdGF0ZSgpOworICAgIGlubGluZUxheW91dFN0YXRlLnNldENvbnRlbnRmdWxMaW5lQ291
bnQocHJldmlvdXNMaW5lID8gcHJldmlvdXNMaW5lLT5saW5lSW5kZXggKyAxIDogMCk7CiAKICAg
ICBhdXRvIHRleHRXcmFwU3R5bGUgPSByb290KCkuc3R5bGUoKS50ZXh0V3JhcFN0eWxlKCk7CiAg
ICAgaWYgKHJvb3QoKS5zdHlsZSgpLnRleHRXcmFwTW9kZSgpID09IFRleHRXcmFwTW9kZTo6V3Jh
cCAmJiAodGV4dFdyYXBTdHlsZSA9PSBUZXh0V3JhcFN0eWxlOjpCYWxhbmNlIHx8IHRleHRXcmFw
U3R5bGUgPT0gVGV4dFdyYXBTdHlsZTo6UHJldHR5KSkgewogICAgICAgICBhdXRvIGNvbnN0cmFp
bmVyID0gSW5saW5lQ29udGVudENvbnN0cmFpbmVyIHsgKnRoaXMsIGlubGluZUl0ZW1MaXN0LCBj
b25zdHJhaW50cy5ob3Jpem9udGFsKCkgfTsKICAgICAgICAgYXV0byBjb25zdHJhaW5lZExpbmVX
aWR0aHMgPSBjb25zdHJhaW5lci5jb21wdXRlUGFyYWdyYXBoTGV2ZWxDb25zdHJhaW50cyh0ZXh0
V3JhcFN0eWxlKTsKICAgICAgICAgaWYgKGNvbnN0cmFpbmVkTGluZVdpZHRocykKLSAgICAgICAg
ICAgIGxheW91dFN0YXRlKCkuc2V0QXZhaWxhYmxlTGluZVdpZHRoT3ZlcnJpZGUoeyAqY29uc3Ry
YWluZWRMaW5lV2lkdGhzIH0pOworICAgICAgICAgICAgaW5saW5lTGF5b3V0U3RhdGUuc2V0QXZh
aWxhYmxlTGluZVdpZHRoT3ZlcnJpZGUoeyAqY29uc3RyYWluZWRMaW5lV2lkdGhzIH0pOwogICAg
IH0KIAotICAgIGlmIChUZXh0T25seVNpbXBsZUxpbmVCdWlsZGVyOjppc0VsaWdpYmxlRm9yU2lt
cGxpZmllZFRleHRPbmx5SW5saW5lTGF5b3V0QnlDb250ZW50KGlubGluZUl0ZW1zLCBsYXlvdXRT
dGF0ZSgpLnBsYWNlZEZsb2F0cygpKSAmJiBUZXh0T25seVNpbXBsZUxpbmVCdWlsZGVyOjppc0Vs
aWdpYmxlRm9yU2ltcGxpZmllZElubGluZUxheW91dEJ5U3R5bGUocm9vdCgpKSkgeworICAgIGlm
IChUZXh0T25seVNpbXBsZUxpbmVCdWlsZGVyOjppc0VsaWdpYmxlRm9yU2ltcGxpZmllZFRleHRP
bmx5SW5saW5lTGF5b3V0QnlDb250ZW50KGlubGluZUl0ZW1zLCBpbmxpbmVMYXlvdXRTdGF0ZS5w
bGFjZWRGbG9hdHMoKSkgJiYgVGV4dE9ubHlTaW1wbGVMaW5lQnVpbGRlcjo6aXNFbGlnaWJsZUZv
clNpbXBsaWZpZWRJbmxpbmVMYXlvdXRCeVN0eWxlKHJvb3QoKSkpIHsKICAgICAgICAgYXV0byBz
aW1wbGlmaWVkTGluZUJ1aWxkZXIgPSBtYWtlVW5pcXVlUmVmPFRleHRPbmx5U2ltcGxlTGluZUJ1
aWxkZXI+KCp0aGlzLCByb290KCksIGNvbnN0cmFpbnRzLmhvcml6b250YWwoKSwgaW5saW5lSXRl
bUxpc3QpOwotICAgICAgICByZXR1cm4gbGluZUxheW91dChzaW1wbGlmaWVkTGluZUJ1aWxkZXIs
IGlubGluZUl0ZW1MaXN0LCBuZWVkc0xheW91dFJhbmdlLCBwcmV2aW91c0xpbmUoKSwgY29uc3Ry
YWludHMsIGxpbmVEYW1hZ2UpOworICAgICAgICByZXR1cm4gbGluZUxheW91dChzaW1wbGlmaWVk
TGluZUJ1aWxkZXIsIGlubGluZUl0ZW1MaXN0LCBuZWVkc0xheW91dFJhbmdlLCBwcmV2aW91c0xp
bmUsIGNvbnN0cmFpbnRzLCBsaW5lRGFtYWdlKTsKICAgICB9Ci0gICAgaWYgKFJhbmdlQmFzZWRM
aW5lQnVpbGRlcjo6aXNFbGlnaWJsZUZvclJhbmdlSW5saW5lTGF5b3V0KCp0aGlzLCBuZWVkc0xh
eW91dFJhbmdlLCBpbmxpbmVJdGVtcywgbGF5b3V0U3RhdGUoKS5wbGFjZWRGbG9hdHMoKSkpIHsK
KyAgICBpZiAoUmFuZ2VCYXNlZExpbmVCdWlsZGVyOjppc0VsaWdpYmxlRm9yUmFuZ2VJbmxpbmVM
YXlvdXQoKnRoaXMsIG5lZWRzTGF5b3V0UmFuZ2UsIGlubGluZUl0ZW1zLCBpbmxpbmVMYXlvdXRT
dGF0ZS5wbGFjZWRGbG9hdHMoKSkpIHsKICAgICAgICAgYXV0byByYW5nZUJhc2VkTGluZUJ1aWxk
ZXIgPSBtYWtlVW5pcXVlUmVmPFJhbmdlQmFzZWRMaW5lQnVpbGRlcj4oKnRoaXMsIGNvbnN0cmFp
bnRzLmhvcml6b250YWwoKSwgaW5saW5lSXRlbXMpOwotICAgICAgICByZXR1cm4gbGluZUxheW91
dChyYW5nZUJhc2VkTGluZUJ1aWxkZXIsIGlubGluZUl0ZW1MaXN0LCBuZWVkc0xheW91dFJhbmdl
LCBwcmV2aW91c0xpbmUoKSwgY29uc3RyYWludHMsIGxpbmVEYW1hZ2UpOworICAgICAgICByZXR1
cm4gbGluZUxheW91dChyYW5nZUJhc2VkTGluZUJ1aWxkZXIsIGlubGluZUl0ZW1MaXN0LCBuZWVk
c0xheW91dFJhbmdlLCBwcmV2aW91c0xpbmUsIGNvbnN0cmFpbnRzLCBsaW5lRGFtYWdlKTsKICAg
ICB9CiAgICAgYXV0byBsaW5lQnVpbGRlciA9IG1ha2VVbmlxdWVSZWY8TGluZUJ1aWxkZXI+KCp0
aGlzLCBjb25zdHJhaW50cy5ob3Jpem9udGFsKCksIGlubGluZUl0ZW1MaXN0LCBpbmxpbmVDb250
ZW50Q2FjaGUoKS50ZXh0U3BhY2luZ0NvbnRleHQoKSk7Ci0gICAgcmV0dXJuIGxpbmVMYXlvdXQo
bGluZUJ1aWxkZXIsIGlubGluZUl0ZW1MaXN0LCBuZWVkc0xheW91dFJhbmdlLCBwcmV2aW91c0xp
bmUoKSwgY29uc3RyYWludHMsIGxpbmVEYW1hZ2UpOworICAgIHJldHVybiBsaW5lTGF5b3V0KGxp
bmVCdWlsZGVyLCBpbmxpbmVJdGVtTGlzdCwgbmVlZHNMYXlvdXRSYW5nZSwgcHJldmlvdXNMaW5l
LCBjb25zdHJhaW50cywgbGluZURhbWFnZSk7CiB9CiAKIHN0ZDo6cGFpcjxMYXlvdXRVbml0LCBM
YXlvdXRVbml0PiBJbmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6bWluaW11bU1heGltdW1Db250ZW50
U2l6ZShJbmxpbmVEYW1hZ2UqIGxpbmVEYW1hZ2UpCkBAIC0zMDEsMTMgKzMwNCwxMiBAQCBJbmxp
bmVMYXlvdXRSZXN1bHQgSW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6OmxpbmVMYXlvdXQoQWJzdHJh
Y3RMaW5lQnVpbGRlciYgbGluZQogICAgIGlmICghbmVlZHNMYXlvdXRSYW5nZS5zdGFydCkKICAg
ICAgICAgbGF5b3V0UmVzdWx0LmRpc3BsYXlDb250ZW50LmJveGVzLnJlc2VydmVJbml0aWFsQ2Fw
YWNpdHkoZXN0aW1hdGVkRGlzcGxheUJveFNpemUoaW5saW5lSXRlbUxpc3Quc2l6ZSgpKSk7CiAK
KyAgICBhdXRvJiBpbmxpbmVMYXlvdXRTdGF0ZSA9IGxheW91dFN0YXRlKCk7CiAgICAgYXV0byBm
bG9hdGluZ0NvbnRleHQgPSB0aGlzLT5mbG9hdGluZ0NvbnRleHQoKTsKICAgICBhdXRvIGxpbmVM
b2dpY2FsVG9wID0gSW5saW5lTGF5b3V0VW5pdCB7IGNvbnN0cmFpbnRzLmxvZ2ljYWxUb3AoKSB9
OwogICAgIGF1dG8gcHJldmlvdXNMaW5lRW5kID0gc3RkOjpvcHRpb25hbDxJbmxpbmVJdGVtUG9z
aXRpb24+IHsgfTsKICAgICBhdXRvIGxlYWRpbmdJbmxpbmVJdGVtUG9zaXRpb24gPSBuZWVkc0xh
eW91dFJhbmdlLnN0YXJ0OwotICAgIGF1dG8gcGFydGlhbExheW91dFN0YXJ0SW5kZXggPSBwcmV2
aW91c0xpbmUgPyBzdGQ6Om1ha2Vfb3B0aW9uYWwocHJldmlvdXNMaW5lLT5saW5lSW5kZXgpIDog
c3RkOjpudWxsb3B0OwogICAgIGF1dG8gaXNGaXJzdEZvcm1hdHRlZExpbmVDYW5kaWRhdGUgPSB0
cnVlOwotICAgIHNpemVfdCBudW1iZXJPZkNvbnRlbnRmdWxMaW5lcyA9IHBhcnRpYWxMYXlvdXRT
dGFydEluZGV4ID8gKnBhcnRpYWxMYXlvdXRTdGFydEluZGV4ICsgMSA6IDBsdTsKICAgICB3aGls
ZSAodHJ1ZSkgewogCiAgICAgICAgIGF1dG8gbGluZUluaXRpYWxSZWN0ID0gSW5saW5lUmVjdCB7
IGxpbmVMb2dpY2FsVG9wLCBjb25zdHJhaW50cy5ob3Jpem9udGFsKCkubG9naWNhbExlZnQsIGNv
bnN0cmFpbnRzLmhvcml6b250YWwoKS5sb2dpY2FsV2lkdGgsIGZvcm1hdHRpbmdVdGlscygpLmlu
aXRpYWxMaW5lSGVpZ2h0KCFwcmV2aW91c0xpbmUuaGFzX3ZhbHVlKCkpIH07CkBAIC0zMTYsNyAr
MzE4LDggQEAgSW5saW5lTGF5b3V0UmVzdWx0IElubGluZUZvcm1hdHRpbmdDb250ZXh0OjpsaW5l
TGF5b3V0KEFic3RyYWN0TGluZUJ1aWxkZXImIGxpbmUKIAogICAgICAgICBhdXRvIGxpbmVMYXlv
dXRSZXN1bHQgPSBsaW5lQnVpbGRlci5sYXlvdXRJbmxpbmVDb250ZW50KGxpbmVJbnB1dCwgcHJl
dmlvdXNMaW5lLCBpc0ZpcnN0Rm9ybWF0dGVkTGluZUNhbmRpZGF0ZSk7CiAgICAgICAgIGF1dG8g
bGluZUJveCA9IExpbmVCb3hCdWlsZGVyIHsgKnRoaXMsIGxpbmVMYXlvdXRSZXN1bHQgfS5idWls
ZChsaW5lSW5kZXgpOwotICAgICAgICBhdXRvIGxpbmVMb2dpY2FsUmVjdCA9IGNyZWF0ZURpc3Bs
YXlDb250ZW50Rm9ySW5saW5lQ29udGVudChsaW5lQm94LCBsaW5lTGF5b3V0UmVzdWx0LCBjb25z
dHJhaW50cywgbGF5b3V0UmVzdWx0LmRpc3BsYXlDb250ZW50LCBudW1iZXJPZkNvbnRlbnRmdWxM
aW5lcyk7CisgICAgICAgIGlubGluZUxheW91dFN0YXRlLnNldENvbnRlbnRmdWxMaW5lQ291bnQo
aW5saW5lTGF5b3V0U3RhdGUuY29udGVudGZ1bExpbmVDb3VudCgpICsgKGxpbmVCb3guaGFzQ29u
dGVudCgpID8gMSA6IDApKTsKKyAgICAgICAgYXV0byBsaW5lTG9naWNhbFJlY3QgPSBjcmVhdGVE
aXNwbGF5Q29udGVudEZvcklubGluZUNvbnRlbnQobGluZUJveCwgbGluZUxheW91dFJlc3VsdCwg
Y29uc3RyYWludHMsIGxheW91dFJlc3VsdC5kaXNwbGF5Q29udGVudCk7CiAgICAgICAgIHVwZGF0
ZUJveEdlb21ldHJ5Rm9yUGxhY2VkRmxvYXRzKGxpbmVMYXlvdXRSZXN1bHQuZmxvYXRDb250ZW50
LnBsYWNlZEZsb2F0cyk7CiAgICAgICAgIHVwZGF0ZUxheW91dFN0YXRlV2l0aExpbmVMYXlvdXRS
ZXN1bHQobGluZUxheW91dFJlc3VsdCwgbGluZUxvZ2ljYWxSZWN0LCBmbG9hdGluZ0NvbnRleHQp
OwogCkBAIC0zMzMsNyArMzM2LDcgQEAgSW5saW5lTGF5b3V0UmVzdWx0IElubGluZUZvcm1hdHRp
bmdDb250ZXh0OjpsaW5lTGF5b3V0KEFic3RyYWN0TGluZUJ1aWxkZXImIGxpbmUKICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICB9CiAKLSAgICAgICAgaWYgKGZvcm1hdHRpbmdVdGlscygpLnNo
b3VsZERpc2NhcmRSZW1haW5pbmdDb250ZW50SW5CbG9ja0RpcmVjdGlvbihudW1iZXJPZkNvbnRl
bnRmdWxMaW5lcykpIHsKKyAgICAgICAgaWYgKGZvcm1hdHRpbmdVdGlscygpLnNob3VsZERpc2Nh
cmRSZW1haW5pbmdDb250ZW50SW5CbG9ja0RpcmVjdGlvbigpKSB7CiAgICAgICAgICAgICByZXNl
dEJveEdlb21ldHJpZXNGb3JEaXNjYXJkZWRDb250ZW50KHsgbGVhZGluZ0lubGluZUl0ZW1Qb3Np
dGlvbiwgbmVlZHNMYXlvdXRSYW5nZS5lbmQgfSwgbGluZUxheW91dFJlc3VsdC5mbG9hdENvbnRl
bnQuc3VzcGVuZGVkRmxvYXRzKTsKICAgICAgICAgICAgIGxheW91dFJlc3VsdC5yYW5nZSA9ICFp
c1BhcnRpYWxMYXlvdXQgPyBJbmxpbmVMYXlvdXRSZXN1bHQ6OlJhbmdlOjpGdWxsIDogSW5saW5l
TGF5b3V0UmVzdWx0OjpSYW5nZTo6RnVsbEZyb21EYW1hZ2U7CiAgICAgICAgICAgICBsYXlvdXRS
ZXN1bHQuZGlkRGlzY2FyZENvbnRlbnQgPSB0cnVlOwpAQCAtMzQ1LDcgKzM0OCw3IEBAIElubGlu
ZUxheW91dFJlc3VsdCBJbmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6bGluZUxheW91dChBYnN0cmFj
dExpbmVCdWlsZGVyJiBsaW5lCiAgICAgICAgIGlzRmlyc3RGb3JtYXR0ZWRMaW5lQ2FuZGlkYXRl
ICY9ICFsaW5lTGF5b3V0UmVzdWx0Lmhhc0luZmxvd0NvbnRlbnQoKTsKICAgICAgICAgbGluZUxv
Z2ljYWxUb3AgPSBmb3JtYXR0aW5nVXRpbHMoKS5sb2dpY2FsVG9wRm9yTmV4dExpbmUobGluZUxh
eW91dFJlc3VsdCwgbGluZUxvZ2ljYWxSZWN0LCBmbG9hdGluZ0NvbnRleHQpOwogICAgIH0KLSAg
ICBJbmxpbmVEaXNwbGF5TGluZUJ1aWxkZXI6OmFkZExlZ2FjeUxpbmVDbGFtcFRyYWlsaW5nTGlu
a0JveElmQXBwbGljYWJsZSgqdGhpcywgbGF5b3V0U3RhdGUoKSwgbGF5b3V0UmVzdWx0LmRpc3Bs
YXlDb250ZW50KTsKKyAgICBJbmxpbmVEaXNwbGF5TGluZUJ1aWxkZXI6OmFkZExlZ2FjeUxpbmVD
bGFtcFRyYWlsaW5nTGlua0JveElmQXBwbGljYWJsZSgqdGhpcywgaW5saW5lTGF5b3V0U3RhdGUs
IGxheW91dFJlc3VsdC5kaXNwbGF5Q29udGVudCk7CiAgICAgcmV0dXJuIGxheW91dFJlc3VsdDsK
IH0KIApAQCAtNDE3LDI1ICs0MjAsMjMgQEAgdm9pZCBJbmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6
dXBkYXRlQm94R2VvbWV0cnlGb3JQbGFjZWRGbG9hdHMoY29uc3QgTGluZUxheW91dFIKICAgICB9
CiB9CiAKLUlubGluZVJlY3QgSW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6OmNyZWF0ZURpc3BsYXlD
b250ZW50Rm9ySW5saW5lQ29udGVudChjb25zdCBMaW5lQm94JiBsaW5lQm94LCBjb25zdCBMaW5l
TGF5b3V0UmVzdWx0JiBsaW5lTGF5b3V0UmVzdWx0LCBjb25zdCBDb25zdHJhaW50c0ZvcklubGlu
ZUNvbnRlbnQmIGNvbnN0cmFpbnRzLCBJbmxpbmVEaXNwbGF5OjpDb250ZW50JiBkaXNwbGF5Q29u
dGVudCwgc2l6ZV90JiBudW1iZXJPZlByZXZpb3VzTENvbnRlbnRmdWxMaW5lcykKK0lubGluZVJl
Y3QgSW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6OmNyZWF0ZURpc3BsYXlDb250ZW50Rm9ySW5saW5l
Q29udGVudChjb25zdCBMaW5lQm94JiBsaW5lQm94LCBjb25zdCBMaW5lTGF5b3V0UmVzdWx0JiBs
aW5lTGF5b3V0UmVzdWx0LCBjb25zdCBDb25zdHJhaW50c0ZvcklubGluZUNvbnRlbnQmIGNvbnN0
cmFpbnRzLCBJbmxpbmVEaXNwbGF5OjpDb250ZW50JiBkaXNwbGF5Q29udGVudCkKIHsKLSAgICBh
dXRvIGxpbmVDbGFtcCA9IGxheW91dFN0YXRlKCkucGFyZW50QmxvY2tMYXlvdXRTdGF0ZSgpLmxp
bmVDbGFtcCgpOworICAgIGF1dG8mIGlubGluZUxheW91dFN0YXRlID0gbGF5b3V0U3RhdGUoKTsK
KyAgICBhdXRvIGxpbmVDbGFtcCA9IGlubGluZUxheW91dFN0YXRlLnBhcmVudEJsb2NrTGF5b3V0
U3RhdGUoKS5saW5lQ2xhbXAoKTsKICAgICBhdXRvIGlzTGVnYWN5TGluZUNsYW1wID0gbGluZUNs
YW1wICYmIGxpbmVDbGFtcC0+aXNMZWdhY3k7CiAgICAgYXV0byBudW1iZXJPZlZpc2libGVMaW5l
c0FsbG93ZWQgPSBsaW5lQ2xhbXAgPyBzdGQ6Om1ha2Vfb3B0aW9uYWwobGluZUNsYW1wLT5tYXhp
bXVtTGluZXMpIDogc3RkOjpudWxsb3B0OwogCi0gICAgYXV0byBudW1iZXJPZkxpbmVzV2l0aElu
bGluZUNvbnRlbnQgPSBudW1iZXJPZlByZXZpb3VzTENvbnRlbnRmdWxMaW5lcyArIChsaW5lTGF5
b3V0UmVzdWx0Lmhhc0lubGluZUNvbnRlbnQoKSA/IDEgOiAwKTsKLSAgICBhdXRvIGxpbmVJc0Z1
bGx5VHJ1bmNhdGVkSW5CbG9ja0RpcmVjdGlvbiA9IG51bWJlck9mTGluZXNXaXRoSW5saW5lQ29u
dGVudCA+IG51bWJlck9mVmlzaWJsZUxpbmVzQWxsb3dlZC52YWx1ZV9vcihudW1iZXJPZkxpbmVz
V2l0aElubGluZUNvbnRlbnQpOworICAgIGF1dG8gbGluZUlzRnVsbHlUcnVuY2F0ZWRJbkJsb2Nr
RGlyZWN0aW9uID0gbnVtYmVyT2ZWaXNpYmxlTGluZXNBbGxvd2VkID8gaW5saW5lTGF5b3V0U3Rh
dGUuY29udGVudGZ1bExpbmVDb3VudCgpID4gKm51bWJlck9mVmlzaWJsZUxpbmVzQWxsb3dlZCA6
IGZhbHNlOwogICAgIGF1dG8gZGlzcGxheUxpbmUgPSBJbmxpbmVEaXNwbGF5TGluZUJ1aWxkZXIg
eyAqdGhpcywgY29uc3RyYWludHMgfS5idWlsZChsaW5lTGF5b3V0UmVzdWx0LCBsaW5lQm94LCBs
aW5lSXNGdWxseVRydW5jYXRlZEluQmxvY2tEaXJlY3Rpb24pOwogICAgIGF1dG8gYm94ZXMgPSBJ
bmxpbmVEaXNwbGF5Q29udGVudEJ1aWxkZXIgeyAqdGhpcywgY29uc3RyYWludHMsIGxpbmVCb3gs
IGRpc3BsYXlMaW5lIH0uYnVpbGQobGluZUxheW91dFJlc3VsdCk7CiAgICAgZGlzcGxheUxpbmUu
c2V0Qm94Q291bnQoYm94ZXMuc2l6ZSgpKTsKIAotICAgIC8vIE5vbi1jb250ZW50ZnVsIGxpbmVz
IGFyZSBwcm9kdWNlZCBieSBjZXJ0YWluIHRyYWlsaW5nIGNvbnRlbnQgbGlrZSA8ZGl2PmNvbnRl
bnRmdWwgbGluZTxicj48c3Bhbj48L3NwYW4+PC9kaXY+IHdoZXJlIDxzcGFuPjwvc3Bhbj4gY3Jl
YXRlcyBhIGRpc3BsYXkgbGluZSB3aXRoIG5vdGhpbmcgYnV0IHRoZSByb290IGlubGluZSBib3gu
Ci0gICAgbnVtYmVyT2ZQcmV2aW91c0xDb250ZW50ZnVsTGluZXMgKz0gKGxpbmVCb3guaGFzQ29u
dGVudCgpID8gMSA6IDApOwotICAgIGF1dG8gdHJ1bmNhdGlvblBvbGljeSA9IElubGluZUZvcm1h
dHRpbmdVdGlsczo6bGluZUVuZGluZ1RydW5jYXRpb25Qb2xpY3kocm9vdCgpLnN0eWxlKCksIG51
bWJlck9mUHJldmlvdXNMQ29udGVudGZ1bExpbmVzLCBudW1iZXJPZlZpc2libGVMaW5lc0FsbG93
ZWQsIGxpbmVCb3guaGFzQ29udGVudCgpKTsKKyAgICBhdXRvIHRydW5jYXRpb25Qb2xpY3kgPSBJ
bmxpbmVGb3JtYXR0aW5nVXRpbHM6OmxpbmVFbmRpbmdUcnVuY2F0aW9uUG9saWN5KHJvb3QoKS5z
dHlsZSgpLCBpbmxpbmVMYXlvdXRTdGF0ZS5jb250ZW50ZnVsTGluZUNvdW50KCksIG51bWJlck9m
VmlzaWJsZUxpbmVzQWxsb3dlZCwgbGluZUJveC5oYXNDb250ZW50KCkpOwogICAgIElubGluZURp
c3BsYXlMaW5lQnVpbGRlcjo6YXBwbHlFbGxpcHNpc0lmTmVlZGVkKHRydW5jYXRpb25Qb2xpY3ks
IGRpc3BsYXlMaW5lLCBib3hlcywgaXNMZWdhY3lMaW5lQ2xhbXApOwogICAgIGF1dG8gbGluZUhh
c0xlZ2FjeUxpbmVDbGFtcCA9IGlzTGVnYWN5TGluZUNsYW1wICYmIGRpc3BsYXlMaW5lLmhhc0Vs
bGlwc2lzKCkgJiYgdHJ1bmNhdGlvblBvbGljeSA9PSBMaW5lRW5kaW5nVHJ1bmNhdGlvblBvbGlj
eTo6V2hlbkNvbnRlbnRPdmVyZmxvd3NJbkJsb2NrRGlyZWN0aW9uOwogICAgIGlmIChsaW5lSGFz
TGVnYWN5TGluZUNsYW1wKQotICAgICAgICBsYXlvdXRTdGF0ZSgpLnNldExlZ2FjeUNsYW1wZWRM
aW5lSW5kZXgobGluZUJveC5saW5lSW5kZXgoKSk7CisgICAgICAgIGlubGluZUxheW91dFN0YXRl
LnNldExlZ2FjeUNsYW1wZWRMaW5lSW5kZXgobGluZUJveC5saW5lSW5kZXgoKSk7CiAKICAgICBk
aXNwbGF5Q29udGVudC5ib3hlcy5hcHBlbmRWZWN0b3IoV1RGTW92ZShib3hlcykpOwogICAgIGRp
c3BsYXlDb250ZW50LmxpbmVzLmFwcGVuZChkaXNwbGF5TGluZSk7CkBAIC01MDQsOCArNTA1LDgg
QEAgYm9vbCBJbmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6Y3JlYXRlRGlzcGxheUNvbnRlbnRGb3JM
aW5lRnJvbUNhY2hlZENvbnRlbnQoY29uc3QKICAgICBsaW5lQ29udGVudC5saW5lR2VvbWV0cnku
bG9naWNhbFdpZHRoID0gY29uc3RyYWludHMuaG9yaXpvbnRhbCgpLmxvZ2ljYWxXaWR0aDsKICAg
ICBsaW5lQ29udGVudC5jb250ZW50R2VvbWV0cnkubG9naWNhbExlZnQgPSBJbmxpbmVGb3JtYXR0
aW5nVXRpbHM6Omhvcml6b250YWxBbGlnbm1lbnRPZmZzZXQocm9vdCgpLnN0eWxlKCksIGxpbmVD
b250ZW50LmNvbnRlbnRHZW9tZXRyeS5sb2dpY2FsV2lkdGgsIGxpbmVDb250ZW50LmxpbmVHZW9t
ZXRyeS5sb2dpY2FsV2lkdGgsIGxpbmVDb250ZW50LmhhbmdpbmdDb250ZW50LmxvZ2ljYWxXaWR0
aCwgbGluZUNvbnRlbnQucnVucywgdHJ1ZSk7CiAgICAgYXV0byBsaW5lQm94ID0gTGluZUJveEJ1
aWxkZXIgeyAqdGhpcywgbGluZUNvbnRlbnQgfS5idWlsZCh7IH0pOwotICAgIHNpemVfdCBudW1i
ZXJPZkNvbnRlbnRmdWxMaW5lcyA9IDA7Ci0gICAgY3JlYXRlRGlzcGxheUNvbnRlbnRGb3JJbmxp
bmVDb250ZW50KGxpbmVCb3gsIGxpbmVDb250ZW50LCBjb25zdHJhaW50cywgbGF5b3V0UmVzdWx0
LmRpc3BsYXlDb250ZW50LCBudW1iZXJPZkNvbnRlbnRmdWxMaW5lcyk7CisgICAgbGF5b3V0U3Rh
dGUoKS5zZXRDb250ZW50ZnVsTGluZUNvdW50KGxpbmVCb3guaGFzQ29udGVudCgpID8gMSA6IDAp
OworICAgIGNyZWF0ZURpc3BsYXlDb250ZW50Rm9ySW5saW5lQ29udGVudChsaW5lQm94LCBsaW5l
Q29udGVudCwgY29uc3RyYWludHMsIGxheW91dFJlc3VsdC5kaXNwbGF5Q29udGVudCk7CiAgICAg
cmV0dXJuIHRydWU7CiB9CiAKQEAgLTUxNCw4ICs1MTUsNyBAQCB2b2lkIElubGluZUZvcm1hdHRp
bmdDb250ZXh0OjpjcmVhdGVEaXNwbGF5Q29udGVudEZvckVtcHR5SW5saW5lQ29udGVudChjb25z
dCBDbwogICAgIGF1dG8gZW1wdHlMaW5lQnJlYWtpbmdSZXN1bHQgPSAgTGluZUxheW91dFJlc3Vs
dCB7IH07CiAgICAgZW1wdHlMaW5lQnJlYWtpbmdSZXN1bHQubGluZUdlb21ldHJ5ID0geyB7IGNv
bnN0cmFpbnRzLmhvcml6b250YWwoKS5sb2dpY2FsTGVmdCwgY29uc3RyYWludHMubG9naWNhbFRv
cCgpIH0sIHsgY29uc3RyYWludHMuaG9yaXpvbnRhbCgpLmxvZ2ljYWxXaWR0aCB9IH07CiAgICAg
YXV0byBsaW5lQm94ID0gTGluZUJveEJ1aWxkZXIgeyAqdGhpcywgZW1wdHlMaW5lQnJlYWtpbmdS
ZXN1bHQgfS5idWlsZCh7IH0pOwotICAgIHNpemVfdCBudW1iZXJPZkNvbnRlbnRmdWxMaW5lcyA9
IDA7Ci0gICAgY3JlYXRlRGlzcGxheUNvbnRlbnRGb3JJbmxpbmVDb250ZW50KGxpbmVCb3gsIGVt
cHR5TGluZUJyZWFraW5nUmVzdWx0LCBjb25zdHJhaW50cywgbGF5b3V0UmVzdWx0LmRpc3BsYXlD
b250ZW50LCBudW1iZXJPZkNvbnRlbnRmdWxMaW5lcyk7CisgICAgY3JlYXRlRGlzcGxheUNvbnRl
bnRGb3JJbmxpbmVDb250ZW50KGxpbmVCb3gsIGVtcHR5TGluZUJyZWFraW5nUmVzdWx0LCBjb25z
dHJhaW50cywgbGF5b3V0UmVzdWx0LmRpc3BsYXlDb250ZW50KTsKIH0KIAogdm9pZCBJbmxpbmVG
b3JtYXR0aW5nQ29udGV4dDo6aW5pdGlhbGl6ZUlubGluZUxheW91dFN0YXRlKGNvbnN0IExheW91
dFN0YXRlJiBnbG9iYWxMYXlvdXRTdGF0ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xh
eW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUZvcm1hdHRpbmdDb250ZXh0Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVG
b3JtYXR0aW5nQ29udGV4dC5oCmluZGV4IDYzYzEwN2YzZWRkOC4uYTNlYWQxN2I2YjMwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9J
bmxpbmVGb3JtYXR0aW5nQ29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3Jt
YXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUZvcm1hdHRpbmdDb250ZXh0LmgKQEAgLTg2LDcg
Kzg2LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGxheW91dEZsb2F0Q29udGVudE9ubHkoY29uc3Qg
Q29uc3RyYWludHNGb3JJbmxpbmVDb250ZW50Jik7CiAKICAgICB2b2lkIGNvbGxlY3RDb250ZW50
SWZOZWVkZWQoKTsKLSAgICBJbmxpbmVSZWN0IGNyZWF0ZURpc3BsYXlDb250ZW50Rm9ySW5saW5l
Q29udGVudChjb25zdCBMaW5lQm94JiwgY29uc3QgTGluZUxheW91dFJlc3VsdCYsIGNvbnN0IENv
bnN0cmFpbnRzRm9ySW5saW5lQ29udGVudCYsIElubGluZURpc3BsYXk6OkNvbnRlbnQmLCBzaXpl
X3QmIG51bWJlck9mUHJldmlvdXNMQ29udGVudGZ1bExpbmVzKTsKKyAgICBJbmxpbmVSZWN0IGNy
ZWF0ZURpc3BsYXlDb250ZW50Rm9ySW5saW5lQ29udGVudChjb25zdCBMaW5lQm94JiwgY29uc3Qg
TGluZUxheW91dFJlc3VsdCYsIGNvbnN0IENvbnN0cmFpbnRzRm9ySW5saW5lQ29udGVudCYsIElu
bGluZURpc3BsYXk6OkNvbnRlbnQmKTsKICAgICB2b2lkIHVwZGF0ZUxheW91dFN0YXRlV2l0aExp
bmVMYXlvdXRSZXN1bHQoY29uc3QgTGluZUxheW91dFJlc3VsdCYsIGNvbnN0IElubGluZVJlY3Qm
IGxpbmVMb2dpY2FsUmVjdCwgY29uc3QgRmxvYXRpbmdDb250ZXh0Jik7CiAgICAgdm9pZCB1cGRh
dGVCb3hHZW9tZXRyeUZvclBsYWNlZEZsb2F0cyhjb25zdCBMaW5lTGF5b3V0UmVzdWx0OjpQbGFj
ZWRGbG9hdExpc3QmKTsKICAgICB2b2lkIHJlc2V0Qm94R2VvbWV0cmllc0ZvckRpc2NhcmRlZENv
bnRlbnQoY29uc3QgSW5saW5lSXRlbVJhbmdlJiBkaXNjYXJkZWRSYW5nZSwgY29uc3QgTGluZUxh
eW91dFJlc3VsdDo6U3VzcGVuZGVkRmxvYXRMaXN0JiBzdXNwZW5kZWRGbG9hdHMpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5s
aW5lRm9ybWF0dGluZ1V0aWxzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5n
Q29udGV4dHMvaW5saW5lL0lubGluZUZvcm1hdHRpbmdVdGlscy5jcHAKaW5kZXggMzk0N2Y2OGQy
MzIyLi45ZDUyYWQwMmI3NDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3Jt
YXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUZvcm1hdHRpbmdVdGlscy5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lRm9ybWF0
dGluZ1V0aWxzLmNwcApAQCAtNjMwLDEzICs2MzAsMTQgQEAgc3RkOjpvcHRpb25hbDxMaW5lTGF5
b3V0UmVzdWx0OjpJbmxpbmVDb250ZW50RW5kaW5nPiBJbmxpbmVGb3JtYXR0aW5nVXRpbHM6Omlu
bGkKICAgICByZXR1cm4geyB9OwogfQogCi1ib29sIElubGluZUZvcm1hdHRpbmdVdGlsczo6c2hv
dWxkRGlzY2FyZFJlbWFpbmluZ0NvbnRlbnRJbkJsb2NrRGlyZWN0aW9uKHNpemVfdCBudW1iZXJP
ZkxpbmVzV2l0aElubGluZUNvbnRlbnQpIGNvbnN0Citib29sIElubGluZUZvcm1hdHRpbmdVdGls
czo6c2hvdWxkRGlzY2FyZFJlbWFpbmluZ0NvbnRlbnRJbkJsb2NrRGlyZWN0aW9uKCkgY29uc3QK
IHsKLSAgICBhdXRvIGxpbmVDbGFtcCA9IGZvcm1hdHRpbmdDb250ZXh0KCkubGF5b3V0U3RhdGUo
KS5wYXJlbnRCbG9ja0xheW91dFN0YXRlKCkubGluZUNsYW1wKCk7CisgICAgYXV0byYgaW5saW5l
TGF5b3V0U3RhdGUgPSBmb3JtYXR0aW5nQ29udGV4dCgpLmxheW91dFN0YXRlKCk7CisgICAgYXV0
byBsaW5lQ2xhbXAgPSBpbmxpbmVMYXlvdXRTdGF0ZS5wYXJlbnRCbG9ja0xheW91dFN0YXRlKCku
bGluZUNsYW1wKCk7CiAgICAgaWYgKCFsaW5lQ2xhbXAgfHwgIWxpbmVDbGFtcC0+c2hvdWxkRGlz
Y2FyZE92ZXJmbG93KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgQVNTRVJUKCFsaW5lQ2xh
bXAtPmlzTGVnYWN5KTsKLSAgICByZXR1cm4gbGluZUNsYW1wLT5tYXhpbXVtTGluZXMgPT0gbnVt
YmVyT2ZMaW5lc1dpdGhJbmxpbmVDb250ZW50OworICAgIHJldHVybiBsaW5lQ2xhbXAtPm1heGlt
dW1MaW5lcyA9PSBpbmxpbmVMYXlvdXRTdGF0ZS5jb250ZW50ZnVsTGluZUNvdW50KCk7CiB9CiAK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMv
aW5saW5lL0lubGluZUZvcm1hdHRpbmdVdGlscy5oIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zv
cm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lRm9ybWF0dGluZ1V0aWxzLmgKaW5kZXggMWVh
Mzc3NzU2MWRhLi5lM2U1NzgwMGU3NTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91
dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUZvcm1hdHRpbmdVdGlscy5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUZv
cm1hdHRpbmdVdGlscy5oCkBAIC03Myw3ICs3Myw3IEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyBz
dGQ6Om9wdGlvbmFsPExpbmVMYXlvdXRSZXN1bHQ6OklubGluZUNvbnRlbnRFbmRpbmc+IGlubGlu
ZUNvbnRlbnRFbmRpbmcoY29uc3QgTGluZTo6UmVzdWx0Jik7CiAKLSAgICBib29sIHNob3VsZERp
c2NhcmRSZW1haW5pbmdDb250ZW50SW5CbG9ja0RpcmVjdGlvbihzaXplX3QgbnVtYmVyT2ZMaW5l
c1dpdGhJbmxpbmVDb250ZW50KSBjb25zdDsKKyAgICBib29sIHNob3VsZERpc2NhcmRSZW1haW5p
bmdDb250ZW50SW5CbG9ja0RpcmVjdGlvbigpIGNvbnN0OwogCiBwcml2YXRlOgogICAgIElubGlu
ZUxheW91dFVuaXQgY29udGVudExlZnRBZnRlckxhc3RMaW5lKGNvbnN0IENvbnN0cmFpbnRzRm9y
SW5GbG93Q29udGVudCYsIHN0ZDo6b3B0aW9uYWw8SW5saW5lTGF5b3V0VW5pdD4gbGFzdExpbmVM
b2dpY2FsQm90dG9tLCBjb25zdCBGbG9hdGluZ0NvbnRleHQmKSBjb25zdDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUxh
eW91dFN0YXRlLmggYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lu
bGluZS9JbmxpbmVMYXlvdXRTdGF0ZS5oCmluZGV4IDJjODI5ZTI1OWI2OC4uYzMwMDMwNjFiMDE0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lu
bGluZS9JbmxpbmVMYXlvdXRTdGF0ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3Jt
YXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUxheW91dFN0YXRlLmgKQEAgLTUzLDYgKzUzLDkg
QEAgcHVibGljOgogICAgIHZvaWQgc2V0TGVnYWN5Q2xhbXBlZExpbmVJbmRleChzaXplX3QgbGlu
ZUluZGV4KSB7IG1fbGVnYWN5Q2xhbXBlZExpbmVJbmRleCA9IGxpbmVJbmRleDsgfQogICAgIHN0
ZDo6b3B0aW9uYWw8c2l6ZV90PiBsZWdhY3lDbGFtcGVkTGluZUluZGV4KCkgY29uc3QgeyByZXR1
cm4gbV9sZWdhY3lDbGFtcGVkTGluZUluZGV4OyB9CiAKKyAgICBzaXplX3QgY29udGVudGZ1bExp
bmVDb3VudCgpIGNvbnN0IHsgcmV0dXJuIG1fY29udGVudGZ1bExpbmVDb3VudDsgfQorICAgIHZv
aWQgc2V0Q29udGVudGZ1bExpbmVDb3VudChzaXplX3QgbGluZUNvdW50KSB7IG1fY29udGVudGZ1
bExpbmVDb3VudCA9IGxpbmVDb3VudDsgfQorCiAgICAgdm9pZCBzZXRIeXBoZW5hdGlvbkxpbWl0
TGluZXMoc2l6ZV90IGh5cGhlbmF0ZUxpbWl0TGluZXMpIHsgbV9oeXBoZW5hdGVMaW1pdExpbmVz
ID0gaHlwaGVuYXRlTGltaXRMaW5lczsgfQogICAgIHZvaWQgaW5jcmVtZW50U3VjY2Vzc2l2ZUh5
cGhlbmF0ZWRMaW5lQ291bnQoKSB7ICsrbV9zdWNjZXNzaXZlSHlwaGVuYXRlZExpbmVDb3VudDsg
fQogICAgIHZvaWQgcmVzZXRTdWNjZXNzaXZlSHlwaGVuYXRlZExpbmVDb3VudCgpIHsgbV9zdWNj
ZXNzaXZlSHlwaGVuYXRlZExpbmVDb3VudCA9IDA7IH0KQEAgLTgxLDYgKzg0LDcgQEAgcHJpdmF0
ZToKICAgICBzdGQ6Om9wdGlvbmFsPHNpemVfdD4gbV9sZWdhY3lDbGFtcGVkTGluZUluZGV4IHsg
fTsKICAgICBzdGQ6Om9wdGlvbmFsPHNpemVfdD4gbV9oeXBoZW5hdGVMaW1pdExpbmVzIHsgfTsK
ICAgICBzaXplX3QgbV9zdWNjZXNzaXZlSHlwaGVuYXRlZExpbmVDb3VudCB7IDAgfTsKKyAgICBz
aXplX3QgbV9jb250ZW50ZnVsTGluZUNvdW50IHsgMCB9OwogICAgIC8vIEZJWE1FOiBUaGlzIGlz
IHJlcXVpcmVkIGJ5IHRoZSBpbnRlZ2FyYXRpb24gY29kZXBhdGguCiAgICAgSGFzaE1hcDxDaGVj
a2VkUmVmPGNvbnN0IEVsZW1lbnRCb3g+LCBMYXlvdXRVbml0PiBtX25lc3RlZExpc3RNYXJrZXJP
ZmZzZXRzOwogICAgIEF2YWlsYWJsZUxpbmVXaWR0aE92ZXJyaWRlIG1fYXZhaWxhYmxlTGluZVdp
ZHRoT3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRp
b24vTGF5b3V0SW50ZWdyYXRpb25Cb3hUcmVlVXBkYXRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9s
YXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRpb25Cb3hUcmVlVXBkYXRlci5jcHAKaW5k
ZXggN2Q3OThhNzE1MWZjLi41MThhN2ZhZDRiOWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2xheW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3JhdGlvbkJveFRyZWVVcGRhdGVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRpb25C
b3hUcmVlVXBkYXRlci5jcHAKQEAgLTUwMSw3ICs1MDEsOSBAQCB2b2lkIHNob3dJbmxpbmVDb250
ZW50KFRleHRTdHJlYW0mIHN0cmVhbSwgY29uc3QgSW5saW5lQ29udGVudCYgaW5saW5lQ29udGVu
dCwgcwogICAgICAgICB9OwogICAgICAgICBhZGRTcGFjaW5nKHN0cmVhbSk7CiAgICAgICAgIGF1
dG8mIGxpbmUgPSBsaW5lc1tsaW5lSW5kZXhdOwotICAgICAgICBzdHJlYW0gPDwgImxpbmUgYXQg
KCIgPDwgbGluZS5saW5lQm94TGVmdCgpIDw8ICIsIiA8PCBsaW5lLmxpbmVCb3hUb3AoKSA8PCAi
KSBzaXplICgiIDw8IGxpbmUubGluZUJveFJpZ2h0KCkgLSBsaW5lLmxpbmVCb3hMZWZ0KCkgPDwg
IngiIDw8IGxpbmUubGluZUJveEJvdHRvbSgpIC0gbGluZS5saW5lQm94VG9wKCkgPDwgIikgYmFz
ZWxpbmUgKCIgPDwgbGluZS5iYXNlbGluZSgpIDw8ICIpIGVuY2xvc2luZyB0b3AgKCIgPDwgbGlu
ZS5lbmNsb3NpbmdDb250ZW50TG9naWNhbFRvcCgpIDw8ICIpIGJvdHRvbSAoIiA8PCBsaW5lLmVu
Y2xvc2luZ0NvbnRlbnRMb2dpY2FsQm90dG9tKCkgPDwgIikiOworICAgICAgICBzdHJlYW0gPDwg
ImxpbmUgYXQgKCIgPDwgbGluZS5saW5lQm94TGVmdCgpIDw8ICIsIiA8PCBsaW5lLmxpbmVCb3hU
b3AoKSA8PCAiKSBzaXplICgiIDw8IGxpbmUubGluZUJveFJpZ2h0KCkgLSBsaW5lLmxpbmVCb3hM
ZWZ0KCkgPDwgIngiIDw8IGxpbmUubGluZUJveEJvdHRvbSgpIC0gbGluZS5saW5lQm94VG9wKCkg
PDwgIikgYmFzZWxpbmUgKCIgPDwgbGluZS5iYXNlbGluZSgpIDw8ICIpIGVuY2xvc2luZyB0b3Ag
KCIgPDwgbGluZS5lbmNsb3NpbmdDb250ZW50TG9naWNhbFRvcCgpIDw8ICIpIGJvdHRvbSAoIiA8
PCBsaW5lLmVuY2xvc2luZ0NvbnRlbnRMb2dpY2FsQm90dG9tKCkgPDwgIikgIjsKKyAgICAgICAg
aWYgKGxpbmUuaGFzRWxsaXBzaXMoKSkKKyAgICAgICAgICAgIHN0cmVhbSA8PCAidHJ1bmNhdGVk
IHdpdGggZWxsaXBzaXMuIjsKICAgICAgICAgc3RyZWFtLm5leHRMaW5lKCk7CiAKICAgICAgICAg
YWRkU3BhY2luZyhzdHJlYW0pOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>477437</attachid>
            <date>2025-11-19 09:06:02 -0800</date>
            <delta_ts>2025-11-19 11:40:05 -0800</delta_ts>
            <desc>[fast-cq]Patch</desc>
            <filename>bug-302757-20251119090601.patch</filename>
            <type>text/plain</type>
            <size>20366</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">RnJvbSA5ZGYxNTI2MDg4MmY5YzU3YmM4M2YyOWNmZDkyZWJlZTIyYWZlMDgxIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBBbGFuIEJhcmFkbGF5IDx6YWxhbkBhcHBsZS5jb20+CkRhdGU6
IFR1ZSwgMTggTm92IDIwMjUgMTk6Mjg6MjYgLTA4MDAKU3ViamVjdDogW1BBVENIXSBbY2xlYW51
cF0gQWRkIGxpbmVDb3VudEZvckJsb2NrRGlyZWN0aW9uQ2xhbXAgdG8KIElubGluZUxheW91dFN0
YXRlIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zMDI3NTcKClJldmll
d2VkIGJ5IEFudHRpIEtvaXZpc3RvLgoKSW5zdGVhZCBvZiByZWx5aW5nIG9uIGEgbG9jYWwgc3Rh
Y2sgdmFyaWFibGUgZm9yIHRoZSBjb250ZW50ZnVsIGxpbmUgY291bnQsIHdlIHNob3VsZCB1c2Ug
SW5saW5lTGF5b3V0U3RhdGUgdG8gbWFpbnRhaW4gaXQuIEl0IGhlbHBzIHdpdGggd2UgbmVlZCB0
byBrZWVwIHRyYWNrIG9mCmxpbmVzIGNvbWluZyBmcm9tIG5lc3RlZCBibG9jayBjb250ZW50IChp
bmxpbmUtYmxvY2sgb3IgYmxvY2staW4taW5saW5lKS4KCiogU291cmNlL1dlYkNvcmUvbGF5b3V0
L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lRm9ybWF0dGluZ0NvbnRleHQuY3BwOgoo
V2ViQ29yZTo6TGF5b3V0OjpJbmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6bGF5b3V0KToKKFdlYkNv
cmU6OkxheW91dDo6SW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6OmxpbmVMYXlvdXQpOgooV2ViQ29y
ZTo6TGF5b3V0OjpJbmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6Y3JlYXRlRGlzcGxheUNvbnRlbnRG
b3JJbmxpbmVDb250ZW50KToKKFdlYkNvcmU6OkxheW91dDo6SW5saW5lRm9ybWF0dGluZ0NvbnRl
eHQ6OmNyZWF0ZURpc3BsYXlDb250ZW50Rm9yTGluZUZyb21DYWNoZWRDb250ZW50KToKKFdlYkNv
cmU6OkxheW91dDo6SW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6OmNyZWF0ZURpc3BsYXlDb250ZW50
Rm9yRW1wdHlJbmxpbmVDb250ZW50KToKKiBTb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGlu
Z0NvbnRleHRzL2lubGluZS9JbmxpbmVGb3JtYXR0aW5nQ29udGV4dC5oOgoqIFNvdXJjZS9XZWJD
b3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUZvcm1hdHRpbmdVdGls
cy5jcHA6CihXZWJDb3JlOjpMYXlvdXQ6OklubGluZUZvcm1hdHRpbmdVdGlsczo6c2hvdWxkRGlz
Y2FyZFJlbWFpbmluZ0NvbnRlbnRJbkJsb2NrRGlyZWN0aW9uIGNvbnN0KToKKiBTb3VyY2UvV2Vi
Q29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVGb3JtYXR0aW5nVXRp
bHMuaDoKKiBTb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9J
bmxpbmVMYXlvdXRTdGF0ZS5oOgooV2ViQ29yZTo6TGF5b3V0OjpJbmxpbmVMYXlvdXRTdGF0ZTo6
bGluZUNvdW50Rm9yQmxvY2tEaXJlY3Rpb25DbGFtcCBjb25zdCk6CihXZWJDb3JlOjpMYXlvdXQ6
OklubGluZUxheW91dFN0YXRlOjpzZXRMaW5lQ291bnRGb3JCbG9ja0RpcmVjdGlvbkNsYW1wKToK
KiBTb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRpb25Cb3hU
cmVlVXBkYXRlci5jcHA6CihXZWJDb3JlOjpMYXlvdXRJbnRlZ3JhdGlvbjo6c2hvd0lubGluZUNv
bnRlbnQpOgotLS0KIC4uLi9pbmxpbmUvSW5saW5lRm9ybWF0dGluZ0NvbnRleHQuY3BwICAgICAg
ICB8IDUxICsrKysrKysrKystLS0tLS0tLS0KIC4uLi9pbmxpbmUvSW5saW5lRm9ybWF0dGluZ0Nv
bnRleHQuaCAgICAgICAgICB8ICAyICstCiAuLi4vaW5saW5lL0lubGluZUZvcm1hdHRpbmdVdGls
cy5jcHAgICAgICAgICAgfCAgNyArLS0KIC4uLi9pbmxpbmUvSW5saW5lRm9ybWF0dGluZ1V0aWxz
LmggICAgICAgICAgICB8ICAyICstCiAuLi4vaW5saW5lL0lubGluZUxheW91dFN0YXRlLmggICAg
ICAgICAgICAgICAgfCAgNCArKwogLi4uL0xheW91dEludGVncmF0aW9uQm94VHJlZVVwZGF0ZXIu
Y3BwICAgICAgIHwgIDQgKy0KIDYgZmlsZXMgY2hhbmdlZCwgMzkgaW5zZXJ0aW9ucygrKSwgMzEg
ZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRp
bmdDb250ZXh0cy9pbmxpbmUvSW5saW5lRm9ybWF0dGluZ0NvbnRleHQuY3BwIGIvU291cmNlL1dl
YkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lRm9ybWF0dGluZ0Nv
bnRleHQuY3BwCmluZGV4IGJkZmU1NGVlM2MyZi4uYmZiOWQyZDVkZGExIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVGb3Jt
YXR0aW5nQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdD
b250ZXh0cy9pbmxpbmUvSW5saW5lRm9ybWF0dGluZ0NvbnRleHQuY3BwCkBAIC0xMTcsNyArMTE3
LDcgQEAgSW5saW5lTGF5b3V0UmVzdWx0IElubGluZUZvcm1hdHRpbmdDb250ZXh0OjpsYXlvdXQo
Y29uc3QgQ29uc3RyYWludHNGb3JJbmxpbmVDb24KIHsKICAgICByZWJ1aWxkSW5saW5lSXRlbUxp
c3RJZk5lZWRlZChsaW5lRGFtYWdlKTsKIAotICAgIGlmIChmb3JtYXR0aW5nVXRpbHMoKS5zaG91
bGREaXNjYXJkUmVtYWluaW5nQ29udGVudEluQmxvY2tEaXJlY3Rpb24oeyB9KSkgeworICAgIGlm
IChmb3JtYXR0aW5nVXRpbHMoKS5zaG91bGREaXNjYXJkUmVtYWluaW5nQ29udGVudEluQmxvY2tE
aXJlY3Rpb24oKSkgewogICAgICAgICAvLyBUaGlzIGlubGluZSBjb250ZW50IG1heSBiZSBjb21w
bGV0ZWx5IGNvbGxhcHNlZCAoaS5lLiBhZnRlciBjbGFtcGVkIGJsb2NrIGNvbnRhaW5lcikKICAg
ICAgICAgcmVzZXRCb3hHZW9tZXRyaWVzRm9yRGlzY2FyZGVkQ29udGVudCh7IHsgfSwgeyBpbmxp
bmVDb250ZW50Q2FjaGUoKS5pbmxpbmVJdGVtcygpLmNvbnRlbnQoKS5zaXplKCksIHsgfSB9IH0s
IHsgfSk7CiAgICAgICAgIHJldHVybiB7IH07CkBAIC0xNTksMjYgKzE1OSwyOSBAQCBJbmxpbmVM
YXlvdXRSZXN1bHQgSW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6OmxheW91dChjb25zdCBDb25zdHJh
aW50c0ZvcklubGluZUNvbgogICAgICAgICBhdXRvIGxhc3RMaW5lSW5kZXggPSBsaW5lRGFtYWdl
LT5sYXlvdXRTdGFydFBvc2l0aW9uKCktPmxpbmVJbmRleCAtIDE7CiAgICAgICAgIC8vIEZJWE1F
OiBXZSBzaG91bGQgYmUgYWJsZSB0byBleHRyYWN0IHRoZSBsYXN0IGxpbmUgaW5mb3JtYXRpb24g
YW5kIHByb3ZpZGUgaXQgdG8gbGF5b3V0IGFzICJwcmV2aW91cyBsaW5lIiAoZW5kcyBpbiBsaW5l
IGJyZWFrIGFuZCBpbmxpbmUgZGlyZWN0aW9uKS4KICAgICAgICAgcmV0dXJuIFByZXZpb3VzTGlu
ZSB7IGxhc3RMaW5lSW5kZXgsIHsgfSwgeyB9LCB7IH0sIHsgfSB9OwotICAgIH07CisgICAgfSgp
OworCisgICAgYXV0byYgaW5saW5lTGF5b3V0U3RhdGUgPSBsYXlvdXRTdGF0ZSgpOworICAgIGlu
bGluZUxheW91dFN0YXRlLnNldExpbmVDb3VudEZvckJsb2NrRGlyZWN0aW9uQ2xhbXAocHJldmlv
dXNMaW5lID8gcHJldmlvdXNMaW5lLT5saW5lSW5kZXggKyAxIDogMCk7CiAKICAgICBhdXRvIHRl
eHRXcmFwU3R5bGUgPSByb290KCkuc3R5bGUoKS50ZXh0V3JhcFN0eWxlKCk7CiAgICAgaWYgKHJv
b3QoKS5zdHlsZSgpLnRleHRXcmFwTW9kZSgpID09IFRleHRXcmFwTW9kZTo6V3JhcCAmJiAodGV4
dFdyYXBTdHlsZSA9PSBUZXh0V3JhcFN0eWxlOjpCYWxhbmNlIHx8IHRleHRXcmFwU3R5bGUgPT0g
VGV4dFdyYXBTdHlsZTo6UHJldHR5KSkgewogICAgICAgICBhdXRvIGNvbnN0cmFpbmVyID0gSW5s
aW5lQ29udGVudENvbnN0cmFpbmVyIHsgKnRoaXMsIGlubGluZUl0ZW1MaXN0LCBjb25zdHJhaW50
cy5ob3Jpem9udGFsKCkgfTsKICAgICAgICAgYXV0byBjb25zdHJhaW5lZExpbmVXaWR0aHMgPSBj
b25zdHJhaW5lci5jb21wdXRlUGFyYWdyYXBoTGV2ZWxDb25zdHJhaW50cyh0ZXh0V3JhcFN0eWxl
KTsKICAgICAgICAgaWYgKGNvbnN0cmFpbmVkTGluZVdpZHRocykKLSAgICAgICAgICAgIGxheW91
dFN0YXRlKCkuc2V0QXZhaWxhYmxlTGluZVdpZHRoT3ZlcnJpZGUoeyAqY29uc3RyYWluZWRMaW5l
V2lkdGhzIH0pOworICAgICAgICAgICAgaW5saW5lTGF5b3V0U3RhdGUuc2V0QXZhaWxhYmxlTGlu
ZVdpZHRoT3ZlcnJpZGUoeyAqY29uc3RyYWluZWRMaW5lV2lkdGhzIH0pOwogICAgIH0KIAotICAg
IGlmIChUZXh0T25seVNpbXBsZUxpbmVCdWlsZGVyOjppc0VsaWdpYmxlRm9yU2ltcGxpZmllZFRl
eHRPbmx5SW5saW5lTGF5b3V0QnlDb250ZW50KGlubGluZUl0ZW1zLCBsYXlvdXRTdGF0ZSgpLnBs
YWNlZEZsb2F0cygpKSAmJiBUZXh0T25seVNpbXBsZUxpbmVCdWlsZGVyOjppc0VsaWdpYmxlRm9y
U2ltcGxpZmllZElubGluZUxheW91dEJ5U3R5bGUocm9vdCgpKSkgeworICAgIGlmIChUZXh0T25s
eVNpbXBsZUxpbmVCdWlsZGVyOjppc0VsaWdpYmxlRm9yU2ltcGxpZmllZFRleHRPbmx5SW5saW5l
TGF5b3V0QnlDb250ZW50KGlubGluZUl0ZW1zLCBpbmxpbmVMYXlvdXRTdGF0ZS5wbGFjZWRGbG9h
dHMoKSkgJiYgVGV4dE9ubHlTaW1wbGVMaW5lQnVpbGRlcjo6aXNFbGlnaWJsZUZvclNpbXBsaWZp
ZWRJbmxpbmVMYXlvdXRCeVN0eWxlKHJvb3QoKSkpIHsKICAgICAgICAgYXV0byBzaW1wbGlmaWVk
TGluZUJ1aWxkZXIgPSBtYWtlVW5pcXVlUmVmPFRleHRPbmx5U2ltcGxlTGluZUJ1aWxkZXI+KCp0
aGlzLCByb290KCksIGNvbnN0cmFpbnRzLmhvcml6b250YWwoKSwgaW5saW5lSXRlbUxpc3QpOwot
ICAgICAgICByZXR1cm4gbGluZUxheW91dChzaW1wbGlmaWVkTGluZUJ1aWxkZXIsIGlubGluZUl0
ZW1MaXN0LCBuZWVkc0xheW91dFJhbmdlLCBwcmV2aW91c0xpbmUoKSwgY29uc3RyYWludHMsIGxp
bmVEYW1hZ2UpOworICAgICAgICByZXR1cm4gbGluZUxheW91dChzaW1wbGlmaWVkTGluZUJ1aWxk
ZXIsIGlubGluZUl0ZW1MaXN0LCBuZWVkc0xheW91dFJhbmdlLCBwcmV2aW91c0xpbmUsIGNvbnN0
cmFpbnRzLCBsaW5lRGFtYWdlKTsKICAgICB9Ci0gICAgaWYgKFJhbmdlQmFzZWRMaW5lQnVpbGRl
cjo6aXNFbGlnaWJsZUZvclJhbmdlSW5saW5lTGF5b3V0KCp0aGlzLCBuZWVkc0xheW91dFJhbmdl
LCBpbmxpbmVJdGVtcywgbGF5b3V0U3RhdGUoKS5wbGFjZWRGbG9hdHMoKSkpIHsKKyAgICBpZiAo
UmFuZ2VCYXNlZExpbmVCdWlsZGVyOjppc0VsaWdpYmxlRm9yUmFuZ2VJbmxpbmVMYXlvdXQoKnRo
aXMsIG5lZWRzTGF5b3V0UmFuZ2UsIGlubGluZUl0ZW1zLCBpbmxpbmVMYXlvdXRTdGF0ZS5wbGFj
ZWRGbG9hdHMoKSkpIHsKICAgICAgICAgYXV0byByYW5nZUJhc2VkTGluZUJ1aWxkZXIgPSBtYWtl
VW5pcXVlUmVmPFJhbmdlQmFzZWRMaW5lQnVpbGRlcj4oKnRoaXMsIGNvbnN0cmFpbnRzLmhvcml6
b250YWwoKSwgaW5saW5lSXRlbXMpOwotICAgICAgICByZXR1cm4gbGluZUxheW91dChyYW5nZUJh
c2VkTGluZUJ1aWxkZXIsIGlubGluZUl0ZW1MaXN0LCBuZWVkc0xheW91dFJhbmdlLCBwcmV2aW91
c0xpbmUoKSwgY29uc3RyYWludHMsIGxpbmVEYW1hZ2UpOworICAgICAgICByZXR1cm4gbGluZUxh
eW91dChyYW5nZUJhc2VkTGluZUJ1aWxkZXIsIGlubGluZUl0ZW1MaXN0LCBuZWVkc0xheW91dFJh
bmdlLCBwcmV2aW91c0xpbmUsIGNvbnN0cmFpbnRzLCBsaW5lRGFtYWdlKTsKICAgICB9CiAgICAg
YXV0byBsaW5lQnVpbGRlciA9IG1ha2VVbmlxdWVSZWY8TGluZUJ1aWxkZXI+KCp0aGlzLCBjb25z
dHJhaW50cy5ob3Jpem9udGFsKCksIGlubGluZUl0ZW1MaXN0LCBpbmxpbmVDb250ZW50Q2FjaGUo
KS50ZXh0U3BhY2luZ0NvbnRleHQoKSk7Ci0gICAgcmV0dXJuIGxpbmVMYXlvdXQobGluZUJ1aWxk
ZXIsIGlubGluZUl0ZW1MaXN0LCBuZWVkc0xheW91dFJhbmdlLCBwcmV2aW91c0xpbmUoKSwgY29u
c3RyYWludHMsIGxpbmVEYW1hZ2UpOworICAgIHJldHVybiBsaW5lTGF5b3V0KGxpbmVCdWlsZGVy
LCBpbmxpbmVJdGVtTGlzdCwgbmVlZHNMYXlvdXRSYW5nZSwgcHJldmlvdXNMaW5lLCBjb25zdHJh
aW50cywgbGluZURhbWFnZSk7CiB9CiAKIHN0ZDo6cGFpcjxMYXlvdXRVbml0LCBMYXlvdXRVbml0
PiBJbmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6bWluaW11bU1heGltdW1Db250ZW50U2l6ZShJbmxp
bmVEYW1hZ2UqIGxpbmVEYW1hZ2UpCkBAIC0zMDEsMTMgKzMwNCwxMiBAQCBJbmxpbmVMYXlvdXRS
ZXN1bHQgSW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6OmxpbmVMYXlvdXQoQWJzdHJhY3RMaW5lQnVp
bGRlciYgbGluZQogICAgIGlmICghbmVlZHNMYXlvdXRSYW5nZS5zdGFydCkKICAgICAgICAgbGF5
b3V0UmVzdWx0LmRpc3BsYXlDb250ZW50LmJveGVzLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoZXN0
aW1hdGVkRGlzcGxheUJveFNpemUoaW5saW5lSXRlbUxpc3Quc2l6ZSgpKSk7CiAKKyAgICBhdXRv
JiBpbmxpbmVMYXlvdXRTdGF0ZSA9IGxheW91dFN0YXRlKCk7CiAgICAgYXV0byBmbG9hdGluZ0Nv
bnRleHQgPSB0aGlzLT5mbG9hdGluZ0NvbnRleHQoKTsKICAgICBhdXRvIGxpbmVMb2dpY2FsVG9w
ID0gSW5saW5lTGF5b3V0VW5pdCB7IGNvbnN0cmFpbnRzLmxvZ2ljYWxUb3AoKSB9OwogICAgIGF1
dG8gcHJldmlvdXNMaW5lRW5kID0gc3RkOjpvcHRpb25hbDxJbmxpbmVJdGVtUG9zaXRpb24+IHsg
fTsKICAgICBhdXRvIGxlYWRpbmdJbmxpbmVJdGVtUG9zaXRpb24gPSBuZWVkc0xheW91dFJhbmdl
LnN0YXJ0OwotICAgIGF1dG8gcGFydGlhbExheW91dFN0YXJ0SW5kZXggPSBwcmV2aW91c0xpbmUg
PyBzdGQ6Om1ha2Vfb3B0aW9uYWwocHJldmlvdXNMaW5lLT5saW5lSW5kZXgpIDogc3RkOjpudWxs
b3B0OwogICAgIGF1dG8gaXNGaXJzdEZvcm1hdHRlZExpbmVDYW5kaWRhdGUgPSB0cnVlOwotICAg
IHNpemVfdCBudW1iZXJPZkNvbnRlbnRmdWxMaW5lcyA9IHBhcnRpYWxMYXlvdXRTdGFydEluZGV4
ID8gKnBhcnRpYWxMYXlvdXRTdGFydEluZGV4ICsgMSA6IDBsdTsKICAgICB3aGlsZSAodHJ1ZSkg
ewogCiAgICAgICAgIGF1dG8gbGluZUluaXRpYWxSZWN0ID0gSW5saW5lUmVjdCB7IGxpbmVMb2dp
Y2FsVG9wLCBjb25zdHJhaW50cy5ob3Jpem9udGFsKCkubG9naWNhbExlZnQsIGNvbnN0cmFpbnRz
Lmhvcml6b250YWwoKS5sb2dpY2FsV2lkdGgsIGZvcm1hdHRpbmdVdGlscygpLmluaXRpYWxMaW5l
SGVpZ2h0KCFwcmV2aW91c0xpbmUuaGFzX3ZhbHVlKCkpIH07CkBAIC0zMTYsNyArMzE4LDcgQEAg
SW5saW5lTGF5b3V0UmVzdWx0IElubGluZUZvcm1hdHRpbmdDb250ZXh0OjpsaW5lTGF5b3V0KEFi
c3RyYWN0TGluZUJ1aWxkZXImIGxpbmUKIAogICAgICAgICBhdXRvIGxpbmVMYXlvdXRSZXN1bHQg
PSBsaW5lQnVpbGRlci5sYXlvdXRJbmxpbmVDb250ZW50KGxpbmVJbnB1dCwgcHJldmlvdXNMaW5l
LCBpc0ZpcnN0Rm9ybWF0dGVkTGluZUNhbmRpZGF0ZSk7CiAgICAgICAgIGF1dG8gbGluZUJveCA9
IExpbmVCb3hCdWlsZGVyIHsgKnRoaXMsIGxpbmVMYXlvdXRSZXN1bHQgfS5idWlsZChsaW5lSW5k
ZXgpOwotICAgICAgICBhdXRvIGxpbmVMb2dpY2FsUmVjdCA9IGNyZWF0ZURpc3BsYXlDb250ZW50
Rm9ySW5saW5lQ29udGVudChsaW5lQm94LCBsaW5lTGF5b3V0UmVzdWx0LCBjb25zdHJhaW50cywg
bGF5b3V0UmVzdWx0LmRpc3BsYXlDb250ZW50LCBudW1iZXJPZkNvbnRlbnRmdWxMaW5lcyk7Cisg
ICAgICAgIGF1dG8gbGluZUxvZ2ljYWxSZWN0ID0gY3JlYXRlRGlzcGxheUNvbnRlbnRGb3JJbmxp
bmVDb250ZW50KGxpbmVCb3gsIGxpbmVMYXlvdXRSZXN1bHQsIGNvbnN0cmFpbnRzLCBsYXlvdXRS
ZXN1bHQuZGlzcGxheUNvbnRlbnQpOwogICAgICAgICB1cGRhdGVCb3hHZW9tZXRyeUZvclBsYWNl
ZEZsb2F0cyhsaW5lTGF5b3V0UmVzdWx0LmZsb2F0Q29udGVudC5wbGFjZWRGbG9hdHMpOwogICAg
ICAgICB1cGRhdGVMYXlvdXRTdGF0ZVdpdGhMaW5lTGF5b3V0UmVzdWx0KGxpbmVMYXlvdXRSZXN1
bHQsIGxpbmVMb2dpY2FsUmVjdCwgZmxvYXRpbmdDb250ZXh0KTsKIApAQCAtMzMzLDcgKzMzNSw3
IEBAIElubGluZUxheW91dFJlc3VsdCBJbmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6bGluZUxheW91
dChBYnN0cmFjdExpbmVCdWlsZGVyJiBsaW5lCiAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
fQogCi0gICAgICAgIGlmIChmb3JtYXR0aW5nVXRpbHMoKS5zaG91bGREaXNjYXJkUmVtYWluaW5n
Q29udGVudEluQmxvY2tEaXJlY3Rpb24obnVtYmVyT2ZDb250ZW50ZnVsTGluZXMpKSB7CisgICAg
ICAgIGlmIChmb3JtYXR0aW5nVXRpbHMoKS5zaG91bGREaXNjYXJkUmVtYWluaW5nQ29udGVudElu
QmxvY2tEaXJlY3Rpb24oKSkgewogICAgICAgICAgICAgcmVzZXRCb3hHZW9tZXRyaWVzRm9yRGlz
Y2FyZGVkQ29udGVudCh7IGxlYWRpbmdJbmxpbmVJdGVtUG9zaXRpb24sIG5lZWRzTGF5b3V0UmFu
Z2UuZW5kIH0sIGxpbmVMYXlvdXRSZXN1bHQuZmxvYXRDb250ZW50LnN1c3BlbmRlZEZsb2F0cyk7
CiAgICAgICAgICAgICBsYXlvdXRSZXN1bHQucmFuZ2UgPSAhaXNQYXJ0aWFsTGF5b3V0ID8gSW5s
aW5lTGF5b3V0UmVzdWx0OjpSYW5nZTo6RnVsbCA6IElubGluZUxheW91dFJlc3VsdDo6UmFuZ2U6
OkZ1bGxGcm9tRGFtYWdlOwogICAgICAgICAgICAgbGF5b3V0UmVzdWx0LmRpZERpc2NhcmRDb250
ZW50ID0gdHJ1ZTsKQEAgLTM0NSw3ICszNDcsNyBAQCBJbmxpbmVMYXlvdXRSZXN1bHQgSW5saW5l
Rm9ybWF0dGluZ0NvbnRleHQ6OmxpbmVMYXlvdXQoQWJzdHJhY3RMaW5lQnVpbGRlciYgbGluZQog
ICAgICAgICBpc0ZpcnN0Rm9ybWF0dGVkTGluZUNhbmRpZGF0ZSAmPSAhbGluZUxheW91dFJlc3Vs
dC5oYXNJbmZsb3dDb250ZW50KCk7CiAgICAgICAgIGxpbmVMb2dpY2FsVG9wID0gZm9ybWF0dGlu
Z1V0aWxzKCkubG9naWNhbFRvcEZvck5leHRMaW5lKGxpbmVMYXlvdXRSZXN1bHQsIGxpbmVMb2dp
Y2FsUmVjdCwgZmxvYXRpbmdDb250ZXh0KTsKICAgICB9Ci0gICAgSW5saW5lRGlzcGxheUxpbmVC
dWlsZGVyOjphZGRMZWdhY3lMaW5lQ2xhbXBUcmFpbGluZ0xpbmtCb3hJZkFwcGxpY2FibGUoKnRo
aXMsIGxheW91dFN0YXRlKCksIGxheW91dFJlc3VsdC5kaXNwbGF5Q29udGVudCk7CisgICAgSW5s
aW5lRGlzcGxheUxpbmVCdWlsZGVyOjphZGRMZWdhY3lMaW5lQ2xhbXBUcmFpbGluZ0xpbmtCb3hJ
ZkFwcGxpY2FibGUoKnRoaXMsIGlubGluZUxheW91dFN0YXRlLCBsYXlvdXRSZXN1bHQuZGlzcGxh
eUNvbnRlbnQpOwogICAgIHJldHVybiBsYXlvdXRSZXN1bHQ7CiB9CiAKQEAgLTQxNywyOCArNDE5
LDI5IEBAIHZvaWQgSW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6OnVwZGF0ZUJveEdlb21ldHJ5Rm9y
UGxhY2VkRmxvYXRzKGNvbnN0IExpbmVMYXlvdXRSCiAgICAgfQogfQogCi1JbmxpbmVSZWN0IElu
bGluZUZvcm1hdHRpbmdDb250ZXh0OjpjcmVhdGVEaXNwbGF5Q29udGVudEZvcklubGluZUNvbnRl
bnQoY29uc3QgTGluZUJveCYgbGluZUJveCwgY29uc3QgTGluZUxheW91dFJlc3VsdCYgbGluZUxh
eW91dFJlc3VsdCwgY29uc3QgQ29uc3RyYWludHNGb3JJbmxpbmVDb250ZW50JiBjb25zdHJhaW50
cywgSW5saW5lRGlzcGxheTo6Q29udGVudCYgZGlzcGxheUNvbnRlbnQsIHNpemVfdCYgbnVtYmVy
T2ZQcmV2aW91c0xDb250ZW50ZnVsTGluZXMpCitJbmxpbmVSZWN0IElubGluZUZvcm1hdHRpbmdD
b250ZXh0OjpjcmVhdGVEaXNwbGF5Q29udGVudEZvcklubGluZUNvbnRlbnQoY29uc3QgTGluZUJv
eCYgbGluZUJveCwgY29uc3QgTGluZUxheW91dFJlc3VsdCYgbGluZUxheW91dFJlc3VsdCwgY29u
c3QgQ29uc3RyYWludHNGb3JJbmxpbmVDb250ZW50JiBjb25zdHJhaW50cywgSW5saW5lRGlzcGxh
eTo6Q29udGVudCYgZGlzcGxheUNvbnRlbnQpCiB7Ci0gICAgYXV0byBsaW5lQ2xhbXAgPSBsYXlv
dXRTdGF0ZSgpLnBhcmVudEJsb2NrTGF5b3V0U3RhdGUoKS5saW5lQ2xhbXAoKTsKKyAgICBhdXRv
JiBpbmxpbmVMYXlvdXRTdGF0ZSA9IGxheW91dFN0YXRlKCk7CisKKyAgICBhdXRvIGxpbmVDbGFt
cCA9IGlubGluZUxheW91dFN0YXRlLnBhcmVudEJsb2NrTGF5b3V0U3RhdGUoKS5saW5lQ2xhbXAo
KTsKICAgICBhdXRvIGlzTGVnYWN5TGluZUNsYW1wID0gbGluZUNsYW1wICYmIGxpbmVDbGFtcC0+
aXNMZWdhY3k7CisgICAgYXV0byBudW1iZXJPZkxpbmVzRWxpZ2libGVGb3JMaW5lQ2xhbXAgPSBp
bmxpbmVMYXlvdXRTdGF0ZS5saW5lQ291bnRGb3JCbG9ja0RpcmVjdGlvbkNsYW1wKCkgKyAobGlu
ZUJveC5oYXNDb250ZW50KCkgPyAxIDogMCk7CiAgICAgYXV0byBudW1iZXJPZlZpc2libGVMaW5l
c0FsbG93ZWQgPSBsaW5lQ2xhbXAgPyBzdGQ6Om1ha2Vfb3B0aW9uYWwobGluZUNsYW1wLT5tYXhp
bXVtTGluZXMpIDogc3RkOjpudWxsb3B0OwogCi0gICAgYXV0byBudW1iZXJPZkxpbmVzV2l0aElu
bGluZUNvbnRlbnQgPSBudW1iZXJPZlByZXZpb3VzTENvbnRlbnRmdWxMaW5lcyArIChsaW5lTGF5
b3V0UmVzdWx0Lmhhc0lubGluZUNvbnRlbnQoKSA/IDEgOiAwKTsKLSAgICBhdXRvIGxpbmVJc0Z1
bGx5VHJ1bmNhdGVkSW5CbG9ja0RpcmVjdGlvbiA9IG51bWJlck9mTGluZXNXaXRoSW5saW5lQ29u
dGVudCA+IG51bWJlck9mVmlzaWJsZUxpbmVzQWxsb3dlZC52YWx1ZV9vcihudW1iZXJPZkxpbmVz
V2l0aElubGluZUNvbnRlbnQpOworICAgIGF1dG8gbGluZUlzRnVsbHlUcnVuY2F0ZWRJbkJsb2Nr
RGlyZWN0aW9uID0gbnVtYmVyT2ZWaXNpYmxlTGluZXNBbGxvd2VkID8gbnVtYmVyT2ZMaW5lc0Vs
aWdpYmxlRm9yTGluZUNsYW1wID4gKm51bWJlck9mVmlzaWJsZUxpbmVzQWxsb3dlZCA6IGZhbHNl
OwogICAgIGF1dG8gZGlzcGxheUxpbmUgPSBJbmxpbmVEaXNwbGF5TGluZUJ1aWxkZXIgeyAqdGhp
cywgY29uc3RyYWludHMgfS5idWlsZChsaW5lTGF5b3V0UmVzdWx0LCBsaW5lQm94LCBsaW5lSXNG
dWxseVRydW5jYXRlZEluQmxvY2tEaXJlY3Rpb24pOwogICAgIGF1dG8gYm94ZXMgPSBJbmxpbmVE
aXNwbGF5Q29udGVudEJ1aWxkZXIgeyAqdGhpcywgY29uc3RyYWludHMsIGxpbmVCb3gsIGRpc3Bs
YXlMaW5lIH0uYnVpbGQobGluZUxheW91dFJlc3VsdCk7CiAgICAgZGlzcGxheUxpbmUuc2V0Qm94
Q291bnQoYm94ZXMuc2l6ZSgpKTsKIAotICAgIC8vIE5vbi1jb250ZW50ZnVsIGxpbmVzIGFyZSBw
cm9kdWNlZCBieSBjZXJ0YWluIHRyYWlsaW5nIGNvbnRlbnQgbGlrZSA8ZGl2PmNvbnRlbnRmdWwg
bGluZTxicj48c3Bhbj48L3NwYW4+PC9kaXY+IHdoZXJlIDxzcGFuPjwvc3Bhbj4gY3JlYXRlcyBh
IGRpc3BsYXkgbGluZSB3aXRoIG5vdGhpbmcgYnV0IHRoZSByb290IGlubGluZSBib3guCi0gICAg
bnVtYmVyT2ZQcmV2aW91c0xDb250ZW50ZnVsTGluZXMgKz0gKGxpbmVCb3guaGFzQ29udGVudCgp
ID8gMSA6IDApOwotICAgIGF1dG8gdHJ1bmNhdGlvblBvbGljeSA9IElubGluZUZvcm1hdHRpbmdV
dGlsczo6bGluZUVuZGluZ1RydW5jYXRpb25Qb2xpY3kocm9vdCgpLnN0eWxlKCksIG51bWJlck9m
UHJldmlvdXNMQ29udGVudGZ1bExpbmVzLCBudW1iZXJPZlZpc2libGVMaW5lc0FsbG93ZWQsIGxp
bmVCb3guaGFzQ29udGVudCgpKTsKKyAgICBhdXRvIHRydW5jYXRpb25Qb2xpY3kgPSBJbmxpbmVG
b3JtYXR0aW5nVXRpbHM6OmxpbmVFbmRpbmdUcnVuY2F0aW9uUG9saWN5KHJvb3QoKS5zdHlsZSgp
LCBudW1iZXJPZkxpbmVzRWxpZ2libGVGb3JMaW5lQ2xhbXAsIG51bWJlck9mVmlzaWJsZUxpbmVz
QWxsb3dlZCwgbGluZUJveC5oYXNDb250ZW50KCkpOwogICAgIElubGluZURpc3BsYXlMaW5lQnVp
bGRlcjo6YXBwbHlFbGxpcHNpc0lmTmVlZGVkKHRydW5jYXRpb25Qb2xpY3ksIGRpc3BsYXlMaW5l
LCBib3hlcywgaXNMZWdhY3lMaW5lQ2xhbXApOwogICAgIGF1dG8gbGluZUhhc0xlZ2FjeUxpbmVD
bGFtcCA9IGlzTGVnYWN5TGluZUNsYW1wICYmIGRpc3BsYXlMaW5lLmhhc0VsbGlwc2lzKCkgJiYg
dHJ1bmNhdGlvblBvbGljeSA9PSBMaW5lRW5kaW5nVHJ1bmNhdGlvblBvbGljeTo6V2hlbkNvbnRl
bnRPdmVyZmxvd3NJbkJsb2NrRGlyZWN0aW9uOwogICAgIGlmIChsaW5lSGFzTGVnYWN5TGluZUNs
YW1wKQotICAgICAgICBsYXlvdXRTdGF0ZSgpLnNldExlZ2FjeUNsYW1wZWRMaW5lSW5kZXgobGlu
ZUJveC5saW5lSW5kZXgoKSk7CisgICAgICAgIGlubGluZUxheW91dFN0YXRlLnNldExlZ2FjeUNs
YW1wZWRMaW5lSW5kZXgobGluZUJveC5saW5lSW5kZXgoKSk7CiAKICAgICBkaXNwbGF5Q29udGVu
dC5ib3hlcy5hcHBlbmRWZWN0b3IoV1RGTW92ZShib3hlcykpOwogICAgIGRpc3BsYXlDb250ZW50
LmxpbmVzLmFwcGVuZChkaXNwbGF5TGluZSk7CisgICAgaW5saW5lTGF5b3V0U3RhdGUuc2V0TGlu
ZUNvdW50Rm9yQmxvY2tEaXJlY3Rpb25DbGFtcChudW1iZXJPZkxpbmVzRWxpZ2libGVGb3JMaW5l
Q2xhbXApOwogICAgIHJldHVybiBJbmxpbmVGb3JtYXR0aW5nVXRpbHM6OmZsaXBWaXN1YWxSZWN0
VG9Mb2dpY2FsRm9yV3JpdGluZ01vZGUoZGlzcGxheUNvbnRlbnQubGluZXMubGFzdCgpLmxpbmVC
b3hSZWN0KCksIHJvb3QoKS53cml0aW5nTW9kZSgpKTsKIH0KIApAQCAtNTA0LDggKzUwNyw3IEBA
IGJvb2wgSW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6OmNyZWF0ZURpc3BsYXlDb250ZW50Rm9yTGlu
ZUZyb21DYWNoZWRDb250ZW50KGNvbnN0CiAgICAgbGluZUNvbnRlbnQubGluZUdlb21ldHJ5Lmxv
Z2ljYWxXaWR0aCA9IGNvbnN0cmFpbnRzLmhvcml6b250YWwoKS5sb2dpY2FsV2lkdGg7CiAgICAg
bGluZUNvbnRlbnQuY29udGVudEdlb21ldHJ5LmxvZ2ljYWxMZWZ0ID0gSW5saW5lRm9ybWF0dGlu
Z1V0aWxzOjpob3Jpem9udGFsQWxpZ25tZW50T2Zmc2V0KHJvb3QoKS5zdHlsZSgpLCBsaW5lQ29u
dGVudC5jb250ZW50R2VvbWV0cnkubG9naWNhbFdpZHRoLCBsaW5lQ29udGVudC5saW5lR2VvbWV0
cnkubG9naWNhbFdpZHRoLCBsaW5lQ29udGVudC5oYW5naW5nQ29udGVudC5sb2dpY2FsV2lkdGgs
IGxpbmVDb250ZW50LnJ1bnMsIHRydWUpOwogICAgIGF1dG8gbGluZUJveCA9IExpbmVCb3hCdWls
ZGVyIHsgKnRoaXMsIGxpbmVDb250ZW50IH0uYnVpbGQoeyB9KTsKLSAgICBzaXplX3QgbnVtYmVy
T2ZDb250ZW50ZnVsTGluZXMgPSAwOwotICAgIGNyZWF0ZURpc3BsYXlDb250ZW50Rm9ySW5saW5l
Q29udGVudChsaW5lQm94LCBsaW5lQ29udGVudCwgY29uc3RyYWludHMsIGxheW91dFJlc3VsdC5k
aXNwbGF5Q29udGVudCwgbnVtYmVyT2ZDb250ZW50ZnVsTGluZXMpOworICAgIGNyZWF0ZURpc3Bs
YXlDb250ZW50Rm9ySW5saW5lQ29udGVudChsaW5lQm94LCBsaW5lQ29udGVudCwgY29uc3RyYWlu
dHMsIGxheW91dFJlc3VsdC5kaXNwbGF5Q29udGVudCk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAK
QEAgLTUxNCw4ICs1MTYsNyBAQCB2b2lkIElubGluZUZvcm1hdHRpbmdDb250ZXh0OjpjcmVhdGVE
aXNwbGF5Q29udGVudEZvckVtcHR5SW5saW5lQ29udGVudChjb25zdCBDbwogICAgIGF1dG8gZW1w
dHlMaW5lQnJlYWtpbmdSZXN1bHQgPSAgTGluZUxheW91dFJlc3VsdCB7IH07CiAgICAgZW1wdHlM
aW5lQnJlYWtpbmdSZXN1bHQubGluZUdlb21ldHJ5ID0geyB7IGNvbnN0cmFpbnRzLmhvcml6b250
YWwoKS5sb2dpY2FsTGVmdCwgY29uc3RyYWludHMubG9naWNhbFRvcCgpIH0sIHsgY29uc3RyYWlu
dHMuaG9yaXpvbnRhbCgpLmxvZ2ljYWxXaWR0aCB9IH07CiAgICAgYXV0byBsaW5lQm94ID0gTGlu
ZUJveEJ1aWxkZXIgeyAqdGhpcywgZW1wdHlMaW5lQnJlYWtpbmdSZXN1bHQgfS5idWlsZCh7IH0p
OwotICAgIHNpemVfdCBudW1iZXJPZkNvbnRlbnRmdWxMaW5lcyA9IDA7Ci0gICAgY3JlYXRlRGlz
cGxheUNvbnRlbnRGb3JJbmxpbmVDb250ZW50KGxpbmVCb3gsIGVtcHR5TGluZUJyZWFraW5nUmVz
dWx0LCBjb25zdHJhaW50cywgbGF5b3V0UmVzdWx0LmRpc3BsYXlDb250ZW50LCBudW1iZXJPZkNv
bnRlbnRmdWxMaW5lcyk7CisgICAgY3JlYXRlRGlzcGxheUNvbnRlbnRGb3JJbmxpbmVDb250ZW50
KGxpbmVCb3gsIGVtcHR5TGluZUJyZWFraW5nUmVzdWx0LCBjb25zdHJhaW50cywgbGF5b3V0UmVz
dWx0LmRpc3BsYXlDb250ZW50KTsKIH0KIAogdm9pZCBJbmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6
aW5pdGlhbGl6ZUlubGluZUxheW91dFN0YXRlKGNvbnN0IExheW91dFN0YXRlJiBnbG9iYWxMYXlv
dXRTdGF0ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29u
dGV4dHMvaW5saW5lL0lubGluZUZvcm1hdHRpbmdDb250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9s
YXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVGb3JtYXR0aW5nQ29udGV4dC5o
CmluZGV4IDYzYzEwN2YzZWRkOC4uYTNlYWQxN2I2YjMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVGb3JtYXR0aW5nQ29u
dGV4dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5s
aW5lL0lubGluZUZvcm1hdHRpbmdDb250ZXh0LmgKQEAgLTg2LDcgKzg2LDcgQEAgcHJpdmF0ZToK
ICAgICB2b2lkIGxheW91dEZsb2F0Q29udGVudE9ubHkoY29uc3QgQ29uc3RyYWludHNGb3JJbmxp
bmVDb250ZW50Jik7CiAKICAgICB2b2lkIGNvbGxlY3RDb250ZW50SWZOZWVkZWQoKTsKLSAgICBJ
bmxpbmVSZWN0IGNyZWF0ZURpc3BsYXlDb250ZW50Rm9ySW5saW5lQ29udGVudChjb25zdCBMaW5l
Qm94JiwgY29uc3QgTGluZUxheW91dFJlc3VsdCYsIGNvbnN0IENvbnN0cmFpbnRzRm9ySW5saW5l
Q29udGVudCYsIElubGluZURpc3BsYXk6OkNvbnRlbnQmLCBzaXplX3QmIG51bWJlck9mUHJldmlv
dXNMQ29udGVudGZ1bExpbmVzKTsKKyAgICBJbmxpbmVSZWN0IGNyZWF0ZURpc3BsYXlDb250ZW50
Rm9ySW5saW5lQ29udGVudChjb25zdCBMaW5lQm94JiwgY29uc3QgTGluZUxheW91dFJlc3VsdCYs
IGNvbnN0IENvbnN0cmFpbnRzRm9ySW5saW5lQ29udGVudCYsIElubGluZURpc3BsYXk6OkNvbnRl
bnQmKTsKICAgICB2b2lkIHVwZGF0ZUxheW91dFN0YXRlV2l0aExpbmVMYXlvdXRSZXN1bHQoY29u
c3QgTGluZUxheW91dFJlc3VsdCYsIGNvbnN0IElubGluZVJlY3QmIGxpbmVMb2dpY2FsUmVjdCwg
Y29uc3QgRmxvYXRpbmdDb250ZXh0Jik7CiAgICAgdm9pZCB1cGRhdGVCb3hHZW9tZXRyeUZvclBs
YWNlZEZsb2F0cyhjb25zdCBMaW5lTGF5b3V0UmVzdWx0OjpQbGFjZWRGbG9hdExpc3QmKTsKICAg
ICB2b2lkIHJlc2V0Qm94R2VvbWV0cmllc0ZvckRpc2NhcmRlZENvbnRlbnQoY29uc3QgSW5saW5l
SXRlbVJhbmdlJiBkaXNjYXJkZWRSYW5nZSwgY29uc3QgTGluZUxheW91dFJlc3VsdDo6U3VzcGVu
ZGVkRmxvYXRMaXN0JiBzdXNwZW5kZWRGbG9hdHMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lRm9ybWF0dGluZ1V0aWxz
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lu
bGluZUZvcm1hdHRpbmdVdGlscy5jcHAKaW5kZXggMzk0N2Y2OGQyMzIyLi5lMjc3YzFmNGQ5ZjAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5s
aW5lL0lubGluZUZvcm1hdHRpbmdVdGlscy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0
L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lRm9ybWF0dGluZ1V0aWxzLmNwcApAQCAt
NjMwLDEzICs2MzAsMTQgQEAgc3RkOjpvcHRpb25hbDxMaW5lTGF5b3V0UmVzdWx0OjpJbmxpbmVD
b250ZW50RW5kaW5nPiBJbmxpbmVGb3JtYXR0aW5nVXRpbHM6OmlubGkKICAgICByZXR1cm4geyB9
OwogfQogCi1ib29sIElubGluZUZvcm1hdHRpbmdVdGlsczo6c2hvdWxkRGlzY2FyZFJlbWFpbmlu
Z0NvbnRlbnRJbkJsb2NrRGlyZWN0aW9uKHNpemVfdCBudW1iZXJPZkxpbmVzV2l0aElubGluZUNv
bnRlbnQpIGNvbnN0Citib29sIElubGluZUZvcm1hdHRpbmdVdGlsczo6c2hvdWxkRGlzY2FyZFJl
bWFpbmluZ0NvbnRlbnRJbkJsb2NrRGlyZWN0aW9uKCkgY29uc3QKIHsKLSAgICBhdXRvIGxpbmVD
bGFtcCA9IGZvcm1hdHRpbmdDb250ZXh0KCkubGF5b3V0U3RhdGUoKS5wYXJlbnRCbG9ja0xheW91
dFN0YXRlKCkubGluZUNsYW1wKCk7CisgICAgYXV0byYgaW5saW5lTGF5b3V0U3RhdGUgPSBmb3Jt
YXR0aW5nQ29udGV4dCgpLmxheW91dFN0YXRlKCk7CisgICAgYXV0byBsaW5lQ2xhbXAgPSBpbmxp
bmVMYXlvdXRTdGF0ZS5wYXJlbnRCbG9ja0xheW91dFN0YXRlKCkubGluZUNsYW1wKCk7CiAgICAg
aWYgKCFsaW5lQ2xhbXAgfHwgIWxpbmVDbGFtcC0+c2hvdWxkRGlzY2FyZE92ZXJmbG93KQogICAg
ICAgICByZXR1cm4gZmFsc2U7CiAgICAgQVNTRVJUKCFsaW5lQ2xhbXAtPmlzTGVnYWN5KTsKLSAg
ICByZXR1cm4gbGluZUNsYW1wLT5tYXhpbXVtTGluZXMgPT0gbnVtYmVyT2ZMaW5lc1dpdGhJbmxp
bmVDb250ZW50OworICAgIHJldHVybiBsaW5lQ2xhbXAtPm1heGltdW1MaW5lcyA9PSBpbmxpbmVM
YXlvdXRTdGF0ZS5saW5lQ291bnRGb3JCbG9ja0RpcmVjdGlvbkNsYW1wKCk7CiB9CiAKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5l
L0lubGluZUZvcm1hdHRpbmdVdGlscy5oIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRp
bmdDb250ZXh0cy9pbmxpbmUvSW5saW5lRm9ybWF0dGluZ1V0aWxzLmgKaW5kZXggMWVhMzc3NzU2
MWRhLi5lM2U1NzgwMGU3NTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3Jt
YXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUZvcm1hdHRpbmdVdGlscy5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUZvcm1hdHRp
bmdVdGlscy5oCkBAIC03Myw3ICs3Myw3IEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyBzdGQ6Om9w
dGlvbmFsPExpbmVMYXlvdXRSZXN1bHQ6OklubGluZUNvbnRlbnRFbmRpbmc+IGlubGluZUNvbnRl
bnRFbmRpbmcoY29uc3QgTGluZTo6UmVzdWx0Jik7CiAKLSAgICBib29sIHNob3VsZERpc2NhcmRS
ZW1haW5pbmdDb250ZW50SW5CbG9ja0RpcmVjdGlvbihzaXplX3QgbnVtYmVyT2ZMaW5lc1dpdGhJ
bmxpbmVDb250ZW50KSBjb25zdDsKKyAgICBib29sIHNob3VsZERpc2NhcmRSZW1haW5pbmdDb250
ZW50SW5CbG9ja0RpcmVjdGlvbigpIGNvbnN0OwogCiBwcml2YXRlOgogICAgIElubGluZUxheW91
dFVuaXQgY29udGVudExlZnRBZnRlckxhc3RMaW5lKGNvbnN0IENvbnN0cmFpbnRzRm9ySW5GbG93
Q29udGVudCYsIHN0ZDo6b3B0aW9uYWw8SW5saW5lTGF5b3V0VW5pdD4gbGFzdExpbmVMb2dpY2Fs
Qm90dG9tLCBjb25zdCBGbG9hdGluZ0NvbnRleHQmKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUxheW91dFN0
YXRlLmggYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9J
bmxpbmVMYXlvdXRTdGF0ZS5oCmluZGV4IDJjODI5ZTI1OWI2OC4uZGZiZTQ0NDU5ZWFjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9J
bmxpbmVMYXlvdXRTdGF0ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5n
Q29udGV4dHMvaW5saW5lL0lubGluZUxheW91dFN0YXRlLmgKQEAgLTUzLDYgKzUzLDkgQEAgcHVi
bGljOgogICAgIHZvaWQgc2V0TGVnYWN5Q2xhbXBlZExpbmVJbmRleChzaXplX3QgbGluZUluZGV4
KSB7IG1fbGVnYWN5Q2xhbXBlZExpbmVJbmRleCA9IGxpbmVJbmRleDsgfQogICAgIHN0ZDo6b3B0
aW9uYWw8c2l6ZV90PiBsZWdhY3lDbGFtcGVkTGluZUluZGV4KCkgY29uc3QgeyByZXR1cm4gbV9s
ZWdhY3lDbGFtcGVkTGluZUluZGV4OyB9CiAKKyAgICBzaXplX3QgbGluZUNvdW50Rm9yQmxvY2tE
aXJlY3Rpb25DbGFtcCgpIGNvbnN0IHsgcmV0dXJuIG1fbGluZUNvdW50Rm9yQmxvY2tEaXJlY3Rp
b25DbGFtcDsgfQorICAgIHZvaWQgc2V0TGluZUNvdW50Rm9yQmxvY2tEaXJlY3Rpb25DbGFtcChz
aXplX3QgbGluZUNvdW50KSB7IG1fbGluZUNvdW50Rm9yQmxvY2tEaXJlY3Rpb25DbGFtcCA9IGxp
bmVDb3VudDsgfQorCiAgICAgdm9pZCBzZXRIeXBoZW5hdGlvbkxpbWl0TGluZXMoc2l6ZV90IGh5
cGhlbmF0ZUxpbWl0TGluZXMpIHsgbV9oeXBoZW5hdGVMaW1pdExpbmVzID0gaHlwaGVuYXRlTGlt
aXRMaW5lczsgfQogICAgIHZvaWQgaW5jcmVtZW50U3VjY2Vzc2l2ZUh5cGhlbmF0ZWRMaW5lQ291
bnQoKSB7ICsrbV9zdWNjZXNzaXZlSHlwaGVuYXRlZExpbmVDb3VudDsgfQogICAgIHZvaWQgcmVz
ZXRTdWNjZXNzaXZlSHlwaGVuYXRlZExpbmVDb3VudCgpIHsgbV9zdWNjZXNzaXZlSHlwaGVuYXRl
ZExpbmVDb3VudCA9IDA7IH0KQEAgLTgxLDYgKzg0LDcgQEAgcHJpdmF0ZToKICAgICBzdGQ6Om9w
dGlvbmFsPHNpemVfdD4gbV9sZWdhY3lDbGFtcGVkTGluZUluZGV4IHsgfTsKICAgICBzdGQ6Om9w
dGlvbmFsPHNpemVfdD4gbV9oeXBoZW5hdGVMaW1pdExpbmVzIHsgfTsKICAgICBzaXplX3QgbV9z
dWNjZXNzaXZlSHlwaGVuYXRlZExpbmVDb3VudCB7IDAgfTsKKyAgICBzaXplX3QgbV9saW5lQ291
bnRGb3JCbG9ja0RpcmVjdGlvbkNsYW1wIHsgMCB9OwogICAgIC8vIEZJWE1FOiBUaGlzIGlzIHJl
cXVpcmVkIGJ5IHRoZSBpbnRlZ2FyYXRpb24gY29kZXBhdGguCiAgICAgSGFzaE1hcDxDaGVja2Vk
UmVmPGNvbnN0IEVsZW1lbnRCb3g+LCBMYXlvdXRVbml0PiBtX25lc3RlZExpc3RNYXJrZXJPZmZz
ZXRzOwogICAgIEF2YWlsYWJsZUxpbmVXaWR0aE92ZXJyaWRlIG1fYXZhaWxhYmxlTGluZVdpZHRo
T3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24v
TGF5b3V0SW50ZWdyYXRpb25Cb3hUcmVlVXBkYXRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlv
dXQvaW50ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRpb25Cb3hUcmVlVXBkYXRlci5jcHAKaW5kZXgg
N2Q3OThhNzE1MWZjLi41MThhN2ZhZDRiOWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xh
eW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3JhdGlvbkJveFRyZWVVcGRhdGVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRpb25Cb3hU
cmVlVXBkYXRlci5jcHAKQEAgLTUwMSw3ICs1MDEsOSBAQCB2b2lkIHNob3dJbmxpbmVDb250ZW50
KFRleHRTdHJlYW0mIHN0cmVhbSwgY29uc3QgSW5saW5lQ29udGVudCYgaW5saW5lQ29udGVudCwg
cwogICAgICAgICB9OwogICAgICAgICBhZGRTcGFjaW5nKHN0cmVhbSk7CiAgICAgICAgIGF1dG8m
IGxpbmUgPSBsaW5lc1tsaW5lSW5kZXhdOwotICAgICAgICBzdHJlYW0gPDwgImxpbmUgYXQgKCIg
PDwgbGluZS5saW5lQm94TGVmdCgpIDw8ICIsIiA8PCBsaW5lLmxpbmVCb3hUb3AoKSA8PCAiKSBz
aXplICgiIDw8IGxpbmUubGluZUJveFJpZ2h0KCkgLSBsaW5lLmxpbmVCb3hMZWZ0KCkgPDwgIngi
IDw8IGxpbmUubGluZUJveEJvdHRvbSgpIC0gbGluZS5saW5lQm94VG9wKCkgPDwgIikgYmFzZWxp
bmUgKCIgPDwgbGluZS5iYXNlbGluZSgpIDw8ICIpIGVuY2xvc2luZyB0b3AgKCIgPDwgbGluZS5l
bmNsb3NpbmdDb250ZW50TG9naWNhbFRvcCgpIDw8ICIpIGJvdHRvbSAoIiA8PCBsaW5lLmVuY2xv
c2luZ0NvbnRlbnRMb2dpY2FsQm90dG9tKCkgPDwgIikiOworICAgICAgICBzdHJlYW0gPDwgImxp
bmUgYXQgKCIgPDwgbGluZS5saW5lQm94TGVmdCgpIDw8ICIsIiA8PCBsaW5lLmxpbmVCb3hUb3Ao
KSA8PCAiKSBzaXplICgiIDw8IGxpbmUubGluZUJveFJpZ2h0KCkgLSBsaW5lLmxpbmVCb3hMZWZ0
KCkgPDwgIngiIDw8IGxpbmUubGluZUJveEJvdHRvbSgpIC0gbGluZS5saW5lQm94VG9wKCkgPDwg
IikgYmFzZWxpbmUgKCIgPDwgbGluZS5iYXNlbGluZSgpIDw8ICIpIGVuY2xvc2luZyB0b3AgKCIg
PDwgbGluZS5lbmNsb3NpbmdDb250ZW50TG9naWNhbFRvcCgpIDw8ICIpIGJvdHRvbSAoIiA8PCBs
aW5lLmVuY2xvc2luZ0NvbnRlbnRMb2dpY2FsQm90dG9tKCkgPDwgIikgIjsKKyAgICAgICAgaWYg
KGxpbmUuaGFzRWxsaXBzaXMoKSkKKyAgICAgICAgICAgIHN0cmVhbSA8PCAidHJ1bmNhdGVkIHdp
dGggZWxsaXBzaXMuIjsKICAgICAgICAgc3RyZWFtLm5leHRMaW5lKCk7CiAKICAgICAgICAgYWRk
U3BhY2luZyhzdHJlYW0pOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>