<?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>185984</bug_id>
          
          <creation_ts>2018-05-25 09:32:13 -0700</creation_ts>
          <short_desc>Minor ApplicationCacheStorage clean up</short_desc>
          <delta_ts>2018-05-25 11:41:22 -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>WebCore Misc.</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="Chris Dumez">cdumez</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>achristensen</cc>
    
    <cc>beidson</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dbates</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>ggaren</cc>
    
    <cc>japhet</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>youennf</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1427322</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2018-05-25 09:32:13 -0700</bug_when>
    <thetext>Minor ApplicationCacheStorage clean up.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1427323</commentid>
    <comment_count>1</comment_count>
      <attachid>341294</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2018-05-25 09:36:20 -0700</bug_when>
    <thetext>Created attachment 341294
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1427330</commentid>
    <comment_count>2</comment_count>
      <attachid>341294</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2018-05-25 09:53:34 -0700</bug_when>
    <thetext>Comment on attachment 341294
Patch

r = me as long as bots are happy.
Some potential improvements below.

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

&gt; Source/WebCore/loader/appcache/ApplicationCacheStorage.cpp:1474
&gt; +HashSet&lt;RefPtr&lt;SecurityOrigin&gt;&gt; ApplicationCacheStorage::originsWithCache()

Maybe HashSet&lt;Ref&lt;&gt;&gt;?

&gt; Source/WebCore/loader/appcache/ApplicationCacheStorage.h:106
&gt; +    WEBCORE_EXPORT ApplicationCacheStorage(const String&amp; cacheDirectory, const String&amp; flatFileSubdirectoryName);

Could probably be String&amp;&amp;

&gt; Source/WebCore/loader/appcache/ApplicationCacheStorage.h:110
&gt; +    bool getManifestURLs(Vector&lt;URL&gt;&amp; urls);

Could be std::optional&lt;Vector&lt;&gt;&gt; manifestURLs()

&gt; Source/WebCore/loader/appcache/ApplicationCacheStorage.h:145
&gt; +    int64_t m_maximumSize { noQuota() };

Could it be uint64_t?

&gt; Source/WebCore/loader/appcache/ApplicationCacheStorage.h:148
&gt; +    int64_t m_defaultOriginQuota { noQuota() };

Ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1427345</commentid>
    <comment_count>3</comment_count>
      <attachid>341298</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2018-05-25 10:36:42 -0700</bug_when>
    <thetext>Created attachment 341298
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1427379</commentid>
    <comment_count>4</comment_count>
      <attachid>341298</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-05-25 11:40:33 -0700</bug_when>
    <thetext>Comment on attachment 341298
Patch

Clearing flags on attachment: 341298

Committed r232192: &lt;https://trac.webkit.org/changeset/232192&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1427380</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-05-25 11:40:35 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1427381</commentid>
    <comment_count>6</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2018-05-25 11:41:22 -0700</bug_when>
    <thetext>&lt;rdar://problem/40560786&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>341294</attachid>
            <date>2018-05-25 09:36:20 -0700</date>
            <delta_ts>2018-05-25 10:36:41 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-185984-20180525093620.patch</filename>
            <type>text/plain</type>
            <size>15820</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjMyMTg4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjFlZTZmYzQzNTFlZmM0
