<?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>103352</bug_id>
          
          <creation_ts>2012-11-26 20:44:04 -0800</creation_ts>
          <short_desc>[V8] Rename EXCEPTION_BLOCK() macros</short_desc>
          <delta_ts>2012-11-26 21:33:56 -0800</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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Kentaro Hara">haraken</reporter>
          <assigned_to name="Kentaro Hara">haraken</assigned_to>
          <cc>abarth</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>776264</commentid>
    <comment_count>0</comment_count>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-11-26 20:44:04 -0800</bug_when>
    <thetext>EXCEPTION_BLOCK() =&gt; TRYCATCH()
STRING_TO_V8PARAMETER_EXCEPTION_BLOCK() =&gt; TRYCATCH_FOR_V8STRINGRESOURCE()
STRING_TO_V8PARAMETER_EXCEPTION_BLOCK_VOID() =&gt; TRYCATCH_FOR_V8STRINGRESOURCE_VOID()

Any suggestion?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>776272</commentid>
    <comment_count>1</comment_count>
      <attachid>176159</attachid>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-11-26 20:57:20 -0800</bug_when>
    <thetext>Created attachment 176159
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>776286</commentid>
    <comment_count>2</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-11-26 21:07:49 -0800</bug_when>
    <thetext>I might have used V8 prefixes (e.g., V8TRYCATCH), but this is fine too.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>776290</commentid>
    <comment_count>3</comment_count>
      <attachid>176163</attachid>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-11-26 21:10:29 -0800</bug_when>
    <thetext>Created attachment 176163
patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>776291</commentid>
    <comment_count>4</comment_count>
      <attachid>176163</attachid>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-11-26 21:11:01 -0800</bug_when>
    <thetext>Comment on attachment 176163
patch for landing

&gt; I might have used V8 prefixes (e.g., V8TRYCATCH), but this is fine too.

Done. Thanks.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>776310</commentid>
    <comment_count>5</comment_count>
      <attachid>176163</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-11-26 21:33:53 -0800</bug_when>
    <thetext>Comment on attachment 176163
patch for landing

Clearing flags on attachment: 176163

Committed r135817: &lt;http://trac.webkit.org/changeset/135817&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>776311</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-11-26 21:33:56 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>176159</attachid>
            <date>2012-11-26 20:57:20 -0800</date>
            <delta_ts>2012-11-26 21:10:26 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-103352-20121127135457.patch</filename>
            <type>text/plain</type>
            <size>86275</size>
            <attacher name="Kentaro Hara">haraken</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM1ODEyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMmY1NGZhNTgwMjg3Zjk3
ZTQwYjhiZmM4OTBhMjBjMmM1MWRkMWViZC4uOWM4NWM2ZWQ5ZWVhZjdjZTY3MjMzZTJjNmZkYWYy
ZGZjZjdmNTM2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDE0MSBAQAogMjAxMi0xMS0yNiAgS2Vu
dGFybyBIYXJhICA8aGFyYWtlbkBjaHJvbWl1bS5vcmc+CiAKKyAgICAgICAgW1Y4XSBSZW5hbWUg
RVhDRVBUSU9OX0JMT0NLKCkgbWFjcm9zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xMDMzNTIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBTaW5jZSBWOFBhcmFtZXRlciB3YXMgcmVuYW1lZCB0byBWOFN0cmlu
Z1Jlc291cmNlLAorICAgICAgICB3ZSByZW5hbWUgbWFjcm9zIHRoYXQgdXNlIFY4UGFyYW1ldGVy
LgorCisgICAgICAgIEVYQ0VQVElPTl9CTE9DSygpID0+IFRSWUNBVENIKCkKKyAgICAgICAgU1RS
SU5HX1RPX1Y4UEFSQU1FVEVSX0VYQ0VQVElPTl9CTE9DSygpID0+IFRSWUNBVENIX0ZPUl9WOFNU
UklOR1JFU09VUkNFKCkKKyAgICAgICAgU1RSSU5HX1RPX1Y4UEFSQU1FVEVSX0VYQ0VQVElPTl9C
TE9DS19WT0lEKCkgPT4gVFJZQ0FUQ0hfRk9SX1Y4U1RSSU5HUkVTT1VSQ0VfVk9JRCgpCisKKyAg
ICAgICAgTm8gdGVzdHMuIE5vIGNoYW5nZSBpbiBiZWhhdmlvci4KKworICAgICAgICAqIGJpbmRp
bmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvclY4LnBtOgorICAgICAgICAoR2VuZXJhdGVQYXJhbWV0
ZXJzQ2hlY2spOgorICAgICAgICAoR2VuZXJhdGVFdmVudENvbnN0cnVjdG9yQ2FsbGJhY2spOgor
ICAgICAgICAoQ29udmVydFRvVjhTdHJpbmdSZXNvdXJjZSk6CisgICAgICAgICogYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L1Y4L1Y4RmxvYXQ2NEFycmF5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZs
b2F0NjRBcnJheVY4SW50ZXJuYWw6OmZvb0NhbGxiYWNrKToKKyAgICAgICAgKiBiaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvVjgvVjhUZXN0QWN0aXZlRE9NT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlRlc3RBY3RpdmVET01PYmplY3RWOEludGVybmFsOjpleGNpdGluZ0Z1bmN0aW9uQ2FsbGJh
Y2spOgorICAgICAgICAoV2ViQ29yZTo6VGVzdEFjdGl2ZURPTU9iamVjdFY4SW50ZXJuYWw6OnBv
c3RNZXNzYWdlQ2FsbGJhY2spOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9W
OFRlc3RDdXN0b21OYW1lZEdldHRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXN0Q3VzdG9t
TmFtZWRHZXR0ZXJWOEludGVybmFsOjphbm90aGVyRnVuY3Rpb25DYWxsYmFjayk6CisgICAgICAg
ICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEV2ZW50Q29uc3RydWN0b3IuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6VjhUZXN0RXZlbnRDb25zdHJ1Y3Rvcjo6Y29uc3RydWN0b3JDYWxs
YmFjayk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEV2ZW50VGFy
Z2V0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RFdmVudFRhcmdldFY4SW50ZXJuYWw6Oml0
ZW1DYWxsYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0RXZlbnRUYXJnZXRWOEludGVybmFs
OjpkaXNwYXRjaEV2ZW50Q2FsbGJhY2spOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVz
dC9WOC9WOFRlc3RJbnRlcmZhY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGVzdEludGVyZmFj
ZVY4SW50ZXJuYWw6OnN1cHBsZW1lbnRhbFN0YXRpY0F0dHJBdHRyU2V0dGVyKToKKyAgICAgICAg
KFdlYkNvcmU6OlRlc3RJbnRlcmZhY2VWOEludGVybmFsOjpzdXBwbGVtZW50YWxTdHIyQXR0clNl
dHRlcik6CisgICAgICAgIChXZWJDb3JlOjpUZXN0SW50ZXJmYWNlVjhJbnRlcm5hbDo6c3VwcGxl
bWVudGFsTWV0aG9kMkNhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OlY4VGVzdEludGVyZmFj
ZTo6Y29uc3RydWN0b3JDYWxsYmFjayk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L1Y4L1Y4VGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
VGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXJWOEludGVybmFsOjptZXRob2RDYWxsYmFjayk6Cisg
ICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE5hbWVkQ29uc3RydWN0b3Iu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6VjhUZXN0TmFtZWRDb25zdHJ1Y3RvckNvbnN0cnVjdG9y
Q2FsbGJhY2spOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RPYmou
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6VGVzdE9ialY4SW50ZXJuYWw6OnN0YXRpY1N0cmluZ0F0
dHJBdHRyU2V0dGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RPYmpWOEludGVybmFsOjpzdHJp
bmdBdHRyQXR0clNldHRlcik6CisgICAgICAgIChXZWJDb3JlOjpUZXN0T2JqVjhJbnRlcm5hbDo6
cmVmbGVjdGVkU3RyaW5nQXR0ckF0dHJTZXR0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdE9i
alY4SW50ZXJuYWw6OnJlZmxlY3RlZFVSTEF0dHJBdHRyU2V0dGVyKToKKyAgICAgICAgKFdlYkNv
cmU6OlRlc3RPYmpWOEludGVybmFsOjpyZWZsZWN0ZWRDdXN0b21VUkxBdHRyQXR0clNldHRlcik6
CisgICAgICAgIChXZWJDb3JlOjpUZXN0T2JqVjhJbnRlcm5hbDo6c3RyaW5nQXR0cldpdGhHZXR0
ZXJFeGNlcHRpb25BdHRyU2V0dGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RPYmpWOEludGVy
bmFsOjpzdHJpbmdBdHRyV2l0aFNldHRlckV4Y2VwdGlvbkF0dHJTZXR0ZXIpOgorICAgICAgICAo
V2ViQ29yZTo6VGVzdE9ialY4SW50ZXJuYWw6OnZvaWRNZXRob2RXaXRoQXJnc0NhbGxiYWNrKToK
KyAgICAgICAgKFdlYkNvcmU6OlRlc3RPYmpWOEludGVybmFsOjpsb25nTWV0aG9kV2l0aEFyZ3ND
YWxsYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0T2JqVjhJbnRlcm5hbDo6b2JqTWV0aG9k
V2l0aEFyZ3NDYWxsYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0T2JqVjhJbnRlcm5hbDo6
bWV0aG9kV2l0aFNlcXVlbmNlQXJnQ2FsbGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6VGVzdE9i
alY4SW50ZXJuYWw6Om1ldGhvZFJldHVybmluZ1NlcXVlbmNlQ2FsbGJhY2spOgorICAgICAgICAo
V2ViQ29yZTo6VGVzdE9ialY4SW50ZXJuYWw6Om1ldGhvZFRoYXRSZXF1aXJlc0FsbEFyZ3NBbmRU
aHJvd3NDYWxsYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0T2JqVjhJbnRlcm5hbDo6aWRi
S2V5Q2FsbGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6VGVzdE9ialY4SW50ZXJuYWw6Om9wdGlv
bnNPYmplY3RDYWxsYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0T2JqVjhJbnRlcm5hbDo6
bWV0aG9kV2l0aE9wdGlvbmFsQXJnQ2FsbGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6VGVzdE9i
alY4SW50ZXJuYWw6Om1ldGhvZFdpdGhOb25PcHRpb25hbEFyZ0FuZE9wdGlvbmFsQXJnQ2FsbGJh
Y2spOgorICAgICAgICAoV2ViQ29yZTo6VGVzdE9ialY4SW50ZXJuYWw6Om1ldGhvZFdpdGhOb25P
cHRpb25hbEFyZ0FuZFR3b09wdGlvbmFsQXJnc0NhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6
OlRlc3RPYmpWOEludGVybmFsOjptZXRob2RXaXRoT3B0aW9uYWxTdHJpbmdDYWxsYmFjayk6Cisg
ICAgICAgIChXZWJDb3JlOjpUZXN0T2JqVjhJbnRlcm5hbDo6bWV0aG9kV2l0aE9wdGlvbmFsU3Ry
aW5nSXNVbmRlZmluZWRDYWxsYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0T2JqVjhJbnRl
cm5hbDo6bWV0aG9kV2l0aE9wdGlvbmFsU3RyaW5nSXNOdWxsU3RyaW5nQ2FsbGJhY2spOgorICAg
ICAgICAoV2ViQ29yZTo6VGVzdE9ialY4SW50ZXJuYWw6Om1ldGhvZFdpdGhOb25DYWxsYmFja0Fy
Z0FuZENhbGxiYWNrQXJnQ2FsbGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6VGVzdE9ialY4SW50
ZXJuYWw6Om92ZXJsb2FkZWRNZXRob2QxQ2FsbGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6VGVz
dE9ialY4SW50ZXJuYWw6Om92ZXJsb2FkZWRNZXRob2QyQ2FsbGJhY2spOgorICAgICAgICAoV2Vi
Q29yZTo6VGVzdE9ialY4SW50ZXJuYWw6Om92ZXJsb2FkZWRNZXRob2QzQ2FsbGJhY2spOgorICAg
ICAgICAoV2ViQ29yZTo6VGVzdE9ialY4SW50ZXJuYWw6Om92ZXJsb2FkZWRNZXRob2Q0Q2FsbGJh
Y2spOgorICAgICAgICAoV2ViQ29yZTo6VGVzdE9ialY4SW50ZXJuYWw6Om92ZXJsb2FkZWRNZXRo
b2Q2Q2FsbGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6VGVzdE9ialY4SW50ZXJuYWw6Om92ZXJs
b2FkZWRNZXRob2Q3Q2FsbGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6VGVzdE9ialY4SW50ZXJu
YWw6Om92ZXJsb2FkZWRNZXRob2Q4Q2FsbGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6VGVzdE9i
alY4SW50ZXJuYWw6Om92ZXJsb2FkZWRNZXRob2Q5Q2FsbGJhY2spOgorICAgICAgICAoV2ViQ29y
ZTo6VGVzdE9ialY4SW50ZXJuYWw6Om92ZXJsb2FkZWRNZXRob2QxMENhbGxiYWNrKToKKyAgICAg
ICAgKFdlYkNvcmU6OlRlc3RPYmpWOEludGVybmFsOjpvdmVybG9hZGVkTWV0aG9kMTFDYWxsYmFj
ayk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0T2JqVjhJbnRlcm5hbDo6Y2xhc3NNZXRob2RXaXRo
T3B0aW9uYWxDYWxsYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0T2JqVjhJbnRlcm5hbDo6
b3ZlcmxvYWRlZE1ldGhvZDEyQ2FsbGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6VGVzdE9ialY4
SW50ZXJuYWw6OmNsYXNzTWV0aG9kV2l0aENsYW1wQ2FsbGJhY2spOgorICAgICAgICAoV2ViQ29y
ZTo6VGVzdE9ialY4SW50ZXJuYWw6OmVuYWJsZWRBdFJ1bnRpbWVNZXRob2QxQ2FsbGJhY2spOgor
ICAgICAgICAoV2ViQ29yZTo6VGVzdE9ialY4SW50ZXJuYWw6OmVuYWJsZWRBdFJ1bnRpbWVNZXRo
b2QyQ2FsbGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6VGVzdE9ialY4SW50ZXJuYWw6OmVuYWJs
ZWRQZXJDb250ZXh0TWV0aG9kMUNhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RPYmpW
OEludGVybmFsOjplbmFibGVkUGVyQ29udGV4dE1ldGhvZDJDYWxsYmFjayk6CisgICAgICAgIChX
ZWJDb3JlOjpUZXN0T2JqVjhJbnRlcm5hbDo6c3RyaW5nQXJyYXlGdW5jdGlvbkNhbGxiYWNrKToK
KyAgICAgICAgKFdlYkNvcmU6OlRlc3RPYmpWOEludGVybmFsOjpjb252ZXJ0MUNhbGxiYWNrKToK
KyAgICAgICAgKFdlYkNvcmU6OlRlc3RPYmpWOEludGVybmFsOjpjb252ZXJ0MkNhbGxiYWNrKToK
KyAgICAgICAgKFdlYkNvcmU6OlRlc3RPYmpWOEludGVybmFsOjpjb252ZXJ0NENhbGxiYWNrKToK
KyAgICAgICAgKFdlYkNvcmU6OlRlc3RPYmpWOEludGVybmFsOjpjb252ZXJ0NUNhbGxiYWNrKToK
KyAgICAgICAgKFdlYkNvcmU6OlRlc3RPYmpWOEludGVybmFsOjpzdHJpY3RGdW5jdGlvbkNhbGxi
YWNrKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RPYmpWOEludGVybmFsOjp2YXJpYWRpY1N0cmlu
Z01ldGhvZENhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RPYmpWOEludGVybmFsOjp2
YXJpYWRpY0RvdWJsZU1ldGhvZENhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RPYmpW
OEludGVybmFsOjp2YXJpYWRpY05vZGVNZXRob2RDYWxsYmFjayk6CisgICAgICAgICogYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6VjhUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yczo6Y29uc3RydWN0b3Ix
Q2FsbGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6VjhUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9y
czo6Y29uc3RydWN0b3IyQ2FsbGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6VjhUZXN0T3Zlcmxv
YWRlZENvbnN0cnVjdG9yczo6Y29uc3RydWN0b3IzQ2FsbGJhY2spOgorICAgICAgICAoV2ViQ29y
ZTo6VjhUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yczo6Y29uc3RydWN0b3I0Q2FsbGJhY2spOgor
ICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RTZXJpYWxpemVkU2NyaXB0
VmFsdWVJbnRlcmZhY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VjhUZXN0U2VyaWFsaXplZFNj
cmlwdFZhbHVlSW50ZXJmYWNlOjpjb25zdHJ1Y3RvckNhbGxiYWNrKToKKyAgICAgICAgKiBiaW5k
aW5ncy92OC9WOEJpbmRpbmcuaDoKKyAgICAgICAgKFdlYkNvcmU6OnRvVjhTZXF1ZW5jZSk6Cisg
ICAgICAgICogYmluZGluZ3MvdjgvVjhCaW5kaW5nTWFjcm9zLmg6CisgICAgICAgICogYmluZGlu
Z3MvdjgvY3VzdG9tL1Y4QmxvYkN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWOEJsb2I6
OmNvbnN0cnVjdG9yQ2FsbGJhY2tDdXN0b20pOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3Rv
bS9WOENvbnNvbGVDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6VjhDb25zb2xlOjpwcm9m
aWxlQ2FsbGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6VjhDb25zb2xlOjpwcm9maWxlRW5kQ2Fs
bGJhY2spOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOERPTVdpbmRvd0N1c3RvbS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpoYW5kbGVQb3N0TWVzc2FnZUNhbGxiYWNrKToKKyAgICAg
ICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhEYXRhVmlld0N1c3RvbS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpWOERhdGFWaWV3OjpnZXRJbnQ4Q2FsbGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6
VjhEYXRhVmlldzo6Z2V0VWludDhDYWxsYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpWOERhdGFW
aWV3OjpzZXRJbnQ4Q2FsbGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6VjhEYXRhVmlldzo6c2V0
VWludDhDYWxsYmFjayk6CisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4RGV2aWNlTW90
aW9uRXZlbnRDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6VjhEZXZpY2VNb3Rpb25FdmVu
dDo6aW5pdERldmljZU1vdGlvbkV2ZW50Q2FsbGJhY2spOgorICAgICAgICAqIGJpbmRpbmdzL3Y4
L2N1c3RvbS9WOERldmljZU9yaWVudGF0aW9uRXZlbnRDdXN0b20uY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6VjhEZXZpY2VPcmllbnRhdGlvbkV2ZW50Ojppbml0RGV2aWNlT3JpZW50YXRpb25FdmVu
dENhbGxiYWNrKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhEb2N1bWVudEN1c3Rv
bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWOERvY3VtZW50OjpldmFsdWF0ZUNhbGxiYWNrKToK
KyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhIVE1MT3B0aW9uc0NvbGxlY3Rpb25DdXN0
b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6VjhIVE1MT3B0aW9uc0NvbGxlY3Rpb246OmFkZENh
bGxiYWNrKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhIaXN0b3J5Q3VzdG9tLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlY4SGlzdG9yeTo6cHVzaFN0YXRlQ2FsbGJhY2spOgorICAg
ICAgICAoV2ViQ29yZTo6VjhIaXN0b3J5OjpyZXBsYWNlU3RhdGVDYWxsYmFjayk6CisgICAgICAg
ICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4SW50ZW50Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlY4SW50ZW50Ojpjb25zdHJ1Y3RvckNhbGxiYWNrQ3VzdG9tKToKKyAgICAgICAgKiBiaW5k
aW5ncy92OC9jdXN0b20vVjhTUUxUcmFuc2FjdGlvbkN1c3RvbS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpWOFNRTFRyYW5zYWN0aW9uOjpleGVjdXRlU3FsQ2FsbGJhY2spOgorICAgICAgICAqIGJp
bmRpbmdzL3Y4L2N1c3RvbS9WOFNRTFRyYW5zYWN0aW9uU3luY0N1c3RvbS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpWOFNRTFRyYW5zYWN0aW9uU3luYzo6ZXhlY3V0ZVNxbENhbGxiYWNrKToKKyAg
ICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhTVkdMZW5ndGhDdXN0b20uY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6VjhTVkdMZW5ndGg6OmNvbnZlcnRUb1NwZWNpZmllZFVuaXRzQ2FsbGJhY2sp
OgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOFdlYkdMUmVuZGVyaW5nQ29udGV4dEN1
c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWOFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0
RXh0ZW5zaW9uQ2FsbGJhY2spOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOFdvcmtl
ckNvbnRleHRDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6VjhXb3JrZXJDb250ZXh0Ojpp
bXBvcnRTY3JpcHRzQ2FsbGJhY2spOgorCisyMDEyLTExLTI2ICBLZW50YXJvIEhhcmEgIDxoYXJh
a2VuQGNocm9taXVtLm9yZz4KKwogICAgICAgICBbVjhdIFJlbW92ZSBWOFBhcmFtZXRlcjo6b2Jq
ZWN0KCkKICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEw
MzM0MAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVH
ZW5lcmF0b3JWOC5wbSBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVy
YXRvclY4LnBtCmluZGV4IDMxN2FmZGFhODIxM2FjN2FkYTE1ZmRkZmU2ZWYwYWIzNWVlNDljYmYu
LmVlY2NiZWY3MjkxZjRiZTVlMGQ5Y2QxODdiMzAyOGY5YTVmNWJmOWQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvclY4LnBtCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvclY4LnBtCkBAIC0xNzQ1
LDcgKzE3NDUsNyBAQCBzdWIgR2VuZXJhdGVQYXJhbWV0ZXJzQ2hlY2sKICAgICAgICAgICAgICAg
ICBteSAkbmF0aXZlVmFsdWUgPSAiJHtwYXJhbWV0ZXJOYW1lfU5hdGl2ZVZhbHVlIjsKICAgICAg
ICAgICAgICAgICBteSAkcGFyYW1UeXBlID0gJHBhcmFtZXRlci0+dHlwZTsKICAgICAgICAgICAg
ICAgICAkcGFyYW1ldGVyQ2hlY2tTdHJpbmcgLj0gIiAgICAkcGFyYW1UeXBlICRwYXJhbWV0ZXJO
YW1lID0gMDtcbiI7Ci0gICAgICAgICAgICAgICAgJHBhcmFtZXRlckNoZWNrU3RyaW5nIC49ICIg
ICAgRVhDRVBUSU9OX0JMT0NLKGRvdWJsZSwgJG5hdGl2ZVZhbHVlLCBhcmdzWyRwYXJhbUluZGV4
XS0+TnVtYmVyVmFsdWUoKSk7XG4iOworICAgICAgICAgICAgICAgICRwYXJhbWV0ZXJDaGVja1N0
cmluZyAuPSAiICAgIFRSWUNBVENIKGRvdWJsZSwgJG5hdGl2ZVZhbHVlLCBhcmdzWyRwYXJhbUlu
ZGV4XS0+TnVtYmVyVmFsdWUoKSk7XG4iOwogICAgICAgICAgICAgICAgICRwYXJhbWV0ZXJDaGVj
a1N0cmluZyAuPSAiICAgIGlmICghaXNuYW4oJG5hdGl2ZVZhbHVlKSlcbiI7CiAgICAgICAgICAg
ICAgICAgJHBhcmFtZXRlckNoZWNrU3RyaW5nIC49ICIgICAgICAgICRwYXJhbWV0ZXJOYW1lID0g
Y2xhbXBUbzwkcGFyYW1UeXBlPigkbmF0aXZlVmFsdWUpO1xuIjsKICAgICAgICAgfSBlbHNpZiAo
JHBhcmFtZXRlci0+dHlwZSBlcSAiU2VyaWFsaXplZFNjcmlwdFZhbHVlIikgewpAQCAtMTgwNyw3
ICsxODA3LDcgQEAgc3ViIEdlbmVyYXRlUGFyYW1ldGVyc0NoZWNrCiAgICAgICAgICAgICAgICAg
JHBhcmFtZXRlckNoZWNrU3RyaW5nIC49ICIgICAgICAgICRwYXJhbWV0ZXJOYW1lLmFwcGVuZChW
OCR7YXJnVHlwZX06OnRvTmF0aXZlKHY4OjpIYW5kbGU8djg6Ok9iamVjdD46OkNhc3QoYXJnc1tp
XSkpKTtcbiI7CiAgICAgICAgICAgICAgICAgJHBhcmFtZXRlckNoZWNrU3RyaW5nIC49ICIgICAg
fVxuIjsKICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgJHBhcmFtZXRlckNo
ZWNrU3RyaW5nIC49ICIgICAgRVhDRVBUSU9OX0JMT0NLKFZlY3RvcjwkbmF0aXZlRWxlbWVudFR5
cGU+LCAkcGFyYW1ldGVyTmFtZSwgdG9OYXRpdmVBcmd1bWVudHM8JG5hdGl2ZUVsZW1lbnRUeXBl
PihhcmdzLCAkcGFyYW1JbmRleCkpO1xuIjsKKyAgICAgICAgICAgICAgICAkcGFyYW1ldGVyQ2hl
Y2tTdHJpbmcgLj0gIiAgICBUUllDQVRDSChWZWN0b3I8JG5hdGl2ZUVsZW1lbnRUeXBlPiwgJHBh
cmFtZXRlck5hbWUsIHRvTmF0aXZlQXJndW1lbnRzPCRuYXRpdmVFbGVtZW50VHlwZT4oYXJncywg
JHBhcmFtSW5kZXgpKTtcbiI7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0gZWxzaWYgKCRuYXRp
dmVUeXBlID1+IC9eVjhTdHJpbmdSZXNvdXJjZS8pIHsKICAgICAgICAgICAgIG15ICR2YWx1ZSA9
IEpTVmFsdWVUb05hdGl2ZSgkcGFyYW1ldGVyLCAiTUFZQkVfTUlTU0lOR19QQVJBTUVURVIoYXJn
cywgJHBhcmFtSW5kZXgsICRwYXJhbWV0ZXJEZWZhdWx0UG9saWN5KSIsICJhcmdzLkdldElzb2xh
dGUoKSIpOwpAQCAtMTgyNyw3ICsxODI3LDcgQEAgc3ViIEdlbmVyYXRlUGFyYW1ldGVyc0NoZWNr
CiAgICAgICAgICAgICAgICAgICAgICRwYXJhbWV0ZXJDaGVja1N0cmluZyAuPSAiICAgICAgICBy
ZXR1cm4gdGhyb3dUeXBlRXJyb3IoMCwgYXJncy5HZXRJc29sYXRlKCkpO1xuIjsKICAgICAgICAg
ICAgICAgICB9CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAkcGFyYW1ldGVyQ2hlY2tTdHJp
bmcgLj0gIiAgICBFWENFUFRJT05fQkxPQ0soJG5hdGl2ZVR5cGUsICRwYXJhbWV0ZXJOYW1lLCAi
IC4KKyAgICAgICAgICAgICRwYXJhbWV0ZXJDaGVja1N0cmluZyAuPSAiICAgIFRSWUNBVENIKCRu
YXRpdmVUeXBlLCAkcGFyYW1ldGVyTmFtZSwgIiAuCiAgICAgICAgICAgICAgICAgIEpTVmFsdWVU
b05hdGl2ZSgkcGFyYW1ldGVyLCAiTUFZQkVfTUlTU0lOR19QQVJBTUVURVIoYXJncywgJHBhcmFt
SW5kZXgsICRwYXJhbWV0ZXJEZWZhdWx0UG9saWN5KSIsICJhcmdzLkdldElzb2xhdGUoKSIpIC4g
Iik7XG4iOwogICAgICAgICAgICAgaWYgKCRuYXRpdmVUeXBlIGVxICdEaWN0aW9uYXJ5Jykgewog
ICAgICAgICAgICAgICAgJHBhcmFtZXRlckNoZWNrU3RyaW5nIC49ICIgICAgaWYgKCEkcGFyYW1l
dGVyTmFtZS5pc1VuZGVmaW5lZE9yTnVsbCgpICYmICEkcGFyYW1ldGVyTmFtZS5pc09iamVjdCgp
KVxuIjsKQEAgLTIwMjksMTAgKzIwMjksMTAgQEAgRU5ECiAgICAgaWYgKGFyZ3MuTGVuZ3RoKCkg
PCAxKQogICAgICAgICByZXR1cm4gdGhyb3dOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihhcmdzLkdl
dElzb2xhdGUoKSk7CiAKLSAgICBTVFJJTkdfVE9fVjhQQVJBTUVURVJfRVhDRVBUSU9OX0JMT0NL
KFY4U3RyaW5nUmVzb3VyY2U8PiwgdHlwZSwgYXJnc1swXSk7CisgICAgVFJZQ0FUQ0hfRk9SX1Y4
U1RSSU5HUkVTT1VSQ0UoVjhTdHJpbmdSZXNvdXJjZTw+LCB0eXBlLCBhcmdzWzBdKTsKICAgICAk
e2ludGVyZmFjZU5hbWV9SW5pdCBldmVudEluaXQ7CiAgICAgaWYgKGFyZ3MuTGVuZ3RoKCkgPj0g
MikgewotICAgICAgICBFWENFUFRJT05fQkxPQ0soRGljdGlvbmFyeSwgb3B0aW9ucywgRGljdGlv
bmFyeShhcmdzWzFdLCBhcmdzLkdldElzb2xhdGUoKSkpOworICAgICAgICBUUllDQVRDSChEaWN0
aW9uYXJ5LCBvcHRpb25zLCBEaWN0aW9uYXJ5KGFyZ3NbMV0sIGFyZ3MuR2V0SXNvbGF0ZSgpKSk7
CiAgICAgICAgIGlmICghZmlsbCR7aW50ZXJmYWNlTmFtZX1Jbml0KGV2ZW50SW5pdCwgb3B0aW9u
cykpCiAgICAgICAgICAgICByZXR1cm4gdjhVbmRlZmluZWQoKTsKICAgICB9CkBAIC00MjA1LDcg
KzQyMDUsNyBAQCBzdWIgQ29udmVydFRvVjhTdHJpbmdSZXNvdXJjZQogCiAgICAgZGllICJXcm9u
ZyBuYXRpdmUgdHlwZSBwYXNzZWQ6ICRuYXRpdmVUeXBlIiB1bmxlc3MgJG5hdGl2ZVR5cGUgPX4g
L15WOFN0cmluZ1Jlc291cmNlLzsKICAgICBpZiAoJHNpZ25hdHVyZS0+dHlwZSBlcSAiRE9NU3Ry
aW5nIikgewotICAgICAgICBteSAkbWFjcm8gPSAiU1RSSU5HX1RPX1Y4UEFSQU1FVEVSX0VYQ0VQ
VElPTl9CTE9DSyI7CisgICAgICAgIG15ICRtYWNybyA9ICJUUllDQVRDSF9GT1JfVjhTVFJJTkdS
RVNPVVJDRSI7CiAgICAgICAgICRtYWNybyAuPSAiXyRzdWZmaXgiIGlmICRzdWZmaXg7CiAgICAg
ICAgIHJldHVybiAiJG1hY3JvKCRuYXRpdmVUeXBlLCAkdmFyaWFibGVOYW1lLCAkdmFsdWUpOyIK
ICAgICB9IGVsc2UgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L1Y4L1Y4RmxvYXQ2NEFycmF5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9WOC9WOEZsb2F0NjRBcnJheS5jcHAKaW5kZXggMWJhMTM5NmEzZjBkMDA3Yzdm
MDEzMTI3YWQ0ZmYxMDY2M2JiNTZlOS4uZGM2Mzk5NDIwZTM0ZTk2ZWJmZDUxNGZhYTk0NmYxNzYx
N2VmYzIzNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L1Y4L1Y4RmxvYXQ2NEFycmF5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvVjgvVjhGbG9hdDY0QXJyYXkuY3BwCkBAIC01NCw3ICs1NCw3IEBAIHN0YXRpYyB2
ODo6SGFuZGxlPHY4OjpWYWx1ZT4gZm9vQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJn
cykKICAgICBpZiAoYXJncy5MZW5ndGgoKSA8IDEpCiAgICAgICAgIHJldHVybiB0aHJvd05vdEVu
b3VnaEFyZ3VtZW50c0Vycm9yKGFyZ3MuR2V0SXNvbGF0ZSgpKTsKICAgICBGbG9hdDY0QXJyYXkq
IGltcCA9IFY4RmxvYXQ2NEFycmF5Ojp0b05hdGl2ZShhcmdzLkhvbGRlcigpKTsKLSAgICBFWENF
UFRJT05fQkxPQ0soRmxvYXQzMkFycmF5KiwgYXJyYXksIFY4RmxvYXQzMkFycmF5OjpIYXNJbnN0
YW5jZShNQVlCRV9NSVNTSU5HX1BBUkFNRVRFUihhcmdzLCAwLCBEZWZhdWx0SXNVbmRlZmluZWQp
KSA/IFY4RmxvYXQzMkFycmF5Ojp0b05hdGl2ZSh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+OjpDYXN0
KE1BWUJFX01JU1NJTkdfUEFSQU1FVEVSKGFyZ3MsIDAsIERlZmF1bHRJc1VuZGVmaW5lZCkpKSA6
IDApOworICAgIFRSWUNBVENIKEZsb2F0MzJBcnJheSosIGFycmF5LCBWOEZsb2F0MzJBcnJheTo6
SGFzSW5zdGFuY2UoTUFZQkVfTUlTU0lOR19QQVJBTUVURVIoYXJncywgMCwgRGVmYXVsdElzVW5k
ZWZpbmVkKSkgPyBWOEZsb2F0MzJBcnJheTo6dG9OYXRpdmUodjg6OkhhbmRsZTx2ODo6T2JqZWN0
Pjo6Q2FzdChNQVlCRV9NSVNTSU5HX1BBUkFNRVRFUihhcmdzLCAwLCBEZWZhdWx0SXNVbmRlZmlu
ZWQpKSkgOiAwKTsKICAgICByZXR1cm4gdG9WOChpbXAtPmZvbyhhcnJheSksIGFyZ3MuSG9sZGVy
KCksIGFyZ3MuR2V0SXNvbGF0ZSgpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEFjdGl2ZURPTU9iamVjdC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0QWN0aXZlRE9NT2JqZWN0
LmNwcAppbmRleCA3NzgzNjlhZmUyN2YyNjJkMTI2N2Y5NmI2MmQ3MzU4OThhYzg5ZmZjLi5kY2Ex
MTFhNGMzNmFkOGExNWQwZDAxOTc4NzFjNTBiM2VlOGViZDA3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0QWN0aXZlRE9NT2JqZWN0LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0QWN0
aXZlRE9NT2JqZWN0LmNwcApAQCAtNTQsNyArNTQsNyBAQCBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6
VmFsdWU+IGV4Y2l0aW5nRnVuY3Rpb25DYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdz
KQogICAgIFRlc3RBY3RpdmVET01PYmplY3QqIGltcCA9IFY4VGVzdEFjdGl2ZURPTU9iamVjdDo6
dG9OYXRpdmUoYXJncy5Ib2xkZXIoKSk7CiAgICAgaWYgKCFCaW5kaW5nU2VjdXJpdHk6OnNob3Vs
ZEFsbG93QWNjZXNzVG9GcmFtZShCaW5kaW5nU3RhdGU6Omluc3RhbmNlKCksIGltcC0+ZnJhbWUo
KSkpCiAgICAgICAgIHJldHVybiB2OFVuZGVmaW5lZCgpOwotICAgIEVYQ0VQVElPTl9CTE9DSyhO
b2RlKiwgbmV4dENoaWxkLCBWOE5vZGU6Okhhc0luc3RhbmNlKE1BWUJFX01JU1NJTkdfUEFSQU1F
VEVSKGFyZ3MsIDAsIERlZmF1bHRJc1VuZGVmaW5lZCkpID8gVjhOb2RlOjp0b05hdGl2ZSh2ODo6
SGFuZGxlPHY4OjpPYmplY3Q+OjpDYXN0KE1BWUJFX01JU1NJTkdfUEFSQU1FVEVSKGFyZ3MsIDAs
IERlZmF1bHRJc1VuZGVmaW5lZCkpKSA6IDApOworICAgIFRSWUNBVENIKE5vZGUqLCBuZXh0Q2hp
bGQsIFY4Tm9kZTo6SGFzSW5zdGFuY2UoTUFZQkVfTUlTU0lOR19QQVJBTUVURVIoYXJncywgMCwg
RGVmYXVsdElzVW5kZWZpbmVkKSkgPyBWOE5vZGU6OnRvTmF0aXZlKHY4OjpIYW5kbGU8djg6Ok9i
amVjdD46OkNhc3QoTUFZQkVfTUlTU0lOR19QQVJBTUVURVIoYXJncywgMCwgRGVmYXVsdElzVW5k
ZWZpbmVkKSkpIDogMCk7CiAgICAgaW1wLT5leGNpdGluZ0Z1bmN0aW9uKG5leHRDaGlsZCk7CiAg
ICAgcmV0dXJuIHY4VW5kZWZpbmVkKCk7CiB9CkBAIC02NSw3ICs2NSw3IEBAIHN0YXRpYyB2ODo6
SGFuZGxlPHY4OjpWYWx1ZT4gcG9zdE1lc3NhZ2VDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRz
JiBhcmdzKQogICAgIGlmIChhcmdzLkxlbmd0aCgpIDwgMSkKICAgICAgICAgcmV0dXJuIHRocm93
Tm90RW5vdWdoQXJndW1lbnRzRXJyb3IoYXJncy5HZXRJc29sYXRlKCkpOwogICAgIFRlc3RBY3Rp
dmVET01PYmplY3QqIGltcCA9IFY4VGVzdEFjdGl2ZURPTU9iamVjdDo6dG9OYXRpdmUoYXJncy5I
b2xkZXIoKSk7Ci0gICAgU1RSSU5HX1RPX1Y4UEFSQU1FVEVSX0VYQ0VQVElPTl9CTE9DSyhWOFN0
cmluZ1Jlc291cmNlPD4sIG1lc3NhZ2UsIE1BWUJFX01JU1NJTkdfUEFSQU1FVEVSKGFyZ3MsIDAs
IERlZmF1bHRJc1VuZGVmaW5lZCkpOworICAgIFRSWUNBVENIX0ZPUl9WOFNUUklOR1JFU09VUkNF
KFY4U3RyaW5nUmVzb3VyY2U8PiwgbWVzc2FnZSwgTUFZQkVfTUlTU0lOR19QQVJBTUVURVIoYXJn
cywgMCwgRGVmYXVsdElzVW5kZWZpbmVkKSk7CiAgICAgaW1wLT5wb3N0TWVzc2FnZShtZXNzYWdl
KTsKICAgICByZXR1cm4gdjhVbmRlZmluZWQoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RDdXN0b21OYW1lZEdldHRlci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0Q3VzdG9tTmFt
ZWRHZXR0ZXIuY3BwCmluZGV4IDg5OTNmNGQ3Y2VhOGY3YmYwOTM1OWU5YjQ4ZWYyYjQ3NDgwMmU1
MmYuLjM4YmIxYjVhYzhjZTZhMzJmY2Q5OWYyNmZkNjgwZjBjODljNmJiNGYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RDdXN0b21OYW1l
ZEdldHRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4
L1Y4VGVzdEN1c3RvbU5hbWVkR2V0dGVyLmNwcApAQCAtNDQsNyArNDQsNyBAQCBzdGF0aWMgdjg6
OkhhbmRsZTx2ODo6VmFsdWU+IGFub3RoZXJGdW5jdGlvbkNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1
bWVudHMmIGFyZ3MpCiAgICAgaWYgKGFyZ3MuTGVuZ3RoKCkgPCAxKQogICAgICAgICByZXR1cm4g
dGhyb3dOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihhcmdzLkdldElzb2xhdGUoKSk7CiAgICAgVGVz
dEN1c3RvbU5hbWVkR2V0dGVyKiBpbXAgPSBWOFRlc3RDdXN0b21OYW1lZEdldHRlcjo6dG9OYXRp
dmUoYXJncy5Ib2xkZXIoKSk7Ci0gICAgU1RSSU5HX1RPX1Y4UEFSQU1FVEVSX0VYQ0VQVElPTl9C
TE9DSyhWOFN0cmluZ1Jlc291cmNlPD4sIHN0ciwgTUFZQkVfTUlTU0lOR19QQVJBTUVURVIoYXJn
cywgMCwgRGVmYXVsdElzVW5kZWZpbmVkKSk7CisgICAgVFJZQ0FUQ0hfRk9SX1Y4U1RSSU5HUkVT
T1VSQ0UoVjhTdHJpbmdSZXNvdXJjZTw+LCBzdHIsIE1BWUJFX01JU1NJTkdfUEFSQU1FVEVSKGFy
Z3MsIDAsIERlZmF1bHRJc1VuZGVmaW5lZCkpOwogICAgIGltcC0+YW5vdGhlckZ1bmN0aW9uKHN0
cik7CiAgICAgcmV0dXJuIHY4VW5kZWZpbmVkKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0RXZlbnRDb25zdHJ1Y3Rvci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0RXZlbnRDb25z
dHJ1Y3Rvci5jcHAKaW5kZXggYjY2YTJjNjc0MTEzMTRhMDIzMzBiZTU1OTA0YjlhY2EyNWY0MDMy
Yy4uNzhlMThjOTBhMDdlNDNjNGNlZmU0NTlmNWIxYjRhMzBiYmQ1NTk2YSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEV2ZW50Q29uc3Ry
dWN0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9W
OFRlc3RFdmVudENvbnN0cnVjdG9yLmNwcApAQCAtNzIsMTAgKzcyLDEwIEBAIHY4OjpIYW5kbGU8
djg6OlZhbHVlPiBWOFRlc3RFdmVudENvbnN0cnVjdG9yOjpjb25zdHJ1Y3RvckNhbGxiYWNrKGNv
bnN0IHY4OjpBcmd1CiAgICAgaWYgKGFyZ3MuTGVuZ3RoKCkgPCAxKQogICAgICAgICByZXR1cm4g
dGhyb3dOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihhcmdzLkdldElzb2xhdGUoKSk7CiAKLSAgICBT
VFJJTkdfVE9fVjhQQVJBTUVURVJfRVhDRVBUSU9OX0JMT0NLKFY4U3RyaW5nUmVzb3VyY2U8Piwg
dHlwZSwgYXJnc1swXSk7CisgICAgVFJZQ0FUQ0hfRk9SX1Y4U1RSSU5HUkVTT1VSQ0UoVjhTdHJp
bmdSZXNvdXJjZTw+LCB0eXBlLCBhcmdzWzBdKTsKICAgICBUZXN0RXZlbnRDb25zdHJ1Y3Rvcklu
aXQgZXZlbnRJbml0OwogICAgIGlmIChhcmdzLkxlbmd0aCgpID49IDIpIHsKLSAgICAgICAgRVhD
RVBUSU9OX0JMT0NLKERpY3Rpb25hcnksIG9wdGlvbnMsIERpY3Rpb25hcnkoYXJnc1sxXSwgYXJn
cy5HZXRJc29sYXRlKCkpKTsKKyAgICAgICAgVFJZQ0FUQ0goRGljdGlvbmFyeSwgb3B0aW9ucywg
RGljdGlvbmFyeShhcmdzWzFdLCBhcmdzLkdldElzb2xhdGUoKSkpOwogICAgICAgICBpZiAoIWZp
bGxUZXN0RXZlbnRDb25zdHJ1Y3RvckluaXQoZXZlbnRJbml0LCBvcHRpb25zKSkKICAgICAgICAg
ICAgIHJldHVybiB2OFVuZGVmaW5lZCgpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RFdmVudFRhcmdldC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0RXZlbnRUYXJnZXQuY3Bw
CmluZGV4IDQyNzA1YjRjYmE0MzNjZmVmYzUyM2Q1YTg4NDMyOTdjNzhiNWFmNzEuLjI3MjAzNDcx
ZDVhNThkMmVmNjc2ZjFhYjBkNjJiMDNlYTdlYjgwMjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RFdmVudFRhcmdldC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEV2ZW50VGFyZ2V0
LmNwcApAQCAtNDksNyArNDksNyBAQCBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGl0ZW1D
YWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogICAgIFRlc3RFdmVudFRhcmdldCog
aW1wID0gVjhUZXN0RXZlbnRUYXJnZXQ6OnRvTmF0aXZlKGFyZ3MuSG9sZGVyKCkpOwogICAgIEV4
Y2VwdGlvbkNvZGUgZWMgPSAwOwogICAgIHsKLSAgICBFWENFUFRJT05fQkxPQ0soaW50LCBpbmRl
eCwgdG9VSW50MzIoTUFZQkVfTUlTU0lOR19QQVJBTUVURVIoYXJncywgMCwgRGVmYXVsdElzVW5k
ZWZpbmVkKSkpOworICAgIFRSWUNBVENIKGludCwgaW5kZXgsIHRvVUludDMyKE1BWUJFX01JU1NJ
TkdfUEFSQU1FVEVSKGFyZ3MsIDAsIERlZmF1bHRJc1VuZGVmaW5lZCkpKTsKICAgICBpZiAoVU5M
SUtFTFkoaW5kZXggPCAwKSkgewogICAgICAgICBlYyA9IElOREVYX1NJWkVfRVJSOwogICAgICAg
ICBnb3RvIGZhaWw7CkBAIC05MCw3ICs5MCw3IEBAIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1
ZT4gZGlzcGF0Y2hFdmVudENhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiAgICAg
VGVzdEV2ZW50VGFyZ2V0KiBpbXAgPSBWOFRlc3RFdmVudFRhcmdldDo6dG9OYXRpdmUoYXJncy5I
b2xkZXIoKSk7CiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CiAgICAgewotICAgIEVYQ0VQVElP
Tl9CTE9DSyhFdmVudCosIGV2dCwgVjhFdmVudDo6SGFzSW5zdGFuY2UoTUFZQkVfTUlTU0lOR19Q
QVJBTUVURVIoYXJncywgMCwgRGVmYXVsdElzVW5kZWZpbmVkKSkgPyBWOEV2ZW50Ojp0b05hdGl2
ZSh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+OjpDYXN0KE1BWUJFX01JU1NJTkdfUEFSQU1FVEVSKGFy
Z3MsIDAsIERlZmF1bHRJc1VuZGVmaW5lZCkpKSA6IDApOworICAgIFRSWUNBVENIKEV2ZW50Kiwg
ZXZ0LCBWOEV2ZW50OjpIYXNJbnN0YW5jZShNQVlCRV9NSVNTSU5HX1BBUkFNRVRFUihhcmdzLCAw
LCBEZWZhdWx0SXNVbmRlZmluZWQpKSA/IFY4RXZlbnQ6OnRvTmF0aXZlKHY4OjpIYW5kbGU8djg6
Ok9iamVjdD46OkNhc3QoTUFZQkVfTUlTU0lOR19QQVJBTUVURVIoYXJncywgMCwgRGVmYXVsdElz
VW5kZWZpbmVkKSkpIDogMCk7CiAgICAgYm9vbCByZXN1bHQgPSBpbXAtPmRpc3BhdGNoRXZlbnQo
ZXZ0LCBlYyk7CiAgICAgaWYgKFVOTElLRUxZKGVjKSkKICAgICAgICAgZ290byBmYWlsOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdElu
dGVyZmFjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhU
ZXN0SW50ZXJmYWNlLmNwcAppbmRleCA0ZWViOGI5MDkxMjMwMzFlNGRjMjQwMzg0MDcwODc0OWQ2
MDQ1OTBmLi5iZjEzNmUwYWE4Zjk1M2M4YTgyZWVkMGQ4YzdmMmMxNTg4OTU3OWI2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0SW50ZXJm
YWNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhU
ZXN0SW50ZXJmYWNlLmNwcApAQCAtNzEsNyArNzEsNyBAQCBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6
VmFsdWU+IHN1cHBsZW1lbnRhbFN0YXRpY0F0dHJBdHRyR2V0dGVyKHY4OjpMb2NhbDx2ODo6U3Ry
aQogc3RhdGljIHZvaWQgc3VwcGxlbWVudGFsU3RhdGljQXR0ckF0dHJTZXR0ZXIodjg6OkxvY2Fs
PHY4OjpTdHJpbmc+IG5hbWUsIHY4OjpMb2NhbDx2ODo6VmFsdWU+IHZhbHVlLCBjb25zdCB2ODo6
QWNjZXNzb3JJbmZvJiBpbmZvKQogewogICAgIElOQ19TVEFUUygiRE9NLlRlc3RJbnRlcmZhY2Uu
c3VwcGxlbWVudGFsU3RhdGljQXR0ci5fc2V0Iik7Ci0gICAgU1RSSU5HX1RPX1Y4UEFSQU1FVEVS
X0VYQ0VQVElPTl9CTE9DS19WT0lEKFY4U3RyaW5nUmVzb3VyY2U8PiwgdiwgdmFsdWUpOworICAg
IFRSWUNBVENIX0ZPUl9WOFNUUklOR1JFU09VUkNFX1ZPSUQoVjhTdHJpbmdSZXNvdXJjZTw+LCB2
LCB2YWx1ZSk7CiAgICAgVGVzdFN1cHBsZW1lbnRhbDo6c2V0U3VwcGxlbWVudGFsU3RhdGljQXR0
cih2KTsKICAgICByZXR1cm47CiB9CkBAIC0xMDYsNyArMTA2LDcgQEAgc3RhdGljIHZvaWQgc3Vw
cGxlbWVudGFsU3RyMkF0dHJTZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIHY4OjpM
b2NhbDx2ODoKIHsKICAgICBJTkNfU1RBVFMoIkRPTS5UZXN0SW50ZXJmYWNlLnN1cHBsZW1lbnRh
bFN0cjIuX3NldCIpOwogICAgIFRlc3RJbnRlcmZhY2UqIGltcCA9IFY4VGVzdEludGVyZmFjZTo6
dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSk7Ci0gICAgU1RSSU5HX1RPX1Y4UEFSQU1FVEVSX0VYQ0VQ
VElPTl9CTE9DS19WT0lEKFY4U3RyaW5nUmVzb3VyY2U8PiwgdiwgdmFsdWUpOworICAgIFRSWUNB
VENIX0ZPUl9WOFNUUklOR1JFU09VUkNFX1ZPSUQoVjhTdHJpbmdSZXNvdXJjZTw+LCB2LCB2YWx1
ZSk7CiAgICAgVGVzdFN1cHBsZW1lbnRhbDo6c2V0U3VwcGxlbWVudGFsU3RyMihpbXAsIHYpOwog
ICAgIHJldHVybjsKIH0KQEAgLTE1OSw4ICsxNTksOCBAQCBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6
VmFsdWU+IHN1cHBsZW1lbnRhbE1ldGhvZDJDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBh
cgogICAgIFRlc3RJbnRlcmZhY2UqIGltcCA9IFY4VGVzdEludGVyZmFjZTo6dG9OYXRpdmUoYXJn
cy5Ib2xkZXIoKSk7CiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CiAgICAgewotICAgIFNUUklO
R19UT19WOFBBUkFNRVRFUl9FWENFUFRJT05fQkxPQ0soVjhTdHJpbmdSZXNvdXJjZTw+LCBzdHJB
cmcsIE1BWUJFX01JU1NJTkdfUEFSQU1FVEVSKGFyZ3MsIDAsIERlZmF1bHRJc1VuZGVmaW5lZCkp
OwotICAgIEVYQ0VQVElPTl9CTE9DSyhUZXN0T2JqKiwgb2JqQXJnLCBWOFRlc3RPYmo6Okhhc0lu
c3RhbmNlKE1BWUJFX01JU1NJTkdfUEFSQU1FVEVSKGFyZ3MsIDEsIERlZmF1bHRJc1VuZGVmaW5l
ZCkpID8gVjhUZXN0T2JqOjp0b05hdGl2ZSh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+OjpDYXN0KE1B
WUJFX01JU1NJTkdfUEFSQU1FVEVSKGFyZ3MsIDEsIERlZmF1bHRJc1VuZGVmaW5lZCkpKSA6IDAp
OworICAgIFRSWUNBVENIX0ZPUl9WOFNUUklOR1JFU09VUkNFKFY4U3RyaW5nUmVzb3VyY2U8Piwg
c3RyQXJnLCBNQVlCRV9NSVNTSU5HX1BBUkFNRVRFUihhcmdzLCAwLCBEZWZhdWx0SXNVbmRlZmlu
ZWQpKTsKKyAgICBUUllDQVRDSChUZXN0T2JqKiwgb2JqQXJnLCBWOFRlc3RPYmo6Okhhc0luc3Rh
bmNlKE1BWUJFX01JU1NJTkdfUEFSQU1FVEVSKGFyZ3MsIDEsIERlZmF1bHRJc1VuZGVmaW5lZCkp
ID8gVjhUZXN0T2JqOjp0b05hdGl2ZSh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+OjpDYXN0KE1BWUJF
X01JU1NJTkdfUEFSQU1FVEVSKGFyZ3MsIDEsIERlZmF1bHRJc1VuZGVmaW5lZCkpKSA6IDApOwog
ICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdENvbnRleHQgPSBnZXRTY3JpcHRFeGVj
dXRpb25Db250ZXh0KCk7CiAgICAgUmVmUHRyPFRlc3RPYmo+IHJlc3VsdCA9IFRlc3RTdXBwbGVt
ZW50YWw6OnN1cHBsZW1lbnRhbE1ldGhvZDIoc2NyaXB0Q29udGV4dCwgaW1wLCBzdHJBcmcsIG9i
akFyZywgZWMpOwogICAgIGlmIChVTkxJS0VMWShlYykpCkBAIC0yNTIsOCArMjUyLDggQEAgdjg6
OkhhbmRsZTx2ODo6VmFsdWU+IFY4VGVzdEludGVyZmFjZTo6Y29uc3RydWN0b3JDYWxsYmFjayhj
b25zdCB2ODo6QXJndW1lbnRzJgogICAgICAgICByZXR1cm4gdGhyb3dOb3RFbm91Z2hBcmd1bWVu
dHNFcnJvcihhcmdzLkdldElzb2xhdGUoKSk7CiAKICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsK
LSAgICBTVFJJTkdfVE9fVjhQQVJBTUVURVJfRVhDRVBUSU9OX0JMT0NLKFY4U3RyaW5nUmVzb3Vy
Y2U8Piwgc3RyMSwgTUFZQkVfTUlTU0lOR19QQVJBTUVURVIoYXJncywgMCwgRGVmYXVsdElzVW5k
ZWZpbmVkKSk7Ci0gICAgU1RSSU5HX1RPX1Y4UEFSQU1FVEVSX0VYQ0VQVElPTl9CTE9DSyhWOFN0
cmluZ1Jlc291cmNlPD4sIHN0cjIsIE1BWUJFX01JU1NJTkdfUEFSQU1FVEVSKGFyZ3MsIDEsIERl
ZmF1bHRJc1VuZGVmaW5lZCkpOworICAgIFRSWUNBVENIX0ZPUl9WOFNUUklOR1JFU09VUkNFKFY4
U3RyaW5nUmVzb3VyY2U8Piwgc3RyMSwgTUFZQkVfTUlTU0lOR19QQVJBTUVURVIoYXJncywgMCwg
RGVmYXVsdElzVW5kZWZpbmVkKSk7CisgICAgVFJZQ0FUQ0hfRk9SX1Y4U1RSSU5HUkVTT1VSQ0Uo
VjhTdHJpbmdSZXNvdXJjZTw+LCBzdHIyLCBNQVlCRV9NSVNTSU5HX1BBUkFNRVRFUihhcmdzLCAx
LCBEZWZhdWx0SXNVbmRlZmluZWQpKTsKIAogICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNv
bnRleHQgPSBnZXRTY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RNZWRpYVF1ZXJ5TGlzdExp
c3RlbmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRl
c3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyLmNwcAppbmRleCA5ZTBlMmZjMzg3MzUxNDgxMmJmMzky
MDRjNGZhMzA1YzZmNGQ5YTk3Li45MGEyZTZjZDBlYjhlODU5ZjEyMzIzMzA4NDE4Zjc3OTg2ZDdl
MWFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgv
VjhUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIuY3BwCkBA
IC00NSw3ICs0NSw3IEBAIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gbWV0aG9kQ2FsbGJh
Y2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKICAgICBpZiAoYXJncy5MZW5ndGgoKSA8IDEp
CiAgICAgICAgIHJldHVybiB0aHJvd05vdEVub3VnaEFyZ3VtZW50c0Vycm9yKGFyZ3MuR2V0SXNv
bGF0ZSgpKTsKICAgICBUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lciogaW1wID0gVjhUZXN0TWVk
aWFRdWVyeUxpc3RMaXN0ZW5lcjo6dG9OYXRpdmUoYXJncy5Ib2xkZXIoKSk7Ci0gICAgRVhDRVBU
SU9OX0JMT0NLKFJlZlB0cjxNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyPiwgbGlzdGVuZXIsIE1lZGlh
UXVlcnlMaXN0TGlzdGVuZXI6OmNyZWF0ZShNQVlCRV9NSVNTSU5HX1BBUkFNRVRFUihhcmdzLCAw
LCBEZWZhdWx0SXNVbmRlZmluZWQpKSk7CisgICAgVFJZQ0FUQ0goUmVmUHRyPE1lZGlhUXVlcnlM
aXN0TGlzdGVuZXI+LCBsaXN0ZW5lciwgTWVkaWFRdWVyeUxpc3RMaXN0ZW5lcjo6Y3JlYXRlKE1B
WUJFX01JU1NJTkdfUEFSQU1FVEVSKGFyZ3MsIDAsIERlZmF1bHRJc1VuZGVmaW5lZCkpKTsKICAg
ICBpbXAtPm1ldGhvZChsaXN0ZW5lcik7CiAgICAgcmV0dXJuIHY4VW5kZWZpbmVkKCk7CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0
TmFtZWRDb25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvVjgvVjhUZXN0TmFtZWRDb25zdHJ1Y3Rvci5jcHAKaW5kZXggZWNkNGU2NmVlMTFjYzE0MDFj
ZmY2N2U3MzdhNGIzMTExZTUxMmUwOC4uYTcwZWMyYjc2NzJjNmZkOWQ3ODdjNTY5OTlhMmI5YzAz
NjRiNzdjZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L1Y4L1Y4VGVzdE5hbWVkQ29uc3RydWN0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3ROYW1lZENvbnN0cnVjdG9yLmNwcApAQCAtNjEsOSAr
NjEsOSBAQCBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4VGVzdE5hbWVkQ29uc3RydWN0
b3JDb25zdHJ1Y3RvckNhbGxiYWNrKGNvbnN0IHY4OgogICAgICAgICByZXR1cm4gdGhyb3dOb3RF
bm91Z2hBcmd1bWVudHNFcnJvcihhcmdzLkdldElzb2xhdGUoKSk7CiAKICAgICBFeGNlcHRpb25D
b2RlIGVjID0gMDsKLSAgICBTVFJJTkdfVE9fVjhQQVJBTUVURVJfRVhDRVBUSU9OX0JMT0NLKFY4
U3RyaW5nUmVzb3VyY2U8Piwgc3RyMSwgTUFZQkVfTUlTU0lOR19QQVJBTUVURVIoYXJncywgMCwg
RGVmYXVsdElzVW5kZWZpbmVkKSk7Ci0gICAgU1RSSU5HX1RPX1Y4UEFSQU1FVEVSX0VYQ0VQVElP
Tl9CTE9DSyhWOFN0cmluZ1Jlc291cmNlPD4sIHN0cjIsIE1BWUJFX01JU1NJTkdfUEFSQU1FVEVS
KGFyZ3MsIDEsIERlZmF1bHRJc1VuZGVmaW5lZCkpOwotICAgIFNUUklOR19UT19WOFBBUkFNRVRF
Ul9FWENFUFRJT05fQkxPQ0soVjhTdHJpbmdSZXNvdXJjZTw+LCBzdHIzLCBNQVlCRV9NSVNTSU5H
X1BBUkFNRVRFUihhcmdzLCAyLCBEZWZhdWx0SXNOdWxsU3RyaW5nKSk7CisgICAgVFJZQ0FUQ0hf
Rk9SX1Y4U1RSSU5HUkVTT1VSQ0UoVjhTdHJpbmdSZXNvdXJjZTw+LCBzdHIxLCBNQVlCRV9NSVNT
SU5HX1BBUkFNRVRFUihhcmdzLCAwLCBEZWZhdWx0SXNVbmRlZmluZWQpKTsKKyAgICBUUllDQVRD
SF9GT1JfVjhTVFJJTkdSRVNPVVJDRShWOFN0cmluZ1Jlc291cmNlPD4sIHN0cjIsIE1BWUJFX01J
U1NJTkdfUEFSQU1FVEVSKGFyZ3MsIDEsIERlZmF1bHRJc1VuZGVmaW5lZCkpOworICAgIFRSWUNB
VENIX0ZPUl9WOFNUUklOR1JFU09VUkNFKFY4U3RyaW5nUmVzb3VyY2U8Piwgc3RyMywgTUFZQkVf
TUlTU0lOR19QQVJBTUVURVIoYXJncywgMiwgRGVmYXVsdElzTnVsbFN0cmluZykpOwogCiAgICAg
UmVmUHRyPFRlc3ROYW1lZENvbnN0cnVjdG9yPiBpbXBsID0gVGVzdE5hbWVkQ29uc3RydWN0b3I6
OmNyZWF0ZUZvckpTQ29uc3RydWN0b3IoZG9jdW1lbnQsIHN0cjEsIHN0cjIsIHN0cjMsIGVjKTsK
ICAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdyYXBwZXIgPSBhcmdzLkhvbGRlcigpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE9i
ai5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0T2Jq
LmNwcAppbmRleCA3NzFjNDYxNjljMmM1ZWMyNWJlMTMxNTFmYzdkYzgwMGRmZWNjOTg2Li5jMGRj
YjQ4OWU3OTdmMWMyYjc0ODI1Y2IyMWI5Yjk0MWFmMjExYTRlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0T2JqLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0T2JqLmNwcApAQCAtMTI0
LDcgKzEyNCw3IEBAIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gc3RhdGljU3RyaW5nQXR0
ckF0dHJHZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hCiBzdGF0aWMgdm9pZCBzdGF0aWNT
dHJpbmdBdHRyQXR0clNldHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgdjg6OkxvY2Fs
PHY4OjpWYWx1ZT4gdmFsdWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCiB7CiAgICAg
SU5DX1NUQVRTKCJET00uVGVzdE9iai5zdGF0aWNTdHJpbmdBdHRyLl9zZXQiKTsKLSAgICBTVFJJ
TkdfVE9fVjhQQVJBTUVURVJfRVhDRVBUSU9OX0JMT0NLX1ZPSUQoVjhTdHJpbmdSZXNvdXJjZTw+
LCB2LCB2YWx1ZSk7CisgICAgVFJZQ0FUQ0hfRk9SX1Y4U1RSSU5HUkVTT1VSQ0VfVk9JRChWOFN0
cmluZ1Jlc291cmNlPD4sIHYsIHZhbHVlKTsKICAgICBUZXN0T2JqOjpzZXRTdGF0aWNTdHJpbmdB
dHRyKHYpOwogICAgIHJldHVybjsKIH0KQEAgLTIyMCw3ICsyMjAsNyBAQCBzdGF0aWMgdm9pZCBz
dHJpbmdBdHRyQXR0clNldHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgdjg6OkxvY2Fs
PHY4OjpWYWx1ZQogewogICAgIElOQ19TVEFUUygiRE9NLlRlc3RPYmouc3RyaW5nQXR0ci5fc2V0
Iik7CiAgICAgVGVzdE9iaiogaW1wID0gVjhUZXN0T2JqOjp0b05hdGl2ZShpbmZvLkhvbGRlcigp
KTsKLSAgICBTVFJJTkdfVE9fVjhQQVJBTUVURVJfRVhDRVBUSU9OX0JMT0NLX1ZPSUQoVjhTdHJp
bmdSZXNvdXJjZTw+LCB2LCB2YWx1ZSk7CisgICAgVFJZQ0FUQ0hfRk9SX1Y4U1RSSU5HUkVTT1VS
Q0VfVk9JRChWOFN0cmluZ1Jlc291cmNlPD4sIHYsIHZhbHVlKTsKICAgICBpbXAtPnNldFN0cmlu
Z0F0dHIodik7CiAgICAgcmV0dXJuOwogfQpAQCAtMjg2LDcgKzI4Niw3IEBAIHN0YXRpYyB2b2lk
IHJlZmxlY3RlZFN0cmluZ0F0dHJBdHRyU2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1l
LCB2ODo6TG9jYWw8CiB7CiAgICAgSU5DX1NUQVRTKCJET00uVGVzdE9iai5yZWZsZWN0ZWRTdHJp
bmdBdHRyLl9zZXQiKTsKICAgICBUZXN0T2JqKiBpbXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZlKGlu
Zm8uSG9sZGVyKCkpOwotICAgIFNUUklOR19UT19WOFBBUkFNRVRFUl9FWENFUFRJT05fQkxPQ0tf
Vk9JRChWOFN0cmluZ1Jlc291cmNlPFdpdGhOdWxsQ2hlY2s+LCB2LCB2YWx1ZSk7CisgICAgVFJZ
Q0FUQ0hfRk9SX1Y4U1RSSU5HUkVTT1VSQ0VfVk9JRChWOFN0cmluZ1Jlc291cmNlPFdpdGhOdWxs
Q2hlY2s+LCB2LCB2YWx1ZSk7CiAgICAgaW1wLT5zZXRBdHRyaWJ1dGUoV2ViQ29yZTo6SFRNTE5h
bWVzOjpyZWZsZWN0ZWRzdHJpbmdhdHRyQXR0ciwgdik7CiAgICAgcmV0dXJuOwogfQpAQCAtMzUw
LDcgKzM1MCw3IEBAIHN0YXRpYyB2b2lkIHJlZmxlY3RlZFVSTEF0dHJBdHRyU2V0dGVyKHY4OjpM
b2NhbDx2ODo6U3RyaW5nPiBuYW1lLCB2ODo6TG9jYWw8djg6CiB7CiAgICAgSU5DX1NUQVRTKCJE
T00uVGVzdE9iai5yZWZsZWN0ZWRVUkxBdHRyLl9zZXQiKTsKICAgICBUZXN0T2JqKiBpbXAgPSBW
OFRlc3RPYmo6OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkpOwotICAgIFNUUklOR19UT19WOFBBUkFN
RVRFUl9FWENFUFRJT05fQkxPQ0tfVk9JRChWOFN0cmluZ1Jlc291cmNlPFdpdGhOdWxsQ2hlY2s+
LCB2LCB2YWx1ZSk7CisgICAgVFJZQ0FUQ0hfRk9SX1Y4U1RSSU5HUkVTT1VSQ0VfVk9JRChWOFN0
cmluZ1Jlc291cmNlPFdpdGhOdWxsQ2hlY2s+LCB2LCB2YWx1ZSk7CiAgICAgaW1wLT5zZXRBdHRy
aWJ1dGUoV2ViQ29yZTo6SFRNTE5hbWVzOjpyZWZsZWN0ZWR1cmxhdHRyQXR0ciwgdik7CiAgICAg
cmV0dXJuOwogfQpAQCAtMzY2LDcgKzM2Niw3IEBAIHN0YXRpYyB2b2lkIHJlZmxlY3RlZFN0cmlu
Z0F0dHJBdHRyU2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCB2ODo6TG9jYWw8CiB7
CiAgICAgSU5DX1NUQVRTKCJET00uVGVzdE9iai5yZWZsZWN0ZWRTdHJpbmdBdHRyLl9zZXQiKTsK
ICAgICBUZXN0T2JqKiBpbXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkpOwot
ICAgIFNUUklOR19UT19WOFBBUkFNRVRFUl9FWENFUFRJT05fQkxPQ0tfVk9JRChWOFN0cmluZ1Jl
c291cmNlPFdpdGhOdWxsQ2hlY2s+LCB2LCB2YWx1ZSk7CisgICAgVFJZQ0FUQ0hfRk9SX1Y4U1RS
SU5HUkVTT1VSQ0VfVk9JRChWOFN0cmluZ1Jlc291cmNlPFdpdGhOdWxsQ2hlY2s+LCB2LCB2YWx1
ZSk7CiAgICAgaW1wLT5zZXRBdHRyaWJ1dGUoV2ViQ29yZTo6SFRNTE5hbWVzOjpjdXN0b21Db250
ZW50U3RyaW5nQXR0ckF0dHIsIHYpOwogICAgIHJldHVybjsKIH0KQEAgLTQxNCw3ICs0MTQsNyBA
QCBzdGF0aWMgdm9pZCByZWZsZWN0ZWRDdXN0b21VUkxBdHRyQXR0clNldHRlcih2ODo6TG9jYWw8
djg6OlN0cmluZz4gbmFtZSwgdjg6OkxvYwogewogICAgIElOQ19TVEFUUygiRE9NLlRlc3RPYmou
cmVmbGVjdGVkQ3VzdG9tVVJMQXR0ci5fc2V0Iik7CiAgICAgVGVzdE9iaiogaW1wID0gVjhUZXN0
T2JqOjp0b05hdGl2ZShpbmZvLkhvbGRlcigpKTsKLSAgICBTVFJJTkdfVE9fVjhQQVJBTUVURVJf
RVhDRVBUSU9OX0JMT0NLX1ZPSUQoVjhTdHJpbmdSZXNvdXJjZTxXaXRoTnVsbENoZWNrPiwgdiwg
dmFsdWUpOworICAgIFRSWUNBVENIX0ZPUl9WOFNUUklOR1JFU09VUkNFX1ZPSUQoVjhTdHJpbmdS
ZXNvdXJjZTxXaXRoTnVsbENoZWNrPiwgdiwgdmFsdWUpOwogICAgIGltcC0+c2V0QXR0cmlidXRl
KFdlYkNvcmU6OkhUTUxOYW1lczo6Y3VzdG9tQ29udGVudFVSTEF0dHJBdHRyLCB2KTsKICAgICBy
ZXR1cm47CiB9CkBAIC00ODksNyArNDg5LDcgQEAgc3RhdGljIHZvaWQgc3RyaW5nQXR0cldpdGhH
ZXR0ZXJFeGNlcHRpb25BdHRyU2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLAogewog
ICAgIElOQ19TVEFUUygiRE9NLlRlc3RPYmouc3RyaW5nQXR0cldpdGhHZXR0ZXJFeGNlcHRpb24u
X3NldCIpOwogICAgIFRlc3RPYmoqIGltcCA9IFY4VGVzdE9iajo6dG9OYXRpdmUoaW5mby5Ib2xk
ZXIoKSk7Ci0gICAgU1RSSU5HX1RPX1Y4UEFSQU1FVEVSX0VYQ0VQVElPTl9CTE9DS19WT0lEKFY4
U3RyaW5nUmVzb3VyY2U8PiwgdiwgdmFsdWUpOworICAgIFRSWUNBVENIX0ZPUl9WOFNUUklOR1JF
U09VUkNFX1ZPSUQoVjhTdHJpbmdSZXNvdXJjZTw+LCB2LCB2YWx1ZSk7CiAgICAgaW1wLT5zZXRT
dHJpbmdBdHRyV2l0aEdldHRlckV4Y2VwdGlvbih2KTsKICAgICByZXR1cm47CiB9CkBAIC01MDUs
NyArNTA1LDcgQEAgc3RhdGljIHZvaWQgc3RyaW5nQXR0cldpdGhTZXR0ZXJFeGNlcHRpb25BdHRy
U2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLAogewogICAgIElOQ19TVEFUUygiRE9N
LlRlc3RPYmouc3RyaW5nQXR0cldpdGhTZXR0ZXJFeGNlcHRpb24uX3NldCIpOwogICAgIFRlc3RP
YmoqIGltcCA9IFY4VGVzdE9iajo6dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSk7Ci0gICAgU1RSSU5H
X1RPX1Y4UEFSQU1FVEVSX0VYQ0VQVElPTl9CTE9DS19WT0lEKFY4U3RyaW5nUmVzb3VyY2U8Piwg
diwgdmFsdWUpOworICAgIFRSWUNBVENIX0ZPUl9WOFNUUklOR1JFU09VUkNFX1ZPSUQoVjhTdHJp
bmdSZXNvdXJjZTw+LCB2LCB2YWx1ZSk7CiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CiAgICAg
aW1wLT5zZXRTdHJpbmdBdHRyV2l0aFNldHRlckV4Y2VwdGlvbih2LCBlYyk7CiAgICAgaWYgKFVO
TElLRUxZKGVjKSkKQEAgLTEwNTYsOSArMTA1Niw5IEBAIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpW
YWx1ZT4gdm9pZE1ldGhvZFdpdGhBcmdzQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJn
CiAgICAgaWYgKGFyZ3MuTGVuZ3RoKCkgPCAzKQogICAgICAgICByZXR1cm4gdGhyb3dOb3RFbm91
Z2hBcmd1bWVudHNFcnJvcihhcmdzLkdldElzb2xhdGUoKSk7CiAgICAgVGVzdE9iaiogaW1wID0g
VjhUZXN0T2JqOjp0b05hdGl2ZShhcmdzLkhvbGRlcigpKTsKLSAgICBFWENFUFRJT05fQkxPQ0so
aW50LCBsb25nQXJnLCB0b0ludDMyKE1BWUJFX01JU1NJTkdfUEFSQU1FVEVSKGFyZ3MsIDAsIERl
ZmF1bHRJc1VuZGVmaW5lZCkpKTsKLSAgICBTVFJJTkdfVE9fVjhQQVJBTUVURVJfRVhDRVBUSU9O
X0JMT0NLKFY4U3RyaW5nUmVzb3VyY2U8Piwgc3RyQXJnLCBNQVlCRV9NSVNTSU5HX1BBUkFNRVRF
UihhcmdzLCAxLCBEZWZhdWx0SXNVbmRlZmluZWQpKTsKLSAgICBFWENFUFRJT05fQkxPQ0soVGVz
dE9iaiosIG9iakFyZywgVjhUZXN0T2JqOjpIYXNJbnN0YW5jZShNQVlCRV9NSVNTSU5HX1BBUkFN
RVRFUihhcmdzLCAyLCBEZWZhdWx0SXNVbmRlZmluZWQpKSA/IFY4VGVzdE9iajo6dG9OYXRpdmUo
djg6OkhhbmRsZTx2ODo6T2JqZWN0Pjo6Q2FzdChNQVlCRV9NSVNTSU5HX1BBUkFNRVRFUihhcmdz
LCAyLCBEZWZhdWx0SXNVbmRlZmluZWQpKSkgOiAwKTsKKyAgICBUUllDQVRDSChpbnQsIGxvbmdB
cmcsIHRvSW50MzIoTUFZQkVfTUlTU0lOR19QQVJBTUVURVIoYXJncywgMCwgRGVmYXVsdElzVW5k
ZWZpbmVkKSkpOworICAgIFRSWUNBVENIX0ZPUl9WOFNUUklOR1JFU09VUkNFKFY4U3RyaW5nUmVz
b3VyY2U8Piwgc3RyQXJnLCBNQVlCRV9NSVNTSU5HX1BBUkFNRVRFUihhcmdzLCAxLCBEZWZhdWx0
SXNVbmRlZmluZWQpKTsKKyAgICBUUllDQVRDSChUZXN0T2JqKiwgb2JqQXJnLCBWOFRlc3RPYmo6
Okhhc0luc3RhbmNlKE1BWUJFX01JU1NJTkdfUEFSQU1FVEVSKGFyZ3MsIDIsIERlZmF1bHRJc1Vu
ZGVmaW5lZCkpID8gVjhUZXN0T2JqOjp0b05hdGl2ZSh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+OjpD
YXN0KE1BWUJFX01JU1NJTkdfUEFSQU1FVEVSKGFyZ3MsIDIsIERlZmF1bHRJc1VuZGVmaW5lZCkp
KSA6IDApOwogICAgIGltcC0+dm9pZE1ldGhvZFdpdGhBcmdzKGxvbmdBcmcsIHN0ckFyZywgb2Jq
QXJnKTsKICAgICByZXR1cm4gdjhVbmRlZmluZWQoKTsKIH0KQEAgLTEwNzYsOSArMTA3Niw5IEBA
IHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gbG9uZ01ldGhvZFdpdGhBcmdzQ2FsbGJhY2so
Y29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJnCiAgICAgaWYgKGFyZ3MuTGVuZ3RoKCkgPCAzKQogICAg
ICAgICByZXR1cm4gdGhyb3dOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihhcmdzLkdldElzb2xhdGUo
KSk7CiAgICAgVGVzdE9iaiogaW1wID0gVjhUZXN0T2JqOjp0b05hdGl2ZShhcmdzLkhvbGRlcigp
KTsKLSAgICBFWENFUFRJT05fQkxPQ0soaW50LCBsb25nQXJnLCB0b0ludDMyKE1BWUJFX01JU1NJ
TkdfUEFSQU1FVEVSKGFyZ3MsIDAsIERlZmF1bHRJc1VuZGVmaW5lZCkpKTsKLSAgICBTVFJJTkdf
VE9fVjhQQVJBTUVURVJfRVhDRVBUSU9OX0JMT0NLKFY4U3RyaW5nUmVzb3VyY2U8Piwgc3RyQXJn
LCBNQVlCRV9NSVNTSU5HX1BBUkFNRVRFUihhcmdzLCAxLCBEZWZhdWx0SXNVbmRlZmluZWQpKTsK
LSAgICBFWENFUFRJT05fQkxPQ0soVGVzdE9iaiosIG9iakFyZywgVjhUZXN0T2JqOjpIYXNJbnN0
YW5jZShNQVlCRV9NSVNTSU5HX1BBUkFNRVRFUihhcmdzLCAyLCBEZWZhdWx0SXNVbmRlZmluZWQp
KSA/IFY4VGVzdE9iajo6dG9OYXRpdmUodjg6OkhhbmRsZTx2ODo6T2JqZWN0Pjo6Q2FzdChNQVlC
RV9NSVNTSU5HX1BBUkFNRVRFUihhcmdzLCAyLCBEZWZhdWx0SXNVbmRlZmluZWQpKSkgOiAwKTsK
KyAgICBUUllDQVRDSChpbnQsIGxvbmdBcmcsIHRvSW50MzIoTUFZQkVfTUlTU0lOR19QQVJBTUVU
RVIoYXJncywgMCwgRGVmYXVsdElzVW5kZWZpbmVkKSkpOworICAgIFRSWUNBVENIX0ZPUl9WOFNU
UklOR1JFU09VUkNFKFY4U3RyaW5nUmVzb3VyY2U8Piwgc3RyQXJnLCBNQVlCRV9NSVNTSU5HX1BB
UkFNRVRFUihhcmdzLCAxLCBEZWZhdWx0SXNVbmRlZmluZWQpKTsKKyAgICBUUllDQVRDSChUZXN0
T2JqKiwgb2JqQXJnLCBWOFRlc3RPYmo6Okhhc0luc3RhbmNlKE1BWUJFX01JU1NJTkdfUEFSQU1F
VEVSKGFyZ3MsIDIsIERlZmF1bHRJc1VuZGVmaW5lZCkpID8gVjhUZXN0T2JqOjp0b05hdGl2ZSh2
ODo6SGFuZGxlPHY4OjpPYmplY3Q+OjpDYXN0KE1BWUJFX01JU1NJTkdfUEFSQU1FVEVSKGFyZ3Ms
IDIsIERlZmF1bHRJc1VuZGVmaW5lZCkpKSA6IDApOwogICAgIHJldHVybiB2OEludGVnZXIoaW1w
LT5sb25nTWV0aG9kV2l0aEFyZ3MobG9uZ0FyZywgc3RyQXJnLCBvYmpBcmcpLCBhcmdzLkdldElz
b2xhdGUoKSk7CiB9CiAKQEAgLTEwOTYsOSArMTA5Niw5IEBAIHN0YXRpYyB2ODo6SGFuZGxlPHY4
OjpWYWx1ZT4gb2JqTWV0aG9kV2l0aEFyZ3NDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBh
cmdzCiAgICAgaWYgKGFyZ3MuTGVuZ3RoKCkgPCAzKQogICAgICAgICByZXR1cm4gdGhyb3dOb3RF
bm91Z2hBcmd1bWVudHNFcnJvcihhcmdzLkdldElzb2xhdGUoKSk7CiAgICAgVGVzdE9iaiogaW1w
ID0gVjhUZXN0T2JqOjp0b05hdGl2ZShhcmdzLkhvbGRlcigpKTsKLSAgICBFWENFUFRJT05fQkxP
Q0soaW50LCBsb25nQXJnLCB0b0ludDMyKE1BWUJFX01JU1NJTkdfUEFSQU1FVEVSKGFyZ3MsIDAs
IERlZmF1bHRJc1VuZGVmaW5lZCkpKTsKLSAgICBTVFJJTkdfVE9fVjhQQVJBTUVURVJfRVhDRVBU
SU9OX0JMT0NLKFY4U3RyaW5nUmVzb3VyY2U8Piwgc3RyQXJnLCBNQVlCRV9NSVNTSU5HX1BBUkFN
RVRFUihhcmdzLCAxLCBEZWZhdWx0SXNVbmRlZmluZWQpKTsKLSAgICBFWENFUFRJT05fQkxPQ0so
VGVzdE9iaiosIG9iakFyZywgVjhUZXN0T2JqOjpIYXNJbnN0YW5jZShNQVlCRV9NSVNTSU5HX1BB
UkFNRVRFUihhcmdzLCAyLCBEZWZhdWx0SXNVbmRlZmluZWQpKSA/IFY4VGVzdE9iajo6dG9OYXRp
dmUodjg6OkhhbmRsZTx2ODo6T2JqZWN0Pjo6Q2FzdChNQVlCRV9NSVNTSU5HX1BBUkFNRVRFUihh
cmdzLCAyLCBEZWZhdWx0SXNVbmRlZmluZWQpKSkgOiAwKTsKKyAgICBUUllDQVRDSChpbnQsIGxv
bmdBcmcsIHRvSW50MzIoTUFZQkVfTUlTU0lOR19QQVJBTUVURVIoYXJncywgMCwgRGVmYXVsdElz
VW5kZWZpbmVkKSkpOworICAgIFRSWUNBVENIX0ZPUl9WOFNUUklOR1JFU09VUkNFKFY4U3RyaW5n
UmVzb3VyY2U8Piwgc3RyQXJnLCBNQVlCRV9NSVNTSU5HX1BBUkFNRVRFUihhcmdzLCAxLCBEZWZh
dWx0SXNVbmRlZmluZWQpKTsKKyAgICBUUllDQVRDSChUZXN0T2JqKiwgb2JqQXJnLCBWOFRlc3RP
Ymo6Okhhc0luc3RhbmNlKE1BWUJFX01JU1NJTkdfUEFSQU1FVEVSKGFyZ3MsIDIsIERlZmF1bHRJ
c1VuZGVmaW5lZCkpID8gVjhUZXN0T2JqOjp0b05hdGl2ZSh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+
OjpDYXN0KE1BWUJFX01JU1NJTkdfUEFSQU1FVEVSKGFyZ3MsIDIsIERlZmF1bHRJc1VuZGVmaW5l
ZCkpKSA6IDApOwogICAgIHJldHVybiB0b1Y4KGltcC0+b2JqTWV0aG9kV2l0aEFyZ3MobG9uZ0Fy
Zywgc3RyQXJnLCBvYmpBcmcpLCBhcmdzLkhvbGRlcigpLCBhcmdzLkdldElzb2xhdGUoKSk7CiB9
CiAKQEAgLTExMDgsNyArMTEwOCw3IEBAIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gbWV0
aG9kV2l0aFNlcXVlbmNlQXJnQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYKICAgICBpZiAo
YXJncy5MZW5ndGgoKSA8IDEpCiAgICAgICAgIHJldHVybiB0aHJvd05vdEVub3VnaEFyZ3VtZW50
c0Vycm9yKGFyZ3MuR2V0SXNvbGF0ZSgpKTsKICAgICBUZXN0T2JqKiBpbXAgPSBWOFRlc3RPYmo6
OnRvTmF0aXZlKGFyZ3MuSG9sZGVyKCkpOwotICAgIEVYQ0VQVElPTl9CTE9DSyhWZWN0b3I8U2Ny
aXB0UHJvZmlsZT4sIHNlcXVlbmNlQXJnLCB0b05hdGl2ZUFycmF5PFNjcmlwdFByb2ZpbGU+KE1B
WUJFX01JU1NJTkdfUEFSQU1FVEVSKGFyZ3MsIDAsIERlZmF1bHRJc1VuZGVmaW5lZCkpKTsKKyAg
ICBUUllDQVRDSChWZWN0b3I8U2NyaXB0UHJvZmlsZT4sIHNlcXVlbmNlQXJnLCB0b05hdGl2ZUFy
cmF5PFNjcmlwdFByb2ZpbGU+KE1BWUJFX01JU1NJTkdfUEFSQU1FVEVSKGFyZ3MsIDAsIERlZmF1
bHRJc1VuZGVmaW5lZCkpKTsKICAgICBpbXAtPm1ldGhvZFdpdGhTZXF1ZW5jZUFyZyhzZXF1ZW5j
ZUFyZyk7CiAgICAgcmV0dXJuIHY4VW5kZWZpbmVkKCk7CiB9CkBAIC0xMTE5LDcgKzExMTksNyBA
QCBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IG1ldGhvZFJldHVybmluZ1NlcXVlbmNlQ2Fs
bGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cwogICAgIGlmIChhcmdzLkxlbmd0aCgpIDwgMSkKICAg
ICAgICAgcmV0dXJuIHRocm93Tm90RW5vdWdoQXJndW1lbnRzRXJyb3IoYXJncy5HZXRJc29sYXRl
KCkpOwogICAgIFRlc3RPYmoqIGltcCA9IFY4VGVzdE9iajo6dG9OYXRpdmUoYXJncy5Ib2xkZXIo
KSk7Ci0gICAgRVhDRVBUSU9OX0JMT0NLKGludCwgbG9uZ0FyZywgdG9JbnQzMihNQVlCRV9NSVNT
SU5HX1BBUkFNRVRFUihhcmdzLCAwLCBEZWZhdWx0SXNVbmRlZmluZWQpKSk7CisgICAgVFJZQ0FU
Q0goaW50LCBsb25nQXJnLCB0b0ludDMyKE1BWUJFX01JU1NJTkdfUEFSQU1FVEVSKGFyZ3MsIDAs
IERlZmF1bHRJc1VuZGVmaW5lZCkpKTsKICAgICByZXR1cm4gdjhBcnJheShpbXAtPm1ldGhvZFJl
dHVybmluZ1NlcXVlbmNlKGxvbmdBcmcpLCBhcmdzLkdldElzb2xhdGUoKSk7CiB9CiAKQEAgLTEx
MzEsOCArMTEzMSw4IEBAIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gbWV0aG9kVGhhdFJl
cXVpcmVzQWxsQXJnc0FuZFRocm93c0NhbGxiYWNrKGNvbnN0IHY4CiAgICAgVGVzdE9iaiogaW1w
ID0gVjhUZXN0T2JqOjp0b05hdGl2ZShhcmdzLkhvbGRlcigpKTsKICAgICBFeGNlcHRpb25Db2Rl
IGVjID0gMDsKICAgICB7Ci0gICAgU1RSSU5HX1RPX1Y4UEFSQU1FVEVSX0VYQ0VQVElPTl9CTE9D
SyhWOFN0cmluZ1Jlc291cmNlPD4sIHN0ckFyZywgTUFZQkVfTUlTU0lOR19QQVJBTUVURVIoYXJn
cywgMCwgRGVmYXVsdElzVW5kZWZpbmVkKSk7Ci0gICAgRVhDRVBUSU9OX0JMT0NLKFRlc3RPYmoq
LCBvYmpBcmcsIFY4VGVzdE9iajo6SGFzSW5zdGFuY2UoTUFZQkVfTUlTU0lOR19QQVJBTUVURVIo
YXJncywgMSwgRGVmYXVsdElzVW5kZWZpbmVkKSkgPyBWOFRlc3RPYmo6OnRvTmF0aXZlKHY4OjpI
YW5kbGU8djg6Ok9iamVjdD46OkNhc3QoTUFZQkVfTUlTU0lOR19QQVJBTUVURVIoYXJncywgMSwg
RGVmYXVsdElzVW5kZWZpbmVkKSkpIDogMCk7CisgICAgVFJZQ0FUQ0hfRk9SX1Y4U1RSSU5HUkVT
T1VSQ0UoVjhTdHJpbmdSZXNvdXJjZTw+LCBzdHJBcmcsIE1BWUJFX01JU1NJTkdfUEFSQU1FVEVS
KGFyZ3MsIDAsIERlZmF1bHRJc1VuZGVmaW5lZCkpOworICAgIFRSWUNBVENIKFRlc3RPYmoqLCBv
YmpBcmcsIFY4VGVzdE9iajo6SGFzSW5zdGFuY2UoTUFZQkVfTUlTU0lOR19QQVJBTUVURVIoYXJn
cywgMSwgRGVmYXVsdElzVW5kZWZpbmVkKSkgPyBWOFRlc3RPYmo6OnRvTmF0aXZlKHY4OjpIYW5k
bGU8djg6Ok9iamVjdD46OkNhc3QoTUFZQkVfTUlTU0lOR19QQVJBTUVURVIoYXJncywgMSwgRGVm
YXVsdElzVW5kZWZpbmVkKSkpIDogMCk7CiAgICAgUmVmUHRyPFRlc3RPYmo+IHJlc3VsdCA9IGlt
cC0+bWV0aG9kVGhhdFJlcXVpcmVzQWxsQXJnc0FuZFRocm93cyhzdHJBcmcsIG9iakFyZywgZWMp
OwogICAgIGlmIChVTkxJS0VMWShlYykpCiAgICAgICAgIGdvdG8gZmFpbDsKQEAgLTExNjIsNyAr
MTE2Miw3IEBAIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gaWRiS2V5Q2FsbGJhY2soY29u
c3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKICAgICBpZiAoYXJncy5MZW5ndGgoKSA8IDEpCiAgICAg
ICAgIHJldHVybiB0aHJvd05vdEVub3VnaEFyZ3VtZW50c0Vycm9yKGFyZ3MuR2V0SXNvbGF0ZSgp
KTsKICAgICBUZXN0T2JqKiBpbXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZlKGFyZ3MuSG9sZGVyKCkp
OwotICAgIEVYQ0VQVElPTl9CTE9DSyhSZWZQdHI8SURCS2V5Piwga2V5LCBjcmVhdGVJREJLZXlG
cm9tVmFsdWUoTUFZQkVfTUlTU0lOR19QQVJBTUVURVIoYXJncywgMCwgRGVmYXVsdElzVW5kZWZp
bmVkKSkpOworICAgIFRSWUNBVENIKFJlZlB0cjxJREJLZXk+LCBrZXksIGNyZWF0ZUlEQktleUZy
b21WYWx1ZShNQVlCRV9NSVNTSU5HX1BBUkFNRVRFUihhcmdzLCAwLCBEZWZhdWx0SXNVbmRlZmlu
ZWQpKSk7CiAgICAgaW1wLT5pZGJLZXkoa2V5LmdldCgpKTsKICAgICByZXR1cm4gdjhVbmRlZmlu
ZWQoKTsKIH0KQEAgLTExNzMsMTAgKzExNzMsMTAgQEAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZh
bHVlPiBvcHRpb25zT2JqZWN0Q2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKICAg
ICBpZiAoYXJncy5MZW5ndGgoKSA8IDEpCiAgICAgICAgIHJldHVybiB0aHJvd05vdEVub3VnaEFy
Z3VtZW50c0Vycm9yKGFyZ3MuR2V0SXNvbGF0ZSgpKTsKICAgICBUZXN0T2JqKiBpbXAgPSBWOFRl
c3RPYmo6OnRvTmF0aXZlKGFyZ3MuSG9sZGVyKCkpOwotICAgIEVYQ0VQVElPTl9CTE9DSyhEaWN0
aW9uYXJ5LCBvbywgRGljdGlvbmFyeShNQVlCRV9NSVNTSU5HX1BBUkFNRVRFUihhcmdzLCAwLCBE
ZWZhdWx0SXNVbmRlZmluZWQpLCBhcmdzLkdldElzb2xhdGUoKSkpOworICAgIFRSWUNBVENIKERp
Y3Rpb25hcnksIG9vLCBEaWN0aW9uYXJ5KE1BWUJFX01JU1NJTkdfUEFSQU1FVEVSKGFyZ3MsIDAs
IERlZmF1bHRJc1VuZGVmaW5lZCksIGFyZ3MuR2V0SXNvbGF0ZSgpKSk7CiAgICAgaWYgKCFvby5p
c1VuZGVmaW5lZE9yTnVsbCgpICYmICFvby5pc09iamVjdCgpKQogICAgICAgICByZXR1cm4gdGhy
b3dUeXBlRXJyb3IoIk5vdCBhbiBvYmplY3QuIiwgYXJncy5HZXRJc29sYXRlKCkpOwotICAgIEVY
Q0VQVElPTl9CTE9DSyhEaWN0aW9uYXJ5LCBvb28sIERpY3Rpb25hcnkoTUFZQkVfTUlTU0lOR19Q
QVJBTUVURVIoYXJncywgMSwgRGVmYXVsdElzVW5kZWZpbmVkKSwgYXJncy5HZXRJc29sYXRlKCkp
KTsKKyAgICBUUllDQVRDSChEaWN0aW9uYXJ5LCBvb28sIERpY3Rpb25hcnkoTUFZQkVfTUlTU0lO
R19QQVJBTUVURVIoYXJncywgMSwgRGVmYXVsdElzVW5kZWZpbmVkKSwgYXJncy5HZXRJc29sYXRl
KCkpKTsKICAgICBpZiAoIW9vby5pc1VuZGVmaW5lZE9yTnVsbCgpICYmICFvb28uaXNPYmplY3Qo
KSkKICAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKCJOb3QgYW4gb2JqZWN0LiIsIGFyZ3Mu
R2V0SXNvbGF0ZSgpKTsKICAgICBpbXAtPm9wdGlvbnNPYmplY3Qob28sIG9vbyk7CkBAIC0xMzg5
LDcgKzEzODksNyBAQCBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IG1ldGhvZFdpdGhPcHRp
b25hbEFyZ0NhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmCiAgICAgICAgIGltcC0+bWV0aG9k
V2l0aE9wdGlvbmFsQXJnKCk7CiAgICAgICAgIHJldHVybiB2OFVuZGVmaW5lZCgpOwogICAgIH0K
LSAgICBFWENFUFRJT05fQkxPQ0soaW50LCBvcHQsIHRvSW50MzIoTUFZQkVfTUlTU0lOR19QQVJB
TUVURVIoYXJncywgMCwgRGVmYXVsdElzVW5kZWZpbmVkKSkpOworICAgIFRSWUNBVENIKGludCwg
b3B0LCB0b0ludDMyKE1BWUJFX01JU1NJTkdfUEFSQU1FVEVSKGFyZ3MsIDAsIERlZmF1bHRJc1Vu
ZGVmaW5lZCkpKTsKICAgICBpbXAtPm1ldGhvZFdpdGhPcHRpb25hbEFyZyhvcHQpOwogICAgIHJl
dHVybiB2OFVuZGVmaW5lZCgpOwogfQpAQCAtMTQwMCwxMiArMTQwMCwxMiBAQCBzdGF0aWMgdjg6
OkhhbmRsZTx2ODo6VmFsdWU+IG1ldGhvZFdpdGhOb25PcHRpb25hbEFyZ0FuZE9wdGlvbmFsQXJn
Q2FsbGJhY2soY29ucwogICAgIGlmIChhcmdzLkxlbmd0aCgpIDwgMSkKICAgICAgICAgcmV0dXJu
IHRocm93Tm90RW5vdWdoQXJndW1lbnRzRXJyb3IoYXJncy5HZXRJc29sYXRlKCkpOwogICAgIFRl
c3RPYmoqIGltcCA9IFY4VGVzdE9iajo6dG9OYXRpdmUoYXJncy5Ib2xkZXIoKSk7Ci0gICAgRVhD
RVBUSU9OX0JMT0NLKGludCwgbm9uT3B0LCB0b0ludDMyKE1BWUJFX01JU1NJTkdfUEFSQU1FVEVS
KGFyZ3MsIDAsIERlZmF1bHRJc1VuZGVmaW5lZCkpKTsKKyAgICBUUllDQVRDSChpbnQsIG5vbk9w
dCwgdG9JbnQzMihNQVlCRV9NSVNTSU5HX1BBUkFNRVRFUihhcmdzLCAwLCBEZWZhdWx0SXNVbmRl
ZmluZWQpKSk7CiAgICAgaWYgKGFyZ3MuTGVuZ3RoKCkgPD0gMSkgewogICAgICAgICBpbXAtPm1l
dGhvZFdpdGhOb25PcHRpb25hbEFyZ0FuZE9wdGlvbmFsQXJnKG5vbk9wdCk7CiAgICAgICAgIHJl
dHVybiB2OFVuZGVmaW5lZCgpOwogICAgIH0KLSAgICBFWENFUFRJT05fQkxPQ0soaW50LCBvcHQs
IHRvSW50MzIoTUFZQkVfTUlTU0lOR19QQVJBTUVURVIoYXJncywgMSwgRGVmYXVsdElzVW5kZWZp
bmVkKSkpOworICAgIFRSWUNBVENIKGludCwgb3B0LCB0b0ludDMyKE1BWUJFX01JU1NJTkdfUEFS
QU1FVEVSKGFyZ3MsIDEsIERlZmF1bHRJc1VuZGVmaW5lZCkpKTsKICAgICBpbXAtPm1ldGhvZFdp
dGhOb25PcHRpb25hbEFyZ0FuZE9wdGlvbmFsQXJnKG5vbk9wdCwgb3B0KTsKICAgICByZXR1cm4g
djhVbmRlZmluZWQoKTsKIH0KQEAgLTE0MTYsMTcgKzE0MTYsMTcgQEAgc3RhdGljIHY4OjpIYW5k
bGU8djg6OlZhbHVlPiBtZXRob2RXaXRoTm9uT3B0aW9uYWxBcmdBbmRUd29PcHRpb25hbEFyZ3ND
YWxsYmFjaygKICAgICBpZiAoYXJncy5MZW5ndGgoKSA8IDEpCiAgICAgICAgIHJldHVybiB0aHJv
d05vdEVub3VnaEFyZ3VtZW50c0Vycm9yKGFyZ3MuR2V0SXNvbGF0ZSgpKTsKICAgICBUZXN0T2Jq
KiBpbXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZlKGFyZ3MuSG9sZGVyKCkpOwotICAgIEVYQ0VQVElP
Tl9CTE9DSyhpbnQsIG5vbk9wdCwgdG9JbnQzMihNQVlCRV9NSVNTSU5HX1BBUkFNRVRFUihhcmdz
LCAwLCBEZWZhdWx0SXNVbmRlZmluZWQpKSk7CisgICAgVFJZQ0FUQ0goaW50LCBub25PcHQsIHRv
SW50MzIoTUFZQkVfTUlTU0lOR19QQVJBTUVURVIoYXJncywgMCwgRGVmYXVsdElzVW5kZWZpbmVk
KSkpOwogICAgIGlmIChhcmdzLkxlbmd0aCgpIDw9IDEpIHsKICAgICAgICAgaW1wLT5tZXRob2RX
aXRoTm9uT3B0aW9uYWxBcmdBbmRUd29PcHRpb25hbEFyZ3Mobm9uT3B0KTsKICAgICAgICAgcmV0
dXJuIHY4VW5kZWZpbmVkKCk7CiAgICAgfQotICAgIEVYQ0VQVElPTl9CTE9DSyhpbnQsIG9wdDEs
IHRvSW50MzIoTUFZQkVfTUlTU0lOR19QQVJBTUVURVIoYXJncywgMSwgRGVmYXVsdElzVW5kZWZp
bmVkKSkpOworICAgIFRSWUNBVENIKGludCwgb3B0MSwgdG9JbnQzMihNQVlCRV9NSVNTSU5HX1BB
UkFNRVRFUihhcmdzLCAxLCBEZWZhdWx0SXNVbmRlZmluZWQpKSk7CiAgICAgaWYgKGFyZ3MuTGVu
Z3RoKCkgPD0gMikgewogICAgICAgICBpbXAtPm1ldGhvZFdpdGhOb25PcHRpb25hbEFyZ0FuZFR3
b09wdGlvbmFsQXJncyhub25PcHQsIG9wdDEpOwogICAgICAgICByZXR1cm4gdjhVbmRlZmluZWQo
KTsKICAgICB9Ci0gICAgRVhDRVBUSU9OX0JMT0NLKGludCwgb3B0MiwgdG9JbnQzMihNQVlCRV9N
SVNTSU5HX1BBUkFNRVRFUihhcmdzLCAyLCBEZWZhdWx0SXNVbmRlZmluZWQpKSk7CisgICAgVFJZ
Q0FUQ0goaW50LCBvcHQyLCB0b0ludDMyKE1BWUJFX01JU1NJTkdfUEFSQU1FVEVSKGFyZ3MsIDIs
IERlZmF1bHRJc1VuZGVmaW5lZCkpKTsKICAgICBpbXAtPm1ldGhvZFdpdGhOb25PcHRpb25hbEFy
Z0FuZFR3b09wdGlvbmFsQXJncyhub25PcHQsIG9wdDEsIG9wdDIpOwogICAgIHJldHVybiB2OFVu
ZGVmaW5lZCgpOwogfQpAQCAtMTQzOSw3ICsxNDM5LDcgQEAgc3RhdGljIHY4OjpIYW5kbGU8djg6
OlZhbHVlPiBtZXRob2RXaXRoT3B0aW9uYWxTdHJpbmdDYWxsYmFjayhjb25zdCB2ODo6QXJndW1l
bnQKICAgICAgICAgaW1wLT5tZXRob2RXaXRoT3B0aW9uYWxTdHJpbmcoKTsKICAgICAgICAgcmV0
dXJuIHY4VW5kZWZpbmVkKCk7CiAgICAgfQotICAgIFNUUklOR19UT19WOFBBUkFNRVRFUl9FWENF
UFRJT05fQkxPQ0soVjhTdHJpbmdSZXNvdXJjZTw+LCBzdHIsIE1BWUJFX01JU1NJTkdfUEFSQU1F
VEVSKGFyZ3MsIDAsIERlZmF1bHRJc1VuZGVmaW5lZCkpOworICAgIFRSWUNBVENIX0ZPUl9WOFNU
UklOR1JFU09VUkNFKFY4U3RyaW5nUmVzb3VyY2U8Piwgc3RyLCBNQVlCRV9NSVNTSU5HX1BBUkFN
RVRFUihhcmdzLCAwLCBEZWZhdWx0SXNVbmRlZmluZWQpKTsKICAgICBpbXAtPm1ldGhvZFdpdGhP
cHRpb25hbFN0cmluZyhzdHIpOwogICAgIHJldHVybiB2OFVuZGVmaW5lZCgpOwogfQpAQCAtMTQ0
OCw3ICsxNDQ4LDcgQEAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBtZXRob2RXaXRoT3B0
aW9uYWxTdHJpbmdJc1VuZGVmaW5lZENhbGxiYWNrKGNvbnN0IHYKIHsKICAgICBJTkNfU1RBVFMo
IkRPTS5UZXN0T2JqLm1ldGhvZFdpdGhPcHRpb25hbFN0cmluZ0lzVW5kZWZpbmVkIik7CiAgICAg
VGVzdE9iaiogaW1wID0gVjhUZXN0T2JqOjp0b05hdGl2ZShhcmdzLkhvbGRlcigpKTsKLSAgICBT
VFJJTkdfVE9fVjhQQVJBTUVURVJfRVhDRVBUSU9OX0JMT0NLKFY4U3RyaW5nUmVzb3VyY2U8Piwg
c3RyLCBNQVlCRV9NSVNTSU5HX1BBUkFNRVRFUihhcmdzLCAwLCBEZWZhdWx0SXNVbmRlZmluZWQp
KTsKKyAgICBUUllDQVRDSF9GT1JfVjhTVFJJTkdSRVNPVVJDRShWOFN0cmluZ1Jlc291cmNlPD4s
IHN0ciwgTUFZQkVfTUlTU0lOR19QQVJBTUVURVIoYXJncywgMCwgRGVmYXVsdElzVW5kZWZpbmVk
KSk7CiAgICAgaW1wLT5tZXRob2RXaXRoT3B0aW9uYWxTdHJpbmdJc1VuZGVmaW5lZChzdHIpOwog
ICAgIHJldHVybiB2OFVuZGVmaW5lZCgpOwogfQpAQCAtMTQ1Nyw3ICsxNDU3LDcgQEAgc3RhdGlj
IHY4OjpIYW5kbGU8djg6OlZhbHVlPiBtZXRob2RXaXRoT3B0aW9uYWxTdHJpbmdJc051bGxTdHJp
bmdDYWxsYmFjayhjb25zdAogewogICAgIElOQ19TVEFUUygiRE9NLlRlc3RPYmoubWV0aG9kV2l0
aE9wdGlvbmFsU3RyaW5nSXNOdWxsU3RyaW5nIik7CiAgICAgVGVzdE9iaiogaW1wID0gVjhUZXN0
T2JqOjp0b05hdGl2ZShhcmdzLkhvbGRlcigpKTsKLSAgICBTVFJJTkdfVE9fVjhQQVJBTUVURVJf
RVhDRVBUSU9OX0JMT0NLKFY4U3RyaW5nUmVzb3VyY2U8Piwgc3RyLCBNQVlCRV9NSVNTSU5HX1BB
UkFNRVRFUihhcmdzLCAwLCBEZWZhdWx0SXNOdWxsU3RyaW5nKSk7CisgICAgVFJZQ0FUQ0hfRk9S
X1Y4U1RSSU5HUkVTT1VSQ0UoVjhTdHJpbmdSZXNvdXJjZTw+LCBzdHIsIE1BWUJFX01JU1NJTkdf
UEFSQU1FVEVSKGFyZ3MsIDAsIERlZmF1bHRJc051bGxTdHJpbmcpKTsKICAgICBpbXAtPm1ldGhv
ZFdpdGhPcHRpb25hbFN0cmluZ0lzTnVsbFN0cmluZyhzdHIpOwogICAgIHJldHVybiB2OFVuZGVm
aW5lZCgpOwogfQpAQCAtMTQ4MSw3ICsxNDgxLDcgQEAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZh
bHVlPiBtZXRob2RXaXRoTm9uQ2FsbGJhY2tBcmdBbmRDYWxsYmFja0FyZ0NhbGxiYWNrKGNvbnMK
ICAgICBpZiAoYXJncy5MZW5ndGgoKSA8IDIpCiAgICAgICAgIHJldHVybiB0aHJvd05vdEVub3Vn
aEFyZ3VtZW50c0Vycm9yKGFyZ3MuR2V0SXNvbGF0ZSgpKTsKICAgICBUZXN0T2JqKiBpbXAgPSBW
OFRlc3RPYmo6OnRvTmF0aXZlKGFyZ3MuSG9sZGVyKCkpOwotICAgIEVYQ0VQVElPTl9CTE9DSyhp
bnQsIG5vbkNhbGxiYWNrLCB0b0ludDMyKE1BWUJFX01JU1NJTkdfUEFSQU1FVEVSKGFyZ3MsIDAs
IERlZmF1bHRJc1VuZGVmaW5lZCkpKTsKKyAgICBUUllDQVRDSChpbnQsIG5vbkNhbGxiYWNrLCB0
b0ludDMyKE1BWUJFX01JU1NJTkdfUEFSQU1FVEVSKGFyZ3MsIDAsIERlZmF1bHRJc1VuZGVmaW5l
ZCkpKTsKICAgICBpZiAoYXJncy5MZW5ndGgoKSA8PSAxIHx8ICFhcmdzWzFdLT5Jc0Z1bmN0aW9u
KCkpCiAgICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcigwLCBhcmdzLkdldElzb2xhdGUoKSk7
CiAgICAgUmVmUHRyPFRlc3RDYWxsYmFjaz4gY2FsbGJhY2sgPSBWOFRlc3RDYWxsYmFjazo6Y3Jl
YXRlKGFyZ3NbMV0sIGdldFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSk7CkBAIC0xNTQ0LDggKzE1
NDQsOCBAQCBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IG92ZXJsb2FkZWRNZXRob2QxQ2Fs
bGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncwogICAgIGlmIChhcmdzLkxlbmd0aCgpIDwg
MikKICAgICAgICAgcmV0dXJuIHRocm93Tm90RW5vdWdoQXJndW1lbnRzRXJyb3IoYXJncy5HZXRJ
c29sYXRlKCkpOwogICAgIFRlc3RPYmoqIGltcCA9IFY4VGVzdE9iajo6dG9OYXRpdmUoYXJncy5I
b2xkZXIoKSk7Ci0gICAgRVhDRVBUSU9OX0JMT0NLKFRlc3RPYmoqLCBvYmpBcmcsIFY4VGVzdE9i
ajo6SGFzSW5zdGFuY2UoTUFZQkVfTUlTU0lOR19QQVJBTUVURVIoYXJncywgMCwgRGVmYXVsdElz
VW5kZWZpbmVkKSkgPyBWOFRlc3RPYmo6OnRvTmF0aXZlKHY4OjpIYW5kbGU8djg6Ok9iamVjdD46
OkNhc3QoTUFZQkVfTUlTU0lOR19QQVJBTUVURVIoYXJncywgMCwgRGVmYXVsdElzVW5kZWZpbmVk
KSkpIDogMCk7Ci0gICAgU1RSSU5HX1RPX1Y4UEFSQU1FVEVSX0VYQ0VQVElPTl9CTE9DSyhWOFN0
cmluZ1Jlc291cmNlPD4sIHN0ckFyZywgTUFZQkVfTUlTU0lOR19QQVJBTUVURVIoYXJncywgMSwg
RGVmYXVsdElzVW5kZWZpbmVkKSk7CisgICAgVFJZQ0FUQ0goVGVzdE9iaiosIG9iakFyZywgVjhU
ZXN0T2JqOjpIYXNJbnN0YW5jZShNQVlCRV9NSVNTSU5HX1BBUkFNRVRFUihhcmdzLCAwLCBEZWZh
dWx0SXNVbmRlZmluZWQpKSA/IFY4VGVzdE9iajo6dG9OYXRpdmUodjg6OkhhbmRsZTx2ODo6T2Jq
ZWN0Pjo6Q2FzdChNQVlCRV9NSVNTSU5HX1BBUkFNRVRFUihhcmdzLCAwLCBEZWZhdWx0SXNVbmRl
ZmluZWQpKSkgOiAwKTsKKyAgICBUUllDQVRDSF9GT1JfVjhTVFJJTkdSRVNPVVJDRShWOFN0cmlu
Z1Jlc291cmNlPD4sIHN0ckFyZywgTUFZQkVfTUlTU0lOR19QQVJBTUVURVIoYXJncywgMSwgRGVm
YXVsdElzVW5kZWZpbmVkKSk7CiAgICAgaW1wLT5vdmVybG9hZGVkTWV0aG9kKG9iakFyZywgc3Ry
QXJnKTsKICAgICByZXR1cm4gdjhVbmRlZmluZWQoKTsKIH0KQEAgLTE1NTYsMTIgKzE1NTYsMTIg
QEAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBvdmVybG9hZGVkTWV0aG9kMkNhbGxiYWNr
KGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MKICAgICBpZiAoYXJncy5MZW5ndGgoKSA8IDEpCiAg
ICAgICAgIHJldHVybiB0aHJvd05vdEVub3VnaEFyZ3VtZW50c0Vycm9yKGFyZ3MuR2V0SXNvbGF0
ZSgpKTsKICAgICBUZXN0T2JqKiBpbXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZlKGFyZ3MuSG9sZGVy
KCkpOwotICAgIEVYQ0VQVElPTl9CTE9DSyhUZXN0T2JqKiwgb2JqQXJnLCBWOFRlc3RPYmo6Okhh
c0luc3RhbmNlKE1BWUJFX01JU1NJTkdfUEFSQU1FVEVSKGFyZ3MsIDAsIERlZmF1bHRJc1VuZGVm
aW5lZCkpID8gVjhUZXN0T2JqOjp0b05hdGl2ZSh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+OjpDYXN0
KE1BWUJFX01JU1NJTkdfUEFSQU1FVEVSKGFyZ3MsIDAsIERlZmF1bHRJc1VuZGVmaW5lZCkpKSA6
IDApOworICAgIFRSWUNBVENIKFRlc3RPYmoqLCBvYmpBcmcsIFY4VGVzdE9iajo6SGFzSW5zdGFu
Y2UoTUFZQkVfTUlTU0lOR19QQVJBTUVURVIoYXJncywgMCwgRGVmYXVsdElzVW5kZWZpbmVkKSkg
PyBWOFRlc3RPYmo6OnRvTmF0aXZlKHY4OjpIYW5kbGU8djg6Ok9iamVjdD46OkNhc3QoTUFZQkVf
TUlTU0lOR19QQVJBTUVURVIoYXJncywgMCwgRGVmYXVsdElzVW5kZWZpbmVkKSkpIDogMCk7CiAg
ICAgaWYgKGFyZ3MuTGVuZ3RoKCkgPD0gMSkgewogICAgICAgICBpbXAtPm92ZXJsb2FkZWRNZXRo
b2Qob2JqQXJnKTsKICAgICAgICAgcmV0dXJuIHY4VW5kZWZpbmVkKCk7CiAgICAgfQotICAgIEVY
Q0VQVElPTl9CTE9DSyhpbnQsIGxvbmdBcmcsIHRvSW50MzIoTUFZQkVfTUlTU0lOR19QQVJBTUVU
RVIoYXJncywgMSwgRGVmYXVsdElzVW5kZWZpbmVkKSkpOworICAgIFRSWUNBVENIKGludCwgbG9u
Z0FyZywgdG9JbnQzMihNQVlCRV9NSVNTSU5HX1BBUkFNRVRFUihhcmdzLCAxLCBEZWZhdWx0SXNV
bmRlZmluZWQpKSk7CiAgICAgaW1wLT5vdmVybG9hZGVkTWV0aG9kKG9iakFyZywgbG9uZ0FyZyk7
CiAgICAgcmV0dXJuIHY4VW5kZWZpbmVkKCk7CiB9CkBAIC0xNTcyLDcgKzE1NzIsNyBAQCBzdGF0
aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IG92ZXJsb2FkZWRNZXRob2QzQ2FsbGJhY2soY29uc3Qg
djg6OkFyZ3VtZW50cyYgYXJncwogICAgIGlmIChhcmdzLkxlbmd0aCgpIDwgMSkKICAgICAgICAg
cmV0dXJuIHRocm93Tm90RW5vdWdoQXJndW1lbnRzRXJyb3IoYXJncy5HZXRJc29sYXRlKCkpOwog
ICAgIFRlc3RPYmoqIGltcCA9IFY4VGVzdE9iajo6dG9OYXRpdmUoYXJncy5Ib2xkZXIoKSk7Ci0g
ICAgU1RSSU5HX1RPX1Y4UEFSQU1FVEVSX0VYQ0VQVElPTl9CTE9DSyhWOFN0cmluZ1Jlc291cmNl
PD4sIHN0ckFyZywgTUFZQkVfTUlTU0lOR19QQVJBTUVURVIoYXJncywgMCwgRGVmYXVsdElzVW5k
ZWZpbmVkKSk7CisgICAgVFJZQ0FUQ0hfRk9SX1Y4U1RSSU5HUkVTT1VSQ0UoVjhTdHJpbmdSZXNv
dXJjZTw+LCBzdHJBcmcsIE1BWUJFX01JU1NJTkdfUEFSQU1FVEVSKGFyZ3MsIDAsIERlZmF1bHRJ
c1VuZGVmaW5lZCkpOwogICAgIGltcC0+b3ZlcmxvYWRlZE1ldGhvZChzdHJBcmcpOwogICAgIHJl
dHVybiB2OFVuZGVmaW5lZCgpOwogfQpAQCAtMTU4Myw3ICsxNTgzLDcgQEAgc3RhdGljIHY4OjpI
YW5kbGU8djg6OlZhbHVlPiBvdmVybG9hZGVkTWV0aG9kNENhbGxiYWNrKGNvbnN0IHY4OjpBcmd1
bWVudHMmIGFyZ3MKICAgICBpZiAoYXJncy5MZW5ndGgoKSA8IDEpCiAgICAgICAgIHJldHVybiB0
aHJvd05vdEVub3VnaEFyZ3VtZW50c0Vycm9yKGFyZ3MuR2V0SXNvbGF0ZSgpKTsKICAgICBUZXN0
T2JqKiBpbXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZlKGFyZ3MuSG9sZGVyKCkpOwotICAgIEVYQ0VQ
VElPTl9CTE9DSyhpbnQsIGxvbmdBcmcsIHRvSW50MzIoTUFZQkVfTUlTU0lOR19QQVJBTUVURVIo
YXJncywgMCwgRGVmYXVsdElzVW5kZWZpbmVkKSkpOworICAgIFRSWUNBVENIKGludCwgbG9uZ0Fy
ZywgdG9JbnQzMihNQVlCRV9NSVNTSU5HX1BBUkFNRVRFUihhcmdzLCAwLCBEZWZhdWx0SXNVbmRl
ZmluZWQpKSk7CiAgICAgaW1wLT5vdmVybG9hZGVkTWV0aG9kKGxvbmdBcmcpOwogICAgIHJldHVy
biB2OFVuZGVmaW5lZCgpOwogfQpAQCAtMTYwNyw3ICsxNjA3LDcgQEAgc3RhdGljIHY4OjpIYW5k
bGU8djg6OlZhbHVlPiBvdmVybG9hZGVkTWV0aG9kNkNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVu
dHMmIGFyZ3MKICAgICBpZiAoYXJncy5MZW5ndGgoKSA8IDEpCiAgICAgICAgIHJldHVybiB0aHJv
d05vdEVub3VnaEFyZ3VtZW50c0Vycm9yKGFyZ3MuR2V0SXNvbGF0ZSgpKTsKICAgICBUZXN0T2Jq
KiBpbXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZlKGFyZ3MuSG9sZGVyKCkpOwotICAgIEVYQ0VQVElP
Tl9CTE9DSyhSZWZQdHI8RE9NU3RyaW5nTGlzdD4sIGxpc3RBcmcsIHRvRE9NU3RyaW5nTGlzdChN
QVlCRV9NSVNTSU5HX1BBUkFNRVRFUihhcmdzLCAwLCBEZWZhdWx0SXNVbmRlZmluZWQpKSk7Cisg
ICAgVFJZQ0FUQ0goUmVmUHRyPERPTVN0cmluZ0xpc3Q+LCBsaXN0QXJnLCB0b0RPTVN0cmluZ0xp
c3QoTUFZQkVfTUlTU0lOR19QQVJBTUVURVIoYXJncywgMCwgRGVmYXVsdElzVW5kZWZpbmVkKSkp
OwogICAgIGltcC0+b3ZlcmxvYWRlZE1ldGhvZChsaXN0QXJnKTsKICAgICByZXR1cm4gdjhVbmRl
ZmluZWQoKTsKIH0KQEAgLTE2MTgsNyArMTYxOCw3IEBAIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpW
YWx1ZT4gb3ZlcmxvYWRlZE1ldGhvZDdDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdz
CiAgICAgaWYgKGFyZ3MuTGVuZ3RoKCkgPCAxKQogICAgICAgICByZXR1cm4gdGhyb3dOb3RFbm91
Z2hBcmd1bWVudHNFcnJvcihhcmdzLkdldElzb2xhdGUoKSk7CiAgICAgVGVzdE9iaiogaW1wID0g
VjhUZXN0T2JqOjp0b05hdGl2ZShhcmdzLkhvbGRlcigpKTsKLSAgICBFWENFUFRJT05fQkxPQ0so
UmVmUHRyPERPTVN0cmluZ0xpc3Q+LCBhcnJheUFyZywgdG9ET01TdHJpbmdMaXN0KE1BWUJFX01J
U1NJTkdfUEFSQU1FVEVSKGFyZ3MsIDAsIERlZmF1bHRJc1VuZGVmaW5lZCkpKTsKKyAgICBUUllD
QVRDSChSZWZQdHI8RE9NU3RyaW5nTGlzdD4sIGFycmF5QXJnLCB0b0RPTVN0cmluZ0xpc3QoTUFZ
QkVfTUlTU0lOR19QQVJBTUVURVIoYXJncywgMCwgRGVmYXVsdElzVW5kZWZpbmVkKSkpOwogICAg
IGltcC0+b3ZlcmxvYWRlZE1ldGhvZChhcnJheUFyZyk7CiAgICAgcmV0dXJuIHY4VW5kZWZpbmVk
KCk7CiB9CkBAIC0xNjI5LDcgKzE2MjksNyBAQCBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+
IG92ZXJsb2FkZWRNZXRob2Q4Q2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncwogICAg
IGlmIChhcmdzLkxlbmd0aCgpIDwgMSkKICAgICAgICAgcmV0dXJuIHRocm93Tm90RW5vdWdoQXJn
dW1lbnRzRXJyb3IoYXJncy5HZXRJc29sYXRlKCkpOwogICAgIFRlc3RPYmoqIGltcCA9IFY4VGVz
dE9iajo6dG9OYXRpdmUoYXJncy5Ib2xkZXIoKSk7Ci0gICAgRVhDRVBUSU9OX0JMT0NLKFRlc3RP
YmoqLCBvYmpBcmcsIFY4VGVzdE9iajo6SGFzSW5zdGFuY2UoTUFZQkVfTUlTU0lOR19QQVJBTUVU
RVIoYXJncywgMCwgRGVmYXVsdElzVW5kZWZpbmVkKSkgPyBWOFRlc3RPYmo6OnRvTmF0aXZlKHY4
OjpIYW5kbGU8djg6Ok9iamVjdD46OkNhc3QoTUFZQkVfTUlTU0lOR19QQVJBTUVURVIoYXJncywg
MCwgRGVmYXVsdElzVW5kZWZpbmVkKSkpIDogMCk7CisgICAgVFJZQ0FUQ0goVGVzdE9iaiosIG9i
akFyZywgVjhUZXN0T2JqOjpIYXNJbnN0YW5jZShNQVlCRV9NSVNTSU5HX1BBUkFNRVRFUihhcmdz
LCAwLCBEZWZhdWx0SXNVbmRlZmluZWQpKSA/IFY4VGVzdE9iajo6dG9OYXRpdmUodjg6OkhhbmRs
ZTx2ODo6T2JqZWN0Pjo6Q2FzdChNQVlCRV9NSVNTSU5HX1BBUkFNRVRFUihhcmdzLCAwLCBEZWZh
dWx0SXNVbmRlZmluZWQpKSkgOiAwKTsKICAgICBpbXAtPm92ZXJsb2FkZWRNZXRob2Qob2JqQXJn
KTsKICAgICByZXR1cm4gdjhVbmRlZmluZWQoKTsKIH0KQEAgLTE2NDAsNyArMTY0MCw3IEBAIHN0
YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gb3ZlcmxvYWRlZE1ldGhvZDlDYWxsYmFjayhjb25z
dCB2ODo6QXJndW1lbnRzJiBhcmdzCiAgICAgaWYgKGFyZ3MuTGVuZ3RoKCkgPCAxKQogICAgICAg
ICByZXR1cm4gdGhyb3dOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihhcmdzLkdldElzb2xhdGUoKSk7
CiAgICAgVGVzdE9iaiogaW1wID0gVjhUZXN0T2JqOjp0b05hdGl2ZShhcmdzLkhvbGRlcigpKTsK
LSAgICBFWENFUFRJT05fQkxPQ0soUmVmUHRyPERPTVN0cmluZ0xpc3Q+LCBhcnJheUFyZywgdG9E
T01TdHJpbmdMaXN0KE1BWUJFX01JU1NJTkdfUEFSQU1FVEVSKGFyZ3MsIDAsIERlZmF1bHRJc1Vu
ZGVmaW5lZCkpKTsKKyAgICBUUllDQVRDSChSZWZQdHI8RE9NU3RyaW5nTGlzdD4sIGFycmF5QXJn
LCB0b0RPTVN0cmluZ0xpc3QoTUFZQkVfTUlTU0lOR19QQVJBTUVURVIoYXJncywgMCwgRGVmYXVs
dElzVW5kZWZpbmVkKSkpOwogICAgIGltcC0+b3ZlcmxvYWRlZE1ldGhvZChhcnJheUFyZyk7CiAg
ICAgcmV0dXJuIHY4VW5kZWZpbmVkKCk7CiB9CkBAIC0xNjUxLDcgKzE2NTEsNyBAQCBzdGF0aWMg
djg6OkhhbmRsZTx2ODo6VmFsdWU+IG92ZXJsb2FkZWRNZXRob2QxMENhbGxiYWNrKGNvbnN0IHY4
OjpBcmd1bWVudHMmIGFyZwogICAgIGlmIChhcmdzLkxlbmd0aCgpIDwgMSkKICAgICAgICAgcmV0
dXJuIHRocm93Tm90RW5vdWdoQXJndW1lbnRzRXJyb3IoYXJncy5HZXRJc29sYXRlKCkpOwogICAg
IFRlc3RPYmoqIGltcCA9IFY4VGVzdE9iajo6dG9OYXRpdmUoYXJncy5Ib2xkZXIoKSk7Ci0gICAg
RVhDRVBUSU9OX0JMT0NLKFZlY3Rvcjx1bnNpZ25lZCBsb25nPiwgYXJyYXlBcmcsIHRvTmF0aXZl
QXJyYXk8dW5zaWduZWQgbG9uZz4oTUFZQkVfTUlTU0lOR19QQVJBTUVURVIoYXJncywgMCwgRGVm
YXVsdElzVW5kZWZpbmVkKSkpOworICAgIFRSWUNBVENIKFZlY3Rvcjx1bnNpZ25lZCBsb25nPiwg
YXJyYXlBcmcsIHRvTmF0aXZlQXJyYXk8dW5zaWduZWQgbG9uZz4oTUFZQkVfTUlTU0lOR19QQVJB
TUVURVIoYXJncywgMCwgRGVmYXVsdElzVW5kZWZpbmVkKSkpOwogICAgIGltcC0+b3ZlcmxvYWRl
ZE1ldGhvZChhcnJheUFyZyk7CiAgICAgcmV0dXJuIHY4VW5kZWZpbmVkKCk7CiB9CkBAIC0xNjYy
LDcgKzE2NjIsNyBAQCBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IG92ZXJsb2FkZWRNZXRo
b2QxMUNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZwogICAgIGlmIChhcmdzLkxlbmd0
aCgpIDwgMSkKICAgICAgICAgcmV0dXJuIHRocm93Tm90RW5vdWdoQXJndW1lbnRzRXJyb3IoYXJn
cy5HZXRJc29sYXRlKCkpOwogICAgIFRlc3RPYmoqIGltcCA9IFY4VGVzdE9iajo6dG9OYXRpdmUo
YXJncy5Ib2xkZXIoKSk7Ci0gICAgU1RSSU5HX1RPX1Y4UEFSQU1FVEVSX0VYQ0VQVElPTl9CTE9D
SyhWOFN0cmluZ1Jlc291cmNlPD4sIHN0ckFyZywgTUFZQkVfTUlTU0lOR19QQVJBTUVURVIoYXJn
cywgMCwgRGVmYXVsdElzVW5kZWZpbmVkKSk7CisgICAgVFJZQ0FUQ0hfRk9SX1Y4U1RSSU5HUkVT
T1VSQ0UoVjhTdHJpbmdSZXNvdXJjZTw+LCBzdHJBcmcsIE1BWUJFX01JU1NJTkdfUEFSQU1FVEVS
KGFyZ3MsIDAsIERlZmF1bHRJc1VuZGVmaW5lZCkpOwogICAgIGltcC0+b3ZlcmxvYWRlZE1ldGhv
ZChzdHJBcmcpOwogICAgIHJldHVybiB2OFVuZGVmaW5lZCgpOwogfQpAQCAtMTcxMCw3ICsxNzEw
LDcgQEAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBjbGFzc01ldGhvZFdpdGhPcHRpb25h
bENhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMKICAgICBpZiAoYXJncy5MZW5ndGgoKSA8PSAw
KSB7CiAgICAgICAgIHJldHVybiB2OEludGVnZXIoVGVzdE9iajo6Y2xhc3NNZXRob2RXaXRoT3B0
aW9uYWwoKSwgYXJncy5HZXRJc29sYXRlKCkpOwogICAgIH0KLSAgICBFWENFUFRJT05fQkxPQ0so
aW50LCBhcmcsIHRvSW50MzIoTUFZQkVfTUlTU0lOR19QQVJBTUVURVIoYXJncywgMCwgRGVmYXVs
dElzVW5kZWZpbmVkKSkpOworICAgIFRSWUNBVENIKGludCwgYXJnLCB0b0ludDMyKE1BWUJFX01J
U1NJTkdfUEFSQU1FVEVSKGFyZ3MsIDAsIERlZmF1bHRJc1VuZGVmaW5lZCkpKTsKICAgICByZXR1
cm4gdjhJbnRlZ2VyKFRlc3RPYmo6OmNsYXNzTWV0aG9kV2l0aE9wdGlvbmFsKGFyZyksIGFyZ3Mu
R2V0SXNvbGF0ZSgpKTsKIH0KIApAQCAtMTcyMSw3ICsxNzIxLDcgQEAgc3RhdGljIHY4OjpIYW5k
bGU8djg6OlZhbHVlPiBvdmVybG9hZGVkTWV0aG9kMTFDYWxsYmFjayhjb25zdCB2ODo6QXJndW1l
bnRzJiBhcmcKICAgICBJTkNfU1RBVFMoIkRPTS5UZXN0T2JqLm92ZXJsb2FkZWRNZXRob2QxMSIp
OwogICAgIGlmIChhcmdzLkxlbmd0aCgpIDwgMSkKICAgICAgICAgcmV0dXJuIHRocm93Tm90RW5v
dWdoQXJndW1lbnRzRXJyb3IoYXJncy5HZXRJc29sYXRlKCkpOwotICAgIEVYQ0VQVElPTl9CTE9D
SyhpbnQsIGFyZywgdG9JbnQzMihNQVlCRV9NSVNTSU5HX1BBUkFNRVRFUihhcmdzLCAwLCBEZWZh
dWx0SXNVbmRlZmluZWQpKSk7CisgICAgVFJZQ0FUQ0goaW50LCBhcmcsIHRvSW50MzIoTUFZQkVf
TUlTU0lOR19QQVJBTUVURVIoYXJncywgMCwgRGVmYXVsdElzVW5kZWZpbmVkKSkpOwogICAgIFRl
c3RPYmo6Om92ZXJsb2FkZWRNZXRob2QxKGFyZyk7CiAgICAgcmV0dXJuIHY4VW5kZWZpbmVkKCk7
CiB9CkBAIC0xNzM1LDcgKzE3MzUsNyBAQCBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IG92
ZXJsb2FkZWRNZXRob2QxMkNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZwogICAgIElO
Q19TVEFUUygiRE9NLlRlc3RPYmoub3ZlcmxvYWRlZE1ldGhvZDEyIik7CiAgICAgaWYgKGFyZ3Mu
TGVuZ3RoKCkgPCAxKQogICAgICAgICByZXR1cm4gdGhyb3dOb3RFbm91Z2hBcmd1bWVudHNFcnJv
cihhcmdzLkdldElzb2xhdGUoKSk7Ci0gICAgU1RSSU5HX1RPX1Y4UEFSQU1FVEVSX0VYQ0VQVElP
Tl9CTE9DSyhWOFN0cmluZ1Jlc291cmNlPD4sIHR5cGUsIE1BWUJFX01JU1NJTkdfUEFSQU1FVEVS
KGFyZ3MsIDAsIERlZmF1bHRJc1VuZGVmaW5lZCkpOworICAgIFRSWUNBVENIX0ZPUl9WOFNUUklO
R1JFU09VUkNFKFY4U3RyaW5nUmVzb3VyY2U8PiwgdHlwZSwgTUFZQkVfTUlTU0lOR19QQVJBTUVU
RVIoYXJncywgMCwgRGVmYXVsdElzVW5kZWZpbmVkKSk7CiAgICAgVGVzdE9iajo6b3ZlcmxvYWRl
ZE1ldGhvZDEodHlwZSk7CiAgICAgcmV0dXJuIHY4VW5kZWZpbmVkKCk7CiB9CkBAIC0xNzY1LDEx
ICsxNzY1LDExIEBAIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gY2xhc3NNZXRob2RXaXRo
Q2xhbXBDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhCiAgICAgICAgIHJldHVybiB0aHJv
d05vdEVub3VnaEFyZ3VtZW50c0Vycm9yKGFyZ3MuR2V0SXNvbGF0ZSgpKTsKICAgICBUZXN0T2Jq
KiBpbXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZlKGFyZ3MuSG9sZGVyKCkpOwogICAgIHVuc2lnbmVk
IHNob3J0IG9iakFyZ3NTaG9ydCA9IDA7Ci0gICAgRVhDRVBUSU9OX0JMT0NLKGRvdWJsZSwgb2Jq
QXJnc1Nob3J0TmF0aXZlVmFsdWUsIGFyZ3NbMF0tPk51bWJlclZhbHVlKCkpOworICAgIFRSWUNB
VENIKGRvdWJsZSwgb2JqQXJnc1Nob3J0TmF0aXZlVmFsdWUsIGFyZ3NbMF0tPk51bWJlclZhbHVl
KCkpOwogICAgIGlmICghaXNuYW4ob2JqQXJnc1Nob3J0TmF0aXZlVmFsdWUpKQogICAgICAgICBv
YmpBcmdzU2hvcnQgPSBjbGFtcFRvPHVuc2lnbmVkIHNob3J0PihvYmpBcmdzU2hvcnROYXRpdmVW
YWx1ZSk7CiAgICAgdW5zaWduZWQgbG9uZyBvYmpBcmdzTG9uZyA9IDA7Ci0gICAgRVhDRVBUSU9O
X0JMT0NLKGRvdWJsZSwgb2JqQXJnc0xvbmdOYXRpdmVWYWx1ZSwgYXJnc1sxXS0+TnVtYmVyVmFs
dWUoKSk7CisgICAgVFJZQ0FUQ0goZG91YmxlLCBvYmpBcmdzTG9uZ05hdGl2ZVZhbHVlLCBhcmdz
WzFdLT5OdW1iZXJWYWx1ZSgpKTsKICAgICBpZiAoIWlzbmFuKG9iakFyZ3NMb25nTmF0aXZlVmFs
dWUpKQogICAgICAgICBvYmpBcmdzTG9uZyA9IGNsYW1wVG88dW5zaWduZWQgbG9uZz4ob2JqQXJn
c0xvbmdOYXRpdmVWYWx1ZSk7CiAgICAgaW1wLT5jbGFzc01ldGhvZFdpdGhDbGFtcChvYmpBcmdz
U2hvcnQsIG9iakFyZ3NMb25nKTsKQEAgLTE3ODIsNyArMTc4Miw3IEBAIHN0YXRpYyB2ODo6SGFu
ZGxlPHY4OjpWYWx1ZT4gZW5hYmxlZEF0UnVudGltZU1ldGhvZDFDYWxsYmFjayhjb25zdCB2ODo6
QXJndW1lbnRzCiAgICAgaWYgKGFyZ3MuTGVuZ3RoKCkgPCAxKQogICAgICAgICByZXR1cm4gdGhy
b3dOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihhcmdzLkdldElzb2xhdGUoKSk7CiAgICAgVGVzdE9i
aiogaW1wID0gVjhUZXN0T2JqOjp0b05hdGl2ZShhcmdzLkhvbGRlcigpKTsKLSAgICBFWENFUFRJ
T05fQkxPQ0soaW50LCBsb25nQXJnLCB0b0ludDMyKE1BWUJFX01JU1NJTkdfUEFSQU1FVEVSKGFy
Z3MsIDAsIERlZmF1bHRJc1VuZGVmaW5lZCkpKTsKKyAgICBUUllDQVRDSChpbnQsIGxvbmdBcmcs
IHRvSW50MzIoTUFZQkVfTUlTU0lOR19QQVJBTUVURVIoYXJncywgMCwgRGVmYXVsdElzVW5kZWZp
bmVkKSkpOwogICAgIGltcC0+ZW5hYmxlZEF0UnVudGltZU1ldGhvZDEobG9uZ0FyZyk7CiAgICAg
cmV0dXJuIHY4VW5kZWZpbmVkKCk7CiB9CkBAIC0xNzkzLDcgKzE3OTMsNyBAQCBzdGF0aWMgdjg6
OkhhbmRsZTx2ODo6VmFsdWU+IGVuYWJsZWRBdFJ1bnRpbWVNZXRob2QyQ2FsbGJhY2soY29uc3Qg
djg6OkFyZ3VtZW50cwogICAgIGlmIChhcmdzLkxlbmd0aCgpIDwgMSkKICAgICAgICAgcmV0dXJu
IHRocm93Tm90RW5vdWdoQXJndW1lbnRzRXJyb3IoYXJncy5HZXRJc29sYXRlKCkpOwogICAgIFRl
c3RPYmoqIGltcCA9IFY4VGVzdE9iajo6dG9OYXRpdmUoYXJncy5Ib2xkZXIoKSk7Ci0gICAgRVhD
RVBUSU9OX0JMT0NLKGludCwgbG9uZ0FyZywgdG9JbnQzMihNQVlCRV9NSVNTSU5HX1BBUkFNRVRF
UihhcmdzLCAwLCBEZWZhdWx0SXNVbmRlZmluZWQpKSk7CisgICAgVFJZQ0FUQ0goaW50LCBsb25n
QXJnLCB0b0ludDMyKE1BWUJFX01JU1NJTkdfUEFSQU1FVEVSKGFyZ3MsIDAsIERlZmF1bHRJc1Vu
ZGVmaW5lZCkpKTsKICAgICBpbXAtPmVuYWJsZWRBdFJ1bnRpbWVNZXRob2QyKGxvbmdBcmcpOwog
ICAgIHJldHVybiB2OFVuZGVmaW5lZCgpOwogfQpAQCAtMTgwNCw3ICsxODA0LDcgQEAgc3RhdGlj
IHY4OjpIYW5kbGU8djg6OlZhbHVlPiBlbmFibGVkUGVyQ29udGV4dE1ldGhvZDFDYWxsYmFjayhj
b25zdCB2ODo6QXJndW1lbnQKICAgICBpZiAoYXJncy5MZW5ndGgoKSA8IDEpCiAgICAgICAgIHJl
dHVybiB0aHJvd05vdEVub3VnaEFyZ3VtZW50c0Vycm9yKGFyZ3MuR2V0SXNvbGF0ZSgpKTsKICAg
ICBUZXN0T2JqKiBpbXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZlKGFyZ3MuSG9sZGVyKCkpOwotICAg
IEVYQ0VQVElPTl9CTE9DSyhpbnQsIGxvbmdBcmcsIHRvSW50MzIoTUFZQkVfTUlTU0lOR19QQVJB
TUVURVIoYXJncywgMCwgRGVmYXVsdElzVW5kZWZpbmVkKSkpOworICAgIFRSWUNBVENIKGludCwg
bG9uZ0FyZywgdG9JbnQzMihNQVlCRV9NSVNTSU5HX1BBUkFNRVRFUihhcmdzLCAwLCBEZWZhdWx0
SXNVbmRlZmluZWQpKSk7CiAgICAgaW1wLT5lbmFibGVkUGVyQ29udGV4dE1ldGhvZDEobG9uZ0Fy
Zyk7CiAgICAgcmV0dXJuIHY4VW5kZWZpbmVkKCk7CiB9CkBAIC0xODE1LDcgKzE4MTUsNyBAQCBz
dGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGVuYWJsZWRQZXJDb250ZXh0TWV0aG9kMkNhbGxi
YWNrKGNvbnN0IHY4OjpBcmd1bWVudAogICAgIGlmIChhcmdzLkxlbmd0aCgpIDwgMSkKICAgICAg
ICAgcmV0dXJuIHRocm93Tm90RW5vdWdoQXJndW1lbnRzRXJyb3IoYXJncy5HZXRJc29sYXRlKCkp
OwogICAgIFRlc3RPYmoqIGltcCA9IFY4VGVzdE9iajo6dG9OYXRpdmUoYXJncy5Ib2xkZXIoKSk7
Ci0gICAgRVhDRVBUSU9OX0JMT0NLKGludCwgbG9uZ0FyZywgdG9JbnQzMihNQVlCRV9NSVNTSU5H
X1BBUkFNRVRFUihhcmdzLCAwLCBEZWZhdWx0SXNVbmRlZmluZWQpKSk7CisgICAgVFJZQ0FUQ0go
aW50LCBsb25nQXJnLCB0b0ludDMyKE1BWUJFX01JU1NJTkdfUEFSQU1FVEVSKGFyZ3MsIDAsIERl
ZmF1bHRJc1VuZGVmaW5lZCkpKTsKICAgICBpbXAtPmVuYWJsZWRQZXJDb250ZXh0TWV0aG9kMihs
b25nQXJnKTsKICAgICByZXR1cm4gdjhVbmRlZmluZWQoKTsKIH0KQEAgLTE4MjgsNyArMTgyOCw3
IEBAIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gc3RyaW5nQXJyYXlGdW5jdGlvbkNhbGxi
YWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyCiAgICAgVGVzdE9iaiogaW1wID0gVjhUZXN0T2Jq
Ojp0b05hdGl2ZShhcmdzLkhvbGRlcigpKTsKICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKICAg
ICB7Ci0gICAgRVhDRVBUSU9OX0JMT0NLKFJlZlB0cjxET01TdHJpbmdMaXN0PiwgdmFsdWVzLCB0
b0RPTVN0cmluZ0xpc3QoTUFZQkVfTUlTU0lOR19QQVJBTUVURVIoYXJncywgMCwgRGVmYXVsdElz
VW5kZWZpbmVkKSkpOworICAgIFRSWUNBVENIKFJlZlB0cjxET01TdHJpbmdMaXN0PiwgdmFsdWVz
LCB0b0RPTVN0cmluZ0xpc3QoTUFZQkVfTUlTU0lOR19QQVJBTUVURVIoYXJncywgMCwgRGVmYXVs
dElzVW5kZWZpbmVkKSkpOwogICAgIFJlZlB0cjxET01TdHJpbmdMaXN0PiByZXN1bHQgPSBpbXAt
PnN0cmluZ0FycmF5RnVuY3Rpb24odmFsdWVzLCBlYyk7CiAgICAgaWYgKFVOTElLRUxZKGVjKSkK
ICAgICAgICAgZ290byBmYWlsOwpAQCAtMTg2MSw3ICsxODYxLDcgQEAgc3RhdGljIHY4OjpIYW5k
bGU8djg6OlZhbHVlPiBjb252ZXJ0MUNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3Mp
CiAgICAgaWYgKGFyZ3MuTGVuZ3RoKCkgPCAxKQogICAgICAgICByZXR1cm4gdGhyb3dOb3RFbm91
Z2hBcmd1bWVudHNFcnJvcihhcmdzLkdldElzb2xhdGUoKSk7CiAgICAgVGVzdE9iaiogaW1wID0g
VjhUZXN0T2JqOjp0b05hdGl2ZShhcmdzLkhvbGRlcigpKTsKLSAgICBFWENFUFRJT05fQkxPQ0so
YSosIHZhbHVlLCBWOGE6Okhhc0luc3RhbmNlKE1BWUJFX01JU1NJTkdfUEFSQU1FVEVSKGFyZ3Ms
IDAsIERlZmF1bHRJc1VuZGVmaW5lZCkpID8gVjhhOjp0b05hdGl2ZSh2ODo6SGFuZGxlPHY4OjpP
YmplY3Q+OjpDYXN0KE1BWUJFX01JU1NJTkdfUEFSQU1FVEVSKGFyZ3MsIDAsIERlZmF1bHRJc1Vu
ZGVmaW5lZCkpKSA6IDApOworICAgIFRSWUNBVENIKGEqLCB2YWx1ZSwgVjhhOjpIYXNJbnN0YW5j
ZShNQVlCRV9NSVNTSU5HX1BBUkFNRVRFUihhcmdzLCAwLCBEZWZhdWx0SXNVbmRlZmluZWQpKSA/
IFY4YTo6dG9OYXRpdmUodjg6OkhhbmRsZTx2ODo6T2JqZWN0Pjo6Q2FzdChNQVlCRV9NSVNTSU5H
X1BBUkFNRVRFUihhcmdzLCAwLCBEZWZhdWx0SXNVbmRlZmluZWQpKSkgOiAwKTsKICAgICBpbXAt
PmNvbnZlcnQxKHZhbHVlKTsKICAgICByZXR1cm4gdjhVbmRlZmluZWQoKTsKIH0KQEAgLTE4NzIs
NyArMTg3Miw3IEBAIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gY29udmVydDJDYWxsYmFj
ayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogICAgIGlmIChhcmdzLkxlbmd0aCgpIDwgMSkK
ICAgICAgICAgcmV0dXJuIHRocm93Tm90RW5vdWdoQXJndW1lbnRzRXJyb3IoYXJncy5HZXRJc29s
YXRlKCkpOwogICAgIFRlc3RPYmoqIGltcCA9IFY4VGVzdE9iajo6dG9OYXRpdmUoYXJncy5Ib2xk
ZXIoKSk7Ci0gICAgRVhDRVBUSU9OX0JMT0NLKGIqLCB2YWx1ZSwgVjhiOjpIYXNJbnN0YW5jZShN
QVlCRV9NSVNTSU5HX1BBUkFNRVRFUihhcmdzLCAwLCBEZWZhdWx0SXNVbmRlZmluZWQpKSA/IFY4
Yjo6dG9OYXRpdmUodjg6OkhhbmRsZTx2ODo6T2JqZWN0Pjo6Q2FzdChNQVlCRV9NSVNTSU5HX1BB
UkFNRVRFUihhcmdzLCAwLCBEZWZhdWx0SXNVbmRlZmluZWQpKSkgOiAwKTsKKyAgICBUUllDQVRD
SChiKiwgdmFsdWUsIFY4Yjo6SGFzSW5zdGFuY2UoTUFZQkVfTUlTU0lOR19QQVJBTUVURVIoYXJn
cywgMCwgRGVmYXVsdElzVW5kZWZpbmVkKSkgPyBWOGI6OnRvTmF0aXZlKHY4OjpIYW5kbGU8djg6
Ok9iamVjdD46OkNhc3QoTUFZQkVfTUlTU0lOR19QQVJBTUVURVIoYXJncywgMCwgRGVmYXVsdElz
VW5kZWZpbmVkKSkpIDogMCk7CiAgICAgaW1wLT5jb252ZXJ0Mih2YWx1ZSk7CiAgICAgcmV0dXJu
IHY4VW5kZWZpbmVkKCk7CiB9CkBAIC0xODgzLDcgKzE4ODMsNyBAQCBzdGF0aWMgdjg6OkhhbmRs
ZTx2ODo6VmFsdWU+IGNvbnZlcnQ0Q2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykK
ICAgICBpZiAoYXJncy5MZW5ndGgoKSA8IDEpCiAgICAgICAgIHJldHVybiB0aHJvd05vdEVub3Vn
aEFyZ3VtZW50c0Vycm9yKGFyZ3MuR2V0SXNvbGF0ZSgpKTsKICAgICBUZXN0T2JqKiBpbXAgPSBW
OFRlc3RPYmo6OnRvTmF0aXZlKGFyZ3MuSG9sZGVyKCkpOwotICAgIEVYQ0VQVElPTl9CTE9DSyhk
KiwgdmFsdWUsIFY4ZDo6SGFzSW5zdGFuY2UoTUFZQkVfTUlTU0lOR19QQVJBTUVURVIoYXJncywg
MCwgRGVmYXVsdElzVW5kZWZpbmVkKSkgPyBWOGQ6OnRvTmF0aXZlKHY4OjpIYW5kbGU8djg6Ok9i
amVjdD46OkNhc3QoTUFZQkVfTUlTU0lOR19QQVJBTUVURVIoYXJncywgMCwgRGVmYXVsdElzVW5k
ZWZpbmVkKSkpIDogMCk7CisgICAgVFJZQ0FUQ0goZCosIHZhbHVlLCBWOGQ6Okhhc0luc3RhbmNl
KE1BWUJFX01JU1NJTkdfUEFSQU1FVEVSKGFyZ3MsIDAsIERlZmF1bHRJc1VuZGVmaW5lZCkpID8g
VjhkOjp0b05hdGl2ZSh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+OjpDYXN0KE1BWUJFX01JU1NJTkdf
UEFSQU1FVEVSKGFyZ3MsIDAsIERlZmF1bHRJc1VuZGVmaW5lZCkpKSA6IDApOwogICAgIGltcC0+
Y29udmVydDQodmFsdWUpOwogICAgIHJldHVybiB2OFVuZGVmaW5lZCgpOwogfQpAQCAtMTg5NCw3
ICsxODk0LDcgQEAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBjb252ZXJ0NUNhbGxiYWNr
KGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiAgICAgaWYgKGFyZ3MuTGVuZ3RoKCkgPCAxKQog
ICAgICAgICByZXR1cm4gdGhyb3dOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihhcmdzLkdldElzb2xh
dGUoKSk7CiAgICAgVGVzdE9iaiogaW1wID0gVjhUZXN0T2JqOjp0b05hdGl2ZShhcmdzLkhvbGRl
cigpKTsKLSAgICBFWENFUFRJT05fQkxPQ0soZSosIHZhbHVlLCBWOGU6Okhhc0luc3RhbmNlKE1B
WUJFX01JU1NJTkdfUEFSQU1FVEVSKGFyZ3MsIDAsIERlZmF1bHRJc1VuZGVmaW5lZCkpID8gVjhl
Ojp0b05hdGl2ZSh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+OjpDYXN0KE1BWUJFX01JU1NJTkdfUEFS
QU1FVEVSKGFyZ3MsIDAsIERlZmF1bHRJc1VuZGVmaW5lZCkpKSA6IDApOworICAgIFRSWUNBVENI
KGUqLCB2YWx1ZSwgVjhlOjpIYXNJbnN0YW5jZShNQVlCRV9NSVNTSU5HX1BBUkFNRVRFUihhcmdz
LCAwLCBEZWZhdWx0SXNVbmRlZmluZWQpKSA/IFY4ZTo6dG9OYXRpdmUodjg6OkhhbmRsZTx2ODo6
T2JqZWN0Pjo6Q2FzdChNQVlCRV9NSVNTSU5HX1BBUkFNRVRFUihhcmdzLCAwLCBEZWZhdWx0SXNV
bmRlZmluZWQpKSkgOiAwKTsKICAgICBpbXAtPmNvbnZlcnQ1KHZhbHVlKTsKICAgICByZXR1cm4g
djhVbmRlZmluZWQoKTsKIH0KQEAgLTE5MjksOSArMTkyOSw5IEBAIHN0YXRpYyB2ODo6SGFuZGxl
PHY4OjpWYWx1ZT4gc3RyaWN0RnVuY3Rpb25DYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBh
cmdzKQogICAgIFRlc3RPYmoqIGltcCA9IFY4VGVzdE9iajo6dG9OYXRpdmUoYXJncy5Ib2xkZXIo
KSk7CiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CiAgICAgewotICAgIFNUUklOR19UT19WOFBB
UkFNRVRFUl9FWENFUFRJT05fQkxPQ0soVjhTdHJpbmdSZXNvdXJjZTw+LCBzdHIsIE1BWUJFX01J
U1NJTkdfUEFSQU1FVEVSKGFyZ3MsIDAsIERlZmF1bHRJc1VuZGVmaW5lZCkpOwotICAgIEVYQ0VQ
VElPTl9CTE9DSyhmbG9hdCwgYSwgc3RhdGljX2Nhc3Q8ZmxvYXQ+KE1BWUJFX01JU1NJTkdfUEFS
QU1FVEVSKGFyZ3MsIDEsIERlZmF1bHRJc1VuZGVmaW5lZCktPk51bWJlclZhbHVlKCkpKTsKLSAg
ICBFWENFUFRJT05fQkxPQ0soaW50LCBiLCB0b0ludDMyKE1BWUJFX01JU1NJTkdfUEFSQU1FVEVS
KGFyZ3MsIDIsIERlZmF1bHRJc1VuZGVmaW5lZCkpKTsKKyAgICBUUllDQVRDSF9GT1JfVjhTVFJJ
TkdSRVNPVVJDRShWOFN0cmluZ1Jlc291cmNlPD4sIHN0ciwgTUFZQkVfTUlTU0lOR19QQVJBTUVU
RVIoYXJncywgMCwgRGVmYXVsdElzVW5kZWZpbmVkKSk7CisgICAgVFJZQ0FUQ0goZmxvYXQsIGEs
IHN0YXRpY19jYXN0PGZsb2F0PihNQVlCRV9NSVNTSU5HX1BBUkFNRVRFUihhcmdzLCAxLCBEZWZh
dWx0SXNVbmRlZmluZWQpLT5OdW1iZXJWYWx1ZSgpKSk7CisgICAgVFJZQ0FUQ0goaW50LCBiLCB0
b0ludDMyKE1BWUJFX01JU1NJTkdfUEFSQU1FVEVSKGFyZ3MsIDIsIERlZmF1bHRJc1VuZGVmaW5l
ZCkpKTsKICAgICBSZWZQdHI8Ym9vbD4gcmVzdWx0ID0gaW1wLT5zdHJpY3RGdW5jdGlvbihzdHIs
IGEsIGIsIGVjKTsKICAgICBpZiAoVU5MSUtFTFkoZWMpKQogICAgICAgICBnb3RvIGZhaWw7CkBA
IC0xOTQ3LDggKzE5NDcsOCBAQCBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHZhcmlhZGlj
U3RyaW5nTWV0aG9kQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYQogICAgIGlmIChhcmdz
Lkxlbmd0aCgpIDwgMSkKICAgICAgICAgcmV0dXJuIHRocm93Tm90RW5vdWdoQXJndW1lbnRzRXJy
b3IoYXJncy5HZXRJc29sYXRlKCkpOwogICAgIFRlc3RPYmoqIGltcCA9IFY4VGVzdE9iajo6dG9O
YXRpdmUoYXJncy5Ib2xkZXIoKSk7Ci0gICAgU1RSSU5HX1RPX1Y4UEFSQU1FVEVSX0VYQ0VQVElP
Tl9CTE9DSyhWOFN0cmluZ1Jlc291cmNlPD4sIGhlYWQsIE1BWUJFX01JU1NJTkdfUEFSQU1FVEVS
KGFyZ3MsIDAsIERlZmF1bHRJc1VuZGVmaW5lZCkpOwotICAgIEVYQ0VQVElPTl9CTE9DSyhWZWN0
b3I8U3RyaW5nPiwgdGFpbCwgdG9OYXRpdmVBcmd1bWVudHM8U3RyaW5nPihhcmdzLCAxKSk7Cisg
ICAgVFJZQ0FUQ0hfRk9SX1Y4U1RSSU5HUkVTT1VSQ0UoVjhTdHJpbmdSZXNvdXJjZTw+LCBoZWFk
LCBNQVlCRV9NSVNTSU5HX1BBUkFNRVRFUihhcmdzLCAwLCBEZWZhdWx0SXNVbmRlZmluZWQpKTsK
KyAgICBUUllDQVRDSChWZWN0b3I8U3RyaW5nPiwgdGFpbCwgdG9OYXRpdmVBcmd1bWVudHM8U3Ry
aW5nPihhcmdzLCAxKSk7CiAgICAgaW1wLT52YXJpYWRpY1N0cmluZ01ldGhvZChoZWFkLCB0YWls
KTsKICAgICByZXR1cm4gdjhVbmRlZmluZWQoKTsKIH0KQEAgLTE5NTksOCArMTk1OSw4IEBAIHN0
YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdmFyaWFkaWNEb3VibGVNZXRob2RDYWxsYmFjayhj
b25zdCB2ODo6QXJndW1lbnRzJiBhCiAgICAgaWYgKGFyZ3MuTGVuZ3RoKCkgPCAxKQogICAgICAg
ICByZXR1cm4gdGhyb3dOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihhcmdzLkdldElzb2xhdGUoKSk7
CiAgICAgVGVzdE9iaiogaW1wID0gVjhUZXN0T2JqOjp0b05hdGl2ZShhcmdzLkhvbGRlcigpKTsK
LSAgICBFWENFUFRJT05fQkxPQ0soZG91YmxlLCBoZWFkLCBzdGF0aWNfY2FzdDxkb3VibGU+KE1B
WUJFX01JU1NJTkdfUEFSQU1FVEVSKGFyZ3MsIDAsIERlZmF1bHRJc1VuZGVmaW5lZCktPk51bWJl
clZhbHVlKCkpKTsKLSAgICBFWENFUFRJT05fQkxPQ0soVmVjdG9yPGRvdWJsZT4sIHRhaWwsIHRv
TmF0aXZlQXJndW1lbnRzPGRvdWJsZT4oYXJncywgMSkpOworICAgIFRSWUNBVENIKGRvdWJsZSwg
aGVhZCwgc3RhdGljX2Nhc3Q8ZG91YmxlPihNQVlCRV9NSVNTSU5HX1BBUkFNRVRFUihhcmdzLCAw
LCBEZWZhdWx0SXNVbmRlZmluZWQpLT5OdW1iZXJWYWx1ZSgpKSk7CisgICAgVFJZQ0FUQ0goVmVj
dG9yPGRvdWJsZT4sIHRhaWwsIHRvTmF0aXZlQXJndW1lbnRzPGRvdWJsZT4oYXJncywgMSkpOwog
ICAgIGltcC0+dmFyaWFkaWNEb3VibGVNZXRob2QoaGVhZCwgdGFpbCk7CiAgICAgcmV0dXJuIHY4
VW5kZWZpbmVkKCk7CiB9CkBAIC0xOTcxLDcgKzE5NzEsNyBAQCBzdGF0aWMgdjg6OkhhbmRsZTx2
ODo6VmFsdWU+IHZhcmlhZGljTm9kZU1ldGhvZENhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMm
IGFyZwogICAgIGlmIChhcmdzLkxlbmd0aCgpIDwgMSkKICAgICAgICAgcmV0dXJuIHRocm93Tm90
RW5vdWdoQXJndW1lbnRzRXJyb3IoYXJncy5HZXRJc29sYXRlKCkpOwogICAgIFRlc3RPYmoqIGlt
cCA9IFY4VGVzdE9iajo6dG9OYXRpdmUoYXJncy5Ib2xkZXIoKSk7Ci0gICAgRVhDRVBUSU9OX0JM
T0NLKE5vZGUqLCBoZWFkLCBWOE5vZGU6Okhhc0luc3RhbmNlKE1BWUJFX01JU1NJTkdfUEFSQU1F
VEVSKGFyZ3MsIDAsIERlZmF1bHRJc1VuZGVmaW5lZCkpID8gVjhOb2RlOjp0b05hdGl2ZSh2ODo6
SGFuZGxlPHY4OjpPYmplY3Q+OjpDYXN0KE1BWUJFX01JU1NJTkdfUEFSQU1FVEVSKGFyZ3MsIDAs
IERlZmF1bHRJc1VuZGVmaW5lZCkpKSA6IDApOworICAgIFRSWUNBVENIKE5vZGUqLCBoZWFkLCBW
OE5vZGU6Okhhc0luc3RhbmNlKE1BWUJFX01JU1NJTkdfUEFSQU1FVEVSKGFyZ3MsIDAsIERlZmF1
bHRJc1VuZGVmaW5lZCkpID8gVjhOb2RlOjp0b05hdGl2ZSh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+
OjpDYXN0KE1BWUJFX01JU1NJTkdfUEFSQU1FVEVSKGFyZ3MsIDAsIERlZmF1bHRJc1VuZGVmaW5l
ZCkpKSA6IDApOwogICAgIFZlY3RvcjxSZWZQdHI8Tm9kZT4gPiB0YWlsOwogICAgIGZvciAoaW50
IGkgPSAxOyBpIDwgYXJncy5MZW5ndGgoKTsgKytpKSB7CiAgICAgICAgIGlmICghVjhOb2RlOjpI
YXNJbnN0YW5jZShhcmdzW2ldKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RPdmVybG9hZGVkQ29uc3Ry
dWN0b3JzLmNwcAppbmRleCBmZDBjNTdlNjg4NDQ0ZmMyMzVkMDZmNzFiZTliYzM5MjNjZTM4ZDdh
Li4yNTlhOTkzOTEzNTM1NTE3YjdkMWNhMGViNDAyMGFlODNjZGM5ZjAzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0T3ZlcmxvYWRlZENv
bnN0cnVjdG9ycy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L1Y4L1Y4VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMuY3BwCkBAIC00OSw3ICs0OSw3IEBAIHY4
OjpIYW5kbGU8djg6OlZhbHVlPiBWOFRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzOjpjb25zdHJ1
Y3RvcjFDYWxsYmFjayhjb25zdCB2CiB7CiAgICAgSU5DX1NUQVRTKCJET00uVGVzdE92ZXJsb2Fk
ZWRDb25zdHJ1Y3RvcnMuQ29uc3RydWN0b3IxIik7CiAgICAgCi0gICAgRVhDRVBUSU9OX0JMT0NL
KEFycmF5QnVmZmVyKiwgYXJyYXlCdWZmZXIsIFY4QXJyYXlCdWZmZXI6Okhhc0luc3RhbmNlKE1B
WUJFX01JU1NJTkdfUEFSQU1FVEVSKGFyZ3MsIDAsIERlZmF1bHRJc1VuZGVmaW5lZCkpID8gVjhB
cnJheUJ1ZmZlcjo6dG9OYXRpdmUodjg6OkhhbmRsZTx2ODo6T2JqZWN0Pjo6Q2FzdChNQVlCRV9N
SVNTSU5HX1BBUkFNRVRFUihhcmdzLCAwLCBEZWZhdWx0SXNVbmRlZmluZWQpKSkgOiAwKTsKKyAg
ICBUUllDQVRDSChBcnJheUJ1ZmZlciosIGFycmF5QnVmZmVyLCBWOEFycmF5QnVmZmVyOjpIYXNJ
bnN0YW5jZShNQVlCRV9NSVNTSU5HX1BBUkFNRVRFUihhcmdzLCAwLCBEZWZhdWx0SXNVbmRlZmlu
ZWQpKSA/IFY4QXJyYXlCdWZmZXI6OnRvTmF0aXZlKHY4OjpIYW5kbGU8djg6Ok9iamVjdD46OkNh
c3QoTUFZQkVfTUlTU0lOR19QQVJBTUVURVIoYXJncywgMCwgRGVmYXVsdElzVW5kZWZpbmVkKSkp
IDogMCk7CiAKICAgICBSZWZQdHI8VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnM+IGltcGwgPSBU
ZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yczo6Y3JlYXRlKGFycmF5QnVmZmVyKTsKICAgICB2ODo6
SGFuZGxlPHY4OjpPYmplY3Q+IHdyYXBwZXIgPSBhcmdzLkhvbGRlcigpOwpAQCAtNjIsNyArNjIs
NyBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yczo6
Y29uc3RydWN0b3IyQ2FsbGJhY2soY29uc3QgdgogewogICAgIElOQ19TVEFUUygiRE9NLlRlc3RP
dmVybG9hZGVkQ29uc3RydWN0b3JzLkNvbnN0cnVjdG9yMiIpOwogICAgIAotICAgIEVYQ0VQVElP
Tl9CTE9DSyhBcnJheUJ1ZmZlclZpZXcqLCBhcnJheUJ1ZmZlclZpZXcsIFY4QXJyYXlCdWZmZXJW
aWV3OjpIYXNJbnN0YW5jZShNQVlCRV9NSVNTSU5HX1BBUkFNRVRFUihhcmdzLCAwLCBEZWZhdWx0
SXNVbmRlZmluZWQpKSA/IFY4QXJyYXlCdWZmZXJWaWV3Ojp0b05hdGl2ZSh2ODo6SGFuZGxlPHY4
OjpPYmplY3Q+OjpDYXN0KE1BWUJFX01JU1NJTkdfUEFSQU1FVEVSKGFyZ3MsIDAsIERlZmF1bHRJ
c1VuZGVmaW5lZCkpKSA6IDApOworICAgIFRSWUNBVENIKEFycmF5QnVmZmVyVmlldyosIGFycmF5
QnVmZmVyVmlldywgVjhBcnJheUJ1ZmZlclZpZXc6Okhhc0luc3RhbmNlKE1BWUJFX01JU1NJTkdf
UEFSQU1FVEVSKGFyZ3MsIDAsIERlZmF1bHRJc1VuZGVmaW5lZCkpID8gVjhBcnJheUJ1ZmZlclZp
ZXc6OnRvTmF0aXZlKHY4OjpIYW5kbGU8djg6Ok9iamVjdD46OkNhc3QoTUFZQkVfTUlTU0lOR19Q
QVJBTUVURVIoYXJncywgMCwgRGVmYXVsdElzVW5kZWZpbmVkKSkpIDogMCk7CiAKICAgICBSZWZQ
dHI8VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnM+IGltcGwgPSBUZXN0T3ZlcmxvYWRlZENvbnN0
cnVjdG9yczo6Y3JlYXRlKGFycmF5QnVmZmVyVmlldyk7CiAgICAgdjg6OkhhbmRsZTx2ODo6T2Jq
ZWN0PiB3cmFwcGVyID0gYXJncy5Ib2xkZXIoKTsKQEAgLTc1LDcgKzc1LDcgQEAgdjg6OkhhbmRs
ZTx2ODo6VmFsdWU+IFY4VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnM6OmNvbnN0cnVjdG9yM0Nh
bGxiYWNrKGNvbnN0IHYKIHsKICAgICBJTkNfU1RBVFMoIkRPTS5UZXN0T3ZlcmxvYWRlZENvbnN0
cnVjdG9ycy5Db25zdHJ1Y3RvcjMiKTsKICAgICAKLSAgICBFWENFUFRJT05fQkxPQ0soQmxvYios
IGJsb2IsIFY4QmxvYjo6SGFzSW5zdGFuY2UoTUFZQkVfTUlTU0lOR19QQVJBTUVURVIoYXJncywg
MCwgRGVmYXVsdElzVW5kZWZpbmVkKSkgPyBWOEJsb2I6OnRvTmF0aXZlKHY4OjpIYW5kbGU8djg6
Ok9iamVjdD46OkNhc3QoTUFZQkVfTUlTU0lOR19QQVJBTUVURVIoYXJncywgMCwgRGVmYXVsdElz
VW5kZWZpbmVkKSkpIDogMCk7CisgICAgVFJZQ0FUQ0goQmxvYiosIGJsb2IsIFY4QmxvYjo6SGFz
SW5zdGFuY2UoTUFZQkVfTUlTU0lOR19QQVJBTUVURVIoYXJncywgMCwgRGVmYXVsdElzVW5kZWZp
bmVkKSkgPyBWOEJsb2I6OnRvTmF0aXZlKHY4OjpIYW5kbGU8djg6Ok9iamVjdD46OkNhc3QoTUFZ
QkVfTUlTU0lOR19QQVJBTUVURVIoYXJncywgMCwgRGVmYXVsdElzVW5kZWZpbmVkKSkpIDogMCk7
CiAKICAgICBSZWZQdHI8VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnM+IGltcGwgPSBUZXN0T3Zl
cmxvYWRlZENvbnN0cnVjdG9yczo6Y3JlYXRlKGJsb2IpOwogICAgIHY4OjpIYW5kbGU8djg6Ok9i
amVjdD4gd3JhcHBlciA9IGFyZ3MuSG9sZGVyKCk7CkBAIC04OCw3ICs4OCw3IEBAIHY4OjpIYW5k
bGU8djg6OlZhbHVlPiBWOFRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzOjpjb25zdHJ1Y3RvcjRD
YWxsYmFjayhjb25zdCB2CiB7CiAgICAgSU5DX1NUQVRTKCJET00uVGVzdE92ZXJsb2FkZWRDb25z
dHJ1Y3RvcnMuQ29uc3RydWN0b3I0Iik7CiAgICAgCi0gICAgU1RSSU5HX1RPX1Y4UEFSQU1FVEVS
X0VYQ0VQVElPTl9CTE9DSyhWOFN0cmluZ1Jlc291cmNlPD4sIHN0cmluZywgTUFZQkVfTUlTU0lO
R19QQVJBTUVURVIoYXJncywgMCwgRGVmYXVsdElzVW5kZWZpbmVkKSk7CisgICAgVFJZQ0FUQ0hf
Rk9SX1Y4U1RSSU5HUkVTT1VSQ0UoVjhTdHJpbmdSZXNvdXJjZTw+LCBzdHJpbmcsIE1BWUJFX01J
U1NJTkdfUEFSQU1FVEVSKGFyZ3MsIDAsIERlZmF1bHRJc1VuZGVmaW5lZCkpOwogCiAgICAgUmVm
UHRyPFRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzPiBpbXBsID0gVGVzdE92ZXJsb2FkZWRDb25z
dHJ1Y3RvcnM6OmNyZWF0ZShzdHJpbmcpOwogICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gd3Jh
cHBlciA9IGFyZ3MuSG9sZGVyKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RTZXJpYWxp
emVkU2NyaXB0VmFsdWVJbnRlcmZhY2UuY3BwCmluZGV4IGM2MWRlOTMyOGI4ZTdjNGY3Yjc5MzY3
MDkwZDVhYmI4ZTU0NGE2MDAuLmM2NzAxYmY5MmE5OGZmZWIwNDM3MDI0MmExMjNiMDYzN2QxNzMy
ZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9W
OFRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJ
bnRlcmZhY2UuY3BwCkBAIC0yMTgsNyArMjE4LDcgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4
VGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZTo6Y29uc3RydWN0b3JDYWxsYmFjaygK
ICAgICAgICAgcmV0dXJuIGFyZ3MuSG9sZGVyKCk7CiAgICAgaWYgKGFyZ3MuTGVuZ3RoKCkgPCAy
KQogICAgICAgICByZXR1cm4gdGhyb3dOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihhcmdzLkdldElz
b2xhdGUoKSk7Ci0gICAgU1RSSU5HX1RPX1Y4UEFSQU1FVEVSX0VYQ0VQVElPTl9CTE9DSyhWOFN0
cmluZ1Jlc291cmNlPD4sIGhlbGxvLCBNQVlCRV9NSVNTSU5HX1BBUkFNRVRFUihhcmdzLCAwLCBE
ZWZhdWx0SXNVbmRlZmluZWQpKTsKKyAgICBUUllDQVRDSF9GT1JfVjhTVFJJTkdSRVNPVVJDRShW
OFN0cmluZ1Jlc291cmNlPD4sIGhlbGxvLCBNQVlCRV9NSVNTSU5HX1BBUkFNRVRFUihhcmdzLCAw
LCBEZWZhdWx0SXNVbmRlZmluZWQpKTsKICAgICBNZXNzYWdlUG9ydEFycmF5IG1lc3NhZ2VQb3J0
QXJyYXlUcmFuc2Zlckxpc3Q7CiAgICAgQXJyYXlCdWZmZXJBcnJheSBhcnJheUJ1ZmZlckFycmF5
VHJhbnNmZXJMaXN0OwogICAgIGlmIChhcmdzLkxlbmd0aCgpID4gMikgewpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhCaW5kaW5nLmggYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy92OC9WOEJpbmRpbmcuaAppbmRleCBlYWJhNWQwNzRhMDc2ZWZmN2M1NDk2MjUxMDc3
YTRmMjVjZDA1ZmFmLi41MmU4MTc1NGJiMTQ3YjI1YmFhNTQ1OTVjYmMxYjlkODNlYzE1YjlhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOEJpbmRpbmcuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOEJpbmRpbmcuaApAQCAtMjQ4LDE0ICsyNDgsMTQg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2ODo6TG9jYWw8djg6OlZhbHVlPiB2OFZh
bHVlKHY4OjpMb2NhbDx2ODo6VmFsdWU+OjpOZXcodmFsdWUpKTsKICAgICAgICAgdjg6OkxvY2Fs
PHY4OjpPYmplY3Q+IG9iamVjdCA9IHY4OjpMb2NhbDx2ODo6T2JqZWN0Pjo6Q2FzdCh2OFZhbHVl
KTsKIAotICAgICAgICBFWENFUFRJT05fQkxPQ0sodjg6OkxvY2FsPHY4OjpWYWx1ZT4sIGxlbmd0
aFZhbHVlLCBvYmplY3QtPkdldCh2ODo6U3RyaW5nOjpOZXcoImxlbmd0aCIpKSk7CisgICAgICAg
IFRSWUNBVENIKHY4OjpMb2NhbDx2ODo6VmFsdWU+LCBsZW5ndGhWYWx1ZSwgb2JqZWN0LT5HZXQo
djg6OlN0cmluZzo6TmV3KCJsZW5ndGgiKSkpOwogCiAgICAgICAgIGlmIChsZW5ndGhWYWx1ZS0+
SXNVbmRlZmluZWQoKSB8fCBsZW5ndGhWYWx1ZS0+SXNOdWxsKCkpIHsKICAgICAgICAgICAgIHRo
cm93VHlwZUVycm9yKCk7CiAgICAgICAgICAgICByZXR1cm4gdjhVbmRlZmluZWQoKTsKICAgICAg
ICAgfQogCi0gICAgICAgIEVYQ0VQVElPTl9CTE9DSyh1aW50MzJfdCwgc2VxdWVuY2VMZW5ndGgs
IGxlbmd0aFZhbHVlLT5JbnQzMlZhbHVlKCkpOworICAgICAgICBUUllDQVRDSCh1aW50MzJfdCwg
c2VxdWVuY2VMZW5ndGgsIGxlbmd0aFZhbHVlLT5JbnQzMlZhbHVlKCkpOwogICAgICAgICBsZW5n
dGggPSBzZXF1ZW5jZUxlbmd0aDsKIAogICAgICAgICByZXR1cm4gdjhWYWx1ZTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4QmluZGluZ01hY3Jvcy5oIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvdjgvVjhCaW5kaW5nTWFjcm9zLmgKaW5kZXggZjRjYWI4Yjg1OTFi
N2ZlZjMwNGNhMGY5OGYwMzliYjU3ODdjYTFjZC4uOTkxNzYwMWQwOWI0ZWU0OGE5Zjc2ODFmZTNm
OGFmNDJhMWFhNTAzZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhC
aW5kaW5nTWFjcm9zLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhCaW5kaW5n
TWFjcm9zLmgKQEAgLTQ0LDcgKzQ0LDcgQEAgZW51bSBQYXJhbWV0ZXJEZWZhdWx0UG9saWN5IHsK
ICAgICBEZWZhdWx0SXNOdWxsU3RyaW5nCiB9OwogCi0jZGVmaW5lIEVYQ0VQVElPTl9CTE9DSyh0
eXBlLCB2YXIsIHZhbHVlKSBcCisjZGVmaW5lIFRSWUNBVENIKHR5cGUsIHZhciwgdmFsdWUpIFwK
ICAgICB0eXBlIHZhcjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICB7ICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgICAgdjg6OlRyeUNhdGNoIGJs
b2NrOyAgICAgICAgICAgICAgIFwKQEAgLTUzLDEyICs1MywxMiBAQCBlbnVtIFBhcmFtZXRlckRl
ZmF1bHRQb2xpY3kgewogICAgICAgICAgICAgcmV0dXJuIGJsb2NrLlJlVGhyb3coKTsgICAgICAg
XAogICAgIH0KIAotI2RlZmluZSBTVFJJTkdfVE9fVjhQQVJBTUVURVJfRVhDRVBUSU9OX0JMT0NL
KHR5cGUsIHZhciwgdmFsdWUpIFwKKyNkZWZpbmUgVFJZQ0FUQ0hfRk9SX1Y4U1RSSU5HUkVTT1VS
Q0UodHlwZSwgdmFyLCB2YWx1ZSkgXAogICAgIHR5cGUgdmFyKHZhbHVlKTsgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICBpZiAoIXZhci5wcmVwYXJlKCkp
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgICAgIHJldHVy
biB2ODo6VW5kZWZpbmVkKCk7CiAKLSNkZWZpbmUgU1RSSU5HX1RPX1Y4UEFSQU1FVEVSX0VYQ0VQ
VElPTl9CTE9DS19WT0lEKHR5cGUsIHZhciwgdmFsdWUpIFwKKyNkZWZpbmUgVFJZQ0FUQ0hfRk9S
X1Y4U1RSSU5HUkVTT1VSQ0VfVk9JRCh0eXBlLCB2YXIsIHZhbHVlKSBcCiAgICAgdHlwZSB2YXIo
dmFsdWUpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBc
CiAgICAgaWYgKCF2YXIucHJlcGFyZSgpKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBcCiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEJsb2JDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvdjgvY3VzdG9tL1Y4QmxvYkN1c3RvbS5jcHAKaW5kZXggNGU1ZGM5Njk4Y2NlNWUz
ZmM5YWJhZTNiNzAyNGZjNGZhYTFiMTUyNy4uNGQ1YTJhZGU5NjgzNDBhYWJmNDA3OGJjODMwMDU2
ZTJhZmVmZDE0NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9t
L1Y4QmxvYkN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9t
L1Y4QmxvYkN1c3RvbS5jcHAKQEAgLTcxLDE1ICs3MSwxNSBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1
ZT4gVjhCbG9iOjpjb25zdHJ1Y3RvckNhbGxiYWNrQ3VzdG9tKGNvbnN0IHY4OjpBcmd1bWVudHMm
IGFyZwogICAgICAgICBpZiAoIWFyZ3NbMV0tPklzT2JqZWN0KCkpCiAgICAgICAgICAgICByZXR1
cm4gdGhyb3dUeXBlRXJyb3IoIlNlY29uZCBhcmd1bWVudCBvZiB0aGUgY29uc3RydWN0b3IgaXMg
bm90IG9mIHR5cGUgT2JqZWN0IiwgYXJncy5HZXRJc29sYXRlKCkpOwogCi0gICAgICAgIEVYQ0VQ
VElPTl9CTE9DSyhEaWN0aW9uYXJ5LCBkaWN0aW9uYXJ5LCBEaWN0aW9uYXJ5KGFyZ3NbMV0sIGFy
Z3MuR2V0SXNvbGF0ZSgpKSk7CisgICAgICAgIFRSWUNBVENIKERpY3Rpb25hcnksIGRpY3Rpb25h
cnksIERpY3Rpb25hcnkoYXJnc1sxXSwgYXJncy5HZXRJc29sYXRlKCkpKTsKIAotICAgICAgICBF
WENFUFRJT05fQkxPQ0soYm9vbCwgY29udGFpbnNFbmRpbmdzLCBkaWN0aW9uYXJ5LmdldCgiZW5k
aW5ncyIsIGVuZGluZ3MpKTsKKyAgICAgICAgVFJZQ0FUQ0goYm9vbCwgY29udGFpbnNFbmRpbmdz
LCBkaWN0aW9uYXJ5LmdldCgiZW5kaW5ncyIsIGVuZGluZ3MpKTsKICAgICAgICAgaWYgKGNvbnRh
aW5zRW5kaW5ncykgewogICAgICAgICAgICAgaWYgKGVuZGluZ3MgIT0gInRyYW5zcGFyZW50IiAm
JiBlbmRpbmdzICE9ICJuYXRpdmUiKQogICAgICAgICAgICAgICAgIHJldHVybiB0aHJvd1R5cGVF
cnJvcigiVGhlIGVuZGluZ3MgcHJvcGVydHkgbXVzdCBiZSBlaXRoZXIgXCJ0cmFuc3BhcmVudFwi
IG9yIFwibmF0aXZlXCIiLCBhcmdzLkdldElzb2xhdGUoKSk7CiAgICAgICAgIH0KIAotICAgICAg
ICBFWENFUFRJT05fQkxPQ0soYm9vbCwgY29udGFpbnNUeXBlLCBkaWN0aW9uYXJ5LmdldCgidHlw
ZSIsIHR5cGUpKTsKKyAgICAgICAgVFJZQ0FUQ0goYm9vbCwgY29udGFpbnNUeXBlLCBkaWN0aW9u
YXJ5LmdldCgidHlwZSIsIHR5cGUpKTsKICAgICAgICAgVU5VU0VEX1BBUkFNKGNvbnRhaW5zVHlw
ZSk7CiAgICAgICAgIGlmICghdHlwZS5jb250YWluc09ubHlBU0NJSSgpKQogICAgICAgICAgICAg
cmV0dXJuIHRocm93RXJyb3IodjhTeW50YXhFcnJvciwgInR5cGUgbXVzdCBjb25zaXN0IG9mIEFT
Q0lJIGNoYXJhY3RlcnMiLCBhcmdzLkdldElzb2xhdGUoKSk7CkBAIC05MCw3ICs5MCw3IEBAIHY4
OjpIYW5kbGU8djg6OlZhbHVlPiBWOEJsb2I6OmNvbnN0cnVjdG9yQ2FsbGJhY2tDdXN0b20oY29u
c3Qgdjg6OkFyZ3VtZW50cyYgYXJnCiAKICAgICBCbG9iQnVpbGRlciBibG9iQnVpbGRlcjsKIAot
ICAgIEVYQ0VQVElPTl9CTE9DSyh2ODo6TG9jYWw8djg6OkFycmF5PiwgYmxvYlBhcnRzLCB2ODo6
TG9jYWw8djg6OkFycmF5Pjo6Q2FzdChmaXJzdEFyZykpOworICAgIFRSWUNBVENIKHY4OjpMb2Nh
bDx2ODo6QXJyYXk+LCBibG9iUGFydHMsIHY4OjpMb2NhbDx2ODo6QXJyYXk+OjpDYXN0KGZpcnN0
QXJnKSk7CiAgICAgdWludDMyX3QgbGVuZ3RoID0gYmxvYlBhcnRzLT5MZW5ndGgoKTsKIAogICAg
IGZvciAodWludDMyX3QgaSA9IDA7IGkgPCBsZW5ndGg7ICsraSkgewpAQCAtMTEyLDcgKzExMiw3
IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOEJsb2I6OmNvbnN0cnVjdG9yQ2FsbGJhY2tDdXN0
b20oY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJnCiAgICAgICAgICAgICBBU1NFUlQoYmxvYik7CiAg
ICAgICAgICAgICBibG9iQnVpbGRlci5hcHBlbmQoYmxvYik7CiAgICAgICAgIH0gZWxzZSB7Ci0g
ICAgICAgICAgICBFWENFUFRJT05fQkxPQ0soU3RyaW5nLCBzdHJpbmdWYWx1ZSwgdG9XZWJDb3Jl
U3RyaW5nKGl0ZW0pKTsKKyAgICAgICAgICAgIFRSWUNBVENIKFN0cmluZywgc3RyaW5nVmFsdWUs
IHRvV2ViQ29yZVN0cmluZyhpdGVtKSk7CiAgICAgICAgICAgICBibG9iQnVpbGRlci5hcHBlbmQo
c3RyaW5nVmFsdWUsIGVuZGluZ3MpOwogICAgICAgICB9CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4Q29uc29sZUN1c3RvbS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhDb25zb2xlQ3VzdG9tLmNwcAppbmRleCAz
MjEwZWM2Nzc0MzJkYTAwNzkyNzQxY2E5N2RkNmMwMGUyMDhjZjRiLi5mZWM2NzcyY2MyOTU2MTBj
YTFjYTMxN2U5ODkyYzg0YjIzZDc1NzkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy92OC9jdXN0b20vVjhDb25zb2xlQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy92OC9jdXN0b20vVjhDb25zb2xlQ3VzdG9tLmNwcApAQCAtNjQsNyArNjQsNyBAQCB2
ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhDb25zb2xlOjpwcm9maWxlQ2FsbGJhY2soY29uc3Qgdjg6
OkFyZ3VtZW50cyYgYXJncykKIHsKICAgICBJTkNfU1RBVFMoIkRPTS5Db25zb2xlLnByb2ZpbGUi
KTsKICAgICBDb25zb2xlKiBpbXAgPSBWOENvbnNvbGU6OnRvTmF0aXZlKGFyZ3MuSG9sZGVyKCkp
OwotICAgIFNUUklOR19UT19WOFBBUkFNRVRFUl9FWENFUFRJT05fQkxPQ0soVjhTdHJpbmdSZXNv
dXJjZTxXaXRoVW5kZWZpbmVkT3JOdWxsQ2hlY2s+LCB0aXRsZSwgYXJnc1swXSk7CisgICAgVFJZ
Q0FUQ0hfRk9SX1Y4U1RSSU5HUkVTT1VSQ0UoVjhTdHJpbmdSZXNvdXJjZTxXaXRoVW5kZWZpbmVk
T3JOdWxsQ2hlY2s+LCB0aXRsZSwgYXJnc1swXSk7CiAgICAgaW1wLT5wcm9maWxlKHRpdGxlLCBT
Y3JpcHRTdGF0ZTo6Y3VycmVudCgpKTsKICAgICByZXR1cm4gdjhVbmRlZmluZWQoKTsKIH0KQEAg
LTczLDcgKzczLDcgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4Q29uc29sZTo6cHJvZmlsZUVu
ZENhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB7CiAgICAgSU5DX1NUQVRTKCJE
T00uQ29uc29sZS5wcm9maWxlRW5kIik7CiAgICAgQ29uc29sZSogaW1wID0gVjhDb25zb2xlOjp0
b05hdGl2ZShhcmdzLkhvbGRlcigpKTsKLSAgICBTVFJJTkdfVE9fVjhQQVJBTUVURVJfRVhDRVBU
SU9OX0JMT0NLKFY4U3RyaW5nUmVzb3VyY2U8V2l0aFVuZGVmaW5lZE9yTnVsbENoZWNrPiwgdGl0
bGUsIGFyZ3NbMF0pOworICAgIFRSWUNBVENIX0ZPUl9WOFNUUklOR1JFU09VUkNFKFY4U3RyaW5n
UmVzb3VyY2U8V2l0aFVuZGVmaW5lZE9yTnVsbENoZWNrPiwgdGl0bGUsIGFyZ3NbMF0pOwogICAg
IGltcC0+cHJvZmlsZUVuZCh0aXRsZSwgU2NyaXB0U3RhdGU6OmN1cnJlbnQoKSk7CiAgICAgcmV0
dXJuIHY4VW5kZWZpbmVkKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy92OC9jdXN0b20vVjhET01XaW5kb3dDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvdjgvY3VzdG9tL1Y4RE9NV2luZG93Q3VzdG9tLmNwcAppbmRleCA2NWM2MzZiZWI5ZGRlMjhm
OTA2ZDBkZDVjN2IzOTI3OTQzNGM3Zjg0Li4zNWM4ODg1NTczMmE3OGYxZmIzYWU5YWQ3MDkxZGZi
ZjI2NjcyMmRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20v
VjhET01XaW5kb3dDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1
c3RvbS9WOERPTVdpbmRvd0N1c3RvbS5jcHAKQEAgLTMyNCw3ICszMjQsNyBAQCBzdGF0aWMgdjg6
OkhhbmRsZTx2ODo6VmFsdWU+IGhhbmRsZVBvc3RNZXNzYWdlQ2FsbGJhY2soY29uc3Qgdjg6OkFy
Z3VtZW50cyYgYXJncwogICAgICAgICBpZiAoIWV4dHJhY3RUcmFuc2ZlcmFibGVzKGFyZ3NbdHJh
bnNmZXJhYmxlc0FyZ0luZGV4XSwgcG9ydEFycmF5LCBhcnJheUJ1ZmZlckFycmF5LCBhcmdzLkdl
dElzb2xhdGUoKSkpCiAgICAgICAgICAgICByZXR1cm4gdjg6OlVuZGVmaW5lZCgpOwogICAgIH0K
LSAgICBTVFJJTkdfVE9fVjhQQVJBTUVURVJfRVhDRVBUSU9OX0JMT0NLKFY4U3RyaW5nUmVzb3Vy
Y2U8V2l0aFVuZGVmaW5lZE9yTnVsbENoZWNrPiwgdGFyZ2V0T3JpZ2luLCBhcmdzW3RhcmdldE9y
aWdpbkFyZ0luZGV4XSk7CisgICAgVFJZQ0FUQ0hfRk9SX1Y4U1RSSU5HUkVTT1VSQ0UoVjhTdHJp
bmdSZXNvdXJjZTxXaXRoVW5kZWZpbmVkT3JOdWxsQ2hlY2s+LCB0YXJnZXRPcmlnaW4sIGFyZ3Nb
dGFyZ2V0T3JpZ2luQXJnSW5kZXhdKTsKIAogICAgIGJvb2wgZGlkVGhyb3cgPSBmYWxzZTsKICAg
ICBSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBtZXNzYWdlID0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOERhdGFWaWV3Q3VzdG9tLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOERhdGFWaWV3Q3VzdG9tLmNwcAppbmRl
eCA5ZjQ1YjI2YjExZGNhY2QzNjQxODY2ZDM0NTRkNDQzOTdkZGY1MzNmLi4zZGUyOWJlOGNjZWUw
NmNjMDlkOTNiMjA1MzBkZDhhNGY1NjVlMjFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy92OC9jdXN0b20vVjhEYXRhVmlld0N1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4RGF0YVZpZXdDdXN0b20uY3BwCkBAIC02Miw3ICs2Miw3
IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOERhdGFWaWV3OjpnZXRJbnQ4Q2FsbGJhY2soY29u
c3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKIAogICAgIERhdGFWaWV3KiBpbXAgPSBWOERhdGFWaWV3
Ojp0b05hdGl2ZShhcmdzLkhvbGRlcigpKTsKICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAg
ICBFWENFUFRJT05fQkxPQ0sodW5zaWduZWQsIGJ5dGVPZmZzZXQsIHRvVUludDMyKGFyZ3NbMF0p
KTsKKyAgICBUUllDQVRDSCh1bnNpZ25lZCwgYnl0ZU9mZnNldCwgdG9VSW50MzIoYXJnc1swXSkp
OwogICAgIGludDhfdCByZXN1bHQgPSBpbXAtPmdldEludDgoYnl0ZU9mZnNldCwgZWMpOwogICAg
IGlmIChVTkxJS0VMWShlYykpCiAgICAgICAgIHJldHVybiBzZXRET01FeGNlcHRpb24oZWMsIGFy
Z3MuR2V0SXNvbGF0ZSgpKTsKQEAgLTc3LDcgKzc3LDcgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+
IFY4RGF0YVZpZXc6OmdldFVpbnQ4Q2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykK
IAogICAgIERhdGFWaWV3KiBpbXAgPSBWOERhdGFWaWV3Ojp0b05hdGl2ZShhcmdzLkhvbGRlcigp
KTsKICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBFWENFUFRJT05fQkxPQ0sodW5zaWdu
ZWQsIGJ5dGVPZmZzZXQsIHRvVUludDMyKGFyZ3NbMF0pKTsKKyAgICBUUllDQVRDSCh1bnNpZ25l
ZCwgYnl0ZU9mZnNldCwgdG9VSW50MzIoYXJnc1swXSkpOwogICAgIHVpbnQ4X3QgcmVzdWx0ID0g
aW1wLT5nZXRVaW50OChieXRlT2Zmc2V0LCBlYyk7CiAgICAgaWYgKFVOTElLRUxZKGVjKSkKICAg
ICAgICAgcmV0dXJuIHNldERPTUV4Y2VwdGlvbihlYywgYXJncy5HZXRJc29sYXRlKCkpOwpAQCAt
OTIsOCArOTIsOCBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhEYXRhVmlldzo6c2V0SW50OENh
bGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiAKICAgICBEYXRhVmlldyogaW1wID0g
VjhEYXRhVmlldzo6dG9OYXRpdmUoYXJncy5Ib2xkZXIoKSk7CiAgICAgRXhjZXB0aW9uQ29kZSBl
YyA9IDA7Ci0gICAgRVhDRVBUSU9OX0JMT0NLKHVuc2lnbmVkLCBieXRlT2Zmc2V0LCB0b1VJbnQz
MihhcmdzWzBdKSk7Ci0gICAgRVhDRVBUSU9OX0JMT0NLKGludCwgdmFsdWUsIHRvSW50MzIoYXJn
c1sxXSkpOworICAgIFRSWUNBVENIKHVuc2lnbmVkLCBieXRlT2Zmc2V0LCB0b1VJbnQzMihhcmdz
WzBdKSk7CisgICAgVFJZQ0FUQ0goaW50LCB2YWx1ZSwgdG9JbnQzMihhcmdzWzFdKSk7CiAgICAg
aW1wLT5zZXRJbnQ4KGJ5dGVPZmZzZXQsIHN0YXRpY19jYXN0PGludDhfdD4odmFsdWUpLCBlYyk7
CiAgICAgaWYgKFVOTElLRUxZKGVjKSkKICAgICAgICAgcmV0dXJuIHNldERPTUV4Y2VwdGlvbihl
YywgYXJncy5HZXRJc29sYXRlKCkpOwpAQCAtMTA4LDggKzEwOCw4IEBAIHY4OjpIYW5kbGU8djg6
OlZhbHVlPiBWOERhdGFWaWV3OjpzZXRVaW50OENhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMm
IGFyZ3MpCiAKICAgICBEYXRhVmlldyogaW1wID0gVjhEYXRhVmlldzo6dG9OYXRpdmUoYXJncy5I
b2xkZXIoKSk7CiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgRVhDRVBUSU9OX0JMT0NL
KHVuc2lnbmVkLCBieXRlT2Zmc2V0LCB0b1VJbnQzMihhcmdzWzBdKSk7Ci0gICAgRVhDRVBUSU9O
X0JMT0NLKGludCwgdmFsdWUsIHRvSW50MzIoYXJnc1sxXSkpOworICAgIFRSWUNBVENIKHVuc2ln
bmVkLCBieXRlT2Zmc2V0LCB0b1VJbnQzMihhcmdzWzBdKSk7CisgICAgVFJZQ0FUQ0goaW50LCB2
YWx1ZSwgdG9JbnQzMihhcmdzWzFdKSk7CiAgICAgaW1wLT5zZXRVaW50OChieXRlT2Zmc2V0LCBz
dGF0aWNfY2FzdDx1aW50OF90Pih2YWx1ZSksIGVjKTsKICAgICBpZiAoVU5MSUtFTFkoZWMpKQog
ICAgICAgICByZXR1cm4gc2V0RE9NRXhjZXB0aW9uKGVjLCBhcmdzLkdldElzb2xhdGUoKSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhEZXZpY2VNb3Rp
b25FdmVudEN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhE
ZXZpY2VNb3Rpb25FdmVudEN1c3RvbS5jcHAKaW5kZXggYjJjNDgzYmJkNjYzMzJkOTA5MWE0OTMz
MjRlMzE2MTg0YzYxY2Q0My4uMGZiYTA3M2NjYWExZTg0NThmNjQ5OGE1MzY2OTJjMWFjMTE2MjZl
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4RGV2aWNl
TW90aW9uRXZlbnRDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1
c3RvbS9WOERldmljZU1vdGlvbkV2ZW50Q3VzdG9tLmNwcApAQCAtMTY0LDcgKzE2NCw3IEBAIHY4
OjpIYW5kbGU8djg6OlZhbHVlPiBWOERldmljZU1vdGlvbkV2ZW50OjppbnRlcnZhbEFjY2Vzc29y
R2V0dGVyKHY4OjpMb2NhbDx2ODo6CiB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhEZXZpY2VNb3Rp
b25FdmVudDo6aW5pdERldmljZU1vdGlvbkV2ZW50Q2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50
cyYgYXJncykKIHsKICAgICBEZXZpY2VNb3Rpb25FdmVudCogaW1wID0gVjhEZXZpY2VNb3Rpb25F
dmVudDo6dG9OYXRpdmUoYXJncy5Ib2xkZXIoKSk7Ci0gICAgU1RSSU5HX1RPX1Y4UEFSQU1FVEVS
X0VYQ0VQVElPTl9CTE9DSyhWOFN0cmluZ1Jlc291cmNlPD4sIHR5cGUsIGFyZ3NbMF0pOworICAg
IFRSWUNBVENIX0ZPUl9WOFNUUklOR1JFU09VUkNFKFY4U3RyaW5nUmVzb3VyY2U8PiwgdHlwZSwg
YXJnc1swXSk7CiAgICAgYm9vbCBidWJibGVzID0gYXJnc1sxXS0+Qm9vbGVhblZhbHVlKCk7CiAg
ICAgYm9vbCBjYW5jZWxhYmxlID0gYXJnc1syXS0+Qm9vbGVhblZhbHVlKCk7CiAgICAgUmVmUHRy
PERldmljZU1vdGlvbkRhdGE6OkFjY2VsZXJhdGlvbj4gYWNjZWxlcmF0aW9uID0gcmVhZEFjY2Vs
ZXJhdGlvbkFyZ3VtZW50KGFyZ3NbM10pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvdjgvY3VzdG9tL1Y4RGV2aWNlT3JpZW50YXRpb25FdmVudEN1c3RvbS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhEZXZpY2VPcmllbnRhdGlvbkV2ZW50Q3Vz
dG9tLmNwcAppbmRleCAwZmY2ZjdjZmI4MTY4MWEwNDE1MjM5OGNkYzk1NmI4NDhkZTVmMzJkLi5k
YzFmOTQ0NDA0Njg3NWE3YzQ0MGFjZmJlZGRhOWFjODg0MjIxOGQ1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhEZXZpY2VPcmllbnRhdGlvbkV2ZW50Q3Vz
dG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhEZXZpY2VP
cmllbnRhdGlvbkV2ZW50Q3VzdG9tLmNwcApAQCAtNzgsNyArNzgsNyBAQCB2ODo6SGFuZGxlPHY4
OjpWYWx1ZT4gVjhEZXZpY2VPcmllbnRhdGlvbkV2ZW50OjphYnNvbHV0ZUFjY2Vzc29yR2V0dGVy
KHY4OjpMb2NhbAogdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4RGV2aWNlT3JpZW50YXRpb25FdmVu
dDo6aW5pdERldmljZU9yaWVudGF0aW9uRXZlbnRDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRz
JiBhcmdzKQogewogICAgIERldmljZU9yaWVudGF0aW9uRXZlbnQqIGltcCA9IFY4RGV2aWNlT3Jp
ZW50YXRpb25FdmVudDo6dG9OYXRpdmUoYXJncy5Ib2xkZXIoKSk7Ci0gICAgU1RSSU5HX1RPX1Y4
UEFSQU1FVEVSX0VYQ0VQVElPTl9CTE9DSyhWOFN0cmluZ1Jlc291cmNlPD4sIHR5cGUsIGFyZ3Nb
MF0pOworICAgIFRSWUNBVENIX0ZPUl9WOFNUUklOR1JFU09VUkNFKFY4U3RyaW5nUmVzb3VyY2U8
PiwgdHlwZSwgYXJnc1swXSk7CiAgICAgYm9vbCBidWJibGVzID0gYXJnc1sxXS0+Qm9vbGVhblZh
bHVlKCk7CiAgICAgYm9vbCBjYW5jZWxhYmxlID0gYXJnc1syXS0+Qm9vbGVhblZhbHVlKCk7CiAg
ICAgLy8gSWYgYWxwaGEsIGJldGEsIGdhbW1hIG9yIGFic29sdXRlIGFyZSBudWxsIG9yIHVuZGVm
aW5lZCwgbWFyayB0aGVtIGFzIG5vdCBwcm92aWRlZC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOERvY3VtZW50Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOERvY3VtZW50Q3VzdG9tLmNwcAppbmRleCAyMTI1ODJj
NWZlYzliODRkN2VlMzQ3NTY1ODMyMzhiYzhkMDhmZTljLi4wNzhlNWJhNzViZWI0YWVlYjMxZmNm
MTM3YjAxMmIyNGE5ZDFlOTVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92
OC9jdXN0b20vVjhEb2N1bWVudEN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvdjgvY3VzdG9tL1Y4RG9jdW1lbnRDdXN0b20uY3BwCkBAIC04NCw3ICs4NCw3IEBAIHY4OjpI
YW5kbGU8djg6OlZhbHVlPiBWOERvY3VtZW50OjpldmFsdWF0ZUNhbGxiYWNrKGNvbnN0IHY4OjpB
cmd1bWVudHMmIGFyZ3MpCiAgICAgaWYgKFY4WFBhdGhSZXN1bHQ6Okhhc0luc3RhbmNlKGFyZ3Nb
NF0pKQogICAgICAgICBpblJlc3VsdCA9IFY4WFBhdGhSZXN1bHQ6OnRvTmF0aXZlKHY4OjpIYW5k
bGU8djg6Ok9iamVjdD46OkNhc3QoYXJnc1s0XSkpOwogCi0gICAgRVhDRVBUSU9OX0JMT0NLKFJl
ZlB0cjxYUGF0aFJlc3VsdD4sIHJlc3VsdCwgZG9jdW1lbnQtPmV2YWx1YXRlKGV4cHJlc3Npb24s
IGNvbnRleHROb2RlLmdldCgpLCByZXNvbHZlci5nZXQoKSwgdHlwZSwgaW5SZXN1bHQuZ2V0KCks
IGVjKSk7CisgICAgVFJZQ0FUQ0goUmVmUHRyPFhQYXRoUmVzdWx0PiwgcmVzdWx0LCBkb2N1bWVu
dC0+ZXZhbHVhdGUoZXhwcmVzc2lvbiwgY29udGV4dE5vZGUuZ2V0KCksIHJlc29sdmVyLmdldCgp
LCB0eXBlLCBpblJlc3VsdC5nZXQoKSwgZWMpKTsKICAgICBpZiAoZWMpCiAgICAgICAgIHJldHVy
biBzZXRET01FeGNlcHRpb24oZWMsIGFyZ3MuR2V0SXNvbGF0ZSgpKTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTE9wdGlvbnNDb2xsZWN0aW9u
Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxPcHRp
b25zQ29sbGVjdGlvbkN1c3RvbS5jcHAKaW5kZXggNTQ0MWZmNmU0Mjk0Mjk4YzEzMzlkYjAzYzM1
YmExYmRjMzU3NjM2My4uNDkwMTljZjU1NzQ2NzBhMTEwMjRjNzFiNjY3ZGNlOTY2MjA2NTZlNiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTE9wdGlv
bnNDb2xsZWN0aW9uQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9j
dXN0b20vVjhIVE1MT3B0aW9uc0NvbGxlY3Rpb25DdXN0b20uY3BwCkBAIC0xMDUsNyArMTA1LDcg
QEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4SFRNTE9wdGlvbnNDb2xsZWN0aW9uOjphZGRDYWxs
YmFjayhjb25zdCB2ODo6QXJndW1lbnRzJgogICAgICAgICBpbXAtPmFkZChvcHRpb24sIGVjKTsK
ICAgICBlbHNlIHsKICAgICAgICAgYm9vbCBvazsKLSAgICAgICAgRVhDRVBUSU9OX0JMT0NLKGlu
dCwgaW5kZXgsIHRvSW50MzIoYXJnc1sxXSwgb2spKTsKKyAgICAgICAgVFJZQ0FUQ0goaW50LCBp
bmRleCwgdG9JbnQzMihhcmdzWzFdLCBvaykpOwogICAgICAgICBpZiAoIW9rKQogICAgICAgICAg
ICAgZWMgPSBUWVBFX01JU01BVENIX0VSUjsKICAgICAgICAgZWxzZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SGlzdG9yeUN1c3RvbS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhIaXN0b3J5Q3VzdG9tLmNwcAppbmRleCBl
YThhNzYxODBmNDRhNWZlNzYyMWYzNTMxNDQyNGFhMTMyNGQxNTZlLi4xZWJjMzBmOGFjMGY5OTZj
MGQ5MWU2MmI5MmIzNDc1OGQ3MzI3Y2IzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy92OC9jdXN0b20vVjhIaXN0b3J5Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy92OC9jdXN0b20vVjhIaXN0b3J5Q3VzdG9tLmNwcApAQCAtNjUsOCArNjUsOCBAQCB2
ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhIaXN0b3J5OjpwdXNoU3RhdGVDYWxsYmFjayhjb25zdCB2
ODo6QXJndW1lbnRzJiBhcmdzKQogICAgIGlmIChkaWRUaHJvdykKICAgICAgICAgcmV0dXJuIHY4
OjpVbmRlZmluZWQoKTsKIAotICAgIFNUUklOR19UT19WOFBBUkFNRVRFUl9FWENFUFRJT05fQkxP
Q0soVjhTdHJpbmdSZXNvdXJjZTxXaXRoVW5kZWZpbmVkT3JOdWxsQ2hlY2s+LCB0aXRsZSwgYXJn
c1sxXSk7Ci0gICAgU1RSSU5HX1RPX1Y4UEFSQU1FVEVSX0VYQ0VQVElPTl9CTE9DSyhWOFN0cmlu
Z1Jlc291cmNlPFdpdGhVbmRlZmluZWRPck51bGxDaGVjaz4sIHVybCwgTUFZQkVfTUlTU0lOR19Q
QVJBTUVURVIoYXJncywgMiwgRGVmYXVsdElzTnVsbFN0cmluZykpOworICAgIFRSWUNBVENIX0ZP
Ul9WOFNUUklOR1JFU09VUkNFKFY4U3RyaW5nUmVzb3VyY2U8V2l0aFVuZGVmaW5lZE9yTnVsbENo
ZWNrPiwgdGl0bGUsIGFyZ3NbMV0pOworICAgIFRSWUNBVENIX0ZPUl9WOFNUUklOR1JFU09VUkNF
KFY4U3RyaW5nUmVzb3VyY2U8V2l0aFVuZGVmaW5lZE9yTnVsbENoZWNrPiwgdXJsLCBNQVlCRV9N
SVNTSU5HX1BBUkFNRVRFUihhcmdzLCAyLCBEZWZhdWx0SXNOdWxsU3RyaW5nKSk7CiAKICAgICBF
eGNlcHRpb25Db2RlIGVjID0gMDsKICAgICBIaXN0b3J5KiBoaXN0b3J5ID0gVjhIaXN0b3J5Ojp0
b05hdGl2ZShhcmdzLkhvbGRlcigpKTsKQEAgLTgyLDggKzgyLDggQEAgdjg6OkhhbmRsZTx2ODo6
VmFsdWU+IFY4SGlzdG9yeTo6cmVwbGFjZVN0YXRlQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50
cyYgYXJncykKICAgICBpZiAoZGlkVGhyb3cpCiAgICAgICAgIHJldHVybiB2ODo6VW5kZWZpbmVk
KCk7CiAKLSAgICBTVFJJTkdfVE9fVjhQQVJBTUVURVJfRVhDRVBUSU9OX0JMT0NLKFY4U3RyaW5n
UmVzb3VyY2U8V2l0aFVuZGVmaW5lZE9yTnVsbENoZWNrPiwgdGl0bGUsIGFyZ3NbMV0pOwotICAg
IFNUUklOR19UT19WOFBBUkFNRVRFUl9FWENFUFRJT05fQkxPQ0soVjhTdHJpbmdSZXNvdXJjZTxX
aXRoVW5kZWZpbmVkT3JOdWxsQ2hlY2s+LCB1cmwsIE1BWUJFX01JU1NJTkdfUEFSQU1FVEVSKGFy
Z3MsIDIsIERlZmF1bHRJc051bGxTdHJpbmcpKTsKKyAgICBUUllDQVRDSF9GT1JfVjhTVFJJTkdS
RVNPVVJDRShWOFN0cmluZ1Jlc291cmNlPFdpdGhVbmRlZmluZWRPck51bGxDaGVjaz4sIHRpdGxl
LCBhcmdzWzFdKTsKKyAgICBUUllDQVRDSF9GT1JfVjhTVFJJTkdSRVNPVVJDRShWOFN0cmluZ1Jl
c291cmNlPFdpdGhVbmRlZmluZWRPck51bGxDaGVjaz4sIHVybCwgTUFZQkVfTUlTU0lOR19QQVJB
TUVURVIoYXJncywgMiwgRGVmYXVsdElzTnVsbFN0cmluZykpOwogCiAgICAgRXhjZXB0aW9uQ29k
ZSBlYyA9IDA7CiAgICAgSGlzdG9yeSogaGlzdG9yeSA9IFY4SGlzdG9yeTo6dG9OYXRpdmUoYXJn
cy5Ib2xkZXIoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0
b20vVjhJbnRlbnRDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9t
L1Y4SW50ZW50Q3VzdG9tLmNwcAppbmRleCBiMzhlYTAxOTQ3ZWQ2ODU1MmM3MGQ2NGU0NTU3NDMx
YjVmYTdlYzA0Li45YWNiZjZmOWRmNTA2ZWVhN2ViNTUwMDdkNDkxYWJiNmUxNWJiZTQ1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhJbnRlbnRDdXN0b20u
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEludGVudEN1c3Rv
bS5jcHAKQEAgLTQ4LDcgKzQ4LDcgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4SW50ZW50Ojpj
b25zdHJ1Y3RvckNhbGxiYWNrQ3VzdG9tKGNvbnN0IHY4OjpBcmd1bWVudHMmIGEKICAgICBpZiAo
YXJncy5MZW5ndGgoKSA9PSAxKSB7CiAgICAgICAgIC8vIFVzZSB0aGUgZGljdGlvbmFyeSBjb25z
dHJ1Y3Rvci4gVGhpcyBibG9jayB3aWxsIHJldHVybiBpZiB0aGUKICAgICAgICAgLy8gYXJndW1l
bnQgaXNuJ3QgYSB2YWxpZCBEaWN0aW9uYXJ5LgotICAgICAgICBFWENFUFRJT05fQkxPQ0soRGlj
dGlvbmFyeSwgb3B0aW9ucywgRGljdGlvbmFyeShhcmdzWzBdLCBhcmdzLkdldElzb2xhdGUoKSkp
OworICAgICAgICBUUllDQVRDSChEaWN0aW9uYXJ5LCBvcHRpb25zLCBEaWN0aW9uYXJ5KGFyZ3Nb
MF0sIGFyZ3MuR2V0SXNvbGF0ZSgpKSk7CiAgICAgICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwog
ICAgICAgICBSZWZQdHI8SW50ZW50PiBpbXBsID0gSW50ZW50OjpjcmVhdGUoU2NyaXB0U3RhdGU6
OmN1cnJlbnQoKSwgb3B0aW9ucywgZWMpOwogICAgICAgICBpZiAoZWMpCkBAIC02MCw4ICs2MCw4
IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOEludGVudDo6Y29uc3RydWN0b3JDYWxsYmFja0N1
c3RvbShjb25zdCB2ODo6QXJndW1lbnRzJiBhCiAgICAgfQogCiAgICAgRXhjZXB0aW9uQ29kZSBl
YyA9IDA7Ci0gICAgU1RSSU5HX1RPX1Y4UEFSQU1FVEVSX0VYQ0VQVElPTl9CTE9DSyhWOFN0cmlu
Z1Jlc291cmNlPD4sIGFjdGlvbiwgTUFZQkVfTUlTU0lOR19QQVJBTUVURVIoYXJncywgMCwgRGVm
YXVsdElzVW5kZWZpbmVkKSk7Ci0gICAgU1RSSU5HX1RPX1Y4UEFSQU1FVEVSX0VYQ0VQVElPTl9C
TE9DSyhWOFN0cmluZ1Jlc291cmNlPD4sIHR5cGUsIE1BWUJFX01JU1NJTkdfUEFSQU1FVEVSKGFy
Z3MsIDEsIERlZmF1bHRJc1VuZGVmaW5lZCkpOworICAgIFRSWUNBVENIX0ZPUl9WOFNUUklOR1JF
U09VUkNFKFY4U3RyaW5nUmVzb3VyY2U8PiwgYWN0aW9uLCBNQVlCRV9NSVNTSU5HX1BBUkFNRVRF
UihhcmdzLCAwLCBEZWZhdWx0SXNVbmRlZmluZWQpKTsKKyAgICBUUllDQVRDSF9GT1JfVjhTVFJJ
TkdSRVNPVVJDRShWOFN0cmluZ1Jlc291cmNlPD4sIHR5cGUsIE1BWUJFX01JU1NJTkdfUEFSQU1F
VEVSKGFyZ3MsIDEsIERlZmF1bHRJc1VuZGVmaW5lZCkpOwogICAgIE1lc3NhZ2VQb3J0QXJyYXkg
bWVzc2FnZVBvcnRBcnJheVRyYW5zZmVyTGlzdDsKICAgICBBcnJheUJ1ZmZlckFycmF5IGFycmF5
QnVmZmVyQXJyYXlUcmFuc2Zlckxpc3Q7CiAgICAgaWYgKGFyZ3MuTGVuZ3RoKCkgPiAzKSB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhTUUxUcmFuc2Fj
dGlvbkN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhTUUxU
cmFuc2FjdGlvbkN1c3RvbS5jcHAKaW5kZXggNGNhNjYwYTQwMDk4ZmM4N2EzNzM4ODliNzQyODEz
MWI5MTc2NmE0Yy4uNjRjYmYwNDhlZThiNDc0ZWExMTVmMmMxOGMxNjg5MDZiOTJhNDhkNyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4U1FMVHJhbnNhY3Rp
b25DdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFNR
TFRyYW5zYWN0aW9uQ3VzdG9tLmNwcApAQCAtNTMsNyArNTMsNyBAQCB2ODo6SGFuZGxlPHY4OjpW
YWx1ZT4gVjhTUUxUcmFuc2FjdGlvbjo6ZXhlY3V0ZVNxbENhbGxiYWNrKGNvbnN0IHY4OjpBcmd1
bWVudHMmCiAgICAgaWYgKGFyZ3MuTGVuZ3RoKCkgPT0gMCkKICAgICAgICAgcmV0dXJuIHNldERP
TUV4Y2VwdGlvbihTWU5UQVhfRVJSLCBhcmdzLkdldElzb2xhdGUoKSk7CiAKLSAgICBTVFJJTkdf
VE9fVjhQQVJBTUVURVJfRVhDRVBUSU9OX0JMT0NLKFY4U3RyaW5nUmVzb3VyY2U8Piwgc3RhdGVt
ZW50LCBhcmdzWzBdKTsKKyAgICBUUllDQVRDSF9GT1JfVjhTVFJJTkdSRVNPVVJDRShWOFN0cmlu
Z1Jlc291cmNlPD4sIHN0YXRlbWVudCwgYXJnc1swXSk7CiAKICAgICBWZWN0b3I8U1FMVmFsdWU+
IHNxbFZhbHVlczsKIApAQCAtNjMsNyArNjMsNyBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhT
UUxUcmFuc2FjdGlvbjo6ZXhlY3V0ZVNxbENhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmCiAK
ICAgICAgICAgdWludDMyX3Qgc3FsQXJnc0xlbmd0aCA9IDA7CiAgICAgICAgIHY4OjpMb2NhbDx2
ODo6T2JqZWN0PiBzcWxBcmdzT2JqZWN0ID0gYXJnc1sxXS0+VG9PYmplY3QoKTsKLSAgICAgICAg
RVhDRVBUSU9OX0JMT0NLKHY4OjpMb2NhbDx2ODo6VmFsdWU+LCBsZW5ndGgsIHNxbEFyZ3NPYmpl
Y3QtPkdldCh2ODo6U3RyaW5nOjpOZXcoImxlbmd0aCIpKSk7CisgICAgICAgIFRSWUNBVENIKHY4
OjpMb2NhbDx2ODo6VmFsdWU+LCBsZW5ndGgsIHNxbEFyZ3NPYmplY3QtPkdldCh2ODo6U3RyaW5n
OjpOZXcoImxlbmd0aCIpKSk7CiAKICAgICAgICAgaWYgKGlzVW5kZWZpbmVkT3JOdWxsKGxlbmd0
aCkpCiAgICAgICAgICAgICBzcWxBcmdzTGVuZ3RoID0gc3FsQXJnc09iamVjdC0+R2V0UHJvcGVy
dHlOYW1lcygpLT5MZW5ndGgoKTsKQEAgLTcyLDE1ICs3MiwxNSBAQCB2ODo6SGFuZGxlPHY4OjpW
YWx1ZT4gVjhTUUxUcmFuc2FjdGlvbjo6ZXhlY3V0ZVNxbENhbGxiYWNrKGNvbnN0IHY4OjpBcmd1
bWVudHMmCiAKICAgICAgICAgZm9yICh1bnNpZ25lZCBpbnQgaSA9IDA7IGkgPCBzcWxBcmdzTGVu
Z3RoOyArK2kpIHsKICAgICAgICAgICAgIHY4OjpIYW5kbGU8djg6OkludGVnZXI+IGtleSA9IHY4
SW50ZWdlcihpLCBhcmdzLkdldElzb2xhdGUoKSk7Ci0gICAgICAgICAgICBFWENFUFRJT05fQkxP
Q0sodjg6OkxvY2FsPHY4OjpWYWx1ZT4sIHZhbHVlLCBzcWxBcmdzT2JqZWN0LT5HZXQoa2V5KSk7
CisgICAgICAgICAgICBUUllDQVRDSCh2ODo6TG9jYWw8djg6OlZhbHVlPiwgdmFsdWUsIHNxbEFy
Z3NPYmplY3QtPkdldChrZXkpKTsKIAogICAgICAgICAgICAgaWYgKHZhbHVlLklzRW1wdHkoKSB8
fCB2YWx1ZS0+SXNOdWxsKCkpCiAgICAgICAgICAgICAgICAgc3FsVmFsdWVzLmFwcGVuZChTUUxW
YWx1ZSgpKTsKICAgICAgICAgICAgIGVsc2UgaWYgKHZhbHVlLT5Jc051bWJlcigpKSB7Ci0gICAg
ICAgICAgICAgICAgRVhDRVBUSU9OX0JMT0NLKGRvdWJsZSwgc3FsVmFsdWUsIHZhbHVlLT5OdW1i
ZXJWYWx1ZSgpKTsKKyAgICAgICAgICAgICAgICBUUllDQVRDSChkb3VibGUsIHNxbFZhbHVlLCB2
YWx1ZS0+TnVtYmVyVmFsdWUoKSk7CiAgICAgICAgICAgICAgICAgc3FsVmFsdWVzLmFwcGVuZChT
UUxWYWx1ZShzcWxWYWx1ZSkpOwogICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAg
ICBTVFJJTkdfVE9fVjhQQVJBTUVURVJfRVhDRVBUSU9OX0JMT0NLKFY4U3RyaW5nUmVzb3VyY2U8
Piwgc3FsVmFsdWUsIHZhbHVlKTsKKyAgICAgICAgICAgICAgICBUUllDQVRDSF9GT1JfVjhTVFJJ
TkdSRVNPVVJDRShWOFN0cmluZ1Jlc291cmNlPD4sIHNxbFZhbHVlLCB2YWx1ZSk7CiAgICAgICAg
ICAgICAgICAgc3FsVmFsdWVzLmFwcGVuZChTUUxWYWx1ZShzcWxWYWx1ZSkpOwogICAgICAgICAg
ICAgfQogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9j
dXN0b20vVjhTUUxUcmFuc2FjdGlvblN5bmNDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvdjgvY3VzdG9tL1Y4U1FMVHJhbnNhY3Rpb25TeW5jQ3VzdG9tLmNwcAppbmRleCBiYjJm
ODFmZTJiZDZkMDYzMjI1NjZmYTgxMDM3ZjcyYzM4YjdmZTYzLi5kNzlhNDY3MGE4NTYxMGY2NDFj
OTk5ZjZiOGU2N2ZlYWFiZGU5ZTk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy92OC9jdXN0b20vVjhTUUxUcmFuc2FjdGlvblN5bmNDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFNRTFRyYW5zYWN0aW9uU3luY0N1c3RvbS5jcHAK
QEAgLTUzLDcgKzUzLDcgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4U1FMVHJhbnNhY3Rpb25T
eW5jOjpleGVjdXRlU3FsQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW4KICAgICBpZiAoIWFyZ3Mu
TGVuZ3RoKCkpCiAgICAgICAgIHJldHVybiBzZXRET01FeGNlcHRpb24oU1lOVEFYX0VSUiwgYXJn
cy5HZXRJc29sYXRlKCkpOwogCi0gICAgU1RSSU5HX1RPX1Y4UEFSQU1FVEVSX0VYQ0VQVElPTl9C
TE9DSyhWOFN0cmluZ1Jlc291cmNlPD4sIHN0YXRlbWVudCwgYXJnc1swXSk7CisgICAgVFJZQ0FU
Q0hfRk9SX1Y4U1RSSU5HUkVTT1VSQ0UoVjhTdHJpbmdSZXNvdXJjZTw+LCBzdGF0ZW1lbnQsIGFy
Z3NbMF0pOwogCiAgICAgVmVjdG9yPFNRTFZhbHVlPiBzcWxWYWx1ZXM7CiAKQEAgLTYzLDcgKzYz
LDcgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4U1FMVHJhbnNhY3Rpb25TeW5jOjpleGVjdXRl
U3FsQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW4KIAogICAgICAgICB1aW50MzJfdCBzcWxBcmdz
TGVuZ3RoID0gMDsKICAgICAgICAgdjg6OkxvY2FsPHY4OjpPYmplY3Q+IHNxbEFyZ3NPYmplY3Qg
PSBhcmdzWzFdLT5Ub09iamVjdCgpOwotICAgICAgICBFWENFUFRJT05fQkxPQ0sodjg6OkxvY2Fs
PHY4OjpWYWx1ZT4sIGxlbmd0aCwgc3FsQXJnc09iamVjdC0+R2V0KHY4OjpTdHJpbmc6Ok5ldygi
bGVuZ3RoIikpKTsKKyAgICAgICAgVFJZQ0FUQ0godjg6OkxvY2FsPHY4OjpWYWx1ZT4sIGxlbmd0
aCwgc3FsQXJnc09iamVjdC0+R2V0KHY4OjpTdHJpbmc6Ok5ldygibGVuZ3RoIikpKTsKIAogICAg
ICAgICBpZiAoaXNVbmRlZmluZWRPck51bGwobGVuZ3RoKSkKICAgICAgICAgICAgIHNxbEFyZ3NM
ZW5ndGggPSBzcWxBcmdzT2JqZWN0LT5HZXRQcm9wZXJ0eU5hbWVzKCktPkxlbmd0aCgpOwpAQCAt
NzIsMTUgKzcyLDE1IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOFNRTFRyYW5zYWN0aW9uU3lu
Yzo6ZXhlY3V0ZVNxbENhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVuCiAKICAgICAgICAgZm9yICh1
bnNpZ25lZCBpbnQgaSA9IDA7IGkgPCBzcWxBcmdzTGVuZ3RoOyArK2kpIHsKICAgICAgICAgICAg
IHY4OjpIYW5kbGU8djg6OkludGVnZXI+IGtleSA9IHY4SW50ZWdlcihpLCBhcmdzLkdldElzb2xh
dGUoKSk7Ci0gICAgICAgICAgICBFWENFUFRJT05fQkxPQ0sodjg6OkxvY2FsPHY4OjpWYWx1ZT4s
IHZhbHVlLCBzcWxBcmdzT2JqZWN0LT5HZXQoa2V5KSk7CisgICAgICAgICAgICBUUllDQVRDSCh2
ODo6TG9jYWw8djg6OlZhbHVlPiwgdmFsdWUsIHNxbEFyZ3NPYmplY3QtPkdldChrZXkpKTsKIAog
ICAgICAgICAgICAgaWYgKHZhbHVlLklzRW1wdHkoKSB8fCB2YWx1ZS0+SXNOdWxsKCkpCiAgICAg
ICAgICAgICAgICAgc3FsVmFsdWVzLmFwcGVuZChTUUxWYWx1ZSgpKTsKICAgICAgICAgICAgIGVs
c2UgaWYgKHZhbHVlLT5Jc051bWJlcigpKSB7Ci0gICAgICAgICAgICAgICAgRVhDRVBUSU9OX0JM
T0NLKGRvdWJsZSwgc3FsVmFsdWUsIHZhbHVlLT5OdW1iZXJWYWx1ZSgpKTsKKyAgICAgICAgICAg
ICAgICBUUllDQVRDSChkb3VibGUsIHNxbFZhbHVlLCB2YWx1ZS0+TnVtYmVyVmFsdWUoKSk7CiAg
ICAgICAgICAgICAgICAgc3FsVmFsdWVzLmFwcGVuZChTUUxWYWx1ZShzcWxWYWx1ZSkpOwogICAg
ICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBTVFJJTkdfVE9fVjhQQVJBTUVURVJf
RVhDRVBUSU9OX0JMT0NLKFY4U3RyaW5nUmVzb3VyY2U8Piwgc3FsVmFsdWUsIHZhbHVlKTsKKyAg
ICAgICAgICAgICAgICBUUllDQVRDSF9GT1JfVjhTVFJJTkdSRVNPVVJDRShWOFN0cmluZ1Jlc291
cmNlPD4sIHNxbFZhbHVlLCB2YWx1ZSk7CiAgICAgICAgICAgICAgICAgc3FsVmFsdWVzLmFwcGVu
ZChTUUxWYWx1ZShzcWxWYWx1ZSkpOwogICAgICAgICAgICAgfQogICAgICAgICB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhTVkdMZW5ndGhDdXN0b20u
Y3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4U1ZHTGVuZ3RoQ3VzdG9t
LmNwcAppbmRleCBmNDk0YWRjYjA1YjBmZDkxZTRiNjI3MzNjYjZkM2MzNWMyMGYyZDU3Li43ZGIz
M2UxNmVlZTJlZjcxZDlmN2M3YmExNGQwOTg4ZmE4NzZjMmY3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhTVkdMZW5ndGhDdXN0b20uY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFNWR0xlbmd0aEN1c3RvbS5jcHAKQEAg
LTg5LDcgKzg5LDcgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4U1ZHTGVuZ3RoOjpjb252ZXJ0
VG9TcGVjaWZpZWRVbml0c0NhbGxiYWNrKGNvbnN0IHY4OjpBcmcKIAogICAgIFNWR0xlbmd0aCYg
aW1wID0gd3JhcHBlci0+cHJvcGVydHlSZWZlcmVuY2UoKTsKICAgICBFeGNlcHRpb25Db2RlIGVj
ID0gMDsKLSAgICBFWENFUFRJT05fQkxPQ0soaW50LCB1bml0VHlwZSwgdG9VSW50MzIoYXJnc1sw
XSkpOworICAgIFRSWUNBVENIKGludCwgdW5pdFR5cGUsIHRvVUludDMyKGFyZ3NbMF0pKTsKICAg
ICBTVkdMZW5ndGhDb250ZXh0IGxlbmd0aENvbnRleHQod3JhcHBlci0+Y29udGV4dEVsZW1lbnQo
KSk7CiAgICAgaW1wLmNvbnZlcnRUb1NwZWNpZmllZFVuaXRzKHVuaXRUeXBlLCBsZW5ndGhDb250
ZXh0LCBlYyk7CiAgICAgaWYgKFVOTElLRUxZKGVjKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFdlYkdMUmVuZGVyaW5nQ29udGV4dEN1c3RvbS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhXZWJHTFJlbmRlcmluZ0NvbnRl
eHRDdXN0b20uY3BwCmluZGV4IDMwNWRhYTg0MWI1NDgyNzllZTk0Mjc2ODI0ZmVhODhjYWQ2ZjFi
YzIuLjBkZmM3MzNhNWU1ZTAxYTg4YWM3OGZiMGJmNDk0NDliYjM5ODFmMzAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFdlYkdMUmVuZGVyaW5nQ29udGV4
dEN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4V2Vi
R0xSZW5kZXJpbmdDb250ZXh0Q3VzdG9tLmNwcApAQCAtMzA4LDcgKzMwOCw3IEBAIHY4OjpIYW5k
bGU8djg6OlZhbHVlPiBWOFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0RXh0ZW5zaW9uQ2FsbGJh
Y2soY29uc3Qgdjg6OkFyCiAgICAgV2ViR0xSZW5kZXJpbmdDb250ZXh0KiBpbXAgPSBWOFdlYkdM
UmVuZGVyaW5nQ29udGV4dDo6dG9OYXRpdmUoYXJncy5Ib2xkZXIoKSk7CiAgICAgaWYgKGFyZ3Mu
TGVuZ3RoKCkgPCAxKQogICAgICAgICByZXR1cm4gdGhyb3dOb3RFbm91Z2hBcmd1bWVudHNFcnJv
cihhcmdzLkdldElzb2xhdGUoKSk7Ci0gICAgU1RSSU5HX1RPX1Y4UEFSQU1FVEVSX0VYQ0VQVElP
Tl9CTE9DSyhWOFN0cmluZ1Jlc291cmNlPD4sIG5hbWUsIGFyZ3NbMF0pOworICAgIFRSWUNBVENI
X0ZPUl9WOFNUUklOR1JFU09VUkNFKFY4U3RyaW5nUmVzb3VyY2U8PiwgbmFtZSwgYXJnc1swXSk7
CiAgICAgV2ViR0xFeHRlbnNpb24qIGV4dGVuc2lvbiA9IGltcC0+Z2V0RXh0ZW5zaW9uKG5hbWUp
OwogICAgIHJldHVybiB0b1Y4T2JqZWN0KGV4dGVuc2lvbiwgYXJncy5Ib2xkZXIoKSwgYXJncy5H
ZXRJc29sYXRlKCkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvdjgv
Y3VzdG9tL1Y4V29ya2VyQ29udGV4dEN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy92OC9jdXN0b20vVjhXb3JrZXJDb250ZXh0Q3VzdG9tLmNwcAppbmRleCBmMWUzZTFiNGUwOGI5
ZDA4ZmVmNmJiNDQ2OGI3ZmM0OTczYzk4MmU2Li5hN2FjZTAzYmI0MDhjZDAzODM4NjRlZDA5MWQw
NGUxZTk3YjBkNjYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0
b20vVjhXb3JrZXJDb250ZXh0Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy92OC9jdXN0b20vVjhXb3JrZXJDb250ZXh0Q3VzdG9tLmNwcApAQCAtOTgsNyArOTgsNyBAQCB2
ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhXb3JrZXJDb250ZXh0OjppbXBvcnRTY3JpcHRzQ2FsbGJh
Y2soY29uc3Qgdjg6OkFyZ3VtZW50cwogCiAgICAgVmVjdG9yPFN0cmluZz4gdXJsczsKICAgICBm
b3IgKGludCBpID0gMDsgaSA8IGFyZ3MuTGVuZ3RoKCk7IGkrKykgewotICAgICAgICBFWENFUFRJ
T05fQkxPQ0sodjg6OkhhbmRsZTx2ODo6U3RyaW5nPiwgc2NyaXB0VXJsLCBhcmdzW2ldLT5Ub1N0
cmluZygpKTsKKyAgICAgICAgVFJZQ0FUQ0godjg6OkhhbmRsZTx2ODo6U3RyaW5nPiwgc2NyaXB0
VXJsLCBhcmdzW2ldLT5Ub1N0cmluZygpKTsKICAgICAgICAgaWYgKHNjcmlwdFVybC5Jc0VtcHR5
KCkpCiAgICAgICAgICAgICByZXR1cm4gdjg6OlVuZGVmaW5lZCgpOwogICAgICAgICB1cmxzLmFw
cGVuZCh0b1dlYkNvcmVTdHJpbmcoc2NyaXB0VXJsKSk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>176163</attachid>
            <date>2012-11-26 21:10:29 -0800</date>
            <delta_ts>2012-11-26 21:33:53 -0800</delta_ts>
            <desc>patch for landing</desc>
            <filename>bug-103352-20121127140807.patch</filename>
            <type>text/plain</type>
            <size>86224</size>
            <attacher name="Kentaro Hara">haraken</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM1ODE1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODRmYzE4OTQwODI0MThi
NzhjOTczNjRkZDI4OTc5MWJiZjhkNzlmMy4uMGY5MWQ0ZDFjODJkZWZhYjE3MGI1MTg2YmE1NTI2
MWM0ZjUxODg0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzOSBAQAorMjAxMi0xMS0yNiAgS2Vu
dGFybyBIYXJhICA8aGFyYWtlbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW1Y4XSBSZW5hbWUg
RVhDRVBUSU9OX0JMT0NLKCkgbWFjcm9zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xMDMzNTIKKworICAgICAgICBSZXZpZXdlZCBieSBBZGFtIEJhcnRo
LgorCisgICAgICAgIFNpbmNlIFY4UGFyYW1ldGVyIHdhcyByZW5hbWVkIHRvIFY4U3RyaW5nUmVz
b3VyY2UsCisgICAgICAgIHdlIHJlbmFtZSBtYWNyb3MgdGhhdCB1c2UgVjhQYXJhbWV0ZXIuCisK
KyAgICAgICAgRVhDRVBUSU9OX0JMT0NLKCkgPT4gVjhUUllDQVRDSCgpCisgICAgICAgIFNUUklO
R19UT19WOFBBUkFNRVRFUl9FWENFUFRJT05fQkxPQ0soKSA9PiBWOFRSWUNBVENIX0ZPUl9WOFNU
UklOR1JFU09VUkNFKCkKKyAgICAgICAgU1RSSU5HX1RPX1Y4UEFSQU1FVEVSX0VYQ0VQVElPTl9C
TE9DS19WT0lEKCkgPT4gVjhUUllDQVRDSF9GT1JfVjhTVFJJTkdSRVNPVVJDRV9WT0lEKCkKKwor
ICAgICAgICBObyB0ZXN0cy4gTm8gY2hhbmdlIGluIGJlaGF2aW9yLgorCisgICAgICAgICogYmlu
ZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgucG06CisgICAgICAgIChHZW5lcmF0ZVBhcmFt
ZXRlcnNDaGVjayk6CisgICAgICAgIChHZW5lcmF0ZUV2ZW50Q29uc3RydWN0b3JDYWxsYmFjayk6
CisgICAgICAgIChDb252ZXJ0VG9WOFN0cmluZ1Jlc291cmNlKToKKyAgICAgICAgKiBiaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvVjgvVjhGbG9hdDY0QXJyYXkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
RmxvYXQ2NEFycmF5VjhJbnRlcm5hbDo6Zm9vQ2FsbGJhY2spOgorICAgICAgICAqIGJpbmRpbmdz
L3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RBY3RpdmVET01PYmplY3QuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6VGVzdEFjdGl2ZURPTU9iamVjdFY4SW50ZXJuYWw6OmV4Y2l0aW5nRnVuY3Rpb25DYWxs
YmFjayk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0QWN0aXZlRE9NT2JqZWN0VjhJbnRlcm5hbDo6
cG9zdE1lc3NhZ2VDYWxsYmFjayk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4
L1Y4VGVzdEN1c3RvbU5hbWVkR2V0dGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RDdXN0
b21OYW1lZEdldHRlclY4SW50ZXJuYWw6OmFub3RoZXJGdW5jdGlvbkNhbGxiYWNrKToKKyAgICAg
ICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0RXZlbnRDb25zdHJ1Y3Rvci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpWOFRlc3RFdmVudENvbnN0cnVjdG9yOjpjb25zdHJ1Y3RvckNh
bGxiYWNrKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0RXZlbnRU
YXJnZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGVzdEV2ZW50VGFyZ2V0VjhJbnRlcm5hbDo6
aXRlbUNhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RFdmVudFRhcmdldFY4SW50ZXJu
YWw6OmRpc3BhdGNoRXZlbnRDYWxsYmFjayk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L1Y4L1Y4VGVzdEludGVyZmFjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXN0SW50ZXJm
YWNlVjhJbnRlcm5hbDo6c3VwcGxlbWVudGFsU3RhdGljQXR0ckF0dHJTZXR0ZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6VGVzdEludGVyZmFjZVY4SW50ZXJuYWw6OnN1cHBsZW1lbnRhbFN0cjJBdHRy
U2V0dGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RJbnRlcmZhY2VWOEludGVybmFsOjpzdXBw
bGVtZW50YWxNZXRob2QyQ2FsbGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6VjhUZXN0SW50ZXJm
YWNlOjpjb25zdHJ1Y3RvckNhbGxiYWNrKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvVjgvVjhUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lclY4SW50ZXJuYWw6Om1ldGhvZENhbGxiYWNrKToK
KyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0TmFtZWRDb25zdHJ1Y3Rv
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWOFRlc3ROYW1lZENvbnN0cnVjdG9yQ29uc3RydWN0
b3JDYWxsYmFjayk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE9i
ai5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXN0T2JqVjhJbnRlcm5hbDo6c3RhdGljU3RyaW5n
QXR0ckF0dHJTZXR0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdE9ialY4SW50ZXJuYWw6OnN0
cmluZ0F0dHJBdHRyU2V0dGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RPYmpWOEludGVybmFs
OjpyZWZsZWN0ZWRTdHJpbmdBdHRyQXR0clNldHRlcik6CisgICAgICAgIChXZWJDb3JlOjpUZXN0
T2JqVjhJbnRlcm5hbDo6cmVmbGVjdGVkVVJMQXR0ckF0dHJTZXR0ZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6VGVzdE9ialY4SW50ZXJuYWw6OnJlZmxlY3RlZEN1c3RvbVVSTEF0dHJBdHRyU2V0dGVy
KToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RPYmpWOEludGVybmFsOjpzdHJpbmdBdHRyV2l0aEdl
dHRlckV4Y2VwdGlvbkF0dHJTZXR0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdE9ialY4SW50
ZXJuYWw6OnN0cmluZ0F0dHJXaXRoU2V0dGVyRXhjZXB0aW9uQXR0clNldHRlcik6CisgICAgICAg
IChXZWJDb3JlOjpUZXN0T2JqVjhJbnRlcm5hbDo6dm9pZE1ldGhvZFdpdGhBcmdzQ2FsbGJhY2sp
OgorICAgICAgICAoV2ViQ29yZTo6VGVzdE9ialY4SW50ZXJuYWw6OmxvbmdNZXRob2RXaXRoQXJn
c0NhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RPYmpWOEludGVybmFsOjpvYmpNZXRo
b2RXaXRoQXJnc0NhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RPYmpWOEludGVybmFs
OjptZXRob2RXaXRoU2VxdWVuY2VBcmdDYWxsYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0
T2JqVjhJbnRlcm5hbDo6bWV0aG9kUmV0dXJuaW5nU2VxdWVuY2VDYWxsYmFjayk6CisgICAgICAg
IChXZWJDb3JlOjpUZXN0T2JqVjhJbnRlcm5hbDo6bWV0aG9kVGhhdFJlcXVpcmVzQWxsQXJnc0Fu
ZFRocm93c0NhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RPYmpWOEludGVybmFsOjpp
ZGJLZXlDYWxsYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0T2JqVjhJbnRlcm5hbDo6b3B0
aW9uc09iamVjdENhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RPYmpWOEludGVybmFs
OjptZXRob2RXaXRoT3B0aW9uYWxBcmdDYWxsYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0
T2JqVjhJbnRlcm5hbDo6bWV0aG9kV2l0aE5vbk9wdGlvbmFsQXJnQW5kT3B0aW9uYWxBcmdDYWxs
YmFjayk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0T2JqVjhJbnRlcm5hbDo6bWV0aG9kV2l0aE5v
bk9wdGlvbmFsQXJnQW5kVHdvT3B0aW9uYWxBcmdzQ2FsbGJhY2spOgorICAgICAgICAoV2ViQ29y
ZTo6VGVzdE9ialY4SW50ZXJuYWw6Om1ldGhvZFdpdGhPcHRpb25hbFN0cmluZ0NhbGxiYWNrKToK
KyAgICAgICAgKFdlYkNvcmU6OlRlc3RPYmpWOEludGVybmFsOjptZXRob2RXaXRoT3B0aW9uYWxT
dHJpbmdJc1VuZGVmaW5lZENhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RPYmpWOElu
dGVybmFsOjptZXRob2RXaXRoT3B0aW9uYWxTdHJpbmdJc051bGxTdHJpbmdDYWxsYmFjayk6Cisg
ICAgICAgIChXZWJDb3JlOjpUZXN0T2JqVjhJbnRlcm5hbDo6bWV0aG9kV2l0aE5vbkNhbGxiYWNr
QXJnQW5kQ2FsbGJhY2tBcmdDYWxsYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0T2JqVjhJ
bnRlcm5hbDo6b3ZlcmxvYWRlZE1ldGhvZDFDYWxsYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpU
ZXN0T2JqVjhJbnRlcm5hbDo6b3ZlcmxvYWRlZE1ldGhvZDJDYWxsYmFjayk6CisgICAgICAgIChX
ZWJDb3JlOjpUZXN0T2JqVjhJbnRlcm5hbDo6b3ZlcmxvYWRlZE1ldGhvZDNDYWxsYmFjayk6Cisg
ICAgICAgIChXZWJDb3JlOjpUZXN0T2JqVjhJbnRlcm5hbDo6b3ZlcmxvYWRlZE1ldGhvZDRDYWxs
YmFjayk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0T2JqVjhJbnRlcm5hbDo6b3ZlcmxvYWRlZE1l
dGhvZDZDYWxsYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0T2JqVjhJbnRlcm5hbDo6b3Zl
cmxvYWRlZE1ldGhvZDdDYWxsYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0T2JqVjhJbnRl
cm5hbDo6b3ZlcmxvYWRlZE1ldGhvZDhDYWxsYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0
T2JqVjhJbnRlcm5hbDo6b3ZlcmxvYWRlZE1ldGhvZDlDYWxsYmFjayk6CisgICAgICAgIChXZWJD
b3JlOjpUZXN0T2JqVjhJbnRlcm5hbDo6b3ZlcmxvYWRlZE1ldGhvZDEwQ2FsbGJhY2spOgorICAg
ICAgICAoV2ViQ29yZTo6VGVzdE9ialY4SW50ZXJuYWw6Om92ZXJsb2FkZWRNZXRob2QxMUNhbGxi
YWNrKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RPYmpWOEludGVybmFsOjpjbGFzc01ldGhvZFdp
dGhPcHRpb25hbENhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RPYmpWOEludGVybmFs
OjpvdmVybG9hZGVkTWV0aG9kMTJDYWxsYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0T2Jq
VjhJbnRlcm5hbDo6Y2xhc3NNZXRob2RXaXRoQ2xhbXBDYWxsYmFjayk6CisgICAgICAgIChXZWJD
b3JlOjpUZXN0T2JqVjhJbnRlcm5hbDo6ZW5hYmxlZEF0UnVudGltZU1ldGhvZDFDYWxsYmFjayk6
CisgICAgICAgIChXZWJDb3JlOjpUZXN0T2JqVjhJbnRlcm5hbDo6ZW5hYmxlZEF0UnVudGltZU1l
dGhvZDJDYWxsYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0T2JqVjhJbnRlcm5hbDo6ZW5h
YmxlZFBlckNvbnRleHRNZXRob2QxQ2FsbGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6VGVzdE9i
alY4SW50ZXJuYWw6OmVuYWJsZWRQZXJDb250ZXh0TWV0aG9kMkNhbGxiYWNrKToKKyAgICAgICAg
KFdlYkNvcmU6OlRlc3RPYmpWOEludGVybmFsOjpzdHJpbmdBcnJheUZ1bmN0aW9uQ2FsbGJhY2sp
OgorICAgICAgICAoV2ViQ29yZTo6VGVzdE9ialY4SW50ZXJuYWw6OmNvbnZlcnQxQ2FsbGJhY2sp
OgorICAgICAgICAoV2ViQ29yZTo6VGVzdE9ialY4SW50ZXJuYWw6OmNvbnZlcnQyQ2FsbGJhY2sp
OgorICAgICAgICAoV2ViQ29yZTo6VGVzdE9ialY4SW50ZXJuYWw6OmNvbnZlcnQ0Q2FsbGJhY2sp
OgorICAgICAgICAoV2ViQ29yZTo6VGVzdE9ialY4SW50ZXJuYWw6OmNvbnZlcnQ1Q2FsbGJhY2sp
OgorICAgICAgICAoV2ViQ29yZTo6VGVzdE9ialY4SW50ZXJuYWw6OnN0cmljdEZ1bmN0aW9uQ2Fs
bGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6VGVzdE9ialY4SW50ZXJuYWw6OnZhcmlhZGljU3Ry
aW5nTWV0aG9kQ2FsbGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6VGVzdE9ialY4SW50ZXJuYWw6
OnZhcmlhZGljRG91YmxlTWV0aG9kQ2FsbGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6VGVzdE9i
alY4SW50ZXJuYWw6OnZhcmlhZGljTm9kZU1ldGhvZENhbGxiYWNrKToKKyAgICAgICAgKiBiaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycy5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpWOFRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzOjpjb25zdHJ1Y3Rv
cjFDYWxsYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpWOFRlc3RPdmVybG9hZGVkQ29uc3RydWN0
b3JzOjpjb25zdHJ1Y3RvcjJDYWxsYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpWOFRlc3RPdmVy
bG9hZGVkQ29uc3RydWN0b3JzOjpjb25zdHJ1Y3RvcjNDYWxsYmFjayk6CisgICAgICAgIChXZWJD
b3JlOjpWOFRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzOjpjb25zdHJ1Y3RvcjRDYWxsYmFjayk6
CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdFNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZUludGVyZmFjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWOFRlc3RTZXJpYWxpemVk
U2NyaXB0VmFsdWVJbnRlcmZhY2U6OmNvbnN0cnVjdG9yQ2FsbGJhY2spOgorICAgICAgICAqIGJp
bmRpbmdzL3Y4L1Y4QmluZGluZy5oOgorICAgICAgICAoV2ViQ29yZTo6dG9WOFNlcXVlbmNlKToK
KyAgICAgICAgKiBiaW5kaW5ncy92OC9WOEJpbmRpbmdNYWNyb3MuaDoKKyAgICAgICAgKiBiaW5k
aW5ncy92OC9jdXN0b20vVjhCbG9iQ3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlY4Qmxv
Yjo6Y29uc3RydWN0b3JDYWxsYmFja0N1c3RvbSk6CisgICAgICAgICogYmluZGluZ3MvdjgvY3Vz
dG9tL1Y4Q29uc29sZUN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWOENvbnNvbGU6OnBy
b2ZpbGVDYWxsYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpWOENvbnNvbGU6OnByb2ZpbGVFbmRD
YWxsYmFjayk6CisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4RE9NV2luZG93Q3VzdG9t
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmhhbmRsZVBvc3RNZXNzYWdlQ2FsbGJhY2spOgorICAg
ICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOERhdGFWaWV3Q3VzdG9tLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlY4RGF0YVZpZXc6OmdldEludDhDYWxsYmFjayk6CisgICAgICAgIChXZWJDb3Jl
OjpWOERhdGFWaWV3OjpnZXRVaW50OENhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OlY4RGF0
YVZpZXc6OnNldEludDhDYWxsYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpWOERhdGFWaWV3Ojpz
ZXRVaW50OENhbGxiYWNrKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhEZXZpY2VN
b3Rpb25FdmVudEN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWOERldmljZU1vdGlvbkV2
ZW50Ojppbml0RGV2aWNlTW90aW9uRXZlbnRDYWxsYmFjayk6CisgICAgICAgICogYmluZGluZ3Mv
djgvY3VzdG9tL1Y4RGV2aWNlT3JpZW50YXRpb25FdmVudEN1c3RvbS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpWOERldmljZU9yaWVudGF0aW9uRXZlbnQ6OmluaXREZXZpY2VPcmllbnRhdGlvbkV2
ZW50Q2FsbGJhY2spOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOERvY3VtZW50Q3Vz
dG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlY4RG9jdW1lbnQ6OmV2YWx1YXRlQ2FsbGJhY2sp
OgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxPcHRpb25zQ29sbGVjdGlvbkN1
c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWOEhUTUxPcHRpb25zQ29sbGVjdGlvbjo6YWRk
Q2FsbGJhY2spOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOEhpc3RvcnlDdXN0b20u
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6VjhIaXN0b3J5OjpwdXNoU3RhdGVDYWxsYmFjayk6Cisg
ICAgICAgIChXZWJDb3JlOjpWOEhpc3Rvcnk6OnJlcGxhY2VTdGF0ZUNhbGxiYWNrKToKKyAgICAg
ICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhJbnRlbnRDdXN0b20uY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6VjhJbnRlbnQ6OmNvbnN0cnVjdG9yQ2FsbGJhY2tDdXN0b20pOgorICAgICAgICAqIGJp
bmRpbmdzL3Y4L2N1c3RvbS9WOFNRTFRyYW5zYWN0aW9uQ3VzdG9tLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlY4U1FMVHJhbnNhY3Rpb246OmV4ZWN1dGVTcWxDYWxsYmFjayk6CisgICAgICAgICog
YmluZGluZ3MvdjgvY3VzdG9tL1Y4U1FMVHJhbnNhY3Rpb25TeW5jQ3VzdG9tLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlY4U1FMVHJhbnNhY3Rpb25TeW5jOjpleGVjdXRlU3FsQ2FsbGJhY2spOgor
ICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOFNWR0xlbmd0aEN1c3RvbS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpWOFNWR0xlbmd0aDo6Y29udmVydFRvU3BlY2lmaWVkVW5pdHNDYWxsYmFj
ayk6CisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4V2ViR0xSZW5kZXJpbmdDb250ZXh0
Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlY4V2ViR0xSZW5kZXJpbmdDb250ZXh0Ojpn
ZXRFeHRlbnNpb25DYWxsYmFjayk6CisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4V29y
a2VyQ29udGV4dEN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWOFdvcmtlckNvbnRleHQ6
OmltcG9ydFNjcmlwdHNDYWxsYmFjayk6CisKIDIwMTItMTEtMjYgIFNoZXJpZmYgQm90ICA8d2Vi
a2l0LnJldmlldy5ib3RAZ21haWwuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcg
b3V0IHIxMzU3OTguCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L0NvZGVHZW5lcmF0b3JWOC5wbSBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29k
ZUdlbmVyYXRvclY4LnBtCmluZGV4IDMxN2FmZGFhODIxM2FjN2FkYTE1ZmRkZmU2ZWYwYWIzNWVl
NDljYmYuLmVlY2NiZWY3MjkxZjRiZTVlMGQ5Y2QxODdiMzAyOGY5YTVmNWJmOWQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvclY4LnBtCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvclY4LnBtCkBA
IC0xNzQ1LDcgKzE3NDUsNyBAQCBzdWIgR2VuZXJhdGVQYXJhbWV0ZXJzQ2hlY2sKICAgICAgICAg
ICAgICAgICBteSAkbmF0aXZlVmFsdWUgPSAiJHtwYXJhbWV0ZXJOYW1lfU5hdGl2ZVZhbHVlIjsK
ICAgICAgICAgICAgICAgICBteSAkcGFyYW1UeXBlID0gJHBhcmFtZXRlci0+dHlwZTsKICAgICAg
ICAgICAgICAgICAkcGFyYW1ldGVyQ2hlY2tTdHJpbmcgLj0gIiAgICAkcGFyYW1UeXBlICRwYXJh
bWV0ZXJOYW1lID0gMDtcbiI7Ci0gICAgICAgICAgICAgICAgJHBhcmFtZXRlckNoZWNrU3RyaW5n
IC49ICIgICAgRVhDRVBUSU9OX0JMT0NLKGRvdWJsZSwgJG5hdGl2ZVZhbHVlLCBhcmdzWyRwYXJh
bUluZGV4XS0+TnVtYmVyVmFsdWUoKSk7XG4iOworICAgICAgICAgICAgICAgICRwYXJhbWV0ZXJD
aGVja1N0cmluZyAuPSAiICAgIFRSWUNBVENIKGRvdWJsZSwgJG5hdGl2ZVZhbHVlLCBhcmdzWyRw
YXJhbUluZGV4XS0+TnVtYmVyVmFsdWUoKSk7XG4iOwogICAgICAgICAgICAgICAgICRwYXJhbWV0
ZXJDaGVja1N0cmluZyAuPSAiICAgIGlmICghaXNuYW4oJG5hdGl2ZVZhbHVlKSlcbiI7CiAgICAg
ICAgICAgICAgICAgJHBhcmFtZXRlckNoZWNrU3RyaW5nIC49ICIgICAgICAgICRwYXJhbWV0ZXJO
YW1lID0gY2xhbXBUbzwkcGFyYW1UeXBlPigkbmF0aXZlVmFsdWUpO1xuIjsKICAgICAgICAgfSBl
bHNpZiAoJHBhcmFtZXRlci0+dHlwZSBlcSAiU2VyaWFsaXplZFNjcmlwdFZhbHVlIikgewpAQCAt
MTgwNyw3ICsxODA3LDcgQEAgc3ViIEdlbmVyYXRlUGFyYW1ldGVyc0NoZWNrCiAgICAgICAgICAg
ICAgICAgJHBhcmFtZXRlckNoZWNrU3RyaW5nIC49ICIgICAgICAgICRwYXJhbWV0ZXJOYW1lLmFw
cGVuZChWOCR7YXJnVHlwZX06OnRvTmF0aXZlKHY4OjpIYW5kbGU8djg6Ok9iamVjdD46OkNhc3Qo
YXJnc1tpXSkpKTtcbiI7CiAgICAgICAgICAgICAgICAgJHBhcmFtZXRlckNoZWNrU3RyaW5nIC49
ICIgICAgfVxuIjsKICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgJHBhcmFt
ZXRlckNoZWNrU3RyaW5nIC49ICIgICAgRVhDRVBUSU9OX0JMT0NLKFZlY3RvcjwkbmF0aXZlRWxl
bWVudFR5cGU+LCAkcGFyYW1ldGVyTmFtZSwgdG9OYXRpdmVBcmd1bWVudHM8JG5hdGl2ZUVsZW1l
bnRUeXBlPihhcmdzLCAkcGFyYW1JbmRleCkpO1xuIjsKKyAgICAgICAgICAgICAgICAkcGFyYW1l
dGVyQ2hlY2tTdHJpbmcgLj0gIiAgICBUUllDQVRDSChWZWN0b3I8JG5hdGl2ZUVsZW1lbnRUeXBl
PiwgJHBhcmFtZXRlck5hbWUsIHRvTmF0aXZlQXJndW1lbnRzPCRuYXRpdmVFbGVtZW50VHlwZT4o
YXJncywgJHBhcmFtSW5kZXgpKTtcbiI7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0gZWxzaWYg
KCRuYXRpdmVUeXBlID1+IC9eVjhTdHJpbmdSZXNvdXJjZS8pIHsKICAgICAgICAgICAgIG15ICR2
YWx1ZSA9IEpTVmFsdWVUb05hdGl2ZSgkcGFyYW1ldGVyLCAiTUFZQkVfTUlTU0lOR19QQVJBTUVU
RVIoYXJncywgJHBhcmFtSW5kZXgsICRwYXJhbWV0ZXJEZWZhdWx0UG9saWN5KSIsICJhcmdzLkdl
dElzb2xhdGUoKSIpOwpAQCAtMTgyNyw3ICsxODI3LDcgQEAgc3ViIEdlbmVyYXRlUGFyYW1ldGVy
c0NoZWNrCiAgICAgICAgICAgICAgICAgICAgICRwYXJhbWV0ZXJDaGVja1N0cmluZyAuPSAiICAg
ICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoMCwgYXJncy5HZXRJc29sYXRlKCkpO1xuIjsKICAg
ICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAkcGFyYW1ldGVyQ2hl
Y2tTdHJpbmcgLj0gIiAgICBFWENFUFRJT05fQkxPQ0soJG5hdGl2ZVR5cGUsICRwYXJhbWV0ZXJO
YW1lLCAiIC4KKyAgICAgICAgICAgICRwYXJhbWV0ZXJDaGVja1N0cmluZyAuPSAiICAgIFRSWUNB
VENIKCRuYXRpdmVUeXBlLCAkcGFyYW1ldGVyTmFtZSwgIiAuCiAgICAgICAgICAgICAgICAgIEpT
VmFsdWVUb05hdGl2ZSgkcGFyYW1ldGVyLCAiTUFZQkVfTUlTU0lOR19QQVJBTUVURVIoYXJncywg
JHBhcmFtSW5kZXgsICRwYXJhbWV0ZXJEZWZhdWx0UG9saWN5KSIsICJhcmdzLkdldElzb2xhdGUo
KSIpIC4gIik7XG4iOwogICAgICAgICAgICAgaWYgKCRuYXRpdmVUeXBlIGVxICdEaWN0aW9uYXJ5
JykgewogICAgICAgICAgICAgICAgJHBhcmFtZXRlckNoZWNrU3RyaW5nIC49ICIgICAgaWYgKCEk
cGFyYW1ldGVyTmFtZS5pc1VuZGVmaW5lZE9yTnVsbCgpICYmICEkcGFyYW1ldGVyTmFtZS5pc09i
amVjdCgpKVxuIjsKQEAgLTIwMjksMTAgKzIwMjksMTAgQEAgRU5ECiAgICAgaWYgKGFyZ3MuTGVu
Z3RoKCkgPCAxKQogICAgICAgICByZXR1cm4gdGhyb3dOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihh
cmdzLkdldElzb2xhdGUoKSk7CiAKLSAgICBTVFJJTkdfVE9fVjhQQVJBTUVURVJfRVhDRVBUSU9O
X0JMT0NLKFY4U3RyaW5nUmVzb3VyY2U8PiwgdHlwZSwgYXJnc1swXSk7CisgICAgVFJZQ0FUQ0hf
Rk9SX1Y4U1RSSU5HUkVTT1VSQ0UoVjhTdHJpbmdSZXNvdXJjZTw+LCB0eXBlLCBhcmdzWzBdKTsK
ICAgICAke2ludGVyZmFjZU5hbWV9SW5pdCBldmVudEluaXQ7CiAgICAgaWYgKGFyZ3MuTGVuZ3Ro
KCkgPj0gMikgewotICAgICAgICBFWENFUFRJT05fQkxPQ0soRGljdGlvbmFyeSwgb3B0aW9ucywg
RGljdGlvbmFyeShhcmdzWzFdLCBhcmdzLkdldElzb2xhdGUoKSkpOworICAgICAgICBUUllDQVRD
SChEaWN0aW9uYXJ5LCBvcHRpb25zLCBEaWN0aW9uYXJ5KGFyZ3NbMV0sIGFyZ3MuR2V0SXNvbGF0
ZSgpKSk7CiAgICAgICAgIGlmICghZmlsbCR7aW50ZXJmYWNlTmFtZX1Jbml0KGV2ZW50SW5pdCwg
b3B0aW9ucykpCiAgICAgICAgICAgICByZXR1cm4gdjhVbmRlZmluZWQoKTsKICAgICB9CkBAIC00
MjA1LDcgKzQyMDUsNyBAQCBzdWIgQ29udmVydFRvVjhTdHJpbmdSZXNvdXJjZQogCiAgICAgZGll
ICJXcm9uZyBuYXRpdmUgdHlwZSBwYXNzZWQ6ICRuYXRpdmVUeXBlIiB1bmxlc3MgJG5hdGl2ZVR5
cGUgPX4gL15WOFN0cmluZ1Jlc291cmNlLzsKICAgICBpZiAoJHNpZ25hdHVyZS0+dHlwZSBlcSAi
RE9NU3RyaW5nIikgewotICAgICAgICBteSAkbWFjcm8gPSAiU1RSSU5HX1RPX1Y4UEFSQU1FVEVS
X0VYQ0VQVElPTl9CTE9DSyI7CisgICAgICAgIG15ICRtYWNybyA9ICJUUllDQVRDSF9GT1JfVjhT
VFJJTkdSRVNPVVJDRSI7CiAgICAgICAgICRtYWNybyAuPSAiXyRzdWZmaXgiIGlmICRzdWZmaXg7
CiAgICAgICAgIHJldHVybiAiJG1hY3JvKCRuYXRpdmVUeXBlLCAkdmFyaWFibGVOYW1lLCAkdmFs
dWUpOyIKICAgICB9IGVsc2UgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L1Y4L1Y4RmxvYXQ2NEFycmF5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9WOC9WOEZsb2F0NjRBcnJheS5jcHAKaW5kZXggMWJhMTM5NmEzZjBk
MDA3YzdmMDEzMTI3YWQ0ZmYxMDY2M2JiNTZlOS4uZGM2Mzk5NDIwZTM0ZTk2ZWJmZDUxNGZhYTk0
NmYxNzYxN2VmYzIzNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L1Y4L1Y4RmxvYXQ2NEFycmF5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvVjgvVjhGbG9hdDY0QXJyYXkuY3BwCkBAIC01NCw3ICs1NCw3IEBAIHN0
YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gZm9vQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50
cyYgYXJncykKICAgICBpZiAoYXJncy5MZW5ndGgoKSA8IDEpCiAgICAgICAgIHJldHVybiB0aHJv
d05vdEVub3VnaEFyZ3VtZW50c0Vycm9yKGFyZ3MuR2V0SXNvbGF0ZSgpKTsKICAgICBGbG9hdDY0
QXJyYXkqIGltcCA9IFY4RmxvYXQ2NEFycmF5Ojp0b05hdGl2ZShhcmdzLkhvbGRlcigpKTsKLSAg
ICBFWENFUFRJT05fQkxPQ0soRmxvYXQzMkFycmF5KiwgYXJyYXksIFY4RmxvYXQzMkFycmF5OjpI
YXNJbnN0YW5jZShNQVlCRV9NSVNTSU5HX1BBUkFNRVRFUihhcmdzLCAwLCBEZWZhdWx0SXNVbmRl
ZmluZWQpKSA/IFY4RmxvYXQzMkFycmF5Ojp0b05hdGl2ZSh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+
OjpDYXN0KE1BWUJFX01JU1NJTkdfUEFSQU1FVEVSKGFyZ3MsIDAsIERlZmF1bHRJc1VuZGVmaW5l
ZCkpKSA6IDApOworICAgIFRSWUNBVENIKEZsb2F0MzJBcnJheSosIGFycmF5LCBWOEZsb2F0MzJB
cnJheTo6SGFzSW5zdGFuY2UoTUFZQkVfTUlTU0lOR19QQVJBTUVURVIoYXJncywgMCwgRGVmYXVs
dElzVW5kZWZpbmVkKSkgPyBWOEZsb2F0MzJBcnJheTo6dG9OYXRpdmUodjg6OkhhbmRsZTx2ODo6
T2JqZWN0Pjo6Q2FzdChNQVlCRV9NSVNTSU5HX1BBUkFNRVRFUihhcmdzLCAwLCBEZWZhdWx0SXNV
bmRlZmluZWQpKSkgOiAwKTsKICAgICByZXR1cm4gdG9WOChpbXAtPmZvbyhhcnJheSksIGFyZ3Mu
SG9sZGVyKCksIGFyZ3MuR2V0SXNvbGF0ZSgpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEFjdGl2ZURPTU9iamVjdC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0QWN0aXZlRE9N
T2JqZWN0LmNwcAppbmRleCA3NzgzNjlhZmUyN2YyNjJkMTI2N2Y5NmI2MmQ3MzU4OThhYzg5ZmZj
Li5kY2ExMTFhNGMzNmFkOGExNWQwZDAxOTc4NzFjNTBiM2VlOGViZDA3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0QWN0aXZlRE9NT2Jq
ZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhU
ZXN0QWN0aXZlRE9NT2JqZWN0LmNwcApAQCAtNTQsNyArNTQsNyBAQCBzdGF0aWMgdjg6OkhhbmRs
ZTx2ODo6VmFsdWU+IGV4Y2l0aW5nRnVuY3Rpb25DYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRz
JiBhcmdzKQogICAgIFRlc3RBY3RpdmVET01PYmplY3QqIGltcCA9IFY4VGVzdEFjdGl2ZURPTU9i
amVjdDo6dG9OYXRpdmUoYXJncy5Ib2xkZXIoKSk7CiAgICAgaWYgKCFCaW5kaW5nU2VjdXJpdHk6
OnNob3VsZEFsbG93QWNjZXNzVG9GcmFtZShCaW5kaW5nU3RhdGU6Omluc3RhbmNlKCksIGltcC0+
ZnJhbWUoKSkpCiAgICAgICAgIHJldHVybiB2OFVuZGVmaW5lZCgpOwotICAgIEVYQ0VQVElPTl9C
TE9DSyhOb2RlKiwgbmV4dENoaWxkLCBWOE5vZGU6Okhhc0luc3RhbmNlKE1BWUJFX01JU1NJTkdf
UEFSQU1FVEVSKGFyZ3MsIDAsIERlZmF1bHRJc1VuZGVmaW5lZCkpID8gVjhOb2RlOjp0b05hdGl2
ZSh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+OjpDYXN0KE1BWUJFX01JU1NJTkdfUEFSQU1FVEVSKGFy
Z3MsIDAsIERlZmF1bHRJc1VuZGVmaW5lZCkpKSA6IDApOworICAgIFRSWUNBVENIKE5vZGUqLCBu
ZXh0Q2hpbGQsIFY4Tm9kZTo6SGFzSW5zdGFuY2UoTUFZQkVfTUlTU0lOR19QQVJBTUVURVIoYXJn
cywgMCwgRGVmYXVsdElzVW5kZWZpbmVkKSkgPyBWOE5vZGU6OnRvTmF0aXZlKHY4OjpIYW5kbGU8
djg6Ok9iamVjdD46OkNhc3QoTUFZQkVfTUlTU0lOR19QQVJBTUVURVIoYXJncywgMCwgRGVmYXVs
dElzVW5kZWZpbmVkKSkpIDogMCk7CiAgICAgaW1wLT5leGNpdGluZ0Z1bmN0aW9uKG5leHRDaGls
ZCk7CiAgICAgcmV0dXJuIHY4VW5kZWZpbmVkKCk7CiB9CkBAIC02NSw3ICs2NSw3IEBAIHN0YXRp
YyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gcG9zdE1lc3NhZ2VDYWxsYmFjayhjb25zdCB2ODo6QXJn
dW1lbnRzJiBhcmdzKQogICAgIGlmIChhcmdzLkxlbmd0aCgpIDwgMSkKICAgICAgICAgcmV0dXJu
IHRocm93Tm90RW5vdWdoQXJndW1lbnRzRXJyb3IoYXJncy5HZXRJc29sYXRlKCkpOwogICAgIFRl
c3RBY3RpdmVET01PYmplY3QqIGltcCA9IFY4VGVzdEFjdGl2ZURPTU9iamVjdDo6dG9OYXRpdmUo
YXJncy5Ib2xkZXIoKSk7Ci0gICAgU1RSSU5HX1RPX1Y4UEFSQU1FVEVSX0VYQ0VQVElPTl9CTE9D
SyhWOFN0cmluZ1Jlc291cmNlPD4sIG1lc3NhZ2UsIE1BWUJFX01JU1NJTkdfUEFSQU1FVEVSKGFy
Z3MsIDAsIERlZmF1bHRJc1VuZGVmaW5lZCkpOworICAgIFRSWUNBVENIX0ZPUl9WOFNUUklOR1JF
U09VUkNFKFY4U3RyaW5nUmVzb3VyY2U8PiwgbWVzc2FnZSwgTUFZQkVfTUlTU0lOR19QQVJBTUVU
RVIoYXJncywgMCwgRGVmYXVsdElzVW5kZWZpbmVkKSk7CiAgICAgaW1wLT5wb3N0TWVzc2FnZSht
ZXNzYWdlKTsKICAgICByZXR1cm4gdjhVbmRlZmluZWQoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RDdXN0b21OYW1lZEdldHRl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0Q3Vz
dG9tTmFtZWRHZXR0ZXIuY3BwCmluZGV4IDg5OTNmNGQ3Y2VhOGY3YmYwOTM1OWU5YjQ4ZWYyYjQ3
NDgwMmU1MmYuLjM4YmIxYjVhYzhjZTZhMzJmY2Q5OWYyNmZkNjgwZjBjODljNmJiNGYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RDdXN0
b21OYW1lZEdldHRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L1Y4L1Y4VGVzdEN1c3RvbU5hbWVkR2V0dGVyLmNwcApAQCAtNDQsNyArNDQsNyBAQCBzdGF0
aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGFub3RoZXJGdW5jdGlvbkNhbGxiYWNrKGNvbnN0IHY4
OjpBcmd1bWVudHMmIGFyZ3MpCiAgICAgaWYgKGFyZ3MuTGVuZ3RoKCkgPCAxKQogICAgICAgICBy
ZXR1cm4gdGhyb3dOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihhcmdzLkdldElzb2xhdGUoKSk7CiAg
ICAgVGVzdEN1c3RvbU5hbWVkR2V0dGVyKiBpbXAgPSBWOFRlc3RDdXN0b21OYW1lZEdldHRlcjo6
dG9OYXRpdmUoYXJncy5Ib2xkZXIoKSk7Ci0gICAgU1RSSU5HX1RPX1Y4UEFSQU1FVEVSX0VYQ0VQ
VElPTl9CTE9DSyhWOFN0cmluZ1Jlc291cmNlPD4sIHN0ciwgTUFZQkVfTUlTU0lOR19QQVJBTUVU
RVIoYXJncywgMCwgRGVmYXVsdElzVW5kZWZpbmVkKSk7CisgICAgVFJZQ0FUQ0hfRk9SX1Y4U1RS
SU5HUkVTT1VSQ0UoVjhTdHJpbmdSZXNvdXJjZTw+LCBzdHIsIE1BWUJFX01JU1NJTkdfUEFSQU1F
VEVSKGFyZ3MsIDAsIERlZmF1bHRJc1VuZGVmaW5lZCkpOwogICAgIGltcC0+YW5vdGhlckZ1bmN0
aW9uKHN0cik7CiAgICAgcmV0dXJuIHY4VW5kZWZpbmVkKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0RXZlbnRDb25zdHJ1Y3Rv
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0RXZl
bnRDb25zdHJ1Y3Rvci5jcHAKaW5kZXggYjY2YTJjNjc0MTEzMTRhMDIzMzBiZTU1OTA0YjlhY2Ey
NWY0MDMyYy4uNzhlMThjOTBhMDdlNDNjNGNlZmU0NTlmNWIxYjRhMzBiYmQ1NTk2YSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEV2ZW50
Q29uc3RydWN0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9WOC9WOFRlc3RFdmVudENvbnN0cnVjdG9yLmNwcApAQCAtNzIsMTAgKzcyLDEwIEBAIHY4OjpI
YW5kbGU8djg6OlZhbHVlPiBWOFRlc3RFdmVudENvbnN0cnVjdG9yOjpjb25zdHJ1Y3RvckNhbGxi
YWNrKGNvbnN0IHY4OjpBcmd1CiAgICAgaWYgKGFyZ3MuTGVuZ3RoKCkgPCAxKQogICAgICAgICBy
ZXR1cm4gdGhyb3dOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihhcmdzLkdldElzb2xhdGUoKSk7CiAK
LSAgICBTVFJJTkdfVE9fVjhQQVJBTUVURVJfRVhDRVBUSU9OX0JMT0NLKFY4U3RyaW5nUmVzb3Vy
Y2U8PiwgdHlwZSwgYXJnc1swXSk7CisgICAgVFJZQ0FUQ0hfRk9SX1Y4U1RSSU5HUkVTT1VSQ0Uo
VjhTdHJpbmdSZXNvdXJjZTw+LCB0eXBlLCBhcmdzWzBdKTsKICAgICBUZXN0RXZlbnRDb25zdHJ1
Y3RvckluaXQgZXZlbnRJbml0OwogICAgIGlmIChhcmdzLkxlbmd0aCgpID49IDIpIHsKLSAgICAg
ICAgRVhDRVBUSU9OX0JMT0NLKERpY3Rpb25hcnksIG9wdGlvbnMsIERpY3Rpb25hcnkoYXJnc1sx
XSwgYXJncy5HZXRJc29sYXRlKCkpKTsKKyAgICAgICAgVFJZQ0FUQ0goRGljdGlvbmFyeSwgb3B0
aW9ucywgRGljdGlvbmFyeShhcmdzWzFdLCBhcmdzLkdldElzb2xhdGUoKSkpOwogICAgICAgICBp
ZiAoIWZpbGxUZXN0RXZlbnRDb25zdHJ1Y3RvckluaXQoZXZlbnRJbml0LCBvcHRpb25zKSkKICAg
ICAgICAgICAgIHJldHVybiB2OFVuZGVmaW5lZCgpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RFdmVudFRhcmdldC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0RXZlbnRUYXJn
ZXQuY3BwCmluZGV4IDQyNzA1YjRjYmE0MzNjZmVmYzUyM2Q1YTg4NDMyOTdjNzhiNWFmNzEuLjI3
MjAzNDcxZDVhNThkMmVmNjc2ZjFhYjBkNjJiMDNlYTdlYjgwMjMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RFdmVudFRhcmdldC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEV2ZW50
VGFyZ2V0LmNwcApAQCAtNDksNyArNDksNyBAQCBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+
IGl0ZW1DYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogICAgIFRlc3RFdmVudFRh
cmdldCogaW1wID0gVjhUZXN0RXZlbnRUYXJnZXQ6OnRvTmF0aXZlKGFyZ3MuSG9sZGVyKCkpOwog
ICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwogICAgIHsKLSAgICBFWENFUFRJT05fQkxPQ0soaW50
LCBpbmRleCwgdG9VSW50MzIoTUFZQkVfTUlTU0lOR19QQVJBTUVURVIoYXJncywgMCwgRGVmYXVs
dElzVW5kZWZpbmVkKSkpOworICAgIFRSWUNBVENIKGludCwgaW5kZXgsIHRvVUludDMyKE1BWUJF
X01JU1NJTkdfUEFSQU1FVEVSKGFyZ3MsIDAsIERlZmF1bHRJc1VuZGVmaW5lZCkpKTsKICAgICBp
ZiAoVU5MSUtFTFkoaW5kZXggPCAwKSkgewogICAgICAgICBlYyA9IElOREVYX1NJWkVfRVJSOwog
ICAgICAgICBnb3RvIGZhaWw7CkBAIC05MCw3ICs5MCw3IEBAIHN0YXRpYyB2ODo6SGFuZGxlPHY4
OjpWYWx1ZT4gZGlzcGF0Y2hFdmVudENhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3Mp
CiAgICAgVGVzdEV2ZW50VGFyZ2V0KiBpbXAgPSBWOFRlc3RFdmVudFRhcmdldDo6dG9OYXRpdmUo
YXJncy5Ib2xkZXIoKSk7CiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CiAgICAgewotICAgIEVY
Q0VQVElPTl9CTE9DSyhFdmVudCosIGV2dCwgVjhFdmVudDo6SGFzSW5zdGFuY2UoTUFZQkVfTUlT
U0lOR19QQVJBTUVURVIoYXJncywgMCwgRGVmYXVsdElzVW5kZWZpbmVkKSkgPyBWOEV2ZW50Ojp0
b05hdGl2ZSh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+OjpDYXN0KE1BWUJFX01JU1NJTkdfUEFSQU1F
VEVSKGFyZ3MsIDAsIERlZmF1bHRJc1VuZGVmaW5lZCkpKSA6IDApOworICAgIFRSWUNBVENIKEV2
ZW50KiwgZXZ0LCBWOEV2ZW50OjpIYXNJbnN0YW5jZShNQVlCRV9NSVNTSU5HX1BBUkFNRVRFUihh
cmdzLCAwLCBEZWZhdWx0SXNVbmRlZmluZWQpKSA/IFY4RXZlbnQ6OnRvTmF0aXZlKHY4OjpIYW5k
bGU8djg6Ok9iamVjdD46OkNhc3QoTUFZQkVfTUlTU0lOR19QQVJBTUVURVIoYXJncywgMCwgRGVm
YXVsdElzVW5kZWZpbmVkKSkpIDogMCk7CiAgICAgYm9vbCByZXN1bHQgPSBpbXAtPmRpc3BhdGNo
RXZlbnQoZXZ0LCBlYyk7CiAgICAgaWYgKFVOTElLRUxZKGVjKSkKICAgICAgICAgZ290byBmYWls
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4
VGVzdEludGVyZmFjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
VjgvVjhUZXN0SW50ZXJmYWNlLmNwcAppbmRleCA0ZWViOGI5MDkxMjMwMzFlNGRjMjQwMzg0MDcw
ODc0OWQ2MDQ1OTBmLi5iZjEzNmUwYWE4Zjk1M2M4YTgyZWVkMGQ4YzdmMmMxNTg4OTU3OWI2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0
SW50ZXJmYWNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
VjgvVjhUZXN0SW50ZXJmYWNlLmNwcApAQCAtNzEsNyArNzEsNyBAQCBzdGF0aWMgdjg6OkhhbmRs
ZTx2ODo6VmFsdWU+IHN1cHBsZW1lbnRhbFN0YXRpY0F0dHJBdHRyR2V0dGVyKHY4OjpMb2NhbDx2
ODo6U3RyaQogc3RhdGljIHZvaWQgc3VwcGxlbWVudGFsU3RhdGljQXR0ckF0dHJTZXR0ZXIodjg6
OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIHY4OjpMb2NhbDx2ODo6VmFsdWU+IHZhbHVlLCBjb25z
dCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQogewogICAgIElOQ19TVEFUUygiRE9NLlRlc3RJbnRl
cmZhY2Uuc3VwcGxlbWVudGFsU3RhdGljQXR0ci5fc2V0Iik7Ci0gICAgU1RSSU5HX1RPX1Y4UEFS
QU1FVEVSX0VYQ0VQVElPTl9CTE9DS19WT0lEKFY4U3RyaW5nUmVzb3VyY2U8PiwgdiwgdmFsdWUp
OworICAgIFRSWUNBVENIX0ZPUl9WOFNUUklOR1JFU09VUkNFX1ZPSUQoVjhTdHJpbmdSZXNvdXJj
ZTw+LCB2LCB2YWx1ZSk7CiAgICAgVGVzdFN1cHBsZW1lbnRhbDo6c2V0U3VwcGxlbWVudGFsU3Rh
dGljQXR0cih2KTsKICAgICByZXR1cm47CiB9CkBAIC0xMDYsNyArMTA2LDcgQEAgc3RhdGljIHZv
aWQgc3VwcGxlbWVudGFsU3RyMkF0dHJTZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUs
IHY4OjpMb2NhbDx2ODoKIHsKICAgICBJTkNfU1RBVFMoIkRPTS5UZXN0SW50ZXJmYWNlLnN1cHBs
ZW1lbnRhbFN0cjIuX3NldCIpOwogICAgIFRlc3RJbnRlcmZhY2UqIGltcCA9IFY4VGVzdEludGVy
ZmFjZTo6dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSk7Ci0gICAgU1RSSU5HX1RPX1Y4UEFSQU1FVEVS
X0VYQ0VQVElPTl9CTE9DS19WT0lEKFY4U3RyaW5nUmVzb3VyY2U8PiwgdiwgdmFsdWUpOworICAg
IFRSWUNBVENIX0ZPUl9WOFNUUklOR1JFU09VUkNFX1ZPSUQoVjhTdHJpbmdSZXNvdXJjZTw+LCB2
LCB2YWx1ZSk7CiAgICAgVGVzdFN1cHBsZW1lbnRhbDo6c2V0U3VwcGxlbWVudGFsU3RyMihpbXAs
IHYpOwogICAgIHJldHVybjsKIH0KQEAgLTE1OSw4ICsxNTksOCBAQCBzdGF0aWMgdjg6OkhhbmRs
ZTx2ODo6VmFsdWU+IHN1cHBsZW1lbnRhbE1ldGhvZDJDYWxsYmFjayhjb25zdCB2ODo6QXJndW1l
bnRzJiBhcgogICAgIFRlc3RJbnRlcmZhY2UqIGltcCA9IFY4VGVzdEludGVyZmFjZTo6dG9OYXRp
dmUoYXJncy5Ib2xkZXIoKSk7CiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CiAgICAgewotICAg
IFNUUklOR19UT19WOFBBUkFNRVRFUl9FWENFUFRJT05fQkxPQ0soVjhTdHJpbmdSZXNvdXJjZTw+
LCBzdHJBcmcsIE1BWUJFX01JU1NJTkdfUEFSQU1FVEVSKGFyZ3MsIDAsIERlZmF1bHRJc1VuZGVm
aW5lZCkpOwotICAgIEVYQ0VQVElPTl9CTE9DSyhUZXN0T2JqKiwgb2JqQXJnLCBWOFRlc3RPYmo6
Okhhc0luc3RhbmNlKE1BWUJFX01JU1NJTkdfUEFSQU1FVEVSKGFyZ3MsIDEsIERlZmF1bHRJc1Vu
ZGVmaW5lZCkpID8gVjhUZXN0T2JqOjp0b05hdGl2ZSh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+OjpD
YXN0KE1BWUJFX01JU1NJTkdfUEFSQU1FVEVSKGFyZ3MsIDEsIERlZmF1bHRJc1VuZGVmaW5lZCkp
KSA6IDApOworICAgIFRSWUNBVENIX0ZPUl9WOFNUUklOR1JFU09VUkNFKFY4U3RyaW5nUmVzb3Vy
Y2U8Piwgc3RyQXJnLCBNQVlCRV9NSVNTSU5HX1BBUkFNRVRFUihhcmdzLCAwLCBEZWZhdWx0SXNV
bmRlZmluZWQpKTsKKyAgICBUUllDQVRDSChUZXN0T2JqKiwgb2JqQXJnLCBWOFRlc3RPYmo6Okhh
c0luc3RhbmNlKE1BWUJFX01JU1NJTkdfUEFSQU1FVEVSKGFyZ3MsIDEsIERlZmF1bHRJc1VuZGVm
aW5lZCkpID8gVjhUZXN0T2JqOjp0b05hdGl2ZSh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+OjpDYXN0
KE1BWUJFX01JU1NJTkdfUEFSQU1FVEVSKGFyZ3MsIDEsIERlZmF1bHRJc1VuZGVmaW5lZCkpKSA6
IDApOwogICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdENvbnRleHQgPSBnZXRTY3Jp
cHRFeGVjdXRpb25Db250ZXh0KCk7CiAgICAgUmVmUHRyPFRlc3RPYmo+IHJlc3VsdCA9IFRlc3RT
dXBwbGVtZW50YWw6OnN1cHBsZW1lbnRhbE1ldGhvZDIoc2NyaXB0Q29udGV4dCwgaW1wLCBzdHJB
cmcsIG9iakFyZywgZWMpOwogICAgIGlmIChVTkxJS0VMWShlYykpCkBAIC0yNTIsOCArMjUyLDgg
QEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4VGVzdEludGVyZmFjZTo6Y29uc3RydWN0b3JDYWxs
YmFjayhjb25zdCB2ODo6QXJndW1lbnRzJgogICAgICAgICByZXR1cm4gdGhyb3dOb3RFbm91Z2hB
cmd1bWVudHNFcnJvcihhcmdzLkdldElzb2xhdGUoKSk7CiAKICAgICBFeGNlcHRpb25Db2RlIGVj
ID0gMDsKLSAgICBTVFJJTkdfVE9fVjhQQVJBTUVURVJfRVhDRVBUSU9OX0JMT0NLKFY4U3RyaW5n
UmVzb3VyY2U8Piwgc3RyMSwgTUFZQkVfTUlTU0lOR19QQVJBTUVURVIoYXJncywgMCwgRGVmYXVs
dElzVW5kZWZpbmVkKSk7Ci0gICAgU1RSSU5HX1RPX1Y4UEFSQU1FVEVSX0VYQ0VQVElPTl9CTE9D
SyhWOFN0cmluZ1Jlc291cmNlPD4sIHN0cjIsIE1BWUJFX01JU1NJTkdfUEFSQU1FVEVSKGFyZ3Ms
IDEsIERlZmF1bHRJc1VuZGVmaW5lZCkpOworICAgIFRSWUNBVENIX0ZPUl9WOFNUUklOR1JFU09V
UkNFKFY4U3RyaW5nUmVzb3VyY2U8Piwgc3RyMSwgTUFZQkVfTUlTU0lOR19QQVJBTUVURVIoYXJn
cywgMCwgRGVmYXVsdElzVW5kZWZpbmVkKSk7CisgICAgVFJZQ0FUQ0hfRk9SX1Y4U1RSSU5HUkVT
T1VSQ0UoVjhTdHJpbmdSZXNvdXJjZTw+LCBzdHIyLCBNQVlCRV9NSVNTSU5HX1BBUkFNRVRFUihh
cmdzLCAxLCBEZWZhdWx0SXNVbmRlZmluZWQpKTsKIAogICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqIGNvbnRleHQgPSBnZXRTY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RNZWRpYVF1ZXJ5
TGlzdExpc3RlbmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9W
OC9WOFRlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyLmNwcAppbmRleCA5ZTBlMmZjMzg3MzUxNDgx
MmJmMzkyMDRjNGZhMzA1YzZmNGQ5YTk3Li45MGEyZTZjZDBlYjhlODU5ZjEyMzIzMzA4NDE4Zjc3
OTg2ZDdlMWFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvVjgvVjhUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIu
Y3BwCkBAIC00NSw3ICs0NSw3IEBAIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gbWV0aG9k
Q2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKICAgICBpZiAoYXJncy5MZW5ndGgo
KSA8IDEpCiAgICAgICAgIHJldHVybiB0aHJvd05vdEVub3VnaEFyZ3VtZW50c0Vycm9yKGFyZ3Mu
R2V0SXNvbGF0ZSgpKTsKICAgICBUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lciogaW1wID0gVjhU
ZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lcjo6dG9OYXRpdmUoYXJncy5Ib2xkZXIoKSk7Ci0gICAg
RVhDRVBUSU9OX0JMT0NLKFJlZlB0cjxNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyPiwgbGlzdGVuZXIs
IE1lZGlhUXVlcnlMaXN0TGlzdGVuZXI6OmNyZWF0ZShNQVlCRV9NSVNTSU5HX1BBUkFNRVRFUihh
cmdzLCAwLCBEZWZhdWx0SXNVbmRlZmluZWQpKSk7CisgICAgVFJZQ0FUQ0goUmVmUHRyPE1lZGlh
UXVlcnlMaXN0TGlzdGVuZXI+LCBsaXN0ZW5lciwgTWVkaWFRdWVyeUxpc3RMaXN0ZW5lcjo6Y3Jl
YXRlKE1BWUJFX01JU1NJTkdfUEFSQU1FVEVSKGFyZ3MsIDAsIERlZmF1bHRJc1VuZGVmaW5lZCkp
KTsKICAgICBpbXAtPm1ldGhvZChsaXN0ZW5lcik7CiAgICAgcmV0dXJuIHY4VW5kZWZpbmVkKCk7
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgv
VjhUZXN0TmFtZWRDb25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvVjgvVjhUZXN0TmFtZWRDb25zdHJ1Y3Rvci5jcHAKaW5kZXggZWNkNGU2NmVlMTFj
YzE0MDFjZmY2N2U3MzdhNGIzMTExZTUxMmUwOC4uYTcwZWMyYjc2NzJjNmZkOWQ3ODdjNTY5OTlh
MmI5YzAzNjRiNzdjZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L1Y4L1Y4VGVzdE5hbWVkQ29uc3RydWN0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3ROYW1lZENvbnN0cnVjdG9yLmNwcApAQCAt
NjEsOSArNjEsOSBAQCBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4VGVzdE5hbWVkQ29u
c3RydWN0b3JDb25zdHJ1Y3RvckNhbGxiYWNrKGNvbnN0IHY4OgogICAgICAgICByZXR1cm4gdGhy
b3dOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihhcmdzLkdldElzb2xhdGUoKSk7CiAKICAgICBFeGNl
cHRpb25Db2RlIGVjID0gMDsKLSAgICBTVFJJTkdfVE9fVjhQQVJBTUVURVJfRVhDRVBUSU9OX0JM
T0NLKFY4U3RyaW5nUmVzb3VyY2U8Piwgc3RyMSwgTUFZQkVfTUlTU0lOR19QQVJBTUVURVIoYXJn
cywgMCwgRGVmYXVsdElzVW5kZWZpbmVkKSk7Ci0gICAgU1RSSU5HX1RPX1Y4UEFSQU1FVEVSX0VY
Q0VQVElPTl9CTE9DSyhWOFN0cmluZ1Jlc291cmNlPD4sIHN0cjIsIE1BWUJFX01JU1NJTkdfUEFS
QU1FVEVSKGFyZ3MsIDEsIERlZmF1bHRJc1VuZGVmaW5lZCkpOwotICAgIFNUUklOR19UT19WOFBB
UkFNRVRFUl9FWENFUFRJT05fQkxPQ0soVjhTdHJpbmdSZXNvdXJjZTw+LCBzdHIzLCBNQVlCRV9N
SVNTSU5HX1BBUkFNRVRFUihhcmdzLCAyLCBEZWZhdWx0SXNOdWxsU3RyaW5nKSk7CisgICAgVFJZ
Q0FUQ0hfRk9SX1Y4U1RSSU5HUkVTT1VSQ0UoVjhTdHJpbmdSZXNvdXJjZTw+LCBzdHIxLCBNQVlC
RV9NSVNTSU5HX1BBUkFNRVRFUihhcmdzLCAwLCBEZWZhdWx0SXNVbmRlZmluZWQpKTsKKyAgICBU
UllDQVRDSF9GT1JfVjhTVFJJTkdSRVNPVVJDRShWOFN0cmluZ1Jlc291cmNlPD4sIHN0cjIsIE1B
WUJFX01JU1NJTkdfUEFSQU1FVEVSKGFyZ3MsIDEsIERlZmF1bHRJc1VuZGVmaW5lZCkpOworICAg
IFRSWUNBVENIX0ZPUl9WOFNUUklOR1JFU09VUkNFKFY4U3RyaW5nUmVzb3VyY2U8Piwgc3RyMywg
TUFZQkVfTUlTU0lOR19QQVJBTUVURVIoYXJncywgMiwgRGVmYXVsdElzTnVsbFN0cmluZykpOwog
CiAgICAgUmVmUHRyPFRlc3ROYW1lZENvbnN0cnVjdG9yPiBpbXBsID0gVGVzdE5hbWVkQ29uc3Ry
dWN0b3I6OmNyZWF0ZUZvckpTQ29uc3RydWN0b3IoZG9jdW1lbnQsIHN0cjEsIHN0cjIsIHN0cjMs
IGVjKTsKICAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdyYXBwZXIgPSBhcmdzLkhvbGRlcigp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4
VGVzdE9iai5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhU
ZXN0T2JqLmNwcAppbmRleCA3NzFjNDYxNjljMmM1ZWMyNWJlMTMxNTFmYzdkYzgwMGRmZWNjOTg2
Li5jMGRjYjQ4OWU3OTdmMWMyYjc0ODI1Y2IyMWI5Yjk0MWFmMjExYTRlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0T2JqLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0T2JqLmNwcApA
QCAtMTI0LDcgKzEyNCw3IEBAIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gc3RhdGljU3Ry
aW5nQXR0ckF0dHJHZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hCiBzdGF0aWMgdm9pZCBz
dGF0aWNTdHJpbmdBdHRyQXR0clNldHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgdjg6
OkxvY2FsPHY4OjpWYWx1ZT4gdmFsdWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCiB7
CiAgICAgSU5DX1NUQVRTKCJET00uVGVzdE9iai5zdGF0aWNTdHJpbmdBdHRyLl9zZXQiKTsKLSAg
ICBTVFJJTkdfVE9fVjhQQVJBTUVURVJfRVhDRVBUSU9OX0JMT0NLX1ZPSUQoVjhTdHJpbmdSZXNv
dXJjZTw+LCB2LCB2YWx1ZSk7CisgICAgVFJZQ0FUQ0hfRk9SX1Y4U1RSSU5HUkVTT1VSQ0VfVk9J
RChWOFN0cmluZ1Jlc291cmNlPD4sIHYsIHZhbHVlKTsKICAgICBUZXN0T2JqOjpzZXRTdGF0aWNT
dHJpbmdBdHRyKHYpOwogICAgIHJldHVybjsKIH0KQEAgLTIyMCw3ICsyMjAsNyBAQCBzdGF0aWMg
dm9pZCBzdHJpbmdBdHRyQXR0clNldHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgdjg6
OkxvY2FsPHY4OjpWYWx1ZQogewogICAgIElOQ19TVEFUUygiRE9NLlRlc3RPYmouc3RyaW5nQXR0
ci5fc2V0Iik7CiAgICAgVGVzdE9iaiogaW1wID0gVjhUZXN0T2JqOjp0b05hdGl2ZShpbmZvLkhv
bGRlcigpKTsKLSAgICBTVFJJTkdfVE9fVjhQQVJBTUVURVJfRVhDRVBUSU9OX0JMT0NLX1ZPSUQo
VjhTdHJpbmdSZXNvdXJjZTw+LCB2LCB2YWx1ZSk7CisgICAgVFJZQ0FUQ0hfRk9SX1Y4U1RSSU5H
UkVTT1VSQ0VfVk9JRChWOFN0cmluZ1Jlc291cmNlPD4sIHYsIHZhbHVlKTsKICAgICBpbXAtPnNl
dFN0cmluZ0F0dHIodik7CiAgICAgcmV0dXJuOwogfQpAQCAtMjg2LDcgKzI4Niw3IEBAIHN0YXRp
YyB2b2lkIHJlZmxlY3RlZFN0cmluZ0F0dHJBdHRyU2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5n
PiBuYW1lLCB2ODo6TG9jYWw8CiB7CiAgICAgSU5DX1NUQVRTKCJET00uVGVzdE9iai5yZWZsZWN0
ZWRTdHJpbmdBdHRyLl9zZXQiKTsKICAgICBUZXN0T2JqKiBpbXAgPSBWOFRlc3RPYmo6OnRvTmF0
aXZlKGluZm8uSG9sZGVyKCkpOwotICAgIFNUUklOR19UT19WOFBBUkFNRVRFUl9FWENFUFRJT05f
QkxPQ0tfVk9JRChWOFN0cmluZ1Jlc291cmNlPFdpdGhOdWxsQ2hlY2s+LCB2LCB2YWx1ZSk7Cisg
ICAgVFJZQ0FUQ0hfRk9SX1Y4U1RSSU5HUkVTT1VSQ0VfVk9JRChWOFN0cmluZ1Jlc291cmNlPFdp
dGhOdWxsQ2hlY2s+LCB2LCB2YWx1ZSk7CiAgICAgaW1wLT5zZXRBdHRyaWJ1dGUoV2ViQ29yZTo6
SFRNTE5hbWVzOjpyZWZsZWN0ZWRzdHJpbmdhdHRyQXR0ciwgdik7CiAgICAgcmV0dXJuOwogfQpA
QCAtMzUwLDcgKzM1MCw3IEBAIHN0YXRpYyB2b2lkIHJlZmxlY3RlZFVSTEF0dHJBdHRyU2V0dGVy
KHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCB2ODo6TG9jYWw8djg6CiB7CiAgICAgSU5DX1NU
QVRTKCJET00uVGVzdE9iai5yZWZsZWN0ZWRVUkxBdHRyLl9zZXQiKTsKICAgICBUZXN0T2JqKiBp
bXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkpOwotICAgIFNUUklOR19UT19W
OFBBUkFNRVRFUl9FWENFUFRJT05fQkxPQ0tfVk9JRChWOFN0cmluZ1Jlc291cmNlPFdpdGhOdWxs
Q2hlY2s+LCB2LCB2YWx1ZSk7CisgICAgVFJZQ0FUQ0hfRk9SX1Y4U1RSSU5HUkVTT1VSQ0VfVk9J
RChWOFN0cmluZ1Jlc291cmNlPFdpdGhOdWxsQ2hlY2s+LCB2LCB2YWx1ZSk7CiAgICAgaW1wLT5z
ZXRBdHRyaWJ1dGUoV2ViQ29yZTo6SFRNTE5hbWVzOjpyZWZsZWN0ZWR1cmxhdHRyQXR0ciwgdik7
CiAgICAgcmV0dXJuOwogfQpAQCAtMzY2LDcgKzM2Niw3IEBAIHN0YXRpYyB2b2lkIHJlZmxlY3Rl
ZFN0cmluZ0F0dHJBdHRyU2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCB2ODo6TG9j
YWw8CiB7CiAgICAgSU5DX1NUQVRTKCJET00uVGVzdE9iai5yZWZsZWN0ZWRTdHJpbmdBdHRyLl9z
ZXQiKTsKICAgICBUZXN0T2JqKiBpbXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZlKGluZm8uSG9sZGVy
KCkpOwotICAgIFNUUklOR19UT19WOFBBUkFNRVRFUl9FWENFUFRJT05fQkxPQ0tfVk9JRChWOFN0
cmluZ1Jlc291cmNlPFdpdGhOdWxsQ2hlY2s+LCB2LCB2YWx1ZSk7CisgICAgVFJZQ0FUQ0hfRk9S
X1Y4U1RSSU5HUkVTT1VSQ0VfVk9JRChWOFN0cmluZ1Jlc291cmNlPFdpdGhOdWxsQ2hlY2s+LCB2
LCB2YWx1ZSk7CiAgICAgaW1wLT5zZXRBdHRyaWJ1dGUoV2ViQ29yZTo6SFRNTE5hbWVzOjpjdXN0
b21Db250ZW50U3RyaW5nQXR0ckF0dHIsIHYpOwogICAgIHJldHVybjsKIH0KQEAgLTQxNCw3ICs0
MTQsNyBAQCBzdGF0aWMgdm9pZCByZWZsZWN0ZWRDdXN0b21VUkxBdHRyQXR0clNldHRlcih2ODo6
TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgdjg6OkxvYwogewogICAgIElOQ19TVEFUUygiRE9NLlRl
c3RPYmoucmVmbGVjdGVkQ3VzdG9tVVJMQXR0ci5fc2V0Iik7CiAgICAgVGVzdE9iaiogaW1wID0g
VjhUZXN0T2JqOjp0b05hdGl2ZShpbmZvLkhvbGRlcigpKTsKLSAgICBTVFJJTkdfVE9fVjhQQVJB
TUVURVJfRVhDRVBUSU9OX0JMT0NLX1ZPSUQoVjhTdHJpbmdSZXNvdXJjZTxXaXRoTnVsbENoZWNr
PiwgdiwgdmFsdWUpOworICAgIFRSWUNBVENIX0ZPUl9WOFNUUklOR1JFU09VUkNFX1ZPSUQoVjhT
dHJpbmdSZXNvdXJjZTxXaXRoTnVsbENoZWNrPiwgdiwgdmFsdWUpOwogICAgIGltcC0+c2V0QXR0
cmlidXRlKFdlYkNvcmU6OkhUTUxOYW1lczo6Y3VzdG9tQ29udGVudFVSTEF0dHJBdHRyLCB2KTsK
ICAgICByZXR1cm47CiB9CkBAIC00ODksNyArNDg5LDcgQEAgc3RhdGljIHZvaWQgc3RyaW5nQXR0
cldpdGhHZXR0ZXJFeGNlcHRpb25BdHRyU2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1l
LAogewogICAgIElOQ19TVEFUUygiRE9NLlRlc3RPYmouc3RyaW5nQXR0cldpdGhHZXR0ZXJFeGNl
cHRpb24uX3NldCIpOwogICAgIFRlc3RPYmoqIGltcCA9IFY4VGVzdE9iajo6dG9OYXRpdmUoaW5m
by5Ib2xkZXIoKSk7Ci0gICAgU1RSSU5HX1RPX1Y4UEFSQU1FVEVSX0VYQ0VQVElPTl9CTE9DS19W
T0lEKFY4U3RyaW5nUmVzb3VyY2U8PiwgdiwgdmFsdWUpOworICAgIFRSWUNBVENIX0ZPUl9WOFNU
UklOR1JFU09VUkNFX1ZPSUQoVjhTdHJpbmdSZXNvdXJjZTw+LCB2LCB2YWx1ZSk7CiAgICAgaW1w
LT5zZXRTdHJpbmdBdHRyV2l0aEdldHRlckV4Y2VwdGlvbih2KTsKICAgICByZXR1cm47CiB9CkBA
IC01MDUsNyArNTA1LDcgQEAgc3RhdGljIHZvaWQgc3RyaW5nQXR0cldpdGhTZXR0ZXJFeGNlcHRp
b25BdHRyU2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLAogewogICAgIElOQ19TVEFU
UygiRE9NLlRlc3RPYmouc3RyaW5nQXR0cldpdGhTZXR0ZXJFeGNlcHRpb24uX3NldCIpOwogICAg
IFRlc3RPYmoqIGltcCA9IFY4VGVzdE9iajo6dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSk7Ci0gICAg
U1RSSU5HX1RPX1Y4UEFSQU1FVEVSX0VYQ0VQVElPTl9CTE9DS19WT0lEKFY4U3RyaW5nUmVzb3Vy
Y2U8PiwgdiwgdmFsdWUpOworICAgIFRSWUNBVENIX0ZPUl9WOFNUUklOR1JFU09VUkNFX1ZPSUQo
VjhTdHJpbmdSZXNvdXJjZTw+LCB2LCB2YWx1ZSk7CiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7
CiAgICAgaW1wLT5zZXRTdHJpbmdBdHRyV2l0aFNldHRlckV4Y2VwdGlvbih2LCBlYyk7CiAgICAg
aWYgKFVOTElLRUxZKGVjKSkKQEAgLTEwNTYsOSArMTA1Niw5IEBAIHN0YXRpYyB2ODo6SGFuZGxl
PHY4OjpWYWx1ZT4gdm9pZE1ldGhvZFdpdGhBcmdzQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50
cyYgYXJnCiAgICAgaWYgKGFyZ3MuTGVuZ3RoKCkgPCAzKQogICAgICAgICByZXR1cm4gdGhyb3dO
b3RFbm91Z2hBcmd1bWVudHNFcnJvcihhcmdzLkdldElzb2xhdGUoKSk7CiAgICAgVGVzdE9iaiog
aW1wID0gVjhUZXN0T2JqOjp0b05hdGl2ZShhcmdzLkhvbGRlcigpKTsKLSAgICBFWENFUFRJT05f
QkxPQ0soaW50LCBsb25nQXJnLCB0b0ludDMyKE1BWUJFX01JU1NJTkdfUEFSQU1FVEVSKGFyZ3Ms
IDAsIERlZmF1bHRJc1VuZGVmaW5lZCkpKTsKLSAgICBTVFJJTkdfVE9fVjhQQVJBTUVURVJfRVhD
RVBUSU9OX0JMT0NLKFY4U3RyaW5nUmVzb3VyY2U8Piwgc3RyQXJnLCBNQVlCRV9NSVNTSU5HX1BB
UkFNRVRFUihhcmdzLCAxLCBEZWZhdWx0SXNVbmRlZmluZWQpKTsKLSAgICBFWENFUFRJT05fQkxP
Q0soVGVzdE9iaiosIG9iakFyZywgVjhUZXN0T2JqOjpIYXNJbnN0YW5jZShNQVlCRV9NSVNTSU5H
X1BBUkFNRVRFUihhcmdzLCAyLCBEZWZhdWx0SXNVbmRlZmluZWQpKSA/IFY4VGVzdE9iajo6dG9O
YXRpdmUodjg6OkhhbmRsZTx2ODo6T2JqZWN0Pjo6Q2FzdChNQVlCRV9NSVNTSU5HX1BBUkFNRVRF
UihhcmdzLCAyLCBEZWZhdWx0SXNVbmRlZmluZWQpKSkgOiAwKTsKKyAgICBUUllDQVRDSChpbnQs
IGxvbmdBcmcsIHRvSW50MzIoTUFZQkVfTUlTU0lOR19QQVJBTUVURVIoYXJncywgMCwgRGVmYXVs
dElzVW5kZWZpbmVkKSkpOworICAgIFRSWUNBVENIX0ZPUl9WOFNUUklOR1JFU09VUkNFKFY4U3Ry
aW5nUmVzb3VyY2U8Piwgc3RyQXJnLCBNQVlCRV9NSVNTSU5HX1BBUkFNRVRFUihhcmdzLCAxLCBE
ZWZhdWx0SXNVbmRlZmluZWQpKTsKKyAgICBUUllDQVRDSChUZXN0T2JqKiwgb2JqQXJnLCBWOFRl
c3RPYmo6Okhhc0luc3RhbmNlKE1BWUJFX01JU1NJTkdfUEFSQU1FVEVSKGFyZ3MsIDIsIERlZmF1
bHRJc1VuZGVmaW5lZCkpID8gVjhUZXN0T2JqOjp0b05hdGl2ZSh2ODo6SGFuZGxlPHY4OjpPYmpl
Y3Q+OjpDYXN0KE1BWUJFX01JU1NJTkdfUEFSQU1FVEVSKGFyZ3MsIDIsIERlZmF1bHRJc1VuZGVm
aW5lZCkpKSA6IDApOwogICAgIGltcC0+dm9pZE1ldGhvZFdpdGhBcmdzKGxvbmdBcmcsIHN0ckFy
Zywgb2JqQXJnKTsKICAgICByZXR1cm4gdjhVbmRlZmluZWQoKTsKIH0KQEAgLTEwNzYsOSArMTA3
Niw5IEBAIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gbG9uZ01ldGhvZFdpdGhBcmdzQ2Fs
bGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJnCiAgICAgaWYgKGFyZ3MuTGVuZ3RoKCkgPCAz
KQogICAgICAgICByZXR1cm4gdGhyb3dOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihhcmdzLkdldElz
b2xhdGUoKSk7CiAgICAgVGVzdE9iaiogaW1wID0gVjhUZXN0T2JqOjp0b05hdGl2ZShhcmdzLkhv
bGRlcigpKTsKLSAgICBFWENFUFRJT05fQkxPQ0soaW50LCBsb25nQXJnLCB0b0ludDMyKE1BWUJF
X01JU1NJTkdfUEFSQU1FVEVSKGFyZ3MsIDAsIERlZmF1bHRJc1VuZGVmaW5lZCkpKTsKLSAgICBT
VFJJTkdfVE9fVjhQQVJBTUVURVJfRVhDRVBUSU9OX0JMT0NLKFY4U3RyaW5nUmVzb3VyY2U8Piwg
c3RyQXJnLCBNQVlCRV9NSVNTSU5HX1BBUkFNRVRFUihhcmdzLCAxLCBEZWZhdWx0SXNVbmRlZmlu
ZWQpKTsKLSAgICBFWENFUFRJT05fQkxPQ0soVGVzdE9iaiosIG9iakFyZywgVjhUZXN0T2JqOjpI
YXNJbnN0YW5jZShNQVlCRV9NSVNTSU5HX1BBUkFNRVRFUihhcmdzLCAyLCBEZWZhdWx0SXNVbmRl
ZmluZWQpKSA/IFY4VGVzdE9iajo6dG9OYXRpdmUodjg6OkhhbmRsZTx2ODo6T2JqZWN0Pjo6Q2Fz
dChNQVlCRV9NSVNTSU5HX1BBUkFNRVRFUihhcmdzLCAyLCBEZWZhdWx0SXNVbmRlZmluZWQpKSkg
OiAwKTsKKyAgICBUUllDQVRDSChpbnQsIGxvbmdBcmcsIHRvSW50MzIoTUFZQkVfTUlTU0lOR19Q
QVJBTUVURVIoYXJncywgMCwgRGVmYXVsdElzVW5kZWZpbmVkKSkpOworICAgIFRSWUNBVENIX0ZP
Ul9WOFNUUklOR1JFU09VUkNFKFY4U3RyaW5nUmVzb3VyY2U8Piwgc3RyQXJnLCBNQVlCRV9NSVNT
SU5HX1BBUkFNRVRFUihhcmdzLCAxLCBEZWZhdWx0SXNVbmRlZmluZWQpKTsKKyAgICBUUllDQVRD
SChUZXN0T2JqKiwgb2JqQXJnLCBWOFRlc3RPYmo6Okhhc0luc3RhbmNlKE1BWUJFX01JU1NJTkdf
UEFSQU1FVEVSKGFyZ3MsIDIsIERlZmF1bHRJc1VuZGVmaW5lZCkpID8gVjhUZXN0T2JqOjp0b05h
dGl2ZSh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+OjpDYXN0KE1BWUJFX01JU1NJTkdfUEFSQU1FVEVS
KGFyZ3MsIDIsIERlZmF1bHRJc1VuZGVmaW5lZCkpKSA6IDApOwogICAgIHJldHVybiB2OEludGVn
ZXIoaW1wLT5sb25nTWV0aG9kV2l0aEFyZ3MobG9uZ0FyZywgc3RyQXJnLCBvYmpBcmcpLCBhcmdz
LkdldElzb2xhdGUoKSk7CiB9CiAKQEAgLTEwOTYsOSArMTA5Niw5IEBAIHN0YXRpYyB2ODo6SGFu
ZGxlPHY4OjpWYWx1ZT4gb2JqTWV0aG9kV2l0aEFyZ3NDYWxsYmFjayhjb25zdCB2ODo6QXJndW1l
bnRzJiBhcmdzCiAgICAgaWYgKGFyZ3MuTGVuZ3RoKCkgPCAzKQogICAgICAgICByZXR1cm4gdGhy
b3dOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihhcmdzLkdldElzb2xhdGUoKSk7CiAgICAgVGVzdE9i
aiogaW1wID0gVjhUZXN0T2JqOjp0b05hdGl2ZShhcmdzLkhvbGRlcigpKTsKLSAgICBFWENFUFRJ
T05fQkxPQ0soaW50LCBsb25nQXJnLCB0b0ludDMyKE1BWUJFX01JU1NJTkdfUEFSQU1FVEVSKGFy
Z3MsIDAsIERlZmF1bHRJc1VuZGVmaW5lZCkpKTsKLSAgICBTVFJJTkdfVE9fVjhQQVJBTUVURVJf
RVhDRVBUSU9OX0JMT0NLKFY4U3RyaW5nUmVzb3VyY2U8Piwgc3RyQXJnLCBNQVlCRV9NSVNTSU5H
X1BBUkFNRVRFUihhcmdzLCAxLCBEZWZhdWx0SXNVbmRlZmluZWQpKTsKLSAgICBFWENFUFRJT05f
QkxPQ0soVGVzdE9iaiosIG9iakFyZywgVjhUZXN0T2JqOjpIYXNJbnN0YW5jZShNQVlCRV9NSVNT
SU5HX1BBUkFNRVRFUihhcmdzLCAyLCBEZWZhdWx0SXNVbmRlZmluZWQpKSA/IFY4VGVzdE9iajo6
dG9OYXRpdmUodjg6OkhhbmRsZTx2ODo6T2JqZWN0Pjo6Q2FzdChNQVlCRV9NSVNTSU5HX1BBUkFN
RVRFUihhcmdzLCAyLCBEZWZhdWx0SXNVbmRlZmluZWQpKSkgOiAwKTsKKyAgICBUUllDQVRDSChp
bnQsIGxvbmdBcmcsIHRvSW50MzIoTUFZQkVfTUlTU0lOR19QQVJBTUVURVIoYXJncywgMCwgRGVm
YXVsdElzVW5kZWZpbmVkKSkpOworICAgIFRSWUNBVENIX0ZPUl9WOFNUUklOR1JFU09VUkNFKFY4
U3RyaW5nUmVzb3VyY2U8Piwgc3RyQXJnLCBNQVlCRV9NSVNTSU5HX1BBUkFNRVRFUihhcmdzLCAx
LCBEZWZhdWx0SXNVbmRlZmluZWQpKTsKKyAgICBUUllDQVRDSChUZXN0T2JqKiwgb2JqQXJnLCBW
OFRlc3RPYmo6Okhhc0luc3RhbmNlKE1BWUJFX01JU1NJTkdfUEFSQU1FVEVSKGFyZ3MsIDIsIERl
ZmF1bHRJc1VuZGVmaW5lZCkpID8gVjhUZXN0T2JqOjp0b05hdGl2ZSh2ODo6SGFuZGxlPHY4OjpP
YmplY3Q+OjpDYXN0KE1BWUJFX01JU1NJTkdfUEFSQU1FVEVSKGFyZ3MsIDIsIERlZmF1bHRJc1Vu
ZGVmaW5lZCkpKSA6IDApOwogICAgIHJldHVybiB0b1Y4KGltcC0+b2JqTWV0aG9kV2l0aEFyZ3Mo
bG9uZ0FyZywgc3RyQXJnLCBvYmpBcmcpLCBhcmdzLkhvbGRlcigpLCBhcmdzLkdldElzb2xhdGUo
KSk7CiB9CiAKQEAgLTExMDgsNyArMTEwOCw3IEBAIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1
ZT4gbWV0aG9kV2l0aFNlcXVlbmNlQXJnQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYKICAg
ICBpZiAoYXJncy5MZW5ndGgoKSA8IDEpCiAgICAgICAgIHJldHVybiB0aHJvd05vdEVub3VnaEFy
Z3VtZW50c0Vycm9yKGFyZ3MuR2V0SXNvbGF0ZSgpKTsKICAgICBUZXN0T2JqKiBpbXAgPSBWOFRl
c3RPYmo6OnRvTmF0aXZlKGFyZ3MuSG9sZGVyKCkpOwotICAgIEVYQ0VQVElPTl9CTE9DSyhWZWN0
b3I8U2NyaXB0UHJvZmlsZT4sIHNlcXVlbmNlQXJnLCB0b05hdGl2ZUFycmF5PFNjcmlwdFByb2Zp
bGU+KE1BWUJFX01JU1NJTkdfUEFSQU1FVEVSKGFyZ3MsIDAsIERlZmF1bHRJc1VuZGVmaW5lZCkp
KTsKKyAgICBUUllDQVRDSChWZWN0b3I8U2NyaXB0UHJvZmlsZT4sIHNlcXVlbmNlQXJnLCB0b05h
dGl2ZUFycmF5PFNjcmlwdFByb2ZpbGU+KE1BWUJFX01JU1NJTkdfUEFSQU1FVEVSKGFyZ3MsIDAs
IERlZmF1bHRJc1VuZGVmaW5lZCkpKTsKICAgICBpbXAtPm1ldGhvZFdpdGhTZXF1ZW5jZUFyZyhz
ZXF1ZW5jZUFyZyk7CiAgICAgcmV0dXJuIHY4VW5kZWZpbmVkKCk7CiB9CkBAIC0xMTE5LDcgKzEx
MTksNyBAQCBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IG1ldGhvZFJldHVybmluZ1NlcXVl
bmNlQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cwogICAgIGlmIChhcmdzLkxlbmd0aCgpIDwg
MSkKICAgICAgICAgcmV0dXJuIHRocm93Tm90RW5vdWdoQXJndW1lbnRzRXJyb3IoYXJncy5HZXRJ
c29sYXRlKCkpOwogICAgIFRlc3RPYmoqIGltcCA9IFY4VGVzdE9iajo6dG9OYXRpdmUoYXJncy5I
b2xkZXIoKSk7Ci0gICAgRVhDRVBUSU9OX0JMT0NLKGludCwgbG9uZ0FyZywgdG9JbnQzMihNQVlC
RV9NSVNTSU5HX1BBUkFNRVRFUihhcmdzLCAwLCBEZWZhdWx0SXNVbmRlZmluZWQpKSk7CisgICAg
VFJZQ0FUQ0goaW50LCBsb25nQXJnLCB0b0ludDMyKE1BWUJFX01JU1NJTkdfUEFSQU1FVEVSKGFy
Z3MsIDAsIERlZmF1bHRJc1VuZGVmaW5lZCkpKTsKICAgICByZXR1cm4gdjhBcnJheShpbXAtPm1l
dGhvZFJldHVybmluZ1NlcXVlbmNlKGxvbmdBcmcpLCBhcmdzLkdldElzb2xhdGUoKSk7CiB9CiAK
QEAgLTExMzEsOCArMTEzMSw4IEBAIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gbWV0aG9k
VGhhdFJlcXVpcmVzQWxsQXJnc0FuZFRocm93c0NhbGxiYWNrKGNvbnN0IHY4CiAgICAgVGVzdE9i
aiogaW1wID0gVjhUZXN0T2JqOjp0b05hdGl2ZShhcmdzLkhvbGRlcigpKTsKICAgICBFeGNlcHRp
b25Db2RlIGVjID0gMDsKICAgICB7Ci0gICAgU1RSSU5HX1RPX1Y4UEFSQU1FVEVSX0VYQ0VQVElP
Tl9CTE9DSyhWOFN0cmluZ1Jlc291cmNlPD4sIHN0ckFyZywgTUFZQkVfTUlTU0lOR19QQVJBTUVU
RVIoYXJncywgMCwgRGVmYXVsdElzVW5kZWZpbmVkKSk7Ci0gICAgRVhDRVBUSU9OX0JMT0NLKFRl
c3RPYmoqLCBvYmpBcmcsIFY4VGVzdE9iajo6SGFzSW5zdGFuY2UoTUFZQkVfTUlTU0lOR19QQVJB
TUVURVIoYXJncywgMSwgRGVmYXVsdElzVW5kZWZpbmVkKSkgPyBWOFRlc3RPYmo6OnRvTmF0aXZl
KHY4OjpIYW5kbGU8djg6Ok9iamVjdD46OkNhc3QoTUFZQkVfTUlTU0lOR19QQVJBTUVURVIoYXJn
cywgMSwgRGVmYXVsdElzVW5kZWZpbmVkKSkpIDogMCk7CisgICAgVFJZQ0FUQ0hfRk9SX1Y4U1RS
SU5HUkVTT1VSQ0UoVjhTdHJpbmdSZXNvdXJjZTw+LCBzdHJBcmcsIE1BWUJFX01JU1NJTkdfUEFS
QU1FVEVSKGFyZ3MsIDAsIERlZmF1bHRJc1VuZGVmaW5lZCkpOworICAgIFRSWUNBVENIKFRlc3RP
YmoqLCBvYmpBcmcsIFY4VGVzdE9iajo6SGFzSW5zdGFuY2UoTUFZQkVfTUlTU0lOR19QQVJBTUVU
RVIoYXJncywgMSwgRGVmYXVsdElzVW5kZWZpbmVkKSkgPyBWOFRlc3RPYmo6OnRvTmF0aXZlKHY4
OjpIYW5kbGU8djg6Ok9iamVjdD46OkNhc3QoTUFZQkVfTUlTU0lOR19QQVJBTUVURVIoYXJncywg
MSwgRGVmYXVsdElzVW5kZWZpbmVkKSkpIDogMCk7CiAgICAgUmVmUHRyPFRlc3RPYmo+IHJlc3Vs
dCA9IGltcC0+bWV0aG9kVGhhdFJlcXVpcmVzQWxsQXJnc0FuZFRocm93cyhzdHJBcmcsIG9iakFy
ZywgZWMpOwogICAgIGlmIChVTkxJS0VMWShlYykpCiAgICAgICAgIGdvdG8gZmFpbDsKQEAgLTEx
NjIsNyArMTE2Miw3IEBAIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gaWRiS2V5Q2FsbGJh
Y2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKICAgICBpZiAoYXJncy5MZW5ndGgoKSA8IDEp
CiAgICAgICAgIHJldHVybiB0aHJvd05vdEVub3VnaEFyZ3VtZW50c0Vycm9yKGFyZ3MuR2V0SXNv
bGF0ZSgpKTsKICAgICBUZXN0T2JqKiBpbXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZlKGFyZ3MuSG9s
ZGVyKCkpOwotICAgIEVYQ0VQVElPTl9CTE9DSyhSZWZQdHI8SURCS2V5Piwga2V5LCBjcmVhdGVJ
REJLZXlGcm9tVmFsdWUoTUFZQkVfTUlTU0lOR19QQVJBTUVURVIoYXJncywgMCwgRGVmYXVsdElz
VW5kZWZpbmVkKSkpOworICAgIFRSWUNBVENIKFJlZlB0cjxJREJLZXk+LCBrZXksIGNyZWF0ZUlE
QktleUZyb21WYWx1ZShNQVlCRV9NSVNTSU5HX1BBUkFNRVRFUihhcmdzLCAwLCBEZWZhdWx0SXNV
bmRlZmluZWQpKSk7CiAgICAgaW1wLT5pZGJLZXkoa2V5LmdldCgpKTsKICAgICByZXR1cm4gdjhV
bmRlZmluZWQoKTsKIH0KQEAgLTExNzMsMTAgKzExNzMsMTAgQEAgc3RhdGljIHY4OjpIYW5kbGU8
djg6OlZhbHVlPiBvcHRpb25zT2JqZWN0Q2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJn
cykKICAgICBpZiAoYXJncy5MZW5ndGgoKSA8IDEpCiAgICAgICAgIHJldHVybiB0aHJvd05vdEVu
b3VnaEFyZ3VtZW50c0Vycm9yKGFyZ3MuR2V0SXNvbGF0ZSgpKTsKICAgICBUZXN0T2JqKiBpbXAg
PSBWOFRlc3RPYmo6OnRvTmF0aXZlKGFyZ3MuSG9sZGVyKCkpOwotICAgIEVYQ0VQVElPTl9CTE9D
SyhEaWN0aW9uYXJ5LCBvbywgRGljdGlvbmFyeShNQVlCRV9NSVNTSU5HX1BBUkFNRVRFUihhcmdz
LCAwLCBEZWZhdWx0SXNVbmRlZmluZWQpLCBhcmdzLkdldElzb2xhdGUoKSkpOworICAgIFRSWUNB
VENIKERpY3Rpb25hcnksIG9vLCBEaWN0aW9uYXJ5KE1BWUJFX01JU1NJTkdfUEFSQU1FVEVSKGFy
Z3MsIDAsIERlZmF1bHRJc1VuZGVmaW5lZCksIGFyZ3MuR2V0SXNvbGF0ZSgpKSk7CiAgICAgaWYg
KCFvby5pc1VuZGVmaW5lZE9yTnVsbCgpICYmICFvby5pc09iamVjdCgpKQogICAgICAgICByZXR1
cm4gdGhyb3dUeXBlRXJyb3IoIk5vdCBhbiBvYmplY3QuIiwgYXJncy5HZXRJc29sYXRlKCkpOwot
ICAgIEVYQ0VQVElPTl9CTE9DSyhEaWN0aW9uYXJ5LCBvb28sIERpY3Rpb25hcnkoTUFZQkVfTUlT
U0lOR19QQVJBTUVURVIoYXJncywgMSwgRGVmYXVsdElzVW5kZWZpbmVkKSwgYXJncy5HZXRJc29s
YXRlKCkpKTsKKyAgICBUUllDQVRDSChEaWN0aW9uYXJ5LCBvb28sIERpY3Rpb25hcnkoTUFZQkVf
TUlTU0lOR19QQVJBTUVURVIoYXJncywgMSwgRGVmYXVsdElzVW5kZWZpbmVkKSwgYXJncy5HZXRJ
c29sYXRlKCkpKTsKICAgICBpZiAoIW9vby5pc1VuZGVmaW5lZE9yTnVsbCgpICYmICFvb28uaXNP
YmplY3QoKSkKICAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKCJOb3QgYW4gb2JqZWN0LiIs
IGFyZ3MuR2V0SXNvbGF0ZSgpKTsKICAgICBpbXAtPm9wdGlvbnNPYmplY3Qob28sIG9vbyk7CkBA
IC0xMzg5LDcgKzEzODksNyBAQCBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IG1ldGhvZFdp
dGhPcHRpb25hbEFyZ0NhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmCiAgICAgICAgIGltcC0+
bWV0aG9kV2l0aE9wdGlvbmFsQXJnKCk7CiAgICAgICAgIHJldHVybiB2OFVuZGVmaW5lZCgpOwog
ICAgIH0KLSAgICBFWENFUFRJT05fQkxPQ0soaW50LCBvcHQsIHRvSW50MzIoTUFZQkVfTUlTU0lO
R19QQVJBTUVURVIoYXJncywgMCwgRGVmYXVsdElzVW5kZWZpbmVkKSkpOworICAgIFRSWUNBVENI
KGludCwgb3B0LCB0b0ludDMyKE1BWUJFX01JU1NJTkdfUEFSQU1FVEVSKGFyZ3MsIDAsIERlZmF1
bHRJc1VuZGVmaW5lZCkpKTsKICAgICBpbXAtPm1ldGhvZFdpdGhPcHRpb25hbEFyZyhvcHQpOwog
ICAgIHJldHVybiB2OFVuZGVmaW5lZCgpOwogfQpAQCAtMTQwMCwxMiArMTQwMCwxMiBAQCBzdGF0
aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IG1ldGhvZFdpdGhOb25PcHRpb25hbEFyZ0FuZE9wdGlv
bmFsQXJnQ2FsbGJhY2soY29ucwogICAgIGlmIChhcmdzLkxlbmd0aCgpIDwgMSkKICAgICAgICAg
cmV0dXJuIHRocm93Tm90RW5vdWdoQXJndW1lbnRzRXJyb3IoYXJncy5HZXRJc29sYXRlKCkpOwog
ICAgIFRlc3RPYmoqIGltcCA9IFY4VGVzdE9iajo6dG9OYXRpdmUoYXJncy5Ib2xkZXIoKSk7Ci0g
ICAgRVhDRVBUSU9OX0JMT0NLKGludCwgbm9uT3B0LCB0b0ludDMyKE1BWUJFX01JU1NJTkdfUEFS
QU1FVEVSKGFyZ3MsIDAsIERlZmF1bHRJc1VuZGVmaW5lZCkpKTsKKyAgICBUUllDQVRDSChpbnQs
IG5vbk9wdCwgdG9JbnQzMihNQVlCRV9NSVNTSU5HX1BBUkFNRVRFUihhcmdzLCAwLCBEZWZhdWx0
SXNVbmRlZmluZWQpKSk7CiAgICAgaWYgKGFyZ3MuTGVuZ3RoKCkgPD0gMSkgewogICAgICAgICBp
bXAtPm1ldGhvZFdpdGhOb25PcHRpb25hbEFyZ0FuZE9wdGlvbmFsQXJnKG5vbk9wdCk7CiAgICAg
ICAgIHJldHVybiB2OFVuZGVmaW5lZCgpOwogICAgIH0KLSAgICBFWENFUFRJT05fQkxPQ0soaW50
LCBvcHQsIHRvSW50MzIoTUFZQkVfTUlTU0lOR19QQVJBTUVURVIoYXJncywgMSwgRGVmYXVsdElz
VW5kZWZpbmVkKSkpOworICAgIFRSWUNBVENIKGludCwgb3B0LCB0b0ludDMyKE1BWUJFX01JU1NJ
TkdfUEFSQU1FVEVSKGFyZ3MsIDEsIERlZmF1bHRJc1VuZGVmaW5lZCkpKTsKICAgICBpbXAtPm1l
dGhvZFdpdGhOb25PcHRpb25hbEFyZ0FuZE9wdGlvbmFsQXJnKG5vbk9wdCwgb3B0KTsKICAgICBy
ZXR1cm4gdjhVbmRlZmluZWQoKTsKIH0KQEAgLTE0MTYsMTcgKzE0MTYsMTcgQEAgc3RhdGljIHY4
OjpIYW5kbGU8djg6OlZhbHVlPiBtZXRob2RXaXRoTm9uT3B0aW9uYWxBcmdBbmRUd29PcHRpb25h
bEFyZ3NDYWxsYmFjaygKICAgICBpZiAoYXJncy5MZW5ndGgoKSA8IDEpCiAgICAgICAgIHJldHVy
biB0aHJvd05vdEVub3VnaEFyZ3VtZW50c0Vycm9yKGFyZ3MuR2V0SXNvbGF0ZSgpKTsKICAgICBU
ZXN0T2JqKiBpbXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZlKGFyZ3MuSG9sZGVyKCkpOwotICAgIEVY
Q0VQVElPTl9CTE9DSyhpbnQsIG5vbk9wdCwgdG9JbnQzMihNQVlCRV9NSVNTSU5HX1BBUkFNRVRF
UihhcmdzLCAwLCBEZWZhdWx0SXNVbmRlZmluZWQpKSk7CisgICAgVFJZQ0FUQ0goaW50LCBub25P
cHQsIHRvSW50MzIoTUFZQkVfTUlTU0lOR19QQVJBTUVURVIoYXJncywgMCwgRGVmYXVsdElzVW5k
ZWZpbmVkKSkpOwogICAgIGlmIChhcmdzLkxlbmd0aCgpIDw9IDEpIHsKICAgICAgICAgaW1wLT5t
ZXRob2RXaXRoTm9uT3B0aW9uYWxBcmdBbmRUd29PcHRpb25hbEFyZ3Mobm9uT3B0KTsKICAgICAg
ICAgcmV0dXJuIHY4VW5kZWZpbmVkKCk7CiAgICAgfQotICAgIEVYQ0VQVElPTl9CTE9DSyhpbnQs
IG9wdDEsIHRvSW50MzIoTUFZQkVfTUlTU0lOR19QQVJBTUVURVIoYXJncywgMSwgRGVmYXVsdElz
VW5kZWZpbmVkKSkpOworICAgIFRSWUNBVENIKGludCwgb3B0MSwgdG9JbnQzMihNQVlCRV9NSVNT
SU5HX1BBUkFNRVRFUihhcmdzLCAxLCBEZWZhdWx0SXNVbmRlZmluZWQpKSk7CiAgICAgaWYgKGFy
Z3MuTGVuZ3RoKCkgPD0gMikgewogICAgICAgICBpbXAtPm1ldGhvZFdpdGhOb25PcHRpb25hbEFy
Z0FuZFR3b09wdGlvbmFsQXJncyhub25PcHQsIG9wdDEpOwogICAgICAgICByZXR1cm4gdjhVbmRl
ZmluZWQoKTsKICAgICB9Ci0gICAgRVhDRVBUSU9OX0JMT0NLKGludCwgb3B0MiwgdG9JbnQzMihN
QVlCRV9NSVNTSU5HX1BBUkFNRVRFUihhcmdzLCAyLCBEZWZhdWx0SXNVbmRlZmluZWQpKSk7Cisg
ICAgVFJZQ0FUQ0goaW50LCBvcHQyLCB0b0ludDMyKE1BWUJFX01JU1NJTkdfUEFSQU1FVEVSKGFy
Z3MsIDIsIERlZmF1bHRJc1VuZGVmaW5lZCkpKTsKICAgICBpbXAtPm1ldGhvZFdpdGhOb25PcHRp
b25hbEFyZ0FuZFR3b09wdGlvbmFsQXJncyhub25PcHQsIG9wdDEsIG9wdDIpOwogICAgIHJldHVy
biB2OFVuZGVmaW5lZCgpOwogfQpAQCAtMTQzOSw3ICsxNDM5LDcgQEAgc3RhdGljIHY4OjpIYW5k
bGU8djg6OlZhbHVlPiBtZXRob2RXaXRoT3B0aW9uYWxTdHJpbmdDYWxsYmFjayhjb25zdCB2ODo6
QXJndW1lbnQKICAgICAgICAgaW1wLT5tZXRob2RXaXRoT3B0aW9uYWxTdHJpbmcoKTsKICAgICAg
ICAgcmV0dXJuIHY4VW5kZWZpbmVkKCk7CiAgICAgfQotICAgIFNUUklOR19UT19WOFBBUkFNRVRF
Ul9FWENFUFRJT05fQkxPQ0soVjhTdHJpbmdSZXNvdXJjZTw+LCBzdHIsIE1BWUJFX01JU1NJTkdf
UEFSQU1FVEVSKGFyZ3MsIDAsIERlZmF1bHRJc1VuZGVmaW5lZCkpOworICAgIFRSWUNBVENIX0ZP
Ul9WOFNUUklOR1JFU09VUkNFKFY4U3RyaW5nUmVzb3VyY2U8Piwgc3RyLCBNQVlCRV9NSVNTSU5H
X1BBUkFNRVRFUihhcmdzLCAwLCBEZWZhdWx0SXNVbmRlZmluZWQpKTsKICAgICBpbXAtPm1ldGhv
ZFdpdGhPcHRpb25hbFN0cmluZyhzdHIpOwogICAgIHJldHVybiB2OFVuZGVmaW5lZCgpOwogfQpA
QCAtMTQ0OCw3ICsxNDQ4LDcgQEAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBtZXRob2RX
aXRoT3B0aW9uYWxTdHJpbmdJc1VuZGVmaW5lZENhbGxiYWNrKGNvbnN0IHYKIHsKICAgICBJTkNf
U1RBVFMoIkRPTS5UZXN0T2JqLm1ldGhvZFdpdGhPcHRpb25hbFN0cmluZ0lzVW5kZWZpbmVkIik7
CiAgICAgVGVzdE9iaiogaW1wID0gVjhUZXN0T2JqOjp0b05hdGl2ZShhcmdzLkhvbGRlcigpKTsK
LSAgICBTVFJJTkdfVE9fVjhQQVJBTUVURVJfRVhDRVBUSU9OX0JMT0NLKFY4U3RyaW5nUmVzb3Vy
Y2U8Piwgc3RyLCBNQVlCRV9NSVNTSU5HX1BBUkFNRVRFUihhcmdzLCAwLCBEZWZhdWx0SXNVbmRl
ZmluZWQpKTsKKyAgICBUUllDQVRDSF9GT1JfVjhTVFJJTkdSRVNPVVJDRShWOFN0cmluZ1Jlc291
cmNlPD4sIHN0ciwgTUFZQkVfTUlTU0lOR19QQVJBTUVURVIoYXJncywgMCwgRGVmYXVsdElzVW5k
ZWZpbmVkKSk7CiAgICAgaW1wLT5tZXRob2RXaXRoT3B0aW9uYWxTdHJpbmdJc1VuZGVmaW5lZChz
dHIpOwogICAgIHJldHVybiB2OFVuZGVmaW5lZCgpOwogfQpAQCAtMTQ1Nyw3ICsxNDU3LDcgQEAg
c3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBtZXRob2RXaXRoT3B0aW9uYWxTdHJpbmdJc051
bGxTdHJpbmdDYWxsYmFjayhjb25zdAogewogICAgIElOQ19TVEFUUygiRE9NLlRlc3RPYmoubWV0
aG9kV2l0aE9wdGlvbmFsU3RyaW5nSXNOdWxsU3RyaW5nIik7CiAgICAgVGVzdE9iaiogaW1wID0g
VjhUZXN0T2JqOjp0b05hdGl2ZShhcmdzLkhvbGRlcigpKTsKLSAgICBTVFJJTkdfVE9fVjhQQVJB
TUVURVJfRVhDRVBUSU9OX0JMT0NLKFY4U3RyaW5nUmVzb3VyY2U8Piwgc3RyLCBNQVlCRV9NSVNT
SU5HX1BBUkFNRVRFUihhcmdzLCAwLCBEZWZhdWx0SXNOdWxsU3RyaW5nKSk7CisgICAgVFJZQ0FU
Q0hfRk9SX1Y4U1RSSU5HUkVTT1VSQ0UoVjhTdHJpbmdSZXNvdXJjZTw+LCBzdHIsIE1BWUJFX01J
U1NJTkdfUEFSQU1FVEVSKGFyZ3MsIDAsIERlZmF1bHRJc051bGxTdHJpbmcpKTsKICAgICBpbXAt
Pm1ldGhvZFdpdGhPcHRpb25hbFN0cmluZ0lzTnVsbFN0cmluZyhzdHIpOwogICAgIHJldHVybiB2
OFVuZGVmaW5lZCgpOwogfQpAQCAtMTQ4MSw3ICsxNDgxLDcgQEAgc3RhdGljIHY4OjpIYW5kbGU8
djg6OlZhbHVlPiBtZXRob2RXaXRoTm9uQ2FsbGJhY2tBcmdBbmRDYWxsYmFja0FyZ0NhbGxiYWNr
KGNvbnMKICAgICBpZiAoYXJncy5MZW5ndGgoKSA8IDIpCiAgICAgICAgIHJldHVybiB0aHJvd05v
dEVub3VnaEFyZ3VtZW50c0Vycm9yKGFyZ3MuR2V0SXNvbGF0ZSgpKTsKICAgICBUZXN0T2JqKiBp
bXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZlKGFyZ3MuSG9sZGVyKCkpOwotICAgIEVYQ0VQVElPTl9C
TE9DSyhpbnQsIG5vbkNhbGxiYWNrLCB0b0ludDMyKE1BWUJFX01JU1NJTkdfUEFSQU1FVEVSKGFy
Z3MsIDAsIERlZmF1bHRJc1VuZGVmaW5lZCkpKTsKKyAgICBUUllDQVRDSChpbnQsIG5vbkNhbGxi
YWNrLCB0b0ludDMyKE1BWUJFX01JU1NJTkdfUEFSQU1FVEVSKGFyZ3MsIDAsIERlZmF1bHRJc1Vu
ZGVmaW5lZCkpKTsKICAgICBpZiAoYXJncy5MZW5ndGgoKSA8PSAxIHx8ICFhcmdzWzFdLT5Jc0Z1
bmN0aW9uKCkpCiAgICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcigwLCBhcmdzLkdldElzb2xh
dGUoKSk7CiAgICAgUmVmUHRyPFRlc3RDYWxsYmFjaz4gY2FsbGJhY2sgPSBWOFRlc3RDYWxsYmFj
azo6Y3JlYXRlKGFyZ3NbMV0sIGdldFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSk7CkBAIC0xNTQ0
LDggKzE1NDQsOCBAQCBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IG92ZXJsb2FkZWRNZXRo
b2QxQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncwogICAgIGlmIChhcmdzLkxlbmd0
aCgpIDwgMikKICAgICAgICAgcmV0dXJuIHRocm93Tm90RW5vdWdoQXJndW1lbnRzRXJyb3IoYXJn
cy5HZXRJc29sYXRlKCkpOwogICAgIFRlc3RPYmoqIGltcCA9IFY4VGVzdE9iajo6dG9OYXRpdmUo
YXJncy5Ib2xkZXIoKSk7Ci0gICAgRVhDRVBUSU9OX0JMT0NLKFRlc3RPYmoqLCBvYmpBcmcsIFY4
VGVzdE9iajo6SGFzSW5zdGFuY2UoTUFZQkVfTUlTU0lOR19QQVJBTUVURVIoYXJncywgMCwgRGVm
YXVsdElzVW5kZWZpbmVkKSkgPyBWOFRlc3RPYmo6OnRvTmF0aXZlKHY4OjpIYW5kbGU8djg6Ok9i
amVjdD46OkNhc3QoTUFZQkVfTUlTU0lOR19QQVJBTUVURVIoYXJncywgMCwgRGVmYXVsdElzVW5k
ZWZpbmVkKSkpIDogMCk7Ci0gICAgU1RSSU5HX1RPX1Y4UEFSQU1FVEVSX0VYQ0VQVElPTl9CTE9D
SyhWOFN0cmluZ1Jlc291cmNlPD4sIHN0ckFyZywgTUFZQkVfTUlTU0lOR19QQVJBTUVURVIoYXJn
cywgMSwgRGVmYXVsdElzVW5kZWZpbmVkKSk7CisgICAgVFJZQ0FUQ0goVGVzdE9iaiosIG9iakFy
ZywgVjhUZXN0T2JqOjpIYXNJbnN0YW5jZShNQVlCRV9NSVNTSU5HX1BBUkFNRVRFUihhcmdzLCAw
LCBEZWZhdWx0SXNVbmRlZmluZWQpKSA/IFY4VGVzdE9iajo6dG9OYXRpdmUodjg6OkhhbmRsZTx2
ODo6T2JqZWN0Pjo6Q2FzdChNQVlCRV9NSVNTSU5HX1BBUkFNRVRFUihhcmdzLCAwLCBEZWZhdWx0
SXNVbmRlZmluZWQpKSkgOiAwKTsKKyAgICBUUllDQVRDSF9GT1JfVjhTVFJJTkdSRVNPVVJDRShW
OFN0cmluZ1Jlc291cmNlPD4sIHN0ckFyZywgTUFZQkVfTUlTU0lOR19QQVJBTUVURVIoYXJncywg
MSwgRGVmYXVsdElzVW5kZWZpbmVkKSk7CiAgICAgaW1wLT5vdmVybG9hZGVkTWV0aG9kKG9iakFy
Zywgc3RyQXJnKTsKICAgICByZXR1cm4gdjhVbmRlZmluZWQoKTsKIH0KQEAgLTE1NTYsMTIgKzE1
NTYsMTIgQEAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBvdmVybG9hZGVkTWV0aG9kMkNh
bGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MKICAgICBpZiAoYXJncy5MZW5ndGgoKSA8
IDEpCiAgICAgICAgIHJldHVybiB0aHJvd05vdEVub3VnaEFyZ3VtZW50c0Vycm9yKGFyZ3MuR2V0
SXNvbGF0ZSgpKTsKICAgICBUZXN0T2JqKiBpbXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZlKGFyZ3Mu
SG9sZGVyKCkpOwotICAgIEVYQ0VQVElPTl9CTE9DSyhUZXN0T2JqKiwgb2JqQXJnLCBWOFRlc3RP
Ymo6Okhhc0luc3RhbmNlKE1BWUJFX01JU1NJTkdfUEFSQU1FVEVSKGFyZ3MsIDAsIERlZmF1bHRJ
c1VuZGVmaW5lZCkpID8gVjhUZXN0T2JqOjp0b05hdGl2ZSh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+
OjpDYXN0KE1BWUJFX01JU1NJTkdfUEFSQU1FVEVSKGFyZ3MsIDAsIERlZmF1bHRJc1VuZGVmaW5l
ZCkpKSA6IDApOworICAgIFRSWUNBVENIKFRlc3RPYmoqLCBvYmpBcmcsIFY4VGVzdE9iajo6SGFz
SW5zdGFuY2UoTUFZQkVfTUlTU0lOR19QQVJBTUVURVIoYXJncywgMCwgRGVmYXVsdElzVW5kZWZp
bmVkKSkgPyBWOFRlc3RPYmo6OnRvTmF0aXZlKHY4OjpIYW5kbGU8djg6Ok9iamVjdD46OkNhc3Qo
TUFZQkVfTUlTU0lOR19QQVJBTUVURVIoYXJncywgMCwgRGVmYXVsdElzVW5kZWZpbmVkKSkpIDog
MCk7CiAgICAgaWYgKGFyZ3MuTGVuZ3RoKCkgPD0gMSkgewogICAgICAgICBpbXAtPm92ZXJsb2Fk
ZWRNZXRob2Qob2JqQXJnKTsKICAgICAgICAgcmV0dXJuIHY4VW5kZWZpbmVkKCk7CiAgICAgfQot
ICAgIEVYQ0VQVElPTl9CTE9DSyhpbnQsIGxvbmdBcmcsIHRvSW50MzIoTUFZQkVfTUlTU0lOR19Q
QVJBTUVURVIoYXJncywgMSwgRGVmYXVsdElzVW5kZWZpbmVkKSkpOworICAgIFRSWUNBVENIKGlu
dCwgbG9uZ0FyZywgdG9JbnQzMihNQVlCRV9NSVNTSU5HX1BBUkFNRVRFUihhcmdzLCAxLCBEZWZh
dWx0SXNVbmRlZmluZWQpKSk7CiAgICAgaW1wLT5vdmVybG9hZGVkTWV0aG9kKG9iakFyZywgbG9u
Z0FyZyk7CiAgICAgcmV0dXJuIHY4VW5kZWZpbmVkKCk7CiB9CkBAIC0xNTcyLDcgKzE1NzIsNyBA
QCBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IG92ZXJsb2FkZWRNZXRob2QzQ2FsbGJhY2so
Y29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncwogICAgIGlmIChhcmdzLkxlbmd0aCgpIDwgMSkKICAg
ICAgICAgcmV0dXJuIHRocm93Tm90RW5vdWdoQXJndW1lbnRzRXJyb3IoYXJncy5HZXRJc29sYXRl
KCkpOwogICAgIFRlc3RPYmoqIGltcCA9IFY4VGVzdE9iajo6dG9OYXRpdmUoYXJncy5Ib2xkZXIo
KSk7Ci0gICAgU1RSSU5HX1RPX1Y4UEFSQU1FVEVSX0VYQ0VQVElPTl9CTE9DSyhWOFN0cmluZ1Jl
c291cmNlPD4sIHN0ckFyZywgTUFZQkVfTUlTU0lOR19QQVJBTUVURVIoYXJncywgMCwgRGVmYXVs
dElzVW5kZWZpbmVkKSk7CisgICAgVFJZQ0FUQ0hfRk9SX1Y4U1RSSU5HUkVTT1VSQ0UoVjhTdHJp
bmdSZXNvdXJjZTw+LCBzdHJBcmcsIE1BWUJFX01JU1NJTkdfUEFSQU1FVEVSKGFyZ3MsIDAsIERl
ZmF1bHRJc1VuZGVmaW5lZCkpOwogICAgIGltcC0+b3ZlcmxvYWRlZE1ldGhvZChzdHJBcmcpOwog
ICAgIHJldHVybiB2OFVuZGVmaW5lZCgpOwogfQpAQCAtMTU4Myw3ICsxNTgzLDcgQEAgc3RhdGlj
IHY4OjpIYW5kbGU8djg6OlZhbHVlPiBvdmVybG9hZGVkTWV0aG9kNENhbGxiYWNrKGNvbnN0IHY4
OjpBcmd1bWVudHMmIGFyZ3MKICAgICBpZiAoYXJncy5MZW5ndGgoKSA8IDEpCiAgICAgICAgIHJl
dHVybiB0aHJvd05vdEVub3VnaEFyZ3VtZW50c0Vycm9yKGFyZ3MuR2V0SXNvbGF0ZSgpKTsKICAg
ICBUZXN0T2JqKiBpbXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZlKGFyZ3MuSG9sZGVyKCkpOwotICAg
IEVYQ0VQVElPTl9CTE9DSyhpbnQsIGxvbmdBcmcsIHRvSW50MzIoTUFZQkVfTUlTU0lOR19QQVJB
TUVURVIoYXJncywgMCwgRGVmYXVsdElzVW5kZWZpbmVkKSkpOworICAgIFRSWUNBVENIKGludCwg
bG9uZ0FyZywgdG9JbnQzMihNQVlCRV9NSVNTSU5HX1BBUkFNRVRFUihhcmdzLCAwLCBEZWZhdWx0
SXNVbmRlZmluZWQpKSk7CiAgICAgaW1wLT5vdmVybG9hZGVkTWV0aG9kKGxvbmdBcmcpOwogICAg
IHJldHVybiB2OFVuZGVmaW5lZCgpOwogfQpAQCAtMTYwNyw3ICsxNjA3LDcgQEAgc3RhdGljIHY4
OjpIYW5kbGU8djg6OlZhbHVlPiBvdmVybG9hZGVkTWV0aG9kNkNhbGxiYWNrKGNvbnN0IHY4OjpB
cmd1bWVudHMmIGFyZ3MKICAgICBpZiAoYXJncy5MZW5ndGgoKSA8IDEpCiAgICAgICAgIHJldHVy
biB0aHJvd05vdEVub3VnaEFyZ3VtZW50c0Vycm9yKGFyZ3MuR2V0SXNvbGF0ZSgpKTsKICAgICBU
ZXN0T2JqKiBpbXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZlKGFyZ3MuSG9sZGVyKCkpOwotICAgIEVY
Q0VQVElPTl9CTE9DSyhSZWZQdHI8RE9NU3RyaW5nTGlzdD4sIGxpc3RBcmcsIHRvRE9NU3RyaW5n
TGlzdChNQVlCRV9NSVNTSU5HX1BBUkFNRVRFUihhcmdzLCAwLCBEZWZhdWx0SXNVbmRlZmluZWQp
KSk7CisgICAgVFJZQ0FUQ0goUmVmUHRyPERPTVN0cmluZ0xpc3Q+LCBsaXN0QXJnLCB0b0RPTVN0
cmluZ0xpc3QoTUFZQkVfTUlTU0lOR19QQVJBTUVURVIoYXJncywgMCwgRGVmYXVsdElzVW5kZWZp
bmVkKSkpOwogICAgIGltcC0+b3ZlcmxvYWRlZE1ldGhvZChsaXN0QXJnKTsKICAgICByZXR1cm4g
djhVbmRlZmluZWQoKTsKIH0KQEAgLTE2MTgsNyArMTYxOCw3IEBAIHN0YXRpYyB2ODo6SGFuZGxl
PHY4OjpWYWx1ZT4gb3ZlcmxvYWRlZE1ldGhvZDdDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRz
JiBhcmdzCiAgICAgaWYgKGFyZ3MuTGVuZ3RoKCkgPCAxKQogICAgICAgICByZXR1cm4gdGhyb3dO
b3RFbm91Z2hBcmd1bWVudHNFcnJvcihhcmdzLkdldElzb2xhdGUoKSk7CiAgICAgVGVzdE9iaiog
aW1wID0gVjhUZXN0T2JqOjp0b05hdGl2ZShhcmdzLkhvbGRlcigpKTsKLSAgICBFWENFUFRJT05f
QkxPQ0soUmVmUHRyPERPTVN0cmluZ0xpc3Q+LCBhcnJheUFyZywgdG9ET01TdHJpbmdMaXN0KE1B
WUJFX01JU1NJTkdfUEFSQU1FVEVSKGFyZ3MsIDAsIERlZmF1bHRJc1VuZGVmaW5lZCkpKTsKKyAg
ICBUUllDQVRDSChSZWZQdHI8RE9NU3RyaW5nTGlzdD4sIGFycmF5QXJnLCB0b0RPTVN0cmluZ0xp
c3QoTUFZQkVfTUlTU0lOR19QQVJBTUVURVIoYXJncywgMCwgRGVmYXVsdElzVW5kZWZpbmVkKSkp
OwogICAgIGltcC0+b3ZlcmxvYWRlZE1ldGhvZChhcnJheUFyZyk7CiAgICAgcmV0dXJuIHY4VW5k
ZWZpbmVkKCk7CiB9CkBAIC0xNjI5LDcgKzE2MjksNyBAQCBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6
VmFsdWU+IG92ZXJsb2FkZWRNZXRob2Q4Q2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJn
cwogICAgIGlmIChhcmdzLkxlbmd0aCgpIDwgMSkKICAgICAgICAgcmV0dXJuIHRocm93Tm90RW5v
dWdoQXJndW1lbnRzRXJyb3IoYXJncy5HZXRJc29sYXRlKCkpOwogICAgIFRlc3RPYmoqIGltcCA9
IFY4VGVzdE9iajo6dG9OYXRpdmUoYXJncy5Ib2xkZXIoKSk7Ci0gICAgRVhDRVBUSU9OX0JMT0NL
KFRlc3RPYmoqLCBvYmpBcmcsIFY4VGVzdE9iajo6SGFzSW5zdGFuY2UoTUFZQkVfTUlTU0lOR19Q
QVJBTUVURVIoYXJncywgMCwgRGVmYXVsdElzVW5kZWZpbmVkKSkgPyBWOFRlc3RPYmo6OnRvTmF0
aXZlKHY4OjpIYW5kbGU8djg6Ok9iamVjdD46OkNhc3QoTUFZQkVfTUlTU0lOR19QQVJBTUVURVIo
YXJncywgMCwgRGVmYXVsdElzVW5kZWZpbmVkKSkpIDogMCk7CisgICAgVFJZQ0FUQ0goVGVzdE9i
aiosIG9iakFyZywgVjhUZXN0T2JqOjpIYXNJbnN0YW5jZShNQVlCRV9NSVNTSU5HX1BBUkFNRVRF
UihhcmdzLCAwLCBEZWZhdWx0SXNVbmRlZmluZWQpKSA/IFY4VGVzdE9iajo6dG9OYXRpdmUodjg6
OkhhbmRsZTx2ODo6T2JqZWN0Pjo6Q2FzdChNQVlCRV9NSVNTSU5HX1BBUkFNRVRFUihhcmdzLCAw
LCBEZWZhdWx0SXNVbmRlZmluZWQpKSkgOiAwKTsKICAgICBpbXAtPm92ZXJsb2FkZWRNZXRob2Qo
b2JqQXJnKTsKICAgICByZXR1cm4gdjhVbmRlZmluZWQoKTsKIH0KQEAgLTE2NDAsNyArMTY0MCw3
IEBAIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gb3ZlcmxvYWRlZE1ldGhvZDlDYWxsYmFj
ayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzCiAgICAgaWYgKGFyZ3MuTGVuZ3RoKCkgPCAxKQog
ICAgICAgICByZXR1cm4gdGhyb3dOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihhcmdzLkdldElzb2xh
dGUoKSk7CiAgICAgVGVzdE9iaiogaW1wID0gVjhUZXN0T2JqOjp0b05hdGl2ZShhcmdzLkhvbGRl
cigpKTsKLSAgICBFWENFUFRJT05fQkxPQ0soUmVmUHRyPERPTVN0cmluZ0xpc3Q+LCBhcnJheUFy
ZywgdG9ET01TdHJpbmdMaXN0KE1BWUJFX01JU1NJTkdfUEFSQU1FVEVSKGFyZ3MsIDAsIERlZmF1
bHRJc1VuZGVmaW5lZCkpKTsKKyAgICBUUllDQVRDSChSZWZQdHI8RE9NU3RyaW5nTGlzdD4sIGFy
cmF5QXJnLCB0b0RPTVN0cmluZ0xpc3QoTUFZQkVfTUlTU0lOR19QQVJBTUVURVIoYXJncywgMCwg
RGVmYXVsdElzVW5kZWZpbmVkKSkpOwogICAgIGltcC0+b3ZlcmxvYWRlZE1ldGhvZChhcnJheUFy
Zyk7CiAgICAgcmV0dXJuIHY4VW5kZWZpbmVkKCk7CiB9CkBAIC0xNjUxLDcgKzE2NTEsNyBAQCBz
dGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IG92ZXJsb2FkZWRNZXRob2QxMENhbGxiYWNrKGNv
bnN0IHY4OjpBcmd1bWVudHMmIGFyZwogICAgIGlmIChhcmdzLkxlbmd0aCgpIDwgMSkKICAgICAg
ICAgcmV0dXJuIHRocm93Tm90RW5vdWdoQXJndW1lbnRzRXJyb3IoYXJncy5HZXRJc29sYXRlKCkp
OwogICAgIFRlc3RPYmoqIGltcCA9IFY4VGVzdE9iajo6dG9OYXRpdmUoYXJncy5Ib2xkZXIoKSk7
Ci0gICAgRVhDRVBUSU9OX0JMT0NLKFZlY3Rvcjx1bnNpZ25lZCBsb25nPiwgYXJyYXlBcmcsIHRv
TmF0aXZlQXJyYXk8dW5zaWduZWQgbG9uZz4oTUFZQkVfTUlTU0lOR19QQVJBTUVURVIoYXJncywg
MCwgRGVmYXVsdElzVW5kZWZpbmVkKSkpOworICAgIFRSWUNBVENIKFZlY3Rvcjx1bnNpZ25lZCBs
b25nPiwgYXJyYXlBcmcsIHRvTmF0aXZlQXJyYXk8dW5zaWduZWQgbG9uZz4oTUFZQkVfTUlTU0lO
R19QQVJBTUVURVIoYXJncywgMCwgRGVmYXVsdElzVW5kZWZpbmVkKSkpOwogICAgIGltcC0+b3Zl
cmxvYWRlZE1ldGhvZChhcnJheUFyZyk7CiAgICAgcmV0dXJuIHY4VW5kZWZpbmVkKCk7CiB9CkBA
IC0xNjYyLDcgKzE2NjIsNyBAQCBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IG92ZXJsb2Fk
ZWRNZXRob2QxMUNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZwogICAgIGlmIChhcmdz
Lkxlbmd0aCgpIDwgMSkKICAgICAgICAgcmV0dXJuIHRocm93Tm90RW5vdWdoQXJndW1lbnRzRXJy
b3IoYXJncy5HZXRJc29sYXRlKCkpOwogICAgIFRlc3RPYmoqIGltcCA9IFY4VGVzdE9iajo6dG9O
YXRpdmUoYXJncy5Ib2xkZXIoKSk7Ci0gICAgU1RSSU5HX1RPX1Y4UEFSQU1FVEVSX0VYQ0VQVElP
Tl9CTE9DSyhWOFN0cmluZ1Jlc291cmNlPD4sIHN0ckFyZywgTUFZQkVfTUlTU0lOR19QQVJBTUVU
RVIoYXJncywgMCwgRGVmYXVsdElzVW5kZWZpbmVkKSk7CisgICAgVFJZQ0FUQ0hfRk9SX1Y4U1RS
SU5HUkVTT1VSQ0UoVjhTdHJpbmdSZXNvdXJjZTw+LCBzdHJBcmcsIE1BWUJFX01JU1NJTkdfUEFS
QU1FVEVSKGFyZ3MsIDAsIERlZmF1bHRJc1VuZGVmaW5lZCkpOwogICAgIGltcC0+b3ZlcmxvYWRl
ZE1ldGhvZChzdHJBcmcpOwogICAgIHJldHVybiB2OFVuZGVmaW5lZCgpOwogfQpAQCAtMTcxMCw3
ICsxNzEwLDcgQEAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBjbGFzc01ldGhvZFdpdGhP
cHRpb25hbENhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMKICAgICBpZiAoYXJncy5MZW5ndGgo
KSA8PSAwKSB7CiAgICAgICAgIHJldHVybiB2OEludGVnZXIoVGVzdE9iajo6Y2xhc3NNZXRob2RX
aXRoT3B0aW9uYWwoKSwgYXJncy5HZXRJc29sYXRlKCkpOwogICAgIH0KLSAgICBFWENFUFRJT05f
QkxPQ0soaW50LCBhcmcsIHRvSW50MzIoTUFZQkVfTUlTU0lOR19QQVJBTUVURVIoYXJncywgMCwg
RGVmYXVsdElzVW5kZWZpbmVkKSkpOworICAgIFRSWUNBVENIKGludCwgYXJnLCB0b0ludDMyKE1B
WUJFX01JU1NJTkdfUEFSQU1FVEVSKGFyZ3MsIDAsIERlZmF1bHRJc1VuZGVmaW5lZCkpKTsKICAg
ICByZXR1cm4gdjhJbnRlZ2VyKFRlc3RPYmo6OmNsYXNzTWV0aG9kV2l0aE9wdGlvbmFsKGFyZyks
IGFyZ3MuR2V0SXNvbGF0ZSgpKTsKIH0KIApAQCAtMTcyMSw3ICsxNzIxLDcgQEAgc3RhdGljIHY4
OjpIYW5kbGU8djg6OlZhbHVlPiBvdmVybG9hZGVkTWV0aG9kMTFDYWxsYmFjayhjb25zdCB2ODo6
QXJndW1lbnRzJiBhcmcKICAgICBJTkNfU1RBVFMoIkRPTS5UZXN0T2JqLm92ZXJsb2FkZWRNZXRo
b2QxMSIpOwogICAgIGlmIChhcmdzLkxlbmd0aCgpIDwgMSkKICAgICAgICAgcmV0dXJuIHRocm93
Tm90RW5vdWdoQXJndW1lbnRzRXJyb3IoYXJncy5HZXRJc29sYXRlKCkpOwotICAgIEVYQ0VQVElP
Tl9CTE9DSyhpbnQsIGFyZywgdG9JbnQzMihNQVlCRV9NSVNTSU5HX1BBUkFNRVRFUihhcmdzLCAw
LCBEZWZhdWx0SXNVbmRlZmluZWQpKSk7CisgICAgVFJZQ0FUQ0goaW50LCBhcmcsIHRvSW50MzIo
TUFZQkVfTUlTU0lOR19QQVJBTUVURVIoYXJncywgMCwgRGVmYXVsdElzVW5kZWZpbmVkKSkpOwog
ICAgIFRlc3RPYmo6Om92ZXJsb2FkZWRNZXRob2QxKGFyZyk7CiAgICAgcmV0dXJuIHY4VW5kZWZp
bmVkKCk7CiB9CkBAIC0xNzM1LDcgKzE3MzUsNyBAQCBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFs
dWU+IG92ZXJsb2FkZWRNZXRob2QxMkNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZwog
ICAgIElOQ19TVEFUUygiRE9NLlRlc3RPYmoub3ZlcmxvYWRlZE1ldGhvZDEyIik7CiAgICAgaWYg
KGFyZ3MuTGVuZ3RoKCkgPCAxKQogICAgICAgICByZXR1cm4gdGhyb3dOb3RFbm91Z2hBcmd1bWVu
dHNFcnJvcihhcmdzLkdldElzb2xhdGUoKSk7Ci0gICAgU1RSSU5HX1RPX1Y4UEFSQU1FVEVSX0VY
Q0VQVElPTl9CTE9DSyhWOFN0cmluZ1Jlc291cmNlPD4sIHR5cGUsIE1BWUJFX01JU1NJTkdfUEFS
QU1FVEVSKGFyZ3MsIDAsIERlZmF1bHRJc1VuZGVmaW5lZCkpOworICAgIFRSWUNBVENIX0ZPUl9W
OFNUUklOR1JFU09VUkNFKFY4U3RyaW5nUmVzb3VyY2U8PiwgdHlwZSwgTUFZQkVfTUlTU0lOR19Q
QVJBTUVURVIoYXJncywgMCwgRGVmYXVsdElzVW5kZWZpbmVkKSk7CiAgICAgVGVzdE9iajo6b3Zl
cmxvYWRlZE1ldGhvZDEodHlwZSk7CiAgICAgcmV0dXJuIHY4VW5kZWZpbmVkKCk7CiB9CkBAIC0x
NzY1LDExICsxNzY1LDExIEBAIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gY2xhc3NNZXRo
b2RXaXRoQ2xhbXBDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhCiAgICAgICAgIHJldHVy
biB0aHJvd05vdEVub3VnaEFyZ3VtZW50c0Vycm9yKGFyZ3MuR2V0SXNvbGF0ZSgpKTsKICAgICBU
ZXN0T2JqKiBpbXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZlKGFyZ3MuSG9sZGVyKCkpOwogICAgIHVu
c2lnbmVkIHNob3J0IG9iakFyZ3NTaG9ydCA9IDA7Ci0gICAgRVhDRVBUSU9OX0JMT0NLKGRvdWJs
ZSwgb2JqQXJnc1Nob3J0TmF0aXZlVmFsdWUsIGFyZ3NbMF0tPk51bWJlclZhbHVlKCkpOworICAg
IFRSWUNBVENIKGRvdWJsZSwgb2JqQXJnc1Nob3J0TmF0aXZlVmFsdWUsIGFyZ3NbMF0tPk51bWJl
clZhbHVlKCkpOwogICAgIGlmICghaXNuYW4ob2JqQXJnc1Nob3J0TmF0aXZlVmFsdWUpKQogICAg
ICAgICBvYmpBcmdzU2hvcnQgPSBjbGFtcFRvPHVuc2lnbmVkIHNob3J0PihvYmpBcmdzU2hvcnRO
YXRpdmVWYWx1ZSk7CiAgICAgdW5zaWduZWQgbG9uZyBvYmpBcmdzTG9uZyA9IDA7Ci0gICAgRVhD
RVBUSU9OX0JMT0NLKGRvdWJsZSwgb2JqQXJnc0xvbmdOYXRpdmVWYWx1ZSwgYXJnc1sxXS0+TnVt
YmVyVmFsdWUoKSk7CisgICAgVFJZQ0FUQ0goZG91YmxlLCBvYmpBcmdzTG9uZ05hdGl2ZVZhbHVl
LCBhcmdzWzFdLT5OdW1iZXJWYWx1ZSgpKTsKICAgICBpZiAoIWlzbmFuKG9iakFyZ3NMb25nTmF0
aXZlVmFsdWUpKQogICAgICAgICBvYmpBcmdzTG9uZyA9IGNsYW1wVG88dW5zaWduZWQgbG9uZz4o
b2JqQXJnc0xvbmdOYXRpdmVWYWx1ZSk7CiAgICAgaW1wLT5jbGFzc01ldGhvZFdpdGhDbGFtcChv
YmpBcmdzU2hvcnQsIG9iakFyZ3NMb25nKTsKQEAgLTE3ODIsNyArMTc4Miw3IEBAIHN0YXRpYyB2
ODo6SGFuZGxlPHY4OjpWYWx1ZT4gZW5hYmxlZEF0UnVudGltZU1ldGhvZDFDYWxsYmFjayhjb25z
dCB2ODo6QXJndW1lbnRzCiAgICAgaWYgKGFyZ3MuTGVuZ3RoKCkgPCAxKQogICAgICAgICByZXR1
cm4gdGhyb3dOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihhcmdzLkdldElzb2xhdGUoKSk7CiAgICAg
VGVzdE9iaiogaW1wID0gVjhUZXN0T2JqOjp0b05hdGl2ZShhcmdzLkhvbGRlcigpKTsKLSAgICBF
WENFUFRJT05fQkxPQ0soaW50LCBsb25nQXJnLCB0b0ludDMyKE1BWUJFX01JU1NJTkdfUEFSQU1F
VEVSKGFyZ3MsIDAsIERlZmF1bHRJc1VuZGVmaW5lZCkpKTsKKyAgICBUUllDQVRDSChpbnQsIGxv
bmdBcmcsIHRvSW50MzIoTUFZQkVfTUlTU0lOR19QQVJBTUVURVIoYXJncywgMCwgRGVmYXVsdElz
VW5kZWZpbmVkKSkpOwogICAgIGltcC0+ZW5hYmxlZEF0UnVudGltZU1ldGhvZDEobG9uZ0FyZyk7
CiAgICAgcmV0dXJuIHY4VW5kZWZpbmVkKCk7CiB9CkBAIC0xNzkzLDcgKzE3OTMsNyBAQCBzdGF0
aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGVuYWJsZWRBdFJ1bnRpbWVNZXRob2QyQ2FsbGJhY2so
Y29uc3Qgdjg6OkFyZ3VtZW50cwogICAgIGlmIChhcmdzLkxlbmd0aCgpIDwgMSkKICAgICAgICAg
cmV0dXJuIHRocm93Tm90RW5vdWdoQXJndW1lbnRzRXJyb3IoYXJncy5HZXRJc29sYXRlKCkpOwog
ICAgIFRlc3RPYmoqIGltcCA9IFY4VGVzdE9iajo6dG9OYXRpdmUoYXJncy5Ib2xkZXIoKSk7Ci0g
ICAgRVhDRVBUSU9OX0JMT0NLKGludCwgbG9uZ0FyZywgdG9JbnQzMihNQVlCRV9NSVNTSU5HX1BB
UkFNRVRFUihhcmdzLCAwLCBEZWZhdWx0SXNVbmRlZmluZWQpKSk7CisgICAgVFJZQ0FUQ0goaW50
LCBsb25nQXJnLCB0b0ludDMyKE1BWUJFX01JU1NJTkdfUEFSQU1FVEVSKGFyZ3MsIDAsIERlZmF1
bHRJc1VuZGVmaW5lZCkpKTsKICAgICBpbXAtPmVuYWJsZWRBdFJ1bnRpbWVNZXRob2QyKGxvbmdB
cmcpOwogICAgIHJldHVybiB2OFVuZGVmaW5lZCgpOwogfQpAQCAtMTgwNCw3ICsxODA0LDcgQEAg
c3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBlbmFibGVkUGVyQ29udGV4dE1ldGhvZDFDYWxs
YmFjayhjb25zdCB2ODo6QXJndW1lbnQKICAgICBpZiAoYXJncy5MZW5ndGgoKSA8IDEpCiAgICAg
ICAgIHJldHVybiB0aHJvd05vdEVub3VnaEFyZ3VtZW50c0Vycm9yKGFyZ3MuR2V0SXNvbGF0ZSgp
KTsKICAgICBUZXN0T2JqKiBpbXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZlKGFyZ3MuSG9sZGVyKCkp
OwotICAgIEVYQ0VQVElPTl9CTE9DSyhpbnQsIGxvbmdBcmcsIHRvSW50MzIoTUFZQkVfTUlTU0lO
R19QQVJBTUVURVIoYXJncywgMCwgRGVmYXVsdElzVW5kZWZpbmVkKSkpOworICAgIFRSWUNBVENI
KGludCwgbG9uZ0FyZywgdG9JbnQzMihNQVlCRV9NSVNTSU5HX1BBUkFNRVRFUihhcmdzLCAwLCBE
ZWZhdWx0SXNVbmRlZmluZWQpKSk7CiAgICAgaW1wLT5lbmFibGVkUGVyQ29udGV4dE1ldGhvZDEo
bG9uZ0FyZyk7CiAgICAgcmV0dXJuIHY4VW5kZWZpbmVkKCk7CiB9CkBAIC0xODE1LDcgKzE4MTUs
NyBAQCBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGVuYWJsZWRQZXJDb250ZXh0TWV0aG9k
MkNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudAogICAgIGlmIChhcmdzLkxlbmd0aCgpIDwgMSkK
ICAgICAgICAgcmV0dXJuIHRocm93Tm90RW5vdWdoQXJndW1lbnRzRXJyb3IoYXJncy5HZXRJc29s
YXRlKCkpOwogICAgIFRlc3RPYmoqIGltcCA9IFY4VGVzdE9iajo6dG9OYXRpdmUoYXJncy5Ib2xk
ZXIoKSk7Ci0gICAgRVhDRVBUSU9OX0JMT0NLKGludCwgbG9uZ0FyZywgdG9JbnQzMihNQVlCRV9N
SVNTSU5HX1BBUkFNRVRFUihhcmdzLCAwLCBEZWZhdWx0SXNVbmRlZmluZWQpKSk7CisgICAgVFJZ
Q0FUQ0goaW50LCBsb25nQXJnLCB0b0ludDMyKE1BWUJFX01JU1NJTkdfUEFSQU1FVEVSKGFyZ3Ms
IDAsIERlZmF1bHRJc1VuZGVmaW5lZCkpKTsKICAgICBpbXAtPmVuYWJsZWRQZXJDb250ZXh0TWV0
aG9kMihsb25nQXJnKTsKICAgICByZXR1cm4gdjhVbmRlZmluZWQoKTsKIH0KQEAgLTE4MjgsNyAr
MTgyOCw3IEBAIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gc3RyaW5nQXJyYXlGdW5jdGlv
bkNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyCiAgICAgVGVzdE9iaiogaW1wID0gVjhU
ZXN0T2JqOjp0b05hdGl2ZShhcmdzLkhvbGRlcigpKTsKICAgICBFeGNlcHRpb25Db2RlIGVjID0g
MDsKICAgICB7Ci0gICAgRVhDRVBUSU9OX0JMT0NLKFJlZlB0cjxET01TdHJpbmdMaXN0PiwgdmFs
dWVzLCB0b0RPTVN0cmluZ0xpc3QoTUFZQkVfTUlTU0lOR19QQVJBTUVURVIoYXJncywgMCwgRGVm
YXVsdElzVW5kZWZpbmVkKSkpOworICAgIFRSWUNBVENIKFJlZlB0cjxET01TdHJpbmdMaXN0Piwg
dmFsdWVzLCB0b0RPTVN0cmluZ0xpc3QoTUFZQkVfTUlTU0lOR19QQVJBTUVURVIoYXJncywgMCwg
RGVmYXVsdElzVW5kZWZpbmVkKSkpOwogICAgIFJlZlB0cjxET01TdHJpbmdMaXN0PiByZXN1bHQg
PSBpbXAtPnN0cmluZ0FycmF5RnVuY3Rpb24odmFsdWVzLCBlYyk7CiAgICAgaWYgKFVOTElLRUxZ
KGVjKSkKICAgICAgICAgZ290byBmYWlsOwpAQCAtMTg2MSw3ICsxODYxLDcgQEAgc3RhdGljIHY4
OjpIYW5kbGU8djg6OlZhbHVlPiBjb252ZXJ0MUNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMm
IGFyZ3MpCiAgICAgaWYgKGFyZ3MuTGVuZ3RoKCkgPCAxKQogICAgICAgICByZXR1cm4gdGhyb3dO
b3RFbm91Z2hBcmd1bWVudHNFcnJvcihhcmdzLkdldElzb2xhdGUoKSk7CiAgICAgVGVzdE9iaiog
aW1wID0gVjhUZXN0T2JqOjp0b05hdGl2ZShhcmdzLkhvbGRlcigpKTsKLSAgICBFWENFUFRJT05f
QkxPQ0soYSosIHZhbHVlLCBWOGE6Okhhc0luc3RhbmNlKE1BWUJFX01JU1NJTkdfUEFSQU1FVEVS
KGFyZ3MsIDAsIERlZmF1bHRJc1VuZGVmaW5lZCkpID8gVjhhOjp0b05hdGl2ZSh2ODo6SGFuZGxl
PHY4OjpPYmplY3Q+OjpDYXN0KE1BWUJFX01JU1NJTkdfUEFSQU1FVEVSKGFyZ3MsIDAsIERlZmF1
bHRJc1VuZGVmaW5lZCkpKSA6IDApOworICAgIFRSWUNBVENIKGEqLCB2YWx1ZSwgVjhhOjpIYXNJ
bnN0YW5jZShNQVlCRV9NSVNTSU5HX1BBUkFNRVRFUihhcmdzLCAwLCBEZWZhdWx0SXNVbmRlZmlu
ZWQpKSA/IFY4YTo6dG9OYXRpdmUodjg6OkhhbmRsZTx2ODo6T2JqZWN0Pjo6Q2FzdChNQVlCRV9N
SVNTSU5HX1BBUkFNRVRFUihhcmdzLCAwLCBEZWZhdWx0SXNVbmRlZmluZWQpKSkgOiAwKTsKICAg
ICBpbXAtPmNvbnZlcnQxKHZhbHVlKTsKICAgICByZXR1cm4gdjhVbmRlZmluZWQoKTsKIH0KQEAg
LTE4NzIsNyArMTg3Miw3IEBAIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gY29udmVydDJD
YWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogICAgIGlmIChhcmdzLkxlbmd0aCgp
IDwgMSkKICAgICAgICAgcmV0dXJuIHRocm93Tm90RW5vdWdoQXJndW1lbnRzRXJyb3IoYXJncy5H
ZXRJc29sYXRlKCkpOwogICAgIFRlc3RPYmoqIGltcCA9IFY4VGVzdE9iajo6dG9OYXRpdmUoYXJn
cy5Ib2xkZXIoKSk7Ci0gICAgRVhDRVBUSU9OX0JMT0NLKGIqLCB2YWx1ZSwgVjhiOjpIYXNJbnN0
YW5jZShNQVlCRV9NSVNTSU5HX1BBUkFNRVRFUihhcmdzLCAwLCBEZWZhdWx0SXNVbmRlZmluZWQp
KSA/IFY4Yjo6dG9OYXRpdmUodjg6OkhhbmRsZTx2ODo6T2JqZWN0Pjo6Q2FzdChNQVlCRV9NSVNT
SU5HX1BBUkFNRVRFUihhcmdzLCAwLCBEZWZhdWx0SXNVbmRlZmluZWQpKSkgOiAwKTsKKyAgICBU
UllDQVRDSChiKiwgdmFsdWUsIFY4Yjo6SGFzSW5zdGFuY2UoTUFZQkVfTUlTU0lOR19QQVJBTUVU
RVIoYXJncywgMCwgRGVmYXVsdElzVW5kZWZpbmVkKSkgPyBWOGI6OnRvTmF0aXZlKHY4OjpIYW5k
bGU8djg6Ok9iamVjdD46OkNhc3QoTUFZQkVfTUlTU0lOR19QQVJBTUVURVIoYXJncywgMCwgRGVm
YXVsdElzVW5kZWZpbmVkKSkpIDogMCk7CiAgICAgaW1wLT5jb252ZXJ0Mih2YWx1ZSk7CiAgICAg
cmV0dXJuIHY4VW5kZWZpbmVkKCk7CiB9CkBAIC0xODgzLDcgKzE4ODMsNyBAQCBzdGF0aWMgdjg6
OkhhbmRsZTx2ODo6VmFsdWU+IGNvbnZlcnQ0Q2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYg
YXJncykKICAgICBpZiAoYXJncy5MZW5ndGgoKSA8IDEpCiAgICAgICAgIHJldHVybiB0aHJvd05v
dEVub3VnaEFyZ3VtZW50c0Vycm9yKGFyZ3MuR2V0SXNvbGF0ZSgpKTsKICAgICBUZXN0T2JqKiBp
bXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZlKGFyZ3MuSG9sZGVyKCkpOwotICAgIEVYQ0VQVElPTl9C
TE9DSyhkKiwgdmFsdWUsIFY4ZDo6SGFzSW5zdGFuY2UoTUFZQkVfTUlTU0lOR19QQVJBTUVURVIo
YXJncywgMCwgRGVmYXVsdElzVW5kZWZpbmVkKSkgPyBWOGQ6OnRvTmF0aXZlKHY4OjpIYW5kbGU8
djg6Ok9iamVjdD46OkNhc3QoTUFZQkVfTUlTU0lOR19QQVJBTUVURVIoYXJncywgMCwgRGVmYXVs
dElzVW5kZWZpbmVkKSkpIDogMCk7CisgICAgVFJZQ0FUQ0goZCosIHZhbHVlLCBWOGQ6Okhhc0lu
c3RhbmNlKE1BWUJFX01JU1NJTkdfUEFSQU1FVEVSKGFyZ3MsIDAsIERlZmF1bHRJc1VuZGVmaW5l
ZCkpID8gVjhkOjp0b05hdGl2ZSh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+OjpDYXN0KE1BWUJFX01J
U1NJTkdfUEFSQU1FVEVSKGFyZ3MsIDAsIERlZmF1bHRJc1VuZGVmaW5lZCkpKSA6IDApOwogICAg
IGltcC0+Y29udmVydDQodmFsdWUpOwogICAgIHJldHVybiB2OFVuZGVmaW5lZCgpOwogfQpAQCAt
MTg5NCw3ICsxODk0LDcgQEAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBjb252ZXJ0NUNh
bGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiAgICAgaWYgKGFyZ3MuTGVuZ3RoKCkg
PCAxKQogICAgICAgICByZXR1cm4gdGhyb3dOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihhcmdzLkdl
dElzb2xhdGUoKSk7CiAgICAgVGVzdE9iaiogaW1wID0gVjhUZXN0T2JqOjp0b05hdGl2ZShhcmdz
LkhvbGRlcigpKTsKLSAgICBFWENFUFRJT05fQkxPQ0soZSosIHZhbHVlLCBWOGU6Okhhc0luc3Rh
bmNlKE1BWUJFX01JU1NJTkdfUEFSQU1FVEVSKGFyZ3MsIDAsIERlZmF1bHRJc1VuZGVmaW5lZCkp
ID8gVjhlOjp0b05hdGl2ZSh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+OjpDYXN0KE1BWUJFX01JU1NJ
TkdfUEFSQU1FVEVSKGFyZ3MsIDAsIERlZmF1bHRJc1VuZGVmaW5lZCkpKSA6IDApOworICAgIFRS
WUNBVENIKGUqLCB2YWx1ZSwgVjhlOjpIYXNJbnN0YW5jZShNQVlCRV9NSVNTSU5HX1BBUkFNRVRF
UihhcmdzLCAwLCBEZWZhdWx0SXNVbmRlZmluZWQpKSA/IFY4ZTo6dG9OYXRpdmUodjg6OkhhbmRs
ZTx2ODo6T2JqZWN0Pjo6Q2FzdChNQVlCRV9NSVNTSU5HX1BBUkFNRVRFUihhcmdzLCAwLCBEZWZh
dWx0SXNVbmRlZmluZWQpKSkgOiAwKTsKICAgICBpbXAtPmNvbnZlcnQ1KHZhbHVlKTsKICAgICBy
ZXR1cm4gdjhVbmRlZmluZWQoKTsKIH0KQEAgLTE5MjksOSArMTkyOSw5IEBAIHN0YXRpYyB2ODo6
SGFuZGxlPHY4OjpWYWx1ZT4gc3RyaWN0RnVuY3Rpb25DYWxsYmFjayhjb25zdCB2ODo6QXJndW1l
bnRzJiBhcmdzKQogICAgIFRlc3RPYmoqIGltcCA9IFY4VGVzdE9iajo6dG9OYXRpdmUoYXJncy5I
b2xkZXIoKSk7CiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CiAgICAgewotICAgIFNUUklOR19U
T19WOFBBUkFNRVRFUl9FWENFUFRJT05fQkxPQ0soVjhTdHJpbmdSZXNvdXJjZTw+LCBzdHIsIE1B
WUJFX01JU1NJTkdfUEFSQU1FVEVSKGFyZ3MsIDAsIERlZmF1bHRJc1VuZGVmaW5lZCkpOwotICAg
IEVYQ0VQVElPTl9CTE9DSyhmbG9hdCwgYSwgc3RhdGljX2Nhc3Q8ZmxvYXQ+KE1BWUJFX01JU1NJ
TkdfUEFSQU1FVEVSKGFyZ3MsIDEsIERlZmF1bHRJc1VuZGVmaW5lZCktPk51bWJlclZhbHVlKCkp
KTsKLSAgICBFWENFUFRJT05fQkxPQ0soaW50LCBiLCB0b0ludDMyKE1BWUJFX01JU1NJTkdfUEFS
QU1FVEVSKGFyZ3MsIDIsIERlZmF1bHRJc1VuZGVmaW5lZCkpKTsKKyAgICBUUllDQVRDSF9GT1Jf
VjhTVFJJTkdSRVNPVVJDRShWOFN0cmluZ1Jlc291cmNlPD4sIHN0ciwgTUFZQkVfTUlTU0lOR19Q
QVJBTUVURVIoYXJncywgMCwgRGVmYXVsdElzVW5kZWZpbmVkKSk7CisgICAgVFJZQ0FUQ0goZmxv
YXQsIGEsIHN0YXRpY19jYXN0PGZsb2F0PihNQVlCRV9NSVNTSU5HX1BBUkFNRVRFUihhcmdzLCAx
LCBEZWZhdWx0SXNVbmRlZmluZWQpLT5OdW1iZXJWYWx1ZSgpKSk7CisgICAgVFJZQ0FUQ0goaW50
LCBiLCB0b0ludDMyKE1BWUJFX01JU1NJTkdfUEFSQU1FVEVSKGFyZ3MsIDIsIERlZmF1bHRJc1Vu
ZGVmaW5lZCkpKTsKICAgICBSZWZQdHI8Ym9vbD4gcmVzdWx0ID0gaW1wLT5zdHJpY3RGdW5jdGlv
bihzdHIsIGEsIGIsIGVjKTsKICAgICBpZiAoVU5MSUtFTFkoZWMpKQogICAgICAgICBnb3RvIGZh
aWw7CkBAIC0xOTQ3LDggKzE5NDcsOCBAQCBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHZh
cmlhZGljU3RyaW5nTWV0aG9kQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYQogICAgIGlm
IChhcmdzLkxlbmd0aCgpIDwgMSkKICAgICAgICAgcmV0dXJuIHRocm93Tm90RW5vdWdoQXJndW1l
bnRzRXJyb3IoYXJncy5HZXRJc29sYXRlKCkpOwogICAgIFRlc3RPYmoqIGltcCA9IFY4VGVzdE9i
ajo6dG9OYXRpdmUoYXJncy5Ib2xkZXIoKSk7Ci0gICAgU1RSSU5HX1RPX1Y4UEFSQU1FVEVSX0VY
Q0VQVElPTl9CTE9DSyhWOFN0cmluZ1Jlc291cmNlPD4sIGhlYWQsIE1BWUJFX01JU1NJTkdfUEFS
QU1FVEVSKGFyZ3MsIDAsIERlZmF1bHRJc1VuZGVmaW5lZCkpOwotICAgIEVYQ0VQVElPTl9CTE9D
SyhWZWN0b3I8U3RyaW5nPiwgdGFpbCwgdG9OYXRpdmVBcmd1bWVudHM8U3RyaW5nPihhcmdzLCAx
KSk7CisgICAgVFJZQ0FUQ0hfRk9SX1Y4U1RSSU5HUkVTT1VSQ0UoVjhTdHJpbmdSZXNvdXJjZTw+
LCBoZWFkLCBNQVlCRV9NSVNTSU5HX1BBUkFNRVRFUihhcmdzLCAwLCBEZWZhdWx0SXNVbmRlZmlu
ZWQpKTsKKyAgICBUUllDQVRDSChWZWN0b3I8U3RyaW5nPiwgdGFpbCwgdG9OYXRpdmVBcmd1bWVu
dHM8U3RyaW5nPihhcmdzLCAxKSk7CiAgICAgaW1wLT52YXJpYWRpY1N0cmluZ01ldGhvZChoZWFk
LCB0YWlsKTsKICAgICByZXR1cm4gdjhVbmRlZmluZWQoKTsKIH0KQEAgLTE5NTksOCArMTk1OSw4
IEBAIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdmFyaWFkaWNEb3VibGVNZXRob2RDYWxs
YmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhCiAgICAgaWYgKGFyZ3MuTGVuZ3RoKCkgPCAxKQog
ICAgICAgICByZXR1cm4gdGhyb3dOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihhcmdzLkdldElzb2xh
dGUoKSk7CiAgICAgVGVzdE9iaiogaW1wID0gVjhUZXN0T2JqOjp0b05hdGl2ZShhcmdzLkhvbGRl
cigpKTsKLSAgICBFWENFUFRJT05fQkxPQ0soZG91YmxlLCBoZWFkLCBzdGF0aWNfY2FzdDxkb3Vi
bGU+KE1BWUJFX01JU1NJTkdfUEFSQU1FVEVSKGFyZ3MsIDAsIERlZmF1bHRJc1VuZGVmaW5lZCkt
Pk51bWJlclZhbHVlKCkpKTsKLSAgICBFWENFUFRJT05fQkxPQ0soVmVjdG9yPGRvdWJsZT4sIHRh
aWwsIHRvTmF0aXZlQXJndW1lbnRzPGRvdWJsZT4oYXJncywgMSkpOworICAgIFRSWUNBVENIKGRv
dWJsZSwgaGVhZCwgc3RhdGljX2Nhc3Q8ZG91YmxlPihNQVlCRV9NSVNTSU5HX1BBUkFNRVRFUihh
cmdzLCAwLCBEZWZhdWx0SXNVbmRlZmluZWQpLT5OdW1iZXJWYWx1ZSgpKSk7CisgICAgVFJZQ0FU
Q0goVmVjdG9yPGRvdWJsZT4sIHRhaWwsIHRvTmF0aXZlQXJndW1lbnRzPGRvdWJsZT4oYXJncywg
MSkpOwogICAgIGltcC0+dmFyaWFkaWNEb3VibGVNZXRob2QoaGVhZCwgdGFpbCk7CiAgICAgcmV0
dXJuIHY4VW5kZWZpbmVkKCk7CiB9CkBAIC0xOTcxLDcgKzE5NzEsNyBAQCBzdGF0aWMgdjg6Okhh
bmRsZTx2ODo6VmFsdWU+IHZhcmlhZGljTm9kZU1ldGhvZENhbGxiYWNrKGNvbnN0IHY4OjpBcmd1
bWVudHMmIGFyZwogICAgIGlmIChhcmdzLkxlbmd0aCgpIDwgMSkKICAgICAgICAgcmV0dXJuIHRo
cm93Tm90RW5vdWdoQXJndW1lbnRzRXJyb3IoYXJncy5HZXRJc29sYXRlKCkpOwogICAgIFRlc3RP
YmoqIGltcCA9IFY4VGVzdE9iajo6dG9OYXRpdmUoYXJncy5Ib2xkZXIoKSk7Ci0gICAgRVhDRVBU
SU9OX0JMT0NLKE5vZGUqLCBoZWFkLCBWOE5vZGU6Okhhc0luc3RhbmNlKE1BWUJFX01JU1NJTkdf
UEFSQU1FVEVSKGFyZ3MsIDAsIERlZmF1bHRJc1VuZGVmaW5lZCkpID8gVjhOb2RlOjp0b05hdGl2
ZSh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+OjpDYXN0KE1BWUJFX01JU1NJTkdfUEFSQU1FVEVSKGFy
Z3MsIDAsIERlZmF1bHRJc1VuZGVmaW5lZCkpKSA6IDApOworICAgIFRSWUNBVENIKE5vZGUqLCBo
ZWFkLCBWOE5vZGU6Okhhc0luc3RhbmNlKE1BWUJFX01JU1NJTkdfUEFSQU1FVEVSKGFyZ3MsIDAs
IERlZmF1bHRJc1VuZGVmaW5lZCkpID8gVjhOb2RlOjp0b05hdGl2ZSh2ODo6SGFuZGxlPHY4OjpP
YmplY3Q+OjpDYXN0KE1BWUJFX01JU1NJTkdfUEFSQU1FVEVSKGFyZ3MsIDAsIERlZmF1bHRJc1Vu
ZGVmaW5lZCkpKSA6IDApOwogICAgIFZlY3RvcjxSZWZQdHI8Tm9kZT4gPiB0YWlsOwogICAgIGZv
ciAoaW50IGkgPSAxOyBpIDwgYXJncy5MZW5ndGgoKTsgKytpKSB7CiAgICAgICAgIGlmICghVjhO
b2RlOjpIYXNJbnN0YW5jZShhcmdzW2ldKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RPdmVybG9hZGVk
Q29uc3RydWN0b3JzLmNwcAppbmRleCBmZDBjNTdlNjg4NDQ0ZmMyMzVkMDZmNzFiZTliYzM5MjNj
ZTM4ZDdhLi4yNTlhOTkzOTEzNTM1NTE3YjdkMWNhMGViNDAyMGFlODNjZGM5ZjAzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0T3Zlcmxv
YWRlZENvbnN0cnVjdG9ycy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L1Y4L1Y4VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMuY3BwCkBAIC00OSw3ICs0OSw3
IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOFRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzOjpj
b25zdHJ1Y3RvcjFDYWxsYmFjayhjb25zdCB2CiB7CiAgICAgSU5DX1NUQVRTKCJET00uVGVzdE92
ZXJsb2FkZWRDb25zdHJ1Y3RvcnMuQ29uc3RydWN0b3IxIik7CiAgICAgCi0gICAgRVhDRVBUSU9O
X0JMT0NLKEFycmF5QnVmZmVyKiwgYXJyYXlCdWZmZXIsIFY4QXJyYXlCdWZmZXI6Okhhc0luc3Rh
bmNlKE1BWUJFX01JU1NJTkdfUEFSQU1FVEVSKGFyZ3MsIDAsIERlZmF1bHRJc1VuZGVmaW5lZCkp
ID8gVjhBcnJheUJ1ZmZlcjo6dG9OYXRpdmUodjg6OkhhbmRsZTx2ODo6T2JqZWN0Pjo6Q2FzdChN
QVlCRV9NSVNTSU5HX1BBUkFNRVRFUihhcmdzLCAwLCBEZWZhdWx0SXNVbmRlZmluZWQpKSkgOiAw
KTsKKyAgICBUUllDQVRDSChBcnJheUJ1ZmZlciosIGFycmF5QnVmZmVyLCBWOEFycmF5QnVmZmVy
OjpIYXNJbnN0YW5jZShNQVlCRV9NSVNTSU5HX1BBUkFNRVRFUihhcmdzLCAwLCBEZWZhdWx0SXNV
bmRlZmluZWQpKSA/IFY4QXJyYXlCdWZmZXI6OnRvTmF0aXZlKHY4OjpIYW5kbGU8djg6Ok9iamVj
dD46OkNhc3QoTUFZQkVfTUlTU0lOR19QQVJBTUVURVIoYXJncywgMCwgRGVmYXVsdElzVW5kZWZp
bmVkKSkpIDogMCk7CiAKICAgICBSZWZQdHI8VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnM+IGlt
cGwgPSBUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yczo6Y3JlYXRlKGFycmF5QnVmZmVyKTsKICAg
ICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdyYXBwZXIgPSBhcmdzLkhvbGRlcigpOwpAQCAtNjIs
NyArNjIsNyBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhUZXN0T3ZlcmxvYWRlZENvbnN0cnVj
dG9yczo6Y29uc3RydWN0b3IyQ2FsbGJhY2soY29uc3QgdgogewogICAgIElOQ19TVEFUUygiRE9N
LlRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzLkNvbnN0cnVjdG9yMiIpOwogICAgIAotICAgIEVY
Q0VQVElPTl9CTE9DSyhBcnJheUJ1ZmZlclZpZXcqLCBhcnJheUJ1ZmZlclZpZXcsIFY4QXJyYXlC
dWZmZXJWaWV3OjpIYXNJbnN0YW5jZShNQVlCRV9NSVNTSU5HX1BBUkFNRVRFUihhcmdzLCAwLCBE
ZWZhdWx0SXNVbmRlZmluZWQpKSA/IFY4QXJyYXlCdWZmZXJWaWV3Ojp0b05hdGl2ZSh2ODo6SGFu
ZGxlPHY4OjpPYmplY3Q+OjpDYXN0KE1BWUJFX01JU1NJTkdfUEFSQU1FVEVSKGFyZ3MsIDAsIERl
ZmF1bHRJc1VuZGVmaW5lZCkpKSA6IDApOworICAgIFRSWUNBVENIKEFycmF5QnVmZmVyVmlldyos
IGFycmF5QnVmZmVyVmlldywgVjhBcnJheUJ1ZmZlclZpZXc6Okhhc0luc3RhbmNlKE1BWUJFX01J
U1NJTkdfUEFSQU1FVEVSKGFyZ3MsIDAsIERlZmF1bHRJc1VuZGVmaW5lZCkpID8gVjhBcnJheUJ1
ZmZlclZpZXc6OnRvTmF0aXZlKHY4OjpIYW5kbGU8djg6Ok9iamVjdD46OkNhc3QoTUFZQkVfTUlT
U0lOR19QQVJBTUVURVIoYXJncywgMCwgRGVmYXVsdElzVW5kZWZpbmVkKSkpIDogMCk7CiAKICAg
ICBSZWZQdHI8VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnM+IGltcGwgPSBUZXN0T3ZlcmxvYWRl
ZENvbnN0cnVjdG9yczo6Y3JlYXRlKGFycmF5QnVmZmVyVmlldyk7CiAgICAgdjg6OkhhbmRsZTx2
ODo6T2JqZWN0PiB3cmFwcGVyID0gYXJncy5Ib2xkZXIoKTsKQEAgLTc1LDcgKzc1LDcgQEAgdjg6
OkhhbmRsZTx2ODo6VmFsdWU+IFY4VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnM6OmNvbnN0cnVj
dG9yM0NhbGxiYWNrKGNvbnN0IHYKIHsKICAgICBJTkNfU1RBVFMoIkRPTS5UZXN0T3ZlcmxvYWRl
ZENvbnN0cnVjdG9ycy5Db25zdHJ1Y3RvcjMiKTsKICAgICAKLSAgICBFWENFUFRJT05fQkxPQ0so
QmxvYiosIGJsb2IsIFY4QmxvYjo6SGFzSW5zdGFuY2UoTUFZQkVfTUlTU0lOR19QQVJBTUVURVIo
YXJncywgMCwgRGVmYXVsdElzVW5kZWZpbmVkKSkgPyBWOEJsb2I6OnRvTmF0aXZlKHY4OjpIYW5k
bGU8djg6Ok9iamVjdD46OkNhc3QoTUFZQkVfTUlTU0lOR19QQVJBTUVURVIoYXJncywgMCwgRGVm
YXVsdElzVW5kZWZpbmVkKSkpIDogMCk7CisgICAgVFJZQ0FUQ0goQmxvYiosIGJsb2IsIFY4Qmxv
Yjo6SGFzSW5zdGFuY2UoTUFZQkVfTUlTU0lOR19QQVJBTUVURVIoYXJncywgMCwgRGVmYXVsdElz
VW5kZWZpbmVkKSkgPyBWOEJsb2I6OnRvTmF0aXZlKHY4OjpIYW5kbGU8djg6Ok9iamVjdD46OkNh
c3QoTUFZQkVfTUlTU0lOR19QQVJBTUVURVIoYXJncywgMCwgRGVmYXVsdElzVW5kZWZpbmVkKSkp
IDogMCk7CiAKICAgICBSZWZQdHI8VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnM+IGltcGwgPSBU
ZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yczo6Y3JlYXRlKGJsb2IpOwogICAgIHY4OjpIYW5kbGU8
djg6Ok9iamVjdD4gd3JhcHBlciA9IGFyZ3MuSG9sZGVyKCk7CkBAIC04OCw3ICs4OCw3IEBAIHY4
OjpIYW5kbGU8djg6OlZhbHVlPiBWOFRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzOjpjb25zdHJ1
Y3RvcjRDYWxsYmFjayhjb25zdCB2CiB7CiAgICAgSU5DX1NUQVRTKCJET00uVGVzdE92ZXJsb2Fk
ZWRDb25zdHJ1Y3RvcnMuQ29uc3RydWN0b3I0Iik7CiAgICAgCi0gICAgU1RSSU5HX1RPX1Y4UEFS
QU1FVEVSX0VYQ0VQVElPTl9CTE9DSyhWOFN0cmluZ1Jlc291cmNlPD4sIHN0cmluZywgTUFZQkVf
TUlTU0lOR19QQVJBTUVURVIoYXJncywgMCwgRGVmYXVsdElzVW5kZWZpbmVkKSk7CisgICAgVFJZ
Q0FUQ0hfRk9SX1Y4U1RSSU5HUkVTT1VSQ0UoVjhTdHJpbmdSZXNvdXJjZTw+LCBzdHJpbmcsIE1B
WUJFX01JU1NJTkdfUEFSQU1FVEVSKGFyZ3MsIDAsIERlZmF1bHRJc1VuZGVmaW5lZCkpOwogCiAg
ICAgUmVmUHRyPFRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzPiBpbXBsID0gVGVzdE92ZXJsb2Fk
ZWRDb25zdHJ1Y3RvcnM6OmNyZWF0ZShzdHJpbmcpOwogICAgIHY4OjpIYW5kbGU8djg6Ok9iamVj
dD4gd3JhcHBlciA9IGFyZ3MuSG9sZGVyKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJm
YWNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RT
ZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UuY3BwCmluZGV4IGM2MWRlOTMyOGI4ZTdjNGY3
Yjc5MzY3MDkwZDVhYmI4ZTU0NGE2MDAuLmM2NzAxYmY5MmE5OGZmZWIwNDM3MDI0MmExMjNiMDYz
N2QxNzMyZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9WOC9WOFRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RTZXJpYWxpemVkU2NyaXB0
VmFsdWVJbnRlcmZhY2UuY3BwCkBAIC0yMTgsNyArMjE4LDcgQEAgdjg6OkhhbmRsZTx2ODo6VmFs
dWU+IFY4VGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZTo6Y29uc3RydWN0b3JDYWxs
YmFjaygKICAgICAgICAgcmV0dXJuIGFyZ3MuSG9sZGVyKCk7CiAgICAgaWYgKGFyZ3MuTGVuZ3Ro
KCkgPCAyKQogICAgICAgICByZXR1cm4gdGhyb3dOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihhcmdz
LkdldElzb2xhdGUoKSk7Ci0gICAgU1RSSU5HX1RPX1Y4UEFSQU1FVEVSX0VYQ0VQVElPTl9CTE9D
SyhWOFN0cmluZ1Jlc291cmNlPD4sIGhlbGxvLCBNQVlCRV9NSVNTSU5HX1BBUkFNRVRFUihhcmdz
LCAwLCBEZWZhdWx0SXNVbmRlZmluZWQpKTsKKyAgICBUUllDQVRDSF9GT1JfVjhTVFJJTkdSRVNP
VVJDRShWOFN0cmluZ1Jlc291cmNlPD4sIGhlbGxvLCBNQVlCRV9NSVNTSU5HX1BBUkFNRVRFUihh
cmdzLCAwLCBEZWZhdWx0SXNVbmRlZmluZWQpKTsKICAgICBNZXNzYWdlUG9ydEFycmF5IG1lc3Nh
Z2VQb3J0QXJyYXlUcmFuc2Zlckxpc3Q7CiAgICAgQXJyYXlCdWZmZXJBcnJheSBhcnJheUJ1ZmZl
ckFycmF5VHJhbnNmZXJMaXN0OwogICAgIGlmIChhcmdzLkxlbmd0aCgpID4gMikgewpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhCaW5kaW5nLmggYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy92OC9WOEJpbmRpbmcuaAppbmRleCBlYWJhNWQwNzRhMDc2ZWZmN2M1NDk2
MjUxMDc3YTRmMjVjZDA1ZmFmLi41MmU4MTc1NGJiMTQ3YjI1YmFhNTQ1OTVjYmMxYjlkODNlYzE1
YjlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOEJpbmRpbmcuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOEJpbmRpbmcuaApAQCAtMjQ4LDE0ICsy
NDgsMTQgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2ODo6TG9jYWw8djg6OlZhbHVl
PiB2OFZhbHVlKHY4OjpMb2NhbDx2ODo6VmFsdWU+OjpOZXcodmFsdWUpKTsKICAgICAgICAgdjg6
OkxvY2FsPHY4OjpPYmplY3Q+IG9iamVjdCA9IHY4OjpMb2NhbDx2ODo6T2JqZWN0Pjo6Q2FzdCh2
OFZhbHVlKTsKIAotICAgICAgICBFWENFUFRJT05fQkxPQ0sodjg6OkxvY2FsPHY4OjpWYWx1ZT4s
IGxlbmd0aFZhbHVlLCBvYmplY3QtPkdldCh2ODo6U3RyaW5nOjpOZXcoImxlbmd0aCIpKSk7Cisg
ICAgICAgIFRSWUNBVENIKHY4OjpMb2NhbDx2ODo6VmFsdWU+LCBsZW5ndGhWYWx1ZSwgb2JqZWN0
LT5HZXQodjg6OlN0cmluZzo6TmV3KCJsZW5ndGgiKSkpOwogCiAgICAgICAgIGlmIChsZW5ndGhW
YWx1ZS0+SXNVbmRlZmluZWQoKSB8fCBsZW5ndGhWYWx1ZS0+SXNOdWxsKCkpIHsKICAgICAgICAg
ICAgIHRocm93VHlwZUVycm9yKCk7CiAgICAgICAgICAgICByZXR1cm4gdjhVbmRlZmluZWQoKTsK
ICAgICAgICAgfQogCi0gICAgICAgIEVYQ0VQVElPTl9CTE9DSyh1aW50MzJfdCwgc2VxdWVuY2VM
ZW5ndGgsIGxlbmd0aFZhbHVlLT5JbnQzMlZhbHVlKCkpOworICAgICAgICBUUllDQVRDSCh1aW50
MzJfdCwgc2VxdWVuY2VMZW5ndGgsIGxlbmd0aFZhbHVlLT5JbnQzMlZhbHVlKCkpOwogICAgICAg
ICBsZW5ndGggPSBzZXF1ZW5jZUxlbmd0aDsKIAogICAgICAgICByZXR1cm4gdjhWYWx1ZTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4QmluZGluZ01hY3Jvcy5oIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhCaW5kaW5nTWFjcm9zLmgKaW5kZXggZjRjYWI4
Yjg1OTFiN2ZlZjMwNGNhMGY5OGYwMzliYjU3ODdjYTFjZC4uOTkxNzYwMWQwOWI0ZWU0OGE5Zjc2
ODFmZTNmOGFmNDJhMWFhNTAzZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
djgvVjhCaW5kaW5nTWFjcm9zLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhC
aW5kaW5nTWFjcm9zLmgKQEAgLTQ0LDcgKzQ0LDcgQEAgZW51bSBQYXJhbWV0ZXJEZWZhdWx0UG9s
aWN5IHsKICAgICBEZWZhdWx0SXNOdWxsU3RyaW5nCiB9OwogCi0jZGVmaW5lIEVYQ0VQVElPTl9C
TE9DSyh0eXBlLCB2YXIsIHZhbHVlKSBcCisjZGVmaW5lIFRSWUNBVENIKHR5cGUsIHZhciwgdmFs
dWUpIFwKICAgICB0eXBlIHZhcjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICB7
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgICAgdjg6OlRyeUNh
dGNoIGJsb2NrOyAgICAgICAgICAgICAgIFwKQEAgLTUzLDEyICs1MywxMiBAQCBlbnVtIFBhcmFt
ZXRlckRlZmF1bHRQb2xpY3kgewogICAgICAgICAgICAgcmV0dXJuIGJsb2NrLlJlVGhyb3coKTsg
ICAgICAgXAogICAgIH0KIAotI2RlZmluZSBTVFJJTkdfVE9fVjhQQVJBTUVURVJfRVhDRVBUSU9O
X0JMT0NLKHR5cGUsIHZhciwgdmFsdWUpIFwKKyNkZWZpbmUgVFJZQ0FUQ0hfRk9SX1Y4U1RSSU5H
UkVTT1VSQ0UodHlwZSwgdmFyLCB2YWx1ZSkgXAogICAgIHR5cGUgdmFyKHZhbHVlKTsgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICBpZiAoIXZhci5wcmVw
YXJlKCkpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgICAg
IHJldHVybiB2ODo6VW5kZWZpbmVkKCk7CiAKLSNkZWZpbmUgU1RSSU5HX1RPX1Y4UEFSQU1FVEVS
X0VYQ0VQVElPTl9CTE9DS19WT0lEKHR5cGUsIHZhciwgdmFsdWUpIFwKKyNkZWZpbmUgVFJZQ0FU
Q0hfRk9SX1Y4U1RSSU5HUkVTT1VSQ0VfVk9JRCh0eXBlLCB2YXIsIHZhbHVlKSBcCiAgICAgdHlw
ZSB2YXIodmFsdWUpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBcCiAgICAgaWYgKCF2YXIucHJlcGFyZSgpKSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBcCiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEJsb2JDdXN0b20uY3BwIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4QmxvYkN1c3RvbS5jcHAKaW5kZXggNGU1ZGM5Njk4
Y2NlNWUzZmM5YWJhZTNiNzAyNGZjNGZhYTFiMTUyNy4uNGQ1YTJhZGU5NjgzNDBhYWJmNDA3OGJj
ODMwMDU2ZTJhZmVmZDE0NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvdjgv
Y3VzdG9tL1Y4QmxvYkN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvdjgv
Y3VzdG9tL1Y4QmxvYkN1c3RvbS5jcHAKQEAgLTcxLDE1ICs3MSwxNSBAQCB2ODo6SGFuZGxlPHY4
OjpWYWx1ZT4gVjhCbG9iOjpjb25zdHJ1Y3RvckNhbGxiYWNrQ3VzdG9tKGNvbnN0IHY4OjpBcmd1
bWVudHMmIGFyZwogICAgICAgICBpZiAoIWFyZ3NbMV0tPklzT2JqZWN0KCkpCiAgICAgICAgICAg
ICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoIlNlY29uZCBhcmd1bWVudCBvZiB0aGUgY29uc3RydWN0
b3IgaXMgbm90IG9mIHR5cGUgT2JqZWN0IiwgYXJncy5HZXRJc29sYXRlKCkpOwogCi0gICAgICAg
IEVYQ0VQVElPTl9CTE9DSyhEaWN0aW9uYXJ5LCBkaWN0aW9uYXJ5LCBEaWN0aW9uYXJ5KGFyZ3Nb
MV0sIGFyZ3MuR2V0SXNvbGF0ZSgpKSk7CisgICAgICAgIFRSWUNBVENIKERpY3Rpb25hcnksIGRp
Y3Rpb25hcnksIERpY3Rpb25hcnkoYXJnc1sxXSwgYXJncy5HZXRJc29sYXRlKCkpKTsKIAotICAg
ICAgICBFWENFUFRJT05fQkxPQ0soYm9vbCwgY29udGFpbnNFbmRpbmdzLCBkaWN0aW9uYXJ5Lmdl
dCgiZW5kaW5ncyIsIGVuZGluZ3MpKTsKKyAgICAgICAgVFJZQ0FUQ0goYm9vbCwgY29udGFpbnNF
bmRpbmdzLCBkaWN0aW9uYXJ5LmdldCgiZW5kaW5ncyIsIGVuZGluZ3MpKTsKICAgICAgICAgaWYg
KGNvbnRhaW5zRW5kaW5ncykgewogICAgICAgICAgICAgaWYgKGVuZGluZ3MgIT0gInRyYW5zcGFy
ZW50IiAmJiBlbmRpbmdzICE9ICJuYXRpdmUiKQogICAgICAgICAgICAgICAgIHJldHVybiB0aHJv
d1R5cGVFcnJvcigiVGhlIGVuZGluZ3MgcHJvcGVydHkgbXVzdCBiZSBlaXRoZXIgXCJ0cmFuc3Bh
cmVudFwiIG9yIFwibmF0aXZlXCIiLCBhcmdzLkdldElzb2xhdGUoKSk7CiAgICAgICAgIH0KIAot
ICAgICAgICBFWENFUFRJT05fQkxPQ0soYm9vbCwgY29udGFpbnNUeXBlLCBkaWN0aW9uYXJ5Lmdl
dCgidHlwZSIsIHR5cGUpKTsKKyAgICAgICAgVFJZQ0FUQ0goYm9vbCwgY29udGFpbnNUeXBlLCBk
aWN0aW9uYXJ5LmdldCgidHlwZSIsIHR5cGUpKTsKICAgICAgICAgVU5VU0VEX1BBUkFNKGNvbnRh
aW5zVHlwZSk7CiAgICAgICAgIGlmICghdHlwZS5jb250YWluc09ubHlBU0NJSSgpKQogICAgICAg
ICAgICAgcmV0dXJuIHRocm93RXJyb3IodjhTeW50YXhFcnJvciwgInR5cGUgbXVzdCBjb25zaXN0
IG9mIEFTQ0lJIGNoYXJhY3RlcnMiLCBhcmdzLkdldElzb2xhdGUoKSk7CkBAIC05MCw3ICs5MCw3
IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOEJsb2I6OmNvbnN0cnVjdG9yQ2FsbGJhY2tDdXN0
b20oY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJnCiAKICAgICBCbG9iQnVpbGRlciBibG9iQnVpbGRl
cjsKIAotICAgIEVYQ0VQVElPTl9CTE9DSyh2ODo6TG9jYWw8djg6OkFycmF5PiwgYmxvYlBhcnRz
LCB2ODo6TG9jYWw8djg6OkFycmF5Pjo6Q2FzdChmaXJzdEFyZykpOworICAgIFRSWUNBVENIKHY4
OjpMb2NhbDx2ODo6QXJyYXk+LCBibG9iUGFydHMsIHY4OjpMb2NhbDx2ODo6QXJyYXk+OjpDYXN0
KGZpcnN0QXJnKSk7CiAgICAgdWludDMyX3QgbGVuZ3RoID0gYmxvYlBhcnRzLT5MZW5ndGgoKTsK
IAogICAgIGZvciAodWludDMyX3QgaSA9IDA7IGkgPCBsZW5ndGg7ICsraSkgewpAQCAtMTEyLDcg
KzExMiw3IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOEJsb2I6OmNvbnN0cnVjdG9yQ2FsbGJh
Y2tDdXN0b20oY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJnCiAgICAgICAgICAgICBBU1NFUlQoYmxv
Yik7CiAgICAgICAgICAgICBibG9iQnVpbGRlci5hcHBlbmQoYmxvYik7CiAgICAgICAgIH0gZWxz
ZSB7Ci0gICAgICAgICAgICBFWENFUFRJT05fQkxPQ0soU3RyaW5nLCBzdHJpbmdWYWx1ZSwgdG9X
ZWJDb3JlU3RyaW5nKGl0ZW0pKTsKKyAgICAgICAgICAgIFRSWUNBVENIKFN0cmluZywgc3RyaW5n
VmFsdWUsIHRvV2ViQ29yZVN0cmluZyhpdGVtKSk7CiAgICAgICAgICAgICBibG9iQnVpbGRlci5h
cHBlbmQoc3RyaW5nVmFsdWUsIGVuZGluZ3MpOwogICAgICAgICB9CiAgICAgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4Q29uc29sZUN1c3RvbS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhDb25zb2xlQ3VzdG9tLmNwcApp
bmRleCAzMjEwZWM2Nzc0MzJkYTAwNzkyNzQxY2E5N2RkNmMwMGUyMDhjZjRiLi5mZWM2NzcyY2My
OTU2MTBjYTFjYTMxN2U5ODkyYzg0YjIzZDc1NzkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy92OC9jdXN0b20vVjhDb25zb2xlQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhDb25zb2xlQ3VzdG9tLmNwcApAQCAtNjQsNyArNjQs
NyBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhDb25zb2xlOjpwcm9maWxlQ2FsbGJhY2soY29u
c3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKIHsKICAgICBJTkNfU1RBVFMoIkRPTS5Db25zb2xlLnBy
b2ZpbGUiKTsKICAgICBDb25zb2xlKiBpbXAgPSBWOENvbnNvbGU6OnRvTmF0aXZlKGFyZ3MuSG9s
ZGVyKCkpOwotICAgIFNUUklOR19UT19WOFBBUkFNRVRFUl9FWENFUFRJT05fQkxPQ0soVjhTdHJp
bmdSZXNvdXJjZTxXaXRoVW5kZWZpbmVkT3JOdWxsQ2hlY2s+LCB0aXRsZSwgYXJnc1swXSk7Cisg
ICAgVFJZQ0FUQ0hfRk9SX1Y4U1RSSU5HUkVTT1VSQ0UoVjhTdHJpbmdSZXNvdXJjZTxXaXRoVW5k
ZWZpbmVkT3JOdWxsQ2hlY2s+LCB0aXRsZSwgYXJnc1swXSk7CiAgICAgaW1wLT5wcm9maWxlKHRp
dGxlLCBTY3JpcHRTdGF0ZTo6Y3VycmVudCgpKTsKICAgICByZXR1cm4gdjhVbmRlZmluZWQoKTsK
IH0KQEAgLTczLDcgKzczLDcgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4Q29uc29sZTo6cHJv
ZmlsZUVuZENhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB7CiAgICAgSU5DX1NU
QVRTKCJET00uQ29uc29sZS5wcm9maWxlRW5kIik7CiAgICAgQ29uc29sZSogaW1wID0gVjhDb25z
b2xlOjp0b05hdGl2ZShhcmdzLkhvbGRlcigpKTsKLSAgICBTVFJJTkdfVE9fVjhQQVJBTUVURVJf
RVhDRVBUSU9OX0JMT0NLKFY4U3RyaW5nUmVzb3VyY2U8V2l0aFVuZGVmaW5lZE9yTnVsbENoZWNr
PiwgdGl0bGUsIGFyZ3NbMF0pOworICAgIFRSWUNBVENIX0ZPUl9WOFNUUklOR1JFU09VUkNFKFY4
U3RyaW5nUmVzb3VyY2U8V2l0aFVuZGVmaW5lZE9yTnVsbENoZWNrPiwgdGl0bGUsIGFyZ3NbMF0p
OwogICAgIGltcC0+cHJvZmlsZUVuZCh0aXRsZSwgU2NyaXB0U3RhdGU6OmN1cnJlbnQoKSk7CiAg
ICAgcmV0dXJuIHY4VW5kZWZpbmVkKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy92OC9jdXN0b20vVjhET01XaW5kb3dDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvdjgvY3VzdG9tL1Y4RE9NV2luZG93Q3VzdG9tLmNwcAppbmRleCA2NWM2MzZiZWI5
ZGRlMjhmOTA2ZDBkZDVjN2IzOTI3OTQzNGM3Zjg0Li4zNWM4ODg1NTczMmE3OGYxZmIzYWU5YWQ3
MDkxZGZiZjI2NjcyMmRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9j
dXN0b20vVjhET01XaW5kb3dDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3Y4L2N1c3RvbS9WOERPTVdpbmRvd0N1c3RvbS5jcHAKQEAgLTMyNCw3ICszMjQsNyBAQCBzdGF0
aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGhhbmRsZVBvc3RNZXNzYWdlQ2FsbGJhY2soY29uc3Qg
djg6OkFyZ3VtZW50cyYgYXJncwogICAgICAgICBpZiAoIWV4dHJhY3RUcmFuc2ZlcmFibGVzKGFy
Z3NbdHJhbnNmZXJhYmxlc0FyZ0luZGV4XSwgcG9ydEFycmF5LCBhcnJheUJ1ZmZlckFycmF5LCBh
cmdzLkdldElzb2xhdGUoKSkpCiAgICAgICAgICAgICByZXR1cm4gdjg6OlVuZGVmaW5lZCgpOwog
ICAgIH0KLSAgICBTVFJJTkdfVE9fVjhQQVJBTUVURVJfRVhDRVBUSU9OX0JMT0NLKFY4U3RyaW5n
UmVzb3VyY2U8V2l0aFVuZGVmaW5lZE9yTnVsbENoZWNrPiwgdGFyZ2V0T3JpZ2luLCBhcmdzW3Rh
cmdldE9yaWdpbkFyZ0luZGV4XSk7CisgICAgVFJZQ0FUQ0hfRk9SX1Y4U1RSSU5HUkVTT1VSQ0Uo
VjhTdHJpbmdSZXNvdXJjZTxXaXRoVW5kZWZpbmVkT3JOdWxsQ2hlY2s+LCB0YXJnZXRPcmlnaW4s
IGFyZ3NbdGFyZ2V0T3JpZ2luQXJnSW5kZXhdKTsKIAogICAgIGJvb2wgZGlkVGhyb3cgPSBmYWxz
ZTsKICAgICBSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBtZXNzYWdlID0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOERhdGFWaWV3Q3VzdG9tLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOERhdGFWaWV3Q3VzdG9tLmNw
cAppbmRleCA5ZjQ1YjI2YjExZGNhY2QzNjQxODY2ZDM0NTRkNDQzOTdkZGY1MzNmLi4zZGUyOWJl
OGNjZWUwNmNjMDlkOTNiMjA1MzBkZDhhNGY1NjVlMjFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhEYXRhVmlld0N1c3RvbS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4RGF0YVZpZXdDdXN0b20uY3BwCkBAIC02Miw3
ICs2Miw3IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOERhdGFWaWV3OjpnZXRJbnQ4Q2FsbGJh
Y2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKIAogICAgIERhdGFWaWV3KiBpbXAgPSBWOERh
dGFWaWV3Ojp0b05hdGl2ZShhcmdzLkhvbGRlcigpKTsKICAgICBFeGNlcHRpb25Db2RlIGVjID0g
MDsKLSAgICBFWENFUFRJT05fQkxPQ0sodW5zaWduZWQsIGJ5dGVPZmZzZXQsIHRvVUludDMyKGFy
Z3NbMF0pKTsKKyAgICBUUllDQVRDSCh1bnNpZ25lZCwgYnl0ZU9mZnNldCwgdG9VSW50MzIoYXJn
c1swXSkpOwogICAgIGludDhfdCByZXN1bHQgPSBpbXAtPmdldEludDgoYnl0ZU9mZnNldCwgZWMp
OwogICAgIGlmIChVTkxJS0VMWShlYykpCiAgICAgICAgIHJldHVybiBzZXRET01FeGNlcHRpb24o
ZWMsIGFyZ3MuR2V0SXNvbGF0ZSgpKTsKQEAgLTc3LDcgKzc3LDcgQEAgdjg6OkhhbmRsZTx2ODo6
VmFsdWU+IFY4RGF0YVZpZXc6OmdldFVpbnQ4Q2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYg
YXJncykKIAogICAgIERhdGFWaWV3KiBpbXAgPSBWOERhdGFWaWV3Ojp0b05hdGl2ZShhcmdzLkhv
bGRlcigpKTsKICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBFWENFUFRJT05fQkxPQ0so
dW5zaWduZWQsIGJ5dGVPZmZzZXQsIHRvVUludDMyKGFyZ3NbMF0pKTsKKyAgICBUUllDQVRDSCh1
bnNpZ25lZCwgYnl0ZU9mZnNldCwgdG9VSW50MzIoYXJnc1swXSkpOwogICAgIHVpbnQ4X3QgcmVz
dWx0ID0gaW1wLT5nZXRVaW50OChieXRlT2Zmc2V0LCBlYyk7CiAgICAgaWYgKFVOTElLRUxZKGVj
KSkKICAgICAgICAgcmV0dXJuIHNldERPTUV4Y2VwdGlvbihlYywgYXJncy5HZXRJc29sYXRlKCkp
OwpAQCAtOTIsOCArOTIsOCBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhEYXRhVmlldzo6c2V0
SW50OENhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiAKICAgICBEYXRhVmlldyog
aW1wID0gVjhEYXRhVmlldzo6dG9OYXRpdmUoYXJncy5Ib2xkZXIoKSk7CiAgICAgRXhjZXB0aW9u
Q29kZSBlYyA9IDA7Ci0gICAgRVhDRVBUSU9OX0JMT0NLKHVuc2lnbmVkLCBieXRlT2Zmc2V0LCB0
b1VJbnQzMihhcmdzWzBdKSk7Ci0gICAgRVhDRVBUSU9OX0JMT0NLKGludCwgdmFsdWUsIHRvSW50
MzIoYXJnc1sxXSkpOworICAgIFRSWUNBVENIKHVuc2lnbmVkLCBieXRlT2Zmc2V0LCB0b1VJbnQz
MihhcmdzWzBdKSk7CisgICAgVFJZQ0FUQ0goaW50LCB2YWx1ZSwgdG9JbnQzMihhcmdzWzFdKSk7
CiAgICAgaW1wLT5zZXRJbnQ4KGJ5dGVPZmZzZXQsIHN0YXRpY19jYXN0PGludDhfdD4odmFsdWUp
LCBlYyk7CiAgICAgaWYgKFVOTElLRUxZKGVjKSkKICAgICAgICAgcmV0dXJuIHNldERPTUV4Y2Vw
dGlvbihlYywgYXJncy5HZXRJc29sYXRlKCkpOwpAQCAtMTA4LDggKzEwOCw4IEBAIHY4OjpIYW5k
bGU8djg6OlZhbHVlPiBWOERhdGFWaWV3OjpzZXRVaW50OENhbGxiYWNrKGNvbnN0IHY4OjpBcmd1
bWVudHMmIGFyZ3MpCiAKICAgICBEYXRhVmlldyogaW1wID0gVjhEYXRhVmlldzo6dG9OYXRpdmUo
YXJncy5Ib2xkZXIoKSk7CiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgRVhDRVBUSU9O
X0JMT0NLKHVuc2lnbmVkLCBieXRlT2Zmc2V0LCB0b1VJbnQzMihhcmdzWzBdKSk7Ci0gICAgRVhD
RVBUSU9OX0JMT0NLKGludCwgdmFsdWUsIHRvSW50MzIoYXJnc1sxXSkpOworICAgIFRSWUNBVENI
KHVuc2lnbmVkLCBieXRlT2Zmc2V0LCB0b1VJbnQzMihhcmdzWzBdKSk7CisgICAgVFJZQ0FUQ0go
aW50LCB2YWx1ZSwgdG9JbnQzMihhcmdzWzFdKSk7CiAgICAgaW1wLT5zZXRVaW50OChieXRlT2Zm
c2V0LCBzdGF0aWNfY2FzdDx1aW50OF90Pih2YWx1ZSksIGVjKTsKICAgICBpZiAoVU5MSUtFTFko
ZWMpKQogICAgICAgICByZXR1cm4gc2V0RE9NRXhjZXB0aW9uKGVjLCBhcmdzLkdldElzb2xhdGUo
KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhEZXZp
Y2VNb3Rpb25FdmVudEN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0
b20vVjhEZXZpY2VNb3Rpb25FdmVudEN1c3RvbS5jcHAKaW5kZXggYjJjNDgzYmJkNjYzMzJkOTA5
MWE0OTMzMjRlMzE2MTg0YzYxY2Q0My4uMGZiYTA3M2NjYWExZTg0NThmNjQ5OGE1MzY2OTJjMWFj
MTE2MjZlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4
RGV2aWNlTW90aW9uRXZlbnRDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3Y4L2N1c3RvbS9WOERldmljZU1vdGlvbkV2ZW50Q3VzdG9tLmNwcApAQCAtMTY0LDcgKzE2NCw3
IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOERldmljZU1vdGlvbkV2ZW50OjppbnRlcnZhbEFj
Y2Vzc29yR2V0dGVyKHY4OjpMb2NhbDx2ODo6CiB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhEZXZp
Y2VNb3Rpb25FdmVudDo6aW5pdERldmljZU1vdGlvbkV2ZW50Q2FsbGJhY2soY29uc3Qgdjg6OkFy
Z3VtZW50cyYgYXJncykKIHsKICAgICBEZXZpY2VNb3Rpb25FdmVudCogaW1wID0gVjhEZXZpY2VN
b3Rpb25FdmVudDo6dG9OYXRpdmUoYXJncy5Ib2xkZXIoKSk7Ci0gICAgU1RSSU5HX1RPX1Y4UEFS
QU1FVEVSX0VYQ0VQVElPTl9CTE9DSyhWOFN0cmluZ1Jlc291cmNlPD4sIHR5cGUsIGFyZ3NbMF0p
OworICAgIFRSWUNBVENIX0ZPUl9WOFNUUklOR1JFU09VUkNFKFY4U3RyaW5nUmVzb3VyY2U8Piwg
dHlwZSwgYXJnc1swXSk7CiAgICAgYm9vbCBidWJibGVzID0gYXJnc1sxXS0+Qm9vbGVhblZhbHVl
KCk7CiAgICAgYm9vbCBjYW5jZWxhYmxlID0gYXJnc1syXS0+Qm9vbGVhblZhbHVlKCk7CiAgICAg
UmVmUHRyPERldmljZU1vdGlvbkRhdGE6OkFjY2VsZXJhdGlvbj4gYWNjZWxlcmF0aW9uID0gcmVh
ZEFjY2VsZXJhdGlvbkFyZ3VtZW50KGFyZ3NbM10pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4RGV2aWNlT3JpZW50YXRpb25FdmVudEN1c3RvbS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhEZXZpY2VPcmllbnRhdGlvbkV2
ZW50Q3VzdG9tLmNwcAppbmRleCAwZmY2ZjdjZmI4MTY4MWEwNDE1MjM5OGNkYzk1NmI4NDhkZTVm
MzJkLi5kYzFmOTQ0NDA0Njg3NWE3YzQ0MGFjZmJlZGRhOWFjODg0MjIxOGQ1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhEZXZpY2VPcmllbnRhdGlvbkV2
ZW50Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhE
ZXZpY2VPcmllbnRhdGlvbkV2ZW50Q3VzdG9tLmNwcApAQCAtNzgsNyArNzgsNyBAQCB2ODo6SGFu
ZGxlPHY4OjpWYWx1ZT4gVjhEZXZpY2VPcmllbnRhdGlvbkV2ZW50OjphYnNvbHV0ZUFjY2Vzc29y
R2V0dGVyKHY4OjpMb2NhbAogdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4RGV2aWNlT3JpZW50YXRp
b25FdmVudDo6aW5pdERldmljZU9yaWVudGF0aW9uRXZlbnRDYWxsYmFjayhjb25zdCB2ODo6QXJn
dW1lbnRzJiBhcmdzKQogewogICAgIERldmljZU9yaWVudGF0aW9uRXZlbnQqIGltcCA9IFY4RGV2
aWNlT3JpZW50YXRpb25FdmVudDo6dG9OYXRpdmUoYXJncy5Ib2xkZXIoKSk7Ci0gICAgU1RSSU5H
X1RPX1Y4UEFSQU1FVEVSX0VYQ0VQVElPTl9CTE9DSyhWOFN0cmluZ1Jlc291cmNlPD4sIHR5cGUs
IGFyZ3NbMF0pOworICAgIFRSWUNBVENIX0ZPUl9WOFNUUklOR1JFU09VUkNFKFY4U3RyaW5nUmVz
b3VyY2U8PiwgdHlwZSwgYXJnc1swXSk7CiAgICAgYm9vbCBidWJibGVzID0gYXJnc1sxXS0+Qm9v
bGVhblZhbHVlKCk7CiAgICAgYm9vbCBjYW5jZWxhYmxlID0gYXJnc1syXS0+Qm9vbGVhblZhbHVl
KCk7CiAgICAgLy8gSWYgYWxwaGEsIGJldGEsIGdhbW1hIG9yIGFic29sdXRlIGFyZSBudWxsIG9y
IHVuZGVmaW5lZCwgbWFyayB0aGVtIGFzIG5vdCBwcm92aWRlZC4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOERvY3VtZW50Q3VzdG9tLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOERvY3VtZW50Q3VzdG9tLmNwcAppbmRleCAy
MTI1ODJjNWZlYzliODRkN2VlMzQ3NTY1ODMyMzhiYzhkMDhmZTljLi4wNzhlNWJhNzViZWI0YWVl
YjMxZmNmMTM3YjAxMmIyNGE5ZDFlOTVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy92OC9jdXN0b20vVjhEb2N1bWVudEN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvdjgvY3VzdG9tL1Y4RG9jdW1lbnRDdXN0b20uY3BwCkBAIC04NCw3ICs4NCw3IEBA
IHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOERvY3VtZW50OjpldmFsdWF0ZUNhbGxiYWNrKGNvbnN0
IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiAgICAgaWYgKFY4WFBhdGhSZXN1bHQ6Okhhc0luc3RhbmNl
KGFyZ3NbNF0pKQogICAgICAgICBpblJlc3VsdCA9IFY4WFBhdGhSZXN1bHQ6OnRvTmF0aXZlKHY4
OjpIYW5kbGU8djg6Ok9iamVjdD46OkNhc3QoYXJnc1s0XSkpOwogCi0gICAgRVhDRVBUSU9OX0JM
T0NLKFJlZlB0cjxYUGF0aFJlc3VsdD4sIHJlc3VsdCwgZG9jdW1lbnQtPmV2YWx1YXRlKGV4cHJl
c3Npb24sIGNvbnRleHROb2RlLmdldCgpLCByZXNvbHZlci5nZXQoKSwgdHlwZSwgaW5SZXN1bHQu
Z2V0KCksIGVjKSk7CisgICAgVFJZQ0FUQ0goUmVmUHRyPFhQYXRoUmVzdWx0PiwgcmVzdWx0LCBk
b2N1bWVudC0+ZXZhbHVhdGUoZXhwcmVzc2lvbiwgY29udGV4dE5vZGUuZ2V0KCksIHJlc29sdmVy
LmdldCgpLCB0eXBlLCBpblJlc3VsdC5nZXQoKSwgZWMpKTsKICAgICBpZiAoZWMpCiAgICAgICAg
IHJldHVybiBzZXRET01FeGNlcHRpb24oZWMsIGFyZ3MuR2V0SXNvbGF0ZSgpKTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTE9wdGlvbnNDb2xs
ZWN0aW9uQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEhU
TUxPcHRpb25zQ29sbGVjdGlvbkN1c3RvbS5jcHAKaW5kZXggNTQ0MWZmNmU0Mjk0Mjk4YzEzMzlk
YjAzYzM1YmExYmRjMzU3NjM2My4uNDkwMTljZjU1NzQ2NzBhMTEwMjRjNzFiNjY3ZGNlOTY2MjA2
NTZlNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRN
TE9wdGlvbnNDb2xsZWN0aW9uQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy92OC9jdXN0b20vVjhIVE1MT3B0aW9uc0NvbGxlY3Rpb25DdXN0b20uY3BwCkBAIC0xMDUsNyAr
MTA1LDcgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4SFRNTE9wdGlvbnNDb2xsZWN0aW9uOjph
ZGRDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJgogICAgICAgICBpbXAtPmFkZChvcHRpb24s
IGVjKTsKICAgICBlbHNlIHsKICAgICAgICAgYm9vbCBvazsKLSAgICAgICAgRVhDRVBUSU9OX0JM
T0NLKGludCwgaW5kZXgsIHRvSW50MzIoYXJnc1sxXSwgb2spKTsKKyAgICAgICAgVFJZQ0FUQ0go
aW50LCBpbmRleCwgdG9JbnQzMihhcmdzWzFdLCBvaykpOwogICAgICAgICBpZiAoIW9rKQogICAg
ICAgICAgICAgZWMgPSBUWVBFX01JU01BVENIX0VSUjsKICAgICAgICAgZWxzZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SGlzdG9yeUN1c3RvbS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhIaXN0b3J5Q3VzdG9tLmNwcApp
bmRleCBlYThhNzYxODBmNDRhNWZlNzYyMWYzNTMxNDQyNGFhMTMyNGQxNTZlLi4xZWJjMzBmOGFj
MGY5OTZjMGQ5MWU2MmI5MmIzNDc1OGQ3MzI3Y2IzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy92OC9jdXN0b20vVjhIaXN0b3J5Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhIaXN0b3J5Q3VzdG9tLmNwcApAQCAtNjUsOCArNjUs
OCBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhIaXN0b3J5OjpwdXNoU3RhdGVDYWxsYmFjayhj
b25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogICAgIGlmIChkaWRUaHJvdykKICAgICAgICAgcmV0
dXJuIHY4OjpVbmRlZmluZWQoKTsKIAotICAgIFNUUklOR19UT19WOFBBUkFNRVRFUl9FWENFUFRJ
T05fQkxPQ0soVjhTdHJpbmdSZXNvdXJjZTxXaXRoVW5kZWZpbmVkT3JOdWxsQ2hlY2s+LCB0aXRs
ZSwgYXJnc1sxXSk7Ci0gICAgU1RSSU5HX1RPX1Y4UEFSQU1FVEVSX0VYQ0VQVElPTl9CTE9DSyhW
OFN0cmluZ1Jlc291cmNlPFdpdGhVbmRlZmluZWRPck51bGxDaGVjaz4sIHVybCwgTUFZQkVfTUlT
U0lOR19QQVJBTUVURVIoYXJncywgMiwgRGVmYXVsdElzTnVsbFN0cmluZykpOworICAgIFRSWUNB
VENIX0ZPUl9WOFNUUklOR1JFU09VUkNFKFY4U3RyaW5nUmVzb3VyY2U8V2l0aFVuZGVmaW5lZE9y
TnVsbENoZWNrPiwgdGl0bGUsIGFyZ3NbMV0pOworICAgIFRSWUNBVENIX0ZPUl9WOFNUUklOR1JF
U09VUkNFKFY4U3RyaW5nUmVzb3VyY2U8V2l0aFVuZGVmaW5lZE9yTnVsbENoZWNrPiwgdXJsLCBN
QVlCRV9NSVNTSU5HX1BBUkFNRVRFUihhcmdzLCAyLCBEZWZhdWx0SXNOdWxsU3RyaW5nKSk7CiAK
ICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKICAgICBIaXN0b3J5KiBoaXN0b3J5ID0gVjhIaXN0
b3J5Ojp0b05hdGl2ZShhcmdzLkhvbGRlcigpKTsKQEAgLTgyLDggKzgyLDggQEAgdjg6OkhhbmRs
ZTx2ODo6VmFsdWU+IFY4SGlzdG9yeTo6cmVwbGFjZVN0YXRlQ2FsbGJhY2soY29uc3Qgdjg6OkFy
Z3VtZW50cyYgYXJncykKICAgICBpZiAoZGlkVGhyb3cpCiAgICAgICAgIHJldHVybiB2ODo6VW5k
ZWZpbmVkKCk7CiAKLSAgICBTVFJJTkdfVE9fVjhQQVJBTUVURVJfRVhDRVBUSU9OX0JMT0NLKFY4
U3RyaW5nUmVzb3VyY2U8V2l0aFVuZGVmaW5lZE9yTnVsbENoZWNrPiwgdGl0bGUsIGFyZ3NbMV0p
OwotICAgIFNUUklOR19UT19WOFBBUkFNRVRFUl9FWENFUFRJT05fQkxPQ0soVjhTdHJpbmdSZXNv
dXJjZTxXaXRoVW5kZWZpbmVkT3JOdWxsQ2hlY2s+LCB1cmwsIE1BWUJFX01JU1NJTkdfUEFSQU1F
VEVSKGFyZ3MsIDIsIERlZmF1bHRJc051bGxTdHJpbmcpKTsKKyAgICBUUllDQVRDSF9GT1JfVjhT
VFJJTkdSRVNPVVJDRShWOFN0cmluZ1Jlc291cmNlPFdpdGhVbmRlZmluZWRPck51bGxDaGVjaz4s
IHRpdGxlLCBhcmdzWzFdKTsKKyAgICBUUllDQVRDSF9GT1JfVjhTVFJJTkdSRVNPVVJDRShWOFN0
cmluZ1Jlc291cmNlPFdpdGhVbmRlZmluZWRPck51bGxDaGVjaz4sIHVybCwgTUFZQkVfTUlTU0lO
R19QQVJBTUVURVIoYXJncywgMiwgRGVmYXVsdElzTnVsbFN0cmluZykpOwogCiAgICAgRXhjZXB0
aW9uQ29kZSBlYyA9IDA7CiAgICAgSGlzdG9yeSogaGlzdG9yeSA9IFY4SGlzdG9yeTo6dG9OYXRp
dmUoYXJncy5Ib2xkZXIoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92
OC9jdXN0b20vVjhJbnRlbnRDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvdjgv
Y3VzdG9tL1Y4SW50ZW50Q3VzdG9tLmNwcAppbmRleCBiMzhlYTAxOTQ3ZWQ2ODU1MmM3MGQ2NGU0
NTU3NDMxYjVmYTdlYzA0Li45YWNiZjZmOWRmNTA2ZWVhN2ViNTUwMDdkNDkxYWJiNmUxNWJiZTQ1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhJbnRlbnRD
dXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEludGVu
dEN1c3RvbS5jcHAKQEAgLTQ4LDcgKzQ4LDcgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4SW50
ZW50Ojpjb25zdHJ1Y3RvckNhbGxiYWNrQ3VzdG9tKGNvbnN0IHY4OjpBcmd1bWVudHMmIGEKICAg
ICBpZiAoYXJncy5MZW5ndGgoKSA9PSAxKSB7CiAgICAgICAgIC8vIFVzZSB0aGUgZGljdGlvbmFy
eSBjb25zdHJ1Y3Rvci4gVGhpcyBibG9jayB3aWxsIHJldHVybiBpZiB0aGUKICAgICAgICAgLy8g
YXJndW1lbnQgaXNuJ3QgYSB2YWxpZCBEaWN0aW9uYXJ5LgotICAgICAgICBFWENFUFRJT05fQkxP
Q0soRGljdGlvbmFyeSwgb3B0aW9ucywgRGljdGlvbmFyeShhcmdzWzBdLCBhcmdzLkdldElzb2xh
dGUoKSkpOworICAgICAgICBUUllDQVRDSChEaWN0aW9uYXJ5LCBvcHRpb25zLCBEaWN0aW9uYXJ5
KGFyZ3NbMF0sIGFyZ3MuR2V0SXNvbGF0ZSgpKSk7CiAgICAgICAgIEV4Y2VwdGlvbkNvZGUgZWMg
PSAwOwogICAgICAgICBSZWZQdHI8SW50ZW50PiBpbXBsID0gSW50ZW50OjpjcmVhdGUoU2NyaXB0
U3RhdGU6OmN1cnJlbnQoKSwgb3B0aW9ucywgZWMpOwogICAgICAgICBpZiAoZWMpCkBAIC02MCw4
ICs2MCw4IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOEludGVudDo6Y29uc3RydWN0b3JDYWxs
YmFja0N1c3RvbShjb25zdCB2ODo6QXJndW1lbnRzJiBhCiAgICAgfQogCiAgICAgRXhjZXB0aW9u
Q29kZSBlYyA9IDA7Ci0gICAgU1RSSU5HX1RPX1Y4UEFSQU1FVEVSX0VYQ0VQVElPTl9CTE9DSyhW
OFN0cmluZ1Jlc291cmNlPD4sIGFjdGlvbiwgTUFZQkVfTUlTU0lOR19QQVJBTUVURVIoYXJncywg
MCwgRGVmYXVsdElzVW5kZWZpbmVkKSk7Ci0gICAgU1RSSU5HX1RPX1Y4UEFSQU1FVEVSX0VYQ0VQ
VElPTl9CTE9DSyhWOFN0cmluZ1Jlc291cmNlPD4sIHR5cGUsIE1BWUJFX01JU1NJTkdfUEFSQU1F
VEVSKGFyZ3MsIDEsIERlZmF1bHRJc1VuZGVmaW5lZCkpOworICAgIFRSWUNBVENIX0ZPUl9WOFNU
UklOR1JFU09VUkNFKFY4U3RyaW5nUmVzb3VyY2U8PiwgYWN0aW9uLCBNQVlCRV9NSVNTSU5HX1BB
UkFNRVRFUihhcmdzLCAwLCBEZWZhdWx0SXNVbmRlZmluZWQpKTsKKyAgICBUUllDQVRDSF9GT1Jf
VjhTVFJJTkdSRVNPVVJDRShWOFN0cmluZ1Jlc291cmNlPD4sIHR5cGUsIE1BWUJFX01JU1NJTkdf
UEFSQU1FVEVSKGFyZ3MsIDEsIERlZmF1bHRJc1VuZGVmaW5lZCkpOwogICAgIE1lc3NhZ2VQb3J0
QXJyYXkgbWVzc2FnZVBvcnRBcnJheVRyYW5zZmVyTGlzdDsKICAgICBBcnJheUJ1ZmZlckFycmF5
IGFycmF5QnVmZmVyQXJyYXlUcmFuc2Zlckxpc3Q7CiAgICAgaWYgKGFyZ3MuTGVuZ3RoKCkgPiAz
KSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhTUUxU
cmFuc2FjdGlvbkN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20v
VjhTUUxUcmFuc2FjdGlvbkN1c3RvbS5jcHAKaW5kZXggNGNhNjYwYTQwMDk4ZmM4N2EzNzM4ODli
NzQyODEzMWI5MTc2NmE0Yy4uNjRjYmYwNDhlZThiNDc0ZWExMTVmMmMxOGMxNjg5MDZiOTJhNDhk
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4U1FMVHJh
bnNhY3Rpb25DdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3Rv
bS9WOFNRTFRyYW5zYWN0aW9uQ3VzdG9tLmNwcApAQCAtNTMsNyArNTMsNyBAQCB2ODo6SGFuZGxl
PHY4OjpWYWx1ZT4gVjhTUUxUcmFuc2FjdGlvbjo6ZXhlY3V0ZVNxbENhbGxiYWNrKGNvbnN0IHY4
OjpBcmd1bWVudHMmCiAgICAgaWYgKGFyZ3MuTGVuZ3RoKCkgPT0gMCkKICAgICAgICAgcmV0dXJu
IHNldERPTUV4Y2VwdGlvbihTWU5UQVhfRVJSLCBhcmdzLkdldElzb2xhdGUoKSk7CiAKLSAgICBT
VFJJTkdfVE9fVjhQQVJBTUVURVJfRVhDRVBUSU9OX0JMT0NLKFY4U3RyaW5nUmVzb3VyY2U8Piwg
c3RhdGVtZW50LCBhcmdzWzBdKTsKKyAgICBUUllDQVRDSF9GT1JfVjhTVFJJTkdSRVNPVVJDRShW
OFN0cmluZ1Jlc291cmNlPD4sIHN0YXRlbWVudCwgYXJnc1swXSk7CiAKICAgICBWZWN0b3I8U1FM
VmFsdWU+IHNxbFZhbHVlczsKIApAQCAtNjMsNyArNjMsNyBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1
ZT4gVjhTUUxUcmFuc2FjdGlvbjo6ZXhlY3V0ZVNxbENhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVu
dHMmCiAKICAgICAgICAgdWludDMyX3Qgc3FsQXJnc0xlbmd0aCA9IDA7CiAgICAgICAgIHY4OjpM
b2NhbDx2ODo6T2JqZWN0PiBzcWxBcmdzT2JqZWN0ID0gYXJnc1sxXS0+VG9PYmplY3QoKTsKLSAg
ICAgICAgRVhDRVBUSU9OX0JMT0NLKHY4OjpMb2NhbDx2ODo6VmFsdWU+LCBsZW5ndGgsIHNxbEFy
Z3NPYmplY3QtPkdldCh2ODo6U3RyaW5nOjpOZXcoImxlbmd0aCIpKSk7CisgICAgICAgIFRSWUNB
VENIKHY4OjpMb2NhbDx2ODo6VmFsdWU+LCBsZW5ndGgsIHNxbEFyZ3NPYmplY3QtPkdldCh2ODo6
U3RyaW5nOjpOZXcoImxlbmd0aCIpKSk7CiAKICAgICAgICAgaWYgKGlzVW5kZWZpbmVkT3JOdWxs
KGxlbmd0aCkpCiAgICAgICAgICAgICBzcWxBcmdzTGVuZ3RoID0gc3FsQXJnc09iamVjdC0+R2V0
UHJvcGVydHlOYW1lcygpLT5MZW5ndGgoKTsKQEAgLTcyLDE1ICs3MiwxNSBAQCB2ODo6SGFuZGxl
PHY4OjpWYWx1ZT4gVjhTUUxUcmFuc2FjdGlvbjo6ZXhlY3V0ZVNxbENhbGxiYWNrKGNvbnN0IHY4
OjpBcmd1bWVudHMmCiAKICAgICAgICAgZm9yICh1bnNpZ25lZCBpbnQgaSA9IDA7IGkgPCBzcWxB
cmdzTGVuZ3RoOyArK2kpIHsKICAgICAgICAgICAgIHY4OjpIYW5kbGU8djg6OkludGVnZXI+IGtl
eSA9IHY4SW50ZWdlcihpLCBhcmdzLkdldElzb2xhdGUoKSk7Ci0gICAgICAgICAgICBFWENFUFRJ
T05fQkxPQ0sodjg6OkxvY2FsPHY4OjpWYWx1ZT4sIHZhbHVlLCBzcWxBcmdzT2JqZWN0LT5HZXQo
a2V5KSk7CisgICAgICAgICAgICBUUllDQVRDSCh2ODo6TG9jYWw8djg6OlZhbHVlPiwgdmFsdWUs
IHNxbEFyZ3NPYmplY3QtPkdldChrZXkpKTsKIAogICAgICAgICAgICAgaWYgKHZhbHVlLklzRW1w
dHkoKSB8fCB2YWx1ZS0+SXNOdWxsKCkpCiAgICAgICAgICAgICAgICAgc3FsVmFsdWVzLmFwcGVu
ZChTUUxWYWx1ZSgpKTsKICAgICAgICAgICAgIGVsc2UgaWYgKHZhbHVlLT5Jc051bWJlcigpKSB7
Ci0gICAgICAgICAgICAgICAgRVhDRVBUSU9OX0JMT0NLKGRvdWJsZSwgc3FsVmFsdWUsIHZhbHVl
LT5OdW1iZXJWYWx1ZSgpKTsKKyAgICAgICAgICAgICAgICBUUllDQVRDSChkb3VibGUsIHNxbFZh
bHVlLCB2YWx1ZS0+TnVtYmVyVmFsdWUoKSk7CiAgICAgICAgICAgICAgICAgc3FsVmFsdWVzLmFw
cGVuZChTUUxWYWx1ZShzcWxWYWx1ZSkpOwogICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAg
ICAgICAgICBTVFJJTkdfVE9fVjhQQVJBTUVURVJfRVhDRVBUSU9OX0JMT0NLKFY4U3RyaW5nUmVz
b3VyY2U8Piwgc3FsVmFsdWUsIHZhbHVlKTsKKyAgICAgICAgICAgICAgICBUUllDQVRDSF9GT1Jf
VjhTVFJJTkdSRVNPVVJDRShWOFN0cmluZ1Jlc291cmNlPD4sIHNxbFZhbHVlLCB2YWx1ZSk7CiAg
ICAgICAgICAgICAgICAgc3FsVmFsdWVzLmFwcGVuZChTUUxWYWx1ZShzcWxWYWx1ZSkpOwogICAg
ICAgICAgICAgfQogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy92OC9jdXN0b20vVjhTUUxUcmFuc2FjdGlvblN5bmNDdXN0b20uY3BwIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4U1FMVHJhbnNhY3Rpb25TeW5jQ3VzdG9tLmNwcAppbmRl
eCBiYjJmODFmZTJiZDZkMDYzMjI1NjZmYTgxMDM3ZjcyYzM4YjdmZTYzLi5kNzlhNDY3MGE4NTYx
MGY2NDFjOTk5ZjZiOGU2N2ZlYWFiZGU5ZTk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy92OC9jdXN0b20vVjhTUUxUcmFuc2FjdGlvblN5bmNDdXN0b20uY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFNRTFRyYW5zYWN0aW9uU3luY0N1c3Rv
bS5jcHAKQEAgLTUzLDcgKzUzLDcgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4U1FMVHJhbnNh
Y3Rpb25TeW5jOjpleGVjdXRlU3FsQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW4KICAgICBpZiAo
IWFyZ3MuTGVuZ3RoKCkpCiAgICAgICAgIHJldHVybiBzZXRET01FeGNlcHRpb24oU1lOVEFYX0VS
UiwgYXJncy5HZXRJc29sYXRlKCkpOwogCi0gICAgU1RSSU5HX1RPX1Y4UEFSQU1FVEVSX0VYQ0VQ
VElPTl9CTE9DSyhWOFN0cmluZ1Jlc291cmNlPD4sIHN0YXRlbWVudCwgYXJnc1swXSk7CisgICAg
VFJZQ0FUQ0hfRk9SX1Y4U1RSSU5HUkVTT1VSQ0UoVjhTdHJpbmdSZXNvdXJjZTw+LCBzdGF0ZW1l
bnQsIGFyZ3NbMF0pOwogCiAgICAgVmVjdG9yPFNRTFZhbHVlPiBzcWxWYWx1ZXM7CiAKQEAgLTYz
LDcgKzYzLDcgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4U1FMVHJhbnNhY3Rpb25TeW5jOjpl
eGVjdXRlU3FsQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW4KIAogICAgICAgICB1aW50MzJfdCBz
cWxBcmdzTGVuZ3RoID0gMDsKICAgICAgICAgdjg6OkxvY2FsPHY4OjpPYmplY3Q+IHNxbEFyZ3NP
YmplY3QgPSBhcmdzWzFdLT5Ub09iamVjdCgpOwotICAgICAgICBFWENFUFRJT05fQkxPQ0sodjg6
OkxvY2FsPHY4OjpWYWx1ZT4sIGxlbmd0aCwgc3FsQXJnc09iamVjdC0+R2V0KHY4OjpTdHJpbmc6
Ok5ldygibGVuZ3RoIikpKTsKKyAgICAgICAgVFJZQ0FUQ0godjg6OkxvY2FsPHY4OjpWYWx1ZT4s
IGxlbmd0aCwgc3FsQXJnc09iamVjdC0+R2V0KHY4OjpTdHJpbmc6Ok5ldygibGVuZ3RoIikpKTsK
IAogICAgICAgICBpZiAoaXNVbmRlZmluZWRPck51bGwobGVuZ3RoKSkKICAgICAgICAgICAgIHNx
bEFyZ3NMZW5ndGggPSBzcWxBcmdzT2JqZWN0LT5HZXRQcm9wZXJ0eU5hbWVzKCktPkxlbmd0aCgp
OwpAQCAtNzIsMTUgKzcyLDE1IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOFNRTFRyYW5zYWN0
aW9uU3luYzo6ZXhlY3V0ZVNxbENhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVuCiAKICAgICAgICAg
Zm9yICh1bnNpZ25lZCBpbnQgaSA9IDA7IGkgPCBzcWxBcmdzTGVuZ3RoOyArK2kpIHsKICAgICAg
ICAgICAgIHY4OjpIYW5kbGU8djg6OkludGVnZXI+IGtleSA9IHY4SW50ZWdlcihpLCBhcmdzLkdl
dElzb2xhdGUoKSk7Ci0gICAgICAgICAgICBFWENFUFRJT05fQkxPQ0sodjg6OkxvY2FsPHY4OjpW
YWx1ZT4sIHZhbHVlLCBzcWxBcmdzT2JqZWN0LT5HZXQoa2V5KSk7CisgICAgICAgICAgICBUUllD
QVRDSCh2ODo6TG9jYWw8djg6OlZhbHVlPiwgdmFsdWUsIHNxbEFyZ3NPYmplY3QtPkdldChrZXkp
KTsKIAogICAgICAgICAgICAgaWYgKHZhbHVlLklzRW1wdHkoKSB8fCB2YWx1ZS0+SXNOdWxsKCkp
CiAgICAgICAgICAgICAgICAgc3FsVmFsdWVzLmFwcGVuZChTUUxWYWx1ZSgpKTsKICAgICAgICAg
ICAgIGVsc2UgaWYgKHZhbHVlLT5Jc051bWJlcigpKSB7Ci0gICAgICAgICAgICAgICAgRVhDRVBU
SU9OX0JMT0NLKGRvdWJsZSwgc3FsVmFsdWUsIHZhbHVlLT5OdW1iZXJWYWx1ZSgpKTsKKyAgICAg
ICAgICAgICAgICBUUllDQVRDSChkb3VibGUsIHNxbFZhbHVlLCB2YWx1ZS0+TnVtYmVyVmFsdWUo
KSk7CiAgICAgICAgICAgICAgICAgc3FsVmFsdWVzLmFwcGVuZChTUUxWYWx1ZShzcWxWYWx1ZSkp
OwogICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBTVFJJTkdfVE9fVjhQQVJB
TUVURVJfRVhDRVBUSU9OX0JMT0NLKFY4U3RyaW5nUmVzb3VyY2U8Piwgc3FsVmFsdWUsIHZhbHVl
KTsKKyAgICAgICAgICAgICAgICBUUllDQVRDSF9GT1JfVjhTVFJJTkdSRVNPVVJDRShWOFN0cmlu
Z1Jlc291cmNlPD4sIHNxbFZhbHVlLCB2YWx1ZSk7CiAgICAgICAgICAgICAgICAgc3FsVmFsdWVz
LmFwcGVuZChTUUxWYWx1ZShzcWxWYWx1ZSkpOwogICAgICAgICAgICAgfQogICAgICAgICB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhTVkdMZW5ndGhD
dXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4U1ZHTGVuZ3Ro
Q3VzdG9tLmNwcAppbmRleCBmNDk0YWRjYjA1YjBmZDkxZTRiNjI3MzNjYjZkM2MzNWMyMGYyZDU3
Li43ZGIzM2UxNmVlZTJlZjcxZDlmN2M3YmExNGQwOTg4ZmE4NzZjMmY3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhTVkdMZW5ndGhDdXN0b20uY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFNWR0xlbmd0aEN1c3RvbS5j
cHAKQEAgLTg5LDcgKzg5LDcgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4U1ZHTGVuZ3RoOjpj
b252ZXJ0VG9TcGVjaWZpZWRVbml0c0NhbGxiYWNrKGNvbnN0IHY4OjpBcmcKIAogICAgIFNWR0xl
bmd0aCYgaW1wID0gd3JhcHBlci0+cHJvcGVydHlSZWZlcmVuY2UoKTsKICAgICBFeGNlcHRpb25D
b2RlIGVjID0gMDsKLSAgICBFWENFUFRJT05fQkxPQ0soaW50LCB1bml0VHlwZSwgdG9VSW50MzIo
YXJnc1swXSkpOworICAgIFRSWUNBVENIKGludCwgdW5pdFR5cGUsIHRvVUludDMyKGFyZ3NbMF0p
KTsKICAgICBTVkdMZW5ndGhDb250ZXh0IGxlbmd0aENvbnRleHQod3JhcHBlci0+Y29udGV4dEVs
ZW1lbnQoKSk7CiAgICAgaW1wLmNvbnZlcnRUb1NwZWNpZmllZFVuaXRzKHVuaXRUeXBlLCBsZW5n
dGhDb250ZXh0LCBlYyk7CiAgICAgaWYgKFVOTElLRUxZKGVjKSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFdlYkdMUmVuZGVyaW5nQ29udGV4dEN1c3Rv
bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhXZWJHTFJlbmRlcmlu
Z0NvbnRleHRDdXN0b20uY3BwCmluZGV4IDMwNWRhYTg0MWI1NDgyNzllZTk0Mjc2ODI0ZmVhODhj
YWQ2ZjFiYzIuLjBkZmM3MzNhNWU1ZTAxYTg4YWM3OGZiMGJmNDk0NDliYjM5ODFmMzAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFdlYkdMUmVuZGVyaW5n
Q29udGV4dEN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9t
L1Y4V2ViR0xSZW5kZXJpbmdDb250ZXh0Q3VzdG9tLmNwcApAQCAtMzA4LDcgKzMwOCw3IEBAIHY4
OjpIYW5kbGU8djg6OlZhbHVlPiBWOFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0RXh0ZW5zaW9u
Q2FsbGJhY2soY29uc3Qgdjg6OkFyCiAgICAgV2ViR0xSZW5kZXJpbmdDb250ZXh0KiBpbXAgPSBW
OFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6dG9OYXRpdmUoYXJncy5Ib2xkZXIoKSk7CiAgICAgaWYg
KGFyZ3MuTGVuZ3RoKCkgPCAxKQogICAgICAgICByZXR1cm4gdGhyb3dOb3RFbm91Z2hBcmd1bWVu
dHNFcnJvcihhcmdzLkdldElzb2xhdGUoKSk7Ci0gICAgU1RSSU5HX1RPX1Y4UEFSQU1FVEVSX0VY
Q0VQVElPTl9CTE9DSyhWOFN0cmluZ1Jlc291cmNlPD4sIG5hbWUsIGFyZ3NbMF0pOworICAgIFRS
WUNBVENIX0ZPUl9WOFNUUklOR1JFU09VUkNFKFY4U3RyaW5nUmVzb3VyY2U8PiwgbmFtZSwgYXJn
c1swXSk7CiAgICAgV2ViR0xFeHRlbnNpb24qIGV4dGVuc2lvbiA9IGltcC0+Z2V0RXh0ZW5zaW9u
KG5hbWUpOwogICAgIHJldHVybiB0b1Y4T2JqZWN0KGV4dGVuc2lvbiwgYXJncy5Ib2xkZXIoKSwg
YXJncy5HZXRJc29sYXRlKCkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvdjgvY3VzdG9tL1Y4V29ya2VyQ29udGV4dEN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy92OC9jdXN0b20vVjhXb3JrZXJDb250ZXh0Q3VzdG9tLmNwcAppbmRleCBmMWUzZTFi
NGUwOGI5ZDA4ZmVmNmJiNDQ2OGI3ZmM0OTczYzk4MmU2Li5hN2FjZTAzYmI0MDhjZDAzODM4NjRl
ZDA5MWQwNGUxZTk3YjBkNjYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92
OC9jdXN0b20vVjhXb3JrZXJDb250ZXh0Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy92OC9jdXN0b20vVjhXb3JrZXJDb250ZXh0Q3VzdG9tLmNwcApAQCAtOTgsNyArOTgs
NyBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhXb3JrZXJDb250ZXh0OjppbXBvcnRTY3JpcHRz
Q2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cwogCiAgICAgVmVjdG9yPFN0cmluZz4gdXJsczsK
ICAgICBmb3IgKGludCBpID0gMDsgaSA8IGFyZ3MuTGVuZ3RoKCk7IGkrKykgewotICAgICAgICBF
WENFUFRJT05fQkxPQ0sodjg6OkhhbmRsZTx2ODo6U3RyaW5nPiwgc2NyaXB0VXJsLCBhcmdzW2ld
LT5Ub1N0cmluZygpKTsKKyAgICAgICAgVFJZQ0FUQ0godjg6OkhhbmRsZTx2ODo6U3RyaW5nPiwg
c2NyaXB0VXJsLCBhcmdzW2ldLT5Ub1N0cmluZygpKTsKICAgICAgICAgaWYgKHNjcmlwdFVybC5J
c0VtcHR5KCkpCiAgICAgICAgICAgICByZXR1cm4gdjg6OlVuZGVmaW5lZCgpOwogICAgICAgICB1
cmxzLmFwcGVuZCh0b1dlYkNvcmVTdHJpbmcoc2NyaXB0VXJsKSk7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>