<?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>185411</bug_id>
          
          <creation_ts>2018-05-07 20:32:56 -0700</creation_ts>
          <short_desc>[Simple line layout] Cache run and line resolvers.</short_desc>
          <delta_ts>2018-05-08 17:20:26 -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="alan">zalan</reporter>
          <assigned_to name="alan">zalan</assigned_to>
          <cc>bfulgham</cc>
    
    <cc>commit-queue</cc>
    
    <cc>koivisto</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>1421608</commentid>
    <comment_count>0</comment_count>
    <who name="alan">zalan</who>
    <bug_when>2018-05-07 20:32:56 -0700</bug_when>
    <thetext>Whenever a (run/line)resolver is constructed (for painting/hit testing) we iterate through and collect all the flow&apos;s content in FlowContents&apos;s c&apos;tor.
In case of long text content with large amount of elements (foobar1&lt;br&gt;foobar2&lt;br&gt;.....foobar9999&lt;br&gt;) this repeated work could hang the WebProcess.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1421611</commentid>
    <comment_count>1</comment_count>
      <attachid>339794</attachid>
    <who name="alan">zalan</who>
    <bug_when>2018-05-07 20:44:13 -0700</bug_when>
    <thetext>Created attachment 339794
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1421612</commentid>
    <comment_count>2</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2018-05-07 20:44:55 -0700</bug_when>
    <thetext>&lt;rdar://problem/40047659&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1421722</commentid>
    <comment_count>3</comment_count>
      <attachid>339794</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2018-05-08 08:31:38 -0700</bug_when>
    <thetext>Comment on attachment 339794
Patch

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

&gt; Source/WebCore/rendering/SimpleLineLayout.cpp:979
&gt; +    , m_runResolver(std::make_unique&lt;RunResolver&gt;(blockFlow, *this))
&gt; +    , m_lineResolver(std::make_unique&lt;LineResolver&gt;(*m_runResolver))

Doesn&apos;t this massively increase memory use of simple line layout? FlowContents objects have way more per-line memory use than Layout, that&apos;s why they have been temporaries so far. Can we have a cache that is created on-demand and goes away when not needed (with a timer for example).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1421723</commentid>
    <comment_count>4</comment_count>
      <attachid>339794</attachid>
    <who name="alan">zalan</who>
    <bug_when>2018-05-08 08:34:42 -0700</bug_when>
    <thetext>Comment on attachment 339794
Patch

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

&gt;&gt; Source/WebCore/rendering/SimpleLineLayout.cpp:979
&gt;&gt; +    , m_lineResolver(std::make_unique&lt;LineResolver&gt;(*m_runResolver))
&gt; 
&gt; Doesn&apos;t this massively increase memory use of simple line layout? FlowContents objects have way more per-line memory use than Layout, that&apos;s why they have been temporaries so far. Can we have a cache that is created on-demand and goes away when not needed (with a timer for example).

Absolutely! I was going to create them on demand (hence the std::unique&lt;&gt;). -though destroying them on a timer didn&apos;t occur to me. That&apos;s a good idea.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1421727</commentid>
    <comment_count>5</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2018-05-08 08:47:24 -0700</bug_when>
    <thetext>Actually since FlowContents::Segments are per-renderer, the resolvers are not that big in any reasonable case (and unreasonable ones benefit from caching). I think this approach is actually fine as-is. You probably don&apos;t need to cache RunResolver and LineResolver separately though.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1421800</commentid>
    <comment_count>6</comment_count>
      <attachid>339834</attachid>
    <who name="alan">zalan</who>
    <bug_when>2018-05-08 10:58:36 -0700</bug_when>
    <thetext>Created attachment 339834
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1421850</commentid>
    <comment_count>7</comment_count>
      <attachid>339834</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2018-05-08 11:43:41 -0700</bug_when>
    <thetext>Comment on attachment 339834
Patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1421960</commentid>
    <comment_count>8</comment_count>
      <attachid>339885</attachid>
    <who name="alan">zalan</who>
    <bug_when>2018-05-08 14:51:47 -0700</bug_when>
    <thetext>Created attachment 339885
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1422067</commentid>
    <comment_count>9</comment_count>
      <attachid>339885</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-05-08 17:20:25 -0700</bug_when>
    <thetext>Comment on attachment 339885
Patch

Clearing flags on attachment: 339885

Committed r231529: &lt;https://trac.webkit.org/changeset/231529&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1422068</commentid>
    <comment_count>10</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-05-08 17:20:26 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>339794</attachid>
            <date>2018-05-07 20:44:13 -0700</date>
            <delta_ts>2018-05-08 10:58:35 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-185411-20180507204412.patch</filename>
            <type>text/plain</type>
            <size>12734</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjMxMzcxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMGJhMTBiMzRmOTEwNmMz
