<?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>45055</bug_id>
          
          <creation_ts>2010-09-01 13:34:11 -0700</creation_ts>
          <short_desc>Move more code from RenderEmbeddedObject into the DOM</short_desc>
          <delta_ts>2010-09-02 21:09:14 -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>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Other</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>45049</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Eric Seidel (no email)">eric</reporter>
          <assigned_to name="Eric Seidel (no email)">eric</assigned_to>
          <cc>abarth</cc>
    
    <cc>commit-queue</cc>
    
    <cc>eric</cc>
    
    <cc>jamesr</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>272975</commentid>
    <comment_count>0</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-09-01 13:34:11 -0700</bug_when>
    <thetext>Move more code from RenderEmbeddedObject into the DOM</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>272977</commentid>
    <comment_count>1</comment_count>
      <attachid>66256</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-09-01 13:38:02 -0700</bug_when>
    <thetext>Created attachment 66256
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>273033</commentid>
    <comment_count>2</comment_count>
      <attachid>66256</attachid>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2010-09-01 14:42:09 -0700</bug_when>
    <thetext>Comment on attachment 66256
Patch

awesome.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>273337</commentid>
    <comment_count>3</comment_count>
      <attachid>66356</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-09-02 04:44:49 -0700</bug_when>
    <thetext>Created attachment 66356
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>273773</commentid>
    <comment_count>4</comment_count>
      <attachid>66356</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-09-02 21:04:56 -0700</bug_when>
    <thetext>Comment on attachment 66356
Patch for landing

Clearing flags on attachment: 66356

Committed r66709: &lt;http://trac.webkit.org/changeset/66709&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>273774</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-09-02 21:05:01 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>273776</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-09-02 21:09:14 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/66709 might have broken Qt Linux Release minimal, Qt Linux ARMv5 Release, and Qt Linux ARMv7 Release</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>66256</attachid>
            <date>2010-09-01 13:38:02 -0700</date>
            <delta_ts>2010-09-02 04:44:45 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-45055-20100901133800.patch</filename>
            <type>text/plain</type>
            <size>28358</size>
            <attacher name="Eric Seidel (no email)">eric</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
