<?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>218614</bug_id>
          
          <creation_ts>2020-11-05 07:49:16 -0800</creation_ts>
          <short_desc>[Concurrent display lists] Support playback of display list items with cached resources</short_desc>
          <delta_ts>2020-12-09 12:53:15 -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>WebKit2</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>
          <dependson>218426</dependson>
    
    <dependson>218649</dependson>
    
    <dependson>219067</dependson>
    
    <dependson>219652</dependson>
    
    <dependson>219657</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Wenson Hsieh">wenson_hsieh</reporter>
          <assigned_to name="Wenson Hsieh">wenson_hsieh</assigned_to>
          <cc>ggaren</cc>
    
    <cc>rniwa</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>thorton</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1704851</commentid>
    <comment_count>0</comment_count>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2020-11-05 07:49:16 -0800</bug_when>
    <thetext>e.g. DrawGlyphs, DrawImage, etc.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1704852</commentid>
    <comment_count>1</comment_count>
      <attachid>413296</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2020-11-05 07:52:15 -0800</bug_when>
    <thetext>Created attachment 413296
WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1706845</commentid>
    <comment_count>2</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-11-12 07:50:16 -0800</bug_when>
    <thetext>&lt;rdar://problem/71326662&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1712929</commentid>
    <comment_count>3</comment_count>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2020-12-08 14:27:27 -0800</bug_when>
    <thetext>This blocks making daringfireball.net work, with both canvas + DOM GPUP features enabled.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1712978</commentid>
    <comment_count>4</comment_count>
      <attachid>415692</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2020-12-08 17:10:59 -0800</bug_when>
    <thetext>Created attachment 415692
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1713246</commentid>
    <comment_count>5</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-12-09 11:50:36 -0800</bug_when>
    <thetext>Committed r270591: &lt;https://trac.webkit.org/changeset/270591&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 415692.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1713247</commentid>
    <comment_count>6</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2020-12-09 11:51:16 -0800</bug_when>
    <thetext>It feels kind of complicated for WebContent to send commands and resources out of order, and then rely on GPU Process to stitch them back into order. I wonder if there&apos;s a way to ensure that commands always arrive in order with their resources.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1713252</commentid>
    <comment_count>7</comment_count>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2020-12-09 11:57:19 -0800</bug_when>
    <thetext>(In reply to Geoffrey Garen from comment #6)
&gt; It feels kind of complicated for WebContent to send commands and resources
&gt; out of order, and then rely on GPU Process to stitch them back into order. I
&gt; wonder if there&apos;s a way to ensure that commands always arrive in order with
&gt; their resources.

Yeah, I think that we should eventually implement caching for native images and image buffers through display list items (like Ryosuke is doing with fonts in https://bugs.webkit.org/show_bug.cgi?id=219672).

I think the underlying mechanism that I introduced to fix this will be generally useful though, for generally synchronizing with other IPC messages.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1713281</commentid>
    <comment_count>8</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2020-12-09 12:53:15 -0800</bug_when>
    <thetext>(In reply to Wenson Hsieh from comment #7)
&gt; (In reply to Geoffrey Garen from comment #6)
&gt; &gt; It feels kind of complicated for WebContent to send commands and resources
&gt; &gt; out of order, and then rely on GPU Process to stitch them back into order. I
&gt; &gt; wonder if there&apos;s a way to ensure that commands always arrive in order with
&gt; &gt; their resources.
&gt; 
&gt; Yeah, I think that we should eventually implement caching for native images
&gt; and image buffers through display list items (like Ryosuke is doing with
&gt; fonts in https://bugs.webkit.org/show_bug.cgi?id=219672).

We need some mechanism to map shared memory from display list if we&apos;re going on that route.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>413296</attachid>
            <date>2020-11-05 07:52:15 -0800</date>
            <delta_ts>2020-12-08 14:20:25 -0800</delta_ts>
            <desc>WIP</desc>
            <filename>bug-218614-20201105075214.patch</filename>
            <type>text/plain</type>
            <size>27328</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY5Mzc5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMmYxZjBiZWU2ZDFiOTI0
OWEzN2UzZDJiMTA1ZmI3YzkxNzZjMDdjMi4uNTllZTc3NmRhMTJiNmNkYjk1MGQxMWI1YjY2OGQ4
YzNkMjk3MGVkZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI3IEBACisyMDIwLTExLTA1ICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIFtDb25jdXJyZW50
IGRpc3BsYXkgbGlzdHNdIFN1cHBvcnQgcGxheWJhY2sgb2YgZGlzcGxheSBsaXN0IGl0ZW1zIHdp
dGggY2FjaGVkIHJlc291cmNlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjE4NjE0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5oOgorICAgICAgICAo
V2ViQ29yZTo6SW1hZ2VCdWZmZXI6OmZsdXNoRGlzcGxheUxpc3QpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpH
cmFwaGljc0xheWVyQ0E6OnBsYXRmb3JtQ0FMYXllclBhaW50Q29udGVudHMpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3Q6OmFzVGV4dCBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3Q6OmR1bXAgY29uc3QpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdC5oOgorICAg
ICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0OjppdGVyYXRvcjo6b3BlcmF0
b3IqIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlz
cGxheUxpc3REcmF3aW5nQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlz
dDo6RHJhd2luZ0NvbnRleHQ6OnJlcGxheURpc3BsYXlMaXN0KToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZXBsYXllci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVwbGF5ZXI6OnJlcGxheSk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVwbGF5ZXIuaDoKKyAgICAg
ICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZXBsYXllcjo6RGVsZWdhdGU6OmFwcGx5KToKKyAg
ICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZXBsYXllcjo6cmVwbGF5KToKKwogMjAyMC0x
MS0wNCAgV2Vuc29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KIAogICAgICAgICBB
ZGQgYSBkaXNwbGF5IGxpc3QgaXRlbSB0byByZXByZXNlbnQgc3Ryb2tpbmcgYSBzaW5nbGUgbGlu
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZwppbmRleCBhYzE5NWMxY2ZiY2E0MDFlZWYxNDFlOTQxMTUwOGE5MGM0YjJlMWZjLi5i
MWNkZDgzOTk2NTc2NmU2YjA2MjUyMmYyMDgzNjU0NjVlMDEzNDQ5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDIyIEBACisyMDIwLTExLTA1ICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUu
Y29tPgorCisgICAgICAgIFtDb25jdXJyZW50IGRpc3BsYXkgbGlzdHNdIFN1cHBvcnQgcGxheWJh
Y2sgb2YgZGlzcGxheSBsaXN0IGl0ZW1zIHdpdGggY2FjaGVkIHJlc291cmNlcworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE4NjE0CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBo
aWNzL1JlbW90ZUltYWdlQnVmZmVyLmg6CisgICAgICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9S
ZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVuZGVy
aW5nQmFja2VuZDo6d2FrZVVwQW5kUHJvY2Vzc0Rpc3BsYXlMaXN0KToKKyAgICAgICAgKFdlYktp
dDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6c2V0TmV4dEl0ZW1CdWZmZXJUb1JlYWQpOgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpkaWRDcmVhdGVTaGFyZWREaXNw
bGF5TGlzdEhhbmRsZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6
OmRpZFJlY2VpdmVDYWNoZWRSZXNvdXJjZSk6CisgICAgICAgICogR1BVUHJvY2Vzcy9ncmFwaGlj
cy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmg6CisgICAgICAgICogR1BVUHJvY2Vzcy9ncmFwaGlj
cy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLm1lc3NhZ2VzLmluOgorICAgICAgICAqIFdlYlByb2Nl
c3MvR1BVL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyUHJveHkuaDoKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OmNyZWF0ZUl0ZW1CdWZm
ZXIpOgorCiAyMDIwLTExLTA0ICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29t
PgogCiAgICAgICAgIFtDb25jdXJyZW50IGRpc3BsYXkgbGlzdHNdIEFkZCBhbiBpbml0aWFsIGlt
cGxlbWVudGF0aW9uIG9mIGNvbmN1cnJlbnQgZGlzcGxheSBsaXN0IHJlbmRlcmluZwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmgKaW5kZXggZThlNDg4
NjVkOWQ3OGZlYjhlN2U0ODA4OGQ4Y2MzYTllOTA3MjQyOS4uNjZiODBmNjY0YjMwMmIzZWY1OWE0
MGUzODQ4MThiNTA1Yzg2MmI1ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvSW1hZ2VCdWZmZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9JbWFnZUJ1ZmZlci5oCkBAIC03Miw3ICs3Miw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFs
IGJvb2wgcHJlZmVyc1ByZXBhcmF0aW9uRm9yRGlzcGxheSgpIHsgcmV0dXJuIGZhbHNlOyB9CiAg
ICAgdmlydHVhbCB2b2lkIGZsdXNoRHJhd2luZ0NvbnRleHQoKSB7IH0KICAgICB2aXJ0dWFsIHZv
aWQgZmx1c2hEcmF3aW5nQ29udGV4dEFuZENvbW1pdCgpIHsgfQotICAgIHZpcnR1YWwgdm9pZCBm
bHVzaERpc3BsYXlMaXN0KGNvbnN0IERpc3BsYXlMaXN0OjpEaXNwbGF5TGlzdCYpIHsgfQorICAg
IHZpcnR1YWwgT3B0aW9uYWw8c2l6ZV90PiBmbHVzaERpc3BsYXlMaXN0KGNvbnN0IERpc3BsYXlM
aXN0OjpEaXNwbGF5TGlzdCYpIHsgcmV0dXJuIFdURjo6bnVsbG9wdDsgfQogCiAgICAgdmlydHVh
bCBBZmZpbmVUcmFuc2Zvcm0gYmFzZVRyYW5zZm9ybSgpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFs
IEludFNpemUgbG9naWNhbFNpemUoKSBjb25zdCA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmNwcAppbmRleCBjMDA2
OWJkY2ZiZDYxZmY3NjU4ZWFjZDEwNjA4MmFlMGM2ZmQyMGQyLi42MDc5ZjhjNjFiYTZlZjkwZjYz
NWE3OTUxMzA1ZmZkOWYxZmVjYjk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5jcHAKQEAgLTE2OTEsNyArMTY5MSw3
IEBAIHZvaWQgR3JhcGhpY3NMYXllckNBOjpwbGF0Zm9ybUNBTGF5ZXJQYWludENvbnRlbnRzKFBs
YXRmb3JtQ0FMYXllciosIEdyYXBoaWNzQ29uCiAgICAgICAgIERpc3BsYXlMaXN0OjpSZXBsYXll
ciByZXBsYXllcihjb250ZXh0LCAqbV9kaXNwbGF5TGlzdCk7CiAgICAgICAgIAogICAgICAgICBp
ZiAoVU5MSUtFTFkoaXNUcmFja2luZ0Rpc3BsYXlMaXN0UmVwbGF5KCkpKSB7Ci0gICAgICAgICAg
ICBhdXRvIHJlcGxheUxpc3QgPSByZXBsYXllci5yZXBsYXkoY2xpcCwgaXNUcmFja2luZ0Rpc3Bs
YXlMaXN0UmVwbGF5KCkpOworICAgICAgICAgICAgYXV0byBbcmVwbGF5TGlzdCwgbnVtYmVyT2ZC
eXRlc1JlYWRdID0gcmVwbGF5ZXIucmVwbGF5KGNsaXAsIGlzVHJhY2tpbmdEaXNwbGF5TGlzdFJl
cGxheSgpKTsKICAgICAgICAgICAgIGxheWVyRGlzcGxheUxpc3RNYXAoKS5hZGQodGhpcywgc3Rk
OjpwYWlyPEZsb2F0UmVjdCwgc3RkOjp1bmlxdWVfcHRyPERpc3BsYXlMaXN0OjpEaXNwbGF5TGlz
dD4+KGNsaXAsIFdURk1vdmUocmVwbGF5TGlzdCkpKTsKICAgICAgICAgfSBlbHNlCiAgICAgICAg
ICAgICByZXBsYXllci5yZXBsYXkoY2xpcCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3QuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0LmNwcAppbmRl
eCBjOWYxZTcyMTc0MjhmODc2ZGVkOTc1Njg0MzIxZTY4YTY3ZjRhNmExLi42ZjAzNzUzNzk2NmM1
OWU3YjNmYjRlNmUzMmFlOTZmNmViNDQwZjcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3QuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdC5jcHAK
QEAgLTEwOCw3ICsxMDgsNyBAQCBib29sIERpc3BsYXlMaXN0OjpzaG91bGREdW1wRm9yRmxhZ3Mo
QXNUZXh0RmxhZ3MgZmxhZ3MsIEl0ZW1IYW5kbGUgaXRlbSkKIFN0cmluZyBEaXNwbGF5TGlzdDo6
YXNUZXh0KEFzVGV4dEZsYWdzIGZsYWdzKSBjb25zdAogewogICAgIFRleHRTdHJlYW0gc3RyZWFt
KFRleHRTdHJlYW06OkxpbmVNb2RlOjpNdWx0aXBsZUxpbmUsIFRleHRTdHJlYW06OkZvcm1hdHRp
bmc6OlNWR1N0eWxlUmVjdCk7Ci0gICAgZm9yIChhdXRvIFtpdGVtLCBleHRlbnRdIDogKnRoaXMp
IHsKKyAgICBmb3IgKGF1dG8gW2l0ZW0sIGV4dGVudCwgaXRlbVNpemVJbkJ1ZmZlcl0gOiAqdGhp
cykgewogICAgICAgICBpZiAoIXNob3VsZER1bXBGb3JGbGFncyhmbGFncywgaXRlbSkpCiAgICAg
ICAgICAgICBjb250aW51ZTsKIApAQCAtMTI1LDcgKzEyNSw3IEBAIHZvaWQgRGlzcGxheUxpc3Q6
OmR1bXAoVGV4dFN0cmVhbSYgdHMpIGNvbnN0CiAgICAgVGV4dFN0cmVhbTo6R3JvdXBTY29wZSBn
cm91cCh0cyk7CiAgICAgdHMgPDwgImRpc3BsYXkgbGlzdCI7CiAKLSAgICBmb3IgKGF1dG8gW2l0
ZW0sIGV4dGVudF0gOiAqdGhpcykgeworICAgIGZvciAoYXV0byBbaXRlbSwgZXh0ZW50LCBpdGVt
U2l6ZUluQnVmZmVyXSA6ICp0aGlzKSB7CiAgICAgICAgIFRleHRTdHJlYW06Okdyb3VwU2NvcGUg
Z3JvdXAodHMpOwogICAgICAgICB0cyA8PCBpdGVtOwogICAgICAgICBpZiAoaXRlbS5pc0RyYXdp
bmdJdGVtKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9k
aXNwbGF5bGlzdHMvRGlzcGxheUxpc3QuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdC5oCmluZGV4IDEyNDExNzc0ZmY4ZWFkZDdiMTVk
ZDI3MzY2MzRiMTIxNTMzOGJkZDguLmQ3ZmY2NTQzZjY2NTA5MjZhZjQ4OTQ3MmRmYjA1YmFlNDlm
MzkxMDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3Bs
YXlsaXN0cy9EaXNwbGF5TGlzdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdC5oCkBAIC0xMTIsNyArMTEyLDEzIEBAIHB1Ymxp
YzoKICAgICAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IGl0ZXJhdG9yJiBvdGhlcikgeyByZXR1
cm4gJm1fZGlzcGxheUxpc3QgPT0gJm90aGVyLm1fZGlzcGxheUxpc3QgJiYgbV9jdXJzb3IgPT0g
b3RoZXIubV9jdXJzb3I7IH0KICAgICAgICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IGl0ZXJhdG9y
JiBvdGhlcikgeyByZXR1cm4gISgqdGhpcyA9PSBvdGhlcik7IH0KICAgICAgICAgdm9pZCBvcGVy
YXRvcisrKCkgeyBhZHZhbmNlKCk7IH0KLSAgICAgICAgc3RkOjpwYWlyPEl0ZW1IYW5kbGUsIE9w
dGlvbmFsPEZsb2F0UmVjdD4+IG9wZXJhdG9yKigpIGNvbnN0IHsgcmV0dXJuIHsgbV9jdXJyZW50
SXRlbSwgbV9jdXJyZW50RXh0ZW50IH07IH0KKworICAgICAgICBzdHJ1Y3QgVmFsdWUgeworICAg
ICAgICAgICAgSXRlbUhhbmRsZSBpdGVtOworICAgICAgICAgICAgT3B0aW9uYWw8RmxvYXRSZWN0
PiBleHRlbnQ7CisgICAgICAgICAgICBzaXplX3QgaXRlbVNpemVJbkJ1ZmZlciB7IDAgfTsKKyAg
ICAgICAgfTsKKyAgICAgICAgVmFsdWUgb3BlcmF0b3IqKCkgY29uc3QgeyByZXR1cm4geyBtX2N1
cnJlbnRJdGVtLCBtX2N1cnJlbnRFeHRlbnQsIG1fY3VycmVudEl0ZW1TaXplSW5CdWZmZXIgfTsg
fQogCiAgICAgcHJpdmF0ZToKICAgICAgICAgc3RhdGljIGNvbnN0ZXhwciBzaXplX3Qgc2l6ZU9m
Rml4ZWRCdWZmZXJGb3JEZWNvZGVkSXRlbXMgPSAyNTY7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3REcmF3aW5nQ29u
dGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMv
RGlzcGxheUxpc3REcmF3aW5nQ29udGV4dC5jcHAKaW5kZXggZjliMzIzYzc0MjY2ZWQxZjYxZDQ0
YjA0NzJlZjU1MTg1M2U4YzdiNS4uNTRkODU0NzEyM2Y4OTQ3ZDZmMmZhY2Q3ZmNhNmY5OTUxODFh
MjY3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxh
eWxpc3RzL0Rpc3BsYXlMaXN0RHJhd2luZ0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdERyYXdpbmdDb250ZXh0
LmNwcApAQCAtNjAsNyArNjAsNyBAQCB2b2lkIERyYXdpbmdDb250ZXh0OjpyZXBsYXlEaXNwbGF5
TGlzdChHcmFwaGljc0NvbnRleHQmIGRlc3RDb250ZXh0KQogCiAgICAgUmVwbGF5ZXIgcmVwbGF5
ZXIoZGVzdENvbnRleHQsIG1fZGlzcGxheUxpc3QpOwogICAgIGlmIChtX3RyYWNrc0Rpc3BsYXlM
aXN0UmVwbGF5KQotICAgICAgICBtX3JlcGxheWVkRGlzcGxheUxpc3QgPSByZXBsYXllci5yZXBs
YXkoeyB9LCBtX3RyYWNrc0Rpc3BsYXlMaXN0UmVwbGF5KTsKKyAgICAgICAgbV9yZXBsYXllZERp
c3BsYXlMaXN0ID0gcmVwbGF5ZXIucmVwbGF5KHsgfSwgbV90cmFja3NEaXNwbGF5TGlzdFJlcGxh
eSkudHJhY2tlZERpc3BsYXlMaXN0OwogICAgIGVsc2UKICAgICAgICAgcmVwbGF5ZXIucmVwbGF5
KCk7CiAgICAgbV9kaXNwbGF5TGlzdC5jbGVhcigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVwbGF5ZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlM
aXN0UmVwbGF5ZXIuY3BwCmluZGV4IGQ2YjFhOTIyNTY2MjUwYzUyMWNkNjkxZDM4OWIxZDU3YzRh
NDhmMDguLjNjY2Y5ZDEzYWNmMzE3YTkwMjZmYWNkMzBmN2M0YjM5MTM5MmJkNDQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5
TGlzdFJlcGxheWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9k
aXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZXBsYXllci5jcHAKQEAgLTQzLDcgKzQzLDcgQEAgUmVw
bGF5ZXI6OlJlcGxheWVyKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRGlzcGxheUxp
c3QmIGRpc3BsYXlMaXN0LCBEZWwKIAogUmVwbGF5ZXI6On5SZXBsYXllcigpID0gZGVmYXVsdDsK
IAotc3RkOjp1bmlxdWVfcHRyPERpc3BsYXlMaXN0PiBSZXBsYXllcjo6cmVwbGF5KGNvbnN0IEZs
b2F0UmVjdCYgaW5pdGlhbENsaXAsIGJvb2wgdHJhY2tSZXBsYXlMaXN0KQorUmVwbGF5ZXI6OlJl
cGxheVJlc3VsdCBSZXBsYXllcjo6cmVwbGF5KGNvbnN0IEZsb2F0UmVjdCYgaW5pdGlhbENsaXAs
IGJvb2wgdHJhY2tSZXBsYXlMaXN0KQogewogICAgIExPR19XSVRIX1NUUkVBTShEaXNwbGF5TGlz
dHMsIHN0cmVhbSA8PCAiXG5SZXBsYXlpbmcgd2l0aCBjbGlwICIgPDwgaW5pdGlhbENsaXApOwog
ICAgIFVOVVNFRF9QQVJBTShpbml0aWFsQ2xpcCk7CkBAIC01NSwxNiArNTUsMjUgQEAgc3RkOjp1
bmlxdWVfcHRyPERpc3BsYXlMaXN0PiBSZXBsYXllcjo6cmVwbGF5KGNvbnN0IEZsb2F0UmVjdCYg
aW5pdGlhbENsaXAsIGJvb2wKICNpZiAhTE9HX0RJU0FCTEVECiAgICAgc2l6ZV90IGkgPSAwOwog
I2VuZGlmCi0gICAgZm9yIChhdXRvIFtpdGVtLCBleHRlbnRdIDogbV9kaXNwbGF5TGlzdCkgewor
ICAgIHNpemVfdCBudW1iZXJPZkJ5dGVzUmVhZCA9IDA7CisgICAgZm9yIChhdXRvIFtpdGVtLCBl
eHRlbnQsIGl0ZW1TaXplSW5CdWZmZXJdIDogbV9kaXNwbGF5TGlzdCkgewogICAgICAgICBpZiAo
IWluaXRpYWxDbGlwLmlzWmVybygpICYmIGV4dGVudCAmJiAhZXh0ZW50LT5pbnRlcnNlY3RzKGlu
aXRpYWxDbGlwKSkgewogICAgICAgICAgICAgTE9HX1dJVEhfU1RSRUFNKERpc3BsYXlMaXN0cywg
c3RyZWFtIDw8ICJza2lwcGluZyAiIDw8IGkrKyA8PCAiICIgPDwgaXRlbSk7CisgICAgICAgICAg
ICBudW1iZXJPZkJ5dGVzUmVhZCArPSBpdGVtU2l6ZUluQnVmZmVyOwogICAgICAgICAgICAgY29u
dGludWU7CiAgICAgICAgIH0KIAogICAgICAgICBMT0dfV0lUSF9TVFJFQU0oRGlzcGxheUxpc3Rz
LCBzdHJlYW0gPDwgImFwcGx5aW5nICIgPDwgaSsrIDw8ICIgIiA8PCBpdGVtKTsKLSAgICAgICAg
aWYgKCFtX2RlbGVnYXRlIHx8ICFtX2RlbGVnYXRlLT5hcHBseShpdGVtLCBtX2NvbnRleHQpKQor
CisgICAgICAgIGF1dG8gcmVzdWx0ID0gbV9kZWxlZ2F0ZSA/IG1fZGVsZWdhdGUtPmFwcGx5KGl0
ZW0sIG1fY29udGV4dCkgOiBEZWxlZ2F0ZTo6QXBwbHlJdGVtUmVzdWx0OjpOb3RIYW5kbGVkOwor
ICAgICAgICBpZiAocmVzdWx0ID09IERlbGVnYXRlOjpBcHBseUl0ZW1SZXN1bHQ6OlN0b3BSZXBs
YXlpbmcpCisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBpZiAocmVzdWx0ID09IERlbGVn
YXRlOjpBcHBseUl0ZW1SZXN1bHQ6Ok5vdEhhbmRsZWQpCiAgICAgICAgICAgICBpdGVtLmFwcGx5
KG1fY29udGV4dCk7CiAKKyAgICAgICAgbnVtYmVyT2ZCeXRlc1JlYWQgKz0gaXRlbVNpemVJbkJ1
ZmZlcjsKKwogICAgICAgICBpZiAoVU5MSUtFTFkodHJhY2tSZXBsYXlMaXN0KSkgewogICAgICAg
ICAgICAgcmVwbGF5TGlzdC0+YXBwZW5kKGl0ZW0pOwogICAgICAgICAgICAgaWYgKGl0ZW0uaXNE
cmF3aW5nSXRlbSgpKQpAQCAtNzIsNyArODEsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8RGlzcGxheUxp
c3Q+IFJlcGxheWVyOjpyZXBsYXkoY29uc3QgRmxvYXRSZWN0JiBpbml0aWFsQ2xpcCwgYm9vbAog
ICAgICAgICB9CiAgICAgfQogCi0gICAgcmV0dXJuIHJlcGxheUxpc3Q7CisgICAgcmV0dXJuIHsg
V1RGTW92ZShyZXBsYXlMaXN0KSwgbnVtYmVyT2ZCeXRlc1JlYWQgfTsKIH0KIAogfSAvLyBuYW1l
c3BhY2UgRGlzcGxheUxpc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlcGxheWVyLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZXBsYXllci5oCmlu
ZGV4IDA0NWNhY2NlOGEwMWM4ZDVkY2I2NThjNDBkNjNlOWEzNTg5YjViNjYuLjg4Y2UyMDM3Zjlk
ZGVmYmIyYTJhMDhiZTBjMDQwZWFlZGNiNTRmMWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlcGxheWVyLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlM
aXN0UmVwbGF5ZXIuaApAQCAtNDEsMTcgKzQxLDI2IEBAIG5hbWVzcGFjZSBEaXNwbGF5TGlzdCB7
CiBjbGFzcyBSZXBsYXllciB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoUmVwbGF5ZXIpOwog
cHVibGljOgotICAgIGNsYXNzIERlbGVnYXRlOwotICAgIFdFQkNPUkVfRVhQT1JUIFJlcGxheWVy
KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IERpc3BsYXlMaXN0JiwgRGVsZWdhdGUqID0gbnVsbHB0
cik7Ci0gICAgV0VCQ09SRV9FWFBPUlQgflJlcGxheWVyKCk7Ci0KLSAgICBXRUJDT1JFX0VYUE9S
VCBzdGQ6OnVuaXF1ZV9wdHI8RGlzcGxheUxpc3Q+IHJlcGxheShjb25zdCBGbG9hdFJlY3QmIGlu
aXRpYWxDbGlwID0geyB9LCBib29sIHRyYWNrUmVwbGF5TGlzdCA9IGZhbHNlKTsKLQogICAgIGNs
YXNzIERlbGVnYXRlIHsKICAgICBwdWJsaWM6CiAgICAgICAgIHZpcnR1YWwgfkRlbGVnYXRlKCkg
eyB9Ci0gICAgICAgIHZpcnR1YWwgYm9vbCBhcHBseShJdGVtSGFuZGxlLCBHcmFwaGljc0NvbnRl
eHQmKSB7IHJldHVybiBmYWxzZTsgfQorICAgICAgICBlbnVtIGNsYXNzIEFwcGx5SXRlbVJlc3Vs
dCB7CisgICAgICAgICAgICBIYW5kbGVkLAorICAgICAgICAgICAgTm90SGFuZGxlZCwKKyAgICAg
ICAgICAgIFN0b3BSZXBsYXlpbmcKKyAgICAgICAgfTsKKyAgICAgICAgdmlydHVhbCBBcHBseUl0
ZW1SZXN1bHQgYXBwbHkoSXRlbUhhbmRsZSwgR3JhcGhpY3NDb250ZXh0JikgeyByZXR1cm4gQXBw
bHlJdGVtUmVzdWx0OjpOb3RIYW5kbGVkOyB9CisgICAgfTsKKworICAgIFdFQkNPUkVfRVhQT1JU
IFJlcGxheWVyKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IERpc3BsYXlMaXN0JiwgRGVsZWdhdGUq
ID0gbnVsbHB0cik7CisgICAgV0VCQ09SRV9FWFBPUlQgflJlcGxheWVyKCk7CisKKyAgICBzdHJ1
Y3QgUmVwbGF5UmVzdWx0IHsKKyAgICAgICAgc3RkOjp1bmlxdWVfcHRyPERpc3BsYXlMaXN0PiB0
cmFja2VkRGlzcGxheUxpc3Q7CisgICAgICAgIHNpemVfdCBudW1iZXJPZkJ5dGVzUmVhZCB7IDAg
fTsKICAgICB9OworCisgICAgV0VCQ09SRV9FWFBPUlQgUmVwbGF5UmVzdWx0IHJlcGxheShjb25z
dCBGbG9hdFJlY3QmIGluaXRpYWxDbGlwID0geyB9LCBib29sIHRyYWNrUmVwbGF5TGlzdCA9IGZh
bHNlKTsKICAgICAKIHByaXZhdGU6CiAgICAgY29uc3QgRGlzcGxheUxpc3QmIG1fZGlzcGxheUxp
c3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3Rl
SW1hZ2VCdWZmZXIuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVJ
bWFnZUJ1ZmZlci5oCmluZGV4IGRhNjJiZWYzZWQ5NTMxZjY4MTRkYjgzNzNiYTc3NGEzM2U1OTc0
ZTYuLjhlNzU1OTg5NzRiNjAzZDQwNjM1ZDQyMjEzYTgxNTUwYzljMGRiNzEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZlci5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZlci5o
CkBAIC02NiwzOSArNjYsNDMgQEAgcHVibGljOgogICAgIH0KIAogcHJpdmF0ZToKLSAgICB2b2lk
IGZsdXNoRGlzcGxheUxpc3QoY29uc3QgV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0
JiBkaXNwbGF5TGlzdCkgb3ZlcnJpZGUKKyAgICBPcHRpb25hbDxzaXplX3Q+IGZsdXNoRGlzcGxh
eUxpc3QoY29uc3QgV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0JiBkaXNwbGF5TGlz
dCkgb3ZlcnJpZGUKICAgICB7Ci0gICAgICAgIGlmICghZGlzcGxheUxpc3QuaXNFbXB0eSgpKSB7
Ci0gICAgICAgICAgICBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVwbGF5ZXIgcmVwbGF5ZXIoQmFz
ZUNvbmNyZXRlSW1hZ2VCdWZmZXI6OmNvbnRleHQoKSwgZGlzcGxheUxpc3QsIHRoaXMpOwotICAg
ICAgICAgICAgcmVwbGF5ZXIucmVwbGF5KCk7Ci0gICAgICAgIH0KKyAgICAgICAgaWYgKGRpc3Bs
YXlMaXN0LmlzRW1wdHkoKSkKKyAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAg
ICAgICAgV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlcGxheWVyIHJlcGxheWVyKEJhc2VDb25jcmV0
ZUltYWdlQnVmZmVyOjpjb250ZXh0KCksIGRpc3BsYXlMaXN0LCB0aGlzKTsKKyAgICAgICAgcmV0
dXJuIHJlcGxheWVyLnJlcGxheSgpLm51bWJlck9mQnl0ZXNSZWFkOwogICAgIH0KIAotICAgIGJv
b2wgYXBwbHkoV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1IYW5kbGUgaXRlbSwgV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KSBvdmVycmlkZQorICAgIFdlYkNvcmU6OkRpc3BsYXlM
aXN0OjpSZXBsYXllcjo6RGVsZWdhdGU6OkFwcGx5SXRlbVJlc3VsdCBhcHBseShXZWJDb3JlOjpE
aXNwbGF5TGlzdDo6SXRlbUhhbmRsZSBpdGVtLCBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQmIGNv
bnRleHQpIG92ZXJyaWRlCiAgICAgewogICAgICAgICBpZiAoaXRlbS5pczxXZWJDb3JlOjpEaXNw
bGF5TGlzdDo6UHV0SW1hZ2VEYXRhPigpKSB7CiAgICAgICAgICAgICBhdXRvJiBwdXRJbWFnZURh
dGFJdGVtID0gaXRlbS5nZXQ8V2ViQ29yZTo6RGlzcGxheUxpc3Q6OlB1dEltYWdlRGF0YT4oKTsK
ICAgICAgICAgICAgIHB1dEltYWdlRGF0YShwdXRJbWFnZURhdGFJdGVtLmlucHV0Rm9ybWF0KCks
IHB1dEltYWdlRGF0YUl0ZW0uaW1hZ2VEYXRhKCksIHB1dEltYWdlRGF0YUl0ZW0uc3JjUmVjdCgp
LCBwdXRJbWFnZURhdGFJdGVtLmRlc3RQb2ludCgpLCBwdXRJbWFnZURhdGFJdGVtLmRlc3RGb3Jt
YXQoKSk7Ci0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgIHJldHVybiBXZWJD
b3JlOjpEaXNwbGF5TGlzdDo6UmVwbGF5ZXI6OkRlbGVnYXRlOjpBcHBseUl0ZW1SZXN1bHQ6Okhh
bmRsZWQ7CiAgICAgICAgIH0KIAogICAgICAgICBpZiAoaXRlbS5pczxXZWJDb3JlOjpEaXNwbGF5
TGlzdDo6Rmx1c2hDb250ZXh0PigpKSB7CiAgICAgICAgICAgICBCYXNlQ29uY3JldGVJbWFnZUJ1
ZmZlcjo6Zmx1c2hDb250ZXh0KCk7CiAgICAgICAgICAgICBhdXRvIGlkZW50aWZpZXIgPSBpdGVt
LmdldDxXZWJDb3JlOjpEaXNwbGF5TGlzdDo6Rmx1c2hDb250ZXh0PigpLmlkZW50aWZpZXIoKTsK
ICAgICAgICAgICAgIG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZC5mbHVzaERpc3BsYXlMaXN0V2Fz
Q29tbWl0dGVkKGlkZW50aWZpZXIsIG1fcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKTsKLSAg
ICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgcmV0dXJuIFdlYkNvcmU6OkRpc3Bs
YXlMaXN0OjpSZXBsYXllcjo6RGVsZWdhdGU6OkFwcGx5SXRlbVJlc3VsdDo6SGFuZGxlZDsKICAg
ICAgICAgfQogCiAgICAgICAgIGlmIChpdGVtLmlzPFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpTd2l0
Y2hUb0J1ZmZlcj4oKSkgewogICAgICAgICAgICAgYXV0byBuZXh0QnVmZmVySWRlbnRpZmllciA9
IGl0ZW0uZ2V0PFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpTd2l0Y2hUb0J1ZmZlcj4oKS5pZGVudGlm
aWVyKCk7Ci0gICAgICAgICAgICBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuc2V0TmV4dEl0ZW1C
dWZmZXJUb1JlYWQobmV4dEJ1ZmZlcklkZW50aWZpZXIpOwotICAgICAgICAgICAgcmV0dXJuIHRy
dWU7CisgICAgICAgICAgICBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuc2V0TmV4dEl0ZW1CdWZm
ZXJUb1JlYWQobmV4dEJ1ZmZlcklkZW50aWZpZXIsIFNoYXJlZERpc3BsYXlMaXN0SGFuZGxlOjpy
ZXNlcnZlZENhcGFjaXR5QXRTdGFydCk7CisgICAgICAgICAgICByZXR1cm4gV2ViQ29yZTo6RGlz
cGxheUxpc3Q6OlJlcGxheWVyOjpEZWxlZ2F0ZTo6QXBwbHlJdGVtUmVzdWx0OjpIYW5kbGVkOwog
ICAgICAgICB9CiAKICAgICAgICAgaWYgKG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZC5hcHBseVJl
c291cmNlSXRlbShpdGVtLCBjb250ZXh0KSkKLSAgICAgICAgICAgIHJldHVybiB0cnVlOworICAg
ICAgICAgICAgcmV0dXJuIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZXBsYXllcjo6RGVsZWdhdGU6
OkFwcGx5SXRlbVJlc3VsdDo6SGFuZGxlZDsKKworICAgICAgICBpZiAobV9yZW1vdGVSZW5kZXJp
bmdCYWNrZW5kLmFwcGx5TWVkaWFJdGVtKGl0ZW0sIGNvbnRleHQpKQorICAgICAgICAgICAgcmV0
dXJuIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZXBsYXllcjo6RGVsZWdhdGU6OkFwcGx5SXRlbVJl
c3VsdDo6SGFuZGxlZDsKIAotICAgICAgICByZXR1cm4gbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5k
LmFwcGx5TWVkaWFJdGVtKGl0ZW0sIGNvbnRleHQpOworICAgICAgICByZXR1cm4gV2ViQ29yZTo6
RGlzcGxheUxpc3Q6OlJlcGxheWVyOjpEZWxlZ2F0ZTo6QXBwbHlJdGVtUmVzdWx0OjpOb3RIYW5k
bGVkOwogICAgIH0KIAogICAgIE9wdGlvbmFsPFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtSGFu
ZGxlPiBXQVJOX1VOVVNFRF9SRVRVUk4gZGVjb2RlSXRlbShjb25zdCB1aW50OF90KiBkYXRhLCBz
aXplX3QgbGVuZ3RoLCBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5cGUgdHlwZSwgdWludDhf
dCogaGFuZGxlTG9jYXRpb24pIG92ZXJyaWRlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQ
VVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5jcHAKaW5kZXgg
NTQ0YjNlYzVmY2U5ZDdmNTI4ZTJkMWViYjk5MGI1MjNlZTRmOGI2ZS4uZjNmN2QzYzVlODQ5NTMx
ZWM0NGRkZThhOWFiODIyNzI1YzY5ZDFkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmNwcApAQCAt
MTU0LDYgKzE1NCw4IEBAIHZvaWQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6d2FrZVVwQW5kUHJv
Y2Vzc0Rpc3BsYXlMaXN0KFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJCiAgICAgICAgIHJldHVybjsK
ICAgICB9CiAKKyAgICBtX3RhcmdldEZvckRpc3BsYXlMaXN0UmVwbGF5ID0gcmVuZGVyaW5nUmVz
b3VyY2VJZGVudGlmaWVyOworCiAgICAgRGlzcGxheUxpc3Q6Okl0ZW1CdWZmZXJSZWFkaW5nQ2xp
ZW50KiBpdGVtQnVmZmVyQ2xpZW50OwogICAgIGlmIChpbWFnZUJ1ZmZlci0+aXNBY2NlbGVyYXRl
ZCgpKQogICAgICAgICBpdGVtQnVmZmVyQ2xpZW50ID0gc3RhdGljX2Nhc3Q8QWNjZWxlcmF0ZWRS
ZW1vdGVJbWFnZUJ1ZmZlcio+KGltYWdlQnVmZmVyKTsKQEAgLTE2OSwyOCArMTcxLDM5IEBAIHZv
aWQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6d2FrZVVwQW5kUHJvY2Vzc0Rpc3BsYXlMaXN0KFdl
YkNvcmU6OkRpc3BsYXlMaXN0OjpJCiAgICAgfQogCiAgICAgd2hpbGUgKHNpemVUb1JlYWQpIHsK
LSAgICAgICAgaW1hZ2VCdWZmZXItPmZsdXNoRGlzcGxheUxpc3QoKnNoYXJlZEhhbmRsZS0+Y3Jl
YXRlRGlzcGxheUxpc3Qob2Zmc2V0LCBzaXplVG9SZWFkLCAqaXRlbUJ1ZmZlckNsaWVudCkpOwor
ICAgICAgICBhdXRvIG51bWJlck9mQnl0ZXNSZWFkID0gaW1hZ2VCdWZmZXItPmZsdXNoRGlzcGxh
eUxpc3QoKnNoYXJlZEhhbmRsZS0+Y3JlYXRlRGlzcGxheUxpc3Qob2Zmc2V0LCBzaXplVG9SZWFk
LCAqaXRlbUJ1ZmZlckNsaWVudCkpLnZhbHVlT3IoMCk7CisgICAgICAgIGlmIChudW1iZXJPZkJ5
dGVzUmVhZCA+IHNpemVUb1JlYWQpIHsKKyAgICAgICAgICAgIC8vIEZJWE1FOiBBZGQgYSBtZXNz
YWdlIGNoZWNrIHRvIHRlcm1pbmF0ZSB0aGUgd2ViIHByb2Nlc3MuCisgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgfQogCi0gICAgICAgIG9mZnNldCArPSBzaXplVG9SZWFkOworICAgICAgICBv
ZmZzZXQgKz0gbnVtYmVyT2ZCeXRlc1JlYWQ7CiAgICAgICAgIHsKICAgICAgICAgICAgIFNoYXJl
ZERpc3BsYXlMaXN0SGFuZGxlOjpMb2NrIGxvY2tlciB7ICpzaGFyZWRIYW5kbGUgfTsKLSAgICAg
ICAgICAgIHNoYXJlZEhhbmRsZS0+YWR2YW5jZShzaXplVG9SZWFkKTsKLSAgICAgICAgICAgIHNp
emVUb1JlYWQgPSBzaGFyZWRIYW5kbGUtPnVucmVhZEJ5dGVzKCk7CisgICAgICAgICAgICBzaGFy
ZWRIYW5kbGUtPmFkdmFuY2UobnVtYmVyT2ZCeXRlc1JlYWQpOworICAgICAgICAgICAgc2l6ZVRv
UmVhZCA9IG51bWJlck9mQnl0ZXNSZWFkIDwgc2l6ZVRvUmVhZCA/IDAgOiBzaGFyZWRIYW5kbGUt
PnVucmVhZEJ5dGVzKCk7CiAgICAgICAgIH0KKwogICAgICAgICBpZiAoc2l6ZVRvUmVhZCkKICAg
ICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgIGF1dG8gbmV4dElkZW50aWZpZXIgPSBzdGQ6
OmV4Y2hhbmdlKG1fbmV4dEl0ZW1CdWZmZXJUb1JlYWQsIHsgfSk7Ci0gICAgICAgIGlmICghbmV4
dElkZW50aWZpZXIpCisgICAgICAgIGlmICghbV9taXNzaW5nUmVzb3VyY2VzUmVxdWlyZWRGb3JE
aXNwbGF5TGlzdFByb2Nlc3NpbmcuaXNFbXB0eSgpKSB7CisgICAgICAgICAgICBzZXROZXh0SXRl
bUJ1ZmZlclRvUmVhZChzaGFyZWRIYW5kbGUtPmlkZW50aWZpZXIoKSwgb2Zmc2V0ICsgbnVtYmVy
T2ZCeXRlc1JlYWQpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKworICAgICAgICBh
dXRvIG5leHRJdGVtQnVmZmVyQW5kT2Zmc2V0VG9SZWFkID0gc3RkOjpleGNoYW5nZShtX25leHRJ
dGVtQnVmZmVyQW5kT2Zmc2V0VG9SZWFkLCBXVEY6Om51bGxvcHQpOworICAgICAgICBpZiAoIW5l
eHRJdGVtQnVmZmVyQW5kT2Zmc2V0VG9SZWFkKQogICAgICAgICAgICAgYnJlYWs7CiAKKyAgICAg
ICAgYXV0byBbbmV4dElkZW50aWZpZXIsIG5leHRPZmZzZXRdID0gKm5leHRJdGVtQnVmZmVyQW5k
T2Zmc2V0VG9SZWFkOwogICAgICAgICBzaGFyZWRIYW5kbGUgPSBtX3NoYXJlZERpc3BsYXlMaXN0
SGFuZGxlcy5nZXQobmV4dElkZW50aWZpZXIpOwogICAgICAgICBpZiAoIXNoYXJlZEhhbmRsZSkg
ewotICAgICAgICAgICAgbV9uZXh0SXRlbUJ1ZmZlclRvUmVhZCA9IG5leHRJZGVudGlmaWVyOwor
ICAgICAgICAgICAgc2V0TmV4dEl0ZW1CdWZmZXJUb1JlYWQobmV4dElkZW50aWZpZXIsIFNoYXJl
ZERpc3BsYXlMaXN0SGFuZGxlOjpyZXNlcnZlZENhcGFjaXR5QXRTdGFydCk7CiAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgfQogCi0gICAgICAgIG9mZnNldCA9IFNoYXJlZERpc3BsYXlMaXN0
SGFuZGxlOjpyZXNlcnZlZENhcGFjaXR5QXRTdGFydDsKKyAgICAgICAgb2Zmc2V0ID0gbmV4dE9m
ZnNldDsKIAogICAgICAgICBkbyB7CiAgICAgICAgICAgICBTaGFyZWREaXNwbGF5TGlzdEhhbmRs
ZTo6TG9jayBuZXh0QnVmZmVyTG9ja2VyIHsgKnNoYXJlZEhhbmRsZSB9OwpAQCAtMjAwLDEzICsy
MTMsMTMgQEAgdm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjp3YWtlVXBBbmRQcm9jZXNzRGlz
cGxheUxpc3QoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkkKICAgICB9CiB9CiAKLXZvaWQgUmVtb3Rl
UmVuZGVyaW5nQmFja2VuZDo6c2V0TmV4dEl0ZW1CdWZmZXJUb1JlYWQoV2ViQ29yZTo6RGlzcGxh
eUxpc3Q6Okl0ZW1CdWZmZXJJZGVudGlmaWVyIGlkZW50aWZpZXIpCit2b2lkIFJlbW90ZVJlbmRl
cmluZ0JhY2tlbmQ6OnNldE5leHRJdGVtQnVmZmVyVG9SZWFkKFdlYkNvcmU6OkRpc3BsYXlMaXN0
OjpJdGVtQnVmZmVySWRlbnRpZmllciBpZGVudGlmaWVyLCBzaXplX3Qgb2Zmc2V0KQogewotICAg
IGlmIChVTkxJS0VMWShtX25leHRJdGVtQnVmZmVyVG9SZWFkKSkgeworICAgIGlmIChVTkxJS0VM
WShtX25leHRJdGVtQnVmZmVyQW5kT2Zmc2V0VG9SZWFkIHx8IG9mZnNldCA8IFNoYXJlZERpc3Bs
YXlMaXN0SGFuZGxlOjpyZXNlcnZlZENhcGFjaXR5QXRTdGFydCkpIHsKICAgICAgICAgLy8gRklY
TUU6IEFkZCBhIG1lc3NhZ2UgY2hlY2sgdG8gdGVybWluYXRlIHRoZSB3ZWIgcHJvY2Vzcy4KICAg
ICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBtX25leHRJdGVtQnVmZmVyVG9SZWFkID0gaWRlbnRp
ZmllcjsKKyAgICBtX25leHRJdGVtQnVmZmVyQW5kT2Zmc2V0VG9SZWFkID0ge3sgaWRlbnRpZmll
ciwgb2Zmc2V0IH19OwogfQogCiB2b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmdldEltYWdl
RGF0YShBbHBoYVByZW11bHRpcGxpY2F0aW9uIG91dHB1dEZvcm1hdCwgSW50UmVjdCBzcmNSZWN0
LCBSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVy
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKElQQzo6SW1hZ2VEYXRhUmVmZXJlbmNlJiYpPiYmIGNv
bXBsZXRpb25IYW5kbGVyKQpAQCAtMjIyLDE3ICsyMzUsMzQgQEAgdm9pZCBSZW1vdGVSZW5kZXJp
bmdCYWNrZW5kOjpyZWxlYXNlUmVtb3RlUmVzb3VyY2UoUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlm
aWVyIHIKICAgICBtX3JlbW90ZVJlc291cmNlQ2FjaGUucmVsZWFzZVJlbW90ZVJlc291cmNlKHJl
bmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcik7CiB9CiAKLXZvaWQgUmVtb3RlUmVuZGVyaW5nQmFj
a2VuZDo6ZGlkQ3JlYXRlU2hhcmVkRGlzcGxheUxpc3RIYW5kbGUoRGlzcGxheUxpc3Q6Okl0ZW1C
dWZmZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIGNvbnN0IFNoYXJlZE1lbW9yeTo6SVBDSGFuZGxl
JiBoYW5kbGUsIFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciByZW1vdGVSZXNvdXJjZUlkZW50
aWZpZXIpCit2b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmRpZENyZWF0ZVNoYXJlZERpc3Bs
YXlMaXN0SGFuZGxlKERpc3BsYXlMaXN0OjpJdGVtQnVmZmVySWRlbnRpZmllciBpZGVudGlmaWVy
LCBjb25zdCBTaGFyZWRNZW1vcnk6OklQQ0hhbmRsZSYgaGFuZGxlKQogewogICAgIGlmIChhdXRv
IHNoYXJlZE1lbW9yeSA9IFNoYXJlZE1lbW9yeTo6bWFwKGhhbmRsZS5oYW5kbGUsIFNoYXJlZE1l
bW9yeTo6UHJvdGVjdGlvbjo6UmVhZFdyaXRlKSkKICAgICAgICAgbV9zaGFyZWREaXNwbGF5TGlz
dEhhbmRsZXMuc2V0KGlkZW50aWZpZXIsIG1ha2VVbmlxdWU8RGlzcGxheUxpc3RSZWFkZXJIYW5k
bGU+KGlkZW50aWZpZXIsIHNoYXJlZE1lbW9yeS5yZWxlYXNlTm9uTnVsbCgpKSk7CiAKLSAgICBp
ZiAobV9uZXh0SXRlbUJ1ZmZlclRvUmVhZCA9PSBpZGVudGlmaWVyKSB7Ci0gICAgICAgIG1fbmV4
dEl0ZW1CdWZmZXJUb1JlYWQgPSB7IH07Ci0gICAgICAgIHdha2VVcEFuZFByb2Nlc3NEaXNwbGF5
TGlzdChpZGVudGlmaWVyLCBTaGFyZWREaXNwbGF5TGlzdEhhbmRsZTo6cmVzZXJ2ZWRDYXBhY2l0
eUF0U3RhcnQsIHJlbW90ZVJlc291cmNlSWRlbnRpZmllcik7CisgICAgaWYgKG1fbmV4dEl0ZW1C
dWZmZXJBbmRPZmZzZXRUb1JlYWQgJiYgbV9uZXh0SXRlbUJ1ZmZlckFuZE9mZnNldFRvUmVhZC0+
Zmlyc3QgPT0gaWRlbnRpZmllcikgeworICAgICAgICBhdXRvIFtpZGVudGlmaWVyLCBvZmZzZXRd
ID0gKnN0ZDo6ZXhjaGFuZ2UobV9uZXh0SXRlbUJ1ZmZlckFuZE9mZnNldFRvUmVhZCwgV1RGOjpu
dWxsb3B0KTsKKyAgICAgICAgd2FrZVVwQW5kUHJvY2Vzc0Rpc3BsYXlMaXN0KGlkZW50aWZpZXIs
IG9mZnNldCwgbV90YXJnZXRGb3JEaXNwbGF5TGlzdFJlcGxheSk7CiAgICAgfQogfQogCit2b2lk
IFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmRpZFJlY2VpdmVDYWNoZWRSZXNvdXJjZShSZW5kZXJp
bmdSZXNvdXJjZUlkZW50aWZpZXIgcmVzb3VyY2VJZGVudGlmaWVyKQoreworICAgIGlmICghbV9t
aXNzaW5nUmVzb3VyY2VzUmVxdWlyZWRGb3JEaXNwbGF5TGlzdFByb2Nlc3NpbmcucmVtb3ZlKHJl
c291cmNlSWRlbnRpZmllcikpCisgICAgICAgIHJldHVybjsKKworICAgIGlmICghbV9taXNzaW5n
UmVzb3VyY2VzUmVxdWlyZWRGb3JEaXNwbGF5TGlzdFByb2Nlc3NpbmcuaXNFbXB0eSgpKQorICAg
ICAgICByZXR1cm47CisKKyAgICBpZiAoIW1fbmV4dEl0ZW1CdWZmZXJBbmRPZmZzZXRUb1JlYWQp
IHsKKyAgICAgICAgLy8gRklYTUU6IEFkZCBhIG1lc3NhZ2UgY2hlY2sgdG8gdGVybWluYXRlIHRo
ZSB3ZWIgcHJvY2Vzcy4KKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGF1dG8gW2lkZW50
aWZpZXIsIG9mZnNldF0gPSAqc3RkOjpleGNoYW5nZShtX25leHRJdGVtQnVmZmVyQW5kT2Zmc2V0
VG9SZWFkLCBXVEY6Om51bGxvcHQpOworICAgIHdha2VVcEFuZFByb2Nlc3NEaXNwbGF5TGlzdChp
ZGVudGlmaWVyLCBvZmZzZXQsIG1fdGFyZ2V0Rm9yRGlzcGxheUxpc3RSZXBsYXkpOworfQorCiB9
IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAogI2VuZGlmIC8vIEVOQUJMRShHUFVfUFJPQ0VTUykKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJp
bmdCYWNrZW5kLmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVu
ZGVyaW5nQmFja2VuZC5oCmluZGV4IDRlMDRiNjdmM2IxZGJkMmI1YmEzZTc2YjY1NWRjYTY5ZmVl
ZjdjYTIuLmY1OWY0ZGJmMDM3M2JjYzEwNTBmM2YyMmU3MzMyMzJiM2VlYWJhNzMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kLmgKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRl
cmluZ0JhY2tlbmQuaApAQCAtNzEsMTEgKzcxLDEzIEBAIHB1YmxpYzoKICAgICB2b2lkIGltYWdl
QnVmZmVyQmFja2VuZFdhc0NyZWF0ZWQoY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJiBsb2dpY2Fs
U2l6ZSwgY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgYmFja2VuZFNpemUsIGZsb2F0IHJlc29sdXRp
b25TY2FsZSwgV2ViQ29yZTo6Q29sb3JTcGFjZSwgSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlLCBX
ZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpOwogICAgIHZvaWQgZmx1c2hEaXNw
bGF5TGlzdFdhc0NvbW1pdHRlZChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6Rmx1c2hJZGVudGlmaWVy
LCBXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpOwogCi0gICAgdm9pZCBzZXRO
ZXh0SXRlbUJ1ZmZlclRvUmVhZChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbUJ1ZmZlcklkZW50
aWZpZXIpOworICAgIHZvaWQgc2V0TmV4dEl0ZW1CdWZmZXJUb1JlYWQoV2ViQ29yZTo6RGlzcGxh
eUxpc3Q6Okl0ZW1CdWZmZXJJZGVudGlmaWVyLCBzaXplX3Qgb2Zmc2V0KTsKIAogcHJpdmF0ZToK
ICAgICBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kKEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmLCBS
ZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllcik7CiAKKyAgICB2b2lkIGRpZFJlY2VpdmVDYWNoZWRS
ZXNvdXJjZShXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpOworCiAgICAgLy8g
SVBDOjpNZXNzYWdlU2VuZGVyLgogICAgIElQQzo6Q29ubmVjdGlvbiogbWVzc2FnZVNlbmRlckNv
bm5lY3Rpb24oKSBjb25zdCBvdmVycmlkZTsKICAgICB1aW50NjRfdCBtZXNzYWdlU2VuZGVyRGVz
dGluYXRpb25JRCgpIGNvbnN0IG92ZXJyaWRlOwpAQCAtODksMTMgKzkxLDE1IEBAIHByaXZhdGU6
CiAgICAgdm9pZCB3YWtlVXBBbmRQcm9jZXNzRGlzcGxheUxpc3QoV2ViQ29yZTo6RGlzcGxheUxp
c3Q6Okl0ZW1CdWZmZXJJZGVudGlmaWVyIGluaXRpYWxJZGVudGlmaWVyLCBzaXplX3QgaW5pdGlh
bE9mZnNldCwgV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKTsKICAgICB2b2lk
IGdldEltYWdlRGF0YShXZWJDb3JlOjpBbHBoYVByZW11bHRpcGxpY2F0aW9uIG91dHB1dEZvcm1h
dCwgV2ViQ29yZTo6SW50UmVjdCBzcmNSZWN0LCBXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlk
ZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoSVBDOjpJbWFnZURhdGFSZWZlcmVuY2Um
Jik+JiYpOwogICAgIHZvaWQgcmVsZWFzZVJlbW90ZVJlc291cmNlKFdlYkNvcmU6OlJlbmRlcmlu
Z1Jlc291cmNlSWRlbnRpZmllcik7Ci0gICAgdm9pZCBkaWRDcmVhdGVTaGFyZWREaXNwbGF5TGlz
dEhhbmRsZShXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbUJ1ZmZlcklkZW50aWZpZXIsIGNvbnN0
IFNoYXJlZE1lbW9yeTo6SVBDSGFuZGxlJiwgV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVu
dGlmaWVyKTsKKyAgICB2b2lkIGRpZENyZWF0ZVNoYXJlZERpc3BsYXlMaXN0SGFuZGxlKFdlYkNv
cmU6OkRpc3BsYXlMaXN0OjpJdGVtQnVmZmVySWRlbnRpZmllciwgY29uc3QgU2hhcmVkTWVtb3J5
OjpJUENIYW5kbGUmKTsKIAogICAgIFJlbW90ZVJlc291cmNlQ2FjaGUgbV9yZW1vdGVSZXNvdXJj
ZUNhY2hlOwogICAgIFdlYWtQdHI8R1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcz4gbV9ncHVDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzOwogICAgIFJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyIG1fcmVu
ZGVyaW5nQmFja2VuZElkZW50aWZpZXI7CiAgICAgSGFzaE1hcDxXZWJDb3JlOjpEaXNwbGF5TGlz
dDo6SXRlbUJ1ZmZlcklkZW50aWZpZXIsIHN0ZDo6dW5pcXVlX3B0cjxEaXNwbGF5TGlzdFJlYWRl
ckhhbmRsZT4+IG1fc2hhcmVkRGlzcGxheUxpc3RIYW5kbGVzOwotICAgIFdlYkNvcmU6OkRpc3Bs
YXlMaXN0OjpJdGVtQnVmZmVySWRlbnRpZmllciBtX25leHRJdGVtQnVmZmVyVG9SZWFkOworICAg
IEhhc2hTZXQ8V2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyPiBtX21pc3NpbmdS
ZXNvdXJjZXNSZXF1aXJlZEZvckRpc3BsYXlMaXN0UHJvY2Vzc2luZzsKKyAgICBXZWJDb3JlOjpS
ZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgbV90YXJnZXRGb3JEaXNwbGF5TGlzdFJlcGxheTsK
KyAgICBPcHRpb25hbDxzdGQ6OnBhaXI8V2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1CdWZmZXJJ
ZGVudGlmaWVyLCBzaXplX3Q+PiBtX25leHRJdGVtQnVmZmVyQW5kT2Zmc2V0VG9SZWFkOwogfTsK
IAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5tZXNzYWdlcy5pbiBiL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLm1lc3Nh
Z2VzLmluCmluZGV4IDczMTFjNjZiYmIxNmI4ZmEwOGZiMmMwYjkwMjRhOTY2NTg4NjBkZDkuLmU1
Yzg1MjJhNjM3MjczZWJmZmI3MDNiYWI3N2EzYjdjMDBmMzNlZjQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLm1lc3Nh
Z2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5k
ZXJpbmdCYWNrZW5kLm1lc3NhZ2VzLmluCkBAIC0yNiw3ICsyNiw3IEBAIG1lc3NhZ2VzIC0+IFJl
bW90ZVJlbmRlcmluZ0JhY2tlbmQgTm90UmVmQ291bnRlZCB7CiAgICAgQ3JlYXRlSW1hZ2VCdWZm
ZXIoV2ViQ29yZTo6RmxvYXRTaXplIGxvZ2ljYWxTaXplLCBXZWJDb3JlOjpSZW5kZXJpbmdNb2Rl
IHJlbmRlcmluZ01vZGUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgV2ViQ29yZTo6Q29sb3JTcGFj
ZSBjb2xvclNwYWNlLCBXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgcmVuZGVy
aW5nUmVzb3VyY2VJZGVudGlmaWVyKQogICAgIFdha2VVcEFuZFByb2Nlc3NEaXNwbGF5TGlzdChX
ZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbUJ1ZmZlcklkZW50aWZpZXIgaW5pdGlhbElkZW50aWZp
ZXIsIHNpemVfdCBpbml0aWFsT2Zmc2V0LCBXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50
aWZpZXIgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKQogICAgIEdldEltYWdlRGF0YShlbnVt
OnVpbnQ4X3QgV2ViQ29yZTo6QWxwaGFQcmVtdWx0aXBsaWNhdGlvbiBvdXRwdXRGb3JtYXQsIFdl
YkNvcmU6OkludFJlY3Qgc3JjUmVjdCwgV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlm
aWVyIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcikgLT4gKElQQzo6SW1hZ2VEYXRhUmVmZXJl
bmNlIGltYWdlRGF0YSkgU3luY2hyb25vdXMKLSAgICBEaWRDcmVhdGVTaGFyZWREaXNwbGF5TGlz
dEhhbmRsZShXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbUJ1ZmZlcklkZW50aWZpZXIgaWRlbnRp
ZmllciwgV2ViS2l0OjpTaGFyZWRNZW1vcnk6OklQQ0hhbmRsZSBoYW5kbGUsIFdlYkNvcmU6OlJl
bmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciByZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpCisgICAg
RGlkQ3JlYXRlU2hhcmVkRGlzcGxheUxpc3RIYW5kbGUoV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0
ZW1CdWZmZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIFdlYktpdDo6U2hhcmVkTWVtb3J5OjpJUENI
YW5kbGUgaGFuZGxlKQogICAgIFJlbGVhc2VSZW1vdGVSZXNvdXJjZShXZWJDb3JlOjpSZW5kZXJp
bmdSZXNvdXJjZUlkZW50aWZpZXIgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKQogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUlt
YWdlQnVmZmVyUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3Mv
UmVtb3RlSW1hZ2VCdWZmZXJQcm94eS5oCmluZGV4IDVjNGRlYWFkOTVjM2FiMzIwOGQ4ZDA3YWUz
MTM1NGZkNTQ4MTg2MGUuLjMxOThjNWExODYzZTM1MTg1ZTZjZmEzN2QxZmNjYzAwMjYzMjNkNzQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3Rl
SW1hZ2VCdWZmZXJQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3Jh
cGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXJQcm94eS5oCkBAIC0xNjIsMTQgKzE2MiwxNSBAQCBwcm90
ZWN0ZWQ6CiAgICAgICAgIGRpc3BsYXlMaXN0LmNsZWFyKCk7CiAgICAgfQogCi0gICAgdm9pZCBm
bHVzaERpc3BsYXlMaXN0KGNvbnN0IFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEaXNwbGF5TGlzdCYg
ZGlzcGxheUxpc3QpIG92ZXJyaWRlCisgICAgT3B0aW9uYWw8c2l6ZV90PiBmbHVzaERpc3BsYXlM
aXN0KGNvbnN0IFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEaXNwbGF5TGlzdCYgZGlzcGxheUxpc3Qp
IG92ZXJyaWRlCiAgICAgewogICAgICAgICBpZiAoIW1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZFBy
b3h5IHx8IGRpc3BsYXlMaXN0LmlzRW1wdHkoKSkKLSAgICAgICAgICAgIHJldHVybjsKKyAgICAg
ICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAKICAgICAgICAgVHJhY2VTY29wZSB0cmFjaW5n
U2NvcGUoRmx1c2hSZW1vdGVJbWFnZUJ1ZmZlclN0YXJ0LCBGbHVzaFJlbW90ZUltYWdlQnVmZmVy
RW5kKTsKICAgICAgICAgbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHktPmZsdXNoRGlzcGxh
eUxpc3QoZGlzcGxheUxpc3QsIG1fcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKTsKICAgICAg
ICAgbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHktPnJlbW90ZVJlc291cmNlQ2FjaGVQcm94
eSgpLnVubG9ja1JlbW90ZVJlc291cmNlc0ZvclJlbW90ZUNsaWVudChtX3JlbmRlcmluZ1Jlc291
cmNlSWRlbnRpZmllcik7CisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAgICAgfQogCiAg
ICAgYm9vbCBsb2NrUmVtb3RlSW1hZ2VCdWZmZXIoV2ViQ29yZTo6SW1hZ2VCdWZmZXImIGltYWdl
QnVmZmVyKSBvdmVycmlkZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQ
VS9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkuY3BwIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkuY3Bw
CmluZGV4IGQ3Y2E0NTEwMzliYTdhYmEzZTU5MTBmZDczMTljMTRkN2NhNmJkZWUuLjMwMmJmYzY0
MTJkZGUzOWI3MmQ1OWM4OGIxOTY2OWZlOWQ2MDU4YzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRl
cmluZ0JhY2tlbmRQcm94eS5jcHAKQEAgLTIxMyw3ICsyMTMsNyBAQCBEaXNwbGF5TGlzdDo6SXRl
bUJ1ZmZlckhhbmRsZSBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OmNyZWF0ZUl0ZW1CdWZm
ZXIoc2l6ZQogICAgIHNoYXJlZE1lbW9yeS0+Y3JlYXRlSGFuZGxlKHNoYXJlZE1lbW9yeUhhbmRs
ZSwgU2hhcmVkTWVtb3J5OjpQcm90ZWN0aW9uOjpSZWFkV3JpdGUpOwogCiAgICAgYXV0byBpZGVu
dGlmaWVyID0gRGlzcGxheUxpc3Q6Okl0ZW1CdWZmZXJJZGVudGlmaWVyOjpnZW5lcmF0ZSgpOwot
ICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OkRpZENyZWF0ZVNoYXJl
ZERpc3BsYXlMaXN0SGFuZGxlKGlkZW50aWZpZXIsIHsgV1RGTW92ZShzaGFyZWRNZW1vcnlIYW5k
bGUpLCBzaGFyZWRNZW1vcnktPnNpemUoKSB9LCByZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpLCBt
X3JlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVS
ZW5kZXJpbmdCYWNrZW5kOjpEaWRDcmVhdGVTaGFyZWREaXNwbGF5TGlzdEhhbmRsZShpZGVudGlm
aWVyLCB7IFdURk1vdmUoc2hhcmVkTWVtb3J5SGFuZGxlKSwgc2hhcmVkTWVtb3J5LT5zaXplKCkg
fSksIG1fcmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIpOwogCiAgICAgYXV0byBuZXdIYW5kbGUg
PSBtYWtlVW5pcXVlPERpc3BsYXlMaXN0V3JpdGVySGFuZGxlPihpZGVudGlmaWVyLCBzaGFyZWRN
ZW1vcnkucmVsZWFzZU5vbk51bGwoKSk7CiAgICAgYXV0byBkaXNwbGF5TGlzdEhhbmRsZSA9IG5l
d0hhbmRsZS0+Y3JlYXRlSGFuZGxlKCk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>415692</attachid>
            <date>2020-12-08 17:10:59 -0800</date>
            <delta_ts>2020-12-09 11:50:36 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-218614-20201208171058.patch</filename>
            <type>text/plain</type>
            <size>10941</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcwNTU2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDI3NTMxMmI5MjY1YWIzNzc5
ZWJkZTZhYjFjOTBjZGIwMmZkYWJmODEuLmE5NTlmYTU0N2YxN2Q1MjdhOGRkNmMzMTY0NWMwMTRk
MjdkZTdlNmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDUgQEAKKzIwMjAtMTItMDggIFdlbnNvbiBI
c2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CisKKyAgICAgICAgW0NvbmN1cnJlbnQgZGlz
cGxheSBsaXN0c10gU3VwcG9ydCBwbGF5YmFjayBvZiBkaXNwbGF5IGxpc3QgaXRlbXMgd2l0aCBj
YWNoZWQgcmVzb3VyY2VzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMTg2MTQKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzcxMzI2NjYyPgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRlYWNoZXMgdGhlIEdQ
VSBwcm9jZXNzIHRvIHJlc3VtZSBwbGF5YmFjayBvZiBkaXNwbGF5IGxpc3QgaXRlbXMgdGhhdCB3
ZXJlIHByZXZpb3VzbHkgdW5hYmxlIHRvIGJlIHBsYXllZCBiYWNrCisgICAgICAgIGR1ZSB0byBt
aXNzaW5nIGNhY2hlZCByZXNvdXJjZXMuIFNlZSBiZWxvdyBmb3IgbW9yZSBkZXRhaWxzLgorCisg
ICAgICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6Y3JlYXRlSW1hZ2VCdWZm
ZXIpOgorCisgICAgICAgIFNlZSBpZiB0aGUgbmV3bHkgY3JlYXRlZCBpbWFnZSBidWZmZXIncyBJ
RCBtYXRjaGVzIHRoYXQgb2YgdGhlIHBlbmRpbmcgd2FrZXVwIG1lc3NhZ2U7IGlmIHNvLCBpbW1l
ZGlhdGVseSBraWNrCisgICAgICAgIG9mZiB0aGUgd2FrZXVwIGxvb3AuCisKKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6bmV4dERlc3RpbmF0aW9uSW1hZ2VCdWZmZXJB
ZnRlckFwcGx5aW5nRGlzcGxheUxpc3RzKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVuZGVy
aW5nQmFja2VuZDo6d2FrZVVwQW5kQXBwbHlEaXNwbGF5TGlzdCk6CisKKyAgICAgICAgSW4gdGhl
IGNhc2Ugd2hlcmUgdGhlIG5leHQgZGVzdGluYXRpb24gaW1hZ2UgYnVmZmVyIGlzIHVua25vd24s
IGJhaWwgZWFybHkgYW5kIHJlc3VtZSB3aGVuIHdlIGV2ZW50dWFsbHkgbGVhcm4KKyAgICAgICAg
YWJvdXQgdGhlIGltYWdlIGJ1ZmZlciBpbiB0aGUgR1BVIHByb2Nlc3MuIFRoaXMgY2FuIGhhcHBl
biBpZiBhIE1ldGFDb21tYW5kQ2hhbmdlRGVzdGluYXRpb25JbWFnZUJ1ZmZlciBpdGVtIGlzCisg
ICAgICAgIGFkZGVkIHRoYXQgcmVmZXJlbmNlcyBhIG5ld2x5IGNyZWF0ZWQgaW1hZ2UgYnVmZmVy
LgorCisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OnNldE5leHRJdGVt
QnVmZmVyVG9SZWFkKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6
Y2FjaGVOYXRpdmVJbWFnZSk6CisKKyAgICAgICAgU2VlIGlmIHRoZSBuZXdseSBjYWNoZWQgaW1h
Z2UncyBJRCBtYXRjaGVzIHRoYXQgb2YgdGhlIHBlbmRpbmcgd2FrZXVwIG1lc3NhZ2U7IGlmIHNv
LCBpbW1lZGlhdGVseSBraWNrIG9mZiB0aGUKKyAgICAgICAgd2FrZXVwIGxvb3AuCisKKyAgICAg
ICAgKFdlYktpdDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6ZGlkQ3JlYXRlU2hhcmVkRGlzcGxh
eUxpc3RIYW5kbGUpOgorICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVy
aW5nQmFja2VuZC5oOgorCisgICAgICAgIEFkZCBhIHByaXZhdGUgYFBlbmRpbmdXYWtldXBJbmZv
cm1hdGlvbmAgc3RydWN0IHRoYXQgZW5jYXBzdWxhdGVzIGFsbCB0aGUgaW5mb3JtYXRpb24gbmVl
ZGVkIHRvIHJlbWVtYmVyIHRoYXQKKyAgICAgICAgd2Ugc3RvcHBlZCBkaXNwbGF5IGxpc3QgcHJv
Y2Vzc2luZywgYW5kIHJlc3VtZSBwcm9jZXNzaW5nIGluIHRoZSBmdXR1cmUuIEN1cnJlbnRseSwg
dGhpcyBjb250YWlucyBhIHNldCBvZgorICAgICAgICB3YWtldXAgbWVzc2FnZSBhcmd1bWVudHMs
IGFuZCAob3B0aW9uYWxseSkgdGhlIGlkZW50aWZpZXIgb2YgdGhlIG1pc3NpbmcgcmVzb3VyY2Ug
dGhhdCB3ZSBuZWVkIHRvIHJlY2VpdmUgaW4KKyAgICAgICAgb3JkZXIgdG8gY29udGludWUuCisK
KyAgICAgICAgV2UgYWxzbyB1c2UgdGhpcyBpbiBwbGFjZSBvZiBzdG9yaW5nIEdQVVByb2Nlc3NX
YWtldXBNZXNzYWdlQXJndW1lbnRzIG9uIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQuCisKKyAgICAg
ICAgKFdlYktpdDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6UGVuZGluZ1dha2V1cEluZm9ybWF0
aW9uOjpzaG91bGRQZXJmb3JtV2FrZXVwIGNvbnN0KToKKwogMjAyMC0xMi0wOCAgV2Vuc29uIEhz
aWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KIAogICAgICAgICBbQ29uY3VycmVudCBEaXNw
bGF5IExpc3RzXSBBZGQgYSBuZXcgdHlwZSB0byByZXByZXNlbnQgYSBzZXQgb2YgR1BVIHByb2Nl
c3Mgd2FrZXVwIGFyZ3VtZW50cwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuY3BwCmluZGV4IDdiMTNhMWE5
NDYxMTkwMTdkY2M2OWFhZWJiOTBlZjc0NWQzNTUzYjMuLmEzZDI1ZWRlZWZiMjk0ZDc0Y2EzNjVk
NjRmOTFiNjYyNjIyNWU0ZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9n
cmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQ
VVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5jcHAKQEAgLTEyNyw2ICsx
MjcsOSBAQCB2b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmNyZWF0ZUltYWdlQnVmZmVyKGNv
bnN0IEZsb2F0U2l6ZSYgbG9naWNhbFNpemUsIFJlbgogICAgIH0KIAogICAgIG1fcmVtb3RlUmVz
b3VyY2VDYWNoZS5jYWNoZUltYWdlQnVmZmVyKG1ha2VSZWYoKmltYWdlQnVmZmVyKSk7CisKKyAg
ICBpZiAobV9wZW5kaW5nV2FrZXVwSW5mbyAmJiBtX3BlbmRpbmdXYWtldXBJbmZvLT5zaG91bGRQ
ZXJmb3JtV2FrZXVwKHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcikpCisgICAgICAgIHdha2VV
cEFuZEFwcGx5RGlzcGxheUxpc3Qoc3RkOjpleGNoYW5nZShtX3BlbmRpbmdXYWtldXBJbmZvLCBX
VEY6Om51bGxvcHQpLT5hcmd1bWVudHMpOwogfQogCiBEaXNwbGF5TGlzdDo6UmVwbGF5UmVzdWx0
IFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OnN1Ym1pdChjb25zdCBEaXNwbGF5TGlzdDo6RGlzcGxh
eUxpc3QmIGRpc3BsYXlMaXN0LCBJbWFnZUJ1ZmZlciYgZGVzdGluYXRpb24pCkBAIC0xOTAsMTIg
KzE5MywxOSBAQCBSZWZQdHI8SW1hZ2VCdWZmZXI+IFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6Om5l
eHREZXN0aW5hdGlvbkltYWdlQnVmZmVyQWZ0ZXJBcHBseQogICAgICAgICBpZiAocmVzdWx0LnJl
YXNvbkZvclN0b3BwaW5nID09IERpc3BsYXlMaXN0OjpTdG9wUmVwbGF5UmVhc29uOjpDaGFuZ2VE
ZXN0aW5hdGlvbkltYWdlQnVmZmVyKSB7CiAgICAgICAgICAgICBkZXN0aW5hdGlvbiA9IG1ha2VS
ZWZQdHIobV9yZW1vdGVSZXNvdXJjZUNhY2hlLmNhY2hlZEltYWdlQnVmZmVyKCpyZXN1bHQubmV4
dERlc3RpbmF0aW9uSW1hZ2VCdWZmZXIpKTsKICAgICAgICAgICAgIGlmICghZGVzdGluYXRpb24p
IHsKLSAgICAgICAgICAgICAgICBBU1NFUlQoIW1fcGVuZGluZ1dha2V1cEFyZ3VtZW50cyk7Ci0g
ICAgICAgICAgICAgICAgbV9wZW5kaW5nV2FrZXVwQXJndW1lbnRzID0ge3sgaGFuZGxlLmlkZW50
aWZpZXIoKSwgb2Zmc2V0LCAqcmVzdWx0Lm5leHREZXN0aW5hdGlvbkltYWdlQnVmZmVyIH19Owor
ICAgICAgICAgICAgICAgIEFTU0VSVCghbV9wZW5kaW5nV2FrZXVwSW5mbyk7CisgICAgICAgICAg
ICAgICAgbV9wZW5kaW5nV2FrZXVwSW5mbyA9IHt7eyBoYW5kbGUuaWRlbnRpZmllcigpLCBvZmZz
ZXQsICpyZXN1bHQubmV4dERlc3RpbmF0aW9uSW1hZ2VCdWZmZXIgfSwgV1RGOjpudWxsb3B0IH19
OwogICAgICAgICAgICAgfQogICAgICAgICB9CiAKLSAgICAgICAgaWYgKG1fcGVuZGluZ1dha2V1
cEFyZ3VtZW50cykKKyAgICAgICAgaWYgKHJlc3VsdC5yZWFzb25Gb3JTdG9wcGluZyA9PSBEaXNw
bGF5TGlzdDo6U3RvcFJlcGxheVJlYXNvbjo6TWlzc2luZ0NhY2hlZFJlc291cmNlKSB7CisgICAg
ICAgICAgICBtX3BlbmRpbmdXYWtldXBJbmZvID0ge3sKKyAgICAgICAgICAgICAgICB7IGhhbmRs
ZS5pZGVudGlmaWVyKCksIG9mZnNldCwgZGVzdGluYXRpb24tPnJlbmRlcmluZ1Jlc291cmNlSWRl
bnRpZmllcigpIH0sCisgICAgICAgICAgICAgICAgcmVzdWx0Lm1pc3NpbmdDYWNoZWRSZXNvdXJj
ZUlkZW50aWZpZXIKKyAgICAgICAgICAgIH19OworICAgICAgICB9CisKKyAgICAgICAgaWYgKG1f
cGVuZGluZ1dha2V1cEluZm8pCiAgICAgICAgICAgICBicmVhazsKIAogICAgICAgICBpZiAoIXNp
emVUb1JlYWQpCkBAIC0yMjQsMTIgKzIzNCwxNSBAQCB2b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tl
bmQ6Ondha2VVcEFuZEFwcGx5RGlzcGxheUxpc3QoY29uc3QgR1BVUHJvY2Vzc1dha2V1cE1lcwog
CiAgICAgZGVzdGluYXRpb25JbWFnZUJ1ZmZlciA9IG5leHREZXN0aW5hdGlvbkltYWdlQnVmZmVy
QWZ0ZXJBcHBseWluZ0Rpc3BsYXlMaXN0cygqZGVzdGluYXRpb25JbWFnZUJ1ZmZlciwgYXJndW1l
bnRzLm9mZnNldCwgKmluaXRpYWxIYW5kbGUpOwogICAgIGlmICghZGVzdGluYXRpb25JbWFnZUJ1
ZmZlcikgewotICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgUkVMRUFTRV9B
U1NFUlQobV9wZW5kaW5nV2FrZXVwSW5mbyk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAg
ICB3aGlsZSAobV9wZW5kaW5nV2FrZXVwQXJndW1lbnRzKSB7Ci0gICAgICAgIGF1dG8gbmV4dEhh
bmRsZSA9IG1fc2hhcmVkRGlzcGxheUxpc3RIYW5kbGVzLmdldChtX3BlbmRpbmdXYWtldXBBcmd1
bWVudHMtPml0ZW1CdWZmZXJJZGVudGlmaWVyKTsKKyAgICB3aGlsZSAobV9wZW5kaW5nV2FrZXVw
SW5mbykgeworICAgICAgICBpZiAobV9wZW5kaW5nV2FrZXVwSW5mby0+bWlzc2luZ0NhY2hlZFJl
c291cmNlSWRlbnRpZmllcikKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGF1dG8gbmV4
dEhhbmRsZSA9IG1fc2hhcmVkRGlzcGxheUxpc3RIYW5kbGVzLmdldChtX3BlbmRpbmdXYWtldXBJ
bmZvLT5hcmd1bWVudHMuaXRlbUJ1ZmZlcklkZW50aWZpZXIpOwogICAgICAgICBpZiAoIW5leHRI
YW5kbGUpIHsKICAgICAgICAgICAgIC8vIElmIHRoZSBoYW5kbGUgaWRlbnRpZmllciBpcyBjdXJy
ZW50bHkgdW5rbm93biwgd2FpdCB1bnRpbCB0aGUgR1BVIHByb2Nlc3MgcmVjZWl2ZXMgYW4KICAg
ICAgICAgICAgIC8vIElQQyBtZXNzYWdlIHdpdGggYSBzaGFyZWQgbWVtb3J5IGhhbmRsZSB0byB0
aGUgbmV4dCBpdGVtIGJ1ZmZlci4KQEAgLTIzNywyMyArMjUwLDIzIEBAIHZvaWQgUmVtb3RlUmVu
ZGVyaW5nQmFja2VuZDo6d2FrZVVwQW5kQXBwbHlEaXNwbGF5TGlzdChjb25zdCBHUFVQcm9jZXNz
V2FrZXVwTWVzCiAgICAgICAgIH0KIAogICAgICAgICAvLyBPdGhlcndpc2UsIGNvbnRpbnVlIHJl
YWRpbmcgdGhlIG5leHQgZGlzcGxheSBsaXN0IGl0ZW0gYnVmZmVyIGZyb20gdGhlIHN0YXJ0Lgot
ICAgICAgICBhdXRvIGFyZ3VtZW50cyA9ICpzdGQ6OmV4Y2hhbmdlKG1fcGVuZGluZ1dha2V1cEFy
Z3VtZW50cywgV1RGOjpudWxsb3B0KTsKKyAgICAgICAgYXV0byBhcmd1bWVudHMgPSBzdGQ6OmV4
Y2hhbmdlKG1fcGVuZGluZ1dha2V1cEluZm8sIFdURjo6bnVsbG9wdCktPmFyZ3VtZW50czsKICAg
ICAgICAgZGVzdGluYXRpb25JbWFnZUJ1ZmZlciA9IG5leHREZXN0aW5hdGlvbkltYWdlQnVmZmVy
QWZ0ZXJBcHBseWluZ0Rpc3BsYXlMaXN0cygqZGVzdGluYXRpb25JbWFnZUJ1ZmZlciwgYXJndW1l
bnRzLm9mZnNldCwgKm5leHRIYW5kbGUpOwogICAgICAgICBpZiAoIWRlc3RpbmF0aW9uSW1hZ2VC
dWZmZXIpIHsKLSAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICAgICAg
cmV0dXJuOworICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQobV9wZW5kaW5nV2FrZXVwSW5mbyk7
CisgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgIH0KIH0KIAogdm9pZCBSZW1vdGVS
ZW5kZXJpbmdCYWNrZW5kOjpzZXROZXh0SXRlbUJ1ZmZlclRvUmVhZChEaXNwbGF5TGlzdDo6SXRl
bUJ1ZmZlcklkZW50aWZpZXIgaWRlbnRpZmllciwgV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJ
ZGVudGlmaWVyIGRlc3RpbmF0aW9uSWRlbnRpZmllcikKIHsKLSAgICBpZiAoVU5MSUtFTFkobV9w
ZW5kaW5nV2FrZXVwQXJndW1lbnRzKSkgeworICAgIGlmIChVTkxJS0VMWShtX3BlbmRpbmdXYWtl
dXBJbmZvKSkgewogICAgICAgICAvLyBGSVhNRTogQWRkIGEgbWVzc2FnZSBjaGVjayB0byB0ZXJt
aW5hdGUgdGhlIHdlYiBwcm9jZXNzLgogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBtX3BlbmRpbmdXYWtldXBBcmd1bWVudHMgPSB7eyBp
ZGVudGlmaWVyLCBTaGFyZWREaXNwbGF5TGlzdEhhbmRsZTo6aGVhZGVyU2l6ZSgpLCBkZXN0aW5h
dGlvbklkZW50aWZpZXIgfX07CisgICAgbV9wZW5kaW5nV2FrZXVwSW5mbyA9IHt7eyBpZGVudGlm
aWVyLCBTaGFyZWREaXNwbGF5TGlzdEhhbmRsZTo6aGVhZGVyU2l6ZSgpLCBkZXN0aW5hdGlvbklk
ZW50aWZpZXIgfSwgV1RGOjpudWxsb3B0IH19OwogfQogCiB2b2lkIFJlbW90ZVJlbmRlcmluZ0Jh
Y2tlbmQ6OmdldEltYWdlRGF0YShBbHBoYVByZW11bHRpcGxpY2F0aW9uIG91dHB1dEZvcm1hdCwg
SW50UmVjdCBzcmNSZWN0LCBSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgcmVuZGVyaW5nUmVz
b3VyY2VJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKElQQzo6SW1hZ2VEYXRhUmVm
ZXJlbmNlJiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQpAQCAtMjY2LDEwICsyNzksMTggQEAgdm9p
ZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpnZXRJbWFnZURhdGEoQWxwaGFQcmVtdWx0aXBsaWNh
dGlvbiBvdXRwdXRGb3JtYXQsIEkKIAogdm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpjYWNo
ZU5hdGl2ZUltYWdlKGNvbnN0IFNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlJiBoYW5kbGUsIFJlbmRl
cmluZ1Jlc291cmNlSWRlbnRpZmllciByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpCiB7Ci0g
ICAgaWYgKGF1dG8gYml0bWFwID0gU2hhcmVhYmxlQml0bWFwOjpjcmVhdGUoaGFuZGxlKSkgewot
ICAgICAgICBpZiAoYXV0byBpbWFnZSA9IE5hdGl2ZUltYWdlOjpjcmVhdGUoYml0bWFwLT5jcmVh
dGVQbGF0Zm9ybUltYWdlKCksIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcikpCi0gICAgICAg
ICAgICBtX3JlbW90ZVJlc291cmNlQ2FjaGUuY2FjaGVOYXRpdmVJbWFnZShtYWtlUmVmKCppbWFn
ZSkpOwotICAgIH0KKyAgICBhdXRvIGJpdG1hcCA9IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlKGhh
bmRsZSk7CisgICAgaWYgKCFiaXRtYXApCisgICAgICAgIHJldHVybjsKKworICAgIGF1dG8gaW1h
Z2UgPSBOYXRpdmVJbWFnZTo6Y3JlYXRlKGJpdG1hcC0+Y3JlYXRlUGxhdGZvcm1JbWFnZSgpLCBy
ZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpOworICAgIGlmICghaW1hZ2UpCisgICAgICAgIHJl
dHVybjsKKworICAgIG1fcmVtb3RlUmVzb3VyY2VDYWNoZS5jYWNoZU5hdGl2ZUltYWdlKG1ha2VS
ZWYoKmltYWdlKSk7CisKKyAgICBpZiAobV9wZW5kaW5nV2FrZXVwSW5mbyAmJiBtX3BlbmRpbmdX
YWtldXBJbmZvLT5zaG91bGRQZXJmb3JtV2FrZXVwKHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmll
cikpCisgICAgICAgIHdha2VVcEFuZEFwcGx5RGlzcGxheUxpc3Qoc3RkOjpleGNoYW5nZShtX3Bl
bmRpbmdXYWtldXBJbmZvLCBXVEY6Om51bGxvcHQpLT5hcmd1bWVudHMpOwogfQogCiB2b2lkIFJl
bW90ZVJlbmRlcmluZ0JhY2tlbmQ6OnJlbGVhc2VSZW1vdGVSZXNvdXJjZShSZW5kZXJpbmdSZXNv
dXJjZUlkZW50aWZpZXIgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKQpAQCAtMjg4LDggKzMw
OSw4IEBAIHZvaWQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6ZGlkQ3JlYXRlU2hhcmVkRGlzcGxh
eUxpc3RIYW5kbGUoRGlzcGxheUxpc3Q6Okl0ZW1CCiAgICAgaWYgKGF1dG8gc2hhcmVkTWVtb3J5
ID0gU2hhcmVkTWVtb3J5OjptYXAoaGFuZGxlLmhhbmRsZSwgU2hhcmVkTWVtb3J5OjpQcm90ZWN0
aW9uOjpSZWFkV3JpdGUpKQogICAgICAgICBtX3NoYXJlZERpc3BsYXlMaXN0SGFuZGxlcy5zZXQo
aWRlbnRpZmllciwgRGlzcGxheUxpc3RSZWFkZXJIYW5kbGU6OmNyZWF0ZShpZGVudGlmaWVyLCBz
aGFyZWRNZW1vcnkucmVsZWFzZU5vbk51bGwoKSkpOwogCi0gICAgaWYgKG1fcGVuZGluZ1dha2V1
cEFyZ3VtZW50cyAmJiBtX3BlbmRpbmdXYWtldXBBcmd1bWVudHMtPml0ZW1CdWZmZXJJZGVudGlm
aWVyID09IGlkZW50aWZpZXIpCi0gICAgICAgIHdha2VVcEFuZEFwcGx5RGlzcGxheUxpc3QoKnN0
ZDo6ZXhjaGFuZ2UobV9wZW5kaW5nV2FrZXVwQXJndW1lbnRzLCBXVEY6Om51bGxvcHQpKTsKKyAg
ICBpZiAobV9wZW5kaW5nV2FrZXVwSW5mbyAmJiBtX3BlbmRpbmdXYWtldXBJbmZvLT5zaG91bGRQ
ZXJmb3JtV2FrZXVwKGlkZW50aWZpZXIpKQorICAgICAgICB3YWtlVXBBbmRBcHBseURpc3BsYXlM
aXN0KHN0ZDo6ZXhjaGFuZ2UobV9wZW5kaW5nV2FrZXVwSW5mbywgV1RGOjpudWxsb3B0KS0+YXJn
dW1lbnRzKTsKIH0KIAogT3B0aW9uYWw8RGlzcGxheUxpc3Q6Okl0ZW1IYW5kbGU+IFdBUk5fVU5V
U0VEX1JFVFVSTiBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpkZWNvZGVJdGVtKGNvbnN0IHVpbnQ4
X3QqIGRhdGEsIHNpemVfdCBsZW5ndGgsIERpc3BsYXlMaXN0OjpJdGVtVHlwZSB0eXBlLCB1aW50
OF90KiBoYW5kbGVMb2NhdGlvbikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmggYi9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5oCmluZGV4IDViNGEwYmI3OTY0
OGUxZWU2YjQ4NGRmYzNmMTU5ZTdlNGZiYTQ4MWYuLjczNzE3OWNlOGMwY2NmOGI3OWQ4NTBhMDE3
MWIwNzFiOWVmY2RiYmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFw
aGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmgKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuaApAQCAtMTEzLDExICsxMTMsMjcg
QEAgcHJpdmF0ZToKICAgICB2b2lkIHJlbGVhc2VSZW1vdGVSZXNvdXJjZShXZWJDb3JlOjpSZW5k
ZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpOwogICAgIHZvaWQgZGlkQ3JlYXRlU2hhcmVkRGlzcGxh
eUxpc3RIYW5kbGUoV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1CdWZmZXJJZGVudGlmaWVyLCBj
b25zdCBTaGFyZWRNZW1vcnk6OklQQ0hhbmRsZSYsIFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNl
SWRlbnRpZmllciBkZXN0aW5hdGlvbkJ1ZmZlcklkZW50aWZpZXIpOwogCisgICAgc3RydWN0IFBl
bmRpbmdXYWtldXBJbmZvcm1hdGlvbiB7CisgICAgICAgIEdQVVByb2Nlc3NXYWtldXBNZXNzYWdl
QXJndW1lbnRzIGFyZ3VtZW50czsKKyAgICAgICAgT3B0aW9uYWw8V2ViQ29yZTo6UmVuZGVyaW5n
UmVzb3VyY2VJZGVudGlmaWVyPiBtaXNzaW5nQ2FjaGVkUmVzb3VyY2VJZGVudGlmaWVyOworCisg
ICAgICAgIGJvb2wgc2hvdWxkUGVyZm9ybVdha2V1cChXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJj
ZUlkZW50aWZpZXIgaWRlbnRpZmllcikgY29uc3QKKyAgICAgICAgeworICAgICAgICAgICAgcmV0
dXJuIGFyZ3VtZW50cy5kZXN0aW5hdGlvbkltYWdlQnVmZmVySWRlbnRpZmllciA9PSBpZGVudGlm
aWVyCisgICAgICAgICAgICAgICAgfHwgbWlzc2luZ0NhY2hlZFJlc291cmNlSWRlbnRpZmllciA9
PSBpZGVudGlmaWVyOworICAgICAgICB9CisKKyAgICAgICAgYm9vbCBzaG91bGRQZXJmb3JtV2Fr
ZXVwKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtQnVmZmVySWRlbnRpZmllciBpZGVudGlmaWVy
KSBjb25zdAorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gYXJndW1lbnRzLml0ZW1CdWZm
ZXJJZGVudGlmaWVyID09IGlkZW50aWZpZXI7CisgICAgICAgIH0KKyAgICB9OworCiAgICAgUmVt
b3RlUmVzb3VyY2VDYWNoZSBtX3JlbW90ZVJlc291cmNlQ2FjaGU7CiAgICAgV2Vha1B0cjxHUFVD
b25uZWN0aW9uVG9XZWJQcm9jZXNzPiBtX2dwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M7CiAgICAg
UmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIgbV9yZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllcjsK
ICAgICBIYXNoTWFwPFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtQnVmZmVySWRlbnRpZmllciwg
UmVmUHRyPERpc3BsYXlMaXN0UmVhZGVySGFuZGxlPj4gbV9zaGFyZWREaXNwbGF5TGlzdEhhbmRs
ZXM7Ci0gICAgT3B0aW9uYWw8R1BVUHJvY2Vzc1dha2V1cE1lc3NhZ2VBcmd1bWVudHM+IG1fcGVu
ZGluZ1dha2V1cEFyZ3VtZW50czsKKyAgICBPcHRpb25hbDxQZW5kaW5nV2FrZXVwSW5mb3JtYXRp
b24+IG1fcGVuZGluZ1dha2V1cEluZm87CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQK
</data>

          </attachment>
      

    </bug>

</bugzilla>