OTNhMjY1MDJlYmIzZjdkYzc5OTgxOWE0My4uYTdiYzEyNjVkOWZjY2U2Y2M1NjQzYzRhYzExNzE4
MzQ2MzFlNzg5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI0IEBACisyMDE4LTA1LTI1ICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgTWlub3IgQXBwbGljYXRpb25D
YWNoZVN0b3JhZ2UgY2xlYW4gdXAKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE4NTk4NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgICogbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpnZXRNYW5pZmVz
dFVSTHMpOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OmRlbGV0
ZUNhY2hlR3JvdXApOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6
Om9yaWdpbnNXaXRoQ2FjaGUpOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZVN0
b3JhZ2U6OmRlbGV0ZUFsbENhY2hlcyk6CisgICAgICAgIChXZWJDb3JlOjpBcHBsaWNhdGlvbkNh
Y2hlU3RvcmFnZTo6ZGVsZXRlQ2FjaGVGb3JPcmlnaW4pOgorICAgICAgICAoV2ViQ29yZTo6QXBw
bGljYXRpb25DYWNoZVN0b3JhZ2U6OkFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlKToKKyAgICAgICAg
KFdlYkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpjYWNoZURpcmVjdG9yeSBjb25zdCk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6Y2Fj
aGVHcm91cFNpemUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNo
ZVN0b3JhZ2U6OmdldE9yaWdpbnNXaXRoQ2FjaGUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29y
ZTo6QXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OmNyZWF0ZSk6IERlbGV0ZWQuCisgICAgICAgICog
bG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmg6CisgICAgICAgIChXZWJD
b3JlOjpBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6Y3JlYXRlKToKKwogMjAxOC0wNS0yNSAgWmFs
YW4gQnVqdGFzICA8emFsYW5AYXBwbGUuY29tPgogCiAgICAgICAgIFtMRkNdIEltcGxlbWVudCBi
b3JkZXIgYW5kIHBhZGRpbmcgY29tcHV0YXRpb24KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
Q2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggNGM3MzMxYjI2ZGM3NzY1
M2I0MWExYWE4MzQyMzc0MmRjYjRlZDU2My4uOTM0OGU5NjNmNmJiYjZlOTFiZTVhOGU1YzNkM2Zl
NmMzNmJkMGM2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAxOC0wNS0yNSAgQ2hyaXMg
RHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIE1pbm9yIEFwcGxpY2F0aW9uQ2Fj
aGVTdG9yYWdlIGNsZWFuIHVwCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xODU5ODQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICAqIFVJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6ZmV0Y2hEYXRhQW5kQXBwbHkpOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQYWdlLmNw
cDoKKyAgICAgICAgKFdLQnVuZGxlUGFnZUNvcHlPcmlnaW5zV2l0aEFwcGxpY2F0aW9uQ2FjaGUp
OgorCiAyMDE4LTA1LTI1ICBEYXZpZCBLaWx6ZXIgIDxkZGtpbHplckBhcHBsZS5jb20+CiAKICAg
ICAgICAgRml4IGlzc3VlcyB3aXRoIC1kZWFsbG9jIG1ldGhvZHMgZm91bmQgYnkgY2xhbmcgc3Rh
dGljIGFuYWx5emVyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VM
b2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKaW5kZXggOGQ3NWM2MjQxMzg3
NTA4ODYxMWNhNTRlMDRmNTM1MzIyYzlkNjI5NC4uMDA0MWI4NTJjMDZmNmI3OGI1ZDZlOWEwYzNh
Mjc4ZWY0NjhkNGEwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdl
TG9nCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEz
IEBACisyMDE4LTA1LTI1ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAg
ICAgTWlub3IgQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UgY2xlYW4gdXAKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4NTk4NAorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViQXBw
bGljYXRpb25DYWNoZS5tbToKKyAgICAgICAgKCtbV2ViQXBwbGljYXRpb25DYWNoZSBvcmlnaW5z
V2l0aENhY2hlXSk6CisKIDIwMTgtMDUtMjUgIERhdmlkIEtpbHplciAgPGRka2lsemVyQGFwcGxl
LmNvbT4KIAogICAgICAgICBGaXggaXNzdWVzIHdpdGggLWRlYWxsb2MgbWV0aG9kcyBmb3VuZCBi
eSBjbGFuZyBzdGF0aWMgYW5hbHl6ZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
d2luL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxvZwppbmRleCA0
MjVmNDliMGI4YWMyODI0OWJlODZlMDg3MGQ3MWE4MzNhZWY1NjA4Li41MTk5NTZkYmZhZDkwNjMy
NTIyMjI5MGQ3NmI2NTFkYTViZGE2Y2MxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L3dpbi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMTMgQEAKKzIwMTgtMDUtMjUgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNv
bT4KKworICAgICAgICBNaW5vciBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZSBjbGVhbiB1cAorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTg1OTg0CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJBcHBsaWNh
dGlvbkNhY2hlLmNwcDoKKyAgICAgICAgKFdlYkFwcGxpY2F0aW9uQ2FjaGU6Om9yaWdpbnNXaXRo
Q2FjaGUpOgorCiAyMDE4LTA1LTI0ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAK
ICAgICAgICAgUmVkdWNlIGNvcHlpbmcgb2YgRm9udENhc2NhZGVEZXNjcmlwdGlvbiBvYmplY3Rz
IGJ5IG1vdmluZyB0aGVtIGFyb3VuZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5jcHAKaW5kZXggZmYyOTM4OTk3
MDZkZTg5NWNlZjc1MDNjMGU4NTdmYWQyZmUxMjhkNi4uZWRjYjhjMjhkZjJlZTkzMTBkODBhOWM1
MmIwYTA4ZmVkMjlkMjZjNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNh
Y2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuY3BwCkBAIC0zNTYsMTEgKzM1Niw2
IEBAIHZvaWQgQXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OmNhY2hlR3JvdXBNYWRlT2Jzb2xldGUo
QXBwbGljYXRpb25DYWNoZUdyb3VwJiBncm91CiAgICAgbV9jYWNoZUhvc3RTZXQucmVtb3ZlKHVy
bEhvc3RIYXNoKGdyb3VwLm1hbmlmZXN0VVJMKCkpKTsKIH0KIAotY29uc3QgU3RyaW5nJiBBcHBs
aWNhdGlvbkNhY2hlU3RvcmFnZTo6Y2FjaGVEaXJlY3RvcnkoKSBjb25zdAotewotICAgIHJldHVy
biBtX2NhY2hlRGlyZWN0b3J5OwotfQotCiB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpz
ZXRNYXhpbXVtU2l6ZShpbnQ2NF90IHNpemUpCiB7CiAgICAgbV9tYXhpbXVtU2l6ZSA9IHNpemU7
CkBAIC0xMzE4LDExICsxMzEzLDEwIEBAIGJvb2wgQXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6Ondy
aXRlRGF0YVRvVW5pcXVlRmlsZUluRGlyZWN0b3J5KFNoYXJlZEJ1ZmZlciYgZGF0CiAgICAgcmV0
dXJuIHRydWU7CiB9CiAKLWJvb2wgQXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OmdldE1hbmlmZXN0
VVJMcyhWZWN0b3I8VVJMPiogdXJscykKK2Jvb2wgQXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6Omdl
dE1hbmlmZXN0VVJMcyhWZWN0b3I8VVJMPiYgdXJscykKIHsKICAgICBTUUxpdGVUcmFuc2FjdGlv
bkluUHJvZ3Jlc3NBdXRvQ291bnRlciB0cmFuc2FjdGlvbkNvdW50ZXI7CiAKLSAgICBBU1NFUlQo
dXJscyk7CiAgICAgb3BlbkRhdGFiYXNlKGZhbHNlKTsKICAgICBpZiAoIW1fZGF0YWJhc2UuaXNP
cGVuKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTEzMzMsMzkgKzEzMjcsMTEgQEAgYm9v
bCBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6Z2V0TWFuaWZlc3RVUkxzKFZlY3RvcjxVUkw+KiB1
cmxzKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICB3aGlsZSAoc2VsZWN0VVJMcy5zdGVw
KCkgPT0gU1FMSVRFX1JPVykKLSAgICAgICAgdXJscy0+YXBwZW5kKFVSTChQYXJzZWRVUkxTdHJp
bmcsIHNlbGVjdFVSTHMuZ2V0Q29sdW1uVGV4dCgwKSkpOworICAgICAgICB1cmxzLmFwcGVuZChV
UkwoUGFyc2VkVVJMU3RyaW5nLCBzZWxlY3RVUkxzLmdldENvbHVtblRleHQoMCkpKTsKIAogICAg
IHJldHVybiB0cnVlOwogfQogCi1ib29sIEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpjYWNoZUdy
b3VwU2l6ZShjb25zdCBTdHJpbmcmIG1hbmlmZXN0VVJMLCBpbnQ2NF90KiBzaXplKQotewotICAg
IFNRTGl0ZVRyYW5zYWN0aW9uSW5Qcm9ncmVzc0F1dG9Db3VudGVyIHRyYW5zYWN0aW9uQ291bnRl
cjsKLQotICAgIEFTU0VSVChzaXplKTsKLSAgICBvcGVuRGF0YWJhc2UoZmFsc2UpOwotICAgIGlm
ICghbV9kYXRhYmFzZS5pc09wZW4oKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgU1FM
aXRlU3RhdGVtZW50IHN0YXRlbWVudChtX2RhdGFiYXNlLCAiU0VMRUNUIHN1bShDYWNoZXMuc2l6
ZSkgRlJPTSBDYWNoZXMgSU5ORVIgSk9JTiBDYWNoZUdyb3VwcyBPTiBDYWNoZXMuY2FjaGVHcm91
cD1DYWNoZUdyb3Vwcy5pZCBXSEVSRSBDYWNoZUdyb3Vwcy5tYW5pZmVzdFVSTD0/Iik7Ci0gICAg
aWYgKHN0YXRlbWVudC5wcmVwYXJlKCkgIT0gU1FMSVRFX09LKQotICAgICAgICByZXR1cm4gZmFs
c2U7Ci0KLSAgICBzdGF0ZW1lbnQuYmluZFRleHQoMSwgbWFuaWZlc3RVUkwpOwotCi0gICAgaW50
IHJlc3VsdCA9IHN0YXRlbWVudC5zdGVwKCk7Ci0gICAgaWYgKHJlc3VsdCA9PSBTUUxJVEVfRE9O
RSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgaWYgKHJlc3VsdCAhPSBTUUxJVEVfUk9X
KSB7Ci0gICAgICAgIExPR19FUlJPUigiQ291bGQgbm90IGdldCB0aGUgc2l6ZSBvZiB0aGUgY2Fj
aGUgZ3JvdXAsIGVycm9yIFwiJXNcIiIsIG1fZGF0YWJhc2UubGFzdEVycm9yTXNnKCkpOwotICAg
ICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotCi0gICAgKnNpemUgPSBzdGF0ZW1lbnQuZ2V0Q29s
dW1uSW50NjQoMCk7Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KIGJvb2wgQXBwbGljYXRpb25DYWNo
ZVN0b3JhZ2U6OmRlbGV0ZUNhY2hlR3JvdXBSZWNvcmQoY29uc3QgU3RyaW5nJiBtYW5pZmVzdFVS
TCkKIHsKICAgICBBU1NFUlQoU1FMaXRlRGF0YWJhc2VUcmFja2VyOjpoYXNUcmFuc2FjdGlvbklu
UHJvZ3Jlc3MoKSk7CkBAIC0xNDAzLDggKzEzNjksNyBAQCBib29sIEFwcGxpY2F0aW9uQ2FjaGVT
dG9yYWdlOjpkZWxldGVDYWNoZUdyb3VwKGNvbnN0IFN0cmluZyYgbWFuaWZlc3RVUkwpCiAgICAg
U1FMaXRlVHJhbnNhY3Rpb24gZGVsZXRlVHJhbnNhY3Rpb24obV9kYXRhYmFzZSk7CiAKICAgICAv
LyBDaGVjayB0byBzZWUgaWYgdGhlIGdyb3VwIGlzIGluIG1lbW9yeS4KLSAgICBhdXRvKiBncm91
cCA9IG1fY2FjaGVzSW5NZW1vcnkuZ2V0KG1hbmlmZXN0VVJMKTsKLSAgICBpZiAoZ3JvdXApCisg
ICAgaWYgKGF1dG8qIGdyb3VwID0gbV9jYWNoZXNJbk1lbW9yeS5nZXQobWFuaWZlc3RVUkwpKQog
ICAgICAgICBjYWNoZUdyb3VwTWFkZU9ic29sZXRlKCpncm91cCk7CiAgICAgZWxzZSB7CiAgICAg
ICAgIC8vIFRoZSBjYWNoZSBncm91cCBpcyBub3QgaW4gbWVtb3J5LCBzbyByZW1vdmUgaXQgZnJv
bSB0aGUgZGlzay4KQEAgLTE1MDYsMTUgKzE0NzEsMTcgQEAgbG9uZyBsb25nIEFwcGxpY2F0aW9u
Q2FjaGVTdG9yYWdlOjpmbGF0RmlsZUFyZWFTaXplKCkKICAgICByZXR1cm4gdG90YWxTaXplOwog
fQogCi12b2lkIEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpnZXRPcmlnaW5zV2l0aENhY2hlKEhh
c2hTZXQ8UmVmUHRyPFNlY3VyaXR5T3JpZ2luPj4mIG9yaWdpbnMpCitIYXNoU2V0PFJlZlB0cjxT
ZWN1cml0eU9yaWdpbj4+IEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpvcmlnaW5zV2l0aENhY2hl
KCkKIHsKICAgICBWZWN0b3I8VVJMPiB1cmxzOwotICAgIGdldE1hbmlmZXN0VVJMcygmdXJscyk7
CisgICAgZ2V0TWFuaWZlc3RVUkxzKHVybHMpOwogCiAgICAgLy8gTXVsdGlwbGUgbWFuaWZlc3Qg
VVJMcyBtaWdodCBzaGFyZSB0aGUgc2FtZSBTZWN1cml0eU9yaWdpbiwgc28gd2UgbWlnaHQgYmUg
Y3JlYXRpbmcgZXh0cmEsIHdhc3RlZCBvcmlnaW5zIGhlcmUuCiAgICAgLy8gVGhlIGN1cnJlbnQg
c2NoZW1hIGRvZXNuJ3QgYWxsb3cgZm9yIGEgbW9yZSBlZmZpY2llbnQgd2F5IG9mIGJ1aWxkaW5n
IHRoaXMgbGlzdC4KKyAgICBIYXNoU2V0PFJlZlB0cjxTZWN1cml0eU9yaWdpbj4+IG9yaWdpbnM7
CiAgICAgZm9yIChhdXRvJiB1cmwgOiB1cmxzKQogICAgICAgICBvcmlnaW5zLmFkZChTZWN1cml0
eU9yaWdpbjo6Y3JlYXRlKHVybCkpOworICAgIHJldHVybiBvcmlnaW5zOwogfQogCiB2b2lkIEFw
cGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpkZWxldGVBbGxFbnRyaWVzKCkKQEAgLTE1MjUsOSArMTQ5
Miw3IEBAIHZvaWQgQXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OmRlbGV0ZUFsbEVudHJpZXMoKQog
CiB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpkZWxldGVBbGxDYWNoZXMoKQogewotICAg
IEhhc2hTZXQ8UmVmUHRyPFNlY3VyaXR5T3JpZ2luPj4gb3JpZ2luczsKLQotICAgIGdldE9yaWdp
bnNXaXRoQ2FjaGUob3JpZ2lucyk7CisgICAgYXV0byBvcmlnaW5zID0gb3JpZ2luc1dpdGhDYWNo
ZSgpOwogICAgIGZvciAoYXV0byYgb3JpZ2luIDogb3JpZ2lucykKICAgICAgICAgZGVsZXRlQ2Fj
aGVGb3JPcmlnaW4oKm9yaWdpbik7CiAKQEAgLTE1MzcsNyArMTUwMiw3IEBAIHZvaWQgQXBwbGlj
YXRpb25DYWNoZVN0b3JhZ2U6OmRlbGV0ZUFsbENhY2hlcygpCiB2b2lkIEFwcGxpY2F0aW9uQ2Fj
aGVTdG9yYWdlOjpkZWxldGVDYWNoZUZvck9yaWdpbihjb25zdCBTZWN1cml0eU9yaWdpbiYgc2Vj
dXJpdHlPcmlnaW4pCiB7CiAgICAgVmVjdG9yPFVSTD4gdXJsczsKLSAgICBpZiAoIWdldE1hbmlm
ZXN0VVJMcygmdXJscykpIHsKKyAgICBpZiAoIWdldE1hbmlmZXN0VVJMcyh1cmxzKSkgewogICAg
ICAgICBMT0dfRVJST1IoIkZhaWxlZCB0byByZXRyaWV2ZSBBcHBsaWNhdGlvbkNhY2hlIG1hbmlm
ZXN0IFVSTHMiKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTE1NjUsMTUgKzE1MzAsNyBA
QCBpbnQ2NF90IEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpkaXNrVXNhZ2VGb3JPcmlnaW4oY29u
c3QgU2VjdXJpdHlPcmlnaW4mIHNlY3VyaQogQXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OkFwcGxp
Y2F0aW9uQ2FjaGVTdG9yYWdlKGNvbnN0IFN0cmluZyYgY2FjaGVEaXJlY3RvcnksIGNvbnN0IFN0
cmluZyYgZmxhdEZpbGVTdWJkaXJlY3RvcnlOYW1lKQogICAgIDogbV9jYWNoZURpcmVjdG9yeShj
YWNoZURpcmVjdG9yeSkKICAgICAsIG1fZmxhdEZpbGVTdWJkaXJlY3RvcnlOYW1lKGZsYXRGaWxl
U3ViZGlyZWN0b3J5TmFtZSkKLSAgICAsIG1fbWF4aW11bVNpemUoQXBwbGljYXRpb25DYWNoZVN0
b3JhZ2U6Om5vUXVvdGEoKSkKLSAgICAsIG1faXNNYXhpbXVtU2l6ZVJlYWNoZWQoZmFsc2UpCi0g
ICAgLCBtX2RlZmF1bHRPcmlnaW5RdW90YShBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6bm9RdW90
YSgpKQogewogfQogCi1SZWY8QXBwbGljYXRpb25DYWNoZVN0b3JhZ2U+IEFwcGxpY2F0aW9uQ2Fj
aGVTdG9yYWdlOjpjcmVhdGUoY29uc3QgU3RyaW5nJiBjYWNoZURpcmVjdG9yeSwgY29uc3QgU3Ry
aW5nJiBmbGF0RmlsZVN1YmRpcmVjdG9yeU5hbWUpCi17Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpu
ZXcgQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UoY2FjaGVEaXJlY3RvcnksIGZsYXRGaWxlU3ViZGly
ZWN0b3J5TmFtZSkpOwotfQotCi19Cit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2Uu
aCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFn
ZS5oCmluZGV4IDlkMTdhMWJjZDA2YTZhYzExMWEwYWNhYTYwNzY0ZjZiMTU0MDUwZmYuLmE1ZTE0
NjU0MDFlM2JjZWJhNDQ1YjgzYTM2YzQ2NmI1ZDU5YTNlZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5oCkBA
IC01MSwxMCArNTEsMTIgQEAgcHVibGljOgogICAgICAgICBEaXNrT3JPcGVyYXRpb25GYWlsdXJl
CiAgICAgfTsKIAotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8QXBwbGljYXRpb25DYWNo
ZVN0b3JhZ2U+IGNyZWF0ZShjb25zdCBTdHJpbmcmIGNhY2hlRGlyZWN0b3J5LCBjb25zdCBTdHJp
bmcmIGZsYXRGaWxlU3ViZGlyZWN0b3J5TmFtZSk7CisgICAgc3RhdGljIFJlZjxBcHBsaWNhdGlv
bkNhY2hlU3RvcmFnZT4gY3JlYXRlKGNvbnN0IFN0cmluZyYgY2FjaGVEaXJlY3RvcnksIGNvbnN0
IFN0cmluZyYgZmxhdEZpbGVTdWJkaXJlY3RvcnlOYW1lKQorICAgIHsKKyAgICAgICAgcmV0dXJu
IGFkb3B0UmVmKCpuZXcgQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UoY2FjaGVEaXJlY3RvcnksIGZs
YXRGaWxlU3ViZGlyZWN0b3J5TmFtZSkpOworICAgIH0KKwogCi0gICAgY29uc3QgU3RyaW5nJiBj
YWNoZURpcmVjdG9yeSgpIGNvbnN0OwotICAgIAogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0
TWF4aW11bVNpemUoaW50NjRfdCBzaXplKTsKICAgICBXRUJDT1JFX0VYUE9SVCBpbnQ2NF90IG1h
eGltdW1TaXplKCkgY29uc3Q7CiAgICAgYm9vbCBpc01heGltdW1TaXplUmVhY2hlZCgpIGNvbnN0
OwpAQCAtNzIsNyArNzQsNiBAQCBwdWJsaWM6CiAgICAgQXBwbGljYXRpb25DYWNoZUdyb3VwKiBm
YWxsYmFja0NhY2hlR3JvdXBGb3JVUkwoY29uc3QgVVJMJik7IC8vIENhY2hlIHRoYXQgaGFzIGEg
ZmFsbGJhY2sgZW50cnkgdG8gbG9hZCBhIG1haW4gcmVzb3VyY2UgZnJvbSBpZiBub3JtYWwgbG9h
ZGluZyBmYWlscy4KIAogICAgIEFwcGxpY2F0aW9uQ2FjaGVHcm91cCogZmluZE9yQ3JlYXRlQ2Fj
aGVHcm91cChjb25zdCBVUkwmIG1hbmlmZXN0VVJMKTsKLSAgICBBcHBsaWNhdGlvbkNhY2hlR3Jv
dXAqIGZpbmRJbk1lbW9yeUNhY2hlR3JvdXAoY29uc3QgVVJMJiBtYW5pZmVzdFVSTCkgY29uc3Q7
CiAgICAgdm9pZCBjYWNoZUdyb3VwRGVzdHJveWVkKEFwcGxpY2F0aW9uQ2FjaGVHcm91cCYpOwog
ICAgIHZvaWQgY2FjaGVHcm91cE1hZGVPYnNvbGV0ZShBcHBsaWNhdGlvbkNhY2hlR3JvdXAmKTsK
IApAQCAtODYsMTIgKzg3LDcgQEAgcHVibGljOgogCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBl
bXB0eSgpOwogCi0gICAgYm9vbCBnZXRNYW5pZmVzdFVSTHMoVmVjdG9yPFVSTD4qIHVybHMpOwot
ICAgIGJvb2wgY2FjaGVHcm91cFNpemUoY29uc3QgU3RyaW5nJiBtYW5pZmVzdFVSTCwgaW50NjRf
dCogc2l6ZSk7Ci0gICAgYm9vbCBkZWxldGVDYWNoZUdyb3VwKGNvbnN0IFN0cmluZyYgbWFuaWZl
c3RVUkwpOwotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgdmFjdXVtRGF0YWJhc2VGaWxlKCk7Ci0K
LSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGdldE9yaWdpbnNXaXRoQ2FjaGUoSGFzaFNldDxSZWZQ
dHI8U2VjdXJpdHlPcmlnaW4+LCBTZWN1cml0eU9yaWdpbkhhc2g+Jik7CisgICAgV0VCQ09SRV9F
WFBPUlQgSGFzaFNldDxSZWZQdHI8U2VjdXJpdHlPcmlnaW4+PiBvcmlnaW5zV2l0aENhY2hlKCk7
CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkZWxldGVBbGxFbnRyaWVzKCk7CiAKICAgICAvLyBG
SVhNRTogVGhpcyBzaG91bGQgYmUgY29uc29saWRhdGVkIHdpdGggZGVsZXRlQWxsRW50cmllcygp
LgpAQCAtMTA3LDEwICsxMDMsMTQgQEAgcHVibGljOgogICAgIHN0YXRpYyBpbnQ2NF90IG5vUXVv
dGEoKSB7IHJldHVybiBzdGQ6Om51bWVyaWNfbGltaXRzPGludDY0X3Q+OjptYXgoKTsgfQogCiBw
cml2YXRlOgotICAgIEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlKGNvbnN0IFN0cmluZyYgY2FjaGVE
aXJlY3RvcnksIGNvbnN0IFN0cmluZyYgZmxhdEZpbGVTdWJkaXJlY3RvcnlOYW1lKTsKKyAgICBX
RUJDT1JFX0VYUE9SVCBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZShjb25zdCBTdHJpbmcmIGNhY2hl
RGlyZWN0b3J5LCBjb25zdCBTdHJpbmcmIGZsYXRGaWxlU3ViZGlyZWN0b3J5TmFtZSk7CiAKICAg
ICBSZWZQdHI8QXBwbGljYXRpb25DYWNoZT4gbG9hZENhY2hlKHVuc2lnbmVkIHN0b3JhZ2VJRCk7
CiAgICAgQXBwbGljYXRpb25DYWNoZUdyb3VwKiBsb2FkQ2FjaGVHcm91cChjb25zdCBVUkwmIG1h
bmlmZXN0VVJMKTsKKyAgICBib29sIGdldE1hbmlmZXN0VVJMcyhWZWN0b3I8VVJMPiYgdXJscyk7
CisgICAgQXBwbGljYXRpb25DYWNoZUdyb3VwKiBmaW5kSW5NZW1vcnlDYWNoZUdyb3VwKGNvbnN0
IFVSTCYgbWFuaWZlc3RVUkwpIGNvbnN0OworICAgIGJvb2wgZGVsZXRlQ2FjaGVHcm91cChjb25z
dCBTdHJpbmcmIG1hbmlmZXN0VVJMKTsKKyAgICB2b2lkIHZhY3V1bURhdGFiYXNlRmlsZSgpOwog
ICAgIAogICAgIHVzaW5nIFJlc291cmNlU3RvcmFnZUlESm91cm5hbCA9IFN0b3JhZ2VJREpvdXJu
YWw8QXBwbGljYXRpb25DYWNoZVJlc291cmNlPjsKICAgICB1c2luZyBHcm91cFN0b3JhZ2VJREpv
dXJuYWwgPSBTdG9yYWdlSURKb3VybmFsPEFwcGxpY2F0aW9uQ2FjaGVHcm91cD47CkBAIC0xMjEs
NyArMTIxLDcgQEAgcHJpdmF0ZToKICAgICBib29sIGRlbGV0ZUNhY2hlR3JvdXBSZWNvcmQoY29u
c3QgU3RyaW5nJiBtYW5pZmVzdFVSTCk7CiAKICAgICBib29sIGVuc3VyZU9yaWdpblJlY29yZChj
b25zdCBTZWN1cml0eU9yaWdpbiopOwotICAgIGJvb2wgc2hvdWxkU3RvcmVSZXNvdXJjZUFzRmxh
dEZpbGUoQXBwbGljYXRpb25DYWNoZVJlc291cmNlKik7CisgICAgc3RhdGljIGJvb2wgc2hvdWxk
U3RvcmVSZXNvdXJjZUFzRmxhdEZpbGUoQXBwbGljYXRpb25DYWNoZVJlc291cmNlKik7CiAgICAg
dm9pZCBkZWxldGVUYWJsZXMoKTsKICAgICBib29sIHdyaXRlRGF0YVRvVW5pcXVlRmlsZUluRGly
ZWN0b3J5KFNoYXJlZEJ1ZmZlciYsIGNvbnN0IFN0cmluZyYgZGlyZWN0b3J5LCBTdHJpbmcmIG91
dEZpbGVuYW1lLCBjb25zdCBTdHJpbmcmIGZpbGVFeHRlbnNpb24pOwogCkBAIC0xNDIsMTAgKzE0
MiwxMCBAQCBwcml2YXRlOgogICAgIGNvbnN0IFN0cmluZyBtX2ZsYXRGaWxlU3ViZGlyZWN0b3J5
TmFtZTsKICAgICBTdHJpbmcgbV9jYWNoZUZpbGU7CiAKLSAgICBpbnQ2NF90IG1fbWF4aW11bVNp
emU7Ci0gICAgYm9vbCBtX2lzTWF4aW11bVNpemVSZWFjaGVkOworICAgIGludDY0X3QgbV9tYXhp
bXVtU2l6ZSB7IG5vUXVvdGEoKSB9OworICAgIGJvb2wgbV9pc01heGltdW1TaXplUmVhY2hlZCB7
IGZhbHNlIH07CiAKLSAgICBpbnQ2NF90IG1fZGVmYXVsdE9yaWdpblF1b3RhOworICAgIGludDY0
X3QgbV9kZWZhdWx0T3JpZ2luUXVvdGEgeyBub1F1b3RhKCkgfTsKIAogICAgIFNRTGl0ZURhdGFi
YXNlIG1fZGF0YWJhc2U7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAKaW5kZXggMjY2MzZkMWQ1NDYwOGRhMjQz
OGVkMjVjNzc1ZTJkMjQxMGQxMTFiZC4uZDFjZmM2NDc3N2YzYTM2ZDBhYjdkYzMxM2RjYTg1N2Zl
NGEwOTk2MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEv
V2Vic2l0ZURhdGFTdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0
ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAKQEAgLTQ0Nyw5ICs0NDcsOCBAQCB2b2lkIFdlYnNp
dGVEYXRhU3RvcmU6OmZldGNoRGF0YUFuZEFwcGx5KE9wdGlvblNldDxXZWJzaXRlRGF0YVR5cGU+
IGRhdGFUeXBlcywgTwogCiAgICAgICAgICAgICBXZWJzaXRlRGF0YSB3ZWJzaXRlRGF0YTsKIAot
ICAgICAgICAgICAgSGFzaFNldDxSZWZQdHI8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4+PiBvcmln
aW5zOwogICAgICAgICAgICAgLy8gRklYTUU6IGdldE9yaWdpbnNXaXRoQ2FjaGUgc2hvdWxkIHJl
dHVybiBhIGNvbGxlY3Rpb24gb2YgU2VjdXJpdHlPcmlnaW5EYXRhcy4KLSAgICAgICAgICAgIHN0
b3JhZ2UtPmdldE9yaWdpbnNXaXRoQ2FjaGUob3JpZ2lucyk7CisgICAgICAgICAgICBhdXRvIG9y
aWdpbnMgPSBzdG9yYWdlLT5vcmlnaW5zV2l0aENhY2hlKCk7CiAKICAgICAgICAgICAgIGZvciAo
YXV0byYgb3JpZ2luIDogb3JpZ2lucykgewogICAgICAgICAgICAgICAgIHVpbnQ2NF90IHNpemUg
PSBmZXRjaE9wdGlvbnMuY29udGFpbnMoV2Vic2l0ZURhdGFGZXRjaE9wdGlvbjo6Q29tcHV0ZVNp
emVzKSA/IHN0b3JhZ2UtPmRpc2tVc2FnZUZvck9yaWdpbigqb3JpZ2luKSA6IDA7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5k
bGVQYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkv
Yy9XS0J1bmRsZVBhZ2UuY3BwCmluZGV4IDVlOGYxMTdkODI1MmZiZmU0N2Y1NzdlMmRiMDA4ZTRi
MjhlMmNkNDguLmEwZWE0ZWM1M2U2YmVhZWVlYTA5MDFmYWFiZmJkZTA1M2IwYzcxMGMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1
bmRsZVBhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRs
ZS9BUEkvYy9XS0J1bmRsZVBhZ2UuY3BwCkBAIC02ODYsOCArNjg2LDcgQEAgdm9pZCBXS0J1bmRs
ZVBhZ2VSZXNldEFwcGxpY2F0aW9uQ2FjaGVPcmlnaW5RdW90YShXS0J1bmRsZVBhZ2VSZWYgcGFn
ZSwgV0tTdHJpbmcKIAogV0tBcnJheVJlZiBXS0J1bmRsZVBhZ2VDb3B5T3JpZ2luc1dpdGhBcHBs
aWNhdGlvbkNhY2hlKFdLQnVuZGxlUGFnZVJlZiBwYWdlKQogewotICAgIEhhc2hTZXQ8UmVmUHRy
PFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luPj4gb3JpZ2luczsKLSAgICB0b0ltcGwocGFnZSktPmNv
cmVQYWdlKCktPmFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlKCkuZ2V0T3JpZ2luc1dpdGhDYWNoZShv
cmlnaW5zKTsKKyAgICBhdXRvIG9yaWdpbnMgPSB0b0ltcGwocGFnZSktPmNvcmVQYWdlKCktPmFw
cGxpY2F0aW9uQ2FjaGVTdG9yYWdlKCkub3JpZ2luc1dpdGhDYWNoZSgpOwogCiAgICAgVmVjdG9y
PFJlZlB0cjxBUEk6Ok9iamVjdD4+IG9yaWdpbklkZW50aWZpZXJzOwogICAgIG9yaWdpbklkZW50
aWZpZXJzLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkob3JpZ2lucy5zaXplKCkpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQXBwbGljYXRpb25D
YWNoZS5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkFwcGxp
Y2F0aW9uQ2FjaGUubW0KaW5kZXggYWIyYzEzNjgyYTg4Yzc1ODViNGYzZjQ5YTU1ZGUwNzc0OGVk
OWVhMC4uZjZiNTQ0NWVmNzA1MjczMzAyNjViMWQ3ZTIyNzJmNTY0OTZiYzk4NiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQXBwbGljYXRpb25D
YWNoZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJB
cHBsaWNhdGlvbkNhY2hlLm1tCkBAIC0xMjMsOCArMTIzLDcgQEAgKyAodm9pZClkZWxldGVDYWNo
ZUZvck9yaWdpbjooV2ViU2VjdXJpdHlPcmlnaW4gKilvcmlnaW4KIAogKyAoTlNBcnJheSAqKW9y
aWdpbnNXaXRoQ2FjaGUKIHsKLSAgICBIYXNoU2V0PFJlZlB0cjxTZWN1cml0eU9yaWdpbj4+IGNv
cmVPcmlnaW5zOwotICAgIHdlYkFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlKCkuZ2V0T3JpZ2luc1dp
dGhDYWNoZShjb3JlT3JpZ2lucyk7CisgICAgYXV0byBjb3JlT3JpZ2lucyA9IHdlYkFwcGxpY2F0
aW9uQ2FjaGVTdG9yYWdlKCkub3JpZ2luc1dpdGhDYWNoZSgpOwogICAgIAogICAgIE5TTXV0YWJs
ZUFycmF5ICp3ZWJPcmlnaW5zID0gW1tbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRXaXRoQ2Fw
YWNpdHk6Y29yZU9yaWdpbnMuc2l6ZSgpXSBhdXRvcmVsZWFzZV07CiAgICAgCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJBcHBsaWNhdGlvbkNhY2hlLmNwcCBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvd2luL1dlYkFwcGxpY2F0aW9uQ2FjaGUuY3BwCmluZGV4IDFlYTkwMTc4
YWQ4ZDM4ZjI0MDg3NzU3NzJiOTc5MjUxM2FjYTQwM2QuLjhhZDNlMmU4YzQxMTdhZTAxMGEyZTRk
NGJhNzYyMzI4YTk1NWU0ZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dl
YkFwcGxpY2F0aW9uQ2FjaGUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkFw
cGxpY2F0aW9uQ2FjaGUuY3BwCkBAIC0xODcsOCArMTg3LDcgQEAgSFJFU1VMVCBXZWJBcHBsaWNh
dGlvbkNhY2hlOjpvcmlnaW5zV2l0aENhY2hlKElQcm9wZXJ0eUJhZyoqIG9yaWdpbnMpCiAgICAg
aWYgKCFvcmlnaW5zKQogICAgICAgICByZXR1cm4gRV9QT0lOVEVSOwogCi0gICAgSGFzaFNldDxS
ZWZQdHI8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4+PiBjb3JlT3JpZ2luczsKLSAgICBzdG9yYWdl
KCkuZ2V0T3JpZ2luc1dpdGhDYWNoZShjb3JlT3JpZ2lucyk7CisgICAgYXV0byBjb3JlT3JpZ2lu
cyA9IHN0b3JhZ2UoKS5vcmlnaW5zV2l0aENhY2hlKCk7CiAKICAgICBSZXRhaW5QdHI8Q0ZNdXRh
YmxlQXJyYXlSZWY+IGFycmF5SXRlbSA9IGFkb3B0Q0YoQ0ZBcnJheUNyZWF0ZU11dGFibGUoa0NG
QWxsb2NhdG9yRGVmYXVsdCwgY29yZU9yaWdpbnMuc2l6ZSgpLCAmTWFyc2hhbGxpbmdIZWxwZXJz
OjprSVVua25vd25BcnJheUNhbGxCYWNrcykpOwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>341298</attachid>
            <date>2018-05-25 10:36:42 -0700</date>
            <delta_ts>2018-05-25 11:40:33 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-185984-20180525103641.patch</filename>
            <type>text/plain</type>
            <size>17646</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjMyMTg5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjFlZTZmYzQzNTFlZmM0
OTNhMjY1MDJlYmIzZjdkYzc5OTgxOWE0My4uYTcyZjczMmM2NDRlN2Q1ZTE0NjMyM2I1MzY5MGVk
ZDZmMGNhN2NkZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI0IEBACisyMDE4LTA1LTI1ICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgTWlub3IgQXBwbGljYXRpb25D
YWNoZVN0b3JhZ2UgY2xlYW4gdXAKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE4NTk4NAorCisgICAgICAgIFJldmlld2VkIGJ5IFlvdWVubiBGYWJsZXQu
CisKKyAgICAgICAgKiBsb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OmdldE1hbmlmZXN0
VVJMcyk6CisgICAgICAgIChXZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6ZGVsZXRl
Q2FjaGVHcm91cCk6CisgICAgICAgIChXZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6
b3JpZ2luc1dpdGhDYWNoZSk6CisgICAgICAgIChXZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hlU3Rv
cmFnZTo6ZGVsZXRlQWxsQ2FjaGVzKToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9uQ2Fj
aGVTdG9yYWdlOjpkZWxldGVDYWNoZUZvck9yaWdpbik6CisgICAgICAgIChXZWJDb3JlOjpBcHBs
aWNhdGlvbkNhY2hlU3RvcmFnZTo6QXBwbGljYXRpb25DYWNoZVN0b3JhZ2UpOgorICAgICAgICAo
V2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OmNhY2hlRGlyZWN0b3J5IGNvbnN0KTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpjYWNo
ZUdyb3VwU2l6ZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hl
U3RvcmFnZTo6Z2V0T3JpZ2luc1dpdGhDYWNoZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3Jl
OjpBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6Y3JlYXRlKTogRGVsZXRlZC4KKyAgICAgICAgKiBs
b2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuaDoKKyAgICAgICAgKFdlYkNv
cmU6OkFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpjcmVhdGUpOgorCiAyMDE4LTA1LTI1ICBaYWxh
biBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CiAKICAgICAgICAgW0xGQ10gSW1wbGVtZW50IGJv
cmRlciBhbmQgcGFkZGluZyBjb21wdXRhdGlvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCA0YzczMzFiMjZkYzc3NjUz
YjQxYTFhYTgzNDIzNzQyZGNiNGVkNTYzLi45NWUzYzIxOTk3MzYzODU3ZjNkMjY0NTg1NTdhNDg1
ZDY3ODA2ODYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3Vy
Y2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDE4LTA1LTI1ICBDaHJpcyBE
dW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgTWlub3IgQXBwbGljYXRpb25DYWNo
ZVN0b3JhZ2UgY2xlYW4gdXAKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE4NTk4NAorCisgICAgICAgIFJldmlld2VkIGJ5IFlvdWVubiBGYWJsZXQuCisK
KyAgICAgICAgKiBVSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OmZldGNoRGF0YUFuZEFwcGx5KToKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFnZS5jcHA6
CisgICAgICAgIChXS0J1bmRsZVBhZ2VDb3B5T3JpZ2luc1dpdGhBcHBsaWNhdGlvbkNhY2hlKToK
KwogMjAxOC0wNS0yNSAgRGF2aWQgS2lsemVyICA8ZGRraWx6ZXJAYXBwbGUuY29tPgogCiAgICAg
ICAgIEZpeCBpc3N1ZXMgd2l0aCAtZGVhbGxvYyBtZXRob2RzIGZvdW5kIGJ5IGNsYW5nIHN0YXRp
YyBhbmFseXplcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9n
IGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCmluZGV4IDhkNzVjNjI0MTM4NzUw
ODg2MTFjYTU0ZTA0ZjUzNTMyMmM5ZDYyOTQuLmUwMWI0NTNkZWQwOWJlZjI1YmZiNzdhYzUxZGE1
MjhjYmZjMzBlZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxv
ZworKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBA
QAorMjAxOC0wNS0yNSAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAg
IE1pbm9yIEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlIGNsZWFuIHVwCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODU5ODQKKworICAgICAgICBSZXZpZXdl
ZCBieSBZb3Vlbm4gRmFibGV0LgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViQXBwbGlj
YXRpb25DYWNoZS5tbToKKyAgICAgICAgKCtbV2ViQXBwbGljYXRpb25DYWNoZSBvcmlnaW5zV2l0
aENhY2hlXSk6CisKIDIwMTgtMDUtMjUgIERhdmlkIEtpbHplciAgPGRka2lsemVyQGFwcGxlLmNv
bT4KIAogICAgICAgICBGaXggaXNzdWVzIHdpdGggLWRlYWxsb2MgbWV0aG9kcyBmb3VuZCBieSBj
bGFuZyBzdGF0aWMgYW5hbHl6ZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2lu
L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxvZwppbmRleCA0MjVm
NDliMGI4YWMyODI0OWJlODZlMDg3MGQ3MWE4MzNhZWY1NjA4Li5jZTUzNWY0MWE5ZjQ4ZGJjZTEz
ZWUyMTM2NGExOTUwOTA1NTExZWY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dp
bi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMTMgQEAKKzIwMTgtMDUtMjUgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4K
KworICAgICAgICBNaW5vciBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZSBjbGVhbiB1cAorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTg1OTg0CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgWW91ZW5uIEZhYmxldC4KKworICAgICAgICAqIFdlYkFwcGxpY2F0aW9u
Q2FjaGUuY3BwOgorICAgICAgICAoV2ViQXBwbGljYXRpb25DYWNoZTo6b3JpZ2luc1dpdGhDYWNo
ZSk6CisKIDIwMTgtMDUtMjQgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAg
ICAgICBSZWR1Y2UgY29weWluZyBvZiBGb250Q2FzY2FkZURlc2NyaXB0aW9uIG9iamVjdHMgYnkg
bW92aW5nIHRoZW0gYXJvdW5kCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBw
Y2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmNwcAppbmRleCBmZjI5Mzg5OTcwNmRl
ODk1Y2VmNzUwM2MwZTg1N2ZhZDJmZTEyOGQ2Li4wNDg2YzdmMmNlMjdmM2VjYTllN2U1M2M3ZjYx
ODU5YmNjNTExYzAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUv
QXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9h
cHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5jcHAKQEAgLTM1NiwxMSArMzU2LDYgQEAg
dm9pZCBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6Y2FjaGVHcm91cE1hZGVPYnNvbGV0ZShBcHBs
aWNhdGlvbkNhY2hlR3JvdXAmIGdyb3UKICAgICBtX2NhY2hlSG9zdFNldC5yZW1vdmUodXJsSG9z
dEhhc2goZ3JvdXAubWFuaWZlc3RVUkwoKSkpOwogfQogCi1jb25zdCBTdHJpbmcmIEFwcGxpY2F0
aW9uQ2FjaGVTdG9yYWdlOjpjYWNoZURpcmVjdG9yeSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1f
Y2FjaGVEaXJlY3Rvcnk7Ci19Ci0KIHZvaWQgQXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OnNldE1h
eGltdW1TaXplKGludDY0X3Qgc2l6ZSkKIHsKICAgICBtX21heGltdW1TaXplID0gc2l6ZTsKQEAg
LTEzMTgsNTIgKzEzMTMsMjQgQEAgYm9vbCBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6d3JpdGVE
YXRhVG9VbmlxdWVGaWxlSW5EaXJlY3RvcnkoU2hhcmVkQnVmZmVyJiBkYXQKICAgICByZXR1cm4g
dHJ1ZTsKIH0KIAotYm9vbCBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6Z2V0TWFuaWZlc3RVUkxz
KFZlY3RvcjxVUkw+KiB1cmxzKQorc3RkOjpvcHRpb25hbDxWZWN0b3I8VVJMPj4gQXBwbGljYXRp
b25DYWNoZVN0b3JhZ2U6Om1hbmlmZXN0VVJMcygpCiB7CiAgICAgU1FMaXRlVHJhbnNhY3Rpb25J
blByb2dyZXNzQXV0b0NvdW50ZXIgdHJhbnNhY3Rpb25Db3VudGVyOwogCi0gICAgQVNTRVJUKHVy
bHMpOwogICAgIG9wZW5EYXRhYmFzZShmYWxzZSk7CiAgICAgaWYgKCFtX2RhdGFiYXNlLmlzT3Bl
bigpKQotICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CiAKICAgICBTUUxpdGVTdGF0ZW1lbnQgc2VsZWN0VVJMcyhtX2RhdGFiYXNlLCAiU0VMRUNUIG1h
bmlmZXN0VVJMIEZST00gQ2FjaGVHcm91cHMiKTsKIAogICAgIGlmIChzZWxlY3RVUkxzLnByZXBh
cmUoKSAhPSBTUUxJVEVfT0spCi0gICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKIAorICAgIFZlY3RvcjxVUkw+IHVybHM7CiAgICAgd2hpbGUgKHNlbGVj
dFVSTHMuc3RlcCgpID09IFNRTElURV9ST1cpCi0gICAgICAgIHVybHMtPmFwcGVuZChVUkwoUGFy
c2VkVVJMU3RyaW5nLCBzZWxlY3RVUkxzLmdldENvbHVtblRleHQoMCkpKTsKKyAgICAgICAgdXJs
cy5hcHBlbmQoVVJMKFBhcnNlZFVSTFN0cmluZywgc2VsZWN0VVJMcy5nZXRDb2x1bW5UZXh0KDAp
KSk7CiAKLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotYm9vbCBBcHBsaWNhdGlvbkNhY2hlU3RvcmFn
ZTo6Y2FjaGVHcm91cFNpemUoY29uc3QgU3RyaW5nJiBtYW5pZmVzdFVSTCwgaW50NjRfdCogc2l6
ZSkKLXsKLSAgICBTUUxpdGVUcmFuc2FjdGlvbkluUHJvZ3Jlc3NBdXRvQ291bnRlciB0cmFuc2Fj
dGlvbkNvdW50ZXI7Ci0KLSAgICBBU1NFUlQoc2l6ZSk7Ci0gICAgb3BlbkRhdGFiYXNlKGZhbHNl
KTsKLSAgICBpZiAoIW1fZGF0YWJhc2UuaXNPcGVuKCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsK
LQotICAgIFNRTGl0ZVN0YXRlbWVudCBzdGF0ZW1lbnQobV9kYXRhYmFzZSwgIlNFTEVDVCBzdW0o
Q2FjaGVzLnNpemUpIEZST00gQ2FjaGVzIElOTkVSIEpPSU4gQ2FjaGVHcm91cHMgT04gQ2FjaGVz
LmNhY2hlR3JvdXA9Q2FjaGVHcm91cHMuaWQgV0hFUkUgQ2FjaGVHcm91cHMubWFuaWZlc3RVUkw9
PyIpOwotICAgIGlmIChzdGF0ZW1lbnQucHJlcGFyZSgpICE9IFNRTElURV9PSykKLSAgICAgICAg
cmV0dXJuIGZhbHNlOwotCi0gICAgc3RhdGVtZW50LmJpbmRUZXh0KDEsIG1hbmlmZXN0VVJMKTsK
LQotICAgIGludCByZXN1bHQgPSBzdGF0ZW1lbnQuc3RlcCgpOwotICAgIGlmIChyZXN1bHQgPT0g
U1FMSVRFX0RPTkUpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIGlmIChyZXN1bHQgIT0g
U1FMSVRFX1JPVykgewotICAgICAgICBMT0dfRVJST1IoIkNvdWxkIG5vdCBnZXQgdGhlIHNpemUg
b2YgdGhlIGNhY2hlIGdyb3VwLCBlcnJvciBcIiVzXCIiLCBtX2RhdGFiYXNlLmxhc3RFcnJvck1z
ZygpKTsKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLQotICAgICpzaXplID0gc3RhdGVt
ZW50LmdldENvbHVtbkludDY0KDApOwotICAgIHJldHVybiB0cnVlOworICAgIHJldHVybiBXVEZN
b3ZlKHVybHMpOwogfQogCiBib29sIEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpkZWxldGVDYWNo
ZUdyb3VwUmVjb3JkKGNvbnN0IFN0cmluZyYgbWFuaWZlc3RVUkwpCkBAIC0xNDAzLDggKzEzNzAs
NyBAQCBib29sIEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpkZWxldGVDYWNoZUdyb3VwKGNvbnN0
IFN0cmluZyYgbWFuaWZlc3RVUkwpCiAgICAgU1FMaXRlVHJhbnNhY3Rpb24gZGVsZXRlVHJhbnNh
Y3Rpb24obV9kYXRhYmFzZSk7CiAKICAgICAvLyBDaGVjayB0byBzZWUgaWYgdGhlIGdyb3VwIGlz
IGluIG1lbW9yeS4KLSAgICBhdXRvKiBncm91cCA9IG1fY2FjaGVzSW5NZW1vcnkuZ2V0KG1hbmlm
ZXN0VVJMKTsKLSAgICBpZiAoZ3JvdXApCisgICAgaWYgKGF1dG8qIGdyb3VwID0gbV9jYWNoZXNJ
bk1lbW9yeS5nZXQobWFuaWZlc3RVUkwpKQogICAgICAgICBjYWNoZUdyb3VwTWFkZU9ic29sZXRl
KCpncm91cCk7CiAgICAgZWxzZSB7CiAgICAgICAgIC8vIFRoZSBjYWNoZSBncm91cCBpcyBub3Qg
aW4gbWVtb3J5LCBzbyByZW1vdmUgaXQgZnJvbSB0aGUgZGlzay4KQEAgLTE1MDYsMTUgKzE0NzIs
MTkgQEAgbG9uZyBsb25nIEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpmbGF0RmlsZUFyZWFTaXpl
KCkKICAgICByZXR1cm4gdG90YWxTaXplOwogfQogCi12b2lkIEFwcGxpY2F0aW9uQ2FjaGVTdG9y
YWdlOjpnZXRPcmlnaW5zV2l0aENhY2hlKEhhc2hTZXQ8UmVmUHRyPFNlY3VyaXR5T3JpZ2luPj4m
IG9yaWdpbnMpCitWZWN0b3I8UmVmPFNlY3VyaXR5T3JpZ2luPj4gQXBwbGljYXRpb25DYWNoZVN0
b3JhZ2U6Om9yaWdpbnNXaXRoQ2FjaGUoKQogewotICAgIFZlY3RvcjxVUkw+IHVybHM7Ci0gICAg
Z2V0TWFuaWZlc3RVUkxzKCZ1cmxzKTsKKyAgICBhdXRvIHVybHMgPSBtYW5pZmVzdFVSTHMoKTsK
KyAgICBpZiAoIXVybHMpCisgICAgICAgIHJldHVybiB7IH07CiAKICAgICAvLyBNdWx0aXBsZSBt
YW5pZmVzdCBVUkxzIG1pZ2h0IHNoYXJlIHRoZSBzYW1lIFNlY3VyaXR5T3JpZ2luLCBzbyB3ZSBt
aWdodCBiZSBjcmVhdGluZyBleHRyYSwgd2FzdGVkIG9yaWdpbnMgaGVyZS4KICAgICAvLyBUaGUg
Y3VycmVudCBzY2hlbWEgZG9lc24ndCBhbGxvdyBmb3IgYSBtb3JlIGVmZmljaWVudCB3YXkgb2Yg
YnVpbGRpbmcgdGhpcyBsaXN0LgotICAgIGZvciAoYXV0byYgdXJsIDogdXJscykKLSAgICAgICAg
b3JpZ2lucy5hZGQoU2VjdXJpdHlPcmlnaW46OmNyZWF0ZSh1cmwpKTsKKyAgICBWZWN0b3I8UmVm
PFNlY3VyaXR5T3JpZ2luPj4gb3JpZ2luczsKKyAgICBvcmlnaW5zLnJlc2VydmVJbml0aWFsQ2Fw
YWNpdHkodXJscy0+c2l6ZSgpKTsKKyAgICBmb3IgKGF1dG8mIHVybCA6ICp1cmxzKQorICAgICAg
ICBvcmlnaW5zLnVuY2hlY2tlZEFwcGVuZChTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKHVybCkpOwor
ICAgIHJldHVybiBvcmlnaW5zOwogfQogCiB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpk
ZWxldGVBbGxFbnRyaWVzKCkKQEAgLTE1MjUsMjYgKzE0OTUsMjQgQEAgdm9pZCBBcHBsaWNhdGlv
bkNhY2hlU3RvcmFnZTo6ZGVsZXRlQWxsRW50cmllcygpCiAKIHZvaWQgQXBwbGljYXRpb25DYWNo
ZVN0b3JhZ2U6OmRlbGV0ZUFsbENhY2hlcygpCiB7Ci0gICAgSGFzaFNldDxSZWZQdHI8U2VjdXJp
dHlPcmlnaW4+PiBvcmlnaW5zOwotCi0gICAgZ2V0T3JpZ2luc1dpdGhDYWNoZShvcmlnaW5zKTsK
KyAgICBhdXRvIG9yaWdpbnMgPSBvcmlnaW5zV2l0aENhY2hlKCk7CiAgICAgZm9yIChhdXRvJiBv
cmlnaW4gOiBvcmlnaW5zKQotICAgICAgICBkZWxldGVDYWNoZUZvck9yaWdpbigqb3JpZ2luKTsK
KyAgICAgICAgZGVsZXRlQ2FjaGVGb3JPcmlnaW4ob3JpZ2luKTsKIAogICAgIHZhY3V1bURhdGFi
YXNlRmlsZSgpOwogfQogCiB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpkZWxldGVDYWNo
ZUZvck9yaWdpbihjb25zdCBTZWN1cml0eU9yaWdpbiYgc2VjdXJpdHlPcmlnaW4pCiB7Ci0gICAg
VmVjdG9yPFVSTD4gdXJsczsKLSAgICBpZiAoIWdldE1hbmlmZXN0VVJMcygmdXJscykpIHsKKyAg
ICBhdXRvIHVybHMgPSBtYW5pZmVzdFVSTHMoKTsKKyAgICBpZiAoIXVybHMpIHsKICAgICAgICAg
TE9HX0VSUk9SKCJGYWlsZWQgdG8gcmV0cmlldmUgQXBwbGljYXRpb25DYWNoZSBtYW5pZmVzdCBV
UkxzIik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICBVUkwgb3JpZ2luVVJMKFVSTCgp
LCBzZWN1cml0eU9yaWdpbi50b1N0cmluZygpKTsKIAotICAgIGZvciAoY29uc3QgYXV0byYgdXJs
IDogdXJscykgeworICAgIGZvciAoY29uc3QgYXV0byYgdXJsIDogKnVybHMpIHsKICAgICAgICAg
aWYgKCFwcm90b2NvbEhvc3RBbmRQb3J0QXJlRXF1YWwodXJsLCBvcmlnaW5VUkwpKQogICAgICAg
ICAgICAgY29udGludWU7CiAKQEAgLTE1NjUsMTUgKzE1MzMsNyBAQCBpbnQ2NF90IEFwcGxpY2F0
aW9uQ2FjaGVTdG9yYWdlOjpkaXNrVXNhZ2VGb3JPcmlnaW4oY29uc3QgU2VjdXJpdHlPcmlnaW4m
IHNlY3VyaQogQXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OkFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdl
KGNvbnN0IFN0cmluZyYgY2FjaGVEaXJlY3RvcnksIGNvbnN0IFN0cmluZyYgZmxhdEZpbGVTdWJk
aXJlY3RvcnlOYW1lKQogICAgIDogbV9jYWNoZURpcmVjdG9yeShjYWNoZURpcmVjdG9yeSkKICAg
ICAsIG1fZmxhdEZpbGVTdWJkaXJlY3RvcnlOYW1lKGZsYXRGaWxlU3ViZGlyZWN0b3J5TmFtZSkK
LSAgICAsIG1fbWF4aW11bVNpemUoQXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6Om5vUXVvdGEoKSkK
LSAgICAsIG1faXNNYXhpbXVtU2l6ZVJlYWNoZWQoZmFsc2UpCi0gICAgLCBtX2RlZmF1bHRPcmln
aW5RdW90YShBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6bm9RdW90YSgpKQogewogfQogCi1SZWY8
QXBwbGljYXRpb25DYWNoZVN0b3JhZ2U+IEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpjcmVhdGUo
Y29uc3QgU3RyaW5nJiBjYWNoZURpcmVjdG9yeSwgY29uc3QgU3RyaW5nJiBmbGF0RmlsZVN1YmRp
cmVjdG9yeU5hbWUpCi17Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQXBwbGljYXRpb25DYWNo
ZVN0b3JhZ2UoY2FjaGVEaXJlY3RvcnksIGZsYXRGaWxlU3ViZGlyZWN0b3J5TmFtZSkpOwotfQot
Ci19Cit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuaCBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5oCmluZGV4IDlkMTdhMWJj
ZDA2YTZhYzExMWEwYWNhYTYwNzY0ZjZiMTU0MDUwZmYuLjQ4Y2JmODhlNWQ4OTAzNzExMzYxODk1
Y2ExYzEzMmE2NDBjN2Q5MDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBj
YWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5oCkBAIC01MSwxMCArNTEsMTIgQEAg
cHVibGljOgogICAgICAgICBEaXNrT3JPcGVyYXRpb25GYWlsdXJlCiAgICAgfTsKIAotICAgIFdF
QkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8QXBwbGljYXRpb25DYWNoZVN0b3JhZ2U+IGNyZWF0ZShj
b25zdCBTdHJpbmcmIGNhY2hlRGlyZWN0b3J5LCBjb25zdCBTdHJpbmcmIGZsYXRGaWxlU3ViZGly
ZWN0b3J5TmFtZSk7CisgICAgc3RhdGljIFJlZjxBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZT4gY3Jl
YXRlKGNvbnN0IFN0cmluZyYgY2FjaGVEaXJlY3RvcnksIGNvbnN0IFN0cmluZyYgZmxhdEZpbGVT
dWJkaXJlY3RvcnlOYW1lKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQXBw
bGljYXRpb25DYWNoZVN0b3JhZ2UoY2FjaGVEaXJlY3RvcnksIGZsYXRGaWxlU3ViZGlyZWN0b3J5
TmFtZSkpOworICAgIH0KKwogCi0gICAgY29uc3QgU3RyaW5nJiBjYWNoZURpcmVjdG9yeSgpIGNv
bnN0OwotICAgIAogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0TWF4aW11bVNpemUoaW50NjRf
dCBzaXplKTsKICAgICBXRUJDT1JFX0VYUE9SVCBpbnQ2NF90IG1heGltdW1TaXplKCkgY29uc3Q7
CiAgICAgYm9vbCBpc01heGltdW1TaXplUmVhY2hlZCgpIGNvbnN0OwpAQCAtNzIsNyArNzQsNiBA
QCBwdWJsaWM6CiAgICAgQXBwbGljYXRpb25DYWNoZUdyb3VwKiBmYWxsYmFja0NhY2hlR3JvdXBG
b3JVUkwoY29uc3QgVVJMJik7IC8vIENhY2hlIHRoYXQgaGFzIGEgZmFsbGJhY2sgZW50cnkgdG8g
bG9hZCBhIG1haW4gcmVzb3VyY2UgZnJvbSBpZiBub3JtYWwgbG9hZGluZyBmYWlscy4KIAogICAg
IEFwcGxpY2F0aW9uQ2FjaGVHcm91cCogZmluZE9yQ3JlYXRlQ2FjaGVHcm91cChjb25zdCBVUkwm
IG1hbmlmZXN0VVJMKTsKLSAgICBBcHBsaWNhdGlvbkNhY2hlR3JvdXAqIGZpbmRJbk1lbW9yeUNh
Y2hlR3JvdXAoY29uc3QgVVJMJiBtYW5pZmVzdFVSTCkgY29uc3Q7CiAgICAgdm9pZCBjYWNoZUdy
b3VwRGVzdHJveWVkKEFwcGxpY2F0aW9uQ2FjaGVHcm91cCYpOwogICAgIHZvaWQgY2FjaGVHcm91
cE1hZGVPYnNvbGV0ZShBcHBsaWNhdGlvbkNhY2hlR3JvdXAmKTsKIApAQCAtODYsMTIgKzg3LDcg
QEAgcHVibGljOgogCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBlbXB0eSgpOwogCi0gICAgYm9v
bCBnZXRNYW5pZmVzdFVSTHMoVmVjdG9yPFVSTD4qIHVybHMpOwotICAgIGJvb2wgY2FjaGVHcm91
cFNpemUoY29uc3QgU3RyaW5nJiBtYW5pZmVzdFVSTCwgaW50NjRfdCogc2l6ZSk7Ci0gICAgYm9v
bCBkZWxldGVDYWNoZUdyb3VwKGNvbnN0IFN0cmluZyYgbWFuaWZlc3RVUkwpOwotICAgIFdFQkNP
UkVfRVhQT1JUIHZvaWQgdmFjdXVtRGF0YWJhc2VGaWxlKCk7Ci0KLSAgICBXRUJDT1JFX0VYUE9S
VCB2b2lkIGdldE9yaWdpbnNXaXRoQ2FjaGUoSGFzaFNldDxSZWZQdHI8U2VjdXJpdHlPcmlnaW4+
LCBTZWN1cml0eU9yaWdpbkhhc2g+Jik7CisgICAgV0VCQ09SRV9FWFBPUlQgVmVjdG9yPFJlZjxT
ZWN1cml0eU9yaWdpbj4+IG9yaWdpbnNXaXRoQ2FjaGUoKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2
b2lkIGRlbGV0ZUFsbEVudHJpZXMoKTsKIAogICAgIC8vIEZJWE1FOiBUaGlzIHNob3VsZCBiZSBj
b25zb2xpZGF0ZWQgd2l0aCBkZWxldGVBbGxFbnRyaWVzKCkuCkBAIC0xMDcsMTAgKzEwMywxNCBA
QCBwdWJsaWM6CiAgICAgc3RhdGljIGludDY0X3Qgbm9RdW90YSgpIHsgcmV0dXJuIHN0ZDo6bnVt
ZXJpY19saW1pdHM8aW50NjRfdD46Om1heCgpOyB9CiAKIHByaXZhdGU6Ci0gICAgQXBwbGljYXRp
b25DYWNoZVN0b3JhZ2UoY29uc3QgU3RyaW5nJiBjYWNoZURpcmVjdG9yeSwgY29uc3QgU3RyaW5n
JiBmbGF0RmlsZVN1YmRpcmVjdG9yeU5hbWUpOworICAgIFdFQkNPUkVfRVhQT1JUIEFwcGxpY2F0
aW9uQ2FjaGVTdG9yYWdlKGNvbnN0IFN0cmluZyYgY2FjaGVEaXJlY3RvcnksIGNvbnN0IFN0cmlu
ZyYgZmxhdEZpbGVTdWJkaXJlY3RvcnlOYW1lKTsKIAogICAgIFJlZlB0cjxBcHBsaWNhdGlvbkNh
Y2hlPiBsb2FkQ2FjaGUodW5zaWduZWQgc3RvcmFnZUlEKTsKICAgICBBcHBsaWNhdGlvbkNhY2hl
R3JvdXAqIGxvYWRDYWNoZUdyb3VwKGNvbnN0IFVSTCYgbWFuaWZlc3RVUkwpOworICAgIHN0ZDo6
b3B0aW9uYWw8VmVjdG9yPFVSTD4+IG1hbmlmZXN0VVJMcygpOworICAgIEFwcGxpY2F0aW9uQ2Fj
aGVHcm91cCogZmluZEluTWVtb3J5Q2FjaGVHcm91cChjb25zdCBVUkwmIG1hbmlmZXN0VVJMKSBj
b25zdDsKKyAgICBib29sIGRlbGV0ZUNhY2hlR3JvdXAoY29uc3QgU3RyaW5nJiBtYW5pZmVzdFVS
TCk7CisgICAgdm9pZCB2YWN1dW1EYXRhYmFzZUZpbGUoKTsKICAgICAKICAgICB1c2luZyBSZXNv
dXJjZVN0b3JhZ2VJREpvdXJuYWwgPSBTdG9yYWdlSURKb3VybmFsPEFwcGxpY2F0aW9uQ2FjaGVS
ZXNvdXJjZT47CiAgICAgdXNpbmcgR3JvdXBTdG9yYWdlSURKb3VybmFsID0gU3RvcmFnZUlESm91
cm5hbDxBcHBsaWNhdGlvbkNhY2hlR3JvdXA+OwpAQCAtMTIxLDcgKzEyMSw3IEBAIHByaXZhdGU6
CiAgICAgYm9vbCBkZWxldGVDYWNoZUdyb3VwUmVjb3JkKGNvbnN0IFN0cmluZyYgbWFuaWZlc3RV
UkwpOwogCiAgICAgYm9vbCBlbnN1cmVPcmlnaW5SZWNvcmQoY29uc3QgU2VjdXJpdHlPcmlnaW4q
KTsKLSAgICBib29sIHNob3VsZFN0b3JlUmVzb3VyY2VBc0ZsYXRGaWxlKEFwcGxpY2F0aW9uQ2Fj
aGVSZXNvdXJjZSopOworICAgIHN0YXRpYyBib29sIHNob3VsZFN0b3JlUmVzb3VyY2VBc0ZsYXRG
aWxlKEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZSopOwogICAgIHZvaWQgZGVsZXRlVGFibGVzKCk7
CiAgICAgYm9vbCB3cml0ZURhdGFUb1VuaXF1ZUZpbGVJbkRpcmVjdG9yeShTaGFyZWRCdWZmZXIm
LCBjb25zdCBTdHJpbmcmIGRpcmVjdG9yeSwgU3RyaW5nJiBvdXRGaWxlbmFtZSwgY29uc3QgU3Ry
aW5nJiBmaWxlRXh0ZW5zaW9uKTsKIApAQCAtMTQyLDEwICsxNDIsMTAgQEAgcHJpdmF0ZToKICAg
ICBjb25zdCBTdHJpbmcgbV9mbGF0RmlsZVN1YmRpcmVjdG9yeU5hbWU7CiAgICAgU3RyaW5nIG1f
Y2FjaGVGaWxlOwogCi0gICAgaW50NjRfdCBtX21heGltdW1TaXplOwotICAgIGJvb2wgbV9pc01h
eGltdW1TaXplUmVhY2hlZDsKKyAgICBpbnQ2NF90IG1fbWF4aW11bVNpemUgeyBub1F1b3RhKCkg
fTsKKyAgICBib29sIG1faXNNYXhpbXVtU2l6ZVJlYWNoZWQgeyBmYWxzZSB9OwogCi0gICAgaW50
NjRfdCBtX2RlZmF1bHRPcmlnaW5RdW90YTsKKyAgICBpbnQ2NF90IG1fZGVmYXVsdE9yaWdpblF1
b3RhIHsgbm9RdW90YSgpIH07CiAKICAgICBTUUxpdGVEYXRhYmFzZSBtX2RhdGFiYXNlOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0
YVN0b3JlLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVE
YXRhU3RvcmUuY3BwCmluZGV4IDI2NjM2ZDFkNTQ2MDhkYTI0MzhlZDI1Yzc3NWUyZDI0MTBkMTEx
YmQuLmE5ZjI2OGNmZjFiYWY0ZjBhODljODc4NWNjOTljNzA1NTZmODJiNTcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3Rv
cmUuY3BwCkBAIC00NDcsMTIgKzQ0NywxMSBAQCB2b2lkIFdlYnNpdGVEYXRhU3RvcmU6OmZldGNo
RGF0YUFuZEFwcGx5KE9wdGlvblNldDxXZWJzaXRlRGF0YVR5cGU+IGRhdGFUeXBlcywgTwogCiAg
ICAgICAgICAgICBXZWJzaXRlRGF0YSB3ZWJzaXRlRGF0YTsKIAotICAgICAgICAgICAgSGFzaFNl
dDxSZWZQdHI8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4+PiBvcmlnaW5zOwogICAgICAgICAgICAg
Ly8gRklYTUU6IGdldE9yaWdpbnNXaXRoQ2FjaGUgc2hvdWxkIHJldHVybiBhIGNvbGxlY3Rpb24g
b2YgU2VjdXJpdHlPcmlnaW5EYXRhcy4KLSAgICAgICAgICAgIHN0b3JhZ2UtPmdldE9yaWdpbnNX
aXRoQ2FjaGUob3JpZ2lucyk7CisgICAgICAgICAgICBhdXRvIG9yaWdpbnMgPSBzdG9yYWdlLT5v
cmlnaW5zV2l0aENhY2hlKCk7CiAKICAgICAgICAgICAgIGZvciAoYXV0byYgb3JpZ2luIDogb3Jp
Z2lucykgewotICAgICAgICAgICAgICAgIHVpbnQ2NF90IHNpemUgPSBmZXRjaE9wdGlvbnMuY29u
dGFpbnMoV2Vic2l0ZURhdGFGZXRjaE9wdGlvbjo6Q29tcHV0ZVNpemVzKSA/IHN0b3JhZ2UtPmRp
c2tVc2FnZUZvck9yaWdpbigqb3JpZ2luKSA6IDA7CisgICAgICAgICAgICAgICAgdWludDY0X3Qg
c2l6ZSA9IGZldGNoT3B0aW9ucy5jb250YWlucyhXZWJzaXRlRGF0YUZldGNoT3B0aW9uOjpDb21w
dXRlU2l6ZXMpID8gc3RvcmFnZS0+ZGlza1VzYWdlRm9yT3JpZ2luKG9yaWdpbikgOiAwOwogICAg
ICAgICAgICAgICAgIFdlYnNpdGVEYXRhOjpFbnRyeSBlbnRyeSB7IG9yaWdpbi0+ZGF0YSgpLCBX
ZWJzaXRlRGF0YVR5cGU6Ok9mZmxpbmVXZWJBcHBsaWNhdGlvbkNhY2hlLCBzaXplIH07CiAKICAg
ICAgICAgICAgICAgICB3ZWJzaXRlRGF0YS5lbnRyaWVzLmFwcGVuZChXVEZNb3ZlKGVudHJ5KSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJ
L2MvV0tCdW5kbGVQYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1
bmRsZS9BUEkvYy9XS0J1bmRsZVBhZ2UuY3BwCmluZGV4IDVlOGYxMTdkODI1MmZiZmU0N2Y1Nzdl
MmRiMDA4ZTRiMjhlMmNkNDguLmEwZWE0ZWM1M2U2YmVhZWVlYTA5MDFmYWFiZmJkZTA1M2IwYzcx
MGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9B
UEkvYy9XS0J1bmRsZVBhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Jbmpl
Y3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVBhZ2UuY3BwCkBAIC02ODYsOCArNjg2LDcgQEAgdm9p
ZCBXS0J1bmRsZVBhZ2VSZXNldEFwcGxpY2F0aW9uQ2FjaGVPcmlnaW5RdW90YShXS0J1bmRsZVBh
Z2VSZWYgcGFnZSwgV0tTdHJpbmcKIAogV0tBcnJheVJlZiBXS0J1bmRsZVBhZ2VDb3B5T3JpZ2lu
c1dpdGhBcHBsaWNhdGlvbkNhY2hlKFdLQnVuZGxlUGFnZVJlZiBwYWdlKQogewotICAgIEhhc2hT
ZXQ8UmVmUHRyPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luPj4gb3JpZ2luczsKLSAgICB0b0ltcGwo
cGFnZSktPmNvcmVQYWdlKCktPmFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlKCkuZ2V0T3JpZ2luc1dp
dGhDYWNoZShvcmlnaW5zKTsKKyAgICBhdXRvIG9yaWdpbnMgPSB0b0ltcGwocGFnZSktPmNvcmVQ
YWdlKCktPmFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlKCkub3JpZ2luc1dpdGhDYWNoZSgpOwogCiAg
ICAgVmVjdG9yPFJlZlB0cjxBUEk6Ok9iamVjdD4+IG9yaWdpbklkZW50aWZpZXJzOwogICAgIG9y
aWdpbklkZW50aWZpZXJzLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkob3JpZ2lucy5zaXplKCkpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQXBw
bGljYXRpb25DYWNoZS5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0
L1dlYkFwcGxpY2F0aW9uQ2FjaGUubW0KaW5kZXggYWIyYzEzNjgyYTg4Yzc1ODViNGYzZjQ5YTU1
ZGUwNzc0OGVkOWVhMC4uNTYzYjRjMzhlMjFkZDljMjdjMmQyZDQwOGNiZWMyNzBiYWZlMjk3YiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQXBw
bGljYXRpb25DYWNoZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3Vw
cG9ydC9XZWJBcHBsaWNhdGlvbkNhY2hlLm1tCkBAIC0xMjMsMTQgKzEyMywxMiBAQCArICh2b2lk
KWRlbGV0ZUNhY2hlRm9yT3JpZ2luOihXZWJTZWN1cml0eU9yaWdpbiAqKW9yaWdpbgogCiArIChO
U0FycmF5ICopb3JpZ2luc1dpdGhDYWNoZQogewotICAgIEhhc2hTZXQ8UmVmUHRyPFNlY3VyaXR5
T3JpZ2luPj4gY29yZU9yaWdpbnM7Ci0gICAgd2ViQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UoKS5n
ZXRPcmlnaW5zV2l0aENhY2hlKGNvcmVPcmlnaW5zKTsKKyAgICBhdXRvIGNvcmVPcmlnaW5zID0g
d2ViQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UoKS5vcmlnaW5zV2l0aENhY2hlKCk7CiAgICAgCiAg
ICAgTlNNdXRhYmxlQXJyYXkgKndlYk9yaWdpbnMgPSBbW1tOU011dGFibGVBcnJheSBhbGxvY10g
aW5pdFdpdGhDYXBhY2l0eTpjb3JlT3JpZ2lucy5zaXplKCldIGF1dG9yZWxlYXNlXTsKICAgICAK
LSAgICBIYXNoU2V0PFJlZlB0cjxTZWN1cml0eU9yaWdpbj4+Ojpjb25zdF9pdGVyYXRvciBlbmQg
PSBjb3JlT3JpZ2lucy5lbmQoKTsKLSAgICBmb3IgKEhhc2hTZXQ8UmVmUHRyPFNlY3VyaXR5T3Jp
Z2luPj46OmNvbnN0X2l0ZXJhdG9yIGl0ID0gY29yZU9yaWdpbnMuYmVnaW4oKTsgaXQgIT0gZW5k
OyArK2l0KSB7Ci0gICAgICAgIFJldGFpblB0cjxXZWJTZWN1cml0eU9yaWdpbj4gd2ViT3JpZ2lu
ID0gYWRvcHROUyhbW1dlYlNlY3VyaXR5T3JpZ2luIGFsbG9jXSBfaW5pdFdpdGhXZWJDb3JlU2Vj
dXJpdHlPcmlnaW46KCppdCkuZ2V0KCldKTsKKyAgICBmb3IgKGF1dG8mIGNvcmVPcmlnaW4gOiBj
b3JlT3JpZ2lucykgeworICAgICAgICBhdXRvIHdlYk9yaWdpbiA9IGFkb3B0TlMoW1tXZWJTZWN1
cml0eU9yaWdpbiBhbGxvY10gX2luaXRXaXRoV2ViQ29yZVNlY3VyaXR5T3JpZ2luOmNvcmVPcmln
aW4ucHRyKCldKTsKICAgICAgICAgW3dlYk9yaWdpbnMgYWRkT2JqZWN0OndlYk9yaWdpbi5nZXQo
KV07CiAgICAgfQogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2Vi
QXBwbGljYXRpb25DYWNoZS5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJBcHBsaWNh
dGlvbkNhY2hlLmNwcAppbmRleCAxZWE5MDE3OGFkOGQzOGYyNDA4Nzc1NzcyYjk3OTI1MTNhY2E0
MDNkLi5iODVkZDE1NDQwYTZlYTU0MDRhOGE0ODUyMTQzZTU5MTc4ZmVjMTJkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJBcHBsaWNhdGlvbkNhY2hlLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJBcHBsaWNhdGlvbkNhY2hlLmNwcApAQCAtMTg3LDEz
ICsxODcsMTIgQEAgSFJFU1VMVCBXZWJBcHBsaWNhdGlvbkNhY2hlOjpvcmlnaW5zV2l0aENhY2hl
KElQcm9wZXJ0eUJhZyoqIG9yaWdpbnMpCiAgICAgaWYgKCFvcmlnaW5zKQogICAgICAgICByZXR1
cm4gRV9QT0lOVEVSOwogCi0gICAgSGFzaFNldDxSZWZQdHI8V2ViQ29yZTo6U2VjdXJpdHlPcmln
aW4+PiBjb3JlT3JpZ2luczsKLSAgICBzdG9yYWdlKCkuZ2V0T3JpZ2luc1dpdGhDYWNoZShjb3Jl
T3JpZ2lucyk7CisgICAgYXV0byBjb3JlT3JpZ2lucyA9IHN0b3JhZ2UoKS5vcmlnaW5zV2l0aENh
Y2hlKCk7CiAKICAgICBSZXRhaW5QdHI8Q0ZNdXRhYmxlQXJyYXlSZWY+IGFycmF5SXRlbSA9IGFk
b3B0Q0YoQ0ZBcnJheUNyZWF0ZU11dGFibGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgY29yZU9yaWdp
bnMuc2l6ZSgpLCAmTWFyc2hhbGxpbmdIZWxwZXJzOjprSVVua25vd25BcnJheUNhbGxCYWNrcykp
OwogCi0gICAgZm9yIChhdXRvIGl0IDogY29yZU9yaWdpbnMpCi0gICAgICAgIENGQXJyYXlBcHBl
bmRWYWx1ZShhcnJheUl0ZW0uZ2V0KCksIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KFdlYlNlY3Vy
aXR5T3JpZ2luOjpjcmVhdGVJbnN0YW5jZSgmKCppdCkpKSk7CisgICAgZm9yIChhdXRvJiBjb3Jl
T3JpZ2luIDogY29yZU9yaWdpbnMpCisgICAgICAgIENGQXJyYXlBcHBlbmRWYWx1ZShhcnJheUl0
ZW0uZ2V0KCksIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KFdlYlNlY3VyaXR5T3JpZ2luOjpjcmVh
dGVJbnN0YW5jZShjb3JlT3JpZ2luLnB0cigpKSkpOwogCiAgICAgUmV0YWluUHRyPENGTXV0YWJs
ZURpY3Rpb25hcnlSZWY+IGRpY3Rpb25hcnkgPSBhZG9wdENGKAogICAgICAgICBDRkRpY3Rpb25h
cnlDcmVhdGVNdXRhYmxlKDAsIDAsICZrQ0ZUeXBlRGljdGlvbmFyeUtleUNhbGxCYWNrcywgJmtD
RlR5cGVEaWN0aW9uYXJ5VmFsdWVDYWxsQmFja3MpKTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>