<?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>219031</bug_id>
          
          <creation_ts>2020-11-17 06:31:56 -0800</creation_ts>
          <short_desc>[LFC][Integration] Cache inline boxes in logical order to run iterator</short_desc>
          <delta_ts>2020-11-17 12:25:19 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>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="Nobody">webkit-unassigned</assigned_to>
          <cc>bfulgham</cc>
    
    <cc>changseok</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>glenn</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>mmaxfield</cc>
    
    <cc>pdr</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>zalan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1708209</commentid>
    <comment_count>0</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2020-11-17 06:31:56 -0800</bug_when>
    <thetext>Expand the use of existing cache. This will make porting code in VisibleUnit.cpp easier.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1708230</commentid>
    <comment_count>1</comment_count>
      <attachid>414340</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2020-11-17 07:57:33 -0800</bug_when>
    <thetext>Created attachment 414340
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1708320</commentid>
    <comment_count>2</comment_count>
      <attachid>414360</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2020-11-17 11:47:06 -0800</bug_when>
    <thetext>Created attachment 414360
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1708333</commentid>
    <comment_count>3</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-11-17 12:24:43 -0800</bug_when>
    <thetext>Committed r269916: &lt;https://trac.webkit.org/changeset/269916&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 414360.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1708334</commentid>
    <comment_count>4</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-11-17 12:25:19 -0800</bug_when>
    <thetext>&lt;rdar://problem/71498032&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>414340</attachid>
            <date>2020-11-17 07:57:33 -0800</date>
            <delta_ts>2020-11-17 11:47:06 -0800</delta_ts>
            <desc>patch</desc>
            <filename>lfc-logical-iterator.patch</filename>
            <type>text/plain</type>
            <size>20638</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBhNDhlMGM0OWVlYzMuLjE0MGVlN2YyZDE2NiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDUzIEBACisyMDIwLTExLTE3ICBBbnR0aSBLb2l2aXN0byAgPGFudHRpQGFwcGxlLmNv
