<?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>137184</bug_id>
          
          <creation_ts>2014-09-27 15:43:58 -0700</creation_ts>
          <short_desc>Use the new is&lt;&gt;() / downcast&lt;&gt;() for more Node subclasses</short_desc>
          <delta_ts>2014-09-27 22:21:40 -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>528+ (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>137056</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Chris Dumez">cdumez</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>benjamin</cc>
    
    <cc>commit-queue</cc>
    
    <cc>kling</cc>
    
    <cc>rniwa</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1037712</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2014-09-27 15:43:58 -0700</bug_when>
    <thetext>Use the new is&lt;&gt;() / downcast&lt;&gt;() for more Node subclasses</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1037713</commentid>
    <comment_count>1</comment_count>
      <attachid>238792</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2014-09-27 15:47:13 -0700</bug_when>
    <thetext>Created attachment 238792
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1037721</commentid>
    <comment_count>2</comment_count>
      <attachid>238792</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2014-09-27 19:46:46 -0700</bug_when>
    <thetext>Comment on attachment 238792
Patch

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

&gt; Source/WebCore/dom/Range.cpp:665
&gt;      case Node::PROCESSING_INSTRUCTION_NODE:
&gt; -        return toProcessingInstruction(node)-&gt;data().length();
&gt; +        return downcast&lt;ProcessingInstruction&gt;(*node).data().length();

Since ProcessingInstruction inherits from CharacterData, can&apos;t we combine this with the case above??

&gt; Source/WebCore/dom/Range.cpp:1163
&gt;          case Node::PROCESSING_INSTRUCTION_NODE:
&gt; -            if (static_cast&lt;unsigned&gt;(offset) &gt; toProcessingInstruction(n)-&gt;data().length())
&gt; +            if (static_cast&lt;unsigned&gt;(offset) &gt; downcast&lt;ProcessingInstruction&gt;(*n).data().length())

Ditto about merging this case with CharacterData.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1037727</commentid>
    <comment_count>3</comment_count>
      <attachid>238792</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2014-09-27 20:43:08 -0700</bug_when>
    <thetext>Comment on attachment 238792
Patch

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

&gt;&gt; Source/WebCore/dom/Range.cpp:665
&gt;&gt; +        return downcast&lt;ProcessingInstruction&gt;(*node).data().length();
&gt; 
&gt; Since ProcessingInstruction inherits from CharacterData, can&apos;t we combine this with the case above??

Nice catch, I don&apos;t see why not.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1037728</commentid>
    <comment_count>4</comment_count>
      <attachid>238797</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2014-09-27 20:44:22 -0700</bug_when>
    <thetext>Created attachment 238797
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1037741</commentid>
    <comment_count>5</comment_count>
      <attachid>238801</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2014-09-27 21:39:07 -0700</bug_when>
    <thetext>Created attachment 238801
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1037744</commentid>
    <comment_count>6</comment_count>
      <attachid>238801</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-09-27 22:21:36 -0700</bug_when>
    <thetext>Comment on attachment 238801
Patch

Clearing flags on attachment: 238801

Committed r174039: &lt;http://trac.webkit.org/changeset/174039&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1037745</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-09-27 22:21:40 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>238792</attachid>
            <date>2014-09-27 15:47:13 -0700</date>
            <delta_ts>2014-09-27 20:44:17 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-137184-20140927154713.patch</filename>
            <type>text/plain</type>
            <size>28882</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTc0MDM2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggM2NkMjY3YmE3YTQwMjc1
MzFkMjQ3MDEyNzQzNDk4OTMwODk4NWYwMi4uZDM4YmJkYTlmYjI0M2VlMjQ1YzY1ODkwMzkyNWFk
NjQxYTQ3NzU0MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY3IEBACisyMDE0LTA5LTI3ICBDaHJp
c3RvcGhlIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBVc2UgdGhlIG5ldyBp
czw+KCkgLyBkb3duY2FzdDw+KCkgZm9yIG1vcmUgTm9kZSBzdWJjbGFzc2VzCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzcxODQKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVc2UgdGhlIG5ldyBpczw+KCkg
LyBkb3duY2FzdDw+KCkgZm9yIG1vcmUgTm9kZSBzdWJjbGFzc2VzOgorICAgICAgICBDREFUQVNl
Y3Rpb24sIENoYXJhY3RlckRhdGEsIENvbW1lbnQsIERvY3VtZW50VHlwZSwKKyAgICAgICAgUHJv
Y2Vzc2luZ0luc3RydWN0aW9uLCBhbmQgUHNldWRvRWxlbWVudC4KKworICAgICAgICBObyBuZXcg
dGVzdHMsIG5vIGJlaGF2aW9yIGNoYW5nZS4KKworICAgICAgICAqIGRvbS9DREFUQVNlY3Rpb24u
aDoKKyAgICAgICAgKFdlYkNvcmU6OmlzQ0RBVEFTZWN0aW9uKToKKyAgICAgICAgKiBkb20vQ2hh
cmFjdGVyRGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDaGFyYWN0ZXJEYXRhOjpzZXREYXRh
QW5kVXBkYXRlKToKKyAgICAgICAgKiBkb20vQ2hhcmFjdGVyRGF0YS5oOgorICAgICAgICAoV2Vi
Q29yZTo6aXNDaGFyYWN0ZXJEYXRhKToKKyAgICAgICAgKiBkb20vQ29tbWVudC5oOgorICAgICAg
ICAoV2ViQ29yZTo6aXNDb21tZW50KToKKyAgICAgICAgKiBkb20vRG9jdW1lbnRTdHlsZVNoZWV0
Q29sbGVjdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudFN0eWxlU2hlZXRDb2xs
ZWN0aW9uOjpjb2xsZWN0QWN0aXZlU3R5bGVTaGVldHMpOgorICAgICAgICAqIGRvbS9Eb2N1bWVu
dFR5cGUuaDoKKyAgICAgICAgKFdlYkNvcmU6OmlzRG9jdW1lbnRUeXBlKToKKyAgICAgICAgKiBk
b20vRXZlbnREaXNwYXRjaGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmV2ZW50VGFyZ2V0UmVz
cGVjdGluZ1RhcmdldFJ1bGVzKToKKyAgICAgICAgKFdlYkNvcmU6Om5vZGVPckhvc3RJZlBzZXVk
b0VsZW1lbnQpOgorICAgICAgICAqIGRvbS9Ob2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Om1h
cmtBbmNlc3RvcnNXaXRoQ2hpbGROZWVkc1N0eWxlUmVjYWxjKToKKyAgICAgICAgKFdlYkNvcmU6
Ok5vZGU6OnBzZXVkb0F3YXJlUHJldmlvdXNTaWJsaW5nKToKKyAgICAgICAgKFdlYkNvcmU6Ok5v
ZGU6OnBzZXVkb0F3YXJlTmV4dFNpYmxpbmcpOgorICAgICAgICAqIGRvbS9Ob2RlVHJhdmVyc2Fs
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGVUcmF2ZXJzYWw6OnByZXZpb3VzSW5jbHVkaW5n
UHNldWRvKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGVUcmF2ZXJzYWw6Om5leHRJbmNsdWRpbmdQ
c2V1ZG8pOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZVRyYXZlcnNhbDo6bmV4dEluY2x1ZGluZ1Bz
ZXVkb1NraXBwaW5nQ2hpbGRyZW4pOgorICAgICAgICAqIGRvbS9Qcm9jZXNzaW5nSW5zdHJ1Y3Rp
b24uaDoKKyAgICAgICAgKFdlYkNvcmU6OmlzUHJvY2Vzc2luZ0luc3RydWN0aW9uKToKKyAgICAg
ICAgKiBkb20vUHNldWRvRWxlbWVudC5oOgorICAgICAgICAoV2ViQ29yZTo6aXNQc2V1ZG9FbGVt
ZW50KToKKyAgICAgICAgKiBkb20vUmFuZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6bGVuZ3Ro
T2ZDb250ZW50c0luTm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpSYW5nZTo6cHJvY2Vzc0NvbnRl
bnRzQmV0d2Vlbk9mZnNldHMpOgorICAgICAgICAoV2ViQ29yZTo6UmFuZ2U6OmNoZWNrTm9kZVdP
ZmZzZXQpOgorICAgICAgICAqIGVkaXRpbmcvRWRpdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkVkaXRvcjo6c2hvdWxkSW5zZXJ0RnJhZ21lbnQpOgorICAgICAgICAqIGVkaXRpbmcvTWFya3Vw
QWNjdW11bGF0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWFya3VwQWNjdW11bGF0b3I6OmFw
cGVuZFN0YXJ0TWFya3VwKToKKyAgICAgICAgKiBlZGl0aW5nL2NvY29hL0hUTUxDb252ZXJ0ZXIu
bW06CisgICAgICAgIChIVE1MQ29udmVydGVyOjpfdHJhdmVyc2VOb2RlKToKKyAgICAgICAgKiBp
bnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVj
dG9yRE9NQWdlbnQ6OmJ1aWxkT2JqZWN0Rm9yTm9kZSk6CisgICAgICAgICogaW5zcGVjdG9yL0lu
c3BlY3RvckxheWVyVHJlZUFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckxh
eWVyVHJlZUFnZW50OjpidWlsZE9iamVjdEZvckxheWVyKToKKyAgICAgICAgKiByZW5kZXJpbmcv
SGl0VGVzdFJlc3VsdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIaXRUZXN0UmVzdWx0OjpzZXRJ
bm5lck5vZGUpOgorICAgICAgICAoV2ViQ29yZTo6SGl0VGVzdFJlc3VsdDo6c2V0SW5uZXJOb25T
aGFyZWROb2RlKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGlzdEl0ZW0uY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6ZW5jbG9zaW5nTGlzdCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRl
ck9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJPYmplY3Q6OmdlbmVyYXRpbmdQ
c2V1ZG9Ib3N0RWxlbWVudCk6CisgICAgICAgICogeG1sL1hQYXRoRnVuY3Rpb25zLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlhQYXRoOjpleHBhbmRlZE5hbWVMb2NhbFBhcnQpOgorCiAyMDE0LTA5
LTI3ICBCZW5qYW1pbiBQb3VsYWluICA8YnBvdWxhaW5AYXBwbGUuY29tPgogCiAgICAgICAgIENo
YWluaW5nIG11bHRpcGxlIDpudGgtY2hpbGQoKSBkb2VzIG5vdCB3b3JrIHByb3Blcmx5CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ0RBVEFTZWN0aW9uLmggYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vQ0RBVEFTZWN0aW9uLmgKaW5kZXggYTkzZGM0OTZjOTlmZWUzM2JkMzE1ZjVmNTNiZDky
ZjliNmM4YzQxOS4uNmNkNGY2OGM2MGI5ZDY1ZTkzZGU3YTkxMTA4OTI3NmRhNjJlOTU5YSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0NEQVRBU2VjdGlvbi5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9DREFUQVNlY3Rpb24uaApAQCAtNDEsMTEgKzQxLDkgQEAgcHJpdmF0ZToKICAg
ICB2aXJ0dWFsIFBhc3NSZWZQdHI8VGV4dD4gdmlydHVhbENyZWF0ZShjb25zdCBTdHJpbmcmKSBv
dmVycmlkZTsKIH07CiAKLWlubGluZSBib29sIGlzQ0RBVEFTZWN0aW9uKGNvbnN0IE5vZGUmIG5v
ZGUpIHsgcmV0dXJuIG5vZGUubm9kZVR5cGUoKSA9PSBOb2RlOjpDREFUQV9TRUNUSU9OX05PREU7
IH0KLXZvaWQgaXNDREFUQVNlY3Rpb24oY29uc3QgQ0RBVEFTZWN0aW9uJik7IC8vIENhdGNoIHVu
bmVjZXNzYXJ5IHJ1bnRpbWUgY2hlY2sgb2YgdHlwZSBrbm93biBhdCBjb21waWxlIHRpbWUuCi12
b2lkIGlzQ0RBVEFTZWN0aW9uKGNvbnN0IENvbnRhaW5lck5vZGUmKTsgLy8gQ2F0Y2ggdW5uZWNl
c3NhcnkgcnVudGltZSBjaGVjayBvZiB0eXBlIGtub3duIGF0IGNvbXBpbGUgdGltZS4KLQotTk9E
RV9UWVBFX0NBU1RTKENEQVRBU2VjdGlvbikKK1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNfQkVHSU4o
Q0RBVEFTZWN0aW9uKQorICAgIHN0YXRpYyBib29sIGlzQ0RBVEFTZWN0aW9uKGNvbnN0IE5vZGUm
IG5vZGUpIHsgcmV0dXJuIG5vZGUubm9kZVR5cGUoKSA9PSBOb2RlOjpDREFUQV9TRUNUSU9OX05P
REU7IH0KK1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNfRU5EKCkKIAogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ2hhcmFjdGVyRGF0YS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vQ2hhcmFjdGVyRGF0YS5jcHAKaW5kZXggMzFmMGQ1ZmE1MWU5
ODdlNTY5MDg0YWZlYmVhYzllZDgxZjUxMjUxZS4uYzNjOWNjNDI2NDkyY2UxZmRkZjVmZGJjZGU0
ZGNjNWEyZTZmMDQzZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0NoYXJhY3RlckRh
dGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9DaGFyYWN0ZXJEYXRhLmNwcApAQCAtMTk4
LDggKzE5OCw4IEBAIHZvaWQgQ2hhcmFjdGVyRGF0YTo6c2V0RGF0YUFuZFVwZGF0ZShjb25zdCBT
dHJpbmcmIG5ld0RhdGEsIHVuc2lnbmVkIG9mZnNldE9mUmVwCiAgICAgaWYgKGlzVGV4dE5vZGUo
KSkKICAgICAgICAgU3R5bGU6OnVwZGF0ZVRleHRSZW5kZXJlckFmdGVyQ29udGVudENoYW5nZSgq
dG9UZXh0KHRoaXMpLCBvZmZzZXRPZlJlcGxhY2VkRGF0YSwgb2xkTGVuZ3RoKTsKIAotICAgIGlm
IChub2RlVHlwZSgpID09IFBST0NFU1NJTkdfSU5TVFJVQ1RJT05fTk9ERSkKLSAgICAgICAgdG9Q
cm9jZXNzaW5nSW5zdHJ1Y3Rpb24odGhpcyktPmNoZWNrU3R5bGVTaGVldCgpOworICAgIGlmIChp
czxQcm9jZXNzaW5nSW5zdHJ1Y3Rpb24+KHRoaXMpKQorICAgICAgICBkb3duY2FzdDxQcm9jZXNz
aW5nSW5zdHJ1Y3Rpb24+KCp0aGlzKS5jaGVja1N0eWxlU2hlZXQoKTsKIAogICAgIGlmIChkb2N1
bWVudCgpLmZyYW1lKCkpCiAgICAgICAgIGRvY3VtZW50KCkuZnJhbWUoKS0+c2VsZWN0aW9uKCku
dGV4dFdhc1JlcGxhY2VkKHRoaXMsIG9mZnNldE9mUmVwbGFjZWREYXRhLCBvbGRMZW5ndGgsIG5l
d0xlbmd0aCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ2hhcmFjdGVyRGF0YS5o
IGIvU291cmNlL1dlYkNvcmUvZG9tL0NoYXJhY3RlckRhdGEuaAppbmRleCBkZmI0YjIxZGRjOGYy
ODJhM2RlY2MyNmE3ZTU1YzE3NDAxMjcxNWZlLi4wMTZlZGQ1YWYyZmY4MTU0OTY3YWI2OTk5MDQ5
ZWRkN2RlYjE4NWRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ2hhcmFjdGVyRGF0
YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9DaGFyYWN0ZXJEYXRhLmgKQEAgLTc2LDExICs3
Niw5IEBAIHByaXZhdGU6CiAgICAgU3RyaW5nIG1fZGF0YTsKIH07CiAKLWlubGluZSBib29sIGlz
Q2hhcmFjdGVyRGF0YShjb25zdCBOb2RlJiBub2RlKSB7IHJldHVybiBub2RlLmlzQ2hhcmFjdGVy
RGF0YU5vZGUoKTsgfQotdm9pZCBpc0NoYXJhY3RlckRhdGEoY29uc3QgQ2hhcmFjdGVyRGF0YSYp
OyAvLyBDYXRjaCB1bm5lY2Vzc2FyeSBydW50aW1lIGNoZWNrIG9mIHR5cGUga25vd24gYXQgY29t
cGlsZSB0aW1lLgotdm9pZCBpc0NoYXJhY3RlckRhdGEoY29uc3QgQ29udGFpbmVyTm9kZSYpOyAv
LyBDYXRjaCB1bm5lY2Vzc2FyeSBydW50aW1lIGNoZWNrIG9mIHR5cGUga25vd24gYXQgY29tcGls
ZSB0aW1lLgotCi1OT0RFX1RZUEVfQ0FTVFMoQ2hhcmFjdGVyRGF0YSkKK1NQRUNJQUxJWkVfVFlQ
RV9UUkFJVFNfQkVHSU4oQ2hhcmFjdGVyRGF0YSkKKyAgICBzdGF0aWMgYm9vbCBpc0NoYXJhY3Rl
ckRhdGEoY29uc3QgTm9kZSYgbm9kZSkgeyByZXR1cm4gbm9kZS5pc0NoYXJhY3RlckRhdGFOb2Rl
KCk7IH0KK1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNfRU5EKCkKIAogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ29tbWVudC5oIGIvU291cmNl
L1dlYkNvcmUvZG9tL0NvbW1lbnQuaAppbmRleCA0ODcyOWI2YWMwNzQ2NTc1NzY3MWMwMzkzZTM4
OTg3YTBhYWRmMjRhLi4wYTdkZWNlYzlhOTJkYzlkZTMyYzcxMWE3MjRiYTEwY2U2YjcwYTI4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ29tbWVudC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9Db21tZW50LmgKQEAgLTQxLDExICs0MSw5IEBAIHByaXZhdGU6CiAgICAgdmlydHVh
bCBib29sIGNoaWxkVHlwZUFsbG93ZWQoTm9kZVR5cGUpIGNvbnN0IG92ZXJyaWRlOwogfTsKIAot
aW5saW5lIGJvb2wgaXNDb21tZW50KGNvbnN0IE5vZGUmIG5vZGUpIHsgcmV0dXJuIG5vZGUubm9k
ZVR5cGUoKSA9PSBOb2RlOjpDT01NRU5UX05PREU7IH0KLXZvaWQgaXNDb21tZW50KGNvbnN0IENv
bW1lbnQmKTsgLy8gQ2F0Y2ggdW5uZWNlc3NhcnkgcnVudGltZSBjaGVjayBvZiB0eXBlIGtub3du
IGF0IGNvbXBpbGUgdGltZS4KLXZvaWQgaXNDb21tZW50KGNvbnN0IENvbnRhaW5lck5vZGUmKTsg
Ly8gQ2F0Y2ggdW5uZWNlc3NhcnkgcnVudGltZSBjaGVjayBvZiB0eXBlIGtub3duIGF0IGNvbXBp
bGUgdGltZS4KLQotTk9ERV9UWVBFX0NBU1RTKENvbW1lbnQpCitTUEVDSUFMSVpFX1RZUEVfVFJB
SVRTX0JFR0lOKENvbW1lbnQpCisgICAgc3RhdGljIGJvb2wgaXNDb21tZW50KGNvbnN0IE5vZGUm
IG5vZGUpIHsgcmV0dXJuIG5vZGUubm9kZVR5cGUoKSA9PSBOb2RlOjpDT01NRU5UX05PREU7IH0K
K1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNfRU5EKCkKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRTdHlsZVNoZWV0Q29sbGVj
dGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRTdHlsZVNoZWV0Q29sbGVjdGlv
bi5jcHAKaW5kZXggMGMxZTkxYjQxZWZiZWE0ZjVkYWQ1YTk2ZDFiZWYzNTlkZTM0OGEwZi4uNzhi
MDg0N2UyMWI4NTQxMThmNGM2YWM5ZWNhMGZjNDJjZTg0YjA0ZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvZG9tL0RvY3VtZW50U3R5bGVTaGVldENvbGxlY3Rpb24uY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9Eb2N1bWVudFN0eWxlU2hlZXRDb2xsZWN0aW9uLmNwcApAQCAtMjY2LDE3
ICsyNjYsMTcgQEAgdm9pZCBEb2N1bWVudFN0eWxlU2hlZXRDb2xsZWN0aW9uOjpjb2xsZWN0QWN0
aXZlU3R5bGVTaGVldHMoVmVjdG9yPFJlZlB0cjxTdHlsZVMKIAogICAgIGZvciAoYXV0byYgbm9k
ZSA6IG1fc3R5bGVTaGVldENhbmRpZGF0ZU5vZGVzKSB7CiAgICAgICAgIFN0eWxlU2hlZXQqIHNo
ZWV0ID0gbnVsbHB0cjsKLSAgICAgICAgaWYgKG5vZGUtPm5vZGVUeXBlKCkgPT0gTm9kZTo6UFJP
Q0VTU0lOR19JTlNUUlVDVElPTl9OT0RFKSB7CisgICAgICAgIGlmIChpczxQcm9jZXNzaW5nSW5z
dHJ1Y3Rpb24+KG5vZGUpKSB7CiAgICAgICAgICAgICAvLyBQcm9jZXNzaW5nIGluc3RydWN0aW9u
IChYTUwgZG9jdW1lbnRzIG9ubHkpLgogICAgICAgICAgICAgLy8gV2UgZG9uJ3Qgc3VwcG9ydCBs
aW5raW5nIHRvIGVtYmVkZGVkIENTUyBzdHlsZXNoZWV0cywgc2VlIDxodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDkyODE+IGZvciBkaXNjdXNzaW9uLgotICAgICAgICAg
ICAgUHJvY2Vzc2luZ0luc3RydWN0aW9uKiBwaSA9IHRvUHJvY2Vzc2luZ0luc3RydWN0aW9uKG5v
ZGUpOwotICAgICAgICAgICAgc2hlZXQgPSBwaS0+c2hlZXQoKTsKKyAgICAgICAgICAgIFByb2Nl
c3NpbmdJbnN0cnVjdGlvbiYgcGkgPSBkb3duY2FzdDxQcm9jZXNzaW5nSW5zdHJ1Y3Rpb24+KCpu
b2RlKTsKKyAgICAgICAgICAgIHNoZWV0ID0gcGkuc2hlZXQoKTsKICNpZiBFTkFCTEUoWFNMVCkK
ICAgICAgICAgICAgIC8vIERvbid0IGFwcGx5IFhTTCB0cmFuc2Zvcm1zIHRvIGFscmVhZHkgdHJh
bnNmb3JtZWQgZG9jdW1lbnRzIC0tIDxyZGFyOi8vcHJvYmxlbS80MTMyODA2PgotICAgICAgICAg
ICAgaWYgKHBpLT5pc1hTTCgpICYmICFtX2RvY3VtZW50LnRyYW5zZm9ybVNvdXJjZURvY3VtZW50
KCkpIHsKKyAgICAgICAgICAgIGlmIChwaS5pc1hTTCgpICYmICFtX2RvY3VtZW50LnRyYW5zZm9y
bVNvdXJjZURvY3VtZW50KCkpIHsKICAgICAgICAgICAgICAgICAvLyBEb24ndCBhcHBseSBYU0wg
dHJhbnNmb3JtcyB1bnRpbCBsb2FkaW5nIGlzIGZpbmlzaGVkLgogICAgICAgICAgICAgICAgIGlm
ICghbV9kb2N1bWVudC5wYXJzaW5nKCkpCi0gICAgICAgICAgICAgICAgICAgIG1fZG9jdW1lbnQu
YXBwbHlYU0xUcmFuc2Zvcm0ocGkpOworICAgICAgICAgICAgICAgICAgICBtX2RvY3VtZW50LmFw
cGx5WFNMVHJhbnNmb3JtKCZwaSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAg
ICAgfQogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRUeXBl
LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRUeXBlLmgKaW5kZXggYWE2MzZkYWQxMWIz
NTNjYTE4MzkyMzVkNmE0YjAzYjUzZGNmOTQwZC4uZjRlZjc5Y2UwZWQ1YTQwNWRhZDI5NWZkMDM4
M2E0ZGUzOWRiMmZiMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50VHlw
ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudFR5cGUuaApAQCAtNjAsMTIgKzYw
LDkgQEAgcHJpdmF0ZToKICAgICBTdHJpbmcgbV9zdWJzZXQ7CiB9OwogCi1pbmxpbmUgYm9vbCBp
c0RvY3VtZW50VHlwZShjb25zdCBOb2RlJiBub2RlKQotewotICAgIHJldHVybiBub2RlLm5vZGVU
eXBlKCkgPT0gTm9kZTo6RE9DVU1FTlRfVFlQRV9OT0RFOwotfQotCi1OT0RFX1RZUEVfQ0FTVFMo
RG9jdW1lbnRUeXBlKQorU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19CRUdJTihEb2N1bWVudFR5cGUp
CisgICAgc3RhdGljIGJvb2wgaXNEb2N1bWVudFR5cGUoY29uc3QgTm9kZSYgbm9kZSkgeyByZXR1
cm4gbm9kZS5ub2RlVHlwZSgpID09IE5vZGU6OkRPQ1VNRU5UX1RZUEVfTk9ERTsgfQorU1BFQ0lB
TElaRV9UWVBFX1RSQUlUU19FTkQoKQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudERpc3BhdGNoZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvZG9tL0V2ZW50RGlzcGF0Y2hlci5jcHAKaW5kZXggYTBmOTYzMDI4OTliMTg4YjU4NGUx
OTkxMjVjYzAzZWYzMjBmNzA1MC4uZjc2YjkyNDNjMGJkOGFmNDljMzY1Njc0MjNiNmM3NDUyNTlk
ZjdkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50RGlzcGF0Y2hlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50RGlzcGF0Y2hlci5jcHAKQEAgLTIwNSw4ICsy
MDUsOCBAQCBwcml2YXRlOgogCiBpbmxpbmUgRXZlbnRUYXJnZXQmIGV2ZW50VGFyZ2V0UmVzcGVj
dGluZ1RhcmdldFJ1bGVzKE5vZGUmIHJlZmVyZW5jZU5vZGUpCiB7Ci0gICAgaWYgKHJlZmVyZW5j
ZU5vZGUuaXNQc2V1ZG9FbGVtZW50KCkpIHsKLSAgICAgICAgRXZlbnRUYXJnZXQqIGhvc3RFbGVt
ZW50ID0gdG9Qc2V1ZG9FbGVtZW50KHJlZmVyZW5jZU5vZGUpLmhvc3RFbGVtZW50KCk7CisgICAg
aWYgKGlzPFBzZXVkb0VsZW1lbnQ+KHJlZmVyZW5jZU5vZGUpKSB7CisgICAgICAgIEV2ZW50VGFy
Z2V0KiBob3N0RWxlbWVudCA9IGRvd25jYXN0PFBzZXVkb0VsZW1lbnQ+KHJlZmVyZW5jZU5vZGUp
Lmhvc3RFbGVtZW50KCk7CiAgICAgICAgIEFTU0VSVChob3N0RWxlbWVudCk7CiAgICAgICAgIHJl
dHVybiAqaG9zdEVsZW1lbnQ7CiAgICAgfQpAQCAtNDE4LDcgKzQxOCw3IEBAIHN0YXRpYyBpbmxp
bmUgYm9vbCBzaG91bGRFdmVudENyb3NzU2hhZG93Qm91bmRhcnkoRXZlbnQmIGV2ZW50LCBTaGFk
b3dSb290JiBzaGFkCiAKIHN0YXRpYyBOb2RlKiBub2RlT3JIb3N0SWZQc2V1ZG9FbGVtZW50KE5v
ZGUqIG5vZGUpCiB7Ci0gICAgcmV0dXJuIG5vZGUtPmlzUHNldWRvRWxlbWVudCgpID8gdG9Qc2V1
ZG9FbGVtZW50KG5vZGUpLT5ob3N0RWxlbWVudCgpIDogbm9kZTsKKyAgICByZXR1cm4gaXM8UHNl
dWRvRWxlbWVudD4obm9kZSkgPyBkb3duY2FzdDxQc2V1ZG9FbGVtZW50Pigqbm9kZSkuaG9zdEVs
ZW1lbnQoKSA6IG5vZGU7CiB9CiAKIEV2ZW50UGF0aDo6RXZlbnRQYXRoKE5vZGUmIHRhcmdldE5v
ZGUsIEV2ZW50JiBldmVudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcAppbmRleCBmNmQ2MDVjMzgxNzgwYjA4N2Mw
N2VkMjRlODdjMTI0MWFiNTA5YjJiLi4zODE4MDRhNzk4YzRmYzQyYWRjMmJmN2FjZTc2MGNmYzgy
YzMzNTJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwCkBAIC02NzIsNyArNjcyLDcgQEAgdm9pZCBOb2RlOjpk
ZXJlZkV2ZW50VGFyZ2V0KCkKIAogc3RhdGljIGlubGluZSB2b2lkIG1hcmtBbmNlc3RvcnNXaXRo
Q2hpbGROZWVkc1N0eWxlUmVjYWxjKE5vZGUmIG5vZGUpCiB7Ci0gICAgaWYgKENvbnRhaW5lck5v
ZGUqIGFuY2VzdG9yID0gbm9kZS5pc1BzZXVkb0VsZW1lbnQoKSA/IHRvUHNldWRvRWxlbWVudChu
b2RlKS5ob3N0RWxlbWVudCgpIDogbm9kZS5wYXJlbnRPclNoYWRvd0hvc3ROb2RlKCkpIHsKKyAg
ICBpZiAoQ29udGFpbmVyTm9kZSogYW5jZXN0b3IgPSBpczxQc2V1ZG9FbGVtZW50Pihub2RlKSA/
IGRvd25jYXN0PFBzZXVkb0VsZW1lbnQ+KG5vZGUpLmhvc3RFbGVtZW50KCkgOiBub2RlLnBhcmVu
dE9yU2hhZG93SG9zdE5vZGUoKSkgewogICAgICAgICBhbmNlc3Rvci0+c2V0RGlyZWN0Q2hpbGRO
ZWVkc1N0eWxlUmVjYWxjKCk7CiAKICAgICAgICAgZm9yICg7IGFuY2VzdG9yICYmICFhbmNlc3Rv
ci0+Y2hpbGROZWVkc1N0eWxlUmVjYWxjKCk7IGFuY2VzdG9yID0gYW5jZXN0b3ItPnBhcmVudE9y
U2hhZG93SG9zdE5vZGUoKSkKQEAgLTg3Miw3ICs4NzIsNyBAQCBib29sIE5vZGU6OmNvbnRhaW5z
SW5jbHVkaW5nSG9zdEVsZW1lbnRzKGNvbnN0IE5vZGUqIG5vZGUpIGNvbnN0CiAKIE5vZGUqIE5v
ZGU6OnBzZXVkb0F3YXJlUHJldmlvdXNTaWJsaW5nKCkgY29uc3QKIHsKLSAgICBFbGVtZW50KiBw
YXJlbnRPckhvc3QgPSBpc1BzZXVkb0VsZW1lbnQoKSA/IHRvUHNldWRvRWxlbWVudCh0aGlzKS0+
aG9zdEVsZW1lbnQoKSA6IHBhcmVudEVsZW1lbnQoKTsKKyAgICBFbGVtZW50KiBwYXJlbnRPckhv
c3QgPSBpczxQc2V1ZG9FbGVtZW50Pih0aGlzKSA/IGRvd25jYXN0PFBzZXVkb0VsZW1lbnQ+KCp0
aGlzKS5ob3N0RWxlbWVudCgpIDogcGFyZW50RWxlbWVudCgpOwogICAgIGlmIChwYXJlbnRPckhv
c3QgJiYgIXByZXZpb3VzU2libGluZygpKSB7CiAgICAgICAgIGlmIChpc0FmdGVyUHNldWRvRWxl
bWVudCgpICYmIHBhcmVudE9ySG9zdC0+bGFzdENoaWxkKCkpCiAgICAgICAgICAgICByZXR1cm4g
cGFyZW50T3JIb3N0LT5sYXN0Q2hpbGQoKTsKQEAgLTg4NCw3ICs4ODQsNyBAQCBOb2RlKiBOb2Rl
Ojpwc2V1ZG9Bd2FyZVByZXZpb3VzU2libGluZygpIGNvbnN0CiAKIE5vZGUqIE5vZGU6OnBzZXVk
b0F3YXJlTmV4dFNpYmxpbmcoKSBjb25zdAogewotICAgIEVsZW1lbnQqIHBhcmVudE9ySG9zdCA9
IGlzUHNldWRvRWxlbWVudCgpID8gdG9Qc2V1ZG9FbGVtZW50KHRoaXMpLT5ob3N0RWxlbWVudCgp
IDogcGFyZW50RWxlbWVudCgpOworICAgIEVsZW1lbnQqIHBhcmVudE9ySG9zdCA9IGlzPFBzZXVk
b0VsZW1lbnQ+KHRoaXMpID8gZG93bmNhc3Q8UHNldWRvRWxlbWVudD4oKnRoaXMpLmhvc3RFbGVt
ZW50KCkgOiBwYXJlbnRFbGVtZW50KCk7CiAgICAgaWYgKHBhcmVudE9ySG9zdCAmJiAhbmV4dFNp
YmxpbmcoKSkgewogICAgICAgICBpZiAoaXNCZWZvcmVQc2V1ZG9FbGVtZW50KCkgJiYgcGFyZW50
T3JIb3N0LT5maXJzdENoaWxkKCkpCiAgICAgICAgICAgICByZXR1cm4gcGFyZW50T3JIb3N0LT5m
aXJzdENoaWxkKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZVRyYXZlcnNh
bC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZVRyYXZlcnNhbC5jcHAKaW5kZXggN2FkMTEz
MDdjMDZlNzQ1YzljODYzYWQxMjk1ZTZmODM2M2QzZjRmYy4uZmJmZDdkOGQwYWQwOGE5NmI3NGU3
MTVmZjdlM2Q5NDBlYWFlOWE3MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGVU
cmF2ZXJzYWwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlVHJhdmVyc2FsLmNwcApA
QCAtMzUsMTMgKzM1LDEzIEBAIE5vZGUqIHByZXZpb3VzSW5jbHVkaW5nUHNldWRvKGNvbnN0IE5v
ZGUqIGN1cnJlbnQsIGNvbnN0IE5vZGUqIHN0YXlXaXRoaW4pCiB7CiAgICAgTm9kZSogcHJldmlv
dXM7CiAgICAgaWYgKGN1cnJlbnQgPT0gc3RheVdpdGhpbikKLSAgICAgICAgcmV0dXJuIDA7Cisg
ICAgICAgIHJldHVybiBudWxscHRyOwogICAgIGlmICgocHJldmlvdXMgPSBjdXJyZW50LT5wc2V1
ZG9Bd2FyZVByZXZpb3VzU2libGluZygpKSkgewogICAgICAgICB3aGlsZSAocHJldmlvdXMtPnBz
ZXVkb0F3YXJlTGFzdENoaWxkKCkpCiAgICAgICAgICAgICBwcmV2aW91cyA9IHByZXZpb3VzLT5w
c2V1ZG9Bd2FyZUxhc3RDaGlsZCgpOwogICAgICAgICByZXR1cm4gcHJldmlvdXM7CiAgICAgfQot
ICAgIHJldHVybiBjdXJyZW50LT5pc1BzZXVkb0VsZW1lbnQoKSA/IHRvUHNldWRvRWxlbWVudChj
dXJyZW50KS0+aG9zdEVsZW1lbnQoKSA6IGN1cnJlbnQtPnBhcmVudE5vZGUoKTsKKyAgICByZXR1
cm4gaXM8UHNldWRvRWxlbWVudD4oY3VycmVudCkgPyBkb3duY2FzdDxQc2V1ZG9FbGVtZW50Pigq
Y3VycmVudCkuaG9zdEVsZW1lbnQoKSA6IGN1cnJlbnQtPnBhcmVudE5vZGUoKTsKIH0KIAogTm9k
ZSogbmV4dEluY2x1ZGluZ1BzZXVkbyhjb25zdCBOb2RlKiBjdXJyZW50LCBjb25zdCBOb2RlKiBz
dGF5V2l0aGluKQpAQCAtNTAsMzQgKzUwLDM0IEBAIE5vZGUqIG5leHRJbmNsdWRpbmdQc2V1ZG8o
Y29uc3QgTm9kZSogY3VycmVudCwgY29uc3QgTm9kZSogc3RheVdpdGhpbikKICAgICBpZiAoKG5l
eHQgPSBjdXJyZW50LT5wc2V1ZG9Bd2FyZUZpcnN0Q2hpbGQoKSkpCiAgICAgICAgIHJldHVybiBu
ZXh0OwogICAgIGlmIChjdXJyZW50ID09IHN0YXlXaXRoaW4pCi0gICAgICAgIHJldHVybiAwOwor
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICBpZiAoKG5leHQgPSBjdXJyZW50LT5wc2V1ZG9B
d2FyZU5leHRTaWJsaW5nKCkpKQogICAgICAgICByZXR1cm4gbmV4dDsKLSAgICBjdXJyZW50ID0g
Y3VycmVudC0+aXNQc2V1ZG9FbGVtZW50KCkgPyB0b1BzZXVkb0VsZW1lbnQoY3VycmVudCktPmhv
c3RFbGVtZW50KCkgOiBjdXJyZW50LT5wYXJlbnROb2RlKCk7CisgICAgY3VycmVudCA9IGlzPFBz
ZXVkb0VsZW1lbnQ+KGN1cnJlbnQpID8gZG93bmNhc3Q8UHNldWRvRWxlbWVudD4oKmN1cnJlbnQp
Lmhvc3RFbGVtZW50KCkgOiBjdXJyZW50LT5wYXJlbnROb2RlKCk7CiAgICAgZm9yICg7IGN1cnJl
bnQ7IGN1cnJlbnQgPSBjdXJyZW50LT5wYXJlbnROb2RlKCkpIHsKICAgICAgICAgaWYgKGN1cnJl
bnQgPT0gc3RheVdpdGhpbikKLSAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICAgICAgcmV0
dXJuIG51bGxwdHI7CiAgICAgICAgIGlmICgobmV4dCA9IGN1cnJlbnQtPnBzZXVkb0F3YXJlTmV4
dFNpYmxpbmcoKSkpCiAgICAgICAgICAgICByZXR1cm4gbmV4dDsKICAgICB9Ci0gICAgcmV0dXJu
IDA7CisgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKIE5vZGUqIG5leHRJbmNsdWRpbmdQc2V1ZG9T
a2lwcGluZ0NoaWxkcmVuKGNvbnN0IE5vZGUqIGN1cnJlbnQsIGNvbnN0IE5vZGUqIHN0YXlXaXRo
aW4pCiB7CiAgICAgTm9kZSogbmV4dDsKICAgICBpZiAoY3VycmVudCA9PSBzdGF5V2l0aGluKQot
ICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgaWYgKChuZXh0
ID0gY3VycmVudC0+cHNldWRvQXdhcmVOZXh0U2libGluZygpKSkKICAgICAgICAgcmV0dXJuIG5l
eHQ7Ci0gICAgY3VycmVudCA9IGN1cnJlbnQtPmlzUHNldWRvRWxlbWVudCgpID8gdG9Qc2V1ZG9F
bGVtZW50KGN1cnJlbnQpLT5ob3N0RWxlbWVudCgpIDogY3VycmVudC0+cGFyZW50Tm9kZSgpOwor
ICAgIGN1cnJlbnQgPSBpczxQc2V1ZG9FbGVtZW50PihjdXJyZW50KSA/IGRvd25jYXN0PFBzZXVk
b0VsZW1lbnQ+KCpjdXJyZW50KS5ob3N0RWxlbWVudCgpIDogY3VycmVudC0+cGFyZW50Tm9kZSgp
OwogICAgIGZvciAoOyBjdXJyZW50OyBjdXJyZW50ID0gY3VycmVudC0+cGFyZW50Tm9kZSgpKSB7
CiAgICAgICAgIGlmIChjdXJyZW50ID09IHN0YXlXaXRoaW4pCi0gICAgICAgICAgICByZXR1cm4g
MDsKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgICAgICBpZiAoKG5leHQgPSBjdXJy
ZW50LT5wc2V1ZG9Bd2FyZU5leHRTaWJsaW5nKCkpKQogICAgICAgICAgICAgcmV0dXJuIG5leHQ7
CiAgICAgfQotICAgIHJldHVybiAwOworICAgIHJldHVybiBudWxscHRyOwogfQogCiBOb2RlKiBu
ZXh0QW5jZXN0b3JTaWJsaW5nKGNvbnN0IE5vZGUqIGN1cnJlbnQpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vUHJvY2Vzc2luZ0luc3RydWN0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9k
b20vUHJvY2Vzc2luZ0luc3RydWN0aW9uLmgKaW5kZXggN2Q0NTU4NTMwOTRlZTJjNzI5Y2U2MzIz
ODdjOWMwZmIwOTljNTg3NS4uYjMyNWMzOGRhZjU0MGEwOWU4ZmJkYjUzOGZjZTdiZjAzZWU4MDM5
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1Byb2Nlc3NpbmdJbnN0cnVjdGlvbi5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb24uaApAQCAtOTEs
MTIgKzkxLDkgQEAgcHJpdmF0ZToKICNlbmRpZgogfTsKIAotaW5saW5lIGJvb2wgaXNQcm9jZXNz
aW5nSW5zdHJ1Y3Rpb24oY29uc3QgTm9kZSYgbm9kZSkKLXsKLSAgICByZXR1cm4gbm9kZS5ub2Rl
VHlwZSgpID09IE5vZGU6OlBST0NFU1NJTkdfSU5TVFJVQ1RJT05fTk9ERTsKLX0KLQotTk9ERV9U
WVBFX0NBU1RTKFByb2Nlc3NpbmdJbnN0cnVjdGlvbikKK1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNf
QkVHSU4oUHJvY2Vzc2luZ0luc3RydWN0aW9uKQorICAgIHN0YXRpYyBib29sIGlzUHJvY2Vzc2lu
Z0luc3RydWN0aW9uKGNvbnN0IE5vZGUmIG5vZGUpIHsgcmV0dXJuIG5vZGUubm9kZVR5cGUoKSA9
PSBOb2RlOjpQUk9DRVNTSU5HX0lOU1RSVUNUSU9OX05PREU7IH0KK1NQRUNJQUxJWkVfVFlQRV9U
UkFJVFNfRU5EKCkKIAogfSAvL25hbWVzcGFjZQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vUHNldWRvRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL1BzZXVkb0VsZW1lbnQu
aAppbmRleCAyOGYwMzQ3Y2VjNzFmMjZhMjIwNGI1NDY2ZTUwNTA0YmMwMTBjYzdjLi4wYTkwYTQ1
ZTYwMTk5MmNlNDczMDA5MjhkMjQ4MWU0ZDU1M2MxZGZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vUHNldWRvRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Qc2V1ZG9F
bGVtZW50LmgKQEAgLTc3LDkgKzc3LDkgQEAgaW5saW5lIGJvb2wgcHNldWRvRWxlbWVudFJlbmRl
cmVySXNOZWVkZWQoY29uc3QgUmVuZGVyU3R5bGUqIHN0eWxlKQogICAgIHJldHVybiBzdHlsZSAm
JiBzdHlsZS0+ZGlzcGxheSgpICE9IE5PTkUgJiYgKHN0eWxlLT5jb250ZW50RGF0YSgpIHx8IHN0
eWxlLT5oYXNGbG93RnJvbSgpKTsKIH0KIAotdm9pZCBpc1BzZXVkb0VsZW1lbnQoY29uc3QgUHNl
dWRvRWxlbWVudCYpOyAvLyBDYXRjaCB1bm5lY2Vzc2FyeSBydW50aW1lIGNoZWNrIG9mIHR5cGUg
a25vd24gYXQgY29tcGlsZSB0aW1lLgotaW5saW5lIGJvb2wgaXNQc2V1ZG9FbGVtZW50KGNvbnN0
IE5vZGUmIG5vZGUpIHsgcmV0dXJuIG5vZGUuaXNQc2V1ZG9FbGVtZW50KCk7IH0KLU5PREVfVFlQ
RV9DQVNUUyhQc2V1ZG9FbGVtZW50KQorU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19CRUdJTihQc2V1
ZG9FbGVtZW50KQorICAgIHN0YXRpYyBib29sIGlzUHNldWRvRWxlbWVudChjb25zdCBOb2RlJiBu
b2RlKSB7IHJldHVybiBub2RlLmlzUHNldWRvRWxlbWVudCgpOyB9CitTUEVDSUFMSVpFX1RZUEVf
VFJBSVRTX0VORCgpCiAKIH0gLy8gbmFtZXNwYWNlCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9SYW5nZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vUmFuZ2UuY3BwCmluZGV4IDg3
MTU3NjYxMDk2NzUxZmRjNGNkMGM3OGJkOGNhOTBiODczOTcxYjkuLjdlYTExOGQwYzE5ZjY1NmIy
YWVkYjQ3YWYwYzU2NDU3YzFkZDcxMTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9S
YW5nZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1JhbmdlLmNwcApAQCAtNjYwLDkgKzY2
MCw5IEBAIHN0YXRpYyBpbmxpbmUgdW5zaWduZWQgbGVuZ3RoT2ZDb250ZW50c0luTm9kZShOb2Rl
KiBub2RlKQogICAgIGNhc2UgTm9kZTo6VEVYVF9OT0RFOgogICAgIGNhc2UgTm9kZTo6Q0RBVEFf
U0VDVElPTl9OT0RFOgogICAgIGNhc2UgTm9kZTo6Q09NTUVOVF9OT0RFOgotICAgICAgICByZXR1
cm4gdG9DaGFyYWN0ZXJEYXRhKG5vZGUpLT5sZW5ndGgoKTsKKyAgICAgICAgcmV0dXJuIGRvd25j
YXN0PENoYXJhY3RlckRhdGE+KCpub2RlKS5sZW5ndGgoKTsKICAgICBjYXNlIE5vZGU6OlBST0NF
U1NJTkdfSU5TVFJVQ1RJT05fTk9ERToKLSAgICAgICAgcmV0dXJuIHRvUHJvY2Vzc2luZ0luc3Ry
dWN0aW9uKG5vZGUpLT5kYXRhKCkubGVuZ3RoKCk7CisgICAgICAgIHJldHVybiBkb3duY2FzdDxQ
cm9jZXNzaW5nSW5zdHJ1Y3Rpb24+KCpub2RlKS5kYXRhKCkubGVuZ3RoKCk7CiAgICAgY2FzZSBO
b2RlOjpFTEVNRU5UX05PREU6CiAgICAgY2FzZSBOb2RlOjpBVFRSSUJVVEVfTk9ERToKICAgICBj
YXNlIE5vZGU6OkVOVElUWV9SRUZFUkVOQ0VfTk9ERToKQEAgLTgwOSw3ICs4MDksNyBAQCBQYXNz
UmVmUHRyPE5vZGU+IFJhbmdlOjpwcm9jZXNzQ29udGVudHNCZXR3ZWVuT2Zmc2V0cyhBY3Rpb25U
eXBlIGFjdGlvbiwgUGFzc1JlZgogICAgICAgICAgICAgICAgIHJlc3VsdCA9IGMucmVsZWFzZSgp
OwogICAgICAgICB9CiAgICAgICAgIGlmIChhY3Rpb24gPT0gRXh0cmFjdCB8fCBhY3Rpb24gPT0g
RGVsZXRlKQotICAgICAgICAgICAgdG9DaGFyYWN0ZXJEYXRhKGNvbnRhaW5lciktPmRlbGV0ZURh
dGEoc3RhcnRPZmZzZXQsIGVuZE9mZnNldCAtIHN0YXJ0T2Zmc2V0LCBlYyk7CisgICAgICAgICAg
ICBkb3duY2FzdDxDaGFyYWN0ZXJEYXRhPigqY29udGFpbmVyKS5kZWxldGVEYXRhKHN0YXJ0T2Zm
c2V0LCBlbmRPZmZzZXQgLSBzdGFydE9mZnNldCwgZWMpOwogICAgICAgICBicmVhazsKICAgICBj
YXNlIE5vZGU6OlBST0NFU1NJTkdfSU5TVFJVQ1RJT05fTk9ERToKICAgICAgICAgZW5kT2Zmc2V0
ID0gc3RkOjptaW4oZW5kT2Zmc2V0LCBzdGF0aWNfY2FzdDxQcm9jZXNzaW5nSW5zdHJ1Y3Rpb24q
Pihjb250YWluZXIpLT5kYXRhKCkubGVuZ3RoKCkpOwpAQCAtODI0LDEwICs4MjQsMTAgQEAgUGFz
c1JlZlB0cjxOb2RlPiBSYW5nZTo6cHJvY2Vzc0NvbnRlbnRzQmV0d2Vlbk9mZnNldHMoQWN0aW9u
VHlwZSBhY3Rpb24sIFBhc3NSZWYKICAgICAgICAgICAgICAgICByZXN1bHQgPSBjLnJlbGVhc2Uo
KTsKICAgICAgICAgfQogICAgICAgICBpZiAoYWN0aW9uID09IEV4dHJhY3QgfHwgYWN0aW9uID09
IERlbGV0ZSkgewotICAgICAgICAgICAgUHJvY2Vzc2luZ0luc3RydWN0aW9uKiBwaSA9IHRvUHJv
Y2Vzc2luZ0luc3RydWN0aW9uKGNvbnRhaW5lcik7Ci0gICAgICAgICAgICBTdHJpbmcgZGF0YShw
aS0+ZGF0YSgpKTsKKyAgICAgICAgICAgIFByb2Nlc3NpbmdJbnN0cnVjdGlvbiYgcGkgPSBkb3du
Y2FzdDxQcm9jZXNzaW5nSW5zdHJ1Y3Rpb24+KCpjb250YWluZXIpOworICAgICAgICAgICAgU3Ry
aW5nIGRhdGEocGkuZGF0YSgpKTsKICAgICAgICAgICAgIGRhdGEucmVtb3ZlKHN0YXJ0T2Zmc2V0
LCBlbmRPZmZzZXQgLSBzdGFydE9mZnNldCk7Ci0gICAgICAgICAgICBwaS0+c2V0RGF0YShkYXRh
LCBlYyk7CisgICAgICAgICAgICBwaS5zZXREYXRhKGRhdGEsIGVjKTsKICAgICAgICAgfQogICAg
ICAgICBicmVhazsKICAgICBjYXNlIE5vZGU6OkVMRU1FTlRfTk9ERToKQEAgLTExNTIsMTcgKzEx
NTIsMTcgQEAgTm9kZSogUmFuZ2U6OmNoZWNrTm9kZVdPZmZzZXQoTm9kZSogbiwgaW50IG9mZnNl
dCwgRXhjZXB0aW9uQ29kZSYgZWMpIGNvbnN0CiAgICAgICAgIGNhc2UgTm9kZTo6RU5USVRZX05P
REU6CiAgICAgICAgIGNhc2UgTm9kZTo6Tk9UQVRJT05fTk9ERToKICAgICAgICAgICAgIGVjID0g
UmFuZ2VFeGNlcHRpb246OklOVkFMSURfTk9ERV9UWVBFX0VSUjsKLSAgICAgICAgICAgIHJldHVy
biAwOworICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICAgIGNhc2UgTm9kZTo6Q0RB
VEFfU0VDVElPTl9OT0RFOgogICAgICAgICBjYXNlIE5vZGU6OkNPTU1FTlRfTk9ERToKICAgICAg
ICAgY2FzZSBOb2RlOjpURVhUX05PREU6Ci0gICAgICAgICAgICBpZiAoc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KG9mZnNldCkgPiB0b0NoYXJhY3RlckRhdGEobiktPmxlbmd0aCgpKQorICAgICAgICAg
ICAgaWYgKHN0YXRpY19jYXN0PHVuc2lnbmVkPihvZmZzZXQpID4gZG93bmNhc3Q8Q2hhcmFjdGVy
RGF0YT4oKm4pLmxlbmd0aCgpKQogICAgICAgICAgICAgICAgIGVjID0gSU5ERVhfU0laRV9FUlI7
Ci0gICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogICAg
ICAgICBjYXNlIE5vZGU6OlBST0NFU1NJTkdfSU5TVFJVQ1RJT05fTk9ERToKLSAgICAgICAgICAg
IGlmIChzdGF0aWNfY2FzdDx1bnNpZ25lZD4ob2Zmc2V0KSA+IHRvUHJvY2Vzc2luZ0luc3RydWN0
aW9uKG4pLT5kYXRhKCkubGVuZ3RoKCkpCisgICAgICAgICAgICBpZiAoc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KG9mZnNldCkgPiBkb3duY2FzdDxQcm9jZXNzaW5nSW5zdHJ1Y3Rpb24+KCpuKS5kYXRh
KCkubGVuZ3RoKCkpCiAgICAgICAgICAgICAgICAgZWMgPSBJTkRFWF9TSVpFX0VSUjsKLSAgICAg
ICAgICAgIHJldHVybiAwOworICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICAgIGNh
c2UgTm9kZTo6QVRUUklCVVRFX05PREU6CiAgICAgICAgIGNhc2UgTm9kZTo6RE9DVU1FTlRfRlJB
R01FTlRfTk9ERToKICAgICAgICAgY2FzZSBOb2RlOjpET0NVTUVOVF9OT0RFOgpAQCAtMTE3MCw3
ICsxMTcwLDcgQEAgTm9kZSogUmFuZ2U6OmNoZWNrTm9kZVdPZmZzZXQoTm9kZSogbiwgaW50IG9m
ZnNldCwgRXhjZXB0aW9uQ29kZSYgZWMpIGNvbnN0CiAgICAgICAgIGNhc2UgTm9kZTo6RU5USVRZ
X1JFRkVSRU5DRV9OT0RFOgogICAgICAgICBjYXNlIE5vZGU6OlhQQVRIX05BTUVTUEFDRV9OT0RF
OiB7CiAgICAgICAgICAgICBpZiAoIW9mZnNldCkKLSAgICAgICAgICAgICAgICByZXR1cm4gMDsK
KyAgICAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAgICAgICAgIE5vZGUqIGNoaWxk
QmVmb3JlID0gbi0+dHJhdmVyc2VUb0NoaWxkQXQob2Zmc2V0IC0gMSk7CiAgICAgICAgICAgICBp
ZiAoIWNoaWxkQmVmb3JlKQogICAgICAgICAgICAgICAgIGVjID0gSU5ERVhfU0laRV9FUlI7CkBA
IC0xMTc4LDcgKzExNzgsNyBAQCBOb2RlKiBSYW5nZTo6Y2hlY2tOb2RlV09mZnNldChOb2RlKiBu
LCBpbnQgb2Zmc2V0LCBFeGNlcHRpb25Db2RlJiBlYykgY29uc3QKICAgICAgICAgfQogICAgIH0K
ICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4gMDsKKyAgICByZXR1cm4gbnVs
bHB0cjsKIH0KIAogdm9pZCBSYW5nZTo6Y2hlY2tOb2RlQkEoTm9kZSogbiwgRXhjZXB0aW9uQ29k
ZSYgZWMpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAKaW5kZXggMTFiNzFlZjQwZGNh
ZTAwODIzMDcyMmM2YTVmYjg2NzFmZDQzYmQ3OC4uOTlhMWE5Zjg3OGFkY2YwYWM5MzZhOWM1MWNm
NTFkY2Y4N2M0M2Q1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3Iu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcApAQCAtNTg4LDggKzU4
OCw4IEBAIGJvb2wgRWRpdG9yOjpzaG91bGRJbnNlcnRGcmFnbWVudChQYXNzUmVmUHRyPERvY3Vt
ZW50RnJhZ21lbnQ+IGZyYWdtZW50LCBQYXNzUmVmCiAgICAgCiAgICAgaWYgKGZyYWdtZW50KSB7
CiAgICAgICAgIE5vZGUqIGNoaWxkID0gZnJhZ21lbnQtPmZpcnN0Q2hpbGQoKTsKLSAgICAgICAg
aWYgKGNoaWxkICYmIGZyYWdtZW50LT5sYXN0Q2hpbGQoKSA9PSBjaGlsZCAmJiBjaGlsZC0+aXND
aGFyYWN0ZXJEYXRhTm9kZSgpKQotICAgICAgICAgICAgcmV0dXJuIGNsaWVudCgpLT5zaG91bGRJ
bnNlcnRUZXh0KHRvQ2hhcmFjdGVyRGF0YShjaGlsZCktPmRhdGEoKSwgcmVwbGFjaW5nRE9NUmFu
Z2UuZ2V0KCksIGdpdmVuQWN0aW9uKTsKKyAgICAgICAgaWYgKGNoaWxkICYmIGZyYWdtZW50LT5s
YXN0Q2hpbGQoKSA9PSBjaGlsZCAmJiBpczxDaGFyYWN0ZXJEYXRhPihjaGlsZCkpCisgICAgICAg
ICAgICByZXR1cm4gY2xpZW50KCktPnNob3VsZEluc2VydFRleHQoZG93bmNhc3Q8Q2hhcmFjdGVy
RGF0YT4oKmNoaWxkKS5kYXRhKCksIHJlcGxhY2luZ0RPTVJhbmdlLmdldCgpLCBnaXZlbkFjdGlv
bik7CiAgICAgfQogCiAgICAgcmV0dXJuIGNsaWVudCgpLT5zaG91bGRJbnNlcnROb2RlKGZyYWdt
ZW50LmdldCgpLCByZXBsYWNpbmdET01SYW5nZS5nZXQoKSwgZ2l2ZW5BY3Rpb24pOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9NYXJrdXBBY2N1bXVsYXRvci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL01hcmt1cEFjY3VtdWxhdG9yLmNwcAppbmRleCBiN2Y5YTcyMmRh
ODAxNThmYTVmOGZmNDQxODBlMTk4MjMxZTU2YTIyLi5lNGQ5YWRhNTE0NTQ1YzA2Nzg3ZmM3ZWIz
NzdkNGUwZjNiMDBmMzhjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL01hcmt1
cEFjY3VtdWxhdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL01hcmt1cEFjY3Vt
dWxhdG9yLmNwcApAQCAtNTU2LDcgKzU1Niw3IEBAIHZvaWQgTWFya3VwQWNjdW11bGF0b3I6OmFw
cGVuZFN0YXJ0TWFya3VwKFN0cmluZ0J1aWxkZXImIHJlc3VsdCwgY29uc3QgTm9kZSYgbm9kCiAg
ICAgICAgIGFwcGVuZFRleHQocmVzdWx0LCB0b1RleHQobm9kZSkpOwogICAgICAgICBicmVhazsK
ICAgICBjYXNlIE5vZGU6OkNPTU1FTlRfTk9ERToKLSAgICAgICAgYXBwZW5kQ29tbWVudChyZXN1
bHQsIHRvQ29tbWVudChub2RlKS5kYXRhKCkpOworICAgICAgICBhcHBlbmRDb21tZW50KHJlc3Vs
dCwgZG93bmNhc3Q8Q29tbWVudD4obm9kZSkuZGF0YSgpKTsKICAgICAgICAgYnJlYWs7CiAgICAg
Y2FzZSBOb2RlOjpET0NVTUVOVF9OT0RFOgogICAgICAgICBhcHBlbmRYTUxEZWNsYXJhdGlvbihy
ZXN1bHQsIHRvRG9jdW1lbnQobm9kZSkpOwpAQCAtNTY0LDE2ICs1NjQsMTYgQEAgdm9pZCBNYXJr
dXBBY2N1bXVsYXRvcjo6YXBwZW5kU3RhcnRNYXJrdXAoU3RyaW5nQnVpbGRlciYgcmVzdWx0LCBj
b25zdCBOb2RlJiBub2QKICAgICBjYXNlIE5vZGU6OkRPQ1VNRU5UX0ZSQUdNRU5UX05PREU6CiAg
ICAgICAgIGJyZWFrOwogICAgIGNhc2UgTm9kZTo6RE9DVU1FTlRfVFlQRV9OT0RFOgotICAgICAg
ICBhcHBlbmREb2N1bWVudFR5cGUocmVzdWx0LCB0b0RvY3VtZW50VHlwZShub2RlKSk7CisgICAg
ICAgIGFwcGVuZERvY3VtZW50VHlwZShyZXN1bHQsIGRvd25jYXN0PERvY3VtZW50VHlwZT4obm9k
ZSkpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIE5vZGU6OlBST0NFU1NJTkdfSU5TVFJVQ1RJ
T05fTk9ERToKLSAgICAgICAgYXBwZW5kUHJvY2Vzc2luZ0luc3RydWN0aW9uKHJlc3VsdCwgdG9Q
cm9jZXNzaW5nSW5zdHJ1Y3Rpb24obm9kZSkudGFyZ2V0KCksIHRvUHJvY2Vzc2luZ0luc3RydWN0
aW9uKG5vZGUpLmRhdGEoKSk7CisgICAgICAgIGFwcGVuZFByb2Nlc3NpbmdJbnN0cnVjdGlvbihy
ZXN1bHQsIGRvd25jYXN0PFByb2Nlc3NpbmdJbnN0cnVjdGlvbj4obm9kZSkudGFyZ2V0KCksIGRv
d25jYXN0PFByb2Nlc3NpbmdJbnN0cnVjdGlvbj4obm9kZSkuZGF0YSgpKTsKICAgICAgICAgYnJl
YWs7CiAgICAgY2FzZSBOb2RlOjpFTEVNRU5UX05PREU6CiAgICAgICAgIGFwcGVuZEVsZW1lbnQo
cmVzdWx0LCB0b0VsZW1lbnQobm9kZSksIG5hbWVzcGFjZXMpOwogICAgICAgICBicmVhazsKICAg
ICBjYXNlIE5vZGU6OkNEQVRBX1NFQ1RJT05fTk9ERToKLSAgICAgICAgYXBwZW5kQ0RBVEFTZWN0
aW9uKHJlc3VsdCwgdG9DREFUQVNlY3Rpb24obm9kZSkuZGF0YSgpKTsKKyAgICAgICAgYXBwZW5k
Q0RBVEFTZWN0aW9uKHJlc3VsdCwgZG93bmNhc3Q8Q0RBVEFTZWN0aW9uPihub2RlKS5kYXRhKCkp
OwogICAgICAgICBicmVhazsKICAgICBjYXNlIE5vZGU6OkFUVFJJQlVURV9OT0RFOgogICAgIGNh
c2UgTm9kZTo6RU5USVRZX05PREU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L2NvY29hL0hUTUxDb252ZXJ0ZXIubW0gYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0hU
TUxDb252ZXJ0ZXIubW0KaW5kZXggYmQ1N2Q5M2NjOTU2MmY4NGE1YmQ5Y2VlZTkxOThhMzAyOTQ0
MzlmNS4uODJiNTljZjUxMGIzOWE5NjQ1YWRjZmFlOGNkMDJiZWNmZTNiNzEzNiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9IVE1MQ29udmVydGVyLm1tCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvSFRNTENvbnZlcnRlci5tbQpAQCAtMjQxNCw4ICsy
NDE0LDggQEAgdm9pZCBIVE1MQ29udmVydGVyOjpfdHJhdmVyc2VOb2RlKE5vZGUmIG5vZGUsIHVu
c2lnbmVkIGRlcHRoLCBib29sIGVtYmVkZGVkKQogICAgICAgICAgICAgICAgIF9leGl0RWxlbWVu
dChlbGVtZW50LCBkZXB0aCwgc3RhcnRJbmRleCk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0K
LSAgICB9IGVsc2UgaWYgKG5vZGUuaXNDaGFyYWN0ZXJEYXRhTm9kZSgpKQotICAgICAgICBfcHJv
Y2Vzc1RleHQodG9DaGFyYWN0ZXJEYXRhKG5vZGUpKTsKKyAgICB9IGVsc2UgaWYgKGlzPENoYXJh
Y3RlckRhdGE+KG5vZGUpKQorICAgICAgICBfcHJvY2Vzc1RleHQoZG93bmNhc3Q8Q2hhcmFjdGVy
RGF0YT4obm9kZSkpOwogCiAgICAgaWYgKGlzRW5kKQogICAgICAgICBfZmxhZ3MucmVhY2hlZEVu
ZCA9IFlFUzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JE
T01BZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQu
Y3BwCmluZGV4IDNhM2RlMzBiM2VkZDc4NTU5NjEyNGRjMThiNzNiMjFhNzA4MTMxYjguLjk5Yjli
MmJhODcxNjQ0MWZmYzE3OTAxNjBjYjA1MzM1ZDU3MjE1OTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmNwcApAQCAtMTMwNiwxMSArMTMwNiwxMSBA
QCBQYXNzUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRPTTo6Tm9kZT4gSW5zcGVjdG9yRE9N
QWdlbnQ6OmJ1aWxkT2JqZWN0Rm9yTm9kZQogICAgICAgICB2YWx1ZS0+c2V0RG9jdW1lbnRVUkwo
ZG9jdW1lbnRVUkxTdHJpbmcoZG9jdW1lbnQpKTsKICAgICAgICAgdmFsdWUtPnNldEJhc2VVUkwo
ZG9jdW1lbnRCYXNlVVJMU3RyaW5nKGRvY3VtZW50KSk7CiAgICAgICAgIHZhbHVlLT5zZXRYbWxW
ZXJzaW9uKGRvY3VtZW50LT54bWxWZXJzaW9uKCkpOwotICAgIH0gZWxzZSBpZiAobm9kZS0+bm9k
ZVR5cGUoKSA9PSBOb2RlOjpET0NVTUVOVF9UWVBFX05PREUpIHsKLSAgICAgICAgRG9jdW1lbnRU
eXBlKiBkb2NUeXBlID0gdG9Eb2N1bWVudFR5cGUobm9kZSk7Ci0gICAgICAgIHZhbHVlLT5zZXRQ
dWJsaWNJZChkb2NUeXBlLT5wdWJsaWNJZCgpKTsKLSAgICAgICAgdmFsdWUtPnNldFN5c3RlbUlk
KGRvY1R5cGUtPnN5c3RlbUlkKCkpOwotICAgICAgICB2YWx1ZS0+c2V0SW50ZXJuYWxTdWJzZXQo
ZG9jVHlwZS0+aW50ZXJuYWxTdWJzZXQoKSk7CisgICAgfSBlbHNlIGlmIChpczxEb2N1bWVudFR5
cGU+KG5vZGUpKSB7CisgICAgICAgIERvY3VtZW50VHlwZSYgZG9jVHlwZSA9IGRvd25jYXN0PERv
Y3VtZW50VHlwZT4oKm5vZGUpOworICAgICAgICB2YWx1ZS0+c2V0UHVibGljSWQoZG9jVHlwZS5w
dWJsaWNJZCgpKTsKKyAgICAgICAgdmFsdWUtPnNldFN5c3RlbUlkKGRvY1R5cGUuc3lzdGVtSWQo
KSk7CisgICAgICAgIHZhbHVlLT5zZXRJbnRlcm5hbFN1YnNldChkb2NUeXBlLmludGVybmFsU3Vi
c2V0KCkpOwogICAgIH0gZWxzZSBpZiAobm9kZS0+aXNBdHRyaWJ1dGVOb2RlKCkpIHsKICAgICAg
ICAgQXR0ciogYXR0cmlidXRlID0gdG9BdHRyKG5vZGUpOwogICAgICAgICB2YWx1ZS0+c2V0TmFt
ZShhdHRyaWJ1dGUtPm5hbWUoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvckxheWVyVHJlZUFnZW50LmNwcAppbmRleCBhNjlkZjFhZDU4MjgyNmEyNjMzNzZk
Nzg2YTMxMmExZmZkNjY1M2JhLi45N2RmYTQwMmI4MTBmNmVmZGY2ZWJhMjQ0MDRiMzk4NGU2M2Fj
MWJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yTGF5ZXJU
cmVlQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JMYXll
clRyZWVBZ2VudC5jcHAKQEAgLTE4Myw3ICsxODMsNyBAQCBQYXNzUmVmUHRyPEluc3BlY3Rvcjo6
UHJvdG9jb2w6OkxheWVyVHJlZTo6TGF5ZXI+IEluc3BlY3RvckxheWVyVHJlZUFnZW50OjpidWls
ZAogICAgICAgICBpZiAoaXNSZWZsZWN0aW9uKQogICAgICAgICAgICAgcmVuZGVyZXIgPSByZW5k
ZXJlci0+cGFyZW50KCk7CiAgICAgICAgIGxheWVyT2JqZWN0LT5zZXRJc0dlbmVyYXRlZENvbnRl
bnQodHJ1ZSk7Ci0gICAgICAgIGxheWVyT2JqZWN0LT5zZXRQc2V1ZG9FbGVtZW50SWQoYmluZFBz
ZXVkb0VsZW1lbnQodG9Qc2V1ZG9FbGVtZW50KHJlbmRlcmVyLT5ub2RlKCkpKSk7CisgICAgICAg
IGxheWVyT2JqZWN0LT5zZXRQc2V1ZG9FbGVtZW50SWQoYmluZFBzZXVkb0VsZW1lbnQoZG93bmNh
c3Q8UHNldWRvRWxlbWVudD4ocmVuZGVyZXItPm5vZGUoKSkpKTsKICAgICAgICAgaWYgKHJlbmRl
cmVyLT5pc0JlZm9yZUNvbnRlbnQoKSkKICAgICAgICAgICAgIGxheWVyT2JqZWN0LT5zZXRQc2V1
ZG9FbGVtZW50KCJiZWZvcmUiKTsKICAgICAgICAgZWxzZSBpZiAocmVuZGVyZXItPmlzQWZ0ZXJD
b250ZW50KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSGl0VGVzdFJl
c3VsdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSGl0VGVzdFJlc3VsdC5jcHAKaW5k
ZXggOWFhZWM4Y2IzYWQyYzRlYzFkOWZiYzhmMGI4ZGVhYmI5NjY5MDRiYi4uZWJiYWJkMTVjMzYy
NmZmOThmMjNjOWM1YmU5ZjI3N2ZkYmJmNmUzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL0hpdFRlc3RSZXN1bHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9IaXRUZXN0UmVzdWx0LmNwcApAQCAtMTI5LDE4ICsxMjksMTggQEAgdm9pZCBIaXRUZXN0UmVz
dWx0OjpzZXRUb05vblNoYWRvd0FuY2VzdG9yKCkKICAgICBzZXRJbm5lck5vblNoYXJlZE5vZGUo
bm9kZSk7CiB9CiAKLXZvaWQgSGl0VGVzdFJlc3VsdDo6c2V0SW5uZXJOb2RlKE5vZGUqIG4pCit2
b2lkIEhpdFRlc3RSZXN1bHQ6OnNldElubmVyTm9kZShOb2RlKiBub2RlKQogewotICAgIGlmIChu
ICYmIG4tPmlzUHNldWRvRWxlbWVudCgpKQotICAgICAgICBuID0gdG9Qc2V1ZG9FbGVtZW50KG4p
LT5ob3N0RWxlbWVudCgpOwotICAgIG1faW5uZXJOb2RlID0gbjsKKyAgICBpZiAobm9kZSAmJiBp
czxQc2V1ZG9FbGVtZW50Pihub2RlKSkKKyAgICAgICAgbm9kZSA9IGRvd25jYXN0PFBzZXVkb0Vs
ZW1lbnQ+KCpub2RlKS5ob3N0RWxlbWVudCgpOworICAgIG1faW5uZXJOb2RlID0gbm9kZTsKIH0K
ICAgICAKLXZvaWQgSGl0VGVzdFJlc3VsdDo6c2V0SW5uZXJOb25TaGFyZWROb2RlKE5vZGUqIG4p
Cit2b2lkIEhpdFRlc3RSZXN1bHQ6OnNldElubmVyTm9uU2hhcmVkTm9kZShOb2RlKiBub2RlKQog
ewotICAgIGlmIChuICYmIG4tPmlzUHNldWRvRWxlbWVudCgpKQotICAgICAgICBuID0gdG9Qc2V1
ZG9FbGVtZW50KG4pLT5ob3N0RWxlbWVudCgpOwotICAgIG1faW5uZXJOb25TaGFyZWROb2RlID0g
bjsKKyAgICBpZiAobm9kZSAmJiBpczxQc2V1ZG9FbGVtZW50Pihub2RlKSkKKyAgICAgICAgbm9k
ZSA9IGRvd25jYXN0PFBzZXVkb0VsZW1lbnQ+KCpub2RlKS5ob3N0RWxlbWVudCgpOworICAgIG1f
aW5uZXJOb25TaGFyZWROb2RlID0gbm9kZTsKIH0KIAogdm9pZCBIaXRUZXN0UmVzdWx0OjpzZXRV
UkxFbGVtZW50KEVsZW1lbnQqIG4pIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckxpc3RJdGVtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJM
aXN0SXRlbS5jcHAKaW5kZXggZmEwMTJjOWU4YmJjM2E2NzM3M2IyMDQwM2JlNTFlMDAxOTZkMzNh
Mi4uZWE3ZjIxODg1MTgxZTRiMWNiY2QwNGRlM2YyY2E1MDI5ODQ5MjAzMSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RJdGVtLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdEl0ZW0uY3BwCkBAIC05OSw4ICs5OSw4IEBAIHN0
YXRpYyBib29sIGlzTGlzdChjb25zdCBFbGVtZW50KiBlbGVtZW50KQogc3RhdGljIEVsZW1lbnQq
IGVuY2xvc2luZ0xpc3QoY29uc3QgUmVuZGVyTGlzdEl0ZW0qIGxpc3RJdGVtKQogewogICAgIEVs
ZW1lbnQmIGxpc3RJdGVtRWxlbWVudCA9IGxpc3RJdGVtLT5lbGVtZW50KCk7Ci0gICAgRWxlbWVu
dCogZmlyc3ROb2RlID0gMDsKLSAgICBFbGVtZW50KiBwYXJlbnQgPSBsaXN0SXRlbUVsZW1lbnQu
aXNQc2V1ZG9FbGVtZW50KCkgPyB0b1BzZXVkb0VsZW1lbnQobGlzdEl0ZW1FbGVtZW50KS5ob3N0
RWxlbWVudCgpIDogbGlzdEl0ZW1FbGVtZW50LnBhcmVudEVsZW1lbnQoKTsKKyAgICBFbGVtZW50
KiBmaXJzdE5vZGUgPSBudWxscHRyOworICAgIEVsZW1lbnQqIHBhcmVudCA9IGlzPFBzZXVkb0Vs
ZW1lbnQ+KGxpc3RJdGVtRWxlbWVudCkgPyBkb3duY2FzdDxQc2V1ZG9FbGVtZW50PihsaXN0SXRl
bUVsZW1lbnQpLmhvc3RFbGVtZW50KCkgOiBsaXN0SXRlbUVsZW1lbnQucGFyZW50RWxlbWVudCgp
OwogICAgIC8vIFdlIHVzZSBwYXJlbnROb2RlIGJlY2F1c2UgdGhlIGVuY2xvc2luZyBsaXN0IGNv
dWxkIGJlIGEgU2hhZG93Um9vdCB0aGF0J3Mgbm90IEVsZW1lbnQuCiAgICAgZm9yICg7IHBhcmVu
dDsgcGFyZW50ID0gcGFyZW50LT5wYXJlbnRFbGVtZW50KCkpIHsKICAgICAgICAgaWYgKGlzTGlz
dChwYXJlbnQpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9i
amVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcAppbmRl
eCA3OWM4ZWNjNTkzZjVlMDRhYzMxY2VlMzZmMDg3MDA0ZmYyOTgxYTMwLi42ZGUzNWQwNDRmMjQ3
YzY0MTA4NjEyZjRlOTZiNGEzZDAyYzRiNjIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyT2JqZWN0LmNwcApAQCAtMjU0OSw3ICsyNTQ5LDcgQEAgYm9vbCBSZW5kZXJPYmplY3Q6
OmNhbkhhdmVHZW5lcmF0ZWRDaGlsZHJlbigpIGNvbnN0CiAKIE5vZGUqIFJlbmRlck9iamVjdDo6
Z2VuZXJhdGluZ1BzZXVkb0hvc3RFbGVtZW50KCkgY29uc3QKIHsKLSAgICByZXR1cm4gdG9Qc2V1
ZG9FbGVtZW50KG5vZGUoKSktPmhvc3RFbGVtZW50KCk7CisgICAgcmV0dXJuIGRvd25jYXN0PFBz
ZXVkb0VsZW1lbnQ+KCpub2RlKCkpLmhvc3RFbGVtZW50KCk7CiB9CiAKIHZvaWQgUmVuZGVyT2Jq
ZWN0OjpzZXROZWVkc0JvdW5kYXJpZXNVcGRhdGUoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUveG1sL1hQYXRoRnVuY3Rpb25zLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3htbC9YUGF0aEZ1bmN0
aW9ucy5jcHAKaW5kZXggZTM3ZDQwNzI4ZmFkZDk2NTUzYzcxZTkzMTVhZjNjZTA0ZDZiNjMwZS4u
MWUzNmU5YmRmYzhhODYyYzljZDRlMzJlYWZmYTEyZTgzYmYyNWJhNiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUveG1sL1hQYXRoRnVuY3Rpb25zLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS94
bWwvWFBhdGhGdW5jdGlvbnMuY3BwCkBAIC0zNjIsOCArMzYyLDggQEAgc3RhdGljIGlubGluZSBT
dHJpbmcgZXhwYW5kZWROYW1lTG9jYWxQYXJ0KE5vZGUqIG5vZGUpCiB7CiAgICAgLy8gVGhlIGxv
Y2FsIHBhcnQgb2YgYW4gWFBhdGggZXhwYW5kZWQtbmFtZSBtYXRjaGVzIERPTSBsb2NhbCBuYW1l
IGZvciBtb3N0IG5vZGUgdHlwZXMsIGV4Y2VwdCBmb3IgbmFtZXNwYWNlIG5vZGVzIGFuZCBwcm9j
ZXNzaW5nIGluc3RydWN0aW9uIG5vZGVzLgogICAgIEFTU0VSVChub2RlLT5ub2RlVHlwZSgpICE9
IE5vZGU6OlhQQVRIX05BTUVTUEFDRV9OT0RFKTsgLy8gTm90IHN1cHBvcnRlZCB5ZXQuCi0gICAg
aWYgKG5vZGUtPm5vZGVUeXBlKCkgPT0gTm9kZTo6UFJPQ0VTU0lOR19JTlNUUlVDVElPTl9OT0RF
KQotICAgICAgICByZXR1cm4gdG9Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb24obm9kZSktPnRhcmdldCgp
OworICAgIGlmIChpczxQcm9jZXNzaW5nSW5zdHJ1Y3Rpb24+KG5vZGUpKQorICAgICAgICByZXR1
cm4gZG93bmNhc3Q8UHJvY2Vzc2luZ0luc3RydWN0aW9uPigqbm9kZSkudGFyZ2V0KCk7CiAgICAg
cmV0dXJuIG5vZGUtPmxvY2FsTmFtZSgpLnN0cmluZygpOwogfQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>238797</attachid>
            <date>2014-09-27 20:44:22 -0700</date>
            <delta_ts>2014-09-27 21:39:02 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-137184-20140927204422.patch</filename>
            <type>text/plain</type>
            <size>28677</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTc0MDM2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggM2NkMjY3YmE3YTQwMjc1
MzFkMjQ3MDEyNzQzNDk4OTMwODk4NWYwMi4uNmJjYTNkNWVlNzBjNjliM2UxMGJhNjk5ZjAxMzBi
ZDc5NDU3ODA0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY3IEBACisyMDE0LTA5LTI3ICBDaHJp
c3RvcGhlIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBVc2UgdGhlIG5ldyBp
czw+KCkgLyBkb3duY2FzdDw+KCkgZm9yIG1vcmUgTm9kZSBzdWJjbGFzc2VzCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzcxODQKKworICAgICAgICBS
ZXZpZXdlZCBieSBSeW9zdWtlIE5pd2EuCisKKyAgICAgICAgVXNlIHRoZSBuZXcgaXM8PigpIC8g
ZG93bmNhc3Q8PigpIGZvciBtb3JlIE5vZGUgc3ViY2xhc3NlczoKKyAgICAgICAgQ0RBVEFTZWN0
aW9uLCBDaGFyYWN0ZXJEYXRhLCBDb21tZW50LCBEb2N1bWVudFR5cGUsCisgICAgICAgIFByb2Nl
c3NpbmdJbnN0cnVjdGlvbiwgYW5kIFBzZXVkb0VsZW1lbnQuCisKKyAgICAgICAgTm8gbmV3IHRl
c3RzLCBubyBiZWhhdmlvciBjaGFuZ2UuCisKKyAgICAgICAgKiBkb20vQ0RBVEFTZWN0aW9uLmg6
CisgICAgICAgIChXZWJDb3JlOjppc0NEQVRBU2VjdGlvbik6CisgICAgICAgICogZG9tL0NoYXJh
Y3RlckRhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2hhcmFjdGVyRGF0YTo6c2V0RGF0YUFu
ZFVwZGF0ZSk6CisgICAgICAgICogZG9tL0NoYXJhY3RlckRhdGEuaDoKKyAgICAgICAgKFdlYkNv
cmU6OmlzQ2hhcmFjdGVyRGF0YSk6CisgICAgICAgICogZG9tL0NvbW1lbnQuaDoKKyAgICAgICAg
KFdlYkNvcmU6OmlzQ29tbWVudCk6CisgICAgICAgICogZG9tL0RvY3VtZW50U3R5bGVTaGVldENv
bGxlY3Rpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRTdHlsZVNoZWV0Q29sbGVj
dGlvbjo6Y29sbGVjdEFjdGl2ZVN0eWxlU2hlZXRzKToKKyAgICAgICAgKiBkb20vRG9jdW1lbnRU
eXBlLmg6CisgICAgICAgIChXZWJDb3JlOjppc0RvY3VtZW50VHlwZSk6CisgICAgICAgICogZG9t
L0V2ZW50RGlzcGF0Y2hlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpldmVudFRhcmdldFJlc3Bl
Y3RpbmdUYXJnZXRSdWxlcyk6CisgICAgICAgIChXZWJDb3JlOjpub2RlT3JIb3N0SWZQc2V1ZG9F
bGVtZW50KToKKyAgICAgICAgKiBkb20vTm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjptYXJr
QW5jZXN0b3JzV2l0aENoaWxkTmVlZHNTdHlsZVJlY2FsYyk6CisgICAgICAgIChXZWJDb3JlOjpO
b2RlOjpwc2V1ZG9Bd2FyZVByZXZpb3VzU2libGluZyk6CisgICAgICAgIChXZWJDb3JlOjpOb2Rl
Ojpwc2V1ZG9Bd2FyZU5leHRTaWJsaW5nKToKKyAgICAgICAgKiBkb20vTm9kZVRyYXZlcnNhbC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpOb2RlVHJhdmVyc2FsOjpwcmV2aW91c0luY2x1ZGluZ1Bz
ZXVkbyk6CisgICAgICAgIChXZWJDb3JlOjpOb2RlVHJhdmVyc2FsOjpuZXh0SW5jbHVkaW5nUHNl
dWRvKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGVUcmF2ZXJzYWw6Om5leHRJbmNsdWRpbmdQc2V1
ZG9Ta2lwcGluZ0NoaWxkcmVuKToKKyAgICAgICAgKiBkb20vUHJvY2Vzc2luZ0luc3RydWN0aW9u
Lmg6CisgICAgICAgIChXZWJDb3JlOjppc1Byb2Nlc3NpbmdJbnN0cnVjdGlvbik6CisgICAgICAg
ICogZG9tL1BzZXVkb0VsZW1lbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OmlzUHNldWRvRWxlbWVu
dCk6CisgICAgICAgICogZG9tL1JhbmdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Omxlbmd0aE9m
Q29udGVudHNJbk5vZGUpOgorICAgICAgICAoV2ViQ29yZTo6UmFuZ2U6OnByb2Nlc3NDb250ZW50
c0JldHdlZW5PZmZzZXRzKToKKyAgICAgICAgKFdlYkNvcmU6OlJhbmdlOjpjaGVja05vZGVXT2Zm
c2V0KToKKyAgICAgICAgKiBlZGl0aW5nL0VkaXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpF
ZGl0b3I6OnNob3VsZEluc2VydEZyYWdtZW50KToKKyAgICAgICAgKiBlZGl0aW5nL01hcmt1cEFj
Y3VtdWxhdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1hcmt1cEFjY3VtdWxhdG9yOjphcHBl
bmRTdGFydE1hcmt1cCk6CisgICAgICAgICogZWRpdGluZy9jb2NvYS9IVE1MQ29udmVydGVyLm1t
OgorICAgICAgICAoSFRNTENvbnZlcnRlcjo6X3RyYXZlcnNlTm9kZSk6CisgICAgICAgICogaW5z
cGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rv
ckRPTUFnZW50OjpidWlsZE9iamVjdEZvck5vZGUpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNw
ZWN0b3JMYXllclRyZWVBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JMYXll
clRyZWVBZ2VudDo6YnVpbGRPYmplY3RGb3JMYXllcik6CisgICAgICAgICogcmVuZGVyaW5nL0hp
dFRlc3RSZXN1bHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SGl0VGVzdFJlc3VsdDo6c2V0SW5u
ZXJOb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OkhpdFRlc3RSZXN1bHQ6OnNldElubmVyTm9uU2hh
cmVkTm9kZSk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxpc3RJdGVtLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OmVuY2xvc2luZ0xpc3QpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJP
YmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyT2JqZWN0OjpnZW5lcmF0aW5nUHNl
dWRvSG9zdEVsZW1lbnQpOgorICAgICAgICAqIHhtbC9YUGF0aEZ1bmN0aW9ucy5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpYUGF0aDo6ZXhwYW5kZWROYW1lTG9jYWxQYXJ0KToKKwogMjAxNC0wOS0y
NyAgQmVuamFtaW4gUG91bGFpbiAgPGJwb3VsYWluQGFwcGxlLmNvbT4KIAogICAgICAgICBDaGFp
bmluZyBtdWx0aXBsZSA6bnRoLWNoaWxkKCkgZG9lcyBub3Qgd29yayBwcm9wZXJseQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0NEQVRBU2VjdGlvbi5oIGIvU291cmNlL1dlYkNvcmUv
ZG9tL0NEQVRBU2VjdGlvbi5oCmluZGV4IGE5M2RjNDk2Yzk5ZmVlMzNiZDMxNWY1ZjUzYmQ5MmY5
YjZjOGM0MTkuLjZjZDRmNjhjNjBiOWQ2NWU5M2RlN2E5MTEwODkyNzZkYTYyZTk1OWEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9DREFUQVNlY3Rpb24uaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vQ0RBVEFTZWN0aW9uLmgKQEAgLTQxLDExICs0MSw5IEBAIHByaXZhdGU6CiAgICAg
dmlydHVhbCBQYXNzUmVmUHRyPFRleHQ+IHZpcnR1YWxDcmVhdGUoY29uc3QgU3RyaW5nJikgb3Zl
cnJpZGU7CiB9OwogCi1pbmxpbmUgYm9vbCBpc0NEQVRBU2VjdGlvbihjb25zdCBOb2RlJiBub2Rl
KSB7IHJldHVybiBub2RlLm5vZGVUeXBlKCkgPT0gTm9kZTo6Q0RBVEFfU0VDVElPTl9OT0RFOyB9
Ci12b2lkIGlzQ0RBVEFTZWN0aW9uKGNvbnN0IENEQVRBU2VjdGlvbiYpOyAvLyBDYXRjaCB1bm5l
Y2Vzc2FyeSBydW50aW1lIGNoZWNrIG9mIHR5cGUga25vd24gYXQgY29tcGlsZSB0aW1lLgotdm9p
ZCBpc0NEQVRBU2VjdGlvbihjb25zdCBDb250YWluZXJOb2RlJik7IC8vIENhdGNoIHVubmVjZXNz
YXJ5IHJ1bnRpbWUgY2hlY2sgb2YgdHlwZSBrbm93biBhdCBjb21waWxlIHRpbWUuCi0KLU5PREVf
VFlQRV9DQVNUUyhDREFUQVNlY3Rpb24pCitTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0JFR0lOKENE
QVRBU2VjdGlvbikKKyAgICBzdGF0aWMgYm9vbCBpc0NEQVRBU2VjdGlvbihjb25zdCBOb2RlJiBu
b2RlKSB7IHJldHVybiBub2RlLm5vZGVUeXBlKCkgPT0gTm9kZTo6Q0RBVEFfU0VDVElPTl9OT0RF
OyB9CitTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0VORCgpCiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0NoYXJhY3RlckRhdGEuY3BwIGIv
U291cmNlL1dlYkNvcmUvZG9tL0NoYXJhY3RlckRhdGEuY3BwCmluZGV4IDMxZjBkNWZhNTFlOTg3
ZTU2OTA4NGFmZWJlYWM5ZWQ4MWY1MTI1MWUuLmMzYzljYzQyNjQ5MmNlMWZkZGY1ZmRiY2RlNGRj
YzVhMmU2ZjA0M2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9DaGFyYWN0ZXJEYXRh
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ2hhcmFjdGVyRGF0YS5jcHAKQEAgLTE5OCw4
ICsxOTgsOCBAQCB2b2lkIENoYXJhY3RlckRhdGE6OnNldERhdGFBbmRVcGRhdGUoY29uc3QgU3Ry
aW5nJiBuZXdEYXRhLCB1bnNpZ25lZCBvZmZzZXRPZlJlcAogICAgIGlmIChpc1RleHROb2RlKCkp
CiAgICAgICAgIFN0eWxlOjp1cGRhdGVUZXh0UmVuZGVyZXJBZnRlckNvbnRlbnRDaGFuZ2UoKnRv
VGV4dCh0aGlzKSwgb2Zmc2V0T2ZSZXBsYWNlZERhdGEsIG9sZExlbmd0aCk7CiAKLSAgICBpZiAo
bm9kZVR5cGUoKSA9PSBQUk9DRVNTSU5HX0lOU1RSVUNUSU9OX05PREUpCi0gICAgICAgIHRvUHJv
Y2Vzc2luZ0luc3RydWN0aW9uKHRoaXMpLT5jaGVja1N0eWxlU2hlZXQoKTsKKyAgICBpZiAoaXM8
UHJvY2Vzc2luZ0luc3RydWN0aW9uPih0aGlzKSkKKyAgICAgICAgZG93bmNhc3Q8UHJvY2Vzc2lu
Z0luc3RydWN0aW9uPigqdGhpcykuY2hlY2tTdHlsZVNoZWV0KCk7CiAKICAgICBpZiAoZG9jdW1l
bnQoKS5mcmFtZSgpKQogICAgICAgICBkb2N1bWVudCgpLmZyYW1lKCktPnNlbGVjdGlvbigpLnRl
eHRXYXNSZXBsYWNlZCh0aGlzLCBvZmZzZXRPZlJlcGxhY2VkRGF0YSwgb2xkTGVuZ3RoLCBuZXdM
ZW5ndGgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0NoYXJhY3RlckRhdGEuaCBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9DaGFyYWN0ZXJEYXRhLmgKaW5kZXggZGZiNGIyMWRkYzhmMjgy
YTNkZWNjMjZhN2U1NWMxNzQwMTI3MTVmZS4uMDE2ZWRkNWFmMmZmODE1NDk2N2FiNjk5OTA0OWVk
ZDdkZWIxODVkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0NoYXJhY3RlckRhdGEu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ2hhcmFjdGVyRGF0YS5oCkBAIC03NiwxMSArNzYs
OSBAQCBwcml2YXRlOgogICAgIFN0cmluZyBtX2RhdGE7CiB9OwogCi1pbmxpbmUgYm9vbCBpc0No
YXJhY3RlckRhdGEoY29uc3QgTm9kZSYgbm9kZSkgeyByZXR1cm4gbm9kZS5pc0NoYXJhY3RlckRh
dGFOb2RlKCk7IH0KLXZvaWQgaXNDaGFyYWN0ZXJEYXRhKGNvbnN0IENoYXJhY3RlckRhdGEmKTsg
Ly8gQ2F0Y2ggdW5uZWNlc3NhcnkgcnVudGltZSBjaGVjayBvZiB0eXBlIGtub3duIGF0IGNvbXBp
bGUgdGltZS4KLXZvaWQgaXNDaGFyYWN0ZXJEYXRhKGNvbnN0IENvbnRhaW5lck5vZGUmKTsgLy8g
Q2F0Y2ggdW5uZWNlc3NhcnkgcnVudGltZSBjaGVjayBvZiB0eXBlIGtub3duIGF0IGNvbXBpbGUg
dGltZS4KLQotTk9ERV9UWVBFX0NBU1RTKENoYXJhY3RlckRhdGEpCitTUEVDSUFMSVpFX1RZUEVf
VFJBSVRTX0JFR0lOKENoYXJhY3RlckRhdGEpCisgICAgc3RhdGljIGJvb2wgaXNDaGFyYWN0ZXJE
YXRhKGNvbnN0IE5vZGUmIG5vZGUpIHsgcmV0dXJuIG5vZGUuaXNDaGFyYWN0ZXJEYXRhTm9kZSgp
OyB9CitTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0VORCgpCiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0NvbW1lbnQuaCBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Db21tZW50LmgKaW5kZXggNDg3MjliNmFjMDc0NjU3NTc2NzFjMDM5M2UzODk4
N2EwYWFkZjI0YS4uMGE3ZGVjZWM5YTkyZGM5ZGUzMmM3MTFhNzI0YmExMGNlNmI3MGEyOCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0NvbW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vQ29tbWVudC5oCkBAIC00MSwxMSArNDEsOSBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwg
Ym9vbCBjaGlsZFR5cGVBbGxvd2VkKE5vZGVUeXBlKSBjb25zdCBvdmVycmlkZTsKIH07CiAKLWlu
bGluZSBib29sIGlzQ29tbWVudChjb25zdCBOb2RlJiBub2RlKSB7IHJldHVybiBub2RlLm5vZGVU
eXBlKCkgPT0gTm9kZTo6Q09NTUVOVF9OT0RFOyB9Ci12b2lkIGlzQ29tbWVudChjb25zdCBDb21t
ZW50Jik7IC8vIENhdGNoIHVubmVjZXNzYXJ5IHJ1bnRpbWUgY2hlY2sgb2YgdHlwZSBrbm93biBh
dCBjb21waWxlIHRpbWUuCi12b2lkIGlzQ29tbWVudChjb25zdCBDb250YWluZXJOb2RlJik7IC8v
IENhdGNoIHVubmVjZXNzYXJ5IHJ1bnRpbWUgY2hlY2sgb2YgdHlwZSBrbm93biBhdCBjb21waWxl
IHRpbWUuCi0KLU5PREVfVFlQRV9DQVNUUyhDb21tZW50KQorU1BFQ0lBTElaRV9UWVBFX1RSQUlU
U19CRUdJTihDb21tZW50KQorICAgIHN0YXRpYyBib29sIGlzQ29tbWVudChjb25zdCBOb2RlJiBu
b2RlKSB7IHJldHVybiBub2RlLm5vZGVUeXBlKCkgPT0gTm9kZTo6Q09NTUVOVF9OT0RFOyB9CitT
UEVDSUFMSVpFX1RZUEVfVFJBSVRTX0VORCgpCiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50U3R5bGVTaGVldENvbGxlY3Rp
b24uY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50U3R5bGVTaGVldENvbGxlY3Rpb24u
Y3BwCmluZGV4IDBjMWU5MWI0MWVmYmVhNGY1ZGFkNWE5NmQxYmVmMzU5ZGUzNDhhMGYuLjc4YjA4
NDdlMjFiODU0MTE4ZjRjNmFjOWVjYTBmYzQyY2U4NGIwNGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Eb2N1bWVudFN0eWxlU2hlZXRDb2xsZWN0aW9uLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vRG9jdW1lbnRTdHlsZVNoZWV0Q29sbGVjdGlvbi5jcHAKQEAgLTI2NiwxNyAr
MjY2LDE3IEBAIHZvaWQgRG9jdW1lbnRTdHlsZVNoZWV0Q29sbGVjdGlvbjo6Y29sbGVjdEFjdGl2
ZVN0eWxlU2hlZXRzKFZlY3RvcjxSZWZQdHI8U3R5bGVTCiAKICAgICBmb3IgKGF1dG8mIG5vZGUg
OiBtX3N0eWxlU2hlZXRDYW5kaWRhdGVOb2RlcykgewogICAgICAgICBTdHlsZVNoZWV0KiBzaGVl
dCA9IG51bGxwdHI7Ci0gICAgICAgIGlmIChub2RlLT5ub2RlVHlwZSgpID09IE5vZGU6OlBST0NF
U1NJTkdfSU5TVFJVQ1RJT05fTk9ERSkgeworICAgICAgICBpZiAoaXM8UHJvY2Vzc2luZ0luc3Ry
dWN0aW9uPihub2RlKSkgewogICAgICAgICAgICAgLy8gUHJvY2Vzc2luZyBpbnN0cnVjdGlvbiAo
WE1MIGRvY3VtZW50cyBvbmx5KS4KICAgICAgICAgICAgIC8vIFdlIGRvbid0IHN1cHBvcnQgbGlu
a2luZyB0byBlbWJlZGRlZCBDU1Mgc3R5bGVzaGVldHMsIHNlZSA8aHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTQ5MjgxPiBmb3IgZGlzY3Vzc2lvbi4KLSAgICAgICAgICAg
IFByb2Nlc3NpbmdJbnN0cnVjdGlvbiogcGkgPSB0b1Byb2Nlc3NpbmdJbnN0cnVjdGlvbihub2Rl
KTsKLSAgICAgICAgICAgIHNoZWV0ID0gcGktPnNoZWV0KCk7CisgICAgICAgICAgICBQcm9jZXNz
aW5nSW5zdHJ1Y3Rpb24mIHBpID0gZG93bmNhc3Q8UHJvY2Vzc2luZ0luc3RydWN0aW9uPigqbm9k
ZSk7CisgICAgICAgICAgICBzaGVldCA9IHBpLnNoZWV0KCk7CiAjaWYgRU5BQkxFKFhTTFQpCiAg
ICAgICAgICAgICAvLyBEb24ndCBhcHBseSBYU0wgdHJhbnNmb3JtcyB0byBhbHJlYWR5IHRyYW5z
Zm9ybWVkIGRvY3VtZW50cyAtLSA8cmRhcjovL3Byb2JsZW0vNDEzMjgwNj4KLSAgICAgICAgICAg
IGlmIChwaS0+aXNYU0woKSAmJiAhbV9kb2N1bWVudC50cmFuc2Zvcm1Tb3VyY2VEb2N1bWVudCgp
KSB7CisgICAgICAgICAgICBpZiAocGkuaXNYU0woKSAmJiAhbV9kb2N1bWVudC50cmFuc2Zvcm1T
b3VyY2VEb2N1bWVudCgpKSB7CiAgICAgICAgICAgICAgICAgLy8gRG9uJ3QgYXBwbHkgWFNMIHRy
YW5zZm9ybXMgdW50aWwgbG9hZGluZyBpcyBmaW5pc2hlZC4KICAgICAgICAgICAgICAgICBpZiAo
IW1fZG9jdW1lbnQucGFyc2luZygpKQotICAgICAgICAgICAgICAgICAgICBtX2RvY3VtZW50LmFw
cGx5WFNMVHJhbnNmb3JtKHBpKTsKKyAgICAgICAgICAgICAgICAgICAgbV9kb2N1bWVudC5hcHBs
eVhTTFRyYW5zZm9ybSgmcGkpOwogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAg
IH0KICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50VHlwZS5o
IGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50VHlwZS5oCmluZGV4IGFhNjM2ZGFkMTFiMzUz
Y2ExODM5MjM1ZDZhNGIwM2I1M2RjZjk0MGQuLmY0ZWY3OWNlMGVkNWE0MDVkYWQyOTVmZDAzODNh
NGRlMzlkYjJmYjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudFR5cGUu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRUeXBlLmgKQEAgLTYwLDEyICs2MCw5
IEBAIHByaXZhdGU6CiAgICAgU3RyaW5nIG1fc3Vic2V0OwogfTsKIAotaW5saW5lIGJvb2wgaXNE
b2N1bWVudFR5cGUoY29uc3QgTm9kZSYgbm9kZSkKLXsKLSAgICByZXR1cm4gbm9kZS5ub2RlVHlw
ZSgpID09IE5vZGU6OkRPQ1VNRU5UX1RZUEVfTk9ERTsKLX0KLQotTk9ERV9UWVBFX0NBU1RTKERv
Y3VtZW50VHlwZSkKK1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNfQkVHSU4oRG9jdW1lbnRUeXBlKQor
ICAgIHN0YXRpYyBib29sIGlzRG9jdW1lbnRUeXBlKGNvbnN0IE5vZGUmIG5vZGUpIHsgcmV0dXJu
IG5vZGUubm9kZVR5cGUoKSA9PSBOb2RlOjpET0NVTUVOVF9UWVBFX05PREU7IH0KK1NQRUNJQUxJ
WkVfVFlQRV9UUkFJVFNfRU5EKCkKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnREaXNwYXRjaGVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9FdmVudERpc3BhdGNoZXIuY3BwCmluZGV4IGEwZjk2MzAyODk5YjE4OGI1ODRlMTk5
MTI1Y2MwM2VmMzIwZjcwNTAuLmY3NmI5MjQzYzBiZDhhZjQ5YzM2NTY3NDIzYjZjNzQ1MjU5ZGY3
ZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudERpc3BhdGNoZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudERpc3BhdGNoZXIuY3BwCkBAIC0yMDUsOCArMjA1
LDggQEAgcHJpdmF0ZToKIAogaW5saW5lIEV2ZW50VGFyZ2V0JiBldmVudFRhcmdldFJlc3BlY3Rp
bmdUYXJnZXRSdWxlcyhOb2RlJiByZWZlcmVuY2VOb2RlKQogewotICAgIGlmIChyZWZlcmVuY2VO
b2RlLmlzUHNldWRvRWxlbWVudCgpKSB7Ci0gICAgICAgIEV2ZW50VGFyZ2V0KiBob3N0RWxlbWVu
dCA9IHRvUHNldWRvRWxlbWVudChyZWZlcmVuY2VOb2RlKS5ob3N0RWxlbWVudCgpOworICAgIGlm
IChpczxQc2V1ZG9FbGVtZW50PihyZWZlcmVuY2VOb2RlKSkgeworICAgICAgICBFdmVudFRhcmdl
dCogaG9zdEVsZW1lbnQgPSBkb3duY2FzdDxQc2V1ZG9FbGVtZW50PihyZWZlcmVuY2VOb2RlKS5o
b3N0RWxlbWVudCgpOwogICAgICAgICBBU1NFUlQoaG9zdEVsZW1lbnQpOwogICAgICAgICByZXR1
cm4gKmhvc3RFbGVtZW50OwogICAgIH0KQEAgLTQxOCw3ICs0MTgsNyBAQCBzdGF0aWMgaW5saW5l
IGJvb2wgc2hvdWxkRXZlbnRDcm9zc1NoYWRvd0JvdW5kYXJ5KEV2ZW50JiBldmVudCwgU2hhZG93
Um9vdCYgc2hhZAogCiBzdGF0aWMgTm9kZSogbm9kZU9ySG9zdElmUHNldWRvRWxlbWVudChOb2Rl
KiBub2RlKQogewotICAgIHJldHVybiBub2RlLT5pc1BzZXVkb0VsZW1lbnQoKSA/IHRvUHNldWRv
RWxlbWVudChub2RlKS0+aG9zdEVsZW1lbnQoKSA6IG5vZGU7CisgICAgcmV0dXJuIGlzPFBzZXVk
b0VsZW1lbnQ+KG5vZGUpID8gZG93bmNhc3Q8UHNldWRvRWxlbWVudD4oKm5vZGUpLmhvc3RFbGVt
ZW50KCkgOiBub2RlOwogfQogCiBFdmVudFBhdGg6OkV2ZW50UGF0aChOb2RlJiB0YXJnZXROb2Rl
LCBFdmVudCYgZXZlbnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAKaW5kZXggZjZkNjA1YzM4MTc4MGIwODdjMDdl
ZDI0ZTg3YzEyNDFhYjUwOWIyYi4uMzgxODA0YTc5OGM0ZmM0MmFkYzJiZjdhY2U3NjBjZmM4MmMz
MzUyYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcApAQCAtNjcyLDcgKzY3Miw3IEBAIHZvaWQgTm9kZTo6ZGVy
ZWZFdmVudFRhcmdldCgpCiAKIHN0YXRpYyBpbmxpbmUgdm9pZCBtYXJrQW5jZXN0b3JzV2l0aENo
aWxkTmVlZHNTdHlsZVJlY2FsYyhOb2RlJiBub2RlKQogewotICAgIGlmIChDb250YWluZXJOb2Rl
KiBhbmNlc3RvciA9IG5vZGUuaXNQc2V1ZG9FbGVtZW50KCkgPyB0b1BzZXVkb0VsZW1lbnQobm9k
ZSkuaG9zdEVsZW1lbnQoKSA6IG5vZGUucGFyZW50T3JTaGFkb3dIb3N0Tm9kZSgpKSB7CisgICAg
aWYgKENvbnRhaW5lck5vZGUqIGFuY2VzdG9yID0gaXM8UHNldWRvRWxlbWVudD4obm9kZSkgPyBk
b3duY2FzdDxQc2V1ZG9FbGVtZW50Pihub2RlKS5ob3N0RWxlbWVudCgpIDogbm9kZS5wYXJlbnRP
clNoYWRvd0hvc3ROb2RlKCkpIHsKICAgICAgICAgYW5jZXN0b3ItPnNldERpcmVjdENoaWxkTmVl
ZHNTdHlsZVJlY2FsYygpOwogCiAgICAgICAgIGZvciAoOyBhbmNlc3RvciAmJiAhYW5jZXN0b3It
PmNoaWxkTmVlZHNTdHlsZVJlY2FsYygpOyBhbmNlc3RvciA9IGFuY2VzdG9yLT5wYXJlbnRPclNo
YWRvd0hvc3ROb2RlKCkpCkBAIC04NzIsNyArODcyLDcgQEAgYm9vbCBOb2RlOjpjb250YWluc0lu
Y2x1ZGluZ0hvc3RFbGVtZW50cyhjb25zdCBOb2RlKiBub2RlKSBjb25zdAogCiBOb2RlKiBOb2Rl
Ojpwc2V1ZG9Bd2FyZVByZXZpb3VzU2libGluZygpIGNvbnN0CiB7Ci0gICAgRWxlbWVudCogcGFy
ZW50T3JIb3N0ID0gaXNQc2V1ZG9FbGVtZW50KCkgPyB0b1BzZXVkb0VsZW1lbnQodGhpcyktPmhv
c3RFbGVtZW50KCkgOiBwYXJlbnRFbGVtZW50KCk7CisgICAgRWxlbWVudCogcGFyZW50T3JIb3N0
ID0gaXM8UHNldWRvRWxlbWVudD4odGhpcykgPyBkb3duY2FzdDxQc2V1ZG9FbGVtZW50PigqdGhp
cykuaG9zdEVsZW1lbnQoKSA6IHBhcmVudEVsZW1lbnQoKTsKICAgICBpZiAocGFyZW50T3JIb3N0
ICYmICFwcmV2aW91c1NpYmxpbmcoKSkgewogICAgICAgICBpZiAoaXNBZnRlclBzZXVkb0VsZW1l
bnQoKSAmJiBwYXJlbnRPckhvc3QtPmxhc3RDaGlsZCgpKQogICAgICAgICAgICAgcmV0dXJuIHBh
cmVudE9ySG9zdC0+bGFzdENoaWxkKCk7CkBAIC04ODQsNyArODg0LDcgQEAgTm9kZSogTm9kZTo6
cHNldWRvQXdhcmVQcmV2aW91c1NpYmxpbmcoKSBjb25zdAogCiBOb2RlKiBOb2RlOjpwc2V1ZG9B
d2FyZU5leHRTaWJsaW5nKCkgY29uc3QKIHsKLSAgICBFbGVtZW50KiBwYXJlbnRPckhvc3QgPSBp
c1BzZXVkb0VsZW1lbnQoKSA/IHRvUHNldWRvRWxlbWVudCh0aGlzKS0+aG9zdEVsZW1lbnQoKSA6
IHBhcmVudEVsZW1lbnQoKTsKKyAgICBFbGVtZW50KiBwYXJlbnRPckhvc3QgPSBpczxQc2V1ZG9F
bGVtZW50Pih0aGlzKSA/IGRvd25jYXN0PFBzZXVkb0VsZW1lbnQ+KCp0aGlzKS5ob3N0RWxlbWVu
dCgpIDogcGFyZW50RWxlbWVudCgpOwogICAgIGlmIChwYXJlbnRPckhvc3QgJiYgIW5leHRTaWJs
aW5nKCkpIHsKICAgICAgICAgaWYgKGlzQmVmb3JlUHNldWRvRWxlbWVudCgpICYmIHBhcmVudE9y
SG9zdC0+Zmlyc3RDaGlsZCgpKQogICAgICAgICAgICAgcmV0dXJuIHBhcmVudE9ySG9zdC0+Zmly
c3RDaGlsZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGVUcmF2ZXJzYWwu
Y3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGVUcmF2ZXJzYWwuY3BwCmluZGV4IDdhZDExMzA3
YzA2ZTc0NWM5Yzg2M2FkMTI5NWU2ZjgzNjNkM2Y0ZmMuLmZiZmQ3ZDhkMGFkMDhhOTZiNzRlNzE1
ZmY3ZTNkOTQwZWFhZTlhNzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlVHJh
dmVyc2FsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZVRyYXZlcnNhbC5jcHAKQEAg
LTM1LDEzICszNSwxMyBAQCBOb2RlKiBwcmV2aW91c0luY2x1ZGluZ1BzZXVkbyhjb25zdCBOb2Rl
KiBjdXJyZW50LCBjb25zdCBOb2RlKiBzdGF5V2l0aGluKQogewogICAgIE5vZGUqIHByZXZpb3Vz
OwogICAgIGlmIChjdXJyZW50ID09IHN0YXlXaXRoaW4pCi0gICAgICAgIHJldHVybiAwOworICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKICAgICBpZiAoKHByZXZpb3VzID0gY3VycmVudC0+cHNldWRv
QXdhcmVQcmV2aW91c1NpYmxpbmcoKSkpIHsKICAgICAgICAgd2hpbGUgKHByZXZpb3VzLT5wc2V1
ZG9Bd2FyZUxhc3RDaGlsZCgpKQogICAgICAgICAgICAgcHJldmlvdXMgPSBwcmV2aW91cy0+cHNl
dWRvQXdhcmVMYXN0Q2hpbGQoKTsKICAgICAgICAgcmV0dXJuIHByZXZpb3VzOwogICAgIH0KLSAg
ICByZXR1cm4gY3VycmVudC0+aXNQc2V1ZG9FbGVtZW50KCkgPyB0b1BzZXVkb0VsZW1lbnQoY3Vy
cmVudCktPmhvc3RFbGVtZW50KCkgOiBjdXJyZW50LT5wYXJlbnROb2RlKCk7CisgICAgcmV0dXJu
IGlzPFBzZXVkb0VsZW1lbnQ+KGN1cnJlbnQpID8gZG93bmNhc3Q8UHNldWRvRWxlbWVudD4oKmN1
cnJlbnQpLmhvc3RFbGVtZW50KCkgOiBjdXJyZW50LT5wYXJlbnROb2RlKCk7CiB9CiAKIE5vZGUq
IG5leHRJbmNsdWRpbmdQc2V1ZG8oY29uc3QgTm9kZSogY3VycmVudCwgY29uc3QgTm9kZSogc3Rh
eVdpdGhpbikKQEAgLTUwLDM0ICs1MCwzNCBAQCBOb2RlKiBuZXh0SW5jbHVkaW5nUHNldWRvKGNv
bnN0IE5vZGUqIGN1cnJlbnQsIGNvbnN0IE5vZGUqIHN0YXlXaXRoaW4pCiAgICAgaWYgKChuZXh0
ID0gY3VycmVudC0+cHNldWRvQXdhcmVGaXJzdENoaWxkKCkpKQogICAgICAgICByZXR1cm4gbmV4
dDsKICAgICBpZiAoY3VycmVudCA9PSBzdGF5V2l0aGluKQotICAgICAgICByZXR1cm4gMDsKKyAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgaWYgKChuZXh0ID0gY3VycmVudC0+cHNldWRvQXdh
cmVOZXh0U2libGluZygpKSkKICAgICAgICAgcmV0dXJuIG5leHQ7Ci0gICAgY3VycmVudCA9IGN1
cnJlbnQtPmlzUHNldWRvRWxlbWVudCgpID8gdG9Qc2V1ZG9FbGVtZW50KGN1cnJlbnQpLT5ob3N0
RWxlbWVudCgpIDogY3VycmVudC0+cGFyZW50Tm9kZSgpOworICAgIGN1cnJlbnQgPSBpczxQc2V1
ZG9FbGVtZW50PihjdXJyZW50KSA/IGRvd25jYXN0PFBzZXVkb0VsZW1lbnQ+KCpjdXJyZW50KS5o
b3N0RWxlbWVudCgpIDogY3VycmVudC0+cGFyZW50Tm9kZSgpOwogICAgIGZvciAoOyBjdXJyZW50
OyBjdXJyZW50ID0gY3VycmVudC0+cGFyZW50Tm9kZSgpKSB7CiAgICAgICAgIGlmIChjdXJyZW50
ID09IHN0YXlXaXRoaW4pCi0gICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgICAgIHJldHVy
biBudWxscHRyOwogICAgICAgICBpZiAoKG5leHQgPSBjdXJyZW50LT5wc2V1ZG9Bd2FyZU5leHRT
aWJsaW5nKCkpKQogICAgICAgICAgICAgcmV0dXJuIG5leHQ7CiAgICAgfQotICAgIHJldHVybiAw
OworICAgIHJldHVybiBudWxscHRyOwogfQogCiBOb2RlKiBuZXh0SW5jbHVkaW5nUHNldWRvU2tp
cHBpbmdDaGlsZHJlbihjb25zdCBOb2RlKiBjdXJyZW50LCBjb25zdCBOb2RlKiBzdGF5V2l0aGlu
KQogewogICAgIE5vZGUqIG5leHQ7CiAgICAgaWYgKGN1cnJlbnQgPT0gc3RheVdpdGhpbikKLSAg
ICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIGlmICgobmV4dCA9
IGN1cnJlbnQtPnBzZXVkb0F3YXJlTmV4dFNpYmxpbmcoKSkpCiAgICAgICAgIHJldHVybiBuZXh0
OwotICAgIGN1cnJlbnQgPSBjdXJyZW50LT5pc1BzZXVkb0VsZW1lbnQoKSA/IHRvUHNldWRvRWxl
bWVudChjdXJyZW50KS0+aG9zdEVsZW1lbnQoKSA6IGN1cnJlbnQtPnBhcmVudE5vZGUoKTsKKyAg
ICBjdXJyZW50ID0gaXM8UHNldWRvRWxlbWVudD4oY3VycmVudCkgPyBkb3duY2FzdDxQc2V1ZG9F
bGVtZW50PigqY3VycmVudCkuaG9zdEVsZW1lbnQoKSA6IGN1cnJlbnQtPnBhcmVudE5vZGUoKTsK
ICAgICBmb3IgKDsgY3VycmVudDsgY3VycmVudCA9IGN1cnJlbnQtPnBhcmVudE5vZGUoKSkgewog
ICAgICAgICBpZiAoY3VycmVudCA9PSBzdGF5V2l0aGluKQotICAgICAgICAgICAgcmV0dXJuIDA7
CisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAgICAgaWYgKChuZXh0ID0gY3VycmVu
dC0+cHNldWRvQXdhcmVOZXh0U2libGluZygpKSkKICAgICAgICAgICAgIHJldHVybiBuZXh0Owog
ICAgIH0KLSAgICByZXR1cm4gMDsKKyAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAogTm9kZSogbmV4
dEFuY2VzdG9yU2libGluZyhjb25zdCBOb2RlKiBjdXJyZW50KQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZG9tL1Byb2Nlc3NpbmdJbnN0cnVjdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvZG9t
L1Byb2Nlc3NpbmdJbnN0cnVjdGlvbi5oCmluZGV4IDdkNDU1ODUzMDk0ZWUyYzcyOWNlNjMyMzg3
YzljMGZiMDk5YzU4NzUuLmIzMjVjMzhkYWY1NDBhMDllOGZiZGI1MzhmY2U3YmYwM2VlODAzOWEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb24uaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vUHJvY2Vzc2luZ0luc3RydWN0aW9uLmgKQEAgLTkxLDEy
ICs5MSw5IEBAIHByaXZhdGU6CiAjZW5kaWYKIH07CiAKLWlubGluZSBib29sIGlzUHJvY2Vzc2lu
Z0luc3RydWN0aW9uKGNvbnN0IE5vZGUmIG5vZGUpCi17Ci0gICAgcmV0dXJuIG5vZGUubm9kZVR5
cGUoKSA9PSBOb2RlOjpQUk9DRVNTSU5HX0lOU1RSVUNUSU9OX05PREU7Ci19Ci0KLU5PREVfVFlQ
RV9DQVNUUyhQcm9jZXNzaW5nSW5zdHJ1Y3Rpb24pCitTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0JF
R0lOKFByb2Nlc3NpbmdJbnN0cnVjdGlvbikKKyAgICBzdGF0aWMgYm9vbCBpc1Byb2Nlc3NpbmdJ
bnN0cnVjdGlvbihjb25zdCBOb2RlJiBub2RlKSB7IHJldHVybiBub2RlLm5vZGVUeXBlKCkgPT0g
Tm9kZTo6UFJPQ0VTU0lOR19JTlNUUlVDVElPTl9OT0RFOyB9CitTUEVDSUFMSVpFX1RZUEVfVFJB
SVRTX0VORCgpCiAKIH0gLy9uYW1lc3BhY2UKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZG9tL1BzZXVkb0VsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Qc2V1ZG9FbGVtZW50LmgK
aW5kZXggMjhmMDM0N2NlYzcxZjI2YTIyMDRiNTQ2NmU1MDUwNGJjMDEwY2M3Yy4uMGE5MGE0NWU2
MDE5OTJjZTQ3MzAwOTI4ZDI0ODFlNGQ1NTNjMWRmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvZG9tL1BzZXVkb0VsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vUHNldWRvRWxl
bWVudC5oCkBAIC03Nyw5ICs3Nyw5IEBAIGlubGluZSBib29sIHBzZXVkb0VsZW1lbnRSZW5kZXJl
cklzTmVlZGVkKGNvbnN0IFJlbmRlclN0eWxlKiBzdHlsZSkKICAgICByZXR1cm4gc3R5bGUgJiYg
c3R5bGUtPmRpc3BsYXkoKSAhPSBOT05FICYmIChzdHlsZS0+Y29udGVudERhdGEoKSB8fCBzdHls
ZS0+aGFzRmxvd0Zyb20oKSk7CiB9CiAKLXZvaWQgaXNQc2V1ZG9FbGVtZW50KGNvbnN0IFBzZXVk
b0VsZW1lbnQmKTsgLy8gQ2F0Y2ggdW5uZWNlc3NhcnkgcnVudGltZSBjaGVjayBvZiB0eXBlIGtu
b3duIGF0IGNvbXBpbGUgdGltZS4KLWlubGluZSBib29sIGlzUHNldWRvRWxlbWVudChjb25zdCBO
b2RlJiBub2RlKSB7IHJldHVybiBub2RlLmlzUHNldWRvRWxlbWVudCgpOyB9Ci1OT0RFX1RZUEVf
Q0FTVFMoUHNldWRvRWxlbWVudCkKK1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNfQkVHSU4oUHNldWRv
RWxlbWVudCkKKyAgICBzdGF0aWMgYm9vbCBpc1BzZXVkb0VsZW1lbnQoY29uc3QgTm9kZSYgbm9k
ZSkgeyByZXR1cm4gbm9kZS5pc1BzZXVkb0VsZW1lbnQoKTsgfQorU1BFQ0lBTElaRV9UWVBFX1RS
QUlUU19FTkQoKQogCiB9IC8vIG5hbWVzcGFjZQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vUmFuZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL1JhbmdlLmNwcAppbmRleCA4NzE1
NzY2MTA5Njc1MWZkYzRjZDBjNzhiZDhjYTkwYjg3Mzk3MWI5Li41YTZjNzU0ZjRlMGMzODhmMTY2
NjgyZjc2NTIwMDk1MmQxMTRlZWE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vUmFu
Z2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9SYW5nZS5jcHAKQEAgLTY2MCw5ICs2NjAs
OCBAQCBzdGF0aWMgaW5saW5lIHVuc2lnbmVkIGxlbmd0aE9mQ29udGVudHNJbk5vZGUoTm9kZSog
bm9kZSkKICAgICBjYXNlIE5vZGU6OlRFWFRfTk9ERToKICAgICBjYXNlIE5vZGU6OkNEQVRBX1NF
Q1RJT05fTk9ERToKICAgICBjYXNlIE5vZGU6OkNPTU1FTlRfTk9ERToKLSAgICAgICAgcmV0dXJu
IHRvQ2hhcmFjdGVyRGF0YShub2RlKS0+bGVuZ3RoKCk7CiAgICAgY2FzZSBOb2RlOjpQUk9DRVNT
SU5HX0lOU1RSVUNUSU9OX05PREU6Ci0gICAgICAgIHJldHVybiB0b1Byb2Nlc3NpbmdJbnN0cnVj
dGlvbihub2RlKS0+ZGF0YSgpLmxlbmd0aCgpOworICAgICAgICByZXR1cm4gZG93bmNhc3Q8Q2hh
cmFjdGVyRGF0YT4oKm5vZGUpLmxlbmd0aCgpOwogICAgIGNhc2UgTm9kZTo6RUxFTUVOVF9OT0RF
OgogICAgIGNhc2UgTm9kZTo6QVRUUklCVVRFX05PREU6CiAgICAgY2FzZSBOb2RlOjpFTlRJVFlf
UkVGRVJFTkNFX05PREU6CkBAIC04MDksNyArODA4LDcgQEAgUGFzc1JlZlB0cjxOb2RlPiBSYW5n
ZTo6cHJvY2Vzc0NvbnRlbnRzQmV0d2Vlbk9mZnNldHMoQWN0aW9uVHlwZSBhY3Rpb24sIFBhc3NS
ZWYKICAgICAgICAgICAgICAgICByZXN1bHQgPSBjLnJlbGVhc2UoKTsKICAgICAgICAgfQogICAg
ICAgICBpZiAoYWN0aW9uID09IEV4dHJhY3QgfHwgYWN0aW9uID09IERlbGV0ZSkKLSAgICAgICAg
ICAgIHRvQ2hhcmFjdGVyRGF0YShjb250YWluZXIpLT5kZWxldGVEYXRhKHN0YXJ0T2Zmc2V0LCBl
bmRPZmZzZXQgLSBzdGFydE9mZnNldCwgZWMpOworICAgICAgICAgICAgZG93bmNhc3Q8Q2hhcmFj
dGVyRGF0YT4oKmNvbnRhaW5lcikuZGVsZXRlRGF0YShzdGFydE9mZnNldCwgZW5kT2Zmc2V0IC0g
c3RhcnRPZmZzZXQsIGVjKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBOb2RlOjpQUk9DRVNT
SU5HX0lOU1RSVUNUSU9OX05PREU6CiAgICAgICAgIGVuZE9mZnNldCA9IHN0ZDo6bWluKGVuZE9m
ZnNldCwgc3RhdGljX2Nhc3Q8UHJvY2Vzc2luZ0luc3RydWN0aW9uKj4oY29udGFpbmVyKS0+ZGF0
YSgpLmxlbmd0aCgpKTsKQEAgLTgyNCwxMCArODIzLDEwIEBAIFBhc3NSZWZQdHI8Tm9kZT4gUmFu
Z2U6OnByb2Nlc3NDb250ZW50c0JldHdlZW5PZmZzZXRzKEFjdGlvblR5cGUgYWN0aW9uLCBQYXNz
UmVmCiAgICAgICAgICAgICAgICAgcmVzdWx0ID0gYy5yZWxlYXNlKCk7CiAgICAgICAgIH0KICAg
ICAgICAgaWYgKGFjdGlvbiA9PSBFeHRyYWN0IHx8IGFjdGlvbiA9PSBEZWxldGUpIHsKLSAgICAg
ICAgICAgIFByb2Nlc3NpbmdJbnN0cnVjdGlvbiogcGkgPSB0b1Byb2Nlc3NpbmdJbnN0cnVjdGlv
bihjb250YWluZXIpOwotICAgICAgICAgICAgU3RyaW5nIGRhdGEocGktPmRhdGEoKSk7CisgICAg
ICAgICAgICBQcm9jZXNzaW5nSW5zdHJ1Y3Rpb24mIHBpID0gZG93bmNhc3Q8UHJvY2Vzc2luZ0lu
c3RydWN0aW9uPigqY29udGFpbmVyKTsKKyAgICAgICAgICAgIFN0cmluZyBkYXRhKHBpLmRhdGEo
KSk7CiAgICAgICAgICAgICBkYXRhLnJlbW92ZShzdGFydE9mZnNldCwgZW5kT2Zmc2V0IC0gc3Rh
cnRPZmZzZXQpOwotICAgICAgICAgICAgcGktPnNldERhdGEoZGF0YSwgZWMpOworICAgICAgICAg
ICAgcGkuc2V0RGF0YShkYXRhLCBlYyk7CiAgICAgICAgIH0KICAgICAgICAgYnJlYWs7CiAgICAg
Y2FzZSBOb2RlOjpFTEVNRU5UX05PREU6CkBAIC0xMTUyLDE3ICsxMTUxLDE0IEBAIE5vZGUqIFJh
bmdlOjpjaGVja05vZGVXT2Zmc2V0KE5vZGUqIG4sIGludCBvZmZzZXQsIEV4Y2VwdGlvbkNvZGUm
IGVjKSBjb25zdAogICAgICAgICBjYXNlIE5vZGU6OkVOVElUWV9OT0RFOgogICAgICAgICBjYXNl
IE5vZGU6Ok5PVEFUSU9OX05PREU6CiAgICAgICAgICAgICBlYyA9IFJhbmdlRXhjZXB0aW9uOjpJ
TlZBTElEX05PREVfVFlQRV9FUlI7Ci0gICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgICAg
IHJldHVybiBudWxscHRyOwogICAgICAgICBjYXNlIE5vZGU6OkNEQVRBX1NFQ1RJT05fTk9ERToK
ICAgICAgICAgY2FzZSBOb2RlOjpDT01NRU5UX05PREU6CiAgICAgICAgIGNhc2UgTm9kZTo6VEVY
VF9OT0RFOgotICAgICAgICAgICAgaWYgKHN0YXRpY19jYXN0PHVuc2lnbmVkPihvZmZzZXQpID4g
dG9DaGFyYWN0ZXJEYXRhKG4pLT5sZW5ndGgoKSkKLSAgICAgICAgICAgICAgICBlYyA9IElOREVY
X1NJWkVfRVJSOwotICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgIGNhc2UgTm9kZTo6UFJP
Q0VTU0lOR19JTlNUUlVDVElPTl9OT0RFOgotICAgICAgICAgICAgaWYgKHN0YXRpY19jYXN0PHVu
c2lnbmVkPihvZmZzZXQpID4gdG9Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb24obiktPmRhdGEoKS5sZW5n
dGgoKSkKKyAgICAgICAgICAgIGlmIChzdGF0aWNfY2FzdDx1bnNpZ25lZD4ob2Zmc2V0KSA+IGRv
d25jYXN0PENoYXJhY3RlckRhdGE+KCpuKS5sZW5ndGgoKSkKICAgICAgICAgICAgICAgICBlYyA9
IElOREVYX1NJWkVfRVJSOwotICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgICAgICByZXR1
cm4gbnVsbHB0cjsKICAgICAgICAgY2FzZSBOb2RlOjpBVFRSSUJVVEVfTk9ERToKICAgICAgICAg
Y2FzZSBOb2RlOjpET0NVTUVOVF9GUkFHTUVOVF9OT0RFOgogICAgICAgICBjYXNlIE5vZGU6OkRP
Q1VNRU5UX05PREU6CkBAIC0xMTcwLDcgKzExNjYsNyBAQCBOb2RlKiBSYW5nZTo6Y2hlY2tOb2Rl
V09mZnNldChOb2RlKiBuLCBpbnQgb2Zmc2V0LCBFeGNlcHRpb25Db2RlJiBlYykgY29uc3QKICAg
ICAgICAgY2FzZSBOb2RlOjpFTlRJVFlfUkVGRVJFTkNFX05PREU6CiAgICAgICAgIGNhc2UgTm9k
ZTo6WFBBVEhfTkFNRVNQQUNFX05PREU6IHsKICAgICAgICAgICAgIGlmICghb2Zmc2V0KQotICAg
ICAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwog
ICAgICAgICAgICAgTm9kZSogY2hpbGRCZWZvcmUgPSBuLT50cmF2ZXJzZVRvQ2hpbGRBdChvZmZz
ZXQgLSAxKTsKICAgICAgICAgICAgIGlmICghY2hpbGRCZWZvcmUpCiAgICAgICAgICAgICAgICAg
ZWMgPSBJTkRFWF9TSVpFX0VSUjsKQEAgLTExNzgsNyArMTE3NCw3IEBAIE5vZGUqIFJhbmdlOjpj
aGVja05vZGVXT2Zmc2V0KE5vZGUqIG4sIGludCBvZmZzZXQsIEV4Y2VwdGlvbkNvZGUmIGVjKSBj
b25zdAogICAgICAgICB9CiAgICAgfQogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHJl
dHVybiAwOworICAgIHJldHVybiBudWxscHRyOwogfQogCiB2b2lkIFJhbmdlOjpjaGVja05vZGVC
QShOb2RlKiBuLCBFeGNlcHRpb25Db2RlJiBlYykgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9y
LmNwcAppbmRleCAxMWI3MWVmNDBkY2FlMDA4MjMwNzIyYzZhNWZiODY3MWZkNDNiZDc4Li45OWEx
YTlmODc4YWRjZjBhYzkzNmE5YzUxY2Y1MWRjZjg3YzQzZDU0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9F
ZGl0b3IuY3BwCkBAIC01ODgsOCArNTg4LDggQEAgYm9vbCBFZGl0b3I6OnNob3VsZEluc2VydEZy
YWdtZW50KFBhc3NSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4gZnJhZ21lbnQsIFBhc3NSZWYKICAg
ICAKICAgICBpZiAoZnJhZ21lbnQpIHsKICAgICAgICAgTm9kZSogY2hpbGQgPSBmcmFnbWVudC0+
Zmlyc3RDaGlsZCgpOwotICAgICAgICBpZiAoY2hpbGQgJiYgZnJhZ21lbnQtPmxhc3RDaGlsZCgp
ID09IGNoaWxkICYmIGNoaWxkLT5pc0NoYXJhY3RlckRhdGFOb2RlKCkpCi0gICAgICAgICAgICBy
ZXR1cm4gY2xpZW50KCktPnNob3VsZEluc2VydFRleHQodG9DaGFyYWN0ZXJEYXRhKGNoaWxkKS0+
ZGF0YSgpLCByZXBsYWNpbmdET01SYW5nZS5nZXQoKSwgZ2l2ZW5BY3Rpb24pOworICAgICAgICBp
ZiAoY2hpbGQgJiYgZnJhZ21lbnQtPmxhc3RDaGlsZCgpID09IGNoaWxkICYmIGlzPENoYXJhY3Rl
ckRhdGE+KGNoaWxkKSkKKyAgICAgICAgICAgIHJldHVybiBjbGllbnQoKS0+c2hvdWxkSW5zZXJ0
VGV4dChkb3duY2FzdDxDaGFyYWN0ZXJEYXRhPigqY2hpbGQpLmRhdGEoKSwgcmVwbGFjaW5nRE9N
UmFuZ2UuZ2V0KCksIGdpdmVuQWN0aW9uKTsKICAgICB9CiAKICAgICByZXR1cm4gY2xpZW50KCkt
PnNob3VsZEluc2VydE5vZGUoZnJhZ21lbnQuZ2V0KCksIHJlcGxhY2luZ0RPTVJhbmdlLmdldCgp
LCBnaXZlbkFjdGlvbik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL01hcmt1
cEFjY3VtdWxhdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvTWFya3VwQWNjdW11bGF0
b3IuY3BwCmluZGV4IGI3ZjlhNzIyZGE4MDE1OGZhNWY4ZmY0NDE4MGUxOTgyMzFlNTZhMjIuLmU0
ZDlhZGE1MTQ1NDVjMDY3ODdmYzdlYjM3N2Q0ZTBmM2IwMGYzOGMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvTWFya3VwQWNjdW11bGF0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvTWFya3VwQWNjdW11bGF0b3IuY3BwCkBAIC01NTYsNyArNTU2LDcgQEAgdm9p
ZCBNYXJrdXBBY2N1bXVsYXRvcjo6YXBwZW5kU3RhcnRNYXJrdXAoU3RyaW5nQnVpbGRlciYgcmVz
dWx0LCBjb25zdCBOb2RlJiBub2QKICAgICAgICAgYXBwZW5kVGV4dChyZXN1bHQsIHRvVGV4dChu
b2RlKSk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgTm9kZTo6Q09NTUVOVF9OT0RFOgotICAg
ICAgICBhcHBlbmRDb21tZW50KHJlc3VsdCwgdG9Db21tZW50KG5vZGUpLmRhdGEoKSk7CisgICAg
ICAgIGFwcGVuZENvbW1lbnQocmVzdWx0LCBkb3duY2FzdDxDb21tZW50Pihub2RlKS5kYXRhKCkp
OwogICAgICAgICBicmVhazsKICAgICBjYXNlIE5vZGU6OkRPQ1VNRU5UX05PREU6CiAgICAgICAg
IGFwcGVuZFhNTERlY2xhcmF0aW9uKHJlc3VsdCwgdG9Eb2N1bWVudChub2RlKSk7CkBAIC01NjQs
MTYgKzU2NCwxNiBAQCB2b2lkIE1hcmt1cEFjY3VtdWxhdG9yOjphcHBlbmRTdGFydE1hcmt1cChT
dHJpbmdCdWlsZGVyJiByZXN1bHQsIGNvbnN0IE5vZGUmIG5vZAogICAgIGNhc2UgTm9kZTo6RE9D
VU1FTlRfRlJBR01FTlRfTk9ERToKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBOb2RlOjpET0NV
TUVOVF9UWVBFX05PREU6Ci0gICAgICAgIGFwcGVuZERvY3VtZW50VHlwZShyZXN1bHQsIHRvRG9j
dW1lbnRUeXBlKG5vZGUpKTsKKyAgICAgICAgYXBwZW5kRG9jdW1lbnRUeXBlKHJlc3VsdCwgZG93
bmNhc3Q8RG9jdW1lbnRUeXBlPihub2RlKSk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgTm9k
ZTo6UFJPQ0VTU0lOR19JTlNUUlVDVElPTl9OT0RFOgotICAgICAgICBhcHBlbmRQcm9jZXNzaW5n
SW5zdHJ1Y3Rpb24ocmVzdWx0LCB0b1Byb2Nlc3NpbmdJbnN0cnVjdGlvbihub2RlKS50YXJnZXQo
KSwgdG9Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb24obm9kZSkuZGF0YSgpKTsKKyAgICAgICAgYXBwZW5k
UHJvY2Vzc2luZ0luc3RydWN0aW9uKHJlc3VsdCwgZG93bmNhc3Q8UHJvY2Vzc2luZ0luc3RydWN0
aW9uPihub2RlKS50YXJnZXQoKSwgZG93bmNhc3Q8UHJvY2Vzc2luZ0luc3RydWN0aW9uPihub2Rl
KS5kYXRhKCkpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIE5vZGU6OkVMRU1FTlRfTk9ERToK
ICAgICAgICAgYXBwZW5kRWxlbWVudChyZXN1bHQsIHRvRWxlbWVudChub2RlKSwgbmFtZXNwYWNl
cyk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgTm9kZTo6Q0RBVEFfU0VDVElPTl9OT0RFOgot
ICAgICAgICBhcHBlbmRDREFUQVNlY3Rpb24ocmVzdWx0LCB0b0NEQVRBU2VjdGlvbihub2RlKS5k
YXRhKCkpOworICAgICAgICBhcHBlbmRDREFUQVNlY3Rpb24ocmVzdWx0LCBkb3duY2FzdDxDREFU
QVNlY3Rpb24+KG5vZGUpLmRhdGEoKSk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgTm9kZTo6
QVRUUklCVVRFX05PREU6CiAgICAgY2FzZSBOb2RlOjpFTlRJVFlfTk9ERToKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvSFRNTENvbnZlcnRlci5tbSBiL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvY29jb2EvSFRNTENvbnZlcnRlci5tbQppbmRleCBiZDU3ZDkzY2M5NTYy
Zjg0YTViZDljZWVlOTE5OGEzMDI5NDQzOWY1Li44MmI1OWNmNTEwYjM5YTk2NDVhZGNmYWU4Y2Qw
MmJlY2ZlM2I3MTM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0hU
TUxDb252ZXJ0ZXIubW0KKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9IVE1MQ29u
dmVydGVyLm1tCkBAIC0yNDE0LDggKzI0MTQsOCBAQCB2b2lkIEhUTUxDb252ZXJ0ZXI6Ol90cmF2
ZXJzZU5vZGUoTm9kZSYgbm9kZSwgdW5zaWduZWQgZGVwdGgsIGJvb2wgZW1iZWRkZWQpCiAgICAg
ICAgICAgICAgICAgX2V4aXRFbGVtZW50KGVsZW1lbnQsIGRlcHRoLCBzdGFydEluZGV4KTsKICAg
ICAgICAgICAgIH0KICAgICAgICAgfQotICAgIH0gZWxzZSBpZiAobm9kZS5pc0NoYXJhY3RlckRh
dGFOb2RlKCkpCi0gICAgICAgIF9wcm9jZXNzVGV4dCh0b0NoYXJhY3RlckRhdGEobm9kZSkpOwor
ICAgIH0gZWxzZSBpZiAoaXM8Q2hhcmFjdGVyRGF0YT4obm9kZSkpCisgICAgICAgIF9wcm9jZXNz
VGV4dChkb3duY2FzdDxDaGFyYWN0ZXJEYXRhPihub2RlKSk7CiAKICAgICBpZiAoaXNFbmQpCiAg
ICAgICAgIF9mbGFncy5yZWFjaGVkRW5kID0gWUVTOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JET01BZ2VudC5jcHAKaW5kZXggM2EzZGUzMGIzZWRkNzg1NTk2MTI0ZGMx
OGI3M2IyMWE3MDgxMzFiOC4uOTliOWIyYmE4NzE2NDQxZmZjMTc5MDE2MGNiMDUzMzVkNTcyMTU5
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuY3Bw
CkBAIC0xMzA2LDExICsxMzA2LDExIEBAIFBhc3NSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6
RE9NOjpOb2RlPiBJbnNwZWN0b3JET01BZ2VudDo6YnVpbGRPYmplY3RGb3JOb2RlCiAgICAgICAg
IHZhbHVlLT5zZXREb2N1bWVudFVSTChkb2N1bWVudFVSTFN0cmluZyhkb2N1bWVudCkpOwogICAg
ICAgICB2YWx1ZS0+c2V0QmFzZVVSTChkb2N1bWVudEJhc2VVUkxTdHJpbmcoZG9jdW1lbnQpKTsK
ICAgICAgICAgdmFsdWUtPnNldFhtbFZlcnNpb24oZG9jdW1lbnQtPnhtbFZlcnNpb24oKSk7Ci0g
ICAgfSBlbHNlIGlmIChub2RlLT5ub2RlVHlwZSgpID09IE5vZGU6OkRPQ1VNRU5UX1RZUEVfTk9E
RSkgewotICAgICAgICBEb2N1bWVudFR5cGUqIGRvY1R5cGUgPSB0b0RvY3VtZW50VHlwZShub2Rl
KTsKLSAgICAgICAgdmFsdWUtPnNldFB1YmxpY0lkKGRvY1R5cGUtPnB1YmxpY0lkKCkpOwotICAg
ICAgICB2YWx1ZS0+c2V0U3lzdGVtSWQoZG9jVHlwZS0+c3lzdGVtSWQoKSk7Ci0gICAgICAgIHZh
bHVlLT5zZXRJbnRlcm5hbFN1YnNldChkb2NUeXBlLT5pbnRlcm5hbFN1YnNldCgpKTsKKyAgICB9
IGVsc2UgaWYgKGlzPERvY3VtZW50VHlwZT4obm9kZSkpIHsKKyAgICAgICAgRG9jdW1lbnRUeXBl
JiBkb2NUeXBlID0gZG93bmNhc3Q8RG9jdW1lbnRUeXBlPigqbm9kZSk7CisgICAgICAgIHZhbHVl
LT5zZXRQdWJsaWNJZChkb2NUeXBlLnB1YmxpY0lkKCkpOworICAgICAgICB2YWx1ZS0+c2V0U3lz
dGVtSWQoZG9jVHlwZS5zeXN0ZW1JZCgpKTsKKyAgICAgICAgdmFsdWUtPnNldEludGVybmFsU3Vi
c2V0KGRvY1R5cGUuaW50ZXJuYWxTdWJzZXQoKSk7CiAgICAgfSBlbHNlIGlmIChub2RlLT5pc0F0
dHJpYnV0ZU5vZGUoKSkgewogICAgICAgICBBdHRyKiBhdHRyaWJ1dGUgPSB0b0F0dHIobm9kZSk7
CiAgICAgICAgIHZhbHVlLT5zZXROYW1lKGF0dHJpYnV0ZS0+bmFtZSgpKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JMYXllclRyZWVBZ2VudC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQuY3BwCmluZGV4
IGE2OWRmMWFkNTgyODI2YTI2MzM3NmQ3ODZhMzEyYTFmZmQ2NjUzYmEuLjk3ZGZhNDAyYjgxMGY2
ZWZkZjZlYmEyNDQwNGIzOTg0ZTYzYWMxYmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JMYXllclRyZWVBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvckxheWVyVHJlZUFnZW50LmNwcApAQCAtMTgzLDcgKzE4Myw3IEBA
IFBhc3NSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6TGF5ZXJUcmVlOjpMYXllcj4gSW5zcGVj
dG9yTGF5ZXJUcmVlQWdlbnQ6OmJ1aWxkCiAgICAgICAgIGlmIChpc1JlZmxlY3Rpb24pCiAgICAg
ICAgICAgICByZW5kZXJlciA9IHJlbmRlcmVyLT5wYXJlbnQoKTsKICAgICAgICAgbGF5ZXJPYmpl
Y3QtPnNldElzR2VuZXJhdGVkQ29udGVudCh0cnVlKTsKLSAgICAgICAgbGF5ZXJPYmplY3QtPnNl
dFBzZXVkb0VsZW1lbnRJZChiaW5kUHNldWRvRWxlbWVudCh0b1BzZXVkb0VsZW1lbnQocmVuZGVy
ZXItPm5vZGUoKSkpKTsKKyAgICAgICAgbGF5ZXJPYmplY3QtPnNldFBzZXVkb0VsZW1lbnRJZChi
aW5kUHNldWRvRWxlbWVudChkb3duY2FzdDxQc2V1ZG9FbGVtZW50PihyZW5kZXJlci0+bm9kZSgp
KSkpOwogICAgICAgICBpZiAocmVuZGVyZXItPmlzQmVmb3JlQ29udGVudCgpKQogICAgICAgICAg
ICAgbGF5ZXJPYmplY3QtPnNldFBzZXVkb0VsZW1lbnQoImJlZm9yZSIpOwogICAgICAgICBlbHNl
IGlmIChyZW5kZXJlci0+aXNBZnRlckNvbnRlbnQoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9IaXRUZXN0UmVzdWx0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9IaXRUZXN0UmVzdWx0LmNwcAppbmRleCA5YWFlYzhjYjNhZDJjNGVjMWQ5ZmJjOGYwYjhkZWFi
Yjk2NjkwNGJiLi5lYmJhYmQxNWMzNjI2ZmY5OGYyM2M5YzViZTlmMjc3ZmRiYmY2ZTM3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSGl0VGVzdFJlc3VsdC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0hpdFRlc3RSZXN1bHQuY3BwCkBAIC0xMjksMTggKzEy
OSwxOCBAQCB2b2lkIEhpdFRlc3RSZXN1bHQ6OnNldFRvTm9uU2hhZG93QW5jZXN0b3IoKQogICAg
IHNldElubmVyTm9uU2hhcmVkTm9kZShub2RlKTsKIH0KIAotdm9pZCBIaXRUZXN0UmVzdWx0Ojpz
ZXRJbm5lck5vZGUoTm9kZSogbikKK3ZvaWQgSGl0VGVzdFJlc3VsdDo6c2V0SW5uZXJOb2RlKE5v
ZGUqIG5vZGUpCiB7Ci0gICAgaWYgKG4gJiYgbi0+aXNQc2V1ZG9FbGVtZW50KCkpCi0gICAgICAg
IG4gPSB0b1BzZXVkb0VsZW1lbnQobiktPmhvc3RFbGVtZW50KCk7Ci0gICAgbV9pbm5lck5vZGUg
PSBuOworICAgIGlmIChub2RlICYmIGlzPFBzZXVkb0VsZW1lbnQ+KG5vZGUpKQorICAgICAgICBu
b2RlID0gZG93bmNhc3Q8UHNldWRvRWxlbWVudD4oKm5vZGUpLmhvc3RFbGVtZW50KCk7CisgICAg
bV9pbm5lck5vZGUgPSBub2RlOwogfQogICAgIAotdm9pZCBIaXRUZXN0UmVzdWx0OjpzZXRJbm5l
ck5vblNoYXJlZE5vZGUoTm9kZSogbikKK3ZvaWQgSGl0VGVzdFJlc3VsdDo6c2V0SW5uZXJOb25T
aGFyZWROb2RlKE5vZGUqIG5vZGUpCiB7Ci0gICAgaWYgKG4gJiYgbi0+aXNQc2V1ZG9FbGVtZW50
KCkpCi0gICAgICAgIG4gPSB0b1BzZXVkb0VsZW1lbnQobiktPmhvc3RFbGVtZW50KCk7Ci0gICAg
bV9pbm5lck5vblNoYXJlZE5vZGUgPSBuOworICAgIGlmIChub2RlICYmIGlzPFBzZXVkb0VsZW1l
bnQ+KG5vZGUpKQorICAgICAgICBub2RlID0gZG93bmNhc3Q8UHNldWRvRWxlbWVudD4oKm5vZGUp
Lmhvc3RFbGVtZW50KCk7CisgICAgbV9pbm5lck5vblNoYXJlZE5vZGUgPSBub2RlOwogfQogCiB2
b2lkIEhpdFRlc3RSZXN1bHQ6OnNldFVSTEVsZW1lbnQoRWxlbWVudCogbikgCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdEl0ZW0uY3BwIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RJdGVtLmNwcAppbmRleCBmYTAxMmM5ZThiYmMzYTY3
MzczYjIwNDAzYmU1MWUwMDE5NmQzM2EyLi5lYTdmMjE4ODUxODFlNGIxY2JjZDA0ZGUzZjJjYTUw
Mjk4NDkyMDMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlz
dEl0ZW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0SXRlbS5j
cHAKQEAgLTk5LDggKzk5LDggQEAgc3RhdGljIGJvb2wgaXNMaXN0KGNvbnN0IEVsZW1lbnQqIGVs
ZW1lbnQpCiBzdGF0aWMgRWxlbWVudCogZW5jbG9zaW5nTGlzdChjb25zdCBSZW5kZXJMaXN0SXRl
bSogbGlzdEl0ZW0pCiB7CiAgICAgRWxlbWVudCYgbGlzdEl0ZW1FbGVtZW50ID0gbGlzdEl0ZW0t
PmVsZW1lbnQoKTsKLSAgICBFbGVtZW50KiBmaXJzdE5vZGUgPSAwOwotICAgIEVsZW1lbnQqIHBh
cmVudCA9IGxpc3RJdGVtRWxlbWVudC5pc1BzZXVkb0VsZW1lbnQoKSA/IHRvUHNldWRvRWxlbWVu
dChsaXN0SXRlbUVsZW1lbnQpLmhvc3RFbGVtZW50KCkgOiBsaXN0SXRlbUVsZW1lbnQucGFyZW50
RWxlbWVudCgpOworICAgIEVsZW1lbnQqIGZpcnN0Tm9kZSA9IG51bGxwdHI7CisgICAgRWxlbWVu
dCogcGFyZW50ID0gaXM8UHNldWRvRWxlbWVudD4obGlzdEl0ZW1FbGVtZW50KSA/IGRvd25jYXN0
PFBzZXVkb0VsZW1lbnQ+KGxpc3RJdGVtRWxlbWVudCkuaG9zdEVsZW1lbnQoKSA6IGxpc3RJdGVt
RWxlbWVudC5wYXJlbnRFbGVtZW50KCk7CiAgICAgLy8gV2UgdXNlIHBhcmVudE5vZGUgYmVjYXVz
ZSB0aGUgZW5jbG9zaW5nIGxpc3QgY291bGQgYmUgYSBTaGFkb3dSb290IHRoYXQncyBub3QgRWxl
bWVudC4KICAgICBmb3IgKDsgcGFyZW50OyBwYXJlbnQgPSBwYXJlbnQtPnBhcmVudEVsZW1lbnQo
KSkgewogICAgICAgICBpZiAoaXNMaXN0KHBhcmVudCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJPYmplY3QuY3BwCmluZGV4IDc5YzhlY2M1OTNmNWUwNGFjMzFjZWUzNmYwODcwMDRm
ZjI5ODFhMzAuLjZkZTM1ZDA0NGYyNDdjNjQxMDg2MTJmNGU5NmI0YTNkMDJjNGI2MjIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwCkBAIC0yNTQ5LDcgKzI1NDks
NyBAQCBib29sIFJlbmRlck9iamVjdDo6Y2FuSGF2ZUdlbmVyYXRlZENoaWxkcmVuKCkgY29uc3QK
IAogTm9kZSogUmVuZGVyT2JqZWN0OjpnZW5lcmF0aW5nUHNldWRvSG9zdEVsZW1lbnQoKSBjb25z
dAogewotICAgIHJldHVybiB0b1BzZXVkb0VsZW1lbnQobm9kZSgpKS0+aG9zdEVsZW1lbnQoKTsK
KyAgICByZXR1cm4gZG93bmNhc3Q8UHNldWRvRWxlbWVudD4oKm5vZGUoKSkuaG9zdEVsZW1lbnQo
KTsKIH0KIAogdm9pZCBSZW5kZXJPYmplY3Q6OnNldE5lZWRzQm91bmRhcmllc1VwZGF0ZSgpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS94bWwvWFBhdGhGdW5jdGlvbnMuY3BwIGIvU291cmNl
L1dlYkNvcmUveG1sL1hQYXRoRnVuY3Rpb25zLmNwcAppbmRleCBlMzdkNDA3MjhmYWRkOTY1NTNj
NzFlOTMxNWFmM2NlMDRkNmI2MzBlLi4xZTM2ZTliZGZjOGE4NjJjOWNkNGUzMmVhZmZhMTJlODNi
ZjI1YmE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS94bWwvWFBhdGhGdW5jdGlvbnMuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3htbC9YUGF0aEZ1bmN0aW9ucy5jcHAKQEAgLTM2Miw4ICsz
NjIsOCBAQCBzdGF0aWMgaW5saW5lIFN0cmluZyBleHBhbmRlZE5hbWVMb2NhbFBhcnQoTm9kZSog
bm9kZSkKIHsKICAgICAvLyBUaGUgbG9jYWwgcGFydCBvZiBhbiBYUGF0aCBleHBhbmRlZC1uYW1l
IG1hdGNoZXMgRE9NIGxvY2FsIG5hbWUgZm9yIG1vc3Qgbm9kZSB0eXBlcywgZXhjZXB0IGZvciBu
YW1lc3BhY2Ugbm9kZXMgYW5kIHByb2Nlc3NpbmcgaW5zdHJ1Y3Rpb24gbm9kZXMuCiAgICAgQVNT
RVJUKG5vZGUtPm5vZGVUeXBlKCkgIT0gTm9kZTo6WFBBVEhfTkFNRVNQQUNFX05PREUpOyAvLyBO
b3Qgc3VwcG9ydGVkIHlldC4KLSAgICBpZiAobm9kZS0+bm9kZVR5cGUoKSA9PSBOb2RlOjpQUk9D
RVNTSU5HX0lOU1RSVUNUSU9OX05PREUpCi0gICAgICAgIHJldHVybiB0b1Byb2Nlc3NpbmdJbnN0
cnVjdGlvbihub2RlKS0+dGFyZ2V0KCk7CisgICAgaWYgKGlzPFByb2Nlc3NpbmdJbnN0cnVjdGlv
bj4obm9kZSkpCisgICAgICAgIHJldHVybiBkb3duY2FzdDxQcm9jZXNzaW5nSW5zdHJ1Y3Rpb24+
KCpub2RlKS50YXJnZXQoKTsKICAgICByZXR1cm4gbm9kZS0+bG9jYWxOYW1lKCkuc3RyaW5nKCk7
CiB9CiAK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>238801</attachid>
            <date>2014-09-27 21:39:07 -0700</date>
            <delta_ts>2014-09-27 22:21:36 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-137184-20140927213906.patch</filename>
            <type>text/plain</type>
            <size>28727</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTc0MDM4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYmUyZTgwZDEwNjQxYzZl
NzJmNTNlZTc3NGU3NTBmNmE5MTllNmEyMC4uMWVmMmEyOTAxNjM4OTUyZmEwYzg4NzZjZGI3MWUz
MGVlOWI0ZGJhYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDY5IEBACiAyMDE0LTA5LTI3ICBDaHJp
c3RvcGhlIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAorICAgICAgICBVc2UgdGhlIG5ldyBp
czw+KCkgLyBkb3duY2FzdDw+KCkgZm9yIG1vcmUgTm9kZSBzdWJjbGFzc2VzCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzcxODQKKworICAgICAgICBS
ZXZpZXdlZCBieSBSeW9zdWtlIE5pd2EuCisKKyAgICAgICAgVXNlIHRoZSBuZXcgaXM8PigpIC8g
ZG93bmNhc3Q8PigpIGZvciBtb3JlIE5vZGUgc3ViY2xhc3NlczoKKyAgICAgICAgQ0RBVEFTZWN0
aW9uLCBDaGFyYWN0ZXJEYXRhLCBDb21tZW50LCBEb2N1bWVudFR5cGUsCisgICAgICAgIFByb2Nl
c3NpbmdJbnN0cnVjdGlvbiwgYW5kIFBzZXVkb0VsZW1lbnQuCisKKyAgICAgICAgTm8gbmV3IHRl
c3RzLCBubyBiZWhhdmlvciBjaGFuZ2UuCisKKyAgICAgICAgKiBkb20vQ0RBVEFTZWN0aW9uLmg6
CisgICAgICAgIChXZWJDb3JlOjppc0NEQVRBU2VjdGlvbik6CisgICAgICAgICogZG9tL0NoYXJh
Y3RlckRhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2hhcmFjdGVyRGF0YTo6c2V0RGF0YUFu
ZFVwZGF0ZSk6CisgICAgICAgICogZG9tL0NoYXJhY3RlckRhdGEuaDoKKyAgICAgICAgKFdlYkNv
cmU6OmlzQ2hhcmFjdGVyRGF0YSk6CisgICAgICAgICogZG9tL0NvbW1lbnQuaDoKKyAgICAgICAg
KFdlYkNvcmU6OmlzQ29tbWVudCk6CisgICAgICAgICogZG9tL0RvY3VtZW50U3R5bGVTaGVldENv
bGxlY3Rpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRTdHlsZVNoZWV0Q29sbGVj
dGlvbjo6Y29sbGVjdEFjdGl2ZVN0eWxlU2hlZXRzKToKKyAgICAgICAgKiBkb20vRG9jdW1lbnRU
eXBlLmg6CisgICAgICAgIChXZWJDb3JlOjppc0RvY3VtZW50VHlwZSk6CisgICAgICAgICogZG9t
L0V2ZW50RGlzcGF0Y2hlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpldmVudFRhcmdldFJlc3Bl
Y3RpbmdUYXJnZXRSdWxlcyk6CisgICAgICAgIChXZWJDb3JlOjpub2RlT3JIb3N0SWZQc2V1ZG9F
bGVtZW50KToKKyAgICAgICAgKiBkb20vTm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjptYXJr
QW5jZXN0b3JzV2l0aENoaWxkTmVlZHNTdHlsZVJlY2FsYyk6CisgICAgICAgIChXZWJDb3JlOjpO
b2RlOjpwc2V1ZG9Bd2FyZVByZXZpb3VzU2libGluZyk6CisgICAgICAgIChXZWJDb3JlOjpOb2Rl
Ojpwc2V1ZG9Bd2FyZU5leHRTaWJsaW5nKToKKyAgICAgICAgKiBkb20vTm9kZVRyYXZlcnNhbC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpOb2RlVHJhdmVyc2FsOjpwcmV2aW91c0luY2x1ZGluZ1Bz
ZXVkbyk6CisgICAgICAgIChXZWJDb3JlOjpOb2RlVHJhdmVyc2FsOjpuZXh0SW5jbHVkaW5nUHNl
dWRvKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGVUcmF2ZXJzYWw6Om5leHRJbmNsdWRpbmdQc2V1
ZG9Ta2lwcGluZ0NoaWxkcmVuKToKKyAgICAgICAgKiBkb20vUHJvY2Vzc2luZ0luc3RydWN0aW9u
Lmg6CisgICAgICAgIChXZWJDb3JlOjppc1Byb2Nlc3NpbmdJbnN0cnVjdGlvbik6CisgICAgICAg
ICogZG9tL1BzZXVkb0VsZW1lbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OmlzUHNldWRvRWxlbWVu
dCk6CisgICAgICAgICogZG9tL1JhbmdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Omxlbmd0aE9m
Q29udGVudHNJbk5vZGUpOgorICAgICAgICAoV2ViQ29yZTo6UmFuZ2U6OnByb2Nlc3NDb250ZW50
c0JldHdlZW5PZmZzZXRzKToKKyAgICAgICAgKFdlYkNvcmU6OlJhbmdlOjpjaGVja05vZGVXT2Zm
c2V0KToKKyAgICAgICAgKiBlZGl0aW5nL0VkaXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpF
ZGl0b3I6OnNob3VsZEluc2VydEZyYWdtZW50KToKKyAgICAgICAgKiBlZGl0aW5nL01hcmt1cEFj
Y3VtdWxhdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1hcmt1cEFjY3VtdWxhdG9yOjphcHBl
bmRTdGFydE1hcmt1cCk6CisgICAgICAgICogZWRpdGluZy9jb2NvYS9IVE1MQ29udmVydGVyLm1t
OgorICAgICAgICAoSFRNTENvbnZlcnRlcjo6X3RyYXZlcnNlTm9kZSk6CisgICAgICAgICogaW5z
cGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rv
ckRPTUFnZW50OjpidWlsZE9iamVjdEZvck5vZGUpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNw
ZWN0b3JMYXllclRyZWVBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JMYXll
clRyZWVBZ2VudDo6YnVpbGRPYmplY3RGb3JMYXllcik6CisgICAgICAgICogcmVuZGVyaW5nL0hp
dFRlc3RSZXN1bHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SGl0VGVzdFJlc3VsdDo6c2V0SW5u
ZXJOb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OkhpdFRlc3RSZXN1bHQ6OnNldElubmVyTm9uU2hh
cmVkTm9kZSk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxpc3RJdGVtLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OmVuY2xvc2luZ0xpc3QpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJP
YmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyT2JqZWN0OjpnZW5lcmF0aW5nUHNl
dWRvSG9zdEVsZW1lbnQpOgorICAgICAgICAqIHhtbC9YUGF0aEZ1bmN0aW9ucy5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpYUGF0aDo6ZXhwYW5kZWROYW1lTG9jYWxQYXJ0KToKKworMjAxNC0wOS0y
NyAgQ2hyaXN0b3BoZSBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKICAgICAgICAgVXNlIHRo
ZSBuZXcgaXM8PigpIC8gZG93bmNhc3Q8PigpIGZvciBBdHRyIE5vZGVzCiAgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzcxODMKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvZG9tL0NEQVRBU2VjdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0NE
QVRBU2VjdGlvbi5oCmluZGV4IGE5M2RjNDk2Yzk5ZmVlMzNiZDMxNWY1ZjUzYmQ5MmY5YjZjOGM0
MTkuLjZjZDRmNjhjNjBiOWQ2NWU5M2RlN2E5MTEwODkyNzZkYTYyZTk1OWEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9DREFUQVNlY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vQ0RBVEFTZWN0aW9uLmgKQEAgLTQxLDExICs0MSw5IEBAIHByaXZhdGU6CiAgICAgdmlydHVh
bCBQYXNzUmVmUHRyPFRleHQ+IHZpcnR1YWxDcmVhdGUoY29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7
CiB9OwogCi1pbmxpbmUgYm9vbCBpc0NEQVRBU2VjdGlvbihjb25zdCBOb2RlJiBub2RlKSB7IHJl
dHVybiBub2RlLm5vZGVUeXBlKCkgPT0gTm9kZTo6Q0RBVEFfU0VDVElPTl9OT0RFOyB9Ci12b2lk
IGlzQ0RBVEFTZWN0aW9uKGNvbnN0IENEQVRBU2VjdGlvbiYpOyAvLyBDYXRjaCB1bm5lY2Vzc2Fy
eSBydW50aW1lIGNoZWNrIG9mIHR5cGUga25vd24gYXQgY29tcGlsZSB0aW1lLgotdm9pZCBpc0NE
QVRBU2VjdGlvbihjb25zdCBDb250YWluZXJOb2RlJik7IC8vIENhdGNoIHVubmVjZXNzYXJ5IHJ1
bnRpbWUgY2hlY2sgb2YgdHlwZSBrbm93biBhdCBjb21waWxlIHRpbWUuCi0KLU5PREVfVFlQRV9D
QVNUUyhDREFUQVNlY3Rpb24pCitTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0JFR0lOKENEQVRBU2Vj
dGlvbikKKyAgICBzdGF0aWMgYm9vbCBpc0NEQVRBU2VjdGlvbihjb25zdCBOb2RlJiBub2RlKSB7
IHJldHVybiBub2RlLm5vZGVUeXBlKCkgPT0gTm9kZTo6Q0RBVEFfU0VDVElPTl9OT0RFOyB9CitT
UEVDSUFMSVpFX1RZUEVfVFJBSVRTX0VORCgpCiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0NoYXJhY3RlckRhdGEuY3BwIGIvU291cmNl
L1dlYkNvcmUvZG9tL0NoYXJhY3RlckRhdGEuY3BwCmluZGV4IDMxZjBkNWZhNTFlOTg3ZTU2OTA4
NGFmZWJlYWM5ZWQ4MWY1MTI1MWUuLmMzYzljYzQyNjQ5MmNlMWZkZGY1ZmRiY2RlNGRjYzVhMmU2
ZjA0M2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9DaGFyYWN0ZXJEYXRhLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ2hhcmFjdGVyRGF0YS5jcHAKQEAgLTE5OCw4ICsxOTgs
OCBAQCB2b2lkIENoYXJhY3RlckRhdGE6OnNldERhdGFBbmRVcGRhdGUoY29uc3QgU3RyaW5nJiBu
ZXdEYXRhLCB1bnNpZ25lZCBvZmZzZXRPZlJlcAogICAgIGlmIChpc1RleHROb2RlKCkpCiAgICAg
ICAgIFN0eWxlOjp1cGRhdGVUZXh0UmVuZGVyZXJBZnRlckNvbnRlbnRDaGFuZ2UoKnRvVGV4dCh0
aGlzKSwgb2Zmc2V0T2ZSZXBsYWNlZERhdGEsIG9sZExlbmd0aCk7CiAKLSAgICBpZiAobm9kZVR5
cGUoKSA9PSBQUk9DRVNTSU5HX0lOU1RSVUNUSU9OX05PREUpCi0gICAgICAgIHRvUHJvY2Vzc2lu
Z0luc3RydWN0aW9uKHRoaXMpLT5jaGVja1N0eWxlU2hlZXQoKTsKKyAgICBpZiAoaXM8UHJvY2Vz
c2luZ0luc3RydWN0aW9uPih0aGlzKSkKKyAgICAgICAgZG93bmNhc3Q8UHJvY2Vzc2luZ0luc3Ry
dWN0aW9uPigqdGhpcykuY2hlY2tTdHlsZVNoZWV0KCk7CiAKICAgICBpZiAoZG9jdW1lbnQoKS5m
cmFtZSgpKQogICAgICAgICBkb2N1bWVudCgpLmZyYW1lKCktPnNlbGVjdGlvbigpLnRleHRXYXNS
ZXBsYWNlZCh0aGlzLCBvZmZzZXRPZlJlcGxhY2VkRGF0YSwgb2xkTGVuZ3RoLCBuZXdMZW5ndGgp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0NoYXJhY3RlckRhdGEuaCBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9DaGFyYWN0ZXJEYXRhLmgKaW5kZXggZGZiNGIyMWRkYzhmMjgyYTNkZWNj
MjZhN2U1NWMxNzQwMTI3MTVmZS4uMDE2ZWRkNWFmMmZmODE1NDk2N2FiNjk5OTA0OWVkZDdkZWIx
ODVkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0NoYXJhY3RlckRhdGEuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vQ2hhcmFjdGVyRGF0YS5oCkBAIC03NiwxMSArNzYsOSBAQCBw
cml2YXRlOgogICAgIFN0cmluZyBtX2RhdGE7CiB9OwogCi1pbmxpbmUgYm9vbCBpc0NoYXJhY3Rl
ckRhdGEoY29uc3QgTm9kZSYgbm9kZSkgeyByZXR1cm4gbm9kZS5pc0NoYXJhY3RlckRhdGFOb2Rl
KCk7IH0KLXZvaWQgaXNDaGFyYWN0ZXJEYXRhKGNvbnN0IENoYXJhY3RlckRhdGEmKTsgLy8gQ2F0
Y2ggdW5uZWNlc3NhcnkgcnVudGltZSBjaGVjayBvZiB0eXBlIGtub3duIGF0IGNvbXBpbGUgdGlt
ZS4KLXZvaWQgaXNDaGFyYWN0ZXJEYXRhKGNvbnN0IENvbnRhaW5lck5vZGUmKTsgLy8gQ2F0Y2gg
dW5uZWNlc3NhcnkgcnVudGltZSBjaGVjayBvZiB0eXBlIGtub3duIGF0IGNvbXBpbGUgdGltZS4K
LQotTk9ERV9UWVBFX0NBU1RTKENoYXJhY3RlckRhdGEpCitTUEVDSUFMSVpFX1RZUEVfVFJBSVRT
X0JFR0lOKENoYXJhY3RlckRhdGEpCisgICAgc3RhdGljIGJvb2wgaXNDaGFyYWN0ZXJEYXRhKGNv
bnN0IE5vZGUmIG5vZGUpIHsgcmV0dXJuIG5vZGUuaXNDaGFyYWN0ZXJEYXRhTm9kZSgpOyB9CitT
UEVDSUFMSVpFX1RZUEVfVFJBSVRTX0VORCgpCiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0NvbW1lbnQuaCBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Db21tZW50LmgKaW5kZXggNDg3MjliNmFjMDc0NjU3NTc2NzFjMDM5M2UzODk4N2EwYWFk
ZjI0YS4uMGE3ZGVjZWM5YTkyZGM5ZGUzMmM3MTFhNzI0YmExMGNlNmI3MGEyOCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvZG9tL0NvbW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20v
Q29tbWVudC5oCkBAIC00MSwxMSArNDEsOSBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgYm9vbCBj
aGlsZFR5cGVBbGxvd2VkKE5vZGVUeXBlKSBjb25zdCBvdmVycmlkZTsKIH07CiAKLWlubGluZSBi
b29sIGlzQ29tbWVudChjb25zdCBOb2RlJiBub2RlKSB7IHJldHVybiBub2RlLm5vZGVUeXBlKCkg
PT0gTm9kZTo6Q09NTUVOVF9OT0RFOyB9Ci12b2lkIGlzQ29tbWVudChjb25zdCBDb21tZW50Jik7
IC8vIENhdGNoIHVubmVjZXNzYXJ5IHJ1bnRpbWUgY2hlY2sgb2YgdHlwZSBrbm93biBhdCBjb21w
aWxlIHRpbWUuCi12b2lkIGlzQ29tbWVudChjb25zdCBDb250YWluZXJOb2RlJik7IC8vIENhdGNo
IHVubmVjZXNzYXJ5IHJ1bnRpbWUgY2hlY2sgb2YgdHlwZSBrbm93biBhdCBjb21waWxlIHRpbWUu
Ci0KLU5PREVfVFlQRV9DQVNUUyhDb21tZW50KQorU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19CRUdJ
TihDb21tZW50KQorICAgIHN0YXRpYyBib29sIGlzQ29tbWVudChjb25zdCBOb2RlJiBub2RlKSB7
IHJldHVybiBub2RlLm5vZGVUeXBlKCkgPT0gTm9kZTo6Q09NTUVOVF9OT0RFOyB9CitTUEVDSUFM
SVpFX1RZUEVfVFJBSVRTX0VORCgpCiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50U3R5bGVTaGVldENvbGxlY3Rpb24uY3Bw
IGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50U3R5bGVTaGVldENvbGxlY3Rpb24uY3BwCmlu
ZGV4IDBjMWU5MWI0MWVmYmVhNGY1ZGFkNWE5NmQxYmVmMzU5ZGUzNDhhMGYuLjc4YjA4NDdlMjFi
ODU0MTE4ZjRjNmFjOWVjYTBmYzQyY2U4NGIwNGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Eb2N1bWVudFN0eWxlU2hlZXRDb2xsZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vRG9jdW1lbnRTdHlsZVNoZWV0Q29sbGVjdGlvbi5jcHAKQEAgLTI2NiwxNyArMjY2LDE3
IEBAIHZvaWQgRG9jdW1lbnRTdHlsZVNoZWV0Q29sbGVjdGlvbjo6Y29sbGVjdEFjdGl2ZVN0eWxl
U2hlZXRzKFZlY3RvcjxSZWZQdHI8U3R5bGVTCiAKICAgICBmb3IgKGF1dG8mIG5vZGUgOiBtX3N0
eWxlU2hlZXRDYW5kaWRhdGVOb2RlcykgewogICAgICAgICBTdHlsZVNoZWV0KiBzaGVldCA9IG51
bGxwdHI7Ci0gICAgICAgIGlmIChub2RlLT5ub2RlVHlwZSgpID09IE5vZGU6OlBST0NFU1NJTkdf
SU5TVFJVQ1RJT05fTk9ERSkgeworICAgICAgICBpZiAoaXM8UHJvY2Vzc2luZ0luc3RydWN0aW9u
Pihub2RlKSkgewogICAgICAgICAgICAgLy8gUHJvY2Vzc2luZyBpbnN0cnVjdGlvbiAoWE1MIGRv
Y3VtZW50cyBvbmx5KS4KICAgICAgICAgICAgIC8vIFdlIGRvbid0IHN1cHBvcnQgbGlua2luZyB0
byBlbWJlZGRlZCBDU1Mgc3R5bGVzaGVldHMsIHNlZSA8aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTQ5MjgxPiBmb3IgZGlzY3Vzc2lvbi4KLSAgICAgICAgICAgIFByb2Nl
c3NpbmdJbnN0cnVjdGlvbiogcGkgPSB0b1Byb2Nlc3NpbmdJbnN0cnVjdGlvbihub2RlKTsKLSAg
ICAgICAgICAgIHNoZWV0ID0gcGktPnNoZWV0KCk7CisgICAgICAgICAgICBQcm9jZXNzaW5nSW5z
dHJ1Y3Rpb24mIHBpID0gZG93bmNhc3Q8UHJvY2Vzc2luZ0luc3RydWN0aW9uPigqbm9kZSk7Cisg
ICAgICAgICAgICBzaGVldCA9IHBpLnNoZWV0KCk7CiAjaWYgRU5BQkxFKFhTTFQpCiAgICAgICAg
ICAgICAvLyBEb24ndCBhcHBseSBYU0wgdHJhbnNmb3JtcyB0byBhbHJlYWR5IHRyYW5zZm9ybWVk
IGRvY3VtZW50cyAtLSA8cmRhcjovL3Byb2JsZW0vNDEzMjgwNj4KLSAgICAgICAgICAgIGlmIChw
aS0+aXNYU0woKSAmJiAhbV9kb2N1bWVudC50cmFuc2Zvcm1Tb3VyY2VEb2N1bWVudCgpKSB7Cisg
ICAgICAgICAgICBpZiAocGkuaXNYU0woKSAmJiAhbV9kb2N1bWVudC50cmFuc2Zvcm1Tb3VyY2VE
b2N1bWVudCgpKSB7CiAgICAgICAgICAgICAgICAgLy8gRG9uJ3QgYXBwbHkgWFNMIHRyYW5zZm9y
bXMgdW50aWwgbG9hZGluZyBpcyBmaW5pc2hlZC4KICAgICAgICAgICAgICAgICBpZiAoIW1fZG9j
dW1lbnQucGFyc2luZygpKQotICAgICAgICAgICAgICAgICAgICBtX2RvY3VtZW50LmFwcGx5WFNM
VHJhbnNmb3JtKHBpKTsKKyAgICAgICAgICAgICAgICAgICAgbV9kb2N1bWVudC5hcHBseVhTTFRy
YW5zZm9ybSgmcGkpOwogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0KICNl
bmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50VHlwZS5oIGIvU291
cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50VHlwZS5oCmluZGV4IGFhNjM2ZGFkMTFiMzUzY2ExODM5
MjM1ZDZhNGIwM2I1M2RjZjk0MGQuLmY0ZWY3OWNlMGVkNWE0MDVkYWQyOTVmZDAzODNhNGRlMzlk
YjJmYjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudFR5cGUuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRUeXBlLmgKQEAgLTYwLDEyICs2MCw5IEBAIHBy
aXZhdGU6CiAgICAgU3RyaW5nIG1fc3Vic2V0OwogfTsKIAotaW5saW5lIGJvb2wgaXNEb2N1bWVu
dFR5cGUoY29uc3QgTm9kZSYgbm9kZSkKLXsKLSAgICByZXR1cm4gbm9kZS5ub2RlVHlwZSgpID09
IE5vZGU6OkRPQ1VNRU5UX1RZUEVfTk9ERTsKLX0KLQotTk9ERV9UWVBFX0NBU1RTKERvY3VtZW50
VHlwZSkKK1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNfQkVHSU4oRG9jdW1lbnRUeXBlKQorICAgIHN0
YXRpYyBib29sIGlzRG9jdW1lbnRUeXBlKGNvbnN0IE5vZGUmIG5vZGUpIHsgcmV0dXJuIG5vZGUu
bm9kZVR5cGUoKSA9PSBOb2RlOjpET0NVTUVOVF9UWVBFX05PREU7IH0KK1NQRUNJQUxJWkVfVFlQ
RV9UUkFJVFNfRU5EKCkKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9kb20vRXZlbnREaXNwYXRjaGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9FdmVudERpc3BhdGNoZXIuY3BwCmluZGV4IGEwZjk2MzAyODk5YjE4OGI1ODRlMTk5MTI1Y2Mw
M2VmMzIwZjcwNTAuLmY3NmI5MjQzYzBiZDhhZjQ5YzM2NTY3NDIzYjZjNzQ1MjU5ZGY3ZDYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudERpc3BhdGNoZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9FdmVudERpc3BhdGNoZXIuY3BwCkBAIC0yMDUsOCArMjA1LDggQEAg
cHJpdmF0ZToKIAogaW5saW5lIEV2ZW50VGFyZ2V0JiBldmVudFRhcmdldFJlc3BlY3RpbmdUYXJn
ZXRSdWxlcyhOb2RlJiByZWZlcmVuY2VOb2RlKQogewotICAgIGlmIChyZWZlcmVuY2VOb2RlLmlz
UHNldWRvRWxlbWVudCgpKSB7Ci0gICAgICAgIEV2ZW50VGFyZ2V0KiBob3N0RWxlbWVudCA9IHRv
UHNldWRvRWxlbWVudChyZWZlcmVuY2VOb2RlKS5ob3N0RWxlbWVudCgpOworICAgIGlmIChpczxQ
c2V1ZG9FbGVtZW50PihyZWZlcmVuY2VOb2RlKSkgeworICAgICAgICBFdmVudFRhcmdldCogaG9z
dEVsZW1lbnQgPSBkb3duY2FzdDxQc2V1ZG9FbGVtZW50PihyZWZlcmVuY2VOb2RlKS5ob3N0RWxl
bWVudCgpOwogICAgICAgICBBU1NFUlQoaG9zdEVsZW1lbnQpOwogICAgICAgICByZXR1cm4gKmhv
c3RFbGVtZW50OwogICAgIH0KQEAgLTQxOCw3ICs0MTgsNyBAQCBzdGF0aWMgaW5saW5lIGJvb2wg
c2hvdWxkRXZlbnRDcm9zc1NoYWRvd0JvdW5kYXJ5KEV2ZW50JiBldmVudCwgU2hhZG93Um9vdCYg
c2hhZAogCiBzdGF0aWMgTm9kZSogbm9kZU9ySG9zdElmUHNldWRvRWxlbWVudChOb2RlKiBub2Rl
KQogewotICAgIHJldHVybiBub2RlLT5pc1BzZXVkb0VsZW1lbnQoKSA/IHRvUHNldWRvRWxlbWVu
dChub2RlKS0+aG9zdEVsZW1lbnQoKSA6IG5vZGU7CisgICAgcmV0dXJuIGlzPFBzZXVkb0VsZW1l
bnQ+KG5vZGUpID8gZG93bmNhc3Q8UHNldWRvRWxlbWVudD4oKm5vZGUpLmhvc3RFbGVtZW50KCkg
OiBub2RlOwogfQogCiBFdmVudFBhdGg6OkV2ZW50UGF0aChOb2RlJiB0YXJnZXROb2RlLCBFdmVu
dCYgZXZlbnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vTm9kZS5jcHAKaW5kZXggMDQ1YjM0ZDAzMDM3NDM1YmFhMWIwNWQ5NDQ3
YzA4ZTZmMWY5OWNhOS4uM2VjNWJjYWJlMjVhM2YxMTU0N2MyYWY0YmZhZDNjMWIxMDM2MjRkZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9Ob2RlLmNwcApAQCAtNjcyLDcgKzY3Miw3IEBAIHZvaWQgTm9kZTo6ZGVyZWZFdmVu
dFRhcmdldCgpCiAKIHN0YXRpYyBpbmxpbmUgdm9pZCBtYXJrQW5jZXN0b3JzV2l0aENoaWxkTmVl
ZHNTdHlsZVJlY2FsYyhOb2RlJiBub2RlKQogewotICAgIGlmIChDb250YWluZXJOb2RlKiBhbmNl
c3RvciA9IG5vZGUuaXNQc2V1ZG9FbGVtZW50KCkgPyB0b1BzZXVkb0VsZW1lbnQobm9kZSkuaG9z
dEVsZW1lbnQoKSA6IG5vZGUucGFyZW50T3JTaGFkb3dIb3N0Tm9kZSgpKSB7CisgICAgaWYgKENv
bnRhaW5lck5vZGUqIGFuY2VzdG9yID0gaXM8UHNldWRvRWxlbWVudD4obm9kZSkgPyBkb3duY2Fz
dDxQc2V1ZG9FbGVtZW50Pihub2RlKS5ob3N0RWxlbWVudCgpIDogbm9kZS5wYXJlbnRPclNoYWRv
d0hvc3ROb2RlKCkpIHsKICAgICAgICAgYW5jZXN0b3ItPnNldERpcmVjdENoaWxkTmVlZHNTdHls
ZVJlY2FsYygpOwogCiAgICAgICAgIGZvciAoOyBhbmNlc3RvciAmJiAhYW5jZXN0b3ItPmNoaWxk
TmVlZHNTdHlsZVJlY2FsYygpOyBhbmNlc3RvciA9IGFuY2VzdG9yLT5wYXJlbnRPclNoYWRvd0hv
c3ROb2RlKCkpCkBAIC04NzIsNyArODcyLDcgQEAgYm9vbCBOb2RlOjpjb250YWluc0luY2x1ZGlu
Z0hvc3RFbGVtZW50cyhjb25zdCBOb2RlKiBub2RlKSBjb25zdAogCiBOb2RlKiBOb2RlOjpwc2V1
ZG9Bd2FyZVByZXZpb3VzU2libGluZygpIGNvbnN0CiB7Ci0gICAgRWxlbWVudCogcGFyZW50T3JI
b3N0ID0gaXNQc2V1ZG9FbGVtZW50KCkgPyB0b1BzZXVkb0VsZW1lbnQodGhpcyktPmhvc3RFbGVt
ZW50KCkgOiBwYXJlbnRFbGVtZW50KCk7CisgICAgRWxlbWVudCogcGFyZW50T3JIb3N0ID0gaXM8
UHNldWRvRWxlbWVudD4odGhpcykgPyBkb3duY2FzdDxQc2V1ZG9FbGVtZW50PigqdGhpcykuaG9z
dEVsZW1lbnQoKSA6IHBhcmVudEVsZW1lbnQoKTsKICAgICBpZiAocGFyZW50T3JIb3N0ICYmICFw
cmV2aW91c1NpYmxpbmcoKSkgewogICAgICAgICBpZiAoaXNBZnRlclBzZXVkb0VsZW1lbnQoKSAm
JiBwYXJlbnRPckhvc3QtPmxhc3RDaGlsZCgpKQogICAgICAgICAgICAgcmV0dXJuIHBhcmVudE9y
SG9zdC0+bGFzdENoaWxkKCk7CkBAIC04ODQsNyArODg0LDcgQEAgTm9kZSogTm9kZTo6cHNldWRv
QXdhcmVQcmV2aW91c1NpYmxpbmcoKSBjb25zdAogCiBOb2RlKiBOb2RlOjpwc2V1ZG9Bd2FyZU5l
eHRTaWJsaW5nKCkgY29uc3QKIHsKLSAgICBFbGVtZW50KiBwYXJlbnRPckhvc3QgPSBpc1BzZXVk
b0VsZW1lbnQoKSA/IHRvUHNldWRvRWxlbWVudCh0aGlzKS0+aG9zdEVsZW1lbnQoKSA6IHBhcmVu
dEVsZW1lbnQoKTsKKyAgICBFbGVtZW50KiBwYXJlbnRPckhvc3QgPSBpczxQc2V1ZG9FbGVtZW50
Pih0aGlzKSA/IGRvd25jYXN0PFBzZXVkb0VsZW1lbnQ+KCp0aGlzKS5ob3N0RWxlbWVudCgpIDog
cGFyZW50RWxlbWVudCgpOwogICAgIGlmIChwYXJlbnRPckhvc3QgJiYgIW5leHRTaWJsaW5nKCkp
IHsKICAgICAgICAgaWYgKGlzQmVmb3JlUHNldWRvRWxlbWVudCgpICYmIHBhcmVudE9ySG9zdC0+
Zmlyc3RDaGlsZCgpKQogICAgICAgICAgICAgcmV0dXJuIHBhcmVudE9ySG9zdC0+Zmlyc3RDaGls
ZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGVUcmF2ZXJzYWwuY3BwIGIv
U291cmNlL1dlYkNvcmUvZG9tL05vZGVUcmF2ZXJzYWwuY3BwCmluZGV4IDdhZDExMzA3YzA2ZTc0
NWM5Yzg2M2FkMTI5NWU2ZjgzNjNkM2Y0ZmMuLmZiZmQ3ZDhkMGFkMDhhOTZiNzRlNzE1ZmY3ZTNk
OTQwZWFhZTlhNzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlVHJhdmVyc2Fs
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZVRyYXZlcnNhbC5jcHAKQEAgLTM1LDEz
ICszNSwxMyBAQCBOb2RlKiBwcmV2aW91c0luY2x1ZGluZ1BzZXVkbyhjb25zdCBOb2RlKiBjdXJy
ZW50LCBjb25zdCBOb2RlKiBzdGF5V2l0aGluKQogewogICAgIE5vZGUqIHByZXZpb3VzOwogICAg
IGlmIChjdXJyZW50ID09IHN0YXlXaXRoaW4pCi0gICAgICAgIHJldHVybiAwOworICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKICAgICBpZiAoKHByZXZpb3VzID0gY3VycmVudC0+cHNldWRvQXdhcmVQ
cmV2aW91c1NpYmxpbmcoKSkpIHsKICAgICAgICAgd2hpbGUgKHByZXZpb3VzLT5wc2V1ZG9Bd2Fy
ZUxhc3RDaGlsZCgpKQogICAgICAgICAgICAgcHJldmlvdXMgPSBwcmV2aW91cy0+cHNldWRvQXdh
cmVMYXN0Q2hpbGQoKTsKICAgICAgICAgcmV0dXJuIHByZXZpb3VzOwogICAgIH0KLSAgICByZXR1
cm4gY3VycmVudC0+aXNQc2V1ZG9FbGVtZW50KCkgPyB0b1BzZXVkb0VsZW1lbnQoY3VycmVudCkt
Pmhvc3RFbGVtZW50KCkgOiBjdXJyZW50LT5wYXJlbnROb2RlKCk7CisgICAgcmV0dXJuIGlzPFBz
ZXVkb0VsZW1lbnQ+KGN1cnJlbnQpID8gZG93bmNhc3Q8UHNldWRvRWxlbWVudD4oKmN1cnJlbnQp
Lmhvc3RFbGVtZW50KCkgOiBjdXJyZW50LT5wYXJlbnROb2RlKCk7CiB9CiAKIE5vZGUqIG5leHRJ
bmNsdWRpbmdQc2V1ZG8oY29uc3QgTm9kZSogY3VycmVudCwgY29uc3QgTm9kZSogc3RheVdpdGhp
bikKQEAgLTUwLDM0ICs1MCwzNCBAQCBOb2RlKiBuZXh0SW5jbHVkaW5nUHNldWRvKGNvbnN0IE5v
ZGUqIGN1cnJlbnQsIGNvbnN0IE5vZGUqIHN0YXlXaXRoaW4pCiAgICAgaWYgKChuZXh0ID0gY3Vy
cmVudC0+cHNldWRvQXdhcmVGaXJzdENoaWxkKCkpKQogICAgICAgICByZXR1cm4gbmV4dDsKICAg
ICBpZiAoY3VycmVudCA9PSBzdGF5V2l0aGluKQotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAg
cmV0dXJuIG51bGxwdHI7CiAgICAgaWYgKChuZXh0ID0gY3VycmVudC0+cHNldWRvQXdhcmVOZXh0
U2libGluZygpKSkKICAgICAgICAgcmV0dXJuIG5leHQ7Ci0gICAgY3VycmVudCA9IGN1cnJlbnQt
PmlzUHNldWRvRWxlbWVudCgpID8gdG9Qc2V1ZG9FbGVtZW50KGN1cnJlbnQpLT5ob3N0RWxlbWVu
dCgpIDogY3VycmVudC0+cGFyZW50Tm9kZSgpOworICAgIGN1cnJlbnQgPSBpczxQc2V1ZG9FbGVt
ZW50PihjdXJyZW50KSA/IGRvd25jYXN0PFBzZXVkb0VsZW1lbnQ+KCpjdXJyZW50KS5ob3N0RWxl
bWVudCgpIDogY3VycmVudC0+cGFyZW50Tm9kZSgpOwogICAgIGZvciAoOyBjdXJyZW50OyBjdXJy
ZW50ID0gY3VycmVudC0+cGFyZW50Tm9kZSgpKSB7CiAgICAgICAgIGlmIChjdXJyZW50ID09IHN0
YXlXaXRoaW4pCi0gICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgICAgIHJldHVybiBudWxs
cHRyOwogICAgICAgICBpZiAoKG5leHQgPSBjdXJyZW50LT5wc2V1ZG9Bd2FyZU5leHRTaWJsaW5n
KCkpKQogICAgICAgICAgICAgcmV0dXJuIG5leHQ7CiAgICAgfQotICAgIHJldHVybiAwOworICAg
IHJldHVybiBudWxscHRyOwogfQogCiBOb2RlKiBuZXh0SW5jbHVkaW5nUHNldWRvU2tpcHBpbmdD
aGlsZHJlbihjb25zdCBOb2RlKiBjdXJyZW50LCBjb25zdCBOb2RlKiBzdGF5V2l0aGluKQogewog
ICAgIE5vZGUqIG5leHQ7CiAgICAgaWYgKGN1cnJlbnQgPT0gc3RheVdpdGhpbikKLSAgICAgICAg
cmV0dXJuIDA7CisgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIGlmICgobmV4dCA9IGN1cnJl
bnQtPnBzZXVkb0F3YXJlTmV4dFNpYmxpbmcoKSkpCiAgICAgICAgIHJldHVybiBuZXh0OwotICAg
IGN1cnJlbnQgPSBjdXJyZW50LT5pc1BzZXVkb0VsZW1lbnQoKSA/IHRvUHNldWRvRWxlbWVudChj
dXJyZW50KS0+aG9zdEVsZW1lbnQoKSA6IGN1cnJlbnQtPnBhcmVudE5vZGUoKTsKKyAgICBjdXJy
ZW50ID0gaXM8UHNldWRvRWxlbWVudD4oY3VycmVudCkgPyBkb3duY2FzdDxQc2V1ZG9FbGVtZW50
PigqY3VycmVudCkuaG9zdEVsZW1lbnQoKSA6IGN1cnJlbnQtPnBhcmVudE5vZGUoKTsKICAgICBm
b3IgKDsgY3VycmVudDsgY3VycmVudCA9IGN1cnJlbnQtPnBhcmVudE5vZGUoKSkgewogICAgICAg
ICBpZiAoY3VycmVudCA9PSBzdGF5V2l0aGluKQotICAgICAgICAgICAgcmV0dXJuIDA7CisgICAg
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAgICAgaWYgKChuZXh0ID0gY3VycmVudC0+cHNl
dWRvQXdhcmVOZXh0U2libGluZygpKSkKICAgICAgICAgICAgIHJldHVybiBuZXh0OwogICAgIH0K
LSAgICByZXR1cm4gMDsKKyAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAogTm9kZSogbmV4dEFuY2Vz
dG9yU2libGluZyhjb25zdCBOb2RlKiBjdXJyZW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZG9tL1Byb2Nlc3NpbmdJbnN0cnVjdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvZG9tL1Byb2Nl
c3NpbmdJbnN0cnVjdGlvbi5oCmluZGV4IDdkNDU1ODUzMDk0ZWUyYzcyOWNlNjMyMzg3YzljMGZi
MDk5YzU4NzUuLmIzMjVjMzhkYWY1NDBhMDllOGZiZGI1MzhmY2U3YmYwM2VlODAzOWEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb24uaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9kb20vUHJvY2Vzc2luZ0luc3RydWN0aW9uLmgKQEAgLTkxLDEyICs5MSw5
IEBAIHByaXZhdGU6CiAjZW5kaWYKIH07CiAKLWlubGluZSBib29sIGlzUHJvY2Vzc2luZ0luc3Ry
dWN0aW9uKGNvbnN0IE5vZGUmIG5vZGUpCi17Ci0gICAgcmV0dXJuIG5vZGUubm9kZVR5cGUoKSA9
PSBOb2RlOjpQUk9DRVNTSU5HX0lOU1RSVUNUSU9OX05PREU7Ci19Ci0KLU5PREVfVFlQRV9DQVNU
UyhQcm9jZXNzaW5nSW5zdHJ1Y3Rpb24pCitTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0JFR0lOKFBy
b2Nlc3NpbmdJbnN0cnVjdGlvbikKKyAgICBzdGF0aWMgYm9vbCBpc1Byb2Nlc3NpbmdJbnN0cnVj
dGlvbihjb25zdCBOb2RlJiBub2RlKSB7IHJldHVybiBub2RlLm5vZGVUeXBlKCkgPT0gTm9kZTo6
UFJPQ0VTU0lOR19JTlNUUlVDVElPTl9OT0RFOyB9CitTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0VO
RCgpCiAKIH0gLy9uYW1lc3BhY2UKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1Bz
ZXVkb0VsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Qc2V1ZG9FbGVtZW50LmgKaW5kZXgg
MjhmMDM0N2NlYzcxZjI2YTIyMDRiNTQ2NmU1MDUwNGJjMDEwY2M3Yy4uMGE5MGE0NWU2MDE5OTJj
ZTQ3MzAwOTI4ZDI0ODFlNGQ1NTNjMWRmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9t
L1BzZXVkb0VsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vUHNldWRvRWxlbWVudC5o
CkBAIC03Nyw5ICs3Nyw5IEBAIGlubGluZSBib29sIHBzZXVkb0VsZW1lbnRSZW5kZXJlcklzTmVl
ZGVkKGNvbnN0IFJlbmRlclN0eWxlKiBzdHlsZSkKICAgICByZXR1cm4gc3R5bGUgJiYgc3R5bGUt
PmRpc3BsYXkoKSAhPSBOT05FICYmIChzdHlsZS0+Y29udGVudERhdGEoKSB8fCBzdHlsZS0+aGFz
Rmxvd0Zyb20oKSk7CiB9CiAKLXZvaWQgaXNQc2V1ZG9FbGVtZW50KGNvbnN0IFBzZXVkb0VsZW1l
bnQmKTsgLy8gQ2F0Y2ggdW5uZWNlc3NhcnkgcnVudGltZSBjaGVjayBvZiB0eXBlIGtub3duIGF0
IGNvbXBpbGUgdGltZS4KLWlubGluZSBib29sIGlzUHNldWRvRWxlbWVudChjb25zdCBOb2RlJiBu
b2RlKSB7IHJldHVybiBub2RlLmlzUHNldWRvRWxlbWVudCgpOyB9Ci1OT0RFX1RZUEVfQ0FTVFMo
UHNldWRvRWxlbWVudCkKK1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNfQkVHSU4oUHNldWRvRWxlbWVu
dCkKKyAgICBzdGF0aWMgYm9vbCBpc1BzZXVkb0VsZW1lbnQoY29uc3QgTm9kZSYgbm9kZSkgeyBy
ZXR1cm4gbm9kZS5pc1BzZXVkb0VsZW1lbnQoKTsgfQorU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19F
TkQoKQogCiB9IC8vIG5hbWVzcGFjZQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20v
UmFuZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL1JhbmdlLmNwcAppbmRleCA4NzE1NzY2MTA5
Njc1MWZkYzRjZDBjNzhiZDhjYTkwYjg3Mzk3MWI5Li41YTZjNzU0ZjRlMGMzODhmMTY2NjgyZjc2
NTIwMDk1MmQxMTRlZWE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vUmFuZ2UuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9SYW5nZS5jcHAKQEAgLTY2MCw5ICs2NjAsOCBAQCBz
dGF0aWMgaW5saW5lIHVuc2lnbmVkIGxlbmd0aE9mQ29udGVudHNJbk5vZGUoTm9kZSogbm9kZSkK
ICAgICBjYXNlIE5vZGU6OlRFWFRfTk9ERToKICAgICBjYXNlIE5vZGU6OkNEQVRBX1NFQ1RJT05f
Tk9ERToKICAgICBjYXNlIE5vZGU6OkNPTU1FTlRfTk9ERToKLSAgICAgICAgcmV0dXJuIHRvQ2hh
cmFjdGVyRGF0YShub2RlKS0+bGVuZ3RoKCk7CiAgICAgY2FzZSBOb2RlOjpQUk9DRVNTSU5HX0lO
U1RSVUNUSU9OX05PREU6Ci0gICAgICAgIHJldHVybiB0b1Byb2Nlc3NpbmdJbnN0cnVjdGlvbihu
b2RlKS0+ZGF0YSgpLmxlbmd0aCgpOworICAgICAgICByZXR1cm4gZG93bmNhc3Q8Q2hhcmFjdGVy
RGF0YT4oKm5vZGUpLmxlbmd0aCgpOwogICAgIGNhc2UgTm9kZTo6RUxFTUVOVF9OT0RFOgogICAg
IGNhc2UgTm9kZTo6QVRUUklCVVRFX05PREU6CiAgICAgY2FzZSBOb2RlOjpFTlRJVFlfUkVGRVJF
TkNFX05PREU6CkBAIC04MDksNyArODA4LDcgQEAgUGFzc1JlZlB0cjxOb2RlPiBSYW5nZTo6cHJv
Y2Vzc0NvbnRlbnRzQmV0d2Vlbk9mZnNldHMoQWN0aW9uVHlwZSBhY3Rpb24sIFBhc3NSZWYKICAg
ICAgICAgICAgICAgICByZXN1bHQgPSBjLnJlbGVhc2UoKTsKICAgICAgICAgfQogICAgICAgICBp
ZiAoYWN0aW9uID09IEV4dHJhY3QgfHwgYWN0aW9uID09IERlbGV0ZSkKLSAgICAgICAgICAgIHRv
Q2hhcmFjdGVyRGF0YShjb250YWluZXIpLT5kZWxldGVEYXRhKHN0YXJ0T2Zmc2V0LCBlbmRPZmZz
ZXQgLSBzdGFydE9mZnNldCwgZWMpOworICAgICAgICAgICAgZG93bmNhc3Q8Q2hhcmFjdGVyRGF0
YT4oKmNvbnRhaW5lcikuZGVsZXRlRGF0YShzdGFydE9mZnNldCwgZW5kT2Zmc2V0IC0gc3RhcnRP
ZmZzZXQsIGVjKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBOb2RlOjpQUk9DRVNTSU5HX0lO
U1RSVUNUSU9OX05PREU6CiAgICAgICAgIGVuZE9mZnNldCA9IHN0ZDo6bWluKGVuZE9mZnNldCwg
c3RhdGljX2Nhc3Q8UHJvY2Vzc2luZ0luc3RydWN0aW9uKj4oY29udGFpbmVyKS0+ZGF0YSgpLmxl
bmd0aCgpKTsKQEAgLTgyNCwxMCArODIzLDEwIEBAIFBhc3NSZWZQdHI8Tm9kZT4gUmFuZ2U6OnBy
b2Nlc3NDb250ZW50c0JldHdlZW5PZmZzZXRzKEFjdGlvblR5cGUgYWN0aW9uLCBQYXNzUmVmCiAg
ICAgICAgICAgICAgICAgcmVzdWx0ID0gYy5yZWxlYXNlKCk7CiAgICAgICAgIH0KICAgICAgICAg
aWYgKGFjdGlvbiA9PSBFeHRyYWN0IHx8IGFjdGlvbiA9PSBEZWxldGUpIHsKLSAgICAgICAgICAg
IFByb2Nlc3NpbmdJbnN0cnVjdGlvbiogcGkgPSB0b1Byb2Nlc3NpbmdJbnN0cnVjdGlvbihjb250
YWluZXIpOwotICAgICAgICAgICAgU3RyaW5nIGRhdGEocGktPmRhdGEoKSk7CisgICAgICAgICAg
ICBQcm9jZXNzaW5nSW5zdHJ1Y3Rpb24mIHBpID0gZG93bmNhc3Q8UHJvY2Vzc2luZ0luc3RydWN0
aW9uPigqY29udGFpbmVyKTsKKyAgICAgICAgICAgIFN0cmluZyBkYXRhKHBpLmRhdGEoKSk7CiAg
ICAgICAgICAgICBkYXRhLnJlbW92ZShzdGFydE9mZnNldCwgZW5kT2Zmc2V0IC0gc3RhcnRPZmZz
ZXQpOwotICAgICAgICAgICAgcGktPnNldERhdGEoZGF0YSwgZWMpOworICAgICAgICAgICAgcGku
c2V0RGF0YShkYXRhLCBlYyk7CiAgICAgICAgIH0KICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBO
b2RlOjpFTEVNRU5UX05PREU6CkBAIC0xMTUyLDE3ICsxMTUxLDE0IEBAIE5vZGUqIFJhbmdlOjpj
aGVja05vZGVXT2Zmc2V0KE5vZGUqIG4sIGludCBvZmZzZXQsIEV4Y2VwdGlvbkNvZGUmIGVjKSBj
b25zdAogICAgICAgICBjYXNlIE5vZGU6OkVOVElUWV9OT0RFOgogICAgICAgICBjYXNlIE5vZGU6
Ok5PVEFUSU9OX05PREU6CiAgICAgICAgICAgICBlYyA9IFJhbmdlRXhjZXB0aW9uOjpJTlZBTElE
X05PREVfVFlQRV9FUlI7Ci0gICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgICAgIHJldHVy
biBudWxscHRyOwogICAgICAgICBjYXNlIE5vZGU6OkNEQVRBX1NFQ1RJT05fTk9ERToKICAgICAg
ICAgY2FzZSBOb2RlOjpDT01NRU5UX05PREU6CiAgICAgICAgIGNhc2UgTm9kZTo6VEVYVF9OT0RF
OgotICAgICAgICAgICAgaWYgKHN0YXRpY19jYXN0PHVuc2lnbmVkPihvZmZzZXQpID4gdG9DaGFy
YWN0ZXJEYXRhKG4pLT5sZW5ndGgoKSkKLSAgICAgICAgICAgICAgICBlYyA9IElOREVYX1NJWkVf
RVJSOwotICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgIGNhc2UgTm9kZTo6UFJPQ0VTU0lO
R19JTlNUUlVDVElPTl9OT0RFOgotICAgICAgICAgICAgaWYgKHN0YXRpY19jYXN0PHVuc2lnbmVk
PihvZmZzZXQpID4gdG9Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb24obiktPmRhdGEoKS5sZW5ndGgoKSkK
KyAgICAgICAgICAgIGlmIChzdGF0aWNfY2FzdDx1bnNpZ25lZD4ob2Zmc2V0KSA+IGRvd25jYXN0
PENoYXJhY3RlckRhdGE+KCpuKS5sZW5ndGgoKSkKICAgICAgICAgICAgICAgICBlYyA9IElOREVY
X1NJWkVfRVJSOwotICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgICAgICByZXR1cm4gbnVs
bHB0cjsKICAgICAgICAgY2FzZSBOb2RlOjpBVFRSSUJVVEVfTk9ERToKICAgICAgICAgY2FzZSBO
b2RlOjpET0NVTUVOVF9GUkFHTUVOVF9OT0RFOgogICAgICAgICBjYXNlIE5vZGU6OkRPQ1VNRU5U
X05PREU6CkBAIC0xMTcwLDcgKzExNjYsNyBAQCBOb2RlKiBSYW5nZTo6Y2hlY2tOb2RlV09mZnNl
dChOb2RlKiBuLCBpbnQgb2Zmc2V0LCBFeGNlcHRpb25Db2RlJiBlYykgY29uc3QKICAgICAgICAg
Y2FzZSBOb2RlOjpFTlRJVFlfUkVGRVJFTkNFX05PREU6CiAgICAgICAgIGNhc2UgTm9kZTo6WFBB
VEhfTkFNRVNQQUNFX05PREU6IHsKICAgICAgICAgICAgIGlmICghb2Zmc2V0KQotICAgICAgICAg
ICAgICAgIHJldHVybiAwOworICAgICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgICAg
ICAgICAgTm9kZSogY2hpbGRCZWZvcmUgPSBuLT50cmF2ZXJzZVRvQ2hpbGRBdChvZmZzZXQgLSAx
KTsKICAgICAgICAgICAgIGlmICghY2hpbGRCZWZvcmUpCiAgICAgICAgICAgICAgICAgZWMgPSBJ
TkRFWF9TSVpFX0VSUjsKQEAgLTExNzgsNyArMTE3NCw3IEBAIE5vZGUqIFJhbmdlOjpjaGVja05v
ZGVXT2Zmc2V0KE5vZGUqIG4sIGludCBvZmZzZXQsIEV4Y2VwdGlvbkNvZGUmIGVjKSBjb25zdAog
ICAgICAgICB9CiAgICAgfQogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVybiAw
OworICAgIHJldHVybiBudWxscHRyOwogfQogCiB2b2lkIFJhbmdlOjpjaGVja05vZGVCQShOb2Rl
KiBuLCBFeGNlcHRpb25Db2RlJiBlYykgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvRWRpdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcApp
bmRleCAxMWI3MWVmNDBkY2FlMDA4MjMwNzIyYzZhNWZiODY3MWZkNDNiZDc4Li45OWExYTlmODc4
YWRjZjBhYzkzNmE5YzUxY2Y1MWRjZjg3YzQzZDU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL0VkaXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3Iu
Y3BwCkBAIC01ODgsOCArNTg4LDggQEAgYm9vbCBFZGl0b3I6OnNob3VsZEluc2VydEZyYWdtZW50
KFBhc3NSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4gZnJhZ21lbnQsIFBhc3NSZWYKICAgICAKICAg
ICBpZiAoZnJhZ21lbnQpIHsKICAgICAgICAgTm9kZSogY2hpbGQgPSBmcmFnbWVudC0+Zmlyc3RD
aGlsZCgpOwotICAgICAgICBpZiAoY2hpbGQgJiYgZnJhZ21lbnQtPmxhc3RDaGlsZCgpID09IGNo
aWxkICYmIGNoaWxkLT5pc0NoYXJhY3RlckRhdGFOb2RlKCkpCi0gICAgICAgICAgICByZXR1cm4g
Y2xpZW50KCktPnNob3VsZEluc2VydFRleHQodG9DaGFyYWN0ZXJEYXRhKGNoaWxkKS0+ZGF0YSgp
LCByZXBsYWNpbmdET01SYW5nZS5nZXQoKSwgZ2l2ZW5BY3Rpb24pOworICAgICAgICBpZiAoY2hp
bGQgJiYgZnJhZ21lbnQtPmxhc3RDaGlsZCgpID09IGNoaWxkICYmIGlzPENoYXJhY3RlckRhdGE+
KGNoaWxkKSkKKyAgICAgICAgICAgIHJldHVybiBjbGllbnQoKS0+c2hvdWxkSW5zZXJ0VGV4dChk
b3duY2FzdDxDaGFyYWN0ZXJEYXRhPigqY2hpbGQpLmRhdGEoKSwgcmVwbGFjaW5nRE9NUmFuZ2Uu
Z2V0KCksIGdpdmVuQWN0aW9uKTsKICAgICB9CiAKICAgICByZXR1cm4gY2xpZW50KCktPnNob3Vs
ZEluc2VydE5vZGUoZnJhZ21lbnQuZ2V0KCksIHJlcGxhY2luZ0RPTVJhbmdlLmdldCgpLCBnaXZl
bkFjdGlvbik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL01hcmt1cEFjY3Vt
dWxhdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvTWFya3VwQWNjdW11bGF0b3IuY3Bw
CmluZGV4IGI3ZjlhNzIyZGE4MDE1OGZhNWY4ZmY0NDE4MGUxOTgyMzFlNTZhMjIuLmU0ZDlhZGE1
MTQ1NDVjMDY3ODdmYzdlYjM3N2Q0ZTBmM2IwMGYzOGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvTWFya3VwQWNjdW11bGF0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvTWFya3VwQWNjdW11bGF0b3IuY3BwCkBAIC01NTYsNyArNTU2LDcgQEAgdm9pZCBNYXJr
dXBBY2N1bXVsYXRvcjo6YXBwZW5kU3RhcnRNYXJrdXAoU3RyaW5nQnVpbGRlciYgcmVzdWx0LCBj
b25zdCBOb2RlJiBub2QKICAgICAgICAgYXBwZW5kVGV4dChyZXN1bHQsIHRvVGV4dChub2RlKSk7
CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgTm9kZTo6Q09NTUVOVF9OT0RFOgotICAgICAgICBh
cHBlbmRDb21tZW50KHJlc3VsdCwgdG9Db21tZW50KG5vZGUpLmRhdGEoKSk7CisgICAgICAgIGFw
cGVuZENvbW1lbnQocmVzdWx0LCBkb3duY2FzdDxDb21tZW50Pihub2RlKS5kYXRhKCkpOwogICAg
ICAgICBicmVhazsKICAgICBjYXNlIE5vZGU6OkRPQ1VNRU5UX05PREU6CiAgICAgICAgIGFwcGVu
ZFhNTERlY2xhcmF0aW9uKHJlc3VsdCwgdG9Eb2N1bWVudChub2RlKSk7CkBAIC01NjQsMTYgKzU2
NCwxNiBAQCB2b2lkIE1hcmt1cEFjY3VtdWxhdG9yOjphcHBlbmRTdGFydE1hcmt1cChTdHJpbmdC
dWlsZGVyJiByZXN1bHQsIGNvbnN0IE5vZGUmIG5vZAogICAgIGNhc2UgTm9kZTo6RE9DVU1FTlRf
RlJBR01FTlRfTk9ERToKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBOb2RlOjpET0NVTUVOVF9U
WVBFX05PREU6Ci0gICAgICAgIGFwcGVuZERvY3VtZW50VHlwZShyZXN1bHQsIHRvRG9jdW1lbnRU
eXBlKG5vZGUpKTsKKyAgICAgICAgYXBwZW5kRG9jdW1lbnRUeXBlKHJlc3VsdCwgZG93bmNhc3Q8
RG9jdW1lbnRUeXBlPihub2RlKSk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgTm9kZTo6UFJP
Q0VTU0lOR19JTlNUUlVDVElPTl9OT0RFOgotICAgICAgICBhcHBlbmRQcm9jZXNzaW5nSW5zdHJ1
Y3Rpb24ocmVzdWx0LCB0b1Byb2Nlc3NpbmdJbnN0cnVjdGlvbihub2RlKS50YXJnZXQoKSwgdG9Q
cm9jZXNzaW5nSW5zdHJ1Y3Rpb24obm9kZSkuZGF0YSgpKTsKKyAgICAgICAgYXBwZW5kUHJvY2Vz
c2luZ0luc3RydWN0aW9uKHJlc3VsdCwgZG93bmNhc3Q8UHJvY2Vzc2luZ0luc3RydWN0aW9uPihu
b2RlKS50YXJnZXQoKSwgZG93bmNhc3Q8UHJvY2Vzc2luZ0luc3RydWN0aW9uPihub2RlKS5kYXRh
KCkpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIE5vZGU6OkVMRU1FTlRfTk9ERToKICAgICAg
ICAgYXBwZW5kRWxlbWVudChyZXN1bHQsIHRvRWxlbWVudChub2RlKSwgbmFtZXNwYWNlcyk7CiAg
ICAgICAgIGJyZWFrOwogICAgIGNhc2UgTm9kZTo6Q0RBVEFfU0VDVElPTl9OT0RFOgotICAgICAg
ICBhcHBlbmRDREFUQVNlY3Rpb24ocmVzdWx0LCB0b0NEQVRBU2VjdGlvbihub2RlKS5kYXRhKCkp
OworICAgICAgICBhcHBlbmRDREFUQVNlY3Rpb24ocmVzdWx0LCBkb3duY2FzdDxDREFUQVNlY3Rp
b24+KG5vZGUpLmRhdGEoKSk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgTm9kZTo6QVRUUklC
VVRFX05PREU6CiAgICAgY2FzZSBOb2RlOjpFTlRJVFlfTk9ERToKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvSFRNTENvbnZlcnRlci5tbSBiL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvY29jb2EvSFRNTENvbnZlcnRlci5tbQppbmRleCBiZDU3ZDkzY2M5NTYyZjg0YTVi
ZDljZWVlOTE5OGEzMDI5NDQzOWY1Li44MmI1OWNmNTEwYjM5YTk2NDVhZGNmYWU4Y2QwMmJlY2Zl
M2I3MTM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0hUTUxDb252
ZXJ0ZXIubW0KKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9IVE1MQ29udmVydGVy
Lm1tCkBAIC0yNDE0LDggKzI0MTQsOCBAQCB2b2lkIEhUTUxDb252ZXJ0ZXI6Ol90cmF2ZXJzZU5v
ZGUoTm9kZSYgbm9kZSwgdW5zaWduZWQgZGVwdGgsIGJvb2wgZW1iZWRkZWQpCiAgICAgICAgICAg
ICAgICAgX2V4aXRFbGVtZW50KGVsZW1lbnQsIGRlcHRoLCBzdGFydEluZGV4KTsKICAgICAgICAg
ICAgIH0KICAgICAgICAgfQotICAgIH0gZWxzZSBpZiAobm9kZS5pc0NoYXJhY3RlckRhdGFOb2Rl
KCkpCi0gICAgICAgIF9wcm9jZXNzVGV4dCh0b0NoYXJhY3RlckRhdGEobm9kZSkpOworICAgIH0g
ZWxzZSBpZiAoaXM8Q2hhcmFjdGVyRGF0YT4obm9kZSkpCisgICAgICAgIF9wcm9jZXNzVGV4dChk
b3duY2FzdDxDaGFyYWN0ZXJEYXRhPihub2RlKSk7CiAKICAgICBpZiAoaXNFbmQpCiAgICAgICAg
IF9mbGFncy5yZWFjaGVkRW5kID0gWUVTOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JET01BZ2VudC5jcHAKaW5kZXggNzYxZGU1NDVjMTY3OGJkZDZhMGFmZWQyNWFhOGM4
ZTQ0MmE1MDg2ZS4uZDZiNWRhMDk1MTAzZTljY2ZiZWRkYWM2ZjUwNDQwNjQ3ZGM0YjRlMCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuY3BwCkBAIC0x
MzA2LDExICsxMzA2LDExIEBAIFBhc3NSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6RE9NOjpO
b2RlPiBJbnNwZWN0b3JET01BZ2VudDo6YnVpbGRPYmplY3RGb3JOb2RlCiAgICAgICAgIHZhbHVl
LT5zZXREb2N1bWVudFVSTChkb2N1bWVudFVSTFN0cmluZyhkb2N1bWVudCkpOwogICAgICAgICB2
YWx1ZS0+c2V0QmFzZVVSTChkb2N1bWVudEJhc2VVUkxTdHJpbmcoZG9jdW1lbnQpKTsKICAgICAg
ICAgdmFsdWUtPnNldFhtbFZlcnNpb24oZG9jdW1lbnQtPnhtbFZlcnNpb24oKSk7Ci0gICAgfSBl
bHNlIGlmIChub2RlLT5ub2RlVHlwZSgpID09IE5vZGU6OkRPQ1VNRU5UX1RZUEVfTk9ERSkgewot
ICAgICAgICBEb2N1bWVudFR5cGUqIGRvY1R5cGUgPSB0b0RvY3VtZW50VHlwZShub2RlKTsKLSAg
ICAgICAgdmFsdWUtPnNldFB1YmxpY0lkKGRvY1R5cGUtPnB1YmxpY0lkKCkpOwotICAgICAgICB2
YWx1ZS0+c2V0U3lzdGVtSWQoZG9jVHlwZS0+c3lzdGVtSWQoKSk7Ci0gICAgICAgIHZhbHVlLT5z
ZXRJbnRlcm5hbFN1YnNldChkb2NUeXBlLT5pbnRlcm5hbFN1YnNldCgpKTsKKyAgICB9IGVsc2Ug
aWYgKGlzPERvY3VtZW50VHlwZT4obm9kZSkpIHsKKyAgICAgICAgRG9jdW1lbnRUeXBlJiBkb2NU
eXBlID0gZG93bmNhc3Q8RG9jdW1lbnRUeXBlPigqbm9kZSk7CisgICAgICAgIHZhbHVlLT5zZXRQ
dWJsaWNJZChkb2NUeXBlLnB1YmxpY0lkKCkpOworICAgICAgICB2YWx1ZS0+c2V0U3lzdGVtSWQo
ZG9jVHlwZS5zeXN0ZW1JZCgpKTsKKyAgICAgICAgdmFsdWUtPnNldEludGVybmFsU3Vic2V0KGRv
Y1R5cGUuaW50ZXJuYWxTdWJzZXQoKSk7CiAgICAgfSBlbHNlIGlmIChpczxBdHRyPihub2RlKSkg
ewogICAgICAgICBBdHRyJiBhdHRyaWJ1dGUgPSBkb3duY2FzdDxBdHRyPigqbm9kZSk7CiAgICAg
ICAgIHZhbHVlLT5zZXROYW1lKGF0dHJpYnV0ZS5uYW1lKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckxheWVyVHJlZUFnZW50LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JMYXllclRyZWVBZ2VudC5jcHAKaW5kZXggYTY5ZGYx
YWQ1ODI4MjZhMjYzMzc2ZDc4NmEzMTJhMWZmZDY2NTNiYS4uOTdkZmE0MDJiODEwZjZlZmRmNmVi
YTI0NDA0YjM5ODRlNjNhYzFiZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvckxheWVyVHJlZUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQuY3BwCkBAIC0xODMsNyArMTgzLDcgQEAgUGFzc1Jl
ZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpMYXllclRyZWU6OkxheWVyPiBJbnNwZWN0b3JMYXll
clRyZWVBZ2VudDo6YnVpbGQKICAgICAgICAgaWYgKGlzUmVmbGVjdGlvbikKICAgICAgICAgICAg
IHJlbmRlcmVyID0gcmVuZGVyZXItPnBhcmVudCgpOwogICAgICAgICBsYXllck9iamVjdC0+c2V0
SXNHZW5lcmF0ZWRDb250ZW50KHRydWUpOwotICAgICAgICBsYXllck9iamVjdC0+c2V0UHNldWRv
RWxlbWVudElkKGJpbmRQc2V1ZG9FbGVtZW50KHRvUHNldWRvRWxlbWVudChyZW5kZXJlci0+bm9k
ZSgpKSkpOworICAgICAgICBsYXllck9iamVjdC0+c2V0UHNldWRvRWxlbWVudElkKGJpbmRQc2V1
ZG9FbGVtZW50KGRvd25jYXN0PFBzZXVkb0VsZW1lbnQ+KHJlbmRlcmVyLT5ub2RlKCkpKSk7CiAg
ICAgICAgIGlmIChyZW5kZXJlci0+aXNCZWZvcmVDb250ZW50KCkpCiAgICAgICAgICAgICBsYXll
ck9iamVjdC0+c2V0UHNldWRvRWxlbWVudCgiYmVmb3JlIik7CiAgICAgICAgIGVsc2UgaWYgKHJl
bmRlcmVyLT5pc0FmdGVyQ29udGVudCgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL0hpdFRlc3RSZXN1bHQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0hpdFRl
c3RSZXN1bHQuY3BwCmluZGV4IDlhYWVjOGNiM2FkMmM0ZWMxZDlmYmM4ZjBiOGRlYWJiOTY2OTA0
YmIuLmViYmFiZDE1YzM2MjZmZjk4ZjIzYzljNWJlOWYyNzdmZGJiZjZlMzcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9IaXRUZXN0UmVzdWx0LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvSGl0VGVzdFJlc3VsdC5jcHAKQEAgLTEyOSwxOCArMTI5LDE4IEBA
IHZvaWQgSGl0VGVzdFJlc3VsdDo6c2V0VG9Ob25TaGFkb3dBbmNlc3RvcigpCiAgICAgc2V0SW5u
ZXJOb25TaGFyZWROb2RlKG5vZGUpOwogfQogCi12b2lkIEhpdFRlc3RSZXN1bHQ6OnNldElubmVy
Tm9kZShOb2RlKiBuKQordm9pZCBIaXRUZXN0UmVzdWx0OjpzZXRJbm5lck5vZGUoTm9kZSogbm9k
ZSkKIHsKLSAgICBpZiAobiAmJiBuLT5pc1BzZXVkb0VsZW1lbnQoKSkKLSAgICAgICAgbiA9IHRv
UHNldWRvRWxlbWVudChuKS0+aG9zdEVsZW1lbnQoKTsKLSAgICBtX2lubmVyTm9kZSA9IG47Cisg
ICAgaWYgKG5vZGUgJiYgaXM8UHNldWRvRWxlbWVudD4obm9kZSkpCisgICAgICAgIG5vZGUgPSBk
b3duY2FzdDxQc2V1ZG9FbGVtZW50Pigqbm9kZSkuaG9zdEVsZW1lbnQoKTsKKyAgICBtX2lubmVy
Tm9kZSA9IG5vZGU7CiB9CiAgICAgCi12b2lkIEhpdFRlc3RSZXN1bHQ6OnNldElubmVyTm9uU2hh
cmVkTm9kZShOb2RlKiBuKQordm9pZCBIaXRUZXN0UmVzdWx0OjpzZXRJbm5lck5vblNoYXJlZE5v
ZGUoTm9kZSogbm9kZSkKIHsKLSAgICBpZiAobiAmJiBuLT5pc1BzZXVkb0VsZW1lbnQoKSkKLSAg
ICAgICAgbiA9IHRvUHNldWRvRWxlbWVudChuKS0+aG9zdEVsZW1lbnQoKTsKLSAgICBtX2lubmVy
Tm9uU2hhcmVkTm9kZSA9IG47CisgICAgaWYgKG5vZGUgJiYgaXM8UHNldWRvRWxlbWVudD4obm9k
ZSkpCisgICAgICAgIG5vZGUgPSBkb3duY2FzdDxQc2V1ZG9FbGVtZW50Pigqbm9kZSkuaG9zdEVs
ZW1lbnQoKTsKKyAgICBtX2lubmVyTm9uU2hhcmVkTm9kZSA9IG5vZGU7CiB9CiAKIHZvaWQgSGl0
VGVzdFJlc3VsdDo6c2V0VVJMRWxlbWVudChFbGVtZW50KiBuKSAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0SXRlbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyTGlzdEl0ZW0uY3BwCmluZGV4IGZhMDEyYzllOGJiYzNhNjczNzNiMjA0
MDNiZTUxZTAwMTk2ZDMzYTIuLmVhN2YyMTg4NTE4MWU0YjFjYmNkMDRkZTNmMmNhNTAyOTg0OTIw
MzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0SXRlbS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RJdGVtLmNwcApAQCAt
OTksOCArOTksOCBAQCBzdGF0aWMgYm9vbCBpc0xpc3QoY29uc3QgRWxlbWVudCogZWxlbWVudCkK
IHN0YXRpYyBFbGVtZW50KiBlbmNsb3NpbmdMaXN0KGNvbnN0IFJlbmRlckxpc3RJdGVtKiBsaXN0
SXRlbSkKIHsKICAgICBFbGVtZW50JiBsaXN0SXRlbUVsZW1lbnQgPSBsaXN0SXRlbS0+ZWxlbWVu
dCgpOwotICAgIEVsZW1lbnQqIGZpcnN0Tm9kZSA9IDA7Ci0gICAgRWxlbWVudCogcGFyZW50ID0g
bGlzdEl0ZW1FbGVtZW50LmlzUHNldWRvRWxlbWVudCgpID8gdG9Qc2V1ZG9FbGVtZW50KGxpc3RJ
dGVtRWxlbWVudCkuaG9zdEVsZW1lbnQoKSA6IGxpc3RJdGVtRWxlbWVudC5wYXJlbnRFbGVtZW50
KCk7CisgICAgRWxlbWVudCogZmlyc3ROb2RlID0gbnVsbHB0cjsKKyAgICBFbGVtZW50KiBwYXJl
bnQgPSBpczxQc2V1ZG9FbGVtZW50PihsaXN0SXRlbUVsZW1lbnQpID8gZG93bmNhc3Q8UHNldWRv
RWxlbWVudD4obGlzdEl0ZW1FbGVtZW50KS5ob3N0RWxlbWVudCgpIDogbGlzdEl0ZW1FbGVtZW50
LnBhcmVudEVsZW1lbnQoKTsKICAgICAvLyBXZSB1c2UgcGFyZW50Tm9kZSBiZWNhdXNlIHRoZSBl
bmNsb3NpbmcgbGlzdCBjb3VsZCBiZSBhIFNoYWRvd1Jvb3QgdGhhdCdzIG5vdCBFbGVtZW50Lgog
ICAgIGZvciAoOyBwYXJlbnQ7IHBhcmVudCA9IHBhcmVudC0+cGFyZW50RWxlbWVudCgpKSB7CiAg
ICAgICAgIGlmIChpc0xpc3QocGFyZW50KSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ck9iamVjdC5jcHAKaW5kZXggNzljOGVjYzU5M2Y1ZTA0YWMzMWNlZTM2ZjA4NzAwNGZmMjk4MWEz
MC4uNmRlMzVkMDQ0ZjI0N2M2NDEwODYxMmY0ZTk2YjRhM2QwMmM0YjYyMiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAKQEAgLTI1NDksNyArMjU0OSw3IEBAIGJv
b2wgUmVuZGVyT2JqZWN0OjpjYW5IYXZlR2VuZXJhdGVkQ2hpbGRyZW4oKSBjb25zdAogCiBOb2Rl
KiBSZW5kZXJPYmplY3Q6OmdlbmVyYXRpbmdQc2V1ZG9Ib3N0RWxlbWVudCgpIGNvbnN0CiB7Ci0g
ICAgcmV0dXJuIHRvUHNldWRvRWxlbWVudChub2RlKCkpLT5ob3N0RWxlbWVudCgpOworICAgIHJl
dHVybiBkb3duY2FzdDxQc2V1ZG9FbGVtZW50Pigqbm9kZSgpKS5ob3N0RWxlbWVudCgpOwogfQog
CiB2b2lkIFJlbmRlck9iamVjdDo6c2V0TmVlZHNCb3VuZGFyaWVzVXBkYXRlKCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3htbC9YUGF0aEZ1bmN0aW9ucy5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS94bWwvWFBhdGhGdW5jdGlvbnMuY3BwCmluZGV4IGUzN2Q0MDcyOGZhZGQ5NjU1M2M3MWU5MzE1
YWYzY2UwNGQ2YjYzMGUuLjFlMzZlOWJkZmM4YTg2MmM5Y2Q0ZTMyZWFmZmExMmU4M2JmMjViYTYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3htbC9YUGF0aEZ1bmN0aW9ucy5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUveG1sL1hQYXRoRnVuY3Rpb25zLmNwcApAQCAtMzYyLDggKzM2Miw4IEBA
IHN0YXRpYyBpbmxpbmUgU3RyaW5nIGV4cGFuZGVkTmFtZUxvY2FsUGFydChOb2RlKiBub2RlKQog
ewogICAgIC8vIFRoZSBsb2NhbCBwYXJ0IG9mIGFuIFhQYXRoIGV4cGFuZGVkLW5hbWUgbWF0Y2hl
cyBET00gbG9jYWwgbmFtZSBmb3IgbW9zdCBub2RlIHR5cGVzLCBleGNlcHQgZm9yIG5hbWVzcGFj
ZSBub2RlcyBhbmQgcHJvY2Vzc2luZyBpbnN0cnVjdGlvbiBub2Rlcy4KICAgICBBU1NFUlQobm9k
ZS0+bm9kZVR5cGUoKSAhPSBOb2RlOjpYUEFUSF9OQU1FU1BBQ0VfTk9ERSk7IC8vIE5vdCBzdXBw
b3J0ZWQgeWV0LgotICAgIGlmIChub2RlLT5ub2RlVHlwZSgpID09IE5vZGU6OlBST0NFU1NJTkdf
SU5TVFJVQ1RJT05fTk9ERSkKLSAgICAgICAgcmV0dXJuIHRvUHJvY2Vzc2luZ0luc3RydWN0aW9u
KG5vZGUpLT50YXJnZXQoKTsKKyAgICBpZiAoaXM8UHJvY2Vzc2luZ0luc3RydWN0aW9uPihub2Rl
KSkKKyAgICAgICAgcmV0dXJuIGRvd25jYXN0PFByb2Nlc3NpbmdJbnN0cnVjdGlvbj4oKm5vZGUp
LnRhcmdldCgpOwogICAgIHJldHVybiBub2RlLT5sb2NhbE5hbWUoKS5zdHJpbmcoKTsKIH0KIAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>