YmJmOGZmNjNjMTcxMDVkMjdlNWJiYTk4Y2I2MDMzMTI3YjUxMTE3My4uNTljZTMzYjMzYzlkNGZl
ZGZlM2FkZjYwNWRmOGQwNTY0MGM1NWFjNiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cK
KysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTIsNiArMiw1MSBAQAogCiAgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgogCisgICAgICAgIE1vdmUgbW9yZSBjb2RlIGZyb20gUmVu
ZGVyRW1iZWRkZWRPYmplY3QgaW50byB0aGUgRE9NCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD00NTA1NQorCisgICAgICAgIE5vIGxvZ2ljIGNoYW5nZXMg
aGVyZSwganVzdCB0YWtpbmcgdGhlIGNvZGUgd2hpY2gKKyAgICAgICAgSSByaXBwZWQgb3V0IG9m
IFJlbmRlckVtYmVkZGVkT2JqZWN0Ojp1cGRhdGVXaWRnZXQKKyAgICAgICAgaW50byBzdGF0aWMg
bWV0aG9kcyBiZWZvcmUgYW5kIG1vdmluZyBpdCBpbnRvCisgICAgICAgIHRoZSBhcHBsaWNhYmxl
IERPTSBjbGFzc2VzLgorCisgICAgICAgIEhUTUxPYmplY3RFbGVtZW50OjpwYXJhbWV0ZXJzRm9y
UGx1Z2luIGRvZXMgdG9vIG11Y2gKKyAgICAgICAgYnV0IGluIG9yZGVyIHRvIGZpeCBpdCBJIG1h
eSBuZWVkIHRvIGFkZCBhIFBsdWdpblBhcmFtZXRlcnMKKyAgICAgICAgY2xhc3Mgc28gd2UgY2Fu
IGFzayB0aGluZ3MgYWJvdXQgdGhlIHBhcmFtZXRlcnMuIDxvYmplY3Q+CisgICAgICAgIG5lZWRz
IHRvIGdldCBtdWx0aXBsZSBiaXRzIG9mIGluZm9ybWF0aW9uIG91dCBvZiBpdHMgcGFyYW1ldGVy
cworICAgICAgICBhcnJheS4gIFJpZ2h0IG5vdyBpdCBkb2VzIGl0IGFsbCBpbiBvbmUgd2Fsay4g
IEluIG9yZGVyIHRvIHNoYXJlCisgICAgICAgIGNvZGUgd2l0aCBIVE1MRW1iZWRFbGVtZW50LCB3
ZSBuZWVkIHRoZSAiZ2VuZXJhdGUgdGhlIHBhcmFtcyBhcnJheSIKKyAgICAgICAgY29kZSB0byBi
ZSBzZXBhcmF0ZSBmcm9tIHRoZSAibWFrZSBhZHZhbmNlZCA8b2JqZWN0PiBzcGVjaWZpYyBkZWNp
c2lvbgorICAgICAgICBmcm9tIHRoZSBwYXJhbXMgYXJyYXkiLiAgQnV0IHRoYXQgd2lsbCBuZWVk
IHRvIGJlIGluIGEgbGF0ZXIgcGF0Y2guCisKKyAgICAgICAgTm8gZnVuY3Rpb25hbCBjaGFuZ2Vz
LCB0aHVzIG5vIHRlc3RzLgorCisgICAgICAgICogaHRtbC9IVE1MRW1iZWRFbGVtZW50LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkhUTUxFbWJlZEVsZW1lbnQ6OnBhcmFtZXRlcnNGb3JQbHVnaW4p
OgorICAgICAgICAqIGh0bWwvSFRNTEVtYmVkRWxlbWVudC5oOgorICAgICAgICAqIGh0bWwvSFRN
TE9iamVjdEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlQ2xhc3NJZFRvVHlw
ZU1hcCk6CisgICAgICAgIChXZWJDb3JlOjpzZXJ2aWNlVHlwZUZvckNsYXNzSWQpOgorICAgICAg
ICAoV2ViQ29yZTo6bWFwRGF0YVBhcmFtVG9TcmMpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE9i
amVjdEVsZW1lbnQ6OnBhcmFtZXRlcnNGb3JQbHVnaW4pOgorICAgICAgICAoV2ViQ29yZTo6SFRN
TE9iamVjdEVsZW1lbnQ6Omhhc0ZhbGxiYWNrQ29udGVudCk6CisgICAgICAgICogaHRtbC9IVE1M
T2JqZWN0RWxlbWVudC5oOgorICAgICAgICAqIGh0bWwvSFRNTFBsdWdJbkltYWdlRWxlbWVudC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MUGx1Z0luSW1hZ2VFbGVtZW50OjphbGxvd2VkVG9M
b2FkRnJhbWVVUkwpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFBsdWdJbkltYWdlRWxlbWVudDo6
d291bGRMb2FkQXNOZXRzY2FwZVBsdWdpbik6CisgICAgICAgIChXZWJDb3JlOjpIVE1MUGx1Z0lu
SW1hZ2VFbGVtZW50OjpkZXRhY2gpOiAKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxQbHVnSW5JbWFn
ZUVsZW1lbnQ6OnVwZGF0ZVdpZGdldElmTmVjZXNzYXJ5KToKKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxQbHVnSW5JbWFnZUVsZW1lbnQ6OnVwZGF0ZVdpZGdldENhbGxiYWNrKToKKyAgICAgICAgKiBo
dG1sL0hUTUxQbHVnSW5JbWFnZUVsZW1lbnQuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVy
RW1iZWRkZWRPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6dXBkYXRlV2lkZ2V0Rm9yT2Jq
ZWN0RWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjp1cGRhdGVXaWRnZXRGb3JFbWJlZEVsZW1l
bnQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRW1iZWRkZWRPYmplY3Q6OnVwZGF0ZVdpZGdl
dCk6CisKKzIwMTAtMDktMDEgIEVyaWMgU2VpZGVsICA8ZXJpY0B3ZWJraXQub3JnPgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCiAgICAgICAgIFNoYXJlIG1vcmUgY29k
ZSBiZXR3ZWVuIEhUTUxPYmplY3RFbGVtZW50IGFuZCBIVE1MRW1iZWRFbGVtZW50CiAgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00NTA1NAogCmRpZmYgLS1n
aXQgYS9XZWJDb3JlL2h0bWwvSFRNTEVtYmVkRWxlbWVudC5jcHAgYi9XZWJDb3JlL2h0bWwvSFRN
TEVtYmVkRWxlbWVudC5jcHAKaW5kZXggYmQ4OTE2MGUwYWE0ZDU1NjVlMjBhNjMyNmQ3ZDA3OWZl
ZTE3ZTE5Zi4uOWE1MjA2ZjgxZWYxZDRhNTM3YjdjZmI2MDRiNGE5OWE2ZWVkN2UwMyAxMDA2NDQK
LS0tIGEvV2ViQ29yZS9odG1sL0hUTUxFbWJlZEVsZW1lbnQuY3BwCisrKyBiL1dlYkNvcmUvaHRt
bC9IVE1MRW1iZWRFbGVtZW50LmNwcApAQCAtMTIwLDYgKzEyMCwxOSBAQCB2b2lkIEhUTUxFbWJl
ZEVsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmlidXRlKEF0dHJpYnV0ZSogYXR0cikKICAgICAgICAg
SFRNTFBsdWdJbkVsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmlidXRlKGF0dHIpOwogfQogCit2b2lk
IEhUTUxFbWJlZEVsZW1lbnQ6OnBhcmFtZXRlcnNGb3JQbHVnaW4oVmVjdG9yPFN0cmluZz4mIHBh
cmFtTmFtZXMsIFZlY3RvcjxTdHJpbmc+JiBwYXJhbVZhbHVlcykKK3sKKyAgICBOYW1lZE5vZGVN
YXAqIGF0dHJpYnV0ZXMgPSB0aGlzLT5hdHRyaWJ1dGVzKHRydWUpOworICAgIGlmICghYXR0cmli
dXRlcykKKyAgICAgICAgcmV0dXJuOworCisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGF0
dHJpYnV0ZXMtPmxlbmd0aCgpOyArK2kpIHsKKyAgICAgICAgQXR0cmlidXRlKiBpdCA9IGF0dHJp
YnV0ZXMtPmF0dHJpYnV0ZUl0ZW0oaSk7CisgICAgICAgIHBhcmFtTmFtZXMuYXBwZW5kKGl0LT5s
b2NhbE5hbWUoKSk7CisgICAgICAgIHBhcmFtVmFsdWVzLmFwcGVuZChpdC0+dmFsdWUoKSk7Cisg
ICAgfQorfQorCiBib29sIEhUTUxFbWJlZEVsZW1lbnQ6OnJlbmRlcmVySXNOZWVkZWQoUmVuZGVy
U3R5bGUqIHN0eWxlKQogewogICAgIGlmIChpc0ltYWdlVHlwZSgpKQpkaWZmIC0tZ2l0IGEvV2Vi
Q29yZS9odG1sL0hUTUxFbWJlZEVsZW1lbnQuaCBiL1dlYkNvcmUvaHRtbC9IVE1MRW1iZWRFbGVt
ZW50LmgKaW5kZXggZTI3YjcxNzI2MDI5MWUzZTJjZWQxNzI3NzZkZTY2OTFiNWYyN2NjOS4uZDRh
NGQ3ZmE3ZmY3ZmJjM2E2ZmUzMDk3MGYyMTRiMzlkZDA2YmU3ZCAxMDA2NDQKLS0tIGEvV2ViQ29y
ZS9odG1sL0hUTUxFbWJlZEVsZW1lbnQuaAorKysgYi9XZWJDb3JlL2h0bWwvSFRNTEVtYmVkRWxl
bWVudC5oCkBAIC0zMSw2ICszMSw4IEBAIGNsYXNzIEhUTUxFbWJlZEVsZW1lbnQgOiBwdWJsaWMg
SFRNTFBsdWdJbkltYWdlRWxlbWVudCB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8
SFRNTEVtYmVkRWxlbWVudD4gY3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCos
IGJvb2wgY3JlYXRlZEJ5UGFyc2VyKTsKIAorICAgIHZvaWQgcGFyYW1ldGVyc0ZvclBsdWdpbihW
ZWN0b3I8U3RyaW5nPiYgcGFyYW1OYW1lcywgVmVjdG9yPFN0cmluZz4mIHBhcmFtVmFsdWVzKTsK
KwogcHJpdmF0ZToKICAgICBIVE1MRW1iZWRFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBE
b2N1bWVudCosIGJvb2wgY3JlYXRlZEJ5UGFyc2VyKTsKIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9o
dG1sL0hUTUxPYmplY3RFbGVtZW50LmNwcCBiL1dlYkNvcmUvaHRtbC9IVE1MT2JqZWN0RWxlbWVu
dC5jcHAKaW5kZXggNDllMDVlZDRmYzc3MzkxYTAwYzdmY2Q5ZTJiMmFjZTJmZGI5ZTI0Ni4uY2U0
NmJkYzEyOTNkZDNkM2NiNjVhMWZmZmRhNTIyOGQ1YThlMDE5YSAxMDA2NDQKLS0tIGEvV2ViQ29y
ZS9odG1sL0hUTUxPYmplY3RFbGVtZW50LmNwcAorKysgYi9XZWJDb3JlL2h0bWwvSFRNTE9iamVj
dEVsZW1lbnQuY3BwCkBAIC0zMyw2ICszMyw3IEBACiAjaW5jbHVkZSAiSFRNTEZvcm1FbGVtZW50
LmgiCiAjaW5jbHVkZSAiSFRNTEltYWdlTG9hZGVyLmgiCiAjaW5jbHVkZSAiSFRNTE5hbWVzLmgi
CisjaW5jbHVkZSAiSFRNTFBhcmFtRWxlbWVudC5oIgogI2luY2x1ZGUgIk1JTUVUeXBlUmVnaXN0
cnkuaCIKICNpbmNsdWRlICJSZW5kZXJFbWJlZGRlZE9iamVjdC5oIgogI2luY2x1ZGUgIlJlbmRl
ckltYWdlLmgiCkBAIC0xMTUsNiArMTE2LDEyNiBAQCB2b2lkIEhUTUxPYmplY3RFbGVtZW50Ojpw
YXJzZU1hcHBlZEF0dHJpYnV0ZShBdHRyaWJ1dGUqIGF0dHIpCiAgICAgICAgIEhUTUxQbHVnSW5J
bWFnZUVsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmlidXRlKGF0dHIpOwogfQogCit0eXBlZGVmIEhh
c2hNYXA8U3RyaW5nLCBTdHJpbmcsIENhc2VGb2xkaW5nSGFzaD4gQ2xhc3NJZFRvVHlwZU1hcDsK
Kworc3RhdGljIENsYXNzSWRUb1R5cGVNYXAqIGNyZWF0ZUNsYXNzSWRUb1R5cGVNYXAoKQorewor
ICAgIENsYXNzSWRUb1R5cGVNYXAqIG1hcCA9IG5ldyBDbGFzc0lkVG9UeXBlTWFwOworICAgIG1h
cC0+YWRkKCJjbHNpZDpEMjdDREI2RS1BRTZELTExQ0YtOTZCOC00NDQ1NTM1NDAwMDAiLCAiYXBw
bGljYXRpb24veC1zaG9ja3dhdmUtZmxhc2giKTsKKyAgICBtYXAtPmFkZCgiY2xzaWQ6Q0ZDREFB
MDMtOEJFNC0xMUNGLUI4NEItMDAyMEFGQkJDQ0ZBIiwgImF1ZGlvL3gtcG4tcmVhbGF1ZGlvLXBs
dWdpbiIpOworICAgIG1hcC0+YWRkKCJjbHNpZDowMkJGMjVENS04QzE3LTRCMjMtQkM4MC1EMzQ4
OEFCRERDNkIiLCAidmlkZW8vcXVpY2t0aW1lIik7CisgICAgbWFwLT5hZGQoImNsc2lkOjE2NkIx
QkNBLTNGOUMtMTFDRi04MDc1LTQ0NDU1MzU0MDAwMCIsICJhcHBsaWNhdGlvbi94LWRpcmVjdG9y
Iik7CisgICAgbWFwLT5hZGQoImNsc2lkOjZCRjUyQTUyLTM5NEEtMTFEMy1CMTUzLTAwQzA0Rjc5
RkFBNiIsICJhcHBsaWNhdGlvbi94LW1wbGF5ZXIyIik7CisgICAgbWFwLT5hZGQoImNsc2lkOjIy
RDZGMzEyLUIwRjYtMTFEMC05NEFCLTAwODBDNzRDN0U5NSIsICJhcHBsaWNhdGlvbi94LW1wbGF5
ZXIyIik7CisgICAgcmV0dXJuIG1hcDsKK30KKworc3RhdGljIFN0cmluZyBzZXJ2aWNlVHlwZUZv
ckNsYXNzSWQoY29uc3QgU3RyaW5nJiBjbGFzc0lkKQoreworICAgIC8vIFJldHVybiBlYXJseSBp
ZiBjbGFzc0lkIGlzIGVtcHR5IChzaW5jZSB3ZSB3b24ndCBkbyBhbnl0aGluZyBiZWxvdykuCisg
ICAgLy8gRnVydGhlcm1vcmUsIGlmIGNsYXNzSWQgaXMgbnVsbCwgY2FsbGluZyBnZXQoKSBiZWxv
dyB3aWxsIGNyYXNoLgorICAgIGlmIChjbGFzc0lkLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJu
IFN0cmluZygpOworICAgIAorICAgIHN0YXRpYyBDbGFzc0lkVG9UeXBlTWFwKiBtYXAgPSBjcmVh
dGVDbGFzc0lkVG9UeXBlTWFwKCk7CisgICAgcmV0dXJuIG1hcC0+Z2V0KGNsYXNzSWQpOworfQor
CitzdGF0aWMgdm9pZCBtYXBEYXRhUGFyYW1Ub1NyYyhWZWN0b3I8U3RyaW5nPiogcGFyYW1OYW1l
cywgVmVjdG9yPFN0cmluZz4qIHBhcmFtVmFsdWVzKQoreworICAgIC8vIFNvbWUgcGx1Z2lucyBk
b24ndCB1bmRlcnN0YW5kIHRoZSAiZGF0YSIgYXR0cmlidXRlIG9mIHRoZSBPQkpFQ1QgdGFnIChp
LmUuIFJlYWwgYW5kIFdNUAorICAgIC8vIHJlcXVpcmUgInNyYyIgYXR0cmlidXRlKS4KKyAgICBp
bnQgc3JjSW5kZXggPSAtMSwgZGF0YUluZGV4ID0gLTE7CisgICAgZm9yICh1bnNpZ25lZCBpbnQg
aSA9IDA7IGkgPCBwYXJhbU5hbWVzLT5zaXplKCk7ICsraSkgeworICAgICAgICBpZiAoZXF1YWxJ
Z25vcmluZ0Nhc2UoKCpwYXJhbU5hbWVzKVtpXSwgInNyYyIpKQorICAgICAgICAgICAgc3JjSW5k
ZXggPSBpOworICAgICAgICBlbHNlIGlmIChlcXVhbElnbm9yaW5nQ2FzZSgoKnBhcmFtTmFtZXMp
W2ldLCAiZGF0YSIpKQorICAgICAgICAgICAgZGF0YUluZGV4ID0gaTsKKyAgICB9CisgICAgCisg
ICAgaWYgKHNyY0luZGV4ID09IC0xICYmIGRhdGFJbmRleCAhPSAtMSkgeworICAgICAgICBwYXJh
bU5hbWVzLT5hcHBlbmQoInNyYyIpOworICAgICAgICBwYXJhbVZhbHVlcy0+YXBwZW5kKCgqcGFy
YW1WYWx1ZXMpW2RhdGFJbmRleF0pOworICAgIH0KK30KKworLy8gRklYTUU6IFRoaXMgZnVuY3Rp
b24gc2hvdWxkIG5vdCBkZWFsIHdpdGggdXJsIG9yIHNlcnZpY2VUeXBlIQordm9pZCBIVE1MT2Jq
ZWN0RWxlbWVudDo6cGFyYW1ldGVyc0ZvclBsdWdpbihWZWN0b3I8U3RyaW5nPiYgcGFyYW1OYW1l
cywgVmVjdG9yPFN0cmluZz4mIHBhcmFtVmFsdWVzLCBTdHJpbmcmIHVybCwgU3RyaW5nJiBzZXJ2
aWNlVHlwZSkKK3sKKyAgICBIYXNoU2V0PFN0cmluZ0ltcGwqLCBDYXNlRm9sZGluZ0hhc2g+IHVu
aXF1ZVBhcmFtTmFtZXM7CisgICAgCisgICAgLy8gU2NhbiB0aGUgUEFSQU0gY2hpbGRyZW4gYW5k
IHN0b3JlIHRoZWlyIG5hbWUvdmFsdWUgcGFpcnMuCisgICAgLy8gR2V0IHRoZSBVUkwgYW5kIHR5
cGUgZnJvbSB0aGUgcGFyYW1zIGlmIHdlIGRvbid0IGFscmVhZHkgaGF2ZSB0aGVtLgorICAgIGZv
ciAoTm9kZSogY2hpbGQgPSBmaXJzdENoaWxkKCk7IGNoaWxkOyBjaGlsZCA9IGNoaWxkLT5uZXh0
U2libGluZygpKSB7CisgICAgICAgIGlmICghY2hpbGQtPmhhc1RhZ05hbWUocGFyYW1UYWcpKQor
ICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgSFRNTFBhcmFtRWxlbWVudCogcCA9IHN0
YXRpY19jYXN0PEhUTUxQYXJhbUVsZW1lbnQqPihjaGlsZCk7CisgICAgICAgIFN0cmluZyBuYW1l
ID0gcC0+bmFtZSgpOworICAgICAgICBpZiAobmFtZS5pc0VtcHR5KCkpCisgICAgICAgICAgICBj
b250aW51ZTsKKworICAgICAgICB1bmlxdWVQYXJhbU5hbWVzLmFkZChuYW1lLmltcGwoKSk7Cisg
ICAgICAgIHBhcmFtTmFtZXMuYXBwZW5kKHAtPm5hbWUoKSk7CisgICAgICAgIHBhcmFtVmFsdWVz
LmFwcGVuZChwLT52YWx1ZSgpKTsKKworICAgICAgICAvLyBGSVhNRTogdXJsIGFkanVzdG1lbnQg
ZG9lcyBub3QgYmVsb25nIGluIHRoaXMgZnVuY3Rpb24uCisgICAgICAgIGlmICh1cmwuaXNFbXB0
eSgpICYmIChlcXVhbElnbm9yaW5nQ2FzZShuYW1lLCAic3JjIikgfHwgZXF1YWxJZ25vcmluZ0Nh
c2UobmFtZSwgIm1vdmllIikgfHwgZXF1YWxJZ25vcmluZ0Nhc2UobmFtZSwgImNvZGUiKSB8fCBl
cXVhbElnbm9yaW5nQ2FzZShuYW1lLCAidXJsIikpKQorICAgICAgICAgICAgdXJsID0gZGVwcmVj
YXRlZFBhcnNlVVJMKHAtPnZhbHVlKCkpOworICAgICAgICAvLyBGSVhNRTogc2VydmljZVR5cGUg
Y2FsY3VsYXRpb24gZG9lcyBub3QgYmVsb25nIGluIHRoaXMgZnVuY3Rpb24uCisgICAgICAgIGlm
IChzZXJ2aWNlVHlwZS5pc0VtcHR5KCkgJiYgZXF1YWxJZ25vcmluZ0Nhc2UobmFtZSwgInR5cGUi
KSkgeworICAgICAgICAgICAgc2VydmljZVR5cGUgPSBwLT52YWx1ZSgpOworICAgICAgICAgICAg
c2l6ZV90IHBvcyA9IHNlcnZpY2VUeXBlLmZpbmQoIjsiKTsKKyAgICAgICAgICAgIGlmIChwb3Mg
IT0gbm90Rm91bmQpCisgICAgICAgICAgICAgICAgc2VydmljZVR5cGUgPSBzZXJ2aWNlVHlwZS5s
ZWZ0KHBvcyk7CisgICAgICAgIH0KKyAgICB9CisgICAgCisgICAgLy8gV2hlbiBPQkpFQ1QgaXMg
dXNlZCBmb3IgYW4gYXBwbGV0IHZpYSBTdW4ncyBKYXZhIHBsdWdpbiwgdGhlIENPREVCQVNFIGF0
dHJpYnV0ZSBpbiB0aGUgdGFnCisgICAgLy8gcG9pbnRzIHRvIHRoZSBKYXZhIHBsdWdpbiBpdHNl
bGYgKGFuIEFjdGl2ZVggY29tcG9uZW50KSB3aGlsZSB0aGUgYWN0dWFsIGFwcGxldCBDT0RFQkFT
RSBpcworICAgIC8vIGluIGEgUEFSQU0gdGFnLiBTZWUgPGh0dHA6Ly9qYXZhLnN1bi5jb20vcHJv
ZHVjdHMvcGx1Z2luLzEuMi9kb2NzL3RhZ3MuaHRtbD4uIFRoaXMgbWVhbnMKKyAgICAvLyB3ZSBo
YXZlIHRvIGV4cGxpY2l0bHkgc3VwcHJlc3MgdGhlIHRhZydzIENPREVCQVNFIGF0dHJpYnV0ZSBp
ZiB0aGVyZSBpcyBub25lIGluIGEgUEFSQU0sCisgICAgLy8gZWxzZSBvdXIgSmF2YSBwbHVnaW4g
d2lsbCBtaXNpbnRlcnByZXQgaXQuIFs0MDA0NTMxXQorICAgIFN0cmluZyBjb2RlYmFzZTsKKyAg
ICBpZiAoTUlNRVR5cGVSZWdpc3RyeTo6aXNKYXZhQXBwbGV0TUlNRVR5cGUoc2VydmljZVR5cGUp
KSB7CisgICAgICAgIGNvZGViYXNlID0gImNvZGViYXNlIjsKKyAgICAgICAgdW5pcXVlUGFyYW1O
YW1lcy5hZGQoY29kZWJhc2UuaW1wbCgpKTsgLy8gcHJldGVuZCB3ZSBmb3VuZCBpdCBpbiBhIFBB
UkFNIGFscmVhZHkKKyAgICB9CisgICAgCisgICAgLy8gVHVybiB0aGUgYXR0cmlidXRlcyBvZiB0
aGUgPG9iamVjdD4gZWxlbWVudCBpbnRvIGFycmF5cywgYnV0IGRvbid0IG92ZXJyaWRlIDxwYXJh
bT4gdmFsdWVzLgorICAgIE5hbWVkTm9kZU1hcCogYXR0cmlidXRlcyA9IHRoaXMtPmF0dHJpYnV0
ZXModHJ1ZSk7CisgICAgaWYgKGF0dHJpYnV0ZXMpIHsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBp
ID0gMDsgaSA8IGF0dHJpYnV0ZXMtPmxlbmd0aCgpOyArK2kpIHsKKyAgICAgICAgICAgIEF0dHJp
YnV0ZSogaXQgPSBhdHRyaWJ1dGVzLT5hdHRyaWJ1dGVJdGVtKGkpOworICAgICAgICAgICAgY29u
c3QgQXRvbWljU3RyaW5nJiBuYW1lID0gaXQtPm5hbWUoKS5sb2NhbE5hbWUoKTsKKyAgICAgICAg
ICAgIGlmICghdW5pcXVlUGFyYW1OYW1lcy5jb250YWlucyhuYW1lLmltcGwoKSkpIHsKKyAgICAg
ICAgICAgICAgICBwYXJhbU5hbWVzLmFwcGVuZChuYW1lLnN0cmluZygpKTsKKyAgICAgICAgICAg
ICAgICBwYXJhbVZhbHVlcy5hcHBlbmQoaXQtPnZhbHVlKCkuc3RyaW5nKCkpOworICAgICAgICAg
ICAgfQorICAgICAgICB9CisgICAgfQorICAgIAorICAgIG1hcERhdGFQYXJhbVRvU3JjKCZwYXJh
bU5hbWVzLCAmcGFyYW1WYWx1ZXMpOworICAgIAorICAgIC8vIElmIHdlIHN0aWxsIGRvbid0IGhh
dmUgYSB0eXBlLCB0cnkgdG8gbWFwIGZyb20gYSBzcGVjaWZpYyBDTEFTU0lEIHRvIGEgdHlwZS4K
KyAgICBpZiAoc2VydmljZVR5cGUuaXNFbXB0eSgpKQorICAgICAgICBzZXJ2aWNlVHlwZSA9IHNl
cnZpY2VUeXBlRm9yQ2xhc3NJZChjbGFzc0lkKCkpOworfQorCisgICAgCitib29sIEhUTUxPYmpl
Y3RFbGVtZW50OjpoYXNGYWxsYmFja0NvbnRlbnQoKSBjb25zdAoreworICAgIGZvciAoTm9kZSog
Y2hpbGQgPSBmaXJzdENoaWxkKCk7IGNoaWxkOyBjaGlsZCA9IGNoaWxkLT5uZXh0U2libGluZygp
KSB7CisgICAgICAgIC8vIElnbm9yZSB3aGl0ZXNwYWNlLW9ubHkgdGV4dCwgYW5kIDxwYXJhbT4g
dGFncywgYW55IG90aGVyIGNvbnRlbnQgaXMgZmFsbGJhY2sgY29udGVudC4KKyAgICAgICAgaWYg
KGNoaWxkLT5pc1RleHROb2RlKCkpIHsKKyAgICAgICAgICAgIGlmICghc3RhdGljX2Nhc3Q8VGV4
dCo+KGNoaWxkKS0+Y29udGFpbnNPbmx5V2hpdGVzcGFjZSgpKQorICAgICAgICAgICAgICAgIHJl
dHVybiB0cnVlOworICAgICAgICB9IGVsc2UgaWYgKCFjaGlsZC0+aGFzVGFnTmFtZShwYXJhbVRh
ZykpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgcmV0dXJuIGZhbHNlOwor
fQorCiBib29sIEhUTUxPYmplY3RFbGVtZW50OjpyZW5kZXJlcklzTmVlZGVkKFJlbmRlclN0eWxl
KiBzdHlsZSkKIHsKICAgICAvLyBGSVhNRTogVGhpcyBjaGVjayBzaG91bGQgbm90IGJlIG5lZWRl
ZCwgZGV0YWNoZWQgZG9jdW1lbnRzIG5ldmVyIHJlbmRlciEKZGlmZiAtLWdpdCBhL1dlYkNvcmUv
aHRtbC9IVE1MT2JqZWN0RWxlbWVudC5oIGIvV2ViQ29yZS9odG1sL0hUTUxPYmplY3RFbGVtZW50
LmgKaW5kZXggZTY4YWZlOTc0ODQxYWRlYjRkNTk4NmNmZjdhYjFkOWQxNGVhYTQ5OS4uYjE0MmVj
MTkzYTYzMzMzYjRlZDQ0NzFmNDlhN2MwZDMwNzkxODhmZCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9o
dG1sL0hUTUxPYmplY3RFbGVtZW50LmgKKysrIGIvV2ViQ29yZS9odG1sL0hUTUxPYmplY3RFbGVt
ZW50LmgKQEAgLTM5LDggKzM5LDEzIEBAIHB1YmxpYzoKIAogICAgIGJvb2wgY29udGFpbnNKYXZh
QXBwbGV0KCkgY29uc3Q7CiAKKyAgICBib29sIGhhc0ZhbGxiYWNrQ29udGVudCgpIGNvbnN0Owog
ICAgIHZpcnR1YWwgYm9vbCB1c2VGYWxsYmFja0NvbnRlbnQoKSBjb25zdCB7IHJldHVybiBtX3Vz
ZUZhbGxiYWNrQ29udGVudDsgfQogCisgICAgLy8gRklYTUU6IFRoaXMgZnVuY3Rpb24gc2hvdWxk
IG5vdCBkZWFsIHdpdGggdXJsIG9yIHNlcnZpY2VUeXBlCisgICAgLy8gc28gdGhhdCB3ZSBjYW4g
YmV0dGVyIHNoYXJlIGNvZGUgYmV0d2VlbiA8b2JqZWN0PiBhbmQgPGVtYmVkPi4KKyAgICB2b2lk
IHBhcmFtZXRlcnNGb3JQbHVnaW4oVmVjdG9yPFN0cmluZz4mIHBhcmFtTmFtZXMsIFZlY3RvcjxT
dHJpbmc+JiBwYXJhbVZhbHVlcywgU3RyaW5nJiB1cmwsIFN0cmluZyYgc2VydmljZVR5cGUpOwor
CiBwcml2YXRlOgogICAgIEhUTUxPYmplY3RFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBE
b2N1bWVudCosIGJvb2wgY3JlYXRlZEJ5UGFyc2VyKTsKIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9o
dG1sL0hUTUxQbHVnSW5JbWFnZUVsZW1lbnQuY3BwIGIvV2ViQ29yZS9odG1sL0hUTUxQbHVnSW5J
bWFnZUVsZW1lbnQuY3BwCmluZGV4IDQxMWJmOTIwODBkYjIyN2Q3ODMzYWVkYmYyNDk0ZGRjMTZm
OTcwMWYuLmUwZWExOWJiOWY3NjIxOTIzZmZlMGNlODg3MmY0MjZhOWIxNTNkMmIgMTAwNjQ0Ci0t
LSBhL1dlYkNvcmUvaHRtbC9IVE1MUGx1Z0luSW1hZ2VFbGVtZW50LmNwcAorKysgYi9XZWJDb3Jl
L2h0bWwvSFRNTFBsdWdJbkltYWdlRWxlbWVudC5jcHAKQEAgLTI2LDYgKzI2LDcgQEAKICNpbmNs
dWRlICJGcmFtZUxvYWRlckNsaWVudC5oIgogI2luY2x1ZGUgIkhUTUxJbWFnZUxvYWRlci5oIgog
I2luY2x1ZGUgIkltYWdlLmgiCisjaW5jbHVkZSAiUGFnZS5oIgogI2luY2x1ZGUgIlJlbmRlckVt
YmVkZGVkT2JqZWN0LmgiCiAjaW5jbHVkZSAiUmVuZGVySW1hZ2UuaCIKIApAQCAtNjMsNiArNjQs
NDYgQEAgYm9vbCBIVE1MUGx1Z0luSW1hZ2VFbGVtZW50Ojppc0ltYWdlVHlwZSgpCiAgICAgcmV0
dXJuIEltYWdlOjpzdXBwb3J0c1R5cGUobV9zZXJ2aWNlVHlwZSk7CiB9CiAKKy8vIFdlIGRvbid0
IHVzZSBtX3VybCwgYXMgaXQgbWF5IG5vdCBiZSB0aGUgZmluYWwgVVJMIHRoYXQgdGhlIG9iamVj
dCBsb2FkcywKKy8vIGRlcGVuZGluZyBvbiA8cGFyYW0+IHZhbHVlcy4gCitib29sIEhUTUxQbHVn
SW5JbWFnZUVsZW1lbnQ6OmFsbG93ZWRUb0xvYWRGcmFtZVVSTChjb25zdCBTdHJpbmcmIHVybCkK
K3sKKyAgICBBU1NFUlQoZG9jdW1lbnQoKSk7CisgICAgQVNTRVJUKGRvY3VtZW50KCktPmZyYW1l
KCkpOworICAgIGlmIChkb2N1bWVudCgpLT5mcmFtZSgpLT5wYWdlKCktPmZyYW1lQ291bnQoKSA+
PSBQYWdlOjptYXhOdW1iZXJPZkZyYW1lcykKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAg
Ly8gV2UgYWxsb3cgb25lIGxldmVsIG9mIHNlbGYtcmVmZXJlbmNlIGJlY2F1c2Ugc29tZSBzaXRl
cyBkZXBlbmQgb24gdGhhdC4KKyAgICAvLyBCdXQgd2UgZG9uJ3QgYWxsb3cgbW9yZSB0aGFuIG9u
ZS4KKyAgICBLVVJMIGNvbXBsZXRlVVJMID0gZG9jdW1lbnQoKS0+Y29tcGxldGVVUkwodXJsKTsK
KyAgICBib29sIGZvdW5kU2VsZlJlZmVyZW5jZSA9IGZhbHNlOworICAgIGZvciAoRnJhbWUqIGZy
YW1lID0gZG9jdW1lbnQoKS0+ZnJhbWUoKTsgZnJhbWU7IGZyYW1lID0gZnJhbWUtPnRyZWUoKS0+
cGFyZW50KCkpIHsKKyAgICAgICAgaWYgKGVxdWFsSWdub3JpbmdGcmFnbWVudElkZW50aWZpZXIo
ZnJhbWUtPmxvYWRlcigpLT51cmwoKSwgY29tcGxldGVVUkwpKSB7CisgICAgICAgICAgICBpZiAo
Zm91bmRTZWxmUmVmZXJlbmNlKQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAg
ICAgICAgIGZvdW5kU2VsZlJlZmVyZW5jZSA9IHRydWU7CisgICAgICAgIH0KKyAgICB9CisgICAg
cmV0dXJuIHRydWU7Cit9CisKKy8vIFdlIGRvbid0IHVzZSBtX3VybCwgb3IgbV9zZXJ2aWNlVHlw
ZSBhcyB0aGV5IG1heSBub3QgYmUgdGhlIGZpbmFsIHZhbHVlcworLy8gdGhhdCA8b2JqZWN0PiB1
c2VzIGRlcGVuZGluZyBvbiA8cGFyYW0+IHZhbHVlcy4gCitib29sIEhUTUxQbHVnSW5JbWFnZUVs
ZW1lbnQ6OndvdWxkTG9hZEFzTmV0c2NhcGVQbHVnaW4oY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0
IFN0cmluZyYgc2VydmljZVR5cGUpCit7CisgICAgQVNTRVJUKGRvY3VtZW50KCkpOworICAgIEFT
U0VSVChkb2N1bWVudCgpLT5mcmFtZSgpKTsKKyAgICBGcmFtZUxvYWRlciogZnJhbWVMb2FkZXIg
PSBkb2N1bWVudCgpLT5mcmFtZSgpLT5sb2FkZXIoKTsKKyAgICBBU1NFUlQoZnJhbWVMb2FkZXIp
OworICAgIEtVUkwgY29tcGxldGVkVVJMOworICAgIGlmICghdXJsLmlzRW1wdHkoKSkKKyAgICAg
ICAgY29tcGxldGVkVVJMID0gZnJhbWVMb2FkZXItPmNvbXBsZXRlVVJMKHVybCk7CisKKyAgICBp
ZiAoZnJhbWVMb2FkZXItPmNsaWVudCgpLT5vYmplY3RDb250ZW50VHlwZShjb21wbGV0ZWRVUkws
IHNlcnZpY2VUeXBlKSA9PSBPYmplY3RDb250ZW50TmV0c2NhcGVQbHVnaW4pCisgICAgICAgIHJl
dHVybiB0cnVlOworICAgIHJldHVybiBmYWxzZTsKK30KKwogUmVuZGVyT2JqZWN0KiBIVE1MUGx1
Z0luSW1hZ2VFbGVtZW50OjpjcmVhdGVSZW5kZXJlcihSZW5kZXJBcmVuYSogYXJlbmEsIFJlbmRl
clN0eWxlKiBzdHlsZSkKIHsKICAgICAvLyBGYWxsYmFjayBjb250ZW50IGJyZWFrcyB0aGUgRE9N
LT5SZW5kZXJlciBjbGFzcyByZWxhdGlvbnNoaXAgb2YgdGhpcwpAQCAtOTYsMTUgKzEzNywxNyBA
QCB2b2lkIEhUTUxQbHVnSW5JbWFnZUVsZW1lbnQ6OmF0dGFjaCgpCiB2b2lkIEhUTUxQbHVnSW5J
bWFnZUVsZW1lbnQ6OmRldGFjaCgpCiB7CiAgICAgQVNTRVJUKGF0dGFjaGVkKCkpOwotICAgIEFT
U0VSVChyZW5kZXJlcigpKTsKLSAgICBpZiAoIXVzZUZhbGxiYWNrQ29udGVudCgpKSB7CisgICAg
Ly8gRklYTUU6IEJlY2F1c2Ugb2YgdGhlIGluc2FuaXR5IHRoYXQgaXMgSFRNTE9iamVjdEVsZW1l
bnQ6OnJlY2FsY1N0eWxlLAorICAgIC8vIHdlIGNhbiBlbmQgdXAgZGV0YWNoaW5nIGR1cmluZyBh
biBhdHRhY2goKSBjYWxsLCBiZWZvcmUgd2UgZXZlbiBoYXZlIGEKKyAgICAvLyByZW5kZXJlci4g
IEluIHRoYXQgY2FzZSwgZG9uJ3QgbWFyayB0aGUgd2lkZ2V0IGZvciB1cGRhdGUuCisgICAgaWYg
KHJlbmRlcmVyKCkgJiYgIXVzZUZhbGxiYWNrQ29udGVudCgpKSB7CiAgICAgICAgIC8vIFVwZGF0
ZSB0aGUgd2lkZ2V0IHRoZSBuZXh0IHRpbWUgd2UgYXR0YWNoIChkZXRhY2hpbmcgZGVzdHJveXMg
dGhlIHBsdWdpbikuCiAgICAgICAgIHNldE5lZWRzV2lkZ2V0VXBkYXRlKHRydWUpOwogICAgIH0K
ICAgICBIVE1MUGx1Z0luRWxlbWVudDo6ZGV0YWNoKCk7CiB9CiAKLXZvaWQgSFRNTFBsdWdJbklt
YWdlRWxlbWVudDo6dXBkYXRlV2lkZ2V0KCkKK3ZvaWQgSFRNTFBsdWdJbkltYWdlRWxlbWVudDo6
dXBkYXRlV2lkZ2V0SWZOZWNlc3NhcnkoKQogewogICAgIGRvY3VtZW50KCktPnVwZGF0ZVN0eWxl
SWZOZWVkZWQoKTsKICAgICBpZiAobmVlZHNXaWRnZXRVcGRhdGUoKSAmJiByZW5kZXJFbWJlZGRl
ZE9iamVjdCgpICYmICF1c2VGYWxsYmFja0NvbnRlbnQoKSAmJiAhaXNJbWFnZVR5cGUoKSkKQEAg
LTEzMSw3ICsxNzQsNyBAQCB2b2lkIEhUTUxQbHVnSW5JbWFnZUVsZW1lbnQ6OndpbGxNb3ZlVG9O
ZXdPd25lckRvY3VtZW50KCkKIAogdm9pZCBIVE1MUGx1Z0luSW1hZ2VFbGVtZW50Ojp1cGRhdGVX
aWRnZXRDYWxsYmFjayhOb2RlKiBuKQogewotICAgIHN0YXRpY19jYXN0PEhUTUxQbHVnSW5JbWFn
ZUVsZW1lbnQqPihuKS0+dXBkYXRlV2lkZ2V0KCk7CisgICAgc3RhdGljX2Nhc3Q8SFRNTFBsdWdJ
bkltYWdlRWxlbWVudCo+KG4pLT51cGRhdGVXaWRnZXRJZk5lY2Vzc2FyeSgpOwogfQogCiB9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9XZWJDb3JlL2h0bWwvSFRNTFBsdWdJbklt
YWdlRWxlbWVudC5oIGIvV2ViQ29yZS9odG1sL0hUTUxQbHVnSW5JbWFnZUVsZW1lbnQuaAppbmRl
eCBiODA3N2UyOWFiNzQyMDQ2MmI4MGVmOGI1MWI3YmE3NGFiNDU5NDhkLi5iY2JlODUwM2NkNmE4
N2NmZGE0OWY4N2UwZjhkNGY5MWZjMDU1NDE3IDEwMDY0NAotLS0gYS9XZWJDb3JlL2h0bWwvSFRN
TFBsdWdJbkltYWdlRWxlbWVudC5oCisrKyBiL1dlYkNvcmUvaHRtbC9IVE1MUGx1Z0luSW1hZ2VF
bGVtZW50LmgKQEAgLTI3LDYgKzI3LDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3Mg
SFRNTEltYWdlTG9hZGVyOworY2xhc3MgRnJhbWVMb2FkZXI7CiAKIC8vIEJhc2UgY2xhc3MgZm9y
IEhUTUxPYmplY3RFbGVtZW50IGFuZCBIVE1MRW1iZWRFbGVtZW50CiBjbGFzcyBIVE1MUGx1Z0lu
SW1hZ2VFbGVtZW50IDogcHVibGljIEhUTUxQbHVnSW5FbGVtZW50IHsKQEAgLTM0LDExICszNSwx
NSBAQCBwdWJsaWM6CiAgICAgY29uc3QgU3RyaW5nJiBzZXJ2aWNlVHlwZSgpIGNvbnN0IHsgcmV0
dXJuIG1fc2VydmljZVR5cGU7IH0KICAgICBjb25zdCBTdHJpbmcmIHVybCgpIGNvbnN0IHsgcmV0
dXJuIG1fdXJsOyB9CiAKKworICAgIFJlbmRlckVtYmVkZGVkT2JqZWN0KiByZW5kZXJFbWJlZGRl
ZE9iamVjdCgpIGNvbnN0OworCisgICAgLy8gVGhlc2UgY2FuIGFsbCBtb3ZlIHRvIGJlIHByb3Rl
Y3RlZCBvbmNlIHVwZGF0ZVdpZGdldCBpcyBtb3ZlZCBvdXQgb2YgUmVuZGVyRW1iZWRkZWRPYmpl
Y3QuY3BwCiAgICAgYm9vbCBuZWVkc1dpZGdldFVwZGF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fbmVl
ZHNXaWRnZXRVcGRhdGU7IH0KICAgICB2b2lkIHNldE5lZWRzV2lkZ2V0VXBkYXRlKGJvb2wgbmVl
ZHNXaWRnZXRVcGRhdGUpIHsgbV9uZWVkc1dpZGdldFVwZGF0ZSA9IG5lZWRzV2lkZ2V0VXBkYXRl
OyB9CisgICAgYm9vbCBhbGxvd2VkVG9Mb2FkRnJhbWVVUkwoY29uc3QgU3RyaW5nJiB1cmwpOwor
ICAgIGJvb2wgd291bGRMb2FkQXNOZXRzY2FwZVBsdWdpbihjb25zdCBTdHJpbmcmIHVybCwgY29u
c3QgU3RyaW5nJiBzZXJ2aWNlVHlwZSk7CiAKLSAgICBSZW5kZXJFbWJlZGRlZE9iamVjdCogcmVu
ZGVyRW1iZWRkZWRPYmplY3QoKSBjb25zdDsKLSAgICAKIHByb3RlY3RlZDoKICAgICBIVE1MUGx1
Z0luSW1hZ2VFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50Kiwg
Ym9vbCBjcmVhdGVkQnlQYXJzZXIpOwogCkBAIC01MSw3ICs1Niw3IEBAIHByb3RlY3RlZDoKICAg
ICBzdGF0aWMgdm9pZCB1cGRhdGVXaWRnZXRDYWxsYmFjayhOb2RlKik7CiAgICAgdmlydHVhbCB2
b2lkIGF0dGFjaCgpOwogICAgIHZpcnR1YWwgdm9pZCBkZXRhY2goKTsKLSAgICAKKwogcHJpdmF0
ZToKICAgICB2aXJ0dWFsIGJvb2wgY2FuTGF6eUF0dGFjaCgpIHsgcmV0dXJuIGZhbHNlOyB9CiAg
ICAgdmlydHVhbCBSZW5kZXJPYmplY3QqIGNyZWF0ZVJlbmRlcmVyKFJlbmRlckFyZW5hKiwgUmVu
ZGVyU3R5bGUqKTsKQEAgLTU5LDcgKzY0LDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQg
ZmluaXNoUGFyc2luZ0NoaWxkcmVuKCk7ICAgIAogICAgIHZpcnR1YWwgdm9pZCB3aWxsTW92ZVRv
TmV3T3duZXJEb2N1bWVudCgpOwogCi0gICAgdm9pZCB1cGRhdGVXaWRnZXQoKTsKKyAgICB2b2lk
IHVwZGF0ZVdpZGdldElmTmVjZXNzYXJ5KCk7CiAgICAgdmlydHVhbCBib29sIHVzZUZhbGxiYWNr
Q29udGVudCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAKICAgICBib29sIG1fbmVlZHNXaWRn
ZXRVcGRhdGU7CmRpZmYgLS1naXQgYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbWJlZGRlZE9i
amVjdC5jcHAgYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbWJlZGRlZE9iamVjdC5jcHAKaW5k
ZXggYjFiMjUzYTE4NjRlY2MwM2M2YTc0NmQ0MDRlNDVjMzkxMjkwYTk1MC4uOWY4YWNmZDA3MDgw
Yjk4N2M1Y2UxYWUxOGE2YjdhM2M2NTU1ZGYxZiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyRW1iZWRkZWRPYmplY3QuY3BwCisrKyBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckVtYmVkZGVkT2JqZWN0LmNwcApAQCAtMTAxLDE3OSArMTAxLDMzIEBAIGJvb2wgUmVuZGVyRW1i
ZWRkZWRPYmplY3Q6OmFsbG93c0FjY2VsZXJhdGVkQ29tcG9zaXRpbmcoKSBjb25zdAogICAgIHJl
dHVybiB3aWRnZXQoKSAmJiB3aWRnZXQoKS0+aXNQbHVnaW5WaWV3QmFzZSgpICYmIHN0YXRpY19j
YXN0PFBsdWdpblZpZXdCYXNlKj4od2lkZ2V0KCkpLT5wbGF0Zm9ybUxheWVyKCk7CiB9CiAjZW5k
aWYKLQotLy8gRklYTUU6IFRoaXMgYmVsb25ncyBpbiBIVE1MUGx1Z2luRWxlbWVudC5jcHAgdG8g
YmUgc2hhcmVkIGJ5IEhUTUxPYmplY3RFbGVtZW50IGFuZCBIVE1MRW1iZWRFbGVtZW50Lgotc3Rh
dGljIGJvb2wgaXNVUkxBbGxvd2VkKERvY3VtZW50KiBkb2MsIGNvbnN0IFN0cmluZyYgdXJsKQot
ewotICAgIGlmIChkb2MtPmZyYW1lKCktPnBhZ2UoKS0+ZnJhbWVDb3VudCgpID49IFBhZ2U6Om1h
eE51bWJlck9mRnJhbWVzKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICAvLyBXZSBhbGxv
dyBvbmUgbGV2ZWwgb2Ygc2VsZi1yZWZlcmVuY2UgYmVjYXVzZSBzb21lIHNpdGVzIGRlcGVuZCBv
biB0aGF0LgotICAgIC8vIEJ1dCB3ZSBkb24ndCBhbGxvdyBtb3JlIHRoYW4gb25lLgotICAgIEtV
UkwgY29tcGxldGVVUkwgPSBkb2MtPmNvbXBsZXRlVVJMKHVybCk7Ci0gICAgYm9vbCBmb3VuZFNl
bGZSZWZlcmVuY2UgPSBmYWxzZTsKLSAgICBmb3IgKEZyYW1lKiBmcmFtZSA9IGRvYy0+ZnJhbWUo
KTsgZnJhbWU7IGZyYW1lID0gZnJhbWUtPnRyZWUoKS0+cGFyZW50KCkpIHsKLSAgICAgICAgaWYg
KGVxdWFsSWdub3JpbmdGcmFnbWVudElkZW50aWZpZXIoZnJhbWUtPmxvYWRlcigpLT51cmwoKSwg
Y29tcGxldGVVUkwpKSB7Ci0gICAgICAgICAgICBpZiAoZm91bmRTZWxmUmVmZXJlbmNlKQotICAg
ICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgIGZvdW5kU2VsZlJlZmVyZW5j
ZSA9IHRydWU7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLXR5cGVk
ZWYgSGFzaE1hcDxTdHJpbmcsIFN0cmluZywgQ2FzZUZvbGRpbmdIYXNoPiBDbGFzc0lkVG9UeXBl
TWFwOwotCi0vLyBGSVhNRTogVGhpcyBiZWxvbmdzIGluIEhUTUxPYmplY3RFbGVtZW50LmNwcAot
c3RhdGljIENsYXNzSWRUb1R5cGVNYXAqIGNyZWF0ZUNsYXNzSWRUb1R5cGVNYXAoKQotewotICAg
IENsYXNzSWRUb1R5cGVNYXAqIG1hcCA9IG5ldyBDbGFzc0lkVG9UeXBlTWFwOwotICAgIG1hcC0+
YWRkKCJjbHNpZDpEMjdDREI2RS1BRTZELTExQ0YtOTZCOC00NDQ1NTM1NDAwMDAiLCAiYXBwbGlj
YXRpb24veC1zaG9ja3dhdmUtZmxhc2giKTsKLSAgICBtYXAtPmFkZCgiY2xzaWQ6Q0ZDREFBMDMt
OEJFNC0xMUNGLUI4NEItMDAyMEFGQkJDQ0ZBIiwgImF1ZGlvL3gtcG4tcmVhbGF1ZGlvLXBsdWdp
biIpOwotICAgIG1hcC0+YWRkKCJjbHNpZDowMkJGMjVENS04QzE3LTRCMjMtQkM4MC1EMzQ4OEFC
RERDNkIiLCAidmlkZW8vcXVpY2t0aW1lIik7Ci0gICAgbWFwLT5hZGQoImNsc2lkOjE2NkIxQkNB
LTNGOUMtMTFDRi04MDc1LTQ0NDU1MzU0MDAwMCIsICJhcHBsaWNhdGlvbi94LWRpcmVjdG9yIik7
Ci0gICAgbWFwLT5hZGQoImNsc2lkOjZCRjUyQTUyLTM5NEEtMTFEMy1CMTUzLTAwQzA0Rjc5RkFB
NiIsICJhcHBsaWNhdGlvbi94LW1wbGF5ZXIyIik7Ci0gICAgbWFwLT5hZGQoImNsc2lkOjIyRDZG
MzEyLUIwRjYtMTFEMC05NEFCLTAwODBDNzRDN0U5NSIsICJhcHBsaWNhdGlvbi94LW1wbGF5ZXIy
Iik7Ci0gICAgcmV0dXJuIG1hcDsKLX0KLQotLy8gRklYTUU6IFRoaXMgYmVsb25ncyBpbiBIVE1M
T2JqZWN0RWxlbWVudC5jcHAKLXN0YXRpYyBTdHJpbmcgc2VydmljZVR5cGVGb3JDbGFzc0lkKGNv
bnN0IFN0cmluZyYgY2xhc3NJZCkKLXsKLSAgICAvLyBSZXR1cm4gZWFybHkgaWYgY2xhc3NJZCBp
cyBlbXB0eSAoc2luY2Ugd2Ugd29uJ3QgZG8gYW55dGhpbmcgYmVsb3cpLgotICAgIC8vIEZ1cnRo
ZXJtb3JlLCBpZiBjbGFzc0lkIGlzIG51bGwsIGNhbGxpbmcgZ2V0KCkgYmVsb3cgd2lsbCBjcmFz
aC4KLSAgICBpZiAoY2xhc3NJZC5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiBTdHJpbmcoKTsK
LQotICAgIHN0YXRpYyBDbGFzc0lkVG9UeXBlTWFwKiBtYXAgPSBjcmVhdGVDbGFzc0lkVG9UeXBl
TWFwKCk7Ci0gICAgcmV0dXJuIG1hcC0+Z2V0KGNsYXNzSWQpOwotfQotCi0vLyBGSVhNRTogVGhp
cyBiZWxvbmdzIGluIEhUTUxPYmplY3RFbGVtZW50LmNwcAotc3RhdGljIHZvaWQgbWFwRGF0YVBh
cmFtVG9TcmMoVmVjdG9yPFN0cmluZz4qIHBhcmFtTmFtZXMsIFZlY3RvcjxTdHJpbmc+KiBwYXJh
bVZhbHVlcykKLXsKLSAgICAvLyBTb21lIHBsdWdpbnMgZG9uJ3QgdW5kZXJzdGFuZCB0aGUgImRh
dGEiIGF0dHJpYnV0ZSBvZiB0aGUgT0JKRUNUIHRhZyAoaS5lLiBSZWFsIGFuZCBXTVAKLSAgICAv
LyByZXF1aXJlICJzcmMiIGF0dHJpYnV0ZSkuCi0gICAgaW50IHNyY0luZGV4ID0gLTEsIGRhdGFJ
bmRleCA9IC0xOwotICAgIGZvciAodW5zaWduZWQgaW50IGkgPSAwOyBpIDwgcGFyYW1OYW1lcy0+
c2l6ZSgpOyArK2kpIHsKLSAgICAgICAgaWYgKGVxdWFsSWdub3JpbmdDYXNlKCgqcGFyYW1OYW1l
cylbaV0sICJzcmMiKSkKLSAgICAgICAgICAgIHNyY0luZGV4ID0gaTsKLSAgICAgICAgZWxzZSBp
ZiAoZXF1YWxJZ25vcmluZ0Nhc2UoKCpwYXJhbU5hbWVzKVtpXSwgImRhdGEiKSkKLSAgICAgICAg
ICAgIGRhdGFJbmRleCA9IGk7Ci0gICAgfQotCi0gICAgaWYgKHNyY0luZGV4ID09IC0xICYmIGRh
dGFJbmRleCAhPSAtMSkgewotICAgICAgICBwYXJhbU5hbWVzLT5hcHBlbmQoInNyYyIpOwotICAg
ICAgICBwYXJhbVZhbHVlcy0+YXBwZW5kKCgqcGFyYW1WYWx1ZXMpW2RhdGFJbmRleF0pOwotICAg
IH0KLX0KLQotLy8gRklYTUU6IFRoaXMgYmVsb25ncyBpbiBzb21lIGxvYWRlciBoZWFkZXI/Ci1z
dGF0aWMgYm9vbCBpc05ldHNjYXBlUGx1Z2luKEZyYW1lKiBmcmFtZSwgY29uc3QgU3RyaW5nJiB1
cmwsIGNvbnN0IFN0cmluZyYgc2VydmljZVR5cGUpCi17Ci0gICAgS1VSTCBjb21wbGV0ZWRVUkw7
Ci0gICAgaWYgKCF1cmwuaXNFbXB0eSgpKQotICAgICAgICBjb21wbGV0ZWRVUkwgPSBmcmFtZS0+
bG9hZGVyKCktPmNvbXBsZXRlVVJMKHVybCk7Ci0KLSAgICBpZiAoZnJhbWUtPmxvYWRlcigpLT5j
bGllbnQoKS0+b2JqZWN0Q29udGVudFR5cGUoY29tcGxldGVkVVJMLCBzZXJ2aWNlVHlwZSkgPT0g
T2JqZWN0Q29udGVudE5ldHNjYXBlUGx1Z2luKQotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICBy
ZXR1cm4gZmFsc2U7Ci19Ci0KLS8vIEZJWE1FOiBUaGlzIGJlbG9uZ3Mgb24gSFRNTE9iamVjdEVs
ZW1lbnQuCi1zdGF0aWMgYm9vbCBoYXNGYWxsYmFja0NvbnRlbnQoSFRNTE9iamVjdEVsZW1lbnQq
IG9iamVjdEVsZW1lbnQpCi17Ci0gICAgZm9yIChOb2RlKiBjaGlsZCA9IG9iamVjdEVsZW1lbnQt
PmZpcnN0Q2hpbGQoKTsgY2hpbGQ7IGNoaWxkID0gY2hpbGQtPm5leHRTaWJsaW5nKCkpIHsKLSAg
ICAgICAgaWYgKCghY2hpbGQtPmlzVGV4dE5vZGUoKSAmJiAhY2hpbGQtPmhhc1RhZ05hbWUocGFy
YW1UYWcpKSAvLyBEaXNjb3VudCA8cGFyYW0+Ci0gICAgICAgICAgICB8fCAoY2hpbGQtPmlzVGV4
dE5vZGUoKSAmJiAhc3RhdGljX2Nhc3Q8VGV4dCo+KGNoaWxkKS0+Y29udGFpbnNPbmx5V2hpdGVz
cGFjZSgpKSkKLSAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgIH0KLSAgICByZXR1cm4gZmFs
c2U7Ci19Ci0KLS8vIEZJWE1FOiBUaGlzIGJlbG9uZ3Mgb24gSFRNTE9iamVjdEVsZW1lbnQuCi1z
dGF0aWMgdm9pZCBwYXJhbWV0ZXJzRnJvbU9iamVjdChIVE1MT2JqZWN0RWxlbWVudCogb2JqZWN0
RWxlbWVudCwgVmVjdG9yPFN0cmluZz4mIHBhcmFtTmFtZXMsIFZlY3RvcjxTdHJpbmc+JiBwYXJh
bVZhbHVlcywgU3RyaW5nJiB1cmwsIFN0cmluZyYgc2VydmljZVR5cGUpCi17Ci0gICAgSGFzaFNl
dDxTdHJpbmdJbXBsKiwgQ2FzZUZvbGRpbmdIYXNoPiB1bmlxdWVQYXJhbU5hbWVzOwotCi0gICAg
Ly8gU2NhbiB0aGUgUEFSQU0gY2hpbGRyZW4gYW5kIHN0b3JlIHRoZWlyIG5hbWUvdmFsdWUgcGFp
cnMuCi0gICAgLy8gR2V0IHRoZSBVUkwgYW5kIHR5cGUgZnJvbSB0aGUgcGFyYW1zIGlmIHdlIGRv
bid0IGFscmVhZHkgaGF2ZSB0aGVtLgotICAgIE5vZGUqIGNoaWxkID0gb2JqZWN0RWxlbWVudC0+
Zmlyc3RDaGlsZCgpOwotICAgIHdoaWxlIChjaGlsZCkgewotICAgICAgICBpZiAoY2hpbGQtPmhh
c1RhZ05hbWUocGFyYW1UYWcpKSB7Ci0gICAgICAgICAgICBIVE1MUGFyYW1FbGVtZW50KiBwID0g
c3RhdGljX2Nhc3Q8SFRNTFBhcmFtRWxlbWVudCo+KGNoaWxkKTsKLSAgICAgICAgICAgIFN0cmlu
ZyBuYW1lID0gcC0+bmFtZSgpOwotICAgICAgICAgICAgaWYgKHVybC5pc0VtcHR5KCkgJiYgKGVx
dWFsSWdub3JpbmdDYXNlKG5hbWUsICJzcmMiKSB8fCBlcXVhbElnbm9yaW5nQ2FzZShuYW1lLCAi
bW92aWUiKSB8fCBlcXVhbElnbm9yaW5nQ2FzZShuYW1lLCAiY29kZSIpIHx8IGVxdWFsSWdub3Jp
bmdDYXNlKG5hbWUsICJ1cmwiKSkpCi0gICAgICAgICAgICAgICAgdXJsID0gZGVwcmVjYXRlZFBh
cnNlVVJMKHAtPnZhbHVlKCkpOwotICAgICAgICAgICAgLy8gRklYTUU6IHNlcnZpY2VUeXBlIGNh
bGN1bGF0aW9uIGRvZXMgbm90IGJlbG9uZyBpbiB0aGlzIGZ1bmN0aW9uLgotICAgICAgICAgICAg
aWYgKHNlcnZpY2VUeXBlLmlzRW1wdHkoKSAmJiBlcXVhbElnbm9yaW5nQ2FzZShuYW1lLCAidHlw
ZSIpKSB7Ci0gICAgICAgICAgICAgICAgc2VydmljZVR5cGUgPSBwLT52YWx1ZSgpOwotICAgICAg
ICAgICAgICAgIHNpemVfdCBwb3MgPSBzZXJ2aWNlVHlwZS5maW5kKCI7Iik7Ci0gICAgICAgICAg
ICAgICAgaWYgKHBvcyAhPSBub3RGb3VuZCkKLSAgICAgICAgICAgICAgICAgICAgc2VydmljZVR5
cGUgPSBzZXJ2aWNlVHlwZS5sZWZ0KHBvcyk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBp
ZiAoIW5hbWUuaXNFbXB0eSgpKSB7Ci0gICAgICAgICAgICAgICAgdW5pcXVlUGFyYW1OYW1lcy5h
ZGQobmFtZS5pbXBsKCkpOwotICAgICAgICAgICAgICAgIHBhcmFtTmFtZXMuYXBwZW5kKHAtPm5h
bWUoKSk7Ci0gICAgICAgICAgICAgICAgcGFyYW1WYWx1ZXMuYXBwZW5kKHAtPnZhbHVlKCkpOwot
ICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIGNoaWxkID0gY2hpbGQtPm5leHRTaWJs
aW5nKCk7Ci0gICAgfQotCi0gICAgLy8gV2hlbiBPQkpFQ1QgaXMgdXNlZCBmb3IgYW4gYXBwbGV0
IHZpYSBTdW4ncyBKYXZhIHBsdWdpbiwgdGhlIENPREVCQVNFIGF0dHJpYnV0ZSBpbiB0aGUgdGFn
Ci0gICAgLy8gcG9pbnRzIHRvIHRoZSBKYXZhIHBsdWdpbiBpdHNlbGYgKGFuIEFjdGl2ZVggY29t
cG9uZW50KSB3aGlsZSB0aGUgYWN0dWFsIGFwcGxldCBDT0RFQkFTRSBpcwotICAgIC8vIGluIGEg
UEFSQU0gdGFnLiBTZWUgPGh0dHA6Ly9qYXZhLnN1bi5jb20vcHJvZHVjdHMvcGx1Z2luLzEuMi9k
b2NzL3RhZ3MuaHRtbD4uIFRoaXMgbWVhbnMKLSAgICAvLyB3ZSBoYXZlIHRvIGV4cGxpY2l0bHkg
c3VwcHJlc3MgdGhlIHRhZydzIENPREVCQVNFIGF0dHJpYnV0ZSBpZiB0aGVyZSBpcyBub25lIGlu
IGEgUEFSQU0sCi0gICAgLy8gZWxzZSBvdXIgSmF2YSBwbHVnaW4gd2lsbCBtaXNpbnRlcnByZXQg
aXQuIFs0MDA0NTMxXQotICAgIFN0cmluZyBjb2RlYmFzZTsKLSAgICBpZiAoTUlNRVR5cGVSZWdp
c3RyeTo6aXNKYXZhQXBwbGV0TUlNRVR5cGUoc2VydmljZVR5cGUpKSB7Ci0gICAgICAgIGNvZGVi
YXNlID0gImNvZGViYXNlIjsKLSAgICAgICAgdW5pcXVlUGFyYW1OYW1lcy5hZGQoY29kZWJhc2Uu
aW1wbCgpKTsgLy8gcHJldGVuZCB3ZSBmb3VuZCBpdCBpbiBhIFBBUkFNIGFscmVhZHkKLSAgICB9
Ci0KLSAgICAvLyBUdXJuIHRoZSBhdHRyaWJ1dGVzIG9mIHRoZSA8b2JqZWN0PiBlbGVtZW50IGlu
dG8gYXJyYXlzLCBidXQgZG9uJ3Qgb3ZlcnJpZGUgPHBhcmFtPiB2YWx1ZXMuCi0gICAgTmFtZWRO
b2RlTWFwKiBhdHRyaWJ1dGVzID0gb2JqZWN0RWxlbWVudC0+YXR0cmlidXRlcygpOwotICAgIGlm
IChhdHRyaWJ1dGVzKSB7Ci0gICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBhdHRyaWJ1
dGVzLT5sZW5ndGgoKTsgKytpKSB7Ci0gICAgICAgICAgICBBdHRyaWJ1dGUqIGl0ID0gYXR0cmli
dXRlcy0+YXR0cmlidXRlSXRlbShpKTsKLSAgICAgICAgICAgIGNvbnN0IEF0b21pY1N0cmluZyYg
bmFtZSA9IGl0LT5uYW1lKCkubG9jYWxOYW1lKCk7Ci0gICAgICAgICAgICBpZiAoIXVuaXF1ZVBh
cmFtTmFtZXMuY29udGFpbnMobmFtZS5pbXBsKCkpKSB7Ci0gICAgICAgICAgICAgICAgcGFyYW1O
YW1lcy5hcHBlbmQobmFtZS5zdHJpbmcoKSk7Ci0gICAgICAgICAgICAgICAgcGFyYW1WYWx1ZXMu
YXBwZW5kKGl0LT52YWx1ZSgpLnN0cmluZygpKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQot
ICAgIH0KLQotICAgIG1hcERhdGFQYXJhbVRvU3JjKCZwYXJhbU5hbWVzLCAmcGFyYW1WYWx1ZXMp
OwotCi0gICAgLy8gSWYgd2Ugc3RpbGwgZG9uJ3QgaGF2ZSBhIHR5cGUsIHRyeSB0byBtYXAgZnJv
bSBhIHNwZWNpZmljIENMQVNTSUQgdG8gYSB0eXBlLgotICAgIGlmIChzZXJ2aWNlVHlwZS5pc0Vt
cHR5KCkpCi0gICAgICAgIHNlcnZpY2VUeXBlID0gc2VydmljZVR5cGVGb3JDbGFzc0lkKG9iamVj
dEVsZW1lbnQtPmNsYXNzSWQoKSk7Ci19Ci0KKyAgICAKIC8vIEZJWE1FOiBUaGlzIGJlbG9uZ3Mg
b24gSFRNTE9iamVjdEVsZW1lbnQsIEhUTUxQbHVnaW5FbGVtZW50IG9yIEhUTUxGcmFtZU93bmVy
RWxlbWVudC4KIHN0YXRpYyB2b2lkIHVwZGF0ZVdpZGdldEZvck9iamVjdEVsZW1lbnQoSFRNTE9i
amVjdEVsZW1lbnQqIG9iamVjdEVsZW1lbnQsIGJvb2wgb25seUNyZWF0ZU5vbk5ldHNjYXBlUGx1
Z2lucykKIHsKKyAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIEFTU0VSVChvYmplY3RFbGVtZW50LT5u
ZWVkc1dpZGdldFVwZGF0ZSgpKSwgYnV0IGN1cnJlbnRseQorICAgIC8vIEZyYW1lVmlldzo6dXBk
YXRlV2lkZ2V0KCkgY2FsbHMgdXBkYXRlV2lkZ2V0KGZhbHNlKSB3aXRob3V0IGNoZWNraW5nIGlm
CisgICAgLy8gdGhlIHdpZGdldCBhY3R1YWxseSBuZWVkcyB1cGRhdGluZyEKICAgICBvYmplY3RF
bGVtZW50LT5zZXROZWVkc1dpZGdldFVwZGF0ZShmYWxzZSk7CisgICAgLy8gRklYTUU6IFRoaXMg
c2hvdWxkIEFTU0VSVCBpc0ZpbmlzaGVkUGFyc2luZ0NoaWxkcmVuKCkgaW5zdGVhZC4KICAgICBp
ZiAoIW9iamVjdEVsZW1lbnQtPmlzRmluaXNoZWRQYXJzaW5nQ2hpbGRyZW4oKSkKICAgICAgICAg
cmV0dXJuOwogCi0gICAgRnJhbWUqIGZyYW1lID0gb2JqZWN0RWxlbWVudC0+ZG9jdW1lbnQoKS0+
ZnJhbWUoKTsKICAgICBTdHJpbmcgdXJsID0gb2JqZWN0RWxlbWVudC0+dXJsKCk7CiAgICAgU3Ry
aW5nIHNlcnZpY2VUeXBlID0gb2JqZWN0RWxlbWVudC0+c2VydmljZVR5cGUoKTsKIAogICAgIFZl
Y3RvcjxTdHJpbmc+IHBhcmFtTmFtZXM7CiAgICAgVmVjdG9yPFN0cmluZz4gcGFyYW1WYWx1ZXM7
Ci0gICAgcGFyYW1ldGVyc0Zyb21PYmplY3Qob2JqZWN0RWxlbWVudCwgcGFyYW1OYW1lcywgcGFy
YW1WYWx1ZXMsIHVybCwgc2VydmljZVR5cGUpOworICAgIG9iamVjdEVsZW1lbnQtPnBhcmFtZXRl
cnNGb3JQbHVnaW4ocGFyYW1OYW1lcywgcGFyYW1WYWx1ZXMsIHVybCwgc2VydmljZVR5cGUpOwog
Ci0gICAgaWYgKCFpc1VSTEFsbG93ZWQob2JqZWN0RWxlbWVudC0+ZG9jdW1lbnQoKSwgdXJsKSkK
KyAgICAvLyBOb3RlOiB1cmwgaXMgbW9kaWZpZWQgYWJvdmUgYnkgcGFyYW1ldGVyc0ZvclBsdWdp
bi4KKyAgICBpZiAoIW9iamVjdEVsZW1lbnQtPmFsbG93ZWRUb0xvYWRGcmFtZVVSTCh1cmwpKQog
ICAgICAgICByZXR1cm47CiAKLSAgICBib29sIGZhbGxiYWNrQ29udGVudCA9IGhhc0ZhbGxiYWNr
Q29udGVudChvYmplY3RFbGVtZW50KTsKKyAgICBib29sIGZhbGxiYWNrQ29udGVudCA9IG9iamVj
dEVsZW1lbnQtPmhhc0ZhbGxiYWNrQ29udGVudCgpOwogICAgIG9iamVjdEVsZW1lbnQtPnJlbmRl
ckVtYmVkZGVkT2JqZWN0KCktPnNldEhhc0ZhbGxiYWNrQ29udGVudChmYWxsYmFja0NvbnRlbnQp
OwogCi0gICAgaWYgKG9ubHlDcmVhdGVOb25OZXRzY2FwZVBsdWdpbnMgJiYgaXNOZXRzY2FwZVBs
dWdpbihmcmFtZSwgdXJsLCBzZXJ2aWNlVHlwZSkpCisgICAgaWYgKG9ubHlDcmVhdGVOb25OZXRz
Y2FwZVBsdWdpbnMgJiYgb2JqZWN0RWxlbWVudC0+d291bGRMb2FkQXNOZXRzY2FwZVBsdWdpbih1
cmwsIHNlcnZpY2VUeXBlKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgYm9vbCBiZWZvcmVMb2Fk
QWxsb3dlZExvYWQgPSBvYmplY3RFbGVtZW50LT5kaXNwYXRjaEJlZm9yZUxvYWRFdmVudCh1cmwp
OwpAQCAtMjg1LDUwICsxMzksNDEgQEAgc3RhdGljIHZvaWQgdXBkYXRlV2lkZ2V0Rm9yT2JqZWN0
RWxlbWVudChIVE1MT2JqZWN0RWxlbWVudCogb2JqZWN0RWxlbWVudCwgYm9vbAogICAgIGlmICgh
b2JqZWN0RWxlbWVudC0+cmVuZGVyZXIoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgYm9vbCBz
dWNjZXNzID0gYmVmb3JlTG9hZEFsbG93ZWRMb2FkICYmIGZyYW1lLT5sb2FkZXIoKS0+c3ViZnJh
bWVMb2FkZXIoKS0+cmVxdWVzdE9iamVjdChvYmplY3RFbGVtZW50LCB1cmwsIG9iamVjdEVsZW1l
bnQtPmdldEF0dHJpYnV0ZShuYW1lQXR0ciksIHNlcnZpY2VUeXBlLCBwYXJhbU5hbWVzLCBwYXJh
bVZhbHVlcyk7CisgICAgU3ViZnJhbWVMb2FkZXIqIGxvYWRlciA9IG9iamVjdEVsZW1lbnQtPmRv
Y3VtZW50KCktPmZyYW1lKCktPmxvYWRlcigpLT5zdWJmcmFtZUxvYWRlcigpOworICAgIGJvb2wg
c3VjY2VzcyA9IGJlZm9yZUxvYWRBbGxvd2VkTG9hZCAmJiBsb2FkZXItPnJlcXVlc3RPYmplY3Qo
b2JqZWN0RWxlbWVudCwgdXJsLCBvYmplY3RFbGVtZW50LT5nZXRBdHRyaWJ1dGUobmFtZUF0dHIp
LCBzZXJ2aWNlVHlwZSwgcGFyYW1OYW1lcywgcGFyYW1WYWx1ZXMpOwogCiAgICAgaWYgKCFzdWNj
ZXNzICYmIGZhbGxiYWNrQ29udGVudCkKICAgICAgICAgb2JqZWN0RWxlbWVudC0+cmVuZGVyRmFs
bGJhY2tDb250ZW50KCk7CiB9CiAKLS8vIEZJWE1FOiBUaGlzIGJlbG9uZ3Mgb24gSFRNTEVtYmVk
RWxlbWVudC4KLXN0YXRpYyB2b2lkIHBhcmFtZXRlcnNGcm9tRW1iZWQoSFRNTEVtYmVkRWxlbWVu
dCogZW1iZWRFbGVtZW50LCBWZWN0b3I8U3RyaW5nPiYgcGFyYW1OYW1lcywgVmVjdG9yPFN0cmlu
Zz4mIHBhcmFtVmFsdWVzKQotewotICAgIE5hbWVkTm9kZU1hcCogYXR0cmlidXRlcyA9IGVtYmVk
RWxlbWVudC0+YXR0cmlidXRlcygpOwotICAgIGlmIChhdHRyaWJ1dGVzKSB7Ci0gICAgICAgIGZv
ciAodW5zaWduZWQgaSA9IDA7IGkgPCBhdHRyaWJ1dGVzLT5sZW5ndGgoKTsgKytpKSB7Ci0gICAg
ICAgICAgICBBdHRyaWJ1dGUqIGl0ID0gYXR0cmlidXRlcy0+YXR0cmlidXRlSXRlbShpKTsKLSAg
ICAgICAgICAgIHBhcmFtTmFtZXMuYXBwZW5kKGl0LT5uYW1lKCkubG9jYWxOYW1lKCkuc3RyaW5n
KCkpOwotICAgICAgICAgICAgcGFyYW1WYWx1ZXMuYXBwZW5kKGl0LT52YWx1ZSgpLnN0cmluZygp
KTsKLSAgICAgICAgfQotICAgIH0KLX0KLQogLy8gRklYTUU6IFRoaXMgYmVsb25ncyBvbiBIVE1M
RW1iZWRFbGVtZW50LCBIVE1MUGx1Z2luRWxlbWVudCBvciBIVE1MRnJhbWVPd25lckVsZW1lbnQu
CiBzdGF0aWMgdm9pZCB1cGRhdGVXaWRnZXRGb3JFbWJlZEVsZW1lbnQoSFRNTEVtYmVkRWxlbWVu
dCogZW1iZWRFbGVtZW50LCBib29sIG9ubHlDcmVhdGVOb25OZXRzY2FwZVBsdWdpbnMpCiB7Ci0g
ICAgRnJhbWUqIGZyYW1lID0gZW1iZWRFbGVtZW50LT5kb2N1bWVudCgpLT5mcmFtZSgpOwotICAg
IFN0cmluZyB1cmwgPSBlbWJlZEVsZW1lbnQtPnVybCgpOwotICAgIFN0cmluZyBzZXJ2aWNlVHlw
ZSA9IGVtYmVkRWxlbWVudC0+c2VydmljZVR5cGUoKTsKLQorICAgIC8vIEZJWE1FOiBXZSBzaG91
bGQgQVNTRVJUKGVtYmVkRWxlbWVudC0+bmVlZHNXaWRnZXRVcGRhdGUoKSksIGJ1dCBjdXJyZW50
bHkKKyAgICAvLyBGcmFtZVZpZXc6OnVwZGF0ZVdpZGdldCgpIGNhbGxzIHVwZGF0ZVdpZGdldChm
YWxzZSkgd2l0aG91dCBjaGVja2luZyBpZgorICAgIC8vIHRoZSB3aWRnZXQgYWN0dWFsbHkgbmVl
ZHMgdXBkYXRpbmchCiAgICAgZW1iZWRFbGVtZW50LT5zZXROZWVkc1dpZGdldFVwZGF0ZShmYWxz
ZSk7CiAKKyAgICBTdHJpbmcgdXJsID0gZW1iZWRFbGVtZW50LT51cmwoKTsKKyAgICBTdHJpbmcg
c2VydmljZVR5cGUgPSBlbWJlZEVsZW1lbnQtPnNlcnZpY2VUeXBlKCk7CiAgICAgaWYgKHVybC5p
c0VtcHR5KCkgJiYgc2VydmljZVR5cGUuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm47Ci0gICAg
aWYgKCFpc1VSTEFsbG93ZWQoZW1iZWRFbGVtZW50LT5kb2N1bWVudCgpLCB1cmwpKQorICAgIGlm
ICghZW1iZWRFbGVtZW50LT5hbGxvd2VkVG9Mb2FkRnJhbWVVUkwodXJsKSkKKyAgICAgICAgcmV0
dXJuOworCisgICAgaWYgKG9ubHlDcmVhdGVOb25OZXRzY2FwZVBsdWdpbnMgJiYgZW1iZWRFbGVt
ZW50LT53b3VsZExvYWRBc05ldHNjYXBlUGx1Z2luKHVybCwgc2VydmljZVR5cGUpKQogICAgICAg
ICByZXR1cm47CiAKICAgICBWZWN0b3I8U3RyaW5nPiBwYXJhbU5hbWVzOwogICAgIFZlY3RvcjxT
dHJpbmc+IHBhcmFtVmFsdWVzOwotICAgIHBhcmFtZXRlcnNGcm9tRW1iZWQoZW1iZWRFbGVtZW50
LCBwYXJhbU5hbWVzLCBwYXJhbVZhbHVlcyk7CisgICAgZW1iZWRFbGVtZW50LT5wYXJhbWV0ZXJz
Rm9yUGx1Z2luKHBhcmFtTmFtZXMsIHBhcmFtVmFsdWVzKTsKIAotICAgIGlmIChvbmx5Q3JlYXRl
Tm9uTmV0c2NhcGVQbHVnaW5zICYmIGlzTmV0c2NhcGVQbHVnaW4oZnJhbWUsIHVybCwgc2Vydmlj
ZVR5cGUpKQorICAgIGlmICghZW1iZWRFbGVtZW50LT5kaXNwYXRjaEJlZm9yZUxvYWRFdmVudCh1
cmwpKQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAoZW1iZWRFbGVtZW50LT5kaXNwYXRjaEJl
Zm9yZUxvYWRFdmVudCh1cmwpKSB7Ci0gICAgICAgIC8vIEZJWE1FOiBiZWZvcmVMb2FkIGNvdWxk
IGhhdmUgZGV0YWNoZWQgdGhlIHJlbmRlcmVyISAgSnVzdCBsaWtlIGluIHRoZSA8b2JqZWN0PiBj
YXNlIGFib3ZlLgotICAgICAgICBmcmFtZS0+bG9hZGVyKCktPnN1YmZyYW1lTG9hZGVyKCktPnJl
cXVlc3RPYmplY3QoZW1iZWRFbGVtZW50LCB1cmwsIGVtYmVkRWxlbWVudC0+Z2V0QXR0cmlidXRl
KG5hbWVBdHRyKSwgc2VydmljZVR5cGUsIHBhcmFtTmFtZXMsIHBhcmFtVmFsdWVzKTsKLSAgICB9
CisgICAgU3ViZnJhbWVMb2FkZXIqIGxvYWRlciA9IGVtYmVkRWxlbWVudC0+ZG9jdW1lbnQoKS0+
ZnJhbWUoKS0+bG9hZGVyKCktPnN1YmZyYW1lTG9hZGVyKCk7CisgICAgLy8gRklYTUU6IGJlZm9y
ZUxvYWQgY291bGQgaGF2ZSBkZXRhY2hlZCB0aGUgcmVuZGVyZXIhICBKdXN0IGxpa2UgaW4gdGhl
IDxvYmplY3Q+IGNhc2UgYWJvdmUuCisgICAgbG9hZGVyLT5yZXF1ZXN0T2JqZWN0KGVtYmVkRWxl
bWVudCwgdXJsLCBlbWJlZEVsZW1lbnQtPmdldEF0dHJpYnV0ZShuYW1lQXR0ciksIHNlcnZpY2VU
eXBlLCBwYXJhbU5hbWVzLCBwYXJhbVZhbHVlcyk7CiB9CiAKICNpZiBFTkFCTEUoUExVR0lOX1BS
T1hZX0ZPUl9WSURFTykKQEAgLTM2OSw2ICsyMTQsOCBAQCB2b2lkIFJlbmRlckVtYmVkZGVkT2Jq
ZWN0Ojp1cGRhdGVXaWRnZXQoYm9vbCBvbmx5Q3JlYXRlTm9uTmV0c2NhcGVQbHVnaW5zKQogICAg
ICAgICB1cGRhdGVXaWRnZXRGb3JNZWRpYUVsZW1lbnQobWVkaWFFbGVtZW50LCBvbmx5Q3JlYXRl
Tm9uTmV0c2NhcGVQbHVnaW5zKTsKICAgICB9CiAjZW5kaWYKKyAgICBlbHNlCisgICAgICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOwogfQogCiB2b2lkIFJlbmRlckVtYmVkZGVkT2JqZWN0OjpzZXRT
aG93c01pc3NpbmdQbHVnaW5JbmRpY2F0b3IoKQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>66356</attachid>
            <date>2010-09-02 04:44:49 -0700</date>
            <delta_ts>2010-09-02 21:04:56 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-45055-20100902044448.patch</filename>
            <type>text/plain</type>
            <size>27778</size>
            <attacher name="Eric Seidel (no email)">eric</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
