<?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>137824</bug_id>
          
          <creation_ts>2014-10-17 10:19:13 -0700</creation_ts>
          <short_desc>Use is&lt;&gt;() / downcast&lt;&gt;() for StyleImage</short_desc>
          <delta_ts>2014-10-17 14:12:51 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Layout and Rendering</component>
          <version>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>Enhancement</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>137424</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Chris Dumez">cdumez</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>commit-queue</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1042392</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2014-10-17 10:19:13 -0700</bug_when>
    <thetext>Use is&lt;&gt;() / downcast&lt;&gt;() for StyleImage.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1042399</commentid>
    <comment_count>1</comment_count>
      <attachid>240021</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2014-10-17 10:42:33 -0700</bug_when>
    <thetext>Created attachment 240021
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1042415</commentid>
    <comment_count>2</comment_count>
      <attachid>240027</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2014-10-17 11:45:22 -0700</bug_when>
    <thetext>Created attachment 240027
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1042418</commentid>
    <comment_count>3</comment_count>
      <attachid>240027</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2014-10-17 12:00:05 -0700</bug_when>
    <thetext>Comment on attachment 240027
Patch

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

r=me

&gt; Source/WebCore/css/CSSCursorImageValue.cpp:67
&gt; +    if (is&lt;StylePendingImage&gt;(m_image.get()))

Can we avoid the .get() here? An overload for RefPtr? Maybe that&apos;s overkill.

&gt; Source/WebCore/css/CSSImageSetValue.cpp:193
&gt; +    CachedResource* cachedResource = downcast&lt;StyleCachedImageSet&gt;(*m_imageSet).cachedImage();

cachedImage() returns a CachedImage*, and we store it in a CachedResource*, losing some type knowledge.
It doesn&apos;t actually matter in this case, but I&apos;m commenting on it anyway because this is one reason I like auto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1042442</commentid>
    <comment_count>4</comment_count>
      <attachid>240027</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2014-10-17 13:23:21 -0700</bug_when>
    <thetext>Comment on attachment 240027
Patch

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

&gt;&gt; Source/WebCore/css/CSSCursorImageValue.cpp:67
&gt;&gt; +    if (is&lt;StylePendingImage&gt;(m_image.get()))
&gt; 
&gt; Can we avoid the .get() here? An overload for RefPtr? Maybe that&apos;s overkill.

It is actually on my TODO list. There are actually not that many call sites that would benefit from it so it is not very high priority. Would still be nice to have though.

&gt;&gt; Source/WebCore/css/CSSImageSetValue.cpp:193
&gt;&gt; +    CachedResource* cachedResource = downcast&lt;StyleCachedImageSet&gt;(*m_imageSet).cachedImage();
&gt; 
&gt; cachedImage() returns a CachedImage*, and we store it in a CachedResource*, losing some type knowledge.
&gt; It doesn&apos;t actually matter in this case, but I&apos;m commenting on it anyway because this is one reason I like auto.

Ok, I will use tighter typing. (not a big fan of auto here because the type is not obvious but I understand it would help avoid this kind of loose typing mistakes).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1042445</commentid>
    <comment_count>5</comment_count>
      <attachid>240033</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2014-10-17 13:28:31 -0700</bug_when>
    <thetext>Created attachment 240033
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1042465</commentid>
    <comment_count>6</comment_count>
      <attachid>240033</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-10-17 14:12:47 -0700</bug_when>
    <thetext>Comment on attachment 240033
Patch

Clearing flags on attachment: 240033

Committed r174836: &lt;http://trac.webkit.org/changeset/174836&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1042466</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-10-17 14:12:51 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>240021</attachid>
            <date>2014-10-17 10:42:33 -0700</date>
            <delta_ts>2014-10-17 11:45:18 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-137824-20141017104238.patch</filename>
            <type>text/plain</type>
            <size>22111</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTc0ODIzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYWMwMjIyNGVkZjY3MDlm
