<?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>231233</bug_id>
          
          <creation_ts>2021-10-05 07:50:10 -0700</creation_ts>
          <short_desc>[LFC][Integration] Introduce InlineBoxIterator</short_desc>
          <delta_ts>2021-10-05 09:48:27 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Layout and Rendering</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Antti Koivisto">koivisto</reporter>
          <assigned_to name="Antti Koivisto">koivisto</assigned_to>
          <cc>bfulgham</cc>
    
    <cc>changseok</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>glenn</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>pdr</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>zalan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1800557</commentid>
    <comment_count>0</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2021-10-05 07:50:10 -0700</bug_when>
    <thetext>For iterating inline boxes (really).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1800559</commentid>
    <comment_count>1</comment_count>
      <attachid>440214</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2021-10-05 07:55:43 -0700</bug_when>
    <thetext>Created attachment 440214
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1800560</commentid>
    <comment_count>2</comment_count>
      <attachid>440214</attachid>
    <who name="alan">zalan</who>
    <bug_when>2021-10-05 07:56:40 -0700</bug_when>
    <thetext>Comment on attachment 440214
Patch

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

&gt; Source/WebCore/ChangeLog:8
&gt; +        And use it in InlineBoxPainter.

yay</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1800565</commentid>
    <comment_count>3</comment_count>
      <attachid>440216</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2021-10-05 08:22:25 -0700</bug_when>
    <thetext>Created attachment 440216
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1800595</commentid>
    <comment_count>4</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-10-05 09:47:07 -0700</bug_when>
    <thetext>Committed r283554 (242519@main): &lt;https://commits.webkit.org/242519@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 440216.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1800598</commentid>
    <comment_count>5</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-10-05 09:48:27 -0700</bug_when>
    <thetext>&lt;rdar://problem/83890749&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>440214</attachid>
            <date>2021-10-05 07:55:43 -0700</date>
            <delta_ts>2021-10-05 08:22:19 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-231233-20211005175542.patch</filename>
            <type>text/plain</type>
            <size>40510</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgzNTQ4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNGVlZDVlYWMxYjQxMjE2
