<?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>88256</bug_id>
          
          <creation_ts>2012-06-04 14:23:54 -0700</creation_ts>
          <short_desc>REGRESSION(r119421): not reliable, let&apos;s have a do-over (Requested by kling on #webkit).</short_desc>
          <delta_ts>2012-06-04 14:35:32 -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>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>88240</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="WebKit Review Bot">webkit.review.bot</reporter>
          <assigned_to name="WebKit Review Bot">webkit.review.bot</assigned_to>
          <cc>kling</cc>
    
    <cc>koivisto</cc>
    
    <cc>rniwa</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>640834</commentid>
    <comment_count>0</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-06-04 14:23:54 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/119421 broke the build:
not reliable, let&apos;s have a do-over (Requested by kling on #webkit).

This is an automatic bug report generated by the sheriff-bot. If this bug
report was created because of a flaky test, please file a bug for the flaky
test (if we don&apos;t already have one on file) and dup this bug against that bug
so that we can track how often these flaky tests case pain.

&quot;Only you can prevent forest fires.&quot; -- Smokey the Bear</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>640837</commentid>
    <comment_count>1</comment_count>
      <attachid>145626</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-06-04 14:24:31 -0700</bug_when>
    <thetext>Created attachment 145626
ROLLOUT of r119421

Any committer can land this patch automatically by marking it commit-queue+.  The commit-queue will build and test the patch before landing to ensure that the rollout will be successful.  This process takes approximately 15 minutes.

If you would like to land the rollout faster, you can use the following command:

  webkit-patch land-attachment ATTACHMENT_ID

where ATTACHMENT_ID is the ID of this attachment.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>640846</commentid>
    <comment_count>2</comment_count>
      <attachid>145626</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-06-04 14:35:28 -0700</bug_when>
    <thetext>Comment on attachment 145626
ROLLOUT of r119421

Clearing flags on attachment: 145626

Committed r119426: &lt;http://trac.webkit.org/changeset/119426&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>640847</commentid>
    <comment_count>3</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-06-04 14:35:32 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>145626</attachid>
            <date>2012-06-04 14:24:31 -0700</date>
            <delta_ts>2012-06-04 14:35:28 -0700</delta_ts>
            <desc>ROLLOUT of r119421</desc>
            <filename>bug-88256-20120604212902.patch</filename>
            <type>text/plain</type>
            <size>44637</size>
            <attacher name="WebKit Review Bot">webkit.review.bot</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE5NDI1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODNjMzQ1NTAyMzkwODJk
NmRlY2IyM2ZiNTVjN2ZiZjBjODg2MTE3Yi4uZDM1OTkwNWI0NzdmYmEzYmFiNmFlYzc4YWQ3N2U0
NmVlOTFlYTRiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc4IEBACisyMDEyLTA2LTA0ICBTaGVy
aWZmIEJvdCAgPHdlYmtpdC5yZXZpZXcuYm90QGdtYWlsLmNvbT4KKworICAgICAgICBVbnJldmll
d2VkLCByb2xsaW5nIG91dCByMTE5NDIxIGFuZCByMTE5NDI1LgorICAgICAgICBodHRwOi8vdHJh
Yy53ZWJraXQub3JnL2NoYW5nZXNldC8xMTk0MjEKKyAgICAgICAgaHR0cDovL3RyYWMud2Via2l0
Lm9yZy9jaGFuZ2VzZXQvMTE5NDI1CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD04ODI1NgorCisgICAgICAgIG5vdCByZWxpYWJsZSwgbGV0J3MgaGF2ZSBh
IGRvLW92ZXIgKFJlcXVlc3RlZCBieSBrbGluZyBvbgorICAgICAgICAjd2Via2l0KS4KKworICAg
ICAgICAqIGRvbS9FbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OmRldGFj
aEF0dHJpYnV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjpyZW1vdmVBdHRyaWJ1dGUp
OgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6YXR0cmlidXRlcyk6CisgICAgICAgIChXZWJD
b3JlOjpFbGVtZW50OjpzZXRBdHRyaWJ1dGVJbnRlcm5hbCk6CisgICAgICAgIChXZWJDb3JlOjpF
bGVtZW50OjpwYXJzZXJTZXRBdHRyaWJ1dGVzKToKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6
Omhhc0VxdWl2YWxlbnRBdHRyaWJ1dGVzKToKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OmNy
ZWF0ZUF0dHJpYnV0ZURhdGEpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3Jl
OjpFbGVtZW50OjpzZXRBdHRyaWJ1dGVOb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6
OnJlbW92ZUF0dHJpYnV0ZU5vZGUpOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6Z2V0QXR0
cmlidXRlTm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjpnZXRBdHRyaWJ1dGVOb2Rl
TlMpOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6aGFzQXR0cmlidXRlKToKKyAgICAgICAg
KFdlYkNvcmU6OkVsZW1lbnQ6Omhhc0F0dHJpYnV0ZU5TKToKKyAgICAgICAgKFdlYkNvcmU6OkVs
ZW1lbnQ6Om5vcm1hbGl6ZUF0dHJpYnV0ZXMpOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6
Y2xvbmVBdHRyaWJ1dGVzRnJvbUVsZW1lbnQpOgorICAgICAgICAqIGRvbS9FbGVtZW50Lmg6Cisg
ICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjphdHRyaWJ1dGVEYXRhKToKKyAgICAgICAgKEVsZW1l
bnQpOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6ZW5zdXJlQXR0cmlidXRlRGF0YSk6Cisg
ICAgICAgIChXZWJDb3JlOjpFbGVtZW50Ojp1cGRhdGVkQXR0cmlidXRlRGF0YSk6CisgICAgICAg
IChXZWJDb3JlOjpFbGVtZW50OjplbnN1cmVVcGRhdGVkQXR0cmlidXRlRGF0YSk6CisgICAgICAg
ICogZG9tL0VsZW1lbnRBdHRyaWJ1dGVEYXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1l
bnRBdHRyaWJ1dGVEYXRhOjphdHRySWZFeGlzdHMpOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVu
dEF0dHJpYnV0ZURhdGE6OmVuc3VyZUF0dHIpOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudEF0
dHJpYnV0ZURhdGE6OnNldEF0dHIpOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudEF0dHJpYnV0
ZURhdGE6OnJlbW92ZUF0dHIpOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudEF0dHJpYnV0ZURh
dGE6OnNldENsYXNzKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6RWxl
bWVudEF0dHJpYnV0ZURhdGE6OmVuc3VyZUlubGluZVN0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6
OkVsZW1lbnRBdHRyaWJ1dGVEYXRhOjplbnN1cmVNdXRhYmxlSW5saW5lU3R5bGUpOgorICAgICAg
ICAoV2ViQ29yZTo6RWxlbWVudEF0dHJpYnV0ZURhdGE6OmRlc3Ryb3lJbmxpbmVTdHlsZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpFbGVtZW50QXR0cmlidXRlRGF0YTo6YWRkQXR0cmlidXRlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkVsZW1lbnRBdHRyaWJ1dGVEYXRhOjpyZW1vdmVBdHRyaWJ1dGUpOgor
ICAgICAgICAoV2ViQ29yZTo6RWxlbWVudEF0dHJpYnV0ZURhdGE6OmlzRXF1aXZhbGVudCk6Cisg
ICAgICAgIChXZWJDb3JlOjpFbGVtZW50QXR0cmlidXRlRGF0YTo6ZGV0YWNoQXR0ck9iamVjdHNG
cm9tRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50QXR0cmlidXRlRGF0YTo6Z2V0
QXR0cmlidXRlSXRlbUluZGV4U2xvd0Nhc2UpOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudEF0
dHJpYnV0ZURhdGE6OmNsb25lRGF0YUZyb20pOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudEF0
dHJpYnV0ZURhdGE6OmNsZWFyQXR0cmlidXRlcyk6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50
QXR0cmlidXRlRGF0YTo6cmVwbGFjZUF0dHJpYnV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpFbGVt
ZW50QXR0cmlidXRlRGF0YTo6Z2V0QXR0cmlidXRlTm9kZSk6CisgICAgICAgICogZG9tL0VsZW1l
bnRBdHRyaWJ1dGVEYXRhLmg6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50QXR0cmlidXRlRGF0
YTo6Y3JlYXRlKToKKyAgICAgICAgKEVsZW1lbnRBdHRyaWJ1dGVEYXRhKToKKyAgICAgICAgKFdl
YkNvcmU6OkVsZW1lbnRBdHRyaWJ1dGVEYXRhOjpzZXRJZEZvclN0eWxlUmVzb2x1dGlvbik6Cisg
ICAgICAgIChXZWJDb3JlOjpFbGVtZW50QXR0cmlidXRlRGF0YTo6c2V0QXR0cmlidXRlU3R5bGUp
OgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudEF0dHJpYnV0ZURhdGE6Omxlbmd0aCk6CisgICAg
ICAgIChXZWJDb3JlOjpFbGVtZW50QXR0cmlidXRlRGF0YTo6aXNFbXB0eSk6CisgICAgICAgIChX
ZWJDb3JlOjpFbGVtZW50QXR0cmlidXRlRGF0YTo6YXR0cmlidXRlSXRlbSk6CisgICAgICAgIChX
ZWJDb3JlOjpFbGVtZW50QXR0cmlidXRlRGF0YTo6Z2V0QXR0cmlidXRlSXRlbSk6CisgICAgICAg
IChXZWJDb3JlOjpFbGVtZW50QXR0cmlidXRlRGF0YTo6RWxlbWVudEF0dHJpYnV0ZURhdGEpOgor
ICAgICAgICAoV2ViQ29yZTo6RWxlbWVudEF0dHJpYnV0ZURhdGE6OmF0dHJpYnV0ZVZlY3Rvcik6
CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50QXR0cmlidXRlRGF0YTo6Y2xvbmVkQXR0cmlidXRl
VmVjdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnRBdHRyaWJ1dGVEYXRhOjpnZXRBdHRy
aWJ1dGVJdGVtSW5kZXgpOgorICAgICAgICAqIGRvbS9TdHlsZWRFbGVtZW50LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlN0eWxlZEVsZW1lbnQ6OnN0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6OlN0
eWxlZEVsZW1lbnQ6OmNsYXNzQXR0cmlidXRlQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpT
dHlsZWRFbGVtZW50OjpyZW1vdmVJbmxpbmVTdHlsZVByb3BlcnR5KToKKyAgICAgICAgKFdlYkNv
cmU6OlN0eWxlZEVsZW1lbnQ6OmFkZFN1YnJlc291cmNlQXR0cmlidXRlVVJMcyk6CisgICAgICAg
ICogaHRtbC9wYXJzZXIvSFRNTENvbnN0cnVjdGlvblNpdGUuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SFRNTENvbnN0cnVjdGlvblNpdGU6OmNyZWF0ZUhUTUxFbGVtZW50RnJvbVNhdmVkRWxlbWVu
dCk6CisgICAgICAgICogeG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNlclF0LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlhNTERvY3VtZW50UGFyc2VyOjpYTUxEb2N1bWVudFBhcnNlcik6CisKIDIw
MTItMDYtMDQgIEFuZHJlYXMgS2xpbmcgIDxrbGluZ0B3ZWJraXQub3JnPgogCiAgICAgICAgIFVu
cmV2aWV3ZWQgYnVpbGQgZml4ZXMgZm9yIGNyLWFuZHJvaWQgYW5kIFF0LgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1l
bnQuY3BwCmluZGV4IDJmZTk2ODA5ODNlMzQ1YTU3NjlkNzllYzAzM2FiYzIxYWViN2E4ZjQuLjI4
MDQ3NDY4ZjkyMzc3OTdiMGMxMDUyNWMxNTI4OWI3MThjMGM2YjIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVu
dC5jcHAKQEAgLTE5Nyw3ICsxOTcsNyBAQCBQYXNzUmVmUHRyPEF0dHI+IEVsZW1lbnQ6OmRldGFj
aEF0dHJpYnV0ZShzaXplX3QgaW5kZXgpCiB7CiAgICAgQVNTRVJUKGF0dHJpYnV0ZURhdGEoKSk7
CiAKLSAgICBjb25zdCBBdHRyaWJ1dGUqIGF0dHJpYnV0ZSA9IGF0dHJpYnV0ZURhdGEoKS0+YXR0
cmlidXRlSXRlbShpbmRleCk7CisgICAgQXR0cmlidXRlKiBhdHRyaWJ1dGUgPSBhdHRyaWJ1dGVE
YXRhKCktPmF0dHJpYnV0ZUl0ZW0oaW5kZXgpOwogICAgIEFTU0VSVChhdHRyaWJ1dGUpOwogCiAg
ICAgUmVmUHRyPEF0dHI+IGF0dHIgPSBhdHRySWZFeGlzdHMoYXR0cmlidXRlLT5uYW1lKCkpOwpA
QCAtMjA2LDcgKzIwNiw3IEBAIFBhc3NSZWZQdHI8QXR0cj4gRWxlbWVudDo6ZGV0YWNoQXR0cmli
dXRlKHNpemVfdCBpbmRleCkKICAgICBlbHNlCiAgICAgICAgIGF0dHIgPSBBdHRyOjpjcmVhdGUo
ZG9jdW1lbnQoKSwgYXR0cmlidXRlLT5uYW1lKCksIGF0dHJpYnV0ZS0+dmFsdWUoKSk7CiAKLSAg
ICBtdXRhYmxlQXR0cmlidXRlRGF0YSgpLT5yZW1vdmVBdHRyaWJ1dGUoaW5kZXgsIHRoaXMpOwor
ICAgIGF0dHJpYnV0ZURhdGEoKS0+cmVtb3ZlQXR0cmlidXRlKGluZGV4LCB0aGlzKTsKICAgICBy
ZXR1cm4gYXR0ci5yZWxlYXNlKCk7CiB9CiAKQEAgLTIxOCwxMSArMjE4LDcgQEAgdm9pZCBFbGVt
ZW50OjpyZW1vdmVBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSkKICAgICBpZiAo
UmVmUHRyPEF0dHI+IGF0dHIgPSBhdHRySWZFeGlzdHMobmFtZSkpCiAgICAgICAgIGF0dHItPmRl
dGFjaEZyb21FbGVtZW50V2l0aFZhbHVlKGF0dHItPnZhbHVlKCkpOwogCi0gICAgc2l6ZV90IGlu
ZGV4ID0gYXR0cmlidXRlRGF0YSgpLT5nZXRBdHRyaWJ1dGVJdGVtSW5kZXgobmFtZSk7Ci0gICAg
aWYgKGluZGV4ID09IG5vdEZvdW5kKQotICAgICAgICByZXR1cm47Ci0KLSAgICBtdXRhYmxlQXR0
cmlidXRlRGF0YSgpLT5yZW1vdmVBdHRyaWJ1dGUoaW5kZXgsIHRoaXMpOworICAgIGF0dHJpYnV0
ZURhdGEoKS0+cmVtb3ZlQXR0cmlidXRlKG5hbWUsIHRoaXMpOwogfQogCiB2b2lkIEVsZW1lbnQ6
OnNldEJvb2xlYW5BdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgYm9vbCB2YWx1
ZSkKQEAgLTIzNSw4ICsyMzEsNyBAQCB2b2lkIEVsZW1lbnQ6OnNldEJvb2xlYW5BdHRyaWJ1dGUo
Y29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgYm9vbCB2YWx1ZSkKIAogTmFtZWROb2RlTWFwKiBF
bGVtZW50OjphdHRyaWJ1dGVzKCkgY29uc3QKIHsKLSAgICAvLyBGSVhNRTogVGhpcyBzaG91bGRu
J3QgaGF2ZSB0byBtYWtlIHRoZSBFbGVtZW50QXR0cmlidXRlRGF0YSBtdXRhYmxlLgotICAgIGNv
bnN0X2Nhc3Q8RWxlbWVudCo+KHRoaXMpLT5lbnN1cmVVcGRhdGVkQXR0cmlidXRlRGF0YSgpOwor
ICAgIGVuc3VyZVVwZGF0ZWRBdHRyaWJ1dGVEYXRhKCk7CiAgICAgRWxlbWVudFJhcmVEYXRhKiBy
YXJlRGF0YSA9IGNvbnN0X2Nhc3Q8RWxlbWVudCo+KHRoaXMpLT5lbnN1cmVSYXJlRGF0YSgpOwog
ICAgIGlmIChOYW1lZE5vZGVNYXAqIGF0dHJpYnV0ZU1hcCA9IHJhcmVEYXRhLT5tX2F0dHJpYnV0
ZU1hcC5nZXQoKSkKICAgICAgICAgcmV0dXJuIGF0dHJpYnV0ZU1hcDsKQEAgLTY4MSw4ICs2NzYs
NiBAQCB2b2lkIEVsZW1lbnQ6OnNldEF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1l
LCBjb25zdCBBdG9taWNTdHJpbmcmIHZhbHVlLAogCiBpbmxpbmUgdm9pZCBFbGVtZW50OjpzZXRB
dHRyaWJ1dGVJbnRlcm5hbChzaXplX3QgaW5kZXgsIGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUs
IGNvbnN0IEF0b21pY1N0cmluZyYgdmFsdWUsIEVJblVwZGF0ZVN0eWxlQXR0cmlidXRlIGluVXBk
YXRlU3R5bGVBdHRyaWJ1dGUpCiB7Ci0gICAgbXV0YWJsZUF0dHJpYnV0ZURhdGEoKTsKLQogICAg
IEF0dHJpYnV0ZSogb2xkID0gaW5kZXggIT0gbm90Rm91bmQgPyBtX2F0dHJpYnV0ZURhdGEtPmF0
dHJpYnV0ZUl0ZW0oaW5kZXgpIDogMDsKICAgICBpZiAodmFsdWUuaXNOdWxsKCkpIHsKICAgICAg
ICAgaWYgKG9sZCkKQEAgLTc4NSwzMiArNzc4LDMyIEBAIHZvaWQgRWxlbWVudDo6cGFyc2VyU2V0
QXR0cmlidXRlcyhjb25zdCBWZWN0b3I8QXR0cmlidXRlPiYgYXR0cmlidXRlVmVjdG9yLCBGcmFn
CiAgICAgaWYgKGF0dHJpYnV0ZVZlY3Rvci5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKIAot
ICAgIFZlY3RvcjxBdHRyaWJ1dGU+IGZpbHRlcmVkQXR0cmlidXRlcyA9IGF0dHJpYnV0ZVZlY3Rv
cjsKKyAgICBjcmVhdGVBdHRyaWJ1dGVEYXRhKCk7CisgICAgbV9hdHRyaWJ1dGVEYXRhLT5tX2F0
dHJpYnV0ZXMgPSBhdHRyaWJ1dGVWZWN0b3I7CisgICAgbV9hdHRyaWJ1dGVEYXRhLT5tX2F0dHJp
YnV0ZXMuc2hyaW5rVG9GaXQoKTsKIAogICAgIC8vIElmIHRoZSBlbGVtZW50IGlzIGNyZWF0ZWQg
YXMgcmVzdWx0IG9mIGEgcGFzdGUgb3IgZHJhZy1uLWRyb3Agb3BlcmF0aW9uCiAgICAgLy8gd2Ug
d2FudCB0byByZW1vdmUgYWxsIHRoZSBzY3JpcHQgYW5kIGV2ZW50IGhhbmRsZXJzLgogICAgIGlm
IChzY3JpcHRpbmdQZXJtaXNzaW9uID09IERpc2FsbG93U2NyaXB0aW5nQ29udGVudCkgewogICAg
ICAgICB1bnNpZ25lZCBpID0gMDsKLSAgICAgICAgd2hpbGUgKGkgPCBmaWx0ZXJlZEF0dHJpYnV0
ZXMuc2l6ZSgpKSB7Ci0gICAgICAgICAgICBBdHRyaWJ1dGUmIGF0dHJpYnV0ZSA9IGZpbHRlcmVk
QXR0cmlidXRlc1tpXTsKLSAgICAgICAgICAgIGlmIChpc0V2ZW50SGFuZGxlckF0dHJpYnV0ZShh
dHRyaWJ1dGUubmFtZSgpKSkgewotICAgICAgICAgICAgICAgIGZpbHRlcmVkQXR0cmlidXRlcy5y
ZW1vdmUoaSk7CisgICAgICAgIHdoaWxlIChpIDwgbV9hdHRyaWJ1dGVEYXRhLT5sZW5ndGgoKSkg
eworICAgICAgICAgICAgY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZSA9IG1fYXR0
cmlidXRlRGF0YS0+bV9hdHRyaWJ1dGVzW2ldLm5hbWUoKTsKKyAgICAgICAgICAgIGlmIChpc0V2
ZW50SGFuZGxlckF0dHJpYnV0ZShhdHRyaWJ1dGVOYW1lKSkgeworICAgICAgICAgICAgICAgIG1f
YXR0cmlidXRlRGF0YS0+bV9hdHRyaWJ1dGVzLnJlbW92ZShpKTsKICAgICAgICAgICAgICAgICBj
b250aW51ZTsKICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgaWYgKGlzQXR0cmlidXRlVG9S
ZW1vdmUoYXR0cmlidXRlLm5hbWUoKSwgYXR0cmlidXRlLnZhbHVlKCkpKQotICAgICAgICAgICAg
ICAgIGF0dHJpYnV0ZS5zZXRWYWx1ZShudWxsQXRvbSk7CisgICAgICAgICAgICBpZiAoaXNBdHRy
aWJ1dGVUb1JlbW92ZShhdHRyaWJ1dGVOYW1lLCBtX2F0dHJpYnV0ZURhdGEtPm1fYXR0cmlidXRl
c1tpXS52YWx1ZSgpKSkKKyAgICAgICAgICAgICAgICBtX2F0dHJpYnV0ZURhdGEtPm1fYXR0cmli
dXRlc1tpXS5zZXRWYWx1ZShudWxsQXRvbSk7CiAgICAgICAgICAgICBpKys7CiAgICAgICAgIH0K
ICAgICB9CiAKLSAgICBtX2F0dHJpYnV0ZURhdGEgPSBFbGVtZW50QXR0cmlidXRlRGF0YTo6Y3Jl
YXRlSW1tdXRhYmxlKGZpbHRlcmVkQXR0cmlidXRlcyk7Ci0KLSAgICAvLyBJdGVyYXRlIG92ZXIg
dGhlIHNldCBvZiBhdHRyaWJ1dGVzIHdlIGFscmVhZHkgaGF2ZSBvbiB0aGUgc3RhY2sgaW4gY2Fz
ZQorICAgIC8vIFN0b3JlIHRoZSBzZXQgb2YgYXR0cmlidXRlcyB0aGF0IGNoYW5nZWQgb24gdGhl
IHN0YWNrIGluIGNhc2UKICAgICAvLyBhdHRyaWJ1dGVDaGFuZ2VkIG11dGF0ZXMgbV9hdHRyaWJ1
dGVEYXRhLgotICAgIC8vIEZJWE1FOiBGaW5kIGEgd2F5IHNvIHdlIGRvbid0IGhhdmUgdG8gZG8g
dGhpcy4KLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgZmlsdGVyZWRBdHRyaWJ1dGVzLnNp
emUoKTsgKytpKQotICAgICAgICBhdHRyaWJ1dGVDaGFuZ2VkKGZpbHRlcmVkQXR0cmlidXRlc1tp
XSk7CisgICAgVmVjdG9yPEF0dHJpYnV0ZT4gY2xvbmVkQXR0cmlidXRlcyA9IG1fYXR0cmlidXRl
RGF0YS0+Y2xvbmVkQXR0cmlidXRlVmVjdG9yKCk7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsg
aSA8IGNsb25lZEF0dHJpYnV0ZXMuc2l6ZSgpOyArK2kpCisgICAgICAgIGF0dHJpYnV0ZUNoYW5n
ZWQoY2xvbmVkQXR0cmlidXRlc1tpXSk7CiB9CiAKIGJvb2wgRWxlbWVudDo6aGFzQXR0cmlidXRl
cygpIGNvbnN0CkBAIC04MjEsOCArODE0LDggQEAgYm9vbCBFbGVtZW50OjpoYXNBdHRyaWJ1dGVz
KCkgY29uc3QKIAogYm9vbCBFbGVtZW50OjpoYXNFcXVpdmFsZW50QXR0cmlidXRlcyhjb25zdCBF
bGVtZW50KiBvdGhlcikgY29uc3QKIHsKLSAgICBjb25zdCBFbGVtZW50QXR0cmlidXRlRGF0YSog
YXR0cmlidXRlRGF0YSA9IHVwZGF0ZWRBdHRyaWJ1dGVEYXRhKCk7Ci0gICAgY29uc3QgRWxlbWVu
dEF0dHJpYnV0ZURhdGEqIG90aGVyQXR0cmlidXRlRGF0YSA9IG90aGVyLT51cGRhdGVkQXR0cmli
dXRlRGF0YSgpOworICAgIEVsZW1lbnRBdHRyaWJ1dGVEYXRhKiBhdHRyaWJ1dGVEYXRhID0gdXBk
YXRlZEF0dHJpYnV0ZURhdGEoKTsKKyAgICBFbGVtZW50QXR0cmlidXRlRGF0YSogb3RoZXJBdHRy
aWJ1dGVEYXRhID0gb3RoZXItPnVwZGF0ZWRBdHRyaWJ1dGVEYXRhKCk7CiAgICAgaWYgKGF0dHJp
YnV0ZURhdGEpCiAgICAgICAgIHJldHVybiBhdHRyaWJ1dGVEYXRhLT5pc0VxdWl2YWxlbnQob3Ro
ZXJBdHRyaWJ1dGVEYXRhKTsKICAgICBpZiAob3RoZXJBdHRyaWJ1dGVEYXRhKQpAQCAtODY4LDYg
Kzg2MSwxMSBAQCBLVVJMIEVsZW1lbnQ6OmJhc2VVUkkoKSBjb25zdAogICAgIHJldHVybiBLVVJM
KHBhcmVudEJhc2UsIGJhc2VBdHRyaWJ1dGUpOwogfQogCit2b2lkIEVsZW1lbnQ6OmNyZWF0ZUF0
dHJpYnV0ZURhdGEoKSBjb25zdAoreworICAgIG1fYXR0cmlidXRlRGF0YSA9IEVsZW1lbnRBdHRy
aWJ1dGVEYXRhOjpjcmVhdGUoKTsKK30KKwogY29uc3QgUXVhbGlmaWVkTmFtZSYgRWxlbWVudDo6
aW1hZ2VTb3VyY2VBdHRyaWJ1dGVOYW1lKCkgY29uc3QKIHsKICAgICByZXR1cm4gc3JjQXR0cjsK
QEAgLTEzOTMsNiArMTM5MSw4IEBAIFBhc3NSZWZQdHI8QXR0cj4gRWxlbWVudDo6c2V0QXR0cmli
dXRlTm9kZShBdHRyKiBhdHRyLCBFeGNlcHRpb25Db2RlJiBlYykKICAgICAgICAgcmV0dXJuIDA7
CiAgICAgfQogCisgICAgRWxlbWVudEF0dHJpYnV0ZURhdGEqIGF0dHJpYnV0ZURhdGEgPSBlbnN1
cmVVcGRhdGVkQXR0cmlidXRlRGF0YSgpOworCiAgICAgUmVmUHRyPEF0dHI+IG9sZEF0dHIgPSBh
dHRySWZFeGlzdHMoYXR0ci0+cXVhbGlmaWVkTmFtZSgpKTsKICAgICBpZiAob2xkQXR0ci5nZXQo
KSA9PSBhdHRyKQogICAgICAgICByZXR1cm4gYXR0cjsgLy8gVGhpcyBBdHRyIGlzIGFscmVhZHkg
YXR0YWNoZWQgdG8gdGhlIGVsZW1lbnQuCkBAIC0xNDA0LDggKzE0MDQsNiBAQCBQYXNzUmVmUHRy
PEF0dHI+IEVsZW1lbnQ6OnNldEF0dHJpYnV0ZU5vZGUoQXR0ciogYXR0ciwgRXhjZXB0aW9uQ29k
ZSYgZWMpCiAgICAgICAgIHJldHVybiAwOwogICAgIH0KIAotICAgIEVsZW1lbnRBdHRyaWJ1dGVE
YXRhKiBhdHRyaWJ1dGVEYXRhID0gbXV0YWJsZUF0dHJpYnV0ZURhdGEoKTsKLQogICAgIHNpemVf
dCBpbmRleCA9IGF0dHJpYnV0ZURhdGEtPmdldEF0dHJpYnV0ZUl0ZW1JbmRleChhdHRyLT5xdWFs
aWZpZWROYW1lKCkpOwogICAgIEF0dHJpYnV0ZSogb2xkQXR0cmlidXRlID0gaW5kZXggIT0gbm90
Rm91bmQgPyBhdHRyaWJ1dGVEYXRhLT5hdHRyaWJ1dGVJdGVtKGluZGV4KSA6IDA7CiAKQEAgLTE0
NDMsNyArMTQ0MSw3IEBAIFBhc3NSZWZQdHI8QXR0cj4gRWxlbWVudDo6cmVtb3ZlQXR0cmlidXRl
Tm9kZShBdHRyKiBhdHRyLCBFeGNlcHRpb25Db2RlJiBlYykKIAogICAgIEFTU0VSVChkb2N1bWVu
dCgpID09IGF0dHItPmRvY3VtZW50KCkpOwogCi0gICAgY29uc3QgRWxlbWVudEF0dHJpYnV0ZURh
dGEqIGF0dHJpYnV0ZURhdGEgPSB1cGRhdGVkQXR0cmlidXRlRGF0YSgpOworICAgIEVsZW1lbnRB
dHRyaWJ1dGVEYXRhKiBhdHRyaWJ1dGVEYXRhID0gdXBkYXRlZEF0dHJpYnV0ZURhdGEoKTsKICAg
ICBBU1NFUlQoYXR0cmlidXRlRGF0YSk7CiAKICAgICBzaXplX3QgaW5kZXggPSBhdHRyaWJ1dGVE
YXRhLT5nZXRBdHRyaWJ1dGVJdGVtSW5kZXgoYXR0ci0+cXVhbGlmaWVkTmFtZSgpKTsKQEAgLTE0
NzgsMjAgKzE0NzYsMjEgQEAgdm9pZCBFbGVtZW50OjpyZW1vdmVBdHRyaWJ1dGUoc2l6ZV90IGlu
ZGV4KQogewogICAgIEFTU0VSVChhdHRyaWJ1dGVEYXRhKCkpOwogICAgIEFTU0VSVChpbmRleCA8
PSBhdHRyaWJ1dGVDb3VudCgpKTsKLSAgICBtdXRhYmxlQXR0cmlidXRlRGF0YSgpLT5yZW1vdmVB
dHRyaWJ1dGUoaW5kZXgsIHRoaXMpOworICAgIGF0dHJpYnV0ZURhdGEoKS0+cmVtb3ZlQXR0cmli
dXRlKGluZGV4LCB0aGlzKTsKIH0KIAogdm9pZCBFbGVtZW50OjpyZW1vdmVBdHRyaWJ1dGUoY29u
c3QgU3RyaW5nJiBuYW1lKQogewotICAgIGlmICghYXR0cmlidXRlRGF0YSgpKQorICAgIEVsZW1l
bnRBdHRyaWJ1dGVEYXRhKiBhdHRyaWJ1dGVEYXRhID0gdGhpcy0+YXR0cmlidXRlRGF0YSgpOwor
ICAgIGlmICghYXR0cmlidXRlRGF0YSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgU3RyaW5nIGxv
Y2FsTmFtZSA9IHNob3VsZElnbm9yZUF0dHJpYnV0ZUNhc2UodGhpcykgPyBuYW1lLmxvd2VyKCkg
OiBuYW1lOwotICAgIHNpemVfdCBpbmRleCA9IGF0dHJpYnV0ZURhdGEoKS0+Z2V0QXR0cmlidXRl
SXRlbUluZGV4KGxvY2FsTmFtZSwgZmFsc2UpOworICAgIHNpemVfdCBpbmRleCA9IGF0dHJpYnV0
ZURhdGEtPmdldEF0dHJpYnV0ZUl0ZW1JbmRleChsb2NhbE5hbWUsIGZhbHNlKTsKICAgICBpZiAo
aW5kZXggPT0gbm90Rm91bmQpCiAgICAgICAgIHJldHVybjsKIAotICAgIG11dGFibGVBdHRyaWJ1
dGVEYXRhKCktPnJlbW92ZUF0dHJpYnV0ZShpbmRleCwgdGhpcyk7CisgICAgYXR0cmlidXRlRGF0
YS0+cmVtb3ZlQXR0cmlidXRlKGluZGV4LCB0aGlzKTsKIH0KIAogdm9pZCBFbGVtZW50OjpyZW1v
dmVBdHRyaWJ1dGVOUyhjb25zdCBTdHJpbmcmIG5hbWVzcGFjZVVSSSwgY29uc3QgU3RyaW5nJiBs
b2NhbE5hbWUpCkBAIC0xNTAxLDcgKzE1MDAsNyBAQCB2b2lkIEVsZW1lbnQ6OnJlbW92ZUF0dHJp
YnV0ZU5TKGNvbnN0IFN0cmluZyYgbmFtZXNwYWNlVVJJLCBjb25zdCBTdHJpbmcmIGxvY2FsTgog
CiBQYXNzUmVmUHRyPEF0dHI+IEVsZW1lbnQ6OmdldEF0dHJpYnV0ZU5vZGUoY29uc3QgU3RyaW5n
JiBuYW1lKQogewotICAgIGNvbnN0IEVsZW1lbnRBdHRyaWJ1dGVEYXRhKiBhdHRyaWJ1dGVEYXRh
ID0gdXBkYXRlZEF0dHJpYnV0ZURhdGEoKTsKKyAgICBFbGVtZW50QXR0cmlidXRlRGF0YSogYXR0
cmlidXRlRGF0YSA9IHVwZGF0ZWRBdHRyaWJ1dGVEYXRhKCk7CiAgICAgaWYgKCFhdHRyaWJ1dGVE
YXRhKQogICAgICAgICByZXR1cm4gMDsKICAgICByZXR1cm4gYXR0cmlidXRlRGF0YS0+Z2V0QXR0
cmlidXRlTm9kZShuYW1lLCBzaG91bGRJZ25vcmVBdHRyaWJ1dGVDYXNlKHRoaXMpLCB0aGlzKTsK
QEAgLTE1MDksNyArMTUwOCw3IEBAIFBhc3NSZWZQdHI8QXR0cj4gRWxlbWVudDo6Z2V0QXR0cmli
dXRlTm9kZShjb25zdCBTdHJpbmcmIG5hbWUpCiAKIFBhc3NSZWZQdHI8QXR0cj4gRWxlbWVudDo6
Z2V0QXR0cmlidXRlTm9kZU5TKGNvbnN0IFN0cmluZyYgbmFtZXNwYWNlVVJJLCBjb25zdCBTdHJp
bmcmIGxvY2FsTmFtZSkKIHsKLSAgICBjb25zdCBFbGVtZW50QXR0cmlidXRlRGF0YSogYXR0cmli
dXRlRGF0YSA9IHVwZGF0ZWRBdHRyaWJ1dGVEYXRhKCk7CisgICAgRWxlbWVudEF0dHJpYnV0ZURh
dGEqIGF0dHJpYnV0ZURhdGEgPSB1cGRhdGVkQXR0cmlidXRlRGF0YSgpOwogICAgIGlmICghYXR0
cmlidXRlRGF0YSkKICAgICAgICAgcmV0dXJuIDA7CiAgICAgcmV0dXJuIGF0dHJpYnV0ZURhdGEt
PmdldEF0dHJpYnV0ZU5vZGUoUXVhbGlmaWVkTmFtZShudWxsQXRvbSwgbG9jYWxOYW1lLCBuYW1l
c3BhY2VVUkkpLCB0aGlzKTsKQEAgLTE1MTcsMTggKzE1MTYsMTkgQEAgUGFzc1JlZlB0cjxBdHRy
PiBFbGVtZW50OjpnZXRBdHRyaWJ1dGVOb2RlTlMoY29uc3QgU3RyaW5nJiBuYW1lc3BhY2VVUkks
IGNvbnN0IFMKIAogYm9vbCBFbGVtZW50OjpoYXNBdHRyaWJ1dGUoY29uc3QgU3RyaW5nJiBuYW1l
KSBjb25zdAogewotICAgIGlmICghYXR0cmlidXRlRGF0YSgpKQorICAgIEVsZW1lbnRBdHRyaWJ1
dGVEYXRhKiBhdHRyaWJ1dGVEYXRhID0gdXBkYXRlZEF0dHJpYnV0ZURhdGEoKTsKKyAgICBpZiAo
IWF0dHJpYnV0ZURhdGEpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIC8vIFRoaXMgY2Fs
bCB0byBTdHJpbmc6Omxvd2VyKCkgc2VlbXMgdG8gYmUgcmVxdWlyZWQgYnV0CiAgICAgLy8gdGhl
cmUgbWF5IGJlIGEgd2F5IHRvIHJlbW92ZSBpdC4KICAgICBTdHJpbmcgbG9jYWxOYW1lID0gc2hv
dWxkSWdub3JlQXR0cmlidXRlQ2FzZSh0aGlzKSA/IG5hbWUubG93ZXIoKSA6IG5hbWU7Ci0gICAg
cmV0dXJuIHVwZGF0ZWRBdHRyaWJ1dGVEYXRhKCktPmdldEF0dHJpYnV0ZUl0ZW0obG9jYWxOYW1l
LCBmYWxzZSk7CisgICAgcmV0dXJuIGF0dHJpYnV0ZURhdGEtPmdldEF0dHJpYnV0ZUl0ZW0obG9j
YWxOYW1lLCBmYWxzZSk7CiB9CiAKIGJvb2wgRWxlbWVudDo6aGFzQXR0cmlidXRlTlMoY29uc3Qg
U3RyaW5nJiBuYW1lc3BhY2VVUkksIGNvbnN0IFN0cmluZyYgbG9jYWxOYW1lKSBjb25zdAogewot
ICAgIGNvbnN0IEVsZW1lbnRBdHRyaWJ1dGVEYXRhKiBhdHRyaWJ1dGVEYXRhID0gdXBkYXRlZEF0
dHJpYnV0ZURhdGEoKTsKKyAgICBFbGVtZW50QXR0cmlidXRlRGF0YSogYXR0cmlidXRlRGF0YSA9
IHVwZGF0ZWRBdHRyaWJ1dGVEYXRhKCk7CiAgICAgaWYgKCFhdHRyaWJ1dGVEYXRhKQogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAgICAgcmV0dXJuIGF0dHJpYnV0ZURhdGEtPmdldEF0dHJpYnV0ZUl0
ZW0oUXVhbGlmaWVkTmFtZShudWxsQXRvbSwgbG9jYWxOYW1lLCBuYW1lc3BhY2VVUkkpKTsKQEAg
LTE3MjQsMTEgKzE3MjQsMTIgQEAgdm9pZCBFbGVtZW50Ojpub3JtYWxpemVBdHRyaWJ1dGVzKCkK
ICAgICBpZiAoIWhhc0F0dHJMaXN0KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGNvbnN0IEVs
ZW1lbnRBdHRyaWJ1dGVEYXRhKiBhdHRyaWJ1dGVEYXRhID0gdXBkYXRlZEF0dHJpYnV0ZURhdGEo
KTsKKyAgICBFbGVtZW50QXR0cmlidXRlRGF0YSogYXR0cmlidXRlRGF0YSA9IHVwZGF0ZWRBdHRy
aWJ1dGVEYXRhKCk7CiAgICAgQVNTRVJUKGF0dHJpYnV0ZURhdGEpOwogCi0gICAgZm9yIChzaXpl
X3QgaSA9IDA7IGkgPCBhdHRyaWJ1dGVEYXRhLT5sZW5ndGgoKTsgKytpKSB7Ci0gICAgICAgIGlm
IChSZWZQdHI8QXR0cj4gYXR0ciA9IGF0dHJJZkV4aXN0cyhhdHRyaWJ1dGVEYXRhLT5hdHRyaWJ1
dGVJdGVtKGkpLT5uYW1lKCkpKQorICAgIGNvbnN0IFZlY3RvcjxBdHRyaWJ1dGU+JiBhdHRyaWJ1
dGVzID0gYXR0cmlidXRlRGF0YS0+YXR0cmlidXRlVmVjdG9yKCk7CisgICAgZm9yIChzaXplX3Qg
aSA9IDA7IGkgPCBhdHRyaWJ1dGVzLnNpemUoKTsgKytpKSB7CisgICAgICAgIGlmIChSZWZQdHI8
QXR0cj4gYXR0ciA9IGF0dHJJZkV4aXN0cyhhdHRyaWJ1dGVzW2ldLm5hbWUoKSkpCiAgICAgICAg
ICAgICBhdHRyLT5ub3JtYWxpemUoKTsKICAgICB9CiB9CkBAIC0yMTAzLDggKzIxMDQsOCBAQCBQ
YXNzUmVmUHRyPFJlbmRlclN0eWxlPiBFbGVtZW50OjpjdXN0b21TdHlsZUZvclJlbmRlcmVyKCkK
IAogdm9pZCBFbGVtZW50OjpjbG9uZUF0dHJpYnV0ZXNGcm9tRWxlbWVudChjb25zdCBFbGVtZW50
JiBvdGhlcikKIHsKLSAgICBpZiAoY29uc3QgRWxlbWVudEF0dHJpYnV0ZURhdGEqIGF0dHJpYnV0
ZURhdGEgPSBvdGhlci51cGRhdGVkQXR0cmlidXRlRGF0YSgpKQotICAgICAgICBtdXRhYmxlQXR0
cmlidXRlRGF0YSgpLT5jbG9uZURhdGFGcm9tKCphdHRyaWJ1dGVEYXRhLCBvdGhlciwgKnRoaXMp
OworICAgIGlmIChFbGVtZW50QXR0cmlidXRlRGF0YSogYXR0cmlidXRlRGF0YSA9IG90aGVyLnVw
ZGF0ZWRBdHRyaWJ1dGVEYXRhKCkpCisgICAgICAgIGVuc3VyZVVwZGF0ZWRBdHRyaWJ1dGVEYXRh
KCktPmNsb25lRGF0YUZyb20oKmF0dHJpYnV0ZURhdGEsIG90aGVyLCAqdGhpcyk7CiAgICAgZWxz
ZSBpZiAobV9hdHRyaWJ1dGVEYXRhKSB7CiAgICAgICAgIG1fYXR0cmlidXRlRGF0YS0+Y2xlYXJB
dHRyaWJ1dGVzKHRoaXMpOwogICAgICAgICBtX2F0dHJpYnV0ZURhdGEuY2xlYXIoKTsKQEAgLTIx
MTcsMTIgKzIxMTgsNCBAQCB2b2lkIEVsZW1lbnQ6OmNsb25lRGF0YUZyb21FbGVtZW50KGNvbnN0
IEVsZW1lbnQmIG90aGVyKQogICAgIGNvcHlOb25BdHRyaWJ1dGVQcm9wZXJ0aWVzRnJvbUVsZW1l
bnQob3RoZXIpOwogfQogCi12b2lkIEVsZW1lbnQ6OmNyZWF0ZU11dGFibGVBdHRyaWJ1dGVEYXRh
KCkKLXsKLSAgICBpZiAoIW1fYXR0cmlidXRlRGF0YSkKLSAgICAgICAgbV9hdHRyaWJ1dGVEYXRh
ID0gRWxlbWVudEF0dHJpYnV0ZURhdGE6OmNyZWF0ZSgpOwotICAgIGVsc2UKLSAgICAgICAgbV9h
dHRyaWJ1dGVEYXRhID0gbV9hdHRyaWJ1dGVEYXRhLT5tYWtlTXV0YWJsZSgpOwotfQotCiB9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVu
dC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaAppbmRleCA0Yzg4NGFkZDJiODBhZjcw
YWM2NTQzMDhjMTdjMGJlY2FhNzBhNWYzLi5mYTM5YTE4N2IwN2ZjZDVjNzJiMGFmYjhmZjJhZmUx
N2I5M2E2YzkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmgKQEAgLTI0NiwxMSArMjQ2LDEwIEBAIHB1Ymxp
YzoKICAgICAvLyBPbmx5IGNhbGxlZCBieSB0aGUgcGFyc2VyIGltbWVkaWF0ZWx5IGFmdGVyIGVs
ZW1lbnQgY29uc3RydWN0aW9uLgogICAgIHZvaWQgcGFyc2VyU2V0QXR0cmlidXRlcyhjb25zdCBW
ZWN0b3I8QXR0cmlidXRlPiYsIEZyYWdtZW50U2NyaXB0aW5nUGVybWlzc2lvbik7CiAKLSAgICBj
b25zdCBFbGVtZW50QXR0cmlidXRlRGF0YSogYXR0cmlidXRlRGF0YSgpIGNvbnN0IHsgcmV0dXJu
IG1fYXR0cmlidXRlRGF0YS5nZXQoKTsgfQotICAgIEVsZW1lbnRBdHRyaWJ1dGVEYXRhKiBtdXRh
YmxlQXR0cmlidXRlRGF0YSgpOwotICAgIEVsZW1lbnRBdHRyaWJ1dGVEYXRhKiBlbnN1cmVBdHRy
aWJ1dGVEYXRhKCk7Ci0gICAgY29uc3QgRWxlbWVudEF0dHJpYnV0ZURhdGEqIHVwZGF0ZWRBdHRy
aWJ1dGVEYXRhKCkgY29uc3Q7Ci0gICAgRWxlbWVudEF0dHJpYnV0ZURhdGEqIGVuc3VyZVVwZGF0
ZWRBdHRyaWJ1dGVEYXRhKCk7CisgICAgRWxlbWVudEF0dHJpYnV0ZURhdGEqIGF0dHJpYnV0ZURh
dGEoKSBjb25zdCB7IHJldHVybiBtX2F0dHJpYnV0ZURhdGEuZ2V0KCk7IH0KKyAgICBFbGVtZW50
QXR0cmlidXRlRGF0YSogZW5zdXJlQXR0cmlidXRlRGF0YSgpIGNvbnN0OworICAgIEVsZW1lbnRB
dHRyaWJ1dGVEYXRhKiB1cGRhdGVkQXR0cmlidXRlRGF0YSgpIGNvbnN0OworICAgIEVsZW1lbnRB
dHRyaWJ1dGVEYXRhKiBlbnN1cmVVcGRhdGVkQXR0cmlidXRlRGF0YSgpIGNvbnN0OwogCiAgICAg
Ly8gQ2xvbmVzIGF0dHJpYnV0ZXMgb25seS4KICAgICB2b2lkIGNsb25lQXR0cmlidXRlc0Zyb21F
bGVtZW50KGNvbnN0IEVsZW1lbnQmKTsKQEAgLTQ1Niw2ICs0NTUsOCBAQCBwcml2YXRlOgogCiAg
ICAgYm9vbCBwc2V1ZG9TdHlsZUNhY2hlSXNJbnZhbGlkKGNvbnN0IFJlbmRlclN0eWxlKiBjdXJy
ZW50U3R5bGUsIFJlbmRlclN0eWxlKiBuZXdTdHlsZSk7CiAKKyAgICB2b2lkIGNyZWF0ZUF0dHJp
YnV0ZURhdGEoKSBjb25zdDsKKwogICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVTdHlsZUF0dHJpYnV0
ZSgpIGNvbnN0IHsgfQogCiAjaWYgRU5BQkxFKFNWRykKQEAgLTQ4Nyw4ICs0ODgsNiBAQCBwcml2
YXRlOgogCiAgICAgdm9pZCB1bnJlZ2lzdGVyTmFtZWRGbG93Q29udGVudE5vZGUoKTsKIAotICAg
IHZvaWQgY3JlYXRlTXV0YWJsZUF0dHJpYnV0ZURhdGEoKTsKLQogcHJpdmF0ZToKICAgICBtdXRh
YmxlIE93blB0cjxFbGVtZW50QXR0cmlidXRlRGF0YT4gbV9hdHRyaWJ1dGVEYXRhOwogfTsKQEAg
LTU1MCwyNSArNTQ5LDIzIEBAIGlubGluZSBFbGVtZW50KiBFbGVtZW50OjpuZXh0RWxlbWVudFNp
YmxpbmcoKSBjb25zdAogICAgIHJldHVybiBzdGF0aWNfY2FzdDxFbGVtZW50Kj4obik7CiB9CiAK
LWlubGluZSBjb25zdCBFbGVtZW50QXR0cmlidXRlRGF0YSogRWxlbWVudDo6dXBkYXRlZEF0dHJp
YnV0ZURhdGEoKSBjb25zdAoraW5saW5lIEVsZW1lbnRBdHRyaWJ1dGVEYXRhKiBFbGVtZW50Ojpl
bnN1cmVBdHRyaWJ1dGVEYXRhKCkgY29uc3QKIHsKLSAgICB1cGRhdGVJbnZhbGlkQXR0cmlidXRl
cygpOwotICAgIHJldHVybiBhdHRyaWJ1dGVEYXRhKCk7CisgICAgaWYgKCFtX2F0dHJpYnV0ZURh
dGEpCisgICAgICAgIGNyZWF0ZUF0dHJpYnV0ZURhdGEoKTsKKyAgICByZXR1cm4gbV9hdHRyaWJ1
dGVEYXRhLmdldCgpOwogfQogCi1pbmxpbmUgRWxlbWVudEF0dHJpYnV0ZURhdGEqIEVsZW1lbnQ6
OmVuc3VyZUF0dHJpYnV0ZURhdGEoKQoraW5saW5lIEVsZW1lbnRBdHRyaWJ1dGVEYXRhKiBFbGVt
ZW50Ojp1cGRhdGVkQXR0cmlidXRlRGF0YSgpIGNvbnN0CiB7Ci0gICAgaWYgKG1fYXR0cmlidXRl
RGF0YSkKLSAgICAgICAgcmV0dXJuIG1fYXR0cmlidXRlRGF0YS5nZXQoKTsKLSAgICByZXR1cm4g
bXV0YWJsZUF0dHJpYnV0ZURhdGEoKTsKKyAgICB1cGRhdGVJbnZhbGlkQXR0cmlidXRlcygpOwor
ICAgIHJldHVybiBhdHRyaWJ1dGVEYXRhKCk7CiB9CiAKLWlubGluZSBFbGVtZW50QXR0cmlidXRl
RGF0YSogRWxlbWVudDo6ZW5zdXJlVXBkYXRlZEF0dHJpYnV0ZURhdGEoKQoraW5saW5lIEVsZW1l
bnRBdHRyaWJ1dGVEYXRhKiBFbGVtZW50OjplbnN1cmVVcGRhdGVkQXR0cmlidXRlRGF0YSgpIGNv
bnN0CiB7CiAgICAgdXBkYXRlSW52YWxpZEF0dHJpYnV0ZXMoKTsKLSAgICBpZiAobV9hdHRyaWJ1
dGVEYXRhKQotICAgICAgICByZXR1cm4gbV9hdHRyaWJ1dGVEYXRhLmdldCgpOwotICAgIHJldHVy
biBtdXRhYmxlQXR0cmlidXRlRGF0YSgpOworICAgIHJldHVybiBlbnN1cmVBdHRyaWJ1dGVEYXRh
KCk7CiB9CiAKIGlubGluZSB2b2lkIEVsZW1lbnQ6OnVwZGF0ZU5hbWUoY29uc3QgQXRvbWljU3Ry
aW5nJiBvbGROYW1lLCBjb25zdCBBdG9taWNTdHJpbmcmIG5ld05hbWUpCkBAIC03MTMsMTMgKzcx
MCw2IEBAIGlubGluZSBib29sIEVsZW1lbnQ6Omhhc0NsYXNzKCkgY29uc3QKICAgICByZXR1cm4g
YXR0cmlidXRlRGF0YSgpICYmIGF0dHJpYnV0ZURhdGEoKS0+aGFzQ2xhc3MoKTsKIH0KIAotaW5s
aW5lIEVsZW1lbnRBdHRyaWJ1dGVEYXRhKiBFbGVtZW50OjptdXRhYmxlQXR0cmlidXRlRGF0YSgp
Ci17Ci0gICAgaWYgKCFtX2F0dHJpYnV0ZURhdGEgfHwgIW1fYXR0cmlidXRlRGF0YS0+aXNNdXRh
YmxlKCkpCi0gICAgICAgIGNyZWF0ZU11dGFibGVBdHRyaWJ1dGVEYXRhKCk7Ci0gICAgcmV0dXJu
IG1fYXR0cmlidXRlRGF0YS5nZXQoKTsKLX0KLQogLy8gUHV0IGhlcmUgdG8gbWFrZSB0aGVtIGlu
bGluZS4KIGlubGluZSBib29sIE5vZGU6Omhhc0lEKCkgY29uc3QKIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50QXR0cmlidXRlRGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vRWxlbWVudEF0dHJpYnV0ZURhdGEuY3BwCmluZGV4IDQyNjliZjFkNTE3NDFjN2M0ZWRi
ZWI5MzY2ODkzYzcwYTBkYTY3MWIuLjA3MjJjYzgzODY0YzcyOWUzMGE1MWRiZmJmYzdjMmVmZDI0
NWMzNGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50QXR0cmlidXRlRGF0
YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnRBdHRyaWJ1dGVEYXRhLmNwcApA
QCAtMzIsNTAgKzMyLDYgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1QYXNzT3duUHRyPEVs
ZW1lbnRBdHRyaWJ1dGVEYXRhPiBFbGVtZW50QXR0cmlidXRlRGF0YTo6Y3JlYXRlSW1tdXRhYmxl
KGNvbnN0IFZlY3RvcjxBdHRyaWJ1dGU+JiBhdHRyaWJ1dGVzKQotewotICAgIHZvaWQqIHNsb3Qg
PSBXVEY6OmZhc3RNYWxsb2Moc2l6ZW9mKEVsZW1lbnRBdHRyaWJ1dGVEYXRhKSAtIHNpemVvZih2
b2lkKikgKyBzaXplb2YoQXR0cmlidXRlKSAqIGF0dHJpYnV0ZXMuc2l6ZSgpKTsKLSAgICByZXR1
cm4gYWRvcHRQdHIobmV3IChzbG90KSBFbGVtZW50QXR0cmlidXRlRGF0YShhdHRyaWJ1dGVzKSk7
Ci19Ci0KLUVsZW1lbnRBdHRyaWJ1dGVEYXRhOjpFbGVtZW50QXR0cmlidXRlRGF0YSgpCi0gICAg
OiBtX2lzTXV0YWJsZSh0cnVlKQotICAgICwgbV9hcnJheVNpemUoMCkKLSAgICAsIG1fbXV0YWJs
ZUF0dHJpYnV0ZVZlY3RvcihuZXcgVmVjdG9yPEF0dHJpYnV0ZSwgND4pCi17Ci19Ci0KLUVsZW1l
bnRBdHRyaWJ1dGVEYXRhOjpFbGVtZW50QXR0cmlidXRlRGF0YShjb25zdCBWZWN0b3I8QXR0cmli
dXRlPiYgYXR0cmlidXRlcykKLSAgICA6IG1faXNNdXRhYmxlKGZhbHNlKQotICAgICwgbV9hcnJh
eVNpemUoYXR0cmlidXRlcy5zaXplKCkpCi17Ci0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8
IGF0dHJpYnV0ZXMuc2l6ZSgpOyArK2kpCi0gICAgICAgIG5ldyAoJmFycmF5KClbaV0pIEF0dHJp
YnV0ZShhdHRyaWJ1dGVzW2ldKTsKLX0KLQotRWxlbWVudEF0dHJpYnV0ZURhdGE6OkVsZW1lbnRB
dHRyaWJ1dGVEYXRhKGNvbnN0IEVsZW1lbnRBdHRyaWJ1dGVEYXRhJiBvdGhlcikKLSAgICA6IG1f
aW5saW5lU3R5bGVEZWNsKG90aGVyLm1faW5saW5lU3R5bGVEZWNsKQotICAgICwgbV9hdHRyaWJ1
dGVTdHlsZShvdGhlci5tX2F0dHJpYnV0ZVN0eWxlKQotICAgICwgbV9jbGFzc05hbWVzKG90aGVy
Lm1fY2xhc3NOYW1lcykKLSAgICAsIG1faWRGb3JTdHlsZVJlc29sdXRpb24ob3RoZXIubV9pZEZv
clN0eWxlUmVzb2x1dGlvbikKLSAgICAsIG1faXNNdXRhYmxlKHRydWUpCi0gICAgLCBtX2FycmF5
U2l6ZSgwKQotICAgICwgbV9tdXRhYmxlQXR0cmlidXRlVmVjdG9yKG5ldyBWZWN0b3I8QXR0cmli
dXRlLCA0PikKLXsKLSAgICAvLyBUaGlzIGNvcHkgY29uc3RydWN0b3Igc2hvdWxkIG9ubHkgYmUg
dXNlZCBieSBtYWtlTXV0YWJsZSgpIHRvIGdvIGZyb20gaW1tdXRhYmxlIHRvIG11dGFibGUuCi0g
ICAgQVNTRVJUKCFvdGhlci5tX2lzTXV0YWJsZSk7Ci0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsg
aSA8IG90aGVyLm1fYXJyYXlTaXplOyArK2kpCi0gICAgICAgIG1fbXV0YWJsZUF0dHJpYnV0ZVZl
Y3Rvci0+YXBwZW5kKG90aGVyLmFycmF5KClbaV0pOwotfQotCi1FbGVtZW50QXR0cmlidXRlRGF0
YTo6fkVsZW1lbnRBdHRyaWJ1dGVEYXRhKCkKLXsKLSAgICBpZiAoaXNNdXRhYmxlKCkpCi0gICAg
ICAgIGRlbGV0ZSBtX211dGFibGVBdHRyaWJ1dGVWZWN0b3I7Ci0gICAgZm9yICh1bnNpZ25lZCBp
ID0gMDsgaSA8IG1fYXJyYXlTaXplOyArK2kpCi0gICAgICAgIGFycmF5KClbaV0ufkF0dHJpYnV0
ZSgpOwotfQotCiB0eXBlZGVmIFZlY3RvcjxSZWZQdHI8QXR0cj4gPiBBdHRyTGlzdDsKIHR5cGVk
ZWYgSGFzaE1hcDxFbGVtZW50KiwgT3duUHRyPEF0dHJMaXN0PiA+IEF0dHJMaXN0TWFwOwogCkBA
IC0xMjUsMTQgKzgxLDE0IEBAIHN0YXRpYyBBdHRyKiBmaW5kQXR0ckluTGlzdChBdHRyTGlzdCog
YXR0ckxpc3QsIGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUpCiAgICAgcmV0dXJuIDA7CiB9CiAK
LVBhc3NSZWZQdHI8QXR0cj4gRWxlbWVudEF0dHJpYnV0ZURhdGE6OmF0dHJJZkV4aXN0cyhFbGVt
ZW50KiBlbGVtZW50LCBjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lKSBjb25zdAorUGFzc1JlZlB0
cjxBdHRyPiBFbGVtZW50QXR0cmlidXRlRGF0YTo6YXR0cklmRXhpc3RzKEVsZW1lbnQqIGVsZW1l
bnQsIGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUpCiB7CiAgICAgaWYgKEF0dHJMaXN0KiBhdHRy
TGlzdCA9IGF0dHJMaXN0Rm9yRWxlbWVudChlbGVtZW50KSkKICAgICAgICAgcmV0dXJuIGZpbmRB
dHRySW5MaXN0KGF0dHJMaXN0LCBuYW1lKTsKICAgICByZXR1cm4gMDsKIH0KIAotUGFzc1JlZlB0
cjxBdHRyPiBFbGVtZW50QXR0cmlidXRlRGF0YTo6ZW5zdXJlQXR0cihFbGVtZW50KiBlbGVtZW50
LCBjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lKSBjb25zdAorUGFzc1JlZlB0cjxBdHRyPiBFbGVt
ZW50QXR0cmlidXRlRGF0YTo6ZW5zdXJlQXR0cihFbGVtZW50KiBlbGVtZW50LCBjb25zdCBRdWFs
aWZpZWROYW1lJiBuYW1lKQogewogICAgIEF0dHJMaXN0KiBhdHRyTGlzdCA9IGVuc3VyZUF0dHJM
aXN0Rm9yRWxlbWVudChlbGVtZW50KTsKICAgICBSZWZQdHI8QXR0cj4gYXR0ciA9IGZpbmRBdHRy
SW5MaXN0KGF0dHJMaXN0LCBuYW1lKTsKQEAgLTE0Myw3ICs5OSw3IEBAIFBhc3NSZWZQdHI8QXR0
cj4gRWxlbWVudEF0dHJpYnV0ZURhdGE6OmVuc3VyZUF0dHIoRWxlbWVudCogZWxlbWVudCwgY29u
c3QgUXVhbGlmCiAgICAgcmV0dXJuIGF0dHIucmVsZWFzZSgpOwogfQogCi12b2lkIEVsZW1lbnRB
dHRyaWJ1dGVEYXRhOjpzZXRBdHRyKEVsZW1lbnQqIGVsZW1lbnQsIGNvbnN0IFF1YWxpZmllZE5h
bWUmIG5hbWUsIEF0dHIqIGF0dHIpIGNvbnN0Cit2b2lkIEVsZW1lbnRBdHRyaWJ1dGVEYXRhOjpz
ZXRBdHRyKEVsZW1lbnQqIGVsZW1lbnQsIGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIEF0dHIq
IGF0dHIpCiB7CiAgICAgQXR0ckxpc3QqIGF0dHJMaXN0ID0gZW5zdXJlQXR0ckxpc3RGb3JFbGVt
ZW50KGVsZW1lbnQpOwogCkBAIC0xNTQsNyArMTEwLDcgQEAgdm9pZCBFbGVtZW50QXR0cmlidXRl
RGF0YTo6c2V0QXR0cihFbGVtZW50KiBlbGVtZW50LCBjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1l
LAogICAgIGF0dHItPmF0dGFjaFRvRWxlbWVudChlbGVtZW50KTsKIH0KIAotdm9pZCBFbGVtZW50
QXR0cmlidXRlRGF0YTo6cmVtb3ZlQXR0cihFbGVtZW50KiBlbGVtZW50LCBjb25zdCBRdWFsaWZp
ZWROYW1lJiBuYW1lKSBjb25zdAordm9pZCBFbGVtZW50QXR0cmlidXRlRGF0YTo6cmVtb3ZlQXR0
cihFbGVtZW50KiBlbGVtZW50LCBjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lKQogewogICAgIEF0
dHJMaXN0KiBhdHRyTGlzdCA9IGF0dHJMaXN0Rm9yRWxlbWVudChlbGVtZW50KTsKICAgICBBU1NF
UlQoYXR0ckxpc3QpOwpAQCAtMTcxLDkgKzEyNywxMyBAQCB2b2lkIEVsZW1lbnRBdHRyaWJ1dGVE
YXRhOjpyZW1vdmVBdHRyKEVsZW1lbnQqIGVsZW1lbnQsIGNvbnN0IFF1YWxpZmllZE5hbWUmIG5h
bQogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogfQogCit2b2lkIEVsZW1lbnRBdHRyaWJ1dGVE
YXRhOjpzZXRDbGFzcyhjb25zdCBTdHJpbmcmIGNsYXNzTmFtZSwgYm9vbCBzaG91bGRGb2xkQ2Fz
ZSkKK3sKKyAgICBtX2NsYXNzTmFtZXMuc2V0KGNsYXNzTmFtZSwgc2hvdWxkRm9sZENhc2UpOwor
fQorICAgIAogU3R5bGVQcm9wZXJ0eVNldCogRWxlbWVudEF0dHJpYnV0ZURhdGE6OmVuc3VyZUlu
bGluZVN0eWxlKFN0eWxlZEVsZW1lbnQqIGVsZW1lbnQpCiB7Ci0gICAgQVNTRVJUKGlzTXV0YWJs
ZSgpKTsKICAgICBpZiAoIW1faW5saW5lU3R5bGVEZWNsKSB7CiAgICAgICAgIEFTU0VSVChlbGVt
ZW50LT5pc1N0eWxlZEVsZW1lbnQoKSk7CiAgICAgICAgIG1faW5saW5lU3R5bGVEZWNsID0gU3R5
bGVQcm9wZXJ0eVNldDo6Y3JlYXRlKHN0cmljdFRvQ1NTUGFyc2VyTW9kZShlbGVtZW50LT5pc0hU
TUxFbGVtZW50KCkgJiYgIWVsZW1lbnQtPmRvY3VtZW50KCktPmluUXVpcmtzTW9kZSgpKSk7CkBA
IC0xODMsNyArMTQzLDYgQEAgU3R5bGVQcm9wZXJ0eVNldCogRWxlbWVudEF0dHJpYnV0ZURhdGE6
OmVuc3VyZUlubGluZVN0eWxlKFN0eWxlZEVsZW1lbnQqIGVsZW1lbnQKIAogU3R5bGVQcm9wZXJ0
eVNldCogRWxlbWVudEF0dHJpYnV0ZURhdGE6OmVuc3VyZU11dGFibGVJbmxpbmVTdHlsZShTdHls
ZWRFbGVtZW50KiBlbGVtZW50KQogewotICAgIEFTU0VSVChpc011dGFibGUoKSk7CiAgICAgaWYg
KG1faW5saW5lU3R5bGVEZWNsICYmICFtX2lubGluZVN0eWxlRGVjbC0+aXNNdXRhYmxlKCkpIHsK
ICAgICAgICAgbV9pbmxpbmVTdHlsZURlY2wgPSBtX2lubGluZVN0eWxlRGVjbC0+Y29weSgpOwog
ICAgICAgICByZXR1cm4gbV9pbmxpbmVTdHlsZURlY2wuZ2V0KCk7CkBAIC0yMDIsMjIgKzE2MSwy
MCBAQCB2b2lkIEVsZW1lbnRBdHRyaWJ1dGVEYXRhOjp1cGRhdGVJbmxpbmVTdHlsZUF2b2lkaW5n
TXV0YXRpb24oU3R5bGVkRWxlbWVudCogZWxlbQogICAgIG1faW5saW5lU3R5bGVEZWNsLT5wYXJz
ZURlY2xhcmF0aW9uKHRleHQsIGVsZW1lbnQtPmRvY3VtZW50KCktPmVsZW1lbnRTaGVldCgpLT5j
b250ZW50cygpKTsKIH0KIAotdm9pZCBFbGVtZW50QXR0cmlidXRlRGF0YTo6ZGVzdHJveUlubGlu
ZVN0eWxlKFN0eWxlZEVsZW1lbnQqIGVsZW1lbnQpIGNvbnN0Cit2b2lkIEVsZW1lbnRBdHRyaWJ1
dGVEYXRhOjpkZXN0cm95SW5saW5lU3R5bGUoU3R5bGVkRWxlbWVudCogZWxlbWVudCkKIHsKICAg
ICBpZiAoIW1faW5saW5lU3R5bGVEZWNsKQogICAgICAgICByZXR1cm47Ci0gICAgY29uc3RfY2Fz
dDxFbGVtZW50QXR0cmlidXRlRGF0YSo+KHRoaXMpLT5tX2lubGluZVN0eWxlRGVjbC0+Y2xlYXJQ
YXJlbnRFbGVtZW50KGVsZW1lbnQpOwotICAgIGNvbnN0X2Nhc3Q8RWxlbWVudEF0dHJpYnV0ZURh
dGEqPih0aGlzKS0+bV9pbmxpbmVTdHlsZURlY2wgPSAwOworICAgIG1faW5saW5lU3R5bGVEZWNs
LT5jbGVhclBhcmVudEVsZW1lbnQoZWxlbWVudCk7CisgICAgbV9pbmxpbmVTdHlsZURlY2wgPSAw
OwogfQogCiB2b2lkIEVsZW1lbnRBdHRyaWJ1dGVEYXRhOjphZGRBdHRyaWJ1dGUoY29uc3QgQXR0
cmlidXRlJiBhdHRyaWJ1dGUsIEVsZW1lbnQqIGVsZW1lbnQsIEVJblVwZGF0ZVN0eWxlQXR0cmli
dXRlIGluVXBkYXRlU3R5bGVBdHRyaWJ1dGUpCiB7Ci0gICAgQVNTRVJUKGlzTXV0YWJsZSgpKTsK
LQogICAgIGlmIChlbGVtZW50ICYmIGluVXBkYXRlU3R5bGVBdHRyaWJ1dGUgPT0gTm90SW5VcGRh
dGVTdHlsZUF0dHJpYnV0ZSkKICAgICAgICAgZWxlbWVudC0+d2lsbE1vZGlmeUF0dHJpYnV0ZShh
dHRyaWJ1dGUubmFtZSgpLCBudWxsQXRvbSwgYXR0cmlidXRlLnZhbHVlKCkpOwogCi0gICAgbV9t
dXRhYmxlQXR0cmlidXRlVmVjdG9yLT5hcHBlbmQoYXR0cmlidXRlKTsKKyAgICBtX2F0dHJpYnV0
ZXMuYXBwZW5kKGF0dHJpYnV0ZSk7CiAKICAgICBpZiAoZWxlbWVudCAmJiBpblVwZGF0ZVN0eWxl
QXR0cmlidXRlID09IE5vdEluVXBkYXRlU3R5bGVBdHRyaWJ1dGUpCiAgICAgICAgIGVsZW1lbnQt
PmRpZEFkZEF0dHJpYnV0ZShhdHRyaWJ1dGUpOwpAQCAtMjI3LDcgKzE4NCw3IEBAIHZvaWQgRWxl
bWVudEF0dHJpYnV0ZURhdGE6OnJlbW92ZUF0dHJpYnV0ZShzaXplX3QgaW5kZXgsIEVsZW1lbnQq
IGVsZW1lbnQsIEVJblVwCiB7CiAgICAgQVNTRVJUKGluZGV4IDwgbGVuZ3RoKCkpOwogCi0gICAg
QXR0cmlidXRlJiBhdHRyaWJ1dGUgPSBtX211dGFibGVBdHRyaWJ1dGVWZWN0b3ItPmF0KGluZGV4
KTsKKyAgICBBdHRyaWJ1dGUmIGF0dHJpYnV0ZSA9IG1fYXR0cmlidXRlc1tpbmRleF07CiAgICAg
UXVhbGlmaWVkTmFtZSBuYW1lID0gYXR0cmlidXRlLm5hbWUoKTsKIAogICAgIGlmIChlbGVtZW50
ICYmIGluVXBkYXRlU3R5bGVBdHRyaWJ1dGUgPT0gTm90SW5VcGRhdGVTdHlsZUF0dHJpYnV0ZSkK
QEAgLTIzNiw3ICsxOTMsNyBAQCB2b2lkIEVsZW1lbnRBdHRyaWJ1dGVEYXRhOjpyZW1vdmVBdHRy
aWJ1dGUoc2l6ZV90IGluZGV4LCBFbGVtZW50KiBlbGVtZW50LCBFSW5VcAogICAgIGlmIChSZWZQ
dHI8QXR0cj4gYXR0ciA9IGF0dHJJZkV4aXN0cyhlbGVtZW50LCBuYW1lKSkKICAgICAgICAgYXR0
ci0+ZGV0YWNoRnJvbUVsZW1lbnRXaXRoVmFsdWUoYXR0cmlidXRlLnZhbHVlKCkpOwogCi0gICAg
bV9tdXRhYmxlQXR0cmlidXRlVmVjdG9yLT5yZW1vdmUoaW5kZXgpOworICAgIG1fYXR0cmlidXRl
cy5yZW1vdmUoaW5kZXgpOwogCiAgICAgaWYgKGVsZW1lbnQgJiYgaW5VcGRhdGVTdHlsZUF0dHJp
YnV0ZSA9PSBOb3RJblVwZGF0ZVN0eWxlQXR0cmlidXRlKQogICAgICAgICBlbGVtZW50LT5kaWRS
ZW1vdmVBdHRyaWJ1dGUobmFtZSk7CkBAIC0yNTIsOSArMjA5LDggQEAgYm9vbCBFbGVtZW50QXR0
cmlidXRlRGF0YTo6aXNFcXVpdmFsZW50KGNvbnN0IEVsZW1lbnRBdHRyaWJ1dGVEYXRhKiBvdGhl
cikgY29uc3QKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgZm9yICh1bnNpZ25lZCBpID0g
MDsgaSA8IGxlbjsgaSsrKSB7Ci0gICAgICAgIGNvbnN0IEF0dHJpYnV0ZSogYXR0cmlidXRlID0g
YXR0cmlidXRlSXRlbShpKTsKLSAgICAgICAgY29uc3QgQXR0cmlidXRlKiBvdGhlckF0dHIgPSBv
dGhlci0+Z2V0QXR0cmlidXRlSXRlbShhdHRyaWJ1dGUtPm5hbWUoKSk7Ci0gICAgICAgIGlmICgh
b3RoZXJBdHRyIHx8IGF0dHJpYnV0ZS0+dmFsdWUoKSAhPSBvdGhlckF0dHItPnZhbHVlKCkpCisg
ICAgICAgIEF0dHJpYnV0ZSogb3RoZXJBdHRyID0gb3RoZXItPmdldEF0dHJpYnV0ZUl0ZW0obV9h
dHRyaWJ1dGVzW2ldLm5hbWUoKSk7CisgICAgICAgIGlmICghb3RoZXJBdHRyIHx8IG1fYXR0cmli
dXRlc1tpXS52YWx1ZSgpICE9IG90aGVyQXR0ci0+dmFsdWUoKSkKICAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKICAgICB9CiAKQEAgLTI2NSwxMCArMjIxLDkgQEAgdm9pZCBFbGVtZW50QXR0cmli
dXRlRGF0YTo6ZGV0YWNoQXR0ck9iamVjdHNGcm9tRWxlbWVudChFbGVtZW50KiBlbGVtZW50KQog
ewogICAgIEFTU0VSVChlbGVtZW50LT5oYXNBdHRyTGlzdCgpKTsKIAotICAgIGZvciAodW5zaWdu
ZWQgaSA9IDA7IGkgPCBsZW5ndGgoKTsgKytpKSB7Ci0gICAgICAgIGNvbnN0IEF0dHJpYnV0ZSog
YXR0cmlidXRlID0gYXR0cmlidXRlSXRlbShpKTsKLSAgICAgICAgaWYgKFJlZlB0cjxBdHRyPiBh
dHRyID0gYXR0cklmRXhpc3RzKGVsZW1lbnQsIGF0dHJpYnV0ZS0+bmFtZSgpKSkKLSAgICAgICAg
ICAgIGF0dHItPmRldGFjaEZyb21FbGVtZW50V2l0aFZhbHVlKGF0dHJpYnV0ZS0+dmFsdWUoKSk7
CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fYXR0cmlidXRlcy5zaXplKCk7ICsraSkg
eworICAgICAgICBpZiAoUmVmUHRyPEF0dHI+IGF0dHIgPSBhdHRySWZFeGlzdHMoZWxlbWVudCwg
bV9hdHRyaWJ1dGVzW2ldLm5hbWUoKSkpCisgICAgICAgICAgICBhdHRyLT5kZXRhY2hGcm9tRWxl
bWVudFdpdGhWYWx1ZShtX2F0dHJpYnV0ZXNbaV0udmFsdWUoKSk7CiAgICAgfQogCiAgICAgLy8g
VGhlIGxvb3AgYWJvdmUgc2hvdWxkIGhhdmUgY2xlYW5lZCBvdXQgdGhpcyBlbGVtZW50J3MgQXR0
ciBtYXAuCkBAIC0yNzgsMTYgKzIzMywxNSBAQCB2b2lkIEVsZW1lbnRBdHRyaWJ1dGVEYXRhOjpk
ZXRhY2hBdHRyT2JqZWN0c0Zyb21FbGVtZW50KEVsZW1lbnQqIGVsZW1lbnQpCiBzaXplX3QgRWxl
bWVudEF0dHJpYnV0ZURhdGE6OmdldEF0dHJpYnV0ZUl0ZW1JbmRleFNsb3dDYXNlKGNvbnN0IFN0
cmluZyYgbmFtZSwgYm9vbCBzaG91bGRJZ25vcmVBdHRyaWJ1dGVDYXNlKSBjb25zdAogewogICAg
IC8vIENvbnRpbnVlIHRvIGNoZWNraW5nIGNhc2UtaW5zZW5zaXRpdmVseSBhbmQvb3IgZnVsbCBu
YW1lc3BhY2VkIG5hbWVzIGlmIG5lY2Vzc2FyeToKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBp
IDwgbGVuZ3RoKCk7ICsraSkgewotICAgICAgICBjb25zdCBBdHRyaWJ1dGUqIGF0dHJpYnV0ZSA9
IGF0dHJpYnV0ZUl0ZW0oaSk7Ci0gICAgICAgIGlmICghYXR0cmlidXRlLT5uYW1lKCkuaGFzUHJl
Zml4KCkpIHsKLSAgICAgICAgICAgIGlmIChzaG91bGRJZ25vcmVBdHRyaWJ1dGVDYXNlICYmIGVx
dWFsSWdub3JpbmdDYXNlKG5hbWUsIGF0dHJpYnV0ZS0+bG9jYWxOYW1lKCkpKQorICAgIGZvciAo
dW5zaWduZWQgaSA9IDA7IGkgPCBtX2F0dHJpYnV0ZXMuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAg
aWYgKCFtX2F0dHJpYnV0ZXNbaV0ubmFtZSgpLmhhc1ByZWZpeCgpKSB7CisgICAgICAgICAgICBp
ZiAoc2hvdWxkSWdub3JlQXR0cmlidXRlQ2FzZSAmJiBlcXVhbElnbm9yaW5nQ2FzZShuYW1lLCBt
X2F0dHJpYnV0ZXNbaV0ubG9jYWxOYW1lKCkpKQogICAgICAgICAgICAgICAgIHJldHVybiBpOwog
ICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgLy8gRklYTUU6IFdvdWxkIGJlIGZhc3RlciB0
byBkbyB0aGlzIGNvbXBhcmlzb24gd2l0aG91dCBjYWxsaW5nIHRvU3RyaW5nLCB3aGljaAogICAg
ICAgICAgICAgLy8gZ2VuZXJhdGVzIGEgdGVtcG9yYXJ5IHN0cmluZyBieSBjb25jYXRlbmF0aW9u
LiBCdXQgdGhpcyBicmFuY2ggaXMgb25seSByZWFjaGVkCiAgICAgICAgICAgICAvLyBpZiB0aGUg
YXR0cmlidXRlIG5hbWUgaGFzIGEgcHJlZml4LCB3aGljaCBpcyByYXJlIGluIEhUTUwuCi0gICAg
ICAgICAgICBpZiAoZXF1YWxQb3NzaWJseUlnbm9yaW5nQ2FzZShuYW1lLCBhdHRyaWJ1dGUtPm5h
bWUoKS50b1N0cmluZygpLCBzaG91bGRJZ25vcmVBdHRyaWJ1dGVDYXNlKSkKKyAgICAgICAgICAg
IGlmIChlcXVhbFBvc3NpYmx5SWdub3JpbmdDYXNlKG5hbWUsIG1fYXR0cmlidXRlc1tpXS5uYW1l
KCkudG9TdHJpbmcoKSwgc2hvdWxkSWdub3JlQXR0cmlidXRlQ2FzZSkpCiAgICAgICAgICAgICAg
ICAgcmV0dXJuIGk7CiAgICAgICAgIH0KICAgICB9CkBAIC0yOTYsOSArMjUwLDYgQEAgc2l6ZV90
IEVsZW1lbnRBdHRyaWJ1dGVEYXRhOjpnZXRBdHRyaWJ1dGVJdGVtSW5kZXhTbG93Q2FzZShjb25z
dCBTdHJpbmcmIG5hbWUsIGIKIAogdm9pZCBFbGVtZW50QXR0cmlidXRlRGF0YTo6Y2xvbmVEYXRh
RnJvbShjb25zdCBFbGVtZW50QXR0cmlidXRlRGF0YSYgc291cmNlRGF0YSwgY29uc3QgRWxlbWVu
dCYgc291cmNlRWxlbWVudCwgRWxlbWVudCYgdGFyZ2V0RWxlbWVudCkKIHsKLSAgICAvLyBGSVhN
RTogQ2xvbmVkIGVsZW1lbnRzIGNvdWxkIHN0YXJ0IG91dCB3aXRoIGltbXV0YWJsZSBhdHRyaWJ1
dGUgZGF0YS4KLSAgICBBU1NFUlQoaXNNdXRhYmxlKCkpOwotCiAgICAgY29uc3QgQXRvbWljU3Ry
aW5nJiBvbGRJRCA9IHRhcmdldEVsZW1lbnQuZ2V0SWRBdHRyaWJ1dGUoKTsKICAgICBjb25zdCBB
dG9taWNTdHJpbmcmIG5ld0lEID0gc291cmNlRWxlbWVudC5nZXRJZEF0dHJpYnV0ZSgpOwogCkBA
IC0zMTIsMjMgKzI2MywxMyBAQCB2b2lkIEVsZW1lbnRBdHRyaWJ1dGVEYXRhOjpjbG9uZURhdGFG
cm9tKGNvbnN0IEVsZW1lbnRBdHRyaWJ1dGVEYXRhJiBzb3VyY2VEYXRhLAogICAgICAgICB0YXJn
ZXRFbGVtZW50LnVwZGF0ZU5hbWUob2xkTmFtZSwgbmV3TmFtZSk7CiAKICAgICBjbGVhckF0dHJp
YnV0ZXMoJnRhcmdldEVsZW1lbnQpOwotCi0gICAgaWYgKHNvdXJjZURhdGEuaXNNdXRhYmxlKCkp
Ci0gICAgICAgICptX211dGFibGVBdHRyaWJ1dGVWZWN0b3IgPSAqc291cmNlRGF0YS5tX211dGFi
bGVBdHRyaWJ1dGVWZWN0b3I7Ci0gICAgZWxzZSB7Ci0gICAgICAgIEFTU0VSVChtX211dGFibGVB
dHRyaWJ1dGVWZWN0b3ItPmlzRW1wdHkoKSk7Ci0gICAgICAgIG1fbXV0YWJsZUF0dHJpYnV0ZVZl
Y3Rvci0+cmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShzb3VyY2VEYXRhLm1fYXJyYXlTaXplKTsKLSAg
ICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHNvdXJjZURhdGEubV9hcnJheVNpemU7ICsr
aSkKLSAgICAgICAgICAgIG1fbXV0YWJsZUF0dHJpYnV0ZVZlY3Rvci0+dW5jaGVja2VkQXBwZW5k
KHNvdXJjZURhdGEuYXJyYXkoKVtpXSk7Ci0gICAgfQotCi0gICAgZm9yICh1bnNpZ25lZCBpID0g
MDsgaSA8IGxlbmd0aCgpOyArK2kpIHsKLSAgICAgICAgY29uc3QgQXR0cmlidXRlJiBhdHRyaWJ1
dGUgPSBtX211dGFibGVBdHRyaWJ1dGVWZWN0b3ItPmF0KGkpOwotICAgICAgICBpZiAodGFyZ2V0
RWxlbWVudC5pc1N0eWxlZEVsZW1lbnQoKSAmJiBhdHRyaWJ1dGUubmFtZSgpID09IEhUTUxOYW1l
czo6c3R5bGVBdHRyKSB7Ci0gICAgICAgICAgICBzdGF0aWNfY2FzdDxTdHlsZWRFbGVtZW50Jj4o
dGFyZ2V0RWxlbWVudCkuc3R5bGVBdHRyaWJ1dGVDaGFuZ2VkKGF0dHJpYnV0ZS52YWx1ZSgpLCBT
dHlsZWRFbGVtZW50OjpEb05vdFJlcGFyc2VTdHlsZUF0dHJpYnV0ZSk7CisgICAgbV9hdHRyaWJ1
dGVzID0gc291cmNlRGF0YS5tX2F0dHJpYnV0ZXM7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsg
aSA8IG1fYXR0cmlidXRlcy5zaXplKCk7ICsraSkgeworICAgICAgICBpZiAodGFyZ2V0RWxlbWVu
dC5pc1N0eWxlZEVsZW1lbnQoKSAmJiBtX2F0dHJpYnV0ZXNbaV0ubmFtZSgpID09IEhUTUxOYW1l
czo6c3R5bGVBdHRyKSB7CisgICAgICAgICAgICBzdGF0aWNfY2FzdDxTdHlsZWRFbGVtZW50Jj4o
dGFyZ2V0RWxlbWVudCkuc3R5bGVBdHRyaWJ1dGVDaGFuZ2VkKG1fYXR0cmlidXRlc1tpXS52YWx1
ZSgpLCBTdHlsZWRFbGVtZW50OjpEb05vdFJlcGFyc2VTdHlsZUF0dHJpYnV0ZSk7CiAgICAgICAg
ICAgICBjb250aW51ZTsKICAgICAgICAgfQotICAgICAgICB0YXJnZXRFbGVtZW50LmF0dHJpYnV0
ZUNoYW5nZWQoYXR0cmlidXRlKTsKKyAgICAgICAgdGFyZ2V0RWxlbWVudC5hdHRyaWJ1dGVDaGFu
Z2VkKG1fYXR0cmlidXRlc1tpXSk7CiAgICAgfQogCiAgICAgaWYgKHRhcmdldEVsZW1lbnQuaXNT
dHlsZWRFbGVtZW50KCkgJiYgc291cmNlRGF0YS5tX2lubGluZVN0eWxlRGVjbCkgewpAQCAtMzQx
LDMwICsyODIsMjcgQEAgdm9pZCBFbGVtZW50QXR0cmlidXRlRGF0YTo6Y2xvbmVEYXRhRnJvbShj
b25zdCBFbGVtZW50QXR0cmlidXRlRGF0YSYgc291cmNlRGF0YSwKIAogdm9pZCBFbGVtZW50QXR0
cmlidXRlRGF0YTo6Y2xlYXJBdHRyaWJ1dGVzKEVsZW1lbnQqIGVsZW1lbnQpCiB7Ci0gICAgQVNT
RVJUKGlzTXV0YWJsZSgpKTsKLQogICAgIGlmIChlbGVtZW50LT5oYXNBdHRyTGlzdCgpKQogICAg
ICAgICBkZXRhY2hBdHRyT2JqZWN0c0Zyb21FbGVtZW50KGVsZW1lbnQpOwogCiAgICAgY2xlYXJD
bGFzcygpOwotICAgIG1fbXV0YWJsZUF0dHJpYnV0ZVZlY3Rvci0+Y2xlYXIoKTsKKyAgICBtX2F0
dHJpYnV0ZXMuY2xlYXIoKTsKIH0KIAogdm9pZCBFbGVtZW50QXR0cmlidXRlRGF0YTo6cmVwbGFj
ZUF0dHJpYnV0ZShzaXplX3QgaW5kZXgsIGNvbnN0IEF0dHJpYnV0ZSYgYXR0cmlidXRlLCBFbGVt
ZW50KiBlbGVtZW50KQogewotICAgIEFTU0VSVChpc011dGFibGUoKSk7CiAgICAgQVNTRVJUKGVs
ZW1lbnQpOwogICAgIEFTU0VSVChpbmRleCA8IGxlbmd0aCgpKTsKIAotICAgIGVsZW1lbnQtPndp
bGxNb2RpZnlBdHRyaWJ1dGUoYXR0cmlidXRlLm5hbWUoKSwgbV9tdXRhYmxlQXR0cmlidXRlVmVj
dG9yLT5hdChpbmRleCkudmFsdWUoKSwgYXR0cmlidXRlLnZhbHVlKCkpOwotICAgICgqbV9tdXRh
YmxlQXR0cmlidXRlVmVjdG9yKVtpbmRleF0gPSBhdHRyaWJ1dGU7CisgICAgZWxlbWVudC0+d2ls
bE1vZGlmeUF0dHJpYnV0ZShhdHRyaWJ1dGUubmFtZSgpLCBtX2F0dHJpYnV0ZXNbaW5kZXhdLnZh
bHVlKCksIGF0dHJpYnV0ZS52YWx1ZSgpKTsKKyAgICBtX2F0dHJpYnV0ZXNbaW5kZXhdID0gYXR0
cmlidXRlOwogICAgIGVsZW1lbnQtPmRpZE1vZGlmeUF0dHJpYnV0ZShhdHRyaWJ1dGUpOwogfQog
CiBQYXNzUmVmUHRyPEF0dHI+IEVsZW1lbnRBdHRyaWJ1dGVEYXRhOjpnZXRBdHRyaWJ1dGVOb2Rl
KGNvbnN0IFN0cmluZyYgbmFtZSwgYm9vbCBzaG91bGRJZ25vcmVBdHRyaWJ1dGVDYXNlLCBFbGVt
ZW50KiBlbGVtZW50KSBjb25zdAogewogICAgIEFTU0VSVChlbGVtZW50KTsKLSAgICBjb25zdCBB
dHRyaWJ1dGUqIGF0dHJpYnV0ZSA9IGdldEF0dHJpYnV0ZUl0ZW0obmFtZSwgc2hvdWxkSWdub3Jl
QXR0cmlidXRlQ2FzZSk7CisgICAgQXR0cmlidXRlKiBhdHRyaWJ1dGUgPSBnZXRBdHRyaWJ1dGVJ
dGVtKG5hbWUsIHNob3VsZElnbm9yZUF0dHJpYnV0ZUNhc2UpOwogICAgIGlmICghYXR0cmlidXRl
KQogICAgICAgICByZXR1cm4gMDsKICAgICByZXR1cm4gY29uc3RfY2FzdDxFbGVtZW50QXR0cmli
dXRlRGF0YSo+KHRoaXMpLT5lbnN1cmVBdHRyKGVsZW1lbnQsIGF0dHJpYnV0ZS0+bmFtZSgpKTsK
QEAgLTM3MywxMCArMzExLDExIEBAIFBhc3NSZWZQdHI8QXR0cj4gRWxlbWVudEF0dHJpYnV0ZURh
dGE6OmdldEF0dHJpYnV0ZU5vZGUoY29uc3QgU3RyaW5nJiBuYW1lLCBib29sCiBQYXNzUmVmUHRy
PEF0dHI+IEVsZW1lbnRBdHRyaWJ1dGVEYXRhOjpnZXRBdHRyaWJ1dGVOb2RlKGNvbnN0IFF1YWxp
ZmllZE5hbWUmIG5hbWUsIEVsZW1lbnQqIGVsZW1lbnQpIGNvbnN0CiB7CiAgICAgQVNTRVJUKGVs
ZW1lbnQpOwotICAgIGNvbnN0IEF0dHJpYnV0ZSogYXR0cmlidXRlID0gZ2V0QXR0cmlidXRlSXRl
bShuYW1lKTsKKyAgICBBdHRyaWJ1dGUqIGF0dHJpYnV0ZSA9IGdldEF0dHJpYnV0ZUl0ZW0obmFt
ZSk7CiAgICAgaWYgKCFhdHRyaWJ1dGUpCiAgICAgICAgIHJldHVybiAwOwogICAgIHJldHVybiBj
b25zdF9jYXN0PEVsZW1lbnRBdHRyaWJ1dGVEYXRhKj4odGhpcyktPmVuc3VyZUF0dHIoZWxlbWVu
dCwgYXR0cmlidXRlLT5uYW1lKCkpOwogfQogCisKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9FbGVtZW50QXR0cmlidXRlRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1l
bnRBdHRyaWJ1dGVEYXRhLmgKaW5kZXggZmI2ZDc3Nzg3ODZjYmQzOWJiNTA4NGJlZWUwYmM4ZTkw
ODljZjg0Zi4uOGIxYjMxOGZlOTlkZTRiMjFlOGZkZjYxNmJlYTBlNTliZDJlZmYzNSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnRBdHRyaWJ1dGVEYXRhLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnRBdHRyaWJ1dGVEYXRhLmgKQEAgLTU0LDM3ICs1NCwzMiBA
QCBwdWJsaWM6CiAgICAgewogICAgICAgICByZXR1cm4gYWRvcHRQdHIobmV3IEVsZW1lbnRBdHRy
aWJ1dGVEYXRhKTsKICAgICB9Ci0gICAgc3RhdGljIFBhc3NPd25QdHI8RWxlbWVudEF0dHJpYnV0
ZURhdGE+IGNyZWF0ZUltbXV0YWJsZShjb25zdCBWZWN0b3I8QXR0cmlidXRlPiYpOwotICAgIH5F
bGVtZW50QXR0cmlidXRlRGF0YSgpOwogCiAgICAgdm9pZCBjbGVhckNsYXNzKCkgeyBtX2NsYXNz
TmFtZXMuY2xlYXIoKTsgfQotICAgIHZvaWQgc2V0Q2xhc3MoY29uc3QgQXRvbWljU3RyaW5nJiBj
bGFzc05hbWUsIGJvb2wgc2hvdWxkRm9sZENhc2UpIGNvbnN0IHsgbV9jbGFzc05hbWVzLnNldChj
bGFzc05hbWUsIHNob3VsZEZvbGRDYXNlKTsgfQorICAgIHZvaWQgc2V0Q2xhc3MoY29uc3QgU3Ry
aW5nJiBjbGFzc05hbWUsIGJvb2wgc2hvdWxkRm9sZENhc2UpOwogICAgIGNvbnN0IFNwYWNlU3Bs
aXRTdHJpbmcmIGNsYXNzTmFtZXMoKSBjb25zdCB7IHJldHVybiBtX2NsYXNzTmFtZXM7IH0KIAog
ICAgIGNvbnN0IEF0b21pY1N0cmluZyYgaWRGb3JTdHlsZVJlc29sdXRpb24oKSBjb25zdCB7IHJl
dHVybiBtX2lkRm9yU3R5bGVSZXNvbHV0aW9uOyB9Ci0gICAgdm9pZCBzZXRJZEZvclN0eWxlUmVz
b2x1dGlvbihjb25zdCBBdG9taWNTdHJpbmcmIG5ld0lkKSBjb25zdCB7IG1faWRGb3JTdHlsZVJl
c29sdXRpb24gPSBuZXdJZDsgfQorICAgIHZvaWQgc2V0SWRGb3JTdHlsZVJlc29sdXRpb24oY29u
c3QgQXRvbWljU3RyaW5nJiBuZXdJZCkgeyBtX2lkRm9yU3R5bGVSZXNvbHV0aW9uID0gbmV3SWQ7
IH0KIAotICAgIGNvbnN0IFN0eWxlUHJvcGVydHlTZXQqIGlubGluZVN0eWxlKCkgY29uc3QgeyBy
ZXR1cm4gbV9pbmxpbmVTdHlsZURlY2wuZ2V0KCk7IH0KICAgICBTdHlsZVByb3BlcnR5U2V0KiBp
bmxpbmVTdHlsZSgpIHsgcmV0dXJuIG1faW5saW5lU3R5bGVEZWNsLmdldCgpOyB9CiAgICAgU3R5
bGVQcm9wZXJ0eVNldCogZW5zdXJlSW5saW5lU3R5bGUoU3R5bGVkRWxlbWVudCopOwogICAgIFN0
eWxlUHJvcGVydHlTZXQqIGVuc3VyZU11dGFibGVJbmxpbmVTdHlsZShTdHlsZWRFbGVtZW50Kik7
CiAgICAgdm9pZCB1cGRhdGVJbmxpbmVTdHlsZUF2b2lkaW5nTXV0YXRpb24oU3R5bGVkRWxlbWVu
dCosIGNvbnN0IFN0cmluZyYgdGV4dCk7Ci0gICAgdm9pZCBkZXN0cm95SW5saW5lU3R5bGUoU3R5
bGVkRWxlbWVudCopIGNvbnN0OworICAgIHZvaWQgZGVzdHJveUlubGluZVN0eWxlKFN0eWxlZEVs
ZW1lbnQqKTsKIAogICAgIFN0eWxlUHJvcGVydHlTZXQqIGF0dHJpYnV0ZVN0eWxlKCkgY29uc3Qg
eyByZXR1cm4gbV9hdHRyaWJ1dGVTdHlsZS5nZXQoKTsgfQotICAgIHZvaWQgc2V0QXR0cmlidXRl
U3R5bGUoUGFzc1JlZlB0cjxTdHlsZVByb3BlcnR5U2V0PiBzdHlsZSkgY29uc3QgeyBtX2F0dHJp
YnV0ZVN0eWxlID0gc3R5bGU7IH0KKyAgICB2b2lkIHNldEF0dHJpYnV0ZVN0eWxlKFBhc3NSZWZQ
dHI8U3R5bGVQcm9wZXJ0eVNldD4gc3R5bGUpIHsgbV9hdHRyaWJ1dGVTdHlsZSA9IHN0eWxlOyB9
CiAKLSAgICBzaXplX3QgbGVuZ3RoKCkgY29uc3Q7Ci0gICAgYm9vbCBpc0VtcHR5KCkgY29uc3Q7
CisgICAgc2l6ZV90IGxlbmd0aCgpIGNvbnN0IHsgcmV0dXJuIG1fYXR0cmlidXRlcy5zaXplKCk7
IH0KKyAgICBib29sIGlzRW1wdHkoKSBjb25zdCB7IHJldHVybiBtX2F0dHJpYnV0ZXMuaXNFbXB0
eSgpOyB9CiAKICAgICBQYXNzUmVmUHRyPEF0dHI+IGdldEF0dHJpYnV0ZU5vZGUoY29uc3QgU3Ry
aW5nJiwgYm9vbCBzaG91bGRJZ25vcmVBdHRyaWJ1dGVDYXNlLCBFbGVtZW50KikgY29uc3Q7CiAg
ICAgUGFzc1JlZlB0cjxBdHRyPiBnZXRBdHRyaWJ1dGVOb2RlKGNvbnN0IFF1YWxpZmllZE5hbWUm
LCBFbGVtZW50KikgY29uc3Q7CiAKICAgICAvLyBJbnRlcm5hbCBpbnRlcmZhY2UuCi0gICAgY29u
c3QgQXR0cmlidXRlKiBhdHRyaWJ1dGVJdGVtKHVuc2lnbmVkIGluZGV4KSBjb25zdDsKLSAgICBj
b25zdCBBdHRyaWJ1dGUqIGdldEF0dHJpYnV0ZUl0ZW0oY29uc3QgUXVhbGlmaWVkTmFtZSYpIGNv
bnN0OwotICAgIEF0dHJpYnV0ZSogZ2V0QXR0cmlidXRlSXRlbShjb25zdCBRdWFsaWZpZWROYW1l
Jik7Ci0gICAgQXR0cmlidXRlKiBhdHRyaWJ1dGVJdGVtKHVuc2lnbmVkIGluZGV4KTsKKyAgICBB
dHRyaWJ1dGUqIGF0dHJpYnV0ZUl0ZW0odW5zaWduZWQgaW5kZXgpIGNvbnN0IHsgcmV0dXJuICZj
b25zdF9jYXN0PEVsZW1lbnRBdHRyaWJ1dGVEYXRhKj4odGhpcyktPm1fYXR0cmlidXRlc1tpbmRl
eF07IH0KKyAgICBBdHRyaWJ1dGUqIGdldEF0dHJpYnV0ZUl0ZW0oY29uc3QgUXVhbGlmaWVkTmFt
ZSYgbmFtZSkgY29uc3QgeyByZXR1cm4gZmluZEF0dHJpYnV0ZUluVmVjdG9yKG1fYXR0cmlidXRl
cywgbmFtZSk7IH0KICAgICBzaXplX3QgZ2V0QXR0cmlidXRlSXRlbUluZGV4KGNvbnN0IFF1YWxp
ZmllZE5hbWUmKSBjb25zdDsKICAgICBzaXplX3QgZ2V0QXR0cmlidXRlSXRlbUluZGV4KGNvbnN0
IFN0cmluZyYgbmFtZSwgYm9vbCBzaG91bGRJZ25vcmVBdHRyaWJ1dGVDYXNlKSBjb25zdDsKIApA
QCAtOTksNzQgKzk0LDM2IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgaXNFcXVpdmFsZW50KGNvbnN0
IEVsZW1lbnRBdHRyaWJ1dGVEYXRhKiBvdGhlcikgY29uc3Q7CiAKLSAgICB2b2lkIHNldEF0dHIo
RWxlbWVudCosIGNvbnN0IFF1YWxpZmllZE5hbWUmLCBBdHRyKikgY29uc3Q7Ci0gICAgdm9pZCBy
ZW1vdmVBdHRyKEVsZW1lbnQqLCBjb25zdCBRdWFsaWZpZWROYW1lJikgY29uc3Q7Ci0gICAgUGFz
c1JlZlB0cjxBdHRyPiBhdHRySWZFeGlzdHMoRWxlbWVudCosIGNvbnN0IFF1YWxpZmllZE5hbWUm
KSBjb25zdDsKLSAgICBQYXNzUmVmUHRyPEF0dHI+IGVuc3VyZUF0dHIoRWxlbWVudCosIGNvbnN0
IFF1YWxpZmllZE5hbWUmKSBjb25zdDsKKyAgICB2b2lkIHNldEF0dHIoRWxlbWVudCosIGNvbnN0
IFF1YWxpZmllZE5hbWUmLCBBdHRyKik7CisgICAgdm9pZCByZW1vdmVBdHRyKEVsZW1lbnQqLCBj
b25zdCBRdWFsaWZpZWROYW1lJik7CisgICAgUGFzc1JlZlB0cjxBdHRyPiBhdHRySWZFeGlzdHMo
RWxlbWVudCosIGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKKyAgICBQYXNzUmVmUHRyPEF0dHI+IGVu
c3VyZUF0dHIoRWxlbWVudCosIGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKIAogcHJpdmF0ZToKICAg
ICBmcmllbmQgY2xhc3MgRWxlbWVudDsKICAgICBmcmllbmQgY2xhc3MgSFRNTENvbnN0cnVjdGlv
blNpdGU7CiAKLSAgICBFbGVtZW50QXR0cmlidXRlRGF0YSgpOwotICAgIEVsZW1lbnRBdHRyaWJ1
dGVEYXRhKGNvbnN0IEVsZW1lbnRBdHRyaWJ1dGVEYXRhJik7Ci0gICAgRWxlbWVudEF0dHJpYnV0
ZURhdGEoY29uc3QgVmVjdG9yPEF0dHJpYnV0ZT4mKTsKKyAgICBFbGVtZW50QXR0cmlidXRlRGF0
YSgpCisgICAgeworICAgIH0KIAotICAgIFZlY3RvcjxBdHRyaWJ1dGU+IGNsb25lZEF0dHJpYnV0
ZVZlY3RvcigpIGNvbnN0OworICAgIGNvbnN0IFZlY3RvcjxBdHRyaWJ1dGU+JiBhdHRyaWJ1dGVW
ZWN0b3IoKSBjb25zdCB7IHJldHVybiBtX2F0dHJpYnV0ZXM7IH0KKyAgICBWZWN0b3I8QXR0cmli
dXRlPiBjbG9uZWRBdHRyaWJ1dGVWZWN0b3IoKSBjb25zdCB7IHJldHVybiBtX2F0dHJpYnV0ZXM7
IH0KIAogICAgIHZvaWQgZGV0YWNoQXR0ck9iamVjdHNGcm9tRWxlbWVudChFbGVtZW50Kik7Ci0g
ICAgY29uc3QgQXR0cmlidXRlKiBnZXRBdHRyaWJ1dGVJdGVtKGNvbnN0IFN0cmluZyYgbmFtZSwg
Ym9vbCBzaG91bGRJZ25vcmVBdHRyaWJ1dGVDYXNlKSBjb25zdDsKLSAgICBBdHRyaWJ1dGUqIGdl
dEF0dHJpYnV0ZUl0ZW0oY29uc3QgU3RyaW5nJiBuYW1lLCBib29sIHNob3VsZElnbm9yZUF0dHJp
YnV0ZUNhc2UpOworICAgIEF0dHJpYnV0ZSogZ2V0QXR0cmlidXRlSXRlbShjb25zdCBTdHJpbmcm
IG5hbWUsIGJvb2wgc2hvdWxkSWdub3JlQXR0cmlidXRlQ2FzZSkgY29uc3Q7CiAgICAgc2l6ZV90
IGdldEF0dHJpYnV0ZUl0ZW1JbmRleFNsb3dDYXNlKGNvbnN0IFN0cmluZyYgbmFtZSwgYm9vbCBz
aG91bGRJZ25vcmVBdHRyaWJ1dGVDYXNlKSBjb25zdDsKICAgICB2b2lkIGNsb25lRGF0YUZyb20o
Y29uc3QgRWxlbWVudEF0dHJpYnV0ZURhdGEmIHNvdXJjZURhdGEsIGNvbnN0IEVsZW1lbnQmIHNv
dXJjZUVsZW1lbnQsIEVsZW1lbnQmIHRhcmdldEVsZW1lbnQpOwogICAgIHZvaWQgY2xlYXJBdHRy
aWJ1dGVzKEVsZW1lbnQqKTsKICAgICB2b2lkIHJlcGxhY2VBdHRyaWJ1dGUoc2l6ZV90IGluZGV4
LCBjb25zdCBBdHRyaWJ1dGUmLCBFbGVtZW50Kik7CiAKLSAgICBib29sIGlzTXV0YWJsZSgpIGNv
bnN0IHsgcmV0dXJuIG1faXNNdXRhYmxlOyB9Ci0gICAgUGFzc093blB0cjxFbGVtZW50QXR0cmli
dXRlRGF0YT4gbWFrZU11dGFibGUoKSBjb25zdCB7IHJldHVybiBhZG9wdFB0cihuZXcgRWxlbWVu
dEF0dHJpYnV0ZURhdGEoKnRoaXMpKTsgfQotCi0gICAgQXR0cmlidXRlKiBhcnJheSgpOwotICAg
IGNvbnN0IEF0dHJpYnV0ZSogYXJyYXkoKSBjb25zdDsKLQogICAgIFJlZlB0cjxTdHlsZVByb3Bl
cnR5U2V0PiBtX2lubGluZVN0eWxlRGVjbDsKLSAgICBtdXRhYmxlIFJlZlB0cjxTdHlsZVByb3Bl
cnR5U2V0PiBtX2F0dHJpYnV0ZVN0eWxlOwotICAgIG11dGFibGUgU3BhY2VTcGxpdFN0cmluZyBt
X2NsYXNzTmFtZXM7Ci0gICAgbXV0YWJsZSBBdG9taWNTdHJpbmcgbV9pZEZvclN0eWxlUmVzb2x1
dGlvbjsKLQotICAgIHVuc2lnbmVkIG1faXNNdXRhYmxlIDogMTsKLSAgICB1bnNpZ25lZCBtX2Fy
cmF5U2l6ZSA6IDMxOwotCi0gICAgdW5pb24gewotICAgICAgICBWZWN0b3I8QXR0cmlidXRlLCA0
PiogbV9tdXRhYmxlQXR0cmlidXRlVmVjdG9yOwotICAgICAgICB2b2lkKiBtX2F0dHJpYnV0ZXM7
Ci0gICAgfTsKKyAgICBSZWZQdHI8U3R5bGVQcm9wZXJ0eVNldD4gbV9hdHRyaWJ1dGVTdHlsZTsK
KyAgICBTcGFjZVNwbGl0U3RyaW5nIG1fY2xhc3NOYW1lczsKKyAgICBBdG9taWNTdHJpbmcgbV9p
ZEZvclN0eWxlUmVzb2x1dGlvbjsKKyAgICBWZWN0b3I8QXR0cmlidXRlPiBtX2F0dHJpYnV0ZXM7
CiB9OwogCi1pbmxpbmUgc2l6ZV90IEVsZW1lbnRBdHRyaWJ1dGVEYXRhOjpsZW5ndGgoKSBjb25z
dAotewotICAgIGlmIChpc011dGFibGUoKSkKLSAgICAgICAgcmV0dXJuIG1fbXV0YWJsZUF0dHJp
YnV0ZVZlY3Rvci0+c2l6ZSgpOwotICAgIHJldHVybiBtX2FycmF5U2l6ZTsKLX0KLQotaW5saW5l
IGJvb2wgRWxlbWVudEF0dHJpYnV0ZURhdGE6OmlzRW1wdHkoKSBjb25zdAotewotICAgIHJldHVy
biAhbGVuZ3RoKCk7Ci19Ci0KLWlubGluZSBBdHRyaWJ1dGUqIEVsZW1lbnRBdHRyaWJ1dGVEYXRh
OjphcnJheSgpCi17Ci0gICAgLy8gRklYTUU6IEl0IGRvZXNuJ3QgcmVhbGx5IG1ha2Ugc2Vuc2Ug
dG8gaGF2ZSBhIG5vbi1jb25zdCBhcnJheSgpLCBhdCBsZWFzdCBub3QgaW4gdGhlIGhlYWRlciBm
aWxlLgotICAgIEFTU0VSVCghaXNNdXRhYmxlKCkpOwotICAgIHJldHVybiByZWludGVycHJldF9j
YXN0PEF0dHJpYnV0ZSo+KCZtX2F0dHJpYnV0ZXMpOwotfQotCi1pbmxpbmUgY29uc3QgQXR0cmli
dXRlKiBFbGVtZW50QXR0cmlidXRlRGF0YTo6YXJyYXkoKSBjb25zdAotewotICAgIEFTU0VSVCgh
aXNNdXRhYmxlKCkpOwotICAgIHJldHVybiByZWludGVycHJldF9jYXN0PGNvbnN0IEF0dHJpYnV0
ZSo+KCZtX2F0dHJpYnV0ZXMpOwotfQotCiBpbmxpbmUgdm9pZCBFbGVtZW50QXR0cmlidXRlRGF0
YTo6cmVtb3ZlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIEVsZW1lbnQqIGVs
ZW1lbnQpCiB7CiAgICAgc2l6ZV90IGluZGV4ID0gZ2V0QXR0cmlidXRlSXRlbUluZGV4KG5hbWUp
OwpAQCAtMTc3LDQyICsxMzQsMTggQEAgaW5saW5lIHZvaWQgRWxlbWVudEF0dHJpYnV0ZURhdGE6
OnJlbW92ZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBFbGUKICAgICByZXR1
cm47CiB9CiAKLWlubGluZSBjb25zdCBBdHRyaWJ1dGUqIEVsZW1lbnRBdHRyaWJ1dGVEYXRhOjph
dHRyaWJ1dGVJdGVtKHVuc2lnbmVkIGluZGV4KSBjb25zdAotewotICAgIEFTU0VSVChpbmRleCA8
IGxlbmd0aCgpKTsKLSAgICBpZiAoaXNNdXRhYmxlKCkpCi0gICAgICAgIHJldHVybiAmbV9tdXRh
YmxlQXR0cmlidXRlVmVjdG9yLT5hdChpbmRleCk7Ci0gICAgcmV0dXJuICZhcnJheSgpW2luZGV4
XTsKLX0KLQotaW5saW5lIEF0dHJpYnV0ZSogRWxlbWVudEF0dHJpYnV0ZURhdGE6OmF0dHJpYnV0
ZUl0ZW0odW5zaWduZWQgaW5kZXgpCi17Ci0gICAgQVNTRVJUKGluZGV4IDwgbGVuZ3RoKCkpOwot
ICAgIGlmIChpc011dGFibGUoKSkKLSAgICAgICAgcmV0dXJuICZtX211dGFibGVBdHRyaWJ1dGVW
ZWN0b3ItPmF0KGluZGV4KTsKLSAgICByZXR1cm4gJmFycmF5KClbaW5kZXhdOwotfQotCi1pbmxp
bmUgQXR0cmlidXRlKiBFbGVtZW50QXR0cmlidXRlRGF0YTo6Z2V0QXR0cmlidXRlSXRlbShjb25z
dCBTdHJpbmcmIG5hbWUsIGJvb2wgc2hvdWxkSWdub3JlQXR0cmlidXRlQ2FzZSkKLXsKLSAgICBz
aXplX3QgaW5kZXggPSBnZXRBdHRyaWJ1dGVJdGVtSW5kZXgobmFtZSwgc2hvdWxkSWdub3JlQXR0
cmlidXRlQ2FzZSk7Ci0gICAgaWYgKGluZGV4ICE9IG5vdEZvdW5kKQotICAgICAgICByZXR1cm4g
YXR0cmlidXRlSXRlbShpbmRleCk7Ci0gICAgcmV0dXJuIDA7Ci19Ci0KLWlubGluZSBjb25zdCBB
dHRyaWJ1dGUqIEVsZW1lbnRBdHRyaWJ1dGVEYXRhOjpnZXRBdHRyaWJ1dGVJdGVtKGNvbnN0IFN0
cmluZyYgbmFtZSwgYm9vbCBzaG91bGRJZ25vcmVBdHRyaWJ1dGVDYXNlKSBjb25zdAoraW5saW5l
IEF0dHJpYnV0ZSogRWxlbWVudEF0dHJpYnV0ZURhdGE6OmdldEF0dHJpYnV0ZUl0ZW0oY29uc3Qg
U3RyaW5nJiBuYW1lLCBib29sIHNob3VsZElnbm9yZUF0dHJpYnV0ZUNhc2UpIGNvbnN0CiB7CiAg
ICAgc2l6ZV90IGluZGV4ID0gZ2V0QXR0cmlidXRlSXRlbUluZGV4KG5hbWUsIHNob3VsZElnbm9y
ZUF0dHJpYnV0ZUNhc2UpOwogICAgIGlmIChpbmRleCAhPSBub3RGb3VuZCkKLSAgICAgICAgcmV0
dXJuIGF0dHJpYnV0ZUl0ZW0oaW5kZXgpOworICAgICAgICByZXR1cm4gJmNvbnN0X2Nhc3Q8RWxl
bWVudEF0dHJpYnV0ZURhdGEqPih0aGlzKS0+bV9hdHRyaWJ1dGVzW2luZGV4XTsKICAgICByZXR1
cm4gMDsKIH0KIAogaW5saW5lIHNpemVfdCBFbGVtZW50QXR0cmlidXRlRGF0YTo6Z2V0QXR0cmli
dXRlSXRlbUluZGV4KGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUpIGNvbnN0CiB7Ci0gICAgZm9y
ICh1bnNpZ25lZCBpID0gMDsgaSA8IGxlbmd0aCgpOyArK2kpIHsKLSAgICAgICAgaWYgKGF0dHJp
YnV0ZUl0ZW0oaSktPm5hbWUoKS5tYXRjaGVzKG5hbWUpKQorICAgIGZvciAodW5zaWduZWQgaSA9
IDA7IGkgPCBtX2F0dHJpYnV0ZXMuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgaWYgKG1fYXR0cmli
dXRlcy5hdChpKS5uYW1lKCkubWF0Y2hlcyhuYW1lKSkKICAgICAgICAgICAgIHJldHVybiBpOwog
ICAgIH0KICAgICByZXR1cm4gbm90Rm91bmQ7CkBAIC0yMjcsOSArMTYwLDggQEAgaW5saW5lIHNp
emVfdCBFbGVtZW50QXR0cmlidXRlRGF0YTo6Z2V0QXR0cmlidXRlSXRlbUluZGV4KGNvbnN0IFN0
cmluZyYgbmFtZSwgYm8KIAogICAgIC8vIE9wdGltaXplIGZvciB0aGUgY2FzZSB3aGVyZSB0aGUg
YXR0cmlidXRlIGV4aXN0cyBhbmQgaXRzIG5hbWUgZXhhY3RseSBtYXRjaGVzLgogICAgIGZvciAo
dW5zaWduZWQgaSA9IDA7IGkgPCBsZW47ICsraSkgewotICAgICAgICBjb25zdCBBdHRyaWJ1dGUq
IGF0dHJpYnV0ZSA9IGF0dHJpYnV0ZUl0ZW0oaSk7Ci0gICAgICAgIGlmICghYXR0cmlidXRlLT5u
YW1lKCkuaGFzUHJlZml4KCkpIHsKLSAgICAgICAgICAgIGlmIChuYW1lID09IGF0dHJpYnV0ZS0+
bG9jYWxOYW1lKCkpCisgICAgICAgIGlmICghbV9hdHRyaWJ1dGVzW2ldLm5hbWUoKS5oYXNQcmVm
aXgoKSkgeworICAgICAgICAgICAgaWYgKG5hbWUgPT0gbV9hdHRyaWJ1dGVzW2ldLmxvY2FsTmFt
ZSgpKQogICAgICAgICAgICAgICAgIHJldHVybiBpOwogICAgICAgICB9IGVsc2UKICAgICAgICAg
ICAgIGRvU2xvd0NoZWNrID0gdHJ1ZTsKQEAgLTI0MCwyNCArMTcyLDYgQEAgaW5saW5lIHNpemVf
dCBFbGVtZW50QXR0cmlidXRlRGF0YTo6Z2V0QXR0cmlidXRlSXRlbUluZGV4KGNvbnN0IFN0cmlu
ZyYgbmFtZSwgYm8KICAgICByZXR1cm4gbm90Rm91bmQ7CiB9CiAKLWlubGluZSBjb25zdCBBdHRy
aWJ1dGUqIEVsZW1lbnRBdHRyaWJ1dGVEYXRhOjpnZXRBdHRyaWJ1dGVJdGVtKGNvbnN0IFF1YWxp
ZmllZE5hbWUmIG5hbWUpIGNvbnN0Ci17Ci0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGxl
bmd0aCgpOyArK2kpIHsKLSAgICAgICAgaWYgKGF0dHJpYnV0ZUl0ZW0oaSktPm5hbWUoKS5tYXRj
aGVzKG5hbWUpKQotICAgICAgICAgICAgcmV0dXJuIGF0dHJpYnV0ZUl0ZW0oaSk7Ci0gICAgfQot
ICAgIHJldHVybiAwOwotfQotCi1pbmxpbmUgQXR0cmlidXRlKiBFbGVtZW50QXR0cmlidXRlRGF0
YTo6Z2V0QXR0cmlidXRlSXRlbShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lKQotewotICAgIGZv
ciAodW5zaWduZWQgaSA9IDA7IGkgPCBsZW5ndGgoKTsgKytpKSB7Ci0gICAgICAgIGlmIChhdHRy
aWJ1dGVJdGVtKGkpLT5uYW1lKCkubWF0Y2hlcyhuYW1lKSkKLSAgICAgICAgICAgIHJldHVybiBh
dHRyaWJ1dGVJdGVtKGkpOwotICAgIH0KLSAgICByZXR1cm4gMDsKLX0KLQogfQogCiAjZW5kaWYg
Ly8gRWxlbWVudEF0dHJpYnV0ZURhdGFfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9t
L1N0eWxlZEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL1N0eWxlZEVsZW1lbnQuY3Bw
CmluZGV4IGViZTVjZTc5OTVkOTVhODI5Y2I1MzYxYWY0ODU0ZjZhNTg3ZmQ4MmMuLmEyYmVkM2Y0
NWQyMGM0MWY5NmEyZjJmOGRiOGY4Yjk2ODJjYTk2YzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9TdHlsZWRFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU3R5bGVk
RWxlbWVudC5jcHAKQEAgLTE0Myw3ICsxNDMsNyBAQCBTdHlsZWRFbGVtZW50Ojp+U3R5bGVkRWxl
bWVudCgpCiAKIENTU1N0eWxlRGVjbGFyYXRpb24qIFN0eWxlZEVsZW1lbnQ6OnN0eWxlKCkKIHsK
LSAgICByZXR1cm4gbXV0YWJsZUF0dHJpYnV0ZURhdGEoKS0+ZW5zdXJlTXV0YWJsZUlubGluZVN0
eWxlKHRoaXMpLT5lbnN1cmVJbmxpbmVDU1NTdHlsZURlY2xhcmF0aW9uKHRoaXMpOyAKKyAgICBy
ZXR1cm4gZW5zdXJlQXR0cmlidXRlRGF0YSgpLT5lbnN1cmVNdXRhYmxlSW5saW5lU3R5bGUodGhp
cyktPmVuc3VyZUlubGluZUNTU1N0eWxlRGVjbGFyYXRpb24odGhpcyk7IAogfQogCiB2b2lkIFN0
eWxlZEVsZW1lbnQ6OmF0dHJpYnV0ZUNoYW5nZWQoY29uc3QgQXR0cmlidXRlJiBhdHRyaWJ1dGUp
CkBAIC0xNzAsMTEgKzE3MCwxMSBAQCB2b2lkIFN0eWxlZEVsZW1lbnQ6OmNsYXNzQXR0cmlidXRl
Q2hhbmdlZChjb25zdCBBdG9taWNTdHJpbmcmIG5ld0NsYXNzU3RyaW5nKQogICAgIGJvb2wgaGFz
Q2xhc3MgPSBpIDwgbGVuZ3RoOwogICAgIGlmIChoYXNDbGFzcykgewogICAgICAgICBjb25zdCBi
b29sIHNob3VsZEZvbGRDYXNlID0gZG9jdW1lbnQoKS0+aW5RdWlya3NNb2RlKCk7Ci0gICAgICAg
IGF0dHJpYnV0ZURhdGEoKS0+c2V0Q2xhc3MobmV3Q2xhc3NTdHJpbmcsIHNob3VsZEZvbGRDYXNl
KTsKKyAgICAgICAgZW5zdXJlQXR0cmlidXRlRGF0YSgpLT5zZXRDbGFzcyhuZXdDbGFzc1N0cmlu
Zywgc2hvdWxkRm9sZENhc2UpOwogICAgICAgICBpZiAoRE9NVG9rZW5MaXN0KiBjbGFzc0xpc3Qg
PSBvcHRpb25hbENsYXNzTGlzdCgpKQogICAgICAgICAgICAgc3RhdGljX2Nhc3Q8Q2xhc3NMaXN0
Kj4oY2xhc3NMaXN0KS0+cmVzZXQobmV3Q2xhc3NTdHJpbmcpOwogICAgIH0gZWxzZQotICAgICAg
ICBtdXRhYmxlQXR0cmlidXRlRGF0YSgpLT5jbGVhckNsYXNzKCk7CisgICAgICAgIGF0dHJpYnV0
ZURhdGEoKS0+Y2xlYXJDbGFzcygpOwogICAgIHNldE5lZWRzU3R5bGVSZWNhbGMoKTsKIH0KIApA
QCAtMjMwLDkgKzIzMCwxMCBAQCBib29sIFN0eWxlZEVsZW1lbnQ6OnNldElubGluZVN0eWxlUHJv
cGVydHkoQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eUlELCBjb25zdCBTdHJpbgogCiBib29sIFN0eWxl
ZEVsZW1lbnQ6OnJlbW92ZUlubGluZVN0eWxlUHJvcGVydHkoQ1NTUHJvcGVydHlJRCBwcm9wZXJ0
eUlEKQogewotICAgIGlmICghYXR0cmlidXRlRGF0YSgpIHx8ICFhdHRyaWJ1dGVEYXRhKCktPmlu
bGluZVN0eWxlKCkpCisgICAgU3R5bGVQcm9wZXJ0eVNldCogaW5saW5lU3R5bGUgPSBhdHRyaWJ1
dGVEYXRhKCkgPyBhdHRyaWJ1dGVEYXRhKCktPmlubGluZVN0eWxlKCkgOiAwOworICAgIGlmICgh
aW5saW5lU3R5bGUpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBib29sIGNoYW5nZXMgPSBt
dXRhYmxlQXR0cmlidXRlRGF0YSgpLT5pbmxpbmVTdHlsZSgpLT5yZW1vdmVQcm9wZXJ0eShwcm9w
ZXJ0eUlEKTsKKyAgICBib29sIGNoYW5nZXMgPSBpbmxpbmVTdHlsZS0+cmVtb3ZlUHJvcGVydHko
cHJvcGVydHlJRCk7CiAgICAgaWYgKGNoYW5nZXMpCiAgICAgICAgIGlubGluZVN0eWxlQ2hhbmdl
ZCgpOwogICAgIHJldHVybiBjaGFuZ2VzOwpAQCAtMjQwLDcgKzI0MSw3IEBAIGJvb2wgU3R5bGVk
RWxlbWVudDo6cmVtb3ZlSW5saW5lU3R5bGVQcm9wZXJ0eShDU1NQcm9wZXJ0eUlEIHByb3BlcnR5
SUQpCiAKIHZvaWQgU3R5bGVkRWxlbWVudDo6YWRkU3VicmVzb3VyY2VBdHRyaWJ1dGVVUkxzKExp
c3RIYXNoU2V0PEtVUkw+JiB1cmxzKSBjb25zdAogewotICAgIGlmIChjb25zdCBTdHlsZVByb3Bl
cnR5U2V0KiBpbmxpbmVTdHlsZSA9IGF0dHJpYnV0ZURhdGEoKSA/IGF0dHJpYnV0ZURhdGEoKS0+
aW5saW5lU3R5bGUoKSA6IDApCisgICAgaWYgKFN0eWxlUHJvcGVydHlTZXQqIGlubGluZVN0eWxl
ID0gYXR0cmlidXRlRGF0YSgpID8gYXR0cmlidXRlRGF0YSgpLT5pbmxpbmVTdHlsZSgpIDogMCkK
ICAgICAgICAgaW5saW5lU3R5bGUtPmFkZFN1YnJlc291cmNlU3R5bGVVUkxzKHVybHMsIGRvY3Vt
ZW50KCktPmVsZW1lbnRTaGVldCgpLT5jb250ZW50cygpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTENvbnN0cnVjdGlvblNpdGUuY3BwIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTENvbnN0cnVjdGlvblNpdGUuY3BwCmluZGV4IGQ0MDY2
N2NlNTAxZjllZDZhNGQ5Y2Y4YTRkODZiODVjYTcxYTNmNmYuLjRkYTdhN2FlOWM2MTJlMDVkYmM3
NDYyZGY0NGE2MDQ2OTdjMzM5MjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFy
c2VyL0hUTUxDb25zdHJ1Y3Rpb25TaXRlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3Bh
cnNlci9IVE1MQ29uc3RydWN0aW9uU2l0ZS5jcHAKQEAgLTQzOCwxMSArNDM4LDggQEAgUGFzc1Jl
ZlB0cjxFbGVtZW50PiBIVE1MQ29uc3RydWN0aW9uU2l0ZTo6Y3JlYXRlSFRNTEVsZW1lbnRGcm9t
U2F2ZWRFbGVtZW50KEVsZW0KICAgICBBU1NFUlQoZWxlbWVudC0+aXNIVE1MRWxlbWVudCgpKTsg
Ly8gb3RoZXJ3aXNlIGxvY2FsTmFtZSgpIG1pZ2h0IGJlIHdyb25nLgogCiAgICAgVmVjdG9yPEF0
dHJpYnV0ZT4gY2xvbmVkQXR0cmlidXRlczsKLSAgICBpZiAoY29uc3QgRWxlbWVudEF0dHJpYnV0
ZURhdGEqIGF0dHJpYnV0ZURhdGEgPSBlbGVtZW50LT51cGRhdGVkQXR0cmlidXRlRGF0YSgpKSB7
Ci0gICAgICAgIGNsb25lZEF0dHJpYnV0ZXMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShhdHRyaWJ1
dGVEYXRhLT5sZW5ndGgoKSk7Ci0gICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBhdHRy
aWJ1dGVEYXRhLT5sZW5ndGgoKTsgKytpKQotICAgICAgICAgICAgY2xvbmVkQXR0cmlidXRlcy51
bmNoZWNrZWRBcHBlbmQoKmF0dHJpYnV0ZURhdGEtPmF0dHJpYnV0ZUl0ZW0oaSkpOwotICAgIH0K
KyAgICBpZiAoRWxlbWVudEF0dHJpYnV0ZURhdGEqIGF0dHJpYnV0ZURhdGEgPSBlbGVtZW50LT51
cGRhdGVkQXR0cmlidXRlRGF0YSgpKQorICAgICAgICBjbG9uZWRBdHRyaWJ1dGVzID0gYXR0cmli
dXRlRGF0YS0+Y2xvbmVkQXR0cmlidXRlVmVjdG9yKCk7CiAKICAgICBBdG9taWNIVE1MVG9rZW4g
ZmFrZVRva2VuKEhUTUxUb2tlblR5cGVzOjpTdGFydFRhZywgZWxlbWVudC0+bG9jYWxOYW1lKCks
IGNsb25lZEF0dHJpYnV0ZXMpOwogICAgIHJldHVybiBjcmVhdGVIVE1MRWxlbWVudChmYWtlVG9r
ZW4pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9YTUxEb2N1bWVudFBh
cnNlclF0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJzZXJR
dC5jcHAKaW5kZXggY2JlYzhhMGUzZGMxOGVkZWM3OTlkZTBkOTE4YzBlODhjOGViNTlkYi4uNTlk
OTQ0OTM0MjAxMWNhYzQxZjVjYWY3YTVjMmU0MGU3ZjM1NTM1YSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUveG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNlclF0LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS94bWwvcGFyc2VyL1hNTERvY3VtZW50UGFyc2VyUXQuY3BwCkBAIC0xMzgsOSArMTM4
LDkgQEAgWE1MRG9jdW1lbnRQYXJzZXI6OlhNTERvY3VtZW50UGFyc2VyKERvY3VtZW50RnJhZ21l
bnQqIGZyYWdtZW50LCBFbGVtZW50KiBwYXJlbnQKIAogICAgIFFYbWxTdHJlYW1OYW1lc3BhY2VE
ZWNsYXJhdGlvbnMgbmFtZXNwYWNlczsKICAgICBmb3IgKEVsZW1lbnQqIGVsZW1lbnQgPSBlbGVt
U3RhY2subGFzdCgpOyAhZWxlbVN0YWNrLmlzRW1wdHkoKTsgZWxlbVN0YWNrLnJlbW92ZUxhc3Qo
KSkgewotICAgICAgICBpZiAoY29uc3QgRWxlbWVudEF0dHJpYnV0ZURhdGEqIGF0dHJzID0gZWxl
bWVudC0+dXBkYXRlZEF0dHJpYnV0ZURhdGEoKSkgeworICAgICAgICBpZiAoRWxlbWVudEF0dHJp
YnV0ZURhdGEqIGF0dHJzID0gZWxlbWVudC0+dXBkYXRlZEF0dHJpYnV0ZURhdGEoKSkgewogICAg
ICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGF0dHJzLT5sZW5ndGgoKTsgaSsrKSB7
Ci0gICAgICAgICAgICAgICAgY29uc3QgQXR0cmlidXRlKiBhdHRyID0gYXR0cnMtPmF0dHJpYnV0
ZUl0ZW0oaSk7CisgICAgICAgICAgICAgICAgQXR0cmlidXRlKiBhdHRyID0gYXR0cnMtPmF0dHJp
YnV0ZUl0ZW0oaSk7CiAgICAgICAgICAgICAgICAgaWYgKGF0dHItPmxvY2FsTmFtZSgpID09ICJ4
bWxucyIpCiAgICAgICAgICAgICAgICAgICAgIG1fZGVmYXVsdE5hbWVzcGFjZVVSSSA9IGF0dHIt
PnZhbHVlKCk7CiAgICAgICAgICAgICAgICAgZWxzZSBpZiAoYXR0ci0+cHJlZml4KCkgPT0gInht
bG5zIikK
</data>

          </attachment>
      

    </bug>

</bugzilla>