NDdkMjYyOTE4YzAwZWFjNWQyNTdmMDg1ZC4uZmU4ZDc1NjdiNzJlM2IwMTAxNjgzMDdhZjU5NjU3
NDVlZjlmNjFkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM3IEBACisyMDE4LTA1LTA3ICBaYWxh
biBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CisKKyAgICAgICAgW1NpbXBsZSBsaW5lIGxheW91
dF0gQ2FjaGUgcnVuIGFuZCBsaW5lIHJlc29sdmVycy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4NTQxMQorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIFdJUC4gRVdTIG9ubHkuCisKKyAgICAgICAgQ292ZXJl
ZCBieSBleGlzdGluZyB0ZXN0cy4KKworICAgICAgICAqIHJlbmRlcmluZy9TaW1wbGVMaW5lTGF5
b3V0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNpbXBsZUxpbmVMYXlvdXQ6OmNyZWF0ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpTaW1wbGVMaW5lTGF5b3V0OjpMYXlvdXQ6OmNyZWF0ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpTaW1wbGVMaW5lTGF5b3V0OjpMYXlvdXQ6OkxheW91dCk6CisgICAgICAg
IChXZWJDb3JlOjpTaW1wbGVMaW5lTGF5b3V0OjpMYXlvdXQ6OnJ1blJlc29sdmVyIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OlNpbXBsZUxpbmVMYXlvdXQ6OkxheW91dDo6bGluZVJlc29sdmVy
IGNvbnN0KToKKyAgICAgICAgKiByZW5kZXJpbmcvU2ltcGxlTGluZUxheW91dC5oOgorICAgICAg
ICAqIHJlbmRlcmluZy9TaW1wbGVMaW5lTGF5b3V0RnVuY3Rpb25zLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlNpbXBsZUxpbmVMYXlvdXQ6OnBhaW50Rmxvdyk6CisgICAgICAgIChXZWJDb3JlOjpT
aW1wbGVMaW5lTGF5b3V0OjpoaXRUZXN0Rmxvdyk6CisgICAgICAgIChXZWJDb3JlOjpTaW1wbGVM
aW5lTGF5b3V0Ojpjb2xsZWN0Rmxvd092ZXJmbG93KToKKyAgICAgICAgKFdlYkNvcmU6OlNpbXBs
ZUxpbmVMYXlvdXQ6OmNvbXB1dGVCb3VuZGluZ0JveCk6CisgICAgICAgIChXZWJDb3JlOjpTaW1w
bGVMaW5lTGF5b3V0Ojpjb21wdXRlRmlyc3RSdW5Mb2NhdGlvbik6CisgICAgICAgIChXZWJDb3Jl
OjpTaW1wbGVMaW5lTGF5b3V0Ojpjb2xsZWN0QWJzb2x1dGVSZWN0cyk6CisgICAgICAgIChXZWJD
b3JlOjpTaW1wbGVMaW5lTGF5b3V0Ojpjb2xsZWN0QWJzb2x1dGVRdWFkcyk6CisgICAgICAgIChX
ZWJDb3JlOjpTaW1wbGVMaW5lTGF5b3V0Ojp0ZXh0T2Zmc2V0Rm9yUG9pbnQpOgorICAgICAgICAo
V2ViQ29yZTo6U2ltcGxlTGluZUxheW91dDo6Y29sbGVjdEFic29sdXRlUXVhZHNGb3JSYW5nZSk6
CisgICAgICAgIChXZWJDb3JlOjpTaW1wbGVMaW5lTGF5b3V0OjpnZW5lcmF0ZUxpbmVCb3hUcmVl
KToKKyAgICAgICAgKiByZW5kZXJpbmcvU2ltcGxlTGluZUxheW91dFJlc29sdmVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlNpbXBsZUxpbmVMYXlvdXQ6OkxpbmVSZXNvbHZlcjo6TGluZVJlc29s
dmVyKToKKyAgICAgICAgKiByZW5kZXJpbmcvU2ltcGxlTGluZUxheW91dFJlc29sdmVyLmg6Cisg
ICAgICAgIChXZWJDb3JlOjpTaW1wbGVMaW5lTGF5b3V0OjpsaW5lUmVzb2x2ZXIpOiBEZWxldGVk
LgorCiAyMDE4LTA1LTA0ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAg
ICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjIzMTMzMS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9TaW1wbGVMaW5lTGF5b3V0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9TaW1wbGVMaW5lTGF5b3V0LmNwcAppbmRleCAzMDEzMDBmNmUzN2RlZDU2NzJiYzBk
NjVhMWFmM2NjZjJlMWM0MzM2Li4wM2I1NTk0ZDgxNmE0NWViMTA4OThkNWZjYjc5YmY5ZTgxNDYy
YTM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvU2ltcGxlTGluZUxheW91
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1NpbXBsZUxpbmVMYXlvdXQuY3Bw
CkBAIC01MCw2ICs1MCw3IEBACiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIKICNpbmNsdWRlICJTaW1w
bGVMaW5lTGF5b3V0Rmxvd0NvbnRlbnRzLmgiCiAjaW5jbHVkZSAiU2ltcGxlTGluZUxheW91dEZ1
bmN0aW9ucy5oIgorI2luY2x1ZGUgIlNpbXBsZUxpbmVMYXlvdXRSZXNvbHZlci5oIgogI2luY2x1
ZGUgIlNpbXBsZUxpbmVMYXlvdXRUZXh0RnJhZ21lbnRJdGVyYXRvci5oIgogI2luY2x1ZGUgIlRl
eHQuaCIKICNpbmNsdWRlICJUZXh0UGFpbnRTdHlsZS5oIgpAQCAtOTYyLDIyICs5NjMsMzQgQEAg
c3RkOjp1bmlxdWVfcHRyPExheW91dD4gY3JlYXRlKFJlbmRlckJsb2NrRmxvdyYgZmxvdykKICAg
ICB1bnNpZ25lZCBsaW5lQ291bnQgPSAwOwogICAgIExheW91dDo6UnVuVmVjdG9yIHJ1bnM7CiAg
ICAgY3JlYXRlVGV4dFJ1bnMocnVucywgZmxvdywgbGluZUNvdW50KTsKLSAgICByZXR1cm4gTGF5
b3V0OjpjcmVhdGUocnVucywgbGluZUNvdW50KTsKKyAgICByZXR1cm4gTGF5b3V0OjpjcmVhdGUo
cnVucywgbGluZUNvdW50LCBmbG93KTsKIH0KIAotc3RkOjp1bmlxdWVfcHRyPExheW91dD4gTGF5
b3V0OjpjcmVhdGUoY29uc3QgUnVuVmVjdG9yJiBydW5WZWN0b3IsIHVuc2lnbmVkIGxpbmVDb3Vu
dCkKK3N0ZDo6dW5pcXVlX3B0cjxMYXlvdXQ+IExheW91dDo6Y3JlYXRlKGNvbnN0IFJ1blZlY3Rv
ciYgcnVuVmVjdG9yLCB1bnNpZ25lZCBsaW5lQ291bnQsIFJlbmRlckJsb2NrRmxvdyYgZmxvdykK
IHsKICAgICB2b2lkKiBzbG90ID0gV1RGOjpmYXN0TWFsbG9jKHNpemVvZihMYXlvdXQpICsgc2l6
ZW9mKFJ1bikgKiBydW5WZWN0b3Iuc2l6ZSgpKTsKLSAgICByZXR1cm4gc3RkOjp1bmlxdWVfcHRy
PExheW91dD4obmV3IChOb3ROdWxsLCBzbG90KSBMYXlvdXQocnVuVmVjdG9yLCBsaW5lQ291bnQp
KTsKKyAgICByZXR1cm4gc3RkOjp1bmlxdWVfcHRyPExheW91dD4obmV3IChOb3ROdWxsLCBzbG90
KSBMYXlvdXQocnVuVmVjdG9yLCBsaW5lQ291bnQsIGZsb3cpKTsKIH0KIAotTGF5b3V0OjpMYXlv
dXQoY29uc3QgUnVuVmVjdG9yJiBydW5WZWN0b3IsIHVuc2lnbmVkIGxpbmVDb3VudCkKK0xheW91
dDo6TGF5b3V0KGNvbnN0IFJ1blZlY3RvciYgcnVuVmVjdG9yLCB1bnNpZ25lZCBsaW5lQ291bnQs
IFJlbmRlckJsb2NrRmxvdyYgYmxvY2tGbG93KQogICAgIDogbV9saW5lQ291bnQobGluZUNvdW50
KQogICAgICwgbV9ydW5Db3VudChydW5WZWN0b3Iuc2l6ZSgpKQorICAgICwgbV9ydW5SZXNvbHZl
cihzdGQ6Om1ha2VfdW5pcXVlPFJ1blJlc29sdmVyPihibG9ja0Zsb3csICp0aGlzKSkKKyAgICAs
IG1fbGluZVJlc29sdmVyKHN0ZDo6bWFrZV91bmlxdWU8TGluZVJlc29sdmVyPigqbV9ydW5SZXNv
bHZlcikpCiB7CiAgICAgbWVtY3B5KG1fcnVucywgcnVuVmVjdG9yLmRhdGEoKSwgbV9ydW5Db3Vu
dCAqIHNpemVvZihSdW4pKTsKIH0KIAorUnVuUmVzb2x2ZXImIExheW91dDo6cnVuUmVzb2x2ZXIo
KSBjb25zdAoreworICAgIHJldHVybiAqbV9ydW5SZXNvbHZlcjsKK30KKworTGluZVJlc29sdmVy
JiBMYXlvdXQ6OmxpbmVSZXNvbHZlcigpIGNvbnN0Cit7CisgICAgcmV0dXJuICptX2xpbmVSZXNv
bHZlcjsKK30KKwogTGF5b3V0Ojp+TGF5b3V0KCkKIHsKICAgICBzaW1wbGVMaW5lTGF5b3V0V2ls
bEJlRGVsZXRlZCgqdGhpcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
U2ltcGxlTGluZUxheW91dC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1NpbXBsZUxpbmVM
YXlvdXQuaAppbmRleCA1Mjc0NDdkNTY4MTRkNWYyMGUxYjE0MWNmYzFjMTFiODQ0NzdjOGQyLi44
NTgzN2FmNDQ4ZDA1YmMxNmJkN2IzYzZlYzNjOGU1ODFmZTM1ZTU2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvU2ltcGxlTGluZUxheW91dC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9TaW1wbGVMaW5lTGF5b3V0LmgKQEAgLTQxLDEwICs0MSwxMiBAQCBjbGFz
cyBSZW5kZXJCbG9ja0Zsb3c7CiAKIG5hbWVzcGFjZSBTaW1wbGVMaW5lTGF5b3V0IHsKIAorY2xh
c3MgTGluZVJlc29sdmVyOworY2xhc3MgUnVuUmVzb2x2ZXI7CisKIGJvb2wgY2FuVXNlRm9yKGNv
bnN0IFJlbmRlckJsb2NrRmxvdyYpOwogQXZvaWRhbmNlUmVhc29uRmxhZ3MgY2FuVXNlRm9yV2l0
aFJlYXNvbihjb25zdCBSZW5kZXJCbG9ja0Zsb3cmLCBJbmNsdWRlUmVhc29ucyk7CiAKLQogc3Ry
dWN0IFJ1biB7CiAjaWYgQ09NUElMRVIoTVNWQykKICAgICBSdW4oKSB7IH0KQEAgLTc5LDcgKzgx
LDcgQEAgY2xhc3MgTGF5b3V0IHsKIHB1YmxpYzoKICAgICB1c2luZyBSdW5WZWN0b3IgPSBWZWN0
b3I8UnVuLCAxMD47CiAgICAgdXNpbmcgU2ltcGxlTGluZVN0cnV0cyA9IFZlY3RvcjxTaW1wbGVM
aW5lU3RydXQsIDQ+OwotICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8TGF5b3V0PiBjcmVhdGUo
Y29uc3QgUnVuVmVjdG9yJiwgdW5zaWduZWQgbGluZUNvdW50KTsKKyAgICBzdGF0aWMgc3RkOjp1
bmlxdWVfcHRyPExheW91dD4gY3JlYXRlKGNvbnN0IFJ1blZlY3RvciYsIHVuc2lnbmVkIGxpbmVD
b3VudCwgUmVuZGVyQmxvY2tGbG93Jik7CiAKICAgICB+TGF5b3V0KCk7CiAKQEAgLTkzLDEzICs5
NSwxOCBAQCBwdWJsaWM6CiAgICAgYm9vbCBoYXNMaW5lU3RydXRzKCkgY29uc3QgeyByZXR1cm4g
IW1fbGluZVN0cnV0cy5pc0VtcHR5KCk7IH0KICAgICB2b2lkIHNldExpbmVTdHJ1dHMoU2ltcGxl
TGluZVN0cnV0cyYmIGxpbmVTdHJ1dHMpIHsgbV9saW5lU3RydXRzID0gbGluZVN0cnV0czsgfQog
ICAgIGNvbnN0IFNpbXBsZUxpbmVTdHJ1dHMmIHN0cnV0cygpIGNvbnN0IHsgcmV0dXJuIG1fbGlu
ZVN0cnV0czsgfQorICAgIFJ1blJlc29sdmVyJiBydW5SZXNvbHZlcigpIGNvbnN0OworICAgIExp
bmVSZXNvbHZlciYgbGluZVJlc29sdmVyKCkgY29uc3Q7CisKIHByaXZhdGU6Ci0gICAgTGF5b3V0
KGNvbnN0IFJ1blZlY3RvciYsIHVuc2lnbmVkIGxpbmVDb3VudCk7CisgICAgTGF5b3V0KGNvbnN0
IFJ1blZlY3RvciYsIHVuc2lnbmVkIGxpbmVDb3VudCwgUmVuZGVyQmxvY2tGbG93Jik7CiAKICAg
ICB1bnNpZ25lZCBtX2xpbmVDb3VudDsKICAgICB1bnNpZ25lZCBtX3J1bkNvdW50OwogICAgIGJv
b2wgbV9pc1BhZ2luYXRlZCB7IGZhbHNlIH07CiAgICAgU2ltcGxlTGluZVN0cnV0cyBtX2xpbmVT
dHJ1dHM7CisgICAgc3RkOjp1bmlxdWVfcHRyPFJ1blJlc29sdmVyPiBtX3J1blJlc29sdmVyOwor
ICAgIHN0ZDo6dW5pcXVlX3B0cjxMaW5lUmVzb2x2ZXI+IG1fbGluZVJlc29sdmVyOwogICAgIFJ1
biBtX3J1bnNbMF07CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
U2ltcGxlTGluZUxheW91dEZ1bmN0aW9ucy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
U2ltcGxlTGluZUxheW91dEZ1bmN0aW9ucy5jcHAKaW5kZXggZmFmNDZjY2I2NDFlNDE4MGY1M2Ri
MTc4M2UzZjhhZTZmOGFkMTFjNC4uODAzMzNhMGRiZDc2ZGFmZDRhYmFlMGU2MDBiZmU2NzVmODgw
ZTUyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1NpbXBsZUxpbmVMYXlv
dXRGdW5jdGlvbnMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9TaW1wbGVMaW5l
TGF5b3V0RnVuY3Rpb25zLmNwcApAQCAtMTA1LDcgKzEwNSw3IEBAIHZvaWQgcGFpbnRGbG93KGNv
bnN0IFJlbmRlckJsb2NrRmxvdyYgZmxvdywgY29uc3QgTGF5b3V0JiBsYXlvdXQsIFBhaW50SW5m
byYgcGFpCiAgICAgTGF5b3V0UmVjdCBwYWludFJlY3QgPSBwYWludEluZm8ucmVjdDsKICAgICBw
YWludFJlY3QubW92ZUJ5KC1wYWludE9mZnNldCk7CiAKLSAgICBhdXRvIHJlc29sdmVyID0gcnVu
UmVzb2x2ZXIoZmxvdywgbGF5b3V0KTsKKyAgICBhdXRvIHJlc29sdmVyID0gbGF5b3V0LnJ1blJl
c29sdmVyKCk7CiAgICAgZmxvYXQgZGV2aWNlU2NhbGVGYWN0b3IgPSBmbG93LmRvY3VtZW50KCku
ZGV2aWNlU2NhbGVGYWN0b3IoKTsKICAgICBmb3IgKGF1dG8gcnVuIDogcmVzb2x2ZXIucmFuZ2VG
b3JSZWN0KHBhaW50UmVjdCkpIHsKICAgICAgICAgaWYgKHJ1bi5zdGFydCgpID09IHJ1bi5lbmQo
KSkKQEAgLTE0Nyw3ICsxNDcsNyBAQCBib29sIGhpdFRlc3RGbG93KGNvbnN0IFJlbmRlckJsb2Nr
RmxvdyYgZmxvdywgY29uc3QgTGF5b3V0JiBsYXlvdXQsIGNvbnN0IEhpdFRlcwogCiAgICAgTGF5
b3V0UmVjdCByYW5nZVJlY3QgPSBsb2NhdGlvbkluQ29udGFpbmVyLmJvdW5kaW5nQm94KCk7CiAg
ICAgcmFuZ2VSZWN0Lm1vdmVCeSgtYWNjdW11bGF0ZWRPZmZzZXQpOwotICAgIGF1dG8gcmVzb2x2
ZXIgPSBsaW5lUmVzb2x2ZXIoZmxvdywgbGF5b3V0KTsKKyAgICBhdXRvIHJlc29sdmVyID0gbGF5
b3V0LmxpbmVSZXNvbHZlcigpOwogICAgIGF1dG8gcmFuZ2UgPSByZXNvbHZlci5yYW5nZUZvclJl
Y3QocmFuZ2VSZWN0KTsKICAgICBmb3IgKGF1dG8gaXQgPSByYW5nZS5iZWdpbigpLCBlbmQgPSBy
YW5nZS5lbmQoKTsgaXQgIT0gZW5kOyArK2l0KSB7CiAgICAgICAgIGF1dG8gbGluZVJlY3QgPSAq
aXQ7CkBAIC0xNjQsNyArMTY0LDcgQEAgYm9vbCBoaXRUZXN0Rmxvdyhjb25zdCBSZW5kZXJCbG9j
a0Zsb3cmIGZsb3csIGNvbnN0IExheW91dCYgbGF5b3V0LCBjb25zdCBIaXRUZXMKIAogdm9pZCBj
b2xsZWN0Rmxvd092ZXJmbG93KFJlbmRlckJsb2NrRmxvdyYgZmxvdywgY29uc3QgTGF5b3V0JiBs
YXlvdXQpCiB7Ci0gICAgZm9yIChhdXRvIGxpbmVSZWN0IDogbGluZVJlc29sdmVyKGZsb3csIGxh
eW91dCkpIHsKKyAgICBmb3IgKGF1dG8gbGluZVJlY3QgOiBsYXlvdXQubGluZVJlc29sdmVyKCkp
IHsKICAgICAgICAgTGF5b3V0UmVjdCB2aXN1YWxPdmVyZmxvd1JlY3QgPSBMYXlvdXRSZWN0KGNv
bXB1dGVPdmVyZmxvdyhmbG93LCBsaW5lUmVjdCkpOwogICAgICAgICBmbG93LmFkZExheW91dE92
ZXJmbG93KExheW91dFJlY3QobGluZVJlY3QpKTsKICAgICAgICAgZmxvdy5hZGRWaXN1YWxPdmVy
Zmxvdyh2aXN1YWxPdmVyZmxvd1JlY3QpOwpAQCAtMTczLDcgKzE3Myw3IEBAIHZvaWQgY29sbGVj
dEZsb3dPdmVyZmxvdyhSZW5kZXJCbG9ja0Zsb3cmIGZsb3csIGNvbnN0IExheW91dCYgbGF5b3V0
KQogCiBJbnRSZWN0IGNvbXB1dGVCb3VuZGluZ0JveChjb25zdCBSZW5kZXJPYmplY3QmIHJlbmRl
cmVyLCBjb25zdCBMYXlvdXQmIGxheW91dCkKIHsKLSAgICBhdXRvIHJlc29sdmVyID0gcnVuUmVz
b2x2ZXIoZG93bmNhc3Q8UmVuZGVyQmxvY2tGbG93PigqcmVuZGVyZXIucGFyZW50KCkpLCBsYXlv
dXQpOworICAgIGF1dG8gcmVzb2x2ZXIgPSBsYXlvdXQucnVuUmVzb2x2ZXIoKTsKICAgICBGbG9h
dFJlY3QgYm91bmRpbmdCb3hSZWN0OwogICAgIGZvciAoYXV0byBydW4gOiByZXNvbHZlci5yYW5n
ZUZvclJlbmRlcmVyKHJlbmRlcmVyKSkgewogICAgICAgICBGbG9hdFJlY3QgcmVjdCA9IHJ1bi5y
ZWN0KCk7CkBAIC0xODcsNyArMTg3LDcgQEAgSW50UmVjdCBjb21wdXRlQm91bmRpbmdCb3goY29u
c3QgUmVuZGVyT2JqZWN0JiByZW5kZXJlciwgY29uc3QgTGF5b3V0JiBsYXlvdXQpCiAKIEludFBv
aW50IGNvbXB1dGVGaXJzdFJ1bkxvY2F0aW9uKGNvbnN0IFJlbmRlck9iamVjdCYgcmVuZGVyZXIs
IGNvbnN0IExheW91dCYgbGF5b3V0KQogewotICAgIGF1dG8gcmVzb2x2ZXIgPSBydW5SZXNvbHZl
cihkb3duY2FzdDxSZW5kZXJCbG9ja0Zsb3c+KCpyZW5kZXJlci5wYXJlbnQoKSksIGxheW91dCk7
CisgICAgYXV0byByZXNvbHZlciA9IGxheW91dC5ydW5SZXNvbHZlcigpOwogICAgIGF1dG8gcmFu
Z2UgPSByZXNvbHZlci5yYW5nZUZvclJlbmRlcmVyKHJlbmRlcmVyKTsKICAgICBhdXRvIGJlZ2lu
ID0gcmFuZ2UuYmVnaW4oKTsKICAgICBpZiAoYmVnaW4gPT0gcmFuZ2UuZW5kKCkpCkBAIC0xOTgs
NyArMTk4LDcgQEAgSW50UG9pbnQgY29tcHV0ZUZpcnN0UnVuTG9jYXRpb24oY29uc3QgUmVuZGVy
T2JqZWN0JiByZW5kZXJlciwgY29uc3QgTGF5b3V0JiBsYXkKIFZlY3RvcjxJbnRSZWN0PiBjb2xs
ZWN0QWJzb2x1dGVSZWN0cyhjb25zdCBSZW5kZXJPYmplY3QmIHJlbmRlcmVyLCBjb25zdCBMYXlv
dXQmIGxheW91dCwgY29uc3QgTGF5b3V0UG9pbnQmIGFjY3VtdWxhdGVkT2Zmc2V0KQogewogICAg
IFZlY3RvcjxJbnRSZWN0PiByZWN0czsKLSAgICBhdXRvIHJlc29sdmVyID0gcnVuUmVzb2x2ZXIo
ZG93bmNhc3Q8UmVuZGVyQmxvY2tGbG93PigqcmVuZGVyZXIucGFyZW50KCkpLCBsYXlvdXQpOwor
ICAgIGF1dG8gcmVzb2x2ZXIgPSBsYXlvdXQucnVuUmVzb2x2ZXIoKTsKICAgICBmb3IgKGF1dG8g
cnVuIDogcmVzb2x2ZXIucmFuZ2VGb3JSZW5kZXJlcihyZW5kZXJlcikpIHsKICAgICAgICAgRmxv
YXRSZWN0IHJlY3QgPSBydW4ucmVjdCgpOwogICAgICAgICByZWN0cy5hcHBlbmQoZW5jbG9zaW5n
SW50UmVjdChGbG9hdFJlY3QoYWNjdW11bGF0ZWRPZmZzZXQgKyByZWN0LmxvY2F0aW9uKCksIHJl
Y3Quc2l6ZSgpKSkpOwpAQCAtMjA5LDcgKzIwOSw3IEBAIFZlY3RvcjxJbnRSZWN0PiBjb2xsZWN0
QWJzb2x1dGVSZWN0cyhjb25zdCBSZW5kZXJPYmplY3QmIHJlbmRlcmVyLCBjb25zdCBMYXlvdXQm
CiBWZWN0b3I8RmxvYXRRdWFkPiBjb2xsZWN0QWJzb2x1dGVRdWFkcyhjb25zdCBSZW5kZXJPYmpl
Y3QmIHJlbmRlcmVyLCBjb25zdCBMYXlvdXQmIGxheW91dCwgYm9vbCogd2FzRml4ZWQpCiB7CiAg
ICAgVmVjdG9yPEZsb2F0UXVhZD4gcXVhZHM7Ci0gICAgYXV0byByZXNvbHZlciA9IHJ1blJlc29s
dmVyKGRvd25jYXN0PFJlbmRlckJsb2NrRmxvdz4oKnJlbmRlcmVyLnBhcmVudCgpKSwgbGF5b3V0
KTsKKyAgICBhdXRvIHJlc29sdmVyID0gbGF5b3V0LnJ1blJlc29sdmVyKCk7CiAgICAgZm9yIChh
dXRvIHJ1biA6IHJlc29sdmVyLnJhbmdlRm9yUmVuZGVyZXIocmVuZGVyZXIpKQogICAgICAgICBx
dWFkcy5hcHBlbmQocmVuZGVyZXIubG9jYWxUb0Fic29sdXRlUXVhZChGbG9hdFF1YWQocnVuLnJl
Y3QoKSksIFVzZVRyYW5zZm9ybXMsIHdhc0ZpeGVkKSk7CiAgICAgcmV0dXJuIHF1YWRzOwpAQCAt
MjE5LDcgKzIxOSw3IEBAIHVuc2lnbmVkIHRleHRPZmZzZXRGb3JQb2ludChjb25zdCBMYXlvdXRQ
b2ludCYgcG9pbnQsIGNvbnN0IFJlbmRlclRleHQmIHJlbmRlcmVyCiB7CiAgICAgYXV0byYgZmxv
dyA9IGRvd25jYXN0PFJlbmRlckJsb2NrRmxvdz4oKnJlbmRlcmVyLnBhcmVudCgpKTsKICAgICBB
U1NFUlQoZmxvdy5maXJzdENoaWxkKCkgPT0gZmxvdy5sYXN0Q2hpbGQoKSk7Ci0gICAgYXV0byBy
ZXNvbHZlciA9IHJ1blJlc29sdmVyKGZsb3csIGxheW91dCk7CisgICAgYXV0byByZXNvbHZlciA9
IGxheW91dC5ydW5SZXNvbHZlcigpOwogICAgIGF1dG8gaXQgPSByZXNvbHZlci5ydW5Gb3JQb2lu
dChwb2ludCk7CiAgICAgaWYgKGl0ID09IHJlc29sdmVyLmVuZCgpKQogICAgICAgICByZXR1cm4g
cmVuZGVyZXIudGV4dCgpLmxlbmd0aCgpOwpAQCAtMjM0LDcgKzIzNCw3IEBAIFZlY3RvcjxGbG9h
dFF1YWQ+IGNvbGxlY3RBYnNvbHV0ZVF1YWRzRm9yUmFuZ2UoY29uc3QgUmVuZGVyT2JqZWN0JiBy
ZW5kZXJlciwgdW5zCiB7CiAgICAgYXV0byYgc3R5bGUgPSBkb3duY2FzdDxSZW5kZXJCbG9ja0Zs
b3c+KCpyZW5kZXJlci5wYXJlbnQoKSkuc3R5bGUoKTsKICAgICBWZWN0b3I8RmxvYXRRdWFkPiBx
dWFkczsKLSAgICBhdXRvIHJlc29sdmVyID0gcnVuUmVzb2x2ZXIoZG93bmNhc3Q8UmVuZGVyQmxv
Y2tGbG93PigqcmVuZGVyZXIucGFyZW50KCkpLCBsYXlvdXQpOworICAgIGF1dG8gcmVzb2x2ZXIg
PSBsYXlvdXQucnVuUmVzb2x2ZXIoKTsKICAgICBmb3IgKGF1dG8gcnVuIDogcmVzb2x2ZXIucmFu
Z2VGb3JSZW5kZXJlcldpdGhPZmZzZXRzKHJlbmRlcmVyLCBzdGFydCwgZW5kKSkgewogICAgICAg
ICAvLyBUaGlzIHJ1biBpcyBmdWxseSBjb250YWluZWQuCiAgICAgICAgIGlmIChzdGFydCA8PSBy
dW4uc3RhcnQoKSAmJiBlbmQgPj0gcnVuLmVuZCgpKSB7CkBAIC0zMjAsNyArMzIwLDcgQEAgdm9p
ZCBnZW5lcmF0ZUxpbmVCb3hUcmVlKFJlbmRlckJsb2NrRmxvdyYgZmxvdywgY29uc3QgTGF5b3V0
JiBsYXlvdXQpCiAgICAgICAgIHJldHVybjsKIAogICAgIFJlZjxCaWRpQ29udGV4dD4gYmlkaUNv
bnRleHQgPSBCaWRpQ29udGV4dDo6Y3JlYXRlKDAsIFVfTEVGVF9UT19SSUdIVCk7Ci0gICAgYXV0
byByZXNvbHZlciA9IHJ1blJlc29sdmVyKGZsb3csIGxheW91dCk7CisgICAgYXV0byByZXNvbHZl
ciA9IGxheW91dC5ydW5SZXNvbHZlcigpOwogICAgIHVuc2lnbmVkIGxpbmVJbmRleCA9IDA7CiAg
ICAgd2hpbGUgKHRydWUpIHsKICAgICAgICAgYXV0byByYW5nZSA9IHJlc29sdmVyLnJhbmdlRm9y
TGluZShsaW5lSW5kZXgrKyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
U2ltcGxlTGluZUxheW91dFJlc29sdmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9T
aW1wbGVMaW5lTGF5b3V0UmVzb2x2ZXIuY3BwCmluZGV4IDQ3NjQyOTVjMjFmYWYwMDYwMzZhMzdj
ZTU3MmIwYTJkMmJhYzhjZDUuLmIxY2Y4MzE0NGRmYmRhZDMyZjIxMGU5YWE0NzczZWM1ZTA2OTIx
MzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9TaW1wbGVMaW5lTGF5b3V0
UmVzb2x2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9TaW1wbGVMaW5lTGF5
b3V0UmVzb2x2ZXIuY3BwCkBAIC0zMTMsOCArMzEzLDggQEAgY29uc3QgUmVuZGVyT2JqZWN0JiBM
aW5lUmVzb2x2ZXI6Okl0ZXJhdG9yOjpyZW5kZXJlcigpIGNvbnN0CiAgICAgcmV0dXJuIG1fcnVu
SXRlcmF0b3IucmVzb2x2ZXIoKS5mbG93Q29udGVudHMoKS5zZWdtZW50Rm9yUnVuKHJ1bi5zdGFy
dCgpLCBydW4uZW5kKCkpLnJlbmRlcmVyOwogfQogCi1MaW5lUmVzb2x2ZXI6OkxpbmVSZXNvbHZl
cihjb25zdCBSZW5kZXJCbG9ja0Zsb3cmIGZsb3csIGNvbnN0IExheW91dCYgbGF5b3V0KQotICAg
IDogbV9ydW5SZXNvbHZlcihmbG93LCBsYXlvdXQpCitMaW5lUmVzb2x2ZXI6OkxpbmVSZXNvbHZl
cihSdW5SZXNvbHZlciYgcnVuUmVzb2x2ZXIpCisgICAgOiBtX3J1blJlc29sdmVyKHJ1blJlc29s
dmVyKQogewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvU2ltcGxl
TGluZUxheW91dFJlc29sdmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvU2ltcGxlTGlu
ZUxheW91dFJlc29sdmVyLmgKaW5kZXggMGU4ZjIwN2E5OWE2ZjRlZjQyYmI5MTNkYzVlZThiMjI0
MzFiMzc3Yy4uNmM5YjUxYTVmNThjMjY1ZWNlMTFlYmQ5Yjc5OTI1ODRmNmJkOTY1ZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1NpbXBsZUxpbmVMYXlvdXRSZXNvbHZlci5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9TaW1wbGVMaW5lTGF5b3V0UmVzb2x2ZXIu
aApAQCAtMjcsNiArMjcsNyBAQAogCiAjaW5jbHVkZSAiTGF5b3V0UmVjdC5oIgogI2luY2x1ZGUg
IlJlbmRlckJsb2NrRmxvdy5oIgorI2luY2x1ZGUgIlNpbXBsZUxpbmVMYXlvdXQuaCIKICNpbmNs
dWRlICJTaW1wbGVMaW5lTGF5b3V0Rmxvd0NvbnRlbnRzLmgiCiAjaW5jbHVkZSA8d3RmL0l0ZXJh
dG9yUmFuZ2UuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KQEAgLTE0Myw3ICsx
NDQsNyBAQCBwdWJsaWM6CiAgICAgICAgIFJ1blJlc29sdmVyOjpJdGVyYXRvciBtX3J1bkl0ZXJh
dG9yOwogICAgIH07CiAKLSAgICBMaW5lUmVzb2x2ZXIoY29uc3QgUmVuZGVyQmxvY2tGbG93Jiwg
Y29uc3QgTGF5b3V0Jik7CisgICAgTGluZVJlc29sdmVyKFJ1blJlc29sdmVyJik7CiAKICAgICBJ
dGVyYXRvciBiZWdpbigpIGNvbnN0OwogICAgIEl0ZXJhdG9yIGVuZCgpIGNvbnN0OwpAQCAtMTUx
LDExICsxNTIsMTAgQEAgcHVibGljOgogICAgIFdURjo6SXRlcmF0b3JSYW5nZTxJdGVyYXRvcj4g
cmFuZ2VGb3JSZWN0KGNvbnN0IExheW91dFJlY3QmKSBjb25zdDsKIAogcHJpdmF0ZToKLSAgICBS
dW5SZXNvbHZlciBtX3J1blJlc29sdmVyOworICAgIFJ1blJlc29sdmVyJiBtX3J1blJlc29sdmVy
OwogfTsKIAogUnVuUmVzb2x2ZXIgcnVuUmVzb2x2ZXIoY29uc3QgUmVuZGVyQmxvY2tGbG93Jiwg
Y29uc3QgTGF5b3V0Jik7Ci1MaW5lUmVzb2x2ZXIgbGluZVJlc29sdmVyKGNvbnN0IFJlbmRlckJs
b2NrRmxvdyYsIGNvbnN0IExheW91dCYpOwogCiBpbmxpbmUgdW5zaWduZWQgUnVuUmVzb2x2ZXI6
OlJ1bjo6c3RhcnQoKSBjb25zdAogewpAQCAtMjk3LDEwICsyOTcsNSBAQCBpbmxpbmUgUnVuUmVz
b2x2ZXIgcnVuUmVzb2x2ZXIoY29uc3QgUmVuZGVyQmxvY2tGbG93JiBmbG93LCBjb25zdCBMYXlv
dXQmIGxheW91dAogICAgIHJldHVybiBSdW5SZXNvbHZlcihmbG93LCBsYXlvdXQpOwogfQogCi1p
bmxpbmUgTGluZVJlc29sdmVyIGxpbmVSZXNvbHZlcihjb25zdCBSZW5kZXJCbG9ja0Zsb3cmIGZs
b3csIGNvbnN0IExheW91dCYgbGF5b3V0KQotewotICAgIHJldHVybiBMaW5lUmVzb2x2ZXIoZmxv
dywgbGF5b3V0KTsKLX0KLQogfQogfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>339834</attachid>
            <date>2018-05-08 10:58:36 -0700</date>
            <delta_ts>2018-05-08 14:51:46 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-185411-20180508105835.patch</filename>
            <type>text/plain</type>
            <size>12785</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjMxMzcxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMGJhMTBiMzRmOTEwNmMz
