<?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>112165</bug_id>
          
          <creation_ts>2013-03-12 10:34:04 -0700</creation_ts>
          <short_desc>[V8] Get rid of GetFromContext world type</short_desc>
          <delta_ts>2013-03-14 04:03:18 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>INVALID</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>
          <dependson>112250</dependson>
          <blocked>110874</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Marja Hölttä">marja</reporter>
          <assigned_to name="Marja Hölttä">marja</assigned_to>
          <cc>abarth</cc>
    
    <cc>alecflett</cc>
    
    <cc>dcarney</cc>
    
    <cc>dglazkov</cc>
    
    <cc>dgrogan</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>feature-media-reviews</cc>
    
    <cc>haraken</cc>
    
    <cc>japhet</cc>
    
    <cc>jer.noble</cc>
    
    <cc>jsbell</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>853592</commentid>
    <comment_count>0</comment_count>
    <who name="Marja Hölttä">marja</who>
    <bug_when>2013-03-12 10:34:04 -0700</bug_when>
    <thetext>It was introduced by bug 111724. We can get rid of it by passing the world type explicitly to the HasInstance functions.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>853595</commentid>
    <comment_count>1</comment_count>
      <attachid>192763</attachid>
    <who name="Marja Hölttä">marja</who>
    <bug_when>2013-03-12 10:41:23 -0700</bug_when>
    <thetext>Created attachment 192763
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>853648</commentid>
    <comment_count>2</comment_count>
      <attachid>192763</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-03-12 11:20:52 -0700</bug_when>
    <thetext>Comment on attachment 192763
Patch

Attachment 192763 did not pass cr-linux-debug-ews (chromium-xvfb):
Output: http://webkit-commit-queue.appspot.com/results/17138123</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>853926</commentid>
    <comment_count>3</comment_count>
      <attachid>192763</attachid>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2013-03-12 17:10:15 -0700</bug_when>
    <thetext>Comment on attachment 192763
Patch