MzYxNTk5MjJlMjE1MTcxYzI0YTQwYTM3MGE1M2I3ZWM0OTc0NzM3OC4uMzdkMDYzNzUxNzIzYjll
ZGY0YTUyNDM1ZTEzYTNkZDZjMTJlNjY2OSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cK
KysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0OCBAQAorMjAxMC0wOS0wMSAgRXJp
YyBTZWlkZWwgIDxlcmljQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGltaXRy
aSBHbGF6a292LgorCisgICAgICAgIE1vdmUgbW9yZSBjb2RlIGZyb20gUmVuZGVyRW1iZWRkZWRP
YmplY3QgaW50byB0aGUgRE9NCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD00NTA1NQorCisgICAgICAgIE5vIGxvZ2ljIGNoYW5nZXMgaGVyZSwganVzdCB0
YWtpbmcgdGhlIGNvZGUgd2hpY2gKKyAgICAgICAgSSByaXBwZWQgb3V0IG9mIFJlbmRlckVtYmVk
ZGVkT2JqZWN0Ojp1cGRhdGVXaWRnZXQKKyAgICAgICAgaW50byBzdGF0aWMgbWV0aG9kcyBiZWZv
cmUgYW5kIG1vdmluZyBpdCBpbnRvCisgICAgICAgIHRoZSBhcHBsaWNhYmxlIERPTSBjbGFzc2Vz
LgorCisgICAgICAgIEhUTUxPYmplY3RFbGVtZW50OjpwYXJhbWV0ZXJzRm9yUGx1Z2luIGRvZXMg
dG9vIG11Y2gKKyAgICAgICAgYnV0IGluIG9yZGVyIHRvIGZpeCBpdCBJIG1heSBuZWVkIHRvIGFk
ZCBhIFBsdWdpblBhcmFtZXRlcnMKKyAgICAgICAgY2xhc3Mgc28gd2UgY2FuIGFzayB0aGluZ3Mg
YWJvdXQgdGhlIHBhcmFtZXRlcnMuIDxvYmplY3Q+CisgICAgICAgIG5lZWRzIHRvIGdldCBtdWx0
aXBsZSBiaXRzIG9mIGluZm9ybWF0aW9uIG91dCBvZiBpdHMgcGFyYW1ldGVycworICAgICAgICBh
cnJheS4gIFJpZ2h0IG5vdyBpdCBkb2VzIGl0IGFsbCBpbiBvbmUgd2Fsay4gIEluIG9yZGVyIHRv
IHNoYXJlCisgICAgICAgIGNvZGUgd2l0aCBIVE1MRW1iZWRFbGVtZW50LCB3ZSBuZWVkIHRoZSAi
Z2VuZXJhdGUgdGhlIHBhcmFtcyBhcnJheSIKKyAgICAgICAgY29kZSB0byBiZSBzZXBhcmF0ZSBm
cm9tIHRoZSAibWFrZSBhZHZhbmNlZCA8b2JqZWN0PiBzcGVjaWZpYyBkZWNpc2lvbgorICAgICAg
ICBmcm9tIHRoZSBwYXJhbXMgYXJyYXkiLiAgQnV0IHRoYXQgd2lsbCBuZWVkIHRvIGJlIGluIGEg
bGF0ZXIgcGF0Y2guCisKKyAgICAgICAgTm8gZnVuY3Rpb25hbCBjaGFuZ2VzLCB0aHVzIG5vIHRl
c3RzLgorCisgICAgICAgICogaHRtbC9IVE1MRW1iZWRFbGVtZW50LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkhUTUxFbWJlZEVsZW1lbnQ6OnBhcmFtZXRlcnNGb3JQbHVnaW4pOgorICAgICAgICAq
IGh0bWwvSFRNTEVtYmVkRWxlbWVudC5oOgorICAgICAgICAqIGh0bWwvSFRNTE9iamVjdEVsZW1l
bnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlQ2xhc3NJZFRvVHlwZU1hcCk6CisgICAg
ICAgIChXZWJDb3JlOjpzZXJ2aWNlVHlwZUZvckNsYXNzSWQpOgorICAgICAgICAoV2ViQ29yZTo6
bWFwRGF0YVBhcmFtVG9TcmMpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE9iamVjdEVsZW1lbnQ6
OnBhcmFtZXRlcnNGb3JQbHVnaW4pOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE9iamVjdEVsZW1l
bnQ6Omhhc0ZhbGxiYWNrQ29udGVudCk6CisgICAgICAgICogaHRtbC9IVE1MT2JqZWN0RWxlbWVu
dC5oOgorICAgICAgICAqIGh0bWwvSFRNTFBsdWdJbkltYWdlRWxlbWVudC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpIVE1MUGx1Z0luSW1hZ2VFbGVtZW50OjphbGxvd2VkVG9Mb2FkRnJhbWVVUkwp
OgorICAgICAgICAoV2ViQ29yZTo6SFRNTFBsdWdJbkltYWdlRWxlbWVudDo6d291bGRMb2FkQXNO
ZXRzY2FwZVBsdWdpbik6CisgICAgICAgIChXZWJDb3JlOjpIVE1MUGx1Z0luSW1hZ2VFbGVtZW50
OjpkZXRhY2gpOiAKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxQbHVnSW5JbWFnZUVsZW1lbnQ6OnVw
ZGF0ZVdpZGdldElmTmVjZXNzYXJ5KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxQbHVnSW5JbWFn
ZUVsZW1lbnQ6OnVwZGF0ZVdpZGdldENhbGxiYWNrKToKKyAgICAgICAgKiBodG1sL0hUTUxQbHVn
SW5JbWFnZUVsZW1lbnQuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyRW1iZWRkZWRPYmpl
Y3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6dXBkYXRlV2lkZ2V0Rm9yT2JqZWN0RWxlbWVudCk6
CisgICAgICAgIChXZWJDb3JlOjp1cGRhdGVXaWRnZXRGb3JFbWJlZEVsZW1lbnQpOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyRW1iZWRkZWRPYmplY3Q6OnVwZGF0ZVdpZGdldCk6CisKIDIwMTAt
MDktMDIgIEVyaWMgU2VpZGVsICA8ZXJpY0B3ZWJraXQub3JnPgogCiAgICAgICAgIFJldmlld2Vk
IGJ5IERpbWl0cmkgR2xhemtvdi4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9IVE1MRW1iZWRF
bGVtZW50LmNwcCBiL1dlYkNvcmUvaHRtbC9IVE1MRW1iZWRFbGVtZW50LmNwcAppbmRleCBlZWIy
OGU3ZGNiNTIzNDJjNWUzM2UyYjgyNWFiZTUzMzJhMWRhYTA3Li43NGI5NzE1Y2NjMDQzOTI3M2Y0
Y2QwMTZjNzg4MmNiY2RmNjI0ZjEwIDEwMDY0NAotLS0gYS9XZWJDb3JlL2h0bWwvSFRNTEVtYmVk
RWxlbWVudC5jcHAKKysrIGIvV2ViQ29yZS9odG1sL0hUTUxFbWJlZEVsZW1lbnQuY3BwCkBAIC0x
MjAsNiArMTIwLDE5IEBAIHZvaWQgSFRNTEVtYmVkRWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1
dGUoQXR0cmlidXRlKiBhdHRyKQogICAgICAgICBIVE1MUGx1Z0luSW1hZ2VFbGVtZW50OjpwYXJz
ZU1hcHBlZEF0dHJpYnV0ZShhdHRyKTsKIH0KIAordm9pZCBIVE1MRW1iZWRFbGVtZW50OjpwYXJh
bWV0ZXJzRm9yUGx1Z2luKFZlY3RvcjxTdHJpbmc+JiBwYXJhbU5hbWVzLCBWZWN0b3I8U3RyaW5n
PiYgcGFyYW1WYWx1ZXMpCit7CisgICAgTmFtZWROb2RlTWFwKiBhdHRyaWJ1dGVzID0gdGhpcy0+
YXR0cmlidXRlcyh0cnVlKTsKKyAgICBpZiAoIWF0dHJpYnV0ZXMpCisgICAgICAgIHJldHVybjsK
KworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBhdHRyaWJ1dGVzLT5sZW5ndGgoKTsgKytp
KSB7CisgICAgICAgIEF0dHJpYnV0ZSogaXQgPSBhdHRyaWJ1dGVzLT5hdHRyaWJ1dGVJdGVtKGkp
OworICAgICAgICBwYXJhbU5hbWVzLmFwcGVuZChpdC0+bG9jYWxOYW1lKCkpOworICAgICAgICBw
YXJhbVZhbHVlcy5hcHBlbmQoaXQtPnZhbHVlKCkpOworICAgIH0KK30KKwogYm9vbCBIVE1MRW1i
ZWRFbGVtZW50OjpyZW5kZXJlcklzTmVlZGVkKFJlbmRlclN0eWxlKiBzdHlsZSkKIHsKICAgICBp
ZiAoaXNJbWFnZVR5cGUoKSkKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9IVE1MRW1iZWRFbGVt
ZW50LmggYi9XZWJDb3JlL2h0bWwvSFRNTEVtYmVkRWxlbWVudC5oCmluZGV4IGUyN2I3MTcyNjAy
OTFlM2UyY2VkMTcyNzc2ZGU2NjkxYjVmMjdjYzkuLmQ0YTRkN2ZhN2ZmN2ZiYzNhNmZlMzA5NzBm
MjE0YjM5ZGQwNmJlN2QgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaHRtbC9IVE1MRW1iZWRFbGVtZW50
LmgKKysrIGIvV2ViQ29yZS9odG1sL0hUTUxFbWJlZEVsZW1lbnQuaApAQCAtMzEsNiArMzEsOCBA
QCBjbGFzcyBIVE1MRW1iZWRFbGVtZW50IDogcHVibGljIEhUTUxQbHVnSW5JbWFnZUVsZW1lbnQg
ewogcHVibGljOgogICAgIHN0YXRpYyBQYXNzUmVmUHRyPEhUTUxFbWJlZEVsZW1lbnQ+IGNyZWF0
ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQqLCBib29sIGNyZWF0ZWRCeVBhcnNlcik7
CiAKKyAgICB2b2lkIHBhcmFtZXRlcnNGb3JQbHVnaW4oVmVjdG9yPFN0cmluZz4mIHBhcmFtTmFt
ZXMsIFZlY3RvcjxTdHJpbmc+JiBwYXJhbVZhbHVlcyk7CisKIHByaXZhdGU6CiAgICAgSFRNTEVt
YmVkRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQqLCBib29sIGNyZWF0ZWRC
eVBhcnNlcik7CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9IVE1MT2JqZWN0RWxlbWVudC5j
cHAgYi9XZWJDb3JlL2h0bWwvSFRNTE9iamVjdEVsZW1lbnQuY3BwCmluZGV4IGU4ODg0ZWZmNDRj
YTRiYzY1N2ZhMWUwZTI5NjMxNDRhMjA3OWEwNTAuLjJiODc5YmEzMmZiZTFhODQ4MmE1YzA1YzYz
MzNjOTI3YTZlZTc2ZDYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaHRtbC9IVE1MT2JqZWN0RWxlbWVu
dC5jcHAKKysrIGIvV2ViQ29yZS9odG1sL0hUTUxPYmplY3RFbGVtZW50LmNwcApAQCAtMzMsNiAr
MzMsNyBAQAogI2luY2x1ZGUgIkhUTUxGb3JtRWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxJbWFn
ZUxvYWRlci5oIgogI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgorI2luY2x1ZGUgIkhUTUxQYXJhbUVs
ZW1lbnQuaCIKICNpbmNsdWRlICJNSU1FVHlwZVJlZ2lzdHJ5LmgiCiAjaW5jbHVkZSAiUmVuZGVy
RW1iZWRkZWRPYmplY3QuaCIKICNpbmNsdWRlICJSZW5kZXJJbWFnZS5oIgpAQCAtMTE1LDYgKzEx
NiwxMjYgQEAgdm9pZCBIVE1MT2JqZWN0RWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUoQXR0
cmlidXRlKiBhdHRyKQogICAgICAgICBIVE1MUGx1Z0luSW1hZ2VFbGVtZW50OjpwYXJzZU1hcHBl
ZEF0dHJpYnV0ZShhdHRyKTsKIH0KIAordHlwZWRlZiBIYXNoTWFwPFN0cmluZywgU3RyaW5nLCBD
YXNlRm9sZGluZ0hhc2g+IENsYXNzSWRUb1R5cGVNYXA7CisKK3N0YXRpYyBDbGFzc0lkVG9UeXBl
TWFwKiBjcmVhdGVDbGFzc0lkVG9UeXBlTWFwKCkKK3sKKyAgICBDbGFzc0lkVG9UeXBlTWFwKiBt
YXAgPSBuZXcgQ2xhc3NJZFRvVHlwZU1hcDsKKyAgICBtYXAtPmFkZCgiY2xzaWQ6RDI3Q0RCNkUt
QUU2RC0xMUNGLTk2QjgtNDQ0NTUzNTQwMDAwIiwgImFwcGxpY2F0aW9uL3gtc2hvY2t3YXZlLWZs
YXNoIik7CisgICAgbWFwLT5hZGQoImNsc2lkOkNGQ0RBQTAzLThCRTQtMTFDRi1CODRCLTAwMjBB
RkJCQ0NGQSIsICJhdWRpby94LXBuLXJlYWxhdWRpby1wbHVnaW4iKTsKKyAgICBtYXAtPmFkZCgi
Y2xzaWQ6MDJCRjI1RDUtOEMxNy00QjIzLUJDODAtRDM0ODhBQkREQzZCIiwgInZpZGVvL3F1aWNr
dGltZSIpOworICAgIG1hcC0+YWRkKCJjbHNpZDoxNjZCMUJDQS0zRjlDLTExQ0YtODA3NS00NDQ1
NTM1NDAwMDAiLCAiYXBwbGljYXRpb24veC1kaXJlY3RvciIpOworICAgIG1hcC0+YWRkKCJjbHNp
ZDo2QkY1MkE1Mi0zOTRBLTExRDMtQjE1My0wMEMwNEY3OUZBQTYiLCAiYXBwbGljYXRpb24veC1t
cGxheWVyMiIpOworICAgIG1hcC0+YWRkKCJjbHNpZDoyMkQ2RjMxMi1CMEY2LTExRDAtOTRBQi0w
MDgwQzc0QzdFOTUiLCAiYXBwbGljYXRpb24veC1tcGxheWVyMiIpOworICAgIHJldHVybiBtYXA7
Cit9CisKK3N0YXRpYyBTdHJpbmcgc2VydmljZVR5cGVGb3JDbGFzc0lkKGNvbnN0IFN0cmluZyYg
Y2xhc3NJZCkKK3sKKyAgICAvLyBSZXR1cm4gZWFybHkgaWYgY2xhc3NJZCBpcyBlbXB0eSAoc2lu
Y2Ugd2Ugd29uJ3QgZG8gYW55dGhpbmcgYmVsb3cpLgorICAgIC8vIEZ1cnRoZXJtb3JlLCBpZiBj
bGFzc0lkIGlzIG51bGwsIGNhbGxpbmcgZ2V0KCkgYmVsb3cgd2lsbCBjcmFzaC4KKyAgICBpZiAo
Y2xhc3NJZC5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybiBTdHJpbmcoKTsKKyAgICAKKyAgICBz
dGF0aWMgQ2xhc3NJZFRvVHlwZU1hcCogbWFwID0gY3JlYXRlQ2xhc3NJZFRvVHlwZU1hcCgpOwor
ICAgIHJldHVybiBtYXAtPmdldChjbGFzc0lkKTsKK30KKworc3RhdGljIHZvaWQgbWFwRGF0YVBh
cmFtVG9TcmMoVmVjdG9yPFN0cmluZz4qIHBhcmFtTmFtZXMsIFZlY3RvcjxTdHJpbmc+KiBwYXJh
bVZhbHVlcykKK3sKKyAgICAvLyBTb21lIHBsdWdpbnMgZG9uJ3QgdW5kZXJzdGFuZCB0aGUgImRh
dGEiIGF0dHJpYnV0ZSBvZiB0aGUgT0JKRUNUIHRhZyAoaS5lLiBSZWFsIGFuZCBXTVAKKyAgICAv
LyByZXF1aXJlICJzcmMiIGF0dHJpYnV0ZSkuCisgICAgaW50IHNyY0luZGV4ID0gLTEsIGRhdGFJ
bmRleCA9IC0xOworICAgIGZvciAodW5zaWduZWQgaW50IGkgPSAwOyBpIDwgcGFyYW1OYW1lcy0+
c2l6ZSgpOyArK2kpIHsKKyAgICAgICAgaWYgKGVxdWFsSWdub3JpbmdDYXNlKCgqcGFyYW1OYW1l
cylbaV0sICJzcmMiKSkKKyAgICAgICAgICAgIHNyY0luZGV4ID0gaTsKKyAgICAgICAgZWxzZSBp
ZiAoZXF1YWxJZ25vcmluZ0Nhc2UoKCpwYXJhbU5hbWVzKVtpXSwgImRhdGEiKSkKKyAgICAgICAg
ICAgIGRhdGFJbmRleCA9IGk7CisgICAgfQorICAgIAorICAgIGlmIChzcmNJbmRleCA9PSAtMSAm
JiBkYXRhSW5kZXggIT0gLTEpIHsKKyAgICAgICAgcGFyYW1OYW1lcy0+YXBwZW5kKCJzcmMiKTsK
KyAgICAgICAgcGFyYW1WYWx1ZXMtPmFwcGVuZCgoKnBhcmFtVmFsdWVzKVtkYXRhSW5kZXhdKTsK
KyAgICB9Cit9CisKKy8vIEZJWE1FOiBUaGlzIGZ1bmN0aW9uIHNob3VsZCBub3QgZGVhbCB3aXRo
IHVybCBvciBzZXJ2aWNlVHlwZSEKK3ZvaWQgSFRNTE9iamVjdEVsZW1lbnQ6OnBhcmFtZXRlcnNG
b3JQbHVnaW4oVmVjdG9yPFN0cmluZz4mIHBhcmFtTmFtZXMsIFZlY3RvcjxTdHJpbmc+JiBwYXJh
bVZhbHVlcywgU3RyaW5nJiB1cmwsIFN0cmluZyYgc2VydmljZVR5cGUpCit7CisgICAgSGFzaFNl
dDxTdHJpbmdJbXBsKiwgQ2FzZUZvbGRpbmdIYXNoPiB1bmlxdWVQYXJhbU5hbWVzOworICAgIAor
ICAgIC8vIFNjYW4gdGhlIFBBUkFNIGNoaWxkcmVuIGFuZCBzdG9yZSB0aGVpciBuYW1lL3ZhbHVl
IHBhaXJzLgorICAgIC8vIEdldCB0aGUgVVJMIGFuZCB0eXBlIGZyb20gdGhlIHBhcmFtcyBpZiB3
ZSBkb24ndCBhbHJlYWR5IGhhdmUgdGhlbS4KKyAgICBmb3IgKE5vZGUqIGNoaWxkID0gZmlyc3RD
aGlsZCgpOyBjaGlsZDsgY2hpbGQgPSBjaGlsZC0+bmV4dFNpYmxpbmcoKSkgeworICAgICAgICBp
ZiAoIWNoaWxkLT5oYXNUYWdOYW1lKHBhcmFtVGFnKSkKKyAgICAgICAgICAgIGNvbnRpbnVlOwor
CisgICAgICAgIEhUTUxQYXJhbUVsZW1lbnQqIHAgPSBzdGF0aWNfY2FzdDxIVE1MUGFyYW1FbGVt
ZW50Kj4oY2hpbGQpOworICAgICAgICBTdHJpbmcgbmFtZSA9IHAtPm5hbWUoKTsKKyAgICAgICAg
aWYgKG5hbWUuaXNFbXB0eSgpKQorICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgdW5p
cXVlUGFyYW1OYW1lcy5hZGQobmFtZS5pbXBsKCkpOworICAgICAgICBwYXJhbU5hbWVzLmFwcGVu
ZChwLT5uYW1lKCkpOworICAgICAgICBwYXJhbVZhbHVlcy5hcHBlbmQocC0+dmFsdWUoKSk7CisK
KyAgICAgICAgLy8gRklYTUU6IHVybCBhZGp1c3RtZW50IGRvZXMgbm90IGJlbG9uZyBpbiB0aGlz
IGZ1bmN0aW9uLgorICAgICAgICBpZiAodXJsLmlzRW1wdHkoKSAmJiAoZXF1YWxJZ25vcmluZ0Nh
c2UobmFtZSwgInNyYyIpIHx8IGVxdWFsSWdub3JpbmdDYXNlKG5hbWUsICJtb3ZpZSIpIHx8IGVx
dWFsSWdub3JpbmdDYXNlKG5hbWUsICJjb2RlIikgfHwgZXF1YWxJZ25vcmluZ0Nhc2UobmFtZSwg
InVybCIpKSkKKyAgICAgICAgICAgIHVybCA9IGRlcHJlY2F0ZWRQYXJzZVVSTChwLT52YWx1ZSgp
KTsKKyAgICAgICAgLy8gRklYTUU6IHNlcnZpY2VUeXBlIGNhbGN1bGF0aW9uIGRvZXMgbm90IGJl
bG9uZyBpbiB0aGlzIGZ1bmN0aW9uLgorICAgICAgICBpZiAoc2VydmljZVR5cGUuaXNFbXB0eSgp
ICYmIGVxdWFsSWdub3JpbmdDYXNlKG5hbWUsICJ0eXBlIikpIHsKKyAgICAgICAgICAgIHNlcnZp
Y2VUeXBlID0gcC0+dmFsdWUoKTsKKyAgICAgICAgICAgIHNpemVfdCBwb3MgPSBzZXJ2aWNlVHlw
ZS5maW5kKCI7Iik7CisgICAgICAgICAgICBpZiAocG9zICE9IG5vdEZvdW5kKQorICAgICAgICAg
ICAgICAgIHNlcnZpY2VUeXBlID0gc2VydmljZVR5cGUubGVmdChwb3MpOworICAgICAgICB9Cisg
ICAgfQorICAgIAorICAgIC8vIFdoZW4gT0JKRUNUIGlzIHVzZWQgZm9yIGFuIGFwcGxldCB2aWEg
U3VuJ3MgSmF2YSBwbHVnaW4sIHRoZSBDT0RFQkFTRSBhdHRyaWJ1dGUgaW4gdGhlIHRhZworICAg
IC8vIHBvaW50cyB0byB0aGUgSmF2YSBwbHVnaW4gaXRzZWxmIChhbiBBY3RpdmVYIGNvbXBvbmVu
dCkgd2hpbGUgdGhlIGFjdHVhbCBhcHBsZXQgQ09ERUJBU0UgaXMKKyAgICAvLyBpbiBhIFBBUkFN
IHRhZy4gU2VlIDxodHRwOi8vamF2YS5zdW4uY29tL3Byb2R1Y3RzL3BsdWdpbi8xLjIvZG9jcy90
YWdzLmh0bWw+LiBUaGlzIG1lYW5zCisgICAgLy8gd2UgaGF2ZSB0byBleHBsaWNpdGx5IHN1cHBy
ZXNzIHRoZSB0YWcncyBDT0RFQkFTRSBhdHRyaWJ1dGUgaWYgdGhlcmUgaXMgbm9uZSBpbiBhIFBB
UkFNLAorICAgIC8vIGVsc2Ugb3VyIEphdmEgcGx1Z2luIHdpbGwgbWlzaW50ZXJwcmV0IGl0LiBb
NDAwNDUzMV0KKyAgICBTdHJpbmcgY29kZWJhc2U7CisgICAgaWYgKE1JTUVUeXBlUmVnaXN0cnk6
OmlzSmF2YUFwcGxldE1JTUVUeXBlKHNlcnZpY2VUeXBlKSkgeworICAgICAgICBjb2RlYmFzZSA9
ICJjb2RlYmFzZSI7CisgICAgICAgIHVuaXF1ZVBhcmFtTmFtZXMuYWRkKGNvZGViYXNlLmltcGwo
KSk7IC8vIHByZXRlbmQgd2UgZm91bmQgaXQgaW4gYSBQQVJBTSBhbHJlYWR5CisgICAgfQorICAg
IAorICAgIC8vIFR1cm4gdGhlIGF0dHJpYnV0ZXMgb2YgdGhlIDxvYmplY3Q+IGVsZW1lbnQgaW50
byBhcnJheXMsIGJ1dCBkb24ndCBvdmVycmlkZSA8cGFyYW0+IHZhbHVlcy4KKyAgICBOYW1lZE5v
ZGVNYXAqIGF0dHJpYnV0ZXMgPSB0aGlzLT5hdHRyaWJ1dGVzKHRydWUpOworICAgIGlmIChhdHRy
aWJ1dGVzKSB7CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBhdHRyaWJ1dGVzLT5s
ZW5ndGgoKTsgKytpKSB7CisgICAgICAgICAgICBBdHRyaWJ1dGUqIGl0ID0gYXR0cmlidXRlcy0+
YXR0cmlidXRlSXRlbShpKTsKKyAgICAgICAgICAgIGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSA9
IGl0LT5uYW1lKCkubG9jYWxOYW1lKCk7CisgICAgICAgICAgICBpZiAoIXVuaXF1ZVBhcmFtTmFt
ZXMuY29udGFpbnMobmFtZS5pbXBsKCkpKSB7CisgICAgICAgICAgICAgICAgcGFyYW1OYW1lcy5h
cHBlbmQobmFtZS5zdHJpbmcoKSk7CisgICAgICAgICAgICAgICAgcGFyYW1WYWx1ZXMuYXBwZW5k
KGl0LT52YWx1ZSgpLnN0cmluZygpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0K
KyAgICAKKyAgICBtYXBEYXRhUGFyYW1Ub1NyYygmcGFyYW1OYW1lcywgJnBhcmFtVmFsdWVzKTsK
KyAgICAKKyAgICAvLyBJZiB3ZSBzdGlsbCBkb24ndCBoYXZlIGEgdHlwZSwgdHJ5IHRvIG1hcCBm
cm9tIGEgc3BlY2lmaWMgQ0xBU1NJRCB0byBhIHR5cGUuCisgICAgaWYgKHNlcnZpY2VUeXBlLmlz
RW1wdHkoKSkKKyAgICAgICAgc2VydmljZVR5cGUgPSBzZXJ2aWNlVHlwZUZvckNsYXNzSWQoY2xh
c3NJZCgpKTsKK30KKworICAgIAorYm9vbCBIVE1MT2JqZWN0RWxlbWVudDo6aGFzRmFsbGJhY2tD
b250ZW50KCkgY29uc3QKK3sKKyAgICBmb3IgKE5vZGUqIGNoaWxkID0gZmlyc3RDaGlsZCgpOyBj
aGlsZDsgY2hpbGQgPSBjaGlsZC0+bmV4dFNpYmxpbmcoKSkgeworICAgICAgICAvLyBJZ25vcmUg
d2hpdGVzcGFjZS1vbmx5IHRleHQsIGFuZCA8cGFyYW0+IHRhZ3MsIGFueSBvdGhlciBjb250ZW50
IGlzIGZhbGxiYWNrIGNvbnRlbnQuCisgICAgICAgIGlmIChjaGlsZC0+aXNUZXh0Tm9kZSgpKSB7
CisgICAgICAgICAgICBpZiAoIXN0YXRpY19jYXN0PFRleHQqPihjaGlsZCktPmNvbnRhaW5zT25s
eVdoaXRlc3BhY2UoKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfSBl
bHNlIGlmICghY2hpbGQtPmhhc1RhZ05hbWUocGFyYW1UYWcpKQorICAgICAgICAgICAgcmV0dXJu
IHRydWU7CisgICAgfQorICAgIHJldHVybiBmYWxzZTsKK30KKwogYm9vbCBIVE1MT2JqZWN0RWxl
bWVudDo6cmVuZGVyZXJJc05lZWRlZChSZW5kZXJTdHlsZSogc3R5bGUpCiB7CiAgICAgLy8gRklY
TUU6IFRoaXMgY2hlY2sgc2hvdWxkIG5vdCBiZSBuZWVkZWQsIGRldGFjaGVkIGRvY3VtZW50cyBu
ZXZlciByZW5kZXIhCmRpZmYgLS1naXQgYS9XZWJDb3JlL2h0bWwvSFRNTE9iamVjdEVsZW1lbnQu
aCBiL1dlYkNvcmUvaHRtbC9IVE1MT2JqZWN0RWxlbWVudC5oCmluZGV4IDlmYWZhZTk5NmIyNzFh
NmQxM2M3OTc2MWE0OTcwYjJlY2JmNDE1MjcuLjNmZjkyMThhMzZmODI4ZjMwYTdkYjJlNTI5Y2I3
NzRiYmEyNDA2MDAgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaHRtbC9IVE1MT2JqZWN0RWxlbWVudC5o
CisrKyBiL1dlYkNvcmUvaHRtbC9IVE1MT2JqZWN0RWxlbWVudC5oCkBAIC0zOSw4ICszOSwxMyBA
QCBwdWJsaWM6CiAKICAgICBib29sIGNvbnRhaW5zSmF2YUFwcGxldCgpIGNvbnN0OwogCisgICAg
Ym9vbCBoYXNGYWxsYmFja0NvbnRlbnQoKSBjb25zdDsKICAgICB2aXJ0dWFsIGJvb2wgdXNlRmFs
bGJhY2tDb250ZW50KCkgY29uc3QgeyByZXR1cm4gbV91c2VGYWxsYmFja0NvbnRlbnQ7IH0KIAor
ICAgIC8vIEZJWE1FOiBUaGlzIGZ1bmN0aW9uIHNob3VsZCBub3QgZGVhbCB3aXRoIHVybCBvciBz
ZXJ2aWNlVHlwZQorICAgIC8vIHNvIHRoYXQgd2UgY2FuIGJldHRlciBzaGFyZSBjb2RlIGJldHdl
ZW4gPG9iamVjdD4gYW5kIDxlbWJlZD4uCisgICAgdm9pZCBwYXJhbWV0ZXJzRm9yUGx1Z2luKFZl
Y3RvcjxTdHJpbmc+JiBwYXJhbU5hbWVzLCBWZWN0b3I8U3RyaW5nPiYgcGFyYW1WYWx1ZXMsIFN0
cmluZyYgdXJsLCBTdHJpbmcmIHNlcnZpY2VUeXBlKTsKKwogcHJpdmF0ZToKICAgICBIVE1MT2Jq
ZWN0RWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQqLCBib29sIGNyZWF0ZWRC
eVBhcnNlcik7CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9IVE1MUGx1Z0luSW1hZ2VFbGVt
ZW50LmNwcCBiL1dlYkNvcmUvaHRtbC9IVE1MUGx1Z0luSW1hZ2VFbGVtZW50LmNwcAppbmRleCA3
NTQwN2RkYTBjZmE5NTBjN2U5OTBmN2YxYTJlZjU0MDE0ZmMxZjI5Li41N2E3MGE5NzNiYTdjMTE4
ZGE3ODA5Zjk4MDM1YWNhOWYxNWI5NjJiIDEwMDY0NAotLS0gYS9XZWJDb3JlL2h0bWwvSFRNTFBs
dWdJbkltYWdlRWxlbWVudC5jcHAKKysrIGIvV2ViQ29yZS9odG1sL0hUTUxQbHVnSW5JbWFnZUVs
ZW1lbnQuY3BwCkBAIC0yNiw2ICsyNiw3IEBACiAjaW5jbHVkZSAiRnJhbWVMb2FkZXJDbGllbnQu
aCIKICNpbmNsdWRlICJIVE1MSW1hZ2VMb2FkZXIuaCIKICNpbmNsdWRlICJJbWFnZS5oIgorI2lu
Y2x1ZGUgIlBhZ2UuaCIKICNpbmNsdWRlICJSZW5kZXJFbWJlZGRlZE9iamVjdC5oIgogI2luY2x1
ZGUgIlJlbmRlckltYWdlLmgiCiAKQEAgLTYzLDYgKzY0LDQ2IEBAIGJvb2wgSFRNTFBsdWdJbklt
YWdlRWxlbWVudDo6aXNJbWFnZVR5cGUoKQogICAgIHJldHVybiBJbWFnZTo6c3VwcG9ydHNUeXBl
KG1fc2VydmljZVR5cGUpOwogfQogCisvLyBXZSBkb24ndCB1c2UgbV91cmwsIGFzIGl0IG1heSBu
b3QgYmUgdGhlIGZpbmFsIFVSTCB0aGF0IHRoZSBvYmplY3QgbG9hZHMsCisvLyBkZXBlbmRpbmcg
b24gPHBhcmFtPiB2YWx1ZXMuIAorYm9vbCBIVE1MUGx1Z0luSW1hZ2VFbGVtZW50OjphbGxvd2Vk
VG9Mb2FkRnJhbWVVUkwoY29uc3QgU3RyaW5nJiB1cmwpCit7CisgICAgQVNTRVJUKGRvY3VtZW50
KCkpOworICAgIEFTU0VSVChkb2N1bWVudCgpLT5mcmFtZSgpKTsKKyAgICBpZiAoZG9jdW1lbnQo
KS0+ZnJhbWUoKS0+cGFnZSgpLT5mcmFtZUNvdW50KCkgPj0gUGFnZTo6bWF4TnVtYmVyT2ZGcmFt
ZXMpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIC8vIFdlIGFsbG93IG9uZSBsZXZlbCBv
ZiBzZWxmLXJlZmVyZW5jZSBiZWNhdXNlIHNvbWUgc2l0ZXMgZGVwZW5kIG9uIHRoYXQuCisgICAg
Ly8gQnV0IHdlIGRvbid0IGFsbG93IG1vcmUgdGhhbiBvbmUuCisgICAgS1VSTCBjb21wbGV0ZVVS
TCA9IGRvY3VtZW50KCktPmNvbXBsZXRlVVJMKHVybCk7CisgICAgYm9vbCBmb3VuZFNlbGZSZWZl
cmVuY2UgPSBmYWxzZTsKKyAgICBmb3IgKEZyYW1lKiBmcmFtZSA9IGRvY3VtZW50KCktPmZyYW1l
KCk7IGZyYW1lOyBmcmFtZSA9IGZyYW1lLT50cmVlKCktPnBhcmVudCgpKSB7CisgICAgICAgIGlm
IChlcXVhbElnbm9yaW5nRnJhZ21lbnRJZGVudGlmaWVyKGZyYW1lLT5sb2FkZXIoKS0+dXJsKCks
IGNvbXBsZXRlVVJMKSkgeworICAgICAgICAgICAgaWYgKGZvdW5kU2VsZlJlZmVyZW5jZSkKKyAg
ICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICBmb3VuZFNlbGZSZWZlcmVu
Y2UgPSB0cnVlOworICAgICAgICB9CisgICAgfQorICAgIHJldHVybiB0cnVlOworfQorCisvLyBX
ZSBkb24ndCB1c2UgbV91cmwsIG9yIG1fc2VydmljZVR5cGUgYXMgdGhleSBtYXkgbm90IGJlIHRo
ZSBmaW5hbCB2YWx1ZXMKKy8vIHRoYXQgPG9iamVjdD4gdXNlcyBkZXBlbmRpbmcgb24gPHBhcmFt
PiB2YWx1ZXMuIAorYm9vbCBIVE1MUGx1Z0luSW1hZ2VFbGVtZW50Ojp3b3VsZExvYWRBc05ldHNj
YXBlUGx1Z2luKGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBTdHJpbmcmIHNlcnZpY2VUeXBlKQor
eworICAgIEFTU0VSVChkb2N1bWVudCgpKTsKKyAgICBBU1NFUlQoZG9jdW1lbnQoKS0+ZnJhbWUo
KSk7CisgICAgRnJhbWVMb2FkZXIqIGZyYW1lTG9hZGVyID0gZG9jdW1lbnQoKS0+ZnJhbWUoKS0+
bG9hZGVyKCk7CisgICAgQVNTRVJUKGZyYW1lTG9hZGVyKTsKKyAgICBLVVJMIGNvbXBsZXRlZFVS
TDsKKyAgICBpZiAoIXVybC5pc0VtcHR5KCkpCisgICAgICAgIGNvbXBsZXRlZFVSTCA9IGZyYW1l
TG9hZGVyLT5jb21wbGV0ZVVSTCh1cmwpOworCisgICAgaWYgKGZyYW1lTG9hZGVyLT5jbGllbnQo
KS0+b2JqZWN0Q29udGVudFR5cGUoY29tcGxldGVkVVJMLCBzZXJ2aWNlVHlwZSkgPT0gT2JqZWN0
Q29udGVudE5ldHNjYXBlUGx1Z2luKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICByZXR1cm4g
ZmFsc2U7Cit9CisKIFJlbmRlck9iamVjdCogSFRNTFBsdWdJbkltYWdlRWxlbWVudDo6Y3JlYXRl
UmVuZGVyZXIoUmVuZGVyQXJlbmEqIGFyZW5hLCBSZW5kZXJTdHlsZSogc3R5bGUpCiB7CiAgICAg
Ly8gRmFsbGJhY2sgY29udGVudCBicmVha3MgdGhlIERPTS0+UmVuZGVyZXIgY2xhc3MgcmVsYXRp
b25zaGlwIG9mIHRoaXMKQEAgLTEwNiw3ICsxNDcsNyBAQCB2b2lkIEhUTUxQbHVnSW5JbWFnZUVs
ZW1lbnQ6OmF0dGFjaCgpCiAgICAgCiB2b2lkIEhUTUxQbHVnSW5JbWFnZUVsZW1lbnQ6OmRldGFj
aCgpCiB7Ci0gICAgLy8gRklYTUU6IEJlY2F1c2Ugb2YgdGhlIGluc2FuaXR5IHRoYXQgaXMgSFRN
TE9iamVjdEVsZW1lbnQ6OnJlY2FsY1N0eWxlLAorICAgIC8vIEZJWE1FOiBCZWNhdXNlIG9mIHRo
ZSBpbnNhbml0eSB0aGF0IGlzIEhUTUxQbHVnSW5JbWFnZUVsZW1lbnQ6OnJlY2FsY1N0eWxlLAog
ICAgIC8vIHdlIGNhbiBlbmQgdXAgZGV0YWNoaW5nIGR1cmluZyBhbiBhdHRhY2goKSBjYWxsLCBi
ZWZvcmUgd2UgZXZlbiBoYXZlIGEKICAgICAvLyByZW5kZXJlci4gIEluIHRoYXQgY2FzZSwgZG9u
J3QgbWFyayB0aGUgd2lkZ2V0IGZvciB1cGRhdGUuCiAgICAgaWYgKGF0dGFjaGVkKCkgJiYgcmVu
ZGVyZXIoKSAmJiAhdXNlRmFsbGJhY2tDb250ZW50KCkpCkBAIC0xMTUsNyArMTU2LDcgQEAgdm9p
ZCBIVE1MUGx1Z0luSW1hZ2VFbGVtZW50OjpkZXRhY2goKQogICAgIEhUTUxQbHVnSW5FbGVtZW50
OjpkZXRhY2goKTsKIH0KIAotdm9pZCBIVE1MUGx1Z0luSW1hZ2VFbGVtZW50Ojp1cGRhdGVXaWRn
ZXQoKQordm9pZCBIVE1MUGx1Z0luSW1hZ2VFbGVtZW50Ojp1cGRhdGVXaWRnZXRJZk5lY2Vzc2Fy
eSgpCiB7CiAgICAgZG9jdW1lbnQoKS0+dXBkYXRlU3R5bGVJZk5lZWRlZCgpOwogICAgIGlmIChu
ZWVkc1dpZGdldFVwZGF0ZSgpICYmIHJlbmRlckVtYmVkZGVkT2JqZWN0KCkgJiYgIXVzZUZhbGxi
YWNrQ29udGVudCgpICYmICFpc0ltYWdlVHlwZSgpKQpAQCAtMTQyLDcgKzE4Myw3IEBAIHZvaWQg
SFRNTFBsdWdJbkltYWdlRWxlbWVudDo6d2lsbE1vdmVUb05ld093bmVyRG9jdW1lbnQoKQogCiB2
b2lkIEhUTUxQbHVnSW5JbWFnZUVsZW1lbnQ6OnVwZGF0ZVdpZGdldENhbGxiYWNrKE5vZGUqIG4p
CiB7Ci0gICAgc3RhdGljX2Nhc3Q8SFRNTFBsdWdJbkltYWdlRWxlbWVudCo+KG4pLT51cGRhdGVX
aWRnZXQoKTsKKyAgICBzdGF0aWNfY2FzdDxIVE1MUGx1Z0luSW1hZ2VFbGVtZW50Kj4obiktPnVw
ZGF0ZVdpZGdldElmTmVjZXNzYXJ5KCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlm
ZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9IVE1MUGx1Z0luSW1hZ2VFbGVtZW50LmggYi9XZWJDb3Jl
L2h0bWwvSFRNTFBsdWdJbkltYWdlRWxlbWVudC5oCmluZGV4IDY1YzVmMzdhYmE2ZDc1MGEyZmZi
MDYyMzA4ZmYzZjcxYmE3Y2M2ZmYuLjgxNGFhZjA2OTYyYWFlNmMyNjFlYTdiMzk2ZTRmM2Y0ZDkx
OWNmZDggMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaHRtbC9IVE1MUGx1Z0luSW1hZ2VFbGVtZW50LmgK
KysrIGIvV2ViQ29yZS9odG1sL0hUTUxQbHVnSW5JbWFnZUVsZW1lbnQuaApAQCAtMjcsNiArMjcs
NyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBIVE1MSW1hZ2VMb2FkZXI7CitjbGFz
cyBGcmFtZUxvYWRlcjsKIAogLy8gQmFzZSBjbGFzcyBmb3IgSFRNTE9iamVjdEVsZW1lbnQgYW5k
IEhUTUxFbWJlZEVsZW1lbnQKIGNsYXNzIEhUTUxQbHVnSW5JbWFnZUVsZW1lbnQgOiBwdWJsaWMg
SFRNTFBsdWdJbkVsZW1lbnQgewpAQCAtMzQsOCArMzUsMTEgQEAgcHVibGljOgogICAgIGNvbnN0
IFN0cmluZyYgc2VydmljZVR5cGUoKSBjb25zdCB7IHJldHVybiBtX3NlcnZpY2VUeXBlOyB9CiAg
ICAgY29uc3QgU3RyaW5nJiB1cmwoKSBjb25zdCB7IHJldHVybiBtX3VybDsgfQogCisgICAgLy8g
VGhlc2UgY2FuIGFsbCBtb3ZlIHRvIGJlIHByb3RlY3RlZCBvbmNlIHVwZGF0ZVdpZGdldCBpcyBt
b3ZlZCBvdXQgb2YgUmVuZGVyRW1iZWRkZWRPYmplY3QuY3BwCiAgICAgYm9vbCBuZWVkc1dpZGdl
dFVwZGF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fbmVlZHNXaWRnZXRVcGRhdGU7IH0KICAgICB2b2lk
IHNldE5lZWRzV2lkZ2V0VXBkYXRlKGJvb2wgbmVlZHNXaWRnZXRVcGRhdGUpIHsgbV9uZWVkc1dp
ZGdldFVwZGF0ZSA9IG5lZWRzV2lkZ2V0VXBkYXRlOyB9CisgICAgYm9vbCBhbGxvd2VkVG9Mb2Fk
RnJhbWVVUkwoY29uc3QgU3RyaW5nJiB1cmwpOworICAgIGJvb2wgd291bGRMb2FkQXNOZXRzY2Fw
ZVBsdWdpbihjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgU3RyaW5nJiBzZXJ2aWNlVHlwZSk7CiAK
ICAgICBSZW5kZXJFbWJlZGRlZE9iamVjdCogcmVuZGVyRW1iZWRkZWRPYmplY3QoKSBjb25zdDsK
IApAQCAtNjAsNyArNjQsNyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBmaW5pc2hQYXJz
aW5nQ2hpbGRyZW4oKTsKICAgICB2aXJ0dWFsIHZvaWQgd2lsbE1vdmVUb05ld093bmVyRG9jdW1l
bnQoKTsKIAotICAgIHZvaWQgdXBkYXRlV2lkZ2V0KCk7CisgICAgdm9pZCB1cGRhdGVXaWRnZXRJ
Zk5lY2Vzc2FyeSgpOwogICAgIHZpcnR1YWwgYm9vbCB1c2VGYWxsYmFja0NvbnRlbnQoKSBjb25z
dCB7IHJldHVybiBmYWxzZTsgfQogICAgIAogICAgIGJvb2wgbV9uZWVkc1dpZGdldFVwZGF0ZTsK
ZGlmZiAtLWdpdCBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVtYmVkZGVkT2JqZWN0LmNwcCBi
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVtYmVkZGVkT2JqZWN0LmNwcAppbmRleCBiMWIyNTNh
MTg2NGVjYzAzYzZhNzQ2ZDQwNGU0NWMzOTEyOTBhOTUwLi45ZjhhY2ZkMDcwODBiOTg3YzVjZTFh
ZTE4YTZiN2EzYzY1NTVkZjFmIDEwMDY0NAotLS0gYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJF
bWJlZGRlZE9iamVjdC5jcHAKKysrIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRW1iZWRkZWRP
YmplY3QuY3BwCkBAIC0xMDEsMTc5ICsxMDEsMzMgQEAgYm9vbCBSZW5kZXJFbWJlZGRlZE9iamVj
dDo6YWxsb3dzQWNjZWxlcmF0ZWRDb21wb3NpdGluZygpIGNvbnN0CiAgICAgcmV0dXJuIHdpZGdl
dCgpICYmIHdpZGdldCgpLT5pc1BsdWdpblZpZXdCYXNlKCkgJiYgc3RhdGljX2Nhc3Q8UGx1Z2lu
Vmlld0Jhc2UqPih3aWRnZXQoKSktPnBsYXRmb3JtTGF5ZXIoKTsKIH0KICNlbmRpZgotCi0vLyBG
SVhNRTogVGhpcyBiZWxvbmdzIGluIEhUTUxQbHVnaW5FbGVtZW50LmNwcCB0byBiZSBzaGFyZWQg
YnkgSFRNTE9iamVjdEVsZW1lbnQgYW5kIEhUTUxFbWJlZEVsZW1lbnQuCi1zdGF0aWMgYm9vbCBp
c1VSTEFsbG93ZWQoRG9jdW1lbnQqIGRvYywgY29uc3QgU3RyaW5nJiB1cmwpCi17Ci0gICAgaWYg
KGRvYy0+ZnJhbWUoKS0+cGFnZSgpLT5mcmFtZUNvdW50KCkgPj0gUGFnZTo6bWF4TnVtYmVyT2ZG
cmFtZXMpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIC8vIFdlIGFsbG93IG9uZSBsZXZl
bCBvZiBzZWxmLXJlZmVyZW5jZSBiZWNhdXNlIHNvbWUgc2l0ZXMgZGVwZW5kIG9uIHRoYXQuCi0g
ICAgLy8gQnV0IHdlIGRvbid0IGFsbG93IG1vcmUgdGhhbiBvbmUuCi0gICAgS1VSTCBjb21wbGV0
ZVVSTCA9IGRvYy0+Y29tcGxldGVVUkwodXJsKTsKLSAgICBib29sIGZvdW5kU2VsZlJlZmVyZW5j
ZSA9IGZhbHNlOwotICAgIGZvciAoRnJhbWUqIGZyYW1lID0gZG9jLT5mcmFtZSgpOyBmcmFtZTsg
ZnJhbWUgPSBmcmFtZS0+dHJlZSgpLT5wYXJlbnQoKSkgewotICAgICAgICBpZiAoZXF1YWxJZ25v
cmluZ0ZyYWdtZW50SWRlbnRpZmllcihmcmFtZS0+bG9hZGVyKCktPnVybCgpLCBjb21wbGV0ZVVS
TCkpIHsKLSAgICAgICAgICAgIGlmIChmb3VuZFNlbGZSZWZlcmVuY2UpCi0gICAgICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgZm91bmRTZWxmUmVmZXJlbmNlID0gdHJ1ZTsK
LSAgICAgICAgfQotICAgIH0KLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotdHlwZWRlZiBIYXNoTWFw
PFN0cmluZywgU3RyaW5nLCBDYXNlRm9sZGluZ0hhc2g+IENsYXNzSWRUb1R5cGVNYXA7Ci0KLS8v
IEZJWE1FOiBUaGlzIGJlbG9uZ3MgaW4gSFRNTE9iamVjdEVsZW1lbnQuY3BwCi1zdGF0aWMgQ2xh
c3NJZFRvVHlwZU1hcCogY3JlYXRlQ2xhc3NJZFRvVHlwZU1hcCgpCi17Ci0gICAgQ2xhc3NJZFRv
VHlwZU1hcCogbWFwID0gbmV3IENsYXNzSWRUb1R5cGVNYXA7Ci0gICAgbWFwLT5hZGQoImNsc2lk
OkQyN0NEQjZFLUFFNkQtMTFDRi05NkI4LTQ0NDU1MzU0MDAwMCIsICJhcHBsaWNhdGlvbi94LXNo
b2Nrd2F2ZS1mbGFzaCIpOwotICAgIG1hcC0+YWRkKCJjbHNpZDpDRkNEQUEwMy04QkU0LTExQ0Yt
Qjg0Qi0wMDIwQUZCQkNDRkEiLCAiYXVkaW8veC1wbi1yZWFsYXVkaW8tcGx1Z2luIik7Ci0gICAg
bWFwLT5hZGQoImNsc2lkOjAyQkYyNUQ1LThDMTctNEIyMy1CQzgwLUQzNDg4QUJEREM2QiIsICJ2
aWRlby9xdWlja3RpbWUiKTsKLSAgICBtYXAtPmFkZCgiY2xzaWQ6MTY2QjFCQ0EtM0Y5Qy0xMUNG
LTgwNzUtNDQ0NTUzNTQwMDAwIiwgImFwcGxpY2F0aW9uL3gtZGlyZWN0b3IiKTsKLSAgICBtYXAt
PmFkZCgiY2xzaWQ6NkJGNTJBNTItMzk0QS0xMUQzLUIxNTMtMDBDMDRGNzlGQUE2IiwgImFwcGxp
Y2F0aW9uL3gtbXBsYXllcjIiKTsKLSAgICBtYXAtPmFkZCgiY2xzaWQ6MjJENkYzMTItQjBGNi0x
MUQwLTk0QUItMDA4MEM3NEM3RTk1IiwgImFwcGxpY2F0aW9uL3gtbXBsYXllcjIiKTsKLSAgICBy
ZXR1cm4gbWFwOwotfQotCi0vLyBGSVhNRTogVGhpcyBiZWxvbmdzIGluIEhUTUxPYmplY3RFbGVt
ZW50LmNwcAotc3RhdGljIFN0cmluZyBzZXJ2aWNlVHlwZUZvckNsYXNzSWQoY29uc3QgU3RyaW5n
JiBjbGFzc0lkKQotewotICAgIC8vIFJldHVybiBlYXJseSBpZiBjbGFzc0lkIGlzIGVtcHR5IChz
aW5jZSB3ZSB3b24ndCBkbyBhbnl0aGluZyBiZWxvdykuCi0gICAgLy8gRnVydGhlcm1vcmUsIGlm
IGNsYXNzSWQgaXMgbnVsbCwgY2FsbGluZyBnZXQoKSBiZWxvdyB3aWxsIGNyYXNoLgotICAgIGlm
IChjbGFzc0lkLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIFN0cmluZygpOwotCi0gICAgc3Rh
dGljIENsYXNzSWRUb1R5cGVNYXAqIG1hcCA9IGNyZWF0ZUNsYXNzSWRUb1R5cGVNYXAoKTsKLSAg
ICByZXR1cm4gbWFwLT5nZXQoY2xhc3NJZCk7Ci19Ci0KLS8vIEZJWE1FOiBUaGlzIGJlbG9uZ3Mg
aW4gSFRNTE9iamVjdEVsZW1lbnQuY3BwCi1zdGF0aWMgdm9pZCBtYXBEYXRhUGFyYW1Ub1NyYyhW
ZWN0b3I8U3RyaW5nPiogcGFyYW1OYW1lcywgVmVjdG9yPFN0cmluZz4qIHBhcmFtVmFsdWVzKQot
ewotICAgIC8vIFNvbWUgcGx1Z2lucyBkb24ndCB1bmRlcnN0YW5kIHRoZSAiZGF0YSIgYXR0cmli
dXRlIG9mIHRoZSBPQkpFQ1QgdGFnIChpLmUuIFJlYWwgYW5kIFdNUAotICAgIC8vIHJlcXVpcmUg
InNyYyIgYXR0cmlidXRlKS4KLSAgICBpbnQgc3JjSW5kZXggPSAtMSwgZGF0YUluZGV4ID0gLTE7
Ci0gICAgZm9yICh1bnNpZ25lZCBpbnQgaSA9IDA7IGkgPCBwYXJhbU5hbWVzLT5zaXplKCk7ICsr
aSkgewotICAgICAgICBpZiAoZXF1YWxJZ25vcmluZ0Nhc2UoKCpwYXJhbU5hbWVzKVtpXSwgInNy
YyIpKQotICAgICAgICAgICAgc3JjSW5kZXggPSBpOwotICAgICAgICBlbHNlIGlmIChlcXVhbEln
bm9yaW5nQ2FzZSgoKnBhcmFtTmFtZXMpW2ldLCAiZGF0YSIpKQotICAgICAgICAgICAgZGF0YUlu
ZGV4ID0gaTsKLSAgICB9Ci0KLSAgICBpZiAoc3JjSW5kZXggPT0gLTEgJiYgZGF0YUluZGV4ICE9
IC0xKSB7Ci0gICAgICAgIHBhcmFtTmFtZXMtPmFwcGVuZCgic3JjIik7Ci0gICAgICAgIHBhcmFt
VmFsdWVzLT5hcHBlbmQoKCpwYXJhbVZhbHVlcylbZGF0YUluZGV4XSk7Ci0gICAgfQotfQotCi0v
LyBGSVhNRTogVGhpcyBiZWxvbmdzIGluIHNvbWUgbG9hZGVyIGhlYWRlcj8KLXN0YXRpYyBib29s
IGlzTmV0c2NhcGVQbHVnaW4oRnJhbWUqIGZyYW1lLCBjb25zdCBTdHJpbmcmIHVybCwgY29uc3Qg
U3RyaW5nJiBzZXJ2aWNlVHlwZSkKLXsKLSAgICBLVVJMIGNvbXBsZXRlZFVSTDsKLSAgICBpZiAo
IXVybC5pc0VtcHR5KCkpCi0gICAgICAgIGNvbXBsZXRlZFVSTCA9IGZyYW1lLT5sb2FkZXIoKS0+
Y29tcGxldGVVUkwodXJsKTsKLQotICAgIGlmIChmcmFtZS0+bG9hZGVyKCktPmNsaWVudCgpLT5v
YmplY3RDb250ZW50VHlwZShjb21wbGV0ZWRVUkwsIHNlcnZpY2VUeXBlKSA9PSBPYmplY3RDb250
ZW50TmV0c2NhcGVQbHVnaW4pCi0gICAgICAgIHJldHVybiB0cnVlOwotICAgIHJldHVybiBmYWxz
ZTsKLX0KLQotLy8gRklYTUU6IFRoaXMgYmVsb25ncyBvbiBIVE1MT2JqZWN0RWxlbWVudC4KLXN0
YXRpYyBib29sIGhhc0ZhbGxiYWNrQ29udGVudChIVE1MT2JqZWN0RWxlbWVudCogb2JqZWN0RWxl
bWVudCkKLXsKLSAgICBmb3IgKE5vZGUqIGNoaWxkID0gb2JqZWN0RWxlbWVudC0+Zmlyc3RDaGls
ZCgpOyBjaGlsZDsgY2hpbGQgPSBjaGlsZC0+bmV4dFNpYmxpbmcoKSkgewotICAgICAgICBpZiAo
KCFjaGlsZC0+aXNUZXh0Tm9kZSgpICYmICFjaGlsZC0+aGFzVGFnTmFtZShwYXJhbVRhZykpIC8v
IERpc2NvdW50IDxwYXJhbT4KLSAgICAgICAgICAgIHx8IChjaGlsZC0+aXNUZXh0Tm9kZSgpICYm
ICFzdGF0aWNfY2FzdDxUZXh0Kj4oY2hpbGQpLT5jb250YWluc09ubHlXaGl0ZXNwYWNlKCkpKQot
ICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotICAgIHJldHVybiBmYWxzZTsKLX0KLQot
Ly8gRklYTUU6IFRoaXMgYmVsb25ncyBvbiBIVE1MT2JqZWN0RWxlbWVudC4KLXN0YXRpYyB2b2lk
IHBhcmFtZXRlcnNGcm9tT2JqZWN0KEhUTUxPYmplY3RFbGVtZW50KiBvYmplY3RFbGVtZW50LCBW
ZWN0b3I8U3RyaW5nPiYgcGFyYW1OYW1lcywgVmVjdG9yPFN0cmluZz4mIHBhcmFtVmFsdWVzLCBT
dHJpbmcmIHVybCwgU3RyaW5nJiBzZXJ2aWNlVHlwZSkKLXsKLSAgICBIYXNoU2V0PFN0cmluZ0lt
cGwqLCBDYXNlRm9sZGluZ0hhc2g+IHVuaXF1ZVBhcmFtTmFtZXM7Ci0KLSAgICAvLyBTY2FuIHRo
ZSBQQVJBTSBjaGlsZHJlbiBhbmQgc3RvcmUgdGhlaXIgbmFtZS92YWx1ZSBwYWlycy4KLSAgICAv
LyBHZXQgdGhlIFVSTCBhbmQgdHlwZSBmcm9tIHRoZSBwYXJhbXMgaWYgd2UgZG9uJ3QgYWxyZWFk
eSBoYXZlIHRoZW0uCi0gICAgTm9kZSogY2hpbGQgPSBvYmplY3RFbGVtZW50LT5maXJzdENoaWxk
KCk7Ci0gICAgd2hpbGUgKGNoaWxkKSB7Ci0gICAgICAgIGlmIChjaGlsZC0+aGFzVGFnTmFtZShw
YXJhbVRhZykpIHsKLSAgICAgICAgICAgIEhUTUxQYXJhbUVsZW1lbnQqIHAgPSBzdGF0aWNfY2Fz
dDxIVE1MUGFyYW1FbGVtZW50Kj4oY2hpbGQpOwotICAgICAgICAgICAgU3RyaW5nIG5hbWUgPSBw
LT5uYW1lKCk7Ci0gICAgICAgICAgICBpZiAodXJsLmlzRW1wdHkoKSAmJiAoZXF1YWxJZ25vcmlu
Z0Nhc2UobmFtZSwgInNyYyIpIHx8IGVxdWFsSWdub3JpbmdDYXNlKG5hbWUsICJtb3ZpZSIpIHx8
IGVxdWFsSWdub3JpbmdDYXNlKG5hbWUsICJjb2RlIikgfHwgZXF1YWxJZ25vcmluZ0Nhc2UobmFt
ZSwgInVybCIpKSkKLSAgICAgICAgICAgICAgICB1cmwgPSBkZXByZWNhdGVkUGFyc2VVUkwocC0+
dmFsdWUoKSk7Ci0gICAgICAgICAgICAvLyBGSVhNRTogc2VydmljZVR5cGUgY2FsY3VsYXRpb24g
ZG9lcyBub3QgYmVsb25nIGluIHRoaXMgZnVuY3Rpb24uCi0gICAgICAgICAgICBpZiAoc2Vydmlj
ZVR5cGUuaXNFbXB0eSgpICYmIGVxdWFsSWdub3JpbmdDYXNlKG5hbWUsICJ0eXBlIikpIHsKLSAg
ICAgICAgICAgICAgICBzZXJ2aWNlVHlwZSA9IHAtPnZhbHVlKCk7Ci0gICAgICAgICAgICAgICAg
c2l6ZV90IHBvcyA9IHNlcnZpY2VUeXBlLmZpbmQoIjsiKTsKLSAgICAgICAgICAgICAgICBpZiAo
cG9zICE9IG5vdEZvdW5kKQotICAgICAgICAgICAgICAgICAgICBzZXJ2aWNlVHlwZSA9IHNlcnZp
Y2VUeXBlLmxlZnQocG9zKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGlmICghbmFtZS5p
c0VtcHR5KCkpIHsKLSAgICAgICAgICAgICAgICB1bmlxdWVQYXJhbU5hbWVzLmFkZChuYW1lLmlt
cGwoKSk7Ci0gICAgICAgICAgICAgICAgcGFyYW1OYW1lcy5hcHBlbmQocC0+bmFtZSgpKTsKLSAg
ICAgICAgICAgICAgICBwYXJhbVZhbHVlcy5hcHBlbmQocC0+dmFsdWUoKSk7Ci0gICAgICAgICAg
ICB9Ci0gICAgICAgIH0KLSAgICAgICAgY2hpbGQgPSBjaGlsZC0+bmV4dFNpYmxpbmcoKTsKLSAg
ICB9Ci0KLSAgICAvLyBXaGVuIE9CSkVDVCBpcyB1c2VkIGZvciBhbiBhcHBsZXQgdmlhIFN1bidz
IEphdmEgcGx1Z2luLCB0aGUgQ09ERUJBU0UgYXR0cmlidXRlIGluIHRoZSB0YWcKLSAgICAvLyBw
b2ludHMgdG8gdGhlIEphdmEgcGx1Z2luIGl0c2VsZiAoYW4gQWN0aXZlWCBjb21wb25lbnQpIHdo
aWxlIHRoZSBhY3R1YWwgYXBwbGV0IENPREVCQVNFIGlzCi0gICAgLy8gaW4gYSBQQVJBTSB0YWcu
IFNlZSA8aHR0cDovL2phdmEuc3VuLmNvbS9wcm9kdWN0cy9wbHVnaW4vMS4yL2RvY3MvdGFncy5o
dG1sPi4gVGhpcyBtZWFucwotICAgIC8vIHdlIGhhdmUgdG8gZXhwbGljaXRseSBzdXBwcmVzcyB0
aGUgdGFnJ3MgQ09ERUJBU0UgYXR0cmlidXRlIGlmIHRoZXJlIGlzIG5vbmUgaW4gYSBQQVJBTSwK
LSAgICAvLyBlbHNlIG91ciBKYXZhIHBsdWdpbiB3aWxsIG1pc2ludGVycHJldCBpdC4gWzQwMDQ1
MzFdCi0gICAgU3RyaW5nIGNvZGViYXNlOwotICAgIGlmIChNSU1FVHlwZVJlZ2lzdHJ5Ojppc0ph
dmFBcHBsZXRNSU1FVHlwZShzZXJ2aWNlVHlwZSkpIHsKLSAgICAgICAgY29kZWJhc2UgPSAiY29k
ZWJhc2UiOwotICAgICAgICB1bmlxdWVQYXJhbU5hbWVzLmFkZChjb2RlYmFzZS5pbXBsKCkpOyAv
LyBwcmV0ZW5kIHdlIGZvdW5kIGl0IGluIGEgUEFSQU0gYWxyZWFkeQotICAgIH0KLQotICAgIC8v
IFR1cm4gdGhlIGF0dHJpYnV0ZXMgb2YgdGhlIDxvYmplY3Q+IGVsZW1lbnQgaW50byBhcnJheXMs
IGJ1dCBkb24ndCBvdmVycmlkZSA8cGFyYW0+IHZhbHVlcy4KLSAgICBOYW1lZE5vZGVNYXAqIGF0
dHJpYnV0ZXMgPSBvYmplY3RFbGVtZW50LT5hdHRyaWJ1dGVzKCk7Ci0gICAgaWYgKGF0dHJpYnV0
ZXMpIHsKLSAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGF0dHJpYnV0ZXMtPmxlbmd0
aCgpOyArK2kpIHsKLSAgICAgICAgICAgIEF0dHJpYnV0ZSogaXQgPSBhdHRyaWJ1dGVzLT5hdHRy
aWJ1dGVJdGVtKGkpOwotICAgICAgICAgICAgY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lID0gaXQt
Pm5hbWUoKS5sb2NhbE5hbWUoKTsKLSAgICAgICAgICAgIGlmICghdW5pcXVlUGFyYW1OYW1lcy5j
b250YWlucyhuYW1lLmltcGwoKSkpIHsKLSAgICAgICAgICAgICAgICBwYXJhbU5hbWVzLmFwcGVu
ZChuYW1lLnN0cmluZygpKTsKLSAgICAgICAgICAgICAgICBwYXJhbVZhbHVlcy5hcHBlbmQoaXQt
PnZhbHVlKCkuc3RyaW5nKCkpOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfQotCi0g
ICAgbWFwRGF0YVBhcmFtVG9TcmMoJnBhcmFtTmFtZXMsICZwYXJhbVZhbHVlcyk7Ci0KLSAgICAv
LyBJZiB3ZSBzdGlsbCBkb24ndCBoYXZlIGEgdHlwZSwgdHJ5IHRvIG1hcCBmcm9tIGEgc3BlY2lm
aWMgQ0xBU1NJRCB0byBhIHR5cGUuCi0gICAgaWYgKHNlcnZpY2VUeXBlLmlzRW1wdHkoKSkKLSAg
ICAgICAgc2VydmljZVR5cGUgPSBzZXJ2aWNlVHlwZUZvckNsYXNzSWQob2JqZWN0RWxlbWVudC0+
Y2xhc3NJZCgpKTsKLX0KLQorICAgIAogLy8gRklYTUU6IFRoaXMgYmVsb25ncyBvbiBIVE1MT2Jq
ZWN0RWxlbWVudCwgSFRNTFBsdWdpbkVsZW1lbnQgb3IgSFRNTEZyYW1lT3duZXJFbGVtZW50Lgog
c3RhdGljIHZvaWQgdXBkYXRlV2lkZ2V0Rm9yT2JqZWN0RWxlbWVudChIVE1MT2JqZWN0RWxlbWVu
dCogb2JqZWN0RWxlbWVudCwgYm9vbCBvbmx5Q3JlYXRlTm9uTmV0c2NhcGVQbHVnaW5zKQogewor
ICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgQVNTRVJUKG9iamVjdEVsZW1lbnQtPm5lZWRzV2lkZ2V0
VXBkYXRlKCkpLCBidXQgY3VycmVudGx5CisgICAgLy8gRnJhbWVWaWV3Ojp1cGRhdGVXaWRnZXQo
KSBjYWxscyB1cGRhdGVXaWRnZXQoZmFsc2UpIHdpdGhvdXQgY2hlY2tpbmcgaWYKKyAgICAvLyB0
aGUgd2lkZ2V0IGFjdHVhbGx5IG5lZWRzIHVwZGF0aW5nIQogICAgIG9iamVjdEVsZW1lbnQtPnNl
dE5lZWRzV2lkZ2V0VXBkYXRlKGZhbHNlKTsKKyAgICAvLyBGSVhNRTogVGhpcyBzaG91bGQgQVNT
RVJUIGlzRmluaXNoZWRQYXJzaW5nQ2hpbGRyZW4oKSBpbnN0ZWFkLgogICAgIGlmICghb2JqZWN0
RWxlbWVudC0+aXNGaW5pc2hlZFBhcnNpbmdDaGlsZHJlbigpKQogICAgICAgICByZXR1cm47CiAK
LSAgICBGcmFtZSogZnJhbWUgPSBvYmplY3RFbGVtZW50LT5kb2N1bWVudCgpLT5mcmFtZSgpOwog
ICAgIFN0cmluZyB1cmwgPSBvYmplY3RFbGVtZW50LT51cmwoKTsKICAgICBTdHJpbmcgc2Vydmlj
ZVR5cGUgPSBvYmplY3RFbGVtZW50LT5zZXJ2aWNlVHlwZSgpOwogCiAgICAgVmVjdG9yPFN0cmlu
Zz4gcGFyYW1OYW1lczsKICAgICBWZWN0b3I8U3RyaW5nPiBwYXJhbVZhbHVlczsKLSAgICBwYXJh
bWV0ZXJzRnJvbU9iamVjdChvYmplY3RFbGVtZW50LCBwYXJhbU5hbWVzLCBwYXJhbVZhbHVlcywg
dXJsLCBzZXJ2aWNlVHlwZSk7CisgICAgb2JqZWN0RWxlbWVudC0+cGFyYW1ldGVyc0ZvclBsdWdp
bihwYXJhbU5hbWVzLCBwYXJhbVZhbHVlcywgdXJsLCBzZXJ2aWNlVHlwZSk7CiAKLSAgICBpZiAo
IWlzVVJMQWxsb3dlZChvYmplY3RFbGVtZW50LT5kb2N1bWVudCgpLCB1cmwpKQorICAgIC8vIE5v
dGU6IHVybCBpcyBtb2RpZmllZCBhYm92ZSBieSBwYXJhbWV0ZXJzRm9yUGx1Z2luLgorICAgIGlm
ICghb2JqZWN0RWxlbWVudC0+YWxsb3dlZFRvTG9hZEZyYW1lVVJMKHVybCkpCiAgICAgICAgIHJl
dHVybjsKIAotICAgIGJvb2wgZmFsbGJhY2tDb250ZW50ID0gaGFzRmFsbGJhY2tDb250ZW50KG9i
amVjdEVsZW1lbnQpOworICAgIGJvb2wgZmFsbGJhY2tDb250ZW50ID0gb2JqZWN0RWxlbWVudC0+
aGFzRmFsbGJhY2tDb250ZW50KCk7CiAgICAgb2JqZWN0RWxlbWVudC0+cmVuZGVyRW1iZWRkZWRP
YmplY3QoKS0+c2V0SGFzRmFsbGJhY2tDb250ZW50KGZhbGxiYWNrQ29udGVudCk7CiAKLSAgICBp
ZiAob25seUNyZWF0ZU5vbk5ldHNjYXBlUGx1Z2lucyAmJiBpc05ldHNjYXBlUGx1Z2luKGZyYW1l
LCB1cmwsIHNlcnZpY2VUeXBlKSkKKyAgICBpZiAob25seUNyZWF0ZU5vbk5ldHNjYXBlUGx1Z2lu
cyAmJiBvYmplY3RFbGVtZW50LT53b3VsZExvYWRBc05ldHNjYXBlUGx1Z2luKHVybCwgc2Vydmlj
ZVR5cGUpKQogICAgICAgICByZXR1cm47CiAKICAgICBib29sIGJlZm9yZUxvYWRBbGxvd2VkTG9h
ZCA9IG9iamVjdEVsZW1lbnQtPmRpc3BhdGNoQmVmb3JlTG9hZEV2ZW50KHVybCk7CkBAIC0yODUs
NTAgKzEzOSw0MSBAQCBzdGF0aWMgdm9pZCB1cGRhdGVXaWRnZXRGb3JPYmplY3RFbGVtZW50KEhU
TUxPYmplY3RFbGVtZW50KiBvYmplY3RFbGVtZW50LCBib29sCiAgICAgaWYgKCFvYmplY3RFbGVt
ZW50LT5yZW5kZXJlcigpKQogICAgICAgICByZXR1cm47CiAKLSAgICBib29sIHN1Y2Nlc3MgPSBi
ZWZvcmVMb2FkQWxsb3dlZExvYWQgJiYgZnJhbWUtPmxvYWRlcigpLT5zdWJmcmFtZUxvYWRlcigp
LT5yZXF1ZXN0T2JqZWN0KG9iamVjdEVsZW1lbnQsIHVybCwgb2JqZWN0RWxlbWVudC0+Z2V0QXR0
cmlidXRlKG5hbWVBdHRyKSwgc2VydmljZVR5cGUsIHBhcmFtTmFtZXMsIHBhcmFtVmFsdWVzKTsK
KyAgICBTdWJmcmFtZUxvYWRlciogbG9hZGVyID0gb2JqZWN0RWxlbWVudC0+ZG9jdW1lbnQoKS0+
ZnJhbWUoKS0+bG9hZGVyKCktPnN1YmZyYW1lTG9hZGVyKCk7CisgICAgYm9vbCBzdWNjZXNzID0g
YmVmb3JlTG9hZEFsbG93ZWRMb2FkICYmIGxvYWRlci0+cmVxdWVzdE9iamVjdChvYmplY3RFbGVt
ZW50LCB1cmwsIG9iamVjdEVsZW1lbnQtPmdldEF0dHJpYnV0ZShuYW1lQXR0ciksIHNlcnZpY2VU
eXBlLCBwYXJhbU5hbWVzLCBwYXJhbVZhbHVlcyk7CiAKICAgICBpZiAoIXN1Y2Nlc3MgJiYgZmFs
bGJhY2tDb250ZW50KQogICAgICAgICBvYmplY3RFbGVtZW50LT5yZW5kZXJGYWxsYmFja0NvbnRl
bnQoKTsKIH0KIAotLy8gRklYTUU6IFRoaXMgYmVsb25ncyBvbiBIVE1MRW1iZWRFbGVtZW50Lgot
c3RhdGljIHZvaWQgcGFyYW1ldGVyc0Zyb21FbWJlZChIVE1MRW1iZWRFbGVtZW50KiBlbWJlZEVs
ZW1lbnQsIFZlY3RvcjxTdHJpbmc+JiBwYXJhbU5hbWVzLCBWZWN0b3I8U3RyaW5nPiYgcGFyYW1W
YWx1ZXMpCi17Ci0gICAgTmFtZWROb2RlTWFwKiBhdHRyaWJ1dGVzID0gZW1iZWRFbGVtZW50LT5h
dHRyaWJ1dGVzKCk7Ci0gICAgaWYgKGF0dHJpYnV0ZXMpIHsKLSAgICAgICAgZm9yICh1bnNpZ25l
ZCBpID0gMDsgaSA8IGF0dHJpYnV0ZXMtPmxlbmd0aCgpOyArK2kpIHsKLSAgICAgICAgICAgIEF0
dHJpYnV0ZSogaXQgPSBhdHRyaWJ1dGVzLT5hdHRyaWJ1dGVJdGVtKGkpOwotICAgICAgICAgICAg
cGFyYW1OYW1lcy5hcHBlbmQoaXQtPm5hbWUoKS5sb2NhbE5hbWUoKS5zdHJpbmcoKSk7Ci0gICAg
ICAgICAgICBwYXJhbVZhbHVlcy5hcHBlbmQoaXQtPnZhbHVlKCkuc3RyaW5nKCkpOwotICAgICAg
ICB9Ci0gICAgfQotfQotCiAvLyBGSVhNRTogVGhpcyBiZWxvbmdzIG9uIEhUTUxFbWJlZEVsZW1l
bnQsIEhUTUxQbHVnaW5FbGVtZW50IG9yIEhUTUxGcmFtZU93bmVyRWxlbWVudC4KIHN0YXRpYyB2
b2lkIHVwZGF0ZVdpZGdldEZvckVtYmVkRWxlbWVudChIVE1MRW1iZWRFbGVtZW50KiBlbWJlZEVs
ZW1lbnQsIGJvb2wgb25seUNyZWF0ZU5vbk5ldHNjYXBlUGx1Z2lucykKIHsKLSAgICBGcmFtZSog
ZnJhbWUgPSBlbWJlZEVsZW1lbnQtPmRvY3VtZW50KCktPmZyYW1lKCk7Ci0gICAgU3RyaW5nIHVy
bCA9IGVtYmVkRWxlbWVudC0+dXJsKCk7Ci0gICAgU3RyaW5nIHNlcnZpY2VUeXBlID0gZW1iZWRF
bGVtZW50LT5zZXJ2aWNlVHlwZSgpOwotCisgICAgLy8gRklYTUU6IFdlIHNob3VsZCBBU1NFUlQo
ZW1iZWRFbGVtZW50LT5uZWVkc1dpZGdldFVwZGF0ZSgpKSwgYnV0IGN1cnJlbnRseQorICAgIC8v
IEZyYW1lVmlldzo6dXBkYXRlV2lkZ2V0KCkgY2FsbHMgdXBkYXRlV2lkZ2V0KGZhbHNlKSB3aXRo
b3V0IGNoZWNraW5nIGlmCisgICAgLy8gdGhlIHdpZGdldCBhY3R1YWxseSBuZWVkcyB1cGRhdGlu
ZyEKICAgICBlbWJlZEVsZW1lbnQtPnNldE5lZWRzV2lkZ2V0VXBkYXRlKGZhbHNlKTsKIAorICAg
IFN0cmluZyB1cmwgPSBlbWJlZEVsZW1lbnQtPnVybCgpOworICAgIFN0cmluZyBzZXJ2aWNlVHlw
ZSA9IGVtYmVkRWxlbWVudC0+c2VydmljZVR5cGUoKTsKICAgICBpZiAodXJsLmlzRW1wdHkoKSAm
JiBzZXJ2aWNlVHlwZS5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKLSAgICBpZiAoIWlzVVJM
QWxsb3dlZChlbWJlZEVsZW1lbnQtPmRvY3VtZW50KCksIHVybCkpCisgICAgaWYgKCFlbWJlZEVs
ZW1lbnQtPmFsbG93ZWRUb0xvYWRGcmFtZVVSTCh1cmwpKQorICAgICAgICByZXR1cm47CisKKyAg
ICBpZiAob25seUNyZWF0ZU5vbk5ldHNjYXBlUGx1Z2lucyAmJiBlbWJlZEVsZW1lbnQtPndvdWxk
TG9hZEFzTmV0c2NhcGVQbHVnaW4odXJsLCBzZXJ2aWNlVHlwZSkpCiAgICAgICAgIHJldHVybjsK
IAogICAgIFZlY3RvcjxTdHJpbmc+IHBhcmFtTmFtZXM7CiAgICAgVmVjdG9yPFN0cmluZz4gcGFy
YW1WYWx1ZXM7Ci0gICAgcGFyYW1ldGVyc0Zyb21FbWJlZChlbWJlZEVsZW1lbnQsIHBhcmFtTmFt
ZXMsIHBhcmFtVmFsdWVzKTsKKyAgICBlbWJlZEVsZW1lbnQtPnBhcmFtZXRlcnNGb3JQbHVnaW4o
cGFyYW1OYW1lcywgcGFyYW1WYWx1ZXMpOwogCi0gICAgaWYgKG9ubHlDcmVhdGVOb25OZXRzY2Fw
ZVBsdWdpbnMgJiYgaXNOZXRzY2FwZVBsdWdpbihmcmFtZSwgdXJsLCBzZXJ2aWNlVHlwZSkpCisg
ICAgaWYgKCFlbWJlZEVsZW1lbnQtPmRpc3BhdGNoQmVmb3JlTG9hZEV2ZW50KHVybCkpCiAgICAg
ICAgIHJldHVybjsKIAotICAgIGlmIChlbWJlZEVsZW1lbnQtPmRpc3BhdGNoQmVmb3JlTG9hZEV2
ZW50KHVybCkpIHsKLSAgICAgICAgLy8gRklYTUU6IGJlZm9yZUxvYWQgY291bGQgaGF2ZSBkZXRh
Y2hlZCB0aGUgcmVuZGVyZXIhICBKdXN0IGxpa2UgaW4gdGhlIDxvYmplY3Q+IGNhc2UgYWJvdmUu
Ci0gICAgICAgIGZyYW1lLT5sb2FkZXIoKS0+c3ViZnJhbWVMb2FkZXIoKS0+cmVxdWVzdE9iamVj
dChlbWJlZEVsZW1lbnQsIHVybCwgZW1iZWRFbGVtZW50LT5nZXRBdHRyaWJ1dGUobmFtZUF0dHIp
LCBzZXJ2aWNlVHlwZSwgcGFyYW1OYW1lcywgcGFyYW1WYWx1ZXMpOwotICAgIH0KKyAgICBTdWJm
cmFtZUxvYWRlciogbG9hZGVyID0gZW1iZWRFbGVtZW50LT5kb2N1bWVudCgpLT5mcmFtZSgpLT5s
b2FkZXIoKS0+c3ViZnJhbWVMb2FkZXIoKTsKKyAgICAvLyBGSVhNRTogYmVmb3JlTG9hZCBjb3Vs
ZCBoYXZlIGRldGFjaGVkIHRoZSByZW5kZXJlciEgIEp1c3QgbGlrZSBpbiB0aGUgPG9iamVjdD4g
Y2FzZSBhYm92ZS4KKyAgICBsb2FkZXItPnJlcXVlc3RPYmplY3QoZW1iZWRFbGVtZW50LCB1cmws
IGVtYmVkRWxlbWVudC0+Z2V0QXR0cmlidXRlKG5hbWVBdHRyKSwgc2VydmljZVR5cGUsIHBhcmFt
TmFtZXMsIHBhcmFtVmFsdWVzKTsKIH0KIAogI2lmIEVOQUJMRShQTFVHSU5fUFJPWFlfRk9SX1ZJ
REVPKQpAQCAtMzY5LDYgKzIxNCw4IEBAIHZvaWQgUmVuZGVyRW1iZWRkZWRPYmplY3Q6OnVwZGF0
ZVdpZGdldChib29sIG9ubHlDcmVhdGVOb25OZXRzY2FwZVBsdWdpbnMpCiAgICAgICAgIHVwZGF0
ZVdpZGdldEZvck1lZGlhRWxlbWVudChtZWRpYUVsZW1lbnQsIG9ubHlDcmVhdGVOb25OZXRzY2Fw
ZVBsdWdpbnMpOwogICAgIH0KICNlbmRpZgorICAgIGVsc2UKKyAgICAgICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7CiB9CiAKIHZvaWQgUmVuZGVyRW1iZWRkZWRPYmplY3Q6OnNldFNob3dzTWlzc2lu
Z1BsdWdpbkluZGljYXRvcigpCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>