bT4KKworICAgICAgICBbTEZDXVtJbnRlZ3JhdGlvbl0gQ2FjaGUgaW5saW5lIGJveGVzIGluIGxv
Z2ljYWwgb3JkZXIgdG8gcnVuIGl0ZXJhdG9yCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMTkwMzEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBFeHBhbmQgdXNlIG9mIHRoZSBleGlzdGluZyBjYWNoZSB0byBj
b3ZlciBsaW5lIHRyYXZlcnNhbC4gVGhpcyB3aWxsIG1ha2UgcG9ydGluZyBjb2RlIGluIFZpc2li
bGVVbml0LmNwcCB0byBpdGVyYXRvciBlYXNpZXIuCisKKyAgICAgICAgQWxzbyBhIGJ1bmNoIG9m
IHJlbGF0ZWQgY2xlYW51cHMuCisKKyAgICAgICAgKiBsYXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0
SW50ZWdyYXRpb25MaW5lSXRlcmF0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0SW50
ZWdyYXRpb246OkxpbmVJdGVyYXRvcjo6bG9naWNhbFN0YXJ0UnVuIGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OkxheW91dEludGVncmF0aW9uOjpMaW5lSXRlcmF0b3I6OmxvZ2ljYWxFbmRSdW4g
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0SW50ZWdyYXRpb246OkxpbmVJdGVyYXRv
cjo6bG9naWNhbFN0YXJ0UnVuV2l0aE5vZGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5
b3V0SW50ZWdyYXRpb246OkxpbmVJdGVyYXRvcjo6bG9naWNhbEVuZFJ1bldpdGhOb2RlIGNvbnN0
KToKKyAgICAgICAgKiBsYXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRpb25MaW5lSXRl
cmF0b3IuaDoKKyAgICAgICAgKiBsYXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRpb25M
aW5lSXRlcmF0b3JMZWdhY3lQYXRoLmg6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXRJbnRlZ3Jh
dGlvbjo6TGluZUl0ZXJhdG9yTGVnYWN5UGF0aDo6bG9naWNhbFN0YXJ0UnVuIGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkxheW91dEludGVncmF0aW9uOjpMaW5lSXRlcmF0b3JMZWdhY3lQYXRo
Ojpsb2dpY2FsRW5kUnVuIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dEludGVncmF0
aW9uOjpMaW5lSXRlcmF0b3JMZWdhY3lQYXRoOjpsb2dpY2FsU3RhcnRSdW5XaXRoTm9kZSBjb25z
dCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpMYXlvdXRJbnRlZ3JhdGlvbjo6TGluZUl0
ZXJhdG9yTGVnYWN5UGF0aDo6bG9naWNhbEVuZFJ1bldpdGhOb2RlIGNvbnN0KTogRGVsZXRlZC4K
KyAgICAgICAgKiBsYXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRpb25MaW5lSXRlcmF0
b3JNb2Rlcm5QYXRoLmg6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXRJbnRlZ3JhdGlvbjo6TGlu
ZUl0ZXJhdG9yTW9kZXJuUGF0aDo6bG9naWNhbFN0YXJ0UnVuIGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6OkxheW91dEludGVncmF0aW9uOjpMaW5lSXRlcmF0b3JNb2Rlcm5QYXRoOjpsb2dpY2Fs
RW5kUnVuIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dEludGVncmF0aW9uOjpMaW5l
SXRlcmF0b3JNb2Rlcm5QYXRoOjpsb2dpY2FsU3RhcnRSdW5XaXRoTm9kZSBjb25zdCk6IERlbGV0
ZWQuCisgICAgICAgIChXZWJDb3JlOjpMYXlvdXRJbnRlZ3JhdGlvbjo6TGluZUl0ZXJhdG9yTW9k
ZXJuUGF0aDo6bG9naWNhbEVuZFJ1bldpdGhOb2RlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAg
KiBsYXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRpb25SdW5JdGVyYXRvci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpMYXlvdXRJbnRlZ3JhdGlvbjo6UnVuSXRlcmF0b3I6OnRyYXZlcnNl
TmV4dE9uTGluZUluTG9naWNhbE9yZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dEludGVn
cmF0aW9uOjpSdW5JdGVyYXRvcjo6dHJhdmVyc2VQcmV2aW91c09uTGluZUluTG9naWNhbE9yZGVy
KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dEludGVncmF0aW9uOjpmaXJzdFRleHRSdW5JblRl
eHRPcmRlckZvcik6CisgICAgICAgICogbGF5b3V0L2ludGVncmF0aW9uL0xheW91dEludGVncmF0
aW9uUnVuSXRlcmF0b3IuaDoKKyAgICAgICAgKiBsYXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0SW50
ZWdyYXRpb25SdW5JdGVyYXRvckxlZ2FjeVBhdGguaDoKKyAgICAgICAgKFdlYkNvcmU6OkxheW91
dEludGVncmF0aW9uOjpSdW5JdGVyYXRvckxlZ2FjeVBhdGg6OlJ1bkl0ZXJhdG9yTGVnYWN5UGF0
aCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXRJbnRlZ3JhdGlvbjo6UnVuSXRlcmF0b3JMZWdh
Y3lQYXRoOjp0cmF2ZXJzZU5leHRUZXh0UnVuSW5UZXh0T3JkZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6TGF5b3V0SW50ZWdyYXRpb246OlJ1bkl0ZXJhdG9yTGVnYWN5UGF0aDo6dHJhdmVyc2VOZXh0
T25MaW5lSW5Mb2dpY2FsT3JkZXIpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0SW50ZWdyYXRp
b246OlJ1bkl0ZXJhdG9yTGVnYWN5UGF0aDo6dHJhdmVyc2VQcmV2aW91c09uTGluZUluTG9naWNh
bE9yZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dEludGVncmF0aW9uOjpSdW5JdGVyYXRv
ckxlZ2FjeVBhdGg6OmlubGluZVRleHRCb3ggY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5
b3V0SW50ZWdyYXRpb246OlJ1bkl0ZXJhdG9yTGVnYWN5UGF0aDo6aW5pdGlhbGl6ZUxvZ2ljYWxP
cmRlckNhY2hlRm9yTGluZSk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXRJbnRlZ3JhdGlvbjo6
UnVuSXRlcmF0b3JMZWdhY3lQYXRoOjp0cmF2ZXJzZU5leHRJbmxpbmVCb3hJbkNhY2hlT3JkZXIp
OgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0SW50ZWdyYXRpb246OlJ1bkl0ZXJhdG9yTGVnYWN5
UGF0aDo6dHJhdmVyc2VQcmV2aW91c0lubGluZUJveEluQ2FjaGVPcmRlcik6CisgICAgICAgIChX
ZWJDb3JlOjpMYXlvdXRJbnRlZ3JhdGlvbjo6UnVuSXRlcmF0b3JMZWdhY3lQYXRoOjpuZXh0SW5s
aW5lVGV4dEJveEluVGV4dE9yZGVyIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBsYXlvdXQv
aW50ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRpb25SdW5JdGVyYXRvck1vZGVyblBhdGguaDoKKyAg
ICAgICAgKFdlYkNvcmU6OkxheW91dEludGVncmF0aW9uOjpSdW5JdGVyYXRvck1vZGVyblBhdGg6
OnRyYXZlcnNlTmV4dE9uTGluZUluTG9naWNhbE9yZGVyKToKKyAgICAgICAgKFdlYkNvcmU6Okxh
eW91dEludGVncmF0aW9uOjpSdW5JdGVyYXRvck1vZGVyblBhdGg6OnRyYXZlcnNlUHJldmlvdXNP
bkxpbmVJbkxvZ2ljYWxPcmRlcik6CisgICAgICAgICogcmVuZGVyaW5nL1Jvb3RJbmxpbmVCb3gu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Um9vdElubGluZUJveDo6Z2V0TG9naWNhbFN0YXJ0Qm94
V2l0aE5vZGUgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6Um9vdElubGluZUJv
eDo6Z2V0TG9naWNhbEVuZEJveFdpdGhOb2RlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBy
ZW5kZXJpbmcvUm9vdElubGluZUJveC5oOgorCiAyMDIwLTExLTE2ICBLaW1tbyBLaW5udW5lbiAg
PGtraW5udW5lbkBhcHBsZS5jb20+CiAKICAgICAgICAgVGV4dHVyZXMgRmFpbCB0byBSZW5kZXIg
aW4gV2ViR0wgZnJvbSBITFMgU3RyZWFtIG9uIGlQaG9uZSAxMiBbaU9TIDE0LjJdCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRpb25M
aW5lSXRlcmF0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0xheW91
dEludGVncmF0aW9uTGluZUl0ZXJhdG9yLmNwcAppbmRleCA2NDFiMDQxMDY1NTUuLmMxY2FmZjhm
N2Y4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0xheW91
dEludGVncmF0aW9uTGluZUl0ZXJhdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQv
aW50ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRpb25MaW5lSXRlcmF0b3IuY3BwCkBAIC05MCwyMCAr
OTAsMzggQEAgUnVuSXRlcmF0b3IgTGluZUl0ZXJhdG9yOjpsYXN0UnVuKCkgY29uc3QKICAgICB9
KTsKIH0KIAotUnVuSXRlcmF0b3IgTGluZUl0ZXJhdG9yOjpsb2dpY2FsU3RhcnRSdW5XaXRoTm9k
ZSgpIGNvbnN0CitSdW5JdGVyYXRvciBMaW5lSXRlcmF0b3I6OmxvZ2ljYWxTdGFydFJ1bigpIGNv
bnN0CiB7CiAgICAgcmV0dXJuIFdURjo6c3dpdGNoT24obV9saW5lLm1fcGF0aFZhcmlhbnQsIFtd
KGF1dG8mIHBhdGgpIC0+IFJ1bkl0ZXJhdG9yIHsKLSAgICAgICAgcmV0dXJuIHsgcGF0aC5sb2dp
Y2FsU3RhcnRSdW5XaXRoTm9kZSgpIH07CisgICAgICAgIHJldHVybiB7IHBhdGgubG9naWNhbFN0
YXJ0UnVuKCkgfTsKICAgICB9KTsKIH0KIAotUnVuSXRlcmF0b3IgTGluZUl0ZXJhdG9yOjpsb2dp
Y2FsRW5kUnVuV2l0aE5vZGUoKSBjb25zdAorUnVuSXRlcmF0b3IgTGluZUl0ZXJhdG9yOjpsb2dp
Y2FsRW5kUnVuKCkgY29uc3QKIHsKICAgICByZXR1cm4gV1RGOjpzd2l0Y2hPbihtX2xpbmUubV9w
YXRoVmFyaWFudCwgW10oYXV0byYgcGF0aCkgLT4gUnVuSXRlcmF0b3IgewotICAgICAgICByZXR1
cm4geyBwYXRoLmxvZ2ljYWxFbmRSdW5XaXRoTm9kZSgpIH07CisgICAgICAgIHJldHVybiB7IHBh
dGgubG9naWNhbEVuZFJ1bigpIH07CiAgICAgfSk7CiB9CiAKK1J1bkl0ZXJhdG9yIExpbmVJdGVy
YXRvcjo6bG9naWNhbFN0YXJ0UnVuV2l0aE5vZGUoKSBjb25zdAoreworICAgIGZvciAoYXV0byBy
dW4gPSBsb2dpY2FsU3RhcnRSdW4oKTsgcnVuOyBydW4udHJhdmVyc2VOZXh0T25MaW5lSW5Mb2dp
Y2FsT3JkZXIoKSkgeworICAgICAgICBpZiAocnVuLT5yZW5kZXJlcigpLm5vZGUoKSkKKyAgICAg
ICAgICAgIHJldHVybiBydW47CisgICAgfQorICAgIHJldHVybiB7IH07Cit9CisKK1J1bkl0ZXJh
dG9yIExpbmVJdGVyYXRvcjo6bG9naWNhbEVuZFJ1bldpdGhOb2RlKCkgY29uc3QKK3sKKyAgICBm
b3IgKGF1dG8gcnVuID0gbG9naWNhbEVuZFJ1bigpOyBydW47IHJ1bi50cmF2ZXJzZVByZXZpb3Vz
T25MaW5lSW5Mb2dpY2FsT3JkZXIoKSkgeworICAgICAgICBpZiAocnVuLT5yZW5kZXJlcigpLm5v
ZGUoKSkKKyAgICAgICAgICAgIHJldHVybiBydW47CisgICAgfQorICAgIHJldHVybiB7IH07Cit9
CisKIExpbmVJdGVyYXRvciBmaXJzdExpbmVGb3IoY29uc3QgUmVuZGVyQmxvY2tGbG93JiBmbG93
KQogewogI2lmIEVOQUJMRShMQVlPVVRfRk9STUFUVElOR19DT05URVhUKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0xheW91dEludGVncmF0aW9uTGluZUl0
ZXJhdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0SW50ZWdy
YXRpb25MaW5lSXRlcmF0b3IuaAppbmRleCAzNTY2MmMxYWIyZmIuLjBhNDFmZjYyOTkwYSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0xheW91dEludGVncmF0
aW9uTGluZUl0ZXJhdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9u
L0xheW91dEludGVncmF0aW9uTGluZUl0ZXJhdG9yLmgKQEAgLTEwNiwxMSArMTA2LDE1IEBAIHB1
YmxpYzoKIAogICAgIFJ1bkl0ZXJhdG9yIGZpcnN0UnVuKCkgY29uc3Q7CiAgICAgUnVuSXRlcmF0
b3IgbGFzdFJ1bigpIGNvbnN0OwotICAgIFJ1bkl0ZXJhdG9yIGxvZ2ljYWxTdGFydFJ1bldpdGhO
b2RlKCkgY29uc3Q7Ci0gICAgUnVuSXRlcmF0b3IgbG9naWNhbEVuZFJ1bldpdGhOb2RlKCkgY29u
c3Q7CisKICAgICBSdW5JdGVyYXRvciBjbG9zZXN0UnVuRm9yUG9pbnQoY29uc3QgSW50UG9pbnQm
IHBvaW50SW5Db250ZW50cywgYm9vbCBlZGl0YWJsZU9ubHkpOwogICAgIFJ1bkl0ZXJhdG9yIGNs
b3Nlc3RSdW5Gb3JMb2dpY2FsTGVmdFBvc2l0aW9uKGludCBwb3NpdGlvbiwgYm9vbCBlZGl0YWJs
ZU9ubHkgPSBmYWxzZSk7CiAKKyAgICBSdW5JdGVyYXRvciBsb2dpY2FsU3RhcnRSdW4oKSBjb25z
dDsKKyAgICBSdW5JdGVyYXRvciBsb2dpY2FsRW5kUnVuKCkgY29uc3Q7CisgICAgUnVuSXRlcmF0
b3IgbG9naWNhbFN0YXJ0UnVuV2l0aE5vZGUoKSBjb25zdDsKKyAgICBSdW5JdGVyYXRvciBsb2dp
Y2FsRW5kUnVuV2l0aE5vZGUoKSBjb25zdDsKKwogcHJpdmF0ZToKICAgICBQYXRoTGluZSBtX2xp
bmU7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0xh
eW91dEludGVncmF0aW9uTGluZUl0ZXJhdG9yTGVnYWN5UGF0aC5oIGIvU291cmNlL1dlYkNvcmUv
bGF5b3V0L2ludGVncmF0aW9uL0xheW91dEludGVncmF0aW9uTGluZUl0ZXJhdG9yTGVnYWN5UGF0
aC5oCmluZGV4IDZjNjI4OWVkYTY3Ny4uZDljZGYxYmE0OTk5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRpb25MaW5lSXRlcmF0b3JM
ZWdhY3lQYXRoLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0xheW91
dEludGVncmF0aW9uTGluZUl0ZXJhdG9yTGVnYWN5UGF0aC5oCkBAIC04NiwyMiArODYsMTggQEAg
cHVibGljOgogICAgICAgICByZXR1cm4geyBtX3Jvb3RJbmxpbmVCb3gtPmxhc3RMZWFmRGVzY2Vu
ZGFudCgpIH07CiAgICAgfQogCi0gICAgUnVuSXRlcmF0b3JMZWdhY3lQYXRoIGxvZ2ljYWxTdGFy
dFJ1bldpdGhOb2RlKCkgY29uc3QKKworICAgIFJ1bkl0ZXJhdG9yTGVnYWN5UGF0aCBsb2dpY2Fs
U3RhcnRSdW4oKSBjb25zdAogICAgIHsKLSAgICAgICAgSW5saW5lQm94KiBib3ggPSBudWxscHRy
OwotICAgICAgICBtX3Jvb3RJbmxpbmVCb3gtPmdldExvZ2ljYWxTdGFydEJveFdpdGhOb2RlKGJv
eCk7Ci0gICAgICAgIHJldHVybiB7IGJveCB9OworICAgICAgICByZXR1cm4geyAqbV9yb290SW5s
aW5lQm94LCBSdW5JdGVyYXRvckxlZ2FjeVBhdGg6OkxvZ2ljYWxPcmRlcjo6U3RhcnQgfTsKICAg
ICB9CiAKLSAgICBSdW5JdGVyYXRvckxlZ2FjeVBhdGggbG9naWNhbEVuZFJ1bldpdGhOb2RlKCkg
Y29uc3QKKyAgICBSdW5JdGVyYXRvckxlZ2FjeVBhdGggbG9naWNhbEVuZFJ1bigpIGNvbnN0CiAg
ICAgewotICAgICAgICBJbmxpbmVCb3gqIGJveCA9IG51bGxwdHI7Ci0gICAgICAgIG1fcm9vdElu
bGluZUJveC0+Z2V0TG9naWNhbEVuZEJveFdpdGhOb2RlKGJveCk7Ci0gICAgICAgIHJldHVybiB7
IGJveCB9OworICAgICAgICByZXR1cm4geyAqbV9yb290SW5saW5lQm94LCBSdW5JdGVyYXRvckxl
Z2FjeVBhdGg6OkxvZ2ljYWxPcmRlcjo6RW5kIH07CiAgICAgfQogCiBwcml2YXRlOgotCiAgICAg
Y29uc3QgUm9vdElubGluZUJveCogbV9yb290SW5saW5lQm94OwogfTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0xheW91dEludGVncmF0aW9uTGluZUl0
ZXJhdG9yTW9kZXJuUGF0aC5oIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0xh
eW91dEludGVncmF0aW9uTGluZUl0ZXJhdG9yTW9kZXJuUGF0aC5oCmluZGV4IGExOTJkYWExNjI4
OC4uNjUxNWExNWQ1NmJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdy
YXRpb24vTGF5b3V0SW50ZWdyYXRpb25MaW5lSXRlcmF0b3JNb2Rlcm5QYXRoLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0xheW91dEludGVncmF0aW9uTGluZUl0ZXJh
dG9yTW9kZXJuUGF0aC5oCkBAIC0xMDcsMzAgKzEwNywxNyBAQCBwdWJsaWM6CiAgICAgICAgIHJl
dHVybiB7ICptX2lubGluZUNvbnRlbnQsIGxpbmUoKS5maXJzdFJ1bkluZGV4KCkgKyBydW5Db3Vu
dCAtIDEgfTsKICAgICB9CiAKLSAgICBSdW5JdGVyYXRvck1vZGVyblBhdGggbG9naWNhbFN0YXJ0
UnVuV2l0aE5vZGUoKSBjb25zdAorICAgIFJ1bkl0ZXJhdG9yTW9kZXJuUGF0aCBsb2dpY2FsU3Rh
cnRSdW4oKSBjb25zdAogICAgIHsKLSAgICAgICAgYXV0byBzdGFydEluZGV4ID0gbGluZSgpLmZp
cnN0UnVuSW5kZXgoKTsKLSAgICAgICAgYXV0byBlbmRJbmRleCA9IHN0YXJ0SW5kZXggKyBsaW5l
KCkucnVuQ291bnQoKTsKLSAgICAgICAgZm9yIChhdXRvIHJ1bkluZGV4ID0gc3RhcnRJbmRleDsg
cnVuSW5kZXggPCBlbmRJbmRleDsgKytydW5JbmRleCkgewotICAgICAgICAgICAgYXV0byYgcmVu
ZGVyZXIgPSBtX2lubGluZUNvbnRlbnQtPnJlbmRlcmVyRm9yTGF5b3V0Qm94KG1faW5saW5lQ29u
dGVudC0+cnVuc1tydW5JbmRleF0ubGF5b3V0Qm94KCkpOwotICAgICAgICAgICAgaWYgKHJlbmRl
cmVyLm5vZGUoKSkKLSAgICAgICAgICAgICAgICByZXR1cm4geyAqbV9pbmxpbmVDb250ZW50LCBy
dW5JbmRleCB9OwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiB7ICptX2lubGluZUNvbnRlbnQg
fTsKKyAgICAgICAgcmV0dXJuIGZpcnN0UnVuKCk7CiAgICAgfQogCi0gICAgUnVuSXRlcmF0b3JN
b2Rlcm5QYXRoIGxvZ2ljYWxFbmRSdW5XaXRoTm9kZSgpIGNvbnN0CisgICAgUnVuSXRlcmF0b3JN
b2Rlcm5QYXRoIGxvZ2ljYWxFbmRSdW4oKSBjb25zdAogICAgIHsKLSAgICAgICAgYXV0byBzdGFy
dEluZGV4ID0gbGluZSgpLmZpcnN0UnVuSW5kZXgoKTsKLSAgICAgICAgYXV0byBlbmRJbmRleCA9
IHN0YXJ0SW5kZXggKyBsaW5lKCkucnVuQ291bnQoKTsKLSAgICAgICAgZm9yIChhdXRvIHJ1bklu
ZGV4ID0gZW5kSW5kZXg7IHJ1bkluZGV4LS0gPiBzdGFydEluZGV4OykgewotICAgICAgICAgICAg
YXV0byYgcmVuZGVyZXIgPSBtX2lubGluZUNvbnRlbnQtPnJlbmRlcmVyRm9yTGF5b3V0Qm94KG1f
aW5saW5lQ29udGVudC0+cnVuc1tydW5JbmRleF0ubGF5b3V0Qm94KCkpOwotICAgICAgICAgICAg
aWYgKHJlbmRlcmVyLm5vZGUoKSkKLSAgICAgICAgICAgICAgICByZXR1cm4geyAqbV9pbmxpbmVD
b250ZW50LCBydW5JbmRleCB9OwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiB7ICptX2lubGlu
ZUNvbnRlbnQgfTsKKyAgICAgICAgcmV0dXJuIGxhc3RSdW4oKTsKICAgICB9CiAKKwogcHJpdmF0
ZToKICAgICBjb25zdCBJbmxpbmVDb250ZW50OjpMaW5lcyYgbGluZXMoKSBjb25zdCB7IHJldHVy
biBtX2lubGluZUNvbnRlbnQtPmxpbmVzOyB9CiAgICAgY29uc3QgTGluZSYgbGluZSgpIGNvbnN0
IHsgcmV0dXJuIGxpbmVzKClbbV9saW5lSW5kZXhdOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9sYXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRpb25SdW5JdGVyYXRvci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRpb25SdW5J
dGVyYXRvci5jcHAKaW5kZXggZmQwMjNkYzczOTExLi40NDI0ZmI3ZDU0OGMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3JhdGlvblJ1bkl0
ZXJhdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0
SW50ZWdyYXRpb25SdW5JdGVyYXRvci5jcHAKQEAgLTE0NSw2ICsxNDUsMjIgQEAgUnVuSXRlcmF0
b3ImIFJ1bkl0ZXJhdG9yOjp0cmF2ZXJzZVByZXZpb3VzT25MaW5lSWdub3JpbmdMaW5lQnJlYWso
KQogICAgIHJldHVybiAqdGhpczsKIH0KIAorUnVuSXRlcmF0b3ImIFJ1bkl0ZXJhdG9yOjp0cmF2
ZXJzZU5leHRPbkxpbmVJbkxvZ2ljYWxPcmRlcigpCit7CisgICAgV1RGOjpzd2l0Y2hPbihtX3J1
bi5tX3BhdGhWYXJpYW50LCBbXShhdXRvJiBwYXRoKSB7CisgICAgICAgIHBhdGgudHJhdmVyc2VO
ZXh0T25MaW5lSW5Mb2dpY2FsT3JkZXIoKTsKKyAgICB9KTsKKyAgICByZXR1cm4gKnRoaXM7Cit9
CisKK1J1bkl0ZXJhdG9yJiBSdW5JdGVyYXRvcjo6dHJhdmVyc2VQcmV2aW91c09uTGluZUluTG9n
aWNhbE9yZGVyKCkKK3sKKyAgICBXVEY6OnN3aXRjaE9uKG1fcnVuLm1fcGF0aFZhcmlhbnQsIFtd
KGF1dG8mIHBhdGgpIHsKKyAgICAgICAgcGF0aC50cmF2ZXJzZVByZXZpb3VzT25MaW5lSW5Mb2dp
Y2FsT3JkZXIoKTsKKyAgICB9KTsKKyAgICByZXR1cm4gKnRoaXM7Cit9CisKIFRleHRSdW5JdGVy
YXRvciBmaXJzdFRleHRSdW5Gb3IoY29uc3QgUmVuZGVyVGV4dCYgdGV4dCkKIHsKICNpZiBFTkFC
TEUoTEFZT1VUX0ZPUk1BVFRJTkdfQ09OVEVYVCkKQEAgLTE1OCwxMCArMTc0LDEyIEBAIFRleHRS
dW5JdGVyYXRvciBmaXJzdFRleHRSdW5Gb3IoY29uc3QgUmVuZGVyVGV4dCYgdGV4dCkKIFRleHRS
dW5JdGVyYXRvciBmaXJzdFRleHRSdW5JblRleHRPcmRlckZvcihjb25zdCBSZW5kZXJUZXh0JiB0
ZXh0KQogewogICAgIGlmICh0ZXh0LmZpcnN0VGV4dEJveCgpICYmIHRleHQuY29udGFpbnNSZXZl
cnNlZFRleHQoKSkgewotICAgICAgICBWZWN0b3I8Y29uc3QgSW5saW5lVGV4dEJveCo+IHNvcnRl
ZFRleHRCb3hlczsKKyAgICAgICAgVmVjdG9yPGNvbnN0IElubGluZUJveCo+IHNvcnRlZFRleHRC
b3hlczsKICAgICAgICAgZm9yIChhdXRvKiB0ZXh0Qm94ID0gdGV4dC5maXJzdFRleHRCb3goKTsg
dGV4dEJveDsgdGV4dEJveCA9IHRleHRCb3gtPm5leHRUZXh0Qm94KCkpCiAgICAgICAgICAgICBz
b3J0ZWRUZXh0Qm94ZXMuYXBwZW5kKHRleHRCb3gpOwotICAgICAgICBzdGQ6OnNvcnQoc29ydGVk
VGV4dEJveGVzLmJlZ2luKCksIHNvcnRlZFRleHRCb3hlcy5lbmQoKSwgSW5saW5lVGV4dEJveDo6
Y29tcGFyZUJ5U3RhcnQpOworICAgICAgICBzdGQ6OnNvcnQoc29ydGVkVGV4dEJveGVzLmJlZ2lu
KCksIHNvcnRlZFRleHRCb3hlcy5lbmQoKSwgW10oYXV0byogYSwgYXV0byogYikgeworICAgICAg
ICAgICAgcmV0dXJuIElubGluZVRleHRCb3g6OmNvbXBhcmVCeVN0YXJ0KGRvd25jYXN0PElubGlu
ZVRleHRCb3g+KGEpLCBkb3duY2FzdDxJbmxpbmVUZXh0Qm94PihiKSk7CisgICAgICAgIH0pOwog
ICAgICAgICBhdXRvKiBmaXJzdCA9IHNvcnRlZFRleHRCb3hlc1swXTsKICAgICAgICAgcmV0dXJu
IHsgUnVuSXRlcmF0b3JMZWdhY3lQYXRoIHsgZmlyc3QsIFdURk1vdmUoc29ydGVkVGV4dEJveGVz
KSwgMCB9IH07CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVn
cmF0aW9uL0xheW91dEludGVncmF0aW9uUnVuSXRlcmF0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL2xh
eW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3JhdGlvblJ1bkl0ZXJhdG9yLmgKaW5kZXggNWNi
NTNiMzg4NjFjLi5lZGNlZDk0ZTAwNjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91
dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3JhdGlvblJ1bkl0ZXJhdG9yLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0xheW91dEludGVncmF0aW9uUnVuSXRlcmF0b3Iu
aApAQCAtMTQxLDYgKzE0MSw4IEBAIHB1YmxpYzoKICAgICBSdW5JdGVyYXRvciYgdHJhdmVyc2VQ
cmV2aW91c09uTGluZSgpOwogICAgIFJ1bkl0ZXJhdG9yJiB0cmF2ZXJzZU5leHRPbkxpbmVJZ25v
cmluZ0xpbmVCcmVhaygpOwogICAgIFJ1bkl0ZXJhdG9yJiB0cmF2ZXJzZVByZXZpb3VzT25MaW5l
SWdub3JpbmdMaW5lQnJlYWsoKTsKKyAgICBSdW5JdGVyYXRvciYgdHJhdmVyc2VOZXh0T25MaW5l
SW5Mb2dpY2FsT3JkZXIoKTsKKyAgICBSdW5JdGVyYXRvciYgdHJhdmVyc2VQcmV2aW91c09uTGlu
ZUluTG9naWNhbE9yZGVyKCk7CiAKICAgICBMaW5lSXRlcmF0b3IgbGluZSgpIGNvbnN0OwogCkBA
IC0xNzEsNiArMTczLDggQEAgcHJpdmF0ZToKICAgICBSdW5JdGVyYXRvciYgdHJhdmVyc2VQcmV2
aW91c09uTGluZSgpID0gZGVsZXRlOwogICAgIFJ1bkl0ZXJhdG9yJiB0cmF2ZXJzZU5leHRPbkxp
bmVJZ25vcmluZ0xpbmVCcmVhaygpID0gZGVsZXRlOwogICAgIFJ1bkl0ZXJhdG9yJiB0cmF2ZXJz
ZVByZXZpb3VzT25MaW5lSWdub3JpbmdMaW5lQnJlYWsoKSA9IGRlbGV0ZTsKKyAgICBSdW5JdGVy
YXRvciYgdHJhdmVyc2VOZXh0T25MaW5lSW5Mb2dpY2FsT3JkZXIoKSA9IGRlbGV0ZTsKKyAgICBS
dW5JdGVyYXRvciYgdHJhdmVyc2VQcmV2aW91c09uTGluZUluTG9naWNhbE9yZGVyKCkgPSBkZWxl
dGU7CiAKICAgICBjb25zdCBQYXRoVGV4dFJ1biYgZ2V0KCkgY29uc3QgeyByZXR1cm4gZG93bmNh
c3Q8UGF0aFRleHRSdW4+KG1fcnVuKTsgfQogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2xheW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3JhdGlvblJ1bkl0ZXJhdG9yTGVnYWN5UGF0
aC5oIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0xheW91dEludGVncmF0aW9u
UnVuSXRlcmF0b3JMZWdhY3lQYXRoLmgKaW5kZXggYzI1YjE5ZDc4NWY3Li4wZjcyMjNjZjQyZWMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRl
Z3JhdGlvblJ1bkl0ZXJhdG9yTGVnYWN5UGF0aC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91
dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3JhdGlvblJ1bkl0ZXJhdG9yTGVnYWN5UGF0aC5oCkBA
IC0yNiw2ICsyNiw3IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIklubGluZVRleHRCb3gu
aCIKKyNpbmNsdWRlICJSb290SW5saW5lQm94LmgiCiAjaW5jbHVkZSAiUmVuZGVyVGV4dC5oIgog
I2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkQXJyYXkuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+
CkBAIC0zNSwxMiArMzYsMjIgQEAgbmFtZXNwYWNlIExheW91dEludGVncmF0aW9uIHsKIAogY2xh
c3MgUnVuSXRlcmF0b3JMZWdhY3lQYXRoIHsKIHB1YmxpYzoKLSAgICBSdW5JdGVyYXRvckxlZ2Fj
eVBhdGgoY29uc3QgSW5saW5lQm94KiBpbmxpbmVCb3gsIFZlY3Rvcjxjb25zdCBJbmxpbmVUZXh0
Qm94Kj4mJiBzb3J0ZWRJbmxpbmVUZXh0Qm94ZXMgPSB7IH0sIHNpemVfdCBzb3J0ZWRJbmxpbmVU
ZXh0Qm94SW5kZXggPSAwKQorICAgIFJ1bkl0ZXJhdG9yTGVnYWN5UGF0aChjb25zdCBJbmxpbmVC
b3gqIGlubGluZUJveCwgVmVjdG9yPGNvbnN0IElubGluZUJveCo+JiYgc29ydGVkSW5saW5lQm94
ZXMgPSB7IH0sIHNpemVfdCBzb3J0ZWRJbmxpbmVCb3hJbmRleCA9IDApCiAgICAgICAgIDogbV9p
bmxpbmVCb3goaW5saW5lQm94KQotICAgICAgICAsIG1fc29ydGVkSW5saW5lVGV4dEJveGVzKFdU
Rk1vdmUoc29ydGVkSW5saW5lVGV4dEJveGVzKSkKLSAgICAgICAgLCBtX3NvcnRlZElubGluZVRl
eHRCb3hJbmRleChzb3J0ZWRJbmxpbmVUZXh0Qm94SW5kZXgpCisgICAgICAgICwgbV9sb2dpY2Fs
T3JkZXJDYWNoZShXVEZNb3ZlKHNvcnRlZElubGluZUJveGVzKSkKKyAgICAgICAgLCBtX2xvZ2lj
YWxPcmRlckNhY2hlSW5kZXgoc29ydGVkSW5saW5lQm94SW5kZXgpCiAgICAgeyB9CiAKKyAgICBl
bnVtIGNsYXNzIExvZ2ljYWxPcmRlciB7IFN0YXJ0LCBFbmQgfTsKKyAgICBSdW5JdGVyYXRvckxl
Z2FjeVBhdGgoY29uc3QgUm9vdElubGluZUJveCYgcm9vdCwgTG9naWNhbE9yZGVyIG9yZGVyKQor
ICAgICAgICA6IG1fbG9naWNhbE9yZGVyQ2FjaGUoaW5saW5lQm94ZXNJbkxvZ2ljYWxPcmRlcihy
b290KSkKKyAgICB7CisgICAgICAgIGlmICghbV9sb2dpY2FsT3JkZXJDYWNoZS5pc0VtcHR5KCkp
IHsKKyAgICAgICAgICAgIG1fbG9naWNhbE9yZGVyQ2FjaGVJbmRleCA9IG9yZGVyID09IExvZ2lj
YWxPcmRlcjo6U3RhcnQgPyAwIDogbV9sb2dpY2FsT3JkZXJDYWNoZS5zaXplKCkgLSAxOworICAg
ICAgICAgICAgbV9pbmxpbmVCb3ggPSBtX2xvZ2ljYWxPcmRlckNhY2hlW21fbG9naWNhbE9yZGVy
Q2FjaGVJbmRleF07CisgICAgICAgIH0KKyAgICB9CisKICAgICBib29sIGlzVGV4dCgpIGNvbnN0
IHsgcmV0dXJuIG1faW5saW5lQm94LT5pc0lubGluZVRleHRCb3goKTsgfQogCiAgICAgRmxvYXRS
ZWN0IHJlY3QoKSBjb25zdCB7IHJldHVybiBtX2lubGluZUJveC0+ZnJhbWVSZWN0KCk7IH0KQEAg
LTc0LDkgKzg1LDEyIEBAIHB1YmxpYzoKICAgICB2b2lkIHRyYXZlcnNlTmV4dFRleHRSdW4oKSB7
IG1faW5saW5lQm94ID0gaW5saW5lVGV4dEJveCgpLT5uZXh0VGV4dEJveCgpOyB9CiAgICAgdm9p
ZCB0cmF2ZXJzZU5leHRUZXh0UnVuSW5UZXh0T3JkZXIoKQogICAgIHsKLSAgICAgICAgbV9pbmxp
bmVCb3ggPSBuZXh0SW5saW5lVGV4dEJveEluVGV4dE9yZGVyKCk7Ci0gICAgICAgIGlmICghbV9z
b3J0ZWRJbmxpbmVUZXh0Qm94ZXMuaXNFbXB0eSgpKQotICAgICAgICAgICAgKyttX3NvcnRlZElu
bGluZVRleHRCb3hJbmRleDsKKyAgICAgICAgaWYgKCFtX2xvZ2ljYWxPcmRlckNhY2hlLmlzRW1w
dHkoKSkgeworICAgICAgICAgICAgdHJhdmVyc2VOZXh0SW5saW5lQm94SW5DYWNoZU9yZGVyKCk7
CisgICAgICAgICAgICBBU1NFUlQoIW1faW5saW5lQm94IHx8IGlzPElubGluZVRleHRCb3g+KG1f
aW5saW5lQm94KSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgdHJh
dmVyc2VOZXh0VGV4dFJ1bigpOwogICAgIH0KIAogICAgIHZvaWQgdHJhdmVyc2VOZXh0T25MaW5l
KCkKQEAgLTg5LDYgKzEwMywxOCBAQCBwdWJsaWM6CiAgICAgICAgIG1faW5saW5lQm94ID0gbV9p
bmxpbmVCb3gtPnByZXZpb3VzTGVhZk9uTGluZSgpOwogICAgIH0KIAorICAgIHZvaWQgdHJhdmVy
c2VOZXh0T25MaW5lSW5Mb2dpY2FsT3JkZXIoKQorICAgIHsKKyAgICAgICAgaW5pdGlhbGl6ZUxv
Z2ljYWxPcmRlckNhY2hlRm9yTGluZSgpOworICAgICAgICB0cmF2ZXJzZU5leHRJbmxpbmVCb3hJ
bkNhY2hlT3JkZXIoKTsKKyAgICB9CisKKyAgICB2b2lkIHRyYXZlcnNlUHJldmlvdXNPbkxpbmVJ
bkxvZ2ljYWxPcmRlcigpCisgICAgeworICAgICAgICBpbml0aWFsaXplTG9naWNhbE9yZGVyQ2Fj
aGVGb3JMaW5lKCk7CisgICAgICAgIHRyYXZlcnNlUHJldmlvdXNJbmxpbmVCb3hJbkNhY2hlT3Jk
ZXIoKTsKKyAgICB9CisKICAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgUnVuSXRlcmF0b3JMZWdh
Y3lQYXRoJiBvdGhlcikgY29uc3QgeyByZXR1cm4gbV9pbmxpbmVCb3ggPT0gb3RoZXIubV9pbmxp
bmVCb3g7IH0KIAogICAgIGJvb2wgYXRFbmQoKSBjb25zdCB7IHJldHVybiAhbV9pbmxpbmVCb3g7
IH0KQEAgLTk5LDIxICsxMjUsNTEgQEAgcHVibGljOgogCiBwcml2YXRlOgogICAgIGNvbnN0IElu
bGluZVRleHRCb3gqIGlubGluZVRleHRCb3goKSBjb25zdCB7IHJldHVybiBkb3duY2FzdDxJbmxp
bmVUZXh0Qm94PihtX2lubGluZUJveCk7IH0KLSAgICBjb25zdCBJbmxpbmVUZXh0Qm94KiBuZXh0
SW5saW5lVGV4dEJveEluVGV4dE9yZGVyKCkgY29uc3Q7CiAKLSAgICBjb25zdCBJbmxpbmVCb3gq
IG1faW5saW5lQm94OwotICAgIFJlZkNvdW50ZWRBcnJheTxjb25zdCBJbmxpbmVUZXh0Qm94Kj4g
bV9zb3J0ZWRJbmxpbmVUZXh0Qm94ZXM7Ci0gICAgc2l6ZV90IG1fc29ydGVkSW5saW5lVGV4dEJv
eEluZGV4IHsgMCB9OworICAgIHN0YXRpYyBWZWN0b3I8Y29uc3QgSW5saW5lQm94Kj4gaW5saW5l
Qm94ZXNJbkxvZ2ljYWxPcmRlcihjb25zdCBSb290SW5saW5lQm94JiByb290KQorICAgIHsKKyAg
ICAgICAgVmVjdG9yPElubGluZUJveCo+IGlubGluZUJveGVzOworICAgICAgICByb290LmNvbGxl
Y3RMZWFmQm94ZXNJbkxvZ2ljYWxPcmRlcihpbmxpbmVCb3hlcyk7CisgICAgICAgIGlmIChpbmxp
bmVCb3hlcy5pc0VtcHR5KCkpCisgICAgICAgICAgICByZXR1cm4geyB9OworCisgICAgICAgIHJl
dHVybiByZWludGVycHJldF9jYXN0PFZlY3Rvcjxjb25zdCBJbmxpbmVCb3gqPiY+KGlubGluZUJv
eGVzKTsKKyAgICB9CisgICAgdm9pZCBpbml0aWFsaXplTG9naWNhbE9yZGVyQ2FjaGVGb3JMaW5l
KCkKKyAgICB7CisgICAgICAgIGlmICghbV9pbmxpbmVCb3ggfHwgIW1fbG9naWNhbE9yZGVyQ2Fj
aGUuaXNFbXB0eSgpKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBtX2xvZ2ljYWxPcmRl
ckNhY2hlID0gaW5saW5lQm94ZXNJbkxvZ2ljYWxPcmRlcihtX2lubGluZUJveC0+cm9vdCgpKTsK
KyAgICAgICAgZm9yIChtX2xvZ2ljYWxPcmRlckNhY2hlSW5kZXggPSAwOyBtX2xvZ2ljYWxPcmRl
ckNhY2hlSW5kZXggPCBtX2xvZ2ljYWxPcmRlckNhY2hlLnNpemUoKTsgKyttX2xvZ2ljYWxPcmRl
ckNhY2hlSW5kZXgpIHsKKyAgICAgICAgICAgIGlmIChtX2xvZ2ljYWxPcmRlckNhY2hlW21fbG9n
aWNhbE9yZGVyQ2FjaGVJbmRleF0gPT0gbV9pbmxpbmVCb3gpCisgICAgICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgIH0KKyAgICB9CisKKyAgICB2b2lkIHRyYXZlcnNlTmV4dElubGluZUJveElu
Q2FjaGVPcmRlcigpOworICAgIHZvaWQgdHJhdmVyc2VQcmV2aW91c0lubGluZUJveEluQ2FjaGVP
cmRlcigpOworCisgICAgY29uc3QgSW5saW5lQm94KiBtX2lubGluZUJveCB7IG51bGxwdHIgfTsK
KyAgICBSZWZDb3VudGVkQXJyYXk8Y29uc3QgSW5saW5lQm94Kj4gbV9sb2dpY2FsT3JkZXJDYWNo
ZTsKKyAgICBzaXplX3QgbV9sb2dpY2FsT3JkZXJDYWNoZUluZGV4IHsgMCB9OwogfTsKIAotaW5s
aW5lIGNvbnN0IElubGluZVRleHRCb3gqIFJ1bkl0ZXJhdG9yTGVnYWN5UGF0aDo6bmV4dElubGlu
ZVRleHRCb3hJblRleHRPcmRlcigpIGNvbnN0CisKK2lubGluZSB2b2lkIFJ1bkl0ZXJhdG9yTGVn
YWN5UGF0aDo6dHJhdmVyc2VOZXh0SW5saW5lQm94SW5DYWNoZU9yZGVyKCkKK3sKKyAgICBBU1NF
UlQoIW1fbG9naWNhbE9yZGVyQ2FjaGUuaXNFbXB0eSgpKTsKKyAgICArK21fbG9naWNhbE9yZGVy
Q2FjaGVJbmRleDsKKyAgICBtX2lubGluZUJveCA9IG1fbG9naWNhbE9yZGVyQ2FjaGVJbmRleCA8
IG1fbG9naWNhbE9yZGVyQ2FjaGUuc2l6ZSgpID8gbV9sb2dpY2FsT3JkZXJDYWNoZVttX2xvZ2lj
YWxPcmRlckNhY2hlSW5kZXhdIDogbnVsbHB0cjsKK30KKworaW5saW5lIHZvaWQgUnVuSXRlcmF0
b3JMZWdhY3lQYXRoOjp0cmF2ZXJzZVByZXZpb3VzSW5saW5lQm94SW5DYWNoZU9yZGVyKCkKIHsK
LSAgICBpZiAoIW1fc29ydGVkSW5saW5lVGV4dEJveGVzLmlzRW1wdHkoKSkgewotICAgICAgICBp
ZiAobV9zb3J0ZWRJbmxpbmVUZXh0Qm94SW5kZXggKyAxIDwgbV9zb3J0ZWRJbmxpbmVUZXh0Qm94
ZXMuc2l6ZSgpKQotICAgICAgICAgICAgcmV0dXJuIG1fc29ydGVkSW5saW5lVGV4dEJveGVzW21f
c29ydGVkSW5saW5lVGV4dEJveEluZGV4ICsgMV07Ci0gICAgICAgIHJldHVybiBudWxscHRyOwor
ICAgIEFTU0VSVCghbV9sb2dpY2FsT3JkZXJDYWNoZS5pc0VtcHR5KCkpOworICAgIGlmICghbV9s
b2dpY2FsT3JkZXJDYWNoZUluZGV4KSB7CisgICAgICAgIG1faW5saW5lQm94ID0gbnVsbHB0cjsK
KyAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICByZXR1cm4gaW5saW5lVGV4dEJveCgpLT5uZXh0
VGV4dEJveCgpOworICAgIG1faW5saW5lQm94ID0gbV9sb2dpY2FsT3JkZXJDYWNoZVstLW1fbG9n
aWNhbE9yZGVyQ2FjaGVJbmRleF07CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2xheW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3JhdGlvblJ1bkl0ZXJhdG9yTW9kZXJuUGF0
aC5oIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0xheW91dEludGVncmF0aW9u
UnVuSXRlcmF0b3JNb2Rlcm5QYXRoLmgKaW5kZXggMDE5MTIwMDcyZjI1Li5jMWY1Y2MwZWU4YTQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRl
Z3JhdGlvblJ1bkl0ZXJhdG9yTW9kZXJuUGF0aC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91
dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3JhdGlvblJ1bkl0ZXJhdG9yTW9kZXJuUGF0aC5oCkBA
IC0xODIsNiArMTgyLDE2IEBAIHB1YmxpYzoKICAgICAgICAgICAgIHNldEF0RW5kKCk7CiAgICAg
fQogCisgICAgdm9pZCB0cmF2ZXJzZU5leHRPbkxpbmVJbkxvZ2ljYWxPcmRlcigpCisgICAgewor
ICAgICAgICB0cmF2ZXJzZU5leHRPbkxpbmUoKTsKKyAgICB9CisKKyAgICB2b2lkIHRyYXZlcnNl
UHJldmlvdXNPbkxpbmVJbkxvZ2ljYWxPcmRlcigpCisgICAgeworICAgICAgICB0cmF2ZXJzZVBy
ZXZpb3VzT25MaW5lKCk7CisgICAgfQorCiAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFJ1bkl0
ZXJhdG9yTW9kZXJuUGF0aCYgb3RoZXIpIGNvbnN0IHsgcmV0dXJuIG1faW5saW5lQ29udGVudCA9
PSBvdGhlci5tX2lubGluZUNvbnRlbnQgJiYgbV9ydW5JbmRleCA9PSBvdGhlci5tX3J1bkluZGV4
OyB9CiAKICAgICBib29sIGF0RW5kKCkgY29uc3QgeyByZXR1cm4gbV9ydW5JbmRleCA9PSBydW5z
KCkuc2l6ZSgpIHx8ICFydW4oKS5oYXNVbmRlcmx5aW5nTGF5b3V0KCk7IH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9Sb290SW5saW5lQm94LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9Sb290SW5saW5lQm94LmNwcAppbmRleCAxZDVkMzg2ZmIzNjAuLmFjZDJi
NWVmNzI2OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jvb3RJbmxpbmVC
b3guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9Sb290SW5saW5lQm94LmNwcApA
QCAtMTAyMywzNCArMTAyMyw2IEBAIGJvb2wgUm9vdElubGluZUJveDo6aW5jbHVkZXNSb290TGlu
ZUJveEZvbnRPckxlYWRpbmcoKSBjb25zdAogICAgIHJldHVybiByZW5kZXJlcigpLnN0eWxlKCku
bGluZUJveENvbnRhaW4oKS5jb250YWluc0FueSh7IExpbmVCb3hDb250YWluOjpCbG9jaywgTGlu
ZUJveENvbnRhaW46OklubGluZSwgTGluZUJveENvbnRhaW46OkZvbnQgfSk7CiB9CiAKLU5vZGUq
IFJvb3RJbmxpbmVCb3g6OmdldExvZ2ljYWxTdGFydEJveFdpdGhOb2RlKElubGluZUJveComIHN0
YXJ0Qm94KSBjb25zdAotewotICAgIFZlY3RvcjxJbmxpbmVCb3gqPiBsZWFmQm94ZXNJbkxvZ2lj
YWxPcmRlcjsKLSAgICBjb2xsZWN0TGVhZkJveGVzSW5Mb2dpY2FsT3JkZXIobGVhZkJveGVzSW5M
b2dpY2FsT3JkZXIpOwotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbGVhZkJveGVzSW5Mb2dp
Y2FsT3JkZXIuc2l6ZSgpOyArK2kpIHsKLSAgICAgICAgaWYgKGxlYWZCb3hlc0luTG9naWNhbE9y
ZGVyW2ldLT5yZW5kZXJlcigpLm5vZGUoKSkgewotICAgICAgICAgICAgc3RhcnRCb3ggPSBsZWFm
Qm94ZXNJbkxvZ2ljYWxPcmRlcltpXTsKLSAgICAgICAgICAgIHJldHVybiBzdGFydEJveC0+cmVu
ZGVyZXIoKS5ub2RlKCk7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgc3RhcnRCb3ggPSBudWxscHRy
OwotICAgIHJldHVybiBudWxscHRyOwotfQotICAgIAotTm9kZSogUm9vdElubGluZUJveDo6Z2V0
TG9naWNhbEVuZEJveFdpdGhOb2RlKElubGluZUJveComIGVuZEJveCkgY29uc3QKLXsKLSAgICBW
ZWN0b3I8SW5saW5lQm94Kj4gbGVhZkJveGVzSW5Mb2dpY2FsT3JkZXI7Ci0gICAgY29sbGVjdExl
YWZCb3hlc0luTG9naWNhbE9yZGVyKGxlYWZCb3hlc0luTG9naWNhbE9yZGVyKTsKLSAgICBmb3Ig
KHNpemVfdCBpID0gbGVhZkJveGVzSW5Mb2dpY2FsT3JkZXIuc2l6ZSgpOyBpID4gMDsgLS1pKSB7
IAotICAgICAgICBpZiAobGVhZkJveGVzSW5Mb2dpY2FsT3JkZXJbaSAtIDFdLT5yZW5kZXJlcigp
Lm5vZGUoKSkgewotICAgICAgICAgICAgZW5kQm94ID0gbGVhZkJveGVzSW5Mb2dpY2FsT3JkZXJb
aSAtIDFdOwotICAgICAgICAgICAgcmV0dXJuIGVuZEJveC0+cmVuZGVyZXIoKS5ub2RlKCk7Ci0g
ICAgICAgIH0KLSAgICB9Ci0gICAgZW5kQm94ID0gbnVsbHB0cjsKLSAgICByZXR1cm4gbnVsbHB0
cjsKLX0KLQogI2lmIEVOQUJMRShUUkVFX0RFQlVHR0lORykKIAogdm9pZCBSb290SW5saW5lQm94
OjpvdXRwdXRMaW5lQm94KFdURjo6VGV4dFN0cmVhbSYgc3RyZWFtLCBib29sIG1hcmssIGludCBk
ZXB0aCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9Sb290SW5s
aW5lQm94LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUm9vdElubGluZUJveC5oCmluZGV4
IDcwMDkzMGFjNDcxMi4uYjk1MTg4MjQwMjc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUm9vdElubGluZUJveC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
b290SW5saW5lQm94LmgKQEAgLTE4NCw5ICsxODQsNiBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVy
biBJbmxpbmVGbG93Qm94Ojpsb2dpY2FsQm90dG9tTGF5b3V0T3ZlcmZsb3cobGluZUJvdHRvbSgp
KTsKICAgICB9CiAKLSAgICBOb2RlKiBnZXRMb2dpY2FsU3RhcnRCb3hXaXRoTm9kZShJbmxpbmVC
b3gqJikgY29uc3Q7Ci0gICAgTm9kZSogZ2V0TG9naWNhbEVuZEJveFdpdGhOb2RlKElubGluZUJv
eComKSBjb25zdDsKLQogICAgIHZpcnR1YWwgYm9vbCBpc1RyYWlsaW5nRmxvYXRzUm9vdElubGlu
ZUJveCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAKICNpZiBFTkFCTEUoVFJFRV9ERUJVR0dJ
TkcpCg==
</data>
<flag name="review"
          id="431195"
          type_id="1"
          status="+"
          setter="zalan"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>414360</attachid>
            <date>2020-11-17 11:47:06 -0800</date>
            <delta_ts>2020-11-17 12:24:43 -0800</delta_ts>
            <desc>patch</desc>
            <filename>lfc-logical-iterator-2.patch</filename>
            <type>text/plain</type>
            <size>20593</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBhNDhlMGM0OWVlYzMuLmI1OWQxNWI2ZmQwOSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDUzIEBACisyMDIwLTExLTE3ICBBbnR0aSBLb2l2aXN0byAgPGFudHRpQGFwcGxlLmNv