Looks reasonable. Please fix the debug build failure before landing. (I was wondering why you had to introduce GetFromContext in the previous patch:-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>854210</commentid>
    <comment_count>4</comment_count>
    <who name="Marja Hölttä">marja</who>
    <bug_when>2013-03-13 05:10:10 -0700</bug_when>
    <thetext>There are some newly discovered problems which prevent doing this, see bug 112250.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>855124</commentid>
    <comment_count>5</comment_count>
    <who name="Marja Hölttä">marja</who>
    <bug_when>2013-03-14 04:03:18 -0700</bug_when>
    <thetext>This is no longer needed, the new patch in bug 111724 no longer introduces this GetFromContext world type.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>192763</attachid>
            <date>2013-03-12 10:41:23 -0700</date>
            <delta_ts>2013-03-12 17:10:15 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-112165-20130312183720.patch</filename>
            <type>text/plain</type>
            <size>107624</size>
            <attacher name="Marja Hölttä">marja</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ1NTU3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzU1MzU3OThlMjE4N2Mx
NDQ2ZWU4NzE4MDdjOTk1MDNkMTFjNWM5Mi4uN2VlMDYwMjhhMWIxYmEzZjQxYWMyZDVhMzQzMGNl
MWNiYjA2MWVhZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2MCBAQAorMjAxMy0wMy0xMiAgTWFy
amEgSMO2bHR0w6QgIDxtYXJqYUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW1Y4XSBHZXQgcmlk
IG9mIEdldEZyb21Db250ZXh0IHdvcmxkIHR5cGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTExMjE2NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIEdldEZyb21Db250ZXh0IHdvcmxkIHR5cGUgd2FzIGludHJv
ZHVjZWQgYnkgcjE0NTU1NC4gV2UgY2FuIGdldAorICAgICAgICByaWQgb2YgaXQgYnkgcGFzc2lu
ZyBhIHdvcmxkIHR5cGUgZXhwbGljaXRseSB0byB0aGUgSGFzSW5zdGFuY2UKKyAgICAgICAgZnVu
Y3Rpb25zLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyAodXBkYXRlZCBleGlzdGluZyBiaW5kaW5n
IHRlc3RzKS4KKworICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvclY4LnBt
OgorICAgICAgICAoR2VuZXJhdGVIZWFkZXIpOgorICAgICAgICAoR2VuZXJhdGVOb3JtYWxBdHRy
U2V0dGVyKToKKyAgICAgICAgKEdlbmVyYXRlUGFyYW1ldGVyc0NoZWNrRXhwcmVzc2lvbik6Cisg
ICAgICAgIChHZW5lcmF0ZVBhcmFtZXRlcnNDaGVjayk6CisgICAgICAgIChKU1ZhbHVlVG9OYXRp
dmUpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOEZsb2F0NjRBcnJheS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpGbG9hdDY0QXJyYXlWOEludGVybmFsOjpmb29NZXRob2Qp
OgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOEZsb2F0NjRBcnJheS5oOgor
ICAgICAgICAoVjhGbG9hdDY0QXJyYXkpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVz
dC9WOC9WOFRlc3RBY3RpdmVET01PYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGVzdEFj
dGl2ZURPTU9iamVjdFY4SW50ZXJuYWw6OmV4Y2l0aW5nRnVuY3Rpb25NZXRob2QpOgorICAgICAg
ICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RBY3RpdmVET01PYmplY3QuaDoKKyAg
ICAgICAgKFY4VGVzdEFjdGl2ZURPTU9iamVjdCk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L1Y4L1Y4VGVzdEN1c3RvbU5hbWVkR2V0dGVyLmg6CisgICAgICAgIChWOFRlc3RDdXN0
b21OYW1lZEdldHRlcik6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVz
dEV2ZW50Q29uc3RydWN0b3IuaDoKKyAgICAgICAgKFY4VGVzdEV2ZW50Q29uc3RydWN0b3IpOgor
ICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RFdmVudFRhcmdldC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpUZXN0RXZlbnRUYXJnZXRWOEludGVybmFsOjpkaXNwYXRjaEV2
ZW50TWV0aG9kKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0RXZl
bnRUYXJnZXQuaDoKKyAgICAgICAgKFY4VGVzdEV2ZW50VGFyZ2V0KToKKyAgICAgICAgKiBiaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0RXhjZXB0aW9uLmg6CisgICAgICAgIChWOFRlc3RF
eGNlcHRpb24pOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RJbnRl
cmZhY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGVzdEludGVyZmFjZVY4SW50ZXJuYWw6OnN1
cHBsZW1lbnRhbE5vZGVBdHRyU2V0dGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RJbnRlcmZh
Y2VWOEludGVybmFsOjpzdXBwbGVtZW50YWxNZXRob2QyTWV0aG9kKToKKyAgICAgICAgKiBiaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0SW50ZXJmYWNlLmg6CisgICAgICAgIChWOFRlc3RJ
bnRlcmZhY2UpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RNZWRp
YVF1ZXJ5TGlzdExpc3RlbmVyLmg6CisgICAgICAgIChWOFRlc3RNZWRpYVF1ZXJ5TGlzdExpc3Rl
bmVyKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0TmFtZWRDb25z
dHJ1Y3Rvci5oOgorICAgICAgICAoVjhUZXN0TmFtZWRDb25zdHJ1Y3Rvcik6CisgICAgICAgICog
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE5vZGUuaDoKKyAgICAgICAgKFY4VGVzdE5v
ZGUpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RPYmouY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6VGVzdE9ialY4SW50ZXJuYWw6OnRlc3RPYmpBdHRyQXR0clNldHRl
cik6CisgICAgICAgIChXZWJDb3JlOjpUZXN0T2JqVjhJbnRlcm5hbDo6WE1MT2JqQXR0ckF0dHJT
ZXR0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdE9ialY4SW50ZXJuYWw6OnR5cGVkQXJyYXlB
dHRyQXR0clNldHRlcik6CisgICAgICAgIChXZWJDb3JlOjpUZXN0T2JqVjhJbnRlcm5hbDo6d2l0
aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBdHRyaWJ1dGVBdHRyU2V0dGVyKToKKyAgICAgICAgKFdl
YkNvcmU6OlRlc3RPYmpWOEludGVybmFsOjp3aXRoU2NyaXB0U3RhdGVBdHRyaWJ1dGVSYWlzZXNB
dHRyU2V0dGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RPYmpWOEludGVybmFsOjp3aXRoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dEF0dHJpYnV0ZVJhaXNlc0F0dHJTZXR0ZXIpOgorICAgICAgICAo
V2ViQ29yZTo6VGVzdE9ialY4SW50ZXJuYWw6OndpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5k
U2NyaXB0U3RhdGVBdHRyaWJ1dGVBdHRyU2V0dGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RP
YmpWOEludGVybmFsOjp3aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlQXR0
cmlidXRlUmFpc2VzQXR0clNldHRlcik6CisgICAgICAgIChXZWJDb3JlOjpUZXN0T2JqVjhJbnRl
cm5hbDo6d2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZVdpdGhTcGFjZXNB
dHRyaWJ1dGVBdHRyU2V0dGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RPYmpWOEludGVybmFs
Ojp3aXRoU2NyaXB0QXJndW1lbnRzQW5kQ2FsbFN0YWNrQXR0cmlidXRlQXR0clNldHRlcik6Cisg
ICAgICAgIChXZWJDb3JlOjpUZXN0T2JqVjhJbnRlcm5hbDo6bXV0YWJsZVBvaW50QXR0clNldHRl
cik6CisgICAgICAgIChXZWJDb3JlOjpUZXN0T2JqVjhJbnRlcm5hbDo6aW1tdXRhYmxlUG9pbnRB
dHRyU2V0dGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RPYmpWOEludGVybmFsOjp2b2lkTWV0
aG9kV2l0aEFyZ3NNZXRob2QpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdE9ialY4SW50ZXJuYWw6
OmxvbmdNZXRob2RXaXRoQXJnc01ldGhvZCk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0T2JqVjhJ
bnRlcm5hbDo6b2JqTWV0aG9kV2l0aEFyZ3NNZXRob2QpOgorICAgICAgICAoV2ViQ29yZTo6VGVz
dE9ialY4SW50ZXJuYWw6Om1ldGhvZFRoYXRSZXF1aXJlc0FsbEFyZ3NBbmRUaHJvd3NNZXRob2Qp
OgorICAgICAgICAoV2ViQ29yZTo6VGVzdE9ialY4SW50ZXJuYWw6Om92ZXJsb2FkZWRNZXRob2Qx
TWV0aG9kKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RPYmpWOEludGVybmFsOjpvdmVybG9hZGVk
TWV0aG9kMk1ldGhvZCk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0T2JqVjhJbnRlcm5hbDo6b3Zl
cmxvYWRlZE1ldGhvZDhNZXRob2QpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdE9ialY4SW50ZXJu
YWw6Om92ZXJsb2FkZWRNZXRob2RNZXRob2QpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdE9ialY4
SW50ZXJuYWw6OmNvbnZlcnQxTWV0aG9kKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RPYmpWOElu
dGVybmFsOjpjb252ZXJ0Mk1ldGhvZCk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0T2JqVjhJbnRl
cm5hbDo6Y29udmVydDRNZXRob2QpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdE9ialY4SW50ZXJu
YWw6OmNvbnZlcnQ1TWV0aG9kKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RPYmpWOEludGVybmFs
Ojp2YXJpYWRpY05vZGVNZXRob2RNZXRob2QpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMv
dGVzdC9WOC9WOFRlc3RPYmouaDoKKyAgICAgICAgKFY4VGVzdE9iaik6CisgICAgICAgICogYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNWOEludGVybmFsOjpj
b25zdHJ1Y3RvcjEpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3Rv
cnNWOEludGVybmFsOjpjb25zdHJ1Y3RvcjIpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdE92ZXJs
b2FkZWRDb25zdHJ1Y3RvcnNWOEludGVybmFsOjpjb25zdHJ1Y3RvcjMpOgorICAgICAgICAoV2Vi
Q29yZTo6VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNWOEludGVybmFsOjpjb25zdHJ1Y3Rvcik6
CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE92ZXJsb2FkZWRDb25z
dHJ1Y3RvcnMuaDoKKyAgICAgICAgKFY4VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMpOgorICAg
ICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RTZXJpYWxpemVkU2NyaXB0VmFs
dWVJbnRlcmZhY2UuaDoKKyAgICAgICAgKFY4VGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVy
ZmFjZSk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdFR5cGVkZWZz
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RUeXBlZGVmc1Y4SW50ZXJuYWw6OmZ1bmNNZXRo
b2QpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RUeXBlZGVmcy5o
OgorICAgICAgICAoVjhUZXN0VHlwZWRlZnMpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L0RpY3Rp
b25hcnkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGljdGlvbmFyeTo6Z2V0KToKKyAgICAgICAg
KiBiaW5kaW5ncy92OC9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwOgorICAgICAgICAqIGJpbmRp
bmdzL3Y4L1Y4QmluZGluZy5jcHA6CisgICAgICAgIChXZWJDb3JlOjp0b0RPTVN0cmluZ0xpc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6dG9YUGF0aE5TUmVzb2x2ZXIpOgorICAgICAgICAqIGJpbmRp
bmdzL3Y4L1Y4QmluZGluZy5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3Jl
Ojp0b1JlZlB0ck5hdGl2ZUFycmF5KToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9WOENvbGxlY3Rp
b24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6dG9PcHRpb25zQ29sbGVjdGlvblNldHRlcik6Cisg
ICAgICAgICogYmluZGluZ3MvdjgvVjhOUE9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpu
cE9iamVjdEludm9rZUltcGwpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1Y4UGVySXNvbGF0ZURh
dGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VjhQZXJJc29sYXRlRGF0YTo6cHJpdmF0ZVRlbXBs
YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlY4UGVySXNvbGF0ZURhdGE6OnJhd1RlbXBsYXRlKToK
KyAgICAgICAgKFdlYkNvcmU6OlY4UGVySXNvbGF0ZURhdGE6Omhhc0luc3RhbmNlKToKKyAgICAg
ICAgKiBiaW5kaW5ncy92OC9WOFV0aWxpdGllcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpleHRy
YWN0VHJhbnNmZXJhYmxlcyk6CisgICAgICAgICogYmluZGluZ3MvdjgvV3JhcHBlclR5cGVJbmZv
Lmg6CisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4QXJyYXlCdWZmZXJWaWV3Q3VzdG9t
Lmg6CisgICAgICAgIChXZWJDb3JlOjpjb25zdHJ1Y3RXZWJHTEFycmF5KToKKyAgICAgICAgKFdl
YkNvcmU6OnNldFdlYkdMQXJyYXlIZWxwZXIpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3Rv
bS9WOEF1ZGlvQnVmZmVyU291cmNlTm9kZUN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpW
OEF1ZGlvQnVmZmVyU291cmNlTm9kZTo6YnVmZmVyQXR0clNldHRlckN1c3RvbSk6CisgICAgICAg
ICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4QmxvYkN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpWOEJsb2I6OmNvbnN0cnVjdG9yQ3VzdG9tKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0
b20vVjhDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6dG9DYW52YXNTdHlsZSk6CisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4Q2xpcGJv
YXJkQ3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlY4Q2xpcGJvYXJkOjpzZXREcmFnSW1h
Z2VNZXRob2RDdXN0b20pOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOENyeXB0b0N1
c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWOENyeXB0bzo6Z2V0UmFuZG9tVmFsdWVzTWV0
aG9kQ3VzdG9tKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhET01Gb3JtRGF0YUN1
c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWOERPTUZvcm1EYXRhOjpjb25zdHJ1Y3RvckN1
c3RvbSk6CisgICAgICAgIChXZWJDb3JlOjpWOERPTUZvcm1EYXRhOjphcHBlbmRNZXRob2RDdXN0
b20pOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOERhdGFWaWV3Q3VzdG9tLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlY4RGF0YVZpZXc6OmNvbnN0cnVjdG9yQ3VzdG9tKToKKyAgICAg
ICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhEb2N1bWVudEN1c3RvbS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpWOERvY3VtZW50OjpldmFsdWF0ZU1ldGhvZEN1c3RvbSk6CisgICAgICAgICogYmlu
ZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTE1lZGlhRWxlbWVudEN1c3RvbS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpWOEhUTUxNZWRpYUVsZW1lbnQ6OmNvbnRyb2xsZXJBdHRyU2V0dGVyQ3VzdG9tKToK
KyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhIVE1MT3B0aW9uc0NvbGxlY3Rpb25DdXN0
b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6VjhIVE1MT3B0aW9uc0NvbGxlY3Rpb246OmFkZE1l
dGhvZEN1c3RvbSk6CisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTFNlbGVjdEVs
ZW1lbnRDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6cmVtb3ZlRWxlbWVudCk6CisgICAg
ICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4SW5qZWN0ZWRTY3JpcHRIb3N0Q3VzdG9tLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlY4SW5qZWN0ZWRTY3JpcHRIb3N0Ojppc0hUTUxBbGxDb2xsZWN0
aW9uTWV0aG9kQ3VzdG9tKToKKyAgICAgICAgKFdlYkNvcmU6OlY4SW5qZWN0ZWRTY3JpcHRIb3N0
Ojp0eXBlTWV0aG9kQ3VzdG9tKToKKyAgICAgICAgKFdlYkNvcmU6OlY4SW5qZWN0ZWRTY3JpcHRI
b3N0OjpnZXRFdmVudExpc3RlbmVyc01ldGhvZEN1c3RvbSk6CisgICAgICAgICogYmluZGluZ3Mv
djgvY3VzdG9tL1Y4Tm9kZUN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWOE5vZGU6Omlu
c2VydEJlZm9yZU1ldGhvZEN1c3RvbSk6CisgICAgICAgIChXZWJDb3JlOjpWOE5vZGU6OnJlcGxh
Y2VDaGlsZE1ldGhvZEN1c3RvbSk6CisgICAgICAgIChXZWJDb3JlOjpWOE5vZGU6OnJlbW92ZUNo
aWxkTWV0aG9kQ3VzdG9tKToKKyAgICAgICAgKFdlYkNvcmU6OlY4Tm9kZTo6YXBwZW5kQ2hpbGRN
ZXRob2RDdXN0b20pOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOFdlYkdMUmVuZGVy
aW5nQ29udGV4dEN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjp0b1dlYkdMVW5pZm9ybUxv
Y2F0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlY4V2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRB
dHRhY2hlZFNoYWRlcnNNZXRob2RDdXN0b20pOgorICAgICAgICAoV2ViQ29yZTo6VjhXZWJHTFJl
bmRlcmluZ0NvbnRleHQ6OmdldFByb2dyYW1QYXJhbWV0ZXJNZXRob2RDdXN0b20pOgorICAgICAg
ICAoV2ViQ29yZTo6VjhXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldFNoYWRlclBhcmFtZXRlck1l
dGhvZEN1c3RvbSk6CisgICAgICAgIChXZWJDb3JlOjpWOFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6
Z2V0VW5pZm9ybU1ldGhvZEN1c3RvbSk6CisgICAgICAgIChXZWJDb3JlOjp2ZXJ0ZXhBdHRyaWJB
bmRVbmlmb3JtSGVscGVyZik6CisgICAgICAgIChXZWJDb3JlOjp1bmlmb3JtSGVscGVyaSk6Cisg
ICAgICAgIChXZWJDb3JlOjp1bmlmb3JtTWF0cml4SGVscGVyKToKKyAgICAgICAgKiBiaW5kaW5n
cy92OC9jdXN0b20vVjhYTUxIdHRwUmVxdWVzdEN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3Jl
Ojppc0RvY3VtZW50VHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpWOFhNTEh0dHBSZXF1ZXN0Ojpz
ZW5kTWV0aG9kQ3VzdG9tKToKKwogMjAxMy0wMy0xMiAgUGF2ZWwgRmVsZG1hbiAgPHBmZWxkbWFu
QGNocm9taXVtLm9yZz4KIAogICAgICAgICBOb3QgcmV2aWV3ZWQ6IHJlbW92aW5nIEd0a1ZlcnNp
b25pbmcgZnJvbSBjaHJvbWl1bSB0YXJnZXRzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwppbmRl
eCAyZjgyYjY4YTFmNjQ3ZWE0NGRhNTlkMDQ3MDMxMWNjNzA4M2NlNjQxLi44ZWRmMTA2NDQ3YjRj
MjVkYzkxNGMxZGIwNWVlOTAxZWRhMmE4MjE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDI1IEBACisyMDEzLTAzLTEyICBNYXJqYSBIw7ZsdHTDpCAgPG1hcmphQGNocm9t
aXVtLm9yZz4KKworICAgICAgICBbVjhdIEdldCByaWQgb2YgR2V0RnJvbUNvbnRleHQgd29ybGQg
dHlwZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTEy
MTY1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgR2V0
RnJvbUNvbnRleHQgd29ybGQgdHlwZSB3YXMgaW50cm9kdWNlZCBieSByMTQ1NTU0LiBXZSBjYW4g
Z2V0CisgICAgICAgIHJpZCBvZiBpdCBieSBwYXNzaW5nIGEgd29ybGQgdHlwZSBleHBsaWNpdGx5
IHRvIHRoZSBIYXNJbnN0YW5jZQorICAgICAgICBmdW5jdGlvbnMuCisKKyAgICAgICAgKiBzcmMv
V2ViQXJyYXlCdWZmZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJBcnJheUJ1ZmZlcjo6Y3Jl
YXRlRnJvbVY4VmFsdWUpOgorICAgICAgICAqIHNyYy9XZWJBcnJheUJ1ZmZlclZpZXcuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpXZWJBcnJheUJ1ZmZlclZpZXc6OmNyZWF0ZUZyb21WOFZhbHVlKToK
KyAgICAgICAgKiBzcmMvV2ViQmluZGluZ3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpnZXRSYW5n
ZUltcGwpOgorICAgICAgICAoV2ViS2l0OjpnZXROb2RlSW1wbCk6CisgICAgICAgIChXZWJLaXQ6
OmdldEVsZW1lbnRJbXBsKToKKyAgICAgICAgKFdlYktpdDo6Z2V0QXJyYXlCdWZmZXJJbXBsKToK
KyAgICAgICAgKFdlYktpdDo6Z2V0QXJyYXlCdWZmZXJWaWV3SW1wbCk6CisKIDIwMTMtMDMtMTEg
IFNoZXJpZmYgQm90ICA8d2Via2l0LnJldmlldy5ib3RAZ21haWwuY29tPgogCiAgICAgICAgIFVu
cmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIxNDU0NjIuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5wbSBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvclY4LnBtCmluZGV4IGNkZWY2NDRiN2U3YjdiZWIy
Njc0YmYyMjI0NGMyM2RkMWE5ODE3YTkuLjgwZGJiNzQ5ZjAzMWZiMGYwZDkyNTcwOWVlYzExNmMw
YzMzZWU0NWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29k
ZUdlbmVyYXRvclY4LnBtCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29k
ZUdlbmVyYXRvclY4LnBtCkBAIC0zNjAsNyArMzYwLDcgQEAgRU5ECiAgICAgfQogCiAgICAgcHVz
aChAaGVhZGVyQ29udGVudCwgPDxFTkQpOwotICAgIHN0YXRpYyBib29sIEhhc0luc3RhbmNlKHY4
OjpIYW5kbGU8djg6OlZhbHVlPiwgdjg6Oklzb2xhdGUqLCBXcmFwcGVyV29ybGRUeXBlID0gR2V0
RnJvbUNvbnRleHQpOworICAgIHN0YXRpYyBib29sIEhhc0luc3RhbmNlKHY4OjpIYW5kbGU8djg6
OlZhbHVlPiwgdjg6Oklzb2xhdGUqLCBXcmFwcGVyV29ybGRUeXBlKTsKICAgICBzdGF0aWMgdjg6
OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IEdldFRlbXBsYXRlKHY4OjpJc29sYXRl
KiwgV3JhcHBlcldvcmxkVHlwZSk7CiAgICAgc3RhdGljICR7bmF0aXZlVHlwZX0qIHRvTmF0aXZl
KHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gb2JqZWN0KQogICAgIHsKQEAgLTEyNDksNyArMTI0OSw3
IEBAIHN1YiBHZW5lcmF0ZU5vcm1hbEF0dHJTZXR0ZXIKICAgICBpZiAoJGF0dHJpYnV0ZS0+c2ln
bmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiU3RyaWN0VHlwZUNoZWNraW5nIn0pIHsKICAg
ICAgICAgbXkgJGFyZ1R5cGUgPSAkYXR0cmlidXRlLT5zaWduYXR1cmUtPnR5cGU7CiAgICAgICAg
IGlmIChJc1dyYXBwZXJUeXBlKCRhcmdUeXBlKSkgewotICAgICAgICAgICAgcHVzaChAaW1wbENv
bnRlbnRJbnRlcm5hbHMsICIgICAgaWYgKCFpc1VuZGVmaW5lZE9yTnVsbCh2YWx1ZSkgJiYgIVY4
JHthcmdUeXBlfTo6SGFzSW5zdGFuY2UodmFsdWUsIGluZm8uR2V0SXNvbGF0ZSgpKSkge1xuIik7
CisgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudEludGVybmFscywgIiAgICBpZiAoIWlzVW5k
ZWZpbmVkT3JOdWxsKHZhbHVlKSAmJiAhVjgke2FyZ1R5cGV9OjpIYXNJbnN0YW5jZSh2YWx1ZSwg
aW5mby5HZXRJc29sYXRlKCksIHdvcmxkVHlwZShpbmZvLkdldElzb2xhdGUoKSkpKSB7XG4iKTsK
ICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50SW50ZXJuYWxzLCAiICAgICAgICB0aHJvd1R5
cGVFcnJvcigwLCBpbmZvLkdldElzb2xhdGUoKSk7XG4iKTsKICAgICAgICAgICAgIHB1c2goQGlt
cGxDb250ZW50SW50ZXJuYWxzLCAiICAgICAgICByZXR1cm47XG4iKTsKICAgICAgICAgICAgIHB1
c2goQGltcGxDb250ZW50SW50ZXJuYWxzLCAiICAgIH1cbiIpOwpAQCAtMTQ1MCw5ICsxNDUwLDkg
QEAgc3ViIEdlbmVyYXRlUGFyYW1ldGVyc0NoZWNrRXhwcmVzc2lvbgogICAgICAgICAgICAgfQog
ICAgICAgICB9IGVsc2lmIChJc1dyYXBwZXJUeXBlKCR0eXBlKSkgewogICAgICAgICAgICAgaWYg
KCRwYXJhbWV0ZXItPmlzTnVsbGFibGUpIHsKLSAgICAgICAgICAgICAgICBwdXNoKEBhbmRFeHBy
ZXNzaW9uLCAiKCR7dmFsdWV9LT5Jc051bGwoKSB8fCBWOCR7dHlwZX06Okhhc0luc3RhbmNlKCR2
YWx1ZSwgYXJncy5HZXRJc29sYXRlKCkpKSIpOworICAgICAgICAgICAgICAgIHB1c2goQGFuZEV4
cHJlc3Npb24sICIoJHt2YWx1ZX0tPklzTnVsbCgpIHx8IFY4JHt0eXBlfTo6SGFzSW5zdGFuY2Uo
JHZhbHVlLCBhcmdzLkdldElzb2xhdGUoKSwgd29ybGRUeXBlKGFyZ3MuR2V0SXNvbGF0ZSgpKSkp
Iik7CiAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIHB1c2goQGFuZEV4cHJl
c3Npb24sICIoVjgke3R5cGV9OjpIYXNJbnN0YW5jZSgkdmFsdWUsIGFyZ3MuR2V0SXNvbGF0ZSgp
KSkiKTsKKyAgICAgICAgICAgICAgICBwdXNoKEBhbmRFeHByZXNzaW9uLCAiKFY4JHt0eXBlfTo6
SGFzSW5zdGFuY2UoJHZhbHVlLCBhcmdzLkdldElzb2xhdGUoKSwgd29ybGRUeXBlKGFyZ3MuR2V0
SXNvbGF0ZSgpKSkpIik7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KIApAQCAtMTg2OCw3ICsx
ODY4LDcgQEAgc3ViIEdlbmVyYXRlUGFyYW1ldGVyc0NoZWNrCiAgICAgICAgICAgICBpZiAoSXNX
cmFwcGVyVHlwZSgkYXJnVHlwZSkpIHsKICAgICAgICAgICAgICAgICAkcGFyYW1ldGVyQ2hlY2tT
dHJpbmcgLj0gIiAgICBWZWN0b3I8JG5hdGl2ZUVsZW1lbnRUeXBlPiAkcGFyYW1ldGVyTmFtZTtc
biI7CiAgICAgICAgICAgICAgICAgJHBhcmFtZXRlckNoZWNrU3RyaW5nIC49ICIgICAgZm9yIChp
bnQgaSA9ICRwYXJhbUluZGV4OyBpIDwgYXJncy5MZW5ndGgoKTsgKytpKSB7XG4iOwotICAgICAg
ICAgICAgICAgICRwYXJhbWV0ZXJDaGVja1N0cmluZyAuPSAiICAgICAgICBpZiAoIVY4JHthcmdU
eXBlfTo6SGFzSW5zdGFuY2UoYXJnc1tpXSwgYXJncy5HZXRJc29sYXRlKCkpKVxuIjsKKyAgICAg
ICAgICAgICAgICAkcGFyYW1ldGVyQ2hlY2tTdHJpbmcgLj0gIiAgICAgICAgaWYgKCFWOCR7YXJn
VHlwZX06Okhhc0luc3RhbmNlKGFyZ3NbaV0sIGFyZ3MuR2V0SXNvbGF0ZSgpLCB3b3JsZFR5cGUo
YXJncy5HZXRJc29sYXRlKCkpKSlcbiI7CiAgICAgICAgICAgICAgICAgJHBhcmFtZXRlckNoZWNr
U3RyaW5nIC49ICIgICAgICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoMCwgYXJncy5HZXRJ
c29sYXRlKCkpO1xuIjsKICAgICAgICAgICAgICAgICAkcGFyYW1ldGVyQ2hlY2tTdHJpbmcgLj0g
IiAgICAgICAgJHBhcmFtZXRlck5hbWUuYXBwZW5kKFY4JHthcmdUeXBlfTo6dG9OYXRpdmUodjg6
OkhhbmRsZTx2ODo6T2JqZWN0Pjo6Q2FzdChhcmdzW2ldKSkpO1xuIjsKICAgICAgICAgICAgICAg
ICAkcGFyYW1ldGVyQ2hlY2tTdHJpbmcgLj0gIiAgICB9XG4iOwpAQCAtMTg4OSw3ICsxODg5LDcg
QEAgc3ViIEdlbmVyYXRlUGFyYW1ldGVyc0NoZWNrCiAgICAgICAgICAgICAgICAgbXkgJGFyZ1Zh
bHVlID0gImFyZ3NbJHBhcmFtSW5kZXhdIjsKICAgICAgICAgICAgICAgICBteSAkYXJnVHlwZSA9
ICRwYXJhbWV0ZXItPnR5cGU7CiAgICAgICAgICAgICAgICAgaWYgKElzV3JhcHBlclR5cGUoJGFy
Z1R5cGUpKSB7Ci0gICAgICAgICAgICAgICAgICAgICRwYXJhbWV0ZXJDaGVja1N0cmluZyAuPSAi
ICAgIGlmIChhcmdzLkxlbmd0aCgpID4gJHBhcmFtSW5kZXggJiYgIWlzVW5kZWZpbmVkT3JOdWxs
KCRhcmdWYWx1ZSkgJiYgIVY4JHthcmdUeXBlfTo6SGFzSW5zdGFuY2UoJGFyZ1ZhbHVlLCBhcmdz
LkdldElzb2xhdGUoKSkpXG4iOworICAgICAgICAgICAgICAgICAgICAkcGFyYW1ldGVyQ2hlY2tT
dHJpbmcgLj0gIiAgICBpZiAoYXJncy5MZW5ndGgoKSA+ICRwYXJhbUluZGV4ICYmICFpc1VuZGVm
aW5lZE9yTnVsbCgkYXJnVmFsdWUpICYmICFWOCR7YXJnVHlwZX06Okhhc0luc3RhbmNlKCRhcmdW
YWx1ZSwgYXJncy5HZXRJc29sYXRlKCksIHdvcmxkVHlwZShhcmdzLkdldElzb2xhdGUoKSkpKVxu
IjsKICAgICAgICAgICAgICAgICAgICAgJHBhcmFtZXRlckNoZWNrU3RyaW5nIC49ICIgICAgICAg
IHJldHVybiB0aHJvd1R5cGVFcnJvcigwLCBhcmdzLkdldElzb2xhdGUoKSk7XG4iOwogICAgICAg
ICAgICAgICAgIH0KICAgICAgICAgICAgIH0KQEAgLTQwMzgsNyArNDAzOCw3IEBAIHN1YiBKU1Zh
bHVlVG9OYXRpdmUKICAgICBBZGRJbmNsdWRlc0ZvclR5cGUoJHR5cGUpOwogCiAgICAgQWRkVG9J
bXBsSW5jbHVkZXMoIlY4JHt0eXBlfS5oIik7Ci0gICAgcmV0dXJuICJWOCR7dHlwZX06Okhhc0lu
c3RhbmNlKCR2YWx1ZSwgJGdldElzb2xhdGUpID8gVjgke3R5cGV9Ojp0b05hdGl2ZSh2ODo6SGFu
ZGxlPHY4OjpPYmplY3Q+OjpDYXN0KCR2YWx1ZSkpIDogMCI7CisgICAgcmV0dXJuICJWOCR7dHlw
ZX06Okhhc0luc3RhbmNlKCR2YWx1ZSwgJGdldElzb2xhdGUsIHdvcmxkVHlwZSgkZ2V0SXNvbGF0
ZSkpID8gVjgke3R5cGV9Ojp0b05hdGl2ZSh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+OjpDYXN0KCR2
YWx1ZSkpIDogMCI7CiB9CiAKIHN1YiBHZXRWOEhlYWRlck5hbWUKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOEZsb2F0NjRBcnJheS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhGbG9hdDY0QXJyYXkuY3Bw
CmluZGV4IDRiOGIzNjU3OGE3ODg3YjVkMWNhNTJlMTAzNmUzNzhiNjFhZjdjZDEuLjIxYWJmNGRm
OTE2YTAzMTBlMTY3ZGQyMmJlNzA3MTg1OWQ2ZTFlN2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOEZsb2F0NjRBcnJheS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4RmxvYXQ2NEFycmF5LmNwcApA
QCAtODUsNyArODUsNyBAQCBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGZvb01ldGhvZChj
b25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogICAgIGlmIChhcmdzLkxlbmd0aCgpIDwgMSkKICAg
ICAgICAgcmV0dXJuIHRocm93Tm90RW5vdWdoQXJndW1lbnRzRXJyb3IoYXJncy5HZXRJc29sYXRl
KCkpOwogICAgIEZsb2F0NjRBcnJheSogaW1wID0gVjhGbG9hdDY0QXJyYXk6OnRvTmF0aXZlKGFy
Z3MuSG9sZGVyKCkpOwotICAgIFY4VFJZQ0FUQ0goRmxvYXQzMkFycmF5KiwgYXJyYXksIFY4Rmxv
YXQzMkFycmF5OjpIYXNJbnN0YW5jZShhcmdzWzBdLCBhcmdzLkdldElzb2xhdGUoKSkgPyBWOEZs
b2F0MzJBcnJheTo6dG9OYXRpdmUodjg6OkhhbmRsZTx2ODo6T2JqZWN0Pjo6Q2FzdChhcmdzWzBd
KSkgOiAwKTsKKyAgICBWOFRSWUNBVENIKEZsb2F0MzJBcnJheSosIGFycmF5LCBWOEZsb2F0MzJB
cnJheTo6SGFzSW5zdGFuY2UoYXJnc1swXSwgYXJncy5HZXRJc29sYXRlKCksIHdvcmxkVHlwZShh
cmdzLkdldElzb2xhdGUoKSkpID8gVjhGbG9hdDMyQXJyYXk6OnRvTmF0aXZlKHY4OjpIYW5kbGU8
djg6Ok9iamVjdD46OkNhc3QoYXJnc1swXSkpIDogMCk7CiAgICAgcmV0dXJuIHRvVjgoaW1wLT5m
b28oYXJyYXkpLCBhcmdzLkhvbGRlcigpLCBhcmdzLkdldElzb2xhdGUoKSk7CiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOEZsb2F0NjRB
cnJheS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4RmxvYXQ2
NEFycmF5LmgKaW5kZXggOWIzYzYxZjg1YTY2OTAyYTgzMGU4YzlhZDIxZGIyOTVlYjliMjA3Zi4u
NDMzN2RkMjZkYjFiZWJlYjI0OWUzZGEzMDAyY2I0ZTMwMmFkZDFiMyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4RmxvYXQ2NEFycmF5LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4RmxvYXQ2NEFycmF5
LmgKQEAgLTM1LDcgKzM1LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgVjhGbG9hdDY0
QXJyYXkgewogcHVibGljOgogICAgIHN0YXRpYyBjb25zdCBib29sIGhhc0RlcGVuZGVudExpZmV0
aW1lID0gVjhBcnJheUJ1ZmZlclZpZXc6Omhhc0RlcGVuZGVudExpZmV0aW1lOwotICAgIHN0YXRp
YyBib29sIEhhc0luc3RhbmNlKHY4OjpIYW5kbGU8djg6OlZhbHVlPiwgdjg6Oklzb2xhdGUqLCBX
cmFwcGVyV29ybGRUeXBlID0gR2V0RnJvbUNvbnRleHQpOworICAgIHN0YXRpYyBib29sIEhhc0lu
c3RhbmNlKHY4OjpIYW5kbGU8djg6OlZhbHVlPiwgdjg6Oklzb2xhdGUqLCBXcmFwcGVyV29ybGRU
eXBlKTsKICAgICBzdGF0aWMgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IEdl
dFRlbXBsYXRlKHY4OjpJc29sYXRlKiwgV3JhcHBlcldvcmxkVHlwZSk7CiAgICAgc3RhdGljIEZs
b2F0NjRBcnJheSogdG9OYXRpdmUodjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBvYmplY3QpCiAgICAg
ewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4
VGVzdEFjdGl2ZURPTU9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvVjgvVjhUZXN0QWN0aXZlRE9NT2JqZWN0LmNwcAppbmRleCBlNjE0YjBiMTFlZTY5ZjIw
OGUwYmVmZmEyZjQzZTg1YjY1MjMyODk3Li4zYTg2MTdhYmQ5NTU4NzQ5NTdiYWY4MjUyYzIwYWQ2
YmEwYzYyMDI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvVjgvVjhUZXN0QWN0aXZlRE9NT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0QWN0aXZlRE9NT2JqZWN0LmNwcApAQCAtMTAxLDcg
KzEwMSw3IEBAIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gZXhjaXRpbmdGdW5jdGlvbk1l
dGhvZChjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogICAgIFRlc3RBY3RpdmVET01PYmplY3Qq
IGltcCA9IFY4VGVzdEFjdGl2ZURPTU9iamVjdDo6dG9OYXRpdmUoYXJncy5Ib2xkZXIoKSk7CiAg
ICAgaWYgKCFCaW5kaW5nU2VjdXJpdHk6OnNob3VsZEFsbG93QWNjZXNzVG9GcmFtZShCaW5kaW5n
U3RhdGU6Omluc3RhbmNlKCksIGltcC0+ZnJhbWUoKSkpCiAgICAgICAgIHJldHVybiB2OFVuZGVm
aW5lZCgpOwotICAgIFY4VFJZQ0FUQ0goTm9kZSosIG5leHRDaGlsZCwgVjhOb2RlOjpIYXNJbnN0
YW5jZShhcmdzWzBdLCBhcmdzLkdldElzb2xhdGUoKSkgPyBWOE5vZGU6OnRvTmF0aXZlKHY4OjpI
YW5kbGU8djg6Ok9iamVjdD46OkNhc3QoYXJnc1swXSkpIDogMCk7CisgICAgVjhUUllDQVRDSChO
b2RlKiwgbmV4dENoaWxkLCBWOE5vZGU6Okhhc0luc3RhbmNlKGFyZ3NbMF0sIGFyZ3MuR2V0SXNv
bGF0ZSgpLCB3b3JsZFR5cGUoYXJncy5HZXRJc29sYXRlKCkpKSA/IFY4Tm9kZTo6dG9OYXRpdmUo
djg6OkhhbmRsZTx2ODo6T2JqZWN0Pjo6Q2FzdChhcmdzWzBdKSkgOiAwKTsKICAgICBpbXAtPmV4
Y2l0aW5nRnVuY3Rpb24obmV4dENoaWxkKTsKICAgICByZXR1cm4gdjhVbmRlZmluZWQoKTsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRl
c3RBY3RpdmVET01PYmplY3QuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9WOC9WOFRlc3RBY3RpdmVET01PYmplY3QuaAppbmRleCA3MjM2NDhjYmQyZjcxYjk5MWIwOGY3
N2I1Yzk5ZDg3MzM0NDgzZjJkLi5jODBlZmE2OWYzMmQ5NDIxNTlkZjNlMmY3Mzc1MjY2YjM0NDQ3
ZmE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgv
VjhUZXN0QWN0aXZlRE9NT2JqZWN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L1Y4L1Y4VGVzdEFjdGl2ZURPTU9iamVjdC5oCkBAIC0zNCw3ICszNCw3IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIFY4VGVzdEFjdGl2ZURPTU9iamVjdCB7CiBwdWJsaWM6
CiAgICAgc3RhdGljIGNvbnN0IGJvb2wgaGFzRGVwZW5kZW50TGlmZXRpbWUgPSBmYWxzZTsKLSAg
ICBzdGF0aWMgYm9vbCBIYXNJbnN0YW5jZSh2ODo6SGFuZGxlPHY4OjpWYWx1ZT4sIHY4OjpJc29s
YXRlKiwgV3JhcHBlcldvcmxkVHlwZSA9IEdldEZyb21Db250ZXh0KTsKKyAgICBzdGF0aWMgYm9v
bCBIYXNJbnN0YW5jZSh2ODo6SGFuZGxlPHY4OjpWYWx1ZT4sIHY4OjpJc29sYXRlKiwgV3JhcHBl
cldvcmxkVHlwZSk7CiAgICAgc3RhdGljIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBs
YXRlPiBHZXRUZW1wbGF0ZSh2ODo6SXNvbGF0ZSosIFdyYXBwZXJXb3JsZFR5cGUpOwogICAgIHN0
YXRpYyBUZXN0QWN0aXZlRE9NT2JqZWN0KiB0b05hdGl2ZSh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+
IG9iamVjdCkKICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvVjgvVjhUZXN0Q3VzdG9tTmFtZWRHZXR0ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RDdXN0b21OYW1lZEdldHRlci5oCmluZGV4IDEx
MzAzYWIxZDg2YjNjNzNkNTgzZDhmNzUyNDI0MjAxZmI2MGE3OTEuLjJhNTFjZGVkOWFlNzk2Yzc1
Yzk5MjFlMDhkYWE4NDAyYzRhMjNhM2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RDdXN0b21OYW1lZEdldHRlci5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RDdXN0b21OYW1lZEdldHRl
ci5oCkBAIC0zNCw3ICszNCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIFY4VGVzdEN1
c3RvbU5hbWVkR2V0dGVyIHsKIHB1YmxpYzoKICAgICBzdGF0aWMgY29uc3QgYm9vbCBoYXNEZXBl
bmRlbnRMaWZldGltZSA9IGZhbHNlOwotICAgIHN0YXRpYyBib29sIEhhc0luc3RhbmNlKHY4OjpI
YW5kbGU8djg6OlZhbHVlPiwgdjg6Oklzb2xhdGUqLCBXcmFwcGVyV29ybGRUeXBlID0gR2V0RnJv
bUNvbnRleHQpOworICAgIHN0YXRpYyBib29sIEhhc0luc3RhbmNlKHY4OjpIYW5kbGU8djg6OlZh
bHVlPiwgdjg6Oklzb2xhdGUqLCBXcmFwcGVyV29ybGRUeXBlKTsKICAgICBzdGF0aWMgdjg6OlBl
cnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IEdldFRlbXBsYXRlKHY4OjpJc29sYXRlKiwg
V3JhcHBlcldvcmxkVHlwZSk7CiAgICAgc3RhdGljIFRlc3RDdXN0b21OYW1lZEdldHRlciogdG9O
YXRpdmUodjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBvYmplY3QpCiAgICAgewpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEV2ZW50Q29uc3Ry
dWN0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RF
dmVudENvbnN0cnVjdG9yLmgKaW5kZXggNDJiNjY2OTNkNzg3MTgxNmI2ZTlkODE3Nzc1YmIxYTE4
NDkxYjRhNy4uZWNkMTU5YmFjZDhjZTRjYTk5MWI1ZjUwNzUzZDJiMmUzNjRiZGEwOSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEV2ZW50
Q29uc3RydWN0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
VjgvVjhUZXN0RXZlbnRDb25zdHJ1Y3Rvci5oCkBAIC0zNSw3ICszNSw3IEBAIGNsYXNzIERpY3Rp
b25hcnk7CiBjbGFzcyBWOFRlc3RFdmVudENvbnN0cnVjdG9yIHsKIHB1YmxpYzoKICAgICBzdGF0
aWMgY29uc3QgYm9vbCBoYXNEZXBlbmRlbnRMaWZldGltZSA9IGZhbHNlOwotICAgIHN0YXRpYyBi
b29sIEhhc0luc3RhbmNlKHY4OjpIYW5kbGU8djg6OlZhbHVlPiwgdjg6Oklzb2xhdGUqLCBXcmFw
cGVyV29ybGRUeXBlID0gR2V0RnJvbUNvbnRleHQpOworICAgIHN0YXRpYyBib29sIEhhc0luc3Rh
bmNlKHY4OjpIYW5kbGU8djg6OlZhbHVlPiwgdjg6Oklzb2xhdGUqLCBXcmFwcGVyV29ybGRUeXBl
KTsKICAgICBzdGF0aWMgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IEdldFRl
bXBsYXRlKHY4OjpJc29sYXRlKiwgV3JhcHBlcldvcmxkVHlwZSk7CiAgICAgc3RhdGljIFRlc3RF
dmVudENvbnN0cnVjdG9yKiB0b05hdGl2ZSh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IG9iamVjdCkK
ICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
VjgvVjhUZXN0RXZlbnRUYXJnZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L1Y4L1Y4VGVzdEV2ZW50VGFyZ2V0LmNwcAppbmRleCA0NDg2ZWUyZDYxNzg5NDI3Zjgx
MjRmZjBjOTE2MWY3MDAwNjJhMDI0Li44MjUzNzAwMWNjOTc1YjcxZjNiYjA5ZWYxYmM3ZWEzNTAw
NzIyYmRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
VjgvVjhUZXN0RXZlbnRUYXJnZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9WOC9WOFRlc3RFdmVudFRhcmdldC5jcHAKQEAgLTEzNiw3ICsxMzYsNyBAQCBz
dGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGRpc3BhdGNoRXZlbnRNZXRob2QoY29uc3Qgdjg6
OkFyZ3VtZW50cyYgYXJncykKICAgICBUZXN0RXZlbnRUYXJnZXQqIGltcCA9IFY4VGVzdEV2ZW50
VGFyZ2V0Ojp0b05hdGl2ZShhcmdzLkhvbGRlcigpKTsKICAgICBFeGNlcHRpb25Db2RlIGVjID0g
MDsKICAgICB7Ci0gICAgVjhUUllDQVRDSChFdmVudCosIGV2dCwgVjhFdmVudDo6SGFzSW5zdGFu
Y2UoYXJnc1swXSwgYXJncy5HZXRJc29sYXRlKCkpID8gVjhFdmVudDo6dG9OYXRpdmUodjg6Okhh
bmRsZTx2ODo6T2JqZWN0Pjo6Q2FzdChhcmdzWzBdKSkgOiAwKTsKKyAgICBWOFRSWUNBVENIKEV2
ZW50KiwgZXZ0LCBWOEV2ZW50OjpIYXNJbnN0YW5jZShhcmdzWzBdLCBhcmdzLkdldElzb2xhdGUo
KSwgd29ybGRUeXBlKGFyZ3MuR2V0SXNvbGF0ZSgpKSkgPyBWOEV2ZW50Ojp0b05hdGl2ZSh2ODo6
SGFuZGxlPHY4OjpPYmplY3Q+OjpDYXN0KGFyZ3NbMF0pKSA6IDApOwogICAgIGJvb2wgcmVzdWx0
ID0gaW1wLT5kaXNwYXRjaEV2ZW50KGV2dCwgZWMpOwogICAgIGlmIChVTkxJS0VMWShlYykpCiAg
ICAgICAgIGdvdG8gZmFpbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9WOC9WOFRlc3RFdmVudFRhcmdldC5oIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEV2ZW50VGFyZ2V0LmgKaW5kZXggZDg4ODMzODQxNTk5
ZTMwZjUwZmQ0MTRkNDRhMmUxNjc3NzNjNzY5NS4uM2QzNjYyYTBiNjM0MjQ3ZDEwZmE3NjhkNGZm
NTNiN2RlNzYxYzU0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L1Y4L1Y4VGVzdEV2ZW50VGFyZ2V0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEV2ZW50VGFyZ2V0LmgKQEAgLTM0LDcgKzM0LDcgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgVjhUZXN0RXZlbnRUYXJnZXQgewogcHVibGljOgog
ICAgIHN0YXRpYyBjb25zdCBib29sIGhhc0RlcGVuZGVudExpZmV0aW1lID0gZmFsc2U7Ci0gICAg
c3RhdGljIGJvb2wgSGFzSW5zdGFuY2Uodjg6OkhhbmRsZTx2ODo6VmFsdWU+LCB2ODo6SXNvbGF0
ZSosIFdyYXBwZXJXb3JsZFR5cGUgPSBHZXRGcm9tQ29udGV4dCk7CisgICAgc3RhdGljIGJvb2wg
SGFzSW5zdGFuY2Uodjg6OkhhbmRsZTx2ODo6VmFsdWU+LCB2ODo6SXNvbGF0ZSosIFdyYXBwZXJX
b3JsZFR5cGUpOwogICAgIHN0YXRpYyB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0
ZT4gR2V0VGVtcGxhdGUodjg6Oklzb2xhdGUqLCBXcmFwcGVyV29ybGRUeXBlKTsKICAgICBzdGF0
aWMgVGVzdEV2ZW50VGFyZ2V0KiB0b05hdGl2ZSh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IG9iamVj
dCkKICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvVjgvVjhUZXN0RXhjZXB0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvVjgvVjhUZXN0RXhjZXB0aW9uLmgKaW5kZXggYmJiNzZkZDg2NmQ1YmI5MTQyNmVkODQ3
ZWI2OTE0NjU3MThlNTdiYS4uOWNmODMxOTUwMjBmNjBlMDI0YjY2MGI0NGQyYjBhZTM3YjFlNDA3
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4
VGVzdEV4Y2VwdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9WOC9WOFRlc3RFeGNlcHRpb24uaApAQCAtMzQsNyArMzQsNyBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiBjbGFzcyBWOFRlc3RFeGNlcHRpb24gewogcHVibGljOgogICAgIHN0YXRpYyBjb25zdCBi
b29sIGhhc0RlcGVuZGVudExpZmV0aW1lID0gZmFsc2U7Ci0gICAgc3RhdGljIGJvb2wgSGFzSW5z
dGFuY2Uodjg6OkhhbmRsZTx2ODo6VmFsdWU+LCB2ODo6SXNvbGF0ZSosIFdyYXBwZXJXb3JsZFR5
cGUgPSBHZXRGcm9tQ29udGV4dCk7CisgICAgc3RhdGljIGJvb2wgSGFzSW5zdGFuY2Uodjg6Okhh
bmRsZTx2ODo6VmFsdWU+LCB2ODo6SXNvbGF0ZSosIFdyYXBwZXJXb3JsZFR5cGUpOwogICAgIHN0
YXRpYyB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gR2V0VGVtcGxhdGUodjg6
Oklzb2xhdGUqLCBXcmFwcGVyV29ybGRUeXBlKTsKICAgICBzdGF0aWMgVGVzdEV4Y2VwdGlvbiog
dG9OYXRpdmUodjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBvYmplY3QpCiAgICAgewpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEludGVyZmFj
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0SW50
ZXJmYWNlLmNwcAppbmRleCBlOWU5NTI1NGEzMGM2NDllMzFjNjZjNDJiYmRkNDQ1OWU0MmFjZjRi
Li5lMGY4Y2NhYjZlOTEzN2JkZGU2NDdhZGY1NTY1N2U4YmY1YmMwYmRhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0SW50ZXJmYWNlLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0SW50
ZXJmYWNlLmNwcApAQCAtMjM0LDcgKzIzNCw3IEBAIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1
ZT4gc3VwcGxlbWVudGFsTm9kZUF0dHJHZXR0ZXJDYWxsYmFjayh2ODo6TG9jYWw8djg6OlN0CiBz
dGF0aWMgdm9pZCBzdXBwbGVtZW50YWxOb2RlQXR0clNldHRlcih2ODo6TG9jYWw8djg6OlN0cmlu
Zz4gbmFtZSwgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gdmFsdWUsIGNvbnN0IHY4OjpBY2Nlc3Nvcklu
Zm8mIGluZm8pCiB7CiAgICAgVGVzdEludGVyZmFjZSogaW1wID0gVjhUZXN0SW50ZXJmYWNlOjp0
b05hdGl2ZShpbmZvLkhvbGRlcigpKTsKLSAgICBOb2RlKiB2ID0gVjhOb2RlOjpIYXNJbnN0YW5j
ZSh2YWx1ZSwgaW5mby5HZXRJc29sYXRlKCkpID8gVjhOb2RlOjp0b05hdGl2ZSh2ODo6SGFuZGxl
PHY4OjpPYmplY3Q+OjpDYXN0KHZhbHVlKSkgOiAwOworICAgIE5vZGUqIHYgPSBWOE5vZGU6Okhh
c0luc3RhbmNlKHZhbHVlLCBpbmZvLkdldElzb2xhdGUoKSwgd29ybGRUeXBlKGluZm8uR2V0SXNv
bGF0ZSgpKSkgPyBWOE5vZGU6OnRvTmF0aXZlKHY4OjpIYW5kbGU8djg6Ok9iamVjdD46OkNhc3Qo
dmFsdWUpKSA6IDA7CiAgICAgVGVzdFN1cHBsZW1lbnRhbDo6c2V0U3VwcGxlbWVudGFsTm9kZShp
bXAsIFdURjo6Z2V0UHRyKHYpKTsKICAgICByZXR1cm47CiB9CkBAIC0yODAsNyArMjgwLDcgQEAg
c3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBzdXBwbGVtZW50YWxNZXRob2QyTWV0aG9kKGNv
bnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MKICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKICAgICB7
CiAgICAgVjhUUllDQVRDSF9GT1JfVjhTVFJJTkdSRVNPVVJDRShWOFN0cmluZ1Jlc291cmNlPD4s
IHN0ckFyZywgYXJnc1swXSk7Ci0gICAgVjhUUllDQVRDSChUZXN0T2JqKiwgb2JqQXJnLCBWOFRl
c3RPYmo6Okhhc0luc3RhbmNlKGFyZ3NbMV0sIGFyZ3MuR2V0SXNvbGF0ZSgpKSA/IFY4VGVzdE9i
ajo6dG9OYXRpdmUodjg6OkhhbmRsZTx2ODo6T2JqZWN0Pjo6Q2FzdChhcmdzWzFdKSkgOiAwKTsK
KyAgICBWOFRSWUNBVENIKFRlc3RPYmoqLCBvYmpBcmcsIFY4VGVzdE9iajo6SGFzSW5zdGFuY2Uo
YXJnc1sxXSwgYXJncy5HZXRJc29sYXRlKCksIHdvcmxkVHlwZShhcmdzLkdldElzb2xhdGUoKSkp
ID8gVjhUZXN0T2JqOjp0b05hdGl2ZSh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+OjpDYXN0KGFyZ3Nb
MV0pKSA6IDApOwogICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdENvbnRleHQgPSBn
ZXRTY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7CiAgICAgUmVmUHRyPFRlc3RPYmo+IHJlc3VsdCA9
IFRlc3RTdXBwbGVtZW50YWw6OnN1cHBsZW1lbnRhbE1ldGhvZDIoc2NyaXB0Q29udGV4dCwgaW1w
LCBzdHJBcmcsIG9iakFyZywgZWMpOwogICAgIGlmIChVTkxJS0VMWShlYykpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0SW50ZXJmYWNl
LmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0SW50ZXJm
YWNlLmgKaW5kZXggNjcyMzI5N2JmMGQ0NGJiNzZlNjUzNmJiNmQ4NjFlMDhkYWY0N2RjZS4uMDYx
OTYyODZjNjEzM2ZjNjQzNWNjMDlmYjcyZDk3NDc2OWFiNGM5YiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEludGVyZmFjZS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RJbnRlcmZhY2Uu
aApAQCAtMzUsNyArMzUsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBWOFRlc3RJbnRl
cmZhY2UgewogcHVibGljOgogICAgIHN0YXRpYyBjb25zdCBib29sIGhhc0RlcGVuZGVudExpZmV0
aW1lID0gdHJ1ZTsKLSAgICBzdGF0aWMgYm9vbCBIYXNJbnN0YW5jZSh2ODo6SGFuZGxlPHY4OjpW
YWx1ZT4sIHY4OjpJc29sYXRlKiwgV3JhcHBlcldvcmxkVHlwZSA9IEdldEZyb21Db250ZXh0KTsK
KyAgICBzdGF0aWMgYm9vbCBIYXNJbnN0YW5jZSh2ODo6SGFuZGxlPHY4OjpWYWx1ZT4sIHY4OjpJ
c29sYXRlKiwgV3JhcHBlcldvcmxkVHlwZSk7CiAgICAgc3RhdGljIHY4OjpQZXJzaXN0ZW50PHY4
OjpGdW5jdGlvblRlbXBsYXRlPiBHZXRUZW1wbGF0ZSh2ODo6SXNvbGF0ZSosIFdyYXBwZXJXb3Js
ZFR5cGUpOwogICAgIHN0YXRpYyBUZXN0SW50ZXJmYWNlKiB0b05hdGl2ZSh2ODo6SGFuZGxlPHY4
OjpPYmplY3Q+IG9iamVjdCkKICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lci5oIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE1lZGlhUXVlcnlMaXN0
TGlzdGVuZXIuaAppbmRleCA1MmI2YjA2NDM2ZjhkMGFhM2U1ZDQ5MWIzZmJmNGRmNWU4YzQwYmRl
Li4zMGI1ZGUwNGQ2OWZkYzI4NGUyNzgyYzdhNzg3NzkzY2I5NTkxN2ZlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0TWVkaWFRdWVyeUxp
c3RMaXN0ZW5lci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9W
OC9WOFRlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyLmgKQEAgLTM0LDcgKzM0LDcgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogY2xhc3MgVjhUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lciB7CiBwdWJs
aWM6CiAgICAgc3RhdGljIGNvbnN0IGJvb2wgaGFzRGVwZW5kZW50TGlmZXRpbWUgPSBmYWxzZTsK
LSAgICBzdGF0aWMgYm9vbCBIYXNJbnN0YW5jZSh2ODo6SGFuZGxlPHY4OjpWYWx1ZT4sIHY4OjpJ
c29sYXRlKiwgV3JhcHBlcldvcmxkVHlwZSA9IEdldEZyb21Db250ZXh0KTsKKyAgICBzdGF0aWMg
Ym9vbCBIYXNJbnN0YW5jZSh2ODo6SGFuZGxlPHY4OjpWYWx1ZT4sIHY4OjpJc29sYXRlKiwgV3Jh
cHBlcldvcmxkVHlwZSk7CiAgICAgc3RhdGljIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRl
bXBsYXRlPiBHZXRUZW1wbGF0ZSh2ODo6SXNvbGF0ZSosIFdyYXBwZXJXb3JsZFR5cGUpOwogICAg
IHN0YXRpYyBUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lciogdG9OYXRpdmUodjg6OkhhbmRsZTx2
ODo6T2JqZWN0PiBvYmplY3QpCiAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE5hbWVkQ29uc3RydWN0b3IuaCBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3ROYW1lZENvbnN0cnVjdG9yLmgK
aW5kZXggZjA1ZGNmYzVkOGNlMjc3MmUzZWEwZmUxYjVkZmQzNGE2ZmJlMDk3Zi4uMzk0MzY0YTU3
ZGJjZGJjMTJlYjYyNThlODY4NDMxNDgzZTQxZWFlOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE5hbWVkQ29uc3RydWN0b3IuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0TmFtZWRDb25z
dHJ1Y3Rvci5oCkBAIC00MCw3ICs0MCw3IEBAIHB1YmxpYzoKIGNsYXNzIFY4VGVzdE5hbWVkQ29u
c3RydWN0b3IgewogcHVibGljOgogICAgIHN0YXRpYyBjb25zdCBib29sIGhhc0RlcGVuZGVudExp
ZmV0aW1lID0gdHJ1ZTsKLSAgICBzdGF0aWMgYm9vbCBIYXNJbnN0YW5jZSh2ODo6SGFuZGxlPHY4
OjpWYWx1ZT4sIHY4OjpJc29sYXRlKiwgV3JhcHBlcldvcmxkVHlwZSA9IEdldEZyb21Db250ZXh0
KTsKKyAgICBzdGF0aWMgYm9vbCBIYXNJbnN0YW5jZSh2ODo6SGFuZGxlPHY4OjpWYWx1ZT4sIHY4
OjpJc29sYXRlKiwgV3JhcHBlcldvcmxkVHlwZSk7CiAgICAgc3RhdGljIHY4OjpQZXJzaXN0ZW50
PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBHZXRUZW1wbGF0ZSh2ODo6SXNvbGF0ZSosIFdyYXBwZXJX
b3JsZFR5cGUpOwogICAgIHN0YXRpYyBUZXN0TmFtZWRDb25zdHJ1Y3RvciogdG9OYXRpdmUodjg6
OkhhbmRsZTx2ODo6T2JqZWN0PiBvYmplY3QpCiAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE5vZGUuaCBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3ROb2RlLmgKaW5kZXggZjhjOWY5NjM2
M2EwZjAxODhiZWY1ODBiOTZhZTJmMzQxNjBlYTc0OC4uNTg2MGU5MTE1YzBiMDM0YmM1MWNhNTA5
MzU2NTc3ODBjYzNjYmE1OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L1Y4L1Y4VGVzdE5vZGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvVjgvVjhUZXN0Tm9kZS5oCkBAIC0zNCw3ICszNCw3IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIGNsYXNzIFY4VGVzdE5vZGUgewogcHVibGljOgogICAgIHN0YXRpYyBjb25zdCBi
b29sIGhhc0RlcGVuZGVudExpZmV0aW1lID0gdHJ1ZTsKLSAgICBzdGF0aWMgYm9vbCBIYXNJbnN0
YW5jZSh2ODo6SGFuZGxlPHY4OjpWYWx1ZT4sIHY4OjpJc29sYXRlKiwgV3JhcHBlcldvcmxkVHlw
ZSA9IEdldEZyb21Db250ZXh0KTsKKyAgICBzdGF0aWMgYm9vbCBIYXNJbnN0YW5jZSh2ODo6SGFu
ZGxlPHY4OjpWYWx1ZT4sIHY4OjpJc29sYXRlKiwgV3JhcHBlcldvcmxkVHlwZSk7CiAgICAgc3Rh
dGljIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBHZXRUZW1wbGF0ZSh2ODo6
SXNvbGF0ZSosIFdyYXBwZXJXb3JsZFR5cGUpOwogICAgIHN0YXRpYyBUZXN0Tm9kZSogdG9OYXRp
dmUodjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBvYmplY3QpCiAgICAgewpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE9iai5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0T2JqLmNwcAppbmRleCA4
MGFlNTk5NDhmNzNkZDMzMTI0Y2JiZDMwNWM2MDQyNWU5NDgyM2VjLi40NzVmZjcxZDZmNWZjYTgx
MmNmMzkyNWRjYzEwYjFhM2MzODkzZmNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0T2JqLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0T2JqLmNwcApAQCAtMzcwLDcgKzM3MCw3IEBA
IHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdGVzdE9iakF0dHJBdHRyR2V0dGVyQ2FsbGJh
Y2sodjg6OkxvY2FsPHY4OjpTdHJpbmc+CiBzdGF0aWMgdm9pZCB0ZXN0T2JqQXR0ckF0dHJTZXR0
ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIHY4OjpMb2NhbDx2ODo6VmFsdWU+IHZhbHVl
LCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQogewogICAgIFRlc3RPYmoqIGltcCA9IFY4
VGVzdE9iajo6dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSk7Ci0gICAgVGVzdE9iaiogdiA9IFY4VGVz
dE9iajo6SGFzSW5zdGFuY2UodmFsdWUsIGluZm8uR2V0SXNvbGF0ZSgpKSA/IFY4VGVzdE9iajo6
dG9OYXRpdmUodjg6OkhhbmRsZTx2ODo6T2JqZWN0Pjo6Q2FzdCh2YWx1ZSkpIDogMDsKKyAgICBU
ZXN0T2JqKiB2ID0gVjhUZXN0T2JqOjpIYXNJbnN0YW5jZSh2YWx1ZSwgaW5mby5HZXRJc29sYXRl
KCksIHdvcmxkVHlwZShpbmZvLkdldElzb2xhdGUoKSkpID8gVjhUZXN0T2JqOjp0b05hdGl2ZSh2
ODo6SGFuZGxlPHY4OjpPYmplY3Q+OjpDYXN0KHZhbHVlKSkgOiAwOwogICAgIGltcC0+c2V0VGVz
dE9iakF0dHIoV1RGOjpnZXRQdHIodikpOwogICAgIHJldHVybjsKIH0KQEAgLTM5NSw3ICszOTUs
NyBAQCBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFhNTE9iakF0dHJBdHRyR2V0dGVyQ2Fs
bGJhY2sodjg6OkxvY2FsPHY4OjpTdHJpbmc+CiBzdGF0aWMgdm9pZCBYTUxPYmpBdHRyQXR0clNl
dHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gdmFs
dWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCiB7CiAgICAgVGVzdE9iaiogaW1wID0g
VjhUZXN0T2JqOjp0b05hdGl2ZShpbmZvLkhvbGRlcigpKTsKLSAgICBUZXN0T2JqKiB2ID0gVjhU
ZXN0T2JqOjpIYXNJbnN0YW5jZSh2YWx1ZSwgaW5mby5HZXRJc29sYXRlKCkpID8gVjhUZXN0T2Jq
Ojp0b05hdGl2ZSh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+OjpDYXN0KHZhbHVlKSkgOiAwOworICAg
IFRlc3RPYmoqIHYgPSBWOFRlc3RPYmo6Okhhc0luc3RhbmNlKHZhbHVlLCBpbmZvLkdldElzb2xh
dGUoKSwgd29ybGRUeXBlKGluZm8uR2V0SXNvbGF0ZSgpKSkgPyBWOFRlc3RPYmo6OnRvTmF0aXZl
KHY4OjpIYW5kbGU8djg6Ok9iamVjdD46OkNhc3QodmFsdWUpKSA6IDA7CiAgICAgaW1wLT5zZXRY
TUxPYmpBdHRyKFdURjo6Z2V0UHRyKHYpKTsKICAgICByZXR1cm47CiB9CkBAIC02NTksNyArNjU5
LDcgQEAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB0eXBlZEFycmF5QXR0ckF0dHJHZXR0
ZXJDYWxsYmFjayh2ODo6TG9jYWw8djg6OlN0cmkKIHN0YXRpYyB2b2lkIHR5cGVkQXJyYXlBdHRy
QXR0clNldHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgdjg6OkxvY2FsPHY4OjpWYWx1
ZT4gdmFsdWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCiB7CiAgICAgVGVzdE9iaiog
aW1wID0gVjhUZXN0T2JqOjp0b05hdGl2ZShpbmZvLkhvbGRlcigpKTsKLSAgICBGbG9hdDMyQXJy
YXkqIHYgPSBWOEZsb2F0MzJBcnJheTo6SGFzSW5zdGFuY2UodmFsdWUsIGluZm8uR2V0SXNvbGF0
ZSgpKSA/IFY4RmxvYXQzMkFycmF5Ojp0b05hdGl2ZSh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+OjpD
YXN0KHZhbHVlKSkgOiAwOworICAgIEZsb2F0MzJBcnJheSogdiA9IFY4RmxvYXQzMkFycmF5OjpI
YXNJbnN0YW5jZSh2YWx1ZSwgaW5mby5HZXRJc29sYXRlKCksIHdvcmxkVHlwZShpbmZvLkdldElz
b2xhdGUoKSkpID8gVjhGbG9hdDMyQXJyYXk6OnRvTmF0aXZlKHY4OjpIYW5kbGU8djg6Ok9iamVj
dD46OkNhc3QodmFsdWUpKSA6IDA7CiAgICAgaW1wLT5zZXRUeXBlZEFycmF5QXR0cihXVEY6Omdl
dFB0cih2KSk7CiAgICAgcmV0dXJuOwogfQpAQCAtODM4LDcgKzgzOCw3IEBAIHN0YXRpYyB2ODo6
SGFuZGxlPHY4OjpWYWx1ZT4gd2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBdHRyaWJ1dGVBdHRy
R2V0dGVyQ2FsbGJhCiBzdGF0aWMgdm9pZCB3aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEF0dHJp
YnV0ZUF0dHJTZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIHY4OjpMb2NhbDx2ODo6
VmFsdWU+IHZhbHVlLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQogewogICAgIFRlc3RP
YmoqIGltcCA9IFY4VGVzdE9iajo6dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSk7Ci0gICAgVGVzdE9i
aiogdiA9IFY4VGVzdE9iajo6SGFzSW5zdGFuY2UodmFsdWUsIGluZm8uR2V0SXNvbGF0ZSgpKSA/
IFY4VGVzdE9iajo6dG9OYXRpdmUodjg6OkhhbmRsZTx2ODo6T2JqZWN0Pjo6Q2FzdCh2YWx1ZSkp
IDogMDsKKyAgICBUZXN0T2JqKiB2ID0gVjhUZXN0T2JqOjpIYXNJbnN0YW5jZSh2YWx1ZSwgaW5m
by5HZXRJc29sYXRlKCksIHdvcmxkVHlwZShpbmZvLkdldElzb2xhdGUoKSkpID8gVjhUZXN0T2Jq
Ojp0b05hdGl2ZSh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+OjpDYXN0KHZhbHVlKSkgOiAwOwogICAg
IFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdENvbnRleHQgPSBnZXRTY3JpcHRFeGVjdXRp
b25Db250ZXh0KCk7CiAgICAgaW1wLT5zZXRXaXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEF0dHJp
YnV0ZShzY3JpcHRDb250ZXh0LCBXVEY6OmdldFB0cih2KSk7CiAgICAgcmV0dXJuOwpAQCAtODcz
LDcgKzg3Myw3IEBAIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gd2l0aFNjcmlwdFN0YXRl
QXR0cmlidXRlUmFpc2VzQXR0ckdldHRlckNhbGxiYWNrKHY4CiBzdGF0aWMgdm9pZCB3aXRoU2Ny
aXB0U3RhdGVBdHRyaWJ1dGVSYWlzZXNBdHRyU2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBu
YW1lLCB2ODo6TG9jYWw8djg6OlZhbHVlPiB2YWx1ZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYg
aW5mbykKIHsKICAgICBUZXN0T2JqKiBpbXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZlKGluZm8uSG9s
ZGVyKCkpOwotICAgIFRlc3RPYmoqIHYgPSBWOFRlc3RPYmo6Okhhc0luc3RhbmNlKHZhbHVlLCBp
bmZvLkdldElzb2xhdGUoKSkgPyBWOFRlc3RPYmo6OnRvTmF0aXZlKHY4OjpIYW5kbGU8djg6Ok9i
amVjdD46OkNhc3QodmFsdWUpKSA6IDA7CisgICAgVGVzdE9iaiogdiA9IFY4VGVzdE9iajo6SGFz
SW5zdGFuY2UodmFsdWUsIGluZm8uR2V0SXNvbGF0ZSgpLCB3b3JsZFR5cGUoaW5mby5HZXRJc29s
YXRlKCkpKSA/IFY4VGVzdE9iajo6dG9OYXRpdmUodjg6OkhhbmRsZTx2ODo6T2JqZWN0Pjo6Q2Fz
dCh2YWx1ZSkpIDogMDsKICAgICBTY3JpcHRTdGF0ZSogY3VycmVudFN0YXRlID0gU2NyaXB0U3Rh
dGU6OmN1cnJlbnQoKTsKICAgICBpZiAoIWN1cnJlbnRTdGF0ZSkKICAgICAgICAgcmV0dXJuOwpA
QCAtOTA4LDcgKzkwOCw3IEBAIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gd2l0aFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHRBdHRyaWJ1dGVSYWlzZXNBdHRyR2V0dGVyCiBzdGF0aWMgdm9pZCB3
aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEF0dHJpYnV0ZVJhaXNlc0F0dHJTZXR0ZXIodjg6Okxv
Y2FsPHY4OjpTdHJpbmc+IG5hbWUsIHY4OjpMb2NhbDx2ODo6VmFsdWU+IHZhbHVlLCBjb25zdCB2
ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQogewogICAgIFRlc3RPYmoqIGltcCA9IFY4VGVzdE9iajo6
dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSk7Ci0gICAgVGVzdE9iaiogdiA9IFY4VGVzdE9iajo6SGFz
SW5zdGFuY2UodmFsdWUsIGluZm8uR2V0SXNvbGF0ZSgpKSA/IFY4VGVzdE9iajo6dG9OYXRpdmUo
djg6OkhhbmRsZTx2ODo6T2JqZWN0Pjo6Q2FzdCh2YWx1ZSkpIDogMDsKKyAgICBUZXN0T2JqKiB2
ID0gVjhUZXN0T2JqOjpIYXNJbnN0YW5jZSh2YWx1ZSwgaW5mby5HZXRJc29sYXRlKCksIHdvcmxk
VHlwZShpbmZvLkdldElzb2xhdGUoKSkpID8gVjhUZXN0T2JqOjp0b05hdGl2ZSh2ODo6SGFuZGxl
PHY4OjpPYmplY3Q+OjpDYXN0KHZhbHVlKSkgOiAwOwogICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqIHNjcmlwdENvbnRleHQgPSBnZXRTY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7CiAgICAgaW1w
LT5zZXRXaXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEF0dHJpYnV0ZVJhaXNlcyhzY3JpcHRDb250
ZXh0LCBXVEY6OmdldFB0cih2KSk7CiAgICAgcmV0dXJuOwpAQCAtOTM4LDcgKzkzOCw3IEBAIHN0
YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gd2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRT
Y3JpcHRTdGF0ZUF0dHJpYnV0ZUF0CiBzdGF0aWMgdm9pZCB3aXRoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dEFuZFNjcmlwdFN0YXRlQXR0cmlidXRlQXR0clNldHRlcih2ODo6TG9jYWw8djg6OlN0cmlu
Zz4gbmFtZSwgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gdmFsdWUsIGNvbnN0IHY4OjpBY2Nlc3Nvcklu
Zm8mIGluZm8pCiB7CiAgICAgVGVzdE9iaiogaW1wID0gVjhUZXN0T2JqOjp0b05hdGl2ZShpbmZv
LkhvbGRlcigpKTsKLSAgICBUZXN0T2JqKiB2ID0gVjhUZXN0T2JqOjpIYXNJbnN0YW5jZSh2YWx1
ZSwgaW5mby5HZXRJc29sYXRlKCkpID8gVjhUZXN0T2JqOjp0b05hdGl2ZSh2ODo6SGFuZGxlPHY4
OjpPYmplY3Q+OjpDYXN0KHZhbHVlKSkgOiAwOworICAgIFRlc3RPYmoqIHYgPSBWOFRlc3RPYmo6
Okhhc0luc3RhbmNlKHZhbHVlLCBpbmZvLkdldElzb2xhdGUoKSwgd29ybGRUeXBlKGluZm8uR2V0
SXNvbGF0ZSgpKSkgPyBWOFRlc3RPYmo6OnRvTmF0aXZlKHY4OjpIYW5kbGU8djg6Ok9iamVjdD46
OkNhc3QodmFsdWUpKSA6IDA7CiAgICAgU2NyaXB0U3RhdGUqIGN1cnJlbnRTdGF0ZSA9IFNjcmlw
dFN0YXRlOjpjdXJyZW50KCk7CiAgICAgaWYgKCFjdXJyZW50U3RhdGUpCiAgICAgICAgIHJldHVy
bjsKQEAgLTk4MCw3ICs5ODAsNyBAQCBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHdpdGhT
Y3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVBdHRyaWJ1dGVSYQogc3RhdGljIHZv
aWQgd2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZUF0dHJpYnV0ZVJhaXNl
c0F0dHJTZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIHY4OjpMb2NhbDx2ODo6VmFs
dWU+IHZhbHVlLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQogewogICAgIFRlc3RPYmoq
IGltcCA9IFY4VGVzdE9iajo6dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSk7Ci0gICAgVGVzdE9iaiog
diA9IFY4VGVzdE9iajo6SGFzSW5zdGFuY2UodmFsdWUsIGluZm8uR2V0SXNvbGF0ZSgpKSA/IFY4
VGVzdE9iajo6dG9OYXRpdmUodjg6OkhhbmRsZTx2ODo6T2JqZWN0Pjo6Q2FzdCh2YWx1ZSkpIDog
MDsKKyAgICBUZXN0T2JqKiB2ID0gVjhUZXN0T2JqOjpIYXNJbnN0YW5jZSh2YWx1ZSwgaW5mby5H
ZXRJc29sYXRlKCksIHdvcmxkVHlwZShpbmZvLkdldElzb2xhdGUoKSkpID8gVjhUZXN0T2JqOjp0
b05hdGl2ZSh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+OjpDYXN0KHZhbHVlKSkgOiAwOwogICAgIFNj
cmlwdFN0YXRlKiBjdXJyZW50U3RhdGUgPSBTY3JpcHRTdGF0ZTo6Y3VycmVudCgpOwogICAgIGlm
ICghY3VycmVudFN0YXRlKQogICAgICAgICByZXR1cm47CkBAIC0xMDE2LDcgKzEwMTYsNyBAQCBz
dGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHdpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5k
U2NyaXB0U3RhdGVXaXRoU3BhY2VzQQogc3RhdGljIHZvaWQgd2l0aFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHRBbmRTY3JpcHRTdGF0ZVdpdGhTcGFjZXNBdHRyaWJ1dGVBdHRyU2V0dGVyKHY4OjpMb2Nh
bDx2ODo6U3RyaW5nPiBuYW1lLCB2ODo6TG9jYWw8djg6OlZhbHVlPiB2YWx1ZSwgY29uc3Qgdjg6
OkFjY2Vzc29ySW5mbyYgaW5mbykKIHsKICAgICBUZXN0T2JqKiBpbXAgPSBWOFRlc3RPYmo6OnRv
TmF0aXZlKGluZm8uSG9sZGVyKCkpOwotICAgIFRlc3RPYmoqIHYgPSBWOFRlc3RPYmo6Okhhc0lu
c3RhbmNlKHZhbHVlLCBpbmZvLkdldElzb2xhdGUoKSkgPyBWOFRlc3RPYmo6OnRvTmF0aXZlKHY4
OjpIYW5kbGU8djg6Ok9iamVjdD46OkNhc3QodmFsdWUpKSA6IDA7CisgICAgVGVzdE9iaiogdiA9
IFY4VGVzdE9iajo6SGFzSW5zdGFuY2UodmFsdWUsIGluZm8uR2V0SXNvbGF0ZSgpLCB3b3JsZFR5
cGUoaW5mby5HZXRJc29sYXRlKCkpKSA/IFY4VGVzdE9iajo6dG9OYXRpdmUodjg6OkhhbmRsZTx2
ODo6T2JqZWN0Pjo6Q2FzdCh2YWx1ZSkpIDogMDsKICAgICBTY3JpcHRTdGF0ZSogY3VycmVudFN0
YXRlID0gU2NyaXB0U3RhdGU6OmN1cnJlbnQoKTsKICAgICBpZiAoIWN1cnJlbnRTdGF0ZSkKICAg
ICAgICAgcmV0dXJuOwpAQCAtMTA0Nyw3ICsxMDQ3LDcgQEAgc3RhdGljIHY4OjpIYW5kbGU8djg6
OlZhbHVlPiB3aXRoU2NyaXB0QXJndW1lbnRzQW5kQ2FsbFN0YWNrQXR0cmlidXRlQXR0ckdldHRl
ckMKIHN0YXRpYyB2b2lkIHdpdGhTY3JpcHRBcmd1bWVudHNBbmRDYWxsU3RhY2tBdHRyaWJ1dGVB
dHRyU2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCB2ODo6TG9jYWw8djg6OlZhbHVl
PiB2YWx1ZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKIHsKICAgICBUZXN0T2JqKiBp
bXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkpOwotICAgIFRlc3RPYmoqIHYg
PSBWOFRlc3RPYmo6Okhhc0luc3RhbmNlKHZhbHVlLCBpbmZvLkdldElzb2xhdGUoKSkgPyBWOFRl
c3RPYmo6OnRvTmF0aXZlKHY4OjpIYW5kbGU8djg6Ok9iamVjdD46OkNhc3QodmFsdWUpKSA6IDA7
CisgICAgVGVzdE9iaiogdiA9IFY4VGVzdE9iajo6SGFzSW5zdGFuY2UodmFsdWUsIGluZm8uR2V0
SXNvbGF0ZSgpLCB3b3JsZFR5cGUoaW5mby5HZXRJc29sYXRlKCkpKSA/IFY4VGVzdE9iajo6dG9O
YXRpdmUodjg6OkhhbmRsZTx2ODo6T2JqZWN0Pjo6Q2FzdCh2YWx1ZSkpIDogMDsKICAgICBpbXAt
PnNldFdpdGhTY3JpcHRBcmd1bWVudHNBbmRDYWxsU3RhY2tBdHRyaWJ1dGUoV1RGOjpnZXRQdHIo
dikpOwogICAgIHJldHVybjsKIH0KQEAgLTEzOTUsNyArMTM5NSw3IEBAIHN0YXRpYyB2ODo6SGFu
ZGxlPHY4OjpWYWx1ZT4gbXV0YWJsZVBvaW50QXR0ckdldHRlckNhbGxiYWNrKHY4OjpMb2NhbDx2
ODo6U3RyaW5nCiBzdGF0aWMgdm9pZCBtdXRhYmxlUG9pbnRBdHRyU2V0dGVyKHY4OjpMb2NhbDx2
ODo6U3RyaW5nPiBuYW1lLCB2ODo6TG9jYWw8djg6OlZhbHVlPiB2YWx1ZSwgY29uc3Qgdjg6OkFj
Y2Vzc29ySW5mbyYgaW5mbykKIHsKICAgICBUZXN0T2JqKiBpbXAgPSBWOFRlc3RPYmo6OnRvTmF0
aXZlKGluZm8uSG9sZGVyKCkpOwotICAgIFJlZlB0cjxTVkdQcm9wZXJ0eVRlYXJPZmY8RmxvYXRQ
b2ludD4gPiB2ID0gVjhTVkdQb2ludDo6SGFzSW5zdGFuY2UodmFsdWUsIGluZm8uR2V0SXNvbGF0
ZSgpKSA/IFY4U1ZHUG9pbnQ6OnRvTmF0aXZlKHY4OjpIYW5kbGU8djg6Ok9iamVjdD46OkNhc3Qo
dmFsdWUpKSA6IDA7CisgICAgUmVmUHRyPFNWR1Byb3BlcnR5VGVhck9mZjxGbG9hdFBvaW50PiA+
IHYgPSBWOFNWR1BvaW50OjpIYXNJbnN0YW5jZSh2YWx1ZSwgaW5mby5HZXRJc29sYXRlKCksIHdv
cmxkVHlwZShpbmZvLkdldElzb2xhdGUoKSkpID8gVjhTVkdQb2ludDo6dG9OYXRpdmUodjg6Okhh
bmRsZTx2ODo6T2JqZWN0Pjo6Q2FzdCh2YWx1ZSkpIDogMDsKICAgICBpbXAtPnNldE11dGFibGVQ
b2ludChXVEY6OmdldFB0cih2KSk7CiAgICAgcmV0dXJuOwogfQpAQCAtMTQxOSw3ICsxNDE5LDcg
QEAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBpbW11dGFibGVQb2ludEF0dHJHZXR0ZXJD
YWxsYmFjayh2ODo6TG9jYWw8djg6OlN0cmkKIHN0YXRpYyB2b2lkIGltbXV0YWJsZVBvaW50QXR0
clNldHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgdjg6OkxvY2FsPHY4OjpWYWx1ZT4g
dmFsdWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCiB7CiAgICAgVGVzdE9iaiogaW1w
ID0gVjhUZXN0T2JqOjp0b05hdGl2ZShpbmZvLkhvbGRlcigpKTsKLSAgICBSZWZQdHI8U1ZHUHJv
cGVydHlUZWFyT2ZmPEZsb2F0UG9pbnQ+ID4gdiA9IFY4U1ZHUG9pbnQ6Okhhc0luc3RhbmNlKHZh
bHVlLCBpbmZvLkdldElzb2xhdGUoKSkgPyBWOFNWR1BvaW50Ojp0b05hdGl2ZSh2ODo6SGFuZGxl
PHY4OjpPYmplY3Q+OjpDYXN0KHZhbHVlKSkgOiAwOworICAgIFJlZlB0cjxTVkdQcm9wZXJ0eVRl
YXJPZmY8RmxvYXRQb2ludD4gPiB2ID0gVjhTVkdQb2ludDo6SGFzSW5zdGFuY2UodmFsdWUsIGlu
Zm8uR2V0SXNvbGF0ZSgpLCB3b3JsZFR5cGUoaW5mby5HZXRJc29sYXRlKCkpKSA/IFY4U1ZHUG9p
bnQ6OnRvTmF0aXZlKHY4OjpIYW5kbGU8djg6Ok9iamVjdD46OkNhc3QodmFsdWUpKSA6IDA7CiAg
ICAgaW1wLT5zZXRJbW11dGFibGVQb2ludChXVEY6OmdldFB0cih2KSk7CiAgICAgcmV0dXJuOwog
fQpAQCAtMTU3Miw3ICsxNTcyLDcgQEAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB2b2lk
TWV0aG9kV2l0aEFyZ3NNZXRob2QoY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKICAgICBUZXN0
T2JqKiBpbXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZlKGFyZ3MuSG9sZGVyKCkpOwogICAgIFY4VFJZ
Q0FUQ0goaW50LCBsb25nQXJnLCB0b0ludDMyKGFyZ3NbMF0pKTsKICAgICBWOFRSWUNBVENIX0ZP
Ul9WOFNUUklOR1JFU09VUkNFKFY4U3RyaW5nUmVzb3VyY2U8Piwgc3RyQXJnLCBhcmdzWzFdKTsK
LSAgICBWOFRSWUNBVENIKFRlc3RPYmoqLCBvYmpBcmcsIFY4VGVzdE9iajo6SGFzSW5zdGFuY2Uo
YXJnc1syXSwgYXJncy5HZXRJc29sYXRlKCkpID8gVjhUZXN0T2JqOjp0b05hdGl2ZSh2ODo6SGFu
ZGxlPHY4OjpPYmplY3Q+OjpDYXN0KGFyZ3NbMl0pKSA6IDApOworICAgIFY4VFJZQ0FUQ0goVGVz
dE9iaiosIG9iakFyZywgVjhUZXN0T2JqOjpIYXNJbnN0YW5jZShhcmdzWzJdLCBhcmdzLkdldElz
b2xhdGUoKSwgd29ybGRUeXBlKGFyZ3MuR2V0SXNvbGF0ZSgpKSkgPyBWOFRlc3RPYmo6OnRvTmF0
aXZlKHY4OjpIYW5kbGU8djg6Ok9iamVjdD46OkNhc3QoYXJnc1syXSkpIDogMCk7CiAgICAgaW1w
LT52b2lkTWV0aG9kV2l0aEFyZ3MobG9uZ0FyZywgc3RyQXJnLCBvYmpBcmcpOwogICAgIHJldHVy
biB2OFVuZGVmaW5lZCgpOwogfQpAQCAtMTYwMCw3ICsxNjAwLDcgQEAgc3RhdGljIHY4OjpIYW5k
bGU8djg6OlZhbHVlPiBsb25nTWV0aG9kV2l0aEFyZ3NNZXRob2QoY29uc3Qgdjg6OkFyZ3VtZW50
cyYgYXJncykKICAgICBUZXN0T2JqKiBpbXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZlKGFyZ3MuSG9s
ZGVyKCkpOwogICAgIFY4VFJZQ0FUQ0goaW50LCBsb25nQXJnLCB0b0ludDMyKGFyZ3NbMF0pKTsK
ICAgICBWOFRSWUNBVENIX0ZPUl9WOFNUUklOR1JFU09VUkNFKFY4U3RyaW5nUmVzb3VyY2U8Piwg
c3RyQXJnLCBhcmdzWzFdKTsKLSAgICBWOFRSWUNBVENIKFRlc3RPYmoqLCBvYmpBcmcsIFY4VGVz
dE9iajo6SGFzSW5zdGFuY2UoYXJnc1syXSwgYXJncy5HZXRJc29sYXRlKCkpID8gVjhUZXN0T2Jq
Ojp0b05hdGl2ZSh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+OjpDYXN0KGFyZ3NbMl0pKSA6IDApOwor
ICAgIFY4VFJZQ0FUQ0goVGVzdE9iaiosIG9iakFyZywgVjhUZXN0T2JqOjpIYXNJbnN0YW5jZShh
cmdzWzJdLCBhcmdzLkdldElzb2xhdGUoKSwgd29ybGRUeXBlKGFyZ3MuR2V0SXNvbGF0ZSgpKSkg
PyBWOFRlc3RPYmo6OnRvTmF0aXZlKHY4OjpIYW5kbGU8djg6Ok9iamVjdD46OkNhc3QoYXJnc1sy
XSkpIDogMCk7CiAgICAgcmV0dXJuIHY4SW50ZWdlcihpbXAtPmxvbmdNZXRob2RXaXRoQXJncyhs
b25nQXJnLCBzdHJBcmcsIG9iakFyZyksIGFyZ3MuR2V0SXNvbGF0ZSgpKTsKIH0KIApAQCAtMTYy
OCw3ICsxNjI4LDcgQEAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBvYmpNZXRob2RXaXRo
QXJnc01ldGhvZChjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogICAgIFRlc3RPYmoqIGltcCA9
IFY4VGVzdE9iajo6dG9OYXRpdmUoYXJncy5Ib2xkZXIoKSk7CiAgICAgVjhUUllDQVRDSChpbnQs
IGxvbmdBcmcsIHRvSW50MzIoYXJnc1swXSkpOwogICAgIFY4VFJZQ0FUQ0hfRk9SX1Y4U1RSSU5H
UkVTT1VSQ0UoVjhTdHJpbmdSZXNvdXJjZTw+LCBzdHJBcmcsIGFyZ3NbMV0pOwotICAgIFY4VFJZ
Q0FUQ0goVGVzdE9iaiosIG9iakFyZywgVjhUZXN0T2JqOjpIYXNJbnN0YW5jZShhcmdzWzJdLCBh
cmdzLkdldElzb2xhdGUoKSkgPyBWOFRlc3RPYmo6OnRvTmF0aXZlKHY4OjpIYW5kbGU8djg6Ok9i
amVjdD46OkNhc3QoYXJnc1syXSkpIDogMCk7CisgICAgVjhUUllDQVRDSChUZXN0T2JqKiwgb2Jq
QXJnLCBWOFRlc3RPYmo6Okhhc0luc3RhbmNlKGFyZ3NbMl0sIGFyZ3MuR2V0SXNvbGF0ZSgpLCB3
b3JsZFR5cGUoYXJncy5HZXRJc29sYXRlKCkpKSA/IFY4VGVzdE9iajo6dG9OYXRpdmUodjg6Okhh
bmRsZTx2ODo6T2JqZWN0Pjo6Q2FzdChhcmdzWzJdKSkgOiAwKTsKICAgICByZXR1cm4gdG9WOChp
bXAtPm9iak1ldGhvZFdpdGhBcmdzKGxvbmdBcmcsIHN0ckFyZywgb2JqQXJnKSwgYXJncy5Ib2xk
ZXIoKSwgYXJncy5HZXRJc29sYXRlKCkpOwogfQogCkBAIC0xNjc0LDcgKzE2NzQsNyBAQCBzdGF0
aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IG1ldGhvZFRoYXRSZXF1aXJlc0FsbEFyZ3NBbmRUaHJv
d3NNZXRob2QoY29uc3Qgdjg6OgogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwogICAgIHsKICAg
ICBWOFRSWUNBVENIX0ZPUl9WOFNUUklOR1JFU09VUkNFKFY4U3RyaW5nUmVzb3VyY2U8Piwgc3Ry
QXJnLCBhcmdzWzBdKTsKLSAgICBWOFRSWUNBVENIKFRlc3RPYmoqLCBvYmpBcmcsIFY4VGVzdE9i
ajo6SGFzSW5zdGFuY2UoYXJnc1sxXSwgYXJncy5HZXRJc29sYXRlKCkpID8gVjhUZXN0T2JqOjp0
b05hdGl2ZSh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+OjpDYXN0KGFyZ3NbMV0pKSA6IDApOworICAg
IFY4VFJZQ0FUQ0goVGVzdE9iaiosIG9iakFyZywgVjhUZXN0T2JqOjpIYXNJbnN0YW5jZShhcmdz
WzFdLCBhcmdzLkdldElzb2xhdGUoKSwgd29ybGRUeXBlKGFyZ3MuR2V0SXNvbGF0ZSgpKSkgPyBW
OFRlc3RPYmo6OnRvTmF0aXZlKHY4OjpIYW5kbGU8djg6Ok9iamVjdD46OkNhc3QoYXJnc1sxXSkp
IDogMCk7CiAgICAgUmVmUHRyPFRlc3RPYmo+IHJlc3VsdCA9IGltcC0+bWV0aG9kVGhhdFJlcXVp
cmVzQWxsQXJnc0FuZFRocm93cyhzdHJBcmcsIG9iakFyZywgZWMpOwogICAgIGlmIChVTkxJS0VM
WShlYykpCiAgICAgICAgIGdvdG8gZmFpbDsKQEAgLTIyNDEsNyArMjI0MSw3IEBAIHN0YXRpYyB2
ODo6SGFuZGxlPHY4OjpWYWx1ZT4gb3ZlcmxvYWRlZE1ldGhvZDFNZXRob2QoY29uc3Qgdjg6OkFy
Z3VtZW50cyYgYXJncykKICAgICBpZiAoYXJncy5MZW5ndGgoKSA8IDIpCiAgICAgICAgIHJldHVy
biB0aHJvd05vdEVub3VnaEFyZ3VtZW50c0Vycm9yKGFyZ3MuR2V0SXNvbGF0ZSgpKTsKICAgICBU
ZXN0T2JqKiBpbXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZlKGFyZ3MuSG9sZGVyKCkpOwotICAgIFY4
VFJZQ0FUQ0goVGVzdE9iaiosIG9iakFyZywgVjhUZXN0T2JqOjpIYXNJbnN0YW5jZShhcmdzWzBd
LCBhcmdzLkdldElzb2xhdGUoKSkgPyBWOFRlc3RPYmo6OnRvTmF0aXZlKHY4OjpIYW5kbGU8djg6
Ok9iamVjdD46OkNhc3QoYXJnc1swXSkpIDogMCk7CisgICAgVjhUUllDQVRDSChUZXN0T2JqKiwg
b2JqQXJnLCBWOFRlc3RPYmo6Okhhc0luc3RhbmNlKGFyZ3NbMF0sIGFyZ3MuR2V0SXNvbGF0ZSgp
LCB3b3JsZFR5cGUoYXJncy5HZXRJc29sYXRlKCkpKSA/IFY4VGVzdE9iajo6dG9OYXRpdmUodjg6
OkhhbmRsZTx2ODo6T2JqZWN0Pjo6Q2FzdChhcmdzWzBdKSkgOiAwKTsKICAgICBWOFRSWUNBVENI
X0ZPUl9WOFNUUklOR1JFU09VUkNFKFY4U3RyaW5nUmVzb3VyY2U8Piwgc3RyQXJnLCBhcmdzWzFd
KTsKICAgICBpbXAtPm92ZXJsb2FkZWRNZXRob2Qob2JqQXJnLCBzdHJBcmcpOwogICAgIHJldHVy
biB2OFVuZGVmaW5lZCgpOwpAQCAtMjI1Miw3ICsyMjUyLDcgQEAgc3RhdGljIHY4OjpIYW5kbGU8
djg6OlZhbHVlPiBvdmVybG9hZGVkTWV0aG9kMk1ldGhvZChjb25zdCB2ODo6QXJndW1lbnRzJiBh
cmdzKQogICAgIGlmIChhcmdzLkxlbmd0aCgpIDwgMSkKICAgICAgICAgcmV0dXJuIHRocm93Tm90
RW5vdWdoQXJndW1lbnRzRXJyb3IoYXJncy5HZXRJc29sYXRlKCkpOwogICAgIFRlc3RPYmoqIGlt
cCA9IFY4VGVzdE9iajo6dG9OYXRpdmUoYXJncy5Ib2xkZXIoKSk7Ci0gICAgVjhUUllDQVRDSChU
ZXN0T2JqKiwgb2JqQXJnLCBWOFRlc3RPYmo6Okhhc0luc3RhbmNlKGFyZ3NbMF0sIGFyZ3MuR2V0
SXNvbGF0ZSgpKSA/IFY4VGVzdE9iajo6dG9OYXRpdmUodjg6OkhhbmRsZTx2ODo6T2JqZWN0Pjo6
Q2FzdChhcmdzWzBdKSkgOiAwKTsKKyAgICBWOFRSWUNBVENIKFRlc3RPYmoqLCBvYmpBcmcsIFY4
VGVzdE9iajo6SGFzSW5zdGFuY2UoYXJnc1swXSwgYXJncy5HZXRJc29sYXRlKCksIHdvcmxkVHlw
ZShhcmdzLkdldElzb2xhdGUoKSkpID8gVjhUZXN0T2JqOjp0b05hdGl2ZSh2ODo6SGFuZGxlPHY4
OjpPYmplY3Q+OjpDYXN0KGFyZ3NbMF0pKSA6IDApOwogICAgIGlmIChhcmdzLkxlbmd0aCgpIDw9
IDEpIHsKICAgICAgICAgaW1wLT5vdmVybG9hZGVkTWV0aG9kKG9iakFyZyk7CiAgICAgICAgIHJl
dHVybiB2OFVuZGVmaW5lZCgpOwpAQCAtMjMxOSw3ICsyMzE5LDcgQEAgc3RhdGljIHY4OjpIYW5k
bGU8djg6OlZhbHVlPiBvdmVybG9hZGVkTWV0aG9kOE1ldGhvZChjb25zdCB2ODo6QXJndW1lbnRz
JiBhcmdzKQogICAgIGlmIChhcmdzLkxlbmd0aCgpIDwgMSkKICAgICAgICAgcmV0dXJuIHRocm93
Tm90RW5vdWdoQXJndW1lbnRzRXJyb3IoYXJncy5HZXRJc29sYXRlKCkpOwogICAgIFRlc3RPYmoq
IGltcCA9IFY4VGVzdE9iajo6dG9OYXRpdmUoYXJncy5Ib2xkZXIoKSk7Ci0gICAgVjhUUllDQVRD
SChUZXN0T2JqKiwgb2JqQXJnLCBWOFRlc3RPYmo6Okhhc0luc3RhbmNlKGFyZ3NbMF0sIGFyZ3Mu
R2V0SXNvbGF0ZSgpKSA/IFY4VGVzdE9iajo6dG9OYXRpdmUodjg6OkhhbmRsZTx2ODo6T2JqZWN0
Pjo6Q2FzdChhcmdzWzBdKSkgOiAwKTsKKyAgICBWOFRSWUNBVENIKFRlc3RPYmoqLCBvYmpBcmcs
IFY4VGVzdE9iajo6SGFzSW5zdGFuY2UoYXJnc1swXSwgYXJncy5HZXRJc29sYXRlKCksIHdvcmxk
VHlwZShhcmdzLkdldElzb2xhdGUoKSkpID8gVjhUZXN0T2JqOjp0b05hdGl2ZSh2ODo6SGFuZGxl
PHY4OjpPYmplY3Q+OjpDYXN0KGFyZ3NbMF0pKSA6IDApOwogICAgIGltcC0+b3ZlcmxvYWRlZE1l
dGhvZChvYmpBcmcpOwogICAgIHJldHVybiB2OFVuZGVmaW5lZCgpOwogfQpAQCAtMjM1Niw5ICsy
MzU2LDkgQEAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBvdmVybG9hZGVkTWV0aG9kMTFN
ZXRob2QoY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKIAogc3RhdGljIHY4OjpIYW5kbGU8djg6
OlZhbHVlPiBvdmVybG9hZGVkTWV0aG9kTWV0aG9kKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3Mp
CiB7Ci0gICAgaWYgKChhcmdzLkxlbmd0aCgpID09IDIgJiYgKGFyZ3NbMF0tPklzTnVsbCgpIHx8
IFY4VGVzdE9iajo6SGFzSW5zdGFuY2UoYXJnc1swXSwgYXJncy5HZXRJc29sYXRlKCkpKSAmJiAo
YXJnc1sxXS0+SXNOdWxsKCkgfHwgYXJnc1sxXS0+SXNVbmRlZmluZWQoKSB8fCBhcmdzWzFdLT5J
c1N0cmluZygpIHx8IGFyZ3NbMV0tPklzT2JqZWN0KCkpKSkKKyAgICBpZiAoKGFyZ3MuTGVuZ3Ro
KCkgPT0gMiAmJiAoYXJnc1swXS0+SXNOdWxsKCkgfHwgVjhUZXN0T2JqOjpIYXNJbnN0YW5jZShh
cmdzWzBdLCBhcmdzLkdldElzb2xhdGUoKSwgd29ybGRUeXBlKGFyZ3MuR2V0SXNvbGF0ZSgpKSkp
ICYmIChhcmdzWzFdLT5Jc051bGwoKSB8fCBhcmdzWzFdLT5Jc1VuZGVmaW5lZCgpIHx8IGFyZ3Nb
MV0tPklzU3RyaW5nKCkgfHwgYXJnc1sxXS0+SXNPYmplY3QoKSkpKQogICAgICAgICByZXR1cm4g
b3ZlcmxvYWRlZE1ldGhvZDFNZXRob2QoYXJncyk7Ci0gICAgaWYgKChhcmdzLkxlbmd0aCgpID09
IDEgJiYgKGFyZ3NbMF0tPklzTnVsbCgpIHx8IFY4VGVzdE9iajo6SGFzSW5zdGFuY2UoYXJnc1sw
XSwgYXJncy5HZXRJc29sYXRlKCkpKSkgfHwgKGFyZ3MuTGVuZ3RoKCkgPT0gMiAmJiAoYXJnc1sw
XS0+SXNOdWxsKCkgfHwgVjhUZXN0T2JqOjpIYXNJbnN0YW5jZShhcmdzWzBdLCBhcmdzLkdldElz
b2xhdGUoKSkpKSkKKyAgICBpZiAoKGFyZ3MuTGVuZ3RoKCkgPT0gMSAmJiAoYXJnc1swXS0+SXNO
dWxsKCkgfHwgVjhUZXN0T2JqOjpIYXNJbnN0YW5jZShhcmdzWzBdLCBhcmdzLkdldElzb2xhdGUo
KSwgd29ybGRUeXBlKGFyZ3MuR2V0SXNvbGF0ZSgpKSkpKSB8fCAoYXJncy5MZW5ndGgoKSA9PSAy
ICYmIChhcmdzWzBdLT5Jc051bGwoKSB8fCBWOFRlc3RPYmo6Okhhc0luc3RhbmNlKGFyZ3NbMF0s
IGFyZ3MuR2V0SXNvbGF0ZSgpLCB3b3JsZFR5cGUoYXJncy5HZXRJc29sYXRlKCkpKSkpKQogICAg
ICAgICByZXR1cm4gb3ZlcmxvYWRlZE1ldGhvZDJNZXRob2QoYXJncyk7CiAgICAgaWYgKChhcmdz
Lkxlbmd0aCgpID09IDEgJiYgKGFyZ3NbMF0tPklzTnVsbCgpIHx8IGFyZ3NbMF0tPklzVW5kZWZp
bmVkKCkgfHwgYXJnc1swXS0+SXNTdHJpbmcoKSB8fCBhcmdzWzBdLT5Jc09iamVjdCgpKSkpCiAg
ICAgICAgIHJldHVybiBvdmVybG9hZGVkTWV0aG9kM01ldGhvZChhcmdzKTsKQEAgLTIzNjYsMTEg
KzIzNjYsMTEgQEAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBvdmVybG9hZGVkTWV0aG9k
TWV0aG9kKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiAgICAgICAgIHJldHVybiBvdmVybG9h
ZGVkTWV0aG9kNE1ldGhvZChhcmdzKTsKICAgICBpZiAoKGFyZ3MuTGVuZ3RoKCkgPT0gMSAmJiAo
YXJnc1swXS0+SXNOdWxsKCkgfHwgYXJnc1swXS0+SXNGdW5jdGlvbigpKSkpCiAgICAgICAgIHJl
dHVybiBvdmVybG9hZGVkTWV0aG9kNU1ldGhvZChhcmdzKTsKLSAgICBpZiAoKGFyZ3MuTGVuZ3Ro
KCkgPT0gMSAmJiAoYXJnc1swXS0+SXNOdWxsKCkgfHwgVjhET01TdHJpbmdMaXN0OjpIYXNJbnN0
YW5jZShhcmdzWzBdLCBhcmdzLkdldElzb2xhdGUoKSkpKSkKKyAgICBpZiAoKGFyZ3MuTGVuZ3Ro
KCkgPT0gMSAmJiAoYXJnc1swXS0+SXNOdWxsKCkgfHwgVjhET01TdHJpbmdMaXN0OjpIYXNJbnN0
YW5jZShhcmdzWzBdLCBhcmdzLkdldElzb2xhdGUoKSwgd29ybGRUeXBlKGFyZ3MuR2V0SXNvbGF0
ZSgpKSkpKSkKICAgICAgICAgcmV0dXJuIG92ZXJsb2FkZWRNZXRob2Q2TWV0aG9kKGFyZ3MpOwog
ICAgIGlmICgoYXJncy5MZW5ndGgoKSA9PSAxICYmIChhcmdzWzBdLT5Jc051bGwoKSB8fCBhcmdz
WzBdLT5Jc0FycmF5KCkpKSkKICAgICAgICAgcmV0dXJuIG92ZXJsb2FkZWRNZXRob2Q3TWV0aG9k
KGFyZ3MpOwotICAgIGlmICgoYXJncy5MZW5ndGgoKSA9PSAxICYmIChWOFRlc3RPYmo6Okhhc0lu
c3RhbmNlKGFyZ3NbMF0sIGFyZ3MuR2V0SXNvbGF0ZSgpKSkpKQorICAgIGlmICgoYXJncy5MZW5n
dGgoKSA9PSAxICYmIChWOFRlc3RPYmo6Okhhc0luc3RhbmNlKGFyZ3NbMF0sIGFyZ3MuR2V0SXNv
bGF0ZSgpLCB3b3JsZFR5cGUoYXJncy5HZXRJc29sYXRlKCkpKSkpKQogICAgICAgICByZXR1cm4g
b3ZlcmxvYWRlZE1ldGhvZDhNZXRob2QoYXJncyk7CiAgICAgaWYgKChhcmdzLkxlbmd0aCgpID09
IDEgJiYgKGFyZ3NbMF0tPklzQXJyYXkoKSkpKQogICAgICAgICByZXR1cm4gb3ZlcmxvYWRlZE1l
dGhvZDlNZXRob2QoYXJncyk7CkBAIC0yNjIwLDcgKzI2MjAsNyBAQCBzdGF0aWMgdjg6OkhhbmRs
ZTx2ODo6VmFsdWU+IGNvbnZlcnQxTWV0aG9kKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiAg
ICAgaWYgKGFyZ3MuTGVuZ3RoKCkgPCAxKQogICAgICAgICByZXR1cm4gdGhyb3dOb3RFbm91Z2hB
cmd1bWVudHNFcnJvcihhcmdzLkdldElzb2xhdGUoKSk7CiAgICAgVGVzdE9iaiogaW1wID0gVjhU
ZXN0T2JqOjp0b05hdGl2ZShhcmdzLkhvbGRlcigpKTsKLSAgICBWOFRSWUNBVENIKGEqLCB2YWx1
ZSwgVjhhOjpIYXNJbnN0YW5jZShhcmdzWzBdLCBhcmdzLkdldElzb2xhdGUoKSkgPyBWOGE6OnRv
TmF0aXZlKHY4OjpIYW5kbGU8djg6Ok9iamVjdD46OkNhc3QoYXJnc1swXSkpIDogMCk7CisgICAg
VjhUUllDQVRDSChhKiwgdmFsdWUsIFY4YTo6SGFzSW5zdGFuY2UoYXJnc1swXSwgYXJncy5HZXRJ
c29sYXRlKCksIHdvcmxkVHlwZShhcmdzLkdldElzb2xhdGUoKSkpID8gVjhhOjp0b05hdGl2ZSh2
ODo6SGFuZGxlPHY4OjpPYmplY3Q+OjpDYXN0KGFyZ3NbMF0pKSA6IDApOwogICAgIGltcC0+Y29u
dmVydDEodmFsdWUpOwogICAgIHJldHVybiB2OFVuZGVmaW5lZCgpOwogfQpAQCAtMjYzNSw3ICsy
NjM1LDcgQEAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBjb252ZXJ0Mk1ldGhvZChjb25z
dCB2ODo6QXJndW1lbnRzJiBhcmdzKQogICAgIGlmIChhcmdzLkxlbmd0aCgpIDwgMSkKICAgICAg
ICAgcmV0dXJuIHRocm93Tm90RW5vdWdoQXJndW1lbnRzRXJyb3IoYXJncy5HZXRJc29sYXRlKCkp
OwogICAgIFRlc3RPYmoqIGltcCA9IFY4VGVzdE9iajo6dG9OYXRpdmUoYXJncy5Ib2xkZXIoKSk7
Ci0gICAgVjhUUllDQVRDSChiKiwgdmFsdWUsIFY4Yjo6SGFzSW5zdGFuY2UoYXJnc1swXSwgYXJn
cy5HZXRJc29sYXRlKCkpID8gVjhiOjp0b05hdGl2ZSh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+OjpD
YXN0KGFyZ3NbMF0pKSA6IDApOworICAgIFY4VFJZQ0FUQ0goYiosIHZhbHVlLCBWOGI6Okhhc0lu
c3RhbmNlKGFyZ3NbMF0sIGFyZ3MuR2V0SXNvbGF0ZSgpLCB3b3JsZFR5cGUoYXJncy5HZXRJc29s
YXRlKCkpKSA/IFY4Yjo6dG9OYXRpdmUodjg6OkhhbmRsZTx2ODo6T2JqZWN0Pjo6Q2FzdChhcmdz
WzBdKSkgOiAwKTsKICAgICBpbXAtPmNvbnZlcnQyKHZhbHVlKTsKICAgICByZXR1cm4gdjhVbmRl
ZmluZWQoKTsKIH0KQEAgLTI2NTAsNyArMjY1MCw3IEBAIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpW
YWx1ZT4gY29udmVydDRNZXRob2QoY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKICAgICBpZiAo
YXJncy5MZW5ndGgoKSA8IDEpCiAgICAgICAgIHJldHVybiB0aHJvd05vdEVub3VnaEFyZ3VtZW50
c0Vycm9yKGFyZ3MuR2V0SXNvbGF0ZSgpKTsKICAgICBUZXN0T2JqKiBpbXAgPSBWOFRlc3RPYmo6
OnRvTmF0aXZlKGFyZ3MuSG9sZGVyKCkpOwotICAgIFY4VFJZQ0FUQ0goZCosIHZhbHVlLCBWOGQ6
Okhhc0luc3RhbmNlKGFyZ3NbMF0sIGFyZ3MuR2V0SXNvbGF0ZSgpKSA/IFY4ZDo6dG9OYXRpdmUo
djg6OkhhbmRsZTx2ODo6T2JqZWN0Pjo6Q2FzdChhcmdzWzBdKSkgOiAwKTsKKyAgICBWOFRSWUNB
VENIKGQqLCB2YWx1ZSwgVjhkOjpIYXNJbnN0YW5jZShhcmdzWzBdLCBhcmdzLkdldElzb2xhdGUo
KSwgd29ybGRUeXBlKGFyZ3MuR2V0SXNvbGF0ZSgpKSkgPyBWOGQ6OnRvTmF0aXZlKHY4OjpIYW5k
bGU8djg6Ok9iamVjdD46OkNhc3QoYXJnc1swXSkpIDogMCk7CiAgICAgaW1wLT5jb252ZXJ0NCh2
YWx1ZSk7CiAgICAgcmV0dXJuIHY4VW5kZWZpbmVkKCk7CiB9CkBAIC0yNjY1LDcgKzI2NjUsNyBA
QCBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGNvbnZlcnQ1TWV0aG9kKGNvbnN0IHY4OjpB
cmd1bWVudHMmIGFyZ3MpCiAgICAgaWYgKGFyZ3MuTGVuZ3RoKCkgPCAxKQogICAgICAgICByZXR1
cm4gdGhyb3dOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihhcmdzLkdldElzb2xhdGUoKSk7CiAgICAg
VGVzdE9iaiogaW1wID0gVjhUZXN0T2JqOjp0b05hdGl2ZShhcmdzLkhvbGRlcigpKTsKLSAgICBW
OFRSWUNBVENIKGUqLCB2YWx1ZSwgVjhlOjpIYXNJbnN0YW5jZShhcmdzWzBdLCBhcmdzLkdldElz
b2xhdGUoKSkgPyBWOGU6OnRvTmF0aXZlKHY4OjpIYW5kbGU8djg6Ok9iamVjdD46OkNhc3QoYXJn
c1swXSkpIDogMCk7CisgICAgVjhUUllDQVRDSChlKiwgdmFsdWUsIFY4ZTo6SGFzSW5zdGFuY2Uo
YXJnc1swXSwgYXJncy5HZXRJc29sYXRlKCksIHdvcmxkVHlwZShhcmdzLkdldElzb2xhdGUoKSkp
ID8gVjhlOjp0b05hdGl2ZSh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+OjpDYXN0KGFyZ3NbMF0pKSA6
IDApOwogICAgIGltcC0+Y29udmVydDUodmFsdWUpOwogICAgIHJldHVybiB2OFVuZGVmaW5lZCgp
OwogfQpAQCAtMjc3MCwxMCArMjc3MCwxMCBAQCBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+
IHZhcmlhZGljTm9kZU1ldGhvZE1ldGhvZChjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogICAg
IGlmIChhcmdzLkxlbmd0aCgpIDwgMSkKICAgICAgICAgcmV0dXJuIHRocm93Tm90RW5vdWdoQXJn
dW1lbnRzRXJyb3IoYXJncy5HZXRJc29sYXRlKCkpOwogICAgIFRlc3RPYmoqIGltcCA9IFY4VGVz
dE9iajo6dG9OYXRpdmUoYXJncy5Ib2xkZXIoKSk7Ci0gICAgVjhUUllDQVRDSChOb2RlKiwgaGVh
ZCwgVjhOb2RlOjpIYXNJbnN0YW5jZShhcmdzWzBdLCBhcmdzLkdldElzb2xhdGUoKSkgPyBWOE5v
ZGU6OnRvTmF0aXZlKHY4OjpIYW5kbGU8djg6Ok9iamVjdD46OkNhc3QoYXJnc1swXSkpIDogMCk7
CisgICAgVjhUUllDQVRDSChOb2RlKiwgaGVhZCwgVjhOb2RlOjpIYXNJbnN0YW5jZShhcmdzWzBd
LCBhcmdzLkdldElzb2xhdGUoKSwgd29ybGRUeXBlKGFyZ3MuR2V0SXNvbGF0ZSgpKSkgPyBWOE5v
ZGU6OnRvTmF0aXZlKHY4OjpIYW5kbGU8djg6Ok9iamVjdD46OkNhc3QoYXJnc1swXSkpIDogMCk7
CiAgICAgVmVjdG9yPFJlZlB0cjxOb2RlPiA+IHRhaWw7CiAgICAgZm9yIChpbnQgaSA9IDE7IGkg
PCBhcmdzLkxlbmd0aCgpOyArK2kpIHsKLSAgICAgICAgaWYgKCFWOE5vZGU6Okhhc0luc3RhbmNl
KGFyZ3NbaV0sIGFyZ3MuR2V0SXNvbGF0ZSgpKSkKKyAgICAgICAgaWYgKCFWOE5vZGU6Okhhc0lu
c3RhbmNlKGFyZ3NbaV0sIGFyZ3MuR2V0SXNvbGF0ZSgpLCB3b3JsZFR5cGUoYXJncy5HZXRJc29s
YXRlKCkpKSkKICAgICAgICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcigwLCBhcmdzLkdldElz
b2xhdGUoKSk7CiAgICAgICAgIHRhaWwuYXBwZW5kKFY4Tm9kZTo6dG9OYXRpdmUodjg6OkhhbmRs
ZTx2ODo6T2JqZWN0Pjo6Q2FzdChhcmdzW2ldKSkpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RPYmouaCBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RPYmouaAppbmRleCBlZDUyOTZh
ZGVjMzEzY2ZmNWNmNDgxMTA4MTM4MzcwNDUxNTY3MjhjLi44NzdhYzI1MGM3NGQ0ZTE2OGNkMjEw
MzNiZGM0Mjk3YmE0MDJmMmQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvVjgvVjhUZXN0T2JqLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE9iai5oCkBAIC0zNCw3ICszNCw3IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIGNsYXNzIFY4VGVzdE9iaiB7CiBwdWJsaWM6CiAgICAgc3RhdGljIGNvbnN0IGJv
b2wgaGFzRGVwZW5kZW50TGlmZXRpbWUgPSBmYWxzZTsKLSAgICBzdGF0aWMgYm9vbCBIYXNJbnN0
YW5jZSh2ODo6SGFuZGxlPHY4OjpWYWx1ZT4sIHY4OjpJc29sYXRlKiwgV3JhcHBlcldvcmxkVHlw
ZSA9IEdldEZyb21Db250ZXh0KTsKKyAgICBzdGF0aWMgYm9vbCBIYXNJbnN0YW5jZSh2ODo6SGFu
ZGxlPHY4OjpWYWx1ZT4sIHY4OjpJc29sYXRlKiwgV3JhcHBlcldvcmxkVHlwZSk7CiAgICAgc3Rh
dGljIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBHZXRUZW1wbGF0ZSh2ODo6
SXNvbGF0ZSosIFdyYXBwZXJXb3JsZFR5cGUpOwogICAgIHN0YXRpYyBUZXN0T2JqKiB0b05hdGl2
ZSh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IG9iamVjdCkKICAgICB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0T3ZlcmxvYWRlZENvbnN0
cnVjdG9ycy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhU
ZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycy5jcHAKaW5kZXggNTUxMzU5MTFlNjc0M2U3MDA3ZDU2
NWRkNDJiY2ZmNWVlNzExM2RmYi4uZTNiM2U0MTBmMDk4M2Y5NTc4Y2QxOTIwOGJlMDQwNWE0OGFj
ZDE2NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4
L1Y4VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzLmNwcApA
QCAtNzcsNyArNzcsNyBAQCB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gdm9pZCBWOF9VU0UoVCkgeyB9
CiAKIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gY29uc3RydWN0b3IxKGNvbnN0IHY4OjpB
cmd1bWVudHMmIGFyZ3MpCiB7Ci0gICAgVjhUUllDQVRDSChBcnJheUJ1ZmZlciosIGFycmF5QnVm
ZmVyLCBWOEFycmF5QnVmZmVyOjpIYXNJbnN0YW5jZShhcmdzWzBdLCBhcmdzLkdldElzb2xhdGUo
KSkgPyBWOEFycmF5QnVmZmVyOjp0b05hdGl2ZSh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+OjpDYXN0
KGFyZ3NbMF0pKSA6IDApOworICAgIFY4VFJZQ0FUQ0goQXJyYXlCdWZmZXIqLCBhcnJheUJ1ZmZl
ciwgVjhBcnJheUJ1ZmZlcjo6SGFzSW5zdGFuY2UoYXJnc1swXSwgYXJncy5HZXRJc29sYXRlKCks
IHdvcmxkVHlwZShhcmdzLkdldElzb2xhdGUoKSkpID8gVjhBcnJheUJ1ZmZlcjo6dG9OYXRpdmUo
djg6OkhhbmRsZTx2ODo6T2JqZWN0Pjo6Q2FzdChhcmdzWzBdKSkgOiAwKTsKIAogICAgIFJlZlB0
cjxUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycz4gaW1wbCA9IFRlc3RPdmVybG9hZGVkQ29uc3Ry
dWN0b3JzOjpjcmVhdGUoYXJyYXlCdWZmZXIpOwogICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4g
d3JhcHBlciA9IGFyZ3MuSG9sZGVyKCk7CkBAIC04OCw3ICs4OCw3IEBAIHN0YXRpYyB2ODo6SGFu
ZGxlPHY4OjpWYWx1ZT4gY29uc3RydWN0b3IxKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiAK
IHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gY29uc3RydWN0b3IyKGNvbnN0IHY4OjpBcmd1
bWVudHMmIGFyZ3MpCiB7Ci0gICAgVjhUUllDQVRDSChBcnJheUJ1ZmZlclZpZXcqLCBhcnJheUJ1
ZmZlclZpZXcsIFY4QXJyYXlCdWZmZXJWaWV3OjpIYXNJbnN0YW5jZShhcmdzWzBdLCBhcmdzLkdl
dElzb2xhdGUoKSkgPyBWOEFycmF5QnVmZmVyVmlldzo6dG9OYXRpdmUodjg6OkhhbmRsZTx2ODo6
T2JqZWN0Pjo6Q2FzdChhcmdzWzBdKSkgOiAwKTsKKyAgICBWOFRSWUNBVENIKEFycmF5QnVmZmVy
VmlldyosIGFycmF5QnVmZmVyVmlldywgVjhBcnJheUJ1ZmZlclZpZXc6Okhhc0luc3RhbmNlKGFy
Z3NbMF0sIGFyZ3MuR2V0SXNvbGF0ZSgpLCB3b3JsZFR5cGUoYXJncy5HZXRJc29sYXRlKCkpKSA/
IFY4QXJyYXlCdWZmZXJWaWV3Ojp0b05hdGl2ZSh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+OjpDYXN0
KGFyZ3NbMF0pKSA6IDApOwogCiAgICAgUmVmUHRyPFRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3Jz
PiBpbXBsID0gVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnM6OmNyZWF0ZShhcnJheUJ1ZmZlclZp
ZXcpOwogICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gd3JhcHBlciA9IGFyZ3MuSG9sZGVyKCk7
CkBAIC05OSw3ICs5OSw3IEBAIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gY29uc3RydWN0
b3IyKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiAKIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpW
YWx1ZT4gY29uc3RydWN0b3IzKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB7Ci0gICAgVjhU
UllDQVRDSChCbG9iKiwgYmxvYiwgVjhCbG9iOjpIYXNJbnN0YW5jZShhcmdzWzBdLCBhcmdzLkdl
dElzb2xhdGUoKSkgPyBWOEJsb2I6OnRvTmF0aXZlKHY4OjpIYW5kbGU8djg6Ok9iamVjdD46OkNh
c3QoYXJnc1swXSkpIDogMCk7CisgICAgVjhUUllDQVRDSChCbG9iKiwgYmxvYiwgVjhCbG9iOjpI
YXNJbnN0YW5jZShhcmdzWzBdLCBhcmdzLkdldElzb2xhdGUoKSwgd29ybGRUeXBlKGFyZ3MuR2V0
SXNvbGF0ZSgpKSkgPyBWOEJsb2I6OnRvTmF0aXZlKHY4OjpIYW5kbGU8djg6Ok9iamVjdD46OkNh
c3QoYXJnc1swXSkpIDogMCk7CiAKICAgICBSZWZQdHI8VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3Rv
cnM+IGltcGwgPSBUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yczo6Y3JlYXRlKGJsb2IpOwogICAg
IHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gd3JhcHBlciA9IGFyZ3MuSG9sZGVyKCk7CkBAIC0xMjEs
MTEgKzEyMSwxMSBAQCBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGNvbnN0cnVjdG9yNChj
b25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogCiBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+
IGNvbnN0cnVjdG9yKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB7Ci0gICAgaWYgKChhcmdz
Lkxlbmd0aCgpID09IDEgJiYgKFY4QXJyYXlCdWZmZXI6Okhhc0luc3RhbmNlKGFyZ3NbMF0sIGFy
Z3MuR2V0SXNvbGF0ZSgpKSkpKQorICAgIGlmICgoYXJncy5MZW5ndGgoKSA9PSAxICYmIChWOEFy
cmF5QnVmZmVyOjpIYXNJbnN0YW5jZShhcmdzWzBdLCBhcmdzLkdldElzb2xhdGUoKSwgd29ybGRU
eXBlKGFyZ3MuR2V0SXNvbGF0ZSgpKSkpKSkKICAgICAgICAgcmV0dXJuIFRlc3RPdmVybG9hZGVk
Q29uc3RydWN0b3JzVjhJbnRlcm5hbDo6Y29uc3RydWN0b3IxKGFyZ3MpOwotICAgIGlmICgoYXJn
cy5MZW5ndGgoKSA9PSAxICYmIChWOEFycmF5QnVmZmVyVmlldzo6SGFzSW5zdGFuY2UoYXJnc1sw
XSwgYXJncy5HZXRJc29sYXRlKCkpKSkpCisgICAgaWYgKChhcmdzLkxlbmd0aCgpID09IDEgJiYg
KFY4QXJyYXlCdWZmZXJWaWV3OjpIYXNJbnN0YW5jZShhcmdzWzBdLCBhcmdzLkdldElzb2xhdGUo
KSwgd29ybGRUeXBlKGFyZ3MuR2V0SXNvbGF0ZSgpKSkpKSkKICAgICAgICAgcmV0dXJuIFRlc3RP
dmVybG9hZGVkQ29uc3RydWN0b3JzVjhJbnRlcm5hbDo6Y29uc3RydWN0b3IyKGFyZ3MpOwotICAg
IGlmICgoYXJncy5MZW5ndGgoKSA9PSAxICYmIChWOEJsb2I6Okhhc0luc3RhbmNlKGFyZ3NbMF0s
IGFyZ3MuR2V0SXNvbGF0ZSgpKSkpKQorICAgIGlmICgoYXJncy5MZW5ndGgoKSA9PSAxICYmIChW
OEJsb2I6Okhhc0luc3RhbmNlKGFyZ3NbMF0sIGFyZ3MuR2V0SXNvbGF0ZSgpLCB3b3JsZFR5cGUo
YXJncy5HZXRJc29sYXRlKCkpKSkpKQogICAgICAgICByZXR1cm4gVGVzdE92ZXJsb2FkZWRDb25z
dHJ1Y3RvcnNWOEludGVybmFsOjpjb25zdHJ1Y3RvcjMoYXJncyk7CiAgICAgaWYgKGFyZ3MuTGVu
Z3RoKCkgPT0gMSkKICAgICAgICAgcmV0dXJuIFRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzVjhJ
bnRlcm5hbDo6Y29uc3RydWN0b3I0KGFyZ3MpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMuaCBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RPdmVybG9hZGVk
Q29uc3RydWN0b3JzLmgKaW5kZXggNTU3NmExZTZjMWE4YjU5ZDg5MTM3MmZlZGIxMGQ2MTA4MDk0
OTY4ZS4uMzA4Njg5YjM0OGYzNGFhMWNhZDVjM2E1OWU5ODUyNDFhYjNiOWM0OCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE92ZXJsb2Fk
ZWRDb25zdHJ1Y3RvcnMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvVjgvVjhUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycy5oCkBAIC0zNCw3ICszNCw3IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIFY4VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMgewog
cHVibGljOgogICAgIHN0YXRpYyBjb25zdCBib29sIGhhc0RlcGVuZGVudExpZmV0aW1lID0gZmFs
c2U7Ci0gICAgc3RhdGljIGJvb2wgSGFzSW5zdGFuY2Uodjg6OkhhbmRsZTx2ODo6VmFsdWU+LCB2
ODo6SXNvbGF0ZSosIFdyYXBwZXJXb3JsZFR5cGUgPSBHZXRGcm9tQ29udGV4dCk7CisgICAgc3Rh
dGljIGJvb2wgSGFzSW5zdGFuY2Uodjg6OkhhbmRsZTx2ODo6VmFsdWU+LCB2ODo6SXNvbGF0ZSos
IFdyYXBwZXJXb3JsZFR5cGUpOwogICAgIHN0YXRpYyB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rp
b25UZW1wbGF0ZT4gR2V0VGVtcGxhdGUodjg6Oklzb2xhdGUqLCBXcmFwcGVyV29ybGRUeXBlKTsK
ICAgICBzdGF0aWMgVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMqIHRvTmF0aXZlKHY4OjpIYW5k
bGU8djg6Ok9iamVjdD4gb2JqZWN0KQogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRl
cmZhY2UuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RT
ZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UuaAppbmRleCAwZDRlNTllZmJmZDNjNTRhZWY4
MzgzNTg4NzkwNDg3NmY3OTgyNmZmLi41MGRjYmYxNjFmOWEwMmQ1Zjg3NzViOTdkYzIyODdkYjQ3
Y2Q2MzViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
VjgvVjhUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZUludGVyZmFjZS5oCkBAIC0zNSw3ICszNSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNz
IFY4VGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZSB7CiBwdWJsaWM6CiAgICAgc3Rh
dGljIGNvbnN0IGJvb2wgaGFzRGVwZW5kZW50TGlmZXRpbWUgPSBmYWxzZTsKLSAgICBzdGF0aWMg
Ym9vbCBIYXNJbnN0YW5jZSh2ODo6SGFuZGxlPHY4OjpWYWx1ZT4sIHY4OjpJc29sYXRlKiwgV3Jh
cHBlcldvcmxkVHlwZSA9IEdldEZyb21Db250ZXh0KTsKKyAgICBzdGF0aWMgYm9vbCBIYXNJbnN0
YW5jZSh2ODo6SGFuZGxlPHY4OjpWYWx1ZT4sIHY4OjpJc29sYXRlKiwgV3JhcHBlcldvcmxkVHlw
ZSk7CiAgICAgc3RhdGljIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBHZXRU
ZW1wbGF0ZSh2ODo6SXNvbGF0ZSosIFdyYXBwZXJXb3JsZFR5cGUpOwogICAgIHN0YXRpYyBUZXN0
U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlKiB0b05hdGl2ZSh2ODo6SGFuZGxlPHY4OjpP
YmplY3Q+IG9iamVjdCkKICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0VHlwZWRlZnMuY3BwIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdFR5cGVkZWZzLmNwcAppbmRleCAxYTJhMjg2OTZl
ODg3ZDdkMTA2YmY3NjI2NTRkN2E1Mjk5ZmIyMzFmLi5jN2RiNDc5MDg3OGIwMTgzMDU0MWI5NWJi
OWIwYTM1ZjllNmIxNWY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvVjgvVjhUZXN0VHlwZWRlZnMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RUeXBlZGVmcy5jcHAKQEAgLTI2NCw3ICsyNjQsNyBA
QCBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGZ1bmNNZXRob2QoY29uc3Qgdjg6OkFyZ3Vt
ZW50cyYgYXJncykKICAgICAgICAgaW1wLT5mdW5jKCk7CiAgICAgICAgIHJldHVybiB2OFVuZGVm
aW5lZCgpOwogICAgIH0KLSAgICBpZiAoYXJncy5MZW5ndGgoKSA+IDAgJiYgIWlzVW5kZWZpbmVk
T3JOdWxsKGFyZ3NbMF0pICYmICFWOGxvbmdbXTo6SGFzSW5zdGFuY2UoYXJnc1swXSwgYXJncy5H
ZXRJc29sYXRlKCkpKQorICAgIGlmIChhcmdzLkxlbmd0aCgpID4gMCAmJiAhaXNVbmRlZmluZWRP
ck51bGwoYXJnc1swXSkgJiYgIVY4bG9uZ1tdOjpIYXNJbnN0YW5jZShhcmdzWzBdLCBhcmdzLkdl
dElzb2xhdGUoKSwgd29ybGRUeXBlKGFyZ3MuR2V0SXNvbGF0ZSgpKSkpCiAgICAgICAgIHJldHVy
biB0aHJvd1R5cGVFcnJvcigwLCBhcmdzLkdldElzb2xhdGUoKSk7CiAgICAgVjhUUllDQVRDSChW
ZWN0b3I8aW50PiwgeCwgdG9OYXRpdmVBcnJheTxpbnQ+KGFyZ3NbMF0pKTsKICAgICBpbXAtPmZ1
bmMoeCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
VjgvVjhUZXN0VHlwZWRlZnMuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9WOC9WOFRlc3RUeXBlZGVmcy5oCmluZGV4IGM1MmUyMDMzY2YwZDU3MWQ0ZTFiZjk0YWYwNTY4
YWQ3ZDhjMmNkZmQuLmVlOWVjMmY0ZTQwZjE3MWE4NTExYjUzYTI2ZTBjNjZlZmM3ZGEzMGEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RU
eXBlZGVmcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9W
OFRlc3RUeXBlZGVmcy5oCkBAIC0zNCw3ICszNCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNs
YXNzIFY4VGVzdFR5cGVkZWZzIHsKIHB1YmxpYzoKICAgICBzdGF0aWMgY29uc3QgYm9vbCBoYXNE
ZXBlbmRlbnRMaWZldGltZSA9IGZhbHNlOwotICAgIHN0YXRpYyBib29sIEhhc0luc3RhbmNlKHY4
OjpIYW5kbGU8djg6OlZhbHVlPiwgdjg6Oklzb2xhdGUqLCBXcmFwcGVyV29ybGRUeXBlID0gR2V0
RnJvbUNvbnRleHQpOworICAgIHN0YXRpYyBib29sIEhhc0luc3RhbmNlKHY4OjpIYW5kbGU8djg6
OlZhbHVlPiwgdjg6Oklzb2xhdGUqLCBXcmFwcGVyV29ybGRUeXBlKTsKICAgICBzdGF0aWMgdjg6
OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IEdldFRlbXBsYXRlKHY4OjpJc29sYXRl
KiwgV3JhcHBlcldvcmxkVHlwZSk7CiAgICAgc3RhdGljIFRlc3RUeXBlZGVmcyogdG9OYXRpdmUo
djg6OkhhbmRsZTx2ODo6T2JqZWN0PiBvYmplY3QpCiAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvdjgvRGljdGlvbmFyeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy92OC9EaWN0aW9uYXJ5LmNwcAppbmRleCBiMTg2MmZiYjIwYzg2YjU2Y2NjMWFjZTI5OTk3
NTY3MDYyYTUyZjBiLi5hYjA4NTc1MzY0YjQ5YThjNjJmZDhhNjBkMWQxYjU4OWY3YWMyMWZiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9EaWN0aW9uYXJ5LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9EaWN0aW9uYXJ5LmNwcApAQCAtMjczLDcgKzI3
Myw3IEBAIGJvb2wgRGljdGlvbmFyeTo6Z2V0KGNvbnN0IFN0cmluZyYga2V5LCBSZWZQdHI8U3Rv
cmFnZT4mIHZhbHVlKSBjb25zdAogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICB2YWx1ZSA9
IDA7Ci0gICAgaWYgKFY4U3RvcmFnZTo6SGFzSW5zdGFuY2UodjhWYWx1ZSwgbV9pc29sYXRlKSkK
KyAgICBpZiAoVjhTdG9yYWdlOjpIYXNJbnN0YW5jZSh2OFZhbHVlLCBtX2lzb2xhdGUsIHdvcmxk
VHlwZShtX2lzb2xhdGUpKSkKICAgICAgICAgdmFsdWUgPSBWOFN0b3JhZ2U6OnRvTmF0aXZlKHY4
OjpIYW5kbGU8djg6Ok9iamVjdD46OkNhc3QodjhWYWx1ZSkpOwogICAgIHJldHVybiB0cnVlOwog
fQpAQCAtMzMxLDcgKzMzMSw3IEBAIGJvb2wgRGljdGlvbmFyeTo6Z2V0KGNvbnN0IFN0cmluZyYg
a2V5LCBSZWZQdHI8VWludDhBcnJheT4mIHZhbHVlKSBjb25zdAogICAgICAgICByZXR1cm4gZmFs
c2U7CiAKICAgICB2YWx1ZSA9IDA7Ci0gICAgaWYgKFY4VWludDhBcnJheTo6SGFzSW5zdGFuY2Uo
djhWYWx1ZSwgbV9pc29sYXRlKSkKKyAgICBpZiAoVjhVaW50OEFycmF5OjpIYXNJbnN0YW5jZSh2
OFZhbHVlLCBtX2lzb2xhdGUsIHdvcmxkVHlwZShtX2lzb2xhdGUpKSkKICAgICAgICAgdmFsdWUg
PSBWOFVpbnQ4QXJyYXk6OnRvTmF0aXZlKHY4OjpIYW5kbGU8djg6Ok9iamVjdD46OkNhc3QodjhW
YWx1ZSkpOwogICAgIHJldHVybiB0cnVlOwogfQpAQCAtMzQ0LDcgKzM0NCw3IEBAIGJvb2wgRGlj
dGlvbmFyeTo6Z2V0KGNvbnN0IFN0cmluZyYga2V5LCBSZWZQdHI8TWVkaWFLZXlFcnJvcj4mIHZh
bHVlKSBjb25zdAogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICB2YWx1ZSA9IDA7Ci0gICAg
aWYgKFY4TWVkaWFLZXlFcnJvcjo6SGFzSW5zdGFuY2UodjhWYWx1ZSwgbV9pc29sYXRlKSkKKyAg
ICBpZiAoVjhNZWRpYUtleUVycm9yOjpIYXNJbnN0YW5jZSh2OFZhbHVlLCBtX2lzb2xhdGUsIHdv
cmxkVHlwZShtX2lzb2xhdGUpKSkKICAgICAgICAgdmFsdWUgPSBWOE1lZGlhS2V5RXJyb3I6OnRv
TmF0aXZlKHY4OjpIYW5kbGU8djg6Ok9iamVjdD46OkNhc3QodjhWYWx1ZSkpOwogICAgIHJldHVy
biB0cnVlOwogfQpAQCAtMzgwLDcgKzM4MCw3IEBAIGJvb2wgRGljdGlvbmFyeTo6Z2V0KGNvbnN0
IFN0cmluZyYga2V5LCBSZWZQdHI8U3BlZWNoUmVjb2duaXRpb25FcnJvcj4mIHZhbHVlKSBjCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIHZhbHVlID0gMDsKLSAgICBpZiAoVjhTcGVlY2hS
ZWNvZ25pdGlvbkVycm9yOjpIYXNJbnN0YW5jZSh2OFZhbHVlLCBtX2lzb2xhdGUpKQorICAgIGlm
IChWOFNwZWVjaFJlY29nbml0aW9uRXJyb3I6Okhhc0luc3RhbmNlKHY4VmFsdWUsIG1faXNvbGF0
ZSwgd29ybGRUeXBlKG1faXNvbGF0ZSkpKQogICAgICAgICB2YWx1ZSA9IFY4U3BlZWNoUmVjb2du
aXRpb25FcnJvcjo6dG9OYXRpdmUodjg6OkhhbmRsZTx2ODo6T2JqZWN0Pjo6Q2FzdCh2OFZhbHVl
KSk7CiAgICAgcmV0dXJuIHRydWU7CiB9CkBAIC0zOTIsNyArMzkyLDcgQEAgYm9vbCBEaWN0aW9u
YXJ5OjpnZXQoY29uc3QgU3RyaW5nJiBrZXksIFJlZlB0cjxTcGVlY2hSZWNvZ25pdGlvblJlc3Vs
dD4mIHZhbHVlKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICB2YWx1ZSA9IDA7Ci0gICAg
aWYgKFY4U3BlZWNoUmVjb2duaXRpb25SZXN1bHQ6Okhhc0luc3RhbmNlKHY4VmFsdWUsIG1faXNv
bGF0ZSkpCisgICAgaWYgKFY4U3BlZWNoUmVjb2duaXRpb25SZXN1bHQ6Okhhc0luc3RhbmNlKHY4
VmFsdWUsIG1faXNvbGF0ZSwgd29ybGRUeXBlKG1faXNvbGF0ZSkpKQogICAgICAgICB2YWx1ZSA9
IFY4U3BlZWNoUmVjb2duaXRpb25SZXN1bHQ6OnRvTmF0aXZlKHY4OjpIYW5kbGU8djg6Ok9iamVj
dD46OkNhc3QodjhWYWx1ZSkpOwogICAgIHJldHVybiB0cnVlOwogfQpAQCAtNDA0LDcgKzQwNCw3
IEBAIGJvb2wgRGljdGlvbmFyeTo6Z2V0KGNvbnN0IFN0cmluZyYga2V5LCBSZWZQdHI8U3BlZWNo
UmVjb2duaXRpb25SZXN1bHRMaXN0PiYgdmFsCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAg
IHZhbHVlID0gMDsKLSAgICBpZiAoVjhTcGVlY2hSZWNvZ25pdGlvblJlc3VsdExpc3Q6Okhhc0lu
c3RhbmNlKHY4VmFsdWUsIG1faXNvbGF0ZSkpCisgICAgaWYgKFY4U3BlZWNoUmVjb2duaXRpb25S
ZXN1bHRMaXN0OjpIYXNJbnN0YW5jZSh2OFZhbHVlLCBtX2lzb2xhdGUsIHdvcmxkVHlwZShtX2lz
b2xhdGUpKSkKICAgICAgICAgdmFsdWUgPSBWOFNwZWVjaFJlY29nbml0aW9uUmVzdWx0TGlzdDo6
dG9OYXRpdmUodjg6OkhhbmRsZTx2ODo6T2JqZWN0Pjo6Q2FzdCh2OFZhbHVlKSk7CiAgICAgcmV0
dXJuIHRydWU7CiB9CkBAIC00MTksNyArNDE5LDcgQEAgYm9vbCBEaWN0aW9uYXJ5OjpnZXQoY29u
c3QgU3RyaW5nJiBrZXksIFJlZlB0cjxNZWRpYVN0cmVhbT4mIHZhbHVlKSBjb25zdAogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAKICAgICB2YWx1ZSA9IDA7Ci0gICAgaWYgKFY4TWVkaWFTdHJlYW06
Okhhc0luc3RhbmNlKHY4VmFsdWUsIG1faXNvbGF0ZSkpCisgICAgaWYgKFY4TWVkaWFTdHJlYW06
Okhhc0luc3RhbmNlKHY4VmFsdWUsIG1faXNvbGF0ZSwgd29ybGRUeXBlKG1faXNvbGF0ZSkpKQog
ICAgICAgICB2YWx1ZSA9IFY4TWVkaWFTdHJlYW06OnRvTmF0aXZlKHY4OjpIYW5kbGU8djg6Ok9i
amVjdD46OkNhc3QodjhWYWx1ZSkpOwogICAgIHJldHVybiB0cnVlOwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAKaW5kZXgg
YTlmMmZmYTk3NmQ4ODc1MDE0ODllMDAyN2QyZDQwN2JjMTAyZTgzYy4uYThhMDRlYjRjZWNiOTkw
MWZkYmZmYTJlNGRmYWQwYzMxZjEzYTEwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvdjgvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy92OC9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwCkBAIC0xMjUxLDYgKzEyNTEsNyBA
QCBTZXJpYWxpemVyOjpTdGF0ZUJhc2UqIFNlcmlhbGl6ZXI6OmRvU2VyaWFsaXplKHY4OjpIYW5k
bGU8djg6OlZhbHVlPiB2YWx1ZSwgU3RhdAogICAgIG1fd3JpdGVyLndyaXRlUmVmZXJlbmNlQ291
bnQobV9uZXh0T2JqZWN0UmVmZXJlbmNlKTsKICAgICB1aW50MzJfdCBvYmplY3RSZWZlcmVuY2U7
CiAgICAgdWludDMyX3QgYXJyYXlCdWZmZXJJbmRleDsKKyAgICBXcmFwcGVyV29ybGRUeXBlIGN1
cnJlbnRXb3JsZFR5cGUgPSB3b3JsZFR5cGUobV9pc29sYXRlKTsKICAgICBpZiAoKHZhbHVlLT5J
c09iamVjdCgpIHx8IHZhbHVlLT5Jc0RhdGUoKSB8fCB2YWx1ZS0+SXNSZWdFeHAoKSkKICAgICAg
ICAgJiYgbV9vYmplY3RQb29sLnRyeUdldCh2YWx1ZS5Bczx2ODo6T2JqZWN0PigpLCAmb2JqZWN0
UmVmZXJlbmNlKSkgewogICAgICAgICAvLyBOb3RlIHRoYXQgSXNPYmplY3QoKSBhbHNvIGRldGVj
dHMgd3JhcHBlcnMgKGVnLCBpdCB3aWxsIGNhdGNoIHRoZSB0aGluZ3MKQEAgLTEyNzMsMTcgKzEy
NzQsMTcgQEAgU2VyaWFsaXplcjo6U3RhdGVCYXNlKiBTZXJpYWxpemVyOjpkb1NlcmlhbGl6ZSh2
ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdmFsdWUsIFN0YXQKICAgICAgICAgbV93cml0ZXIud3JpdGVV
aW50MzIodmFsdWUtPlVpbnQzMlZhbHVlKCkpOwogICAgIGVsc2UgaWYgKHZhbHVlLT5Jc051bWJl
cigpKQogICAgICAgICBtX3dyaXRlci53cml0ZU51bWJlcih2YWx1ZS5Bczx2ODo6TnVtYmVyPigp
LT5WYWx1ZSgpKTsKLSAgICBlbHNlIGlmIChWOEFycmF5QnVmZmVyVmlldzo6SGFzSW5zdGFuY2Uo
dmFsdWUsIG1faXNvbGF0ZSkpCisgICAgZWxzZSBpZiAoVjhBcnJheUJ1ZmZlclZpZXc6Okhhc0lu
c3RhbmNlKHZhbHVlLCBtX2lzb2xhdGUsIGN1cnJlbnRXb3JsZFR5cGUpKQogICAgICAgICByZXR1
cm4gd3JpdGVBbmRHcmV5QXJyYXlCdWZmZXJWaWV3KHZhbHVlLkFzPHY4OjpPYmplY3Q+KCksIG5l
eHQpOwogICAgIGVsc2UgaWYgKHZhbHVlLT5Jc1N0cmluZygpKQogICAgICAgICB3cml0ZVN0cmlu
Zyh2YWx1ZSk7Ci0gICAgZWxzZSBpZiAoVjhNZXNzYWdlUG9ydDo6SGFzSW5zdGFuY2UodmFsdWUs
IG1faXNvbGF0ZSkpIHsKKyAgICBlbHNlIGlmIChWOE1lc3NhZ2VQb3J0OjpIYXNJbnN0YW5jZSh2
YWx1ZSwgbV9pc29sYXRlLCBjdXJyZW50V29ybGRUeXBlKSkgewogICAgICAgICB1aW50MzJfdCBt
ZXNzYWdlUG9ydEluZGV4OwogICAgICAgICBpZiAobV90cmFuc2ZlcnJlZE1lc3NhZ2VQb3J0cy50
cnlHZXQodmFsdWUuQXM8djg6Ok9iamVjdD4oKSwgJm1lc3NhZ2VQb3J0SW5kZXgpKQogICAgICAg
ICAgICAgICAgIG1fd3JpdGVyLndyaXRlVHJhbnNmZXJyZWRNZXNzYWdlUG9ydChtZXNzYWdlUG9y
dEluZGV4KTsKICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICByZXR1cm4gaGFuZGxl
RXJyb3IoRGF0YUNsb25lRXJyb3IsIG5leHQpOwotICAgIH0gZWxzZSBpZiAoVjhBcnJheUJ1ZmZl
cjo6SGFzSW5zdGFuY2UodmFsdWUsIG1faXNvbGF0ZSkgJiYgbV90cmFuc2ZlcnJlZEFycmF5QnVm
ZmVycy50cnlHZXQodmFsdWUuQXM8djg6Ok9iamVjdD4oKSwgJmFycmF5QnVmZmVySW5kZXgpKQor
ICAgIH0gZWxzZSBpZiAoVjhBcnJheUJ1ZmZlcjo6SGFzSW5zdGFuY2UodmFsdWUsIG1faXNvbGF0
ZSwgY3VycmVudFdvcmxkVHlwZSkgJiYgbV90cmFuc2ZlcnJlZEFycmF5QnVmZmVycy50cnlHZXQo
dmFsdWUuQXM8djg6Ok9iamVjdD4oKSwgJmFycmF5QnVmZmVySW5kZXgpKQogICAgICAgICByZXR1
cm4gd3JpdGVUcmFuc2ZlcnJlZEFycmF5QnVmZmVyKHZhbHVlLCBhcnJheUJ1ZmZlckluZGV4LCBu
ZXh0KTsKICAgICBlbHNlIHsKICAgICAgICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBqc09iamVj
dCA9IHZhbHVlLkFzPHY4OjpPYmplY3Q+KCk7CkBAIC0xMzAwLDIxICsxMzAxLDIxIEBAIFNlcmlh
bGl6ZXI6OlN0YXRlQmFzZSogU2VyaWFsaXplcjo6ZG9TZXJpYWxpemUodjg6OkhhbmRsZTx2ODo6
VmFsdWU+IHZhbHVlLCBTdGF0CiAgICAgICAgICAgICB3cml0ZUJvb2xlYW5PYmplY3QodmFsdWUp
OwogICAgICAgICBlbHNlIGlmICh2YWx1ZS0+SXNBcnJheSgpKSB7CiAgICAgICAgICAgICByZXR1
cm4gc3RhcnRBcnJheVN0YXRlKHZhbHVlLkFzPHY4OjpBcnJheT4oKSwgbmV4dCk7Ci0gICAgICAg
IH0gZWxzZSBpZiAoVjhGaWxlOjpIYXNJbnN0YW5jZSh2YWx1ZSwgbV9pc29sYXRlKSkKKyAgICAg
ICAgfSBlbHNlIGlmIChWOEZpbGU6Okhhc0luc3RhbmNlKHZhbHVlLCBtX2lzb2xhdGUsIGN1cnJl
bnRXb3JsZFR5cGUpKQogICAgICAgICAgICAgd3JpdGVGaWxlKHZhbHVlKTsKLSAgICAgICAgZWxz
ZSBpZiAoVjhCbG9iOjpIYXNJbnN0YW5jZSh2YWx1ZSwgbV9pc29sYXRlKSkKKyAgICAgICAgZWxz
ZSBpZiAoVjhCbG9iOjpIYXNJbnN0YW5jZSh2YWx1ZSwgbV9pc29sYXRlLCBjdXJyZW50V29ybGRU
eXBlKSkKICAgICAgICAgICAgIHdyaXRlQmxvYih2YWx1ZSk7CiAjaWYgRU5BQkxFKEZJTEVfU1lT
VEVNKQotICAgICAgICBlbHNlIGlmIChWOERPTUZpbGVTeXN0ZW06Okhhc0luc3RhbmNlKHZhbHVl
LCBtX2lzb2xhdGUpKQorICAgICAgICBlbHNlIGlmIChWOERPTUZpbGVTeXN0ZW06Okhhc0luc3Rh
bmNlKHZhbHVlLCBtX2lzb2xhdGUsIGN1cnJlbnRXb3JsZFR5cGUpKQogICAgICAgICAgICAgcmV0
dXJuIHdyaXRlRE9NRmlsZVN5c3RlbSh2YWx1ZSwgbmV4dCk7CiAjZW5kaWYKLSAgICAgICAgZWxz
ZSBpZiAoVjhGaWxlTGlzdDo6SGFzSW5zdGFuY2UodmFsdWUsIG1faXNvbGF0ZSkpCisgICAgICAg
IGVsc2UgaWYgKFY4RmlsZUxpc3Q6Okhhc0luc3RhbmNlKHZhbHVlLCBtX2lzb2xhdGUsIGN1cnJl
bnRXb3JsZFR5cGUpKQogICAgICAgICAgICAgd3JpdGVGaWxlTGlzdCh2YWx1ZSk7Ci0gICAgICAg
IGVsc2UgaWYgKFY4SW1hZ2VEYXRhOjpIYXNJbnN0YW5jZSh2YWx1ZSwgbV9pc29sYXRlKSkKKyAg
ICAgICAgZWxzZSBpZiAoVjhJbWFnZURhdGE6Okhhc0luc3RhbmNlKHZhbHVlLCBtX2lzb2xhdGUs
IGN1cnJlbnRXb3JsZFR5cGUpKQogICAgICAgICAgICAgd3JpdGVJbWFnZURhdGEodmFsdWUpOwog
ICAgICAgICBlbHNlIGlmICh2YWx1ZS0+SXNSZWdFeHAoKSkKICAgICAgICAgICAgIHdyaXRlUmVn
RXhwKHZhbHVlKTsKLSAgICAgICAgZWxzZSBpZiAoVjhBcnJheUJ1ZmZlcjo6SGFzSW5zdGFuY2Uo
dmFsdWUsIG1faXNvbGF0ZSkpCisgICAgICAgIGVsc2UgaWYgKFY4QXJyYXlCdWZmZXI6Okhhc0lu
c3RhbmNlKHZhbHVlLCBtX2lzb2xhdGUsIGN1cnJlbnRXb3JsZFR5cGUpKQogICAgICAgICAgICAg
cmV0dXJuIHdyaXRlQXJyYXlCdWZmZXIodmFsdWUsIG5leHQpOwogICAgICAgICBlbHNlIGlmICh2
YWx1ZS0+SXNPYmplY3QoKSkgewogICAgICAgICAgICAgaWYgKGlzSG9zdE9iamVjdChqc09iamVj
dCkgfHwganNPYmplY3QtPklzQ2FsbGFibGUoKSB8fCB2YWx1ZS0+SXNOYXRpdmVFcnJvcigpKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhCaW5kaW5nLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4QmluZGluZy5jcHAKaW5kZXggYzUwNTNiYTljYzlm
YzVlYjNkZTdjNmFjODcxOWZhNGYxY2EyNTdiNC4uY2RkNGZkNThmYWQxODY1Y2ZkYTRlM2QwMzg0
NTBmMTVhNjU5YmU1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhC
aW5kaW5nLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOEJpbmRpbmcuY3Bw
CkBAIC0xODUsNyArMTg1LDcgQEAgUGFzc1JlZlB0cjxET01TdHJpbmdMaXN0PiB0b0RPTVN0cmlu
Z0xpc3Qodjg6OkhhbmRsZTx2ODo6VmFsdWU+IHZhbHVlLCB2ODo6SXNvbGEKIHsKICAgICB2ODo6
TG9jYWw8djg6OlZhbHVlPiB2OFZhbHVlKHY4OjpMb2NhbDx2ODo6VmFsdWU+OjpOZXcodmFsdWUp
KTsKIAotICAgIGlmIChWOERPTVN0cmluZ0xpc3Q6Okhhc0luc3RhbmNlKHY4VmFsdWUsIGlzb2xh
dGUpKSB7CisgICAgaWYgKFY4RE9NU3RyaW5nTGlzdDo6SGFzSW5zdGFuY2UodjhWYWx1ZSwgaXNv
bGF0ZSwgd29ybGRUeXBlKGlzb2xhdGUpKSkgewogICAgICAgICBSZWZQdHI8RE9NU3RyaW5nTGlz
dD4gcmV0ID0gVjhET01TdHJpbmdMaXN0Ojp0b05hdGl2ZSh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+
OjpDYXN0KHY4VmFsdWUpKTsKICAgICAgICAgcmV0dXJuIHJldC5yZWxlYXNlKCk7CiAgICAgfQpA
QCAtMjA1LDcgKzIwNSw3IEBAIFBhc3NSZWZQdHI8RE9NU3RyaW5nTGlzdD4gdG9ET01TdHJpbmdM
aXN0KHY4OjpIYW5kbGU8djg6OlZhbHVlPiB2YWx1ZSwgdjg6Oklzb2xhCiBQYXNzUmVmUHRyPFhQ
YXRoTlNSZXNvbHZlcj4gdG9YUGF0aE5TUmVzb2x2ZXIodjg6OkhhbmRsZTx2ODo6VmFsdWU+IHZh
bHVlLCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSkKIHsKICAgICBSZWZQdHI8WFBhdGhOU1Jlc29sdmVy
PiByZXNvbHZlcjsKLSAgICBpZiAoVjhYUGF0aE5TUmVzb2x2ZXI6Okhhc0luc3RhbmNlKHZhbHVl
LCBpc29sYXRlKSkKKyAgICBpZiAoVjhYUGF0aE5TUmVzb2x2ZXI6Okhhc0luc3RhbmNlKHZhbHVl
LCBpc29sYXRlLCB3b3JsZFR5cGUoaXNvbGF0ZSkpKQogICAgICAgICByZXNvbHZlciA9IFY4WFBh
dGhOU1Jlc29sdmVyOjp0b05hdGl2ZSh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+OjpDYXN0KHZhbHVl
KSk7CiAgICAgZWxzZSBpZiAodmFsdWUtPklzT2JqZWN0KCkpCiAgICAgICAgIHJlc29sdmVyID0g
VjhDdXN0b21YUGF0aE5TUmVzb2x2ZXI6OmNyZWF0ZSh2YWx1ZS0+VG9PYmplY3QoKSwgaXNvbGF0
ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOEJpbmRpbmcuaCBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4QmluZGluZy5oCmluZGV4IGJjMTEyNWU3M2Ew
OWE2MDc2OTAwMDU2MTMxYTEzNWMyYjAxYTM4YmEuLmM0MzVmZmNjM2E4YTczOWVlMDdjYTU0NzQz
NjViNTg4NDgzY2RlMjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4
QmluZGluZy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4QmluZGluZy5oCkBA
IC0yNzUsNiArMjc1LDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICByZXR1cm4gc3Rh
dGljX2Nhc3Q8bG9uZyBsb25nPih2YWx1ZS0+SW50ZWdlclZhbHVlKCkpOwogICAgIH0KIAorICAg
IFdyYXBwZXJXb3JsZFR5cGUgd29ybGRUeXBlKHY4OjpJc29sYXRlKik7CisgICAgV3JhcHBlcldv
cmxkVHlwZSB3b3JsZFR5cGVJbk1haW5UaHJlYWQodjg6Oklzb2xhdGUqKTsKKwogICAgIHRlbXBs
YXRlPGNsYXNzIFQ+IHN0cnVjdCBOYXRpdmVWYWx1ZVRyYWl0czsKIAogICAgIHRlbXBsYXRlPD4K
QEAgLTMyMiw3ICszMjUsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIGZvciAoc2l6
ZV90IGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kpIHsKICAgICAgICAgICAgIHY4OjpIYW5kbGU8djg6
OlZhbHVlPiBlbGVtZW50ID0gYXJyYXktPkdldChpKTsKIAotICAgICAgICAgICAgaWYgKFY4VDo6
SGFzSW5zdGFuY2UoZWxlbWVudCwgaXNvbGF0ZSkpIHsKKyAgICAgICAgICAgIGlmIChWOFQ6Okhh
c0luc3RhbmNlKGVsZW1lbnQsIGlzb2xhdGUsIHdvcmxkVHlwZShpc29sYXRlKSkpIHsKICAgICAg
ICAgICAgICAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IG9iamVjdCA9IHY4OjpIYW5kbGU8djg6
Ok9iamVjdD46OkNhc3QoZWxlbWVudCk7CiAgICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZChW
OFQ6OnRvTmF0aXZlKG9iamVjdCkpOwogICAgICAgICAgICAgfSBlbHNlIHsKQEAgLTQ2Nyw5ICs0
NzAsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICB2b2lkIGNyYXNoSWZWOElzRGVhZCgp
OwogCi0gICAgV3JhcHBlcldvcmxkVHlwZSB3b3JsZFR5cGUodjg6Oklzb2xhdGUqKTsKLSAgICBX
cmFwcGVyV29ybGRUeXBlIHdvcmxkVHlwZUluTWFpblRocmVhZCh2ODo6SXNvbGF0ZSopOwotCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBWOEJpbmRpbmdfaApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhDb2xsZWN0aW9uLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4Q29sbGVjdGlvbi5jcHAKaW5kZXggMDU4YTI3ZGY0NDFiZDVl
ZGEwMzZiMzZjZDY3YjI5ZTkzZGNiMzkxYi4uMjg0NWVlOTM2YTcyNmFkMDA1YWM2NjkyNjI1Mzgy
YzUxNmEwNmNhNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhDb2xs
ZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOENvbGxlY3Rpb24u
Y3BwCkBAIC00Nyw3ICs0Nyw3IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB0b09wdGlvbnNDb2xs
ZWN0aW9uU2V0dGVyKHVpbnQzMl90IGluZGV4LCB2ODo6SGFuZGxlPHY4OjpWCiAgICAgRXhjZXB0
aW9uQ29kZSBlYyA9IDA7CiAKICAgICAvLyBDaGVjayB0aGF0IHRoZSB2YWx1ZSBpcyBhbiBIVE1M
T3B0aW9uRWxlbWVudC4gIElmIG5vdCwgdGhyb3cgYSBUWVBFX01JU01BVENIX0VSUiBET01FeGNl
cHRpb24uCi0gICAgaWYgKCFWOEhUTUxPcHRpb25FbGVtZW50OjpIYXNJbnN0YW5jZSh2YWx1ZSwg
aXNvbGF0ZSkpIHsKKyAgICBpZiAoIVY4SFRNTE9wdGlvbkVsZW1lbnQ6Okhhc0luc3RhbmNlKHZh
bHVlLCBpc29sYXRlLCB3b3JsZFR5cGUoaXNvbGF0ZSkpKSB7CiAgICAgICAgIHNldERPTUV4Y2Vw
dGlvbihUWVBFX01JU01BVENIX0VSUiwgaXNvbGF0ZSk7CiAgICAgICAgIHJldHVybiB2YWx1ZTsK
ICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOE5QT2JqZWN0
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4TlBPYmplY3QuY3BwCmluZGV4IDJi
ZmJiZDgxZWRhNGZmOTU5Y2FjNjU0YjBkZTg2Y2Q0NWUzMTI2ZDYuLjBhZjVlYjQ0ZDI0N2YxMTdj
NmJlNTQ0ODE2MTQ2ZTMxMjYzZWRjNjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3Y4L1Y4TlBPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4
TlBPYmplY3QuY3BwCkBAIC02OSwxNCArNjksMTUgQEAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZh
bHVlPiBucE9iamVjdEludm9rZUltcGwoY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncywgSW52b2sK
IHsKICAgICBOUE9iamVjdCogbnBPYmplY3Q7CiAKKyAgICBXcmFwcGVyV29ybGRUeXBlIGN1cnJl
bnRXb3JsZFR5cGUgPSB3b3JsZFR5cGUoYXJncy5HZXRJc29sYXRlKCkpOwogICAgIC8vIFRoZXNl
IHRocmVlIHR5cGVzIGFyZSBzdWJ0eXBlcyBvZiBIVE1MUGx1Z0luRWxlbWVudC4KLSAgICBpZiAo
VjhIVE1MQXBwbGV0RWxlbWVudDo6SGFzSW5zdGFuY2UoYXJncy5Ib2xkZXIoKSwgYXJncy5HZXRJ
c29sYXRlKCkpIHx8IFY4SFRNTEVtYmVkRWxlbWVudDo6SGFzSW5zdGFuY2UoYXJncy5Ib2xkZXIo
KSwgYXJncy5HZXRJc29sYXRlKCkpCi0gICAgICAgIHx8IFY4SFRNTE9iamVjdEVsZW1lbnQ6Okhh
c0luc3RhbmNlKGFyZ3MuSG9sZGVyKCksIGFyZ3MuR2V0SXNvbGF0ZSgpKSkgeworICAgIGlmIChW
OEhUTUxBcHBsZXRFbGVtZW50OjpIYXNJbnN0YW5jZShhcmdzLkhvbGRlcigpLCBhcmdzLkdldElz
b2xhdGUoKSwgY3VycmVudFdvcmxkVHlwZSkgfHwgVjhIVE1MRW1iZWRFbGVtZW50OjpIYXNJbnN0
YW5jZShhcmdzLkhvbGRlcigpLCBhcmdzLkdldElzb2xhdGUoKSwgY3VycmVudFdvcmxkVHlwZSkK
KyAgICAgICAgfHwgVjhIVE1MT2JqZWN0RWxlbWVudDo6SGFzSW5zdGFuY2UoYXJncy5Ib2xkZXIo
KSwgYXJncy5HZXRJc29sYXRlKCksIGN1cnJlbnRXb3JsZFR5cGUpKSB7CiAgICAgICAgIC8vIFRo
ZSBob2xkZXIgb2JqZWN0IGlzIGEgc3VidHlwZSBvZiBIVE1MUGx1Z0luRWxlbWVudC4KICAgICAg
ICAgSFRNTFBsdWdJbkVsZW1lbnQqIGVsZW1lbnQ7Ci0gICAgICAgIGlmIChWOEhUTUxBcHBsZXRF
bGVtZW50OjpIYXNJbnN0YW5jZShhcmdzLkhvbGRlcigpLCBhcmdzLkdldElzb2xhdGUoKSkpCisg
ICAgICAgIGlmIChWOEhUTUxBcHBsZXRFbGVtZW50OjpIYXNJbnN0YW5jZShhcmdzLkhvbGRlcigp
LCBhcmdzLkdldElzb2xhdGUoKSwgY3VycmVudFdvcmxkVHlwZSkpCiAgICAgICAgICAgICBlbGVt
ZW50ID0gVjhIVE1MQXBwbGV0RWxlbWVudDo6dG9OYXRpdmUoYXJncy5Ib2xkZXIoKSk7Ci0gICAg
ICAgIGVsc2UgaWYgKFY4SFRNTEVtYmVkRWxlbWVudDo6SGFzSW5zdGFuY2UoYXJncy5Ib2xkZXIo
KSwgYXJncy5HZXRJc29sYXRlKCkpKQorICAgICAgICBlbHNlIGlmIChWOEhUTUxFbWJlZEVsZW1l
bnQ6Okhhc0luc3RhbmNlKGFyZ3MuSG9sZGVyKCksIGFyZ3MuR2V0SXNvbGF0ZSgpLCBjdXJyZW50
V29ybGRUeXBlKSkKICAgICAgICAgICAgIGVsZW1lbnQgPSBWOEhUTUxFbWJlZEVsZW1lbnQ6OnRv
TmF0aXZlKGFyZ3MuSG9sZGVyKCkpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBlbGVtZW50
ID0gVjhIVE1MT2JqZWN0RWxlbWVudDo6dG9OYXRpdmUoYXJncy5Ib2xkZXIoKSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOFBlcklzb2xhdGVEYXRhLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4UGVySXNvbGF0ZURhdGEuY3BwCmluZGV4IDU5YTIz
YWZkOTdmZGE0OWQ4NjlmNGNhYzY5MGQzNjIzZTRhNjZhZmQuLmRjZWJkZmE2ZDI5OGFkNTRiZGRl
NzM0NmQ1NTdlNTM2N2Q1Yjg5NjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3Y4L1Y4UGVySXNvbGF0ZURhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4
L1Y4UGVySXNvbGF0ZURhdGEuY3BwCkBAIC0xMjYsNyArMTI2LDYgQEAgdm9pZCBWOFBlcklzb2xh
dGVEYXRhOjpyZXBvcnRNZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZvKiBtZW1vcnlPYmplY3RJ
bmZvKSBjb24KIAogdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IFY4UGVySXNv
bGF0ZURhdGE6OnByaXZhdGVUZW1wbGF0ZShXcmFwcGVyV29ybGRUeXBlIGN1cnJlbnRXb3JsZFR5
cGUsIHZvaWQqIHByaXZhdGVQb2ludGVyLCB2ODo6SW52b2NhdGlvbkNhbGxiYWNrIGNhbGxiYWNr
LCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gZGF0YSwgdjg6OkhhbmRsZTx2ODo6U2lnbmF0dXJlPiBz
aWduYXR1cmUsIGludCBsZW5ndGgpCiB7Ci0gICAgQVNTRVJUKGN1cnJlbnRXb3JsZFR5cGUgIT0g
R2V0RnJvbUNvbnRleHQpOwogICAgIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRl
PiBwcml2YXRlVGVtcGxhdGU7CiAgICAgVGVtcGxhdGVNYXAmIHRlbXBsYXRlcyA9IHRlbXBsYXRl
TWFwKGN1cnJlbnRXb3JsZFR5cGUpOwogICAgIFRlbXBsYXRlTWFwOjppdGVyYXRvciByZXN1bHQg
PSB0ZW1wbGF0ZXMuZmluZChwcml2YXRlUG9pbnRlcik7CkBAIC0xMzksNyArMTM4LDYgQEAgdjg6
OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IFY4UGVySXNvbGF0ZURhdGE6OnByaXZh
dGVUZW1wbGF0ZShXcmFwcGVyV28KIAogdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxh
dGU+IFY4UGVySXNvbGF0ZURhdGE6OnJhd1RlbXBsYXRlKFdyYXBwZXJUeXBlSW5mbyogaW5mbywg
V3JhcHBlcldvcmxkVHlwZSBjdXJyZW50V29ybGRUeXBlKQogewotICAgIEFTU0VSVChjdXJyZW50
V29ybGRUeXBlICE9IEdldEZyb21Db250ZXh0KTsKICAgICBUZW1wbGF0ZU1hcCYgdGVtcGxhdGVz
ID0gcmF3VGVtcGxhdGVNYXAoY3VycmVudFdvcmxkVHlwZSk7CiAgICAgVGVtcGxhdGVNYXA6Oml0
ZXJhdG9yIHJlc3VsdCA9IHRlbXBsYXRlcy5maW5kKGluZm8pOwogICAgIGlmIChyZXN1bHQgIT0g
dGVtcGxhdGVzLmVuZCgpKQpAQCAtMTUzLDggKzE1MSw2IEBAIHY4OjpQZXJzaXN0ZW50PHY4OjpG
dW5jdGlvblRlbXBsYXRlPiBWOFBlcklzb2xhdGVEYXRhOjpyYXdUZW1wbGF0ZShXcmFwcGVyVHlw
ZUluCiAKIGJvb2wgVjhQZXJJc29sYXRlRGF0YTo6aGFzSW5zdGFuY2UoV3JhcHBlclR5cGVJbmZv
KiBpbmZvLCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdmFsdWUsIFdyYXBwZXJXb3JsZFR5cGUgY3Vy
cmVudFdvcmxkVHlwZSkKIHsKLSAgICBpZiAoY3VycmVudFdvcmxkVHlwZSA9PSBHZXRGcm9tQ29u
dGV4dCkKLSAgICAgICAgY3VycmVudFdvcmxkVHlwZSA9IHdvcmxkVHlwZShtX2lzb2xhdGUpOwog
ICAgIFRlbXBsYXRlTWFwJiB0ZW1wbGF0ZXMgPSByYXdUZW1wbGF0ZU1hcChjdXJyZW50V29ybGRU
eXBlKTsKICAgICBUZW1wbGF0ZU1hcDo6aXRlcmF0b3IgcmVzdWx0ID0gdGVtcGxhdGVzLmZpbmQo
aW5mbyk7CiAgICAgaWYgKHJlc3VsdCA9PSB0ZW1wbGF0ZXMuZW5kKCkpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOFV0aWxpdGllcy5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy92OC9WOFV0aWxpdGllcy5jcHAKaW5kZXggM2ZiODgwOTE3NTFlMDk4ZTM3NjE4
YjQwYjBjM2Y5Yjc2YTkyYmM1Yi4uOGQ5YzkwMTU1M2FkNmMzM2FkZTkxNTc4OWU1MTExZWMwYzU5
MWE5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhVdGlsaXRpZXMu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4VXRpbGl0aWVzLmNwcApAQCAt
OTAsNyArOTAsNyBAQCBib29sIGV4dHJhY3RUcmFuc2ZlcmFibGVzKHY4OjpMb2NhbDx2ODo6VmFs
dWU+IHZhbHVlLCBNZXNzYWdlUG9ydEFycmF5JiBwb3J0cywgQQogICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOwogICAgICAgICB9CiAgICAgICAgIC8vIFZhbGlkYXRpb24gb2YgT2JqZWN0cyBpbXBs
ZW1lbnRpbmcgYW4gaW50ZXJmYWNlLCBwZXIgV2ViSURMIHNwZWMgNC4xLjE1LgotICAgICAgICBp
ZiAoVjhNZXNzYWdlUG9ydDo6SGFzSW5zdGFuY2UodHJhbnNmZXJyYWJsZSwgaXNvbGF0ZSkpIHsK
KyAgICAgICAgaWYgKFY4TWVzc2FnZVBvcnQ6Okhhc0luc3RhbmNlKHRyYW5zZmVycmFibGUsIGlz
b2xhdGUsIHdvcmxkVHlwZShpc29sYXRlKSkpIHsKICAgICAgICAgICAgIFJlZlB0cjxNZXNzYWdl
UG9ydD4gcG9ydCA9IFY4TWVzc2FnZVBvcnQ6OnRvTmF0aXZlKHY4OjpIYW5kbGU8djg6Ok9iamVj
dD46OkNhc3QodHJhbnNmZXJyYWJsZSkpOwogICAgICAgICAgICAgLy8gQ2hlY2sgZm9yIGR1cGxp
Y2F0ZSBNZXNzYWdlUG9ydHMuCiAgICAgICAgICAgICBpZiAocG9ydHMuY29udGFpbnMocG9ydCkp
IHsKQEAgLTk4LDcgKzk4LDcgQEAgYm9vbCBleHRyYWN0VHJhbnNmZXJhYmxlcyh2ODo6TG9jYWw8
djg6OlZhbHVlPiB2YWx1ZSwgTWVzc2FnZVBvcnRBcnJheSYgcG9ydHMsIEEKICAgICAgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBwb3J0cy5hcHBl
bmQocG9ydC5yZWxlYXNlKCkpOwotICAgICAgICB9IGVsc2UgaWYgKFY4QXJyYXlCdWZmZXI6Okhh
c0luc3RhbmNlKHRyYW5zZmVycmFibGUsIGlzb2xhdGUpKQorICAgICAgICB9IGVsc2UgaWYgKFY4
QXJyYXlCdWZmZXI6Okhhc0luc3RhbmNlKHRyYW5zZmVycmFibGUsIGlzb2xhdGUsIHdvcmxkVHlw
ZShpc29sYXRlKSkpCiAgICAgICAgICAgICBhcnJheUJ1ZmZlcnMuYXBwZW5kKFY4QXJyYXlCdWZm
ZXI6OnRvTmF0aXZlKHY4OjpIYW5kbGU8djg6Ok9iamVjdD46OkNhc3QodHJhbnNmZXJyYWJsZSkp
KTsKICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICB0aHJvd1R5cGVFcnJvcigwLCBpc29sYXRl
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1dyYXBwZXJUeXBlSW5m
by5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvV3JhcHBlclR5cGVJbmZvLmgKaW5kZXgg
NjVmYTZmYzZlYTU5MzgzYmY1MThjY2IxNTFjYjFhYjMwZWExNGQyMy4uNDU2ZTAwMjAxOWZmYWI1
NDJmZGViNWZjYWU3Njg4Zjc5NTBhYTM1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvdjgvV3JhcHBlclR5cGVJbmZvLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
djgvV3JhcHBlclR5cGVJbmZvLmgKQEAgLTUyLDkgKzUyLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogICAgIGVudW0gV3JhcHBlcldvcmxkVHlwZSB7CiAgICAgICAgIE1haW5Xb3JsZCwKICAgICAg
ICAgSXNvbGF0ZWRXb3JsZCwKLSAgICAgICAgV29ya2VyV29ybGQsCi0gICAgICAgIC8vIFdoYXRl
dmVyIHdvcmxkIHR5cGUgdGhlIGN1cnJlbnQgY29udGV4dCBoYXMuIEZJWE1FOiByZW1vdmUgdGhp
cy4KLSAgICAgICAgR2V0RnJvbUNvbnRleHQKKyAgICAgICAgV29ya2VyV29ybGQKICAgICB9Owog
CiAgICAgdHlwZWRlZiB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gKCpHZXRU
ZW1wbGF0ZUZ1bmN0aW9uKSh2ODo6SXNvbGF0ZSosIFdyYXBwZXJXb3JsZFR5cGUpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4QXJyYXlCdWZmZXJWaWV3
Q3VzdG9tLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhBcnJheUJ1ZmZl
clZpZXdDdXN0b20uaAppbmRleCBlYWI2ODRjMjVmOTk3NzAwYjliMDc0ZjJhZWJkNDljYmU5ZTJm
NDkyLi5hYzBhYjU3MDg4ZmFmODJmODk3NmQxZGQ5NGNjMTk2YzBjNmNhOWI0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhBcnJheUJ1ZmZlclZpZXdDdXN0
b20uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhBcnJheUJ1ZmZl
clZpZXdDdXN0b20uaApAQCAtMTM4LDEyICsxMzgsMTIgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+
IGNvbnN0cnVjdFdlYkdMQXJyYXkoY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncywgV3JhcHBlclR5
cGUKICAgICB9CiAKICAgICAvLyBTZWUgd2hldGhlciB0aGUgZmlyc3QgYXJndW1lbnQgaXMgYSBB
cnJheUJ1ZmZlci4KLSAgICBpZiAoVjhBcnJheUJ1ZmZlcjo6SGFzSW5zdGFuY2UoYXJnc1swXSwg
YXJncy5HZXRJc29sYXRlKCkpKQorICAgIGlmIChWOEFycmF5QnVmZmVyOjpIYXNJbnN0YW5jZShh
cmdzWzBdLCBhcmdzLkdldElzb2xhdGUoKSwgd29ybGRUeXBlKGFyZ3MuR2V0SXNvbGF0ZSgpKSkp
CiAgICAgICByZXR1cm4gY29uc3RydWN0V2ViR0xBcnJheVdpdGhBcnJheUJ1ZmZlckFyZ3VtZW50
PEFycmF5Q2xhc3MsIEVsZW1lbnRUeXBlPihhcmdzLCB0eXBlLCBhcnJheVR5cGUsIHRydWUpOwog
CiAgICAgLy8gU2VlIHdoZXRoZXIgdGhlIGZpcnN0IGFyZ3VtZW50IGlzIHRoZSBzYW1lIHR5cGUg
YXMgaW1wbC4gSW4gdGhhdCBjYXNlLAogICAgIC8vIHdlIGNhbiBzaW1wbHkgbWVtY3B5IGRhdGEg
ZnJvbSBzb3VyY2UgdG8gaW1wbC4KLSAgICBpZiAoSmF2YVNjcmlwdFdyYXBwZXJBcnJheVR5cGU6
Okhhc0luc3RhbmNlKGFyZ3NbMF0sIGFyZ3MuR2V0SXNvbGF0ZSgpKSkgeworICAgIGlmIChKYXZh
U2NyaXB0V3JhcHBlckFycmF5VHlwZTo6SGFzSW5zdGFuY2UoYXJnc1swXSwgYXJncy5HZXRJc29s
YXRlKCksIHdvcmxkVHlwZShhcmdzLkdldElzb2xhdGUoKSkpKSB7CiAgICAgICAgIEFycmF5Q2xh
c3MqIHNvdXJjZSA9IEphdmFTY3JpcHRXcmFwcGVyQXJyYXlUeXBlOjp0b05hdGl2ZShhcmdzWzBd
LT5Ub09iamVjdCgpKTsKICAgICAgICAgdWludDMyX3QgbGVuZ3RoID0gc291cmNlLT5sZW5ndGgo
KTsKIApAQCAtMjM2LDcgKzIzNiw3IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBzZXRXZWJHTEFy
cmF5SGVscGVyKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiAKICAgICBDUGx1c1BsdXNBcnJh
eVR5cGUqIGltcGwgPSBKYXZhU2NyaXB0V3JhcHBlckFycmF5VHlwZTo6dG9OYXRpdmUoYXJncy5I
b2xkZXIoKSk7CiAKLSAgICBpZiAoSmF2YVNjcmlwdFdyYXBwZXJBcnJheVR5cGU6Okhhc0luc3Rh
bmNlKGFyZ3NbMF0sIGFyZ3MuR2V0SXNvbGF0ZSgpKSkgeworICAgIGlmIChKYXZhU2NyaXB0V3Jh
cHBlckFycmF5VHlwZTo6SGFzSW5zdGFuY2UoYXJnc1swXSwgYXJncy5HZXRJc29sYXRlKCksIHdv
cmxkVHlwZShhcmdzLkdldElzb2xhdGUoKSkpKSB7CiAgICAgICAgIC8vIHZvaWQgc2V0KGluIFdl
YkdMPFQ+QXJyYXkgYXJyYXksIFtPcHRpb25hbF0gaW4gdW5zaWduZWQgbG9uZyBvZmZzZXQpOwog
ICAgICAgICBDUGx1c1BsdXNBcnJheVR5cGUqIHNyYyA9IEphdmFTY3JpcHRXcmFwcGVyQXJyYXlU
eXBlOjp0b05hdGl2ZShhcmdzWzBdLT5Ub09iamVjdCgpKTsKICAgICAgICAgdWludDMyX3Qgb2Zm
c2V0ID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9W
OEF1ZGlvQnVmZmVyU291cmNlTm9kZUN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy92OC9jdXN0b20vVjhBdWRpb0J1ZmZlclNvdXJjZU5vZGVDdXN0b20uY3BwCmluZGV4IDU0NWNm
MmIxZGRiNDMyMjQ4OGQ3NjQyMmFlNzllZjA1NTlkMjQwMWMuLmFhM2U1ODMxODAwZWY0ZWE2NDIw
ODBhMzcxMWExNWM3N2JhMDU1M2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3Y4L2N1c3RvbS9WOEF1ZGlvQnVmZmVyU291cmNlTm9kZUN1c3RvbS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4QXVkaW9CdWZmZXJTb3VyY2VOb2RlQ3VzdG9t
LmNwcApAQCAtNDIsNyArNDIsNyBAQCB2b2lkIFY4QXVkaW9CdWZmZXJTb3VyY2VOb2RlOjpidWZm
ZXJBdHRyU2V0dGVyQ3VzdG9tKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLAogICAgIEF1ZGlv
QnVmZmVyU291cmNlTm9kZSogaW1wID0gVjhBdWRpb0J1ZmZlclNvdXJjZU5vZGU6OnRvTmF0aXZl
KGhvbGRlcik7CiAKICAgICBBdWRpb0J1ZmZlciogYnVmZmVyID0gMDsKLSAgICBpZiAoVjhBdWRp
b0J1ZmZlcjo6SGFzSW5zdGFuY2UodmFsdWUsIGluZm8uR2V0SXNvbGF0ZSgpKSkgeworICAgIGlm
IChWOEF1ZGlvQnVmZmVyOjpIYXNJbnN0YW5jZSh2YWx1ZSwgaW5mby5HZXRJc29sYXRlKCksIHdv
cmxkVHlwZShpbmZvLkdldElzb2xhdGUoKSkpKSB7CiAgICAgICAgIGJ1ZmZlciA9IFY4QXVkaW9C
dWZmZXI6OnRvTmF0aXZlKHZhbHVlLT5Ub09iamVjdCgpKTsKICAgICAgICAgaWYgKGJ1ZmZlciAm
JiAhaW1wLT5zZXRCdWZmZXIoYnVmZmVyKSkgewogICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3Io
IkF1ZGlvQnVmZmVyIHVuc3VwcG9ydGVkIG51bWJlciBvZiBjaGFubmVscyIsIGluZm8uR2V0SXNv
bGF0ZSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9W
OEJsb2JDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4Qmxv
YkN1c3RvbS5jcHAKaW5kZXggMTdmOGIyMmVkYzc2OWE3YjJhYTRkZmY0OTg2YTYyYjI1NGJkNzZh
Ni4uNzNjYjZjNjcyNjRiODcyZDA3MmNhNGU0YTE0MDIwM2NhNGI2YzIwNyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4QmxvYkN1c3RvbS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4QmxvYkN1c3RvbS5jcHAKQEAgLTk3
LDE3ICs5NywxNyBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhCbG9iOjpjb25zdHJ1Y3RvckN1
c3RvbShjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogICAgICAgICB2ODo6TG9jYWw8djg6OlZh
bHVlPiBpdGVtID0gYmxvYlBhcnRzLT5HZXQodjg6OlVpbnQzMjo6TmV3KGkpKTsKICAgICAgICAg
QVNTRVJUKCFpdGVtLklzRW1wdHkoKSk7CiAjaWYgRU5BQkxFKEJMT0IpCi0gICAgICAgIGlmIChW
OEFycmF5QnVmZmVyOjpIYXNJbnN0YW5jZShpdGVtLCBhcmdzLkdldElzb2xhdGUoKSkpIHsKKyAg
ICAgICAgaWYgKFY4QXJyYXlCdWZmZXI6Okhhc0luc3RhbmNlKGl0ZW0sIGFyZ3MuR2V0SXNvbGF0
ZSgpLCB3b3JsZFR5cGUoYXJncy5HZXRJc29sYXRlKCkpKSkgewogICAgICAgICAgICAgQXJyYXlC
dWZmZXIqIGFycmF5QnVmZmVyID0gVjhBcnJheUJ1ZmZlcjo6dG9OYXRpdmUodjg6OkhhbmRsZTx2
ODo6T2JqZWN0Pjo6Q2FzdChpdGVtKSk7CiAgICAgICAgICAgICBBU1NFUlQoYXJyYXlCdWZmZXIp
OwogICAgICAgICAgICAgYmxvYkJ1aWxkZXIuYXBwZW5kKGNvbnRleHQsIGFycmF5QnVmZmVyKTsK
LSAgICAgICAgfSBlbHNlIGlmIChWOEFycmF5QnVmZmVyVmlldzo6SGFzSW5zdGFuY2UoaXRlbSwg
YXJncy5HZXRJc29sYXRlKCkpKSB7CisgICAgICAgIH0gZWxzZSBpZiAoVjhBcnJheUJ1ZmZlclZp
ZXc6Okhhc0luc3RhbmNlKGl0ZW0sIGFyZ3MuR2V0SXNvbGF0ZSgpLCB3b3JsZFR5cGUoYXJncy5H
ZXRJc29sYXRlKCkpKSkgewogICAgICAgICAgICAgQXJyYXlCdWZmZXJWaWV3KiBhcnJheUJ1ZmZl
clZpZXcgPSBWOEFycmF5QnVmZmVyVmlldzo6dG9OYXRpdmUodjg6OkhhbmRsZTx2ODo6T2JqZWN0
Pjo6Q2FzdChpdGVtKSk7CiAgICAgICAgICAgICBBU1NFUlQoYXJyYXlCdWZmZXJWaWV3KTsKICAg
ICAgICAgICAgIGJsb2JCdWlsZGVyLmFwcGVuZChhcnJheUJ1ZmZlclZpZXcpOwogICAgICAgICB9
IGVsc2UKICNlbmRpZgotICAgICAgICBpZiAoVjhCbG9iOjpIYXNJbnN0YW5jZShpdGVtLCBhcmdz
LkdldElzb2xhdGUoKSkpIHsKKyAgICAgICAgaWYgKFY4QmxvYjo6SGFzSW5zdGFuY2UoaXRlbSwg
YXJncy5HZXRJc29sYXRlKCksIHdvcmxkVHlwZShhcmdzLkdldElzb2xhdGUoKSkpKSB7CiAgICAg
ICAgICAgICBCbG9iKiBibG9iID0gVjhCbG9iOjp0b05hdGl2ZSh2ODo6SGFuZGxlPHY4OjpPYmpl
Y3Q+OjpDYXN0KGl0ZW0pKTsKICAgICAgICAgICAgIEFTU0VSVChibG9iKTsKICAgICAgICAgICAg
IGJsb2JCdWlsZGVyLmFwcGVuZChibG9iKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3Y4L2N1c3RvbS9WOENhbnZhc1JlbmRlcmluZ0NvbnRleHQyREN1c3RvbS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhDYW52YXNSZW5kZXJpbmdDb250ZXh0
MkRDdXN0b20uY3BwCmluZGV4IDVjZGExM2E2MDM4ZmNlMzNjYzc0ZTA2MDdjYzIxZjhhY2IyMDQy
ODUuLjU0NTM4MzY4MWMyMTE4ZmIyMzU3ZTZjM2Y2NTU4MjE2NTQ5ODBkNTYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOENhbnZhc1JlbmRlcmluZ0NvbnRl
eHQyREN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4
Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQ3VzdG9tLmNwcApAQCAtNjEsMTAgKzYxLDEwIEBAIHN0
YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdG9WOE9iamVjdChDYW52YXNTdHlsZSogc3R5bGUs
IHY4OjpIYW5kbGU8djg6Ok9iamVjCiAKIHN0YXRpYyBQYXNzUmVmUHRyPENhbnZhc1N0eWxlPiB0
b0NhbnZhc1N0eWxlKHY4OjpIYW5kbGU8djg6OlZhbHVlPiB2YWx1ZSwgdjg6Oklzb2xhdGUqIGlz
b2xhdGUpCiB7Ci0gICAgaWYgKFY4Q2FudmFzR3JhZGllbnQ6Okhhc0luc3RhbmNlKHZhbHVlLCBp
c29sYXRlKSkKKyAgICBpZiAoVjhDYW52YXNHcmFkaWVudDo6SGFzSW5zdGFuY2UodmFsdWUsIGlz
b2xhdGUsIHdvcmxkVHlwZShpc29sYXRlKSkpCiAgICAgICAgIHJldHVybiBDYW52YXNTdHlsZTo6
Y3JlYXRlRnJvbUdyYWRpZW50KFY4Q2FudmFzR3JhZGllbnQ6OnRvTmF0aXZlKHY4OjpIYW5kbGU8
djg6Ok9iamVjdD46OkNhc3QodmFsdWUpKSk7CiAKLSAgICBpZiAoVjhDYW52YXNQYXR0ZXJuOjpI
YXNJbnN0YW5jZSh2YWx1ZSwgaXNvbGF0ZSkpCisgICAgaWYgKFY4Q2FudmFzUGF0dGVybjo6SGFz
SW5zdGFuY2UodmFsdWUsIGlzb2xhdGUsIHdvcmxkVHlwZShpc29sYXRlKSkpCiAgICAgICAgIHJl
dHVybiBDYW52YXNTdHlsZTo6Y3JlYXRlRnJvbVBhdHRlcm4oVjhDYW52YXNQYXR0ZXJuOjp0b05h
dGl2ZSh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+OjpDYXN0KHZhbHVlKSkpOwogCiAgICAgcmV0dXJu
IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhDbGlw
Ym9hcmRDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4Q2xp
cGJvYXJkQ3VzdG9tLmNwcAppbmRleCA1ZGZhOWIxYzZkMzE0NjE4MGVjMGJkODJkYTRlMGY2Mjhm
MWJiM2Y0Li5jNjVhYTE3NzcxMThkZTdiYzZmZWNlZmRhZTI3Njg4MzFiNGFlMzE0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhDbGlwYm9hcmRDdXN0b20u
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOENsaXBib2FyZEN1
c3RvbS5jcHAKQEAgLTkxLDcgKzkxLDcgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4Q2xpcGJv
YXJkOjpzZXREcmFnSW1hZ2VNZXRob2RDdXN0b20oY29uc3Qgdjg6OkFyZ3VtZW50cyYKICAgICBp
bnQgeSA9IHRvSW50MzIoYXJnc1syXSk7CiAKICAgICBOb2RlKiBub2RlID0gMDsKLSAgICBpZiAo
VjhOb2RlOjpIYXNJbnN0YW5jZShhcmdzWzBdLCBhcmdzLkdldElzb2xhdGUoKSkpCisgICAgaWYg
KFY4Tm9kZTo6SGFzSW5zdGFuY2UoYXJnc1swXSwgYXJncy5HZXRJc29sYXRlKCksIHdvcmxkVHlw
ZShhcmdzLkdldElzb2xhdGUoKSkpKQogICAgICAgICBub2RlID0gVjhOb2RlOjp0b05hdGl2ZSh2
ODo6SGFuZGxlPHY4OjpPYmplY3Q+OjpDYXN0KGFyZ3NbMF0pKTsKIAogICAgIGlmICghbm9kZSB8
fCAhbm9kZS0+aXNFbGVtZW50Tm9kZSgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvdjgvY3VzdG9tL1Y4Q3J5cHRvQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3Y4L2N1c3RvbS9WOENyeXB0b0N1c3RvbS5jcHAKaW5kZXggNmFjM2VmZTYxY2EzMjczYmQ4
ODZjYjNmNWNjYTdmMGI4ZWM4MWQzNS4uNjJhMmU1MDlmMjkwODZlOGUzOGI0NGI4ZTlhMzRjYTc0
OWRjMDEwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4
Q3J5cHRvQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20v
VjhDcnlwdG9DdXN0b20uY3BwCkBAIC00MSw3ICs0MSw3IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVl
PiBWOENyeXB0bzo6Z2V0UmFuZG9tVmFsdWVzTWV0aG9kQ3VzdG9tKGNvbnN0IHY4OjpBcmd1bWVu
dHMmCiAgICAgICAgIHJldHVybiB0aHJvd05vdEVub3VnaEFyZ3VtZW50c0Vycm9yKGFyZ3MuR2V0
SXNvbGF0ZSgpKTsKIAogICAgIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBidWZmZXIgPSBhcmdzWzBd
OwotICAgIGlmICghVjhBcnJheUJ1ZmZlclZpZXc6Okhhc0luc3RhbmNlKGJ1ZmZlciwgYXJncy5H
ZXRJc29sYXRlKCkpKQorICAgIGlmICghVjhBcnJheUJ1ZmZlclZpZXc6Okhhc0luc3RhbmNlKGJ1
ZmZlciwgYXJncy5HZXRJc29sYXRlKCksIHdvcmxkVHlwZShhcmdzLkdldElzb2xhdGUoKSkpKQog
ICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoIkZpcnN0IGFyZ3VtZW50IGlzIG5vdCBhbiBB
cnJheUJ1ZmZlclZpZXciLCBhcmdzLkdldElzb2xhdGUoKSk7CiAKICAgICBBcnJheUJ1ZmZlclZp
ZXcqIGFycmF5QnVmZmVyVmlldyA9IFY4QXJyYXlCdWZmZXJWaWV3Ojp0b05hdGl2ZSh2ODo6SGFu
ZGxlPHY4OjpPYmplY3Q+OjpDYXN0KGJ1ZmZlcikpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4RE9NRm9ybURhdGFDdXN0b20uY3BwIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4RE9NRm9ybURhdGFDdXN0b20uY3BwCmluZGV4IGI3
ZDNjNWJmYmFiZmE2NGVmYTljMzE2Nzc5ZWQ3NzQxZWQzYmQwY2YuLjk5ZTkwMmQ4OThiNGQ0OWFl
ZTAwNWZiYjI0M2NmZjdmMjFlZjExYWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3Y4L2N1c3RvbS9WOERPTUZvcm1EYXRhQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy92OC9jdXN0b20vVjhET01Gb3JtRGF0YUN1c3RvbS5jcHAKQEAgLTQyLDcgKzQy
LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4RE9NRm9y
bURhdGE6OmNvbnN0cnVjdG9yQ3VzdG9tKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB7CiAg
ICAgSFRNTEZvcm1FbGVtZW50KiBmb3JtID0gMDsKLSAgICBpZiAoYXJncy5MZW5ndGgoKSA+IDAg
JiYgVjhIVE1MRm9ybUVsZW1lbnQ6Okhhc0luc3RhbmNlKGFyZ3NbMF0sIGFyZ3MuR2V0SXNvbGF0
ZSgpKSkKKyAgICBpZiAoYXJncy5MZW5ndGgoKSA+IDAgJiYgVjhIVE1MRm9ybUVsZW1lbnQ6Okhh
c0luc3RhbmNlKGFyZ3NbMF0sIGFyZ3MuR2V0SXNvbGF0ZSgpLCB3b3JsZFR5cGUoYXJncy5HZXRJ
c29sYXRlKCkpKSkKICAgICAgICAgZm9ybSA9IFY4SFRNTEZvcm1FbGVtZW50Ojp0b05hdGl2ZShh
cmdzWzBdLT5Ub09iamVjdCgpKTsKICAgICBSZWZQdHI8RE9NRm9ybURhdGE+IGRvbUZvcm1EYXRh
ID0gRE9NRm9ybURhdGE6OmNyZWF0ZShmb3JtKTsKIApAQCAtNjEsNyArNjEsNyBAQCB2ODo6SGFu
ZGxlPHY4OjpWYWx1ZT4gVjhET01Gb3JtRGF0YTo6YXBwZW5kTWV0aG9kQ3VzdG9tKGNvbnN0IHY4
OjpBcmd1bWVudHMmIGFyZwogICAgIFN0cmluZyBuYW1lID0gdG9XZWJDb3JlU3RyaW5nV2l0aE51
bGxDaGVjayhhcmdzWzBdKTsKIAogICAgIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBhcmcgPSBhcmdz
WzFdOwotICAgIGlmIChWOEJsb2I6Okhhc0luc3RhbmNlKGFyZywgYXJncy5HZXRJc29sYXRlKCkp
KSB7CisgICAgaWYgKFY4QmxvYjo6SGFzSW5zdGFuY2UoYXJnLCBhcmdzLkdldElzb2xhdGUoKSwg
d29ybGRUeXBlKGFyZ3MuR2V0SXNvbGF0ZSgpKSkpIHsKICAgICAgICAgdjg6OkhhbmRsZTx2ODo6
T2JqZWN0PiBvYmplY3QgPSB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+OjpDYXN0KGFyZyk7CiAgICAg
ICAgIEJsb2IqIGJsb2IgPSBWOEJsb2I6OnRvTmF0aXZlKG9iamVjdCk7CiAgICAgICAgIEFTU0VS
VChibG9iKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9W
OERhdGFWaWV3Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9W
OERhdGFWaWV3Q3VzdG9tLmNwcAppbmRleCAzNTQzYWQ3NjI5OGY0MjdhZDI1YTYwNDgwOTNjMTYx
ODI0N2NmYzJjLi40ZDA5MTkxZjAyY2I3MWJjNTg0MzM2Nzk0NTE0YmVkMDVlMDE0YjBmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhEYXRhVmlld0N1c3Rv
bS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4RGF0YVZpZXdD
dXN0b20uY3BwCkBAIC00Miw3ICs0Miw3IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOERhdGFW
aWV3Ojpjb25zdHJ1Y3RvckN1c3RvbShjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogICAgICAg
ICBWOERPTVdyYXBwZXI6OmFzc29jaWF0ZU9iamVjdFdpdGhXcmFwcGVyKGRhdGFWaWV3LnJlbGVh
c2UoKSwgJmluZm8sIHdyYXBwZXIsIGFyZ3MuR2V0SXNvbGF0ZSgpLCBXcmFwcGVyQ29uZmlndXJh
dGlvbjo6RGVwZW5kZW50KTsKICAgICAgICAgcmV0dXJuIHdyYXBwZXI7CiAgICAgfQotICAgIGlm
IChhcmdzWzBdLT5Jc051bGwoKSB8fCAhVjhBcnJheUJ1ZmZlcjo6SGFzSW5zdGFuY2UoYXJnc1sw
XSwgYXJncy5HZXRJc29sYXRlKCkpKQorICAgIGlmIChhcmdzWzBdLT5Jc051bGwoKSB8fCAhVjhB
cnJheUJ1ZmZlcjo6SGFzSW5zdGFuY2UoYXJnc1swXSwgYXJncy5HZXRJc29sYXRlKCksIHdvcmxk
VHlwZShhcmdzLkdldElzb2xhdGUoKSkpKQogICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3Io
MCwgYXJncy5HZXRJc29sYXRlKCkpOwogICAgIHJldHVybiBjb25zdHJ1Y3RXZWJHTEFycmF5V2l0
aEFycmF5QnVmZmVyQXJndW1lbnQ8RGF0YVZpZXcsIGNoYXI+KGFyZ3MsICZpbmZvLCB2ODo6a0V4
dGVybmFsQnl0ZUFycmF5LCBmYWxzZSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy92OC9jdXN0b20vVjhEb2N1bWVudEN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy92OC9jdXN0b20vVjhEb2N1bWVudEN1c3RvbS5jcHAKaW5kZXggNjA4ZTcwODRlZTA1
ZjFmNTYyOWM0OGUzZTZhZjVjNmY2NDAyNDQ4Ny4uY2M3MmQwODAzODM4MGIyY2UzNTlkODU1MDI0
MjFiMDg5ZjIwNjk2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3Vz
dG9tL1Y4RG9jdW1lbnRDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4
L2N1c3RvbS9WOERvY3VtZW50Q3VzdG9tLmNwcApAQCAtNzAsNyArNzAsNyBAQCB2ODo6SGFuZGxl
PHY4OjpWYWx1ZT4gVjhEb2N1bWVudDo6ZXZhbHVhdGVNZXRob2RDdXN0b20oY29uc3Qgdjg6OkFy
Z3VtZW50cyYgYXJncwogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwogICAgIFN0cmluZyBleHBy
ZXNzaW9uID0gdG9XZWJDb3JlU3RyaW5nKGFyZ3NbMF0pOwogICAgIFJlZlB0cjxOb2RlPiBjb250
ZXh0Tm9kZTsKLSAgICBpZiAoVjhOb2RlOjpIYXNJbnN0YW5jZShhcmdzWzFdLCBhcmdzLkdldElz
b2xhdGUoKSkpCisgICAgaWYgKFY4Tm9kZTo6SGFzSW5zdGFuY2UoYXJnc1sxXSwgYXJncy5HZXRJ
c29sYXRlKCksIHdvcmxkVHlwZShhcmdzLkdldElzb2xhdGUoKSkpKQogICAgICAgICBjb250ZXh0
Tm9kZSA9IFY4Tm9kZTo6dG9OYXRpdmUodjg6OkhhbmRsZTx2ODo6T2JqZWN0Pjo6Q2FzdChhcmdz
WzFdKSk7CiAKICAgICBSZWZQdHI8WFBhdGhOU1Jlc29sdmVyPiByZXNvbHZlciA9IHRvWFBhdGhO
U1Jlc29sdmVyKGFyZ3NbMl0sIGFyZ3MuR2V0SXNvbGF0ZSgpKTsKQEAgLTc5LDcgKzc5LDcgQEAg
djg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4RG9jdW1lbnQ6OmV2YWx1YXRlTWV0aG9kQ3VzdG9tKGNv
bnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MKIAogICAgIGludCB0eXBlID0gdG9JbnQzMihhcmdzWzNd
KTsKICAgICBSZWZQdHI8WFBhdGhSZXN1bHQ+IGluUmVzdWx0OwotICAgIGlmIChWOFhQYXRoUmVz
dWx0OjpIYXNJbnN0YW5jZShhcmdzWzRdLCBhcmdzLkdldElzb2xhdGUoKSkpCisgICAgaWYgKFY4
WFBhdGhSZXN1bHQ6Okhhc0luc3RhbmNlKGFyZ3NbNF0sIGFyZ3MuR2V0SXNvbGF0ZSgpLCB3b3Js
ZFR5cGUoYXJncy5HZXRJc29sYXRlKCkpKSkKICAgICAgICAgaW5SZXN1bHQgPSBWOFhQYXRoUmVz
dWx0Ojp0b05hdGl2ZSh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+OjpDYXN0KGFyZ3NbNF0pKTsKIAog
ICAgIFY4VFJZQ0FUQ0goUmVmUHRyPFhQYXRoUmVzdWx0PiwgcmVzdWx0LCBkb2N1bWVudC0+ZXZh
bHVhdGUoZXhwcmVzc2lvbiwgY29udGV4dE5vZGUuZ2V0KCksIHJlc29sdmVyLmdldCgpLCB0eXBl
LCBpblJlc3VsdC5nZXQoKSwgZWMpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3Y4L2N1c3RvbS9WOEhUTUxNZWRpYUVsZW1lbnRDdXN0b20uY3BwIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTE1lZGlhRWxlbWVudEN1c3RvbS5jcHAKaW5kZXgg
ZDkzYWUzOWEyZmU3N2RjZGM1MGY5NDBmZDkwZGNmODFlN2RkNDBmNC4uYWE5N2UwZTcwZmYzNDVm
M2I3NzRjNTBmYzY0MzQ0ZDRkNDk5ZmVkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTE1lZGlhRWxlbWVudEN1c3RvbS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTE1lZGlhRWxlbWVudEN1c3RvbS5jcHAK
QEAgLTM3LDcgKzM3LDcgQEAgdm9pZCBWOEhUTUxNZWRpYUVsZW1lbnQ6OmNvbnRyb2xsZXJBdHRy
U2V0dGVyQ3VzdG9tKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLAogewogICAgIEhUTUxNZWRp
YUVsZW1lbnQqIGltcCA9IFY4SFRNTE1lZGlhRWxlbWVudDo6dG9OYXRpdmUoaW5mby5Ib2xkZXIo
KSk7CiAgICAgTWVkaWFDb250cm9sbGVyKiBjb250cm9sbGVyID0gMDsKLSAgICBpZiAoVjhNZWRp
YUNvbnRyb2xsZXI6Okhhc0luc3RhbmNlKHZhbHVlLCBpbmZvLkdldElzb2xhdGUoKSkpCisgICAg
aWYgKFY4TWVkaWFDb250cm9sbGVyOjpIYXNJbnN0YW5jZSh2YWx1ZSwgaW5mby5HZXRJc29sYXRl
KCksIHdvcmxkVHlwZShpbmZvLkdldElzb2xhdGUoKSkpKQogICAgICAgICBjb250cm9sbGVyID0g
VjhNZWRpYUNvbnRyb2xsZXI6OnRvTmF0aXZlKHZhbHVlLT5Ub09iamVjdCgpKTsKICAgICAKICAg
ICBpZiAoIWNvbnRyb2xsZXIpIHsKQEAgLTU1LDQgKzU1LDMgQEAgdm9pZCBWOEhUTUxNZWRpYUVs
ZW1lbnQ6OmNvbnRyb2xsZXJBdHRyU2V0dGVyQ3VzdG9tKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBu
YW1lLAogfQogCiAjZW5kaWYKLQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
djgvY3VzdG9tL1Y4SFRNTE9wdGlvbnNDb2xsZWN0aW9uQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxPcHRpb25zQ29sbGVjdGlvbkN1c3RvbS5jcHAK
aW5kZXggNTZiNzA2NTdmNDQwM2FmZjk4NTA5MDBjMzE4MmZjNTVjZWRkN2E4Mi4uMzZlZGU1NWMz
ZmNjMWI0ZjZiYzQ0MGE4YmIxMDZjNzc3MWQ5ODdlZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTE9wdGlvbnNDb2xsZWN0aW9uQ3VzdG9tLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhIVE1MT3B0aW9uc0NvbGxl
Y3Rpb25DdXN0b20uY3BwCkBAIC05MSw3ICs5MSw3IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBW
OEhUTUxPcHRpb25zQ29sbGVjdGlvbjo6cmVtb3ZlTWV0aG9kQ3VzdG9tKGNvbnN0IHY4OjpBcmd1
CiAKIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOEhUTUxPcHRpb25zQ29sbGVjdGlvbjo6YWRkTWV0
aG9kQ3VzdG9tKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB7Ci0gICAgaWYgKCFWOEhUTUxP
cHRpb25FbGVtZW50OjpIYXNJbnN0YW5jZShhcmdzWzBdLCBhcmdzLkdldElzb2xhdGUoKSkpCisg
ICAgaWYgKCFWOEhUTUxPcHRpb25FbGVtZW50OjpIYXNJbnN0YW5jZShhcmdzWzBdLCBhcmdzLkdl
dElzb2xhdGUoKSwgd29ybGRUeXBlKGFyZ3MuR2V0SXNvbGF0ZSgpKSkpCiAgICAgICAgIHJldHVy
biBzZXRET01FeGNlcHRpb24oVFlQRV9NSVNNQVRDSF9FUlIsIGFyZ3MuR2V0SXNvbGF0ZSgpKTsK
ICAgICBIVE1MT3B0aW9uc0NvbGxlY3Rpb24qIGltcCA9IFY4SFRNTE9wdGlvbnNDb2xsZWN0aW9u
Ojp0b05hdGl2ZShhcmdzLkhvbGRlcigpKTsKICAgICBIVE1MT3B0aW9uRWxlbWVudCogb3B0aW9u
ID0gVjhIVE1MT3B0aW9uRWxlbWVudDo6dG9OYXRpdmUodjg6OkhhbmRsZTx2ODo6T2JqZWN0Pih2
ODo6SGFuZGxlPHY4OjpPYmplY3Q+OjpDYXN0KGFyZ3NbMF0pKSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhIVE1MU2VsZWN0RWxlbWVudEN1c3RvbS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhIVE1MU2VsZWN0RWxlbWVu
dEN1c3RvbS5jcHAKaW5kZXggMTBiMjNjNDZkZTA1NjZiZDQxOTM3YzNhZWVlODczZWExMzkyZjkz
YS4uMzY2Zjc4OGNmMjFlNTkyMzg2MDAxZjEzMmYyMjUwYjY3MGY4OGQyMiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTFNlbGVjdEVsZW1lbnRDdXN0
b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxTZWxl
Y3RFbGVtZW50Q3VzdG9tLmNwcApAQCAtNzAsNyArNzAsNyBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1
ZT4gVjhIVE1MU2VsZWN0RWxlbWVudDo6cmVtb3ZlTWV0aG9kQ3VzdG9tKGNvbnN0IHY4OjpBcmd1
bWVudAogCiB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gcmVtb3ZlRWxlbWVudChIVE1MU2VsZWN0RWxl
bWVudCogaW1wLCBjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKSAKIHsKLSAgICBpZiAoVjhIVE1M
T3B0aW9uRWxlbWVudDo6SGFzSW5zdGFuY2UoYXJnc1swXSwgYXJncy5HZXRJc29sYXRlKCkpKSB7
CisgICAgaWYgKFY4SFRNTE9wdGlvbkVsZW1lbnQ6Okhhc0luc3RhbmNlKGFyZ3NbMF0sIGFyZ3Mu
R2V0SXNvbGF0ZSgpLCB3b3JsZFR5cGUoYXJncy5HZXRJc29sYXRlKCkpKSkgewogICAgICAgICBI
VE1MT3B0aW9uRWxlbWVudCogZWxlbWVudCA9IFY4SFRNTE9wdGlvbkVsZW1lbnQ6OnRvTmF0aXZl
KHY4OjpIYW5kbGU8djg6Ok9iamVjdD46OkNhc3QoYXJnc1swXSkpOwogICAgICAgICBpbXAtPnJl
bW92ZShlbGVtZW50LT5pbmRleCgpKTsKICAgICAgICAgcmV0dXJuIHY4OjpVbmRlZmluZWQoKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEluamVjdGVk
U2NyaXB0SG9zdEN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20v
VjhJbmplY3RlZFNjcmlwdEhvc3RDdXN0b20uY3BwCmluZGV4IGU2MzY5OGYyNTk3OTE2YjM2MDdm
MGIwNGExZmRmZTNkYjNkYmMyZTUuLjk1NmQ1NmFlMzdiOWZiMGM1MjVjZTgzZTdkZGM0YjE2ZmE4
ZGY0NzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOElu
amVjdGVkU2NyaXB0SG9zdEN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
djgvY3VzdG9tL1Y4SW5qZWN0ZWRTY3JpcHRIb3N0Q3VzdG9tLmNwcApAQCAtMTEyLDcgKzExMiw3
IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOEluamVjdGVkU2NyaXB0SG9zdDo6aXNIVE1MQWxs
Q29sbGVjdGlvbk1ldGhvZEN1c3RvbShjb25zCiAgICAgICAgIHJldHVybiB2OEJvb2xlYW4oZmFs
c2UsIGFyZ3MuR2V0SXNvbGF0ZSgpKTsKIAogICAgIHY4OjpIYW5kbGVTY29wZSBoYW5kbGVTY29w
ZTsKLSAgICByZXR1cm4gdjg6OkJvb2xlYW46Ok5ldyhWOEhUTUxBbGxDb2xsZWN0aW9uOjpIYXNJ
bnN0YW5jZShhcmdzWzBdLCBhcmdzLkdldElzb2xhdGUoKSkpOworICAgIHJldHVybiB2ODo6Qm9v
bGVhbjo6TmV3KFY4SFRNTEFsbENvbGxlY3Rpb246Okhhc0luc3RhbmNlKGFyZ3NbMF0sIGFyZ3Mu
R2V0SXNvbGF0ZSgpLCB3b3JsZFR5cGUoYXJncy5HZXRJc29sYXRlKCkpKSk7CiB9CiAKIHY4OjpI
YW5kbGU8djg6OlZhbHVlPiBWOEluamVjdGVkU2NyaXB0SG9zdDo6dHlwZU1ldGhvZEN1c3RvbShj
b25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQpAQCAtMTMzLDE5ICsxMzMsMjAgQEAgdjg6OkhhbmRs
ZTx2ODo6VmFsdWU+IFY4SW5qZWN0ZWRTY3JpcHRIb3N0Ojp0eXBlTWV0aG9kQ3VzdG9tKGNvbnN0
IHY4OjpBcmd1bWVudHMKICAgICAgICAgcmV0dXJuIHY4OjpTdHJpbmc6Ok5ld1N5bWJvbCgiZGF0
ZSIpOwogICAgIGlmICh2YWx1ZS0+SXNSZWdFeHAoKSkKICAgICAgICAgcmV0dXJuIHY4OjpTdHJp
bmc6Ok5ld1N5bWJvbCgicmVnZXhwIik7Ci0gICAgaWYgKFY4Tm9kZTo6SGFzSW5zdGFuY2UodmFs
dWUsIGFyZ3MuR2V0SXNvbGF0ZSgpKSkKKyAgICBXcmFwcGVyV29ybGRUeXBlIGN1cnJlbnRXb3Js
ZFR5cGUgPSB3b3JsZFR5cGUoYXJncy5HZXRJc29sYXRlKCkpOworICAgIGlmIChWOE5vZGU6Okhh
c0luc3RhbmNlKHZhbHVlLCBhcmdzLkdldElzb2xhdGUoKSwgY3VycmVudFdvcmxkVHlwZSkpCiAg
ICAgICAgIHJldHVybiB2ODo6U3RyaW5nOjpOZXdTeW1ib2woIm5vZGUiKTsKLSAgICBpZiAoVjhO
b2RlTGlzdDo6SGFzSW5zdGFuY2UodmFsdWUsIGFyZ3MuR2V0SXNvbGF0ZSgpKSkKKyAgICBpZiAo
VjhOb2RlTGlzdDo6SGFzSW5zdGFuY2UodmFsdWUsIGFyZ3MuR2V0SXNvbGF0ZSgpLCBjdXJyZW50
V29ybGRUeXBlKSkKICAgICAgICAgcmV0dXJuIHY4OjpTdHJpbmc6Ok5ld1N5bWJvbCgiYXJyYXki
KTsKLSAgICBpZiAoVjhIVE1MQ29sbGVjdGlvbjo6SGFzSW5zdGFuY2UodmFsdWUsIGFyZ3MuR2V0
SXNvbGF0ZSgpKSkKKyAgICBpZiAoVjhIVE1MQ29sbGVjdGlvbjo6SGFzSW5zdGFuY2UodmFsdWUs
IGFyZ3MuR2V0SXNvbGF0ZSgpLCBjdXJyZW50V29ybGRUeXBlKSkKICAgICAgICAgcmV0dXJuIHY4
OjpTdHJpbmc6Ok5ld1N5bWJvbCgiYXJyYXkiKTsKLSAgICBpZiAoVjhJbnQ4QXJyYXk6Okhhc0lu
c3RhbmNlKHZhbHVlLCBhcmdzLkdldElzb2xhdGUoKSkgfHwgVjhJbnQxNkFycmF5OjpIYXNJbnN0
YW5jZSh2YWx1ZSwgYXJncy5HZXRJc29sYXRlKCkpIHx8IFY4SW50MzJBcnJheTo6SGFzSW5zdGFu
Y2UodmFsdWUsIGFyZ3MuR2V0SXNvbGF0ZSgpKSkKKyAgICBpZiAoVjhJbnQ4QXJyYXk6Okhhc0lu
c3RhbmNlKHZhbHVlLCBhcmdzLkdldElzb2xhdGUoKSwgY3VycmVudFdvcmxkVHlwZSkgfHwgVjhJ
bnQxNkFycmF5OjpIYXNJbnN0YW5jZSh2YWx1ZSwgYXJncy5HZXRJc29sYXRlKCksIGN1cnJlbnRX
b3JsZFR5cGUpIHx8IFY4SW50MzJBcnJheTo6SGFzSW5zdGFuY2UodmFsdWUsIGFyZ3MuR2V0SXNv
bGF0ZSgpLCBjdXJyZW50V29ybGRUeXBlKSkKICAgICAgICAgcmV0dXJuIHY4OjpTdHJpbmc6Ok5l
d1N5bWJvbCgiYXJyYXkiKTsKLSAgICBpZiAoVjhVaW50OEFycmF5OjpIYXNJbnN0YW5jZSh2YWx1
ZSwgYXJncy5HZXRJc29sYXRlKCkpIHx8IFY4VWludDE2QXJyYXk6Okhhc0luc3RhbmNlKHZhbHVl
LCBhcmdzLkdldElzb2xhdGUoKSkgfHwgVjhVaW50MzJBcnJheTo6SGFzSW5zdGFuY2UodmFsdWUs
IGFyZ3MuR2V0SXNvbGF0ZSgpKSkKKyAgICBpZiAoVjhVaW50OEFycmF5OjpIYXNJbnN0YW5jZSh2
YWx1ZSwgYXJncy5HZXRJc29sYXRlKCksIGN1cnJlbnRXb3JsZFR5cGUpIHx8IFY4VWludDE2QXJy
YXk6Okhhc0luc3RhbmNlKHZhbHVlLCBhcmdzLkdldElzb2xhdGUoKSwgY3VycmVudFdvcmxkVHlw
ZSkgfHwgVjhVaW50MzJBcnJheTo6SGFzSW5zdGFuY2UodmFsdWUsIGFyZ3MuR2V0SXNvbGF0ZSgp
LCBjdXJyZW50V29ybGRUeXBlKSkKICAgICAgICAgcmV0dXJuIHY4OjpTdHJpbmc6Ok5ld1N5bWJv
bCgiYXJyYXkiKTsKLSAgICBpZiAoVjhGbG9hdDMyQXJyYXk6Okhhc0luc3RhbmNlKHZhbHVlLCBh
cmdzLkdldElzb2xhdGUoKSkgfHwgVjhGbG9hdDY0QXJyYXk6Okhhc0luc3RhbmNlKHZhbHVlLCBh
cmdzLkdldElzb2xhdGUoKSkpCisgICAgaWYgKFY4RmxvYXQzMkFycmF5OjpIYXNJbnN0YW5jZSh2
YWx1ZSwgYXJncy5HZXRJc29sYXRlKCksIGN1cnJlbnRXb3JsZFR5cGUpIHx8IFY4RmxvYXQ2NEFy
cmF5OjpIYXNJbnN0YW5jZSh2YWx1ZSwgYXJncy5HZXRJc29sYXRlKCksIGN1cnJlbnRXb3JsZFR5
cGUpKQogICAgICAgICByZXR1cm4gdjg6OlN0cmluZzo6TmV3U3ltYm9sKCJhcnJheSIpOwotICAg
IGlmIChWOFVpbnQ4Q2xhbXBlZEFycmF5OjpIYXNJbnN0YW5jZSh2YWx1ZSwgYXJncy5HZXRJc29s
YXRlKCkpKQorICAgIGlmIChWOFVpbnQ4Q2xhbXBlZEFycmF5OjpIYXNJbnN0YW5jZSh2YWx1ZSwg
YXJncy5HZXRJc29sYXRlKCksIGN1cnJlbnRXb3JsZFR5cGUpKQogICAgICAgICByZXR1cm4gdjg6
OlN0cmluZzo6TmV3U3ltYm9sKCJhcnJheSIpOwogICAgIHJldHVybiB2ODo6VW5kZWZpbmVkKCk7
CiB9CkBAIC0yNDMsNyArMjQ0LDcgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4SW5qZWN0ZWRT
Y3JpcHRIb3N0OjpnZXRFdmVudExpc3RlbmVyc01ldGhvZEN1c3RvbShjb25zdAogICAgIHY4OjpI
YW5kbGVTY29wZSBoYW5kbGVTY29wZTsKIAogICAgIHY4OjpMb2NhbDx2ODo6VmFsdWU+IHZhbHVl
ID0gYXJnc1swXTsKLSAgICBpZiAoIVY4Tm9kZTo6SGFzSW5zdGFuY2UodmFsdWUsIGFyZ3MuR2V0
SXNvbGF0ZSgpKSkKKyAgICBpZiAoIVY4Tm9kZTo6SGFzSW5zdGFuY2UodmFsdWUsIGFyZ3MuR2V0
SXNvbGF0ZSgpLCB3b3JsZFR5cGUoYXJncy5HZXRJc29sYXRlKCkpKSkKICAgICAgICAgcmV0dXJu
IHY4OjpVbmRlZmluZWQoKTsKICAgICBOb2RlKiBub2RlID0gVjhOb2RlOjp0b05hdGl2ZSh2YWx1
ZS0+VG9PYmplY3QoKSk7CiAgICAgaWYgKCFub2RlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4Tm9kZUN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy92OC9jdXN0b20vVjhOb2RlQ3VzdG9tLmNwcAppbmRleCA3YzJmZjlkZWVjMWNlODI1
MWU5YWIzMGY4OGI3ODUwYjRjOTMwNzQ4Li5kYTliNDVhMWMxMDY4ZTBmYThkNjliNzg0YWJkODcw
NDgzMTdlZGVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20v
VjhOb2RlQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20v
VjhOb2RlQ3VzdG9tLmNwcApAQCAtNjYsOCArNjYsOCBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4g
VjhOb2RlOjppbnNlcnRCZWZvcmVNZXRob2RDdXN0b20oY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJn
cwogICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gaG9sZGVyID0gYXJncy5Ib2xkZXIoKTsKICAg
ICBOb2RlKiBpbXAgPSBWOE5vZGU6OnRvTmF0aXZlKGhvbGRlcik7CiAgICAgRXhjZXB0aW9uQ29k
ZSBlYyA9IDA7Ci0gICAgTm9kZSogbmV3Q2hpbGQgPSBWOE5vZGU6Okhhc0luc3RhbmNlKGFyZ3Nb
MF0sIGFyZ3MuR2V0SXNvbGF0ZSgpKSA/IFY4Tm9kZTo6dG9OYXRpdmUodjg6OkhhbmRsZTx2ODo6
T2JqZWN0Pjo6Q2FzdChhcmdzWzBdKSkgOiAwOwotICAgIE5vZGUqIHJlZkNoaWxkID0gVjhOb2Rl
OjpIYXNJbnN0YW5jZShhcmdzWzFdLCBhcmdzLkdldElzb2xhdGUoKSkgPyBWOE5vZGU6OnRvTmF0
aXZlKHY4OjpIYW5kbGU8djg6Ok9iamVjdD46OkNhc3QoYXJnc1sxXSkpIDogMDsKKyAgICBOb2Rl
KiBuZXdDaGlsZCA9IFY4Tm9kZTo6SGFzSW5zdGFuY2UoYXJnc1swXSwgYXJncy5HZXRJc29sYXRl
KCksIHdvcmxkVHlwZShhcmdzLkdldElzb2xhdGUoKSkpID8gVjhOb2RlOjp0b05hdGl2ZSh2ODo6
SGFuZGxlPHY4OjpPYmplY3Q+OjpDYXN0KGFyZ3NbMF0pKSA6IDA7CisgICAgTm9kZSogcmVmQ2hp
bGQgPSBWOE5vZGU6Okhhc0luc3RhbmNlKGFyZ3NbMV0sIGFyZ3MuR2V0SXNvbGF0ZSgpLCB3b3Js
ZFR5cGUoYXJncy5HZXRJc29sYXRlKCkpKSA/IFY4Tm9kZTo6dG9OYXRpdmUodjg6OkhhbmRsZTx2
ODo6T2JqZWN0Pjo6Q2FzdChhcmdzWzFdKSkgOiAwOwogICAgIGJvb2wgc3VjY2VzcyA9IGltcC0+
aW5zZXJ0QmVmb3JlKG5ld0NoaWxkLCByZWZDaGlsZCwgZWMsIEF0dGFjaExhemlseSk7CiAgICAg
aWYgKGVjKQogICAgICAgICByZXR1cm4gc2V0RE9NRXhjZXB0aW9uKGVjLCBhcmdzLkdldElzb2xh
dGUoKSk7CkBAIC04Miw4ICs4Miw4IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOE5vZGU6OnJl
cGxhY2VDaGlsZE1ldGhvZEN1c3RvbShjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzCiAgICAgdjg6
OkhhbmRsZTx2ODo6T2JqZWN0PiBob2xkZXIgPSBhcmdzLkhvbGRlcigpOwogICAgIE5vZGUqIGlt
cCA9IFY4Tm9kZTo6dG9OYXRpdmUoaG9sZGVyKTsKICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsK
LSAgICBOb2RlKiBuZXdDaGlsZCA9IFY4Tm9kZTo6SGFzSW5zdGFuY2UoYXJnc1swXSwgYXJncy5H
ZXRJc29sYXRlKCkpID8gVjhOb2RlOjp0b05hdGl2ZSh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+OjpD
YXN0KGFyZ3NbMF0pKSA6IDA7Ci0gICAgTm9kZSogb2xkQ2hpbGQgPSBWOE5vZGU6Okhhc0luc3Rh
bmNlKGFyZ3NbMV0sIGFyZ3MuR2V0SXNvbGF0ZSgpKSA/IFY4Tm9kZTo6dG9OYXRpdmUodjg6Okhh
bmRsZTx2ODo6T2JqZWN0Pjo6Q2FzdChhcmdzWzFdKSkgOiAwOworICAgIE5vZGUqIG5ld0NoaWxk
ID0gVjhOb2RlOjpIYXNJbnN0YW5jZShhcmdzWzBdLCBhcmdzLkdldElzb2xhdGUoKSwgd29ybGRU
eXBlKGFyZ3MuR2V0SXNvbGF0ZSgpKSkgPyBWOE5vZGU6OnRvTmF0aXZlKHY4OjpIYW5kbGU8djg6
Ok9iamVjdD46OkNhc3QoYXJnc1swXSkpIDogMDsKKyAgICBOb2RlKiBvbGRDaGlsZCA9IFY4Tm9k
ZTo6SGFzSW5zdGFuY2UoYXJnc1sxXSwgYXJncy5HZXRJc29sYXRlKCksIHdvcmxkVHlwZShhcmdz
LkdldElzb2xhdGUoKSkpID8gVjhOb2RlOjp0b05hdGl2ZSh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+
OjpDYXN0KGFyZ3NbMV0pKSA6IDA7CiAgICAgYm9vbCBzdWNjZXNzID0gaW1wLT5yZXBsYWNlQ2hp
bGQobmV3Q2hpbGQsIG9sZENoaWxkLCBlYywgQXR0YWNoTGF6aWx5KTsKICAgICBpZiAoZWMpCiAg
ICAgICAgIHJldHVybiBzZXRET01FeGNlcHRpb24oZWMsIGFyZ3MuR2V0SXNvbGF0ZSgpKTsKQEAg
LTk3LDcgKzk3LDcgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4Tm9kZTo6cmVtb3ZlQ2hpbGRN
ZXRob2RDdXN0b20oY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKICAgICB2ODo6SGFuZGxlPHY4
OjpPYmplY3Q+IGhvbGRlciA9IGFyZ3MuSG9sZGVyKCk7CiAgICAgTm9kZSogaW1wID0gVjhOb2Rl
Ojp0b05hdGl2ZShob2xkZXIpOwogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIE5vZGUq
IG9sZENoaWxkID0gVjhOb2RlOjpIYXNJbnN0YW5jZShhcmdzWzBdLCBhcmdzLkdldElzb2xhdGUo
KSkgPyBWOE5vZGU6OnRvTmF0aXZlKHY4OjpIYW5kbGU8djg6Ok9iamVjdD46OkNhc3QoYXJnc1sw
XSkpIDogMDsKKyAgICBOb2RlKiBvbGRDaGlsZCA9IFY4Tm9kZTo6SGFzSW5zdGFuY2UoYXJnc1sw
XSwgYXJncy5HZXRJc29sYXRlKCksIHdvcmxkVHlwZShhcmdzLkdldElzb2xhdGUoKSkpID8gVjhO
b2RlOjp0b05hdGl2ZSh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+OjpDYXN0KGFyZ3NbMF0pKSA6IDA7
CiAgICAgYm9vbCBzdWNjZXNzID0gaW1wLT5yZW1vdmVDaGlsZChvbGRDaGlsZCwgZWMpOwogICAg
IGlmIChlYykKICAgICAgICAgcmV0dXJuIHNldERPTUV4Y2VwdGlvbihlYywgYXJncy5HZXRJc29s
YXRlKCkpOwpAQCAtMTEyLDcgKzExMiw3IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOE5vZGU6
OmFwcGVuZENoaWxkTWV0aG9kQ3VzdG9tKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiAgICAg
djg6OkhhbmRsZTx2ODo6T2JqZWN0PiBob2xkZXIgPSBhcmdzLkhvbGRlcigpOwogICAgIE5vZGUq
IGltcCA9IFY4Tm9kZTo6dG9OYXRpdmUoaG9sZGVyKTsKICAgICBFeGNlcHRpb25Db2RlIGVjID0g
MDsKLSAgICBOb2RlKiBuZXdDaGlsZCA9IFY4Tm9kZTo6SGFzSW5zdGFuY2UoYXJnc1swXSwgYXJn
cy5HZXRJc29sYXRlKCkpID8gVjhOb2RlOjp0b05hdGl2ZSh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+
OjpDYXN0KGFyZ3NbMF0pKSA6IDA7CisgICAgTm9kZSogbmV3Q2hpbGQgPSBWOE5vZGU6Okhhc0lu
c3RhbmNlKGFyZ3NbMF0sIGFyZ3MuR2V0SXNvbGF0ZSgpLCB3b3JsZFR5cGUoYXJncy5HZXRJc29s
YXRlKCkpKSA/IFY4Tm9kZTo6dG9OYXRpdmUodjg6OkhhbmRsZTx2ODo6T2JqZWN0Pjo6Q2FzdChh
cmdzWzBdKSkgOiAwOwogICAgIGJvb2wgc3VjY2VzcyA9IGltcC0+YXBwZW5kQ2hpbGQobmV3Q2hp
bGQsIGVjLCBBdHRhY2hMYXppbHkpOwogICAgIGlmIChlYykKICAgICAgICAgcmV0dXJuIHNldERP
TUV4Y2VwdGlvbihlYywgYXJncy5HZXRJc29sYXRlKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4V2ViR0xSZW5kZXJpbmdDb250ZXh0Q3VzdG9tLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFdlYkdMUmVuZGVyaW5nQ29u
dGV4dEN1c3RvbS5jcHAKaW5kZXggZGI0OTkzOTA0MDNkNWU1Nzc3YWU1NWNhNWJiMWY0NjQ2OTMy
YWY4Zi4uMTI0NzljMGRiNDgyMGU0YThmNTFiZTYwYjJmNTA0YWNjNmI2ZDkwNSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4V2ViR0xSZW5kZXJpbmdDb250
ZXh0Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhX
ZWJHTFJlbmRlcmluZ0NvbnRleHRDdXN0b20uY3BwCkBAIC0yNzQsNyArMjc0LDcgQEAgc3RhdGlj
IFdlYkdMVW5pZm9ybUxvY2F0aW9uKiB0b1dlYkdMVW5pZm9ybUxvY2F0aW9uKHY4OjpIYW5kbGU8
djg6OlZhbHVlPiB2YWx1ZSwKIHsKICAgICBvayA9IGZhbHNlOwogICAgIFdlYkdMVW5pZm9ybUxv
Y2F0aW9uKiBsb2NhdGlvbiA9IDA7Ci0gICAgaWYgKFY4V2ViR0xVbmlmb3JtTG9jYXRpb246Okhh
c0luc3RhbmNlKHZhbHVlLCBpc29sYXRlKSkgeworICAgIGlmIChWOFdlYkdMVW5pZm9ybUxvY2F0
aW9uOjpIYXNJbnN0YW5jZSh2YWx1ZSwgaXNvbGF0ZSwgd29ybGRUeXBlKGlzb2xhdGUpKSkgewog
ICAgICAgICBsb2NhdGlvbiA9IFY4V2ViR0xVbmlmb3JtTG9jYXRpb246OnRvTmF0aXZlKHZhbHVl
LT5Ub09iamVjdCgpKTsKICAgICAgICAgb2sgPSB0cnVlOwogICAgIH0KQEAgLTI5Miw5ICsyOTIs
OSBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldEF0
dGFjaGVkU2hhZGVyc01ldGhvZEN1c3RvbShjbwogCiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7
CiAgICAgV2ViR0xSZW5kZXJpbmdDb250ZXh0KiBjb250ZXh0ID0gVjhXZWJHTFJlbmRlcmluZ0Nv
bnRleHQ6OnRvTmF0aXZlKGFyZ3MuSG9sZGVyKCkpOwotICAgIGlmIChhcmdzLkxlbmd0aCgpID4g
MCAmJiAhaXNVbmRlZmluZWRPck51bGwoYXJnc1swXSkgJiYgIVY4V2ViR0xQcm9ncmFtOjpIYXNJ
bnN0YW5jZShhcmdzWzBdLCBhcmdzLkdldElzb2xhdGUoKSkpCisgICAgaWYgKGFyZ3MuTGVuZ3Ro
KCkgPiAwICYmICFpc1VuZGVmaW5lZE9yTnVsbChhcmdzWzBdKSAmJiAhVjhXZWJHTFByb2dyYW06
Okhhc0luc3RhbmNlKGFyZ3NbMF0sIGFyZ3MuR2V0SXNvbGF0ZSgpLCB3b3JsZFR5cGUoYXJncy5H
ZXRJc29sYXRlKCkpKSkKICAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKDAsIGFyZ3MuR2V0
SXNvbGF0ZSgpKTsKLSAgICBXZWJHTFByb2dyYW0qIHByb2dyYW0gPSBWOFdlYkdMUHJvZ3JhbTo6
SGFzSW5zdGFuY2UoYXJnc1swXSwgYXJncy5HZXRJc29sYXRlKCkpID8gVjhXZWJHTFByb2dyYW06
OnRvTmF0aXZlKHY4OjpIYW5kbGU8djg6Ok9iamVjdD46OkNhc3QoYXJnc1swXSkpIDogMDsKKyAg
ICBXZWJHTFByb2dyYW0qIHByb2dyYW0gPSBWOFdlYkdMUHJvZ3JhbTo6SGFzSW5zdGFuY2UoYXJn
c1swXSwgYXJncy5HZXRJc29sYXRlKCksIHdvcmxkVHlwZShhcmdzLkdldElzb2xhdGUoKSkpID8g
VjhXZWJHTFByb2dyYW06OnRvTmF0aXZlKHY4OjpIYW5kbGU8djg6Ok9iamVjdD46OkNhc3QoYXJn
c1swXSkpIDogMDsKICAgICBWZWN0b3I8UmVmUHRyPFdlYkdMU2hhZGVyPiA+IHNoYWRlcnM7CiAg
ICAgYm9vbCBzdWNjZWVkID0gY29udGV4dC0+Z2V0QXR0YWNoZWRTaGFkZXJzKHByb2dyYW0sIHNo
YWRlcnMsIGVjKTsKICAgICBpZiAoZWMpIHsKQEAgLTM2MSw5ICszNjEsOSBAQCB2ODo6SGFuZGxl
PHY4OjpWYWx1ZT4gVjhXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldFByb2dyYW1QYXJhbWV0ZXJN
ZXRob2RDdXN0b20oYwogCiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CiAgICAgV2ViR0xSZW5k
ZXJpbmdDb250ZXh0KiBjb250ZXh0ID0gVjhXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnRvTmF0aXZl
KGFyZ3MuSG9sZGVyKCkpOwotICAgIGlmIChhcmdzLkxlbmd0aCgpID4gMCAmJiAhaXNVbmRlZmlu
ZWRPck51bGwoYXJnc1swXSkgJiYgIVY4V2ViR0xQcm9ncmFtOjpIYXNJbnN0YW5jZShhcmdzWzBd
LCBhcmdzLkdldElzb2xhdGUoKSkpCisgICAgaWYgKGFyZ3MuTGVuZ3RoKCkgPiAwICYmICFpc1Vu
ZGVmaW5lZE9yTnVsbChhcmdzWzBdKSAmJiAhVjhXZWJHTFByb2dyYW06Okhhc0luc3RhbmNlKGFy
Z3NbMF0sIGFyZ3MuR2V0SXNvbGF0ZSgpLCB3b3JsZFR5cGUoYXJncy5HZXRJc29sYXRlKCkpKSkK
ICAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKDAsIGFyZ3MuR2V0SXNvbGF0ZSgpKTsKLSAg
ICBXZWJHTFByb2dyYW0qIHByb2dyYW0gPSBWOFdlYkdMUHJvZ3JhbTo6SGFzSW5zdGFuY2UoYXJn
c1swXSwgYXJncy5HZXRJc29sYXRlKCkpID8gVjhXZWJHTFByb2dyYW06OnRvTmF0aXZlKHY4OjpI
YW5kbGU8djg6Ok9iamVjdD46OkNhc3QoYXJnc1swXSkpIDogMDsKKyAgICBXZWJHTFByb2dyYW0q
IHByb2dyYW0gPSBWOFdlYkdMUHJvZ3JhbTo6SGFzSW5zdGFuY2UoYXJnc1swXSwgYXJncy5HZXRJ
c29sYXRlKCksIHdvcmxkVHlwZShhcmdzLkdldElzb2xhdGUoKSkpID8gVjhXZWJHTFByb2dyYW06
OnRvTmF0aXZlKHY4OjpIYW5kbGU8djg6Ok9iamVjdD46OkNhc3QoYXJnc1swXSkpIDogMDsKICAg
ICB1bnNpZ25lZCBwbmFtZSA9IHRvSW50MzIoYXJnc1sxXSk7CiAgICAgV2ViR0xHZXRJbmZvIGlu
Zm8gPSBjb250ZXh0LT5nZXRQcm9ncmFtUGFyYW1ldGVyKHByb2dyYW0sIHBuYW1lLCBlYyk7CiAg
ICAgaWYgKGVjKQpAQCAtMzgzLDkgKzM4Myw5IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOFdl
YkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0U2hhZGVyUGFyYW1ldGVyTWV0aG9kQ3VzdG9tKGNvCiAK
ICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKICAgICBXZWJHTFJlbmRlcmluZ0NvbnRleHQqIGNv
bnRleHQgPSBWOFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6dG9OYXRpdmUoYXJncy5Ib2xkZXIoKSk7
Ci0gICAgaWYgKGFyZ3MuTGVuZ3RoKCkgPiAwICYmICFpc1VuZGVmaW5lZE9yTnVsbChhcmdzWzBd
KSAmJiAhVjhXZWJHTFNoYWRlcjo6SGFzSW5zdGFuY2UoYXJnc1swXSwgYXJncy5HZXRJc29sYXRl
KCkpKQorICAgIGlmIChhcmdzLkxlbmd0aCgpID4gMCAmJiAhaXNVbmRlZmluZWRPck51bGwoYXJn
c1swXSkgJiYgIVY4V2ViR0xTaGFkZXI6Okhhc0luc3RhbmNlKGFyZ3NbMF0sIGFyZ3MuR2V0SXNv
bGF0ZSgpLCB3b3JsZFR5cGUoYXJncy5HZXRJc29sYXRlKCkpKSkKICAgICAgICAgcmV0dXJuIHRo
cm93VHlwZUVycm9yKDAsIGFyZ3MuR2V0SXNvbGF0ZSgpKTsKLSAgICBXZWJHTFNoYWRlciogc2hh
ZGVyID0gVjhXZWJHTFNoYWRlcjo6SGFzSW5zdGFuY2UoYXJnc1swXSwgYXJncy5HZXRJc29sYXRl
KCkpID8gVjhXZWJHTFNoYWRlcjo6dG9OYXRpdmUodjg6OkhhbmRsZTx2ODo6T2JqZWN0Pjo6Q2Fz
dChhcmdzWzBdKSkgOiAwOworICAgIFdlYkdMU2hhZGVyKiBzaGFkZXIgPSBWOFdlYkdMU2hhZGVy
OjpIYXNJbnN0YW5jZShhcmdzWzBdLCBhcmdzLkdldElzb2xhdGUoKSwgd29ybGRUeXBlKGFyZ3Mu
R2V0SXNvbGF0ZSgpKSkgPyBWOFdlYkdMU2hhZGVyOjp0b05hdGl2ZSh2ODo6SGFuZGxlPHY4OjpP
YmplY3Q+OjpDYXN0KGFyZ3NbMF0pKSA6IDA7CiAgICAgdW5zaWduZWQgcG5hbWUgPSB0b0ludDMy
KGFyZ3NbMV0pOwogICAgIFdlYkdMR2V0SW5mbyBpbmZvID0gY29udGV4dC0+Z2V0U2hhZGVyUGFy
YW1ldGVyKHNoYWRlciwgcG5hbWUsIGVjKTsKICAgICBpZiAoZWMpCkBAIC00MTgsMTEgKzQxOCwx
MSBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldFVu
aWZvcm1NZXRob2RDdXN0b20oY29uc3Qgdjg6OgogCiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7
CiAgICAgV2ViR0xSZW5kZXJpbmdDb250ZXh0KiBjb250ZXh0ID0gVjhXZWJHTFJlbmRlcmluZ0Nv
bnRleHQ6OnRvTmF0aXZlKGFyZ3MuSG9sZGVyKCkpOwotICAgIGlmIChhcmdzLkxlbmd0aCgpID4g
MCAmJiAhaXNVbmRlZmluZWRPck51bGwoYXJnc1swXSkgJiYgIVY4V2ViR0xQcm9ncmFtOjpIYXNJ
bnN0YW5jZShhcmdzWzBdLCBhcmdzLkdldElzb2xhdGUoKSkpCisgICAgaWYgKGFyZ3MuTGVuZ3Ro
KCkgPiAwICYmICFpc1VuZGVmaW5lZE9yTnVsbChhcmdzWzBdKSAmJiAhVjhXZWJHTFByb2dyYW06
Okhhc0luc3RhbmNlKGFyZ3NbMF0sIGFyZ3MuR2V0SXNvbGF0ZSgpLCB3b3JsZFR5cGUoYXJncy5H
ZXRJc29sYXRlKCkpKSkKICAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKDAsIGFyZ3MuR2V0
SXNvbGF0ZSgpKTsKLSAgICBXZWJHTFByb2dyYW0qIHByb2dyYW0gPSBWOFdlYkdMUHJvZ3JhbTo6
SGFzSW5zdGFuY2UoYXJnc1swXSwgYXJncy5HZXRJc29sYXRlKCkpID8gVjhXZWJHTFByb2dyYW06
OnRvTmF0aXZlKHY4OjpIYW5kbGU8djg6Ok9iamVjdD46OkNhc3QoYXJnc1swXSkpIDogMDsKKyAg
ICBXZWJHTFByb2dyYW0qIHByb2dyYW0gPSBWOFdlYkdMUHJvZ3JhbTo6SGFzSW5zdGFuY2UoYXJn
c1swXSwgYXJncy5HZXRJc29sYXRlKCksIHdvcmxkVHlwZShhcmdzLkdldElzb2xhdGUoKSkpID8g
VjhXZWJHTFByb2dyYW06OnRvTmF0aXZlKHY4OjpIYW5kbGU8djg6Ok9iamVjdD46OkNhc3QoYXJn
c1swXSkpIDogMDsKIAotICAgIGlmIChhcmdzLkxlbmd0aCgpID4gMSAmJiAhaXNVbmRlZmluZWRP
ck51bGwoYXJnc1sxXSkgJiYgIVY4V2ViR0xVbmlmb3JtTG9jYXRpb246Okhhc0luc3RhbmNlKGFy
Z3NbMV0sIGFyZ3MuR2V0SXNvbGF0ZSgpKSkKKyAgICBpZiAoYXJncy5MZW5ndGgoKSA+IDEgJiYg
IWlzVW5kZWZpbmVkT3JOdWxsKGFyZ3NbMV0pICYmICFWOFdlYkdMVW5pZm9ybUxvY2F0aW9uOjpI
YXNJbnN0YW5jZShhcmdzWzFdLCBhcmdzLkdldElzb2xhdGUoKSwgd29ybGRUeXBlKGFyZ3MuR2V0
SXNvbGF0ZSgpKSkpCiAgICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcigwLCBhcmdzLkdldElz
b2xhdGUoKSk7CiAgICAgYm9vbCBvayA9IGZhbHNlOwogICAgIFdlYkdMVW5pZm9ybUxvY2F0aW9u
KiBsb2NhdGlvbiA9IHRvV2ViR0xVbmlmb3JtTG9jYXRpb24oYXJnc1sxXSwgb2ssIGFyZ3MuR2V0
SXNvbGF0ZSgpKTsKQEAgLTQ4NywxNCArNDg3LDE0IEBAIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpW
YWx1ZT4gdmVydGV4QXR0cmliQW5kVW5pZm9ybUhlbHBlcmYoY29uc3Qgdjg6OkFyZ3VtZW50cyYK
ICAgICBpZiAoaXNGdW5jdGlvblRvQ2FsbEZvckF0dHJpYnV0ZShmdW5jdGlvblRvQ2FsbCkpCiAg
ICAgICAgIGluZGV4ID0gdG9JbnQzMihhcmdzWzBdKTsKICAgICBlbHNlIHsKLSAgICAgICAgaWYg
KGFyZ3MuTGVuZ3RoKCkgPiAwICYmICFpc1VuZGVmaW5lZE9yTnVsbChhcmdzWzBdKSAmJiAhVjhX
ZWJHTFVuaWZvcm1Mb2NhdGlvbjo6SGFzSW5zdGFuY2UoYXJnc1swXSwgYXJncy5HZXRJc29sYXRl
KCkpKQorICAgICAgICBpZiAoYXJncy5MZW5ndGgoKSA+IDAgJiYgIWlzVW5kZWZpbmVkT3JOdWxs
KGFyZ3NbMF0pICYmICFWOFdlYkdMVW5pZm9ybUxvY2F0aW9uOjpIYXNJbnN0YW5jZShhcmdzWzBd
LCBhcmdzLkdldElzb2xhdGUoKSwgd29ybGRUeXBlKGFyZ3MuR2V0SXNvbGF0ZSgpKSkpCiAgICAg
ICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoMCwgYXJncy5HZXRJc29sYXRlKCkpOwogICAg
ICAgICBsb2NhdGlvbiA9IHRvV2ViR0xVbmlmb3JtTG9jYXRpb24oYXJnc1swXSwgb2ssIGFyZ3Mu
R2V0SXNvbGF0ZSgpKTsKICAgICB9CiAKICAgICBXZWJHTFJlbmRlcmluZ0NvbnRleHQqIGNvbnRl
eHQgPSBWOFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6dG9OYXRpdmUoYXJncy5Ib2xkZXIoKSk7CiAK
LSAgICBpZiAoVjhGbG9hdDMyQXJyYXk6Okhhc0luc3RhbmNlKGFyZ3NbMV0sIGFyZ3MuR2V0SXNv
bGF0ZSgpKSkgeworICAgIGlmIChWOEZsb2F0MzJBcnJheTo6SGFzSW5zdGFuY2UoYXJnc1sxXSwg
YXJncy5HZXRJc29sYXRlKCksIHdvcmxkVHlwZShhcmdzLkdldElzb2xhdGUoKSkpKSB7CiAgICAg
ICAgIEZsb2F0MzJBcnJheSogYXJyYXkgPSBWOEZsb2F0MzJBcnJheTo6dG9OYXRpdmUoYXJnc1sx
XS0+VG9PYmplY3QoKSk7CiAgICAgICAgIEFTU0VSVChhcnJheSAhPSBOVUxMKTsKICAgICAgICAg
RXhjZXB0aW9uQ29kZSBlYyA9IDA7CkBAIC01NTgsMTIgKzU1OCwxMiBAQCBzdGF0aWMgdjg6Okhh
bmRsZTx2ODo6VmFsdWU+IHVuaWZvcm1IZWxwZXJpKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3Ms
CiAgICAgICAgIHJldHVybiB0aHJvd05vdEVub3VnaEFyZ3VtZW50c0Vycm9yKGFyZ3MuR2V0SXNv
bGF0ZSgpKTsKIAogICAgIFdlYkdMUmVuZGVyaW5nQ29udGV4dCogY29udGV4dCA9IFY4V2ViR0xS
ZW5kZXJpbmdDb250ZXh0Ojp0b05hdGl2ZShhcmdzLkhvbGRlcigpKTsKLSAgICBpZiAoYXJncy5M
ZW5ndGgoKSA+IDAgJiYgIWlzVW5kZWZpbmVkT3JOdWxsKGFyZ3NbMF0pICYmICFWOFdlYkdMVW5p
Zm9ybUxvY2F0aW9uOjpIYXNJbnN0YW5jZShhcmdzWzBdLCBhcmdzLkdldElzb2xhdGUoKSkpCisg
ICAgaWYgKGFyZ3MuTGVuZ3RoKCkgPiAwICYmICFpc1VuZGVmaW5lZE9yTnVsbChhcmdzWzBdKSAm
JiAhVjhXZWJHTFVuaWZvcm1Mb2NhdGlvbjo6SGFzSW5zdGFuY2UoYXJnc1swXSwgYXJncy5HZXRJ
c29sYXRlKCksIHdvcmxkVHlwZShhcmdzLkdldElzb2xhdGUoKSkpKQogICAgICAgICByZXR1cm4g
dGhyb3dUeXBlRXJyb3IoMCwgYXJncy5HZXRJc29sYXRlKCkpOwogICAgIGJvb2wgb2sgPSBmYWxz
ZTsKICAgICBXZWJHTFVuaWZvcm1Mb2NhdGlvbiogbG9jYXRpb24gPSB0b1dlYkdMVW5pZm9ybUxv
Y2F0aW9uKGFyZ3NbMF0sIG9rLCBhcmdzLkdldElzb2xhdGUoKSk7CiAKLSAgICBpZiAoVjhJbnQz
MkFycmF5OjpIYXNJbnN0YW5jZShhcmdzWzFdLCBhcmdzLkdldElzb2xhdGUoKSkpIHsKKyAgICBp
ZiAoVjhJbnQzMkFycmF5OjpIYXNJbnN0YW5jZShhcmdzWzFdLCBhcmdzLkdldElzb2xhdGUoKSwg
d29ybGRUeXBlKGFyZ3MuR2V0SXNvbGF0ZSgpKSkpIHsKICAgICAgICAgSW50MzJBcnJheSogYXJy
YXkgPSBWOEludDMyQXJyYXk6OnRvTmF0aXZlKGFyZ3NbMV0tPlRvT2JqZWN0KCkpOwogICAgICAg
ICBBU1NFUlQoYXJyYXkgIT0gTlVMTCk7CiAgICAgICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwpA
QCAtNjYwLDEzICs2NjAsMTMgQEAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB1bmlmb3Jt
TWF0cml4SGVscGVyKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MsCiAKICAgICBXZWJHTFJlbmRl
cmluZ0NvbnRleHQqIGNvbnRleHQgPSBWOFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6dG9OYXRpdmUo
YXJncy5Ib2xkZXIoKSk7CiAKLSAgICBpZiAoYXJncy5MZW5ndGgoKSA+IDAgJiYgIWlzVW5kZWZp
bmVkT3JOdWxsKGFyZ3NbMF0pICYmICFWOFdlYkdMVW5pZm9ybUxvY2F0aW9uOjpIYXNJbnN0YW5j
ZShhcmdzWzBdLCBhcmdzLkdldElzb2xhdGUoKSkpCisgICAgaWYgKGFyZ3MuTGVuZ3RoKCkgPiAw
ICYmICFpc1VuZGVmaW5lZE9yTnVsbChhcmdzWzBdKSAmJiAhVjhXZWJHTFVuaWZvcm1Mb2NhdGlv
bjo6SGFzSW5zdGFuY2UoYXJnc1swXSwgYXJncy5HZXRJc29sYXRlKCksIHdvcmxkVHlwZShhcmdz
LkdldElzb2xhdGUoKSkpKQogICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoMCwgYXJncy5H
ZXRJc29sYXRlKCkpOwogICAgIGJvb2wgb2sgPSBmYWxzZTsKICAgICBXZWJHTFVuaWZvcm1Mb2Nh
dGlvbiogbG9jYXRpb24gPSB0b1dlYkdMVW5pZm9ybUxvY2F0aW9uKGFyZ3NbMF0sIG9rLCBhcmdz
LkdldElzb2xhdGUoKSk7CiAgICAgCiAgICAgYm9vbCB0cmFuc3Bvc2UgPSBhcmdzWzFdLT5Cb29s
ZWFuVmFsdWUoKTsKLSAgICBpZiAoVjhGbG9hdDMyQXJyYXk6Okhhc0luc3RhbmNlKGFyZ3NbMl0s
IGFyZ3MuR2V0SXNvbGF0ZSgpKSkgeworICAgIGlmIChWOEZsb2F0MzJBcnJheTo6SGFzSW5zdGFu
Y2UoYXJnc1syXSwgYXJncy5HZXRJc29sYXRlKCksIHdvcmxkVHlwZShhcmdzLkdldElzb2xhdGUo
KSkpKSB7CiAgICAgICAgIEZsb2F0MzJBcnJheSogYXJyYXkgPSBWOEZsb2F0MzJBcnJheTo6dG9O
YXRpdmUoYXJnc1syXS0+VG9PYmplY3QoKSk7CiAgICAgICAgIEFTU0VSVChhcnJheSAhPSBOVUxM
KTsKICAgICAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhYTUxIdHRwUmVxdWVzdEN1c3RvbS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhYTUxIdHRwUmVxdWVzdEN1c3RvbS5jcHAK
aW5kZXggMWFhZmE3NDJiMWJkNWQwNWUxMzc0MTlhYWUxYzM4MTY3MzVlMTkyNy4uN2VjODkxMGFl
OTc1NjUxMmU5OTk0MWE1OGFhZjE5YWY1NWU5Y2M3MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4WE1MSHR0cFJlcXVlc3RDdXN0b20uY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFhNTEh0dHBSZXF1ZXN0Q3VzdG9tLmNw
cApAQCAtMTU4LDEwICsxNTgsMTAgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4WE1MSHR0cFJl
cXVlc3Q6Om9wZW5NZXRob2RDdXN0b20oY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXIKICAgICByZXR1
cm4gdjg6OlVuZGVmaW5lZCgpOwogfQogCi1zdGF0aWMgYm9vbCBpc0RvY3VtZW50VHlwZSh2ODo6
SGFuZGxlPHY4OjpWYWx1ZT4gdmFsdWUsIHY4OjpJc29sYXRlKiBpc29sYXRlKQorc3RhdGljIGJv
b2wgaXNEb2N1bWVudFR5cGUodjg6OkhhbmRsZTx2ODo6VmFsdWU+IHZhbHVlLCB2ODo6SXNvbGF0
ZSogaXNvbGF0ZSwgV3JhcHBlcldvcmxkVHlwZSBjdXJyZW50V29ybGRUeXBlKQogewogICAgIC8v
IEZJWE1FOiBhZGQgb3RoZXIgZG9jdW1lbnQgdHlwZXMuCi0gICAgcmV0dXJuIFY4RG9jdW1lbnQ6
Okhhc0luc3RhbmNlKHZhbHVlLCBpc29sYXRlKSB8fCBWOEhUTUxEb2N1bWVudDo6SGFzSW5zdGFu
Y2UodmFsdWUsIGlzb2xhdGUpOworICAgIHJldHVybiBWOERvY3VtZW50OjpIYXNJbnN0YW5jZSh2
YWx1ZSwgaXNvbGF0ZSwgY3VycmVudFdvcmxkVHlwZSkgfHwgVjhIVE1MRG9jdW1lbnQ6Okhhc0lu
c3RhbmNlKHZhbHVlLCBpc29sYXRlLCBjdXJyZW50V29ybGRUeXBlKTsKIH0KIAogdjg6OkhhbmRs
ZTx2ODo6VmFsdWU+IFY4WE1MSHR0cFJlcXVlc3Q6OnNlbmRNZXRob2RDdXN0b20oY29uc3Qgdjg6
OkFyZ3VtZW50cyYgYXJncykKQEAgLTE3NSwzMCArMTc1LDMxIEBAIHY4OjpIYW5kbGU8djg6OlZh
bHVlPiBWOFhNTEh0dHBSZXF1ZXN0OjpzZW5kTWV0aG9kQ3VzdG9tKGNvbnN0IHY4OjpBcmd1bWVu
dHMmIGFyCiAgICAgICAgIHhtbEh0dHBSZXF1ZXN0LT5zZW5kKGVjKTsKICAgICBlbHNlIHsKICAg
ICAgICAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGFyZyA9IGFyZ3NbMF07CisgICAgICAgIFdyYXBw
ZXJXb3JsZFR5cGUgY3VycmVudFdvcmxkVHlwZSA9IHdvcmxkVHlwZShhcmdzLkdldElzb2xhdGUo
KSk7CiAgICAgICAgIGlmIChpc1VuZGVmaW5lZE9yTnVsbChhcmcpKQogICAgICAgICAgICAgeG1s
SHR0cFJlcXVlc3QtPnNlbmQoZWMpOwotICAgICAgICBlbHNlIGlmIChpc0RvY3VtZW50VHlwZShh
cmcsIGFyZ3MuR2V0SXNvbGF0ZSgpKSkgeworICAgICAgICBlbHNlIGlmIChpc0RvY3VtZW50VHlw
ZShhcmcsIGFyZ3MuR2V0SXNvbGF0ZSgpLCBjdXJyZW50V29ybGRUeXBlKSkgewogICAgICAgICAg
ICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBvYmplY3QgPSB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+
OjpDYXN0KGFyZyk7CiAgICAgICAgICAgICBEb2N1bWVudCogZG9jdW1lbnQgPSBWOERvY3VtZW50
Ojp0b05hdGl2ZShvYmplY3QpOwogICAgICAgICAgICAgQVNTRVJUKGRvY3VtZW50KTsKICAgICAg
ICAgICAgIHhtbEh0dHBSZXF1ZXN0LT5zZW5kKGRvY3VtZW50LCBlYyk7Ci0gICAgICAgIH0gZWxz
ZSBpZiAoVjhCbG9iOjpIYXNJbnN0YW5jZShhcmcsIGFyZ3MuR2V0SXNvbGF0ZSgpKSkgeworICAg
ICAgICB9IGVsc2UgaWYgKFY4QmxvYjo6SGFzSW5zdGFuY2UoYXJnLCBhcmdzLkdldElzb2xhdGUo
KSwgY3VycmVudFdvcmxkVHlwZSkpIHsKICAgICAgICAgICAgIHY4OjpIYW5kbGU8djg6Ok9iamVj
dD4gb2JqZWN0ID0gdjg6OkhhbmRsZTx2ODo6T2JqZWN0Pjo6Q2FzdChhcmcpOwogICAgICAgICAg
ICAgQmxvYiogYmxvYiA9IFY4QmxvYjo6dG9OYXRpdmUob2JqZWN0KTsKICAgICAgICAgICAgIEFT
U0VSVChibG9iKTsKICAgICAgICAgICAgIHhtbEh0dHBSZXF1ZXN0LT5zZW5kKGJsb2IsIGVjKTsK
LSAgICAgICAgfSBlbHNlIGlmIChWOERPTUZvcm1EYXRhOjpIYXNJbnN0YW5jZShhcmcsIGFyZ3Mu
R2V0SXNvbGF0ZSgpKSkgeworICAgICAgICB9IGVsc2UgaWYgKFY4RE9NRm9ybURhdGE6Okhhc0lu
c3RhbmNlKGFyZywgYXJncy5HZXRJc29sYXRlKCksIGN1cnJlbnRXb3JsZFR5cGUpKSB7CiAgICAg
ICAgICAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IG9iamVjdCA9IHY4OjpIYW5kbGU8djg6Ok9i
amVjdD46OkNhc3QoYXJnKTsKICAgICAgICAgICAgIERPTUZvcm1EYXRhKiBkb21Gb3JtRGF0YSA9
IFY4RE9NRm9ybURhdGE6OnRvTmF0aXZlKG9iamVjdCk7CiAgICAgICAgICAgICBBU1NFUlQoZG9t
Rm9ybURhdGEpOwogICAgICAgICAgICAgeG1sSHR0cFJlcXVlc3QtPnNlbmQoZG9tRm9ybURhdGEs
IGVjKTsKICNpZiBFTkFCTEUoV0VCR0wpIHx8IEVOQUJMRShCTE9CKQotICAgICAgICB9IGVsc2Ug
aWYgKFY4QXJyYXlCdWZmZXI6Okhhc0luc3RhbmNlKGFyZywgYXJncy5HZXRJc29sYXRlKCkpKSB7
CisgICAgICAgIH0gZWxzZSBpZiAoVjhBcnJheUJ1ZmZlcjo6SGFzSW5zdGFuY2UoYXJnLCBhcmdz
LkdldElzb2xhdGUoKSwgY3VycmVudFdvcmxkVHlwZSkpIHsKICAgICAgICAgICAgIHY4OjpIYW5k
bGU8djg6Ok9iamVjdD4gb2JqZWN0ID0gdjg6OkhhbmRsZTx2ODo6T2JqZWN0Pjo6Q2FzdChhcmcp
OwogICAgICAgICAgICAgQXJyYXlCdWZmZXIqIGFycmF5QnVmZmVyID0gVjhBcnJheUJ1ZmZlcjo6
dG9OYXRpdmUob2JqZWN0KTsKICAgICAgICAgICAgIEFTU0VSVChhcnJheUJ1ZmZlcik7CiAgICAg
ICAgICAgICB4bWxIdHRwUmVxdWVzdC0+c2VuZChhcnJheUJ1ZmZlciwgZWMpOwotICAgICAgICB9
IGVsc2UgaWYgKFY4QXJyYXlCdWZmZXJWaWV3OjpIYXNJbnN0YW5jZShhcmcsIGFyZ3MuR2V0SXNv
bGF0ZSgpKSkgeworICAgICAgICB9IGVsc2UgaWYgKFY4QXJyYXlCdWZmZXJWaWV3OjpIYXNJbnN0
YW5jZShhcmcsIGFyZ3MuR2V0SXNvbGF0ZSgpLCBjdXJyZW50V29ybGRUeXBlKSkgewogICAgICAg
ICAgICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBvYmplY3QgPSB2ODo6SGFuZGxlPHY4OjpPYmpl
Y3Q+OjpDYXN0KGFyZyk7CiAgICAgICAgICAgICBBcnJheUJ1ZmZlclZpZXcqIGFycmF5QnVmZmVy
VmlldyA9IFY4QXJyYXlCdWZmZXJWaWV3Ojp0b05hdGl2ZShvYmplY3QpOwogICAgICAgICAgICAg
QVNTRVJUKGFycmF5QnVmZmVyVmlldyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3NyYy9XZWJBcnJheUJ1ZmZlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9X
ZWJBcnJheUJ1ZmZlci5jcHAKaW5kZXggMjBiNTExYWI1MTRlN2RlMzNjYjMyNTg5MTU1MzkwNWEx
NzYyYjlmNS4uOTdiOWQxNzBhOWFjNTdjMGRiOTI4NzY3ZjMxZjc1N2IyYWY1Mzc4ZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViQXJyYXlCdWZmZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkFycmF5QnVmZmVyLmNwcApAQCAtNzksNyAr
NzksNyBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gV2ViQXJyYXlCdWZmZXI6OnRvVjhWYWx1ZSgp
CiAKIFdlYkFycmF5QnVmZmVyKiBXZWJBcnJheUJ1ZmZlcjo6Y3JlYXRlRnJvbVY4VmFsdWUodjg6
OkhhbmRsZTx2ODo6VmFsdWU+IHZhbHVlKQogewotICAgIGlmICghVjhBcnJheUJ1ZmZlcjo6SGFz
SW5zdGFuY2UodmFsdWUsIHY4OjpJc29sYXRlOjpHZXRDdXJyZW50KCkpKQorICAgIGlmICghVjhB
cnJheUJ1ZmZlcjo6SGFzSW5zdGFuY2UodmFsdWUsIHY4OjpJc29sYXRlOjpHZXRDdXJyZW50KCks
IHdvcmxkVHlwZSh2ODo6SXNvbGF0ZTo6R2V0Q3VycmVudCgpKSkpCiAgICAgICAgIHJldHVybiAw
OwogICAgIFdURjo6QXJyYXlCdWZmZXIqIGJ1ZmZlciA9IFY4QXJyYXlCdWZmZXI6OnRvTmF0aXZl
KHZhbHVlLT5Ub09iamVjdCgpKTsKICAgICByZXR1cm4gbmV3IFdlYkFycmF5QnVmZmVyKGJ1ZmZl
cik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJBcnJheUJ1ZmZl
clZpZXcuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViQXJyYXlCdWZmZXJWaWV3
LmNwcAppbmRleCBjYWExYzgwZGMzYTg2OWZkY2EzZDQxODAxYTI3OGQ1NWQ3Mzk2MzQxLi5jMzk2
MThiMTI0MDQxOTllZDRmZGRmMTc5NGRmNjk4NjNjZGEwMjJlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9XZWJBcnJheUJ1ZmZlclZpZXcuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vc3JjL1dlYkFycmF5QnVmZmVyVmlldy5jcHAKQEAgLTY0LDcgKzY0LDcg
QEAgdW5zaWduZWQgV2ViQXJyYXlCdWZmZXJWaWV3OjpieXRlTGVuZ3RoKCkgY29uc3QKICNpZiBX
RUJLSVRfVVNJTkdfVjgKIFdlYkFycmF5QnVmZmVyVmlldyogV2ViQXJyYXlCdWZmZXJWaWV3Ojpj
cmVhdGVGcm9tVjhWYWx1ZSh2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdmFsdWUpCiB7Ci0gICAgaWYg
KCFXZWJDb3JlOjpWOEFycmF5QnVmZmVyVmlldzo6SGFzSW5zdGFuY2UodmFsdWUsIHY4OjpJc29s
YXRlOjpHZXRDdXJyZW50KCkpKQorICAgIGlmICghV2ViQ29yZTo6VjhBcnJheUJ1ZmZlclZpZXc6
Okhhc0luc3RhbmNlKHZhbHVlLCB2ODo6SXNvbGF0ZTo6R2V0Q3VycmVudCgpLCBXZWJDb3JlOjp3
b3JsZFR5cGUodjg6Oklzb2xhdGU6OkdldEN1cnJlbnQoKSkpKQogICAgICAgICByZXR1cm4gMDsK
ICAgICBBcnJheUJ1ZmZlclZpZXcqIHZpZXcgPSBXZWJDb3JlOjpWOEFycmF5QnVmZmVyVmlldzo6
dG9OYXRpdmUodmFsdWUtPlRvT2JqZWN0KCkpOwogICAgIHJldHVybiBuZXcgV2ViQXJyYXlCdWZm
ZXJWaWV3KHZpZXcpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2Vi
QmluZGluZ3MuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViQmluZGluZ3MuY3Bw
CmluZGV4IGNhMTkwOTRlMjI1NmUzMzZiNzZkOTU1YTUzNGQyY2JhMmYyYTQ3ZTkuLmZjZWU5NWVi
MDUwZmNjNDM3NmVjNDRmNWY1NmMyMzM4NjkwMDFkZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vc3JjL1dlYkJpbmRpbmdzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3NyYy9XZWJCaW5kaW5ncy5jcHAKQEAgLTIxNCw3ICsyMTQsNyBAQCBzdGF0aWMgYm9vbCBn
ZXRSYW5nZUltcGwoTlBPYmplY3QqIG9iamVjdCwgV2ViUmFuZ2UqIHdlYlJhbmdlLCB2ODo6SXNv
bGF0ZSogaXNvbAogICAgIGlmICghVjhSYW5nZTo6aW5mby5lcXVhbHModG9XcmFwcGVyVHlwZUlu
Zm8odjhPYmplY3QpKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgUmFuZ2UqIG5hdGl2
ZSA9IFY4UmFuZ2U6Okhhc0luc3RhbmNlKHY4T2JqZWN0LCBpc29sYXRlKSA/IFY4UmFuZ2U6OnRv
TmF0aXZlKHY4T2JqZWN0KSA6IDA7CisgICAgUmFuZ2UqIG5hdGl2ZSA9IFY4UmFuZ2U6Okhhc0lu
c3RhbmNlKHY4T2JqZWN0LCBpc29sYXRlLCB3b3JsZFR5cGUoaXNvbGF0ZSkpID8gVjhSYW5nZTo6
dG9OYXRpdmUodjhPYmplY3QpIDogMDsKICAgICBpZiAoIW5hdGl2ZSkKICAgICAgICAgcmV0dXJu
IGZhbHNlOwogCkBAIC0yMjksNyArMjI5LDcgQEAgc3RhdGljIGJvb2wgZ2V0Tm9kZUltcGwoTlBP
YmplY3QqIG9iamVjdCwgV2ViTm9kZSogd2ViTm9kZSwgdjg6Oklzb2xhdGUqIGlzb2xhdGUKIAog
ICAgIFY4TlBPYmplY3QqIHY4TlBPYmplY3QgPSByZWludGVycHJldF9jYXN0PFY4TlBPYmplY3Qq
PihvYmplY3QpOwogICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gdjhPYmplY3QodjhOUE9iamVj
dC0+djhPYmplY3QpOwotICAgIE5vZGUqIG5hdGl2ZSA9IFY4Tm9kZTo6SGFzSW5zdGFuY2UodjhP
YmplY3QsIGlzb2xhdGUpID8gVjhOb2RlOjp0b05hdGl2ZSh2OE9iamVjdCkgOiAwOworICAgIE5v
ZGUqIG5hdGl2ZSA9IFY4Tm9kZTo6SGFzSW5zdGFuY2UodjhPYmplY3QsIGlzb2xhdGUsIHdvcmxk
VHlwZShpc29sYXRlKSkgPyBWOE5vZGU6OnRvTmF0aXZlKHY4T2JqZWN0KSA6IDA7CiAgICAgaWYg
KCFuYXRpdmUpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIApAQCAtMjQ0LDcgKzI0NCw3IEBAIHN0
YXRpYyBib29sIGdldEVsZW1lbnRJbXBsKE5QT2JqZWN0KiBvYmplY3QsIFdlYkVsZW1lbnQqIHdl
YkVsZW1lbnQsIHY4OjpJc29sYXRlCiAKICAgICBWOE5QT2JqZWN0KiB2OE5QT2JqZWN0ID0gcmVp
bnRlcnByZXRfY2FzdDxWOE5QT2JqZWN0Kj4ob2JqZWN0KTsKICAgICB2ODo6SGFuZGxlPHY4OjpP
YmplY3Q+IHY4T2JqZWN0KHY4TlBPYmplY3QtPnY4T2JqZWN0KTsKLSAgICBFbGVtZW50KiBuYXRp
dmUgPSBWOEVsZW1lbnQ6Okhhc0luc3RhbmNlKHY4T2JqZWN0LCBpc29sYXRlKSA/IFY4RWxlbWVu
dDo6dG9OYXRpdmUodjhPYmplY3QpIDogMDsKKyAgICBFbGVtZW50KiBuYXRpdmUgPSBWOEVsZW1l
bnQ6Okhhc0luc3RhbmNlKHY4T2JqZWN0LCBpc29sYXRlLCB3b3JsZFR5cGUoaXNvbGF0ZSkpID8g
VjhFbGVtZW50Ojp0b05hdGl2ZSh2OE9iamVjdCkgOiAwOwogICAgIGlmICghbmF0aXZlKQogICAg
ICAgICByZXR1cm4gZmFsc2U7CiAKQEAgLTI1OSw3ICsyNTksNyBAQCBzdGF0aWMgYm9vbCBnZXRB
cnJheUJ1ZmZlckltcGwoTlBPYmplY3QqIG9iamVjdCwgV2ViQXJyYXlCdWZmZXIqIGFycmF5QnVm
ZmVyLCB2OAogCiAgICAgVjhOUE9iamVjdCogdjhOUE9iamVjdCA9IHJlaW50ZXJwcmV0X2Nhc3Q8
VjhOUE9iamVjdCo+KG9iamVjdCk7CiAgICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiB2OE9iamVj
dCh2OE5QT2JqZWN0LT52OE9iamVjdCk7Ci0gICAgQXJyYXlCdWZmZXIqIG5hdGl2ZSA9IFY4QXJy
YXlCdWZmZXI6Okhhc0luc3RhbmNlKHY4T2JqZWN0LCBpc29sYXRlKSA/IFY4QXJyYXlCdWZmZXI6
OnRvTmF0aXZlKHY4T2JqZWN0KSA6IDA7CisgICAgQXJyYXlCdWZmZXIqIG5hdGl2ZSA9IFY4QXJy
YXlCdWZmZXI6Okhhc0luc3RhbmNlKHY4T2JqZWN0LCBpc29sYXRlLCB3b3JsZFR5cGUoaXNvbGF0
ZSkpID8gVjhBcnJheUJ1ZmZlcjo6dG9OYXRpdmUodjhPYmplY3QpIDogMDsKICAgICBpZiAoIW5h
dGl2ZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCkBAIC0yNzQsNyArMjc0LDcgQEAgc3RhdGlj
IGJvb2wgZ2V0QXJyYXlCdWZmZXJWaWV3SW1wbChOUE9iamVjdCogb2JqZWN0LCBXZWJBcnJheUJ1
ZmZlclZpZXcqIGFycmF5QnUKIAogICAgIFY4TlBPYmplY3QqIHY4TlBPYmplY3QgPSByZWludGVy
cHJldF9jYXN0PFY4TlBPYmplY3QqPihvYmplY3QpOwogICAgIHY4OjpIYW5kbGU8djg6Ok9iamVj
dD4gdjhPYmplY3QodjhOUE9iamVjdC0+djhPYmplY3QpOwotICAgIEFycmF5QnVmZmVyVmlldyog
bmF0aXZlID0gVjhBcnJheUJ1ZmZlclZpZXc6Okhhc0luc3RhbmNlKHY4T2JqZWN0LCBpc29sYXRl
KSA/IFY4QXJyYXlCdWZmZXJWaWV3Ojp0b05hdGl2ZSh2OE9iamVjdCkgOiAwOworICAgIEFycmF5
QnVmZmVyVmlldyogbmF0aXZlID0gVjhBcnJheUJ1ZmZlclZpZXc6Okhhc0luc3RhbmNlKHY4T2Jq
ZWN0LCBpc29sYXRlLCB3b3JsZFR5cGUoaXNvbGF0ZSkpID8gVjhBcnJheUJ1ZmZlclZpZXc6OnRv
TmF0aXZlKHY4T2JqZWN0KSA6IDA7CiAgICAgaWYgKCFuYXRpdmUpCiAgICAgICAgIHJldHVybiBm
YWxzZTsKIAo=
</data>
<flag name="review"
          id="214096"
          type_id="1"
          status="+"
          setter="haraken"
    />
    <flag name="commit-queue"
          id="214097"
          type_id="3"
          status="-"
          setter="webkit.review.bot"
    />
          </attachment>
      

    </bug>

</bugzilla>