<?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>171909</bug_id>
          
          <creation_ts>2017-05-09 20:21:01 -0700</creation_ts>
          <short_desc>Simplify relationship between Attr and Element now that Attr is childless</short_desc>
          <delta_ts>2017-05-10 15:25:48 -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>DOM</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></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>171688</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Chris Dumez">cdumez</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>buildbot</cc>
    
    <cc>cdumez</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dbates</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ggaren</cc>
    
    <cc>kangil.han</cc>
    
    <cc>kling</cc>
    
    <cc>koivisto</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>rniwa</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1306719</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-05-09 20:21:01 -0700</bug_when>
    <thetext>No need to invalidate Attr node childNodeLists caches when its value changes since Attr Nodes can no longer have children after Bug 171688.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1306724</commentid>
    <comment_count>1</comment_count>
      <attachid>309576</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-05-09 20:35:28 -0700</bug_when>
    <thetext>Created attachment 309576
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1306737</commentid>
    <comment_count>2</comment_count>
      <attachid>309580</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-05-09 22:40:09 -0700</bug_when>
    <thetext>Created attachment 309580
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1306738</commentid>
    <comment_count>3</comment_count>
      <attachid>309580</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2017-05-09 22:41:43 -0700</bug_when>
    <thetext>Comment on attachment 309580
Patch

I think we should hold off on these refactorings until next STP goes out to make reverting Attr node change is possible.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1306739</commentid>
    <comment_count>4</comment_count>
      <attachid>309581</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-05-09 22:48:28 -0700</bug_when>
    <thetext>Created attachment 309581
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1306740</commentid>
    <comment_count>5</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-05-09 22:55:08 -0700</bug_when>
    <thetext>(In reply to Ryosuke Niwa from comment #3)
&gt; Comment on attachment 309580 [details]
&gt; Patch
&gt; 
&gt; I think we should hold off on these refactorings until next STP goes out to
&gt; make reverting Attr node change is possible.

Chrome and Firefox have done this a while back already without trouble so it seems very unlikely STP would cause this change to be reverted.

That said, even if it does need to be reverted manually. It wouldn&apos;t been difficult. We are not talking about a lot of code.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1306743</commentid>
    <comment_count>6</comment_count>
      <attachid>309581</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2017-05-09 23:31:11 -0700</bug_when>
    <thetext>Comment on attachment 309581
Patch

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

&gt; Source/WebCore/dom/Node.cpp:894
&gt; +    for (auto* node = this; node; node = node-&gt;parentNode()) {
&gt; +        if (auto* lists = node-&gt;nodeLists())
&gt; +            lists-&gt;invalidateCaches(attrName);

This refactoring would result in a pref regression. It&apos;s very important for hasRareData() check to be inlined in this loop.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1306821</commentid>
    <comment_count>7</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-05-10 07:02:00 -0700</bug_when>
    <thetext>(In reply to Ryosuke Niwa from comment #6)
&gt; Comment on attachment 309581 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=309581&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/dom/Node.cpp:894
&gt; &gt; +    for (auto* node = this; node; node = node-&gt;parentNode()) {
&gt; &gt; +        if (auto* lists = node-&gt;nodeLists())
&gt; &gt; +            lists-&gt;invalidateCaches(attrName);
&gt; 
&gt; This refactoring would result in a pref regression. It&apos;s very important for
&gt; hasRareData() check to be inlined in this loop.

Oh I did not realize that. I’ll revert this part, thanks.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1306846</commentid>
    <comment_count>8</comment_count>
      <attachid>309581</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2017-05-10 07:40:02 -0700</bug_when>
    <thetext>Comment on attachment 309581
Patch

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

&gt; Source/WebCore/dom/Element.cpp:-1281
&gt; -        // FIXME: Refactor this so it makes some sense.

Nice!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1306858</commentid>
    <comment_count>9</comment_count>
      <attachid>309607</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-05-10 08:29:48 -0700</bug_when>
    <thetext>Created attachment 309607
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1306861</commentid>
    <comment_count>10</comment_count>
      <attachid>309608</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-05-10 08:40:53 -0700</bug_when>
    <thetext>Created attachment 309608
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1306961</commentid>
    <comment_count>11</comment_count>
      <attachid>309608</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-05-10 13:04:29 -0700</bug_when>
    <thetext>Comment on attachment 309608
Patch

Ryosuke made some improvement suggestions offline. I am trying them out.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1307007</commentid>
    <comment_count>12</comment_count>
      <attachid>309635</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-05-10 14:27:21 -0700</bug_when>
    <thetext>Created attachment 309635
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1307017</commentid>
    <comment_count>13</comment_count>
      <attachid>309635</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2017-05-10 14:38:14 -0700</bug_when>
    <thetext>Comment on attachment 309635
Patch

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

&gt; Source/WebCore/ChangeLog:18
&gt; +        Attr::setValueForBindings() wa thus renamed to setValue(). Its implementation

Typo: wa -&gt; was.

&gt; Source/WebCore/ChangeLog:21
&gt; +        Element::setAttributeInternal().

Maybe you can put this in the pervious line to make it read better?

&gt; Source/WebCore/dom/Node.cpp:841
&gt; +bool Document::shouldInvalidateNodeListAndCollectionCaches() const

Add inline here?

&gt; Source/WebCore/dom/Node.cpp:850
&gt; +bool Document::shouldInvalidateNodeListAndCollectionCachesForAttribute(const QualifiedName&amp; attrName) const

Add inline here?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1307026</commentid>
    <comment_count>14</comment_count>
      <attachid>309642</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-05-10 14:52:42 -0700</bug_when>
    <thetext>Created attachment 309642
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1307045</commentid>
    <comment_count>15</comment_count>
      <attachid>309642</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-05-10 15:25:46 -0700</bug_when>
    <thetext>Comment on attachment 309642
Patch

Clearing flags on attachment: 309642

Committed r216632: &lt;http://trac.webkit.org/changeset/216632&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1307046</commentid>
    <comment_count>16</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-05-10 15:25:48 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>309576</attachid>
            <date>2017-05-09 20:35:28 -0700</date>
            <delta_ts>2017-05-09 22:40:07 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-171909-20170509203528.patch</filename>
            <type>text/plain</type>
            <size>10123</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE2NTYxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTAxYTlmYTZiOWM2ZGMw
ZDY2OTlmNGQwMDQwMzU1MTYyMDQ4ZmU2MS4uZmI3ZDI3MmZiYTc0MDNiOGE0Y2ExZmQ1MmUzNjdl
MzgzMWYwMzU4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUxIEBACisyMDE3LTA1LTA5ICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgTm8gbmVlZCB0byBpbnZhbGlk
YXRlIEF0dHIgbm9kZSBjaGlsZE5vZGVMaXN0cyBjYWNoZXMgd2hlbiBpdHMgdmFsdWUgY2hhbmdl
cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTcxOTA5
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gbmVl
ZCB0byBpbnZhbGlkYXRlIEF0dHIgbm9kZSBjaGlsZE5vZGVMaXN0cyBjYWNoZXMgd2hlbiBpdHMg
dmFsdWUgY2hhbmdlcyBzaW5jZSBBdHRyCisgICAgICAgIE5vZGVzIGNhbiBubyBsb25nZXIgaGF2
ZSBjaGlsZHJlbiBhZnRlciByMjE2MjU5LgorCisgICAgICAgIE5vIG5ldyB0ZXN0cywgbm8gV2Vi
IGZhY2luZyBiZWhhdmlvciBjaGFuZ2UuCisKKyAgICAgICAgKiBkb20vQXR0ci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpBdHRyOjpzZXRWYWx1ZSk6CisgICAgICAgIE9ubHkgY2FsbCBpbnZhbGlk
YXRlTm9kZUxpc3RBbmRDb2xsZWN0aW9uQ2FjaGVzSW5BbmNlc3RvcnNGb3JBdHRyaWJ1dGUoKSBp
ZiB0aGUgQXR0ciBOb2RlCisgICAgICAgIGhhcyBhbiBhc3NvY2lhdGVkIGVsZW1lbnQgYXMgdGhl
cmUgaXMgbm90aGluZyB0byBpbnZhbGlkYXRlIG90aGVyd2lzZS4gV2UgdXNlZCB0byBjYWxsIGl0
CisgICAgICAgIGJlY2F1c2Ugd2UgaGFkIHRvIGludmFsaWRhdGUgdGhlIEF0dHIgTm9kZSdzIGNo
aWxkTm9kZUxpc3RzLiBIb3dldmVyLCBBdHRyIE5vZGVzIG5vIGxvbmdlcgorICAgICAgICBoYXZl
IGNoaWxkcmVuIGFzIG9mIHIyMTYyNTkuCisKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuaDoKKyAg
ICAgICAgU3BsaXQgc2hvdWxkSW52YWxpZGF0ZU5vZGVMaXN0QW5kQ29sbGVjdGlvbkNhY2hlcygp
IGludG8gMiBtZXRob2RzLCBvbmUgdGFraW5nIGFuIEF0dHIgbmFtZQorICAgICAgICBhbmQgYW5v
dGhlciB0aGF0IGRvZXMgbm90LiBUaGVyZSBhcmUgbm93IDIgY2FsbHMgc2l0ZXMgaW5zdGVhZCBv
ZiBvbmUsIHNvIHdlIG5vIGxvbmdlciBuZWVkCisgICAgICAgIHRvIGJyYW5jaCBpbiB0aGlzIGZ1
bmN0aW9uLgorCisgICAgICAgICogZG9tL0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
RWxlbWVudDo6YXR0cmlidXRlQ2hhbmdlZCk6CisgICAgICAgIENhbGwgdGhlIG5ldyBpbnZhbGlk
YXRlTm9kZUxpc3RBbmRDb2xsZWN0aW9uQ2FjaGVzSW5BbmNlc3RvcnNGb3JBdHRyaWJ1dGUoKS4K
KworICAgICAgICAqIGRvbS9Ob2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50Ojpz
aG91bGRJbnZhbGlkYXRlTm9kZUxpc3RBbmRDb2xsZWN0aW9uQ2FjaGVzKToKKyAgICAgICAgKFdl
YkNvcmU6OkRvY3VtZW50OjpzaG91bGRJbnZhbGlkYXRlTm9kZUxpc3RBbmRDb2xsZWN0aW9uQ2Fj
aGVzRm9yQXR0cmlidXRlKToKKyAgICAgICAgU3BsaXQgaW50byAyIHRvIGF2b2lkIGJyYW5jaGlu
ZywgYXMgZXhwbGFpbmVkIGFib3ZlLgorCisgICAgICAgIChXZWJDb3JlOjpOb2RlOjppbnZhbGlk
YXRlTm9kZUxpc3RBbmRDb2xsZWN0aW9uQ2FjaGVzSW5BbmNlc3RvcnMpOgorICAgICAgICAoV2Vi
Q29yZTo6Tm9kZTo6aW52YWxpZGF0ZU5vZGVMaXN0QW5kQ29sbGVjdGlvbkNhY2hlc0luQW5jZXN0
b3JzRm9yQXR0cmlidXRlKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6OmludmFsaWRhdGVOb2Rl
TGlzdEFuZENvbGxlY3Rpb25DYWNoZXNJbkFuY2VzdG9yc0ludGVybmFsKToKKyAgICAgICAgLSBp
bnZhbGlkYXRlTm9kZUxpc3RBbmRDb2xsZWN0aW9uQ2FjaGVzSW5BbmNlc3RvcnMoKSB1c2VkIHRv
IGludmFsaWRhdGUgY2hpbGROb2RlTGlzdHMKKyAgICAgICAgICBpZiB0aGUgTm9kZSB3YXMgYW4g
YXR0cmlidXRlIG5vZGUuIERyb3AgdGhpcyBhcyB0aGlzIGlzIG5vIGxvbmdlciBuZWVkZWQgYXMg
b2YgcjIxNjI1OS4KKyAgICAgICAgLSBBZnRlciB0aGUgY2hhbmdlIHRvIEF0dHI6OnNldFZhbHVl
KCksIGNhbGwgc2l0ZXMgZm9yIAorICAgICAgICAgIGludmFsaWRhdGVOb2RlTGlzdEFuZENvbGxl
Y3Rpb25DYWNoZXNJbkFuY2VzdG9ycygpIGVpdGhlciBoYWQgbm8gcGFyYW1ldGVycywgb3IgYm90
aAorICAgICAgICAgIHBhcmFtZXRlcnMgcHJlc2VudCBhbmQgbm9uLW51bGwuIFRoZXJlIGlzIHRo
ZXJlZm9yZSBubyBsb25nZXIgYW55IG5lZWQgdG8gaGFuZGxlCisgICAgICAgICAgaGF2aW5nIGFu
IGF0dHJOYW1lIGJ1dCBubyBhdHRyaWJ1dGVPd25lckVsZW1lbnQuIFRvIG1ha2UgdGhpcyBvYnZp
b3VzLCBJIHNwbGl0IHRoaXMKKyAgICAgICAgICBpbnRvIDIgbWV0aG9kczogaW52YWxpZGF0ZU5v
ZGVMaXN0QW5kQ29sbGVjdGlvbkNhY2hlc0luQW5jZXN0b3JzKCkgYW5kCisgICAgICAgICAgaW52
YWxpZGF0ZU5vZGVMaXN0QW5kQ29sbGVjdGlvbkNhY2hlc0luQW5jZXN0b3JzRm9yQXR0cmlidXRl
KGF0dHJOYW1lKS4gV2Ugbm8gbG9uZ2VyCisgICAgICAgICAgbmVlZCB0aGUgYXR0cmlidXRlT3du
ZXJFbGVtZW50IHBhcmFtZXRlciBhcyBpdCB3YXMgb25seSB1c2VkIHRvIGV4aXQgZWFybHkuCisK
KyAgICAgICAgKiBkb20vTm9kZS5oOgorCiAyMDE3LTA1LTA5ICBKZXJlbXkgSm9uZXMgIDxqZXJl
bXlqQGFwcGxlLmNvbT4KIAogICAgICAgICBWaWRlbyBmdWxsc2NyZWVuIHdpbmRvdyBsZXZlbCBz
aG91bGQgYmUgYmVsb3cgc3RhdHVzIGJhci4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9BdHRyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9BdHRyLmNwcAppbmRleCAwYTRkYzQ4OTU5
NzRjNGJmMmFkMmJmMjRhNDJkOWMxYzc2ZGMzN2E1Li5mMDQyYTIxOGJiMzZkZWE0ZjQ1MDFhZGE3
Mzg1ZWE2YzJkNzU2YWNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vQXR0ci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0F0dHIuY3BwCkBAIC04NiwxMyArODYsMTMgQEAgRXhj
ZXB0aW9uT3I8dm9pZD4gQXR0cjo6c2V0UHJlZml4KGNvbnN0IEF0b21pY1N0cmluZyYgcHJlZml4
KQogCiB2b2lkIEF0dHI6OnNldFZhbHVlKGNvbnN0IEF0b21pY1N0cmluZyYgdmFsdWUpCiB7Ci0g
ICAgaWYgKG1fZWxlbWVudCkgewotICAgICAgICBTdHlsZTo6QXR0cmlidXRlQ2hhbmdlSW52YWxp
ZGF0aW9uIHN0eWxlSW52YWxpZGF0aW9uKCptX2VsZW1lbnQsIHF1YWxpZmllZE5hbWUoKSwgZWxl
bWVudEF0dHJpYnV0ZSgpLnZhbHVlKCksIHZhbHVlKTsKLSAgICAgICAgZWxlbWVudEF0dHJpYnV0
ZSgpLnNldFZhbHVlKHZhbHVlKTsKLSAgICB9IGVsc2UKKyAgICBpZiAoIW1fZWxlbWVudCkgewog
ICAgICAgICBtX3N0YW5kYWxvbmVWYWx1ZSA9IHZhbHVlOwotCi0gICAgaW52YWxpZGF0ZU5vZGVM
aXN0QW5kQ29sbGVjdGlvbkNhY2hlc0luQW5jZXN0b3JzKCZtX25hbWUsIG1fZWxlbWVudCk7Cisg
ICAgICAgIHJldHVybjsKKyAgICB9CisgICAgU3R5bGU6OkF0dHJpYnV0ZUNoYW5nZUludmFsaWRh
dGlvbiBzdHlsZUludmFsaWRhdGlvbigqbV9lbGVtZW50LCBxdWFsaWZpZWROYW1lKCksIGVsZW1l
bnRBdHRyaWJ1dGUoKS52YWx1ZSgpLCB2YWx1ZSk7CisgICAgZWxlbWVudEF0dHJpYnV0ZSgpLnNl
dFZhbHVlKHZhbHVlKTsKKyAgICBpbnZhbGlkYXRlTm9kZUxpc3RBbmRDb2xsZWN0aW9uQ2FjaGVz
SW5BbmNlc3RvcnNGb3JBdHRyaWJ1dGUobV9uYW1lKTsKIH0KIAogdm9pZCBBdHRyOjpzZXRWYWx1
ZUZvckJpbmRpbmdzKGNvbnN0IEF0b21pY1N0cmluZyYgdmFsdWUpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5o
CmluZGV4IDhjYzkwNjdhNmVhNGYwZTI3ZTQwZGUxODAzNDg4MTcwMjk3YmVhMzMuLjAwMTdiYTk1
YzFkMWM5OGJmMTUxZmNkN2NlOWIzMjA3ZDNmODFhY2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9Eb2N1bWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCkBA
IC03MjYsNyArNzI2LDggQEAgcHVibGljOgogICAgIHZvaWQgdW5yZWdpc3RlckNvbGxlY3Rpb24o
SFRNTENvbGxlY3Rpb24mKTsKICAgICB2b2lkIGNvbGxlY3Rpb25DYWNoZWRJZE5hbWVNYXAoY29u
c3QgSFRNTENvbGxlY3Rpb24mKTsKICAgICB2b2lkIGNvbGxlY3Rpb25XaWxsQ2xlYXJJZE5hbWVN
YXAoY29uc3QgSFRNTENvbGxlY3Rpb24mKTsKLSAgICBib29sIHNob3VsZEludmFsaWRhdGVOb2Rl
TGlzdEFuZENvbGxlY3Rpb25DYWNoZXMoY29uc3QgUXVhbGlmaWVkTmFtZSogYXR0ck5hbWUgPSBu
dWxscHRyKSBjb25zdDsKKyAgICBib29sIHNob3VsZEludmFsaWRhdGVOb2RlTGlzdEFuZENvbGxl
Y3Rpb25DYWNoZXMoKSBjb25zdDsKKyAgICBib29sIHNob3VsZEludmFsaWRhdGVOb2RlTGlzdEFu
ZENvbGxlY3Rpb25DYWNoZXNGb3JBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5h
bWUpIGNvbnN0OwogICAgIHZvaWQgaW52YWxpZGF0ZU5vZGVMaXN0QW5kQ29sbGVjdGlvbkNhY2hl
cyhjb25zdCBRdWFsaWZpZWROYW1lKiBhdHRyTmFtZSk7CiAKICAgICB2b2lkIGF0dGFjaE5vZGVJ
dGVyYXRvcihOb2RlSXRlcmF0b3IqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9F
bGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcAppbmRleCBlYzdkMTg0
ZmMyYjNlM2JjMzdkZmU3YWFlNWUyY2FkMTEzZDE0YTg0Li4zMDMwNTYyY2JlMWNkYTZkODI1YmZk
MThhMDllOTE2NTExOTcxNGI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVu
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCkBAIC0xMzQwLDcgKzEz
NDAsNyBAQCB2b2lkIEVsZW1lbnQ6OmF0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFt
ZSYgbmFtZSwgY29uc3QgQXRvbWljU3RyaW5nJiBvbAogICAgIGlmICh2YWx1ZUlzU2FtZUFzQmVm
b3JlKQogICAgICAgICByZXR1cm47CiAKLSAgICBpbnZhbGlkYXRlTm9kZUxpc3RBbmRDb2xsZWN0
aW9uQ2FjaGVzSW5BbmNlc3RvcnMoJm5hbWUsIHRoaXMpOworICAgIGludmFsaWRhdGVOb2RlTGlz
dEFuZENvbGxlY3Rpb25DYWNoZXNJbkFuY2VzdG9yc0ZvckF0dHJpYnV0ZShuYW1lKTsKIAogICAg
IGlmIChBWE9iamVjdENhY2hlKiBjYWNoZSA9IGRvY3VtZW50KCkuZXhpc3RpbmdBWE9iamVjdENh
Y2hlKCkpCiAgICAgICAgIGNhY2hlLT5oYW5kbGVBdHRyaWJ1dGVDaGFuZ2VkKG5hbWUsIHRoaXMp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwIGIvU291cmNlL1dlYkNv
cmUvZG9tL05vZGUuY3BwCmluZGV4IDk2ZjJlYjE2ZmZiOGQ2MmNiMzJlYWViYTVlYzA0MDA3NWE4
N2IwMjYuLjY3MGVkMzljY2JkZGQwM2I4MjFhYjk1OGQ1NzM3ZmVhOGQ2YmEyOGQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20v
Tm9kZS5jcHAKQEAgLTgzOCwxOSArODM4LDIwIEBAIGJvb2wgc2hvdWxkSW52YWxpZGF0ZU5vZGVM
aXN0Q2FjaGVzRm9yQXR0cjxudW1Ob2RlTGlzdEludmFsaWRhdGlvblR5cGVzPihjb25zdCB1CiAg
ICAgcmV0dXJuIGZhbHNlOwogfQogCi1ib29sIERvY3VtZW50OjpzaG91bGRJbnZhbGlkYXRlTm9k
ZUxpc3RBbmRDb2xsZWN0aW9uQ2FjaGVzKGNvbnN0IFF1YWxpZmllZE5hbWUqIGF0dHJOYW1lKSBj
b25zdAorYm9vbCBEb2N1bWVudDo6c2hvdWxkSW52YWxpZGF0ZU5vZGVMaXN0QW5kQ29sbGVjdGlv
bkNhY2hlcygpIGNvbnN0CiB7Ci0gICAgaWYgKGF0dHJOYW1lKQotICAgICAgICByZXR1cm4gc2hv
dWxkSW52YWxpZGF0ZU5vZGVMaXN0Q2FjaGVzRm9yQXR0cjxEb05vdEludmFsaWRhdGVPbkF0dHJp
YnV0ZUNoYW5nZXMgKyAxPihtX25vZGVMaXN0QW5kQ29sbGVjdGlvbkNvdW50cywgKmF0dHJOYW1l
KTsKLQotICAgIGZvciAoaW50IHR5cGUgPSAwOyB0eXBlIDwgbnVtTm9kZUxpc3RJbnZhbGlkYXRp
b25UeXBlczsgdHlwZSsrKSB7CisgICAgZm9yIChpbnQgdHlwZSA9IDA7IHR5cGUgPCBudW1Ob2Rl
TGlzdEludmFsaWRhdGlvblR5cGVzOyArK3R5cGUpIHsKICAgICAgICAgaWYgKG1fbm9kZUxpc3RB
bmRDb2xsZWN0aW9uQ291bnRzW3R5cGVdKQogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAg
fQotCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCitib29sIERvY3VtZW50OjpzaG91bGRJbnZhbGlk
YXRlTm9kZUxpc3RBbmRDb2xsZWN0aW9uQ2FjaGVzRm9yQXR0cmlidXRlKGNvbnN0IFF1YWxpZmll
ZE5hbWUmIGF0dHJOYW1lKSBjb25zdAoreworICAgIHJldHVybiBzaG91bGRJbnZhbGlkYXRlTm9k
ZUxpc3RDYWNoZXNGb3JBdHRyPERvTm90SW52YWxpZGF0ZU9uQXR0cmlidXRlQ2hhbmdlcyArIDE+
KG1fbm9kZUxpc3RBbmRDb2xsZWN0aW9uQ291bnRzLCBhdHRyTmFtZSk7Cit9CisKIHZvaWQgRG9j
dW1lbnQ6OmludmFsaWRhdGVOb2RlTGlzdEFuZENvbGxlY3Rpb25DYWNoZXMoY29uc3QgUXVhbGlm
aWVkTmFtZSogYXR0ck5hbWUpCiB7CiAgICAgVmVjdG9yPExpdmVOb2RlTGlzdCosIDg+IGxpc3Rz
OwpAQCAtODY0LDI4ICs4NjUsMzMgQEAgdm9pZCBEb2N1bWVudDo6aW52YWxpZGF0ZU5vZGVMaXN0
QW5kQ29sbGVjdGlvbkNhY2hlcyhjb25zdCBRdWFsaWZpZWROYW1lKiBhdHRyTmEKICAgICAgICAg
Y29sbGVjdGlvbi0+aW52YWxpZGF0ZUNhY2hlRm9yQXR0cmlidXRlKGF0dHJOYW1lKTsKIH0KIAot
dm9pZCBOb2RlOjppbnZhbGlkYXRlTm9kZUxpc3RBbmRDb2xsZWN0aW9uQ2FjaGVzSW5BbmNlc3Rv
cnMoY29uc3QgUXVhbGlmaWVkTmFtZSogYXR0ck5hbWUsIEVsZW1lbnQqIGF0dHJpYnV0ZU93bmVy
RWxlbWVudCkKK3ZvaWQgTm9kZTo6aW52YWxpZGF0ZU5vZGVMaXN0QW5kQ29sbGVjdGlvbkNhY2hl
c0luQW5jZXN0b3JzKCkKIHsKLSAgICBpZiAoaGFzUmFyZURhdGEoKSAmJiAoIWF0dHJOYW1lIHx8
IGlzQXR0cmlidXRlTm9kZSgpKSkgewotICAgICAgICBpZiAoTm9kZUxpc3RzTm9kZURhdGEqIGxp
c3RzID0gcmFyZURhdGEoKS0+bm9kZUxpc3RzKCkpCi0gICAgICAgICAgICBsaXN0cy0+Y2xlYXJD
aGlsZE5vZGVMaXN0Q2FjaGUoKTsKLSAgICB9CisgICAgaWYgKGF1dG8qIGxpc3RzID0gbm9kZUxp
c3RzKCkpCisgICAgICAgIGxpc3RzLT5jbGVhckNoaWxkTm9kZUxpc3RDYWNoZSgpOwogCi0gICAg
Ly8gTW9kaWZpY2F0aW9ucyB0byBhdHRyaWJ1dGVzIHRoYXQgYXJlIG5vdCBhc3NvY2lhdGVkIHdp
dGggYW4gRWxlbWVudCBjYW4ndCBpbnZhbGlkYXRlIE5vZGVMaXN0IGNhY2hlcy4KLSAgICBpZiAo
YXR0ck5hbWUgJiYgIWF0dHJpYnV0ZU93bmVyRWxlbWVudCkKLSAgICAgICAgcmV0dXJuOworICAg
IGlmIChkb2N1bWVudCgpLnNob3VsZEludmFsaWRhdGVOb2RlTGlzdEFuZENvbGxlY3Rpb25DYWNo
ZXMoKSkKKyAgICAgICAgaW52YWxpZGF0ZU5vZGVMaXN0QW5kQ29sbGVjdGlvbkNhY2hlc0luQW5j
ZXN0b3JzSW50ZXJuYWwoKTsKK30KIAotICAgIGlmICghZG9jdW1lbnQoKS5zaG91bGRJbnZhbGlk
YXRlTm9kZUxpc3RBbmRDb2xsZWN0aW9uQ2FjaGVzKGF0dHJOYW1lKSkKLSAgICAgICAgcmV0dXJu
Owordm9pZCBOb2RlOjppbnZhbGlkYXRlTm9kZUxpc3RBbmRDb2xsZWN0aW9uQ2FjaGVzSW5BbmNl
c3RvcnNGb3JBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUpCit7CisgICAg
QVNTRVJUKGlzPEVsZW1lbnQ+KCp0aGlzKSB8fCAoaXM8QXR0cj4oKnRoaXMpICYmIGRvd25jYXN0
PEF0dHI+KCp0aGlzKS5vd25lckVsZW1lbnQoKSkpOworCisgICAgaWYgKGRvY3VtZW50KCkuc2hv
dWxkSW52YWxpZGF0ZU5vZGVMaXN0QW5kQ29sbGVjdGlvbkNhY2hlc0ZvckF0dHJpYnV0ZShhdHRy
TmFtZSkpCisgICAgICAgIGludmFsaWRhdGVOb2RlTGlzdEFuZENvbGxlY3Rpb25DYWNoZXNJbkFu
Y2VzdG9yc0ludGVybmFsKCZhdHRyTmFtZSk7Cit9CisKK3ZvaWQgTm9kZTo6aW52YWxpZGF0ZU5v
ZGVMaXN0QW5kQ29sbGVjdGlvbkNhY2hlc0luQW5jZXN0b3JzSW50ZXJuYWwoY29uc3QgUXVhbGlm
aWVkTmFtZSogYXR0ck5hbWUpCit7CisgICAgQVNTRVJUKGF0dHJOYW1lIHx8IGRvY3VtZW50KCku
c2hvdWxkSW52YWxpZGF0ZU5vZGVMaXN0QW5kQ29sbGVjdGlvbkNhY2hlcygpKTsKKyAgICBBU1NF
UlQoIWF0dHJOYW1lIHx8IGRvY3VtZW50KCkuc2hvdWxkSW52YWxpZGF0ZU5vZGVMaXN0QW5kQ29s
bGVjdGlvbkNhY2hlc0ZvckF0dHJpYnV0ZSgqYXR0ck5hbWUpKTsKIAogICAgIGRvY3VtZW50KCku
aW52YWxpZGF0ZU5vZGVMaXN0QW5kQ29sbGVjdGlvbkNhY2hlcyhhdHRyTmFtZSk7CiAKLSAgICBm
b3IgKE5vZGUqIG5vZGUgPSB0aGlzOyBub2RlOyBub2RlID0gbm9kZS0+cGFyZW50Tm9kZSgpKSB7
Ci0gICAgICAgIGlmICghbm9kZS0+aGFzUmFyZURhdGEoKSkKLSAgICAgICAgICAgIGNvbnRpbnVl
OwotICAgICAgICBOb2RlUmFyZURhdGEqIGRhdGEgPSBub2RlLT5yYXJlRGF0YSgpOwotICAgICAg
ICBpZiAoZGF0YS0+bm9kZUxpc3RzKCkpCi0gICAgICAgICAgICBkYXRhLT5ub2RlTGlzdHMoKS0+
aW52YWxpZGF0ZUNhY2hlcyhhdHRyTmFtZSk7CisgICAgZm9yIChhdXRvKiBub2RlID0gdGhpczsg
bm9kZTsgbm9kZSA9IG5vZGUtPnBhcmVudE5vZGUoKSkgeworICAgICAgICBpZiAoYXV0byogbGlz
dHMgPSBub2RlLT5ub2RlTGlzdHMoKSkKKyAgICAgICAgICAgIGxpc3RzLT5pbnZhbGlkYXRlQ2Fj
aGVzKGF0dHJOYW1lKTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Ob2RlLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5oCmluZGV4IDI1ODZhNDdiODM0MGI3
N2YwZGY0ZDFmMWMxNTgyN2EzMTM3Nzc2MDIuLjI4YjI0ZmFjYjM5YWIxNGQwNzk3NmIxMTVhMzBl
MGMyMjIxMjA2OTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvZG9tL05vZGUuaApAQCAtNDc0LDcgKzQ3NCw4IEBAIHB1YmxpYzoKICAg
ICB2b2lkIHNob3dUcmVlRm9yVGhpc0Fjcm9zc0ZyYW1lKCkgY29uc3Q7CiAjZW5kaWYgLy8gRU5B
QkxFKFRSRUVfREVCVUdHSU5HKQogCi0gICAgdm9pZCBpbnZhbGlkYXRlTm9kZUxpc3RBbmRDb2xs
ZWN0aW9uQ2FjaGVzSW5BbmNlc3RvcnMoY29uc3QgUXVhbGlmaWVkTmFtZSogYXR0ck5hbWUgPSBu
dWxscHRyLCBFbGVtZW50KiBhdHRyaWJ1dGVPd25lckVsZW1lbnQgPSBudWxscHRyKTsKKyAgICB2
b2lkIGludmFsaWRhdGVOb2RlTGlzdEFuZENvbGxlY3Rpb25DYWNoZXNJbkFuY2VzdG9ycygpOwor
ICAgIHZvaWQgaW52YWxpZGF0ZU5vZGVMaXN0QW5kQ29sbGVjdGlvbkNhY2hlc0luQW5jZXN0b3Jz
Rm9yQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKTsKICAgICBOb2RlTGlz
dHNOb2RlRGF0YSogbm9kZUxpc3RzKCk7CiAgICAgdm9pZCBjbGVhck5vZGVMaXN0cygpOwogCkBA
IC02NjUsNiArNjY2LDggQEAgcHJpdmF0ZToKICAgICB2b2lkIHRyYWNrRm9yRGVidWdnaW5nKCk7
CiAgICAgdm9pZCBtYXRlcmlhbGl6ZVJhcmVEYXRhKCk7CiAKKyAgICB2b2lkIGludmFsaWRhdGVO
b2RlTGlzdEFuZENvbGxlY3Rpb25DYWNoZXNJbkFuY2VzdG9yc0ludGVybmFsKGNvbnN0IFF1YWxp
ZmllZE5hbWUqIGF0dHJOYW1lID0gbnVsbHB0cik7CisKICAgICBWZWN0b3I8c3RkOjp1bmlxdWVf
cHRyPE11dGF0aW9uT2JzZXJ2ZXJSZWdpc3RyYXRpb24+PiogbXV0YXRpb25PYnNlcnZlclJlZ2lz
dHJ5KCk7CiAgICAgSGFzaFNldDxNdXRhdGlvbk9ic2VydmVyUmVnaXN0cmF0aW9uKj4qIHRyYW5z
aWVudE11dGF0aW9uT2JzZXJ2ZXJSZWdpc3RyeSgpOwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>309580</attachid>
            <date>2017-05-09 22:40:09 -0700</date>
            <delta_ts>2017-05-09 22:48:27 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-171909-20170509224008.patch</filename>
            <type>text/plain</type>
            <size>14588</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE2NTYxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTAxYTlmYTZiOWM2ZGMw
ZDY2OTlmNGQwMDQwMzU1MTYyMDQ4ZmU2MS4uODk2MmFmNjdkOTM1NDFkM2U5MTU4NTdhNzhjOGQ4
MjYzMmRjZGU3MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY3IEBACisyMDE3LTA1LTA5ICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgU2ltcGxpZnkgcmVsYXRpb25z
aGlwIGJldHdlZW4gQXR0ciBhbmQgRWxlbWVudCBub3cgdGhhdCBBdHRyIGlzIGNoaWxkbGVzcwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTcxOTA5CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgU2ltcGxpZnkg
cmVsYXRpb25zaGlwIGJldHdlZW4gQXR0ciBhbmQgRWxlbWVudCBub3cgdGhhdCBBdHRyIGlzIGNo
aWxkbGVzcworICAgICAgICBhZnRlciByMjE2MjU5LgorCisgICAgICAgIE5vIG5ldyB0ZXN0cywg
bm8gV2ViIGZhY2luZyBiZWhhdmlvciBjaGFuZ2UuCisKKyAgICAgICAgKiBkb20vQXR0ci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpBdHRyOjpzZXRWYWx1ZSk6CisgICAgICAgIEF0dHI6OnNldFZh
bHVlKCkgd2FzIG9ubHkgY2FsbGVkIGJ5IEVsZW1lbnQ6OnNldEF0dHJpYnV0ZUludGVybmFsKCkg
dG8gbWFrZSBzdXJlCisgICAgICAgIHdlIHVwZGF0ZWQgdGhlIEF0dHIgbm9kZSdzIFRleHQgY2hp
bGQuIEhvd2V2ZXIsIG5vdyB0aGF0IEF0dHIgaGFzIG5vIFRleHQgY2hpbGQsCisgICAgICAgIEVs
ZW1lbnQgbm8gbG9uZ2VyIG5lZWRzIHRvIHVwZGF0ZSB0aGUgQXR0ciBub2RlJ3MgdmFsdWUuCisg
ICAgICAgIEF0dHI6OnNldFZhbHVlRm9yQmluZGluZ3MoKSB3YSB0aHVzIHJlbmFtZWQgdG8gc2V0
VmFsdWUoKS4gSXRzIGltcGxlbWVudGF0aW9uCisgICAgICAgIHdhcyBhbHNvIHNpbXBsaWZpZWQg
YnkgY2FsbGluZyBFbGVtZW50OjpzZXRBdHRyaWJ1dGUoKSBvbiBpdHMgb3duZXJFbGVtZW50LCBp
ZgorICAgICAgICBpdCBoYXMgb25lLCBpbnN0ZWFkIG9mIGR1cGxpY2F0aW5nIGEgYnVuY2ggb2Yg
Y29kZSBmcm9tCisgICAgICAgIEVsZW1lbnQ6OnNldEF0dHJpYnV0ZUludGVybmFsKCkuCisKKyAg
ICAgICAgKFdlYkNvcmU6OkF0dHI6OnNldE5vZGVWYWx1ZSk6CisgICAgICAgIENhbGwgc2V0VmFs
dWUoKSBpbnN0ZWFkIG9mIHNldFZhbHVlRm9yQmluZGluZ3MoKSBub3cgdGhhdCBpdCBoYXMgYmVl
biByZW5hbWVkLgorCisgICAgICAgICogZG9tL0F0dHIuaDoKKyAgICAgICAgKiBkb20vQXR0ci5p
ZGw6CisgICAgICAgIFJlbmFtZSB2YWx1ZUZvckJpbmRpbmdzIC8gc2V0VmFsdWVGb3JCaW5kaW5n
cyB0byB2YWx1ZSAvIHNldFZhbHVlLgorCisgICAgICAgICogZG9tL0RvY3VtZW50Lmg6CisgICAg
ICAgIFNwbGl0IHNob3VsZEludmFsaWRhdGVOb2RlTGlzdEFuZENvbGxlY3Rpb25DYWNoZXMoKSBp
bnRvIDIgbWV0aG9kcywgb25lIHRha2luZyBhbiBBdHRyIG5hbWUKKyAgICAgICAgYW5kIGFub3Ro
ZXIgdGhhdCBkb2VzIG5vdC4gVGhlcmUgYXJlIG5vdyAyIGNhbGxzIHNpdGVzIGluc3RlYWQgb2Yg
b25lLCBzbyB3ZSBubyBsb25nZXIgbmVlZAorICAgICAgICB0byBicmFuY2ggaW4gdGhpcyBmdW5j
dGlvbi4KKworICAgICAgICAqIGRvbS9FbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVs
ZW1lbnQ6OnNldEF0dHJpYnV0ZUludGVybmFsKToKKyAgICAgICAgRHJvcCBjb2RlIGNhbGxpbmcg
QXR0cjo6c2V0VmFsdWUoKSBvbiB0aGUgQXR0ciBub2RlIHNpbmNlIEF0dHI6OnNldFZhbHVlKCkg
d2FzIG9ubHkKKyAgICAgICAgZHVwbGljYXRpbmcgbG9naWMgZnJvbSBFbGVtZW50OjpzZXRBdHRy
aWJ1dGVJbnRlcm5hbCgpIGFmdGVyIHIyMTYyNTkuIFRoZXJlIGlzIG5vdGhpbmcKKyAgICAgICAg
b24gQXR0ciB0aGF0IG5lZWRzIHVwZGF0aW5nIHdoZW4gYW4gZWxlbWVudCBhdHRyaWJ1dGUgZ2V0
cyB1cGRhdGVkLgorCisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjphdHRyaWJ1dGVDaGFuZ2Vk
KToKKyAgICAgICAgQ2FsbCB0aGUgbmV3IGludmFsaWRhdGVOb2RlTGlzdEFuZENvbGxlY3Rpb25D
YWNoZXNJbkFuY2VzdG9yc0ZvckF0dHJpYnV0ZSgpLiBUaGlzCisgICAgICAgIGlzIHRoZSBvbmx5
IGNhbGwgc2l0ZSB0aGF0IHBhc3NlcyBhbiBhdHRyaWJ1dGUgbmFtZS4KKworICAgICAgICAqIGRv
bS9Ob2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpzaG91bGRJbnZhbGlkYXRl
Tm9kZUxpc3RBbmRDb2xsZWN0aW9uQ2FjaGVzKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50
OjpzaG91bGRJbnZhbGlkYXRlTm9kZUxpc3RBbmRDb2xsZWN0aW9uQ2FjaGVzRm9yQXR0cmlidXRl
KToKKyAgICAgICAgU3BsaXQgaW50byAyIHRvIGF2b2lkIGJyYW5jaGluZywgYXMgZXhwbGFpbmVk
IGFib3ZlLgorCisgICAgICAgIChXZWJDb3JlOjpOb2RlOjppbnZhbGlkYXRlTm9kZUxpc3RBbmRD
b2xsZWN0aW9uQ2FjaGVzSW5BbmNlc3RvcnMpOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6aW52
YWxpZGF0ZU5vZGVMaXN0QW5kQ29sbGVjdGlvbkNhY2hlc0luQW5jZXN0b3JzRm9yQXR0cmlidXRl
KToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6OmludmFsaWRhdGVOb2RlTGlzdEFuZENvbGxlY3Rp
b25DYWNoZXNJbkFuY2VzdG9yc0ludGVybmFsKToKKyAgICAgICAgLSBpbnZhbGlkYXRlTm9kZUxp
c3RBbmRDb2xsZWN0aW9uQ2FjaGVzSW5BbmNlc3RvcnMoKSB1c2VkIHRvIGludmFsaWRhdGUgY2hp
bGROb2RlTGlzdHMKKyAgICAgICAgICBpZiB0aGUgTm9kZSB3YXMgYW4gYXR0cmlidXRlIG5vZGUu
IERyb3AgdGhpcyBhcyB0aGlzIGlzIG5vIGxvbmdlciBuZWVkZWQgYXMgb2YgcjIxNjI1OS4KKyAg
ICAgICAgLSBBZnRlciB0aGUgY2hhbmdlIHRvIEF0dHI6OnNldFZhbHVlKCksIGNhbGwgc2l0ZXMg
Zm9yCisgICAgICAgICAgaW52YWxpZGF0ZU5vZGVMaXN0QW5kQ29sbGVjdGlvbkNhY2hlc0luQW5j
ZXN0b3JzKCkgZWl0aGVyIGhhZCBubyBwYXJhbWV0ZXJzLCBvciBib3RoCisgICAgICAgICAgcGFy
YW1ldGVycyBwcmVzZW50IGFuZCBub24tbnVsbC4gVGhlcmUgaXMgdGhlcmVmb3JlIG5vIGxvbmdl
ciBhbnkgbmVlZCB0byBoYW5kbGUKKyAgICAgICAgICBoYXZpbmcgYW4gYXR0ck5hbWUgYnV0IG5v
IGF0dHJpYnV0ZU93bmVyRWxlbWVudC4gVG8gbWFrZSB0aGlzIG9idmlvdXMsIEkgc3BsaXQgdGhp
cworICAgICAgICAgIGludG8gMiBtZXRob2RzOiBpbnZhbGlkYXRlTm9kZUxpc3RBbmRDb2xsZWN0
aW9uQ2FjaGVzSW5BbmNlc3RvcnMoKSBhbmQKKyAgICAgICAgICBpbnZhbGlkYXRlTm9kZUxpc3RB
bmRDb2xsZWN0aW9uQ2FjaGVzSW5BbmNlc3RvcnNGb3JBdHRyaWJ1dGUoYXR0ck5hbWUpLiBXZSBu
byBsb25nZXIKKyAgICAgICAgICBuZWVkIHRoZSBhdHRyaWJ1dGVPd25lckVsZW1lbnQgcGFyYW1l
dGVyIGFzIGl0IHdhcyBvbmx5IHVzZWQgdG8gZXhpdCBlYXJseS4KKworICAgICAgICAqIGRvbS9O
b2RlLmg6CisKIDIwMTctMDUtMDkgIEplcmVteSBKb25lcyAgPGplcmVteWpAYXBwbGUuY29tPgog
CiAgICAgICAgIFZpZGVvIGZ1bGxzY3JlZW4gd2luZG93IGxldmVsIHNob3VsZCBiZSBiZWxvdyBz
dGF0dXMgYmFyLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nIGIvU291
cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCmluZGV4IDM2NGM5MGU2OTY1NDIyMDMyYjliNGEwODdj
MjMyMmM3MTAxY2U1ZTcuLjhkNzY0NzkzYzExMmNlMjg4MTMxNzdiYzk5MmJmMmZhNDViN2Q0MDAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
S2l0L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBAQAorMjAxNy0wNS0wOSAgQ2hyaXMgRHVt
ZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIFNpbXBsaWZ5IHJlbGF0aW9uc2hpcCBi
ZXR3ZWVuIEF0dHIgYW5kIEVsZW1lbnQgbm93IHRoYXQgQXR0ciBpcyBjaGlsZGxlc3MKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3MTkwOQorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEJ1aWxkIGZpeC4KKwor
ICAgICAgICAqIERPTS9ET01BdHRyLm1tOgorICAgICAgICAoLVtET01BdHRyIHZhbHVlXSk6Cisg
ICAgICAgICgtW0RPTUF0dHIgc2V0VmFsdWU6XSk6CisKIDIwMTctMDUtMDggIENocmlzIER1bWV6
ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBNb3ZlICdzdHlsZScgZnJvbSBFbGVtZW50
IHRvIEhUTUxFbGVtZW50IC8gU1ZHRWxlbWVudCBhbmQgbWFrZSBpdCBzZXR0YWJsZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0F0dHIuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0F0
dHIuY3BwCmluZGV4IDBhNGRjNDg5NTk3NGM0YmYyYWQyYmYyNGE0MmQ5YzFjNzZkYzM3YTUuLmM4
ZmZlYmU4ODZhMTUyMzE0NGEzMWMxMmI5NTQ2NmUyZWQwNjVkMmYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9BdHRyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQXR0ci5jcHAK
QEAgLTg2LDI4ICs4NiwxNSBAQCBFeGNlcHRpb25Pcjx2b2lkPiBBdHRyOjpzZXRQcmVmaXgoY29u
c3QgQXRvbWljU3RyaW5nJiBwcmVmaXgpCiAKIHZvaWQgQXR0cjo6c2V0VmFsdWUoY29uc3QgQXRv
bWljU3RyaW5nJiB2YWx1ZSkKIHsKLSAgICBpZiAobV9lbGVtZW50KSB7Ci0gICAgICAgIFN0eWxl
OjpBdHRyaWJ1dGVDaGFuZ2VJbnZhbGlkYXRpb24gc3R5bGVJbnZhbGlkYXRpb24oKm1fZWxlbWVu
dCwgcXVhbGlmaWVkTmFtZSgpLCBlbGVtZW50QXR0cmlidXRlKCkudmFsdWUoKSwgdmFsdWUpOwot
ICAgICAgICBlbGVtZW50QXR0cmlidXRlKCkuc2V0VmFsdWUodmFsdWUpOwotICAgIH0gZWxzZQot
ICAgICAgICBtX3N0YW5kYWxvbmVWYWx1ZSA9IHZhbHVlOwotCi0gICAgaW52YWxpZGF0ZU5vZGVM
aXN0QW5kQ29sbGVjdGlvbkNhY2hlc0luQW5jZXN0b3JzKCZtX25hbWUsIG1fZWxlbWVudCk7Ci19
Ci0KLXZvaWQgQXR0cjo6c2V0VmFsdWVGb3JCaW5kaW5ncyhjb25zdCBBdG9taWNTdHJpbmcmIHZh
bHVlKQotewotICAgIEF0b21pY1N0cmluZyBvbGRWYWx1ZSA9IHRoaXMtPnZhbHVlKCk7CiAgICAg
aWYgKG1fZWxlbWVudCkKLSAgICAgICAgbV9lbGVtZW50LT53aWxsTW9kaWZ5QXR0cmlidXRlKHF1
YWxpZmllZE5hbWUoKSwgb2xkVmFsdWUsIHZhbHVlKTsKLSAgICBzZXRWYWx1ZSh2YWx1ZSk7Ci0g
ICAgaWYgKG1fZWxlbWVudCkKLSAgICAgICAgbV9lbGVtZW50LT5kaWRNb2RpZnlBdHRyaWJ1dGUo
cXVhbGlmaWVkTmFtZSgpLCBvbGRWYWx1ZSwgdmFsdWUpOworICAgICAgICBtX2VsZW1lbnQtPnNl
dEF0dHJpYnV0ZShxdWFsaWZpZWROYW1lKCksIHZhbHVlKTsKKyAgICBlbHNlCisgICAgICAgIG1f
c3RhbmRhbG9uZVZhbHVlID0gdmFsdWU7CiB9CiAKIEV4Y2VwdGlvbk9yPHZvaWQ+IEF0dHI6OnNl
dE5vZGVWYWx1ZShjb25zdCBTdHJpbmcmIHZhbHVlKQogewotICAgIHNldFZhbHVlRm9yQmluZGlu
Z3ModmFsdWUpOworICAgIHNldFZhbHVlKHZhbHVlKTsKICAgICByZXR1cm4geyB9OwogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vQXR0ci5oIGIvU291cmNlL1dlYkNvcmUvZG9t
L0F0dHIuaAppbmRleCA3MmE2MGI2ZmY2M2VjMGExNGFiMjgwNmI5MmFkY2RmODg3OGNkNjA3Li40
ZDljNjU4NGE2OTYyNDZmMzZjMDU1ODU2NWFmN2Y0Y2M3NDcwNjIyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vQXR0ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9BdHRyLmgKQEAg
LTQ0LDkgKzQ0LDcgQEAgcHVibGljOgogICAgIEVsZW1lbnQqIG93bmVyRWxlbWVudCgpIGNvbnN0
IHsgcmV0dXJuIG1fZWxlbWVudDsgfQogCiAgICAgV0VCQ09SRV9FWFBPUlQgY29uc3QgQXRvbWlj
U3RyaW5nJiB2YWx1ZSgpIGNvbnN0OwotICAgIHZvaWQgc2V0VmFsdWUoY29uc3QgQXRvbWljU3Ry
aW5nJik7Ci0gICAgY29uc3QgQXRvbWljU3RyaW5nJiB2YWx1ZUZvckJpbmRpbmdzKCkgY29uc3Qg
eyByZXR1cm4gdmFsdWUoKTsgfQotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0VmFsdWVGb3JC
aW5kaW5ncyhjb25zdCBBdG9taWNTdHJpbmcmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNl
dFZhbHVlKGNvbnN0IEF0b21pY1N0cmluZyYpOwogCiAgICAgY29uc3QgUXVhbGlmaWVkTmFtZSYg
cXVhbGlmaWVkTmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fbmFtZTsgfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9kb20vQXR0ci5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQXR0ci5pZGwK
aW5kZXggYjA5MzUxMTBjYTEzMzYzNzkyMWYwY2I4NTAwNjA1OTMyOTQxZmVhNi4uNDNmODYwZmY5
MDIzMjI2MjQyNmE4ZmMzMGNjNjhhNDgyMmI5N2Y1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvZG9tL0F0dHIuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9BdHRyLmlkbApAQCAtMjcs
NyArMjcsNyBAQAogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01TdHJpbmc/IHByZWZpeDsKICAg
ICByZWFkb25seSBhdHRyaWJ1dGUgRE9NU3RyaW5nIGxvY2FsTmFtZTsKICAgICByZWFkb25seSBh
dHRyaWJ1dGUgRE9NU3RyaW5nIG5hbWU7Ci0gICAgW0NFUmVhY3Rpb25zLCBJbXBsZW1lbnRlZEFz
PXZhbHVlRm9yQmluZGluZ3NdIGF0dHJpYnV0ZSBET01TdHJpbmcgdmFsdWU7CisgICAgW0NFUmVh
Y3Rpb25zXSBhdHRyaWJ1dGUgRE9NU3RyaW5nIHZhbHVlOwogCiAgICAgcmVhZG9ubHkgYXR0cmli
dXRlIEVsZW1lbnQ/IG93bmVyRWxlbWVudDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZG9tL0RvY3VtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAppbmRleCA4Y2M5
MDY3YTZlYTRmMGUyN2U0MGRlMTgwMzQ4ODE3MDI5N2JlYTMzLi4wMDE3YmE5NWMxZDFjOThiZjE1
MWZjZDdjZTliMzIwN2QzZjgxYWNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9j
dW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaApAQCAtNzI2LDcgKzcy
Niw4IEBAIHB1YmxpYzoKICAgICB2b2lkIHVucmVnaXN0ZXJDb2xsZWN0aW9uKEhUTUxDb2xsZWN0
aW9uJik7CiAgICAgdm9pZCBjb2xsZWN0aW9uQ2FjaGVkSWROYW1lTWFwKGNvbnN0IEhUTUxDb2xs
ZWN0aW9uJik7CiAgICAgdm9pZCBjb2xsZWN0aW9uV2lsbENsZWFySWROYW1lTWFwKGNvbnN0IEhU
TUxDb2xsZWN0aW9uJik7Ci0gICAgYm9vbCBzaG91bGRJbnZhbGlkYXRlTm9kZUxpc3RBbmRDb2xs
ZWN0aW9uQ2FjaGVzKGNvbnN0IFF1YWxpZmllZE5hbWUqIGF0dHJOYW1lID0gbnVsbHB0cikgY29u
c3Q7CisgICAgYm9vbCBzaG91bGRJbnZhbGlkYXRlTm9kZUxpc3RBbmRDb2xsZWN0aW9uQ2FjaGVz
KCkgY29uc3Q7CisgICAgYm9vbCBzaG91bGRJbnZhbGlkYXRlTm9kZUxpc3RBbmRDb2xsZWN0aW9u
Q2FjaGVzRm9yQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKSBjb25zdDsK
ICAgICB2b2lkIGludmFsaWRhdGVOb2RlTGlzdEFuZENvbGxlY3Rpb25DYWNoZXMoY29uc3QgUXVh
bGlmaWVkTmFtZSogYXR0ck5hbWUpOwogCiAgICAgdm9pZCBhdHRhY2hOb2RlSXRlcmF0b3IoTm9k
ZUl0ZXJhdG9yKik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKaW5kZXggZWM3ZDE4NGZjMmIzZTNiYzM3
ZGZlN2FhZTVlMmNhZDExM2QxNGE4NC4uZjcxYmFjY2I2ODZjNzBiNTFkNGU2MDU5ZjhmNGQxZjlm
ZmM5Yjc3MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcApAQCAtMTI3NiwxNSArMTI3Niw4IEBAIGlu
bGluZSB2b2lkIEVsZW1lbnQ6OnNldEF0dHJpYnV0ZUludGVybmFsKHVuc2lnbmVkIGluZGV4LCBj
b25zdCBRdWFsaWZpZWROYW1lJiBuCiAgICAgd2lsbE1vZGlmeUF0dHJpYnV0ZShhdHRyaWJ1dGVO
YW1lLCBvbGRWYWx1ZSwgbmV3VmFsdWUpOwogCiAgICAgaWYgKG5ld1ZhbHVlICE9IG9sZFZhbHVl
KSB7Ci0gICAgICAgIC8vIElmIHRoZXJlIGlzIGFuIEF0dHIgbm9kZSBob29rZWQgdG8gdGhpcyBh
dHRyaWJ1dGUsIHRoZSBBdHRyOjpzZXRWYWx1ZSgpIGNhbGwgYmVsb3cKLSAgICAgICAgLy8gd2ls
bCB3cml0ZSBpbnRvIHRoZSBFbGVtZW50RGF0YS4KLSAgICAgICAgLy8gRklYTUU6IFJlZmFjdG9y
IHRoaXMgc28gaXQgbWFrZXMgc29tZSBzZW5zZS4KLSAgICAgICAgaWYgKFJlZlB0cjxBdHRyPiBh
dHRyTm9kZSA9IGF0dHJJZkV4aXN0cyhhdHRyaWJ1dGVOYW1lKSkKLSAgICAgICAgICAgIGF0dHJO
b2RlLT5zZXRWYWx1ZShuZXdWYWx1ZSk7Ci0gICAgICAgIGVsc2UgewotICAgICAgICAgICAgU3R5
bGU6OkF0dHJpYnV0ZUNoYW5nZUludmFsaWRhdGlvbiBzdHlsZUludmFsaWRhdGlvbigqdGhpcywg
bmFtZSwgb2xkVmFsdWUsIG5ld1ZhbHVlKTsKLSAgICAgICAgICAgIGVuc3VyZVVuaXF1ZUVsZW1l
bnREYXRhKCkuYXR0cmlidXRlQXQoaW5kZXgpLnNldFZhbHVlKG5ld1ZhbHVlKTsKLSAgICAgICAg
fQorICAgICAgICBTdHlsZTo6QXR0cmlidXRlQ2hhbmdlSW52YWxpZGF0aW9uIHN0eWxlSW52YWxp
ZGF0aW9uKCp0aGlzLCBuYW1lLCBvbGRWYWx1ZSwgbmV3VmFsdWUpOworICAgICAgICBlbnN1cmVV
bmlxdWVFbGVtZW50RGF0YSgpLmF0dHJpYnV0ZUF0KGluZGV4KS5zZXRWYWx1ZShuZXdWYWx1ZSk7
CiAgICAgfQogCiAgICAgZGlkTW9kaWZ5QXR0cmlidXRlKGF0dHJpYnV0ZU5hbWUsIG9sZFZhbHVl
LCBuZXdWYWx1ZSk7CkBAIC0xMzQwLDcgKzEzMzMsNyBAQCB2b2lkIEVsZW1lbnQ6OmF0dHJpYnV0
ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbWljU3RyaW5nJiBv
bAogICAgIGlmICh2YWx1ZUlzU2FtZUFzQmVmb3JlKQogICAgICAgICByZXR1cm47CiAKLSAgICBp
bnZhbGlkYXRlTm9kZUxpc3RBbmRDb2xsZWN0aW9uQ2FjaGVzSW5BbmNlc3RvcnMoJm5hbWUsIHRo
aXMpOworICAgIGludmFsaWRhdGVOb2RlTGlzdEFuZENvbGxlY3Rpb25DYWNoZXNJbkFuY2VzdG9y
c0ZvckF0dHJpYnV0ZShuYW1lKTsKIAogICAgIGlmIChBWE9iamVjdENhY2hlKiBjYWNoZSA9IGRv
Y3VtZW50KCkuZXhpc3RpbmdBWE9iamVjdENhY2hlKCkpCiAgICAgICAgIGNhY2hlLT5oYW5kbGVB
dHRyaWJ1dGVDaGFuZ2VkKG5hbWUsIHRoaXMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZG9tL05vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwCmluZGV4IDk2ZjJlYjE2
ZmZiOGQ2MmNiMzJlYWViYTVlYzA0MDA3NWE4N2IwMjYuLjQ2NmQzYjNlYmRjYzc2NDQ5NmM4NTE5
ZDMxY2JmNTM3NDkxY2EwZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAKQEAgLTgzOCwxOSArODM4LDIwIEBA
IGJvb2wgc2hvdWxkSW52YWxpZGF0ZU5vZGVMaXN0Q2FjaGVzRm9yQXR0cjxudW1Ob2RlTGlzdElu
dmFsaWRhdGlvblR5cGVzPihjb25zdCB1CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1ib29sIERv
Y3VtZW50OjpzaG91bGRJbnZhbGlkYXRlTm9kZUxpc3RBbmRDb2xsZWN0aW9uQ2FjaGVzKGNvbnN0
IFF1YWxpZmllZE5hbWUqIGF0dHJOYW1lKSBjb25zdAorYm9vbCBEb2N1bWVudDo6c2hvdWxkSW52
YWxpZGF0ZU5vZGVMaXN0QW5kQ29sbGVjdGlvbkNhY2hlcygpIGNvbnN0CiB7Ci0gICAgaWYgKGF0
dHJOYW1lKQotICAgICAgICByZXR1cm4gc2hvdWxkSW52YWxpZGF0ZU5vZGVMaXN0Q2FjaGVzRm9y
QXR0cjxEb05vdEludmFsaWRhdGVPbkF0dHJpYnV0ZUNoYW5nZXMgKyAxPihtX25vZGVMaXN0QW5k
Q29sbGVjdGlvbkNvdW50cywgKmF0dHJOYW1lKTsKLQotICAgIGZvciAoaW50IHR5cGUgPSAwOyB0
eXBlIDwgbnVtTm9kZUxpc3RJbnZhbGlkYXRpb25UeXBlczsgdHlwZSsrKSB7CisgICAgZm9yIChp
bnQgdHlwZSA9IDA7IHR5cGUgPCBudW1Ob2RlTGlzdEludmFsaWRhdGlvblR5cGVzOyArK3R5cGUp
IHsKICAgICAgICAgaWYgKG1fbm9kZUxpc3RBbmRDb2xsZWN0aW9uQ291bnRzW3R5cGVdKQogICAg
ICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQotCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCiti
b29sIERvY3VtZW50OjpzaG91bGRJbnZhbGlkYXRlTm9kZUxpc3RBbmRDb2xsZWN0aW9uQ2FjaGVz
Rm9yQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKSBjb25zdAoreworICAg
IHJldHVybiBzaG91bGRJbnZhbGlkYXRlTm9kZUxpc3RDYWNoZXNGb3JBdHRyPERvTm90SW52YWxp
ZGF0ZU9uQXR0cmlidXRlQ2hhbmdlcyArIDE+KG1fbm9kZUxpc3RBbmRDb2xsZWN0aW9uQ291bnRz
LCBhdHRyTmFtZSk7Cit9CisKIHZvaWQgRG9jdW1lbnQ6OmludmFsaWRhdGVOb2RlTGlzdEFuZENv
bGxlY3Rpb25DYWNoZXMoY29uc3QgUXVhbGlmaWVkTmFtZSogYXR0ck5hbWUpCiB7CiAgICAgVmVj
dG9yPExpdmVOb2RlTGlzdCosIDg+IGxpc3RzOwpAQCAtODY0LDI4ICs4NjUsMzMgQEAgdm9pZCBE
b2N1bWVudDo6aW52YWxpZGF0ZU5vZGVMaXN0QW5kQ29sbGVjdGlvbkNhY2hlcyhjb25zdCBRdWFs
aWZpZWROYW1lKiBhdHRyTmEKICAgICAgICAgY29sbGVjdGlvbi0+aW52YWxpZGF0ZUNhY2hlRm9y
QXR0cmlidXRlKGF0dHJOYW1lKTsKIH0KIAotdm9pZCBOb2RlOjppbnZhbGlkYXRlTm9kZUxpc3RB
bmRDb2xsZWN0aW9uQ2FjaGVzSW5BbmNlc3RvcnMoY29uc3QgUXVhbGlmaWVkTmFtZSogYXR0ck5h
bWUsIEVsZW1lbnQqIGF0dHJpYnV0ZU93bmVyRWxlbWVudCkKK3ZvaWQgTm9kZTo6aW52YWxpZGF0
ZU5vZGVMaXN0QW5kQ29sbGVjdGlvbkNhY2hlc0luQW5jZXN0b3JzKCkKIHsKLSAgICBpZiAoaGFz
UmFyZURhdGEoKSAmJiAoIWF0dHJOYW1lIHx8IGlzQXR0cmlidXRlTm9kZSgpKSkgewotICAgICAg
ICBpZiAoTm9kZUxpc3RzTm9kZURhdGEqIGxpc3RzID0gcmFyZURhdGEoKS0+bm9kZUxpc3RzKCkp
Ci0gICAgICAgICAgICBsaXN0cy0+Y2xlYXJDaGlsZE5vZGVMaXN0Q2FjaGUoKTsKLSAgICB9Cisg
ICAgaWYgKGF1dG8qIGxpc3RzID0gbm9kZUxpc3RzKCkpCisgICAgICAgIGxpc3RzLT5jbGVhckNo
aWxkTm9kZUxpc3RDYWNoZSgpOwogCi0gICAgLy8gTW9kaWZpY2F0aW9ucyB0byBhdHRyaWJ1dGVz
IHRoYXQgYXJlIG5vdCBhc3NvY2lhdGVkIHdpdGggYW4gRWxlbWVudCBjYW4ndCBpbnZhbGlkYXRl
IE5vZGVMaXN0IGNhY2hlcy4KLSAgICBpZiAoYXR0ck5hbWUgJiYgIWF0dHJpYnV0ZU93bmVyRWxl
bWVudCkKLSAgICAgICAgcmV0dXJuOworICAgIGlmIChkb2N1bWVudCgpLnNob3VsZEludmFsaWRh
dGVOb2RlTGlzdEFuZENvbGxlY3Rpb25DYWNoZXMoKSkKKyAgICAgICAgaW52YWxpZGF0ZU5vZGVM
aXN0QW5kQ29sbGVjdGlvbkNhY2hlc0luQW5jZXN0b3JzSW50ZXJuYWwoKTsKK30KIAotICAgIGlm
ICghZG9jdW1lbnQoKS5zaG91bGRJbnZhbGlkYXRlTm9kZUxpc3RBbmRDb2xsZWN0aW9uQ2FjaGVz
KGF0dHJOYW1lKSkKLSAgICAgICAgcmV0dXJuOwordm9pZCBOb2RlOjppbnZhbGlkYXRlTm9kZUxp
c3RBbmRDb2xsZWN0aW9uQ2FjaGVzSW5BbmNlc3RvcnNGb3JBdHRyaWJ1dGUoY29uc3QgUXVhbGlm
aWVkTmFtZSYgYXR0ck5hbWUpCit7CisgICAgQVNTRVJUKGlzPEVsZW1lbnQ+KCp0aGlzKSk7CisK
KyAgICBpZiAoZG9jdW1lbnQoKS5zaG91bGRJbnZhbGlkYXRlTm9kZUxpc3RBbmRDb2xsZWN0aW9u
Q2FjaGVzRm9yQXR0cmlidXRlKGF0dHJOYW1lKSkKKyAgICAgICAgaW52YWxpZGF0ZU5vZGVMaXN0
QW5kQ29sbGVjdGlvbkNhY2hlc0luQW5jZXN0b3JzSW50ZXJuYWwoJmF0dHJOYW1lKTsKK30KKwor
dm9pZCBOb2RlOjppbnZhbGlkYXRlTm9kZUxpc3RBbmRDb2xsZWN0aW9uQ2FjaGVzSW5BbmNlc3Rv
cnNJbnRlcm5hbChjb25zdCBRdWFsaWZpZWROYW1lKiBhdHRyTmFtZSkKK3sKKyAgICBBU1NFUlQo
YXR0ck5hbWUgfHwgZG9jdW1lbnQoKS5zaG91bGRJbnZhbGlkYXRlTm9kZUxpc3RBbmRDb2xsZWN0
aW9uQ2FjaGVzKCkpOworICAgIEFTU0VSVCghYXR0ck5hbWUgfHwgZG9jdW1lbnQoKS5zaG91bGRJ
bnZhbGlkYXRlTm9kZUxpc3RBbmRDb2xsZWN0aW9uQ2FjaGVzRm9yQXR0cmlidXRlKCphdHRyTmFt
ZSkpOwogCiAgICAgZG9jdW1lbnQoKS5pbnZhbGlkYXRlTm9kZUxpc3RBbmRDb2xsZWN0aW9uQ2Fj
aGVzKGF0dHJOYW1lKTsKIAotICAgIGZvciAoTm9kZSogbm9kZSA9IHRoaXM7IG5vZGU7IG5vZGUg
PSBub2RlLT5wYXJlbnROb2RlKCkpIHsKLSAgICAgICAgaWYgKCFub2RlLT5oYXNSYXJlRGF0YSgp
KQotICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIE5vZGVSYXJlRGF0YSogZGF0YSA9IG5v
ZGUtPnJhcmVEYXRhKCk7Ci0gICAgICAgIGlmIChkYXRhLT5ub2RlTGlzdHMoKSkKLSAgICAgICAg
ICAgIGRhdGEtPm5vZGVMaXN0cygpLT5pbnZhbGlkYXRlQ2FjaGVzKGF0dHJOYW1lKTsKKyAgICBm
b3IgKGF1dG8qIG5vZGUgPSB0aGlzOyBub2RlOyBub2RlID0gbm9kZS0+cGFyZW50Tm9kZSgpKSB7
CisgICAgICAgIGlmIChhdXRvKiBsaXN0cyA9IG5vZGUtPm5vZGVMaXN0cygpKQorICAgICAgICAg
ICAgbGlzdHMtPmludmFsaWRhdGVDYWNoZXMoYXR0ck5hbWUpOwogICAgIH0KIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2Rl
LmgKaW5kZXggMjU4NmE0N2I4MzQwYjc3ZjBkZjRkMWYxYzE1ODI3YTMxMzc3NzYwMi4uMjhiMjRm
YWNiMzlhYjE0ZDA3OTc2YjExNWEzMGUwYzIyMjEyMDY5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZG9tL05vZGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5oCkBAIC00NzQs
NyArNDc0LDggQEAgcHVibGljOgogICAgIHZvaWQgc2hvd1RyZWVGb3JUaGlzQWNyb3NzRnJhbWUo
KSBjb25zdDsKICNlbmRpZiAvLyBFTkFCTEUoVFJFRV9ERUJVR0dJTkcpCiAKLSAgICB2b2lkIGlu
dmFsaWRhdGVOb2RlTGlzdEFuZENvbGxlY3Rpb25DYWNoZXNJbkFuY2VzdG9ycyhjb25zdCBRdWFs
aWZpZWROYW1lKiBhdHRyTmFtZSA9IG51bGxwdHIsIEVsZW1lbnQqIGF0dHJpYnV0ZU93bmVyRWxl
bWVudCA9IG51bGxwdHIpOworICAgIHZvaWQgaW52YWxpZGF0ZU5vZGVMaXN0QW5kQ29sbGVjdGlv
bkNhY2hlc0luQW5jZXN0b3JzKCk7CisgICAgdm9pZCBpbnZhbGlkYXRlTm9kZUxpc3RBbmRDb2xs
ZWN0aW9uQ2FjaGVzSW5BbmNlc3RvcnNGb3JBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYg
YXR0ck5hbWUpOwogICAgIE5vZGVMaXN0c05vZGVEYXRhKiBub2RlTGlzdHMoKTsKICAgICB2b2lk
IGNsZWFyTm9kZUxpc3RzKCk7CiAKQEAgLTY2NSw2ICs2NjYsOCBAQCBwcml2YXRlOgogICAgIHZv
aWQgdHJhY2tGb3JEZWJ1Z2dpbmcoKTsKICAgICB2b2lkIG1hdGVyaWFsaXplUmFyZURhdGEoKTsK
IAorICAgIHZvaWQgaW52YWxpZGF0ZU5vZGVMaXN0QW5kQ29sbGVjdGlvbkNhY2hlc0luQW5jZXN0
b3JzSW50ZXJuYWwoY29uc3QgUXVhbGlmaWVkTmFtZSogYXR0ck5hbWUgPSBudWxscHRyKTsKKwog
ICAgIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8TXV0YXRpb25PYnNlcnZlclJlZ2lzdHJhdGlvbj4+
KiBtdXRhdGlvbk9ic2VydmVyUmVnaXN0cnkoKTsKICAgICBIYXNoU2V0PE11dGF0aW9uT2JzZXJ2
ZXJSZWdpc3RyYXRpb24qPiogdHJhbnNpZW50TXV0YXRpb25PYnNlcnZlclJlZ2lzdHJ5KCk7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL0RPTS9ET01BdHRyLm1tIGIvU291cmNlL1dl
YktpdC9tYWMvRE9NL0RPTUF0dHIubW0KaW5kZXggMDc3NDEyN2Y4ZmQ5MTk3MTUwYjJkYmU1NDk3
MjczOTE4OWJlMWQyNi4uNDM5MjNkNzJiZDk1ZmZmNzA2NzA2ZmJjYjMwZjc3ZmM5ZjlkNmVjZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvRE9NL0RPTUF0dHIubW0KKysrIGIvU291cmNl
L1dlYktpdC9tYWMvRE9NL0RPTUF0dHIubW0KQEAgLTU4LDEzICs1OCwxMyBAQCAtIChCT09MKXNw
ZWNpZmllZAogLSAoTlNTdHJpbmcgKil2YWx1ZQogewogICAgIFdlYkNvcmU6OkpTTWFpblRocmVh
ZE51bGxTdGF0ZSBzdGF0ZTsKLSAgICByZXR1cm4gSU1QTC0+dmFsdWVGb3JCaW5kaW5ncygpOwor
ICAgIHJldHVybiBJTVBMLT52YWx1ZSgpOwogfQogCiAtICh2b2lkKXNldFZhbHVlOihOU1N0cmlu
ZyAqKW5ld1ZhbHVlCiB7CiAgICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRl
OwotICAgIElNUEwtPnNldFZhbHVlRm9yQmluZGluZ3MobmV3VmFsdWUpOworICAgIElNUEwtPnNl
dFZhbHVlKG5ld1ZhbHVlKTsKIH0KIAogLSAoRE9NRWxlbWVudCAqKW93bmVyRWxlbWVudAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>309581</attachid>
            <date>2017-05-09 22:48:28 -0700</date>
            <delta_ts>2017-05-10 08:29:47 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-171909-20170509224828.patch</filename>
            <type>text/plain</type>
            <size>15767</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE2NTYxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTAxYTlmYTZiOWM2ZGMw
ZDY2OTlmNGQwMDQwMzU1MTYyMDQ4ZmU2MS4uODk2MmFmNjdkOTM1NDFkM2U5MTU4NTdhNzhjOGQ4
MjYzMmRjZGU3MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY3IEBACisyMDE3LTA1LTA5ICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgU2ltcGxpZnkgcmVsYXRpb25z
aGlwIGJldHdlZW4gQXR0ciBhbmQgRWxlbWVudCBub3cgdGhhdCBBdHRyIGlzIGNoaWxkbGVzcwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTcxOTA5CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgU2ltcGxpZnkg
cmVsYXRpb25zaGlwIGJldHdlZW4gQXR0ciBhbmQgRWxlbWVudCBub3cgdGhhdCBBdHRyIGlzIGNo
aWxkbGVzcworICAgICAgICBhZnRlciByMjE2MjU5LgorCisgICAgICAgIE5vIG5ldyB0ZXN0cywg
bm8gV2ViIGZhY2luZyBiZWhhdmlvciBjaGFuZ2UuCisKKyAgICAgICAgKiBkb20vQXR0ci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpBdHRyOjpzZXRWYWx1ZSk6CisgICAgICAgIEF0dHI6OnNldFZh
bHVlKCkgd2FzIG9ubHkgY2FsbGVkIGJ5IEVsZW1lbnQ6OnNldEF0dHJpYnV0ZUludGVybmFsKCkg
dG8gbWFrZSBzdXJlCisgICAgICAgIHdlIHVwZGF0ZWQgdGhlIEF0dHIgbm9kZSdzIFRleHQgY2hp
bGQuIEhvd2V2ZXIsIG5vdyB0aGF0IEF0dHIgaGFzIG5vIFRleHQgY2hpbGQsCisgICAgICAgIEVs
ZW1lbnQgbm8gbG9uZ2VyIG5lZWRzIHRvIHVwZGF0ZSB0aGUgQXR0ciBub2RlJ3MgdmFsdWUuCisg
ICAgICAgIEF0dHI6OnNldFZhbHVlRm9yQmluZGluZ3MoKSB3YSB0aHVzIHJlbmFtZWQgdG8gc2V0
VmFsdWUoKS4gSXRzIGltcGxlbWVudGF0aW9uCisgICAgICAgIHdhcyBhbHNvIHNpbXBsaWZpZWQg
YnkgY2FsbGluZyBFbGVtZW50OjpzZXRBdHRyaWJ1dGUoKSBvbiBpdHMgb3duZXJFbGVtZW50LCBp
ZgorICAgICAgICBpdCBoYXMgb25lLCBpbnN0ZWFkIG9mIGR1cGxpY2F0aW5nIGEgYnVuY2ggb2Yg
Y29kZSBmcm9tCisgICAgICAgIEVsZW1lbnQ6OnNldEF0dHJpYnV0ZUludGVybmFsKCkuCisKKyAg
ICAgICAgKFdlYkNvcmU6OkF0dHI6OnNldE5vZGVWYWx1ZSk6CisgICAgICAgIENhbGwgc2V0VmFs
dWUoKSBpbnN0ZWFkIG9mIHNldFZhbHVlRm9yQmluZGluZ3MoKSBub3cgdGhhdCBpdCBoYXMgYmVl
biByZW5hbWVkLgorCisgICAgICAgICogZG9tL0F0dHIuaDoKKyAgICAgICAgKiBkb20vQXR0ci5p
ZGw6CisgICAgICAgIFJlbmFtZSB2YWx1ZUZvckJpbmRpbmdzIC8gc2V0VmFsdWVGb3JCaW5kaW5n
cyB0byB2YWx1ZSAvIHNldFZhbHVlLgorCisgICAgICAgICogZG9tL0RvY3VtZW50Lmg6CisgICAg
ICAgIFNwbGl0IHNob3VsZEludmFsaWRhdGVOb2RlTGlzdEFuZENvbGxlY3Rpb25DYWNoZXMoKSBp
bnRvIDIgbWV0aG9kcywgb25lIHRha2luZyBhbiBBdHRyIG5hbWUKKyAgICAgICAgYW5kIGFub3Ro
ZXIgdGhhdCBkb2VzIG5vdC4gVGhlcmUgYXJlIG5vdyAyIGNhbGxzIHNpdGVzIGluc3RlYWQgb2Yg
b25lLCBzbyB3ZSBubyBsb25nZXIgbmVlZAorICAgICAgICB0byBicmFuY2ggaW4gdGhpcyBmdW5j
dGlvbi4KKworICAgICAgICAqIGRvbS9FbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVs
ZW1lbnQ6OnNldEF0dHJpYnV0ZUludGVybmFsKToKKyAgICAgICAgRHJvcCBjb2RlIGNhbGxpbmcg
QXR0cjo6c2V0VmFsdWUoKSBvbiB0aGUgQXR0ciBub2RlIHNpbmNlIEF0dHI6OnNldFZhbHVlKCkg
d2FzIG9ubHkKKyAgICAgICAgZHVwbGljYXRpbmcgbG9naWMgZnJvbSBFbGVtZW50OjpzZXRBdHRy
aWJ1dGVJbnRlcm5hbCgpIGFmdGVyIHIyMTYyNTkuIFRoZXJlIGlzIG5vdGhpbmcKKyAgICAgICAg
b24gQXR0ciB0aGF0IG5lZWRzIHVwZGF0aW5nIHdoZW4gYW4gZWxlbWVudCBhdHRyaWJ1dGUgZ2V0
cyB1cGRhdGVkLgorCisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjphdHRyaWJ1dGVDaGFuZ2Vk
KToKKyAgICAgICAgQ2FsbCB0aGUgbmV3IGludmFsaWRhdGVOb2RlTGlzdEFuZENvbGxlY3Rpb25D
YWNoZXNJbkFuY2VzdG9yc0ZvckF0dHJpYnV0ZSgpLiBUaGlzCisgICAgICAgIGlzIHRoZSBvbmx5
IGNhbGwgc2l0ZSB0aGF0IHBhc3NlcyBhbiBhdHRyaWJ1dGUgbmFtZS4KKworICAgICAgICAqIGRv
bS9Ob2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpzaG91bGRJbnZhbGlkYXRl
Tm9kZUxpc3RBbmRDb2xsZWN0aW9uQ2FjaGVzKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50
OjpzaG91bGRJbnZhbGlkYXRlTm9kZUxpc3RBbmRDb2xsZWN0aW9uQ2FjaGVzRm9yQXR0cmlidXRl
KToKKyAgICAgICAgU3BsaXQgaW50byAyIHRvIGF2b2lkIGJyYW5jaGluZywgYXMgZXhwbGFpbmVk
IGFib3ZlLgorCisgICAgICAgIChXZWJDb3JlOjpOb2RlOjppbnZhbGlkYXRlTm9kZUxpc3RBbmRD
b2xsZWN0aW9uQ2FjaGVzSW5BbmNlc3RvcnMpOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6aW52
YWxpZGF0ZU5vZGVMaXN0QW5kQ29sbGVjdGlvbkNhY2hlc0luQW5jZXN0b3JzRm9yQXR0cmlidXRl
KToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6OmludmFsaWRhdGVOb2RlTGlzdEFuZENvbGxlY3Rp
b25DYWNoZXNJbkFuY2VzdG9yc0ludGVybmFsKToKKyAgICAgICAgLSBpbnZhbGlkYXRlTm9kZUxp
c3RBbmRDb2xsZWN0aW9uQ2FjaGVzSW5BbmNlc3RvcnMoKSB1c2VkIHRvIGludmFsaWRhdGUgY2hp
bGROb2RlTGlzdHMKKyAgICAgICAgICBpZiB0aGUgTm9kZSB3YXMgYW4gYXR0cmlidXRlIG5vZGUu
IERyb3AgdGhpcyBhcyB0aGlzIGlzIG5vIGxvbmdlciBuZWVkZWQgYXMgb2YgcjIxNjI1OS4KKyAg
ICAgICAgLSBBZnRlciB0aGUgY2hhbmdlIHRvIEF0dHI6OnNldFZhbHVlKCksIGNhbGwgc2l0ZXMg
Zm9yCisgICAgICAgICAgaW52YWxpZGF0ZU5vZGVMaXN0QW5kQ29sbGVjdGlvbkNhY2hlc0luQW5j
ZXN0b3JzKCkgZWl0aGVyIGhhZCBubyBwYXJhbWV0ZXJzLCBvciBib3RoCisgICAgICAgICAgcGFy
YW1ldGVycyBwcmVzZW50IGFuZCBub24tbnVsbC4gVGhlcmUgaXMgdGhlcmVmb3JlIG5vIGxvbmdl
ciBhbnkgbmVlZCB0byBoYW5kbGUKKyAgICAgICAgICBoYXZpbmcgYW4gYXR0ck5hbWUgYnV0IG5v
IGF0dHJpYnV0ZU93bmVyRWxlbWVudC4gVG8gbWFrZSB0aGlzIG9idmlvdXMsIEkgc3BsaXQgdGhp
cworICAgICAgICAgIGludG8gMiBtZXRob2RzOiBpbnZhbGlkYXRlTm9kZUxpc3RBbmRDb2xsZWN0
aW9uQ2FjaGVzSW5BbmNlc3RvcnMoKSBhbmQKKyAgICAgICAgICBpbnZhbGlkYXRlTm9kZUxpc3RB
bmRDb2xsZWN0aW9uQ2FjaGVzSW5BbmNlc3RvcnNGb3JBdHRyaWJ1dGUoYXR0ck5hbWUpLiBXZSBu
byBsb25nZXIKKyAgICAgICAgICBuZWVkIHRoZSBhdHRyaWJ1dGVPd25lckVsZW1lbnQgcGFyYW1l
dGVyIGFzIGl0IHdhcyBvbmx5IHVzZWQgdG8gZXhpdCBlYXJseS4KKworICAgICAgICAqIGRvbS9O
b2RlLmg6CisKIDIwMTctMDUtMDkgIEplcmVteSBKb25lcyAgPGplcmVteWpAYXBwbGUuY29tPgog
CiAgICAgICAgIFZpZGVvIGZ1bGxzY3JlZW4gd2luZG93IGxldmVsIHNob3VsZCBiZSBiZWxvdyBz
dGF0dXMgYmFyLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nIGIvU291
cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCmluZGV4IDM2NGM5MGU2OTY1NDIyMDMyYjliNGEwODdj
MjMyMmM3MTAxY2U1ZTcuLjhkNzY0NzkzYzExMmNlMjg4MTMxNzdiYzk5MmJmMmZhNDViN2Q0MDAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
S2l0L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBAQAorMjAxNy0wNS0wOSAgQ2hyaXMgRHVt
ZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIFNpbXBsaWZ5IHJlbGF0aW9uc2hpcCBi
ZXR3ZWVuIEF0dHIgYW5kIEVsZW1lbnQgbm93IHRoYXQgQXR0ciBpcyBjaGlsZGxlc3MKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3MTkwOQorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEJ1aWxkIGZpeC4KKwor
ICAgICAgICAqIERPTS9ET01BdHRyLm1tOgorICAgICAgICAoLVtET01BdHRyIHZhbHVlXSk6Cisg
ICAgICAgICgtW0RPTUF0dHIgc2V0VmFsdWU6XSk6CisKIDIwMTctMDUtMDggIENocmlzIER1bWV6
ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBNb3ZlICdzdHlsZScgZnJvbSBFbGVtZW50
IHRvIEhUTUxFbGVtZW50IC8gU1ZHRWxlbWVudCBhbmQgbWFrZSBpdCBzZXR0YWJsZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0F0dHIuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0F0
dHIuY3BwCmluZGV4IDBhNGRjNDg5NTk3NGM0YmYyYWQyYmYyNGE0MmQ5YzFjNzZkYzM3YTUuLmM4
ZmZlYmU4ODZhMTUyMzE0NGEzMWMxMmI5NTQ2NmUyZWQwNjVkMmYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9BdHRyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQXR0ci5jcHAK
QEAgLTg2LDI4ICs4NiwxNSBAQCBFeGNlcHRpb25Pcjx2b2lkPiBBdHRyOjpzZXRQcmVmaXgoY29u
c3QgQXRvbWljU3RyaW5nJiBwcmVmaXgpCiAKIHZvaWQgQXR0cjo6c2V0VmFsdWUoY29uc3QgQXRv
bWljU3RyaW5nJiB2YWx1ZSkKIHsKLSAgICBpZiAobV9lbGVtZW50KSB7Ci0gICAgICAgIFN0eWxl
OjpBdHRyaWJ1dGVDaGFuZ2VJbnZhbGlkYXRpb24gc3R5bGVJbnZhbGlkYXRpb24oKm1fZWxlbWVu
dCwgcXVhbGlmaWVkTmFtZSgpLCBlbGVtZW50QXR0cmlidXRlKCkudmFsdWUoKSwgdmFsdWUpOwot
ICAgICAgICBlbGVtZW50QXR0cmlidXRlKCkuc2V0VmFsdWUodmFsdWUpOwotICAgIH0gZWxzZQot
ICAgICAgICBtX3N0YW5kYWxvbmVWYWx1ZSA9IHZhbHVlOwotCi0gICAgaW52YWxpZGF0ZU5vZGVM
aXN0QW5kQ29sbGVjdGlvbkNhY2hlc0luQW5jZXN0b3JzKCZtX25hbWUsIG1fZWxlbWVudCk7Ci19
Ci0KLXZvaWQgQXR0cjo6c2V0VmFsdWVGb3JCaW5kaW5ncyhjb25zdCBBdG9taWNTdHJpbmcmIHZh
bHVlKQotewotICAgIEF0b21pY1N0cmluZyBvbGRWYWx1ZSA9IHRoaXMtPnZhbHVlKCk7CiAgICAg
aWYgKG1fZWxlbWVudCkKLSAgICAgICAgbV9lbGVtZW50LT53aWxsTW9kaWZ5QXR0cmlidXRlKHF1
YWxpZmllZE5hbWUoKSwgb2xkVmFsdWUsIHZhbHVlKTsKLSAgICBzZXRWYWx1ZSh2YWx1ZSk7Ci0g
ICAgaWYgKG1fZWxlbWVudCkKLSAgICAgICAgbV9lbGVtZW50LT5kaWRNb2RpZnlBdHRyaWJ1dGUo
cXVhbGlmaWVkTmFtZSgpLCBvbGRWYWx1ZSwgdmFsdWUpOworICAgICAgICBtX2VsZW1lbnQtPnNl
dEF0dHJpYnV0ZShxdWFsaWZpZWROYW1lKCksIHZhbHVlKTsKKyAgICBlbHNlCisgICAgICAgIG1f
c3RhbmRhbG9uZVZhbHVlID0gdmFsdWU7CiB9CiAKIEV4Y2VwdGlvbk9yPHZvaWQ+IEF0dHI6OnNl
dE5vZGVWYWx1ZShjb25zdCBTdHJpbmcmIHZhbHVlKQogewotICAgIHNldFZhbHVlRm9yQmluZGlu
Z3ModmFsdWUpOworICAgIHNldFZhbHVlKHZhbHVlKTsKICAgICByZXR1cm4geyB9OwogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vQXR0ci5oIGIvU291cmNlL1dlYkNvcmUvZG9t
L0F0dHIuaAppbmRleCA3MmE2MGI2ZmY2M2VjMGExNGFiMjgwNmI5MmFkY2RmODg3OGNkNjA3Li40
ZDljNjU4NGE2OTYyNDZmMzZjMDU1ODU2NWFmN2Y0Y2M3NDcwNjIyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vQXR0ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9BdHRyLmgKQEAg
LTQ0LDkgKzQ0LDcgQEAgcHVibGljOgogICAgIEVsZW1lbnQqIG93bmVyRWxlbWVudCgpIGNvbnN0
IHsgcmV0dXJuIG1fZWxlbWVudDsgfQogCiAgICAgV0VCQ09SRV9FWFBPUlQgY29uc3QgQXRvbWlj
U3RyaW5nJiB2YWx1ZSgpIGNvbnN0OwotICAgIHZvaWQgc2V0VmFsdWUoY29uc3QgQXRvbWljU3Ry
aW5nJik7Ci0gICAgY29uc3QgQXRvbWljU3RyaW5nJiB2YWx1ZUZvckJpbmRpbmdzKCkgY29uc3Qg
eyByZXR1cm4gdmFsdWUoKTsgfQotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0VmFsdWVGb3JC
aW5kaW5ncyhjb25zdCBBdG9taWNTdHJpbmcmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNl
dFZhbHVlKGNvbnN0IEF0b21pY1N0cmluZyYpOwogCiAgICAgY29uc3QgUXVhbGlmaWVkTmFtZSYg
cXVhbGlmaWVkTmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fbmFtZTsgfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9kb20vQXR0ci5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQXR0ci5pZGwK
aW5kZXggYjA5MzUxMTBjYTEzMzYzNzkyMWYwY2I4NTAwNjA1OTMyOTQxZmVhNi4uNDNmODYwZmY5
MDIzMjI2MjQyNmE4ZmMzMGNjNjhhNDgyMmI5N2Y1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvZG9tL0F0dHIuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9BdHRyLmlkbApAQCAtMjcs
NyArMjcsNyBAQAogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01TdHJpbmc/IHByZWZpeDsKICAg
ICByZWFkb25seSBhdHRyaWJ1dGUgRE9NU3RyaW5nIGxvY2FsTmFtZTsKICAgICByZWFkb25seSBh
dHRyaWJ1dGUgRE9NU3RyaW5nIG5hbWU7Ci0gICAgW0NFUmVhY3Rpb25zLCBJbXBsZW1lbnRlZEFz
PXZhbHVlRm9yQmluZGluZ3NdIGF0dHJpYnV0ZSBET01TdHJpbmcgdmFsdWU7CisgICAgW0NFUmVh
Y3Rpb25zXSBhdHRyaWJ1dGUgRE9NU3RyaW5nIHZhbHVlOwogCiAgICAgcmVhZG9ubHkgYXR0cmli
dXRlIEVsZW1lbnQ/IG93bmVyRWxlbWVudDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZG9tL0RvY3VtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAppbmRleCA4Y2M5
MDY3YTZlYTRmMGUyN2U0MGRlMTgwMzQ4ODE3MDI5N2JlYTMzLi4wMDE3YmE5NWMxZDFjOThiZjE1
MWZjZDdjZTliMzIwN2QzZjgxYWNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9j
dW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaApAQCAtNzI2LDcgKzcy
Niw4IEBAIHB1YmxpYzoKICAgICB2b2lkIHVucmVnaXN0ZXJDb2xsZWN0aW9uKEhUTUxDb2xsZWN0
aW9uJik7CiAgICAgdm9pZCBjb2xsZWN0aW9uQ2FjaGVkSWROYW1lTWFwKGNvbnN0IEhUTUxDb2xs
ZWN0aW9uJik7CiAgICAgdm9pZCBjb2xsZWN0aW9uV2lsbENsZWFySWROYW1lTWFwKGNvbnN0IEhU
TUxDb2xsZWN0aW9uJik7Ci0gICAgYm9vbCBzaG91bGRJbnZhbGlkYXRlTm9kZUxpc3RBbmRDb2xs
ZWN0aW9uQ2FjaGVzKGNvbnN0IFF1YWxpZmllZE5hbWUqIGF0dHJOYW1lID0gbnVsbHB0cikgY29u
c3Q7CisgICAgYm9vbCBzaG91bGRJbnZhbGlkYXRlTm9kZUxpc3RBbmRDb2xsZWN0aW9uQ2FjaGVz
KCkgY29uc3Q7CisgICAgYm9vbCBzaG91bGRJbnZhbGlkYXRlTm9kZUxpc3RBbmRDb2xsZWN0aW9u
Q2FjaGVzRm9yQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKSBjb25zdDsK
ICAgICB2b2lkIGludmFsaWRhdGVOb2RlTGlzdEFuZENvbGxlY3Rpb25DYWNoZXMoY29uc3QgUXVh
bGlmaWVkTmFtZSogYXR0ck5hbWUpOwogCiAgICAgdm9pZCBhdHRhY2hOb2RlSXRlcmF0b3IoTm9k
ZUl0ZXJhdG9yKik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKaW5kZXggZWM3ZDE4NGZjMmIzZTNiYzM3
ZGZlN2FhZTVlMmNhZDExM2QxNGE4NC4uZjcxYmFjY2I2ODZjNzBiNTFkNGU2MDU5ZjhmNGQxZjlm
ZmM5Yjc3MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcApAQCAtMTI3NiwxNSArMTI3Niw4IEBAIGlu
bGluZSB2b2lkIEVsZW1lbnQ6OnNldEF0dHJpYnV0ZUludGVybmFsKHVuc2lnbmVkIGluZGV4LCBj
b25zdCBRdWFsaWZpZWROYW1lJiBuCiAgICAgd2lsbE1vZGlmeUF0dHJpYnV0ZShhdHRyaWJ1dGVO
YW1lLCBvbGRWYWx1ZSwgbmV3VmFsdWUpOwogCiAgICAgaWYgKG5ld1ZhbHVlICE9IG9sZFZhbHVl
KSB7Ci0gICAgICAgIC8vIElmIHRoZXJlIGlzIGFuIEF0dHIgbm9kZSBob29rZWQgdG8gdGhpcyBh
dHRyaWJ1dGUsIHRoZSBBdHRyOjpzZXRWYWx1ZSgpIGNhbGwgYmVsb3cKLSAgICAgICAgLy8gd2ls
bCB3cml0ZSBpbnRvIHRoZSBFbGVtZW50RGF0YS4KLSAgICAgICAgLy8gRklYTUU6IFJlZmFjdG9y
IHRoaXMgc28gaXQgbWFrZXMgc29tZSBzZW5zZS4KLSAgICAgICAgaWYgKFJlZlB0cjxBdHRyPiBh
dHRyTm9kZSA9IGF0dHJJZkV4aXN0cyhhdHRyaWJ1dGVOYW1lKSkKLSAgICAgICAgICAgIGF0dHJO
b2RlLT5zZXRWYWx1ZShuZXdWYWx1ZSk7Ci0gICAgICAgIGVsc2UgewotICAgICAgICAgICAgU3R5
bGU6OkF0dHJpYnV0ZUNoYW5nZUludmFsaWRhdGlvbiBzdHlsZUludmFsaWRhdGlvbigqdGhpcywg
bmFtZSwgb2xkVmFsdWUsIG5ld1ZhbHVlKTsKLSAgICAgICAgICAgIGVuc3VyZVVuaXF1ZUVsZW1l
bnREYXRhKCkuYXR0cmlidXRlQXQoaW5kZXgpLnNldFZhbHVlKG5ld1ZhbHVlKTsKLSAgICAgICAg
fQorICAgICAgICBTdHlsZTo6QXR0cmlidXRlQ2hhbmdlSW52YWxpZGF0aW9uIHN0eWxlSW52YWxp
ZGF0aW9uKCp0aGlzLCBuYW1lLCBvbGRWYWx1ZSwgbmV3VmFsdWUpOworICAgICAgICBlbnN1cmVV
bmlxdWVFbGVtZW50RGF0YSgpLmF0dHJpYnV0ZUF0KGluZGV4KS5zZXRWYWx1ZShuZXdWYWx1ZSk7
CiAgICAgfQogCiAgICAgZGlkTW9kaWZ5QXR0cmlidXRlKGF0dHJpYnV0ZU5hbWUsIG9sZFZhbHVl
LCBuZXdWYWx1ZSk7CkBAIC0xMzQwLDcgKzEzMzMsNyBAQCB2b2lkIEVsZW1lbnQ6OmF0dHJpYnV0
ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbWljU3RyaW5nJiBv
bAogICAgIGlmICh2YWx1ZUlzU2FtZUFzQmVmb3JlKQogICAgICAgICByZXR1cm47CiAKLSAgICBp
bnZhbGlkYXRlTm9kZUxpc3RBbmRDb2xsZWN0aW9uQ2FjaGVzSW5BbmNlc3RvcnMoJm5hbWUsIHRo
aXMpOworICAgIGludmFsaWRhdGVOb2RlTGlzdEFuZENvbGxlY3Rpb25DYWNoZXNJbkFuY2VzdG9y
c0ZvckF0dHJpYnV0ZShuYW1lKTsKIAogICAgIGlmIChBWE9iamVjdENhY2hlKiBjYWNoZSA9IGRv
Y3VtZW50KCkuZXhpc3RpbmdBWE9iamVjdENhY2hlKCkpCiAgICAgICAgIGNhY2hlLT5oYW5kbGVB
dHRyaWJ1dGVDaGFuZ2VkKG5hbWUsIHRoaXMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZG9tL05vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwCmluZGV4IDk2ZjJlYjE2
ZmZiOGQ2MmNiMzJlYWViYTVlYzA0MDA3NWE4N2IwMjYuLjQ2NmQzYjNlYmRjYzc2NDQ5NmM4NTE5
ZDMxY2JmNTM3NDkxY2EwZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAKQEAgLTgzOCwxOSArODM4LDIwIEBA
IGJvb2wgc2hvdWxkSW52YWxpZGF0ZU5vZGVMaXN0Q2FjaGVzRm9yQXR0cjxudW1Ob2RlTGlzdElu
dmFsaWRhdGlvblR5cGVzPihjb25zdCB1CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1ib29sIERv
Y3VtZW50OjpzaG91bGRJbnZhbGlkYXRlTm9kZUxpc3RBbmRDb2xsZWN0aW9uQ2FjaGVzKGNvbnN0
IFF1YWxpZmllZE5hbWUqIGF0dHJOYW1lKSBjb25zdAorYm9vbCBEb2N1bWVudDo6c2hvdWxkSW52
YWxpZGF0ZU5vZGVMaXN0QW5kQ29sbGVjdGlvbkNhY2hlcygpIGNvbnN0CiB7Ci0gICAgaWYgKGF0
dHJOYW1lKQotICAgICAgICByZXR1cm4gc2hvdWxkSW52YWxpZGF0ZU5vZGVMaXN0Q2FjaGVzRm9y
QXR0cjxEb05vdEludmFsaWRhdGVPbkF0dHJpYnV0ZUNoYW5nZXMgKyAxPihtX25vZGVMaXN0QW5k
Q29sbGVjdGlvbkNvdW50cywgKmF0dHJOYW1lKTsKLQotICAgIGZvciAoaW50IHR5cGUgPSAwOyB0
eXBlIDwgbnVtTm9kZUxpc3RJbnZhbGlkYXRpb25UeXBlczsgdHlwZSsrKSB7CisgICAgZm9yIChp
bnQgdHlwZSA9IDA7IHR5cGUgPCBudW1Ob2RlTGlzdEludmFsaWRhdGlvblR5cGVzOyArK3R5cGUp
IHsKICAgICAgICAgaWYgKG1fbm9kZUxpc3RBbmRDb2xsZWN0aW9uQ291bnRzW3R5cGVdKQogICAg
ICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQotCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCiti
b29sIERvY3VtZW50OjpzaG91bGRJbnZhbGlkYXRlTm9kZUxpc3RBbmRDb2xsZWN0aW9uQ2FjaGVz
Rm9yQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKSBjb25zdAoreworICAg
IHJldHVybiBzaG91bGRJbnZhbGlkYXRlTm9kZUxpc3RDYWNoZXNGb3JBdHRyPERvTm90SW52YWxp
ZGF0ZU9uQXR0cmlidXRlQ2hhbmdlcyArIDE+KG1fbm9kZUxpc3RBbmRDb2xsZWN0aW9uQ291bnRz
LCBhdHRyTmFtZSk7Cit9CisKIHZvaWQgRG9jdW1lbnQ6OmludmFsaWRhdGVOb2RlTGlzdEFuZENv
bGxlY3Rpb25DYWNoZXMoY29uc3QgUXVhbGlmaWVkTmFtZSogYXR0ck5hbWUpCiB7CiAgICAgVmVj
dG9yPExpdmVOb2RlTGlzdCosIDg+IGxpc3RzOwpAQCAtODY0LDI4ICs4NjUsMzMgQEAgdm9pZCBE
b2N1bWVudDo6aW52YWxpZGF0ZU5vZGVMaXN0QW5kQ29sbGVjdGlvbkNhY2hlcyhjb25zdCBRdWFs
aWZpZWROYW1lKiBhdHRyTmEKICAgICAgICAgY29sbGVjdGlvbi0+aW52YWxpZGF0ZUNhY2hlRm9y
QXR0cmlidXRlKGF0dHJOYW1lKTsKIH0KIAotdm9pZCBOb2RlOjppbnZhbGlkYXRlTm9kZUxpc3RB
bmRDb2xsZWN0aW9uQ2FjaGVzSW5BbmNlc3RvcnMoY29uc3QgUXVhbGlmaWVkTmFtZSogYXR0ck5h
bWUsIEVsZW1lbnQqIGF0dHJpYnV0ZU93bmVyRWxlbWVudCkKK3ZvaWQgTm9kZTo6aW52YWxpZGF0
ZU5vZGVMaXN0QW5kQ29sbGVjdGlvbkNhY2hlc0luQW5jZXN0b3JzKCkKIHsKLSAgICBpZiAoaGFz
UmFyZURhdGEoKSAmJiAoIWF0dHJOYW1lIHx8IGlzQXR0cmlidXRlTm9kZSgpKSkgewotICAgICAg
ICBpZiAoTm9kZUxpc3RzTm9kZURhdGEqIGxpc3RzID0gcmFyZURhdGEoKS0+bm9kZUxpc3RzKCkp
Ci0gICAgICAgICAgICBsaXN0cy0+Y2xlYXJDaGlsZE5vZGVMaXN0Q2FjaGUoKTsKLSAgICB9Cisg
ICAgaWYgKGF1dG8qIGxpc3RzID0gbm9kZUxpc3RzKCkpCisgICAgICAgIGxpc3RzLT5jbGVhckNo
aWxkTm9kZUxpc3RDYWNoZSgpOwogCi0gICAgLy8gTW9kaWZpY2F0aW9ucyB0byBhdHRyaWJ1dGVz
IHRoYXQgYXJlIG5vdCBhc3NvY2lhdGVkIHdpdGggYW4gRWxlbWVudCBjYW4ndCBpbnZhbGlkYXRl
IE5vZGVMaXN0IGNhY2hlcy4KLSAgICBpZiAoYXR0ck5hbWUgJiYgIWF0dHJpYnV0ZU93bmVyRWxl
bWVudCkKLSAgICAgICAgcmV0dXJuOworICAgIGlmIChkb2N1bWVudCgpLnNob3VsZEludmFsaWRh
dGVOb2RlTGlzdEFuZENvbGxlY3Rpb25DYWNoZXMoKSkKKyAgICAgICAgaW52YWxpZGF0ZU5vZGVM
aXN0QW5kQ29sbGVjdGlvbkNhY2hlc0luQW5jZXN0b3JzSW50ZXJuYWwoKTsKK30KIAotICAgIGlm
ICghZG9jdW1lbnQoKS5zaG91bGRJbnZhbGlkYXRlTm9kZUxpc3RBbmRDb2xsZWN0aW9uQ2FjaGVz
KGF0dHJOYW1lKSkKLSAgICAgICAgcmV0dXJuOwordm9pZCBOb2RlOjppbnZhbGlkYXRlTm9kZUxp
c3RBbmRDb2xsZWN0aW9uQ2FjaGVzSW5BbmNlc3RvcnNGb3JBdHRyaWJ1dGUoY29uc3QgUXVhbGlm
aWVkTmFtZSYgYXR0ck5hbWUpCit7CisgICAgQVNTRVJUKGlzPEVsZW1lbnQ+KCp0aGlzKSk7CisK
KyAgICBpZiAoZG9jdW1lbnQoKS5zaG91bGRJbnZhbGlkYXRlTm9kZUxpc3RBbmRDb2xsZWN0aW9u
Q2FjaGVzRm9yQXR0cmlidXRlKGF0dHJOYW1lKSkKKyAgICAgICAgaW52YWxpZGF0ZU5vZGVMaXN0
QW5kQ29sbGVjdGlvbkNhY2hlc0luQW5jZXN0b3JzSW50ZXJuYWwoJmF0dHJOYW1lKTsKK30KKwor
dm9pZCBOb2RlOjppbnZhbGlkYXRlTm9kZUxpc3RBbmRDb2xsZWN0aW9uQ2FjaGVzSW5BbmNlc3Rv
cnNJbnRlcm5hbChjb25zdCBRdWFsaWZpZWROYW1lKiBhdHRyTmFtZSkKK3sKKyAgICBBU1NFUlQo
YXR0ck5hbWUgfHwgZG9jdW1lbnQoKS5zaG91bGRJbnZhbGlkYXRlTm9kZUxpc3RBbmRDb2xsZWN0
aW9uQ2FjaGVzKCkpOworICAgIEFTU0VSVCghYXR0ck5hbWUgfHwgZG9jdW1lbnQoKS5zaG91bGRJ
bnZhbGlkYXRlTm9kZUxpc3RBbmRDb2xsZWN0aW9uQ2FjaGVzRm9yQXR0cmlidXRlKCphdHRyTmFt
ZSkpOwogCiAgICAgZG9jdW1lbnQoKS5pbnZhbGlkYXRlTm9kZUxpc3RBbmRDb2xsZWN0aW9uQ2Fj
aGVzKGF0dHJOYW1lKTsKIAotICAgIGZvciAoTm9kZSogbm9kZSA9IHRoaXM7IG5vZGU7IG5vZGUg
PSBub2RlLT5wYXJlbnROb2RlKCkpIHsKLSAgICAgICAgaWYgKCFub2RlLT5oYXNSYXJlRGF0YSgp
KQotICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIE5vZGVSYXJlRGF0YSogZGF0YSA9IG5v
ZGUtPnJhcmVEYXRhKCk7Ci0gICAgICAgIGlmIChkYXRhLT5ub2RlTGlzdHMoKSkKLSAgICAgICAg
ICAgIGRhdGEtPm5vZGVMaXN0cygpLT5pbnZhbGlkYXRlQ2FjaGVzKGF0dHJOYW1lKTsKKyAgICBm
b3IgKGF1dG8qIG5vZGUgPSB0aGlzOyBub2RlOyBub2RlID0gbm9kZS0+cGFyZW50Tm9kZSgpKSB7
CisgICAgICAgIGlmIChhdXRvKiBsaXN0cyA9IG5vZGUtPm5vZGVMaXN0cygpKQorICAgICAgICAg
ICAgbGlzdHMtPmludmFsaWRhdGVDYWNoZXMoYXR0ck5hbWUpOwogICAgIH0KIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2Rl
LmgKaW5kZXggMjU4NmE0N2I4MzQwYjc3ZjBkZjRkMWYxYzE1ODI3YTMxMzc3NzYwMi4uMjhiMjRm
YWNiMzlhYjE0ZDA3OTc2YjExNWEzMGUwYzIyMjEyMDY5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZG9tL05vZGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5oCkBAIC00NzQs
NyArNDc0LDggQEAgcHVibGljOgogICAgIHZvaWQgc2hvd1RyZWVGb3JUaGlzQWNyb3NzRnJhbWUo
KSBjb25zdDsKICNlbmRpZiAvLyBFTkFCTEUoVFJFRV9ERUJVR0dJTkcpCiAKLSAgICB2b2lkIGlu
dmFsaWRhdGVOb2RlTGlzdEFuZENvbGxlY3Rpb25DYWNoZXNJbkFuY2VzdG9ycyhjb25zdCBRdWFs
aWZpZWROYW1lKiBhdHRyTmFtZSA9IG51bGxwdHIsIEVsZW1lbnQqIGF0dHJpYnV0ZU93bmVyRWxl
bWVudCA9IG51bGxwdHIpOworICAgIHZvaWQgaW52YWxpZGF0ZU5vZGVMaXN0QW5kQ29sbGVjdGlv
bkNhY2hlc0luQW5jZXN0b3JzKCk7CisgICAgdm9pZCBpbnZhbGlkYXRlTm9kZUxpc3RBbmRDb2xs
ZWN0aW9uQ2FjaGVzSW5BbmNlc3RvcnNGb3JBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYg
YXR0ck5hbWUpOwogICAgIE5vZGVMaXN0c05vZGVEYXRhKiBub2RlTGlzdHMoKTsKICAgICB2b2lk
IGNsZWFyTm9kZUxpc3RzKCk7CiAKQEAgLTY2NSw2ICs2NjYsOCBAQCBwcml2YXRlOgogICAgIHZv
aWQgdHJhY2tGb3JEZWJ1Z2dpbmcoKTsKICAgICB2b2lkIG1hdGVyaWFsaXplUmFyZURhdGEoKTsK
IAorICAgIHZvaWQgaW52YWxpZGF0ZU5vZGVMaXN0QW5kQ29sbGVjdGlvbkNhY2hlc0luQW5jZXN0
b3JzSW50ZXJuYWwoY29uc3QgUXVhbGlmaWVkTmFtZSogYXR0ck5hbWUgPSBudWxscHRyKTsKKwog
ICAgIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8TXV0YXRpb25PYnNlcnZlclJlZ2lzdHJhdGlvbj4+
KiBtdXRhdGlvbk9ic2VydmVyUmVnaXN0cnkoKTsKICAgICBIYXNoU2V0PE11dGF0aW9uT2JzZXJ2
ZXJSZWdpc3RyYXRpb24qPiogdHJhbnNpZW50TXV0YXRpb25PYnNlcnZlclJlZ2lzdHJ5KCk7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL0RPTS9ET01BdHRyLm1tIGIvU291cmNlL1dl
YktpdC9tYWMvRE9NL0RPTUF0dHIubW0KaW5kZXggMDc3NDEyN2Y4ZmQ5MTk3MTUwYjJkYmU1NDk3
MjczOTE4OWJlMWQyNi4uNDM5MjNkNzJiZDk1ZmZmNzA2NzA2ZmJjYjMwZjc3ZmM5ZjlkNmVjZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvRE9NL0RPTUF0dHIubW0KKysrIGIvU291cmNl
L1dlYktpdC9tYWMvRE9NL0RPTUF0dHIubW0KQEAgLTU4LDEzICs1OCwxMyBAQCAtIChCT09MKXNw
ZWNpZmllZAogLSAoTlNTdHJpbmcgKil2YWx1ZQogewogICAgIFdlYkNvcmU6OkpTTWFpblRocmVh
ZE51bGxTdGF0ZSBzdGF0ZTsKLSAgICByZXR1cm4gSU1QTC0+dmFsdWVGb3JCaW5kaW5ncygpOwor
ICAgIHJldHVybiBJTVBMLT52YWx1ZSgpOwogfQogCiAtICh2b2lkKXNldFZhbHVlOihOU1N0cmlu
ZyAqKW5ld1ZhbHVlCiB7CiAgICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRl
OwotICAgIElNUEwtPnNldFZhbHVlRm9yQmluZGluZ3MobmV3VmFsdWUpOworICAgIElNUEwtPnNl
dFZhbHVlKG5ld1ZhbHVlKTsKIH0KIAogLSAoRE9NRWxlbWVudCAqKW93bmVyRWxlbWVudApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3Rr
L0RPTS9XZWJLaXRET01BdHRyLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0
ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NQXR0ci5jcHAKaW5kZXggM2JmOGViYTgyNGFk
Y2VlMTMwYmI2Y2ExN2RkOTFmYWNmOTk5NDc5Ny4uMDJkOTU2MzVlMzIwYmM3NDllMjA2N2RkNDlh
Yzk0OGNlNjVmMzI0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Jbmpl
Y3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01BdHRyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dlYktpdERPTUF0dHIu
Y3BwCkBAIC0yNTcsNyArMjU3LDcgQEAgZ2NoYXIqIHdlYmtpdF9kb21fYXR0cl9nZXRfdmFsdWUo
V2ViS2l0RE9NQXR0ciogc2VsZikKICAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUg
c3RhdGU7CiAgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0RPTV9JU19BVFRSKHNlbGYp
LCAwKTsKICAgICBXZWJDb3JlOjpBdHRyKiBpdGVtID0gV2ViS2l0Ojpjb3JlKHNlbGYpOwotICAg
IGdjaGFyKiByZXN1bHQgPSBjb252ZXJ0VG9VVEY4U3RyaW5nKGl0ZW0tPnZhbHVlRm9yQmluZGlu
Z3MoKSk7CisgICAgZ2NoYXIqIHJlc3VsdCA9IGNvbnZlcnRUb1VURjhTdHJpbmcoaXRlbS0+dmFs
dWUoKSk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIApAQCAtMjY5LDcgKzI2OSw3IEBAIHZvaWQg
d2Via2l0X2RvbV9hdHRyX3NldF92YWx1ZShXZWJLaXRET01BdHRyKiBzZWxmLCBjb25zdCBnY2hh
ciogdmFsdWUsIEdFcnJvcioqCiAgICAgVU5VU0VEX1BBUkFNKGVycm9yKTsKICAgICBXZWJDb3Jl
OjpBdHRyKiBpdGVtID0gV2ViS2l0Ojpjb3JlKHNlbGYpOwogICAgIFdURjo6U3RyaW5nIGNvbnZl
cnRlZFZhbHVlID0gV1RGOjpTdHJpbmc6OmZyb21VVEY4KHZhbHVlKTsKLSAgICBpdGVtLT5zZXRW
YWx1ZUZvckJpbmRpbmdzKGNvbnZlcnRlZFZhbHVlKTsKKyAgICBpdGVtLT5zZXRWYWx1ZShjb252
ZXJ0ZWRWYWx1ZSk7CiB9CiAKIFdlYktpdERPTUVsZW1lbnQqIHdlYmtpdF9kb21fYXR0cl9nZXRf
b3duZXJfZWxlbWVudChXZWJLaXRET01BdHRyKiBzZWxmKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>309607</attachid>
            <date>2017-05-10 08:29:48 -0700</date>
            <delta_ts>2017-05-10 08:40:52 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-171909-20170510082946.patch</filename>
            <type>text/plain</type>
            <size>15792</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE2NTY0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggN2MzY2YwNTc5ZjI5ZWI0
OTY2MDI3OTYzMzQ4NThkZTc2ZmY0YTYyNi4uNzZlZjM1YTEwMTQ0MmQ4MWQ1MmU4YjJkMjdlYjk1
MzBiZmIxOTFmMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY3IEBACisyMDE3LTA1LTA5ICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgU2ltcGxpZnkgcmVsYXRpb25z
aGlwIGJldHdlZW4gQXR0ciBhbmQgRWxlbWVudCBub3cgdGhhdCBBdHRyIGlzIGNoaWxkbGVzcwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTcxOTA5CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgU2ltcGxpZnkg
cmVsYXRpb25zaGlwIGJldHdlZW4gQXR0ciBhbmQgRWxlbWVudCBub3cgdGhhdCBBdHRyIGlzIGNo
aWxkbGVzcworICAgICAgICBhZnRlciByMjE2MjU5LgorCisgICAgICAgIE5vIG5ldyB0ZXN0cywg
bm8gV2ViIGZhY2luZyBiZWhhdmlvciBjaGFuZ2UuCisKKyAgICAgICAgKiBkb20vQXR0ci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpBdHRyOjpzZXRWYWx1ZSk6CisgICAgICAgIEF0dHI6OnNldFZh
bHVlKCkgd2FzIG9ubHkgY2FsbGVkIGJ5IEVsZW1lbnQ6OnNldEF0dHJpYnV0ZUludGVybmFsKCkg
dG8gbWFrZSBzdXJlCisgICAgICAgIHdlIHVwZGF0ZWQgdGhlIEF0dHIgbm9kZSdzIFRleHQgY2hp
bGQuIEhvd2V2ZXIsIG5vdyB0aGF0IEF0dHIgaGFzIG5vIFRleHQgY2hpbGQsCisgICAgICAgIEVs
ZW1lbnQgbm8gbG9uZ2VyIG5lZWRzIHRvIHVwZGF0ZSB0aGUgQXR0ciBub2RlJ3MgdmFsdWUuCisg
ICAgICAgIEF0dHI6OnNldFZhbHVlRm9yQmluZGluZ3MoKSB3YSB0aHVzIHJlbmFtZWQgdG8gc2V0
VmFsdWUoKS4gSXRzIGltcGxlbWVudGF0aW9uCisgICAgICAgIHdhcyBhbHNvIHNpbXBsaWZpZWQg
YnkgY2FsbGluZyBFbGVtZW50OjpzZXRBdHRyaWJ1dGUoKSBvbiBpdHMgb3duZXJFbGVtZW50LCBp
ZgorICAgICAgICBpdCBoYXMgb25lLCBpbnN0ZWFkIG9mIGR1cGxpY2F0aW5nIGEgYnVuY2ggb2Yg
Y29kZSBmcm9tCisgICAgICAgIEVsZW1lbnQ6OnNldEF0dHJpYnV0ZUludGVybmFsKCkuCisKKyAg
ICAgICAgKFdlYkNvcmU6OkF0dHI6OnNldE5vZGVWYWx1ZSk6CisgICAgICAgIENhbGwgc2V0VmFs
dWUoKSBpbnN0ZWFkIG9mIHNldFZhbHVlRm9yQmluZGluZ3MoKSBub3cgdGhhdCBpdCBoYXMgYmVl
biByZW5hbWVkLgorCisgICAgICAgICogZG9tL0F0dHIuaDoKKyAgICAgICAgKiBkb20vQXR0ci5p
ZGw6CisgICAgICAgIFJlbmFtZSB2YWx1ZUZvckJpbmRpbmdzIC8gc2V0VmFsdWVGb3JCaW5kaW5n
cyB0byB2YWx1ZSAvIHNldFZhbHVlLgorCisgICAgICAgICogZG9tL0RvY3VtZW50Lmg6CisgICAg
ICAgIFNwbGl0IHNob3VsZEludmFsaWRhdGVOb2RlTGlzdEFuZENvbGxlY3Rpb25DYWNoZXMoKSBp
bnRvIDIgbWV0aG9kcywgb25lIHRha2luZyBhbiBBdHRyIG5hbWUKKyAgICAgICAgYW5kIGFub3Ro
ZXIgdGhhdCBkb2VzIG5vdC4gVGhlcmUgYXJlIG5vdyAyIGNhbGxzIHNpdGVzIGluc3RlYWQgb2Yg
b25lLCBzbyB3ZSBubyBsb25nZXIgbmVlZAorICAgICAgICB0byBicmFuY2ggaW4gdGhpcyBmdW5j
dGlvbi4KKworICAgICAgICAqIGRvbS9FbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVs
ZW1lbnQ6OnNldEF0dHJpYnV0ZUludGVybmFsKToKKyAgICAgICAgRHJvcCBjb2RlIGNhbGxpbmcg
QXR0cjo6c2V0VmFsdWUoKSBvbiB0aGUgQXR0ciBub2RlIHNpbmNlIEF0dHI6OnNldFZhbHVlKCkg
d2FzIG9ubHkKKyAgICAgICAgZHVwbGljYXRpbmcgbG9naWMgZnJvbSBFbGVtZW50OjpzZXRBdHRy
aWJ1dGVJbnRlcm5hbCgpIGFmdGVyIHIyMTYyNTkuIFRoZXJlIGlzIG5vdGhpbmcKKyAgICAgICAg
b24gQXR0ciB0aGF0IG5lZWRzIHVwZGF0aW5nIHdoZW4gYW4gZWxlbWVudCBhdHRyaWJ1dGUgZ2V0
cyB1cGRhdGVkLgorCisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjphdHRyaWJ1dGVDaGFuZ2Vk
KToKKyAgICAgICAgQ2FsbCB0aGUgbmV3IGludmFsaWRhdGVOb2RlTGlzdEFuZENvbGxlY3Rpb25D
YWNoZXNJbkFuY2VzdG9yc0ZvckF0dHJpYnV0ZSgpLiBUaGlzCisgICAgICAgIGlzIHRoZSBvbmx5
IGNhbGwgc2l0ZSB0aGF0IHBhc3NlcyBhbiBhdHRyaWJ1dGUgbmFtZS4KKworICAgICAgICAqIGRv
bS9Ob2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpzaG91bGRJbnZhbGlkYXRl
Tm9kZUxpc3RBbmRDb2xsZWN0aW9uQ2FjaGVzKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50
OjpzaG91bGRJbnZhbGlkYXRlTm9kZUxpc3RBbmRDb2xsZWN0aW9uQ2FjaGVzRm9yQXR0cmlidXRl
KToKKyAgICAgICAgU3BsaXQgaW50byAyIHRvIGF2b2lkIGJyYW5jaGluZywgYXMgZXhwbGFpbmVk
IGFib3ZlLgorCisgICAgICAgIChXZWJDb3JlOjpOb2RlOjppbnZhbGlkYXRlTm9kZUxpc3RBbmRD
b2xsZWN0aW9uQ2FjaGVzSW5BbmNlc3RvcnMpOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6aW52
YWxpZGF0ZU5vZGVMaXN0QW5kQ29sbGVjdGlvbkNhY2hlc0luQW5jZXN0b3JzRm9yQXR0cmlidXRl
KToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6OmludmFsaWRhdGVOb2RlTGlzdEFuZENvbGxlY3Rp
b25DYWNoZXNJbkFuY2VzdG9yc0ludGVybmFsKToKKyAgICAgICAgLSBpbnZhbGlkYXRlTm9kZUxp
c3RBbmRDb2xsZWN0aW9uQ2FjaGVzSW5BbmNlc3RvcnMoKSB1c2VkIHRvIGludmFsaWRhdGUgY2hp
bGROb2RlTGlzdHMKKyAgICAgICAgICBpZiB0aGUgTm9kZSB3YXMgYW4gYXR0cmlidXRlIG5vZGUu
IERyb3AgdGhpcyBhcyB0aGlzIGlzIG5vIGxvbmdlciBuZWVkZWQgYXMgb2YgcjIxNjI1OS4KKyAg
ICAgICAgLSBBZnRlciB0aGUgY2hhbmdlIHRvIEF0dHI6OnNldFZhbHVlKCksIGNhbGwgc2l0ZXMg
Zm9yCisgICAgICAgICAgaW52YWxpZGF0ZU5vZGVMaXN0QW5kQ29sbGVjdGlvbkNhY2hlc0luQW5j
ZXN0b3JzKCkgZWl0aGVyIGhhZCBubyBwYXJhbWV0ZXJzLCBvciBib3RoCisgICAgICAgICAgcGFy
YW1ldGVycyBwcmVzZW50IGFuZCBub24tbnVsbC4gVGhlcmUgaXMgdGhlcmVmb3JlIG5vIGxvbmdl
ciBhbnkgbmVlZCB0byBoYW5kbGUKKyAgICAgICAgICBoYXZpbmcgYW4gYXR0ck5hbWUgYnV0IG5v
IGF0dHJpYnV0ZU93bmVyRWxlbWVudC4gVG8gbWFrZSB0aGlzIG9idmlvdXMsIEkgc3BsaXQgdGhp
cworICAgICAgICAgIGludG8gMiBtZXRob2RzOiBpbnZhbGlkYXRlTm9kZUxpc3RBbmRDb2xsZWN0
aW9uQ2FjaGVzSW5BbmNlc3RvcnMoKSBhbmQKKyAgICAgICAgICBpbnZhbGlkYXRlTm9kZUxpc3RB
bmRDb2xsZWN0aW9uQ2FjaGVzSW5BbmNlc3RvcnNGb3JBdHRyaWJ1dGUoYXR0ck5hbWUpLiBXZSBu
byBsb25nZXIKKyAgICAgICAgICBuZWVkIHRoZSBhdHRyaWJ1dGVPd25lckVsZW1lbnQgcGFyYW1l
dGVyIGFzIGl0IHdhcyBvbmx5IHVzZWQgdG8gZXhpdCBlYXJseS4KKworICAgICAgICAqIGRvbS9O
b2RlLmg6CisKIDIwMTctMDUtMDkgIEVyaWMgQ2FybHNvbiAgPGVyaWMuY2FybHNvbkBhcHBsZS5j
b20+CiAKICAgICAgICAgW01lZGlhU3RyZWFtXSBkZXZpY2VJZCBjb25zdHJhaW50IGRvZXNuJ3Qg
d29yayB3aXRoIGdldFVzZXJNZWRpYQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvQ2hh
bmdlTG9nIGIvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCmluZGV4IDM2NGM5MGU2OTY1NDIy
MDMyYjliNGEwODdjMjMyMmM3MTAxY2U1ZTcuLjhkNzY0NzkzYzExMmNlMjg4MTMxNzdiYzk5MmJm
MmZhNDViN2Q0MDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZworKysg
Yi9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBAQAorMjAxNy0wNS0w
OSAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIFNpbXBsaWZ5IHJl
bGF0aW9uc2hpcCBiZXR3ZWVuIEF0dHIgYW5kIEVsZW1lbnQgbm93IHRoYXQgQXR0ciBpcyBjaGls
ZGxlc3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3
MTkwOQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEJ1
aWxkIGZpeC4KKworICAgICAgICAqIERPTS9ET01BdHRyLm1tOgorICAgICAgICAoLVtET01BdHRy
IHZhbHVlXSk6CisgICAgICAgICgtW0RPTUF0dHIgc2V0VmFsdWU6XSk6CisKIDIwMTctMDUtMDgg
IENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBNb3ZlICdzdHlsZScg
ZnJvbSBFbGVtZW50IHRvIEhUTUxFbGVtZW50IC8gU1ZHRWxlbWVudCBhbmQgbWFrZSBpdCBzZXR0
YWJsZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0F0dHIuY3BwIGIvU291cmNlL1dl
YkNvcmUvZG9tL0F0dHIuY3BwCmluZGV4IDBhNGRjNDg5NTk3NGM0YmYyYWQyYmYyNGE0MmQ5YzFj
NzZkYzM3YTUuLmM4ZmZlYmU4ODZhMTUyMzE0NGEzMWMxMmI5NTQ2NmUyZWQwNjVkMmYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9BdHRyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vQXR0ci5jcHAKQEAgLTg2LDI4ICs4NiwxNSBAQCBFeGNlcHRpb25Pcjx2b2lkPiBBdHRyOjpz
ZXRQcmVmaXgoY29uc3QgQXRvbWljU3RyaW5nJiBwcmVmaXgpCiAKIHZvaWQgQXR0cjo6c2V0VmFs
dWUoY29uc3QgQXRvbWljU3RyaW5nJiB2YWx1ZSkKIHsKLSAgICBpZiAobV9lbGVtZW50KSB7Ci0g
ICAgICAgIFN0eWxlOjpBdHRyaWJ1dGVDaGFuZ2VJbnZhbGlkYXRpb24gc3R5bGVJbnZhbGlkYXRp
b24oKm1fZWxlbWVudCwgcXVhbGlmaWVkTmFtZSgpLCBlbGVtZW50QXR0cmlidXRlKCkudmFsdWUo
KSwgdmFsdWUpOwotICAgICAgICBlbGVtZW50QXR0cmlidXRlKCkuc2V0VmFsdWUodmFsdWUpOwot
ICAgIH0gZWxzZQotICAgICAgICBtX3N0YW5kYWxvbmVWYWx1ZSA9IHZhbHVlOwotCi0gICAgaW52
YWxpZGF0ZU5vZGVMaXN0QW5kQ29sbGVjdGlvbkNhY2hlc0luQW5jZXN0b3JzKCZtX25hbWUsIG1f
ZWxlbWVudCk7Ci19Ci0KLXZvaWQgQXR0cjo6c2V0VmFsdWVGb3JCaW5kaW5ncyhjb25zdCBBdG9t
aWNTdHJpbmcmIHZhbHVlKQotewotICAgIEF0b21pY1N0cmluZyBvbGRWYWx1ZSA9IHRoaXMtPnZh
bHVlKCk7CiAgICAgaWYgKG1fZWxlbWVudCkKLSAgICAgICAgbV9lbGVtZW50LT53aWxsTW9kaWZ5
QXR0cmlidXRlKHF1YWxpZmllZE5hbWUoKSwgb2xkVmFsdWUsIHZhbHVlKTsKLSAgICBzZXRWYWx1
ZSh2YWx1ZSk7Ci0gICAgaWYgKG1fZWxlbWVudCkKLSAgICAgICAgbV9lbGVtZW50LT5kaWRNb2Rp
ZnlBdHRyaWJ1dGUocXVhbGlmaWVkTmFtZSgpLCBvbGRWYWx1ZSwgdmFsdWUpOworICAgICAgICBt
X2VsZW1lbnQtPnNldEF0dHJpYnV0ZShxdWFsaWZpZWROYW1lKCksIHZhbHVlKTsKKyAgICBlbHNl
CisgICAgICAgIG1fc3RhbmRhbG9uZVZhbHVlID0gdmFsdWU7CiB9CiAKIEV4Y2VwdGlvbk9yPHZv
aWQ+IEF0dHI6OnNldE5vZGVWYWx1ZShjb25zdCBTdHJpbmcmIHZhbHVlKQogewotICAgIHNldFZh
bHVlRm9yQmluZGluZ3ModmFsdWUpOworICAgIHNldFZhbHVlKHZhbHVlKTsKICAgICByZXR1cm4g
eyB9OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vQXR0ci5oIGIvU291cmNl
L1dlYkNvcmUvZG9tL0F0dHIuaAppbmRleCA3MmE2MGI2ZmY2M2VjMGExNGFiMjgwNmI5MmFkY2Rm
ODg3OGNkNjA3Li40ZDljNjU4NGE2OTYyNDZmMzZjMDU1ODU2NWFmN2Y0Y2M3NDcwNjIyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vQXR0ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9BdHRyLmgKQEAgLTQ0LDkgKzQ0LDcgQEAgcHVibGljOgogICAgIEVsZW1lbnQqIG93bmVyRWxl
bWVudCgpIGNvbnN0IHsgcmV0dXJuIG1fZWxlbWVudDsgfQogCiAgICAgV0VCQ09SRV9FWFBPUlQg
Y29uc3QgQXRvbWljU3RyaW5nJiB2YWx1ZSgpIGNvbnN0OwotICAgIHZvaWQgc2V0VmFsdWUoY29u
c3QgQXRvbWljU3RyaW5nJik7Ci0gICAgY29uc3QgQXRvbWljU3RyaW5nJiB2YWx1ZUZvckJpbmRp
bmdzKCkgY29uc3QgeyByZXR1cm4gdmFsdWUoKTsgfQotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQg
c2V0VmFsdWVGb3JCaW5kaW5ncyhjb25zdCBBdG9taWNTdHJpbmcmKTsKKyAgICBXRUJDT1JFX0VY
UE9SVCB2b2lkIHNldFZhbHVlKGNvbnN0IEF0b21pY1N0cmluZyYpOwogCiAgICAgY29uc3QgUXVh
bGlmaWVkTmFtZSYgcXVhbGlmaWVkTmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fbmFtZTsgfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vQXR0ci5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vQXR0ci5pZGwKaW5kZXggYjA5MzUxMTBjYTEzMzYzNzkyMWYwY2I4NTAwNjA1OTMyOTQxZmVh
Ni4uNDNmODYwZmY5MDIzMjI2MjQyNmE4ZmMzMGNjNjhhNDgyMmI5N2Y1YyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvZG9tL0F0dHIuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9BdHRy
LmlkbApAQCAtMjcsNyArMjcsNyBAQAogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01TdHJpbmc/
IHByZWZpeDsKICAgICByZWFkb25seSBhdHRyaWJ1dGUgRE9NU3RyaW5nIGxvY2FsTmFtZTsKICAg
ICByZWFkb25seSBhdHRyaWJ1dGUgRE9NU3RyaW5nIG5hbWU7Ci0gICAgW0NFUmVhY3Rpb25zLCBJ
bXBsZW1lbnRlZEFzPXZhbHVlRm9yQmluZGluZ3NdIGF0dHJpYnV0ZSBET01TdHJpbmcgdmFsdWU7
CisgICAgW0NFUmVhY3Rpb25zXSBhdHRyaWJ1dGUgRE9NU3RyaW5nIHZhbHVlOwogCiAgICAgcmVh
ZG9ubHkgYXR0cmlidXRlIEVsZW1lbnQ/IG93bmVyRWxlbWVudDsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQu
aAppbmRleCA4Y2M5MDY3YTZlYTRmMGUyN2U0MGRlMTgwMzQ4ODE3MDI5N2JlYTMzLi4wMDE3YmE5
NWMxZDFjOThiZjE1MWZjZDdjZTliMzIwN2QzZjgxYWNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vRG9jdW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaApA
QCAtNzI2LDcgKzcyNiw4IEBAIHB1YmxpYzoKICAgICB2b2lkIHVucmVnaXN0ZXJDb2xsZWN0aW9u
KEhUTUxDb2xsZWN0aW9uJik7CiAgICAgdm9pZCBjb2xsZWN0aW9uQ2FjaGVkSWROYW1lTWFwKGNv
bnN0IEhUTUxDb2xsZWN0aW9uJik7CiAgICAgdm9pZCBjb2xsZWN0aW9uV2lsbENsZWFySWROYW1l
TWFwKGNvbnN0IEhUTUxDb2xsZWN0aW9uJik7Ci0gICAgYm9vbCBzaG91bGRJbnZhbGlkYXRlTm9k
ZUxpc3RBbmRDb2xsZWN0aW9uQ2FjaGVzKGNvbnN0IFF1YWxpZmllZE5hbWUqIGF0dHJOYW1lID0g
bnVsbHB0cikgY29uc3Q7CisgICAgYm9vbCBzaG91bGRJbnZhbGlkYXRlTm9kZUxpc3RBbmRDb2xs
ZWN0aW9uQ2FjaGVzKCkgY29uc3Q7CisgICAgYm9vbCBzaG91bGRJbnZhbGlkYXRlTm9kZUxpc3RB
bmRDb2xsZWN0aW9uQ2FjaGVzRm9yQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJO
YW1lKSBjb25zdDsKICAgICB2b2lkIGludmFsaWRhdGVOb2RlTGlzdEFuZENvbGxlY3Rpb25DYWNo
ZXMoY29uc3QgUXVhbGlmaWVkTmFtZSogYXR0ck5hbWUpOwogCiAgICAgdm9pZCBhdHRhY2hOb2Rl
SXRlcmF0b3IoTm9kZUl0ZXJhdG9yKik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20v
RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKaW5kZXggZWM3ZDE4
NGZjMmIzZTNiYzM3ZGZlN2FhZTVlMmNhZDExM2QxNGE4NC4uZjcxYmFjY2I2ODZjNzBiNTFkNGU2
MDU5ZjhmNGQxZjlmZmM5Yjc3MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1l
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcApAQCAtMTI3NiwxNSAr
MTI3Niw4IEBAIGlubGluZSB2b2lkIEVsZW1lbnQ6OnNldEF0dHJpYnV0ZUludGVybmFsKHVuc2ln
bmVkIGluZGV4LCBjb25zdCBRdWFsaWZpZWROYW1lJiBuCiAgICAgd2lsbE1vZGlmeUF0dHJpYnV0
ZShhdHRyaWJ1dGVOYW1lLCBvbGRWYWx1ZSwgbmV3VmFsdWUpOwogCiAgICAgaWYgKG5ld1ZhbHVl
ICE9IG9sZFZhbHVlKSB7Ci0gICAgICAgIC8vIElmIHRoZXJlIGlzIGFuIEF0dHIgbm9kZSBob29r
ZWQgdG8gdGhpcyBhdHRyaWJ1dGUsIHRoZSBBdHRyOjpzZXRWYWx1ZSgpIGNhbGwgYmVsb3cKLSAg
ICAgICAgLy8gd2lsbCB3cml0ZSBpbnRvIHRoZSBFbGVtZW50RGF0YS4KLSAgICAgICAgLy8gRklY
TUU6IFJlZmFjdG9yIHRoaXMgc28gaXQgbWFrZXMgc29tZSBzZW5zZS4KLSAgICAgICAgaWYgKFJl
ZlB0cjxBdHRyPiBhdHRyTm9kZSA9IGF0dHJJZkV4aXN0cyhhdHRyaWJ1dGVOYW1lKSkKLSAgICAg
ICAgICAgIGF0dHJOb2RlLT5zZXRWYWx1ZShuZXdWYWx1ZSk7Ci0gICAgICAgIGVsc2UgewotICAg
ICAgICAgICAgU3R5bGU6OkF0dHJpYnV0ZUNoYW5nZUludmFsaWRhdGlvbiBzdHlsZUludmFsaWRh
dGlvbigqdGhpcywgbmFtZSwgb2xkVmFsdWUsIG5ld1ZhbHVlKTsKLSAgICAgICAgICAgIGVuc3Vy
ZVVuaXF1ZUVsZW1lbnREYXRhKCkuYXR0cmlidXRlQXQoaW5kZXgpLnNldFZhbHVlKG5ld1ZhbHVl
KTsKLSAgICAgICAgfQorICAgICAgICBTdHlsZTo6QXR0cmlidXRlQ2hhbmdlSW52YWxpZGF0aW9u
IHN0eWxlSW52YWxpZGF0aW9uKCp0aGlzLCBuYW1lLCBvbGRWYWx1ZSwgbmV3VmFsdWUpOworICAg
ICAgICBlbnN1cmVVbmlxdWVFbGVtZW50RGF0YSgpLmF0dHJpYnV0ZUF0KGluZGV4KS5zZXRWYWx1
ZShuZXdWYWx1ZSk7CiAgICAgfQogCiAgICAgZGlkTW9kaWZ5QXR0cmlidXRlKGF0dHJpYnV0ZU5h
bWUsIG9sZFZhbHVlLCBuZXdWYWx1ZSk7CkBAIC0xMzQwLDcgKzEzMzMsNyBAQCB2b2lkIEVsZW1l
bnQ6OmF0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRv
bWljU3RyaW5nJiBvbAogICAgIGlmICh2YWx1ZUlzU2FtZUFzQmVmb3JlKQogICAgICAgICByZXR1
cm47CiAKLSAgICBpbnZhbGlkYXRlTm9kZUxpc3RBbmRDb2xsZWN0aW9uQ2FjaGVzSW5BbmNlc3Rv
cnMoJm5hbWUsIHRoaXMpOworICAgIGludmFsaWRhdGVOb2RlTGlzdEFuZENvbGxlY3Rpb25DYWNo
ZXNJbkFuY2VzdG9yc0ZvckF0dHJpYnV0ZShuYW1lKTsKIAogICAgIGlmIChBWE9iamVjdENhY2hl
KiBjYWNoZSA9IGRvY3VtZW50KCkuZXhpc3RpbmdBWE9iamVjdENhY2hlKCkpCiAgICAgICAgIGNh
Y2hlLT5oYW5kbGVBdHRyaWJ1dGVDaGFuZ2VkKG5hbWUsIHRoaXMpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwCmlu
ZGV4IDk2ZjJlYjE2ZmZiOGQ2MmNiMzJlYWViYTVlYzA0MDA3NWE4N2IwMjYuLjNiOTVlYTg5MzA0
Yzk4ZmUyOGU0MDkzM2IyZTk2ZmViNTJiODdlMWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Ob2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAKQEAgLTgzOCwx
OSArODM4LDIwIEBAIGJvb2wgc2hvdWxkSW52YWxpZGF0ZU5vZGVMaXN0Q2FjaGVzRm9yQXR0cjxu
dW1Ob2RlTGlzdEludmFsaWRhdGlvblR5cGVzPihjb25zdCB1CiAgICAgcmV0dXJuIGZhbHNlOwog
fQogCi1ib29sIERvY3VtZW50OjpzaG91bGRJbnZhbGlkYXRlTm9kZUxpc3RBbmRDb2xsZWN0aW9u
Q2FjaGVzKGNvbnN0IFF1YWxpZmllZE5hbWUqIGF0dHJOYW1lKSBjb25zdAorYm9vbCBEb2N1bWVu
dDo6c2hvdWxkSW52YWxpZGF0ZU5vZGVMaXN0QW5kQ29sbGVjdGlvbkNhY2hlcygpIGNvbnN0CiB7
Ci0gICAgaWYgKGF0dHJOYW1lKQotICAgICAgICByZXR1cm4gc2hvdWxkSW52YWxpZGF0ZU5vZGVM
aXN0Q2FjaGVzRm9yQXR0cjxEb05vdEludmFsaWRhdGVPbkF0dHJpYnV0ZUNoYW5nZXMgKyAxPiht
X25vZGVMaXN0QW5kQ29sbGVjdGlvbkNvdW50cywgKmF0dHJOYW1lKTsKLQotICAgIGZvciAoaW50
IHR5cGUgPSAwOyB0eXBlIDwgbnVtTm9kZUxpc3RJbnZhbGlkYXRpb25UeXBlczsgdHlwZSsrKSB7
CisgICAgZm9yIChpbnQgdHlwZSA9IDA7IHR5cGUgPCBudW1Ob2RlTGlzdEludmFsaWRhdGlvblR5
cGVzOyArK3R5cGUpIHsKICAgICAgICAgaWYgKG1fbm9kZUxpc3RBbmRDb2xsZWN0aW9uQ291bnRz
W3R5cGVdKQogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQotCiAgICAgcmV0dXJuIGZh
bHNlOwogfQogCitib29sIERvY3VtZW50OjpzaG91bGRJbnZhbGlkYXRlTm9kZUxpc3RBbmRDb2xs
ZWN0aW9uQ2FjaGVzRm9yQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKSBj
b25zdAoreworICAgIHJldHVybiBzaG91bGRJbnZhbGlkYXRlTm9kZUxpc3RDYWNoZXNGb3JBdHRy
PERvTm90SW52YWxpZGF0ZU9uQXR0cmlidXRlQ2hhbmdlcyArIDE+KG1fbm9kZUxpc3RBbmRDb2xs
ZWN0aW9uQ291bnRzLCBhdHRyTmFtZSk7Cit9CisKIHZvaWQgRG9jdW1lbnQ6OmludmFsaWRhdGVO
b2RlTGlzdEFuZENvbGxlY3Rpb25DYWNoZXMoY29uc3QgUXVhbGlmaWVkTmFtZSogYXR0ck5hbWUp
CiB7CiAgICAgVmVjdG9yPExpdmVOb2RlTGlzdCosIDg+IGxpc3RzOwpAQCAtODY0LDI4ICs4NjUs
MzggQEAgdm9pZCBEb2N1bWVudDo6aW52YWxpZGF0ZU5vZGVMaXN0QW5kQ29sbGVjdGlvbkNhY2hl
cyhjb25zdCBRdWFsaWZpZWROYW1lKiBhdHRyTmEKICAgICAgICAgY29sbGVjdGlvbi0+aW52YWxp
ZGF0ZUNhY2hlRm9yQXR0cmlidXRlKGF0dHJOYW1lKTsKIH0KIAotdm9pZCBOb2RlOjppbnZhbGlk
YXRlTm9kZUxpc3RBbmRDb2xsZWN0aW9uQ2FjaGVzSW5BbmNlc3RvcnMoY29uc3QgUXVhbGlmaWVk
TmFtZSogYXR0ck5hbWUsIEVsZW1lbnQqIGF0dHJpYnV0ZU93bmVyRWxlbWVudCkKK3ZvaWQgTm9k
ZTo6aW52YWxpZGF0ZU5vZGVMaXN0QW5kQ29sbGVjdGlvbkNhY2hlc0luQW5jZXN0b3JzKCkKIHsK
LSAgICBpZiAoaGFzUmFyZURhdGEoKSAmJiAoIWF0dHJOYW1lIHx8IGlzQXR0cmlidXRlTm9kZSgp
KSkgewotICAgICAgICBpZiAoTm9kZUxpc3RzTm9kZURhdGEqIGxpc3RzID0gcmFyZURhdGEoKS0+
bm9kZUxpc3RzKCkpCisgICAgaWYgKGhhc1JhcmVEYXRhKCkpIHsKKyAgICAgICAgaWYgKGF1ZG8q
IGxpc3RzID0gcmFyZURhdGEoKS0+bm9kZUxpc3RzKCkpCiAgICAgICAgICAgICBsaXN0cy0+Y2xl
YXJDaGlsZE5vZGVMaXN0Q2FjaGUoKTsKICAgICB9CiAKLSAgICAvLyBNb2RpZmljYXRpb25zIHRv
IGF0dHJpYnV0ZXMgdGhhdCBhcmUgbm90IGFzc29jaWF0ZWQgd2l0aCBhbiBFbGVtZW50IGNhbid0
IGludmFsaWRhdGUgTm9kZUxpc3QgY2FjaGVzLgotICAgIGlmIChhdHRyTmFtZSAmJiAhYXR0cmli
dXRlT3duZXJFbGVtZW50KQotICAgICAgICByZXR1cm47CisgICAgaWYgKGRvY3VtZW50KCkuc2hv
dWxkSW52YWxpZGF0ZU5vZGVMaXN0QW5kQ29sbGVjdGlvbkNhY2hlcygpKQorICAgICAgICBpbnZh
bGlkYXRlTm9kZUxpc3RBbmRDb2xsZWN0aW9uQ2FjaGVzSW5BbmNlc3RvcnNJbnRlcm5hbCgpOwor
fQogCi0gICAgaWYgKCFkb2N1bWVudCgpLnNob3VsZEludmFsaWRhdGVOb2RlTGlzdEFuZENvbGxl
Y3Rpb25DYWNoZXMoYXR0ck5hbWUpKQotICAgICAgICByZXR1cm47Cit2b2lkIE5vZGU6OmludmFs
aWRhdGVOb2RlTGlzdEFuZENvbGxlY3Rpb25DYWNoZXNJbkFuY2VzdG9yc0ZvckF0dHJpYnV0ZShj
b25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSkKK3sKKyAgICBBU1NFUlQoaXM8RWxlbWVudD4o
KnRoaXMpKTsKKworICAgIGlmIChkb2N1bWVudCgpLnNob3VsZEludmFsaWRhdGVOb2RlTGlzdEFu
ZENvbGxlY3Rpb25DYWNoZXNGb3JBdHRyaWJ1dGUoYXR0ck5hbWUpKQorICAgICAgICBpbnZhbGlk
YXRlTm9kZUxpc3RBbmRDb2xsZWN0aW9uQ2FjaGVzSW5BbmNlc3RvcnNJbnRlcm5hbCgmYXR0ck5h
bWUpOworfQorCit2b2lkIE5vZGU6OmludmFsaWRhdGVOb2RlTGlzdEFuZENvbGxlY3Rpb25DYWNo
ZXNJbkFuY2VzdG9yc0ludGVybmFsKGNvbnN0IFF1YWxpZmllZE5hbWUqIGF0dHJOYW1lKQorewor
ICAgIEFTU0VSVChhdHRyTmFtZSB8fCBkb2N1bWVudCgpLnNob3VsZEludmFsaWRhdGVOb2RlTGlz
dEFuZENvbGxlY3Rpb25DYWNoZXMoKSk7CisgICAgQVNTRVJUKCFhdHRyTmFtZSB8fCBkb2N1bWVu
dCgpLnNob3VsZEludmFsaWRhdGVOb2RlTGlzdEFuZENvbGxlY3Rpb25DYWNoZXNGb3JBdHRyaWJ1
dGUoKmF0dHJOYW1lKSk7CiAKICAgICBkb2N1bWVudCgpLmludmFsaWRhdGVOb2RlTGlzdEFuZENv
bGxlY3Rpb25DYWNoZXMoYXR0ck5hbWUpOwogCi0gICAgZm9yIChOb2RlKiBub2RlID0gdGhpczsg
bm9kZTsgbm9kZSA9IG5vZGUtPnBhcmVudE5vZGUoKSkgeworICAgIGZvciAoYXV0byogbm9kZSA9
IHRoaXM7IG5vZGU7IG5vZGUgPSBub2RlLT5wYXJlbnROb2RlKCkpIHsKICAgICAgICAgaWYgKCFu
b2RlLT5oYXNSYXJlRGF0YSgpKQogICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIE5vZGVS
YXJlRGF0YSogZGF0YSA9IG5vZGUtPnJhcmVEYXRhKCk7Ci0gICAgICAgIGlmIChkYXRhLT5ub2Rl
TGlzdHMoKSkKLSAgICAgICAgICAgIGRhdGEtPm5vZGVMaXN0cygpLT5pbnZhbGlkYXRlQ2FjaGVz
KGF0dHJOYW1lKTsKKworICAgICAgICBpZiAoYXV0byogbGlzdHMgPSBub2RlLT5yYXJlRGF0YSgp
LT5ub2RlTGlzdHMoKSkKKyAgICAgICAgICAgIGxpc3RzLT5pbnZhbGlkYXRlQ2FjaGVzKGF0dHJO
YW1lKTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5oCmluZGV4IDI1ODZhNDdiODM0MGI3N2YwZGY0ZDFm
MWMxNTgyN2EzMTM3Nzc2MDIuLjI4YjI0ZmFjYjM5YWIxNGQwNzk3NmIxMTVhMzBlMGMyMjIxMjA2
OTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvZG9tL05vZGUuaApAQCAtNDc0LDcgKzQ3NCw4IEBAIHB1YmxpYzoKICAgICB2b2lkIHNo
b3dUcmVlRm9yVGhpc0Fjcm9zc0ZyYW1lKCkgY29uc3Q7CiAjZW5kaWYgLy8gRU5BQkxFKFRSRUVf
REVCVUdHSU5HKQogCi0gICAgdm9pZCBpbnZhbGlkYXRlTm9kZUxpc3RBbmRDb2xsZWN0aW9uQ2Fj
aGVzSW5BbmNlc3RvcnMoY29uc3QgUXVhbGlmaWVkTmFtZSogYXR0ck5hbWUgPSBudWxscHRyLCBF
bGVtZW50KiBhdHRyaWJ1dGVPd25lckVsZW1lbnQgPSBudWxscHRyKTsKKyAgICB2b2lkIGludmFs
aWRhdGVOb2RlTGlzdEFuZENvbGxlY3Rpb25DYWNoZXNJbkFuY2VzdG9ycygpOworICAgIHZvaWQg
aW52YWxpZGF0ZU5vZGVMaXN0QW5kQ29sbGVjdGlvbkNhY2hlc0luQW5jZXN0b3JzRm9yQXR0cmli
dXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKTsKICAgICBOb2RlTGlzdHNOb2RlRGF0
YSogbm9kZUxpc3RzKCk7CiAgICAgdm9pZCBjbGVhck5vZGVMaXN0cygpOwogCkBAIC02NjUsNiAr
NjY2LDggQEAgcHJpdmF0ZToKICAgICB2b2lkIHRyYWNrRm9yRGVidWdnaW5nKCk7CiAgICAgdm9p
ZCBtYXRlcmlhbGl6ZVJhcmVEYXRhKCk7CiAKKyAgICB2b2lkIGludmFsaWRhdGVOb2RlTGlzdEFu
ZENvbGxlY3Rpb25DYWNoZXNJbkFuY2VzdG9yc0ludGVybmFsKGNvbnN0IFF1YWxpZmllZE5hbWUq
IGF0dHJOYW1lID0gbnVsbHB0cik7CisKICAgICBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPE11dGF0
aW9uT2JzZXJ2ZXJSZWdpc3RyYXRpb24+PiogbXV0YXRpb25PYnNlcnZlclJlZ2lzdHJ5KCk7CiAg
ICAgSGFzaFNldDxNdXRhdGlvbk9ic2VydmVyUmVnaXN0cmF0aW9uKj4qIHRyYW5zaWVudE11dGF0
aW9uT2JzZXJ2ZXJSZWdpc3RyeSgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9E
T00vRE9NQXR0ci5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL0RPTS9ET01BdHRyLm1tCmluZGV4IDA3
NzQxMjdmOGZkOTE5NzE1MGIyZGJlNTQ5NzI3MzkxODliZTFkMjYuLjQzOTIzZDcyYmQ5NWZmZjcw
NjcwNmZiY2IzMGY3N2ZjOWY5ZDZlY2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL0RP
TS9ET01BdHRyLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL0RPTS9ET01BdHRyLm1tCkBAIC01
OCwxMyArNTgsMTMgQEAgLSAoQk9PTClzcGVjaWZpZWQKIC0gKE5TU3RyaW5nICopdmFsdWUKIHsK
ICAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7Ci0gICAgcmV0dXJuIElN
UEwtPnZhbHVlRm9yQmluZGluZ3MoKTsKKyAgICByZXR1cm4gSU1QTC0+dmFsdWUoKTsKIH0KIAog
LSAodm9pZClzZXRWYWx1ZTooTlNTdHJpbmcgKiluZXdWYWx1ZQogewogICAgIFdlYkNvcmU6OkpT
TWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKLSAgICBJTVBMLT5zZXRWYWx1ZUZvckJpbmRpbmdz
KG5ld1ZhbHVlKTsKKyAgICBJTVBMLT5zZXRWYWx1ZShuZXdWYWx1ZSk7CiB9CiAKIC0gKERPTUVs
ZW1lbnQgKilvd25lckVsZW1lbnQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NQXR0ci5jcHAgYi9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dlYktpdERPTUF0
dHIuY3BwCmluZGV4IDNiZjhlYmE4MjRhZGNlZTEzMGJiNmNhMTdkZDkxZmFjZjk5OTQ3OTcuLjAy
ZDk1NjM1ZTMyMGJjNzQ5ZTIwNjdkZDQ5YWM5NDhjZTY1ZjMyNGUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9N
QXR0ci5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9B
UEkvZ3RrL0RPTS9XZWJLaXRET01BdHRyLmNwcApAQCAtMjU3LDcgKzI1Nyw3IEBAIGdjaGFyKiB3
ZWJraXRfZG9tX2F0dHJfZ2V0X3ZhbHVlKFdlYktpdERPTUF0dHIqIHNlbGYpCiAgICAgV2ViQ29y
ZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwogICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWls
KFdFQktJVF9ET01fSVNfQVRUUihzZWxmKSwgMCk7CiAgICAgV2ViQ29yZTo6QXR0ciogaXRlbSA9
IFdlYktpdDo6Y29yZShzZWxmKTsKLSAgICBnY2hhciogcmVzdWx0ID0gY29udmVydFRvVVRGOFN0
cmluZyhpdGVtLT52YWx1ZUZvckJpbmRpbmdzKCkpOworICAgIGdjaGFyKiByZXN1bHQgPSBjb252
ZXJ0VG9VVEY4U3RyaW5nKGl0ZW0tPnZhbHVlKCkpOwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAK
QEAgLTI2OSw3ICsyNjksNyBAQCB2b2lkIHdlYmtpdF9kb21fYXR0cl9zZXRfdmFsdWUoV2ViS2l0
RE9NQXR0ciogc2VsZiwgY29uc3QgZ2NoYXIqIHZhbHVlLCBHRXJyb3IqKgogICAgIFVOVVNFRF9Q
QVJBTShlcnJvcik7CiAgICAgV2ViQ29yZTo6QXR0ciogaXRlbSA9IFdlYktpdDo6Y29yZShzZWxm
KTsKICAgICBXVEY6OlN0cmluZyBjb252ZXJ0ZWRWYWx1ZSA9IFdURjo6U3RyaW5nOjpmcm9tVVRG
OCh2YWx1ZSk7Ci0gICAgaXRlbS0+c2V0VmFsdWVGb3JCaW5kaW5ncyhjb252ZXJ0ZWRWYWx1ZSk7
CisgICAgaXRlbS0+c2V0VmFsdWUoY29udmVydGVkVmFsdWUpOwogfQogCiBXZWJLaXRET01FbGVt
ZW50KiB3ZWJraXRfZG9tX2F0dHJfZ2V0X293bmVyX2VsZW1lbnQoV2ViS2l0RE9NQXR0ciogc2Vs
ZikK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>309608</attachid>
            <date>2017-05-10 08:40:53 -0700</date>
            <delta_ts>2017-05-10 14:27:19 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-171909-20170510084052.patch</filename>
            <type>text/plain</type>
            <size>15792</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE2NTY0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggN2MzY2YwNTc5ZjI5ZWI0
OTY2MDI3OTYzMzQ4NThkZTc2ZmY0YTYyNi4uNzZlZjM1YTEwMTQ0MmQ4MWQ1MmU4YjJkMjdlYjk1
MzBiZmIxOTFmMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY3IEBACisyMDE3LTA1LTA5ICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgU2ltcGxpZnkgcmVsYXRpb25z
aGlwIGJldHdlZW4gQXR0ciBhbmQgRWxlbWVudCBub3cgdGhhdCBBdHRyIGlzIGNoaWxkbGVzcwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTcxOTA5CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgU2ltcGxpZnkg
cmVsYXRpb25zaGlwIGJldHdlZW4gQXR0ciBhbmQgRWxlbWVudCBub3cgdGhhdCBBdHRyIGlzIGNo
aWxkbGVzcworICAgICAgICBhZnRlciByMjE2MjU5LgorCisgICAgICAgIE5vIG5ldyB0ZXN0cywg
bm8gV2ViIGZhY2luZyBiZWhhdmlvciBjaGFuZ2UuCisKKyAgICAgICAgKiBkb20vQXR0ci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpBdHRyOjpzZXRWYWx1ZSk6CisgICAgICAgIEF0dHI6OnNldFZh
bHVlKCkgd2FzIG9ubHkgY2FsbGVkIGJ5IEVsZW1lbnQ6OnNldEF0dHJpYnV0ZUludGVybmFsKCkg
dG8gbWFrZSBzdXJlCisgICAgICAgIHdlIHVwZGF0ZWQgdGhlIEF0dHIgbm9kZSdzIFRleHQgY2hp
bGQuIEhvd2V2ZXIsIG5vdyB0aGF0IEF0dHIgaGFzIG5vIFRleHQgY2hpbGQsCisgICAgICAgIEVs
ZW1lbnQgbm8gbG9uZ2VyIG5lZWRzIHRvIHVwZGF0ZSB0aGUgQXR0ciBub2RlJ3MgdmFsdWUuCisg
ICAgICAgIEF0dHI6OnNldFZhbHVlRm9yQmluZGluZ3MoKSB3YSB0aHVzIHJlbmFtZWQgdG8gc2V0
VmFsdWUoKS4gSXRzIGltcGxlbWVudGF0aW9uCisgICAgICAgIHdhcyBhbHNvIHNpbXBsaWZpZWQg
YnkgY2FsbGluZyBFbGVtZW50OjpzZXRBdHRyaWJ1dGUoKSBvbiBpdHMgb3duZXJFbGVtZW50LCBp
ZgorICAgICAgICBpdCBoYXMgb25lLCBpbnN0ZWFkIG9mIGR1cGxpY2F0aW5nIGEgYnVuY2ggb2Yg
Y29kZSBmcm9tCisgICAgICAgIEVsZW1lbnQ6OnNldEF0dHJpYnV0ZUludGVybmFsKCkuCisKKyAg
ICAgICAgKFdlYkNvcmU6OkF0dHI6OnNldE5vZGVWYWx1ZSk6CisgICAgICAgIENhbGwgc2V0VmFs
dWUoKSBpbnN0ZWFkIG9mIHNldFZhbHVlRm9yQmluZGluZ3MoKSBub3cgdGhhdCBpdCBoYXMgYmVl
biByZW5hbWVkLgorCisgICAgICAgICogZG9tL0F0dHIuaDoKKyAgICAgICAgKiBkb20vQXR0ci5p
ZGw6CisgICAgICAgIFJlbmFtZSB2YWx1ZUZvckJpbmRpbmdzIC8gc2V0VmFsdWVGb3JCaW5kaW5n
cyB0byB2YWx1ZSAvIHNldFZhbHVlLgorCisgICAgICAgICogZG9tL0RvY3VtZW50Lmg6CisgICAg
ICAgIFNwbGl0IHNob3VsZEludmFsaWRhdGVOb2RlTGlzdEFuZENvbGxlY3Rpb25DYWNoZXMoKSBp
bnRvIDIgbWV0aG9kcywgb25lIHRha2luZyBhbiBBdHRyIG5hbWUKKyAgICAgICAgYW5kIGFub3Ro
ZXIgdGhhdCBkb2VzIG5vdC4gVGhlcmUgYXJlIG5vdyAyIGNhbGxzIHNpdGVzIGluc3RlYWQgb2Yg
b25lLCBzbyB3ZSBubyBsb25nZXIgbmVlZAorICAgICAgICB0byBicmFuY2ggaW4gdGhpcyBmdW5j
dGlvbi4KKworICAgICAgICAqIGRvbS9FbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVs
ZW1lbnQ6OnNldEF0dHJpYnV0ZUludGVybmFsKToKKyAgICAgICAgRHJvcCBjb2RlIGNhbGxpbmcg
QXR0cjo6c2V0VmFsdWUoKSBvbiB0aGUgQXR0ciBub2RlIHNpbmNlIEF0dHI6OnNldFZhbHVlKCkg
d2FzIG9ubHkKKyAgICAgICAgZHVwbGljYXRpbmcgbG9naWMgZnJvbSBFbGVtZW50OjpzZXRBdHRy
aWJ1dGVJbnRlcm5hbCgpIGFmdGVyIHIyMTYyNTkuIFRoZXJlIGlzIG5vdGhpbmcKKyAgICAgICAg
b24gQXR0ciB0aGF0IG5lZWRzIHVwZGF0aW5nIHdoZW4gYW4gZWxlbWVudCBhdHRyaWJ1dGUgZ2V0
cyB1cGRhdGVkLgorCisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjphdHRyaWJ1dGVDaGFuZ2Vk
KToKKyAgICAgICAgQ2FsbCB0aGUgbmV3IGludmFsaWRhdGVOb2RlTGlzdEFuZENvbGxlY3Rpb25D
YWNoZXNJbkFuY2VzdG9yc0ZvckF0dHJpYnV0ZSgpLiBUaGlzCisgICAgICAgIGlzIHRoZSBvbmx5
IGNhbGwgc2l0ZSB0aGF0IHBhc3NlcyBhbiBhdHRyaWJ1dGUgbmFtZS4KKworICAgICAgICAqIGRv
bS9Ob2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpzaG91bGRJbnZhbGlkYXRl
Tm9kZUxpc3RBbmRDb2xsZWN0aW9uQ2FjaGVzKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50
OjpzaG91bGRJbnZhbGlkYXRlTm9kZUxpc3RBbmRDb2xsZWN0aW9uQ2FjaGVzRm9yQXR0cmlidXRl
KToKKyAgICAgICAgU3BsaXQgaW50byAyIHRvIGF2b2lkIGJyYW5jaGluZywgYXMgZXhwbGFpbmVk
IGFib3ZlLgorCisgICAgICAgIChXZWJDb3JlOjpOb2RlOjppbnZhbGlkYXRlTm9kZUxpc3RBbmRD
b2xsZWN0aW9uQ2FjaGVzSW5BbmNlc3RvcnMpOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6aW52
YWxpZGF0ZU5vZGVMaXN0QW5kQ29sbGVjdGlvbkNhY2hlc0luQW5jZXN0b3JzRm9yQXR0cmlidXRl
KToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6OmludmFsaWRhdGVOb2RlTGlzdEFuZENvbGxlY3Rp
b25DYWNoZXNJbkFuY2VzdG9yc0ludGVybmFsKToKKyAgICAgICAgLSBpbnZhbGlkYXRlTm9kZUxp
c3RBbmRDb2xsZWN0aW9uQ2FjaGVzSW5BbmNlc3RvcnMoKSB1c2VkIHRvIGludmFsaWRhdGUgY2hp
bGROb2RlTGlzdHMKKyAgICAgICAgICBpZiB0aGUgTm9kZSB3YXMgYW4gYXR0cmlidXRlIG5vZGUu
IERyb3AgdGhpcyBhcyB0aGlzIGlzIG5vIGxvbmdlciBuZWVkZWQgYXMgb2YgcjIxNjI1OS4KKyAg
ICAgICAgLSBBZnRlciB0aGUgY2hhbmdlIHRvIEF0dHI6OnNldFZhbHVlKCksIGNhbGwgc2l0ZXMg
Zm9yCisgICAgICAgICAgaW52YWxpZGF0ZU5vZGVMaXN0QW5kQ29sbGVjdGlvbkNhY2hlc0luQW5j
ZXN0b3JzKCkgZWl0aGVyIGhhZCBubyBwYXJhbWV0ZXJzLCBvciBib3RoCisgICAgICAgICAgcGFy
YW1ldGVycyBwcmVzZW50IGFuZCBub24tbnVsbC4gVGhlcmUgaXMgdGhlcmVmb3JlIG5vIGxvbmdl
ciBhbnkgbmVlZCB0byBoYW5kbGUKKyAgICAgICAgICBoYXZpbmcgYW4gYXR0ck5hbWUgYnV0IG5v
IGF0dHJpYnV0ZU93bmVyRWxlbWVudC4gVG8gbWFrZSB0aGlzIG9idmlvdXMsIEkgc3BsaXQgdGhp
cworICAgICAgICAgIGludG8gMiBtZXRob2RzOiBpbnZhbGlkYXRlTm9kZUxpc3RBbmRDb2xsZWN0
aW9uQ2FjaGVzSW5BbmNlc3RvcnMoKSBhbmQKKyAgICAgICAgICBpbnZhbGlkYXRlTm9kZUxpc3RB
bmRDb2xsZWN0aW9uQ2FjaGVzSW5BbmNlc3RvcnNGb3JBdHRyaWJ1dGUoYXR0ck5hbWUpLiBXZSBu
byBsb25nZXIKKyAgICAgICAgICBuZWVkIHRoZSBhdHRyaWJ1dGVPd25lckVsZW1lbnQgcGFyYW1l
dGVyIGFzIGl0IHdhcyBvbmx5IHVzZWQgdG8gZXhpdCBlYXJseS4KKworICAgICAgICAqIGRvbS9O
b2RlLmg6CisKIDIwMTctMDUtMDkgIEVyaWMgQ2FybHNvbiAgPGVyaWMuY2FybHNvbkBhcHBsZS5j
b20+CiAKICAgICAgICAgW01lZGlhU3RyZWFtXSBkZXZpY2VJZCBjb25zdHJhaW50IGRvZXNuJ3Qg
d29yayB3aXRoIGdldFVzZXJNZWRpYQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvQ2hh
bmdlTG9nIGIvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCmluZGV4IDM2NGM5MGU2OTY1NDIy
MDMyYjliNGEwODdjMjMyMmM3MTAxY2U1ZTcuLjhkNzY0NzkzYzExMmNlMjg4MTMxNzdiYzk5MmJm
MmZhNDViN2Q0MDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZworKysg
Yi9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBAQAorMjAxNy0wNS0w
OSAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIFNpbXBsaWZ5IHJl
bGF0aW9uc2hpcCBiZXR3ZWVuIEF0dHIgYW5kIEVsZW1lbnQgbm93IHRoYXQgQXR0ciBpcyBjaGls
ZGxlc3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3
MTkwOQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEJ1
aWxkIGZpeC4KKworICAgICAgICAqIERPTS9ET01BdHRyLm1tOgorICAgICAgICAoLVtET01BdHRy
IHZhbHVlXSk6CisgICAgICAgICgtW0RPTUF0dHIgc2V0VmFsdWU6XSk6CisKIDIwMTctMDUtMDgg
IENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBNb3ZlICdzdHlsZScg
ZnJvbSBFbGVtZW50IHRvIEhUTUxFbGVtZW50IC8gU1ZHRWxlbWVudCBhbmQgbWFrZSBpdCBzZXR0
YWJsZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0F0dHIuY3BwIGIvU291cmNlL1dl
YkNvcmUvZG9tL0F0dHIuY3BwCmluZGV4IDBhNGRjNDg5NTk3NGM0YmYyYWQyYmYyNGE0MmQ5YzFj
NzZkYzM3YTUuLmM4ZmZlYmU4ODZhMTUyMzE0NGEzMWMxMmI5NTQ2NmUyZWQwNjVkMmYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9BdHRyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vQXR0ci5jcHAKQEAgLTg2LDI4ICs4NiwxNSBAQCBFeGNlcHRpb25Pcjx2b2lkPiBBdHRyOjpz
ZXRQcmVmaXgoY29uc3QgQXRvbWljU3RyaW5nJiBwcmVmaXgpCiAKIHZvaWQgQXR0cjo6c2V0VmFs
dWUoY29uc3QgQXRvbWljU3RyaW5nJiB2YWx1ZSkKIHsKLSAgICBpZiAobV9lbGVtZW50KSB7Ci0g
ICAgICAgIFN0eWxlOjpBdHRyaWJ1dGVDaGFuZ2VJbnZhbGlkYXRpb24gc3R5bGVJbnZhbGlkYXRp
b24oKm1fZWxlbWVudCwgcXVhbGlmaWVkTmFtZSgpLCBlbGVtZW50QXR0cmlidXRlKCkudmFsdWUo
KSwgdmFsdWUpOwotICAgICAgICBlbGVtZW50QXR0cmlidXRlKCkuc2V0VmFsdWUodmFsdWUpOwot
ICAgIH0gZWxzZQotICAgICAgICBtX3N0YW5kYWxvbmVWYWx1ZSA9IHZhbHVlOwotCi0gICAgaW52
YWxpZGF0ZU5vZGVMaXN0QW5kQ29sbGVjdGlvbkNhY2hlc0luQW5jZXN0b3JzKCZtX25hbWUsIG1f
ZWxlbWVudCk7Ci19Ci0KLXZvaWQgQXR0cjo6c2V0VmFsdWVGb3JCaW5kaW5ncyhjb25zdCBBdG9t
aWNTdHJpbmcmIHZhbHVlKQotewotICAgIEF0b21pY1N0cmluZyBvbGRWYWx1ZSA9IHRoaXMtPnZh
bHVlKCk7CiAgICAgaWYgKG1fZWxlbWVudCkKLSAgICAgICAgbV9lbGVtZW50LT53aWxsTW9kaWZ5
QXR0cmlidXRlKHF1YWxpZmllZE5hbWUoKSwgb2xkVmFsdWUsIHZhbHVlKTsKLSAgICBzZXRWYWx1
ZSh2YWx1ZSk7Ci0gICAgaWYgKG1fZWxlbWVudCkKLSAgICAgICAgbV9lbGVtZW50LT5kaWRNb2Rp
ZnlBdHRyaWJ1dGUocXVhbGlmaWVkTmFtZSgpLCBvbGRWYWx1ZSwgdmFsdWUpOworICAgICAgICBt
X2VsZW1lbnQtPnNldEF0dHJpYnV0ZShxdWFsaWZpZWROYW1lKCksIHZhbHVlKTsKKyAgICBlbHNl
CisgICAgICAgIG1fc3RhbmRhbG9uZVZhbHVlID0gdmFsdWU7CiB9CiAKIEV4Y2VwdGlvbk9yPHZv
aWQ+IEF0dHI6OnNldE5vZGVWYWx1ZShjb25zdCBTdHJpbmcmIHZhbHVlKQogewotICAgIHNldFZh
bHVlRm9yQmluZGluZ3ModmFsdWUpOworICAgIHNldFZhbHVlKHZhbHVlKTsKICAgICByZXR1cm4g
eyB9OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vQXR0ci5oIGIvU291cmNl
L1dlYkNvcmUvZG9tL0F0dHIuaAppbmRleCA3MmE2MGI2ZmY2M2VjMGExNGFiMjgwNmI5MmFkY2Rm
ODg3OGNkNjA3Li40ZDljNjU4NGE2OTYyNDZmMzZjMDU1ODU2NWFmN2Y0Y2M3NDcwNjIyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vQXR0ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9BdHRyLmgKQEAgLTQ0LDkgKzQ0LDcgQEAgcHVibGljOgogICAgIEVsZW1lbnQqIG93bmVyRWxl
bWVudCgpIGNvbnN0IHsgcmV0dXJuIG1fZWxlbWVudDsgfQogCiAgICAgV0VCQ09SRV9FWFBPUlQg
Y29uc3QgQXRvbWljU3RyaW5nJiB2YWx1ZSgpIGNvbnN0OwotICAgIHZvaWQgc2V0VmFsdWUoY29u
c3QgQXRvbWljU3RyaW5nJik7Ci0gICAgY29uc3QgQXRvbWljU3RyaW5nJiB2YWx1ZUZvckJpbmRp
bmdzKCkgY29uc3QgeyByZXR1cm4gdmFsdWUoKTsgfQotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQg
c2V0VmFsdWVGb3JCaW5kaW5ncyhjb25zdCBBdG9taWNTdHJpbmcmKTsKKyAgICBXRUJDT1JFX0VY
UE9SVCB2b2lkIHNldFZhbHVlKGNvbnN0IEF0b21pY1N0cmluZyYpOwogCiAgICAgY29uc3QgUXVh
bGlmaWVkTmFtZSYgcXVhbGlmaWVkTmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fbmFtZTsgfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vQXR0ci5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vQXR0ci5pZGwKaW5kZXggYjA5MzUxMTBjYTEzMzYzNzkyMWYwY2I4NTAwNjA1OTMyOTQxZmVh
Ni4uNDNmODYwZmY5MDIzMjI2MjQyNmE4ZmMzMGNjNjhhNDgyMmI5N2Y1YyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvZG9tL0F0dHIuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9BdHRy
LmlkbApAQCAtMjcsNyArMjcsNyBAQAogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01TdHJpbmc/
IHByZWZpeDsKICAgICByZWFkb25seSBhdHRyaWJ1dGUgRE9NU3RyaW5nIGxvY2FsTmFtZTsKICAg
ICByZWFkb25seSBhdHRyaWJ1dGUgRE9NU3RyaW5nIG5hbWU7Ci0gICAgW0NFUmVhY3Rpb25zLCBJ
bXBsZW1lbnRlZEFzPXZhbHVlRm9yQmluZGluZ3NdIGF0dHJpYnV0ZSBET01TdHJpbmcgdmFsdWU7
CisgICAgW0NFUmVhY3Rpb25zXSBhdHRyaWJ1dGUgRE9NU3RyaW5nIHZhbHVlOwogCiAgICAgcmVh
ZG9ubHkgYXR0cmlidXRlIEVsZW1lbnQ/IG93bmVyRWxlbWVudDsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQu
aAppbmRleCA4Y2M5MDY3YTZlYTRmMGUyN2U0MGRlMTgwMzQ4ODE3MDI5N2JlYTMzLi4wMDE3YmE5
NWMxZDFjOThiZjE1MWZjZDdjZTliMzIwN2QzZjgxYWNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vRG9jdW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaApA
QCAtNzI2LDcgKzcyNiw4IEBAIHB1YmxpYzoKICAgICB2b2lkIHVucmVnaXN0ZXJDb2xsZWN0aW9u
KEhUTUxDb2xsZWN0aW9uJik7CiAgICAgdm9pZCBjb2xsZWN0aW9uQ2FjaGVkSWROYW1lTWFwKGNv
bnN0IEhUTUxDb2xsZWN0aW9uJik7CiAgICAgdm9pZCBjb2xsZWN0aW9uV2lsbENsZWFySWROYW1l
TWFwKGNvbnN0IEhUTUxDb2xsZWN0aW9uJik7Ci0gICAgYm9vbCBzaG91bGRJbnZhbGlkYXRlTm9k
ZUxpc3RBbmRDb2xsZWN0aW9uQ2FjaGVzKGNvbnN0IFF1YWxpZmllZE5hbWUqIGF0dHJOYW1lID0g
bnVsbHB0cikgY29uc3Q7CisgICAgYm9vbCBzaG91bGRJbnZhbGlkYXRlTm9kZUxpc3RBbmRDb2xs
ZWN0aW9uQ2FjaGVzKCkgY29uc3Q7CisgICAgYm9vbCBzaG91bGRJbnZhbGlkYXRlTm9kZUxpc3RB
bmRDb2xsZWN0aW9uQ2FjaGVzRm9yQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJO
YW1lKSBjb25zdDsKICAgICB2b2lkIGludmFsaWRhdGVOb2RlTGlzdEFuZENvbGxlY3Rpb25DYWNo
ZXMoY29uc3QgUXVhbGlmaWVkTmFtZSogYXR0ck5hbWUpOwogCiAgICAgdm9pZCBhdHRhY2hOb2Rl
SXRlcmF0b3IoTm9kZUl0ZXJhdG9yKik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20v
RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKaW5kZXggZWM3ZDE4
NGZjMmIzZTNiYzM3ZGZlN2FhZTVlMmNhZDExM2QxNGE4NC4uZjcxYmFjY2I2ODZjNzBiNTFkNGU2
MDU5ZjhmNGQxZjlmZmM5Yjc3MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1l
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcApAQCAtMTI3NiwxNSAr
MTI3Niw4IEBAIGlubGluZSB2b2lkIEVsZW1lbnQ6OnNldEF0dHJpYnV0ZUludGVybmFsKHVuc2ln
bmVkIGluZGV4LCBjb25zdCBRdWFsaWZpZWROYW1lJiBuCiAgICAgd2lsbE1vZGlmeUF0dHJpYnV0
ZShhdHRyaWJ1dGVOYW1lLCBvbGRWYWx1ZSwgbmV3VmFsdWUpOwogCiAgICAgaWYgKG5ld1ZhbHVl
ICE9IG9sZFZhbHVlKSB7Ci0gICAgICAgIC8vIElmIHRoZXJlIGlzIGFuIEF0dHIgbm9kZSBob29r
ZWQgdG8gdGhpcyBhdHRyaWJ1dGUsIHRoZSBBdHRyOjpzZXRWYWx1ZSgpIGNhbGwgYmVsb3cKLSAg
ICAgICAgLy8gd2lsbCB3cml0ZSBpbnRvIHRoZSBFbGVtZW50RGF0YS4KLSAgICAgICAgLy8gRklY
TUU6IFJlZmFjdG9yIHRoaXMgc28gaXQgbWFrZXMgc29tZSBzZW5zZS4KLSAgICAgICAgaWYgKFJl
ZlB0cjxBdHRyPiBhdHRyTm9kZSA9IGF0dHJJZkV4aXN0cyhhdHRyaWJ1dGVOYW1lKSkKLSAgICAg
ICAgICAgIGF0dHJOb2RlLT5zZXRWYWx1ZShuZXdWYWx1ZSk7Ci0gICAgICAgIGVsc2UgewotICAg
ICAgICAgICAgU3R5bGU6OkF0dHJpYnV0ZUNoYW5nZUludmFsaWRhdGlvbiBzdHlsZUludmFsaWRh
dGlvbigqdGhpcywgbmFtZSwgb2xkVmFsdWUsIG5ld1ZhbHVlKTsKLSAgICAgICAgICAgIGVuc3Vy
ZVVuaXF1ZUVsZW1lbnREYXRhKCkuYXR0cmlidXRlQXQoaW5kZXgpLnNldFZhbHVlKG5ld1ZhbHVl
KTsKLSAgICAgICAgfQorICAgICAgICBTdHlsZTo6QXR0cmlidXRlQ2hhbmdlSW52YWxpZGF0aW9u
IHN0eWxlSW52YWxpZGF0aW9uKCp0aGlzLCBuYW1lLCBvbGRWYWx1ZSwgbmV3VmFsdWUpOworICAg
ICAgICBlbnN1cmVVbmlxdWVFbGVtZW50RGF0YSgpLmF0dHJpYnV0ZUF0KGluZGV4KS5zZXRWYWx1
ZShuZXdWYWx1ZSk7CiAgICAgfQogCiAgICAgZGlkTW9kaWZ5QXR0cmlidXRlKGF0dHJpYnV0ZU5h
bWUsIG9sZFZhbHVlLCBuZXdWYWx1ZSk7CkBAIC0xMzQwLDcgKzEzMzMsNyBAQCB2b2lkIEVsZW1l
bnQ6OmF0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRv
bWljU3RyaW5nJiBvbAogICAgIGlmICh2YWx1ZUlzU2FtZUFzQmVmb3JlKQogICAgICAgICByZXR1
cm47CiAKLSAgICBpbnZhbGlkYXRlTm9kZUxpc3RBbmRDb2xsZWN0aW9uQ2FjaGVzSW5BbmNlc3Rv
cnMoJm5hbWUsIHRoaXMpOworICAgIGludmFsaWRhdGVOb2RlTGlzdEFuZENvbGxlY3Rpb25DYWNo
ZXNJbkFuY2VzdG9yc0ZvckF0dHJpYnV0ZShuYW1lKTsKIAogICAgIGlmIChBWE9iamVjdENhY2hl
KiBjYWNoZSA9IGRvY3VtZW50KCkuZXhpc3RpbmdBWE9iamVjdENhY2hlKCkpCiAgICAgICAgIGNh
Y2hlLT5oYW5kbGVBdHRyaWJ1dGVDaGFuZ2VkKG5hbWUsIHRoaXMpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwCmlu
ZGV4IDk2ZjJlYjE2ZmZiOGQ2MmNiMzJlYWViYTVlYzA0MDA3NWE4N2IwMjYuLjQ1ZDk2OTI2MzU2
ZTBjMjBjNDEwMmZjZTliMDRjYzUxMjk0ZWYyN2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Ob2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAKQEAgLTgzOCwx
OSArODM4LDIwIEBAIGJvb2wgc2hvdWxkSW52YWxpZGF0ZU5vZGVMaXN0Q2FjaGVzRm9yQXR0cjxu
dW1Ob2RlTGlzdEludmFsaWRhdGlvblR5cGVzPihjb25zdCB1CiAgICAgcmV0dXJuIGZhbHNlOwog
fQogCi1ib29sIERvY3VtZW50OjpzaG91bGRJbnZhbGlkYXRlTm9kZUxpc3RBbmRDb2xsZWN0aW9u
Q2FjaGVzKGNvbnN0IFF1YWxpZmllZE5hbWUqIGF0dHJOYW1lKSBjb25zdAorYm9vbCBEb2N1bWVu
dDo6c2hvdWxkSW52YWxpZGF0ZU5vZGVMaXN0QW5kQ29sbGVjdGlvbkNhY2hlcygpIGNvbnN0CiB7
Ci0gICAgaWYgKGF0dHJOYW1lKQotICAgICAgICByZXR1cm4gc2hvdWxkSW52YWxpZGF0ZU5vZGVM
aXN0Q2FjaGVzRm9yQXR0cjxEb05vdEludmFsaWRhdGVPbkF0dHJpYnV0ZUNoYW5nZXMgKyAxPiht
X25vZGVMaXN0QW5kQ29sbGVjdGlvbkNvdW50cywgKmF0dHJOYW1lKTsKLQotICAgIGZvciAoaW50
IHR5cGUgPSAwOyB0eXBlIDwgbnVtTm9kZUxpc3RJbnZhbGlkYXRpb25UeXBlczsgdHlwZSsrKSB7
CisgICAgZm9yIChpbnQgdHlwZSA9IDA7IHR5cGUgPCBudW1Ob2RlTGlzdEludmFsaWRhdGlvblR5
cGVzOyArK3R5cGUpIHsKICAgICAgICAgaWYgKG1fbm9kZUxpc3RBbmRDb2xsZWN0aW9uQ291bnRz
W3R5cGVdKQogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQotCiAgICAgcmV0dXJuIGZh
bHNlOwogfQogCitib29sIERvY3VtZW50OjpzaG91bGRJbnZhbGlkYXRlTm9kZUxpc3RBbmRDb2xs
ZWN0aW9uQ2FjaGVzRm9yQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKSBj
b25zdAoreworICAgIHJldHVybiBzaG91bGRJbnZhbGlkYXRlTm9kZUxpc3RDYWNoZXNGb3JBdHRy
PERvTm90SW52YWxpZGF0ZU9uQXR0cmlidXRlQ2hhbmdlcyArIDE+KG1fbm9kZUxpc3RBbmRDb2xs
ZWN0aW9uQ291bnRzLCBhdHRyTmFtZSk7Cit9CisKIHZvaWQgRG9jdW1lbnQ6OmludmFsaWRhdGVO
b2RlTGlzdEFuZENvbGxlY3Rpb25DYWNoZXMoY29uc3QgUXVhbGlmaWVkTmFtZSogYXR0ck5hbWUp
CiB7CiAgICAgVmVjdG9yPExpdmVOb2RlTGlzdCosIDg+IGxpc3RzOwpAQCAtODY0LDI4ICs4NjUs
MzggQEAgdm9pZCBEb2N1bWVudDo6aW52YWxpZGF0ZU5vZGVMaXN0QW5kQ29sbGVjdGlvbkNhY2hl
cyhjb25zdCBRdWFsaWZpZWROYW1lKiBhdHRyTmEKICAgICAgICAgY29sbGVjdGlvbi0+aW52YWxp
ZGF0ZUNhY2hlRm9yQXR0cmlidXRlKGF0dHJOYW1lKTsKIH0KIAotdm9pZCBOb2RlOjppbnZhbGlk
YXRlTm9kZUxpc3RBbmRDb2xsZWN0aW9uQ2FjaGVzSW5BbmNlc3RvcnMoY29uc3QgUXVhbGlmaWVk
TmFtZSogYXR0ck5hbWUsIEVsZW1lbnQqIGF0dHJpYnV0ZU93bmVyRWxlbWVudCkKK3ZvaWQgTm9k
ZTo6aW52YWxpZGF0ZU5vZGVMaXN0QW5kQ29sbGVjdGlvbkNhY2hlc0luQW5jZXN0b3JzKCkKIHsK
LSAgICBpZiAoaGFzUmFyZURhdGEoKSAmJiAoIWF0dHJOYW1lIHx8IGlzQXR0cmlidXRlTm9kZSgp
KSkgewotICAgICAgICBpZiAoTm9kZUxpc3RzTm9kZURhdGEqIGxpc3RzID0gcmFyZURhdGEoKS0+
bm9kZUxpc3RzKCkpCisgICAgaWYgKGhhc1JhcmVEYXRhKCkpIHsKKyAgICAgICAgaWYgKGF1dG8q
IGxpc3RzID0gcmFyZURhdGEoKS0+bm9kZUxpc3RzKCkpCiAgICAgICAgICAgICBsaXN0cy0+Y2xl
YXJDaGlsZE5vZGVMaXN0Q2FjaGUoKTsKICAgICB9CiAKLSAgICAvLyBNb2RpZmljYXRpb25zIHRv
IGF0dHJpYnV0ZXMgdGhhdCBhcmUgbm90IGFzc29jaWF0ZWQgd2l0aCBhbiBFbGVtZW50IGNhbid0
IGludmFsaWRhdGUgTm9kZUxpc3QgY2FjaGVzLgotICAgIGlmIChhdHRyTmFtZSAmJiAhYXR0cmli
dXRlT3duZXJFbGVtZW50KQotICAgICAgICByZXR1cm47CisgICAgaWYgKGRvY3VtZW50KCkuc2hv
dWxkSW52YWxpZGF0ZU5vZGVMaXN0QW5kQ29sbGVjdGlvbkNhY2hlcygpKQorICAgICAgICBpbnZh
bGlkYXRlTm9kZUxpc3RBbmRDb2xsZWN0aW9uQ2FjaGVzSW5BbmNlc3RvcnNJbnRlcm5hbCgpOwor
fQogCi0gICAgaWYgKCFkb2N1bWVudCgpLnNob3VsZEludmFsaWRhdGVOb2RlTGlzdEFuZENvbGxl
Y3Rpb25DYWNoZXMoYXR0ck5hbWUpKQotICAgICAgICByZXR1cm47Cit2b2lkIE5vZGU6OmludmFs
aWRhdGVOb2RlTGlzdEFuZENvbGxlY3Rpb25DYWNoZXNJbkFuY2VzdG9yc0ZvckF0dHJpYnV0ZShj
b25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSkKK3sKKyAgICBBU1NFUlQoaXM8RWxlbWVudD4o
KnRoaXMpKTsKKworICAgIGlmIChkb2N1bWVudCgpLnNob3VsZEludmFsaWRhdGVOb2RlTGlzdEFu
ZENvbGxlY3Rpb25DYWNoZXNGb3JBdHRyaWJ1dGUoYXR0ck5hbWUpKQorICAgICAgICBpbnZhbGlk
YXRlTm9kZUxpc3RBbmRDb2xsZWN0aW9uQ2FjaGVzSW5BbmNlc3RvcnNJbnRlcm5hbCgmYXR0ck5h
bWUpOworfQorCit2b2lkIE5vZGU6OmludmFsaWRhdGVOb2RlTGlzdEFuZENvbGxlY3Rpb25DYWNo
ZXNJbkFuY2VzdG9yc0ludGVybmFsKGNvbnN0IFF1YWxpZmllZE5hbWUqIGF0dHJOYW1lKQorewor
ICAgIEFTU0VSVChhdHRyTmFtZSB8fCBkb2N1bWVudCgpLnNob3VsZEludmFsaWRhdGVOb2RlTGlz
dEFuZENvbGxlY3Rpb25DYWNoZXMoKSk7CisgICAgQVNTRVJUKCFhdHRyTmFtZSB8fCBkb2N1bWVu
dCgpLnNob3VsZEludmFsaWRhdGVOb2RlTGlzdEFuZENvbGxlY3Rpb25DYWNoZXNGb3JBdHRyaWJ1
dGUoKmF0dHJOYW1lKSk7CiAKICAgICBkb2N1bWVudCgpLmludmFsaWRhdGVOb2RlTGlzdEFuZENv
bGxlY3Rpb25DYWNoZXMoYXR0ck5hbWUpOwogCi0gICAgZm9yIChOb2RlKiBub2RlID0gdGhpczsg
bm9kZTsgbm9kZSA9IG5vZGUtPnBhcmVudE5vZGUoKSkgeworICAgIGZvciAoYXV0byogbm9kZSA9
IHRoaXM7IG5vZGU7IG5vZGUgPSBub2RlLT5wYXJlbnROb2RlKCkpIHsKICAgICAgICAgaWYgKCFu
b2RlLT5oYXNSYXJlRGF0YSgpKQogICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIE5vZGVS
YXJlRGF0YSogZGF0YSA9IG5vZGUtPnJhcmVEYXRhKCk7Ci0gICAgICAgIGlmIChkYXRhLT5ub2Rl
TGlzdHMoKSkKLSAgICAgICAgICAgIGRhdGEtPm5vZGVMaXN0cygpLT5pbnZhbGlkYXRlQ2FjaGVz
KGF0dHJOYW1lKTsKKworICAgICAgICBpZiAoYXV0byogbGlzdHMgPSBub2RlLT5yYXJlRGF0YSgp
LT5ub2RlTGlzdHMoKSkKKyAgICAgICAgICAgIGxpc3RzLT5pbnZhbGlkYXRlQ2FjaGVzKGF0dHJO
YW1lKTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5oCmluZGV4IDI1ODZhNDdiODM0MGI3N2YwZGY0ZDFm
MWMxNTgyN2EzMTM3Nzc2MDIuLjI4YjI0ZmFjYjM5YWIxNGQwNzk3NmIxMTVhMzBlMGMyMjIxMjA2
OTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvZG9tL05vZGUuaApAQCAtNDc0LDcgKzQ3NCw4IEBAIHB1YmxpYzoKICAgICB2b2lkIHNo
b3dUcmVlRm9yVGhpc0Fjcm9zc0ZyYW1lKCkgY29uc3Q7CiAjZW5kaWYgLy8gRU5BQkxFKFRSRUVf
REVCVUdHSU5HKQogCi0gICAgdm9pZCBpbnZhbGlkYXRlTm9kZUxpc3RBbmRDb2xsZWN0aW9uQ2Fj
aGVzSW5BbmNlc3RvcnMoY29uc3QgUXVhbGlmaWVkTmFtZSogYXR0ck5hbWUgPSBudWxscHRyLCBF
bGVtZW50KiBhdHRyaWJ1dGVPd25lckVsZW1lbnQgPSBudWxscHRyKTsKKyAgICB2b2lkIGludmFs
aWRhdGVOb2RlTGlzdEFuZENvbGxlY3Rpb25DYWNoZXNJbkFuY2VzdG9ycygpOworICAgIHZvaWQg
aW52YWxpZGF0ZU5vZGVMaXN0QW5kQ29sbGVjdGlvbkNhY2hlc0luQW5jZXN0b3JzRm9yQXR0cmli
dXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKTsKICAgICBOb2RlTGlzdHNOb2RlRGF0
YSogbm9kZUxpc3RzKCk7CiAgICAgdm9pZCBjbGVhck5vZGVMaXN0cygpOwogCkBAIC02NjUsNiAr
NjY2LDggQEAgcHJpdmF0ZToKICAgICB2b2lkIHRyYWNrRm9yRGVidWdnaW5nKCk7CiAgICAgdm9p
ZCBtYXRlcmlhbGl6ZVJhcmVEYXRhKCk7CiAKKyAgICB2b2lkIGludmFsaWRhdGVOb2RlTGlzdEFu
ZENvbGxlY3Rpb25DYWNoZXNJbkFuY2VzdG9yc0ludGVybmFsKGNvbnN0IFF1YWxpZmllZE5hbWUq
IGF0dHJOYW1lID0gbnVsbHB0cik7CisKICAgICBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPE11dGF0
aW9uT2JzZXJ2ZXJSZWdpc3RyYXRpb24+PiogbXV0YXRpb25PYnNlcnZlclJlZ2lzdHJ5KCk7CiAg
ICAgSGFzaFNldDxNdXRhdGlvbk9ic2VydmVyUmVnaXN0cmF0aW9uKj4qIHRyYW5zaWVudE11dGF0
aW9uT2JzZXJ2ZXJSZWdpc3RyeSgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9E
T00vRE9NQXR0ci5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL0RPTS9ET01BdHRyLm1tCmluZGV4IDA3
NzQxMjdmOGZkOTE5NzE1MGIyZGJlNTQ5NzI3MzkxODliZTFkMjYuLjQzOTIzZDcyYmQ5NWZmZjcw
NjcwNmZiY2IzMGY3N2ZjOWY5ZDZlY2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL0RP
TS9ET01BdHRyLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL0RPTS9ET01BdHRyLm1tCkBAIC01
OCwxMyArNTgsMTMgQEAgLSAoQk9PTClzcGVjaWZpZWQKIC0gKE5TU3RyaW5nICopdmFsdWUKIHsK
ICAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7Ci0gICAgcmV0dXJuIElN
UEwtPnZhbHVlRm9yQmluZGluZ3MoKTsKKyAgICByZXR1cm4gSU1QTC0+dmFsdWUoKTsKIH0KIAog
LSAodm9pZClzZXRWYWx1ZTooTlNTdHJpbmcgKiluZXdWYWx1ZQogewogICAgIFdlYkNvcmU6OkpT
TWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKLSAgICBJTVBMLT5zZXRWYWx1ZUZvckJpbmRpbmdz
KG5ld1ZhbHVlKTsKKyAgICBJTVBMLT5zZXRWYWx1ZShuZXdWYWx1ZSk7CiB9CiAKIC0gKERPTUVs
ZW1lbnQgKilvd25lckVsZW1lbnQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NQXR0ci5jcHAgYi9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dlYktpdERPTUF0
dHIuY3BwCmluZGV4IDNiZjhlYmE4MjRhZGNlZTEzMGJiNmNhMTdkZDkxZmFjZjk5OTQ3OTcuLjAy
ZDk1NjM1ZTMyMGJjNzQ5ZTIwNjdkZDQ5YWM5NDhjZTY1ZjMyNGUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9N
QXR0ci5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9B
UEkvZ3RrL0RPTS9XZWJLaXRET01BdHRyLmNwcApAQCAtMjU3LDcgKzI1Nyw3IEBAIGdjaGFyKiB3
ZWJraXRfZG9tX2F0dHJfZ2V0X3ZhbHVlKFdlYktpdERPTUF0dHIqIHNlbGYpCiAgICAgV2ViQ29y
ZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwogICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWls
KFdFQktJVF9ET01fSVNfQVRUUihzZWxmKSwgMCk7CiAgICAgV2ViQ29yZTo6QXR0ciogaXRlbSA9
IFdlYktpdDo6Y29yZShzZWxmKTsKLSAgICBnY2hhciogcmVzdWx0ID0gY29udmVydFRvVVRGOFN0
cmluZyhpdGVtLT52YWx1ZUZvckJpbmRpbmdzKCkpOworICAgIGdjaGFyKiByZXN1bHQgPSBjb252
ZXJ0VG9VVEY4U3RyaW5nKGl0ZW0tPnZhbHVlKCkpOwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAK
QEAgLTI2OSw3ICsyNjksNyBAQCB2b2lkIHdlYmtpdF9kb21fYXR0cl9zZXRfdmFsdWUoV2ViS2l0
RE9NQXR0ciogc2VsZiwgY29uc3QgZ2NoYXIqIHZhbHVlLCBHRXJyb3IqKgogICAgIFVOVVNFRF9Q
QVJBTShlcnJvcik7CiAgICAgV2ViQ29yZTo6QXR0ciogaXRlbSA9IFdlYktpdDo6Y29yZShzZWxm
KTsKICAgICBXVEY6OlN0cmluZyBjb252ZXJ0ZWRWYWx1ZSA9IFdURjo6U3RyaW5nOjpmcm9tVVRG
OCh2YWx1ZSk7Ci0gICAgaXRlbS0+c2V0VmFsdWVGb3JCaW5kaW5ncyhjb252ZXJ0ZWRWYWx1ZSk7
CisgICAgaXRlbS0+c2V0VmFsdWUoY29udmVydGVkVmFsdWUpOwogfQogCiBXZWJLaXRET01FbGVt
ZW50KiB3ZWJraXRfZG9tX2F0dHJfZ2V0X293bmVyX2VsZW1lbnQoV2ViS2l0RE9NQXR0ciogc2Vs
ZikK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>309635</attachid>
            <date>2017-05-10 14:27:21 -0700</date>
            <delta_ts>2017-05-10 14:52:40 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-171909-20170510142720.patch</filename>
            <type>text/plain</type>
            <size>26697</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE2NjA3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYWZkYzRjODRkMDdmYzgx
NDRiNmY4MjE2NmNhYTFlYjU4MWQyYzFkZS4uMjYzZjgyYzExYmQ3YWRiOTNkYTEwMjA2ZTllYTg1
ZjgzNTlmNWM4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY2IEBACisyMDE3LTA1LTA5ICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgU2ltcGxpZnkgcmVsYXRpb25z
aGlwIGJldHdlZW4gQXR0ciBhbmQgRWxlbWVudCBub3cgdGhhdCBBdHRyIGlzIGNoaWxkbGVzcwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTcxOTA5CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgU2ltcGxpZnkg
cmVsYXRpb25zaGlwIGJldHdlZW4gQXR0ciBhbmQgRWxlbWVudCBub3cgdGhhdCBBdHRyIGlzIGNo
aWxkbGVzcworICAgICAgICBhZnRlciByMjE2MjU5LgorCisgICAgICAgIE5vIG5ldyB0ZXN0cywg
bm8gV2ViIGZhY2luZyBiZWhhdmlvciBjaGFuZ2UuCisKKyAgICAgICAgKiBkb20vQXR0ci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpBdHRyOjpzZXRWYWx1ZSk6CisgICAgICAgIEF0dHI6OnNldFZh
bHVlKCkgd2FzIG9ubHkgY2FsbGVkIGJ5IEVsZW1lbnQ6OnNldEF0dHJpYnV0ZUludGVybmFsKCkg
dG8gbWFrZSBzdXJlCisgICAgICAgIHdlIHVwZGF0ZWQgdGhlIEF0dHIgbm9kZSdzIFRleHQgY2hp
bGQuIEhvd2V2ZXIsIG5vdyB0aGF0IEF0dHIgaGFzIG5vIFRleHQgY2hpbGQsCisgICAgICAgIEVs
ZW1lbnQgbm8gbG9uZ2VyIG5lZWRzIHRvIHVwZGF0ZSB0aGUgQXR0ciBub2RlJ3MgdmFsdWUuCisg
ICAgICAgIEF0dHI6OnNldFZhbHVlRm9yQmluZGluZ3MoKSB3YSB0aHVzIHJlbmFtZWQgdG8gc2V0
VmFsdWUoKS4gSXRzIGltcGxlbWVudGF0aW9uCisgICAgICAgIHdhcyBhbHNvIHNpbXBsaWZpZWQg
YnkgY2FsbGluZyBFbGVtZW50OjpzZXRBdHRyaWJ1dGUoKSBvbiBpdHMgb3duZXJFbGVtZW50LCBp
ZgorICAgICAgICBpdCBoYXMgb25lLCBpbnN0ZWFkIG9mIGR1cGxpY2F0aW5nIGEgYnVuY2ggb2Yg
Y29kZSBmcm9tCisgICAgICAgIEVsZW1lbnQ6OnNldEF0dHJpYnV0ZUludGVybmFsKCkuCisKKyAg
ICAgICAgKFdlYkNvcmU6OkF0dHI6OnNldE5vZGVWYWx1ZSk6CisgICAgICAgIENhbGwgc2V0VmFs
dWUoKSBpbnN0ZWFkIG9mIHNldFZhbHVlRm9yQmluZGluZ3MoKSBub3cgdGhhdCBpdCBoYXMgYmVl
biByZW5hbWVkLgorCisgICAgICAgICogZG9tL0F0dHIuaDoKKyAgICAgICAgKiBkb20vQXR0ci5p
ZGw6CisgICAgICAgIFJlbmFtZSB2YWx1ZUZvckJpbmRpbmdzIC8gc2V0VmFsdWVGb3JCaW5kaW5n
cyB0byB2YWx1ZSAvIHNldFZhbHVlLgorCisgICAgICAgICogZG9tL0RvY3VtZW50Lmg6CisgICAg
ICAgIFNwbGl0IHNob3VsZEludmFsaWRhdGVOb2RlTGlzdEFuZENvbGxlY3Rpb25DYWNoZXMoKSBp
bnRvIDIgbWV0aG9kcywgb25lIHRha2luZyBhbiBBdHRyIG5hbWUKKyAgICAgICAgYW5kIGFub3Ro
ZXIgdGhhdCBkb2VzIG5vdC4gVGhlcmUgYXJlIG5vdyAyIGNhbGxzIHNpdGVzIGluc3RlYWQgb2Yg
b25lLCBzbyB3ZSBubyBsb25nZXIgbmVlZAorICAgICAgICB0byBicmFuY2ggaW4gdGhpcyBmdW5j
dGlvbi4KKworICAgICAgICAqIGRvbS9FbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVs
ZW1lbnQ6OnNldEF0dHJpYnV0ZUludGVybmFsKToKKyAgICAgICAgRHJvcCBjb2RlIGNhbGxpbmcg
QXR0cjo6c2V0VmFsdWUoKSBvbiB0aGUgQXR0ciBub2RlIHNpbmNlIEF0dHI6OnNldFZhbHVlKCkg
d2FzIG9ubHkKKyAgICAgICAgZHVwbGljYXRpbmcgbG9naWMgZnJvbSBFbGVtZW50OjpzZXRBdHRy
aWJ1dGVJbnRlcm5hbCgpIGFmdGVyIHIyMTYyNTkuIFRoZXJlIGlzIG5vdGhpbmcKKyAgICAgICAg
b24gQXR0ciB0aGF0IG5lZWRzIHVwZGF0aW5nIHdoZW4gYW4gZWxlbWVudCBhdHRyaWJ1dGUgZ2V0
cyB1cGRhdGVkLgorCisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjphdHRyaWJ1dGVDaGFuZ2Vk
KToKKyAgICAgICAgQ2FsbCB0aGUgbmV3IGludmFsaWRhdGVOb2RlTGlzdEFuZENvbGxlY3Rpb25D
YWNoZXNJbkFuY2VzdG9yc0ZvckF0dHJpYnV0ZSgpLiBUaGlzCisgICAgICAgIGlzIHRoZSBvbmx5
IGNhbGwgc2l0ZSB0aGF0IHBhc3NlcyBhbiBhdHRyaWJ1dGUgbmFtZS4KKworICAgICAgICAqIGRv
bS9Ob2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpzaG91bGRJbnZhbGlkYXRl
Tm9kZUxpc3RBbmRDb2xsZWN0aW9uQ2FjaGVzKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50
OjpzaG91bGRJbnZhbGlkYXRlTm9kZUxpc3RBbmRDb2xsZWN0aW9uQ2FjaGVzRm9yQXR0cmlidXRl
KToKKyAgICAgICAgU3BsaXQgaW50byAyIHRvIGF2b2lkIGJyYW5jaGluZywgYXMgZXhwbGFpbmVk
IGFib3ZlLgorCisgICAgICAgIChXZWJDb3JlOjpOb2RlOjppbnZhbGlkYXRlTm9kZUxpc3RBbmRD
b2xsZWN0aW9uQ2FjaGVzSW5BbmNlc3RvcnMpOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6aW52
YWxpZGF0ZU5vZGVMaXN0QW5kQ29sbGVjdGlvbkNhY2hlc0luQW5jZXN0b3JzRm9yQXR0cmlidXRl
KToKKyAgICAgICAgLSBpbnZhbGlkYXRlTm9kZUxpc3RBbmRDb2xsZWN0aW9uQ2FjaGVzSW5BbmNl
c3RvcnMoKSB1c2VkIHRvIGludmFsaWRhdGUgY2hpbGROb2RlTGlzdHMKKyAgICAgICAgICBpZiB0
aGUgTm9kZSB3YXMgYW4gYXR0cmlidXRlIG5vZGUuIERyb3AgdGhpcyBhcyB0aGlzIGlzIG5vIGxv
bmdlciBuZWVkZWQgYXMgb2YgcjIxNjI1OS4KKyAgICAgICAgLSBBZnRlciB0aGUgY2hhbmdlIHRv
IEF0dHI6OnNldFZhbHVlKCksIGNhbGwgc2l0ZXMgZm9yCisgICAgICAgICAgaW52YWxpZGF0ZU5v
ZGVMaXN0QW5kQ29sbGVjdGlvbkNhY2hlc0luQW5jZXN0b3JzKCkgZWl0aGVyIGhhZCBubyBwYXJh
bWV0ZXJzLCBvciBib3RoCisgICAgICAgICAgcGFyYW1ldGVycyBwcmVzZW50IGFuZCBub24tbnVs
bC4gVGhlcmUgaXMgdGhlcmVmb3JlIG5vIGxvbmdlciBhbnkgbmVlZCB0byBoYW5kbGUKKyAgICAg
ICAgICBoYXZpbmcgYW4gYXR0ck5hbWUgYnV0IG5vIGF0dHJpYnV0ZU93bmVyRWxlbWVudC4gVG8g
bWFrZSB0aGlzIG9idmlvdXMsIEkgc3BsaXQgdGhpcworICAgICAgICAgIGludG8gMiBtZXRob2Rz
OiBpbnZhbGlkYXRlTm9kZUxpc3RBbmRDb2xsZWN0aW9uQ2FjaGVzSW5BbmNlc3RvcnMoKSBhbmQK
KyAgICAgICAgICBpbnZhbGlkYXRlTm9kZUxpc3RBbmRDb2xsZWN0aW9uQ2FjaGVzSW5BbmNlc3Rv
cnNGb3JBdHRyaWJ1dGUoYXR0ck5hbWUpLiBXZSBubyBsb25nZXIKKyAgICAgICAgICBuZWVkIHRo
ZSBhdHRyaWJ1dGVPd25lckVsZW1lbnQgcGFyYW1ldGVyIGFzIGl0IHdhcyBvbmx5IHVzZWQgdG8g
ZXhpdCBlYXJseS4KKworICAgICAgICAqIGRvbS9Ob2RlLmg6CisKIDIwMTctMDUtMTAgIENocmlz
IER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBSRUdSRVNTSU9OIChyMjA2OTYw
KTogUG9zc2libGUgbnVsbCBwb2ludGVyIGRlcmVmZXJlbmNlIHVuZGVyIERPTVNlbGVjdGlvbjo6
Z2V0UmFuZ2VBdCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cgYi9T
b3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKaW5kZXggMzY0YzkwZTY5NjU0MjIwMzJiOWI0YTA4
N2MyMzIyYzcxMDFjZTVlNy4uOGQ3NjQ3OTNjMTEyY2UyODgxMzE3N2JjOTkyYmYyZmE0NWI3ZDQw
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9X
ZWJLaXQvbWFjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDE3LTA1LTA5ICBDaHJpcyBE
dW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgU2ltcGxpZnkgcmVsYXRpb25zaGlw
IGJldHdlZW4gQXR0ciBhbmQgRWxlbWVudCBub3cgdGhhdCBBdHRyIGlzIGNoaWxkbGVzcworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTcxOTA5CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQnVpbGQgZml4Lgor
CisgICAgICAgICogRE9NL0RPTUF0dHIubW06CisgICAgICAgICgtW0RPTUF0dHIgdmFsdWVdKToK
KyAgICAgICAgKC1bRE9NQXR0ciBzZXRWYWx1ZTpdKToKKwogMjAxNy0wNS0wOCAgQ2hyaXMgRHVt
ZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIE1vdmUgJ3N0eWxlJyBmcm9tIEVsZW1l
bnQgdG8gSFRNTEVsZW1lbnQgLyBTVkdFbGVtZW50IGFuZCBtYWtlIGl0IHNldHRhYmxlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vQXR0ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20v
QXR0ci5jcHAKaW5kZXggMGE0ZGM0ODk1OTc0YzRiZjJhZDJiZjI0YTQyZDljMWM3NmRjMzdhNS4u
YzhmZmViZTg4NmExNTIzMTQ0YTMxYzEyYjk1NDY2ZTJlZDA2NWQyZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvZG9tL0F0dHIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9BdHRyLmNw
cApAQCAtODYsMjggKzg2LDE1IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IEF0dHI6OnNldFByZWZpeChj
b25zdCBBdG9taWNTdHJpbmcmIHByZWZpeCkKIAogdm9pZCBBdHRyOjpzZXRWYWx1ZShjb25zdCBB
dG9taWNTdHJpbmcmIHZhbHVlKQogewotICAgIGlmIChtX2VsZW1lbnQpIHsKLSAgICAgICAgU3R5
bGU6OkF0dHJpYnV0ZUNoYW5nZUludmFsaWRhdGlvbiBzdHlsZUludmFsaWRhdGlvbigqbV9lbGVt
ZW50LCBxdWFsaWZpZWROYW1lKCksIGVsZW1lbnRBdHRyaWJ1dGUoKS52YWx1ZSgpLCB2YWx1ZSk7
Ci0gICAgICAgIGVsZW1lbnRBdHRyaWJ1dGUoKS5zZXRWYWx1ZSh2YWx1ZSk7Ci0gICAgfSBlbHNl
Ci0gICAgICAgIG1fc3RhbmRhbG9uZVZhbHVlID0gdmFsdWU7Ci0KLSAgICBpbnZhbGlkYXRlTm9k
ZUxpc3RBbmRDb2xsZWN0aW9uQ2FjaGVzSW5BbmNlc3RvcnMoJm1fbmFtZSwgbV9lbGVtZW50KTsK
LX0KLQotdm9pZCBBdHRyOjpzZXRWYWx1ZUZvckJpbmRpbmdzKGNvbnN0IEF0b21pY1N0cmluZyYg
dmFsdWUpCi17Ci0gICAgQXRvbWljU3RyaW5nIG9sZFZhbHVlID0gdGhpcy0+dmFsdWUoKTsKICAg
ICBpZiAobV9lbGVtZW50KQotICAgICAgICBtX2VsZW1lbnQtPndpbGxNb2RpZnlBdHRyaWJ1dGUo
cXVhbGlmaWVkTmFtZSgpLCBvbGRWYWx1ZSwgdmFsdWUpOwotICAgIHNldFZhbHVlKHZhbHVlKTsK
LSAgICBpZiAobV9lbGVtZW50KQotICAgICAgICBtX2VsZW1lbnQtPmRpZE1vZGlmeUF0dHJpYnV0
ZShxdWFsaWZpZWROYW1lKCksIG9sZFZhbHVlLCB2YWx1ZSk7CisgICAgICAgIG1fZWxlbWVudC0+
c2V0QXR0cmlidXRlKHF1YWxpZmllZE5hbWUoKSwgdmFsdWUpOworICAgIGVsc2UKKyAgICAgICAg
bV9zdGFuZGFsb25lVmFsdWUgPSB2YWx1ZTsKIH0KIAogRXhjZXB0aW9uT3I8dm9pZD4gQXR0cjo6
c2V0Tm9kZVZhbHVlKGNvbnN0IFN0cmluZyYgdmFsdWUpCiB7Ci0gICAgc2V0VmFsdWVGb3JCaW5k
aW5ncyh2YWx1ZSk7CisgICAgc2V0VmFsdWUodmFsdWUpOwogICAgIHJldHVybiB7IH07CiB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9BdHRyLmggYi9Tb3VyY2UvV2ViQ29yZS9k
b20vQXR0ci5oCmluZGV4IDcyYTYwYjZmZjYzZWMwYTE0YWIyODA2YjkyYWRjZGY4ODc4Y2Q2MDcu
LjRkOWM2NTg0YTY5NjI0NmYzNmMwNTU4NTY1YWY3ZjRjYzc0NzA2MjIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9BdHRyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0F0dHIuaApA
QCAtNDQsOSArNDQsNyBAQCBwdWJsaWM6CiAgICAgRWxlbWVudCogb3duZXJFbGVtZW50KCkgY29u
c3QgeyByZXR1cm4gbV9lbGVtZW50OyB9CiAKICAgICBXRUJDT1JFX0VYUE9SVCBjb25zdCBBdG9t
aWNTdHJpbmcmIHZhbHVlKCkgY29uc3Q7Ci0gICAgdm9pZCBzZXRWYWx1ZShjb25zdCBBdG9taWNT
dHJpbmcmKTsKLSAgICBjb25zdCBBdG9taWNTdHJpbmcmIHZhbHVlRm9yQmluZGluZ3MoKSBjb25z
dCB7IHJldHVybiB2YWx1ZSgpOyB9Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRWYWx1ZUZv
ckJpbmRpbmdzKGNvbnN0IEF0b21pY1N0cmluZyYpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQg
c2V0VmFsdWUoY29uc3QgQXRvbWljU3RyaW5nJik7CiAKICAgICBjb25zdCBRdWFsaWZpZWROYW1l
JiBxdWFsaWZpZWROYW1lKCkgY29uc3QgeyByZXR1cm4gbV9uYW1lOyB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9BdHRyLmlkbCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9BdHRyLmlk
bAppbmRleCBiMDkzNTExMGNhMTMzNjM3OTIxZjBjYjg1MDA2MDU5MzI5NDFmZWE2Li40M2Y4NjBm
ZjkwMjMyMjYyNDI2YThmYzMwY2M2OGE0ODIyYjk3ZjVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vQXR0ci5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0F0dHIuaWRsCkBAIC0y
Nyw3ICsyNyw3IEBACiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIERPTVN0cmluZz8gcHJlZml4Owog
ICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01TdHJpbmcgbG9jYWxOYW1lOwogICAgIHJlYWRvbmx5
IGF0dHJpYnV0ZSBET01TdHJpbmcgbmFtZTsKLSAgICBbQ0VSZWFjdGlvbnMsIEltcGxlbWVudGVk
QXM9dmFsdWVGb3JCaW5kaW5nc10gYXR0cmlidXRlIERPTVN0cmluZyB2YWx1ZTsKKyAgICBbQ0VS
ZWFjdGlvbnNdIGF0dHJpYnV0ZSBET01TdHJpbmcgdmFsdWU7CiAKICAgICByZWFkb25seSBhdHRy
aWJ1dGUgRWxlbWVudD8gb3duZXJFbGVtZW50OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vRG9jdW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCmluZGV4IDhj
YzkwNjdhNmVhNGYwZTI3ZTQwZGUxODAzNDg4MTcwMjk3YmVhMzMuLmFiOGE0ZGFhMzA2Zjc4YWVk
MjA4MjVkMGY3NGI2NzEyNDA0NGU4MDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9E
b2N1bWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCkBAIC03MjYsOCAr
NzI2LDExIEBAIHB1YmxpYzoKICAgICB2b2lkIHVucmVnaXN0ZXJDb2xsZWN0aW9uKEhUTUxDb2xs
ZWN0aW9uJik7CiAgICAgdm9pZCBjb2xsZWN0aW9uQ2FjaGVkSWROYW1lTWFwKGNvbnN0IEhUTUxD
b2xsZWN0aW9uJik7CiAgICAgdm9pZCBjb2xsZWN0aW9uV2lsbENsZWFySWROYW1lTWFwKGNvbnN0
IEhUTUxDb2xsZWN0aW9uJik7Ci0gICAgYm9vbCBzaG91bGRJbnZhbGlkYXRlTm9kZUxpc3RBbmRD
b2xsZWN0aW9uQ2FjaGVzKGNvbnN0IFF1YWxpZmllZE5hbWUqIGF0dHJOYW1lID0gbnVsbHB0cikg
Y29uc3Q7Ci0gICAgdm9pZCBpbnZhbGlkYXRlTm9kZUxpc3RBbmRDb2xsZWN0aW9uQ2FjaGVzKGNv
bnN0IFF1YWxpZmllZE5hbWUqIGF0dHJOYW1lKTsKKyAgICBib29sIHNob3VsZEludmFsaWRhdGVO
b2RlTGlzdEFuZENvbGxlY3Rpb25DYWNoZXMoKSBjb25zdDsKKyAgICBib29sIHNob3VsZEludmFs
aWRhdGVOb2RlTGlzdEFuZENvbGxlY3Rpb25DYWNoZXNGb3JBdHRyaWJ1dGUoY29uc3QgUXVhbGlm
aWVkTmFtZSYgYXR0ck5hbWUpIGNvbnN0OworCisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIEludmFs
aWRhdGlvbkZ1bmN0aW9uPgorICAgIHZvaWQgaW52YWxpZGF0ZU5vZGVMaXN0QW5kQ29sbGVjdGlv
bkNhY2hlcyhJbnZhbGlkYXRpb25GdW5jdGlvbik7CiAKICAgICB2b2lkIGF0dGFjaE5vZGVJdGVy
YXRvcihOb2RlSXRlcmF0b3IqKTsKICAgICB2b2lkIGRldGFjaE5vZGVJdGVyYXRvcihOb2RlSXRl
cmF0b3IqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcAppbmRleCBlYzdkMTg0ZmMyYjNlM2JjMzdkZmU3
YWFlNWUyY2FkMTEzZDE0YTg0Li5mNzFiYWNjYjY4NmM3MGI1MWQ0ZTYwNTlmOGY0ZDFmOWZmYzli
NzczIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCkBAIC0xMjc2LDE1ICsxMjc2LDggQEAgaW5saW5l
IHZvaWQgRWxlbWVudDo6c2V0QXR0cmlidXRlSW50ZXJuYWwodW5zaWduZWQgaW5kZXgsIGNvbnN0
IFF1YWxpZmllZE5hbWUmIG4KICAgICB3aWxsTW9kaWZ5QXR0cmlidXRlKGF0dHJpYnV0ZU5hbWUs
IG9sZFZhbHVlLCBuZXdWYWx1ZSk7CiAKICAgICBpZiAobmV3VmFsdWUgIT0gb2xkVmFsdWUpIHsK
LSAgICAgICAgLy8gSWYgdGhlcmUgaXMgYW4gQXR0ciBub2RlIGhvb2tlZCB0byB0aGlzIGF0dHJp
YnV0ZSwgdGhlIEF0dHI6OnNldFZhbHVlKCkgY2FsbCBiZWxvdwotICAgICAgICAvLyB3aWxsIHdy
aXRlIGludG8gdGhlIEVsZW1lbnREYXRhLgotICAgICAgICAvLyBGSVhNRTogUmVmYWN0b3IgdGhp
cyBzbyBpdCBtYWtlcyBzb21lIHNlbnNlLgotICAgICAgICBpZiAoUmVmUHRyPEF0dHI+IGF0dHJO
b2RlID0gYXR0cklmRXhpc3RzKGF0dHJpYnV0ZU5hbWUpKQotICAgICAgICAgICAgYXR0ck5vZGUt
PnNldFZhbHVlKG5ld1ZhbHVlKTsKLSAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICBTdHlsZTo6
QXR0cmlidXRlQ2hhbmdlSW52YWxpZGF0aW9uIHN0eWxlSW52YWxpZGF0aW9uKCp0aGlzLCBuYW1l
LCBvbGRWYWx1ZSwgbmV3VmFsdWUpOwotICAgICAgICAgICAgZW5zdXJlVW5pcXVlRWxlbWVudERh
dGEoKS5hdHRyaWJ1dGVBdChpbmRleCkuc2V0VmFsdWUobmV3VmFsdWUpOwotICAgICAgICB9Cisg
ICAgICAgIFN0eWxlOjpBdHRyaWJ1dGVDaGFuZ2VJbnZhbGlkYXRpb24gc3R5bGVJbnZhbGlkYXRp
b24oKnRoaXMsIG5hbWUsIG9sZFZhbHVlLCBuZXdWYWx1ZSk7CisgICAgICAgIGVuc3VyZVVuaXF1
ZUVsZW1lbnREYXRhKCkuYXR0cmlidXRlQXQoaW5kZXgpLnNldFZhbHVlKG5ld1ZhbHVlKTsKICAg
ICB9CiAKICAgICBkaWRNb2RpZnlBdHRyaWJ1dGUoYXR0cmlidXRlTmFtZSwgb2xkVmFsdWUsIG5l
d1ZhbHVlKTsKQEAgLTEzNDAsNyArMTMzMyw3IEBAIHZvaWQgRWxlbWVudDo6YXR0cmlidXRlQ2hh
bmdlZChjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBjb25zdCBBdG9taWNTdHJpbmcmIG9sCiAg
ICAgaWYgKHZhbHVlSXNTYW1lQXNCZWZvcmUpCiAgICAgICAgIHJldHVybjsKIAotICAgIGludmFs
aWRhdGVOb2RlTGlzdEFuZENvbGxlY3Rpb25DYWNoZXNJbkFuY2VzdG9ycygmbmFtZSwgdGhpcyk7
CisgICAgaW52YWxpZGF0ZU5vZGVMaXN0QW5kQ29sbGVjdGlvbkNhY2hlc0luQW5jZXN0b3JzRm9y
QXR0cmlidXRlKG5hbWUpOwogCiAgICAgaWYgKEFYT2JqZWN0Q2FjaGUqIGNhY2hlID0gZG9jdW1l
bnQoKS5leGlzdGluZ0FYT2JqZWN0Q2FjaGUoKSkKICAgICAgICAgY2FjaGUtPmhhbmRsZUF0dHJp
YnV0ZUNoYW5nZWQobmFtZSwgdGhpcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20v
TGl2ZU5vZGVMaXN0LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vTGl2ZU5vZGVMaXN0LmgKaW5kZXgg
NDE1ZDE5MDlmMmJlOGViNGFjOTBjYzIxNGJlMzQ4N2UxNWEyZGYzZC4uMzNmODEzZDY5MTczMDUz
YzM2ZDJkZjI2MmI2YTViZTE2Njg2NGRiMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9t
L0xpdmVOb2RlTGlzdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9MaXZlTm9kZUxpc3QuaApA
QCAtNDgsMTIgKzQ4LDEzIEBAIHB1YmxpYzoKIAogICAgIEFMV0FZU19JTkxJTkUgTm9kZUxpc3RJ
bnZhbGlkYXRpb25UeXBlIGludmFsaWRhdGlvblR5cGUoKSBjb25zdCB7IHJldHVybiBzdGF0aWNf
Y2FzdDxOb2RlTGlzdEludmFsaWRhdGlvblR5cGU+KG1faW52YWxpZGF0aW9uVHlwZSk7IH0KICAg
ICBDb250YWluZXJOb2RlJiBvd25lck5vZGUoKSBjb25zdCB7IHJldHVybiBtX293bmVyTm9kZTsg
fQotICAgIEFMV0FZU19JTkxJTkUgdm9pZCBpbnZhbGlkYXRlQ2FjaGVGb3JBdHRyaWJ1dGUoY29u
c3QgUXVhbGlmaWVkTmFtZSogYXR0ck5hbWUpIGNvbnN0CisgICAgQUxXQVlTX0lOTElORSB2b2lk
IGludmFsaWRhdGVDYWNoZUZvckF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFt
ZSkgY29uc3QKICAgICB7Ci0gICAgICAgIGlmICghYXR0ck5hbWUgfHwgc2hvdWxkSW52YWxpZGF0
ZVR5cGVPbkF0dHJpYnV0ZUNoYW5nZShpbnZhbGlkYXRpb25UeXBlKCksICphdHRyTmFtZSkpCi0g
ICAgICAgICAgICBpbnZhbGlkYXRlQ2FjaGUoZG9jdW1lbnQoKSk7CisgICAgICAgIGlmIChzaG91
bGRJbnZhbGlkYXRlVHlwZU9uQXR0cmlidXRlQ2hhbmdlKGludmFsaWRhdGlvblR5cGUoKSwgYXR0
ck5hbWUpKQorICAgICAgICAgICAgaW52YWxpZGF0ZUNhY2hlKCk7CiAgICAgfQotICAgIHZpcnR1
YWwgdm9pZCBpbnZhbGlkYXRlQ2FjaGUoRG9jdW1lbnQmKSBjb25zdCA9IDA7CisgICAgdmlydHVh
bCB2b2lkIGludmFsaWRhdGVDYWNoZUZvckRvY3VtZW50KERvY3VtZW50JikgY29uc3QgPSAwOwor
ICAgIHZvaWQgaW52YWxpZGF0ZUNhY2hlKCkgY29uc3QgeyBpbnZhbGlkYXRlQ2FjaGVGb3JEb2N1
bWVudChkb2N1bWVudCgpKTsgfQogCiAgICAgYm9vbCBpc1JlZ2lzdGVyZWRGb3JJbnZhbGlkYXRp
b25BdERvY3VtZW50KCkgY29uc3QgeyByZXR1cm4gbV9pc1JlZ2lzdGVyZWRGb3JJbnZhbGlkYXRp
b25BdERvY3VtZW50OyB9CiAgICAgdm9pZCBzZXRSZWdpc3RlcmVkRm9ySW52YWxpZGF0aW9uQXRE
b2N1bWVudChib29sIGYpIHsgbV9pc1JlZ2lzdGVyZWRGb3JJbnZhbGlkYXRpb25BdERvY3VtZW50
ID0gZjsgfQpAQCAtODksNyArOTAsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBjb2xsZWN0aW9uQ2Fu
VHJhdmVyc2VCYWNrd2FyZCgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KICAgICB2b2lkIHdpbGxW
YWxpZGF0ZUluZGV4Q2FjaGUoKSBjb25zdCB7IGRvY3VtZW50KCkucmVnaXN0ZXJOb2RlTGlzdEZv
ckludmFsaWRhdGlvbihjb25zdF9jYXN0PENhY2hlZExpdmVOb2RlTGlzdDxOb2RlTGlzdFR5cGU+
Jj4oKnRoaXMpKTsgfQogCi0gICAgdm9pZCBpbnZhbGlkYXRlQ2FjaGUoRG9jdW1lbnQmKSBjb25z
dCBmaW5hbDsKKyAgICB2b2lkIGludmFsaWRhdGVDYWNoZUZvckRvY3VtZW50KERvY3VtZW50Jikg
Y29uc3QgZmluYWw7CiAgICAgc2l6ZV90IG1lbW9yeUNvc3QoKSBjb25zdCBmaW5hbCB7IHJldHVy
biBtX2luZGV4Q2FjaGUubWVtb3J5Q29zdCgpOyB9CiAKIHByb3RlY3RlZDoKQEAgLTE1Miw3ICsx
NTMsNyBAQCBpbmxpbmUgQ29udGFpbmVyTm9kZSYgQ2FjaGVkTGl2ZU5vZGVMaXN0PE5vZGVMaXN0
VHlwZT46OnJvb3ROb2RlKCkgY29uc3QKIH0KIAogdGVtcGxhdGUgPGNsYXNzIE5vZGVMaXN0VHlw
ZT4KLXZvaWQgQ2FjaGVkTGl2ZU5vZGVMaXN0PE5vZGVMaXN0VHlwZT46OmludmFsaWRhdGVDYWNo
ZShEb2N1bWVudCYgZG9jdW1lbnQpIGNvbnN0Cit2b2lkIENhY2hlZExpdmVOb2RlTGlzdDxOb2Rl
TGlzdFR5cGU+OjppbnZhbGlkYXRlQ2FjaGVGb3JEb2N1bWVudChEb2N1bWVudCYgZG9jdW1lbnQp
IGNvbnN0CiB7CiAgICAgaWYgKCFtX2luZGV4Q2FjaGUuaGFzVmFsaWRDYWNoZShub2RlTGlzdCgp
KSkKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGUu
Y3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwCmluZGV4IDk2ZjJlYjE2ZmZiOGQ2MmNi
MzJlYWViYTVlYzA0MDA3NWE4N2IwMjYuLjU0OTY0MGMyNDljOTkzMzAxNjQ1NDAzZGU0ZTU0ZTdi
YzRlZWViMzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAKQEAgLTgzOCw1NCArODM4LDc0IEBAIGJvb2wgc2hv
dWxkSW52YWxpZGF0ZU5vZGVMaXN0Q2FjaGVzRm9yQXR0cjxudW1Ob2RlTGlzdEludmFsaWRhdGlv
blR5cGVzPihjb25zdCB1CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1ib29sIERvY3VtZW50Ojpz
aG91bGRJbnZhbGlkYXRlTm9kZUxpc3RBbmRDb2xsZWN0aW9uQ2FjaGVzKGNvbnN0IFF1YWxpZmll
ZE5hbWUqIGF0dHJOYW1lKSBjb25zdAorYm9vbCBEb2N1bWVudDo6c2hvdWxkSW52YWxpZGF0ZU5v
ZGVMaXN0QW5kQ29sbGVjdGlvbkNhY2hlcygpIGNvbnN0CiB7Ci0gICAgaWYgKGF0dHJOYW1lKQot
ICAgICAgICByZXR1cm4gc2hvdWxkSW52YWxpZGF0ZU5vZGVMaXN0Q2FjaGVzRm9yQXR0cjxEb05v
dEludmFsaWRhdGVPbkF0dHJpYnV0ZUNoYW5nZXMgKyAxPihtX25vZGVMaXN0QW5kQ29sbGVjdGlv
bkNvdW50cywgKmF0dHJOYW1lKTsKLQotICAgIGZvciAoaW50IHR5cGUgPSAwOyB0eXBlIDwgbnVt
Tm9kZUxpc3RJbnZhbGlkYXRpb25UeXBlczsgdHlwZSsrKSB7CisgICAgZm9yIChpbnQgdHlwZSA9
IDA7IHR5cGUgPCBudW1Ob2RlTGlzdEludmFsaWRhdGlvblR5cGVzOyArK3R5cGUpIHsKICAgICAg
ICAgaWYgKG1fbm9kZUxpc3RBbmRDb2xsZWN0aW9uQ291bnRzW3R5cGVdKQogICAgICAgICAgICAg
cmV0dXJuIHRydWU7CiAgICAgfQotCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi12b2lkIERvY3Vt
ZW50OjppbnZhbGlkYXRlTm9kZUxpc3RBbmRDb2xsZWN0aW9uQ2FjaGVzKGNvbnN0IFF1YWxpZmll
ZE5hbWUqIGF0dHJOYW1lKQorYm9vbCBEb2N1bWVudDo6c2hvdWxkSW52YWxpZGF0ZU5vZGVMaXN0
QW5kQ29sbGVjdGlvbkNhY2hlc0ZvckF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRy
TmFtZSkgY29uc3QKK3sKKyAgICByZXR1cm4gc2hvdWxkSW52YWxpZGF0ZU5vZGVMaXN0Q2FjaGVz
Rm9yQXR0cjxEb05vdEludmFsaWRhdGVPbkF0dHJpYnV0ZUNoYW5nZXMgKyAxPihtX25vZGVMaXN0
QW5kQ29sbGVjdGlvbkNvdW50cywgYXR0ck5hbWUpOworfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUg
SW52YWxpZGF0aW9uRnVuY3Rpb24+Cit2b2lkIERvY3VtZW50OjppbnZhbGlkYXRlTm9kZUxpc3RB
bmRDb2xsZWN0aW9uQ2FjaGVzKEludmFsaWRhdGlvbkZ1bmN0aW9uIGludmFsaWRhdGUpCiB7CiAg
ICAgVmVjdG9yPExpdmVOb2RlTGlzdCosIDg+IGxpc3RzOwogICAgIGNvcHlUb1ZlY3RvcihtX2xp
c3RzSW52YWxpZGF0ZWRBdERvY3VtZW50LCBsaXN0cyk7CiAgICAgZm9yIChhdXRvKiBsaXN0IDog
bGlzdHMpCi0gICAgICAgIGxpc3QtPmludmFsaWRhdGVDYWNoZUZvckF0dHJpYnV0ZShhdHRyTmFt
ZSk7CisgICAgICAgIGludmFsaWRhdGUoKmxpc3QpOwogCiAgICAgVmVjdG9yPEhUTUxDb2xsZWN0
aW9uKiwgOD4gY29sbGVjdGlvbnM7CiAgICAgY29weVRvVmVjdG9yKG1fY29sbGVjdGlvbnNJbnZh
bGlkYXRlZEF0RG9jdW1lbnQsIGNvbGxlY3Rpb25zKTsKICAgICBmb3IgKGF1dG8qIGNvbGxlY3Rp
b24gOiBjb2xsZWN0aW9ucykKLSAgICAgICAgY29sbGVjdGlvbi0+aW52YWxpZGF0ZUNhY2hlRm9y
QXR0cmlidXRlKGF0dHJOYW1lKTsKKyAgICAgICAgaW52YWxpZGF0ZSgqY29sbGVjdGlvbik7CiB9
CiAKLXZvaWQgTm9kZTo6aW52YWxpZGF0ZU5vZGVMaXN0QW5kQ29sbGVjdGlvbkNhY2hlc0luQW5j
ZXN0b3JzKGNvbnN0IFF1YWxpZmllZE5hbWUqIGF0dHJOYW1lLCBFbGVtZW50KiBhdHRyaWJ1dGVP
d25lckVsZW1lbnQpCit2b2lkIE5vZGU6OmludmFsaWRhdGVOb2RlTGlzdEFuZENvbGxlY3Rpb25D
YWNoZXNJbkFuY2VzdG9ycygpCiB7Ci0gICAgaWYgKGhhc1JhcmVEYXRhKCkgJiYgKCFhdHRyTmFt
ZSB8fCBpc0F0dHJpYnV0ZU5vZGUoKSkpIHsKLSAgICAgICAgaWYgKE5vZGVMaXN0c05vZGVEYXRh
KiBsaXN0cyA9IHJhcmVEYXRhKCktPm5vZGVMaXN0cygpKQorICAgIGlmIChoYXNSYXJlRGF0YSgp
KSB7CisgICAgICAgIGlmIChhdXRvKiBsaXN0cyA9IHJhcmVEYXRhKCktPm5vZGVMaXN0cygpKQog
ICAgICAgICAgICAgbGlzdHMtPmNsZWFyQ2hpbGROb2RlTGlzdENhY2hlKCk7CiAgICAgfQogCi0g
ICAgLy8gTW9kaWZpY2F0aW9ucyB0byBhdHRyaWJ1dGVzIHRoYXQgYXJlIG5vdCBhc3NvY2lhdGVk
IHdpdGggYW4gRWxlbWVudCBjYW4ndCBpbnZhbGlkYXRlIE5vZGVMaXN0IGNhY2hlcy4KLSAgICBp
ZiAoYXR0ck5hbWUgJiYgIWF0dHJpYnV0ZU93bmVyRWxlbWVudCkKKyAgICBpZiAoIWRvY3VtZW50
KCkuc2hvdWxkSW52YWxpZGF0ZU5vZGVMaXN0QW5kQ29sbGVjdGlvbkNhY2hlcygpKQogICAgICAg
ICByZXR1cm47CiAKLSAgICBpZiAoIWRvY3VtZW50KCkuc2hvdWxkSW52YWxpZGF0ZU5vZGVMaXN0
QW5kQ29sbGVjdGlvbkNhY2hlcyhhdHRyTmFtZSkpCisgICAgZG9jdW1lbnQoKS5pbnZhbGlkYXRl
Tm9kZUxpc3RBbmRDb2xsZWN0aW9uQ2FjaGVzKFtdKGF1dG8mIGxpc3QpIHsKKyAgICAgICAgbGlz
dC5pbnZhbGlkYXRlQ2FjaGUoKTsKKyAgICB9KTsKKworICAgIGZvciAoYXV0byogbm9kZSA9IHRo
aXM7IG5vZGU7IG5vZGUgPSBub2RlLT5wYXJlbnROb2RlKCkpIHsKKyAgICAgICAgaWYgKCFub2Rl
LT5oYXNSYXJlRGF0YSgpKQorICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgaWYgKGF1
dG8qIGxpc3RzID0gbm9kZS0+cmFyZURhdGEoKS0+bm9kZUxpc3RzKCkpCisgICAgICAgICAgICBs
aXN0cy0+aW52YWxpZGF0ZUNhY2hlcygpOworICAgIH0KK30KKwordm9pZCBOb2RlOjppbnZhbGlk
YXRlTm9kZUxpc3RBbmRDb2xsZWN0aW9uQ2FjaGVzSW5BbmNlc3RvcnNGb3JBdHRyaWJ1dGUoY29u
c3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUpCit7CisgICAgQVNTRVJUKGlzPEVsZW1lbnQ+KCp0
aGlzKSk7CisKKyAgICBpZiAoIWRvY3VtZW50KCkuc2hvdWxkSW52YWxpZGF0ZU5vZGVMaXN0QW5k
Q29sbGVjdGlvbkNhY2hlc0ZvckF0dHJpYnV0ZShhdHRyTmFtZSkpCiAgICAgICAgIHJldHVybjsK
IAotICAgIGRvY3VtZW50KCkuaW52YWxpZGF0ZU5vZGVMaXN0QW5kQ29sbGVjdGlvbkNhY2hlcyhh
dHRyTmFtZSk7CisgICAgZG9jdW1lbnQoKS5pbnZhbGlkYXRlTm9kZUxpc3RBbmRDb2xsZWN0aW9u
Q2FjaGVzKFsmYXR0ck5hbWVdKGF1dG8mIGxpc3QpIHsKKyAgICAgICAgbGlzdC5pbnZhbGlkYXRl
Q2FjaGVGb3JBdHRyaWJ1dGUoYXR0ck5hbWUpOworICAgIH0pOwogCi0gICAgZm9yIChOb2RlKiBu
b2RlID0gdGhpczsgbm9kZTsgbm9kZSA9IG5vZGUtPnBhcmVudE5vZGUoKSkgeworICAgIGZvciAo
YXV0byogbm9kZSA9IHRoaXM7IG5vZGU7IG5vZGUgPSBub2RlLT5wYXJlbnROb2RlKCkpIHsKICAg
ICAgICAgaWYgKCFub2RlLT5oYXNSYXJlRGF0YSgpKQogICAgICAgICAgICAgY29udGludWU7Ci0g
ICAgICAgIE5vZGVSYXJlRGF0YSogZGF0YSA9IG5vZGUtPnJhcmVEYXRhKCk7Ci0gICAgICAgIGlm
IChkYXRhLT5ub2RlTGlzdHMoKSkKLSAgICAgICAgICAgIGRhdGEtPm5vZGVMaXN0cygpLT5pbnZh
bGlkYXRlQ2FjaGVzKGF0dHJOYW1lKTsKKworICAgICAgICBpZiAoYXV0byogbGlzdHMgPSBub2Rl
LT5yYXJlRGF0YSgpLT5ub2RlTGlzdHMoKSkKKyAgICAgICAgICAgIGxpc3RzLT5pbnZhbGlkYXRl
Q2FjaGVzRm9yQXR0cmlidXRlKGF0dHJOYW1lKTsKICAgICB9CiB9CiAKQEAgLTE4NjQsMTkgKzE4
ODQsMjUgQEAgdm9pZCBOb2RlOjpzaG93VHJlZUZvclRoaXNBY3Jvc3NGcmFtZSgpIGNvbnN0CiAK
IC8vIC0tLS0tLS0tCiAKLXZvaWQgTm9kZUxpc3RzTm9kZURhdGE6OmludmFsaWRhdGVDYWNoZXMo
Y29uc3QgUXVhbGlmaWVkTmFtZSogYXR0ck5hbWUpCit2b2lkIE5vZGVMaXN0c05vZGVEYXRhOjpp
bnZhbGlkYXRlQ2FjaGVzKCkKIHsKICAgICBmb3IgKGF1dG8mIGF0b21pY05hbWUgOiBtX2F0b21p
Y05hbWVDYWNoZXMpCi0gICAgICAgIGF0b21pY05hbWUudmFsdWUtPmludmFsaWRhdGVDYWNoZUZv
ckF0dHJpYnV0ZShhdHRyTmFtZSk7CisgICAgICAgIGF0b21pY05hbWUudmFsdWUtPmludmFsaWRh
dGVDYWNoZSgpOwogCiAgICAgZm9yIChhdXRvJiBjb2xsZWN0aW9uIDogbV9jYWNoZWRDb2xsZWN0
aW9ucykKLSAgICAgICAgY29sbGVjdGlvbi52YWx1ZS0+aW52YWxpZGF0ZUNhY2hlRm9yQXR0cmli
dXRlKGF0dHJOYW1lKTsKLQotICAgIGlmIChhdHRyTmFtZSkKLSAgICAgICAgcmV0dXJuOworICAg
ICAgICBjb2xsZWN0aW9uLnZhbHVlLT5pbnZhbGlkYXRlQ2FjaGUoKTsKIAogICAgIGZvciAoYXV0
byYgdGFnQ29sbGVjdGlvbiA6IG1fdGFnQ29sbGVjdGlvbk5TQ2FjaGUpCi0gICAgICAgIHRhZ0Nv
bGxlY3Rpb24udmFsdWUtPmludmFsaWRhdGVDYWNoZUZvckF0dHJpYnV0ZShudWxscHRyKTsKKyAg
ICAgICAgdGFnQ29sbGVjdGlvbi52YWx1ZS0+aW52YWxpZGF0ZUNhY2hlKCk7Cit9CisKK3ZvaWQg
Tm9kZUxpc3RzTm9kZURhdGE6OmludmFsaWRhdGVDYWNoZXNGb3JBdHRyaWJ1dGUoY29uc3QgUXVh
bGlmaWVkTmFtZSYgYXR0ck5hbWUpCit7CisgICAgZm9yIChhdXRvJiBhdG9taWNOYW1lIDogbV9h
dG9taWNOYW1lQ2FjaGVzKQorICAgICAgICBhdG9taWNOYW1lLnZhbHVlLT5pbnZhbGlkYXRlQ2Fj
aGVGb3JBdHRyaWJ1dGUoYXR0ck5hbWUpOworCisgICAgZm9yIChhdXRvJiBjb2xsZWN0aW9uIDog
bV9jYWNoZWRDb2xsZWN0aW9ucykKKyAgICAgICAgY29sbGVjdGlvbi52YWx1ZS0+aW52YWxpZGF0
ZUNhY2hlRm9yQXR0cmlidXRlKGF0dHJOYW1lKTsKIH0KIAogdm9pZCBOb2RlOjpnZXRTdWJyZXNv
dXJjZVVSTHMoTGlzdEhhc2hTZXQ8VVJMPiYgdXJscykgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9Ob2RlLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5oCmluZGV4IDI1
ODZhNDdiODM0MGI3N2YwZGY0ZDFmMWMxNTgyN2EzMTM3Nzc2MDIuLmU4ZmZmZTZmNmYyZjJkZTEy
MjBiOGNlYmQwOTI4MTJhYTlhOTJkNDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9O
b2RlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuaApAQCAtNDc0LDcgKzQ3NCw4IEBA
IHB1YmxpYzoKICAgICB2b2lkIHNob3dUcmVlRm9yVGhpc0Fjcm9zc0ZyYW1lKCkgY29uc3Q7CiAj
ZW5kaWYgLy8gRU5BQkxFKFRSRUVfREVCVUdHSU5HKQogCi0gICAgdm9pZCBpbnZhbGlkYXRlTm9k
ZUxpc3RBbmRDb2xsZWN0aW9uQ2FjaGVzSW5BbmNlc3RvcnMoY29uc3QgUXVhbGlmaWVkTmFtZSog
YXR0ck5hbWUgPSBudWxscHRyLCBFbGVtZW50KiBhdHRyaWJ1dGVPd25lckVsZW1lbnQgPSBudWxs
cHRyKTsKKyAgICB2b2lkIGludmFsaWRhdGVOb2RlTGlzdEFuZENvbGxlY3Rpb25DYWNoZXNJbkFu
Y2VzdG9ycygpOworICAgIHZvaWQgaW52YWxpZGF0ZU5vZGVMaXN0QW5kQ29sbGVjdGlvbkNhY2hl
c0luQW5jZXN0b3JzRm9yQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKTsK
ICAgICBOb2RlTGlzdHNOb2RlRGF0YSogbm9kZUxpc3RzKCk7CiAgICAgdm9pZCBjbGVhck5vZGVM
aXN0cygpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZVJhcmVEYXRhLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZVJhcmVEYXRhLmgKaW5kZXggNDE1MzM1M2ZmOThmNTE2
OTU5ZWY5YTNjMzUyNmY3NzhmYTFkMjI0My4uODVkNTFjYzBlMzcxYmFhYzFiMDY2NWI1YTY3MWFj
OWE5MmVkYWY5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGVSYXJlRGF0YS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlUmFyZURhdGEuaApAQCAtMTk1LDcgKzE5NSw4
IEBAIHB1YmxpYzoKICAgICAgICAgbV9jYWNoZWRDb2xsZWN0aW9ucy5yZW1vdmUobmFtZWRDb2xs
ZWN0aW9uS2V5KGNvbGxlY3Rpb24tPnR5cGUoKSwgbmFtZSkpOwogICAgIH0KIAotICAgIHZvaWQg
aW52YWxpZGF0ZUNhY2hlcyhjb25zdCBRdWFsaWZpZWROYW1lKiBhdHRyTmFtZSA9IG51bGxwdHIp
OworICAgIHZvaWQgaW52YWxpZGF0ZUNhY2hlcygpOworICAgIHZvaWQgaW52YWxpZGF0ZUNhY2hl
c0ZvckF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSk7CiAKICAgICB2b2lk
IGFkb3B0VHJlZVNjb3BlKCkKICAgICB7CkBAIC0yMTAsMTUgKzIxMSwxNSBAQCBwdWJsaWM6CiAg
ICAgICAgIH0KIAogICAgICAgICBmb3IgKGF1dG8mIGNhY2hlIDogbV9hdG9taWNOYW1lQ2FjaGVz
LnZhbHVlcygpKQotICAgICAgICAgICAgY2FjaGUtPmludmFsaWRhdGVDYWNoZShvbGREb2N1bWVu
dCk7CisgICAgICAgICAgICBjYWNoZS0+aW52YWxpZGF0ZUNhY2hlRm9yRG9jdW1lbnQob2xkRG9j
dW1lbnQpOwogCiAgICAgICAgIGZvciAoYXV0byYgbGlzdCA6IG1fdGFnQ29sbGVjdGlvbk5TQ2Fj
aGUudmFsdWVzKCkpIHsKICAgICAgICAgICAgIEFTU0VSVCghbGlzdC0+aXNSb290ZWRBdERvY3Vt
ZW50KCkpOwotICAgICAgICAgICAgbGlzdC0+aW52YWxpZGF0ZUNhY2hlKG9sZERvY3VtZW50KTsK
KyAgICAgICAgICAgIGxpc3QtPmludmFsaWRhdGVDYWNoZUZvckRvY3VtZW50KG9sZERvY3VtZW50
KTsKICAgICAgICAgfQogCiAgICAgICAgIGZvciAoYXV0byYgY29sbGVjdGlvbiA6IG1fY2FjaGVk
Q29sbGVjdGlvbnMudmFsdWVzKCkpCi0gICAgICAgICAgICBjb2xsZWN0aW9uLT5pbnZhbGlkYXRl
Q2FjaGUob2xkRG9jdW1lbnQpOworICAgICAgICAgICAgY29sbGVjdGlvbi0+aW52YWxpZGF0ZUNh
Y2hlRm9yRG9jdW1lbnQob2xkRG9jdW1lbnQpOwogICAgIH0KIAogcHJpdmF0ZToKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvQ2FjaGVkSFRNTENvbGxlY3Rpb24uaCBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvQ2FjaGVkSFRNTENvbGxlY3Rpb24uaAppbmRleCAzZmI0NzUyNzk3NzdkYTg5
NGUzZGU5MDkwNGE0MWI1ZTMzODBmMjM5Li4wMGJiMjYzYjVkMGFhOWNlMTNmOTk3Yjk4ODNkOWM2
YWY0ZGI2ODNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0NhY2hlZEhUTUxDb2xs
ZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9DYWNoZWRIVE1MQ29sbGVjdGlvbi5o
CkBAIC01Myw3ICs1Myw3IEBAIHB1YmxpYzoKICAgICBib29sIGNvbGxlY3Rpb25DYW5UcmF2ZXJz
ZUJhY2t3YXJkKCkgY29uc3QgeyByZXR1cm4gdHJhdmVyc2FsVHlwZSAhPSBDb2xsZWN0aW9uVHJh
dmVyc2FsVHlwZTo6Q3VzdG9tRm9yd2FyZE9ubHk7IH0KICAgICB2b2lkIHdpbGxWYWxpZGF0ZUlu
ZGV4Q2FjaGUoKSBjb25zdCB7IGRvY3VtZW50KCkucmVnaXN0ZXJDb2xsZWN0aW9uKGNvbnN0X2Nh
c3Q8Q2FjaGVkSFRNTENvbGxlY3Rpb248SFRNTENvbGxlY3Rpb25DbGFzcywgdHJhdmVyc2FsVHlw
ZT4mPigqdGhpcykpOyB9CiAKLSAgICB2b2lkIGludmFsaWRhdGVDYWNoZShEb2N1bWVudCYpIG92
ZXJyaWRlOworICAgIHZvaWQgaW52YWxpZGF0ZUNhY2hlRm9yRG9jdW1lbnQoRG9jdW1lbnQmKSBv
dmVycmlkZTsKIAogICAgIGJvb2wgZWxlbWVudE1hdGNoZXMoRWxlbWVudCYpIGNvbnN0OwogCkBA
IC03OCw5ICs3OCw5IEBAIENhY2hlZEhUTUxDb2xsZWN0aW9uPEhUTUxDb2xsZWN0aW9uQ2xhc3Ms
IHRyYXZlcnNhbFR5cGU+Ojp+Q2FjaGVkSFRNTENvbGxlY3Rpb24oCiB9CiAKIHRlbXBsYXRlIDx0
eXBlbmFtZSBIVE1MQ29sbGVjdGlvbkNsYXNzLCBDb2xsZWN0aW9uVHJhdmVyc2FsVHlwZSB0cmF2
ZXJzYWxUeXBlPgotdm9pZCBDYWNoZWRIVE1MQ29sbGVjdGlvbjxIVE1MQ29sbGVjdGlvbkNsYXNz
LCB0cmF2ZXJzYWxUeXBlPjo6aW52YWxpZGF0ZUNhY2hlKERvY3VtZW50JiBkb2N1bWVudCkKK3Zv
aWQgQ2FjaGVkSFRNTENvbGxlY3Rpb248SFRNTENvbGxlY3Rpb25DbGFzcywgdHJhdmVyc2FsVHlw
ZT46OmludmFsaWRhdGVDYWNoZUZvckRvY3VtZW50KERvY3VtZW50JiBkb2N1bWVudCkKIHsKLSAg
ICBIVE1MQ29sbGVjdGlvbjo6aW52YWxpZGF0ZUNhY2hlKGRvY3VtZW50KTsKKyAgICBIVE1MQ29s
bGVjdGlvbjo6aW52YWxpZGF0ZUNhY2hlRm9yRG9jdW1lbnQoZG9jdW1lbnQpOwogICAgIGlmICht
X2luZGV4Q2FjaGUuaGFzVmFsaWRDYWNoZShjb2xsZWN0aW9uKCkpKSB7CiAgICAgICAgIGRvY3Vt
ZW50LnVucmVnaXN0ZXJDb2xsZWN0aW9uKCp0aGlzKTsKICAgICAgICAgbV9pbmRleENhY2hlLmlu
dmFsaWRhdGUoY29sbGVjdGlvbigpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTENvbGxlY3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ29sbGVjdGlvbi5j
cHAKaW5kZXggOGMxNzM4YWUzNTViOTc3YWFhY2IxZDZlNmNiYzg4NmM5YmEyODQ4MC4uZWZhNTNl
M2RmYjZjOTgxMTY0ZTYyZTYwYTU4NDk0YzI2ZWYyMjYxZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MQ29sbGVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MQ29sbGVjdGlvbi5jcHAKQEAgLTEzNiw3ICsxMzYsNyBAQCBIVE1MQ29sbGVjdGlvbjo6fkhU
TUxDb2xsZWN0aW9uKCkKICAgICB9CiB9CiAKLXZvaWQgSFRNTENvbGxlY3Rpb246OmludmFsaWRh
dGVDYWNoZShEb2N1bWVudCYgZG9jdW1lbnQpCit2b2lkIEhUTUxDb2xsZWN0aW9uOjppbnZhbGlk
YXRlQ2FjaGVGb3JEb2N1bWVudChEb2N1bWVudCYgZG9jdW1lbnQpCiB7CiAgICAgaWYgKGhhc05h
bWVkRWxlbWVudENhY2hlKCkpCiAgICAgICAgIGludmFsaWRhdGVOYW1lZEVsZW1lbnRDYWNoZShk
b2N1bWVudCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxDb2xsZWN0aW9u
LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxDb2xsZWN0aW9uLmgKaW5kZXggNjQzYTJlNzAy
YzU5MTNmMWVlMzZkOWEwOTQ3MjA2Mzk2NWIwMDI1YS4uYzFjYjRjYjQyOTZhNzRiMDUxY2VlNjcy
YTBhMWY5NDQzNDE5NTMwZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ29s
bGVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENvbGxlY3Rpb24uaApAQCAt
NzksOCArNzksOSBAQCBwdWJsaWM6CiAgICAgQ29sbGVjdGlvblR5cGUgdHlwZSgpIGNvbnN0Owog
ICAgIENvbnRhaW5lck5vZGUmIG93bmVyTm9kZSgpIGNvbnN0OwogICAgIENvbnRhaW5lck5vZGUm
IHJvb3ROb2RlKCkgY29uc3Q7Ci0gICAgdm9pZCBpbnZhbGlkYXRlQ2FjaGVGb3JBdHRyaWJ1dGUo
Y29uc3QgUXVhbGlmaWVkTmFtZSogYXR0cmlidXRlTmFtZSk7Ci0gICAgdmlydHVhbCB2b2lkIGlu
dmFsaWRhdGVDYWNoZShEb2N1bWVudCYpOworICAgIHZvaWQgaW52YWxpZGF0ZUNhY2hlRm9yQXR0
cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUpOworICAgIHZpcnR1YWwg
dm9pZCBpbnZhbGlkYXRlQ2FjaGVGb3JEb2N1bWVudChEb2N1bWVudCYpOworICAgIHZvaWQgaW52
YWxpZGF0ZUNhY2hlKCkgeyBpbnZhbGlkYXRlQ2FjaGVGb3JEb2N1bWVudChkb2N1bWVudCgpKTsg
fQogCiAgICAgYm9vbCBoYXNOYW1lZEVsZW1lbnRDYWNoZSgpIGNvbnN0OwogCkBAIC0xOTUsMTEg
KzE5NiwxMSBAQCBpbmxpbmUgRG9jdW1lbnQmIEhUTUxDb2xsZWN0aW9uOjpkb2N1bWVudCgpIGNv
bnN0CiAgICAgcmV0dXJuIG1fb3duZXJOb2RlLT5kb2N1bWVudCgpOwogfQogCi1pbmxpbmUgdm9p
ZCBIVE1MQ29sbGVjdGlvbjo6aW52YWxpZGF0ZUNhY2hlRm9yQXR0cmlidXRlKGNvbnN0IFF1YWxp
ZmllZE5hbWUqIGF0dHJpYnV0ZU5hbWUpCitpbmxpbmUgdm9pZCBIVE1MQ29sbGVjdGlvbjo6aW52
YWxpZGF0ZUNhY2hlRm9yQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5h
bWUpCiB7Ci0gICAgaWYgKCFhdHRyaWJ1dGVOYW1lIHx8IHNob3VsZEludmFsaWRhdGVUeXBlT25B
dHRyaWJ1dGVDaGFuZ2UoaW52YWxpZGF0aW9uVHlwZSgpLCAqYXR0cmlidXRlTmFtZSkpCi0gICAg
ICAgIGludmFsaWRhdGVDYWNoZShkb2N1bWVudCgpKTsKLSAgICBlbHNlIGlmIChoYXNOYW1lZEVs
ZW1lbnRDYWNoZSgpICYmICgqYXR0cmlidXRlTmFtZSA9PSBIVE1MTmFtZXM6OmlkQXR0ciB8fCAq
YXR0cmlidXRlTmFtZSA9PSBIVE1MTmFtZXM6Om5hbWVBdHRyKSkKKyAgICBpZiAoc2hvdWxkSW52
YWxpZGF0ZVR5cGVPbkF0dHJpYnV0ZUNoYW5nZShpbnZhbGlkYXRpb25UeXBlKCksIGF0dHJpYnV0
ZU5hbWUpKQorICAgICAgICBpbnZhbGlkYXRlQ2FjaGUoKTsKKyAgICBlbHNlIGlmIChoYXNOYW1l
ZEVsZW1lbnRDYWNoZSgpICYmIChhdHRyaWJ1dGVOYW1lID09IEhUTUxOYW1lczo6aWRBdHRyIHx8
IGF0dHJpYnV0ZU5hbWUgPT0gSFRNTE5hbWVzOjpuYW1lQXR0cikpCiAgICAgICAgIGludmFsaWRh
dGVOYW1lZEVsZW1lbnRDYWNoZShkb2N1bWVudCgpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbi5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uLmNwcAppbmRleCAyYjU0MDkzNjdm
OTY0OTRmYzQyMzAzMGQyMGRiOTk5NmMwY2EyMzZmLi44Yjg0YzI4NjgwMWM5ZWNhODVlNzc1Mzk2
MzU0MGZjNjdjYmE3ZDZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3Jt
Q29udHJvbHNDb2xsZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3Jt
Q29udHJvbHNDb2xsZWN0aW9uLmNwcApAQCAtMTQxLDkgKzE0MSw5IEBAIHZvaWQgSFRNTEZvcm1D
b250cm9sc0NvbGxlY3Rpb246OnVwZGF0ZU5hbWVkRWxlbWVudENhY2hlKCkgY29uc3QKICAgICBz
ZXROYW1lZEl0ZW1DYWNoZShXVEZNb3ZlKGNhY2hlKSk7CiB9CiAKLXZvaWQgSFRNTEZvcm1Db250
cm9sc0NvbGxlY3Rpb246OmludmFsaWRhdGVDYWNoZShEb2N1bWVudCYgZG9jdW1lbnQpCit2b2lk
IEhUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uOjppbnZhbGlkYXRlQ2FjaGVGb3JEb2N1bWVudChE
b2N1bWVudCYgZG9jdW1lbnQpCiB7Ci0gICAgQ2FjaGVkSFRNTENvbGxlY3Rpb248SFRNTEZvcm1D
b250cm9sc0NvbGxlY3Rpb24sIENvbGxlY3Rpb25UeXBlVHJhaXRzPEZvcm1Db250cm9scz46OnRy
YXZlcnNhbFR5cGU+OjppbnZhbGlkYXRlQ2FjaGUoZG9jdW1lbnQpOworICAgIENhY2hlZEhUTUxD
b2xsZWN0aW9uPEhUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uLCBDb2xsZWN0aW9uVHlwZVRyYWl0
czxGb3JtQ29udHJvbHM+Ojp0cmF2ZXJzYWxUeXBlPjo6aW52YWxpZGF0ZUNhY2hlRm9yRG9jdW1l
bnQoZG9jdW1lbnQpOwogICAgIG1fY2FjaGVkRWxlbWVudCA9IG51bGxwdHI7CiAgICAgbV9jYWNo
ZWRFbGVtZW50T2Zmc2V0SW5BcnJheSA9IDA7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uLmgKaW5kZXggZGMxNjYzNThlNDhjYjU5ZGU0ZmVk
MDFhOWJiYTg0YTA3YjUxNGU0ZS4uYzIxZjEyZDgzZWI4NjQ2YzE0NzlmYmE1NmYwNmQwZDkwZTVh
MWEzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xzQ29s
bGVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250cm9sc0NvbGxl
Y3Rpb24uaApAQCAtNDYsNyArNDYsNyBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIGV4cGxpY2l0
IEhUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uKENvbnRhaW5lck5vZGUmKTsKIAotICAgIHZvaWQg
aW52YWxpZGF0ZUNhY2hlKERvY3VtZW50Jikgb3ZlcnJpZGU7CisgICAgdm9pZCBpbnZhbGlkYXRl
Q2FjaGVGb3JEb2N1bWVudChEb2N1bWVudCYpIG92ZXJyaWRlOwogICAgIHZvaWQgdXBkYXRlTmFt
ZWRFbGVtZW50Q2FjaGUoKSBjb25zdCBvdmVycmlkZTsKIAogICAgIGNvbnN0IFZlY3RvcjxGb3Jt
QXNzb2NpYXRlZEVsZW1lbnQqPiYgZm9ybUNvbnRyb2xFbGVtZW50cygpIGNvbnN0OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU2VsZWN0RWxlbWVudC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxTZWxlY3RFbGVtZW50LmNwcAppbmRleCA4NGY1ZmNhOWVmZTJjMDA3
ZDlhNWVkNmU2OWJlY2UyYWE5OTY5OTI1Li5mMTk3NTZiMGM5ODQxNzI4N2JmYTliNTA1YWQ5ZWY0
OGM0ZWE1MDExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTZWxlY3RFbGVt
ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTZWxlY3RFbGVtZW50LmNwcApA
QCAtNzQxLDcgKzc0MSw3IEBAIGNvbnN0IFZlY3RvcjxIVE1MRWxlbWVudCo+JiBIVE1MU2VsZWN0
RWxlbWVudDo6bGlzdEl0ZW1zKCkgY29uc3QKIHZvaWQgSFRNTFNlbGVjdEVsZW1lbnQ6OmludmFs
aWRhdGVTZWxlY3RlZEl0ZW1zKCkKIHsKICAgICBpZiAoSFRNTENvbGxlY3Rpb24qIGNvbGxlY3Rp
b24gPSBjYWNoZWRIVE1MQ29sbGVjdGlvbihTZWxlY3RlZE9wdGlvbnMpKQotICAgICAgICBjb2xs
ZWN0aW9uLT5pbnZhbGlkYXRlQ2FjaGUoZG9jdW1lbnQoKSk7CisgICAgICAgIGNvbGxlY3Rpb24t
PmludmFsaWRhdGVDYWNoZSgpOwogfQogCiB2b2lkIEhUTUxTZWxlY3RFbGVtZW50OjpzZXRSZWNh
bGNMaXN0SXRlbXMoKQpAQCAtNzUzLDcgKzc1Myw3IEBAIHZvaWQgSFRNTFNlbGVjdEVsZW1lbnQ6
OnNldFJlY2FsY0xpc3RJdGVtcygpCiAgICAgaW52YWxpZGF0ZVN0eWxlRm9yU3VidHJlZSgpOwog
ICAgIGlmICghaXNDb25uZWN0ZWQoKSkgewogICAgICAgICBpZiAoSFRNTENvbGxlY3Rpb24qIGNv
bGxlY3Rpb24gPSBjYWNoZWRIVE1MQ29sbGVjdGlvbihTZWxlY3RPcHRpb25zKSkKLSAgICAgICAg
ICAgIGNvbGxlY3Rpb24tPmludmFsaWRhdGVDYWNoZShkb2N1bWVudCgpKTsKKyAgICAgICAgICAg
IGNvbGxlY3Rpb24tPmludmFsaWRhdGVDYWNoZSgpOwogICAgIH0KICAgICBpZiAoIWlzQ29ubmVj
dGVkKCkpCiAgICAgICAgIGludmFsaWRhdGVTZWxlY3RlZEl0ZW1zKCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L21hYy9ET00vRE9NQXR0ci5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL0RPTS9E
T01BdHRyLm1tCmluZGV4IDA3NzQxMjdmOGZkOTE5NzE1MGIyZGJlNTQ5NzI3MzkxODliZTFkMjYu
LjQzOTIzZDcyYmQ5NWZmZjcwNjcwNmZiY2IzMGY3N2ZjOWY5ZDZlY2YgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvbWFjL0RPTS9ET01BdHRyLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL0RP
TS9ET01BdHRyLm1tCkBAIC01OCwxMyArNTgsMTMgQEAgLSAoQk9PTClzcGVjaWZpZWQKIC0gKE5T
U3RyaW5nICopdmFsdWUKIHsKICAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3Rh
dGU7Ci0gICAgcmV0dXJuIElNUEwtPnZhbHVlRm9yQmluZGluZ3MoKTsKKyAgICByZXR1cm4gSU1Q
TC0+dmFsdWUoKTsKIH0KIAogLSAodm9pZClzZXRWYWx1ZTooTlNTdHJpbmcgKiluZXdWYWx1ZQog
ewogICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKLSAgICBJTVBMLT5z
ZXRWYWx1ZUZvckJpbmRpbmdzKG5ld1ZhbHVlKTsKKyAgICBJTVBMLT5zZXRWYWx1ZShuZXdWYWx1
ZSk7CiB9CiAKIC0gKERPTUVsZW1lbnQgKilvd25lckVsZW1lbnQKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9N
QXR0ci5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9n
dGsvRE9NL1dlYktpdERPTUF0dHIuY3BwCmluZGV4IDNiZjhlYmE4MjRhZGNlZTEzMGJiNmNhMTdk
ZDkxZmFjZjk5OTQ3OTcuLjAyZDk1NjM1ZTMyMGJjNzQ5ZTIwNjdkZDQ5YWM5NDhjZTY1ZjMyNGUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJ
L2d0ay9ET00vV2ViS2l0RE9NQXR0ci5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01BdHRyLmNwcApAQCAtMjU3LDcg
KzI1Nyw3IEBAIGdjaGFyKiB3ZWJraXRfZG9tX2F0dHJfZ2V0X3ZhbHVlKFdlYktpdERPTUF0dHIq
IHNlbGYpCiAgICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwogICAgIGdf
cmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9ET01fSVNfQVRUUihzZWxmKSwgMCk7CiAgICAgV2Vi
Q29yZTo6QXR0ciogaXRlbSA9IFdlYktpdDo6Y29yZShzZWxmKTsKLSAgICBnY2hhciogcmVzdWx0
ID0gY29udmVydFRvVVRGOFN0cmluZyhpdGVtLT52YWx1ZUZvckJpbmRpbmdzKCkpOworICAgIGdj
aGFyKiByZXN1bHQgPSBjb252ZXJ0VG9VVEY4U3RyaW5nKGl0ZW0tPnZhbHVlKCkpOwogICAgIHJl
dHVybiByZXN1bHQ7CiB9CiAKQEAgLTI2OSw3ICsyNjksNyBAQCB2b2lkIHdlYmtpdF9kb21fYXR0
cl9zZXRfdmFsdWUoV2ViS2l0RE9NQXR0ciogc2VsZiwgY29uc3QgZ2NoYXIqIHZhbHVlLCBHRXJy
b3IqKgogICAgIFVOVVNFRF9QQVJBTShlcnJvcik7CiAgICAgV2ViQ29yZTo6QXR0ciogaXRlbSA9
IFdlYktpdDo6Y29yZShzZWxmKTsKICAgICBXVEY6OlN0cmluZyBjb252ZXJ0ZWRWYWx1ZSA9IFdU
Rjo6U3RyaW5nOjpmcm9tVVRGOCh2YWx1ZSk7Ci0gICAgaXRlbS0+c2V0VmFsdWVGb3JCaW5kaW5n
cyhjb252ZXJ0ZWRWYWx1ZSk7CisgICAgaXRlbS0+c2V0VmFsdWUoY29udmVydGVkVmFsdWUpOwog
fQogCiBXZWJLaXRET01FbGVtZW50KiB3ZWJraXRfZG9tX2F0dHJfZ2V0X293bmVyX2VsZW1lbnQo
V2ViS2l0RE9NQXR0ciogc2VsZikK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>309642</attachid>
            <date>2017-05-10 14:52:42 -0700</date>
            <delta_ts>2017-05-10 15:25:46 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-171909-20170510145241.patch</filename>
            <type>text/plain</type>
            <size>26699</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE2NjA3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYWZkYzRjODRkMDdmYzgx
NDRiNmY4MjE2NmNhYTFlYjU4MWQyYzFkZS4uOTA4MjdhMjAxMjU3OTUwYmFjMjk3NGZjMmIyNTY0
NDljOWMxODc1OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY1IEBACisyMDE3LTA1LTA5ICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgU2ltcGxpZnkgcmVsYXRpb25z
aGlwIGJldHdlZW4gQXR0ciBhbmQgRWxlbWVudCBub3cgdGhhdCBBdHRyIGlzIGNoaWxkbGVzcwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTcxOTA5CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgUnlvc3VrZSBOaXdhLgorCisgICAgICAgIFNpbXBsaWZ5IHJl
bGF0aW9uc2hpcCBiZXR3ZWVuIEF0dHIgYW5kIEVsZW1lbnQgbm93IHRoYXQgQXR0ciBpcyBjaGls
ZGxlc3MKKyAgICAgICAgYWZ0ZXIgcjIxNjI1OS4KKworICAgICAgICBObyBuZXcgdGVzdHMsIG5v
IFdlYiBmYWNpbmcgYmVoYXZpb3IgY2hhbmdlLgorCisgICAgICAgICogZG9tL0F0dHIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6QXR0cjo6c2V0VmFsdWUpOgorICAgICAgICBBdHRyOjpzZXRWYWx1
ZSgpIHdhcyBvbmx5IGNhbGxlZCBieSBFbGVtZW50OjpzZXRBdHRyaWJ1dGVJbnRlcm5hbCgpIHRv
IG1ha2Ugc3VyZQorICAgICAgICB3ZSB1cGRhdGVkIHRoZSBBdHRyIG5vZGUncyBUZXh0IGNoaWxk
LiBIb3dldmVyLCBub3cgdGhhdCBBdHRyIGhhcyBubyBUZXh0IGNoaWxkLAorICAgICAgICBFbGVt
ZW50IG5vIGxvbmdlciBuZWVkcyB0byB1cGRhdGUgdGhlIEF0dHIgbm9kZSdzIHZhbHVlLgorICAg
ICAgICBBdHRyOjpzZXRWYWx1ZUZvckJpbmRpbmdzKCkgd2FzIHRodXMgcmVuYW1lZCB0byBzZXRW
YWx1ZSgpLiBJdHMgaW1wbGVtZW50YXRpb24KKyAgICAgICAgd2FzIGFsc28gc2ltcGxpZmllZCBi
eSBjYWxsaW5nIEVsZW1lbnQ6OnNldEF0dHJpYnV0ZSgpIG9uIGl0cyBvd25lckVsZW1lbnQsIGlm
CisgICAgICAgIGl0IGhhcyBvbmUsIGluc3RlYWQgb2YgZHVwbGljYXRpbmcgYSBidW5jaCBvZiBj
b2RlIGZyb20gRWxlbWVudDo6c2V0QXR0cmlidXRlSW50ZXJuYWwoKS4KKworICAgICAgICAoV2Vi
Q29yZTo6QXR0cjo6c2V0Tm9kZVZhbHVlKToKKyAgICAgICAgQ2FsbCBzZXRWYWx1ZSgpIGluc3Rl
YWQgb2Ygc2V0VmFsdWVGb3JCaW5kaW5ncygpIG5vdyB0aGF0IGl0IGhhcyBiZWVuIHJlbmFtZWQu
CisKKyAgICAgICAgKiBkb20vQXR0ci5oOgorICAgICAgICAqIGRvbS9BdHRyLmlkbDoKKyAgICAg
ICAgUmVuYW1lIHZhbHVlRm9yQmluZGluZ3MgLyBzZXRWYWx1ZUZvckJpbmRpbmdzIHRvIHZhbHVl
IC8gc2V0VmFsdWUuCisKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuaDoKKyAgICAgICAgU3BsaXQg
c2hvdWxkSW52YWxpZGF0ZU5vZGVMaXN0QW5kQ29sbGVjdGlvbkNhY2hlcygpIGludG8gMiBtZXRo
b2RzLCBvbmUgdGFraW5nIGFuIEF0dHIgbmFtZQorICAgICAgICBhbmQgYW5vdGhlciB0aGF0IGRv
ZXMgbm90LiBUaGVyZSBhcmUgbm93IDIgY2FsbHMgc2l0ZXMgaW5zdGVhZCBvZiBvbmUsIHNvIHdl
IG5vIGxvbmdlciBuZWVkCisgICAgICAgIHRvIGJyYW5jaCBpbiB0aGlzIGZ1bmN0aW9uLgorCisg
ICAgICAgICogZG9tL0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6c2V0
QXR0cmlidXRlSW50ZXJuYWwpOgorICAgICAgICBEcm9wIGNvZGUgY2FsbGluZyBBdHRyOjpzZXRW
YWx1ZSgpIG9uIHRoZSBBdHRyIG5vZGUgc2luY2UgQXR0cjo6c2V0VmFsdWUoKSB3YXMgb25seQor
ICAgICAgICBkdXBsaWNhdGluZyBsb2dpYyBmcm9tIEVsZW1lbnQ6OnNldEF0dHJpYnV0ZUludGVy
bmFsKCkgYWZ0ZXIgcjIxNjI1OS4gVGhlcmUgaXMgbm90aGluZworICAgICAgICBvbiBBdHRyIHRo
YXQgbmVlZHMgdXBkYXRpbmcgd2hlbiBhbiBlbGVtZW50IGF0dHJpYnV0ZSBnZXRzIHVwZGF0ZWQu
CisKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OmF0dHJpYnV0ZUNoYW5nZWQpOgorICAgICAg
ICBDYWxsIHRoZSBuZXcgaW52YWxpZGF0ZU5vZGVMaXN0QW5kQ29sbGVjdGlvbkNhY2hlc0luQW5j
ZXN0b3JzRm9yQXR0cmlidXRlKCkuIFRoaXMKKyAgICAgICAgaXMgdGhlIG9ubHkgY2FsbCBzaXRl
IHRoYXQgcGFzc2VzIGFuIGF0dHJpYnV0ZSBuYW1lLgorCisgICAgICAgICogZG9tL05vZGUuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnNob3VsZEludmFsaWRhdGVOb2RlTGlzdEFu
ZENvbGxlY3Rpb25DYWNoZXMpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnNob3VsZElu
dmFsaWRhdGVOb2RlTGlzdEFuZENvbGxlY3Rpb25DYWNoZXNGb3JBdHRyaWJ1dGUpOgorICAgICAg
ICBTcGxpdCBpbnRvIDIgdG8gYXZvaWQgYnJhbmNoaW5nLCBhcyBleHBsYWluZWQgYWJvdmUuCisK
KyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6OmludmFsaWRhdGVOb2RlTGlzdEFuZENvbGxlY3Rpb25D
YWNoZXNJbkFuY2VzdG9ycyk6CisgICAgICAgIChXZWJDb3JlOjpOb2RlOjppbnZhbGlkYXRlTm9k
ZUxpc3RBbmRDb2xsZWN0aW9uQ2FjaGVzSW5BbmNlc3RvcnNGb3JBdHRyaWJ1dGUpOgorICAgICAg
ICAtIGludmFsaWRhdGVOb2RlTGlzdEFuZENvbGxlY3Rpb25DYWNoZXNJbkFuY2VzdG9ycygpIHVz
ZWQgdG8gaW52YWxpZGF0ZSBjaGlsZE5vZGVMaXN0cworICAgICAgICAgIGlmIHRoZSBOb2RlIHdh
cyBhbiBhdHRyaWJ1dGUgbm9kZS4gRHJvcCB0aGlzIGFzIHRoaXMgaXMgbm8gbG9uZ2VyIG5lZWRl
ZCBhcyBvZiByMjE2MjU5LgorICAgICAgICAtIEFmdGVyIHRoZSBjaGFuZ2UgdG8gQXR0cjo6c2V0
VmFsdWUoKSwgY2FsbCBzaXRlcyBmb3IKKyAgICAgICAgICBpbnZhbGlkYXRlTm9kZUxpc3RBbmRD
b2xsZWN0aW9uQ2FjaGVzSW5BbmNlc3RvcnMoKSBlaXRoZXIgaGFkIG5vIHBhcmFtZXRlcnMsIG9y
IGJvdGgKKyAgICAgICAgICBwYXJhbWV0ZXJzIHByZXNlbnQgYW5kIG5vbi1udWxsLiBUaGVyZSBp
cyB0aGVyZWZvcmUgbm8gbG9uZ2VyIGFueSBuZWVkIHRvIGhhbmRsZQorICAgICAgICAgIGhhdmlu
ZyBhbiBhdHRyTmFtZSBidXQgbm8gYXR0cmlidXRlT3duZXJFbGVtZW50LiBUbyBtYWtlIHRoaXMg
b2J2aW91cywgSSBzcGxpdCB0aGlzCisgICAgICAgICAgaW50byAyIG1ldGhvZHM6IGludmFsaWRh
dGVOb2RlTGlzdEFuZENvbGxlY3Rpb25DYWNoZXNJbkFuY2VzdG9ycygpIGFuZAorICAgICAgICAg
IGludmFsaWRhdGVOb2RlTGlzdEFuZENvbGxlY3Rpb25DYWNoZXNJbkFuY2VzdG9yc0ZvckF0dHJp
YnV0ZShhdHRyTmFtZSkuIFdlIG5vIGxvbmdlcgorICAgICAgICAgIG5lZWQgdGhlIGF0dHJpYnV0
ZU93bmVyRWxlbWVudCBwYXJhbWV0ZXIgYXMgaXQgd2FzIG9ubHkgdXNlZCB0byBleGl0IGVhcmx5
LgorCisgICAgICAgICogZG9tL05vZGUuaDoKKwogMjAxNy0wNS0xMCAgQ2hyaXMgRHVtZXogIDxj
ZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIFJFR1JFU1NJT04gKHIyMDY5NjApOiBQb3NzaWJs
ZSBudWxsIHBvaW50ZXIgZGVyZWZlcmVuY2UgdW5kZXIgRE9NU2VsZWN0aW9uOjpnZXRSYW5nZUF0
KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJL
aXQvbWFjL0NoYW5nZUxvZwppbmRleCAzNjRjOTBlNjk2NTQyMjAzMmI5YjRhMDg3YzIzMjJjNzEw
MWNlNWU3Li43ZTgwMjY1YTEwMDBmNzZlMDYzYTdkNDk0NDI3YTgzZGFkZmQ2ODZlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9tYWMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTctMDUtMDkgIENocmlzIER1bWV6ICA8Y2R1
bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBTaW1wbGlmeSByZWxhdGlvbnNoaXAgYmV0d2VlbiBB
dHRyIGFuZCBFbGVtZW50IG5vdyB0aGF0IEF0dHIgaXMgY2hpbGRsZXNzCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzE5MDkKKworICAgICAgICBSZXZp
ZXdlZCBieSBSeW9zdWtlIE5pd2EuCisKKyAgICAgICAgQnVpbGQgZml4LgorCisgICAgICAgICog
RE9NL0RPTUF0dHIubW06CisgICAgICAgICgtW0RPTUF0dHIgdmFsdWVdKToKKyAgICAgICAgKC1b
RE9NQXR0ciBzZXRWYWx1ZTpdKToKKwogMjAxNy0wNS0wOCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpA
YXBwbGUuY29tPgogCiAgICAgICAgIE1vdmUgJ3N0eWxlJyBmcm9tIEVsZW1lbnQgdG8gSFRNTEVs
ZW1lbnQgLyBTVkdFbGVtZW50IGFuZCBtYWtlIGl0IHNldHRhYmxlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vQXR0ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQXR0ci5jcHAKaW5k
ZXggMGE0ZGM0ODk1OTc0YzRiZjJhZDJiZjI0YTQyZDljMWM3NmRjMzdhNS4uYzhmZmViZTg4NmEx
NTIzMTQ0YTMxYzEyYjk1NDY2ZTJlZDA2NWQyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZG9tL0F0dHIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9BdHRyLmNwcApAQCAtODYsMjgg
Kzg2LDE1IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IEF0dHI6OnNldFByZWZpeChjb25zdCBBdG9taWNT
dHJpbmcmIHByZWZpeCkKIAogdm9pZCBBdHRyOjpzZXRWYWx1ZShjb25zdCBBdG9taWNTdHJpbmcm
IHZhbHVlKQogewotICAgIGlmIChtX2VsZW1lbnQpIHsKLSAgICAgICAgU3R5bGU6OkF0dHJpYnV0
ZUNoYW5nZUludmFsaWRhdGlvbiBzdHlsZUludmFsaWRhdGlvbigqbV9lbGVtZW50LCBxdWFsaWZp
ZWROYW1lKCksIGVsZW1lbnRBdHRyaWJ1dGUoKS52YWx1ZSgpLCB2YWx1ZSk7Ci0gICAgICAgIGVs
ZW1lbnRBdHRyaWJ1dGUoKS5zZXRWYWx1ZSh2YWx1ZSk7Ci0gICAgfSBlbHNlCi0gICAgICAgIG1f
c3RhbmRhbG9uZVZhbHVlID0gdmFsdWU7Ci0KLSAgICBpbnZhbGlkYXRlTm9kZUxpc3RBbmRDb2xs
ZWN0aW9uQ2FjaGVzSW5BbmNlc3RvcnMoJm1fbmFtZSwgbV9lbGVtZW50KTsKLX0KLQotdm9pZCBB
dHRyOjpzZXRWYWx1ZUZvckJpbmRpbmdzKGNvbnN0IEF0b21pY1N0cmluZyYgdmFsdWUpCi17Ci0g
ICAgQXRvbWljU3RyaW5nIG9sZFZhbHVlID0gdGhpcy0+dmFsdWUoKTsKICAgICBpZiAobV9lbGVt
ZW50KQotICAgICAgICBtX2VsZW1lbnQtPndpbGxNb2RpZnlBdHRyaWJ1dGUocXVhbGlmaWVkTmFt
ZSgpLCBvbGRWYWx1ZSwgdmFsdWUpOwotICAgIHNldFZhbHVlKHZhbHVlKTsKLSAgICBpZiAobV9l
bGVtZW50KQotICAgICAgICBtX2VsZW1lbnQtPmRpZE1vZGlmeUF0dHJpYnV0ZShxdWFsaWZpZWRO
YW1lKCksIG9sZFZhbHVlLCB2YWx1ZSk7CisgICAgICAgIG1fZWxlbWVudC0+c2V0QXR0cmlidXRl
KHF1YWxpZmllZE5hbWUoKSwgdmFsdWUpOworICAgIGVsc2UKKyAgICAgICAgbV9zdGFuZGFsb25l
VmFsdWUgPSB2YWx1ZTsKIH0KIAogRXhjZXB0aW9uT3I8dm9pZD4gQXR0cjo6c2V0Tm9kZVZhbHVl
KGNvbnN0IFN0cmluZyYgdmFsdWUpCiB7Ci0gICAgc2V0VmFsdWVGb3JCaW5kaW5ncyh2YWx1ZSk7
CisgICAgc2V0VmFsdWUodmFsdWUpOwogICAgIHJldHVybiB7IH07CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9BdHRyLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vQXR0ci5oCmlu
ZGV4IDcyYTYwYjZmZjYzZWMwYTE0YWIyODA2YjkyYWRjZGY4ODc4Y2Q2MDcuLjRkOWM2NTg0YTY5
NjI0NmYzNmMwNTU4NTY1YWY3ZjRjYzc0NzA2MjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9BdHRyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0F0dHIuaApAQCAtNDQsOSArNDQs
NyBAQCBwdWJsaWM6CiAgICAgRWxlbWVudCogb3duZXJFbGVtZW50KCkgY29uc3QgeyByZXR1cm4g
bV9lbGVtZW50OyB9CiAKICAgICBXRUJDT1JFX0VYUE9SVCBjb25zdCBBdG9taWNTdHJpbmcmIHZh
bHVlKCkgY29uc3Q7Ci0gICAgdm9pZCBzZXRWYWx1ZShjb25zdCBBdG9taWNTdHJpbmcmKTsKLSAg
ICBjb25zdCBBdG9taWNTdHJpbmcmIHZhbHVlRm9yQmluZGluZ3MoKSBjb25zdCB7IHJldHVybiB2
YWx1ZSgpOyB9Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRWYWx1ZUZvckJpbmRpbmdzKGNv
bnN0IEF0b21pY1N0cmluZyYpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0VmFsdWUoY29u
c3QgQXRvbWljU3RyaW5nJik7CiAKICAgICBjb25zdCBRdWFsaWZpZWROYW1lJiBxdWFsaWZpZWRO
YW1lKCkgY29uc3QgeyByZXR1cm4gbV9uYW1lOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9BdHRyLmlkbCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9BdHRyLmlkbAppbmRleCBiMDkz
NTExMGNhMTMzNjM3OTIxZjBjYjg1MDA2MDU5MzI5NDFmZWE2Li40M2Y4NjBmZjkwMjMyMjYyNDI2
YThmYzMwY2M2OGE0ODIyYjk3ZjVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vQXR0
ci5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0F0dHIuaWRsCkBAIC0yNyw3ICsyNyw3IEBA
CiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIERPTVN0cmluZz8gcHJlZml4OwogICAgIHJlYWRvbmx5
IGF0dHJpYnV0ZSBET01TdHJpbmcgbG9jYWxOYW1lOwogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBE
T01TdHJpbmcgbmFtZTsKLSAgICBbQ0VSZWFjdGlvbnMsIEltcGxlbWVudGVkQXM9dmFsdWVGb3JC
aW5kaW5nc10gYXR0cmlidXRlIERPTVN0cmluZyB2YWx1ZTsKKyAgICBbQ0VSZWFjdGlvbnNdIGF0
dHJpYnV0ZSBET01TdHJpbmcgdmFsdWU7CiAKICAgICByZWFkb25seSBhdHRyaWJ1dGUgRWxlbWVu
dD8gb3duZXJFbGVtZW50OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1l
bnQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCmluZGV4IDhjYzkwNjdhNmVhNGYw
ZTI3ZTQwZGUxODAzNDg4MTcwMjk3YmVhMzMuLmFiOGE0ZGFhMzA2Zjc4YWVkMjA4MjVkMGY3NGI2
NzEyNDA0NGU4MDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCkBAIC03MjYsOCArNzI2LDExIEBAIHB1
YmxpYzoKICAgICB2b2lkIHVucmVnaXN0ZXJDb2xsZWN0aW9uKEhUTUxDb2xsZWN0aW9uJik7CiAg
ICAgdm9pZCBjb2xsZWN0aW9uQ2FjaGVkSWROYW1lTWFwKGNvbnN0IEhUTUxDb2xsZWN0aW9uJik7
CiAgICAgdm9pZCBjb2xsZWN0aW9uV2lsbENsZWFySWROYW1lTWFwKGNvbnN0IEhUTUxDb2xsZWN0
aW9uJik7Ci0gICAgYm9vbCBzaG91bGRJbnZhbGlkYXRlTm9kZUxpc3RBbmRDb2xsZWN0aW9uQ2Fj
aGVzKGNvbnN0IFF1YWxpZmllZE5hbWUqIGF0dHJOYW1lID0gbnVsbHB0cikgY29uc3Q7Ci0gICAg
dm9pZCBpbnZhbGlkYXRlTm9kZUxpc3RBbmRDb2xsZWN0aW9uQ2FjaGVzKGNvbnN0IFF1YWxpZmll
ZE5hbWUqIGF0dHJOYW1lKTsKKyAgICBib29sIHNob3VsZEludmFsaWRhdGVOb2RlTGlzdEFuZENv
bGxlY3Rpb25DYWNoZXMoKSBjb25zdDsKKyAgICBib29sIHNob3VsZEludmFsaWRhdGVOb2RlTGlz
dEFuZENvbGxlY3Rpb25DYWNoZXNGb3JBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0
ck5hbWUpIGNvbnN0OworCisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIEludmFsaWRhdGlvbkZ1bmN0
aW9uPgorICAgIHZvaWQgaW52YWxpZGF0ZU5vZGVMaXN0QW5kQ29sbGVjdGlvbkNhY2hlcyhJbnZh
bGlkYXRpb25GdW5jdGlvbik7CiAKICAgICB2b2lkIGF0dGFjaE5vZGVJdGVyYXRvcihOb2RlSXRl
cmF0b3IqKTsKICAgICB2b2lkIGRldGFjaE5vZGVJdGVyYXRvcihOb2RlSXRlcmF0b3IqKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9FbGVtZW50LmNwcAppbmRleCBlYzdkMTg0ZmMyYjNlM2JjMzdkZmU3YWFlNWUyY2FkMTEz
ZDE0YTg0Li5mNzFiYWNjYjY4NmM3MGI1MWQ0ZTYwNTlmOGY0ZDFmOWZmYzliNzczIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
ZG9tL0VsZW1lbnQuY3BwCkBAIC0xMjc2LDE1ICsxMjc2LDggQEAgaW5saW5lIHZvaWQgRWxlbWVu
dDo6c2V0QXR0cmlidXRlSW50ZXJuYWwodW5zaWduZWQgaW5kZXgsIGNvbnN0IFF1YWxpZmllZE5h
bWUmIG4KICAgICB3aWxsTW9kaWZ5QXR0cmlidXRlKGF0dHJpYnV0ZU5hbWUsIG9sZFZhbHVlLCBu
ZXdWYWx1ZSk7CiAKICAgICBpZiAobmV3VmFsdWUgIT0gb2xkVmFsdWUpIHsKLSAgICAgICAgLy8g
SWYgdGhlcmUgaXMgYW4gQXR0ciBub2RlIGhvb2tlZCB0byB0aGlzIGF0dHJpYnV0ZSwgdGhlIEF0
dHI6OnNldFZhbHVlKCkgY2FsbCBiZWxvdwotICAgICAgICAvLyB3aWxsIHdyaXRlIGludG8gdGhl
IEVsZW1lbnREYXRhLgotICAgICAgICAvLyBGSVhNRTogUmVmYWN0b3IgdGhpcyBzbyBpdCBtYWtl
cyBzb21lIHNlbnNlLgotICAgICAgICBpZiAoUmVmUHRyPEF0dHI+IGF0dHJOb2RlID0gYXR0cklm
RXhpc3RzKGF0dHJpYnV0ZU5hbWUpKQotICAgICAgICAgICAgYXR0ck5vZGUtPnNldFZhbHVlKG5l
d1ZhbHVlKTsKLSAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICBTdHlsZTo6QXR0cmlidXRlQ2hh
bmdlSW52YWxpZGF0aW9uIHN0eWxlSW52YWxpZGF0aW9uKCp0aGlzLCBuYW1lLCBvbGRWYWx1ZSwg
bmV3VmFsdWUpOwotICAgICAgICAgICAgZW5zdXJlVW5pcXVlRWxlbWVudERhdGEoKS5hdHRyaWJ1
dGVBdChpbmRleCkuc2V0VmFsdWUobmV3VmFsdWUpOwotICAgICAgICB9CisgICAgICAgIFN0eWxl
OjpBdHRyaWJ1dGVDaGFuZ2VJbnZhbGlkYXRpb24gc3R5bGVJbnZhbGlkYXRpb24oKnRoaXMsIG5h
bWUsIG9sZFZhbHVlLCBuZXdWYWx1ZSk7CisgICAgICAgIGVuc3VyZVVuaXF1ZUVsZW1lbnREYXRh
KCkuYXR0cmlidXRlQXQoaW5kZXgpLnNldFZhbHVlKG5ld1ZhbHVlKTsKICAgICB9CiAKICAgICBk
aWRNb2RpZnlBdHRyaWJ1dGUoYXR0cmlidXRlTmFtZSwgb2xkVmFsdWUsIG5ld1ZhbHVlKTsKQEAg
LTEzNDAsNyArMTMzMyw3IEBAIHZvaWQgRWxlbWVudDo6YXR0cmlidXRlQ2hhbmdlZChjb25zdCBR
dWFsaWZpZWROYW1lJiBuYW1lLCBjb25zdCBBdG9taWNTdHJpbmcmIG9sCiAgICAgaWYgKHZhbHVl
SXNTYW1lQXNCZWZvcmUpCiAgICAgICAgIHJldHVybjsKIAotICAgIGludmFsaWRhdGVOb2RlTGlz
dEFuZENvbGxlY3Rpb25DYWNoZXNJbkFuY2VzdG9ycygmbmFtZSwgdGhpcyk7CisgICAgaW52YWxp
ZGF0ZU5vZGVMaXN0QW5kQ29sbGVjdGlvbkNhY2hlc0luQW5jZXN0b3JzRm9yQXR0cmlidXRlKG5h
bWUpOwogCiAgICAgaWYgKEFYT2JqZWN0Q2FjaGUqIGNhY2hlID0gZG9jdW1lbnQoKS5leGlzdGlu
Z0FYT2JqZWN0Q2FjaGUoKSkKICAgICAgICAgY2FjaGUtPmhhbmRsZUF0dHJpYnV0ZUNoYW5nZWQo
bmFtZSwgdGhpcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTGl2ZU5vZGVMaXN0
LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vTGl2ZU5vZGVMaXN0LmgKaW5kZXggNDE1ZDE5MDlmMmJl
OGViNGFjOTBjYzIxNGJlMzQ4N2UxNWEyZGYzZC4uMzNmODEzZDY5MTczMDUzYzM2ZDJkZjI2MmI2
YTViZTE2Njg2NGRiMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0xpdmVOb2RlTGlz
dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9MaXZlTm9kZUxpc3QuaApAQCAtNDgsMTIgKzQ4
LDEzIEBAIHB1YmxpYzoKIAogICAgIEFMV0FZU19JTkxJTkUgTm9kZUxpc3RJbnZhbGlkYXRpb25U
eXBlIGludmFsaWRhdGlvblR5cGUoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxOb2RlTGlz
dEludmFsaWRhdGlvblR5cGU+KG1faW52YWxpZGF0aW9uVHlwZSk7IH0KICAgICBDb250YWluZXJO
b2RlJiBvd25lck5vZGUoKSBjb25zdCB7IHJldHVybiBtX293bmVyTm9kZTsgfQotICAgIEFMV0FZ
U19JTkxJTkUgdm9pZCBpbnZhbGlkYXRlQ2FjaGVGb3JBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVk
TmFtZSogYXR0ck5hbWUpIGNvbnN0CisgICAgQUxXQVlTX0lOTElORSB2b2lkIGludmFsaWRhdGVD
YWNoZUZvckF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSkgY29uc3QKICAg
ICB7Ci0gICAgICAgIGlmICghYXR0ck5hbWUgfHwgc2hvdWxkSW52YWxpZGF0ZVR5cGVPbkF0dHJp
YnV0ZUNoYW5nZShpbnZhbGlkYXRpb25UeXBlKCksICphdHRyTmFtZSkpCi0gICAgICAgICAgICBp
bnZhbGlkYXRlQ2FjaGUoZG9jdW1lbnQoKSk7CisgICAgICAgIGlmIChzaG91bGRJbnZhbGlkYXRl
VHlwZU9uQXR0cmlidXRlQ2hhbmdlKGludmFsaWRhdGlvblR5cGUoKSwgYXR0ck5hbWUpKQorICAg
ICAgICAgICAgaW52YWxpZGF0ZUNhY2hlKCk7CiAgICAgfQotICAgIHZpcnR1YWwgdm9pZCBpbnZh
bGlkYXRlQ2FjaGUoRG9jdW1lbnQmKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCB2b2lkIGludmFs
aWRhdGVDYWNoZUZvckRvY3VtZW50KERvY3VtZW50JikgY29uc3QgPSAwOworICAgIHZvaWQgaW52
YWxpZGF0ZUNhY2hlKCkgY29uc3QgeyBpbnZhbGlkYXRlQ2FjaGVGb3JEb2N1bWVudChkb2N1bWVu
dCgpKTsgfQogCiAgICAgYm9vbCBpc1JlZ2lzdGVyZWRGb3JJbnZhbGlkYXRpb25BdERvY3VtZW50
KCkgY29uc3QgeyByZXR1cm4gbV9pc1JlZ2lzdGVyZWRGb3JJbnZhbGlkYXRpb25BdERvY3VtZW50
OyB9CiAgICAgdm9pZCBzZXRSZWdpc3RlcmVkRm9ySW52YWxpZGF0aW9uQXREb2N1bWVudChib29s
IGYpIHsgbV9pc1JlZ2lzdGVyZWRGb3JJbnZhbGlkYXRpb25BdERvY3VtZW50ID0gZjsgfQpAQCAt
ODksNyArOTAsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBjb2xsZWN0aW9uQ2FuVHJhdmVyc2VCYWNr
d2FyZCgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KICAgICB2b2lkIHdpbGxWYWxpZGF0ZUluZGV4
Q2FjaGUoKSBjb25zdCB7IGRvY3VtZW50KCkucmVnaXN0ZXJOb2RlTGlzdEZvckludmFsaWRhdGlv
bihjb25zdF9jYXN0PENhY2hlZExpdmVOb2RlTGlzdDxOb2RlTGlzdFR5cGU+Jj4oKnRoaXMpKTsg
fQogCi0gICAgdm9pZCBpbnZhbGlkYXRlQ2FjaGUoRG9jdW1lbnQmKSBjb25zdCBmaW5hbDsKKyAg
ICB2b2lkIGludmFsaWRhdGVDYWNoZUZvckRvY3VtZW50KERvY3VtZW50JikgY29uc3QgZmluYWw7
CiAgICAgc2l6ZV90IG1lbW9yeUNvc3QoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2luZGV4Q2Fj
aGUubWVtb3J5Q29zdCgpOyB9CiAKIHByb3RlY3RlZDoKQEAgLTE1Miw3ICsxNTMsNyBAQCBpbmxp
bmUgQ29udGFpbmVyTm9kZSYgQ2FjaGVkTGl2ZU5vZGVMaXN0PE5vZGVMaXN0VHlwZT46OnJvb3RO
b2RlKCkgY29uc3QKIH0KIAogdGVtcGxhdGUgPGNsYXNzIE5vZGVMaXN0VHlwZT4KLXZvaWQgQ2Fj
aGVkTGl2ZU5vZGVMaXN0PE5vZGVMaXN0VHlwZT46OmludmFsaWRhdGVDYWNoZShEb2N1bWVudCYg
ZG9jdW1lbnQpIGNvbnN0Cit2b2lkIENhY2hlZExpdmVOb2RlTGlzdDxOb2RlTGlzdFR5cGU+Ojpp
bnZhbGlkYXRlQ2FjaGVGb3JEb2N1bWVudChEb2N1bWVudCYgZG9jdW1lbnQpIGNvbnN0CiB7CiAg
ICAgaWYgKCFtX2luZGV4Q2FjaGUuaGFzVmFsaWRDYWNoZShub2RlTGlzdCgpKSkKICAgICAgICAg
cmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwIGIvU291cmNl
L1dlYkNvcmUvZG9tL05vZGUuY3BwCmluZGV4IDk2ZjJlYjE2ZmZiOGQ2MmNiMzJlYWViYTVlYzA0
MDA3NWE4N2IwMjYuLjdmOGUwY2YwN2ZjYTAzZTcxMmE4NGI0NjE2NGFhNDBjZGMyZWY0YjIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vTm9kZS5jcHAKQEAgLTgzOCw1NCArODM4LDc0IEBAIGJvb2wgc2hvdWxkSW52YWxpZGF0
ZU5vZGVMaXN0Q2FjaGVzRm9yQXR0cjxudW1Ob2RlTGlzdEludmFsaWRhdGlvblR5cGVzPihjb25z
dCB1CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1ib29sIERvY3VtZW50OjpzaG91bGRJbnZhbGlk
YXRlTm9kZUxpc3RBbmRDb2xsZWN0aW9uQ2FjaGVzKGNvbnN0IFF1YWxpZmllZE5hbWUqIGF0dHJO
YW1lKSBjb25zdAoraW5saW5lIGJvb2wgRG9jdW1lbnQ6OnNob3VsZEludmFsaWRhdGVOb2RlTGlz
dEFuZENvbGxlY3Rpb25DYWNoZXMoKSBjb25zdAogewotICAgIGlmIChhdHRyTmFtZSkKLSAgICAg
ICAgcmV0dXJuIHNob3VsZEludmFsaWRhdGVOb2RlTGlzdENhY2hlc0ZvckF0dHI8RG9Ob3RJbnZh
bGlkYXRlT25BdHRyaWJ1dGVDaGFuZ2VzICsgMT4obV9ub2RlTGlzdEFuZENvbGxlY3Rpb25Db3Vu
dHMsICphdHRyTmFtZSk7Ci0KLSAgICBmb3IgKGludCB0eXBlID0gMDsgdHlwZSA8IG51bU5vZGVM
aXN0SW52YWxpZGF0aW9uVHlwZXM7IHR5cGUrKykgeworICAgIGZvciAoaW50IHR5cGUgPSAwOyB0
eXBlIDwgbnVtTm9kZUxpc3RJbnZhbGlkYXRpb25UeXBlczsgKyt0eXBlKSB7CiAgICAgICAgIGlm
IChtX25vZGVMaXN0QW5kQ29sbGVjdGlvbkNvdW50c1t0eXBlXSkKICAgICAgICAgICAgIHJldHVy
biB0cnVlOwogICAgIH0KLQogICAgIHJldHVybiBmYWxzZTsKIH0KIAotdm9pZCBEb2N1bWVudDo6
aW52YWxpZGF0ZU5vZGVMaXN0QW5kQ29sbGVjdGlvbkNhY2hlcyhjb25zdCBRdWFsaWZpZWROYW1l
KiBhdHRyTmFtZSkKK2lubGluZSBib29sIERvY3VtZW50OjpzaG91bGRJbnZhbGlkYXRlTm9kZUxp
c3RBbmRDb2xsZWN0aW9uQ2FjaGVzRm9yQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0
dHJOYW1lKSBjb25zdAoreworICAgIHJldHVybiBzaG91bGRJbnZhbGlkYXRlTm9kZUxpc3RDYWNo
ZXNGb3JBdHRyPERvTm90SW52YWxpZGF0ZU9uQXR0cmlidXRlQ2hhbmdlcyArIDE+KG1fbm9kZUxp
c3RBbmRDb2xsZWN0aW9uQ291bnRzLCBhdHRyTmFtZSk7Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFt
ZSBJbnZhbGlkYXRpb25GdW5jdGlvbj4KK3ZvaWQgRG9jdW1lbnQ6OmludmFsaWRhdGVOb2RlTGlz
dEFuZENvbGxlY3Rpb25DYWNoZXMoSW52YWxpZGF0aW9uRnVuY3Rpb24gaW52YWxpZGF0ZSkKIHsK
ICAgICBWZWN0b3I8TGl2ZU5vZGVMaXN0KiwgOD4gbGlzdHM7CiAgICAgY29weVRvVmVjdG9yKG1f
bGlzdHNJbnZhbGlkYXRlZEF0RG9jdW1lbnQsIGxpc3RzKTsKICAgICBmb3IgKGF1dG8qIGxpc3Qg
OiBsaXN0cykKLSAgICAgICAgbGlzdC0+aW52YWxpZGF0ZUNhY2hlRm9yQXR0cmlidXRlKGF0dHJO
YW1lKTsKKyAgICAgICAgaW52YWxpZGF0ZSgqbGlzdCk7CiAKICAgICBWZWN0b3I8SFRNTENvbGxl
Y3Rpb24qLCA4PiBjb2xsZWN0aW9uczsKICAgICBjb3B5VG9WZWN0b3IobV9jb2xsZWN0aW9uc0lu
dmFsaWRhdGVkQXREb2N1bWVudCwgY29sbGVjdGlvbnMpOwogICAgIGZvciAoYXV0byogY29sbGVj
dGlvbiA6IGNvbGxlY3Rpb25zKQotICAgICAgICBjb2xsZWN0aW9uLT5pbnZhbGlkYXRlQ2FjaGVG
b3JBdHRyaWJ1dGUoYXR0ck5hbWUpOworICAgICAgICBpbnZhbGlkYXRlKCpjb2xsZWN0aW9uKTsK
IH0KIAotdm9pZCBOb2RlOjppbnZhbGlkYXRlTm9kZUxpc3RBbmRDb2xsZWN0aW9uQ2FjaGVzSW5B
bmNlc3RvcnMoY29uc3QgUXVhbGlmaWVkTmFtZSogYXR0ck5hbWUsIEVsZW1lbnQqIGF0dHJpYnV0
ZU93bmVyRWxlbWVudCkKK3ZvaWQgTm9kZTo6aW52YWxpZGF0ZU5vZGVMaXN0QW5kQ29sbGVjdGlv
bkNhY2hlc0luQW5jZXN0b3JzKCkKIHsKLSAgICBpZiAoaGFzUmFyZURhdGEoKSAmJiAoIWF0dHJO
YW1lIHx8IGlzQXR0cmlidXRlTm9kZSgpKSkgewotICAgICAgICBpZiAoTm9kZUxpc3RzTm9kZURh
dGEqIGxpc3RzID0gcmFyZURhdGEoKS0+bm9kZUxpc3RzKCkpCisgICAgaWYgKGhhc1JhcmVEYXRh
KCkpIHsKKyAgICAgICAgaWYgKGF1dG8qIGxpc3RzID0gcmFyZURhdGEoKS0+bm9kZUxpc3RzKCkp
CiAgICAgICAgICAgICBsaXN0cy0+Y2xlYXJDaGlsZE5vZGVMaXN0Q2FjaGUoKTsKICAgICB9CiAK
LSAgICAvLyBNb2RpZmljYXRpb25zIHRvIGF0dHJpYnV0ZXMgdGhhdCBhcmUgbm90IGFzc29jaWF0
ZWQgd2l0aCBhbiBFbGVtZW50IGNhbid0IGludmFsaWRhdGUgTm9kZUxpc3QgY2FjaGVzLgotICAg
IGlmIChhdHRyTmFtZSAmJiAhYXR0cmlidXRlT3duZXJFbGVtZW50KQorICAgIGlmICghZG9jdW1l
bnQoKS5zaG91bGRJbnZhbGlkYXRlTm9kZUxpc3RBbmRDb2xsZWN0aW9uQ2FjaGVzKCkpCiAgICAg
ICAgIHJldHVybjsKIAotICAgIGlmICghZG9jdW1lbnQoKS5zaG91bGRJbnZhbGlkYXRlTm9kZUxp
c3RBbmRDb2xsZWN0aW9uQ2FjaGVzKGF0dHJOYW1lKSkKKyAgICBkb2N1bWVudCgpLmludmFsaWRh
dGVOb2RlTGlzdEFuZENvbGxlY3Rpb25DYWNoZXMoW10oYXV0byYgbGlzdCkgeworICAgICAgICBs
aXN0LmludmFsaWRhdGVDYWNoZSgpOworICAgIH0pOworCisgICAgZm9yIChhdXRvKiBub2RlID0g
dGhpczsgbm9kZTsgbm9kZSA9IG5vZGUtPnBhcmVudE5vZGUoKSkgeworICAgICAgICBpZiAoIW5v
ZGUtPmhhc1JhcmVEYXRhKCkpCisgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICBpZiAo
YXV0byogbGlzdHMgPSBub2RlLT5yYXJlRGF0YSgpLT5ub2RlTGlzdHMoKSkKKyAgICAgICAgICAg
IGxpc3RzLT5pbnZhbGlkYXRlQ2FjaGVzKCk7CisgICAgfQorfQorCit2b2lkIE5vZGU6OmludmFs
aWRhdGVOb2RlTGlzdEFuZENvbGxlY3Rpb25DYWNoZXNJbkFuY2VzdG9yc0ZvckF0dHJpYnV0ZShj
b25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSkKK3sKKyAgICBBU1NFUlQoaXM8RWxlbWVudD4o
KnRoaXMpKTsKKworICAgIGlmICghZG9jdW1lbnQoKS5zaG91bGRJbnZhbGlkYXRlTm9kZUxpc3RB
bmRDb2xsZWN0aW9uQ2FjaGVzRm9yQXR0cmlidXRlKGF0dHJOYW1lKSkKICAgICAgICAgcmV0dXJu
OwogCi0gICAgZG9jdW1lbnQoKS5pbnZhbGlkYXRlTm9kZUxpc3RBbmRDb2xsZWN0aW9uQ2FjaGVz
KGF0dHJOYW1lKTsKKyAgICBkb2N1bWVudCgpLmludmFsaWRhdGVOb2RlTGlzdEFuZENvbGxlY3Rp
b25DYWNoZXMoWyZhdHRyTmFtZV0oYXV0byYgbGlzdCkgeworICAgICAgICBsaXN0LmludmFsaWRh
dGVDYWNoZUZvckF0dHJpYnV0ZShhdHRyTmFtZSk7CisgICAgfSk7CiAKLSAgICBmb3IgKE5vZGUq
IG5vZGUgPSB0aGlzOyBub2RlOyBub2RlID0gbm9kZS0+cGFyZW50Tm9kZSgpKSB7CisgICAgZm9y
IChhdXRvKiBub2RlID0gdGhpczsgbm9kZTsgbm9kZSA9IG5vZGUtPnBhcmVudE5vZGUoKSkgewog
ICAgICAgICBpZiAoIW5vZGUtPmhhc1JhcmVEYXRhKCkpCiAgICAgICAgICAgICBjb250aW51ZTsK
LSAgICAgICAgTm9kZVJhcmVEYXRhKiBkYXRhID0gbm9kZS0+cmFyZURhdGEoKTsKLSAgICAgICAg
aWYgKGRhdGEtPm5vZGVMaXN0cygpKQotICAgICAgICAgICAgZGF0YS0+bm9kZUxpc3RzKCktPmlu
dmFsaWRhdGVDYWNoZXMoYXR0ck5hbWUpOworCisgICAgICAgIGlmIChhdXRvKiBsaXN0cyA9IG5v
ZGUtPnJhcmVEYXRhKCktPm5vZGVMaXN0cygpKQorICAgICAgICAgICAgbGlzdHMtPmludmFsaWRh
dGVDYWNoZXNGb3JBdHRyaWJ1dGUoYXR0ck5hbWUpOwogICAgIH0KIH0KIApAQCAtMTg2NCwxOSAr
MTg4NCwyNSBAQCB2b2lkIE5vZGU6OnNob3dUcmVlRm9yVGhpc0Fjcm9zc0ZyYW1lKCkgY29uc3QK
IAogLy8gLS0tLS0tLS0KIAotdm9pZCBOb2RlTGlzdHNOb2RlRGF0YTo6aW52YWxpZGF0ZUNhY2hl
cyhjb25zdCBRdWFsaWZpZWROYW1lKiBhdHRyTmFtZSkKK3ZvaWQgTm9kZUxpc3RzTm9kZURhdGE6
OmludmFsaWRhdGVDYWNoZXMoKQogewogICAgIGZvciAoYXV0byYgYXRvbWljTmFtZSA6IG1fYXRv
bWljTmFtZUNhY2hlcykKLSAgICAgICAgYXRvbWljTmFtZS52YWx1ZS0+aW52YWxpZGF0ZUNhY2hl
Rm9yQXR0cmlidXRlKGF0dHJOYW1lKTsKKyAgICAgICAgYXRvbWljTmFtZS52YWx1ZS0+aW52YWxp
ZGF0ZUNhY2hlKCk7CiAKICAgICBmb3IgKGF1dG8mIGNvbGxlY3Rpb24gOiBtX2NhY2hlZENvbGxl
Y3Rpb25zKQotICAgICAgICBjb2xsZWN0aW9uLnZhbHVlLT5pbnZhbGlkYXRlQ2FjaGVGb3JBdHRy
aWJ1dGUoYXR0ck5hbWUpOwotCi0gICAgaWYgKGF0dHJOYW1lKQotICAgICAgICByZXR1cm47Cisg
ICAgICAgIGNvbGxlY3Rpb24udmFsdWUtPmludmFsaWRhdGVDYWNoZSgpOwogCiAgICAgZm9yIChh
dXRvJiB0YWdDb2xsZWN0aW9uIDogbV90YWdDb2xsZWN0aW9uTlNDYWNoZSkKLSAgICAgICAgdGFn
Q29sbGVjdGlvbi52YWx1ZS0+aW52YWxpZGF0ZUNhY2hlRm9yQXR0cmlidXRlKG51bGxwdHIpOwor
ICAgICAgICB0YWdDb2xsZWN0aW9uLnZhbHVlLT5pbnZhbGlkYXRlQ2FjaGUoKTsKK30KKwordm9p
ZCBOb2RlTGlzdHNOb2RlRGF0YTo6aW52YWxpZGF0ZUNhY2hlc0ZvckF0dHJpYnV0ZShjb25zdCBR
dWFsaWZpZWROYW1lJiBhdHRyTmFtZSkKK3sKKyAgICBmb3IgKGF1dG8mIGF0b21pY05hbWUgOiBt
X2F0b21pY05hbWVDYWNoZXMpCisgICAgICAgIGF0b21pY05hbWUudmFsdWUtPmludmFsaWRhdGVD
YWNoZUZvckF0dHJpYnV0ZShhdHRyTmFtZSk7CisKKyAgICBmb3IgKGF1dG8mIGNvbGxlY3Rpb24g
OiBtX2NhY2hlZENvbGxlY3Rpb25zKQorICAgICAgICBjb2xsZWN0aW9uLnZhbHVlLT5pbnZhbGlk
YXRlQ2FjaGVGb3JBdHRyaWJ1dGUoYXR0ck5hbWUpOwogfQogCiB2b2lkIE5vZGU6OmdldFN1YnJl
c291cmNlVVJMcyhMaXN0SGFzaFNldDxVUkw+JiB1cmxzKSBjb25zdApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvZG9tL05vZGUuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmgKaW5kZXgg
MjU4NmE0N2I4MzQwYjc3ZjBkZjRkMWYxYzE1ODI3YTMxMzc3NzYwMi4uZThmZmZlNmY2ZjJmMmRl
MTIyMGI4Y2ViZDA5MjgxMmFhOWE5MmQ0NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9t
L05vZGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5oCkBAIC00NzQsNyArNDc0LDgg
QEAgcHVibGljOgogICAgIHZvaWQgc2hvd1RyZWVGb3JUaGlzQWNyb3NzRnJhbWUoKSBjb25zdDsK
ICNlbmRpZiAvLyBFTkFCTEUoVFJFRV9ERUJVR0dJTkcpCiAKLSAgICB2b2lkIGludmFsaWRhdGVO
b2RlTGlzdEFuZENvbGxlY3Rpb25DYWNoZXNJbkFuY2VzdG9ycyhjb25zdCBRdWFsaWZpZWROYW1l
KiBhdHRyTmFtZSA9IG51bGxwdHIsIEVsZW1lbnQqIGF0dHJpYnV0ZU93bmVyRWxlbWVudCA9IG51
bGxwdHIpOworICAgIHZvaWQgaW52YWxpZGF0ZU5vZGVMaXN0QW5kQ29sbGVjdGlvbkNhY2hlc0lu
QW5jZXN0b3JzKCk7CisgICAgdm9pZCBpbnZhbGlkYXRlTm9kZUxpc3RBbmRDb2xsZWN0aW9uQ2Fj
aGVzSW5BbmNlc3RvcnNGb3JBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUp
OwogICAgIE5vZGVMaXN0c05vZGVEYXRhKiBub2RlTGlzdHMoKTsKICAgICB2b2lkIGNsZWFyTm9k
ZUxpc3RzKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlUmFyZURhdGEu
aCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlUmFyZURhdGEuaAppbmRleCA0MTUzMzUzZmY5OGY1
MTY5NTllZjlhM2MzNTI2Zjc3OGZhMWQyMjQzLi44NWQ1MWNjMGUzNzFiYWFjMWIwNjY1YjVhNjcx
YWM5YTkyZWRhZjkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZVJhcmVEYXRh
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGVSYXJlRGF0YS5oCkBAIC0xOTUsNyArMTk1
LDggQEAgcHVibGljOgogICAgICAgICBtX2NhY2hlZENvbGxlY3Rpb25zLnJlbW92ZShuYW1lZENv
bGxlY3Rpb25LZXkoY29sbGVjdGlvbi0+dHlwZSgpLCBuYW1lKSk7CiAgICAgfQogCi0gICAgdm9p
ZCBpbnZhbGlkYXRlQ2FjaGVzKGNvbnN0IFF1YWxpZmllZE5hbWUqIGF0dHJOYW1lID0gbnVsbHB0
cik7CisgICAgdm9pZCBpbnZhbGlkYXRlQ2FjaGVzKCk7CisgICAgdm9pZCBpbnZhbGlkYXRlQ2Fj
aGVzRm9yQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKTsKIAogICAgIHZv
aWQgYWRvcHRUcmVlU2NvcGUoKQogICAgIHsKQEAgLTIxMCwxNSArMjExLDE1IEBAIHB1YmxpYzoK
ICAgICAgICAgfQogCiAgICAgICAgIGZvciAoYXV0byYgY2FjaGUgOiBtX2F0b21pY05hbWVDYWNo
ZXMudmFsdWVzKCkpCi0gICAgICAgICAgICBjYWNoZS0+aW52YWxpZGF0ZUNhY2hlKG9sZERvY3Vt
ZW50KTsKKyAgICAgICAgICAgIGNhY2hlLT5pbnZhbGlkYXRlQ2FjaGVGb3JEb2N1bWVudChvbGRE
b2N1bWVudCk7CiAKICAgICAgICAgZm9yIChhdXRvJiBsaXN0IDogbV90YWdDb2xsZWN0aW9uTlND
YWNoZS52YWx1ZXMoKSkgewogICAgICAgICAgICAgQVNTRVJUKCFsaXN0LT5pc1Jvb3RlZEF0RG9j
dW1lbnQoKSk7Ci0gICAgICAgICAgICBsaXN0LT5pbnZhbGlkYXRlQ2FjaGUob2xkRG9jdW1lbnQp
OworICAgICAgICAgICAgbGlzdC0+aW52YWxpZGF0ZUNhY2hlRm9yRG9jdW1lbnQob2xkRG9jdW1l
bnQpOwogICAgICAgICB9CiAKICAgICAgICAgZm9yIChhdXRvJiBjb2xsZWN0aW9uIDogbV9jYWNo
ZWRDb2xsZWN0aW9ucy52YWx1ZXMoKSkKLSAgICAgICAgICAgIGNvbGxlY3Rpb24tPmludmFsaWRh
dGVDYWNoZShvbGREb2N1bWVudCk7CisgICAgICAgICAgICBjb2xsZWN0aW9uLT5pbnZhbGlkYXRl
Q2FjaGVGb3JEb2N1bWVudChvbGREb2N1bWVudCk7CiAgICAgfQogCiBwcml2YXRlOgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9DYWNoZWRIVE1MQ29sbGVjdGlvbi5oIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9DYWNoZWRIVE1MQ29sbGVjdGlvbi5oCmluZGV4IDNmYjQ3NTI3OTc3N2Rh
ODk0ZTNkZTkwOTA0YTQxYjVlMzM4MGYyMzkuLjAwYmIyNjNiNWQwYWE5Y2UxM2Y5OTdiOTg4M2Q5
YzZhZjRkYjY4M2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvQ2FjaGVkSFRNTENv
bGxlY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0NhY2hlZEhUTUxDb2xsZWN0aW9u
LmgKQEAgLTUzLDcgKzUzLDcgQEAgcHVibGljOgogICAgIGJvb2wgY29sbGVjdGlvbkNhblRyYXZl
cnNlQmFja3dhcmQoKSBjb25zdCB7IHJldHVybiB0cmF2ZXJzYWxUeXBlICE9IENvbGxlY3Rpb25U
cmF2ZXJzYWxUeXBlOjpDdXN0b21Gb3J3YXJkT25seTsgfQogICAgIHZvaWQgd2lsbFZhbGlkYXRl
SW5kZXhDYWNoZSgpIGNvbnN0IHsgZG9jdW1lbnQoKS5yZWdpc3RlckNvbGxlY3Rpb24oY29uc3Rf
Y2FzdDxDYWNoZWRIVE1MQ29sbGVjdGlvbjxIVE1MQ29sbGVjdGlvbkNsYXNzLCB0cmF2ZXJzYWxU
eXBlPiY+KCp0aGlzKSk7IH0KIAotICAgIHZvaWQgaW52YWxpZGF0ZUNhY2hlKERvY3VtZW50Jikg
b3ZlcnJpZGU7CisgICAgdm9pZCBpbnZhbGlkYXRlQ2FjaGVGb3JEb2N1bWVudChEb2N1bWVudCYp
IG92ZXJyaWRlOwogCiAgICAgYm9vbCBlbGVtZW50TWF0Y2hlcyhFbGVtZW50JikgY29uc3Q7CiAK
QEAgLTc4LDkgKzc4LDkgQEAgQ2FjaGVkSFRNTENvbGxlY3Rpb248SFRNTENvbGxlY3Rpb25DbGFz
cywgdHJhdmVyc2FsVHlwZT46On5DYWNoZWRIVE1MQ29sbGVjdGlvbigKIH0KIAogdGVtcGxhdGUg
PHR5cGVuYW1lIEhUTUxDb2xsZWN0aW9uQ2xhc3MsIENvbGxlY3Rpb25UcmF2ZXJzYWxUeXBlIHRy
YXZlcnNhbFR5cGU+Ci12b2lkIENhY2hlZEhUTUxDb2xsZWN0aW9uPEhUTUxDb2xsZWN0aW9uQ2xh
c3MsIHRyYXZlcnNhbFR5cGU+OjppbnZhbGlkYXRlQ2FjaGUoRG9jdW1lbnQmIGRvY3VtZW50KQor
dm9pZCBDYWNoZWRIVE1MQ29sbGVjdGlvbjxIVE1MQ29sbGVjdGlvbkNsYXNzLCB0cmF2ZXJzYWxU
eXBlPjo6aW52YWxpZGF0ZUNhY2hlRm9yRG9jdW1lbnQoRG9jdW1lbnQmIGRvY3VtZW50KQogewot
ICAgIEhUTUxDb2xsZWN0aW9uOjppbnZhbGlkYXRlQ2FjaGUoZG9jdW1lbnQpOworICAgIEhUTUxD
b2xsZWN0aW9uOjppbnZhbGlkYXRlQ2FjaGVGb3JEb2N1bWVudChkb2N1bWVudCk7CiAgICAgaWYg
KG1faW5kZXhDYWNoZS5oYXNWYWxpZENhY2hlKGNvbGxlY3Rpb24oKSkpIHsKICAgICAgICAgZG9j
dW1lbnQudW5yZWdpc3RlckNvbGxlY3Rpb24oKnRoaXMpOwogICAgICAgICBtX2luZGV4Q2FjaGUu
aW52YWxpZGF0ZShjb2xsZWN0aW9uKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MQ29sbGVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxDb2xsZWN0aW9u
LmNwcAppbmRleCA4YzE3MzhhZTM1NWI5NzdhYWFjYjFkNmU2Y2JjODg2YzliYTI4NDgwLi5lZmE1
M2UzZGZiNmM5ODExNjRlNjJlNjBhNTg0OTRjMjZlZjIyNjFkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxDb2xsZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxDb2xsZWN0aW9uLmNwcApAQCAtMTM2LDcgKzEzNiw3IEBAIEhUTUxDb2xsZWN0aW9uOjp+
SFRNTENvbGxlY3Rpb24oKQogICAgIH0KIH0KIAotdm9pZCBIVE1MQ29sbGVjdGlvbjo6aW52YWxp
ZGF0ZUNhY2hlKERvY3VtZW50JiBkb2N1bWVudCkKK3ZvaWQgSFRNTENvbGxlY3Rpb246OmludmFs
aWRhdGVDYWNoZUZvckRvY3VtZW50KERvY3VtZW50JiBkb2N1bWVudCkKIHsKICAgICBpZiAoaGFz
TmFtZWRFbGVtZW50Q2FjaGUoKSkKICAgICAgICAgaW52YWxpZGF0ZU5hbWVkRWxlbWVudENhY2hl
KGRvY3VtZW50KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENvbGxlY3Rp
b24uaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENvbGxlY3Rpb24uaAppbmRleCA2NDNhMmU3
MDJjNTkxM2YxZWUzNmQ5YTA5NDcyMDYzOTY1YjAwMjVhLi5jMWNiNGNiNDI5NmE3NGIwNTFjZWU2
NzJhMGExZjk0NDM0MTk1MzBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxD
b2xsZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ29sbGVjdGlvbi5oCkBA
IC03OSw4ICs3OSw5IEBAIHB1YmxpYzoKICAgICBDb2xsZWN0aW9uVHlwZSB0eXBlKCkgY29uc3Q7
CiAgICAgQ29udGFpbmVyTm9kZSYgb3duZXJOb2RlKCkgY29uc3Q7CiAgICAgQ29udGFpbmVyTm9k
ZSYgcm9vdE5vZGUoKSBjb25zdDsKLSAgICB2b2lkIGludmFsaWRhdGVDYWNoZUZvckF0dHJpYnV0
ZShjb25zdCBRdWFsaWZpZWROYW1lKiBhdHRyaWJ1dGVOYW1lKTsKLSAgICB2aXJ0dWFsIHZvaWQg
aW52YWxpZGF0ZUNhY2hlKERvY3VtZW50Jik7CisgICAgdm9pZCBpbnZhbGlkYXRlQ2FjaGVGb3JB
dHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZSk7CisgICAgdmlydHVh
bCB2b2lkIGludmFsaWRhdGVDYWNoZUZvckRvY3VtZW50KERvY3VtZW50Jik7CisgICAgdm9pZCBp
bnZhbGlkYXRlQ2FjaGUoKSB7IGludmFsaWRhdGVDYWNoZUZvckRvY3VtZW50KGRvY3VtZW50KCkp
OyB9CiAKICAgICBib29sIGhhc05hbWVkRWxlbWVudENhY2hlKCkgY29uc3Q7CiAKQEAgLTE5NSwx
MSArMTk2LDExIEBAIGlubGluZSBEb2N1bWVudCYgSFRNTENvbGxlY3Rpb246OmRvY3VtZW50KCkg
Y29uc3QKICAgICByZXR1cm4gbV9vd25lck5vZGUtPmRvY3VtZW50KCk7CiB9CiAKLWlubGluZSB2
b2lkIEhUTUxDb2xsZWN0aW9uOjppbnZhbGlkYXRlQ2FjaGVGb3JBdHRyaWJ1dGUoY29uc3QgUXVh
bGlmaWVkTmFtZSogYXR0cmlidXRlTmFtZSkKK2lubGluZSB2b2lkIEhUTUxDb2xsZWN0aW9uOjpp
bnZhbGlkYXRlQ2FjaGVGb3JBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRl
TmFtZSkKIHsKLSAgICBpZiAoIWF0dHJpYnV0ZU5hbWUgfHwgc2hvdWxkSW52YWxpZGF0ZVR5cGVP
bkF0dHJpYnV0ZUNoYW5nZShpbnZhbGlkYXRpb25UeXBlKCksICphdHRyaWJ1dGVOYW1lKSkKLSAg
ICAgICAgaW52YWxpZGF0ZUNhY2hlKGRvY3VtZW50KCkpOwotICAgIGVsc2UgaWYgKGhhc05hbWVk
RWxlbWVudENhY2hlKCkgJiYgKCphdHRyaWJ1dGVOYW1lID09IEhUTUxOYW1lczo6aWRBdHRyIHx8
ICphdHRyaWJ1dGVOYW1lID09IEhUTUxOYW1lczo6bmFtZUF0dHIpKQorICAgIGlmIChzaG91bGRJ
bnZhbGlkYXRlVHlwZU9uQXR0cmlidXRlQ2hhbmdlKGludmFsaWRhdGlvblR5cGUoKSwgYXR0cmli
dXRlTmFtZSkpCisgICAgICAgIGludmFsaWRhdGVDYWNoZSgpOworICAgIGVsc2UgaWYgKGhhc05h
bWVkRWxlbWVudENhY2hlKCkgJiYgKGF0dHJpYnV0ZU5hbWUgPT0gSFRNTE5hbWVzOjppZEF0dHIg
fHwgYXR0cmlidXRlTmFtZSA9PSBIVE1MTmFtZXM6Om5hbWVBdHRyKSkKICAgICAgICAgaW52YWxp
ZGF0ZU5hbWVkRWxlbWVudENhY2hlKGRvY3VtZW50KCkpOwogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb24uY3BwCmluZGV4IDJiNTQwOTM2
N2Y5NjQ5NGZjNDIzMDMwZDIwZGI5OTk2YzBjYTIzNmYuLjhiODRjMjg2ODAxYzllY2E4NWU3NzUz
OTYzNTQwZmM2N2NiYTdkNmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZv
cm1Db250cm9sc0NvbGxlY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZv
cm1Db250cm9sc0NvbGxlY3Rpb24uY3BwCkBAIC0xNDEsOSArMTQxLDkgQEAgdm9pZCBIVE1MRm9y
bUNvbnRyb2xzQ29sbGVjdGlvbjo6dXBkYXRlTmFtZWRFbGVtZW50Q2FjaGUoKSBjb25zdAogICAg
IHNldE5hbWVkSXRlbUNhY2hlKFdURk1vdmUoY2FjaGUpKTsKIH0KIAotdm9pZCBIVE1MRm9ybUNv
bnRyb2xzQ29sbGVjdGlvbjo6aW52YWxpZGF0ZUNhY2hlKERvY3VtZW50JiBkb2N1bWVudCkKK3Zv
aWQgSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb246OmludmFsaWRhdGVDYWNoZUZvckRvY3VtZW50
KERvY3VtZW50JiBkb2N1bWVudCkKIHsKLSAgICBDYWNoZWRIVE1MQ29sbGVjdGlvbjxIVE1MRm9y
bUNvbnRyb2xzQ29sbGVjdGlvbiwgQ29sbGVjdGlvblR5cGVUcmFpdHM8Rm9ybUNvbnRyb2xzPjo6
dHJhdmVyc2FsVHlwZT46OmludmFsaWRhdGVDYWNoZShkb2N1bWVudCk7CisgICAgQ2FjaGVkSFRN
TENvbGxlY3Rpb248SFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb24sIENvbGxlY3Rpb25UeXBlVHJh
aXRzPEZvcm1Db250cm9scz46OnRyYXZlcnNhbFR5cGU+OjppbnZhbGlkYXRlQ2FjaGVGb3JEb2N1
bWVudChkb2N1bWVudCk7CiAgICAgbV9jYWNoZWRFbGVtZW50ID0gbnVsbHB0cjsKICAgICBtX2Nh
Y2hlZEVsZW1lbnRPZmZzZXRJbkFycmF5ID0gMDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb24uaCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb24uaAppbmRleCBkYzE2NjM1OGU0OGNiNTlkZTRm
ZWQwMWE5YmJhODRhMDdiNTE0ZTRlLi5jMjFmMTJkODNlYjg2NDZjMTQ3OWZiYTU2ZjA2ZDBkOTBl
NWExYTMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29udHJvbHND
b2xsZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xzQ29s
bGVjdGlvbi5oCkBAIC00Niw3ICs0Niw3IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgZXhwbGlj
aXQgSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb24oQ29udGFpbmVyTm9kZSYpOwogCi0gICAgdm9p
ZCBpbnZhbGlkYXRlQ2FjaGUoRG9jdW1lbnQmKSBvdmVycmlkZTsKKyAgICB2b2lkIGludmFsaWRh
dGVDYWNoZUZvckRvY3VtZW50KERvY3VtZW50Jikgb3ZlcnJpZGU7CiAgICAgdm9pZCB1cGRhdGVO
YW1lZEVsZW1lbnRDYWNoZSgpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgY29uc3QgVmVjdG9yPEZv
cm1Bc3NvY2lhdGVkRWxlbWVudCo+JiBmb3JtQ29udHJvbEVsZW1lbnRzKCkgY29uc3Q7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTZWxlY3RFbGVtZW50LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTFNlbGVjdEVsZW1lbnQuY3BwCmluZGV4IDg0ZjVmY2E5ZWZlMmMw
MDdkOWE1ZWQ2ZTY5YmVjZTJhYTk5Njk5MjUuLmYxOTc1NmIwYzk4NDE3Mjg3YmZhOWI1MDVhZDll
ZjQ4YzRlYTUwMTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFNlbGVjdEVs
ZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFNlbGVjdEVsZW1lbnQuY3Bw
CkBAIC03NDEsNyArNzQxLDcgQEAgY29uc3QgVmVjdG9yPEhUTUxFbGVtZW50Kj4mIEhUTUxTZWxl
Y3RFbGVtZW50OjpsaXN0SXRlbXMoKSBjb25zdAogdm9pZCBIVE1MU2VsZWN0RWxlbWVudDo6aW52
YWxpZGF0ZVNlbGVjdGVkSXRlbXMoKQogewogICAgIGlmIChIVE1MQ29sbGVjdGlvbiogY29sbGVj
dGlvbiA9IGNhY2hlZEhUTUxDb2xsZWN0aW9uKFNlbGVjdGVkT3B0aW9ucykpCi0gICAgICAgIGNv
bGxlY3Rpb24tPmludmFsaWRhdGVDYWNoZShkb2N1bWVudCgpKTsKKyAgICAgICAgY29sbGVjdGlv
bi0+aW52YWxpZGF0ZUNhY2hlKCk7CiB9CiAKIHZvaWQgSFRNTFNlbGVjdEVsZW1lbnQ6OnNldFJl
Y2FsY0xpc3RJdGVtcygpCkBAIC03NTMsNyArNzUzLDcgQEAgdm9pZCBIVE1MU2VsZWN0RWxlbWVu
dDo6c2V0UmVjYWxjTGlzdEl0ZW1zKCkKICAgICBpbnZhbGlkYXRlU3R5bGVGb3JTdWJ0cmVlKCk7
CiAgICAgaWYgKCFpc0Nvbm5lY3RlZCgpKSB7CiAgICAgICAgIGlmIChIVE1MQ29sbGVjdGlvbiog
Y29sbGVjdGlvbiA9IGNhY2hlZEhUTUxDb2xsZWN0aW9uKFNlbGVjdE9wdGlvbnMpKQotICAgICAg
ICAgICAgY29sbGVjdGlvbi0+aW52YWxpZGF0ZUNhY2hlKGRvY3VtZW50KCkpOworICAgICAgICAg
ICAgY29sbGVjdGlvbi0+aW52YWxpZGF0ZUNhY2hlKCk7CiAgICAgfQogICAgIGlmICghaXNDb25u
ZWN0ZWQoKSkKICAgICAgICAgaW52YWxpZGF0ZVNlbGVjdGVkSXRlbXMoKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvbWFjL0RPTS9ET01BdHRyLm1tIGIvU291cmNlL1dlYktpdC9tYWMvRE9N
L0RPTUF0dHIubW0KaW5kZXggMDc3NDEyN2Y4ZmQ5MTk3MTUwYjJkYmU1NDk3MjczOTE4OWJlMWQy
Ni4uNDM5MjNkNzJiZDk1ZmZmNzA2NzA2ZmJjYjMwZjc3ZmM5ZjlkNmVjZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9tYWMvRE9NL0RPTUF0dHIubW0KKysrIGIvU291cmNlL1dlYktpdC9tYWMv
RE9NL0RPTUF0dHIubW0KQEAgLTU4LDEzICs1OCwxMyBAQCAtIChCT09MKXNwZWNpZmllZAogLSAo
TlNTdHJpbmcgKil2YWx1ZQogewogICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBz
dGF0ZTsKLSAgICByZXR1cm4gSU1QTC0+dmFsdWVGb3JCaW5kaW5ncygpOworICAgIHJldHVybiBJ
TVBMLT52YWx1ZSgpOwogfQogCiAtICh2b2lkKXNldFZhbHVlOihOU1N0cmluZyAqKW5ld1ZhbHVl
CiB7CiAgICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwotICAgIElNUEwt
PnNldFZhbHVlRm9yQmluZGluZ3MobmV3VmFsdWUpOworICAgIElNUEwtPnNldFZhbHVlKG5ld1Zh
bHVlKTsKIH0KIAogLSAoRE9NRWxlbWVudCAqKW93bmVyRWxlbWVudApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRE
T01BdHRyLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJ
L2d0ay9ET00vV2ViS2l0RE9NQXR0ci5jcHAKaW5kZXggM2JmOGViYTgyNGFkY2VlMTMwYmI2Y2Ex
N2RkOTFmYWNmOTk5NDc5Ny4uMDJkOTU2MzVlMzIwYmM3NDllMjA2N2RkNDlhYzk0OGNlNjVmMzI0
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9B
UEkvZ3RrL0RPTS9XZWJLaXRET01BdHRyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dlYktpdERPTUF0dHIuY3BwCkBAIC0yNTcs
NyArMjU3LDcgQEAgZ2NoYXIqIHdlYmtpdF9kb21fYXR0cl9nZXRfdmFsdWUoV2ViS2l0RE9NQXR0
ciogc2VsZikKICAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7CiAgICAg
Z19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0RPTV9JU19BVFRSKHNlbGYpLCAwKTsKICAgICBX
ZWJDb3JlOjpBdHRyKiBpdGVtID0gV2ViS2l0Ojpjb3JlKHNlbGYpOwotICAgIGdjaGFyKiByZXN1
bHQgPSBjb252ZXJ0VG9VVEY4U3RyaW5nKGl0ZW0tPnZhbHVlRm9yQmluZGluZ3MoKSk7CisgICAg
Z2NoYXIqIHJlc3VsdCA9IGNvbnZlcnRUb1VURjhTdHJpbmcoaXRlbS0+dmFsdWUoKSk7CiAgICAg
cmV0dXJuIHJlc3VsdDsKIH0KIApAQCAtMjY5LDcgKzI2OSw3IEBAIHZvaWQgd2Via2l0X2RvbV9h
dHRyX3NldF92YWx1ZShXZWJLaXRET01BdHRyKiBzZWxmLCBjb25zdCBnY2hhciogdmFsdWUsIEdF
cnJvcioqCiAgICAgVU5VU0VEX1BBUkFNKGVycm9yKTsKICAgICBXZWJDb3JlOjpBdHRyKiBpdGVt
ID0gV2ViS2l0Ojpjb3JlKHNlbGYpOwogICAgIFdURjo6U3RyaW5nIGNvbnZlcnRlZFZhbHVlID0g
V1RGOjpTdHJpbmc6OmZyb21VVEY4KHZhbHVlKTsKLSAgICBpdGVtLT5zZXRWYWx1ZUZvckJpbmRp
bmdzKGNvbnZlcnRlZFZhbHVlKTsKKyAgICBpdGVtLT5zZXRWYWx1ZShjb252ZXJ0ZWRWYWx1ZSk7
CiB9CiAKIFdlYktpdERPTUVsZW1lbnQqIHdlYmtpdF9kb21fYXR0cl9nZXRfb3duZXJfZWxlbWVu
dChXZWJLaXRET01BdHRyKiBzZWxmKQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>