MGY3NjQyMWQ1ZDIzYjhkNGFmMTIyZWVmNS4uN2M4NDQ3NzhmOWU1ZmJlOTYwZjgwNmMxODhhYzdm
ZDM2OTcyMmJiMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQxIEBACisyMDE0LTEwLTE3ICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgVXNlIGlzPD4oKSAvIGRvd25j
YXN0PD4oKSBmb3IgU3R5bGVJbWFnZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTM3ODI0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgVXNlIGlzPD4oKSAvIGRvd25jYXN0PD4oKSBmb3IgU3R5bGVJbWFnZSBh
bmQgY2xlYW4gdXAgdGhlIHN1cnJvdWRpbmcKKyAgICAgICAgY29kZS4KKworICAgICAgICBObyBu
ZXcgdGVzdHMsIG5vIGJlaGF2aW9yIGNoYW5nZS4KKworICAgICAgICAqIGNzcy9DU1NDdXJzb3JJ
bWFnZVZhbHVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU0N1cnNvckltYWdlVmFsdWU6OmRl
dGFjaFBlbmRpbmdJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NDdXJzb3JJbWFnZVZhbHVl
OjpjYWNoZWRJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NDdXJzb3JJbWFnZVZhbHVlOjpj
YWNoZWRJbWFnZVVSTCk6CisgICAgICAgICogY3NzL0NTU0ltYWdlU2V0VmFsdWUuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Q1NTSW1hZ2VTZXRWYWx1ZTo6ZGV0YWNoUGVuZGluZ0ltYWdlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkNTU0ltYWdlU2V0VmFsdWU6On5DU1NJbWFnZVNldFZhbHVlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkNTU0ltYWdlU2V0VmFsdWU6OmNhY2hlZEltYWdlU2V0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkNTU0ltYWdlU2V0VmFsdWU6Omhhc0ZhaWxlZE9yQ2FuY2VsZWRTdWJyZXNv
dXJjZXMpOgorICAgICAgICAqIGNzcy9DU1NJbWFnZVZhbHVlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkNTU0ltYWdlVmFsdWU6OmRldGFjaFBlbmRpbmdJbWFnZSk6CisgICAgICAgIChXZWJDb3Jl
OjpDU1NJbWFnZVZhbHVlOjpjYWNoZWRJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NJbWFn
ZVZhbHVlOjpoYXNGYWlsZWRPckNhbmNlbGVkU3VicmVzb3VyY2VzKToKKyAgICAgICAgKiBjc3Mv
U3R5bGVSZXNvbHZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJlc29sdmVyOjpsb2Fk
UGVuZGluZ1NoYXBlSW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVSZXNvbHZlcjo6bG9h
ZFBlbmRpbmdJbWFnZXMpOgorICAgICAgICAqIHBhZ2UvUGFnZVNlcmlhbGl6ZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6UGFnZVNlcmlhbGl6ZXI6OnJldHJpZXZlUmVzb3VyY2VzRm9yUHJvcGVy
dGllcyk6CisgICAgICAgICogcGFnZS9hbmltYXRpb24vQ1NTUHJvcGVydHlBbmltYXRpb24uY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6YmxlbmRGdW5jKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5
bGUvU3R5bGVDYWNoZWRJbWFnZS5oOgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9TdHlsZUNh
Y2hlZEltYWdlU2V0Lmg6CisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL1N0eWxlR2VuZXJhdGVk
SW1hZ2UuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvU3R5bGVJbWFnZS5oOgorICAgICAg
ICAqIHJlbmRlcmluZy9zdHlsZS9TdHlsZVBlbmRpbmdJbWFnZS5oOgorCiAyMDE0LTEwLTE2ICBK
ZXIgTm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgogCiAgICAgICAgIFtNYWNdIFJlcHJlc2Vu
dCBBVk1lZGlhU2VsZWN0aW9uT3B0aW9ucyBhcyBBdWRpb1RyYWNrcwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvY3NzL0NTU0N1cnNvckltYWdlVmFsdWUuY3BwIGIvU291cmNlL1dlYkNvcmUv
Y3NzL0NTU0N1cnNvckltYWdlVmFsdWUuY3BwCmluZGV4IDlmNDZlNzkxOWQ1NWEyYzJlMzJmZGY5
MzdlNTkxNmViN2IzZmE4ZTYuLjdhMTJmN2EzZTMzYjI4ZGVmM2JlZDgxODE1NzhmM2RmMzgzNTUz
YzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDdXJzb3JJbWFnZVZhbHVlLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ3Vyc29ySW1hZ2VWYWx1ZS5jcHAKQEAgLTY0
LDggKzY0LDggQEAgQ1NTQ3Vyc29ySW1hZ2VWYWx1ZTo6Q1NTQ3Vyc29ySW1hZ2VWYWx1ZShQYXNz
UmVmPENTU1ZhbHVlPiBpbWFnZVZhbHVlLCBib29sIGhhc0gKIAogaW5saW5lIHZvaWQgQ1NTQ3Vy
c29ySW1hZ2VWYWx1ZTo6ZGV0YWNoUGVuZGluZ0ltYWdlKCkKIHsKLSAgICBpZiAobV9pbWFnZSAm
JiBtX2ltYWdlLT5pc1BlbmRpbmdJbWFnZSgpKQotICAgICAgICB0b1N0eWxlUGVuZGluZ0ltYWdl
KCptX2ltYWdlKS5kZXRhY2hGcm9tQ1NTVmFsdWUoKTsKKyAgICBpZiAoaXM8U3R5bGVQZW5kaW5n
SW1hZ2U+KG1faW1hZ2UuZ2V0KCkpKQorICAgICAgICBkb3duY2FzdDxTdHlsZVBlbmRpbmdJbWFn
ZT4oKm1faW1hZ2UpLmRldGFjaEZyb21DU1NWYWx1ZSgpOwogfQogCiBDU1NDdXJzb3JJbWFnZVZh
bHVlOjp+Q1NTQ3Vyc29ySW1hZ2VWYWx1ZSgpCkBAIC0xNjAsOCArMTYwLDggQEAgU3R5bGVJbWFn
ZSogQ1NTQ3Vyc29ySW1hZ2VWYWx1ZTo6Y2FjaGVkSW1hZ2UoQ2FjaGVkUmVzb3VyY2VMb2FkZXIq
IGxvYWRlcikKICAgICAgICAgfQogICAgIH0KIAotICAgIGlmIChtX2ltYWdlICYmIG1faW1hZ2Ut
PmlzQ2FjaGVkSW1hZ2UoKSkKLSAgICAgICAgcmV0dXJuIHRvU3R5bGVDYWNoZWRJbWFnZShtX2lt
YWdlLmdldCgpKTsKKyAgICBpZiAoaXM8U3R5bGVDYWNoZWRJbWFnZT4obV9pbWFnZS5nZXQoKSkp
CisgICAgICAgIHJldHVybiBkb3duY2FzdDxTdHlsZUNhY2hlZEltYWdlPihtX2ltYWdlLmdldCgp
KTsKIAogICAgIHJldHVybiBudWxscHRyOwogfQpAQCAtMTkzLDkgKzE5Myw5IEBAIGJvb2wgQ1NT
Q3Vyc29ySW1hZ2VWYWx1ZTo6aXNTVkdDdXJzb3IoKSBjb25zdAogCiBTdHJpbmcgQ1NTQ3Vyc29y
SW1hZ2VWYWx1ZTo6Y2FjaGVkSW1hZ2VVUkwoKQogewotICAgIGlmICghbV9pbWFnZSB8fCAhbV9p
bWFnZS0+aXNDYWNoZWRJbWFnZSgpKQorICAgIGlmICghaXM8U3R5bGVDYWNoZWRJbWFnZT4obV9p
bWFnZS5nZXQoKSkpCiAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKLSAgICByZXR1cm4gdG9TdHls
ZUNhY2hlZEltYWdlKCptX2ltYWdlKS5jYWNoZWRJbWFnZSgpLT51cmwoKTsKKyAgICByZXR1cm4g
ZG93bmNhc3Q8U3R5bGVDYWNoZWRJbWFnZT4oKm1faW1hZ2UpLmNhY2hlZEltYWdlKCktPnVybCgp
OwogfQogCiB2b2lkIENTU0N1cnNvckltYWdlVmFsdWU6OmNsZWFyQ2FjaGVkSW1hZ2UoKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ltYWdlU2V0VmFsdWUuY3BwIGIvU291cmNl
L1dlYkNvcmUvY3NzL0NTU0ltYWdlU2V0VmFsdWUuY3BwCmluZGV4IDA3YWNiNzc0OWMzYjA1NDdl
MzAwYzUzNjkwMWYxYTBiNTQ5YTA4ZTEuLmI1YWYwMjBlNzExNzc0N2M1MWViYThlNWI5OTllMjUy
N2I3MWZmOTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NJbWFnZVNldFZhbHVl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTSW1hZ2VTZXRWYWx1ZS5jcHAKQEAgLTUy
LDE2ICs1MiwxNiBAQCBDU1NJbWFnZVNldFZhbHVlOjpDU1NJbWFnZVNldFZhbHVlKCkKIAogaW5s
aW5lIHZvaWQgQ1NTSW1hZ2VTZXRWYWx1ZTo6ZGV0YWNoUGVuZGluZ0ltYWdlKCkKIHsKLSAgICBp
ZiAobV9pbWFnZVNldCAmJiBtX2ltYWdlU2V0LT5pc1BlbmRpbmdJbWFnZSgpKQotICAgICAgICB0
b1N0eWxlUGVuZGluZ0ltYWdlKCptX2ltYWdlU2V0KS5kZXRhY2hGcm9tQ1NTVmFsdWUoKTsKKyAg
ICBpZiAoaXM8U3R5bGVQZW5kaW5nSW1hZ2U+KG1faW1hZ2VTZXQuZ2V0KCkpKQorICAgICAgICBk
b3duY2FzdDxTdHlsZVBlbmRpbmdJbWFnZT4oKm1faW1hZ2VTZXQpLmRldGFjaEZyb21DU1NWYWx1
ZSgpOwogfQogCiBDU1NJbWFnZVNldFZhbHVlOjp+Q1NTSW1hZ2VTZXRWYWx1ZSgpCiB7CiAgICAg
ZGV0YWNoUGVuZGluZ0ltYWdlKCk7CiAKLSAgICBpZiAobV9pbWFnZVNldCAmJiBtX2ltYWdlU2V0
LT5pc0NhY2hlZEltYWdlU2V0KCkpCi0gICAgICAgIHRvU3R5bGVDYWNoZWRJbWFnZVNldCgqbV9p
bWFnZVNldCkuY2xlYXJJbWFnZVNldFZhbHVlKCk7CisgICAgaWYgKGlzPFN0eWxlQ2FjaGVkSW1h
Z2VTZXQ+KG1faW1hZ2VTZXQuZ2V0KCkpKQorICAgICAgICBkb3duY2FzdDxTdHlsZUNhY2hlZElt
YWdlU2V0PigqbV9pbWFnZVNldCkuY2xlYXJJbWFnZVNldFZhbHVlKCk7CiB9CiAKIHZvaWQgQ1NT
SW1hZ2VTZXRWYWx1ZTo6ZmlsbEltYWdlU2V0KCkKQEAgLTEyOSw3ICsxMjksNyBAQCBTdHlsZUNh
Y2hlZEltYWdlU2V0KiBDU1NJbWFnZVNldFZhbHVlOjpjYWNoZWRJbWFnZVNldChDYWNoZWRSZXNv
dXJjZUxvYWRlciogbG9hZAogICAgICAgICB9CiAgICAgfQogCi0gICAgcmV0dXJuIChtX2ltYWdl
U2V0ICYmIG1faW1hZ2VTZXQtPmlzQ2FjaGVkSW1hZ2VTZXQoKSkgPyB0b1N0eWxlQ2FjaGVkSW1h
Z2VTZXQobV9pbWFnZVNldC5nZXQoKSkgOiBudWxscHRyOworICAgIHJldHVybiBpczxTdHlsZUNh
Y2hlZEltYWdlU2V0PihtX2ltYWdlU2V0LmdldCgpKSA/IGRvd25jYXN0PFN0eWxlQ2FjaGVkSW1h
Z2VTZXQ+KG1faW1hZ2VTZXQuZ2V0KCkpIDogbnVsbHB0cjsKIH0KIAogU3R5bGVDYWNoZWRJbWFn
ZVNldCogQ1NTSW1hZ2VTZXRWYWx1ZTo6Y2FjaGVkSW1hZ2VTZXQoQ2FjaGVkUmVzb3VyY2VMb2Fk
ZXIqIGxvYWRlcikKQEAgLTE4OCw5ICsxODgsOSBAQCBTdHJpbmcgQ1NTSW1hZ2VTZXRWYWx1ZTo6
Y3VzdG9tQ1NTVGV4dCgpIGNvbnN0CiAKIGJvb2wgQ1NTSW1hZ2VTZXRWYWx1ZTo6aGFzRmFpbGVk
T3JDYW5jZWxlZFN1YnJlc291cmNlcygpIGNvbnN0CiB7Ci0gICAgaWYgKCFtX2ltYWdlU2V0IHx8
ICFtX2ltYWdlU2V0LT5pc0NhY2hlZEltYWdlU2V0KCkpCisgICAgaWYgKCFpczxTdHlsZUNhY2hl
ZEltYWdlU2V0PihtX2ltYWdlU2V0LmdldCgpKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAg
IENhY2hlZFJlc291cmNlKiBjYWNoZWRSZXNvdXJjZSA9IHRvU3R5bGVDYWNoZWRJbWFnZVNldCgq
bV9pbWFnZVNldCkuY2FjaGVkSW1hZ2UoKTsKKyAgICBDYWNoZWRSZXNvdXJjZSogY2FjaGVkUmVz
b3VyY2UgPSBkb3duY2FzdDxTdHlsZUNhY2hlZEltYWdlU2V0PigqbV9pbWFnZVNldCkuY2FjaGVk
SW1hZ2UoKTsKICAgICBpZiAoIWNhY2hlZFJlc291cmNlKQogICAgICAgICByZXR1cm4gdHJ1ZTsK
ICAgICByZXR1cm4gY2FjaGVkUmVzb3VyY2UtPmxvYWRGYWlsZWRPckNhbmNlbGVkKCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTSW1hZ2VWYWx1ZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTSW1hZ2VWYWx1ZS5jcHAKaW5kZXggNzUwNzVjOThlZWRjNGUxZGY1YzI1OTgz
NjgzMzhmOTg1OWVjNTcxMC4uNjVjZjNmMzY0NWFmYzRiNDMxZTM1NjcxYjBiZTgxNDkzOGQ4Njg4
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ltYWdlVmFsdWUuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NJbWFnZVZhbHVlLmNwcApAQCAtNTQsOCArNTQsOCBAQCBD
U1NJbWFnZVZhbHVlOjpDU1NJbWFnZVZhbHVlKGNvbnN0IFN0cmluZyYgdXJsLCBTdHlsZUltYWdl
KiBpbWFnZSkKIAogaW5saW5lIHZvaWQgQ1NTSW1hZ2VWYWx1ZTo6ZGV0YWNoUGVuZGluZ0ltYWdl
KCkKIHsKLSAgICBpZiAobV9pbWFnZSAmJiBtX2ltYWdlLT5pc1BlbmRpbmdJbWFnZSgpKQotICAg
ICAgICB0b1N0eWxlUGVuZGluZ0ltYWdlKCptX2ltYWdlKS5kZXRhY2hGcm9tQ1NTVmFsdWUoKTsK
KyAgICBpZiAoaXM8U3R5bGVQZW5kaW5nSW1hZ2U+KG1faW1hZ2UuZ2V0KCkpKQorICAgICAgICBk
b3duY2FzdDxTdHlsZVBlbmRpbmdJbWFnZT4oKm1faW1hZ2UpLmRldGFjaEZyb21DU1NWYWx1ZSgp
OwogfQogCiBDU1NJbWFnZVZhbHVlOjp+Q1NTSW1hZ2VWYWx1ZSgpCkBAIC05Myw3ICs5Myw3IEBA
IFN0eWxlQ2FjaGVkSW1hZ2UqIENTU0ltYWdlVmFsdWU6OmNhY2hlZEltYWdlKENhY2hlZFJlc291
cmNlTG9hZGVyKiBsb2FkZXIsIGNvbnN0CiAgICAgICAgIH0KICAgICB9CiAKLSAgICByZXR1cm4g
KG1faW1hZ2UgJiYgbV9pbWFnZS0+aXNDYWNoZWRJbWFnZSgpKSA/IHRvU3R5bGVDYWNoZWRJbWFn
ZShtX2ltYWdlLmdldCgpKSA6IG51bGxwdHI7CisgICAgcmV0dXJuIGlzPFN0eWxlQ2FjaGVkSW1h
Z2U+KG1faW1hZ2UuZ2V0KCkpID8gZG93bmNhc3Q8U3R5bGVDYWNoZWRJbWFnZT4obV9pbWFnZS5n
ZXQoKSkgOiBudWxscHRyOwogfQogCiBTdHlsZUNhY2hlZEltYWdlKiBDU1NJbWFnZVZhbHVlOjpj
YWNoZWRJbWFnZShDYWNoZWRSZXNvdXJjZUxvYWRlciogbG9hZGVyKQpAQCAtMTAzLDkgKzEwMyw5
IEBAIFN0eWxlQ2FjaGVkSW1hZ2UqIENTU0ltYWdlVmFsdWU6OmNhY2hlZEltYWdlKENhY2hlZFJl
c291cmNlTG9hZGVyKiBsb2FkZXIpCiAKIGJvb2wgQ1NTSW1hZ2VWYWx1ZTo6aGFzRmFpbGVkT3JD
YW5jZWxlZFN1YnJlc291cmNlcygpIGNvbnN0CiB7Ci0gICAgaWYgKCFtX2ltYWdlIHx8ICFtX2lt
YWdlLT5pc0NhY2hlZEltYWdlKCkpCisgICAgaWYgKCFpczxTdHlsZUNhY2hlZEltYWdlPihtX2lt
YWdlLmdldCgpKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIENhY2hlZFJlc291cmNlKiBj
YWNoZWRSZXNvdXJjZSA9IHRvU3R5bGVDYWNoZWRJbWFnZSgqbV9pbWFnZSkuY2FjaGVkSW1hZ2Uo
KTsKKyAgICBDYWNoZWRSZXNvdXJjZSogY2FjaGVkUmVzb3VyY2UgPSBkb3duY2FzdDxTdHlsZUNh
Y2hlZEltYWdlPigqbV9pbWFnZSkuY2FjaGVkSW1hZ2UoKTsKICAgICBpZiAoIWNhY2hlZFJlc291
cmNlKQogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICByZXR1cm4gY2FjaGVkUmVzb3VyY2UtPmxv
YWRGYWlsZWRPckNhbmNlbGVkKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5
bGVSZXNvbHZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5jcHAKaW5k
ZXggNTcxM2M5ZmM5ZTZmNjU5NDM5ZWM0ZWMyZjRlNTAxNTdkZDI1ODcxMi4uMGY0MjQxN2Q1NjJi
NmQ0MTc4NTFlOTBmNjY2MmJkYzhkY2NmODVhMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
Y3NzL1N0eWxlUmVzb2x2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29s
dmVyLmNwcApAQCAtMzY4MCwxMCArMzY4MCwxMCBAQCB2b2lkIFN0eWxlUmVzb2x2ZXI6OmxvYWRQ
ZW5kaW5nU2hhcGVJbWFnZShTaGFwZVZhbHVlKiBzaGFwZVZhbHVlKQogICAgICAgICByZXR1cm47
CiAKICAgICBTdHlsZUltYWdlKiBpbWFnZSA9IHNoYXBlVmFsdWUtPmltYWdlKCk7Ci0gICAgaWYg
KCFpbWFnZSB8fCAhaW1hZ2UtPmlzUGVuZGluZ0ltYWdlKCkpCisgICAgaWYgKCFpczxTdHlsZVBl
bmRpbmdJbWFnZT4oaW1hZ2UpKQogICAgICAgICByZXR1cm47CiAKLSAgICBhdXRvJiBwZW5kaW5n
SW1hZ2UgPSB0b1N0eWxlUGVuZGluZ0ltYWdlKCppbWFnZSk7CisgICAgYXV0byYgcGVuZGluZ0lt
YWdlID0gZG93bmNhc3Q8U3R5bGVQZW5kaW5nSW1hZ2U+KCppbWFnZSk7CiAKICAgICBSZXNvdXJj
ZUxvYWRlck9wdGlvbnMgb3B0aW9ucyA9IENhY2hlZFJlc291cmNlTG9hZGVyOjpkZWZhdWx0Q2Fj
aGVkUmVzb3VyY2VPcHRpb25zKCk7CiAgICAgb3B0aW9ucy5zZXRSZXF1ZXN0T3JpZ2luUG9saWN5
KFBvdGVudGlhbGx5Q3Jvc3NPcmlnaW5FbmFibGVkKTsKQEAgLTM3MDUsOSArMzcwNSw5IEBAIHZv
aWQgU3R5bGVSZXNvbHZlcjo6bG9hZFBlbmRpbmdJbWFnZXMoKQogICAgICAgICBzd2l0Y2ggKGN1
cnJlbnRQcm9wZXJ0eSkgewogICAgICAgICBjYXNlIENTU1Byb3BlcnR5QmFja2dyb3VuZEltYWdl
OiB7CiAgICAgICAgICAgICBmb3IgKEZpbGxMYXllciogYmFja2dyb3VuZExheWVyID0gbV9zdGF0
ZS5zdHlsZSgpLT5hY2Nlc3NCYWNrZ3JvdW5kTGF5ZXJzKCk7IGJhY2tncm91bmRMYXllcjsgYmFj
a2dyb3VuZExheWVyID0gYmFja2dyb3VuZExheWVyLT5uZXh0KCkpIHsKLSAgICAgICAgICAgICAg
ICBhdXRvIHN0eWxlSW1hZ2UgPSBiYWNrZ3JvdW5kTGF5ZXItPmltYWdlKCk7Ci0gICAgICAgICAg
ICAgICAgaWYgKHN0eWxlSW1hZ2UgJiYgc3R5bGVJbWFnZS0+aXNQZW5kaW5nSW1hZ2UoKSkKLSAg
ICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZExheWVyLT5zZXRJbWFnZShsb2FkUGVuZGluZ0lt
YWdlKHRvU3R5bGVQZW5kaW5nSW1hZ2UoKnN0eWxlSW1hZ2UpKSk7CisgICAgICAgICAgICAgICAg
YXV0byogc3R5bGVJbWFnZSA9IGJhY2tncm91bmRMYXllci0+aW1hZ2UoKTsKKyAgICAgICAgICAg
ICAgICBpZiAoaXM8U3R5bGVQZW5kaW5nSW1hZ2U+KHN0eWxlSW1hZ2UpKQorICAgICAgICAgICAg
ICAgICAgICBiYWNrZ3JvdW5kTGF5ZXItPnNldEltYWdlKGxvYWRQZW5kaW5nSW1hZ2UoZG93bmNh
c3Q8U3R5bGVQZW5kaW5nSW1hZ2U+KCpzdHlsZUltYWdlKSkpOwogICAgICAgICAgICAgfQogICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KQEAgLTM3MTUsOSArMzcxNSw4IEBAIHZvaWQgU3R5
bGVSZXNvbHZlcjo6bG9hZFBlbmRpbmdJbWFnZXMoKQogICAgICAgICAgICAgZm9yIChDb250ZW50
RGF0YSogY29udGVudERhdGEgPSBjb25zdF9jYXN0PENvbnRlbnREYXRhKj4obV9zdGF0ZS5zdHls
ZSgpLT5jb250ZW50RGF0YSgpKTsgY29udGVudERhdGE7IGNvbnRlbnREYXRhID0gY29udGVudERh
dGEtPm5leHQoKSkgewogICAgICAgICAgICAgICAgIGlmIChpczxJbWFnZUNvbnRlbnREYXRhPigq
Y29udGVudERhdGEpKSB7CiAgICAgICAgICAgICAgICAgICAgIGF1dG8mIHN0eWxlSW1hZ2UgPSBk
b3duY2FzdDxJbWFnZUNvbnRlbnREYXRhPigqY29udGVudERhdGEpLmltYWdlKCk7Ci0gICAgICAg
ICAgICAgICAgICAgIGlmIChzdHlsZUltYWdlLmlzUGVuZGluZ0ltYWdlKCkpIHsKLSAgICAgICAg
ICAgICAgICAgICAgICAgIFJlZlB0cjxTdHlsZUltYWdlPiBsb2FkZWRJbWFnZSA9IGxvYWRQZW5k
aW5nSW1hZ2UodG9TdHlsZVBlbmRpbmdJbWFnZShzdHlsZUltYWdlKSk7Ci0gICAgICAgICAgICAg
ICAgICAgICAgICBpZiAobG9hZGVkSW1hZ2UpCisgICAgICAgICAgICAgICAgICAgIGlmIChpczxT
dHlsZVBlbmRpbmdJbWFnZT4oc3R5bGVJbWFnZSkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAg
IGlmIChSZWZQdHI8U3R5bGVJbWFnZT4gbG9hZGVkSW1hZ2UgPSBsb2FkUGVuZGluZ0ltYWdlKGRv
d25jYXN0PFN0eWxlUGVuZGluZ0ltYWdlPihzdHlsZUltYWdlKSkpCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZG93bmNhc3Q8SW1hZ2VDb250ZW50RGF0YT4oKmNvbnRlbnREYXRhKS5zZXRJ
bWFnZShsb2FkZWRJbWFnZS5yZWxlYXNlKCkpOwogICAgICAgICAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICAgICAgfQpAQCAtMzcyOCw0NyArMzcyNyw0NyBAQCB2b2lkIFN0eWxlUmVzb2x2ZXI6
OmxvYWRQZW5kaW5nSW1hZ2VzKCkKICAgICAgICAgICAgIGlmIChDdXJzb3JMaXN0KiBjdXJzb3JM
aXN0ID0gbV9zdGF0ZS5zdHlsZSgpLT5jdXJzb3JzKCkpIHsKICAgICAgICAgICAgICAgICBmb3Ig
KHNpemVfdCBpID0gMDsgaSA8IGN1cnNvckxpc3QtPnNpemUoKTsgKytpKSB7CiAgICAgICAgICAg
ICAgICAgICAgIEN1cnNvckRhdGEmIGN1cnJlbnRDdXJzb3IgPSBjdXJzb3JMaXN0LT5hdChpKTsK
LSAgICAgICAgICAgICAgICAgICAgYXV0byBzdHlsZUltYWdlID0gY3VycmVudEN1cnNvci5pbWFn
ZSgpOwotICAgICAgICAgICAgICAgICAgICBpZiAoc3R5bGVJbWFnZSAmJiBzdHlsZUltYWdlLT5p
c1BlbmRpbmdJbWFnZSgpKQotICAgICAgICAgICAgICAgICAgICAgICAgY3VycmVudEN1cnNvci5z
ZXRJbWFnZShsb2FkUGVuZGluZ0ltYWdlKHRvU3R5bGVQZW5kaW5nSW1hZ2UoKnN0eWxlSW1hZ2Up
KSk7CisgICAgICAgICAgICAgICAgICAgIGF1dG8qIHN0eWxlSW1hZ2UgPSBjdXJyZW50Q3Vyc29y
LmltYWdlKCk7CisgICAgICAgICAgICAgICAgICAgIGlmIChpczxTdHlsZVBlbmRpbmdJbWFnZT4o
c3R5bGVJbWFnZSkpCisgICAgICAgICAgICAgICAgICAgICAgICBjdXJyZW50Q3Vyc29yLnNldElt
YWdlKGxvYWRQZW5kaW5nSW1hZ2UoZG93bmNhc3Q8U3R5bGVQZW5kaW5nSW1hZ2U+KCpzdHlsZUlt
YWdlKSkpOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlMaXN0U3R5bGVJbWFnZTog
ewotICAgICAgICAgICAgYXV0byBzdHlsZUltYWdlID0gbV9zdGF0ZS5zdHlsZSgpLT5saXN0U3R5
bGVJbWFnZSgpOwotICAgICAgICAgICAgaWYgKHN0eWxlSW1hZ2UgJiYgc3R5bGVJbWFnZS0+aXNQ
ZW5kaW5nSW1hZ2UoKSkKLSAgICAgICAgICAgICAgICBtX3N0YXRlLnN0eWxlKCktPnNldExpc3RT
dHlsZUltYWdlKGxvYWRQZW5kaW5nSW1hZ2UodG9TdHlsZVBlbmRpbmdJbWFnZSgqc3R5bGVJbWFn
ZSkpKTsKKyAgICAgICAgICAgIGF1dG8qIHN0eWxlSW1hZ2UgPSBtX3N0YXRlLnN0eWxlKCktPmxp
c3RTdHlsZUltYWdlKCk7CisgICAgICAgICAgICBpZiAoaXM8U3R5bGVQZW5kaW5nSW1hZ2U+KHN0
eWxlSW1hZ2UpKQorICAgICAgICAgICAgICAgIG1fc3RhdGUuc3R5bGUoKS0+c2V0TGlzdFN0eWxl
SW1hZ2UobG9hZFBlbmRpbmdJbWFnZShkb3duY2FzdDxTdHlsZVBlbmRpbmdJbWFnZT4oKnN0eWxl
SW1hZ2UpKSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNlIENT
U1Byb3BlcnR5Qm9yZGVySW1hZ2VTb3VyY2U6IHsKLSAgICAgICAgICAgIGF1dG8gc3R5bGVJbWFn
ZSA9IG1fc3RhdGUuc3R5bGUoKS0+Ym9yZGVySW1hZ2VTb3VyY2UoKTsKLSAgICAgICAgICAgIGlm
IChzdHlsZUltYWdlICYmIHN0eWxlSW1hZ2UtPmlzUGVuZGluZ0ltYWdlKCkpCi0gICAgICAgICAg
ICAgICAgbV9zdGF0ZS5zdHlsZSgpLT5zZXRCb3JkZXJJbWFnZVNvdXJjZShsb2FkUGVuZGluZ0lt
YWdlKHRvU3R5bGVQZW5kaW5nSW1hZ2UoKnN0eWxlSW1hZ2UpKSk7CisgICAgICAgICAgICBhdXRv
KiBzdHlsZUltYWdlID0gbV9zdGF0ZS5zdHlsZSgpLT5ib3JkZXJJbWFnZVNvdXJjZSgpOworICAg
ICAgICAgICAgaWYgKGlzPFN0eWxlUGVuZGluZ0ltYWdlPihzdHlsZUltYWdlKSkKKyAgICAgICAg
ICAgICAgICBtX3N0YXRlLnN0eWxlKCktPnNldEJvcmRlckltYWdlU291cmNlKGxvYWRQZW5kaW5n
SW1hZ2UoZG93bmNhc3Q8U3R5bGVQZW5kaW5nSW1hZ2U+KCpzdHlsZUltYWdlKSkpOwogICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJv
eFJlZmxlY3Q6IHsKICAgICAgICAgICAgIGlmIChTdHlsZVJlZmxlY3Rpb24qIHJlZmxlY3Rpb24g
PSBtX3N0YXRlLnN0eWxlKCktPmJveFJlZmxlY3QoKSkgewogICAgICAgICAgICAgICAgIGNvbnN0
IE5pbmVQaWVjZUltYWdlJiBtYXNrSW1hZ2UgPSByZWZsZWN0aW9uLT5tYXNrKCk7Ci0gICAgICAg
ICAgICAgICAgYXV0byBzdHlsZUltYWdlID0gbWFza0ltYWdlLmltYWdlKCk7Ci0gICAgICAgICAg
ICAgICAgaWYgKHN0eWxlSW1hZ2UgJiYgc3R5bGVJbWFnZS0+aXNQZW5kaW5nSW1hZ2UoKSkgewot
ICAgICAgICAgICAgICAgICAgICBSZWZQdHI8U3R5bGVJbWFnZT4gbG9hZGVkSW1hZ2UgPSBsb2Fk
UGVuZGluZ0ltYWdlKHRvU3R5bGVQZW5kaW5nSW1hZ2UoKnN0eWxlSW1hZ2UpKTsKKyAgICAgICAg
ICAgICAgICBhdXRvKiBzdHlsZUltYWdlID0gbWFza0ltYWdlLmltYWdlKCk7CisgICAgICAgICAg
ICAgICAgaWYgKGlzPFN0eWxlUGVuZGluZ0ltYWdlPihzdHlsZUltYWdlKSkgeworICAgICAgICAg
ICAgICAgICAgICBSZWZQdHI8U3R5bGVJbWFnZT4gbG9hZGVkSW1hZ2UgPSBsb2FkUGVuZGluZ0lt
YWdlKGRvd25jYXN0PFN0eWxlUGVuZGluZ0ltYWdlPigqc3R5bGVJbWFnZSkpOwogICAgICAgICAg
ICAgICAgICAgICByZWZsZWN0aW9uLT5zZXRNYXNrKE5pbmVQaWVjZUltYWdlKGxvYWRlZEltYWdl
LnJlbGVhc2UoKSwgbWFza0ltYWdlLmltYWdlU2xpY2VzKCksIG1hc2tJbWFnZS5maWxsKCksIG1h
c2tJbWFnZS5ib3JkZXJTbGljZXMoKSwgbWFza0ltYWdlLm91dHNldCgpLCBtYXNrSW1hZ2UuaG9y
aXpvbnRhbFJ1bGUoKSwgbWFza0ltYWdlLnZlcnRpY2FsUnVsZSgpKSk7CiAgICAgICAgICAgICAg
ICAgfQogICAgICAgICAgICAgfQogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAg
ICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tCb3hJbWFnZVNvdXJjZTogewotICAgICAgICAg
ICAgYXV0byBzdHlsZUltYWdlID0gbV9zdGF0ZS5zdHlsZSgpLT5tYXNrQm94SW1hZ2VTb3VyY2Uo
KTsKLSAgICAgICAgICAgIGlmIChzdHlsZUltYWdlICYmIHN0eWxlSW1hZ2UtPmlzUGVuZGluZ0lt
YWdlKCkpCi0gICAgICAgICAgICAgICAgbV9zdGF0ZS5zdHlsZSgpLT5zZXRNYXNrQm94SW1hZ2VT
b3VyY2UobG9hZFBlbmRpbmdJbWFnZSh0b1N0eWxlUGVuZGluZ0ltYWdlKCpzdHlsZUltYWdlKSkp
OworICAgICAgICAgICAgYXV0byogc3R5bGVJbWFnZSA9IG1fc3RhdGUuc3R5bGUoKS0+bWFza0Jv
eEltYWdlU291cmNlKCk7CisgICAgICAgICAgICBpZiAoaXM8U3R5bGVQZW5kaW5nSW1hZ2U+KHN0
eWxlSW1hZ2UpKQorICAgICAgICAgICAgICAgIG1fc3RhdGUuc3R5bGUoKS0+c2V0TWFza0JveElt
YWdlU291cmNlKGxvYWRQZW5kaW5nSW1hZ2UoZG93bmNhc3Q8U3R5bGVQZW5kaW5nSW1hZ2U+KCpz
dHlsZUltYWdlKSkpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2Fz
ZSBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tJbWFnZTogewogICAgICAgICAgICAgZm9yIChGaWxsTGF5
ZXIqIG1hc2tMYXllciA9IG1fc3RhdGUuc3R5bGUoKS0+YWNjZXNzTWFza0xheWVycygpOyBtYXNr
TGF5ZXI7IG1hc2tMYXllciA9IG1hc2tMYXllci0+bmV4dCgpKSB7Ci0gICAgICAgICAgICAgICAg
YXV0byBzdHlsZUltYWdlID0gbWFza0xheWVyLT5pbWFnZSgpOwotICAgICAgICAgICAgICAgIGlm
IChzdHlsZUltYWdlICYmIHN0eWxlSW1hZ2UtPmlzUGVuZGluZ0ltYWdlKCkpCi0gICAgICAgICAg
ICAgICAgICAgIG1hc2tMYXllci0+c2V0SW1hZ2UobG9hZFBlbmRpbmdJbWFnZSh0b1N0eWxlUGVu
ZGluZ0ltYWdlKCpzdHlsZUltYWdlKSkpOworICAgICAgICAgICAgICAgIGF1dG8qIHN0eWxlSW1h
Z2UgPSBtYXNrTGF5ZXItPmltYWdlKCk7CisgICAgICAgICAgICAgICAgaWYgKGlzPFN0eWxlUGVu
ZGluZ0ltYWdlPihzdHlsZUltYWdlKSkKKyAgICAgICAgICAgICAgICAgICAgbWFza0xheWVyLT5z
ZXRJbWFnZShsb2FkUGVuZGluZ0ltYWdlKGRvd25jYXN0PFN0eWxlUGVuZGluZ0ltYWdlPigqc3R5
bGVJbWFnZSkpKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VTZXJpYWxpemVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvUGFnZVNlcmlhbGl6ZXIuY3BwCmluZGV4IDE5NDZiOTM2YjNhNzMy
ZDNkMzFiMjkwYjAxZTRiYzUxMzE5ZDRmMzMuLjI1ODI4MDYwZTc2MGNhNGQzNjUwYjAwNWQ1ZTgy
ODQyODYzMmJmMTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZVNlcmlhbGl6
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZVNlcmlhbGl6ZXIuY3BwCkBAIC0z
MzMsMTMgKzMzMywxMyBAQCB2b2lkIFBhZ2VTZXJpYWxpemVyOjpyZXRyaWV2ZVJlc291cmNlc0Zv
clByb3BlcnRpZXMoY29uc3QgU3R5bGVQcm9wZXJ0aWVzKiBzdHlsZQogCiAgICAgICAgIFN0eWxl
SW1hZ2UqIHN0eWxlSW1hZ2UgPSBkb3duY2FzdDxDU1NJbWFnZVZhbHVlPigqY3NzVmFsdWUpLmNh
Y2hlZE9yUGVuZGluZ0ltYWdlKCk7CiAgICAgICAgIC8vIE5vbiBjYWNoZWQtaW1hZ2VzIGFyZSBq
dXN0IHBsYWNlLWhvbGRlcnMgYW5kIGRvIG5vdCBjb250YWluIGRhdGEuCi0gICAgICAgIGlmICgh
c3R5bGVJbWFnZSB8fCAhc3R5bGVJbWFnZS0+aXNDYWNoZWRJbWFnZSgpKQorICAgICAgICBpZiAo
IWlzPFN0eWxlQ2FjaGVkSW1hZ2U+KHN0eWxlSW1hZ2UpKQogICAgICAgICAgICAgY29udGludWU7
CiAKLSAgICAgICAgQ2FjaGVkSW1hZ2UqIGltYWdlID0gdG9TdHlsZUNhY2hlZEltYWdlKHN0eWxl
SW1hZ2UpLT5jYWNoZWRJbWFnZSgpOworICAgICAgICBDYWNoZWRJbWFnZSogaW1hZ2UgPSBkb3du
Y2FzdDxTdHlsZUNhY2hlZEltYWdlPigqc3R5bGVJbWFnZSkuY2FjaGVkSW1hZ2UoKTsKIAogICAg
ICAgICBVUkwgdXJsID0gZG9jdW1lbnQtPmNvbXBsZXRlVVJMKGltYWdlLT51cmwoKSk7Ci0gICAg
ICAgIGFkZEltYWdlVG9SZXNvdXJjZXMoaW1hZ2UsIDAsIHVybCk7CisgICAgICAgIGFkZEltYWdl
VG9SZXNvdXJjZXMoaW1hZ2UsIG51bGxwdHIsIHVybCk7CiAgICAgfQogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9DU1NQcm9wZXJ0eUFuaW1hdGlvbi5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9DU1NQcm9wZXJ0eUFuaW1hdGlvbi5jcHAK
aW5kZXggZDQwODI5MWIyMmI5NDEzMzQ3NDg1MGIxMTViNzQ4ZjkyN2I1OTE1Ni4uMTFhNzAwOWFk
NDQ0YjYyMWQzNmU3NWU5YTdjY2NjMGFhYTA0MGUwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGFnZS9hbmltYXRpb24vQ1NTUHJvcGVydHlBbmltYXRpb24uY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0NTU1Byb3BlcnR5QW5pbWF0aW9uLmNwcApAQCAtMjkzLDkg
KzI5Myw5IEBAIHN0YXRpYyBpbmxpbmUgUGFzc1JlZlB0cjxTdHlsZUltYWdlPiBibGVuZEZ1bmMo
Y29uc3QgQW5pbWF0aW9uQmFzZSogYW5pbSwgU3R5bGVJCiAgICAgICAgIHJldHVybiB0bzsKIAog
ICAgIC8vIEFuaW1hdGlvbiBiZXR3ZWVuIHR3byBnZW5lcmF0ZWQgaW1hZ2VzLiBDcm9zcyBmYWRl
IGZvciBhbGwgb3RoZXIgY2FzZXMuCi0gICAgaWYgKGZyb20tPmlzR2VuZXJhdGVkSW1hZ2UoKSAm
JiB0by0+aXNHZW5lcmF0ZWRJbWFnZSgpKSB7Ci0gICAgICAgIENTU0ltYWdlR2VuZXJhdG9yVmFs
dWUmIGZyb21HZW5lcmF0ZWQgPSB0b1N0eWxlR2VuZXJhdGVkSW1hZ2UoZnJvbSktPmltYWdlVmFs
dWUoKTsKLSAgICAgICAgQ1NTSW1hZ2VHZW5lcmF0b3JWYWx1ZSYgdG9HZW5lcmF0ZWQgPSB0b1N0
eWxlR2VuZXJhdGVkSW1hZ2UodG8pLT5pbWFnZVZhbHVlKCk7CisgICAgaWYgKGlzPFN0eWxlR2Vu
ZXJhdGVkSW1hZ2U+KCpmcm9tKSAmJiBpczxTdHlsZUdlbmVyYXRlZEltYWdlPigqdG8pKSB7Cisg
ICAgICAgIENTU0ltYWdlR2VuZXJhdG9yVmFsdWUmIGZyb21HZW5lcmF0ZWQgPSBkb3duY2FzdDxT
dHlsZUdlbmVyYXRlZEltYWdlPigqZnJvbSkuaW1hZ2VWYWx1ZSgpOworICAgICAgICBDU1NJbWFn
ZUdlbmVyYXRvclZhbHVlJiB0b0dlbmVyYXRlZCA9IGRvd25jYXN0PFN0eWxlR2VuZXJhdGVkSW1h
Z2U+KCp0bykuaW1hZ2VWYWx1ZSgpOwogCiAgICAgICAgIGlmIChpczxDU1NGaWx0ZXJJbWFnZVZh
bHVlPihmcm9tR2VuZXJhdGVkKSAmJiBpczxDU1NGaWx0ZXJJbWFnZVZhbHVlPih0b0dlbmVyYXRl
ZCkpIHsKICAgICAgICAgICAgIC8vIEFuaW1hdGlvbiBvZiBnZW5lcmF0ZWQgaW1hZ2VzIGp1c3Qg
cG9zc2libGUgaWYgaW5wdXQgaW1hZ2VzIGFyZSBlcXVhbC4KQEAgLTMxNSwxOSArMzE1LDE5IEBA
IHN0YXRpYyBpbmxpbmUgUGFzc1JlZlB0cjxTdHlsZUltYWdlPiBibGVuZEZ1bmMoY29uc3QgQW5p
bWF0aW9uQmFzZSogYW5pbSwgU3R5bGVJCiAKICAgICAgICAgLy8gRklYTUU6IEFkZCBzdXBwb3J0
IGZvciBhbmltYXRpb24gYmV0d2VlbiB0d28gKmdyYWRpZW50KCkgZnVuY3Rpb25zLgogICAgICAg
ICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTE5OTU2Ci0gICAg
fSBlbHNlIGlmIChmcm9tLT5pc0dlbmVyYXRlZEltYWdlKCkgJiYgdG8tPmlzQ2FjaGVkSW1hZ2Uo
KSkgewotICAgICAgICBDU1NJbWFnZUdlbmVyYXRvclZhbHVlJiBmcm9tR2VuZXJhdGVkID0gdG9T
dHlsZUdlbmVyYXRlZEltYWdlKGZyb20pLT5pbWFnZVZhbHVlKCk7CisgICAgfSBlbHNlIGlmIChp
czxTdHlsZUdlbmVyYXRlZEltYWdlPigqZnJvbSkgJiYgaXM8U3R5bGVDYWNoZWRJbWFnZT4oKnRv
KSkgeworICAgICAgICBDU1NJbWFnZUdlbmVyYXRvclZhbHVlJiBmcm9tR2VuZXJhdGVkID0gZG93
bmNhc3Q8U3R5bGVHZW5lcmF0ZWRJbWFnZT4oKmZyb20pLmltYWdlVmFsdWUoKTsKICAgICAgICAg
aWYgKGlzPENTU0ZpbHRlckltYWdlVmFsdWU+KGZyb21HZW5lcmF0ZWQpKSB7CiAgICAgICAgICAg
ICBDU1NGaWx0ZXJJbWFnZVZhbHVlJiBmcm9tRmlsdGVyID0gZG93bmNhc3Q8Q1NTRmlsdGVySW1h
Z2VWYWx1ZT4oZnJvbUdlbmVyYXRlZCk7Ci0gICAgICAgICAgICBpZiAoZnJvbUZpbHRlci5jYWNo
ZWRJbWFnZSgpICYmIHRvU3R5bGVDYWNoZWRJbWFnZSh0byktPmNhY2hlZEltYWdlKCkgPT0gZnJv
bUZpbHRlci5jYWNoZWRJbWFnZSgpKQorICAgICAgICAgICAgaWYgKGZyb21GaWx0ZXIuY2FjaGVk
SW1hZ2UoKSAmJiBkb3duY2FzdDxTdHlsZUNhY2hlZEltYWdlPigqdG8pLmNhY2hlZEltYWdlKCkg
PT0gZnJvbUZpbHRlci5jYWNoZWRJbWFnZSgpKQogICAgICAgICAgICAgICAgIHJldHVybiBibGVu
ZEZpbHRlcihhbmltLCBmcm9tRmlsdGVyLmNhY2hlZEltYWdlKCksIGZyb21GaWx0ZXIuZmlsdGVy
T3BlcmF0aW9ucygpLCBGaWx0ZXJPcGVyYXRpb25zKCksIHByb2dyZXNzKTsKICAgICAgICAgfQog
ICAgICAgICAvLyBGSVhNRTogQWRkIGludGVycG9sYXRpb24gYmV0d2VlbiBjcm9zcy1mYWRlIGFu
ZCBpbWFnZSBzb3VyY2UuCi0gICAgfSBlbHNlIGlmIChmcm9tLT5pc0NhY2hlZEltYWdlKCkgJiYg
dG8tPmlzR2VuZXJhdGVkSW1hZ2UoKSkgewotICAgICAgICBDU1NJbWFnZUdlbmVyYXRvclZhbHVl
JiB0b0dlbmVyYXRlZCA9IHRvU3R5bGVHZW5lcmF0ZWRJbWFnZSh0byktPmltYWdlVmFsdWUoKTsK
KyAgICB9IGVsc2UgaWYgKGlzPFN0eWxlQ2FjaGVkSW1hZ2U+KCpmcm9tKSAmJiBpczxTdHlsZUdl
bmVyYXRlZEltYWdlPigqdG8pKSB7CisgICAgICAgIENTU0ltYWdlR2VuZXJhdG9yVmFsdWUmIHRv
R2VuZXJhdGVkID0gZG93bmNhc3Q8U3R5bGVHZW5lcmF0ZWRJbWFnZT4oKnRvKS5pbWFnZVZhbHVl
KCk7CiAgICAgICAgIGlmIChpczxDU1NGaWx0ZXJJbWFnZVZhbHVlPih0b0dlbmVyYXRlZCkpIHsK
ICAgICAgICAgICAgIENTU0ZpbHRlckltYWdlVmFsdWUmIHRvRmlsdGVyID0gZG93bmNhc3Q8Q1NT
RmlsdGVySW1hZ2VWYWx1ZT4odG9HZW5lcmF0ZWQpOwotICAgICAgICAgICAgaWYgKHRvRmlsdGVy
LmNhY2hlZEltYWdlKCkgJiYgdG9TdHlsZUNhY2hlZEltYWdlKGZyb20pLT5jYWNoZWRJbWFnZSgp
ID09IHRvRmlsdGVyLmNhY2hlZEltYWdlKCkpICAgICAKKyAgICAgICAgICAgIGlmICh0b0ZpbHRl
ci5jYWNoZWRJbWFnZSgpICYmIGRvd25jYXN0PFN0eWxlQ2FjaGVkSW1hZ2U+KCpmcm9tKS5jYWNo
ZWRJbWFnZSgpID09IHRvRmlsdGVyLmNhY2hlZEltYWdlKCkpCiAgICAgICAgICAgICAgICAgcmV0
dXJuIGJsZW5kRmlsdGVyKGFuaW0sIHRvRmlsdGVyLmNhY2hlZEltYWdlKCksIEZpbHRlck9wZXJh
dGlvbnMoKSwgdG9GaWx0ZXIuZmlsdGVyT3BlcmF0aW9ucygpLCBwcm9ncmVzcyk7CiAgICAgICAg
IH0KICAgICAgICAgLy8gRklYTUU6IEFkZCBpbnRlcnBvbGF0aW9uIGJldHdlZW4gaW1hZ2Ugc291
cmNlIGFuZCBjcm9zcy1mYWRlLgpAQCAtMzM1LDggKzMzNSw4IEBAIHN0YXRpYyBpbmxpbmUgUGFz
c1JlZlB0cjxTdHlsZUltYWdlPiBibGVuZEZ1bmMoY29uc3QgQW5pbWF0aW9uQmFzZSogYW5pbSwg
U3R5bGVJCiAKICAgICAvLyBGSVhNRTogQWRkIHN1cHBvcnQgY3Jvc3MgZmFkZSBiZXR3ZWVuIGNh
Y2hlZCBhbmQgZ2VuZXJhdGVkIGltYWdlcy4KICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9NzgyOTMKLSAgICBpZiAoZnJvbS0+aXNDYWNoZWRJbWFnZSgpICYm
IHRvLT5pc0NhY2hlZEltYWdlKCkpCi0gICAgICAgIHJldHVybiBjcm9zc2ZhZGVCbGVuZChhbmlt
LCB0b1N0eWxlQ2FjaGVkSW1hZ2UoZnJvbSksIHRvU3R5bGVDYWNoZWRJbWFnZSh0byksIHByb2dy
ZXNzKTsKKyAgICBpZiAoaXM8U3R5bGVDYWNoZWRJbWFnZT4oKmZyb20pICYmIGlzPFN0eWxlQ2Fj
aGVkSW1hZ2U+KCp0bykpCisgICAgICAgIHJldHVybiBjcm9zc2ZhZGVCbGVuZChhbmltLCBkb3du
Y2FzdDxTdHlsZUNhY2hlZEltYWdlPihmcm9tKSwgZG93bmNhc3Q8U3R5bGVDYWNoZWRJbWFnZT4o
dG8pLCBwcm9ncmVzcyk7CiAKICAgICByZXR1cm4gdG87CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVDYWNoZWRJbWFnZS5oIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlQ2FjaGVkSW1hZ2UuaAppbmRleCA1MmMwYzBmNTVjYzVl
Y2M1NTcxNGVjNjYyMTU3ODQxZDg4YjA1YzRiLi5lOWFjZDc4M2I1MWI1ODJkZTFjYzYxNDQ5OWRj
MmM3MmJmMWY1ZTU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUv
U3R5bGVDYWNoZWRJbWFnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9T
dHlsZUNhY2hlZEltYWdlLmgKQEAgLTY0LDcgKzY0LDggQEAgcHJpdmF0ZToKICAgICBDYWNoZWRS
ZXNvdXJjZUhhbmRsZTxDYWNoZWRJbWFnZT4gbV9pbWFnZTsKIH07CiAKLVNUWUxFX0lNQUdFX1RZ
UEVfQ0FTVFMoU3R5bGVDYWNoZWRJbWFnZSwgU3R5bGVJbWFnZSwgaXNDYWNoZWRJbWFnZSkKK30g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKIAotfQotI2VuZGlmCitTUEVDSUFMSVpFX1RZUEVfVFJBSVRT
X1NUWUxFX0lNQUdFKFN0eWxlQ2FjaGVkSW1hZ2UsIGlzQ2FjaGVkSW1hZ2UpCisKKyNlbmRpZiAv
LyBTdHlsZUNhY2hlZEltYWdlX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdHlsZS9TdHlsZUNhY2hlZEltYWdlU2V0LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3R5bGUvU3R5bGVDYWNoZWRJbWFnZVNldC5oCmluZGV4IDQ0YzlmMzA4YWE5YjAzODQxOTQzMDRl
ODU0ODE4NGYzYzE2MzQxYzYuLjBlYzBmODAwNDY5ZDJlOGNiZjFmNjVhNmZjNmJlNjIyOWFiMzk0
OGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZUNhY2hl
ZEltYWdlU2V0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlQ2Fj
aGVkSW1hZ2VTZXQuaApAQCAtODMsMTAgKzgzLDEwIEBAIHByaXZhdGU6CiAgICAgQ1NTSW1hZ2VT
ZXRWYWx1ZSogbV9pbWFnZVNldFZhbHVlOyAvLyBOb3QgcmV0YWluZWQ7IGl0IG93bnMgdXMuCiB9
OwogCi1TVFlMRV9JTUFHRV9UWVBFX0NBU1RTKFN0eWxlQ2FjaGVkSW1hZ2VTZXQsIFN0eWxlSW1h
Z2UsIGlzQ2FjaGVkSW1hZ2VTZXQpCi0KIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAorU1BFQ0lB
TElaRV9UWVBFX1RSQUlUU19TVFlMRV9JTUFHRShTdHlsZUNhY2hlZEltYWdlU2V0LCBpc0NhY2hl
ZEltYWdlU2V0KQorCiAjZW5kaWYgLy8gRU5BQkxFKENTU19JTUFHRV9TRVQpCiAKICNlbmRpZiAv
LyBTdHlsZUNhY2hlZEltYWdlU2V0X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdHlsZS9TdHlsZUdlbmVyYXRlZEltYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3R5bGUvU3R5bGVHZW5lcmF0ZWRJbWFnZS5oCmluZGV4IGIxY2EyNzNjYTg1NmU1YzFmMWE0
Y2VjM2EwNzk5ODBlZWEwZTEwYTIuLjFkYmQyMzhkZjI4YTg4N2Q4ODg3NTUxYTA0YzczNjM0ZGUx
MzMyNTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZUdl
bmVyYXRlZEltYWdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxl
R2VuZXJhdGVkSW1hZ2UuaApAQCAtNjMsNyArNjMsOCBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9m
aXhlZFNpemU7CiB9OwogCi1TVFlMRV9JTUFHRV9UWVBFX0NBU1RTKFN0eWxlR2VuZXJhdGVkSW1h
Z2UsIFN0eWxlSW1hZ2UsIGlzR2VuZXJhdGVkSW1hZ2UpCit9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CiAKLX0KLSNlbmRpZgorU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19TVFlMRV9JTUFHRShTdHlsZUdl
bmVyYXRlZEltYWdlLCBpc0dlbmVyYXRlZEltYWdlKQorCisjZW5kaWYgLy8gU3R5bGVHZW5lcmF0
ZWRJbWFnZV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5
bGVJbWFnZS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlSW1hZ2UuaApp
bmRleCBjMGNjN2ZjYjQ4ZGViMDg1MDZmYTY5OWRjOTEwZTc5OGFkNmYyY2Y1Li4yMzZmMWEyMTk5
YzI4M2FkMzFmNTQzZjk3MzkyOWQ5OWU1MmM3NmVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVJbWFnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdHlsZS9TdHlsZUltYWdlLmgKQEAgLTMwLDYgKzMwLDcgQEAKICNpbmNsdWRlIDx3dGYv
UGFzc1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3Rm
L1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9UeXBlQ2FzdHMuaD4KIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCkBAIC05Miw4ICs5MywxMSBAQCBwcm90ZWN0ZWQ6CiAgICAgYm9vbCBtX2lzQ2FjaGVk
SW1hZ2VTZXQgOiAxOwogfTsKIAotI2RlZmluZSBTVFlMRV9JTUFHRV9UWVBFX0NBU1RTKFRvQ2xh
c3NOYW1lLCBGcm9tQ2xhc3NOYW1lLCBwcmVkaWNhdGUpIFwKLSAgICBUWVBFX0NBU1RTX0JBU0Uo
VG9DbGFzc05hbWUsIEZyb21DbGFzc05hbWUsIHN0eWxlSW1hZ2UsIHN0eWxlSW1hZ2UtPnByZWRp
Y2F0ZSgpLCBzdHlsZUltYWdlLnByZWRpY2F0ZSgpKQorfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQog
Ci19Ci0jZW5kaWYKKyNkZWZpbmUgU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19TVFlMRV9JTUFHRShU
b0NsYXNzTmFtZSwgcHJlZGljYXRlKSBcCitTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0JFR0lOKFdl
YkNvcmU6OlRvQ2xhc3NOYW1lKSBcCisgICAgc3RhdGljIGJvb2wgaXNUeXBlKGNvbnN0IFdlYkNv
cmU6OlN0eWxlSW1hZ2UmIGltYWdlKSB7IHJldHVybiBpbWFnZS5wcmVkaWNhdGUoKTsgfSBcCitT
UEVDSUFMSVpFX1RZUEVfVFJBSVRTX0VORCgpCisKKyNlbmRpZiAvLyBTdHlsZUltYWdlX2gKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVBlbmRpbmdJbWFn
ZS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlUGVuZGluZ0ltYWdlLmgK
aW5kZXggNTk5ZGEwNDdhYjYzZDY0ODJiYWE0NTZlYmNkYjAyOGQyOTNkZWVhNy4uNTY3M2IwNzk3
ZjkzYmY0MDU3ZWQ3NDc5OTUyNDdlNGM4YjhmNTQwMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlUGVuZGluZ0ltYWdlLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlUGVuZGluZ0ltYWdlLmgKQEAgLTg2LDggKzg2LDggQEAg
cHJpdmF0ZToKICAgICBDU1NWYWx1ZSogbV92YWx1ZTsgLy8gTm90IHJldGFpbmVkOyBpdCBvd25z
IHVzLgogfTsKIAotU1RZTEVfSU1BR0VfVFlQRV9DQVNUUyhTdHlsZVBlbmRpbmdJbWFnZSwgU3R5
bGVJbWFnZSwgaXNQZW5kaW5nSW1hZ2UpCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKLX0KK1NQ
RUNJQUxJWkVfVFlQRV9UUkFJVFNfU1RZTEVfSU1BR0UoU3R5bGVQZW5kaW5nSW1hZ2UsIGlzUGVu
ZGluZ0ltYWdlKQogCi0jZW5kaWYKKyNlbmRpZiAvLyBTdHlsZVBlbmRpbmdJbWFnZV9oCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>240027</attachid>
            <date>2014-10-17 11:45:22 -0700</date>
            <delta_ts>2014-10-17 13:28:27 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-137824-20141017114527.patch</filename>
            <type>text/plain</type>
            <size>22111</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTc0ODIzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYWMwMjIyNGVkZjY3MDlm