NDdkMjYyOTE4YzAwZWFjNWQyNTdmMDg1ZC4uZmJiZDkyYTJjZTM1NDdlOTVjODFiMDhmZDA2Yzk0
MDVmMWZhY2RiOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM4IEBACisyMDE4LTA1LTA4ICBaYWxh
biBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CisKKyAgICAgICAgW1NpbXBsZSBsaW5lIGxheW91
dF0gQ2FjaGUgcnVuIHJlc29sdmVyLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTg1NDExCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgVGhpcyBwYXRjaCBjYWNoZXMgdGhlIHJ1biByZXNvbHZlciBvbiB0aGUg
W1NpbXBsZUxpbmVdTGF5b3V0IG9iamVjdC4gCisgICAgICAgIEluIGNlcnRhaW4gY2FzZXMsIHdo
ZW4gdGhlIGJsb2NrIGNvbnRhaW5lciBoYXMgdGhvdXNhbmRzIG9mIGVsZW1lbnRzIChmb29iYXIx
PGJyPmZvb2JhcjI8YnI+Li4uLi5mb29iYXI5OTk5PGJyPiksCisgICAgICAgIGNvbnN0cnVjdGlu
ZyB0aGUgcmVzb2x2ZXIgKGFuZCBpdHMgZGVwZW5kZW5jaWVzKSBpbiBhIHJlcGVhdGluZyBmYXNo
aW9uIGNvdWxkIGhhbmcgdGhlIFdlYlByb2Nlc3MuCisKKyAgICAgICAgQ292ZXJlZCBieSBleGlz
dGluZyB0ZXN0cy4KKworICAgICAgICAqIHJlbmRlcmluZy9TaW1wbGVMaW5lTGF5b3V0LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlNpbXBsZUxpbmVMYXlvdXQ6OmNyZWF0ZSk6CisgICAgICAgIChX
ZWJDb3JlOjpTaW1wbGVMaW5lTGF5b3V0OjpMYXlvdXQ6OmNyZWF0ZSk6CisgICAgICAgIChXZWJD
b3JlOjpTaW1wbGVMaW5lTGF5b3V0OjpMYXlvdXQ6OkxheW91dCk6CisgICAgICAgICogcmVuZGVy
aW5nL1NpbXBsZUxpbmVMYXlvdXQuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNpbXBsZUxpbmVMYXlv
dXQ6OkxheW91dDo6cnVuUmVzb2x2ZXIgY29uc3QpOgorICAgICAgICAqIHJlbmRlcmluZy9TaW1w
bGVMaW5lTGF5b3V0RnVuY3Rpb25zLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNpbXBsZUxpbmVM
YXlvdXQ6OnBhaW50Rmxvdyk6CisgICAgICAgIChXZWJDb3JlOjpTaW1wbGVMaW5lTGF5b3V0Ojpo
aXRUZXN0Rmxvdyk6CisgICAgICAgIChXZWJDb3JlOjpTaW1wbGVMaW5lTGF5b3V0Ojpjb2xsZWN0
Rmxvd092ZXJmbG93KToKKyAgICAgICAgKFdlYkNvcmU6OlNpbXBsZUxpbmVMYXlvdXQ6OmNvbXB1
dGVCb3VuZGluZ0JveCk6CisgICAgICAgIChXZWJDb3JlOjpTaW1wbGVMaW5lTGF5b3V0Ojpjb21w
dXRlRmlyc3RSdW5Mb2NhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpTaW1wbGVMaW5lTGF5b3V0
Ojpjb2xsZWN0QWJzb2x1dGVSZWN0cyk6CisgICAgICAgIChXZWJDb3JlOjpTaW1wbGVMaW5lTGF5
b3V0Ojpjb2xsZWN0QWJzb2x1dGVRdWFkcyk6CisgICAgICAgIChXZWJDb3JlOjpTaW1wbGVMaW5l
TGF5b3V0Ojp0ZXh0T2Zmc2V0Rm9yUG9pbnQpOgorICAgICAgICAoV2ViQ29yZTo6U2ltcGxlTGlu
ZUxheW91dDo6Y29sbGVjdEFic29sdXRlUXVhZHNGb3JSYW5nZSk6CisgICAgICAgIChXZWJDb3Jl
OjpTaW1wbGVMaW5lTGF5b3V0OjpnZW5lcmF0ZUxpbmVCb3hUcmVlKToKKyAgICAgICAgKiByZW5k
ZXJpbmcvU2ltcGxlTGluZUxheW91dFJlc29sdmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNp
bXBsZUxpbmVMYXlvdXQ6OkxpbmVSZXNvbHZlcjo6TGluZVJlc29sdmVyKToKKyAgICAgICAgKiBy
ZW5kZXJpbmcvU2ltcGxlTGluZUxheW91dFJlc29sdmVyLmg6CisgICAgICAgIChXZWJDb3JlOjpT
aW1wbGVMaW5lTGF5b3V0OjpsaW5lUmVzb2x2ZXIpOgorCiAyMDE4LTA1LTA0ICBDaHJpcyBEdW1l
eiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQg
cjIzMTMzMS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9TaW1wbGVMaW5l
TGF5b3V0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9TaW1wbGVMaW5lTGF5b3V0LmNw
cAppbmRleCAzMDEzMDBmNmUzN2RlZDU2NzJiYzBkNjVhMWFmM2NjZjJlMWM0MzM2Li43MWZhNDVk
NWRkNWM2NWNkNWFhMzhmODhjYjkzODI3NGVlZGY5ZTljIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvU2ltcGxlTGluZUxheW91dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1NpbXBsZUxpbmVMYXlvdXQuY3BwCkBAIC01MCw2ICs1MCw3IEBACiAjaW5jbHVk
ZSAiU2V0dGluZ3MuaCIKICNpbmNsdWRlICJTaW1wbGVMaW5lTGF5b3V0Rmxvd0NvbnRlbnRzLmgi
CiAjaW5jbHVkZSAiU2ltcGxlTGluZUxheW91dEZ1bmN0aW9ucy5oIgorI2luY2x1ZGUgIlNpbXBs
ZUxpbmVMYXlvdXRSZXNvbHZlci5oIgogI2luY2x1ZGUgIlNpbXBsZUxpbmVMYXlvdXRUZXh0RnJh
Z21lbnRJdGVyYXRvci5oIgogI2luY2x1ZGUgIlRleHQuaCIKICNpbmNsdWRlICJUZXh0UGFpbnRT
dHlsZS5oIgpAQCAtOTYyLDE4ICs5NjMsMTkgQEAgc3RkOjp1bmlxdWVfcHRyPExheW91dD4gY3Jl
YXRlKFJlbmRlckJsb2NrRmxvdyYgZmxvdykKICAgICB1bnNpZ25lZCBsaW5lQ291bnQgPSAwOwog
ICAgIExheW91dDo6UnVuVmVjdG9yIHJ1bnM7CiAgICAgY3JlYXRlVGV4dFJ1bnMocnVucywgZmxv
dywgbGluZUNvdW50KTsKLSAgICByZXR1cm4gTGF5b3V0OjpjcmVhdGUocnVucywgbGluZUNvdW50
KTsKKyAgICByZXR1cm4gTGF5b3V0OjpjcmVhdGUocnVucywgbGluZUNvdW50LCBmbG93KTsKIH0K
IAotc3RkOjp1bmlxdWVfcHRyPExheW91dD4gTGF5b3V0OjpjcmVhdGUoY29uc3QgUnVuVmVjdG9y
JiBydW5WZWN0b3IsIHVuc2lnbmVkIGxpbmVDb3VudCkKK3N0ZDo6dW5pcXVlX3B0cjxMYXlvdXQ+
IExheW91dDo6Y3JlYXRlKGNvbnN0IFJ1blZlY3RvciYgcnVuVmVjdG9yLCB1bnNpZ25lZCBsaW5l
Q291bnQsIGNvbnN0IFJlbmRlckJsb2NrRmxvdyYgYmxvY2tGbG93KQogewogICAgIHZvaWQqIHNs
b3QgPSBXVEY6OmZhc3RNYWxsb2Moc2l6ZW9mKExheW91dCkgKyBzaXplb2YoUnVuKSAqIHJ1blZl
Y3Rvci5zaXplKCkpOwotICAgIHJldHVybiBzdGQ6OnVuaXF1ZV9wdHI8TGF5b3V0PihuZXcgKE5v
dE51bGwsIHNsb3QpIExheW91dChydW5WZWN0b3IsIGxpbmVDb3VudCkpOworICAgIHJldHVybiBz
dGQ6OnVuaXF1ZV9wdHI8TGF5b3V0PihuZXcgKE5vdE51bGwsIHNsb3QpIExheW91dChydW5WZWN0
b3IsIGxpbmVDb3VudCwgYmxvY2tGbG93KSk7CiB9CiAKLUxheW91dDo6TGF5b3V0KGNvbnN0IFJ1
blZlY3RvciYgcnVuVmVjdG9yLCB1bnNpZ25lZCBsaW5lQ291bnQpCitMYXlvdXQ6OkxheW91dChj
b25zdCBSdW5WZWN0b3ImIHJ1blZlY3RvciwgdW5zaWduZWQgbGluZUNvdW50LCBjb25zdCBSZW5k
ZXJCbG9ja0Zsb3cmIGJsb2NrRmxvdykKICAgICA6IG1fbGluZUNvdW50KGxpbmVDb3VudCkKICAg
ICAsIG1fcnVuQ291bnQocnVuVmVjdG9yLnNpemUoKSkKKyAgICAsIG1fcnVuUmVzb2x2ZXIoc3Rk
OjptYWtlX3VuaXF1ZTxSdW5SZXNvbHZlcj4oYmxvY2tGbG93LCAqdGhpcykpCiB7CiAgICAgbWVt
Y3B5KG1fcnVucywgcnVuVmVjdG9yLmRhdGEoKSwgbV9ydW5Db3VudCAqIHNpemVvZihSdW4pKTsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9TaW1wbGVMaW5lTGF5b3V0
LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvU2ltcGxlTGluZUxheW91dC5oCmluZGV4IDUy
NzQ0N2Q1NjgxNGQ1ZjIwZTFiMTQxY2ZjMWMxMWI4NDQ3N2M4ZDIuLmQyM2M0YjRkZWVhOGQzYjI0
OTVlMjE1MGM0ZDcyYjRmNmJkMmE0ZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9TaW1wbGVMaW5lTGF5b3V0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Np
bXBsZUxpbmVMYXlvdXQuaApAQCAtNDEsMTAgKzQxLDExIEBAIGNsYXNzIFJlbmRlckJsb2NrRmxv
dzsKIAogbmFtZXNwYWNlIFNpbXBsZUxpbmVMYXlvdXQgewogCitjbGFzcyBSdW5SZXNvbHZlcjsK
KwogYm9vbCBjYW5Vc2VGb3IoY29uc3QgUmVuZGVyQmxvY2tGbG93Jik7CiBBdm9pZGFuY2VSZWFz
b25GbGFncyBjYW5Vc2VGb3JXaXRoUmVhc29uKGNvbnN0IFJlbmRlckJsb2NrRmxvdyYsIEluY2x1
ZGVSZWFzb25zKTsKIAotCiBzdHJ1Y3QgUnVuIHsKICNpZiBDT01QSUxFUihNU1ZDKQogICAgIFJ1
bigpIHsgfQpAQCAtNzksNyArODAsNyBAQCBjbGFzcyBMYXlvdXQgewogcHVibGljOgogICAgIHVz
aW5nIFJ1blZlY3RvciA9IFZlY3RvcjxSdW4sIDEwPjsKICAgICB1c2luZyBTaW1wbGVMaW5lU3Ry
dXRzID0gVmVjdG9yPFNpbXBsZUxpbmVTdHJ1dCwgND47Ci0gICAgc3RhdGljIHN0ZDo6dW5pcXVl
X3B0cjxMYXlvdXQ+IGNyZWF0ZShjb25zdCBSdW5WZWN0b3ImLCB1bnNpZ25lZCBsaW5lQ291bnQp
OworICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8TGF5b3V0PiBjcmVhdGUoY29uc3QgUnVuVmVj
dG9yJiwgdW5zaWduZWQgbGluZUNvdW50LCBjb25zdCBSZW5kZXJCbG9ja0Zsb3cmKTsKIAogICAg
IH5MYXlvdXQoKTsKIApAQCAtOTMsMTMgKzk0LDE2IEBAIHB1YmxpYzoKICAgICBib29sIGhhc0xp
bmVTdHJ1dHMoKSBjb25zdCB7IHJldHVybiAhbV9saW5lU3RydXRzLmlzRW1wdHkoKTsgfQogICAg
IHZvaWQgc2V0TGluZVN0cnV0cyhTaW1wbGVMaW5lU3RydXRzJiYgbGluZVN0cnV0cykgeyBtX2xp
bmVTdHJ1dHMgPSBsaW5lU3RydXRzOyB9CiAgICAgY29uc3QgU2ltcGxlTGluZVN0cnV0cyYgc3Ry
dXRzKCkgY29uc3QgeyByZXR1cm4gbV9saW5lU3RydXRzOyB9CisgICAgY29uc3QgUnVuUmVzb2x2
ZXImIHJ1blJlc29sdmVyKCkgY29uc3QgeyByZXR1cm4gKm1fcnVuUmVzb2x2ZXI7IH0KKwogcHJp
dmF0ZToKLSAgICBMYXlvdXQoY29uc3QgUnVuVmVjdG9yJiwgdW5zaWduZWQgbGluZUNvdW50KTsK
KyAgICBMYXlvdXQoY29uc3QgUnVuVmVjdG9yJiwgdW5zaWduZWQgbGluZUNvdW50LCBjb25zdCBS
ZW5kZXJCbG9ja0Zsb3cmKTsKIAogICAgIHVuc2lnbmVkIG1fbGluZUNvdW50OwogICAgIHVuc2ln
bmVkIG1fcnVuQ291bnQ7CiAgICAgYm9vbCBtX2lzUGFnaW5hdGVkIHsgZmFsc2UgfTsKICAgICBT
aW1wbGVMaW5lU3RydXRzIG1fbGluZVN0cnV0czsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8UnVuUmVz
b2x2ZXI+IG1fcnVuUmVzb2x2ZXI7CiAgICAgUnVuIG1fcnVuc1swXTsKIH07CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9TaW1wbGVMaW5lTGF5b3V0RnVuY3Rpb25zLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9TaW1wbGVMaW5lTGF5b3V0RnVuY3Rpb25zLmNw
cAppbmRleCBmYWY0NmNjYjY0MWU0MTgwZjUzZGIxNzgzZTNmOGFlNmY4YWQxMWM0Li44NjdhZWQ0
YjZiZDBmYmVkNmQwN2FjZmYyMDM0MjI1NzY1MmI4MTczIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvU2ltcGxlTGluZUxheW91dEZ1bmN0aW9ucy5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1NpbXBsZUxpbmVMYXlvdXRGdW5jdGlvbnMuY3BwCkBAIC0xMDUs
NyArMTA1LDcgQEAgdm9pZCBwYWludEZsb3coY29uc3QgUmVuZGVyQmxvY2tGbG93JiBmbG93LCBj
b25zdCBMYXlvdXQmIGxheW91dCwgUGFpbnRJbmZvJiBwYWkKICAgICBMYXlvdXRSZWN0IHBhaW50
UmVjdCA9IHBhaW50SW5mby5yZWN0OwogICAgIHBhaW50UmVjdC5tb3ZlQnkoLXBhaW50T2Zmc2V0
KTsKIAotICAgIGF1dG8gcmVzb2x2ZXIgPSBydW5SZXNvbHZlcihmbG93LCBsYXlvdXQpOworICAg
IGF1dG8gcmVzb2x2ZXIgPSBsYXlvdXQucnVuUmVzb2x2ZXIoKTsKICAgICBmbG9hdCBkZXZpY2VT
Y2FsZUZhY3RvciA9IGZsb3cuZG9jdW1lbnQoKS5kZXZpY2VTY2FsZUZhY3RvcigpOwogICAgIGZv
ciAoYXV0byBydW4gOiByZXNvbHZlci5yYW5nZUZvclJlY3QocGFpbnRSZWN0KSkgewogICAgICAg
ICBpZiAocnVuLnN0YXJ0KCkgPT0gcnVuLmVuZCgpKQpAQCAtMTQ3LDcgKzE0Nyw3IEBAIGJvb2wg
aGl0VGVzdEZsb3coY29uc3QgUmVuZGVyQmxvY2tGbG93JiBmbG93LCBjb25zdCBMYXlvdXQmIGxh
eW91dCwgY29uc3QgSGl0VGVzCiAKICAgICBMYXlvdXRSZWN0IHJhbmdlUmVjdCA9IGxvY2F0aW9u
SW5Db250YWluZXIuYm91bmRpbmdCb3goKTsKICAgICByYW5nZVJlY3QubW92ZUJ5KC1hY2N1bXVs
YXRlZE9mZnNldCk7Ci0gICAgYXV0byByZXNvbHZlciA9IGxpbmVSZXNvbHZlcihmbG93LCBsYXlv
dXQpOworICAgIGF1dG8gcmVzb2x2ZXIgPSBsaW5lUmVzb2x2ZXIobGF5b3V0LnJ1blJlc29sdmVy
KCkpOwogICAgIGF1dG8gcmFuZ2UgPSByZXNvbHZlci5yYW5nZUZvclJlY3QocmFuZ2VSZWN0KTsK
ICAgICBmb3IgKGF1dG8gaXQgPSByYW5nZS5iZWdpbigpLCBlbmQgPSByYW5nZS5lbmQoKTsgaXQg
IT0gZW5kOyArK2l0KSB7CiAgICAgICAgIGF1dG8gbGluZVJlY3QgPSAqaXQ7CkBAIC0xNjQsNyAr
MTY0LDcgQEAgYm9vbCBoaXRUZXN0Rmxvdyhjb25zdCBSZW5kZXJCbG9ja0Zsb3cmIGZsb3csIGNv
bnN0IExheW91dCYgbGF5b3V0LCBjb25zdCBIaXRUZXMKIAogdm9pZCBjb2xsZWN0Rmxvd092ZXJm
bG93KFJlbmRlckJsb2NrRmxvdyYgZmxvdywgY29uc3QgTGF5b3V0JiBsYXlvdXQpCiB7Ci0gICAg
Zm9yIChhdXRvIGxpbmVSZWN0IDogbGluZVJlc29sdmVyKGZsb3csIGxheW91dCkpIHsKKyAgICBm
b3IgKGF1dG8gbGluZVJlY3QgOiBsaW5lUmVzb2x2ZXIobGF5b3V0LnJ1blJlc29sdmVyKCkpKSB7
CiAgICAgICAgIExheW91dFJlY3QgdmlzdWFsT3ZlcmZsb3dSZWN0ID0gTGF5b3V0UmVjdChjb21w
dXRlT3ZlcmZsb3coZmxvdywgbGluZVJlY3QpKTsKICAgICAgICAgZmxvdy5hZGRMYXlvdXRPdmVy
ZmxvdyhMYXlvdXRSZWN0KGxpbmVSZWN0KSk7CiAgICAgICAgIGZsb3cuYWRkVmlzdWFsT3ZlcmZs
b3codmlzdWFsT3ZlcmZsb3dSZWN0KTsKQEAgLTE3Myw3ICsxNzMsNyBAQCB2b2lkIGNvbGxlY3RG
bG93T3ZlcmZsb3coUmVuZGVyQmxvY2tGbG93JiBmbG93LCBjb25zdCBMYXlvdXQmIGxheW91dCkK
IAogSW50UmVjdCBjb21wdXRlQm91bmRpbmdCb3goY29uc3QgUmVuZGVyT2JqZWN0JiByZW5kZXJl
ciwgY29uc3QgTGF5b3V0JiBsYXlvdXQpCiB7Ci0gICAgYXV0byByZXNvbHZlciA9IHJ1blJlc29s
dmVyKGRvd25jYXN0PFJlbmRlckJsb2NrRmxvdz4oKnJlbmRlcmVyLnBhcmVudCgpKSwgbGF5b3V0
KTsKKyAgICBhdXRvIHJlc29sdmVyID0gbGF5b3V0LnJ1blJlc29sdmVyKCk7CiAgICAgRmxvYXRS
ZWN0IGJvdW5kaW5nQm94UmVjdDsKICAgICBmb3IgKGF1dG8gcnVuIDogcmVzb2x2ZXIucmFuZ2VG
b3JSZW5kZXJlcihyZW5kZXJlcikpIHsKICAgICAgICAgRmxvYXRSZWN0IHJlY3QgPSBydW4ucmVj
dCgpOwpAQCAtMTg3LDcgKzE4Nyw3IEBAIEludFJlY3QgY29tcHV0ZUJvdW5kaW5nQm94KGNvbnN0
IFJlbmRlck9iamVjdCYgcmVuZGVyZXIsIGNvbnN0IExheW91dCYgbGF5b3V0KQogCiBJbnRQb2lu
dCBjb21wdXRlRmlyc3RSdW5Mb2NhdGlvbihjb25zdCBSZW5kZXJPYmplY3QmIHJlbmRlcmVyLCBj
b25zdCBMYXlvdXQmIGxheW91dCkKIHsKLSAgICBhdXRvIHJlc29sdmVyID0gcnVuUmVzb2x2ZXIo
ZG93bmNhc3Q8UmVuZGVyQmxvY2tGbG93PigqcmVuZGVyZXIucGFyZW50KCkpLCBsYXlvdXQpOwor
ICAgIGF1dG8gcmVzb2x2ZXIgPSBsYXlvdXQucnVuUmVzb2x2ZXIoKTsKICAgICBhdXRvIHJhbmdl
ID0gcmVzb2x2ZXIucmFuZ2VGb3JSZW5kZXJlcihyZW5kZXJlcik7CiAgICAgYXV0byBiZWdpbiA9
IHJhbmdlLmJlZ2luKCk7CiAgICAgaWYgKGJlZ2luID09IHJhbmdlLmVuZCgpKQpAQCAtMTk4LDcg
KzE5OCw3IEBAIEludFBvaW50IGNvbXB1dGVGaXJzdFJ1bkxvY2F0aW9uKGNvbnN0IFJlbmRlck9i
amVjdCYgcmVuZGVyZXIsIGNvbnN0IExheW91dCYgbGF5CiBWZWN0b3I8SW50UmVjdD4gY29sbGVj
dEFic29sdXRlUmVjdHMoY29uc3QgUmVuZGVyT2JqZWN0JiByZW5kZXJlciwgY29uc3QgTGF5b3V0
JiBsYXlvdXQsIGNvbnN0IExheW91dFBvaW50JiBhY2N1bXVsYXRlZE9mZnNldCkKIHsKICAgICBW
ZWN0b3I8SW50UmVjdD4gcmVjdHM7Ci0gICAgYXV0byByZXNvbHZlciA9IHJ1blJlc29sdmVyKGRv
d25jYXN0PFJlbmRlckJsb2NrRmxvdz4oKnJlbmRlcmVyLnBhcmVudCgpKSwgbGF5b3V0KTsKKyAg
ICBhdXRvIHJlc29sdmVyID0gbGF5b3V0LnJ1blJlc29sdmVyKCk7CiAgICAgZm9yIChhdXRvIHJ1
biA6IHJlc29sdmVyLnJhbmdlRm9yUmVuZGVyZXIocmVuZGVyZXIpKSB7CiAgICAgICAgIEZsb2F0
UmVjdCByZWN0ID0gcnVuLnJlY3QoKTsKICAgICAgICAgcmVjdHMuYXBwZW5kKGVuY2xvc2luZ0lu
dFJlY3QoRmxvYXRSZWN0KGFjY3VtdWxhdGVkT2Zmc2V0ICsgcmVjdC5sb2NhdGlvbigpLCByZWN0
LnNpemUoKSkpKTsKQEAgLTIwOSw3ICsyMDksNyBAQCBWZWN0b3I8SW50UmVjdD4gY29sbGVjdEFi
c29sdXRlUmVjdHMoY29uc3QgUmVuZGVyT2JqZWN0JiByZW5kZXJlciwgY29uc3QgTGF5b3V0Jgog
VmVjdG9yPEZsb2F0UXVhZD4gY29sbGVjdEFic29sdXRlUXVhZHMoY29uc3QgUmVuZGVyT2JqZWN0
JiByZW5kZXJlciwgY29uc3QgTGF5b3V0JiBsYXlvdXQsIGJvb2wqIHdhc0ZpeGVkKQogewogICAg
IFZlY3RvcjxGbG9hdFF1YWQ+IHF1YWRzOwotICAgIGF1dG8gcmVzb2x2ZXIgPSBydW5SZXNvbHZl
cihkb3duY2FzdDxSZW5kZXJCbG9ja0Zsb3c+KCpyZW5kZXJlci5wYXJlbnQoKSksIGxheW91dCk7
CisgICAgYXV0byByZXNvbHZlciA9IGxheW91dC5ydW5SZXNvbHZlcigpOwogICAgIGZvciAoYXV0
byBydW4gOiByZXNvbHZlci5yYW5nZUZvclJlbmRlcmVyKHJlbmRlcmVyKSkKICAgICAgICAgcXVh
ZHMuYXBwZW5kKHJlbmRlcmVyLmxvY2FsVG9BYnNvbHV0ZVF1YWQoRmxvYXRRdWFkKHJ1bi5yZWN0
KCkpLCBVc2VUcmFuc2Zvcm1zLCB3YXNGaXhlZCkpOwogICAgIHJldHVybiBxdWFkczsKQEAgLTIx
OSw3ICsyMTksNyBAQCB1bnNpZ25lZCB0ZXh0T2Zmc2V0Rm9yUG9pbnQoY29uc3QgTGF5b3V0UG9p
bnQmIHBvaW50LCBjb25zdCBSZW5kZXJUZXh0JiByZW5kZXJlcgogewogICAgIGF1dG8mIGZsb3cg
PSBkb3duY2FzdDxSZW5kZXJCbG9ja0Zsb3c+KCpyZW5kZXJlci5wYXJlbnQoKSk7CiAgICAgQVNT
RVJUKGZsb3cuZmlyc3RDaGlsZCgpID09IGZsb3cubGFzdENoaWxkKCkpOwotICAgIGF1dG8gcmVz
b2x2ZXIgPSBydW5SZXNvbHZlcihmbG93LCBsYXlvdXQpOworICAgIGF1dG8gcmVzb2x2ZXIgPSBs
YXlvdXQucnVuUmVzb2x2ZXIoKTsKICAgICBhdXRvIGl0ID0gcmVzb2x2ZXIucnVuRm9yUG9pbnQo
cG9pbnQpOwogICAgIGlmIChpdCA9PSByZXNvbHZlci5lbmQoKSkKICAgICAgICAgcmV0dXJuIHJl
bmRlcmVyLnRleHQoKS5sZW5ndGgoKTsKQEAgLTIzNCw3ICsyMzQsNyBAQCBWZWN0b3I8RmxvYXRR
dWFkPiBjb2xsZWN0QWJzb2x1dGVRdWFkc0ZvclJhbmdlKGNvbnN0IFJlbmRlck9iamVjdCYgcmVu
ZGVyZXIsIHVucwogewogICAgIGF1dG8mIHN0eWxlID0gZG93bmNhc3Q8UmVuZGVyQmxvY2tGbG93
PigqcmVuZGVyZXIucGFyZW50KCkpLnN0eWxlKCk7CiAgICAgVmVjdG9yPEZsb2F0UXVhZD4gcXVh
ZHM7Ci0gICAgYXV0byByZXNvbHZlciA9IHJ1blJlc29sdmVyKGRvd25jYXN0PFJlbmRlckJsb2Nr
Rmxvdz4oKnJlbmRlcmVyLnBhcmVudCgpKSwgbGF5b3V0KTsKKyAgICBhdXRvIHJlc29sdmVyID0g
bGF5b3V0LnJ1blJlc29sdmVyKCk7CiAgICAgZm9yIChhdXRvIHJ1biA6IHJlc29sdmVyLnJhbmdl
Rm9yUmVuZGVyZXJXaXRoT2Zmc2V0cyhyZW5kZXJlciwgc3RhcnQsIGVuZCkpIHsKICAgICAgICAg
Ly8gVGhpcyBydW4gaXMgZnVsbHkgY29udGFpbmVkLgogICAgICAgICBpZiAoc3RhcnQgPD0gcnVu
LnN0YXJ0KCkgJiYgZW5kID49IHJ1bi5lbmQoKSkgewpAQCAtMzIwLDcgKzMyMCw3IEBAIHZvaWQg
Z2VuZXJhdGVMaW5lQm94VHJlZShSZW5kZXJCbG9ja0Zsb3cmIGZsb3csIGNvbnN0IExheW91dCYg
bGF5b3V0KQogICAgICAgICByZXR1cm47CiAKICAgICBSZWY8QmlkaUNvbnRleHQ+IGJpZGlDb250
ZXh0ID0gQmlkaUNvbnRleHQ6OmNyZWF0ZSgwLCBVX0xFRlRfVE9fUklHSFQpOwotICAgIGF1dG8g
cmVzb2x2ZXIgPSBydW5SZXNvbHZlcihmbG93LCBsYXlvdXQpOworICAgIGF1dG8gcmVzb2x2ZXIg
PSBsYXlvdXQucnVuUmVzb2x2ZXIoKTsKICAgICB1bnNpZ25lZCBsaW5lSW5kZXggPSAwOwogICAg
IHdoaWxlICh0cnVlKSB7CiAgICAgICAgIGF1dG8gcmFuZ2UgPSByZXNvbHZlci5yYW5nZUZvckxp
bmUobGluZUluZGV4KyspOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Np
bXBsZUxpbmVMYXlvdXRSZXNvbHZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvU2lt
cGxlTGluZUxheW91dFJlc29sdmVyLmNwcAppbmRleCA0NzY0Mjk1YzIxZmFmMDA2MDM2YTM3Y2U1
NzJiMGEyZDJiYWM4Y2Q1Li5kMWY3NzUyZWE4OTAyN2E1ZDIwYzk4NTAxMzU0ZjBjYjNlMjI1M2Y3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvU2ltcGxlTGluZUxheW91dFJl
c29sdmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvU2ltcGxlTGluZUxheW91
dFJlc29sdmVyLmNwcApAQCAtMzEzLDggKzMxMyw4IEBAIGNvbnN0IFJlbmRlck9iamVjdCYgTGlu
ZVJlc29sdmVyOjpJdGVyYXRvcjo6cmVuZGVyZXIoKSBjb25zdAogICAgIHJldHVybiBtX3J1bkl0
ZXJhdG9yLnJlc29sdmVyKCkuZmxvd0NvbnRlbnRzKCkuc2VnbWVudEZvclJ1bihydW4uc3RhcnQo
KSwgcnVuLmVuZCgpKS5yZW5kZXJlcjsKIH0KIAotTGluZVJlc29sdmVyOjpMaW5lUmVzb2x2ZXIo
Y29uc3QgUmVuZGVyQmxvY2tGbG93JiBmbG93LCBjb25zdCBMYXlvdXQmIGxheW91dCkKLSAgICA6
IG1fcnVuUmVzb2x2ZXIoZmxvdywgbGF5b3V0KQorTGluZVJlc29sdmVyOjpMaW5lUmVzb2x2ZXIo
Y29uc3QgUnVuUmVzb2x2ZXImIHJ1blJlc29sdmVyKQorICAgIDogbV9ydW5SZXNvbHZlcihydW5S
ZXNvbHZlcikKIHsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Np
bXBsZUxpbmVMYXlvdXRSZXNvbHZlci5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1NpbXBs
ZUxpbmVMYXlvdXRSZXNvbHZlci5oCmluZGV4IDBlOGYyMDdhOTlhNmY0ZWY0MmJiOTEzZGM1ZWU4
YjIyNDMxYjM3N2MuLjdlYjZhNDMyN2Y1MGJmZjczNGVlZmNkNjI3YjQ0NGQyMGMxMDkyNGMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9TaW1wbGVMaW5lTGF5b3V0UmVzb2x2
ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvU2ltcGxlTGluZUxheW91dFJlc29s
dmVyLmgKQEAgLTI3LDYgKzI3LDcgQEAKIAogI2luY2x1ZGUgIkxheW91dFJlY3QuaCIKICNpbmNs
dWRlICJSZW5kZXJCbG9ja0Zsb3cuaCIKKyNpbmNsdWRlICJTaW1wbGVMaW5lTGF5b3V0LmgiCiAj
aW5jbHVkZSAiU2ltcGxlTGluZUxheW91dEZsb3dDb250ZW50cy5oIgogI2luY2x1ZGUgPHd0Zi9J
dGVyYXRvclJhbmdlLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CkBAIC0xNDMs
NyArMTQ0LDcgQEAgcHVibGljOgogICAgICAgICBSdW5SZXNvbHZlcjo6SXRlcmF0b3IgbV9ydW5J
dGVyYXRvcjsKICAgICB9OwogCi0gICAgTGluZVJlc29sdmVyKGNvbnN0IFJlbmRlckJsb2NrRmxv
dyYsIGNvbnN0IExheW91dCYpOworICAgIExpbmVSZXNvbHZlcihjb25zdCBSdW5SZXNvbHZlciYp
OwogCiAgICAgSXRlcmF0b3IgYmVnaW4oKSBjb25zdDsKICAgICBJdGVyYXRvciBlbmQoKSBjb25z
dDsKQEAgLTE1MSwxMSArMTUyLDExIEBAIHB1YmxpYzoKICAgICBXVEY6Okl0ZXJhdG9yUmFuZ2U8
SXRlcmF0b3I+IHJhbmdlRm9yUmVjdChjb25zdCBMYXlvdXRSZWN0JikgY29uc3Q7CiAKIHByaXZh
dGU6Ci0gICAgUnVuUmVzb2x2ZXIgbV9ydW5SZXNvbHZlcjsKKyAgICBjb25zdCBSdW5SZXNvbHZl
ciYgbV9ydW5SZXNvbHZlcjsKIH07CiAKIFJ1blJlc29sdmVyIHJ1blJlc29sdmVyKGNvbnN0IFJl
bmRlckJsb2NrRmxvdyYsIGNvbnN0IExheW91dCYpOwotTGluZVJlc29sdmVyIGxpbmVSZXNvbHZl
cihjb25zdCBSZW5kZXJCbG9ja0Zsb3cmLCBjb25zdCBMYXlvdXQmKTsKK0xpbmVSZXNvbHZlciBs
aW5lUmVzb2x2ZXIoY29uc3QgUnVuUmVzb2x2ZXImKTsKIAogaW5saW5lIHVuc2lnbmVkIFJ1blJl
c29sdmVyOjpSdW46OnN0YXJ0KCkgY29uc3QKIHsKQEAgLTI5Nyw5ICsyOTgsOSBAQCBpbmxpbmUg
UnVuUmVzb2x2ZXIgcnVuUmVzb2x2ZXIoY29uc3QgUmVuZGVyQmxvY2tGbG93JiBmbG93LCBjb25z
dCBMYXlvdXQmIGxheW91dAogICAgIHJldHVybiBSdW5SZXNvbHZlcihmbG93LCBsYXlvdXQpOwog
fQogCi1pbmxpbmUgTGluZVJlc29sdmVyIGxpbmVSZXNvbHZlcihjb25zdCBSZW5kZXJCbG9ja0Zs
b3cmIGZsb3csIGNvbnN0IExheW91dCYgbGF5b3V0KQoraW5saW5lIExpbmVSZXNvbHZlciBsaW5l
UmVzb2x2ZXIoY29uc3QgUnVuUmVzb2x2ZXImIHJ1blJlc29sdmVyKQogewotICAgIHJldHVybiBM
aW5lUmVzb2x2ZXIoZmxvdywgbGF5b3V0KTsKKyAgICByZXR1cm4gTGluZVJlc29sdmVyKHJ1blJl
c29sdmVyKTsKIH0KIAogfQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>339885</attachid>
            <date>2018-05-08 14:51:47 -0700</date>
            <delta_ts>2018-05-08 17:20:25 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-185411-20180508145146.patch</filename>
            <type>text/plain</type>
            <size>13052</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjMxMzcxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMGJhMTBiMzRmOTEwNmMz
NDdkMjYyOTE4YzAwZWFjNWQyNTdmMDg1ZC4uYTU1NWUwN2Q2MWZjZTk4YzcwOGZkZTE0NjExY2Yx
MTQwNTQyNTYyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM4IEBACisyMDE4LTA1LTA4ICBaYWxh
biBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CisKKyAgICAgICAgW1NpbXBsZSBsaW5lIGxheW91
dF0gQ2FjaGUgcnVuIHJlc29sdmVyLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTg1NDExCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQW50dGkgS29pdmlz
dG8uCisKKyAgICAgICAgVGhpcyBwYXRjaCBjYWNoZXMgdGhlIHJ1biByZXNvbHZlciBvbiB0aGUg
W1NpbXBsZUxpbmVdTGF5b3V0IG9iamVjdC4gCisgICAgICAgIEluIGNlcnRhaW4gY2FzZXMsIHdo
ZW4gdGhlIGJsb2NrIGNvbnRhaW5lciBoYXMgdGhvdXNhbmRzIG9mIGVsZW1lbnRzIChmb29iYXIx
PGJyPmZvb2JhcjI8YnI+Li4uLi5mb29iYXI5OTk5PGJyPiksCisgICAgICAgIGNvbnN0cnVjdGlu
ZyB0aGUgcmVzb2x2ZXIgKGFuZCBpdHMgZGVwZW5kZW5jaWVzKSBpbiBhIHJlcGVhdGluZyBmYXNo
aW9uIGNvdWxkIGhhbmcgdGhlIFdlYlByb2Nlc3MuCisKKyAgICAgICAgQ292ZXJlZCBieSBleGlz
dGluZyB0ZXN0cy4KKworICAgICAgICAqIHJlbmRlcmluZy9TaW1wbGVMaW5lTGF5b3V0LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlNpbXBsZUxpbmVMYXlvdXQ6OmNyZWF0ZSk6CisgICAgICAgIChX
ZWJDb3JlOjpTaW1wbGVMaW5lTGF5b3V0OjpMYXlvdXQ6OmNyZWF0ZSk6CisgICAgICAgIChXZWJD
b3JlOjpTaW1wbGVMaW5lTGF5b3V0OjpMYXlvdXQ6OkxheW91dCk6CisgICAgICAgICogcmVuZGVy
aW5nL1NpbXBsZUxpbmVMYXlvdXQuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNpbXBsZUxpbmVMYXlv
dXQ6OkxheW91dDo6cnVuUmVzb2x2ZXIgY29uc3QpOgorICAgICAgICAqIHJlbmRlcmluZy9TaW1w
bGVMaW5lTGF5b3V0RnVuY3Rpb25zLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNpbXBsZUxpbmVM
YXlvdXQ6OnBhaW50Rmxvdyk6CisgICAgICAgIChXZWJDb3JlOjpTaW1wbGVMaW5lTGF5b3V0Ojpo
aXRUZXN0Rmxvdyk6CisgICAgICAgIChXZWJDb3JlOjpTaW1wbGVMaW5lTGF5b3V0Ojpjb2xsZWN0
Rmxvd092ZXJmbG93KToKKyAgICAgICAgKFdlYkNvcmU6OlNpbXBsZUxpbmVMYXlvdXQ6OmNvbXB1
dGVCb3VuZGluZ0JveCk6CisgICAgICAgIChXZWJDb3JlOjpTaW1wbGVMaW5lTGF5b3V0Ojpjb21w
dXRlRmlyc3RSdW5Mb2NhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpTaW1wbGVMaW5lTGF5b3V0
Ojpjb2xsZWN0QWJzb2x1dGVSZWN0cyk6CisgICAgICAgIChXZWJDb3JlOjpTaW1wbGVMaW5lTGF5
b3V0Ojpjb2xsZWN0QWJzb2x1dGVRdWFkcyk6CisgICAgICAgIChXZWJDb3JlOjpTaW1wbGVMaW5l
TGF5b3V0Ojp0ZXh0T2Zmc2V0Rm9yUG9pbnQpOgorICAgICAgICAoV2ViQ29yZTo6U2ltcGxlTGlu
ZUxheW91dDo6Y29sbGVjdEFic29sdXRlUXVhZHNGb3JSYW5nZSk6CisgICAgICAgIChXZWJDb3Jl
OjpTaW1wbGVMaW5lTGF5b3V0OjpnZW5lcmF0ZUxpbmVCb3hUcmVlKToKKyAgICAgICAgKiByZW5k
ZXJpbmcvU2ltcGxlTGluZUxheW91dFJlc29sdmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNp
bXBsZUxpbmVMYXlvdXQ6OkxpbmVSZXNvbHZlcjo6TGluZVJlc29sdmVyKToKKyAgICAgICAgKiBy
ZW5kZXJpbmcvU2ltcGxlTGluZUxheW91dFJlc29sdmVyLmg6CisgICAgICAgIChXZWJDb3JlOjpT
aW1wbGVMaW5lTGF5b3V0OjpsaW5lUmVzb2x2ZXIpOgorCiAyMDE4LTA1LTA0ICBDaHJpcyBEdW1l
eiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQg
cjIzMTMzMS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9TaW1wbGVMaW5l
TGF5b3V0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9TaW1wbGVMaW5lTGF5b3V0LmNw
cAppbmRleCAzMDEzMDBmNmUzN2RlZDU2NzJiYzBkNjVhMWFmM2NjZjJlMWM0MzM2Li4yYTNlNjcw
NTRiNzM2ZGU3Y2I5NDkzNzFiZWFlZWM1NDY4N2VjY2RkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvU2ltcGxlTGluZUxheW91dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1NpbXBsZUxpbmVMYXlvdXQuY3BwCkBAIC01MCw2ICs1MCw3IEBACiAjaW5jbHVk
ZSAiU2V0dGluZ3MuaCIKICNpbmNsdWRlICJTaW1wbGVMaW5lTGF5b3V0Rmxvd0NvbnRlbnRzLmgi
CiAjaW5jbHVkZSAiU2ltcGxlTGluZUxheW91dEZ1bmN0aW9ucy5oIgorI2luY2x1ZGUgIlNpbXBs
ZUxpbmVMYXlvdXRSZXNvbHZlci5oIgogI2luY2x1ZGUgIlNpbXBsZUxpbmVMYXlvdXRUZXh0RnJh
Z21lbnRJdGVyYXRvci5oIgogI2luY2x1ZGUgIlRleHQuaCIKICNpbmNsdWRlICJUZXh0UGFpbnRT
dHlsZS5oIgpAQCAtOTYyLDIyICs5NjMsMzAgQEAgc3RkOjp1bmlxdWVfcHRyPExheW91dD4gY3Jl
YXRlKFJlbmRlckJsb2NrRmxvdyYgZmxvdykKICAgICB1bnNpZ25lZCBsaW5lQ291bnQgPSAwOwog
ICAgIExheW91dDo6UnVuVmVjdG9yIHJ1bnM7CiAgICAgY3JlYXRlVGV4dFJ1bnMocnVucywgZmxv
dywgbGluZUNvdW50KTsKLSAgICByZXR1cm4gTGF5b3V0OjpjcmVhdGUocnVucywgbGluZUNvdW50
KTsKKyAgICByZXR1cm4gTGF5b3V0OjpjcmVhdGUocnVucywgbGluZUNvdW50LCBmbG93KTsKIH0K
IAotc3RkOjp1bmlxdWVfcHRyPExheW91dD4gTGF5b3V0OjpjcmVhdGUoY29uc3QgUnVuVmVjdG9y
JiBydW5WZWN0b3IsIHVuc2lnbmVkIGxpbmVDb3VudCkKK3N0ZDo6dW5pcXVlX3B0cjxMYXlvdXQ+
IExheW91dDo6Y3JlYXRlKGNvbnN0IFJ1blZlY3RvciYgcnVuVmVjdG9yLCB1bnNpZ25lZCBsaW5l
Q291bnQsIGNvbnN0IFJlbmRlckJsb2NrRmxvdyYgYmxvY2tGbG93KQogewogICAgIHZvaWQqIHNs
b3QgPSBXVEY6OmZhc3RNYWxsb2Moc2l6ZW9mKExheW91dCkgKyBzaXplb2YoUnVuKSAqIHJ1blZl
Y3Rvci5zaXplKCkpOwotICAgIHJldHVybiBzdGQ6OnVuaXF1ZV9wdHI8TGF5b3V0PihuZXcgKE5v
dE51bGwsIHNsb3QpIExheW91dChydW5WZWN0b3IsIGxpbmVDb3VudCkpOworICAgIHJldHVybiBz
dGQ6OnVuaXF1ZV9wdHI8TGF5b3V0PihuZXcgKE5vdE51bGwsIHNsb3QpIExheW91dChydW5WZWN0
b3IsIGxpbmVDb3VudCwgYmxvY2tGbG93KSk7CiB9CiAKLUxheW91dDo6TGF5b3V0KGNvbnN0IFJ1
blZlY3RvciYgcnVuVmVjdG9yLCB1bnNpZ25lZCBsaW5lQ291bnQpCitMYXlvdXQ6OkxheW91dChj
b25zdCBSdW5WZWN0b3ImIHJ1blZlY3RvciwgdW5zaWduZWQgbGluZUNvdW50LCBjb25zdCBSZW5k
ZXJCbG9ja0Zsb3cmIGJsb2NrRmxvdykKICAgICA6IG1fbGluZUNvdW50KGxpbmVDb3VudCkKICAg
ICAsIG1fcnVuQ291bnQocnVuVmVjdG9yLnNpemUoKSkKKyAgICAsIG1fYmxvY2tGbG93UmVuZGVy
ZXIoYmxvY2tGbG93KQogewogICAgIG1lbWNweShtX3J1bnMsIHJ1blZlY3Rvci5kYXRhKCksIG1f
cnVuQ291bnQgKiBzaXplb2YoUnVuKSk7CiB9CiAKK2NvbnN0IFJ1blJlc29sdmVyJiBMYXlvdXQ6
OnJ1blJlc29sdmVyKCkgY29uc3QKK3sKKyAgICBpZiAoIW1fcnVuUmVzb2x2ZXIpCisgICAgICAg
IG1fcnVuUmVzb2x2ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFJ1blJlc29sdmVyPihtX2Jsb2NrRmxv
d1JlbmRlcmVyLCAqdGhpcyk7CisgICAgcmV0dXJuICptX3J1blJlc29sdmVyOworfQorCiBMYXlv
dXQ6On5MYXlvdXQoKQogewogICAgIHNpbXBsZUxpbmVMYXlvdXRXaWxsQmVEZWxldGVkKCp0aGlz
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9TaW1wbGVMaW5lTGF5b3V0
LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvU2ltcGxlTGluZUxheW91dC5oCmluZGV4IDUy
NzQ0N2Q1NjgxNGQ1ZjIwZTFiMTQxY2ZjMWMxMWI4NDQ3N2M4ZDIuLjZlMzY1NDk1MzY3YjEyZDZj
OWFjZDMxZDNiZDFmOTA5YjcyMDFjMjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9TaW1wbGVMaW5lTGF5b3V0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Np
bXBsZUxpbmVMYXlvdXQuaApAQCAtNDEsMTAgKzQxLDExIEBAIGNsYXNzIFJlbmRlckJsb2NrRmxv
dzsKIAogbmFtZXNwYWNlIFNpbXBsZUxpbmVMYXlvdXQgewogCitjbGFzcyBSdW5SZXNvbHZlcjsK
KwogYm9vbCBjYW5Vc2VGb3IoY29uc3QgUmVuZGVyQmxvY2tGbG93Jik7CiBBdm9pZGFuY2VSZWFz
b25GbGFncyBjYW5Vc2VGb3JXaXRoUmVhc29uKGNvbnN0IFJlbmRlckJsb2NrRmxvdyYsIEluY2x1
ZGVSZWFzb25zKTsKIAotCiBzdHJ1Y3QgUnVuIHsKICNpZiBDT01QSUxFUihNU1ZDKQogICAgIFJ1
bigpIHsgfQpAQCAtNzksNyArODAsNyBAQCBjbGFzcyBMYXlvdXQgewogcHVibGljOgogICAgIHVz
aW5nIFJ1blZlY3RvciA9IFZlY3RvcjxSdW4sIDEwPjsKICAgICB1c2luZyBTaW1wbGVMaW5lU3Ry
dXRzID0gVmVjdG9yPFNpbXBsZUxpbmVTdHJ1dCwgND47Ci0gICAgc3RhdGljIHN0ZDo6dW5pcXVl
X3B0cjxMYXlvdXQ+IGNyZWF0ZShjb25zdCBSdW5WZWN0b3ImLCB1bnNpZ25lZCBsaW5lQ291bnQp
OworICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8TGF5b3V0PiBjcmVhdGUoY29uc3QgUnVuVmVj
dG9yJiwgdW5zaWduZWQgbGluZUNvdW50LCBjb25zdCBSZW5kZXJCbG9ja0Zsb3cmKTsKIAogICAg
IH5MYXlvdXQoKTsKIApAQCAtOTMsMTMgKzk0LDE3IEBAIHB1YmxpYzoKICAgICBib29sIGhhc0xp
bmVTdHJ1dHMoKSBjb25zdCB7IHJldHVybiAhbV9saW5lU3RydXRzLmlzRW1wdHkoKTsgfQogICAg
IHZvaWQgc2V0TGluZVN0cnV0cyhTaW1wbGVMaW5lU3RydXRzJiYgbGluZVN0cnV0cykgeyBtX2xp
bmVTdHJ1dHMgPSBsaW5lU3RydXRzOyB9CiAgICAgY29uc3QgU2ltcGxlTGluZVN0cnV0cyYgc3Ry
dXRzKCkgY29uc3QgeyByZXR1cm4gbV9saW5lU3RydXRzOyB9CisgICAgY29uc3QgUnVuUmVzb2x2
ZXImIHJ1blJlc29sdmVyKCkgY29uc3Q7CisKIHByaXZhdGU6Ci0gICAgTGF5b3V0KGNvbnN0IFJ1
blZlY3RvciYsIHVuc2lnbmVkIGxpbmVDb3VudCk7CisgICAgTGF5b3V0KGNvbnN0IFJ1blZlY3Rv
ciYsIHVuc2lnbmVkIGxpbmVDb3VudCwgY29uc3QgUmVuZGVyQmxvY2tGbG93Jik7CiAKICAgICB1
bnNpZ25lZCBtX2xpbmVDb3VudDsKICAgICB1bnNpZ25lZCBtX3J1bkNvdW50OwogICAgIGJvb2wg
bV9pc1BhZ2luYXRlZCB7IGZhbHNlIH07CiAgICAgU2ltcGxlTGluZVN0cnV0cyBtX2xpbmVTdHJ1
dHM7CisgICAgY29uc3QgUmVuZGVyQmxvY2tGbG93JiBtX2Jsb2NrRmxvd1JlbmRlcmVyOworICAg
IG11dGFibGUgc3RkOjp1bmlxdWVfcHRyPFJ1blJlc29sdmVyPiBtX3J1blJlc29sdmVyOwogICAg
IFJ1biBtX3J1bnNbMF07CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvU2ltcGxlTGluZUxheW91dEZ1bmN0aW9ucy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvU2ltcGxlTGluZUxheW91dEZ1bmN0aW9ucy5jcHAKaW5kZXggZmFmNDZjY2I2NDFlNDE4MGY1
M2RiMTc4M2UzZjhhZTZmOGFkMTFjNC4uYzZmMDViNTMzMjRiYjM2YzliMWZkYzI3MTcyMWM5Y2E1
MjBlNWYxMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1NpbXBsZUxpbmVM
YXlvdXRGdW5jdGlvbnMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9TaW1wbGVM
aW5lTGF5b3V0RnVuY3Rpb25zLmNwcApAQCAtMTA1LDcgKzEwNSw3IEBAIHZvaWQgcGFpbnRGbG93
KGNvbnN0IFJlbmRlckJsb2NrRmxvdyYgZmxvdywgY29uc3QgTGF5b3V0JiBsYXlvdXQsIFBhaW50
SW5mbyYgcGFpCiAgICAgTGF5b3V0UmVjdCBwYWludFJlY3QgPSBwYWludEluZm8ucmVjdDsKICAg
ICBwYWludFJlY3QubW92ZUJ5KC1wYWludE9mZnNldCk7CiAKLSAgICBhdXRvIHJlc29sdmVyID0g
cnVuUmVzb2x2ZXIoZmxvdywgbGF5b3V0KTsKKyAgICBhdXRvJiByZXNvbHZlciA9IGxheW91dC5y
dW5SZXNvbHZlcigpOwogICAgIGZsb2F0IGRldmljZVNjYWxlRmFjdG9yID0gZmxvdy5kb2N1bWVu
dCgpLmRldmljZVNjYWxlRmFjdG9yKCk7CiAgICAgZm9yIChhdXRvIHJ1biA6IHJlc29sdmVyLnJh
bmdlRm9yUmVjdChwYWludFJlY3QpKSB7CiAgICAgICAgIGlmIChydW4uc3RhcnQoKSA9PSBydW4u
ZW5kKCkpCkBAIC0xNDcsNyArMTQ3LDcgQEAgYm9vbCBoaXRUZXN0Rmxvdyhjb25zdCBSZW5kZXJC
bG9ja0Zsb3cmIGZsb3csIGNvbnN0IExheW91dCYgbGF5b3V0LCBjb25zdCBIaXRUZXMKIAogICAg
IExheW91dFJlY3QgcmFuZ2VSZWN0ID0gbG9jYXRpb25JbkNvbnRhaW5lci5ib3VuZGluZ0JveCgp
OwogICAgIHJhbmdlUmVjdC5tb3ZlQnkoLWFjY3VtdWxhdGVkT2Zmc2V0KTsKLSAgICBhdXRvIHJl
c29sdmVyID0gbGluZVJlc29sdmVyKGZsb3csIGxheW91dCk7CisgICAgYXV0byByZXNvbHZlciA9
IGxpbmVSZXNvbHZlcihsYXlvdXQucnVuUmVzb2x2ZXIoKSk7CiAgICAgYXV0byByYW5nZSA9IHJl
c29sdmVyLnJhbmdlRm9yUmVjdChyYW5nZVJlY3QpOwogICAgIGZvciAoYXV0byBpdCA9IHJhbmdl
LmJlZ2luKCksIGVuZCA9IHJhbmdlLmVuZCgpOyBpdCAhPSBlbmQ7ICsraXQpIHsKICAgICAgICAg
YXV0byBsaW5lUmVjdCA9ICppdDsKQEAgLTE2NCw3ICsxNjQsNyBAQCBib29sIGhpdFRlc3RGbG93
KGNvbnN0IFJlbmRlckJsb2NrRmxvdyYgZmxvdywgY29uc3QgTGF5b3V0JiBsYXlvdXQsIGNvbnN0
IEhpdFRlcwogCiB2b2lkIGNvbGxlY3RGbG93T3ZlcmZsb3coUmVuZGVyQmxvY2tGbG93JiBmbG93
LCBjb25zdCBMYXlvdXQmIGxheW91dCkKIHsKLSAgICBmb3IgKGF1dG8gbGluZVJlY3QgOiBsaW5l
UmVzb2x2ZXIoZmxvdywgbGF5b3V0KSkgeworICAgIGZvciAoYXV0byBsaW5lUmVjdCA6IGxpbmVS
ZXNvbHZlcihsYXlvdXQucnVuUmVzb2x2ZXIoKSkpIHsKICAgICAgICAgTGF5b3V0UmVjdCB2aXN1
YWxPdmVyZmxvd1JlY3QgPSBMYXlvdXRSZWN0KGNvbXB1dGVPdmVyZmxvdyhmbG93LCBsaW5lUmVj
dCkpOwogICAgICAgICBmbG93LmFkZExheW91dE92ZXJmbG93KExheW91dFJlY3QobGluZVJlY3Qp
KTsKICAgICAgICAgZmxvdy5hZGRWaXN1YWxPdmVyZmxvdyh2aXN1YWxPdmVyZmxvd1JlY3QpOwpA
QCAtMTczLDcgKzE3Myw3IEBAIHZvaWQgY29sbGVjdEZsb3dPdmVyZmxvdyhSZW5kZXJCbG9ja0Zs
b3cmIGZsb3csIGNvbnN0IExheW91dCYgbGF5b3V0KQogCiBJbnRSZWN0IGNvbXB1dGVCb3VuZGlu
Z0JveChjb25zdCBSZW5kZXJPYmplY3QmIHJlbmRlcmVyLCBjb25zdCBMYXlvdXQmIGxheW91dCkK
IHsKLSAgICBhdXRvIHJlc29sdmVyID0gcnVuUmVzb2x2ZXIoZG93bmNhc3Q8UmVuZGVyQmxvY2tG
bG93PigqcmVuZGVyZXIucGFyZW50KCkpLCBsYXlvdXQpOworICAgIGF1dG8mIHJlc29sdmVyID0g
bGF5b3V0LnJ1blJlc29sdmVyKCk7CiAgICAgRmxvYXRSZWN0IGJvdW5kaW5nQm94UmVjdDsKICAg
ICBmb3IgKGF1dG8gcnVuIDogcmVzb2x2ZXIucmFuZ2VGb3JSZW5kZXJlcihyZW5kZXJlcikpIHsK
ICAgICAgICAgRmxvYXRSZWN0IHJlY3QgPSBydW4ucmVjdCgpOwpAQCAtMTg3LDcgKzE4Nyw3IEBA
IEludFJlY3QgY29tcHV0ZUJvdW5kaW5nQm94KGNvbnN0IFJlbmRlck9iamVjdCYgcmVuZGVyZXIs
IGNvbnN0IExheW91dCYgbGF5b3V0KQogCiBJbnRQb2ludCBjb21wdXRlRmlyc3RSdW5Mb2NhdGlv
bihjb25zdCBSZW5kZXJPYmplY3QmIHJlbmRlcmVyLCBjb25zdCBMYXlvdXQmIGxheW91dCkKIHsK
LSAgICBhdXRvIHJlc29sdmVyID0gcnVuUmVzb2x2ZXIoZG93bmNhc3Q8UmVuZGVyQmxvY2tGbG93
PigqcmVuZGVyZXIucGFyZW50KCkpLCBsYXlvdXQpOworICAgIGF1dG8mIHJlc29sdmVyID0gbGF5
b3V0LnJ1blJlc29sdmVyKCk7CiAgICAgYXV0byByYW5nZSA9IHJlc29sdmVyLnJhbmdlRm9yUmVu
ZGVyZXIocmVuZGVyZXIpOwogICAgIGF1dG8gYmVnaW4gPSByYW5nZS5iZWdpbigpOwogICAgIGlm
IChiZWdpbiA9PSByYW5nZS5lbmQoKSkKQEAgLTE5OCw3ICsxOTgsNyBAQCBJbnRQb2ludCBjb21w
dXRlRmlyc3RSdW5Mb2NhdGlvbihjb25zdCBSZW5kZXJPYmplY3QmIHJlbmRlcmVyLCBjb25zdCBM
YXlvdXQmIGxheQogVmVjdG9yPEludFJlY3Q+IGNvbGxlY3RBYnNvbHV0ZVJlY3RzKGNvbnN0IFJl
bmRlck9iamVjdCYgcmVuZGVyZXIsIGNvbnN0IExheW91dCYgbGF5b3V0LCBjb25zdCBMYXlvdXRQ
b2ludCYgYWNjdW11bGF0ZWRPZmZzZXQpCiB7CiAgICAgVmVjdG9yPEludFJlY3Q+IHJlY3RzOwot
ICAgIGF1dG8gcmVzb2x2ZXIgPSBydW5SZXNvbHZlcihkb3duY2FzdDxSZW5kZXJCbG9ja0Zsb3c+
KCpyZW5kZXJlci5wYXJlbnQoKSksIGxheW91dCk7CisgICAgYXV0byYgcmVzb2x2ZXIgPSBsYXlv
dXQucnVuUmVzb2x2ZXIoKTsKICAgICBmb3IgKGF1dG8gcnVuIDogcmVzb2x2ZXIucmFuZ2VGb3JS
ZW5kZXJlcihyZW5kZXJlcikpIHsKICAgICAgICAgRmxvYXRSZWN0IHJlY3QgPSBydW4ucmVjdCgp
OwogICAgICAgICByZWN0cy5hcHBlbmQoZW5jbG9zaW5nSW50UmVjdChGbG9hdFJlY3QoYWNjdW11
bGF0ZWRPZmZzZXQgKyByZWN0LmxvY2F0aW9uKCksIHJlY3Quc2l6ZSgpKSkpOwpAQCAtMjA5LDcg
KzIwOSw3IEBAIFZlY3RvcjxJbnRSZWN0PiBjb2xsZWN0QWJzb2x1dGVSZWN0cyhjb25zdCBSZW5k
ZXJPYmplY3QmIHJlbmRlcmVyLCBjb25zdCBMYXlvdXQmCiBWZWN0b3I8RmxvYXRRdWFkPiBjb2xs
ZWN0QWJzb2x1dGVRdWFkcyhjb25zdCBSZW5kZXJPYmplY3QmIHJlbmRlcmVyLCBjb25zdCBMYXlv
dXQmIGxheW91dCwgYm9vbCogd2FzRml4ZWQpCiB7CiAgICAgVmVjdG9yPEZsb2F0UXVhZD4gcXVh
ZHM7Ci0gICAgYXV0byByZXNvbHZlciA9IHJ1blJlc29sdmVyKGRvd25jYXN0PFJlbmRlckJsb2Nr
Rmxvdz4oKnJlbmRlcmVyLnBhcmVudCgpKSwgbGF5b3V0KTsKKyAgICBhdXRvJiByZXNvbHZlciA9
IGxheW91dC5ydW5SZXNvbHZlcigpOwogICAgIGZvciAoYXV0byBydW4gOiByZXNvbHZlci5yYW5n
ZUZvclJlbmRlcmVyKHJlbmRlcmVyKSkKICAgICAgICAgcXVhZHMuYXBwZW5kKHJlbmRlcmVyLmxv
Y2FsVG9BYnNvbHV0ZVF1YWQoRmxvYXRRdWFkKHJ1bi5yZWN0KCkpLCBVc2VUcmFuc2Zvcm1zLCB3
YXNGaXhlZCkpOwogICAgIHJldHVybiBxdWFkczsKQEAgLTIxOSw3ICsyMTksNyBAQCB1bnNpZ25l
ZCB0ZXh0T2Zmc2V0Rm9yUG9pbnQoY29uc3QgTGF5b3V0UG9pbnQmIHBvaW50LCBjb25zdCBSZW5k
ZXJUZXh0JiByZW5kZXJlcgogewogICAgIGF1dG8mIGZsb3cgPSBkb3duY2FzdDxSZW5kZXJCbG9j
a0Zsb3c+KCpyZW5kZXJlci5wYXJlbnQoKSk7CiAgICAgQVNTRVJUKGZsb3cuZmlyc3RDaGlsZCgp
ID09IGZsb3cubGFzdENoaWxkKCkpOwotICAgIGF1dG8gcmVzb2x2ZXIgPSBydW5SZXNvbHZlcihm
bG93LCBsYXlvdXQpOworICAgIGF1dG8mIHJlc29sdmVyID0gbGF5b3V0LnJ1blJlc29sdmVyKCk7
CiAgICAgYXV0byBpdCA9IHJlc29sdmVyLnJ1bkZvclBvaW50KHBvaW50KTsKICAgICBpZiAoaXQg
PT0gcmVzb2x2ZXIuZW5kKCkpCiAgICAgICAgIHJldHVybiByZW5kZXJlci50ZXh0KCkubGVuZ3Ro
KCk7CkBAIC0yMzQsNyArMjM0LDcgQEAgVmVjdG9yPEZsb2F0UXVhZD4gY29sbGVjdEFic29sdXRl
UXVhZHNGb3JSYW5nZShjb25zdCBSZW5kZXJPYmplY3QmIHJlbmRlcmVyLCB1bnMKIHsKICAgICBh
dXRvJiBzdHlsZSA9IGRvd25jYXN0PFJlbmRlckJsb2NrRmxvdz4oKnJlbmRlcmVyLnBhcmVudCgp
KS5zdHlsZSgpOwogICAgIFZlY3RvcjxGbG9hdFF1YWQ+IHF1YWRzOwotICAgIGF1dG8gcmVzb2x2
ZXIgPSBydW5SZXNvbHZlcihkb3duY2FzdDxSZW5kZXJCbG9ja0Zsb3c+KCpyZW5kZXJlci5wYXJl
bnQoKSksIGxheW91dCk7CisgICAgYXV0byYgcmVzb2x2ZXIgPSBsYXlvdXQucnVuUmVzb2x2ZXIo
KTsKICAgICBmb3IgKGF1dG8gcnVuIDogcmVzb2x2ZXIucmFuZ2VGb3JSZW5kZXJlcldpdGhPZmZz
ZXRzKHJlbmRlcmVyLCBzdGFydCwgZW5kKSkgewogICAgICAgICAvLyBUaGlzIHJ1biBpcyBmdWxs
eSBjb250YWluZWQuCiAgICAgICAgIGlmIChzdGFydCA8PSBydW4uc3RhcnQoKSAmJiBlbmQgPj0g
cnVuLmVuZCgpKSB7CkBAIC0zMjAsNyArMzIwLDcgQEAgdm9pZCBnZW5lcmF0ZUxpbmVCb3hUcmVl
KFJlbmRlckJsb2NrRmxvdyYgZmxvdywgY29uc3QgTGF5b3V0JiBsYXlvdXQpCiAgICAgICAgIHJl
dHVybjsKIAogICAgIFJlZjxCaWRpQ29udGV4dD4gYmlkaUNvbnRleHQgPSBCaWRpQ29udGV4dDo6
Y3JlYXRlKDAsIFVfTEVGVF9UT19SSUdIVCk7Ci0gICAgYXV0byByZXNvbHZlciA9IHJ1blJlc29s
dmVyKGZsb3csIGxheW91dCk7CisgICAgYXV0byYgcmVzb2x2ZXIgPSBsYXlvdXQucnVuUmVzb2x2
ZXIoKTsKICAgICB1bnNpZ25lZCBsaW5lSW5kZXggPSAwOwogICAgIHdoaWxlICh0cnVlKSB7CiAg
ICAgICAgIGF1dG8gcmFuZ2UgPSByZXNvbHZlci5yYW5nZUZvckxpbmUobGluZUluZGV4KyspOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1NpbXBsZUxpbmVMYXlvdXRSZXNv
bHZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvU2ltcGxlTGluZUxheW91dFJlc29s
dmVyLmNwcAppbmRleCA0NzY0Mjk1YzIxZmFmMDA2MDM2YTM3Y2U1NzJiMGEyZDJiYWM4Y2Q1Li5k
MWY3NzUyZWE4OTAyN2E1ZDIwYzk4NTAxMzU0ZjBjYjNlMjI1M2Y3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvU2ltcGxlTGluZUxheW91dFJlc29sdmVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvU2ltcGxlTGluZUxheW91dFJlc29sdmVyLmNwcApAQCAt
MzEzLDggKzMxMyw4IEBAIGNvbnN0IFJlbmRlck9iamVjdCYgTGluZVJlc29sdmVyOjpJdGVyYXRv
cjo6cmVuZGVyZXIoKSBjb25zdAogICAgIHJldHVybiBtX3J1bkl0ZXJhdG9yLnJlc29sdmVyKCku
Zmxvd0NvbnRlbnRzKCkuc2VnbWVudEZvclJ1bihydW4uc3RhcnQoKSwgcnVuLmVuZCgpKS5yZW5k
ZXJlcjsKIH0KIAotTGluZVJlc29sdmVyOjpMaW5lUmVzb2x2ZXIoY29uc3QgUmVuZGVyQmxvY2tG
bG93JiBmbG93LCBjb25zdCBMYXlvdXQmIGxheW91dCkKLSAgICA6IG1fcnVuUmVzb2x2ZXIoZmxv
dywgbGF5b3V0KQorTGluZVJlc29sdmVyOjpMaW5lUmVzb2x2ZXIoY29uc3QgUnVuUmVzb2x2ZXIm
IHJ1blJlc29sdmVyKQorICAgIDogbV9ydW5SZXNvbHZlcihydW5SZXNvbHZlcikKIHsKIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1NpbXBsZUxpbmVMYXlvdXRSZXNv
bHZlci5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1NpbXBsZUxpbmVMYXlvdXRSZXNvbHZl
ci5oCmluZGV4IDBlOGYyMDdhOTlhNmY0ZWY0MmJiOTEzZGM1ZWU4YjIyNDMxYjM3N2MuLjdlYjZh
NDMyN2Y1MGJmZjczNGVlZmNkNjI3YjQ0NGQyMGMxMDkyNGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9TaW1wbGVMaW5lTGF5b3V0UmVzb2x2ZXIuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvU2ltcGxlTGluZUxheW91dFJlc29sdmVyLmgKQEAgLTI3LDYgKzI3
LDcgQEAKIAogI2luY2x1ZGUgIkxheW91dFJlY3QuaCIKICNpbmNsdWRlICJSZW5kZXJCbG9ja0Zs
b3cuaCIKKyNpbmNsdWRlICJTaW1wbGVMaW5lTGF5b3V0LmgiCiAjaW5jbHVkZSAiU2ltcGxlTGlu
ZUxheW91dEZsb3dDb250ZW50cy5oIgogI2luY2x1ZGUgPHd0Zi9JdGVyYXRvclJhbmdlLmg+CiAj
aW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CkBAIC0xNDMsNyArMTQ0LDcgQEAgcHVibGlj
OgogICAgICAgICBSdW5SZXNvbHZlcjo6SXRlcmF0b3IgbV9ydW5JdGVyYXRvcjsKICAgICB9Owog
Ci0gICAgTGluZVJlc29sdmVyKGNvbnN0IFJlbmRlckJsb2NrRmxvdyYsIGNvbnN0IExheW91dCYp
OworICAgIExpbmVSZXNvbHZlcihjb25zdCBSdW5SZXNvbHZlciYpOwogCiAgICAgSXRlcmF0b3Ig
YmVnaW4oKSBjb25zdDsKICAgICBJdGVyYXRvciBlbmQoKSBjb25zdDsKQEAgLTE1MSwxMSArMTUy
LDExIEBAIHB1YmxpYzoKICAgICBXVEY6Okl0ZXJhdG9yUmFuZ2U8SXRlcmF0b3I+IHJhbmdlRm9y
UmVjdChjb25zdCBMYXlvdXRSZWN0JikgY29uc3Q7CiAKIHByaXZhdGU6Ci0gICAgUnVuUmVzb2x2
ZXIgbV9ydW5SZXNvbHZlcjsKKyAgICBjb25zdCBSdW5SZXNvbHZlciYgbV9ydW5SZXNvbHZlcjsK
IH07CiAKIFJ1blJlc29sdmVyIHJ1blJlc29sdmVyKGNvbnN0IFJlbmRlckJsb2NrRmxvdyYsIGNv
bnN0IExheW91dCYpOwotTGluZVJlc29sdmVyIGxpbmVSZXNvbHZlcihjb25zdCBSZW5kZXJCbG9j
a0Zsb3cmLCBjb25zdCBMYXlvdXQmKTsKK0xpbmVSZXNvbHZlciBsaW5lUmVzb2x2ZXIoY29uc3Qg
UnVuUmVzb2x2ZXImKTsKIAogaW5saW5lIHVuc2lnbmVkIFJ1blJlc29sdmVyOjpSdW46OnN0YXJ0
KCkgY29uc3QKIHsKQEAgLTI5Nyw5ICsyOTgsOSBAQCBpbmxpbmUgUnVuUmVzb2x2ZXIgcnVuUmVz
b2x2ZXIoY29uc3QgUmVuZGVyQmxvY2tGbG93JiBmbG93LCBjb25zdCBMYXlvdXQmIGxheW91dAog
ICAgIHJldHVybiBSdW5SZXNvbHZlcihmbG93LCBsYXlvdXQpOwogfQogCi1pbmxpbmUgTGluZVJl
c29sdmVyIGxpbmVSZXNvbHZlcihjb25zdCBSZW5kZXJCbG9ja0Zsb3cmIGZsb3csIGNvbnN0IExh
eW91dCYgbGF5b3V0KQoraW5saW5lIExpbmVSZXNvbHZlciBsaW5lUmVzb2x2ZXIoY29uc3QgUnVu
UmVzb2x2ZXImIHJ1blJlc29sdmVyKQogewotICAgIHJldHVybiBMaW5lUmVzb2x2ZXIoZmxvdywg
bGF5b3V0KTsKKyAgICByZXR1cm4gTGluZVJlc29sdmVyKHJ1blJlc29sdmVyKTsKIH0KIAogfQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>