<?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>93211</bug_id>
          
          <creation_ts>2012-08-05 17:19:06 -0700</creation_ts>
          <short_desc>[V8] Replace v8::Handle&lt;v8::Value&gt;() in bindings/v8/* with v8Undefined()</short_desc>
          <delta_ts>2012-08-07 21:44:57 -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>japhet</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>687675</commentid>
    <comment_count>0</comment_count>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-08-05 17:19:06 -0700</bug_when>
    <thetext>We should use v8Undefined() everywhere in V8 bindings.

Replacing v8::Local&lt;v8::Value&gt;() etc with v8Undefined() can cause build errors due to type conversion mismatch. I&apos;ll do the replacement in follow-up patches.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>687677</commentid>
    <comment_count>1</comment_count>
      <attachid>156576</attachid>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-08-05 17:21:03 -0700</bug_when>
    <thetext>Created attachment 156576
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>689477</commentid>
    <comment_count>2</comment_count>
      <attachid>156576</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2012-08-07 15:22:51 -0700</bug_when>
    <thetext>Comment on attachment 156576
Patch

LGTM.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>689541</commentid>
    <comment_count>3</comment_count>
      <attachid>156576</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-08-07 15:59:26 -0700</bug_when>
    <thetext>Comment on attachment 156576
Patch

Rejecting attachment 156576 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:
WebCore/bindings/v8/custom/V8NamedNodeMapCustom.cpp
patching file Source/WebCore/bindings/v8/custom/V8NodeListCustom.cpp
patching file Source/WebCore/bindings/v8/custom/V8SVGLengthCustom.cpp
patching file Source/WebCore/bindings/v8/custom/V8StorageCustom.cpp
patching file Source/WebCore/bindings/v8/custom/V8StyleSheetListCustom.cpp

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

Full output: http://queues.webkit.org/results/13448745</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>689655</commentid>
    <comment_count>4</comment_count>
      <attachid>157055</attachid>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-08-07 17:35:48 -0700</bug_when>
    <thetext>Created attachment 157055
patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>689669</commentid>
    <comment_count>5</comment_count>
      <attachid>157058</attachid>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-08-07 17:47:10 -0700</bug_when>
    <thetext>Created attachment 157058
patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>689851</commentid>
    <comment_count>6</comment_count>
      <attachid>157058</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-08-07 21:38:35 -0700</bug_when>
    <thetext>Comment on attachment 157058
patch for landing

Clearing flags on attachment: 157058

Committed r124981: &lt;http://trac.webkit.org/changeset/124981&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>156576</attachid>
            <date>2012-08-05 17:21:03 -0700</date>
            <delta_ts>2012-08-07 21:44:48 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-93211-20120806092039.patch</filename>
            <type>text/plain</type>
            <size>46239</size>
            <attacher name="Kentaro Hara">haraken</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI0NzIwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNWRkNWZhMDE4ODQ5NDhl
MjgyM2NiMjhlMjQxYjZhNDVhODM0NDY4OS4uMjcxODI4NTY1ODQ2ODBhMWNiODZlMzZhYTljZTZl
N2M0ZTljMjA0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEwMSBAQAorMjAxMi0wOC0wNSAgS2Vu
dGFybyBIYXJhICA8aGFyYWtlbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW1Y4XSBSZXBsYWNl
IHY4OjpIYW5kbGU8djg6OlZhbHVlPigpIGluIGJpbmRpbmdzL3Y4Lyogd2l0aCB2OFVuZGVmaW5l
ZCgpCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05MzIx
MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdlIHNo
b3VsZCB1c2UgdjhVbmRlZmluZWQoKSBldmVyeXdoZXJlIGluIFY4IGJpbmRpbmdzLgorICAgICAg
ICBSZXBsYWNpbmcgdjg6OkxvY2FsPHY4OjpWYWx1ZT4oKSBldGMgd2l0aCB2OFVuZGVmaW5lZCgp
IGNhbiBjYXVzZSBidWlsZAorICAgICAgICBlcnJvcnMgZHVlIHRvIHR5cGUgY29udmVyc2lvbiBt
aXNtYXRjaC4gSSdsbCBkbyB0aGUgcmVwbGFjZW1lbnQgaW4gZm9sbG93LXVwCisgICAgICAgIHBh
dGNoZXMuCisKKyAgICAgICAgTm8gdGVzdHMuIE5vIGNoYW5nZSBpbiBiZWhhdmlvci4KKworICAg
ICAgICAqIGJpbmRpbmdzL3Y4L0lEQkJpbmRpbmdVdGlsaXRpZXMuY3BwOgorICAgICAgICAoV2Vi
Q29yZSk6CisgICAgICAgICogYmluZGluZ3MvdjgvU2NyaXB0RGVidWdTZXJ2ZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6U2NyaXB0RGVidWdTZXJ2ZXI6OnBhdXNlT25FeGNlcHRpb25zU3RhdGUp
OgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0RGVidWdTZXJ2ZXI6OmhhbmRsZVY4RGVidWdFdmVu
dCk6CisgICAgICAgICogYmluZGluZ3MvdjgvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcDoKKyAg
ICAgICAgKiBiaW5kaW5ncy92OC9WOEJpbmRpbmcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6YmF0
Y2hDb25maWd1cmVDYWxsYmFja3MpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1Y4Q29sbGVjdGlv
bi5oOgorICAgICAgICAoV2ViQ29yZTo6Z2V0VjhPYmplY3QpOgorICAgICAgICAoV2ViQ29yZTo6
Y29sbGVjdGlvbk5hbWVkUHJvcGVydHlHZXR0ZXIpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1Y4
RE9NV3JhcHBlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWOERPTVdyYXBwZXI6OmNvbnZlcnRF
dmVudFRhcmdldFRvVjhPYmplY3QpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1Y4TlBPYmplY3Qu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6bnBPYmplY3RHZXRQcm9wZXJ0eSk6CisgICAgICAgIChX
ZWJDb3JlOjpucE9iamVjdFNldFByb3BlcnR5KToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9WOFBy
b3h5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlY4UHJveHk6OnNldERPTUV4Y2VwdGlvbik6Cisg
ICAgICAgIChXZWJDb3JlOjpWOFByb3h5Ojp0aHJvd0Vycm9yKToKKyAgICAgICAgKiBiaW5kaW5n
cy92OC9Xb3JrZXJTY3JpcHREZWJ1Z1NlcnZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3Jr
ZXJTY3JpcHREZWJ1Z1NlcnZlcjo6YWRkTGlzdGVuZXIpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4
L2N1c3RvbS9WOENTU1N0eWxlRGVjbGFyYXRpb25DdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6VjhDU1NTdHlsZURlY2xhcmF0aW9uOjpuYW1lZFByb3BlcnR5R2V0dGVyKToKKyAgICAgICAg
KFdlYkNvcmU6OlY4Q1NTU3R5bGVEZWNsYXJhdGlvbjo6bmFtZWRQcm9wZXJ0eVNldHRlcik6Cisg
ICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4Q29uc29sZUN1c3RvbS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpWOENvbnNvbGU6OnRyYWNlQ2FsbGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6
VjhDb25zb2xlOjphc3NlcnRDYWxsYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpWOENvbnNvbGU6
OnByb2ZpbGVDYWxsYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpWOENvbnNvbGU6OnByb2ZpbGVF
bmRDYWxsYmFjayk6CisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4RE9NU3RyaW5nTWFw
Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlY4RE9NU3RyaW5nTWFwOjpuYW1lZFByb3Bl
cnR5R2V0dGVyKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhET01XaW5kb3dDdXN0
b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6VjhET01XaW5kb3c6OmluZGV4ZWRQcm9wZXJ0eUdl
dHRlcik6CisgICAgICAgIChXZWJDb3JlOjpWOERPTVdpbmRvdzo6bmFtZWRQcm9wZXJ0eUdldHRl
cik6CisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4RGF0YVZpZXdDdXN0b20uY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6VjhEYXRhVmlldzo6c2V0SW50OENhbGxiYWNrKToKKyAgICAgICAg
KFdlYkNvcmU6OlY4RGF0YVZpZXc6OnNldFVpbnQ4Q2FsbGJhY2spOgorICAgICAgICAqIGJpbmRp
bmdzL3Y4L2N1c3RvbS9WOERldmljZU1vdGlvbkV2ZW50Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlY4RGV2aWNlTW90aW9uRXZlbnQ6OmluaXREZXZpY2VNb3Rpb25FdmVudENhbGxiYWNr
KToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhEZXZpY2VPcmllbnRhdGlvbkV2ZW50
Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlY4RGV2aWNlT3JpZW50YXRpb25FdmVudDo6
aW5pdERldmljZU9yaWVudGF0aW9uRXZlbnRDYWxsYmFjayk6CisgICAgICAgICogYmluZGluZ3Mv
djgvY3VzdG9tL1Y4RGlyZWN0b3J5RW50cnlDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6
VjhEaXJlY3RvcnlFbnRyeTo6Z2V0RGlyZWN0b3J5Q2FsbGJhY2spOgorICAgICAgICAoV2ViQ29y
ZTo6VjhEaXJlY3RvcnlFbnRyeTo6Z2V0RmlsZUNhbGxiYWNrKToKKyAgICAgICAgKiBiaW5kaW5n
cy92OC9jdXN0b20vVjhIVE1MQWxsQ29sbGVjdGlvbkN1c3RvbS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpnZXROYW1lZEl0ZW1zKToKKyAgICAgICAgKFdlYkNvcmU6OlY4SFRNTEFsbENvbGxlY3Rp
b246Om5hbWVkUHJvcGVydHlHZXR0ZXIpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9W
OEhUTUxDb2xsZWN0aW9uQ3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmdldE5hbWVkSXRl
bXMpOgorICAgICAgICAoV2ViQ29yZTo6VjhIVE1MQ29sbGVjdGlvbjo6bmFtZWRQcm9wZXJ0eUdl
dHRlcik6CisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTERvY3VtZW50Q3VzdG9t
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlY4SFRNTERvY3VtZW50OjpHZXROYW1lZFByb3BlcnR5
KToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhIVE1MRm9ybUVsZW1lbnRDdXN0b20u
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6VjhIVE1MRm9ybUVsZW1lbnQ6OmluZGV4ZWRQcm9wZXJ0
eUdldHRlcik6CisgICAgICAgIChXZWJDb3JlOjpWOEhUTUxGb3JtRWxlbWVudDo6bmFtZWRQcm9w
ZXJ0eUdldHRlcik6CisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTEZyYW1lU2V0
RWxlbWVudEN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWOEhUTUxGcmFtZVNldEVsZW1l
bnQ6Om5hbWVkUHJvcGVydHlHZXR0ZXIpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9W
OEhUTUxPcHRpb25zQ29sbGVjdGlvbkN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWOEhU
TUxPcHRpb25zQ29sbGVjdGlvbjo6aW5kZXhlZFByb3BlcnR5R2V0dGVyKToKKyAgICAgICAgKiBi
aW5kaW5ncy92OC9jdXN0b20vVjhIVE1MUGx1Z0luRWxlbWVudEN1c3RvbS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpucE9iamVjdE5hbWVkR2V0dGVyKToKKyAgICAgICAgKFdlYkNvcmU6Om5wT2Jq
ZWN0TmFtZWRTZXR0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6bnBPYmplY3RJbmRleGVkR2V0dGVy
KToKKyAgICAgICAgKFdlYkNvcmU6Om5wT2JqZWN0SW5kZXhlZFNldHRlcik6CisgICAgICAgICog
YmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTFNlbGVjdEVsZW1lbnRDdXN0b20uY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6VjhIVE1MU2VsZWN0RWxlbWVudDo6aW5kZXhlZFByb3BlcnR5R2V0dGVyKToK
KyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhMb2NhdGlvbkN1c3RvbS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpWOExvY2F0aW9uOjpyZWxvYWRBY2Nlc3NvckdldHRlcik6CisgICAgICAg
IChXZWJDb3JlOjpWOExvY2F0aW9uOjpyZXBsYWNlQWNjZXNzb3JHZXR0ZXIpOgorICAgICAgICAo
V2ViQ29yZTo6VjhMb2NhdGlvbjo6YXNzaWduQWNjZXNzb3JHZXR0ZXIpOgorICAgICAgICAqIGJp
bmRpbmdzL3Y4L2N1c3RvbS9WOE5hbWVkTm9kZU1hcEN1c3RvbS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpWOE5hbWVkTm9kZU1hcDo6aW5kZXhlZFByb3BlcnR5R2V0dGVyKToKKyAgICAgICAgKFdl
YkNvcmU6OlY4TmFtZWROb2RlTWFwOjpuYW1lZFByb3BlcnR5R2V0dGVyKToKKyAgICAgICAgKiBi
aW5kaW5ncy92OC9jdXN0b20vVjhOb2RlTGlzdEN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpWOE5vZGVMaXN0OjpuYW1lZFByb3BlcnR5R2V0dGVyKToKKyAgICAgICAgKiBiaW5kaW5ncy92
OC9jdXN0b20vVjhTVkdMZW5ndGhDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6VjhTVkdM
ZW5ndGg6OmNvbnZlcnRUb1NwZWNpZmllZFVuaXRzQ2FsbGJhY2spOgorICAgICAgICAqIGJpbmRp
bmdzL3Y4L2N1c3RvbS9WOFN0b3JhZ2VDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6c3Rv
cmFnZUdldHRlcik6CisgICAgICAgIChXZWJDb3JlOjpWOFN0b3JhZ2U6Om5hbWVkUHJvcGVydHlH
ZXR0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6c3RvcmFnZVNldHRlcik6CisgICAgICAgICogYmlu
ZGluZ3MvdjgvY3VzdG9tL1Y4U3R5bGVTaGVldExpc3RDdXN0b20uY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6VjhTdHlsZVNoZWV0TGlzdDo6bmFtZWRQcm9wZXJ0eUdldHRlcik6CisKIDIwMTItMDgt
MDUgIEFudHRpIEtvaXZpc3RvICA8YW50dGlAYXBwbGUuY29tPgogCiAgICAgICAgIERvbid0IHJl
dXNlIGNhY2hlZCBzdHlsZXNoZWV0IHdpdGggZmFpbGVkIG9yIGNhbmNlbGVkIHJlc291cmNlIGxv
YWRzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9JREJCaW5kaW5nVXRp
bGl0aWVzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L0lEQkJpbmRpbmdVdGlsaXRp
ZXMuY3BwCmluZGV4IDIyZjgzMTViMjA0NmM2NTQ3ODE1Yjk0NTYwYjQ4ZDg4NTg2M2UxZjQuLmNj
MWVhZmIwNGY2ZTg5ODIwZTMzOTdlMmQ4MjdlOTNkYzlmYTIyZmMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L0lEQkJpbmRpbmdVdGlsaXRpZXMuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L0lEQkJpbmRpbmdVdGlsaXRpZXMuY3BwCkBAIC0xMjYsNyAr
MTI2LDcgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGdldE50aFZhbHVlT25LZXlQYXRoKHY4OjpI
YW5kbGU8djg6OlZhbHVlPiYgcm9vdFZhbHVlLCBjb24KICAgICBBU1NFUlQoaW5kZXggPD0ga2V5
UGF0aEVsZW1lbnRzLnNpemUoKSk7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBpbmRleDsg
KytpKSB7CiAgICAgICAgIGlmICghZ2V0KGN1cnJlbnRWYWx1ZSwga2V5UGF0aEVsZW1lbnRzW2ld
KSkKLSAgICAgICAgICAgIHJldHVybiB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4oKTsKKyAgICAgICAg
ICAgIHJldHVybiB2OFVuZGVmaW5lZCgpOwogICAgIH0KIAogICAgIHJldHVybiBjdXJyZW50VmFs
dWU7CkBAIC0xNDMsNyArMTQzLDcgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGVuc3VyZU50aFZh
bHVlT25LZXlQYXRoKHY4OjpIYW5kbGU8djg6OlZhbHVlPiYgcm9vdFZhbHVlLAogICAgICAgICBp
ZiAoIWdldChjdXJyZW50VmFsdWUsIGtleVBhdGhFbGVtZW50KSkgewogICAgICAgICAgICAgdjg6
OkhhbmRsZTx2ODo6T2JqZWN0PiBvYmplY3QgPSB2ODo6T2JqZWN0OjpOZXcoKTsKICAgICAgICAg
ICAgIGlmICghc2V0KHBhcmVudFZhbHVlLCBrZXlQYXRoRWxlbWVudCwgb2JqZWN0KSkKLSAgICAg
ICAgICAgICAgICByZXR1cm4gdjg6OkhhbmRsZTx2ODo6VmFsdWU+KCk7CisgICAgICAgICAgICAg
ICAgcmV0dXJuIHY4VW5kZWZpbmVkKCk7CiAgICAgICAgICAgICBjdXJyZW50VmFsdWUgPSBvYmpl
Y3Q7CiAgICAgICAgIH0KICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy92OC9TY3JpcHREZWJ1Z1NlcnZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9T
Y3JpcHREZWJ1Z1NlcnZlci5jcHAKaW5kZXggZTM5YmJjYjI4NmZiM2FlMTEyMWI4MjdkMjg0ZTU4
NmNjNDBlMDhhNy4uNzdkNjhkMDE3ZmM2MWNiZTU1YjhiZDU5MWZhZDU5YTA3ZThmMTQ3ZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0RGVidWdTZXJ2ZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdERlYnVnU2VydmVyLmNwcApA
QCAtMTM3LDcgKzEzNyw3IEBAIFNjcmlwdERlYnVnU2VydmVyOjpQYXVzZU9uRXhjZXB0aW9uc1N0
YXRlIFNjcmlwdERlYnVnU2VydmVyOjpwYXVzZU9uRXhjZXB0aW9uc1N0CiAgICAgdjg6OkhhbmRs
ZVNjb3BlIHNjb3BlOwogICAgIHY4OjpDb250ZXh0OjpTY29wZSBjb250ZXh0U2NvcGUodjg6OkRl
YnVnOjpHZXREZWJ1Z0NvbnRleHQoKSk7CiAKLSAgICB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gYXJn
dltdID0geyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4oKSB9OworICAgIHY4OjpIYW5kbGU8djg6OlZh
bHVlPiBhcmd2W10gPSB7IHY4VW5kZWZpbmVkKCkgfTsKICAgICB2ODo6SGFuZGxlPHY4OjpWYWx1
ZT4gcmVzdWx0ID0gY2FsbERlYnVnZ2VyTWV0aG9kKCJwYXVzZU9uRXhjZXB0aW9uc1N0YXRlIiwg
MCwgYXJndik7CiAgICAgcmV0dXJuIHN0YXRpY19jYXN0PFNjcmlwdERlYnVnU2VydmVyOjpQYXVz
ZU9uRXhjZXB0aW9uc1N0YXRlPihyZXN1bHQtPkludDMyVmFsdWUoKSk7CiB9CkBAIC0zNjMsNyAr
MzYzLDcgQEAgdm9pZCBTY3JpcHREZWJ1Z1NlcnZlcjo6aGFuZGxlVjhEZWJ1Z0V2ZW50KGNvbnN0
IHY4OjpEZWJ1Zzo6RXZlbnREZXRhaWxzJiBldmVudEQKICAgICAgICAgICAgICAgICB2ODo6SGFu
ZGxlPHY4OjpPYmplY3Q+IGV2ZW50RGF0YSA9IGV2ZW50RGV0YWlscy5HZXRFdmVudERhdGEoKTsK
ICAgICAgICAgICAgICAgICB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gZXhjZXB0aW9uR2V0dGVyVmFs
dWUgPSBldmVudERhdGEtPkdldCh2ODo6U3RyaW5nOjpOZXcoImV4Y2VwdGlvbiIpKTsKICAgICAg
ICAgICAgICAgICBBU1NFUlQoIWV4Y2VwdGlvbkdldHRlclZhbHVlLklzRW1wdHkoKSAmJiBleGNl
cHRpb25HZXR0ZXJWYWx1ZS0+SXNGdW5jdGlvbigpKTsKLSAgICAgICAgICAgICAgICB2ODo6SGFu
ZGxlPHY4OjpWYWx1ZT4gYXJndltdID0geyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4oKSB9OworICAg
ICAgICAgICAgICAgIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBhcmd2W10gPSB7IHY4VW5kZWZpbmVk
KCkgfTsKICAgICAgICAgICAgICAgICBWOFJlY3Vyc2lvblNjb3BlOjpNaWNyb3Rhc2tTdXBwcmVz
c2lvbiBzY29wZTsKICAgICAgICAgICAgICAgICBleGNlcHRpb24gPSB2ODo6SGFuZGxlPHY4OjpG
dW5jdGlvbj46OkNhc3QoZXhjZXB0aW9uR2V0dGVyVmFsdWUpLT5DYWxsKGV2ZW50RGF0YSwgMCwg
YXJndik7CiAgICAgICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy92OC9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
djgvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcAppbmRleCA5ZjFlMzI5OGYwZDEyNTcxZjM3M2Y3
Mjk3YzQyZGUyNWQyZGMxNWJjLi5mNTc2OTA2YzU3MmFiNGNiMjQ5NDBmZGJhMzE1MDA5ODUxNmE4
M2MxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9TZXJpYWxpemVkU2Ny
aXB0VmFsdWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZS5jcHAKQEAgLTczMCw3ICs3MzAsNyBAQCBwcml2YXRlOgogICAgIGNsYXNzIEVy
cm9yU3RhdGUgOiBwdWJsaWMgU3RhdGVCYXNlIHsKICAgICBwdWJsaWM6CiAgICAgICAgIEVycm9y
U3RhdGUoKQotICAgICAgICAgICAgOiBTdGF0ZUJhc2Uodjg6OkhhbmRsZTx2ODo6VmFsdWU+KCks
IDApCisgICAgICAgICAgICA6IFN0YXRlQmFzZSh2OFVuZGVmaW5lZCgpLCAwKQogICAgICAgICB7
CiAgICAgICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhC
aW5kaW5nLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4QmluZGluZy5jcHAKaW5k
ZXggNDJlYTY0NWViNWMzOTFkMzQ1NTY2NzIwYWM5MzZjMzhjZTAxMzM2ZS4uMmJkMDBiY2Q0OGVm
YTRkMjI5YWJiNzExMDY4YjVhOWUwZmY2ZGI5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvdjgvVjhCaW5kaW5nLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92
OC9WOEJpbmRpbmcuY3BwCkBAIC02MzksNyArNjM5LDcgQEAgdm9pZCBiYXRjaENvbmZpZ3VyZUNh
bGxiYWNrcyh2ODo6SGFuZGxlPHY4OjpPYmplY3RUZW1wbGF0ZT4gcHJvdG8sCiAgICAgZm9yIChz
aXplX3QgaSA9IDA7IGkgPCBjYWxsYmFja0NvdW50OyArK2kpIHsKICAgICAgICAgcHJvdG8tPlNl
dCh2ODo6U3RyaW5nOjpOZXcoY2FsbGJhY2tzW2ldLm5hbWUpLAogICAgICAgICAgICAgICAgICAg
IHY4OjpGdW5jdGlvblRlbXBsYXRlOjpOZXcoY2FsbGJhY2tzW2ldLmNhbGxiYWNrLCAKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHY4OjpIYW5kbGU8djg6OlZh
bHVlPigpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdjhV
bmRlZmluZWQoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHNpZ25hdHVyZSksCiAgICAgICAgICAgICAgICAgICAgYXR0cmlidXRlcyk7CiAgICAgfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhDb2xsZWN0aW9uLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOENvbGxlY3Rpb24uaAppbmRleCBkOGNkYzgxY2MwZDQ1
MGNkOTc4YmFmNDJhMDg0MTgyYjgzNTUzMjU0Li45YjNkMjYyMWQzYTBlZjcyMzFhYTUxOGJjMGE4
NDJhODA0OWIxZWQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOENv
bGxlY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOENvbGxlY3Rpb24u
aApAQCAtNDUsNyArNDUsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiB0ZW1wbGF0ZTxjbGFzcyBU
PiBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGdldFY4T2JqZWN0KFQqIGltcGxlbWVudGF0
aW9uLCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSkKIHsKICAgICBpZiAoIWltcGxlbWVudGF0aW9uKQot
ICAgICAgICByZXR1cm4gdjg6OkhhbmRsZTx2ODo6VmFsdWU+KCk7CisgICAgICAgIHJldHVybiB2
OFVuZGVmaW5lZCgpOwogICAgIHJldHVybiB0b1Y4KGltcGxlbWVudGF0aW9uLCBpc29sYXRlKTsK
IH0KIApAQCAtNzQsOSArNzQsOSBAQCB0ZW1wbGF0ZTxjbGFzcyBDb2xsZWN0aW9uLCBjbGFzcyBJ
dGVtVHlwZT4gc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBnZXROYW1lZAogdGVtcGxhdGU8
Y2xhc3MgQ29sbGVjdGlvbiwgY2xhc3MgSXRlbVR5cGU+IHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpW
YWx1ZT4gY29sbGVjdGlvbk5hbWVkUHJvcGVydHlHZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+
IG5hbWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCiB7CiAgICAgaWYgKCFpbmZvLkhv
bGRlcigpLT5HZXRSZWFsTmFtZWRQcm9wZXJ0eUluUHJvdG90eXBlQ2hhaW4obmFtZSkuSXNFbXB0
eSgpKQotICAgICAgICByZXR1cm4gdjg6OkhhbmRsZTx2ODo6VmFsdWU+KCk7CisgICAgICAgIHJl
dHVybiB2OFVuZGVmaW5lZCgpOwogICAgIGlmIChpbmZvLkhvbGRlcigpLT5IYXNSZWFsTmFtZWRD
YWxsYmFja1Byb3BlcnR5KG5hbWUpKQotICAgICAgICByZXR1cm4gdjg6OkhhbmRsZTx2ODo6VmFs
dWU+KCk7CisgICAgICAgIHJldHVybiB2OFVuZGVmaW5lZCgpOwogCiAgICAgcmV0dXJuIGdldE5h
bWVkUHJvcGVydHlPZkNvbGxlY3Rpb248Q29sbGVjdGlvbiwgSXRlbVR5cGU+KG5hbWUsIGluZm8u
SG9sZGVyKCksIGluZm8uR2V0SXNvbGF0ZSgpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3Y4L1Y4RE9NV3JhcHBlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy92OC9WOERPTVdyYXBwZXIuY3BwCmluZGV4IDgxMTNhNzhlMWY2OTBkYTQ5ZmI1YWJlZjk3ZmMy
NTUxMzE0Yjg4MDQuLjE4OTJjMmJkNDQ1ZWRkYWFiNjExODliMWEyOTNkZGI0YTE2YTNmY2YgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4RE9NV3JhcHBlci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhET01XcmFwcGVyLmNwcApAQCAtMjY4LDcg
KzI2OCw3IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOERPTVdyYXBwZXI6OmNvbnZlcnRFdmVu
dFRhcmdldFRvVjhPYmplY3QoRXZlbnRUYXJnZXQqIHRhCiAgICAgRE9NX0VWRU5UX1RBUkdFVF9J
TlRFUkZBQ0VTX0ZPUl9FQUNIKFRSWV9UT19XUkFQX1dJVEhfSU5URVJGQUNFKQogCiAgICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJuIHY4OjpIYW5kbGU8djg6OlZhbHVlPigpOwor
ICAgIHJldHVybiB2OFVuZGVmaW5lZCgpOwogfQogCiBQYXNzUmVmUHRyPEV2ZW50TGlzdGVuZXI+
IFY4RE9NV3JhcHBlcjo6Z2V0RXZlbnRMaXN0ZW5lcih2ODo6TG9jYWw8djg6OlZhbHVlPiB2YWx1
ZSwgYm9vbCBpc0F0dHJpYnV0ZSwgTGlzdGVuZXJMb29rdXBUeXBlIGxvb2t1cCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4TlBPYmplY3QuY3BwIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvdjgvVjhOUE9iamVjdC5jcHAKaW5kZXggZDQ4MGUzZTY5ZTE2NDA3NDA2
ZmM3YTA0MDAxODM2Y2ZjNTMzMTFmOC4uNDVhMTUxMmRkZGEwYTc2OTgwYjE3OTIxMDU5M2UzN2U2
ZDVkZTQzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhOUE9iamVj
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhOUE9iamVjdC5jcHAKQEAg
LTIwMCw3ICsyMDAsNyBAQCBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IG5wT2JqZWN0R2V0
UHJvcGVydHkodjg6OkxvY2FsPHY4OjpPYmplY3Q+IHNlbGYsIE5QSQogICAgICAgICBOUFZhcmlh
bnQgcmVzdWx0OwogICAgICAgICBWT0lEX1RPX05QVkFSSUFOVChyZXN1bHQpOwogICAgICAgICBp
ZiAoIW5wT2JqZWN0LT5fY2xhc3MtPmdldFByb3BlcnR5KG5wT2JqZWN0LCBpZGVudGlmaWVyLCAm
cmVzdWx0KSkKLSAgICAgICAgICAgIHJldHVybiB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4oKTsKKyAg
ICAgICAgICAgIHJldHVybiB2OFVuZGVmaW5lZCgpOwogCiAgICAgICAgIHY4OjpIYW5kbGU8djg6
OlZhbHVlPiByZXR1cm5WYWx1ZTsKICAgICAgICAgaWYgKF9OUE5fSXNBbGl2ZShucE9iamVjdCkp
CkBAIC0yMzQsNyArMjM0LDcgQEAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBucE9iamVj
dEdldFByb3BlcnR5KHY4OjpMb2NhbDx2ODo6T2JqZWN0PiBzZWxmLCBOUEkKICAgICAgICAgcmV0
dXJuIHY4RnVuY3Rpb247CiAgICAgfQogCi0gICAgcmV0dXJuIHY4OjpIYW5kbGU8djg6OlZhbHVl
PigpOworICAgIHJldHVybiB2OFVuZGVmaW5lZCgpOwogfQogCiB2ODo6SGFuZGxlPHY4OjpWYWx1
ZT4gbnBPYmplY3ROYW1lZFByb3BlcnR5R2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1l
LCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQpAQCAtMjg5LDcgKzI4OSw3IEBAIHN0YXRp
YyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gbnBPYmplY3RTZXRQcm9wZXJ0eSh2ODo6TG9jYWw8djg6
Ok9iamVjdD4gc2VsZiwgTlBJCiAgICAgICAgIGlmIChzdWNjZXNzKQogICAgICAgICAgICAgcmV0
dXJuIHZhbHVlOyAvLyBJbnRlcmNlcHQgdGhlIGNhbGwuCiAgICAgfQotICAgIHJldHVybiB2ODo6
SGFuZGxlPHY4OjpWYWx1ZT4oKTsKKyAgICByZXR1cm4gdjhVbmRlZmluZWQoKTsKIH0KIAogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOFByb3h5LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4UHJveHkuY3BwCmluZGV4IDdjZmE0MmJlZGVkOTdiNDc2
MTkyOGM2ZWNiN2JiMmY1ZTAxNjljNDYuLjA0NWY3M2RiNWIxOGRkMDk0MjMyNGVkNjlhMTBkZmJk
MmM4NDY2YWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4UHJveHku
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4UHJveHkuY3BwCkBAIC01MDEs
NyArNTAxLDcgQEAgc3RhdGljIHZvaWQgRE9NRXhjZXB0aW9uU3RhY2tTZXR0ZXIodjg6OkxvY2Fs
PHY4OjpTdHJpbmc+IG5hbWUsIHY4OjpMb2NhbDx2ODo6VmEKIHY4OjpIYW5kbGU8djg6OlZhbHVl
PiBWOFByb3h5OjpzZXRET01FeGNlcHRpb24oaW50IGVjLCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSkK
IHsKICAgICBpZiAoZWMgPD0gMCB8fCB2ODo6Vjg6OklzRXhlY3V0aW9uVGVybWluYXRpbmcoKSkK
LSAgICAgICAgcmV0dXJuIHY4OjpIYW5kbGU8djg6OlZhbHVlPigpOworICAgICAgICByZXR1cm4g
djhVbmRlZmluZWQoKTsKIAogICAgIGlmIChlYyA9PSBOQVRJVkVfVFlQRV9FUlIpIHsKICAgICAg
ICAgY29uc3QgY2hhciogbWVzc2FnZSA9IDA7CkBAIC01MTYsNyArNTE2LDcgQEAgdjg6OkhhbmRs
ZTx2ODo6VmFsdWU+IFY4UHJveHk6OnNldERPTUV4Y2VwdGlvbihpbnQgZWMsIHY4OjpJc29sYXRl
KiBpc29sYXRlKQogICAgIH0KIAogICAgIGlmIChleGNlcHRpb24uSXNFbXB0eSgpKQotICAgICAg
ICByZXR1cm4gdjg6OkhhbmRsZTx2ODo6VmFsdWU+KCk7CisgICAgICAgIHJldHVybiB2OFVuZGVm
aW5lZCgpOwogCiAgICAgLy8gQXR0YWNoIGFuIEVycm9yIG9iamVjdCB0byB0aGUgRE9NRXhjZXB0
aW9uLiBUaGlzIGlzIHRoZW4gbGF6aWx5IHVzZWQgdG8gZ2V0IHRoZSBzdGFjayB2YWx1ZS4KICAg
ICB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gZXJyb3IgPSB2ODo6RXhjZXB0aW9uOjpFcnJvcih2OFN0
cmluZyhkZXNjcmlwdGlvbi5kZXNjcmlwdGlvbiwgaXNvbGF0ZSkpOwpAQCAtNTQ0LDcgKzU0NCw3
IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOFByb3h5Ojp0aHJvd0Vycm9yKEVycm9yVHlwZSB0
eXBlLCBjb25zdCBjaGFyKiBtZXNzYWdlLCB2CiAgICAgICAgIHJldHVybiB2ODo6VGhyb3dFeGNl
cHRpb24odjg6OkV4Y2VwdGlvbjo6RXJyb3IodjhTdHJpbmcobWVzc2FnZSwgaXNvbGF0ZSkpKTsK
ICAgICBkZWZhdWx0OgogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgcmV0
dXJuIHY4OjpIYW5kbGU8djg6OlZhbHVlPigpOworICAgICAgICByZXR1cm4gdjhVbmRlZmluZWQo
KTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1dv
cmtlclNjcmlwdERlYnVnU2VydmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1dv
cmtlclNjcmlwdERlYnVnU2VydmVyLmNwcAppbmRleCAxNTU0NmU2ZDY3MGY1ZDU4NDBmODhhOGI3
MDY1ZGExMzQ4NjY4YzM2Li4zYzI1YWQ4YzU1NmE5ZTViYTIzZDhmMjY5YzYzODFlZmQ3YWVlYjY4
IDEwMDc1NQotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9Xb3JrZXJTY3JpcHREZWJ1
Z1NlcnZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvV29ya2VyU2NyaXB0
RGVidWdTZXJ2ZXIuY3BwCkBAIC03Miw3ICs3Miw3IEBAIHZvaWQgV29ya2VyU2NyaXB0RGVidWdT
ZXJ2ZXI6OmFkZExpc3RlbmVyKFNjcmlwdERlYnVnTGlzdGVuZXIqIGxpc3RlbmVyKQogICAgICAg
ICByZXR1cm47CiAKICAgICB2ODo6SGFuZGxlPHY4OjpGdW5jdGlvbj4gZ2V0U2NyaXB0c0Z1bmN0
aW9uID0gdjg6OkxvY2FsPHY4OjpGdW5jdGlvbj46OkNhc3QobV9kZWJ1Z2dlclNjcmlwdC5nZXQo
KS0+R2V0KHY4OjpTdHJpbmc6Ok5ldygiZ2V0V29ya2VyU2NyaXB0cyIpKSk7Ci0gICAgdjg6Okhh
bmRsZTx2ODo6VmFsdWU+IGFyZ3ZbXSA9IHsgdjg6OkhhbmRsZTx2ODo6VmFsdWU+KCkgfTsKKyAg
ICB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gYXJndltdID0geyB2OFVuZGVmaW5lZCgpIH07CiAgICAg
djg6OkhhbmRsZTx2ODo6VmFsdWU+IHZhbHVlID0gZ2V0U2NyaXB0c0Z1bmN0aW9uLT5DYWxsKG1f
ZGVidWdnZXJTY3JpcHQuZ2V0KCksIDAsIGFyZ3YpOwogICAgIGlmICh2YWx1ZS5Jc0VtcHR5KCkp
CiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4
L2N1c3RvbS9WOENTU1N0eWxlRGVjbGFyYXRpb25DdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvdjgvY3VzdG9tL1Y4Q1NTU3R5bGVEZWNsYXJhdGlvbkN1c3RvbS5jcHAKaW5kZXgg
YWYyMzc1ZjdjNzYxODA3OGQwZmQ3ZTBkNjY0NjJiNzljYTQyZjZkZS4uZTNmYTgwOGMwODc2MDk3
NTNmNzEwZWZmYTllYjZlZDNiMmZkZTkzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvdjgvY3VzdG9tL1Y4Q1NTU3R5bGVEZWNsYXJhdGlvbkN1c3RvbS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4Q1NTU3R5bGVEZWNsYXJhdGlvbkN1c3Rv
bS5jcHAKQEAgLTE5NSwxNCArMTk1LDE0IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOENTU1N0
eWxlRGVjbGFyYXRpb246Om5hbWVkUHJvcGVydHlHZXR0ZXIodjg6OkxvY2FsPHY4OjpTCiAgICAg
SU5DX1NUQVRTKCJET00uQ1NTU3R5bGVEZWNsYXJhdGlvbi5OYW1lZFByb3BlcnR5R2V0dGVyIik7
CiAgICAgLy8gRmlyc3QgbG9vayBmb3IgQVBJIGRlZmluZWQgYXR0cmlidXRlcyBvbiB0aGUgc3R5
bGUgZGVjbGFyYXRpb24gb2JqZWN0LgogICAgIGlmIChpbmZvLkhvbGRlcigpLT5IYXNSZWFsTmFt
ZWRDYWxsYmFja1Byb3BlcnR5KG5hbWUpKQotICAgICAgICByZXR1cm4gdjg6OkhhbmRsZTx2ODo6
VmFsdWU+KCk7CisgICAgICAgIHJldHVybiB2OFVuZGVmaW5lZCgpOwogCiAgICAgLy8gU2VhcmNo
IHRoZSBzdHlsZSBkZWNsYXJhdGlvbi4KICAgICBDU1NQcm9wZXJ0eUluZm8qIHByb3BJbmZvID0g
Y3NzUHJvcGVydHlJbmZvKG5hbWUpOwogCiAgICAgLy8gRG8gbm90IGhhbmRsZSBub24tcHJvcGVy
dHkgbmFtZXMuCiAgICAgaWYgKCFwcm9wSW5mbykKLSAgICAgICAgcmV0dXJuIHY4OjpIYW5kbGU8
djg6OlZhbHVlPigpOworICAgICAgICByZXR1cm4gdjhVbmRlZmluZWQoKTsKIAogICAgIENTU1N0
eWxlRGVjbGFyYXRpb24qIGltcCA9IFY4Q1NTU3R5bGVEZWNsYXJhdGlvbjo6dG9OYXRpdmUoaW5m
by5Ib2xkZXIoKSk7CiAgICAgUmVmUHRyPENTU1ZhbHVlPiBjc3NWYWx1ZSA9IGltcC0+Z2V0UHJv
cGVydHlDU1NWYWx1ZUludGVybmFsKHN0YXRpY19jYXN0PENTU1Byb3BlcnR5SUQ+KHByb3BJbmZv
LT5wcm9wSUQpKTsKQEAgLTIyOCw3ICsyMjgsNyBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhD
U1NTdHlsZURlY2xhcmF0aW9uOjpuYW1lZFByb3BlcnR5U2V0dGVyKHY4OjpMb2NhbDx2ODo6Uwog
ICAgIENTU1N0eWxlRGVjbGFyYXRpb24qIGltcCA9IFY4Q1NTU3R5bGVEZWNsYXJhdGlvbjo6dG9O
YXRpdmUoaW5mby5Ib2xkZXIoKSk7CiAgICAgQ1NTUHJvcGVydHlJbmZvKiBwcm9wSW5mbyA9IGNz
c1Byb3BlcnR5SW5mbyhuYW1lKTsKICAgICBpZiAoIXByb3BJbmZvKQotICAgICAgICByZXR1cm4g
djg6OkhhbmRsZTx2ODo6VmFsdWU+KCk7CisgICAgICAgIHJldHVybiB2OFVuZGVmaW5lZCgpOwog
CiAgICAgU3RyaW5nIHByb3BlcnR5VmFsdWUgPSB0b1dlYkNvcmVTdHJpbmdXaXRoTnVsbENoZWNr
KHZhbHVlKTsKICAgICBpZiAocHJvcEluZm8tPmhhZFBpeGVsT3JQb3NQcmVmaXgpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhDb25zb2xlQ3VzdG9tLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOENvbnNvbGVDdXN0b20uY3Bw
CmluZGV4IGU3ZTBlZTdlMGJkNTJjYjU5NWJmMWYxNzkzOTc4Y2VhNjA5MjFmZTkuLmMxOWE3YjA5
MjcxNWU1N2I2NDM4YzQ1OGU0ZmIzYmIyM2Y0OWUzZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOENvbnNvbGVDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOENvbnNvbGVDdXN0b20uY3BwCkBAIC01MCw3ICs1
MCw3IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOENvbnNvbGU6OnRyYWNlQ2FsbGJhY2soY29u
c3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKICAgICBSZWZQdHI8U2NyaXB0Q2FsbFN0YWNrPiBjYWxs
U3RhY2soY3JlYXRlU2NyaXB0Q2FsbFN0YWNrKFNjcmlwdENhbGxTdGFjazo6bWF4Q2FsbFN0YWNr
U2l6ZVRvQ2FwdHVyZSkpOwogICAgIFJlZlB0cjxTY3JpcHRBcmd1bWVudHM+IHNjcmlwdEFyZ3Vt
ZW50cyhjcmVhdGVTY3JpcHRBcmd1bWVudHMoYXJncywgMCkpOwogICAgIGltcC0+dHJhY2Uoc2Ny
aXB0QXJndW1lbnRzLnJlbGVhc2UoKSwgY2FsbFN0YWNrKTsKLSAgICByZXR1cm4gdjg6OkhhbmRs
ZTx2ODo6VmFsdWU+KCk7CisgICAgcmV0dXJuIHY4VW5kZWZpbmVkKCk7CiB9CiAKIHY4OjpIYW5k
bGU8djg6OlZhbHVlPiBWOENvbnNvbGU6OmFzc2VydENhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVu
dHMmIGFyZ3MpCkBAIC02MSw3ICs2MSw3IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOENvbnNv
bGU6OmFzc2VydENhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiAgICAgYm9vbCBj
b25kaXRpb24gPSBhcmdzWzBdLT5Cb29sZWFuVmFsdWUoKTsKICAgICBSZWZQdHI8U2NyaXB0QXJn
dW1lbnRzPiBzY3JpcHRBcmd1bWVudHMoY3JlYXRlU2NyaXB0QXJndW1lbnRzKGFyZ3MsIDEpKTsK
ICAgICBpbXAtPmFzc2VydENvbmRpdGlvbihzY3JpcHRBcmd1bWVudHMucmVsZWFzZSgpLCBjYWxs
U3RhY2ssIGNvbmRpdGlvbik7Ci0gICAgcmV0dXJuIHY4OjpIYW5kbGU8djg6OlZhbHVlPigpOwor
ICAgIHJldHVybiB2OFVuZGVmaW5lZCgpOwogfQogCiAjaWYgRU5BQkxFKEpBVkFTQ1JJUFRfREVC
VUdHRVIpCkBAIC03NCw3ICs3NCw3IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOENvbnNvbGU6
OnByb2ZpbGVDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogICAgICAgICByZXR1
cm4gdjg6OlVuZGVmaW5lZCgpOwogICAgIFNUUklOR19UT19WOFBBUkFNRVRFUl9FWENFUFRJT05f
QkxPQ0soVjhQYXJhbWV0ZXI8V2l0aFVuZGVmaW5lZE9yTnVsbENoZWNrPiwgdGl0bGUsIGFyZ3Nb
MF0pOwogICAgIGltcC0+cHJvZmlsZSh0aXRsZSwgU2NyaXB0U3RhdGU6OmN1cnJlbnQoKSwgY2Fs
bFN0YWNrKTsKLSAgICByZXR1cm4gdjg6OkhhbmRsZTx2ODo6VmFsdWU+KCk7CisgICAgcmV0dXJu
IHY4VW5kZWZpbmVkKCk7CiB9CiAKIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOENvbnNvbGU6OnBy
b2ZpbGVFbmRDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQpAQCAtODYsNyArODYs
NyBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhDb25zb2xlOjpwcm9maWxlRW5kQ2FsbGJhY2so
Y29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKICAgICAgICAgcmV0dXJuIHY4OjpVbmRlZmluZWQo
KTsKICAgICBTVFJJTkdfVE9fVjhQQVJBTUVURVJfRVhDRVBUSU9OX0JMT0NLKFY4UGFyYW1ldGVy
PFdpdGhVbmRlZmluZWRPck51bGxDaGVjaz4sIHRpdGxlLCBhcmdzWzBdKTsKICAgICBpbXAtPnBy
b2ZpbGVFbmQodGl0bGUsIFNjcmlwdFN0YXRlOjpjdXJyZW50KCksIGNhbGxTdGFjayk7Ci0gICAg
cmV0dXJuIHY4OjpIYW5kbGU8djg6OlZhbHVlPigpOworICAgIHJldHVybiB2OFVuZGVmaW5lZCgp
OwogfQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1
c3RvbS9WOERPTVN0cmluZ01hcEN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92
OC9jdXN0b20vVjhET01TdHJpbmdNYXBDdXN0b20uY3BwCmluZGV4IDVkNDNkNDA3MGQ0ZjQ2MDc3
MzgyMTY0NzJjNWQ4ZTg4YWUzODA1MzkuLmJmMTU5NmRkNDZiMzMwMWRhN2I0N2Y3MTRjNmY4MWM1
OGM0NGYzMjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9W
OERPTVN0cmluZ01hcEN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvdjgv
Y3VzdG9tL1Y4RE9NU3RyaW5nTWFwQ3VzdG9tLmNwcApAQCAtNTEsNyArNTEsNyBAQCB2ODo6SGFu
ZGxlPHY4OjpWYWx1ZT4gVjhET01TdHJpbmdNYXA6Om5hbWVkUHJvcGVydHlHZXR0ZXIodjg6Okxv
Y2FsPHY4OjpTdHJpbmc+CiAgICAgSU5DX1NUQVRTKCJET00uRE9NU3RyaW5nTWFwLk5hbWVkUHJv
cGVydHlHZXR0ZXIiKTsKICAgICBTdHJpbmcgdmFsdWUgPSBWOERPTVN0cmluZ01hcDo6dG9OYXRp
dmUoaW5mby5Ib2xkZXIoKSktPml0ZW0odG9XZWJDb3JlU3RyaW5nKG5hbWUpKTsKICAgICBpZiAo
dmFsdWUuaXNOdWxsKCkpCi0gICAgICAgIHJldHVybiB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4oKTsK
KyAgICAgICAgcmV0dXJuIHY4VW5kZWZpbmVkKCk7CiAgICAgcmV0dXJuIHY4U3RyaW5nT3JVbmRl
ZmluZWQodmFsdWUsIGluZm8uR2V0SXNvbGF0ZSgpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4RE9NV2luZG93Q3VzdG9tLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOERPTVdpbmRvd0N1c3RvbS5jcHAKaW5kZXgg
OGZhMjgwOGU3MzhiMDFhMTM1ZTlkYzljMDI3ZmJkYmMxMmQyMmQ2Yi4uM2E0ZmIxM2RiZGMzZTg1
ZjdhNTgzZDVmZWY2ODk5MGM0Y2YwOWNiYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvdjgvY3VzdG9tL1Y4RE9NV2luZG93Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy92OC9jdXN0b20vVjhET01XaW5kb3dDdXN0b20uY3BwCkBAIC00NzIsMTcgKzQ3
MiwxNyBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhET01XaW5kb3c6OmluZGV4ZWRQcm9wZXJ0
eUdldHRlcih1aW50MzJfdCBpbmRleCwgY29uc3QgdgogCiAgICAgRE9NV2luZG93KiB3aW5kb3cg
PSBWOERPTVdpbmRvdzo6dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSk7CiAgICAgaWYgKCF3aW5kb3cp
Ci0gICAgICAgIHJldHVybiB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4oKTsKKyAgICAgICAgcmV0dXJu
IHY4VW5kZWZpbmVkKCk7CiAKICAgICBGcmFtZSogZnJhbWUgPSB3aW5kb3ctPmZyYW1lKCk7CiAg
ICAgaWYgKCFmcmFtZSkKLSAgICAgICAgcmV0dXJuIHY4OjpIYW5kbGU8djg6OlZhbHVlPigpOwor
ICAgICAgICByZXR1cm4gdjhVbmRlZmluZWQoKTsKIAogICAgIEZyYW1lKiBjaGlsZCA9IGZyYW1l
LT50cmVlKCktPnNjb3BlZENoaWxkKGluZGV4KTsKICAgICBpZiAoY2hpbGQpCiAgICAgICAgIHJl
dHVybiB0b1Y4KGNoaWxkLT5kb21XaW5kb3coKSwgaW5mby5HZXRJc29sYXRlKCkpOwogCi0gICAg
cmV0dXJuIHY4OjpIYW5kbGU8djg6OlZhbHVlPigpOworICAgIHJldHVybiB2OFVuZGVmaW5lZCgp
OwogfQogCiAKQEAgLTQ5MiwxMiArNDkyLDEyIEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOERP
TVdpbmRvdzo6bmFtZWRQcm9wZXJ0eUdldHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtCiAK
ICAgICBET01XaW5kb3cqIHdpbmRvdyA9IFY4RE9NV2luZG93Ojp0b05hdGl2ZShpbmZvLkhvbGRl
cigpKTsKICAgICBpZiAoIXdpbmRvdykKLSAgICAgICAgcmV0dXJuIHY4OjpIYW5kbGU8djg6OlZh
bHVlPigpOworICAgICAgICByZXR1cm4gdjhVbmRlZmluZWQoKTsKIAogICAgIEZyYW1lKiBmcmFt
ZSA9IHdpbmRvdy0+ZnJhbWUoKTsKICAgICAvLyB3aW5kb3cgaXMgZGV0YWNoZWQgZnJvbSBhIGZy
YW1lLgogICAgIGlmICghZnJhbWUpCi0gICAgICAgIHJldHVybiB2ODo6SGFuZGxlPHY4OjpWYWx1
ZT4oKTsKKyAgICAgICAgcmV0dXJuIHY4VW5kZWZpbmVkKCk7CiAKICAgICAvLyBTZWFyY2ggc3Vi
LWZyYW1lcy4KICAgICBBdG9taWNTdHJpbmcgcHJvcE5hbWUgPSB2OFZhbHVlVG9BdG9taWNXZWJD
b3JlU3RyaW5nKG5hbWUpOwpAQCAtNTA3LDcgKzUwNyw3IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVl
PiBWOERPTVdpbmRvdzo6bmFtZWRQcm9wZXJ0eUdldHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4g
bmFtCiAKICAgICAvLyBTZWFyY2ggSURMIGZ1bmN0aW9ucyBkZWZpbmVkIGluIHRoZSBwcm90b3R5
cGUKICAgICBpZiAoIWluZm8uSG9sZGVyKCktPkdldFJlYWxOYW1lZFByb3BlcnR5KG5hbWUpLklz
RW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIHY4OjpIYW5kbGU8djg6OlZhbHVlPigpOworICAgICAg
ICByZXR1cm4gdjhVbmRlZmluZWQoKTsKIAogICAgIC8vIFNlYXJjaCBuYW1lZCBpdGVtcyBpbiB0
aGUgZG9jdW1lbnQuCiAgICAgRG9jdW1lbnQqIGRvYyA9IGZyYW1lLT5kb2N1bWVudCgpOwpAQCAt
NTIzLDcgKzUyMyw3IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOERPTVdpbmRvdzo6bmFtZWRQ
cm9wZXJ0eUdldHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtCiAgICAgICAgIH0KICAgICB9
CiAKLSAgICByZXR1cm4gdjg6OkhhbmRsZTx2ODo6VmFsdWU+KCk7CisgICAgcmV0dXJuIHY4VW5k
ZWZpbmVkKCk7CiB9CiAKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvdjgv
Y3VzdG9tL1Y4RGF0YVZpZXdDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvdjgv
Y3VzdG9tL1Y4RGF0YVZpZXdDdXN0b20uY3BwCmluZGV4IGJkZGJhOWFhMDhhZTgxYjkyYjE1NTkw
MTAzZjE1ZjU3MTkwMmZhNDIuLjQwZTFhN2U3Mzc3YWQzOTgwMTBhYTJiN2M4MzNhOWQzNGEwOWRl
MzAgMTAwNzU1Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOERhdGFW
aWV3Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhE
YXRhVmlld0N1c3RvbS5jcHAKQEAgLTEwNyw3ICsxMDcsNyBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1
ZT4gVjhEYXRhVmlldzo6c2V0SW50OENhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3Mp
CiAgICAgaW1wLT5zZXRJbnQ4KGJ5dGVPZmZzZXQsIHN0YXRpY19jYXN0PGludDhfdD4odmFsdWUp
LCBlYyk7CiAgICAgaWYgKFVOTElLRUxZKGVjKSkKICAgICAgICAgcmV0dXJuIFY4UHJveHk6OnNl
dERPTUV4Y2VwdGlvbihlYywgYXJncy5HZXRJc29sYXRlKCkpOwotICAgIHJldHVybiB2ODo6SGFu
ZGxlPHY4OjpWYWx1ZT4oKTsKKyAgICByZXR1cm4gdjhVbmRlZmluZWQoKTsKIH0KIAogdjg6Okhh
bmRsZTx2ODo6VmFsdWU+IFY4RGF0YVZpZXc6OnNldFVpbnQ4Q2FsbGJhY2soY29uc3Qgdjg6OkFy
Z3VtZW50cyYgYXJncykKQEAgLTEyMyw3ICsxMjMsNyBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4g
VjhEYXRhVmlldzo6c2V0VWludDhDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQog
ICAgIGltcC0+c2V0VWludDgoYnl0ZU9mZnNldCwgc3RhdGljX2Nhc3Q8dWludDhfdD4odmFsdWUp
LCBlYyk7CiAgICAgaWYgKFVOTElLRUxZKGVjKSkKICAgICAgICAgcmV0dXJuIFY4UHJveHk6OnNl
dERPTUV4Y2VwdGlvbihlYywgYXJncy5HZXRJc29sYXRlKCkpOwotICAgIHJldHVybiB2ODo6SGFu
ZGxlPHY4OjpWYWx1ZT4oKTsKKyAgICByZXR1cm4gdjhVbmRlZmluZWQoKTsKIH0KIAogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvdjgv
Y3VzdG9tL1Y4RGV2aWNlTW90aW9uRXZlbnRDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvdjgvY3VzdG9tL1Y4RGV2aWNlTW90aW9uRXZlbnRDdXN0b20uY3BwCmluZGV4IGUzZTI5
MDE2MTZkMmE3YTVkZTk3MmIzZjcxMmM5MzgwMTc5MjFiNjguLmJkMDc0Nzk5ZGQ3MDQyNWJkOGEx
MzkwMWNiYjZhMTJmNzg3YzU1M2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3Y4L2N1c3RvbS9WOERldmljZU1vdGlvbkV2ZW50Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhEZXZpY2VNb3Rpb25FdmVudEN1c3RvbS5jcHAKQEAg
LTE3Niw3ICsxNzYsNyBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhEZXZpY2VNb3Rpb25FdmVu
dDo6aW5pdERldmljZU1vdGlvbkV2ZW50Q2FsbGJhY2soY29uc3QgdgogICAgIGRvdWJsZSBpbnRl
cnZhbCA9IGFyZ3NbNl0tPk51bWJlclZhbHVlKCk7CiAgICAgUmVmUHRyPERldmljZU1vdGlvbkRh
dGE+IGRldmljZU1vdGlvbkRhdGEgPSBEZXZpY2VNb3Rpb25EYXRhOjpjcmVhdGUoYWNjZWxlcmF0
aW9uLCBhY2NlbGVyYXRpb25JbmNsdWRpbmdHcmF2aXR5LCByb3RhdGlvblJhdGUsIGludGVydmFs
UHJvdmlkZWQsIGludGVydmFsKTsKICAgICBpbXAtPmluaXREZXZpY2VNb3Rpb25FdmVudCh0eXBl
LCBidWJibGVzLCBjYW5jZWxhYmxlLCBkZXZpY2VNb3Rpb25EYXRhLmdldCgpKTsKLSAgICByZXR1
cm4gdjg6OkhhbmRsZTx2ODo6VmFsdWU+KCk7CisgICAgcmV0dXJuIHY4VW5kZWZpbmVkKCk7CiB9
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3Y4L2N1c3RvbS9WOERldmljZU9yaWVudGF0aW9uRXZlbnRDdXN0b20uY3BwIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4RGV2aWNlT3JpZW50YXRpb25FdmVudEN1
c3RvbS5jcHAKaW5kZXggYmJkYzNmY2U4YWE2N2JjODkyMjcyMzIyMjRmMDM1NWE2NTU3ZjJlYi4u
MzdkNGExODNlMGEyZDhhYzg5YTI3NGI1NTBlODljYzAxYTJkYTU1NCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4RGV2aWNlT3JpZW50YXRpb25FdmVudEN1
c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4RGV2aWNl
T3JpZW50YXRpb25FdmVudEN1c3RvbS5jcHAKQEAgLTk1LDcgKzk1LDcgQEAgdjg6OkhhbmRsZTx2
ODo6VmFsdWU+IFY4RGV2aWNlT3JpZW50YXRpb25FdmVudDo6aW5pdERldmljZU9yaWVudGF0aW9u
RXZlbnRDYWxsYmEKICAgICBib29sIGFic29sdXRlID0gYXJnc1s2XS0+Qm9vbGVhblZhbHVlKCk7
CiAgICAgUmVmUHRyPERldmljZU9yaWVudGF0aW9uRGF0YT4gb3JpZW50YXRpb24gPSBEZXZpY2VP
cmllbnRhdGlvbkRhdGE6OmNyZWF0ZShhbHBoYVByb3ZpZGVkLCBhbHBoYSwgYmV0YVByb3ZpZGVk
LCBiZXRhLCBnYW1tYVByb3ZpZGVkLCBnYW1tYSwgYWJzb2x1dGVQcm92aWRlZCwgYWJzb2x1dGUp
OwogICAgIGltcC0+aW5pdERldmljZU9yaWVudGF0aW9uRXZlbnQodHlwZSwgYnViYmxlcywgY2Fu
Y2VsYWJsZSwgb3JpZW50YXRpb24uZ2V0KCkpOwotICAgIHJldHVybiB2ODo6SGFuZGxlPHY4OjpW
YWx1ZT4oKTsKKyAgICByZXR1cm4gdjhVbmRlZmluZWQoKTsKIH0KIAogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4
RGlyZWN0b3J5RW50cnlDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3Vz
dG9tL1Y4RGlyZWN0b3J5RW50cnlDdXN0b20uY3BwCmluZGV4IDZmZTUyNDI0ZjUwZjc2MzRiNDBm
OGY0ZTVkYmYyNDhmZDJmM2Q0YzUuLjdjMzkyYzhlOWJlYzY3ODhmYjQ2ZDNmYTgzNjhlOTBhYTY3
ZTZjZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOERp
cmVjdG9yeUVudHJ5Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9j
dXN0b20vVjhEaXJlY3RvcnlFbnRyeUN1c3RvbS5jcHAKQEAgLTU2LDcgKzU2LDcgQEAgdjg6Okhh
bmRsZTx2ODo6VmFsdWU+IFY4RGlyZWN0b3J5RW50cnk6OmdldERpcmVjdG9yeUNhbGxiYWNrKGNv
bnN0IHY4OjpBcmd1bWVudHMKICAgICBTVFJJTkdfVE9fVjhQQVJBTUVURVJfRVhDRVBUSU9OX0JM
T0NLKFY4UGFyYW1ldGVyPFdpdGhVbmRlZmluZWRPck51bGxDaGVjaz4sIHBhdGgsIGFyZ3NbMF0p
OwogICAgIGlmIChhcmdzLkxlbmd0aCgpIDw9IDEpIHsKICAgICAgICAgaW1wLT5nZXREaXJlY3Rv
cnkocGF0aCk7Ci0gICAgICAgIHJldHVybiB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4oKTsKKyAgICAg
ICAgcmV0dXJuIHY4VW5kZWZpbmVkKCk7CiAgICAgfQogICAgIFJlZlB0cjxXZWJLaXRGbGFncz4g
ZmxhZ3M7CiAgICAgaWYgKCFpc1VuZGVmaW5lZE9yTnVsbChhcmdzWzFdKSAmJiBhcmdzWzFdLT5J
c09iamVjdCgpKSB7CkBAIC04Niw3ICs4Niw3IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOERp
cmVjdG9yeUVudHJ5OjpnZXREaXJlY3RvcnlDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzCiAg
ICAgICAgIGVycm9yQ2FsbGJhY2sgPSBWOEVycm9yQ2FsbGJhY2s6OmNyZWF0ZShhcmdzWzNdLCBn
ZXRTY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpOwogICAgIH0KICAgICBpbXAtPmdldERpcmVjdG9y
eShwYXRoLCBmbGFncywgc3VjY2Vzc0NhbGxiYWNrLCBlcnJvckNhbGxiYWNrKTsKLSAgICByZXR1
cm4gdjg6OkhhbmRsZTx2ODo6VmFsdWU+KCk7CisgICAgcmV0dXJuIHY4VW5kZWZpbmVkKCk7CiB9
CiAKIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOERpcmVjdG9yeUVudHJ5OjpnZXRGaWxlQ2FsbGJh
Y2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKQEAgLTEwMCw3ICsxMDAsNyBAQCB2ODo6SGFu
ZGxlPHY4OjpWYWx1ZT4gVjhEaXJlY3RvcnlFbnRyeTo6Z2V0RmlsZUNhbGxiYWNrKGNvbnN0IHY4
OjpBcmd1bWVudHMmIGFyZwogICAgIFNUUklOR19UT19WOFBBUkFNRVRFUl9FWENFUFRJT05fQkxP
Q0soVjhQYXJhbWV0ZXI8V2l0aFVuZGVmaW5lZE9yTnVsbENoZWNrPiwgcGF0aCwgYXJnc1swXSk7
CiAgICAgaWYgKGFyZ3MuTGVuZ3RoKCkgPD0gMSkgewogICAgICAgICBpbXAtPmdldEZpbGUocGF0
aCk7Ci0gICAgICAgIHJldHVybiB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4oKTsKKyAgICAgICAgcmV0
dXJuIHY4VW5kZWZpbmVkKCk7CiAgICAgfQogICAgIFJlZlB0cjxXZWJLaXRGbGFncz4gZmxhZ3M7
CiAgICAgaWYgKCFpc1VuZGVmaW5lZE9yTnVsbChhcmdzWzFdKSAmJiBhcmdzWzFdLT5Jc09iamVj
dCgpKSB7CkBAIC0xMzAsNyArMTMwLDcgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4RGlyZWN0
b3J5RW50cnk6OmdldEZpbGVDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmcKICAgICAg
ICAgZXJyb3JDYWxsYmFjayA9IFY4RXJyb3JDYWxsYmFjazo6Y3JlYXRlKGFyZ3NbM10sIGdldFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQoKSk7CiAgICAgfQogICAgIGltcC0+Z2V0RmlsZShwYXRoLCBm
bGFncywgc3VjY2Vzc0NhbGxiYWNrLCBlcnJvckNhbGxiYWNrKTsKLSAgICByZXR1cm4gdjg6Okhh
bmRsZTx2ODo6VmFsdWU+KCk7CisgICAgcmV0dXJuIHY4VW5kZWZpbmVkKCk7CiB9CiAKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTEFsbENvbGxl
Y3Rpb25DdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRN
TEFsbENvbGxlY3Rpb25DdXN0b20uY3BwCmluZGV4IDBjODNmYjUzNDE3ZTdkZWE5MDA3YzNjMmRj
YWRjMGU1NTZmNzdjZDkuLjUzMmUyNTdhYzc3ZWZmMWY1MGNhNThjY2M5Y2VkZjhiNzM3YzFjZTMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxBbGxD
b2xsZWN0aW9uQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0
b20vVjhIVE1MQWxsQ29sbGVjdGlvbkN1c3RvbS5jcHAKQEAgLTQ3LDcgKzQ3LDcgQEAgc3RhdGlj
IHY4OjpIYW5kbGU8djg6OlZhbHVlPiBnZXROYW1lZEl0ZW1zKEhUTUxBbGxDb2xsZWN0aW9uKiBj
b2xsZWN0aW9uLCBBdG9taWMKICAgICBjb2xsZWN0aW9uLT5uYW1lZEl0ZW1zKG5hbWUsIG5hbWVk
SXRlbXMpOwogCiAgICAgaWYgKCFuYW1lZEl0ZW1zLnNpemUoKSkKLSAgICAgICAgcmV0dXJuIHY4
OjpIYW5kbGU8djg6OlZhbHVlPigpOworICAgICAgICByZXR1cm4gdjhVbmRlZmluZWQoKTsKIAog
ICAgIGlmIChuYW1lZEl0ZW1zLnNpemUoKSA9PSAxKQogICAgICAgICByZXR1cm4gdG9WOChuYW1l
ZEl0ZW1zLmF0KDApLnJlbGVhc2UoKSwgaXNvbGF0ZSk7CkBAIC03Niw5ICs3Niw5IEBAIHY4OjpI
YW5kbGU8djg6OlZhbHVlPiBWOEhUTUxBbGxDb2xsZWN0aW9uOjpuYW1lZFByb3BlcnR5R2V0dGVy
KHY4OjpMb2NhbDx2ODo6U3RyCiAgICAgSU5DX1NUQVRTKCJET00uSFRNTEFsbENvbGxlY3Rpb24u
TmFtZWRQcm9wZXJ0eUdldHRlciIpOwogCiAgICAgaWYgKCFpbmZvLkhvbGRlcigpLT5HZXRSZWFs
TmFtZWRQcm9wZXJ0eUluUHJvdG90eXBlQ2hhaW4obmFtZSkuSXNFbXB0eSgpKQotICAgICAgICBy
ZXR1cm4gdjg6OkhhbmRsZTx2ODo6VmFsdWU+KCk7CisgICAgICAgIHJldHVybiB2OFVuZGVmaW5l
ZCgpOwogICAgIGlmIChpbmZvLkhvbGRlcigpLT5IYXNSZWFsTmFtZWRDYWxsYmFja1Byb3BlcnR5
KG5hbWUpKQotICAgICAgICByZXR1cm4gdjg6OkhhbmRsZTx2ODo6VmFsdWU+KCk7CisgICAgICAg
IHJldHVybiB2OFVuZGVmaW5lZCgpOwogCiAgICAgSFRNTEFsbENvbGxlY3Rpb24qIGltcCA9IFY4
SFRNTEFsbENvbGxlY3Rpb246OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkpOwogICAgIHJldHVybiBn
ZXROYW1lZEl0ZW1zKGltcCwgdjhWYWx1ZVRvQXRvbWljV2ViQ29yZVN0cmluZyhuYW1lKSwgaW5m
by5HZXRJc29sYXRlKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvdjgv
Y3VzdG9tL1Y4SFRNTENvbGxlY3Rpb25DdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvdjgvY3VzdG9tL1Y4SFRNTENvbGxlY3Rpb25DdXN0b20uY3BwCmluZGV4IDdhNmY3Yjk1YmRm
ZjYwODZhZGVkMmQ0OTUzZWFkYzhhNTkzNWI0NzEuLjM4MDJiYjNlYzZiYjJhNWY0OWE0NDBkZjgx
YmI4OWMyMjllNDM4Y2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1
c3RvbS9WOEhUTUxDb2xsZWN0aW9uQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy92OC9jdXN0b20vVjhIVE1MQ29sbGVjdGlvbkN1c3RvbS5jcHAKQEAgLTQ5LDcgKzQ5LDcg
QEAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBnZXROYW1lZEl0ZW1zKEhUTUxDb2xsZWN0
aW9uKiBjb2xsZWN0aW9uLCBBdG9taWNTdHIKICAgICBjb2xsZWN0aW9uLT5uYW1lZEl0ZW1zKG5h
bWUsIG5hbWVkSXRlbXMpOwogCiAgICAgaWYgKCFuYW1lZEl0ZW1zLnNpemUoKSkKLSAgICAgICAg
cmV0dXJuIHY4OjpIYW5kbGU8djg6OlZhbHVlPigpOworICAgICAgICByZXR1cm4gdjhVbmRlZmlu
ZWQoKTsKIAogICAgIGlmIChuYW1lZEl0ZW1zLnNpemUoKSA9PSAxKQogICAgICAgICByZXR1cm4g
dG9WOChuYW1lZEl0ZW1zLmF0KDApLnJlbGVhc2UoKSwgaXNvbGF0ZSk7CkBAIC02NSw5ICs2NSw5
IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOEhUTUxDb2xsZWN0aW9uOjpuYW1lZFByb3BlcnR5
R2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nCiAgICAgSU5DX1NUQVRTKCJET00uSFRNTENvbGxl
Y3Rpb24uTmFtZWRQcm9wZXJ0eUdldHRlciIpOwogCiAgICAgaWYgKCFpbmZvLkhvbGRlcigpLT5H
ZXRSZWFsTmFtZWRQcm9wZXJ0eUluUHJvdG90eXBlQ2hhaW4obmFtZSkuSXNFbXB0eSgpKQotICAg
ICAgICByZXR1cm4gdjg6OkhhbmRsZTx2ODo6VmFsdWU+KCk7CisgICAgICAgIHJldHVybiB2OFVu
ZGVmaW5lZCgpOwogICAgIGlmIChpbmZvLkhvbGRlcigpLT5IYXNSZWFsTmFtZWRDYWxsYmFja1By
b3BlcnR5KG5hbWUpKQotICAgICAgICByZXR1cm4gdjg6OkhhbmRsZTx2ODo6VmFsdWU+KCk7Cisg
ICAgICAgIHJldHVybiB2OFVuZGVmaW5lZCgpOwogCiAgICAgSFRNTENvbGxlY3Rpb24qIGltcCA9
IFY4SFRNTENvbGxlY3Rpb246OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkpOwogICAgIHJldHVybiBn
ZXROYW1lZEl0ZW1zKGltcCwgdjhWYWx1ZVRvQXRvbWljV2ViQ29yZVN0cmluZyhuYW1lKSwgaW5m
by5HZXRJc29sYXRlKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvdjgv
Y3VzdG9tL1Y4SFRNTERvY3VtZW50Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3Y4L2N1c3RvbS9WOEhUTUxEb2N1bWVudEN1c3RvbS5jcHAKaW5kZXggMmZjYzU4MWY5YjNjMGEy
ZGExYjI5MGUwN2Y1MWNlYzlkNjIzMmM1ZC4uYzIxNTBhMGZiMmZjNTYxY2IyOGI3YWYzYjdlZGVj
OWY1ODExYTdhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9t
L1Y4SFRNTERvY3VtZW50Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92
OC9jdXN0b20vVjhIVE1MRG9jdW1lbnRDdXN0b20uY3BwCkBAIC04MywxMSArODMsMTEgQEAgdjg6
OkxvY2FsPHY4OjpPYmplY3Q+IFY4SFRNTERvY3VtZW50OjpXcmFwSW5TaGFkb3dPYmplY3Qodjg6
OkxvY2FsPHY4OjpPYmplY3Q+IHcKIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOEhUTUxEb2N1bWVu
dDo6R2V0TmFtZWRQcm9wZXJ0eShIVE1MRG9jdW1lbnQqIGh0bWxEb2N1bWVudCwgY29uc3QgQXRv
bWljU3RyaW5nJiBrZXksIHY4OjpJc29sYXRlKiBpc29sYXRlKQogewogICAgIGlmICghaHRtbERv
Y3VtZW50LT5oYXNOYW1lZEl0ZW0oa2V5LmltcGwoKSkgJiYgIWh0bWxEb2N1bWVudC0+aGFzRXh0
cmFOYW1lZEl0ZW0oa2V5LmltcGwoKSkpCi0gICAgICAgIHJldHVybiB2ODo6SGFuZGxlPHY4OjpW
YWx1ZT4oKTsKKyAgICAgICAgcmV0dXJuIHY4VW5kZWZpbmVkKCk7CiAKICAgICBSZWZQdHI8SFRN
TENvbGxlY3Rpb24+IGl0ZW1zID0gaHRtbERvY3VtZW50LT5kb2N1bWVudE5hbWVkSXRlbXMoa2V5
KTsKICAgICBpZiAoaXRlbXMtPmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIHY4OjpIYW5kbGU8
djg6OlZhbHVlPigpOworICAgICAgICByZXR1cm4gdjhVbmRlZmluZWQoKTsKIAogICAgIGlmIChp
dGVtcy0+aGFzRXhhY3RseU9uZUl0ZW0oKSkgewogICAgICAgICBOb2RlKiBub2RlID0gaXRlbXMt
Pml0ZW0oMCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20v
VjhIVE1MRm9ybUVsZW1lbnRDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvdjgv
Y3VzdG9tL1Y4SFRNTEZvcm1FbGVtZW50Q3VzdG9tLmNwcAppbmRleCAxYzk1NjNkMGQwYzU4YzBm
NTkwMjkyNjFjNWY0ZWM1MmQzYjczOGEzLi5iZWMwMjBkOTVmODRjNDlhNjc5ZWY3M2Y2OGQ5YmU0
ODk1YTk1ZWRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20v
VjhIVE1MRm9ybUVsZW1lbnRDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3Y4L2N1c3RvbS9WOEhUTUxGb3JtRWxlbWVudEN1c3RvbS5jcHAKQEAgLTQ4LDcgKzQ4LDcgQEAg
djg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4SFRNTEZvcm1FbGVtZW50OjppbmRleGVkUHJvcGVydHlH
ZXR0ZXIodWludDMyX3QgaW5kZXgsIGMKIAogICAgIFJlZlB0cjxOb2RlPiBmb3JtRWxlbWVudCA9
IGZvcm0tPmVsZW1lbnRzKCktPml0ZW0oaW5kZXgpOwogICAgIGlmICghZm9ybUVsZW1lbnQpCi0g
ICAgICAgIHJldHVybiB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4oKTsKKyAgICAgICAgcmV0dXJuIHY4
VW5kZWZpbmVkKCk7CiAgICAgcmV0dXJuIHRvVjgoZm9ybUVsZW1lbnQucmVsZWFzZSgpLCBpbmZv
LkdldElzb2xhdGUoKSk7CiB9CiAKQEAgLTY1LDcgKzY1LDcgQEAgdjg6OkhhbmRsZTx2ODo6VmFs
dWU+IFY4SFRNTEZvcm1FbGVtZW50OjpuYW1lZFByb3BlcnR5R2V0dGVyKHY4OjpMb2NhbDx2ODo6
U3RyaW4KICAgICAgICAgVmVjdG9yPFJlZlB0cjxOb2RlPiA+IGVsZW1lbnRzOwogICAgICAgICBp
bXAtPmdldE5hbWVkRWxlbWVudHModiwgZWxlbWVudHMpOwogICAgICAgICBpZiAoZWxlbWVudHMu
aXNFbXB0eSgpKQotICAgICAgICAgICAgcmV0dXJuIHY4OjpIYW5kbGU8djg6OlZhbHVlPigpOwor
ICAgICAgICAgICAgcmV0dXJuIHY4VW5kZWZpbmVkKCk7CiAgICAgfQogCiAgICAgLy8gU2Vjb25k
IGNhbGwgbWF5IHJldHVybiBkaWZmZXJlbnQgcmVzdWx0cyBmcm9tIHRoZSBmaXJzdCBjYWxsLApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTEZyYW1l
U2V0RWxlbWVudEN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20v
VjhIVE1MRnJhbWVTZXRFbGVtZW50Q3VzdG9tLmNwcAppbmRleCA5NzU3NGNlYWIzY2Y2NDA4ZGNh
YjhiNzQ4MzY5MjlkOTU5ODBlNTZhLi41MTllMDE1Zjc4MTRiM2NkMWUxMDFiY2MyMWJlNGI0ZmQz
NjI0ZjQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhI
VE1MRnJhbWVTZXRFbGVtZW50Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy92OC9jdXN0b20vVjhIVE1MRnJhbWVTZXRFbGVtZW50Q3VzdG9tLmNwcApAQCAtNTcsNyArNTcs
NyBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhIVE1MRnJhbWVTZXRFbGVtZW50OjpuYW1lZFBy
b3BlcnR5R2V0dGVyKHY4OjpMb2NhbDx2ODo6UwogICAgICAgICBpZiAoRnJhbWUqIGZyYW1lID0g
ZG9jLT5mcmFtZSgpKQogICAgICAgICAgICAgcmV0dXJuIHRvVjgoZnJhbWUtPmRvbVdpbmRvdygp
LCBpbmZvLkdldElzb2xhdGUoKSk7CiAgICAgfQotICAgIHJldHVybiB2ODo6SGFuZGxlPHY4OjpW
YWx1ZT4oKTsKKyAgICByZXR1cm4gdjhVbmRlZmluZWQoKTsKIH0KIAogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4
SFRNTE9wdGlvbnNDb2xsZWN0aW9uQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3Y4L2N1c3RvbS9WOEhUTUxPcHRpb25zQ29sbGVjdGlvbkN1c3RvbS5jcHAKaW5kZXggNjFlZmE0
NGYyZTVlMDM4MjMxY2E1ZWI3ZjU4ZmU0NGRkZjZkNGIzOS4uOTAzMGI1MTJkN2QxNjMzNDVkYTNi
M2ExNDcxMGI4ZWEyZmNhYzRjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
djgvY3VzdG9tL1Y4SFRNTE9wdGlvbnNDb2xsZWN0aW9uQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhIVE1MT3B0aW9uc0NvbGxlY3Rpb25DdXN0b20u
Y3BwCkBAIC0xMTksNyArMTE5LDcgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4SFRNTE9wdGlv
bnNDb2xsZWN0aW9uOjppbmRleGVkUHJvcGVydHlHZXR0ZXIodWludDMyX3QgaW4KIAogICAgIFJl
ZlB0cjxOb2RlPiByZXN1bHQgPSBjb2xsZWN0aW9uLT5pdGVtKGluZGV4KTsKICAgICBpZiAoIXJl
c3VsdCkKLSAgICAgICAgcmV0dXJuIHY4OjpIYW5kbGU8djg6OlZhbHVlPigpOworICAgICAgICBy
ZXR1cm4gdjhVbmRlZmluZWQoKTsKIAogICAgIHJldHVybiB0b1Y4KHJlc3VsdC5yZWxlYXNlKCks
IGluZm8uR2V0SXNvbGF0ZSgpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3Y4L2N1c3RvbS9WOEhUTUxQbHVnSW5FbGVtZW50Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxQbHVnSW5FbGVtZW50Q3VzdG9tLmNwcAppbmRl
eCA0YjE0ZjIwN2UwN2FiMmQ3MThhYTk4NjdmNTQ4NWQ1MTg3MWIyNjU5Li40MDY2MzI1NzRkZTE4
MTE1OWQ1Njk5ZWQwZDRlNjg3ZWJiMzljZWViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy92OC9jdXN0b20vVjhIVE1MUGx1Z0luRWxlbWVudEN1c3RvbS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTFBsdWdJbkVsZW1lbnRDdXN0b20u
Y3BwCkBAIC01MCwxMSArNTAsMTEgQEAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBucE9i
amVjdE5hbWVkR2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCBjb24KICAgICBIVE1M
UGx1Z0luRWxlbWVudCogaW1wID0gQzo6dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSk7CiAgICAgU2Ny
aXB0SW5zdGFuY2Ugc2NyaXB0SW5zdGFuY2UgPSBpbXAtPmdldEluc3RhbmNlKCk7CiAgICAgaWYg
KCFzY3JpcHRJbnN0YW5jZSkKLSAgICAgICAgcmV0dXJuIHY4OjpIYW5kbGU8djg6OlZhbHVlPigp
OworICAgICAgICByZXR1cm4gdjhVbmRlZmluZWQoKTsKIAogICAgIHY4OjpMb2NhbDx2ODo6T2Jq
ZWN0PiBpbnN0YW5jZSA9IHY4OjpMb2NhbDx2ODo6T2JqZWN0Pjo6TmV3KHNjcmlwdEluc3RhbmNl
LT5pbnN0YW5jZSgpKTsKICAgICBpZiAoaW5zdGFuY2UuSXNFbXB0eSgpKQotICAgICAgICByZXR1
cm4gdjg6OkhhbmRsZTx2ODo6VmFsdWU+KCk7CisgICAgICAgIHJldHVybiB2OFVuZGVmaW5lZCgp
OwogCiAgICAgcmV0dXJuIG5wT2JqZWN0R2V0TmFtZWRQcm9wZXJ0eShpbnN0YW5jZSwgbmFtZSwg
aW5mbyk7CiB9CkBAIC02NSwxMSArNjUsMTEgQEAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVl
PiBucE9iamVjdE5hbWVkU2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCB2ODoKICAg
ICBIVE1MUGx1Z0luRWxlbWVudCogaW1wID0gQzo6dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSk7CiAg
ICAgU2NyaXB0SW5zdGFuY2Ugc2NyaXB0SW5zdGFuY2UgPSBpbXAtPmdldEluc3RhbmNlKCk7CiAg
ICAgaWYgKCFzY3JpcHRJbnN0YW5jZSkKLSAgICAgICAgcmV0dXJuIHY4OjpIYW5kbGU8djg6OlZh
bHVlPigpOworICAgICAgICByZXR1cm4gdjhVbmRlZmluZWQoKTsKIAogICAgIHY4OjpMb2NhbDx2
ODo6T2JqZWN0PiBpbnN0YW5jZSA9IHY4OjpMb2NhbDx2ODo6T2JqZWN0Pjo6TmV3KHNjcmlwdElu
c3RhbmNlLT5pbnN0YW5jZSgpKTsKICAgICBpZiAoaW5zdGFuY2UuSXNFbXB0eSgpKQotICAgICAg
ICByZXR1cm4gdjg6OkhhbmRsZTx2ODo6VmFsdWU+KCk7CisgICAgICAgIHJldHVybiB2OFVuZGVm
aW5lZCgpOwogCiAgICAgcmV0dXJuIG5wT2JqZWN0U2V0TmFtZWRQcm9wZXJ0eShpbnN0YW5jZSwg
bmFtZSwgdmFsdWUsIGluZm8pOwogfQpAQCAtMTM1LDExICsxMzUsMTEgQEAgdjg6OkhhbmRsZTx2
ODo6VmFsdWU+IG5wT2JqZWN0SW5kZXhlZEdldHRlcih1aW50MzJfdCBpbmRleCwgY29uc3Qgdjg6
OkFjY2Vzc29ySW4KICAgICBIVE1MUGx1Z0luRWxlbWVudCogaW1wID0gQzo6dG9OYXRpdmUoaW5m
by5Ib2xkZXIoKSk7CiAgICAgU2NyaXB0SW5zdGFuY2Ugc2NyaXB0SW5zdGFuY2UgPSBpbXAtPmdl
dEluc3RhbmNlKCk7CiAgICAgaWYgKCFzY3JpcHRJbnN0YW5jZSkKLSAgICAgICAgcmV0dXJuIHY4
OjpIYW5kbGU8djg6OlZhbHVlPigpOworICAgICAgICByZXR1cm4gdjhVbmRlZmluZWQoKTsKIAog
ICAgIHY4OjpMb2NhbDx2ODo6T2JqZWN0PiBpbnN0YW5jZSA9IHY4OjpMb2NhbDx2ODo6T2JqZWN0
Pjo6TmV3KHNjcmlwdEluc3RhbmNlLT5pbnN0YW5jZSgpKTsKICAgICBpZiAoaW5zdGFuY2UuSXNF
bXB0eSgpKQotICAgICAgICByZXR1cm4gdjg6OkhhbmRsZTx2ODo6VmFsdWU+KCk7CisgICAgICAg
IHJldHVybiB2OFVuZGVmaW5lZCgpOwogCiAgICAgcmV0dXJuIG5wT2JqZWN0R2V0SW5kZXhlZFBy
b3BlcnR5KGluc3RhbmNlLCBpbmRleCwgaW5mbyk7CiB9CkBAIC0xNTEsMTEgKzE1MSwxMSBAQCB2
ODo6SGFuZGxlPHY4OjpWYWx1ZT4gbnBPYmplY3RJbmRleGVkU2V0dGVyKHVpbnQzMl90IGluZGV4
LCB2ODo6TG9jYWw8djg6OlZhbHVlPgogICAgIEhUTUxQbHVnSW5FbGVtZW50KiBpbXAgPSBDOjp0
b05hdGl2ZShpbmZvLkhvbGRlcigpKTsKICAgICBTY3JpcHRJbnN0YW5jZSBzY3JpcHRJbnN0YW5j
ZSA9IGltcC0+Z2V0SW5zdGFuY2UoKTsKICAgICBpZiAoIXNjcmlwdEluc3RhbmNlKQotICAgICAg
ICByZXR1cm4gdjg6OkhhbmRsZTx2ODo6VmFsdWU+KCk7CisgICAgICAgIHJldHVybiB2OFVuZGVm
aW5lZCgpOwogCiAgICAgdjg6OkxvY2FsPHY4OjpPYmplY3Q+IGluc3RhbmNlID0gdjg6OkxvY2Fs
PHY4OjpPYmplY3Q+OjpOZXcoc2NyaXB0SW5zdGFuY2UtPmluc3RhbmNlKCkpOwogICAgIGlmIChp
bnN0YW5jZS5Jc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4o
KTsKKyAgICAgICAgcmV0dXJuIHY4VW5kZWZpbmVkKCk7CiAKICAgICByZXR1cm4gbnBPYmplY3RT
ZXRJbmRleGVkUHJvcGVydHkoaW5zdGFuY2UsIGluZGV4LCB2YWx1ZSwgaW5mbyk7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhIVE1MU2VsZWN0RWxl
bWVudEN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhIVE1M
U2VsZWN0RWxlbWVudEN1c3RvbS5jcHAKaW5kZXggMDE1YmUzYTBjNjIyMWIxNDY1ODY4MzQ1MDg3
NzJhMzAyOTU1YTAzMS4uNzE0NzNjNTZjZGU4Yjg5NjNhYWEzOGQzN2QwYzU5OTNkZGJmMjk3ZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTFNlbGVj
dEVsZW1lbnRDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3Rv
bS9WOEhUTUxTZWxlY3RFbGVtZW50Q3VzdG9tLmNwcApAQCAtNTEsNyArNTEsNyBAQCB2ODo6SGFu
ZGxlPHY4OjpWYWx1ZT4gVjhIVE1MU2VsZWN0RWxlbWVudDo6aW5kZXhlZFByb3BlcnR5R2V0dGVy
KHVpbnQzMl90IGluZGV4LAogICAgIEFTU0VSVChWOERPTVdyYXBwZXI6Om1heWJlRE9NV3JhcHBl
cihpbmZvLkhvbGRlcigpKSk7CiAgICAgUmVmUHRyPE5vZGU+IHJlc3VsdCA9IFY4SFRNTFNlbGVj
dEVsZW1lbnQ6OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkpLT5pdGVtKGluZGV4KTsKICAgICBpZiAo
IXJlc3VsdCkKLSAgICAgICAgcmV0dXJuIHY4OjpIYW5kbGU8djg6OlZhbHVlPigpOworICAgICAg
ICByZXR1cm4gdjhVbmRlZmluZWQoKTsKIAogICAgIHJldHVybiB0b1Y4KHJlc3VsdC5yZWxlYXNl
KCksIGluZm8uR2V0SXNvbGF0ZSgpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3Y4L2N1c3RvbS9WOExvY2F0aW9uQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3Y4L2N1c3RvbS9WOExvY2F0aW9uQ3VzdG9tLmNwcAppbmRleCA3MmRjY2M3NjdjNWU3
OTc4OWMwZTk2YmUzNDJiMGQ1NDA0MGE5MzdjLi45ZGQ2YzBhYTJmNTkxMDNlMjc2NDdkZGZjMDA4
ZjcyYTI5ZTQ4YjM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0
b20vVjhMb2NhdGlvbkN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvdjgv
Y3VzdG9tL1Y4TG9jYXRpb25DdXN0b20uY3BwCkBAIC0xNDgsNyArMTQ4LDcgQEAgdm9pZCBWOExv
Y2F0aW9uOjpzZWFyY2hBY2Nlc3NvclNldHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwg
djg6OkxvY2FsPHY4OjoKIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOExvY2F0aW9uOjpyZWxvYWRB
Y2Nlc3NvckdldHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vz
c29ySW5mbyYgaW5mbykKIHsKICAgICBJTkNfU1RBVFMoIkRPTS5Mb2NhdGlvbi5yZWxvYWQuX2dl
dCIpOwotICAgIHN0YXRpYyB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gcHJp
dmF0ZVRlbXBsYXRlID0gdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+OjpOZXco
djg6OkZ1bmN0aW9uVGVtcGxhdGU6Ok5ldyhWOExvY2F0aW9uOjpyZWxvYWRDYWxsYmFjaywgdjg6
OkhhbmRsZTx2ODo6VmFsdWU+KCksIHY4OjpTaWduYXR1cmU6Ok5ldyhWOExvY2F0aW9uOjpHZXRS
YXdUZW1wbGF0ZSgpKSkpOworICAgIHN0YXRpYyB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25U
ZW1wbGF0ZT4gcHJpdmF0ZVRlbXBsYXRlID0gdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVt
cGxhdGU+OjpOZXcodjg6OkZ1bmN0aW9uVGVtcGxhdGU6Ok5ldyhWOExvY2F0aW9uOjpyZWxvYWRD
YWxsYmFjaywgdjhVbmRlZmluZWQoKSwgdjg6OlNpZ25hdHVyZTo6TmV3KFY4TG9jYXRpb246Okdl
dFJhd1RlbXBsYXRlKCkpKSk7CiAgICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBob2xkZXIgPSBW
OERPTVdyYXBwZXI6Omxvb2t1cERPTVdyYXBwZXIoVjhMb2NhdGlvbjo6R2V0VGVtcGxhdGUoKSwg
aW5mby5UaGlzKCkpOwogICAgIGlmIChob2xkZXIuSXNFbXB0eSgpKSB7CiAgICAgICAgIC8vIGNh
biBvbmx5IHJlYWNoIGhlcmUgYnkgJ29iamVjdC5fX3Byb3RvX18uZnVuYycsIGFuZCBpdCBzaG91
bGQgcGFzc2VkCkBAIC0xNTcsNyArMTU3LDcgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4TG9j
YXRpb246OnJlbG9hZEFjY2Vzc29yR2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW0KICAg
ICB9CiAgICAgTG9jYXRpb24qIGltcCA9IFY4TG9jYXRpb246OnRvTmF0aXZlKGhvbGRlcik7CiAg
ICAgaWYgKCFCaW5kaW5nU2VjdXJpdHk6OmNhbkFjY2Vzc0ZyYW1lKEJpbmRpbmdTdGF0ZTo6aW5z
dGFuY2UoKSwgaW1wLT5mcmFtZSgpLCBmYWxzZSkpIHsKLSAgICAgICAgc3RhdGljIHY4OjpQZXJz
aXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBzaGFyZWRUZW1wbGF0ZSA9IHY4OjpQZXJzaXN0
ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPjo6TmV3KHY4OjpGdW5jdGlvblRlbXBsYXRlOjpOZXco
VjhMb2NhdGlvbjo6cmVsb2FkQ2FsbGJhY2ssIHY4OjpIYW5kbGU8djg6OlZhbHVlPigpLCB2ODo6
U2lnbmF0dXJlOjpOZXcoVjhMb2NhdGlvbjo6R2V0UmF3VGVtcGxhdGUoKSkpKTsKKyAgICAgICAg
c3RhdGljIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBzaGFyZWRUZW1wbGF0
ZSA9IHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPjo6TmV3KHY4OjpGdW5jdGlv
blRlbXBsYXRlOjpOZXcoVjhMb2NhdGlvbjo6cmVsb2FkQ2FsbGJhY2ssIHY4VW5kZWZpbmVkKCks
IHY4OjpTaWduYXR1cmU6Ok5ldyhWOExvY2F0aW9uOjpHZXRSYXdUZW1wbGF0ZSgpKSkpOwogICAg
ICAgICByZXR1cm4gc2hhcmVkVGVtcGxhdGUtPkdldEZ1bmN0aW9uKCk7CiAgICAgfQogICAgIHJl
dHVybiBwcml2YXRlVGVtcGxhdGUtPkdldEZ1bmN0aW9uKCk7CkBAIC0xNjYsNyArMTY2LDcgQEAg
djg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4TG9jYXRpb246OnJlbG9hZEFjY2Vzc29yR2V0dGVyKHY4
OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW0KIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOExvY2F0aW9u
OjpyZXBsYWNlQWNjZXNzb3JHZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIGNvbnN0
IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCiB7CiAgICAgSU5DX1NUQVRTKCJET00uTG9jYXRpb24u
cmVwbGFjZS5fZ2V0Iik7Ci0gICAgc3RhdGljIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRl
bXBsYXRlPiBwcml2YXRlVGVtcGxhdGUgPSB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1w
bGF0ZT46Ok5ldyh2ODo6RnVuY3Rpb25UZW1wbGF0ZTo6TmV3KFY4TG9jYXRpb246OnJlcGxhY2VD
YWxsYmFjaywgdjg6OkhhbmRsZTx2ODo6VmFsdWU+KCksIHY4OjpTaWduYXR1cmU6Ok5ldyhWOExv
Y2F0aW9uOjpHZXRSYXdUZW1wbGF0ZSgpKSkpOworICAgIHN0YXRpYyB2ODo6UGVyc2lzdGVudDx2
ODo6RnVuY3Rpb25UZW1wbGF0ZT4gcHJpdmF0ZVRlbXBsYXRlID0gdjg6OlBlcnNpc3RlbnQ8djg6
OkZ1bmN0aW9uVGVtcGxhdGU+OjpOZXcodjg6OkZ1bmN0aW9uVGVtcGxhdGU6Ok5ldyhWOExvY2F0
aW9uOjpyZXBsYWNlQ2FsbGJhY2ssIHY4VW5kZWZpbmVkKCksIHY4OjpTaWduYXR1cmU6Ok5ldyhW
OExvY2F0aW9uOjpHZXRSYXdUZW1wbGF0ZSgpKSkpOwogICAgIHY4OjpIYW5kbGU8djg6Ok9iamVj
dD4gaG9sZGVyID0gVjhET01XcmFwcGVyOjpsb29rdXBET01XcmFwcGVyKFY4TG9jYXRpb246Okdl
dFRlbXBsYXRlKCksIGluZm8uVGhpcygpKTsKICAgICBpZiAoaG9sZGVyLklzRW1wdHkoKSkgewog
ICAgICAgICAvLyBjYW4gb25seSByZWFjaCBoZXJlIGJ5ICdvYmplY3QuX19wcm90b19fLmZ1bmMn
LCBhbmQgaXQgc2hvdWxkIHBhc3NlZApAQCAtMTc1LDcgKzE3NSw3IEBAIHY4OjpIYW5kbGU8djg6
OlZhbHVlPiBWOExvY2F0aW9uOjpyZXBsYWNlQWNjZXNzb3JHZXR0ZXIodjg6OkxvY2FsPHY4OjpT
dHJpbmc+IG5hCiAgICAgfQogICAgIExvY2F0aW9uKiBpbXAgPSBWOExvY2F0aW9uOjp0b05hdGl2
ZShob2xkZXIpOwogICAgIGlmICghQmluZGluZ1NlY3VyaXR5OjpjYW5BY2Nlc3NGcmFtZShCaW5k
aW5nU3RhdGU6Omluc3RhbmNlKCksIGltcC0+ZnJhbWUoKSwgZmFsc2UpKSB7Ci0gICAgICAgIHN0
YXRpYyB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gc2hhcmVkVGVtcGxhdGUg
PSB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT46Ok5ldyh2ODo6RnVuY3Rpb25U
ZW1wbGF0ZTo6TmV3KFY4TG9jYXRpb246OnJlcGxhY2VDYWxsYmFjaywgdjg6OkhhbmRsZTx2ODo6
VmFsdWU+KCksIHY4OjpTaWduYXR1cmU6Ok5ldyhWOExvY2F0aW9uOjpHZXRSYXdUZW1wbGF0ZSgp
KSkpOworICAgICAgICBzdGF0aWMgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+
IHNoYXJlZFRlbXBsYXRlID0gdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+OjpO
ZXcodjg6OkZ1bmN0aW9uVGVtcGxhdGU6Ok5ldyhWOExvY2F0aW9uOjpyZXBsYWNlQ2FsbGJhY2ss
IHY4VW5kZWZpbmVkKCksIHY4OjpTaWduYXR1cmU6Ok5ldyhWOExvY2F0aW9uOjpHZXRSYXdUZW1w
bGF0ZSgpKSkpOwogICAgICAgICByZXR1cm4gc2hhcmVkVGVtcGxhdGUtPkdldEZ1bmN0aW9uKCk7
CiAgICAgfQogICAgIHJldHVybiBwcml2YXRlVGVtcGxhdGUtPkdldEZ1bmN0aW9uKCk7CkBAIC0x
ODUsNyArMTg1LDcgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4TG9jYXRpb246OmFzc2lnbkFj
Y2Vzc29yR2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW0KIHsKICAgICBJTkNfU1RBVFMo
IkRPTS5Mb2NhdGlvbi5hc3NpZ24uX2dldCIpOwogICAgIHN0YXRpYyB2ODo6UGVyc2lzdGVudDx2
ODo6RnVuY3Rpb25UZW1wbGF0ZT4gcHJpdmF0ZVRlbXBsYXRlID0KLSAgICAgICAgdjg6OlBlcnNp
c3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+OjpOZXcodjg6OkZ1bmN0aW9uVGVtcGxhdGU6Ok5l
dyhWOExvY2F0aW9uOjphc3NpZ25DYWxsYmFjaywgdjg6OkhhbmRsZTx2ODo6VmFsdWU+KCksIHY4
OjpTaWduYXR1cmU6Ok5ldyhWOExvY2F0aW9uOjpHZXRSYXdUZW1wbGF0ZSgpKSkpOworICAgICAg
ICB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT46Ok5ldyh2ODo6RnVuY3Rpb25U
ZW1wbGF0ZTo6TmV3KFY4TG9jYXRpb246OmFzc2lnbkNhbGxiYWNrLCB2OFVuZGVmaW5lZCgpLCB2
ODo6U2lnbmF0dXJlOjpOZXcoVjhMb2NhdGlvbjo6R2V0UmF3VGVtcGxhdGUoKSkpKTsKICAgICB2
ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGhvbGRlciA9IFY4RE9NV3JhcHBlcjo6bG9va3VwRE9NV3Jh
cHBlcihWOExvY2F0aW9uOjpHZXRUZW1wbGF0ZSgpLCBpbmZvLlRoaXMoKSk7CiAgICAgaWYgKGhv
bGRlci5Jc0VtcHR5KCkpIHsKICAgICAgICAgLy8gY2FuIG9ubHkgcmVhY2ggaGVyZSBieSAnb2Jq
ZWN0Ll9fcHJvdG9fXy5mdW5jJywgYW5kIGl0IHNob3VsZCBwYXNzZWQKQEAgLTE5NCw3ICsxOTQs
NyBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhMb2NhdGlvbjo6YXNzaWduQWNjZXNzb3JHZXR0
ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbQogICAgIH0KICAgICBMb2NhdGlvbiogaW1wID0g
VjhMb2NhdGlvbjo6dG9OYXRpdmUoaG9sZGVyKTsKICAgICBpZiAoIUJpbmRpbmdTZWN1cml0eTo6
Y2FuQWNjZXNzRnJhbWUoQmluZGluZ1N0YXRlOjppbnN0YW5jZSgpLCBpbXAtPmZyYW1lKCksIGZh
bHNlKSkgewotICAgICAgICBzdGF0aWMgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxh
dGU+IHNoYXJlZFRlbXBsYXRlID0gdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+
OjpOZXcodjg6OkZ1bmN0aW9uVGVtcGxhdGU6Ok5ldyhWOExvY2F0aW9uOjphc3NpZ25DYWxsYmFj
aywgdjg6OkhhbmRsZTx2ODo6VmFsdWU+KCksIHY4OjpTaWduYXR1cmU6Ok5ldyhWOExvY2F0aW9u
OjpHZXRSYXdUZW1wbGF0ZSgpKSkpOworICAgICAgICBzdGF0aWMgdjg6OlBlcnNpc3RlbnQ8djg6
OkZ1bmN0aW9uVGVtcGxhdGU+IHNoYXJlZFRlbXBsYXRlID0gdjg6OlBlcnNpc3RlbnQ8djg6OkZ1
bmN0aW9uVGVtcGxhdGU+OjpOZXcodjg6OkZ1bmN0aW9uVGVtcGxhdGU6Ok5ldyhWOExvY2F0aW9u
Ojphc3NpZ25DYWxsYmFjaywgdjhVbmRlZmluZWQoKSwgdjg6OlNpZ25hdHVyZTo6TmV3KFY4TG9j
YXRpb246OkdldFJhd1RlbXBsYXRlKCkpKSk7CiAgICAgICAgIHJldHVybiBzaGFyZWRUZW1wbGF0
ZS0+R2V0RnVuY3Rpb24oKTsKICAgICB9CiAgICAgcmV0dXJuIHByaXZhdGVUZW1wbGF0ZS0+R2V0
RnVuY3Rpb24oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3Rv
bS9WOE5hbWVkTm9kZU1hcEN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9j
dXN0b20vVjhOYW1lZE5vZGVNYXBDdXN0b20uY3BwCmluZGV4IDcxNTA5MmZhZWM0OWRiOTE1NTVk
NTFjZmViY2ZmN2E0YTViMTY5NmQuLjZiZDJhMDViMTlhZTkyOGI4Yzg0M2JmMDc5YWY2NmQxNjli
OTIxMzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOE5h
bWVkTm9kZU1hcEN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3Vz
dG9tL1Y4TmFtZWROb2RlTWFwQ3VzdG9tLmNwcApAQCAtNDksNyArNDksNyBAQCB2ODo6SGFuZGxl
PHY4OjpWYWx1ZT4gVjhOYW1lZE5vZGVNYXA6OmluZGV4ZWRQcm9wZXJ0eUdldHRlcih1aW50MzJf
dCBpbmRleCwgY29ucwogICAgIE5hbWVkTm9kZU1hcCogaW1wID0gVjhOYW1lZE5vZGVNYXA6OnRv
TmF0aXZlKGluZm8uSG9sZGVyKCkpOwogICAgIFJlZlB0cjxOb2RlPiByZXN1bHQgPSBpbXAtPml0
ZW0oaW5kZXgpOwogICAgIGlmICghcmVzdWx0KQotICAgICAgICByZXR1cm4gdjg6OkhhbmRsZTx2
ODo6VmFsdWU+KCk7CisgICAgICAgIHJldHVybiB2OFVuZGVmaW5lZCgpOwogCiAgICAgcmV0dXJu
IHRvVjgocmVzdWx0LnJlbGVhc2UoKSwgaW5mby5HZXRJc29sYXRlKCkpOwogfQpAQCAtNTksMTQg
KzU5LDE0IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOE5hbWVkTm9kZU1hcDo6bmFtZWRQcm9w
ZXJ0eUdldHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4KICAgICBJTkNfU1RBVFMoIkRPTS5OYW1l
ZE5vZGVNYXAuTmFtZWRQcm9wZXJ0eUdldHRlciIpOwogCiAgICAgaWYgKCFpbmZvLkhvbGRlcigp
LT5HZXRSZWFsTmFtZWRQcm9wZXJ0eUluUHJvdG90eXBlQ2hhaW4obmFtZSkuSXNFbXB0eSgpKQot
ICAgICAgICByZXR1cm4gdjg6OkhhbmRsZTx2ODo6VmFsdWU+KCk7CisgICAgICAgIHJldHVybiB2
OFVuZGVmaW5lZCgpOwogICAgIGlmIChpbmZvLkhvbGRlcigpLT5IYXNSZWFsTmFtZWRDYWxsYmFj
a1Byb3BlcnR5KG5hbWUpKQotICAgICAgICByZXR1cm4gdjg6OkhhbmRsZTx2ODo6VmFsdWU+KCk7
CisgICAgICAgIHJldHVybiB2OFVuZGVmaW5lZCgpOwogCiAgICAgTmFtZWROb2RlTWFwKiBpbXAg
PSBWOE5hbWVkTm9kZU1hcDo6dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSk7CiAgICAgUmVmUHRyPE5v
ZGU+IHJlc3VsdCA9IGltcC0+Z2V0TmFtZWRJdGVtKHRvV2ViQ29yZVN0cmluZyhuYW1lKSk7CiAg
ICAgaWYgKCFyZXN1bHQpCi0gICAgICAgIHJldHVybiB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4oKTsK
KyAgICAgICAgcmV0dXJuIHY4VW5kZWZpbmVkKCk7CiAKICAgICByZXR1cm4gdG9WOChyZXN1bHQu
cmVsZWFzZSgpLCBpbmZvLkdldElzb2xhdGUoKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhOb2RlTGlzdEN1c3RvbS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhOb2RlTGlzdEN1c3RvbS5jcHAKaW5kZXggOWUxYmU5
YWRlYWM5MTcwM2RiMGI1ODYxNGE0Y2ZhMzFmYmJlZjUzNi4uNjgxZmU0OWQxZWIxZTg1ODQ4NjU5
NmU1OWM4ZDM2NzAxZTM2YmNkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
djgvY3VzdG9tL1Y4Tm9kZUxpc3RDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3Y4L2N1c3RvbS9WOE5vZGVMaXN0Q3VzdG9tLmNwcApAQCAtNTUsNyArNTUsNyBAQCB2ODo6
SGFuZGxlPHY4OjpWYWx1ZT4gVjhOb2RlTGlzdDo6bmFtZWRQcm9wZXJ0eUdldHRlcih2ODo6TG9j
YWw8djg6OlN0cmluZz4gbmFtZQogCiAgICAgUmVmUHRyPE5vZGU+IHJlc3VsdCA9IGxpc3QtPml0
ZW1XaXRoTmFtZShrZXkpOwogICAgIGlmICghcmVzdWx0KQotICAgICAgICByZXR1cm4gdjg6Okhh
bmRsZTx2ODo6VmFsdWU+KCk7CisgICAgICAgIHJldHVybiB2OFVuZGVmaW5lZCgpOwogCiAgICAg
cmV0dXJuIHRvVjgocmVzdWx0LnJlbGVhc2UoKSwgaW5mby5HZXRJc29sYXRlKCkpOwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4U1ZHTGVuZ3RoQ3Vz
dG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFNWR0xlbmd0aEN1
c3RvbS5jcHAKaW5kZXggMjkyYmMwZGRjZjgzYmJiNjY3ZjgyNzg4Y2YyMzFlODU5OTVlODZhNC4u
YjE1MDQ4MjU1YmI1OTE5YTc4YWEyZDA3YzJiNWY1ODI2Y2M0ZDYwZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4U1ZHTGVuZ3RoQ3VzdG9tLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhTVkdMZW5ndGhDdXN0b20uY3Bw
CkBAIC05Nyw3ICs5Nyw3IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOFNWR0xlbmd0aDo6Y29u
dmVydFRvU3BlY2lmaWVkVW5pdHNDYWxsYmFjayhjb25zdCB2ODo6QXJnCiAgICAgICAgIHJldHVy
biBWOFByb3h5OjpzZXRET01FeGNlcHRpb24oZWMsIGFyZ3MuR2V0SXNvbGF0ZSgpKTsKIAogICAg
IHdyYXBwZXItPmNvbW1pdENoYW5nZSgpOwotICAgIHJldHVybiB2ODo6SGFuZGxlPHY4OjpWYWx1
ZT4oKTsKKyAgICByZXR1cm4gdjhVbmRlZmluZWQoKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4U3Rv
cmFnZUN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhTdG9y
YWdlQ3VzdG9tLmNwcAppbmRleCA4OTM5NmEzMGNmMTllZTc2MjhjMTU2YTZhZDAwZTg2ZjMzMDZk
MjI1Li4yNjU5OTJiN2VhNjVjZTRjZDlmNzA1OGRhNDZlOTA5OTgwN2E3ZjlhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhTdG9yYWdlQ3VzdG9tLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhTdG9yYWdlQ3VzdG9tLmNw
cApAQCAtNjEsNyArNjEsNyBAQCBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHN0b3JhZ2VH
ZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IHY4TmFtZSwgY29uc3QgdgogICAgIGlmIChuYW1l
ICE9ICJsZW5ndGgiICYmIHN0b3JhZ2UtPmNvbnRhaW5zKG5hbWUpKQogICAgICAgICByZXR1cm4g
djhTdHJpbmcoc3RvcmFnZS0+Z2V0SXRlbShuYW1lKSwgaW5mby5HZXRJc29sYXRlKCkpOwogCi0g
ICAgcmV0dXJuIHY4OjpIYW5kbGU8djg6OlZhbHVlPigpOworICAgIHJldHVybiB2OFVuZGVmaW5l
ZCgpOwogfQogCiB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhTdG9yYWdlOjppbmRleGVkUHJvcGVy
dHlHZXR0ZXIodWludDMyX3QgaW5kZXgsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCkBA
IC03NSw3ICs3NSw3IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOFN0b3JhZ2U6Om5hbWVkUHJv
cGVydHlHZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsCiB7CiAgICAgSU5DX1NUQVRT
KCJET00uU3RvcmFnZS5OYW1lZFByb3BlcnR5R2V0dGVyIik7CiAgICAgaWYgKCFpbmZvLkhvbGRl
cigpLT5HZXRSZWFsTmFtZWRQcm9wZXJ0eUluUHJvdG90eXBlQ2hhaW4obmFtZSkuSXNFbXB0eSgp
KQotICAgICAgICByZXR1cm4gdjg6OkhhbmRsZTx2ODo6VmFsdWU+KCk7CisgICAgICAgIHJldHVy
biB2OFVuZGVmaW5lZCgpOwogICAgIHJldHVybiBzdG9yYWdlR2V0dGVyKG5hbWUsIGluZm8pOwog
fQogCkBAIC0xMDMsNyArMTAzLDcgQEAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBzdG9y
YWdlU2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiB2OE5hbWUsIHY4OjpMb2MKICAgICAgICAg
cmV0dXJuIHY4VmFsdWU7CiAKICAgICBpZiAoIWluZm8uSG9sZGVyKCktPkdldFJlYWxOYW1lZFBy
b3BlcnR5SW5Qcm90b3R5cGVDaGFpbih2OE5hbWUpLklzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJu
IHY4OjpIYW5kbGU8djg6OlZhbHVlPigpOworICAgICAgICByZXR1cm4gdjhVbmRlZmluZWQoKTsK
IAogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwogICAgIHN0b3JhZ2UtPnNldEl0ZW0obmFtZSwg
dmFsdWUsIGVjKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3Rv
bS9WOFN0eWxlU2hlZXRMaXN0Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4
L2N1c3RvbS9WOFN0eWxlU2hlZXRMaXN0Q3VzdG9tLmNwcAppbmRleCA4Nzk0NDkwNDNkZGI1NjA3
NTBhOTk1NWQ1MjI0NDQ1OGM4N2M5N2JhLi5jNGU4MmJiMDg3ODYyNzFjZDM0MzNkMDU2MTEyN2My
YmIzODM4NjcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20v
VjhTdHlsZVNoZWV0TGlzdEN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
djgvY3VzdG9tL1Y4U3R5bGVTaGVldExpc3RDdXN0b20uY3BwCkBAIC00NCwxMyArNDQsMTMgQEAg
djg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4U3R5bGVTaGVldExpc3Q6Om5hbWVkUHJvcGVydHlHZXR0
ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmcKICAgICBJTkNfU1RBVFMoIkRPTS5TdHlsZVNoZWV0TGlz
dC5OYW1lZFByb3BlcnR5R2V0dGVyIik7CiAKICAgICBpZiAoaW5mby5Ib2xkZXIoKS0+SGFzUmVh
bE5hbWVkUHJvcGVydHkobmFtZSkpCi0gICAgICAgIHJldHVybiB2ODo6SGFuZGxlPHY4OjpWYWx1
ZT4oKTsKKyAgICAgICAgcmV0dXJuIHY4VW5kZWZpbmVkKCk7CiAKICAgICAvLyBTZWFyY2ggc3R5
bGUgc2hlZXQuCiAgICAgU3R5bGVTaGVldExpc3QqIGltcCA9IFY4U3R5bGVTaGVldExpc3Q6OnRv
TmF0aXZlKGluZm8uSG9sZGVyKCkpOwogICAgIEhUTUxTdHlsZUVsZW1lbnQqIGl0ZW0gPSBpbXAt
PmdldE5hbWVkSXRlbSh0b1dlYkNvcmVTdHJpbmcobmFtZSkpOwogICAgIGlmICghaXRlbSkKLSAg
ICAgICAgcmV0dXJuIHY4OjpIYW5kbGU8djg6OlZhbHVlPigpOworICAgICAgICByZXR1cm4gdjhV
bmRlZmluZWQoKTsKIAogICAgIHJldHVybiB0b1Y4KGl0ZW0tPnNoZWV0KCksIGluZm8uR2V0SXNv
bGF0ZSgpKTsKIH0K
</data>
<flag name="commit-queue"
          id="166834"
          type_id="3"
          status="-"
          setter="webkit.review.bot"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>157055</attachid>
            <date>2012-08-07 17:35:48 -0700</date>
            <delta_ts>2012-08-07 17:37:17 -0700</delta_ts>
            <desc>patch for landing</desc>
            <filename>bug-93211-20120808093522.patch</filename>
            <type>text/plain</type>
            <size>46859</size>
            <attacher name="Kentaro Hara">haraken</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI0OTQ2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTNmZGFmNzc0YzVmMmRm
ZjdkOTUwZTA3OTc2MTA3ZWRmZWE4MGU0Yy4uMGNmNmQxYTE3MjFmZjQ0MjRiZWMwZjY3NzA1Y2Jm
NzJlYWQzODMyMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEwMSBAQAorMjAxMi0wOC0wNSAgS2Vu
dGFybyBIYXJhICA8aGFyYWtlbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW1Y4XSBSZXBsYWNl
IHY4OjpIYW5kbGU8djg6OlZhbHVlPigpIGluIGJpbmRpbmdzL3Y4Lyogd2l0aCB2OFVuZGVmaW5l
ZCgpCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05MzIx
MQorCisgICAgICAgIFJldmlld2VkIGJ5IEVyaWMgU2VpZGVsLgorCisgICAgICAgIFdlIHNob3Vs
ZCB1c2UgdjhVbmRlZmluZWQoKSBldmVyeXdoZXJlIGluIFY4IGJpbmRpbmdzLgorICAgICAgICBS
ZXBsYWNpbmcgdjg6OkxvY2FsPHY4OjpWYWx1ZT4oKSBldGMgd2l0aCB2OFVuZGVmaW5lZCgpIGNh
biBjYXVzZSBidWlsZAorICAgICAgICBlcnJvcnMgZHVlIHRvIHR5cGUgY29udmVyc2lvbiBtaXNt
YXRjaC4gSSdsbCBkbyB0aGUgcmVwbGFjZW1lbnQgaW4gZm9sbG93LXVwCisgICAgICAgIHBhdGNo
ZXMuCisKKyAgICAgICAgTm8gdGVzdHMuIE5vIGNoYW5nZSBpbiBiZWhhdmlvci4KKworICAgICAg
ICAqIGJpbmRpbmdzL3Y4L0lEQkJpbmRpbmdVdGlsaXRpZXMuY3BwOgorICAgICAgICAoV2ViQ29y
ZSk6CisgICAgICAgICogYmluZGluZ3MvdjgvU2NyaXB0RGVidWdTZXJ2ZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6U2NyaXB0RGVidWdTZXJ2ZXI6OnBhdXNlT25FeGNlcHRpb25zU3RhdGUpOgor
ICAgICAgICAoV2ViQ29yZTo6U2NyaXB0RGVidWdTZXJ2ZXI6OmhhbmRsZVY4RGVidWdFdmVudCk6
CisgICAgICAgICogYmluZGluZ3MvdjgvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcDoKKyAgICAg
ICAgKiBiaW5kaW5ncy92OC9WOEJpbmRpbmcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6YmF0Y2hD
b25maWd1cmVDYWxsYmFja3MpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1Y4Q29sbGVjdGlvbi5o
OgorICAgICAgICAoV2ViQ29yZTo6Z2V0VjhPYmplY3QpOgorICAgICAgICAoV2ViQ29yZTo6Y29s
bGVjdGlvbk5hbWVkUHJvcGVydHlHZXR0ZXIpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1Y4RE9N
V3JhcHBlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWOERPTVdyYXBwZXI6OmNvbnZlcnRFdmVu
dFRhcmdldFRvVjhPYmplY3QpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1Y4TlBPYmplY3QuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6bnBPYmplY3RHZXRQcm9wZXJ0eSk6CisgICAgICAgIChXZWJD
b3JlOjpucE9iamVjdFNldFByb3BlcnR5KToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9WOFByb3h5
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlY4UHJveHk6OnNldERPTUV4Y2VwdGlvbik6CisgICAg
ICAgIChXZWJDb3JlOjpWOFByb3h5Ojp0aHJvd0Vycm9yKToKKyAgICAgICAgKiBiaW5kaW5ncy92
OC9Xb3JrZXJTY3JpcHREZWJ1Z1NlcnZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJT
Y3JpcHREZWJ1Z1NlcnZlcjo6YWRkTGlzdGVuZXIpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1
c3RvbS9WOENTU1N0eWxlRGVjbGFyYXRpb25DdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6
VjhDU1NTdHlsZURlY2xhcmF0aW9uOjpuYW1lZFByb3BlcnR5R2V0dGVyKToKKyAgICAgICAgKFdl
YkNvcmU6OlY4Q1NTU3R5bGVEZWNsYXJhdGlvbjo6bmFtZWRQcm9wZXJ0eVNldHRlcik6CisgICAg
ICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4Q29uc29sZUN1c3RvbS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpWOENvbnNvbGU6OnRyYWNlQ2FsbGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6VjhD
b25zb2xlOjphc3NlcnRDYWxsYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpWOENvbnNvbGU6OnBy
b2ZpbGVDYWxsYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpWOENvbnNvbGU6OnByb2ZpbGVFbmRD
YWxsYmFjayk6CisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4RE9NU3RyaW5nTWFwQ3Vz
dG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlY4RE9NU3RyaW5nTWFwOjpuYW1lZFByb3BlcnR5
R2V0dGVyKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhET01XaW5kb3dDdXN0b20u
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6VjhET01XaW5kb3c6OmluZGV4ZWRQcm9wZXJ0eUdldHRl
cik6CisgICAgICAgIChXZWJDb3JlOjpWOERPTVdpbmRvdzo6bmFtZWRQcm9wZXJ0eUdldHRlcik6
CisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4RGF0YVZpZXdDdXN0b20uY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6VjhEYXRhVmlldzo6c2V0SW50OENhbGxiYWNrKToKKyAgICAgICAgKFdl
YkNvcmU6OlY4RGF0YVZpZXc6OnNldFVpbnQ4Q2FsbGJhY2spOgorICAgICAgICAqIGJpbmRpbmdz
L3Y4L2N1c3RvbS9WOERldmljZU1vdGlvbkV2ZW50Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlY4RGV2aWNlTW90aW9uRXZlbnQ6OmluaXREZXZpY2VNb3Rpb25FdmVudENhbGxiYWNrKToK
KyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhEZXZpY2VPcmllbnRhdGlvbkV2ZW50Q3Vz
dG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlY4RGV2aWNlT3JpZW50YXRpb25FdmVudDo6aW5p
dERldmljZU9yaWVudGF0aW9uRXZlbnRDYWxsYmFjayk6CisgICAgICAgICogYmluZGluZ3Mvdjgv
Y3VzdG9tL1Y4RGlyZWN0b3J5RW50cnlDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6VjhE
aXJlY3RvcnlFbnRyeTo6Z2V0RGlyZWN0b3J5Q2FsbGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6
VjhEaXJlY3RvcnlFbnRyeTo6Z2V0RmlsZUNhbGxiYWNrKToKKyAgICAgICAgKiBiaW5kaW5ncy92
OC9jdXN0b20vVjhIVE1MQWxsQ29sbGVjdGlvbkN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpnZXROYW1lZEl0ZW1zKToKKyAgICAgICAgKFdlYkNvcmU6OlY4SFRNTEFsbENvbGxlY3Rpb246
Om5hbWVkUHJvcGVydHlHZXR0ZXIpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOEhU
TUxDb2xsZWN0aW9uQ3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmdldE5hbWVkSXRlbXMp
OgorICAgICAgICAoV2ViQ29yZTo6VjhIVE1MQ29sbGVjdGlvbjo6bmFtZWRQcm9wZXJ0eUdldHRl
cik6CisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTERvY3VtZW50Q3VzdG9tLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlY4SFRNTERvY3VtZW50OjpHZXROYW1lZFByb3BlcnR5KToK
KyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhIVE1MRm9ybUVsZW1lbnRDdXN0b20uY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6VjhIVE1MRm9ybUVsZW1lbnQ6OmluZGV4ZWRQcm9wZXJ0eUdl
dHRlcik6CisgICAgICAgIChXZWJDb3JlOjpWOEhUTUxGb3JtRWxlbWVudDo6bmFtZWRQcm9wZXJ0
eUdldHRlcik6CisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTEZyYW1lU2V0RWxl
bWVudEN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWOEhUTUxGcmFtZVNldEVsZW1lbnQ6
Om5hbWVkUHJvcGVydHlHZXR0ZXIpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOEhU
TUxPcHRpb25zQ29sbGVjdGlvbkN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWOEhUTUxP
cHRpb25zQ29sbGVjdGlvbjo6aW5kZXhlZFByb3BlcnR5R2V0dGVyKToKKyAgICAgICAgKiBiaW5k
aW5ncy92OC9jdXN0b20vVjhIVE1MUGx1Z0luRWxlbWVudEN1c3RvbS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpucE9iamVjdE5hbWVkR2V0dGVyKToKKyAgICAgICAgKFdlYkNvcmU6Om5wT2JqZWN0
TmFtZWRTZXR0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6bnBPYmplY3RJbmRleGVkR2V0dGVyKToK
KyAgICAgICAgKFdlYkNvcmU6Om5wT2JqZWN0SW5kZXhlZFNldHRlcik6CisgICAgICAgICogYmlu
ZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTFNlbGVjdEVsZW1lbnRDdXN0b20uY3BwOgorICAgICAgICAo
V2ViQ29yZTo6VjhIVE1MU2VsZWN0RWxlbWVudDo6aW5kZXhlZFByb3BlcnR5R2V0dGVyKToKKyAg
ICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhMb2NhdGlvbkN1c3RvbS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpWOExvY2F0aW9uOjpyZWxvYWRBY2Nlc3NvckdldHRlcik6CisgICAgICAgIChX
ZWJDb3JlOjpWOExvY2F0aW9uOjpyZXBsYWNlQWNjZXNzb3JHZXR0ZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6VjhMb2NhdGlvbjo6YXNzaWduQWNjZXNzb3JHZXR0ZXIpOgorICAgICAgICAqIGJpbmRp
bmdzL3Y4L2N1c3RvbS9WOE5hbWVkTm9kZU1hcEN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpWOE5hbWVkTm9kZU1hcDo6aW5kZXhlZFByb3BlcnR5R2V0dGVyKToKKyAgICAgICAgKFdlYkNv
cmU6OlY4TmFtZWROb2RlTWFwOjpuYW1lZFByb3BlcnR5R2V0dGVyKToKKyAgICAgICAgKiBiaW5k
aW5ncy92OC9jdXN0b20vVjhOb2RlTGlzdEN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpW
OE5vZGVMaXN0OjpuYW1lZFByb3BlcnR5R2V0dGVyKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9j
dXN0b20vVjhTVkdMZW5ndGhDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6VjhTVkdMZW5n
dGg6OmNvbnZlcnRUb1NwZWNpZmllZFVuaXRzQ2FsbGJhY2spOgorICAgICAgICAqIGJpbmRpbmdz
L3Y4L2N1c3RvbS9WOFN0b3JhZ2VDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6c3RvcmFn
ZUdldHRlcik6CisgICAgICAgIChXZWJDb3JlOjpWOFN0b3JhZ2U6Om5hbWVkUHJvcGVydHlHZXR0
ZXIpOgorICAgICAgICAoV2ViQ29yZTo6c3RvcmFnZVNldHRlcik6CisgICAgICAgICogYmluZGlu
Z3MvdjgvY3VzdG9tL1Y4U3R5bGVTaGVldExpc3RDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6VjhTdHlsZVNoZWV0TGlzdDo6bmFtZWRQcm9wZXJ0eUdldHRlcik6CisKIDIwMTItMDgtMDcg
IFJ5dWFuIENob2kgIDxyeXVhbi5jaG9pQHNhbXN1bmcuY29tPgogCiAgICAgICAgIFtFRkxdIFJl
bW92ZSBQbGF0Zm9ybVRvdWNoRXZlbnRFZmwgYW5kIFBsYXRmb3JtVG91Y2hQb2ludEVmbApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvSURCQmluZGluZ1V0aWxpdGllcy5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9JREJCaW5kaW5nVXRpbGl0aWVzLmNwcApp
bmRleCAyMmY4MzE1YjIwNDZjNjU0NzgxNWI5NDU2MGI0OGQ4ODU4NjNlMWY0Li5jYzFlYWZiMDRm
NmU4OTgyMGUzMzk3ZTJkODI3ZTkzZGM5ZmEyMmZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy92OC9JREJCaW5kaW5nVXRpbGl0aWVzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy92OC9JREJCaW5kaW5nVXRpbGl0aWVzLmNwcApAQCAtMTI2LDcgKzEyNiw3IEBA
IHY4OjpIYW5kbGU8djg6OlZhbHVlPiBnZXROdGhWYWx1ZU9uS2V5UGF0aCh2ODo6SGFuZGxlPHY4
OjpWYWx1ZT4mIHJvb3RWYWx1ZSwgY29uCiAgICAgQVNTRVJUKGluZGV4IDw9IGtleVBhdGhFbGVt
ZW50cy5zaXplKCkpOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgaW5kZXg7ICsraSkgewog
ICAgICAgICBpZiAoIWdldChjdXJyZW50VmFsdWUsIGtleVBhdGhFbGVtZW50c1tpXSkpCi0gICAg
ICAgICAgICByZXR1cm4gdjg6OkhhbmRsZTx2ODo6VmFsdWU+KCk7CisgICAgICAgICAgICByZXR1
cm4gdjhVbmRlZmluZWQoKTsKICAgICB9CiAKICAgICByZXR1cm4gY3VycmVudFZhbHVlOwpAQCAt
MTQzLDcgKzE0Myw3IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBlbnN1cmVOdGhWYWx1ZU9uS2V5
UGF0aCh2ODo6SGFuZGxlPHY4OjpWYWx1ZT4mIHJvb3RWYWx1ZSwKICAgICAgICAgaWYgKCFnZXQo
Y3VycmVudFZhbHVlLCBrZXlQYXRoRWxlbWVudCkpIHsKICAgICAgICAgICAgIHY4OjpIYW5kbGU8
djg6Ok9iamVjdD4gb2JqZWN0ID0gdjg6Ok9iamVjdDo6TmV3KCk7CiAgICAgICAgICAgICBpZiAo
IXNldChwYXJlbnRWYWx1ZSwga2V5UGF0aEVsZW1lbnQsIG9iamVjdCkpCi0gICAgICAgICAgICAg
ICAgcmV0dXJuIHY4OjpIYW5kbGU8djg6OlZhbHVlPigpOworICAgICAgICAgICAgICAgIHJldHVy
biB2OFVuZGVmaW5lZCgpOwogICAgICAgICAgICAgY3VycmVudFZhbHVlID0gb2JqZWN0OwogICAg
ICAgICB9CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2Ny
aXB0RGVidWdTZXJ2ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0RGVi
dWdTZXJ2ZXIuY3BwCmluZGV4IGUzOWJiY2IyODZmYjNhZTExMjFiODI3ZDI4NGU1ODZjYzQwZTA4
YTcuLjc3ZDY4ZDAxN2ZjNjFjYmU1NWI4YmQ1OTFmYWQ1OWEwN2U4ZjE0N2YgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdERlYnVnU2VydmVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHREZWJ1Z1NlcnZlci5jcHAKQEAgLTEzNyw3
ICsxMzcsNyBAQCBTY3JpcHREZWJ1Z1NlcnZlcjo6UGF1c2VPbkV4Y2VwdGlvbnNTdGF0ZSBTY3Jp
cHREZWJ1Z1NlcnZlcjo6cGF1c2VPbkV4Y2VwdGlvbnNTdAogICAgIHY4OjpIYW5kbGVTY29wZSBz
Y29wZTsKICAgICB2ODo6Q29udGV4dDo6U2NvcGUgY29udGV4dFNjb3BlKHY4OjpEZWJ1Zzo6R2V0
RGVidWdDb250ZXh0KCkpOwogCi0gICAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGFyZ3ZbXSA9IHsg
djg6OkhhbmRsZTx2ODo6VmFsdWU+KCkgfTsKKyAgICB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gYXJn
dltdID0geyB2OFVuZGVmaW5lZCgpIH07CiAgICAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHJlc3Vs
dCA9IGNhbGxEZWJ1Z2dlck1ldGhvZCgicGF1c2VPbkV4Y2VwdGlvbnNTdGF0ZSIsIDAsIGFyZ3Yp
OwogICAgIHJldHVybiBzdGF0aWNfY2FzdDxTY3JpcHREZWJ1Z1NlcnZlcjo6UGF1c2VPbkV4Y2Vw
dGlvbnNTdGF0ZT4ocmVzdWx0LT5JbnQzMlZhbHVlKCkpOwogfQpAQCAtMzYzLDcgKzM2Myw3IEBA
IHZvaWQgU2NyaXB0RGVidWdTZXJ2ZXI6OmhhbmRsZVY4RGVidWdFdmVudChjb25zdCB2ODo6RGVi
dWc6OkV2ZW50RGV0YWlscyYgZXZlbnRECiAgICAgICAgICAgICAgICAgdjg6OkhhbmRsZTx2ODo6
T2JqZWN0PiBldmVudERhdGEgPSBldmVudERldGFpbHMuR2V0RXZlbnREYXRhKCk7CiAgICAgICAg
ICAgICAgICAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGV4Y2VwdGlvbkdldHRlclZhbHVlID0gZXZl
bnREYXRhLT5HZXQodjg6OlN0cmluZzo6TmV3KCJleGNlcHRpb24iKSk7CiAgICAgICAgICAgICAg
ICAgQVNTRVJUKCFleGNlcHRpb25HZXR0ZXJWYWx1ZS5Jc0VtcHR5KCkgJiYgZXhjZXB0aW9uR2V0
dGVyVmFsdWUtPklzRnVuY3Rpb24oKSk7Ci0gICAgICAgICAgICAgICAgdjg6OkhhbmRsZTx2ODo6
VmFsdWU+IGFyZ3ZbXSA9IHsgdjg6OkhhbmRsZTx2ODo6VmFsdWU+KCkgfTsKKyAgICAgICAgICAg
ICAgICB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gYXJndltdID0geyB2OFVuZGVmaW5lZCgpIH07CiAg
ICAgICAgICAgICAgICAgVjhSZWN1cnNpb25TY29wZTo6TWljcm90YXNrU3VwcHJlc3Npb24gc2Nv
cGU7CiAgICAgICAgICAgICAgICAgZXhjZXB0aW9uID0gdjg6OkhhbmRsZTx2ODo6RnVuY3Rpb24+
OjpDYXN0KGV4Y2VwdGlvbkdldHRlclZhbHVlKS0+Q2FsbChldmVudERhdGEsIDAsIGFyZ3YpOwog
ICAgICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2Vy
aWFsaXplZFNjcmlwdFZhbHVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Nlcmlh
bGl6ZWRTY3JpcHRWYWx1ZS5jcHAKaW5kZXggOWYxZTMyOThmMGQxMjU3MWYzNzNmNzI5N2M0MmRl
MjVkMmRjMTViYy4uZjU3NjkwNmM1NzJhYjRjYjI0OTQwZmRiYTMxNTAwOTg1MTZhODNjMSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2VyaWFsaXplZFNjcmlwdFZhbHVl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9TZXJpYWxpemVkU2NyaXB0VmFs
dWUuY3BwCkBAIC03MzAsNyArNzMwLDcgQEAgcHJpdmF0ZToKICAgICBjbGFzcyBFcnJvclN0YXRl
IDogcHVibGljIFN0YXRlQmFzZSB7CiAgICAgcHVibGljOgogICAgICAgICBFcnJvclN0YXRlKCkK
LSAgICAgICAgICAgIDogU3RhdGVCYXNlKHY4OjpIYW5kbGU8djg6OlZhbHVlPigpLCAwKQorICAg
ICAgICAgICAgOiBTdGF0ZUJhc2UodjhVbmRlZmluZWQoKSwgMCkKICAgICAgICAgewogICAgICAg
ICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4Q29sbGVjdGlv
bi5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhDb2xsZWN0aW9uLmgKaW5kZXggYWY3
MDgyZWM5MzA4ZTAxOWQ1YzI2N2NiZGNmOGRhN2Y1MTRiOTE1MS4uYWU1NDI1OTJhY2Q4NzNiODk4
MjY4NzBjNDg2ZTQ1Yzc5MDBjNzBiMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvdjgvVjhDb2xsZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhD
b2xsZWN0aW9uLmgKQEAgLTQ1LDcgKzQ1LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogdGVtcGxh
dGU8Y2xhc3MgVD4gc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBnZXRWOE9iamVjdChUKiBp
bXBsZW1lbnRhdGlvbiwgdjg6Oklzb2xhdGUqIGlzb2xhdGUpCiB7CiAgICAgaWYgKCFpbXBsZW1l
bnRhdGlvbikKLSAgICAgICAgcmV0dXJuIHY4OjpIYW5kbGU8djg6OlZhbHVlPigpOworICAgICAg
ICByZXR1cm4gdjhVbmRlZmluZWQoKTsKICAgICByZXR1cm4gdG9WOChpbXBsZW1lbnRhdGlvbiwg
aXNvbGF0ZSk7CiB9CiAKQEAgLTc0LDkgKzc0LDkgQEAgdGVtcGxhdGU8Y2xhc3MgQ29sbGVjdGlv
biwgY2xhc3MgSXRlbVR5cGU+IHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gZ2V0TmFtZWQK
IHRlbXBsYXRlPGNsYXNzIENvbGxlY3Rpb24sIGNsYXNzIEl0ZW1UeXBlPiBzdGF0aWMgdjg6Okhh
bmRsZTx2ODo6VmFsdWU+IGNvbGxlY3Rpb25OYW1lZFByb3BlcnR5R2V0dGVyKHY4OjpMb2NhbDx2
ODo6U3RyaW5nPiBuYW1lLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQogewogICAgIGlm
ICghaW5mby5Ib2xkZXIoKS0+R2V0UmVhbE5hbWVkUHJvcGVydHlJblByb3RvdHlwZUNoYWluKG5h
bWUpLklzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIHY4OjpIYW5kbGU8djg6OlZhbHVlPigpOwor
ICAgICAgICByZXR1cm4gdjhVbmRlZmluZWQoKTsKICAgICBpZiAoaW5mby5Ib2xkZXIoKS0+SGFz
UmVhbE5hbWVkQ2FsbGJhY2tQcm9wZXJ0eShuYW1lKSkKLSAgICAgICAgcmV0dXJuIHY4OjpIYW5k
bGU8djg6OlZhbHVlPigpOworICAgICAgICByZXR1cm4gdjhVbmRlZmluZWQoKTsKIAogICAgIHJl
dHVybiBnZXROYW1lZFByb3BlcnR5T2ZDb2xsZWN0aW9uPENvbGxlY3Rpb24sIEl0ZW1UeXBlPihu
YW1lLCBpbmZvLkhvbGRlcigpLCBpbmZvLkdldElzb2xhdGUoKSk7CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOENvbmZpZ3VyZURPTUF0dHJpYnV0ZXNBbmRNZXRo
b2RzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4Q29uZmlndXJlRE9NQXR0cmli
dXRlc0FuZE1ldGhvZHMuY3BwCmluZGV4IDMzZWM5MmMyZDk3ZDE2NjBkYmQ3NTBiOGIzOTczOTU2
ODZhN2M0YTYuLjVmZDQyYTcxNmEwZWE1ODI2NzYzY2VmMmRjOTIzMmQ2NDFjYjU3M2YgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4Q29uZmlndXJlRE9NQXR0cmlidXRl
c0FuZE1ldGhvZHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4Q29uZmln
dXJlRE9NQXR0cmlidXRlc0FuZE1ldGhvZHMuY3BwCkBAIC02MSw3ICs2MSw3IEBAIHZvaWQgYmF0
Y2hDb25maWd1cmVDYWxsYmFja3Modjg6OkhhbmRsZTx2ODo6T2JqZWN0VGVtcGxhdGU+IHByb3Rv
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgY2FsbGJhY2tDb3VudCkKIHsK
ICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGNhbGxiYWNrQ291bnQ7ICsraSkKLSAgICAgICAg
cHJvdG8tPlNldCh2ODo6U3RyaW5nOjpOZXcoY2FsbGJhY2tzW2ldLm5hbWUpLCB2ODo6RnVuY3Rp
b25UZW1wbGF0ZTo6TmV3KGNhbGxiYWNrc1tpXS5jYWxsYmFjaywgdjg6OkhhbmRsZTx2ODo6VmFs
dWU+KCksIHNpZ25hdHVyZSksIGF0dHJpYnV0ZXMpOworICAgICAgICBwcm90by0+U2V0KHY4OjpT
dHJpbmc6Ok5ldyhjYWxsYmFja3NbaV0ubmFtZSksIHY4OjpGdW5jdGlvblRlbXBsYXRlOjpOZXco
Y2FsbGJhY2tzW2ldLmNhbGxiYWNrLCB2OFVuZGVmaW5lZCgpLCBzaWduYXR1cmUpLCBhdHRyaWJ1
dGVzKTsKIH0KIAogdjg6OkxvY2FsPHY4OjpTaWduYXR1cmU+IGNvbmZpZ3VyZVRlbXBsYXRlKHY4
OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBkZXNjLApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhET01XcmFwcGVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3Y4L1Y4RE9NV3JhcHBlci5jcHAKaW5kZXggZmYxZTI5Njg2NTFlNjZhZDg0ZDhm
ZGUzMmMxMTY3MTNjNDlhYzNmNy4uOWQxNTFhYzY2ZGUzY2JkNWZjN2JiNjdmMzM1NjYxNzI1ZjUz
ZDIwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhET01XcmFwcGVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOERPTVdyYXBwZXIuY3BwCkBA
IC0yNjksNyArMjY5LDcgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4RE9NV3JhcHBlcjo6Y29u
dmVydEV2ZW50VGFyZ2V0VG9WOE9iamVjdChFdmVudFRhcmdldCogdGEKICAgICBET01fRVZFTlRf
VEFSR0VUX0lOVEVSRkFDRVNfRk9SX0VBQ0goVFJZX1RPX1dSQVBfV0lUSF9JTlRFUkZBQ0UpCiAK
ICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4gdjg6OkhhbmRsZTx2ODo6VmFs
dWU+KCk7CisgICAgcmV0dXJuIHY4VW5kZWZpbmVkKCk7CiB9CiAKIFBhc3NSZWZQdHI8RXZlbnRM
aXN0ZW5lcj4gVjhET01XcmFwcGVyOjpnZXRFdmVudExpc3RlbmVyKHY4OjpMb2NhbDx2ODo6VmFs
dWU+IHZhbHVlLCBib29sIGlzQXR0cmlidXRlLCBMaXN0ZW5lckxvb2t1cFR5cGUgbG9va3VwKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhOUE9iamVjdC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOE5QT2JqZWN0LmNwcAppbmRleCBkNDgwZTNlNjll
MTY0MDc0MDZmYzdhMDQwMDE4MzZjZmM1MzMxMWY4Li40NWExNTEyZGRkYTBhNzY5ODBiMTc5MjEw
NTkzZTM3ZTZkNWRlNDMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9W
OE5QT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOE5QT2JqZWN0
LmNwcApAQCAtMjAwLDcgKzIwMCw3IEBAIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gbnBP
YmplY3RHZXRQcm9wZXJ0eSh2ODo6TG9jYWw8djg6Ok9iamVjdD4gc2VsZiwgTlBJCiAgICAgICAg
IE5QVmFyaWFudCByZXN1bHQ7CiAgICAgICAgIFZPSURfVE9fTlBWQVJJQU5UKHJlc3VsdCk7CiAg
ICAgICAgIGlmICghbnBPYmplY3QtPl9jbGFzcy0+Z2V0UHJvcGVydHkobnBPYmplY3QsIGlkZW50
aWZpZXIsICZyZXN1bHQpKQotICAgICAgICAgICAgcmV0dXJuIHY4OjpIYW5kbGU8djg6OlZhbHVl
PigpOworICAgICAgICAgICAgcmV0dXJuIHY4VW5kZWZpbmVkKCk7CiAKICAgICAgICAgdjg6Okhh
bmRsZTx2ODo6VmFsdWU+IHJldHVyblZhbHVlOwogICAgICAgICBpZiAoX05QTl9Jc0FsaXZlKG5w
T2JqZWN0KSkKQEAgLTIzNCw3ICsyMzQsNyBAQCBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+
IG5wT2JqZWN0R2V0UHJvcGVydHkodjg6OkxvY2FsPHY4OjpPYmplY3Q+IHNlbGYsIE5QSQogICAg
ICAgICByZXR1cm4gdjhGdW5jdGlvbjsKICAgICB9CiAKLSAgICByZXR1cm4gdjg6OkhhbmRsZTx2
ODo6VmFsdWU+KCk7CisgICAgcmV0dXJuIHY4VW5kZWZpbmVkKCk7CiB9CiAKIHY4OjpIYW5kbGU8
djg6OlZhbHVlPiBucE9iamVjdE5hbWVkUHJvcGVydHlHZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJp
bmc+IG5hbWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCkBAIC0yODksNyArMjg5LDcg
QEAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBucE9iamVjdFNldFByb3BlcnR5KHY4OjpM
b2NhbDx2ODo6T2JqZWN0PiBzZWxmLCBOUEkKICAgICAgICAgaWYgKHN1Y2Nlc3MpCiAgICAgICAg
ICAgICByZXR1cm4gdmFsdWU7IC8vIEludGVyY2VwdCB0aGUgY2FsbC4KICAgICB9Ci0gICAgcmV0
dXJuIHY4OjpIYW5kbGU8djg6OlZhbHVlPigpOworICAgIHJldHVybiB2OFVuZGVmaW5lZCgpOwog
fQogCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4UHJveHkuY3Bw
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhQcm94eS5jcHAKaW5kZXggN2NmYTQyYmVk
ZWQ5N2I0NzYxOTI4YzZlY2I3YmIyZjVlMDE2OWM0Ni4uMDQ1ZjczZGI1YjE4ZGQwOTQyMzI0ZWQ2
OWExMGRmYmQyYzg0NjZhZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvdjgv
VjhQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhQcm94eS5jcHAK
QEAgLTUwMSw3ICs1MDEsNyBAQCBzdGF0aWMgdm9pZCBET01FeGNlcHRpb25TdGFja1NldHRlcih2
ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgdjg6OkxvY2FsPHY4OjpWYQogdjg6OkhhbmRsZTx2
ODo6VmFsdWU+IFY4UHJveHk6OnNldERPTUV4Y2VwdGlvbihpbnQgZWMsIHY4OjpJc29sYXRlKiBp
c29sYXRlKQogewogICAgIGlmIChlYyA8PSAwIHx8IHY4OjpWODo6SXNFeGVjdXRpb25UZXJtaW5h
dGluZygpKQotICAgICAgICByZXR1cm4gdjg6OkhhbmRsZTx2ODo6VmFsdWU+KCk7CisgICAgICAg
IHJldHVybiB2OFVuZGVmaW5lZCgpOwogCiAgICAgaWYgKGVjID09IE5BVElWRV9UWVBFX0VSUikg
ewogICAgICAgICBjb25zdCBjaGFyKiBtZXNzYWdlID0gMDsKQEAgLTUxNiw3ICs1MTYsNyBAQCB2
ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhQcm94eTo6c2V0RE9NRXhjZXB0aW9uKGludCBlYywgdjg6
Oklzb2xhdGUqIGlzb2xhdGUpCiAgICAgfQogCiAgICAgaWYgKGV4Y2VwdGlvbi5Jc0VtcHR5KCkp
Ci0gICAgICAgIHJldHVybiB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4oKTsKKyAgICAgICAgcmV0dXJu
IHY4VW5kZWZpbmVkKCk7CiAKICAgICAvLyBBdHRhY2ggYW4gRXJyb3Igb2JqZWN0IHRvIHRoZSBE
T01FeGNlcHRpb24uIFRoaXMgaXMgdGhlbiBsYXppbHkgdXNlZCB0byBnZXQgdGhlIHN0YWNrIHZh
bHVlLgogICAgIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBlcnJvciA9IHY4OjpFeGNlcHRpb246OkVy
cm9yKHY4U3RyaW5nKGRlc2NyaXB0aW9uLmRlc2NyaXB0aW9uLCBpc29sYXRlKSk7CkBAIC01NDQs
NyArNTQ0LDcgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4UHJveHk6OnRocm93RXJyb3IoRXJy
b3JUeXBlIHR5cGUsIGNvbnN0IGNoYXIqIG1lc3NhZ2UsIHYKICAgICAgICAgcmV0dXJuIHY4OjpU
aHJvd0V4Y2VwdGlvbih2ODo6RXhjZXB0aW9uOjpFcnJvcih2OFN0cmluZyhtZXNzYWdlLCBpc29s
YXRlKSkpOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAg
ICAgICByZXR1cm4gdjg6OkhhbmRsZTx2ODo6VmFsdWU+KCk7CisgICAgICAgIHJldHVybiB2OFVu
ZGVmaW5lZCgpOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvdjgvV29ya2VyU2NyaXB0RGVidWdTZXJ2ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvdjgvV29ya2VyU2NyaXB0RGVidWdTZXJ2ZXIuY3BwCmluZGV4IDE1NTQ2ZTZkNjcwZjVkNTg0
MGY4OGE4YjcwNjVkYTEzNDg2NjhjMzYuLjNjMjVhZDhjNTU2YTllNWJhMjNkOGYyNjljNjM4MWVm
ZDdhZWViNjggMTAwNzU1Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1dvcmtlclNj
cmlwdERlYnVnU2VydmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9Xb3Jr
ZXJTY3JpcHREZWJ1Z1NlcnZlci5jcHAKQEAgLTcyLDcgKzcyLDcgQEAgdm9pZCBXb3JrZXJTY3Jp
cHREZWJ1Z1NlcnZlcjo6YWRkTGlzdGVuZXIoU2NyaXB0RGVidWdMaXN0ZW5lciogbGlzdGVuZXIp
CiAgICAgICAgIHJldHVybjsKIAogICAgIHY4OjpIYW5kbGU8djg6OkZ1bmN0aW9uPiBnZXRTY3Jp
cHRzRnVuY3Rpb24gPSB2ODo6TG9jYWw8djg6OkZ1bmN0aW9uPjo6Q2FzdChtX2RlYnVnZ2VyU2Ny
aXB0LmdldCgpLT5HZXQodjg6OlN0cmluZzo6TmV3KCJnZXRXb3JrZXJTY3JpcHRzIikpKTsKLSAg
ICB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gYXJndltdID0geyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4o
KSB9OworICAgIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBhcmd2W10gPSB7IHY4VW5kZWZpbmVkKCkg
fTsKICAgICB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdmFsdWUgPSBnZXRTY3JpcHRzRnVuY3Rpb24t
PkNhbGwobV9kZWJ1Z2dlclNjcmlwdC5nZXQoKSwgMCwgYXJndik7CiAgICAgaWYgKHZhbHVlLklz
RW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvdjgvY3VzdG9tL1Y4Q1NTU3R5bGVEZWNsYXJhdGlvbkN1c3RvbS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhDU1NTdHlsZURlY2xhcmF0aW9uQ3VzdG9tLmNw
cAppbmRleCBhZjIzNzVmN2M3NjE4MDc4ZDBmZDdlMGQ2NjQ2MmI3OWNhNDJmNmRlLi5lM2ZhODA4
YzA4NzYwOTc1M2Y3MTBlZmZhOWViNmVkM2IyZmRlOTMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhDU1NTdHlsZURlY2xhcmF0aW9uQ3VzdG9tLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhDU1NTdHlsZURlY2xhcmF0
aW9uQ3VzdG9tLmNwcApAQCAtMTk1LDE0ICsxOTUsMTQgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+
IFY4Q1NTU3R5bGVEZWNsYXJhdGlvbjo6bmFtZWRQcm9wZXJ0eUdldHRlcih2ODo6TG9jYWw8djg6
OlMKICAgICBJTkNfU1RBVFMoIkRPTS5DU1NTdHlsZURlY2xhcmF0aW9uLk5hbWVkUHJvcGVydHlH
ZXR0ZXIiKTsKICAgICAvLyBGaXJzdCBsb29rIGZvciBBUEkgZGVmaW5lZCBhdHRyaWJ1dGVzIG9u
IHRoZSBzdHlsZSBkZWNsYXJhdGlvbiBvYmplY3QuCiAgICAgaWYgKGluZm8uSG9sZGVyKCktPkhh
c1JlYWxOYW1lZENhbGxiYWNrUHJvcGVydHkobmFtZSkpCi0gICAgICAgIHJldHVybiB2ODo6SGFu
ZGxlPHY4OjpWYWx1ZT4oKTsKKyAgICAgICAgcmV0dXJuIHY4VW5kZWZpbmVkKCk7CiAKICAgICAv
LyBTZWFyY2ggdGhlIHN0eWxlIGRlY2xhcmF0aW9uLgogICAgIENTU1Byb3BlcnR5SW5mbyogcHJv
cEluZm8gPSBjc3NQcm9wZXJ0eUluZm8obmFtZSk7CiAKICAgICAvLyBEbyBub3QgaGFuZGxlIG5v
bi1wcm9wZXJ0eSBuYW1lcy4KICAgICBpZiAoIXByb3BJbmZvKQotICAgICAgICByZXR1cm4gdjg6
OkhhbmRsZTx2ODo6VmFsdWU+KCk7CisgICAgICAgIHJldHVybiB2OFVuZGVmaW5lZCgpOwogCiAg
ICAgQ1NTU3R5bGVEZWNsYXJhdGlvbiogaW1wID0gVjhDU1NTdHlsZURlY2xhcmF0aW9uOjp0b05h
dGl2ZShpbmZvLkhvbGRlcigpKTsKICAgICBSZWZQdHI8Q1NTVmFsdWU+IGNzc1ZhbHVlID0gaW1w
LT5nZXRQcm9wZXJ0eUNTU1ZhbHVlSW50ZXJuYWwoc3RhdGljX2Nhc3Q8Q1NTUHJvcGVydHlJRD4o
cHJvcEluZm8tPnByb3BJRCkpOwpAQCAtMjI4LDcgKzIyOCw3IEBAIHY4OjpIYW5kbGU8djg6OlZh
bHVlPiBWOENTU1N0eWxlRGVjbGFyYXRpb246Om5hbWVkUHJvcGVydHlTZXR0ZXIodjg6OkxvY2Fs
PHY4OjpTCiAgICAgQ1NTU3R5bGVEZWNsYXJhdGlvbiogaW1wID0gVjhDU1NTdHlsZURlY2xhcmF0
aW9uOjp0b05hdGl2ZShpbmZvLkhvbGRlcigpKTsKICAgICBDU1NQcm9wZXJ0eUluZm8qIHByb3BJ
bmZvID0gY3NzUHJvcGVydHlJbmZvKG5hbWUpOwogICAgIGlmICghcHJvcEluZm8pCi0gICAgICAg
IHJldHVybiB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4oKTsKKyAgICAgICAgcmV0dXJuIHY4VW5kZWZp
bmVkKCk7CiAKICAgICBTdHJpbmcgcHJvcGVydHlWYWx1ZSA9IHRvV2ViQ29yZVN0cmluZ1dpdGhO
dWxsQ2hlY2sodmFsdWUpOwogICAgIGlmIChwcm9wSW5mby0+aGFkUGl4ZWxPclBvc1ByZWZpeCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOENvbnNvbGVD
dXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4Q29uc29sZUN1
c3RvbS5jcHAKaW5kZXggMmJkMmJmMWYwOTEzYzkwZWMyZTg1MzBjZjU2MzRhYzM0NGM1NjM0NC4u
ZDhhOWIxZmYyODlmMTQ5NjFhYjY2MjA0NDQxZjA0ZTU0NmE3NzA2MiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4Q29uc29sZUN1c3RvbS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4Q29uc29sZUN1c3RvbS5jcHAKQEAg
LTQ5LDcgKzQ5LDcgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4Q29uc29sZTo6dHJhY2VDYWxs
YmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogICAgIFJlZlB0cjxTY3JpcHRDYWxsU3Rh
Y2s+IGNhbGxTdGFjayhjcmVhdGVTY3JpcHRDYWxsU3RhY2soU2NyaXB0Q2FsbFN0YWNrOjptYXhD
YWxsU3RhY2tTaXplVG9DYXB0dXJlKSk7CiAgICAgUmVmUHRyPFNjcmlwdEFyZ3VtZW50cz4gc2Ny
aXB0QXJndW1lbnRzKGNyZWF0ZVNjcmlwdEFyZ3VtZW50cyhhcmdzLCAwKSk7CiAgICAgaW1wLT50
cmFjZShzY3JpcHRBcmd1bWVudHMucmVsZWFzZSgpLCBjYWxsU3RhY2spOwotICAgIHJldHVybiB2
ODo6SGFuZGxlPHY4OjpWYWx1ZT4oKTsKKyAgICByZXR1cm4gdjhVbmRlZmluZWQoKTsKIH0KIAog
djg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4Q29uc29sZTo6YXNzZXJ0Q2FsbGJhY2soY29uc3Qgdjg6
OkFyZ3VtZW50cyYgYXJncykKQEAgLTYwLDcgKzYwLDcgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+
IFY4Q29uc29sZTo6YXNzZXJ0Q2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKICAg
ICBib29sIGNvbmRpdGlvbiA9IGFyZ3NbMF0tPkJvb2xlYW5WYWx1ZSgpOwogICAgIFJlZlB0cjxT
Y3JpcHRBcmd1bWVudHM+IHNjcmlwdEFyZ3VtZW50cyhjcmVhdGVTY3JpcHRBcmd1bWVudHMoYXJn
cywgMSkpOwogICAgIGltcC0+YXNzZXJ0Q29uZGl0aW9uKHNjcmlwdEFyZ3VtZW50cy5yZWxlYXNl
KCksIGNhbGxTdGFjaywgY29uZGl0aW9uKTsKLSAgICByZXR1cm4gdjg6OkhhbmRsZTx2ODo6VmFs
dWU+KCk7CisgICAgcmV0dXJuIHY4VW5kZWZpbmVkKCk7CiB9CiAKICNpZiBFTkFCTEUoSkFWQVND
UklQVF9ERUJVR0dFUikKQEAgLTczLDcgKzczLDcgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4
Q29uc29sZTo6cHJvZmlsZUNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiAgICAg
ICAgIHJldHVybiB2ODo6VW5kZWZpbmVkKCk7CiAgICAgU1RSSU5HX1RPX1Y4UEFSQU1FVEVSX0VY
Q0VQVElPTl9CTE9DSyhWOFBhcmFtZXRlcjxXaXRoVW5kZWZpbmVkT3JOdWxsQ2hlY2s+LCB0aXRs
ZSwgYXJnc1swXSk7CiAgICAgaW1wLT5wcm9maWxlKHRpdGxlLCBTY3JpcHRTdGF0ZTo6Y3VycmVu
dCgpLCBjYWxsU3RhY2spOwotICAgIHJldHVybiB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4oKTsKKyAg
ICByZXR1cm4gdjhVbmRlZmluZWQoKTsKIH0KIAogdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4Q29u
c29sZTo6cHJvZmlsZUVuZENhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCkBAIC04
NSw3ICs4NSw3IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOENvbnNvbGU6OnByb2ZpbGVFbmRD
YWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogICAgICAgICByZXR1cm4gdjg6OlVu
ZGVmaW5lZCgpOwogICAgIFNUUklOR19UT19WOFBBUkFNRVRFUl9FWENFUFRJT05fQkxPQ0soVjhQ
YXJhbWV0ZXI8V2l0aFVuZGVmaW5lZE9yTnVsbENoZWNrPiwgdGl0bGUsIGFyZ3NbMF0pOwogICAg
IGltcC0+cHJvZmlsZUVuZCh0aXRsZSwgU2NyaXB0U3RhdGU6OmN1cnJlbnQoKSwgY2FsbFN0YWNr
KTsKLSAgICByZXR1cm4gdjg6OkhhbmRsZTx2ODo6VmFsdWU+KCk7CisgICAgcmV0dXJuIHY4VW5k
ZWZpbmVkKCk7CiB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvdjgvY3VzdG9tL1Y4RE9NU3RyaW5nTWFwQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3Y4L2N1c3RvbS9WOERPTVN0cmluZ01hcEN1c3RvbS5jcHAKaW5kZXggZTVkZDNjMDc0
M2JhODNmNjdjMmQ1NmU3MjRhODVlYjA3ZjU2ZTU4OC4uNWI0OGE1YWUxNDU2Y2VlNmIyMmE3ZTRh
ZDAyMDQ3MmNjNDU2MGIyMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvdjgv
Y3VzdG9tL1Y4RE9NU3RyaW5nTWFwQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy92OC9jdXN0b20vVjhET01TdHJpbmdNYXBDdXN0b20uY3BwCkBAIC01MSw3ICs1MSw3IEBA
IHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOERPTVN0cmluZ01hcDo6bmFtZWRQcm9wZXJ0eUdldHRl
cih2ODo6TG9jYWw8djg6OlN0cmluZz4KICAgICBJTkNfU1RBVFMoIkRPTS5ET01TdHJpbmdNYXAu
TmFtZWRQcm9wZXJ0eUdldHRlciIpOwogICAgIFN0cmluZyB2YWx1ZSA9IFY4RE9NU3RyaW5nTWFw
Ojp0b05hdGl2ZShpbmZvLkhvbGRlcigpKS0+aXRlbSh0b1dlYkNvcmVTdHJpbmcobmFtZSkpOwog
ICAgIGlmICh2YWx1ZS5pc051bGwoKSkKLSAgICAgICAgcmV0dXJuIHY4OjpIYW5kbGU8djg6OlZh
bHVlPigpOworICAgICAgICByZXR1cm4gdjhVbmRlZmluZWQoKTsKICAgICByZXR1cm4gdjhTdHJp
bmdPclVuZGVmaW5lZCh2YWx1ZSwgaW5mby5HZXRJc29sYXRlKCkpOwogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhET01XaW5kb3dDdXN0b20uY3Bw
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4RE9NV2luZG93Q3VzdG9tLmNw
cAppbmRleCA1MWJmNDBjODRjODk1NTYzM2JjNTdiOWZhNTI2OTUyODUzMTYxOTU0Li5iZTU5ZmYw
ZDgxZWI4YTQ1MzQ0Y2YwMjg4NjM2MDI0ZjM2ZDU5YjFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhET01XaW5kb3dDdXN0b20uY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOERPTVdpbmRvd0N1c3RvbS5jcHAKQEAgLTQ3
MSwxNyArNDcxLDE3IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOERPTVdpbmRvdzo6aW5kZXhl
ZFByb3BlcnR5R2V0dGVyKHVpbnQzMl90IGluZGV4LCBjb25zdCB2CiAKICAgICBET01XaW5kb3cq
IHdpbmRvdyA9IFY4RE9NV2luZG93Ojp0b05hdGl2ZShpbmZvLkhvbGRlcigpKTsKICAgICBpZiAo
IXdpbmRvdykKLSAgICAgICAgcmV0dXJuIHY4OjpIYW5kbGU8djg6OlZhbHVlPigpOworICAgICAg
ICByZXR1cm4gdjhVbmRlZmluZWQoKTsKIAogICAgIEZyYW1lKiBmcmFtZSA9IHdpbmRvdy0+ZnJh
bWUoKTsKICAgICBpZiAoIWZyYW1lKQotICAgICAgICByZXR1cm4gdjg6OkhhbmRsZTx2ODo6VmFs
dWU+KCk7CisgICAgICAgIHJldHVybiB2OFVuZGVmaW5lZCgpOwogCiAgICAgRnJhbWUqIGNoaWxk
ID0gZnJhbWUtPnRyZWUoKS0+c2NvcGVkQ2hpbGQoaW5kZXgpOwogICAgIGlmIChjaGlsZCkKICAg
ICAgICAgcmV0dXJuIHRvVjgoY2hpbGQtPmRvbVdpbmRvdygpLCBpbmZvLkdldElzb2xhdGUoKSk7
CiAKLSAgICByZXR1cm4gdjg6OkhhbmRsZTx2ODo6VmFsdWU+KCk7CisgICAgcmV0dXJuIHY4VW5k
ZWZpbmVkKCk7CiB9CiAKIApAQCAtNDkxLDEyICs0OTEsMTIgQEAgdjg6OkhhbmRsZTx2ODo6VmFs
dWU+IFY4RE9NV2luZG93OjpuYW1lZFByb3BlcnR5R2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5n
PiBuYW0KIAogICAgIERPTVdpbmRvdyogd2luZG93ID0gVjhET01XaW5kb3c6OnRvTmF0aXZlKGlu
Zm8uSG9sZGVyKCkpOwogICAgIGlmICghd2luZG93KQotICAgICAgICByZXR1cm4gdjg6OkhhbmRs
ZTx2ODo6VmFsdWU+KCk7CisgICAgICAgIHJldHVybiB2OFVuZGVmaW5lZCgpOwogCiAgICAgRnJh
bWUqIGZyYW1lID0gd2luZG93LT5mcmFtZSgpOwogICAgIC8vIHdpbmRvdyBpcyBkZXRhY2hlZCBm
cm9tIGEgZnJhbWUuCiAgICAgaWYgKCFmcmFtZSkKLSAgICAgICAgcmV0dXJuIHY4OjpIYW5kbGU8
djg6OlZhbHVlPigpOworICAgICAgICByZXR1cm4gdjhVbmRlZmluZWQoKTsKIAogICAgIC8vIFNl
YXJjaCBzdWItZnJhbWVzLgogICAgIEF0b21pY1N0cmluZyBwcm9wTmFtZSA9IHY4VmFsdWVUb0F0
b21pY1dlYkNvcmVTdHJpbmcobmFtZSk7CkBAIC01MDYsNyArNTA2LDcgQEAgdjg6OkhhbmRsZTx2
ODo6VmFsdWU+IFY4RE9NV2luZG93OjpuYW1lZFByb3BlcnR5R2V0dGVyKHY4OjpMb2NhbDx2ODo6
U3RyaW5nPiBuYW0KIAogICAgIC8vIFNlYXJjaCBJREwgZnVuY3Rpb25zIGRlZmluZWQgaW4gdGhl
IHByb3RvdHlwZQogICAgIGlmICghaW5mby5Ib2xkZXIoKS0+R2V0UmVhbE5hbWVkUHJvcGVydHko
bmFtZSkuSXNFbXB0eSgpKQotICAgICAgICByZXR1cm4gdjg6OkhhbmRsZTx2ODo6VmFsdWU+KCk7
CisgICAgICAgIHJldHVybiB2OFVuZGVmaW5lZCgpOwogCiAgICAgLy8gU2VhcmNoIG5hbWVkIGl0
ZW1zIGluIHRoZSBkb2N1bWVudC4KICAgICBEb2N1bWVudCogZG9jID0gZnJhbWUtPmRvY3VtZW50
KCk7CkBAIC01MjIsNyArNTIyLDcgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4RE9NV2luZG93
OjpuYW1lZFByb3BlcnR5R2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW0KICAgICAgICAg
fQogICAgIH0KIAotICAgIHJldHVybiB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4oKTsKKyAgICByZXR1
cm4gdjhVbmRlZmluZWQoKTsKIH0KIAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy92OC9jdXN0b20vVjhEYXRhVmlld0N1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy92OC9jdXN0b20vVjhEYXRhVmlld0N1c3RvbS5jcHAKaW5kZXggNjBmMjYxNWVkMjdmODk1
MTkwNjc3MGRkMzM5ZjA3NTJkYTBmYjc5Mi4uOTMyZDY2MGVlZDUzNDg1ZDliYzI3OTRjZGEyMTI4
ZTdlMmRhMjJhOSAxMDA3NTUKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9t
L1Y4RGF0YVZpZXdDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1
c3RvbS9WOERhdGFWaWV3Q3VzdG9tLmNwcApAQCAtMTA2LDcgKzEwNiw3IEBAIHY4OjpIYW5kbGU8
djg6OlZhbHVlPiBWOERhdGFWaWV3OjpzZXRJbnQ4Q2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50
cyYgYXJncykKICAgICBpbXAtPnNldEludDgoYnl0ZU9mZnNldCwgc3RhdGljX2Nhc3Q8aW50OF90
Pih2YWx1ZSksIGVjKTsKICAgICBpZiAoVU5MSUtFTFkoZWMpKQogICAgICAgICByZXR1cm4gVjhQ
cm94eTo6c2V0RE9NRXhjZXB0aW9uKGVjLCBhcmdzLkdldElzb2xhdGUoKSk7Ci0gICAgcmV0dXJu
IHY4OjpIYW5kbGU8djg6OlZhbHVlPigpOworICAgIHJldHVybiB2OFVuZGVmaW5lZCgpOwogfQog
CiB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhEYXRhVmlldzo6c2V0VWludDhDYWxsYmFjayhjb25z
dCB2ODo6QXJndW1lbnRzJiBhcmdzKQpAQCAtMTIyLDcgKzEyMiw3IEBAIHY4OjpIYW5kbGU8djg6
OlZhbHVlPiBWOERhdGFWaWV3OjpzZXRVaW50OENhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMm
IGFyZ3MpCiAgICAgaW1wLT5zZXRVaW50OChieXRlT2Zmc2V0LCBzdGF0aWNfY2FzdDx1aW50OF90
Pih2YWx1ZSksIGVjKTsKICAgICBpZiAoVU5MSUtFTFkoZWMpKQogICAgICAgICByZXR1cm4gVjhQ
cm94eTo6c2V0RE9NRXhjZXB0aW9uKGVjLCBhcmdzLkdldElzb2xhdGUoKSk7Ci0gICAgcmV0dXJu
IHY4OjpIYW5kbGU8djg6OlZhbHVlPigpOworICAgIHJldHVybiB2OFVuZGVmaW5lZCgpOwogfQog
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy92OC9jdXN0b20vVjhEZXZpY2VNb3Rpb25FdmVudEN1c3RvbS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhEZXZpY2VNb3Rpb25FdmVudEN1c3RvbS5jcHAKaW5k
ZXggYzM3ZjU5ZmIyM2Q3ZjczYTAwMzI1NzMzNjRmZjE2NjhjODYzNDFjMC4uNjEwYTM0YmRjNTEy
NTY5ZTQ2ZGFhMjIzYWM2YTJiNGNjMDZhNmE1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvdjgvY3VzdG9tL1Y4RGV2aWNlTW90aW9uRXZlbnRDdXN0b20uY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOERldmljZU1vdGlvbkV2ZW50Q3VzdG9t
LmNwcApAQCAtMTc1LDcgKzE3NSw3IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOERldmljZU1v
dGlvbkV2ZW50Ojppbml0RGV2aWNlTW90aW9uRXZlbnRDYWxsYmFjayhjb25zdCB2CiAgICAgZG91
YmxlIGludGVydmFsID0gYXJnc1s2XS0+TnVtYmVyVmFsdWUoKTsKICAgICBSZWZQdHI8RGV2aWNl
TW90aW9uRGF0YT4gZGV2aWNlTW90aW9uRGF0YSA9IERldmljZU1vdGlvbkRhdGE6OmNyZWF0ZShh
Y2NlbGVyYXRpb24sIGFjY2VsZXJhdGlvbkluY2x1ZGluZ0dyYXZpdHksIHJvdGF0aW9uUmF0ZSwg
aW50ZXJ2YWxQcm92aWRlZCwgaW50ZXJ2YWwpOwogICAgIGltcC0+aW5pdERldmljZU1vdGlvbkV2
ZW50KHR5cGUsIGJ1YmJsZXMsIGNhbmNlbGFibGUsIGRldmljZU1vdGlvbkRhdGEuZ2V0KCkpOwot
ICAgIHJldHVybiB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4oKTsKKyAgICByZXR1cm4gdjhVbmRlZmlu
ZWQoKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4RGV2aWNlT3JpZW50YXRpb25FdmVudEN1c3RvbS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhEZXZpY2VPcmllbnRhdGlv
bkV2ZW50Q3VzdG9tLmNwcAppbmRleCA3OTQyODMxZmJkNWY2YTg5YjRiNzgyMDM0Mjc5NzYxZWU1
YmVhYzU4Li4xMjgzMDI0Mzk3OWZmNWEzNTE0NmFjMGUwNDc0MmVlN2UxNjZiZGY3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhEZXZpY2VPcmllbnRhdGlv
bkV2ZW50Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20v
VjhEZXZpY2VPcmllbnRhdGlvbkV2ZW50Q3VzdG9tLmNwcApAQCAtOTQsNyArOTQsNyBAQCB2ODo6
SGFuZGxlPHY4OjpWYWx1ZT4gVjhEZXZpY2VPcmllbnRhdGlvbkV2ZW50Ojppbml0RGV2aWNlT3Jp
ZW50YXRpb25FdmVudENhbGxiYQogICAgIGJvb2wgYWJzb2x1dGUgPSBhcmdzWzZdLT5Cb29sZWFu
VmFsdWUoKTsKICAgICBSZWZQdHI8RGV2aWNlT3JpZW50YXRpb25EYXRhPiBvcmllbnRhdGlvbiA9
IERldmljZU9yaWVudGF0aW9uRGF0YTo6Y3JlYXRlKGFscGhhUHJvdmlkZWQsIGFscGhhLCBiZXRh
UHJvdmlkZWQsIGJldGEsIGdhbW1hUHJvdmlkZWQsIGdhbW1hLCBhYnNvbHV0ZVByb3ZpZGVkLCBh
YnNvbHV0ZSk7CiAgICAgaW1wLT5pbml0RGV2aWNlT3JpZW50YXRpb25FdmVudCh0eXBlLCBidWJi
bGVzLCBjYW5jZWxhYmxlLCBvcmllbnRhdGlvbi5nZXQoKSk7Ci0gICAgcmV0dXJuIHY4OjpIYW5k
bGU8djg6OlZhbHVlPigpOworICAgIHJldHVybiB2OFVuZGVmaW5lZCgpOwogfQogCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9j
dXN0b20vVjhEaXJlY3RvcnlFbnRyeUN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy92OC9jdXN0b20vVjhEaXJlY3RvcnlFbnRyeUN1c3RvbS5jcHAKaW5kZXggOWM0ZmQxNDhiOWYw
ZTJjMzhlODU0OTkxNjAwYzA0YzIzNzlhZjBjYi4uZTc4MTliMWUyZWEwZjg0ZTFjNTExNjY3NTFh
MGQzZGU5OTlkNzZkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3Vz
dG9tL1Y4RGlyZWN0b3J5RW50cnlDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3Y4L2N1c3RvbS9WOERpcmVjdG9yeUVudHJ5Q3VzdG9tLmNwcApAQCAtNTUsNyArNTUsNyBA
QCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhEaXJlY3RvcnlFbnRyeTo6Z2V0RGlyZWN0b3J5Q2Fs
bGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cwogICAgIFNUUklOR19UT19WOFBBUkFNRVRFUl9FWENF
UFRJT05fQkxPQ0soVjhQYXJhbWV0ZXI8V2l0aFVuZGVmaW5lZE9yTnVsbENoZWNrPiwgcGF0aCwg
YXJnc1swXSk7CiAgICAgaWYgKGFyZ3MuTGVuZ3RoKCkgPD0gMSkgewogICAgICAgICBpbXAtPmdl
dERpcmVjdG9yeShwYXRoKTsKLSAgICAgICAgcmV0dXJuIHY4OjpIYW5kbGU8djg6OlZhbHVlPigp
OworICAgICAgICByZXR1cm4gdjhVbmRlZmluZWQoKTsKICAgICB9CiAgICAgUmVmUHRyPFdlYktp
dEZsYWdzPiBmbGFnczsKICAgICBpZiAoIWlzVW5kZWZpbmVkT3JOdWxsKGFyZ3NbMV0pICYmIGFy
Z3NbMV0tPklzT2JqZWN0KCkpIHsKQEAgLTg1LDcgKzg1LDcgQEAgdjg6OkhhbmRsZTx2ODo6VmFs
dWU+IFY4RGlyZWN0b3J5RW50cnk6OmdldERpcmVjdG9yeUNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1
bWVudHMKICAgICAgICAgZXJyb3JDYWxsYmFjayA9IFY4RXJyb3JDYWxsYmFjazo6Y3JlYXRlKGFy
Z3NbM10sIGdldFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSk7CiAgICAgfQogICAgIGltcC0+Z2V0
RGlyZWN0b3J5KHBhdGgsIGZsYWdzLCBzdWNjZXNzQ2FsbGJhY2ssIGVycm9yQ2FsbGJhY2spOwot
ICAgIHJldHVybiB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4oKTsKKyAgICByZXR1cm4gdjhVbmRlZmlu
ZWQoKTsKIH0KIAogdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4RGlyZWN0b3J5RW50cnk6OmdldEZp
bGVDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQpAQCAtOTksNyArOTksNyBAQCB2
ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhEaXJlY3RvcnlFbnRyeTo6Z2V0RmlsZUNhbGxiYWNrKGNv
bnN0IHY4OjpBcmd1bWVudHMmIGFyZwogICAgIFNUUklOR19UT19WOFBBUkFNRVRFUl9FWENFUFRJ
T05fQkxPQ0soVjhQYXJhbWV0ZXI8V2l0aFVuZGVmaW5lZE9yTnVsbENoZWNrPiwgcGF0aCwgYXJn
c1swXSk7CiAgICAgaWYgKGFyZ3MuTGVuZ3RoKCkgPD0gMSkgewogICAgICAgICBpbXAtPmdldEZp
bGUocGF0aCk7Ci0gICAgICAgIHJldHVybiB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4oKTsKKyAgICAg
ICAgcmV0dXJuIHY4VW5kZWZpbmVkKCk7CiAgICAgfQogICAgIFJlZlB0cjxXZWJLaXRGbGFncz4g
ZmxhZ3M7CiAgICAgaWYgKCFpc1VuZGVmaW5lZE9yTnVsbChhcmdzWzFdKSAmJiBhcmdzWzFdLT5J
c09iamVjdCgpKSB7CkBAIC0xMjksNyArMTI5LDcgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4
RGlyZWN0b3J5RW50cnk6OmdldEZpbGVDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmcK
ICAgICAgICAgZXJyb3JDYWxsYmFjayA9IFY4RXJyb3JDYWxsYmFjazo6Y3JlYXRlKGFyZ3NbM10s
IGdldFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSk7CiAgICAgfQogICAgIGltcC0+Z2V0RmlsZShw
YXRoLCBmbGFncywgc3VjY2Vzc0NhbGxiYWNrLCBlcnJvckNhbGxiYWNrKTsKLSAgICByZXR1cm4g
djg6OkhhbmRsZTx2ODo6VmFsdWU+KCk7CisgICAgcmV0dXJuIHY4VW5kZWZpbmVkKCk7CiB9CiAK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTEFs
bENvbGxlY3Rpb25DdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9t
L1Y4SFRNTEFsbENvbGxlY3Rpb25DdXN0b20uY3BwCmluZGV4IDBjODNmYjUzNDE3ZTdkZWE5MDA3
YzNjMmRjYWRjMGU1NTZmNzdjZDkuLjUzMmUyNTdhYzc3ZWZmMWY1MGNhNThjY2M5Y2VkZjhiNzM3
YzFjZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEhU
TUxBbGxDb2xsZWN0aW9uQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92
OC9jdXN0b20vVjhIVE1MQWxsQ29sbGVjdGlvbkN1c3RvbS5jcHAKQEAgLTQ3LDcgKzQ3LDcgQEAg
c3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBnZXROYW1lZEl0ZW1zKEhUTUxBbGxDb2xsZWN0
aW9uKiBjb2xsZWN0aW9uLCBBdG9taWMKICAgICBjb2xsZWN0aW9uLT5uYW1lZEl0ZW1zKG5hbWUs
IG5hbWVkSXRlbXMpOwogCiAgICAgaWYgKCFuYW1lZEl0ZW1zLnNpemUoKSkKLSAgICAgICAgcmV0
dXJuIHY4OjpIYW5kbGU8djg6OlZhbHVlPigpOworICAgICAgICByZXR1cm4gdjhVbmRlZmluZWQo
KTsKIAogICAgIGlmIChuYW1lZEl0ZW1zLnNpemUoKSA9PSAxKQogICAgICAgICByZXR1cm4gdG9W
OChuYW1lZEl0ZW1zLmF0KDApLnJlbGVhc2UoKSwgaXNvbGF0ZSk7CkBAIC03Niw5ICs3Niw5IEBA
IHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOEhUTUxBbGxDb2xsZWN0aW9uOjpuYW1lZFByb3BlcnR5
R2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyCiAgICAgSU5DX1NUQVRTKCJET00uSFRNTEFsbENvbGxl
Y3Rpb24uTmFtZWRQcm9wZXJ0eUdldHRlciIpOwogCiAgICAgaWYgKCFpbmZvLkhvbGRlcigpLT5H
ZXRSZWFsTmFtZWRQcm9wZXJ0eUluUHJvdG90eXBlQ2hhaW4obmFtZSkuSXNFbXB0eSgpKQotICAg
ICAgICByZXR1cm4gdjg6OkhhbmRsZTx2ODo6VmFsdWU+KCk7CisgICAgICAgIHJldHVybiB2OFVu
ZGVmaW5lZCgpOwogICAgIGlmIChpbmZvLkhvbGRlcigpLT5IYXNSZWFsTmFtZWRDYWxsYmFja1By
b3BlcnR5KG5hbWUpKQotICAgICAgICByZXR1cm4gdjg6OkhhbmRsZTx2ODo6VmFsdWU+KCk7Cisg
ICAgICAgIHJldHVybiB2OFVuZGVmaW5lZCgpOwogCiAgICAgSFRNTEFsbENvbGxlY3Rpb24qIGlt
cCA9IFY4SFRNTEFsbENvbGxlY3Rpb246OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkpOwogICAgIHJl
dHVybiBnZXROYW1lZEl0ZW1zKGltcCwgdjhWYWx1ZVRvQXRvbWljV2ViQ29yZVN0cmluZyhuYW1l
KSwgaW5mby5HZXRJc29sYXRlKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvdjgvY3VzdG9tL1Y4SFRNTENvbGxlY3Rpb25DdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTENvbGxlY3Rpb25DdXN0b20uY3BwCmluZGV4IDdhNmY3
Yjk1YmRmZjYwODZhZGVkMmQ0OTUzZWFkYzhhNTkzNWI0NzEuLjM4MDJiYjNlYzZiYjJhNWY0OWE0
NDBkZjgxYmI4OWMyMjllNDM4Y2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3Y4L2N1c3RvbS9WOEhUTUxDb2xsZWN0aW9uQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy92OC9jdXN0b20vVjhIVE1MQ29sbGVjdGlvbkN1c3RvbS5jcHAKQEAgLTQ5LDcg
KzQ5LDcgQEAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBnZXROYW1lZEl0ZW1zKEhUTUxD
b2xsZWN0aW9uKiBjb2xsZWN0aW9uLCBBdG9taWNTdHIKICAgICBjb2xsZWN0aW9uLT5uYW1lZEl0
ZW1zKG5hbWUsIG5hbWVkSXRlbXMpOwogCiAgICAgaWYgKCFuYW1lZEl0ZW1zLnNpemUoKSkKLSAg
ICAgICAgcmV0dXJuIHY4OjpIYW5kbGU8djg6OlZhbHVlPigpOworICAgICAgICByZXR1cm4gdjhV
bmRlZmluZWQoKTsKIAogICAgIGlmIChuYW1lZEl0ZW1zLnNpemUoKSA9PSAxKQogICAgICAgICBy
ZXR1cm4gdG9WOChuYW1lZEl0ZW1zLmF0KDApLnJlbGVhc2UoKSwgaXNvbGF0ZSk7CkBAIC02NSw5
ICs2NSw5IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOEhUTUxDb2xsZWN0aW9uOjpuYW1lZFBy
b3BlcnR5R2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nCiAgICAgSU5DX1NUQVRTKCJET00uSFRN
TENvbGxlY3Rpb24uTmFtZWRQcm9wZXJ0eUdldHRlciIpOwogCiAgICAgaWYgKCFpbmZvLkhvbGRl
cigpLT5HZXRSZWFsTmFtZWRQcm9wZXJ0eUluUHJvdG90eXBlQ2hhaW4obmFtZSkuSXNFbXB0eSgp
KQotICAgICAgICByZXR1cm4gdjg6OkhhbmRsZTx2ODo6VmFsdWU+KCk7CisgICAgICAgIHJldHVy
biB2OFVuZGVmaW5lZCgpOwogICAgIGlmIChpbmZvLkhvbGRlcigpLT5IYXNSZWFsTmFtZWRDYWxs
YmFja1Byb3BlcnR5KG5hbWUpKQotICAgICAgICByZXR1cm4gdjg6OkhhbmRsZTx2ODo6VmFsdWU+
KCk7CisgICAgICAgIHJldHVybiB2OFVuZGVmaW5lZCgpOwogCiAgICAgSFRNTENvbGxlY3Rpb24q
IGltcCA9IFY4SFRNTENvbGxlY3Rpb246OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkpOwogICAgIHJl
dHVybiBnZXROYW1lZEl0ZW1zKGltcCwgdjhWYWx1ZVRvQXRvbWljV2ViQ29yZVN0cmluZyhuYW1l
KSwgaW5mby5HZXRJc29sYXRlKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvdjgvY3VzdG9tL1Y4SFRNTERvY3VtZW50Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxEb2N1bWVudEN1c3RvbS5jcHAKaW5kZXggMmZjYzU4MWY5
YjNjMGEyZGExYjI5MGUwN2Y1MWNlYzlkNjIzMmM1ZC4uYzIxNTBhMGZiMmZjNTYxY2IyOGI3YWYz
YjdlZGVjOWY1ODExYTdhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvdjgv
Y3VzdG9tL1Y4SFRNTERvY3VtZW50Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy92OC9jdXN0b20vVjhIVE1MRG9jdW1lbnRDdXN0b20uY3BwCkBAIC04MywxMSArODMsMTEg
QEAgdjg6OkxvY2FsPHY4OjpPYmplY3Q+IFY4SFRNTERvY3VtZW50OjpXcmFwSW5TaGFkb3dPYmpl
Y3Qodjg6OkxvY2FsPHY4OjpPYmplY3Q+IHcKIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOEhUTUxE
b2N1bWVudDo6R2V0TmFtZWRQcm9wZXJ0eShIVE1MRG9jdW1lbnQqIGh0bWxEb2N1bWVudCwgY29u
c3QgQXRvbWljU3RyaW5nJiBrZXksIHY4OjpJc29sYXRlKiBpc29sYXRlKQogewogICAgIGlmICgh
aHRtbERvY3VtZW50LT5oYXNOYW1lZEl0ZW0oa2V5LmltcGwoKSkgJiYgIWh0bWxEb2N1bWVudC0+
aGFzRXh0cmFOYW1lZEl0ZW0oa2V5LmltcGwoKSkpCi0gICAgICAgIHJldHVybiB2ODo6SGFuZGxl
PHY4OjpWYWx1ZT4oKTsKKyAgICAgICAgcmV0dXJuIHY4VW5kZWZpbmVkKCk7CiAKICAgICBSZWZQ
dHI8SFRNTENvbGxlY3Rpb24+IGl0ZW1zID0gaHRtbERvY3VtZW50LT5kb2N1bWVudE5hbWVkSXRl
bXMoa2V5KTsKICAgICBpZiAoaXRlbXMtPmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIHY4OjpI
YW5kbGU8djg6OlZhbHVlPigpOworICAgICAgICByZXR1cm4gdjhVbmRlZmluZWQoKTsKIAogICAg
IGlmIChpdGVtcy0+aGFzRXhhY3RseU9uZUl0ZW0oKSkgewogICAgICAgICBOb2RlKiBub2RlID0g
aXRlbXMtPml0ZW0oMCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9j
dXN0b20vVjhIVE1MRm9ybUVsZW1lbnRDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvdjgvY3VzdG9tL1Y4SFRNTEZvcm1FbGVtZW50Q3VzdG9tLmNwcAppbmRleCAxYzk1NjNkMGQw
YzU4YzBmNTkwMjkyNjFjNWY0ZWM1MmQzYjczOGEzLi5iZWMwMjBkOTVmODRjNDlhNjc5ZWY3M2Y2
OGQ5YmU0ODk1YTk1ZWRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9j
dXN0b20vVjhIVE1MRm9ybUVsZW1lbnRDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxGb3JtRWxlbWVudEN1c3RvbS5jcHAKQEAgLTQ4LDcgKzQ4
LDcgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4SFRNTEZvcm1FbGVtZW50OjppbmRleGVkUHJv
cGVydHlHZXR0ZXIodWludDMyX3QgaW5kZXgsIGMKIAogICAgIFJlZlB0cjxOb2RlPiBmb3JtRWxl
bWVudCA9IGZvcm0tPmVsZW1lbnRzKCktPml0ZW0oaW5kZXgpOwogICAgIGlmICghZm9ybUVsZW1l
bnQpCi0gICAgICAgIHJldHVybiB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4oKTsKKyAgICAgICAgcmV0
dXJuIHY4VW5kZWZpbmVkKCk7CiAgICAgcmV0dXJuIHRvVjgoZm9ybUVsZW1lbnQucmVsZWFzZSgp
LCBpbmZvLkdldElzb2xhdGUoKSk7CiB9CiAKQEAgLTY1LDcgKzY1LDcgQEAgdjg6OkhhbmRsZTx2
ODo6VmFsdWU+IFY4SFRNTEZvcm1FbGVtZW50OjpuYW1lZFByb3BlcnR5R2V0dGVyKHY4OjpMb2Nh
bDx2ODo6U3RyaW4KICAgICAgICAgVmVjdG9yPFJlZlB0cjxOb2RlPiA+IGVsZW1lbnRzOwogICAg
ICAgICBpbXAtPmdldE5hbWVkRWxlbWVudHModiwgZWxlbWVudHMpOwogICAgICAgICBpZiAoZWxl
bWVudHMuaXNFbXB0eSgpKQotICAgICAgICAgICAgcmV0dXJuIHY4OjpIYW5kbGU8djg6OlZhbHVl
PigpOworICAgICAgICAgICAgcmV0dXJuIHY4VW5kZWZpbmVkKCk7CiAgICAgfQogCiAgICAgLy8g
U2Vjb25kIGNhbGwgbWF5IHJldHVybiBkaWZmZXJlbnQgcmVzdWx0cyBmcm9tIHRoZSBmaXJzdCBj
YWxsLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRN
TEZyYW1lU2V0RWxlbWVudEN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9j
dXN0b20vVjhIVE1MRnJhbWVTZXRFbGVtZW50Q3VzdG9tLmNwcAppbmRleCA5NzU3NGNlYWIzY2Y2
NDA4ZGNhYjhiNzQ4MzY5MjlkOTU5ODBlNTZhLi41MTllMDE1Zjc4MTRiM2NkMWUxMDFiY2MyMWJl
NGI0ZmQzNjI0ZjQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0
b20vVjhIVE1MRnJhbWVTZXRFbGVtZW50Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy92OC9jdXN0b20vVjhIVE1MRnJhbWVTZXRFbGVtZW50Q3VzdG9tLmNwcApAQCAtNTcs
NyArNTcsNyBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhIVE1MRnJhbWVTZXRFbGVtZW50Ojpu
YW1lZFByb3BlcnR5R2V0dGVyKHY4OjpMb2NhbDx2ODo6UwogICAgICAgICBpZiAoRnJhbWUqIGZy
YW1lID0gZG9jLT5mcmFtZSgpKQogICAgICAgICAgICAgcmV0dXJuIHRvVjgoZnJhbWUtPmRvbVdp
bmRvdygpLCBpbmZvLkdldElzb2xhdGUoKSk7CiAgICAgfQotICAgIHJldHVybiB2ODo6SGFuZGxl
PHY4OjpWYWx1ZT4oKTsKKyAgICByZXR1cm4gdjhVbmRlZmluZWQoKTsKIH0KIAogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3Vz
dG9tL1Y4SFRNTE9wdGlvbnNDb2xsZWN0aW9uQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxPcHRpb25zQ29sbGVjdGlvbkN1c3RvbS5jcHAKaW5kZXgg
NjFlZmE0NGYyZTVlMDM4MjMxY2E1ZWI3ZjU4ZmU0NGRkZjZkNGIzOS4uOTAzMGI1MTJkN2QxNjMz
NDVkYTNiM2ExNDcxMGI4ZWEyZmNhYzRjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTE9wdGlvbnNDb2xsZWN0aW9uQ3VzdG9tLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhIVE1MT3B0aW9uc0NvbGxlY3Rpb25D
dXN0b20uY3BwCkBAIC0xMTksNyArMTE5LDcgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4SFRN
TE9wdGlvbnNDb2xsZWN0aW9uOjppbmRleGVkUHJvcGVydHlHZXR0ZXIodWludDMyX3QgaW4KIAog
ICAgIFJlZlB0cjxOb2RlPiByZXN1bHQgPSBjb2xsZWN0aW9uLT5pdGVtKGluZGV4KTsKICAgICBp
ZiAoIXJlc3VsdCkKLSAgICAgICAgcmV0dXJuIHY4OjpIYW5kbGU8djg6OlZhbHVlPigpOworICAg
ICAgICByZXR1cm4gdjhVbmRlZmluZWQoKTsKIAogICAgIHJldHVybiB0b1Y4KHJlc3VsdC5yZWxl
YXNlKCksIGluZm8uR2V0SXNvbGF0ZSgpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxQbHVnSW5FbGVtZW50Q3VzdG9tLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxQbHVnSW5FbGVtZW50Q3VzdG9tLmNw
cAppbmRleCA0YjE0ZjIwN2UwN2FiMmQ3MThhYTk4NjdmNTQ4NWQ1MTg3MWIyNjU5Li40MDY2MzI1
NzRkZTE4MTE1OWQ1Njk5ZWQwZDRlNjg3ZWJiMzljZWViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhIVE1MUGx1Z0luRWxlbWVudEN1c3RvbS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTFBsdWdJbkVsZW1lbnRD
dXN0b20uY3BwCkBAIC01MCwxMSArNTAsMTEgQEAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVl
PiBucE9iamVjdE5hbWVkR2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCBjb24KICAg
ICBIVE1MUGx1Z0luRWxlbWVudCogaW1wID0gQzo6dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSk7CiAg
ICAgU2NyaXB0SW5zdGFuY2Ugc2NyaXB0SW5zdGFuY2UgPSBpbXAtPmdldEluc3RhbmNlKCk7CiAg
ICAgaWYgKCFzY3JpcHRJbnN0YW5jZSkKLSAgICAgICAgcmV0dXJuIHY4OjpIYW5kbGU8djg6OlZh
bHVlPigpOworICAgICAgICByZXR1cm4gdjhVbmRlZmluZWQoKTsKIAogICAgIHY4OjpMb2NhbDx2
ODo6T2JqZWN0PiBpbnN0YW5jZSA9IHY4OjpMb2NhbDx2ODo6T2JqZWN0Pjo6TmV3KHNjcmlwdElu
c3RhbmNlLT5pbnN0YW5jZSgpKTsKICAgICBpZiAoaW5zdGFuY2UuSXNFbXB0eSgpKQotICAgICAg
ICByZXR1cm4gdjg6OkhhbmRsZTx2ODo6VmFsdWU+KCk7CisgICAgICAgIHJldHVybiB2OFVuZGVm
aW5lZCgpOwogCiAgICAgcmV0dXJuIG5wT2JqZWN0R2V0TmFtZWRQcm9wZXJ0eShpbnN0YW5jZSwg
bmFtZSwgaW5mbyk7CiB9CkBAIC02NSwxMSArNjUsMTEgQEAgc3RhdGljIHY4OjpIYW5kbGU8djg6
OlZhbHVlPiBucE9iamVjdE5hbWVkU2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCB2
ODoKICAgICBIVE1MUGx1Z0luRWxlbWVudCogaW1wID0gQzo6dG9OYXRpdmUoaW5mby5Ib2xkZXIo
KSk7CiAgICAgU2NyaXB0SW5zdGFuY2Ugc2NyaXB0SW5zdGFuY2UgPSBpbXAtPmdldEluc3RhbmNl
KCk7CiAgICAgaWYgKCFzY3JpcHRJbnN0YW5jZSkKLSAgICAgICAgcmV0dXJuIHY4OjpIYW5kbGU8
djg6OlZhbHVlPigpOworICAgICAgICByZXR1cm4gdjhVbmRlZmluZWQoKTsKIAogICAgIHY4OjpM
b2NhbDx2ODo6T2JqZWN0PiBpbnN0YW5jZSA9IHY4OjpMb2NhbDx2ODo6T2JqZWN0Pjo6TmV3KHNj
cmlwdEluc3RhbmNlLT5pbnN0YW5jZSgpKTsKICAgICBpZiAoaW5zdGFuY2UuSXNFbXB0eSgpKQot
ICAgICAgICByZXR1cm4gdjg6OkhhbmRsZTx2ODo6VmFsdWU+KCk7CisgICAgICAgIHJldHVybiB2
OFVuZGVmaW5lZCgpOwogCiAgICAgcmV0dXJuIG5wT2JqZWN0U2V0TmFtZWRQcm9wZXJ0eShpbnN0
YW5jZSwgbmFtZSwgdmFsdWUsIGluZm8pOwogfQpAQCAtMTM1LDExICsxMzUsMTEgQEAgdjg6Okhh
bmRsZTx2ODo6VmFsdWU+IG5wT2JqZWN0SW5kZXhlZEdldHRlcih1aW50MzJfdCBpbmRleCwgY29u
c3Qgdjg6OkFjY2Vzc29ySW4KICAgICBIVE1MUGx1Z0luRWxlbWVudCogaW1wID0gQzo6dG9OYXRp
dmUoaW5mby5Ib2xkZXIoKSk7CiAgICAgU2NyaXB0SW5zdGFuY2Ugc2NyaXB0SW5zdGFuY2UgPSBp
bXAtPmdldEluc3RhbmNlKCk7CiAgICAgaWYgKCFzY3JpcHRJbnN0YW5jZSkKLSAgICAgICAgcmV0
dXJuIHY4OjpIYW5kbGU8djg6OlZhbHVlPigpOworICAgICAgICByZXR1cm4gdjhVbmRlZmluZWQo
KTsKIAogICAgIHY4OjpMb2NhbDx2ODo6T2JqZWN0PiBpbnN0YW5jZSA9IHY4OjpMb2NhbDx2ODo6
T2JqZWN0Pjo6TmV3KHNjcmlwdEluc3RhbmNlLT5pbnN0YW5jZSgpKTsKICAgICBpZiAoaW5zdGFu
Y2UuSXNFbXB0eSgpKQotICAgICAgICByZXR1cm4gdjg6OkhhbmRsZTx2ODo6VmFsdWU+KCk7Cisg
ICAgICAgIHJldHVybiB2OFVuZGVmaW5lZCgpOwogCiAgICAgcmV0dXJuIG5wT2JqZWN0R2V0SW5k
ZXhlZFByb3BlcnR5KGluc3RhbmNlLCBpbmRleCwgaW5mbyk7CiB9CkBAIC0xNTEsMTEgKzE1MSwx
MSBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gbnBPYmplY3RJbmRleGVkU2V0dGVyKHVpbnQzMl90
IGluZGV4LCB2ODo6TG9jYWw8djg6OlZhbHVlPgogICAgIEhUTUxQbHVnSW5FbGVtZW50KiBpbXAg
PSBDOjp0b05hdGl2ZShpbmZvLkhvbGRlcigpKTsKICAgICBTY3JpcHRJbnN0YW5jZSBzY3JpcHRJ
bnN0YW5jZSA9IGltcC0+Z2V0SW5zdGFuY2UoKTsKICAgICBpZiAoIXNjcmlwdEluc3RhbmNlKQot
ICAgICAgICByZXR1cm4gdjg6OkhhbmRsZTx2ODo6VmFsdWU+KCk7CisgICAgICAgIHJldHVybiB2
OFVuZGVmaW5lZCgpOwogCiAgICAgdjg6OkxvY2FsPHY4OjpPYmplY3Q+IGluc3RhbmNlID0gdjg6
OkxvY2FsPHY4OjpPYmplY3Q+OjpOZXcoc2NyaXB0SW5zdGFuY2UtPmluc3RhbmNlKCkpOwogICAg
IGlmIChpbnN0YW5jZS5Jc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiB2ODo6SGFuZGxlPHY4OjpW
YWx1ZT4oKTsKKyAgICAgICAgcmV0dXJuIHY4VW5kZWZpbmVkKCk7CiAKICAgICByZXR1cm4gbnBP
YmplY3RTZXRJbmRleGVkUHJvcGVydHkoaW5zdGFuY2UsIGluZGV4LCB2YWx1ZSwgaW5mbyk7CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhIVE1MU2Vs
ZWN0RWxlbWVudEN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20v
VjhIVE1MU2VsZWN0RWxlbWVudEN1c3RvbS5jcHAKaW5kZXggMDE1YmUzYTBjNjIyMWIxNDY1ODY4
MzQ1MDg3NzJhMzAyOTU1YTAzMS4uNzE0NzNjNTZjZGU4Yjg5NjNhYWEzOGQzN2QwYzU5OTNkZGJm
Mjk3ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRN
TFNlbGVjdEVsZW1lbnRDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4
L2N1c3RvbS9WOEhUTUxTZWxlY3RFbGVtZW50Q3VzdG9tLmNwcApAQCAtNTEsNyArNTEsNyBAQCB2
ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhIVE1MU2VsZWN0RWxlbWVudDo6aW5kZXhlZFByb3BlcnR5
R2V0dGVyKHVpbnQzMl90IGluZGV4LAogICAgIEFTU0VSVChWOERPTVdyYXBwZXI6Om1heWJlRE9N
V3JhcHBlcihpbmZvLkhvbGRlcigpKSk7CiAgICAgUmVmUHRyPE5vZGU+IHJlc3VsdCA9IFY4SFRN
TFNlbGVjdEVsZW1lbnQ6OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkpLT5pdGVtKGluZGV4KTsKICAg
ICBpZiAoIXJlc3VsdCkKLSAgICAgICAgcmV0dXJuIHY4OjpIYW5kbGU8djg6OlZhbHVlPigpOwor
ICAgICAgICByZXR1cm4gdjhVbmRlZmluZWQoKTsKIAogICAgIHJldHVybiB0b1Y4KHJlc3VsdC5y
ZWxlYXNlKCksIGluZm8uR2V0SXNvbGF0ZSgpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOExvY2F0aW9uQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOExvY2F0aW9uQ3VzdG9tLmNwcAppbmRleCBjZTY4OTg1
NzQ0NTU0MDMyMTA3Y2VjMTQ5NDBjNDNmNzUwOGIxYmZjLi44ODgzMjJlYzBhMmU5MTk1NWZhMGU2
MTk0YWY0ZDY1MzljZDYyNDg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92
OC9jdXN0b20vVjhMb2NhdGlvbkN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvdjgvY3VzdG9tL1Y4TG9jYXRpb25DdXN0b20uY3BwCkBAIC0xNDgsNyArMTQ4LDcgQEAgdm9p
ZCBWOExvY2F0aW9uOjpzZWFyY2hBY2Nlc3NvclNldHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4g
bmFtZSwgdjg6OkxvY2FsPHY4OjoKIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOExvY2F0aW9uOjpy
ZWxvYWRBY2Nlc3NvckdldHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgY29uc3Qgdjg6
OkFjY2Vzc29ySW5mbyYgaW5mbykKIHsKICAgICBJTkNfU1RBVFMoIkRPTS5Mb2NhdGlvbi5yZWxv
YWQuX2dldCIpOwotICAgIHN0YXRpYyB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0
ZT4gcHJpdmF0ZVRlbXBsYXRlID0gdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+
OjpOZXcodjg6OkZ1bmN0aW9uVGVtcGxhdGU6Ok5ldyhWOExvY2F0aW9uOjpyZWxvYWRDYWxsYmFj
aywgdjg6OkhhbmRsZTx2ODo6VmFsdWU+KCksIHY4OjpTaWduYXR1cmU6Ok5ldyhWOExvY2F0aW9u
OjpHZXRSYXdUZW1wbGF0ZSgpKSkpOworICAgIHN0YXRpYyB2ODo6UGVyc2lzdGVudDx2ODo6RnVu
Y3Rpb25UZW1wbGF0ZT4gcHJpdmF0ZVRlbXBsYXRlID0gdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0
aW9uVGVtcGxhdGU+OjpOZXcodjg6OkZ1bmN0aW9uVGVtcGxhdGU6Ok5ldyhWOExvY2F0aW9uOjpy
ZWxvYWRDYWxsYmFjaywgdjhVbmRlZmluZWQoKSwgdjg6OlNpZ25hdHVyZTo6TmV3KFY4TG9jYXRp
b246OkdldFJhd1RlbXBsYXRlKCkpKSk7CiAgICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBob2xk
ZXIgPSBWOERPTVdyYXBwZXI6Omxvb2t1cERPTVdyYXBwZXIoVjhMb2NhdGlvbjo6R2V0VGVtcGxh
dGUoKSwgaW5mby5UaGlzKCkpOwogICAgIGlmIChob2xkZXIuSXNFbXB0eSgpKSB7CiAgICAgICAg
IC8vIGNhbiBvbmx5IHJlYWNoIGhlcmUgYnkgJ29iamVjdC5fX3Byb3RvX18uZnVuYycsIGFuZCBp
dCBzaG91bGQgcGFzc2VkCkBAIC0xNTcsNyArMTU3LDcgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+
IFY4TG9jYXRpb246OnJlbG9hZEFjY2Vzc29yR2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBu
YW0KICAgICB9CiAgICAgTG9jYXRpb24qIGltcCA9IFY4TG9jYXRpb246OnRvTmF0aXZlKGhvbGRl
cik7CiAgICAgaWYgKCFCaW5kaW5nU2VjdXJpdHk6OnNob3VsZEFsbG93QWNjZXNzVG9GcmFtZShC
aW5kaW5nU3RhdGU6Omluc3RhbmNlKCksIGltcC0+ZnJhbWUoKSwgRG9Ob3RSZXBvcnRTZWN1cml0
eUVycm9yKSkgewotICAgICAgICBzdGF0aWMgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVt
cGxhdGU+IHNoYXJlZFRlbXBsYXRlID0gdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxh
dGU+OjpOZXcodjg6OkZ1bmN0aW9uVGVtcGxhdGU6Ok5ldyhWOExvY2F0aW9uOjpyZWxvYWRDYWxs
YmFjaywgdjg6OkhhbmRsZTx2ODo6VmFsdWU+KCksIHY4OjpTaWduYXR1cmU6Ok5ldyhWOExvY2F0
aW9uOjpHZXRSYXdUZW1wbGF0ZSgpKSkpOworICAgICAgICBzdGF0aWMgdjg6OlBlcnNpc3RlbnQ8
djg6OkZ1bmN0aW9uVGVtcGxhdGU+IHNoYXJlZFRlbXBsYXRlID0gdjg6OlBlcnNpc3RlbnQ8djg6
OkZ1bmN0aW9uVGVtcGxhdGU+OjpOZXcodjg6OkZ1bmN0aW9uVGVtcGxhdGU6Ok5ldyhWOExvY2F0
aW9uOjpyZWxvYWRDYWxsYmFjaywgdjhVbmRlZmluZWQoKSwgdjg6OlNpZ25hdHVyZTo6TmV3KFY4
TG9jYXRpb246OkdldFJhd1RlbXBsYXRlKCkpKSk7CiAgICAgICAgIHJldHVybiBzaGFyZWRUZW1w
bGF0ZS0+R2V0RnVuY3Rpb24oKTsKICAgICB9CiAgICAgcmV0dXJuIHByaXZhdGVUZW1wbGF0ZS0+
R2V0RnVuY3Rpb24oKTsKQEAgLTE2Niw3ICsxNjYsNyBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4g
VjhMb2NhdGlvbjo6cmVsb2FkQWNjZXNzb3JHZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5h
bQogdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4TG9jYXRpb246OnJlcGxhY2VBY2Nlc3NvckdldHRl
cih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5m
bykKIHsKICAgICBJTkNfU1RBVFMoIkRPTS5Mb2NhdGlvbi5yZXBsYWNlLl9nZXQiKTsKLSAgICBz
dGF0aWMgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IHByaXZhdGVUZW1wbGF0
ZSA9IHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPjo6TmV3KHY4OjpGdW5jdGlv
blRlbXBsYXRlOjpOZXcoVjhMb2NhdGlvbjo6cmVwbGFjZUNhbGxiYWNrLCB2ODo6SGFuZGxlPHY4
OjpWYWx1ZT4oKSwgdjg6OlNpZ25hdHVyZTo6TmV3KFY4TG9jYXRpb246OkdldFJhd1RlbXBsYXRl
KCkpKSk7CisgICAgc3RhdGljIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBw
cml2YXRlVGVtcGxhdGUgPSB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT46Ok5l
dyh2ODo6RnVuY3Rpb25UZW1wbGF0ZTo6TmV3KFY4TG9jYXRpb246OnJlcGxhY2VDYWxsYmFjaywg
djhVbmRlZmluZWQoKSwgdjg6OlNpZ25hdHVyZTo6TmV3KFY4TG9jYXRpb246OkdldFJhd1RlbXBs
YXRlKCkpKSk7CiAgICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBob2xkZXIgPSBWOERPTVdyYXBw
ZXI6Omxvb2t1cERPTVdyYXBwZXIoVjhMb2NhdGlvbjo6R2V0VGVtcGxhdGUoKSwgaW5mby5UaGlz
KCkpOwogICAgIGlmIChob2xkZXIuSXNFbXB0eSgpKSB7CiAgICAgICAgIC8vIGNhbiBvbmx5IHJl
YWNoIGhlcmUgYnkgJ29iamVjdC5fX3Byb3RvX18uZnVuYycsIGFuZCBpdCBzaG91bGQgcGFzc2Vk
CkBAIC0xNzQsOCArMTc0LDEzIEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOExvY2F0aW9uOjpy
ZXBsYWNlQWNjZXNzb3JHZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hCiAgICAgICAgIHJl
dHVybiBwcml2YXRlVGVtcGxhdGUtPkdldEZ1bmN0aW9uKCk7CiAgICAgfQogICAgIExvY2F0aW9u
KiBpbXAgPSBWOExvY2F0aW9uOjp0b05hdGl2ZShob2xkZXIpOworPDw8PDw8PCBIRUFECiAgICAg
aWYgKCFCaW5kaW5nU2VjdXJpdHk6OnNob3VsZEFsbG93QWNjZXNzVG9GcmFtZShCaW5kaW5nU3Rh
dGU6Omluc3RhbmNlKCksIGltcC0+ZnJhbWUoKSwgRG9Ob3RSZXBvcnRTZWN1cml0eUVycm9yKSkg
ewogICAgICAgICBzdGF0aWMgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IHNo
YXJlZFRlbXBsYXRlID0gdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+OjpOZXco
djg6OkZ1bmN0aW9uVGVtcGxhdGU6Ok5ldyhWOExvY2F0aW9uOjpyZXBsYWNlQ2FsbGJhY2ssIHY4
OjpIYW5kbGU8djg6OlZhbHVlPigpLCB2ODo6U2lnbmF0dXJlOjpOZXcoVjhMb2NhdGlvbjo6R2V0
UmF3VGVtcGxhdGUoKSkpKTsKKz09PT09PT0KKyAgICBpZiAoIUJpbmRpbmdTZWN1cml0eTo6Y2Fu
QWNjZXNzRnJhbWUoQmluZGluZ1N0YXRlOjppbnN0YW5jZSgpLCBpbXAtPmZyYW1lKCksIGZhbHNl
KSkgeworICAgICAgICBzdGF0aWMgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+
IHNoYXJlZFRlbXBsYXRlID0gdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+OjpO
ZXcodjg6OkZ1bmN0aW9uVGVtcGxhdGU6Ok5ldyhWOExvY2F0aW9uOjpyZXBsYWNlQ2FsbGJhY2ss
IHY4VW5kZWZpbmVkKCksIHY4OjpTaWduYXR1cmU6Ok5ldyhWOExvY2F0aW9uOjpHZXRSYXdUZW1w
bGF0ZSgpKSkpOworPj4+Pj4+PiB0ZW1wCiAgICAgICAgIHJldHVybiBzaGFyZWRUZW1wbGF0ZS0+
R2V0RnVuY3Rpb24oKTsKICAgICB9CiAgICAgcmV0dXJuIHByaXZhdGVUZW1wbGF0ZS0+R2V0RnVu
Y3Rpb24oKTsKQEAgLTE4NSw3ICsxOTAsNyBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhMb2Nh
dGlvbjo6YXNzaWduQWNjZXNzb3JHZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbQogewog
ICAgIElOQ19TVEFUUygiRE9NLkxvY2F0aW9uLmFzc2lnbi5fZ2V0Iik7CiAgICAgc3RhdGljIHY4
OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBwcml2YXRlVGVtcGxhdGUgPQotICAg
ICAgICB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT46Ok5ldyh2ODo6RnVuY3Rp
b25UZW1wbGF0ZTo6TmV3KFY4TG9jYXRpb246OmFzc2lnbkNhbGxiYWNrLCB2ODo6SGFuZGxlPHY4
OjpWYWx1ZT4oKSwgdjg6OlNpZ25hdHVyZTo6TmV3KFY4TG9jYXRpb246OkdldFJhd1RlbXBsYXRl
KCkpKSk7CisgICAgICAgIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPjo6TmV3
KHY4OjpGdW5jdGlvblRlbXBsYXRlOjpOZXcoVjhMb2NhdGlvbjo6YXNzaWduQ2FsbGJhY2ssIHY4
VW5kZWZpbmVkKCksIHY4OjpTaWduYXR1cmU6Ok5ldyhWOExvY2F0aW9uOjpHZXRSYXdUZW1wbGF0
ZSgpKSkpOwogICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gaG9sZGVyID0gVjhET01XcmFwcGVy
Ojpsb29rdXBET01XcmFwcGVyKFY4TG9jYXRpb246OkdldFRlbXBsYXRlKCksIGluZm8uVGhpcygp
KTsKICAgICBpZiAoaG9sZGVyLklzRW1wdHkoKSkgewogICAgICAgICAvLyBjYW4gb25seSByZWFj
aCBoZXJlIGJ5ICdvYmplY3QuX19wcm90b19fLmZ1bmMnLCBhbmQgaXQgc2hvdWxkIHBhc3NlZApA
QCAtMTkzLDggKzE5OCwxMyBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhMb2NhdGlvbjo6YXNz
aWduQWNjZXNzb3JHZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbQogICAgICAgICByZXR1
cm4gcHJpdmF0ZVRlbXBsYXRlLT5HZXRGdW5jdGlvbigpOwogICAgIH0KICAgICBMb2NhdGlvbiog
aW1wID0gVjhMb2NhdGlvbjo6dG9OYXRpdmUoaG9sZGVyKTsKKzw8PDw8PDwgSEVBRAogICAgIGlm
ICghQmluZGluZ1NlY3VyaXR5OjpzaG91bGRBbGxvd0FjY2Vzc1RvRnJhbWUoQmluZGluZ1N0YXRl
OjppbnN0YW5jZSgpLCBpbXAtPmZyYW1lKCksIERvTm90UmVwb3J0U2VjdXJpdHlFcnJvcikpIHsK
ICAgICAgICAgc3RhdGljIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBzaGFy
ZWRUZW1wbGF0ZSA9IHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPjo6TmV3KHY4
OjpGdW5jdGlvblRlbXBsYXRlOjpOZXcoVjhMb2NhdGlvbjo6YXNzaWduQ2FsbGJhY2ssIHY4OjpI
YW5kbGU8djg6OlZhbHVlPigpLCB2ODo6U2lnbmF0dXJlOjpOZXcoVjhMb2NhdGlvbjo6R2V0UmF3
VGVtcGxhdGUoKSkpKTsKKz09PT09PT0KKyAgICBpZiAoIUJpbmRpbmdTZWN1cml0eTo6Y2FuQWNj
ZXNzRnJhbWUoQmluZGluZ1N0YXRlOjppbnN0YW5jZSgpLCBpbXAtPmZyYW1lKCksIGZhbHNlKSkg
eworICAgICAgICBzdGF0aWMgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IHNo
YXJlZFRlbXBsYXRlID0gdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+OjpOZXco
djg6OkZ1bmN0aW9uVGVtcGxhdGU6Ok5ldyhWOExvY2F0aW9uOjphc3NpZ25DYWxsYmFjaywgdjhV
bmRlZmluZWQoKSwgdjg6OlNpZ25hdHVyZTo6TmV3KFY4TG9jYXRpb246OkdldFJhd1RlbXBsYXRl
KCkpKSk7Cis+Pj4+Pj4+IHRlbXAKICAgICAgICAgcmV0dXJuIHNoYXJlZFRlbXBsYXRlLT5HZXRG
dW5jdGlvbigpOwogICAgIH0KICAgICByZXR1cm4gcHJpdmF0ZVRlbXBsYXRlLT5HZXRGdW5jdGlv
bigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4TmFt
ZWROb2RlTWFwQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9W
OE5hbWVkTm9kZU1hcEN1c3RvbS5jcHAKaW5kZXggNzE1MDkyZmFlYzQ5ZGI5MTU1NWQ1MWNmZWJj
ZmY3YTRhNWIxNjk2ZC4uNmJkMmEwNWIxOWFlOTI4YjhjODQzYmYwNzlhZjY2ZDE2OWI5MjEzOSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4TmFtZWROb2Rl
TWFwQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhO
YW1lZE5vZGVNYXBDdXN0b20uY3BwCkBAIC00OSw3ICs0OSw3IEBAIHY4OjpIYW5kbGU8djg6OlZh
bHVlPiBWOE5hbWVkTm9kZU1hcDo6aW5kZXhlZFByb3BlcnR5R2V0dGVyKHVpbnQzMl90IGluZGV4
LCBjb25zCiAgICAgTmFtZWROb2RlTWFwKiBpbXAgPSBWOE5hbWVkTm9kZU1hcDo6dG9OYXRpdmUo
aW5mby5Ib2xkZXIoKSk7CiAgICAgUmVmUHRyPE5vZGU+IHJlc3VsdCA9IGltcC0+aXRlbShpbmRl
eCk7CiAgICAgaWYgKCFyZXN1bHQpCi0gICAgICAgIHJldHVybiB2ODo6SGFuZGxlPHY4OjpWYWx1
ZT4oKTsKKyAgICAgICAgcmV0dXJuIHY4VW5kZWZpbmVkKCk7CiAKICAgICByZXR1cm4gdG9WOChy
ZXN1bHQucmVsZWFzZSgpLCBpbmZvLkdldElzb2xhdGUoKSk7CiB9CkBAIC01OSwxNCArNTksMTQg
QEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4TmFtZWROb2RlTWFwOjpuYW1lZFByb3BlcnR5R2V0
dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPgogICAgIElOQ19TVEFUUygiRE9NLk5hbWVkTm9kZU1h
cC5OYW1lZFByb3BlcnR5R2V0dGVyIik7CiAKICAgICBpZiAoIWluZm8uSG9sZGVyKCktPkdldFJl
YWxOYW1lZFByb3BlcnR5SW5Qcm90b3R5cGVDaGFpbihuYW1lKS5Jc0VtcHR5KCkpCi0gICAgICAg
IHJldHVybiB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4oKTsKKyAgICAgICAgcmV0dXJuIHY4VW5kZWZp
bmVkKCk7CiAgICAgaWYgKGluZm8uSG9sZGVyKCktPkhhc1JlYWxOYW1lZENhbGxiYWNrUHJvcGVy
dHkobmFtZSkpCi0gICAgICAgIHJldHVybiB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4oKTsKKyAgICAg
ICAgcmV0dXJuIHY4VW5kZWZpbmVkKCk7CiAKICAgICBOYW1lZE5vZGVNYXAqIGltcCA9IFY4TmFt
ZWROb2RlTWFwOjp0b05hdGl2ZShpbmZvLkhvbGRlcigpKTsKICAgICBSZWZQdHI8Tm9kZT4gcmVz
dWx0ID0gaW1wLT5nZXROYW1lZEl0ZW0odG9XZWJDb3JlU3RyaW5nKG5hbWUpKTsKICAgICBpZiAo
IXJlc3VsdCkKLSAgICAgICAgcmV0dXJuIHY4OjpIYW5kbGU8djg6OlZhbHVlPigpOworICAgICAg
ICByZXR1cm4gdjhVbmRlZmluZWQoKTsKIAogICAgIHJldHVybiB0b1Y4KHJlc3VsdC5yZWxlYXNl
KCksIGluZm8uR2V0SXNvbGF0ZSgpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3Y4L2N1c3RvbS9WOE5vZGVMaXN0Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3Y4L2N1c3RvbS9WOE5vZGVMaXN0Q3VzdG9tLmNwcAppbmRleCA5ZTFiZTlhZGVhYzkx
NzAzZGIwYjU4NjE0YTRjZmEzMWZiYmVmNTM2Li42ODFmZTQ5ZDFlYjFlODU4NDg2NTk2ZTU5Yzhk
MzY3MDFlMzZiY2RjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0
b20vVjhOb2RlTGlzdEN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvdjgv
Y3VzdG9tL1Y4Tm9kZUxpc3RDdXN0b20uY3BwCkBAIC01NSw3ICs1NSw3IEBAIHY4OjpIYW5kbGU8
djg6OlZhbHVlPiBWOE5vZGVMaXN0OjpuYW1lZFByb3BlcnR5R2V0dGVyKHY4OjpMb2NhbDx2ODo6
U3RyaW5nPiBuYW1lCiAKICAgICBSZWZQdHI8Tm9kZT4gcmVzdWx0ID0gbGlzdC0+aXRlbVdpdGhO
YW1lKGtleSk7CiAgICAgaWYgKCFyZXN1bHQpCi0gICAgICAgIHJldHVybiB2ODo6SGFuZGxlPHY4
OjpWYWx1ZT4oKTsKKyAgICAgICAgcmV0dXJuIHY4VW5kZWZpbmVkKCk7CiAKICAgICByZXR1cm4g
dG9WOChyZXN1bHQucmVsZWFzZSgpLCBpbmZvLkdldElzb2xhdGUoKSk7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhTVkdMZW5ndGhDdXN0b20uY3Bw
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4U1ZHTGVuZ3RoQ3VzdG9tLmNw
cAppbmRleCAzN2FkMjdiN2QwMDdjOTg5Yzg0MTY5OWMwMDYxMjQwODEzOTQ0MWNhLi5hOGFhMGEy
MmVkODI2NzNmNGUwMzI0NWZkZGU2OGFkOTQyY2VlOWEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhTVkdMZW5ndGhDdXN0b20uY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFNWR0xlbmd0aEN1c3RvbS5jcHAKQEAgLTk2
LDcgKzk2LDcgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4U1ZHTGVuZ3RoOjpjb252ZXJ0VG9T
cGVjaWZpZWRVbml0c0NhbGxiYWNrKGNvbnN0IHY4OjpBcmcKICAgICAgICAgcmV0dXJuIFY4UHJv
eHk6OnNldERPTUV4Y2VwdGlvbihlYywgYXJncy5HZXRJc29sYXRlKCkpOwogCiAgICAgd3JhcHBl
ci0+Y29tbWl0Q2hhbmdlKCk7Ci0gICAgcmV0dXJuIHY4OjpIYW5kbGU8djg6OlZhbHVlPigpOwor
ICAgIHJldHVybiB2OFVuZGVmaW5lZCgpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhTdG9yYWdlQ3Vz
dG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFN0b3JhZ2VDdXN0
b20uY3BwCmluZGV4IDg5Mzk2YTMwY2YxOWVlNzYyOGMxNTZhNmFkMDBlODZmMzMwNmQyMjUuLjI2
NTk5MmI3ZWE2NWNlNGNkOWY3MDU4ZGE0NmU5MDk5ODA3YTdmOWEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFN0b3JhZ2VDdXN0b20uY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFN0b3JhZ2VDdXN0b20uY3BwCkBAIC02
MSw3ICs2MSw3IEBAIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gc3RvcmFnZUdldHRlcih2
ODo6TG9jYWw8djg6OlN0cmluZz4gdjhOYW1lLCBjb25zdCB2CiAgICAgaWYgKG5hbWUgIT0gImxl
bmd0aCIgJiYgc3RvcmFnZS0+Y29udGFpbnMobmFtZSkpCiAgICAgICAgIHJldHVybiB2OFN0cmlu
ZyhzdG9yYWdlLT5nZXRJdGVtKG5hbWUpLCBpbmZvLkdldElzb2xhdGUoKSk7CiAKLSAgICByZXR1
cm4gdjg6OkhhbmRsZTx2ODo6VmFsdWU+KCk7CisgICAgcmV0dXJuIHY4VW5kZWZpbmVkKCk7CiB9
CiAKIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOFN0b3JhZ2U6OmluZGV4ZWRQcm9wZXJ0eUdldHRl
cih1aW50MzJfdCBpbmRleCwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKQEAgLTc1LDcg
Kzc1LDcgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4U3RvcmFnZTo6bmFtZWRQcm9wZXJ0eUdl
dHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwKIHsKICAgICBJTkNfU1RBVFMoIkRPTS5T
dG9yYWdlLk5hbWVkUHJvcGVydHlHZXR0ZXIiKTsKICAgICBpZiAoIWluZm8uSG9sZGVyKCktPkdl
dFJlYWxOYW1lZFByb3BlcnR5SW5Qcm90b3R5cGVDaGFpbihuYW1lKS5Jc0VtcHR5KCkpCi0gICAg
ICAgIHJldHVybiB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4oKTsKKyAgICAgICAgcmV0dXJuIHY4VW5k
ZWZpbmVkKCk7CiAgICAgcmV0dXJuIHN0b3JhZ2VHZXR0ZXIobmFtZSwgaW5mbyk7CiB9CiAKQEAg
LTEwMyw3ICsxMDMsNyBAQCBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHN0b3JhZ2VTZXR0
ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IHY4TmFtZSwgdjg6OkxvYwogICAgICAgICByZXR1cm4g
djhWYWx1ZTsKIAogICAgIGlmICghaW5mby5Ib2xkZXIoKS0+R2V0UmVhbE5hbWVkUHJvcGVydHlJ
blByb3RvdHlwZUNoYWluKHY4TmFtZSkuSXNFbXB0eSgpKQotICAgICAgICByZXR1cm4gdjg6Okhh
bmRsZTx2ODo6VmFsdWU+KCk7CisgICAgICAgIHJldHVybiB2OFVuZGVmaW5lZCgpOwogCiAgICAg
RXhjZXB0aW9uQ29kZSBlYyA9IDA7CiAgICAgc3RvcmFnZS0+c2V0SXRlbShuYW1lLCB2YWx1ZSwg
ZWMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4U3R5
bGVTaGVldExpc3RDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9t
L1Y4U3R5bGVTaGVldExpc3RDdXN0b20uY3BwCmluZGV4IDg3OTQ0OTA0M2RkYjU2MDc1MGE5OTU1
ZDUyMjQ0NDU4Yzg3Yzk3YmEuLmM0ZTgyYmIwODc4NjI3MWNkMzQzM2QwNTYxMTI3YzJiYjM4Mzg2
NzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFN0eWxl
U2hlZXRMaXN0Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0
b20vVjhTdHlsZVNoZWV0TGlzdEN1c3RvbS5jcHAKQEAgLTQ0LDEzICs0NCwxMyBAQCB2ODo6SGFu
ZGxlPHY4OjpWYWx1ZT4gVjhTdHlsZVNoZWV0TGlzdDo6bmFtZWRQcm9wZXJ0eUdldHRlcih2ODo6
TG9jYWw8djg6OlN0cmluZwogICAgIElOQ19TVEFUUygiRE9NLlN0eWxlU2hlZXRMaXN0Lk5hbWVk
UHJvcGVydHlHZXR0ZXIiKTsKIAogICAgIGlmIChpbmZvLkhvbGRlcigpLT5IYXNSZWFsTmFtZWRQ
cm9wZXJ0eShuYW1lKSkKLSAgICAgICAgcmV0dXJuIHY4OjpIYW5kbGU8djg6OlZhbHVlPigpOwor
ICAgICAgICByZXR1cm4gdjhVbmRlZmluZWQoKTsKIAogICAgIC8vIFNlYXJjaCBzdHlsZSBzaGVl
dC4KICAgICBTdHlsZVNoZWV0TGlzdCogaW1wID0gVjhTdHlsZVNoZWV0TGlzdDo6dG9OYXRpdmUo
aW5mby5Ib2xkZXIoKSk7CiAgICAgSFRNTFN0eWxlRWxlbWVudCogaXRlbSA9IGltcC0+Z2V0TmFt
ZWRJdGVtKHRvV2ViQ29yZVN0cmluZyhuYW1lKSk7CiAgICAgaWYgKCFpdGVtKQotICAgICAgICBy
ZXR1cm4gdjg6OkhhbmRsZTx2ODo6VmFsdWU+KCk7CisgICAgICAgIHJldHVybiB2OFVuZGVmaW5l
ZCgpOwogCiAgICAgcmV0dXJuIHRvVjgoaXRlbS0+c2hlZXQoKSwgaW5mby5HZXRJc29sYXRlKCkp
OwogfQo=
</data>
<flag name="commit-queue"
          id="166885"
          type_id="3"
          status="-"
          setter="haraken"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>157058</attachid>
            <date>2012-08-07 17:47:10 -0700</date>
            <delta_ts>2012-08-07 21:38:35 -0700</delta_ts>
            <desc>patch for landing</desc>
            <filename>bug-93211-20120808094644.patch</filename>
            <type>text/plain</type>
            <size>11471</size>
            <attacher name="Kentaro Hara">haraken</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI0OTQ2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTNmZGFmNzc0YzVmMmRm
ZjdkOTUwZTA3OTc2MTA3ZWRmZWE4MGU0Yy4uZDVlYWI4ZjAyZTY5ZThhZGFkNjg3MDBiMThiMGYz
ZTZhN2RjMDUzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM5IEBACisyMDEyLTA4LTA1ICBLZW50
YXJvIEhhcmEgIDxoYXJha2VuQGNocm9taXVtLm9yZz4KKworICAgICAgICBbVjhdIFJlcGxhY2Ug
djg6OkhhbmRsZTx2ODo6VmFsdWU+KCkgaW4gYmluZGluZ3MvdjgvKiB3aXRoIHY4VW5kZWZpbmVk
KCkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTkzMjEx
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRXJpYyBTZWlkZWwuCisKKyAgICAgICAgV2Ugc2hvdWxk
IHVzZSB2OFVuZGVmaW5lZCgpIGV2ZXJ5d2hlcmUgaW4gVjggYmluZGluZ3MuCisgICAgICAgIFJl
cGxhY2luZyB2ODo6TG9jYWw8djg6OlZhbHVlPigpIGV0YyB3aXRoIHY4VW5kZWZpbmVkKCkgY2Fu
IGNhdXNlIGJ1aWxkCisgICAgICAgIGVycm9ycyBkdWUgdG8gdHlwZSBjb252ZXJzaW9uIG1pc21h
dGNoLiBJJ2xsIGRvIHRoZSByZXBsYWNlbWVudCBpbiBmb2xsb3ctdXAKKyAgICAgICAgcGF0Y2hl
cy4KKworICAgICAgICBObyB0ZXN0cy4gTm8gY2hhbmdlIGluIGJlaGF2aW9yLgorCisgICAgICAg
ICogYmluZGluZ3MvdjgvSURCQmluZGluZ1V0aWxpdGllcy5jcHA6CisgICAgICAgIChXZWJDb3Jl
KToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9TY3JpcHREZWJ1Z1NlcnZlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpTY3JpcHREZWJ1Z1NlcnZlcjo6cGF1c2VPbkV4Y2VwdGlvbnNTdGF0ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpTY3JpcHREZWJ1Z1NlcnZlcjo6aGFuZGxlVjhEZWJ1Z0V2ZW50KToK
KyAgICAgICAgKiBiaW5kaW5ncy92OC9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwOgorICAgICAg
ICAqIGJpbmRpbmdzL3Y4L1Y4QmluZGluZy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpiYXRjaENv
bmZpZ3VyZUNhbGxiYWNrcyk6CisgICAgICAgICogYmluZGluZ3MvdjgvVjhDb2xsZWN0aW9uLmg6
CisgICAgICAgIChXZWJDb3JlOjpnZXRWOE9iamVjdCk6CisgICAgICAgIChXZWJDb3JlOjpjb2xs
ZWN0aW9uTmFtZWRQcm9wZXJ0eUdldHRlcik6CisgICAgICAgICogYmluZGluZ3MvdjgvVjhET01X
cmFwcGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlY4RE9NV3JhcHBlcjo6Y29udmVydEV2ZW50
VGFyZ2V0VG9WOE9iamVjdCk6CisgICAgICAgICogYmluZGluZ3MvdjgvVjhOUE9iamVjdC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpucE9iamVjdEdldFByb3BlcnR5KToKKyAgICAgICAgKFdlYkNv
cmU6Om5wT2JqZWN0U2V0UHJvcGVydHkpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1Y4UHJveHku
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6VjhQcm94eTo6c2V0RE9NRXhjZXB0aW9uKToKKyAgICAg
ICAgKFdlYkNvcmU6OlY4UHJveHk6OnRocm93RXJyb3IpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4
L1dvcmtlclNjcmlwdERlYnVnU2VydmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlclNj
cmlwdERlYnVnU2VydmVyOjphZGRMaXN0ZW5lcik6CisKIDIwMTItMDgtMDcgIFJ5dWFuIENob2kg
IDxyeXVhbi5jaG9pQHNhbXN1bmcuY29tPgogCiAgICAgICAgIFtFRkxdIFJlbW92ZSBQbGF0Zm9y
bVRvdWNoRXZlbnRFZmwgYW5kIFBsYXRmb3JtVG91Y2hQb2ludEVmbApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvSURCQmluZGluZ1V0aWxpdGllcy5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy92OC9JREJCaW5kaW5nVXRpbGl0aWVzLmNwcAppbmRleCAyMmY4MzE1
YjIwNDZjNjU0NzgxNWI5NDU2MGI0OGQ4ODU4NjNlMWY0Li5jYzFlYWZiMDRmNmU4OTgyMGUzMzk3
ZTJkODI3ZTkzZGM5ZmEyMmZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92
OC9JREJCaW5kaW5nVXRpbGl0aWVzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92
OC9JREJCaW5kaW5nVXRpbGl0aWVzLmNwcApAQCAtMTI2LDcgKzEyNiw3IEBAIHY4OjpIYW5kbGU8
djg6OlZhbHVlPiBnZXROdGhWYWx1ZU9uS2V5UGF0aCh2ODo6SGFuZGxlPHY4OjpWYWx1ZT4mIHJv
b3RWYWx1ZSwgY29uCiAgICAgQVNTRVJUKGluZGV4IDw9IGtleVBhdGhFbGVtZW50cy5zaXplKCkp
OwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgaW5kZXg7ICsraSkgewogICAgICAgICBpZiAo
IWdldChjdXJyZW50VmFsdWUsIGtleVBhdGhFbGVtZW50c1tpXSkpCi0gICAgICAgICAgICByZXR1
cm4gdjg6OkhhbmRsZTx2ODo6VmFsdWU+KCk7CisgICAgICAgICAgICByZXR1cm4gdjhVbmRlZmlu
ZWQoKTsKICAgICB9CiAKICAgICByZXR1cm4gY3VycmVudFZhbHVlOwpAQCAtMTQzLDcgKzE0Myw3
IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBlbnN1cmVOdGhWYWx1ZU9uS2V5UGF0aCh2ODo6SGFu
ZGxlPHY4OjpWYWx1ZT4mIHJvb3RWYWx1ZSwKICAgICAgICAgaWYgKCFnZXQoY3VycmVudFZhbHVl
LCBrZXlQYXRoRWxlbWVudCkpIHsKICAgICAgICAgICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4g
b2JqZWN0ID0gdjg6Ok9iamVjdDo6TmV3KCk7CiAgICAgICAgICAgICBpZiAoIXNldChwYXJlbnRW
YWx1ZSwga2V5UGF0aEVsZW1lbnQsIG9iamVjdCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIHY4
OjpIYW5kbGU8djg6OlZhbHVlPigpOworICAgICAgICAgICAgICAgIHJldHVybiB2OFVuZGVmaW5l
ZCgpOwogICAgICAgICAgICAgY3VycmVudFZhbHVlID0gb2JqZWN0OwogICAgICAgICB9CiAgICAg
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0RGVidWdTZXJ2
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0RGVidWdTZXJ2ZXIuY3Bw
CmluZGV4IGUzOWJiY2IyODZmYjNhZTExMjFiODI3ZDI4NGU1ODZjYzQwZTA4YTcuLjc3ZDY4ZDAx
N2ZjNjFjYmU1NWI4YmQ1OTFmYWQ1OWEwN2U4ZjE0N2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3Y4L1NjcmlwdERlYnVnU2VydmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy92OC9TY3JpcHREZWJ1Z1NlcnZlci5jcHAKQEAgLTEzNyw3ICsxMzcsNyBAQCBT
Y3JpcHREZWJ1Z1NlcnZlcjo6UGF1c2VPbkV4Y2VwdGlvbnNTdGF0ZSBTY3JpcHREZWJ1Z1NlcnZl
cjo6cGF1c2VPbkV4Y2VwdGlvbnNTdAogICAgIHY4OjpIYW5kbGVTY29wZSBzY29wZTsKICAgICB2
ODo6Q29udGV4dDo6U2NvcGUgY29udGV4dFNjb3BlKHY4OjpEZWJ1Zzo6R2V0RGVidWdDb250ZXh0
KCkpOwogCi0gICAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGFyZ3ZbXSA9IHsgdjg6OkhhbmRsZTx2
ODo6VmFsdWU+KCkgfTsKKyAgICB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gYXJndltdID0geyB2OFVu
ZGVmaW5lZCgpIH07CiAgICAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHJlc3VsdCA9IGNhbGxEZWJ1
Z2dlck1ldGhvZCgicGF1c2VPbkV4Y2VwdGlvbnNTdGF0ZSIsIDAsIGFyZ3YpOwogICAgIHJldHVy
biBzdGF0aWNfY2FzdDxTY3JpcHREZWJ1Z1NlcnZlcjo6UGF1c2VPbkV4Y2VwdGlvbnNTdGF0ZT4o
cmVzdWx0LT5JbnQzMlZhbHVlKCkpOwogfQpAQCAtMzYzLDcgKzM2Myw3IEBAIHZvaWQgU2NyaXB0
RGVidWdTZXJ2ZXI6OmhhbmRsZVY4RGVidWdFdmVudChjb25zdCB2ODo6RGVidWc6OkV2ZW50RGV0
YWlscyYgZXZlbnRECiAgICAgICAgICAgICAgICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBldmVu
dERhdGEgPSBldmVudERldGFpbHMuR2V0RXZlbnREYXRhKCk7CiAgICAgICAgICAgICAgICAgdjg6
OkhhbmRsZTx2ODo6VmFsdWU+IGV4Y2VwdGlvbkdldHRlclZhbHVlID0gZXZlbnREYXRhLT5HZXQo
djg6OlN0cmluZzo6TmV3KCJleGNlcHRpb24iKSk7CiAgICAgICAgICAgICAgICAgQVNTRVJUKCFl
eGNlcHRpb25HZXR0ZXJWYWx1ZS5Jc0VtcHR5KCkgJiYgZXhjZXB0aW9uR2V0dGVyVmFsdWUtPklz
RnVuY3Rpb24oKSk7Ci0gICAgICAgICAgICAgICAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGFyZ3Zb
XSA9IHsgdjg6OkhhbmRsZTx2ODo6VmFsdWU+KCkgfTsKKyAgICAgICAgICAgICAgICB2ODo6SGFu
ZGxlPHY4OjpWYWx1ZT4gYXJndltdID0geyB2OFVuZGVmaW5lZCgpIH07CiAgICAgICAgICAgICAg
ICAgVjhSZWN1cnNpb25TY29wZTo6TWljcm90YXNrU3VwcHJlc3Npb24gc2NvcGU7CiAgICAgICAg
ICAgICAgICAgZXhjZXB0aW9uID0gdjg6OkhhbmRsZTx2ODo6RnVuY3Rpb24+OjpDYXN0KGV4Y2Vw
dGlvbkdldHRlclZhbHVlKS0+Q2FsbChldmVudERhdGEsIDAsIGFyZ3YpOwogICAgICAgICAgICAg
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2VyaWFsaXplZFNjcmlw
dFZhbHVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NlcmlhbGl6ZWRTY3JpcHRW
YWx1ZS5jcHAKaW5kZXggOWYxZTMyOThmMGQxMjU3MWYzNzNmNzI5N2M0MmRlMjVkMmRjMTViYy4u
ZjU3NjkwNmM1NzJhYjRjYjI0OTQwZmRiYTMxNTAwOTg1MTZhODNjMSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwCkBAIC03
MzAsNyArNzMwLDcgQEAgcHJpdmF0ZToKICAgICBjbGFzcyBFcnJvclN0YXRlIDogcHVibGljIFN0
YXRlQmFzZSB7CiAgICAgcHVibGljOgogICAgICAgICBFcnJvclN0YXRlKCkKLSAgICAgICAgICAg
IDogU3RhdGVCYXNlKHY4OjpIYW5kbGU8djg6OlZhbHVlPigpLCAwKQorICAgICAgICAgICAgOiBT
dGF0ZUJhc2UodjhVbmRlZmluZWQoKSwgMCkKICAgICAgICAgewogICAgICAgICB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4Q29sbGVjdGlvbi5oIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvdjgvVjhDb2xsZWN0aW9uLmgKaW5kZXggYWY3MDgyZWM5MzA4ZTAx
OWQ1YzI2N2NiZGNmOGRhN2Y1MTRiOTE1MS4uYWU1NDI1OTJhY2Q4NzNiODk4MjY4NzBjNDg2ZTQ1
Yzc5MDBjNzBiMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhDb2xs
ZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhDb2xsZWN0aW9uLmgK
QEAgLTQ1LDcgKzQ1LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogdGVtcGxhdGU8Y2xhc3MgVD4g
c3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBnZXRWOE9iamVjdChUKiBpbXBsZW1lbnRhdGlv
biwgdjg6Oklzb2xhdGUqIGlzb2xhdGUpCiB7CiAgICAgaWYgKCFpbXBsZW1lbnRhdGlvbikKLSAg
ICAgICAgcmV0dXJuIHY4OjpIYW5kbGU8djg6OlZhbHVlPigpOworICAgICAgICByZXR1cm4gdjhV
bmRlZmluZWQoKTsKICAgICByZXR1cm4gdG9WOChpbXBsZW1lbnRhdGlvbiwgaXNvbGF0ZSk7CiB9
CiAKQEAgLTc0LDkgKzc0LDkgQEAgdGVtcGxhdGU8Y2xhc3MgQ29sbGVjdGlvbiwgY2xhc3MgSXRl
bVR5cGU+IHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gZ2V0TmFtZWQKIHRlbXBsYXRlPGNs
YXNzIENvbGxlY3Rpb24sIGNsYXNzIEl0ZW1UeXBlPiBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFs
dWU+IGNvbGxlY3Rpb25OYW1lZFByb3BlcnR5R2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBu
YW1lLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQogewogICAgIGlmICghaW5mby5Ib2xk
ZXIoKS0+R2V0UmVhbE5hbWVkUHJvcGVydHlJblByb3RvdHlwZUNoYWluKG5hbWUpLklzRW1wdHko
KSkKLSAgICAgICAgcmV0dXJuIHY4OjpIYW5kbGU8djg6OlZhbHVlPigpOworICAgICAgICByZXR1
cm4gdjhVbmRlZmluZWQoKTsKICAgICBpZiAoaW5mby5Ib2xkZXIoKS0+SGFzUmVhbE5hbWVkQ2Fs
bGJhY2tQcm9wZXJ0eShuYW1lKSkKLSAgICAgICAgcmV0dXJuIHY4OjpIYW5kbGU8djg6OlZhbHVl
PigpOworICAgICAgICByZXR1cm4gdjhVbmRlZmluZWQoKTsKIAogICAgIHJldHVybiBnZXROYW1l
ZFByb3BlcnR5T2ZDb2xsZWN0aW9uPENvbGxlY3Rpb24sIEl0ZW1UeXBlPihuYW1lLCBpbmZvLkhv
bGRlcigpLCBpbmZvLkdldElzb2xhdGUoKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy92OC9WOENvbmZpZ3VyZURPTUF0dHJpYnV0ZXNBbmRNZXRob2RzLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4Q29uZmlndXJlRE9NQXR0cmlidXRlc0FuZE1ldGhv
ZHMuY3BwCmluZGV4IDMzZWM5MmMyZDk3ZDE2NjBkYmQ3NTBiOGIzOTczOTU2ODZhN2M0YTYuLjVm
ZDQyYTcxNmEwZWE1ODI2NzYzY2VmMmRjOTIzMmQ2NDFjYjU3M2YgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4Q29uZmlndXJlRE9NQXR0cmlidXRlc0FuZE1ldGhvZHMu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4Q29uZmlndXJlRE9NQXR0cmli
dXRlc0FuZE1ldGhvZHMuY3BwCkBAIC02MSw3ICs2MSw3IEBAIHZvaWQgYmF0Y2hDb25maWd1cmVD
YWxsYmFja3Modjg6OkhhbmRsZTx2ODo6T2JqZWN0VGVtcGxhdGU+IHByb3RvLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBzaXplX3QgY2FsbGJhY2tDb3VudCkKIHsKICAgICBmb3IgKHNp
emVfdCBpID0gMDsgaSA8IGNhbGxiYWNrQ291bnQ7ICsraSkKLSAgICAgICAgcHJvdG8tPlNldCh2
ODo6U3RyaW5nOjpOZXcoY2FsbGJhY2tzW2ldLm5hbWUpLCB2ODo6RnVuY3Rpb25UZW1wbGF0ZTo6
TmV3KGNhbGxiYWNrc1tpXS5jYWxsYmFjaywgdjg6OkhhbmRsZTx2ODo6VmFsdWU+KCksIHNpZ25h
dHVyZSksIGF0dHJpYnV0ZXMpOworICAgICAgICBwcm90by0+U2V0KHY4OjpTdHJpbmc6Ok5ldyhj
YWxsYmFja3NbaV0ubmFtZSksIHY4OjpGdW5jdGlvblRlbXBsYXRlOjpOZXcoY2FsbGJhY2tzW2ld
LmNhbGxiYWNrLCB2OFVuZGVmaW5lZCgpLCBzaWduYXR1cmUpLCBhdHRyaWJ1dGVzKTsKIH0KIAog
djg6OkxvY2FsPHY4OjpTaWduYXR1cmU+IGNvbmZpZ3VyZVRlbXBsYXRlKHY4OjpQZXJzaXN0ZW50
PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBkZXNjLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvdjgvVjhET01XcmFwcGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4
L1Y4RE9NV3JhcHBlci5jcHAKaW5kZXggZmYxZTI5Njg2NTFlNjZhZDg0ZDhmZGUzMmMxMTY3MTNj
NDlhYzNmNy4uOWQxNTFhYzY2ZGUzY2JkNWZjN2JiNjdmMzM1NjYxNzI1ZjUzZDIwOSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhET01XcmFwcGVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOERPTVdyYXBwZXIuY3BwCkBAIC0yNjksNyArMjY5
LDcgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4RE9NV3JhcHBlcjo6Y29udmVydEV2ZW50VGFy
Z2V0VG9WOE9iamVjdChFdmVudFRhcmdldCogdGEKICAgICBET01fRVZFTlRfVEFSR0VUX0lOVEVS
RkFDRVNfRk9SX0VBQ0goVFJZX1RPX1dSQVBfV0lUSF9JTlRFUkZBQ0UpCiAKICAgICBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4gdjg6OkhhbmRsZTx2ODo6VmFsdWU+KCk7CisgICAg
cmV0dXJuIHY4VW5kZWZpbmVkKCk7CiB9CiAKIFBhc3NSZWZQdHI8RXZlbnRMaXN0ZW5lcj4gVjhE
T01XcmFwcGVyOjpnZXRFdmVudExpc3RlbmVyKHY4OjpMb2NhbDx2ODo6VmFsdWU+IHZhbHVlLCBi
b29sIGlzQXR0cmlidXRlLCBMaXN0ZW5lckxvb2t1cFR5cGUgbG9va3VwKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhOUE9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy92OC9WOE5QT2JqZWN0LmNwcAppbmRleCBkNDgwZTNlNjllMTY0MDc0MDZmYzdh
MDQwMDE4MzZjZmM1MzMxMWY4Li40NWExNTEyZGRkYTBhNzY5ODBiMTc5MjEwNTkzZTM3ZTZkNWRl
NDMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOE5QT2JqZWN0LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOE5QT2JqZWN0LmNwcApAQCAtMjAw
LDcgKzIwMCw3IEBAIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gbnBPYmplY3RHZXRQcm9w
ZXJ0eSh2ODo6TG9jYWw8djg6Ok9iamVjdD4gc2VsZiwgTlBJCiAgICAgICAgIE5QVmFyaWFudCBy
ZXN1bHQ7CiAgICAgICAgIFZPSURfVE9fTlBWQVJJQU5UKHJlc3VsdCk7CiAgICAgICAgIGlmICgh
bnBPYmplY3QtPl9jbGFzcy0+Z2V0UHJvcGVydHkobnBPYmplY3QsIGlkZW50aWZpZXIsICZyZXN1
bHQpKQotICAgICAgICAgICAgcmV0dXJuIHY4OjpIYW5kbGU8djg6OlZhbHVlPigpOworICAgICAg
ICAgICAgcmV0dXJuIHY4VW5kZWZpbmVkKCk7CiAKICAgICAgICAgdjg6OkhhbmRsZTx2ODo6VmFs
dWU+IHJldHVyblZhbHVlOwogICAgICAgICBpZiAoX05QTl9Jc0FsaXZlKG5wT2JqZWN0KSkKQEAg
LTIzNCw3ICsyMzQsNyBAQCBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IG5wT2JqZWN0R2V0
UHJvcGVydHkodjg6OkxvY2FsPHY4OjpPYmplY3Q+IHNlbGYsIE5QSQogICAgICAgICByZXR1cm4g
djhGdW5jdGlvbjsKICAgICB9CiAKLSAgICByZXR1cm4gdjg6OkhhbmRsZTx2ODo6VmFsdWU+KCk7
CisgICAgcmV0dXJuIHY4VW5kZWZpbmVkKCk7CiB9CiAKIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBu
cE9iamVjdE5hbWVkUHJvcGVydHlHZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIGNv
bnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCkBAIC0yODksNyArMjg5LDcgQEAgc3RhdGljIHY4
OjpIYW5kbGU8djg6OlZhbHVlPiBucE9iamVjdFNldFByb3BlcnR5KHY4OjpMb2NhbDx2ODo6T2Jq
ZWN0PiBzZWxmLCBOUEkKICAgICAgICAgaWYgKHN1Y2Nlc3MpCiAgICAgICAgICAgICByZXR1cm4g
dmFsdWU7IC8vIEludGVyY2VwdCB0aGUgY2FsbC4KICAgICB9Ci0gICAgcmV0dXJuIHY4OjpIYW5k
bGU8djg6OlZhbHVlPigpOworICAgIHJldHVybiB2OFVuZGVmaW5lZCgpOwogfQogCiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4UHJveHkuY3BwIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvdjgvVjhQcm94eS5jcHAKaW5kZXggN2NmYTQyYmVkZWQ5N2I0NzYxOTI4
YzZlY2I3YmIyZjVlMDE2OWM0Ni4uMDQ1ZjczZGI1YjE4ZGQwOTQyMzI0ZWQ2OWExMGRmYmQyYzg0
NjZhZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhQcm94eS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhQcm94eS5jcHAKQEAgLTUwMSw3ICs1
MDEsNyBAQCBzdGF0aWMgdm9pZCBET01FeGNlcHRpb25TdGFja1NldHRlcih2ODo6TG9jYWw8djg6
OlN0cmluZz4gbmFtZSwgdjg6OkxvY2FsPHY4OjpWYQogdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4
UHJveHk6OnNldERPTUV4Y2VwdGlvbihpbnQgZWMsIHY4OjpJc29sYXRlKiBpc29sYXRlKQogewog
ICAgIGlmIChlYyA8PSAwIHx8IHY4OjpWODo6SXNFeGVjdXRpb25UZXJtaW5hdGluZygpKQotICAg
ICAgICByZXR1cm4gdjg6OkhhbmRsZTx2ODo6VmFsdWU+KCk7CisgICAgICAgIHJldHVybiB2OFVu
ZGVmaW5lZCgpOwogCiAgICAgaWYgKGVjID09IE5BVElWRV9UWVBFX0VSUikgewogICAgICAgICBj
b25zdCBjaGFyKiBtZXNzYWdlID0gMDsKQEAgLTUxNiw3ICs1MTYsNyBAQCB2ODo6SGFuZGxlPHY4
OjpWYWx1ZT4gVjhQcm94eTo6c2V0RE9NRXhjZXB0aW9uKGludCBlYywgdjg6Oklzb2xhdGUqIGlz
b2xhdGUpCiAgICAgfQogCiAgICAgaWYgKGV4Y2VwdGlvbi5Jc0VtcHR5KCkpCi0gICAgICAgIHJl
dHVybiB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4oKTsKKyAgICAgICAgcmV0dXJuIHY4VW5kZWZpbmVk
KCk7CiAKICAgICAvLyBBdHRhY2ggYW4gRXJyb3Igb2JqZWN0IHRvIHRoZSBET01FeGNlcHRpb24u
IFRoaXMgaXMgdGhlbiBsYXppbHkgdXNlZCB0byBnZXQgdGhlIHN0YWNrIHZhbHVlLgogICAgIHY4
OjpIYW5kbGU8djg6OlZhbHVlPiBlcnJvciA9IHY4OjpFeGNlcHRpb246OkVycm9yKHY4U3RyaW5n
KGRlc2NyaXB0aW9uLmRlc2NyaXB0aW9uLCBpc29sYXRlKSk7CkBAIC01NDQsNyArNTQ0LDcgQEAg
djg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4UHJveHk6OnRocm93RXJyb3IoRXJyb3JUeXBlIHR5cGUs
IGNvbnN0IGNoYXIqIG1lc3NhZ2UsIHYKICAgICAgICAgcmV0dXJuIHY4OjpUaHJvd0V4Y2VwdGlv
bih2ODo6RXhjZXB0aW9uOjpFcnJvcih2OFN0cmluZyhtZXNzYWdlLCBpc29sYXRlKSkpOwogICAg
IGRlZmF1bHQ6CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICByZXR1cm4g
djg6OkhhbmRsZTx2ODo6VmFsdWU+KCk7CisgICAgICAgIHJldHVybiB2OFVuZGVmaW5lZCgpOwog
ICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvV29ya2Vy
U2NyaXB0RGVidWdTZXJ2ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvV29ya2Vy
U2NyaXB0RGVidWdTZXJ2ZXIuY3BwCmluZGV4IDE1NTQ2ZTZkNjcwZjVkNTg0MGY4OGE4YjcwNjVk
YTEzNDg2NjhjMzYuLjNjMjVhZDhjNTU2YTllNWJhMjNkOGYyNjljNjM4MWVmZDdhZWViNjggMTAw
NzU1Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1dvcmtlclNjcmlwdERlYnVnU2Vy
dmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9Xb3JrZXJTY3JpcHREZWJ1
Z1NlcnZlci5jcHAKQEAgLTcyLDcgKzcyLDcgQEAgdm9pZCBXb3JrZXJTY3JpcHREZWJ1Z1NlcnZl
cjo6YWRkTGlzdGVuZXIoU2NyaXB0RGVidWdMaXN0ZW5lciogbGlzdGVuZXIpCiAgICAgICAgIHJl
dHVybjsKIAogICAgIHY4OjpIYW5kbGU8djg6OkZ1bmN0aW9uPiBnZXRTY3JpcHRzRnVuY3Rpb24g
PSB2ODo6TG9jYWw8djg6OkZ1bmN0aW9uPjo6Q2FzdChtX2RlYnVnZ2VyU2NyaXB0LmdldCgpLT5H
ZXQodjg6OlN0cmluZzo6TmV3KCJnZXRXb3JrZXJTY3JpcHRzIikpKTsKLSAgICB2ODo6SGFuZGxl
PHY4OjpWYWx1ZT4gYXJndltdID0geyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4oKSB9OworICAgIHY4
OjpIYW5kbGU8djg6OlZhbHVlPiBhcmd2W10gPSB7IHY4VW5kZWZpbmVkKCkgfTsKICAgICB2ODo6
SGFuZGxlPHY4OjpWYWx1ZT4gdmFsdWUgPSBnZXRTY3JpcHRzRnVuY3Rpb24tPkNhbGwobV9kZWJ1
Z2dlclNjcmlwdC5nZXQoKSwgMCwgYXJndik7CiAgICAgaWYgKHZhbHVlLklzRW1wdHkoKSkKICAg
ICAgICAgcmV0dXJuOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>