MGY3NjQyMWQ1ZDIzYjhkNGFmMTIyZWVmNS4uN2M4NDQ3NzhmOWU1ZmJlOTYwZjgwNmMxODhhYzdm
ZDM2OTcyMmJiMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQxIEBACisyMDE0LTEwLTE3ICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgVXNlIGlzPD4oKSAvIGRvd25j
YXN0PD4oKSBmb3IgU3R5bGVJbWFnZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTM3ODI0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgVXNlIGlzPD4oKSAvIGRvd25jYXN0PD4oKSBmb3IgU3R5bGVJbWFnZSBh
bmQgY2xlYW4gdXAgdGhlIHN1cnJvdWRpbmcKKyAgICAgICAgY29kZS4KKworICAgICAgICBObyBu
ZXcgdGVzdHMsIG5vIGJlaGF2aW9yIGNoYW5nZS4KKworICAgICAgICAqIGNzcy9DU1NDdXJzb3JJ
bWFnZVZhbHVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU0N1cnNvckltYWdlVmFsdWU6OmRl
dGFjaFBlbmRpbmdJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NDdXJzb3JJbWFnZVZhbHVl
OjpjYWNoZWRJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NDdXJzb3JJbWFnZVZhbHVlOjpj
YWNoZWRJbWFnZVVSTCk6CisgICAgICAgICogY3NzL0NTU0ltYWdlU2V0VmFsdWUuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Q1NTSW1hZ2VTZXRWYWx1ZTo6ZGV0YWNoUGVuZGluZ0ltYWdlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkNTU0ltYWdlU2V0VmFsdWU6On5DU1NJbWFnZVNldFZhbHVlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkNTU0ltYWdlU2V0VmFsdWU6OmNhY2hlZEltYWdlU2V0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkNTU0ltYWdlU2V0VmFsdWU6Omhhc0ZhaWxlZE9yQ2FuY2VsZWRTdWJyZXNv
dXJjZXMpOgorICAgICAgICAqIGNzcy9DU1NJbWFnZVZhbHVlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkNTU0ltYWdlVmFsdWU6OmRldGFjaFBlbmRpbmdJbWFnZSk6CisgICAgICAgIChXZWJDb3Jl
OjpDU1NJbWFnZVZhbHVlOjpjYWNoZWRJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NJbWFn
ZVZhbHVlOjpoYXNGYWlsZWRPckNhbmNlbGVkU3VicmVzb3VyY2VzKToKKyAgICAgICAgKiBjc3Mv
U3R5bGVSZXNvbHZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJlc29sdmVyOjpsb2Fk
UGVuZGluZ1NoYXBlSW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVSZXNvbHZlcjo6bG9h
ZFBlbmRpbmdJbWFnZXMpOgorICAgICAgICAqIHBhZ2UvUGFnZVNlcmlhbGl6ZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6UGFnZVNlcmlhbGl6ZXI6OnJldHJpZXZlUmVzb3VyY2VzRm9yUHJvcGVy
dGllcyk6CisgICAgICAgICogcGFnZS9hbmltYXRpb24vQ1NTUHJvcGVydHlBbmltYXRpb24uY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6YmxlbmRGdW5jKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5
bGUvU3R5bGVDYWNoZWRJbWFnZS5oOgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9TdHlsZUNh
Y2hlZEltYWdlU2V0Lmg6CisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL1N0eWxlR2VuZXJhdGVk
SW1hZ2UuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvU3R5bGVJbWFnZS5oOgorICAgICAg
ICAqIHJlbmRlcmluZy9zdHlsZS9TdHlsZVBlbmRpbmdJbWFnZS5oOgorCiAyMDE0LTEwLTE2ICBK
ZXIgTm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgogCiAgICAgICAgIFtNYWNdIFJlcHJlc2Vu
dCBBVk1lZGlhU2VsZWN0aW9uT3B0aW9ucyBhcyBBdWRpb1RyYWNrcwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvY3NzL0NTU0N1cnNvckltYWdlVmFsdWUuY3BwIGIvU291cmNlL1dlYkNvcmUv
Y3NzL0NTU0N1cnNvckltYWdlVmFsdWUuY3BwCmluZGV4IDlmNDZlNzkxOWQ1NWEyYzJlMzJmZGY5
MzdlNTkxNmViN2IzZmE4ZTYuLjdhMTJmN2EzZTMzYjI4ZGVmM2JlZDgxODE1NzhmM2RmMzgzNTUz
YzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDdXJzb3JJbWFnZVZhbHVlLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ3Vyc29ySW1hZ2VWYWx1ZS5jcHAKQEAgLTY0
LDggKzY0LDggQEAgQ1NTQ3Vyc29ySW1hZ2VWYWx1ZTo6Q1NTQ3Vyc29ySW1hZ2VWYWx1ZShQYXNz
UmVmPENTU1ZhbHVlPiBpbWFnZVZhbHVlLCBib29sIGhhc0gKIAogaW5saW5lIHZvaWQgQ1NTQ3Vy
c29ySW1hZ2VWYWx1ZTo6ZGV0YWNoUGVuZGluZ0ltYWdlKCkKIHsKLSAgICBpZiAobV9pbWFnZSAm
JiBtX2ltYWdlLT5pc1BlbmRpbmdJbWFnZSgpKQotICAgICAgICB0b1N0eWxlUGVuZGluZ0ltYWdl
KCptX2ltYWdlKS5kZXRhY2hGcm9tQ1NTVmFsdWUoKTsKKyAgICBpZiAoaXM8U3R5bGVQZW5kaW5n
SW1hZ2U+KG1faW1hZ2UuZ2V0KCkpKQorICAgICAgICBkb3duY2FzdDxTdHlsZVBlbmRpbmdJbWFn
ZT4oKm1faW1hZ2UpLmRldGFjaEZyb21DU1NWYWx1ZSgpOwogfQogCiBDU1NDdXJzb3JJbWFnZVZh
bHVlOjp+Q1NTQ3Vyc29ySW1hZ2VWYWx1ZSgpCkBAIC0xNjAsOCArMTYwLDggQEAgU3R5bGVJbWFn
ZSogQ1NTQ3Vyc29ySW1hZ2VWYWx1ZTo6Y2FjaGVkSW1hZ2UoQ2FjaGVkUmVzb3VyY2VMb2FkZXIq
IGxvYWRlcikKICAgICAgICAgfQogICAgIH0KIAotICAgIGlmIChtX2ltYWdlICYmIG1faW1hZ2Ut
PmlzQ2FjaGVkSW1hZ2UoKSkKLSAgICAgICAgcmV0dXJuIHRvU3R5bGVDYWNoZWRJbWFnZShtX2lt
YWdlLmdldCgpKTsKKyAgICBpZiAoaXM8U3R5bGVDYWNoZWRJbWFnZT4obV9pbWFnZS5nZXQoKSkp
CisgICAgICAgIHJldHVybiBkb3duY2FzdDxTdHlsZUNhY2hlZEltYWdlPihtX2ltYWdlLmdldCgp
KTsKIAogICAgIHJldHVybiBudWxscHRyOwogfQpAQCAtMTkzLDkgKzE5Myw5IEBAIGJvb2wgQ1NT
Q3Vyc29ySW1hZ2VWYWx1ZTo6aXNTVkdDdXJzb3IoKSBjb25zdAogCiBTdHJpbmcgQ1NTQ3Vyc29y
SW1hZ2VWYWx1ZTo6Y2FjaGVkSW1hZ2VVUkwoKQogewotICAgIGlmICghbV9pbWFnZSB8fCAhbV9p
bWFnZS0+aXNDYWNoZWRJbWFnZSgpKQorICAgIGlmICghaXM8U3R5bGVDYWNoZWRJbWFnZT4obV9p
bWFnZS5nZXQoKSkpCiAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKLSAgICByZXR1cm4gdG9TdHls
ZUNhY2hlZEltYWdlKCptX2ltYWdlKS5jYWNoZWRJbWFnZSgpLT51cmwoKTsKKyAgICByZXR1cm4g
ZG93bmNhc3Q8U3R5bGVDYWNoZWRJbWFnZT4oKm1faW1hZ2UpLmNhY2hlZEltYWdlKCktPnVybCgp
OwogfQogCiB2b2lkIENTU0N1cnNvckltYWdlVmFsdWU6OmNsZWFyQ2FjaGVkSW1hZ2UoKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ltYWdlU2V0VmFsdWUuY3BwIGIvU291cmNl
L1dlYkNvcmUvY3NzL0NTU0ltYWdlU2V0VmFsdWUuY3BwCmluZGV4IDA3YWNiNzc0OWMzYjA1NDdl
MzAwYzUzNjkwMWYxYTBiNTQ5YTA4ZTEuLmI1YWYwMjBlNzExNzc0N2M1MWViYThlNWI5OTllMjUy
N2I3MWZmOTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NJbWFnZVNldFZhbHVl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTSW1hZ2VTZXRWYWx1ZS5jcHAKQEAgLTUy
LDE2ICs1MiwxNiBAQCBDU1NJbWFnZVNldFZhbHVlOjpDU1NJbWFnZVNldFZhbHVlKCkKIAogaW5s
aW5lIHZvaWQgQ1NTSW1hZ2VTZXRWYWx1ZTo6ZGV0YWNoUGVuZGluZ0ltYWdlKCkKIHsKLSAgICBp
ZiAobV9pbWFnZVNldCAmJiBtX2ltYWdlU2V0LT5pc1BlbmRpbmdJbWFnZSgpKQotICAgICAgICB0
b1N0eWxlUGVuZGluZ0ltYWdlKCptX2ltYWdlU2V0KS5kZXRhY2hGcm9tQ1NTVmFsdWUoKTsKKyAg
ICBpZiAoaXM8U3R5bGVQZW5kaW5nSW1hZ2U+KG1faW1hZ2VTZXQuZ2V0KCkpKQorICAgICAgICBk
b3duY2FzdDxTdHlsZVBlbmRpbmdJbWFnZT4oKm1faW1hZ2VTZXQpLmRldGFjaEZyb21DU1NWYWx1
ZSgpOwogfQogCiBDU1NJbWFnZVNldFZhbHVlOjp+Q1NTSW1hZ2VTZXRWYWx1ZSgpCiB7CiAgICAg
ZGV0YWNoUGVuZGluZ0ltYWdlKCk7CiAKLSAgICBpZiAobV9pbWFnZVNldCAmJiBtX2ltYWdlU2V0
LT5pc0NhY2hlZEltYWdlU2V0KCkpCi0gICAgICAgIHRvU3R5bGVDYWNoZWRJbWFnZVNldCgqbV9p
bWFnZVNldCkuY2xlYXJJbWFnZVNldFZhbHVlKCk7CisgICAgaWYgKGlzPFN0eWxlQ2FjaGVkSW1h
Z2VTZXQ+KG1faW1hZ2VTZXQuZ2V0KCkpKQorICAgICAgICBkb3duY2FzdDxTdHlsZUNhY2hlZElt
YWdlU2V0PigqbV9pbWFnZVNldCkuY2xlYXJJbWFnZVNldFZhbHVlKCk7CiB9CiAKIHZvaWQgQ1NT
SW1hZ2VTZXRWYWx1ZTo6ZmlsbEltYWdlU2V0KCkKQEAgLTEyOSw3ICsxMjksNyBAQCBTdHlsZUNh
Y2hlZEltYWdlU2V0KiBDU1NJbWFnZVNldFZhbHVlOjpjYWNoZWRJbWFnZVNldChDYWNoZWRSZXNv
dXJjZUxvYWRlciogbG9hZAogICAgICAgICB9CiAgICAgfQogCi0gICAgcmV0dXJuIChtX2ltYWdl
U2V0ICYmIG1faW1hZ2VTZXQtPmlzQ2FjaGVkSW1hZ2VTZXQoKSkgPyB0b1N0eWxlQ2FjaGVkSW1h
Z2VTZXQobV9pbWFnZVNldC5nZXQoKSkgOiBudWxscHRyOworICAgIHJldHVybiBpczxTdHlsZUNh
Y2hlZEltYWdlU2V0PihtX2ltYWdlU2V0LmdldCgpKSA/IGRvd25jYXN0PFN0eWxlQ2FjaGVkSW1h
Z2VTZXQ+KG1faW1hZ2VTZXQuZ2V0KCkpIDogbnVsbHB0cjsKIH0KIAogU3R5bGVDYWNoZWRJbWFn
ZVNldCogQ1NTSW1hZ2VTZXRWYWx1ZTo6Y2FjaGVkSW1hZ2VTZXQoQ2FjaGVkUmVzb3VyY2VMb2Fk
ZXIqIGxvYWRlcikKQEAgLTE4OCw5ICsxODgsOSBAQCBTdHJpbmcgQ1NTSW1hZ2VTZXRWYWx1ZTo6
Y3VzdG9tQ1NTVGV4dCgpIGNvbnN0CiAKIGJvb2wgQ1NTSW1hZ2VTZXRWYWx1ZTo6aGFzRmFpbGVk
T3JDYW5jZWxlZFN1YnJlc291cmNlcygpIGNvbnN0CiB7Ci0gICAgaWYgKCFtX2ltYWdlU2V0IHx8
ICFtX2ltYWdlU2V0LT5pc0NhY2hlZEltYWdlU2V0KCkpCisgICAgaWYgKCFpczxTdHlsZUNhY2hl
ZEltYWdlU2V0PihtX2ltYWdlU2V0LmdldCgpKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAg
IENhY2hlZFJlc291cmNlKiBjYWNoZWRSZXNvdXJjZSA9IHRvU3R5bGVDYWNoZWRJbWFnZVNldCgq
bV9pbWFnZVNldCkuY2FjaGVkSW1hZ2UoKTsKKyAgICBDYWNoZWRSZXNvdXJjZSogY2FjaGVkUmVz
b3VyY2UgPSBkb3duY2FzdDxTdHlsZUNhY2hlZEltYWdlU2V0PigqbV9pbWFnZVNldCkuY2FjaGVk
SW1hZ2UoKTsKICAgICBpZiAoIWNhY2hlZFJlc291cmNlKQogICAgICAgICByZXR1cm4gdHJ1ZTsK
ICAgICByZXR1cm4gY2FjaGVkUmVzb3VyY2UtPmxvYWRGYWlsZWRPckNhbmNlbGVkKCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTSW1hZ2VWYWx1ZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTSW1hZ2VWYWx1ZS5jcHAKaW5kZXggNzUwNzVjOThlZWRjNGUxZGY1YzI1OTgz
NjgzMzhmOTg1OWVjNTcxMC4uNjVjZjNmMzY0NWFmYzRiNDMxZTM1NjcxYjBiZTgxNDkzOGQ4Njg4
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ltYWdlVmFsdWUuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NJbWFnZVZhbHVlLmNwcApAQCAtNTQsOCArNTQsOCBAQCBD
U1NJbWFnZVZhbHVlOjpDU1NJbWFnZVZhbHVlKGNvbnN0IFN0cmluZyYgdXJsLCBTdHlsZUltYWdl
KiBpbWFnZSkKIAogaW5saW5lIHZvaWQgQ1NTSW1hZ2VWYWx1ZTo6ZGV0YWNoUGVuZGluZ0ltYWdl
KCkKIHsKLSAgICBpZiAobV9pbWFnZSAmJiBtX2ltYWdlLT5pc1BlbmRpbmdJbWFnZSgpKQotICAg
ICAgICB0b1N0eWxlUGVuZGluZ0ltYWdlKCptX2ltYWdlKS5kZXRhY2hGcm9tQ1NTVmFsdWUoKTsK
KyAgICBpZiAoaXM8U3R5bGVQZW5kaW5nSW1hZ2U+KG1faW1hZ2UuZ2V0KCkpKQorICAgICAgICBk
b3duY2FzdDxTdHlsZVBlbmRpbmdJbWFnZT4oKm1faW1hZ2UpLmRldGFjaEZyb21DU1NWYWx1ZSgp
OwogfQogCiBDU1NJbWFnZVZhbHVlOjp+Q1NTSW1hZ2VWYWx1ZSgpCkBAIC05Myw3ICs5Myw3IEBA
IFN0eWxlQ2FjaGVkSW1hZ2UqIENTU0ltYWdlVmFsdWU6OmNhY2hlZEltYWdlKENhY2hlZFJlc291
cmNlTG9hZGVyKiBsb2FkZXIsIGNvbnN0CiAgICAgICAgIH0KICAgICB9CiAKLSAgICByZXR1cm4g
KG1faW1hZ2UgJiYgbV9pbWFnZS0+aXNDYWNoZWRJbWFnZSgpKSA/IHRvU3R5bGVDYWNoZWRJbWFn
ZShtX2ltYWdlLmdldCgpKSA6IG51bGxwdHI7CisgICAgcmV0dXJuIGlzPFN0eWxlQ2FjaGVkSW1h
Z2U+KG1faW1hZ2UuZ2V0KCkpID8gZG93bmNhc3Q8U3R5bGVDYWNoZWRJbWFnZT4obV9pbWFnZS5n
ZXQoKSkgOiBudWxscHRyOwogfQogCiBTdHlsZUNhY2hlZEltYWdlKiBDU1NJbWFnZVZhbHVlOjpj
YWNoZWRJbWFnZShDYWNoZWRSZXNvdXJjZUxvYWRlciogbG9hZGVyKQpAQCAtMTAzLDkgKzEwMyw5
IEBAIFN0eWxlQ2FjaGVkSW1hZ2UqIENTU0ltYWdlVmFsdWU6OmNhY2hlZEltYWdlKENhY2hlZFJl
c291cmNlTG9hZGVyKiBsb2FkZXIpCiAKIGJvb2wgQ1NTSW1hZ2VWYWx1ZTo6aGFzRmFpbGVkT3JD
YW5jZWxlZFN1YnJlc291cmNlcygpIGNvbnN0CiB7Ci0gICAgaWYgKCFtX2ltYWdlIHx8ICFtX2lt
YWdlLT5pc0NhY2hlZEltYWdlKCkpCisgICAgaWYgKCFpczxTdHlsZUNhY2hlZEltYWdlPihtX2lt
YWdlLmdldCgpKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIENhY2hlZFJlc291cmNlKiBj
YWNoZWRSZXNvdXJjZSA9IHRvU3R5bGVDYWNoZWRJbWFnZSgqbV9pbWFnZSkuY2FjaGVkSW1hZ2Uo
KTsKKyAgICBDYWNoZWRSZXNvdXJjZSogY2FjaGVkUmVzb3VyY2UgPSBkb3duY2FzdDxTdHlsZUNh
Y2hlZEltYWdlPigqbV9pbWFnZSkuY2FjaGVkSW1hZ2UoKTsKICAgICBpZiAoIWNhY2hlZFJlc291
cmNlKQogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICByZXR1cm4gY2FjaGVkUmVzb3VyY2UtPmxv
YWRGYWlsZWRPckNhbmNlbGVkKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5
bGVSZXNvbHZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5jcHAKaW5k
ZXggNTcxM2M5ZmM5ZTZmNjU5NDM5ZWM0ZWMyZjRlNTAxNTdkZDI1ODcxMi4uMGY0MjQxN2Q1NjJi
NmQ0MTc4NTFlOTBmNjY2MmJkYzhkY2NmODVhMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
Y3NzL1N0eWxlUmVzb2x2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29s
dmVyLmNwcApAQCAtMzY4MCwxMCArMzY4MCwxMCBAQCB2b2lkIFN0eWxlUmVzb2x2ZXI6OmxvYWRQ
ZW5kaW5nU2hhcGVJbWFnZShTaGFwZVZhbHVlKiBzaGFwZVZhbHVlKQogICAgICAgICByZXR1cm47
CiAKICAgICBTdHlsZUltYWdlKiBpbWFnZSA9IHNoYXBlVmFsdWUtPmltYWdlKCk7Ci0gICAgaWYg
KCFpbWFnZSB8fCAhaW1hZ2UtPmlzUGVuZGluZ0ltYWdlKCkpCisgICAgaWYgKCFpczxTdHlsZVBl
bmRpbmdJbWFnZT4oaW1hZ2UpKQogICAgICAgICByZXR1cm47CiAKLSAgICBhdXRvJiBwZW5kaW5n
SW1hZ2UgPSB0b1N0eWxlUGVuZGluZ0ltYWdlKCppbWFnZSk7CisgICAgYXV0byYgcGVuZGluZ0lt
YWdlID0gZG93bmNhc3Q8U3R5bGVQZW5kaW5nSW1hZ2U+KCppbWFnZSk7CiAKICAgICBSZXNvdXJj
ZUxvYWRlck9wdGlvbnMgb3B0aW9ucyA9IENhY2hlZFJlc291cmNlTG9hZGVyOjpkZWZhdWx0Q2Fj
aGVkUmVzb3VyY2VPcHRpb25zKCk7CiAgICAgb3B0aW9ucy5zZXRSZXF1ZXN0T3JpZ2luUG9saWN5
KFBvdGVudGlhbGx5Q3Jvc3NPcmlnaW5FbmFibGVkKTsKQEAgLTM3MDUsOSArMzcwNSw5IEBAIHZv
aWQgU3R5bGVSZXNvbHZlcjo6bG9hZFBlbmRpbmdJbWFnZXMoKQogICAgICAgICBzd2l0Y2ggKGN1
cnJlbnRQcm9wZXJ0eSkgewogICAgICAgICBjYXNlIENTU1Byb3BlcnR5QmFja2dyb3VuZEltYWdl
OiB7CiAgICAgICAgICAgICBmb3IgKEZpbGxMYXllciogYmFja2dyb3VuZExheWVyID0gbV9zdGF0
ZS5zdHlsZSgpLT5hY2Nlc3NCYWNrZ3JvdW5kTGF5ZXJzKCk7IGJhY2tncm91bmRMYXllcjsgYmFj
a2dyb3VuZExheWVyID0gYmFja2dyb3VuZExheWVyLT5uZXh0KCkpIHsKLSAgICAgICAgICAgICAg
ICBhdXRvIHN0eWxlSW1hZ2UgPSBiYWNrZ3JvdW5kTGF5ZXItPmltYWdlKCk7Ci0gICAgICAgICAg
ICAgICAgaWYgKHN0eWxlSW1hZ2UgJiYgc3R5bGVJbWFnZS0+aXNQZW5kaW5nSW1hZ2UoKSkKLSAg
ICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZExheWVyLT5zZXRJbWFnZShsb2FkUGVuZGluZ0lt
YWdlKHRvU3R5bGVQZW5kaW5nSW1hZ2UoKnN0eWxlSW1hZ2UpKSk7CisgICAgICAgICAgICAgICAg
YXV0byogc3R5bGVJbWFnZSA9IGJhY2tncm91bmRMYXllci0+aW1hZ2UoKTsKKyAgICAgICAgICAg
ICAgICBpZiAoaXM8U3R5bGVQZW5kaW5nSW1hZ2U+KHN0eWxlSW1hZ2UpKQorICAgICAgICAgICAg
ICAgICAgICBiYWNrZ3JvdW5kTGF5ZXItPnNldEltYWdlKGxvYWRQZW5kaW5nSW1hZ2UoZG93bmNh
c3Q8U3R5bGVQZW5kaW5nSW1hZ2U+KCpzdHlsZUltYWdlKSkpOwogICAgICAgICAgICAgfQogICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KQEAgLTM3MTUsOSArMzcxNSw4IEBAIHZvaWQgU3R5
bGVSZXNvbHZlcjo6bG9hZFBlbmRpbmdJbWFnZXMoKQogICAgICAgICAgICAgZm9yIChDb250ZW50
RGF0YSogY29udGVudERhdGEgPSBjb25zdF9jYXN0PENvbnRlbnREYXRhKj4obV9zdGF0ZS5zdHls
ZSgpLT5jb250ZW50RGF0YSgpKTsgY29udGVudERhdGE7IGNvbnRlbnREYXRhID0gY29udGVudERh
dGEtPm5leHQoKSkgewogICAgICAgICAgICAgICAgIGlmIChpczxJbWFnZUNvbnRlbnREYXRhPigq
Y29udGVudERhdGEpKSB7CiAgICAgICAgICAgICAgICAgICAgIGF1dG8mIHN0eWxlSW1hZ2UgPSBk
b3duY2FzdDxJbWFnZUNvbnRlbnREYXRhPigqY29udGVudERhdGEpLmltYWdlKCk7Ci0gICAgICAg
ICAgICAgICAgICAgIGlmIChzdHlsZUltYWdlLmlzUGVuZGluZ0ltYWdlKCkpIHsKLSAgICAgICAg
ICAgICAgICAgICAgICAgIFJlZlB0cjxTdHlsZUltYWdlPiBsb2FkZWRJbWFnZSA9IGxvYWRQZW5k
aW5nSW1hZ2UodG9TdHlsZVBlbmRpbmdJbWFnZShzdHlsZUltYWdlKSk7Ci0gICAgICAgICAgICAg
ICAgICAgICAgICBpZiAobG9hZGVkSW1hZ2UpCisgICAgICAgICAgICAgICAgICAgIGlmIChpczxT
dHlsZVBlbmRpbmdJbWFnZT4oc3R5bGVJbWFnZSkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAg
IGlmIChSZWZQdHI8U3R5bGVJbWFnZT4gbG9hZGVkSW1hZ2UgPSBsb2FkUGVuZGluZ0ltYWdlKGRv
d25jYXN0PFN0eWxlUGVuZGluZ0ltYWdlPihzdHlsZUltYWdlKSkpCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZG93bmNhc3Q8SW1hZ2VDb250ZW50RGF0YT4oKmNvbnRlbnREYXRhKS5zZXRJ
bWFnZShsb2FkZWRJbWFnZS5yZWxlYXNlKCkpOwogICAgICAgICAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICAgICAgfQpAQCAtMzcyOCw0NyArMzcyNyw0NyBAQCB2b2lkIFN0eWxlUmVzb2x2ZXI6
OmxvYWRQZW5kaW5nSW1hZ2VzKCkKICAgICAgICAgICAgIGlmIChDdXJzb3JMaXN0KiBjdXJzb3JM
aXN0ID0gbV9zdGF0ZS5zdHlsZSgpLT5jdXJzb3JzKCkpIHsKICAgICAgICAgICAgICAgICBmb3Ig
KHNpemVfdCBpID0gMDsgaSA8IGN1cnNvckxpc3QtPnNpemUoKTsgKytpKSB7CiAgICAgICAgICAg
ICAgICAgICAgIEN1cnNvckRhdGEmIGN1cnJlbnRDdXJzb3IgPSBjdXJzb3JMaXN0LT5hdChpKTsK
LSAgICAgICAgICAgICAgICAgICAgYXV0byBzdHlsZUltYWdlID0gY3VycmVudEN1cnNvci5pbWFn
ZSgpOwotICAgICAgICAgICAgICAgICAgICBpZiAoc3R5bGVJbWFnZSAmJiBzdHlsZUltYWdlLT5p
c1BlbmRpbmdJbWFnZSgpKQotICAgICAgICAgICAgICAgICAgICAgICAgY3VycmVudEN1cnNvci5z
ZXRJbWFnZShsb2FkUGVuZGluZ0ltYWdlKHRvU3R5bGVQZW5kaW5nSW1hZ2UoKnN0eWxlSW1hZ2Up
KSk7CisgICAgICAgICAgICAgICAgICAgIGF1dG8qIHN0eWxlSW1hZ2UgPSBjdXJyZW50Q3Vyc29y
LmltYWdlKCk7CisgICAgICAgICAgICAgICAgICAgIGlmIChpczxTdHlsZVBlbmRpbmdJbWFnZT4o
c3R5bGVJbWFnZSkpCisgICAgICAgICAgICAgICAgICAgICAgICBjdXJyZW50Q3Vyc29yLnNldElt
YWdlKGxvYWRQZW5kaW5nSW1hZ2UoZG93bmNhc3Q8U3R5bGVQZW5kaW5nSW1hZ2U+KCpzdHlsZUlt
YWdlKSkpOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlMaXN0U3R5bGVJbWFnZTog
ewotICAgICAgICAgICAgYXV0byBzdHlsZUltYWdlID0gbV9zdGF0ZS5zdHlsZSgpLT5saXN0U3R5
bGVJbWFnZSgpOwotICAgICAgICAgICAgaWYgKHN0eWxlSW1hZ2UgJiYgc3R5bGVJbWFnZS0+aXNQ
ZW5kaW5nSW1hZ2UoKSkKLSAgICAgICAgICAgICAgICBtX3N0YXRlLnN0eWxlKCktPnNldExpc3RT
dHlsZUltYWdlKGxvYWRQZW5kaW5nSW1hZ2UodG9TdHlsZVBlbmRpbmdJbWFnZSgqc3R5bGVJbWFn
ZSkpKTsKKyAgICAgICAgICAgIGF1dG8qIHN0eWxlSW1hZ2UgPSBtX3N0YXRlLnN0eWxlKCktPmxp
c3RTdHlsZUltYWdlKCk7CisgICAgICAgICAgICBpZiAoaXM8U3R5bGVQZW5kaW5nSW1hZ2U+KHN0
eWxlSW1hZ2UpKQorICAgICAgICAgICAgICAgIG1fc3RhdGUuc3R5bGUoKS0+c2V0TGlzdFN0eWxl
SW1hZ2UobG9hZFBlbmRpbmdJbWFnZShkb3duY2FzdDxTdHlsZVBlbmRpbmdJbWFnZT4oKnN0eWxl
SW1hZ2UpKSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNlIENT
U1Byb3BlcnR5Qm9yZGVySW1hZ2VTb3VyY2U6IHsKLSAgICAgICAgICAgIGF1dG8gc3R5bGVJbWFn
ZSA9IG1fc3RhdGUuc3R5bGUoKS0+Ym9yZGVySW1hZ2VTb3VyY2UoKTsKLSAgICAgICAgICAgIGlm
IChzdHlsZUltYWdlICYmIHN0eWxlSW1hZ2UtPmlzUGVuZGluZ0ltYWdlKCkpCi0gICAgICAgICAg
ICAgICAgbV9zdGF0ZS5zdHlsZSgpLT5zZXRCb3JkZXJJbWFnZVNvdXJjZShsb2FkUGVuZGluZ0lt
YWdlKHRvU3R5bGVQZW5kaW5nSW1hZ2UoKnN0eWxlSW1hZ2UpKSk7CisgICAgICAgICAgICBhdXRv
KiBzdHlsZUltYWdlID0gbV9zdGF0ZS5zdHlsZSgpLT5ib3JkZXJJbWFnZVNvdXJjZSgpOworICAg
ICAgICAgICAgaWYgKGlzPFN0eWxlUGVuZGluZ0ltYWdlPihzdHlsZUltYWdlKSkKKyAgICAgICAg
ICAgICAgICBtX3N0YXRlLnN0eWxlKCktPnNldEJvcmRlckltYWdlU291cmNlKGxvYWRQZW5kaW5n
SW1hZ2UoZG93bmNhc3Q8U3R5bGVQZW5kaW5nSW1hZ2U+KCpzdHlsZUltYWdlKSkpOwogICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJv
eFJlZmxlY3Q6IHsKICAgICAgICAgICAgIGlmIChTdHlsZVJlZmxlY3Rpb24qIHJlZmxlY3Rpb24g
PSBtX3N0YXRlLnN0eWxlKCktPmJveFJlZmxlY3QoKSkgewogICAgICAgICAgICAgICAgIGNvbnN0
IE5pbmVQaWVjZUltYWdlJiBtYXNrSW1hZ2UgPSByZWZsZWN0aW9uLT5tYXNrKCk7Ci0gICAgICAg
ICAgICAgICAgYXV0byBzdHlsZUltYWdlID0gbWFza0ltYWdlLmltYWdlKCk7Ci0gICAgICAgICAg
ICAgICAgaWYgKHN0eWxlSW1hZ2UgJiYgc3R5bGVJbWFnZS0+aXNQZW5kaW5nSW1hZ2UoKSkgewot
ICAgICAgICAgICAgICAgICAgICBSZWZQdHI8U3R5bGVJbWFnZT4gbG9hZGVkSW1hZ2UgPSBsb2Fk
UGVuZGluZ0ltYWdlKHRvU3R5bGVQZW5kaW5nSW1hZ2UoKnN0eWxlSW1hZ2UpKTsKKyAgICAgICAg
ICAgICAgICBhdXRvKiBzdHlsZUltYWdlID0gbWFza0ltYWdlLmltYWdlKCk7CisgICAgICAgICAg
ICAgICAgaWYgKGlzPFN0eWxlUGVuZGluZ0ltYWdlPihzdHlsZUltYWdlKSkgeworICAgICAgICAg
ICAgICAgICAgICBSZWZQdHI8U3R5bGVJbWFnZT4gbG9hZGVkSW1hZ2UgPSBsb2FkUGVuZGluZ0lt
YWdlKGRvd25jYXN0PFN0eWxlUGVuZGluZ0ltYWdlPigqc3R5bGVJbWFnZSkpOwogICAgICAgICAg
ICAgICAgICAgICByZWZsZWN0aW9uLT5zZXRNYXNrKE5pbmVQaWVjZUltYWdlKGxvYWRlZEltYWdl
LnJlbGVhc2UoKSwgbWFza0ltYWdlLmltYWdlU2xpY2VzKCksIG1hc2tJbWFnZS5maWxsKCksIG1h
c2tJbWFnZS5ib3JkZXJTbGljZXMoKSwgbWFza0ltYWdlLm91dHNldCgpLCBtYXNrSW1hZ2UuaG9y
aXpvbnRhbFJ1bGUoKSwgbWFza0ltYWdlLnZlcnRpY2FsUnVsZSgpKSk7CiAgICAgICAgICAgICAg
ICAgfQogICAgICAgICAgICAgfQogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAg
ICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tCb3hJbWFnZVNvdXJjZTogewotICAgICAgICAg
ICAgYXV0byBzdHlsZUltYWdlID0gbV9zdGF0ZS5zdHlsZSgpLT5tYXNrQm94SW1hZ2VTb3VyY2Uo
KTsKLSAgICAgICAgICAgIGlmIChzdHlsZUltYWdlICYmIHN0eWxlSW1hZ2UtPmlzUGVuZGluZ0lt
YWdlKCkpCi0gICAgICAgICAgICAgICAgbV9zdGF0ZS5zdHlsZSgpLT5zZXRNYXNrQm94SW1hZ2VT
b3VyY2UobG9hZFBlbmRpbmdJbWFnZSh0b1N0eWxlUGVuZGluZ0ltYWdlKCpzdHlsZUltYWdlKSkp
OworICAgICAgICAgICAgYXV0byogc3R5bGVJbWFnZSA9IG1fc3RhdGUuc3R5bGUoKS0+bWFza0Jv
eEltYWdlU291cmNlKCk7CisgICAgICAgICAgICBpZiAoaXM8U3R5bGVQZW5kaW5nSW1hZ2U+KHN0
eWxlSW1hZ2UpKQorICAgICAgICAgICAgICAgIG1fc3RhdGUuc3R5bGUoKS0+c2V0TWFza0JveElt
YWdlU291cmNlKGxvYWRQZW5kaW5nSW1hZ2UoZG93bmNhc3Q8U3R5bGVQZW5kaW5nSW1hZ2U+KCpz
dHlsZUltYWdlKSkpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2Fz
ZSBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tJbWFnZTogewogICAgICAgICAgICAgZm9yIChGaWxsTGF5
ZXIqIG1hc2tMYXllciA9IG1fc3RhdGUuc3R5bGUoKS0+YWNjZXNzTWFza0xheWVycygpOyBtYXNr
TGF5ZXI7IG1hc2tMYXllciA9IG1hc2tMYXllci0+bmV4dCgpKSB7Ci0gICAgICAgICAgICAgICAg
YXV0byBzdHlsZUltYWdlID0gbWFza0xheWVyLT5pbWFnZSgpOwotICAgICAgICAgICAgICAgIGlm
IChzdHlsZUltYWdlICYmIHN0eWxlSW1hZ2UtPmlzUGVuZGluZ0ltYWdlKCkpCi0gICAgICAgICAg
ICAgICAgICAgIG1hc2tMYXllci0+c2V0SW1hZ2UobG9hZFBlbmRpbmdJbWFnZSh0b1N0eWxlUGVu
ZGluZ0ltYWdlKCpzdHlsZUltYWdlKSkpOworICAgICAgICAgICAgICAgIGF1dG8qIHN0eWxlSW1h
Z2UgPSBtYXNrTGF5ZXItPmltYWdlKCk7CisgICAgICAgICAgICAgICAgaWYgKGlzPFN0eWxlUGVu
ZGluZ0ltYWdlPihzdHlsZUltYWdlKSkKKyAgICAgICAgICAgICAgICAgICAgbWFza0xheWVyLT5z
ZXRJbWFnZShsb2FkUGVuZGluZ0ltYWdlKGRvd25jYXN0PFN0eWxlUGVuZGluZ0ltYWdlPigqc3R5
bGVJbWFnZSkpKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VTZXJpYWxpemVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvUGFnZVNlcmlhbGl6ZXIuY3BwCmluZGV4IDE5NDZiOTM2YjNhNzMy
ZDNkMzFiMjkwYjAxZTRiYzUxMzE5ZDRmMzMuLjI1ODI4MDYwZTc2MGNhNGQzNjUwYjAwNWQ1ZTgy
ODQyODYzMmJmMTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZVNlcmlhbGl6
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZVNlcmlhbGl6ZXIuY3BwCkBAIC0z
MzMsMTMgKzMzMywxMyBAQCB2b2lkIFBhZ2VTZXJpYWxpemVyOjpyZXRyaWV2ZVJlc291cmNlc0Zv
clByb3BlcnRpZXMoY29uc3QgU3R5bGVQcm9wZXJ0aWVzKiBzdHlsZQogCiAgICAgICAgIFN0eWxl
SW1hZ2UqIHN0eWxlSW1hZ2UgPSBkb3duY2FzdDxDU1NJbWFnZVZhbHVlPigqY3NzVmFsdWUpLmNh
Y2hlZE9yUGVuZGluZ0ltYWdlKCk7CiAgICAgICAgIC8vIE5vbiBjYWNoZWQtaW1hZ2VzIGFyZSBq
dXN0IHBsYWNlLWhvbGRlcnMgYW5kIGRvIG5vdCBjb250YWluIGRhdGEuCi0gICAgICAgIGlmICgh
c3R5bGVJbWFnZSB8fCAhc3R5bGVJbWFnZS0+aXNDYWNoZWRJbWFnZSgpKQorICAgICAgICBpZiAo
IWlzPFN0eWxlQ2FjaGVkSW1hZ2U+KHN0eWxlSW1hZ2UpKQogICAgICAgICAgICAgY29udGludWU7
CiAKLSAgICAgICAgQ2FjaGVkSW1hZ2UqIGltYWdlID0gdG9TdHlsZUNhY2hlZEltYWdlKHN0eWxl
SW1hZ2UpLT5jYWNoZWRJbWFnZSgpOworICAgICAgICBDYWNoZWRJbWFnZSogaW1hZ2UgPSBkb3du
Y2FzdDxTdHlsZUNhY2hlZEltYWdlPigqc3R5bGVJbWFnZSkuY2FjaGVkSW1hZ2UoKTsKIAogICAg
ICAgICBVUkwgdXJsID0gZG9jdW1lbnQtPmNvbXBsZXRlVVJMKGltYWdlLT51cmwoKSk7Ci0gICAg
ICAgIGFkZEltYWdlVG9SZXNvdXJjZXMoaW1hZ2UsIDAsIHVybCk7CisgICAgICAgIGFkZEltYWdl
VG9SZXNvdXJjZXMoaW1hZ2UsIG51bGxwdHIsIHVybCk7CiAgICAgfQogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9DU1NQcm9wZXJ0eUFuaW1hdGlvbi5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9DU1NQcm9wZXJ0eUFuaW1hdGlvbi5jcHAK
aW5kZXggZDQwODI5MWIyMmI5NDEzMzQ3NDg1MGIxMTViNzQ4ZjkyN2I1OTE1Ni4uMTFhNzAwOWFk
NDQ0YjYyMWQzNmU3NWU5YTdjY2NjMGFhYTA0MGUwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGFnZS9hbmltYXRpb24vQ1NTUHJvcGVydHlBbmltYXRpb24uY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0NTU1Byb3BlcnR5QW5pbWF0aW9uLmNwcApAQCAtMjkzLDkg
KzI5Myw5IEBAIHN0YXRpYyBpbmxpbmUgUGFzc1JlZlB0cjxTdHlsZUltYWdlPiBibGVuZEZ1bmMo
Y29uc3QgQW5pbWF0aW9uQmFzZSogYW5pbSwgU3R5bGVJCiAgICAgICAgIHJldHVybiB0bzsKIAog
ICAgIC8vIEFuaW1hdGlvbiBiZXR3ZWVuIHR3byBnZW5lcmF0ZWQgaW1hZ2VzLiBDcm9zcyBmYWRl
IGZvciBhbGwgb3RoZXIgY2FzZXMuCi0gICAgaWYgKGZyb20tPmlzR2VuZXJhdGVkSW1hZ2UoKSAm
JiB0by0+aXNHZW5lcmF0ZWRJbWFnZSgpKSB7Ci0gICAgICAgIENTU0ltYWdlR2VuZXJhdG9yVmFs
dWUmIGZyb21HZW5lcmF0ZWQgPSB0b1N0eWxlR2VuZXJhdGVkSW1hZ2UoZnJvbSktPmltYWdlVmFs
dWUoKTsKLSAgICAgICAgQ1NTSW1hZ2VHZW5lcmF0b3JWYWx1ZSYgdG9HZW5lcmF0ZWQgPSB0b1N0
eWxlR2VuZXJhdGVkSW1hZ2UodG8pLT5pbWFnZVZhbHVlKCk7CisgICAgaWYgKGlzPFN0eWxlR2Vu
ZXJhdGVkSW1hZ2U+KCpmcm9tKSAmJiBpczxTdHlsZUdlbmVyYXRlZEltYWdlPigqdG8pKSB7Cisg
ICAgICAgIENTU0ltYWdlR2VuZXJhdG9yVmFsdWUmIGZyb21HZW5lcmF0ZWQgPSBkb3duY2FzdDxT
dHlsZUdlbmVyYXRlZEltYWdlPigqZnJvbSkuaW1hZ2VWYWx1ZSgpOworICAgICAgICBDU1NJbWFn
ZUdlbmVyYXRvclZhbHVlJiB0b0dlbmVyYXRlZCA9IGRvd25jYXN0PFN0eWxlR2VuZXJhdGVkSW1h
Z2U+KCp0bykuaW1hZ2VWYWx1ZSgpOwogCiAgICAgICAgIGlmIChpczxDU1NGaWx0ZXJJbWFnZVZh
bHVlPihmcm9tR2VuZXJhdGVkKSAmJiBpczxDU1NGaWx0ZXJJbWFnZVZhbHVlPih0b0dlbmVyYXRl
ZCkpIHsKICAgICAgICAgICAgIC8vIEFuaW1hdGlvbiBvZiBnZW5lcmF0ZWQgaW1hZ2VzIGp1c3Qg
cG9zc2libGUgaWYgaW5wdXQgaW1hZ2VzIGFyZSBlcXVhbC4KQEAgLTMxNSwxOSArMzE1LDE5IEBA
IHN0YXRpYyBpbmxpbmUgUGFzc1JlZlB0cjxTdHlsZUltYWdlPiBibGVuZEZ1bmMoY29uc3QgQW5p
bWF0aW9uQmFzZSogYW5pbSwgU3R5bGVJCiAKICAgICAgICAgLy8gRklYTUU6IEFkZCBzdXBwb3J0
IGZvciBhbmltYXRpb24gYmV0d2VlbiB0d28gKmdyYWRpZW50KCkgZnVuY3Rpb25zLgogICAgICAg
ICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTE5OTU2Ci0gICAg
fSBlbHNlIGlmIChmcm9tLT5pc0dlbmVyYXRlZEltYWdlKCkgJiYgdG8tPmlzQ2FjaGVkSW1hZ2Uo
KSkgewotICAgICAgICBDU1NJbWFnZUdlbmVyYXRvclZhbHVlJiBmcm9tR2VuZXJhdGVkID0gdG9T
dHlsZUdlbmVyYXRlZEltYWdlKGZyb20pLT5pbWFnZVZhbHVlKCk7CisgICAgfSBlbHNlIGlmIChp
czxTdHlsZUdlbmVyYXRlZEltYWdlPigqZnJvbSkgJiYgaXM8U3R5bGVDYWNoZWRJbWFnZT4oKnRv
KSkgeworICAgICAgICBDU1NJbWFnZUdlbmVyYXRvclZhbHVlJiBmcm9tR2VuZXJhdGVkID0gZG93
bmNhc3Q8U3R5bGVHZW5lcmF0ZWRJbWFnZT4oKmZyb20pLmltYWdlVmFsdWUoKTsKICAgICAgICAg
aWYgKGlzPENTU0ZpbHRlckltYWdlVmFsdWU+KGZyb21HZW5lcmF0ZWQpKSB7CiAgICAgICAgICAg
ICBDU1NGaWx0ZXJJbWFnZVZhbHVlJiBmcm9tRmlsdGVyID0gZG93bmNhc3Q8Q1NTRmlsdGVySW1h
Z2VWYWx1ZT4oZnJvbUdlbmVyYXRlZCk7Ci0gICAgICAgICAgICBpZiAoZnJvbUZpbHRlci5jYWNo
ZWRJbWFnZSgpICYmIHRvU3R5bGVDYWNoZWRJbWFnZSh0byktPmNhY2hlZEltYWdlKCkgPT0gZnJv
bUZpbHRlci5jYWNoZWRJbWFnZSgpKQorICAgICAgICAgICAgaWYgKGZyb21GaWx0ZXIuY2FjaGVk
SW1hZ2UoKSAmJiBkb3duY2FzdDxTdHlsZUNhY2hlZEltYWdlPigqdG8pLmNhY2hlZEltYWdlKCkg
PT0gZnJvbUZpbHRlci5jYWNoZWRJbWFnZSgpKQogICAgICAgICAgICAgICAgIHJldHVybiBibGVu
ZEZpbHRlcihhbmltLCBmcm9tRmlsdGVyLmNhY2hlZEltYWdlKCksIGZyb21GaWx0ZXIuZmlsdGVy
T3BlcmF0aW9ucygpLCBGaWx0ZXJPcGVyYXRpb25zKCksIHByb2dyZXNzKTsKICAgICAgICAgfQog
ICAgICAgICAvLyBGSVhNRTogQWRkIGludGVycG9sYXRpb24gYmV0d2VlbiBjcm9zcy1mYWRlIGFu
ZCBpbWFnZSBzb3VyY2UuCi0gICAgfSBlbHNlIGlmIChmcm9tLT5pc0NhY2hlZEltYWdlKCkgJiYg
dG8tPmlzR2VuZXJhdGVkSW1hZ2UoKSkgewotICAgICAgICBDU1NJbWFnZUdlbmVyYXRvclZhbHVl
JiB0b0dlbmVyYXRlZCA9IHRvU3R5bGVHZW5lcmF0ZWRJbWFnZSh0byktPmltYWdlVmFsdWUoKTsK
KyAgICB9IGVsc2UgaWYgKGlzPFN0eWxlQ2FjaGVkSW1hZ2U+KCpmcm9tKSAmJiBpczxTdHlsZUdl
bmVyYXRlZEltYWdlPigqdG8pKSB7CisgICAgICAgIENTU0ltYWdlR2VuZXJhdG9yVmFsdWUmIHRv
R2VuZXJhdGVkID0gZG93bmNhc3Q8U3R5bGVHZW5lcmF0ZWRJbWFnZT4oKnRvKS5pbWFnZVZhbHVl
KCk7CiAgICAgICAgIGlmIChpczxDU1NGaWx0ZXJJbWFnZVZhbHVlPih0b0dlbmVyYXRlZCkpIHsK
ICAgICAgICAgICAgIENTU0ZpbHRlckltYWdlVmFsdWUmIHRvRmlsdGVyID0gZG93bmNhc3Q8Q1NT
RmlsdGVySW1hZ2VWYWx1ZT4odG9HZW5lcmF0ZWQpOwotICAgICAgICAgICAgaWYgKHRvRmlsdGVy
LmNhY2hlZEltYWdlKCkgJiYgdG9TdHlsZUNhY2hlZEltYWdlKGZyb20pLT5jYWNoZWRJbWFnZSgp
ID09IHRvRmlsdGVyLmNhY2hlZEltYWdlKCkpICAgICAKKyAgICAgICAgICAgIGlmICh0b0ZpbHRl
ci5jYWNoZWRJbWFnZSgpICYmIGRvd25jYXN0PFN0eWxlQ2FjaGVkSW1hZ2U+KCpmcm9tKS5jYWNo
ZWRJbWFnZSgpID09IHRvRmlsdGVyLmNhY2hlZEltYWdlKCkpCiAgICAgICAgICAgICAgICAgcmV0
dXJuIGJsZW5kRmlsdGVyKGFuaW0sIHRvRmlsdGVyLmNhY2hlZEltYWdlKCksIEZpbHRlck9wZXJh
dGlvbnMoKSwgdG9GaWx0ZXIuZmlsdGVyT3BlcmF0aW9ucygpLCBwcm9ncmVzcyk7CiAgICAgICAg
IH0KICAgICAgICAgLy8gRklYTUU6IEFkZCBpbnRlcnBvbGF0aW9uIGJldHdlZW4gaW1hZ2Ugc291
cmNlIGFuZCBjcm9zcy1mYWRlLgpAQCAtMzM1LDggKzMzNSw4IEBAIHN0YXRpYyBpbmxpbmUgUGFz
c1JlZlB0cjxTdHlsZUltYWdlPiBibGVuZEZ1bmMoY29uc3QgQW5pbWF0aW9uQmFzZSogYW5pbSwg
U3R5bGVJCiAKICAgICAvLyBGSVhNRTogQWRkIHN1cHBvcnQgY3Jvc3MgZmFkZSBiZXR3ZWVuIGNh
Y2hlZCBhbmQgZ2VuZXJhdGVkIGltYWdlcy4KICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9NzgyOTMKLSAgICBpZiAoZnJvbS0+aXNDYWNoZWRJbWFnZSgpICYm
IHRvLT5pc0NhY2hlZEltYWdlKCkpCi0gICAgICAgIHJldHVybiBjcm9zc2ZhZGVCbGVuZChhbmlt
LCB0b1N0eWxlQ2FjaGVkSW1hZ2UoZnJvbSksIHRvU3R5bGVDYWNoZWRJbWFnZSh0byksIHByb2dy
ZXNzKTsKKyAgICBpZiAoaXM8U3R5bGVDYWNoZWRJbWFnZT4oKmZyb20pICYmIGlzPFN0eWxlQ2Fj
aGVkSW1hZ2U+KCp0bykpCisgICAgICAgIHJldHVybiBjcm9zc2ZhZGVCbGVuZChhbmltLCBkb3du
Y2FzdDxTdHlsZUNhY2hlZEltYWdlPihmcm9tKSwgZG93bmNhc3Q8U3R5bGVDYWNoZWRJbWFnZT4o
dG8pLCBwcm9ncmVzcyk7CiAKICAgICByZXR1cm4gdG87CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVDYWNoZWRJbWFnZS5oIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlQ2FjaGVkSW1hZ2UuaAppbmRleCA1MmMwYzBmNTVjYzVl
Y2M1NTcxNGVjNjYyMTU3ODQxZDg4YjA1YzRiLi5lOWFjZDc4M2I1MWI1ODJkZTFjYzYxNDQ5OWRj
MmM3MmJmMWY1ZTU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUv
U3R5bGVDYWNoZWRJbWFnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9T
dHlsZUNhY2hlZEltYWdlLmgKQEAgLTY0LDcgKzY0LDggQEAgcHJpdmF0ZToKICAgICBDYWNoZWRS
ZXNvdXJjZUhhbmRsZTxDYWNoZWRJbWFnZT4gbV9pbWFnZTsKIH07CiAKLVNUWUxFX0lNQUdFX1RZ
UEVfQ0FTVFMoU3R5bGVDYWNoZWRJbWFnZSwgU3R5bGVJbWFnZSwgaXNDYWNoZWRJbWFnZSkKK30g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKIAotfQotI2VuZGlmCitTUEVDSUFMSVpFX1RZUEVfVFJBSVRT
X1NUWUxFX0lNQUdFKFN0eWxlQ2FjaGVkSW1hZ2UsIGlzQ2FjaGVkSW1hZ2UpCisKKyNlbmRpZiAv
LyBTdHlsZUNhY2hlZEltYWdlX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdHlsZS9TdHlsZUNhY2hlZEltYWdlU2V0LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3R5bGUvU3R5bGVDYWNoZWRJbWFnZVNldC5oCmluZGV4IDQ0YzlmMzA4YWE5YjAzODQxOTQzMDRl
ODU0ODE4NGYzYzE2MzQxYzYuLjBlYzBmODAwNDY5ZDJlOGNiZjFmNjVhNmZjNmJlNjIyOWFiMzk0
OGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZUNhY2hl
ZEltYWdlU2V0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlQ2Fj
aGVkSW1hZ2VTZXQuaApAQCAtODMsMTAgKzgzLDEwIEBAIHByaXZhdGU6CiAgICAgQ1NTSW1hZ2VT
ZXRWYWx1ZSogbV9pbWFnZVNldFZhbHVlOyAvLyBOb3QgcmV0YWluZWQ7IGl0IG93bnMgdXMuCiB9
OwogCi1TVFlMRV9JTUFHRV9UWVBFX0NBU1RTKFN0eWxlQ2FjaGVkSW1hZ2VTZXQsIFN0eWxlSW1h
Z2UsIGlzQ2FjaGVkSW1hZ2VTZXQpCi0KIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAorU1BFQ0lB
TElaRV9UWVBFX1RSQUlUU19TVFlMRV9JTUFHRShTdHlsZUNhY2hlZEltYWdlU2V0LCBpc0NhY2hl
ZEltYWdlU2V0KQorCiAjZW5kaWYgLy8gRU5BQkxFKENTU19JTUFHRV9TRVQpCiAKICNlbmRpZiAv
LyBTdHlsZUNhY2hlZEltYWdlU2V0X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdHlsZS9TdHlsZUdlbmVyYXRlZEltYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3R5bGUvU3R5bGVHZW5lcmF0ZWRJbWFnZS5oCmluZGV4IGIxY2EyNzNjYTg1NmU1YzFmMWE0
Y2VjM2EwNzk5ODBlZWEwZTEwYTIuLjFkYmQyMzhkZjI4YTg4N2Q4ODg3NTUxYTA0YzczNjM0ZGUx
MzMyNTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZUdl
bmVyYXRlZEltYWdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxl
R2VuZXJhdGVkSW1hZ2UuaApAQCAtNjMsNyArNjMsOCBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9m
aXhlZFNpemU7CiB9OwogCi1TVFlMRV9JTUFHRV9UWVBFX0NBU1RTKFN0eWxlR2VuZXJhdGVkSW1h
Z2UsIFN0eWxlSW1hZ2UsIGlzR2VuZXJhdGVkSW1hZ2UpCit9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CiAKLX0KLSNlbmRpZgorU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19TVFlMRV9JTUFHRShTdHlsZUdl
bmVyYXRlZEltYWdlLCBpc0dlbmVyYXRlZEltYWdlKQorCisjZW5kaWYgLy8gU3R5bGVHZW5lcmF0
ZWRJbWFnZV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5
bGVJbWFnZS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlSW1hZ2UuaApp
bmRleCBjMGNjN2ZjYjQ4ZGViMDg1MDZmYTY5OWRjOTEwZTc5OGFkNmYyY2Y1Li4yMzZmMWEyMTk5
YzI4M2FkMzFmNTQzZjk3MzkyOWQ5OWU1MmM3NmVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVJbWFnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdHlsZS9TdHlsZUltYWdlLmgKQEAgLTMwLDYgKzMwLDcgQEAKICNpbmNsdWRlIDx3dGYv
UGFzc1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3Rm
L1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9UeXBlQ2FzdHMuaD4KIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCkBAIC05Miw4ICs5MywxMSBAQCBwcm90ZWN0ZWQ6CiAgICAgYm9vbCBtX2lzQ2FjaGVk
SW1hZ2VTZXQgOiAxOwogfTsKIAotI2RlZmluZSBTVFlMRV9JTUFHRV9UWVBFX0NBU1RTKFRvQ2xh
c3NOYW1lLCBGcm9tQ2xhc3NOYW1lLCBwcmVkaWNhdGUpIFwKLSAgICBUWVBFX0NBU1RTX0JBU0Uo
VG9DbGFzc05hbWUsIEZyb21DbGFzc05hbWUsIHN0eWxlSW1hZ2UsIHN0eWxlSW1hZ2UtPnByZWRp
Y2F0ZSgpLCBzdHlsZUltYWdlLnByZWRpY2F0ZSgpKQorfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQog
Ci19Ci0jZW5kaWYKKyNkZWZpbmUgU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19TVFlMRV9JTUFHRShU
b0NsYXNzTmFtZSwgcHJlZGljYXRlKSBcCitTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0JFR0lOKFdl
YkNvcmU6OlRvQ2xhc3NOYW1lKSBcCisgICAgc3RhdGljIGJvb2wgaXNUeXBlKGNvbnN0IFdlYkNv
cmU6OlN0eWxlSW1hZ2UmIGltYWdlKSB7IHJldHVybiBpbWFnZS5wcmVkaWNhdGUoKTsgfSBcCitT
UEVDSUFMSVpFX1RZUEVfVFJBSVRTX0VORCgpCisKKyNlbmRpZiAvLyBTdHlsZUltYWdlX2gKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVBlbmRpbmdJbWFn
ZS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlUGVuZGluZ0ltYWdlLmgK
aW5kZXggNTk5ZGEwNDdhYjYzZDY0ODJiYWE0NTZlYmNkYjAyOGQyOTNkZWVhNy4uNTY3M2IwNzk3
ZjkzYmY0MDU3ZWQ3NDc5OTUyNDdlNGM4YjhmNTQwMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlUGVuZGluZ0ltYWdlLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlUGVuZGluZ0ltYWdlLmgKQEAgLTg2LDggKzg2LDggQEAg
cHJpdmF0ZToKICAgICBDU1NWYWx1ZSogbV92YWx1ZTsgLy8gTm90IHJldGFpbmVkOyBpdCBvd25z
IHVzLgogfTsKIAotU1RZTEVfSU1BR0VfVFlQRV9DQVNUUyhTdHlsZVBlbmRpbmdJbWFnZSwgU3R5
bGVJbWFnZSwgaXNQZW5kaW5nSW1hZ2UpCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKLX0KK1NQ
RUNJQUxJWkVfVFlQRV9UUkFJVFNfU1RZTEVfSU1BR0UoU3R5bGVQZW5kaW5nSW1hZ2UsIGlzUGVu
ZGluZ0ltYWdlKQogCi0jZW5kaWYKKyNlbmRpZiAvLyBTdHlsZVBlbmRpbmdJbWFnZV9oCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>240033</attachid>
            <date>2014-10-17 13:28:31 -0700</date>
            <delta_ts>2014-10-17 14:12:47 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-137824-20141017132836.patch</filename>
            <type>text/plain</type>
            <size>22107</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTc0ODIzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYWMwMjIyNGVkZjY3MDlm
