<?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>93595</bug_id>
          
          <creation_ts>2012-08-09 01:33:14 -0700</creation_ts>
          <short_desc>[V8] Rename V8BindingPerContextData to V8PerContextData</short_desc>
          <delta_ts>2012-08-09 20:06:39 -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>WebCore JavaScript</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>93095</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Kentaro Hara">haraken</reporter>
          <assigned_to name="Kentaro Hara">haraken</assigned_to>
          <cc>abarth</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>japhet</cc>
    
    <cc>rakuco</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>691345</commentid>
    <comment_count>0</comment_count>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-08-09 01:33:14 -0700</bug_when>
    <thetext>For a better name. See discussion in bug 93333.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>691348</commentid>
    <comment_count>1</comment_count>
      <attachid>157423</attachid>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-08-09 01:40:18 -0700</bug_when>
    <thetext>Created attachment 157423
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>691514</commentid>
    <comment_count>2</comment_count>
      <attachid>157423</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-08-09 09:45:16 -0700</bug_when>
    <thetext>Comment on attachment 157423
Patch

The bug title was slightly off.  You might want to update the ChangeLog before landing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>691984</commentid>
    <comment_count>3</comment_count>
      <attachid>157578</attachid>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-08-09 16:44:06 -0700</bug_when>
    <thetext>Created attachment 157578
patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>692049</commentid>
    <comment_count>4</comment_count>
      <attachid>157578</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-08-09 17:55:11 -0700</bug_when>
    <thetext>Comment on attachment 157578
patch for landing

Rejecting attachment 157578 from commit-queue.