ODAzYmUyMjhhNjY1MGRiMjAwMGVhNjIwMC4uM2JiZWM4ODM2YmI1ZWQ2NjVhMmMyMTMxNzE4YzQ0
MTA5ZDNlNGI3YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU3IEBACisyMDIxLTEwLTA1ICBBbnR0
aSBLb2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KKworICAgICAgICBbTEZDXVtJbnRlZ3JhdGlv
bl0gSW50cm9kdWNlIElubGluZUJveEl0ZXJhdG9yCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzEyMzMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBBbmQgdXNlIGl0IGluIElubGluZUJveFBhaW50ZXIuCisK
KyAgICAgICAgVGhlIGFkb3B0aW9uIGlzIHN0aWxsIGluY29tcGxldGUgaGVyZSBzbyBvbmx5IHRo
ZSBsZWdhY3kgcGF0aCBpcyBjb3ZlcmVkLgorCisgICAgICAgICogU291cmNlcy50eHQ6CisgICAg
ICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGxheW91
dC9pbnRlZ3JhdGlvbi9JbmxpbmVJdGVyYXRvckJveC5oOgorICAgICAgICAoV2ViQ29yZTo6SW5s
aW5lSXRlcmF0b3I6OkJveDo6aXNJbmxpbmVCb3ggY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
SW5saW5lSXRlcmF0b3I6OkJveDo6aXNSb290SW5saW5lQm94IGNvbnN0KToKKyAgICAgICAgKiBs
YXlvdXQvaW50ZWdyYXRpb24vSW5saW5lSXRlcmF0b3JCb3hMZWdhY3lQYXRoLmg6CisgICAgICAg
IChXZWJDb3JlOjpJbmxpbmVJdGVyYXRvcjo6Qm94TGVnYWN5UGF0aDo6aXNJbmxpbmVCb3ggY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lSXRlcmF0b3I6OkJveExlZ2FjeVBhdGg6Omlz
Um9vdElubGluZUJveCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVJdGVyYXRvcjo6
Qm94TGVnYWN5UGF0aDo6dHJhdmVyc2VOZXh0SW5saW5lQm94KToKKyAgICAgICAgKFdlYkNvcmU6
OklubGluZUl0ZXJhdG9yOjpCb3hMZWdhY3lQYXRoOjp0cmF2ZXJzZVByZXZpb3VzSW5saW5lQm94
KToKKyAgICAgICAgKFdlYkNvcmU6OklubGluZUl0ZXJhdG9yOjpCb3hMZWdhY3lQYXRoOjppbmxp
bmVGbG93Qm94IGNvbnN0KToKKyAgICAgICAgKiBsYXlvdXQvaW50ZWdyYXRpb24vSW5saW5lSXRl
cmF0b3JCb3hNb2Rlcm5QYXRoLmg6CisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVJdGVyYXRvcjo6
Qm94TW9kZXJuUGF0aDo6aXNJbmxpbmVCb3ggY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6SW5s
aW5lSXRlcmF0b3I6OkJveE1vZGVyblBhdGg6OmlzUm9vdElubGluZUJveCBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpJbmxpbmVJdGVyYXRvcjo6Qm94TW9kZXJuUGF0aDo6dHJhdmVyc2VOZXh0
SW5saW5lQm94KToKKyAgICAgICAgKFdlYkNvcmU6OklubGluZUl0ZXJhdG9yOjpCb3hNb2Rlcm5Q
YXRoOjp0cmF2ZXJzZVByZXZpb3VzSW5saW5lQm94KToKKyAgICAgICAgKiBsYXlvdXQvaW50ZWdy
YXRpb24vSW5saW5lSXRlcmF0b3JJbmxpbmVCb3guY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OklubGluZUl0ZXJhdG9yOjpJbmxpbmVCb3g6OklubGluZUJveCk6CisgICAgICAgIChXZWJD
b3JlOjpJbmxpbmVJdGVyYXRvcjo6SW5saW5lQm94OjpuZXh0SW5saW5lQm94IGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OklubGluZUl0ZXJhdG9yOjpJbmxpbmVCb3g6OnByZXZpb3VzSW5saW5l
Qm94IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OklubGluZUl0ZXJhdG9yOjpJbmxpbmVCb3hJ
dGVyYXRvcjo6SW5saW5lQm94SXRlcmF0b3IpOgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lSXRl
cmF0b3I6OklubGluZUJveEl0ZXJhdG9yOjp0cmF2ZXJzZU5leHRJbmxpbmVCb3gpOgorICAgICAg
ICAoV2ViQ29yZTo6SW5saW5lSXRlcmF0b3I6OklubGluZUJveEl0ZXJhdG9yOjp0cmF2ZXJzZVBy
ZXZpb3VzSW5saW5lQm94KToKKyAgICAgICAgKFdlYkNvcmU6OklubGluZUl0ZXJhdG9yOjppbmxp
bmVCb3hGb3IpOgorICAgICAgICAqIGxheW91dC9pbnRlZ3JhdGlvbi9JbmxpbmVJdGVyYXRvcklu
bGluZUJveC5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OklubGluZUl0ZXJhdG9yOjpJbmxp
bmVCb3g6OnJlbmRlcmVyIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OklubGluZUl0ZXJhdG9y
OjpJbmxpbmVCb3g6OmxlZ2FjeUlubGluZUJveCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpJ
bmxpbmVJdGVyYXRvcjo6SW5saW5lQm94SXRlcmF0b3I6OklubGluZUJveEl0ZXJhdG9yKToKKyAg
ICAgICAgKFdlYkNvcmU6OklubGluZUl0ZXJhdG9yOjpJbmxpbmVCb3hJdGVyYXRvcjo6b3BlcmF0
b3IqIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OklubGluZUl0ZXJhdG9yOjpJbmxpbmVCb3hJ
dGVyYXRvcjo6b3BlcmF0b3ItPiBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVJdGVy
YXRvcjo6SW5saW5lQm94SXRlcmF0b3I6OmdldCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpJ
bmxpbmVJdGVyYXRvcjo6SW5saW5lQm94OjppdGVyYXRvciBjb25zdCk6CisgICAgICAgIChpc1R5
cGUpOgorICAgICAgICAqIHJlbmRlcmluZy9JbmxpbmVCb3hQYWludGVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OklubGluZUJveFBhaW50ZXI6OklubGluZUJveFBhaW50ZXIpOgorICAgICAgICAo
V2ViQ29yZTo6Y2xpcFJlY3RGb3JOaW5lUGllY2VJbWFnZVN0cmlwKToKKyAgICAgICAgKFdlYkNv
cmU6OklubGluZUJveFBhaW50ZXI6OnBhaW50TWFzayk6CisgICAgICAgIChXZWJDb3JlOjpJbmxp
bmVCb3hQYWludGVyOjpwYWludERlY29yYXRpb25zKToKKyAgICAgICAgKFdlYkNvcmU6OklubGlu
ZUJveFBhaW50ZXI6OnBhaW50RmlsbExheWVyKToKKyAgICAgICAgKFdlYkNvcmU6OklubGluZUJv
eFBhaW50ZXI6OnBhaW50Qm94U2hhZG93KToKKyAgICAgICAgKFdlYkNvcmU6OklubGluZUJveFBh
aW50ZXI6OmNvbnN0cmFpblRvTGluZVRvcEFuZEJvdHRvbUlmTmVlZGVkIGNvbnN0KToKKyAgICAg
ICAgKiByZW5kZXJpbmcvSW5saW5lQm94UGFpbnRlci5oOgorCiAyMDIxLTEwLTA1ICBDaHJpcyBM
b3JkICA8Y2xvcmRAaWdhbGlhLmNvbT4KIAogICAgICAgICBbR1RLXVtXUEVdIFJFR1JFU1NJT046
IEFzeW5jIHNjcm9sbGluZyBqdW1wcyB0byB0aGUgdG9wIG9mIHRoZSBwYWdlIHVudGlsIGtleWJv
YXJkLWluaXRpYXRlZCBwYWdpbmcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMu
dHh0IGIvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKaW5kZXggNmI2ZDk0MjFiNzFlNDQyNjhj
YjYwMDc4OTUwYzEwNTU1YTYyZDVmYS4uMWVmZjZhZWIzOWJhMDJhNzM1ZjIxNGMzNGZkNzBjMTAz
M2U5M2YxMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKKysrIGIvU291
cmNlL1dlYkNvcmUvU291cmNlcy50eHQKQEAgLTE1MTEsNiArMTUxMSw3IEBAIGxheW91dC9mb3Jt
YXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZVRleHRJdGVtLmNwcAogbGF5b3V0L2Zvcm1hdHRp
bmdDb250ZXh0cy9pbmxpbmUvaW52YWxpZGF0aW9uL0lubGluZUludmFsaWRhdGlvbi5jcHAKIGxh
eW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL3RleHQvVGV4dFV0aWwuY3BwCiBsYXlvdXQv
aW50ZWdyYXRpb24vSW5saW5lSXRlcmF0b3JCb3guY3BwCitsYXlvdXQvaW50ZWdyYXRpb24vSW5s
aW5lSXRlcmF0b3JJbmxpbmVCb3guY3BwCiBsYXlvdXQvaW50ZWdyYXRpb24vSW5saW5lSXRlcmF0
b3JMaW5lLmNwcAogbGF5b3V0L2ludGVncmF0aW9uL0lubGluZUl0ZXJhdG9yVGV4dEJveC5jcHAK
IGxheW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3JhdGlvbkJveFRyZWUuY3BwCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggZWFk
MDA1MDA5NTUyNDFmZDg3YmQzOGNkNjM0MjFlMDI1OGY5NmE5ZS4uNjE0YzNkNzBjMmNiMTNkZmMx
YzIwY2IyNjA4NTI2NzBmNGVkN2U1YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtNTIxMCw2ICs1MjEwLDcgQEAKIAkJRTQwMUUw
QTQxQzNDMEI4MzAwRjM0RDEwIC8qIFN0eWxlQ2hhbmdlLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFNDAxRTBBMzFDM0MwQjgzMDBGMzREMTAgLyogU3R5
bGVDaGFuZ2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQlFNDAzQjdBMjI1MUIxMTkzMDAxOUU4MDAgLyogTGF5b3V0SW50ZWdyYXRpb25Db3ZlcmFn
ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTQwM0I3
QTEyNTFCMTE5MzAwMTlFODAwIC8qIExheW91dEludGVncmF0aW9uQ292ZXJhZ2UuaCAqLzsgfTsK
IAkJRTQwM0I3QTMyNTFCMTFDMTAwMTlFODAwIC8qIExheW91dEludGVncmF0aW9uUGFnaW5hdGlv
bi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTQzMTJB
QjcyNEIzMjY1NjAwNjc4MzQ5IC8qIExheW91dEludGVncmF0aW9uUGFnaW5hdGlvbi5oICovOyB9
OworCQlFNDE1RUIxMzI3MEMzNTEzMDBFOERBMUIgLyogSW5saW5lSXRlcmF0b3JJbmxpbmVCb3gu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU0MTVFQjEx
MjcwQzM1MTIwMEU4REExQiAvKiBJbmxpbmVJdGVyYXRvcklubGluZUJveC5oICovOyB9OwogCQlF
NDE4MDI1NTIzRDQ1NDlCMDBGRkIwNzEgLyogTGF5b3V0SW50ZWdyYXRpb25Cb3hUcmVlLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFNDE4MDI1MzIzRDQ1
NDlBMDBGRkIwNzEgLyogTGF5b3V0SW50ZWdyYXRpb25Cb3hUcmVlLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRTQxOTA0MUYxQ0M2NDg2QjAwQzM1
RjVEIC8qIEZvbnRTZWxlY3RvckNsaWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gRTQxOTA0MUUxQ0M2NDg2QjAwQzM1RjVEIC8qIEZvbnRTZWxlY3Rv
ckNsaWVudC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCUU0MjA1MDE3MjE0MTkwMUIwMDY2RUYzQiAvKiBQcm9jZXNzV2FybWluZy5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTQyMDUwMTQyMTQxOTAxQTAw
NjZFRjNCIC8qIFByb2Nlc3NXYXJtaW5nLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTUyNzEsOCArNTI3Miw4IEBACiAJCUU0N0MzOTMyMUZFNkUx
MDUwMEJCQkM2QiAvKiBSZW5kZXJUcmVlQnVpbGRlckxpc3QuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU0N0MzOTI4MUZFNkUwREQwMEJCQkM2QiAvKiBS
ZW5kZXJUcmVlQnVpbGRlckxpc3QuaCAqLzsgfTsKIAkJRTQ3QzM5MzMxRkU2RTEwODAwQkJCQzZC
IC8qIFJlbmRlclRyZWVCdWlsZGVyTXVsdGlDb2x1bW4uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU0N0MzOTI3MUZFNkUwREMwMEJCQkM2QiAvKiBSZW5k
ZXJUcmVlQnVpbGRlck11bHRpQ29sdW1uLmggKi87IH07CiAJCUU0N0NFQkM5MjcwNkVGNTIwMEI4
RDhGNSAvKiBJbmxpbmVXYWxrZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEU0N0NFQkM3MjcwNkVGNTEwMEI4RDhGNSAvKiBJbmxpbmVXYWxrZXIuaCAq
LzsgfTsKLQkJRTQ3Q0VCRUEyNzA5REZEMTAwQjhEOEY1IC8qIFJ1bGVTZXRCdWlsZGVyLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFNDdDRUJFODI3MDlE
RkQwMDBCOEQ4RjUgLyogUnVsZVNldEJ1aWxkZXIuaCAqLzsgfTsKIAkJRTQ3Q0VCRTEyNzA5OTE2
RDAwQjhEOEY1IC8qIElubGluZUl0ZXJhdG9yVGV4dEJveC5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTQ3Q0VCRTAyNzA5OTE2RDAwQjhEOEY1IC8qIElu
bGluZUl0ZXJhdG9yVGV4dEJveC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CisJCUU0N0NFQkVBMjcwOURGRDEwMEI4RDhGNSAvKiBSdWxlU2V0QnVpbGRl
ci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTQ3Q0VC
RTgyNzA5REZEMDAwQjhEOEY1IC8qIFJ1bGVTZXRCdWlsZGVyLmggKi87IH07CiAJCUU0N0UyNzY1
MTYwMzZFRDIwMEVFMkFGQiAvKiBFeHRlbnNpb25TdHlsZVNoZWV0cy5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTQ3RTI3NjQxNjAzNkVEMjAwRUUyQUZC
IC8qIEV4dGVuc2lvblN0eWxlU2hlZXRzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKIAkJRTQ3RkM4QTMyNUI4NEQ3MjAwNTQ5NUZDIC8qIExvYWRTY2hl
ZHVsaW5nTW9kZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gRTQ3RkM4QTEyNUI4NEQ3MTAwNTQ5NUZDIC8qIExvYWRTY2hlZHVsaW5nTW9kZS5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUU0ODEzN0I5MURC
M0I1MjYwMDVDNTlCRiAvKiBTdHlsZVZhbGlkaXR5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFNDgxMzdCODFEQjNCNTI2MDA1QzU5QkYgLyogU3R5bGVW
YWxpZGl0eS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CkBAIC0xNjQyNiw2ICsxNjQyNyw4IEBACiAJCUU0MDNCNzlGMjUxQjExOEIwMDE5RTgwMCAvKiBM
YXlvdXRJbnRlZ3JhdGlvbkNvdmVyYWdlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IExheW91dElu
dGVncmF0aW9uQ292ZXJhZ2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFNDAz
QjdBMTI1MUIxMTkzMDAxOUU4MDAgLyogTGF5b3V0SW50ZWdyYXRpb25Db3ZlcmFnZS5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBMYXlvdXRJbnRlZ3JhdGlvbkNvdmVyYWdlLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUU0MDZGM0ZCMTE5ODMwN0QwMDlENTlENiAv
KiBDb2xvckRhdGEuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gQ29s
b3JEYXRhLmNwcDsgcGF0aCA9IERlcml2ZWRTb3VyY2VzL1dlYkNvcmUvQ29sb3JEYXRhLmNwcDsg
c291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKKwkJRTQxNUVCMTEyNzBDMzUxMjAw
RThEQTFCIC8qIElubGluZUl0ZXJhdG9ySW5saW5lQm94LmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IElubGluZUl0ZXJhdG9ySW5saW5lQm94Lmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCUU0MTVFQjE0MjcwQzM1MzcwMEU4REExQiAvKiBJbmxpbmVJdGVyYXRvcklu
bGluZUJveC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbmxpbmVJdGVyYXRvcklubGluZUJveC5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUU0MTgwMjUzMjNENDU0OUEwMEZGQjA3
MSAvKiBMYXlvdXRJbnRlZ3JhdGlvbkJveFRyZWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gTGF5b3V0SW50ZWdyYXRpb25Cb3hUcmVlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUU0MTgwMjU2MjNENDU0QjUwMEZGQjA3MSAvKiBMYXlvdXRJbnRlZ3JhdGlvbkJv
eFRyZWUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTGF5b3V0SW50ZWdyYXRpb25Cb3hUcmVlLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTQxOTA0MUUxQ0M2NDg2QjAwQzM1RjVE
IC8qIEZvbnRTZWxlY3RvckNsaWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBGb250U2VsZWN0b3JDbGllbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE2
NTM0LDEwICsxNjUzNywxMCBAQAogCQlFNDdDMzkyQjFGRTZFMERGMDBCQkJDNkIgLyogUmVuZGVy
VHJlZUJ1aWxkZXJMaXN0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IFJlbmRlclRyZWVCdWlsZGVyTGlzdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUU0N0MzOTJDMUZFNkUwREYwMEJCQkM2QiAvKiBSZW5kZXJUcmVlVXBkYXRlci5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW5kZXJUcmVlVXBkYXRlci5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlFNDdDRUJDNzI3MDZFRjUxMDBCOEQ4RjUgLyogSW5saW5lV2Fs
a2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IElubGluZVdhbGtlci5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlFNDdDRUJFODI3MDlERkQwMDBCOEQ4RjUgLyog
UnVsZVNldEJ1aWxkZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUnVsZVNl
dEJ1aWxkZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRTQ3Q0VCRUIyNzA5REZE
QzAwQjhEOEY1IC8qIFJ1bGVTZXRCdWlsZGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJ1bGVT
ZXRCdWlsZGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTQ3Q0VCREUyNzA5
OTE2NDAwQjhEOEY1IC8qIElubGluZUl0ZXJhdG9yVGV4dEJveC5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBJbmxpbmVJdGVyYXRvclRleHRCb3guY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlFNDdDRUJFMDI3MDk5MTZEMDBCOEQ4RjUgLyogSW5saW5lSXRlcmF0b3JUZXh0Qm94Lmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IElubGluZUl0ZXJhdG9yVGV4dEJveC5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFNDdDRUJFODI3MDlERkQwMDBCOEQ4RjUg
LyogUnVsZVNldEJ1aWxkZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUnVs
ZVNldEJ1aWxkZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTQ3Q0VCRUIyNzA5
REZEQzAwQjhEOEY1IC8qIFJ1bGVTZXRCdWlsZGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJ1
bGVTZXRCdWlsZGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTQ3RTI3NjQx
NjAzNkVEMjAwRUUyQUZCIC8qIEV4dGVuc2lvblN0eWxlU2hlZXRzLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEV4dGVuc2lvblN0eWxlU2hlZXRzLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUU0N0UyNzY3MTYwMzZFREMwMEVFMkFGQiAvKiBFeHRlbnNpb25TdHls
ZVNoZWV0cy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBFeHRlbnNp
b25TdHlsZVNoZWV0cy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUU0N0ZDOEEx
MjVCODRENzEwMDU0OTVGQyAvKiBMb2FkU2NoZWR1bGluZ01vZGUuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gTG9hZFNjaGVkdWxpbmdNb2RlLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CkBAIC0yOTUwNiw2ICsyOTUwOSw4IEBACiAJCQkJRTRBNjY0QzYyNTIxQjc3ODAw
NzA4MURDIC8qIElubGluZUl0ZXJhdG9yQm94LmggKi8sCiAJCQkJRTRBNjY0QzUyNTIxQjc3ODAw
NzA4MURDIC8qIElubGluZUl0ZXJhdG9yQm94TGVnYWN5UGF0aC5oICovLAogCQkJCUU0QTY2NEM0
MjUyMUI3NzcwMDcwODFEQyAvKiBJbmxpbmVJdGVyYXRvckJveE1vZGVyblBhdGguaCAqLywKKwkJ
CQlFNDE1RUIxNDI3MEMzNTM3MDBFOERBMUIgLyogSW5saW5lSXRlcmF0b3JJbmxpbmVCb3guY3Bw
ICovLAorCQkJCUU0MTVFQjExMjcwQzM1MTIwMEU4REExQiAvKiBJbmxpbmVJdGVyYXRvcklubGlu
ZUJveC5oICovLAogCQkJCUU0RDMzRjQyMjUyQzUwQTgwMDgzN0QwNSAvKiBJbmxpbmVJdGVyYXRv
ckxpbmUuY3BwICovLAogCQkJCUU0RDMzRjNGMjUyQzRCODIwMDgzN0QwNSAvKiBJbmxpbmVJdGVy
YXRvckxpbmUuaCAqLywKIAkJCQlFNEQzM0Y0MzI1MkM1MEUyMDA4MzdEMDUgLyogSW5saW5lSXRl
cmF0b3JMaW5lTGVnYWN5UGF0aC5oICovLApAQCAtMzMwMjgsNiArMzMwMzMsNyBAQAogCQkJCUU0
QTY2NENDMjUyMUQ0QUYwMDcwODFEQyAvKiBJbmxpbmVJdGVyYXRvckJveC5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJRTRBNjY0Q0YyNTIxRDRFMjAwNzA4MURDIC8qIElubGluZUl0ZXJhdG9yQm94TGVn
YWN5UGF0aC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTRBNjY0Q0UyNTIxRDRDOTAwNzA4MURDIC8q
IElubGluZUl0ZXJhdG9yQm94TW9kZXJuUGF0aC5oIGluIEhlYWRlcnMgKi8sCisJCQkJRTQxNUVC
MTMyNzBDMzUxMzAwRThEQTFCIC8qIElubGluZUl0ZXJhdG9ySW5saW5lQm94LmggaW4gSGVhZGVy
cyAqLywKIAkJCQlFNEQzM0Y0MTI1MkM0QjgzMDA4MzdEMDUgLyogSW5saW5lSXRlcmF0b3JMaW5l
LmggaW4gSGVhZGVycyAqLywKIAkJCQlFNEQzM0Y0NDI1MkM1MEUyMDA4MzdEMDUgLyogSW5saW5l
SXRlcmF0b3JMaW5lTGVnYWN5UGF0aC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTREMzNGNDYyNTJD
NTBGQzAwODM3RDA1IC8qIElubGluZUl0ZXJhdG9yTGluZU1vZGVyblBhdGguaCBpbiBIZWFkZXJz
ICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0lubGlu
ZUl0ZXJhdG9yQm94LmggYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vSW5saW5l
SXRlcmF0b3JCb3guaAppbmRleCBhZmFlNTIwZjI3ZTc2OTA4Y2ExNjI3NTMxMWQ1YzMzNzVkN2Fk
YzhiLi42NmZhMTdhZGY3YWRjZjIwMWRkZmFjNzc3Yzg2OWM0M2UwMGNjYTMwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vSW5saW5lSXRlcmF0b3JCb3guaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vSW5saW5lSXRlcmF0b3JCb3gu
aApAQCAtNTcsNiArNTcsOCBAQCBwdWJsaWM6CiAgICAgQm94KFBhdGhWYXJpYW50JiYpOwogCiAg
ICAgYm9vbCBpc1RleHQoKSBjb25zdDsKKyAgICBib29sIGlzSW5saW5lQm94KCkgY29uc3Q7Cisg
ICAgYm9vbCBpc1Jvb3RJbmxpbmVCb3goKSBjb25zdDsKIAogICAgIEZsb2F0UmVjdCByZWN0KCkg
Y29uc3Q7CiAKQEAgLTEwMCw2ICsxMDIsNyBAQCBwdWJsaWM6CiAKIHByb3RlY3RlZDoKICAgICBm
cmllbmQgY2xhc3MgQm94SXRlcmF0b3I7CisgICAgZnJpZW5kIGNsYXNzIElubGluZUJveEl0ZXJh
dG9yOwogICAgIGZyaWVuZCBjbGFzcyBMZWFmQm94SXRlcmF0b3I7CiAgICAgZnJpZW5kIGNsYXNz
IFRleHRCb3hJdGVyYXRvcjsKIApAQCAtMTY5LDYgKzE3MiwyMCBAQCBpbmxpbmUgYm9vbCBCb3g6
OmlzVGV4dCgpIGNvbnN0CiAgICAgfSk7CiB9CiAKK2lubGluZSBib29sIEJveDo6aXNJbmxpbmVC
b3goKSBjb25zdAoreworICAgIHJldHVybiBXVEY6OnN3aXRjaE9uKG1fcGF0aFZhcmlhbnQsIFtd
KGF1dG8mIHBhdGgpIHsKKyAgICAgICAgcmV0dXJuIHBhdGguaXNJbmxpbmVCb3goKTsKKyAgICB9
KTsKK30KKworaW5saW5lIGJvb2wgQm94Ojppc1Jvb3RJbmxpbmVCb3goKSBjb25zdAoreworICAg
IHJldHVybiBXVEY6OnN3aXRjaE9uKG1fcGF0aFZhcmlhbnQsIFtdKGF1dG8mIHBhdGgpIHsKKyAg
ICAgICAgcmV0dXJuIHBhdGguaXNSb290SW5saW5lQm94KCk7CisgICAgfSk7Cit9CisKIGlubGlu
ZSBGbG9hdFJlY3QgQm94OjpyZWN0KCkgY29uc3QKIHsKICAgICByZXR1cm4gV1RGOjpzd2l0Y2hP
bihtX3BhdGhWYXJpYW50LCBbXShhdXRvJiBwYXRoKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9sYXlvdXQvaW50ZWdyYXRpb24vSW5saW5lSXRlcmF0b3JCb3hMZWdhY3lQYXRoLmggYi9T
b3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vSW5saW5lSXRlcmF0b3JCb3hMZWdhY3lQ
YXRoLmgKaW5kZXggNzk1OGJiMjdkMmQ5N2U4MDBhMjg0M2M5YzYxZDFjNzczZjRlNzI0Yi4uZDEx
YTQ5NzFkNDQyMGE4NTE3MjczYWJiZmNmNTNiNjQ5ZmVjZDNiZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0lubGluZUl0ZXJhdG9yQm94TGVnYWN5UGF0aC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9JbmxpbmVJdGVyYXRvckJv
eExlZ2FjeVBhdGguaApAQCAtNTQsNiArNTQsOCBAQCBwdWJsaWM6CiAgICAgfQogCiAgICAgYm9v
bCBpc1RleHQoKSBjb25zdCB7IHJldHVybiBtX2lubGluZUJveC0+aXNJbmxpbmVUZXh0Qm94KCk7
IH0KKyAgICBib29sIGlzSW5saW5lQm94KCkgY29uc3QgeyByZXR1cm4gbV9pbmxpbmVCb3gtPmlz
SW5saW5lRmxvd0JveCgpOyB9CisgICAgYm9vbCBpc1Jvb3RJbmxpbmVCb3goKSBjb25zdCB7IHJl
dHVybiBtX2lubGluZUJveC0+aXNSb290SW5saW5lQm94KCk7IH0KIAogICAgIEZsb2F0UmVjdCBy
ZWN0KCkgY29uc3QgeyByZXR1cm4gbV9pbmxpbmVCb3gtPmZyYW1lUmVjdCgpOyB9CiAKQEAgLTEx
Nyw2ICsxMTksMTYgQEAgcHVibGljOgogICAgICAgICB0cmF2ZXJzZVByZXZpb3VzSW5saW5lQm94
SW5DYWNoZU9yZGVyKCk7CiAgICAgfQogCisgICAgdm9pZCB0cmF2ZXJzZU5leHRJbmxpbmVCb3go
KQorICAgIHsKKyAgICAgICAgbV9pbmxpbmVCb3ggPSBpbmxpbmVGbG93Qm94KCktPm5leHRMaW5l
Qm94KCk7CisgICAgfQorCisgICAgdm9pZCB0cmF2ZXJzZVByZXZpb3VzSW5saW5lQm94KCkKKyAg
ICB7CisgICAgICAgIG1faW5saW5lQm94ID0gaW5saW5lRmxvd0JveCgpLT5wcmV2TGluZUJveCgp
OworICAgIH0KKwogICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBCb3hMZWdhY3lQYXRoJiBvdGhl
cikgY29uc3QgeyByZXR1cm4gbV9pbmxpbmVCb3ggPT0gb3RoZXIubV9pbmxpbmVCb3g7IH0KIAog
ICAgIGJvb2wgYXRFbmQoKSBjb25zdCB7IHJldHVybiAhbV9pbmxpbmVCb3g7IH0KQEAgLTEyNiw2
ICsxMzgsNyBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAgICAgY29uc3QgTGVnYWN5SW5saW5lVGV4
dEJveCogaW5saW5lVGV4dEJveCgpIGNvbnN0IHsgcmV0dXJuIGRvd25jYXN0PExlZ2FjeUlubGlu
ZVRleHRCb3g+KG1faW5saW5lQm94KTsgfQorICAgIGNvbnN0IExlZ2FjeUlubGluZUZsb3dCb3gq
IGlubGluZUZsb3dCb3goKSBjb25zdCB7IHJldHVybiBkb3duY2FzdDxMZWdhY3lJbmxpbmVGbG93
Qm94PihtX2lubGluZUJveCk7IH0KIAogICAgIHN0YXRpYyBWZWN0b3I8Y29uc3QgTGVnYWN5SW5s
aW5lQm94Kj4gaW5saW5lQm94ZXNJbkxvZ2ljYWxPcmRlcihjb25zdCBMZWdhY3lSb290SW5saW5l
Qm94JiByb290KQogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRl
Z3JhdGlvbi9JbmxpbmVJdGVyYXRvckJveE1vZGVyblBhdGguaCBiL1NvdXJjZS9XZWJDb3JlL2xh
eW91dC9pbnRlZ3JhdGlvbi9JbmxpbmVJdGVyYXRvckJveE1vZGVyblBhdGguaAppbmRleCA5YzM2
NDQwMmRmZDJjZGVjZDdhOGI5OWM1YmFlYTVmN2UwNmIzN2Q5Li5kMTQwNWI0MWQwMTZjNmY0Yjg5
ZGQ0OTE1NzNiMmUzZjJlMzY3ZWI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQv
aW50ZWdyYXRpb24vSW5saW5lSXRlcmF0b3JCb3hNb2Rlcm5QYXRoLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0lubGluZUl0ZXJhdG9yQm94TW9kZXJuUGF0aC5oCkBA
IC00OCw2ICs0OCw4IEBAIHB1YmxpYzoKICAgICB9CiAKICAgICBib29sIGlzVGV4dCgpIGNvbnN0
IHsgcmV0dXJuICEhYm94KCkudGV4dCgpOyB9CisgICAgYm9vbCBpc0lubGluZUJveCgpIGNvbnN0
IHsgcmV0dXJuIGJveCgpLmlzSW5saW5lQm94KCk7IH0KKyAgICBib29sIGlzUm9vdElubGluZUJv
eCgpIGNvbnN0IHsgcmV0dXJuIGJveCgpLmlzUm9vdElubGluZUJveCgpOyB9CiAKICAgICBGbG9h
dFJlY3QgcmVjdCgpIGNvbnN0IHsgcmV0dXJuIGJveCgpLmxvZ2ljYWxSZWN0KCk7IH0KIApAQCAt
MTc0LDYgKzE3NiwzNCBAQCBwdWJsaWM6CiAgICAgICAgIHRyYXZlcnNlUHJldmlvdXNPbkxpbmUo
KTsKICAgICB9CiAKKyAgICB2b2lkIHRyYXZlcnNlTmV4dElubGluZUJveCgpCisgICAgeworICAg
ICAgICBBU1NFUlQoIWF0RW5kKCkpOworICAgICAgICBBU1NFUlQoYm94KCkuaXNJbmxpbmVCb3go
KSk7CisKKyAgICAgICAgLy8gRklYTUU6IFRoaXMgYWx3YXlzIHNlYXJjaGVzIHRvIHRoZSBlbmQu
CisgICAgICAgIGF1dG8mIGxheW91dEJveCA9IGJveCgpLmxheW91dEJveCgpOworICAgICAgICBk
byB7CisgICAgICAgICAgICArK21fYm94SW5kZXg7CisgICAgICAgIH0gd2hpbGUgKCFhdEVuZCgp
ICYmICZib3goKS5sYXlvdXRCb3goKSAhPSAmbGF5b3V0Qm94KTsKKworICAgICAgICBBU1NFUlQo
YXRFbmQoKSB8fCBib3goKS5pc0lubGluZUJveCgpKTsKKyAgICB9CisKKyAgICB2b2lkIHRyYXZl
cnNlUHJldmlvdXNJbmxpbmVCb3goKQorICAgIHsKKyAgICAgICAgQVNTRVJUKCFhdEVuZCgpKTsK
KyAgICAgICAgQVNTRVJUKGJveCgpLmlzSW5saW5lQm94KCkpOworCisgICAgICAgIC8vIEZJWE1F
OiBUaGlzIGFsd2F5cyBzZWFyY2hlcyB0byB0aGUgYmVnaW5uaW5nLgorICAgICAgICBhdXRvJiBs
YXlvdXRCb3ggPSBib3goKS5sYXlvdXRCb3goKTsKKyAgICAgICAgZG8geworICAgICAgICAgICAg
bV9ib3hJbmRleCA9IG1fYm94SW5kZXggPyBtX2JveEluZGV4IC0gMSA6IGJveGVzKCkuc2l6ZSgp
OworICAgICAgICB9IHdoaWxlICghYXRFbmQoKSAmJiAmYm94KCkubGF5b3V0Qm94KCkgIT0gJmxh
eW91dEJveCk7CisKKyAgICAgICAgQVNTRVJUKGF0RW5kKCkgfHwgYm94KCkuaXNJbmxpbmVCb3go
KSk7CisgICAgfQorCiAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEJveE1vZGVyblBhdGgmIG90
aGVyKSBjb25zdCB7IHJldHVybiBtX2lubGluZUNvbnRlbnQgPT0gb3RoZXIubV9pbmxpbmVDb250
ZW50ICYmIG1fYm94SW5kZXggPT0gb3RoZXIubV9ib3hJbmRleDsgfQogCiAgICAgYm9vbCBhdEVu
ZCgpIGNvbnN0IHsgcmV0dXJuIG1fYm94SW5kZXggPT0gYm94ZXMoKS5zaXplKCk7IH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9JbmxpbmVJdGVyYXRvcklu
bGluZUJveC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vSW5saW5lSXRl
cmF0b3JJbmxpbmVCb3guY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjdiMDIzYzliYjUyMjYwOTM4NTQ3YjJiN2My
YWJlNWFkZDhmN2NjMTYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQv
aW50ZWdyYXRpb24vSW5saW5lSXRlcmF0b3JJbmxpbmVCb3guY3BwCkBAIC0wLDAgKzEsODkgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiSW5saW5lSXRlcmF0
b3JJbmxpbmVCb3guaCIKKworI2luY2x1ZGUgIkxheW91dEludGVncmF0aW9uTGluZUxheW91dC5o
IgorCituYW1lc3BhY2UgV2ViQ29yZSB7CituYW1lc3BhY2UgSW5saW5lSXRlcmF0b3IgeworCitJ
bmxpbmVCb3g6OklubGluZUJveChQYXRoVmFyaWFudCYmIHBhdGgpCisgICAgOiBCb3goV1RGTW92
ZShwYXRoKSkKK3sKK30KKworSW5saW5lQm94SXRlcmF0b3IgSW5saW5lQm94OjpuZXh0SW5saW5l
Qm94KCkgY29uc3QKK3sKKyAgICByZXR1cm4gSW5saW5lQm94SXRlcmF0b3IoKnRoaXMpLnRyYXZl
cnNlTmV4dElubGluZUJveCgpOworfQorCitJbmxpbmVCb3hJdGVyYXRvciBJbmxpbmVCb3g6OnBy
ZXZpb3VzSW5saW5lQm94KCkgY29uc3QKK3sKKyAgICByZXR1cm4gSW5saW5lQm94SXRlcmF0b3Io
KnRoaXMpLnRyYXZlcnNlUHJldmlvdXNJbmxpbmVCb3goKTsKK30KKworSW5saW5lQm94SXRlcmF0
b3I6OklubGluZUJveEl0ZXJhdG9yKEJveDo6UGF0aFZhcmlhbnQmJiBwYXRoVmFyaWFudCkKKyAg
ICA6IEJveEl0ZXJhdG9yKFdURk1vdmUocGF0aFZhcmlhbnQpKQoreworfQorCitJbmxpbmVCb3hJ
dGVyYXRvcjo6SW5saW5lQm94SXRlcmF0b3IoY29uc3QgQm94JiBib3gpCisgICAgOiBCb3hJdGVy
YXRvcihib3gpCit7Cit9CisKK0lubGluZUJveEl0ZXJhdG9yJiBJbmxpbmVCb3hJdGVyYXRvcjo6
dHJhdmVyc2VOZXh0SW5saW5lQm94KCkKK3sKKyAgICBXVEY6OnN3aXRjaE9uKG1fYm94Lm1fcGF0
aFZhcmlhbnQsIFtdKGF1dG8mIHBhdGgpIHsKKyAgICAgICAgcGF0aC50cmF2ZXJzZU5leHRJbmxp
bmVCb3goKTsKKyAgICB9KTsKKyAgICByZXR1cm4gKnRoaXM7Cit9CisKK0lubGluZUJveEl0ZXJh
dG9yJiBJbmxpbmVCb3hJdGVyYXRvcjo6dHJhdmVyc2VQcmV2aW91c0lubGluZUJveCgpCit7Cisg
ICAgV1RGOjpzd2l0Y2hPbihtX2JveC5tX3BhdGhWYXJpYW50LCBbXShhdXRvJiBwYXRoKSB7Cisg
ICAgICAgIHBhdGgudHJhdmVyc2VQcmV2aW91c0lubGluZUJveCgpOworICAgIH0pOworICAgIHJl
dHVybiAqdGhpczsKK30KKworSW5saW5lQm94SXRlcmF0b3IgaW5saW5lQm94Rm9yKGNvbnN0IExl
Z2FjeUlubGluZUZsb3dCb3gmIGxlZ2FjeUlubGluZUZsb3dCb3gpCit7CisgICAgcmV0dXJuIHsg
Qm94TGVnYWN5UGF0aCB7ICZsZWdhY3lJbmxpbmVGbG93Qm94IH0gfTsKK30KKworI2lmIEVOQUJM
RShMQVlPVVRfRk9STUFUVElOR19DT05URVhUKQorSW5saW5lQm94SXRlcmF0b3IgaW5saW5lQm94
Rm9yKGNvbnN0IExheW91dEludGVncmF0aW9uOjpJbmxpbmVDb250ZW50JiBjb250ZW50LCBzaXpl
X3QgYm94SW5kZXgpCit7CisgICAgQVNTRVJUKGNvbnRlbnQuYm94ZXNbYm94SW5kZXhdLmlzSW5s
aW5lQm94KCkpOworICAgIHJldHVybiB7IEJveE1vZGVyblBhdGggeyBjb250ZW50LCBib3hJbmRl
eCB9IH07Cit9CisjZW5kaWYKKworfQorfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5
b3V0L2ludGVncmF0aW9uL0lubGluZUl0ZXJhdG9ySW5saW5lQm94LmggYi9Tb3VyY2UvV2ViQ29y
ZS9sYXlvdXQvaW50ZWdyYXRpb24vSW5saW5lSXRlcmF0b3JJbmxpbmVCb3guaApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li5jNTM2ZWM3MGE1MDJhN2QwNmI5N2FkMTEzNDMyOThlMjhkNDQzYzI1Ci0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0lubGluZUl0ZXJhdG9ySW5s
aW5lQm94LmgKQEAgLTAsMCArMSw4NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
KyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisj
aW5jbHVkZSAiSW5saW5lSXRlcmF0b3JCb3guaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitu
YW1lc3BhY2UgSW5saW5lSXRlcmF0b3IgeworCitjbGFzcyBJbmxpbmVCb3hJdGVyYXRvcjsKKwor
Y2xhc3MgSW5saW5lQm94IDogcHVibGljIEJveCB7CitwdWJsaWM6CisgICAgSW5saW5lQm94KFBh
dGhWYXJpYW50JiYpOworCisgICAgY29uc3QgUmVuZGVyQm94TW9kZWxPYmplY3QmIHJlbmRlcmVy
KCkgY29uc3QgeyByZXR1cm4gZG93bmNhc3Q8UmVuZGVyQm94TW9kZWxPYmplY3Q+KEJveDo6cmVu
ZGVyZXIoKSk7IH0KKworICAgIC8vIEZJWE1FOiBSZW1vdmUuIEZvciBpbnRlcm1lZGlhdGUgcG9y
dGluZyBzdGVwcyBvbmx5LgorICAgIGNvbnN0IExlZ2FjeUlubGluZUZsb3dCb3gqIGxlZ2FjeUlu
bGluZUJveCgpIGNvbnN0IHsgcmV0dXJuIGRvd25jYXN0PExlZ2FjeUlubGluZUZsb3dCb3g+KEJv
eDo6bGVnYWN5SW5saW5lQm94KCkpOyB9CisKKyAgICBJbmxpbmVCb3hJdGVyYXRvciBuZXh0SW5s
aW5lQm94KCkgY29uc3Q7CisgICAgSW5saW5lQm94SXRlcmF0b3IgcHJldmlvdXNJbmxpbmVCb3go
KSBjb25zdDsKKyAgICBJbmxpbmVCb3hJdGVyYXRvciBpdGVyYXRvcigpIGNvbnN0OworfTsKKwor
Y2xhc3MgSW5saW5lQm94SXRlcmF0b3IgOiBwdWJsaWMgQm94SXRlcmF0b3IgeworcHVibGljOgor
ICAgIElubGluZUJveEl0ZXJhdG9yKCkgeyB9CisgICAgSW5saW5lQm94SXRlcmF0b3IoQm94OjpQ
YXRoVmFyaWFudCYmKTsKKyAgICBJbmxpbmVCb3hJdGVyYXRvcihjb25zdCBCb3gmKTsKKworICAg
IGNvbnN0IElubGluZUJveCYgb3BlcmF0b3IqKCkgY29uc3QgeyByZXR1cm4gZ2V0KCk7IH0KKyAg
ICBjb25zdCBJbmxpbmVCb3gqIG9wZXJhdG9yLT4oKSBjb25zdCB7IHJldHVybiAmZ2V0KCk7IH0K
KworICAgIElubGluZUJveEl0ZXJhdG9yJiB0cmF2ZXJzZU5leHRJbmxpbmVCb3goKTsKKyAgICBJ
bmxpbmVCb3hJdGVyYXRvciYgdHJhdmVyc2VQcmV2aW91c0lubGluZUJveCgpOworCitwcml2YXRl
OgorICAgIGNvbnN0IElubGluZUJveCYgZ2V0KCkgY29uc3QgeyByZXR1cm4gZG93bmNhc3Q8SW5s
aW5lQm94PihtX2JveCk7IH0KK307CisKK0lubGluZUJveEl0ZXJhdG9yIGlubGluZUJveEZvcihj
b25zdCBMZWdhY3lJbmxpbmVGbG93Qm94Jik7CisjaWYgRU5BQkxFKExBWU9VVF9GT1JNQVRUSU5H
X0NPTlRFWFQpCitJbmxpbmVCb3hJdGVyYXRvciBpbmxpbmVCb3hGb3IoY29uc3QgTGF5b3V0SW50
ZWdyYXRpb246OklubGluZUNvbnRlbnQmLCBzaXplX3QgYm94SW5kZXgpOworI2VuZGlmCisKK2lu
bGluZSBJbmxpbmVCb3hJdGVyYXRvciBJbmxpbmVCb3g6Oml0ZXJhdG9yKCkgY29uc3QKK3sKKyAg
ICByZXR1cm4geyAqdGhpcyB9OworfQorCit9Cit9CisKK1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNf
QkVHSU4oV2ViQ29yZTo6SW5saW5lSXRlcmF0b3I6OklubGluZUJveCkKK3N0YXRpYyBib29sIGlz
VHlwZShjb25zdCBXZWJDb3JlOjpJbmxpbmVJdGVyYXRvcjo6Qm94JiBib3gpIHsgcmV0dXJuIGJv
eC5pc0lubGluZUJveCgpOyB9CitTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0VORCgpCisKK1NQRUNJ
QUxJWkVfVFlQRV9UUkFJVFNfQkVHSU4oV2ViQ29yZTo6SW5saW5lSXRlcmF0b3I6OklubGluZUJv
eEl0ZXJhdG9yKQorc3RhdGljIGJvb2wgaXNUeXBlKGNvbnN0IFdlYkNvcmU6OklubGluZUl0ZXJh
dG9yOjpCb3hJdGVyYXRvciYgYm94KSB7IHJldHVybiAhYm94IHx8IGJveC0+aXNJbmxpbmVCb3go
KTsgfQorU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19FTkQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL0lubGluZUJveFBhaW50ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL0lubGluZUJveFBhaW50ZXIuY3BwCmluZGV4IGQ3YmRmNzVjOTA3MjJlYzM2OTIyOTMw
ZWE0NDU2MzI5MDljZmZkZTEuLjUwNWViOTIzM2JlZWFkZDMzMjdiOTg5NTE3MjJhNmUxZGNkNzQ1
YjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVCb3hQYWludGVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lQm94UGFpbnRlci5jcHAK
QEAgLTI2LDYgKzI2LDcgQEAKICNpbmNsdWRlICJJbmxpbmVCb3hQYWludGVyLmgiCiAKICNpbmNs
dWRlICJHcmFwaGljc0NvbnRleHQuaCIKKyNpbmNsdWRlICJJbmxpbmVJdGVyYXRvckxpbmUuaCIK
ICNpbmNsdWRlICJMZWdhY3lJbmxpbmVGbG93Qm94LmgiCiAjaW5jbHVkZSAiUGFpbnRJbmZvLmgi
CiAjaW5jbHVkZSAiUmVuZGVyQmxvY2tGbG93LmgiCkBAIC0zNiwxMiArMzcsMTIgQEAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogSW5saW5lQm94UGFpbnRlcjo6SW5saW5lQm94UGFpbnRlcihjb25z
dCBMZWdhY3lJbmxpbmVGbG93Qm94JiBpbmxpbmVCb3gsIFBhaW50SW5mbyYgcGFpbnRJbmZvLCBj
b25zdCBMYXlvdXRQb2ludCYgcGFpbnRPZmZzZXQpCi0gICAgOiBtX2lubGluZUJveChpbmxpbmVC
b3gpCisgICAgOiBtX2lubGluZUJveCgqSW5saW5lSXRlcmF0b3I6OmlubGluZUJveEZvcihpbmxp
bmVCb3gpKQogICAgICwgbV9wYWludEluZm8ocGFpbnRJbmZvKQogICAgICwgbV9wYWludE9mZnNl
dChwYWludE9mZnNldCkKICAgICAsIG1fcmVuZGVyZXIobV9pbmxpbmVCb3gucmVuZGVyZXIoKSkK
LSAgICAsIG1faXNGaXJzdExpbmUobV9pbmxpbmVCb3guaXNGaXJzdExpbmUoKSkKLSAgICAsIG1f
aXNSb290SW5saW5lQm94KGlzPFJlbmRlckJsb2NrRmxvdz4obV9yZW5kZXJlcikpCisgICAgLCBt
X2lzRmlyc3RMaW5lKG1faW5saW5lQm94LmxpbmUoKS0+aXNGaXJzdCgpKQorICAgICwgbV9pc1Jv
b3RJbmxpbmVCb3gobV9pbmxpbmVCb3guaXNSb290SW5saW5lQm94KCkpCiAgICAgLCBtX2lzSG9y
aXpvbnRhbChtX2lubGluZUJveC5pc0hvcml6b250YWwoKSkKIHsKIH0KQEAgLTk0LDI4ICs5NSwy
OCBAQCB2b2lkIElubGluZUJveFBhaW50ZXI6OnBhaW50KCkKICAgICBwYWludERlY29yYXRpb25z
KCk7CiB9CiAKLXN0YXRpYyBMYXlvdXRSZWN0IGNsaXBSZWN0Rm9yTmluZVBpZWNlSW1hZ2VTdHJp
cChjb25zdCBMZWdhY3lJbmxpbmVGbG93Qm94KiBib3gsIGNvbnN0IE5pbmVQaWVjZUltYWdlJiBp
bWFnZSwgY29uc3QgTGF5b3V0UmVjdCYgcGFpbnRSZWN0KQorc3RhdGljIExheW91dFJlY3QgY2xp
cFJlY3RGb3JOaW5lUGllY2VJbWFnZVN0cmlwKGNvbnN0IElubGluZUl0ZXJhdG9yOjpJbmxpbmVC
b3gmIGJveCwgY29uc3QgTmluZVBpZWNlSW1hZ2UmIGltYWdlLCBjb25zdCBMYXlvdXRSZWN0JiBw
YWludFJlY3QpCiB7CiAgICAgTGF5b3V0UmVjdCBjbGlwUmVjdChwYWludFJlY3QpOwotICAgIGF1
dG8mIHN0eWxlID0gYm94LT5yZW5kZXJlcigpLnN0eWxlKCk7CisgICAgYXV0byYgc3R5bGUgPSBi
b3gucmVuZGVyZXIoKS5zdHlsZSgpOwogICAgIExheW91dEJveEV4dGVudCBvdXRzZXRzID0gc3R5
bGUuaW1hZ2VPdXRzZXRzKGltYWdlKTsKLSAgICBpZiAoYm94LT5pc0hvcml6b250YWwoKSkgewor
ICAgIGlmIChib3guaXNIb3Jpem9udGFsKCkpIHsKICAgICAgICAgY2xpcFJlY3Quc2V0WShwYWlu
dFJlY3QueSgpIC0gb3V0c2V0cy50b3AoKSk7CiAgICAgICAgIGNsaXBSZWN0LnNldEhlaWdodChw
YWludFJlY3QuaGVpZ2h0KCkgKyBvdXRzZXRzLnRvcCgpICsgb3V0c2V0cy5ib3R0b20oKSk7Ci0g
ICAgICAgIGlmIChib3gtPmluY2x1ZGVMb2dpY2FsTGVmdEVkZ2UoKSkgeworICAgICAgICBpZiAo
Ym94LmxlZ2FjeUlubGluZUJveCgpLT5pbmNsdWRlTG9naWNhbExlZnRFZGdlKCkpIHsKICAgICAg
ICAgICAgIGNsaXBSZWN0LnNldFgocGFpbnRSZWN0LngoKSAtIG91dHNldHMubGVmdCgpKTsKICAg
ICAgICAgICAgIGNsaXBSZWN0LnNldFdpZHRoKHBhaW50UmVjdC53aWR0aCgpICsgb3V0c2V0cy5s
ZWZ0KCkpOwogICAgICAgICB9Ci0gICAgICAgIGlmIChib3gtPmluY2x1ZGVMb2dpY2FsUmlnaHRF
ZGdlKCkpCisgICAgICAgIGlmIChib3gubGVnYWN5SW5saW5lQm94KCktPmluY2x1ZGVMb2dpY2Fs
UmlnaHRFZGdlKCkpCiAgICAgICAgICAgICBjbGlwUmVjdC5zZXRXaWR0aChjbGlwUmVjdC53aWR0
aCgpICsgb3V0c2V0cy5yaWdodCgpKTsKICAgICB9IGVsc2UgewogICAgICAgICBjbGlwUmVjdC5z
ZXRYKHBhaW50UmVjdC54KCkgLSBvdXRzZXRzLmxlZnQoKSk7CiAgICAgICAgIGNsaXBSZWN0LnNl
dFdpZHRoKHBhaW50UmVjdC53aWR0aCgpICsgb3V0c2V0cy5sZWZ0KCkgKyBvdXRzZXRzLnJpZ2h0
KCkpOwotICAgICAgICBpZiAoYm94LT5pbmNsdWRlTG9naWNhbExlZnRFZGdlKCkpIHsKKyAgICAg
ICAgaWYgKGJveC5sZWdhY3lJbmxpbmVCb3goKS0+aW5jbHVkZUxvZ2ljYWxMZWZ0RWRnZSgpKSB7
CiAgICAgICAgICAgICBjbGlwUmVjdC5zZXRZKHBhaW50UmVjdC55KCkgLSBvdXRzZXRzLnRvcCgp
KTsKICAgICAgICAgICAgIGNsaXBSZWN0LnNldEhlaWdodChwYWludFJlY3QuaGVpZ2h0KCkgKyBv
dXRzZXRzLnRvcCgpKTsKICAgICAgICAgfQotICAgICAgICBpZiAoYm94LT5pbmNsdWRlTG9naWNh
bFJpZ2h0RWRnZSgpKQorICAgICAgICBpZiAoYm94LmxlZ2FjeUlubGluZUJveCgpLT5pbmNsdWRl
TG9naWNhbFJpZ2h0RWRnZSgpKQogICAgICAgICAgICAgY2xpcFJlY3Quc2V0SGVpZ2h0KGNsaXBS
ZWN0LmhlaWdodCgpICsgb3V0c2V0cy5ib3R0b20oKSk7CiAgICAgfQogICAgIHJldHVybiBjbGlw
UmVjdDsKQEAgLTEyNiwxMiArMTI3LDEyIEBAIHZvaWQgSW5saW5lQm94UGFpbnRlcjo6cGFpbnRN
YXNrKCkKICAgICBpZiAoIW1fcGFpbnRJbmZvLnNob3VsZFBhaW50V2l0aGluUm9vdChyZW5kZXJl
cigpKSB8fCByZW5kZXJlcigpLnN0eWxlKCkudmlzaWJpbGl0eSgpICE9IFZpc2liaWxpdHk6OlZp
c2libGUgfHwgbV9wYWludEluZm8ucGhhc2UgIT0gUGFpbnRQaGFzZTo6TWFzaykKICAgICAgICAg
cmV0dXJuOwogCi0gICAgTGF5b3V0UmVjdCBmcmFtZVJlY3QobV9pbmxpbmVCb3guZnJhbWVSZWN0
KCkpOworICAgIExheW91dFJlY3QgZnJhbWVSZWN0KG1faW5saW5lQm94LnJlY3QoKSk7CiAgICAg
Y29uc3RyYWluVG9MaW5lVG9wQW5kQm90dG9tSWZOZWVkZWQoZnJhbWVSZWN0KTsKIAogICAgIC8v
IE1vdmUgeC95IHRvIG91ciBjb29yZGluYXRlcy4KICAgICBMYXlvdXRSZWN0IGxvY2FsUmVjdChm
cmFtZVJlY3QpOwotICAgIG1faW5saW5lQm94LnJvb3QoKS5ibG9ja0Zsb3coKS5mbGlwRm9yV3Jp
dGluZ01vZGUobG9jYWxSZWN0KTsKKyAgICBtX2lubGluZUJveC5saW5lKCktPmNvbnRhaW5pbmdC
bG9jaygpLmZsaXBGb3JXcml0aW5nTW9kZShsb2NhbFJlY3QpOwogICAgIExheW91dFBvaW50IGFk
anVzdGVkUGFpbnRPZmZzZXQgPSBtX3BhaW50T2Zmc2V0ICsgbG9jYWxSZWN0LmxvY2F0aW9uKCk7
CiAKICAgICBjb25zdCBOaW5lUGllY2VJbWFnZSYgbWFza05pbmVQaWVjZUltYWdlID0gcmVuZGVy
ZXIoKS5zdHlsZSgpLm1hc2tCb3hJbWFnZSgpOwpAQCAtMTY1LDI0ICsxNjYsMjQgQEAgdm9pZCBJ
bmxpbmVCb3hQYWludGVyOjpwYWludE1hc2soKQogICAgICAgICByZXR1cm47IC8vIERvbid0IHBh
aW50IGFueXRoaW5nIHdoaWxlIHdlIHdhaXQgZm9yIHRoZSBpbWFnZSB0byBsb2FkLgogICAgIH0K
IAotICAgIGJvb2wgaGFzU2luZ2xlTGluZSA9ICFtX2lubGluZUJveC5wcmV2TGluZUJveCgpICYm
ICFtX2lubGluZUJveC5uZXh0TGluZUJveCgpOworICAgIGJvb2wgaGFzU2luZ2xlTGluZSA9ICFt
X2lubGluZUJveC5wcmV2aW91c0lubGluZUJveCgpICYmICFtX2lubGluZUJveC5uZXh0SW5saW5l
Qm94KCk7CiAgICAgaWYgKGhhc1NpbmdsZUxpbmUpCiAgICAgICAgIHJlbmRlcmVyKCkucGFpbnRO
aW5lUGllY2VJbWFnZShtX3BhaW50SW5mby5jb250ZXh0KCksIExheW91dFJlY3QoYWRqdXN0ZWRQ
YWludE9mZnNldCwgZnJhbWVSZWN0LnNpemUoKSksIHJlbmRlcmVyKCkuc3R5bGUoKSwgbWFza05p
bmVQaWVjZUltYWdlLCBjb21wb3NpdGVPcCk7CiAgICAgZWxzZSB7CiAgICAgICAgIC8vIFdlIGhh
dmUgYSBtYXNrIGltYWdlIHRoYXQgc3BhbnMgbXVsdGlwbGUgbGluZXMuCiAgICAgICAgIC8vIFdl
IG5lZWQgdG8gYWRqdXN0IF90eCBhbmQgX3R5IGJ5IHRoZSB3aWR0aCBvZiBhbGwgcHJldmlvdXMg
bGluZXMuCiAgICAgICAgIExheW91dFVuaXQgbG9naWNhbE9mZnNldE9uTGluZTsKLSAgICAgICAg
Zm9yIChhdXRvKiBjdXJyID0gbV9pbmxpbmVCb3gucHJldkxpbmVCb3goKTsgY3VycjsgY3VyciA9
IGN1cnItPnByZXZMaW5lQm94KCkpCi0gICAgICAgICAgICBsb2dpY2FsT2Zmc2V0T25MaW5lICs9
IGN1cnItPmxvZ2ljYWxXaWR0aCgpOworICAgICAgICBmb3IgKGF1dG8gYm94ID0gbV9pbmxpbmVC
b3gucHJldmlvdXNJbmxpbmVCb3goKTsgYm94OyBib3gudHJhdmVyc2VQcmV2aW91c0lubGluZUJv
eCgpKQorICAgICAgICAgICAgbG9naWNhbE9mZnNldE9uTGluZSArPSBib3gtPmxvZ2ljYWxXaWR0
aCgpOwogICAgICAgICBMYXlvdXRVbml0IHRvdGFsTG9naWNhbFdpZHRoID0gbG9naWNhbE9mZnNl
dE9uTGluZTsKLSAgICAgICAgZm9yIChhdXRvKiBjdXJyID0gJm1faW5saW5lQm94OyBjdXJyOyBj
dXJyID0gY3Vyci0+bmV4dExpbmVCb3goKSkKLSAgICAgICAgICAgIHRvdGFsTG9naWNhbFdpZHRo
ICs9IGN1cnItPmxvZ2ljYWxXaWR0aCgpOworICAgICAgICBmb3IgKGF1dG8gYm94ID0gbV9pbmxp
bmVCb3guaXRlcmF0b3IoKTsgYm94OyBib3gudHJhdmVyc2VOZXh0SW5saW5lQm94KCkpCisgICAg
ICAgICAgICB0b3RhbExvZ2ljYWxXaWR0aCArPSBib3gtPmxvZ2ljYWxXaWR0aCgpOwogICAgICAg
ICBMYXlvdXRVbml0IHN0cmlwWCA9IGFkanVzdGVkUGFpbnRPZmZzZXQueCgpIC0gKGlzSG9yaXpv
bnRhbCgpID8gbG9naWNhbE9mZnNldE9uTGluZSA6IDBfbHUpOwogICAgICAgICBMYXlvdXRVbml0
IHN0cmlwWSA9IGFkanVzdGVkUGFpbnRPZmZzZXQueSgpIC0gKGlzSG9yaXpvbnRhbCgpID8gMF9s
dSA6IGxvZ2ljYWxPZmZzZXRPbkxpbmUpOwogICAgICAgICBMYXlvdXRVbml0IHN0cmlwV2lkdGgg
PSBpc0hvcml6b250YWwoKSA/IHRvdGFsTG9naWNhbFdpZHRoIDogZnJhbWVSZWN0LndpZHRoKCk7
CiAgICAgICAgIExheW91dFVuaXQgc3RyaXBIZWlnaHQgPSBpc0hvcml6b250YWwoKSA/IGZyYW1l
UmVjdC5oZWlnaHQoKSA6IHRvdGFsTG9naWNhbFdpZHRoOwogCi0gICAgICAgIExheW91dFJlY3Qg
Y2xpcFJlY3QgPSBjbGlwUmVjdEZvck5pbmVQaWVjZUltYWdlU3RyaXAoJm1faW5saW5lQm94LCBt
YXNrTmluZVBpZWNlSW1hZ2UsIHBhaW50UmVjdCk7CisgICAgICAgIExheW91dFJlY3QgY2xpcFJl
Y3QgPSBjbGlwUmVjdEZvck5pbmVQaWVjZUltYWdlU3RyaXAobV9pbmxpbmVCb3gsIG1hc2tOaW5l
UGllY2VJbWFnZSwgcGFpbnRSZWN0KTsKICAgICAgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZl
ciBzdGF0ZVNhdmVyKG1fcGFpbnRJbmZvLmNvbnRleHQoKSk7CiAgICAgICAgIG1fcGFpbnRJbmZv
LmNvbnRleHQoKS5jbGlwKGNsaXBSZWN0KTsKICAgICAgICAgcmVuZGVyZXIoKS5wYWludE5pbmVQ
aWVjZUltYWdlKG1fcGFpbnRJbmZvLmNvbnRleHQoKSwgTGF5b3V0UmVjdChzdHJpcFgsIHN0cmlw
WSwgc3RyaXBXaWR0aCwgc3RyaXBIZWlnaHQpLCByZW5kZXJlcigpLnN0eWxlKCksIG1hc2tOaW5l
UGllY2VJbWFnZSwgY29tcG9zaXRlT3ApOwpAQCAtMjA2LDE4ICsyMDcsMTggQEAgdm9pZCBJbmxp
bmVCb3hQYWludGVyOjpwYWludERlY29yYXRpb25zKCkKICAgICBpZiAobV9pc1Jvb3RJbmxpbmVC
b3ggJiYgKCFtX2lzRmlyc3RMaW5lIHx8ICZzdHlsZSA9PSAmcmVuZGVyZXIoKS5zdHlsZSgpKSkK
ICAgICAgICAgcmV0dXJuOwogCi0gICAgTGF5b3V0UmVjdCBmcmFtZVJlY3QobV9pbmxpbmVCb3gu
ZnJhbWVSZWN0KCkpOworICAgIExheW91dFJlY3QgZnJhbWVSZWN0KG1faW5saW5lQm94LnJlY3Qo
KSk7CiAgICAgY29uc3RyYWluVG9MaW5lVG9wQW5kQm90dG9tSWZOZWVkZWQoZnJhbWVSZWN0KTsK
IAogICAgIC8vIE1vdmUgeC95IHRvIG91ciBjb29yZGluYXRlcy4KICAgICBMYXlvdXRSZWN0IGxv
Y2FsUmVjdChmcmFtZVJlY3QpOwotICAgIG1faW5saW5lQm94LnJvb3QoKS5ibG9ja0Zsb3coKS5m
bGlwRm9yV3JpdGluZ01vZGUobG9jYWxSZWN0KTsKKyAgICBtX2lubGluZUJveC5saW5lKCktPmNv
bnRhaW5pbmdCbG9jaygpLmZsaXBGb3JXcml0aW5nTW9kZShsb2NhbFJlY3QpOwogCiAgICAgTGF5
b3V0UG9pbnQgYWRqdXN0ZWRQYWludG9mZnNldCA9IG1fcGFpbnRPZmZzZXQgKyBsb2NhbFJlY3Qu
bG9jYXRpb24oKTsKICAgICBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQgPSBtX3BhaW50SW5mby5j
b250ZXh0KCk7CiAgICAgTGF5b3V0UmVjdCBwYWludFJlY3QgPSBMYXlvdXRSZWN0KGFkanVzdGVk
UGFpbnRvZmZzZXQsIGZyYW1lUmVjdC5zaXplKCkpOwogICAgIC8vIFNoYWRvdyBjb21lcyBmaXJz
dCBhbmQgaXMgYmVoaW5kIHRoZSBiYWNrZ3JvdW5kIGFuZCBib3JkZXIuCi0gICAgaWYgKCFyZW5k
ZXJlcigpLmJveFNoYWRvd1Nob3VsZEJlQXBwbGllZFRvQmFja2dyb3VuZChhZGp1c3RlZFBhaW50
b2Zmc2V0LCBCYWNrZ3JvdW5kQmxlZWROb25lLCAmbV9pbmxpbmVCb3gpKQorICAgIGlmICghcmVu
ZGVyZXIoKS5ib3hTaGFkb3dTaG91bGRCZUFwcGxpZWRUb0JhY2tncm91bmQoYWRqdXN0ZWRQYWlu
dG9mZnNldCwgQmFja2dyb3VuZEJsZWVkTm9uZSwgbV9pbmxpbmVCb3gubGVnYWN5SW5saW5lQm94
KCkpKQogICAgICAgICBwYWludEJveFNoYWRvdyhTaGFkb3dTdHlsZTo6Tm9ybWFsLCBwYWludFJl
Y3QpOwogCiAgICAgYXV0byBjb2xvciA9IHN0eWxlLnZpc2l0ZWREZXBlbmRlbnRDb2xvcihDU1NQ
cm9wZXJ0eUJhY2tncm91bmRDb2xvcik7CkBAIC0yMzksOSArMjQwLDkgQEAgdm9pZCBJbmxpbmVC
b3hQYWludGVyOjpwYWludERlY29yYXRpb25zKCkKICAgICBpZiAoaGFzQm9yZGVySW1hZ2UgJiYg
IWJvcmRlckltYWdlU291cmNlLT5pc0xvYWRlZCgpKQogICAgICAgICByZXR1cm47IC8vIERvbid0
IHBhaW50IGFueXRoaW5nIHdoaWxlIHdlIHdhaXQgZm9yIHRoZSBpbWFnZSB0byBsb2FkLgogCi0g
ICAgYm9vbCBoYXNTaW5nbGVMaW5lID0gIW1faW5saW5lQm94LnByZXZMaW5lQm94KCkgJiYgIW1f
aW5saW5lQm94Lm5leHRMaW5lQm94KCk7CisgICAgYm9vbCBoYXNTaW5nbGVMaW5lID0gIW1faW5s
aW5lQm94LnByZXZpb3VzSW5saW5lQm94KCkgJiYgIW1faW5saW5lQm94Lm5leHRJbmxpbmVCb3go
KTsKICAgICBpZiAoIWhhc0JvcmRlckltYWdlIHx8IGhhc1NpbmdsZUxpbmUpIHsKLSAgICAgICAg
cmVuZGVyZXIoKS5wYWludEJvcmRlcihtX3BhaW50SW5mbywgcGFpbnRSZWN0LCBzdHlsZSwgQmFj
a2dyb3VuZEJsZWVkTm9uZSwgbV9pbmxpbmVCb3guaW5jbHVkZUxvZ2ljYWxMZWZ0RWRnZSgpLCBt
X2lubGluZUJveC5pbmNsdWRlTG9naWNhbFJpZ2h0RWRnZSgpKTsKKyAgICAgICAgcmVuZGVyZXIo
KS5wYWludEJvcmRlcihtX3BhaW50SW5mbywgcGFpbnRSZWN0LCBzdHlsZSwgQmFja2dyb3VuZEJs
ZWVkTm9uZSwgbV9pbmxpbmVCb3gubGVnYWN5SW5saW5lQm94KCktPmluY2x1ZGVMb2dpY2FsTGVm
dEVkZ2UoKSwgbV9pbmxpbmVCb3gubGVnYWN5SW5saW5lQm94KCktPmluY2x1ZGVMb2dpY2FsUmln
aHRFZGdlKCkpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC0yNTQsMTggKzI1NSwxOCBA
QCB2b2lkIElubGluZUJveFBhaW50ZXI6OnBhaW50RGVjb3JhdGlvbnMoKQogICAgIC8vIEZJWE1F
OiBXaGF0IHRoZSBoZWNrIGRvIHdlIGRvIHdpdGggUlRMIGhlcmU/IFRoZSBtYXRoIHdlJ3JlIHVz
aW5nIGlzIG9idmlvdXNseSBub3QgcmlnaHQsCiAgICAgLy8gYnV0IGl0IGlzbid0IGV2ZW4gY2xl
YXIgaG93IHRoaXMgc2hvdWxkIHdvcmsgYXQgYWxsLgogICAgIExheW91dFVuaXQgbG9naWNhbE9m
ZnNldE9uTGluZTsKLSAgICBmb3IgKGF1dG8qIGN1cnIgPSBtX2lubGluZUJveC5wcmV2TGluZUJv
eCgpOyBjdXJyOyBjdXJyID0gY3Vyci0+cHJldkxpbmVCb3goKSkKLSAgICAgICAgbG9naWNhbE9m
ZnNldE9uTGluZSArPSBjdXJyLT5sb2dpY2FsV2lkdGgoKTsKKyAgICBmb3IgKGF1dG8gYm94ID0g
bV9pbmxpbmVCb3gucHJldmlvdXNJbmxpbmVCb3goKTsgYm94OyBib3gudHJhdmVyc2VQcmV2aW91
c0lubGluZUJveCgpKQorICAgICAgICBsb2dpY2FsT2Zmc2V0T25MaW5lICs9IGJveC0+bG9naWNh
bFdpZHRoKCk7CiAgICAgTGF5b3V0VW5pdCB0b3RhbExvZ2ljYWxXaWR0aCA9IGxvZ2ljYWxPZmZz
ZXRPbkxpbmU7Ci0gICAgZm9yIChhdXRvKiBjdXJyID0gJm1faW5saW5lQm94OyBjdXJyOyBjdXJy
ID0gY3Vyci0+bmV4dExpbmVCb3goKSkKLSAgICAgICAgdG90YWxMb2dpY2FsV2lkdGggKz0gY3Vy
ci0+bG9naWNhbFdpZHRoKCk7CisgICAgZm9yIChhdXRvIGJveCA9IG1faW5saW5lQm94Lml0ZXJh
dG9yKCk7IGJveDsgYm94LnRyYXZlcnNlTmV4dElubGluZUJveCgpKQorICAgICAgICB0b3RhbExv
Z2ljYWxXaWR0aCArPSBib3gtPmxvZ2ljYWxXaWR0aCgpOwogCiAgICAgTGF5b3V0VW5pdCBzdHJp
cFggPSBhZGp1c3RlZFBhaW50b2Zmc2V0LngoKSAtIChpc0hvcml6b250YWwoKSA/IGxvZ2ljYWxP
ZmZzZXRPbkxpbmUgOiAwX2x1KTsKICAgICBMYXlvdXRVbml0IHN0cmlwWSA9IGFkanVzdGVkUGFp
bnRvZmZzZXQueSgpIC0gKGlzSG9yaXpvbnRhbCgpID8gMF9sdSA6IGxvZ2ljYWxPZmZzZXRPbkxp
bmUpOwogICAgIExheW91dFVuaXQgc3RyaXBXaWR0aCA9IGlzSG9yaXpvbnRhbCgpID8gdG90YWxM
b2dpY2FsV2lkdGggOiBmcmFtZVJlY3Qud2lkdGgoKTsKICAgICBMYXlvdXRVbml0IHN0cmlwSGVp
Z2h0ID0gaXNIb3Jpem9udGFsKCkgPyBmcmFtZVJlY3QuaGVpZ2h0KCkgOiB0b3RhbExvZ2ljYWxX
aWR0aDsKIAotICAgIExheW91dFJlY3QgY2xpcFJlY3QgPSBjbGlwUmVjdEZvck5pbmVQaWVjZUlt
YWdlU3RyaXAoJm1faW5saW5lQm94LCBib3JkZXJJbWFnZSwgcGFpbnRSZWN0KTsKKyAgICBMYXlv
dXRSZWN0IGNsaXBSZWN0ID0gY2xpcFJlY3RGb3JOaW5lUGllY2VJbWFnZVN0cmlwKG1faW5saW5l
Qm94LCBib3JkZXJJbWFnZSwgcGFpbnRSZWN0KTsKICAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNh
dmVyIHN0YXRlU2F2ZXIoY29udGV4dCk7CiAgICAgY29udGV4dC5jbGlwKGNsaXBSZWN0KTsKICAg
ICByZW5kZXJlcigpLnBhaW50Qm9yZGVyKG1fcGFpbnRJbmZvLCBMYXlvdXRSZWN0KHN0cmlwWCwg
c3RyaXBZLCBzdHJpcFdpZHRoLCBzdHJpcEhlaWdodCksIHN0eWxlKTsKQEAgLTI4NiwxOCArMjg3
LDE4IEBAIHZvaWQgSW5saW5lQm94UGFpbnRlcjo6cGFpbnRGaWxsTGF5ZXIoY29uc3QgQ29sb3Im
IGNvbG9yLCBjb25zdCBGaWxsTGF5ZXImIGZpbGxMCiAgICAgYXV0byogaW1hZ2UgPSBmaWxsTGF5
ZXIuaW1hZ2UoKTsKICAgICBib29sIGhhc0ZpbGxJbWFnZSA9IGltYWdlICYmIGltYWdlLT5jYW5S
ZW5kZXIoJnJlbmRlcmVyKCksIHJlbmRlcmVyKCkuc3R5bGUoKS5lZmZlY3RpdmVab29tKCkpOwog
ICAgIGJvb2wgaGFzRmlsbEltYWdlT3JCb3JkZXJSYWRpb3VzID0gaGFzRmlsbEltYWdlIHx8IHJl
bmRlcmVyKCkuc3R5bGUoKS5oYXNCb3JkZXJSYWRpdXMoKTsKLSAgICBib29sIGhhc1NpbmdsZUxp
bmUgPSAhbV9pbmxpbmVCb3gucHJldkxpbmVCb3goKSAmJiAhbV9pbmxpbmVCb3gubmV4dExpbmVC
b3goKTsKKyAgICBib29sIGhhc1NpbmdsZUxpbmUgPSAhbV9pbmxpbmVCb3gucHJldmlvdXNJbmxp
bmVCb3goKSAmJiAhbV9pbmxpbmVCb3gubmV4dElubGluZUJveCgpOwogCiAgICAgaWYgKCFoYXNG
aWxsSW1hZ2VPckJvcmRlclJhZGlvdXMgfHwgaGFzU2luZ2xlTGluZSB8fCBtX2lzUm9vdElubGlu
ZUJveCkgewotICAgICAgICByZW5kZXJlcigpLnBhaW50RmlsbExheWVyRXh0ZW5kZWQobV9wYWlu
dEluZm8sIGNvbG9yLCBmaWxsTGF5ZXIsIHJlY3QsIEJhY2tncm91bmRCbGVlZE5vbmUsICZtX2lu
bGluZUJveCwgcmVjdC5zaXplKCksIG9wKTsKKyAgICAgICAgcmVuZGVyZXIoKS5wYWludEZpbGxM
YXllckV4dGVuZGVkKG1fcGFpbnRJbmZvLCBjb2xvciwgZmlsbExheWVyLCByZWN0LCBCYWNrZ3Jv
dW5kQmxlZWROb25lLCBtX2lubGluZUJveC5sZWdhY3lJbmxpbmVCb3goKSwgcmVjdC5zaXplKCks
IG9wKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAogI2lmIEVOQUJMRShDU1NfQk9YX0RFQ09S
QVRJT05fQlJFQUspCiAgICAgaWYgKHJlbmRlcmVyKCkuc3R5bGUoKS5ib3hEZWNvcmF0aW9uQnJl
YWsoKSA9PSBCb3hEZWNvcmF0aW9uQnJlYWs6OkNsb25lKSB7CiAgICAgICAgIEdyYXBoaWNzQ29u
dGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcihtX3BhaW50SW5mby5jb250ZXh0KCkpOwotICAgICAg
ICBtX3BhaW50SW5mby5jb250ZXh0KCkuY2xpcCh7IHJlY3QueCgpLCByZWN0LnkoKSwgTGF5b3V0
VW5pdChtX2lubGluZUJveC53aWR0aCgpKSwgTGF5b3V0VW5pdChtX2lubGluZUJveC5oZWlnaHQo
KSkgfSk7Ci0gICAgICAgIHJlbmRlcmVyKCkucGFpbnRGaWxsTGF5ZXJFeHRlbmRlZChtX3BhaW50
SW5mbywgY29sb3IsIGZpbGxMYXllciwgcmVjdCwgQmFja2dyb3VuZEJsZWVkTm9uZSwgJm1faW5s
aW5lQm94LCByZWN0LnNpemUoKSwgb3ApOworICAgICAgICBtX3BhaW50SW5mby5jb250ZXh0KCku
Y2xpcCh7IHJlY3QueCgpLCByZWN0LnkoKSwgTGF5b3V0VW5pdChtX2lubGluZUJveC5yZWN0KCku
d2lkdGgoKSksIExheW91dFVuaXQobV9pbmxpbmVCb3gucmVjdCgpLmhlaWdodCgpKSB9KTsKKyAg
ICAgICAgcmVuZGVyZXIoKS5wYWludEZpbGxMYXllckV4dGVuZGVkKG1fcGFpbnRJbmZvLCBjb2xv
ciwgZmlsbExheWVyLCByZWN0LCBCYWNrZ3JvdW5kQmxlZWROb25lLCBtX2lubGluZUJveC5sZWdh
Y3lJbmxpbmVCb3goKSwgcmVjdC5zaXplKCksIG9wKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0K
ICNlbmRpZgpAQCAtMzExLDMxICszMTIsMzEgQEAgdm9pZCBJbmxpbmVCb3hQYWludGVyOjpwYWlu
dEZpbGxMYXllcihjb25zdCBDb2xvciYgY29sb3IsIGNvbnN0IEZpbGxMYXllciYgZmlsbEwKICAg
ICBMYXlvdXRVbml0IGxvZ2ljYWxPZmZzZXRPbkxpbmU7CiAgICAgTGF5b3V0VW5pdCB0b3RhbExv
Z2ljYWxXaWR0aDsKICAgICBpZiAocmVuZGVyZXIoKS5zdHlsZSgpLmRpcmVjdGlvbigpID09IFRl
eHREaXJlY3Rpb246OkxUUikgewotICAgICAgICBmb3IgKGF1dG8qIGN1cnIgPSBtX2lubGluZUJv
eC5wcmV2TGluZUJveCgpOyBjdXJyOyBjdXJyID0gY3Vyci0+cHJldkxpbmVCb3goKSkKLSAgICAg
ICAgICAgIGxvZ2ljYWxPZmZzZXRPbkxpbmUgKz0gY3Vyci0+bG9naWNhbFdpZHRoKCk7CisgICAg
ICAgIGZvciAoYXV0byBib3ggPSBtX2lubGluZUJveC5wcmV2aW91c0lubGluZUJveCgpOyBib3g7
IGJveC50cmF2ZXJzZVByZXZpb3VzSW5saW5lQm94KCkpCisgICAgICAgICAgICBsb2dpY2FsT2Zm
c2V0T25MaW5lICs9IGJveC0+bG9naWNhbFdpZHRoKCk7CiAgICAgICAgIHRvdGFsTG9naWNhbFdp
ZHRoID0gbG9naWNhbE9mZnNldE9uTGluZTsKLSAgICAgICAgZm9yIChhdXRvKiBjdXJyID0gJm1f
aW5saW5lQm94OyBjdXJyOyBjdXJyID0gY3Vyci0+bmV4dExpbmVCb3goKSkKLSAgICAgICAgICAg
IHRvdGFsTG9naWNhbFdpZHRoICs9IGN1cnItPmxvZ2ljYWxXaWR0aCgpOworICAgICAgICBmb3Ig
KGF1dG8gYm94ID0gbV9pbmxpbmVCb3guaXRlcmF0b3IoKTsgYm94OyBib3gudHJhdmVyc2VOZXh0
SW5saW5lQm94KCkpCisgICAgICAgICAgICB0b3RhbExvZ2ljYWxXaWR0aCArPSBib3gtPmxvZ2lj
YWxXaWR0aCgpOwogICAgIH0gZWxzZSB7Ci0gICAgICAgIGZvciAoYXV0byogY3VyciA9IG1faW5s
aW5lQm94Lm5leHRMaW5lQm94KCk7IGN1cnI7IGN1cnIgPSBjdXJyLT5uZXh0TGluZUJveCgpKQot
ICAgICAgICAgICAgbG9naWNhbE9mZnNldE9uTGluZSArPSBjdXJyLT5sb2dpY2FsV2lkdGgoKTsK
KyAgICAgICAgZm9yIChhdXRvIGJveCA9IG1faW5saW5lQm94Lm5leHRJbmxpbmVCb3goKTsgYm94
OyBib3gudHJhdmVyc2VOZXh0SW5saW5lQm94KCkpCisgICAgICAgICAgICBsb2dpY2FsT2Zmc2V0
T25MaW5lICs9IGJveC0+bG9naWNhbFdpZHRoKCk7CiAgICAgICAgIHRvdGFsTG9naWNhbFdpZHRo
ID0gbG9naWNhbE9mZnNldE9uTGluZTsKLSAgICAgICAgZm9yIChhdXRvKiBjdXJyID0gJm1faW5s
aW5lQm94OyBjdXJyOyBjdXJyID0gY3Vyci0+cHJldkxpbmVCb3goKSkKLSAgICAgICAgICAgIHRv
dGFsTG9naWNhbFdpZHRoICs9IGN1cnItPmxvZ2ljYWxXaWR0aCgpOworICAgICAgICBmb3IgKGF1
dG8gYm94ID0gbV9pbmxpbmVCb3guaXRlcmF0b3IoKTsgYm94OyBib3gudHJhdmVyc2VQcmV2aW91
c0lubGluZUJveCgpKQorICAgICAgICAgICAgdG90YWxMb2dpY2FsV2lkdGggKz0gYm94LT5sb2dp
Y2FsV2lkdGgoKTsKICAgICB9CiAgICAgTGF5b3V0VW5pdCBzdHJpcFggPSByZWN0LngoKSAtIChp
c0hvcml6b250YWwoKSA/IGxvZ2ljYWxPZmZzZXRPbkxpbmUgOiAwX2x1KTsKICAgICBMYXlvdXRV
bml0IHN0cmlwWSA9IHJlY3QueSgpIC0gKGlzSG9yaXpvbnRhbCgpID8gMF9sdSA6IGxvZ2ljYWxP
ZmZzZXRPbkxpbmUpOwotICAgIExheW91dFVuaXQgc3RyaXBXaWR0aCA9IGlzSG9yaXpvbnRhbCgp
ID8gdG90YWxMb2dpY2FsV2lkdGggOiBMYXlvdXRVbml0KG1faW5saW5lQm94LndpZHRoKCkpOwot
ICAgIExheW91dFVuaXQgc3RyaXBIZWlnaHQgPSBpc0hvcml6b250YWwoKSA/IExheW91dFVuaXQo
bV9pbmxpbmVCb3guaGVpZ2h0KCkpIDogdG90YWxMb2dpY2FsV2lkdGg7CisgICAgTGF5b3V0VW5p
dCBzdHJpcFdpZHRoID0gaXNIb3Jpem9udGFsKCkgPyB0b3RhbExvZ2ljYWxXaWR0aCA6IExheW91
dFVuaXQobV9pbmxpbmVCb3gucmVjdCgpLndpZHRoKCkpOworICAgIExheW91dFVuaXQgc3RyaXBI
ZWlnaHQgPSBpc0hvcml6b250YWwoKSA/IExheW91dFVuaXQobV9pbmxpbmVCb3gucmVjdCgpLmhl
aWdodCgpKSA6IHRvdGFsTG9naWNhbFdpZHRoOwogCiAgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVT
YXZlciBzdGF0ZVNhdmVyKG1fcGFpbnRJbmZvLmNvbnRleHQoKSk7Ci0gICAgbV9wYWludEluZm8u
Y29udGV4dCgpLmNsaXAoeyByZWN0LngoKSwgcmVjdC55KCksIExheW91dFVuaXQobV9pbmxpbmVC
b3gud2lkdGgoKSksIExheW91dFVuaXQobV9pbmxpbmVCb3guaGVpZ2h0KCkpIH0pOwotICAgIHJl
bmRlcmVyKCkucGFpbnRGaWxsTGF5ZXJFeHRlbmRlZChtX3BhaW50SW5mbywgY29sb3IsIGZpbGxM
YXllciwgTGF5b3V0UmVjdChzdHJpcFgsIHN0cmlwWSwgc3RyaXBXaWR0aCwgc3RyaXBIZWlnaHQp
LCBCYWNrZ3JvdW5kQmxlZWROb25lLCAmbV9pbmxpbmVCb3gsIHJlY3Quc2l6ZSgpLCBvcCk7Cisg
ICAgbV9wYWludEluZm8uY29udGV4dCgpLmNsaXAoeyByZWN0LngoKSwgcmVjdC55KCksIExheW91
dFVuaXQobV9pbmxpbmVCb3gucmVjdCgpLndpZHRoKCkpLCBMYXlvdXRVbml0KG1faW5saW5lQm94
LnJlY3QoKS5oZWlnaHQoKSkgfSk7CisgICAgcmVuZGVyZXIoKS5wYWludEZpbGxMYXllckV4dGVu
ZGVkKG1fcGFpbnRJbmZvLCBjb2xvciwgZmlsbExheWVyLCBMYXlvdXRSZWN0KHN0cmlwWCwgc3Ry
aXBZLCBzdHJpcFdpZHRoLCBzdHJpcEhlaWdodCksIEJhY2tncm91bmRCbGVlZE5vbmUsIG1faW5s
aW5lQm94LmxlZ2FjeUlubGluZUJveCgpLCByZWN0LnNpemUoKSwgb3ApOwogfQogCiB2b2lkIElu
bGluZUJveFBhaW50ZXI6OnBhaW50Qm94U2hhZG93KFNoYWRvd1N0eWxlIHNoYWRvd1N0eWxlLCBj
b25zdCBMYXlvdXRSZWN0JiBwYWludFJlY3QpCiB7Ci0gICAgYm9vbCBoYXNTaW5nbGVMaW5lID0g
IW1faW5saW5lQm94LnByZXZMaW5lQm94KCkgJiYgIW1faW5saW5lQm94Lm5leHRMaW5lQm94KCk7
CisgICAgYm9vbCBoYXNTaW5nbGVMaW5lID0gIW1faW5saW5lQm94LnByZXZpb3VzSW5saW5lQm94
KCkgJiYgIW1faW5saW5lQm94Lm5leHRJbmxpbmVCb3goKTsKICAgICBpZiAoaGFzU2luZ2xlTGlu
ZSB8fCBtX2lzUm9vdElubGluZUJveCkgewogICAgICAgICByZW5kZXJlcigpLnBhaW50Qm94U2hh
ZG93KG1fcGFpbnRJbmZvLCBwYWludFJlY3QsIHN0eWxlKCksIHNoYWRvd1N0eWxlKTsKICAgICAg
ICAgcmV0dXJuOwpAQCAtMzQzLDIzICszNDQsMjMgQEAgdm9pZCBJbmxpbmVCb3hQYWludGVyOjpw
YWludEJveFNoYWRvdyhTaGFkb3dTdHlsZSBzaGFkb3dTdHlsZSwgY29uc3QgTGF5b3V0UmVjdCYK
IAogICAgIC8vIEZJWE1FOiBXZSBjYW4gZG8gYmV0dGVyIGhlcmUgaW4gdGhlIG11bHRpLWxpbmUg
Y2FzZS4gV2Ugd2FudCB0byBwdXNoIGEgY2xpcCBzbyB0aGF0IHRoZSBzaGFkb3cgZG9lc24ndAog
ICAgIC8vIHByb3RydWRlIGluY29ycmVjdGx5IGF0IHRoZSBlZGdlcywgYW5kIHdlIHdhbnQgdG8g
cG9zc2libHkgaW5jbHVkZSBzaGFkb3dzIGNhc3QgZnJvbSB0aGUgcHJldmlvdXMvZm9sbG93aW5n
IGxpbmVzCi0gICAgcmVuZGVyZXIoKS5wYWludEJveFNoYWRvdyhtX3BhaW50SW5mbywgcGFpbnRS
ZWN0LCBzdHlsZSgpLCBzaGFkb3dTdHlsZSwgbV9pbmxpbmVCb3guaW5jbHVkZUxvZ2ljYWxMZWZ0
RWRnZSgpLCBtX2lubGluZUJveC5pbmNsdWRlTG9naWNhbFJpZ2h0RWRnZSgpKTsKKyAgICByZW5k
ZXJlcigpLnBhaW50Qm94U2hhZG93KG1fcGFpbnRJbmZvLCBwYWludFJlY3QsIHN0eWxlKCksIHNo
YWRvd1N0eWxlLCBtX2lubGluZUJveC5sZWdhY3lJbmxpbmVCb3goKS0+aW5jbHVkZUxvZ2ljYWxM
ZWZ0RWRnZSgpLCBtX2lubGluZUJveC5sZWdhY3lJbmxpbmVCb3goKS0+aW5jbHVkZUxvZ2ljYWxS
aWdodEVkZ2UoKSk7CiB9CiAKIHZvaWQgSW5saW5lQm94UGFpbnRlcjo6Y29uc3RyYWluVG9MaW5l
VG9wQW5kQm90dG9tSWZOZWVkZWQoTGF5b3V0UmVjdCYgcmVjdCkgY29uc3QKIHsKICAgICBpZiAo
cmVuZGVyZXIoKS5kb2N1bWVudCgpLmluTm9RdWlya3NNb2RlKCkpCiAgICAgICAgIHJldHVybjsK
LSAgICBpZiAobV9pbmxpbmVCb3guaGFzVGV4dENoaWxkcmVuKCkpCisgICAgaWYgKG1faW5saW5l
Qm94LmxlZ2FjeUlubGluZUJveCgpLT5oYXNUZXh0Q2hpbGRyZW4oKSkKICAgICAgICAgcmV0dXJu
OwotICAgIGlmIChtX2lubGluZUJveC5kZXNjZW5kYW50c0hhdmVTYW1lTGluZUhlaWdodEFuZEJh
c2VsaW5lKCkgJiYgbV9pbmxpbmVCb3guaGFzVGV4dERlc2NlbmRhbnRzKCkpCisgICAgaWYgKG1f
aW5saW5lQm94LmxlZ2FjeUlubGluZUJveCgpLT5kZXNjZW5kYW50c0hhdmVTYW1lTGluZUhlaWdo
dEFuZEJhc2VsaW5lKCkgJiYgbV9pbmxpbmVCb3gubGVnYWN5SW5saW5lQm94KCktPmhhc1RleHRE
ZXNjZW5kYW50cygpKQogICAgICAgICByZXR1cm47CiAKICAgICBMYXlvdXRVbml0IGxvZ2ljYWxU
b3AgPSBpc0hvcml6b250YWwoKSA/IHJlY3QueSgpIDogcmVjdC54KCk7CiAgICAgTGF5b3V0VW5p
dCBsb2dpY2FsSGVpZ2h0ID0gaXNIb3Jpem9udGFsKCkgPyByZWN0LmhlaWdodCgpIDogcmVjdC53
aWR0aCgpOwogCi0gICAgTGF5b3V0VW5pdCBib3R0b20gPSBzdGQ6Om1pbihtX2lubGluZUJveC5y
b290KCkubGluZUJvdHRvbSgpLCBsb2dpY2FsVG9wICsgbG9naWNhbEhlaWdodCk7Ci0gICAgbG9n
aWNhbFRvcCA9IHN0ZDo6bWF4KG1faW5saW5lQm94LnJvb3QoKS5saW5lVG9wKCksIGxvZ2ljYWxU
b3ApOworICAgIExheW91dFVuaXQgYm90dG9tID0gc3RkOjptaW4obV9pbmxpbmVCb3gubGluZSgp
LT5ib3R0b20oKSwgbG9naWNhbFRvcCArIGxvZ2ljYWxIZWlnaHQpOworICAgIGxvZ2ljYWxUb3Ag
PSBzdGQ6Om1heChtX2lubGluZUJveC5saW5lKCktPnRvcCgpLCBsb2dpY2FsVG9wKTsKICAgICBs
b2dpY2FsSGVpZ2h0ID0gYm90dG9tIC0gbG9naWNhbFRvcDsKICAgICBpZiAoaXNIb3Jpem9udGFs
KCkpIHsKICAgICAgICAgcmVjdC5zZXRZKGxvZ2ljYWxUb3ApOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZUJveFBhaW50ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9JbmxpbmVCb3hQYWludGVyLmgKaW5kZXggODJjZjJhNTIzNjBiZDVmMGE1NTQ3M2Q5
ODY3ZDZkNjg4ODA5NzM5Ni4uZjA5NTIzNTQyY2I2NWZmMWU1NTJhYmQ2NmY4NzMxNjlmMjE2NTBk
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZUJveFBhaW50ZXIu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lQm94UGFpbnRlci5oCkBAIC0y
Niw2ICsyNiw3IEBACiAKICNpbmNsdWRlICJGbG9hdFJlY3QuaCIKICNpbmNsdWRlICJHcmFwaGlj
c1R5cGVzLmgiCisjaW5jbHVkZSAiSW5saW5lSXRlcmF0b3JJbmxpbmVCb3guaCIKICNpbmNsdWRl
ICJMYXlvdXRSZWN0LmgiCiAjaW5jbHVkZSAiU2hhZG93RGF0YS5oIgogCkBAIC01OSw3ICs2MCw3
IEBAIHByaXZhdGU6CiAgICAgUmVuZGVyQm94TW9kZWxPYmplY3QmIHJlbmRlcmVyKCkgY29uc3Qg
eyByZXR1cm4gY29uc3RfY2FzdDxSZW5kZXJCb3hNb2RlbE9iamVjdCY+KG1fcmVuZGVyZXIpOyB9
CiAgICAgYm9vbCBpc0hvcml6b250YWwoKSBjb25zdCB7IHJldHVybiBtX2lzSG9yaXpvbnRhbDsg
fQogCi0gICAgY29uc3QgTGVnYWN5SW5saW5lRmxvd0JveCYgbV9pbmxpbmVCb3g7CisgICAgY29u
c3QgSW5saW5lSXRlcmF0b3I6OklubGluZUJveCBtX2lubGluZUJveDsKICAgICBQYWludEluZm8m
IG1fcGFpbnRJbmZvOwogICAgIGNvbnN0IExheW91dFBvaW50IG1fcGFpbnRPZmZzZXQ7CiAgICAg
Y29uc3QgUmVuZGVyQm94TW9kZWxPYmplY3QmIG1fcmVuZGVyZXI7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>440216</attachid>
            <date>2021-10-05 08:22:25 -0700</date>
            <delta_ts>2021-10-05 09:47:09 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-231233-20211005182223.patch</filename>
            <type>text/plain</type>
            <size>41212</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgzNTQ4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNGVlZDVlYWMxYjQxMjE2
ODAzYmUyMjhhNjY1MGRiMjAwMGVhNjIwMC4uN2I4YjlkMjFlZDZiNGYwZWYwZDgyMzRiZmRiNzdm
ZGU3MGFkYjhhOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU3IEBACisyMDIxLTEwLTA1ICBBbnR0
aSBLb2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KKworICAgICAgICBbTEZDXVtJbnRlZ3JhdGlv
bl0gSW50cm9kdWNlIElubGluZUJveEl0ZXJhdG9yCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzEyMzMKKworICAgICAgICBSZXZpZXdlZCBieSBBbGFu
IEJ1anRhcy4KKworICAgICAgICBBbmQgdXNlIGl0IGluIElubGluZUJveFBhaW50ZXIuCisKKyAg
ICAgICAgVGhlIGFkb3B0aW9uIGlzIHN0aWxsIGluY29tcGxldGUgaGVyZSBzbyBvbmx5IHRoZSBs
ZWdhY3kgcGF0aCBpcyBjb3ZlcmVkLgorCisgICAgICAgICogU291cmNlcy50eHQ6CisgICAgICAg
ICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGxheW91dC9p
bnRlZ3JhdGlvbi9JbmxpbmVJdGVyYXRvckJveC5oOgorICAgICAgICAoV2ViQ29yZTo6SW5saW5l
SXRlcmF0b3I6OkJveDo6aXNJbmxpbmVCb3ggY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6SW5s
aW5lSXRlcmF0b3I6OkJveDo6aXNSb290SW5saW5lQm94IGNvbnN0KToKKyAgICAgICAgKiBsYXlv
dXQvaW50ZWdyYXRpb24vSW5saW5lSXRlcmF0b3JCb3hMZWdhY3lQYXRoLmg6CisgICAgICAgIChX
ZWJDb3JlOjpJbmxpbmVJdGVyYXRvcjo6Qm94TGVnYWN5UGF0aDo6aXNJbmxpbmVCb3ggY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lSXRlcmF0b3I6OkJveExlZ2FjeVBhdGg6OmlzUm9v
dElubGluZUJveCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVJdGVyYXRvcjo6Qm94
TGVnYWN5UGF0aDo6dHJhdmVyc2VOZXh0SW5saW5lQm94KToKKyAgICAgICAgKFdlYkNvcmU6Oklu
bGluZUl0ZXJhdG9yOjpCb3hMZWdhY3lQYXRoOjp0cmF2ZXJzZVByZXZpb3VzSW5saW5lQm94KToK
KyAgICAgICAgKFdlYkNvcmU6OklubGluZUl0ZXJhdG9yOjpCb3hMZWdhY3lQYXRoOjppbmxpbmVG
bG93Qm94IGNvbnN0KToKKyAgICAgICAgKiBsYXlvdXQvaW50ZWdyYXRpb24vSW5saW5lSXRlcmF0
b3JCb3hNb2Rlcm5QYXRoLmg6CisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVJdGVyYXRvcjo6Qm94
TW9kZXJuUGF0aDo6aXNJbmxpbmVCb3ggY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6SW5saW5l
SXRlcmF0b3I6OkJveE1vZGVyblBhdGg6OmlzUm9vdElubGluZUJveCBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpJbmxpbmVJdGVyYXRvcjo6Qm94TW9kZXJuUGF0aDo6dHJhdmVyc2VOZXh0SW5s
aW5lQm94KToKKyAgICAgICAgKFdlYkNvcmU6OklubGluZUl0ZXJhdG9yOjpCb3hNb2Rlcm5QYXRo
Ojp0cmF2ZXJzZVByZXZpb3VzSW5saW5lQm94KToKKyAgICAgICAgKiBsYXlvdXQvaW50ZWdyYXRp
b24vSW5saW5lSXRlcmF0b3JJbmxpbmVCb3guY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OklubGluZUl0ZXJhdG9yOjpJbmxpbmVCb3g6OklubGluZUJveCk6CisgICAgICAgIChXZWJDb3Jl
OjpJbmxpbmVJdGVyYXRvcjo6SW5saW5lQm94OjpuZXh0SW5saW5lQm94IGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OklubGluZUl0ZXJhdG9yOjpJbmxpbmVCb3g6OnByZXZpb3VzSW5saW5lQm94
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OklubGluZUl0ZXJhdG9yOjpJbmxpbmVCb3hJdGVy
YXRvcjo6SW5saW5lQm94SXRlcmF0b3IpOgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lSXRlcmF0
b3I6OklubGluZUJveEl0ZXJhdG9yOjp0cmF2ZXJzZU5leHRJbmxpbmVCb3gpOgorICAgICAgICAo
V2ViQ29yZTo6SW5saW5lSXRlcmF0b3I6OklubGluZUJveEl0ZXJhdG9yOjp0cmF2ZXJzZVByZXZp
b3VzSW5saW5lQm94KToKKyAgICAgICAgKFdlYkNvcmU6OklubGluZUl0ZXJhdG9yOjppbmxpbmVC
b3hGb3IpOgorICAgICAgICAqIGxheW91dC9pbnRlZ3JhdGlvbi9JbmxpbmVJdGVyYXRvcklubGlu
ZUJveC5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OklubGluZUl0ZXJhdG9yOjpJbmxpbmVC
b3g6OnJlbmRlcmVyIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OklubGluZUl0ZXJhdG9yOjpJ
bmxpbmVCb3g6OmxlZ2FjeUlubGluZUJveCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpJbmxp
bmVJdGVyYXRvcjo6SW5saW5lQm94SXRlcmF0b3I6OklubGluZUJveEl0ZXJhdG9yKToKKyAgICAg
ICAgKFdlYkNvcmU6OklubGluZUl0ZXJhdG9yOjpJbmxpbmVCb3hJdGVyYXRvcjo6b3BlcmF0b3Iq
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OklubGluZUl0ZXJhdG9yOjpJbmxpbmVCb3hJdGVy
YXRvcjo6b3BlcmF0b3ItPiBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVJdGVyYXRv
cjo6SW5saW5lQm94SXRlcmF0b3I6OmdldCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpJbmxp
bmVJdGVyYXRvcjo6SW5saW5lQm94OjppdGVyYXRvciBjb25zdCk6CisgICAgICAgIChpc1R5cGUp
OgorICAgICAgICAqIHJlbmRlcmluZy9JbmxpbmVCb3hQYWludGVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OklubGluZUJveFBhaW50ZXI6OklubGluZUJveFBhaW50ZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6Y2xpcFJlY3RGb3JOaW5lUGllY2VJbWFnZVN0cmlwKToKKyAgICAgICAgKFdlYkNvcmU6
OklubGluZUJveFBhaW50ZXI6OnBhaW50TWFzayk6CisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVC
b3hQYWludGVyOjpwYWludERlY29yYXRpb25zKToKKyAgICAgICAgKFdlYkNvcmU6OklubGluZUJv
eFBhaW50ZXI6OnBhaW50RmlsbExheWVyKToKKyAgICAgICAgKFdlYkNvcmU6OklubGluZUJveFBh
aW50ZXI6OnBhaW50Qm94U2hhZG93KToKKyAgICAgICAgKFdlYkNvcmU6OklubGluZUJveFBhaW50
ZXI6OmNvbnN0cmFpblRvTGluZVRvcEFuZEJvdHRvbUlmTmVlZGVkIGNvbnN0KToKKyAgICAgICAg
KiByZW5kZXJpbmcvSW5saW5lQm94UGFpbnRlci5oOgorCiAyMDIxLTEwLTA1ICBDaHJpcyBMb3Jk
ICA8Y2xvcmRAaWdhbGlhLmNvbT4KIAogICAgICAgICBbR1RLXVtXUEVdIFJFR1JFU1NJT046IEFz
eW5jIHNjcm9sbGluZyBqdW1wcyB0byB0aGUgdG9wIG9mIHRoZSBwYWdlIHVudGlsIGtleWJvYXJk
LWluaXRpYXRlZCBwYWdpbmcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0
IGIvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKaW5kZXggNmI2ZDk0MjFiNzFlNDQyNjhjYjYw
MDc4OTUwYzEwNTU1YTYyZDVmYS4uMWVmZjZhZWIzOWJhMDJhNzM1ZjIxNGMzNGZkNzBjMTAzM2U5
M2YxMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKKysrIGIvU291cmNl
L1dlYkNvcmUvU291cmNlcy50eHQKQEAgLTE1MTEsNiArMTUxMSw3IEBAIGxheW91dC9mb3JtYXR0
aW5nQ29udGV4dHMvaW5saW5lL0lubGluZVRleHRJdGVtLmNwcAogbGF5b3V0L2Zvcm1hdHRpbmdD
b250ZXh0cy9pbmxpbmUvaW52YWxpZGF0aW9uL0lubGluZUludmFsaWRhdGlvbi5jcHAKIGxheW91
dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL3RleHQvVGV4dFV0aWwuY3BwCiBsYXlvdXQvaW50
ZWdyYXRpb24vSW5saW5lSXRlcmF0b3JCb3guY3BwCitsYXlvdXQvaW50ZWdyYXRpb24vSW5saW5l
SXRlcmF0b3JJbmxpbmVCb3guY3BwCiBsYXlvdXQvaW50ZWdyYXRpb24vSW5saW5lSXRlcmF0b3JM
aW5lLmNwcAogbGF5b3V0L2ludGVncmF0aW9uL0lubGluZUl0ZXJhdG9yVGV4dEJveC5jcHAKIGxh
eW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3JhdGlvbkJveFRyZWUuY3BwCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggZWFkMDA1
MDA5NTUyNDFmZDg3YmQzOGNkNjM0MjFlMDI1OGY5NmE5ZS4uNjE0YzNkNzBjMmNiMTNkZmMxYzIw
Y2IyNjA4NTI2NzBmNGVkN2U1YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtNTIxMCw2ICs1MjEwLDcgQEAKIAkJRTQwMUUwQTQx
QzNDMEI4MzAwRjM0RDEwIC8qIFN0eWxlQ2hhbmdlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFNDAxRTBBMzFDM0MwQjgzMDBGMzREMTAgLyogU3R5bGVD
aGFuZ2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQlFNDAzQjdBMjI1MUIxMTkzMDAxOUU4MDAgLyogTGF5b3V0SW50ZWdyYXRpb25Db3ZlcmFnZS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTQwM0I3QTEy
NTFCMTE5MzAwMTlFODAwIC8qIExheW91dEludGVncmF0aW9uQ292ZXJhZ2UuaCAqLzsgfTsKIAkJ
RTQwM0I3QTMyNTFCMTFDMTAwMTlFODAwIC8qIExheW91dEludGVncmF0aW9uUGFnaW5hdGlvbi5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTQzMTJBQjcy
NEIzMjY1NjAwNjc4MzQ5IC8qIExheW91dEludGVncmF0aW9uUGFnaW5hdGlvbi5oICovOyB9Owor
CQlFNDE1RUIxMzI3MEMzNTEzMDBFOERBMUIgLyogSW5saW5lSXRlcmF0b3JJbmxpbmVCb3guaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU0MTVFQjExMjcw
QzM1MTIwMEU4REExQiAvKiBJbmxpbmVJdGVyYXRvcklubGluZUJveC5oICovOyB9OwogCQlFNDE4
MDI1NTIzRDQ1NDlCMDBGRkIwNzEgLyogTGF5b3V0SW50ZWdyYXRpb25Cb3hUcmVlLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFNDE4MDI1MzIzRDQ1NDlB
MDBGRkIwNzEgLyogTGF5b3V0SW50ZWdyYXRpb25Cb3hUcmVlLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRTQxOTA0MUYxQ0M2NDg2QjAwQzM1RjVE
IC8qIEZvbnRTZWxlY3RvckNsaWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gRTQxOTA0MUUxQ0M2NDg2QjAwQzM1RjVEIC8qIEZvbnRTZWxlY3RvckNs
aWVudC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJ
CUU0MjA1MDE3MjE0MTkwMUIwMDY2RUYzQiAvKiBQcm9jZXNzV2FybWluZy5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTQyMDUwMTQyMTQxOTAxQTAwNjZF
RjNCIC8qIFByb2Nlc3NXYXJtaW5nLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKQEAgLTUyNzEsOCArNTI3Miw4IEBACiAJCUU0N0MzOTMyMUZFNkUxMDUw
MEJCQkM2QiAvKiBSZW5kZXJUcmVlQnVpbGRlckxpc3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU0N0MzOTI4MUZFNkUwREQwMEJCQkM2QiAvKiBSZW5k
ZXJUcmVlQnVpbGRlckxpc3QuaCAqLzsgfTsKIAkJRTQ3QzM5MzMxRkU2RTEwODAwQkJCQzZCIC8q
IFJlbmRlclRyZWVCdWlsZGVyTXVsdGlDb2x1bW4uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU0N0MzOTI3MUZFNkUwREMwMEJCQkM2QiAvKiBSZW5kZXJU
cmVlQnVpbGRlck11bHRpQ29sdW1uLmggKi87IH07CiAJCUU0N0NFQkM5MjcwNkVGNTIwMEI4RDhG
NSAvKiBJbmxpbmVXYWxrZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEU0N0NFQkM3MjcwNkVGNTEwMEI4RDhGNSAvKiBJbmxpbmVXYWxrZXIuaCAqLzsg
fTsKLQkJRTQ3Q0VCRUEyNzA5REZEMTAwQjhEOEY1IC8qIFJ1bGVTZXRCdWlsZGVyLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFNDdDRUJFODI3MDlERkQw
MDBCOEQ4RjUgLyogUnVsZVNldEJ1aWxkZXIuaCAqLzsgfTsKIAkJRTQ3Q0VCRTEyNzA5OTE2RDAw
QjhEOEY1IC8qIElubGluZUl0ZXJhdG9yVGV4dEJveC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTQ3Q0VCRTAyNzA5OTE2RDAwQjhEOEY1IC8qIElubGlu
ZUl0ZXJhdG9yVGV4dEJveC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CisJCUU0N0NFQkVBMjcwOURGRDEwMEI4RDhGNSAvKiBSdWxlU2V0QnVpbGRlci5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTQ3Q0VCRTgy
NzA5REZEMDAwQjhEOEY1IC8qIFJ1bGVTZXRCdWlsZGVyLmggKi87IH07CiAJCUU0N0UyNzY1MTYw
MzZFRDIwMEVFMkFGQiAvKiBFeHRlbnNpb25TdHlsZVNoZWV0cy5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTQ3RTI3NjQxNjAzNkVEMjAwRUUyQUZCIC8q
IEV4dGVuc2lvblN0eWxlU2hlZXRzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKIAkJRTQ3RkM4QTMyNUI4NEQ3MjAwNTQ5NUZDIC8qIExvYWRTY2hlZHVs
aW5nTW9kZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
RTQ3RkM4QTEyNUI4NEQ3MTAwNTQ5NUZDIC8qIExvYWRTY2hlZHVsaW5nTW9kZS5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUU0ODEzN0I5MURCM0I1
MjYwMDVDNTlCRiAvKiBTdHlsZVZhbGlkaXR5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBFNDgxMzdCODFEQjNCNTI2MDA1QzU5QkYgLyogU3R5bGVWYWxp
ZGl0eS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBA
IC0xNjQyNiw2ICsxNjQyNyw4IEBACiAJCUU0MDNCNzlGMjUxQjExOEIwMDE5RTgwMCAvKiBMYXlv
dXRJbnRlZ3JhdGlvbkNvdmVyYWdlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IExheW91dEludGVn
cmF0aW9uQ292ZXJhZ2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFNDAzQjdB
MTI1MUIxMTkzMDAxOUU4MDAgLyogTGF5b3V0SW50ZWdyYXRpb25Db3ZlcmFnZS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBMYXlvdXRJbnRlZ3JhdGlvbkNvdmVyYWdlLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUU0MDZGM0ZCMTE5ODMwN0QwMDlENTlENiAvKiBD
b2xvckRhdGEuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gQ29sb3JE
YXRhLmNwcDsgcGF0aCA9IERlcml2ZWRTb3VyY2VzL1dlYkNvcmUvQ29sb3JEYXRhLmNwcDsgc291
cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKKwkJRTQxNUVCMTEyNzBDMzUxMjAwRThE
QTFCIC8qIElubGluZUl0ZXJhdG9ySW5saW5lQm94LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IElubGluZUl0ZXJhdG9ySW5saW5lQm94Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCUU0MTVFQjE0MjcwQzM1MzcwMEU4REExQiAvKiBJbmxpbmVJdGVyYXRvcklubGlu
ZUJveC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbmxpbmVJdGVyYXRvcklubGluZUJveC5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUU0MTgwMjUzMjNENDU0OUEwMEZGQjA3MSAv
KiBMYXlvdXRJbnRlZ3JhdGlvbkJveFRyZWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gTGF5b3V0SW50ZWdyYXRpb25Cb3hUcmVlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUU0MTgwMjU2MjNENDU0QjUwMEZGQjA3MSAvKiBMYXlvdXRJbnRlZ3JhdGlvbkJveFRy
ZWUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTGF5b3V0SW50ZWdyYXRpb25Cb3hUcmVlLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTQxOTA0MUUxQ0M2NDg2QjAwQzM1RjVEIC8q
IEZvbnRTZWxlY3RvckNsaWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBG
b250U2VsZWN0b3JDbGllbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE2NTM0
LDEwICsxNjUzNywxMCBAQAogCQlFNDdDMzkyQjFGRTZFMERGMDBCQkJDNkIgLyogUmVuZGVyVHJl
ZUJ1aWxkZXJMaXN0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJl
bmRlclRyZWVCdWlsZGVyTGlzdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUU0
N0MzOTJDMUZFNkUwREYwMEJCQkM2QiAvKiBSZW5kZXJUcmVlVXBkYXRlci5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBSZW5kZXJUcmVlVXBkYXRlci5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlFNDdDRUJDNzI3MDZFRjUxMDBCOEQ4RjUgLyogSW5saW5lV2Fsa2Vy
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IElubGluZVdhbGtlci5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlFNDdDRUJFODI3MDlERkQwMDBCOEQ4RjUgLyogUnVs
ZVNldEJ1aWxkZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUnVsZVNldEJ1
aWxkZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRTQ3Q0VCRUIyNzA5REZEQzAw
QjhEOEY1IC8qIFJ1bGVTZXRCdWlsZGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJ1bGVTZXRC
dWlsZGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTQ3Q0VCREUyNzA5OTE2
NDAwQjhEOEY1IC8qIElubGluZUl0ZXJhdG9yVGV4dEJveC5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBJbmxpbmVJdGVyYXRvclRleHRCb3guY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlFNDdDRUJFMDI3MDk5MTZEMDBCOEQ4RjUgLyogSW5saW5lSXRlcmF0b3JUZXh0Qm94LmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IElubGluZUl0ZXJhdG9yVGV4dEJveC5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFNDdDRUJFODI3MDlERkQwMDBCOEQ4RjUgLyog
UnVsZVNldEJ1aWxkZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUnVsZVNl
dEJ1aWxkZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTQ3Q0VCRUIyNzA5REZE
QzAwQjhEOEY1IC8qIFJ1bGVTZXRCdWlsZGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJ1bGVT
ZXRCdWlsZGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTQ3RTI3NjQxNjAz
NkVEMjAwRUUyQUZCIC8qIEV4dGVuc2lvblN0eWxlU2hlZXRzLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IEV4dGVuc2lvblN0eWxlU2hlZXRzLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUU0N0UyNzY3MTYwMzZFREMwMEVFMkFGQiAvKiBFeHRlbnNpb25TdHlsZVNo
ZWV0cy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBFeHRlbnNpb25T
dHlsZVNoZWV0cy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUU0N0ZDOEExMjVC
ODRENzEwMDU0OTVGQyAvKiBMb2FkU2NoZWR1bGluZ01vZGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gTG9hZFNjaGVkdWxpbmdNb2RlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CkBAIC0yOTUwNiw2ICsyOTUwOSw4IEBACiAJCQkJRTRBNjY0QzYyNTIxQjc3ODAwNzA4
MURDIC8qIElubGluZUl0ZXJhdG9yQm94LmggKi8sCiAJCQkJRTRBNjY0QzUyNTIxQjc3ODAwNzA4
MURDIC8qIElubGluZUl0ZXJhdG9yQm94TGVnYWN5UGF0aC5oICovLAogCQkJCUU0QTY2NEM0MjUy
MUI3NzcwMDcwODFEQyAvKiBJbmxpbmVJdGVyYXRvckJveE1vZGVyblBhdGguaCAqLywKKwkJCQlF
NDE1RUIxNDI3MEMzNTM3MDBFOERBMUIgLyogSW5saW5lSXRlcmF0b3JJbmxpbmVCb3guY3BwICov
LAorCQkJCUU0MTVFQjExMjcwQzM1MTIwMEU4REExQiAvKiBJbmxpbmVJdGVyYXRvcklubGluZUJv
eC5oICovLAogCQkJCUU0RDMzRjQyMjUyQzUwQTgwMDgzN0QwNSAvKiBJbmxpbmVJdGVyYXRvckxp
bmUuY3BwICovLAogCQkJCUU0RDMzRjNGMjUyQzRCODIwMDgzN0QwNSAvKiBJbmxpbmVJdGVyYXRv
ckxpbmUuaCAqLywKIAkJCQlFNEQzM0Y0MzI1MkM1MEUyMDA4MzdEMDUgLyogSW5saW5lSXRlcmF0
b3JMaW5lTGVnYWN5UGF0aC5oICovLApAQCAtMzMwMjgsNiArMzMwMzMsNyBAQAogCQkJCUU0QTY2
NENDMjUyMUQ0QUYwMDcwODFEQyAvKiBJbmxpbmVJdGVyYXRvckJveC5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJRTRBNjY0Q0YyNTIxRDRFMjAwNzA4MURDIC8qIElubGluZUl0ZXJhdG9yQm94TGVnYWN5
UGF0aC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTRBNjY0Q0UyNTIxRDRDOTAwNzA4MURDIC8qIElu
bGluZUl0ZXJhdG9yQm94TW9kZXJuUGF0aC5oIGluIEhlYWRlcnMgKi8sCisJCQkJRTQxNUVCMTMy
NzBDMzUxMzAwRThEQTFCIC8qIElubGluZUl0ZXJhdG9ySW5saW5lQm94LmggaW4gSGVhZGVycyAq
LywKIAkJCQlFNEQzM0Y0MTI1MkM0QjgzMDA4MzdEMDUgLyogSW5saW5lSXRlcmF0b3JMaW5lLmgg
aW4gSGVhZGVycyAqLywKIAkJCQlFNEQzM0Y0NDI1MkM1MEUyMDA4MzdEMDUgLyogSW5saW5lSXRl
cmF0b3JMaW5lTGVnYWN5UGF0aC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTREMzNGNDYyNTJDNTBG
QzAwODM3RDA1IC8qIElubGluZUl0ZXJhdG9yTGluZU1vZGVyblBhdGguaCBpbiBIZWFkZXJzICov
LApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0lubGluZUl0
ZXJhdG9yQm94LmggYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vSW5saW5lSXRl
cmF0b3JCb3guaAppbmRleCBhZmFlNTIwZjI3ZTc2OTA4Y2ExNjI3NTMxMWQ1YzMzNzVkN2FkYzhi
Li42NmZhMTdhZGY3YWRjZjIwMWRkZmFjNzc3Yzg2OWM0M2UwMGNjYTMwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vSW5saW5lSXRlcmF0b3JCb3guaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vSW5saW5lSXRlcmF0b3JCb3guaApA
QCAtNTcsNiArNTcsOCBAQCBwdWJsaWM6CiAgICAgQm94KFBhdGhWYXJpYW50JiYpOwogCiAgICAg
Ym9vbCBpc1RleHQoKSBjb25zdDsKKyAgICBib29sIGlzSW5saW5lQm94KCkgY29uc3Q7CisgICAg
Ym9vbCBpc1Jvb3RJbmxpbmVCb3goKSBjb25zdDsKIAogICAgIEZsb2F0UmVjdCByZWN0KCkgY29u
c3Q7CiAKQEAgLTEwMCw2ICsxMDIsNyBAQCBwdWJsaWM6CiAKIHByb3RlY3RlZDoKICAgICBmcmll
bmQgY2xhc3MgQm94SXRlcmF0b3I7CisgICAgZnJpZW5kIGNsYXNzIElubGluZUJveEl0ZXJhdG9y
OwogICAgIGZyaWVuZCBjbGFzcyBMZWFmQm94SXRlcmF0b3I7CiAgICAgZnJpZW5kIGNsYXNzIFRl
eHRCb3hJdGVyYXRvcjsKIApAQCAtMTY5LDYgKzE3MiwyMCBAQCBpbmxpbmUgYm9vbCBCb3g6Omlz
VGV4dCgpIGNvbnN0CiAgICAgfSk7CiB9CiAKK2lubGluZSBib29sIEJveDo6aXNJbmxpbmVCb3go
KSBjb25zdAoreworICAgIHJldHVybiBXVEY6OnN3aXRjaE9uKG1fcGF0aFZhcmlhbnQsIFtdKGF1
dG8mIHBhdGgpIHsKKyAgICAgICAgcmV0dXJuIHBhdGguaXNJbmxpbmVCb3goKTsKKyAgICB9KTsK
K30KKworaW5saW5lIGJvb2wgQm94Ojppc1Jvb3RJbmxpbmVCb3goKSBjb25zdAoreworICAgIHJl
dHVybiBXVEY6OnN3aXRjaE9uKG1fcGF0aFZhcmlhbnQsIFtdKGF1dG8mIHBhdGgpIHsKKyAgICAg
ICAgcmV0dXJuIHBhdGguaXNSb290SW5saW5lQm94KCk7CisgICAgfSk7Cit9CisKIGlubGluZSBG
bG9hdFJlY3QgQm94OjpyZWN0KCkgY29uc3QKIHsKICAgICByZXR1cm4gV1RGOjpzd2l0Y2hPbiht
X3BhdGhWYXJpYW50LCBbXShhdXRvJiBwYXRoKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9sYXlvdXQvaW50ZWdyYXRpb24vSW5saW5lSXRlcmF0b3JCb3hMZWdhY3lQYXRoLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vSW5saW5lSXRlcmF0b3JCb3hMZWdhY3lQYXRo
LmgKaW5kZXggNzk1OGJiMjdkMmQ5N2U4MDBhMjg0M2M5YzYxZDFjNzczZjRlNzI0Yi4uZDExYTQ5
NzFkNDQyMGE4NTE3MjczYWJiZmNmNTNiNjQ5ZmVjZDNiZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0lubGluZUl0ZXJhdG9yQm94TGVnYWN5UGF0aC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9JbmxpbmVJdGVyYXRvckJveExl
Z2FjeVBhdGguaApAQCAtNTQsNiArNTQsOCBAQCBwdWJsaWM6CiAgICAgfQogCiAgICAgYm9vbCBp
c1RleHQoKSBjb25zdCB7IHJldHVybiBtX2lubGluZUJveC0+aXNJbmxpbmVUZXh0Qm94KCk7IH0K
KyAgICBib29sIGlzSW5saW5lQm94KCkgY29uc3QgeyByZXR1cm4gbV9pbmxpbmVCb3gtPmlzSW5s
aW5lRmxvd0JveCgpOyB9CisgICAgYm9vbCBpc1Jvb3RJbmxpbmVCb3goKSBjb25zdCB7IHJldHVy
biBtX2lubGluZUJveC0+aXNSb290SW5saW5lQm94KCk7IH0KIAogICAgIEZsb2F0UmVjdCByZWN0
KCkgY29uc3QgeyByZXR1cm4gbV9pbmxpbmVCb3gtPmZyYW1lUmVjdCgpOyB9CiAKQEAgLTExNyw2
ICsxMTksMTYgQEAgcHVibGljOgogICAgICAgICB0cmF2ZXJzZVByZXZpb3VzSW5saW5lQm94SW5D
YWNoZU9yZGVyKCk7CiAgICAgfQogCisgICAgdm9pZCB0cmF2ZXJzZU5leHRJbmxpbmVCb3goKQor
ICAgIHsKKyAgICAgICAgbV9pbmxpbmVCb3ggPSBpbmxpbmVGbG93Qm94KCktPm5leHRMaW5lQm94
KCk7CisgICAgfQorCisgICAgdm9pZCB0cmF2ZXJzZVByZXZpb3VzSW5saW5lQm94KCkKKyAgICB7
CisgICAgICAgIG1faW5saW5lQm94ID0gaW5saW5lRmxvd0JveCgpLT5wcmV2TGluZUJveCgpOwor
ICAgIH0KKwogICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBCb3hMZWdhY3lQYXRoJiBvdGhlcikg
Y29uc3QgeyByZXR1cm4gbV9pbmxpbmVCb3ggPT0gb3RoZXIubV9pbmxpbmVCb3g7IH0KIAogICAg
IGJvb2wgYXRFbmQoKSBjb25zdCB7IHJldHVybiAhbV9pbmxpbmVCb3g7IH0KQEAgLTEyNiw2ICsx
MzgsNyBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAgICAgY29uc3QgTGVnYWN5SW5saW5lVGV4dEJv
eCogaW5saW5lVGV4dEJveCgpIGNvbnN0IHsgcmV0dXJuIGRvd25jYXN0PExlZ2FjeUlubGluZVRl
eHRCb3g+KG1faW5saW5lQm94KTsgfQorICAgIGNvbnN0IExlZ2FjeUlubGluZUZsb3dCb3gqIGlu
bGluZUZsb3dCb3goKSBjb25zdCB7IHJldHVybiBkb3duY2FzdDxMZWdhY3lJbmxpbmVGbG93Qm94
PihtX2lubGluZUJveCk7IH0KIAogICAgIHN0YXRpYyBWZWN0b3I8Y29uc3QgTGVnYWN5SW5saW5l
Qm94Kj4gaW5saW5lQm94ZXNJbkxvZ2ljYWxPcmRlcihjb25zdCBMZWdhY3lSb290SW5saW5lQm94
JiByb290KQogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3Jh
dGlvbi9JbmxpbmVJdGVyYXRvckJveE1vZGVyblBhdGguaCBiL1NvdXJjZS9XZWJDb3JlL2xheW91
dC9pbnRlZ3JhdGlvbi9JbmxpbmVJdGVyYXRvckJveE1vZGVyblBhdGguaAppbmRleCA5YzM2NDQw
MmRmZDJjZGVjZDdhOGI5OWM1YmFlYTVmN2UwNmIzN2Q5Li5jOGI5YzQ3ZDJmYjFjZGEzNmNhOWY4
ODE0MjM3NjFkNWIxZWQ0M2Y0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50
ZWdyYXRpb24vSW5saW5lSXRlcmF0b3JCb3hNb2Rlcm5QYXRoLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvbGF5b3V0L2ludGVncmF0aW9uL0lubGluZUl0ZXJhdG9yQm94TW9kZXJuUGF0aC5oCkBAIC00
OCw2ICs0OCw4IEBAIHB1YmxpYzoKICAgICB9CiAKICAgICBib29sIGlzVGV4dCgpIGNvbnN0IHsg
cmV0dXJuICEhYm94KCkudGV4dCgpOyB9CisgICAgYm9vbCBpc0lubGluZUJveCgpIGNvbnN0IHsg
cmV0dXJuIGJveCgpLmlzSW5saW5lQm94KCk7IH0KKyAgICBib29sIGlzUm9vdElubGluZUJveCgp
IGNvbnN0IHsgcmV0dXJuIGJveCgpLmlzUm9vdElubGluZUJveCgpOyB9CiAKICAgICBGbG9hdFJl
Y3QgcmVjdCgpIGNvbnN0IHsgcmV0dXJuIGJveCgpLmxvZ2ljYWxSZWN0KCk7IH0KIApAQCAtMTc0
LDYgKzE3NiwzMiBAQCBwdWJsaWM6CiAgICAgICAgIHRyYXZlcnNlUHJldmlvdXNPbkxpbmUoKTsK
ICAgICB9CiAKKyAgICB2b2lkIHRyYXZlcnNlTmV4dElubGluZUJveCgpCisgICAgeworICAgICAg
ICBBU1NFUlQoYm94KCkuaXNJbmxpbmVCb3goKSk7CisKKyAgICAgICAgLy8gRklYTUU6IFRoaXMg
YWx3YXlzIHNlYXJjaGVzIHRvIHRoZSBlbmQuCisgICAgICAgIGF1dG8mIGxheW91dEJveCA9IGJv
eCgpLmxheW91dEJveCgpOworICAgICAgICBkbyB7CisgICAgICAgICAgICB0cmF2ZXJzZU5leHRC
b3goKTsKKyAgICAgICAgfSB3aGlsZSAoIWF0RW5kKCkgJiYgJmJveCgpLmxheW91dEJveCgpICE9
ICZsYXlvdXRCb3gpOworCisgICAgICAgIEFTU0VSVChhdEVuZCgpIHx8IGJveCgpLmlzSW5saW5l
Qm94KCkpOworICAgIH0KKworICAgIHZvaWQgdHJhdmVyc2VQcmV2aW91c0lubGluZUJveCgpCisg
ICAgeworICAgICAgICBBU1NFUlQoYm94KCkuaXNJbmxpbmVCb3goKSk7CisKKyAgICAgICAgLy8g
RklYTUU6IFRoaXMgYWx3YXlzIHNlYXJjaGVzIHRvIHRoZSBiZWdpbm5pbmcuCisgICAgICAgIGF1
dG8mIGxheW91dEJveCA9IGJveCgpLmxheW91dEJveCgpOworICAgICAgICBkbyB7CisgICAgICAg
ICAgICB0cmF2ZXJzZVByZXZpb3VzQm94KCk7CisgICAgICAgIH0gd2hpbGUgKCFhdEVuZCgpICYm
ICZib3goKS5sYXlvdXRCb3goKSAhPSAmbGF5b3V0Qm94KTsKKworICAgICAgICBBU1NFUlQoYXRF
bmQoKSB8fCBib3goKS5pc0lubGluZUJveCgpKTsKKyAgICB9CisKICAgICBib29sIG9wZXJhdG9y
PT0oY29uc3QgQm94TW9kZXJuUGF0aCYgb3RoZXIpIGNvbnN0IHsgcmV0dXJuIG1faW5saW5lQ29u
dGVudCA9PSBvdGhlci5tX2lubGluZUNvbnRlbnQgJiYgbV9ib3hJbmRleCA9PSBvdGhlci5tX2Jv
eEluZGV4OyB9CiAKICAgICBib29sIGF0RW5kKCkgY29uc3QgeyByZXR1cm4gbV9ib3hJbmRleCA9
PSBib3hlcygpLnNpemUoKTsgfQpAQCAtMTgxLDE5ICsyMDksMjkgQEAgcHVibGljOgogICAgIGF1
dG8mIGlubGluZUNvbnRlbnQoKSBjb25zdCB7IHJldHVybiAqbV9pbmxpbmVDb250ZW50OyB9CiAK
IHByaXZhdGU6Ci0gICAgdm9pZCB0cmF2ZXJzZU5leHRMZWFmKCkKKyAgICB2b2lkIHRyYXZlcnNl
TmV4dEJveCgpCisgICAgeworICAgICAgICBBU1NFUlQoIWF0RW5kKCkpOworICAgICAgICArK21f
Ym94SW5kZXg7CisgICAgfQorCisgICAgdm9pZCB0cmF2ZXJzZVByZXZpb3VzQm94KCkKICAgICB7
CiAgICAgICAgIEFTU0VSVCghYXRFbmQoKSk7CisgICAgICAgIG1fYm94SW5kZXggPSBtX2JveElu
ZGV4ID8gbV9ib3hJbmRleCAtIDEgOiBib3hlcygpLnNpemUoKTsKKyAgICB9CisKKyAgICB2b2lk
IHRyYXZlcnNlTmV4dExlYWYoKQorICAgIHsKICAgICAgICAgZG8gewotICAgICAgICAgICAgKytt
X2JveEluZGV4OworICAgICAgICAgICAgdHJhdmVyc2VOZXh0Qm94KCk7CiAgICAgICAgIH0gd2hp
bGUgKCFhdEVuZCgpICYmIGJveCgpLmlzSW5saW5lQm94KCkpOwogICAgIH0KIAogICAgIHZvaWQg
dHJhdmVyc2VQcmV2aW91c0xlYWYoKQogICAgIHsKLSAgICAgICAgQVNTRVJUKCFhdEVuZCgpKTsK
ICAgICAgICAgZG8gewotICAgICAgICAgICAgbV9ib3hJbmRleCA9IG1fYm94SW5kZXggPyBtX2Jv
eEluZGV4IC0gMSA6IGJveGVzKCkuc2l6ZSgpOworICAgICAgICAgICAgdHJhdmVyc2VQcmV2aW91
c0JveCgpOwogICAgICAgICB9IHdoaWxlICghYXRFbmQoKSAmJiBib3goKS5pc0lubGluZUJveCgp
KTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlv
bi9JbmxpbmVJdGVyYXRvcklubGluZUJveC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50
ZWdyYXRpb24vSW5saW5lSXRlcmF0b3JJbmxpbmVCb3guY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjdiMDIzYzli
YjUyMjYwOTM4NTQ3YjJiN2MyYWJlNWFkZDhmN2NjMTYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vSW5saW5lSXRlcmF0b3JJbmxpbmVCb3guY3Bw
CkBAIC0wLDAgKzEsODkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5j
bHVkZSAiSW5saW5lSXRlcmF0b3JJbmxpbmVCb3guaCIKKworI2luY2x1ZGUgIkxheW91dEludGVn
cmF0aW9uTGluZUxheW91dC5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CituYW1lc3BhY2UgSW5s
aW5lSXRlcmF0b3IgeworCitJbmxpbmVCb3g6OklubGluZUJveChQYXRoVmFyaWFudCYmIHBhdGgp
CisgICAgOiBCb3goV1RGTW92ZShwYXRoKSkKK3sKK30KKworSW5saW5lQm94SXRlcmF0b3IgSW5s
aW5lQm94OjpuZXh0SW5saW5lQm94KCkgY29uc3QKK3sKKyAgICByZXR1cm4gSW5saW5lQm94SXRl
cmF0b3IoKnRoaXMpLnRyYXZlcnNlTmV4dElubGluZUJveCgpOworfQorCitJbmxpbmVCb3hJdGVy
YXRvciBJbmxpbmVCb3g6OnByZXZpb3VzSW5saW5lQm94KCkgY29uc3QKK3sKKyAgICByZXR1cm4g
SW5saW5lQm94SXRlcmF0b3IoKnRoaXMpLnRyYXZlcnNlUHJldmlvdXNJbmxpbmVCb3goKTsKK30K
KworSW5saW5lQm94SXRlcmF0b3I6OklubGluZUJveEl0ZXJhdG9yKEJveDo6UGF0aFZhcmlhbnQm
JiBwYXRoVmFyaWFudCkKKyAgICA6IEJveEl0ZXJhdG9yKFdURk1vdmUocGF0aFZhcmlhbnQpKQor
eworfQorCitJbmxpbmVCb3hJdGVyYXRvcjo6SW5saW5lQm94SXRlcmF0b3IoY29uc3QgQm94JiBi
b3gpCisgICAgOiBCb3hJdGVyYXRvcihib3gpCit7Cit9CisKK0lubGluZUJveEl0ZXJhdG9yJiBJ
bmxpbmVCb3hJdGVyYXRvcjo6dHJhdmVyc2VOZXh0SW5saW5lQm94KCkKK3sKKyAgICBXVEY6OnN3
aXRjaE9uKG1fYm94Lm1fcGF0aFZhcmlhbnQsIFtdKGF1dG8mIHBhdGgpIHsKKyAgICAgICAgcGF0
aC50cmF2ZXJzZU5leHRJbmxpbmVCb3goKTsKKyAgICB9KTsKKyAgICByZXR1cm4gKnRoaXM7Cit9
CisKK0lubGluZUJveEl0ZXJhdG9yJiBJbmxpbmVCb3hJdGVyYXRvcjo6dHJhdmVyc2VQcmV2aW91
c0lubGluZUJveCgpCit7CisgICAgV1RGOjpzd2l0Y2hPbihtX2JveC5tX3BhdGhWYXJpYW50LCBb
XShhdXRvJiBwYXRoKSB7CisgICAgICAgIHBhdGgudHJhdmVyc2VQcmV2aW91c0lubGluZUJveCgp
OworICAgIH0pOworICAgIHJldHVybiAqdGhpczsKK30KKworSW5saW5lQm94SXRlcmF0b3IgaW5s
aW5lQm94Rm9yKGNvbnN0IExlZ2FjeUlubGluZUZsb3dCb3gmIGxlZ2FjeUlubGluZUZsb3dCb3gp
Cit7CisgICAgcmV0dXJuIHsgQm94TGVnYWN5UGF0aCB7ICZsZWdhY3lJbmxpbmVGbG93Qm94IH0g
fTsKK30KKworI2lmIEVOQUJMRShMQVlPVVRfRk9STUFUVElOR19DT05URVhUKQorSW5saW5lQm94
SXRlcmF0b3IgaW5saW5lQm94Rm9yKGNvbnN0IExheW91dEludGVncmF0aW9uOjpJbmxpbmVDb250
ZW50JiBjb250ZW50LCBzaXplX3QgYm94SW5kZXgpCit7CisgICAgQVNTRVJUKGNvbnRlbnQuYm94
ZXNbYm94SW5kZXhdLmlzSW5saW5lQm94KCkpOworICAgIHJldHVybiB7IEJveE1vZGVyblBhdGgg
eyBjb250ZW50LCBib3hJbmRleCB9IH07Cit9CisjZW5kaWYKKworfQorfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0lubGluZUl0ZXJhdG9ySW5saW5lQm94
LmggYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vSW5saW5lSXRlcmF0b3JJbmxp
bmVCb3guaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5jNTM2ZWM3MGE1MDJhN2QwNmI5N2FkMTEzNDMyOThlMjhkNDQz
YzI1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9u
L0lubGluZUl0ZXJhdG9ySW5saW5lQm94LmgKQEAgLTAsMCArMSw4NSBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiSW5saW5lSXRlcmF0b3JCb3guaCIKKworbmFtZXNw
YWNlIFdlYkNvcmUgeworCituYW1lc3BhY2UgSW5saW5lSXRlcmF0b3IgeworCitjbGFzcyBJbmxp
bmVCb3hJdGVyYXRvcjsKKworY2xhc3MgSW5saW5lQm94IDogcHVibGljIEJveCB7CitwdWJsaWM6
CisgICAgSW5saW5lQm94KFBhdGhWYXJpYW50JiYpOworCisgICAgY29uc3QgUmVuZGVyQm94TW9k
ZWxPYmplY3QmIHJlbmRlcmVyKCkgY29uc3QgeyByZXR1cm4gZG93bmNhc3Q8UmVuZGVyQm94TW9k
ZWxPYmplY3Q+KEJveDo6cmVuZGVyZXIoKSk7IH0KKworICAgIC8vIEZJWE1FOiBSZW1vdmUuIEZv
ciBpbnRlcm1lZGlhdGUgcG9ydGluZyBzdGVwcyBvbmx5LgorICAgIGNvbnN0IExlZ2FjeUlubGlu
ZUZsb3dCb3gqIGxlZ2FjeUlubGluZUJveCgpIGNvbnN0IHsgcmV0dXJuIGRvd25jYXN0PExlZ2Fj
eUlubGluZUZsb3dCb3g+KEJveDo6bGVnYWN5SW5saW5lQm94KCkpOyB9CisKKyAgICBJbmxpbmVC
b3hJdGVyYXRvciBuZXh0SW5saW5lQm94KCkgY29uc3Q7CisgICAgSW5saW5lQm94SXRlcmF0b3Ig
cHJldmlvdXNJbmxpbmVCb3goKSBjb25zdDsKKyAgICBJbmxpbmVCb3hJdGVyYXRvciBpdGVyYXRv
cigpIGNvbnN0OworfTsKKworY2xhc3MgSW5saW5lQm94SXRlcmF0b3IgOiBwdWJsaWMgQm94SXRl
cmF0b3IgeworcHVibGljOgorICAgIElubGluZUJveEl0ZXJhdG9yKCkgeyB9CisgICAgSW5saW5l
Qm94SXRlcmF0b3IoQm94OjpQYXRoVmFyaWFudCYmKTsKKyAgICBJbmxpbmVCb3hJdGVyYXRvcihj
b25zdCBCb3gmKTsKKworICAgIGNvbnN0IElubGluZUJveCYgb3BlcmF0b3IqKCkgY29uc3QgeyBy
ZXR1cm4gZ2V0KCk7IH0KKyAgICBjb25zdCBJbmxpbmVCb3gqIG9wZXJhdG9yLT4oKSBjb25zdCB7
IHJldHVybiAmZ2V0KCk7IH0KKworICAgIElubGluZUJveEl0ZXJhdG9yJiB0cmF2ZXJzZU5leHRJ
bmxpbmVCb3goKTsKKyAgICBJbmxpbmVCb3hJdGVyYXRvciYgdHJhdmVyc2VQcmV2aW91c0lubGlu
ZUJveCgpOworCitwcml2YXRlOgorICAgIGNvbnN0IElubGluZUJveCYgZ2V0KCkgY29uc3QgeyBy
ZXR1cm4gZG93bmNhc3Q8SW5saW5lQm94PihtX2JveCk7IH0KK307CisKK0lubGluZUJveEl0ZXJh
dG9yIGlubGluZUJveEZvcihjb25zdCBMZWdhY3lJbmxpbmVGbG93Qm94Jik7CisjaWYgRU5BQkxF
KExBWU9VVF9GT1JNQVRUSU5HX0NPTlRFWFQpCitJbmxpbmVCb3hJdGVyYXRvciBpbmxpbmVCb3hG
b3IoY29uc3QgTGF5b3V0SW50ZWdyYXRpb246OklubGluZUNvbnRlbnQmLCBzaXplX3QgYm94SW5k
ZXgpOworI2VuZGlmCisKK2lubGluZSBJbmxpbmVCb3hJdGVyYXRvciBJbmxpbmVCb3g6Oml0ZXJh
dG9yKCkgY29uc3QKK3sKKyAgICByZXR1cm4geyAqdGhpcyB9OworfQorCit9Cit9CisKK1NQRUNJ
QUxJWkVfVFlQRV9UUkFJVFNfQkVHSU4oV2ViQ29yZTo6SW5saW5lSXRlcmF0b3I6OklubGluZUJv
eCkKK3N0YXRpYyBib29sIGlzVHlwZShjb25zdCBXZWJDb3JlOjpJbmxpbmVJdGVyYXRvcjo6Qm94
JiBib3gpIHsgcmV0dXJuIGJveC5pc0lubGluZUJveCgpOyB9CitTUEVDSUFMSVpFX1RZUEVfVFJB
SVRTX0VORCgpCisKK1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNfQkVHSU4oV2ViQ29yZTo6SW5saW5l
SXRlcmF0b3I6OklubGluZUJveEl0ZXJhdG9yKQorc3RhdGljIGJvb2wgaXNUeXBlKGNvbnN0IFdl
YkNvcmU6OklubGluZUl0ZXJhdG9yOjpCb3hJdGVyYXRvciYgYm94KSB7IHJldHVybiAhYm94IHx8
IGJveC0+aXNJbmxpbmVCb3goKTsgfQorU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19FTkQoKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZUJveFBhaW50ZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZUJveFBhaW50ZXIuY3BwCmluZGV4IGQ3YmRm
NzVjOTA3MjJlYzM2OTIyOTMwZWE0NDU2MzI5MDljZmZkZTEuLjUwNWViOTIzM2JlZWFkZDMzMjdi
OTg5NTE3MjJhNmUxZGNkNzQ1YjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9JbmxpbmVCb3hQYWludGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5s
aW5lQm94UGFpbnRlci5jcHAKQEAgLTI2LDYgKzI2LDcgQEAKICNpbmNsdWRlICJJbmxpbmVCb3hQ
YWludGVyLmgiCiAKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQuaCIKKyNpbmNsdWRlICJJbmxp
bmVJdGVyYXRvckxpbmUuaCIKICNpbmNsdWRlICJMZWdhY3lJbmxpbmVGbG93Qm94LmgiCiAjaW5j
bHVkZSAiUGFpbnRJbmZvLmgiCiAjaW5jbHVkZSAiUmVuZGVyQmxvY2tGbG93LmgiCkBAIC0zNiwx
MiArMzcsMTIgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogSW5saW5lQm94UGFpbnRlcjo6SW5s
aW5lQm94UGFpbnRlcihjb25zdCBMZWdhY3lJbmxpbmVGbG93Qm94JiBpbmxpbmVCb3gsIFBhaW50
SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbnRPZmZzZXQpCi0gICAgOiBt
X2lubGluZUJveChpbmxpbmVCb3gpCisgICAgOiBtX2lubGluZUJveCgqSW5saW5lSXRlcmF0b3I6
OmlubGluZUJveEZvcihpbmxpbmVCb3gpKQogICAgICwgbV9wYWludEluZm8ocGFpbnRJbmZvKQog
ICAgICwgbV9wYWludE9mZnNldChwYWludE9mZnNldCkKICAgICAsIG1fcmVuZGVyZXIobV9pbmxp
bmVCb3gucmVuZGVyZXIoKSkKLSAgICAsIG1faXNGaXJzdExpbmUobV9pbmxpbmVCb3guaXNGaXJz
dExpbmUoKSkKLSAgICAsIG1faXNSb290SW5saW5lQm94KGlzPFJlbmRlckJsb2NrRmxvdz4obV9y
ZW5kZXJlcikpCisgICAgLCBtX2lzRmlyc3RMaW5lKG1faW5saW5lQm94LmxpbmUoKS0+aXNGaXJz
dCgpKQorICAgICwgbV9pc1Jvb3RJbmxpbmVCb3gobV9pbmxpbmVCb3guaXNSb290SW5saW5lQm94
KCkpCiAgICAgLCBtX2lzSG9yaXpvbnRhbChtX2lubGluZUJveC5pc0hvcml6b250YWwoKSkKIHsK
IH0KQEAgLTk0LDI4ICs5NSwyOCBAQCB2b2lkIElubGluZUJveFBhaW50ZXI6OnBhaW50KCkKICAg
ICBwYWludERlY29yYXRpb25zKCk7CiB9CiAKLXN0YXRpYyBMYXlvdXRSZWN0IGNsaXBSZWN0Rm9y
TmluZVBpZWNlSW1hZ2VTdHJpcChjb25zdCBMZWdhY3lJbmxpbmVGbG93Qm94KiBib3gsIGNvbnN0
IE5pbmVQaWVjZUltYWdlJiBpbWFnZSwgY29uc3QgTGF5b3V0UmVjdCYgcGFpbnRSZWN0KQorc3Rh
dGljIExheW91dFJlY3QgY2xpcFJlY3RGb3JOaW5lUGllY2VJbWFnZVN0cmlwKGNvbnN0IElubGlu
ZUl0ZXJhdG9yOjpJbmxpbmVCb3gmIGJveCwgY29uc3QgTmluZVBpZWNlSW1hZ2UmIGltYWdlLCBj
b25zdCBMYXlvdXRSZWN0JiBwYWludFJlY3QpCiB7CiAgICAgTGF5b3V0UmVjdCBjbGlwUmVjdChw
YWludFJlY3QpOwotICAgIGF1dG8mIHN0eWxlID0gYm94LT5yZW5kZXJlcigpLnN0eWxlKCk7Cisg
ICAgYXV0byYgc3R5bGUgPSBib3gucmVuZGVyZXIoKS5zdHlsZSgpOwogICAgIExheW91dEJveEV4
dGVudCBvdXRzZXRzID0gc3R5bGUuaW1hZ2VPdXRzZXRzKGltYWdlKTsKLSAgICBpZiAoYm94LT5p
c0hvcml6b250YWwoKSkgeworICAgIGlmIChib3guaXNIb3Jpem9udGFsKCkpIHsKICAgICAgICAg
Y2xpcFJlY3Quc2V0WShwYWludFJlY3QueSgpIC0gb3V0c2V0cy50b3AoKSk7CiAgICAgICAgIGNs
aXBSZWN0LnNldEhlaWdodChwYWludFJlY3QuaGVpZ2h0KCkgKyBvdXRzZXRzLnRvcCgpICsgb3V0
c2V0cy5ib3R0b20oKSk7Ci0gICAgICAgIGlmIChib3gtPmluY2x1ZGVMb2dpY2FsTGVmdEVkZ2Uo
KSkgeworICAgICAgICBpZiAoYm94LmxlZ2FjeUlubGluZUJveCgpLT5pbmNsdWRlTG9naWNhbExl
ZnRFZGdlKCkpIHsKICAgICAgICAgICAgIGNsaXBSZWN0LnNldFgocGFpbnRSZWN0LngoKSAtIG91
dHNldHMubGVmdCgpKTsKICAgICAgICAgICAgIGNsaXBSZWN0LnNldFdpZHRoKHBhaW50UmVjdC53
aWR0aCgpICsgb3V0c2V0cy5sZWZ0KCkpOwogICAgICAgICB9Ci0gICAgICAgIGlmIChib3gtPmlu
Y2x1ZGVMb2dpY2FsUmlnaHRFZGdlKCkpCisgICAgICAgIGlmIChib3gubGVnYWN5SW5saW5lQm94
KCktPmluY2x1ZGVMb2dpY2FsUmlnaHRFZGdlKCkpCiAgICAgICAgICAgICBjbGlwUmVjdC5zZXRX
aWR0aChjbGlwUmVjdC53aWR0aCgpICsgb3V0c2V0cy5yaWdodCgpKTsKICAgICB9IGVsc2Ugewog
ICAgICAgICBjbGlwUmVjdC5zZXRYKHBhaW50UmVjdC54KCkgLSBvdXRzZXRzLmxlZnQoKSk7CiAg
ICAgICAgIGNsaXBSZWN0LnNldFdpZHRoKHBhaW50UmVjdC53aWR0aCgpICsgb3V0c2V0cy5sZWZ0
KCkgKyBvdXRzZXRzLnJpZ2h0KCkpOwotICAgICAgICBpZiAoYm94LT5pbmNsdWRlTG9naWNhbExl
ZnRFZGdlKCkpIHsKKyAgICAgICAgaWYgKGJveC5sZWdhY3lJbmxpbmVCb3goKS0+aW5jbHVkZUxv
Z2ljYWxMZWZ0RWRnZSgpKSB7CiAgICAgICAgICAgICBjbGlwUmVjdC5zZXRZKHBhaW50UmVjdC55
KCkgLSBvdXRzZXRzLnRvcCgpKTsKICAgICAgICAgICAgIGNsaXBSZWN0LnNldEhlaWdodChwYWlu
dFJlY3QuaGVpZ2h0KCkgKyBvdXRzZXRzLnRvcCgpKTsKICAgICAgICAgfQotICAgICAgICBpZiAo
Ym94LT5pbmNsdWRlTG9naWNhbFJpZ2h0RWRnZSgpKQorICAgICAgICBpZiAoYm94LmxlZ2FjeUlu
bGluZUJveCgpLT5pbmNsdWRlTG9naWNhbFJpZ2h0RWRnZSgpKQogICAgICAgICAgICAgY2xpcFJl
Y3Quc2V0SGVpZ2h0KGNsaXBSZWN0LmhlaWdodCgpICsgb3V0c2V0cy5ib3R0b20oKSk7CiAgICAg
fQogICAgIHJldHVybiBjbGlwUmVjdDsKQEAgLTEyNiwxMiArMTI3LDEyIEBAIHZvaWQgSW5saW5l
Qm94UGFpbnRlcjo6cGFpbnRNYXNrKCkKICAgICBpZiAoIW1fcGFpbnRJbmZvLnNob3VsZFBhaW50
V2l0aGluUm9vdChyZW5kZXJlcigpKSB8fCByZW5kZXJlcigpLnN0eWxlKCkudmlzaWJpbGl0eSgp
ICE9IFZpc2liaWxpdHk6OlZpc2libGUgfHwgbV9wYWludEluZm8ucGhhc2UgIT0gUGFpbnRQaGFz
ZTo6TWFzaykKICAgICAgICAgcmV0dXJuOwogCi0gICAgTGF5b3V0UmVjdCBmcmFtZVJlY3QobV9p
bmxpbmVCb3guZnJhbWVSZWN0KCkpOworICAgIExheW91dFJlY3QgZnJhbWVSZWN0KG1faW5saW5l
Qm94LnJlY3QoKSk7CiAgICAgY29uc3RyYWluVG9MaW5lVG9wQW5kQm90dG9tSWZOZWVkZWQoZnJh
bWVSZWN0KTsKIAogICAgIC8vIE1vdmUgeC95IHRvIG91ciBjb29yZGluYXRlcy4KICAgICBMYXlv
dXRSZWN0IGxvY2FsUmVjdChmcmFtZVJlY3QpOwotICAgIG1faW5saW5lQm94LnJvb3QoKS5ibG9j
a0Zsb3coKS5mbGlwRm9yV3JpdGluZ01vZGUobG9jYWxSZWN0KTsKKyAgICBtX2lubGluZUJveC5s
aW5lKCktPmNvbnRhaW5pbmdCbG9jaygpLmZsaXBGb3JXcml0aW5nTW9kZShsb2NhbFJlY3QpOwog
ICAgIExheW91dFBvaW50IGFkanVzdGVkUGFpbnRPZmZzZXQgPSBtX3BhaW50T2Zmc2V0ICsgbG9j
YWxSZWN0LmxvY2F0aW9uKCk7CiAKICAgICBjb25zdCBOaW5lUGllY2VJbWFnZSYgbWFza05pbmVQ
aWVjZUltYWdlID0gcmVuZGVyZXIoKS5zdHlsZSgpLm1hc2tCb3hJbWFnZSgpOwpAQCAtMTY1LDI0
ICsxNjYsMjQgQEAgdm9pZCBJbmxpbmVCb3hQYWludGVyOjpwYWludE1hc2soKQogICAgICAgICBy
ZXR1cm47IC8vIERvbid0IHBhaW50IGFueXRoaW5nIHdoaWxlIHdlIHdhaXQgZm9yIHRoZSBpbWFn
ZSB0byBsb2FkLgogICAgIH0KIAotICAgIGJvb2wgaGFzU2luZ2xlTGluZSA9ICFtX2lubGluZUJv
eC5wcmV2TGluZUJveCgpICYmICFtX2lubGluZUJveC5uZXh0TGluZUJveCgpOworICAgIGJvb2wg
aGFzU2luZ2xlTGluZSA9ICFtX2lubGluZUJveC5wcmV2aW91c0lubGluZUJveCgpICYmICFtX2lu
bGluZUJveC5uZXh0SW5saW5lQm94KCk7CiAgICAgaWYgKGhhc1NpbmdsZUxpbmUpCiAgICAgICAg
IHJlbmRlcmVyKCkucGFpbnROaW5lUGllY2VJbWFnZShtX3BhaW50SW5mby5jb250ZXh0KCksIExh
eW91dFJlY3QoYWRqdXN0ZWRQYWludE9mZnNldCwgZnJhbWVSZWN0LnNpemUoKSksIHJlbmRlcmVy
KCkuc3R5bGUoKSwgbWFza05pbmVQaWVjZUltYWdlLCBjb21wb3NpdGVPcCk7CiAgICAgZWxzZSB7
CiAgICAgICAgIC8vIFdlIGhhdmUgYSBtYXNrIGltYWdlIHRoYXQgc3BhbnMgbXVsdGlwbGUgbGlu
ZXMuCiAgICAgICAgIC8vIFdlIG5lZWQgdG8gYWRqdXN0IF90eCBhbmQgX3R5IGJ5IHRoZSB3aWR0
aCBvZiBhbGwgcHJldmlvdXMgbGluZXMuCiAgICAgICAgIExheW91dFVuaXQgbG9naWNhbE9mZnNl
dE9uTGluZTsKLSAgICAgICAgZm9yIChhdXRvKiBjdXJyID0gbV9pbmxpbmVCb3gucHJldkxpbmVC
b3goKTsgY3VycjsgY3VyciA9IGN1cnItPnByZXZMaW5lQm94KCkpCi0gICAgICAgICAgICBsb2dp
Y2FsT2Zmc2V0T25MaW5lICs9IGN1cnItPmxvZ2ljYWxXaWR0aCgpOworICAgICAgICBmb3IgKGF1
dG8gYm94ID0gbV9pbmxpbmVCb3gucHJldmlvdXNJbmxpbmVCb3goKTsgYm94OyBib3gudHJhdmVy
c2VQcmV2aW91c0lubGluZUJveCgpKQorICAgICAgICAgICAgbG9naWNhbE9mZnNldE9uTGluZSAr
PSBib3gtPmxvZ2ljYWxXaWR0aCgpOwogICAgICAgICBMYXlvdXRVbml0IHRvdGFsTG9naWNhbFdp
ZHRoID0gbG9naWNhbE9mZnNldE9uTGluZTsKLSAgICAgICAgZm9yIChhdXRvKiBjdXJyID0gJm1f
aW5saW5lQm94OyBjdXJyOyBjdXJyID0gY3Vyci0+bmV4dExpbmVCb3goKSkKLSAgICAgICAgICAg
IHRvdGFsTG9naWNhbFdpZHRoICs9IGN1cnItPmxvZ2ljYWxXaWR0aCgpOworICAgICAgICBmb3Ig
KGF1dG8gYm94ID0gbV9pbmxpbmVCb3guaXRlcmF0b3IoKTsgYm94OyBib3gudHJhdmVyc2VOZXh0
SW5saW5lQm94KCkpCisgICAgICAgICAgICB0b3RhbExvZ2ljYWxXaWR0aCArPSBib3gtPmxvZ2lj
YWxXaWR0aCgpOwogICAgICAgICBMYXlvdXRVbml0IHN0cmlwWCA9IGFkanVzdGVkUGFpbnRPZmZz
ZXQueCgpIC0gKGlzSG9yaXpvbnRhbCgpID8gbG9naWNhbE9mZnNldE9uTGluZSA6IDBfbHUpOwog
ICAgICAgICBMYXlvdXRVbml0IHN0cmlwWSA9IGFkanVzdGVkUGFpbnRPZmZzZXQueSgpIC0gKGlz
SG9yaXpvbnRhbCgpID8gMF9sdSA6IGxvZ2ljYWxPZmZzZXRPbkxpbmUpOwogICAgICAgICBMYXlv
dXRVbml0IHN0cmlwV2lkdGggPSBpc0hvcml6b250YWwoKSA/IHRvdGFsTG9naWNhbFdpZHRoIDog
ZnJhbWVSZWN0LndpZHRoKCk7CiAgICAgICAgIExheW91dFVuaXQgc3RyaXBIZWlnaHQgPSBpc0hv
cml6b250YWwoKSA/IGZyYW1lUmVjdC5oZWlnaHQoKSA6IHRvdGFsTG9naWNhbFdpZHRoOwogCi0g
ICAgICAgIExheW91dFJlY3QgY2xpcFJlY3QgPSBjbGlwUmVjdEZvck5pbmVQaWVjZUltYWdlU3Ry
aXAoJm1faW5saW5lQm94LCBtYXNrTmluZVBpZWNlSW1hZ2UsIHBhaW50UmVjdCk7CisgICAgICAg
IExheW91dFJlY3QgY2xpcFJlY3QgPSBjbGlwUmVjdEZvck5pbmVQaWVjZUltYWdlU3RyaXAobV9p
bmxpbmVCb3gsIG1hc2tOaW5lUGllY2VJbWFnZSwgcGFpbnRSZWN0KTsKICAgICAgICAgR3JhcGhp
Y3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKG1fcGFpbnRJbmZvLmNvbnRleHQoKSk7CiAg
ICAgICAgIG1fcGFpbnRJbmZvLmNvbnRleHQoKS5jbGlwKGNsaXBSZWN0KTsKICAgICAgICAgcmVu
ZGVyZXIoKS5wYWludE5pbmVQaWVjZUltYWdlKG1fcGFpbnRJbmZvLmNvbnRleHQoKSwgTGF5b3V0
UmVjdChzdHJpcFgsIHN0cmlwWSwgc3RyaXBXaWR0aCwgc3RyaXBIZWlnaHQpLCByZW5kZXJlcigp
LnN0eWxlKCksIG1hc2tOaW5lUGllY2VJbWFnZSwgY29tcG9zaXRlT3ApOwpAQCAtMjA2LDE4ICsy
MDcsMTggQEAgdm9pZCBJbmxpbmVCb3hQYWludGVyOjpwYWludERlY29yYXRpb25zKCkKICAgICBp
ZiAobV9pc1Jvb3RJbmxpbmVCb3ggJiYgKCFtX2lzRmlyc3RMaW5lIHx8ICZzdHlsZSA9PSAmcmVu
ZGVyZXIoKS5zdHlsZSgpKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgTGF5b3V0UmVjdCBmcmFt
ZVJlY3QobV9pbmxpbmVCb3guZnJhbWVSZWN0KCkpOworICAgIExheW91dFJlY3QgZnJhbWVSZWN0
KG1faW5saW5lQm94LnJlY3QoKSk7CiAgICAgY29uc3RyYWluVG9MaW5lVG9wQW5kQm90dG9tSWZO
ZWVkZWQoZnJhbWVSZWN0KTsKIAogICAgIC8vIE1vdmUgeC95IHRvIG91ciBjb29yZGluYXRlcy4K
ICAgICBMYXlvdXRSZWN0IGxvY2FsUmVjdChmcmFtZVJlY3QpOwotICAgIG1faW5saW5lQm94LnJv
b3QoKS5ibG9ja0Zsb3coKS5mbGlwRm9yV3JpdGluZ01vZGUobG9jYWxSZWN0KTsKKyAgICBtX2lu
bGluZUJveC5saW5lKCktPmNvbnRhaW5pbmdCbG9jaygpLmZsaXBGb3JXcml0aW5nTW9kZShsb2Nh
bFJlY3QpOwogCiAgICAgTGF5b3V0UG9pbnQgYWRqdXN0ZWRQYWludG9mZnNldCA9IG1fcGFpbnRP
ZmZzZXQgKyBsb2NhbFJlY3QubG9jYXRpb24oKTsKICAgICBHcmFwaGljc0NvbnRleHQmIGNvbnRl
eHQgPSBtX3BhaW50SW5mby5jb250ZXh0KCk7CiAgICAgTGF5b3V0UmVjdCBwYWludFJlY3QgPSBM
YXlvdXRSZWN0KGFkanVzdGVkUGFpbnRvZmZzZXQsIGZyYW1lUmVjdC5zaXplKCkpOwogICAgIC8v
IFNoYWRvdyBjb21lcyBmaXJzdCBhbmQgaXMgYmVoaW5kIHRoZSBiYWNrZ3JvdW5kIGFuZCBib3Jk
ZXIuCi0gICAgaWYgKCFyZW5kZXJlcigpLmJveFNoYWRvd1Nob3VsZEJlQXBwbGllZFRvQmFja2dy
b3VuZChhZGp1c3RlZFBhaW50b2Zmc2V0LCBCYWNrZ3JvdW5kQmxlZWROb25lLCAmbV9pbmxpbmVC
b3gpKQorICAgIGlmICghcmVuZGVyZXIoKS5ib3hTaGFkb3dTaG91bGRCZUFwcGxpZWRUb0JhY2tn
cm91bmQoYWRqdXN0ZWRQYWludG9mZnNldCwgQmFja2dyb3VuZEJsZWVkTm9uZSwgbV9pbmxpbmVC
b3gubGVnYWN5SW5saW5lQm94KCkpKQogICAgICAgICBwYWludEJveFNoYWRvdyhTaGFkb3dTdHls
ZTo6Tm9ybWFsLCBwYWludFJlY3QpOwogCiAgICAgYXV0byBjb2xvciA9IHN0eWxlLnZpc2l0ZWRE
ZXBlbmRlbnRDb2xvcihDU1NQcm9wZXJ0eUJhY2tncm91bmRDb2xvcik7CkBAIC0yMzksOSArMjQw
LDkgQEAgdm9pZCBJbmxpbmVCb3hQYWludGVyOjpwYWludERlY29yYXRpb25zKCkKICAgICBpZiAo
aGFzQm9yZGVySW1hZ2UgJiYgIWJvcmRlckltYWdlU291cmNlLT5pc0xvYWRlZCgpKQogICAgICAg
ICByZXR1cm47IC8vIERvbid0IHBhaW50IGFueXRoaW5nIHdoaWxlIHdlIHdhaXQgZm9yIHRoZSBp
bWFnZSB0byBsb2FkLgogCi0gICAgYm9vbCBoYXNTaW5nbGVMaW5lID0gIW1faW5saW5lQm94LnBy
ZXZMaW5lQm94KCkgJiYgIW1faW5saW5lQm94Lm5leHRMaW5lQm94KCk7CisgICAgYm9vbCBoYXNT
aW5nbGVMaW5lID0gIW1faW5saW5lQm94LnByZXZpb3VzSW5saW5lQm94KCkgJiYgIW1faW5saW5l
Qm94Lm5leHRJbmxpbmVCb3goKTsKICAgICBpZiAoIWhhc0JvcmRlckltYWdlIHx8IGhhc1Npbmds
ZUxpbmUpIHsKLSAgICAgICAgcmVuZGVyZXIoKS5wYWludEJvcmRlcihtX3BhaW50SW5mbywgcGFp
bnRSZWN0LCBzdHlsZSwgQmFja2dyb3VuZEJsZWVkTm9uZSwgbV9pbmxpbmVCb3guaW5jbHVkZUxv
Z2ljYWxMZWZ0RWRnZSgpLCBtX2lubGluZUJveC5pbmNsdWRlTG9naWNhbFJpZ2h0RWRnZSgpKTsK
KyAgICAgICAgcmVuZGVyZXIoKS5wYWludEJvcmRlcihtX3BhaW50SW5mbywgcGFpbnRSZWN0LCBz
dHlsZSwgQmFja2dyb3VuZEJsZWVkTm9uZSwgbV9pbmxpbmVCb3gubGVnYWN5SW5saW5lQm94KCkt
PmluY2x1ZGVMb2dpY2FsTGVmdEVkZ2UoKSwgbV9pbmxpbmVCb3gubGVnYWN5SW5saW5lQm94KCkt
PmluY2x1ZGVMb2dpY2FsUmlnaHRFZGdlKCkpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBA
IC0yNTQsMTggKzI1NSwxOCBAQCB2b2lkIElubGluZUJveFBhaW50ZXI6OnBhaW50RGVjb3JhdGlv
bnMoKQogICAgIC8vIEZJWE1FOiBXaGF0IHRoZSBoZWNrIGRvIHdlIGRvIHdpdGggUlRMIGhlcmU/
IFRoZSBtYXRoIHdlJ3JlIHVzaW5nIGlzIG9idmlvdXNseSBub3QgcmlnaHQsCiAgICAgLy8gYnV0
IGl0IGlzbid0IGV2ZW4gY2xlYXIgaG93IHRoaXMgc2hvdWxkIHdvcmsgYXQgYWxsLgogICAgIExh
eW91dFVuaXQgbG9naWNhbE9mZnNldE9uTGluZTsKLSAgICBmb3IgKGF1dG8qIGN1cnIgPSBtX2lu
bGluZUJveC5wcmV2TGluZUJveCgpOyBjdXJyOyBjdXJyID0gY3Vyci0+cHJldkxpbmVCb3goKSkK
LSAgICAgICAgbG9naWNhbE9mZnNldE9uTGluZSArPSBjdXJyLT5sb2dpY2FsV2lkdGgoKTsKKyAg
ICBmb3IgKGF1dG8gYm94ID0gbV9pbmxpbmVCb3gucHJldmlvdXNJbmxpbmVCb3goKTsgYm94OyBi
b3gudHJhdmVyc2VQcmV2aW91c0lubGluZUJveCgpKQorICAgICAgICBsb2dpY2FsT2Zmc2V0T25M
aW5lICs9IGJveC0+bG9naWNhbFdpZHRoKCk7CiAgICAgTGF5b3V0VW5pdCB0b3RhbExvZ2ljYWxX
aWR0aCA9IGxvZ2ljYWxPZmZzZXRPbkxpbmU7Ci0gICAgZm9yIChhdXRvKiBjdXJyID0gJm1faW5s
aW5lQm94OyBjdXJyOyBjdXJyID0gY3Vyci0+bmV4dExpbmVCb3goKSkKLSAgICAgICAgdG90YWxM
b2dpY2FsV2lkdGggKz0gY3Vyci0+bG9naWNhbFdpZHRoKCk7CisgICAgZm9yIChhdXRvIGJveCA9
IG1faW5saW5lQm94Lml0ZXJhdG9yKCk7IGJveDsgYm94LnRyYXZlcnNlTmV4dElubGluZUJveCgp
KQorICAgICAgICB0b3RhbExvZ2ljYWxXaWR0aCArPSBib3gtPmxvZ2ljYWxXaWR0aCgpOwogCiAg
ICAgTGF5b3V0VW5pdCBzdHJpcFggPSBhZGp1c3RlZFBhaW50b2Zmc2V0LngoKSAtIChpc0hvcml6
b250YWwoKSA/IGxvZ2ljYWxPZmZzZXRPbkxpbmUgOiAwX2x1KTsKICAgICBMYXlvdXRVbml0IHN0
cmlwWSA9IGFkanVzdGVkUGFpbnRvZmZzZXQueSgpIC0gKGlzSG9yaXpvbnRhbCgpID8gMF9sdSA6
IGxvZ2ljYWxPZmZzZXRPbkxpbmUpOwogICAgIExheW91dFVuaXQgc3RyaXBXaWR0aCA9IGlzSG9y
aXpvbnRhbCgpID8gdG90YWxMb2dpY2FsV2lkdGggOiBmcmFtZVJlY3Qud2lkdGgoKTsKICAgICBM
YXlvdXRVbml0IHN0cmlwSGVpZ2h0ID0gaXNIb3Jpem9udGFsKCkgPyBmcmFtZVJlY3QuaGVpZ2h0
KCkgOiB0b3RhbExvZ2ljYWxXaWR0aDsKIAotICAgIExheW91dFJlY3QgY2xpcFJlY3QgPSBjbGlw
UmVjdEZvck5pbmVQaWVjZUltYWdlU3RyaXAoJm1faW5saW5lQm94LCBib3JkZXJJbWFnZSwgcGFp
bnRSZWN0KTsKKyAgICBMYXlvdXRSZWN0IGNsaXBSZWN0ID0gY2xpcFJlY3RGb3JOaW5lUGllY2VJ
bWFnZVN0cmlwKG1faW5saW5lQm94LCBib3JkZXJJbWFnZSwgcGFpbnRSZWN0KTsKICAgICBHcmFw
aGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoY29udGV4dCk7CiAgICAgY29udGV4dC5j
bGlwKGNsaXBSZWN0KTsKICAgICByZW5kZXJlcigpLnBhaW50Qm9yZGVyKG1fcGFpbnRJbmZvLCBM
YXlvdXRSZWN0KHN0cmlwWCwgc3RyaXBZLCBzdHJpcFdpZHRoLCBzdHJpcEhlaWdodCksIHN0eWxl
KTsKQEAgLTI4NiwxOCArMjg3LDE4IEBAIHZvaWQgSW5saW5lQm94UGFpbnRlcjo6cGFpbnRGaWxs
TGF5ZXIoY29uc3QgQ29sb3ImIGNvbG9yLCBjb25zdCBGaWxsTGF5ZXImIGZpbGxMCiAgICAgYXV0
byogaW1hZ2UgPSBmaWxsTGF5ZXIuaW1hZ2UoKTsKICAgICBib29sIGhhc0ZpbGxJbWFnZSA9IGlt
YWdlICYmIGltYWdlLT5jYW5SZW5kZXIoJnJlbmRlcmVyKCksIHJlbmRlcmVyKCkuc3R5bGUoKS5l
ZmZlY3RpdmVab29tKCkpOwogICAgIGJvb2wgaGFzRmlsbEltYWdlT3JCb3JkZXJSYWRpb3VzID0g
aGFzRmlsbEltYWdlIHx8IHJlbmRlcmVyKCkuc3R5bGUoKS5oYXNCb3JkZXJSYWRpdXMoKTsKLSAg
ICBib29sIGhhc1NpbmdsZUxpbmUgPSAhbV9pbmxpbmVCb3gucHJldkxpbmVCb3goKSAmJiAhbV9p
bmxpbmVCb3gubmV4dExpbmVCb3goKTsKKyAgICBib29sIGhhc1NpbmdsZUxpbmUgPSAhbV9pbmxp
bmVCb3gucHJldmlvdXNJbmxpbmVCb3goKSAmJiAhbV9pbmxpbmVCb3gubmV4dElubGluZUJveCgp
OwogCiAgICAgaWYgKCFoYXNGaWxsSW1hZ2VPckJvcmRlclJhZGlvdXMgfHwgaGFzU2luZ2xlTGlu
ZSB8fCBtX2lzUm9vdElubGluZUJveCkgewotICAgICAgICByZW5kZXJlcigpLnBhaW50RmlsbExh
eWVyRXh0ZW5kZWQobV9wYWludEluZm8sIGNvbG9yLCBmaWxsTGF5ZXIsIHJlY3QsIEJhY2tncm91
bmRCbGVlZE5vbmUsICZtX2lubGluZUJveCwgcmVjdC5zaXplKCksIG9wKTsKKyAgICAgICAgcmVu
ZGVyZXIoKS5wYWludEZpbGxMYXllckV4dGVuZGVkKG1fcGFpbnRJbmZvLCBjb2xvciwgZmlsbExh
eWVyLCByZWN0LCBCYWNrZ3JvdW5kQmxlZWROb25lLCBtX2lubGluZUJveC5sZWdhY3lJbmxpbmVC
b3goKSwgcmVjdC5zaXplKCksIG9wKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAogI2lmIEVO
QUJMRShDU1NfQk9YX0RFQ09SQVRJT05fQlJFQUspCiAgICAgaWYgKHJlbmRlcmVyKCkuc3R5bGUo
KS5ib3hEZWNvcmF0aW9uQnJlYWsoKSA9PSBCb3hEZWNvcmF0aW9uQnJlYWs6OkNsb25lKSB7CiAg
ICAgICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcihtX3BhaW50SW5mby5j
b250ZXh0KCkpOwotICAgICAgICBtX3BhaW50SW5mby5jb250ZXh0KCkuY2xpcCh7IHJlY3QueCgp
LCByZWN0LnkoKSwgTGF5b3V0VW5pdChtX2lubGluZUJveC53aWR0aCgpKSwgTGF5b3V0VW5pdCht
X2lubGluZUJveC5oZWlnaHQoKSkgfSk7Ci0gICAgICAgIHJlbmRlcmVyKCkucGFpbnRGaWxsTGF5
ZXJFeHRlbmRlZChtX3BhaW50SW5mbywgY29sb3IsIGZpbGxMYXllciwgcmVjdCwgQmFja2dyb3Vu
ZEJsZWVkTm9uZSwgJm1faW5saW5lQm94LCByZWN0LnNpemUoKSwgb3ApOworICAgICAgICBtX3Bh
aW50SW5mby5jb250ZXh0KCkuY2xpcCh7IHJlY3QueCgpLCByZWN0LnkoKSwgTGF5b3V0VW5pdCht
X2lubGluZUJveC5yZWN0KCkud2lkdGgoKSksIExheW91dFVuaXQobV9pbmxpbmVCb3gucmVjdCgp
LmhlaWdodCgpKSB9KTsKKyAgICAgICAgcmVuZGVyZXIoKS5wYWludEZpbGxMYXllckV4dGVuZGVk
KG1fcGFpbnRJbmZvLCBjb2xvciwgZmlsbExheWVyLCByZWN0LCBCYWNrZ3JvdW5kQmxlZWROb25l
LCBtX2lubGluZUJveC5sZWdhY3lJbmxpbmVCb3goKSwgcmVjdC5zaXplKCksIG9wKTsKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KICNlbmRpZgpAQCAtMzExLDMxICszMTIsMzEgQEAgdm9pZCBJbmxp
bmVCb3hQYWludGVyOjpwYWludEZpbGxMYXllcihjb25zdCBDb2xvciYgY29sb3IsIGNvbnN0IEZp
bGxMYXllciYgZmlsbEwKICAgICBMYXlvdXRVbml0IGxvZ2ljYWxPZmZzZXRPbkxpbmU7CiAgICAg
TGF5b3V0VW5pdCB0b3RhbExvZ2ljYWxXaWR0aDsKICAgICBpZiAocmVuZGVyZXIoKS5zdHlsZSgp
LmRpcmVjdGlvbigpID09IFRleHREaXJlY3Rpb246OkxUUikgewotICAgICAgICBmb3IgKGF1dG8q
IGN1cnIgPSBtX2lubGluZUJveC5wcmV2TGluZUJveCgpOyBjdXJyOyBjdXJyID0gY3Vyci0+cHJl
dkxpbmVCb3goKSkKLSAgICAgICAgICAgIGxvZ2ljYWxPZmZzZXRPbkxpbmUgKz0gY3Vyci0+bG9n
aWNhbFdpZHRoKCk7CisgICAgICAgIGZvciAoYXV0byBib3ggPSBtX2lubGluZUJveC5wcmV2aW91
c0lubGluZUJveCgpOyBib3g7IGJveC50cmF2ZXJzZVByZXZpb3VzSW5saW5lQm94KCkpCisgICAg
ICAgICAgICBsb2dpY2FsT2Zmc2V0T25MaW5lICs9IGJveC0+bG9naWNhbFdpZHRoKCk7CiAgICAg
ICAgIHRvdGFsTG9naWNhbFdpZHRoID0gbG9naWNhbE9mZnNldE9uTGluZTsKLSAgICAgICAgZm9y
IChhdXRvKiBjdXJyID0gJm1faW5saW5lQm94OyBjdXJyOyBjdXJyID0gY3Vyci0+bmV4dExpbmVC
b3goKSkKLSAgICAgICAgICAgIHRvdGFsTG9naWNhbFdpZHRoICs9IGN1cnItPmxvZ2ljYWxXaWR0
aCgpOworICAgICAgICBmb3IgKGF1dG8gYm94ID0gbV9pbmxpbmVCb3guaXRlcmF0b3IoKTsgYm94
OyBib3gudHJhdmVyc2VOZXh0SW5saW5lQm94KCkpCisgICAgICAgICAgICB0b3RhbExvZ2ljYWxX
aWR0aCArPSBib3gtPmxvZ2ljYWxXaWR0aCgpOwogICAgIH0gZWxzZSB7Ci0gICAgICAgIGZvciAo
YXV0byogY3VyciA9IG1faW5saW5lQm94Lm5leHRMaW5lQm94KCk7IGN1cnI7IGN1cnIgPSBjdXJy
LT5uZXh0TGluZUJveCgpKQotICAgICAgICAgICAgbG9naWNhbE9mZnNldE9uTGluZSArPSBjdXJy
LT5sb2dpY2FsV2lkdGgoKTsKKyAgICAgICAgZm9yIChhdXRvIGJveCA9IG1faW5saW5lQm94Lm5l
eHRJbmxpbmVCb3goKTsgYm94OyBib3gudHJhdmVyc2VOZXh0SW5saW5lQm94KCkpCisgICAgICAg
ICAgICBsb2dpY2FsT2Zmc2V0T25MaW5lICs9IGJveC0+bG9naWNhbFdpZHRoKCk7CiAgICAgICAg
IHRvdGFsTG9naWNhbFdpZHRoID0gbG9naWNhbE9mZnNldE9uTGluZTsKLSAgICAgICAgZm9yIChh
dXRvKiBjdXJyID0gJm1faW5saW5lQm94OyBjdXJyOyBjdXJyID0gY3Vyci0+cHJldkxpbmVCb3go
KSkKLSAgICAgICAgICAgIHRvdGFsTG9naWNhbFdpZHRoICs9IGN1cnItPmxvZ2ljYWxXaWR0aCgp
OworICAgICAgICBmb3IgKGF1dG8gYm94ID0gbV9pbmxpbmVCb3guaXRlcmF0b3IoKTsgYm94OyBi
b3gudHJhdmVyc2VQcmV2aW91c0lubGluZUJveCgpKQorICAgICAgICAgICAgdG90YWxMb2dpY2Fs
V2lkdGggKz0gYm94LT5sb2dpY2FsV2lkdGgoKTsKICAgICB9CiAgICAgTGF5b3V0VW5pdCBzdHJp
cFggPSByZWN0LngoKSAtIChpc0hvcml6b250YWwoKSA/IGxvZ2ljYWxPZmZzZXRPbkxpbmUgOiAw
X2x1KTsKICAgICBMYXlvdXRVbml0IHN0cmlwWSA9IHJlY3QueSgpIC0gKGlzSG9yaXpvbnRhbCgp
ID8gMF9sdSA6IGxvZ2ljYWxPZmZzZXRPbkxpbmUpOwotICAgIExheW91dFVuaXQgc3RyaXBXaWR0
aCA9IGlzSG9yaXpvbnRhbCgpID8gdG90YWxMb2dpY2FsV2lkdGggOiBMYXlvdXRVbml0KG1faW5s
aW5lQm94LndpZHRoKCkpOwotICAgIExheW91dFVuaXQgc3RyaXBIZWlnaHQgPSBpc0hvcml6b250
YWwoKSA/IExheW91dFVuaXQobV9pbmxpbmVCb3guaGVpZ2h0KCkpIDogdG90YWxMb2dpY2FsV2lk
dGg7CisgICAgTGF5b3V0VW5pdCBzdHJpcFdpZHRoID0gaXNIb3Jpem9udGFsKCkgPyB0b3RhbExv
Z2ljYWxXaWR0aCA6IExheW91dFVuaXQobV9pbmxpbmVCb3gucmVjdCgpLndpZHRoKCkpOworICAg
IExheW91dFVuaXQgc3RyaXBIZWlnaHQgPSBpc0hvcml6b250YWwoKSA/IExheW91dFVuaXQobV9p
bmxpbmVCb3gucmVjdCgpLmhlaWdodCgpKSA6IHRvdGFsTG9naWNhbFdpZHRoOwogCiAgICAgR3Jh
cGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKG1fcGFpbnRJbmZvLmNvbnRleHQoKSk7
Ci0gICAgbV9wYWludEluZm8uY29udGV4dCgpLmNsaXAoeyByZWN0LngoKSwgcmVjdC55KCksIExh
eW91dFVuaXQobV9pbmxpbmVCb3gud2lkdGgoKSksIExheW91dFVuaXQobV9pbmxpbmVCb3guaGVp
Z2h0KCkpIH0pOwotICAgIHJlbmRlcmVyKCkucGFpbnRGaWxsTGF5ZXJFeHRlbmRlZChtX3BhaW50
SW5mbywgY29sb3IsIGZpbGxMYXllciwgTGF5b3V0UmVjdChzdHJpcFgsIHN0cmlwWSwgc3RyaXBX
aWR0aCwgc3RyaXBIZWlnaHQpLCBCYWNrZ3JvdW5kQmxlZWROb25lLCAmbV9pbmxpbmVCb3gsIHJl
Y3Quc2l6ZSgpLCBvcCk7CisgICAgbV9wYWludEluZm8uY29udGV4dCgpLmNsaXAoeyByZWN0Lngo
KSwgcmVjdC55KCksIExheW91dFVuaXQobV9pbmxpbmVCb3gucmVjdCgpLndpZHRoKCkpLCBMYXlv
dXRVbml0KG1faW5saW5lQm94LnJlY3QoKS5oZWlnaHQoKSkgfSk7CisgICAgcmVuZGVyZXIoKS5w
YWludEZpbGxMYXllckV4dGVuZGVkKG1fcGFpbnRJbmZvLCBjb2xvciwgZmlsbExheWVyLCBMYXlv
dXRSZWN0KHN0cmlwWCwgc3RyaXBZLCBzdHJpcFdpZHRoLCBzdHJpcEhlaWdodCksIEJhY2tncm91
bmRCbGVlZE5vbmUsIG1faW5saW5lQm94LmxlZ2FjeUlubGluZUJveCgpLCByZWN0LnNpemUoKSwg
b3ApOwogfQogCiB2b2lkIElubGluZUJveFBhaW50ZXI6OnBhaW50Qm94U2hhZG93KFNoYWRvd1N0
eWxlIHNoYWRvd1N0eWxlLCBjb25zdCBMYXlvdXRSZWN0JiBwYWludFJlY3QpCiB7Ci0gICAgYm9v
bCBoYXNTaW5nbGVMaW5lID0gIW1faW5saW5lQm94LnByZXZMaW5lQm94KCkgJiYgIW1faW5saW5l
Qm94Lm5leHRMaW5lQm94KCk7CisgICAgYm9vbCBoYXNTaW5nbGVMaW5lID0gIW1faW5saW5lQm94
LnByZXZpb3VzSW5saW5lQm94KCkgJiYgIW1faW5saW5lQm94Lm5leHRJbmxpbmVCb3goKTsKICAg
ICBpZiAoaGFzU2luZ2xlTGluZSB8fCBtX2lzUm9vdElubGluZUJveCkgewogICAgICAgICByZW5k
ZXJlcigpLnBhaW50Qm94U2hhZG93KG1fcGFpbnRJbmZvLCBwYWludFJlY3QsIHN0eWxlKCksIHNo
YWRvd1N0eWxlKTsKICAgICAgICAgcmV0dXJuOwpAQCAtMzQzLDIzICszNDQsMjMgQEAgdm9pZCBJ
bmxpbmVCb3hQYWludGVyOjpwYWludEJveFNoYWRvdyhTaGFkb3dTdHlsZSBzaGFkb3dTdHlsZSwg
Y29uc3QgTGF5b3V0UmVjdCYKIAogICAgIC8vIEZJWE1FOiBXZSBjYW4gZG8gYmV0dGVyIGhlcmUg
aW4gdGhlIG11bHRpLWxpbmUgY2FzZS4gV2Ugd2FudCB0byBwdXNoIGEgY2xpcCBzbyB0aGF0IHRo
ZSBzaGFkb3cgZG9lc24ndAogICAgIC8vIHByb3RydWRlIGluY29ycmVjdGx5IGF0IHRoZSBlZGdl
cywgYW5kIHdlIHdhbnQgdG8gcG9zc2libHkgaW5jbHVkZSBzaGFkb3dzIGNhc3QgZnJvbSB0aGUg
cHJldmlvdXMvZm9sbG93aW5nIGxpbmVzCi0gICAgcmVuZGVyZXIoKS5wYWludEJveFNoYWRvdyht
X3BhaW50SW5mbywgcGFpbnRSZWN0LCBzdHlsZSgpLCBzaGFkb3dTdHlsZSwgbV9pbmxpbmVCb3gu
aW5jbHVkZUxvZ2ljYWxMZWZ0RWRnZSgpLCBtX2lubGluZUJveC5pbmNsdWRlTG9naWNhbFJpZ2h0
RWRnZSgpKTsKKyAgICByZW5kZXJlcigpLnBhaW50Qm94U2hhZG93KG1fcGFpbnRJbmZvLCBwYWlu
dFJlY3QsIHN0eWxlKCksIHNoYWRvd1N0eWxlLCBtX2lubGluZUJveC5sZWdhY3lJbmxpbmVCb3go
KS0+aW5jbHVkZUxvZ2ljYWxMZWZ0RWRnZSgpLCBtX2lubGluZUJveC5sZWdhY3lJbmxpbmVCb3go
KS0+aW5jbHVkZUxvZ2ljYWxSaWdodEVkZ2UoKSk7CiB9CiAKIHZvaWQgSW5saW5lQm94UGFpbnRl
cjo6Y29uc3RyYWluVG9MaW5lVG9wQW5kQm90dG9tSWZOZWVkZWQoTGF5b3V0UmVjdCYgcmVjdCkg
Y29uc3QKIHsKICAgICBpZiAocmVuZGVyZXIoKS5kb2N1bWVudCgpLmluTm9RdWlya3NNb2RlKCkp
CiAgICAgICAgIHJldHVybjsKLSAgICBpZiAobV9pbmxpbmVCb3guaGFzVGV4dENoaWxkcmVuKCkp
CisgICAgaWYgKG1faW5saW5lQm94LmxlZ2FjeUlubGluZUJveCgpLT5oYXNUZXh0Q2hpbGRyZW4o
KSkKICAgICAgICAgcmV0dXJuOwotICAgIGlmIChtX2lubGluZUJveC5kZXNjZW5kYW50c0hhdmVT
YW1lTGluZUhlaWdodEFuZEJhc2VsaW5lKCkgJiYgbV9pbmxpbmVCb3guaGFzVGV4dERlc2NlbmRh
bnRzKCkpCisgICAgaWYgKG1faW5saW5lQm94LmxlZ2FjeUlubGluZUJveCgpLT5kZXNjZW5kYW50
c0hhdmVTYW1lTGluZUhlaWdodEFuZEJhc2VsaW5lKCkgJiYgbV9pbmxpbmVCb3gubGVnYWN5SW5s
aW5lQm94KCktPmhhc1RleHREZXNjZW5kYW50cygpKQogICAgICAgICByZXR1cm47CiAKICAgICBM
YXlvdXRVbml0IGxvZ2ljYWxUb3AgPSBpc0hvcml6b250YWwoKSA/IHJlY3QueSgpIDogcmVjdC54
KCk7CiAgICAgTGF5b3V0VW5pdCBsb2dpY2FsSGVpZ2h0ID0gaXNIb3Jpem9udGFsKCkgPyByZWN0
LmhlaWdodCgpIDogcmVjdC53aWR0aCgpOwogCi0gICAgTGF5b3V0VW5pdCBib3R0b20gPSBzdGQ6
Om1pbihtX2lubGluZUJveC5yb290KCkubGluZUJvdHRvbSgpLCBsb2dpY2FsVG9wICsgbG9naWNh
bEhlaWdodCk7Ci0gICAgbG9naWNhbFRvcCA9IHN0ZDo6bWF4KG1faW5saW5lQm94LnJvb3QoKS5s
aW5lVG9wKCksIGxvZ2ljYWxUb3ApOworICAgIExheW91dFVuaXQgYm90dG9tID0gc3RkOjptaW4o
bV9pbmxpbmVCb3gubGluZSgpLT5ib3R0b20oKSwgbG9naWNhbFRvcCArIGxvZ2ljYWxIZWlnaHQp
OworICAgIGxvZ2ljYWxUb3AgPSBzdGQ6Om1heChtX2lubGluZUJveC5saW5lKCktPnRvcCgpLCBs
b2dpY2FsVG9wKTsKICAgICBsb2dpY2FsSGVpZ2h0ID0gYm90dG9tIC0gbG9naWNhbFRvcDsKICAg
ICBpZiAoaXNIb3Jpem9udGFsKCkpIHsKICAgICAgICAgcmVjdC5zZXRZKGxvZ2ljYWxUb3ApOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZUJveFBhaW50ZXIuaCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVCb3hQYWludGVyLmgKaW5kZXggODJjZjJh
NTIzNjBiZDVmMGE1NTQ3M2Q5ODY3ZDZkNjg4ODA5NzM5Ni4uZjA5NTIzNTQyY2I2NWZmMWU1NTJh
YmQ2NmY4NzMxNjlmMjE2NTBkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L0lubGluZUJveFBhaW50ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5l
Qm94UGFpbnRlci5oCkBAIC0yNiw2ICsyNiw3IEBACiAKICNpbmNsdWRlICJGbG9hdFJlY3QuaCIK
ICNpbmNsdWRlICJHcmFwaGljc1R5cGVzLmgiCisjaW5jbHVkZSAiSW5saW5lSXRlcmF0b3JJbmxp
bmVCb3guaCIKICNpbmNsdWRlICJMYXlvdXRSZWN0LmgiCiAjaW5jbHVkZSAiU2hhZG93RGF0YS5o
IgogCkBAIC01OSw3ICs2MCw3IEBAIHByaXZhdGU6CiAgICAgUmVuZGVyQm94TW9kZWxPYmplY3Qm
IHJlbmRlcmVyKCkgY29uc3QgeyByZXR1cm4gY29uc3RfY2FzdDxSZW5kZXJCb3hNb2RlbE9iamVj
dCY+KG1fcmVuZGVyZXIpOyB9CiAgICAgYm9vbCBpc0hvcml6b250YWwoKSBjb25zdCB7IHJldHVy
biBtX2lzSG9yaXpvbnRhbDsgfQogCi0gICAgY29uc3QgTGVnYWN5SW5saW5lRmxvd0JveCYgbV9p
bmxpbmVCb3g7CisgICAgY29uc3QgSW5saW5lSXRlcmF0b3I6OklubGluZUJveCBtX2lubGluZUJv
eDsKICAgICBQYWludEluZm8mIG1fcGFpbnRJbmZvOwogICAgIGNvbnN0IExheW91dFBvaW50IG1f
cGFpbnRPZmZzZXQ7CiAgICAgY29uc3QgUmVuZGVyQm94TW9kZWxPYmplY3QmIG1fcmVuZGVyZXI7
Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>