MGY3NjQyMWQ1ZDIzYjhkNGFmMTIyZWVmNS4uNWZhMzFlMjdjNTc1MmFmNzFjYmE0NDcyNjY5Y2Jj
N2RiZDc3MjQxOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQxIEBACisyMDE0LTEwLTE3ICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgVXNlIGlzPD4oKSAvIGRvd25j
YXN0PD4oKSBmb3IgU3R5bGVJbWFnZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTM3ODI0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQW5kcmVhcyBLbGlu
Zy4KKworICAgICAgICBVc2UgaXM8PigpIC8gZG93bmNhc3Q8PigpIGZvciBTdHlsZUltYWdlIGFu
ZCBjbGVhbiB1cCB0aGUgc3Vycm91ZGluZworICAgICAgICBjb2RlLgorCisgICAgICAgIE5vIG5l
dyB0ZXN0cywgbm8gYmVoYXZpb3IgY2hhbmdlLgorCisgICAgICAgICogY3NzL0NTU0N1cnNvcklt
YWdlVmFsdWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTQ3Vyc29ySW1hZ2VWYWx1ZTo6ZGV0
YWNoUGVuZGluZ0ltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU0N1cnNvckltYWdlVmFsdWU6
OmNhY2hlZEltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU0N1cnNvckltYWdlVmFsdWU6OmNh
Y2hlZEltYWdlVVJMKToKKyAgICAgICAgKiBjc3MvQ1NTSW1hZ2VTZXRWYWx1ZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpDU1NJbWFnZVNldFZhbHVlOjpkZXRhY2hQZW5kaW5nSW1hZ2UpOgorICAg
ICAgICAoV2ViQ29yZTo6Q1NTSW1hZ2VTZXRWYWx1ZTo6fkNTU0ltYWdlU2V0VmFsdWUpOgorICAg
ICAgICAoV2ViQ29yZTo6Q1NTSW1hZ2VTZXRWYWx1ZTo6Y2FjaGVkSW1hZ2VTZXQpOgorICAgICAg
ICAoV2ViQ29yZTo6Q1NTSW1hZ2VTZXRWYWx1ZTo6aGFzRmFpbGVkT3JDYW5jZWxlZFN1YnJlc291
cmNlcyk6CisgICAgICAgICogY3NzL0NTU0ltYWdlVmFsdWUuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Q1NTSW1hZ2VWYWx1ZTo6ZGV0YWNoUGVuZGluZ0ltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6
OkNTU0ltYWdlVmFsdWU6OmNhY2hlZEltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU0ltYWdl
VmFsdWU6Omhhc0ZhaWxlZE9yQ2FuY2VsZWRTdWJyZXNvdXJjZXMpOgorICAgICAgICAqIGNzcy9T
dHlsZVJlc29sdmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUmVzb2x2ZXI6OmxvYWRQ
ZW5kaW5nU2hhcGVJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJlc29sdmVyOjpsb2Fk
UGVuZGluZ0ltYWdlcyk6CisgICAgICAgICogcGFnZS9QYWdlU2VyaWFsaXplci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpQYWdlU2VyaWFsaXplcjo6cmV0cmlldmVSZXNvdXJjZXNGb3JQcm9wZXJ0
aWVzKToKKyAgICAgICAgKiBwYWdlL2FuaW1hdGlvbi9DU1NQcm9wZXJ0eUFuaW1hdGlvbi5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpibGVuZEZ1bmMpOgorICAgICAgICAqIHJlbmRlcmluZy9zdHls
ZS9TdHlsZUNhY2hlZEltYWdlLmg6CisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL1N0eWxlQ2Fj
aGVkSW1hZ2VTZXQuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvU3R5bGVHZW5lcmF0ZWRJ
bWFnZS5oOgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9TdHlsZUltYWdlLmg6CisgICAgICAg
ICogcmVuZGVyaW5nL3N0eWxlL1N0eWxlUGVuZGluZ0ltYWdlLmg6CisKIDIwMTQtMTAtMTYgIEpl
ciBOb2JsZSAgPGplci5ub2JsZUBhcHBsZS5jb20+CiAKICAgICAgICAgW01hY10gUmVwcmVzZW50
IEFWTWVkaWFTZWxlY3Rpb25PcHRpb25zIGFzIEF1ZGlvVHJhY2tzCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTQ3Vyc29ySW1hZ2VWYWx1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTQ3Vyc29ySW1hZ2VWYWx1ZS5jcHAKaW5kZXggOWY0NmU3OTE5ZDU1YTJjMmUzMmZkZjkz
N2U1OTE2ZWI3YjNmYThlNi4uN2ExMmY3YTNlMzNiMjhkZWYzYmVkODE4MTU3OGYzZGYzODM1NTNj
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0N1cnNvckltYWdlVmFsdWUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDdXJzb3JJbWFnZVZhbHVlLmNwcApAQCAtNjQs
OCArNjQsOCBAQCBDU1NDdXJzb3JJbWFnZVZhbHVlOjpDU1NDdXJzb3JJbWFnZVZhbHVlKFBhc3NS
ZWY8Q1NTVmFsdWU+IGltYWdlVmFsdWUsIGJvb2wgaGFzSAogCiBpbmxpbmUgdm9pZCBDU1NDdXJz
b3JJbWFnZVZhbHVlOjpkZXRhY2hQZW5kaW5nSW1hZ2UoKQogewotICAgIGlmIChtX2ltYWdlICYm
IG1faW1hZ2UtPmlzUGVuZGluZ0ltYWdlKCkpCi0gICAgICAgIHRvU3R5bGVQZW5kaW5nSW1hZ2Uo
Km1faW1hZ2UpLmRldGFjaEZyb21DU1NWYWx1ZSgpOworICAgIGlmIChpczxTdHlsZVBlbmRpbmdJ
bWFnZT4obV9pbWFnZS5nZXQoKSkpCisgICAgICAgIGRvd25jYXN0PFN0eWxlUGVuZGluZ0ltYWdl
PigqbV9pbWFnZSkuZGV0YWNoRnJvbUNTU1ZhbHVlKCk7CiB9CiAKIENTU0N1cnNvckltYWdlVmFs
dWU6On5DU1NDdXJzb3JJbWFnZVZhbHVlKCkKQEAgLTE2MCw4ICsxNjAsOCBAQCBTdHlsZUltYWdl
KiBDU1NDdXJzb3JJbWFnZVZhbHVlOjpjYWNoZWRJbWFnZShDYWNoZWRSZXNvdXJjZUxvYWRlciog
bG9hZGVyKQogICAgICAgICB9CiAgICAgfQogCi0gICAgaWYgKG1faW1hZ2UgJiYgbV9pbWFnZS0+
aXNDYWNoZWRJbWFnZSgpKQotICAgICAgICByZXR1cm4gdG9TdHlsZUNhY2hlZEltYWdlKG1faW1h
Z2UuZ2V0KCkpOworICAgIGlmIChpczxTdHlsZUNhY2hlZEltYWdlPihtX2ltYWdlLmdldCgpKSkK
KyAgICAgICAgcmV0dXJuIGRvd25jYXN0PFN0eWxlQ2FjaGVkSW1hZ2U+KG1faW1hZ2UuZ2V0KCkp
OwogCiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CkBAIC0xOTMsOSArMTkzLDkgQEAgYm9vbCBDU1ND
dXJzb3JJbWFnZVZhbHVlOjppc1NWR0N1cnNvcigpIGNvbnN0CiAKIFN0cmluZyBDU1NDdXJzb3JJ
bWFnZVZhbHVlOjpjYWNoZWRJbWFnZVVSTCgpCiB7Ci0gICAgaWYgKCFtX2ltYWdlIHx8ICFtX2lt
YWdlLT5pc0NhY2hlZEltYWdlKCkpCisgICAgaWYgKCFpczxTdHlsZUNhY2hlZEltYWdlPihtX2lt
YWdlLmdldCgpKSkKICAgICAgICAgcmV0dXJuIFN0cmluZygpOwotICAgIHJldHVybiB0b1N0eWxl
Q2FjaGVkSW1hZ2UoKm1faW1hZ2UpLmNhY2hlZEltYWdlKCktPnVybCgpOworICAgIHJldHVybiBk
b3duY2FzdDxTdHlsZUNhY2hlZEltYWdlPigqbV9pbWFnZSkuY2FjaGVkSW1hZ2UoKS0+dXJsKCk7
CiB9CiAKIHZvaWQgQ1NTQ3Vyc29ySW1hZ2VWYWx1ZTo6Y2xlYXJDYWNoZWRJbWFnZSgpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTSW1hZ2VTZXRWYWx1ZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTSW1hZ2VTZXRWYWx1ZS5jcHAKaW5kZXggMDdhY2I3NzQ5YzNiMDU0N2Uz
MDBjNTM2OTAxZjFhMGI1NDlhMDhlMS4uMjAxMmY1YjViNzI0MzIxYTIxMjY2ZGFlNjFlZGJiNDcw
YzQ5YjA5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ltYWdlU2V0VmFsdWUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NJbWFnZVNldFZhbHVlLmNwcApAQCAtNTIs
MTYgKzUyLDE2IEBAIENTU0ltYWdlU2V0VmFsdWU6OkNTU0ltYWdlU2V0VmFsdWUoKQogCiBpbmxp
bmUgdm9pZCBDU1NJbWFnZVNldFZhbHVlOjpkZXRhY2hQZW5kaW5nSW1hZ2UoKQogewotICAgIGlm
IChtX2ltYWdlU2V0ICYmIG1faW1hZ2VTZXQtPmlzUGVuZGluZ0ltYWdlKCkpCi0gICAgICAgIHRv
U3R5bGVQZW5kaW5nSW1hZ2UoKm1faW1hZ2VTZXQpLmRldGFjaEZyb21DU1NWYWx1ZSgpOworICAg
IGlmIChpczxTdHlsZVBlbmRpbmdJbWFnZT4obV9pbWFnZVNldC5nZXQoKSkpCisgICAgICAgIGRv
d25jYXN0PFN0eWxlUGVuZGluZ0ltYWdlPigqbV9pbWFnZVNldCkuZGV0YWNoRnJvbUNTU1ZhbHVl
KCk7CiB9CiAKIENTU0ltYWdlU2V0VmFsdWU6On5DU1NJbWFnZVNldFZhbHVlKCkKIHsKICAgICBk
ZXRhY2hQZW5kaW5nSW1hZ2UoKTsKIAotICAgIGlmIChtX2ltYWdlU2V0ICYmIG1faW1hZ2VTZXQt
PmlzQ2FjaGVkSW1hZ2VTZXQoKSkKLSAgICAgICAgdG9TdHlsZUNhY2hlZEltYWdlU2V0KCptX2lt
YWdlU2V0KS5jbGVhckltYWdlU2V0VmFsdWUoKTsKKyAgICBpZiAoaXM8U3R5bGVDYWNoZWRJbWFn
ZVNldD4obV9pbWFnZVNldC5nZXQoKSkpCisgICAgICAgIGRvd25jYXN0PFN0eWxlQ2FjaGVkSW1h
Z2VTZXQ+KCptX2ltYWdlU2V0KS5jbGVhckltYWdlU2V0VmFsdWUoKTsKIH0KIAogdm9pZCBDU1NJ
bWFnZVNldFZhbHVlOjpmaWxsSW1hZ2VTZXQoKQpAQCAtMTI5LDcgKzEyOSw3IEBAIFN0eWxlQ2Fj
aGVkSW1hZ2VTZXQqIENTU0ltYWdlU2V0VmFsdWU6OmNhY2hlZEltYWdlU2V0KENhY2hlZFJlc291
cmNlTG9hZGVyKiBsb2FkCiAgICAgICAgIH0KICAgICB9CiAKLSAgICByZXR1cm4gKG1faW1hZ2VT
ZXQgJiYgbV9pbWFnZVNldC0+aXNDYWNoZWRJbWFnZVNldCgpKSA/IHRvU3R5bGVDYWNoZWRJbWFn
ZVNldChtX2ltYWdlU2V0LmdldCgpKSA6IG51bGxwdHI7CisgICAgcmV0dXJuIGlzPFN0eWxlQ2Fj
aGVkSW1hZ2VTZXQ+KG1faW1hZ2VTZXQuZ2V0KCkpID8gZG93bmNhc3Q8U3R5bGVDYWNoZWRJbWFn
ZVNldD4obV9pbWFnZVNldC5nZXQoKSkgOiBudWxscHRyOwogfQogCiBTdHlsZUNhY2hlZEltYWdl
U2V0KiBDU1NJbWFnZVNldFZhbHVlOjpjYWNoZWRJbWFnZVNldChDYWNoZWRSZXNvdXJjZUxvYWRl
ciogbG9hZGVyKQpAQCAtMTg4LDkgKzE4OCw5IEBAIFN0cmluZyBDU1NJbWFnZVNldFZhbHVlOjpj
dXN0b21DU1NUZXh0KCkgY29uc3QKIAogYm9vbCBDU1NJbWFnZVNldFZhbHVlOjpoYXNGYWlsZWRP
ckNhbmNlbGVkU3VicmVzb3VyY2VzKCkgY29uc3QKIHsKLSAgICBpZiAoIW1faW1hZ2VTZXQgfHwg
IW1faW1hZ2VTZXQtPmlzQ2FjaGVkSW1hZ2VTZXQoKSkKKyAgICBpZiAoIWlzPFN0eWxlQ2FjaGVk
SW1hZ2VTZXQ+KG1faW1hZ2VTZXQuZ2V0KCkpKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAg
Q2FjaGVkUmVzb3VyY2UqIGNhY2hlZFJlc291cmNlID0gdG9TdHlsZUNhY2hlZEltYWdlU2V0KCpt
X2ltYWdlU2V0KS5jYWNoZWRJbWFnZSgpOworICAgIENhY2hlZEltYWdlKiBjYWNoZWRSZXNvdXJj
ZSA9IGRvd25jYXN0PFN0eWxlQ2FjaGVkSW1hZ2VTZXQ+KCptX2ltYWdlU2V0KS5jYWNoZWRJbWFn
ZSgpOwogICAgIGlmICghY2FjaGVkUmVzb3VyY2UpCiAgICAgICAgIHJldHVybiB0cnVlOwogICAg
IHJldHVybiBjYWNoZWRSZXNvdXJjZS0+bG9hZEZhaWxlZE9yQ2FuY2VsZWQoKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NJbWFnZVZhbHVlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NJbWFnZVZhbHVlLmNwcAppbmRleCA3NTA3NWM5OGVlZGM0ZTFkZjVjMjU5ODM2ODMz
OGY5ODU5ZWM1NzEwLi42NWNmM2YzNjQ1YWZjNGI0MzFlMzU2NzFiMGJlODE0OTM4ZDg2ODgzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTSW1hZ2VWYWx1ZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvY3NzL0NTU0ltYWdlVmFsdWUuY3BwCkBAIC01NCw4ICs1NCw4IEBAIENTU0lt
YWdlVmFsdWU6OkNTU0ltYWdlVmFsdWUoY29uc3QgU3RyaW5nJiB1cmwsIFN0eWxlSW1hZ2UqIGlt
YWdlKQogCiBpbmxpbmUgdm9pZCBDU1NJbWFnZVZhbHVlOjpkZXRhY2hQZW5kaW5nSW1hZ2UoKQog
ewotICAgIGlmIChtX2ltYWdlICYmIG1faW1hZ2UtPmlzUGVuZGluZ0ltYWdlKCkpCi0gICAgICAg
IHRvU3R5bGVQZW5kaW5nSW1hZ2UoKm1faW1hZ2UpLmRldGFjaEZyb21DU1NWYWx1ZSgpOworICAg
IGlmIChpczxTdHlsZVBlbmRpbmdJbWFnZT4obV9pbWFnZS5nZXQoKSkpCisgICAgICAgIGRvd25j
YXN0PFN0eWxlUGVuZGluZ0ltYWdlPigqbV9pbWFnZSkuZGV0YWNoRnJvbUNTU1ZhbHVlKCk7CiB9
CiAKIENTU0ltYWdlVmFsdWU6On5DU1NJbWFnZVZhbHVlKCkKQEAgLTkzLDcgKzkzLDcgQEAgU3R5
bGVDYWNoZWRJbWFnZSogQ1NTSW1hZ2VWYWx1ZTo6Y2FjaGVkSW1hZ2UoQ2FjaGVkUmVzb3VyY2VM
b2FkZXIqIGxvYWRlciwgY29uc3QKICAgICAgICAgfQogICAgIH0KIAotICAgIHJldHVybiAobV9p
bWFnZSAmJiBtX2ltYWdlLT5pc0NhY2hlZEltYWdlKCkpID8gdG9TdHlsZUNhY2hlZEltYWdlKG1f
aW1hZ2UuZ2V0KCkpIDogbnVsbHB0cjsKKyAgICByZXR1cm4gaXM8U3R5bGVDYWNoZWRJbWFnZT4o
bV9pbWFnZS5nZXQoKSkgPyBkb3duY2FzdDxTdHlsZUNhY2hlZEltYWdlPihtX2ltYWdlLmdldCgp
KSA6IG51bGxwdHI7CiB9CiAKIFN0eWxlQ2FjaGVkSW1hZ2UqIENTU0ltYWdlVmFsdWU6OmNhY2hl
ZEltYWdlKENhY2hlZFJlc291cmNlTG9hZGVyKiBsb2FkZXIpCkBAIC0xMDMsOSArMTAzLDkgQEAg
U3R5bGVDYWNoZWRJbWFnZSogQ1NTSW1hZ2VWYWx1ZTo6Y2FjaGVkSW1hZ2UoQ2FjaGVkUmVzb3Vy
Y2VMb2FkZXIqIGxvYWRlcikKIAogYm9vbCBDU1NJbWFnZVZhbHVlOjpoYXNGYWlsZWRPckNhbmNl
bGVkU3VicmVzb3VyY2VzKCkgY29uc3QKIHsKLSAgICBpZiAoIW1faW1hZ2UgfHwgIW1faW1hZ2Ut
PmlzQ2FjaGVkSW1hZ2UoKSkKKyAgICBpZiAoIWlzPFN0eWxlQ2FjaGVkSW1hZ2U+KG1faW1hZ2Uu
Z2V0KCkpKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgQ2FjaGVkUmVzb3VyY2UqIGNhY2hl
ZFJlc291cmNlID0gdG9TdHlsZUNhY2hlZEltYWdlKCptX2ltYWdlKS5jYWNoZWRJbWFnZSgpOwor
ICAgIENhY2hlZFJlc291cmNlKiBjYWNoZWRSZXNvdXJjZSA9IGRvd25jYXN0PFN0eWxlQ2FjaGVk
SW1hZ2U+KCptX2ltYWdlKS5jYWNoZWRJbWFnZSgpOwogICAgIGlmICghY2FjaGVkUmVzb3VyY2Up
CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIHJldHVybiBjYWNoZWRSZXNvdXJjZS0+bG9hZEZh
aWxlZE9yQ2FuY2VsZWQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJl
c29sdmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmNwcAppbmRleCA1
NzEzYzlmYzllNmY2NTk0MzllYzRlYzJmNGU1MDE1N2RkMjU4NzEyLi4wZjQyNDE3ZDU2MmI2ZDQx
Nzg1MWU5MGY2NjYyYmRjOGRjY2Y4NWEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3Mv
U3R5bGVSZXNvbHZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIu
Y3BwCkBAIC0zNjgwLDEwICszNjgwLDEwIEBAIHZvaWQgU3R5bGVSZXNvbHZlcjo6bG9hZFBlbmRp
bmdTaGFwZUltYWdlKFNoYXBlVmFsdWUqIHNoYXBlVmFsdWUpCiAgICAgICAgIHJldHVybjsKIAog
ICAgIFN0eWxlSW1hZ2UqIGltYWdlID0gc2hhcGVWYWx1ZS0+aW1hZ2UoKTsKLSAgICBpZiAoIWlt
YWdlIHx8ICFpbWFnZS0+aXNQZW5kaW5nSW1hZ2UoKSkKKyAgICBpZiAoIWlzPFN0eWxlUGVuZGlu
Z0ltYWdlPihpbWFnZSkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGF1dG8mIHBlbmRpbmdJbWFn
ZSA9IHRvU3R5bGVQZW5kaW5nSW1hZ2UoKmltYWdlKTsKKyAgICBhdXRvJiBwZW5kaW5nSW1hZ2Ug
PSBkb3duY2FzdDxTdHlsZVBlbmRpbmdJbWFnZT4oKmltYWdlKTsKIAogICAgIFJlc291cmNlTG9h
ZGVyT3B0aW9ucyBvcHRpb25zID0gQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OmRlZmF1bHRDYWNoZWRS
ZXNvdXJjZU9wdGlvbnMoKTsKICAgICBvcHRpb25zLnNldFJlcXVlc3RPcmlnaW5Qb2xpY3koUG90
ZW50aWFsbHlDcm9zc09yaWdpbkVuYWJsZWQpOwpAQCAtMzcwNSw5ICszNzA1LDkgQEAgdm9pZCBT
dHlsZVJlc29sdmVyOjpsb2FkUGVuZGluZ0ltYWdlcygpCiAgICAgICAgIHN3aXRjaCAoY3VycmVu
dFByb3BlcnR5KSB7CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kSW1hZ2U6IHsK
ICAgICAgICAgICAgIGZvciAoRmlsbExheWVyKiBiYWNrZ3JvdW5kTGF5ZXIgPSBtX3N0YXRlLnN0
eWxlKCktPmFjY2Vzc0JhY2tncm91bmRMYXllcnMoKTsgYmFja2dyb3VuZExheWVyOyBiYWNrZ3Jv
dW5kTGF5ZXIgPSBiYWNrZ3JvdW5kTGF5ZXItPm5leHQoKSkgewotICAgICAgICAgICAgICAgIGF1
dG8gc3R5bGVJbWFnZSA9IGJhY2tncm91bmRMYXllci0+aW1hZ2UoKTsKLSAgICAgICAgICAgICAg
ICBpZiAoc3R5bGVJbWFnZSAmJiBzdHlsZUltYWdlLT5pc1BlbmRpbmdJbWFnZSgpKQotICAgICAg
ICAgICAgICAgICAgICBiYWNrZ3JvdW5kTGF5ZXItPnNldEltYWdlKGxvYWRQZW5kaW5nSW1hZ2Uo
dG9TdHlsZVBlbmRpbmdJbWFnZSgqc3R5bGVJbWFnZSkpKTsKKyAgICAgICAgICAgICAgICBhdXRv
KiBzdHlsZUltYWdlID0gYmFja2dyb3VuZExheWVyLT5pbWFnZSgpOworICAgICAgICAgICAgICAg
IGlmIChpczxTdHlsZVBlbmRpbmdJbWFnZT4oc3R5bGVJbWFnZSkpCisgICAgICAgICAgICAgICAg
ICAgIGJhY2tncm91bmRMYXllci0+c2V0SW1hZ2UobG9hZFBlbmRpbmdJbWFnZShkb3duY2FzdDxT
dHlsZVBlbmRpbmdJbWFnZT4oKnN0eWxlSW1hZ2UpKSk7CiAgICAgICAgICAgICB9CiAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgfQpAQCAtMzcxNSw5ICszNzE1LDggQEAgdm9pZCBTdHlsZVJl
c29sdmVyOjpsb2FkUGVuZGluZ0ltYWdlcygpCiAgICAgICAgICAgICBmb3IgKENvbnRlbnREYXRh
KiBjb250ZW50RGF0YSA9IGNvbnN0X2Nhc3Q8Q29udGVudERhdGEqPihtX3N0YXRlLnN0eWxlKCkt
PmNvbnRlbnREYXRhKCkpOyBjb250ZW50RGF0YTsgY29udGVudERhdGEgPSBjb250ZW50RGF0YS0+
bmV4dCgpKSB7CiAgICAgICAgICAgICAgICAgaWYgKGlzPEltYWdlQ29udGVudERhdGE+KCpjb250
ZW50RGF0YSkpIHsKICAgICAgICAgICAgICAgICAgICAgYXV0byYgc3R5bGVJbWFnZSA9IGRvd25j
YXN0PEltYWdlQ29udGVudERhdGE+KCpjb250ZW50RGF0YSkuaW1hZ2UoKTsKLSAgICAgICAgICAg
ICAgICAgICAgaWYgKHN0eWxlSW1hZ2UuaXNQZW5kaW5nSW1hZ2UoKSkgewotICAgICAgICAgICAg
ICAgICAgICAgICAgUmVmUHRyPFN0eWxlSW1hZ2U+IGxvYWRlZEltYWdlID0gbG9hZFBlbmRpbmdJ
bWFnZSh0b1N0eWxlUGVuZGluZ0ltYWdlKHN0eWxlSW1hZ2UpKTsKLSAgICAgICAgICAgICAgICAg
ICAgICAgIGlmIChsb2FkZWRJbWFnZSkKKyAgICAgICAgICAgICAgICAgICAgaWYgKGlzPFN0eWxl
UGVuZGluZ0ltYWdlPihzdHlsZUltYWdlKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgaWYg
KFJlZlB0cjxTdHlsZUltYWdlPiBsb2FkZWRJbWFnZSA9IGxvYWRQZW5kaW5nSW1hZ2UoZG93bmNh
c3Q8U3R5bGVQZW5kaW5nSW1hZ2U+KHN0eWxlSW1hZ2UpKSkKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBkb3duY2FzdDxJbWFnZUNvbnRlbnREYXRhPigqY29udGVudERhdGEpLnNldEltYWdl
KGxvYWRlZEltYWdlLnJlbGVhc2UoKSk7CiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAg
ICAgICAgICB9CkBAIC0zNzI4LDQ3ICszNzI3LDQ3IEBAIHZvaWQgU3R5bGVSZXNvbHZlcjo6bG9h
ZFBlbmRpbmdJbWFnZXMoKQogICAgICAgICAgICAgaWYgKEN1cnNvckxpc3QqIGN1cnNvckxpc3Qg
PSBtX3N0YXRlLnN0eWxlKCktPmN1cnNvcnMoKSkgewogICAgICAgICAgICAgICAgIGZvciAoc2l6
ZV90IGkgPSAwOyBpIDwgY3Vyc29yTGlzdC0+c2l6ZSgpOyArK2kpIHsKICAgICAgICAgICAgICAg
ICAgICAgQ3Vyc29yRGF0YSYgY3VycmVudEN1cnNvciA9IGN1cnNvckxpc3QtPmF0KGkpOwotICAg
ICAgICAgICAgICAgICAgICBhdXRvIHN0eWxlSW1hZ2UgPSBjdXJyZW50Q3Vyc29yLmltYWdlKCk7
Ci0gICAgICAgICAgICAgICAgICAgIGlmIChzdHlsZUltYWdlICYmIHN0eWxlSW1hZ2UtPmlzUGVu
ZGluZ0ltYWdlKCkpCi0gICAgICAgICAgICAgICAgICAgICAgICBjdXJyZW50Q3Vyc29yLnNldElt
YWdlKGxvYWRQZW5kaW5nSW1hZ2UodG9TdHlsZVBlbmRpbmdJbWFnZSgqc3R5bGVJbWFnZSkpKTsK
KyAgICAgICAgICAgICAgICAgICAgYXV0byogc3R5bGVJbWFnZSA9IGN1cnJlbnRDdXJzb3IuaW1h
Z2UoKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGlzPFN0eWxlUGVuZGluZ0ltYWdlPihzdHls
ZUltYWdlKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRDdXJzb3Iuc2V0SW1hZ2Uo
bG9hZFBlbmRpbmdJbWFnZShkb3duY2FzdDxTdHlsZVBlbmRpbmdJbWFnZT4oKnN0eWxlSW1hZ2Up
KSk7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eUxpc3RTdHlsZUltYWdlOiB7Ci0g
ICAgICAgICAgICBhdXRvIHN0eWxlSW1hZ2UgPSBtX3N0YXRlLnN0eWxlKCktPmxpc3RTdHlsZUlt
YWdlKCk7Ci0gICAgICAgICAgICBpZiAoc3R5bGVJbWFnZSAmJiBzdHlsZUltYWdlLT5pc1BlbmRp
bmdJbWFnZSgpKQotICAgICAgICAgICAgICAgIG1fc3RhdGUuc3R5bGUoKS0+c2V0TGlzdFN0eWxl
SW1hZ2UobG9hZFBlbmRpbmdJbWFnZSh0b1N0eWxlUGVuZGluZ0ltYWdlKCpzdHlsZUltYWdlKSkp
OworICAgICAgICAgICAgYXV0byogc3R5bGVJbWFnZSA9IG1fc3RhdGUuc3R5bGUoKS0+bGlzdFN0
eWxlSW1hZ2UoKTsKKyAgICAgICAgICAgIGlmIChpczxTdHlsZVBlbmRpbmdJbWFnZT4oc3R5bGVJ
bWFnZSkpCisgICAgICAgICAgICAgICAgbV9zdGF0ZS5zdHlsZSgpLT5zZXRMaXN0U3R5bGVJbWFn
ZShsb2FkUGVuZGluZ0ltYWdlKGRvd25jYXN0PFN0eWxlUGVuZGluZ0ltYWdlPigqc3R5bGVJbWFn
ZSkpKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgQ1NTUHJv
cGVydHlCb3JkZXJJbWFnZVNvdXJjZTogewotICAgICAgICAgICAgYXV0byBzdHlsZUltYWdlID0g
bV9zdGF0ZS5zdHlsZSgpLT5ib3JkZXJJbWFnZVNvdXJjZSgpOwotICAgICAgICAgICAgaWYgKHN0
eWxlSW1hZ2UgJiYgc3R5bGVJbWFnZS0+aXNQZW5kaW5nSW1hZ2UoKSkKLSAgICAgICAgICAgICAg
ICBtX3N0YXRlLnN0eWxlKCktPnNldEJvcmRlckltYWdlU291cmNlKGxvYWRQZW5kaW5nSW1hZ2Uo
dG9TdHlsZVBlbmRpbmdJbWFnZSgqc3R5bGVJbWFnZSkpKTsKKyAgICAgICAgICAgIGF1dG8qIHN0
eWxlSW1hZ2UgPSBtX3N0YXRlLnN0eWxlKCktPmJvcmRlckltYWdlU291cmNlKCk7CisgICAgICAg
ICAgICBpZiAoaXM8U3R5bGVQZW5kaW5nSW1hZ2U+KHN0eWxlSW1hZ2UpKQorICAgICAgICAgICAg
ICAgIG1fc3RhdGUuc3R5bGUoKS0+c2V0Qm9yZGVySW1hZ2VTb3VyY2UobG9hZFBlbmRpbmdJbWFn
ZShkb3duY2FzdDxTdHlsZVBlbmRpbmdJbWFnZT4oKnN0eWxlSW1hZ2UpKSk7CiAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Qm94UmVm
bGVjdDogewogICAgICAgICAgICAgaWYgKFN0eWxlUmVmbGVjdGlvbiogcmVmbGVjdGlvbiA9IG1f
c3RhdGUuc3R5bGUoKS0+Ym94UmVmbGVjdCgpKSB7CiAgICAgICAgICAgICAgICAgY29uc3QgTmlu
ZVBpZWNlSW1hZ2UmIG1hc2tJbWFnZSA9IHJlZmxlY3Rpb24tPm1hc2soKTsKLSAgICAgICAgICAg
ICAgICBhdXRvIHN0eWxlSW1hZ2UgPSBtYXNrSW1hZ2UuaW1hZ2UoKTsKLSAgICAgICAgICAgICAg
ICBpZiAoc3R5bGVJbWFnZSAmJiBzdHlsZUltYWdlLT5pc1BlbmRpbmdJbWFnZSgpKSB7Ci0gICAg
ICAgICAgICAgICAgICAgIFJlZlB0cjxTdHlsZUltYWdlPiBsb2FkZWRJbWFnZSA9IGxvYWRQZW5k
aW5nSW1hZ2UodG9TdHlsZVBlbmRpbmdJbWFnZSgqc3R5bGVJbWFnZSkpOworICAgICAgICAgICAg
ICAgIGF1dG8qIHN0eWxlSW1hZ2UgPSBtYXNrSW1hZ2UuaW1hZ2UoKTsKKyAgICAgICAgICAgICAg
ICBpZiAoaXM8U3R5bGVQZW5kaW5nSW1hZ2U+KHN0eWxlSW1hZ2UpKSB7CisgICAgICAgICAgICAg
ICAgICAgIFJlZlB0cjxTdHlsZUltYWdlPiBsb2FkZWRJbWFnZSA9IGxvYWRQZW5kaW5nSW1hZ2Uo
ZG93bmNhc3Q8U3R5bGVQZW5kaW5nSW1hZ2U+KCpzdHlsZUltYWdlKSk7CiAgICAgICAgICAgICAg
ICAgICAgIHJlZmxlY3Rpb24tPnNldE1hc2soTmluZVBpZWNlSW1hZ2UobG9hZGVkSW1hZ2UucmVs
ZWFzZSgpLCBtYXNrSW1hZ2UuaW1hZ2VTbGljZXMoKSwgbWFza0ltYWdlLmZpbGwoKSwgbWFza0lt
YWdlLmJvcmRlclNsaWNlcygpLCBtYXNrSW1hZ2Uub3V0c2V0KCksIG1hc2tJbWFnZS5ob3Jpem9u
dGFsUnVsZSgpLCBtYXNrSW1hZ2UudmVydGljYWxSdWxlKCkpKTsKICAgICAgICAgICAgICAgICB9
CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBj
YXNlIENTU1Byb3BlcnR5V2Via2l0TWFza0JveEltYWdlU291cmNlOiB7Ci0gICAgICAgICAgICBh
dXRvIHN0eWxlSW1hZ2UgPSBtX3N0YXRlLnN0eWxlKCktPm1hc2tCb3hJbWFnZVNvdXJjZSgpOwot
ICAgICAgICAgICAgaWYgKHN0eWxlSW1hZ2UgJiYgc3R5bGVJbWFnZS0+aXNQZW5kaW5nSW1hZ2Uo
KSkKLSAgICAgICAgICAgICAgICBtX3N0YXRlLnN0eWxlKCktPnNldE1hc2tCb3hJbWFnZVNvdXJj
ZShsb2FkUGVuZGluZ0ltYWdlKHRvU3R5bGVQZW5kaW5nSW1hZ2UoKnN0eWxlSW1hZ2UpKSk7Cisg
ICAgICAgICAgICBhdXRvKiBzdHlsZUltYWdlID0gbV9zdGF0ZS5zdHlsZSgpLT5tYXNrQm94SW1h
Z2VTb3VyY2UoKTsKKyAgICAgICAgICAgIGlmIChpczxTdHlsZVBlbmRpbmdJbWFnZT4oc3R5bGVJ
bWFnZSkpCisgICAgICAgICAgICAgICAgbV9zdGF0ZS5zdHlsZSgpLT5zZXRNYXNrQm94SW1hZ2VT
b3VyY2UobG9hZFBlbmRpbmdJbWFnZShkb3duY2FzdDxTdHlsZVBlbmRpbmdJbWFnZT4oKnN0eWxl
SW1hZ2UpKSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNlIENT
U1Byb3BlcnR5V2Via2l0TWFza0ltYWdlOiB7CiAgICAgICAgICAgICBmb3IgKEZpbGxMYXllciog
bWFza0xheWVyID0gbV9zdGF0ZS5zdHlsZSgpLT5hY2Nlc3NNYXNrTGF5ZXJzKCk7IG1hc2tMYXll
cjsgbWFza0xheWVyID0gbWFza0xheWVyLT5uZXh0KCkpIHsKLSAgICAgICAgICAgICAgICBhdXRv
IHN0eWxlSW1hZ2UgPSBtYXNrTGF5ZXItPmltYWdlKCk7Ci0gICAgICAgICAgICAgICAgaWYgKHN0
eWxlSW1hZ2UgJiYgc3R5bGVJbWFnZS0+aXNQZW5kaW5nSW1hZ2UoKSkKLSAgICAgICAgICAgICAg
ICAgICAgbWFza0xheWVyLT5zZXRJbWFnZShsb2FkUGVuZGluZ0ltYWdlKHRvU3R5bGVQZW5kaW5n
SW1hZ2UoKnN0eWxlSW1hZ2UpKSk7CisgICAgICAgICAgICAgICAgYXV0byogc3R5bGVJbWFnZSA9
IG1hc2tMYXllci0+aW1hZ2UoKTsKKyAgICAgICAgICAgICAgICBpZiAoaXM8U3R5bGVQZW5kaW5n
SW1hZ2U+KHN0eWxlSW1hZ2UpKQorICAgICAgICAgICAgICAgICAgICBtYXNrTGF5ZXItPnNldElt
YWdlKGxvYWRQZW5kaW5nSW1hZ2UoZG93bmNhc3Q8U3R5bGVQZW5kaW5nSW1hZ2U+KCpzdHlsZUlt
YWdlKSkpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZVNlcmlhbGl6ZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9QYWdlU2VyaWFsaXplci5jcHAKaW5kZXggMTk0NmI5MzZiM2E3MzJkM2Qz
MWIyOTBiMDFlNGJjNTEzMTlkNGYzMy4uMjU4MjgwNjBlNzYwY2E0ZDM2NTBiMDA1ZDVlODI4NDI4
NjMyYmYxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlU2VyaWFsaXplci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlU2VyaWFsaXplci5jcHAKQEAgLTMzMywx
MyArMzMzLDEzIEBAIHZvaWQgUGFnZVNlcmlhbGl6ZXI6OnJldHJpZXZlUmVzb3VyY2VzRm9yUHJv
cGVydGllcyhjb25zdCBTdHlsZVByb3BlcnRpZXMqIHN0eWxlCiAKICAgICAgICAgU3R5bGVJbWFn
ZSogc3R5bGVJbWFnZSA9IGRvd25jYXN0PENTU0ltYWdlVmFsdWU+KCpjc3NWYWx1ZSkuY2FjaGVk
T3JQZW5kaW5nSW1hZ2UoKTsKICAgICAgICAgLy8gTm9uIGNhY2hlZC1pbWFnZXMgYXJlIGp1c3Qg
cGxhY2UtaG9sZGVycyBhbmQgZG8gbm90IGNvbnRhaW4gZGF0YS4KLSAgICAgICAgaWYgKCFzdHls
ZUltYWdlIHx8ICFzdHlsZUltYWdlLT5pc0NhY2hlZEltYWdlKCkpCisgICAgICAgIGlmICghaXM8
U3R5bGVDYWNoZWRJbWFnZT4oc3R5bGVJbWFnZSkpCiAgICAgICAgICAgICBjb250aW51ZTsKIAot
ICAgICAgICBDYWNoZWRJbWFnZSogaW1hZ2UgPSB0b1N0eWxlQ2FjaGVkSW1hZ2Uoc3R5bGVJbWFn
ZSktPmNhY2hlZEltYWdlKCk7CisgICAgICAgIENhY2hlZEltYWdlKiBpbWFnZSA9IGRvd25jYXN0
PFN0eWxlQ2FjaGVkSW1hZ2U+KCpzdHlsZUltYWdlKS5jYWNoZWRJbWFnZSgpOwogCiAgICAgICAg
IFVSTCB1cmwgPSBkb2N1bWVudC0+Y29tcGxldGVVUkwoaW1hZ2UtPnVybCgpKTsKLSAgICAgICAg
YWRkSW1hZ2VUb1Jlc291cmNlcyhpbWFnZSwgMCwgdXJsKTsKKyAgICAgICAgYWRkSW1hZ2VUb1Jl
c291cmNlcyhpbWFnZSwgbnVsbHB0ciwgdXJsKTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0NTU1Byb3BlcnR5QW5pbWF0aW9uLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0NTU1Byb3BlcnR5QW5pbWF0aW9uLmNwcAppbmRl
eCBkNDA4MjkxYjIyYjk0MTMzNDc0ODUwYjExNWI3NDhmOTI3YjU5MTU2Li4xMWE3MDA5YWQ0NDRi
NjIxZDM2ZTc1ZTlhN2NjY2MwYWFhMDQwZTBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL2FuaW1hdGlvbi9DU1NQcm9wZXJ0eUFuaW1hdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9hbmltYXRpb24vQ1NTUHJvcGVydHlBbmltYXRpb24uY3BwCkBAIC0yOTMsOSArMjkz
LDkgQEAgc3RhdGljIGlubGluZSBQYXNzUmVmUHRyPFN0eWxlSW1hZ2U+IGJsZW5kRnVuYyhjb25z
dCBBbmltYXRpb25CYXNlKiBhbmltLCBTdHlsZUkKICAgICAgICAgcmV0dXJuIHRvOwogCiAgICAg
Ly8gQW5pbWF0aW9uIGJldHdlZW4gdHdvIGdlbmVyYXRlZCBpbWFnZXMuIENyb3NzIGZhZGUgZm9y
IGFsbCBvdGhlciBjYXNlcy4KLSAgICBpZiAoZnJvbS0+aXNHZW5lcmF0ZWRJbWFnZSgpICYmIHRv
LT5pc0dlbmVyYXRlZEltYWdlKCkpIHsKLSAgICAgICAgQ1NTSW1hZ2VHZW5lcmF0b3JWYWx1ZSYg
ZnJvbUdlbmVyYXRlZCA9IHRvU3R5bGVHZW5lcmF0ZWRJbWFnZShmcm9tKS0+aW1hZ2VWYWx1ZSgp
OwotICAgICAgICBDU1NJbWFnZUdlbmVyYXRvclZhbHVlJiB0b0dlbmVyYXRlZCA9IHRvU3R5bGVH
ZW5lcmF0ZWRJbWFnZSh0byktPmltYWdlVmFsdWUoKTsKKyAgICBpZiAoaXM8U3R5bGVHZW5lcmF0
ZWRJbWFnZT4oKmZyb20pICYmIGlzPFN0eWxlR2VuZXJhdGVkSW1hZ2U+KCp0bykpIHsKKyAgICAg
ICAgQ1NTSW1hZ2VHZW5lcmF0b3JWYWx1ZSYgZnJvbUdlbmVyYXRlZCA9IGRvd25jYXN0PFN0eWxl
R2VuZXJhdGVkSW1hZ2U+KCpmcm9tKS5pbWFnZVZhbHVlKCk7CisgICAgICAgIENTU0ltYWdlR2Vu
ZXJhdG9yVmFsdWUmIHRvR2VuZXJhdGVkID0gZG93bmNhc3Q8U3R5bGVHZW5lcmF0ZWRJbWFnZT4o
KnRvKS5pbWFnZVZhbHVlKCk7CiAKICAgICAgICAgaWYgKGlzPENTU0ZpbHRlckltYWdlVmFsdWU+
KGZyb21HZW5lcmF0ZWQpICYmIGlzPENTU0ZpbHRlckltYWdlVmFsdWU+KHRvR2VuZXJhdGVkKSkg
ewogICAgICAgICAgICAgLy8gQW5pbWF0aW9uIG9mIGdlbmVyYXRlZCBpbWFnZXMganVzdCBwb3Nz
aWJsZSBpZiBpbnB1dCBpbWFnZXMgYXJlIGVxdWFsLgpAQCAtMzE1LDE5ICszMTUsMTkgQEAgc3Rh
dGljIGlubGluZSBQYXNzUmVmUHRyPFN0eWxlSW1hZ2U+IGJsZW5kRnVuYyhjb25zdCBBbmltYXRp
b25CYXNlKiBhbmltLCBTdHlsZUkKIAogICAgICAgICAvLyBGSVhNRTogQWRkIHN1cHBvcnQgZm9y
IGFuaW1hdGlvbiBiZXR3ZWVuIHR3byAqZ3JhZGllbnQoKSBmdW5jdGlvbnMuCiAgICAgICAgIC8v
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTk5NTYKLSAgICB9IGVs
c2UgaWYgKGZyb20tPmlzR2VuZXJhdGVkSW1hZ2UoKSAmJiB0by0+aXNDYWNoZWRJbWFnZSgpKSB7
Ci0gICAgICAgIENTU0ltYWdlR2VuZXJhdG9yVmFsdWUmIGZyb21HZW5lcmF0ZWQgPSB0b1N0eWxl
R2VuZXJhdGVkSW1hZ2UoZnJvbSktPmltYWdlVmFsdWUoKTsKKyAgICB9IGVsc2UgaWYgKGlzPFN0
eWxlR2VuZXJhdGVkSW1hZ2U+KCpmcm9tKSAmJiBpczxTdHlsZUNhY2hlZEltYWdlPigqdG8pKSB7
CisgICAgICAgIENTU0ltYWdlR2VuZXJhdG9yVmFsdWUmIGZyb21HZW5lcmF0ZWQgPSBkb3duY2Fz
dDxTdHlsZUdlbmVyYXRlZEltYWdlPigqZnJvbSkuaW1hZ2VWYWx1ZSgpOwogICAgICAgICBpZiAo
aXM8Q1NTRmlsdGVySW1hZ2VWYWx1ZT4oZnJvbUdlbmVyYXRlZCkpIHsKICAgICAgICAgICAgIENT
U0ZpbHRlckltYWdlVmFsdWUmIGZyb21GaWx0ZXIgPSBkb3duY2FzdDxDU1NGaWx0ZXJJbWFnZVZh
bHVlPihmcm9tR2VuZXJhdGVkKTsKLSAgICAgICAgICAgIGlmIChmcm9tRmlsdGVyLmNhY2hlZElt
YWdlKCkgJiYgdG9TdHlsZUNhY2hlZEltYWdlKHRvKS0+Y2FjaGVkSW1hZ2UoKSA9PSBmcm9tRmls
dGVyLmNhY2hlZEltYWdlKCkpCisgICAgICAgICAgICBpZiAoZnJvbUZpbHRlci5jYWNoZWRJbWFn
ZSgpICYmIGRvd25jYXN0PFN0eWxlQ2FjaGVkSW1hZ2U+KCp0bykuY2FjaGVkSW1hZ2UoKSA9PSBm
cm9tRmlsdGVyLmNhY2hlZEltYWdlKCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGJsZW5kRmls
dGVyKGFuaW0sIGZyb21GaWx0ZXIuY2FjaGVkSW1hZ2UoKSwgZnJvbUZpbHRlci5maWx0ZXJPcGVy
YXRpb25zKCksIEZpbHRlck9wZXJhdGlvbnMoKSwgcHJvZ3Jlc3MpOwogICAgICAgICB9CiAgICAg
ICAgIC8vIEZJWE1FOiBBZGQgaW50ZXJwb2xhdGlvbiBiZXR3ZWVuIGNyb3NzLWZhZGUgYW5kIGlt
YWdlIHNvdXJjZS4KLSAgICB9IGVsc2UgaWYgKGZyb20tPmlzQ2FjaGVkSW1hZ2UoKSAmJiB0by0+
aXNHZW5lcmF0ZWRJbWFnZSgpKSB7Ci0gICAgICAgIENTU0ltYWdlR2VuZXJhdG9yVmFsdWUmIHRv
R2VuZXJhdGVkID0gdG9TdHlsZUdlbmVyYXRlZEltYWdlKHRvKS0+aW1hZ2VWYWx1ZSgpOworICAg
IH0gZWxzZSBpZiAoaXM8U3R5bGVDYWNoZWRJbWFnZT4oKmZyb20pICYmIGlzPFN0eWxlR2VuZXJh
dGVkSW1hZ2U+KCp0bykpIHsKKyAgICAgICAgQ1NTSW1hZ2VHZW5lcmF0b3JWYWx1ZSYgdG9HZW5l
cmF0ZWQgPSBkb3duY2FzdDxTdHlsZUdlbmVyYXRlZEltYWdlPigqdG8pLmltYWdlVmFsdWUoKTsK
ICAgICAgICAgaWYgKGlzPENTU0ZpbHRlckltYWdlVmFsdWU+KHRvR2VuZXJhdGVkKSkgewogICAg
ICAgICAgICAgQ1NTRmlsdGVySW1hZ2VWYWx1ZSYgdG9GaWx0ZXIgPSBkb3duY2FzdDxDU1NGaWx0
ZXJJbWFnZVZhbHVlPih0b0dlbmVyYXRlZCk7Ci0gICAgICAgICAgICBpZiAodG9GaWx0ZXIuY2Fj
aGVkSW1hZ2UoKSAmJiB0b1N0eWxlQ2FjaGVkSW1hZ2UoZnJvbSktPmNhY2hlZEltYWdlKCkgPT0g
dG9GaWx0ZXIuY2FjaGVkSW1hZ2UoKSkgICAgIAorICAgICAgICAgICAgaWYgKHRvRmlsdGVyLmNh
Y2hlZEltYWdlKCkgJiYgZG93bmNhc3Q8U3R5bGVDYWNoZWRJbWFnZT4oKmZyb20pLmNhY2hlZElt
YWdlKCkgPT0gdG9GaWx0ZXIuY2FjaGVkSW1hZ2UoKSkKICAgICAgICAgICAgICAgICByZXR1cm4g
YmxlbmRGaWx0ZXIoYW5pbSwgdG9GaWx0ZXIuY2FjaGVkSW1hZ2UoKSwgRmlsdGVyT3BlcmF0aW9u
cygpLCB0b0ZpbHRlci5maWx0ZXJPcGVyYXRpb25zKCksIHByb2dyZXNzKTsKICAgICAgICAgfQog
ICAgICAgICAvLyBGSVhNRTogQWRkIGludGVycG9sYXRpb24gYmV0d2VlbiBpbWFnZSBzb3VyY2Ug
YW5kIGNyb3NzLWZhZGUuCkBAIC0zMzUsOCArMzM1LDggQEAgc3RhdGljIGlubGluZSBQYXNzUmVm
UHRyPFN0eWxlSW1hZ2U+IGJsZW5kRnVuYyhjb25zdCBBbmltYXRpb25CYXNlKiBhbmltLCBTdHls
ZUkKIAogICAgIC8vIEZJWE1FOiBBZGQgc3VwcG9ydCBjcm9zcyBmYWRlIGJldHdlZW4gY2FjaGVk
IGFuZCBnZW5lcmF0ZWQgaW1hZ2VzLgogICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD03ODI5MwotICAgIGlmIChmcm9tLT5pc0NhY2hlZEltYWdlKCkgJiYgdG8t
PmlzQ2FjaGVkSW1hZ2UoKSkKLSAgICAgICAgcmV0dXJuIGNyb3NzZmFkZUJsZW5kKGFuaW0sIHRv
U3R5bGVDYWNoZWRJbWFnZShmcm9tKSwgdG9TdHlsZUNhY2hlZEltYWdlKHRvKSwgcHJvZ3Jlc3Mp
OworICAgIGlmIChpczxTdHlsZUNhY2hlZEltYWdlPigqZnJvbSkgJiYgaXM8U3R5bGVDYWNoZWRJ
bWFnZT4oKnRvKSkKKyAgICAgICAgcmV0dXJuIGNyb3NzZmFkZUJsZW5kKGFuaW0sIGRvd25jYXN0
PFN0eWxlQ2FjaGVkSW1hZ2U+KGZyb20pLCBkb3duY2FzdDxTdHlsZUNhY2hlZEltYWdlPih0byks
IHByb2dyZXNzKTsKIAogICAgIHJldHVybiB0bzsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZUNhY2hlZEltYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3R5bGUvU3R5bGVDYWNoZWRJbWFnZS5oCmluZGV4IDUyYzBjMGY1NWNjNWVjYzU1
NzE0ZWM2NjIxNTc4NDFkODhiMDVjNGIuLmU5YWNkNzgzYjUxYjU4MmRlMWNjNjE0NDk5ZGMyYzcy
YmYxZjVlNTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHls
ZUNhY2hlZEltYWdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxl
Q2FjaGVkSW1hZ2UuaApAQCAtNjQsNyArNjQsOCBAQCBwcml2YXRlOgogICAgIENhY2hlZFJlc291
cmNlSGFuZGxlPENhY2hlZEltYWdlPiBtX2ltYWdlOwogfTsKIAotU1RZTEVfSU1BR0VfVFlQRV9D
QVNUUyhTdHlsZUNhY2hlZEltYWdlLCBTdHlsZUltYWdlLCBpc0NhY2hlZEltYWdlKQorfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQogCi19Ci0jZW5kaWYKK1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNfU1RZ
TEVfSU1BR0UoU3R5bGVDYWNoZWRJbWFnZSwgaXNDYWNoZWRJbWFnZSkKKworI2VuZGlmIC8vIFN0
eWxlQ2FjaGVkSW1hZ2VfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0
eWxlL1N0eWxlQ2FjaGVkSW1hZ2VTZXQuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHls
ZS9TdHlsZUNhY2hlZEltYWdlU2V0LmgKaW5kZXggNDRjOWYzMDhhYTliMDM4NDE5NDMwNGU4NTQ4
MTg0ZjNjMTYzNDFjNi4uMGVjMGY4MDA0NjlkMmU4Y2JmMWY2NWE2ZmM2YmU2MjI5YWIzOTQ4YyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlQ2FjaGVkSW1h
Z2VTZXQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVDYWNoZWRJ
bWFnZVNldC5oCkBAIC04MywxMCArODMsMTAgQEAgcHJpdmF0ZToKICAgICBDU1NJbWFnZVNldFZh
bHVlKiBtX2ltYWdlU2V0VmFsdWU7IC8vIE5vdCByZXRhaW5lZDsgaXQgb3ducyB1cy4KIH07CiAK
LVNUWUxFX0lNQUdFX1RZUEVfQ0FTVFMoU3R5bGVDYWNoZWRJbWFnZVNldCwgU3R5bGVJbWFnZSwg
aXNDYWNoZWRJbWFnZVNldCkKLQogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCitTUEVDSUFMSVpF
X1RZUEVfVFJBSVRTX1NUWUxFX0lNQUdFKFN0eWxlQ2FjaGVkSW1hZ2VTZXQsIGlzQ2FjaGVkSW1h
Z2VTZXQpCisKICNlbmRpZiAvLyBFTkFCTEUoQ1NTX0lNQUdFX1NFVCkKIAogI2VuZGlmIC8vIFN0
eWxlQ2FjaGVkSW1hZ2VTZXRfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N0eWxlL1N0eWxlR2VuZXJhdGVkSW1hZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dHlsZS9TdHlsZUdlbmVyYXRlZEltYWdlLmgKaW5kZXggYjFjYTI3M2NhODU2ZTVjMWYxYTRjZWMz
YTA3OTk4MGVlYTBlMTBhMi4uMWRiZDIzOGRmMjhhODg3ZDg4ODc1NTFhMDRjNzM2MzRkZTEzMzI1
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlR2VuZXJh
dGVkSW1hZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVHZW5l
cmF0ZWRJbWFnZS5oCkBAIC02Myw3ICs2Myw4IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2ZpeGVk
U2l6ZTsKIH07CiAKLVNUWUxFX0lNQUdFX1RZUEVfQ0FTVFMoU3R5bGVHZW5lcmF0ZWRJbWFnZSwg
U3R5bGVJbWFnZSwgaXNHZW5lcmF0ZWRJbWFnZSkKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAot
fQotI2VuZGlmCitTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX1NUWUxFX0lNQUdFKFN0eWxlR2VuZXJh
dGVkSW1hZ2UsIGlzR2VuZXJhdGVkSW1hZ2UpCisKKyNlbmRpZiAvLyBTdHlsZUdlbmVyYXRlZElt
YWdlX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZUlt
YWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVJbWFnZS5oCmluZGV4
IGMwY2M3ZmNiNDhkZWIwODUwNmZhNjk5ZGM5MTBlNzk4YWQ2ZjJjZjUuLjIzNmYxYTIxOTljMjgz
YWQzMWY1NDNmOTczOTI5ZDk5ZTUyYzc2ZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdHlsZS9TdHlsZUltYWdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N0eWxlL1N0eWxlSW1hZ2UuaApAQCAtMzAsNiArMzAsNyBAQAogI2luY2x1ZGUgPHd0Zi9QYXNz
UmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvUmVm
UHRyLmg+CisjaW5jbHVkZSA8d3RmL1R5cGVDYXN0cy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKQEAgLTkyLDggKzkzLDExIEBAIHByb3RlY3RlZDoKICAgICBib29sIG1faXNDYWNoZWRJbWFn
ZVNldCA6IDE7CiB9OwogCi0jZGVmaW5lIFNUWUxFX0lNQUdFX1RZUEVfQ0FTVFMoVG9DbGFzc05h
bWUsIEZyb21DbGFzc05hbWUsIHByZWRpY2F0ZSkgXAotICAgIFRZUEVfQ0FTVFNfQkFTRShUb0Ns
YXNzTmFtZSwgRnJvbUNsYXNzTmFtZSwgc3R5bGVJbWFnZSwgc3R5bGVJbWFnZS0+cHJlZGljYXRl
KCksIHN0eWxlSW1hZ2UucHJlZGljYXRlKCkpCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKLX0K
LSNlbmRpZgorI2RlZmluZSBTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX1NUWUxFX0lNQUdFKFRvQ2xh
c3NOYW1lLCBwcmVkaWNhdGUpIFwKK1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNfQkVHSU4oV2ViQ29y
ZTo6VG9DbGFzc05hbWUpIFwKKyAgICBzdGF0aWMgYm9vbCBpc1R5cGUoY29uc3QgV2ViQ29yZTo6
U3R5bGVJbWFnZSYgaW1hZ2UpIHsgcmV0dXJuIGltYWdlLnByZWRpY2F0ZSgpOyB9IFwKK1NQRUNJ
QUxJWkVfVFlQRV9UUkFJVFNfRU5EKCkKKworI2VuZGlmIC8vIFN0eWxlSW1hZ2VfaApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlUGVuZGluZ0ltYWdlLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVQZW5kaW5nSW1hZ2UuaAppbmRl
eCA1OTlkYTA0N2FiNjNkNjQ4MmJhYTQ1NmViY2RiMDI4ZDI5M2RlZWE3Li41NjczYjA3OTdmOTNi
ZjQwNTdlZDc0Nzk5NTI0N2U0YzhiOGY1NDAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3R5bGUvU3R5bGVQZW5kaW5nSW1hZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3R5bGUvU3R5bGVQZW5kaW5nSW1hZ2UuaApAQCAtODYsOCArODYsOCBAQCBwcml2
YXRlOgogICAgIENTU1ZhbHVlKiBtX3ZhbHVlOyAvLyBOb3QgcmV0YWluZWQ7IGl0IG93bnMgdXMu
CiB9OwogCi1TVFlMRV9JTUFHRV9UWVBFX0NBU1RTKFN0eWxlUGVuZGluZ0ltYWdlLCBTdHlsZUlt
YWdlLCBpc1BlbmRpbmdJbWFnZSkKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAotfQorU1BFQ0lB
TElaRV9UWVBFX1RSQUlUU19TVFlMRV9JTUFHRShTdHlsZVBlbmRpbmdJbWFnZSwgaXNQZW5kaW5n
SW1hZ2UpCiAKLSNlbmRpZgorI2VuZGlmIC8vIFN0eWxlUGVuZGluZ0ltYWdlX2gK
</data>

          </attachment>
      

    </bug>

</bugzilla>