Failed to run &quot;[&apos;/mnt/git/webkit-commit-queue/Tools/Scripts/webkit-patch&apos;, &apos;--status-host=queues.webkit.org&apos;, &apos;-...&quot; exit_code: 2

Last 500 characters of output:
ing file Source/WebCore/bindings/v8/V8PerContextData.cpp
patching file Source/WebCore/bindings/v8/V8PerContextData.h
patching file Source/WebCore/bindings/v8/V8Proxy.cpp
patching file Source/WebCore/bindings/v8/V8Proxy.h
patching file Source/WebCore/bindings/v8/WorkerContextExecutionProxy.cpp
patching file Source/WebCore/bindings/v8/WorkerContextExecutionProxy.h

Failed to run &quot;[u&apos;/mnt/git/webkit-commit-queue/Tools/Scripts/svn-apply&apos;, u&apos;--force&apos;]&quot; exit_code: 1 cwd: /mnt/git/webkit-commit-queue/

Full output: http://queues.webkit.org/results/13461700</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>692053</commentid>
    <comment_count>5</comment_count>
      <attachid>157599</attachid>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-08-09 18:01:23 -0700</bug_when>
    <thetext>Created attachment 157599
patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>692136</commentid>
    <comment_count>6</comment_count>
      <attachid>157599</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-08-09 20:05:25 -0700</bug_when>
    <thetext>Comment on attachment 157599
patch for landing

Clearing flags on attachment: 157599

Committed r125242: &lt;http://trac.webkit.org/changeset/125242&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>157423</attachid>
            <date>2012-08-09 01:40:18 -0700</date>
            <delta_ts>2012-08-09 20:06:29 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-93595-20120809173951.patch</filename>
            <type>text/plain</type>
            <size>34627</size>
            <attacher name="Kentaro Hara">haraken</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI1MTU3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggN2UwYjg5NmY0MjRlNGY3
OGFkOTVhNDA1ZTFiMmVhZjY3ZGM3ZGJlNy4uMjUyZGM2YzM5ZGJlYzc3MWI4Nzk3YjJhOWZkOThj
ZDE5ODc3YmUwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYxIEBACisyMDEyLTA4LTA5ICBLZW50
YXJvIEhhcmEgIDxoYXJha2VuQGNocm9taXVtLm9yZz4KKworICAgICAgICBbVjhdIFJlbmFtZSBW
OEJpbmRpbmdQZXJDb250ZXh0RGF0YSB0byBWOEJpbmRpbmdQZXJDb250ZXh0RGF0YQorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTM1OTUKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBGb3IgYSBiZXR0ZXIgbmFt
ZS4gU2VlIGRpc2N1c3Npb24gaW4gYnVnIDkzMzMzLgorCisgICAgICAgIE5vIHRlc3RzLiBObyBj
aGFuZ2UgaW4gYmVoYXZpb3IuCisKKyAgICAgICAgKiBVc2VWOC5jbWFrZTogQWRkZWQgVjhQZXJD
b250ZXh0RGF0YS5jcHAuIFRoZSBmYWN0IHRoYXQgbWlzc2luZyBWOEJpbmRpbmdQZXJDb250ZXh0
RGF0YS5jcHAKKyAgICAgICAgaGFzIG5vdCBjYXVzZWQgYW55IHByb2JsZW0gaW5kaWNhdGVzIHRo
YXQgVXNlVjguY21ha2UgaXMgbm90IHVzZWQgYXQgYWxsPworICAgICAgICAqIFdlYkNvcmUuZ3lw
aToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9WOERPTVdpbmRvd1NoZWxsLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlY4RE9NV2luZG93U2hlbGw6OmluaXRDb250ZXh0SWZOZWVkZWQpOgorICAgICAg
ICAqIGJpbmRpbmdzL3Y4L1Y4RE9NV2luZG93U2hlbGwuaDoKKyAgICAgICAgKFdlYkNvcmU6OlY4
RE9NV2luZG93U2hlbGw6OnBlckNvbnRleHREYXRhKToKKyAgICAgICAgKFY4RE9NV2luZG93U2hl
bGwpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1Y4RE9NV3JhcHBlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpWOERPTVdyYXBwZXI6OmNvbnN0cnVjdG9yRm9yVHlwZSk6CisgICAgICAgIChXZWJD
b3JlOjpWOERPTVdyYXBwZXI6OnBlckNvbnRleHREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OlY4
RE9NV3JhcHBlcjo6aW5zdGFudGlhdGVWOE9iamVjdCk6CisgICAgICAgICogYmluZGluZ3Mvdjgv
VjhET01XcmFwcGVyLmg6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFY4RE9NV3JhcHBl
cik6CisgICAgICAgICogYmluZGluZ3MvdjgvVjhJc29sYXRlZENvbnRleHQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6VjhJc29sYXRlZENvbnRleHQ6OlY4SXNvbGF0ZWRDb250ZXh0KToKKyAgICAg
ICAgKiBiaW5kaW5ncy92OC9WOElzb2xhdGVkQ29udGV4dC5oOgorICAgICAgICAoV2ViQ29yZSk6
CisgICAgICAgIChXZWJDb3JlOjpWOElzb2xhdGVkQ29udGV4dDo6cGVyQ29udGV4dERhdGEpOgor
ICAgICAgICAoVjhJc29sYXRlZENvbnRleHQpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1Y4UGVy
Q29udGV4dERhdGEuY3BwOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvdjgv
VjhCaW5kaW5nUGVyQ29udGV4dERhdGEuY3BwLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAg
IChXZWJDb3JlOjpWOFBlckNvbnRleHREYXRhOjpkaXNwb3NlKToKKyAgICAgICAgKFdlYkNvcmU6
OlY4UGVyQ29udGV4dERhdGE6OmluaXQpOgorICAgICAgICAoV2ViQ29yZTo6VjhQZXJDb250ZXh0
RGF0YTo6Y3JlYXRlV3JhcHBlckZyb21DYWNoZVNsb3dDYXNlKToKKyAgICAgICAgKFdlYkNvcmU6
OlY4UGVyQ29udGV4dERhdGE6OmNvbnN0cnVjdG9yRm9yVHlwZVNsb3dDYXNlKToKKyAgICAgICAg
KiBiaW5kaW5ncy92OC9WOFBlckNvbnRleHREYXRhLmg6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy92OC9WOEJpbmRpbmdQZXJDb250ZXh0RGF0YS5oLgorICAgICAgICAoV2Vi
Q29yZSk6CisgICAgICAgIChWOFBlckNvbnRleHREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OlY4
UGVyQ29udGV4dERhdGE6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpWOFBlckNvbnRleHRE
YXRhOjp+VjhQZXJDb250ZXh0RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpWOFBlckNvbnRleHRE
YXRhOjpjcmVhdGVXcmFwcGVyRnJvbUNhY2hlKToKKyAgICAgICAgKFdlYkNvcmU6OlY4UGVyQ29u
dGV4dERhdGE6OmNvbnN0cnVjdG9yRm9yVHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpWOFBlckNv
bnRleHREYXRhOjpWOFBlckNvbnRleHREYXRhKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9WOFBy
b3h5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlY4UHJveHk6OnJldHJpZXZlUGVyQ29udGV4dERh
dGEpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1Y4UHJveHkuaDoKKyAgICAgICAgKFdlYkNvcmUp
OgorICAgICAgICAoVjhQcm94eSk6CisgICAgICAgICogYmluZGluZ3MvdjgvV29ya2VyQ29udGV4
dEV4ZWN1dGlvblByb3h5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlckNvbnRleHRFeGVj
dXRpb25Qcm94eTo6aW5pdENvbnRleHRJZk5lZWRlZCk6CisgICAgICAgICogYmluZGluZ3Mvdjgv
V29ya2VyQ29udGV4dEV4ZWN1dGlvblByb3h5Lmg6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAg
ICAgKFdlYkNvcmU6OldvcmtlckNvbnRleHRFeGVjdXRpb25Qcm94eTo6cGVyQ29udGV4dERhdGEp
OgorICAgICAgICAoV29ya2VyQ29udGV4dEV4ZWN1dGlvblByb3h5KToKKwogMjAxMi0wOC0wOSAg
QXJrbyBTYWhhICA8YXJrb0Btb3Rvcm9sYS5jb20+CiAKICAgICAgICAgTWljcm9kYXRhOiBIVE1M
UHJvcGVydGllc0NvbGxlY3Rpb24gZG9lcyBub3QgY29udGFpbiBhbGwgcHJvcGVydGllcyB3aGVu
IGl0ZW0gaXMgbm90IGF0dGFjaGVkIHRvIHRoZSBET00gdHJlZS4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL1VzZVY4LmNtYWtlIGIvU291cmNlL1dlYkNvcmUvVXNlVjguY21ha2UKaW5kZXgg
OGRhZTkzYWNiNGI2ODQ1ZmZhNGYxZjQ0YzdlZDNhMWY2Y2VkZmZjNy4uNTM4YmU2YTI3ZTViNjJm
YTgyODM3NDhkY2QzNDY1M2ViNWFiZWE4ZiAxMDA3NTUKLS0tIGEvU291cmNlL1dlYkNvcmUvVXNl
VjguY21ha2UKKysrIGIvU291cmNlL1dlYkNvcmUvVXNlVjguY21ha2UKQEAgLTYxLDYgKzYxLDcg
QEAgTElTVChBUFBFTkQgV2ViQ29yZV9TT1VSQ0VTCiAgICAgYmluZGluZ3MvdjgvVjhJc29sYXRl
ZENvbnRleHQuY3BwCiAgICAgYmluZGluZ3MvdjgvVjhMYXp5RXZlbnRMaXN0ZW5lci5jcHAKICAg
ICBiaW5kaW5ncy92OC9WOE5vZGVGaWx0ZXJDb25kaXRpb24uY3BwCisgICAgYmluZGluZ3Mvdjgv
VjhQZXJDb250ZXh0RGF0YS5jcHAKICAgICBiaW5kaW5ncy92OC9WOFByb3h5LmNwcAogICAgIGJp
bmRpbmdzL3Y4L1Y4UmVjdXJzaW9uU2NvcGUuY3BwCiAgICAgYmluZGluZ3MvdjgvVjhVdGlsaXRp
ZXMuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkgYi9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLmd5cGkKaW5kZXggYTYyYmE4YjY1YWE3YjY1N2RmOTA3MmQ2N2I2MDlj
YzFkNGRlMDViMC4uMDcyNmVkZDgwZjNkMDQyNjYxZmY0MGUxYzFhNGJlZDJkNzYzZDFjNiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUuZ3lwaQpAQCAtMjI0NSw4ICsyMjQ1LDYgQEAKICAgICAgICAgICAgICdiaW5kaW5n
cy92OC9WOEJpbmRpbmdIZWxwZXJzLmNwcCcsCiAgICAgICAgICAgICAnYmluZGluZ3MvdjgvVjhC
aW5kaW5nSGVscGVycy5oJywKICAgICAgICAgICAgICdiaW5kaW5ncy92OC9WOEJpbmRpbmdNYWNy
b3MuaCcsCi0gICAgICAgICAgICAnYmluZGluZ3MvdjgvVjhCaW5kaW5nUGVyQ29udGV4dERhdGEu
Y3BwJywKLSAgICAgICAgICAgICdiaW5kaW5ncy92OC9WOEJpbmRpbmdQZXJDb250ZXh0RGF0YS5o
JywKICAgICAgICAgICAgICdiaW5kaW5ncy92OC9WOEJpbmRpbmdQZXJJc29sYXRlRGF0YS5jcHAn
LAogICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L1Y4QmluZGluZ1Blcklzb2xhdGVEYXRhLmgnLAog
ICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L1Y4Q29uZmlndXJlRE9NQXR0cmlidXRlc0FuZE1ldGhv
ZHMuY3BwJywKQEAgLTIyNzksNiArMjI3Nyw4IEBACiAgICAgICAgICAgICAnYmluZGluZ3Mvdjgv
VjhOUFV0aWxzLmgnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L1Y4Tm9kZUZpbHRlckNvbmRp
dGlvbi5jcHAnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L1Y4Tm9kZUZpbHRlckNvbmRpdGlv
bi5oJywKKyAgICAgICAgICAgICdiaW5kaW5ncy92OC9WOFBlckNvbnRleHREYXRhLmNwcCcsCisg
ICAgICAgICAgICAnYmluZGluZ3MvdjgvVjhQZXJDb250ZXh0RGF0YS5oJywKICAgICAgICAgICAg
ICdiaW5kaW5ncy92OC9WOFByb3h5LmNwcCcsCiAgICAgICAgICAgICAnYmluZGluZ3MvdjgvVjhQ
cm94eS5oJywKICAgICAgICAgICAgICdiaW5kaW5ncy92OC9WOFJlY3Vyc2lvblNjb3BlLmNwcCcs
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOEJpbmRpbmdQZXJDb250
ZXh0RGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOEJpbmRpbmdQZXJDb250
ZXh0RGF0YS5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY4MTNmMmUyYTk4Njk5
MDI4ZjZlMzBlYmVlYTAzYTc5OTdhNGRlZmIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhCaW5kaW5nUGVy
Q29udGV4dERhdGEuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsMTI5ICswLDAgQEAKLS8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0g
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSAqIG1ldDoKLSAqCi0gKiAgICAgKiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgotICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZQotICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotICogaW4gdGhlIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotICogZGlzdHJp
YnV0aW9uLgotICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhl
IG5hbWVzIG9mIGl0cwotICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3Ig
cHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBz
cGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotICog
IkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSAqIE9XTkVSIE9SIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LAotICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0gKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSAqIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAi
Y29uZmlnLmgiCi0jaW5jbHVkZSAiVjhCaW5kaW5nUGVyQ29udGV4dERhdGEuaCIKLQotI2luY2x1
ZGUgIlNhZmVBbGxvY2F0aW9uLmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotdm9pZCBWOEJp
bmRpbmdQZXJDb250ZXh0RGF0YTo6ZGlzcG9zZSgpCi17Ci0gICAgewotICAgICAgICBXcmFwcGVy
Qm9pbGVycGxhdGVNYXA6Oml0ZXJhdG9yIGl0ID0gbV93cmFwcGVyQm9pbGVycGxhdGVzLmJlZ2lu
KCk7Ci0gICAgICAgIGZvciAoOyBpdCAhPSBtX3dyYXBwZXJCb2lsZXJwbGF0ZXMuZW5kKCk7ICsr
aXQpIHsKLSAgICAgICAgICAgIHY4OjpQZXJzaXN0ZW50PHY4OjpPYmplY3Q+IHdyYXBwZXIgPSBp
dC0+c2Vjb25kOwotICAgICAgICAgICAgd3JhcHBlci5EaXNwb3NlKCk7Ci0gICAgICAgIH0KLSAg
ICAgICAgbV93cmFwcGVyQm9pbGVycGxhdGVzLmNsZWFyKCk7Ci0gICAgfQotCi0gICAgewotICAg
ICAgICBDb25zdHJ1Y3Rvck1hcDo6aXRlcmF0b3IgaXQgPSBtX2NvbnN0cnVjdG9yTWFwLmJlZ2lu
KCk7Ci0gICAgICAgIGZvciAoOyBpdCAhPSBtX2NvbnN0cnVjdG9yTWFwLmVuZCgpOyArK2l0KSB7
Ci0gICAgICAgICAgICB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb24+IHdyYXBwZXIgPSBpdC0+
c2Vjb25kOwotICAgICAgICAgICAgd3JhcHBlci5EaXNwb3NlKCk7Ci0gICAgICAgIH0KLSAgICAg
ICAgbV9jb25zdHJ1Y3Rvck1hcC5jbGVhcigpOwotICAgIH0KLX0KLQotI2RlZmluZSBWOF9TVE9S
RV9QUklNT1JESUFMKG5hbWUsIE5hbWUpIFwKLXsgXAotICAgIEFTU0VSVChtXyMjbmFtZSMjUHJv
dG90eXBlLmdldCgpLklzRW1wdHkoKSk7IFwKLSAgICB2ODo6SGFuZGxlPHY4OjpTdHJpbmc+IHN5
bWJvbCA9IHY4OjpTdHJpbmc6Ok5ld1N5bWJvbCgjTmFtZSk7IFwKLSAgICBpZiAoc3ltYm9sLklz
RW1wdHkoKSkgXAotICAgICAgICByZXR1cm4gZmFsc2U7IFwKLSAgICB2ODo6SGFuZGxlPHY4OjpP
YmplY3Q+IG9iamVjdCA9IHY4OjpIYW5kbGU8djg6Ok9iamVjdD46OkNhc3QobV9jb250ZXh0LT5H
bG9iYWwoKS0+R2V0KHN5bWJvbCkpOyBcCi0gICAgaWYgKG9iamVjdC5Jc0VtcHR5KCkpIFwKLSAg
ICAgICAgcmV0dXJuIGZhbHNlOyBcCi0gICAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHByb3RvdHlw
ZVZhbHVlID0gb2JqZWN0LT5HZXQocHJvdG90eXBlU3RyaW5nKTsgXAotICAgIGlmIChwcm90b3R5
cGVWYWx1ZS5Jc0VtcHR5KCkpIFwKLSAgICAgICAgcmV0dXJuIGZhbHNlOyBcCi0gICAgbV8jI25h
bWUjI1Byb3RvdHlwZS5zZXQocHJvdG90eXBlVmFsdWUpOyBcCi19Ci0KLWJvb2wgVjhCaW5kaW5n
UGVyQ29udGV4dERhdGE6OmluaXQoKQotewotICAgIHY4OjpIYW5kbGU8djg6OlN0cmluZz4gcHJv
dG90eXBlU3RyaW5nID0gdjg6OlN0cmluZzo6TmV3U3ltYm9sKCJwcm90b3R5cGUiKTsKLSAgICBp
ZiAocHJvdG90eXBlU3RyaW5nLklzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0g
ICAgVjhfU1RPUkVfUFJJTU9SRElBTChlcnJvciwgRXJyb3IpOwotICAgIFY4X1NUT1JFX1BSSU1P
UkRJQUwob2JqZWN0LCBPYmplY3QpOwotCi0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLSN1bmRlZiBW
OF9TVE9SRV9QUklNT1JESUFMCi0KLXY4OjpMb2NhbDx2ODo6T2JqZWN0PiBWOEJpbmRpbmdQZXJD
b250ZXh0RGF0YTo6Y3JlYXRlV3JhcHBlckZyb21DYWNoZVNsb3dDYXNlKFdyYXBwZXJUeXBlSW5m
byogdHlwZSkKLXsKLSAgICBBU1NFUlQoIW1fZXJyb3JQcm90b3R5cGUuZ2V0KCkuSXNFbXB0eSgp
KTsKLSAgICBBU1NFUlQoIW1fb2JqZWN0UHJvdG90eXBlLmdldCgpLklzRW1wdHkoKSk7Ci0KLSAg
ICB2ODo6Q29udGV4dDo6U2NvcGUgc2NvcGUobV9jb250ZXh0KTsKLSAgICB2ODo6TG9jYWw8djg6
OkZ1bmN0aW9uPiBmdW5jdGlvbiA9IGNvbnN0cnVjdG9yRm9yVHlwZSh0eXBlKTsKLSAgICB2ODo6
TG9jYWw8djg6Ok9iamVjdD4gaW5zdGFuY2UgPSBTYWZlQWxsb2NhdGlvbjo6bmV3SW5zdGFuY2Uo
ZnVuY3Rpb24pOwotICAgIGlmICghaW5zdGFuY2UuSXNFbXB0eSgpKSB7Ci0gICAgICAgIG1fd3Jh
cHBlckJvaWxlcnBsYXRlcy5zZXQodHlwZSwgdjg6OlBlcnNpc3RlbnQ8djg6Ok9iamVjdD46Ok5l
dyhpbnN0YW5jZSkpOwotICAgICAgICByZXR1cm4gaW5zdGFuY2UtPkNsb25lKCk7Ci0gICAgfQot
ICAgIHJldHVybiB2ODo6TG9jYWw8djg6Ok9iamVjdD4oKTsKLX0KLQotdjg6OkxvY2FsPHY4OjpG
dW5jdGlvbj4gVjhCaW5kaW5nUGVyQ29udGV4dERhdGE6OmNvbnN0cnVjdG9yRm9yVHlwZVNsb3dD
YXNlKFdyYXBwZXJUeXBlSW5mbyogdHlwZSkKLXsKLSAgICBBU1NFUlQoIW1fZXJyb3JQcm90b3R5
cGUuZ2V0KCkuSXNFbXB0eSgpKTsKLSAgICBBU1NFUlQoIW1fb2JqZWN0UHJvdG90eXBlLmdldCgp
LklzRW1wdHkoKSk7Ci0KLSAgICB2ODo6Q29udGV4dDo6U2NvcGUgc2NvcGUobV9jb250ZXh0KTsK
LSAgICB2ODo6SGFuZGxlPHY4OjpGdW5jdGlvblRlbXBsYXRlPiBmdW5jdGlvblRlbXBsYXRlID0g
dHlwZS0+Z2V0VGVtcGxhdGUoKTsKLSAgICAvLyBHZXR0aW5nIHRoZSBmdW5jdGlvbiBtaWdodCBm
YWlsIGlmIHdlJ3JlIHJ1bm5pbmcgb3V0IG9mIHN0YWNrIG9yIG1lbW9yeS4KLSAgICB2ODo6VHJ5
Q2F0Y2ggdHJ5Q2F0Y2g7Ci0gICAgdjg6OkxvY2FsPHY4OjpGdW5jdGlvbj4gZnVuY3Rpb24gPSBm
dW5jdGlvblRlbXBsYXRlLT5HZXRGdW5jdGlvbigpOwotICAgIGlmIChmdW5jdGlvbi5Jc0VtcHR5
KCkpCi0gICAgICAgIHJldHVybiB2ODo6TG9jYWw8djg6OkZ1bmN0aW9uPigpOwotCi0gICAgZnVu
Y3Rpb24tPlNldFByb3RvdHlwZShtX29iamVjdFByb3RvdHlwZS5nZXQoKSk7Ci0KLSAgICBpZiAo
dHlwZS0+d3JhcHBlclR5cGVQcm90b3R5cGUgPT0gV3JhcHBlclR5cGVFcnJvclByb3RvdHlwZSkg
ewotICAgICAgICB2ODo6TG9jYWw8djg6OlZhbHVlPiBwcm90b3R5cGVWYWx1ZSA9IGZ1bmN0aW9u
LT5HZXQodjg6OlN0cmluZzo6TmV3U3ltYm9sKCJwcm90b3R5cGUiKSk7Ci0gICAgICAgIGlmICgh
cHJvdG90eXBlVmFsdWUuSXNFbXB0eSgpICYmIHByb3RvdHlwZVZhbHVlLT5Jc09iamVjdCgpKQot
ICAgICAgICAgICAgdjg6OkxvY2FsPHY4OjpPYmplY3Q+OjpDYXN0KHByb3RvdHlwZVZhbHVlKS0+
U2V0UHJvdG90eXBlKG1fZXJyb3JQcm90b3R5cGUuZ2V0KCkpOwotICAgIH0KLQotICAgIG1fY29u
c3RydWN0b3JNYXAuc2V0KHR5cGUsIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvbj46Ok5ldyhm
dW5jdGlvbikpOwotCi0gICAgcmV0dXJuIGZ1bmN0aW9uOwotfQotCi19IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOEJpbmRpbmdQ
ZXJDb250ZXh0RGF0YS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhCaW5kaW5nUGVy
Q29udGV4dERhdGEuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWU5MzU0YjEyZmU4
MmNhYzhhNjU3NWNhZDMzMGMyMGM2ZDhkNTRhZS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOEJpbmRpbmdQ
ZXJDb250ZXh0RGF0YS5oCisrKyAvZGV2L251bGwKQEAgLTEsOTkgKzAsMCBAQAotLyoKLSAqIENv
cHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotICogbWV0OgotICoKLSAqICAgICAqIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlCi0gKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0gKiBpbiB0aGUgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0gKiBkaXN0cmli
dXRpb24uCi0gKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUg
bmFtZXMgb2YgaXRzCi0gKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBw
cm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNw
ZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0gKiAi
QVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVAotICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0gKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotICogT1dORVIgT1IgQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
Ci0gKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotICogVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpZm5kZWYgVjhC
aW5kaW5nUGVyQ29udGV4dERhdGFfaAotI2RlZmluZSBWOEJpbmRpbmdQZXJDb250ZXh0RGF0YV9o
Ci0KLSNpbmNsdWRlICJPd25IYW5kbGUuaCIKLSNpbmNsdWRlICJXcmFwcGVyVHlwZUluZm8uaCIK
LSNpbmNsdWRlIDx2OC5oPgotI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+Ci0jaW5jbHVkZSA8d3Rm
L1Bhc3NPd25QdHIuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBWOEJpbmRpbmdQ
ZXJDb250ZXh0RGF0YSB7Ci1wdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NPd25QdHI8VjhCaW5kaW5n
UGVyQ29udGV4dERhdGE+IGNyZWF0ZSh2ODo6SGFuZGxlPHY4OjpDb250ZXh0PiBjb250ZXh0KQot
ICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBWOEJpbmRpbmdQZXJDb250ZXh0RGF0
YShjb250ZXh0KSk7Ci0gICAgfQotCi0gICAgflY4QmluZGluZ1BlckNvbnRleHREYXRhKCkKLSAg
ICB7Ci0gICAgICAgIGRpc3Bvc2UoKTsKLSAgICB9Ci0KLSAgICBib29sIGluaXQoKTsKLQotICAg
IC8vIFRvIGNyZWF0ZSBKUyBXcmFwcGVyIG9iamVjdHMsIHdlIGNyZWF0ZSBhIGNhY2hlIG9mIGEg
J2JvaWxlciBwbGF0ZScKLSAgICAvLyBvYmplY3QsIGFuZCB0aGVuIHNpbXBseSBDbG9uZSB0aGF0
IG9iamVjdCBlYWNoIHRpbWUgd2UgbmVlZCBhIG5ldyBvbmUuCi0gICAgLy8gVGhpcyBpcyBmYXN0
ZXIgdGhhbiBnb2luZyB0aHJvdWdoIHRoZSBmdWxsIG9iamVjdCBjcmVhdGlvbiBwcm9jZXNzLgot
ICAgIHY4OjpMb2NhbDx2ODo6T2JqZWN0PiBjcmVhdGVXcmFwcGVyRnJvbUNhY2hlKFdyYXBwZXJU
eXBlSW5mbyogdHlwZSkKLSAgICB7Ci0gICAgICAgIHY4OjpQZXJzaXN0ZW50PHY4OjpPYmplY3Q+
IGJvaWxlcnBsYXRlID0gbV93cmFwcGVyQm9pbGVycGxhdGVzLmdldCh0eXBlKTsKLSAgICAgICAg
cmV0dXJuICFib2lsZXJwbGF0ZS5Jc0VtcHR5KCkgPyBib2lsZXJwbGF0ZS0+Q2xvbmUoKSA6IGNy
ZWF0ZVdyYXBwZXJGcm9tQ2FjaGVTbG93Q2FzZSh0eXBlKTsKLSAgICB9Ci0KLSAgICB2ODo6TG9j
YWw8djg6OkZ1bmN0aW9uPiBjb25zdHJ1Y3RvckZvclR5cGUoV3JhcHBlclR5cGVJbmZvKiB0eXBl
KQotICAgIHsKLSAgICAgICAgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uPiBmdW5jdGlvbiA9
IG1fY29uc3RydWN0b3JNYXAuZ2V0KHR5cGUpOwotICAgICAgICBpZiAoIWZ1bmN0aW9uLklzRW1w
dHkoKSkKLSAgICAgICAgICAgIHJldHVybiB2ODo6TG9jYWw8djg6OkZ1bmN0aW9uPjo6TmV3KGZ1
bmN0aW9uKTsKLSAgICAgICAgcmV0dXJuIGNvbnN0cnVjdG9yRm9yVHlwZVNsb3dDYXNlKHR5cGUp
OwotICAgIH0KLQotcHJpdmF0ZToKLSAgICBleHBsaWNpdCBWOEJpbmRpbmdQZXJDb250ZXh0RGF0
YSh2ODo6SGFuZGxlPHY4OjpDb250ZXh0PiBjb250ZXh0KQotICAgICAgICA6IG1fY29udGV4dChj
b250ZXh0KQotICAgIHsKLSAgICB9Ci0KLSAgICB2b2lkIGRpc3Bvc2UoKTsKLQotICAgIHY4OjpM
b2NhbDx2ODo6T2JqZWN0PiBjcmVhdGVXcmFwcGVyRnJvbUNhY2hlU2xvd0Nhc2UoV3JhcHBlclR5
cGVJbmZvKik7Ci0gICAgdjg6OkxvY2FsPHY4OjpGdW5jdGlvbj4gY29uc3RydWN0b3JGb3JUeXBl
U2xvd0Nhc2UoV3JhcHBlclR5cGVJbmZvKik7Ci0KLSAgICAvLyBGb3IgZWFjaCBwb3NzaWJsZSB0
eXBlIG9mIHdyYXBwZXIsIHdlIGtlZXAgYSBib2lsZXJwbGF0ZSBvYmplY3QuCi0gICAgLy8gVGhl
IGJvaWxlcnBsYXRlIGlzIHVzZWQgdG8gY3JlYXRlIGFkZGl0aW9uYWwgd3JhcHBlcnMgb2YgdGhl
IHNhbWUgdHlwZS4KLSAgICB0eXBlZGVmIFdURjo6SGFzaE1hcDxXcmFwcGVyVHlwZUluZm8qLCB2
ODo6UGVyc2lzdGVudDx2ODo6T2JqZWN0PiA+IFdyYXBwZXJCb2lsZXJwbGF0ZU1hcDsKLSAgICBX
cmFwcGVyQm9pbGVycGxhdGVNYXAgbV93cmFwcGVyQm9pbGVycGxhdGVzOwotCi0gICAgdHlwZWRl
ZiBXVEY6Okhhc2hNYXA8V3JhcHBlclR5cGVJbmZvKiwgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0
aW9uPiA+IENvbnN0cnVjdG9yTWFwOwotICAgIENvbnN0cnVjdG9yTWFwIG1fY29uc3RydWN0b3JN
YXA7Ci0KLSAgICB2ODo6SGFuZGxlPHY4OjpDb250ZXh0PiBtX2NvbnRleHQ7Ci0gICAgT3duSGFu
ZGxlPHY4OjpWYWx1ZT4gbV9lcnJvclByb3RvdHlwZTsKLSAgICBPd25IYW5kbGU8djg6OlZhbHVl
PiBtX29iamVjdFByb3RvdHlwZTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2Vu
ZGlmIC8vIFY4QmluZGluZ1BlckNvbnRleHREYXRhX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3Y4L1Y4RE9NV2luZG93U2hlbGwuY3BwIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvdjgvVjhET01XaW5kb3dTaGVsbC5jcHAKaW5kZXggYTIyYjA5OTgyYTYxNGIzYzQ2Yzgw
MWU3YzFhNzk0ZTUxOTU3ZWM3NC4uYzVhMWNkNmNjYWJjNjUwMWMxZDRmMTBkZjFiNWNjNWVkMDY0
ZTg5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhET01XaW5kb3dT
aGVsbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhET01XaW5kb3dTaGVs
bC5jcHAKQEAgLTUwLDcgKzUwLDYgQEAKICNpbmNsdWRlICJTdG9yYWdlTmFtZXNwYWNlLmgiCiAj
aW5jbHVkZSAiU3R5bGVQcm9wZXJ0eVNldC5oIgogI2luY2x1ZGUgIlY4QmluZGluZy5oIgotI2lu
Y2x1ZGUgIlY4QmluZGluZ1BlckNvbnRleHREYXRhLmgiCiAjaW5jbHVkZSAiVjhDb2xsZWN0aW9u
LmgiCiAjaW5jbHVkZSAiVjhET01NYXAuaCIKICNpbmNsdWRlICJWOERPTVdpbmRvdy5oIgpAQCAt
NjAsNiArNTksNyBAQAogI2luY2x1ZGUgIlY4SGlkZGVuUHJvcGVydHlOYW1lLmgiCiAjaW5jbHVk
ZSAiVjhIaXN0b3J5LmgiCiAjaW5jbHVkZSAiVjhMb2NhdGlvbi5oIgorI2luY2x1ZGUgIlY4UGVy
Q29udGV4dERhdGEuaCIKICNpbmNsdWRlICJWOFByb3h5LmgiCiAjaW5jbHVkZSAiV29ya2VyQ29u
dGV4dEV4ZWN1dGlvblByb3h5LmgiCiAKQEAgLTMyNCw3ICszMjQsNyBAQCBib29sIFY4RE9NV2lu
ZG93U2hlbGw6OmluaXRDb250ZXh0SWZOZWVkZWQoKQogI2VuZGlmCiAgICAgfQogCi0gICAgbV9w
ZXJDb250ZXh0RGF0YSA9IFY4QmluZGluZ1BlckNvbnRleHREYXRhOjpjcmVhdGUobV9jb250ZXh0
KTsKKyAgICBtX3BlckNvbnRleHREYXRhID0gVjhQZXJDb250ZXh0RGF0YTo6Y3JlYXRlKG1fY29u
dGV4dCk7CiAgICAgaWYgKCFtX3BlckNvbnRleHREYXRhLT5pbml0KCkpIHsKICAgICAgICAgZGlz
cG9zZUNvbnRleHRIYW5kbGVzKCk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4RE9NV2luZG93U2hlbGwuaCBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4RE9NV2luZG93U2hlbGwuaAppbmRleCAwNjc2ZjE0NTA0OWNi
MWVkZGM5MGM0MjNkYzYyYzIwNDJhYTA2Mzg5Li5iMjViYmZjNDg4ZWQ3ZDZkNTM5OTVjZjY5YzVj
YTk2ZjIwNWY4MWVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOERP
TVdpbmRvd1NoZWxsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhET01XaW5k
b3dTaGVsbC5oCkBAIC0zMSw3ICszMSw3IEBACiAjaWZuZGVmIFY4RE9NV2luZG93U2hlbGxfaAog
I2RlZmluZSBWOERPTVdpbmRvd1NoZWxsX2gKIAotI2luY2x1ZGUgIlY4QmluZGluZ1BlckNvbnRl
eHREYXRhLmgiCisjaW5jbHVkZSAiVjhQZXJDb250ZXh0RGF0YS5oIgogI2luY2x1ZGUgIldyYXBw
ZXJUeXBlSW5mby5oIgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL0hh
c2hNYXAuaD4KQEAgLTc4LDcgKzc4LDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBkZXN0cm95R2xv
YmFsKCk7CiAKLSAgICBWOEJpbmRpbmdQZXJDb250ZXh0RGF0YSogcGVyQ29udGV4dERhdGEoKSB7
IHJldHVybiBtX3BlckNvbnRleHREYXRhLmdldCgpOyB9CisgICAgVjhQZXJDb250ZXh0RGF0YSog
cGVyQ29udGV4dERhdGEoKSB7IHJldHVybiBtX3BlckNvbnRleHREYXRhLmdldCgpOyB9CiAKIHBy
aXZhdGU6CiAgICAgVjhET01XaW5kb3dTaGVsbChGcmFtZSopOwpAQCAtOTcsNyArOTcsNyBAQCBw
cml2YXRlOgogCiAgICAgRnJhbWUqIG1fZnJhbWU7CiAKLSAgICBPd25QdHI8VjhCaW5kaW5nUGVy
Q29udGV4dERhdGE+IG1fcGVyQ29udGV4dERhdGE7CisgICAgT3duUHRyPFY4UGVyQ29udGV4dERh
dGE+IG1fcGVyQ29udGV4dERhdGE7CiAKICAgICB2ODo6UGVyc2lzdGVudDx2ODo6Q29udGV4dD4g
bV9jb250ZXh0OwogICAgIHY4OjpQZXJzaXN0ZW50PHY4OjpPYmplY3Q+IG1fZ2xvYmFsOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhET01XcmFwcGVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4RE9NV3JhcHBlci5jcHAKaW5kZXggYzljN2UxNTk5
MWIzMGU2MjQ1ZDRhMmQzZTZlOTExODBjM2VjNjM5NC4uOTIyYzk2YThhMzk2NGIwMWU3NGQ0MTVh
NDg2OTU5OWUwMzJjZTMzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvdjgv
VjhET01XcmFwcGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOERPTVdy
YXBwZXIuY3BwCkBAIC00MSw3ICs0MSw2IEBACiAjaW5jbHVkZSAiU3R5bGVQcm9wZXJ0eVNldC5o
IgogI2luY2x1ZGUgIlY4QWJzdHJhY3RFdmVudExpc3RlbmVyLmgiCiAjaW5jbHVkZSAiVjhCaW5k
aW5nLmgiCi0jaW5jbHVkZSAiVjhCaW5kaW5nUGVyQ29udGV4dERhdGEuaCIKICNpbmNsdWRlICJW
OENvbGxlY3Rpb24uaCIKICNpbmNsdWRlICJWOEV2ZW50TGlzdGVuZXIuaCIKICNpbmNsdWRlICJW
OEV2ZW50TGlzdGVuZXJMaXN0LmgiCkBAIC01Miw2ICs1MSw3IEBACiAjaW5jbHVkZSAiVjhOYW1l
ZE5vZGVNYXAuaCIKICNpbmNsdWRlICJWOE5vZGVGaWx0ZXJDb25kaXRpb24uaCIKICNpbmNsdWRl
ICJWOE5vZGVMaXN0LmgiCisjaW5jbHVkZSAiVjhQZXJDb250ZXh0RGF0YS5oIgogI2luY2x1ZGUg
IlY4UHJveHkuaCIKICNpbmNsdWRlICJWOFN0eWxlU2hlZXQuaCIKICNpbmNsdWRlICJWOFdvcmtl
ckNvbnRleHRFdmVudExpc3RlbmVyLmgiCkBAIC05NSw3ICs5NSw3IEBAIHY4OjpMb2NhbDx2ODo6
RnVuY3Rpb24+IFY4RE9NV3JhcHBlcjo6Y29uc3RydWN0b3JGb3JUeXBlKFdyYXBwZXJUeXBlSW5m
byogdHlwZSwKICAgICBpZiAoIWZyYW1lKQogICAgICAgICByZXR1cm4gdjg6OkxvY2FsPHY4OjpG
dW5jdGlvbj4oKTsKIAotICAgIGlmIChWOEJpbmRpbmdQZXJDb250ZXh0RGF0YSogY29udGV4dERh
dGEgPSBWOFByb3h5OjpyZXRyaWV2ZVBlckNvbnRleHREYXRhKGZyYW1lKSkKKyAgICBpZiAoVjhQ
ZXJDb250ZXh0RGF0YSogY29udGV4dERhdGEgPSBWOFByb3h5OjpyZXRyaWV2ZVBlckNvbnRleHRE
YXRhKGZyYW1lKSkKICAgICAgICAgcmV0dXJuIGNvbnRleHREYXRhLT5jb25zdHJ1Y3RvckZvclR5
cGUodHlwZSk7CiAKICAgICByZXR1cm4gdjg6OkxvY2FsPHY4OjpGdW5jdGlvbj4oKTsKQEAgLTEx
MCwxNCArMTEwLDE0IEBAIHY4OjpMb2NhbDx2ODo6RnVuY3Rpb24+IFY4RE9NV3JhcHBlcjo6Y29u
c3RydWN0b3JGb3JUeXBlKFdyYXBwZXJUeXBlSW5mbyogdHlwZSwKIH0KICNlbmRpZgogCi1WOEJp
bmRpbmdQZXJDb250ZXh0RGF0YSogVjhET01XcmFwcGVyOjpwZXJDb250ZXh0RGF0YShWOFByb3h5
KiBwcm94eSkKK1Y4UGVyQ29udGV4dERhdGEqIFY4RE9NV3JhcHBlcjo6cGVyQ29udGV4dERhdGEo
VjhQcm94eSogcHJveHkpCiB7CiAgICAgVjhET01XaW5kb3dTaGVsbCogc2hlbGwgPSBwcm94eS0+
d2luZG93U2hlbGwoKTsKICAgICByZXR1cm4gc2hlbGwgPyBzaGVsbC0+cGVyQ29udGV4dERhdGEo
KSA6IDA7CiB9CiAKICNpZiBFTkFCTEUoV09SS0VSUykKLVY4QmluZGluZ1BlckNvbnRleHREYXRh
KiBWOERPTVdyYXBwZXI6OnBlckNvbnRleHREYXRhKFdvcmtlckNvbnRleHQqKQorVjhQZXJDb250
ZXh0RGF0YSogVjhET01XcmFwcGVyOjpwZXJDb250ZXh0RGF0YShXb3JrZXJDb250ZXh0KikKIHsK
ICAgICBXb3JrZXJTY3JpcHRDb250cm9sbGVyKiBjb250cm9sbGVyID0gV29ya2VyU2NyaXB0Q29u
dHJvbGxlcjo6Y29udHJvbGxlckZvckNvbnRleHQoKTsKICAgICBXb3JrZXJDb250ZXh0RXhlY3V0
aW9uUHJveHkqIHByb3h5ID0gY29udHJvbGxlciA/IGNvbnRyb2xsZXItPnByb3h5KCkgOiAwOwpA
QCAtMTcxLDcgKzE3MSw3IEBAIHY4OjpMb2NhbDx2ODo6T2JqZWN0PiBWOERPTVdyYXBwZXI6Omlu
c3RhbnRpYXRlVjhPYmplY3QoVjhQcm94eSogcHJveHksIFdyYXBwZXJUCiAjaWYgRU5BQkxFKFdP
UktFUlMpCiAgICAgV29ya2VyQ29udGV4dCogd29ya2VyQ29udGV4dCA9IDA7CiAjZW5kaWYKLSAg
ICBWOEJpbmRpbmdQZXJDb250ZXh0RGF0YSogY29udGV4dERhdGEgPSAwOworICAgIFY4UGVyQ29u
dGV4dERhdGEqIGNvbnRleHREYXRhID0gMDsKICAgICBWOElzb2xhdGVkQ29udGV4dCogaXNvbGF0
ZWRDb250ZXh0OwogICAgIGlmIChVTkxJS0VMWSghIShpc29sYXRlZENvbnRleHQgPSBWOElzb2xh
dGVkQ29udGV4dDo6Z2V0RW50ZXJlZCgpKSkpIHsKICAgICAgICAgY29udGV4dERhdGEgPSBpc29s
YXRlZENvbnRleHQtPnBlckNvbnRleHREYXRhKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy92OC9WOERPTVdyYXBwZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4
L1Y4RE9NV3JhcHBlci5oCmluZGV4IGRlYThlODgwNTI5OTRhMjI1YzZmYmU5ZWI5Y2M3ZjQxMjc3
YjgyZmMuLmQ5ZTgwNTllNDIwYzZmM2FhODVmMjYwOTkzMWMzZjJhMDZlYzdkYWMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4RE9NV3JhcHBlci5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4RE9NV3JhcHBlci5oCkBAIC01Miw3ICs1Miw3IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKICAgICBjbGFzcyBFdmVudFRhcmdldDsKICAgICBjbGFzcyBGcmFt
ZTsKICAgICBjbGFzcyBOb2RlOwotICAgIGNsYXNzIFY4QmluZGluZ1BlckNvbnRleHREYXRhOwor
ICAgIGNsYXNzIFY4UGVyQ29udGV4dERhdGE7CiAgICAgY2xhc3MgVjhQcm94eTsKICAgICBjbGFz
cyBXb3JrZXJDb250ZXh0OwogICAgIGNsYXNzIFhQYXRoUmVzb2x2ZXI7CkBAIC0xNDgsOSArMTQ4
LDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICAgICAgcmV0dXJuIGRvbU5vZGVNYXAu
Z2V0KG5vZGUpOwogICAgICAgICB9CiAgICAgcHJpdmF0ZToKLSAgICAgICAgc3RhdGljIFY4Qmlu
ZGluZ1BlckNvbnRleHREYXRhKiBwZXJDb250ZXh0RGF0YShWOFByb3h5Kik7CisgICAgICAgIHN0
YXRpYyBWOFBlckNvbnRleHREYXRhKiBwZXJDb250ZXh0RGF0YShWOFByb3h5Kik7CiAjaWYgRU5B
QkxFKFdPUktFUlMpCi0gICAgICAgIHN0YXRpYyBWOEJpbmRpbmdQZXJDb250ZXh0RGF0YSogcGVy
Q29udGV4dERhdGEoV29ya2VyQ29udGV4dCopOworICAgICAgICBzdGF0aWMgVjhQZXJDb250ZXh0
RGF0YSogcGVyQ29udGV4dERhdGEoV29ya2VyQ29udGV4dCopOwogI2VuZGlmCiAgICAgfTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhJc29sYXRlZENvbnRleHQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhJc29sYXRlZENvbnRleHQuY3BwCmlu
ZGV4IDZjZjY1NDMyOGZiOGU1OWU4YTIwMjQyYjhkNDI3MDkyMDhlYWEzNGMuLmE2MDAxMzk5NTEy
Y2I0MzZjNjJjNDU0NGYxMmIyYTQzODdiN2MyZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3Y4L1Y4SXNvbGF0ZWRDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy92OC9WOElzb2xhdGVkQ29udGV4dC5jcHAKQEAgLTM2LDggKzM2LDggQEAKICNpbmNs
dWRlICJGcmFtZUxvYWRlckNsaWVudC5oIgogI2luY2x1ZGUgIkluc3BlY3Rvckluc3RydW1lbnRh
dGlvbi5oIgogI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCi0jaW5jbHVkZSAiVjhCaW5kaW5n
UGVyQ29udGV4dERhdGEuaCIKICNpbmNsdWRlICJWOERPTVdpbmRvdy5oIgorI2luY2x1ZGUgIlY4
UGVyQ29udGV4dERhdGEuaCIKICNpbmNsdWRlICJWOFByb3h5LmgiCiAjaW5jbHVkZSA8d3RmL1N0
cmluZ0V4dHJhcy5oPgogCkBAIC04Nyw3ICs4Nyw3IEBAIFY4SXNvbGF0ZWRDb250ZXh0OjpWOElz
b2xhdGVkQ29udGV4dChWOFByb3h5KiBwcm94eSwgaW50IGV4dGVuc2lvbkdyb3VwLCBpbnQgd29y
CiAKICAgICBnZXRHbG9iYWxPYmplY3QobV9jb250ZXh0LT5nZXQoKSktPlNldFBvaW50ZXJJbklu
dGVybmFsRmllbGQoVjhET01XaW5kb3c6OmVudGVyZWRJc29sYXRlZFdvcmxkSW5kZXgsIHRoaXMp
OwogCi0gICAgbV9wZXJDb250ZXh0RGF0YSA9IFY4QmluZGluZ1BlckNvbnRleHREYXRhOjpjcmVh
dGUobV9jb250ZXh0LT5nZXQoKSk7CisgICAgbV9wZXJDb250ZXh0RGF0YSA9IFY4UGVyQ29udGV4
dERhdGE6OmNyZWF0ZShtX2NvbnRleHQtPmdldCgpKTsKICAgICBtX3BlckNvbnRleHREYXRhLT5p
bml0KCk7CiAKICAgICAvLyBGSVhNRTogVGhpcyB3aWxsIGdvIGF3YXkgb25jZSB3ZSBoYXZlIGEg
d2luZG93U2hlbGwgZm9yIHRoZSBpc29sYXRlZCB3b3JsZC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4SXNvbGF0ZWRDb250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy92OC9WOElzb2xhdGVkQ29udGV4dC5oCmluZGV4IDliZmU4YjEwYjZkYzUyOWY5NmI3
MjFjYjBlMjNkNDc3NDAyOGM0MjAuLmVjZDNmNmUyNzBkZjZjYTZiYzBkOGMwZjkwNzZhYjc3ZjA3
ODAzM2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4SXNvbGF0ZWRD
b250ZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhJc29sYXRlZENvbnRl
eHQuaApAQCAtNDAsNyArNDAsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBTZWN1
cml0eU9yaWdpbjsKLWNsYXNzIFY4QmluZGluZ1BlckNvbnRleHREYXRhOworY2xhc3MgVjhQZXJD
b250ZXh0RGF0YTsKIGNsYXNzIFY4UHJveHk7CiAKIC8vIFY4SXNvbGF0ZWRDb250ZXh0CkBAIC05
Nyw3ICs5Nyw3IEBAIHB1YmxpYzoKICAgICBTZWN1cml0eU9yaWdpbiogc2VjdXJpdHlPcmlnaW4o
KSBjb25zdCB7IHJldHVybiBtX3NlY3VyaXR5T3JpZ2luLmdldCgpOyB9CiAgICAgdm9pZCBzZXRT
ZWN1cml0eU9yaWdpbihQYXNzUmVmUHRyPFNlY3VyaXR5T3JpZ2luPik7CiAKLSAgICBWOEJpbmRp
bmdQZXJDb250ZXh0RGF0YSogcGVyQ29udGV4dERhdGEoKSB7IHJldHVybiBtX3BlckNvbnRleHRE
YXRhLmdldCgpOyB9CisgICAgVjhQZXJDb250ZXh0RGF0YSogcGVyQ29udGV4dERhdGEoKSB7IHJl
dHVybiBtX3BlckNvbnRleHREYXRhLmdldCgpOyB9CiAKIHByaXZhdGU6CiAgICAgc3RhdGljIHY4
OjpIYW5kbGU8djg6Ok9iamVjdD4gZ2V0R2xvYmFsT2JqZWN0KHY4OjpIYW5kbGU8djg6OkNvbnRl
eHQ+IGNvbnRleHQpCkBAIC0xMjEsNyArMTIxLDcgQEAgcHJpdmF0ZToKIAogICAgIEZyYW1lKiBt
X2ZyYW1lOwogCi0gICAgT3duUHRyPFY4QmluZGluZ1BlckNvbnRleHREYXRhPiBtX3BlckNvbnRl
eHREYXRhOworICAgIE93blB0cjxWOFBlckNvbnRleHREYXRhPiBtX3BlckNvbnRleHREYXRhOwog
fTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvdjgvVjhQZXJDb250ZXh0RGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy92OC9WOFBlckNvbnRleHREYXRhLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iMmQ3NTBhN2E4YzYxODFmOTI5
OTAxZGU5YTE5MWNiNmZmYjdjYjNkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvdjgvVjhQZXJDb250ZXh0RGF0YS5jcHAKQEAgLTAsMCArMSwxMjkgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlz
dHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3Ig
dGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ug
b3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91
dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwor
ICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9S
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVk
ZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiVjhQZXJDb250ZXh0RGF0YS5oIgorCisjaW5jbHVkZSAi
U2FmZUFsbG9jYXRpb24uaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCit2b2lkIFY4UGVyQ29u
dGV4dERhdGE6OmRpc3Bvc2UoKQoreworICAgIHsKKyAgICAgICAgV3JhcHBlckJvaWxlcnBsYXRl
TWFwOjppdGVyYXRvciBpdCA9IG1fd3JhcHBlckJvaWxlcnBsYXRlcy5iZWdpbigpOworICAgICAg
ICBmb3IgKDsgaXQgIT0gbV93cmFwcGVyQm9pbGVycGxhdGVzLmVuZCgpOyArK2l0KSB7CisgICAg
ICAgICAgICB2ODo6UGVyc2lzdGVudDx2ODo6T2JqZWN0PiB3cmFwcGVyID0gaXQtPnNlY29uZDsK
KyAgICAgICAgICAgIHdyYXBwZXIuRGlzcG9zZSgpOworICAgICAgICB9CisgICAgICAgIG1fd3Jh
cHBlckJvaWxlcnBsYXRlcy5jbGVhcigpOworICAgIH0KKworICAgIHsKKyAgICAgICAgQ29uc3Ry
dWN0b3JNYXA6Oml0ZXJhdG9yIGl0ID0gbV9jb25zdHJ1Y3Rvck1hcC5iZWdpbigpOworICAgICAg
ICBmb3IgKDsgaXQgIT0gbV9jb25zdHJ1Y3Rvck1hcC5lbmQoKTsgKytpdCkgeworICAgICAgICAg
ICAgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uPiB3cmFwcGVyID0gaXQtPnNlY29uZDsKKyAg
ICAgICAgICAgIHdyYXBwZXIuRGlzcG9zZSgpOworICAgICAgICB9CisgICAgICAgIG1fY29uc3Ry
dWN0b3JNYXAuY2xlYXIoKTsKKyAgICB9Cit9CisKKyNkZWZpbmUgVjhfU1RPUkVfUFJJTU9SRElB
TChuYW1lLCBOYW1lKSBcCit7IFwKKyAgICBBU1NFUlQobV8jI25hbWUjI1Byb3RvdHlwZS5nZXQo
KS5Jc0VtcHR5KCkpOyBcCisgICAgdjg6OkhhbmRsZTx2ODo6U3RyaW5nPiBzeW1ib2wgPSB2ODo6
U3RyaW5nOjpOZXdTeW1ib2woI05hbWUpOyBcCisgICAgaWYgKHN5bWJvbC5Jc0VtcHR5KCkpIFwK
KyAgICAgICAgcmV0dXJuIGZhbHNlOyBcCisgICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBvYmpl
Y3QgPSB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+OjpDYXN0KG1fY29udGV4dC0+R2xvYmFsKCktPkdl
dChzeW1ib2wpKTsgXAorICAgIGlmIChvYmplY3QuSXNFbXB0eSgpKSBcCisgICAgICAgIHJldHVy
biBmYWxzZTsgXAorICAgIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBwcm90b3R5cGVWYWx1ZSA9IG9i
amVjdC0+R2V0KHByb3RvdHlwZVN0cmluZyk7IFwKKyAgICBpZiAocHJvdG90eXBlVmFsdWUuSXNF
bXB0eSgpKSBcCisgICAgICAgIHJldHVybiBmYWxzZTsgXAorICAgIG1fIyNuYW1lIyNQcm90b3R5
cGUuc2V0KHByb3RvdHlwZVZhbHVlKTsgXAorfQorCitib29sIFY4UGVyQ29udGV4dERhdGE6Omlu
aXQoKQoreworICAgIHY4OjpIYW5kbGU8djg6OlN0cmluZz4gcHJvdG90eXBlU3RyaW5nID0gdjg6
OlN0cmluZzo6TmV3U3ltYm9sKCJwcm90b3R5cGUiKTsKKyAgICBpZiAocHJvdG90eXBlU3RyaW5n
LklzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgVjhfU1RPUkVfUFJJTU9S
RElBTChlcnJvciwgRXJyb3IpOworICAgIFY4X1NUT1JFX1BSSU1PUkRJQUwob2JqZWN0LCBPYmpl
Y3QpOworCisgICAgcmV0dXJuIHRydWU7Cit9CisKKyN1bmRlZiBWOF9TVE9SRV9QUklNT1JESUFM
CisKK3Y4OjpMb2NhbDx2ODo6T2JqZWN0PiBWOFBlckNvbnRleHREYXRhOjpjcmVhdGVXcmFwcGVy
RnJvbUNhY2hlU2xvd0Nhc2UoV3JhcHBlclR5cGVJbmZvKiB0eXBlKQoreworICAgIEFTU0VSVCgh
bV9lcnJvclByb3RvdHlwZS5nZXQoKS5Jc0VtcHR5KCkpOworICAgIEFTU0VSVCghbV9vYmplY3RQ
cm90b3R5cGUuZ2V0KCkuSXNFbXB0eSgpKTsKKworICAgIHY4OjpDb250ZXh0OjpTY29wZSBzY29w
ZShtX2NvbnRleHQpOworICAgIHY4OjpMb2NhbDx2ODo6RnVuY3Rpb24+IGZ1bmN0aW9uID0gY29u
c3RydWN0b3JGb3JUeXBlKHR5cGUpOworICAgIHY4OjpMb2NhbDx2ODo6T2JqZWN0PiBpbnN0YW5j
ZSA9IFNhZmVBbGxvY2F0aW9uOjpuZXdJbnN0YW5jZShmdW5jdGlvbik7CisgICAgaWYgKCFpbnN0
YW5jZS5Jc0VtcHR5KCkpIHsKKyAgICAgICAgbV93cmFwcGVyQm9pbGVycGxhdGVzLnNldCh0eXBl
LCB2ODo6UGVyc2lzdGVudDx2ODo6T2JqZWN0Pjo6TmV3KGluc3RhbmNlKSk7CisgICAgICAgIHJl
dHVybiBpbnN0YW5jZS0+Q2xvbmUoKTsKKyAgICB9CisgICAgcmV0dXJuIHY4OjpMb2NhbDx2ODo6
T2JqZWN0PigpOworfQorCit2ODo6TG9jYWw8djg6OkZ1bmN0aW9uPiBWOFBlckNvbnRleHREYXRh
Ojpjb25zdHJ1Y3RvckZvclR5cGVTbG93Q2FzZShXcmFwcGVyVHlwZUluZm8qIHR5cGUpCit7Cisg
ICAgQVNTRVJUKCFtX2Vycm9yUHJvdG90eXBlLmdldCgpLklzRW1wdHkoKSk7CisgICAgQVNTRVJU
KCFtX29iamVjdFByb3RvdHlwZS5nZXQoKS5Jc0VtcHR5KCkpOworCisgICAgdjg6OkNvbnRleHQ6
OlNjb3BlIHNjb3BlKG1fY29udGV4dCk7CisgICAgdjg6OkhhbmRsZTx2ODo6RnVuY3Rpb25UZW1w
bGF0ZT4gZnVuY3Rpb25UZW1wbGF0ZSA9IHR5cGUtPmdldFRlbXBsYXRlKCk7CisgICAgLy8gR2V0
dGluZyB0aGUgZnVuY3Rpb24gbWlnaHQgZmFpbCBpZiB3ZSdyZSBydW5uaW5nIG91dCBvZiBzdGFj
ayBvciBtZW1vcnkuCisgICAgdjg6OlRyeUNhdGNoIHRyeUNhdGNoOworICAgIHY4OjpMb2NhbDx2
ODo6RnVuY3Rpb24+IGZ1bmN0aW9uID0gZnVuY3Rpb25UZW1wbGF0ZS0+R2V0RnVuY3Rpb24oKTsK
KyAgICBpZiAoZnVuY3Rpb24uSXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gdjg6OkxvY2FsPHY4
OjpGdW5jdGlvbj4oKTsKKworICAgIGZ1bmN0aW9uLT5TZXRQcm90b3R5cGUobV9vYmplY3RQcm90
b3R5cGUuZ2V0KCkpOworCisgICAgaWYgKHR5cGUtPndyYXBwZXJUeXBlUHJvdG90eXBlID09IFdy
YXBwZXJUeXBlRXJyb3JQcm90b3R5cGUpIHsKKyAgICAgICAgdjg6OkxvY2FsPHY4OjpWYWx1ZT4g
cHJvdG90eXBlVmFsdWUgPSBmdW5jdGlvbi0+R2V0KHY4OjpTdHJpbmc6Ok5ld1N5bWJvbCgicHJv
dG90eXBlIikpOworICAgICAgICBpZiAoIXByb3RvdHlwZVZhbHVlLklzRW1wdHkoKSAmJiBwcm90
b3R5cGVWYWx1ZS0+SXNPYmplY3QoKSkKKyAgICAgICAgICAgIHY4OjpMb2NhbDx2ODo6T2JqZWN0
Pjo6Q2FzdChwcm90b3R5cGVWYWx1ZSktPlNldFByb3RvdHlwZShtX2Vycm9yUHJvdG90eXBlLmdl
dCgpKTsKKyAgICB9CisKKyAgICBtX2NvbnN0cnVjdG9yTWFwLnNldCh0eXBlLCB2ODo6UGVyc2lz
dGVudDx2ODo6RnVuY3Rpb24+OjpOZXcoZnVuY3Rpb24pKTsKKworICAgIHJldHVybiBmdW5jdGlv
bjsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvdjgvVjhQZXJDb250ZXh0RGF0YS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvdjgvVjhQZXJDb250ZXh0RGF0YS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmM4Y2Q2YTVjNmY1YTNlNWU4NTNk
NmFlZmY1YTVhODdiYTg0ZTExNWIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy92OC9WOFBlckNvbnRleHREYXRhLmgKQEAgLTAsMCArMSw5OSBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmli
dXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUg
bmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBw
cm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNw
ZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAi
QVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
CisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgVjhQ
ZXJDb250ZXh0RGF0YV9oCisjZGVmaW5lIFY4UGVyQ29udGV4dERhdGFfaAorCisjaW5jbHVkZSAi
T3duSGFuZGxlLmgiCisjaW5jbHVkZSAiV3JhcHBlclR5cGVJbmZvLmgiCisjaW5jbHVkZSA8djgu
aD4KKyNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgorI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+
CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgVjhQZXJDb250ZXh0RGF0YSB7CitwdWJs
aWM6CisgICAgc3RhdGljIFBhc3NPd25QdHI8VjhQZXJDb250ZXh0RGF0YT4gY3JlYXRlKHY4OjpI
YW5kbGU8djg6OkNvbnRleHQ+IGNvbnRleHQpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRQ
dHIobmV3IFY4UGVyQ29udGV4dERhdGEoY29udGV4dCkpOworICAgIH0KKworICAgIH5WOFBlckNv
bnRleHREYXRhKCkKKyAgICB7CisgICAgICAgIGRpc3Bvc2UoKTsKKyAgICB9CisKKyAgICBib29s
IGluaXQoKTsKKworICAgIC8vIFRvIGNyZWF0ZSBKUyBXcmFwcGVyIG9iamVjdHMsIHdlIGNyZWF0
ZSBhIGNhY2hlIG9mIGEgJ2JvaWxlciBwbGF0ZScKKyAgICAvLyBvYmplY3QsIGFuZCB0aGVuIHNp
bXBseSBDbG9uZSB0aGF0IG9iamVjdCBlYWNoIHRpbWUgd2UgbmVlZCBhIG5ldyBvbmUuCisgICAg
Ly8gVGhpcyBpcyBmYXN0ZXIgdGhhbiBnb2luZyB0aHJvdWdoIHRoZSBmdWxsIG9iamVjdCBjcmVh
dGlvbiBwcm9jZXNzLgorICAgIHY4OjpMb2NhbDx2ODo6T2JqZWN0PiBjcmVhdGVXcmFwcGVyRnJv
bUNhY2hlKFdyYXBwZXJUeXBlSW5mbyogdHlwZSkKKyAgICB7CisgICAgICAgIHY4OjpQZXJzaXN0
ZW50PHY4OjpPYmplY3Q+IGJvaWxlcnBsYXRlID0gbV93cmFwcGVyQm9pbGVycGxhdGVzLmdldCh0
eXBlKTsKKyAgICAgICAgcmV0dXJuICFib2lsZXJwbGF0ZS5Jc0VtcHR5KCkgPyBib2lsZXJwbGF0
ZS0+Q2xvbmUoKSA6IGNyZWF0ZVdyYXBwZXJGcm9tQ2FjaGVTbG93Q2FzZSh0eXBlKTsKKyAgICB9
CisKKyAgICB2ODo6TG9jYWw8djg6OkZ1bmN0aW9uPiBjb25zdHJ1Y3RvckZvclR5cGUoV3JhcHBl
clR5cGVJbmZvKiB0eXBlKQorICAgIHsKKyAgICAgICAgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0
aW9uPiBmdW5jdGlvbiA9IG1fY29uc3RydWN0b3JNYXAuZ2V0KHR5cGUpOworICAgICAgICBpZiAo
IWZ1bmN0aW9uLklzRW1wdHkoKSkKKyAgICAgICAgICAgIHJldHVybiB2ODo6TG9jYWw8djg6OkZ1
bmN0aW9uPjo6TmV3KGZ1bmN0aW9uKTsKKyAgICAgICAgcmV0dXJuIGNvbnN0cnVjdG9yRm9yVHlw
ZVNsb3dDYXNlKHR5cGUpOworICAgIH0KKworcHJpdmF0ZToKKyAgICBleHBsaWNpdCBWOFBlckNv
bnRleHREYXRhKHY4OjpIYW5kbGU8djg6OkNvbnRleHQ+IGNvbnRleHQpCisgICAgICAgIDogbV9j
b250ZXh0KGNvbnRleHQpCisgICAgeworICAgIH0KKworICAgIHZvaWQgZGlzcG9zZSgpOworCisg
ICAgdjg6OkxvY2FsPHY4OjpPYmplY3Q+IGNyZWF0ZVdyYXBwZXJGcm9tQ2FjaGVTbG93Q2FzZShX
cmFwcGVyVHlwZUluZm8qKTsKKyAgICB2ODo6TG9jYWw8djg6OkZ1bmN0aW9uPiBjb25zdHJ1Y3Rv
ckZvclR5cGVTbG93Q2FzZShXcmFwcGVyVHlwZUluZm8qKTsKKworICAgIC8vIEZvciBlYWNoIHBv
c3NpYmxlIHR5cGUgb2Ygd3JhcHBlciwgd2Uga2VlcCBhIGJvaWxlcnBsYXRlIG9iamVjdC4KKyAg
ICAvLyBUaGUgYm9pbGVycGxhdGUgaXMgdXNlZCB0byBjcmVhdGUgYWRkaXRpb25hbCB3cmFwcGVy
cyBvZiB0aGUgc2FtZSB0eXBlLgorICAgIHR5cGVkZWYgV1RGOjpIYXNoTWFwPFdyYXBwZXJUeXBl
SW5mbyosIHY4OjpQZXJzaXN0ZW50PHY4OjpPYmplY3Q+ID4gV3JhcHBlckJvaWxlcnBsYXRlTWFw
OworICAgIFdyYXBwZXJCb2lsZXJwbGF0ZU1hcCBtX3dyYXBwZXJCb2lsZXJwbGF0ZXM7CisKKyAg
ICB0eXBlZGVmIFdURjo6SGFzaE1hcDxXcmFwcGVyVHlwZUluZm8qLCB2ODo6UGVyc2lzdGVudDx2
ODo6RnVuY3Rpb24+ID4gQ29uc3RydWN0b3JNYXA7CisgICAgQ29uc3RydWN0b3JNYXAgbV9jb25z
dHJ1Y3Rvck1hcDsKKworICAgIHY4OjpIYW5kbGU8djg6OkNvbnRleHQ+IG1fY29udGV4dDsKKyAg
ICBPd25IYW5kbGU8djg6OlZhbHVlPiBtX2Vycm9yUHJvdG90eXBlOworICAgIE93bkhhbmRsZTx2
ODo6VmFsdWU+IG1fb2JqZWN0UHJvdG90eXBlOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQorCisjZW5kaWYgLy8gVjhQZXJDb250ZXh0RGF0YV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy92OC9WOFByb3h5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4
L1Y4UHJveHkuY3BwCmluZGV4IDI1MmNiMTgxN2E2OTU2YjJiMDE2ZDE1NTJkYzBmYTVhZTcyZGE0
MDguLjM2ZGYyYmU0NjQ5ZGM5ZDRiZmQyZmFkNzNlMDZkZDdmMzcwMzQxY2QgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4UHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3Y4L1Y4UHJveHkuY3BwCkBAIC00MjgsNyArNDI4LDcgQEAgRnJhbWUqIFY4
UHJveHk6OnJldHJpZXZlRnJhbWUodjg6OkhhbmRsZTx2ODo6Q29udGV4dD4gY29udGV4dCkKICAg
ICByZXR1cm4gMDsKIH0KIAotVjhCaW5kaW5nUGVyQ29udGV4dERhdGEqIFY4UHJveHk6OnJldHJp
ZXZlUGVyQ29udGV4dERhdGEoRnJhbWUqIGZyYW1lKQorVjhQZXJDb250ZXh0RGF0YSogVjhQcm94
eTo6cmV0cmlldmVQZXJDb250ZXh0RGF0YShGcmFtZSogZnJhbWUpCiB7CiAgICAgVjhJc29sYXRl
ZENvbnRleHQqIGlzb2xhdGVkQ29udGV4dDsKICAgICBpZiAoVU5MSUtFTFkoISEoaXNvbGF0ZWRD
b250ZXh0ID0gVjhJc29sYXRlZENvbnRleHQ6OmdldEVudGVyZWQoKSkpKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhQcm94eS5oIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvdjgvVjhQcm94eS5oCmluZGV4IGQ0OTA1YWRhMWE4MGM1N2I1MmJkYTMyOGRiMGM4M2Rh
NDg2OWVhYTUuLjZlMDhhMTk3OGY2YjU2MTM5MWY5NzZmYzY3M2MyZWUxYTc1YjdhYmYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4UHJveHkuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy92OC9WOFByb3h5LmgKQEAgLTYyLDcgKzYyLDcgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogICAgIGNsYXNzIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7CiAgICAgY2xhc3Mg
U2NyaXB0U291cmNlQ29kZTsKICAgICBjbGFzcyBTZWN1cml0eU9yaWdpbjsKLSAgICBjbGFzcyBW
OEJpbmRpbmdQZXJDb250ZXh0RGF0YTsKKyAgICBjbGFzcyBWOFBlckNvbnRleHREYXRhOwogICAg
IGNsYXNzIFY4RXZlbnRMaXN0ZW5lcjsKICAgICBjbGFzcyBWOElzb2xhdGVkQ29udGV4dDsKICAg
ICBjbGFzcyBXb3JsZENvbnRleHRIYW5kbGU7CkBAIC0xMzQsNyArMTM0LDcgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogICAgICAgICAvLyBhIGNvbnRleHQuCiAgICAgICAgIHN0YXRpYyBGcmFtZSog
cmV0cmlldmVGcmFtZSh2ODo6SGFuZGxlPHY4OjpDb250ZXh0Pik7CiAKLSAgICAgICAgc3RhdGlj
IFY4QmluZGluZ1BlckNvbnRleHREYXRhKiByZXRyaWV2ZVBlckNvbnRleHREYXRhKEZyYW1lKik7
CisgICAgICAgIHN0YXRpYyBWOFBlckNvbnRleHREYXRhKiByZXRyaWV2ZVBlckNvbnRleHREYXRh
KEZyYW1lKik7CiAKICAgICAgICAgLy8gUmV0dXJucyBWOCBDb250ZXh0IG9mIGEgZnJhbWUuIElm
IG5vbmUgZXhpc3RzLCBjcmVhdGVzCiAgICAgICAgIC8vIGEgbmV3IGNvbnRleHQuIEl0IGlzIHBv
dGVudGlhbGx5IHNsb3cgYW5kIGNvbnN1bWVzIG1lbW9yeS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3Y4L1dvcmtlckNvbnRleHRFeGVjdXRpb25Qcm94eS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy92OC9Xb3JrZXJDb250ZXh0RXhlY3V0aW9uUHJveHkuY3BwCmlu
ZGV4IDgwZmI3ZDZkNjgxNmUzZDMzYjBkMzhlNjJkYjM1MjRlOWZhOGY5ZTUuLmVlYzdlMmUxYjJh
ZjUzYjI0MDNjNTFiYWEzZGFjODExMjNmNmYyNDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3Y4L1dvcmtlckNvbnRleHRFeGVjdXRpb25Qcm94eS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvdjgvV29ya2VyQ29udGV4dEV4ZWN1dGlvblByb3h5LmNwcApAQCAt
NDIsMTAgKzQyLDEwIEBACiAjaW5jbHVkZSAiU2hhcmVkV29ya2VyLmgiCiAjaW5jbHVkZSAiU2hh
cmVkV29ya2VyQ29udGV4dC5oIgogI2luY2x1ZGUgIlY4QmluZGluZy5oIgotI2luY2x1ZGUgIlY4
QmluZGluZ1BlckNvbnRleHREYXRhLmgiCiAjaW5jbHVkZSAiVjhET01NYXAuaCIKICNpbmNsdWRl
ICJWOERPTVdpbmRvd1NoZWxsLmgiCiAjaW5jbHVkZSAiVjhEZWRpY2F0ZWRXb3JrZXJDb250ZXh0
LmgiCisjaW5jbHVkZSAiVjhQZXJDb250ZXh0RGF0YS5oIgogI2luY2x1ZGUgIlY4UHJveHkuaCIK
ICNpbmNsdWRlICJWOFJlY3Vyc2lvblNjb3BlLmgiCiAjaW5jbHVkZSAiVjhTaGFyZWRXb3JrZXJD
b250ZXh0LmgiCkBAIC0xNTMsNyArMTUzLDcgQEAgYm9vbCBXb3JrZXJDb250ZXh0RXhlY3V0aW9u
UHJveHk6OmluaXRDb250ZXh0SWZOZWVkZWQoKQogCiAgICAgdjg6OkNvbnRleHQ6OlNjb3BlIHNj
b3BlKGNvbnRleHQpOwogCi0gICAgbV9wZXJDb250ZXh0RGF0YSA9IFY4QmluZGluZ1BlckNvbnRl
eHREYXRhOjpjcmVhdGUobV9jb250ZXh0KTsKKyAgICBtX3BlckNvbnRleHREYXRhID0gVjhQZXJD
b250ZXh0RGF0YTo6Y3JlYXRlKG1fY29udGV4dCk7CiAgICAgaWYgKCFtX3BlckNvbnRleHREYXRh
LT5pbml0KCkpIHsKICAgICAgICAgZGlzcG9zZSgpOwogICAgICAgICByZXR1cm4gZmFsc2U7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9Xb3JrZXJDb250ZXh0RXhlY3V0
aW9uUHJveHkuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1dvcmtlckNvbnRleHRFeGVj
dXRpb25Qcm94eS5oCmluZGV4IDBkZjVhM2FlNzJjMWFiMjRhYzRlMzUzYzEyMGEzMzQyODQzYjky
OTYuLjViYzI4MTI4Y2RkNmNiYjI2Yzk3NDUxZDg1YjMyM2NjZDIwYTExMDAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1dvcmtlckNvbnRleHRFeGVjdXRpb25Qcm94eS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1dvcmtlckNvbnRleHRFeGVjdXRpb25Q
cm94eS5oCkBAIC00NCw3ICs0NCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgIGNsYXNz
IEV2ZW50OwogICAgIGNsYXNzIEV2ZW50VGFyZ2V0OwotICAgIGNsYXNzIFY4QmluZGluZ1BlckNv
bnRleHREYXRhOworICAgIGNsYXNzIFY4UGVyQ29udGV4dERhdGE7CiAgICAgY2xhc3MgV29ya2Vy
Q29udGV4dDsKICAgICBzdHJ1Y3QgV3JhcHBlclR5cGVJbmZvOwogCkBAIC03NCw3ICs3NCw3IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgLy8gUmV0dXJucyBhIGxvY2FsIGhhbmRsZSBv
ZiB0aGUgY29udGV4dC4KICAgICAgICAgdjg6OkxvY2FsPHY4OjpDb250ZXh0PiBjb250ZXh0KCkg
eyByZXR1cm4gdjg6OkxvY2FsPHY4OjpDb250ZXh0Pjo6TmV3KG1fY29udGV4dCk7IH0KIAotICAg
ICAgICBWOEJpbmRpbmdQZXJDb250ZXh0RGF0YSogcGVyQ29udGV4dERhdGEoKSB7IHJldHVybiBt
X3BlckNvbnRleHREYXRhLmdldCgpOyB9CisgICAgICAgIFY4UGVyQ29udGV4dERhdGEqIHBlckNv
bnRleHREYXRhKCkgeyByZXR1cm4gbV9wZXJDb250ZXh0RGF0YS5nZXQoKTsgfQogCiAgICAgcHJp
dmF0ZToKICAgICAgICAgdm9pZCBpbml0SXNvbGF0ZSgpOwpAQCAtOTMsNyArOTMsNyBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKICAgICAgICAgVmVjdG9yPEV2ZW50Kj4gbV9ldmVudHM7CiAKLSAg
ICAgICAgT3duUHRyPFY4QmluZGluZ1BlckNvbnRleHREYXRhPiBtX3BlckNvbnRleHREYXRhOwor
ICAgICAgICBPd25QdHI8VjhQZXJDb250ZXh0RGF0YT4gbV9wZXJDb250ZXh0RGF0YTsKICAgICB9
OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>157578</attachid>
            <date>2012-08-09 16:44:06 -0700</date>
            <delta_ts>2012-08-09 17:55:11 -0700</delta_ts>
            <desc>patch for landing</desc>
            <filename>bug-93595-20120810084338.patch</filename>
            <type>text/plain</type>
            <size>34616</size>
            <attacher name="Kentaro Hara">haraken</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI1MTU3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggN2UwYjg5NmY0MjRlNGY3
OGFkOTVhNDA1ZTFiMmVhZjY3ZGM3ZGJlNy4uYjNmZTg0MzNjMjFiZTI2ODllNTU1ZjVlYTIwM2Fm
MGEwMTM5N2IxOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYxIEBACisyMDEyLTA4LTA5ICBLZW50
YXJvIEhhcmEgIDxoYXJha2VuQGNocm9taXVtLm9yZz4KKworICAgICAgICBbVjhdIFJlbmFtZSBW
OEJpbmRpbmdQZXJDb250ZXh0RGF0YSB0byBWOFBlckNvbnRleHREYXRhCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05MzU5NQorCisgICAgICAgIFJldmll
d2VkIGJ5IEFkYW0gQmFydGguCisKKyAgICAgICAgRm9yIGEgYmV0dGVyIG5hbWUuIFNlZSBkaXNj
dXNzaW9uIGluIGJ1ZyA5MzMzMy4KKworICAgICAgICBObyB0ZXN0cy4gTm8gY2hhbmdlIGluIGJl
aGF2aW9yLgorCisgICAgICAgICogVXNlVjguY21ha2U6IEFkZGVkIFY4UGVyQ29udGV4dERhdGEu
Y3BwLiBUaGUgZmFjdCB0aGF0IG1pc3NpbmcgVjhCaW5kaW5nUGVyQ29udGV4dERhdGEuY3BwCisg
ICAgICAgIGhhcyBub3QgY2F1c2VkIGFueSBwcm9ibGVtIGluZGljYXRlcyB0aGF0IFVzZVY4LmNt
YWtlIGlzIG5vdCB1c2VkIGF0IGFsbD8KKyAgICAgICAgKiBXZWJDb3JlLmd5cGk6CisgICAgICAg
ICogYmluZGluZ3MvdjgvVjhET01XaW5kb3dTaGVsbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpW
OERPTVdpbmRvd1NoZWxsOjppbml0Q29udGV4dElmTmVlZGVkKToKKyAgICAgICAgKiBiaW5kaW5n
cy92OC9WOERPTVdpbmRvd1NoZWxsLmg6CisgICAgICAgIChXZWJDb3JlOjpWOERPTVdpbmRvd1No
ZWxsOjpwZXJDb250ZXh0RGF0YSk6CisgICAgICAgIChWOERPTVdpbmRvd1NoZWxsKToKKyAgICAg
ICAgKiBiaW5kaW5ncy92OC9WOERPTVdyYXBwZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VjhE
T01XcmFwcGVyOjpjb25zdHJ1Y3RvckZvclR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6VjhET01X
cmFwcGVyOjpwZXJDb250ZXh0RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpWOERPTVdyYXBwZXI6
Omluc3RhbnRpYXRlVjhPYmplY3QpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1Y4RE9NV3JhcHBl
ci5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChWOERPTVdyYXBwZXIpOgorICAgICAg
ICAqIGJpbmRpbmdzL3Y4L1Y4SXNvbGF0ZWRDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlY4SXNvbGF0ZWRDb250ZXh0OjpWOElzb2xhdGVkQ29udGV4dCk6CisgICAgICAgICogYmluZGlu
Z3MvdjgvVjhJc29sYXRlZENvbnRleHQuaDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAo
V2ViQ29yZTo6VjhJc29sYXRlZENvbnRleHQ6OnBlckNvbnRleHREYXRhKToKKyAgICAgICAgKFY4
SXNvbGF0ZWRDb250ZXh0KToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9WOFBlckNvbnRleHREYXRh
LmNwcDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4QmluZGluZ1Bl
ckNvbnRleHREYXRhLmNwcC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6
VjhQZXJDb250ZXh0RGF0YTo6ZGlzcG9zZSk6CisgICAgICAgIChXZWJDb3JlOjpWOFBlckNvbnRl
eHREYXRhOjppbml0KToKKyAgICAgICAgKFdlYkNvcmU6OlY4UGVyQ29udGV4dERhdGE6OmNyZWF0
ZVdyYXBwZXJGcm9tQ2FjaGVTbG93Q2FzZSk6CisgICAgICAgIChXZWJDb3JlOjpWOFBlckNvbnRl
eHREYXRhOjpjb25zdHJ1Y3RvckZvclR5cGVTbG93Q2FzZSk6CisgICAgICAgICogYmluZGluZ3Mv
djgvVjhQZXJDb250ZXh0RGF0YS5oOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvdjgvVjhCaW5kaW5nUGVyQ29udGV4dERhdGEuaC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAg
ICAgICAoVjhQZXJDb250ZXh0RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpWOFBlckNvbnRleHRE
YXRhOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6VjhQZXJDb250ZXh0RGF0YTo6flY4UGVy
Q29udGV4dERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6VjhQZXJDb250ZXh0RGF0YTo6Y3JlYXRl
V3JhcHBlckZyb21DYWNoZSk6CisgICAgICAgIChXZWJDb3JlOjpWOFBlckNvbnRleHREYXRhOjpj
b25zdHJ1Y3RvckZvclR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6VjhQZXJDb250ZXh0RGF0YTo6
VjhQZXJDb250ZXh0RGF0YSk6CisgICAgICAgICogYmluZGluZ3MvdjgvVjhQcm94eS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpWOFByb3h5OjpyZXRyaWV2ZVBlckNvbnRleHREYXRhKToKKyAgICAg
ICAgKiBiaW5kaW5ncy92OC9WOFByb3h5Lmg6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAg
KFY4UHJveHkpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1dvcmtlckNvbnRleHRFeGVjdXRpb25Q
cm94eS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJDb250ZXh0RXhlY3V0aW9uUHJveHk6
OmluaXRDb250ZXh0SWZOZWVkZWQpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1dvcmtlckNvbnRl
eHRFeGVjdXRpb25Qcm94eS5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3Jl
OjpXb3JrZXJDb250ZXh0RXhlY3V0aW9uUHJveHk6OnBlckNvbnRleHREYXRhKToKKyAgICAgICAg
KFdvcmtlckNvbnRleHRFeGVjdXRpb25Qcm94eSk6CisKIDIwMTItMDgtMDkgIEFya28gU2FoYSAg
PGFya29AbW90b3JvbGEuY29tPgogCiAgICAgICAgIE1pY3JvZGF0YTogSFRNTFByb3BlcnRpZXND
b2xsZWN0aW9uIGRvZXMgbm90IGNvbnRhaW4gYWxsIHByb3BlcnRpZXMgd2hlbiBpdGVtIGlzIG5v
dCBhdHRhY2hlZCB0byB0aGUgRE9NIHRyZWUuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9V
c2VWOC5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL1VzZVY4LmNtYWtlCmluZGV4IDhkYWU5M2FjYjRi
Njg0NWZmYTRmMWY0NGM3ZWQzYTFmNmNlZGZmYzcuLjUzOGJlNmEyN2U1YjYyZmE4MjgzNzQ4ZGNk
MzQ2NTNlYjVhYmVhOGYgMTAwNzU1Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1VzZVY4LmNtYWtlCisr
KyBiL1NvdXJjZS9XZWJDb3JlL1VzZVY4LmNtYWtlCkBAIC02MSw2ICs2MSw3IEBAIExJU1QoQVBQ
RU5EIFdlYkNvcmVfU09VUkNFUwogICAgIGJpbmRpbmdzL3Y4L1Y4SXNvbGF0ZWRDb250ZXh0LmNw
cAogICAgIGJpbmRpbmdzL3Y4L1Y4TGF6eUV2ZW50TGlzdGVuZXIuY3BwCiAgICAgYmluZGluZ3Mv
djgvVjhOb2RlRmlsdGVyQ29uZGl0aW9uLmNwcAorICAgIGJpbmRpbmdzL3Y4L1Y4UGVyQ29udGV4
dERhdGEuY3BwCiAgICAgYmluZGluZ3MvdjgvVjhQcm94eS5jcHAKICAgICBiaW5kaW5ncy92OC9W
OFJlY3Vyc2lvblNjb3BlLmNwcAogICAgIGJpbmRpbmdzL3Y4L1Y4VXRpbGl0aWVzLmNwcApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpIGIvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS5neXBpCmluZGV4IGE2MmJhOGI2NWFhN2I2NTdkZjkwNzJkNjdiNjA5Y2MxZDRkZTA1YjAu
LjA3MjZlZGQ4MGYzZDA0MjY2MWZmNDBlMWMxYTRiZWQyZDc2M2QxYzYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5
cGkKQEAgLTIyNDUsOCArMjI0NSw2IEBACiAgICAgICAgICAgICAnYmluZGluZ3MvdjgvVjhCaW5k
aW5nSGVscGVycy5jcHAnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L1Y4QmluZGluZ0hlbHBl
cnMuaCcsCiAgICAgICAgICAgICAnYmluZGluZ3MvdjgvVjhCaW5kaW5nTWFjcm9zLmgnLAotICAg
ICAgICAgICAgJ2JpbmRpbmdzL3Y4L1Y4QmluZGluZ1BlckNvbnRleHREYXRhLmNwcCcsCi0gICAg
ICAgICAgICAnYmluZGluZ3MvdjgvVjhCaW5kaW5nUGVyQ29udGV4dERhdGEuaCcsCiAgICAgICAg
ICAgICAnYmluZGluZ3MvdjgvVjhCaW5kaW5nUGVySXNvbGF0ZURhdGEuY3BwJywKICAgICAgICAg
ICAgICdiaW5kaW5ncy92OC9WOEJpbmRpbmdQZXJJc29sYXRlRGF0YS5oJywKICAgICAgICAgICAg
ICdiaW5kaW5ncy92OC9WOENvbmZpZ3VyZURPTUF0dHJpYnV0ZXNBbmRNZXRob2RzLmNwcCcsCkBA
IC0yMjc5LDYgKzIyNzcsOCBAQAogICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L1Y4TlBVdGlscy5o
JywKICAgICAgICAgICAgICdiaW5kaW5ncy92OC9WOE5vZGVGaWx0ZXJDb25kaXRpb24uY3BwJywK
ICAgICAgICAgICAgICdiaW5kaW5ncy92OC9WOE5vZGVGaWx0ZXJDb25kaXRpb24uaCcsCisgICAg
ICAgICAgICAnYmluZGluZ3MvdjgvVjhQZXJDb250ZXh0RGF0YS5jcHAnLAorICAgICAgICAgICAg
J2JpbmRpbmdzL3Y4L1Y4UGVyQ29udGV4dERhdGEuaCcsCiAgICAgICAgICAgICAnYmluZGluZ3Mv
djgvVjhQcm94eS5jcHAnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L1Y4UHJveHkuaCcsCiAg
ICAgICAgICAgICAnYmluZGluZ3MvdjgvVjhSZWN1cnNpb25TY29wZS5jcHAnLApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhCaW5kaW5nUGVyQ29udGV4dERhdGEuY3Bw
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhCaW5kaW5nUGVyQ29udGV4dERhdGEuY3Bw
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmODEzZjJlMmE5ODY5OTAyOGY2ZTMwZWJl
ZWEwM2E3OTk3YTRkZWZiLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4QmluZGluZ1BlckNvbnRleHREYXRh
LmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDEyOSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChD
KSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMgYXJlCi0gKiBtZXQ6Ci0gKgotICogICAgICogUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
LSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUKLSAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSAqIGRpc3RyaWJ1dGlvbi4KLSAq
ICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBp
dHMKLSAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJv
ZHVjdHMgZGVyaXZlZCBmcm9tCi0gKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJp
b3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSAqICJBUyBJUyIgQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0g
KiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IKLSAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0gKiBPV05FUiBPUiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSAqIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QKLSAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLAotICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0gKiBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgot
I2luY2x1ZGUgIlY4QmluZGluZ1BlckNvbnRleHREYXRhLmgiCi0KLSNpbmNsdWRlICJTYWZlQWxs
b2NhdGlvbi5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLXZvaWQgVjhCaW5kaW5nUGVyQ29u
dGV4dERhdGE6OmRpc3Bvc2UoKQotewotICAgIHsKLSAgICAgICAgV3JhcHBlckJvaWxlcnBsYXRl
TWFwOjppdGVyYXRvciBpdCA9IG1fd3JhcHBlckJvaWxlcnBsYXRlcy5iZWdpbigpOwotICAgICAg
ICBmb3IgKDsgaXQgIT0gbV93cmFwcGVyQm9pbGVycGxhdGVzLmVuZCgpOyArK2l0KSB7Ci0gICAg
ICAgICAgICB2ODo6UGVyc2lzdGVudDx2ODo6T2JqZWN0PiB3cmFwcGVyID0gaXQtPnNlY29uZDsK
LSAgICAgICAgICAgIHdyYXBwZXIuRGlzcG9zZSgpOwotICAgICAgICB9Ci0gICAgICAgIG1fd3Jh
cHBlckJvaWxlcnBsYXRlcy5jbGVhcigpOwotICAgIH0KLQotICAgIHsKLSAgICAgICAgQ29uc3Ry
dWN0b3JNYXA6Oml0ZXJhdG9yIGl0ID0gbV9jb25zdHJ1Y3Rvck1hcC5iZWdpbigpOwotICAgICAg
ICBmb3IgKDsgaXQgIT0gbV9jb25zdHJ1Y3Rvck1hcC5lbmQoKTsgKytpdCkgewotICAgICAgICAg
ICAgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uPiB3cmFwcGVyID0gaXQtPnNlY29uZDsKLSAg
ICAgICAgICAgIHdyYXBwZXIuRGlzcG9zZSgpOwotICAgICAgICB9Ci0gICAgICAgIG1fY29uc3Ry
dWN0b3JNYXAuY2xlYXIoKTsKLSAgICB9Ci19Ci0KLSNkZWZpbmUgVjhfU1RPUkVfUFJJTU9SRElB
TChuYW1lLCBOYW1lKSBcCi17IFwKLSAgICBBU1NFUlQobV8jI25hbWUjI1Byb3RvdHlwZS5nZXQo
KS5Jc0VtcHR5KCkpOyBcCi0gICAgdjg6OkhhbmRsZTx2ODo6U3RyaW5nPiBzeW1ib2wgPSB2ODo6
U3RyaW5nOjpOZXdTeW1ib2woI05hbWUpOyBcCi0gICAgaWYgKHN5bWJvbC5Jc0VtcHR5KCkpIFwK
LSAgICAgICAgcmV0dXJuIGZhbHNlOyBcCi0gICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBvYmpl
Y3QgPSB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+OjpDYXN0KG1fY29udGV4dC0+R2xvYmFsKCktPkdl
dChzeW1ib2wpKTsgXAotICAgIGlmIChvYmplY3QuSXNFbXB0eSgpKSBcCi0gICAgICAgIHJldHVy
biBmYWxzZTsgXAotICAgIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBwcm90b3R5cGVWYWx1ZSA9IG9i
amVjdC0+R2V0KHByb3RvdHlwZVN0cmluZyk7IFwKLSAgICBpZiAocHJvdG90eXBlVmFsdWUuSXNF
bXB0eSgpKSBcCi0gICAgICAgIHJldHVybiBmYWxzZTsgXAotICAgIG1fIyNuYW1lIyNQcm90b3R5
cGUuc2V0KHByb3RvdHlwZVZhbHVlKTsgXAotfQotCi1ib29sIFY4QmluZGluZ1BlckNvbnRleHRE
YXRhOjppbml0KCkKLXsKLSAgICB2ODo6SGFuZGxlPHY4OjpTdHJpbmc+IHByb3RvdHlwZVN0cmlu
ZyA9IHY4OjpTdHJpbmc6Ok5ld1N5bWJvbCgicHJvdG90eXBlIik7Ci0gICAgaWYgKHByb3RvdHlw
ZVN0cmluZy5Jc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIFY4X1NUT1JF
X1BSSU1PUkRJQUwoZXJyb3IsIEVycm9yKTsKLSAgICBWOF9TVE9SRV9QUklNT1JESUFMKG9iamVj
dCwgT2JqZWN0KTsKLQotICAgIHJldHVybiB0cnVlOwotfQotCi0jdW5kZWYgVjhfU1RPUkVfUFJJ
TU9SRElBTAotCi12ODo6TG9jYWw8djg6Ok9iamVjdD4gVjhCaW5kaW5nUGVyQ29udGV4dERhdGE6
OmNyZWF0ZVdyYXBwZXJGcm9tQ2FjaGVTbG93Q2FzZShXcmFwcGVyVHlwZUluZm8qIHR5cGUpCi17
Ci0gICAgQVNTRVJUKCFtX2Vycm9yUHJvdG90eXBlLmdldCgpLklzRW1wdHkoKSk7Ci0gICAgQVNT
RVJUKCFtX29iamVjdFByb3RvdHlwZS5nZXQoKS5Jc0VtcHR5KCkpOwotCi0gICAgdjg6OkNvbnRl
eHQ6OlNjb3BlIHNjb3BlKG1fY29udGV4dCk7Ci0gICAgdjg6OkxvY2FsPHY4OjpGdW5jdGlvbj4g
ZnVuY3Rpb24gPSBjb25zdHJ1Y3RvckZvclR5cGUodHlwZSk7Ci0gICAgdjg6OkxvY2FsPHY4OjpP
YmplY3Q+IGluc3RhbmNlID0gU2FmZUFsbG9jYXRpb246Om5ld0luc3RhbmNlKGZ1bmN0aW9uKTsK
LSAgICBpZiAoIWluc3RhbmNlLklzRW1wdHkoKSkgewotICAgICAgICBtX3dyYXBwZXJCb2lsZXJw
bGF0ZXMuc2V0KHR5cGUsIHY4OjpQZXJzaXN0ZW50PHY4OjpPYmplY3Q+OjpOZXcoaW5zdGFuY2Up
KTsKLSAgICAgICAgcmV0dXJuIGluc3RhbmNlLT5DbG9uZSgpOwotICAgIH0KLSAgICByZXR1cm4g
djg6OkxvY2FsPHY4OjpPYmplY3Q+KCk7Ci19Ci0KLXY4OjpMb2NhbDx2ODo6RnVuY3Rpb24+IFY4
QmluZGluZ1BlckNvbnRleHREYXRhOjpjb25zdHJ1Y3RvckZvclR5cGVTbG93Q2FzZShXcmFwcGVy
VHlwZUluZm8qIHR5cGUpCi17Ci0gICAgQVNTRVJUKCFtX2Vycm9yUHJvdG90eXBlLmdldCgpLklz
RW1wdHkoKSk7Ci0gICAgQVNTRVJUKCFtX29iamVjdFByb3RvdHlwZS5nZXQoKS5Jc0VtcHR5KCkp
OwotCi0gICAgdjg6OkNvbnRleHQ6OlNjb3BlIHNjb3BlKG1fY29udGV4dCk7Ci0gICAgdjg6Okhh
bmRsZTx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gZnVuY3Rpb25UZW1wbGF0ZSA9IHR5cGUtPmdldFRl
bXBsYXRlKCk7Ci0gICAgLy8gR2V0dGluZyB0aGUgZnVuY3Rpb24gbWlnaHQgZmFpbCBpZiB3ZSdy
ZSBydW5uaW5nIG91dCBvZiBzdGFjayBvciBtZW1vcnkuCi0gICAgdjg6OlRyeUNhdGNoIHRyeUNh
dGNoOwotICAgIHY4OjpMb2NhbDx2ODo6RnVuY3Rpb24+IGZ1bmN0aW9uID0gZnVuY3Rpb25UZW1w
bGF0ZS0+R2V0RnVuY3Rpb24oKTsKLSAgICBpZiAoZnVuY3Rpb24uSXNFbXB0eSgpKQotICAgICAg
ICByZXR1cm4gdjg6OkxvY2FsPHY4OjpGdW5jdGlvbj4oKTsKLQotICAgIGZ1bmN0aW9uLT5TZXRQ
cm90b3R5cGUobV9vYmplY3RQcm90b3R5cGUuZ2V0KCkpOwotCi0gICAgaWYgKHR5cGUtPndyYXBw
ZXJUeXBlUHJvdG90eXBlID09IFdyYXBwZXJUeXBlRXJyb3JQcm90b3R5cGUpIHsKLSAgICAgICAg
djg6OkxvY2FsPHY4OjpWYWx1ZT4gcHJvdG90eXBlVmFsdWUgPSBmdW5jdGlvbi0+R2V0KHY4OjpT
dHJpbmc6Ok5ld1N5bWJvbCgicHJvdG90eXBlIikpOwotICAgICAgICBpZiAoIXByb3RvdHlwZVZh
bHVlLklzRW1wdHkoKSAmJiBwcm90b3R5cGVWYWx1ZS0+SXNPYmplY3QoKSkKLSAgICAgICAgICAg
IHY4OjpMb2NhbDx2ODo6T2JqZWN0Pjo6Q2FzdChwcm90b3R5cGVWYWx1ZSktPlNldFByb3RvdHlw
ZShtX2Vycm9yUHJvdG90eXBlLmdldCgpKTsKLSAgICB9Ci0KLSAgICBtX2NvbnN0cnVjdG9yTWFw
LnNldCh0eXBlLCB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb24+OjpOZXcoZnVuY3Rpb24pKTsK
LQotICAgIHJldHVybiBmdW5jdGlvbjsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhCaW5kaW5nUGVyQ29udGV4dERh
dGEuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4QmluZGluZ1BlckNvbnRleHREYXRh
LmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDVlOTM1NGIxMmZlODJjYWM4YTY1NzVj
YWQzMzBjMjBjNmQ4ZDU0YWUuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhCaW5kaW5nUGVyQ29udGV4dERh
dGEuaAorKysgL2Rldi9udWxsCkBAIC0xLDk5ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
LSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucyBhcmUKLSAqIG1ldDoKLSAqCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgot
ICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZQotICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotICogZGlzdHJpYnV0aW9uLgotICog
ICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0
cwotICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9k
dWN0cyBkZXJpdmVkIGZyb20KLSAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlv
ciB3cml0dGVuIHBlcm1pc3Npb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotICogIkFTIElTIiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSAq
IExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUgotICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotICogU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VAotICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsCi0gKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSAqIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWZuZGVmIFY4QmluZGluZ1BlckNv
bnRleHREYXRhX2gKLSNkZWZpbmUgVjhCaW5kaW5nUGVyQ29udGV4dERhdGFfaAotCi0jaW5jbHVk
ZSAiT3duSGFuZGxlLmgiCi0jaW5jbHVkZSAiV3JhcHBlclR5cGVJbmZvLmgiCi0jaW5jbHVkZSA8
djguaD4KLSNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgotI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRy
Lmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgVjhCaW5kaW5nUGVyQ29udGV4dERh
dGEgewotcHVibGljOgotICAgIHN0YXRpYyBQYXNzT3duUHRyPFY4QmluZGluZ1BlckNvbnRleHRE
YXRhPiBjcmVhdGUodjg6OkhhbmRsZTx2ODo6Q29udGV4dD4gY29udGV4dCkKLSAgICB7Ci0gICAg
ICAgIHJldHVybiBhZG9wdFB0cihuZXcgVjhCaW5kaW5nUGVyQ29udGV4dERhdGEoY29udGV4dCkp
OwotICAgIH0KLQotICAgIH5WOEJpbmRpbmdQZXJDb250ZXh0RGF0YSgpCi0gICAgewotICAgICAg
ICBkaXNwb3NlKCk7Ci0gICAgfQotCi0gICAgYm9vbCBpbml0KCk7Ci0KLSAgICAvLyBUbyBjcmVh
dGUgSlMgV3JhcHBlciBvYmplY3RzLCB3ZSBjcmVhdGUgYSBjYWNoZSBvZiBhICdib2lsZXIgcGxh
dGUnCi0gICAgLy8gb2JqZWN0LCBhbmQgdGhlbiBzaW1wbHkgQ2xvbmUgdGhhdCBvYmplY3QgZWFj
aCB0aW1lIHdlIG5lZWQgYSBuZXcgb25lLgotICAgIC8vIFRoaXMgaXMgZmFzdGVyIHRoYW4gZ29p
bmcgdGhyb3VnaCB0aGUgZnVsbCBvYmplY3QgY3JlYXRpb24gcHJvY2Vzcy4KLSAgICB2ODo6TG9j
YWw8djg6Ok9iamVjdD4gY3JlYXRlV3JhcHBlckZyb21DYWNoZShXcmFwcGVyVHlwZUluZm8qIHR5
cGUpCi0gICAgewotICAgICAgICB2ODo6UGVyc2lzdGVudDx2ODo6T2JqZWN0PiBib2lsZXJwbGF0
ZSA9IG1fd3JhcHBlckJvaWxlcnBsYXRlcy5nZXQodHlwZSk7Ci0gICAgICAgIHJldHVybiAhYm9p
bGVycGxhdGUuSXNFbXB0eSgpID8gYm9pbGVycGxhdGUtPkNsb25lKCkgOiBjcmVhdGVXcmFwcGVy
RnJvbUNhY2hlU2xvd0Nhc2UodHlwZSk7Ci0gICAgfQotCi0gICAgdjg6OkxvY2FsPHY4OjpGdW5j
dGlvbj4gY29uc3RydWN0b3JGb3JUeXBlKFdyYXBwZXJUeXBlSW5mbyogdHlwZSkKLSAgICB7Ci0g
ICAgICAgIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvbj4gZnVuY3Rpb24gPSBtX2NvbnN0cnVj
dG9yTWFwLmdldCh0eXBlKTsKLSAgICAgICAgaWYgKCFmdW5jdGlvbi5Jc0VtcHR5KCkpCi0gICAg
ICAgICAgICByZXR1cm4gdjg6OkxvY2FsPHY4OjpGdW5jdGlvbj46Ok5ldyhmdW5jdGlvbik7Ci0g
ICAgICAgIHJldHVybiBjb25zdHJ1Y3RvckZvclR5cGVTbG93Q2FzZSh0eXBlKTsKLSAgICB9Ci0K
LXByaXZhdGU6Ci0gICAgZXhwbGljaXQgVjhCaW5kaW5nUGVyQ29udGV4dERhdGEodjg6OkhhbmRs
ZTx2ODo6Q29udGV4dD4gY29udGV4dCkKLSAgICAgICAgOiBtX2NvbnRleHQoY29udGV4dCkKLSAg
ICB7Ci0gICAgfQotCi0gICAgdm9pZCBkaXNwb3NlKCk7Ci0KLSAgICB2ODo6TG9jYWw8djg6Ok9i
amVjdD4gY3JlYXRlV3JhcHBlckZyb21DYWNoZVNsb3dDYXNlKFdyYXBwZXJUeXBlSW5mbyopOwot
ICAgIHY4OjpMb2NhbDx2ODo6RnVuY3Rpb24+IGNvbnN0cnVjdG9yRm9yVHlwZVNsb3dDYXNlKFdy
YXBwZXJUeXBlSW5mbyopOwotCi0gICAgLy8gRm9yIGVhY2ggcG9zc2libGUgdHlwZSBvZiB3cmFw
cGVyLCB3ZSBrZWVwIGEgYm9pbGVycGxhdGUgb2JqZWN0LgotICAgIC8vIFRoZSBib2lsZXJwbGF0
ZSBpcyB1c2VkIHRvIGNyZWF0ZSBhZGRpdGlvbmFsIHdyYXBwZXJzIG9mIHRoZSBzYW1lIHR5cGUu
Ci0gICAgdHlwZWRlZiBXVEY6Okhhc2hNYXA8V3JhcHBlclR5cGVJbmZvKiwgdjg6OlBlcnNpc3Rl
bnQ8djg6Ok9iamVjdD4gPiBXcmFwcGVyQm9pbGVycGxhdGVNYXA7Ci0gICAgV3JhcHBlckJvaWxl
cnBsYXRlTWFwIG1fd3JhcHBlckJvaWxlcnBsYXRlczsKLQotICAgIHR5cGVkZWYgV1RGOjpIYXNo
TWFwPFdyYXBwZXJUeXBlSW5mbyosIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvbj4gPiBDb25z
dHJ1Y3Rvck1hcDsKLSAgICBDb25zdHJ1Y3Rvck1hcCBtX2NvbnN0cnVjdG9yTWFwOwotCi0gICAg
djg6OkhhbmRsZTx2ODo6Q29udGV4dD4gbV9jb250ZXh0OwotICAgIE93bkhhbmRsZTx2ODo6VmFs
dWU+IG1fZXJyb3JQcm90b3R5cGU7Ci0gICAgT3duSGFuZGxlPHY4OjpWYWx1ZT4gbV9vYmplY3RQ
cm90b3R5cGU7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBWOEJp
bmRpbmdQZXJDb250ZXh0RGF0YV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy92OC9WOERPTVdpbmRvd1NoZWxsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4
RE9NV2luZG93U2hlbGwuY3BwCmluZGV4IGEyMmIwOTk4MmE2MTRiM2M0NmM4MDFlN2MxYTc5NGU1
MTk1N2VjNzQuLmM1YTFjZDZjY2FiYzY1MDFjMWQ0ZjEwZGYxYjVjYzVlZDA2NGU4OTQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4RE9NV2luZG93U2hlbGwuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4RE9NV2luZG93U2hlbGwuY3BwCkBAIC01
MCw3ICs1MCw2IEBACiAjaW5jbHVkZSAiU3RvcmFnZU5hbWVzcGFjZS5oIgogI2luY2x1ZGUgIlN0
eWxlUHJvcGVydHlTZXQuaCIKICNpbmNsdWRlICJWOEJpbmRpbmcuaCIKLSNpbmNsdWRlICJWOEJp
bmRpbmdQZXJDb250ZXh0RGF0YS5oIgogI2luY2x1ZGUgIlY4Q29sbGVjdGlvbi5oIgogI2luY2x1
ZGUgIlY4RE9NTWFwLmgiCiAjaW5jbHVkZSAiVjhET01XaW5kb3cuaCIKQEAgLTYwLDYgKzU5LDcg
QEAKICNpbmNsdWRlICJWOEhpZGRlblByb3BlcnR5TmFtZS5oIgogI2luY2x1ZGUgIlY4SGlzdG9y
eS5oIgogI2luY2x1ZGUgIlY4TG9jYXRpb24uaCIKKyNpbmNsdWRlICJWOFBlckNvbnRleHREYXRh
LmgiCiAjaW5jbHVkZSAiVjhQcm94eS5oIgogI2luY2x1ZGUgIldvcmtlckNvbnRleHRFeGVjdXRp
b25Qcm94eS5oIgogCkBAIC0zMjQsNyArMzI0LDcgQEAgYm9vbCBWOERPTVdpbmRvd1NoZWxsOjpp
bml0Q29udGV4dElmTmVlZGVkKCkKICNlbmRpZgogICAgIH0KIAotICAgIG1fcGVyQ29udGV4dERh
dGEgPSBWOEJpbmRpbmdQZXJDb250ZXh0RGF0YTo6Y3JlYXRlKG1fY29udGV4dCk7CisgICAgbV9w
ZXJDb250ZXh0RGF0YSA9IFY4UGVyQ29udGV4dERhdGE6OmNyZWF0ZShtX2NvbnRleHQpOwogICAg
IGlmICghbV9wZXJDb250ZXh0RGF0YS0+aW5pdCgpKSB7CiAgICAgICAgIGRpc3Bvc2VDb250ZXh0
SGFuZGxlcygpOwogICAgICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy92OC9WOERPTVdpbmRvd1NoZWxsLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy92OC9WOERPTVdpbmRvd1NoZWxsLmgKaW5kZXggMDY3NmYxNDUwNDljYjFlZGRjOTBjNDIz
ZGM2MmMyMDQyYWEwNjM4OS4uYjI1YmJmYzQ4OGVkN2Q2ZDUzOTk1Y2Y2OWM1Y2E5NmYyMDVmODFl
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhET01XaW5kb3dTaGVs
bC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4RE9NV2luZG93U2hlbGwuaApA
QCAtMzEsNyArMzEsNyBAQAogI2lmbmRlZiBWOERPTVdpbmRvd1NoZWxsX2gKICNkZWZpbmUgVjhE
T01XaW5kb3dTaGVsbF9oCiAKLSNpbmNsdWRlICJWOEJpbmRpbmdQZXJDb250ZXh0RGF0YS5oIgor
I2luY2x1ZGUgIlY4UGVyQ29udGV4dERhdGEuaCIKICNpbmNsdWRlICJXcmFwcGVyVHlwZUluZm8u
aCIKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CkBA
IC03OCw3ICs3OCw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgZGVzdHJveUdsb2JhbCgpOwogCi0g
ICAgVjhCaW5kaW5nUGVyQ29udGV4dERhdGEqIHBlckNvbnRleHREYXRhKCkgeyByZXR1cm4gbV9w
ZXJDb250ZXh0RGF0YS5nZXQoKTsgfQorICAgIFY4UGVyQ29udGV4dERhdGEqIHBlckNvbnRleHRE
YXRhKCkgeyByZXR1cm4gbV9wZXJDb250ZXh0RGF0YS5nZXQoKTsgfQogCiBwcml2YXRlOgogICAg
IFY4RE9NV2luZG93U2hlbGwoRnJhbWUqKTsKQEAgLTk3LDcgKzk3LDcgQEAgcHJpdmF0ZToKIAog
ICAgIEZyYW1lKiBtX2ZyYW1lOwogCi0gICAgT3duUHRyPFY4QmluZGluZ1BlckNvbnRleHREYXRh
PiBtX3BlckNvbnRleHREYXRhOworICAgIE93blB0cjxWOFBlckNvbnRleHREYXRhPiBtX3BlckNv
bnRleHREYXRhOwogCiAgICAgdjg6OlBlcnNpc3RlbnQ8djg6OkNvbnRleHQ+IG1fY29udGV4dDsK
ICAgICB2ODo6UGVyc2lzdGVudDx2ODo6T2JqZWN0PiBtX2dsb2JhbDsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4RE9NV3JhcHBlci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy92OC9WOERPTVdyYXBwZXIuY3BwCmluZGV4IGM5YzdlMTU5OTFiMzBlNjI0NWQ0
YTJkM2U2ZTkxMTgwYzNlYzYzOTQuLjkyMmM5NmE4YTM5NjRiMDFlNzRkNDE1YTQ4Njk1OTllMDMy
Y2UzMzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4RE9NV3JhcHBl
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhET01XcmFwcGVyLmNwcApA
QCAtNDEsNyArNDEsNiBAQAogI2luY2x1ZGUgIlN0eWxlUHJvcGVydHlTZXQuaCIKICNpbmNsdWRl
ICJWOEFic3RyYWN0RXZlbnRMaXN0ZW5lci5oIgogI2luY2x1ZGUgIlY4QmluZGluZy5oIgotI2lu
Y2x1ZGUgIlY4QmluZGluZ1BlckNvbnRleHREYXRhLmgiCiAjaW5jbHVkZSAiVjhDb2xsZWN0aW9u
LmgiCiAjaW5jbHVkZSAiVjhFdmVudExpc3RlbmVyLmgiCiAjaW5jbHVkZSAiVjhFdmVudExpc3Rl
bmVyTGlzdC5oIgpAQCAtNTIsNiArNTEsNyBAQAogI2luY2x1ZGUgIlY4TmFtZWROb2RlTWFwLmgi
CiAjaW5jbHVkZSAiVjhOb2RlRmlsdGVyQ29uZGl0aW9uLmgiCiAjaW5jbHVkZSAiVjhOb2RlTGlz
dC5oIgorI2luY2x1ZGUgIlY4UGVyQ29udGV4dERhdGEuaCIKICNpbmNsdWRlICJWOFByb3h5Lmgi
CiAjaW5jbHVkZSAiVjhTdHlsZVNoZWV0LmgiCiAjaW5jbHVkZSAiVjhXb3JrZXJDb250ZXh0RXZl
bnRMaXN0ZW5lci5oIgpAQCAtOTUsNyArOTUsNyBAQCB2ODo6TG9jYWw8djg6OkZ1bmN0aW9uPiBW
OERPTVdyYXBwZXI6OmNvbnN0cnVjdG9yRm9yVHlwZShXcmFwcGVyVHlwZUluZm8qIHR5cGUsCiAg
ICAgaWYgKCFmcmFtZSkKICAgICAgICAgcmV0dXJuIHY4OjpMb2NhbDx2ODo6RnVuY3Rpb24+KCk7
CiAKLSAgICBpZiAoVjhCaW5kaW5nUGVyQ29udGV4dERhdGEqIGNvbnRleHREYXRhID0gVjhQcm94
eTo6cmV0cmlldmVQZXJDb250ZXh0RGF0YShmcmFtZSkpCisgICAgaWYgKFY4UGVyQ29udGV4dERh
dGEqIGNvbnRleHREYXRhID0gVjhQcm94eTo6cmV0cmlldmVQZXJDb250ZXh0RGF0YShmcmFtZSkp
CiAgICAgICAgIHJldHVybiBjb250ZXh0RGF0YS0+Y29uc3RydWN0b3JGb3JUeXBlKHR5cGUpOwog
CiAgICAgcmV0dXJuIHY4OjpMb2NhbDx2ODo6RnVuY3Rpb24+KCk7CkBAIC0xMTAsMTQgKzExMCwx
NCBAQCB2ODo6TG9jYWw8djg6OkZ1bmN0aW9uPiBWOERPTVdyYXBwZXI6OmNvbnN0cnVjdG9yRm9y
VHlwZShXcmFwcGVyVHlwZUluZm8qIHR5cGUsCiB9CiAjZW5kaWYKIAotVjhCaW5kaW5nUGVyQ29u
dGV4dERhdGEqIFY4RE9NV3JhcHBlcjo6cGVyQ29udGV4dERhdGEoVjhQcm94eSogcHJveHkpCitW
OFBlckNvbnRleHREYXRhKiBWOERPTVdyYXBwZXI6OnBlckNvbnRleHREYXRhKFY4UHJveHkqIHBy
b3h5KQogewogICAgIFY4RE9NV2luZG93U2hlbGwqIHNoZWxsID0gcHJveHktPndpbmRvd1NoZWxs
KCk7CiAgICAgcmV0dXJuIHNoZWxsID8gc2hlbGwtPnBlckNvbnRleHREYXRhKCkgOiAwOwogfQog
CiAjaWYgRU5BQkxFKFdPUktFUlMpCi1WOEJpbmRpbmdQZXJDb250ZXh0RGF0YSogVjhET01XcmFw
cGVyOjpwZXJDb250ZXh0RGF0YShXb3JrZXJDb250ZXh0KikKK1Y4UGVyQ29udGV4dERhdGEqIFY4
RE9NV3JhcHBlcjo6cGVyQ29udGV4dERhdGEoV29ya2VyQ29udGV4dCopCiB7CiAgICAgV29ya2Vy
U2NyaXB0Q29udHJvbGxlciogY29udHJvbGxlciA9IFdvcmtlclNjcmlwdENvbnRyb2xsZXI6OmNv
bnRyb2xsZXJGb3JDb250ZXh0KCk7CiAgICAgV29ya2VyQ29udGV4dEV4ZWN1dGlvblByb3h5KiBw
cm94eSA9IGNvbnRyb2xsZXIgPyBjb250cm9sbGVyLT5wcm94eSgpIDogMDsKQEAgLTE3MSw3ICsx
NzEsNyBAQCB2ODo6TG9jYWw8djg6Ok9iamVjdD4gVjhET01XcmFwcGVyOjppbnN0YW50aWF0ZVY4
T2JqZWN0KFY4UHJveHkqIHByb3h5LCBXcmFwcGVyVAogI2lmIEVOQUJMRShXT1JLRVJTKQogICAg
IFdvcmtlckNvbnRleHQqIHdvcmtlckNvbnRleHQgPSAwOwogI2VuZGlmCi0gICAgVjhCaW5kaW5n
UGVyQ29udGV4dERhdGEqIGNvbnRleHREYXRhID0gMDsKKyAgICBWOFBlckNvbnRleHREYXRhKiBj
b250ZXh0RGF0YSA9IDA7CiAgICAgVjhJc29sYXRlZENvbnRleHQqIGlzb2xhdGVkQ29udGV4dDsK
ICAgICBpZiAoVU5MSUtFTFkoISEoaXNvbGF0ZWRDb250ZXh0ID0gVjhJc29sYXRlZENvbnRleHQ6
OmdldEVudGVyZWQoKSkpKSB7CiAgICAgICAgIGNvbnRleHREYXRhID0gaXNvbGF0ZWRDb250ZXh0
LT5wZXJDb250ZXh0RGF0YSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
djgvVjhET01XcmFwcGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOERPTVdyYXBw
ZXIuaAppbmRleCBkZWE4ZTg4MDUyOTk0YTIyNWM2ZmJlOWViOWNjN2Y0MTI3N2I4MmZjLi5kOWU4
MDU5ZTQyMGM2ZjNhYTg1ZjI2MDk5MzFjM2YyYTA2ZWM3ZGFjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy92OC9WOERPTVdyYXBwZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy92OC9WOERPTVdyYXBwZXIuaApAQCAtNTIsNyArNTIsNyBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAgICAgY2xhc3MgRXZlbnRUYXJnZXQ7CiAgICAgY2xhc3MgRnJhbWU7CiAgICAgY2xh
c3MgTm9kZTsKLSAgICBjbGFzcyBWOEJpbmRpbmdQZXJDb250ZXh0RGF0YTsKKyAgICBjbGFzcyBW
OFBlckNvbnRleHREYXRhOwogICAgIGNsYXNzIFY4UHJveHk7CiAgICAgY2xhc3MgV29ya2VyQ29u
dGV4dDsKICAgICBjbGFzcyBYUGF0aFJlc29sdmVyOwpAQCAtMTQ4LDkgKzE0OCw5IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKICAgICAgICAgICAgIHJldHVybiBkb21Ob2RlTWFwLmdldChub2RlKTsK
ICAgICAgICAgfQogICAgIHByaXZhdGU6Ci0gICAgICAgIHN0YXRpYyBWOEJpbmRpbmdQZXJDb250
ZXh0RGF0YSogcGVyQ29udGV4dERhdGEoVjhQcm94eSopOworICAgICAgICBzdGF0aWMgVjhQZXJD
b250ZXh0RGF0YSogcGVyQ29udGV4dERhdGEoVjhQcm94eSopOwogI2lmIEVOQUJMRShXT1JLRVJT
KQotICAgICAgICBzdGF0aWMgVjhCaW5kaW5nUGVyQ29udGV4dERhdGEqIHBlckNvbnRleHREYXRh
KFdvcmtlckNvbnRleHQqKTsKKyAgICAgICAgc3RhdGljIFY4UGVyQ29udGV4dERhdGEqIHBlckNv
bnRleHREYXRhKFdvcmtlckNvbnRleHQqKTsKICNlbmRpZgogICAgIH07CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4SXNvbGF0ZWRDb250ZXh0LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4SXNvbGF0ZWRDb250ZXh0LmNwcAppbmRleCA2Y2Y2NTQz
MjhmYjhlNTllOGEyMDI0MmI4ZDQyNzA5MjA4ZWFhMzRjLi5hNjAwMTM5OTUxMmNiNDM2YzYyYzQ1
NDRmMTJiMmE0Mzg3YjdjMmRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92
OC9WOElzb2xhdGVkQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvdjgv
VjhJc29sYXRlZENvbnRleHQuY3BwCkBAIC0zNiw4ICszNiw4IEBACiAjaW5jbHVkZSAiRnJhbWVM
b2FkZXJDbGllbnQuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaCIKICNp
bmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgotI2luY2x1ZGUgIlY4QmluZGluZ1BlckNvbnRleHRE
YXRhLmgiCiAjaW5jbHVkZSAiVjhET01XaW5kb3cuaCIKKyNpbmNsdWRlICJWOFBlckNvbnRleHRE
YXRhLmgiCiAjaW5jbHVkZSAiVjhQcm94eS5oIgogI2luY2x1ZGUgPHd0Zi9TdHJpbmdFeHRyYXMu
aD4KIApAQCAtODcsNyArODcsNyBAQCBWOElzb2xhdGVkQ29udGV4dDo6VjhJc29sYXRlZENvbnRl
eHQoVjhQcm94eSogcHJveHksIGludCBleHRlbnNpb25Hcm91cCwgaW50IHdvcgogCiAgICAgZ2V0
R2xvYmFsT2JqZWN0KG1fY29udGV4dC0+Z2V0KCkpLT5TZXRQb2ludGVySW5JbnRlcm5hbEZpZWxk
KFY4RE9NV2luZG93OjplbnRlcmVkSXNvbGF0ZWRXb3JsZEluZGV4LCB0aGlzKTsKIAotICAgIG1f
cGVyQ29udGV4dERhdGEgPSBWOEJpbmRpbmdQZXJDb250ZXh0RGF0YTo6Y3JlYXRlKG1fY29udGV4
dC0+Z2V0KCkpOworICAgIG1fcGVyQ29udGV4dERhdGEgPSBWOFBlckNvbnRleHREYXRhOjpjcmVh
dGUobV9jb250ZXh0LT5nZXQoKSk7CiAgICAgbV9wZXJDb250ZXh0RGF0YS0+aW5pdCgpOwogCiAg
ICAgLy8gRklYTUU6IFRoaXMgd2lsbCBnbyBhd2F5IG9uY2Ugd2UgaGF2ZSBhIHdpbmRvd1NoZWxs
IGZvciB0aGUgaXNvbGF0ZWQgd29ybGQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy92OC9WOElzb2xhdGVkQ29udGV4dC5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvdjgv
VjhJc29sYXRlZENvbnRleHQuaAppbmRleCA5YmZlOGIxMGI2ZGM1MjlmOTZiNzIxY2IwZTIzZDQ3
NzQwMjhjNDIwLi5lY2QzZjZlMjcwZGY2Y2E2YmMwZDhjMGY5MDc2YWI3N2YwNzgwMzNlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOElzb2xhdGVkQ29udGV4dC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4SXNvbGF0ZWRDb250ZXh0LmgKQEAgLTQw
LDcgKzQwLDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgU2VjdXJpdHlPcmlnaW47
Ci1jbGFzcyBWOEJpbmRpbmdQZXJDb250ZXh0RGF0YTsKK2NsYXNzIFY4UGVyQ29udGV4dERhdGE7
CiBjbGFzcyBWOFByb3h5OwogCiAvLyBWOElzb2xhdGVkQ29udGV4dApAQCAtOTcsNyArOTcsNyBA
QCBwdWJsaWM6CiAgICAgU2VjdXJpdHlPcmlnaW4qIHNlY3VyaXR5T3JpZ2luKCkgY29uc3QgeyBy
ZXR1cm4gbV9zZWN1cml0eU9yaWdpbi5nZXQoKTsgfQogICAgIHZvaWQgc2V0U2VjdXJpdHlPcmln
aW4oUGFzc1JlZlB0cjxTZWN1cml0eU9yaWdpbj4pOwogCi0gICAgVjhCaW5kaW5nUGVyQ29udGV4
dERhdGEqIHBlckNvbnRleHREYXRhKCkgeyByZXR1cm4gbV9wZXJDb250ZXh0RGF0YS5nZXQoKTsg
fQorICAgIFY4UGVyQ29udGV4dERhdGEqIHBlckNvbnRleHREYXRhKCkgeyByZXR1cm4gbV9wZXJD
b250ZXh0RGF0YS5nZXQoKTsgfQogCiBwcml2YXRlOgogICAgIHN0YXRpYyB2ODo6SGFuZGxlPHY4
OjpPYmplY3Q+IGdldEdsb2JhbE9iamVjdCh2ODo6SGFuZGxlPHY4OjpDb250ZXh0PiBjb250ZXh0
KQpAQCAtMTIxLDcgKzEyMSw3IEBAIHByaXZhdGU6CiAKICAgICBGcmFtZSogbV9mcmFtZTsKIAot
ICAgIE93blB0cjxWOEJpbmRpbmdQZXJDb250ZXh0RGF0YT4gbV9wZXJDb250ZXh0RGF0YTsKKyAg
ICBPd25QdHI8VjhQZXJDb250ZXh0RGF0YT4gbV9wZXJDb250ZXh0RGF0YTsKIH07CiAKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4
L1Y4UGVyQ29udGV4dERhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhQZXJD
b250ZXh0RGF0YS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjJkNzUwYTdhOGM2MTgxZjkyOTkwMWRlOWExOTFj
YjZmZmI3Y2IzZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4
L1Y4UGVyQ29udGV4dERhdGEuY3BwCkBAIC0wLDAgKzEsMTI5IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4K
KyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBv
ZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUg
cHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMg
cHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIg
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
CisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisg
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5o
IgorI2luY2x1ZGUgIlY4UGVyQ29udGV4dERhdGEuaCIKKworI2luY2x1ZGUgIlNhZmVBbGxvY2F0
aW9uLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwordm9pZCBWOFBlckNvbnRleHREYXRhOjpk
aXNwb3NlKCkKK3sKKyAgICB7CisgICAgICAgIFdyYXBwZXJCb2lsZXJwbGF0ZU1hcDo6aXRlcmF0
b3IgaXQgPSBtX3dyYXBwZXJCb2lsZXJwbGF0ZXMuYmVnaW4oKTsKKyAgICAgICAgZm9yICg7IGl0
ICE9IG1fd3JhcHBlckJvaWxlcnBsYXRlcy5lbmQoKTsgKytpdCkgeworICAgICAgICAgICAgdjg6
OlBlcnNpc3RlbnQ8djg6Ok9iamVjdD4gd3JhcHBlciA9IGl0LT5zZWNvbmQ7CisgICAgICAgICAg
ICB3cmFwcGVyLkRpc3Bvc2UoKTsKKyAgICAgICAgfQorICAgICAgICBtX3dyYXBwZXJCb2lsZXJw
bGF0ZXMuY2xlYXIoKTsKKyAgICB9CisKKyAgICB7CisgICAgICAgIENvbnN0cnVjdG9yTWFwOjpp
dGVyYXRvciBpdCA9IG1fY29uc3RydWN0b3JNYXAuYmVnaW4oKTsKKyAgICAgICAgZm9yICg7IGl0
ICE9IG1fY29uc3RydWN0b3JNYXAuZW5kKCk7ICsraXQpIHsKKyAgICAgICAgICAgIHY4OjpQZXJz
aXN0ZW50PHY4OjpGdW5jdGlvbj4gd3JhcHBlciA9IGl0LT5zZWNvbmQ7CisgICAgICAgICAgICB3
cmFwcGVyLkRpc3Bvc2UoKTsKKyAgICAgICAgfQorICAgICAgICBtX2NvbnN0cnVjdG9yTWFwLmNs
ZWFyKCk7CisgICAgfQorfQorCisjZGVmaW5lIFY4X1NUT1JFX1BSSU1PUkRJQUwobmFtZSwgTmFt
ZSkgXAoreyBcCisgICAgQVNTRVJUKG1fIyNuYW1lIyNQcm90b3R5cGUuZ2V0KCkuSXNFbXB0eSgp
KTsgXAorICAgIHY4OjpIYW5kbGU8djg6OlN0cmluZz4gc3ltYm9sID0gdjg6OlN0cmluZzo6TmV3
U3ltYm9sKCNOYW1lKTsgXAorICAgIGlmIChzeW1ib2wuSXNFbXB0eSgpKSBcCisgICAgICAgIHJl
dHVybiBmYWxzZTsgXAorICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gb2JqZWN0ID0gdjg6Okhh
bmRsZTx2ODo6T2JqZWN0Pjo6Q2FzdChtX2NvbnRleHQtPkdsb2JhbCgpLT5HZXQoc3ltYm9sKSk7
IFwKKyAgICBpZiAob2JqZWN0LklzRW1wdHkoKSkgXAorICAgICAgICByZXR1cm4gZmFsc2U7IFwK
KyAgICB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gcHJvdG90eXBlVmFsdWUgPSBvYmplY3QtPkdldChw
cm90b3R5cGVTdHJpbmcpOyBcCisgICAgaWYgKHByb3RvdHlwZVZhbHVlLklzRW1wdHkoKSkgXAor
ICAgICAgICByZXR1cm4gZmFsc2U7IFwKKyAgICBtXyMjbmFtZSMjUHJvdG90eXBlLnNldChwcm90
b3R5cGVWYWx1ZSk7IFwKK30KKworYm9vbCBWOFBlckNvbnRleHREYXRhOjppbml0KCkKK3sKKyAg
ICB2ODo6SGFuZGxlPHY4OjpTdHJpbmc+IHByb3RvdHlwZVN0cmluZyA9IHY4OjpTdHJpbmc6Ok5l
d1N5bWJvbCgicHJvdG90eXBlIik7CisgICAgaWYgKHByb3RvdHlwZVN0cmluZy5Jc0VtcHR5KCkp
CisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIFY4X1NUT1JFX1BSSU1PUkRJQUwoZXJyb3Is
IEVycm9yKTsKKyAgICBWOF9TVE9SRV9QUklNT1JESUFMKG9iamVjdCwgT2JqZWN0KTsKKworICAg
IHJldHVybiB0cnVlOworfQorCisjdW5kZWYgVjhfU1RPUkVfUFJJTU9SRElBTAorCit2ODo6TG9j
YWw8djg6Ok9iamVjdD4gVjhQZXJDb250ZXh0RGF0YTo6Y3JlYXRlV3JhcHBlckZyb21DYWNoZVNs
b3dDYXNlKFdyYXBwZXJUeXBlSW5mbyogdHlwZSkKK3sKKyAgICBBU1NFUlQoIW1fZXJyb3JQcm90
b3R5cGUuZ2V0KCkuSXNFbXB0eSgpKTsKKyAgICBBU1NFUlQoIW1fb2JqZWN0UHJvdG90eXBlLmdl
dCgpLklzRW1wdHkoKSk7CisKKyAgICB2ODo6Q29udGV4dDo6U2NvcGUgc2NvcGUobV9jb250ZXh0
KTsKKyAgICB2ODo6TG9jYWw8djg6OkZ1bmN0aW9uPiBmdW5jdGlvbiA9IGNvbnN0cnVjdG9yRm9y
VHlwZSh0eXBlKTsKKyAgICB2ODo6TG9jYWw8djg6Ok9iamVjdD4gaW5zdGFuY2UgPSBTYWZlQWxs
b2NhdGlvbjo6bmV3SW5zdGFuY2UoZnVuY3Rpb24pOworICAgIGlmICghaW5zdGFuY2UuSXNFbXB0
eSgpKSB7CisgICAgICAgIG1fd3JhcHBlckJvaWxlcnBsYXRlcy5zZXQodHlwZSwgdjg6OlBlcnNp
c3RlbnQ8djg6Ok9iamVjdD46Ok5ldyhpbnN0YW5jZSkpOworICAgICAgICByZXR1cm4gaW5zdGFu
Y2UtPkNsb25lKCk7CisgICAgfQorICAgIHJldHVybiB2ODo6TG9jYWw8djg6Ok9iamVjdD4oKTsK
K30KKwordjg6OkxvY2FsPHY4OjpGdW5jdGlvbj4gVjhQZXJDb250ZXh0RGF0YTo6Y29uc3RydWN0
b3JGb3JUeXBlU2xvd0Nhc2UoV3JhcHBlclR5cGVJbmZvKiB0eXBlKQoreworICAgIEFTU0VSVCgh
bV9lcnJvclByb3RvdHlwZS5nZXQoKS5Jc0VtcHR5KCkpOworICAgIEFTU0VSVCghbV9vYmplY3RQ
cm90b3R5cGUuZ2V0KCkuSXNFbXB0eSgpKTsKKworICAgIHY4OjpDb250ZXh0OjpTY29wZSBzY29w
ZShtX2NvbnRleHQpOworICAgIHY4OjpIYW5kbGU8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IGZ1bmN0
aW9uVGVtcGxhdGUgPSB0eXBlLT5nZXRUZW1wbGF0ZSgpOworICAgIC8vIEdldHRpbmcgdGhlIGZ1
bmN0aW9uIG1pZ2h0IGZhaWwgaWYgd2UncmUgcnVubmluZyBvdXQgb2Ygc3RhY2sgb3IgbWVtb3J5
LgorICAgIHY4OjpUcnlDYXRjaCB0cnlDYXRjaDsKKyAgICB2ODo6TG9jYWw8djg6OkZ1bmN0aW9u
PiBmdW5jdGlvbiA9IGZ1bmN0aW9uVGVtcGxhdGUtPkdldEZ1bmN0aW9uKCk7CisgICAgaWYgKGZ1
bmN0aW9uLklzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIHY4OjpMb2NhbDx2ODo6RnVuY3Rpb24+
KCk7CisKKyAgICBmdW5jdGlvbi0+U2V0UHJvdG90eXBlKG1fb2JqZWN0UHJvdG90eXBlLmdldCgp
KTsKKworICAgIGlmICh0eXBlLT53cmFwcGVyVHlwZVByb3RvdHlwZSA9PSBXcmFwcGVyVHlwZUVy
cm9yUHJvdG90eXBlKSB7CisgICAgICAgIHY4OjpMb2NhbDx2ODo6VmFsdWU+IHByb3RvdHlwZVZh
bHVlID0gZnVuY3Rpb24tPkdldCh2ODo6U3RyaW5nOjpOZXdTeW1ib2woInByb3RvdHlwZSIpKTsK
KyAgICAgICAgaWYgKCFwcm90b3R5cGVWYWx1ZS5Jc0VtcHR5KCkgJiYgcHJvdG90eXBlVmFsdWUt
PklzT2JqZWN0KCkpCisgICAgICAgICAgICB2ODo6TG9jYWw8djg6Ok9iamVjdD46OkNhc3QocHJv
dG90eXBlVmFsdWUpLT5TZXRQcm90b3R5cGUobV9lcnJvclByb3RvdHlwZS5nZXQoKSk7CisgICAg
fQorCisgICAgbV9jb25zdHJ1Y3Rvck1hcC5zZXQodHlwZSwgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1
bmN0aW9uPjo6TmV3KGZ1bmN0aW9uKSk7CisKKyAgICByZXR1cm4gZnVuY3Rpb247Cit9CisKK30g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3Y4L1Y4UGVyQ29udGV4dERhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4UGVy
Q29udGV4dERhdGEuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jOGNkNmE1YzZmNWEzZTVlODUzZDZhZWZmNWE1YTg3
YmE4NGUxMTViCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvdjgv
VjhQZXJDb250ZXh0RGF0YS5oCkBAIC0wLDAgKzEsOTkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICog
ICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0
cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9k
dWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlv
ciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAq
IExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFY4UGVyQ29udGV4dERh
dGFfaAorI2RlZmluZSBWOFBlckNvbnRleHREYXRhX2gKKworI2luY2x1ZGUgIk93bkhhbmRsZS5o
IgorI2luY2x1ZGUgIldyYXBwZXJUeXBlSW5mby5oIgorI2luY2x1ZGUgPHY4Lmg+CisjaW5jbHVk
ZSA8d3RmL0hhc2hNYXAuaD4KKyNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgorCituYW1lc3Bh
Y2UgV2ViQ29yZSB7CisKK2NsYXNzIFY4UGVyQ29udGV4dERhdGEgeworcHVibGljOgorICAgIHN0
YXRpYyBQYXNzT3duUHRyPFY4UGVyQ29udGV4dERhdGE+IGNyZWF0ZSh2ODo6SGFuZGxlPHY4OjpD
b250ZXh0PiBjb250ZXh0KQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBWOFBl
ckNvbnRleHREYXRhKGNvbnRleHQpKTsKKyAgICB9CisKKyAgICB+VjhQZXJDb250ZXh0RGF0YSgp
CisgICAgeworICAgICAgICBkaXNwb3NlKCk7CisgICAgfQorCisgICAgYm9vbCBpbml0KCk7CisK
KyAgICAvLyBUbyBjcmVhdGUgSlMgV3JhcHBlciBvYmplY3RzLCB3ZSBjcmVhdGUgYSBjYWNoZSBv
ZiBhICdib2lsZXIgcGxhdGUnCisgICAgLy8gb2JqZWN0LCBhbmQgdGhlbiBzaW1wbHkgQ2xvbmUg
dGhhdCBvYmplY3QgZWFjaCB0aW1lIHdlIG5lZWQgYSBuZXcgb25lLgorICAgIC8vIFRoaXMgaXMg
ZmFzdGVyIHRoYW4gZ29pbmcgdGhyb3VnaCB0aGUgZnVsbCBvYmplY3QgY3JlYXRpb24gcHJvY2Vz
cy4KKyAgICB2ODo6TG9jYWw8djg6Ok9iamVjdD4gY3JlYXRlV3JhcHBlckZyb21DYWNoZShXcmFw
cGVyVHlwZUluZm8qIHR5cGUpCisgICAgeworICAgICAgICB2ODo6UGVyc2lzdGVudDx2ODo6T2Jq
ZWN0PiBib2lsZXJwbGF0ZSA9IG1fd3JhcHBlckJvaWxlcnBsYXRlcy5nZXQodHlwZSk7CisgICAg
ICAgIHJldHVybiAhYm9pbGVycGxhdGUuSXNFbXB0eSgpID8gYm9pbGVycGxhdGUtPkNsb25lKCkg
OiBjcmVhdGVXcmFwcGVyRnJvbUNhY2hlU2xvd0Nhc2UodHlwZSk7CisgICAgfQorCisgICAgdjg6
OkxvY2FsPHY4OjpGdW5jdGlvbj4gY29uc3RydWN0b3JGb3JUeXBlKFdyYXBwZXJUeXBlSW5mbyog
dHlwZSkKKyAgICB7CisgICAgICAgIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvbj4gZnVuY3Rp
b24gPSBtX2NvbnN0cnVjdG9yTWFwLmdldCh0eXBlKTsKKyAgICAgICAgaWYgKCFmdW5jdGlvbi5J
c0VtcHR5KCkpCisgICAgICAgICAgICByZXR1cm4gdjg6OkxvY2FsPHY4OjpGdW5jdGlvbj46Ok5l
dyhmdW5jdGlvbik7CisgICAgICAgIHJldHVybiBjb25zdHJ1Y3RvckZvclR5cGVTbG93Q2FzZSh0
eXBlKTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgZXhwbGljaXQgVjhQZXJDb250ZXh0RGF0YSh2
ODo6SGFuZGxlPHY4OjpDb250ZXh0PiBjb250ZXh0KQorICAgICAgICA6IG1fY29udGV4dChjb250
ZXh0KQorICAgIHsKKyAgICB9CisKKyAgICB2b2lkIGRpc3Bvc2UoKTsKKworICAgIHY4OjpMb2Nh
bDx2ODo6T2JqZWN0PiBjcmVhdGVXcmFwcGVyRnJvbUNhY2hlU2xvd0Nhc2UoV3JhcHBlclR5cGVJ
bmZvKik7CisgICAgdjg6OkxvY2FsPHY4OjpGdW5jdGlvbj4gY29uc3RydWN0b3JGb3JUeXBlU2xv
d0Nhc2UoV3JhcHBlclR5cGVJbmZvKik7CisKKyAgICAvLyBGb3IgZWFjaCBwb3NzaWJsZSB0eXBl
IG9mIHdyYXBwZXIsIHdlIGtlZXAgYSBib2lsZXJwbGF0ZSBvYmplY3QuCisgICAgLy8gVGhlIGJv
aWxlcnBsYXRlIGlzIHVzZWQgdG8gY3JlYXRlIGFkZGl0aW9uYWwgd3JhcHBlcnMgb2YgdGhlIHNh
bWUgdHlwZS4KKyAgICB0eXBlZGVmIFdURjo6SGFzaE1hcDxXcmFwcGVyVHlwZUluZm8qLCB2ODo6
UGVyc2lzdGVudDx2ODo6T2JqZWN0PiA+IFdyYXBwZXJCb2lsZXJwbGF0ZU1hcDsKKyAgICBXcmFw
cGVyQm9pbGVycGxhdGVNYXAgbV93cmFwcGVyQm9pbGVycGxhdGVzOworCisgICAgdHlwZWRlZiBX
VEY6Okhhc2hNYXA8V3JhcHBlclR5cGVJbmZvKiwgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9u
PiA+IENvbnN0cnVjdG9yTWFwOworICAgIENvbnN0cnVjdG9yTWFwIG1fY29uc3RydWN0b3JNYXA7
CisKKyAgICB2ODo6SGFuZGxlPHY4OjpDb250ZXh0PiBtX2NvbnRleHQ7CisgICAgT3duSGFuZGxl
PHY4OjpWYWx1ZT4gbV9lcnJvclByb3RvdHlwZTsKKyAgICBPd25IYW5kbGU8djg6OlZhbHVlPiBt
X29iamVjdFByb3RvdHlwZTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlm
IC8vIFY4UGVyQ29udGV4dERhdGFfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvdjgvVjhQcm94eS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOFByb3h5LmNw
cAppbmRleCAyNTJjYjE4MTdhNjk1NmIyYjAxNmQxNTUyZGMwZmE1YWU3MmRhNDA4Li4zNmRmMmJl
NDY0OWRjOWQ0YmZkMmZhZDczZTA2ZGQ3ZjM3MDM0MWNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy92OC9WOFByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy92OC9WOFByb3h5LmNwcApAQCAtNDI4LDcgKzQyOCw3IEBAIEZyYW1lKiBWOFByb3h5OjpyZXRy
aWV2ZUZyYW1lKHY4OjpIYW5kbGU8djg6OkNvbnRleHQ+IGNvbnRleHQpCiAgICAgcmV0dXJuIDA7
CiB9CiAKLVY4QmluZGluZ1BlckNvbnRleHREYXRhKiBWOFByb3h5OjpyZXRyaWV2ZVBlckNvbnRl
eHREYXRhKEZyYW1lKiBmcmFtZSkKK1Y4UGVyQ29udGV4dERhdGEqIFY4UHJveHk6OnJldHJpZXZl
UGVyQ29udGV4dERhdGEoRnJhbWUqIGZyYW1lKQogewogICAgIFY4SXNvbGF0ZWRDb250ZXh0KiBp
c29sYXRlZENvbnRleHQ7CiAgICAgaWYgKFVOTElLRUxZKCEhKGlzb2xhdGVkQ29udGV4dCA9IFY4
SXNvbGF0ZWRDb250ZXh0OjpnZXRFbnRlcmVkKCkpKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3Y4L1Y4UHJveHkuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4
UHJveHkuaAppbmRleCBkNDkwNWFkYTFhODBjNTdiNTJiZGEzMjhkYjBjODNkYTQ4NjllYWE1Li42
ZTA4YTE5NzhmNmI1NjEzOTFmOTc2ZmM2NzNjMmVlMWE3NWI3YWJmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOFByb3h5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvdjgvVjhQcm94eS5oCkBAIC02Miw3ICs2Miw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
ICAgICBjbGFzcyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OwogICAgIGNsYXNzIFNjcmlwdFNvdXJj
ZUNvZGU7CiAgICAgY2xhc3MgU2VjdXJpdHlPcmlnaW47Ci0gICAgY2xhc3MgVjhCaW5kaW5nUGVy
Q29udGV4dERhdGE7CisgICAgY2xhc3MgVjhQZXJDb250ZXh0RGF0YTsKICAgICBjbGFzcyBWOEV2
ZW50TGlzdGVuZXI7CiAgICAgY2xhc3MgVjhJc29sYXRlZENvbnRleHQ7CiAgICAgY2xhc3MgV29y
bGRDb250ZXh0SGFuZGxlOwpAQCAtMTM0LDcgKzEzNCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
ICAgICAgICAgLy8gYSBjb250ZXh0LgogICAgICAgICBzdGF0aWMgRnJhbWUqIHJldHJpZXZlRnJh
bWUodjg6OkhhbmRsZTx2ODo6Q29udGV4dD4pOwogCi0gICAgICAgIHN0YXRpYyBWOEJpbmRpbmdQ
ZXJDb250ZXh0RGF0YSogcmV0cmlldmVQZXJDb250ZXh0RGF0YShGcmFtZSopOworICAgICAgICBz
dGF0aWMgVjhQZXJDb250ZXh0RGF0YSogcmV0cmlldmVQZXJDb250ZXh0RGF0YShGcmFtZSopOwog
CiAgICAgICAgIC8vIFJldHVybnMgVjggQ29udGV4dCBvZiBhIGZyYW1lLiBJZiBub25lIGV4aXN0
cywgY3JlYXRlcwogICAgICAgICAvLyBhIG5ldyBjb250ZXh0LiBJdCBpcyBwb3RlbnRpYWxseSBz
bG93IGFuZCBjb25zdW1lcyBtZW1vcnkuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy92OC9Xb3JrZXJDb250ZXh0RXhlY3V0aW9uUHJveHkuY3BwIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvdjgvV29ya2VyQ29udGV4dEV4ZWN1dGlvblByb3h5LmNwcAppbmRleCA4MGZiN2Q2
ZDY4MTZlM2QzM2IwZDM4ZTYyZGIzNTI0ZTlmYThmOWU1Li5lZWM3ZTJlMWIyYWY1M2IyNDAzYzUx
YmFhM2RhYzgxMTIzZjZmMjQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92
OC9Xb3JrZXJDb250ZXh0RXhlY3V0aW9uUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3Y4L1dvcmtlckNvbnRleHRFeGVjdXRpb25Qcm94eS5jcHAKQEAgLTQyLDEwICs0Miwx
MCBAQAogI2luY2x1ZGUgIlNoYXJlZFdvcmtlci5oIgogI2luY2x1ZGUgIlNoYXJlZFdvcmtlckNv
bnRleHQuaCIKICNpbmNsdWRlICJWOEJpbmRpbmcuaCIKLSNpbmNsdWRlICJWOEJpbmRpbmdQZXJD
b250ZXh0RGF0YS5oIgogI2luY2x1ZGUgIlY4RE9NTWFwLmgiCiAjaW5jbHVkZSAiVjhET01XaW5k
b3dTaGVsbC5oIgogI2luY2x1ZGUgIlY4RGVkaWNhdGVkV29ya2VyQ29udGV4dC5oIgorI2luY2x1
ZGUgIlY4UGVyQ29udGV4dERhdGEuaCIKICNpbmNsdWRlICJWOFByb3h5LmgiCiAjaW5jbHVkZSAi
VjhSZWN1cnNpb25TY29wZS5oIgogI2luY2x1ZGUgIlY4U2hhcmVkV29ya2VyQ29udGV4dC5oIgpA
QCAtMTUzLDcgKzE1Myw3IEBAIGJvb2wgV29ya2VyQ29udGV4dEV4ZWN1dGlvblByb3h5Ojppbml0
Q29udGV4dElmTmVlZGVkKCkKIAogICAgIHY4OjpDb250ZXh0OjpTY29wZSBzY29wZShjb250ZXh0
KTsKIAotICAgIG1fcGVyQ29udGV4dERhdGEgPSBWOEJpbmRpbmdQZXJDb250ZXh0RGF0YTo6Y3Jl
YXRlKG1fY29udGV4dCk7CisgICAgbV9wZXJDb250ZXh0RGF0YSA9IFY4UGVyQ29udGV4dERhdGE6
OmNyZWF0ZShtX2NvbnRleHQpOwogICAgIGlmICghbV9wZXJDb250ZXh0RGF0YS0+aW5pdCgpKSB7
CiAgICAgICAgIGRpc3Bvc2UoKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvV29ya2VyQ29udGV4dEV4ZWN1dGlvblByb3h5Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9Xb3JrZXJDb250ZXh0RXhlY3V0aW9uUHJveHku
aAppbmRleCAwZGY1YTNhZTcyYzFhYjI0YWM0ZTM1M2MxMjBhMzM0Mjg0M2I5Mjk2Li41YmMyODEy
OGNkZDZjYmIyNmM5NzQ1MWQ4NWIzMjNjY2QyMGExMTAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy92OC9Xb3JrZXJDb250ZXh0RXhlY3V0aW9uUHJveHkuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy92OC9Xb3JrZXJDb250ZXh0RXhlY3V0aW9uUHJveHkuaApAQCAt
NDQsNyArNDQsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICBjbGFzcyBFdmVudDsKICAg
ICBjbGFzcyBFdmVudFRhcmdldDsKLSAgICBjbGFzcyBWOEJpbmRpbmdQZXJDb250ZXh0RGF0YTsK
KyAgICBjbGFzcyBWOFBlckNvbnRleHREYXRhOwogICAgIGNsYXNzIFdvcmtlckNvbnRleHQ7CiAg
ICAgc3RydWN0IFdyYXBwZXJUeXBlSW5mbzsKIApAQCAtNzQsNyArNzQsNyBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAgICAgICAgIC8vIFJldHVybnMgYSBsb2NhbCBoYW5kbGUgb2YgdGhlIGNvbnRl
eHQuCiAgICAgICAgIHY4OjpMb2NhbDx2ODo6Q29udGV4dD4gY29udGV4dCgpIHsgcmV0dXJuIHY4
OjpMb2NhbDx2ODo6Q29udGV4dD46Ok5ldyhtX2NvbnRleHQpOyB9CiAKLSAgICAgICAgVjhCaW5k
aW5nUGVyQ29udGV4dERhdGEqIHBlckNvbnRleHREYXRhKCkgeyByZXR1cm4gbV9wZXJDb250ZXh0
RGF0YS5nZXQoKTsgfQorICAgICAgICBWOFBlckNvbnRleHREYXRhKiBwZXJDb250ZXh0RGF0YSgp
IHsgcmV0dXJuIG1fcGVyQ29udGV4dERhdGEuZ2V0KCk7IH0KIAogICAgIHByaXZhdGU6CiAgICAg
ICAgIHZvaWQgaW5pdElzb2xhdGUoKTsKQEAgLTkzLDcgKzkzLDcgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogCiAgICAgICAgIFZlY3RvcjxFdmVudCo+IG1fZXZlbnRzOwogCi0gICAgICAgIE93blB0
cjxWOEJpbmRpbmdQZXJDb250ZXh0RGF0YT4gbV9wZXJDb250ZXh0RGF0YTsKKyAgICAgICAgT3du
UHRyPFY4UGVyQ29udGV4dERhdGE+IG1fcGVyQ29udGV4dERhdGE7CiAgICAgfTsKIAogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQo=
</data>
<flag name="commit-queue"
          id="167506"
          type_id="3"
          status="-"
          setter="webkit.review.bot"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>157599</attachid>
            <date>2012-08-09 18:01:23 -0700</date>
            <delta_ts>2012-08-09 20:05:25 -0700</delta_ts>
            <desc>patch for landing</desc>
            <filename>bug-93595-20120810100055.patch</filename>
            <type>text/plain</type>
            <size>34748</size>
            <attacher name="Kentaro Hara">haraken</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI1MjI3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjFlMWViY2Q0ZWE2NzYz
M2QyYjEwNzk3ODQwOThiOWM2M2I3ZjVmOC4uOTUxZjFiYTI3Y2JjM2Q4NGVjNzAyODg0MDZhOTk1
OTMxMmQ0YTcxZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYxIEBACisyMDEyLTA4LTA5ICBLZW50
YXJvIEhhcmEgIDxoYXJha2VuQGNocm9taXVtLm9yZz4KKworICAgICAgICBbVjhdIFJlbmFtZSBW
OEJpbmRpbmdQZXJDb250ZXh0RGF0YSB0byBWOFBlckNvbnRleHREYXRhCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05MzU5NQorCisgICAgICAgIFJldmll
d2VkIGJ5IEFkYW0gQmFydGguCisKKyAgICAgICAgRm9yIGEgYmV0dGVyIG5hbWUuIFNlZSBkaXNj
dXNzaW9uIGluIGJ1ZyA5MzMzMy4KKworICAgICAgICBObyB0ZXN0cy4gTm8gY2hhbmdlIGluIGJl
aGF2aW9yLgorCisgICAgICAgICogVXNlVjguY21ha2U6IEFkZGVkIFY4UGVyQ29udGV4dERhdGEu
Y3BwLiBUaGUgZmFjdCB0aGF0IG1pc3NpbmcgVjhCaW5kaW5nUGVyQ29udGV4dERhdGEuY3BwCisg
ICAgICAgIGhhcyBub3QgY2F1c2VkIGFueSBwcm9ibGVtIGluZGljYXRlcyB0aGF0IFVzZVY4LmNt
YWtlIGlzIG5vdCB1c2VkIGF0IGFsbD8KKyAgICAgICAgKiBXZWJDb3JlLmd5cGk6CisgICAgICAg
ICogYmluZGluZ3MvdjgvVjhET01XaW5kb3dTaGVsbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpW
OERPTVdpbmRvd1NoZWxsOjppbml0Q29udGV4dElmTmVlZGVkKToKKyAgICAgICAgKiBiaW5kaW5n
cy92OC9WOERPTVdpbmRvd1NoZWxsLmg6CisgICAgICAgIChXZWJDb3JlOjpWOERPTVdpbmRvd1No
ZWxsOjpwZXJDb250ZXh0RGF0YSk6CisgICAgICAgIChWOERPTVdpbmRvd1NoZWxsKToKKyAgICAg
ICAgKiBiaW5kaW5ncy92OC9WOERPTVdyYXBwZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VjhE
T01XcmFwcGVyOjpjb25zdHJ1Y3RvckZvclR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6VjhET01X
cmFwcGVyOjpwZXJDb250ZXh0RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpWOERPTVdyYXBwZXI6
Omluc3RhbnRpYXRlVjhPYmplY3QpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1Y4RE9NV3JhcHBl
ci5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChWOERPTVdyYXBwZXIpOgorICAgICAg
ICAqIGJpbmRpbmdzL3Y4L1Y4SXNvbGF0ZWRDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlY4SXNvbGF0ZWRDb250ZXh0OjpWOElzb2xhdGVkQ29udGV4dCk6CisgICAgICAgICogYmluZGlu
Z3MvdjgvVjhJc29sYXRlZENvbnRleHQuaDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAo
V2ViQ29yZTo6VjhJc29sYXRlZENvbnRleHQ6OnBlckNvbnRleHREYXRhKToKKyAgICAgICAgKFY4
SXNvbGF0ZWRDb250ZXh0KToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9WOFBlckNvbnRleHREYXRh
LmNwcDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4QmluZGluZ1Bl
ckNvbnRleHREYXRhLmNwcC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6
VjhQZXJDb250ZXh0RGF0YTo6ZGlzcG9zZSk6CisgICAgICAgIChXZWJDb3JlOjpWOFBlckNvbnRl
eHREYXRhOjppbml0KToKKyAgICAgICAgKFdlYkNvcmU6OlY4UGVyQ29udGV4dERhdGE6OmNyZWF0
ZVdyYXBwZXJGcm9tQ2FjaGVTbG93Q2FzZSk6CisgICAgICAgIChXZWJDb3JlOjpWOFBlckNvbnRl
eHREYXRhOjpjb25zdHJ1Y3RvckZvclR5cGVTbG93Q2FzZSk6CisgICAgICAgICogYmluZGluZ3Mv
djgvVjhQZXJDb250ZXh0RGF0YS5oOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvdjgvVjhCaW5kaW5nUGVyQ29udGV4dERhdGEuaC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAg
ICAgICAoVjhQZXJDb250ZXh0RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpWOFBlckNvbnRleHRE
YXRhOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6VjhQZXJDb250ZXh0RGF0YTo6flY4UGVy
Q29udGV4dERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6VjhQZXJDb250ZXh0RGF0YTo6Y3JlYXRl
V3JhcHBlckZyb21DYWNoZSk6CisgICAgICAgIChXZWJDb3JlOjpWOFBlckNvbnRleHREYXRhOjpj
b25zdHJ1Y3RvckZvclR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6VjhQZXJDb250ZXh0RGF0YTo6
VjhQZXJDb250ZXh0RGF0YSk6CisgICAgICAgICogYmluZGluZ3MvdjgvVjhQcm94eS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpWOFByb3h5OjpyZXRyaWV2ZVBlckNvbnRleHREYXRhKToKKyAgICAg
ICAgKiBiaW5kaW5ncy92OC9WOFByb3h5Lmg6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAg
KFY4UHJveHkpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1dvcmtlckNvbnRleHRFeGVjdXRpb25Q
cm94eS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJDb250ZXh0RXhlY3V0aW9uUHJveHk6
OmluaXRDb250ZXh0SWZOZWVkZWQpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1dvcmtlckNvbnRl
eHRFeGVjdXRpb25Qcm94eS5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3Jl
OjpXb3JrZXJDb250ZXh0RXhlY3V0aW9uUHJveHk6OnBlckNvbnRleHREYXRhKToKKyAgICAgICAg
KFdvcmtlckNvbnRleHRFeGVjdXRpb25Qcm94eSk6CisKIDIwMTItMDgtMDkgIEFkYW0gQmFydGgg
IDxhYmFydGhAd2Via2l0Lm9yZz4KIAogICAgICAgICBTYW5kYm94aW5nIHZpZXcgc291cmNlIGRv
Y3VtZW50cyBpcyBpbmVmZmVjdGl2ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvVXNlVjgu
Y21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9Vc2VWOC5jbWFrZQppbmRleCA3NjgwZWRjZDQzMGZmNGQ1
YmFiOGU5YmY5NTI3MzkzZmEyMDY1ZmFhLi5lYWU5NjQzYzc2M2E0MDA0YzJjNWZjZjE0NmJlM2Nk
ZGY1ZjBmZWQ3IDEwMDc1NQotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Vc2VWOC5jbWFrZQorKysgYi9T
b3VyY2UvV2ViQ29yZS9Vc2VWOC5jbWFrZQpAQCAtNjEsNiArNjEsNyBAQCBMSVNUKEFQUEVORCBX
ZWJDb3JlX1NPVVJDRVMKICAgICBiaW5kaW5ncy92OC9WOElzb2xhdGVkQ29udGV4dC5jcHAKICAg
ICBiaW5kaW5ncy92OC9WOExhenlFdmVudExpc3RlbmVyLmNwcAogICAgIGJpbmRpbmdzL3Y4L1Y4
Tm9kZUZpbHRlckNvbmRpdGlvbi5jcHAKKyAgICBiaW5kaW5ncy92OC9WOFBlckNvbnRleHREYXRh
LmNwcAogICAgIGJpbmRpbmdzL3Y4L1Y4UHJveHkuY3BwCiAgICAgYmluZGluZ3MvdjgvVjhSZWN1
cnNpb25TY29wZS5jcHAKICAgICBiaW5kaW5ncy92OC9WOFV0aWxpdGllcy5jcHAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaSBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
Z3lwaQppbmRleCBiNDljMzIwMzE1OWRhZGYwMmIyYTcwYzdjNGU5Y2YzM2QwMTI1MmI4Li42ZjI2
ZjU1MmViN2Q4NmRhZjZlNzdmZWUzZjhmYTc4MzFhNDA2NTQwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLmd5cGkKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCkBA
IC0yMjQ1LDEwICsyMjQ1LDYgQEAKICAgICAgICAgICAgICdiaW5kaW5ncy92OC9WOEJpbmRpbmdI
ZWxwZXJzLmNwcCcsCiAgICAgICAgICAgICAnYmluZGluZ3MvdjgvVjhCaW5kaW5nSGVscGVycy5o
JywKICAgICAgICAgICAgICdiaW5kaW5ncy92OC9WOEJpbmRpbmdNYWNyb3MuaCcsCi0gICAgICAg
ICAgICAnYmluZGluZ3MvdjgvVjhCaW5kaW5nUGVyQ29udGV4dERhdGEuY3BwJywKLSAgICAgICAg
ICAgICdiaW5kaW5ncy92OC9WOEJpbmRpbmdQZXJDb250ZXh0RGF0YS5oJywKLSAgICAgICAgICAg
ICdiaW5kaW5ncy92OC9WOFBlcklzb2xhdGVEYXRhLmNwcCcsCi0gICAgICAgICAgICAnYmluZGlu
Z3MvdjgvVjhQZXJJc29sYXRlRGF0YS5oJywKICAgICAgICAgICAgICdiaW5kaW5ncy92OC9WOENv
bmZpZ3VyZURPTUF0dHJpYnV0ZXNBbmRNZXRob2RzLmNwcCcsCiAgICAgICAgICAgICAnYmluZGlu
Z3MvdjgvVjhDb25maWd1cmVET01BdHRyaWJ1dGVzQW5kTWV0aG9kcy5oJywKICAgICAgICAgICAg
ICdiaW5kaW5ncy92OC9WOENvbGxlY3Rpb24uY3BwJywKQEAgLTIyNzksNiArMjI3NSwxMCBAQAog
ICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L1Y4TlBVdGlscy5oJywKICAgICAgICAgICAgICdiaW5k
aW5ncy92OC9WOE5vZGVGaWx0ZXJDb25kaXRpb24uY3BwJywKICAgICAgICAgICAgICdiaW5kaW5n
cy92OC9WOE5vZGVGaWx0ZXJDb25kaXRpb24uaCcsCisgICAgICAgICAgICAnYmluZGluZ3Mvdjgv
VjhQZXJDb250ZXh0RGF0YS5jcHAnLAorICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L1Y4UGVyQ29u
dGV4dERhdGEuaCcsCisgICAgICAgICAgICAnYmluZGluZ3MvdjgvVjhQZXJJc29sYXRlRGF0YS5j
cHAnLAorICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L1Y4UGVySXNvbGF0ZURhdGEuaCcsCiAgICAg
ICAgICAgICAnYmluZGluZ3MvdjgvVjhQcm94eS5jcHAnLAogICAgICAgICAgICAgJ2JpbmRpbmdz
L3Y4L1Y4UHJveHkuaCcsCiAgICAgICAgICAgICAnYmluZGluZ3MvdjgvVjhSZWN1cnNpb25TY29w
ZS5jcHAnLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhCaW5kaW5n
UGVyQ29udGV4dERhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhCaW5kaW5n
UGVyQ29udGV4dERhdGEuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmODEzZjJl
MmE5ODY5OTAyOGY2ZTMwZWJlZWEwM2E3OTk3YTRkZWZiLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4Qmlu
ZGluZ1BlckNvbnRleHREYXRhLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDEyOSArMCwwIEBACi0v
KgotICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
Ci0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0gKiBtZXQ6Ci0gKgotICogICAg
ICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSAqIGluIHRoZSBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSAq
IGRpc3RyaWJ1dGlvbi4KLSAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4g
bm9yIHRoZSBuYW1lcyBvZiBpdHMKLSAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRv
cnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0gKiB0aGlzIHNvZnR3YXJlIHdp
dGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRP
UlMKLSAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSAqIEEgUEFSVElDVUxBUiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0gKiBPV05F
UiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwKLSAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotICogREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0g
KiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lu
Y2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIlY4QmluZGluZ1BlckNvbnRleHREYXRhLmgiCi0K
LSNpbmNsdWRlICJTYWZlQWxsb2NhdGlvbi5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLXZv
aWQgVjhCaW5kaW5nUGVyQ29udGV4dERhdGE6OmRpc3Bvc2UoKQotewotICAgIHsKLSAgICAgICAg
V3JhcHBlckJvaWxlcnBsYXRlTWFwOjppdGVyYXRvciBpdCA9IG1fd3JhcHBlckJvaWxlcnBsYXRl
cy5iZWdpbigpOwotICAgICAgICBmb3IgKDsgaXQgIT0gbV93cmFwcGVyQm9pbGVycGxhdGVzLmVu
ZCgpOyArK2l0KSB7Ci0gICAgICAgICAgICB2ODo6UGVyc2lzdGVudDx2ODo6T2JqZWN0PiB3cmFw
cGVyID0gaXQtPnNlY29uZDsKLSAgICAgICAgICAgIHdyYXBwZXIuRGlzcG9zZSgpOwotICAgICAg
ICB9Ci0gICAgICAgIG1fd3JhcHBlckJvaWxlcnBsYXRlcy5jbGVhcigpOwotICAgIH0KLQotICAg
IHsKLSAgICAgICAgQ29uc3RydWN0b3JNYXA6Oml0ZXJhdG9yIGl0ID0gbV9jb25zdHJ1Y3Rvck1h
cC5iZWdpbigpOwotICAgICAgICBmb3IgKDsgaXQgIT0gbV9jb25zdHJ1Y3Rvck1hcC5lbmQoKTsg
KytpdCkgewotICAgICAgICAgICAgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uPiB3cmFwcGVy
ID0gaXQtPnNlY29uZDsKLSAgICAgICAgICAgIHdyYXBwZXIuRGlzcG9zZSgpOwotICAgICAgICB9
Ci0gICAgICAgIG1fY29uc3RydWN0b3JNYXAuY2xlYXIoKTsKLSAgICB9Ci19Ci0KLSNkZWZpbmUg
VjhfU1RPUkVfUFJJTU9SRElBTChuYW1lLCBOYW1lKSBcCi17IFwKLSAgICBBU1NFUlQobV8jI25h
bWUjI1Byb3RvdHlwZS5nZXQoKS5Jc0VtcHR5KCkpOyBcCi0gICAgdjg6OkhhbmRsZTx2ODo6U3Ry
aW5nPiBzeW1ib2wgPSB2ODo6U3RyaW5nOjpOZXdTeW1ib2woI05hbWUpOyBcCi0gICAgaWYgKHN5
bWJvbC5Jc0VtcHR5KCkpIFwKLSAgICAgICAgcmV0dXJuIGZhbHNlOyBcCi0gICAgdjg6OkhhbmRs
ZTx2ODo6T2JqZWN0PiBvYmplY3QgPSB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+OjpDYXN0KG1fY29u
dGV4dC0+R2xvYmFsKCktPkdldChzeW1ib2wpKTsgXAotICAgIGlmIChvYmplY3QuSXNFbXB0eSgp
KSBcCi0gICAgICAgIHJldHVybiBmYWxzZTsgXAotICAgIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBw
cm90b3R5cGVWYWx1ZSA9IG9iamVjdC0+R2V0KHByb3RvdHlwZVN0cmluZyk7IFwKLSAgICBpZiAo
cHJvdG90eXBlVmFsdWUuSXNFbXB0eSgpKSBcCi0gICAgICAgIHJldHVybiBmYWxzZTsgXAotICAg
IG1fIyNuYW1lIyNQcm90b3R5cGUuc2V0KHByb3RvdHlwZVZhbHVlKTsgXAotfQotCi1ib29sIFY4
QmluZGluZ1BlckNvbnRleHREYXRhOjppbml0KCkKLXsKLSAgICB2ODo6SGFuZGxlPHY4OjpTdHJp
bmc+IHByb3RvdHlwZVN0cmluZyA9IHY4OjpTdHJpbmc6Ok5ld1N5bWJvbCgicHJvdG90eXBlIik7
Ci0gICAgaWYgKHByb3RvdHlwZVN0cmluZy5Jc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiBmYWxz
ZTsKLQotICAgIFY4X1NUT1JFX1BSSU1PUkRJQUwoZXJyb3IsIEVycm9yKTsKLSAgICBWOF9TVE9S
RV9QUklNT1JESUFMKG9iamVjdCwgT2JqZWN0KTsKLQotICAgIHJldHVybiB0cnVlOwotfQotCi0j
dW5kZWYgVjhfU1RPUkVfUFJJTU9SRElBTAotCi12ODo6TG9jYWw8djg6Ok9iamVjdD4gVjhCaW5k
aW5nUGVyQ29udGV4dERhdGE6OmNyZWF0ZVdyYXBwZXJGcm9tQ2FjaGVTbG93Q2FzZShXcmFwcGVy
VHlwZUluZm8qIHR5cGUpCi17Ci0gICAgQVNTRVJUKCFtX2Vycm9yUHJvdG90eXBlLmdldCgpLklz
RW1wdHkoKSk7Ci0gICAgQVNTRVJUKCFtX29iamVjdFByb3RvdHlwZS5nZXQoKS5Jc0VtcHR5KCkp
OwotCi0gICAgdjg6OkNvbnRleHQ6OlNjb3BlIHNjb3BlKG1fY29udGV4dCk7Ci0gICAgdjg6Okxv
Y2FsPHY4OjpGdW5jdGlvbj4gZnVuY3Rpb24gPSBjb25zdHJ1Y3RvckZvclR5cGUodHlwZSk7Ci0g
ICAgdjg6OkxvY2FsPHY4OjpPYmplY3Q+IGluc3RhbmNlID0gU2FmZUFsbG9jYXRpb246Om5ld0lu
c3RhbmNlKGZ1bmN0aW9uKTsKLSAgICBpZiAoIWluc3RhbmNlLklzRW1wdHkoKSkgewotICAgICAg
ICBtX3dyYXBwZXJCb2lsZXJwbGF0ZXMuc2V0KHR5cGUsIHY4OjpQZXJzaXN0ZW50PHY4OjpPYmpl
Y3Q+OjpOZXcoaW5zdGFuY2UpKTsKLSAgICAgICAgcmV0dXJuIGluc3RhbmNlLT5DbG9uZSgpOwot
ICAgIH0KLSAgICByZXR1cm4gdjg6OkxvY2FsPHY4OjpPYmplY3Q+KCk7Ci19Ci0KLXY4OjpMb2Nh
bDx2ODo6RnVuY3Rpb24+IFY4QmluZGluZ1BlckNvbnRleHREYXRhOjpjb25zdHJ1Y3RvckZvclR5
cGVTbG93Q2FzZShXcmFwcGVyVHlwZUluZm8qIHR5cGUpCi17Ci0gICAgQVNTRVJUKCFtX2Vycm9y
UHJvdG90eXBlLmdldCgpLklzRW1wdHkoKSk7Ci0gICAgQVNTRVJUKCFtX29iamVjdFByb3RvdHlw
ZS5nZXQoKS5Jc0VtcHR5KCkpOwotCi0gICAgdjg6OkNvbnRleHQ6OlNjb3BlIHNjb3BlKG1fY29u
dGV4dCk7Ci0gICAgdjg6OkhhbmRsZTx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gZnVuY3Rpb25UZW1w
bGF0ZSA9IHR5cGUtPmdldFRlbXBsYXRlKCk7Ci0gICAgLy8gR2V0dGluZyB0aGUgZnVuY3Rpb24g
bWlnaHQgZmFpbCBpZiB3ZSdyZSBydW5uaW5nIG91dCBvZiBzdGFjayBvciBtZW1vcnkuCi0gICAg
djg6OlRyeUNhdGNoIHRyeUNhdGNoOwotICAgIHY4OjpMb2NhbDx2ODo6RnVuY3Rpb24+IGZ1bmN0
aW9uID0gZnVuY3Rpb25UZW1wbGF0ZS0+R2V0RnVuY3Rpb24oKTsKLSAgICBpZiAoZnVuY3Rpb24u
SXNFbXB0eSgpKQotICAgICAgICByZXR1cm4gdjg6OkxvY2FsPHY4OjpGdW5jdGlvbj4oKTsKLQot
ICAgIGZ1bmN0aW9uLT5TZXRQcm90b3R5cGUobV9vYmplY3RQcm90b3R5cGUuZ2V0KCkpOwotCi0g
ICAgaWYgKHR5cGUtPndyYXBwZXJUeXBlUHJvdG90eXBlID09IFdyYXBwZXJUeXBlRXJyb3JQcm90
b3R5cGUpIHsKLSAgICAgICAgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gcHJvdG90eXBlVmFsdWUgPSBm
dW5jdGlvbi0+R2V0KHY4OjpTdHJpbmc6Ok5ld1N5bWJvbCgicHJvdG90eXBlIikpOwotICAgICAg
ICBpZiAoIXByb3RvdHlwZVZhbHVlLklzRW1wdHkoKSAmJiBwcm90b3R5cGVWYWx1ZS0+SXNPYmpl
Y3QoKSkKLSAgICAgICAgICAgIHY4OjpMb2NhbDx2ODo6T2JqZWN0Pjo6Q2FzdChwcm90b3R5cGVW
YWx1ZSktPlNldFByb3RvdHlwZShtX2Vycm9yUHJvdG90eXBlLmdldCgpKTsKLSAgICB9Ci0KLSAg
ICBtX2NvbnN0cnVjdG9yTWFwLnNldCh0eXBlLCB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb24+
OjpOZXcoZnVuY3Rpb24pKTsKLQotICAgIHJldHVybiBmdW5jdGlvbjsKLX0KLQotfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhC
aW5kaW5nUGVyQ29udGV4dERhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4Qmlu
ZGluZ1BlckNvbnRleHREYXRhLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDVlOTM1
NGIxMmZlODJjYWM4YTY1NzVjYWQzMzBjMjBjNmQ4ZDU0YWUuLjAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhC
aW5kaW5nUGVyQ29udGV4dERhdGEuaAorKysgL2Rldi9udWxsCkBAIC0xLDk5ICswLDAgQEAKLS8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
LSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSAqIG1ldDoKLSAqCi0gKiAgICAg
KiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAotICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgotICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotICogaW4gdGhlIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotICog
ZGlzdHJpYnV0aW9uLgotICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBu
b3IgdGhlIG5hbWVzIG9mIGl0cwotICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9y
c2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSAqIHRoaXMgc29mdHdhcmUgd2l0
aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0gKgotICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9S
UwotICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotICogQSBQQVJUSUNVTEFSIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSAqIE9XTkVS
IE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLAotICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0gKiBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSAq
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWZu
ZGVmIFY4QmluZGluZ1BlckNvbnRleHREYXRhX2gKLSNkZWZpbmUgVjhCaW5kaW5nUGVyQ29udGV4
dERhdGFfaAotCi0jaW5jbHVkZSAiT3duSGFuZGxlLmgiCi0jaW5jbHVkZSAiV3JhcHBlclR5cGVJ
bmZvLmgiCi0jaW5jbHVkZSA8djguaD4KLSNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgotI2luY2x1
ZGUgPHd0Zi9QYXNzT3duUHRyLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgVjhC
aW5kaW5nUGVyQ29udGV4dERhdGEgewotcHVibGljOgotICAgIHN0YXRpYyBQYXNzT3duUHRyPFY4
QmluZGluZ1BlckNvbnRleHREYXRhPiBjcmVhdGUodjg6OkhhbmRsZTx2ODo6Q29udGV4dD4gY29u
dGV4dCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFB0cihuZXcgVjhCaW5kaW5nUGVyQ29u
dGV4dERhdGEoY29udGV4dCkpOwotICAgIH0KLQotICAgIH5WOEJpbmRpbmdQZXJDb250ZXh0RGF0
YSgpCi0gICAgewotICAgICAgICBkaXNwb3NlKCk7Ci0gICAgfQotCi0gICAgYm9vbCBpbml0KCk7
Ci0KLSAgICAvLyBUbyBjcmVhdGUgSlMgV3JhcHBlciBvYmplY3RzLCB3ZSBjcmVhdGUgYSBjYWNo
ZSBvZiBhICdib2lsZXIgcGxhdGUnCi0gICAgLy8gb2JqZWN0LCBhbmQgdGhlbiBzaW1wbHkgQ2xv
bmUgdGhhdCBvYmplY3QgZWFjaCB0aW1lIHdlIG5lZWQgYSBuZXcgb25lLgotICAgIC8vIFRoaXMg
aXMgZmFzdGVyIHRoYW4gZ29pbmcgdGhyb3VnaCB0aGUgZnVsbCBvYmplY3QgY3JlYXRpb24gcHJv
Y2Vzcy4KLSAgICB2ODo6TG9jYWw8djg6Ok9iamVjdD4gY3JlYXRlV3JhcHBlckZyb21DYWNoZShX
cmFwcGVyVHlwZUluZm8qIHR5cGUpCi0gICAgewotICAgICAgICB2ODo6UGVyc2lzdGVudDx2ODo6
T2JqZWN0PiBib2lsZXJwbGF0ZSA9IG1fd3JhcHBlckJvaWxlcnBsYXRlcy5nZXQodHlwZSk7Ci0g
ICAgICAgIHJldHVybiAhYm9pbGVycGxhdGUuSXNFbXB0eSgpID8gYm9pbGVycGxhdGUtPkNsb25l
KCkgOiBjcmVhdGVXcmFwcGVyRnJvbUNhY2hlU2xvd0Nhc2UodHlwZSk7Ci0gICAgfQotCi0gICAg
djg6OkxvY2FsPHY4OjpGdW5jdGlvbj4gY29uc3RydWN0b3JGb3JUeXBlKFdyYXBwZXJUeXBlSW5m
byogdHlwZSkKLSAgICB7Ci0gICAgICAgIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvbj4gZnVu
Y3Rpb24gPSBtX2NvbnN0cnVjdG9yTWFwLmdldCh0eXBlKTsKLSAgICAgICAgaWYgKCFmdW5jdGlv
bi5Jc0VtcHR5KCkpCi0gICAgICAgICAgICByZXR1cm4gdjg6OkxvY2FsPHY4OjpGdW5jdGlvbj46
Ok5ldyhmdW5jdGlvbik7Ci0gICAgICAgIHJldHVybiBjb25zdHJ1Y3RvckZvclR5cGVTbG93Q2Fz
ZSh0eXBlKTsKLSAgICB9Ci0KLXByaXZhdGU6Ci0gICAgZXhwbGljaXQgVjhCaW5kaW5nUGVyQ29u
dGV4dERhdGEodjg6OkhhbmRsZTx2ODo6Q29udGV4dD4gY29udGV4dCkKLSAgICAgICAgOiBtX2Nv
bnRleHQoY29udGV4dCkKLSAgICB7Ci0gICAgfQotCi0gICAgdm9pZCBkaXNwb3NlKCk7Ci0KLSAg
ICB2ODo6TG9jYWw8djg6Ok9iamVjdD4gY3JlYXRlV3JhcHBlckZyb21DYWNoZVNsb3dDYXNlKFdy
YXBwZXJUeXBlSW5mbyopOwotICAgIHY4OjpMb2NhbDx2ODo6RnVuY3Rpb24+IGNvbnN0cnVjdG9y
Rm9yVHlwZVNsb3dDYXNlKFdyYXBwZXJUeXBlSW5mbyopOwotCi0gICAgLy8gRm9yIGVhY2ggcG9z
c2libGUgdHlwZSBvZiB3cmFwcGVyLCB3ZSBrZWVwIGEgYm9pbGVycGxhdGUgb2JqZWN0LgotICAg
IC8vIFRoZSBib2lsZXJwbGF0ZSBpcyB1c2VkIHRvIGNyZWF0ZSBhZGRpdGlvbmFsIHdyYXBwZXJz
IG9mIHRoZSBzYW1lIHR5cGUuCi0gICAgdHlwZWRlZiBXVEY6Okhhc2hNYXA8V3JhcHBlclR5cGVJ
bmZvKiwgdjg6OlBlcnNpc3RlbnQ8djg6Ok9iamVjdD4gPiBXcmFwcGVyQm9pbGVycGxhdGVNYXA7
Ci0gICAgV3JhcHBlckJvaWxlcnBsYXRlTWFwIG1fd3JhcHBlckJvaWxlcnBsYXRlczsKLQotICAg
IHR5cGVkZWYgV1RGOjpIYXNoTWFwPFdyYXBwZXJUeXBlSW5mbyosIHY4OjpQZXJzaXN0ZW50PHY4
OjpGdW5jdGlvbj4gPiBDb25zdHJ1Y3Rvck1hcDsKLSAgICBDb25zdHJ1Y3Rvck1hcCBtX2NvbnN0
cnVjdG9yTWFwOwotCi0gICAgdjg6OkhhbmRsZTx2ODo6Q29udGV4dD4gbV9jb250ZXh0OwotICAg
IE93bkhhbmRsZTx2ODo6VmFsdWU+IG1fZXJyb3JQcm90b3R5cGU7Ci0gICAgT3duSGFuZGxlPHY4
OjpWYWx1ZT4gbV9vYmplY3RQcm90b3R5cGU7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
Ci0KLSNlbmRpZiAvLyBWOEJpbmRpbmdQZXJDb250ZXh0RGF0YV9oCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOERPTVdpbmRvd1NoZWxsLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3Y4L1Y4RE9NV2luZG93U2hlbGwuY3BwCmluZGV4IDU5MmJhNDQ1YTUxNzI2
MmFlOWUxNWIyOWNlYTE5MTcwNjNhZDlhMWYuLjZmMTg0ZDA5ZGU1OTI5YzgyMDdlYzA5M2Q5Yjgy
M2RkZGM1MTM2MjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4RE9N
V2luZG93U2hlbGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4RE9NV2lu
ZG93U2hlbGwuY3BwCkBAIC01MCw3ICs1MCw2IEBACiAjaW5jbHVkZSAiU3RvcmFnZU5hbWVzcGFj
ZS5oIgogI2luY2x1ZGUgIlN0eWxlUHJvcGVydHlTZXQuaCIKICNpbmNsdWRlICJWOEJpbmRpbmcu
aCIKLSNpbmNsdWRlICJWOEJpbmRpbmdQZXJDb250ZXh0RGF0YS5oIgogI2luY2x1ZGUgIlY4Q29s
bGVjdGlvbi5oIgogI2luY2x1ZGUgIlY4RE9NTWFwLmgiCiAjaW5jbHVkZSAiVjhET01XaW5kb3cu
aCIKQEAgLTYwLDYgKzU5LDcgQEAKICNpbmNsdWRlICJWOEhpZGRlblByb3BlcnR5TmFtZS5oIgog
I2luY2x1ZGUgIlY4SGlzdG9yeS5oIgogI2luY2x1ZGUgIlY4TG9jYXRpb24uaCIKKyNpbmNsdWRl
ICJWOFBlckNvbnRleHREYXRhLmgiCiAjaW5jbHVkZSAiVjhQcm94eS5oIgogI2luY2x1ZGUgIldv
cmtlckNvbnRleHRFeGVjdXRpb25Qcm94eS5oIgogCkBAIC0zMjQsNyArMzI0LDcgQEAgYm9vbCBW
OERPTVdpbmRvd1NoZWxsOjppbml0Q29udGV4dElmTmVlZGVkKCkKICNlbmRpZgogICAgIH0KIAot
ICAgIG1fcGVyQ29udGV4dERhdGEgPSBWOEJpbmRpbmdQZXJDb250ZXh0RGF0YTo6Y3JlYXRlKG1f
Y29udGV4dCk7CisgICAgbV9wZXJDb250ZXh0RGF0YSA9IFY4UGVyQ29udGV4dERhdGE6OmNyZWF0
ZShtX2NvbnRleHQpOwogICAgIGlmICghbV9wZXJDb250ZXh0RGF0YS0+aW5pdCgpKSB7CiAgICAg
ICAgIGRpc3Bvc2VDb250ZXh0SGFuZGxlcygpOwogICAgICAgICByZXR1cm4gZmFsc2U7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOERPTVdpbmRvd1NoZWxsLmggYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOERPTVdpbmRvd1NoZWxsLmgKaW5kZXggMDY3NmYx
NDUwNDljYjFlZGRjOTBjNDIzZGM2MmMyMDQyYWEwNjM4OS4uYjI1YmJmYzQ4OGVkN2Q2ZDUzOTk1
Y2Y2OWM1Y2E5NmYyMDVmODFlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
djgvVjhET01XaW5kb3dTaGVsbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4
RE9NV2luZG93U2hlbGwuaApAQCAtMzEsNyArMzEsNyBAQAogI2lmbmRlZiBWOERPTVdpbmRvd1No
ZWxsX2gKICNkZWZpbmUgVjhET01XaW5kb3dTaGVsbF9oCiAKLSNpbmNsdWRlICJWOEJpbmRpbmdQ
ZXJDb250ZXh0RGF0YS5oIgorI2luY2x1ZGUgIlY4UGVyQ29udGV4dERhdGEuaCIKICNpbmNsdWRl
ICJXcmFwcGVyVHlwZUluZm8uaCIKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUg
PHd0Zi9IYXNoTWFwLmg+CkBAIC03OCw3ICs3OCw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgZGVz
dHJveUdsb2JhbCgpOwogCi0gICAgVjhCaW5kaW5nUGVyQ29udGV4dERhdGEqIHBlckNvbnRleHRE
YXRhKCkgeyByZXR1cm4gbV9wZXJDb250ZXh0RGF0YS5nZXQoKTsgfQorICAgIFY4UGVyQ29udGV4
dERhdGEqIHBlckNvbnRleHREYXRhKCkgeyByZXR1cm4gbV9wZXJDb250ZXh0RGF0YS5nZXQoKTsg
fQogCiBwcml2YXRlOgogICAgIFY4RE9NV2luZG93U2hlbGwoRnJhbWUqKTsKQEAgLTk3LDcgKzk3
LDcgQEAgcHJpdmF0ZToKIAogICAgIEZyYW1lKiBtX2ZyYW1lOwogCi0gICAgT3duUHRyPFY4Qmlu
ZGluZ1BlckNvbnRleHREYXRhPiBtX3BlckNvbnRleHREYXRhOworICAgIE93blB0cjxWOFBlckNv
bnRleHREYXRhPiBtX3BlckNvbnRleHREYXRhOwogCiAgICAgdjg6OlBlcnNpc3RlbnQ8djg6OkNv
bnRleHQ+IG1fY29udGV4dDsKICAgICB2ODo6UGVyc2lzdGVudDx2ODo6T2JqZWN0PiBtX2dsb2Jh
bDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4RE9NV3JhcHBlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOERPTVdyYXBwZXIuY3BwCmluZGV4IGM5
YzdlMTU5OTFiMzBlNjI0NWQ0YTJkM2U2ZTkxMTgwYzNlYzYzOTQuLjkyMmM5NmE4YTM5NjRiMDFl
NzRkNDE1YTQ4Njk1OTllMDMyY2UzMzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3Y4L1Y4RE9NV3JhcHBlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvdjgv
VjhET01XcmFwcGVyLmNwcApAQCAtNDEsNyArNDEsNiBAQAogI2luY2x1ZGUgIlN0eWxlUHJvcGVy
dHlTZXQuaCIKICNpbmNsdWRlICJWOEFic3RyYWN0RXZlbnRMaXN0ZW5lci5oIgogI2luY2x1ZGUg
IlY4QmluZGluZy5oIgotI2luY2x1ZGUgIlY4QmluZGluZ1BlckNvbnRleHREYXRhLmgiCiAjaW5j
bHVkZSAiVjhDb2xsZWN0aW9uLmgiCiAjaW5jbHVkZSAiVjhFdmVudExpc3RlbmVyLmgiCiAjaW5j
bHVkZSAiVjhFdmVudExpc3RlbmVyTGlzdC5oIgpAQCAtNTIsNiArNTEsNyBAQAogI2luY2x1ZGUg
IlY4TmFtZWROb2RlTWFwLmgiCiAjaW5jbHVkZSAiVjhOb2RlRmlsdGVyQ29uZGl0aW9uLmgiCiAj
aW5jbHVkZSAiVjhOb2RlTGlzdC5oIgorI2luY2x1ZGUgIlY4UGVyQ29udGV4dERhdGEuaCIKICNp
bmNsdWRlICJWOFByb3h5LmgiCiAjaW5jbHVkZSAiVjhTdHlsZVNoZWV0LmgiCiAjaW5jbHVkZSAi
VjhXb3JrZXJDb250ZXh0RXZlbnRMaXN0ZW5lci5oIgpAQCAtOTUsNyArOTUsNyBAQCB2ODo6TG9j
YWw8djg6OkZ1bmN0aW9uPiBWOERPTVdyYXBwZXI6OmNvbnN0cnVjdG9yRm9yVHlwZShXcmFwcGVy
VHlwZUluZm8qIHR5cGUsCiAgICAgaWYgKCFmcmFtZSkKICAgICAgICAgcmV0dXJuIHY4OjpMb2Nh
bDx2ODo6RnVuY3Rpb24+KCk7CiAKLSAgICBpZiAoVjhCaW5kaW5nUGVyQ29udGV4dERhdGEqIGNv
bnRleHREYXRhID0gVjhQcm94eTo6cmV0cmlldmVQZXJDb250ZXh0RGF0YShmcmFtZSkpCisgICAg
aWYgKFY4UGVyQ29udGV4dERhdGEqIGNvbnRleHREYXRhID0gVjhQcm94eTo6cmV0cmlldmVQZXJD
b250ZXh0RGF0YShmcmFtZSkpCiAgICAgICAgIHJldHVybiBjb250ZXh0RGF0YS0+Y29uc3RydWN0
b3JGb3JUeXBlKHR5cGUpOwogCiAgICAgcmV0dXJuIHY4OjpMb2NhbDx2ODo6RnVuY3Rpb24+KCk7
CkBAIC0xMTAsMTQgKzExMCwxNCBAQCB2ODo6TG9jYWw8djg6OkZ1bmN0aW9uPiBWOERPTVdyYXBw
ZXI6OmNvbnN0cnVjdG9yRm9yVHlwZShXcmFwcGVyVHlwZUluZm8qIHR5cGUsCiB9CiAjZW5kaWYK
IAotVjhCaW5kaW5nUGVyQ29udGV4dERhdGEqIFY4RE9NV3JhcHBlcjo6cGVyQ29udGV4dERhdGEo
VjhQcm94eSogcHJveHkpCitWOFBlckNvbnRleHREYXRhKiBWOERPTVdyYXBwZXI6OnBlckNvbnRl
eHREYXRhKFY4UHJveHkqIHByb3h5KQogewogICAgIFY4RE9NV2luZG93U2hlbGwqIHNoZWxsID0g
cHJveHktPndpbmRvd1NoZWxsKCk7CiAgICAgcmV0dXJuIHNoZWxsID8gc2hlbGwtPnBlckNvbnRl
eHREYXRhKCkgOiAwOwogfQogCiAjaWYgRU5BQkxFKFdPUktFUlMpCi1WOEJpbmRpbmdQZXJDb250
ZXh0RGF0YSogVjhET01XcmFwcGVyOjpwZXJDb250ZXh0RGF0YShXb3JrZXJDb250ZXh0KikKK1Y4
UGVyQ29udGV4dERhdGEqIFY4RE9NV3JhcHBlcjo6cGVyQ29udGV4dERhdGEoV29ya2VyQ29udGV4
dCopCiB7CiAgICAgV29ya2VyU2NyaXB0Q29udHJvbGxlciogY29udHJvbGxlciA9IFdvcmtlclNj
cmlwdENvbnRyb2xsZXI6OmNvbnRyb2xsZXJGb3JDb250ZXh0KCk7CiAgICAgV29ya2VyQ29udGV4
dEV4ZWN1dGlvblByb3h5KiBwcm94eSA9IGNvbnRyb2xsZXIgPyBjb250cm9sbGVyLT5wcm94eSgp
IDogMDsKQEAgLTE3MSw3ICsxNzEsNyBAQCB2ODo6TG9jYWw8djg6Ok9iamVjdD4gVjhET01XcmFw
cGVyOjppbnN0YW50aWF0ZVY4T2JqZWN0KFY4UHJveHkqIHByb3h5LCBXcmFwcGVyVAogI2lmIEVO
QUJMRShXT1JLRVJTKQogICAgIFdvcmtlckNvbnRleHQqIHdvcmtlckNvbnRleHQgPSAwOwogI2Vu
ZGlmCi0gICAgVjhCaW5kaW5nUGVyQ29udGV4dERhdGEqIGNvbnRleHREYXRhID0gMDsKKyAgICBW
OFBlckNvbnRleHREYXRhKiBjb250ZXh0RGF0YSA9IDA7CiAgICAgVjhJc29sYXRlZENvbnRleHQq
IGlzb2xhdGVkQ29udGV4dDsKICAgICBpZiAoVU5MSUtFTFkoISEoaXNvbGF0ZWRDb250ZXh0ID0g
VjhJc29sYXRlZENvbnRleHQ6OmdldEVudGVyZWQoKSkpKSB7CiAgICAgICAgIGNvbnRleHREYXRh
ID0gaXNvbGF0ZWRDb250ZXh0LT5wZXJDb250ZXh0RGF0YSgpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvdjgvVjhET01XcmFwcGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy92OC9WOERPTVdyYXBwZXIuaAppbmRleCBkZWE4ZTg4MDUyOTk0YTIyNWM2ZmJlOWViOWNj
N2Y0MTI3N2I4MmZjLi5kOWU4MDU5ZTQyMGM2ZjNhYTg1ZjI2MDk5MzFjM2YyYTA2ZWM3ZGFjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOERPTVdyYXBwZXIuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOERPTVdyYXBwZXIuaApAQCAtNTIsNyArNTIs
NyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgY2xhc3MgRXZlbnRUYXJnZXQ7CiAgICAgY2xh
c3MgRnJhbWU7CiAgICAgY2xhc3MgTm9kZTsKLSAgICBjbGFzcyBWOEJpbmRpbmdQZXJDb250ZXh0
RGF0YTsKKyAgICBjbGFzcyBWOFBlckNvbnRleHREYXRhOwogICAgIGNsYXNzIFY4UHJveHk7CiAg
ICAgY2xhc3MgV29ya2VyQ29udGV4dDsKICAgICBjbGFzcyBYUGF0aFJlc29sdmVyOwpAQCAtMTQ4
LDkgKzE0OCw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgICAgIHJldHVybiBkb21O
b2RlTWFwLmdldChub2RlKTsKICAgICAgICAgfQogICAgIHByaXZhdGU6Ci0gICAgICAgIHN0YXRp
YyBWOEJpbmRpbmdQZXJDb250ZXh0RGF0YSogcGVyQ29udGV4dERhdGEoVjhQcm94eSopOworICAg
ICAgICBzdGF0aWMgVjhQZXJDb250ZXh0RGF0YSogcGVyQ29udGV4dERhdGEoVjhQcm94eSopOwog
I2lmIEVOQUJMRShXT1JLRVJTKQotICAgICAgICBzdGF0aWMgVjhCaW5kaW5nUGVyQ29udGV4dERh
dGEqIHBlckNvbnRleHREYXRhKFdvcmtlckNvbnRleHQqKTsKKyAgICAgICAgc3RhdGljIFY4UGVy
Q29udGV4dERhdGEqIHBlckNvbnRleHREYXRhKFdvcmtlckNvbnRleHQqKTsKICNlbmRpZgogICAg
IH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4SXNvbGF0ZWRD
b250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4SXNvbGF0ZWRDb250ZXh0
LmNwcAppbmRleCA2Y2Y2NTQzMjhmYjhlNTllOGEyMDI0MmI4ZDQyNzA5MjA4ZWFhMzRjLi5hNjAw
MTM5OTUxMmNiNDM2YzYyYzQ1NDRmMTJiMmE0Mzg3YjdjMmRmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy92OC9WOElzb2xhdGVkQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvdjgvVjhJc29sYXRlZENvbnRleHQuY3BwCkBAIC0zNiw4ICszNiw4IEBA
CiAjaW5jbHVkZSAiRnJhbWVMb2FkZXJDbGllbnQuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JJbnN0
cnVtZW50YXRpb24uaCIKICNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgotI2luY2x1ZGUgIlY4
QmluZGluZ1BlckNvbnRleHREYXRhLmgiCiAjaW5jbHVkZSAiVjhET01XaW5kb3cuaCIKKyNpbmNs
dWRlICJWOFBlckNvbnRleHREYXRhLmgiCiAjaW5jbHVkZSAiVjhQcm94eS5oIgogI2luY2x1ZGUg
PHd0Zi9TdHJpbmdFeHRyYXMuaD4KIApAQCAtODcsNyArODcsNyBAQCBWOElzb2xhdGVkQ29udGV4
dDo6VjhJc29sYXRlZENvbnRleHQoVjhQcm94eSogcHJveHksIGludCBleHRlbnNpb25Hcm91cCwg
aW50IHdvcgogCiAgICAgZ2V0R2xvYmFsT2JqZWN0KG1fY29udGV4dC0+Z2V0KCkpLT5TZXRQb2lu
dGVySW5JbnRlcm5hbEZpZWxkKFY4RE9NV2luZG93OjplbnRlcmVkSXNvbGF0ZWRXb3JsZEluZGV4
LCB0aGlzKTsKIAotICAgIG1fcGVyQ29udGV4dERhdGEgPSBWOEJpbmRpbmdQZXJDb250ZXh0RGF0
YTo6Y3JlYXRlKG1fY29udGV4dC0+Z2V0KCkpOworICAgIG1fcGVyQ29udGV4dERhdGEgPSBWOFBl
ckNvbnRleHREYXRhOjpjcmVhdGUobV9jb250ZXh0LT5nZXQoKSk7CiAgICAgbV9wZXJDb250ZXh0
RGF0YS0+aW5pdCgpOwogCiAgICAgLy8gRklYTUU6IFRoaXMgd2lsbCBnbyBhd2F5IG9uY2Ugd2Ug
aGF2ZSBhIHdpbmRvd1NoZWxsIGZvciB0aGUgaXNvbGF0ZWQgd29ybGQuCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOElzb2xhdGVkQ29udGV4dC5oIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvdjgvVjhJc29sYXRlZENvbnRleHQuaAppbmRleCA5YmZlOGIxMGI2ZGM1
MjlmOTZiNzIxY2IwZTIzZDQ3NzQwMjhjNDIwLi5lY2QzZjZlMjcwZGY2Y2E2YmMwZDhjMGY5MDc2
YWI3N2YwNzgwMzNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOElz
b2xhdGVkQ29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4SXNvbGF0
ZWRDb250ZXh0LmgKQEAgLTQwLDcgKzQwLDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xh
c3MgU2VjdXJpdHlPcmlnaW47Ci1jbGFzcyBWOEJpbmRpbmdQZXJDb250ZXh0RGF0YTsKK2NsYXNz
IFY4UGVyQ29udGV4dERhdGE7CiBjbGFzcyBWOFByb3h5OwogCiAvLyBWOElzb2xhdGVkQ29udGV4
dApAQCAtOTcsNyArOTcsNyBAQCBwdWJsaWM6CiAgICAgU2VjdXJpdHlPcmlnaW4qIHNlY3VyaXR5
T3JpZ2luKCkgY29uc3QgeyByZXR1cm4gbV9zZWN1cml0eU9yaWdpbi5nZXQoKTsgfQogICAgIHZv
aWQgc2V0U2VjdXJpdHlPcmlnaW4oUGFzc1JlZlB0cjxTZWN1cml0eU9yaWdpbj4pOwogCi0gICAg
VjhCaW5kaW5nUGVyQ29udGV4dERhdGEqIHBlckNvbnRleHREYXRhKCkgeyByZXR1cm4gbV9wZXJD
b250ZXh0RGF0YS5nZXQoKTsgfQorICAgIFY4UGVyQ29udGV4dERhdGEqIHBlckNvbnRleHREYXRh
KCkgeyByZXR1cm4gbV9wZXJDb250ZXh0RGF0YS5nZXQoKTsgfQogCiBwcml2YXRlOgogICAgIHN0
YXRpYyB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGdldEdsb2JhbE9iamVjdCh2ODo6SGFuZGxlPHY4
OjpDb250ZXh0PiBjb250ZXh0KQpAQCAtMTIxLDcgKzEyMSw3IEBAIHByaXZhdGU6CiAKICAgICBG
cmFtZSogbV9mcmFtZTsKIAotICAgIE93blB0cjxWOEJpbmRpbmdQZXJDb250ZXh0RGF0YT4gbV9w
ZXJDb250ZXh0RGF0YTsKKyAgICBPd25QdHI8VjhQZXJDb250ZXh0RGF0YT4gbV9wZXJDb250ZXh0
RGF0YTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4UGVyQ29udGV4dERhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvdjgvVjhQZXJDb250ZXh0RGF0YS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjJkNzUwYTdhOGM2
MTgxZjkyOTkwMWRlOWExOTFjYjZmZmI3Y2IzZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4UGVyQ29udGV4dERhdGEuY3BwCkBAIC0wLDAgKzEsMTI5IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICog
ICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRo
ZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUK
KyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIElu
Yy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBl
bmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJl
IHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklC
VVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBP
V05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
CisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlY4UGVyQ29udGV4dERhdGEuaCIKKworI2lu
Y2x1ZGUgIlNhZmVBbGxvY2F0aW9uLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwordm9pZCBW
OFBlckNvbnRleHREYXRhOjpkaXNwb3NlKCkKK3sKKyAgICB7CisgICAgICAgIFdyYXBwZXJCb2ls
ZXJwbGF0ZU1hcDo6aXRlcmF0b3IgaXQgPSBtX3dyYXBwZXJCb2lsZXJwbGF0ZXMuYmVnaW4oKTsK
KyAgICAgICAgZm9yICg7IGl0ICE9IG1fd3JhcHBlckJvaWxlcnBsYXRlcy5lbmQoKTsgKytpdCkg
eworICAgICAgICAgICAgdjg6OlBlcnNpc3RlbnQ8djg6Ok9iamVjdD4gd3JhcHBlciA9IGl0LT5z
ZWNvbmQ7CisgICAgICAgICAgICB3cmFwcGVyLkRpc3Bvc2UoKTsKKyAgICAgICAgfQorICAgICAg
ICBtX3dyYXBwZXJCb2lsZXJwbGF0ZXMuY2xlYXIoKTsKKyAgICB9CisKKyAgICB7CisgICAgICAg
IENvbnN0cnVjdG9yTWFwOjppdGVyYXRvciBpdCA9IG1fY29uc3RydWN0b3JNYXAuYmVnaW4oKTsK
KyAgICAgICAgZm9yICg7IGl0ICE9IG1fY29uc3RydWN0b3JNYXAuZW5kKCk7ICsraXQpIHsKKyAg
ICAgICAgICAgIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvbj4gd3JhcHBlciA9IGl0LT5zZWNv
bmQ7CisgICAgICAgICAgICB3cmFwcGVyLkRpc3Bvc2UoKTsKKyAgICAgICAgfQorICAgICAgICBt
X2NvbnN0cnVjdG9yTWFwLmNsZWFyKCk7CisgICAgfQorfQorCisjZGVmaW5lIFY4X1NUT1JFX1BS
SU1PUkRJQUwobmFtZSwgTmFtZSkgXAoreyBcCisgICAgQVNTRVJUKG1fIyNuYW1lIyNQcm90b3R5
cGUuZ2V0KCkuSXNFbXB0eSgpKTsgXAorICAgIHY4OjpIYW5kbGU8djg6OlN0cmluZz4gc3ltYm9s
ID0gdjg6OlN0cmluZzo6TmV3U3ltYm9sKCNOYW1lKTsgXAorICAgIGlmIChzeW1ib2wuSXNFbXB0
eSgpKSBcCisgICAgICAgIHJldHVybiBmYWxzZTsgXAorICAgIHY4OjpIYW5kbGU8djg6Ok9iamVj
dD4gb2JqZWN0ID0gdjg6OkhhbmRsZTx2ODo6T2JqZWN0Pjo6Q2FzdChtX2NvbnRleHQtPkdsb2Jh
bCgpLT5HZXQoc3ltYm9sKSk7IFwKKyAgICBpZiAob2JqZWN0LklzRW1wdHkoKSkgXAorICAgICAg
ICByZXR1cm4gZmFsc2U7IFwKKyAgICB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gcHJvdG90eXBlVmFs
dWUgPSBvYmplY3QtPkdldChwcm90b3R5cGVTdHJpbmcpOyBcCisgICAgaWYgKHByb3RvdHlwZVZh
bHVlLklzRW1wdHkoKSkgXAorICAgICAgICByZXR1cm4gZmFsc2U7IFwKKyAgICBtXyMjbmFtZSMj
UHJvdG90eXBlLnNldChwcm90b3R5cGVWYWx1ZSk7IFwKK30KKworYm9vbCBWOFBlckNvbnRleHRE
YXRhOjppbml0KCkKK3sKKyAgICB2ODo6SGFuZGxlPHY4OjpTdHJpbmc+IHByb3RvdHlwZVN0cmlu
ZyA9IHY4OjpTdHJpbmc6Ok5ld1N5bWJvbCgicHJvdG90eXBlIik7CisgICAgaWYgKHByb3RvdHlw
ZVN0cmluZy5Jc0VtcHR5KCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIFY4X1NUT1JF
X1BSSU1PUkRJQUwoZXJyb3IsIEVycm9yKTsKKyAgICBWOF9TVE9SRV9QUklNT1JESUFMKG9iamVj
dCwgT2JqZWN0KTsKKworICAgIHJldHVybiB0cnVlOworfQorCisjdW5kZWYgVjhfU1RPUkVfUFJJ
TU9SRElBTAorCit2ODo6TG9jYWw8djg6Ok9iamVjdD4gVjhQZXJDb250ZXh0RGF0YTo6Y3JlYXRl
V3JhcHBlckZyb21DYWNoZVNsb3dDYXNlKFdyYXBwZXJUeXBlSW5mbyogdHlwZSkKK3sKKyAgICBB
U1NFUlQoIW1fZXJyb3JQcm90b3R5cGUuZ2V0KCkuSXNFbXB0eSgpKTsKKyAgICBBU1NFUlQoIW1f
b2JqZWN0UHJvdG90eXBlLmdldCgpLklzRW1wdHkoKSk7CisKKyAgICB2ODo6Q29udGV4dDo6U2Nv
cGUgc2NvcGUobV9jb250ZXh0KTsKKyAgICB2ODo6TG9jYWw8djg6OkZ1bmN0aW9uPiBmdW5jdGlv
biA9IGNvbnN0cnVjdG9yRm9yVHlwZSh0eXBlKTsKKyAgICB2ODo6TG9jYWw8djg6Ok9iamVjdD4g
aW5zdGFuY2UgPSBTYWZlQWxsb2NhdGlvbjo6bmV3SW5zdGFuY2UoZnVuY3Rpb24pOworICAgIGlm
ICghaW5zdGFuY2UuSXNFbXB0eSgpKSB7CisgICAgICAgIG1fd3JhcHBlckJvaWxlcnBsYXRlcy5z
ZXQodHlwZSwgdjg6OlBlcnNpc3RlbnQ8djg6Ok9iamVjdD46Ok5ldyhpbnN0YW5jZSkpOworICAg
ICAgICByZXR1cm4gaW5zdGFuY2UtPkNsb25lKCk7CisgICAgfQorICAgIHJldHVybiB2ODo6TG9j
YWw8djg6Ok9iamVjdD4oKTsKK30KKwordjg6OkxvY2FsPHY4OjpGdW5jdGlvbj4gVjhQZXJDb250
ZXh0RGF0YTo6Y29uc3RydWN0b3JGb3JUeXBlU2xvd0Nhc2UoV3JhcHBlclR5cGVJbmZvKiB0eXBl
KQoreworICAgIEFTU0VSVCghbV9lcnJvclByb3RvdHlwZS5nZXQoKS5Jc0VtcHR5KCkpOworICAg
IEFTU0VSVCghbV9vYmplY3RQcm90b3R5cGUuZ2V0KCkuSXNFbXB0eSgpKTsKKworICAgIHY4OjpD
b250ZXh0OjpTY29wZSBzY29wZShtX2NvbnRleHQpOworICAgIHY4OjpIYW5kbGU8djg6OkZ1bmN0
aW9uVGVtcGxhdGU+IGZ1bmN0aW9uVGVtcGxhdGUgPSB0eXBlLT5nZXRUZW1wbGF0ZSgpOworICAg
IC8vIEdldHRpbmcgdGhlIGZ1bmN0aW9uIG1pZ2h0IGZhaWwgaWYgd2UncmUgcnVubmluZyBvdXQg
b2Ygc3RhY2sgb3IgbWVtb3J5LgorICAgIHY4OjpUcnlDYXRjaCB0cnlDYXRjaDsKKyAgICB2ODo6
TG9jYWw8djg6OkZ1bmN0aW9uPiBmdW5jdGlvbiA9IGZ1bmN0aW9uVGVtcGxhdGUtPkdldEZ1bmN0
aW9uKCk7CisgICAgaWYgKGZ1bmN0aW9uLklzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIHY4OjpM
b2NhbDx2ODo6RnVuY3Rpb24+KCk7CisKKyAgICBmdW5jdGlvbi0+U2V0UHJvdG90eXBlKG1fb2Jq
ZWN0UHJvdG90eXBlLmdldCgpKTsKKworICAgIGlmICh0eXBlLT53cmFwcGVyVHlwZVByb3RvdHlw
ZSA9PSBXcmFwcGVyVHlwZUVycm9yUHJvdG90eXBlKSB7CisgICAgICAgIHY4OjpMb2NhbDx2ODo6
VmFsdWU+IHByb3RvdHlwZVZhbHVlID0gZnVuY3Rpb24tPkdldCh2ODo6U3RyaW5nOjpOZXdTeW1i
b2woInByb3RvdHlwZSIpKTsKKyAgICAgICAgaWYgKCFwcm90b3R5cGVWYWx1ZS5Jc0VtcHR5KCkg
JiYgcHJvdG90eXBlVmFsdWUtPklzT2JqZWN0KCkpCisgICAgICAgICAgICB2ODo6TG9jYWw8djg6
Ok9iamVjdD46OkNhc3QocHJvdG90eXBlVmFsdWUpLT5TZXRQcm90b3R5cGUobV9lcnJvclByb3Rv
dHlwZS5nZXQoKSk7CisgICAgfQorCisgICAgbV9jb25zdHJ1Y3Rvck1hcC5zZXQodHlwZSwgdjg6
OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uPjo6TmV3KGZ1bmN0aW9uKSk7CisKKyAgICByZXR1cm4g
ZnVuY3Rpb247Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4UGVyQ29udGV4dERhdGEuaCBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3Y4L1Y4UGVyQ29udGV4dERhdGEuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jOGNkNmE1YzZmNWEz
ZTVlODUzZDZhZWZmNWE1YTg3YmE4NGUxMTViCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvdjgvVjhQZXJDb250ZXh0RGF0YS5oCkBAIC0wLDAgKzEsOTkgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAg
KiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICog
ZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBu
b3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9y
c2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0
aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9S
UworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVS
IE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAq
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZu
ZGVmIFY4UGVyQ29udGV4dERhdGFfaAorI2RlZmluZSBWOFBlckNvbnRleHREYXRhX2gKKworI2lu
Y2x1ZGUgIk93bkhhbmRsZS5oIgorI2luY2x1ZGUgIldyYXBwZXJUeXBlSW5mby5oIgorI2luY2x1
ZGUgPHY4Lmg+CisjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KKyNpbmNsdWRlIDx3dGYvUGFzc093
blB0ci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFY4UGVyQ29udGV4dERhdGEg
eworcHVibGljOgorICAgIHN0YXRpYyBQYXNzT3duUHRyPFY4UGVyQ29udGV4dERhdGE+IGNyZWF0
ZSh2ODo6SGFuZGxlPHY4OjpDb250ZXh0PiBjb250ZXh0KQorICAgIHsKKyAgICAgICAgcmV0dXJu
IGFkb3B0UHRyKG5ldyBWOFBlckNvbnRleHREYXRhKGNvbnRleHQpKTsKKyAgICB9CisKKyAgICB+
VjhQZXJDb250ZXh0RGF0YSgpCisgICAgeworICAgICAgICBkaXNwb3NlKCk7CisgICAgfQorCisg
ICAgYm9vbCBpbml0KCk7CisKKyAgICAvLyBUbyBjcmVhdGUgSlMgV3JhcHBlciBvYmplY3RzLCB3
ZSBjcmVhdGUgYSBjYWNoZSBvZiBhICdib2lsZXIgcGxhdGUnCisgICAgLy8gb2JqZWN0LCBhbmQg
dGhlbiBzaW1wbHkgQ2xvbmUgdGhhdCBvYmplY3QgZWFjaCB0aW1lIHdlIG5lZWQgYSBuZXcgb25l
LgorICAgIC8vIFRoaXMgaXMgZmFzdGVyIHRoYW4gZ29pbmcgdGhyb3VnaCB0aGUgZnVsbCBvYmpl
Y3QgY3JlYXRpb24gcHJvY2Vzcy4KKyAgICB2ODo6TG9jYWw8djg6Ok9iamVjdD4gY3JlYXRlV3Jh
cHBlckZyb21DYWNoZShXcmFwcGVyVHlwZUluZm8qIHR5cGUpCisgICAgeworICAgICAgICB2ODo6
UGVyc2lzdGVudDx2ODo6T2JqZWN0PiBib2lsZXJwbGF0ZSA9IG1fd3JhcHBlckJvaWxlcnBsYXRl
cy5nZXQodHlwZSk7CisgICAgICAgIHJldHVybiAhYm9pbGVycGxhdGUuSXNFbXB0eSgpID8gYm9p
bGVycGxhdGUtPkNsb25lKCkgOiBjcmVhdGVXcmFwcGVyRnJvbUNhY2hlU2xvd0Nhc2UodHlwZSk7
CisgICAgfQorCisgICAgdjg6OkxvY2FsPHY4OjpGdW5jdGlvbj4gY29uc3RydWN0b3JGb3JUeXBl
KFdyYXBwZXJUeXBlSW5mbyogdHlwZSkKKyAgICB7CisgICAgICAgIHY4OjpQZXJzaXN0ZW50PHY4
OjpGdW5jdGlvbj4gZnVuY3Rpb24gPSBtX2NvbnN0cnVjdG9yTWFwLmdldCh0eXBlKTsKKyAgICAg
ICAgaWYgKCFmdW5jdGlvbi5Jc0VtcHR5KCkpCisgICAgICAgICAgICByZXR1cm4gdjg6OkxvY2Fs
PHY4OjpGdW5jdGlvbj46Ok5ldyhmdW5jdGlvbik7CisgICAgICAgIHJldHVybiBjb25zdHJ1Y3Rv
ckZvclR5cGVTbG93Q2FzZSh0eXBlKTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgZXhwbGljaXQg
VjhQZXJDb250ZXh0RGF0YSh2ODo6SGFuZGxlPHY4OjpDb250ZXh0PiBjb250ZXh0KQorICAgICAg
ICA6IG1fY29udGV4dChjb250ZXh0KQorICAgIHsKKyAgICB9CisKKyAgICB2b2lkIGRpc3Bvc2Uo
KTsKKworICAgIHY4OjpMb2NhbDx2ODo6T2JqZWN0PiBjcmVhdGVXcmFwcGVyRnJvbUNhY2hlU2xv
d0Nhc2UoV3JhcHBlclR5cGVJbmZvKik7CisgICAgdjg6OkxvY2FsPHY4OjpGdW5jdGlvbj4gY29u
c3RydWN0b3JGb3JUeXBlU2xvd0Nhc2UoV3JhcHBlclR5cGVJbmZvKik7CisKKyAgICAvLyBGb3Ig
ZWFjaCBwb3NzaWJsZSB0eXBlIG9mIHdyYXBwZXIsIHdlIGtlZXAgYSBib2lsZXJwbGF0ZSBvYmpl
Y3QuCisgICAgLy8gVGhlIGJvaWxlcnBsYXRlIGlzIHVzZWQgdG8gY3JlYXRlIGFkZGl0aW9uYWwg
d3JhcHBlcnMgb2YgdGhlIHNhbWUgdHlwZS4KKyAgICB0eXBlZGVmIFdURjo6SGFzaE1hcDxXcmFw
cGVyVHlwZUluZm8qLCB2ODo6UGVyc2lzdGVudDx2ODo6T2JqZWN0PiA+IFdyYXBwZXJCb2lsZXJw
bGF0ZU1hcDsKKyAgICBXcmFwcGVyQm9pbGVycGxhdGVNYXAgbV93cmFwcGVyQm9pbGVycGxhdGVz
OworCisgICAgdHlwZWRlZiBXVEY6Okhhc2hNYXA8V3JhcHBlclR5cGVJbmZvKiwgdjg6OlBlcnNp
c3RlbnQ8djg6OkZ1bmN0aW9uPiA+IENvbnN0cnVjdG9yTWFwOworICAgIENvbnN0cnVjdG9yTWFw
IG1fY29uc3RydWN0b3JNYXA7CisKKyAgICB2ODo6SGFuZGxlPHY4OjpDb250ZXh0PiBtX2NvbnRl
eHQ7CisgICAgT3duSGFuZGxlPHY4OjpWYWx1ZT4gbV9lcnJvclByb3RvdHlwZTsKKyAgICBPd25I
YW5kbGU8djg6OlZhbHVlPiBtX29iamVjdFByb3RvdHlwZTsKK307CisKK30gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKKworI2VuZGlmIC8vIFY4UGVyQ29udGV4dERhdGFfaApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhQcm94eS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy92OC9WOFByb3h5LmNwcAppbmRleCBiNjM3ZDRkNWJhMmFhMWQ2MTM2ZmFmNDU3OGYzMDgy
ZWNmMmIzZjE0Li45ZDk2ZmE0NTQ1MjUxNjQxZmY3MmU3MmMyYjFlMjIxZjIwZTIyMGQ0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOFByb3h5LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOFByb3h5LmNwcApAQCAtNDI4LDcgKzQyOCw3IEBAIEZy
YW1lKiBWOFByb3h5OjpyZXRyaWV2ZUZyYW1lKHY4OjpIYW5kbGU8djg6OkNvbnRleHQ+IGNvbnRl
eHQpCiAgICAgcmV0dXJuIDA7CiB9CiAKLVY4QmluZGluZ1BlckNvbnRleHREYXRhKiBWOFByb3h5
OjpyZXRyaWV2ZVBlckNvbnRleHREYXRhKEZyYW1lKiBmcmFtZSkKK1Y4UGVyQ29udGV4dERhdGEq
IFY4UHJveHk6OnJldHJpZXZlUGVyQ29udGV4dERhdGEoRnJhbWUqIGZyYW1lKQogewogICAgIFY4
SXNvbGF0ZWRDb250ZXh0KiBpc29sYXRlZENvbnRleHQ7CiAgICAgaWYgKFVOTElLRUxZKCEhKGlz
b2xhdGVkQ29udGV4dCA9IFY4SXNvbGF0ZWRDb250ZXh0OjpnZXRFbnRlcmVkKCkpKSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4UHJveHkuaCBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3Y4L1Y4UHJveHkuaAppbmRleCA4MjcyY2QyYTk3YmIwMjJlMjY2ZjU5ZWJl
ZjAwNGE3ZmRkMDU1ZTUwLi41ZDk4MDU0ZmM3NzljMzU5MzFiMWQ2OTBiODRlZDhjOWNkODllNWEw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOFByb3h5LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhQcm94eS5oCkBAIC02Miw3ICs2Miw3IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKICAgICBjbGFzcyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OwogICAg
IGNsYXNzIFNjcmlwdFNvdXJjZUNvZGU7CiAgICAgY2xhc3MgU2VjdXJpdHlPcmlnaW47Ci0gICAg
Y2xhc3MgVjhCaW5kaW5nUGVyQ29udGV4dERhdGE7CisgICAgY2xhc3MgVjhQZXJDb250ZXh0RGF0
YTsKICAgICBjbGFzcyBWOEV2ZW50TGlzdGVuZXI7CiAgICAgY2xhc3MgVjhJc29sYXRlZENvbnRl
eHQ7CiAgICAgY2xhc3MgV29ybGRDb250ZXh0SGFuZGxlOwpAQCAtMTM0LDcgKzEzNCw3IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgLy8gYSBjb250ZXh0LgogICAgICAgICBzdGF0aWMg
RnJhbWUqIHJldHJpZXZlRnJhbWUodjg6OkhhbmRsZTx2ODo6Q29udGV4dD4pOwogCi0gICAgICAg
IHN0YXRpYyBWOEJpbmRpbmdQZXJDb250ZXh0RGF0YSogcmV0cmlldmVQZXJDb250ZXh0RGF0YShG
cmFtZSopOworICAgICAgICBzdGF0aWMgVjhQZXJDb250ZXh0RGF0YSogcmV0cmlldmVQZXJDb250
ZXh0RGF0YShGcmFtZSopOwogCiAgICAgICAgIC8vIFJldHVybnMgVjggQ29udGV4dCBvZiBhIGZy
YW1lLiBJZiBub25lIGV4aXN0cywgY3JlYXRlcwogICAgICAgICAvLyBhIG5ldyBjb250ZXh0LiBJ
dCBpcyBwb3RlbnRpYWxseSBzbG93IGFuZCBjb25zdW1lcyBtZW1vcnkuCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9Xb3JrZXJDb250ZXh0RXhlY3V0aW9uUHJveHkuY3Bw
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvV29ya2VyQ29udGV4dEV4ZWN1dGlvblByb3h5
LmNwcAppbmRleCA2ZjE1MTFiMTBiMTY5ZTIwMjY1Yjc2OGRhNTg3NGFlMTU1YmExZjc1Li44YzAw
MDQyOWI1NWY1Y2QzM2U2ODFiYmVhZGVhOWJlNTQ1MjIxNjkxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy92OC9Xb3JrZXJDb250ZXh0RXhlY3V0aW9uUHJveHkuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1dvcmtlckNvbnRleHRFeGVjdXRpb25Qcm94eS5j
cHAKQEAgLTQyLDEwICs0MiwxMCBAQAogI2luY2x1ZGUgIlNoYXJlZFdvcmtlci5oIgogI2luY2x1
ZGUgIlNoYXJlZFdvcmtlckNvbnRleHQuaCIKICNpbmNsdWRlICJWOEJpbmRpbmcuaCIKLSNpbmNs
dWRlICJWOEJpbmRpbmdQZXJDb250ZXh0RGF0YS5oIgogI2luY2x1ZGUgIlY4RE9NTWFwLmgiCiAj
aW5jbHVkZSAiVjhET01XaW5kb3dTaGVsbC5oIgogI2luY2x1ZGUgIlY4RGVkaWNhdGVkV29ya2Vy
Q29udGV4dC5oIgorI2luY2x1ZGUgIlY4UGVyQ29udGV4dERhdGEuaCIKICNpbmNsdWRlICJWOFBy
b3h5LmgiCiAjaW5jbHVkZSAiVjhSZWN1cnNpb25TY29wZS5oIgogI2luY2x1ZGUgIlY4U2hhcmVk
V29ya2VyQ29udGV4dC5oIgpAQCAtMTUzLDcgKzE1Myw3IEBAIGJvb2wgV29ya2VyQ29udGV4dEV4
ZWN1dGlvblByb3h5Ojppbml0Q29udGV4dElmTmVlZGVkKCkKIAogICAgIHY4OjpDb250ZXh0OjpT
Y29wZSBzY29wZShjb250ZXh0KTsKIAotICAgIG1fcGVyQ29udGV4dERhdGEgPSBWOEJpbmRpbmdQ
ZXJDb250ZXh0RGF0YTo6Y3JlYXRlKG1fY29udGV4dCk7CisgICAgbV9wZXJDb250ZXh0RGF0YSA9
IFY4UGVyQ29udGV4dERhdGE6OmNyZWF0ZShtX2NvbnRleHQpOwogICAgIGlmICghbV9wZXJDb250
ZXh0RGF0YS0+aW5pdCgpKSB7CiAgICAgICAgIGRpc3Bvc2UoKTsKICAgICAgICAgcmV0dXJuIGZh
bHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvV29ya2VyQ29udGV4
dEV4ZWN1dGlvblByb3h5LmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9Xb3JrZXJDb250
ZXh0RXhlY3V0aW9uUHJveHkuaAppbmRleCAwZGY1YTNhZTcyYzFhYjI0YWM0ZTM1M2MxMjBhMzM0
Mjg0M2I5Mjk2Li41YmMyODEyOGNkZDZjYmIyNmM5NzQ1MWQ4NWIzMjNjY2QyMGExMTAwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9Xb3JrZXJDb250ZXh0RXhlY3V0aW9u
UHJveHkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9Xb3JrZXJDb250ZXh0RXhl
Y3V0aW9uUHJveHkuaApAQCAtNDQsNyArNDQsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAg
ICBjbGFzcyBFdmVudDsKICAgICBjbGFzcyBFdmVudFRhcmdldDsKLSAgICBjbGFzcyBWOEJpbmRp
bmdQZXJDb250ZXh0RGF0YTsKKyAgICBjbGFzcyBWOFBlckNvbnRleHREYXRhOwogICAgIGNsYXNz
IFdvcmtlckNvbnRleHQ7CiAgICAgc3RydWN0IFdyYXBwZXJUeXBlSW5mbzsKIApAQCAtNzQsNyAr
NzQsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIC8vIFJldHVybnMgYSBsb2NhbCBo
YW5kbGUgb2YgdGhlIGNvbnRleHQuCiAgICAgICAgIHY4OjpMb2NhbDx2ODo6Q29udGV4dD4gY29u
dGV4dCgpIHsgcmV0dXJuIHY4OjpMb2NhbDx2ODo6Q29udGV4dD46Ok5ldyhtX2NvbnRleHQpOyB9
CiAKLSAgICAgICAgVjhCaW5kaW5nUGVyQ29udGV4dERhdGEqIHBlckNvbnRleHREYXRhKCkgeyBy
ZXR1cm4gbV9wZXJDb250ZXh0RGF0YS5nZXQoKTsgfQorICAgICAgICBWOFBlckNvbnRleHREYXRh
KiBwZXJDb250ZXh0RGF0YSgpIHsgcmV0dXJuIG1fcGVyQ29udGV4dERhdGEuZ2V0KCk7IH0KIAog
ICAgIHByaXZhdGU6CiAgICAgICAgIHZvaWQgaW5pdElzb2xhdGUoKTsKQEAgLTkzLDcgKzkzLDcg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgICAgIFZlY3RvcjxFdmVudCo+IG1fZXZlbnRz
OwogCi0gICAgICAgIE93blB0cjxWOEJpbmRpbmdQZXJDb250ZXh0RGF0YT4gbV9wZXJDb250ZXh0
RGF0YTsKKyAgICAgICAgT3duUHRyPFY4UGVyQ29udGV4dERhdGE+IG1fcGVyQ29udGV4dERhdGE7
CiAgICAgfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>