bT4KKworICAgICAgICBbTEZDXVtJbnRlZ3JhdGlvbl0gQ2FjaGUgaW5saW5lIGJveGVzIGluIGxv
Z2ljYWwgb3JkZXIgdG8gcnVuIGl0ZXJhdG9yCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMTkwMzEKKworICAgICAgICBSZXZpZXdlZCBieSBaYWxhbiBC
dWp0YXMuCisKKyAgICAgICAgRXhwYW5kIHVzZSBvZiB0aGUgZXhpc3RpbmcgY2FjaGUgdG8gY292
ZXIgbGluZSB0cmF2ZXJzYWwuIFRoaXMgd2lsbCBtYWtlIHBvcnRpbmcgY29kZSBpbiBWaXNpYmxl
VW5pdC5jcHAgdG8gaXRlcmF0b3IgZWFzaWVyLgorCisgICAgICAgIEFsc28gYSBidW5jaCBvZiBy
ZWxhdGVkIGNsZWFudXBzLgorCisgICAgICAgICogbGF5b3V0L2ludGVncmF0aW9uL0xheW91dElu
dGVncmF0aW9uTGluZUl0ZXJhdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dEludGVn
cmF0aW9uOjpMaW5lSXRlcmF0b3I6OmxvZ2ljYWxTdGFydFJ1biBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpMYXlvdXRJbnRlZ3JhdGlvbjo6TGluZUl0ZXJhdG9yOjpsb2dpY2FsRW5kUnVuIGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dEludGVncmF0aW9uOjpMaW5lSXRlcmF0b3I6
OmxvZ2ljYWxTdGFydFJ1bldpdGhOb2RlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91
dEludGVncmF0aW9uOjpMaW5lSXRlcmF0b3I6OmxvZ2ljYWxFbmRSdW5XaXRoTm9kZSBjb25zdCk6
CisgICAgICAgICogbGF5b3V0L2ludGVncmF0aW9uL0xheW91dEludGVncmF0aW9uTGluZUl0ZXJh
dG9yLmg6CisgICAgICAgICogbGF5b3V0L2ludGVncmF0aW9uL0xheW91dEludGVncmF0aW9uTGlu
ZUl0ZXJhdG9yTGVnYWN5UGF0aC5oOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0SW50ZWdyYXRp
b246OkxpbmVJdGVyYXRvckxlZ2FjeVBhdGg6OmxvZ2ljYWxTdGFydFJ1biBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpMYXlvdXRJbnRlZ3JhdGlvbjo6TGluZUl0ZXJhdG9yTGVnYWN5UGF0aDo6
bG9naWNhbEVuZFJ1biBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXRJbnRlZ3JhdGlv
bjo6TGluZUl0ZXJhdG9yTGVnYWN5UGF0aDo6bG9naWNhbFN0YXJ0UnVuV2l0aE5vZGUgY29uc3Qp
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0SW50ZWdyYXRpb246OkxpbmVJdGVy
YXRvckxlZ2FjeVBhdGg6OmxvZ2ljYWxFbmRSdW5XaXRoTm9kZSBjb25zdCk6IERlbGV0ZWQuCisg
ICAgICAgICogbGF5b3V0L2ludGVncmF0aW9uL0xheW91dEludGVncmF0aW9uTGluZUl0ZXJhdG9y
TW9kZXJuUGF0aC5oOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0SW50ZWdyYXRpb246OkxpbmVJ
dGVyYXRvck1vZGVyblBhdGg6OmxvZ2ljYWxTdGFydFJ1biBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpMYXlvdXRJbnRlZ3JhdGlvbjo6TGluZUl0ZXJhdG9yTW9kZXJuUGF0aDo6bG9naWNhbEVu
ZFJ1biBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXRJbnRlZ3JhdGlvbjo6TGluZUl0
ZXJhdG9yTW9kZXJuUGF0aDo6bG9naWNhbFN0YXJ0UnVuV2l0aE5vZGUgY29uc3QpOiBEZWxldGVk
LgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0SW50ZWdyYXRpb246OkxpbmVJdGVyYXRvck1vZGVy
blBhdGg6OmxvZ2ljYWxFbmRSdW5XaXRoTm9kZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICog
bGF5b3V0L2ludGVncmF0aW9uL0xheW91dEludGVncmF0aW9uUnVuSXRlcmF0b3IuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6TGF5b3V0SW50ZWdyYXRpb246OlJ1bkl0ZXJhdG9yOjp0cmF2ZXJzZU5l
eHRPbkxpbmVJbkxvZ2ljYWxPcmRlcik6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXRJbnRlZ3Jh
dGlvbjo6UnVuSXRlcmF0b3I6OnRyYXZlcnNlUHJldmlvdXNPbkxpbmVJbkxvZ2ljYWxPcmRlcik6
CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXRJbnRlZ3JhdGlvbjo6Zmlyc3RUZXh0UnVuSW5UZXh0
T3JkZXJGb3IpOgorICAgICAgICAqIGxheW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3JhdGlv
blJ1bkl0ZXJhdG9yLmg6CisgICAgICAgICogbGF5b3V0L2ludGVncmF0aW9uL0xheW91dEludGVn
cmF0aW9uUnVuSXRlcmF0b3JMZWdhY3lQYXRoLmg6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXRJ
bnRlZ3JhdGlvbjo6UnVuSXRlcmF0b3JMZWdhY3lQYXRoOjpSdW5JdGVyYXRvckxlZ2FjeVBhdGgp
OgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0SW50ZWdyYXRpb246OlJ1bkl0ZXJhdG9yTGVnYWN5
UGF0aDo6dHJhdmVyc2VOZXh0VGV4dFJ1bkluVGV4dE9yZGVyKToKKyAgICAgICAgKFdlYkNvcmU6
OkxheW91dEludGVncmF0aW9uOjpSdW5JdGVyYXRvckxlZ2FjeVBhdGg6OnRyYXZlcnNlTmV4dE9u
TGluZUluTG9naWNhbE9yZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dEludGVncmF0aW9u
OjpSdW5JdGVyYXRvckxlZ2FjeVBhdGg6OnRyYXZlcnNlUHJldmlvdXNPbkxpbmVJbkxvZ2ljYWxP
cmRlcik6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXRJbnRlZ3JhdGlvbjo6UnVuSXRlcmF0b3JM
ZWdhY3lQYXRoOjppbmxpbmVUZXh0Qm94IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91
dEludGVncmF0aW9uOjpSdW5JdGVyYXRvckxlZ2FjeVBhdGg6OmluaXRpYWxpemVMb2dpY2FsT3Jk
ZXJDYWNoZUZvckxpbmUpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0SW50ZWdyYXRpb246OlJ1
bkl0ZXJhdG9yTGVnYWN5UGF0aDo6dHJhdmVyc2VOZXh0SW5saW5lQm94SW5DYWNoZU9yZGVyKToK
KyAgICAgICAgKFdlYkNvcmU6OkxheW91dEludGVncmF0aW9uOjpSdW5JdGVyYXRvckxlZ2FjeVBh
dGg6OnRyYXZlcnNlUHJldmlvdXNJbmxpbmVCb3hJbkNhY2hlT3JkZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6TGF5b3V0SW50ZWdyYXRpb246OlJ1bkl0ZXJhdG9yTGVnYWN5UGF0aDo6bmV4dElubGlu
ZVRleHRCb3hJblRleHRPcmRlciBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogbGF5b3V0L2lu
dGVncmF0aW9uL0xheW91dEludGVncmF0aW9uUnVuSXRlcmF0b3JNb2Rlcm5QYXRoLmg6CisgICAg
ICAgIChXZWJDb3JlOjpMYXlvdXRJbnRlZ3JhdGlvbjo6UnVuSXRlcmF0b3JNb2Rlcm5QYXRoOjp0
cmF2ZXJzZU5leHRPbkxpbmVJbkxvZ2ljYWxPcmRlcik6CisgICAgICAgIChXZWJDb3JlOjpMYXlv
dXRJbnRlZ3JhdGlvbjo6UnVuSXRlcmF0b3JNb2Rlcm5QYXRoOjp0cmF2ZXJzZVByZXZpb3VzT25M
aW5lSW5Mb2dpY2FsT3JkZXIpOgorICAgICAgICAqIHJlbmRlcmluZy9Sb290SW5saW5lQm94LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlJvb3RJbmxpbmVCb3g6OmdldExvZ2ljYWxTdGFydEJveFdp
dGhOb2RlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJvb3RJbmxpbmVCb3g6
OmdldExvZ2ljYWxFbmRCb3hXaXRoTm9kZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogcmVu
ZGVyaW5nL1Jvb3RJbmxpbmVCb3guaDoKKwogMjAyMC0xMS0xNiAgS2ltbW8gS2lubnVuZW4gIDxr
a2lubnVuZW5AYXBwbGUuY29tPgogCiAgICAgICAgIFRleHR1cmVzIEZhaWwgdG8gUmVuZGVyIGlu
IFdlYkdMIGZyb20gSExTIFN0cmVhbSBvbiBpUGhvbmUgMTIgW2lPUyAxNC4yXQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0xheW91dEludGVncmF0aW9uTGlu
ZUl0ZXJhdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJ
bnRlZ3JhdGlvbkxpbmVJdGVyYXRvci5jcHAKaW5kZXggNjQxYjA0MTA2NTU1Li5jMWNhZmY4Zjdm
OGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJ
bnRlZ3JhdGlvbkxpbmVJdGVyYXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lu
dGVncmF0aW9uL0xheW91dEludGVncmF0aW9uTGluZUl0ZXJhdG9yLmNwcApAQCAtOTAsMjAgKzkw
LDM4IEBAIFJ1bkl0ZXJhdG9yIExpbmVJdGVyYXRvcjo6bGFzdFJ1bigpIGNvbnN0CiAgICAgfSk7
CiB9CiAKLVJ1bkl0ZXJhdG9yIExpbmVJdGVyYXRvcjo6bG9naWNhbFN0YXJ0UnVuV2l0aE5vZGUo
KSBjb25zdAorUnVuSXRlcmF0b3IgTGluZUl0ZXJhdG9yOjpsb2dpY2FsU3RhcnRSdW4oKSBjb25z
dAogewogICAgIHJldHVybiBXVEY6OnN3aXRjaE9uKG1fbGluZS5tX3BhdGhWYXJpYW50LCBbXShh
dXRvJiBwYXRoKSAtPiBSdW5JdGVyYXRvciB7Ci0gICAgICAgIHJldHVybiB7IHBhdGgubG9naWNh
bFN0YXJ0UnVuV2l0aE5vZGUoKSB9OworICAgICAgICByZXR1cm4geyBwYXRoLmxvZ2ljYWxTdGFy
dFJ1bigpIH07CiAgICAgfSk7CiB9CiAKLVJ1bkl0ZXJhdG9yIExpbmVJdGVyYXRvcjo6bG9naWNh
bEVuZFJ1bldpdGhOb2RlKCkgY29uc3QKK1J1bkl0ZXJhdG9yIExpbmVJdGVyYXRvcjo6bG9naWNh
bEVuZFJ1bigpIGNvbnN0CiB7CiAgICAgcmV0dXJuIFdURjo6c3dpdGNoT24obV9saW5lLm1fcGF0
aFZhcmlhbnQsIFtdKGF1dG8mIHBhdGgpIC0+IFJ1bkl0ZXJhdG9yIHsKLSAgICAgICAgcmV0dXJu
IHsgcGF0aC5sb2dpY2FsRW5kUnVuV2l0aE5vZGUoKSB9OworICAgICAgICByZXR1cm4geyBwYXRo
LmxvZ2ljYWxFbmRSdW4oKSB9OwogICAgIH0pOwogfQogCitSdW5JdGVyYXRvciBMaW5lSXRlcmF0
b3I6OmxvZ2ljYWxTdGFydFJ1bldpdGhOb2RlKCkgY29uc3QKK3sKKyAgICBmb3IgKGF1dG8gcnVu
ID0gbG9naWNhbFN0YXJ0UnVuKCk7IHJ1bjsgcnVuLnRyYXZlcnNlTmV4dE9uTGluZUluTG9naWNh
bE9yZGVyKCkpIHsKKyAgICAgICAgaWYgKHJ1bi0+cmVuZGVyZXIoKS5ub2RlKCkpCisgICAgICAg
ICAgICByZXR1cm4gcnVuOworICAgIH0KKyAgICByZXR1cm4geyB9OworfQorCitSdW5JdGVyYXRv
ciBMaW5lSXRlcmF0b3I6OmxvZ2ljYWxFbmRSdW5XaXRoTm9kZSgpIGNvbnN0Cit7CisgICAgZm9y
IChhdXRvIHJ1biA9IGxvZ2ljYWxFbmRSdW4oKTsgcnVuOyBydW4udHJhdmVyc2VQcmV2aW91c09u
TGluZUluTG9naWNhbE9yZGVyKCkpIHsKKyAgICAgICAgaWYgKHJ1bi0+cmVuZGVyZXIoKS5ub2Rl
KCkpCisgICAgICAgICAgICByZXR1cm4gcnVuOworICAgIH0KKyAgICByZXR1cm4geyB9OworfQor
CiBMaW5lSXRlcmF0b3IgZmlyc3RMaW5lRm9yKGNvbnN0IFJlbmRlckJsb2NrRmxvdyYgZmxvdykK
IHsKICNpZiBFTkFCTEUoTEFZT1VUX0ZPUk1BVFRJTkdfQ09OVEVYVCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3JhdGlvbkxpbmVJdGVy
YXRvci5oIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0xheW91dEludGVncmF0
aW9uTGluZUl0ZXJhdG9yLmgKaW5kZXggMzU2NjJjMWFiMmZiLi4wYTQxZmY2Mjk5MGEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3JhdGlv
bkxpbmVJdGVyYXRvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9M
YXlvdXRJbnRlZ3JhdGlvbkxpbmVJdGVyYXRvci5oCkBAIC0xMDYsMTEgKzEwNiwxNSBAQCBwdWJs
aWM6CiAKICAgICBSdW5JdGVyYXRvciBmaXJzdFJ1bigpIGNvbnN0OwogICAgIFJ1bkl0ZXJhdG9y
IGxhc3RSdW4oKSBjb25zdDsKLSAgICBSdW5JdGVyYXRvciBsb2dpY2FsU3RhcnRSdW5XaXRoTm9k
ZSgpIGNvbnN0OwotICAgIFJ1bkl0ZXJhdG9yIGxvZ2ljYWxFbmRSdW5XaXRoTm9kZSgpIGNvbnN0
OworCiAgICAgUnVuSXRlcmF0b3IgY2xvc2VzdFJ1bkZvclBvaW50KGNvbnN0IEludFBvaW50JiBw
b2ludEluQ29udGVudHMsIGJvb2wgZWRpdGFibGVPbmx5KTsKICAgICBSdW5JdGVyYXRvciBjbG9z
ZXN0UnVuRm9yTG9naWNhbExlZnRQb3NpdGlvbihpbnQgcG9zaXRpb24sIGJvb2wgZWRpdGFibGVP
bmx5ID0gZmFsc2UpOwogCisgICAgUnVuSXRlcmF0b3IgbG9naWNhbFN0YXJ0UnVuKCkgY29uc3Q7
CisgICAgUnVuSXRlcmF0b3IgbG9naWNhbEVuZFJ1bigpIGNvbnN0OworICAgIFJ1bkl0ZXJhdG9y
IGxvZ2ljYWxTdGFydFJ1bldpdGhOb2RlKCkgY29uc3Q7CisgICAgUnVuSXRlcmF0b3IgbG9naWNh
bEVuZFJ1bldpdGhOb2RlKCkgY29uc3Q7CisKIHByaXZhdGU6CiAgICAgUGF0aExpbmUgbV9saW5l
OwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9MYXlv
dXRJbnRlZ3JhdGlvbkxpbmVJdGVyYXRvckxlZ2FjeVBhdGguaCBiL1NvdXJjZS9XZWJDb3JlL2xh
eW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3JhdGlvbkxpbmVJdGVyYXRvckxlZ2FjeVBhdGgu
aAppbmRleCA2YzYyODllZGE2NzcuLmQ5Y2RmMWJhNDk5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0xheW91dEludGVncmF0aW9uTGluZUl0ZXJhdG9yTGVn
YWN5UGF0aC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJ
bnRlZ3JhdGlvbkxpbmVJdGVyYXRvckxlZ2FjeVBhdGguaApAQCAtODYsMjIgKzg2LDE4IEBAIHB1
YmxpYzoKICAgICAgICAgcmV0dXJuIHsgbV9yb290SW5saW5lQm94LT5sYXN0TGVhZkRlc2NlbmRh
bnQoKSB9OwogICAgIH0KIAotICAgIFJ1bkl0ZXJhdG9yTGVnYWN5UGF0aCBsb2dpY2FsU3RhcnRS
dW5XaXRoTm9kZSgpIGNvbnN0CisKKyAgICBSdW5JdGVyYXRvckxlZ2FjeVBhdGggbG9naWNhbFN0
YXJ0UnVuKCkgY29uc3QKICAgICB7Ci0gICAgICAgIElubGluZUJveCogYm94ID0gbnVsbHB0cjsK
LSAgICAgICAgbV9yb290SW5saW5lQm94LT5nZXRMb2dpY2FsU3RhcnRCb3hXaXRoTm9kZShib3gp
OwotICAgICAgICByZXR1cm4geyBib3ggfTsKKyAgICAgICAgcmV0dXJuIHsgKm1fcm9vdElubGlu
ZUJveCwgUnVuSXRlcmF0b3JMZWdhY3lQYXRoOjpMb2dpY2FsT3JkZXI6OlN0YXJ0IH07CiAgICAg
fQogCi0gICAgUnVuSXRlcmF0b3JMZWdhY3lQYXRoIGxvZ2ljYWxFbmRSdW5XaXRoTm9kZSgpIGNv
bnN0CisgICAgUnVuSXRlcmF0b3JMZWdhY3lQYXRoIGxvZ2ljYWxFbmRSdW4oKSBjb25zdAogICAg
IHsKLSAgICAgICAgSW5saW5lQm94KiBib3ggPSBudWxscHRyOwotICAgICAgICBtX3Jvb3RJbmxp
bmVCb3gtPmdldExvZ2ljYWxFbmRCb3hXaXRoTm9kZShib3gpOwotICAgICAgICByZXR1cm4geyBi
b3ggfTsKKyAgICAgICAgcmV0dXJuIHsgKm1fcm9vdElubGluZUJveCwgUnVuSXRlcmF0b3JMZWdh
Y3lQYXRoOjpMb2dpY2FsT3JkZXI6OkVuZCB9OwogICAgIH0KIAogcHJpdmF0ZToKLQogICAgIGNv
bnN0IFJvb3RJbmxpbmVCb3gqIG1fcm9vdElubGluZUJveDsKIH07CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3JhdGlvbkxpbmVJdGVy
YXRvck1vZGVyblBhdGguaCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9MYXlv
dXRJbnRlZ3JhdGlvbkxpbmVJdGVyYXRvck1vZGVyblBhdGguaAppbmRleCBhMTkyZGFhMTYyODgu
LjY1MTVhMTVkNTZiYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0
aW9uL0xheW91dEludGVncmF0aW9uTGluZUl0ZXJhdG9yTW9kZXJuUGF0aC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3JhdGlvbkxpbmVJdGVyYXRv
ck1vZGVyblBhdGguaApAQCAtMTA3LDMwICsxMDcsMTcgQEAgcHVibGljOgogICAgICAgICByZXR1
cm4geyAqbV9pbmxpbmVDb250ZW50LCBsaW5lKCkuZmlyc3RSdW5JbmRleCgpICsgcnVuQ291bnQg
LSAxIH07CiAgICAgfQogCi0gICAgUnVuSXRlcmF0b3JNb2Rlcm5QYXRoIGxvZ2ljYWxTdGFydFJ1
bldpdGhOb2RlKCkgY29uc3QKKyAgICBSdW5JdGVyYXRvck1vZGVyblBhdGggbG9naWNhbFN0YXJ0
UnVuKCkgY29uc3QKICAgICB7Ci0gICAgICAgIGF1dG8gc3RhcnRJbmRleCA9IGxpbmUoKS5maXJz
dFJ1bkluZGV4KCk7Ci0gICAgICAgIGF1dG8gZW5kSW5kZXggPSBzdGFydEluZGV4ICsgbGluZSgp
LnJ1bkNvdW50KCk7Ci0gICAgICAgIGZvciAoYXV0byBydW5JbmRleCA9IHN0YXJ0SW5kZXg7IHJ1
bkluZGV4IDwgZW5kSW5kZXg7ICsrcnVuSW5kZXgpIHsKLSAgICAgICAgICAgIGF1dG8mIHJlbmRl
cmVyID0gbV9pbmxpbmVDb250ZW50LT5yZW5kZXJlckZvckxheW91dEJveChtX2lubGluZUNvbnRl
bnQtPnJ1bnNbcnVuSW5kZXhdLmxheW91dEJveCgpKTsKLSAgICAgICAgICAgIGlmIChyZW5kZXJl
ci5ub2RlKCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIHsgKm1faW5saW5lQ29udGVudCwgcnVu
SW5kZXggfTsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4geyAqbV9pbmxpbmVDb250ZW50IH07
CisgICAgICAgIHJldHVybiBmaXJzdFJ1bigpOwogICAgIH0KIAotICAgIFJ1bkl0ZXJhdG9yTW9k
ZXJuUGF0aCBsb2dpY2FsRW5kUnVuV2l0aE5vZGUoKSBjb25zdAorICAgIFJ1bkl0ZXJhdG9yTW9k
ZXJuUGF0aCBsb2dpY2FsRW5kUnVuKCkgY29uc3QKICAgICB7Ci0gICAgICAgIGF1dG8gc3RhcnRJ
bmRleCA9IGxpbmUoKS5maXJzdFJ1bkluZGV4KCk7Ci0gICAgICAgIGF1dG8gZW5kSW5kZXggPSBz
dGFydEluZGV4ICsgbGluZSgpLnJ1bkNvdW50KCk7Ci0gICAgICAgIGZvciAoYXV0byBydW5JbmRl
eCA9IGVuZEluZGV4OyBydW5JbmRleC0tID4gc3RhcnRJbmRleDspIHsKLSAgICAgICAgICAgIGF1
dG8mIHJlbmRlcmVyID0gbV9pbmxpbmVDb250ZW50LT5yZW5kZXJlckZvckxheW91dEJveChtX2lu
bGluZUNvbnRlbnQtPnJ1bnNbcnVuSW5kZXhdLmxheW91dEJveCgpKTsKLSAgICAgICAgICAgIGlm
IChyZW5kZXJlci5ub2RlKCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIHsgKm1faW5saW5lQ29u
dGVudCwgcnVuSW5kZXggfTsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4geyAqbV9pbmxpbmVD
b250ZW50IH07CisgICAgICAgIHJldHVybiBsYXN0UnVuKCk7CiAgICAgfQogCisKIHByaXZhdGU6
CiAgICAgY29uc3QgSW5saW5lQ29udGVudDo6TGluZXMmIGxpbmVzKCkgY29uc3QgeyByZXR1cm4g
bV9pbmxpbmVDb250ZW50LT5saW5lczsgfQogICAgIGNvbnN0IExpbmUmIGxpbmUoKSBjb25zdCB7
IHJldHVybiBsaW5lcygpW21fbGluZUluZGV4XTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvbGF5b3V0L2ludGVncmF0aW9uL0xheW91dEludGVncmF0aW9uUnVuSXRlcmF0b3IuY3BwIGIv
U291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0xheW91dEludGVncmF0aW9uUnVuSXRl
cmF0b3IuY3BwCmluZGV4IGZkMDIzZGM3MzkxMS4uNDQyNGZiN2Q1NDhjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRpb25SdW5JdGVy
YXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0xheW91dElu
dGVncmF0aW9uUnVuSXRlcmF0b3IuY3BwCkBAIC0xNDUsNiArMTQ1LDIyIEBAIFJ1bkl0ZXJhdG9y
JiBSdW5JdGVyYXRvcjo6dHJhdmVyc2VQcmV2aW91c09uTGluZUlnbm9yaW5nTGluZUJyZWFrKCkK
ICAgICByZXR1cm4gKnRoaXM7CiB9CiAKK1J1bkl0ZXJhdG9yJiBSdW5JdGVyYXRvcjo6dHJhdmVy
c2VOZXh0T25MaW5lSW5Mb2dpY2FsT3JkZXIoKQoreworICAgIFdURjo6c3dpdGNoT24obV9ydW4u
bV9wYXRoVmFyaWFudCwgW10oYXV0byYgcGF0aCkgeworICAgICAgICBwYXRoLnRyYXZlcnNlTmV4
dE9uTGluZUluTG9naWNhbE9yZGVyKCk7CisgICAgfSk7CisgICAgcmV0dXJuICp0aGlzOworfQor
CitSdW5JdGVyYXRvciYgUnVuSXRlcmF0b3I6OnRyYXZlcnNlUHJldmlvdXNPbkxpbmVJbkxvZ2lj
YWxPcmRlcigpCit7CisgICAgV1RGOjpzd2l0Y2hPbihtX3J1bi5tX3BhdGhWYXJpYW50LCBbXShh
dXRvJiBwYXRoKSB7CisgICAgICAgIHBhdGgudHJhdmVyc2VQcmV2aW91c09uTGluZUluTG9naWNh
bE9yZGVyKCk7CisgICAgfSk7CisgICAgcmV0dXJuICp0aGlzOworfQorCiBUZXh0UnVuSXRlcmF0
b3IgZmlyc3RUZXh0UnVuRm9yKGNvbnN0IFJlbmRlclRleHQmIHRleHQpCiB7CiAjaWYgRU5BQkxF
KExBWU9VVF9GT1JNQVRUSU5HX0NPTlRFWFQpCkBAIC0xNTgsMTAgKzE3NCwxMiBAQCBUZXh0UnVu
SXRlcmF0b3IgZmlyc3RUZXh0UnVuRm9yKGNvbnN0IFJlbmRlclRleHQmIHRleHQpCiBUZXh0UnVu
SXRlcmF0b3IgZmlyc3RUZXh0UnVuSW5UZXh0T3JkZXJGb3IoY29uc3QgUmVuZGVyVGV4dCYgdGV4
dCkKIHsKICAgICBpZiAodGV4dC5maXJzdFRleHRCb3goKSAmJiB0ZXh0LmNvbnRhaW5zUmV2ZXJz
ZWRUZXh0KCkpIHsKLSAgICAgICAgVmVjdG9yPGNvbnN0IElubGluZVRleHRCb3gqPiBzb3J0ZWRU
ZXh0Qm94ZXM7CisgICAgICAgIFZlY3Rvcjxjb25zdCBJbmxpbmVCb3gqPiBzb3J0ZWRUZXh0Qm94
ZXM7CiAgICAgICAgIGZvciAoYXV0byogdGV4dEJveCA9IHRleHQuZmlyc3RUZXh0Qm94KCk7IHRl
eHRCb3g7IHRleHRCb3ggPSB0ZXh0Qm94LT5uZXh0VGV4dEJveCgpKQogICAgICAgICAgICAgc29y
dGVkVGV4dEJveGVzLmFwcGVuZCh0ZXh0Qm94KTsKLSAgICAgICAgc3RkOjpzb3J0KHNvcnRlZFRl
eHRCb3hlcy5iZWdpbigpLCBzb3J0ZWRUZXh0Qm94ZXMuZW5kKCksIElubGluZVRleHRCb3g6OmNv
bXBhcmVCeVN0YXJ0KTsKKyAgICAgICAgc3RkOjpzb3J0KHNvcnRlZFRleHRCb3hlcy5iZWdpbigp
LCBzb3J0ZWRUZXh0Qm94ZXMuZW5kKCksIFtdKGF1dG8qIGEsIGF1dG8qIGIpIHsKKyAgICAgICAg
ICAgIHJldHVybiBJbmxpbmVUZXh0Qm94Ojpjb21wYXJlQnlTdGFydChkb3duY2FzdDxJbmxpbmVU
ZXh0Qm94PihhKSwgZG93bmNhc3Q8SW5saW5lVGV4dEJveD4oYikpOworICAgICAgICB9KTsKICAg
ICAgICAgYXV0byogZmlyc3QgPSBzb3J0ZWRUZXh0Qm94ZXNbMF07CiAgICAgICAgIHJldHVybiB7
IFJ1bkl0ZXJhdG9yTGVnYWN5UGF0aCB7IGZpcnN0LCBXVEZNb3ZlKHNvcnRlZFRleHRCb3hlcyks
IDAgfSB9OwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3Jh
dGlvbi9MYXlvdXRJbnRlZ3JhdGlvblJ1bkl0ZXJhdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9sYXlv
dXQvaW50ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRpb25SdW5JdGVyYXRvci5oCmluZGV4IDVjYjUz
YjM4ODYxYy4uZWRjZWQ5NGUwMDY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQv
aW50ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRpb25SdW5JdGVyYXRvci5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3JhdGlvblJ1bkl0ZXJhdG9yLmgK
QEAgLTE0MSw2ICsxNDEsOCBAQCBwdWJsaWM6CiAgICAgUnVuSXRlcmF0b3ImIHRyYXZlcnNlUHJl
dmlvdXNPbkxpbmUoKTsKICAgICBSdW5JdGVyYXRvciYgdHJhdmVyc2VOZXh0T25MaW5lSWdub3Jp
bmdMaW5lQnJlYWsoKTsKICAgICBSdW5JdGVyYXRvciYgdHJhdmVyc2VQcmV2aW91c09uTGluZUln
bm9yaW5nTGluZUJyZWFrKCk7CisgICAgUnVuSXRlcmF0b3ImIHRyYXZlcnNlTmV4dE9uTGluZUlu
TG9naWNhbE9yZGVyKCk7CisgICAgUnVuSXRlcmF0b3ImIHRyYXZlcnNlUHJldmlvdXNPbkxpbmVJ
bkxvZ2ljYWxPcmRlcigpOwogCiAgICAgTGluZUl0ZXJhdG9yIGxpbmUoKSBjb25zdDsKIApAQCAt
MTcxLDYgKzE3Myw4IEBAIHByaXZhdGU6CiAgICAgUnVuSXRlcmF0b3ImIHRyYXZlcnNlUHJldmlv
dXNPbkxpbmUoKSA9IGRlbGV0ZTsKICAgICBSdW5JdGVyYXRvciYgdHJhdmVyc2VOZXh0T25MaW5l
SWdub3JpbmdMaW5lQnJlYWsoKSA9IGRlbGV0ZTsKICAgICBSdW5JdGVyYXRvciYgdHJhdmVyc2VQ
cmV2aW91c09uTGluZUlnbm9yaW5nTGluZUJyZWFrKCkgPSBkZWxldGU7CisgICAgUnVuSXRlcmF0
b3ImIHRyYXZlcnNlTmV4dE9uTGluZUluTG9naWNhbE9yZGVyKCkgPSBkZWxldGU7CisgICAgUnVu
SXRlcmF0b3ImIHRyYXZlcnNlUHJldmlvdXNPbkxpbmVJbkxvZ2ljYWxPcmRlcigpID0gZGVsZXRl
OwogCiAgICAgY29uc3QgUGF0aFRleHRSdW4mIGdldCgpIGNvbnN0IHsgcmV0dXJuIGRvd25jYXN0
PFBhdGhUZXh0UnVuPihtX3J1bik7IH0KIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9s
YXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRpb25SdW5JdGVyYXRvckxlZ2FjeVBhdGgu
aCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3JhdGlvblJ1
bkl0ZXJhdG9yTGVnYWN5UGF0aC5oCmluZGV4IGMyNWIxOWQ3ODVmNy4uMWRmYjM1Y2Q0YzViIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0SW50ZWdy
YXRpb25SdW5JdGVyYXRvckxlZ2FjeVBhdGguaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQv
aW50ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRpb25SdW5JdGVyYXRvckxlZ2FjeVBhdGguaApAQCAt
MjcsNiArMjcsNyBAQAogCiAjaW5jbHVkZSAiSW5saW5lVGV4dEJveC5oIgogI2luY2x1ZGUgIlJl
bmRlclRleHQuaCIKKyNpbmNsdWRlICJSb290SW5saW5lQm94LmgiCiAjaW5jbHVkZSA8d3RmL1Jl
ZkNvdW50ZWRBcnJheS5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIApAQCAtMzUsMTIgKzM2
LDIyIEBAIG5hbWVzcGFjZSBMYXlvdXRJbnRlZ3JhdGlvbiB7CiAKIGNsYXNzIFJ1bkl0ZXJhdG9y
TGVnYWN5UGF0aCB7CiBwdWJsaWM6Ci0gICAgUnVuSXRlcmF0b3JMZWdhY3lQYXRoKGNvbnN0IElu
bGluZUJveCogaW5saW5lQm94LCBWZWN0b3I8Y29uc3QgSW5saW5lVGV4dEJveCo+JiYgc29ydGVk
SW5saW5lVGV4dEJveGVzID0geyB9LCBzaXplX3Qgc29ydGVkSW5saW5lVGV4dEJveEluZGV4ID0g
MCkKKyAgICBSdW5JdGVyYXRvckxlZ2FjeVBhdGgoY29uc3QgSW5saW5lQm94KiBpbmxpbmVCb3gs
IFZlY3Rvcjxjb25zdCBJbmxpbmVCb3gqPiYmIHNvcnRlZElubGluZUJveGVzID0geyB9LCBzaXpl
X3Qgc29ydGVkSW5saW5lQm94SW5kZXggPSAwKQogICAgICAgICA6IG1faW5saW5lQm94KGlubGlu
ZUJveCkKLSAgICAgICAgLCBtX3NvcnRlZElubGluZVRleHRCb3hlcyhXVEZNb3ZlKHNvcnRlZElu
bGluZVRleHRCb3hlcykpCi0gICAgICAgICwgbV9zb3J0ZWRJbmxpbmVUZXh0Qm94SW5kZXgoc29y
dGVkSW5saW5lVGV4dEJveEluZGV4KQorICAgICAgICAsIG1fbG9naWNhbE9yZGVyQ2FjaGUoV1RG
TW92ZShzb3J0ZWRJbmxpbmVCb3hlcykpCisgICAgICAgICwgbV9sb2dpY2FsT3JkZXJDYWNoZUlu
ZGV4KHNvcnRlZElubGluZUJveEluZGV4KQogICAgIHsgfQogCisgICAgZW51bSBjbGFzcyBMb2dp
Y2FsT3JkZXIgeyBTdGFydCwgRW5kIH07CisgICAgUnVuSXRlcmF0b3JMZWdhY3lQYXRoKGNvbnN0
IFJvb3RJbmxpbmVCb3gmIHJvb3QsIExvZ2ljYWxPcmRlciBvcmRlcikKKyAgICAgICAgOiBtX2xv
Z2ljYWxPcmRlckNhY2hlKGlubGluZUJveGVzSW5Mb2dpY2FsT3JkZXIocm9vdCkpCisgICAgewor
ICAgICAgICBpZiAoIW1fbG9naWNhbE9yZGVyQ2FjaGUuaXNFbXB0eSgpKSB7CisgICAgICAgICAg
ICBtX2xvZ2ljYWxPcmRlckNhY2hlSW5kZXggPSBvcmRlciA9PSBMb2dpY2FsT3JkZXI6OlN0YXJ0
ID8gMCA6IG1fbG9naWNhbE9yZGVyQ2FjaGUuc2l6ZSgpIC0gMTsKKyAgICAgICAgICAgIG1faW5s
aW5lQm94ID0gbV9sb2dpY2FsT3JkZXJDYWNoZVttX2xvZ2ljYWxPcmRlckNhY2hlSW5kZXhdOwor
ICAgICAgICB9CisgICAgfQorCiAgICAgYm9vbCBpc1RleHQoKSBjb25zdCB7IHJldHVybiBtX2lu
bGluZUJveC0+aXNJbmxpbmVUZXh0Qm94KCk7IH0KIAogICAgIEZsb2F0UmVjdCByZWN0KCkgY29u
c3QgeyByZXR1cm4gbV9pbmxpbmVCb3gtPmZyYW1lUmVjdCgpOyB9CkBAIC03NCw5ICs4NSwxMiBA
QCBwdWJsaWM6CiAgICAgdm9pZCB0cmF2ZXJzZU5leHRUZXh0UnVuKCkgeyBtX2lubGluZUJveCA9
IGlubGluZVRleHRCb3goKS0+bmV4dFRleHRCb3goKTsgfQogICAgIHZvaWQgdHJhdmVyc2VOZXh0
VGV4dFJ1bkluVGV4dE9yZGVyKCkKICAgICB7Ci0gICAgICAgIG1faW5saW5lQm94ID0gbmV4dElu
bGluZVRleHRCb3hJblRleHRPcmRlcigpOwotICAgICAgICBpZiAoIW1fc29ydGVkSW5saW5lVGV4
dEJveGVzLmlzRW1wdHkoKSkKLSAgICAgICAgICAgICsrbV9zb3J0ZWRJbmxpbmVUZXh0Qm94SW5k
ZXg7CisgICAgICAgIGlmICghbV9sb2dpY2FsT3JkZXJDYWNoZS5pc0VtcHR5KCkpIHsKKyAgICAg
ICAgICAgIHRyYXZlcnNlTmV4dElubGluZUJveEluQ2FjaGVPcmRlcigpOworICAgICAgICAgICAg
QVNTRVJUKCFtX2lubGluZUJveCB8fCBpczxJbmxpbmVUZXh0Qm94PihtX2lubGluZUJveCkpOwor
ICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIHRyYXZlcnNlTmV4dFRleHRS
dW4oKTsKICAgICB9CiAKICAgICB2b2lkIHRyYXZlcnNlTmV4dE9uTGluZSgpCkBAIC04OSw2ICsx
MDMsMTggQEAgcHVibGljOgogICAgICAgICBtX2lubGluZUJveCA9IG1faW5saW5lQm94LT5wcmV2
aW91c0xlYWZPbkxpbmUoKTsKICAgICB9CiAKKyAgICB2b2lkIHRyYXZlcnNlTmV4dE9uTGluZUlu
TG9naWNhbE9yZGVyKCkKKyAgICB7CisgICAgICAgIGluaXRpYWxpemVMb2dpY2FsT3JkZXJDYWNo
ZUZvckxpbmUoKTsKKyAgICAgICAgdHJhdmVyc2VOZXh0SW5saW5lQm94SW5DYWNoZU9yZGVyKCk7
CisgICAgfQorCisgICAgdm9pZCB0cmF2ZXJzZVByZXZpb3VzT25MaW5lSW5Mb2dpY2FsT3JkZXIo
KQorICAgIHsKKyAgICAgICAgaW5pdGlhbGl6ZUxvZ2ljYWxPcmRlckNhY2hlRm9yTGluZSgpOwor
ICAgICAgICB0cmF2ZXJzZVByZXZpb3VzSW5saW5lQm94SW5DYWNoZU9yZGVyKCk7CisgICAgfQor
CiAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFJ1bkl0ZXJhdG9yTGVnYWN5UGF0aCYgb3RoZXIp
IGNvbnN0IHsgcmV0dXJuIG1faW5saW5lQm94ID09IG90aGVyLm1faW5saW5lQm94OyB9CiAKICAg
ICBib29sIGF0RW5kKCkgY29uc3QgeyByZXR1cm4gIW1faW5saW5lQm94OyB9CkBAIC05OSwyMSAr
MTI1LDQ5IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICBjb25zdCBJbmxpbmVUZXh0Qm94KiBp
bmxpbmVUZXh0Qm94KCkgY29uc3QgeyByZXR1cm4gZG93bmNhc3Q8SW5saW5lVGV4dEJveD4obV9p
bmxpbmVCb3gpOyB9Ci0gICAgY29uc3QgSW5saW5lVGV4dEJveCogbmV4dElubGluZVRleHRCb3hJ
blRleHRPcmRlcigpIGNvbnN0OwogCi0gICAgY29uc3QgSW5saW5lQm94KiBtX2lubGluZUJveDsK
LSAgICBSZWZDb3VudGVkQXJyYXk8Y29uc3QgSW5saW5lVGV4dEJveCo+IG1fc29ydGVkSW5saW5l
VGV4dEJveGVzOwotICAgIHNpemVfdCBtX3NvcnRlZElubGluZVRleHRCb3hJbmRleCB7IDAgfTsK
KyAgICBzdGF0aWMgVmVjdG9yPGNvbnN0IElubGluZUJveCo+IGlubGluZUJveGVzSW5Mb2dpY2Fs
T3JkZXIoY29uc3QgUm9vdElubGluZUJveCYgcm9vdCkKKyAgICB7CisgICAgICAgIFZlY3RvcjxJ
bmxpbmVCb3gqPiBpbmxpbmVCb3hlczsKKyAgICAgICAgcm9vdC5jb2xsZWN0TGVhZkJveGVzSW5M
b2dpY2FsT3JkZXIoaW5saW5lQm94ZXMpOworICAgICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2Fz
dDxWZWN0b3I8Y29uc3QgSW5saW5lQm94Kj4mPihpbmxpbmVCb3hlcyk7CisgICAgfQorICAgIHZv
aWQgaW5pdGlhbGl6ZUxvZ2ljYWxPcmRlckNhY2hlRm9yTGluZSgpCisgICAgeworICAgICAgICBp
ZiAoIW1faW5saW5lQm94IHx8ICFtX2xvZ2ljYWxPcmRlckNhY2hlLmlzRW1wdHkoKSkKKyAgICAg
ICAgICAgIHJldHVybjsKKyAgICAgICAgbV9sb2dpY2FsT3JkZXJDYWNoZSA9IGlubGluZUJveGVz
SW5Mb2dpY2FsT3JkZXIobV9pbmxpbmVCb3gtPnJvb3QoKSk7CisgICAgICAgIGZvciAobV9sb2dp
Y2FsT3JkZXJDYWNoZUluZGV4ID0gMDsgbV9sb2dpY2FsT3JkZXJDYWNoZUluZGV4IDwgbV9sb2dp
Y2FsT3JkZXJDYWNoZS5zaXplKCk7ICsrbV9sb2dpY2FsT3JkZXJDYWNoZUluZGV4KSB7CisgICAg
ICAgICAgICBpZiAobV9sb2dpY2FsT3JkZXJDYWNoZVttX2xvZ2ljYWxPcmRlckNhY2hlSW5kZXhd
ID09IG1faW5saW5lQm94KQorICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAg
ICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICB9CisKKyAgICB2b2lkIHRyYXZlcnNlTmV4
dElubGluZUJveEluQ2FjaGVPcmRlcigpOworICAgIHZvaWQgdHJhdmVyc2VQcmV2aW91c0lubGlu
ZUJveEluQ2FjaGVPcmRlcigpOworCisgICAgY29uc3QgSW5saW5lQm94KiBtX2lubGluZUJveCB7
IG51bGxwdHIgfTsKKyAgICBSZWZDb3VudGVkQXJyYXk8Y29uc3QgSW5saW5lQm94Kj4gbV9sb2dp
Y2FsT3JkZXJDYWNoZTsKKyAgICBzaXplX3QgbV9sb2dpY2FsT3JkZXJDYWNoZUluZGV4IHsgMCB9
OwogfTsKIAotaW5saW5lIGNvbnN0IElubGluZVRleHRCb3gqIFJ1bkl0ZXJhdG9yTGVnYWN5UGF0
aDo6bmV4dElubGluZVRleHRCb3hJblRleHRPcmRlcigpIGNvbnN0CisKK2lubGluZSB2b2lkIFJ1
bkl0ZXJhdG9yTGVnYWN5UGF0aDo6dHJhdmVyc2VOZXh0SW5saW5lQm94SW5DYWNoZU9yZGVyKCkK
K3sKKyAgICBBU1NFUlQoIW1fbG9naWNhbE9yZGVyQ2FjaGUuaXNFbXB0eSgpKTsKKyAgICArK21f
bG9naWNhbE9yZGVyQ2FjaGVJbmRleDsKKyAgICBtX2lubGluZUJveCA9IG1fbG9naWNhbE9yZGVy
Q2FjaGVJbmRleCA8IG1fbG9naWNhbE9yZGVyQ2FjaGUuc2l6ZSgpID8gbV9sb2dpY2FsT3JkZXJD
YWNoZVttX2xvZ2ljYWxPcmRlckNhY2hlSW5kZXhdIDogbnVsbHB0cjsKK30KKworaW5saW5lIHZv
aWQgUnVuSXRlcmF0b3JMZWdhY3lQYXRoOjp0cmF2ZXJzZVByZXZpb3VzSW5saW5lQm94SW5DYWNo
ZU9yZGVyKCkKIHsKLSAgICBpZiAoIW1fc29ydGVkSW5saW5lVGV4dEJveGVzLmlzRW1wdHkoKSkg
ewotICAgICAgICBpZiAobV9zb3J0ZWRJbmxpbmVUZXh0Qm94SW5kZXggKyAxIDwgbV9zb3J0ZWRJ
bmxpbmVUZXh0Qm94ZXMuc2l6ZSgpKQotICAgICAgICAgICAgcmV0dXJuIG1fc29ydGVkSW5saW5l
VGV4dEJveGVzW21fc29ydGVkSW5saW5lVGV4dEJveEluZGV4ICsgMV07Ci0gICAgICAgIHJldHVy
biBudWxscHRyOworICAgIEFTU0VSVCghbV9sb2dpY2FsT3JkZXJDYWNoZS5pc0VtcHR5KCkpOwor
ICAgIGlmICghbV9sb2dpY2FsT3JkZXJDYWNoZUluZGV4KSB7CisgICAgICAgIG1faW5saW5lQm94
ID0gbnVsbHB0cjsKKyAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICByZXR1cm4gaW5saW5lVGV4
dEJveCgpLT5uZXh0VGV4dEJveCgpOworICAgIG1faW5saW5lQm94ID0gbV9sb2dpY2FsT3JkZXJD
YWNoZVstLW1fbG9naWNhbE9yZGVyQ2FjaGVJbmRleF07CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3JhdGlvblJ1bkl0ZXJh
dG9yTW9kZXJuUGF0aC5oIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0xheW91
dEludGVncmF0aW9uUnVuSXRlcmF0b3JNb2Rlcm5QYXRoLmgKaW5kZXggMDE5MTIwMDcyZjI1Li5j
MWY1Y2MwZWU4YTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlv
bi9MYXlvdXRJbnRlZ3JhdGlvblJ1bkl0ZXJhdG9yTW9kZXJuUGF0aC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3JhdGlvblJ1bkl0ZXJhdG9yTW9k
ZXJuUGF0aC5oCkBAIC0xODIsNiArMTgyLDE2IEBAIHB1YmxpYzoKICAgICAgICAgICAgIHNldEF0
RW5kKCk7CiAgICAgfQogCisgICAgdm9pZCB0cmF2ZXJzZU5leHRPbkxpbmVJbkxvZ2ljYWxPcmRl
cigpCisgICAgeworICAgICAgICB0cmF2ZXJzZU5leHRPbkxpbmUoKTsKKyAgICB9CisKKyAgICB2
b2lkIHRyYXZlcnNlUHJldmlvdXNPbkxpbmVJbkxvZ2ljYWxPcmRlcigpCisgICAgeworICAgICAg
ICB0cmF2ZXJzZVByZXZpb3VzT25MaW5lKCk7CisgICAgfQorCiAgICAgYm9vbCBvcGVyYXRvcj09
KGNvbnN0IFJ1bkl0ZXJhdG9yTW9kZXJuUGF0aCYgb3RoZXIpIGNvbnN0IHsgcmV0dXJuIG1faW5s
aW5lQ29udGVudCA9PSBvdGhlci5tX2lubGluZUNvbnRlbnQgJiYgbV9ydW5JbmRleCA9PSBvdGhl
ci5tX3J1bkluZGV4OyB9CiAKICAgICBib29sIGF0RW5kKCkgY29uc3QgeyByZXR1cm4gbV9ydW5J
bmRleCA9PSBydW5zKCkuc2l6ZSgpIHx8ICFydW4oKS5oYXNVbmRlcmx5aW5nTGF5b3V0KCk7IH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9Sb290SW5saW5lQm94LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9Sb290SW5saW5lQm94LmNwcAppbmRleCAxZDVkMzg2
ZmIzNjAuLmFjZDJiNWVmNzI2OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1Jvb3RJbmxpbmVCb3guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9Sb290SW5s
aW5lQm94LmNwcApAQCAtMTAyMywzNCArMTAyMyw2IEBAIGJvb2wgUm9vdElubGluZUJveDo6aW5j
bHVkZXNSb290TGluZUJveEZvbnRPckxlYWRpbmcoKSBjb25zdAogICAgIHJldHVybiByZW5kZXJl
cigpLnN0eWxlKCkubGluZUJveENvbnRhaW4oKS5jb250YWluc0FueSh7IExpbmVCb3hDb250YWlu
OjpCbG9jaywgTGluZUJveENvbnRhaW46OklubGluZSwgTGluZUJveENvbnRhaW46OkZvbnQgfSk7
CiB9CiAKLU5vZGUqIFJvb3RJbmxpbmVCb3g6OmdldExvZ2ljYWxTdGFydEJveFdpdGhOb2RlKElu
bGluZUJveComIHN0YXJ0Qm94KSBjb25zdAotewotICAgIFZlY3RvcjxJbmxpbmVCb3gqPiBsZWFm
Qm94ZXNJbkxvZ2ljYWxPcmRlcjsKLSAgICBjb2xsZWN0TGVhZkJveGVzSW5Mb2dpY2FsT3JkZXIo
bGVhZkJveGVzSW5Mb2dpY2FsT3JkZXIpOwotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbGVh
ZkJveGVzSW5Mb2dpY2FsT3JkZXIuc2l6ZSgpOyArK2kpIHsKLSAgICAgICAgaWYgKGxlYWZCb3hl
c0luTG9naWNhbE9yZGVyW2ldLT5yZW5kZXJlcigpLm5vZGUoKSkgewotICAgICAgICAgICAgc3Rh
cnRCb3ggPSBsZWFmQm94ZXNJbkxvZ2ljYWxPcmRlcltpXTsKLSAgICAgICAgICAgIHJldHVybiBz
dGFydEJveC0+cmVuZGVyZXIoKS5ub2RlKCk7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgc3RhcnRC
b3ggPSBudWxscHRyOwotICAgIHJldHVybiBudWxscHRyOwotfQotICAgIAotTm9kZSogUm9vdElu
bGluZUJveDo6Z2V0TG9naWNhbEVuZEJveFdpdGhOb2RlKElubGluZUJveComIGVuZEJveCkgY29u
c3QKLXsKLSAgICBWZWN0b3I8SW5saW5lQm94Kj4gbGVhZkJveGVzSW5Mb2dpY2FsT3JkZXI7Ci0g
ICAgY29sbGVjdExlYWZCb3hlc0luTG9naWNhbE9yZGVyKGxlYWZCb3hlc0luTG9naWNhbE9yZGVy
KTsKLSAgICBmb3IgKHNpemVfdCBpID0gbGVhZkJveGVzSW5Mb2dpY2FsT3JkZXIuc2l6ZSgpOyBp
ID4gMDsgLS1pKSB7IAotICAgICAgICBpZiAobGVhZkJveGVzSW5Mb2dpY2FsT3JkZXJbaSAtIDFd
LT5yZW5kZXJlcigpLm5vZGUoKSkgewotICAgICAgICAgICAgZW5kQm94ID0gbGVhZkJveGVzSW5M
b2dpY2FsT3JkZXJbaSAtIDFdOwotICAgICAgICAgICAgcmV0dXJuIGVuZEJveC0+cmVuZGVyZXIo
KS5ub2RlKCk7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgZW5kQm94ID0gbnVsbHB0cjsKLSAgICBy
ZXR1cm4gbnVsbHB0cjsKLX0KLQogI2lmIEVOQUJMRShUUkVFX0RFQlVHR0lORykKIAogdm9pZCBS
b290SW5saW5lQm94OjpvdXRwdXRMaW5lQm94KFdURjo6VGV4dFN0cmVhbSYgc3RyZWFtLCBib29s
IG1hcmssIGludCBkZXB0aCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9Sb290SW5saW5lQm94LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUm9vdElubGlu
ZUJveC5oCmluZGV4IDcwMDkzMGFjNDcxMi4uYjk1MTg4MjQwMjc4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUm9vdElubGluZUJveC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9Sb290SW5saW5lQm94LmgKQEAgLTE4NCw5ICsxODQsNiBAQCBwdWJsaWM6CiAg
ICAgICAgIHJldHVybiBJbmxpbmVGbG93Qm94Ojpsb2dpY2FsQm90dG9tTGF5b3V0T3ZlcmZsb3co
bGluZUJvdHRvbSgpKTsKICAgICB9CiAKLSAgICBOb2RlKiBnZXRMb2dpY2FsU3RhcnRCb3hXaXRo
Tm9kZShJbmxpbmVCb3gqJikgY29uc3Q7Ci0gICAgTm9kZSogZ2V0TG9naWNhbEVuZEJveFdpdGhO
b2RlKElubGluZUJveComKSBjb25zdDsKLQogICAgIHZpcnR1YWwgYm9vbCBpc1RyYWlsaW5nRmxv
YXRzUm9vdElubGluZUJveCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAKICNpZiBFTkFCTEUo
VFJFRV9ERUJVR0dJTkcpCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>